agentfootprint 10.3.1 → 10.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENTS.md +2 -2
- package/CAPABILITIES.md +12 -1
- package/README.md +44 -0
- package/ai-instructions/claude-code/SKILL.md +2 -2
- package/ai-instructions/clinerules +22 -11
- package/ai-instructions/copilot-instructions.md +22 -11
- package/ai-instructions/cursor/agentfootprint.md +22 -11
- package/ai-instructions/kiro/agentfootprint.md +22 -11
- package/ai-instructions/windsurfrules +22 -11
- package/dist/adapters/llm/AnthropicProvider.js +26 -8
- package/dist/adapters/llm/AnthropicProvider.js.map +1 -1
- package/dist/adapters/llm/BedrockProvider.js +23 -7
- package/dist/adapters/llm/BedrockProvider.js.map +1 -1
- package/dist/adapters/llm/BrowserAnthropicProvider.js +57 -49
- package/dist/adapters/llm/BrowserAnthropicProvider.js.map +1 -1
- package/dist/adapters/llm/BrowserOpenAIProvider.js +50 -42
- package/dist/adapters/llm/BrowserOpenAIProvider.js.map +1 -1
- package/dist/adapters/llm/FoundryLocalProvider.js +174 -212
- package/dist/adapters/llm/FoundryLocalProvider.js.map +1 -1
- package/dist/adapters/llm/GeminiProvider.js +23 -9
- package/dist/adapters/llm/GeminiProvider.js.map +1 -1
- package/dist/adapters/llm/InvokeModelGatewayProvider.js +32 -9
- package/dist/adapters/llm/InvokeModelGatewayProvider.js.map +1 -1
- package/dist/adapters/llm/MockProvider.js +11 -3
- package/dist/adapters/llm/MockProvider.js.map +1 -1
- package/dist/adapters/llm/OllamaProvider.js +129 -167
- package/dist/adapters/llm/OllamaProvider.js.map +1 -1
- package/dist/adapters/llm/OpenAIProvider.js +36 -9
- package/dist/adapters/llm/OpenAIProvider.js.map +1 -1
- package/dist/adapters/mcp/agentcoreRuntime/errorType.js +24 -0
- package/dist/adapters/mcp/agentcoreRuntime/errorType.js.map +1 -0
- package/dist/adapters/mcp/agentcoreRuntime/invoke.js +272 -0
- package/dist/adapters/mcp/agentcoreRuntime/invoke.js.map +1 -0
- package/dist/adapters/mcp/agentcoreRuntime/safeAnswer.js +415 -0
- package/dist/adapters/mcp/agentcoreRuntime/safeAnswer.js.map +1 -0
- package/dist/adapters/mcp/agentcoreRuntime/session.js +179 -0
- package/dist/adapters/mcp/agentcoreRuntime/session.js.map +1 -0
- package/dist/adapters/mcp/agentcoreRuntime/sessionBusy.js +117 -0
- package/dist/adapters/mcp/agentcoreRuntime/sessionBusy.js.map +1 -0
- package/dist/adapters/mcp/agentcoreRuntime/strictJson.js +220 -0
- package/dist/adapters/mcp/agentcoreRuntime/strictJson.js.map +1 -0
- package/dist/adapters/mcp/agentcoreRuntime/transport.js +222 -0
- package/dist/adapters/mcp/agentcoreRuntime/transport.js.map +1 -0
- package/dist/adapters/memory/agentcore.js +435 -20
- package/dist/adapters/memory/agentcore.js.map +1 -1
- package/dist/adapters/memory/memoryBank.js +16 -3
- package/dist/adapters/memory/memoryBank.js.map +1 -1
- package/dist/adapters/memory/pgVector.js +10 -4
- package/dist/adapters/memory/pgVector.js.map +1 -1
- package/dist/adapters/memory/redis.js +11 -3
- package/dist/adapters/memory/redis.js.map +1 -1
- package/dist/adapters/memory/s3Vectors.js +8 -3
- package/dist/adapters/memory/s3Vectors.js.map +1 -1
- package/dist/adapters/memory/sqliteVector.js +10 -4
- package/dist/adapters/memory/sqliteVector.js.map +1 -1
- package/dist/ag-ui/adapter.js +126 -0
- package/dist/ag-ui/adapter.js.map +1 -0
- package/dist/ag-ui/framing.js +68 -0
- package/dist/ag-ui/framing.js.map +1 -0
- package/dist/ag-ui/frontendTools.js +69 -0
- package/dist/ag-ui/frontendTools.js.map +1 -0
- package/dist/ag-ui/ids.js +54 -0
- package/dist/ag-ui/ids.js.map +1 -0
- package/dist/ag-ui/index.js +29 -0
- package/dist/ag-ui/index.js.map +1 -0
- package/dist/ag-ui/request.js +416 -0
- package/dist/ag-ui/request.js.map +1 -0
- package/dist/ag-ui/serializer.js +899 -0
- package/dist/ag-ui/serializer.js.map +1 -0
- package/dist/ag-ui/types.js +22 -0
- package/dist/ag-ui/types.js.map +1 -0
- package/dist/answer-validation/index.js +8 -1
- package/dist/answer-validation/index.js.map +1 -1
- package/dist/answer-validation/toolLedger.js +130 -0
- package/dist/answer-validation/toolLedger.js.map +1 -0
- package/dist/answer-validation/types.js.map +1 -1
- package/dist/answer-validation/validate.js +25 -3
- package/dist/answer-validation/validate.js.map +1 -1
- package/dist/classify/typesafe.js +31 -23
- package/dist/classify/typesafe.js.map +1 -1
- package/dist/core/Agent.js +106 -20
- package/dist/core/Agent.js.map +1 -1
- package/dist/core/LLMCall.js +16 -6
- package/dist/core/LLMCall.js.map +1 -1
- package/dist/core/RunnerBase.js +99 -13
- package/dist/core/RunnerBase.js.map +1 -1
- package/dist/core/agent/buildAgentChart.js +17 -5
- package/dist/core/agent/buildAgentChart.js.map +1 -1
- package/dist/core/agent/buildAgentMessageApiChart.js +22 -2
- package/dist/core/agent/buildAgentMessageApiChart.js.map +1 -1
- package/dist/core/agent/buildDynamicAgentChart.js +23 -4
- package/dist/core/agent/buildDynamicAgentChart.js.map +1 -1
- package/dist/core/agent/buildMessageApiChart.js +22 -2
- package/dist/core/agent/buildMessageApiChart.js.map +1 -1
- package/dist/core/agent/callerIdentity.js +2 -1
- package/dist/core/agent/callerIdentity.js.map +1 -1
- package/dist/core/agent/stages/answerValidation.js +22 -1
- package/dist/core/agent/stages/answerValidation.js.map +1 -1
- package/dist/core/agent/stages/callLLM.js +19 -3
- package/dist/core/agent/stages/callLLM.js.map +1 -1
- package/dist/core/agent/stages/routeTurn.js +17 -4
- package/dist/core/agent/stages/routeTurn.js.map +1 -1
- package/dist/core/agent/stages/seed.js +58 -8
- package/dist/core/agent/stages/seed.js.map +1 -1
- package/dist/core/agent/stages/timeLayer.js +2 -2
- package/dist/core/agent/stages/timeLayer.js.map +1 -1
- package/dist/core/agent/stages/toolCalls.js +85 -25
- package/dist/core/agent/stages/toolCalls.js.map +1 -1
- package/dist/core/agent/window/strategies/summarizeOldest.js +4 -0
- package/dist/core/agent/window/strategies/summarizeOldest.js.map +1 -1
- package/dist/core/agent/window/summarize.js +6 -3
- package/dist/core/agent/window/summarize.js.map +1 -1
- package/dist/core/memberRun.js +293 -0
- package/dist/core/memberRun.js.map +1 -0
- package/dist/core/requestOfRun.js +28 -0
- package/dist/core/requestOfRun.js.map +1 -0
- package/dist/core/slots/buildToolsSlot.js +11 -25
- package/dist/core/slots/buildToolsSlot.js.map +1 -1
- package/dist/core-flow/Conditional.js +39 -12
- package/dist/core-flow/Conditional.js.map +1 -1
- package/dist/core-flow/Graph.js +48 -17
- package/dist/core-flow/Graph.js.map +1 -1
- package/dist/core-flow/Loop.js +39 -13
- package/dist/core-flow/Loop.js.map +1 -1
- package/dist/core-flow/Parallel.js +53 -21
- package/dist/core-flow/Parallel.js.map +1 -1
- package/dist/core-flow/Sequence.js +39 -12
- package/dist/core-flow/Sequence.js.map +1 -1
- package/dist/core-flow/Workflow.js +44 -14
- package/dist/core-flow/Workflow.js.map +1 -1
- package/dist/doors/ag-ui.js +36 -0
- package/dist/doors/ag-ui.js.map +1 -0
- package/dist/doors/security.js +2 -1
- package/dist/doors/security.js.map +1 -1
- package/dist/esm/adapters/llm/AnthropicProvider.d.ts +9 -2
- package/dist/esm/adapters/llm/AnthropicProvider.js +26 -8
- package/dist/esm/adapters/llm/AnthropicProvider.js.map +1 -1
- package/dist/esm/adapters/llm/BedrockProvider.d.ts +6 -1
- package/dist/esm/adapters/llm/BedrockProvider.js +23 -7
- package/dist/esm/adapters/llm/BedrockProvider.js.map +1 -1
- package/dist/esm/adapters/llm/BrowserAnthropicProvider.js +57 -49
- package/dist/esm/adapters/llm/BrowserAnthropicProvider.js.map +1 -1
- package/dist/esm/adapters/llm/BrowserOpenAIProvider.js +50 -42
- package/dist/esm/adapters/llm/BrowserOpenAIProvider.js.map +1 -1
- package/dist/esm/adapters/llm/FoundryLocalProvider.js +171 -209
- package/dist/esm/adapters/llm/FoundryLocalProvider.js.map +1 -1
- package/dist/esm/adapters/llm/GeminiProvider.js +23 -9
- package/dist/esm/adapters/llm/GeminiProvider.js.map +1 -1
- package/dist/esm/adapters/llm/InvokeModelGatewayProvider.js +32 -9
- package/dist/esm/adapters/llm/InvokeModelGatewayProvider.js.map +1 -1
- package/dist/esm/adapters/llm/MockProvider.js +11 -3
- package/dist/esm/adapters/llm/MockProvider.js.map +1 -1
- package/dist/esm/adapters/llm/OllamaProvider.js +126 -164
- package/dist/esm/adapters/llm/OllamaProvider.js.map +1 -1
- package/dist/esm/adapters/llm/OpenAIProvider.d.ts +6 -1
- package/dist/esm/adapters/llm/OpenAIProvider.js +36 -9
- package/dist/esm/adapters/llm/OpenAIProvider.js.map +1 -1
- package/dist/esm/adapters/mcp/agentcoreRuntime/errorType.d.ts +12 -0
- package/dist/esm/adapters/mcp/agentcoreRuntime/errorType.js +20 -0
- package/dist/esm/adapters/mcp/agentcoreRuntime/errorType.js.map +1 -0
- package/dist/esm/adapters/mcp/agentcoreRuntime/invoke.d.ts +116 -0
- package/dist/esm/adapters/mcp/agentcoreRuntime/invoke.js +267 -0
- package/dist/esm/adapters/mcp/agentcoreRuntime/invoke.js.map +1 -0
- package/dist/esm/adapters/mcp/agentcoreRuntime/safeAnswer.d.ts +49 -0
- package/dist/esm/adapters/mcp/agentcoreRuntime/safeAnswer.js +409 -0
- package/dist/esm/adapters/mcp/agentcoreRuntime/safeAnswer.js.map +1 -0
- package/dist/esm/adapters/mcp/agentcoreRuntime/session.d.ts +80 -0
- package/dist/esm/adapters/mcp/agentcoreRuntime/session.js +175 -0
- package/dist/esm/adapters/mcp/agentcoreRuntime/session.js.map +1 -0
- package/dist/esm/adapters/mcp/agentcoreRuntime/sessionBusy.d.ts +61 -0
- package/dist/esm/adapters/mcp/agentcoreRuntime/sessionBusy.js +112 -0
- package/dist/esm/adapters/mcp/agentcoreRuntime/sessionBusy.js.map +1 -0
- package/dist/esm/adapters/mcp/agentcoreRuntime/strictJson.d.ts +37 -0
- package/dist/esm/adapters/mcp/agentcoreRuntime/strictJson.js +215 -0
- package/dist/esm/adapters/mcp/agentcoreRuntime/strictJson.js.map +1 -0
- package/dist/esm/adapters/mcp/agentcoreRuntime/transport.d.ts +199 -0
- package/dist/esm/adapters/mcp/agentcoreRuntime/transport.js +217 -0
- package/dist/esm/adapters/mcp/agentcoreRuntime/transport.js.map +1 -0
- package/dist/esm/adapters/memory/agentcore.d.ts +152 -7
- package/dist/esm/adapters/memory/agentcore.js +433 -19
- package/dist/esm/adapters/memory/agentcore.js.map +1 -1
- package/dist/esm/adapters/memory/memoryBank.d.ts +3 -2
- package/dist/esm/adapters/memory/memoryBank.js +16 -3
- package/dist/esm/adapters/memory/memoryBank.js.map +1 -1
- package/dist/esm/adapters/memory/pgVector.js +10 -4
- package/dist/esm/adapters/memory/pgVector.js.map +1 -1
- package/dist/esm/adapters/memory/redis.d.ts +8 -3
- package/dist/esm/adapters/memory/redis.js +11 -3
- package/dist/esm/adapters/memory/redis.js.map +1 -1
- package/dist/esm/adapters/memory/s3Vectors.js +8 -3
- package/dist/esm/adapters/memory/s3Vectors.js.map +1 -1
- package/dist/esm/adapters/memory/sqliteVector.js +10 -4
- package/dist/esm/adapters/memory/sqliteVector.js.map +1 -1
- package/dist/esm/ag-ui/adapter.d.ts +118 -0
- package/dist/esm/ag-ui/adapter.js +122 -0
- package/dist/esm/ag-ui/adapter.js.map +1 -0
- package/dist/esm/ag-ui/framing.d.ts +52 -0
- package/dist/esm/ag-ui/framing.js +64 -0
- package/dist/esm/ag-ui/framing.js.map +1 -0
- package/dist/esm/ag-ui/frontendTools.d.ts +37 -0
- package/dist/esm/ag-ui/frontendTools.js +64 -0
- package/dist/esm/ag-ui/frontendTools.js.map +1 -0
- package/dist/esm/ag-ui/ids.d.ts +43 -0
- package/dist/esm/ag-ui/ids.js +49 -0
- package/dist/esm/ag-ui/ids.js.map +1 -0
- package/dist/esm/ag-ui/index.d.ts +19 -0
- package/dist/esm/ag-ui/index.js +19 -0
- package/dist/esm/ag-ui/index.js.map +1 -0
- package/dist/esm/ag-ui/request.d.ts +151 -0
- package/dist/esm/ag-ui/request.js +408 -0
- package/dist/esm/ag-ui/request.js.map +1 -0
- package/dist/esm/ag-ui/serializer.d.ts +173 -0
- package/dist/esm/ag-ui/serializer.js +895 -0
- package/dist/esm/ag-ui/serializer.js.map +1 -0
- package/dist/esm/ag-ui/types.d.ts +305 -0
- package/dist/esm/ag-ui/types.js +19 -0
- package/dist/esm/ag-ui/types.js.map +1 -0
- package/dist/esm/answer-validation/index.d.ts +2 -1
- package/dist/esm/answer-validation/index.js +1 -0
- package/dist/esm/answer-validation/index.js.map +1 -1
- package/dist/esm/answer-validation/toolLedger.d.ts +65 -0
- package/dist/esm/answer-validation/toolLedger.js +121 -0
- package/dist/esm/answer-validation/toolLedger.js.map +1 -0
- package/dist/esm/answer-validation/types.d.ts +48 -0
- package/dist/esm/answer-validation/types.js.map +1 -1
- package/dist/esm/answer-validation/validate.d.ts +2 -2
- package/dist/esm/answer-validation/validate.js +25 -3
- package/dist/esm/answer-validation/validate.js.map +1 -1
- package/dist/esm/classify/typesafe.js +30 -22
- package/dist/esm/classify/typesafe.js.map +1 -1
- package/dist/esm/core/Agent.d.ts +11 -1
- package/dist/esm/core/Agent.js +107 -21
- package/dist/esm/core/Agent.js.map +1 -1
- package/dist/esm/core/LLMCall.d.ts +2 -1
- package/dist/esm/core/LLMCall.js +17 -7
- package/dist/esm/core/LLMCall.js.map +1 -1
- package/dist/esm/core/RunnerBase.d.ts +39 -8
- package/dist/esm/core/RunnerBase.js +97 -12
- package/dist/esm/core/RunnerBase.js.map +1 -1
- package/dist/esm/core/agent/buildAgentChart.js +17 -5
- package/dist/esm/core/agent/buildAgentChart.js.map +1 -1
- package/dist/esm/core/agent/buildAgentMessageApiChart.d.ts +16 -0
- package/dist/esm/core/agent/buildAgentMessageApiChart.js +22 -2
- package/dist/esm/core/agent/buildAgentMessageApiChart.js.map +1 -1
- package/dist/esm/core/agent/buildDynamicAgentChart.js +23 -4
- package/dist/esm/core/agent/buildDynamicAgentChart.js.map +1 -1
- package/dist/esm/core/agent/buildMessageApiChart.d.ts +16 -0
- package/dist/esm/core/agent/buildMessageApiChart.js +22 -2
- package/dist/esm/core/agent/buildMessageApiChart.js.map +1 -1
- package/dist/esm/core/agent/callerIdentity.js +2 -1
- package/dist/esm/core/agent/callerIdentity.js.map +1 -1
- package/dist/esm/core/agent/stages/answerValidation.js +22 -1
- package/dist/esm/core/agent/stages/answerValidation.js.map +1 -1
- package/dist/esm/core/agent/stages/callLLM.js +19 -3
- package/dist/esm/core/agent/stages/callLLM.js.map +1 -1
- package/dist/esm/core/agent/stages/routeTurn.d.ts +1 -1
- package/dist/esm/core/agent/stages/routeTurn.js +17 -4
- package/dist/esm/core/agent/stages/routeTurn.js.map +1 -1
- package/dist/esm/core/agent/stages/seed.d.ts +18 -1
- package/dist/esm/core/agent/stages/seed.js +58 -8
- package/dist/esm/core/agent/stages/seed.js.map +1 -1
- package/dist/esm/core/agent/stages/timeLayer.js +2 -2
- package/dist/esm/core/agent/stages/timeLayer.js.map +1 -1
- package/dist/esm/core/agent/stages/toolCalls.d.ts +32 -1
- package/dist/esm/core/agent/stages/toolCalls.js +85 -25
- package/dist/esm/core/agent/stages/toolCalls.js.map +1 -1
- package/dist/esm/core/agent/types.d.ts +26 -6
- package/dist/esm/core/agent/window/strategies/summarizeOldest.js +4 -0
- package/dist/esm/core/agent/window/strategies/summarizeOldest.js.map +1 -1
- package/dist/esm/core/agent/window/summarize.js +6 -3
- package/dist/esm/core/agent/window/summarize.js.map +1 -1
- package/dist/esm/core/memberRun.d.ts +153 -0
- package/dist/esm/core/memberRun.js +273 -0
- package/dist/esm/core/memberRun.js.map +1 -0
- package/dist/esm/core/requestOfRun.d.ts +21 -0
- package/dist/esm/core/requestOfRun.js +24 -0
- package/dist/esm/core/requestOfRun.js.map +1 -0
- package/dist/esm/core/runner.d.ts +15 -3
- package/dist/esm/core/slots/buildToolsSlot.d.ts +0 -16
- package/dist/esm/core/slots/buildToolsSlot.js +11 -25
- package/dist/esm/core/slots/buildToolsSlot.js.map +1 -1
- package/dist/esm/core-flow/Conditional.d.ts +10 -1
- package/dist/esm/core-flow/Conditional.js +40 -13
- package/dist/esm/core-flow/Conditional.js.map +1 -1
- package/dist/esm/core-flow/Graph.d.ts +2 -1
- package/dist/esm/core-flow/Graph.js +49 -18
- package/dist/esm/core-flow/Graph.js.map +1 -1
- package/dist/esm/core-flow/Loop.d.ts +10 -1
- package/dist/esm/core-flow/Loop.js +40 -14
- package/dist/esm/core-flow/Loop.js.map +1 -1
- package/dist/esm/core-flow/Parallel.d.ts +10 -1
- package/dist/esm/core-flow/Parallel.js +54 -22
- package/dist/esm/core-flow/Parallel.js.map +1 -1
- package/dist/esm/core-flow/Sequence.d.ts +10 -1
- package/dist/esm/core-flow/Sequence.js +40 -13
- package/dist/esm/core-flow/Sequence.js.map +1 -1
- package/dist/esm/core-flow/Workflow.d.ts +2 -1
- package/dist/esm/core-flow/Workflow.js +45 -15
- package/dist/esm/core-flow/Workflow.js.map +1 -1
- package/dist/esm/doors/ag-ui.d.ts +19 -0
- package/dist/esm/doors/ag-ui.js +20 -0
- package/dist/esm/doors/ag-ui.js.map +1 -0
- package/dist/esm/doors/security.d.ts +2 -1
- package/dist/esm/doors/security.js +2 -1
- package/dist/esm/doors/security.js.map +1 -1
- package/dist/esm/events/payloads.d.ts +4 -2
- package/dist/esm/hosting/envelope.js +5 -0
- package/dist/esm/hosting/envelope.js.map +1 -1
- package/dist/esm/hosting/httpHost.js +5 -78
- package/dist/esm/hosting/httpHost.js.map +1 -1
- package/dist/esm/hosting/index.d.ts +5 -1
- package/dist/esm/hosting/index.js +2 -0
- package/dist/esm/hosting/index.js.map +1 -1
- package/dist/esm/hosting/pendingAsk.d.ts +19 -0
- package/dist/esm/hosting/pendingAsk.js +38 -0
- package/dist/esm/hosting/pendingAsk.js.map +1 -0
- package/dist/esm/hosting/protocolAdapter.d.ts +232 -0
- package/dist/esm/hosting/protocolAdapter.js +23 -0
- package/dist/esm/hosting/protocolAdapter.js.map +1 -0
- package/dist/esm/hosting/refusalStatus.d.ts +30 -0
- package/dist/esm/hosting/refusalStatus.js +85 -0
- package/dist/esm/hosting/refusalStatus.js.map +1 -0
- package/dist/esm/hosting/requestSealing.d.ts +65 -0
- package/dist/esm/hosting/requestSealing.js +79 -0
- package/dist/esm/hosting/requestSealing.js.map +1 -0
- package/dist/esm/hosting/standingAgent.js +24 -34
- package/dist/esm/hosting/standingAgent.js.map +1 -1
- package/dist/esm/hosting/stream.d.ts +60 -0
- package/dist/esm/hosting/stream.js +38 -2
- package/dist/esm/hosting/stream.js.map +1 -1
- package/dist/esm/hosting/streamHandler.d.ts +153 -0
- package/dist/esm/hosting/streamHandler.js +517 -0
- package/dist/esm/hosting/streamHandler.js.map +1 -0
- package/dist/esm/hosting/types.d.ts +44 -0
- package/dist/esm/hosting/types.js.map +1 -1
- package/dist/esm/hosting/verifiedThreads.d.ts +29 -0
- package/dist/esm/hosting/verifiedThreads.js +46 -0
- package/dist/esm/hosting/verifiedThreads.js.map +1 -0
- package/dist/esm/identity/requestContext.d.ts +96 -0
- package/dist/esm/identity/requestContext.js +131 -0
- package/dist/esm/identity/requestContext.js.map +1 -0
- package/dist/esm/identity/requestCredentials.d.ts +99 -0
- package/dist/esm/identity/requestCredentials.js +157 -0
- package/dist/esm/identity/requestCredentials.js.map +1 -0
- package/dist/esm/identity/types.d.ts +11 -0
- package/dist/esm/identity/types.js.map +1 -1
- package/dist/esm/identity.d.ts +2 -0
- package/dist/esm/identity.js +5 -0
- package/dist/esm/identity.js.map +1 -1
- package/dist/esm/index.d.ts +3 -1
- package/dist/esm/index.js +7 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/injection-engine/buildInjectionEngineSubflow.d.ts +11 -0
- package/dist/esm/injection-engine/buildInjectionEngineSubflow.js +39 -5
- package/dist/esm/injection-engine/buildInjectionEngineSubflow.js.map +1 -1
- package/dist/esm/injection-engine/constrainedEnumPick.js +4 -2
- package/dist/esm/injection-engine/constrainedEnumPick.js.map +1 -1
- package/dist/esm/injection-engine/evaluator.d.ts +6 -0
- package/dist/esm/injection-engine/evaluator.js +19 -1
- package/dist/esm/injection-engine/evaluator.js.map +1 -1
- package/dist/esm/injection-engine/skillGraph.js +26 -8
- package/dist/esm/injection-engine/skillGraph.js.map +1 -1
- package/dist/esm/injection-engine/skillIntent.d.ts +4 -2
- package/dist/esm/injection-engine/skillIntent.js +3 -0
- package/dist/esm/injection-engine/skillIntent.js.map +1 -1
- package/dist/esm/injection-engine/types.d.ts +27 -1
- package/dist/esm/injection-engine/types.js +15 -0
- package/dist/esm/injection-engine/types.js.map +1 -1
- package/dist/esm/lib/abort.d.ts +143 -0
- package/dist/esm/lib/abort.js +322 -0
- package/dist/esm/lib/abort.js.map +1 -0
- package/dist/esm/lib/humanizeLLMError.d.ts +15 -0
- package/dist/esm/lib/humanizeLLMError.js +22 -7
- package/dist/esm/lib/humanizeLLMError.js.map +1 -1
- package/dist/esm/maps/engagement/parkCard.d.ts +5 -1
- package/dist/esm/maps/engagement/parkCard.js +10 -3
- package/dist/esm/maps/engagement/parkCard.js.map +1 -1
- package/dist/esm/mcp/mcpClient.js +30 -2
- package/dist/esm/mcp/mcpClient.js.map +1 -1
- package/dist/esm/mcp/mcpServe.js +5 -1
- package/dist/esm/mcp/mcpServe.js.map +1 -1
- package/dist/esm/mcp/plainData.d.ts +44 -0
- package/dist/esm/mcp/plainData.js +204 -0
- package/dist/esm/mcp/plainData.js.map +1 -0
- package/dist/esm/mcp/sdkLoadFailure.d.ts +6 -7
- package/dist/esm/mcp/sdkLoadFailure.js +4 -4
- package/dist/esm/mcp/sdkLoadFailure.js.map +1 -1
- package/dist/esm/mcp/throttleRetry.d.ts +51 -0
- package/dist/esm/mcp/throttleRetry.js +37 -4
- package/dist/esm/mcp/throttleRetry.js.map +1 -1
- package/dist/esm/mcp/toolResult.js +8 -50
- package/dist/esm/mcp/toolResult.js.map +1 -1
- package/dist/esm/mcp/types.d.ts +10 -6
- package/dist/esm/memory/beats/llmExtractor.js +6 -3
- package/dist/esm/memory/beats/llmExtractor.js.map +1 -1
- package/dist/esm/memory/define.js +45 -1
- package/dist/esm/memory/define.js.map +1 -1
- package/dist/esm/memory/define.types.d.ts +24 -0
- package/dist/esm/memory/define.types.js.map +1 -1
- package/dist/esm/memory/facts/llmFactExtractor.js +6 -3
- package/dist/esm/memory/facts/llmFactExtractor.js.map +1 -1
- package/dist/esm/memory/stages/formatDefault.js +3 -1
- package/dist/esm/memory/stages/formatDefault.js.map +1 -1
- package/dist/esm/memory/stages/summarize.js +16 -5
- package/dist/esm/memory/stages/summarize.js.map +1 -1
- package/dist/esm/memory/store/InMemoryStore.d.ts +8 -3
- package/dist/esm/memory/store/InMemoryStore.js +12 -3
- package/dist/esm/memory/store/InMemoryStore.js.map +1 -1
- package/dist/esm/memory/store/index.d.ts +1 -0
- package/dist/esm/memory/store/index.js +5 -0
- package/dist/esm/memory/store/index.js.map +1 -1
- package/dist/esm/memory/store/types.d.ts +38 -4
- package/dist/esm/memory/store/writeOptions.d.ts +118 -0
- package/dist/esm/memory/store/writeOptions.js +242 -0
- package/dist/esm/memory/store/writeOptions.js.map +1 -0
- package/dist/esm/memory-providers.d.ts +1 -1
- package/dist/esm/memory-providers.js +4 -1
- package/dist/esm/memory-providers.js.map +1 -1
- package/dist/esm/patterns/LlmRouter.js +10 -5
- package/dist/esm/patterns/LlmRouter.js.map +1 -1
- package/dist/esm/patterns/MapReduce.js +8 -2
- package/dist/esm/patterns/MapReduce.js.map +1 -1
- package/dist/esm/redaction/conversation.js +3 -0
- package/dist/esm/redaction/conversation.js.map +1 -1
- package/dist/esm/redaction/knownStrings.js +1 -0
- package/dist/esm/redaction/knownStrings.js.map +1 -1
- package/dist/esm/reliability/buildReliabilityGateChart.js +7 -1
- package/dist/esm/reliability/buildReliabilityGateChart.js.map +1 -1
- package/dist/esm/resilience/withCircuitBreaker.js +5 -2
- package/dist/esm/resilience/withCircuitBreaker.js.map +1 -1
- package/dist/esm/resilience/withFallback.js +6 -0
- package/dist/esm/resilience/withFallback.js.map +1 -1
- package/dist/esm/resilience/withRetry.js +5 -0
- package/dist/esm/resilience/withRetry.js.map +1 -1
- package/dist/esm/time-travel/servedView.js +1 -1
- package/dist/esm/time-travel/servedView.js.map +1 -1
- package/dist/esm/tool-providers/index.d.ts +5 -0
- package/dist/esm/tool-providers/index.js +6 -0
- package/dist/esm/tool-providers/index.js.map +1 -1
- package/dist/esm/tools/hostFilled.d.ts +110 -0
- package/dist/esm/tools/hostFilled.js +509 -0
- package/dist/esm/tools/hostFilled.js.map +1 -0
- package/dist/esm/trace-toolpack/selfExplain.d.ts +8 -0
- package/dist/esm/trace-toolpack/selfExplain.js +25 -2
- package/dist/esm/trace-toolpack/selfExplain.js.map +1 -1
- package/dist/hosting/envelope.js +5 -0
- package/dist/hosting/envelope.js.map +1 -1
- package/dist/hosting/httpHost.js +5 -78
- package/dist/hosting/httpHost.js.map +1 -1
- package/dist/hosting/index.js +9 -3
- package/dist/hosting/index.js.map +1 -1
- package/dist/hosting/pendingAsk.js +42 -0
- package/dist/hosting/pendingAsk.js.map +1 -0
- package/dist/hosting/protocolAdapter.js +24 -0
- package/dist/hosting/protocolAdapter.js.map +1 -0
- package/dist/hosting/refusalStatus.js +88 -0
- package/dist/hosting/refusalStatus.js.map +1 -0
- package/dist/hosting/requestSealing.js +83 -0
- package/dist/hosting/requestSealing.js.map +1 -0
- package/dist/hosting/standingAgent.js +25 -35
- package/dist/hosting/standingAgent.js.map +1 -1
- package/dist/hosting/stream.js +39 -3
- package/dist/hosting/stream.js.map +1 -1
- package/dist/hosting/streamHandler.js +521 -0
- package/dist/hosting/streamHandler.js.map +1 -0
- package/dist/hosting/types.js.map +1 -1
- package/dist/hosting/verifiedThreads.js +50 -0
- package/dist/hosting/verifiedThreads.js.map +1 -0
- package/dist/identity/requestContext.js +139 -0
- package/dist/identity/requestContext.js.map +1 -0
- package/dist/identity/requestCredentials.js +165 -0
- package/dist/identity/requestCredentials.js.map +1 -0
- package/dist/identity/types.js.map +1 -1
- package/dist/identity.js +13 -1
- package/dist/identity.js.map +1 -1
- package/dist/index.js +20 -3
- package/dist/index.js.map +1 -1
- package/dist/injection-engine/buildInjectionEngineSubflow.js +38 -4
- package/dist/injection-engine/buildInjectionEngineSubflow.js.map +1 -1
- package/dist/injection-engine/constrainedEnumPick.js +4 -2
- package/dist/injection-engine/constrainedEnumPick.js.map +1 -1
- package/dist/injection-engine/evaluator.js +18 -0
- package/dist/injection-engine/evaluator.js.map +1 -1
- package/dist/injection-engine/skillGraph.js +25 -7
- package/dist/injection-engine/skillGraph.js.map +1 -1
- package/dist/injection-engine/skillIntent.js +3 -0
- package/dist/injection-engine/skillIntent.js.map +1 -1
- package/dist/injection-engine/types.js +17 -1
- package/dist/injection-engine/types.js.map +1 -1
- package/dist/lib/abort.js +336 -0
- package/dist/lib/abort.js.map +1 -0
- package/dist/lib/humanizeLLMError.js +23 -8
- package/dist/lib/humanizeLLMError.js.map +1 -1
- package/dist/maps/engagement/parkCard.js +10 -3
- package/dist/maps/engagement/parkCard.js.map +1 -1
- package/dist/mcp/mcpClient.js +30 -2
- package/dist/mcp/mcpClient.js.map +1 -1
- package/dist/mcp/mcpServe.js +5 -1
- package/dist/mcp/mcpServe.js.map +1 -1
- package/dist/mcp/plainData.js +208 -0
- package/dist/mcp/plainData.js.map +1 -0
- package/dist/mcp/sdkLoadFailure.js +4 -4
- package/dist/mcp/sdkLoadFailure.js.map +1 -1
- package/dist/mcp/throttleRetry.js +41 -6
- package/dist/mcp/throttleRetry.js.map +1 -1
- package/dist/mcp/toolResult.js +8 -50
- package/dist/mcp/toolResult.js.map +1 -1
- package/dist/memory/beats/llmExtractor.js +6 -3
- package/dist/memory/beats/llmExtractor.js.map +1 -1
- package/dist/memory/define.js +45 -1
- package/dist/memory/define.js.map +1 -1
- package/dist/memory/define.types.js.map +1 -1
- package/dist/memory/facts/llmFactExtractor.js +6 -3
- package/dist/memory/facts/llmFactExtractor.js.map +1 -1
- package/dist/memory/stages/formatDefault.js +3 -1
- package/dist/memory/stages/formatDefault.js.map +1 -1
- package/dist/memory/stages/summarize.js +16 -5
- package/dist/memory/stages/summarize.js.map +1 -1
- package/dist/memory/store/InMemoryStore.js +12 -3
- package/dist/memory/store/InMemoryStore.js.map +1 -1
- package/dist/memory/store/index.js +11 -1
- package/dist/memory/store/index.js.map +1 -1
- package/dist/memory/store/writeOptions.js +250 -0
- package/dist/memory/store/writeOptions.js.map +1 -0
- package/dist/memory-providers.js +4 -1
- package/dist/memory-providers.js.map +1 -1
- package/dist/patterns/LlmRouter.js +9 -4
- package/dist/patterns/LlmRouter.js.map +1 -1
- package/dist/patterns/MapReduce.js +8 -2
- package/dist/patterns/MapReduce.js.map +1 -1
- package/dist/redaction/conversation.js +3 -0
- package/dist/redaction/conversation.js.map +1 -1
- package/dist/redaction/knownStrings.js +1 -0
- package/dist/redaction/knownStrings.js.map +1 -1
- package/dist/reliability/buildReliabilityGateChart.js +7 -1
- package/dist/reliability/buildReliabilityGateChart.js.map +1 -1
- package/dist/resilience/withCircuitBreaker.js +5 -2
- package/dist/resilience/withCircuitBreaker.js.map +1 -1
- package/dist/resilience/withFallback.js +6 -0
- package/dist/resilience/withFallback.js.map +1 -1
- package/dist/resilience/withRetry.js +5 -0
- package/dist/resilience/withRetry.js.map +1 -1
- package/dist/time-travel/servedView.js +1 -1
- package/dist/time-travel/servedView.js.map +1 -1
- package/dist/tool-providers/index.js +10 -1
- package/dist/tool-providers/index.js.map +1 -1
- package/dist/tools/hostFilled.js +517 -0
- package/dist/tools/hostFilled.js.map +1 -0
- package/dist/trace-toolpack/selfExplain.js +25 -2
- package/dist/trace-toolpack/selfExplain.js.map +1 -1
- package/dist/types/adapters/llm/AnthropicProvider.d.ts +9 -2
- package/dist/types/adapters/llm/AnthropicProvider.d.ts.map +1 -1
- package/dist/types/adapters/llm/BedrockProvider.d.ts +6 -1
- package/dist/types/adapters/llm/BedrockProvider.d.ts.map +1 -1
- package/dist/types/adapters/llm/BrowserAnthropicProvider.d.ts.map +1 -1
- package/dist/types/adapters/llm/BrowserOpenAIProvider.d.ts.map +1 -1
- package/dist/types/adapters/llm/FoundryLocalProvider.d.ts.map +1 -1
- package/dist/types/adapters/llm/GeminiProvider.d.ts.map +1 -1
- package/dist/types/adapters/llm/InvokeModelGatewayProvider.d.ts.map +1 -1
- package/dist/types/adapters/llm/MockProvider.d.ts.map +1 -1
- package/dist/types/adapters/llm/OllamaProvider.d.ts.map +1 -1
- package/dist/types/adapters/llm/OpenAIProvider.d.ts +6 -1
- package/dist/types/adapters/llm/OpenAIProvider.d.ts.map +1 -1
- package/dist/types/adapters/mcp/agentcoreRuntime/errorType.d.ts +13 -0
- package/dist/types/adapters/mcp/agentcoreRuntime/errorType.d.ts.map +1 -0
- package/dist/types/adapters/mcp/agentcoreRuntime/invoke.d.ts +117 -0
- package/dist/types/adapters/mcp/agentcoreRuntime/invoke.d.ts.map +1 -0
- package/dist/types/adapters/mcp/agentcoreRuntime/safeAnswer.d.ts +50 -0
- package/dist/types/adapters/mcp/agentcoreRuntime/safeAnswer.d.ts.map +1 -0
- package/dist/types/adapters/mcp/agentcoreRuntime/session.d.ts +81 -0
- package/dist/types/adapters/mcp/agentcoreRuntime/session.d.ts.map +1 -0
- package/dist/types/adapters/mcp/agentcoreRuntime/sessionBusy.d.ts +62 -0
- package/dist/types/adapters/mcp/agentcoreRuntime/sessionBusy.d.ts.map +1 -0
- package/dist/types/adapters/mcp/agentcoreRuntime/strictJson.d.ts +38 -0
- package/dist/types/adapters/mcp/agentcoreRuntime/strictJson.d.ts.map +1 -0
- package/dist/types/adapters/mcp/agentcoreRuntime/transport.d.ts +200 -0
- package/dist/types/adapters/mcp/agentcoreRuntime/transport.d.ts.map +1 -0
- package/dist/types/adapters/memory/agentcore.d.ts +152 -7
- package/dist/types/adapters/memory/agentcore.d.ts.map +1 -1
- package/dist/types/adapters/memory/memoryBank.d.ts +3 -2
- package/dist/types/adapters/memory/memoryBank.d.ts.map +1 -1
- package/dist/types/adapters/memory/pgVector.d.ts.map +1 -1
- package/dist/types/adapters/memory/redis.d.ts +8 -3
- package/dist/types/adapters/memory/redis.d.ts.map +1 -1
- package/dist/types/adapters/memory/s3Vectors.d.ts.map +1 -1
- package/dist/types/adapters/memory/sqliteVector.d.ts.map +1 -1
- package/dist/types/ag-ui/adapter.d.ts +119 -0
- package/dist/types/ag-ui/adapter.d.ts.map +1 -0
- package/dist/types/ag-ui/framing.d.ts +53 -0
- package/dist/types/ag-ui/framing.d.ts.map +1 -0
- package/dist/types/ag-ui/frontendTools.d.ts +38 -0
- package/dist/types/ag-ui/frontendTools.d.ts.map +1 -0
- package/dist/types/ag-ui/ids.d.ts +44 -0
- package/dist/types/ag-ui/ids.d.ts.map +1 -0
- package/dist/types/ag-ui/index.d.ts +20 -0
- package/dist/types/ag-ui/index.d.ts.map +1 -0
- package/dist/types/ag-ui/request.d.ts +152 -0
- package/dist/types/ag-ui/request.d.ts.map +1 -0
- package/dist/types/ag-ui/serializer.d.ts +174 -0
- package/dist/types/ag-ui/serializer.d.ts.map +1 -0
- package/dist/types/ag-ui/types.d.ts +306 -0
- package/dist/types/ag-ui/types.d.ts.map +1 -0
- package/dist/types/answer-validation/index.d.ts +2 -1
- package/dist/types/answer-validation/index.d.ts.map +1 -1
- package/dist/types/answer-validation/toolLedger.d.ts +66 -0
- package/dist/types/answer-validation/toolLedger.d.ts.map +1 -0
- package/dist/types/answer-validation/types.d.ts +48 -0
- package/dist/types/answer-validation/types.d.ts.map +1 -1
- package/dist/types/answer-validation/validate.d.ts +2 -2
- package/dist/types/answer-validation/validate.d.ts.map +1 -1
- package/dist/types/classify/typesafe.d.ts.map +1 -1
- package/dist/types/core/Agent.d.ts +11 -1
- package/dist/types/core/Agent.d.ts.map +1 -1
- package/dist/types/core/LLMCall.d.ts +2 -1
- package/dist/types/core/LLMCall.d.ts.map +1 -1
- package/dist/types/core/RunnerBase.d.ts +39 -8
- package/dist/types/core/RunnerBase.d.ts.map +1 -1
- package/dist/types/core/agent/buildAgentChart.d.ts.map +1 -1
- package/dist/types/core/agent/buildAgentMessageApiChart.d.ts +16 -0
- package/dist/types/core/agent/buildAgentMessageApiChart.d.ts.map +1 -1
- package/dist/types/core/agent/buildDynamicAgentChart.d.ts.map +1 -1
- package/dist/types/core/agent/buildMessageApiChart.d.ts +16 -0
- package/dist/types/core/agent/buildMessageApiChart.d.ts.map +1 -1
- package/dist/types/core/agent/callerIdentity.d.ts.map +1 -1
- package/dist/types/core/agent/stages/answerValidation.d.ts.map +1 -1
- package/dist/types/core/agent/stages/callLLM.d.ts.map +1 -1
- package/dist/types/core/agent/stages/routeTurn.d.ts +1 -1
- package/dist/types/core/agent/stages/routeTurn.d.ts.map +1 -1
- package/dist/types/core/agent/stages/seed.d.ts +18 -1
- package/dist/types/core/agent/stages/seed.d.ts.map +1 -1
- package/dist/types/core/agent/stages/toolCalls.d.ts +32 -1
- package/dist/types/core/agent/stages/toolCalls.d.ts.map +1 -1
- package/dist/types/core/agent/types.d.ts +26 -6
- package/dist/types/core/agent/types.d.ts.map +1 -1
- package/dist/types/core/agent/window/strategies/summarizeOldest.d.ts.map +1 -1
- package/dist/types/core/agent/window/summarize.d.ts.map +1 -1
- package/dist/types/core/memberRun.d.ts +154 -0
- package/dist/types/core/memberRun.d.ts.map +1 -0
- package/dist/types/core/requestOfRun.d.ts +22 -0
- package/dist/types/core/requestOfRun.d.ts.map +1 -0
- package/dist/types/core/runner.d.ts +15 -3
- package/dist/types/core/runner.d.ts.map +1 -1
- package/dist/types/core/slots/buildToolsSlot.d.ts +0 -16
- package/dist/types/core/slots/buildToolsSlot.d.ts.map +1 -1
- package/dist/types/core-flow/Conditional.d.ts +10 -1
- package/dist/types/core-flow/Conditional.d.ts.map +1 -1
- package/dist/types/core-flow/Graph.d.ts +2 -1
- package/dist/types/core-flow/Graph.d.ts.map +1 -1
- package/dist/types/core-flow/Loop.d.ts +10 -1
- package/dist/types/core-flow/Loop.d.ts.map +1 -1
- package/dist/types/core-flow/Parallel.d.ts +10 -1
- package/dist/types/core-flow/Parallel.d.ts.map +1 -1
- package/dist/types/core-flow/Sequence.d.ts +10 -1
- package/dist/types/core-flow/Sequence.d.ts.map +1 -1
- package/dist/types/core-flow/Workflow.d.ts +2 -1
- package/dist/types/core-flow/Workflow.d.ts.map +1 -1
- package/dist/types/doors/ag-ui.d.ts +20 -0
- package/dist/types/doors/ag-ui.d.ts.map +1 -0
- package/dist/types/doors/security.d.ts +2 -1
- package/dist/types/doors/security.d.ts.map +1 -1
- package/dist/types/events/payloads.d.ts +4 -2
- package/dist/types/events/payloads.d.ts.map +1 -1
- package/dist/types/hosting/httpHost.d.ts.map +1 -1
- package/dist/types/hosting/index.d.ts +5 -1
- package/dist/types/hosting/index.d.ts.map +1 -1
- package/dist/types/hosting/pendingAsk.d.ts +20 -0
- package/dist/types/hosting/pendingAsk.d.ts.map +1 -0
- package/dist/types/hosting/protocolAdapter.d.ts +233 -0
- package/dist/types/hosting/protocolAdapter.d.ts.map +1 -0
- package/dist/types/hosting/refusalStatus.d.ts +31 -0
- package/dist/types/hosting/refusalStatus.d.ts.map +1 -0
- package/dist/types/hosting/requestSealing.d.ts +66 -0
- package/dist/types/hosting/requestSealing.d.ts.map +1 -0
- package/dist/types/hosting/standingAgent.d.ts.map +1 -1
- package/dist/types/hosting/stream.d.ts +60 -0
- package/dist/types/hosting/stream.d.ts.map +1 -1
- package/dist/types/hosting/streamHandler.d.ts +154 -0
- package/dist/types/hosting/streamHandler.d.ts.map +1 -0
- package/dist/types/hosting/types.d.ts +44 -0
- package/dist/types/hosting/types.d.ts.map +1 -1
- package/dist/types/hosting/verifiedThreads.d.ts +30 -0
- package/dist/types/hosting/verifiedThreads.d.ts.map +1 -0
- package/dist/types/identity/requestContext.d.ts +97 -0
- package/dist/types/identity/requestContext.d.ts.map +1 -0
- package/dist/types/identity/requestCredentials.d.ts +100 -0
- package/dist/types/identity/requestCredentials.d.ts.map +1 -0
- package/dist/types/identity/types.d.ts +11 -0
- package/dist/types/identity/types.d.ts.map +1 -1
- package/dist/types/identity.d.ts +2 -0
- package/dist/types/identity.d.ts.map +1 -1
- package/dist/types/index.d.ts +3 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/injection-engine/buildInjectionEngineSubflow.d.ts +11 -0
- package/dist/types/injection-engine/buildInjectionEngineSubflow.d.ts.map +1 -1
- package/dist/types/injection-engine/constrainedEnumPick.d.ts.map +1 -1
- package/dist/types/injection-engine/evaluator.d.ts +6 -0
- package/dist/types/injection-engine/evaluator.d.ts.map +1 -1
- package/dist/types/injection-engine/skillIntent.d.ts +4 -2
- package/dist/types/injection-engine/skillIntent.d.ts.map +1 -1
- package/dist/types/injection-engine/types.d.ts +27 -1
- package/dist/types/injection-engine/types.d.ts.map +1 -1
- package/dist/types/lib/abort.d.ts +144 -0
- package/dist/types/lib/abort.d.ts.map +1 -0
- package/dist/types/lib/humanizeLLMError.d.ts +15 -0
- package/dist/types/lib/humanizeLLMError.d.ts.map +1 -1
- package/dist/types/maps/engagement/parkCard.d.ts +5 -1
- package/dist/types/maps/engagement/parkCard.d.ts.map +1 -1
- package/dist/types/mcp/mcpServe.d.ts.map +1 -1
- package/dist/types/mcp/plainData.d.ts +45 -0
- package/dist/types/mcp/plainData.d.ts.map +1 -0
- package/dist/types/mcp/sdkLoadFailure.d.ts +6 -7
- package/dist/types/mcp/sdkLoadFailure.d.ts.map +1 -1
- package/dist/types/mcp/throttleRetry.d.ts +51 -0
- package/dist/types/mcp/throttleRetry.d.ts.map +1 -1
- package/dist/types/mcp/toolResult.d.ts.map +1 -1
- package/dist/types/mcp/types.d.ts +10 -6
- package/dist/types/mcp/types.d.ts.map +1 -1
- package/dist/types/memory/beats/llmExtractor.d.ts.map +1 -1
- package/dist/types/memory/define.d.ts.map +1 -1
- package/dist/types/memory/define.types.d.ts +24 -0
- package/dist/types/memory/define.types.d.ts.map +1 -1
- package/dist/types/memory/facts/llmFactExtractor.d.ts.map +1 -1
- package/dist/types/memory/stages/formatDefault.d.ts.map +1 -1
- package/dist/types/memory/stages/summarize.d.ts.map +1 -1
- package/dist/types/memory/store/InMemoryStore.d.ts +8 -3
- package/dist/types/memory/store/InMemoryStore.d.ts.map +1 -1
- package/dist/types/memory/store/index.d.ts +1 -0
- package/dist/types/memory/store/index.d.ts.map +1 -1
- package/dist/types/memory/store/types.d.ts +38 -4
- package/dist/types/memory/store/types.d.ts.map +1 -1
- package/dist/types/memory/store/writeOptions.d.ts +119 -0
- package/dist/types/memory/store/writeOptions.d.ts.map +1 -0
- package/dist/types/memory-providers.d.ts +1 -1
- package/dist/types/memory-providers.d.ts.map +1 -1
- package/dist/types/patterns/LlmRouter.d.ts.map +1 -1
- package/dist/types/patterns/MapReduce.d.ts.map +1 -1
- package/dist/types/redaction/conversation.d.ts.map +1 -1
- package/dist/types/redaction/knownStrings.d.ts.map +1 -1
- package/dist/types/reliability/buildReliabilityGateChart.d.ts.map +1 -1
- package/dist/types/resilience/withCircuitBreaker.d.ts.map +1 -1
- package/dist/types/resilience/withFallback.d.ts.map +1 -1
- package/dist/types/resilience/withRetry.d.ts.map +1 -1
- package/dist/types/tool-providers/index.d.ts +5 -0
- package/dist/types/tool-providers/index.d.ts.map +1 -1
- package/dist/types/tools/hostFilled.d.ts +111 -0
- package/dist/types/tools/hostFilled.d.ts.map +1 -0
- package/dist/types/trace-toolpack/selfExplain.d.ts +8 -0
- package/dist/types/trace-toolpack/selfExplain.d.ts.map +1 -1
- package/package.json +25 -1
|
@@ -0,0 +1,517 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* streamHandler — one run per request, streamed in a wire protocol, as a
|
|
3
|
+
* framework-agnostic Fetch-API handler: `(request: Request) => Promise<Response>`.
|
|
4
|
+
*
|
|
5
|
+
* Pattern: Template method over a {@link ProtocolAdapter} (the protocol is a
|
|
6
|
+
* strategy; AG-UI is one). Everything HTTP happens here once — the
|
|
7
|
+
* door guard, the body ceiling, the JSON parse, binding the
|
|
8
|
+
* conversation to its caller, keeping it between requests, the client
|
|
9
|
+
* hanging up, a failure that is never the process's — so an adapter
|
|
10
|
+
* only reads its request, plans the turn and translates.
|
|
11
|
+
* Role: the host for a protocol whose response is a STREAM OF EVENTS rather
|
|
12
|
+
* than text pieces (`httpHost`'s port). It mounts in anything that
|
|
13
|
+
* speaks `Request`/`Response` — a framework's route handler, an edge
|
|
14
|
+
* or serverless runtime, or Node through any fetch adapter.
|
|
15
|
+
* Deliberately names no vendor, like every file in this folder.
|
|
16
|
+
*
|
|
17
|
+
* THE REQUEST IS UNTRUSTED. A body is what anybody could send. It decides
|
|
18
|
+
* nothing the server owns:
|
|
19
|
+
* - WHO is calling and WHICH conversation is theirs come from the app's
|
|
20
|
+
* {@link ThreadBinder} (`threads`), from the request's headers — the id a
|
|
21
|
+
* request names is format-checked caller data and never a key;
|
|
22
|
+
* - WHAT WAS SAID BEFORE comes from the server: the session store
|
|
23
|
+
* (`sessions`), or the agent's own memory keyed by the bound session;
|
|
24
|
+
* - WHAT A PAUSED RUN WAITS ON is the stored run's own record — an answer is
|
|
25
|
+
* matched to it by the adapter, never taken on the request's word;
|
|
26
|
+
* - identity and redaction settings never come from a request. A credential
|
|
27
|
+
* the request CARRIES (a gateway's per-request token) reaches its own run
|
|
28
|
+
* only through the app's `sealRequest`, sealed: never a frame, a stored
|
|
29
|
+
* session or a checkpoint.
|
|
30
|
+
*
|
|
31
|
+
* NOTHING IS SHARED BETWEEN REQUESTS. Every request builds a FRESH runner
|
|
32
|
+
* (`agent`, a factory): footprintjs runs one executor per run and a runner
|
|
33
|
+
* holds one run's context, so a request can neither see another's events nor
|
|
34
|
+
* leave anything behind for one — no shared listener, recorder, buffer, tool
|
|
35
|
+
* session or frame count (each stream numbers its own frames, and hands the
|
|
36
|
+
* number to the framing: `SseFramePosition`). A factory that hands back a
|
|
37
|
+
* runner it handed back before is refused; so is a `sealRequest` that hands
|
|
38
|
+
* back a sealed request twice. The handler's own state is KEYS, never content:
|
|
39
|
+
* the bound conversations with a turn in flight and who holds each (a second
|
|
40
|
+
* turn on one conversation is refused rather than racing the first for the
|
|
41
|
+
* stored state), and the runners and sealed requests already used (by
|
|
42
|
+
* identity, held weakly).
|
|
43
|
+
*
|
|
44
|
+
* ONE TURN PER THREAD IS A PER-PROCESS GUARD. Two instances of the handler
|
|
45
|
+
* (several serverless instances, several workers) do not see each other's
|
|
46
|
+
* turns: route a thread to one instance (sticky sessions), or a double-sent
|
|
47
|
+
* answer can resume one paused run twice and a later persist can overwrite an
|
|
48
|
+
* earlier one. The session store port has no compare-and-set yet.
|
|
49
|
+
*
|
|
50
|
+
* The laws it keeps from `httpHost`:
|
|
51
|
+
* - The door guard runs first, on the headers alone (`doorGuard.ts`): a Host
|
|
52
|
+
* not configured (421), a browser origin not allowed (403), a POST that
|
|
53
|
+
* does not say it is JSON (415). A refused body is never read.
|
|
54
|
+
* - A body over `maxBodyBytes` is refused at the byte that crosses it (413).
|
|
55
|
+
* - A refusal answers with its own status and code (`refusalStatus.ts`);
|
|
56
|
+
* anything else is a 500 that names nothing the caller sent and no thrown
|
|
57
|
+
* message.
|
|
58
|
+
* - Nothing in a request's lifecycle is the process's failure: every step is
|
|
59
|
+
* caught, and a stream always ends.
|
|
60
|
+
*/
|
|
61
|
+
import { CONSUMER_SCOPE_RUN_ID, eventBelongsToRun } from '../bridge/eventMeta.js';
|
|
62
|
+
import { isPaused } from '../core/pause.js';
|
|
63
|
+
import { toWireJson } from '../lib/wireJson.js';
|
|
64
|
+
import { checkSessionId, doorGuard } from './doorGuard.js';
|
|
65
|
+
import { envelopeOwner, readEnvelope, readPausedRun, toEnvelope, toPausedEnvelope, } from './envelope.js';
|
|
66
|
+
import { RequestTooLargeError, WireRequestRefusal } from './errors.js';
|
|
67
|
+
import { describePause } from './pendingAsk.js';
|
|
68
|
+
import { REFUSAL_STATUS } from './refusalStatus.js';
|
|
69
|
+
import { requestSealing } from './requestSealing.js';
|
|
70
|
+
/** The default body ceiling — 1 MiB, the same as `nodeHost`. */
|
|
71
|
+
export const DEFAULT_STREAM_MAX_BODY_BYTES = 1_048_576;
|
|
72
|
+
/** The default keep-alive interval: an SSE comment every 15 s of silence. */
|
|
73
|
+
export const DEFAULT_STREAM_HEARTBEAT_MS = 15_000;
|
|
74
|
+
/**
|
|
75
|
+
* Serve runs in `adapter`'s protocol: POST a protocol request, read a stream
|
|
76
|
+
* of the protocol's events.
|
|
77
|
+
*
|
|
78
|
+
* @throws TypeError at construction for options that cannot be served, and
|
|
79
|
+
* when the adapter's framing cannot be built (an optional peer missing) —
|
|
80
|
+
* refused at boot, never mid-request.
|
|
81
|
+
*
|
|
82
|
+
* @example A route handler that speaks `Request`/`Response`
|
|
83
|
+
* ```ts
|
|
84
|
+
* import { memorySessions, streamHandler } from 'agentfootprint/hosting';
|
|
85
|
+
* import { agUi } from 'agentfootprint/ag-ui';
|
|
86
|
+
*
|
|
87
|
+
* export const POST = streamHandler({
|
|
88
|
+
* agent: ({ tools }) => buildAgent(tools), // a fresh agent per request
|
|
89
|
+
* adapter: agUi(),
|
|
90
|
+
* threads: { bind: ({ conversation, headers }) => bindToUser(conversation, headers) },
|
|
91
|
+
* sessions: memorySessions(),
|
|
92
|
+
* });
|
|
93
|
+
* ```
|
|
94
|
+
*/
|
|
95
|
+
export function streamHandler(options) {
|
|
96
|
+
const { adapter, threads, sessions } = options;
|
|
97
|
+
const name = options.name ?? `${adapter.name} stream`;
|
|
98
|
+
if (typeof options.agent !== 'function') {
|
|
99
|
+
throw new TypeError(`[hosting] '${name}': agent must be a function that builds a FRESH runner for every ` +
|
|
100
|
+
`request — a runner holds one run's context, and one shared between requests would ` +
|
|
101
|
+
`hand one caller's run to another.`);
|
|
102
|
+
}
|
|
103
|
+
if (sessions !== undefined && threads === undefined) {
|
|
104
|
+
throw new TypeError(`[hosting] '${name}': sessions needs threads. A conversation is kept under the key the ` +
|
|
105
|
+
`app binds to its caller (threads.bind), never under the id a request names.`);
|
|
106
|
+
}
|
|
107
|
+
const limit = positive(options.maxBodyBytes, DEFAULT_STREAM_MAX_BODY_BYTES, 'maxBodyBytes', name);
|
|
108
|
+
const heartbeatMs = options.heartbeatMs ?? DEFAULT_STREAM_HEARTBEAT_MS;
|
|
109
|
+
if (!Number.isFinite(heartbeatMs) || heartbeatMs < 0) {
|
|
110
|
+
throw new TypeError(`[hosting] '${name}': heartbeatMs must be 0 (off) or a positive number.`);
|
|
111
|
+
}
|
|
112
|
+
const guard = doorGuard({ ...options, name });
|
|
113
|
+
const framing = adapter.framing();
|
|
114
|
+
const seal = requestSealing(options.sealRequest, name);
|
|
115
|
+
const bytes = new TextEncoder();
|
|
116
|
+
/**
|
|
117
|
+
* Bound conversations with a turn in flight — the key, and who holds it (so
|
|
118
|
+
* anybody else hears "not found", never "busy").
|
|
119
|
+
*/
|
|
120
|
+
const inFlight = new Map();
|
|
121
|
+
/** Runners already used, by identity — so a factory that shares one is caught. */
|
|
122
|
+
const used = new WeakSet();
|
|
123
|
+
/** One answer for "none", "another's" and "nobody's" — a caller learns no ids. */
|
|
124
|
+
const notFound = () => new WireRequestRefusal('ERR_SESSION_NOT_FOUND', `'${name}': that conversation is not one you can open.`, 404);
|
|
125
|
+
/** Bind the conversation the request names to its caller — the app's port decides. */
|
|
126
|
+
async function bind(request, headers) {
|
|
127
|
+
if (threads === undefined)
|
|
128
|
+
return undefined;
|
|
129
|
+
const thread = await threads.bind({ conversation: adapter.conversation(request), headers });
|
|
130
|
+
if (thread === null || typeof thread !== 'object' || typeof thread.sessionId !== 'string') {
|
|
131
|
+
throw new TypeError('threads.bind returned no session');
|
|
132
|
+
}
|
|
133
|
+
const bad = checkSessionId(thread.sessionId, name);
|
|
134
|
+
if (bad !== undefined)
|
|
135
|
+
throw bad;
|
|
136
|
+
return thread;
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* The stored conversation, when it is the caller's — refusing one that is not.
|
|
140
|
+
* Asked BEFORE anything about the conversation's activity, so a caller it is
|
|
141
|
+
* not learns "not found" and never "busy" — and never holds its turn.
|
|
142
|
+
*/
|
|
143
|
+
async function ownersOnly(thread) {
|
|
144
|
+
if (sessions === undefined || thread === undefined)
|
|
145
|
+
return undefined;
|
|
146
|
+
await sessions.onWake?.(thread.sessionId, 'invoke');
|
|
147
|
+
const stored = await sessions.hydrate(thread.sessionId);
|
|
148
|
+
// Whose conversation this is, before a line of it is read. One answer for
|
|
149
|
+
// "none", "another's" and "nobody's", so a caller learns no ids.
|
|
150
|
+
if (stored !== undefined && envelopeOwner(stored) !== thread.identity?.principal)
|
|
151
|
+
throw notFound();
|
|
152
|
+
return stored;
|
|
153
|
+
}
|
|
154
|
+
/** Read what the server holds for the bound conversation — under the turn's claim. */
|
|
155
|
+
async function hold(thread) {
|
|
156
|
+
const stored = await ownersOnly(thread);
|
|
157
|
+
if (stored === undefined)
|
|
158
|
+
return { view: { continues: false } };
|
|
159
|
+
if (stored.format === 'flowchart-v1') {
|
|
160
|
+
const paused = readPausedRun(stored);
|
|
161
|
+
const record = paused.wire?.protocol === adapter.name ? paused.wire.record : undefined;
|
|
162
|
+
return {
|
|
163
|
+
paused,
|
|
164
|
+
view: {
|
|
165
|
+
continues: false,
|
|
166
|
+
awaiting: {
|
|
167
|
+
pending: paused.pending,
|
|
168
|
+
...(record !== undefined && { suspension: record }),
|
|
169
|
+
},
|
|
170
|
+
},
|
|
171
|
+
};
|
|
172
|
+
}
|
|
173
|
+
const prior = readEnvelope(stored);
|
|
174
|
+
return { prior, view: { continues: true } };
|
|
175
|
+
}
|
|
176
|
+
/** A fresh runner for this request — never one the factory handed out before. */
|
|
177
|
+
function build(context) {
|
|
178
|
+
const runner = options.agent(context);
|
|
179
|
+
if (runner === null ||
|
|
180
|
+
typeof runner !== 'object' ||
|
|
181
|
+
typeof runner.on !== 'function' ||
|
|
182
|
+
typeof runner.run !== 'function') {
|
|
183
|
+
throw new TypeError('agent returned no runner');
|
|
184
|
+
}
|
|
185
|
+
if (used.has(runner)) {
|
|
186
|
+
throw new WireRequestRefusal('ERR_RUNNER_REUSED', `'${name}': the agent factory returned a runner it returned before. Every ` +
|
|
187
|
+
`request needs a FRESH runner — a shared one hands one caller's run to another.`, 500);
|
|
188
|
+
}
|
|
189
|
+
used.add(runner);
|
|
190
|
+
return runner;
|
|
191
|
+
}
|
|
192
|
+
/** Keep what the run left behind, then say how it ended — kept FIRST, told after. */
|
|
193
|
+
async function keep(turn, out, recordRunId) {
|
|
194
|
+
const { thread, runner, held, translation } = turn;
|
|
195
|
+
const store = thread === undefined ? undefined : sessions;
|
|
196
|
+
if (isPaused(out)) {
|
|
197
|
+
const awaiting = adapter.awaitsCaller?.(out.pauseData) === true ? 'caller' : 'person';
|
|
198
|
+
if (store !== undefined && thread !== undefined) {
|
|
199
|
+
const record = translation.suspension?.(awaiting);
|
|
200
|
+
const conversation = runner.checkpoint?.() ?? noConversation(turn, recordRunId, thread.identity);
|
|
201
|
+
await store.persist(thread.sessionId, toPausedEnvelope({
|
|
202
|
+
checkpoint: out.checkpoint,
|
|
203
|
+
conversation,
|
|
204
|
+
pending: describePause(out, thread.sessionId),
|
|
205
|
+
...(record !== undefined && { wire: { protocol: adapter.name, record } }),
|
|
206
|
+
}));
|
|
207
|
+
}
|
|
208
|
+
return { kind: 'paused', awaiting };
|
|
209
|
+
}
|
|
210
|
+
if (store !== undefined && thread !== undefined) {
|
|
211
|
+
const conversation = runner.checkpoint?.();
|
|
212
|
+
if (conversation !== undefined)
|
|
213
|
+
await store.persist(thread.sessionId, toEnvelope(conversation));
|
|
214
|
+
// A runner that keeps no conversation still clears the pause it continued.
|
|
215
|
+
else if (held.paused !== undefined)
|
|
216
|
+
await store.persist(thread.sessionId, toEnvelope(noConversation(turn, recordRunId, thread.identity)));
|
|
217
|
+
}
|
|
218
|
+
return { kind: 'finished' };
|
|
219
|
+
}
|
|
220
|
+
/** Run the turn; every event the run serves goes through the translation; settle once. */
|
|
221
|
+
async function serve(turn, write, signal, release) {
|
|
222
|
+
const { plan, held, thread, runner, translation, request } = turn;
|
|
223
|
+
// A translation that throws is a fault in the adapter, never the run's: the
|
|
224
|
+
// run goes on, and the stream still ends.
|
|
225
|
+
const safely = (produce) => {
|
|
226
|
+
try {
|
|
227
|
+
write(produce());
|
|
228
|
+
}
|
|
229
|
+
catch {
|
|
230
|
+
// nothing more this request can be told
|
|
231
|
+
}
|
|
232
|
+
};
|
|
233
|
+
let runId;
|
|
234
|
+
let off;
|
|
235
|
+
let settlement;
|
|
236
|
+
try {
|
|
237
|
+
// The runner is this request's alone; the run filter still holds a fact a
|
|
238
|
+
// shared resource stamped for another run or session out of the stream.
|
|
239
|
+
off = runner.on('*', (event) => {
|
|
240
|
+
const named = event.meta?.runId;
|
|
241
|
+
if (runId === undefined && typeof named === 'string' && named !== CONSUMER_SCOPE_RUN_ID)
|
|
242
|
+
runId = named;
|
|
243
|
+
if (!eventBelongsToRun(event.meta, { runId: runId ?? '', sessionId: thread?.sessionId }))
|
|
244
|
+
return;
|
|
245
|
+
safely(() => translation.event(event));
|
|
246
|
+
});
|
|
247
|
+
if (signal.aborted)
|
|
248
|
+
throw new Error('the caller left before the run started');
|
|
249
|
+
const runOptions = {
|
|
250
|
+
signal,
|
|
251
|
+
...(thread !== undefined && { sessionId: thread.sessionId }),
|
|
252
|
+
...(thread?.identity !== undefined && { identity: thread.identity }),
|
|
253
|
+
...(request !== undefined && { request }),
|
|
254
|
+
};
|
|
255
|
+
const out = plan.turn.kind === 'answer'
|
|
256
|
+
? await runner.resume(held.paused.checkpoint, plan.turn.answer, runOptions)
|
|
257
|
+
: await runner.run((typeof runner.checkpoint === 'function' && held.prior !== undefined
|
|
258
|
+
? { message: plan.turn.message, continueFrom: held.prior }
|
|
259
|
+
: { message: plan.turn.message }), runOptions);
|
|
260
|
+
settlement = await keep(turn, out, runId);
|
|
261
|
+
}
|
|
262
|
+
catch {
|
|
263
|
+
settlement = { kind: signal.aborted ? 'cancelled' : 'failed' };
|
|
264
|
+
}
|
|
265
|
+
finally {
|
|
266
|
+
// The conversation is free BEFORE the caller hears the end — and before
|
|
267
|
+
// anything else that could throw: a client that answers on RUN_FINISHED
|
|
268
|
+
// must not find its own turn still running, ever.
|
|
269
|
+
release();
|
|
270
|
+
try {
|
|
271
|
+
if (typeof off === 'function')
|
|
272
|
+
off();
|
|
273
|
+
}
|
|
274
|
+
catch {
|
|
275
|
+
// a runner that cannot unsubscribe is thrown away with this request
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
safely(() => translation.settle(settlement));
|
|
279
|
+
// Tool sessions this request's runner opened close with it; a strategy the
|
|
280
|
+
// app shares between runners is drained, never stopped.
|
|
281
|
+
void runner.shutdown?.({ stop: false })?.catch(() => undefined);
|
|
282
|
+
}
|
|
283
|
+
function respond(turn, request, release) {
|
|
284
|
+
const abort = new AbortController();
|
|
285
|
+
const hangUp = () => abort.abort();
|
|
286
|
+
// A caller already gone never starts its run.
|
|
287
|
+
if (request.signal?.aborted === true)
|
|
288
|
+
abort.abort();
|
|
289
|
+
else
|
|
290
|
+
request.signal?.addEventListener('abort', hangUp, { once: true });
|
|
291
|
+
let closed = false;
|
|
292
|
+
let heartbeat;
|
|
293
|
+
const stop = () => {
|
|
294
|
+
closed = true;
|
|
295
|
+
if (heartbeat !== undefined)
|
|
296
|
+
clearInterval(heartbeat);
|
|
297
|
+
request.signal?.removeEventListener('abort', hangUp);
|
|
298
|
+
};
|
|
299
|
+
const body = new ReadableStream({
|
|
300
|
+
start(controller) {
|
|
301
|
+
const send = (text) => {
|
|
302
|
+
if (closed)
|
|
303
|
+
return;
|
|
304
|
+
try {
|
|
305
|
+
controller.enqueue(bytes.encode(text));
|
|
306
|
+
}
|
|
307
|
+
catch {
|
|
308
|
+
stop(); // the stream went away under us
|
|
309
|
+
}
|
|
310
|
+
};
|
|
311
|
+
// This stream's own count — never the framing's, never another stream's.
|
|
312
|
+
let written = 0;
|
|
313
|
+
const write = (events) => {
|
|
314
|
+
for (const event of events) {
|
|
315
|
+
const frame = framing.frame(event, { sequence: written + 1 });
|
|
316
|
+
written += 1;
|
|
317
|
+
send(frame);
|
|
318
|
+
}
|
|
319
|
+
};
|
|
320
|
+
if (heartbeatMs > 0) {
|
|
321
|
+
heartbeat = setInterval(() => send(': ping\n\n'), heartbeatMs);
|
|
322
|
+
heartbeat.unref?.();
|
|
323
|
+
}
|
|
324
|
+
const end = () => {
|
|
325
|
+
if (closed)
|
|
326
|
+
return;
|
|
327
|
+
stop();
|
|
328
|
+
try {
|
|
329
|
+
controller.close();
|
|
330
|
+
}
|
|
331
|
+
catch {
|
|
332
|
+
// already closed by the reader
|
|
333
|
+
}
|
|
334
|
+
};
|
|
335
|
+
void serve(turn, write, abort.signal, release).then(end, end);
|
|
336
|
+
},
|
|
337
|
+
cancel() {
|
|
338
|
+
stop();
|
|
339
|
+
abort.abort();
|
|
340
|
+
},
|
|
341
|
+
});
|
|
342
|
+
return new Response(body, {
|
|
343
|
+
status: 200,
|
|
344
|
+
headers: {
|
|
345
|
+
'content-type': framing.contentType,
|
|
346
|
+
'cache-control': 'no-cache, no-transform',
|
|
347
|
+
'x-accel-buffering': 'no',
|
|
348
|
+
},
|
|
349
|
+
});
|
|
350
|
+
}
|
|
351
|
+
return async (request) => {
|
|
352
|
+
/** The conversation this request holds while it is in flight — released exactly once. */
|
|
353
|
+
let claimed;
|
|
354
|
+
const release = () => {
|
|
355
|
+
if (claimed !== undefined)
|
|
356
|
+
inFlight.delete(claimed);
|
|
357
|
+
claimed = undefined;
|
|
358
|
+
};
|
|
359
|
+
try {
|
|
360
|
+
if (request.method !== 'POST') {
|
|
361
|
+
return refusal(405, `[hosting] '${name}' answers POST only.`, 'ERR_METHOD_NOT_ALLOWED', {
|
|
362
|
+
allow: 'POST',
|
|
363
|
+
});
|
|
364
|
+
}
|
|
365
|
+
// Frozen: the reader, the binder and the sealer each read the same headers.
|
|
366
|
+
const headers = Object.freeze(headersOf(request));
|
|
367
|
+
const refused = guard.check({ method: request.method, headers });
|
|
368
|
+
if (refused !== undefined)
|
|
369
|
+
return refusal(refused.status, refused.message, refused.code);
|
|
370
|
+
const text = await readBody(request, limit, name);
|
|
371
|
+
let body;
|
|
372
|
+
try {
|
|
373
|
+
body = text.trim() === '' ? {} : JSON.parse(text);
|
|
374
|
+
}
|
|
375
|
+
catch {
|
|
376
|
+
return refusal(400, `[hosting] '${name}': the request body is not JSON.`, 'ERR_INVALID_JSON');
|
|
377
|
+
}
|
|
378
|
+
const read = adapter.readRequest({ body, headers });
|
|
379
|
+
const thread = await bind(read, headers);
|
|
380
|
+
if (thread !== undefined) {
|
|
381
|
+
// Ownership first: a caller the conversation is not answered "not
|
|
382
|
+
// found" whether or not a turn is running, and never claims it.
|
|
383
|
+
await ownersOnly(thread);
|
|
384
|
+
const principal = thread.identity?.principal;
|
|
385
|
+
if (inFlight.has(thread.sessionId)) {
|
|
386
|
+
// Even before a first turn has stored anything: the claimant is the owner.
|
|
387
|
+
if (inFlight.get(thread.sessionId) !== principal)
|
|
388
|
+
throw notFound();
|
|
389
|
+
return refusal(409, `[hosting] '${name}': a turn of that conversation is already in flight. Send the ` +
|
|
390
|
+
`next turn when it ends.`, 'ERR_CONCURRENT_RUN');
|
|
391
|
+
}
|
|
392
|
+
inFlight.set(thread.sessionId, principal);
|
|
393
|
+
claimed = thread.sessionId;
|
|
394
|
+
}
|
|
395
|
+
const held = await hold(thread);
|
|
396
|
+
const plan = adapter.plan(read, held.view, {
|
|
397
|
+
headers,
|
|
398
|
+
...(thread !== undefined && { thread }),
|
|
399
|
+
keepsConversation: threads !== undefined,
|
|
400
|
+
keepsPauses: threads !== undefined && sessions !== undefined,
|
|
401
|
+
});
|
|
402
|
+
// Sealed only for a request that runs: every refusal is behind it.
|
|
403
|
+
const sealed = await seal?.({ headers });
|
|
404
|
+
const runner = build({
|
|
405
|
+
tools: plan.tools ?? [],
|
|
406
|
+
accepted: plan.accepted ?? {},
|
|
407
|
+
...(thread !== undefined && { thread }),
|
|
408
|
+
});
|
|
409
|
+
const translation = adapter.open(read, plan.turn.kind === 'answer' ? held.view.awaiting?.suspension : undefined);
|
|
410
|
+
// The stream owns the claim from here: released when the run ends.
|
|
411
|
+
const owned = claimed;
|
|
412
|
+
claimed = undefined;
|
|
413
|
+
return respond({
|
|
414
|
+
plan,
|
|
415
|
+
held,
|
|
416
|
+
...(thread !== undefined && { thread }),
|
|
417
|
+
runner,
|
|
418
|
+
translation,
|
|
419
|
+
...(sealed !== undefined && { request: sealed }),
|
|
420
|
+
}, request, () => {
|
|
421
|
+
if (owned !== undefined)
|
|
422
|
+
inFlight.delete(owned);
|
|
423
|
+
});
|
|
424
|
+
}
|
|
425
|
+
catch (err) {
|
|
426
|
+
return failure(err, name);
|
|
427
|
+
}
|
|
428
|
+
finally {
|
|
429
|
+
release();
|
|
430
|
+
}
|
|
431
|
+
};
|
|
432
|
+
}
|
|
433
|
+
/**
|
|
434
|
+
* A conversation record for a runner that keeps none (an `LLMCall`, a
|
|
435
|
+
* composition): no history, only what a stored session needs — the run, the
|
|
436
|
+
* message, and whose it is.
|
|
437
|
+
*/
|
|
438
|
+
function noConversation(turn, recordRunId, identity) {
|
|
439
|
+
const message = turn.plan.turn.kind === 'message'
|
|
440
|
+
? turn.plan.turn.message
|
|
441
|
+
: turn.held.paused?.conversation.originalInput.message ?? '';
|
|
442
|
+
return {
|
|
443
|
+
version: 1,
|
|
444
|
+
runId: recordRunId ?? 'unknown',
|
|
445
|
+
history: [],
|
|
446
|
+
lastCompletedIteration: 0,
|
|
447
|
+
originalInput: { message },
|
|
448
|
+
checkpointedAt: Date.now(),
|
|
449
|
+
...(identity !== undefined && { identity }),
|
|
450
|
+
};
|
|
451
|
+
}
|
|
452
|
+
/** The refusal an error means — its own status and code, or a 500 that quotes nothing. */
|
|
453
|
+
function failure(err, name) {
|
|
454
|
+
if (err instanceof RequestTooLargeError)
|
|
455
|
+
return refusal(413, err.message, err.code);
|
|
456
|
+
if (err instanceof WireRequestRefusal)
|
|
457
|
+
return refusal(err.status, err.message, err.code);
|
|
458
|
+
const code = err?.code;
|
|
459
|
+
if (err instanceof Error && typeof code === 'string' && REFUSAL_STATUS[code] !== undefined) {
|
|
460
|
+
return refusal(REFUSAL_STATUS[code], err.message, code);
|
|
461
|
+
}
|
|
462
|
+
// Never the thrown message: it is the author's note to their own logs.
|
|
463
|
+
return refusal(500, `[hosting] '${name}' could not serve the request.`, 'ERR_INTERNAL');
|
|
464
|
+
}
|
|
465
|
+
/** A JSON refusal: `{ error, code }` under the refusal's own status. */
|
|
466
|
+
function refusal(status, message, code, headers = {}) {
|
|
467
|
+
return new Response(toWireJson({ error: message, code }), {
|
|
468
|
+
status,
|
|
469
|
+
headers: { 'content-type': 'application/json', ...headers },
|
|
470
|
+
});
|
|
471
|
+
}
|
|
472
|
+
/** The request's headers, names lower-cased (the door guard's and an adapter's view). */
|
|
473
|
+
function headersOf(request) {
|
|
474
|
+
const out = {};
|
|
475
|
+
request.headers.forEach((value, key) => {
|
|
476
|
+
out[key.toLowerCase()] = value;
|
|
477
|
+
});
|
|
478
|
+
return out;
|
|
479
|
+
}
|
|
480
|
+
/** The body as text, refused at the byte that crosses `limit`. */
|
|
481
|
+
async function readBody(request, limit, name) {
|
|
482
|
+
const declared = Number(request.headers.get('content-length'));
|
|
483
|
+
if (Number.isFinite(declared) && declared > limit)
|
|
484
|
+
throw new RequestTooLargeError(limit, name);
|
|
485
|
+
if (request.body === null)
|
|
486
|
+
return '';
|
|
487
|
+
const reader = request.body.getReader();
|
|
488
|
+
const chunks = [];
|
|
489
|
+
let size = 0;
|
|
490
|
+
for (;;) {
|
|
491
|
+
const { done, value } = await reader.read();
|
|
492
|
+
if (done)
|
|
493
|
+
break;
|
|
494
|
+
size += value.byteLength;
|
|
495
|
+
if (size > limit) {
|
|
496
|
+
await reader.cancel().catch(() => undefined);
|
|
497
|
+
throw new RequestTooLargeError(limit, name);
|
|
498
|
+
}
|
|
499
|
+
chunks.push(value);
|
|
500
|
+
}
|
|
501
|
+
const all = new Uint8Array(size);
|
|
502
|
+
let at = 0;
|
|
503
|
+
for (const chunk of chunks) {
|
|
504
|
+
all.set(chunk, at);
|
|
505
|
+
at += chunk.byteLength;
|
|
506
|
+
}
|
|
507
|
+
return new TextDecoder().decode(all);
|
|
508
|
+
}
|
|
509
|
+
function positive(value, fallback, field, name) {
|
|
510
|
+
if (value === undefined)
|
|
511
|
+
return fallback;
|
|
512
|
+
if (!Number.isInteger(value) || value <= 0) {
|
|
513
|
+
throw new TypeError(`[hosting] '${name}': ${field} must be a positive whole number of bytes.`);
|
|
514
|
+
}
|
|
515
|
+
return value;
|
|
516
|
+
}
|
|
517
|
+
//# sourceMappingURL=streamHandler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"streamHandler.js","sourceRoot":"","sources":["../../../src/hosting/streamHandler.ts"],"names":[],"mappings":"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"}
|
|
@@ -34,6 +34,7 @@ import type { AnswerAccountsOptions } from './answerAccounts.js';
|
|
|
34
34
|
import type { DoorIdentity } from './identityVerification.js';
|
|
35
35
|
import type { AdmissionPolicy } from './admission.js';
|
|
36
36
|
import type { IngressSink } from './ingressRecord.js';
|
|
37
|
+
import type { RequestSealer } from './requestSealing.js';
|
|
37
38
|
import type { SessionSummary, SessionWireRequest, SessionWireResult } from './sessionWire.js';
|
|
38
39
|
export type { Unsubscribe };
|
|
39
40
|
/**
|
|
@@ -871,6 +872,21 @@ export interface PausedRun {
|
|
|
871
872
|
readonly conversation: AgentRunCheckpoint;
|
|
872
873
|
/** What the run is waiting on, as data. */
|
|
873
874
|
readonly pending: PendingAsk;
|
|
875
|
+
/**
|
|
876
|
+
* What the WIRE that served the pause recorded about it — the ids it handed
|
|
877
|
+
* the caller for the answer — so a later request on that wire is matched to
|
|
878
|
+
* this pause and continued as the same invocation (`streamHandler` keeps the
|
|
879
|
+
* AG-UI adapter's record here). Absent for a pause a door with nothing to
|
|
880
|
+
* remember stored, and opaque to the store and to every other door.
|
|
881
|
+
*/
|
|
882
|
+
readonly wire?: PausedWire;
|
|
883
|
+
}
|
|
884
|
+
/** One wire protocol's own record of a pause it served — see {@link PausedRun.wire}. */
|
|
885
|
+
export interface PausedWire {
|
|
886
|
+
/** The protocol that recorded it: the protocol adapter's `name`. */
|
|
887
|
+
readonly protocol: string;
|
|
888
|
+
/** Plain JSON, the protocol's own; ids and names, never a value of the run. */
|
|
889
|
+
readonly record: unknown;
|
|
874
890
|
}
|
|
875
891
|
/**
|
|
876
892
|
* The question a paused run is waiting on — the part of a pause that is safe to
|
|
@@ -1402,6 +1418,34 @@ export interface StandingAgentBaseOptions<TH extends HostHandle = HostHandle> {
|
|
|
1402
1418
|
* decided against a window none of them had joined.
|
|
1403
1419
|
*/
|
|
1404
1420
|
readonly admission?: AdmissionPolicy;
|
|
1421
|
+
/**
|
|
1422
|
+
* Seal the credential a request carries for its run — a gateway's
|
|
1423
|
+
* per-request token in a header, read by a `requestCredentials` provider
|
|
1424
|
+
* (`agentfootprint/security`) for the tools that declare a `needs` for it.
|
|
1425
|
+
*
|
|
1426
|
+
* Called once per request that RUNS (a turn or an answer — never an
|
|
1427
|
+
* artifact or session op, never a refused request), after the caller is
|
|
1428
|
+
* verified and the session's ownership is checked, with the request's
|
|
1429
|
+
* headers ({@link HostRequest.headers}: `nodeHost` and `httpHost` deliver
|
|
1430
|
+
* them) and nothing else. Return
|
|
1431
|
+
* `requestContext({ secrets })`, or `undefined` for a request that carries
|
|
1432
|
+
* none; the handle goes to THAT request's `run()` / `resume()` only — never
|
|
1433
|
+
* the reply, the stored session or the checkpoint, so a resumed run is
|
|
1434
|
+
* served the RESUMING request's credential. A handle any host was handed
|
|
1435
|
+
* before is refused; a sealer that throws refuses the request in fixed words
|
|
1436
|
+
* (`ERR_REQUEST_NOT_SEALED`, 400) — so decrypt at vend time
|
|
1437
|
+
* (`decodedWith`), not here. The HANDLE never reaches a reply; a tool that
|
|
1438
|
+
* returns the credential's value itself does (`hostFilled` scrubs an echo).
|
|
1439
|
+
*
|
|
1440
|
+
* Unset — the default — no run carries a request, exactly as before.
|
|
1441
|
+
*
|
|
1442
|
+
* @example
|
|
1443
|
+
* sealRequest: ({ headers }) =>
|
|
1444
|
+
* headers['x-crm-token'] === undefined
|
|
1445
|
+
* ? undefined
|
|
1446
|
+
* : requestContext({ secrets: { crmToken: headers['x-crm-token'] } }),
|
|
1447
|
+
*/
|
|
1448
|
+
readonly sealRequest?: RequestSealer;
|
|
1405
1449
|
/**
|
|
1406
1450
|
* Where this door's ingress decisions go (9.32.0) — one record per request,
|
|
1407
1451
|
* including every request that never became a run.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/hosting/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/hosting/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAqyCH;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,IAAI,CAAC;AAuSxC;;;;;GAKG;AACH,MAAM,CAAC,MAAM,gCAAgC,GAAG,CAAC,CAAC;AAElD;iFACiF;AACjF,MAAM,CAAC,MAAM,2BAA2B,GAAG,GAAG,CAAC;AAE/C;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,KAAK,CAAC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* verifiedThreads — the {@link ThreadBinder} that binds a thread to a VERIFIED
|
|
3
|
+
* caller, so the secure binding is the one-line one.
|
|
4
|
+
*
|
|
5
|
+
* A request names a thread; naming one proves nothing. This binder checks the
|
|
6
|
+
* caller's credential with the door's own identity verification
|
|
7
|
+
* (`verifyRequestIdentity` — the bearer token, through your verifier), never a
|
|
8
|
+
* header read as a name, and keys the conversation by WHO
|
|
9
|
+
* plus WHICH: the same thread id from two people is two conversations. The
|
|
10
|
+
* run's `identity` names the verified person, so a stored conversation records
|
|
11
|
+
* its owner and a later request from anyone else is refused as not found.
|
|
12
|
+
*
|
|
13
|
+
* A caller with no credential is REFUSED (401), even at a door that allows
|
|
14
|
+
* anonymous requests elsewhere: a thread with no owner would be anybody's who
|
|
15
|
+
* guessed its id.
|
|
16
|
+
*/
|
|
17
|
+
import { type IdentityVerificationOptions } from './identityVerification.js';
|
|
18
|
+
import type { ThreadBinder } from './protocolAdapter.js';
|
|
19
|
+
/**
|
|
20
|
+
* Bind every thread to the caller `identity` verifies.
|
|
21
|
+
*
|
|
22
|
+
* @example
|
|
23
|
+
* ```ts
|
|
24
|
+
* import { jwksIdentity } from 'agentfootprint/security';
|
|
25
|
+
* const threads = verifiedThreads(jwksIdentity({ jwksUrl, issuer, audience }));
|
|
26
|
+
* streamHandler({ agent, adapter: agUi(), threads, sessions: memorySessions() });
|
|
27
|
+
* ```
|
|
28
|
+
*/
|
|
29
|
+
export declare function verifiedThreads(identity: IdentityVerificationOptions): ThreadBinder;
|