@stigmer/runner 3.0.9-dev.20260615153829 → 3.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/.build-fingerprint +1 -1
- package/dist/__test-utils__/approval-contract/types.d.ts +174 -0
- package/dist/__test-utils__/approval-contract/types.js +24 -0
- package/dist/__test-utils__/approval-contract/types.js.map +1 -0
- package/dist/activities/call-agent-status.d.ts +19 -1
- package/dist/activities/call-agent-status.js +64 -5
- package/dist/activities/call-agent-status.js.map +1 -1
- package/dist/activities/call-llm.js +19 -53
- package/dist/activities/call-llm.js.map +1 -1
- package/dist/activities/classify-tool-approvals.d.ts +24 -0
- package/dist/activities/classify-tool-approvals.js +69 -17
- package/dist/activities/classify-tool-approvals.js.map +1 -1
- package/dist/activities/discover-mcp-server.d.ts +7 -0
- package/dist/activities/discover-mcp-server.js +11 -1
- package/dist/activities/discover-mcp-server.js.map +1 -1
- package/dist/activities/execute-cursor/__test-utils__/cursor-hook-harness.d.ts +140 -0
- package/dist/activities/execute-cursor/__test-utils__/cursor-hook-harness.js +130 -0
- package/dist/activities/execute-cursor/__test-utils__/cursor-hook-harness.js.map +1 -0
- package/dist/activities/execute-cursor/__test-utils__/gateway-substrate.d.ts +18 -0
- package/dist/activities/execute-cursor/__test-utils__/gateway-substrate.js +123 -0
- package/dist/activities/execute-cursor/__test-utils__/gateway-substrate.js.map +1 -0
- package/dist/activities/execute-cursor/approval-policy.d.ts +17 -61
- package/dist/activities/execute-cursor/approval-policy.js +8 -120
- package/dist/activities/execute-cursor/approval-policy.js.map +1 -1
- package/dist/activities/execute-cursor/approval-state.d.ts +219 -9
- package/dist/activities/execute-cursor/approval-state.js +233 -17
- package/dist/activities/execute-cursor/approval-state.js.map +1 -1
- package/dist/activities/execute-cursor/capture-flow.d.ts +127 -0
- package/dist/activities/execute-cursor/capture-flow.js +234 -0
- package/dist/activities/execute-cursor/capture-flow.js.map +1 -0
- package/dist/activities/execute-cursor/cas-observations.d.ts +96 -0
- package/dist/activities/execute-cursor/cas-observations.js +184 -0
- package/dist/activities/execute-cursor/cas-observations.js.map +1 -0
- package/dist/activities/execute-cursor/command-provenance.d.ts +62 -0
- package/dist/activities/execute-cursor/command-provenance.js +128 -0
- package/dist/activities/execute-cursor/command-provenance.js.map +1 -0
- package/dist/activities/execute-cursor/exact-apply.d.ts +110 -0
- package/dist/activities/execute-cursor/exact-apply.js +204 -0
- package/dist/activities/execute-cursor/exact-apply.js.map +1 -0
- package/dist/activities/execute-cursor/hook-script.d.ts +53 -24
- package/dist/activities/execute-cursor/hook-script.js +310 -47
- package/dist/activities/execute-cursor/hook-script.js.map +1 -1
- package/dist/activities/execute-cursor/index.d.ts +8 -1
- package/dist/activities/execute-cursor/index.js +500 -64
- package/dist/activities/execute-cursor/index.js.map +1 -1
- package/dist/activities/execute-cursor/message-translator.d.ts +258 -11
- package/dist/activities/execute-cursor/message-translator.js +836 -90
- package/dist/activities/execute-cursor/message-translator.js.map +1 -1
- package/dist/activities/execute-cursor/prompt-builder.d.ts +20 -23
- package/dist/activities/execute-cursor/prompt-builder.js +74 -15
- package/dist/activities/execute-cursor/prompt-builder.js.map +1 -1
- package/dist/activities/execute-cursor/workspace-setup.d.ts +17 -0
- package/dist/activities/execute-cursor/workspace-setup.js +212 -33
- package/dist/activities/execute-cursor/workspace-setup.js.map +1 -1
- package/dist/activities/execute-deep-agent/__test-utils__/gateway-substrate.d.ts +19 -0
- package/dist/activities/execute-deep-agent/__test-utils__/gateway-substrate.js +143 -0
- package/dist/activities/execute-deep-agent/__test-utils__/gateway-substrate.js.map +1 -0
- package/dist/activities/execute-deep-agent/__test-utils__/scripted-model.d.ts +88 -0
- package/dist/activities/execute-deep-agent/__test-utils__/scripted-model.js +81 -0
- package/dist/activities/execute-deep-agent/__test-utils__/scripted-model.js.map +1 -0
- package/dist/activities/execute-deep-agent/approval-file-change.d.ts +47 -0
- package/dist/activities/execute-deep-agent/approval-file-change.js +68 -0
- package/dist/activities/execute-deep-agent/approval-file-change.js.map +1 -0
- package/dist/activities/execute-deep-agent/attachment-injector.d.ts +8 -1
- package/dist/activities/execute-deep-agent/attachment-injector.js +7 -7
- package/dist/activities/execute-deep-agent/attachment-injector.js.map +1 -1
- package/dist/activities/execute-deep-agent/cas-capture-backend.d.ts +42 -0
- package/dist/activities/execute-deep-agent/cas-capture-backend.js +47 -0
- package/dist/activities/execute-deep-agent/cas-capture-backend.js.map +1 -0
- package/dist/activities/execute-deep-agent/cas-capture-observer.d.ts +79 -0
- package/dist/activities/execute-deep-agent/cas-capture-observer.js +112 -0
- package/dist/activities/execute-deep-agent/cas-capture-observer.js.map +1 -0
- package/dist/activities/execute-deep-agent/hitl.d.ts +16 -3
- package/dist/activities/execute-deep-agent/hitl.js +11 -3
- package/dist/activities/execute-deep-agent/hitl.js.map +1 -1
- package/dist/activities/execute-deep-agent/index.d.ts +2 -1
- package/dist/activities/execute-deep-agent/index.js +393 -33
- package/dist/activities/execute-deep-agent/index.js.map +1 -1
- package/dist/activities/execute-deep-agent/inline-publisher.d.ts +7 -1
- package/dist/activities/execute-deep-agent/inline-publisher.js +23 -2
- package/dist/activities/execute-deep-agent/inline-publisher.js.map +1 -1
- package/dist/activities/execute-deep-agent/setup.d.ts +53 -2
- package/dist/activities/execute-deep-agent/setup.js +149 -92
- package/dist/activities/execute-deep-agent/setup.js.map +1 -1
- package/dist/activities/execute-deep-agent/stamp-flowed-rows.d.ts +36 -0
- package/dist/activities/execute-deep-agent/stamp-flowed-rows.js +56 -0
- package/dist/activities/execute-deep-agent/stamp-flowed-rows.js.map +1 -0
- package/dist/activities/execute-deep-agent/status-builder-shared.d.ts +34 -1
- package/dist/activities/execute-deep-agent/status-builder-shared.js +26 -25
- package/dist/activities/execute-deep-agent/status-builder-shared.js.map +1 -1
- package/dist/activities/execute-deep-agent/status-builder.d.ts +17 -5
- package/dist/activities/execute-deep-agent/status-builder.js +44 -3
- package/dist/activities/execute-deep-agent/status-builder.js.map +1 -1
- package/dist/activities/execute-deep-agent/streaming-side-effects.js +2 -19
- package/dist/activities/execute-deep-agent/streaming-side-effects.js.map +1 -1
- package/dist/activities/execute-deep-agent/streaming.js +3 -15
- package/dist/activities/execute-deep-agent/streaming.js.map +1 -1
- package/dist/activities/execute-deep-agent/subagent-transformer.d.ts +25 -7
- package/dist/activities/execute-deep-agent/subagent-transformer.js +23 -7
- package/dist/activities/execute-deep-agent/subagent-transformer.js.map +1 -1
- package/dist/activities/execute-deep-agent/subagent-wiring.d.ts +30 -3
- package/dist/activities/execute-deep-agent/subagent-wiring.js +29 -3
- package/dist/activities/execute-deep-agent/subagent-wiring.js.map +1 -1
- package/dist/activities/execute-deep-agent/v3-status-builder.js +32 -2
- package/dist/activities/execute-deep-agent/v3-status-builder.js.map +1 -1
- package/dist/claimcheck/payload-codec.js +9 -5
- package/dist/claimcheck/payload-codec.js.map +1 -1
- package/dist/client/stigmer-client.d.ts +2 -0
- package/dist/client/stigmer-client.js +2 -0
- package/dist/client/stigmer-client.js.map +1 -1
- package/dist/middleware/approval-gate.d.ts +85 -4
- package/dist/middleware/approval-gate.js +165 -38
- package/dist/middleware/approval-gate.js.map +1 -1
- package/dist/middleware/types.d.ts +2 -5
- package/dist/shared/activity-input.d.ts +43 -0
- package/dist/shared/activity-input.js +17 -0
- package/dist/shared/activity-input.js.map +1 -0
- package/dist/shared/approval-canonicalize.d.ts +19 -0
- package/dist/shared/approval-canonicalize.js +119 -0
- package/dist/shared/approval-canonicalize.js.map +1 -0
- package/dist/shared/approval-fingerprint.d.ts +106 -0
- package/dist/shared/approval-fingerprint.js +113 -0
- package/dist/shared/approval-fingerprint.js.map +1 -0
- package/dist/shared/approval-policy.d.ts +182 -12
- package/dist/shared/approval-policy.js +213 -27
- package/dist/shared/approval-policy.js.map +1 -1
- package/dist/shared/args-preview.d.ts +52 -0
- package/dist/shared/args-preview.js +93 -0
- package/dist/shared/args-preview.js.map +1 -0
- package/dist/shared/artifact-storage.d.ts +19 -1
- package/dist/shared/artifact-storage.js +48 -11
- package/dist/shared/artifact-storage.js.map +1 -1
- package/dist/shared/file-change.d.ts +44 -0
- package/dist/shared/file-change.js +57 -0
- package/dist/shared/file-change.js.map +1 -0
- package/dist/shared/file-tools.d.ts +107 -0
- package/dist/shared/file-tools.js +168 -0
- package/dist/shared/file-tools.js.map +1 -0
- package/dist/shared/filereview/capture.d.ts +202 -0
- package/dist/shared/filereview/capture.js +498 -0
- package/dist/shared/filereview/capture.js.map +1 -0
- package/dist/shared/filereview/cas-substrate.d.ts +190 -0
- package/dist/shared/filereview/cas-substrate.js +284 -0
- package/dist/shared/filereview/cas-substrate.js.map +1 -0
- package/dist/shared/filereview/digest.d.ts +40 -0
- package/dist/shared/filereview/digest.js +66 -0
- package/dist/shared/filereview/digest.js.map +1 -0
- package/dist/shared/filereview/events.d.ts +170 -0
- package/dist/shared/filereview/events.js +298 -0
- package/dist/shared/filereview/events.js.map +1 -0
- package/dist/shared/filereview/git-substrate.d.ts +175 -0
- package/dist/shared/filereview/git-substrate.js +439 -0
- package/dist/shared/filereview/git-substrate.js.map +1 -0
- package/dist/shared/filereview/index.d.ts +11 -0
- package/dist/shared/filereview/index.js +12 -0
- package/dist/shared/filereview/index.js.map +1 -0
- package/dist/shared/filereview/secret-paths.d.ts +63 -0
- package/dist/shared/filereview/secret-paths.js +105 -0
- package/dist/shared/filereview/secret-paths.js.map +1 -0
- package/dist/shared/fingerprint-secret.d.ts +26 -0
- package/dist/shared/fingerprint-secret.js +47 -0
- package/dist/shared/fingerprint-secret.js.map +1 -0
- package/dist/shared/model-client.d.ts +51 -0
- package/dist/shared/model-client.js +77 -0
- package/dist/shared/model-client.js.map +1 -0
- package/dist/shared/plan-artifact.js +0 -2
- package/dist/shared/plan-artifact.js.map +1 -1
- package/dist/shared/status-offload.d.ts +83 -9
- package/dist/shared/status-offload.js +399 -79
- package/dist/shared/status-offload.js.map +1 -1
- package/dist/shared/status.js +14 -1
- package/dist/shared/status.js.map +1 -1
- package/dist/shared/tool-kind.d.ts +19 -0
- package/dist/shared/tool-kind.js +13 -0
- package/dist/shared/tool-kind.js.map +1 -1
- package/dist/shared/tool-row.d.ts +88 -0
- package/dist/shared/tool-row.js +127 -0
- package/dist/shared/tool-row.js.map +1 -0
- package/dist/shared/workspace/platform-dir.d.ts +25 -0
- package/dist/shared/workspace/platform-dir.js +38 -2
- package/dist/shared/workspace/platform-dir.js.map +1 -1
- package/dist/workflows/call-agent-orchestrator.js +56 -7
- package/dist/workflows/call-agent-orchestrator.js.map +1 -1
- package/dist/workflows/connect-mcp-server.d.ts +50 -0
- package/dist/workflows/connect-mcp-server.js +136 -15
- package/dist/workflows/connect-mcp-server.js.map +1 -1
- package/dist/workflows/types.d.ts +8 -0
- package/package.json +2 -2
- package/src/__test-utils__/approval-contract/contract.ts +224 -0
- package/src/__test-utils__/approval-contract/types.ts +179 -0
- package/src/__test-utils__/fake-artifact-storage.ts +72 -0
- package/src/__tests__/approval-gateway-contract.test.ts +29 -0
- package/src/__tests__/claimcheck-codec.test.ts +16 -53
- package/src/__tests__/golden-e2e.test.ts +2 -0
- package/src/__tests__/runner-token-coordinator.test.ts +3 -3
- package/src/activities/__tests__/call-agent-status.test.ts +135 -0
- package/src/activities/__tests__/call-llm.test.ts +1 -1
- package/src/activities/__tests__/classify-tool-approvals.test.ts +208 -1
- package/src/activities/__tests__/discover-mcp-server.test.ts +30 -0
- package/src/activities/__tests__/workflow-event-activities.test.ts +2 -1
- package/src/activities/call-agent-status.ts +74 -4
- package/src/activities/call-llm.ts +18 -63
- package/src/activities/classify-tool-approvals.ts +101 -19
- package/src/activities/discover-mcp-server.ts +29 -1
- package/src/activities/execute-cursor/__test-utils__/cursor-hook-harness.ts +216 -0
- package/src/activities/execute-cursor/__test-utils__/gateway-substrate.ts +148 -0
- package/src/activities/execute-cursor/__tests__/approval-gate.test.ts +41 -9
- package/src/activities/execute-cursor/__tests__/approval-state.test.ts +292 -0
- package/src/activities/execute-cursor/__tests__/build-prompt.test.ts +68 -1
- package/src/activities/execute-cursor/__tests__/capture-flow.test.ts +1005 -0
- package/src/activities/execute-cursor/__tests__/cas-observations.test.ts +187 -0
- package/src/activities/execute-cursor/__tests__/coarse-fingerprint.test.ts +97 -0
- package/src/activities/execute-cursor/__tests__/command-provenance.test.ts +240 -0
- package/src/activities/execute-cursor/__tests__/deny-gate-exact-apply.test.ts +203 -0
- package/src/activities/execute-cursor/__tests__/exact-apply.test.ts +375 -0
- package/src/activities/execute-cursor/__tests__/hitl-ledger.test.ts +1294 -24
- package/src/activities/execute-cursor/__tests__/hitl-resume-history.test.ts +446 -0
- package/src/activities/execute-cursor/__tests__/hook-script.test.ts +384 -110
- package/src/activities/execute-cursor/__tests__/message-translator.test.ts +171 -25
- package/src/activities/execute-cursor/__tests__/sequential-gate-resume.test.ts +189 -0
- package/src/activities/execute-cursor/__tests__/tool-result-image.test.ts +44 -23
- package/src/activities/execute-cursor/__tests__/workspace-setup.test.ts +190 -10
- package/src/activities/execute-cursor/approval-policy.ts +28 -159
- package/src/activities/execute-cursor/approval-state.ts +366 -18
- package/src/activities/execute-cursor/capture-flow.ts +323 -0
- package/src/activities/execute-cursor/cas-observations.ts +204 -0
- package/src/activities/execute-cursor/command-provenance.ts +168 -0
- package/src/activities/execute-cursor/exact-apply.ts +253 -0
- package/src/activities/execute-cursor/hook-script.ts +317 -51
- package/src/activities/execute-cursor/index.ts +575 -67
- package/src/activities/execute-cursor/message-translator.ts +963 -89
- package/src/activities/execute-cursor/prompt-builder.ts +80 -14
- package/src/activities/execute-cursor/workspace-setup.ts +257 -42
- package/src/activities/execute-deep-agent/__test-utils__/gateway-substrate.ts +180 -0
- package/src/activities/execute-deep-agent/__test-utils__/scripted-model.ts +134 -0
- package/src/activities/execute-deep-agent/__tests__/approval-file-change.test.ts +84 -0
- package/src/activities/execute-deep-agent/__tests__/attachment-injector.test.ts +11 -24
- package/src/activities/execute-deep-agent/__tests__/cas-capture-backend.test.ts +64 -0
- package/src/activities/execute-deep-agent/__tests__/cas-capture-observer.test.ts +163 -0
- package/src/activities/execute-deep-agent/__tests__/hitl-integration.test.ts +8 -5
- package/src/activities/execute-deep-agent/__tests__/hitl-resume-approve-all.test.ts +342 -0
- package/src/activities/execute-deep-agent/__tests__/hitl-resume-history.test.ts +284 -0
- package/src/activities/execute-deep-agent/__tests__/hitl.test.ts +14 -36
- package/src/activities/execute-deep-agent/__tests__/inline-publisher.test.ts +31 -13
- package/src/activities/execute-deep-agent/__tests__/sequential-gate-resume.test.ts +349 -0
- package/src/activities/execute-deep-agent/__tests__/stamp-flowed-rows.test.ts +119 -0
- package/src/activities/execute-deep-agent/__tests__/status-builder.test.ts +91 -10
- package/src/activities/execute-deep-agent/__tests__/streaming-v3.test.ts +9 -9
- package/src/activities/execute-deep-agent/__tests__/subagent-approval-propagation.test.ts +160 -0
- package/src/activities/execute-deep-agent/__tests__/subagent-gitignored-capture.test.ts +213 -0
- package/src/activities/execute-deep-agent/__tests__/subagent-transformer.test.ts +3 -6
- package/src/activities/execute-deep-agent/__tests__/subagent-wiring.test.ts +84 -1
- package/src/activities/execute-deep-agent/__tests__/v3-status-builder.test.ts +4 -1
- package/src/activities/execute-deep-agent/approval-file-change.ts +80 -0
- package/src/activities/execute-deep-agent/attachment-injector.ts +20 -11
- package/src/activities/execute-deep-agent/cas-capture-backend.ts +66 -0
- package/src/activities/execute-deep-agent/cas-capture-observer.ts +125 -0
- package/src/activities/execute-deep-agent/hitl.ts +23 -7
- package/src/activities/execute-deep-agent/index.ts +463 -40
- package/src/activities/execute-deep-agent/inline-publisher.ts +27 -4
- package/src/activities/execute-deep-agent/setup.ts +223 -125
- package/src/activities/execute-deep-agent/stamp-flowed-rows.ts +64 -0
- package/src/activities/execute-deep-agent/status-builder-shared.ts +62 -23
- package/src/activities/execute-deep-agent/status-builder.ts +63 -8
- package/src/activities/execute-deep-agent/streaming-side-effects.ts +2 -16
- package/src/activities/execute-deep-agent/streaming.ts +3 -13
- package/src/activities/execute-deep-agent/subagent-transformer.ts +53 -13
- package/src/activities/execute-deep-agent/subagent-wiring.ts +50 -3
- package/src/activities/execute-deep-agent/v3-status-builder.ts +36 -2
- package/src/claimcheck/payload-codec.ts +8 -8
- package/src/client/stigmer-client.ts +9 -1
- package/src/middleware/__tests__/approval-gate.test.ts +488 -4
- package/src/middleware/approval-gate.ts +247 -38
- package/src/middleware/types.ts +5 -5
- package/src/shared/__tests__/activity-input.test.ts +78 -0
- package/src/shared/__tests__/approval-canonicalize.test.ts +106 -0
- package/src/shared/__tests__/approval-fingerprint.test.ts +115 -0
- package/src/shared/__tests__/approval-policy.test.ts +274 -40
- package/src/shared/__tests__/args-preview.test.ts +78 -0
- package/src/shared/__tests__/artifact-storage-extended.test.ts +62 -10
- package/src/shared/__tests__/artifact-storage.test.ts +123 -11
- package/src/shared/__tests__/file-change.test.ts +85 -0
- package/src/shared/__tests__/file-tools.test.ts +90 -0
- package/src/shared/__tests__/fingerprint-secret.test.ts +51 -0
- package/src/shared/__tests__/lease-scope-corpus.test.ts +56 -0
- package/src/shared/__tests__/model-client.test.ts +162 -0
- package/src/shared/__tests__/plan-artifact.test.ts +11 -26
- package/src/shared/__tests__/policy-source-corpus.test.ts +58 -0
- package/src/shared/__tests__/status-offload.test.ts +573 -16
- package/src/shared/__tests__/status.test.ts +4 -5
- package/src/shared/__tests__/tool-kind.test.ts +24 -1
- package/src/shared/__tests__/tool-row.test.ts +221 -0
- package/src/shared/activity-input.ts +57 -0
- package/src/shared/approval-canonicalize.ts +159 -0
- package/src/shared/approval-fingerprint.ts +148 -0
- package/src/shared/approval-policy.ts +303 -27
- package/src/shared/args-preview.ts +98 -0
- package/src/shared/artifact-storage.ts +62 -11
- package/src/shared/checkpointer/__tests__/http-saver.test.ts +1 -2
- package/src/shared/file-change.ts +64 -0
- package/src/shared/file-tools.ts +169 -0
- package/src/shared/filereview/__tests__/capture.test.ts +856 -0
- package/src/shared/filereview/__tests__/cas-substrate.test.ts +404 -0
- package/src/shared/filereview/__tests__/digest.test.ts +100 -0
- package/src/shared/filereview/__tests__/events.test.ts +245 -0
- package/src/shared/filereview/__tests__/git-substrate.test.ts +362 -0
- package/src/shared/filereview/__tests__/proxy-reconcile.test.ts +286 -0
- package/src/shared/filereview/__tests__/secret-paths.test.ts +121 -0
- package/src/shared/filereview/capture.ts +727 -0
- package/src/shared/filereview/cas-substrate.ts +401 -0
- package/src/shared/filereview/digest.ts +83 -0
- package/src/shared/filereview/events.ts +449 -0
- package/src/shared/filereview/git-substrate.ts +555 -0
- package/src/shared/filereview/index.ts +60 -0
- package/src/shared/filereview/secret-paths.ts +121 -0
- package/src/shared/fingerprint-secret.ts +53 -0
- package/src/shared/model-client.ts +122 -0
- package/src/shared/plan-artifact.ts +0 -2
- package/src/shared/status-offload.ts +433 -77
- package/src/shared/status.ts +13 -0
- package/src/shared/tool-kind.ts +33 -0
- package/src/shared/tool-row.ts +135 -0
- package/src/shared/workspace/platform-dir.ts +41 -2
- package/src/workflow-engine/__tests__/golden-execution.test.ts +35 -18
- package/src/workflow-engine/__tests__/tasks/try.test.ts +1 -1
- package/src/workflows/__tests__/connect-mcp-server.test.ts +304 -29
- package/src/workflows/call-agent-orchestrator.ts +53 -6
- package/src/workflows/connect-mcp-server.ts +179 -24
- package/src/workflows/types.ts +8 -0
|
@@ -3,8 +3,10 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Tool outputs (an MCP screenshot's base64 image, a giant accessibility-tree
|
|
5
5
|
* dump, a multi-MB shell log, a huge file write) are stored inline in
|
|
6
|
-
* `ToolCall.result`/`args_preview`, which live in `status.messages`
|
|
7
|
-
*
|
|
6
|
+
* `ToolCall.result`/`args_preview`, which live in `status.messages` AND in
|
|
7
|
+
* each `status.sub_agent_executions[].messages` (a delegated tool call's
|
|
8
|
+
* result is just as unbounded), and are re-serialized whole on every
|
|
9
|
+
* `persistStatus` -> `updateStatus` gRPC call.
|
|
8
10
|
* Left unchecked, a single large result pushes the message past the server's
|
|
9
11
|
* 4 MiB gRPC receive cap; the call fails with `resource_exhausted`, progress
|
|
10
12
|
* stops persisting, and the live UI freezes mid-execution.
|
|
@@ -20,18 +22,30 @@
|
|
|
20
22
|
* Idempotent and content-hash-deduped so the throttled, repeated persists
|
|
21
23
|
* (and result re-inflation by mergeToolCallEvent) upload each blob once.
|
|
22
24
|
*
|
|
23
|
-
* 2.
|
|
25
|
+
* 2. offloadCandidateChangesToFit — an aggregate, storage-backed step for the
|
|
26
|
+
* file-review ledger: if the status still exceeds the soft cap after (1),
|
|
27
|
+
* it offloads the largest still-inline captured before/after bodies to
|
|
28
|
+
* retrievable refs (biggest-first) until it fits, so a captured file stays
|
|
29
|
+
* REVIEWABLE (the UI lazily fetches the ref) instead of being dropped. The
|
|
30
|
+
* persisted body is a display projection — reconcile sources bytes from the
|
|
31
|
+
* git refs / CAS manifest, never this body — so this is correctness-neutral.
|
|
32
|
+
*
|
|
33
|
+
* 3. enforceStatusSizeLimit — an aggregate, type-agnostic backstop that runs
|
|
24
34
|
* even when no artifact storage is available: if the encoded status still
|
|
25
35
|
* exceeds a soft cap (comfortably under 4 MiB), it elides the largest
|
|
26
|
-
* remaining inline fields in place until the payload fits.
|
|
36
|
+
* remaining inline fields in place until the payload fits. For file-review
|
|
37
|
+
* bodies this is the LAST resort (no storage, or (2) could not free enough):
|
|
38
|
+
* the body is dropped and the file marked SIZE_ELIDED / incomplete.
|
|
27
39
|
*
|
|
28
|
-
*
|
|
40
|
+
* All operate ONLY on what is persisted/streamed; the agent's working context
|
|
29
41
|
* is managed by the harness/SDK separately, so reasoning is unaffected.
|
|
30
42
|
*/
|
|
31
43
|
import { createHash } from "node:crypto";
|
|
32
44
|
import { create, toBinary } from "@bufbuild/protobuf";
|
|
33
45
|
import { AgentExecutionStatusSchema, } from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/api_pb";
|
|
34
46
|
import { ToolCallOutputRefSchema } from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/message_pb";
|
|
47
|
+
import { FileReviewBlockReason } from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/enum_pb";
|
|
48
|
+
import { deriveDiffCompleteness } from "./filereview/events.js";
|
|
35
49
|
/**
|
|
36
50
|
* A single tool output (result or args_preview) larger than this many bytes is
|
|
37
51
|
* offloaded to artifact storage instead of inlined into the persisted status.
|
|
@@ -39,6 +53,13 @@ import { ToolCallOutputRefSchema } from "@stigmer/protos/ai/stigmer/agentic/agen
|
|
|
39
53
|
* even a handful of large-but-sub-threshold results cannot aggregate past it.
|
|
40
54
|
*/
|
|
41
55
|
export const INLINE_TOOL_OUTPUT_MAX_BYTES = 256 * 1024;
|
|
56
|
+
/**
|
|
57
|
+
* A single FileChange before/after body larger than this is offloaded to
|
|
58
|
+
* artifact storage. Smaller than the 256 KiB tool-output cap because a file
|
|
59
|
+
* change can carry two bodies (before + after) per change and several changes
|
|
60
|
+
* per tool call, so the aggregate would otherwise climb quickly.
|
|
61
|
+
*/
|
|
62
|
+
export const INLINE_FILE_CONTENT_MAX_BYTES = 128 * 1024;
|
|
42
63
|
/** Head of an offloaded text result kept inline for an at-a-glance preview. */
|
|
43
64
|
export const TEXT_PREVIEW_HEAD_CHARS = 4_000;
|
|
44
65
|
/**
|
|
@@ -51,8 +72,14 @@ export const STATUS_PAYLOAD_SOFT_LIMIT_BYTES = 3 * 1024 * 1024;
|
|
|
51
72
|
* large, to maximize the chance the retry succeeds.
|
|
52
73
|
*/
|
|
53
74
|
export const STATUS_PAYLOAD_HARD_LIMIT_BYTES = 2 * 1024 * 1024;
|
|
54
|
-
/**
|
|
55
|
-
|
|
75
|
+
/**
|
|
76
|
+
* Marker left in place of an aggregate-elided inline field. Exported so the
|
|
77
|
+
* resume-time exact-apply resolver can recognize (and refuse to write) an elided
|
|
78
|
+
* body rather than corrupting a file with the marker text — the lossy elision is
|
|
79
|
+
* the one case where the exact approved bytes are unrecoverable and exact-apply
|
|
80
|
+
* must fall back. The two sides cannot drift because they share this constant.
|
|
81
|
+
*/
|
|
82
|
+
export const ELISION_MARKER = "[output elided to keep status under the size limit]";
|
|
56
83
|
/** Below this size an inline field is not worth eliding (the marker is ~50B). */
|
|
57
84
|
const ELISION_MIN_BYTES = 1_024;
|
|
58
85
|
function byteLen(s) {
|
|
@@ -71,6 +98,28 @@ function formatBytes(n) {
|
|
|
71
98
|
return `${(n / 1024).toFixed(1)} KB`;
|
|
72
99
|
return `${n} B`;
|
|
73
100
|
}
|
|
101
|
+
/**
|
|
102
|
+
* Every message list carried on the status: the parent transcript plus each
|
|
103
|
+
* sub-agent's nested transcript. Sub-agent tool calls hold real results (a
|
|
104
|
+
* delegated read/grep/screenshot can be as large as a top-level one), so every
|
|
105
|
+
* size-bounding pass in this module walks THIS set — a location covered by
|
|
106
|
+
* offload but not elision (or vice versa) would be a hole in the persist
|
|
107
|
+
* boundary's bounded-payload guarantee.
|
|
108
|
+
*/
|
|
109
|
+
function allMessageLists(status) {
|
|
110
|
+
return [status.messages, ...status.subAgentExecutions.map((sa) => sa.messages)];
|
|
111
|
+
}
|
|
112
|
+
/** Every tool call in the status, across the parent and all sub-agents. */
|
|
113
|
+
function allToolCalls(status) {
|
|
114
|
+
const out = [];
|
|
115
|
+
for (const messages of allMessageLists(status)) {
|
|
116
|
+
for (const msg of messages) {
|
|
117
|
+
for (const tc of msg.toolCalls)
|
|
118
|
+
out.push(tc);
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
return out;
|
|
122
|
+
}
|
|
74
123
|
function extFromMime(mimeType) {
|
|
75
124
|
switch (mimeType) {
|
|
76
125
|
case "image/png": return "png";
|
|
@@ -81,66 +130,92 @@ function extFromMime(mimeType) {
|
|
|
81
130
|
default: return "bin";
|
|
82
131
|
}
|
|
83
132
|
}
|
|
133
|
+
/** Match an exact `data:image/...;base64,...` URL (the whole string). */
|
|
84
134
|
function matchDataUrl(s) {
|
|
85
135
|
const m = s.match(/^data:(image\/[a-zA-Z0-9.+-]+);base64,([\s\S]+)$/);
|
|
86
136
|
if (!m)
|
|
87
137
|
return null;
|
|
88
138
|
return { mimeType: m[1], base64: m[2].replace(/\s+/g, "") };
|
|
89
139
|
}
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
if (kwargs && typeof kwargs === "object" && Array.isArray(kwargs.content)) {
|
|
103
|
-
return kwargs.content;
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
return [];
|
|
140
|
+
/**
|
|
141
|
+
* Find a `data:image/...;base64,...` URL anywhere in a string — whether it IS
|
|
142
|
+
* the whole result or is embedded in surrounding text/JSON. A data URL is an
|
|
143
|
+
* unambiguous image signal, so scanning is safe (no false positives on ordinary
|
|
144
|
+
* text). The base64 run is bounded by the first non-base64 character (e.g. a
|
|
145
|
+
* closing JSON quote), so an embedded URL is extracted cleanly.
|
|
146
|
+
*/
|
|
147
|
+
function findDataUrlInString(s) {
|
|
148
|
+
const m = s.match(/data:(image\/[a-zA-Z0-9.+-]+);base64,([A-Za-z0-9+/=\s]+)/);
|
|
149
|
+
if (!m)
|
|
150
|
+
return null;
|
|
151
|
+
return { mimeType: m[1], base64: m[2].replace(/\s+/g, "") };
|
|
107
152
|
}
|
|
108
153
|
/**
|
|
109
|
-
*
|
|
110
|
-
*
|
|
111
|
-
*
|
|
112
|
-
*
|
|
154
|
+
* Build an ImagePayload from a block's `data` + optional mime hint. Accepts the
|
|
155
|
+
* shapes the Cursor SDK actually delivers for an image block's `data`:
|
|
156
|
+
* - Node Buffer-JSON ({ type:"Buffer", data:number[] }) — the runtime shape
|
|
157
|
+
* confirmed from a real cursor-harness get_app_state result. (The SDK's .d.ts
|
|
158
|
+
* types `data` as a string, but at runtime image bytes serialize as
|
|
159
|
+
* Buffer-JSON, so both must be handled.)
|
|
160
|
+
* - a `data:` URL string, or
|
|
161
|
+
* - a bare base64 string.
|
|
162
|
+
* Anything else (a file path, a number) yields null, so only an explicit image
|
|
163
|
+
* signal ever matches. The mime hint defaults to image/png when absent — Cursor
|
|
164
|
+
* MCP image blocks frequently omit mimeType.
|
|
113
165
|
*/
|
|
114
|
-
|
|
115
|
-
const
|
|
116
|
-
if (
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
166
|
+
function imageFromData(data, mime) {
|
|
167
|
+
const mimeType = typeof mime === "string" && mime.length > 0 ? mime : "image/png";
|
|
168
|
+
if (data && typeof data === "object") {
|
|
169
|
+
const d = data;
|
|
170
|
+
if (d.type === "Buffer" && Array.isArray(d.data)) {
|
|
171
|
+
try {
|
|
172
|
+
const base64 = Buffer.from(d.data).toString("base64");
|
|
173
|
+
return base64.length > 0 ? { mimeType, base64 } : null;
|
|
174
|
+
}
|
|
175
|
+
catch {
|
|
176
|
+
return null;
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
return null;
|
|
121
180
|
}
|
|
122
|
-
|
|
181
|
+
if (typeof data !== "string" || data.length === 0)
|
|
123
182
|
return null;
|
|
183
|
+
const asUrl = matchDataUrl(data);
|
|
184
|
+
if (asUrl)
|
|
185
|
+
return asUrl;
|
|
186
|
+
return { mimeType, base64: data.replace(/\s+/g, "") };
|
|
187
|
+
}
|
|
188
|
+
/**
|
|
189
|
+
* Extract an image from a single object IF it is a recognized image block.
|
|
190
|
+
* Recognized shapes, all of which carry an explicit image marker (so an
|
|
191
|
+
* arbitrary object never matches):
|
|
192
|
+
* - Cursor SDK MCP block: { image: { data: <base64|dataUrl>, mimeType? } }
|
|
193
|
+
* - Anthropic/MCP-style block: { type: "image", data: <base64>, mimeType? }
|
|
194
|
+
* - OpenAI-style block: { type: "image_url", image_url: { url: <dataUrl> } }
|
|
195
|
+
* (also tolerates { type: "image", image: <base64> })
|
|
196
|
+
*
|
|
197
|
+
* Returns null when no image marker is present, leaving the recursive walk to
|
|
198
|
+
* keep searching siblings/children.
|
|
199
|
+
*/
|
|
200
|
+
function imageFromBlock(obj) {
|
|
201
|
+
// Cursor SDK shape: the image rides under a nested `image` object. This is the
|
|
202
|
+
// exact shape @cursor/sdk uses for MCP image content (see conversation-types),
|
|
203
|
+
// which canonicalizeImageResult normalizes — but only when the result reaches
|
|
204
|
+
// it as an object. A result delivered already-serialized (a string) bypasses
|
|
205
|
+
// that, so detection must recognize this shape directly.
|
|
206
|
+
if (obj.image && typeof obj.image === "object") {
|
|
207
|
+
const img = obj.image;
|
|
208
|
+
const payload = imageFromData(img.data, img.mimeType ?? img.mime_type);
|
|
209
|
+
if (payload)
|
|
210
|
+
return payload;
|
|
124
211
|
}
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
if (
|
|
131
|
-
|
|
132
|
-
const raw = typeof obj.data === "string" ? obj.data :
|
|
133
|
-
typeof obj.image === "string" ? obj.image :
|
|
134
|
-
undefined;
|
|
135
|
-
if (raw) {
|
|
136
|
-
const asUrl = matchDataUrl(raw);
|
|
137
|
-
if (asUrl)
|
|
138
|
-
return asUrl;
|
|
139
|
-
const mimeType = typeof obj.mimeType === "string" ? obj.mimeType :
|
|
140
|
-
typeof obj.mime_type === "string" ? obj.mime_type :
|
|
141
|
-
"image/png";
|
|
142
|
-
return { mimeType, base64: raw.replace(/\s+/g, "") };
|
|
143
|
-
}
|
|
212
|
+
const type = typeof obj.type === "string" ? obj.type : "";
|
|
213
|
+
if (type === "image" || type === "image_url") {
|
|
214
|
+
const inline = imageFromData(typeof obj.data === "string" ? obj.data
|
|
215
|
+
: typeof obj.image === "string" ? obj.image
|
|
216
|
+
: undefined, obj.mimeType ?? obj.mime_type);
|
|
217
|
+
if (inline)
|
|
218
|
+
return inline;
|
|
144
219
|
const imageUrl = obj.image_url;
|
|
145
220
|
if (imageUrl && typeof imageUrl === "object") {
|
|
146
221
|
const url = imageUrl.url;
|
|
@@ -153,6 +228,69 @@ export function detectImagePayload(result) {
|
|
|
153
228
|
}
|
|
154
229
|
return null;
|
|
155
230
|
}
|
|
231
|
+
/**
|
|
232
|
+
* Walk a parsed JSON value depth-first, returning the first recognized image
|
|
233
|
+
* block. Recursing (rather than only checking the top level or a `content`
|
|
234
|
+
* array) is what makes detection robust to HOW a harness wraps the image: a
|
|
235
|
+
* multimodal MCP result may arrive as a top-level array, under `value.content`,
|
|
236
|
+
* under `kwargs.content`, or nested deeper still. Because imageFromBlock
|
|
237
|
+
* requires an explicit image marker, the walk never misclassifies ordinary
|
|
238
|
+
* nested data as an image.
|
|
239
|
+
*/
|
|
240
|
+
function findImageInValue(value) {
|
|
241
|
+
if (Array.isArray(value)) {
|
|
242
|
+
for (const item of value) {
|
|
243
|
+
const found = findImageInValue(item);
|
|
244
|
+
if (found)
|
|
245
|
+
return found;
|
|
246
|
+
}
|
|
247
|
+
return null;
|
|
248
|
+
}
|
|
249
|
+
if (value && typeof value === "object") {
|
|
250
|
+
const obj = value;
|
|
251
|
+
const direct = imageFromBlock(obj);
|
|
252
|
+
if (direct)
|
|
253
|
+
return direct;
|
|
254
|
+
for (const child of Object.values(obj)) {
|
|
255
|
+
const found = findImageInValue(child);
|
|
256
|
+
if (found)
|
|
257
|
+
return found;
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
return null;
|
|
261
|
+
}
|
|
262
|
+
/**
|
|
263
|
+
* Best-effort extraction of an inline image from a tool result string.
|
|
264
|
+
*
|
|
265
|
+
* An MCP tool that returns an image (e.g. a computer-use screenshot) must be
|
|
266
|
+
* lifted into a renderable `ToolCallOutputRef`; otherwise it persists as text
|
|
267
|
+
* and the UI shows raw JSON / "view full output" instead of the picture. The
|
|
268
|
+
* image can arrive in many wrappers depending on the harness and whether the
|
|
269
|
+
* result was pre-serialized, so detection looks for an UNAMBIGUOUS image signal
|
|
270
|
+
* rather than a fixed envelope position:
|
|
271
|
+
*
|
|
272
|
+
* 1. a `data:image/*;base64,...` URL anywhere in the string, then
|
|
273
|
+
* 2. a recognized image block at any depth of a JSON result
|
|
274
|
+
* (see {@link imageFromBlock}).
|
|
275
|
+
*
|
|
276
|
+
* Returns null for non-image or unparseable results so the caller falls back to
|
|
277
|
+
* text offload. It deliberately does NOT treat a bare base64 string with no
|
|
278
|
+
* image marker as an image — that would misclassify legitimate large text
|
|
279
|
+
* (logs, base64-encoded files) as pictures.
|
|
280
|
+
*/
|
|
281
|
+
export function detectImagePayload(result) {
|
|
282
|
+
const embeddedUrl = findDataUrlInString(result);
|
|
283
|
+
if (embeddedUrl)
|
|
284
|
+
return embeddedUrl;
|
|
285
|
+
let parsed;
|
|
286
|
+
try {
|
|
287
|
+
parsed = JSON.parse(result);
|
|
288
|
+
}
|
|
289
|
+
catch {
|
|
290
|
+
return null;
|
|
291
|
+
}
|
|
292
|
+
return findImageInValue(parsed);
|
|
293
|
+
}
|
|
156
294
|
function collapsedResultFor(ref) {
|
|
157
295
|
if (ref.isImage) {
|
|
158
296
|
return `[image output — ${formatBytes(Number(ref.sizeBytes))}, view inline]`;
|
|
@@ -181,10 +319,8 @@ async function maybeOffloadToolCall(tc, ctx, maxBytes) {
|
|
|
181
319
|
const bytes = Buffer.from(image.base64, "base64");
|
|
182
320
|
const key = `artifacts/${ctx.executionId}/toolcalls/${tc.id}.${extFromMime(image.mimeType)}`;
|
|
183
321
|
await ctx.artifactStorage.upload(key, bytes, image.mimeType);
|
|
184
|
-
const downloadUrl = await ctx.artifactStorage.getDownloadUrl(key);
|
|
185
322
|
tc.outputRef = create(ToolCallOutputRefSchema, {
|
|
186
323
|
storageKey: key,
|
|
187
|
-
downloadUrl,
|
|
188
324
|
sizeBytes: BigInt(bytes.length),
|
|
189
325
|
contentHash: hash,
|
|
190
326
|
mimeType: image.mimeType,
|
|
@@ -201,10 +337,8 @@ async function maybeOffloadToolCall(tc, ctx, maxBytes) {
|
|
|
201
337
|
const content = Buffer.from(result, "utf8");
|
|
202
338
|
const key = `artifacts/${ctx.executionId}/toolcalls/${tc.id}.txt`;
|
|
203
339
|
await ctx.artifactStorage.upload(key, content, "text/plain");
|
|
204
|
-
const downloadUrl = await ctx.artifactStorage.getDownloadUrl(key);
|
|
205
340
|
tc.outputRef = create(ToolCallOutputRefSchema, {
|
|
206
341
|
storageKey: key,
|
|
207
|
-
downloadUrl,
|
|
208
342
|
sizeBytes: BigInt(content.length),
|
|
209
343
|
contentHash: hash,
|
|
210
344
|
mimeType: "text/plain",
|
|
@@ -213,33 +347,179 @@ async function maybeOffloadToolCall(tc, ctx, maxBytes) {
|
|
|
213
347
|
});
|
|
214
348
|
tc.result = collapsedResultFor(tc.outputRef);
|
|
215
349
|
}
|
|
350
|
+
/**
|
|
351
|
+
* Spill one side (before/after) of a file change to artifact storage when its
|
|
352
|
+
* inline body exceeds the cap, replacing the inline body with a ref carrying a
|
|
353
|
+
* head preview. A side that is absent, already a ref (offloaded on a prior
|
|
354
|
+
* persist), or under the cap is left untouched — the `case === "ref"` check
|
|
355
|
+
* makes this idempotent across the throttled, repeated persists.
|
|
356
|
+
*/
|
|
357
|
+
async function maybeOffloadFileContent(content, key, ctx, maxBytes) {
|
|
358
|
+
if (!content || content.body.case !== "inline")
|
|
359
|
+
return;
|
|
360
|
+
const text = content.body.value;
|
|
361
|
+
if (byteLen(text) <= maxBytes)
|
|
362
|
+
return;
|
|
363
|
+
const bytes = Buffer.from(text, "utf8");
|
|
364
|
+
await ctx.artifactStorage.upload(key, bytes, "text/plain");
|
|
365
|
+
content.body = {
|
|
366
|
+
case: "ref",
|
|
367
|
+
value: create(ToolCallOutputRefSchema, {
|
|
368
|
+
storageKey: key,
|
|
369
|
+
sizeBytes: BigInt(bytes.length),
|
|
370
|
+
contentHash: sha256(text),
|
|
371
|
+
mimeType: "text/plain",
|
|
372
|
+
isImage: false,
|
|
373
|
+
truncatedPreview: headChars(text, TEXT_PREVIEW_HEAD_CHARS),
|
|
374
|
+
}),
|
|
375
|
+
};
|
|
376
|
+
}
|
|
377
|
+
/**
|
|
378
|
+
* Every captured file change carried on a CANDIDATE_CAPTURED event in the
|
|
379
|
+
* file_review ledger. The before/after bodies live HERE (not on tool calls)
|
|
380
|
+
* under the apply-then-review model, so the persist-boundary size guards must
|
|
381
|
+
* cover this location too — otherwise a large captured file silently pushes the
|
|
382
|
+
* status past the gRPC cap (the freeze this module exists to prevent).
|
|
383
|
+
*/
|
|
384
|
+
function candidateChanges(status) {
|
|
385
|
+
const out = [];
|
|
386
|
+
for (const ev of status.fileReviewEventStream?.events ?? []) {
|
|
387
|
+
if (ev.payload.case === "candidateCaptured") {
|
|
388
|
+
out.push(...ev.payload.value.changes);
|
|
389
|
+
}
|
|
390
|
+
}
|
|
391
|
+
return out;
|
|
392
|
+
}
|
|
393
|
+
/** Offload oversized before/after bodies of every captured file-review change. */
|
|
394
|
+
async function maybeOffloadCandidateChanges(status, ctx, maxBytes) {
|
|
395
|
+
const changes = candidateChanges(status);
|
|
396
|
+
for (const change of changes) {
|
|
397
|
+
const base = `artifacts/${ctx.executionId}/filereview/${change.id}`;
|
|
398
|
+
await maybeOffloadFileContent(change.before, `${base}.before.txt`, ctx, maxBytes);
|
|
399
|
+
await maybeOffloadFileContent(change.after, `${base}.after.txt`, ctx, maxBytes);
|
|
400
|
+
}
|
|
401
|
+
}
|
|
216
402
|
/**
|
|
217
403
|
* Offload every oversized tool result in the status to artifact storage,
|
|
218
404
|
* replacing the inline value with a short head + ToolCallOutputRef. Per-tool
|
|
219
405
|
* failures fall back to an inline truncation (a bounded result beats a failed
|
|
220
406
|
* persist) and never throw, so a storage hiccup cannot fail the execution.
|
|
407
|
+
*
|
|
408
|
+
* File-review before/after bodies (on the CANDIDATE_CAPTURED ledger events) are
|
|
409
|
+
* offloaded in the same pass — a tool can produce a small result yet a large
|
|
410
|
+
* captured diff. A file-review offload failure is non-fatal — the body stays
|
|
411
|
+
* inline and the aggregate backstop (enforceStatusSizeLimit) drops it if needed.
|
|
221
412
|
*/
|
|
222
413
|
export async function offloadOversizedToolOutputs(status, ctx) {
|
|
223
414
|
const maxBytes = ctx.maxInlineBytes ?? INLINE_TOOL_OUTPUT_MAX_BYTES;
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
}
|
|
415
|
+
const maxFileBytes = ctx.maxInlineFileBytes ?? INLINE_FILE_CONTENT_MAX_BYTES;
|
|
416
|
+
for (const tc of allToolCalls(status)) {
|
|
417
|
+
try {
|
|
418
|
+
await maybeOffloadToolCall(tc, ctx, maxBytes);
|
|
419
|
+
}
|
|
420
|
+
catch (err) {
|
|
421
|
+
const original = tc.result ?? "";
|
|
422
|
+
tc.result =
|
|
423
|
+
headChars(original, TEXT_PREVIEW_HEAD_CHARS) +
|
|
424
|
+
`\n\n[output truncated — offload failed: ${err instanceof Error ? err.message : String(err)}]`;
|
|
425
|
+
console.warn(`[status-offload] execution=${ctx.executionId} tool=${tc.name} ` +
|
|
426
|
+
`offload failed (non-fatal); truncated inline`);
|
|
237
427
|
}
|
|
238
428
|
}
|
|
429
|
+
// File-review ledger: offload oversized captured before/after bodies the same
|
|
430
|
+
// way (the proto's contract is "offloaded before the candidate event is
|
|
431
|
+
// persisted"). A failure is non-fatal — the body stays inline and the
|
|
432
|
+
// mark-incomplete backstop handles it without corrupting the ledger.
|
|
433
|
+
try {
|
|
434
|
+
await maybeOffloadCandidateChanges(status, ctx, maxFileBytes);
|
|
435
|
+
}
|
|
436
|
+
catch {
|
|
437
|
+
console.warn(`[status-offload] execution=${ctx.executionId} ` +
|
|
438
|
+
`file-review change offload failed (non-fatal); left inline for the size backstop`);
|
|
439
|
+
}
|
|
440
|
+
}
|
|
441
|
+
/**
|
|
442
|
+
* Aggregate-budget offload of file-review candidate bodies (async, storage-backed).
|
|
443
|
+
*
|
|
444
|
+
* The per-item pass ({@link offloadOversizedToolOutputs}) only offloads a body
|
|
445
|
+
* over {@link INLINE_FILE_CONTENT_MAX_BYTES}; many mid-sized captured files (each
|
|
446
|
+
* under that per-file cap) can still sum the whole status past the soft limit.
|
|
447
|
+
* Rather than let the storage-less backstop ({@link enforceStatusSizeLimit}) DROP
|
|
448
|
+
* those bodies — which sets `diff_complete=false` and blocks approval, turning a
|
|
449
|
+
* reviewable change discard-only — this step offloads the largest still-inline
|
|
450
|
+
* captured bodies to retrievable refs (biggest-first) until the status fits. The
|
|
451
|
+
* review UI then lazily fetches each ref via getArtifactContent exactly as it
|
|
452
|
+
* already does for a >128 KiB file, and the change stays reviewable
|
|
453
|
+
* (`diff_complete` is untouched, so the set rollup is unchanged).
|
|
454
|
+
*
|
|
455
|
+
* Correctness: the persisted before/after body is a DISPLAY projection —
|
|
456
|
+
* reconcile sources the approved bytes from the pinned git refs / CAS manifest
|
|
457
|
+
* and verifies them against the enforcement digests (`before_sha256`/
|
|
458
|
+
* `after_sha256`), never this body (see {@link ../filereview/capture.js}). So
|
|
459
|
+
* converting a body to a ref (or, in the backstop, dropping it) cannot change
|
|
460
|
+
* what is applied on approval.
|
|
461
|
+
*
|
|
462
|
+
* Non-fatal per side: a storage failure leaves that body inline for the backstop
|
|
463
|
+
* to drop. Returns true if any body was offloaded. Called only for a status that
|
|
464
|
+
* actually carries file-review events (the caller guards on that), and a no-op
|
|
465
|
+
* (single encode) when the status already fits.
|
|
466
|
+
*/
|
|
467
|
+
export async function offloadCandidateChangesToFit(status, ctx, softLimitBytes = STATUS_PAYLOAD_SOFT_LIMIT_BYTES) {
|
|
468
|
+
if (encodedSize(status) <= softLimitBytes)
|
|
469
|
+
return false;
|
|
470
|
+
const sides = [];
|
|
471
|
+
for (const change of candidateChanges(status)) {
|
|
472
|
+
const base = `artifacts/${ctx.executionId}/filereview/${change.id}`;
|
|
473
|
+
if (change.before?.body.case === "inline" && byteLen(change.before.body.value) > ELISION_MIN_BYTES) {
|
|
474
|
+
sides.push({ content: change.before, key: `${base}.before.txt`, bytes: byteLen(change.before.body.value) });
|
|
475
|
+
}
|
|
476
|
+
if (change.after?.body.case === "inline" && byteLen(change.after.body.value) > ELISION_MIN_BYTES) {
|
|
477
|
+
sides.push({ content: change.after, key: `${base}.after.txt`, bytes: byteLen(change.after.body.value) });
|
|
478
|
+
}
|
|
479
|
+
}
|
|
480
|
+
// Largest first: shed the most bytes per upload and offload the fewest bodies.
|
|
481
|
+
sides.sort((a, b) => b.bytes - a.bytes);
|
|
482
|
+
let offloadedAny = false;
|
|
483
|
+
for (const side of sides) {
|
|
484
|
+
if (encodedSize(status) <= softLimitBytes)
|
|
485
|
+
break;
|
|
486
|
+
try {
|
|
487
|
+
// Pre-filtered to inline & over the threshold, so this always offloads;
|
|
488
|
+
// the shared helper keeps the ref shape + the `case === "ref"` idempotency.
|
|
489
|
+
await maybeOffloadFileContent(side.content, side.key, ctx, ELISION_MIN_BYTES);
|
|
490
|
+
offloadedAny = true;
|
|
491
|
+
}
|
|
492
|
+
catch {
|
|
493
|
+
// Non-fatal: leave this body inline for enforceStatusSizeLimit to drop.
|
|
494
|
+
console.warn(`[status-offload] execution=${ctx.executionId} ` +
|
|
495
|
+
`aggregate file-review offload failed for ${side.key} (non-fatal); ` +
|
|
496
|
+
`left inline for the size backstop`);
|
|
497
|
+
}
|
|
498
|
+
}
|
|
499
|
+
return offloadedAny;
|
|
239
500
|
}
|
|
240
501
|
function encodedSize(status) {
|
|
241
502
|
return toBinary(AgentExecutionStatusSchema, status).length;
|
|
242
503
|
}
|
|
504
|
+
/**
|
|
505
|
+
* Drop a captured change's oversized inline before/after bodies (replacing them
|
|
506
|
+
* with nothing), returning true if either side was large enough to drop. Used by
|
|
507
|
+
* the backstop for file-review bodies, where overwriting with the elision marker
|
|
508
|
+
* would corrupt the authoritative content — dropping + marking incomplete is the
|
|
509
|
+
* safe alternative (bytes are re-sourced from refs/re-capture on reconcile).
|
|
510
|
+
*/
|
|
511
|
+
function dropInlineBodiesIfLarge(change) {
|
|
512
|
+
let dropped = false;
|
|
513
|
+
if (change.before?.body.case === "inline" && byteLen(change.before.body.value) > ELISION_MIN_BYTES) {
|
|
514
|
+
change.before = undefined;
|
|
515
|
+
dropped = true;
|
|
516
|
+
}
|
|
517
|
+
if (change.after?.body.case === "inline" && byteLen(change.after.body.value) > ELISION_MIN_BYTES) {
|
|
518
|
+
change.after = undefined;
|
|
519
|
+
dropped = true;
|
|
520
|
+
}
|
|
521
|
+
return dropped;
|
|
522
|
+
}
|
|
243
523
|
/**
|
|
244
524
|
* Aggregate, type-agnostic backstop. If the encoded status exceeds
|
|
245
525
|
* `softLimitBytes`, elide the largest inline tool fields (and, as a last
|
|
@@ -250,11 +530,7 @@ function encodedSize(status) {
|
|
|
250
530
|
export function enforceStatusSizeLimit(status, softLimitBytes = STATUS_PAYLOAD_SOFT_LIMIT_BYTES) {
|
|
251
531
|
if (encodedSize(status) <= softLimitBytes)
|
|
252
532
|
return false;
|
|
253
|
-
const toolCalls =
|
|
254
|
-
for (const msg of status.messages) {
|
|
255
|
-
for (const tc of msg.toolCalls)
|
|
256
|
-
toolCalls.push(tc);
|
|
257
|
-
}
|
|
533
|
+
const toolCalls = allToolCalls(status);
|
|
258
534
|
// Largest inline footprint first so we shed the most bytes per elision.
|
|
259
535
|
toolCalls.sort((a, b) => byteLen(b.result) + byteLen(b.argsPreview) -
|
|
260
536
|
(byteLen(a.result) + byteLen(a.argsPreview)));
|
|
@@ -275,9 +551,53 @@ export function enforceStatusSizeLimit(status, softLimitBytes = STATUS_PAYLOAD_S
|
|
|
275
551
|
elidedAny = true;
|
|
276
552
|
}
|
|
277
553
|
}
|
|
278
|
-
//
|
|
554
|
+
// File-review ledger bodies — the storage-less LAST resort. When storage is
|
|
555
|
+
// available, offloadCandidateChangesToFit has already turned oversized captured
|
|
556
|
+
// bodies into retrievable refs (kept reviewable); a body still inline here means
|
|
557
|
+
// there was no storage, or offloading everything still did not free enough.
|
|
558
|
+
// Unlike a tool output, we never overwrite the captured body with the elision
|
|
559
|
+
// marker — the review renders this body, so a marker would show corrupt content;
|
|
560
|
+
// instead we DROP it and mark the file incomplete (SIZE_ELIDED). Reconcile
|
|
561
|
+
// sources bytes from the git refs / CAS manifest (never this display body), and
|
|
562
|
+
// the review surface blocks approval of an incomplete diff. This trades
|
|
563
|
+
// reviewability for a bounded payload, never correctness.
|
|
564
|
+
if (encodedSize(status) > softLimitBytes) {
|
|
565
|
+
for (const ev of status.fileReviewEventStream?.events ?? []) {
|
|
566
|
+
if (encodedSize(status) <= softLimitBytes)
|
|
567
|
+
break;
|
|
568
|
+
if (ev.payload.case !== "candidateCaptured")
|
|
569
|
+
continue;
|
|
570
|
+
const candidate = ev.payload.value;
|
|
571
|
+
let markedAny = false;
|
|
572
|
+
for (const change of candidate.changes) {
|
|
573
|
+
if (encodedSize(status) <= softLimitBytes)
|
|
574
|
+
break;
|
|
575
|
+
if (dropInlineBodiesIfLarge(change)) {
|
|
576
|
+
change.diffComplete = false;
|
|
577
|
+
// Record the honest cause so the review UI distinguishes a size-elided
|
|
578
|
+
// diff from a secret-withheld one (doc 15). Don't overwrite a reason a
|
|
579
|
+
// more specific producer already set (e.g. SECRET_WITHHELD).
|
|
580
|
+
if (change.blockedReason === FileReviewBlockReason.UNSPECIFIED) {
|
|
581
|
+
change.blockedReason = FileReviewBlockReason.SIZE_ELIDED;
|
|
582
|
+
}
|
|
583
|
+
markedAny = true;
|
|
584
|
+
elidedAny = true;
|
|
585
|
+
}
|
|
586
|
+
}
|
|
587
|
+
if (markedAny) {
|
|
588
|
+
// Re-derive the rollup from the now-elided changes via the single shared
|
|
589
|
+
// rule. A dropped inline body is non-binary incomplete, so the set
|
|
590
|
+
// downgrades to PARTIAL_BLOCKED (a BINARY_SUMMARY_ONLY set that loses a
|
|
591
|
+
// text body is no longer binary-only); computing it here keeps the rule
|
|
592
|
+
// in one place instead of hardcoding the outcome.
|
|
593
|
+
candidate.diffCompleteness = deriveDiffCompleteness(candidate.changes);
|
|
594
|
+
}
|
|
595
|
+
}
|
|
596
|
+
}
|
|
597
|
+
// Last resort: oversized message content (e.g. a huge AI response),
|
|
598
|
+
// parent and sub-agent alike.
|
|
279
599
|
if (encodedSize(status) > softLimitBytes) {
|
|
280
|
-
const byContent =
|
|
600
|
+
const byContent = allMessageLists(status).flat().sort((a, b) => byteLen(b.content) - byteLen(a.content));
|
|
281
601
|
for (const msg of byContent) {
|
|
282
602
|
if (encodedSize(status) <= softLimitBytes)
|
|
283
603
|
break;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"status-offload.js","sourceRoot":"","sources":["../../src/shared/status-offload.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"status-offload.js","sourceRoot":"","sources":["../../src/shared/status-offload.ts"],"names":[],"mappings":"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"}
|