Middleware
Agent skill:
nitrostack-python-middleware-pipeline
Python
from nitrostack import use_middleware, tool, ExecutionContext
class AuditMiddleware:
async def use(self, context: ExecutionContext, next_fn):
context.logger.info("before", extra={"request_id": context.request_id})
result = await next_fn()
context.logger.info("after")
return result
@tool(name="search", description="...", input_schema=SearchInput)
@use_middleware(AuditMiddleware)
async def search(self, input: SearchInput, context: ExecutionContext) -> dict:
...
Protocol: async def use(self, context, next_fn). Scaffold with nitrostack-py generate is for guards/pipes/interceptors/filters; middleware is the same stacking pattern via use_middleware.
Read tokens from context.metadata (authorization, headers). Do not assume Express/Nest request objects.