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
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* sessionBusy — the retry strategy: AgentCore Runtime's "session operation in
|
|
4
|
+
* progress", recognised. One small function, on purpose.
|
|
5
|
+
*
|
|
6
|
+
* ── What the service says, in its own words ──────────────────────────────────
|
|
7
|
+
* The AgentCore Runtime MCP protocol contract maps the runtime's exceptions onto
|
|
8
|
+
* JSON-RPC errors, and exactly one of them is retryable by design:
|
|
9
|
+
*
|
|
10
|
+
* -32005 RetryableConflictException HTTP 200 "Session operation in progress, please retry"
|
|
11
|
+
*
|
|
12
|
+
* returned "when a second operation targets a session while the service is
|
|
13
|
+
* provisioning or tearing down that session. Because MCP returns HTTP 200 with
|
|
14
|
+
* the error in the JSON-RPC body, the caller must inspect the response body and
|
|
15
|
+
* retry with short exponential backoff — MCP clients do not auto-retry it."
|
|
16
|
+
*
|
|
17
|
+
* So no status code says it, and the MCP SDK will not wait for it: left alone,
|
|
18
|
+
* it reaches the model as a failed tool call, a moment after the session it was
|
|
19
|
+
* waiting for came up.
|
|
20
|
+
*
|
|
21
|
+
* ── Why asking again is safe ─────────────────────────────────────────────────
|
|
22
|
+
* The refusal is the PLATFORM's, about the session, made before the request
|
|
23
|
+
* reached the MCP server: nothing ran. That is the license a 429 holds, and the
|
|
24
|
+
* only one `retryingFetchWhen` accepts (see `mcp/throttleRetry.ts` ·
|
|
25
|
+
* `RetryDecision`).
|
|
26
|
+
*
|
|
27
|
+
* ── What it must NOT match ───────────────────────────────────────────────────
|
|
28
|
+
* `ConflictException` shares the code -32005 ("Resource conflict - Resource
|
|
29
|
+
* already exists") and is not retryable; the contract tells the two apart only
|
|
30
|
+
* by the message, so the message is part of the match. Anything else — another
|
|
31
|
+
* status, an SSE stream, a batch reply, a body that is not JSON — is delivered
|
|
32
|
+
* as it is.
|
|
33
|
+
*
|
|
34
|
+
* ── The API-layer form ───────────────────────────────────────────────────────
|
|
35
|
+
* `InvokeAgentRuntime`'s API reference gives the same exception as an HTTP 409,
|
|
36
|
+
* its type in the `x-amzn-errortype` header (the REST protocol's error-type
|
|
37
|
+
* header; the SigV4 strategy rebuilds exactly that from the SDK's exception,
|
|
38
|
+
* because the transport's SDK client has its own retry off). It is the same
|
|
39
|
+
* refusal, so it is the same decision — matched by the type, never by the 409
|
|
40
|
+
* alone.
|
|
41
|
+
*
|
|
42
|
+
* Pattern: Strategy (a `RetryDecision`). Role: outer ring, vendor fact.
|
|
43
|
+
*/
|
|
44
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
45
|
+
exports.isSessionBusyReply = exports.sessionBusy = exports.SESSION_BUSY_CODE = void 0;
|
|
46
|
+
const errorType_js_1 = require("./errorType.js");
|
|
47
|
+
/** The JSON-RPC error code the contract gives `RetryableConflictException`. */
|
|
48
|
+
exports.SESSION_BUSY_CODE = -32005;
|
|
49
|
+
/** The exception's name, as the API layer and the SDK both spell it. */
|
|
50
|
+
const SESSION_BUSY_TYPE = 'RetryableConflictException';
|
|
51
|
+
/**
|
|
52
|
+
* How the contract's message reads. Matched case-insensitively and as a
|
|
53
|
+
* fragment, so a trailing "please retry" reworded does not stop the match;
|
|
54
|
+
* the code is still required, which is what keeps `ConflictException` out.
|
|
55
|
+
*/
|
|
56
|
+
const SESSION_BUSY_MESSAGE = /session operation in progress/i;
|
|
57
|
+
/**
|
|
58
|
+
* Is this response AgentCore Runtime's session-busy refusal — in either form:
|
|
59
|
+
* the MCP contract's HTTP 200 with JSON-RPC -32005, or the API's 409
|
|
60
|
+
* `RetryableConflictException`?
|
|
61
|
+
*
|
|
62
|
+
* Reads a CLONE of the body, so the response is delivered intact either way.
|
|
63
|
+
* Answers `{}` (wait the loop's own backoff, then send the same request again)
|
|
64
|
+
* or `undefined` (deliver it).
|
|
65
|
+
*/
|
|
66
|
+
async function sessionBusy(response) {
|
|
67
|
+
if (response.status === 409) {
|
|
68
|
+
return (0, errorType_js_1.awsErrorType)(response.headers) === SESSION_BUSY_TYPE ? {} : undefined;
|
|
69
|
+
}
|
|
70
|
+
if (response.status !== 200)
|
|
71
|
+
return undefined;
|
|
72
|
+
if (!isJson(response.headers.get('content-type')))
|
|
73
|
+
return undefined;
|
|
74
|
+
let text;
|
|
75
|
+
try {
|
|
76
|
+
text = await response.clone().text();
|
|
77
|
+
}
|
|
78
|
+
catch {
|
|
79
|
+
return undefined;
|
|
80
|
+
}
|
|
81
|
+
// A cheap gate before parsing: a large tool result does not contain the
|
|
82
|
+
// code's digits often, and it is the common case.
|
|
83
|
+
if (!text.includes(String(exports.SESSION_BUSY_CODE)))
|
|
84
|
+
return undefined;
|
|
85
|
+
let body;
|
|
86
|
+
try {
|
|
87
|
+
body = JSON.parse(text);
|
|
88
|
+
}
|
|
89
|
+
catch {
|
|
90
|
+
return undefined;
|
|
91
|
+
}
|
|
92
|
+
return isSessionBusyReply(body) ? {} : undefined;
|
|
93
|
+
}
|
|
94
|
+
exports.sessionBusy = sessionBusy;
|
|
95
|
+
/**
|
|
96
|
+
* The match itself, over a parsed body: ONE JSON-RPC reply whose error carries
|
|
97
|
+
* the contract's code and message. A batch is never retried whole — some of
|
|
98
|
+
* its replies may be the record of work that ran.
|
|
99
|
+
*/
|
|
100
|
+
function isSessionBusyReply(body) {
|
|
101
|
+
if (body === null || typeof body !== 'object' || Array.isArray(body))
|
|
102
|
+
return false;
|
|
103
|
+
const error = body.error;
|
|
104
|
+
if (error === null || typeof error !== 'object')
|
|
105
|
+
return false;
|
|
106
|
+
const { code, message } = error;
|
|
107
|
+
return (code === exports.SESSION_BUSY_CODE && typeof message === 'string' && SESSION_BUSY_MESSAGE.test(message));
|
|
108
|
+
}
|
|
109
|
+
exports.isSessionBusyReply = isSessionBusyReply;
|
|
110
|
+
/** `application/json`, with or without parameters, in any case. */
|
|
111
|
+
function isJson(contentType) {
|
|
112
|
+
if (contentType === null)
|
|
113
|
+
return false;
|
|
114
|
+
const essence = contentType.split(';')[0]?.trim().toLowerCase();
|
|
115
|
+
return essence === 'application/json';
|
|
116
|
+
}
|
|
117
|
+
//# sourceMappingURL=sessionBusy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sessionBusy.js","sourceRoot":"","sources":["../../../../src/adapters/mcp/agentcoreRuntime/sessionBusy.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;;;AAGH,iDAA8C;AAE9C,+EAA+E;AAClE,QAAA,iBAAiB,GAAG,CAAC,KAAK,CAAC;AAExC,wEAAwE;AACxE,MAAM,iBAAiB,GAAG,4BAA4B,CAAC;AAEvD;;;;GAIG;AACH,MAAM,oBAAoB,GAAG,gCAAgC,CAAC;AAE9D;;;;;;;;GAQG;AACI,KAAK,UAAU,WAAW,CAAC,QAAkB;IAClD,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;QAC5B,OAAO,IAAA,2BAAY,EAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,iBAAiB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;IAC/E,CAAC;IACD,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG;QAAE,OAAO,SAAS,CAAC;IAC9C,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QAAE,OAAO,SAAS,CAAC;IACpE,IAAI,IAAY,CAAC;IACjB,IAAI,CAAC;QACH,IAAI,GAAG,MAAM,QAAQ,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,CAAC;IACvC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,wEAAwE;IACxE,kDAAkD;IAClD,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,yBAAiB,CAAC,CAAC;QAAE,OAAO,SAAS,CAAC;IAChE,IAAI,IAAa,CAAC;IAClB,IAAI,CAAC;QACH,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;AACnD,CAAC;AAtBD,kCAsBC;AAED;;;;GAIG;AACH,SAAgB,kBAAkB,CAAC,IAAa;IAC9C,IAAI,IAAI,KAAK,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;QAAE,OAAO,KAAK,CAAC;IACnF,MAAM,KAAK,GAAI,IAAqC,CAAC,KAAK,CAAC;IAC3D,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC9D,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,KAAgE,CAAC;IAC3F,OAAO,CACL,IAAI,KAAK,yBAAiB,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,oBAAoB,CAAC,IAAI,CAAC,OAAO,CAAC,CAChG,CAAC;AACJ,CAAC;AARD,gDAQC;AAED,mEAAmE;AACnE,SAAS,MAAM,CAAC,WAA0B;IACxC,IAAI,WAAW,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC;IACvC,MAAM,OAAO,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAChE,OAAO,OAAO,KAAK,kBAAkB,CAAC;AACxC,CAAC"}
|
|
@@ -0,0 +1,220 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* strictJson — ONE reading of a JSON text, with every ambiguity refused.
|
|
4
|
+
*
|
|
5
|
+
* `JSON.parse` resolves ambiguity silently: a duplicated key keeps its LAST
|
|
6
|
+
* value, while another reader may keep the first. A check that reads a body one
|
|
7
|
+
* way and a consumer that reads it another is a parser differential — a crafted
|
|
8
|
+
* answer passes the check and is used as something else. So the transport reads
|
|
9
|
+
* an answer once, here, refusing what two readers could disagree on, and hands
|
|
10
|
+
* the client the canonical re-serialization of exactly the value it checked.
|
|
11
|
+
*
|
|
12
|
+
* Refused, by name: a duplicated object key, trailing data after the value, a
|
|
13
|
+
* leading byte-order mark, nesting deeper than {@link MAX_DEPTH}, a number
|
|
14
|
+
* out of range (its re-serialization would be `null`), and anything that is
|
|
15
|
+
* not RFC 8259 JSON.
|
|
16
|
+
*
|
|
17
|
+
* Objects are built with own properties only (a `__proto__` key is data, never
|
|
18
|
+
* a prototype).
|
|
19
|
+
*
|
|
20
|
+
* Pattern: recursive-descent parser. Role: outer ring, the one reader.
|
|
21
|
+
*/
|
|
22
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
23
|
+
exports.parseStrictJson = exports.MAX_DEPTH = exports.AmbiguousJsonError = void 0;
|
|
24
|
+
/** Why a text was refused. */
|
|
25
|
+
class AmbiguousJsonError extends Error {
|
|
26
|
+
reason;
|
|
27
|
+
constructor(reason) {
|
|
28
|
+
super(`ambiguous JSON: ${reason}`);
|
|
29
|
+
this.reason = reason;
|
|
30
|
+
this.name = 'AmbiguousJsonError';
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
exports.AmbiguousJsonError = AmbiguousJsonError;
|
|
34
|
+
/** How deep a value may nest. */
|
|
35
|
+
exports.MAX_DEPTH = 256;
|
|
36
|
+
/**
|
|
37
|
+
* The one value `text` holds.
|
|
38
|
+
*
|
|
39
|
+
* @throws AmbiguousJsonError when the text is not exactly one unambiguous value.
|
|
40
|
+
*/
|
|
41
|
+
function parseStrictJson(text) {
|
|
42
|
+
if (text.charCodeAt(0) === 0xfeff)
|
|
43
|
+
throw new AmbiguousJsonError('a leading byte-order mark');
|
|
44
|
+
const reader = new Reader(text);
|
|
45
|
+
reader.space();
|
|
46
|
+
const value = reader.value(0);
|
|
47
|
+
reader.space();
|
|
48
|
+
if (!reader.done())
|
|
49
|
+
throw new AmbiguousJsonError('trailing data after the value');
|
|
50
|
+
return value;
|
|
51
|
+
}
|
|
52
|
+
exports.parseStrictJson = parseStrictJson;
|
|
53
|
+
const NUMBER = /-?(?:0|[1-9]\d*)(?:\.\d+)?(?:[eE][+-]?\d+)?/y;
|
|
54
|
+
/** Characters a string may hold as they are: not a quote, a backslash or a control character. */
|
|
55
|
+
// eslint-disable-next-line no-control-regex
|
|
56
|
+
const PLAIN_RUN = /[^"\\\u0000-\u001f]+/y;
|
|
57
|
+
class Reader {
|
|
58
|
+
text;
|
|
59
|
+
at = 0;
|
|
60
|
+
constructor(text) {
|
|
61
|
+
this.text = text;
|
|
62
|
+
}
|
|
63
|
+
done() {
|
|
64
|
+
return this.at >= this.text.length;
|
|
65
|
+
}
|
|
66
|
+
space() {
|
|
67
|
+
while (this.at < this.text.length) {
|
|
68
|
+
const c = this.text.charCodeAt(this.at);
|
|
69
|
+
if (c !== 0x20 && c !== 0x09 && c !== 0x0a && c !== 0x0d)
|
|
70
|
+
return;
|
|
71
|
+
this.at++;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
value(depth) {
|
|
75
|
+
if (depth > exports.MAX_DEPTH)
|
|
76
|
+
throw new AmbiguousJsonError('nesting too deep');
|
|
77
|
+
const c = this.text[this.at];
|
|
78
|
+
if (c === '{')
|
|
79
|
+
return this.object(depth);
|
|
80
|
+
if (c === '[')
|
|
81
|
+
return this.array(depth);
|
|
82
|
+
if (c === '"')
|
|
83
|
+
return this.string();
|
|
84
|
+
if (this.word('true'))
|
|
85
|
+
return true;
|
|
86
|
+
if (this.word('false'))
|
|
87
|
+
return false;
|
|
88
|
+
if (this.word('null'))
|
|
89
|
+
return null;
|
|
90
|
+
return this.number();
|
|
91
|
+
}
|
|
92
|
+
object(depth) {
|
|
93
|
+
this.at++; // {
|
|
94
|
+
const out = {};
|
|
95
|
+
const seen = new Set();
|
|
96
|
+
this.space();
|
|
97
|
+
if (this.text[this.at] === '}') {
|
|
98
|
+
this.at++;
|
|
99
|
+
return out;
|
|
100
|
+
}
|
|
101
|
+
for (;;) {
|
|
102
|
+
this.space();
|
|
103
|
+
if (this.text[this.at] !== '"')
|
|
104
|
+
throw new AmbiguousJsonError('an object key that is not a string');
|
|
105
|
+
const key = this.string();
|
|
106
|
+
// The key is not named: it is the answer's text, and a refusal repeats none.
|
|
107
|
+
if (seen.has(key))
|
|
108
|
+
throw new AmbiguousJsonError('a duplicated object key');
|
|
109
|
+
seen.add(key);
|
|
110
|
+
this.space();
|
|
111
|
+
this.expect(':');
|
|
112
|
+
this.space();
|
|
113
|
+
Object.defineProperty(out, key, {
|
|
114
|
+
value: this.value(depth + 1),
|
|
115
|
+
enumerable: true,
|
|
116
|
+
writable: true,
|
|
117
|
+
configurable: true,
|
|
118
|
+
});
|
|
119
|
+
this.space();
|
|
120
|
+
if (this.text[this.at] === ',') {
|
|
121
|
+
this.at++;
|
|
122
|
+
continue;
|
|
123
|
+
}
|
|
124
|
+
this.expect('}');
|
|
125
|
+
return out;
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
array(depth) {
|
|
129
|
+
this.at++; // [
|
|
130
|
+
const out = [];
|
|
131
|
+
this.space();
|
|
132
|
+
if (this.text[this.at] === ']') {
|
|
133
|
+
this.at++;
|
|
134
|
+
return out;
|
|
135
|
+
}
|
|
136
|
+
for (;;) {
|
|
137
|
+
this.space();
|
|
138
|
+
out.push(this.value(depth + 1));
|
|
139
|
+
this.space();
|
|
140
|
+
if (this.text[this.at] === ',') {
|
|
141
|
+
this.at++;
|
|
142
|
+
continue;
|
|
143
|
+
}
|
|
144
|
+
this.expect(']');
|
|
145
|
+
return out;
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
string() {
|
|
149
|
+
this.at++; // opening quote
|
|
150
|
+
let out = '';
|
|
151
|
+
for (;;) {
|
|
152
|
+
if (this.at >= this.text.length)
|
|
153
|
+
throw new AmbiguousJsonError('an unterminated string');
|
|
154
|
+
const c = this.text[this.at];
|
|
155
|
+
const code = c.charCodeAt(0);
|
|
156
|
+
if (c === '"') {
|
|
157
|
+
this.at++;
|
|
158
|
+
return out;
|
|
159
|
+
}
|
|
160
|
+
if (code < 0x20)
|
|
161
|
+
throw new AmbiguousJsonError('a control character inside a string');
|
|
162
|
+
if (c !== '\\') {
|
|
163
|
+
// A run of plain characters at once — a large string is read in slices.
|
|
164
|
+
PLAIN_RUN.lastIndex = this.at;
|
|
165
|
+
const run = PLAIN_RUN.exec(this.text)?.[0] ?? c;
|
|
166
|
+
out += run;
|
|
167
|
+
this.at += run.length;
|
|
168
|
+
continue;
|
|
169
|
+
}
|
|
170
|
+
const e = this.text[this.at + 1];
|
|
171
|
+
this.at += 2;
|
|
172
|
+
if (e === 'u') {
|
|
173
|
+
const hex = this.text.slice(this.at, this.at + 4);
|
|
174
|
+
if (!/^[0-9a-fA-F]{4}$/.test(hex))
|
|
175
|
+
throw new AmbiguousJsonError('a malformed \\u escape');
|
|
176
|
+
out += String.fromCharCode(parseInt(hex, 16));
|
|
177
|
+
this.at += 4;
|
|
178
|
+
continue;
|
|
179
|
+
}
|
|
180
|
+
const simple = ESCAPES[e ?? ''];
|
|
181
|
+
if (simple === undefined)
|
|
182
|
+
throw new AmbiguousJsonError('an unknown escape');
|
|
183
|
+
out += simple;
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
number() {
|
|
187
|
+
NUMBER.lastIndex = this.at;
|
|
188
|
+
const match = NUMBER.exec(this.text);
|
|
189
|
+
if (match === null || match[0] === '')
|
|
190
|
+
throw new AmbiguousJsonError('a value that is not JSON');
|
|
191
|
+
this.at += match[0].length;
|
|
192
|
+
const value = Number(match[0]);
|
|
193
|
+
// Re-serialized, a number out of range would become `null` — another value.
|
|
194
|
+
if (!Number.isFinite(value))
|
|
195
|
+
throw new AmbiguousJsonError('a number out of range');
|
|
196
|
+
return value;
|
|
197
|
+
}
|
|
198
|
+
word(word) {
|
|
199
|
+
if (!this.text.startsWith(word, this.at))
|
|
200
|
+
return false;
|
|
201
|
+
this.at += word.length;
|
|
202
|
+
return true;
|
|
203
|
+
}
|
|
204
|
+
expect(c) {
|
|
205
|
+
if (this.text[this.at] !== c)
|
|
206
|
+
throw new AmbiguousJsonError(`a missing '${c}'`);
|
|
207
|
+
this.at++;
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
const ESCAPES = {
|
|
211
|
+
'"': '"',
|
|
212
|
+
'\\': '\\',
|
|
213
|
+
'/': '/',
|
|
214
|
+
b: '\b',
|
|
215
|
+
f: '\f',
|
|
216
|
+
n: '\n',
|
|
217
|
+
r: '\r',
|
|
218
|
+
t: '\t',
|
|
219
|
+
};
|
|
220
|
+
//# sourceMappingURL=strictJson.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"strictJson.js","sourceRoot":"","sources":["../../../../src/adapters/mcp/agentcoreRuntime/strictJson.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,204 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* agentCoreRuntimeMcpTransport — an MCP server hosted on AWS Bedrock
|
|
4
|
+
* **AgentCore Runtime**, reached as an ordinary MCP transport.
|
|
5
|
+
*
|
|
6
|
+
* const orders = await mcpClient({
|
|
7
|
+
* name: 'orders',
|
|
8
|
+
* transport: agentCoreRuntimeMcpTransport({
|
|
9
|
+
* agentRuntimeArn: 'arn:aws:bedrock-agentcore:us-west-2:123456789012:runtime/orders_mcp-a1b2c3',
|
|
10
|
+
* region: 'us-west-2',
|
|
11
|
+
* }),
|
|
12
|
+
* });
|
|
13
|
+
*
|
|
14
|
+
* ── Why this exists ──────────────────────────────────────────────────────────
|
|
15
|
+
* `agentCoreGatewayTransport` reaches a Gateway; `agentCoreRuntimeHost` hosts
|
|
16
|
+
* OUR agent on Runtime. Neither calls an MCP server somebody deployed TO
|
|
17
|
+
* Runtime, and that server is not reachable as a plain URL: every request goes
|
|
18
|
+
* through `InvokeAgentRuntime`, it lands in a runtime SESSION that has to be
|
|
19
|
+
* carried from call to call, and the platform answers a request that arrives
|
|
20
|
+
* while that session is still coming up with an HTTP 200 whose body says
|
|
21
|
+
* "Session operation in progress, please retry" — which no MCP client retries.
|
|
22
|
+
*
|
|
23
|
+
* ── What it is: one port, three strategies ───────────────────────────────────
|
|
24
|
+
* The port is the existing one: this returns an `http` member of
|
|
25
|
+
* `McpTransport`, so `mcpClient` builds it like any other Streamable HTTP
|
|
26
|
+
* server and knows nothing about AgentCore. Everything AgentCore-specific sits
|
|
27
|
+
* in the `fetch` it carries, composed from three choices, one file each:
|
|
28
|
+
*
|
|
29
|
+
* session (`session.ts`) 'per-call' (the default: a session per request),
|
|
30
|
+
* or 'reuse' (one session per MCP client, keyed by
|
|
31
|
+
* a handle the transport issues)
|
|
32
|
+
* retry (`sessionBusy.ts`) the session-busy refusal, retried with bounded
|
|
33
|
+
* backoff by the SAME loop `mcpClient` uses for a
|
|
34
|
+
* 429 (`mcp/throttleRetry.ts` · `retryingFetchWhen`)
|
|
35
|
+
* auth (`invoke.ts`) 'sigv4' through the AWS SDK's InvokeAgentRuntime,
|
|
36
|
+
* or a bearer token over the documented HTTPS
|
|
37
|
+
* endpoint — the SDK has no bearer scheme, and the
|
|
38
|
+
* API reference says an OAuth caller must use HTTPS
|
|
39
|
+
*
|
|
40
|
+
* in that order, outermost first: the session is applied once per request, so
|
|
41
|
+
* every attempt of it lands in the same runtime session, and every attempt is
|
|
42
|
+
* signed (or vended) afresh, the ordering `mcp/throttleRetry.ts` requires.
|
|
43
|
+
* What the MCP client reads of a failure is rewritten from the library's own
|
|
44
|
+
* fixed sentences and safe ids (`safeAnswer.ts`), never the service's text.
|
|
45
|
+
* `mcpClient`'s own 429 retry still wraps the whole thing.
|
|
46
|
+
*
|
|
47
|
+
* ── What it does NOT do ──────────────────────────────────────────────────────
|
|
48
|
+
* Deploy or manage a runtime (a control-plane job), or host one (that is
|
|
49
|
+
* `agentCoreRuntimeHost`). This is the CLIENT side of a server somebody already
|
|
50
|
+
* deployed with `--protocol MCP`.
|
|
51
|
+
*
|
|
52
|
+
* Pattern: Facade over three Strategies. Role: outer ring, vendor adapter.
|
|
53
|
+
*/
|
|
54
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
55
|
+
exports.agentCoreRuntimeUrl = exports.agentCoreRuntimeMcpTransport = void 0;
|
|
56
|
+
const gatewayTransport_js_1 = require("../../../mcp/gatewayTransport.js");
|
|
57
|
+
const throttleRetry_js_1 = require("../../../mcp/throttleRetry.js");
|
|
58
|
+
const invoke_js_1 = require("./invoke.js");
|
|
59
|
+
const safeAnswer_js_1 = require("./safeAnswer.js");
|
|
60
|
+
const session_js_1 = require("./session.js");
|
|
61
|
+
const sessionBusy_js_1 = require("./sessionBusy.js");
|
|
62
|
+
/** The session-busy retry's own ceilings, when the caller set none. */
|
|
63
|
+
const DEFAULT_RETRY = { maxAttempts: 5, maxWaitMs: 10_000 };
|
|
64
|
+
/** What a bearer token is vended for, unless the caller names another service. */
|
|
65
|
+
const DEFAULT_BEARER_SERVICE = 'runtime';
|
|
66
|
+
/** A region is a DNS label run, nothing more — it is spliced into a hostname. */
|
|
67
|
+
const REGION_SHAPE = /^[a-z0-9]+(?:-[a-z0-9]+)*$/;
|
|
68
|
+
/**
|
|
69
|
+
* An MCP transport for a server hosted on AgentCore Runtime.
|
|
70
|
+
*
|
|
71
|
+
* @throws when the runtime or region is missing, when a strategy is unknown,
|
|
72
|
+
* when `client` is given beside `{ bearer }`, or — for `'sigv4'` — when the
|
|
73
|
+
* AWS SDK peer dependency cannot be loaded.
|
|
74
|
+
*/
|
|
75
|
+
function agentCoreRuntimeMcpTransport(options) {
|
|
76
|
+
const url = agentCoreRuntimeUrl(options);
|
|
77
|
+
const send = authStrategy(options, url);
|
|
78
|
+
const retried = (0, throttleRetry_js_1.retryingFetchWhen)(send, retryConfig(options.retry), sessionBusy_js_1.sessionBusy) ?? send;
|
|
79
|
+
const session = (0, session_js_1.sessionStrategy)(options.session ?? 'per-call');
|
|
80
|
+
// The session is applied ONCE per request the MCP client makes, outside the
|
|
81
|
+
// retry: every attempt of one request goes to the same runtime session (a
|
|
82
|
+
// busy refusal is about THAT session coming up), and only the final answer
|
|
83
|
+
// binds anything.
|
|
84
|
+
const sessioned = async (input, init) => {
|
|
85
|
+
const headers = new Headers(init?.headers);
|
|
86
|
+
const step = session.request(headers, (init?.method ?? 'GET').toUpperCase());
|
|
87
|
+
if ('answer' in step)
|
|
88
|
+
return step.answer;
|
|
89
|
+
const response = await retried(input, { ...init, headers });
|
|
90
|
+
// What the MCP client may read of a failure is rewritten from safe parts —
|
|
91
|
+
// ONE rule for both auth paths, after the retry has read the original.
|
|
92
|
+
return step.settle(await (0, safeAnswer_js_1.safeAnswer)(response));
|
|
93
|
+
};
|
|
94
|
+
return { transport: 'http', url, fetch: sessioned };
|
|
95
|
+
}
|
|
96
|
+
exports.agentCoreRuntimeMcpTransport = agentCoreRuntimeMcpTransport;
|
|
97
|
+
/**
|
|
98
|
+
* The HTTPS endpoint of a runtime's MCP server:
|
|
99
|
+
* `https://bedrock-agentcore.{region}.amazonaws.com/runtimes/{url-encoded ARN}/invocations`,
|
|
100
|
+
* with `qualifier` / `accountId` as query parameters when given — the request
|
|
101
|
+
* line of `InvokeAgentRuntime`, and the URL AgentCore's own MCP examples dial.
|
|
102
|
+
*
|
|
103
|
+
* @throws when `agentRuntimeArn` or `region` is missing, or the region is not
|
|
104
|
+
* shaped like one (it becomes part of a hostname).
|
|
105
|
+
*/
|
|
106
|
+
function agentCoreRuntimeUrl(options) {
|
|
107
|
+
const { agentRuntimeArn, region, qualifier, accountId } = options;
|
|
108
|
+
if (!agentRuntimeArn || !region) {
|
|
109
|
+
throw new TypeError('agentCoreRuntimeUrl: both `agentRuntimeArn` and `region` are required — the runtime ' +
|
|
110
|
+
'is named by the first and reached through the second.');
|
|
111
|
+
}
|
|
112
|
+
if (!REGION_SHAPE.test(region)) {
|
|
113
|
+
throw new TypeError(`agentCoreRuntimeUrl: \`region\` ${JSON.stringify(region)} is not a region name ` +
|
|
114
|
+
"(lowercase letters, digits and '-', e.g. 'us-west-2'). It becomes part of the " +
|
|
115
|
+
'hostname, so it is refused rather than spliced in.');
|
|
116
|
+
}
|
|
117
|
+
const query = new URLSearchParams();
|
|
118
|
+
if (qualifier)
|
|
119
|
+
query.set('qualifier', qualifier);
|
|
120
|
+
if (accountId)
|
|
121
|
+
query.set('accountId', accountId);
|
|
122
|
+
const base = `https://bedrock-agentcore.${region}.amazonaws.com/runtimes/` +
|
|
123
|
+
`${encodeURIComponent(agentRuntimeArn)}/invocations`;
|
|
124
|
+
const search = query.toString();
|
|
125
|
+
return search === '' ? base : `${base}?${search}`;
|
|
126
|
+
}
|
|
127
|
+
exports.agentCoreRuntimeUrl = agentCoreRuntimeUrl;
|
|
128
|
+
// ── The auth strategy ─────────────────────────────────────────────────
|
|
129
|
+
/** The innermost `fetch`: the one that authenticates and sends. */
|
|
130
|
+
function authStrategy(options, url) {
|
|
131
|
+
const auth = options.auth ?? 'sigv4';
|
|
132
|
+
if (auth === 'sigv4') {
|
|
133
|
+
const { client, InvokeAgentRuntimeCommand } = (0, invoke_js_1.invokeSdk)({
|
|
134
|
+
region: options.region,
|
|
135
|
+
...(options.client !== undefined && { client: options.client }),
|
|
136
|
+
...(options._sdk !== undefined && { sdk: options._sdk }),
|
|
137
|
+
});
|
|
138
|
+
return (0, invoke_js_1.invokeFetch)({
|
|
139
|
+
agentRuntimeArn: options.agentRuntimeArn,
|
|
140
|
+
...(options.qualifier !== undefined && { qualifier: options.qualifier }),
|
|
141
|
+
...(options.accountId !== undefined && { accountId: options.accountId }),
|
|
142
|
+
}, client, InvokeAgentRuntimeCommand);
|
|
143
|
+
}
|
|
144
|
+
if (auth !== null && typeof auth === 'object' && auth.bearer !== undefined) {
|
|
145
|
+
if (typeof auth.bearer.getCredential !== 'function') {
|
|
146
|
+
throw new TypeError('agentCoreRuntimeMcpTransport: `auth.bearer` must be a CredentialProvider (an object ' +
|
|
147
|
+
'with getCredential — agentCoreIdentity(), staticTokens(), your own), not the token ' +
|
|
148
|
+
'itself: a token is vended per request so it can rotate, and is never held here.');
|
|
149
|
+
}
|
|
150
|
+
if (options.client !== undefined) {
|
|
151
|
+
throw new TypeError('agentCoreRuntimeMcpTransport: `client` is the SigV4 strategy’s AWS SDK client, and ' +
|
|
152
|
+
'`auth: { bearer }` sends no AWS SDK request — the SDK cannot carry a bearer token, ' +
|
|
153
|
+
'so this path is plain HTTPS. Remove `client`, or use `auth: "sigv4"`.');
|
|
154
|
+
}
|
|
155
|
+
if (auth.mode !== undefined && auth.mode !== 'machine') {
|
|
156
|
+
// The vending request names no user: it carries `service`, `scopes` and
|
|
157
|
+
// `mode`, never an identity or the user's own token. A user-delegated
|
|
158
|
+
// token asked for that way belongs to nobody in particular — and would be
|
|
159
|
+
// sent for whoever calls through the client.
|
|
160
|
+
throw new TypeError(`agentCoreRuntimeMcpTransport: \`auth.mode\` must be 'machine' — got ${describe(auth.mode)}. ` +
|
|
161
|
+
'This transport asks its provider for a token without naming any user, so a ' +
|
|
162
|
+
'user-delegated token would be sent for whoever calls through the client. Leave ' +
|
|
163
|
+
'`mode` unset for the client credential; for a token per user, build a transport per ' +
|
|
164
|
+
'user whose `bearer` provider vends that user’s token.');
|
|
165
|
+
}
|
|
166
|
+
// The Gateway's vending fetch, reused as is: the token is vended per
|
|
167
|
+
// request, applied to that one request, and dropped.
|
|
168
|
+
return (0, gatewayTransport_js_1.createVendingFetch)((0, gatewayTransport_js_1.gatewayTransport)({
|
|
169
|
+
url,
|
|
170
|
+
credentials: auth.bearer,
|
|
171
|
+
service: auth.service ?? DEFAULT_BEARER_SERVICE,
|
|
172
|
+
...(auth.scopes !== undefined && { scopes: auth.scopes }),
|
|
173
|
+
...(auth.mode !== undefined && { mode: auth.mode }),
|
|
174
|
+
}), auth.fetch);
|
|
175
|
+
}
|
|
176
|
+
throw new TypeError(`agentCoreRuntimeMcpTransport: \`auth\` must be 'sigv4' or { bearer: <CredentialProvider> } ` +
|
|
177
|
+
`— got ${describe(auth)}. Which one is decided by the runtime's inbound auth: IAM is ` +
|
|
178
|
+
"'sigv4', an OAuth (JWT) authorizer is a bearer token.");
|
|
179
|
+
}
|
|
180
|
+
// ── The retry strategy's configuration ────────────────────────────────
|
|
181
|
+
function retryConfig(retry) {
|
|
182
|
+
if (retry === false)
|
|
183
|
+
return false;
|
|
184
|
+
const given = typeof retry === 'object' && retry !== null ? retry : {};
|
|
185
|
+
// An explicitly `undefined` field means "not set" — it must fall back to this
|
|
186
|
+
// transport's default, not erase it (and land on the loop's own default).
|
|
187
|
+
const set = Object.fromEntries(Object.entries(given).filter(([, v]) => v !== undefined));
|
|
188
|
+
return { ...DEFAULT_RETRY, ...set };
|
|
189
|
+
}
|
|
190
|
+
/**
|
|
191
|
+
* A refused value, described by SHAPE — never echoed. A mistyped `auth` can be
|
|
192
|
+
* the token itself (`auth: process.env.RUNTIME_TOKEN`), and an error message is
|
|
193
|
+
* the last place it should land.
|
|
194
|
+
*/
|
|
195
|
+
function describe(value) {
|
|
196
|
+
if (value === null)
|
|
197
|
+
return 'null';
|
|
198
|
+
if (typeof value === 'string')
|
|
199
|
+
return `a string of ${value.length} characters`;
|
|
200
|
+
if (typeof value === 'object')
|
|
201
|
+
return `an object with keys [${Object.keys(value).join(', ')}]`;
|
|
202
|
+
return typeof value;
|
|
203
|
+
}
|
|
204
|
+
//# sourceMappingURL=transport.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transport.js","sourceRoot":"","sources":["../../../../src/adapters/mcp/agentcoreRuntime/transport.ts"],"names":[],"mappings":"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"}
|