@stigmer/runner 3.10.0 → 3.11.1-dev.20260812192248
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/README.md +14 -1
- package/dist/.build-fingerprint +1 -1
- package/dist/activities/call-llm.js +9 -10
- package/dist/activities/call-llm.js.map +1 -1
- package/dist/activities/classify-tool-approvals.d.ts +2 -1
- package/dist/activities/classify-tool-approvals.js +28 -2
- package/dist/activities/classify-tool-approvals.js.map +1 -1
- package/dist/activities/discover-mcp-server.d.ts +39 -0
- package/dist/activities/discover-mcp-server.js +165 -28
- package/dist/activities/discover-mcp-server.js.map +1 -1
- package/dist/activities/emit-event.d.ts +14 -2
- package/dist/activities/emit-event.js +52 -17
- package/dist/activities/emit-event.js.map +1 -1
- package/dist/activities/execute-cursor/__test-utils__/cursor-hook-harness.d.ts +8 -0
- package/dist/activities/execute-cursor/__test-utils__/cursor-hook-harness.js +1 -1
- package/dist/activities/execute-cursor/__test-utils__/cursor-hook-harness.js.map +1 -1
- package/dist/activities/execute-cursor/approval-state.d.ts +28 -2
- package/dist/activities/execute-cursor/approval-state.js +7 -1
- package/dist/activities/execute-cursor/approval-state.js.map +1 -1
- package/dist/activities/execute-cursor/attachment-resolver.d.ts +14 -0
- package/dist/activities/execute-cursor/attachment-resolver.js +18 -4
- package/dist/activities/execute-cursor/attachment-resolver.js.map +1 -1
- package/dist/activities/execute-cursor/blueprint-resolver.d.ts +1 -9
- package/dist/activities/execute-cursor/blueprint-resolver.js +6 -22
- package/dist/activities/execute-cursor/blueprint-resolver.js.map +1 -1
- package/dist/activities/execute-cursor/env-resolver.js +3 -1
- package/dist/activities/execute-cursor/env-resolver.js.map +1 -1
- package/dist/activities/execute-cursor/error-classifier.d.ts +59 -3
- package/dist/activities/execute-cursor/error-classifier.js +115 -6
- package/dist/activities/execute-cursor/error-classifier.js.map +1 -1
- package/dist/activities/execute-cursor/extract-structured-output.d.ts +29 -0
- package/dist/activities/execute-cursor/extract-structured-output.js +58 -0
- package/dist/activities/execute-cursor/extract-structured-output.js.map +1 -0
- package/dist/activities/execute-cursor/hook-script.d.ts +14 -3
- package/dist/activities/execute-cursor/hook-script.js +72 -10
- package/dist/activities/execute-cursor/hook-script.js.map +1 -1
- package/dist/activities/execute-cursor/index.d.ts +51 -11
- package/dist/activities/execute-cursor/index.js +177 -93
- package/dist/activities/execute-cursor/index.js.map +1 -1
- package/dist/activities/execute-cursor/mcp-resolver.d.ts +24 -1
- package/dist/activities/execute-cursor/mcp-resolver.js +5 -2
- package/dist/activities/execute-cursor/mcp-resolver.js.map +1 -1
- package/dist/activities/execute-cursor/model-pricing-data.d.ts +2 -0
- package/dist/activities/execute-cursor/model-pricing-data.js +13 -3
- package/dist/activities/execute-cursor/model-pricing-data.js.map +1 -1
- package/dist/activities/execute-cursor/prompt-builder.d.ts +51 -4
- package/dist/activities/execute-cursor/prompt-builder.js +49 -7
- package/dist/activities/execute-cursor/prompt-builder.js.map +1 -1
- package/dist/activities/execute-cursor/turn-recovery.d.ts +52 -0
- package/dist/activities/execute-cursor/turn-recovery.js +193 -0
- package/dist/activities/execute-cursor/turn-recovery.js.map +1 -0
- package/dist/activities/execute-cursor/turn-stream.js +4 -1
- package/dist/activities/execute-cursor/turn-stream.js.map +1 -1
- package/dist/activities/execute-deep-agent/attachment-injector.d.ts +18 -1
- package/dist/activities/execute-deep-agent/attachment-injector.js +68 -23
- package/dist/activities/execute-deep-agent/attachment-injector.js.map +1 -1
- package/dist/activities/execute-deep-agent/environment.js +3 -1
- package/dist/activities/execute-deep-agent/environment.js.map +1 -1
- package/dist/activities/execute-deep-agent/index.js +15 -0
- package/dist/activities/execute-deep-agent/index.js.map +1 -1
- package/dist/activities/execute-deep-agent/prompt-builder.d.ts +7 -7
- package/dist/activities/execute-deep-agent/prompt-builder.js +8 -2
- package/dist/activities/execute-deep-agent/prompt-builder.js.map +1 -1
- package/dist/activities/execute-deep-agent/setup.d.ts +10 -0
- package/dist/activities/execute-deep-agent/setup.js +65 -24
- package/dist/activities/execute-deep-agent/setup.js.map +1 -1
- package/dist/activities/execute-deep-agent/shell-env.d.ts +5 -1
- package/dist/activities/execute-deep-agent/shell-env.js +7 -9
- package/dist/activities/execute-deep-agent/shell-env.js.map +1 -1
- package/dist/activities/execute-deep-agent/subagent-transformer.d.ts +18 -1
- package/dist/activities/execute-deep-agent/subagent-transformer.js +15 -2
- package/dist/activities/execute-deep-agent/subagent-transformer.js.map +1 -1
- package/dist/activities/execute-deep-agent/subagent-wiring.d.ts +27 -6
- package/dist/activities/execute-deep-agent/subagent-wiring.js +26 -5
- package/dist/activities/execute-deep-agent/subagent-wiring.js.map +1 -1
- package/dist/activities/hydrate-workflow-execution.js +8 -3
- package/dist/activities/hydrate-workflow-execution.js.map +1 -1
- package/dist/activities/run-command.d.ts +5 -2
- package/dist/activities/run-command.js +22 -10
- package/dist/activities/run-command.js.map +1 -1
- package/dist/activities/run-env.d.ts +40 -0
- package/dist/activities/run-env.js +66 -0
- package/dist/activities/run-env.js.map +1 -0
- package/dist/activities/workflow-event-activities.d.ts +28 -10
- package/dist/activities/workflow-event-activities.js +87 -58
- package/dist/activities/workflow-event-activities.js.map +1 -1
- package/dist/bootstrap.js +5 -0
- package/dist/bootstrap.js.map +1 -1
- package/dist/claimcheck/payload-codec.js +21 -1
- package/dist/claimcheck/payload-codec.js.map +1 -1
- package/dist/client/stigmer-client.d.ts +83 -21
- package/dist/client/stigmer-client.js +106 -29
- package/dist/client/stigmer-client.js.map +1 -1
- package/dist/encryption/config.d.ts +64 -0
- package/dist/encryption/config.js +108 -0
- package/dist/encryption/config.js.map +1 -0
- package/dist/encryption/index.d.ts +3 -0
- package/dist/encryption/index.js +3 -0
- package/dist/encryption/index.js.map +1 -0
- package/dist/encryption/payload-codec.d.ts +41 -0
- package/dist/encryption/payload-codec.js +130 -0
- package/dist/encryption/payload-codec.js.map +1 -0
- package/dist/middleware/index.d.ts +3 -0
- package/dist/middleware/index.js +7 -0
- package/dist/middleware/index.js.map +1 -1
- package/dist/middleware/path-normalization.d.ts +57 -0
- package/dist/middleware/path-normalization.js +109 -0
- package/dist/middleware/path-normalization.js.map +1 -0
- package/dist/middleware/types.d.ts +8 -0
- package/dist/payload-codecs.d.ts +17 -0
- package/dist/payload-codecs.js +42 -0
- package/dist/payload-codecs.js.map +1 -0
- package/dist/preflight.d.ts +31 -0
- package/dist/preflight.js +43 -0
- package/dist/preflight.js.map +1 -1
- package/dist/runner-manager.js +21 -17
- package/dist/runner-manager.js.map +1 -1
- package/dist/runner.js +11 -18
- package/dist/runner.js.map +1 -1
- package/dist/shared/approval-policy.d.ts +9 -3
- package/dist/shared/approval-policy.js +15 -6
- package/dist/shared/approval-policy.js.map +1 -1
- package/dist/shared/artifact-storage.d.ts +23 -1
- package/dist/shared/artifact-storage.js +51 -10
- package/dist/shared/artifact-storage.js.map +1 -1
- package/dist/shared/attachment-naming.d.ts +53 -0
- package/dist/shared/attachment-naming.js +59 -0
- package/dist/shared/attachment-naming.js.map +1 -0
- package/dist/shared/caller-identity.d.ts +23 -2
- package/dist/shared/caller-identity.js +36 -5
- package/dist/shared/caller-identity.js.map +1 -1
- package/dist/shared/channel-attachment.js +1 -0
- package/dist/shared/channel-attachment.js.map +1 -1
- package/dist/shared/checkpointer/http-saver.d.ts +26 -1
- package/dist/shared/checkpointer/http-saver.js +54 -8
- package/dist/shared/checkpointer/http-saver.js.map +1 -1
- package/dist/shared/conversation-attachment.js +1 -0
- package/dist/shared/conversation-attachment.js.map +1 -1
- package/dist/shared/conversation-catchup.d.ts +9 -2
- package/dist/shared/conversation-catchup.js +39 -6
- package/dist/shared/conversation-catchup.js.map +1 -1
- package/dist/shared/datastore-attachment.d.ts +50 -7
- package/dist/shared/datastore-attachment.js +93 -11
- package/dist/shared/datastore-attachment.js.map +1 -1
- package/dist/shared/grpc-retry.d.ts +5 -1
- package/dist/shared/grpc-retry.js +5 -1
- package/dist/shared/grpc-retry.js.map +1 -1
- package/dist/shared/http-retry.d.ts +85 -0
- package/dist/shared/http-retry.js +101 -0
- package/dist/shared/http-retry.js.map +1 -0
- package/dist/shared/llm-backend.d.ts +275 -0
- package/dist/shared/llm-backend.js +425 -0
- package/dist/shared/llm-backend.js.map +1 -0
- package/dist/shared/llm-proxy.d.ts +8 -0
- package/dist/shared/llm-proxy.js +15 -0
- package/dist/shared/llm-proxy.js.map +1 -1
- package/dist/shared/mcp-enabled-tools.d.ts +57 -0
- package/dist/shared/mcp-enabled-tools.js +86 -0
- package/dist/shared/mcp-enabled-tools.js.map +1 -0
- package/dist/shared/mcp-manager.d.ts +11 -5
- package/dist/shared/mcp-manager.js +47 -8
- package/dist/shared/mcp-manager.js.map +1 -1
- package/dist/shared/mcp-resolver.d.ts +39 -2
- package/dist/shared/mcp-resolver.js +38 -2
- package/dist/shared/mcp-resolver.js.map +1 -1
- package/dist/shared/mcp-schema-sanitizer.d.ts +70 -0
- package/dist/shared/mcp-schema-sanitizer.js +197 -0
- package/dist/shared/mcp-schema-sanitizer.js.map +1 -0
- package/dist/shared/model-client.d.ts +18 -5
- package/dist/shared/model-client.js +149 -18
- package/dist/shared/model-client.js.map +1 -1
- package/dist/shared/model-error.js +198 -5
- package/dist/shared/model-error.js.map +1 -1
- package/dist/shared/model-pricing-data.d.ts +2 -0
- package/dist/shared/model-pricing-data.js +13 -3
- package/dist/shared/model-pricing-data.js.map +1 -1
- package/dist/shared/model-registry.js +3 -2
- package/dist/shared/model-registry.js.map +1 -1
- package/dist/shared/plan-mode-permissions.d.ts +33 -0
- package/dist/shared/plan-mode-permissions.js +35 -0
- package/dist/shared/plan-mode-permissions.js.map +1 -0
- package/dist/shared/registry-endpoint.d.ts +20 -0
- package/dist/shared/registry-endpoint.js +25 -0
- package/dist/shared/registry-endpoint.js.map +1 -1
- package/dist/shared/runner-credential-keys.d.ts +24 -0
- package/dist/shared/runner-credential-keys.js +47 -0
- package/dist/shared/runner-credential-keys.js.map +1 -0
- package/dist/worker.d.ts +2 -1
- package/dist/worker.js +2 -4
- package/dist/worker.js.map +1 -1
- package/dist/workflow-engine/resolve.d.ts +19 -1
- package/dist/workflow-engine/resolve.js +37 -2
- package/dist/workflow-engine/resolve.js.map +1 -1
- package/dist/workflow-engine/types.d.ts +18 -0
- package/dist/workflow-engine/types.js.map +1 -1
- package/dist/workflows/call-agent-orchestrator.d.ts +9 -0
- package/dist/workflows/call-agent-orchestrator.js +1 -0
- package/dist/workflows/call-agent-orchestrator.js.map +1 -1
- package/dist/workflows/connect-mcp-server.js +9 -0
- package/dist/workflows/connect-mcp-server.js.map +1 -1
- package/dist/workflows/engine-core.js +23 -2
- package/dist/workflows/engine-core.js.map +1 -1
- package/dist/workflows/execute-from-execution.d.ts +1 -1
- package/dist/workflows/execute-from-execution.js +11 -1
- package/dist/workflows/execute-from-execution.js.map +1 -1
- package/dist/workflows/types.d.ts +8 -0
- package/package.json +9 -4
- package/src/__test-utils__/__tests__/vitest-global-setup.test.ts +37 -0
- package/src/__test-utils__/vitest-global-setup.ts +50 -0
- package/src/__tests__/bootstrap.test.ts +43 -0
- package/src/__tests__/claimcheck-codec.test.ts +36 -0
- package/src/__tests__/encryption-codec.test.ts +287 -0
- package/src/__tests__/fixtures/encrypted-payload-fixture.json +15 -0
- package/src/__tests__/history-encryption-e2e.test.ts +243 -0
- package/src/__tests__/preflight.test.ts +65 -2
- package/src/activities/__tests__/call-llm.test.ts +75 -0
- package/src/activities/__tests__/classify-tool-approvals.test.ts +117 -1
- package/src/activities/__tests__/discover-mcp-server.hang.test.ts +103 -0
- package/src/activities/__tests__/discover-mcp-server.test.ts +242 -1
- package/src/activities/__tests__/error-classifier.test.ts +94 -2
- package/src/activities/__tests__/run-command.test.ts +221 -0
- package/src/activities/__tests__/workflow-event-activities.test.ts +107 -8
- package/src/activities/call-llm.ts +9 -16
- package/src/activities/classify-tool-approvals.ts +34 -4
- package/src/activities/discover-mcp-server.ts +203 -31
- package/src/activities/emit-event.ts +65 -21
- package/src/activities/execute-cursor/__test-utils__/cursor-hook-harness.ts +9 -0
- package/src/activities/execute-cursor/__tests__/approval-gate.test.ts +14 -0
- package/src/activities/execute-cursor/__tests__/attachment-resolver.test.ts +53 -0
- package/src/activities/execute-cursor/__tests__/build-prompt.test.ts +151 -16
- package/src/activities/execute-cursor/__tests__/error-classifier-extraction.test.ts +208 -0
- package/src/activities/execute-cursor/__tests__/extract-structured-output.test.ts +120 -0
- package/src/activities/execute-cursor/__tests__/hook-script.test.ts +93 -0
- package/src/activities/execute-cursor/__tests__/mcp-resolver.test.ts +125 -0
- package/src/activities/execute-cursor/__tests__/model-pricing.test.ts +62 -1
- package/src/activities/execute-cursor/__tests__/prompt-builder-delegation.test.ts +1 -1
- package/src/activities/execute-cursor/__tests__/turn-recovery.test.ts +160 -0
- package/src/activities/execute-cursor/__tests__/turn-stream.test.ts +13 -0
- package/src/activities/execute-cursor/approval-state.ts +30 -1
- package/src/activities/execute-cursor/attachment-resolver.ts +31 -3
- package/src/activities/execute-cursor/blueprint-resolver.ts +7 -27
- package/src/activities/execute-cursor/env-resolver.ts +3 -1
- package/src/activities/execute-cursor/error-classifier.ts +131 -7
- package/src/activities/execute-cursor/extract-structured-output.ts +72 -0
- package/src/activities/execute-cursor/hook-script.ts +74 -10
- package/src/activities/execute-cursor/index.ts +209 -109
- package/src/activities/execute-cursor/mcp-resolver.ts +36 -2
- package/src/activities/execute-cursor/model-pricing-data.ts +22 -3
- package/src/activities/execute-cursor/prompt-builder.ts +85 -9
- package/src/activities/execute-cursor/turn-recovery.ts +208 -0
- package/src/activities/execute-cursor/turn-stream.ts +5 -2
- package/src/activities/execute-deep-agent/__tests__/attachment-injector.test.ts +110 -8
- package/src/activities/execute-deep-agent/__tests__/datastore-degradation.test.ts +104 -0
- package/src/activities/execute-deep-agent/__tests__/hitl-reject.test.ts +2 -0
- package/src/activities/execute-deep-agent/__tests__/hitl-resume-approve-all.test.ts +1 -0
- package/src/activities/execute-deep-agent/__tests__/hitl-resume-history.test.ts +1 -0
- package/src/activities/execute-deep-agent/__tests__/plan-mode-path-normalization.test.ts +174 -0
- package/src/activities/execute-deep-agent/__tests__/prompt-builder.test.ts +34 -5
- package/src/activities/execute-deep-agent/__tests__/sequential-gate-resume.test.ts +1 -0
- package/src/activities/execute-deep-agent/__tests__/shell-env.test.ts +24 -10
- package/src/activities/execute-deep-agent/__tests__/subagent-plan-mode-permissions.test.ts +178 -0
- package/src/activities/execute-deep-agent/__tests__/subagent-wiring.test.ts +12 -7
- package/src/activities/execute-deep-agent/attachment-injector.ts +94 -30
- package/src/activities/execute-deep-agent/environment.ts +3 -1
- package/src/activities/execute-deep-agent/index.ts +20 -0
- package/src/activities/execute-deep-agent/prompt-builder.ts +20 -10
- package/src/activities/execute-deep-agent/setup.ts +85 -29
- package/src/activities/execute-deep-agent/shell-env.ts +8 -9
- package/src/activities/execute-deep-agent/subagent-transformer.ts +30 -2
- package/src/activities/execute-deep-agent/subagent-wiring.ts +39 -6
- package/src/activities/hydrate-workflow-execution.ts +8 -3
- package/src/activities/run-command.ts +25 -12
- package/src/activities/run-env.ts +79 -0
- package/src/activities/workflow-event-activities.ts +96 -69
- package/src/bootstrap.ts +5 -0
- package/src/claimcheck/payload-codec.ts +33 -1
- package/src/client/__tests__/stigmer-client.test.ts +110 -11
- package/src/client/stigmer-client.ts +150 -37
- package/src/encryption/config.ts +155 -0
- package/src/encryption/index.ts +3 -0
- package/src/encryption/payload-codec.ts +152 -0
- package/src/middleware/__tests__/path-normalization.test.ts +140 -0
- package/src/middleware/index.ts +8 -0
- package/src/middleware/path-normalization.ts +125 -0
- package/src/middleware/types.ts +11 -0
- package/src/payload-codecs.ts +62 -0
- package/src/preflight.ts +45 -0
- package/src/runner-manager.ts +26 -26
- package/src/runner.ts +12 -27
- package/src/shared/__tests__/approval-policy.test.ts +82 -39
- package/src/shared/__tests__/artifact-storage.test.ts +145 -2
- package/src/shared/__tests__/attachment-naming.test.ts +159 -0
- package/src/shared/__tests__/bedrock-adapter.test.ts +213 -0
- package/src/shared/__tests__/bedrock-seam.test.ts +390 -0
- package/src/shared/__tests__/caller-identity.test.ts +25 -0
- package/src/shared/__tests__/channel-attachment.test.ts +1 -1
- package/src/shared/__tests__/connect-backfill.test.ts +1 -0
- package/src/shared/__tests__/conversation-attachment.test.ts +1 -1
- package/src/shared/__tests__/conversation-catchup.test.ts +24 -0
- package/src/shared/__tests__/datastore-attachment.test.ts +129 -1
- package/src/shared/__tests__/foundry-adapter.test.ts +276 -0
- package/src/shared/__tests__/foundry-seam.test.ts +482 -0
- package/src/shared/__tests__/http-retry.test.ts +68 -0
- package/src/shared/__tests__/llm-backend.test.ts +616 -0
- package/src/shared/__tests__/mcp-enabled-tools.test.ts +86 -0
- package/src/shared/__tests__/mcp-manager.test.ts +137 -15
- package/src/shared/__tests__/mcp-resolver.test.ts +146 -3
- package/src/shared/__tests__/mcp-schema-sanitizer.test.ts +267 -0
- package/src/shared/__tests__/model-client.test.ts +200 -0
- package/src/shared/__tests__/model-error.test.ts +289 -1
- package/src/shared/__tests__/model-pricing.test.ts +62 -2
- package/src/shared/__tests__/model-registry.test.ts +22 -0
- package/src/shared/__tests__/synthesized-attachment.test.ts +1 -0
- package/src/shared/__tests__/vertex-adapter.test.ts +169 -0
- package/src/shared/__tests__/vertex-seam.test.ts +295 -0
- package/src/shared/approval-policy.ts +14 -7
- package/src/shared/artifact-storage.ts +75 -10
- package/src/shared/attachment-naming.ts +78 -0
- package/src/shared/caller-identity.ts +40 -5
- package/src/shared/channel-attachment.ts +1 -0
- package/src/shared/checkpointer/__tests__/http-saver.test.ts +196 -1
- package/src/shared/checkpointer/http-saver.ts +71 -8
- package/src/shared/conversation-attachment.ts +1 -0
- package/src/shared/conversation-catchup.ts +39 -6
- package/src/shared/datastore-attachment.ts +106 -11
- package/src/shared/grpc-retry.ts +5 -1
- package/src/shared/http-retry.ts +139 -0
- package/src/shared/llm-backend.ts +544 -0
- package/src/shared/llm-proxy.ts +15 -0
- package/src/shared/mcp-enabled-tools.ts +105 -0
- package/src/shared/mcp-manager.ts +56 -8
- package/src/shared/mcp-resolver.ts +73 -2
- package/src/shared/mcp-schema-sanitizer.ts +224 -0
- package/src/shared/model-client.ts +179 -19
- package/src/shared/model-error.ts +222 -4
- package/src/shared/model-pricing-data.ts +22 -3
- package/src/shared/model-registry.ts +7 -2
- package/src/shared/plan-mode-permissions.ts +37 -0
- package/src/shared/registry-endpoint.ts +27 -0
- package/src/shared/runner-credential-keys.ts +46 -0
- package/src/worker.ts +4 -5
- package/src/workflow-engine/__tests__/tasks/emit-event.test.ts +127 -49
- package/src/workflow-engine/resolve.ts +48 -2
- package/src/workflow-engine/types.ts +18 -0
- package/src/workflows/__tests__/connect-mcp-server.test.ts +25 -0
- package/src/workflows/__tests__/execute-serverless-workflow.test.ts +68 -2
- package/src/workflows/call-agent-orchestrator.ts +10 -0
- package/src/workflows/connect-mcp-server.ts +9 -0
- package/src/workflows/engine-core.ts +23 -2
- package/src/workflows/execute-from-execution.ts +12 -2
- package/src/workflows/types.ts +8 -0
- package/dist/activities/execute-cursor/mcp-config.d.ts +0 -30
- package/dist/activities/execute-cursor/mcp-config.js +0 -39
- package/dist/activities/execute-cursor/mcp-config.js.map +0 -1
- package/src/activities/execute-cursor/mcp-config.ts +0 -66
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http-saver.js","sourceRoot":"","sources":["../../../src/shared/checkpointer/http-saver.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"http-saver.js","sourceRoot":"","sources":["../../../src/shared/checkpointer/http-saver.ts"],"names":[],"mappings":"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"}
|
|
@@ -91,6 +91,7 @@ export function synthesizeConversationAttachment(channelId, options) {
|
|
|
91
91
|
slug: CONVERSATION_ATTACHMENT_SLUG,
|
|
92
92
|
toolApprovals: [],
|
|
93
93
|
pinnedToolApprovals: [],
|
|
94
|
+
toolApprovalOverrides: [],
|
|
94
95
|
discoveredCapabilitiesEmpty: false,
|
|
95
96
|
connectionType: "http",
|
|
96
97
|
url: options.bridgeEndpoint.replace(/\/+$/, "") + CONVERSATION_ROUTE,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"conversation-attachment.js","sourceRoot":"","sources":["../../src/shared/conversation-attachment.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2CG;AAKH;;;;;GAKG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,sBAAsB,CAAC;AAEnE;;;;GAIG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,eAAe,CAAC;AAElD;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,uBAAuB,CAAC;AAExD;;;;GAIG;AACH,MAAM,UAAU,yBAAyB,CACvC,MAA0C;IAE1C,MAAM,SAAS,GAAG,MAAM,EAAE,CAAC,gBAAgB,CAAC,EAAE,IAAI,EAAE,CAAC;IACrD,OAAO,SAAS,KAAK,SAAS,IAAI,SAAS,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;AAC7E,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,gCAAgC,CAC9C,SAA6B,EAC7B,OAAqC;IAErC,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;QAC5B,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,IAAI,OAAO,CAAC,cAAc,KAAK,IAAI,IAAI,OAAO,CAAC,cAAc,KAAK,EAAE,EAAE,CAAC;QACrE,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,mEAAmE;IACnE,OAAO;QACL,IAAI,EAAE,4BAA4B;QAClC,aAAa,EAAE,EAAE;QACjB,mBAAmB,EAAE,EAAE;QACvB,2BAA2B,EAAE,KAAK;QAClC,cAAc,EAAE,MAAM;QACtB,GAAG,EAAE,OAAO,CAAC,cAAc,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,GAAG,kBAAkB;QACpE,OAAO,EAAE,OAAO,CAAC,UAAU,KAAK,IAAI,IAAI,OAAO,CAAC,UAAU,KAAK,EAAE;YAC/D,CAAC,CAAC,EAAE,aAAa,EAAE,UAAU,OAAO,CAAC,UAAU,EAAE,EAAE;YACnD,CAAC,CAAC,SAAS;KACd,CAAC;AACJ,CAAC"}
|
|
1
|
+
{"version":3,"file":"conversation-attachment.js","sourceRoot":"","sources":["../../src/shared/conversation-attachment.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2CG;AAKH;;;;;GAKG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,sBAAsB,CAAC;AAEnE;;;;GAIG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,eAAe,CAAC;AAElD;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,uBAAuB,CAAC;AAExD;;;;GAIG;AACH,MAAM,UAAU,yBAAyB,CACvC,MAA0C;IAE1C,MAAM,SAAS,GAAG,MAAM,EAAE,CAAC,gBAAgB,CAAC,EAAE,IAAI,EAAE,CAAC;IACrD,OAAO,SAAS,KAAK,SAAS,IAAI,SAAS,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;AAC7E,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,gCAAgC,CAC9C,SAA6B,EAC7B,OAAqC;IAErC,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;QAC5B,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,IAAI,OAAO,CAAC,cAAc,KAAK,IAAI,IAAI,OAAO,CAAC,cAAc,KAAK,EAAE,EAAE,CAAC;QACrE,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,mEAAmE;IACnE,OAAO;QACL,IAAI,EAAE,4BAA4B;QAClC,aAAa,EAAE,EAAE;QACjB,mBAAmB,EAAE,EAAE;QACvB,qBAAqB,EAAE,EAAE;QACzB,2BAA2B,EAAE,KAAK;QAClC,cAAc,EAAE,MAAM;QACtB,GAAG,EAAE,OAAO,CAAC,cAAc,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,GAAG,kBAAkB;QACpE,OAAO,EAAE,OAAO,CAAC,UAAU,KAAK,IAAI,IAAI,OAAO,CAAC,UAAU,KAAK,EAAE;YAC/D,CAAC,CAAC,EAAE,aAAa,EAAE,UAAU,OAAO,CAAC,UAAU,EAAE,EAAE;YACnD,CAAC,CAAC,SAAS;KACd,CAAC;AACJ,CAAC"}
|
|
@@ -1,8 +1,15 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Conversation catchup (cloud channel-conversations DD-006): what happened on
|
|
3
3
|
* a live channel conversation that the agent has not seen — customer messages
|
|
4
|
-
* handled by a human teammate, the teammate's replies, platform notices
|
|
5
|
-
*
|
|
4
|
+
* handled by a human teammate, the teammate's replies, platform notices,
|
|
5
|
+
* notes, and the agent's own earlier escalations. Since cloud#347 a line
|
|
6
|
+
* whose send is known-undelivered carries a `(not delivered)` speaker
|
|
7
|
+
* annotation and an in-flight one carries `(sending)` — the digest no longer
|
|
8
|
+
* implies every public-lane line reached the customer. Since cloud#352 the
|
|
9
|
+
* digest also closes the feedback loop on send OUTCOMES: the agent's own
|
|
10
|
+
* dead-lettered sends surface as `You (not delivered):` lines, and a send
|
|
11
|
+
* that failed only after an earlier digest already conveyed it surfaces as a
|
|
12
|
+
* `System:` delivery-failure notice at the moment the failure became known.
|
|
6
13
|
*
|
|
7
14
|
* The cloud composes the CONTENT (bare `Customer:` / `Teammate:` / `System:` /
|
|
8
15
|
* `You escalated:` / `Note:` lines, oldest first) on the execution spec's
|
|
@@ -1,8 +1,15 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Conversation catchup (cloud channel-conversations DD-006): what happened on
|
|
3
3
|
* a live channel conversation that the agent has not seen — customer messages
|
|
4
|
-
* handled by a human teammate, the teammate's replies, platform notices
|
|
5
|
-
*
|
|
4
|
+
* handled by a human teammate, the teammate's replies, platform notices,
|
|
5
|
+
* notes, and the agent's own earlier escalations. Since cloud#347 a line
|
|
6
|
+
* whose send is known-undelivered carries a `(not delivered)` speaker
|
|
7
|
+
* annotation and an in-flight one carries `(sending)` — the digest no longer
|
|
8
|
+
* implies every public-lane line reached the customer. Since cloud#352 the
|
|
9
|
+
* digest also closes the feedback loop on send OUTCOMES: the agent's own
|
|
10
|
+
* dead-lettered sends surface as `You (not delivered):` lines, and a send
|
|
11
|
+
* that failed only after an earlier digest already conveyed it surfaces as a
|
|
12
|
+
* `System:` delivery-failure notice at the moment the failure became known.
|
|
6
13
|
*
|
|
7
14
|
* The cloud composes the CONTENT (bare `Customer:` / `Teammate:` / `System:` /
|
|
8
15
|
* `You escalated:` / `Note:` lines, oldest first) on the execution spec's
|
|
@@ -26,15 +33,41 @@
|
|
|
26
33
|
* drift between them. Deliberately takeover-neutral: a digest can exist with
|
|
27
34
|
* no human handoff at all (a failed turn's re-composed window), so the
|
|
28
35
|
* preamble asserts only what is always true (the A15/A20 honesty bar).
|
|
36
|
+
*
|
|
37
|
+
* The send-status annotations (cloud#347) get an explicit exception from the
|
|
38
|
+
* don't-re-answer contract: a `(not delivered)` teammate reply is words the
|
|
39
|
+
* customer never got, so treating it as settled history would silently
|
|
40
|
+
* abandon whatever it was meant to convey. The preamble defines the
|
|
41
|
+
* annotations — the DD-013 split puts model-facing meaning here, while the
|
|
42
|
+
* cloud composer owns which lines earn them.
|
|
43
|
+
*
|
|
44
|
+
* The send-outcome lines (cloud#352, cloud triage DD-009) extend the same
|
|
45
|
+
* exception to the agent's OWN sends: `You (not delivered):` lines and
|
|
46
|
+
* `System:` delivery-failure notices mean the customer never got those
|
|
47
|
+
* words. The behavioral contract is owner-ruled (DD-009 Q-4): treat the
|
|
48
|
+
* failure as unfinished conversation business — weigh what still needs
|
|
49
|
+
* saying and re-say it naturally in the next turn — but never resend the
|
|
50
|
+
* failed text verbatim: a multi-chunk send can partially land, and a
|
|
51
|
+
* word-for-word repeat risks the customer reading the same message twice.
|
|
29
52
|
*/
|
|
30
53
|
const CONVERSATION_CATCHUP_PREAMBLE = "Below is activity from this conversation that you have not seen — " +
|
|
31
54
|
"oldest first. It may include customer messages that were handled by a " +
|
|
32
|
-
"human teammate, the teammate's own replies, notices the
|
|
33
|
-
"
|
|
55
|
+
"human teammate, the teammate's own replies, notices sent to the " +
|
|
56
|
+
"customer, internal notes, and escalations you raised earlier. Treat it " +
|
|
34
57
|
"as conversation history you already know: do not answer or re-answer " +
|
|
35
58
|
"these messages, do not repeat or summarize them back, and do not " +
|
|
36
|
-
"mention any handoff unless asked.
|
|
37
|
-
"
|
|
59
|
+
"mention any handoff unless asked. One exception: lines marked " +
|
|
60
|
+
"(not delivered) never reached the customer, and lines marked (sending) " +
|
|
61
|
+
"were still on their way when this summary was built — the customer may " +
|
|
62
|
+
"not have seen those words, so weigh that when deciding what still needs " +
|
|
63
|
+
"saying. That includes your own words: a line marked " +
|
|
64
|
+
"You (not delivered), or a System line reporting that a message was not " +
|
|
65
|
+
"delivered, means the customer never received it. Treat such a failure " +
|
|
66
|
+
"as unfinished business — if what it said still matters, work it " +
|
|
67
|
+
"naturally into your reply in your own words, but never resend the " +
|
|
68
|
+
"failed text word-for-word (part of it may have reached the customer, " +
|
|
69
|
+
"and an exact repeat reads as a duplicate). " +
|
|
70
|
+
"Continue from the customer's newest message.";
|
|
38
71
|
/**
|
|
39
72
|
* Read the catchup digest from an execution spec's `conversation_catchup`.
|
|
40
73
|
* Returns undefined when the field is absent or the digest is blank — the
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"conversation-catchup.js","sourceRoot":"","sources":["../../src/shared/conversation-catchup.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"conversation-catchup.js","sourceRoot":"","sources":["../../src/shared/conversation-catchup.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAIH;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,6BAA6B,GACjC,oEAAoE;IACpE,wEAAwE;IACxE,kEAAkE;IAClE,yEAAyE;IACzE,uEAAuE;IACvE,mEAAmE;IACnE,gEAAgE;IAChE,yEAAyE;IACzE,yEAAyE;IACzE,0EAA0E;IAC1E,sDAAsD;IACtD,yEAAyE;IACzE,wEAAwE;IACxE,kEAAkE;IAClE,oEAAoE;IACpE,uEAAuE;IACvE,6CAA6C;IAC7C,8CAA8C,CAAC;AAEjD;;;;;;GAMG;AACH,MAAM,UAAU,uBAAuB,CACrC,OAAwC;IAExC,MAAM,MAAM,GAAG,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;IACvC,OAAO,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;AACrC,CAAC;AAED,+EAA+E;AAC/E,MAAM,UAAU,6BAA6B,CAAC,MAAc;IAC1D,OAAO,GAAG,6BAA6B,OAAO,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC;AAChE,CAAC"}
|
|
@@ -22,8 +22,12 @@
|
|
|
22
22
|
* OSS callers resolve as the local principal (T05 R2).
|
|
23
23
|
*
|
|
24
24
|
* Approval-free by construction (DD-001 SD-3): empty toolApprovals +
|
|
25
|
-
* pinnedToolApprovals mean mergeApprovalPolicies
|
|
26
|
-
* this server — zero classifier involvement
|
|
25
|
+
* pinnedToolApprovals + toolApprovalOverrides mean mergeApprovalPolicies
|
|
26
|
+
* emits no entries for this server — zero classifier involvement, and no
|
|
27
|
+
* proto surface can target it (the attachment has no McpServerUsage, and
|
|
28
|
+
* since issue #349 an agent's overrides are scoped to their own usage's
|
|
29
|
+
* server, so a same-named override elsewhere cannot reach this one).
|
|
30
|
+
* `discoveredCapabilitiesEmpty`
|
|
27
31
|
* is false and the attachment has no McpServerUsage, so the connect
|
|
28
32
|
* backfill (whose destructiveHint tightener would force-gate
|
|
29
33
|
* delete_record — silently skipped on channels under UNATTENDED mode)
|
|
@@ -48,9 +52,48 @@ export declare const RECORDS_ROUTE = "/records";
|
|
|
48
52
|
*/
|
|
49
53
|
export declare function synthesizeDatastoreAttachment(datastoreUsages: DatastoreUsage[], options: SynthesizedAttachmentOptions): ResolvedMcpServer | undefined;
|
|
50
54
|
/**
|
|
51
|
-
* The
|
|
52
|
-
*
|
|
53
|
-
* the
|
|
54
|
-
*
|
|
55
|
+
* The five record tools the records roster always serves (DD-005; the
|
|
56
|
+
* mcp-server's records roster registers all five unconditionally for the
|
|
57
|
+
* agent audience — only the `org` argument shape varies by audience, see
|
|
58
|
+
* mcp-server/src/domains/records/tools.ts). Because the roster never
|
|
59
|
+
* legitimately narrows, any of these missing from the connected toolset
|
|
60
|
+
* means the store is degraded (issue #325) — the prompt section and the
|
|
61
|
+
* reconciliation both derive from this one list so they cannot drift.
|
|
55
62
|
*/
|
|
56
|
-
export declare
|
|
63
|
+
export declare const EXPECTED_RECORD_TOOLS: readonly ["describe_datastore", "find_records", "insert_record", "update_record", "delete_record"];
|
|
64
|
+
/**
|
|
65
|
+
* Reconcile the record tools actually connected against the roster
|
|
66
|
+
* contract (issue #325). Returns the expected tools absent from
|
|
67
|
+
* `actualToolNames` — empty means healthy. Names are bare tool names
|
|
68
|
+
* exactly as reported by tools/list (the mcp-enabled-tools identity
|
|
69
|
+
* space); extraneous names are ignored.
|
|
70
|
+
*/
|
|
71
|
+
export declare function missingRecordTools(actualToolNames: Iterable<string>): string[];
|
|
72
|
+
/**
|
|
73
|
+
* The operator-facing degradation notice (issue #325): pushed as a
|
|
74
|
+
* MESSAGE_SYSTEM row on the execution status so "declared N datastores,
|
|
75
|
+
* X/5 record tools connected" is visible without reading a transcript.
|
|
76
|
+
* Lives HERE with the rest of the datastore-attachment wording — the
|
|
77
|
+
* harness only threads it.
|
|
78
|
+
*/
|
|
79
|
+
export declare function formatDatastoreDegradationNotice(declaredCount: number, missing: readonly string[]): string;
|
|
80
|
+
/**
|
|
81
|
+
* The datastores prompt section (DD-005 SD-5, the skills-section
|
|
82
|
+
* precedent). Shared by both harnesses so the section text cannot drift
|
|
83
|
+
* (the sender-identity precedent). Two honest renderings (issue #325):
|
|
84
|
+
*
|
|
85
|
+
* - Healthy (`missingToolNames` empty or omitted — the Cursor harness
|
|
86
|
+
* always calls it this way: the Cursor SDK connects MCP itself, so
|
|
87
|
+
* that harness can never observe the live roster):
|
|
88
|
+
* `<available_datastores>` names the attached datastores, points the
|
|
89
|
+
* model at describe_datastore first, and carries a standing
|
|
90
|
+
* failure-disclosure instruction — the only mechanism that covers
|
|
91
|
+
* tools which connected but fail at call time (the WhatsApp-pilot
|
|
92
|
+
* outage shape).
|
|
93
|
+
* - Degraded (deep-agent only, from missingRecordTools against the
|
|
94
|
+
* connected roster): `<unavailable_datastores>` instead — the section
|
|
95
|
+
* must not promise tools the agent does not have. Names the declared
|
|
96
|
+
* datastores, states which record tools are missing, and instructs
|
|
97
|
+
* plain disclosure over improvisation.
|
|
98
|
+
*/
|
|
99
|
+
export declare function formatDatastoresSection(datastoreUsages: DatastoreUsage[], missingToolNames?: readonly string[]): string;
|
|
@@ -22,8 +22,12 @@
|
|
|
22
22
|
* OSS callers resolve as the local principal (T05 R2).
|
|
23
23
|
*
|
|
24
24
|
* Approval-free by construction (DD-001 SD-3): empty toolApprovals +
|
|
25
|
-
* pinnedToolApprovals mean mergeApprovalPolicies
|
|
26
|
-
* this server — zero classifier involvement
|
|
25
|
+
* pinnedToolApprovals + toolApprovalOverrides mean mergeApprovalPolicies
|
|
26
|
+
* emits no entries for this server — zero classifier involvement, and no
|
|
27
|
+
* proto surface can target it (the attachment has no McpServerUsage, and
|
|
28
|
+
* since issue #349 an agent's overrides are scoped to their own usage's
|
|
29
|
+
* server, so a same-named override elsewhere cannot reach this one).
|
|
30
|
+
* `discoveredCapabilitiesEmpty`
|
|
27
31
|
* is false and the attachment has no McpServerUsage, so the connect
|
|
28
32
|
* backfill (whose destructiveHint tightener would force-gate
|
|
29
33
|
* delete_record — silently skipped on channels under UNATTENDED mode)
|
|
@@ -53,6 +57,7 @@ export function synthesizeDatastoreAttachment(datastoreUsages, options) {
|
|
|
53
57
|
slug: DATASTORE_ATTACHMENT_SLUG,
|
|
54
58
|
toolApprovals: [],
|
|
55
59
|
pinnedToolApprovals: [],
|
|
60
|
+
toolApprovalOverrides: [],
|
|
56
61
|
discoveredCapabilitiesEmpty: false,
|
|
57
62
|
};
|
|
58
63
|
if (options.bridgeEndpoint !== null && options.bridgeEndpoint !== "") {
|
|
@@ -77,25 +82,102 @@ export function synthesizeDatastoreAttachment(datastoreUsages, options) {
|
|
|
77
82
|
};
|
|
78
83
|
}
|
|
79
84
|
/**
|
|
80
|
-
* The
|
|
81
|
-
*
|
|
82
|
-
* the
|
|
83
|
-
*
|
|
85
|
+
* The five record tools the records roster always serves (DD-005; the
|
|
86
|
+
* mcp-server's records roster registers all five unconditionally for the
|
|
87
|
+
* agent audience — only the `org` argument shape varies by audience, see
|
|
88
|
+
* mcp-server/src/domains/records/tools.ts). Because the roster never
|
|
89
|
+
* legitimately narrows, any of these missing from the connected toolset
|
|
90
|
+
* means the store is degraded (issue #325) — the prompt section and the
|
|
91
|
+
* reconciliation both derive from this one list so they cannot drift.
|
|
84
92
|
*/
|
|
85
|
-
export
|
|
86
|
-
|
|
93
|
+
export const EXPECTED_RECORD_TOOLS = [
|
|
94
|
+
"describe_datastore",
|
|
95
|
+
"find_records",
|
|
96
|
+
"insert_record",
|
|
97
|
+
"update_record",
|
|
98
|
+
"delete_record",
|
|
99
|
+
];
|
|
100
|
+
/**
|
|
101
|
+
* Reconcile the record tools actually connected against the roster
|
|
102
|
+
* contract (issue #325). Returns the expected tools absent from
|
|
103
|
+
* `actualToolNames` — empty means healthy. Names are bare tool names
|
|
104
|
+
* exactly as reported by tools/list (the mcp-enabled-tools identity
|
|
105
|
+
* space); extraneous names are ignored.
|
|
106
|
+
*/
|
|
107
|
+
export function missingRecordTools(actualToolNames) {
|
|
108
|
+
const present = new Set(actualToolNames);
|
|
109
|
+
return EXPECTED_RECORD_TOOLS.filter((name) => !present.has(name));
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* The operator-facing degradation notice (issue #325): pushed as a
|
|
113
|
+
* MESSAGE_SYSTEM row on the execution status so "declared N datastores,
|
|
114
|
+
* X/5 record tools connected" is visible without reading a transcript.
|
|
115
|
+
* Lives HERE with the rest of the datastore-attachment wording — the
|
|
116
|
+
* harness only threads it.
|
|
117
|
+
*/
|
|
118
|
+
export function formatDatastoreDegradationNotice(declaredCount, missing) {
|
|
119
|
+
const connected = EXPECTED_RECORD_TOOLS.length - missing.length;
|
|
120
|
+
return (`Datastore record tools unavailable this turn: declared ` +
|
|
121
|
+
`${declaredCount} datastore(s), ${connected}/${EXPECTED_RECORD_TOOLS.length} ` +
|
|
122
|
+
`record tools connected (missing: ${missing.join(", ")}). The agent has ` +
|
|
123
|
+
`been instructed to disclose this instead of answering from memory.`);
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* The datastores prompt section (DD-005 SD-5, the skills-section
|
|
127
|
+
* precedent). Shared by both harnesses so the section text cannot drift
|
|
128
|
+
* (the sender-identity precedent). Two honest renderings (issue #325):
|
|
129
|
+
*
|
|
130
|
+
* - Healthy (`missingToolNames` empty or omitted — the Cursor harness
|
|
131
|
+
* always calls it this way: the Cursor SDK connects MCP itself, so
|
|
132
|
+
* that harness can never observe the live roster):
|
|
133
|
+
* `<available_datastores>` names the attached datastores, points the
|
|
134
|
+
* model at describe_datastore first, and carries a standing
|
|
135
|
+
* failure-disclosure instruction — the only mechanism that covers
|
|
136
|
+
* tools which connected but fail at call time (the WhatsApp-pilot
|
|
137
|
+
* outage shape).
|
|
138
|
+
* - Degraded (deep-agent only, from missingRecordTools against the
|
|
139
|
+
* connected roster): `<unavailable_datastores>` instead — the section
|
|
140
|
+
* must not promise tools the agent does not have. Names the declared
|
|
141
|
+
* datastores, states which record tools are missing, and instructs
|
|
142
|
+
* plain disclosure over improvisation.
|
|
143
|
+
*/
|
|
144
|
+
export function formatDatastoresSection(datastoreUsages, missingToolNames = []) {
|
|
145
|
+
const entries = datastoreUsages
|
|
87
146
|
.map((u) => u.datastoreRef?.slug)
|
|
88
|
-
.filter((s) => !!s)
|
|
89
|
-
|
|
147
|
+
.filter((s) => !!s)
|
|
148
|
+
.map((slug) => `- ${slug}`);
|
|
149
|
+
if (missingToolNames.length > 0) {
|
|
150
|
+
return [
|
|
151
|
+
"<unavailable_datastores>",
|
|
152
|
+
"This agent is configured to use the datastores listed below, but the",
|
|
153
|
+
"following record tools failed to connect this turn:",
|
|
154
|
+
missingToolNames.join(", ") + ".",
|
|
155
|
+
"Treat these datastores as unreachable for any operation that needs a",
|
|
156
|
+
"missing tool.",
|
|
157
|
+
"",
|
|
158
|
+
...entries,
|
|
159
|
+
"",
|
|
160
|
+
"When the user's request depends on one of these datastores, tell them",
|
|
161
|
+
"plainly that the datastore cannot be reached right now. Never answer",
|
|
162
|
+
"from memory, guess, or improvise a substitute for what the datastore",
|
|
163
|
+
"would have returned.",
|
|
164
|
+
"</unavailable_datastores>",
|
|
165
|
+
].join("\n");
|
|
166
|
+
}
|
|
90
167
|
return [
|
|
91
168
|
"<available_datastores>",
|
|
92
169
|
"You have access to the following datastores through the record tools",
|
|
93
|
-
"
|
|
170
|
+
`(${EXPECTED_RECORD_TOOLS.join(", ")}).`,
|
|
94
171
|
"Before your first operation against a datastore, call describe_datastore to",
|
|
95
172
|
"learn its collections, field encodings, and which operations you are allowed",
|
|
96
173
|
"to perform.",
|
|
97
174
|
"",
|
|
98
175
|
...entries,
|
|
176
|
+
"",
|
|
177
|
+
"If any record tool is missing from your toolset or a record tool call",
|
|
178
|
+
"fails, the datastore is unreachable: tell the user plainly that you cannot",
|
|
179
|
+
"reach it right now, and do not answer from memory, guess, or improvise a",
|
|
180
|
+
"substitute for what it would have returned.",
|
|
99
181
|
"</available_datastores>",
|
|
100
182
|
].join("\n");
|
|
101
183
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"datastore-attachment.js","sourceRoot":"","sources":["../../src/shared/datastore-attachment.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"datastore-attachment.js","sourceRoot":"","sources":["../../src/shared/datastore-attachment.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,7 +6,11 @@
|
|
|
6
6
|
* `updateStatus` should back off and retry (transient transport errors) or
|
|
7
7
|
* fail fast (deterministic errors). This module is intentionally just the
|
|
8
8
|
* classification policy + its options type, kept small and separately tested;
|
|
9
|
-
* the persist loop that consumes it lives with the rest of the persist logic
|
|
9
|
+
* the persist loop that consumes it lives with the rest of the persist logic
|
|
10
|
+
* in status.ts — a single consumer whose loop is interwoven with persist
|
|
11
|
+
* semantics. (The HTTP twin, http-retry.ts, diverged there deliberately: with
|
|
12
|
+
* three fetch clients needing a byte-identical loop it hosts the shared
|
|
13
|
+
* fetchWithRetry too — see its module doc.)
|
|
10
14
|
*/
|
|
11
15
|
export interface RetryOptions {
|
|
12
16
|
/** Base delay before the first retry (ms). Default: 100. */
|
|
@@ -6,7 +6,11 @@
|
|
|
6
6
|
* `updateStatus` should back off and retry (transient transport errors) or
|
|
7
7
|
* fail fast (deterministic errors). This module is intentionally just the
|
|
8
8
|
* classification policy + its options type, kept small and separately tested;
|
|
9
|
-
* the persist loop that consumes it lives with the rest of the persist logic
|
|
9
|
+
* the persist loop that consumes it lives with the rest of the persist logic
|
|
10
|
+
* in status.ts — a single consumer whose loop is interwoven with persist
|
|
11
|
+
* semantics. (The HTTP twin, http-retry.ts, diverged there deliberately: with
|
|
12
|
+
* three fetch clients needing a byte-identical loop it hosts the shared
|
|
13
|
+
* fetchWithRetry too — see its module doc.)
|
|
10
14
|
*/
|
|
11
15
|
import { ConnectError, Code } from "@connectrpc/connect";
|
|
12
16
|
const RETRYABLE_CODES = new Set([
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"grpc-retry.js","sourceRoot":"","sources":["../../src/shared/grpc-retry.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"grpc-retry.js","sourceRoot":"","sources":["../../src/shared/grpc-retry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAazD,MAAM,eAAe,GAAG,IAAI,GAAG,CAAO;IACpC,IAAI,CAAC,WAAW;IAChB,IAAI,CAAC,gBAAgB;CACtB,CAAC,CAAC;AAEH,MAAM,cAAc,GAAG,IAAI,GAAG,CAAO;IACnC,IAAI,CAAC,eAAe;IACpB,IAAI,CAAC,QAAQ;IACb,IAAI,CAAC,gBAAgB;CACtB,CAAC,CAAC;AAEH,gFAAgF;AAChF,MAAM,UAAU,gBAAgB,CAAC,GAAY;IAC3C,IAAI,GAAG,YAAY,YAAY,EAAE,CAAC;QAChC,OAAO,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACvC,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,8DAA8D;AAC9D,MAAM,UAAU,eAAe,CAAC,GAAY;IAC1C,IAAI,GAAG,YAAY,YAAY,EAAE,CAAC;QAChC,OAAO,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACtC,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* HTTP error classification AND the shared bounded-backoff loop for
|
|
3
|
+
* side-channel proxy retries.
|
|
4
|
+
*
|
|
5
|
+
* The runner reaches stigmer-service's Side-Channel Proxy (`/v1/proxy/...`)
|
|
6
|
+
* over plain `fetch` from several clients: the checkpoint saver, artifact
|
|
7
|
+
* storage, and the model-registry fetches (stigmer/stigmer#468). This module
|
|
8
|
+
* is the one place that answers "is this HTTP failure worth retrying?" — the
|
|
9
|
+
* `fetch` twin of grpc-retry.ts — and, since #468, also owns the
|
|
10
|
+
* {@link fetchWithRetry} loop those clients share. That is a deliberate
|
|
11
|
+
* divergence from grpc-retry.ts's policy-only split: the gRPC side has a
|
|
12
|
+
* single consumer whose loop is interwoven with persist-specific logic
|
|
13
|
+
* (status.ts), while the HTTP side grew three consumers needing a
|
|
14
|
+
* byte-identical loop — per-client copies were the drift risk, not the seam.
|
|
15
|
+
*
|
|
16
|
+
* The policy is grounded in what the proxy actually emits, not HTTP folklore.
|
|
17
|
+
* CheckpointerProxyController returns exactly four deterministic errors —
|
|
18
|
+
* 400 (malformed document), 403 (FGA deny), 404 (no such checkpoint), and
|
|
19
|
+
* 413 (the 4 MB cap) — and never a transient status. Transient failures
|
|
20
|
+
* reach the runner only as 5xx (Spring's error handler, ingress 502-504),
|
|
21
|
+
* 408/429 (infrastructure between runner and service), or as network-level
|
|
22
|
+
* fetch rejections. 401/403 stay terminal deliberately: retrying cannot fix
|
|
23
|
+
* an expired or rejected credential. The same classification holds for the
|
|
24
|
+
* presigned R2 URLs artifact storage talks to: their deterministic failures
|
|
25
|
+
* (403 expired signature, 404 missing object) are 4xx, their transient ones
|
|
26
|
+
* are 5xx/network.
|
|
27
|
+
*/
|
|
28
|
+
/**
|
|
29
|
+
* True for HTTP statuses that signal a transient condition worth retrying:
|
|
30
|
+
* 408 (request timeout), 429 (throttled), and all 5xx. Every other status is
|
|
31
|
+
* deterministic — the proxy's 4xx errors mean the same request will fail the
|
|
32
|
+
* same way forever.
|
|
33
|
+
*/
|
|
34
|
+
export declare function isRetryableHttpStatus(status: number): boolean;
|
|
35
|
+
/**
|
|
36
|
+
* True for `fetch` rejections that signal a transient transport condition:
|
|
37
|
+
*
|
|
38
|
+
* - `TypeError` — undici's network-failure shape (`fetch failed`, with the
|
|
39
|
+
* ECONNREFUSED/ECONNRESET/DNS cause attached). A deterministic TypeError
|
|
40
|
+
* (e.g. a malformed URL) also matches, which is accepted: such a bug fails
|
|
41
|
+
* every attempt including the first test run, and the bounded budget caps
|
|
42
|
+
* the wasted retries at seconds.
|
|
43
|
+
* - `TimeoutError` — the rejection shape of `AbortSignal.timeout()`, i.e. a
|
|
44
|
+
* hung connection whose attempt we bounded ourselves.
|
|
45
|
+
*
|
|
46
|
+
* A manual abort (`AbortError`) is deliberately NOT retryable: the caller
|
|
47
|
+
* cancelled on purpose.
|
|
48
|
+
*/
|
|
49
|
+
export declare function isRetryableFetchError(err: unknown): boolean;
|
|
50
|
+
/**
|
|
51
|
+
* A fully-resolved retry policy for {@link fetchWithRetry}. Every field is
|
|
52
|
+
* required on purpose: defaults differ per client (the checkpointer and the
|
|
53
|
+
* presign endpoints run 30 s requests, artifact transfers 120 s, registry
|
|
54
|
+
* fetches 10 s), so each client resolves its own defaults once and this
|
|
55
|
+
* module never guesses.
|
|
56
|
+
*/
|
|
57
|
+
export interface FetchRetryPolicy {
|
|
58
|
+
/** Client name for retry logs, e.g. "HttpCheckpointSaver". */
|
|
59
|
+
readonly label: string;
|
|
60
|
+
/** Delay before the first retry (ms); doubles per attempt via the factor. */
|
|
61
|
+
readonly baseDelayMs: number;
|
|
62
|
+
readonly backoffFactor: number;
|
|
63
|
+
/** Retry attempts after the initial one. */
|
|
64
|
+
readonly maxRetries: number;
|
|
65
|
+
/**
|
|
66
|
+
* Milliseconds before an in-flight request is aborted and the attempt is
|
|
67
|
+
* classified retryable. Without it a hung connection (the realistic
|
|
68
|
+
* unplanned-pod-kill symptom) stalls forever and the retry never engages.
|
|
69
|
+
*/
|
|
70
|
+
readonly requestTimeoutMs: number;
|
|
71
|
+
/** Injectable delay for tests; defaults to a real setTimeout sleep. */
|
|
72
|
+
readonly delayFn?: (ms: number) => Promise<void>;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* `fetch` with bounded exponential backoff on transient failures and a
|
|
76
|
+
* per-request abort timeout.
|
|
77
|
+
*
|
|
78
|
+
* Composition contract: on a non-retryable status — or when the budget is
|
|
79
|
+
* exhausted on a retryable one — the last `Response` is RETURNED, so every
|
|
80
|
+
* call site keeps its own `resp.ok` / 404 handling unchanged; this wrapper
|
|
81
|
+
* changes when a response arrives, never what call sites do with it. It
|
|
82
|
+
* throws only what `fetch` itself throws: a network-level rejection that is
|
|
83
|
+
* non-retryable or has exhausted the budget.
|
|
84
|
+
*/
|
|
85
|
+
export declare function fetchWithRetry(url: string, init: RequestInit | undefined, policy: FetchRetryPolicy): Promise<Response>;
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* HTTP error classification AND the shared bounded-backoff loop for
|
|
3
|
+
* side-channel proxy retries.
|
|
4
|
+
*
|
|
5
|
+
* The runner reaches stigmer-service's Side-Channel Proxy (`/v1/proxy/...`)
|
|
6
|
+
* over plain `fetch` from several clients: the checkpoint saver, artifact
|
|
7
|
+
* storage, and the model-registry fetches (stigmer/stigmer#468). This module
|
|
8
|
+
* is the one place that answers "is this HTTP failure worth retrying?" — the
|
|
9
|
+
* `fetch` twin of grpc-retry.ts — and, since #468, also owns the
|
|
10
|
+
* {@link fetchWithRetry} loop those clients share. That is a deliberate
|
|
11
|
+
* divergence from grpc-retry.ts's policy-only split: the gRPC side has a
|
|
12
|
+
* single consumer whose loop is interwoven with persist-specific logic
|
|
13
|
+
* (status.ts), while the HTTP side grew three consumers needing a
|
|
14
|
+
* byte-identical loop — per-client copies were the drift risk, not the seam.
|
|
15
|
+
*
|
|
16
|
+
* The policy is grounded in what the proxy actually emits, not HTTP folklore.
|
|
17
|
+
* CheckpointerProxyController returns exactly four deterministic errors —
|
|
18
|
+
* 400 (malformed document), 403 (FGA deny), 404 (no such checkpoint), and
|
|
19
|
+
* 413 (the 4 MB cap) — and never a transient status. Transient failures
|
|
20
|
+
* reach the runner only as 5xx (Spring's error handler, ingress 502-504),
|
|
21
|
+
* 408/429 (infrastructure between runner and service), or as network-level
|
|
22
|
+
* fetch rejections. 401/403 stay terminal deliberately: retrying cannot fix
|
|
23
|
+
* an expired or rejected credential. The same classification holds for the
|
|
24
|
+
* presigned R2 URLs artifact storage talks to: their deterministic failures
|
|
25
|
+
* (403 expired signature, 404 missing object) are 4xx, their transient ones
|
|
26
|
+
* are 5xx/network.
|
|
27
|
+
*/
|
|
28
|
+
/**
|
|
29
|
+
* True for HTTP statuses that signal a transient condition worth retrying:
|
|
30
|
+
* 408 (request timeout), 429 (throttled), and all 5xx. Every other status is
|
|
31
|
+
* deterministic — the proxy's 4xx errors mean the same request will fail the
|
|
32
|
+
* same way forever.
|
|
33
|
+
*/
|
|
34
|
+
export function isRetryableHttpStatus(status) {
|
|
35
|
+
return status === 408 || status === 429 || status >= 500;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* True for `fetch` rejections that signal a transient transport condition:
|
|
39
|
+
*
|
|
40
|
+
* - `TypeError` — undici's network-failure shape (`fetch failed`, with the
|
|
41
|
+
* ECONNREFUSED/ECONNRESET/DNS cause attached). A deterministic TypeError
|
|
42
|
+
* (e.g. a malformed URL) also matches, which is accepted: such a bug fails
|
|
43
|
+
* every attempt including the first test run, and the bounded budget caps
|
|
44
|
+
* the wasted retries at seconds.
|
|
45
|
+
* - `TimeoutError` — the rejection shape of `AbortSignal.timeout()`, i.e. a
|
|
46
|
+
* hung connection whose attempt we bounded ourselves.
|
|
47
|
+
*
|
|
48
|
+
* A manual abort (`AbortError`) is deliberately NOT retryable: the caller
|
|
49
|
+
* cancelled on purpose.
|
|
50
|
+
*/
|
|
51
|
+
export function isRetryableFetchError(err) {
|
|
52
|
+
if (err instanceof TypeError)
|
|
53
|
+
return true;
|
|
54
|
+
return err instanceof Error && err.name === "TimeoutError";
|
|
55
|
+
}
|
|
56
|
+
function defaultDelay(ms) {
|
|
57
|
+
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* `fetch` with bounded exponential backoff on transient failures and a
|
|
61
|
+
* per-request abort timeout.
|
|
62
|
+
*
|
|
63
|
+
* Composition contract: on a non-retryable status — or when the budget is
|
|
64
|
+
* exhausted on a retryable one — the last `Response` is RETURNED, so every
|
|
65
|
+
* call site keeps its own `resp.ok` / 404 handling unchanged; this wrapper
|
|
66
|
+
* changes when a response arrives, never what call sites do with it. It
|
|
67
|
+
* throws only what `fetch` itself throws: a network-level rejection that is
|
|
68
|
+
* non-retryable or has exhausted the budget.
|
|
69
|
+
*/
|
|
70
|
+
export async function fetchWithRetry(url, init, policy) {
|
|
71
|
+
const delay = policy.delayFn ?? defaultDelay;
|
|
72
|
+
for (let attempt = 0;; attempt++) {
|
|
73
|
+
const canRetry = attempt < policy.maxRetries;
|
|
74
|
+
let resp;
|
|
75
|
+
try {
|
|
76
|
+
resp = await fetch(url, {
|
|
77
|
+
...init,
|
|
78
|
+
signal: AbortSignal.timeout(policy.requestTimeoutMs),
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
catch (err) {
|
|
82
|
+
if (canRetry && isRetryableFetchError(err)) {
|
|
83
|
+
await backOff(policy, delay, attempt, String(err));
|
|
84
|
+
continue;
|
|
85
|
+
}
|
|
86
|
+
throw err;
|
|
87
|
+
}
|
|
88
|
+
if (canRetry && isRetryableHttpStatus(resp.status)) {
|
|
89
|
+
await backOff(policy, delay, attempt, `HTTP ${resp.status} ${resp.statusText}`);
|
|
90
|
+
continue;
|
|
91
|
+
}
|
|
92
|
+
return resp;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
async function backOff(policy, delay, attempt, reason) {
|
|
96
|
+
const delayMs = policy.baseDelayMs * Math.pow(policy.backoffFactor, attempt);
|
|
97
|
+
console.warn(`[${policy.label}] retryable failure ` +
|
|
98
|
+
`(attempt ${attempt + 1}/${policy.maxRetries + 1}, retry in ${delayMs}ms): ${reason}`);
|
|
99
|
+
await delay(delayMs);
|
|
100
|
+
}
|
|
101
|
+
//# sourceMappingURL=http-retry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http-retry.js","sourceRoot":"","sources":["../../src/shared/http-retry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH;;;;;GAKG;AACH,MAAM,UAAU,qBAAqB,CAAC,MAAc;IAClD,OAAO,MAAM,KAAK,GAAG,IAAI,MAAM,KAAK,GAAG,IAAI,MAAM,IAAI,GAAG,CAAC;AAC3D,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,qBAAqB,CAAC,GAAY;IAChD,IAAI,GAAG,YAAY,SAAS;QAAE,OAAO,IAAI,CAAC;IAC1C,OAAO,GAAG,YAAY,KAAK,IAAI,GAAG,CAAC,IAAI,KAAK,cAAc,CAAC;AAC7D,CAAC;AA2BD,SAAS,YAAY,CAAC,EAAU;IAC9B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AAC3D,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,GAAW,EACX,IAA6B,EAC7B,MAAwB;IAExB,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,IAAI,YAAY,CAAC;IAC7C,KAAK,IAAI,OAAO,GAAG,CAAC,GAAI,OAAO,EAAE,EAAE,CAAC;QAClC,MAAM,QAAQ,GAAG,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC;QAC7C,IAAI,IAAc,CAAC;QACnB,IAAI,CAAC;YACH,IAAI,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;gBACtB,GAAG,IAAI;gBACP,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAAC;aACrD,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,QAAQ,IAAI,qBAAqB,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC3C,MAAM,OAAO,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;gBACnD,SAAS;YACX,CAAC;YACD,MAAM,GAAG,CAAC;QACZ,CAAC;QACD,IAAI,QAAQ,IAAI,qBAAqB,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;YACnD,MAAM,OAAO,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;YAChF,SAAS;QACX,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,KAAK,UAAU,OAAO,CACpB,MAAwB,EACxB,KAAoC,EACpC,OAAe,EACf,MAAc;IAEd,MAAM,OAAO,GAAG,MAAM,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;IAC7E,OAAO,CAAC,IAAI,CACV,IAAI,MAAM,CAAC,KAAK,sBAAsB;QACtC,YAAY,OAAO,GAAG,CAAC,IAAI,MAAM,CAAC,UAAU,GAAG,CAAC,cAAc,OAAO,QAAQ,MAAM,EAAE,CACtF,CAAC;IACF,MAAM,KAAK,CAAC,OAAO,CAAC,CAAC;AACvB,CAAC"}
|