agentfootprint 10.4.0 → 10.5.1
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/CAPABILITIES.md +6 -1
- package/ai-instructions/clinerules +22 -11
- package/ai-instructions/copilot-instructions.md +22 -11
- package/ai-instructions/cursor/agentfootprint.md +22 -11
- package/ai-instructions/kiro/agentfootprint.md +22 -11
- package/ai-instructions/windsurfrules +22 -11
- package/dist/adapters/llm/AnthropicProvider.js +26 -8
- package/dist/adapters/llm/AnthropicProvider.js.map +1 -1
- package/dist/adapters/llm/BedrockProvider.js +23 -7
- package/dist/adapters/llm/BedrockProvider.js.map +1 -1
- package/dist/adapters/llm/BrowserAnthropicProvider.js +58 -49
- package/dist/adapters/llm/BrowserAnthropicProvider.js.map +1 -1
- package/dist/adapters/llm/BrowserOpenAIProvider.js +51 -42
- package/dist/adapters/llm/BrowserOpenAIProvider.js.map +1 -1
- package/dist/adapters/llm/FoundryLocalProvider.js +177 -212
- package/dist/adapters/llm/FoundryLocalProvider.js.map +1 -1
- package/dist/adapters/llm/GeminiProvider.js +23 -9
- package/dist/adapters/llm/GeminiProvider.js.map +1 -1
- package/dist/adapters/llm/InvokeModelGatewayProvider.js +49 -10
- package/dist/adapters/llm/InvokeModelGatewayProvider.js.map +1 -1
- package/dist/adapters/llm/MockProvider.js +11 -3
- package/dist/adapters/llm/MockProvider.js.map +1 -1
- package/dist/adapters/llm/OllamaProvider.js +134 -167
- package/dist/adapters/llm/OllamaProvider.js.map +1 -1
- package/dist/adapters/llm/OpenAIProvider.js +36 -9
- package/dist/adapters/llm/OpenAIProvider.js.map +1 -1
- package/dist/adapters/mcp/agentcoreRuntime/invoke.js +15 -8
- package/dist/adapters/mcp/agentcoreRuntime/invoke.js.map +1 -1
- package/dist/adapters/mcp/agentcoreRuntime/transport.js +21 -3
- package/dist/adapters/mcp/agentcoreRuntime/transport.js.map +1 -1
- package/dist/ag-ui/adapter.js +69 -14
- package/dist/ag-ui/adapter.js.map +1 -1
- package/dist/ag-ui/framing.js +3 -1
- package/dist/ag-ui/framing.js.map +1 -1
- package/dist/ag-ui/index.js +4 -2
- package/dist/ag-ui/index.js.map +1 -1
- package/dist/ag-ui/request.js +66 -6
- package/dist/ag-ui/request.js.map +1 -1
- package/dist/answer-validation/index.js +8 -1
- package/dist/answer-validation/index.js.map +1 -1
- package/dist/answer-validation/toolLedger.js +130 -0
- package/dist/answer-validation/toolLedger.js.map +1 -0
- package/dist/answer-validation/types.js.map +1 -1
- package/dist/answer-validation/validate.js +25 -3
- package/dist/answer-validation/validate.js.map +1 -1
- package/dist/classify/typesafe.js +31 -23
- package/dist/classify/typesafe.js.map +1 -1
- package/dist/core/Agent.js +69 -16
- package/dist/core/Agent.js.map +1 -1
- package/dist/core/LLMCall.js +16 -6
- package/dist/core/LLMCall.js.map +1 -1
- package/dist/core/RunnerBase.js +83 -11
- package/dist/core/RunnerBase.js.map +1 -1
- package/dist/core/agent/buildAgentChart.js +16 -8
- package/dist/core/agent/buildAgentChart.js.map +1 -1
- package/dist/core/agent/buildAgentMessageApiChart.js +22 -2
- package/dist/core/agent/buildAgentMessageApiChart.js.map +1 -1
- package/dist/core/agent/buildDynamicAgentChart.js +22 -7
- package/dist/core/agent/buildDynamicAgentChart.js.map +1 -1
- package/dist/core/agent/buildMessageApiChart.js +22 -2
- package/dist/core/agent/buildMessageApiChart.js.map +1 -1
- package/dist/core/agent/stages/answerValidation.js +22 -1
- package/dist/core/agent/stages/answerValidation.js.map +1 -1
- package/dist/core/agent/stages/callLLM.js +19 -3
- package/dist/core/agent/stages/callLLM.js.map +1 -1
- package/dist/core/agent/stages/routeTurn.js +14 -1
- package/dist/core/agent/stages/routeTurn.js.map +1 -1
- package/dist/core/agent/stages/seed.js +9 -0
- package/dist/core/agent/stages/seed.js.map +1 -1
- package/dist/core/agent/stages/toolCalls.js +59 -20
- package/dist/core/agent/stages/toolCalls.js.map +1 -1
- package/dist/core/agent/window/strategies/summarizeOldest.js +4 -0
- package/dist/core/agent/window/strategies/summarizeOldest.js.map +1 -1
- package/dist/core/agent/window/summarize.js +6 -3
- package/dist/core/agent/window/summarize.js.map +1 -1
- package/dist/core/memberRun.js +58 -9
- package/dist/core/memberRun.js.map +1 -1
- package/dist/core/requestOfRun.js +28 -0
- package/dist/core/requestOfRun.js.map +1 -0
- package/dist/core/slots/buildToolsSlot.js +11 -25
- package/dist/core/slots/buildToolsSlot.js.map +1 -1
- package/dist/core-flow/Conditional.js +17 -11
- package/dist/core-flow/Conditional.js.map +1 -1
- package/dist/core-flow/Graph.js +17 -11
- package/dist/core-flow/Graph.js.map +1 -1
- package/dist/core-flow/Loop.js +17 -11
- package/dist/core-flow/Loop.js.map +1 -1
- package/dist/core-flow/Parallel.js +25 -14
- package/dist/core-flow/Parallel.js.map +1 -1
- package/dist/core-flow/Sequence.js +17 -11
- package/dist/core-flow/Sequence.js.map +1 -1
- package/dist/core-flow/Workflow.js +17 -11
- package/dist/core-flow/Workflow.js.map +1 -1
- package/dist/doors/security.js +2 -1
- package/dist/doors/security.js.map +1 -1
- package/dist/esm/adapters/llm/AnthropicProvider.d.ts +9 -2
- package/dist/esm/adapters/llm/AnthropicProvider.js +26 -8
- package/dist/esm/adapters/llm/AnthropicProvider.js.map +1 -1
- package/dist/esm/adapters/llm/BedrockProvider.d.ts +6 -1
- package/dist/esm/adapters/llm/BedrockProvider.js +23 -7
- package/dist/esm/adapters/llm/BedrockProvider.js.map +1 -1
- package/dist/esm/adapters/llm/BrowserAnthropicProvider.js +58 -49
- package/dist/esm/adapters/llm/BrowserAnthropicProvider.js.map +1 -1
- package/dist/esm/adapters/llm/BrowserOpenAIProvider.js +51 -42
- package/dist/esm/adapters/llm/BrowserOpenAIProvider.js.map +1 -1
- package/dist/esm/adapters/llm/FoundryLocalProvider.js +174 -209
- package/dist/esm/adapters/llm/FoundryLocalProvider.js.map +1 -1
- package/dist/esm/adapters/llm/GeminiProvider.js +23 -9
- package/dist/esm/adapters/llm/GeminiProvider.js.map +1 -1
- package/dist/esm/adapters/llm/InvokeModelGatewayProvider.d.ts +3 -2
- package/dist/esm/adapters/llm/InvokeModelGatewayProvider.js +49 -10
- package/dist/esm/adapters/llm/InvokeModelGatewayProvider.js.map +1 -1
- package/dist/esm/adapters/llm/MockProvider.js +11 -3
- package/dist/esm/adapters/llm/MockProvider.js.map +1 -1
- package/dist/esm/adapters/llm/OllamaProvider.js +131 -164
- package/dist/esm/adapters/llm/OllamaProvider.js.map +1 -1
- package/dist/esm/adapters/llm/OpenAIProvider.d.ts +6 -1
- package/dist/esm/adapters/llm/OpenAIProvider.js +36 -9
- package/dist/esm/adapters/llm/OpenAIProvider.js.map +1 -1
- package/dist/esm/adapters/mcp/agentcoreRuntime/invoke.d.ts +1 -1
- package/dist/esm/adapters/mcp/agentcoreRuntime/invoke.js +15 -8
- package/dist/esm/adapters/mcp/agentcoreRuntime/invoke.js.map +1 -1
- package/dist/esm/adapters/mcp/agentcoreRuntime/transport.d.ts +26 -3
- package/dist/esm/adapters/mcp/agentcoreRuntime/transport.js +21 -3
- package/dist/esm/adapters/mcp/agentcoreRuntime/transport.js.map +1 -1
- package/dist/esm/ag-ui/adapter.d.ts +61 -11
- package/dist/esm/ag-ui/adapter.js +70 -15
- package/dist/esm/ag-ui/adapter.js.map +1 -1
- package/dist/esm/ag-ui/framing.d.ts +2 -1
- package/dist/esm/ag-ui/framing.js +3 -1
- package/dist/esm/ag-ui/framing.js.map +1 -1
- package/dist/esm/ag-ui/index.d.ts +6 -4
- package/dist/esm/ag-ui/index.js +6 -4
- package/dist/esm/ag-ui/index.js.map +1 -1
- package/dist/esm/ag-ui/request.d.ts +86 -7
- package/dist/esm/ag-ui/request.js +63 -5
- package/dist/esm/ag-ui/request.js.map +1 -1
- package/dist/esm/answer-validation/index.d.ts +2 -1
- package/dist/esm/answer-validation/index.js +1 -0
- package/dist/esm/answer-validation/index.js.map +1 -1
- package/dist/esm/answer-validation/toolLedger.d.ts +65 -0
- package/dist/esm/answer-validation/toolLedger.js +121 -0
- package/dist/esm/answer-validation/toolLedger.js.map +1 -0
- package/dist/esm/answer-validation/types.d.ts +48 -0
- package/dist/esm/answer-validation/types.js.map +1 -1
- package/dist/esm/answer-validation/validate.d.ts +2 -2
- package/dist/esm/answer-validation/validate.js +25 -3
- package/dist/esm/answer-validation/validate.js.map +1 -1
- package/dist/esm/classify/typesafe.js +30 -22
- package/dist/esm/classify/typesafe.js.map +1 -1
- package/dist/esm/core/Agent.d.ts +9 -1
- package/dist/esm/core/Agent.js +71 -18
- package/dist/esm/core/Agent.js.map +1 -1
- package/dist/esm/core/LLMCall.d.ts +2 -1
- package/dist/esm/core/LLMCall.js +17 -7
- package/dist/esm/core/LLMCall.js.map +1 -1
- package/dist/esm/core/RunnerBase.d.ts +39 -8
- package/dist/esm/core/RunnerBase.js +80 -9
- package/dist/esm/core/RunnerBase.js.map +1 -1
- package/dist/esm/core/agent/buildAgentChart.js +16 -8
- package/dist/esm/core/agent/buildAgentChart.js.map +1 -1
- package/dist/esm/core/agent/buildAgentMessageApiChart.d.ts +16 -0
- package/dist/esm/core/agent/buildAgentMessageApiChart.js +22 -2
- package/dist/esm/core/agent/buildAgentMessageApiChart.js.map +1 -1
- package/dist/esm/core/agent/buildDynamicAgentChart.js +22 -7
- package/dist/esm/core/agent/buildDynamicAgentChart.js.map +1 -1
- package/dist/esm/core/agent/buildMessageApiChart.d.ts +16 -0
- package/dist/esm/core/agent/buildMessageApiChart.js +22 -2
- package/dist/esm/core/agent/buildMessageApiChart.js.map +1 -1
- package/dist/esm/core/agent/stages/answerValidation.js +22 -1
- package/dist/esm/core/agent/stages/answerValidation.js.map +1 -1
- package/dist/esm/core/agent/stages/callLLM.js +19 -3
- package/dist/esm/core/agent/stages/callLLM.js.map +1 -1
- package/dist/esm/core/agent/stages/routeTurn.js +14 -1
- package/dist/esm/core/agent/stages/routeTurn.js.map +1 -1
- package/dist/esm/core/agent/stages/seed.d.ts +7 -0
- package/dist/esm/core/agent/stages/seed.js +9 -0
- package/dist/esm/core/agent/stages/seed.js.map +1 -1
- package/dist/esm/core/agent/stages/toolCalls.d.ts +21 -0
- package/dist/esm/core/agent/stages/toolCalls.js +59 -20
- package/dist/esm/core/agent/stages/toolCalls.js.map +1 -1
- package/dist/esm/core/agent/types.d.ts +10 -0
- package/dist/esm/core/agent/window/strategies/summarizeOldest.js +4 -0
- package/dist/esm/core/agent/window/strategies/summarizeOldest.js.map +1 -1
- package/dist/esm/core/agent/window/summarize.js +6 -3
- package/dist/esm/core/agent/window/summarize.js.map +1 -1
- package/dist/esm/core/memberRun.d.ts +23 -2
- package/dist/esm/core/memberRun.js +54 -8
- package/dist/esm/core/memberRun.js.map +1 -1
- package/dist/esm/core/requestOfRun.d.ts +21 -0
- package/dist/esm/core/requestOfRun.js +24 -0
- package/dist/esm/core/requestOfRun.js.map +1 -0
- package/dist/esm/core/runner.d.ts +15 -3
- package/dist/esm/core/slots/buildToolsSlot.d.ts +0 -16
- package/dist/esm/core/slots/buildToolsSlot.js +11 -25
- package/dist/esm/core/slots/buildToolsSlot.js.map +1 -1
- package/dist/esm/core-flow/Conditional.d.ts +2 -1
- package/dist/esm/core-flow/Conditional.js +18 -12
- package/dist/esm/core-flow/Conditional.js.map +1 -1
- package/dist/esm/core-flow/Graph.d.ts +2 -1
- package/dist/esm/core-flow/Graph.js +18 -12
- package/dist/esm/core-flow/Graph.js.map +1 -1
- package/dist/esm/core-flow/Loop.d.ts +2 -1
- package/dist/esm/core-flow/Loop.js +18 -12
- package/dist/esm/core-flow/Loop.js.map +1 -1
- package/dist/esm/core-flow/Parallel.d.ts +2 -1
- package/dist/esm/core-flow/Parallel.js +26 -15
- package/dist/esm/core-flow/Parallel.js.map +1 -1
- package/dist/esm/core-flow/Sequence.d.ts +2 -1
- package/dist/esm/core-flow/Sequence.js +18 -12
- package/dist/esm/core-flow/Sequence.js.map +1 -1
- package/dist/esm/core-flow/Workflow.d.ts +2 -1
- package/dist/esm/core-flow/Workflow.js +18 -12
- package/dist/esm/core-flow/Workflow.js.map +1 -1
- package/dist/esm/doors/security.d.ts +2 -1
- package/dist/esm/doors/security.js +2 -1
- package/dist/esm/doors/security.js.map +1 -1
- package/dist/esm/events/payloads.d.ts +4 -2
- package/dist/esm/hosting/index.d.ts +1 -0
- package/dist/esm/hosting/index.js.map +1 -1
- package/dist/esm/hosting/protocolAdapter.d.ts +4 -1
- package/dist/esm/hosting/refusalStatus.js +4 -0
- package/dist/esm/hosting/refusalStatus.js.map +1 -1
- package/dist/esm/hosting/requestSealing.d.ts +65 -0
- package/dist/esm/hosting/requestSealing.js +79 -0
- package/dist/esm/hosting/requestSealing.js.map +1 -0
- package/dist/esm/hosting/standingAgent.js +23 -3
- package/dist/esm/hosting/standingAgent.js.map +1 -1
- package/dist/esm/hosting/stream.d.ts +23 -2
- package/dist/esm/hosting/stream.js +5 -1
- package/dist/esm/hosting/stream.js.map +1 -1
- package/dist/esm/hosting/streamHandler.d.ts +26 -7
- package/dist/esm/hosting/streamHandler.js +36 -12
- package/dist/esm/hosting/streamHandler.js.map +1 -1
- package/dist/esm/hosting/types.d.ts +29 -0
- package/dist/esm/hosting/types.js.map +1 -1
- package/dist/esm/identity/requestContext.d.ts +96 -0
- package/dist/esm/identity/requestContext.js +131 -0
- package/dist/esm/identity/requestContext.js.map +1 -0
- package/dist/esm/identity/requestCredentials.d.ts +99 -0
- package/dist/esm/identity/requestCredentials.js +157 -0
- package/dist/esm/identity/requestCredentials.js.map +1 -0
- package/dist/esm/identity/types.d.ts +11 -0
- package/dist/esm/identity/types.js.map +1 -1
- package/dist/esm/identity.d.ts +2 -0
- package/dist/esm/identity.js +5 -0
- package/dist/esm/identity.js.map +1 -1
- package/dist/esm/index.d.ts +3 -2
- package/dist/esm/index.js +5 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/injection-engine/buildInjectionEngineSubflow.d.ts +11 -0
- package/dist/esm/injection-engine/buildInjectionEngineSubflow.js +39 -5
- package/dist/esm/injection-engine/buildInjectionEngineSubflow.js.map +1 -1
- package/dist/esm/injection-engine/constrainedEnumPick.js +4 -2
- package/dist/esm/injection-engine/constrainedEnumPick.js.map +1 -1
- package/dist/esm/injection-engine/evaluator.d.ts +6 -0
- package/dist/esm/injection-engine/evaluator.js +19 -1
- package/dist/esm/injection-engine/evaluator.js.map +1 -1
- package/dist/esm/injection-engine/skillGraph.js +26 -8
- package/dist/esm/injection-engine/skillGraph.js.map +1 -1
- package/dist/esm/injection-engine/skillIntent.d.ts +4 -2
- package/dist/esm/injection-engine/skillIntent.js +3 -0
- package/dist/esm/injection-engine/skillIntent.js.map +1 -1
- package/dist/esm/injection-engine/types.d.ts +27 -1
- package/dist/esm/injection-engine/types.js +15 -0
- package/dist/esm/injection-engine/types.js.map +1 -1
- package/dist/esm/lib/abort.d.ts +157 -0
- package/dist/esm/lib/abort.js +358 -0
- package/dist/esm/lib/abort.js.map +1 -0
- package/dist/esm/maps/engagement/parkCard.d.ts +5 -1
- package/dist/esm/maps/engagement/parkCard.js +10 -3
- package/dist/esm/maps/engagement/parkCard.js.map +1 -1
- package/dist/esm/mcp/mcpClient.js +30 -2
- package/dist/esm/mcp/mcpClient.js.map +1 -1
- package/dist/esm/mcp/mcpServe.js +5 -1
- package/dist/esm/mcp/mcpServe.js.map +1 -1
- package/dist/esm/mcp/plainData.d.ts +44 -0
- package/dist/esm/mcp/plainData.js +204 -0
- package/dist/esm/mcp/plainData.js.map +1 -0
- package/dist/esm/mcp/sdkLoadFailure.d.ts +6 -7
- package/dist/esm/mcp/sdkLoadFailure.js +4 -4
- package/dist/esm/mcp/sdkLoadFailure.js.map +1 -1
- package/dist/esm/mcp/toolResult.js +8 -50
- package/dist/esm/mcp/toolResult.js.map +1 -1
- package/dist/esm/mcp/types.d.ts +10 -6
- package/dist/esm/memory/beats/llmExtractor.js +6 -3
- package/dist/esm/memory/beats/llmExtractor.js.map +1 -1
- package/dist/esm/memory/facts/llmFactExtractor.js +6 -3
- package/dist/esm/memory/facts/llmFactExtractor.js.map +1 -1
- package/dist/esm/memory/stages/summarize.js +16 -5
- package/dist/esm/memory/stages/summarize.js.map +1 -1
- package/dist/esm/patterns/LlmRouter.js +10 -5
- package/dist/esm/patterns/LlmRouter.js.map +1 -1
- package/dist/esm/redaction/conversation.js +3 -0
- package/dist/esm/redaction/conversation.js.map +1 -1
- package/dist/esm/redaction/knownStrings.js +1 -0
- package/dist/esm/redaction/knownStrings.js.map +1 -1
- package/dist/esm/reliability/buildReliabilityGateChart.js +7 -1
- package/dist/esm/reliability/buildReliabilityGateChart.js.map +1 -1
- package/dist/esm/resilience/withCircuitBreaker.js +5 -2
- package/dist/esm/resilience/withCircuitBreaker.js.map +1 -1
- package/dist/esm/resilience/withFallback.js +6 -0
- package/dist/esm/resilience/withFallback.js.map +1 -1
- package/dist/esm/resilience/withRetry.js +5 -0
- package/dist/esm/resilience/withRetry.js.map +1 -1
- package/dist/esm/time-travel/servedView.js +1 -1
- package/dist/esm/time-travel/servedView.js.map +1 -1
- package/dist/esm/tools/hostFilled.d.ts +110 -0
- package/dist/esm/tools/hostFilled.js +509 -0
- package/dist/esm/tools/hostFilled.js.map +1 -0
- package/dist/hosting/index.js.map +1 -1
- package/dist/hosting/refusalStatus.js +4 -0
- package/dist/hosting/refusalStatus.js.map +1 -1
- package/dist/hosting/requestSealing.js +83 -0
- package/dist/hosting/requestSealing.js.map +1 -0
- package/dist/hosting/standingAgent.js +23 -3
- package/dist/hosting/standingAgent.js.map +1 -1
- package/dist/hosting/stream.js +5 -1
- package/dist/hosting/stream.js.map +1 -1
- package/dist/hosting/streamHandler.js +36 -12
- package/dist/hosting/streamHandler.js.map +1 -1
- package/dist/hosting/types.js.map +1 -1
- package/dist/identity/requestContext.js +139 -0
- package/dist/identity/requestContext.js.map +1 -0
- package/dist/identity/requestCredentials.js +165 -0
- package/dist/identity/requestCredentials.js.map +1 -0
- package/dist/identity/types.js.map +1 -1
- package/dist/identity.js +13 -1
- package/dist/identity.js.map +1 -1
- package/dist/index.js +15 -4
- package/dist/index.js.map +1 -1
- package/dist/injection-engine/buildInjectionEngineSubflow.js +38 -4
- package/dist/injection-engine/buildInjectionEngineSubflow.js.map +1 -1
- package/dist/injection-engine/constrainedEnumPick.js +4 -2
- package/dist/injection-engine/constrainedEnumPick.js.map +1 -1
- package/dist/injection-engine/evaluator.js +18 -0
- package/dist/injection-engine/evaluator.js.map +1 -1
- package/dist/injection-engine/skillGraph.js +25 -7
- package/dist/injection-engine/skillGraph.js.map +1 -1
- package/dist/injection-engine/skillIntent.js +3 -0
- package/dist/injection-engine/skillIntent.js.map +1 -1
- package/dist/injection-engine/types.js +17 -1
- package/dist/injection-engine/types.js.map +1 -1
- package/dist/lib/abort.js +372 -0
- package/dist/lib/abort.js.map +1 -0
- package/dist/maps/engagement/parkCard.js +10 -3
- package/dist/maps/engagement/parkCard.js.map +1 -1
- package/dist/mcp/mcpClient.js +30 -2
- package/dist/mcp/mcpClient.js.map +1 -1
- package/dist/mcp/mcpServe.js +5 -1
- package/dist/mcp/mcpServe.js.map +1 -1
- package/dist/mcp/plainData.js +208 -0
- package/dist/mcp/plainData.js.map +1 -0
- package/dist/mcp/sdkLoadFailure.js +4 -4
- package/dist/mcp/sdkLoadFailure.js.map +1 -1
- package/dist/mcp/toolResult.js +8 -50
- package/dist/mcp/toolResult.js.map +1 -1
- package/dist/memory/beats/llmExtractor.js +6 -3
- package/dist/memory/beats/llmExtractor.js.map +1 -1
- package/dist/memory/facts/llmFactExtractor.js +6 -3
- package/dist/memory/facts/llmFactExtractor.js.map +1 -1
- package/dist/memory/stages/summarize.js +16 -5
- package/dist/memory/stages/summarize.js.map +1 -1
- package/dist/patterns/LlmRouter.js +9 -4
- package/dist/patterns/LlmRouter.js.map +1 -1
- package/dist/redaction/conversation.js +3 -0
- package/dist/redaction/conversation.js.map +1 -1
- package/dist/redaction/knownStrings.js +1 -0
- package/dist/redaction/knownStrings.js.map +1 -1
- package/dist/reliability/buildReliabilityGateChart.js +7 -1
- package/dist/reliability/buildReliabilityGateChart.js.map +1 -1
- package/dist/resilience/withCircuitBreaker.js +5 -2
- package/dist/resilience/withCircuitBreaker.js.map +1 -1
- package/dist/resilience/withFallback.js +6 -0
- package/dist/resilience/withFallback.js.map +1 -1
- package/dist/resilience/withRetry.js +5 -0
- package/dist/resilience/withRetry.js.map +1 -1
- package/dist/time-travel/servedView.js +1 -1
- package/dist/time-travel/servedView.js.map +1 -1
- package/dist/tools/hostFilled.js +517 -0
- package/dist/tools/hostFilled.js.map +1 -0
- package/dist/types/adapters/llm/AnthropicProvider.d.ts +9 -2
- package/dist/types/adapters/llm/AnthropicProvider.d.ts.map +1 -1
- package/dist/types/adapters/llm/BedrockProvider.d.ts +6 -1
- package/dist/types/adapters/llm/BedrockProvider.d.ts.map +1 -1
- package/dist/types/adapters/llm/BrowserAnthropicProvider.d.ts.map +1 -1
- package/dist/types/adapters/llm/BrowserOpenAIProvider.d.ts.map +1 -1
- package/dist/types/adapters/llm/FoundryLocalProvider.d.ts.map +1 -1
- package/dist/types/adapters/llm/GeminiProvider.d.ts.map +1 -1
- package/dist/types/adapters/llm/InvokeModelGatewayProvider.d.ts +3 -2
- package/dist/types/adapters/llm/InvokeModelGatewayProvider.d.ts.map +1 -1
- package/dist/types/adapters/llm/MockProvider.d.ts.map +1 -1
- package/dist/types/adapters/llm/OllamaProvider.d.ts.map +1 -1
- package/dist/types/adapters/llm/OpenAIProvider.d.ts +6 -1
- package/dist/types/adapters/llm/OpenAIProvider.d.ts.map +1 -1
- package/dist/types/adapters/mcp/agentcoreRuntime/invoke.d.ts +1 -1
- package/dist/types/adapters/mcp/agentcoreRuntime/invoke.d.ts.map +1 -1
- package/dist/types/adapters/mcp/agentcoreRuntime/transport.d.ts +26 -3
- package/dist/types/adapters/mcp/agentcoreRuntime/transport.d.ts.map +1 -1
- package/dist/types/ag-ui/adapter.d.ts +61 -11
- package/dist/types/ag-ui/adapter.d.ts.map +1 -1
- package/dist/types/ag-ui/framing.d.ts +2 -1
- package/dist/types/ag-ui/framing.d.ts.map +1 -1
- package/dist/types/ag-ui/index.d.ts +6 -4
- package/dist/types/ag-ui/index.d.ts.map +1 -1
- package/dist/types/ag-ui/request.d.ts +86 -7
- package/dist/types/ag-ui/request.d.ts.map +1 -1
- package/dist/types/answer-validation/index.d.ts +2 -1
- package/dist/types/answer-validation/index.d.ts.map +1 -1
- package/dist/types/answer-validation/toolLedger.d.ts +66 -0
- package/dist/types/answer-validation/toolLedger.d.ts.map +1 -0
- package/dist/types/answer-validation/types.d.ts +48 -0
- package/dist/types/answer-validation/types.d.ts.map +1 -1
- package/dist/types/answer-validation/validate.d.ts +2 -2
- package/dist/types/answer-validation/validate.d.ts.map +1 -1
- package/dist/types/classify/typesafe.d.ts.map +1 -1
- package/dist/types/core/Agent.d.ts +9 -1
- package/dist/types/core/Agent.d.ts.map +1 -1
- package/dist/types/core/LLMCall.d.ts +2 -1
- package/dist/types/core/LLMCall.d.ts.map +1 -1
- package/dist/types/core/RunnerBase.d.ts +39 -8
- package/dist/types/core/RunnerBase.d.ts.map +1 -1
- package/dist/types/core/agent/buildAgentChart.d.ts.map +1 -1
- package/dist/types/core/agent/buildAgentMessageApiChart.d.ts +16 -0
- package/dist/types/core/agent/buildAgentMessageApiChart.d.ts.map +1 -1
- package/dist/types/core/agent/buildDynamicAgentChart.d.ts.map +1 -1
- package/dist/types/core/agent/buildMessageApiChart.d.ts +16 -0
- package/dist/types/core/agent/buildMessageApiChart.d.ts.map +1 -1
- package/dist/types/core/agent/stages/answerValidation.d.ts.map +1 -1
- package/dist/types/core/agent/stages/callLLM.d.ts.map +1 -1
- package/dist/types/core/agent/stages/routeTurn.d.ts.map +1 -1
- package/dist/types/core/agent/stages/seed.d.ts +7 -0
- package/dist/types/core/agent/stages/seed.d.ts.map +1 -1
- package/dist/types/core/agent/stages/toolCalls.d.ts +21 -0
- package/dist/types/core/agent/stages/toolCalls.d.ts.map +1 -1
- package/dist/types/core/agent/types.d.ts +10 -0
- package/dist/types/core/agent/types.d.ts.map +1 -1
- package/dist/types/core/agent/window/strategies/summarizeOldest.d.ts.map +1 -1
- package/dist/types/core/agent/window/summarize.d.ts.map +1 -1
- package/dist/types/core/memberRun.d.ts +23 -2
- package/dist/types/core/memberRun.d.ts.map +1 -1
- package/dist/types/core/requestOfRun.d.ts +22 -0
- package/dist/types/core/requestOfRun.d.ts.map +1 -0
- package/dist/types/core/runner.d.ts +15 -3
- package/dist/types/core/runner.d.ts.map +1 -1
- package/dist/types/core/slots/buildToolsSlot.d.ts +0 -16
- package/dist/types/core/slots/buildToolsSlot.d.ts.map +1 -1
- package/dist/types/core-flow/Conditional.d.ts +2 -1
- package/dist/types/core-flow/Conditional.d.ts.map +1 -1
- package/dist/types/core-flow/Graph.d.ts +2 -1
- package/dist/types/core-flow/Graph.d.ts.map +1 -1
- package/dist/types/core-flow/Loop.d.ts +2 -1
- package/dist/types/core-flow/Loop.d.ts.map +1 -1
- package/dist/types/core-flow/Parallel.d.ts +2 -1
- package/dist/types/core-flow/Parallel.d.ts.map +1 -1
- package/dist/types/core-flow/Sequence.d.ts +2 -1
- package/dist/types/core-flow/Sequence.d.ts.map +1 -1
- package/dist/types/core-flow/Workflow.d.ts +2 -1
- package/dist/types/core-flow/Workflow.d.ts.map +1 -1
- package/dist/types/doors/security.d.ts +2 -1
- package/dist/types/doors/security.d.ts.map +1 -1
- package/dist/types/events/payloads.d.ts +4 -2
- package/dist/types/events/payloads.d.ts.map +1 -1
- package/dist/types/hosting/index.d.ts +1 -0
- package/dist/types/hosting/index.d.ts.map +1 -1
- package/dist/types/hosting/protocolAdapter.d.ts +4 -1
- package/dist/types/hosting/protocolAdapter.d.ts.map +1 -1
- package/dist/types/hosting/refusalStatus.d.ts.map +1 -1
- package/dist/types/hosting/requestSealing.d.ts +66 -0
- package/dist/types/hosting/requestSealing.d.ts.map +1 -0
- package/dist/types/hosting/standingAgent.d.ts.map +1 -1
- package/dist/types/hosting/stream.d.ts +23 -2
- package/dist/types/hosting/stream.d.ts.map +1 -1
- package/dist/types/hosting/streamHandler.d.ts +26 -7
- package/dist/types/hosting/streamHandler.d.ts.map +1 -1
- package/dist/types/hosting/types.d.ts +29 -0
- package/dist/types/hosting/types.d.ts.map +1 -1
- package/dist/types/identity/requestContext.d.ts +97 -0
- package/dist/types/identity/requestContext.d.ts.map +1 -0
- package/dist/types/identity/requestCredentials.d.ts +100 -0
- package/dist/types/identity/requestCredentials.d.ts.map +1 -0
- package/dist/types/identity/types.d.ts +11 -0
- package/dist/types/identity/types.d.ts.map +1 -1
- package/dist/types/identity.d.ts +2 -0
- package/dist/types/identity.d.ts.map +1 -1
- package/dist/types/index.d.ts +3 -2
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/injection-engine/buildInjectionEngineSubflow.d.ts +11 -0
- package/dist/types/injection-engine/buildInjectionEngineSubflow.d.ts.map +1 -1
- package/dist/types/injection-engine/constrainedEnumPick.d.ts.map +1 -1
- package/dist/types/injection-engine/evaluator.d.ts +6 -0
- package/dist/types/injection-engine/evaluator.d.ts.map +1 -1
- package/dist/types/injection-engine/skillIntent.d.ts +4 -2
- package/dist/types/injection-engine/skillIntent.d.ts.map +1 -1
- package/dist/types/injection-engine/types.d.ts +27 -1
- package/dist/types/injection-engine/types.d.ts.map +1 -1
- package/dist/types/lib/abort.d.ts +158 -0
- package/dist/types/lib/abort.d.ts.map +1 -0
- package/dist/types/maps/engagement/parkCard.d.ts +5 -1
- package/dist/types/maps/engagement/parkCard.d.ts.map +1 -1
- package/dist/types/mcp/mcpServe.d.ts.map +1 -1
- package/dist/types/mcp/plainData.d.ts +45 -0
- package/dist/types/mcp/plainData.d.ts.map +1 -0
- package/dist/types/mcp/sdkLoadFailure.d.ts +6 -7
- package/dist/types/mcp/sdkLoadFailure.d.ts.map +1 -1
- package/dist/types/mcp/toolResult.d.ts.map +1 -1
- package/dist/types/mcp/types.d.ts +10 -6
- package/dist/types/mcp/types.d.ts.map +1 -1
- package/dist/types/memory/beats/llmExtractor.d.ts.map +1 -1
- package/dist/types/memory/facts/llmFactExtractor.d.ts.map +1 -1
- package/dist/types/memory/stages/summarize.d.ts.map +1 -1
- package/dist/types/patterns/LlmRouter.d.ts.map +1 -1
- package/dist/types/redaction/conversation.d.ts.map +1 -1
- package/dist/types/redaction/knownStrings.d.ts.map +1 -1
- package/dist/types/reliability/buildReliabilityGateChart.d.ts.map +1 -1
- package/dist/types/resilience/withCircuitBreaker.d.ts.map +1 -1
- package/dist/types/resilience/withFallback.d.ts.map +1 -1
- package/dist/types/resilience/withRetry.d.ts.map +1 -1
- package/dist/types/tools/hostFilled.d.ts +111 -0
- package/dist/types/tools/hostFilled.d.ts.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* plainData — copy the JSON data domain out of an untrusted value.
|
|
3
|
+
*
|
|
4
|
+
* MCP `structuredContent` arrives from a transport the library does not own,
|
|
5
|
+
* so the value may be anything: a class instance, a Proxy, an object with
|
|
6
|
+
* getters, or a plain object built in another realm (jest's environment,
|
|
7
|
+
* `node:vm`, an iframe). This module answers one question — is this plain JSON
|
|
8
|
+
* data? — and, when it is, hands back a COPY made of this realm's own objects
|
|
9
|
+
* and arrays, built from property descriptors read once each.
|
|
10
|
+
*
|
|
11
|
+
* Why a copy rather than the value itself: whatever the source does after it
|
|
12
|
+
* was checked (a Proxy trap that redefines a property it already reported, a
|
|
13
|
+
* foreign prototype whose methods were replaced) cannot reach the copy. The
|
|
14
|
+
* copy keeps every own key as a data property (`__proto__` included), keeps a
|
|
15
|
+
* null prototype null, and holds nothing else: no getter, no foreign prototype, no Proxy.
|
|
16
|
+
*
|
|
17
|
+
* Plain objects and arrays are recognised by STRUCTURE, not by identity with
|
|
18
|
+
* this realm's `Object.prototype`, because each realm has its own intrinsics:
|
|
19
|
+
*
|
|
20
|
+
* - `Object.prototype` of a realm: its own prototype is null;
|
|
21
|
+
* - `Array.prototype` of a realm: an array whose own prototype is a realm's
|
|
22
|
+
* `Object.prototype`;
|
|
23
|
+
* - its own `constructor` is a data property holding that realm's native
|
|
24
|
+
* `Object` / `Array` (source text `function Object() { [native code] }`),
|
|
25
|
+
* whose own `prototype` data property points straight back at it — a link
|
|
26
|
+
* a user-made object or a Proxy cannot forge, because a native
|
|
27
|
+
* constructor's `prototype` is non-writable and non-configurable;
|
|
28
|
+
* - it carries the same own keys as this realm's intrinsic, each with the
|
|
29
|
+
* same descriptor kind (data or accessor), so an added getter is refused;
|
|
30
|
+
* - `Object.prototype.toString` names it `[object Object]` / `[object Array]`.
|
|
31
|
+
*
|
|
32
|
+
* Only descriptors are read: no getter, `toJSON` or `valueOf` runs. A Proxy is
|
|
33
|
+
* refused before any trap runs wherever the runtime can say what a Proxy is
|
|
34
|
+
* (Node's `util.types.isProxy`, reached through `process.getBuiltinModule` at
|
|
35
|
+
* call time, so nothing is imported and the module stays browser-clean).
|
|
36
|
+
* Elsewhere a Proxy's traps answer the walk like any object's descriptors do,
|
|
37
|
+
* and only what they answered reaches the copy.
|
|
38
|
+
*/
|
|
39
|
+
/**
|
|
40
|
+
* A copy of `value` when it is a JSON object (not an array, not a scalar)
|
|
41
|
+
* within the bounds, made of this realm's objects; `undefined` otherwise.
|
|
42
|
+
* Never throws for a hostile value: any trap or check that throws refuses.
|
|
43
|
+
*/
|
|
44
|
+
export declare function copyJsonObject(value: unknown): Record<string, unknown> | undefined;
|
|
@@ -0,0 +1,204 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* plainData — copy the JSON data domain out of an untrusted value.
|
|
3
|
+
*
|
|
4
|
+
* MCP `structuredContent` arrives from a transport the library does not own,
|
|
5
|
+
* so the value may be anything: a class instance, a Proxy, an object with
|
|
6
|
+
* getters, or a plain object built in another realm (jest's environment,
|
|
7
|
+
* `node:vm`, an iframe). This module answers one question — is this plain JSON
|
|
8
|
+
* data? — and, when it is, hands back a COPY made of this realm's own objects
|
|
9
|
+
* and arrays, built from property descriptors read once each.
|
|
10
|
+
*
|
|
11
|
+
* Why a copy rather than the value itself: whatever the source does after it
|
|
12
|
+
* was checked (a Proxy trap that redefines a property it already reported, a
|
|
13
|
+
* foreign prototype whose methods were replaced) cannot reach the copy. The
|
|
14
|
+
* copy keeps every own key as a data property (`__proto__` included), keeps a
|
|
15
|
+
* null prototype null, and holds nothing else: no getter, no foreign prototype, no Proxy.
|
|
16
|
+
*
|
|
17
|
+
* Plain objects and arrays are recognised by STRUCTURE, not by identity with
|
|
18
|
+
* this realm's `Object.prototype`, because each realm has its own intrinsics:
|
|
19
|
+
*
|
|
20
|
+
* - `Object.prototype` of a realm: its own prototype is null;
|
|
21
|
+
* - `Array.prototype` of a realm: an array whose own prototype is a realm's
|
|
22
|
+
* `Object.prototype`;
|
|
23
|
+
* - its own `constructor` is a data property holding that realm's native
|
|
24
|
+
* `Object` / `Array` (source text `function Object() { [native code] }`),
|
|
25
|
+
* whose own `prototype` data property points straight back at it — a link
|
|
26
|
+
* a user-made object or a Proxy cannot forge, because a native
|
|
27
|
+
* constructor's `prototype` is non-writable and non-configurable;
|
|
28
|
+
* - it carries the same own keys as this realm's intrinsic, each with the
|
|
29
|
+
* same descriptor kind (data or accessor), so an added getter is refused;
|
|
30
|
+
* - `Object.prototype.toString` names it `[object Object]` / `[object Array]`.
|
|
31
|
+
*
|
|
32
|
+
* Only descriptors are read: no getter, `toJSON` or `valueOf` runs. A Proxy is
|
|
33
|
+
* refused before any trap runs wherever the runtime can say what a Proxy is
|
|
34
|
+
* (Node's `util.types.isProxy`, reached through `process.getBuiltinModule` at
|
|
35
|
+
* call time, so nothing is imported and the module stays browser-clean).
|
|
36
|
+
* Elsewhere a Proxy's traps answer the walk like any object's descriptors do,
|
|
37
|
+
* and only what they answered reaches the copy.
|
|
38
|
+
*/
|
|
39
|
+
const LOCAL = {
|
|
40
|
+
Object: Object.prototype,
|
|
41
|
+
Array: Array.prototype,
|
|
42
|
+
};
|
|
43
|
+
/**
|
|
44
|
+
* A realm's own constructor, as `Function.prototype.toString` prints it. V8
|
|
45
|
+
* prints `function Object() { [native code] }`; SpiderMonkey and JavaScriptCore
|
|
46
|
+
* put the body on its own lines, so whitespace inside the braces is free.
|
|
47
|
+
*/
|
|
48
|
+
const NATIVE_SOURCE = {
|
|
49
|
+
Object: /^function Object\(\) \{\s*\[native code\]\s*\}$/,
|
|
50
|
+
Array: /^function Array\(\) \{\s*\[native code\]\s*\}$/,
|
|
51
|
+
};
|
|
52
|
+
/** The documented decoding bounds. */
|
|
53
|
+
const MAX_VALUES = 1_000_000;
|
|
54
|
+
const MAX_DEPTH = 64;
|
|
55
|
+
/**
|
|
56
|
+
* A copy of `value` when it is a JSON object (not an array, not a scalar)
|
|
57
|
+
* within the bounds, made of this realm's objects; `undefined` otherwise.
|
|
58
|
+
* Never throws for a hostile value: any trap or check that throws refuses.
|
|
59
|
+
*/
|
|
60
|
+
export function copyJsonObject(value) {
|
|
61
|
+
try {
|
|
62
|
+
if (value === null || typeof value !== 'object' || isProxyValue(value))
|
|
63
|
+
return undefined;
|
|
64
|
+
if (Array.isArray(value))
|
|
65
|
+
return undefined;
|
|
66
|
+
const copied = new JsonCopier().copy(value, 0);
|
|
67
|
+
return copied === undefined ? undefined : copied;
|
|
68
|
+
}
|
|
69
|
+
catch {
|
|
70
|
+
return undefined;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* One walk: its visit counter and its cycle guard.
|
|
75
|
+
*
|
|
76
|
+
* No memo for shared sub-objects, on purpose: each path is walked and counted,
|
|
77
|
+
* so the bounds hold for what the copy really contains (a memo let a DAG of a
|
|
78
|
+
* few hundred references stand for a copy of 2^60 nodes).
|
|
79
|
+
*/
|
|
80
|
+
class JsonCopier {
|
|
81
|
+
visited = 0;
|
|
82
|
+
ancestors = new Set();
|
|
83
|
+
verified = new WeakSet();
|
|
84
|
+
/** The copy of `item`, or `undefined` when it is not JSON data. */
|
|
85
|
+
copy(item, depth) {
|
|
86
|
+
if (++this.visited > MAX_VALUES)
|
|
87
|
+
return undefined;
|
|
88
|
+
if (item === null || typeof item === 'string' || typeof item === 'boolean')
|
|
89
|
+
return item;
|
|
90
|
+
if (typeof item === 'number')
|
|
91
|
+
return Number.isFinite(item) ? item : undefined;
|
|
92
|
+
if (typeof item !== 'object' || depth >= MAX_DEPTH || this.ancestors.has(item))
|
|
93
|
+
return undefined;
|
|
94
|
+
if (isProxyValue(item))
|
|
95
|
+
return undefined;
|
|
96
|
+
return this.copyContainer(item, depth);
|
|
97
|
+
}
|
|
98
|
+
copyContainer(item, depth) {
|
|
99
|
+
const array = Array.isArray(item);
|
|
100
|
+
const prototype = Object.getPrototypeOf(item);
|
|
101
|
+
const plain = array
|
|
102
|
+
? isIntrinsicPrototype(prototype, 'Array', this.verified)
|
|
103
|
+
: prototype === null || isIntrinsicPrototype(prototype, 'Object', this.verified);
|
|
104
|
+
if (!plain)
|
|
105
|
+
return undefined;
|
|
106
|
+
const keys = Reflect.ownKeys(item);
|
|
107
|
+
// The length descriptor, not `item.length`: a Get could run code.
|
|
108
|
+
const length = array ? Object.getOwnPropertyDescriptor(item, 'length')?.value : 0;
|
|
109
|
+
if (typeof length !== 'number' || (array && keys.length !== length + 1))
|
|
110
|
+
return undefined;
|
|
111
|
+
const out = array ? [] : prototype === null ? Object.create(null) : {};
|
|
112
|
+
this.ancestors.add(item);
|
|
113
|
+
try {
|
|
114
|
+
for (const key of keys) {
|
|
115
|
+
if (array && key === 'length')
|
|
116
|
+
continue;
|
|
117
|
+
if (typeof key !== 'string')
|
|
118
|
+
return undefined;
|
|
119
|
+
if (array && (!/^(0|[1-9]\d*)$/.test(key) || Number(key) >= length))
|
|
120
|
+
return undefined;
|
|
121
|
+
const descriptor = Object.getOwnPropertyDescriptor(item, key);
|
|
122
|
+
if (descriptor === undefined || !descriptor.enumerable || !('value' in descriptor))
|
|
123
|
+
return undefined;
|
|
124
|
+
const value = this.copy(descriptor.value, depth + 1);
|
|
125
|
+
if (value === undefined)
|
|
126
|
+
return undefined;
|
|
127
|
+
// A data property of its own, whatever the key: `__proto__` stays a key.
|
|
128
|
+
Object.defineProperty(out, key, {
|
|
129
|
+
value,
|
|
130
|
+
writable: true,
|
|
131
|
+
enumerable: true,
|
|
132
|
+
configurable: true,
|
|
133
|
+
});
|
|
134
|
+
}
|
|
135
|
+
return out;
|
|
136
|
+
}
|
|
137
|
+
finally {
|
|
138
|
+
this.ancestors.delete(item);
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
function isIntrinsicPrototype(proto, name, verified) {
|
|
143
|
+
if (proto === LOCAL[name])
|
|
144
|
+
return true;
|
|
145
|
+
if (typeof proto !== 'object' || proto === null || isProxyValue(proto))
|
|
146
|
+
return false;
|
|
147
|
+
if (verified.has(proto))
|
|
148
|
+
return true;
|
|
149
|
+
const parent = Object.getPrototypeOf(proto);
|
|
150
|
+
const parentOk = name === 'Object' ? parent === null : isIntrinsicPrototype(parent, 'Object', verified);
|
|
151
|
+
if (!parentOk || Array.isArray(proto) !== (name === 'Array'))
|
|
152
|
+
return false;
|
|
153
|
+
if (!nativeConstructorLinksBack(proto, name) || !sameShape(proto, LOCAL[name]))
|
|
154
|
+
return false;
|
|
155
|
+
// Safe only now: the shape matches this realm's intrinsic, which has no own
|
|
156
|
+
// Symbol.toStringTag, and the parent chain is verified, so no getter runs.
|
|
157
|
+
if (Object.prototype.toString.call(proto) !== `[object ${name}]`)
|
|
158
|
+
return false;
|
|
159
|
+
verified.add(proto);
|
|
160
|
+
return true;
|
|
161
|
+
}
|
|
162
|
+
function nativeConstructorLinksBack(proto, name) {
|
|
163
|
+
const ctor = Object.getOwnPropertyDescriptor(proto, 'constructor');
|
|
164
|
+
if (ctor === undefined || !('value' in ctor) || typeof ctor.value !== 'function')
|
|
165
|
+
return false;
|
|
166
|
+
// Function.prototype.toString never runs user code; a Proxy or bound function
|
|
167
|
+
// prints an anonymous native body, a class prints its source.
|
|
168
|
+
if (!NATIVE_SOURCE[name].test(Function.prototype.toString.call(ctor.value)))
|
|
169
|
+
return false;
|
|
170
|
+
const back = Object.getOwnPropertyDescriptor(ctor.value, 'prototype');
|
|
171
|
+
return back !== undefined && 'value' in back && back.value === proto;
|
|
172
|
+
}
|
|
173
|
+
function sameShape(candidate, local) {
|
|
174
|
+
const keys = Reflect.ownKeys(local);
|
|
175
|
+
if (Reflect.ownKeys(candidate).length !== keys.length)
|
|
176
|
+
return false;
|
|
177
|
+
for (const key of keys) {
|
|
178
|
+
const theirs = Object.getOwnPropertyDescriptor(candidate, key);
|
|
179
|
+
const ours = Object.getOwnPropertyDescriptor(local, key);
|
|
180
|
+
if (theirs === undefined || ours === undefined || 'value' in theirs !== 'value' in ours)
|
|
181
|
+
return false;
|
|
182
|
+
}
|
|
183
|
+
return true;
|
|
184
|
+
}
|
|
185
|
+
let proxyCheck;
|
|
186
|
+
/** Node's `util.types.isProxy`, looked up once; runs no trap. False where absent. */
|
|
187
|
+
function isProxyValue(value) {
|
|
188
|
+
if (proxyCheck === undefined) {
|
|
189
|
+
proxyCheck = null;
|
|
190
|
+
try {
|
|
191
|
+
const host = globalThis
|
|
192
|
+
.process;
|
|
193
|
+
const util = host?.getBuiltinModule?.('node:util');
|
|
194
|
+
const check = util?.types?.isProxy;
|
|
195
|
+
if (typeof check === 'function')
|
|
196
|
+
proxyCheck = check;
|
|
197
|
+
}
|
|
198
|
+
catch {
|
|
199
|
+
proxyCheck = null;
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
return proxyCheck !== null && proxyCheck(value);
|
|
203
|
+
}
|
|
204
|
+
//# sourceMappingURL=plainData.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plainData.js","sourceRoot":"","sources":["../../../src/mcp/plainData.ts"],"names":[],"mappings":"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"}
|
|
@@ -17,10 +17,10 @@
|
|
|
17
17
|
* already have, watches nothing change, and concludes MCP does not work here.
|
|
18
18
|
*
|
|
19
19
|
* ── The contract ─────────────────────────────────────────────────────────────
|
|
20
|
-
* The absent-package message is passed IN and returned VERBATIM
|
|
21
|
-
*
|
|
22
|
-
*
|
|
23
|
-
*
|
|
20
|
+
* The absent-package message is passed IN and returned VERBATIM: each load
|
|
21
|
+
* site owns its own wording (install the package, or — in a bundled app — pass
|
|
22
|
+
* the module as `sdk`). The second arm names the underlying failure and the
|
|
23
|
+
* seam that gets past it.
|
|
24
24
|
*
|
|
25
25
|
* Pattern: pure classifier. No I/O, no throwing, no vendor names beyond the
|
|
26
26
|
* package it reports on. Role: Layer-3 tool transport, shared by `mcpClient`
|
|
@@ -33,9 +33,8 @@
|
|
|
33
33
|
*/
|
|
34
34
|
export interface SdkLoadFailureNotes {
|
|
35
35
|
/**
|
|
36
|
-
* The
|
|
37
|
-
*
|
|
38
|
-
* a consumer scripting against that text keeps working.
|
|
36
|
+
* The site's own absent-package message, returned unchanged — the
|
|
37
|
+
* classifier never rewrites it.
|
|
39
38
|
*/
|
|
40
39
|
readonly notInstalled: string;
|
|
41
40
|
/** The function the consumer called, e.g. `'mcpClient'`. */
|
|
@@ -17,10 +17,10 @@
|
|
|
17
17
|
* already have, watches nothing change, and concludes MCP does not work here.
|
|
18
18
|
*
|
|
19
19
|
* ── The contract ─────────────────────────────────────────────────────────────
|
|
20
|
-
* The absent-package message is passed IN and returned VERBATIM
|
|
21
|
-
*
|
|
22
|
-
*
|
|
23
|
-
*
|
|
20
|
+
* The absent-package message is passed IN and returned VERBATIM: each load
|
|
21
|
+
* site owns its own wording (install the package, or — in a bundled app — pass
|
|
22
|
+
* the module as `sdk`). The second arm names the underlying failure and the
|
|
23
|
+
* seam that gets past it.
|
|
24
24
|
*
|
|
25
25
|
* Pattern: pure classifier. No I/O, no throwing, no vendor names beyond the
|
|
26
26
|
* package it reports on. Role: Layer-3 tool transport, shared by `mcpClient`
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sdkLoadFailure.js","sourceRoot":"","sources":["../../../src/mcp/sdkLoadFailure.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;
|
|
1
|
+
{"version":3,"file":"sdkLoadFailure.js","sourceRoot":"","sources":["../../../src/mcp/sdkLoadFailure.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAyBH;;;;;;;GAOG;AACH,MAAM,UAAU,cAAc,CAAC,GAAY,EAAE,KAA0B;IACrE,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;IAC7B,IAAI,gBAAgB,CAAC,MAAM,CAAC;QAAE,OAAO,KAAK,CAAC,YAAY,CAAC;IACxD,OAAO,CACL,GAAG,KAAK,CAAC,MAAM,mBAAmB,KAAK,CAAC,SAAS,6BAA6B;QAC9E,yBAAyB,MAAM,IAAI;QACnC,iFAAiF;QACjF,yDAAyD;QACzD,KAAK,KAAK,CAAC,OAAO,EAAE,CACrB,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,SAAS,gBAAgB,CAAC,MAAc;IACtC,OAAO,gGAAgG,CAAC,IAAI,CAC1G,MAAM,CACP,CAAC;AACJ,CAAC;AAED,0EAA0E;AAC1E,SAAS,QAAQ,CAAC,GAAY;IAC5B,IAAI,GAAG,YAAY,KAAK;QAAE,OAAO,GAAG,CAAC,OAAO,CAAC;IAC7C,IAAI,CAAC;QACH,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;IACrB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,wCAAwC,CAAC;IAClD,CAAC;AACH,CAAC"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { copyJsonObject } from './plainData.js';
|
|
1
2
|
/** Validate before opening a transport; a misspelled opt-in must not disappear. */
|
|
2
3
|
export function resultModeOf(value, name) {
|
|
3
4
|
if (value === undefined)
|
|
@@ -36,9 +37,11 @@ export function readToolResult(result, toolName, serverName, mode = 'text') {
|
|
|
36
37
|
try {
|
|
37
38
|
const structured = Object.getOwnPropertyDescriptor(result, 'structuredContent');
|
|
38
39
|
if (structured !== undefined) {
|
|
39
|
-
|
|
40
|
+
// A copy of this realm's own objects, never the transport's value: see plainData.ts.
|
|
41
|
+
const copied = 'value' in structured ? copyJsonObject(structured.value) : undefined;
|
|
42
|
+
if (copied === undefined)
|
|
40
43
|
throw invalid();
|
|
41
|
-
return
|
|
44
|
+
return copied;
|
|
42
45
|
}
|
|
43
46
|
if (mode !== 'structured-or-json')
|
|
44
47
|
throw invalid();
|
|
@@ -52,9 +55,10 @@ export function readToolResult(result, toolName, serverName, mode = 'text') {
|
|
|
52
55
|
if (typeof text !== 'string' || text.length > 16_000_000)
|
|
53
56
|
throw invalid();
|
|
54
57
|
const parsed = JSON.parse(text);
|
|
55
|
-
|
|
58
|
+
const copied = copyJsonObject(parsed);
|
|
59
|
+
if (copied === undefined)
|
|
56
60
|
throw invalid();
|
|
57
|
-
return
|
|
61
|
+
return copied;
|
|
58
62
|
}
|
|
59
63
|
catch {
|
|
60
64
|
// Parser and getter exceptions may echo source bytes. Keep the refusal
|
|
@@ -101,52 +105,6 @@ function ownValue(value, key) {
|
|
|
101
105
|
throw new Error('Accessor is not JSON data');
|
|
102
106
|
return descriptor?.value;
|
|
103
107
|
}
|
|
104
|
-
/** Validate the JSON data domain without invoking toJSON/getters, converting
|
|
105
|
-
* unknown to null or dropping unsupported fields. No clone or normalization. */
|
|
106
|
-
function jsonObject(value) {
|
|
107
|
-
if (value === null || typeof value !== 'object' || Array.isArray(value))
|
|
108
|
-
return false;
|
|
109
|
-
const ancestors = new Set();
|
|
110
|
-
let visited = 0;
|
|
111
|
-
function visit(item, depth) {
|
|
112
|
-
if (++visited > 1_000_000)
|
|
113
|
-
return false;
|
|
114
|
-
if (item === null || typeof item === 'string' || typeof item === 'boolean')
|
|
115
|
-
return true;
|
|
116
|
-
if (typeof item === 'number')
|
|
117
|
-
return Number.isFinite(item);
|
|
118
|
-
if (typeof item !== 'object' || depth >= 64 || ancestors.has(item))
|
|
119
|
-
return false;
|
|
120
|
-
const array = Array.isArray(item);
|
|
121
|
-
const prototype = Object.getPrototypeOf(item);
|
|
122
|
-
if (array ? prototype !== Array.prototype : prototype !== Object.prototype && prototype !== null)
|
|
123
|
-
return false;
|
|
124
|
-
ancestors.add(item);
|
|
125
|
-
try {
|
|
126
|
-
const keys = Reflect.ownKeys(item);
|
|
127
|
-
if (array && keys.length !== item.length + 1)
|
|
128
|
-
return false;
|
|
129
|
-
for (const key of keys) {
|
|
130
|
-
if (array && key === 'length')
|
|
131
|
-
continue;
|
|
132
|
-
if (typeof key !== 'string')
|
|
133
|
-
return false;
|
|
134
|
-
if (array && (!/^(0|[1-9]\d*)$/.test(key) || Number(key) >= item.length))
|
|
135
|
-
return false;
|
|
136
|
-
const descriptor = Object.getOwnPropertyDescriptor(item, key);
|
|
137
|
-
if (!descriptor.enumerable ||
|
|
138
|
-
!('value' in descriptor) ||
|
|
139
|
-
!visit(descriptor.value, depth + 1))
|
|
140
|
-
return false;
|
|
141
|
-
}
|
|
142
|
-
return true;
|
|
143
|
-
}
|
|
144
|
-
finally {
|
|
145
|
-
ancestors.delete(item);
|
|
146
|
-
}
|
|
147
|
-
}
|
|
148
|
-
return visit(value, 0);
|
|
149
|
-
}
|
|
150
108
|
// ─── Reading a tools/call answer (both arms of the protocol) ───────
|
|
151
109
|
/**
|
|
152
110
|
* Turn a `tools/call` answer into the text the agent hands the model.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"toolResult.js","sourceRoot":"","sources":["../../../src/mcp/toolResult.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"toolResult.js","sourceRoot":"","sources":["../../../src/mcp/toolResult.ts"],"names":[],"mappings":"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"}
|
package/dist/esm/mcp/types.d.ts
CHANGED
|
@@ -211,17 +211,21 @@ export interface McpClientOptions {
|
|
|
211
211
|
readonly retryOnThrottle?: RetryOnThrottle;
|
|
212
212
|
/**
|
|
213
213
|
* Pre-resolved SDK modules. Give these and the library never touches its Node
|
|
214
|
-
* `require` loader — which is
|
|
215
|
-
*
|
|
214
|
+
* `require` loader — which is what lets a browser bundle speak MCP over
|
|
215
|
+
* `http`, and what a server bundle (esbuild, webpack) needs too: a bundler
|
|
216
|
+
* cannot follow the lazy `require`, so without `sdk` a bundled app that did
|
|
217
|
+
* not ship `node_modules` is refused when the client is built.
|
|
216
218
|
*
|
|
217
219
|
* Everything else keeps working, because the library still builds the
|
|
218
220
|
* transport: gateway vending, `retryOnThrottle`, `headers`, your own `fetch`,
|
|
219
221
|
* `_meta` ingestion. Omit it and the loader runs exactly as it always has.
|
|
222
|
+
* Either way the modules are read, and checked, when `mcpClient()` is
|
|
223
|
+
* called — never at a later tool call.
|
|
220
224
|
*
|
|
221
|
-
*
|
|
222
|
-
* cannot run in a browser at all
|
|
223
|
-
* `client/stdio.js` through the Node loader, which is also what
|
|
224
|
-
* SDK's only Node-bound client module off a browser's module graph.
|
|
225
|
+
* For `transport: 'stdio'` only `Client` is taken from here: stdio spawns a
|
|
226
|
+
* subprocess and therefore cannot run in a browser at all, so that branch
|
|
227
|
+
* keeps loading `client/stdio.js` through the Node loader, which is also what
|
|
228
|
+
* keeps the SDK's only Node-bound client module off a browser's module graph.
|
|
225
229
|
*
|
|
226
230
|
* @see McpSdk for the two static imports that produce it.
|
|
227
231
|
*/
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { callUnder } from '../../lib/abort.js';
|
|
1
2
|
import { asImportance } from './types.js';
|
|
2
3
|
const DEFAULT_SYSTEM_PROMPT = `You are an extractor that distills a single turn of a conversation into narrative beats for long-term memory.
|
|
3
4
|
|
|
@@ -82,12 +83,14 @@ export function llmExtractor(config) {
|
|
|
82
83
|
return {
|
|
83
84
|
async extract(args) {
|
|
84
85
|
const userContent = formatMessagesForExtractor(args.messages, args.turnNumber);
|
|
85
|
-
|
|
86
|
+
// The run's signal rides the request and bounds the wait; an answer
|
|
87
|
+
// that lands after it is refused (lib/abort.ts · callUnder).
|
|
88
|
+
const request = {
|
|
86
89
|
systemPrompt,
|
|
87
90
|
messages: [{ role: 'user', content: userContent }],
|
|
88
91
|
model: 'memory-extractor',
|
|
89
|
-
|
|
90
|
-
|
|
92
|
+
};
|
|
93
|
+
const response = await callUnder(request, args.signal, (wired) => provider.complete(wired));
|
|
91
94
|
return parseBeatsResponse(response.content ?? '', onParseError);
|
|
92
95
|
},
|
|
93
96
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"llmExtractor.js","sourceRoot":"","sources":["../../../../src/memory/beats/llmExtractor.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"llmExtractor.js","sourceRoot":"","sources":["../../../../src/memory/beats/llmExtractor.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { callUnder } from '../../lib/abort.js';
|
|
1
2
|
import { asConfidence } from './types.js';
|
|
2
3
|
const DEFAULT_SYSTEM_PROMPT = `You are an extractor that distills a turn of conversation into stable, timeless facts for long-term memory.
|
|
3
4
|
|
|
@@ -107,12 +108,14 @@ export function llmFactExtractor(config) {
|
|
|
107
108
|
const turn = formatMessagesForExtractor(args.messages, args.turnNumber);
|
|
108
109
|
const prior = formatExistingFacts(args.existing ?? [], includeExistingLimit);
|
|
109
110
|
const userContent = prior.length > 0 ? `${prior}\n\n${turn}` : turn;
|
|
110
|
-
|
|
111
|
+
// The run's signal rides the request and bounds the wait; an answer
|
|
112
|
+
// that lands after it is refused (lib/abort.ts · callUnder).
|
|
113
|
+
const request = {
|
|
111
114
|
systemPrompt,
|
|
112
115
|
messages: [{ role: 'user', content: userContent }],
|
|
113
116
|
model: 'memory-extractor',
|
|
114
|
-
|
|
115
|
-
|
|
117
|
+
};
|
|
118
|
+
const response = await callUnder(request, args.signal, (wired) => provider.complete(wired));
|
|
116
119
|
return parseFactsResponse(response.content ?? '', onParseError);
|
|
117
120
|
},
|
|
118
121
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"llmFactExtractor.js","sourceRoot":"","sources":["../../../../src/memory/facts/llmFactExtractor.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"llmFactExtractor.js","sourceRoot":"","sources":["../../../../src/memory/facts/llmFactExtractor.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { emitServed } from '../../redaction/runRedaction.js';
|
|
2
|
+
import { awaitUnder, callUnder, throwIfAborted } from '../../lib/abort.js';
|
|
2
3
|
/** Id prefix for every entry this stage writes. */
|
|
3
4
|
export const SUMMARY_ID_PREFIX = 'msg-summary-';
|
|
4
5
|
/** Metadata key carrying {@link SummaryCoverage} on a summary entry. */
|
|
@@ -206,10 +207,14 @@ export function summarize(config) {
|
|
|
206
207
|
}
|
|
207
208
|
// ── 4. The one call ──────────────────────────────────────────────
|
|
208
209
|
let summary;
|
|
210
|
+
const signal = scope.$getEnv?.()?.signal;
|
|
209
211
|
try {
|
|
210
|
-
summary = await callSummarizer(config.llm, provider, model, systemPrompt, span);
|
|
212
|
+
summary = await callSummarizer(config.llm, provider, model, systemPrompt, span, signal);
|
|
211
213
|
}
|
|
212
214
|
catch (err) {
|
|
215
|
+
// A cancelled run is not a summarizer outage: the abort leaves as itself,
|
|
216
|
+
// with nothing declined, latched or warned about (lib/abort.ts).
|
|
217
|
+
throwIfAborted(signal);
|
|
213
218
|
const cause = err instanceof Error ? err.message : String(err);
|
|
214
219
|
if (!warned) {
|
|
215
220
|
warned = true;
|
|
@@ -365,17 +370,20 @@ function foldSeam(raw, preserveRecent) {
|
|
|
365
370
|
return splitAt;
|
|
366
371
|
}
|
|
367
372
|
/** Make the one call, in whichever of the two shapes was configured. */
|
|
368
|
-
async function callSummarizer(llm, provider, model, systemPrompt, span) {
|
|
373
|
+
async function callSummarizer(llm, provider, model, systemPrompt, span, signal) {
|
|
369
374
|
if (provider !== undefined && model !== undefined) {
|
|
370
375
|
// Un-decorated on purpose, the same way `runSummarizer` is: no retry loop,
|
|
371
376
|
// no fallback, no cache. A fold is optional work — the recall is correct
|
|
372
377
|
// without it — so it may not spend the agent's resilience budget, and a
|
|
373
378
|
// summarizer outage may not open a circuit in front of the real calls.
|
|
374
|
-
|
|
379
|
+
// The run's signal rides the request, so a cancelled run stops paying for
|
|
380
|
+
// the fold too, and a late answer is not counted (lib/abort.ts).
|
|
381
|
+
const request = {
|
|
375
382
|
systemPrompt,
|
|
376
383
|
messages: [{ role: 'user', content: renderTranscript(span) }],
|
|
377
384
|
model,
|
|
378
|
-
}
|
|
385
|
+
};
|
|
386
|
+
const response = await callUnder(request, signal, (wired) => provider.complete(wired));
|
|
379
387
|
return {
|
|
380
388
|
text: response.content,
|
|
381
389
|
usage: { input: response.usage.input, output: response.usage.output },
|
|
@@ -387,6 +395,9 @@ async function callSummarizer(llm, provider, model, systemPrompt, span) {
|
|
|
387
395
|
{ role: 'system', content: systemPrompt },
|
|
388
396
|
...span.map((e) => e.value),
|
|
389
397
|
];
|
|
390
|
-
|
|
398
|
+
// The callback is handed no signal (its contract), so it cannot be cancelled;
|
|
399
|
+
// it is still not called on a cancelled run, not waited for once the run is
|
|
400
|
+
// cancelled, and a summary that lands after that is not folded in.
|
|
401
|
+
return { text: await awaitUnder(signal, () => llm(messages)) };
|
|
391
402
|
}
|
|
392
403
|
//# sourceMappingURL=summarize.js.map
|