@myagentroam/agent 0.11.32 → 0.11.34
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/cli/catalog-file.d.ts +78 -0
- package/dist/cli/catalog-file.js +102 -0
- package/dist/cli/codex-auth-file.d.ts +1 -1
- package/dist/cli/codex-auth-file.js +9 -10
- package/dist/cli/main.js +44 -54
- package/dist/error.d.ts +15 -0
- package/dist/error.js +74 -0
- package/dist/extensions/agents.d.ts +100 -0
- package/dist/extensions/agents.js +121 -0
- package/dist/extensions/capabilities.d.ts +4 -0
- package/dist/extensions/commands.d.ts +23 -0
- package/dist/extensions/commands.js +45 -0
- package/dist/extensions/compaction.d.ts +36 -0
- package/dist/extensions/contracts.d.ts +147 -0
- package/dist/extensions/data.d.ts +81 -0
- package/dist/extensions/data.js +78 -0
- package/dist/extensions/environment.d.ts +39 -0
- package/dist/extensions/environment.js +52 -0
- package/dist/extensions/files.d.ts +68 -0
- package/dist/extensions/files.js +26 -0
- package/dist/extensions/hooks.d.ts +32 -0
- package/dist/extensions/host-ports.d.ts +24 -0
- package/dist/extensions/manager.d.ts +42 -0
- package/dist/extensions/manager.js +457 -0
- package/dist/extensions/mcp.d.ts +116 -0
- package/dist/extensions/mcp.js +434 -0
- package/dist/extensions/model-request.d.ts +65 -0
- package/dist/extensions/model-request.js +197 -0
- package/dist/extensions/model-stream.d.ts +18 -0
- package/dist/extensions/model-stream.js +108 -0
- package/dist/extensions/models.d.ts +46 -0
- package/dist/extensions/models.js +7 -0
- package/dist/extensions/network.d.ts +40 -0
- package/dist/extensions/network.js +97 -0
- package/dist/extensions/operation.d.ts +32 -0
- package/dist/extensions/processes.d.ts +64 -0
- package/dist/extensions/processes.js +284 -0
- package/dist/extensions/prompt-composition.d.ts +38 -0
- package/dist/extensions/prompt-composition.js +100 -0
- package/dist/extensions/prompt-input.d.ts +30 -0
- package/dist/extensions/prompt-input.js +48 -0
- package/dist/extensions/prompts.d.ts +31 -0
- package/dist/extensions/prompts.js +88 -0
- package/dist/extensions/resources.d.ts +26 -0
- package/dist/extensions/resources.js +221 -0
- package/dist/extensions/services.d.ts +31 -0
- package/dist/extensions/services.js +61 -0
- package/dist/extensions/session-api.d.ts +6 -0
- package/dist/extensions/session-api.js +52 -0
- package/dist/extensions/session-input.d.ts +184 -0
- package/dist/extensions/session-input.js +422 -0
- package/dist/extensions/session-messages.d.ts +41 -0
- package/dist/extensions/session-messages.js +76 -0
- package/dist/extensions/session-tools.d.ts +32 -0
- package/dist/extensions/session-tools.js +208 -0
- package/dist/extensions/session.d.ts +60 -0
- package/dist/extensions/session.js +265 -0
- package/dist/extensions/settings.d.ts +76 -0
- package/dist/extensions/settings.js +115 -0
- package/dist/extensions/store.d.ts +10 -0
- package/dist/extensions/store.js +131 -0
- package/dist/extensions/tool-runtime.d.ts +16 -0
- package/dist/extensions/tools.d.ts +80 -0
- package/dist/extensions/tools.js +270 -0
- package/dist/extensions.d.ts +22 -0
- package/dist/host/contracts.d.ts +58 -0
- package/dist/host/contracts.js +18 -0
- package/dist/host/description.d.ts +19 -0
- package/dist/host/local-agent-host.d.ts +96 -0
- package/dist/host/local-agent-host.js +429 -0
- package/dist/host/local-exec-tool.d.ts +26 -0
- package/dist/host/local-exec-tool.js +686 -0
- package/dist/host/local-file-access.d.ts +30 -0
- package/dist/host/local-file-access.js +107 -0
- package/dist/host/local-network-access.d.ts +6 -0
- package/dist/host/local-network-access.js +101 -0
- package/dist/host/local-process-executor.d.ts +5 -0
- package/dist/host/local-process-executor.js +17 -0
- package/dist/host/local-session-environment.d.ts +18 -0
- package/dist/host/local-shell.d.ts +3 -0
- package/dist/host/local-tool-registry.d.ts +34 -0
- package/dist/host/local-tool-registry.js +134 -0
- package/dist/host/network.d.ts +5 -0
- package/dist/host/network.js +42 -0
- package/dist/host/process-control.d.ts +2 -0
- package/dist/host/process-control.js +26 -0
- package/dist/host/skill-contract.d.ts +6 -0
- package/dist/host.d.ts +17 -0
- package/dist/host.js +3 -0
- package/dist/index.d.ts +26 -51
- package/dist/index.js +9 -12
- package/dist/model/anthropic-messages.d.ts +10 -0
- package/dist/model/anthropic-messages.js +692 -0
- package/dist/model/anthropic-thinking.js +33 -0
- package/dist/model/configuration.d.ts +111 -0
- package/dist/model/configuration.js +201 -0
- package/dist/model/contracts.d.ts +229 -0
- package/dist/model/http.d.ts +13 -0
- package/dist/model/http.js +119 -0
- package/dist/model/image-contract.d.ts +10 -0
- package/dist/model/image.d.ts +9 -0
- package/dist/model/inline-media-budget.d.ts +7 -0
- package/dist/model/inline-media-budget.js +36 -0
- package/dist/model/input-images.d.ts +3 -0
- package/dist/model/input-images.js +16 -0
- package/dist/model/openai-responses.d.ts +59 -0
- package/dist/model/openai-responses.js +1586 -0
- package/dist/model/recovery.js +80 -0
- package/dist/model/request-configuration.d.ts +17 -0
- package/dist/model/request-configuration.js +47 -0
- package/dist/model/responses-event-projection.d.ts +24 -0
- package/dist/model/responses-event-projection.js +194 -0
- package/dist/model/responses-request.d.ts +5 -0
- package/dist/model/responses-request.js +363 -0
- package/dist/model/responses-session-cache.d.ts +33 -0
- package/dist/model/responses-session-cache.js +64 -0
- package/dist/model/runtime-credential.d.ts +1 -0
- package/dist/model/runtime-credential.js +1 -0
- package/dist/model/sse.js +281 -0
- package/dist/model/text-blocks.js +40 -0
- package/dist/model/tool-declarations.d.ts +4 -0
- package/dist/model/tool-definition-projection.d.ts +6 -0
- package/dist/model/tool-definition-projection.js +11 -0
- package/dist/model/tool-schema.d.ts +2 -0
- package/dist/model/tool-schema.js +17 -0
- package/dist/model/transport-test.d.ts +10 -0
- package/dist/model/transport-test.js +27 -0
- package/dist/model/usage-observer.d.ts +5 -0
- package/dist/model/usage.d.ts +40 -0
- package/dist/network/credential-runtime.d.ts +8 -0
- package/dist/network/credential-runtime.js +72 -0
- package/dist/network/credentials.d.ts +20 -0
- package/dist/network/credentials.js +18 -0
- package/dist/network/http.d.ts +20 -0
- package/dist/network/http.js +421 -0
- package/dist/network/product-user-agent.d.ts +5 -0
- package/dist/network/product-user-agent.js +22 -0
- package/dist/network/transport-error.d.ts +5 -0
- package/dist/network/transport-error.js +31 -0
- package/dist/process/contracts.d.ts +26 -0
- package/dist/prompts/index.d.ts +20 -0
- package/dist/prompts/index.js +49 -0
- package/dist/prompts/prompt-sections.d.ts +6 -0
- package/dist/prompts/prompt-sections.js +6 -0
- package/dist/prompts/read-context.js +152 -0
- package/dist/runtime/compaction/contracts.d.ts +23 -0
- package/dist/runtime/compaction/coordinator.js +88 -0
- package/dist/runtime/compaction/generate.d.ts +31 -0
- package/dist/runtime/compaction/generate.js +84 -0
- package/dist/runtime/compaction/history.d.ts +16 -0
- package/dist/runtime/compaction/operation.d.ts +30 -0
- package/dist/runtime/compaction/operation.js +131 -0
- package/dist/runtime/compaction/requests.d.ts +16 -0
- package/dist/runtime/compaction/requests.js +114 -0
- package/dist/runtime/compaction/retained-context.d.ts +6 -0
- package/dist/runtime/compaction/retained-context.js +48 -0
- package/dist/runtime/compaction/smart.d.ts +14 -0
- package/dist/runtime/compaction/smart.js +59 -0
- package/dist/runtime/context/contextual-blocks.d.ts +31 -0
- package/dist/runtime/context/contextual-blocks.js +158 -0
- package/dist/runtime/context/environment.d.ts +5 -0
- package/dist/runtime/context/gc-candidates-code.d.ts +6 -0
- package/dist/runtime/context/gc-candidates-code.js +102 -0
- package/dist/runtime/context/gc-candidates-exec.d.ts +6 -0
- package/dist/runtime/context/gc-candidates-exec.js +131 -0
- package/dist/runtime/context/gc-candidates-read-patch.d.ts +7 -0
- package/dist/runtime/context/gc-candidates-read-patch.js +118 -0
- package/dist/runtime/context/gc-candidates-subagent.d.ts +6 -0
- package/dist/runtime/context/gc-candidates-subagent.js +100 -0
- package/dist/runtime/context/gc-candidates-web.d.ts +6 -0
- package/dist/runtime/context/gc-candidates-web.js +58 -0
- package/dist/runtime/context/gc-candidates.d.ts +12 -0
- package/dist/runtime/context/gc-candidates.js +192 -0
- package/dist/runtime/context/gc-contracts.d.ts +57 -0
- package/dist/runtime/context/gc-economics.d.ts +48 -0
- package/dist/runtime/context/gc-economics.js +161 -0
- package/dist/runtime/context/gc-runtime.d.ts +43 -0
- package/dist/runtime/context/gc-tokens.d.ts +26 -0
- package/dist/runtime/context/gc-tokens.js +106 -0
- package/dist/runtime/context/gc.d.ts +7 -0
- package/dist/runtime/context/gc.js +552 -0
- package/dist/runtime/context/instructions.d.ts +37 -0
- package/dist/runtime/context/instructions.js +297 -0
- package/dist/runtime/context/normalize.d.ts +5 -0
- package/dist/runtime/context/projection.d.ts +23 -0
- package/dist/runtime/context/projection.js +284 -0
- package/dist/runtime/context/request-budget.d.ts +5 -0
- package/dist/runtime/context/request-budget.js +25 -0
- package/dist/runtime/context/restore.d.ts +27 -0
- package/dist/runtime/context/restore.js +186 -0
- package/dist/runtime/context/usage.d.ts +17 -0
- package/dist/runtime/context/usage.js +124 -0
- package/dist/runtime/context/world-state.d.ts +34 -0
- package/dist/runtime/context/world-state.js +232 -0
- package/dist/runtime/contracts.d.ts +29 -0
- package/dist/runtime/event-projection.d.ts +14 -0
- package/dist/runtime/event-projection.js +87 -0
- package/dist/runtime/events.d.ts +195 -0
- package/dist/runtime/execution-handle.d.ts +12 -0
- package/dist/runtime/execution-handle.js +1 -0
- package/dist/runtime/execution.d.ts +55 -0
- package/dist/runtime/execution.js +444 -0
- package/dist/runtime/model-progress.js +85 -0
- package/dist/runtime/resource-publication.d.ts +27 -0
- package/dist/runtime/resource-publication.js +60 -0
- package/dist/runtime/tool-round-contract.d.ts +19 -0
- package/dist/runtime/tool-round-contract.js +1 -0
- package/dist/runtime/wait.js +82 -0
- package/dist/sandbox/linux/bubblewrap-sandbox-executor.d.ts +1 -1
- package/dist/sandbox/linux/bubblewrap-sandbox-executor.js +8 -8
- package/dist/sdk/agent.d.ts +7 -0
- package/dist/sdk/agent.js +321 -0
- package/dist/sdk/execution-code-mode.d.ts +18 -0
- package/dist/sdk/execution-code-mode.js +51 -0
- package/dist/sdk/execution-compact-commit.d.ts +23 -0
- package/dist/sdk/execution-compact-commit.js +41 -0
- package/dist/sdk/execution-compact-extension.d.ts +12 -0
- package/dist/sdk/execution-compact-extension.js +46 -0
- package/dist/sdk/execution-compact-generation.d.ts +17 -0
- package/dist/sdk/execution-compact-generation.js +30 -0
- package/dist/sdk/execution-compaction-flight.d.ts +31 -0
- package/dist/sdk/execution-compaction-flight.js +50 -0
- package/dist/sdk/execution-compaction.d.ts +47 -0
- package/dist/sdk/execution-compaction.js +121 -0
- package/dist/sdk/execution-context-coordinator.d.ts +56 -0
- package/dist/sdk/execution-context-coordinator.js +102 -0
- package/dist/sdk/execution-input.d.ts +58 -0
- package/dist/sdk/execution-input.js +266 -0
- package/dist/sdk/execution-model-context.d.ts +52 -0
- package/dist/sdk/execution-model-context.js +156 -0
- package/dist/sdk/execution-model-lifecycle.d.ts +39 -0
- package/dist/sdk/execution-model-lifecycle.js +73 -0
- package/dist/sdk/execution-model-request.d.ts +40 -0
- package/dist/sdk/execution-model-request.js +45 -0
- package/dist/sdk/execution-round-preparation.d.ts +11 -0
- package/dist/sdk/execution-round-preparation.js +18 -0
- package/dist/sdk/execution-round-request.d.ts +30 -0
- package/dist/sdk/execution-round-request.js +31 -0
- package/dist/sdk/execution-tool-catalog.d.ts +46 -0
- package/dist/sdk/execution-tool-catalog.js +103 -0
- package/dist/sdk/execution-tool-scope.d.ts +67 -0
- package/dist/sdk/execution-tool-scope.js +147 -0
- package/dist/sdk/extension-agent-controller.d.ts +3 -0
- package/dist/sdk/extension-agent-controller.js +69 -0
- package/dist/sdk/extension-agents.d.ts +9 -0
- package/dist/sdk/extension-agents.js +58 -0
- package/dist/sdk/extension-models.d.ts +17 -0
- package/dist/sdk/extension-models.js +142 -0
- package/dist/sdk/extension-session-launch.d.ts +18 -0
- package/dist/sdk/extension-session-launch.js +73 -0
- package/dist/sdk/extension-session.d.ts +30 -0
- package/dist/sdk/extension-session.js +107 -0
- package/dist/sdk/extension-tool-runtime.d.ts +2 -0
- package/dist/sdk/extension-tool-runtime.js +14 -0
- package/dist/sdk/extension-tools.d.ts +16 -0
- package/dist/sdk/extension-tools.js +126 -0
- package/dist/sdk/model-input-projection.d.ts +4 -0
- package/dist/sdk/model-input-projection.js +27 -0
- package/dist/sdk/model-runtime.d.ts +21 -0
- package/dist/sdk/model-runtime.js +91 -0
- package/dist/sdk/native-steer.d.ts +20 -0
- package/dist/sdk/native-steer.js +84 -0
- package/dist/sdk/request-preparation.d.ts +9 -0
- package/dist/sdk/resource-input.d.ts +33 -0
- package/dist/sdk/resource-input.js +402 -0
- package/dist/sdk/session-catalog.d.ts +2 -0
- package/dist/sdk/session-catalog.js +12 -0
- package/dist/sdk/session-composition.d.ts +54 -0
- package/dist/sdk/session-composition.js +1 -0
- package/dist/sdk/session-execution-factory.d.ts +43 -0
- package/dist/sdk/session-execution-factory.js +937 -0
- package/dist/sdk/session-execution.d.ts +163 -0
- package/dist/sdk/session-execution.js +388 -0
- package/dist/sdk/session-extension-messages.d.ts +16 -0
- package/dist/sdk/session-extension-messages.js +64 -0
- package/dist/sdk/session-extension-prompt.d.ts +35 -0
- package/dist/sdk/session-extension-prompt.js +62 -0
- package/dist/sdk/session-maintenance.d.ts +25 -0
- package/dist/sdk/session-maintenance.js +205 -0
- package/dist/sdk/session-model-adapters.d.ts +28 -0
- package/dist/sdk/session-model-adapters.js +96 -0
- package/dist/sdk/session-open.d.ts +22 -0
- package/dist/sdk/session-open.js +44 -0
- package/dist/sdk/session-registry.d.ts +17 -0
- package/dist/sdk/session-registry.js +83 -0
- package/dist/sdk/session-runtime.d.ts +72 -0
- package/dist/sdk/session-runtime.js +205 -0
- package/dist/sdk/session.d.ts +3 -0
- package/dist/sdk/session.js +313 -0
- package/dist/sdk/subagent-backend.d.ts +3 -0
- package/dist/sdk/subagent-backend.js +49 -0
- package/dist/sdk/types.d.ts +80 -0
- package/dist/sdk/types.js +1 -0
- package/dist/session/catalog.d.ts +70 -0
- package/dist/session/catalog.js +194 -0
- package/dist/session/code-observation-contract.d.ts +40 -0
- package/dist/session/code-observation-contract.js +1 -0
- package/dist/session/code-observation-projection.d.ts +54 -0
- package/dist/session/code-observation-projection.js +165 -0
- package/dist/session/code-state.d.ts +27 -0
- package/dist/session/code-state.js +89 -0
- package/dist/session/context-gc-checkpoint.d.ts +26 -0
- package/dist/session/context-gc-checkpoint.js +935 -0
- package/dist/session/context-gc-contract.d.ts +141 -0
- package/dist/session/context-gc-contract.js +1 -0
- package/dist/session/context-gc-observations.d.ts +58 -0
- package/dist/session/context-gc-observations.js +187 -0
- package/dist/session/context-gc-replacements.d.ts +63 -0
- package/dist/session/context-gc-subagent.d.ts +54 -0
- package/dist/session/deferred-input.d.ts +5 -0
- package/dist/session/deferred-input.js +74 -0
- package/dist/session/extension-checkpoint.d.ts +8 -0
- package/dist/session/extension-checkpoint.js +30 -0
- package/dist/session/history-input-limits.d.ts +4 -0
- package/dist/session/history-input-limits.js +4 -0
- package/dist/session/inline-media-contract.d.ts +16 -0
- package/dist/session/inline-media-contract.js +1 -0
- package/dist/session/inline-media.d.ts +26 -0
- package/dist/session/inline-media.js +138 -0
- package/dist/session/model-request.d.ts +14 -0
- package/dist/session/model-request.js +1 -0
- package/dist/session/record-contract.d.ts +19 -0
- package/dist/session/record-contract.js +1 -0
- package/dist/session/record-projection.d.ts +6 -0
- package/dist/session/record-projection.js +80 -0
- package/dist/session/resource-contract.d.ts +9 -0
- package/dist/session/resource-contract.js +1 -0
- package/dist/session/rollback.d.ts +13 -0
- package/dist/session/rollback.js +46 -0
- package/dist/session/store/contracts.d.ts +160 -0
- package/dist/session/store/contracts.js +1 -0
- package/dist/session/store/current-state.d.ts +17 -0
- package/dist/session/store/current-state.js +53 -0
- package/dist/session/store/execution-state.d.ts +13 -0
- package/dist/session/store/execution-state.js +103 -0
- package/dist/session/store/index.d.ts +4 -0
- package/dist/session/store/index.js +2 -0
- package/dist/session/store/jsonl/directory-index.d.ts +26 -0
- package/dist/session/store/jsonl/directory-index.js +283 -0
- package/dist/session/store/jsonl/fs-durability.d.ts +3 -0
- package/dist/session/store/jsonl/fs-durability.js +17 -0
- package/dist/session/store/jsonl/history-replacement.d.ts +48 -0
- package/dist/session/store/jsonl/history-replacement.js +147 -0
- package/dist/session/store/jsonl/history.d.ts +25 -0
- package/dist/session/store/jsonl/history.js +181 -0
- package/dist/session/store/jsonl/images.d.ts +19 -0
- package/dist/session/store/jsonl/images.js +122 -0
- package/dist/session/store/jsonl/index-transaction.d.ts +13 -0
- package/dist/session/store/jsonl/index-transaction.js +87 -0
- package/dist/session/store/jsonl/jsonl-admission.d.ts +10 -0
- package/dist/session/store/jsonl/jsonl-admission.js +205 -0
- package/dist/session/store/jsonl/jsonl-codec.d.ts +11 -0
- package/dist/session/store/jsonl/jsonl-codec.js +138 -0
- package/dist/session/store/jsonl/jsonl-migration.d.ts +12 -0
- package/dist/session/store/jsonl/jsonl-migration.js +105 -0
- package/dist/session/store/jsonl/jsonl-store.d.ts +171 -0
- package/dist/session/store/jsonl/jsonl-store.js +2482 -0
- package/dist/session/store/jsonl/open-recovery.d.ts +13 -0
- package/dist/session/store/jsonl/open-recovery.js +131 -0
- package/dist/session/store/jsonl/read-pins.d.ts +4 -0
- package/dist/session/store/jsonl/read-pins.js +131 -0
- package/dist/session/store/jsonl/record-append.d.ts +16 -0
- package/dist/session/store/jsonl/record-append.js +49 -0
- package/dist/session/store/jsonl/records.d.ts +30 -0
- package/dist/session/store/jsonl/records.js +313 -0
- package/dist/session/store/jsonl/resources.d.ts +19 -0
- package/dist/session/store/jsonl/resources.js +209 -0
- package/dist/session/store/jsonl/store-pool.d.ts +12 -0
- package/dist/session/store/jsonl/store-pool.js +55 -0
- package/dist/session/store/jsonl/transaction-recovery.d.ts +48 -0
- package/dist/session/store/jsonl/transaction-recovery.js +374 -0
- package/dist/session/store/jsonl/tree-maintenance.d.ts +12 -0
- package/dist/session/store/jsonl/tree-maintenance.js +59 -0
- package/dist/session/store/types.d.ts +69 -0
- package/dist/session/store/types.js +1 -0
- package/dist/session/summary.d.ts +18 -0
- package/dist/session/summary.js +1 -0
- package/dist/session/todo.d.ts +11 -0
- package/dist/session/todo.js +30 -0
- package/dist/session/tool-result-resources.d.ts +27 -0
- package/dist/session/tool-result-resources.js +255 -0
- package/dist/session/types.js +1 -0
- package/dist/session/user-history.d.ts +17 -0
- package/dist/session/user-history.js +1 -0
- package/dist/session-store.d.ts +2 -0
- package/dist/session-store.js +1 -0
- package/dist/shared/auto-title.d.ts +3 -3
- package/dist/shared/auto-title.js +6 -6
- package/dist/shared/model-text.d.ts +8 -8
- package/dist/shared/model-text.js +8 -7
- package/dist/storage/file-lock.js +83 -0
- package/dist/subagent/contracts.d.ts +107 -0
- package/dist/subagent/contracts.js +1 -0
- package/dist/subagent/limits.d.ts +17 -0
- package/dist/subagent/limits.js +17 -0
- package/dist/subagent/model-update.js +81 -0
- package/dist/subagent/session-controller.d.ts +148 -0
- package/dist/subagent/session-controller.js +1761 -0
- package/dist/subagent/wait-targets.d.ts +10 -0
- package/dist/subagent/wait-targets.js +26 -0
- package/dist/subagent/wait.d.ts +26 -0
- package/dist/subagent/wait.js +73 -0
- package/dist/tools/agent/agent-cancel.d.ts +7 -0
- package/dist/tools/agent/agent-cancel.js +29 -0
- package/dist/tools/agent/agent-message.d.ts +7 -0
- package/dist/tools/agent/agent-message.js +57 -0
- package/dist/tools/agent/agent-start.d.ts +12 -0
- package/dist/tools/agent/agent-start.js +106 -0
- package/dist/tools/agent/agent-wait.d.ts +7 -0
- package/dist/tools/agent/agent-wait.js +91 -0
- package/dist/tools/agent/question.d.ts +7 -0
- package/dist/tools/agent/question.js +125 -0
- package/dist/tools/agent/skill.d.ts +11 -0
- package/dist/tools/agent/skill.js +38 -0
- package/dist/tools/agent/sleep.d.ts +9 -0
- package/dist/tools/agent/sleep.js +54 -0
- package/dist/tools/agent/smart-compact.d.ts +9 -0
- package/dist/tools/agent/smart-compact.js +23 -0
- package/dist/tools/agent/todo-read.d.ts +14 -0
- package/dist/tools/agent/todo-write.d.ts +14 -0
- package/dist/tools/agent/todo-write.js +66 -0
- package/dist/tools/agent/todo.d.ts +25 -0
- package/dist/tools/agent/todo.js +32 -0
- package/dist/tools/callers.d.ts +7 -0
- package/dist/tools/callers.js +39 -0
- package/dist/tools/code-mode/cells.d.ts +29 -0
- package/dist/tools/code-mode/cells.js +338 -0
- package/dist/tools/code-mode/dispatch.d.ts +20 -0
- package/dist/tools/code-mode/dispatch.js +80 -0
- package/dist/tools/code-mode/engine.d.ts +60 -0
- package/dist/tools/code-mode/engine.js +1 -0
- package/dist/tools/code-mode/index.d.ts +31 -0
- package/dist/tools/code-mode/index.js +751 -0
- package/dist/tools/code-mode/observations.d.ts +8 -0
- package/dist/tools/code-mode/observations.js +64 -0
- package/dist/tools/code-mode/worker.d.ts +1 -0
- package/dist/tools/contracts.d.ts +193 -0
- package/dist/tools/contracts.js +1 -0
- package/dist/tools/definition-projection.d.ts +1 -0
- package/dist/tools/definition-projection.js +1 -0
- package/dist/tools/execution-limits.d.ts +69 -0
- package/dist/tools/execution-limits.js +58 -0
- package/dist/tools/execution.d.ts +30 -0
- package/dist/tools/execution.js +191 -0
- package/dist/tools/local/apply-patch-parser.js +177 -0
- package/dist/tools/local/apply-patch.d.ts +19 -0
- package/dist/tools/local/apply-patch.js +489 -0
- package/dist/tools/local/exec.d.ts +28 -0
- package/dist/tools/local/exec.js +194 -0
- package/dist/tools/local/image-processing.js +146 -0
- package/dist/tools/local/read.d.ts +43 -0
- package/dist/tools/local/read.js +470 -0
- package/dist/tools/local/view-image.d.ts +15 -0
- package/dist/tools/local/view-image.js +317 -0
- package/dist/tools/mcp/catalog.js +220 -0
- package/dist/tools/mcp/history.d.ts +4 -0
- package/dist/tools/mcp/tool-search.d.ts +45 -0
- package/dist/tools/mcp/tool-search.js +294 -0
- package/dist/tools/output-projection.d.ts +18 -0
- package/dist/tools/output-projection.js +341 -0
- package/dist/tools/permission-contract.d.ts +25 -0
- package/dist/tools/permission-contract.js +1 -0
- package/dist/tools/permissions.d.ts +61 -0
- package/dist/tools/permissions.js +237 -0
- package/dist/tools/registry.d.ts +7 -0
- package/dist/tools/result-extension-contract.d.ts +37 -0
- package/dist/tools/result-extension-contract.js +32 -0
- package/dist/tools/result-extensions.d.ts +12 -0
- package/dist/tools/result-extensions.js +104 -0
- package/dist/tools/runtime-context.d.ts +89 -0
- package/dist/tools/runtime-context.js +1 -0
- package/dist/tools/runtime-resource-handles.js +28 -0
- package/dist/tools/runtime.js +77 -0
- package/dist/tools/scheduler.d.ts +12 -0
- package/dist/tools/shared/path-resolver.js +133 -0
- package/dist/tools/wait.d.ts +1 -0
- package/dist/tools/wait.js +1 -0
- package/package.json +15 -3
- package/dist/agent-core/error.d.ts +0 -15
- package/dist/agent-core/error.js +0 -74
- package/dist/agent-core/extensions/agents.d.ts +0 -79
- package/dist/agent-core/extensions/agents.js +0 -186
- package/dist/agent-core/extensions/compaction.d.ts +0 -48
- package/dist/agent-core/extensions/contracts.d.ts +0 -265
- package/dist/agent-core/extensions/data.d.ts +0 -84
- package/dist/agent-core/extensions/data.js +0 -83
- package/dist/agent-core/extensions/environment.d.ts +0 -27
- package/dist/agent-core/extensions/environment.js +0 -52
- package/dist/agent-core/extensions/files.d.ts +0 -64
- package/dist/agent-core/extensions/files.js +0 -26
- package/dist/agent-core/extensions/hooks.d.ts +0 -32
- package/dist/agent-core/extensions/manager.d.ts +0 -39
- package/dist/agent-core/extensions/manager.js +0 -458
- package/dist/agent-core/extensions/mcp.d.ts +0 -99
- package/dist/agent-core/extensions/mcp.js +0 -433
- package/dist/agent-core/extensions/model-request.d.ts +0 -56
- package/dist/agent-core/extensions/model-request.js +0 -197
- package/dist/agent-core/extensions/model-stream.d.ts +0 -9
- package/dist/agent-core/extensions/model-stream.js +0 -108
- package/dist/agent-core/extensions/models.d.ts +0 -43
- package/dist/agent-core/extensions/network.d.ts +0 -32
- package/dist/agent-core/extensions/network.js +0 -97
- package/dist/agent-core/extensions/operation.d.ts +0 -30
- package/dist/agent-core/extensions/processes.d.ts +0 -52
- package/dist/agent-core/extensions/processes.js +0 -284
- package/dist/agent-core/extensions/prompt-composition.d.ts +0 -24
- package/dist/agent-core/extensions/prompt-composition.js +0 -106
- package/dist/agent-core/extensions/prompt-input.d.ts +0 -23
- package/dist/agent-core/extensions/prompt-input.js +0 -48
- package/dist/agent-core/extensions/resources.d.ts +0 -27
- package/dist/agent-core/extensions/resources.js +0 -221
- package/dist/agent-core/extensions/services.d.ts +0 -31
- package/dist/agent-core/extensions/services.js +0 -61
- package/dist/agent-core/extensions/session-input.d.ts +0 -163
- package/dist/agent-core/extensions/session-input.js +0 -411
- package/dist/agent-core/extensions/session-messages.d.ts +0 -41
- package/dist/agent-core/extensions/session-messages.js +0 -76
- package/dist/agent-core/extensions/session.d.ts +0 -69
- package/dist/agent-core/extensions/session.js +0 -607
- package/dist/agent-core/extensions/settings.d.ts +0 -59
- package/dist/agent-core/extensions/settings.js +0 -115
- package/dist/agent-core/extensions/store.d.ts +0 -10
- package/dist/agent-core/extensions/store.js +0 -131
- package/dist/agent-core/extensions/tools.d.ts +0 -61
- package/dist/agent-core/extensions/tools.js +0 -269
- package/dist/agent-core/host/contracts.d.ts +0 -100
- package/dist/agent-core/host/contracts.js +0 -18
- package/dist/agent-core/host/local-agent-host.d.ts +0 -96
- package/dist/agent-core/host/local-agent-host.js +0 -425
- package/dist/agent-core/host/local-file-access.d.ts +0 -30
- package/dist/agent-core/host/local-file-access.js +0 -107
- package/dist/agent-core/host/local-network-access.d.ts +0 -6
- package/dist/agent-core/host/local-network-access.js +0 -101
- package/dist/agent-core/host/local-process-executor.d.ts +0 -29
- package/dist/agent-core/host/local-process-executor.js +0 -41
- package/dist/agent-core/host/local-session-environment.d.ts +0 -18
- package/dist/agent-core/host/local-shell.d.ts +0 -3
- package/dist/agent-core/host/network.d.ts +0 -4
- package/dist/agent-core/host/network.js +0 -6
- package/dist/agent-core/model/anthropic-messages.d.ts +0 -10
- package/dist/agent-core/model/anthropic-messages.js +0 -707
- package/dist/agent-core/model/anthropic-thinking.js +0 -33
- package/dist/agent-core/model/catalog-file.d.ts +0 -80
- package/dist/agent-core/model/catalog-file.js +0 -103
- package/dist/agent-core/model/configuration.d.ts +0 -127
- package/dist/agent-core/model/configuration.js +0 -168
- package/dist/agent-core/model/contracts.d.ts +0 -229
- package/dist/agent-core/model/http.d.ts +0 -27
- package/dist/agent-core/model/http.js +0 -534
- package/dist/agent-core/model/image.d.ts +0 -17
- package/dist/agent-core/model/openai-responses.d.ts +0 -77
- package/dist/agent-core/model/openai-responses.js +0 -2123
- package/dist/agent-core/model/product-user-agent.d.ts +0 -5
- package/dist/agent-core/model/product-user-agent.js +0 -22
- package/dist/agent-core/model/recovery.js +0 -80
- package/dist/agent-core/model/request-configuration.d.ts +0 -17
- package/dist/agent-core/model/request-configuration.js +0 -47
- package/dist/agent-core/model/runtime-credential.d.ts +0 -8
- package/dist/agent-core/model/runtime-credential.js +0 -72
- package/dist/agent-core/model/sse.js +0 -281
- package/dist/agent-core/model/text-blocks.js +0 -40
- package/dist/agent-core/model/tool-declarations.d.ts +0 -4
- package/dist/agent-core/model/transport-test.d.ts +0 -3
- package/dist/agent-core/model/transport-test.js +0 -23
- package/dist/agent-core/model/usage-observer.d.ts +0 -31
- package/dist/agent-core/prompts/index.d.ts +0 -20
- package/dist/agent-core/prompts/index.js +0 -49
- package/dist/agent-core/runtime/compaction/coordinator.js +0 -88
- package/dist/agent-core/runtime/compaction/generate.d.ts +0 -28
- package/dist/agent-core/runtime/compaction/generate.js +0 -84
- package/dist/agent-core/runtime/compaction/history.d.ts +0 -16
- package/dist/agent-core/runtime/compaction/operation.d.ts +0 -29
- package/dist/agent-core/runtime/compaction/operation.js +0 -131
- package/dist/agent-core/runtime/compaction/requests.d.ts +0 -16
- package/dist/agent-core/runtime/compaction/requests.js +0 -114
- package/dist/agent-core/runtime/compaction/retained-context.d.ts +0 -6
- package/dist/agent-core/runtime/compaction/retained-context.js +0 -47
- package/dist/agent-core/runtime/compaction/smart.d.ts +0 -14
- package/dist/agent-core/runtime/compaction/smart.js +0 -59
- package/dist/agent-core/runtime/context/contextual-blocks.d.ts +0 -30
- package/dist/agent-core/runtime/context/contextual-blocks.js +0 -146
- package/dist/agent-core/runtime/context/environment.d.ts +0 -5
- package/dist/agent-core/runtime/context/gc-runtime.d.ts +0 -38
- package/dist/agent-core/runtime/context/gc-tokens.d.ts +0 -25
- package/dist/agent-core/runtime/context/gc-tokens.js +0 -103
- package/dist/agent-core/runtime/context/gc.d.ts +0 -75
- package/dist/agent-core/runtime/context/gc.js +0 -1386
- package/dist/agent-core/runtime/context/instructions.d.ts +0 -37
- package/dist/agent-core/runtime/context/instructions.js +0 -297
- package/dist/agent-core/runtime/context/normalize.d.ts +0 -5
- package/dist/agent-core/runtime/context/projection.d.ts +0 -23
- package/dist/agent-core/runtime/context/projection.js +0 -284
- package/dist/agent-core/runtime/context/request-budget.d.ts +0 -4
- package/dist/agent-core/runtime/context/request-budget.js +0 -25
- package/dist/agent-core/runtime/context/restore.d.ts +0 -25
- package/dist/agent-core/runtime/context/restore.js +0 -186
- package/dist/agent-core/runtime/context/usage.d.ts +0 -17
- package/dist/agent-core/runtime/context/usage.js +0 -124
- package/dist/agent-core/runtime/context/world-state.d.ts +0 -33
- package/dist/agent-core/runtime/context/world-state.js +0 -232
- package/dist/agent-core/runtime/contracts.d.ts +0 -41
- package/dist/agent-core/runtime/event-projection.d.ts +0 -14
- package/dist/agent-core/runtime/event-projection.js +0 -87
- package/dist/agent-core/runtime/events.d.ts +0 -197
- package/dist/agent-core/runtime/execution-handle.d.ts +0 -12
- package/dist/agent-core/runtime/execution.d.ts +0 -50
- package/dist/agent-core/runtime/execution.js +0 -445
- package/dist/agent-core/runtime/model-progress.js +0 -85
- package/dist/agent-core/runtime/resource-publication.d.ts +0 -8
- package/dist/agent-core/runtime/resource-publication.js +0 -60
- package/dist/agent-core/sdk/agent.d.ts +0 -11
- package/dist/agent-core/sdk/agent.js +0 -474
- package/dist/agent-core/sdk/extension-agents.d.ts +0 -9
- package/dist/agent-core/sdk/extension-agents.js +0 -58
- package/dist/agent-core/sdk/extension-models.d.ts +0 -13
- package/dist/agent-core/sdk/extension-models.js +0 -137
- package/dist/agent-core/sdk/extension-session.d.ts +0 -30
- package/dist/agent-core/sdk/extension-session.js +0 -105
- package/dist/agent-core/sdk/extension-tools.d.ts +0 -16
- package/dist/agent-core/sdk/extension-tools.js +0 -126
- package/dist/agent-core/sdk/model-runtime.d.ts +0 -18
- package/dist/agent-core/sdk/model-runtime.js +0 -93
- package/dist/agent-core/sdk/native-steer.d.ts +0 -20
- package/dist/agent-core/sdk/native-steer.js +0 -84
- package/dist/agent-core/sdk/request-preparation.d.ts +0 -7
- package/dist/agent-core/sdk/resource-input.d.ts +0 -32
- package/dist/agent-core/sdk/resource-input.js +0 -403
- package/dist/agent-core/sdk/session.d.ts +0 -94
- package/dist/agent-core/sdk/session.js +0 -2377
- package/dist/agent-core/sdk/subagent-backend.d.ts +0 -3
- package/dist/agent-core/sdk/subagent-backend.js +0 -49
- package/dist/agent-core/sdk/types.d.ts +0 -81
- package/dist/agent-core/session/catalog.d.ts +0 -99
- package/dist/agent-core/session/catalog.js +0 -200
- package/dist/agent-core/session/context-gc-checkpoint.d.ts +0 -165
- package/dist/agent-core/session/context-gc-checkpoint.js +0 -935
- package/dist/agent-core/session/context-gc-observations.d.ts +0 -60
- package/dist/agent-core/session/context-gc-observations.js +0 -187
- package/dist/agent-core/session/context-gc-replacements.d.ts +0 -62
- package/dist/agent-core/session/context-gc-subagent.d.ts +0 -53
- package/dist/agent-core/session/deferred-input.d.ts +0 -5
- package/dist/agent-core/session/deferred-input.js +0 -74
- package/dist/agent-core/session/inline-media.d.ts +0 -45
- package/dist/agent-core/session/inline-media.js +0 -163
- package/dist/agent-core/session/rollback.d.ts +0 -13
- package/dist/agent-core/session/rollback.js +0 -46
- package/dist/agent-core/session/store/contracts.d.ts +0 -158
- package/dist/agent-core/session/store/current-state.d.ts +0 -17
- package/dist/agent-core/session/store/current-state.js +0 -53
- package/dist/agent-core/session/store/directory-index.d.ts +0 -18
- package/dist/agent-core/session/store/directory-index.js +0 -169
- package/dist/agent-core/session/store/execution-state.d.ts +0 -18
- package/dist/agent-core/session/store/execution-state.js +0 -175
- package/dist/agent-core/session/store/history.d.ts +0 -25
- package/dist/agent-core/session/store/history.js +0 -181
- package/dist/agent-core/session/store/images.d.ts +0 -19
- package/dist/agent-core/session/store/images.js +0 -110
- package/dist/agent-core/session/store/index.d.ts +0 -4
- package/dist/agent-core/session/store/index.js +0 -2
- package/dist/agent-core/session/store/jsonl-store.d.ts +0 -171
- package/dist/agent-core/session/store/jsonl-store.js +0 -2078
- package/dist/agent-core/session/store/records.d.ts +0 -23
- package/dist/agent-core/session/store/records.js +0 -261
- package/dist/agent-core/session/store/resources.d.ts +0 -26
- package/dist/agent-core/session/store/resources.js +0 -197
- package/dist/agent-core/session/store/types.d.ts +0 -82
- package/dist/agent-core/session/tool-result-resources.d.ts +0 -26
- package/dist/agent-core/session/tool-result-resources.js +0 -256
- package/dist/agent-core/session/transaction-recovery.d.ts +0 -16
- package/dist/agent-core/session/transaction-recovery.js +0 -135
- package/dist/agent-core/storage/file-lock.js +0 -83
- package/dist/agent-core/subagent/contracts.d.ts +0 -117
- package/dist/agent-core/subagent/model-update.js +0 -81
- package/dist/agent-core/subagent/scheduler.d.ts +0 -135
- package/dist/agent-core/subagent/scheduler.js +0 -369
- package/dist/agent-core/subagent/session-controller.d.ts +0 -138
- package/dist/agent-core/subagent/session-controller.js +0 -1594
- package/dist/agent-core/subagent/wait.d.ts +0 -14
- package/dist/agent-core/subagent/wait.js +0 -32
- package/dist/agent-core/tools/agent/agent-cancel.d.ts +0 -7
- package/dist/agent-core/tools/agent/agent-cancel.js +0 -29
- package/dist/agent-core/tools/agent/agent-message.d.ts +0 -7
- package/dist/agent-core/tools/agent/agent-message.js +0 -57
- package/dist/agent-core/tools/agent/agent-start.d.ts +0 -12
- package/dist/agent-core/tools/agent/agent-start.js +0 -106
- package/dist/agent-core/tools/agent/agent-wait.d.ts +0 -7
- package/dist/agent-core/tools/agent/agent-wait.js +0 -91
- package/dist/agent-core/tools/agent/question.d.ts +0 -7
- package/dist/agent-core/tools/agent/question.js +0 -125
- package/dist/agent-core/tools/agent/skill.d.ts +0 -11
- package/dist/agent-core/tools/agent/skill.js +0 -38
- package/dist/agent-core/tools/agent/sleep.d.ts +0 -12
- package/dist/agent-core/tools/agent/sleep.js +0 -54
- package/dist/agent-core/tools/agent/smart-compact.d.ts +0 -9
- package/dist/agent-core/tools/agent/smart-compact.js +0 -23
- package/dist/agent-core/tools/agent/todo-read.d.ts +0 -14
- package/dist/agent-core/tools/agent/todo-write.d.ts +0 -14
- package/dist/agent-core/tools/agent/todo-write.js +0 -66
- package/dist/agent-core/tools/agent/todo.d.ts +0 -26
- package/dist/agent-core/tools/agent/todo.js +0 -60
- package/dist/agent-core/tools/callers.d.ts +0 -6
- package/dist/agent-core/tools/callers.js +0 -39
- package/dist/agent-core/tools/code-mode/cells.d.ts +0 -29
- package/dist/agent-core/tools/code-mode/cells.js +0 -337
- package/dist/agent-core/tools/code-mode/dispatch.d.ts +0 -20
- package/dist/agent-core/tools/code-mode/dispatch.js +0 -80
- package/dist/agent-core/tools/code-mode/engine.d.ts +0 -60
- package/dist/agent-core/tools/code-mode/index.d.ts +0 -29
- package/dist/agent-core/tools/code-mode/index.js +0 -749
- package/dist/agent-core/tools/code-mode/observations.d.ts +0 -98
- package/dist/agent-core/tools/code-mode/observations.js +0 -228
- package/dist/agent-core/tools/code-mode/state.d.ts +0 -9
- package/dist/agent-core/tools/code-mode/state.js +0 -82
- package/dist/agent-core/tools/contracts.d.ts +0 -211
- package/dist/agent-core/tools/definition-projection.d.ts +0 -7
- package/dist/agent-core/tools/definition-projection.js +0 -26
- package/dist/agent-core/tools/execution-limits.d.ts +0 -69
- package/dist/agent-core/tools/execution-limits.js +0 -69
- package/dist/agent-core/tools/execution.d.ts +0 -46
- package/dist/agent-core/tools/execution.js +0 -191
- package/dist/agent-core/tools/local/apply-patch-parser.js +0 -177
- package/dist/agent-core/tools/local/apply-patch.d.ts +0 -19
- package/dist/agent-core/tools/local/apply-patch.js +0 -489
- package/dist/agent-core/tools/local/exec.d.ts +0 -53
- package/dist/agent-core/tools/local/exec.js +0 -877
- package/dist/agent-core/tools/local/image-processing.js +0 -146
- package/dist/agent-core/tools/local/read-context.js +0 -152
- package/dist/agent-core/tools/local/read.d.ts +0 -43
- package/dist/agent-core/tools/local/read.js +0 -470
- package/dist/agent-core/tools/local/registry.d.ts +0 -34
- package/dist/agent-core/tools/local/registry.js +0 -132
- package/dist/agent-core/tools/local/view-image.d.ts +0 -15
- package/dist/agent-core/tools/local/view-image.js +0 -317
- package/dist/agent-core/tools/local/workspace-tools.d.ts +0 -12
- package/dist/agent-core/tools/local/workspace-tools.js +0 -28
- package/dist/agent-core/tools/mcp/catalog.js +0 -220
- package/dist/agent-core/tools/mcp/history.d.ts +0 -4
- package/dist/agent-core/tools/mcp/tool-search.d.ts +0 -45
- package/dist/agent-core/tools/mcp/tool-search.js +0 -294
- package/dist/agent-core/tools/output-projection.d.ts +0 -18
- package/dist/agent-core/tools/output-projection.js +0 -341
- package/dist/agent-core/tools/permissions.d.ts +0 -85
- package/dist/agent-core/tools/permissions.js +0 -237
- package/dist/agent-core/tools/registry.d.ts +0 -7
- package/dist/agent-core/tools/result-extensions.d.ts +0 -46
- package/dist/agent-core/tools/result-extensions.js +0 -134
- package/dist/agent-core/tools/runtime-context.d.ts +0 -74
- package/dist/agent-core/tools/runtime-resource-handles.js +0 -28
- package/dist/agent-core/tools/runtime.js +0 -77
- package/dist/agent-core/tools/scheduler.d.ts +0 -12
- package/dist/agent-core/tools/shared/path-resolver.js +0 -133
- package/dist/agent-core/tools/wait.js +0 -82
- /package/dist/{agent-core/extensions/models.js → extensions/capabilities.js} +0 -0
- /package/dist/{agent-core/extensions → extensions}/compaction.js +0 -0
- /package/dist/{agent-core/model → extensions}/contracts.js +0 -0
- /package/dist/{agent-core/extensions → extensions}/hooks.js +0 -0
- /package/dist/{agent-core/runtime/context/contracts.js → extensions/host-ports.js} +0 -0
- /package/dist/{agent-core/extensions → extensions}/operation.js +0 -0
- /package/dist/{agent-core/runtime/contracts.js → extensions/tool-runtime.js} +0 -0
- /package/dist/{agent-core/extensions/contracts.js → extensions.js} +0 -0
- /package/dist/{agent-core/runtime/events.js → host/description.js} +0 -0
- /package/dist/{agent-core/host → host}/local-session-environment.js +0 -0
- /package/dist/{agent-core/host → host}/local-shell.js +0 -0
- /package/dist/{agent-core/runtime/execution-handle.js → host/skill-contract.js} +0 -0
- /package/dist/{agent-core/model → model}/anthropic-thinking.d.ts +0 -0
- /package/dist/{agent-core/model → model}/attempt-diagnostics.d.ts +0 -0
- /package/dist/{agent-core/model → model}/attempt-diagnostics.js +0 -0
- /package/dist/{agent-core/session/store → model}/contracts.js +0 -0
- /package/dist/{agent-core/sdk/types.js → model/image-contract.js} +0 -0
- /package/dist/{agent-core/model → model}/image.js +0 -0
- /package/dist/{agent-core/model → model}/native-context.d.ts +0 -0
- /package/dist/{agent-core/model → model}/native-context.js +0 -0
- /package/dist/{agent-core/model → model}/recovery.d.ts +0 -0
- /package/dist/{agent-core/model → model}/sse.d.ts +0 -0
- /package/dist/{agent-core/model → model}/text-blocks.d.ts +0 -0
- /package/dist/{agent-core/model → model}/tool-declarations.js +0 -0
- /package/dist/{agent-core/model → model}/tool-input.d.ts +0 -0
- /package/dist/{agent-core/model → model}/tool-input.js +0 -0
- /package/dist/{agent-core/model → model}/usage-observer.js +0 -0
- /package/dist/{agent-core/session/store/types.js → model/usage.js} +0 -0
- /package/dist/{agent-core/subagent → process}/contracts.js +0 -0
- /package/dist/{agent-core/prompts → prompts}/compact.d.ts +0 -0
- /package/dist/{agent-core/prompts → prompts}/compact.js +0 -0
- /package/dist/{agent-core/prompts → prompts}/core.d.ts +0 -0
- /package/dist/{agent-core/prompts → prompts}/core.js +0 -0
- /package/dist/{agent-core/prompts → prompts}/markup.d.ts +0 -0
- /package/dist/{agent-core/prompts → prompts}/markup.js +0 -0
- /package/dist/{agent-core/prompts → prompts}/modes.d.ts +0 -0
- /package/dist/{agent-core/prompts → prompts}/modes.js +0 -0
- /package/dist/{agent-core/prompts → prompts}/output.d.ts +0 -0
- /package/dist/{agent-core/prompts → prompts}/output.js +0 -0
- /package/dist/{agent-core/prompts → prompts}/permissions.d.ts +0 -0
- /package/dist/{agent-core/prompts → prompts}/permissions.js +0 -0
- /package/dist/{agent-core/tools/local → prompts}/read-context.d.ts +0 -0
- /package/dist/{agent-core/prompts → prompts}/resources.d.ts +0 -0
- /package/dist/{agent-core/prompts → prompts}/resources.js +0 -0
- /package/dist/{agent-core/prompts → prompts}/subagent.d.ts +0 -0
- /package/dist/{agent-core/prompts → prompts}/subagent.js +0 -0
- /package/dist/{agent-core/prompts → prompts}/workflow.d.ts +0 -0
- /package/dist/{agent-core/prompts → prompts}/workflow.js +0 -0
- /package/dist/{agent-core/runtime → runtime}/async-queue.d.ts +0 -0
- /package/dist/{agent-core/runtime → runtime}/async-queue.js +0 -0
- /package/dist/{agent-core/tools → runtime/compaction}/contracts.js +0 -0
- /package/dist/{agent-core/runtime → runtime}/compaction/coordinator.d.ts +0 -0
- /package/dist/{agent-core/runtime → runtime}/compaction/history.js +0 -0
- /package/dist/{agent-core/runtime → runtime}/context/contracts.d.ts +0 -0
- /package/dist/{agent-core/session/types.js → runtime/context/contracts.js} +0 -0
- /package/dist/{agent-core/runtime → runtime}/context/environment.js +0 -0
- /package/dist/{agent-core/tools/code-mode/engine.js → runtime/context/gc-contracts.js} +0 -0
- /package/dist/{agent-core/runtime → runtime}/context/gc-runtime.js +0 -0
- /package/dist/{agent-core/runtime → runtime}/context/normalize.js +0 -0
- /package/dist/{agent-core/tools/code-mode/worker.d.ts → runtime/contracts.js} +0 -0
- /package/dist/{agent-core/tools/runtime-context.js → runtime/events.js} +0 -0
- /package/dist/{agent-core/runtime → runtime}/execution-policy.d.ts +0 -0
- /package/dist/{agent-core/runtime → runtime}/execution-policy.js +0 -0
- /package/dist/{agent-core/runtime → runtime}/model-generation-timing.d.ts +0 -0
- /package/dist/{agent-core/runtime → runtime}/model-generation-timing.js +0 -0
- /package/dist/{agent-core/runtime → runtime}/model-progress.d.ts +0 -0
- /package/dist/{agent-core/runtime → runtime}/plan-output.d.ts +0 -0
- /package/dist/{agent-core/runtime → runtime}/plan-output.js +0 -0
- /package/dist/{agent-core/tools/public-metadata.d.ts → runtime/public-tool-metadata.d.ts} +0 -0
- /package/dist/{agent-core/tools/public-metadata.js → runtime/public-tool-metadata.js} +0 -0
- /package/dist/{agent-core/runtime → runtime}/token-budget.d.ts +0 -0
- /package/dist/{agent-core/runtime → runtime}/token-budget.js +0 -0
- /package/dist/{agent-core/tools → runtime}/wait.d.ts +0 -0
- /package/dist/{agent-core/sdk → sdk}/request-preparation.js +0 -0
- /package/dist/{agent-core/session → session}/context-gc-markup.d.ts +0 -0
- /package/dist/{agent-core/session → session}/context-gc-markup.js +0 -0
- /package/dist/{agent-core/session → session}/context-gc-replacements.js +0 -0
- /package/dist/{agent-core/session → session}/context-gc-subagent.js +0 -0
- /package/dist/{agent-core/session → session}/types.d.ts +0 -0
- /package/dist/{agent-core/storage → storage}/file-lock.d.ts +0 -0
- /package/dist/{agent-core/subagent → subagent}/model-update.d.ts +0 -0
- /package/dist/{agent-core/tools → tools}/agent/todo-read.js +0 -0
- /package/dist/{agent-core/tools → tools}/code-mode/quickjs-engine.d.ts +0 -0
- /package/dist/{agent-core/tools → tools}/code-mode/quickjs-engine.js +0 -0
- /package/dist/{agent-core/tools → tools}/code-mode/text-output.d.ts +0 -0
- /package/dist/{agent-core/tools → tools}/code-mode/text-output.js +0 -0
- /package/dist/{agent-core/tools → tools}/code-mode/worker.js +0 -0
- /package/dist/{agent-core/tools → tools}/file-change-diff.d.ts +0 -0
- /package/dist/{agent-core/tools → tools}/file-change-diff.js +0 -0
- /package/dist/{agent-core/tools → tools}/input-diagnostics/source-preview.d.ts +0 -0
- /package/dist/{agent-core/tools → tools}/input-diagnostics/source-preview.js +0 -0
- /package/dist/{agent-core/tools → tools}/input.d.ts +0 -0
- /package/dist/{agent-core/tools → tools}/input.js +0 -0
- /package/dist/{agent-core/tools → tools}/local/apply-patch-parser.d.ts +0 -0
- /package/dist/{agent-core/tools → tools}/local/image-processing.d.ts +0 -0
- /package/dist/{agent-core/tools → tools}/mcp/catalog.d.ts +0 -0
- /package/dist/{agent-core/tools → tools}/mcp/history.js +0 -0
- /package/dist/{agent-core/tools → tools}/registry.js +0 -0
- /package/dist/{agent-core/tools → tools}/runtime-resource-handles.d.ts +0 -0
- /package/dist/{agent-core/tools → tools}/runtime.d.ts +0 -0
- /package/dist/{agent-core/tools → tools}/scheduler.js +0 -0
- /package/dist/{agent-core/tools → tools}/shared/patch-result.d.ts +0 -0
- /package/dist/{agent-core/tools → tools}/shared/patch-result.js +0 -0
- /package/dist/{agent-core/tools → tools}/shared/path-resolver.d.ts +0 -0
|
@@ -0,0 +1,751 @@
|
|
|
1
|
+
import { randomUUID } from 'node:crypto';
|
|
2
|
+
import { isToolPermissionFailure, permissionStopFromError, ToolPermissionStopError } from '../permissions.js';
|
|
3
|
+
import { readFile } from 'node:fs/promises';
|
|
4
|
+
import { createRequire } from 'node:module';
|
|
5
|
+
import { dirname, sep } from 'node:path';
|
|
6
|
+
import { StringDecoder } from 'node:string_decoder';
|
|
7
|
+
import { fileURLToPath, pathToFileURL } from 'node:url';
|
|
8
|
+
import { AgentError, describeAgentError } from '../../error.js';
|
|
9
|
+
import { allowsDirectTool, allowsToolCaller } from '../callers.js';
|
|
10
|
+
import { orderToolDefinitions, stableToolSchema, stableToolDefinition } from '../definition-projection.js';
|
|
11
|
+
import { CodeCells } from './cells.js';
|
|
12
|
+
import { newObservationId } from './observations.js';
|
|
13
|
+
import { renderObservations } from '../../session/code-observation-projection.js';
|
|
14
|
+
import { parseCodeModeStateMutations } from '../../session/code-state.js';
|
|
15
|
+
import { BoundedTextOutput, renderCapturedText } from './text-output.js';
|
|
16
|
+
import { TOOL_EXECUTION_LIMITS as limits } from '../execution-limits.js';
|
|
17
|
+
import { createToolCallScheduler } from '../scheduler.js';
|
|
18
|
+
import { detectImageMime } from '../local/view-image.js';
|
|
19
|
+
import { isModelImageUrl } from '../../model/image.js';
|
|
20
|
+
import { structuredToolFailureData } from '../output-projection.js';
|
|
21
|
+
import { failedToolResultExtensions } from '../result-extensions.js';
|
|
22
|
+
export const codeModeToolDefinition = {
|
|
23
|
+
name: 'code_exec',
|
|
24
|
+
description: `Run JavaScript to orchestrate or compose tool calls.
|
|
25
|
+
- Code Mode Only by default: call the programmatic tools listed below through tools.NAME, including single-tool operations. Tools explicitly exposed in both places may also be called directly; follow each tool's calling guidance. Direct-only tools remain separate model tools and cannot be called here.
|
|
26
|
+
- Run independent calls concurrently with Promise.all; await sequentially when data, side effects, or failure handling require ordering.
|
|
27
|
+
- Complete known, bounded steps and deterministic result processing in code when this avoids a model round trip. Return to the model when interpretation or a new decision is needed; do not invent extra work to fill a cell.
|
|
28
|
+
- Observe only evidence needed for the next decision or verification: use observe.result for original results, observe.text for derived values, and observe.image for image values. Preserve source and failure details needed for reasoning; keep other intermediate data in the cell.
|
|
29
|
+
- Single-tool cells are valid. Keep loops and retries bounded, and do not blindly replay operations with side effects.
|
|
30
|
+
- Evaluates source in a fresh restricted ECMAScript runtime with top-level await and Promise.all. It is not Node.js or a browser. JavaScript globals do not survive between cells; bounded JSON state is available through state.
|
|
31
|
+
- Accepts JavaScript source text. When exposed as a freeform tool, send the source directly; when exposed with a JSON input schema, put the source in its code field. Do not add another JSON wrapper, quoted string, or markdown code fence inside the source.
|
|
32
|
+
- Keep embedded commands, patches and source in JSON-escaped double-quoted strings when they contain backticks or literal \${...}; escape newlines as \\n, never put literal line breaks inside single- or double-quoted JS strings. JavaScript template literals would interpolate their contents before the tool runs. Do not paste Python literals such as None into JavaScript expressions.
|
|
33
|
+
- Use only standard ECMAScript built-ins and the explicitly documented tools, observe, state, catalog and cell namespaces. Do not use Node.js, browser or Web APIs. Module imports, filesystem and network APIs are unavailable. Obtain external capabilities only through available tools. Use tools.exec to start managed processes when permitted; use tools.exec_wait afterward to wait, write stdin or cancel.
|
|
34
|
+
|
|
35
|
+
Tool calls:
|
|
36
|
+
- tools.NAME(input) returns a Promise. Pass a JavaScript value matching the current catalog inputSchema. For parameterless tools prefer tools.NAME({}); tools.NAME() is accepted only for explicitly closed empty-object schemas.
|
|
37
|
+
- Results use the MAR envelope: { content?: string, data?: unknown, images?: Array<{mimeType:string,dataBase64:string,url?:string,urlExpiresAt?:number}>, truncated?: boolean }. Redundant JSON content is omitted when it exactly renders data; independent text remains in content. Prefer data for programmatic results: result.data.results[0].text for read source text and result.data.exitCode/result.data.stdout for exec. content, when present, is rendered text, not raw file bytes. Use only fields documented by that tool; do not invent success or ok flags.
|
|
38
|
+
- Tool errors reject with code/message and may be caught, except nested Auto deny, which skips only that call and resolves with data.error/data.message. A failed cell preserves already emitted output alongside its status and error; completed tool effects are not rolled back. Inspect it before retrying completed work. Await every call; unawaited calls fail the cell. Use Promise.all for independent calls and sequential await for dependencies. Runtime preserves safe/serial barriers and Host checks.
|
|
39
|
+
- skill, tool_search, question, code_exec, code_exec_wait and direct-only tools cannot be called here. Load Skills directly and read their instructions before the next tool call. Use direct tool_search before a later code cell for deferred tools; the current cell's tools do not change.
|
|
40
|
+
|
|
41
|
+
Built-in namespaces:
|
|
42
|
+
- observe.result(result): void registers an unmodified complete tools.NAME result or caught tool error as a trusted tool_result, using the original text and all images without repeating program data. Non-original, copied or modified values are rejected. This selects evidence for the next model response, not a log and not a new model call. Prefer observe.result for inspecting tool results.
|
|
43
|
+
- observe.text(value): void registers text/JSON values. observe.image(value): void registers one image value when image input is supported. Both accept original tool results for compatibility and use the same complete tool_result observation path; they do not select part of an original result. Extracted single images, copies and computed summaries are value observations, never trusted tool results. Observations are returned in registration order. Only explicitly observed evidence reaches the model; registration does not prove inspection. Sources and types are runtime-assigned. No out or callable observe(value) alias exists.
|
|
44
|
+
- state.get(key), state.has(key), state.set(key, value), state.delete(key) access bounded session JSON state. Mutations commit atomically only when the cell succeeds; failed or cancelled cells discard them.
|
|
45
|
+
- catalog.tools() returns a read-only array of the tools callable in this cell, including name, description and inputSchema. It does not discover or authorize additional tools.
|
|
46
|
+
- await cell.sleep(ms) performs a cancellable delay up to ${limits.codeSleepMaxMs} ms.
|
|
47
|
+
- await cell.yield_control() returns accumulated output to the model immediately while this cell continues running.
|
|
48
|
+
- Optionally start source with // @options: {"yieldMs": ${limits.codeDefaultYieldMs}}. yieldMs defaults to ${limits.codeDefaultYieldMs} ms and controls this call's wait window (0..${limits.codeMaxYieldMs}), not nested tool timeouts or wait windows. A running result includes cellId (c_ plus 12 lowercase hex characters); use direct code_exec_wait for new output, completion or termination.
|
|
49
|
+
- waitOutcome separates snapshot, completion, timeout, and yield from the cell status. A foreground steer returns interrupted with reason=steer without stopping the cell or its internal tool waits.
|
|
50
|
+
- Registered cells are Session warm resources: ending or cancelling the model Execution cancels its wait, not the cell. Reuse retained cellId; do not start duplicate work. Host cleanup or explicit termination stops the cell.
|
|
51
|
+
- tools, observe, state, catalog and cell are frozen bindings. Do not shadow their names.
|
|
52
|
+
|
|
53
|
+
Examples (copy the JavaScript source, not the fences; use only tools available in the current directory):
|
|
54
|
+
Independent reads, observing the original tool results:
|
|
55
|
+
\`\`\`js
|
|
56
|
+
const [a, b] = await Promise.all([
|
|
57
|
+
tools.read({ reads: [{ path: "a.txt" }] }),
|
|
58
|
+
tools.read({ reads: [{ path: "b.txt" }] })
|
|
59
|
+
]);
|
|
60
|
+
observe.result(a);
|
|
61
|
+
observe.result(b);
|
|
62
|
+
\`\`\`
|
|
63
|
+
Inspect before a dependent edit; successful await needs no invented success flag:
|
|
64
|
+
\`\`\`js
|
|
65
|
+
const inspected = await tools.read({ reads: [{ path: "source.txt" }] });
|
|
66
|
+
const sourceText = inspected.data.results[0].text;
|
|
67
|
+
if (!sourceText?.includes("original=1")) throw new Error("Unexpected source");
|
|
68
|
+
const patched = await tools.apply_patch({ patch: "*** Begin Patch\\n*** Update File: source.txt\\n@@\\n original=1\\n+updated=2\\n*** End Patch" });
|
|
69
|
+
observe.result(patched);
|
|
70
|
+
\`\`\``,
|
|
71
|
+
inputMode: 'freeform',
|
|
72
|
+
inputSchema: {
|
|
73
|
+
type: 'object',
|
|
74
|
+
properties: { code: { type: 'string' } },
|
|
75
|
+
required: ['code'],
|
|
76
|
+
additionalProperties: false
|
|
77
|
+
},
|
|
78
|
+
allowedCallers: ['direct'],
|
|
79
|
+
parallelSafety: 'serial'
|
|
80
|
+
};
|
|
81
|
+
export const codeExecWaitToolDefinition = {
|
|
82
|
+
name: 'code_exec_wait',
|
|
83
|
+
description: 'Wait for a retained Code Exec cell by cellId. It cannot start new work; use code_exec for that. A missing cellId does not mean code_exec is unavailable. Returns only new output, or a bounded terminal snapshot marked cached on repeat reads. yieldMs is a wait window, not a timeout. action defaults to poll (wait); action cancel stops the cell and waits for cleanup. Cancelling this wait does not cancel the cell. Cells belong to the current Session and cannot survive Host restart. Call directly, never inside code_exec. Poll results include waitOutcome; interrupted with reason=steer ends only the foreground wait and preserves the cell.',
|
|
84
|
+
inputSchema: {
|
|
85
|
+
type: 'object',
|
|
86
|
+
properties: {
|
|
87
|
+
cellId: {
|
|
88
|
+
type: 'string',
|
|
89
|
+
description: 'Copy the complete cellId returned by code_exec (c_ followed by 12 lowercase hex characters). Never use a processId (p_); use exec_wait for processes.'
|
|
90
|
+
},
|
|
91
|
+
yieldMs: {
|
|
92
|
+
type: 'integer',
|
|
93
|
+
minimum: 0,
|
|
94
|
+
maximum: limits.codeMaxWaitYieldMs,
|
|
95
|
+
default: limits.codeDefaultWaitYieldMs,
|
|
96
|
+
description: `Wait up to this many milliseconds. Defaults to ${limits.codeDefaultWaitYieldMs}; maximum ${limits.codeMaxWaitYieldMs}. Zero returns immediately without stopping the cell. Waiting does not restart the cell or extend nested tool timeouts.`
|
|
97
|
+
},
|
|
98
|
+
action: {
|
|
99
|
+
type: 'string',
|
|
100
|
+
enum: ['poll', 'cancel'],
|
|
101
|
+
description: 'Defaults to poll; cancel terminates the cell rather than just its current wait.'
|
|
102
|
+
}
|
|
103
|
+
},
|
|
104
|
+
required: ['cellId'],
|
|
105
|
+
additionalProperties: false
|
|
106
|
+
},
|
|
107
|
+
allowedCallers: ['direct'],
|
|
108
|
+
parallelSafety: 'safe'
|
|
109
|
+
};
|
|
110
|
+
function projectProgrammaticTool(tool) {
|
|
111
|
+
return {
|
|
112
|
+
name: tool.name,
|
|
113
|
+
description: `${allowsDirectTool(tool, true) ? `Call directly or as tools.${tool.name} inside code_exec.` : `Call only as tools.${tool.name} inside code_exec, never as a direct model tool.`}\nInside code_exec, pass a JavaScript value matching inputSchema.\n${tool.description}`,
|
|
114
|
+
inputSchema: stableToolSchema(tool.inputSchema)
|
|
115
|
+
};
|
|
116
|
+
}
|
|
117
|
+
/** Deferred definitions travel in search results, not in the stable Code Mode description. */
|
|
118
|
+
export function projectCodeModeTools(tools, residentTools = tools) {
|
|
119
|
+
const codeModeEnabled = tools.some((tool) => tool.name === 'code_exec' && allowsToolCaller(tool, 'direct'));
|
|
120
|
+
const direct = tools
|
|
121
|
+
.filter((tool) => allowsDirectTool(tool, codeModeEnabled))
|
|
122
|
+
.map(stableToolDefinition);
|
|
123
|
+
if (!codeModeEnabled)
|
|
124
|
+
return direct;
|
|
125
|
+
const programmatic = orderToolDefinitions(residentTools.filter((tool) => allowsToolCaller(tool, 'programmatic')));
|
|
126
|
+
const directory = JSON.stringify({
|
|
127
|
+
callableNames: programmatic.map((tool) => tool.name),
|
|
128
|
+
tools: programmatic.map(projectProgrammaticTool)
|
|
129
|
+
});
|
|
130
|
+
if (Buffer.byteLength(directory) > 32 * 1024)
|
|
131
|
+
throw new AgentError('MAR_AGENT_TOOL_EXPOSURE_LIMIT', 'Programmatic tool directory is too large.');
|
|
132
|
+
return direct.map((tool) => tool.name === 'code_exec'
|
|
133
|
+
? {
|
|
134
|
+
...tool,
|
|
135
|
+
description: `${codeModeToolDefinition.description}\nDeferred MCP definitions are returned by direct tool_search and become callable from the next model response, not later in the same response; they are not appended to this description.\nProgrammatic tools: ${directory}`
|
|
136
|
+
}
|
|
137
|
+
: tool);
|
|
138
|
+
}
|
|
139
|
+
/** Preserve native search definitions while providing the same discovery evidence to other protocols. */
|
|
140
|
+
export function projectCodeModeSearchResult(message, codeModeEnabled) {
|
|
141
|
+
if (!message.toolSearchTools)
|
|
142
|
+
return message;
|
|
143
|
+
if (!codeModeEnabled)
|
|
144
|
+
return {
|
|
145
|
+
...message,
|
|
146
|
+
toolSearchTools: message.toolSearchTools
|
|
147
|
+
.filter((tool) => allowsToolCaller(tool, 'direct'))
|
|
148
|
+
.map(stableToolDefinition)
|
|
149
|
+
};
|
|
150
|
+
const tools = message.toolSearchTools.map((tool) => ({
|
|
151
|
+
...(allowsToolCaller(tool, 'programmatic')
|
|
152
|
+
? {
|
|
153
|
+
...projectProgrammaticTool(tool),
|
|
154
|
+
...(allowsDirectTool(tool, true)
|
|
155
|
+
? { inputMode: tool.inputMode ?? 'json' }
|
|
156
|
+
: {})
|
|
157
|
+
}
|
|
158
|
+
: {
|
|
159
|
+
name: tool.name,
|
|
160
|
+
description: tool.description,
|
|
161
|
+
inputSchema: stableToolSchema(tool.inputSchema),
|
|
162
|
+
inputMode: tool.inputMode ?? 'json'
|
|
163
|
+
}),
|
|
164
|
+
caller: allowsToolCaller(tool, 'programmatic')
|
|
165
|
+
? allowsDirectTool(tool, true)
|
|
166
|
+
? 'both'
|
|
167
|
+
: 'programmatic'
|
|
168
|
+
: 'direct'
|
|
169
|
+
}));
|
|
170
|
+
return {
|
|
171
|
+
...message,
|
|
172
|
+
content: JSON.stringify({ tools }),
|
|
173
|
+
toolSearchTools: tools.map(({ caller: _caller, ...tool }) => tool)
|
|
174
|
+
};
|
|
175
|
+
}
|
|
176
|
+
function defaultEngineFactory() {
|
|
177
|
+
const core = import.meta.resolve('quickjs-emscripten-core');
|
|
178
|
+
const variant = import.meta.resolve('@jitl/quickjs-wasmfile-release-sync');
|
|
179
|
+
const ffi = pathToFileURL(createRequire(core).resolve('@jitl/quickjs-ffi-types')).href;
|
|
180
|
+
const dependencyRoot = (url) => {
|
|
181
|
+
const root = dirname(dirname(fileURLToPath(url)));
|
|
182
|
+
// pnpm's sibling dependencies are symlinks; keep the package-local node_modules tree visible.
|
|
183
|
+
return root.includes(`${sep}.pnpm${sep}`) ? dirname(dirname(root)) : root;
|
|
184
|
+
};
|
|
185
|
+
return {
|
|
186
|
+
moduleUrl: new URL('./quickjs-engine.js', import.meta.url).href,
|
|
187
|
+
runtimeDirectories: [
|
|
188
|
+
...new Set([
|
|
189
|
+
fileURLToPath(new URL('.', import.meta.url)),
|
|
190
|
+
fileURLToPath(new URL('../input-diagnostics/', import.meta.url)),
|
|
191
|
+
dependencyRoot(core),
|
|
192
|
+
dependencyRoot(variant),
|
|
193
|
+
dependencyRoot(ffi)
|
|
194
|
+
])
|
|
195
|
+
],
|
|
196
|
+
options: { coreModuleUrl: core, variantModuleUrl: variant }
|
|
197
|
+
};
|
|
198
|
+
}
|
|
199
|
+
const environmentKeys = [
|
|
200
|
+
'PATH',
|
|
201
|
+
'Path',
|
|
202
|
+
'SystemRoot',
|
|
203
|
+
'WINDIR',
|
|
204
|
+
'TEMP',
|
|
205
|
+
'TMP',
|
|
206
|
+
'LANG',
|
|
207
|
+
'LC_ALL',
|
|
208
|
+
'TZ'
|
|
209
|
+
];
|
|
210
|
+
export class CodeModeTool {
|
|
211
|
+
paths;
|
|
212
|
+
environment;
|
|
213
|
+
executor;
|
|
214
|
+
signalProcessTree;
|
|
215
|
+
engineFactory;
|
|
216
|
+
#cells = new CodeCells();
|
|
217
|
+
start(value, context) {
|
|
218
|
+
return this.#cells.start(value, context, (code, detached, output) => this.execute(code, detached, output));
|
|
219
|
+
}
|
|
220
|
+
wait(value, context) {
|
|
221
|
+
return this.#cells.wait(value, context);
|
|
222
|
+
}
|
|
223
|
+
listSessionResources(sessionId) {
|
|
224
|
+
return this.#cells.snapshot(sessionId);
|
|
225
|
+
}
|
|
226
|
+
#active = new Map();
|
|
227
|
+
constructor(paths, environment = {}, executor, signalProcessTree, engineFactory = defaultEngineFactory()) {
|
|
228
|
+
this.paths = paths;
|
|
229
|
+
this.environment = environment;
|
|
230
|
+
this.executor = executor;
|
|
231
|
+
this.signalProcessTree = signalProcessTree;
|
|
232
|
+
this.engineFactory = engineFactory;
|
|
233
|
+
}
|
|
234
|
+
async execute(value, context, output) {
|
|
235
|
+
const code = typeof value === 'string'
|
|
236
|
+
? value
|
|
237
|
+
: value &&
|
|
238
|
+
typeof value === 'object' &&
|
|
239
|
+
!Array.isArray(value) &&
|
|
240
|
+
Object.keys(value).length === 1 &&
|
|
241
|
+
'code' in value
|
|
242
|
+
? value.code
|
|
243
|
+
: undefined;
|
|
244
|
+
if (typeof code !== 'string' ||
|
|
245
|
+
!code.trim() ||
|
|
246
|
+
Buffer.byteLength(code) > limits.codeMaxInputBytes)
|
|
247
|
+
throw new AgentError('MAR_AGENT_TOOL_INPUT_INVALID', 'Code must be a nonempty JavaScript string within the cell input limit.');
|
|
248
|
+
if (!context.codeMode)
|
|
249
|
+
throw new AgentError('MAR_AGENT_TOOL_NOT_AVAILABLE', 'Code Mode tool dispatch is unavailable.');
|
|
250
|
+
context.signal.throwIfAborted();
|
|
251
|
+
if (this.#active.size >= limits.codeMaxConcurrentCells)
|
|
252
|
+
throw new AgentError('MAR_AGENT_PROCESS_LIMIT', `The Local Host shared running-cell limit (${limits.codeMaxConcurrentCells}) was reached.`);
|
|
253
|
+
const controller = new AbortController();
|
|
254
|
+
const signal = AbortSignal.any([context.signal, controller.signal]);
|
|
255
|
+
let release;
|
|
256
|
+
const done = new Promise((resolve) => {
|
|
257
|
+
release = resolve;
|
|
258
|
+
});
|
|
259
|
+
this.#active.set(controller, { sessionId: context.sessionId, done });
|
|
260
|
+
try {
|
|
261
|
+
return await this.#run(code, { ...context, signal }, controller, output);
|
|
262
|
+
}
|
|
263
|
+
finally {
|
|
264
|
+
this.#active.delete(controller);
|
|
265
|
+
release();
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
async dispose(sessionId) {
|
|
269
|
+
await this.#cells.dispose(sessionId);
|
|
270
|
+
const active = [...this.#active].filter(([, entry]) => sessionId === undefined || entry.sessionId === sessionId);
|
|
271
|
+
for (const [controller] of active)
|
|
272
|
+
controller.abort(new AgentError('MAR_AGENT_CODE_CANCELLED', 'Code Mode resources were released.'));
|
|
273
|
+
await Promise.all(active.map(([, entry]) => entry.done));
|
|
274
|
+
}
|
|
275
|
+
async #run(code, context, controller, output) {
|
|
276
|
+
const cwd = await this.paths.resolve('.');
|
|
277
|
+
context.signal.throwIfAborted();
|
|
278
|
+
const environment = Object.fromEntries(environmentKeys.flatMap((key) => {
|
|
279
|
+
const value = this.environment[key];
|
|
280
|
+
return value === undefined ? [] : [[key, value]];
|
|
281
|
+
}));
|
|
282
|
+
const child = await this.executor.spawn({
|
|
283
|
+
command: process.execPath,
|
|
284
|
+
args: [
|
|
285
|
+
`--max-old-space-size=${limits.codeHeapMegabytes}`,
|
|
286
|
+
'--input-type=module',
|
|
287
|
+
'--eval',
|
|
288
|
+
await readFile(new URL('./worker.js', import.meta.url), 'utf8')
|
|
289
|
+
],
|
|
290
|
+
cwd,
|
|
291
|
+
shell: false,
|
|
292
|
+
environment,
|
|
293
|
+
environmentKeys: Object.keys(environment),
|
|
294
|
+
runtimeDirectories: this.engineFactory.runtimeDirectories,
|
|
295
|
+
detached: process.platform !== 'win32',
|
|
296
|
+
owner: { sessionId: context.sessionId, executionId: context.executionId },
|
|
297
|
+
signal: context.signal
|
|
298
|
+
});
|
|
299
|
+
const text = new BoundedTextOutput(limits.codeMaxOutputBytes);
|
|
300
|
+
const images = [];
|
|
301
|
+
const observations = [];
|
|
302
|
+
let observationBytes = 0;
|
|
303
|
+
const appendObservation = (value, originalBytes) => {
|
|
304
|
+
const capture = new BoundedTextOutput(Math.max(0, limits.codeMaxOutputBytes - observationBytes), '');
|
|
305
|
+
const body = value.type === 'tool_result' ? value.result.content : value.value;
|
|
306
|
+
capture.append(body);
|
|
307
|
+
const bounded = capture.snapshot();
|
|
308
|
+
observationBytes += bounded.retainedBytes;
|
|
309
|
+
text.append(body, originalBytes ?? Buffer.byteLength(body));
|
|
310
|
+
output?.text(body, originalBytes ?? Buffer.byteLength(body));
|
|
311
|
+
const observation = value.type === 'tool_result'
|
|
312
|
+
? {
|
|
313
|
+
...value,
|
|
314
|
+
result: {
|
|
315
|
+
...value.result,
|
|
316
|
+
content: bounded.text,
|
|
317
|
+
truncated: value.result.truncated === true || bounded.droppedBytes > 0
|
|
318
|
+
}
|
|
319
|
+
}
|
|
320
|
+
: {
|
|
321
|
+
...value,
|
|
322
|
+
value: bounded.text,
|
|
323
|
+
truncated: value.truncated === true || bounded.droppedBytes > 0
|
|
324
|
+
};
|
|
325
|
+
observations.push(observation);
|
|
326
|
+
output?.observe(observation);
|
|
327
|
+
};
|
|
328
|
+
const toolResults = new Map();
|
|
329
|
+
let transportBytes = 0;
|
|
330
|
+
let calls = 0;
|
|
331
|
+
let complete = false;
|
|
332
|
+
let stateMutations = [];
|
|
333
|
+
let failure;
|
|
334
|
+
let stderr = '';
|
|
335
|
+
let buffered = '';
|
|
336
|
+
const decoder = new StringDecoder('utf8');
|
|
337
|
+
const seen = new Set();
|
|
338
|
+
const pending = new Set();
|
|
339
|
+
let exited;
|
|
340
|
+
const exit = new Promise((resolve) => {
|
|
341
|
+
exited = resolve;
|
|
342
|
+
});
|
|
343
|
+
const fail = (error) => {
|
|
344
|
+
if (failure === undefined)
|
|
345
|
+
failure = error;
|
|
346
|
+
if (!controller.signal.aborted)
|
|
347
|
+
controller.abort(error);
|
|
348
|
+
};
|
|
349
|
+
const abort = () => {
|
|
350
|
+
if (failure === undefined)
|
|
351
|
+
failure = context.signal.reason;
|
|
352
|
+
void this.signalProcessTree(child, 'SIGKILL').catch((error) => {
|
|
353
|
+
failure ??= error;
|
|
354
|
+
});
|
|
355
|
+
};
|
|
356
|
+
context.signal.addEventListener('abort', abort, { once: true });
|
|
357
|
+
const write = async (message) => {
|
|
358
|
+
context.signal.throwIfAborted();
|
|
359
|
+
const frame = JSON.stringify(message) + '\n';
|
|
360
|
+
const bytes = Buffer.byteLength(frame);
|
|
361
|
+
transportBytes += bytes;
|
|
362
|
+
if (bytes > limits.codeMaxFrameBytes || transportBytes > limits.codeMaxTransportBytes)
|
|
363
|
+
throw new AgentError('MAR_AGENT_TOOL_OUTPUT_LIMIT', 'Code Mode exceeded its message transfer limit.');
|
|
364
|
+
await new Promise((resolve, reject) => {
|
|
365
|
+
child.stdin.write(frame, (error) => (error ? reject(error) : resolve()));
|
|
366
|
+
});
|
|
367
|
+
};
|
|
368
|
+
const invoke = createToolCallScheduler(context.codeMode.tools, async (call) => {
|
|
369
|
+
context.signal.throwIfAborted();
|
|
370
|
+
return context.codeMode.invoke(call, context.signal);
|
|
371
|
+
});
|
|
372
|
+
const available = new Set(context
|
|
373
|
+
.codeMode.tools.filter((tool) => allowsToolCaller(tool, 'programmatic'))
|
|
374
|
+
.map((tool) => tool.name));
|
|
375
|
+
const receive = (frame) => {
|
|
376
|
+
if (complete)
|
|
377
|
+
throw new AgentError('MAR_AGENT_CODE_PROTOCOL_ERROR', 'Code Mode sent data after completion.');
|
|
378
|
+
if (frame.kind === 'observe' && frame.observation && typeof frame.observation === 'object') {
|
|
379
|
+
const value = frame.observation;
|
|
380
|
+
if (observations.length >= 4096)
|
|
381
|
+
throw new AgentError('MAR_AGENT_TOOL_OUTPUT_LIMIT', 'Too many Code Mode observations.');
|
|
382
|
+
const addImage = (raw) => {
|
|
383
|
+
if (!context.codeMode?.supportsImages)
|
|
384
|
+
throw new AgentError('MAR_AGENT_INPUT_CAPABILITY_UNSUPPORTED', 'The current model cannot receive image observations.');
|
|
385
|
+
const image = parseImage(raw);
|
|
386
|
+
const index = images.length;
|
|
387
|
+
images.push(image);
|
|
388
|
+
output?.image(image);
|
|
389
|
+
return index;
|
|
390
|
+
};
|
|
391
|
+
let observation;
|
|
392
|
+
if (value.type === 'tool_result' && typeof value.operationId === 'string') {
|
|
393
|
+
const original = toolResults.get(value.operationId);
|
|
394
|
+
if (!original)
|
|
395
|
+
throw new AgentError('MAR_AGENT_CODE_PROTOCOL_ERROR', 'Unknown observation source.');
|
|
396
|
+
const bounded = {
|
|
397
|
+
content: original.result.content,
|
|
398
|
+
truncated: original.result.truncated === true
|
|
399
|
+
};
|
|
400
|
+
const indices = original.result.images?.map(addImage);
|
|
401
|
+
const data = [
|
|
402
|
+
'apply_patch',
|
|
403
|
+
'todo_read',
|
|
404
|
+
'todo_write',
|
|
405
|
+
'agent_start',
|
|
406
|
+
'agent_wait',
|
|
407
|
+
'agent_message',
|
|
408
|
+
'agent_cancel'
|
|
409
|
+
].includes(original.source.toolName)
|
|
410
|
+
? original.result.data
|
|
411
|
+
: undefined;
|
|
412
|
+
observation = {
|
|
413
|
+
type: 'tool_result',
|
|
414
|
+
id: newObservationId(),
|
|
415
|
+
source: original.source,
|
|
416
|
+
outcome: original.outcome,
|
|
417
|
+
result: {
|
|
418
|
+
content: bounded.content,
|
|
419
|
+
truncated: original.result.truncated === true || bounded.truncated,
|
|
420
|
+
...(data === undefined ? {} : { data }),
|
|
421
|
+
...(indices?.length ? { imageIndices: indices } : {})
|
|
422
|
+
}
|
|
423
|
+
};
|
|
424
|
+
}
|
|
425
|
+
else if (value.type === 'image') {
|
|
426
|
+
observation = {
|
|
427
|
+
type: 'value',
|
|
428
|
+
id: newObservationId(),
|
|
429
|
+
format: 'image',
|
|
430
|
+
value: '',
|
|
431
|
+
imageIndices: [addImage(value.value)]
|
|
432
|
+
};
|
|
433
|
+
}
|
|
434
|
+
else if (value.type === 'value' &&
|
|
435
|
+
typeof value.value === 'string' &&
|
|
436
|
+
['text', 'json'].includes(String(value.format))) {
|
|
437
|
+
observation = {
|
|
438
|
+
type: 'value',
|
|
439
|
+
id: newObservationId(),
|
|
440
|
+
format: value.format,
|
|
441
|
+
value: value.value,
|
|
442
|
+
truncated: typeof value.originalBytes === 'number' &&
|
|
443
|
+
value.originalBytes > Buffer.byteLength(value.value)
|
|
444
|
+
};
|
|
445
|
+
}
|
|
446
|
+
else
|
|
447
|
+
throw new AgentError('MAR_AGENT_CODE_PROTOCOL_ERROR', 'Invalid observation frame.');
|
|
448
|
+
appendObservation(observation, value.type === 'value' && typeof value.originalBytes === 'number'
|
|
449
|
+
? value.originalBytes
|
|
450
|
+
: undefined);
|
|
451
|
+
}
|
|
452
|
+
else if (frame.kind === 'text' && typeof frame.value === 'string') {
|
|
453
|
+
const originalBytes = frame.originalBytes ?? Buffer.byteLength(frame.value);
|
|
454
|
+
if (!Number.isSafeInteger(originalBytes) ||
|
|
455
|
+
originalBytes < Buffer.byteLength(frame.value))
|
|
456
|
+
throw new AgentError('MAR_AGENT_CODE_PROTOCOL_ERROR', 'Code Mode sent invalid text byte counts.');
|
|
457
|
+
appendObservation({
|
|
458
|
+
type: 'value',
|
|
459
|
+
id: newObservationId(),
|
|
460
|
+
format: 'text',
|
|
461
|
+
value: frame.value,
|
|
462
|
+
truncated: originalBytes > Buffer.byteLength(frame.value)
|
|
463
|
+
}, originalBytes);
|
|
464
|
+
}
|
|
465
|
+
else if (frame.kind === 'image') {
|
|
466
|
+
if (!context.codeMode?.supportsImages)
|
|
467
|
+
throw new AgentError('MAR_AGENT_INPUT_CAPABILITY_UNSUPPORTED', 'The current Code Mode context does not support image output.');
|
|
468
|
+
const image = parseImage(frame.value);
|
|
469
|
+
images.push(image);
|
|
470
|
+
output?.image(image);
|
|
471
|
+
appendObservation({
|
|
472
|
+
type: 'value',
|
|
473
|
+
id: newObservationId(),
|
|
474
|
+
format: 'image',
|
|
475
|
+
value: '',
|
|
476
|
+
imageIndices: [images.length - 1]
|
|
477
|
+
});
|
|
478
|
+
}
|
|
479
|
+
else if (frame.kind === 'yield') {
|
|
480
|
+
output?.yield();
|
|
481
|
+
}
|
|
482
|
+
else if (frame.kind === 'call' &&
|
|
483
|
+
Number.isSafeInteger(frame.id) &&
|
|
484
|
+
typeof frame.name === 'string') {
|
|
485
|
+
const id = frame.id;
|
|
486
|
+
if (seen.has(id) || ++calls > limits.codeMaxCalls)
|
|
487
|
+
throw new AgentError('MAR_AGENT_CODE_PROTOCOL_ERROR', 'Code Mode call ID or call count is invalid.');
|
|
488
|
+
seen.add(id);
|
|
489
|
+
const source = {
|
|
490
|
+
callId: randomUUID(),
|
|
491
|
+
toolName: frame.name,
|
|
492
|
+
input: frame.arguments
|
|
493
|
+
};
|
|
494
|
+
const operationId = typeof frame.operationId === 'string' ? frame.operationId : String(id);
|
|
495
|
+
const recordCall = (value) => output?.call(value);
|
|
496
|
+
recordCall({ ...source, status: 'running' });
|
|
497
|
+
const job = (async () => {
|
|
498
|
+
try {
|
|
499
|
+
if (frame.name === 'code_exec' || !available.has(frame.name))
|
|
500
|
+
throw new AgentError('MAR_AGENT_TOOL_NOT_AVAILABLE', 'The requested nested tool is unavailable.');
|
|
501
|
+
const rawOutput = await invoke({
|
|
502
|
+
name: frame.name,
|
|
503
|
+
arguments: frame.arguments,
|
|
504
|
+
callId: source.callId
|
|
505
|
+
});
|
|
506
|
+
const { resultExtensions, ...output } = rawOutput;
|
|
507
|
+
toolResults.set(operationId, { source, outcome: 'completed', result: output });
|
|
508
|
+
recordCall({
|
|
509
|
+
...source,
|
|
510
|
+
status: 'completed',
|
|
511
|
+
...(resultExtensions ? { resultExtensions } : {}),
|
|
512
|
+
result: {
|
|
513
|
+
content: '',
|
|
514
|
+
truncated: output.truncated === true,
|
|
515
|
+
data: [
|
|
516
|
+
'apply_patch',
|
|
517
|
+
'todo_read',
|
|
518
|
+
'todo_write',
|
|
519
|
+
'agent_start',
|
|
520
|
+
'agent_wait',
|
|
521
|
+
'agent_message',
|
|
522
|
+
'agent_cancel'
|
|
523
|
+
].includes(source.toolName)
|
|
524
|
+
? output.data
|
|
525
|
+
: undefined
|
|
526
|
+
}
|
|
527
|
+
});
|
|
528
|
+
const { content, ...structured } = output;
|
|
529
|
+
const projected = output.data !== undefined && content === JSON.stringify(output.data)
|
|
530
|
+
? structured
|
|
531
|
+
: output;
|
|
532
|
+
await write({ id, ok: true, output: projected });
|
|
533
|
+
}
|
|
534
|
+
catch (error) {
|
|
535
|
+
// Serialization/transport failures cannot undo an already completed tool call.
|
|
536
|
+
if (toolResults.get(operationId)?.outcome === 'completed')
|
|
537
|
+
throw error;
|
|
538
|
+
if (context.signal.aborted)
|
|
539
|
+
return;
|
|
540
|
+
const diagnostic = describeAgentError(error, 'MAR_AGENT_HOST_OPERATION_FAILED');
|
|
541
|
+
const data = structuredToolFailureData(source.toolName, error);
|
|
542
|
+
recordCall({
|
|
543
|
+
...source,
|
|
544
|
+
status: 'failed',
|
|
545
|
+
...(failedToolResultExtensions(error)
|
|
546
|
+
? { resultExtensions: failedToolResultExtensions(error) }
|
|
547
|
+
: {}),
|
|
548
|
+
error: { code: diagnostic.code, message: diagnostic.message }
|
|
549
|
+
});
|
|
550
|
+
const failureResult = {
|
|
551
|
+
content: JSON.stringify({
|
|
552
|
+
error: diagnostic.code,
|
|
553
|
+
message: diagnostic.message,
|
|
554
|
+
...(data === undefined ? {} : { data })
|
|
555
|
+
}),
|
|
556
|
+
...(data === undefined ? {} : { data })
|
|
557
|
+
};
|
|
558
|
+
const permissionStop = permissionStopFromError(error);
|
|
559
|
+
if (isToolPermissionFailure(error))
|
|
560
|
+
failureResult.data = { error: diagnostic.code, message: diagnostic.message };
|
|
561
|
+
toolResults.set(operationId, { source, outcome: 'failed', result: failureResult });
|
|
562
|
+
if (isToolPermissionFailure(error)) {
|
|
563
|
+
await write({ id, ok: true, output: { data: failureResult.data } });
|
|
564
|
+
return;
|
|
565
|
+
}
|
|
566
|
+
if (permissionStop) {
|
|
567
|
+
fail(error);
|
|
568
|
+
return;
|
|
569
|
+
}
|
|
570
|
+
await write({
|
|
571
|
+
id,
|
|
572
|
+
ok: false,
|
|
573
|
+
error: {
|
|
574
|
+
code: diagnostic.code,
|
|
575
|
+
message: diagnostic.message
|
|
576
|
+
}
|
|
577
|
+
});
|
|
578
|
+
}
|
|
579
|
+
})().catch(fail);
|
|
580
|
+
pending.add(job);
|
|
581
|
+
void job.finally(() => pending.delete(job));
|
|
582
|
+
}
|
|
583
|
+
else if (frame.kind === 'done') {
|
|
584
|
+
// Child completion cannot undo Host tool effects from calls it did not await.
|
|
585
|
+
if (pending.size)
|
|
586
|
+
throw new AgentError('MAR_AGENT_CODE_INCOMPLETE', 'Code Mode returned with unawaited tool calls; completed operations are not rolled back.');
|
|
587
|
+
stateMutations = parseCodeModeStateMutations(frame.stateMutations);
|
|
588
|
+
complete = true;
|
|
589
|
+
void this.signalProcessTree(child, 'SIGKILL').catch(fail);
|
|
590
|
+
}
|
|
591
|
+
else if (frame.kind === 'error' && typeof frame.message === 'string') {
|
|
592
|
+
throw new AgentError(typeof frame.code === 'string' ? frame.code.slice(0, 128) : 'MAR_AGENT_CODE_FAILED', frame.message.slice(0, 4096));
|
|
593
|
+
}
|
|
594
|
+
else
|
|
595
|
+
throw new AgentError('MAR_AGENT_CODE_PROTOCOL_ERROR', 'Code Mode sent an invalid message.');
|
|
596
|
+
};
|
|
597
|
+
child.stdout.on('data', (chunk) => {
|
|
598
|
+
if (context.signal.aborted)
|
|
599
|
+
return;
|
|
600
|
+
try {
|
|
601
|
+
transportBytes += chunk.length;
|
|
602
|
+
if (transportBytes > limits.codeMaxTransportBytes ||
|
|
603
|
+
Buffer.byteLength(buffered) + chunk.length > limits.codeMaxFrameBytes)
|
|
604
|
+
throw new AgentError('MAR_AGENT_TOOL_OUTPUT_LIMIT', 'Code Mode exceeded its message transfer limit.');
|
|
605
|
+
buffered += decoder.write(chunk);
|
|
606
|
+
let end;
|
|
607
|
+
while ((end = buffered.indexOf('\n')) >= 0) {
|
|
608
|
+
const line = buffered.slice(0, end);
|
|
609
|
+
buffered = buffered.slice(end + 1);
|
|
610
|
+
let frame;
|
|
611
|
+
try {
|
|
612
|
+
frame = JSON.parse(line);
|
|
613
|
+
}
|
|
614
|
+
catch {
|
|
615
|
+
throw new AgentError('MAR_AGENT_CODE_PROTOCOL_ERROR', 'Code Mode sent invalid JSON.');
|
|
616
|
+
}
|
|
617
|
+
if (!frame || typeof frame !== 'object' || Array.isArray(frame))
|
|
618
|
+
throw new AgentError('MAR_AGENT_CODE_PROTOCOL_ERROR', 'Code Mode sent an invalid message.');
|
|
619
|
+
receive(frame);
|
|
620
|
+
}
|
|
621
|
+
}
|
|
622
|
+
catch (error) {
|
|
623
|
+
fail(error);
|
|
624
|
+
}
|
|
625
|
+
});
|
|
626
|
+
child.stderr.on('data', (chunk) => {
|
|
627
|
+
stderr = (stderr + chunk.toString('utf8')).slice(0, 4096);
|
|
628
|
+
});
|
|
629
|
+
child.stdin.on('error', (error) => {
|
|
630
|
+
if (!complete)
|
|
631
|
+
fail(error);
|
|
632
|
+
});
|
|
633
|
+
child.once('error', (error) => {
|
|
634
|
+
fail(error);
|
|
635
|
+
exited();
|
|
636
|
+
});
|
|
637
|
+
child.once('exit', (code, signal) => {
|
|
638
|
+
if (code !== 0 && !complete && failure === undefined)
|
|
639
|
+
failure = new AgentError('MAR_AGENT_CODE_FAILED', `Code Mode exited with ${signal ?? code}. ${stderr}`.trim());
|
|
640
|
+
exited();
|
|
641
|
+
});
|
|
642
|
+
try {
|
|
643
|
+
if (context.signal.aborted)
|
|
644
|
+
abort();
|
|
645
|
+
else
|
|
646
|
+
await write({
|
|
647
|
+
code,
|
|
648
|
+
tools: [...available],
|
|
649
|
+
catalog: context
|
|
650
|
+
.codeMode.tools.filter((tool) => available.has(tool.name))
|
|
651
|
+
.map((tool) => ({
|
|
652
|
+
...projectProgrammaticTool(tool),
|
|
653
|
+
...(tool.parameterless ? { parameterless: true } : {}),
|
|
654
|
+
inputMode: tool.inputMode ?? 'json'
|
|
655
|
+
})),
|
|
656
|
+
state: context.codeMode.state ?? [],
|
|
657
|
+
engine: this.engineFactory,
|
|
658
|
+
limits: {
|
|
659
|
+
memoryBytes: limits.codeMemoryBytes,
|
|
660
|
+
stackBytes: limits.codeStackBytes,
|
|
661
|
+
timeoutMs: limits.codeTimeoutMs,
|
|
662
|
+
outputBytes: limits.codeMaxOutputBytes,
|
|
663
|
+
stateEntries: limits.codeStateMaxEntries,
|
|
664
|
+
stateMutations: limits.codeStateMaxMutations,
|
|
665
|
+
stateKeyBytes: limits.codeStateMaxKeyBytes,
|
|
666
|
+
stateValueBytes: limits.codeStateMaxValueBytes,
|
|
667
|
+
stateTotalBytes: limits.codeStateMaxTotalBytes,
|
|
668
|
+
sleepMs: limits.codeSleepMaxMs
|
|
669
|
+
}
|
|
670
|
+
});
|
|
671
|
+
await exit;
|
|
672
|
+
const permissionStop = context.codeMode?.permissionStop?.();
|
|
673
|
+
if (permissionStop)
|
|
674
|
+
throw new ToolPermissionStopError(permissionStop);
|
|
675
|
+
if (failure !== undefined)
|
|
676
|
+
throw failure;
|
|
677
|
+
if (!complete)
|
|
678
|
+
throw new AgentError('MAR_AGENT_CODE_INCOMPLETE', 'Code Mode exited without a completion message.');
|
|
679
|
+
if (stateMutations.length)
|
|
680
|
+
await context.codeMode.commitState?.(stateMutations);
|
|
681
|
+
const captured = text.snapshot();
|
|
682
|
+
return {
|
|
683
|
+
content: observations.length
|
|
684
|
+
? renderObservations(observations)
|
|
685
|
+
: renderCapturedText(captured, images.length) || '[]',
|
|
686
|
+
observations,
|
|
687
|
+
data: {
|
|
688
|
+
toolCalls: calls,
|
|
689
|
+
outputBytes: captured.originalBytes,
|
|
690
|
+
outputDroppedBytes: captured.droppedBytes
|
|
691
|
+
},
|
|
692
|
+
truncated: captured.droppedBytes > 0,
|
|
693
|
+
...(images.length ? { images } : {})
|
|
694
|
+
};
|
|
695
|
+
}
|
|
696
|
+
finally {
|
|
697
|
+
controller.abort(new AgentError('MAR_AGENT_CODE_CANCELLED', 'Code Mode cell has ended.'));
|
|
698
|
+
await this.signalProcessTree(child, 'SIGKILL');
|
|
699
|
+
await exit;
|
|
700
|
+
child.stdin.destroy();
|
|
701
|
+
child.stdout.destroy();
|
|
702
|
+
child.stderr.destroy();
|
|
703
|
+
context.signal.removeEventListener('abort', abort);
|
|
704
|
+
await Promise.allSettled(pending);
|
|
705
|
+
}
|
|
706
|
+
}
|
|
707
|
+
}
|
|
708
|
+
function parseImage(value) {
|
|
709
|
+
const invalid = () => new AgentError('MAR_AGENT_IMAGE_FORMAT_UNSUPPORTED', 'Code Mode image must contain valid PNG, JPEG or WebP base64 with matching MIME.');
|
|
710
|
+
if (!value || typeof value !== 'object' || Array.isArray(value))
|
|
711
|
+
throw invalid();
|
|
712
|
+
const image = value;
|
|
713
|
+
if (Object.keys(image).some((key) => !['mimeType', 'dataBase64', 'url', 'urlExpiresAt', 'resourceId', 'byteSize'].includes(key)) ||
|
|
714
|
+
typeof image.mimeType !== 'string' ||
|
|
715
|
+
(image.resourceId !== undefined &&
|
|
716
|
+
(typeof image.resourceId !== 'string' || !/^[a-f0-9]{64}$/u.test(image.resourceId))) ||
|
|
717
|
+
(image.byteSize !== undefined &&
|
|
718
|
+
(!Number.isSafeInteger(image.byteSize) || image.byteSize <= 0)) ||
|
|
719
|
+
(image.url !== undefined && !isModelImageUrl(image.url)) ||
|
|
720
|
+
(image.urlExpiresAt !== undefined &&
|
|
721
|
+
(typeof image.urlExpiresAt !== 'number' ||
|
|
722
|
+
!Number.isSafeInteger(image.urlExpiresAt) ||
|
|
723
|
+
image.urlExpiresAt <= 0)))
|
|
724
|
+
throw invalid();
|
|
725
|
+
if (image.dataBase64 === undefined && isModelImageUrl(image.url))
|
|
726
|
+
return {
|
|
727
|
+
mimeType: image.mimeType,
|
|
728
|
+
url: image.url,
|
|
729
|
+
...(image.urlExpiresAt === undefined ? {} : { urlExpiresAt: image.urlExpiresAt }),
|
|
730
|
+
...(typeof image.resourceId === 'string' ? { resourceId: image.resourceId } : {}),
|
|
731
|
+
...(typeof image.byteSize === 'number' ? { byteSize: image.byteSize } : {})
|
|
732
|
+
};
|
|
733
|
+
if (typeof image.dataBase64 !== 'string' ||
|
|
734
|
+
image.dataBase64.length === 0 ||
|
|
735
|
+
image.dataBase64.length > Math.ceil(limits.viewImageMaxBytes / 3) * 4 ||
|
|
736
|
+
image.dataBase64.length % 4 !== 0)
|
|
737
|
+
throw invalid();
|
|
738
|
+
const bytes = Buffer.from(image.dataBase64, 'base64');
|
|
739
|
+
if (bytes.length > limits.viewImageMaxBytes ||
|
|
740
|
+
bytes.toString('base64') !== image.dataBase64 ||
|
|
741
|
+
detectImageMime(bytes) !== image.mimeType)
|
|
742
|
+
throw invalid();
|
|
743
|
+
return {
|
|
744
|
+
mimeType: image.mimeType,
|
|
745
|
+
dataBase64: image.dataBase64,
|
|
746
|
+
...(typeof image.resourceId === 'string' ? { resourceId: image.resourceId } : {}),
|
|
747
|
+
...(typeof image.byteSize === 'number' ? { byteSize: image.byteSize } : {}),
|
|
748
|
+
...(image.url === undefined ? {} : { url: image.url }),
|
|
749
|
+
...(image.urlExpiresAt === undefined ? {} : { urlExpiresAt: image.urlExpiresAt })
|
|
750
|
+
};
|
|
751
|
+
}
|