agentfootprint 10.3.1 → 10.4.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 +6 -0
- package/README.md +44 -0
- package/ai-instructions/claude-code/SKILL.md +2 -2
- 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 +265 -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 +204 -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 +71 -0
- package/dist/ag-ui/adapter.js.map +1 -0
- package/dist/ag-ui/framing.js +66 -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 +27 -0
- package/dist/ag-ui/index.js.map +1 -0
- package/dist/ag-ui/request.js +356 -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/core/Agent.js +38 -5
- package/dist/core/Agent.js.map +1 -1
- package/dist/core/RunnerBase.js +16 -2
- package/dist/core/RunnerBase.js.map +1 -1
- package/dist/core/agent/buildAgentChart.js +4 -0
- package/dist/core/agent/buildAgentChart.js.map +1 -1
- package/dist/core/agent/buildDynamicAgentChart.js +4 -0
- package/dist/core/agent/buildDynamicAgentChart.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/routeTurn.js +3 -3
- package/dist/core/agent/stages/routeTurn.js.map +1 -1
- package/dist/core/agent/stages/seed.js +49 -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 +26 -5
- package/dist/core/agent/stages/toolCalls.js.map +1 -1
- package/dist/core/memberRun.js +244 -0
- package/dist/core/memberRun.js.map +1 -0
- package/dist/core/slots/buildToolsSlot.js +1 -1
- package/dist/core/slots/buildToolsSlot.js.map +1 -1
- package/dist/core-flow/Conditional.js +29 -8
- package/dist/core-flow/Conditional.js.map +1 -1
- package/dist/core-flow/Graph.js +38 -13
- package/dist/core-flow/Graph.js.map +1 -1
- package/dist/core-flow/Loop.js +29 -9
- package/dist/core-flow/Loop.js.map +1 -1
- package/dist/core-flow/Parallel.js +35 -14
- package/dist/core-flow/Parallel.js.map +1 -1
- package/dist/core-flow/Sequence.js +29 -8
- package/dist/core-flow/Sequence.js.map +1 -1
- package/dist/core-flow/Workflow.js +34 -10
- 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/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 +260 -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 +176 -0
- package/dist/esm/adapters/mcp/agentcoreRuntime/transport.js +199 -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 +68 -0
- package/dist/esm/ag-ui/adapter.js +67 -0
- package/dist/esm/ag-ui/adapter.js.map +1 -0
- package/dist/esm/ag-ui/framing.d.ts +51 -0
- package/dist/esm/ag-ui/framing.js +62 -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 +17 -0
- package/dist/esm/ag-ui/index.js +17 -0
- package/dist/esm/ag-ui/index.js.map +1 -0
- package/dist/esm/ag-ui/request.d.ts +72 -0
- package/dist/esm/ag-ui/request.js +350 -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/core/Agent.d.ts +2 -0
- package/dist/esm/core/Agent.js +38 -5
- package/dist/esm/core/Agent.js.map +1 -1
- package/dist/esm/core/RunnerBase.js +17 -3
- package/dist/esm/core/RunnerBase.js.map +1 -1
- package/dist/esm/core/agent/buildAgentChart.js +4 -0
- package/dist/esm/core/agent/buildAgentChart.js.map +1 -1
- package/dist/esm/core/agent/buildDynamicAgentChart.js +4 -0
- package/dist/esm/core/agent/buildDynamicAgentChart.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/routeTurn.d.ts +1 -1
- package/dist/esm/core/agent/stages/routeTurn.js +3 -3
- package/dist/esm/core/agent/stages/routeTurn.js.map +1 -1
- package/dist/esm/core/agent/stages/seed.d.ts +11 -1
- package/dist/esm/core/agent/stages/seed.js +49 -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 +11 -1
- package/dist/esm/core/agent/stages/toolCalls.js +26 -5
- package/dist/esm/core/agent/stages/toolCalls.js.map +1 -1
- package/dist/esm/core/agent/types.d.ts +16 -6
- package/dist/esm/core/memberRun.d.ts +132 -0
- package/dist/esm/core/memberRun.js +227 -0
- package/dist/esm/core/memberRun.js.map +1 -0
- package/dist/esm/core/slots/buildToolsSlot.d.ts +1 -1
- package/dist/esm/core/slots/buildToolsSlot.js +1 -1
- package/dist/esm/core/slots/buildToolsSlot.js.map +1 -1
- package/dist/esm/core-flow/Conditional.d.ts +8 -0
- package/dist/esm/core-flow/Conditional.js +29 -8
- package/dist/esm/core-flow/Conditional.js.map +1 -1
- package/dist/esm/core-flow/Graph.js +38 -13
- package/dist/esm/core-flow/Graph.js.map +1 -1
- package/dist/esm/core-flow/Loop.d.ts +8 -0
- package/dist/esm/core-flow/Loop.js +29 -9
- package/dist/esm/core-flow/Loop.js.map +1 -1
- package/dist/esm/core-flow/Parallel.d.ts +8 -0
- package/dist/esm/core-flow/Parallel.js +35 -14
- package/dist/esm/core-flow/Parallel.js.map +1 -1
- package/dist/esm/core-flow/Sequence.d.ts +8 -0
- package/dist/esm/core-flow/Sequence.js +29 -8
- package/dist/esm/core-flow/Sequence.js.map +1 -1
- package/dist/esm/core-flow/Workflow.js +34 -10
- 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/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 +4 -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 +229 -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 +81 -0
- package/dist/esm/hosting/refusalStatus.js.map +1 -0
- package/dist/esm/hosting/standingAgent.js +1 -31
- package/dist/esm/hosting/standingAgent.js.map +1 -1
- package/dist/esm/hosting/stream.d.ts +39 -0
- package/dist/esm/hosting/stream.js +34 -2
- package/dist/esm/hosting/stream.js.map +1 -1
- package/dist/esm/hosting/streamHandler.d.ts +134 -0
- package/dist/esm/hosting/streamHandler.js +493 -0
- package/dist/esm/hosting/streamHandler.js.map +1 -0
- package/dist/esm/hosting/types.d.ts +15 -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/index.d.ts +1 -0
- package/dist/esm/index.js +3 -0
- package/dist/esm/index.js.map +1 -1
- 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/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/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/stages/formatDefault.js +3 -1
- package/dist/esm/memory/stages/formatDefault.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/MapReduce.js +8 -2
- package/dist/esm/patterns/MapReduce.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/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 +84 -0
- package/dist/hosting/refusalStatus.js.map +1 -0
- package/dist/hosting/standingAgent.js +2 -32
- package/dist/hosting/standingAgent.js.map +1 -1
- package/dist/hosting/stream.js +35 -3
- package/dist/hosting/stream.js.map +1 -1
- package/dist/hosting/streamHandler.js +497 -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/index.js +9 -3
- package/dist/index.js.map +1 -1
- package/dist/lib/humanizeLLMError.js +23 -8
- package/dist/lib/humanizeLLMError.js.map +1 -1
- package/dist/mcp/throttleRetry.js +41 -6
- package/dist/mcp/throttleRetry.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/stages/formatDefault.js +3 -1
- package/dist/memory/stages/formatDefault.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/MapReduce.js +8 -2
- package/dist/patterns/MapReduce.js.map +1 -1
- package/dist/tool-providers/index.js +10 -1
- package/dist/tool-providers/index.js.map +1 -1
- package/dist/trace-toolpack/selfExplain.js +25 -2
- package/dist/trace-toolpack/selfExplain.js.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 +177 -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 +69 -0
- package/dist/types/ag-ui/adapter.d.ts.map +1 -0
- package/dist/types/ag-ui/framing.d.ts +52 -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 +18 -0
- package/dist/types/ag-ui/index.d.ts.map +1 -0
- package/dist/types/ag-ui/request.d.ts +73 -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/core/Agent.d.ts +2 -0
- package/dist/types/core/Agent.d.ts.map +1 -1
- 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/buildDynamicAgentChart.d.ts.map +1 -1
- package/dist/types/core/agent/callerIdentity.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 +11 -1
- package/dist/types/core/agent/stages/seed.d.ts.map +1 -1
- package/dist/types/core/agent/stages/toolCalls.d.ts +11 -1
- package/dist/types/core/agent/stages/toolCalls.d.ts.map +1 -1
- package/dist/types/core/agent/types.d.ts +16 -6
- package/dist/types/core/agent/types.d.ts.map +1 -1
- package/dist/types/core/memberRun.d.ts +133 -0
- package/dist/types/core/memberRun.d.ts.map +1 -0
- package/dist/types/core/slots/buildToolsSlot.d.ts +1 -1
- package/dist/types/core/slots/buildToolsSlot.d.ts.map +1 -1
- package/dist/types/core-flow/Conditional.d.ts +8 -0
- package/dist/types/core-flow/Conditional.d.ts.map +1 -1
- package/dist/types/core-flow/Graph.d.ts.map +1 -1
- package/dist/types/core-flow/Loop.d.ts +8 -0
- package/dist/types/core-flow/Loop.d.ts.map +1 -1
- package/dist/types/core-flow/Parallel.d.ts +8 -0
- package/dist/types/core-flow/Parallel.d.ts.map +1 -1
- package/dist/types/core-flow/Sequence.d.ts +8 -0
- package/dist/types/core-flow/Sequence.d.ts.map +1 -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/hosting/httpHost.d.ts.map +1 -1
- package/dist/types/hosting/index.d.ts +4 -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 +230 -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/standingAgent.d.ts.map +1 -1
- package/dist/types/hosting/stream.d.ts +39 -0
- package/dist/types/hosting/stream.d.ts.map +1 -1
- package/dist/types/hosting/streamHandler.d.ts +135 -0
- package/dist/types/hosting/streamHandler.d.ts.map +1 -0
- package/dist/types/hosting/types.d.ts +15 -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/index.d.ts +1 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/lib/humanizeLLMError.d.ts +15 -0
- package/dist/types/lib/humanizeLLMError.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/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/stages/formatDefault.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/MapReduce.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/trace-toolpack/selfExplain.d.ts +8 -0
- package/dist/types/trace-toolpack/selfExplain.d.ts.map +1 -1
- package/package.json +25 -1
package/AGENTS.md
CHANGED
|
@@ -34,9 +34,9 @@ Two more absences: there is **no runtime force-stop governor** (`routeRecorder()
|
|
|
34
34
|
only *labels* a spinning run; `maxIterations` is the hard stop), and there is **no
|
|
35
35
|
automatic re-delivery of an ageing skill body** (the inert `refreshPolicy` was removed in 10.0.0 — use `surfaceMode: 'both'`).
|
|
36
36
|
|
|
37
|
-
## Subpath map —
|
|
37
|
+
## Subpath map — 19 doors
|
|
38
38
|
|
|
39
|
-
`agentfootprint` (main barrel: `Agent`, `LLMCall`, `defineTool`, control flow, patterns, `defineRAG`, pause/resume) · `/providers` (`mock`, `anthropic`, `openai`, `bedrock`, `ollama`, `mcpClient`, embedders — every provider, so bundlers never walk the vendor SDKs from the main barrel) · `/context` (`defineSkill`, `defineFact`, `defineSteering`, `defineInstruction`, `skillGraph`, `skillsFromDir`, the scorers) · `/memory` (`defineMemory`, `InMemoryStore`, `mockEmbedder`, the stores) · `/rag` (stores + loaders; `defineRAG` itself is on the main barrel) · `/observe` (recorders, tracing, `RunStep`) · `/resilience` (provider decorators) · `/reliability` (only the reliability gate's distinct `CircuitOpenError`; rules live on `/resilience`) · `/cache` (prefix-cache strategies, chosen from the provider's declared `promptCaching` by `cacheStrategyFor`) · `/security` · `/hosting` · `/events` · `/skill-graph` (the routing layer with no framework attached, for a host that is not this agent) · `/recipes` (`defineAgentRecipe` — one named, versioned agent setup, applied with `.recipe()`) · `/maps` (`Claim<T>` and the map-engagement vocabulary behind `.maps()`) · `/classify` (the calibrated-classifier port: `Classifier`, `mockClassifier`) · `/ontology` (`defineOntology` — a declared map of the domain, mounted with `.ontology()`) · `/time` (`convertForTool` + `sugarForms` + `granularityMsOf` — the time layer's own answer to whether and how a tool reads a window, for an app outside a run; the steps `convertExact`, `convertWidened`, `periodFactProblem` too). `package.json` `exports` is the complete list; a path not on it does not resolve.
|
|
39
|
+
`agentfootprint` (main barrel: `Agent`, `LLMCall`, `defineTool`, control flow, patterns, `defineRAG`, pause/resume) · `/providers` (`mock`, `anthropic`, `openai`, `bedrock`, `ollama`, `mcpClient`, embedders — every provider, so bundlers never walk the vendor SDKs from the main barrel) · `/context` (`defineSkill`, `defineFact`, `defineSteering`, `defineInstruction`, `skillGraph`, `skillsFromDir`, the scorers) · `/memory` (`defineMemory`, `InMemoryStore`, `mockEmbedder`, the stores) · `/rag` (stores + loaders; `defineRAG` itself is on the main barrel) · `/observe` (recorders, tracing, `RunStep`) · `/resilience` (provider decorators) · `/reliability` (only the reliability gate's distinct `CircuitOpenError`; rules live on `/resilience`) · `/cache` (prefix-cache strategies, chosen from the provider's declared `promptCaching` by `cacheStrategyFor`) · `/security` · `/hosting` · `/events` · `/skill-graph` (the routing layer with no framework attached, for a host that is not this agent) · `/recipes` (`defineAgentRecipe` — one named, versioned agent setup, applied with `.recipe()`) · `/maps` (`Claim<T>` and the map-engagement vocabulary behind `.maps()`) · `/classify` (the calibrated-classifier port: `Classifier`, `mockClassifier`) · `/ontology` (`defineOntology` — a declared map of the domain, mounted with `.ontology()`) · `/time` (`convertForTool` + `sugarForms` + `granularityMsOf` — the time layer's own answer to whether and how a tool reads a window, for an app outside a run; the steps `convertExact`, `convertWidened`, `periodFactProblem` too) · `/ag-ui` (`agUi()` — the AG-UI adapter: `streamHandler({ agent: () => buildAgent(), adapter: agUi(), threads: verifiedThreads(identity), sessions })` from `/hosting` serves agents to any AG-UI frontend, a fresh agent per request, the thread bound to the VERIFIED caller; `agUiSerializer` + `agUiSse` for a transport of your own; framed by the optional peer `@ag-ui/encoder`). `package.json` `exports` is the complete list; a path not on it does not resolve.
|
|
40
40
|
|
|
41
41
|
## Core Concepts
|
|
42
42
|
|
package/CAPABILITIES.md
CHANGED
|
@@ -20,6 +20,10 @@ not in this table, search `src/index.ts` for the nearest noun before writing cod
|
|
|
20
20
|
|
|
21
21
|
| If you are about to build… | It is | Where | Since |
|
|
22
22
|
|---|---|---|---|
|
|
23
|
+
| running the same composition (Sequence / Parallel / Conditional / Loop / workflow / graph, nested) for many users at once without their member agents sharing memory or identity — the caller's identity passed once to the composition and handed to every member at any depth; with none, each run is its own conversation; a mounted agent no run reaches refused by name, never run under a placeholder or its instance's last caller | `Sequence.run({ message, identity })` (and every composition's input) + `MemberIdentityError` | `src/core/memberRun.ts` | 10.4.0 |
|
|
24
|
+
| keeping a memory write out of a managed service's long-term extraction, or filing what it derives under one tenant's namespace — vendor-neutral write options on the `MemoryStore` port (`put`/`putMany`/`putIfVersion`), declared per store and REFUSED BY NAME where not honoured (never dropped), bound by `defineMemory` to every write AND search of a memory (the scope comes only from the run's identity; a per-call scope, an empty one, a search namespace that does not hold it segment for segment, or one that omits the person's actor is refused; `requireNamespaceScope` refuses unscoped access) and checked before the first turn; AgentCore maps them to `CreateEvent`'s `extractionMode: 'SKIP'` and `extractionConfig.namespaceVariables` only when its client and SDK can carry them, checks AgentCore's variable domain first, and ships a one-to-one tenant encoder into its alphabet | `MemoryWriteOptions` (`extraction: 'skip'`, `namespaceScope`) + `MemoryStore.writeOptions` + `defineMemory({ writeOptions, namespaceScope })` + `SearchOptions.namespaceScope` + `UnsupportedMemoryWriteOptionError` + `refuseUnhonouredWriteOptions` + `agentCoreNamespaceValue` (`agentfootprint/memory`) | `src/memory/store/writeOptions.ts` | 10.4.0 |
|
|
25
|
+
| calling an MCP server somebody deployed TO AWS Bedrock AgentCore Runtime (`--protocol MCP`) — through `InvokeAgentRuntime` with SigV4, or a bearer token over the documented HTTPS endpoint (the SDK has no bearer scheme); a fresh runtime session per call by default (`'per-call'` carries no session id, so one client can serve every user) or one per client (`'reuse'` keys each client's connection — its `runtimeSessionId` and the server's `Mcp-Session-Id` — by a handle the transport issues); what the MCP client reads of a failure rewritten from fixed sentences and safe ids (status, a plain error type, a JSON-RPC code), never the service's text (which can quote the signed request); a bearer token vended as a machine token only; the runtime's "Session operation in progress" refusal (JSON-RPC -32005 inside an HTTP 200, which MCP clients never retry; or the API's 409 `RetryableConflictException`) retried with bounded backoff by the SAME loop as the 429 retry, one small decision function — and nothing else re-sent: the SDK client's own retry is off, so a 5xx or a dropped connection is never replayed | `agentCoreRuntimeMcpTransport` + `agentCoreRuntimeUrl` + `AGENTCORE_RUNTIME_SESSION_HEADER` (`agentfootprint/providers`) | `src/adapters/mcp/agentcoreRuntime/` | 10.4.0 |
|
|
26
|
+
| serving agents to AG-UI frontends (CopilotKit, the AG-UI Dojo, an `@ag-ui/client` app) from any framework with no glue code — POST a `RunAgentInput`, stream AG-UI events back; the request is untrusted browser input: only the newest user message is conversation (the page's copy is never read), a system/developer message refused, an answer taken only for the pause the server keeps, frontend tools only by the app's name allow-list with its own contract (they run in the page, no server privilege), `state`/`context` only through the app's validators, no identity/credential/redaction from a request; a fresh runner per request, the thread bound to the caller the app authenticates, the conversation and paused runs kept server-side, one turn per thread, door guard, body ceiling, SSE keep-alive | `streamHandler` + `ProtocolAdapter` + `verifiedThreads` (`agentfootprint/hosting`) + `agUi` (`agentfootprint/ag-ui`) | `src/hosting/streamHandler.ts` | 10.4.0 |
|
|
23
27
|
| checking forced tool choice per model without changing the existing boolean wire declaration; explicit requests refuse before transport, classifiers keep their strict parse alternative, wrappers preserve and fallback pairs intersect | `LLMProvider.supportsForcedToolChoice` + `forcedToolChoiceFor` + `UnsupportedToolChoiceError` (`agentfootprint/providers`) | `src/provider-contract/forcedToolChoice.ts` | 10.1.0 |
|
|
24
28
|
| a typed answer constrained by the PROVIDER'S OWN structured output instead of asked for in prose — the schema sent as Anthropic's `output_config.format`, the agent keeping its tools; one function builds the API-compatible wire copy (objects closed, unsupported constraints moved into the description, recursion / external `$ref` / complex enums / open values / open-keyed maps refused at build by node), the parser still judges; per-model capability with unknown ids read as the newest generation, refused by name at run start and before transport; a `'refusal'` / `'max_tokens'` stop fails the attempt by name even when it parses; `_findings` allowed on the format when the ledger is armed | `.outputSchema(parser, { strategy: 'native', jsonSchema })` + `LLMProvider.carriesNativeOutputSchema` / `supportsNativeOutputSchema` + `nativeOutputSchemaFor` + `UnsupportedNativeOutputError` (`agentfootprint/providers`) + `answerGuarantee: 'native'` + `OutputAttempt.stopReason` | `src/provider-contract/nativeOutputSchema.ts` | 10.3.0 |
|
|
25
29
|
| replaying Anthropic thinking in its original content order; refusing known unsafe active-tool replay, observing each permitted completed-turn omission before sending, and retaining that decision across checkpoints | `LLMMessage.replay` + `UnsafeThinkingReplayError` + `LLMCallHooks.onReplayPrepared` + `agentfootprint.agent.thinking_omitted` | `src/adapters/llm/anthropicThinkingReplay.ts` | 10.1.0 |
|
|
@@ -134,6 +138,8 @@ not in this table, search `src/index.ts` for the nearest noun before writing cod
|
|
|
134
138
|
| a per-request deadline on your gateway provider, so a gateway that never answers (or a stream that goes silent) fails typed instead of hanging the run: bounds the response headers, a `complete()` body and EACH stream read (first chunk, then every gap — a stream that keeps talking is never cut off); a miss aborts the request and raises `reason: 'timeout'`, `retryable: true` (withRetry re-opens it while no chunk reached the caller); the caller's `req.signal` still wins; omitted = the fetch gets exactly `req.signal` as before | `timeoutMs` + `invokeModelGateway` + `InvokeModelGatewayError` (`reason: 'timeout'`) | `src/adapters/llm/InvokeModelGatewayProvider.ts` | 9.130.0 |
|
|
135
139
|
| Replay a saved complete domain-event batch with the same fork grouping and nested drill projection as live run steps | `ingestDomainEvents` + `getSteps` + `clear` | `src/recorders/observability/RunStepRecorder.ts` | 10.0.0 |
|
|
136
140
|
| experimental, not yet validated in real use: additive saved-record shapes for scoped historical verification observations; paired checkpoint readers and writers validate retained evidence and counters without judging old observations again, and native continuation refuses an unarmed evidence carrier; protocol only — no runtime verifier, model declaration parser or answer badge is enabled | `FindingsRow` + optional `AgentRunCheckpoint.claimVerification` | `src/core/` | 10.2.0 |
|
|
141
|
+
| an AG-UI frontend (`@ag-ui/client`, CopilotKit, the AG-UI Dojo) reading an agentfootprint run with no glue code — the run's served events translated into AG-UI 1.0 events: streamed text, tool calls with arguments and results, reasoning, ReAct iterations and compositions as steps, a nested agent (a `Sequence` step, a `Parallel` branch) as a sub-agent with its parent links, a pause as an interrupt, a failure as `RUN_ERROR` in the record's words; `CUSTOM` an allow-list of events with projected fields (`AG_UI_CUSTOM_EVENTS`), reasoning only on request; ids minted from the record's address under the request's run id (unique across a thread when branches reuse a provider's tool-call id); nothing a redaction policy hides on the wire, at any depth; framed by the official `@ag-ui/encoder` (optional peer, loaded only when a framing is built) | `agUiSerializer` + `agUiSse` + `AG_UI_CUSTOM_EVENTS` (`agentfootprint/ag-ui`) + `RunTranslation` / `RunSettlement` (the port, `agentfootprint/hosting`) | `src/ag-ui/` | 10.4.0 |
|
|
142
|
+
| writing a run's Server-Sent Events in a different frame shape — the framing is a strategy: `toSSE({ framing })`, default the frames it always wrote | `SseFraming` + `agentfootprintSse` (`agentfootprint/observe`) | `src/hosting/stream.ts` | 10.4.0 |
|
|
137
143
|
|
|
138
144
|
**Maintaining this table:** a new public capability adds a row, in the same
|
|
139
145
|
change that adds the capability. `test/docs/capability-index.test.ts` fails if a
|
package/README.md
CHANGED
|
@@ -228,6 +228,50 @@ Build the entire app against in-memory mocks with **zero API cost**, then swap r
|
|
|
228
228
|
|
|
229
229
|
The flowchart, recorders, and tests don't change between dev and prod.
|
|
230
230
|
|
|
231
|
+
## Any AG-UI frontend — no glue code
|
|
232
|
+
|
|
233
|
+
AG-UI frontends (CopilotKit, the AG-UI Dojo, any `@ag-ui/client` app) all speak one protocol: POST a `RunAgentInput`, read a stream of typed events. An agentfootprint run is already a stream of typed events, so the only missing piece is the adapter between them — `agUi()`. Hand it to `streamHandler`, a plain `(request) => Promise<Response>` that mounts in Next.js, Hono, Bun, Deno or Workers, and the frontend shows streamed text, tool calls with their results, steps and sub-agents.
|
|
234
|
+
|
|
235
|
+
A browser request is untrusted, so the handler decides nothing on its word: it builds a fresh agent for every request, binds the thread to the caller *your* verifier proves (`verifiedThreads` — a checked bearer token or sign-in, never a header read as a name), keeps the conversation on the server (`sessions`) and takes only the person's newest message from the page. It reads only what the run *serves*, so anything your redaction policy hides never reaches the browser.
|
|
236
|
+
|
|
237
|
+
```ts
|
|
238
|
+
// npm install agentfootprint @ag-ui/core @ag-ui/encoder
|
|
239
|
+
import { Agent } from 'agentfootprint';
|
|
240
|
+
import { mock } from 'agentfootprint/providers';
|
|
241
|
+
import { memorySessions, streamHandler, verifiedThreads } from 'agentfootprint/hosting';
|
|
242
|
+
import { agUi } from 'agentfootprint/ag-ui';
|
|
243
|
+
|
|
244
|
+
// Who is calling — PROVEN, not claimed. A real app: jwksIdentity({ jwksUrl, issuer, audience })
|
|
245
|
+
// from 'agentfootprint/security'. This demo verifier knows one token.
|
|
246
|
+
const verify = async (token: string) => {
|
|
247
|
+
if (token !== 'demo-token-for-ada') throw new Error('unknown token');
|
|
248
|
+
return { userId: 'ada' };
|
|
249
|
+
};
|
|
250
|
+
|
|
251
|
+
const handler = streamHandler({
|
|
252
|
+
// A fresh agent per request — nothing one caller's run leaves behind reaches another.
|
|
253
|
+
agent: () =>
|
|
254
|
+
Agent.create({ provider: mock({ reply: 'Hello from agentfootprint.' }), model: 'mock' })
|
|
255
|
+
.system('Be brief.')
|
|
256
|
+
.build(),
|
|
257
|
+
adapter: agUi(),
|
|
258
|
+
threads: verifiedThreads({ verify }), // no valid token → 401; the thread is the caller's own
|
|
259
|
+
sessions: memorySessions(), // the conversation lives on the server (one turn per thread, per process)
|
|
260
|
+
}); // Next.js: export const POST = handler;
|
|
261
|
+
|
|
262
|
+
// What an AG-UI frontend sends, and what it reads back:
|
|
263
|
+
const response = await handler(
|
|
264
|
+
new Request('http://localhost/agent', {
|
|
265
|
+
method: 'POST',
|
|
266
|
+
headers: { 'content-type': 'application/json', authorization: 'Bearer demo-token-for-ada' },
|
|
267
|
+
body: JSON.stringify({ threadId: 't1', runId: 'r1', messages: [{ id: 'u1', role: 'user', content: 'Hi' }] }),
|
|
268
|
+
}),
|
|
269
|
+
);
|
|
270
|
+
console.log(await response.text()); // data: {"type":"RUN_STARTED",…} … data: {"type":"RUN_FINISHED",…}
|
|
271
|
+
```
|
|
272
|
+
|
|
273
|
+
Two turns with a tool call, end to end: [`examples/deploy/ag-ui.ts`](examples/deploy/ag-ui.ts) · frontend tools, interrupts, what a page may not decide, and what goes out: [AG-UI frontends](https://agentfootprint.dev/docs/infrastructure/ag-ui/).
|
|
274
|
+
|
|
231
275
|
## Building with an AI coding assistant
|
|
232
276
|
|
|
233
277
|
agentfootprint is written to be used — and maintained — by coding agents.
|
|
@@ -34,9 +34,9 @@ Two more absences: there is **no runtime force-stop governor** (`routeRecorder()
|
|
|
34
34
|
only *labels* a spinning run; `maxIterations` is the hard stop), and there is **no
|
|
35
35
|
automatic re-delivery of an ageing skill body** (the inert `refreshPolicy` was removed in 10.0.0 — use `surfaceMode: 'both'`).
|
|
36
36
|
|
|
37
|
-
## Subpath map —
|
|
37
|
+
## Subpath map — 19 doors
|
|
38
38
|
|
|
39
|
-
`agentfootprint` (main barrel: `Agent`, `LLMCall`, `defineTool`, control flow, patterns, `defineRAG`, pause/resume) · `/providers` (`mock`, `anthropic`, `openai`, `bedrock`, `ollama`, `mcpClient`, embedders — every provider, so bundlers never walk the vendor SDKs from the main barrel) · `/context` (`defineSkill`, `defineFact`, `defineSteering`, `defineInstruction`, `skillGraph`, `skillsFromDir`, the scorers) · `/memory` (`defineMemory`, `InMemoryStore`, `mockEmbedder`, the stores) · `/rag` (stores + loaders; `defineRAG` itself is on the main barrel) · `/observe` (recorders, tracing, `RunStep`) · `/resilience` (provider decorators) · `/reliability` (only the reliability gate's distinct `CircuitOpenError`; rules live on `/resilience`) · `/cache` (prefix-cache strategies, chosen from the provider's declared `promptCaching` by `cacheStrategyFor`) · `/security` · `/hosting` · `/events` · `/skill-graph` (the routing layer with no framework attached, for a host that is not this agent) · `/recipes` (`defineAgentRecipe` — one named, versioned agent setup, applied with `.recipe()`) · `/maps` (`Claim<T>` and the map-engagement vocabulary behind `.maps()`) · `/classify` (the calibrated-classifier port: `Classifier`, `mockClassifier`) · `/ontology` (`defineOntology` — a declared map of the domain, mounted with `.ontology()`) · `/time` (`convertForTool` + `sugarForms` + `granularityMsOf` — the time layer's own answer to whether and how a tool reads a window, for an app outside a run; the steps `convertExact`, `convertWidened`, `periodFactProblem` too). `package.json` `exports` is the complete list; a path not on it does not resolve.
|
|
39
|
+
`agentfootprint` (main barrel: `Agent`, `LLMCall`, `defineTool`, control flow, patterns, `defineRAG`, pause/resume) · `/providers` (`mock`, `anthropic`, `openai`, `bedrock`, `ollama`, `mcpClient`, embedders — every provider, so bundlers never walk the vendor SDKs from the main barrel) · `/context` (`defineSkill`, `defineFact`, `defineSteering`, `defineInstruction`, `skillGraph`, `skillsFromDir`, the scorers) · `/memory` (`defineMemory`, `InMemoryStore`, `mockEmbedder`, the stores) · `/rag` (stores + loaders; `defineRAG` itself is on the main barrel) · `/observe` (recorders, tracing, `RunStep`) · `/resilience` (provider decorators) · `/reliability` (only the reliability gate's distinct `CircuitOpenError`; rules live on `/resilience`) · `/cache` (prefix-cache strategies, chosen from the provider's declared `promptCaching` by `cacheStrategyFor`) · `/security` · `/hosting` · `/events` · `/skill-graph` (the routing layer with no framework attached, for a host that is not this agent) · `/recipes` (`defineAgentRecipe` — one named, versioned agent setup, applied with `.recipe()`) · `/maps` (`Claim<T>` and the map-engagement vocabulary behind `.maps()`) · `/classify` (the calibrated-classifier port: `Classifier`, `mockClassifier`) · `/ontology` (`defineOntology` — a declared map of the domain, mounted with `.ontology()`) · `/time` (`convertForTool` + `sugarForms` + `granularityMsOf` — the time layer's own answer to whether and how a tool reads a window, for an app outside a run; the steps `convertExact`, `convertWidened`, `periodFactProblem` too) · `/ag-ui` (`agUi()` — the AG-UI adapter: `streamHandler({ agent: () => buildAgent(), adapter: agUi(), threads: verifiedThreads(identity), sessions })` from `/hosting` serves agents to any AG-UI frontend, a fresh agent per request, the thread bound to the VERIFIED caller; `agUiSerializer` + `agUiSse` for a transport of your own; framed by the optional peer `@ag-ui/encoder`). `package.json` `exports` is the complete list; a path not on it does not resolve.
|
|
40
40
|
|
|
41
41
|
## Core Concepts
|
|
42
42
|
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* errorType — the error type an AWS REST answer names in its
|
|
4
|
+
* `x-amzn-errortype` header, trimmed to the bare name.
|
|
5
|
+
*
|
|
6
|
+
* The header may carry a `:` suffix (a URL) or a `namespace#` prefix; both are
|
|
7
|
+
* removed, so `aws.protocols#AccessDeniedException:http://…` reads
|
|
8
|
+
* `AccessDeniedException` — the name the SDK gives the same exception.
|
|
9
|
+
*
|
|
10
|
+
* Pattern: pure helper. Role: outer ring, vendor fact.
|
|
11
|
+
*/
|
|
12
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
+
exports.awsErrorType = void 0;
|
|
14
|
+
/** The bare error type, or `undefined` when the answer names none. */
|
|
15
|
+
function awsErrorType(headers) {
|
|
16
|
+
const raw = headers.get('x-amzn-errortype');
|
|
17
|
+
if (raw === null)
|
|
18
|
+
return undefined;
|
|
19
|
+
const withoutSuffix = raw.split(':')[0] ?? '';
|
|
20
|
+
const name = withoutSuffix.slice(withoutSuffix.lastIndexOf('#') + 1).trim();
|
|
21
|
+
return name === '' ? undefined : name;
|
|
22
|
+
}
|
|
23
|
+
exports.awsErrorType = awsErrorType;
|
|
24
|
+
//# sourceMappingURL=errorType.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errorType.js","sourceRoot":"","sources":["../../../../src/adapters/mcp/agentcoreRuntime/errorType.ts"],"names":[],"mappings":";AAAA;;;;;;;;;GASG;;;AAEH,sEAAsE;AACtE,SAAgB,YAAY,CAAC,OAAgB;IAC3C,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;IAC5C,IAAI,GAAG,KAAK,IAAI;QAAE,OAAO,SAAS,CAAC;IACnC,MAAM,aAAa,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAC9C,MAAM,IAAI,GAAG,aAAa,CAAC,KAAK,CAAC,aAAa,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAC5E,OAAO,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC;AACxC,CAAC;AAND,oCAMC"}
|
|
@@ -0,0 +1,265 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* invoke — the SigV4 auth strategy: Streamable HTTP, carried by the AWS SDK's
|
|
4
|
+
* `InvokeAgentRuntime`.
|
|
5
|
+
*
|
|
6
|
+
* The MCP client speaks HTTP — a POST, a few headers, a JSON body — and the SDK
|
|
7
|
+
* operation carries exactly that, field for field. This file is the mapping and
|
|
8
|
+
* nothing else. Every name in it is the SDK's own (`InvokeAgentRuntimeRequest`
|
|
9
|
+
* / `InvokeAgentRuntimeResponse` in `@aws-sdk/client-bedrock-agentcore`), read
|
|
10
|
+
* off an installed package rather than recalled:
|
|
11
|
+
*
|
|
12
|
+
* request InvokeAgentRuntimeRequest
|
|
13
|
+
* ───────────────────────────────────────────── ────────────────────────
|
|
14
|
+
* body payload (bytes)
|
|
15
|
+
* content-type contentType
|
|
16
|
+
* accept accept
|
|
17
|
+
* mcp-session-id mcpSessionId
|
|
18
|
+
* mcp-protocol-version mcpProtocolVersion
|
|
19
|
+
* x-amzn-bedrock-agentcore-runtime-session-id runtimeSessionId
|
|
20
|
+
* (the runtime, from options) agentRuntimeArn, qualifier, accountId
|
|
21
|
+
*
|
|
22
|
+
* InvokeAgentRuntimeResponse response
|
|
23
|
+
* ───────────────────────────────────────────── ────────────────────────
|
|
24
|
+
* statusCode status
|
|
25
|
+
* contentType content-type
|
|
26
|
+
* mcpSessionId mcp-session-id
|
|
27
|
+
* mcpProtocolVersion mcp-protocol-version
|
|
28
|
+
* runtimeSessionId x-amzn-bedrock-agentcore-runtime-session-id
|
|
29
|
+
* response (a stream) body
|
|
30
|
+
*
|
|
31
|
+
* The signature is the SDK's: `send` signs every attempt with the client's own
|
|
32
|
+
* credentials, so no credential passes through this file.
|
|
33
|
+
*
|
|
34
|
+
* ── The SDK's own retry is OFF ───────────────────────────────────────────────
|
|
35
|
+
* The client built here has `maxAttempts: 1`. The SDK's standard policy would
|
|
36
|
+
* re-send a `tools/call` after a 5xx or a dropped connection — a call that may
|
|
37
|
+
* already have run, in the same pinned session — which is the one thing a retry
|
|
38
|
+
* here must never do. Every retry goes through the transport's single loop
|
|
39
|
+
* instead, which repeats only refusals the service made before running
|
|
40
|
+
* anything. A `client` you pass keeps ITS policy: build it with
|
|
41
|
+
* `maxAttempts: 1` for the same guarantee.
|
|
42
|
+
*
|
|
43
|
+
* ── A service exception is an ANSWER ─────────────────────────────────────────
|
|
44
|
+
* When the service answers with a non-2xx status, the SDK throws instead of
|
|
45
|
+
* returning — `RetryableConflictException` (409), `ThrottlingException` (429),
|
|
46
|
+
* or a hosted server's own 404 as `Unknown`. Each is handed on as the `Response`
|
|
47
|
+
* an HTTPS caller would have read: its status, its error type in
|
|
48
|
+
* `x-amzn-errortype`, `retry-after` when the service sent one, and as the body
|
|
49
|
+
* the server's own JSON-RPC error when it sent one (the SDK spreads a body it
|
|
50
|
+
* cannot model onto the exception) — never the exception's message, which can
|
|
51
|
+
* quote the signed request. What the MCP client may read of it is decided
|
|
52
|
+
* once, by `safeAnswer.ts`. So the transport's retry decision sees the 409,
|
|
53
|
+
* `mcpClient`'s 429 retry sees the 429, and the MCP client reports the
|
|
54
|
+
* status. A failure with no status — the
|
|
55
|
+
* network, an abort — never reached the service as an answer, and is thrown as
|
|
56
|
+
* it is.
|
|
57
|
+
*
|
|
58
|
+
* ── What the operation cannot carry ──────────────────────────────────────────
|
|
59
|
+
* Any method but POST. A GET (the optional server-message stream) and a DELETE
|
|
60
|
+
* (ending a session) are answered HERE with 405, which the MCP Streamable HTTP
|
|
61
|
+
* spec defines as "not offered" for both, so the MCP client carries on. And any
|
|
62
|
+
* header the operation does not model — it has no field to put one in.
|
|
63
|
+
*
|
|
64
|
+
* Pattern: Adapter (fetch ↔ command). Role: outer ring, lazy AWS peer dep.
|
|
65
|
+
*/
|
|
66
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
67
|
+
exports.invokeFetch = exports.invokeSdk = void 0;
|
|
68
|
+
const lazyRequire_js_1 = require("../../../lib/lazyRequire.js");
|
|
69
|
+
const sdkLoadFailure_js_1 = require("../../../mcp/sdkLoadFailure.js");
|
|
70
|
+
const session_js_1 = require("./session.js");
|
|
71
|
+
const MCP_PROTOCOL_VERSION_HEADER = 'Mcp-Protocol-Version';
|
|
72
|
+
const SDK_PACKAGE = '@aws-sdk/client-bedrock-agentcore';
|
|
73
|
+
/**
|
|
74
|
+
* The client and the command constructor this strategy sends with.
|
|
75
|
+
*
|
|
76
|
+
* Loaded when the transport is BUILT, not at the first call, so a missing peer
|
|
77
|
+
* dependency is refused where the transport is declared rather than mid-run.
|
|
78
|
+
*
|
|
79
|
+
* @throws when the SDK cannot be loaded, or when it lacks what is needed.
|
|
80
|
+
*/
|
|
81
|
+
function invokeSdk(options) {
|
|
82
|
+
const mod = options.sdk ?? loadSdk();
|
|
83
|
+
const Command = mod.InvokeAgentRuntimeCommand;
|
|
84
|
+
if (!Command) {
|
|
85
|
+
throw new Error(`agentCoreRuntimeMcpTransport: \`${SDK_PACKAGE}\` is installed but has no ` +
|
|
86
|
+
'`InvokeAgentRuntimeCommand`. Upgrade the SDK.');
|
|
87
|
+
}
|
|
88
|
+
if (options.client)
|
|
89
|
+
return { client: options.client, InvokeAgentRuntimeCommand: Command };
|
|
90
|
+
if (!mod.BedrockAgentCoreClient) {
|
|
91
|
+
throw new Error(`agentCoreRuntimeMcpTransport: \`${SDK_PACKAGE}\` is installed but has no ` +
|
|
92
|
+
'`BedrockAgentCoreClient`. Upgrade the SDK.');
|
|
93
|
+
}
|
|
94
|
+
return {
|
|
95
|
+
// The SDK's own retry OFF: it would re-send work that may have run.
|
|
96
|
+
client: new mod.BedrockAgentCoreClient({ region: options.region, maxAttempts: 1 }),
|
|
97
|
+
InvokeAgentRuntimeCommand: Command,
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
exports.invokeSdk = invokeSdk;
|
|
101
|
+
function loadSdk() {
|
|
102
|
+
try {
|
|
103
|
+
return (0, lazyRequire_js_1.lazyRequire)('@aws-sdk/client-bedrock-agentcore');
|
|
104
|
+
}
|
|
105
|
+
catch (err) {
|
|
106
|
+
throw new Error((0, sdkLoadFailure_js_1.sdkLoadFailure)(err, {
|
|
107
|
+
notInstalled: `agentCoreRuntimeMcpTransport (auth: 'sigv4') requires the \`${SDK_PACKAGE}\` peer ` +
|
|
108
|
+
'dependency.\n' +
|
|
109
|
+
` Install: npm install ${SDK_PACKAGE}\n` +
|
|
110
|
+
' Or use `auth: { bearer }` for a runtime with OAuth inbound auth — that path is plain\n' +
|
|
111
|
+
' HTTPS and loads no AWS SDK.',
|
|
112
|
+
caller: 'agentCoreRuntimeMcpTransport',
|
|
113
|
+
specifier: SDK_PACKAGE,
|
|
114
|
+
instead: 'SigV4 signs with AWS credentials, which belong on a server. From a browser, use ' +
|
|
115
|
+
'`auth: { bearer }` — plain HTTPS, no AWS SDK.',
|
|
116
|
+
}));
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
/** Statuses whose response may not carry a body, by the Fetch standard. */
|
|
120
|
+
const NULL_BODY_STATUS = new Set([204, 205, 304]);
|
|
121
|
+
/**
|
|
122
|
+
* A `fetch` that sends each request as one `InvokeAgentRuntimeCommand`.
|
|
123
|
+
*
|
|
124
|
+
* The URL the MCP client passes is ignored on purpose: it names the endpoint for
|
|
125
|
+
* reports and errors, while the invocation goes to `target` — the SDK resolves
|
|
126
|
+
* the endpoint itself, from the client's region.
|
|
127
|
+
*/
|
|
128
|
+
function invokeFetch(target, client, InvokeAgentRuntimeCommand) {
|
|
129
|
+
return async (_input, init) => {
|
|
130
|
+
const method = (init?.method ?? 'GET').toUpperCase();
|
|
131
|
+
if (method !== 'POST') {
|
|
132
|
+
return new Response(null, { status: 405, statusText: 'Method Not Allowed' });
|
|
133
|
+
}
|
|
134
|
+
const headers = new Headers(init?.headers);
|
|
135
|
+
const command = new InvokeAgentRuntimeCommand({
|
|
136
|
+
agentRuntimeArn: target.agentRuntimeArn,
|
|
137
|
+
...(target.qualifier !== undefined && { qualifier: target.qualifier }),
|
|
138
|
+
...(target.accountId !== undefined && { accountId: target.accountId }),
|
|
139
|
+
payload: payloadOf(init?.body),
|
|
140
|
+
...field('contentType', headers.get('content-type')),
|
|
141
|
+
...field('accept', headers.get('accept')),
|
|
142
|
+
...field('mcpSessionId', headers.get(session_js_1.MCP_SESSION_HEADER)),
|
|
143
|
+
...field('mcpProtocolVersion', headers.get(MCP_PROTOCOL_VERSION_HEADER)),
|
|
144
|
+
...field('runtimeSessionId', headers.get(session_js_1.AGENTCORE_RUNTIME_SESSION_HEADER)),
|
|
145
|
+
});
|
|
146
|
+
let answer;
|
|
147
|
+
try {
|
|
148
|
+
answer = ((await client.send(command, init?.signal ? { abortSignal: init.signal } : undefined)) ?? {});
|
|
149
|
+
}
|
|
150
|
+
catch (err) {
|
|
151
|
+
const answered = serviceAnswerOf(err);
|
|
152
|
+
if (answered === undefined)
|
|
153
|
+
throw err;
|
|
154
|
+
return answered;
|
|
155
|
+
}
|
|
156
|
+
return responseOf(answer);
|
|
157
|
+
};
|
|
158
|
+
}
|
|
159
|
+
exports.invokeFetch = invokeFetch;
|
|
160
|
+
/**
|
|
161
|
+
* An SDK service exception as the `Response` the service sent: its status, its
|
|
162
|
+
* error type, its `retry-after`. `undefined` for anything that carries no
|
|
163
|
+
* status — that failure never came back from the service as an answer.
|
|
164
|
+
*/
|
|
165
|
+
function serviceAnswerOf(err) {
|
|
166
|
+
if (err === null || typeof err !== 'object')
|
|
167
|
+
return undefined;
|
|
168
|
+
const failure = err;
|
|
169
|
+
const status = failure.$metadata?.httpStatusCode;
|
|
170
|
+
if (typeof status !== 'number' || !Number.isInteger(status) || status < 400 || status > 599) {
|
|
171
|
+
return undefined;
|
|
172
|
+
}
|
|
173
|
+
const headers = new Headers({ 'content-type': 'application/json' });
|
|
174
|
+
if (typeof failure.name === 'string' && failure.name !== '') {
|
|
175
|
+
headers.set('x-amzn-errortype', failure.name);
|
|
176
|
+
}
|
|
177
|
+
const retryAfter = failure.$response?.headers?.['retry-after'];
|
|
178
|
+
if (typeof retryAfter === 'string')
|
|
179
|
+
headers.set('retry-after', retryAfter);
|
|
180
|
+
// The server's own JSON-RPC error when it sent one (a stateful server's 404
|
|
181
|
+
// "Session not found"), for its code. The exception's message is never put
|
|
182
|
+
// in the answer: it can quote the signed request. What the client reads of
|
|
183
|
+
// either is decided by `safeAnswer.ts`, outside the retry.
|
|
184
|
+
const error = failure.error;
|
|
185
|
+
const body = error !== null && typeof error === 'object' && !Array.isArray(error)
|
|
186
|
+
? { jsonrpc: failure.jsonrpc ?? '2.0', id: failure.id ?? null, error }
|
|
187
|
+
: {};
|
|
188
|
+
return new Response(JSON.stringify(body), { status, headers });
|
|
189
|
+
}
|
|
190
|
+
/** An optional request field: present only when the header was. */
|
|
191
|
+
function field(name, value) {
|
|
192
|
+
return value === null || value === '' ? {} : { [name]: value };
|
|
193
|
+
}
|
|
194
|
+
/**
|
|
195
|
+
* The request body as the bytes `payload` takes. The MCP client always sends a
|
|
196
|
+
* JSON string; the other forms are accepted because they are bytes already.
|
|
197
|
+
* A stream or a form is refused by name — re-reading one is not this file's to
|
|
198
|
+
* do, and dropping it would send an empty request.
|
|
199
|
+
*/
|
|
200
|
+
function payloadOf(body) {
|
|
201
|
+
if (body === undefined || body === null)
|
|
202
|
+
return new Uint8Array();
|
|
203
|
+
if (typeof body === 'string')
|
|
204
|
+
return new TextEncoder().encode(body);
|
|
205
|
+
if (body instanceof Uint8Array)
|
|
206
|
+
return body;
|
|
207
|
+
if (body instanceof ArrayBuffer)
|
|
208
|
+
return new Uint8Array(body);
|
|
209
|
+
if (ArrayBuffer.isView(body)) {
|
|
210
|
+
return new Uint8Array(body.buffer, body.byteOffset, body.byteLength);
|
|
211
|
+
}
|
|
212
|
+
throw new TypeError('agentCoreRuntimeMcpTransport: a request body must be a string or bytes to travel as ' +
|
|
213
|
+
"InvokeAgentRuntime's `payload`; got a stream or form body, which this transport does " +
|
|
214
|
+
'not read.');
|
|
215
|
+
}
|
|
216
|
+
/** The SDK's answer as the `Response` the MCP client reads. */
|
|
217
|
+
async function responseOf(answer) {
|
|
218
|
+
const status = answer.statusCode ?? 200;
|
|
219
|
+
const headers = new Headers();
|
|
220
|
+
if (answer.contentType)
|
|
221
|
+
headers.set('content-type', answer.contentType);
|
|
222
|
+
if (answer.mcpSessionId)
|
|
223
|
+
headers.set(session_js_1.MCP_SESSION_HEADER, answer.mcpSessionId);
|
|
224
|
+
if (answer.mcpProtocolVersion)
|
|
225
|
+
headers.set(MCP_PROTOCOL_VERSION_HEADER, answer.mcpProtocolVersion);
|
|
226
|
+
if (answer.runtimeSessionId) {
|
|
227
|
+
headers.set(session_js_1.AGENTCORE_RUNTIME_SESSION_HEADER, answer.runtimeSessionId);
|
|
228
|
+
}
|
|
229
|
+
if (NULL_BODY_STATUS.has(status)) {
|
|
230
|
+
await release(answer.response);
|
|
231
|
+
return new Response(null, { status, headers });
|
|
232
|
+
}
|
|
233
|
+
return new Response(await bodyOf(answer.response), { status, headers });
|
|
234
|
+
}
|
|
235
|
+
/**
|
|
236
|
+
* The SDK's streaming body, kept streaming where it can be: an SSE reply then
|
|
237
|
+
* reaches the MCP client event by event, as it would over plain HTTP.
|
|
238
|
+
*/
|
|
239
|
+
async function bodyOf(stream) {
|
|
240
|
+
if (stream === undefined || stream === null)
|
|
241
|
+
return null;
|
|
242
|
+
if (typeof stream === 'string' || stream instanceof Uint8Array)
|
|
243
|
+
return stream;
|
|
244
|
+
const sdkStream = stream;
|
|
245
|
+
if (typeof sdkStream.transformToWebStream === 'function') {
|
|
246
|
+
return sdkStream.transformToWebStream();
|
|
247
|
+
}
|
|
248
|
+
if (typeof sdkStream.transformToByteArray === 'function') {
|
|
249
|
+
return sdkStream.transformToByteArray();
|
|
250
|
+
}
|
|
251
|
+
throw new TypeError('agentCoreRuntimeMcpTransport: InvokeAgentRuntime answered with a `response` that is ' +
|
|
252
|
+
'neither bytes nor an SDK stream (no transformToWebStream / transformToByteArray). ' +
|
|
253
|
+
'Upgrade @aws-sdk/client-bedrock-agentcore.');
|
|
254
|
+
}
|
|
255
|
+
/** Drain a body nobody will read, so the SDK's socket is released. Never throws. */
|
|
256
|
+
async function release(stream) {
|
|
257
|
+
try {
|
|
258
|
+
const sdkStream = stream;
|
|
259
|
+
await sdkStream?.transformToByteArray?.();
|
|
260
|
+
}
|
|
261
|
+
catch {
|
|
262
|
+
// A body that will not drain is not worth failing a delivered reply over.
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
//# sourceMappingURL=invoke.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"invoke.js","sourceRoot":"","sources":["../../../../src/adapters/mcp/agentcoreRuntime/invoke.ts"],"names":[],"mappings":"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"}
|