@stigmer/runner 3.15.3-dev.20260914121148 → 3.15.3-dev.20260916211208
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 +1 -0
- package/dist/.build-fingerprint +1 -1
- package/dist/__test-utils__/approval-contract/types.d.ts +1 -1
- package/dist/__test-utils__/hermetic-activity.d.ts +61 -7
- package/dist/__test-utils__/hermetic-activity.js +100 -9
- package/dist/__test-utils__/hermetic-activity.js.map +1 -1
- package/dist/__test-utils__/model-registry-fixture.d.ts +22 -3
- package/dist/__test-utils__/model-registry-fixture.js +22 -7
- package/dist/__test-utils__/model-registry-fixture.js.map +1 -1
- package/dist/activities/execute-cursor/__test-utils__/contract-subject.d.ts +2 -2
- package/dist/activities/execute-cursor/__test-utils__/contract-subject.js +2 -2
- package/dist/activities/execute-cursor/__test-utils__/fold.d.ts +61 -0
- package/dist/activities/execute-cursor/__test-utils__/fold.js +94 -0
- package/dist/activities/execute-cursor/__test-utils__/fold.js.map +1 -0
- package/dist/activities/execute-cursor/__test-utils__/gateway-substrate.js +1 -1
- package/dist/activities/execute-cursor/__test-utils__/gateway-substrate.js.map +1 -1
- package/dist/activities/execute-cursor/__test-utils__/hermetic-cursor.d.ts +47 -12
- package/dist/activities/execute-cursor/__test-utils__/hermetic-cursor.js +41 -10
- package/dist/activities/execute-cursor/__test-utils__/hermetic-cursor.js.map +1 -1
- package/dist/activities/execute-cursor/__test-utils__/scripted-agent.d.ts +15 -6
- package/dist/activities/execute-cursor/__test-utils__/scripted-agent.js +17 -4
- package/dist/activities/execute-cursor/__test-utils__/scripted-agent.js.map +1 -1
- package/dist/activities/execute-cursor/adapter.d.ts +4 -4
- package/dist/activities/execute-cursor/adapter.js +4 -4
- package/dist/activities/execute-cursor/approval-policy.d.ts +10 -10
- package/dist/activities/execute-cursor/approval-policy.js +12 -23
- package/dist/activities/execute-cursor/approval-policy.js.map +1 -1
- package/dist/activities/execute-cursor/approval-state.d.ts +35 -1
- package/dist/activities/execute-cursor/approval-state.js +65 -0
- package/dist/activities/execute-cursor/approval-state.js.map +1 -1
- package/dist/activities/execute-cursor/{message-translator.d.ts → boundary-rows.d.ts} +45 -341
- package/dist/activities/execute-cursor/boundary-rows.js +1018 -0
- package/dist/activities/execute-cursor/boundary-rows.js.map +1 -0
- package/dist/activities/execute-cursor/cursor-capabilities.d.ts +1 -1
- package/dist/activities/execute-cursor/cursor-capabilities.js +1 -1
- package/dist/activities/execute-cursor/cursor-event-recorder.d.ts +33 -14
- package/dist/activities/execute-cursor/cursor-event-recorder.js +43 -21
- package/dist/activities/execute-cursor/cursor-event-recorder.js.map +1 -1
- package/dist/activities/execute-cursor/prompt-builder.d.ts +3 -3
- package/dist/activities/execute-cursor/prompt-builder.js +4 -4
- package/dist/activities/execute-cursor/prompt-builder.js.map +1 -1
- package/dist/activities/execute-cursor/service-tier.js +1 -2
- package/dist/activities/execute-cursor/service-tier.js.map +1 -1
- package/dist/activities/execute-cursor/sub-agent-steps.d.ts +79 -0
- package/dist/activities/execute-cursor/sub-agent-steps.js +180 -0
- package/dist/activities/execute-cursor/sub-agent-steps.js.map +1 -0
- package/dist/activities/execute-cursor/tool-result.d.ts +49 -0
- package/dist/activities/execute-cursor/tool-result.js +130 -0
- package/dist/activities/execute-cursor/tool-result.js.map +1 -0
- package/dist/activities/execute-cursor/translator.d.ts +178 -0
- package/dist/activities/execute-cursor/translator.js +485 -0
- package/dist/activities/execute-cursor/translator.js.map +1 -0
- package/dist/activities/execute-cursor/turn-boundary.d.ts +15 -5
- package/dist/activities/execute-cursor/turn-boundary.js +10 -14
- package/dist/activities/execute-cursor/turn-boundary.js.map +1 -1
- package/dist/activities/execute-cursor/turn-settle.d.ts +11 -7
- package/dist/activities/execute-cursor/turn-settle.js +47 -34
- package/dist/activities/execute-cursor/turn-settle.js.map +1 -1
- package/dist/activities/execute-cursor/turn-setup.d.ts +2 -2
- package/dist/activities/execute-cursor/turn-setup.js +5 -5
- package/dist/activities/execute-cursor/turn-setup.js.map +1 -1
- package/dist/activities/execute-cursor/turn-stream.d.ts +23 -14
- package/dist/activities/execute-cursor/turn-stream.js +41 -28
- package/dist/activities/execute-cursor/turn-stream.js.map +1 -1
- package/dist/activities/execute-cursor/turn.d.ts +4 -4
- package/dist/activities/execute-cursor/turn.js +5 -5
- package/dist/activities/execute-cursor/usage-pricing.d.ts +2 -2
- package/dist/activities/execute-cursor/usage-pricing.js +2 -2
- package/dist/activities/execute-deep-agent/__test-utils__/contract-subject.d.ts +2 -2
- package/dist/activities/execute-deep-agent/__test-utils__/contract-subject.js +2 -2
- package/dist/activities/execute-deep-agent/__test-utils__/hermetic-deep-agent.d.ts +16 -11
- package/dist/activities/execute-deep-agent/__test-utils__/hermetic-deep-agent.js +22 -10
- package/dist/activities/execute-deep-agent/__test-utils__/hermetic-deep-agent.js.map +1 -1
- package/dist/activities/execute-deep-agent/__test-utils__/hitl-script.js +1 -1
- package/dist/activities/execute-deep-agent/__test-utils__/hitl-script.js.map +1 -1
- package/dist/activities/execute-deep-agent/__test-utils__/scripted-model-module.d.ts +2 -3
- package/dist/activities/execute-deep-agent/__test-utils__/scripted-model-module.js +2 -3
- package/dist/activities/execute-deep-agent/__test-utils__/scripted-model-module.js.map +1 -1
- package/dist/activities/execute-deep-agent/__test-utils__/scripted-model.d.ts +12 -3
- package/dist/activities/execute-deep-agent/__test-utils__/scripted-model.js +18 -4
- package/dist/activities/execute-deep-agent/__test-utils__/scripted-model.js.map +1 -1
- package/dist/activities/execute-deep-agent/__test-utils__/v3-event-fixtures.d.ts +10 -1
- package/dist/activities/execute-deep-agent/__test-utils__/v3-event-fixtures.js +24 -11
- package/dist/activities/execute-deep-agent/__test-utils__/v3-event-fixtures.js.map +1 -1
- package/dist/activities/execute-deep-agent/adapter.d.ts +1 -1
- package/dist/activities/execute-deep-agent/adapter.js +1 -1
- package/dist/activities/execute-deep-agent/approval-file-change.d.ts +19 -19
- package/dist/activities/execute-deep-agent/approval-file-change.js +16 -15
- package/dist/activities/execute-deep-agent/approval-file-change.js.map +1 -1
- package/dist/activities/execute-deep-agent/deep-agent-capabilities.d.ts +2 -2
- package/dist/activities/execute-deep-agent/deep-agent-capabilities.js +2 -2
- package/dist/activities/execute-deep-agent/hitl.d.ts +2 -2
- package/dist/activities/execute-deep-agent/hitl.js +2 -2
- package/dist/activities/execute-deep-agent/inline-publisher.d.ts +13 -3
- package/dist/activities/execute-deep-agent/inline-publisher.js +3 -3
- package/dist/activities/execute-deep-agent/inline-publisher.js.map +1 -1
- package/dist/activities/execute-deep-agent/prompt-builder.d.ts +3 -3
- package/dist/activities/execute-deep-agent/prompt-builder.js +6 -7
- package/dist/activities/execute-deep-agent/prompt-builder.js.map +1 -1
- package/dist/activities/execute-deep-agent/streaming-side-effects.d.ts +16 -8
- package/dist/activities/execute-deep-agent/streaming-side-effects.js +20 -33
- package/dist/activities/execute-deep-agent/streaming-side-effects.js.map +1 -1
- package/dist/activities/execute-deep-agent/subagent-transformer.d.ts +3 -3
- package/dist/activities/execute-deep-agent/subagent-transformer.js +1 -1
- package/dist/activities/execute-deep-agent/translator.d.ts +134 -0
- package/dist/activities/execute-deep-agent/translator.js +418 -0
- package/dist/activities/execute-deep-agent/translator.js.map +1 -0
- package/dist/activities/execute-deep-agent/turn-settle.d.ts +13 -7
- package/dist/activities/execute-deep-agent/turn-settle.js +34 -45
- package/dist/activities/execute-deep-agent/turn-settle.js.map +1 -1
- package/dist/activities/execute-deep-agent/turn-setup.d.ts +8 -8
- package/dist/activities/execute-deep-agent/turn-setup.js +7 -7
- package/dist/activities/execute-deep-agent/turn-stream.d.ts +13 -10
- package/dist/activities/execute-deep-agent/turn-stream.js +44 -41
- package/dist/activities/execute-deep-agent/turn-stream.js.map +1 -1
- package/dist/activities/execute-deep-agent/turn.d.ts +3 -3
- package/dist/activities/execute-deep-agent/turn.js +3 -3
- package/dist/config.d.ts +2 -2
- package/dist/harness/approval-decisions.d.ts +1 -1
- package/dist/harness/approval-decisions.js +1 -1
- package/dist/harness/capabilities.d.ts +21 -11
- package/dist/harness/capabilities.js +2 -2
- package/dist/harness/capture.d.ts +4 -4
- package/dist/harness/capture.js +4 -4
- package/dist/harness/persist-chokepoint.d.ts +3 -3
- package/dist/harness/persist-chokepoint.js +3 -3
- package/dist/harness/registry.d.ts +2 -2
- package/dist/harness/registry.js +2 -2
- package/dist/harness/run-turn.d.ts +6 -4
- package/dist/harness/run-turn.js +31 -9
- package/dist/harness/run-turn.js.map +1 -1
- package/dist/harness/stop-controller.d.ts +1 -1
- package/dist/harness/stop-controller.js +1 -1
- package/dist/harness/terminal-table.d.ts +7 -7
- package/dist/harness/terminal-table.js +7 -7
- package/dist/harness/transcript/builder.d.ts +182 -0
- package/dist/harness/transcript/builder.js +693 -0
- package/dist/harness/transcript/builder.js.map +1 -0
- package/dist/harness/transcript/events.d.ts +218 -0
- package/dist/harness/transcript/events.js +50 -0
- package/dist/harness/transcript/events.js.map +1 -0
- package/dist/harness/transcript/state.d.ts +110 -0
- package/dist/harness/transcript/state.js +148 -0
- package/dist/harness/transcript/state.js.map +1 -0
- package/dist/harness/turn-context.d.ts +54 -38
- package/dist/harness/turn-context.js +42 -43
- package/dist/harness/turn-context.js.map +1 -1
- package/dist/harness/types.d.ts +63 -22
- package/dist/harness/types.js +12 -11
- package/dist/harness/types.js.map +1 -1
- package/dist/harness/usage-accumulator.d.ts +2 -2
- package/dist/harness/usage-accumulator.js +2 -2
- package/dist/harness-adapters.d.ts +5 -4
- package/dist/harness-adapters.js +5 -4
- package/dist/harness-adapters.js.map +1 -1
- package/dist/middleware/approval-gate.d.ts +6 -0
- package/dist/middleware/approval-gate.js +7 -57
- package/dist/middleware/approval-gate.js.map +1 -1
- package/dist/middleware/cost-advisory.d.ts +3 -3
- package/dist/middleware/cost-advisory.js +3 -3
- package/dist/middleware/index.d.ts +1 -1
- package/dist/middleware/index.js +1 -1
- package/dist/runner-manager.js +1 -1
- package/dist/runner-manager.js.map +1 -1
- package/dist/shared/approval-policy.d.ts +53 -0
- package/dist/shared/approval-policy.js +76 -0
- package/dist/shared/approval-policy.js.map +1 -1
- package/dist/shared/args-preview.d.ts +45 -22
- package/dist/shared/args-preview.js +51 -41
- package/dist/shared/args-preview.js.map +1 -1
- package/dist/shared/attachment-resolver.d.ts +4 -4
- package/dist/shared/attachment-resolver.js +4 -4
- package/dist/shared/attachment-zip.d.ts +2 -2
- package/dist/shared/attachment-zip.js +2 -2
- package/dist/shared/cost-guard.d.ts +2 -2
- package/dist/shared/cost-guard.js +2 -2
- package/dist/shared/exact-apply.d.ts +1 -1
- package/dist/shared/exact-apply.js +1 -1
- package/dist/shared/execution-context.d.ts +2 -2
- package/dist/shared/execution-context.js +2 -2
- package/dist/shared/extract-structured-output.d.ts +2 -2
- package/dist/shared/extract-structured-output.js +2 -2
- package/dist/shared/filereview/cas-touched.d.ts +2 -2
- package/dist/shared/filereview/cas-touched.js +2 -2
- package/dist/shared/heartbeat.d.ts +1 -1
- package/dist/shared/heartbeat.js +1 -1
- package/dist/shared/llm-backend.d.ts +0 -4
- package/dist/shared/llm-backend.js +0 -4
- package/dist/shared/llm-backend.js.map +1 -1
- package/dist/shared/model-error.d.ts +1 -2
- package/dist/shared/model-error.js +1 -2
- package/dist/shared/model-error.js.map +1 -1
- package/dist/shared/persist-decision.d.ts +18 -24
- package/dist/shared/persist-decision.js +19 -11
- package/dist/shared/persist-decision.js.map +1 -1
- package/dist/shared/prompt-sections.d.ts +4 -4
- package/dist/shared/prompt-sections.js +4 -4
- package/dist/shared/skill-resolver.d.ts +3 -3
- package/dist/shared/skill-resolver.js +3 -3
- package/dist/shared/status-offload.d.ts +1 -1
- package/dist/shared/status-offload.js +2 -2
- package/dist/shared/status-offload.js.map +1 -1
- package/dist/shared/streaming-scheduler.d.ts +2 -7
- package/dist/shared/streaming-scheduler.js +6 -14
- package/dist/shared/streaming-scheduler.js.map +1 -1
- package/dist/shared/subagent-rows.d.ts +2 -2
- package/dist/shared/subagent-rows.js +2 -2
- package/dist/shared/todos.d.ts +3 -3
- package/dist/shared/todos.js +3 -3
- package/dist/shared/tool-row.d.ts +19 -1
- package/dist/shared/tool-row.js +36 -2
- package/dist/shared/tool-row.js.map +1 -1
- package/dist/shared/worker-shutdown.d.ts +1 -1
- package/dist/shared/worker-shutdown.js +1 -1
- package/dist/shared/workspace/session-provision.d.ts +1 -1
- package/dist/shared/workspace/session-provision.js +1 -1
- package/dist/shared/workspace/sources/empty.d.ts +1 -1
- package/dist/shared/workspace/sources/empty.js +1 -2
- package/dist/shared/workspace/sources/empty.js.map +1 -1
- package/dist/shared/workspace/sources/git.js +4 -4
- package/dist/shared/workspace/sources/git.js.map +1 -1
- package/dist/shared/workspace/sources/local-path.js +6 -6
- package/dist/shared/workspace/sources/local-path.js.map +1 -1
- package/dist/shared/workspace/stigmer-link.d.ts +1 -1
- package/dist/shared/workspace/stigmer-link.js +1 -1
- package/dist/shared/workspace/types.d.ts +2 -5
- package/dist/shared/workspace/types.js +0 -6
- package/dist/shared/workspace/types.js.map +1 -1
- package/dist/shared/workspace/writeback-coordinator.d.ts +17 -4
- package/dist/shared/workspace/writeback-coordinator.js +7 -9
- package/dist/shared/workspace/writeback-coordinator.js.map +1 -1
- package/package.json +4 -4
- package/src/__test-utils__/__tests__/execution-record-barrier.test.ts +70 -0
- package/src/__test-utils__/__tests__/harness-contract-self-check.test.ts +35 -1
- package/src/__test-utils__/approval-contract/contract.ts +1 -1
- package/src/__test-utils__/approval-contract/types.ts +1 -1
- package/src/__test-utils__/harness-boot-order-child.ts +1 -1
- package/src/__test-utils__/harness-contract/contract.ts +8 -8
- package/src/__test-utils__/harness-contract/recording-sink.ts +11 -1
- package/src/__test-utils__/harness-contract/runtime-contract.ts +52 -16
- package/src/__test-utils__/harness-contract/scripted-adapter.ts +47 -43
- package/src/__test-utils__/hermetic-activity.ts +113 -9
- package/src/__test-utils__/model-registry-fixture.ts +31 -7
- package/src/__test-utils__/module-specifiers.ts +32 -3
- package/src/__tests__/harness-boot-order.test.ts +1 -1
- package/src/__tests__/harness-contract.test.ts +1 -1
- package/src/__tests__/runner-manager.test.ts +1 -1
- package/src/activities/execute-cursor/__test-utils__/__tests__/scripted-double.test.ts +1 -1
- package/src/activities/execute-cursor/__test-utils__/contract-subject.ts +2 -2
- package/src/activities/execute-cursor/__test-utils__/fold.ts +116 -0
- package/src/activities/execute-cursor/__test-utils__/gateway-substrate.ts +1 -1
- package/src/activities/execute-cursor/__test-utils__/hermetic-cursor.ts +67 -17
- package/src/activities/execute-cursor/__test-utils__/scripted-agent.ts +19 -5
- package/src/activities/execute-cursor/__tests__/approval-gate.test.ts +2 -1
- package/src/activities/execute-cursor/__tests__/approval-state.test.ts +14 -21
- package/src/activities/execute-cursor/__tests__/build-prompt.test.ts +3 -3
- package/src/activities/execute-cursor/__tests__/coarse-fingerprint.test.ts +2 -1
- package/src/activities/execute-cursor/__tests__/cursor-event-recorder.test.ts +142 -0
- package/src/activities/execute-cursor/__tests__/cursor-fetch-interceptor-bypass.test.ts +19 -8
- package/src/activities/execute-cursor/__tests__/cursor-sdk-auth-smoke.test.ts +10 -8
- package/src/activities/execute-cursor/__tests__/cursor-transcript-live.test.ts +298 -0
- package/src/activities/execute-cursor/__tests__/deny-gate-exact-apply.test.ts +4 -2
- package/src/activities/execute-cursor/__tests__/fetch-interceptor.test.ts +1 -1
- package/src/activities/execute-cursor/__tests__/hermetic/deny-and-retry.test.ts +1 -1
- package/src/activities/execute-cursor/__tests__/hermetic/file-review-capture.test.ts +1 -1
- package/src/activities/execute-cursor/__tests__/hermetic/goldens/mcp-tool-call.status.json +71 -0
- package/src/activities/execute-cursor/__tests__/hermetic/goldens/sdk-task-note.status.json +73 -0
- package/src/activities/execute-cursor/__tests__/hermetic/goldens/shell-output-delta.error-delta.status.json +78 -0
- package/src/activities/execute-cursor/__tests__/hermetic/goldens/shell-output-delta.output-first.status.json +72 -0
- package/src/activities/execute-cursor/__tests__/hermetic/goldens/shell-output-delta.status.json +72 -0
- package/src/activities/execute-cursor/__tests__/hermetic/goldens/sub-agent-delegation.status.json +109 -0
- package/src/activities/execute-cursor/__tests__/hermetic/goldens/thinking-turn.status.json +78 -0
- package/src/activities/execute-cursor/__tests__/hermetic/goldens/todo-write.status.json +119 -0
- package/src/activities/execute-cursor/__tests__/hermetic/goldens/tool-error.status.json +68 -0
- package/src/activities/execute-cursor/__tests__/hermetic/goldens/tool-only-step.status.json +67 -0
- package/src/activities/execute-cursor/__tests__/hermetic/goldens/unattributed-hook-block.status.json +1 -1
- package/src/activities/execute-cursor/__tests__/hermetic/harness-contract.test.ts +7 -7
- package/src/activities/execute-cursor/__tests__/hermetic/mcp-tool-call.test.ts +146 -0
- package/src/activities/execute-cursor/__tests__/hermetic/pause-vs-shutdown.test.ts +5 -5
- package/src/activities/execute-cursor/__tests__/hermetic/plain-turn.test.ts +2 -1
- package/src/activities/execute-cursor/__tests__/hermetic/run-wait-arms.test.ts +2 -1
- package/src/activities/execute-cursor/__tests__/hermetic/sdk-task-note.test.ts +122 -0
- package/src/activities/execute-cursor/__tests__/hermetic/shell-output-delta.test.ts +276 -0
- package/src/activities/execute-cursor/__tests__/hermetic/stream-self-stop-arms.test.ts +8 -8
- package/src/activities/execute-cursor/__tests__/hermetic/sub-agent-delegation.test.ts +196 -0
- package/src/activities/execute-cursor/__tests__/hermetic/thinking-turn.test.ts +145 -0
- package/src/activities/execute-cursor/__tests__/hermetic/thrown-error-arms.test.ts +1 -1
- package/src/activities/execute-cursor/__tests__/hermetic/todo-write.test.ts +165 -0
- package/src/activities/execute-cursor/__tests__/hermetic/tool-call.test.ts +3 -3
- package/src/activities/execute-cursor/__tests__/hermetic/tool-error.test.ts +138 -0
- package/src/activities/execute-cursor/__tests__/hermetic/tool-only-step.test.ts +130 -0
- package/src/activities/execute-cursor/__tests__/hermetic/unattributed-hook-block.test.ts +13 -1
- package/src/activities/execute-cursor/__tests__/hermetic/workspace-lock-timeout.test.ts +2 -2
- package/src/activities/execute-cursor/__tests__/hitl-ledger.test.ts +43 -60
- package/src/activities/execute-cursor/__tests__/hitl-resume-history.test.ts +23 -28
- package/src/activities/execute-cursor/__tests__/hook-script.test.ts +2 -1
- package/src/activities/execute-cursor/__tests__/http2-interceptor.test.ts +1 -1
- package/src/activities/execute-cursor/__tests__/prompt-goldens.test.ts +5 -5
- package/src/activities/execute-cursor/__tests__/same-identity-reproposal.test.ts +11 -13
- package/src/activities/execute-cursor/__tests__/sequential-gate-resume.test.ts +8 -11
- package/src/activities/execute-cursor/__tests__/tool-result-image.test.ts +8 -22
- package/src/activities/execute-cursor/__tests__/translator.test.ts +594 -0
- package/src/activities/execute-cursor/__tests__/turn-boundary.test.ts +8 -5
- package/src/activities/execute-cursor/__tests__/turn-stream.test.ts +87 -63
- package/src/activities/execute-cursor/adapter.ts +4 -4
- package/src/activities/execute-cursor/approval-policy.ts +12 -24
- package/src/activities/execute-cursor/approval-state.ts +66 -1
- package/src/activities/execute-cursor/boundary-rows.ts +1132 -0
- package/src/activities/execute-cursor/cursor-capabilities.ts +1 -1
- package/src/activities/execute-cursor/cursor-event-recorder.ts +57 -28
- package/src/activities/execute-cursor/fetch-interceptor.ts +1 -1
- package/src/activities/execute-cursor/http2-interceptor.ts +1 -1
- package/src/activities/execute-cursor/prompt-builder.ts +6 -6
- package/src/activities/execute-cursor/service-tier.ts +1 -2
- package/src/activities/execute-cursor/sub-agent-steps.ts +188 -0
- package/src/activities/execute-cursor/tool-result.ts +128 -0
- package/src/activities/execute-cursor/translator.ts +541 -0
- package/src/activities/execute-cursor/turn-boundary.ts +21 -14
- package/src/activities/execute-cursor/turn-settle.ts +46 -34
- package/src/activities/execute-cursor/turn-setup.ts +5 -5
- package/src/activities/execute-cursor/turn-stream.ts +49 -46
- package/src/activities/execute-cursor/turn.ts +5 -5
- package/src/activities/execute-cursor/usage-pricing.ts +2 -2
- package/src/activities/execute-deep-agent/__test-utils__/contract-subject.ts +2 -2
- package/src/activities/execute-deep-agent/__test-utils__/hermetic-deep-agent.ts +23 -11
- package/src/activities/execute-deep-agent/__test-utils__/hitl-script.ts +1 -1
- package/src/activities/execute-deep-agent/__test-utils__/scripted-model-module.ts +2 -3
- package/src/activities/execute-deep-agent/__test-utils__/scripted-model.ts +25 -4
- package/src/activities/execute-deep-agent/__test-utils__/v3-event-fixtures.ts +25 -11
- package/src/activities/execute-deep-agent/__tests__/adapter-graph-is-sdk-free.test.ts +1 -1
- package/src/activities/execute-deep-agent/__tests__/adapter-is-temporal-free.test.ts +1 -1
- package/src/activities/execute-deep-agent/__tests__/approval-file-change.test.ts +6 -17
- package/src/activities/execute-deep-agent/__tests__/hermetic/file-review-capture.test.ts +25 -8
- package/src/activities/execute-deep-agent/__tests__/hermetic/goldens/approve-all-lease.turn1.status.json +2 -7
- package/src/activities/execute-deep-agent/__tests__/hermetic/goldens/approve-all-lease.turn2.status.json +4 -14
- package/src/activities/execute-deep-agent/__tests__/hermetic/goldens/approve.turn2.status.json +1 -5
- package/src/activities/execute-deep-agent/__tests__/hermetic/goldens/file-review-capture.status.json +4 -7
- package/src/activities/execute-deep-agent/__tests__/hermetic/goldens/gate.turn1.status.json +1 -5
- package/src/activities/execute-deep-agent/__tests__/hermetic/goldens/inline-artifact.turn1.status.json +2 -9
- package/src/activities/execute-deep-agent/__tests__/hermetic/goldens/inline-artifact.turn2.status.json +2 -9
- package/src/activities/execute-deep-agent/__tests__/hermetic/goldens/pause.loop.after-tool.status.json +1 -4
- package/src/activities/execute-deep-agent/__tests__/hermetic/goldens/pause.loop.mid-tool.status.json +1 -4
- package/src/activities/execute-deep-agent/__tests__/hermetic/goldens/platform-stop.status.json +1 -4
- package/src/activities/execute-deep-agent/__tests__/hermetic/goldens/recursion-limit.persisted.status.json +109 -76
- package/src/activities/execute-deep-agent/__tests__/hermetic/goldens/reject.turn2.status.json +1 -5
- package/src/activities/execute-deep-agent/__tests__/hermetic/goldens/sequential-gates.turn2.status.json +2 -10
- package/src/activities/execute-deep-agent/__tests__/hermetic/goldens/sequential-gates.turn3.status.json +2 -10
- package/src/activities/execute-deep-agent/__tests__/hermetic/goldens/skip.turn2.status.json +1 -5
- package/src/activities/execute-deep-agent/__tests__/hermetic/goldens/sub-agent-delegation.status.json +3 -6
- package/src/activities/execute-deep-agent/__tests__/hermetic/goldens/tool-call.status.json +1 -4
- package/src/activities/execute-deep-agent/__tests__/hermetic/goldens/worker-shutdown.status.json +1 -4
- package/src/activities/execute-deep-agent/__tests__/hermetic/goldens/write-todos.status.json +92 -0
- package/src/activities/execute-deep-agent/__tests__/hermetic/harness-contract.test.ts +3 -3
- package/src/activities/execute-deep-agent/__tests__/hermetic/hitl-approve-all-lease.test.ts +9 -5
- package/src/activities/execute-deep-agent/__tests__/hermetic/hitl-round-trips.test.ts +3 -3
- package/src/activities/execute-deep-agent/__tests__/hermetic/hitl-sequential-gates.test.ts +3 -3
- package/src/activities/execute-deep-agent/__tests__/hermetic/inline-artifact-across-gate.test.ts +7 -6
- package/src/activities/execute-deep-agent/__tests__/hermetic/pause-vs-shutdown.test.ts +10 -11
- package/src/activities/execute-deep-agent/__tests__/hermetic/plain-turn.test.ts +4 -4
- package/src/activities/execute-deep-agent/__tests__/hermetic/platform-stop.test.ts +9 -8
- package/src/activities/execute-deep-agent/__tests__/hermetic/recursion-limit.test.ts +21 -13
- package/src/activities/execute-deep-agent/__tests__/hermetic/resolution-error.test.ts +2 -2
- package/src/activities/execute-deep-agent/__tests__/hermetic/structured-output.test.ts +7 -7
- package/src/activities/execute-deep-agent/__tests__/hermetic/sub-agent-delegation.test.ts +28 -12
- package/src/activities/execute-deep-agent/__tests__/hermetic/tool-call.test.ts +21 -21
- package/src/activities/execute-deep-agent/__tests__/hermetic/workspace-lock-timeout.test.ts +5 -5
- package/src/activities/execute-deep-agent/__tests__/hermetic/write-todos.test.ts +160 -0
- package/src/activities/execute-deep-agent/__tests__/inline-publisher.test.ts +35 -30
- package/src/activities/execute-deep-agent/__tests__/prompt-builder.test.ts +3 -4
- package/src/activities/execute-deep-agent/__tests__/prompt-goldens.test.ts +12 -10
- package/src/activities/execute-deep-agent/__tests__/scripted-model.test.ts +13 -3
- package/src/activities/execute-deep-agent/__tests__/streaming-side-effects.test.ts +26 -18
- package/src/activities/execute-deep-agent/__tests__/subagent-wiring.test.ts +1 -1
- package/src/activities/execute-deep-agent/__tests__/{subagent-tracker.test.ts → translator-subagents.test.ts} +76 -57
- package/src/activities/execute-deep-agent/__tests__/{v3-status-builder.test.ts → translator-through-builder.test.ts} +213 -299
- package/src/activities/execute-deep-agent/__tests__/translator.test.ts +505 -0
- package/src/activities/execute-deep-agent/__tests__/turn-stream.test.ts +11 -29
- package/src/activities/execute-deep-agent/adapter.ts +1 -1
- package/src/activities/execute-deep-agent/approval-file-change.ts +20 -22
- package/src/activities/execute-deep-agent/deep-agent-capabilities.ts +2 -2
- package/src/activities/execute-deep-agent/hitl.ts +2 -2
- package/src/activities/execute-deep-agent/inline-publisher.ts +16 -5
- package/src/activities/execute-deep-agent/prompt-builder.ts +6 -7
- package/src/activities/execute-deep-agent/streaming-side-effects.ts +22 -31
- package/src/activities/execute-deep-agent/subagent-transformer.ts +3 -3
- package/src/activities/execute-deep-agent/translator.ts +463 -0
- package/src/activities/execute-deep-agent/turn-settle.ts +35 -43
- package/src/activities/execute-deep-agent/turn-setup.ts +8 -8
- package/src/activities/execute-deep-agent/turn-stream.ts +53 -51
- package/src/activities/execute-deep-agent/turn.ts +3 -3
- package/src/config.ts +2 -2
- package/src/harness/README.md +335 -0
- package/src/harness/__tests__/approval-decisions.test.ts +2 -2
- package/src/harness/__tests__/capture.test.ts +3 -3
- package/src/harness/__tests__/import-direction.test.ts +3 -2
- package/src/harness/__tests__/mount-skills.test.ts +4 -1
- package/src/harness/__tests__/readme-index.test.ts +339 -0
- package/src/harness/__tests__/run-turn.test.ts +131 -6
- package/src/harness/__tests__/transcript-is-engine-free.test.ts +83 -0
- package/src/harness/__tests__/transcript-writers.test.ts +191 -0
- package/src/harness/__tests__/turn-attachments-vision.test.ts +5 -2
- package/src/harness/__tests__/turn-context.test.ts +5 -5
- package/src/harness/approval-decisions.ts +1 -1
- package/src/harness/capabilities.ts +21 -11
- package/src/harness/capture.ts +4 -4
- package/src/harness/persist-chokepoint.ts +3 -3
- package/src/harness/registry.ts +2 -2
- package/src/harness/run-turn.ts +33 -9
- package/src/harness/stop-controller.ts +1 -1
- package/src/harness/terminal-table.ts +7 -7
- package/src/harness/transcript/__tests__/builder.test.ts +975 -0
- package/src/harness/transcript/__tests__/state.test.ts +143 -0
- package/src/harness/transcript/builder.ts +755 -0
- package/src/harness/transcript/events.ts +262 -0
- package/src/harness/transcript/state.ts +167 -0
- package/src/harness/turn-context.ts +61 -46
- package/src/harness/types.ts +64 -22
- package/src/harness/usage-accumulator.ts +2 -2
- package/src/harness-adapters.ts +5 -4
- package/src/middleware/__tests__/cost-advisory.test.ts +2 -2
- package/src/middleware/approval-gate.ts +7 -74
- package/src/middleware/cost-advisory.ts +3 -3
- package/src/middleware/index.ts +1 -1
- package/src/runner-manager.ts +1 -1
- package/src/shared/__tests__/approval-policy.test.ts +45 -0
- package/src/shared/__tests__/args-preview.test.ts +40 -20
- package/src/shared/__tests__/attachment-naming.test.ts +1 -1
- package/src/shared/__tests__/attachment-resolver.test.ts +5 -5
- package/src/shared/__tests__/attachment-zip.test.ts +1 -1
- package/src/shared/__tests__/blueprint-resolver.test.ts +1 -1
- package/src/shared/__tests__/cost-guard.test.ts +1 -1
- package/src/shared/__tests__/exact-apply.test.ts +2 -1
- package/src/shared/__tests__/persist-decision.test.ts +19 -33
- package/src/shared/__tests__/prompt-sections.test.ts +1 -1
- package/src/shared/__tests__/stamp-flowed-rows.test.ts +1 -1
- package/src/shared/__tests__/status-offload.test.ts +1 -1
- package/src/shared/__tests__/streaming-scheduler.test.ts +8 -9
- package/src/shared/__tests__/todos.test.ts +1 -1
- package/src/shared/__tests__/tool-row.test.ts +1 -1
- package/src/shared/approval-policy.ts +95 -0
- package/src/shared/args-preview.ts +51 -42
- package/src/shared/attachment-resolver.ts +4 -4
- package/src/shared/attachment-zip.ts +2 -2
- package/src/shared/cost-guard.ts +2 -2
- package/src/shared/exact-apply.ts +1 -1
- package/src/shared/execution-context.ts +2 -2
- package/src/shared/extract-structured-output.ts +2 -2
- package/src/shared/filereview/__tests__/capture.test.ts +9 -5
- package/src/shared/filereview/__tests__/git-substrate.test.ts +4 -1
- package/src/shared/filereview/__tests__/proxy-reconcile.test.ts +3 -3
- package/src/shared/filereview/cas-touched.ts +2 -2
- package/src/shared/heartbeat.ts +1 -1
- package/src/shared/llm-backend.ts +0 -4
- package/src/shared/model-error.ts +1 -2
- package/src/shared/persist-decision.ts +19 -28
- package/src/shared/prompt-sections.ts +4 -4
- package/src/shared/skill-resolver.ts +3 -3
- package/src/shared/status-offload.ts +2 -2
- package/src/shared/streaming-scheduler.ts +8 -13
- package/src/shared/subagent-rows.ts +2 -2
- package/src/shared/todos.ts +3 -3
- package/src/shared/tool-row.ts +38 -2
- package/src/shared/worker-shutdown.ts +1 -1
- package/src/shared/workspace/__tests__/git-source.test.ts +3 -3
- package/src/shared/workspace/__tests__/provisioner.test.ts +5 -5
- package/src/shared/workspace/__tests__/session-provision.test.ts +2 -2
- package/src/shared/workspace/__tests__/writeback-coordinator.integration.test.ts +8 -9
- package/src/shared/workspace/__tests__/writeback-coordinator.test.ts +25 -25
- package/src/shared/workspace/provisioner.ts +1 -1
- package/src/shared/workspace/session-provision.ts +1 -1
- package/src/shared/workspace/sources/empty.ts +2 -2
- package/src/shared/workspace/sources/git.ts +3 -4
- package/src/shared/workspace/sources/local-path.ts +5 -6
- package/src/shared/workspace/stigmer-link.ts +1 -1
- package/src/shared/workspace/types.ts +2 -5
- package/src/shared/workspace/writeback-coordinator.ts +23 -12
- package/dist/activities/execute-cursor/delta-enricher.d.ts +0 -87
- package/dist/activities/execute-cursor/delta-enricher.js +0 -265
- package/dist/activities/execute-cursor/delta-enricher.js.map +0 -1
- package/dist/activities/execute-cursor/message-translator.js +0 -2040
- package/dist/activities/execute-cursor/message-translator.js.map +0 -1
- package/dist/activities/execute-cursor/todo-tracker.d.ts +0 -40
- package/dist/activities/execute-cursor/todo-tracker.js +0 -80
- package/dist/activities/execute-cursor/todo-tracker.js.map +0 -1
- package/dist/activities/execute-deep-agent/execution-state.d.ts +0 -54
- package/dist/activities/execute-deep-agent/execution-state.js +0 -68
- package/dist/activities/execute-deep-agent/execution-state.js.map +0 -1
- package/dist/activities/execute-deep-agent/status-builder-shared.d.ts +0 -65
- package/dist/activities/execute-deep-agent/status-builder-shared.js +0 -90
- package/dist/activities/execute-deep-agent/status-builder-shared.js.map +0 -1
- package/dist/activities/execute-deep-agent/subagent-tracker.d.ts +0 -113
- package/dist/activities/execute-deep-agent/subagent-tracker.js +0 -400
- package/dist/activities/execute-deep-agent/subagent-tracker.js.map +0 -1
- package/dist/activities/execute-deep-agent/v3-events.d.ts +0 -102
- package/dist/activities/execute-deep-agent/v3-events.js +0 -35
- package/dist/activities/execute-deep-agent/v3-events.js.map +0 -1
- package/dist/activities/execute-deep-agent/v3-protocol-normalizer.d.ts +0 -15
- package/dist/activities/execute-deep-agent/v3-protocol-normalizer.js +0 -235
- package/dist/activities/execute-deep-agent/v3-protocol-normalizer.js.map +0 -1
- package/dist/activities/execute-deep-agent/v3-status-builder.d.ts +0 -111
- package/dist/activities/execute-deep-agent/v3-status-builder.js +0 -457
- package/dist/activities/execute-deep-agent/v3-status-builder.js.map +0 -1
- package/dist/shared/execution-status-writer.d.ts +0 -31
- package/dist/shared/execution-status-writer.js +0 -43
- package/dist/shared/execution-status-writer.js.map +0 -1
- package/src/activities/execute-cursor/__tests__/delta-enricher.test.ts +0 -310
- package/src/activities/execute-cursor/__tests__/message-translator.test.ts +0 -1033
- package/src/activities/execute-cursor/__tests__/todo-tracker.test.ts +0 -498
- package/src/activities/execute-cursor/delta-enricher.ts +0 -307
- package/src/activities/execute-cursor/message-translator.ts +0 -2319
- package/src/activities/execute-cursor/todo-tracker.ts +0 -91
- package/src/activities/execute-deep-agent/__tests__/execution-state-extended.test.ts +0 -148
- package/src/activities/execute-deep-agent/__tests__/execution-state.test.ts +0 -154
- package/src/activities/execute-deep-agent/__tests__/status-builder-shared.test.ts +0 -47
- package/src/activities/execute-deep-agent/__tests__/v3-protocol-normalizer.test.ts +0 -324
- package/src/activities/execute-deep-agent/execution-state.ts +0 -78
- package/src/activities/execute-deep-agent/status-builder-shared.ts +0 -142
- package/src/activities/execute-deep-agent/subagent-tracker.ts +0 -479
- package/src/activities/execute-deep-agent/v3-events.ts +0 -153
- package/src/activities/execute-deep-agent/v3-protocol-normalizer.ts +0 -264
- package/src/activities/execute-deep-agent/v3-status-builder.ts +0 -565
- package/src/shared/execution-status-writer.ts +0 -56
|
@@ -1,12 +1,26 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* V3 protocol event factories for
|
|
2
|
+
* V3 protocol event factories for the translator's and the builder's arms.
|
|
3
3
|
*
|
|
4
4
|
* Shapes are derived from real recordings in /tmp/stigmer-v3-provider/
|
|
5
5
|
* captured during Phase 1 validation with Claude claude-sonnet-4-6.
|
|
6
|
+
*
|
|
7
|
+
* Namespaces default to LangGraph 1.3.2's REAL shape (since #1097): a model
|
|
8
|
+
* event arrives under `["model_request:<uuid>"]` and a tool
|
|
9
|
+
* event under `["tools:<uuid>"]` — one segment each, a fresh uuid per LLM
|
|
10
|
+
* call / tool run. Until then the model factories defaulted to `[]`, so the
|
|
11
|
+
* arms never saw the namespace miss the hermetic goldens showed (found in
|
|
12
|
+
* #1096: the root builder filed text under the raw namespace and
|
|
13
|
+
* looked a tool's parent up under `""`). A sub-agent's events pass their own
|
|
14
|
+
* `namespace` (`["tools:<taskUuid>", "model_request:<inner>"]`).
|
|
6
15
|
*/
|
|
7
16
|
|
|
8
17
|
import type { V3ProtocolEvent } from "../v3-event-recorder.js";
|
|
9
18
|
|
|
19
|
+
/** The namespace a root model event carries: the model node's segment, per LLM call. */
|
|
20
|
+
function modelNamespace(runId: string): string[] {
|
|
21
|
+
return [`model_request:${runId}`];
|
|
22
|
+
}
|
|
23
|
+
|
|
10
24
|
let seqCounter = 0;
|
|
11
25
|
export function resetSeq(): void { seqCounter = 0; }
|
|
12
26
|
function nextSeq(): number { return seqCounter++; }
|
|
@@ -61,7 +75,7 @@ export function makeMessageStart(
|
|
|
61
75
|
id: opts?.messageId ?? `msg_${runId}`,
|
|
62
76
|
usage: opts?.usage,
|
|
63
77
|
run_id: runId,
|
|
64
|
-
}, { namespace: opts?.namespace, node: opts?.node ?? "model_request" });
|
|
78
|
+
}, { namespace: opts?.namespace ?? modelNamespace(runId), node: opts?.node ?? "model_request" });
|
|
65
79
|
}
|
|
66
80
|
|
|
67
81
|
export function makeMessageFinish(
|
|
@@ -81,7 +95,7 @@ export function makeMessageFinish(
|
|
|
81
95
|
metadata: opts?.metadata,
|
|
82
96
|
responseMetadata: opts?.metadata,
|
|
83
97
|
run_id: runId,
|
|
84
|
-
}, { namespace: opts?.namespace, node: opts?.node ?? "model_request" });
|
|
98
|
+
}, { namespace: opts?.namespace ?? modelNamespace(runId), node: opts?.node ?? "model_request" });
|
|
85
99
|
}
|
|
86
100
|
|
|
87
101
|
// ── Messages: content-block-start/delta/finish ────────────────────
|
|
@@ -96,7 +110,7 @@ export function makeContentBlockStartText(
|
|
|
96
110
|
index,
|
|
97
111
|
content: { type: "text", text: "" },
|
|
98
112
|
run_id: runId,
|
|
99
|
-
}, { namespace: opts?.namespace, node: "model_request" });
|
|
113
|
+
}, { namespace: opts?.namespace ?? modelNamespace(runId), node: "model_request" });
|
|
100
114
|
}
|
|
101
115
|
|
|
102
116
|
export function makeTextDelta(
|
|
@@ -109,7 +123,7 @@ export function makeTextDelta(
|
|
|
109
123
|
index: opts?.index ?? 0,
|
|
110
124
|
delta: { type: "text-delta", text },
|
|
111
125
|
run_id: runId,
|
|
112
|
-
}, { namespace: opts?.namespace, node: "model_request" });
|
|
126
|
+
}, { namespace: opts?.namespace ?? modelNamespace(runId), node: "model_request" });
|
|
113
127
|
}
|
|
114
128
|
|
|
115
129
|
export function makeReasoningDelta(
|
|
@@ -122,7 +136,7 @@ export function makeReasoningDelta(
|
|
|
122
136
|
index: opts?.index ?? 0,
|
|
123
137
|
delta: { type: "reasoning-delta", reasoning: text },
|
|
124
138
|
run_id: runId,
|
|
125
|
-
}, { namespace: opts?.namespace, node: "model_request" });
|
|
139
|
+
}, { namespace: opts?.namespace ?? modelNamespace(runId), node: "model_request" });
|
|
126
140
|
}
|
|
127
141
|
|
|
128
142
|
export function makeToolCallArgDelta(
|
|
@@ -139,7 +153,7 @@ export function makeToolCallArgDelta(
|
|
|
139
153
|
fields: { type: "tool_call_chunk", id: callId, args },
|
|
140
154
|
},
|
|
141
155
|
run_id: runId,
|
|
142
|
-
}, { namespace: opts?.namespace, node: "model_request" });
|
|
156
|
+
}, { namespace: opts?.namespace ?? modelNamespace(runId), node: "model_request" });
|
|
143
157
|
}
|
|
144
158
|
|
|
145
159
|
export function makeContentBlockFinish(
|
|
@@ -152,7 +166,7 @@ export function makeContentBlockFinish(
|
|
|
152
166
|
index,
|
|
153
167
|
content: opts?.content ?? { type: "text", text: "" },
|
|
154
168
|
run_id: runId,
|
|
155
|
-
}, { namespace: opts?.namespace, node: "model_request" });
|
|
169
|
+
}, { namespace: opts?.namespace ?? modelNamespace(runId), node: "model_request" });
|
|
156
170
|
}
|
|
157
171
|
|
|
158
172
|
// ── Messages: usage / provider ────────────────────────────────────
|
|
@@ -166,7 +180,7 @@ export function makeUsageEvent(
|
|
|
166
180
|
event: "usage",
|
|
167
181
|
usage,
|
|
168
182
|
run_id: runId,
|
|
169
|
-
}, { namespace: opts?.namespace, node: "model_request" });
|
|
183
|
+
}, { namespace: opts?.namespace ?? modelNamespace(runId), node: "model_request" });
|
|
170
184
|
}
|
|
171
185
|
|
|
172
186
|
export function makeProviderEvent(
|
|
@@ -181,7 +195,7 @@ export function makeProviderEvent(
|
|
|
181
195
|
name: "message_start",
|
|
182
196
|
payload: { model, id: `msg_${runId}` },
|
|
183
197
|
run_id: runId,
|
|
184
|
-
}, { namespace: opts?.namespace, node: "model_request" });
|
|
198
|
+
}, { namespace: opts?.namespace ?? modelNamespace(runId), node: "model_request" });
|
|
185
199
|
}
|
|
186
200
|
|
|
187
201
|
// ── Tools ─────────────────────────────────────────────────────────
|
|
@@ -244,7 +258,7 @@ export function makeToolOutputDelta(
|
|
|
244
258
|
}, { namespace: opts?.namespace ?? [`tools:${callId}`] });
|
|
245
259
|
}
|
|
246
260
|
|
|
247
|
-
// ── Ignored channels (for
|
|
261
|
+
// ── Ignored channels (for translator completeness tests) ──────────
|
|
248
262
|
|
|
249
263
|
export function makeCheckpointEvent(): V3ProtocolEvent {
|
|
250
264
|
return makeProtocolEvent("checkpoints", {
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
* connect- and SDK-free (the Cursor adapter's boot patches `node:http2`
|
|
10
10
|
* before anything dials the control plane; `harness-adapters.ts` states the
|
|
11
11
|
* rule). An adapter that imported its SDK at the top of its module would
|
|
12
|
-
* defeat it: this adapter's row is the table's second (
|
|
12
|
+
* defeat it: this adapter's row is the table's second (#1096, 2026-09-13).
|
|
13
13
|
* This fence is THE proof that the engine is not on the static graph — it
|
|
14
14
|
* walks every relative module transitively and records every package the
|
|
15
15
|
* graph names; the boot ORDER (native's `boot` runs after the Cursor patch)
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
* (`execute-cursor/__tests__/adapter-is-temporal-free.test.ts`) is the
|
|
15
15
|
* precedent; this is its native twin.
|
|
16
16
|
*
|
|
17
|
-
* Until
|
|
17
|
+
* Until #1096 (2026-09-13) one module was tolerated here: `index.ts`, the
|
|
18
18
|
* orchestrator the adapter replaced, which imported `@temporalio/activity`
|
|
19
19
|
* while it still served production. It is deleted; the list is empty and
|
|
20
20
|
* stays empty.
|
|
@@ -52,20 +52,9 @@ describe("findAiMessageToolCallArgs", () => {
|
|
|
52
52
|
});
|
|
53
53
|
|
|
54
54
|
describe("captureApprovalArtifacts", () => {
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
{ id: "call-1", name: "write_file", args: { file_path: "a.txt", content: "hi", token: "sk-secret" } },
|
|
59
|
-
]),
|
|
60
|
-
];
|
|
61
|
-
const { argsPreview } = captureApprovalArtifacts({ toolCallId: "call-1", messages });
|
|
62
|
-
|
|
63
|
-
expect(argsPreview).toBeDefined();
|
|
64
|
-
expect(argsPreview).toContain("a.txt");
|
|
65
|
-
expect(argsPreview).toContain("[REDACTED]");
|
|
66
|
-
expect(argsPreview).not.toContain("sk-secret");
|
|
67
|
-
});
|
|
68
|
-
|
|
55
|
+
// The row's `args_preview` is the builder's to render from these args since
|
|
56
|
+
// #1097 (`harness/transcript/__tests__/builder.test.ts`); this module
|
|
57
|
+
// contributes the redacted args and nothing else.
|
|
69
58
|
it("returns nothing when the interrupt cannot be correlated", () => {
|
|
70
59
|
const result = captureApprovalArtifacts({
|
|
71
60
|
toolCallId: "missing",
|
|
@@ -74,12 +63,12 @@ describe("captureApprovalArtifacts", () => {
|
|
|
74
63
|
expect(result).toEqual({});
|
|
75
64
|
});
|
|
76
65
|
|
|
77
|
-
it("returns
|
|
66
|
+
it("returns the args of a correlated non-file tool too", () => {
|
|
78
67
|
const messages = [
|
|
79
68
|
aiMessage([{ id: "call-1", name: "search", args: { query: "needle" } }]),
|
|
80
69
|
];
|
|
81
|
-
const {
|
|
82
|
-
expect(
|
|
70
|
+
const { args } = captureApprovalArtifacts({ toolCallId: "call-1", messages });
|
|
71
|
+
expect(args).toEqual({ query: "needle" });
|
|
83
72
|
});
|
|
84
73
|
|
|
85
74
|
it("returns the redacted args object for stamping the placeholder row (issue #754)", () => {
|
|
@@ -11,11 +11,11 @@
|
|
|
11
11
|
* file, stamps the flowed edit row with the change-set id
|
|
12
12
|
* (`stampFlowedFileEditRows`), and the activity persists
|
|
13
13
|
* WAITING_FOR_APPROVAL and RETURNS. The change-set id is the deterministic
|
|
14
|
-
* `executionId:turnSeq`. The ledger shape is what
|
|
14
|
+
* `executionId:turnSeq`. The ledger shape is what the runtime's capture must
|
|
15
15
|
* reproduce, beside Cursor's `file-review-capture.status.json`.
|
|
16
16
|
*
|
|
17
|
-
* Why this arm has a golden file since
|
|
18
|
-
*
|
|
17
|
+
* Why this arm has a golden file since #1096: the orchestrator created the
|
|
18
|
+
* workspace's `.stigmer` symlink
|
|
19
19
|
* unconditionally BEFORE the baseline snapshot, and the link's TARGET is the
|
|
20
20
|
* platform dir under `HOME`, so the baseline and candidate tree OIDs the
|
|
21
21
|
* ledger carries were per-host — and per-run here, where `HOME` is a temp
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
* needs it (the same rule that makes Cursor's golden byte-stable); this
|
|
24
24
|
* scenario mounts neither, so no link enters either tree and both OIDs are
|
|
25
25
|
* content-derived. Every content-derived byte is still asserted in code
|
|
26
|
-
* (the
|
|
26
|
+
* (the lock-timeout arm's rule, #1070, is the shape for
|
|
27
27
|
* a status the host could reach), and `goldens/file-review-capture.status.json`
|
|
28
28
|
* pins the whole ledger beside Cursor's.
|
|
29
29
|
*
|
|
@@ -33,16 +33,33 @@
|
|
|
33
33
|
* pin; the turn boundary's candidate capture and row stamping; the pause for
|
|
34
34
|
* review with file cards.
|
|
35
35
|
*
|
|
36
|
-
* Scope, recorded: this arm records turn 1 to parity with Cursor's
|
|
36
|
+
* Scope, recorded: this arm records turn 1 to parity with Cursor's first golden.
|
|
37
37
|
* The second invocation that reconciles a DECIDED change set needs the
|
|
38
38
|
* server's `file_change_sets` projection staged on the record; staging that by
|
|
39
|
-
* hand would pin a hand-built shape, so the reconcile arm rides
|
|
40
|
-
* with both harnesses in view.
|
|
39
|
+
* hand would pin a hand-built shape, so the reconcile arm rides the runtime's
|
|
40
|
+
* own net with both harnesses in view.
|
|
41
41
|
*
|
|
42
42
|
* Determinism: the fixture repo's commit and tree ids are byte-stable because
|
|
43
43
|
* `initGitWorkspace` pins author, committer and both dates; the script's path
|
|
44
44
|
* is virtual-absolute (`/notes.md`) so no temp directory can reach the golden.
|
|
45
45
|
*
|
|
46
|
+
* The first turn's stamps are `:01` (#1097, 2026-09-15): until then the
|
|
47
|
+
* golden held `:02` for message 1, its row's `startedAt`/`completedAt`, and
|
|
48
|
+
* the flip to `:01` in CI was a producer/consumer race, not a change of rule.
|
|
49
|
+
* This is the one native scenario whose first mid-stream persist shells out
|
|
50
|
+
* (the capture substrate's `file_change_progress`), and while the loop awaited
|
|
51
|
+
* it LangGraph's producer ran the tool and called the scripted model's second
|
|
52
|
+
* turn, whose tick landed before message 1 was stamped — on a fast machine;
|
|
53
|
+
* on a slow one the consumer won. The scripted model now waits for the
|
|
54
|
+
* previous turn's tool results to be persisted settled before it ticks
|
|
55
|
+
* (`ExecutionRecord.whenToolCallsSettled`, the ground a real model's latency
|
|
56
|
+
* gives for free), so turn 1's stamps precede turn 2's instant every run, as
|
|
57
|
+
* they do in `tool-call.status.json`. The artifact's `createdAt` stays `:02`:
|
|
58
|
+
* the inline publisher stamps it when its upload lands, after the tick, and
|
|
59
|
+
* the persist that releases the barrier is the fast one (progress capture is
|
|
60
|
+
* throttled by its floor within the same second). Message 2, `capturedAt`,
|
|
61
|
+
* the ledger events and `fileChangeProgress` are the boundary's, after turn 2.
|
|
62
|
+
*
|
|
46
63
|
* Regenerate ONLY after a deliberate behavior change:
|
|
47
64
|
* npx vitest run src/activities/execute-deep-agent/__tests__/hermetic -u
|
|
48
65
|
*/
|
|
@@ -181,7 +198,7 @@ describe("ExecuteDeepAgent hermetic — file-review capture", () => {
|
|
|
181
198
|
expect(final.fileChangeProgress?.linesAdded).toBe(1);
|
|
182
199
|
|
|
183
200
|
// The two tree OIDs are content-derived now that no host path enters the
|
|
184
|
-
// trees (
|
|
201
|
+
// trees (since #1096): well-formed, distinct, and pinned
|
|
185
202
|
// byte for byte by the golden below.
|
|
186
203
|
const baselineOid = baseline.value.baselineSnapshot?.git?.treeOid ?? "";
|
|
187
204
|
const candidateOid = candidate.value.candidateSnapshot?.git?.treeOid ?? "";
|
|
@@ -3,16 +3,11 @@
|
|
|
3
3
|
{
|
|
4
4
|
"type": "MESSAGE_THINKING",
|
|
5
5
|
"content": "Two commands are needed; I will run them in order.",
|
|
6
|
-
"timestamp": "2026-01-01T00:00:01.000Z",
|
|
7
|
-
"isStreaming": true
|
|
8
|
-
},
|
|
9
|
-
{
|
|
10
|
-
"type": "MESSAGE_AI",
|
|
11
|
-
"content": "I will run the two commands.",
|
|
12
6
|
"timestamp": "2026-01-01T00:00:01.000Z"
|
|
13
7
|
},
|
|
14
8
|
{
|
|
15
9
|
"type": "MESSAGE_AI",
|
|
10
|
+
"content": "I will run the two commands.",
|
|
16
11
|
"timestamp": "2026-01-01T00:00:01.000Z",
|
|
17
12
|
"toolCalls": [
|
|
18
13
|
{
|
|
@@ -24,7 +19,7 @@
|
|
|
24
19
|
"status": "TOOL_CALL_WAITING_APPROVAL",
|
|
25
20
|
"startedAt": "2026-01-01T00:00:01.000Z",
|
|
26
21
|
"requiresApproval": true,
|
|
27
|
-
"approvalMessage": "
|
|
22
|
+
"approvalMessage": "Run command: echo hermetic-a",
|
|
28
23
|
"approvalRequestedAt": "2026-01-01T00:00:01.000Z",
|
|
29
24
|
"argsPreview": "{\"command\":\"echo hermetic-a\"}",
|
|
30
25
|
"toolKind": "TOOL_KIND_SHELL",
|
|
@@ -3,16 +3,11 @@
|
|
|
3
3
|
{
|
|
4
4
|
"type": "MESSAGE_THINKING",
|
|
5
5
|
"content": "Two commands are needed; I will run them in order.",
|
|
6
|
-
"timestamp": "2026-01-01T00:00:01.000Z",
|
|
7
|
-
"isStreaming": true
|
|
8
|
-
},
|
|
9
|
-
{
|
|
10
|
-
"type": "MESSAGE_AI",
|
|
11
|
-
"content": "I will run the two commands.",
|
|
12
6
|
"timestamp": "2026-01-01T00:00:01.000Z"
|
|
13
7
|
},
|
|
14
8
|
{
|
|
15
9
|
"type": "MESSAGE_AI",
|
|
10
|
+
"content": "I will run the two commands.",
|
|
16
11
|
"timestamp": "2026-01-01T00:00:01.000Z",
|
|
17
12
|
"toolCalls": [
|
|
18
13
|
{
|
|
@@ -26,7 +21,7 @@
|
|
|
26
21
|
"startedAt": "2026-01-01T00:00:01.000Z",
|
|
27
22
|
"completedAt": "2026-01-01T00:00:01.000Z",
|
|
28
23
|
"requiresApproval": true,
|
|
29
|
-
"approvalMessage": "
|
|
24
|
+
"approvalMessage": "Run command: echo hermetic-a",
|
|
30
25
|
"approvalRequestedAt": "2026-01-01T00:00:01.000Z",
|
|
31
26
|
"approvalDecidedAt": "2026-01-01T00:00:30.000Z",
|
|
32
27
|
"approvalAction": "APPROVAL_ACTION_APPROVE_ALL",
|
|
@@ -34,13 +29,7 @@
|
|
|
34
29
|
"toolKind": "TOOL_KIND_SHELL",
|
|
35
30
|
"approvalPolicySource": "APPROVAL_POLICY_SOURCE_BUILTIN_CATEGORY",
|
|
36
31
|
"policyEngineVersion": "phase-7"
|
|
37
|
-
}
|
|
38
|
-
]
|
|
39
|
-
},
|
|
40
|
-
{
|
|
41
|
-
"type": "MESSAGE_AI",
|
|
42
|
-
"timestamp": "2026-01-01T00:00:02.000Z",
|
|
43
|
-
"toolCalls": [
|
|
32
|
+
},
|
|
44
33
|
{
|
|
45
34
|
"id": "call-hermetic-exec-0002",
|
|
46
35
|
"name": "execute",
|
|
@@ -51,6 +40,7 @@
|
|
|
51
40
|
"status": "TOOL_CALL_COMPLETED",
|
|
52
41
|
"startedAt": "2026-01-01T00:00:02.000Z",
|
|
53
42
|
"completedAt": "2026-01-01T00:00:02.000Z",
|
|
43
|
+
"argsPreview": "{\"command\":\"echo hermetic-b\"}",
|
|
54
44
|
"toolKind": "TOOL_KIND_SHELL",
|
|
55
45
|
"approvalPolicySource": "APPROVAL_POLICY_SOURCE_APPROVAL_LEASE",
|
|
56
46
|
"policyEngineVersion": "phase-7"
|
package/src/activities/execute-deep-agent/__tests__/hermetic/goldens/approve.turn2.status.json
CHANGED
|
@@ -3,10 +3,6 @@
|
|
|
3
3
|
{
|
|
4
4
|
"type": "MESSAGE_AI",
|
|
5
5
|
"content": "I will run the command.",
|
|
6
|
-
"timestamp": "2026-01-01T00:00:01.000Z"
|
|
7
|
-
},
|
|
8
|
-
{
|
|
9
|
-
"type": "MESSAGE_AI",
|
|
10
6
|
"timestamp": "2026-01-01T00:00:01.000Z",
|
|
11
7
|
"toolCalls": [
|
|
12
8
|
{
|
|
@@ -20,7 +16,7 @@
|
|
|
20
16
|
"startedAt": "2026-01-01T00:00:01.000Z",
|
|
21
17
|
"completedAt": "2026-01-01T00:00:01.000Z",
|
|
22
18
|
"requiresApproval": true,
|
|
23
|
-
"approvalMessage": "
|
|
19
|
+
"approvalMessage": "Run command: echo hermetic-a",
|
|
24
20
|
"approvalRequestedAt": "2026-01-01T00:00:01.000Z",
|
|
25
21
|
"approvalDecidedAt": "2026-01-01T00:00:30.000Z",
|
|
26
22
|
"approvalAction": "APPROVAL_ACTION_APPROVE",
|
package/src/activities/execute-deep-agent/__tests__/hermetic/goldens/file-review-capture.status.json
CHANGED
|
@@ -3,11 +3,7 @@
|
|
|
3
3
|
{
|
|
4
4
|
"type": "MESSAGE_AI",
|
|
5
5
|
"content": "Appending the line.",
|
|
6
|
-
"timestamp": "2026-01-01T00:00:
|
|
7
|
-
},
|
|
8
|
-
{
|
|
9
|
-
"type": "MESSAGE_AI",
|
|
10
|
-
"timestamp": "2026-01-01T00:00:02.000Z",
|
|
6
|
+
"timestamp": "2026-01-01T00:00:01.000Z",
|
|
11
7
|
"toolCalls": [
|
|
12
8
|
{
|
|
13
9
|
"id": "call-hermetic-edit-0001",
|
|
@@ -19,8 +15,9 @@
|
|
|
19
15
|
},
|
|
20
16
|
"result": "Successfully replaced 1 occurrence(s) in '/notes.md'",
|
|
21
17
|
"status": "TOOL_CALL_COMPLETED",
|
|
22
|
-
"startedAt": "2026-01-01T00:00:
|
|
23
|
-
"completedAt": "2026-01-01T00:00:
|
|
18
|
+
"startedAt": "2026-01-01T00:00:01.000Z",
|
|
19
|
+
"completedAt": "2026-01-01T00:00:01.000Z",
|
|
20
|
+
"argsPreview": "{\"file_path\":\"/notes.md\",\"old_string\":\"first\\n\",\"new_string\":\"first\\nsecond\\n\"}",
|
|
24
21
|
"toolKind": "TOOL_KIND_FILE_EDIT",
|
|
25
22
|
"approvalPolicySource": "APPROVAL_POLICY_SOURCE_BUILTIN_CATEGORY",
|
|
26
23
|
"policyEngineVersion": "phase-7",
|
|
@@ -3,10 +3,6 @@
|
|
|
3
3
|
{
|
|
4
4
|
"type": "MESSAGE_AI",
|
|
5
5
|
"content": "I will run the command.",
|
|
6
|
-
"timestamp": "2026-01-01T00:00:01.000Z"
|
|
7
|
-
},
|
|
8
|
-
{
|
|
9
|
-
"type": "MESSAGE_AI",
|
|
10
6
|
"timestamp": "2026-01-01T00:00:01.000Z",
|
|
11
7
|
"toolCalls": [
|
|
12
8
|
{
|
|
@@ -18,7 +14,7 @@
|
|
|
18
14
|
"status": "TOOL_CALL_WAITING_APPROVAL",
|
|
19
15
|
"startedAt": "2026-01-01T00:00:01.000Z",
|
|
20
16
|
"requiresApproval": true,
|
|
21
|
-
"approvalMessage": "
|
|
17
|
+
"approvalMessage": "Run command: echo hermetic-a",
|
|
22
18
|
"approvalRequestedAt": "2026-01-01T00:00:01.000Z",
|
|
23
19
|
"argsPreview": "{\"command\":\"echo hermetic-a\"}",
|
|
24
20
|
"toolKind": "TOOL_KIND_SHELL",
|
|
@@ -3,10 +3,6 @@
|
|
|
3
3
|
{
|
|
4
4
|
"type": "MESSAGE_AI",
|
|
5
5
|
"content": "Writing the report.",
|
|
6
|
-
"timestamp": "2026-01-01T00:00:01.000Z"
|
|
7
|
-
},
|
|
8
|
-
{
|
|
9
|
-
"type": "MESSAGE_AI",
|
|
10
6
|
"timestamp": "2026-01-01T00:00:01.000Z",
|
|
11
7
|
"toolCalls": [
|
|
12
8
|
{
|
|
@@ -20,6 +16,7 @@
|
|
|
20
16
|
"status": "TOOL_CALL_COMPLETED",
|
|
21
17
|
"startedAt": "2026-01-01T00:00:01.000Z",
|
|
22
18
|
"completedAt": "2026-01-01T00:00:01.000Z",
|
|
19
|
+
"argsPreview": "{\"file_path\":\"/report.md\",\"content\":\"# Report\\n\\nAll fixtures nominal.\\n\"}",
|
|
23
20
|
"toolKind": "TOOL_KIND_FILE_WRITE",
|
|
24
21
|
"approvalPolicySource": "APPROVAL_POLICY_SOURCE_BUILTIN_CATEGORY",
|
|
25
22
|
"policyEngineVersion": "phase-7",
|
|
@@ -30,10 +27,6 @@
|
|
|
30
27
|
{
|
|
31
28
|
"type": "MESSAGE_AI",
|
|
32
29
|
"content": "Now the command.",
|
|
33
|
-
"timestamp": "2026-01-01T00:00:02.000Z"
|
|
34
|
-
},
|
|
35
|
-
{
|
|
36
|
-
"type": "MESSAGE_AI",
|
|
37
30
|
"timestamp": "2026-01-01T00:00:02.000Z",
|
|
38
31
|
"toolCalls": [
|
|
39
32
|
{
|
|
@@ -45,7 +38,7 @@
|
|
|
45
38
|
"status": "TOOL_CALL_WAITING_APPROVAL",
|
|
46
39
|
"startedAt": "2026-01-01T00:00:02.000Z",
|
|
47
40
|
"requiresApproval": true,
|
|
48
|
-
"approvalMessage": "
|
|
41
|
+
"approvalMessage": "Run command: echo hermetic-a",
|
|
49
42
|
"approvalRequestedAt": "2026-01-01T00:00:02.000Z",
|
|
50
43
|
"argsPreview": "{\"command\":\"echo hermetic-a\"}",
|
|
51
44
|
"toolKind": "TOOL_KIND_SHELL",
|
|
@@ -3,10 +3,6 @@
|
|
|
3
3
|
{
|
|
4
4
|
"type": "MESSAGE_AI",
|
|
5
5
|
"content": "Writing the report.",
|
|
6
|
-
"timestamp": "2026-01-01T00:00:01.000Z"
|
|
7
|
-
},
|
|
8
|
-
{
|
|
9
|
-
"type": "MESSAGE_AI",
|
|
10
6
|
"timestamp": "2026-01-01T00:00:01.000Z",
|
|
11
7
|
"toolCalls": [
|
|
12
8
|
{
|
|
@@ -20,6 +16,7 @@
|
|
|
20
16
|
"status": "TOOL_CALL_COMPLETED",
|
|
21
17
|
"startedAt": "2026-01-01T00:00:01.000Z",
|
|
22
18
|
"completedAt": "2026-01-01T00:00:01.000Z",
|
|
19
|
+
"argsPreview": "{\"file_path\":\"/report.md\",\"content\":\"# Report\\n\\nAll fixtures nominal.\\n\"}",
|
|
23
20
|
"toolKind": "TOOL_KIND_FILE_WRITE",
|
|
24
21
|
"approvalPolicySource": "APPROVAL_POLICY_SOURCE_BUILTIN_CATEGORY",
|
|
25
22
|
"policyEngineVersion": "phase-7",
|
|
@@ -30,10 +27,6 @@
|
|
|
30
27
|
{
|
|
31
28
|
"type": "MESSAGE_AI",
|
|
32
29
|
"content": "Now the command.",
|
|
33
|
-
"timestamp": "2026-01-01T00:00:02.000Z"
|
|
34
|
-
},
|
|
35
|
-
{
|
|
36
|
-
"type": "MESSAGE_AI",
|
|
37
30
|
"timestamp": "2026-01-01T00:00:02.000Z",
|
|
38
31
|
"toolCalls": [
|
|
39
32
|
{
|
|
@@ -47,7 +40,7 @@
|
|
|
47
40
|
"startedAt": "2026-01-01T00:00:02.000Z",
|
|
48
41
|
"completedAt": "2026-01-01T00:00:02.000Z",
|
|
49
42
|
"requiresApproval": true,
|
|
50
|
-
"approvalMessage": "
|
|
43
|
+
"approvalMessage": "Run command: echo hermetic-a",
|
|
51
44
|
"approvalRequestedAt": "2026-01-01T00:00:02.000Z",
|
|
52
45
|
"approvalDecidedAt": "2026-01-01T00:00:30.000Z",
|
|
53
46
|
"approvalAction": "APPROVAL_ACTION_APPROVE",
|
|
@@ -3,10 +3,6 @@
|
|
|
3
3
|
{
|
|
4
4
|
"type": "MESSAGE_AI",
|
|
5
5
|
"content": "Let me look.",
|
|
6
|
-
"timestamp": "2026-01-01T00:00:01.000Z"
|
|
7
|
-
},
|
|
8
|
-
{
|
|
9
|
-
"type": "MESSAGE_AI",
|
|
10
6
|
"timestamp": "2026-01-01T00:00:01.000Z",
|
|
11
7
|
"toolCalls": [
|
|
12
8
|
{
|
|
@@ -19,6 +15,7 @@
|
|
|
19
15
|
"status": "TOOL_CALL_COMPLETED",
|
|
20
16
|
"startedAt": "2026-01-01T00:00:01.000Z",
|
|
21
17
|
"completedAt": "2026-01-01T00:00:01.000Z",
|
|
18
|
+
"argsPreview": "{\"file_path\":\"/notes.md\"}",
|
|
22
19
|
"toolKind": "TOOL_KIND_FILE_READ"
|
|
23
20
|
}
|
|
24
21
|
]
|
package/src/activities/execute-deep-agent/__tests__/hermetic/goldens/pause.loop.mid-tool.status.json
CHANGED
|
@@ -3,10 +3,6 @@
|
|
|
3
3
|
{
|
|
4
4
|
"type": "MESSAGE_AI",
|
|
5
5
|
"content": "Let me look.",
|
|
6
|
-
"timestamp": "2026-01-01T00:00:01.000Z"
|
|
7
|
-
},
|
|
8
|
-
{
|
|
9
|
-
"type": "MESSAGE_AI",
|
|
10
6
|
"timestamp": "2026-01-01T00:00:01.000Z",
|
|
11
7
|
"toolCalls": [
|
|
12
8
|
{
|
|
@@ -17,6 +13,7 @@
|
|
|
17
13
|
},
|
|
18
14
|
"status": "TOOL_CALL_RUNNING",
|
|
19
15
|
"startedAt": "2026-01-01T00:00:01.000Z",
|
|
16
|
+
"argsPreview": "{\"file_path\":\"/notes.md\"}",
|
|
20
17
|
"toolKind": "TOOL_KIND_FILE_READ"
|
|
21
18
|
}
|
|
22
19
|
]
|
package/src/activities/execute-deep-agent/__tests__/hermetic/goldens/platform-stop.status.json
CHANGED
|
@@ -3,10 +3,6 @@
|
|
|
3
3
|
{
|
|
4
4
|
"type": "MESSAGE_AI",
|
|
5
5
|
"content": "Let me look.",
|
|
6
|
-
"timestamp": "2026-01-01T00:00:01.000Z"
|
|
7
|
-
},
|
|
8
|
-
{
|
|
9
|
-
"type": "MESSAGE_AI",
|
|
10
6
|
"timestamp": "2026-01-01T00:00:01.000Z",
|
|
11
7
|
"toolCalls": [
|
|
12
8
|
{
|
|
@@ -17,6 +13,7 @@
|
|
|
17
13
|
},
|
|
18
14
|
"status": "TOOL_CALL_RUNNING",
|
|
19
15
|
"startedAt": "2026-01-01T00:00:01.000Z",
|
|
16
|
+
"argsPreview": "{\"file_path\":\"/notes.md\"}",
|
|
20
17
|
"toolKind": "TOOL_KIND_FILE_READ"
|
|
21
18
|
}
|
|
22
19
|
]
|