@abot-ai/runtime 1.4.0 → 1.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +20 -8
- package/dist/scripts/runtime-model-addition.d.ts +1 -1
- package/dist/scripts/runtime-model-addition.js +1 -1
- package/dist/src/bridge/start-agent-bridge.js +22 -0
- package/dist/src/capabilities/normal-invocation/contracts.d.ts +11 -0
- package/dist/src/capabilities/normal-invocation/contracts.js +1 -0
- package/dist/src/capabilities/normal-invocation/validator.js +40 -4
- package/dist/src/capabilities/result-budget.d.ts +17 -0
- package/dist/src/capabilities/result-budget.js +21 -0
- package/dist/src/capabilities/tool-context-text.d.ts +16 -0
- package/dist/src/capabilities/tool-context-text.js +30 -0
- package/dist/src/capabilities/tool-definition-validator/definition-parser.js +6 -0
- package/dist/src/capabilities/tool-definition-validator/event-input-text-options.js +3 -2
- package/dist/src/capabilities/tool-event-input-text.d.ts +1 -0
- package/dist/src/capabilities/tool-event-input-text.js +2 -1
- package/dist/src/capabilities/tool-executor.d.ts +7 -1
- package/dist/src/capabilities/tool-executor.js +33 -46
- package/dist/src/capabilities/tool-interruption.d.ts +3 -0
- package/dist/src/capabilities/tool-interruption.js +6 -0
- package/dist/src/capabilities/tool-media.d.ts +21 -0
- package/dist/src/capabilities/tool-media.js +39 -0
- package/dist/src/capabilities/tool-request-resources.d.ts +17 -0
- package/dist/src/capabilities/tool-request-resources.js +1 -0
- package/dist/src/capabilities/tool-result-normalization.d.ts +18 -0
- package/dist/src/capabilities/tool-result-normalization.js +68 -0
- package/dist/src/capabilities/tool-types.d.ts +34 -3
- package/dist/src/cli/host-companion-bundle.mjs +6688 -341
- package/dist/src/cli/host-companion-entry.js +14 -4
- package/dist/src/cli/host-companion-setup-target.d.ts +3 -0
- package/dist/src/cli/host-companion-setup-target.js +23 -0
- package/dist/src/cli/host-companion-startup.d.ts +2 -2
- package/dist/src/cli/host-companion-startup.js +23 -9
- package/dist/src/cli/host-companion.d.ts +1 -0
- package/dist/src/cli/host-companion.js +25 -19
- package/dist/src/cli/host-permissions.d.ts +7 -0
- package/dist/src/cli/host-permissions.js +24 -0
- package/dist/{plugins/system/source → src/computer-access}/application-launch.js +1 -1
- package/dist/src/computer-access/client.d.ts +19 -0
- package/dist/src/computer-access/client.js +1 -0
- package/dist/{plugins/system/source → src/computer-access}/commands.js +1 -1
- package/dist/{plugins/system/source → src/computer-access}/companion/autostart.d.ts +2 -0
- package/dist/{plugins/system/source → src/computer-access}/companion/autostart.js +19 -2
- package/dist/src/computer-access/companion/broker-client.d.ts +10 -0
- package/dist/src/computer-access/companion/broker-client.js +149 -0
- package/dist/{plugins/system/source → src/computer-access}/companion/broker-location.js +11 -3
- package/dist/{plugins/system/source → src/computer-access}/companion/broker-server.js +22 -2
- package/dist/{plugins/system/source → src/computer-access}/companion/connection.d.ts +8 -2
- package/dist/{plugins/system/source → src/computer-access}/companion/connection.js +43 -3
- package/dist/src/computer-access/companion/local-installation.d.ts +13 -0
- package/dist/src/computer-access/companion/local-installation.js +142 -0
- package/dist/src/computer-access/companion/local-setup-process.d.ts +18 -0
- package/dist/src/computer-access/companion/local-setup-process.js +127 -0
- package/dist/{plugins/system/source → src/computer-access}/companion/native-address.d.ts +2 -2
- package/dist/{plugins/system/source → src/computer-access}/companion/native-address.js +24 -7
- package/dist/src/computer-access/companion/native-build-identity.d.ts +2 -0
- package/dist/src/computer-access/companion/native-build-identity.js +8 -0
- package/dist/src/computer-access/companion/native-loopback-lookup.d.ts +7 -0
- package/dist/src/computer-access/companion/native-loopback-lookup.js +33 -0
- package/dist/{plugins/system/source → src/computer-access}/companion/native-messages.js +10 -2
- package/dist/src/computer-access/companion/native-notifications.d.ts +16 -0
- package/dist/src/computer-access/companion/native-notifications.js +84 -0
- package/dist/src/computer-access/companion/native-observations.d.ts +15 -0
- package/dist/src/computer-access/companion/native-observations.js +67 -0
- package/dist/src/computer-access/companion/native-permissions.d.ts +14 -0
- package/dist/src/computer-access/companion/native-permissions.js +49 -0
- package/dist/src/computer-access/companion/native-replacement.d.ts +19 -0
- package/dist/src/computer-access/companion/native-replacement.js +120 -0
- package/dist/src/computer-access/companion/native-runtime-installation.d.ts +15 -0
- package/dist/src/computer-access/companion/native-runtime-installation.js +218 -0
- package/dist/{plugins/system/source → src/computer-access}/companion/native-session.d.ts +5 -1
- package/dist/{plugins/system/source → src/computer-access}/companion/native-session.js +104 -13
- package/dist/{plugins/system/source → src/computer-access}/companion/native-state.d.ts +9 -4
- package/dist/{plugins/system/source → src/computer-access}/companion/native-state.js +25 -3
- package/dist/{plugins/system/source → src/computer-access}/companion/native-supervisor.d.ts +3 -0
- package/dist/src/computer-access/companion/native-supervisor.js +157 -0
- package/dist/src/computer-access/companion/notification-directory-ownership.d.ts +13 -0
- package/dist/src/computer-access/companion/notification-directory-ownership.js +112 -0
- package/dist/src/computer-access/companion/notification-directory-windows.d.ts +3 -0
- package/dist/src/computer-access/companion/notification-directory-windows.js +15 -0
- package/dist/src/computer-access/companion/notification-directory.d.ts +5 -0
- package/dist/src/computer-access/companion/notification-directory.js +72 -0
- package/dist/src/computer-access/companion/notification-installation.d.ts +10 -0
- package/dist/src/computer-access/companion/notification-installation.js +201 -0
- package/dist/src/computer-access/companion/notification-linux.d.ts +20 -0
- package/dist/src/computer-access/companion/notification-linux.js +207 -0
- package/dist/src/computer-access/companion/notification-locations.d.ts +12 -0
- package/dist/src/computer-access/companion/notification-locations.js +20 -0
- package/dist/src/computer-access/companion/notification-macos-bundle.d.ts +3 -0
- package/dist/src/computer-access/companion/notification-macos-bundle.js +84 -0
- package/dist/src/computer-access/companion/notification-macos.d.ts +11 -0
- package/dist/src/computer-access/companion/notification-macos.js +143 -0
- package/dist/src/computer-access/companion/notification-process.d.ts +10 -0
- package/dist/src/computer-access/companion/notification-process.js +49 -0
- package/dist/src/computer-access/companion/notification-protocol.d.ts +15 -0
- package/dist/src/computer-access/companion/notification-protocol.js +92 -0
- package/dist/src/computer-access/companion/notification-readiness-state.d.ts +9 -0
- package/dist/src/computer-access/companion/notification-readiness-state.js +32 -0
- package/dist/src/computer-access/companion/notification-readiness.d.ts +4 -0
- package/dist/src/computer-access/companion/notification-readiness.js +37 -0
- package/dist/src/computer-access/companion/notification-windows.d.ts +5 -0
- package/dist/src/computer-access/companion/notification-windows.js +137 -0
- package/dist/src/computer-access/companion/observation-broker.d.ts +4 -0
- package/dist/src/computer-access/companion/observation-broker.js +61 -0
- package/dist/src/computer-access/companion/observation-capture-policy.d.ts +7 -0
- package/dist/src/computer-access/companion/observation-capture-policy.js +7 -0
- package/dist/src/computer-access/companion/observation-client.d.ts +4 -0
- package/dist/src/computer-access/companion/observation-client.js +107 -0
- package/dist/src/computer-access/companion/observation-connection.d.ts +24 -0
- package/dist/src/computer-access/companion/observation-connection.js +120 -0
- package/dist/src/computer-access/companion/observation-filter.d.ts +12 -0
- package/dist/src/computer-access/companion/observation-filter.js +180 -0
- package/dist/src/computer-access/companion/observation-linux.d.ts +1 -0
- package/dist/src/computer-access/companion/observation-linux.js +228 -0
- package/dist/src/computer-access/companion/observation-macos-permission.d.ts +2 -0
- package/dist/src/computer-access/companion/observation-macos-permission.js +26 -0
- package/dist/src/computer-access/companion/observation-macos.d.ts +1 -0
- package/dist/src/computer-access/companion/observation-macos.js +189 -0
- package/dist/src/computer-access/companion/observation-process.d.ts +16 -0
- package/dist/src/computer-access/companion/observation-process.js +154 -0
- package/dist/src/computer-access/companion/observation-protocol.d.ts +16 -0
- package/dist/src/computer-access/companion/observation-protocol.js +95 -0
- package/dist/src/computer-access/companion/observation-redaction.d.ts +9 -0
- package/dist/src/computer-access/companion/observation-redaction.js +140 -0
- package/dist/src/computer-access/companion/observation-windows.d.ts +1 -0
- package/dist/src/computer-access/companion/observation-windows.js +173 -0
- package/dist/{plugins/system/source → src/computer-access}/companion/pairing-store.d.ts +6 -0
- package/dist/{plugins/system/source → src/computer-access}/companion/pairing-store.js +44 -0
- package/dist/src/computer-access/companion/permission-protocol.d.ts +22 -0
- package/dist/src/computer-access/companion/permission-protocol.js +45 -0
- package/dist/{plugins/system/source → src/computer-access}/companion/process-owner-identity.d.ts +1 -0
- package/dist/{plugins/system/source → src/computer-access}/companion/process-owner-identity.js +14 -4
- package/dist/{plugins/system/source → src/computer-access}/companion/protocol.d.ts +19 -3
- package/dist/{plugins/system/source → src/computer-access}/companion/protocol.js +16 -0
- package/dist/src/computer-access/companion/release-version.d.ts +7 -0
- package/dist/src/computer-access/companion/release-version.js +12 -0
- package/dist/src/computer-access/companion/spark-notification-query.d.ts +2 -0
- package/dist/src/computer-access/companion/spark-notification-query.js +62 -0
- package/dist/src/computer-access/computer/action-input.d.ts +8 -0
- package/dist/src/computer-access/computer/action-input.js +107 -0
- package/dist/src/computer-access/computer/companion-backend.d.ts +3 -0
- package/dist/src/computer-access/computer/companion-backend.js +73 -0
- package/dist/src/computer-access/computer/companion-sessions.d.ts +25 -0
- package/dist/src/computer-access/computer/companion-sessions.js +189 -0
- package/dist/src/computer-access/computer/desktop-action-queue.d.ts +1 -0
- package/dist/src/computer-access/computer/desktop-action-queue.js +41 -0
- package/dist/src/computer-access/computer/linux-backend.d.ts +3 -0
- package/dist/src/computer-access/computer/linux-backend.js +16 -0
- package/dist/src/computer-access/computer/linux-desktop.d.ts +1 -0
- package/dist/src/computer-access/computer/linux-desktop.js +165 -0
- package/dist/src/computer-access/computer/linux-frame.d.ts +2 -0
- package/dist/src/computer-access/computer/linux-frame.js +29 -0
- package/dist/src/computer-access/computer/linux-helper.d.ts +1 -0
- package/dist/src/computer-access/computer/linux-helper.js +161 -0
- package/dist/src/computer-access/computer/linux-input.d.ts +2 -0
- package/dist/src/computer-access/computer/linux-input.js +174 -0
- package/dist/src/computer-access/computer/linux-portal-source.d.ts +2 -0
- package/dist/src/computer-access/computer/linux-portal-source.js +62 -0
- package/dist/src/computer-access/computer/linux-portal.d.ts +2 -0
- package/dist/src/computer-access/computer/linux-portal.js +268 -0
- package/dist/src/computer-access/computer/linux-topology.d.ts +2 -0
- package/dist/src/computer-access/computer/linux-topology.js +92 -0
- package/dist/src/computer-access/computer/linux-x11.d.ts +2 -0
- package/dist/src/computer-access/computer/linux-x11.js +217 -0
- package/dist/src/computer-access/computer/macos-backend.d.ts +3 -0
- package/dist/src/computer-access/computer/macos-backend.js +28 -0
- package/dist/src/computer-access/computer/macos-capture.d.ts +1 -0
- package/dist/src/computer-access/computer/macos-capture.js +117 -0
- package/dist/src/computer-access/computer/macos-desktop.d.ts +1 -0
- package/dist/src/computer-access/computer/macos-desktop.js +185 -0
- package/dist/src/computer-access/computer/macos-helper.d.ts +1 -0
- package/dist/src/computer-access/computer/macos-helper.js +117 -0
- package/dist/src/computer-access/computer/macos-input.d.ts +1 -0
- package/dist/src/computer-access/computer/macos-input.js +264 -0
- package/dist/src/computer-access/computer/macos-permission-helper.d.ts +4 -0
- package/dist/src/computer-access/computer/macos-permission-helper.js +38 -0
- package/dist/src/computer-access/computer/macos-prerequisites.d.ts +2 -0
- package/dist/src/computer-access/computer/macos-prerequisites.js +25 -0
- package/dist/src/computer-access/computer/macos-topology.d.ts +2 -0
- package/dist/src/computer-access/computer/macos-topology.js +34 -0
- package/dist/src/computer-access/computer/native-backend.d.ts +3 -0
- package/dist/src/computer-access/computer/native-backend.js +10 -0
- package/dist/src/computer-access/computer/native-protocol.d.ts +129 -0
- package/dist/src/computer-access/computer/native-protocol.js +1 -0
- package/dist/src/computer-access/computer/native-validation.d.ts +7 -0
- package/dist/src/computer-access/computer/native-validation.js +152 -0
- package/dist/src/computer-access/computer/unix-native-process.d.ts +12 -0
- package/dist/src/computer-access/computer/unix-native-process.js +155 -0
- package/dist/src/computer-access/computer/unix-native-results.d.ts +7 -0
- package/dist/src/computer-access/computer/unix-native-results.js +73 -0
- package/dist/src/computer-access/computer/windows-accessibility-script.d.ts +2 -0
- package/dist/src/computer-access/computer/windows-accessibility-script.js +87 -0
- package/dist/src/computer-access/computer/windows-backend.d.ts +7 -0
- package/dist/src/computer-access/computer/windows-backend.js +50 -0
- package/dist/src/computer-access/computer/windows-capture-script.d.ts +2 -0
- package/dist/src/computer-access/computer/windows-capture-script.js +69 -0
- package/dist/src/computer-access/computer/windows-desktop-script.d.ts +2 -0
- package/dist/src/computer-access/computer/windows-desktop-script.js +129 -0
- package/dist/src/computer-access/computer/windows-helper-process.d.ts +18 -0
- package/dist/src/computer-access/computer/windows-helper-process.js +93 -0
- package/dist/src/computer-access/computer/windows-helper-script.d.ts +2 -0
- package/dist/src/computer-access/computer/windows-helper-script.js +17 -0
- package/dist/src/computer-access/computer/windows-input-script.d.ts +2 -0
- package/dist/src/computer-access/computer/windows-input-script.js +171 -0
- package/dist/src/computer-access/computer/windows-keyboard-script.d.ts +2 -0
- package/dist/src/computer-access/computer/windows-keyboard-script.js +81 -0
- package/dist/src/computer-access/computer/windows-native-script.d.ts +2 -0
- package/dist/src/computer-access/computer/windows-native-script.js +157 -0
- package/dist/src/computer-access/computer/windows-result.d.ts +4 -0
- package/dist/src/computer-access/computer/windows-result.js +105 -0
- package/dist/src/computer-access/computer/windows-topology-script.d.ts +2 -0
- package/dist/src/computer-access/computer/windows-topology-script.js +80 -0
- package/dist/{plugins/system/source → src/computer-access}/handlers.d.ts +1 -1
- package/dist/{plugins/system/source → src/computer-access}/handlers.js +1 -1
- package/dist/{plugins/system/source → src/computer-access}/host-evidence.d.ts +1 -1
- package/dist/{plugins/system/source → src/computer-access}/host-evidence.js +1 -1
- package/dist/{plugins/system/source → src/computer-access}/host-observation.d.ts +3 -3
- package/dist/src/computer-access/native-permission-contract.d.ts +23 -0
- package/dist/src/computer-access/native-permission-contract.js +38 -0
- package/dist/{plugins/system/source → src/computer-access}/process-result.d.ts +1 -1
- package/dist/{plugins/system/source → src/computer-access}/process-result.js +1 -1
- package/dist/src/model-gateway/client/chat.js +5 -2
- package/dist/src/model-gateway/client/input-token-count.js +2 -1
- package/dist/src/model-gateway/client/message-projection.js +1 -0
- package/dist/src/model-gateway/client/raw.js +5 -3
- package/dist/src/model-gateway/observability/content-trace-policy.d.ts +2 -0
- package/dist/src/model-gateway/observability/content-trace-policy.js +7 -0
- package/dist/src/model-gateway/observability/provider-trace.js +17 -4
- package/dist/src/model-gateway/observability/tool-media-privacy.d.ts +6 -0
- package/dist/src/model-gateway/observability/tool-media-privacy.js +50 -0
- package/dist/src/model-gateway/policy/invocation-policy.js +10 -1
- package/dist/src/model-gateway/protocol/message-contract.js +16 -2
- package/dist/src/model-gateway/providers/ollama/adapter.js +6 -5
- package/dist/src/model-gateway/providers/ollama/message-projection.js +2 -0
- package/dist/src/model-gateway/providers/openai/adapter.js +10 -7
- package/dist/src/model-gateway/providers/openai/image-content.d.ts +8 -0
- package/dist/src/model-gateway/providers/openai/image-content.js +28 -0
- package/dist/src/model-gateway/providers/openai/input-token-count.js +3 -2
- package/dist/src/model-gateway/providers/openai/payload.js +13 -2
- package/dist/src/model-gateway/structured-output/ollama-format.js +5 -0
- package/dist/src/model-gateway/structured-output/openai-format.js +5 -0
- package/dist/src/model-gateway/types.d.ts +8 -1
- package/dist/src/plugin-contract/manifest.d.ts +2 -1
- package/dist/src/plugin-sdk/computer-access.d.ts +13 -0
- package/dist/src/plugin-sdk/computer-access.js +11 -0
- package/dist/src/plugin-sdk/context-text-result.d.ts +10 -0
- package/dist/src/plugin-sdk/context-text-result.js +19 -0
- package/dist/src/plugin-sdk/index.d.ts +3 -0
- package/dist/src/plugin-sdk/index.js +2 -0
- package/dist/src/plugin-sdk/results.d.ts +8 -5
- package/dist/src/plugin-sdk/results.js +37 -10
- package/dist/src/runtime/adapters/co-worker-resources.d.ts +15 -0
- package/dist/src/runtime/adapters/co-worker-resources.js +74 -0
- package/dist/src/runtime/adapters/config-file-transaction.js +7 -0
- package/dist/src/runtime/adapters/default-session-adapters.d.ts +1 -1
- package/dist/src/runtime/adapters/file-session-store.js +8 -0
- package/dist/src/runtime/adapters/in-memory-session-store.js +14 -1
- package/dist/src/runtime/adapters/long-term-memory/file-repository.js +2 -0
- package/dist/src/runtime/adapters/long-term-memory/migration-backup.d.ts +3 -0
- package/dist/src/runtime/adapters/long-term-memory/migration-backup.js +44 -0
- package/dist/src/runtime/adapters/long-term-memory/onboarding-service.d.ts +2 -1
- package/dist/src/runtime/adapters/long-term-memory/onboarding-service.js +5 -4
- package/dist/src/runtime/adapters/passive-learning-runtime.d.ts +29 -0
- package/dist/src/runtime/adapters/passive-learning-runtime.js +28 -0
- package/dist/src/runtime/adapters/registered-tool-normal-invocations/execution/approval.d.ts +4 -1
- package/dist/src/runtime/adapters/registered-tool-normal-invocations/execution/approval.js +25 -16
- package/dist/src/runtime/adapters/registered-tool-normal-invocations/execution/prepared-execution.d.ts +16 -0
- package/dist/src/runtime/adapters/registered-tool-normal-invocations/execution/prepared-execution.js +203 -0
- package/dist/src/runtime/adapters/registered-tool-normal-invocations/execution/prepared-snapshot.d.ts +28 -0
- package/dist/src/runtime/adapters/registered-tool-normal-invocations/execution/prepared-snapshot.js +118 -0
- package/dist/src/runtime/adapters/registered-tool-normal-invocations/execution/result-budget.d.ts +11 -0
- package/dist/src/runtime/adapters/registered-tool-normal-invocations/execution/result-budget.js +30 -0
- package/dist/src/runtime/adapters/registered-tool-normal-invocations/execution/run.js +13 -86
- package/dist/src/runtime/adapters/registered-tool-normal-invocations/execution/tool-media-execution.d.ts +12 -0
- package/dist/src/runtime/adapters/registered-tool-normal-invocations/execution/tool-media-execution.js +30 -0
- package/dist/src/runtime/adapters/registered-tool-normal-invocations/executor.js +2 -0
- package/dist/src/runtime/adapters/registered-tool-normal-invocations/shared/contracts.d.ts +36 -2
- package/dist/src/runtime/adapters/registered-tool-payload-plan.d.ts +3 -3
- package/dist/src/runtime/adapters/registered-tool-payload-plan.js +4 -4
- package/dist/src/runtime/adapters/registered-tool-worker-capabilities/contracts.d.ts +4 -0
- package/dist/src/runtime/adapters/registered-tool-worker-capabilities/execution.js +30 -58
- package/dist/src/runtime/adapters/registered-tool-worker-capabilities/payload-authoring-result.js +4 -18
- package/dist/src/runtime/adapters/registered-tool-worker-capabilities/payload-observability.js +1 -1
- package/dist/src/runtime/adapters/registered-tool-worker-capabilities/prepared-execution.d.ts +17 -0
- package/dist/src/runtime/adapters/registered-tool-worker-capabilities/prepared-execution.js +65 -0
- package/dist/src/runtime/adapters/registered-tool-worker-capabilities/prepared-snapshot.d.ts +15 -0
- package/dist/src/runtime/adapters/registered-tool-worker-capabilities/prepared-snapshot.js +53 -0
- package/dist/src/runtime/adapters/registered-tool-worker-capabilities/result-envelope.d.ts +13 -0
- package/dist/src/runtime/adapters/registered-tool-worker-capabilities/result-envelope.js +15 -0
- package/dist/src/runtime/adapters/registered-tool-worker-capabilities/result-evidence.d.ts +3 -7
- package/dist/src/runtime/adapters/registered-tool-worker-capabilities/result-evidence.js +16 -45
- package/dist/src/runtime/adapters/registered-tool-worker-capabilities/result-observer.d.ts +2 -1
- package/dist/src/runtime/adapters/registered-tool-worker-capabilities/result-observer.js +14 -6
- package/dist/src/runtime/adapters/registered-tool-worker-capabilities/result-references.d.ts +9 -0
- package/dist/src/runtime/adapters/registered-tool-worker-capabilities/result-references.js +29 -0
- package/dist/src/runtime/adapters/registered-tool-worker-capabilities.js +2 -0
- package/dist/src/runtime/adapters/scheduler-executor-dispatch.d.ts +11 -0
- package/dist/src/runtime/adapters/scheduler-executor-dispatch.js +10 -0
- package/dist/src/runtime/adapters/scheduler-runtime.d.ts +3 -1
- package/dist/src/runtime/adapters/scheduler-runtime.js +31 -11
- package/dist/src/runtime/attachments/request-tool-media-snapshot.d.ts +23 -0
- package/dist/src/runtime/attachments/request-tool-media-snapshot.js +101 -0
- package/dist/src/runtime/attachments/request-tool-media.d.ts +36 -0
- package/dist/src/runtime/attachments/request-tool-media.js +119 -0
- package/dist/src/runtime/attachments/tool-image-validation.d.ts +6 -0
- package/dist/src/runtime/attachments/tool-image-validation.js +83 -0
- package/dist/src/runtime/automations/agent-assignment.d.ts +8 -0
- package/dist/src/runtime/automations/agent-assignment.js +29 -0
- package/dist/src/runtime/automations/agent-request-failure.d.ts +2 -0
- package/dist/src/runtime/automations/agent-request-failure.js +74 -0
- package/dist/src/runtime/automations/agent-session-lifetime.d.ts +11 -0
- package/dist/src/runtime/automations/agent-session-lifetime.js +46 -0
- package/dist/src/runtime/automations/agent-step-executor.d.ts +35 -0
- package/dist/src/runtime/automations/agent-step-executor.js +278 -0
- package/dist/src/runtime/automations/agent-tool-scope.d.ts +4 -0
- package/dist/src/runtime/automations/agent-tool-scope.js +73 -0
- package/dist/src/runtime/automations/archive-management.d.ts +26 -0
- package/dist/src/runtime/automations/archive-management.js +50 -0
- package/dist/src/runtime/automations/binding-resolution.d.ts +28 -0
- package/dist/src/runtime/automations/binding-resolution.js +115 -0
- package/dist/src/runtime/automations/branch-result-projection.d.ts +4 -0
- package/dist/src/runtime/automations/branch-result-projection.js +15 -0
- package/dist/src/runtime/automations/catalog.d.ts +76 -0
- package/dist/src/runtime/automations/catalog.js +67 -0
- package/dist/src/runtime/automations/definition-contracts.d.ts +128 -0
- package/dist/src/runtime/automations/definition-contracts.js +1 -0
- package/dist/src/runtime/automations/definition-input.d.ts +3 -0
- package/dist/src/runtime/automations/definition-input.js +283 -0
- package/dist/src/runtime/automations/dependency-fingerprint.d.ts +9 -0
- package/dist/src/runtime/automations/dependency-fingerprint.js +55 -0
- package/dist/src/runtime/automations/draft-batch-aliases.d.ts +12 -0
- package/dist/src/runtime/automations/draft-batch-aliases.js +94 -0
- package/dist/src/runtime/automations/draft-batch.d.ts +29 -0
- package/dist/src/runtime/automations/draft-batch.js +147 -0
- package/dist/src/runtime/automations/draft-management.d.ts +53 -0
- package/dist/src/runtime/automations/draft-management.js +164 -0
- package/dist/src/runtime/automations/draft-mutations.d.ts +29 -0
- package/dist/src/runtime/automations/draft-mutations.js +219 -0
- package/dist/src/runtime/automations/draft-restoration.d.ts +11 -0
- package/dist/src/runtime/automations/draft-restoration.js +44 -0
- package/dist/src/runtime/automations/effect-admission-lifetime.d.ts +9 -0
- package/dist/src/runtime/automations/effect-admission-lifetime.js +31 -0
- package/dist/src/runtime/automations/failure-policy.d.ts +8 -0
- package/dist/src/runtime/automations/failure-policy.js +9 -0
- package/dist/src/runtime/automations/graph-executor.d.ts +23 -0
- package/dist/src/runtime/automations/graph-executor.js +227 -0
- package/dist/src/runtime/automations/graph-validation.d.ts +29 -0
- package/dist/src/runtime/automations/graph-validation.js +271 -0
- package/dist/src/runtime/automations/input-batch-selection.d.ts +7 -0
- package/dist/src/runtime/automations/input-batch-selection.js +42 -0
- package/dist/src/runtime/automations/input-capacity.d.ts +9 -0
- package/dist/src/runtime/automations/input-capacity.js +38 -0
- package/dist/src/runtime/automations/input-ledger.d.ts +45 -0
- package/dist/src/runtime/automations/input-ledger.js +147 -0
- package/dist/src/runtime/automations/late-settlement.d.ts +9 -0
- package/dist/src/runtime/automations/late-settlement.js +42 -0
- package/dist/src/runtime/automations/limits.d.ts +25 -0
- package/dist/src/runtime/automations/limits.js +41 -0
- package/dist/src/runtime/automations/model-capacity.d.ts +9 -0
- package/dist/src/runtime/automations/model-capacity.js +67 -0
- package/dist/src/runtime/automations/model-dependency-projection.d.ts +56 -0
- package/dist/src/runtime/automations/model-dependency-projection.js +88 -0
- package/dist/src/runtime/automations/node-transactions.d.ts +57 -0
- package/dist/src/runtime/automations/node-transactions.js +223 -0
- package/dist/src/runtime/automations/occurrence-preparation.d.ts +12 -0
- package/dist/src/runtime/automations/occurrence-preparation.js +257 -0
- package/dist/src/runtime/automations/permission-grants.d.ts +27 -0
- package/dist/src/runtime/automations/permission-grants.js +72 -0
- package/dist/src/runtime/automations/persistence.d.ts +9 -0
- package/dist/src/runtime/automations/persistence.js +13 -0
- package/dist/src/runtime/automations/publication-validation.d.ts +16 -0
- package/dist/src/runtime/automations/publication-validation.js +162 -0
- package/dist/src/runtime/automations/publication.d.ts +33 -0
- package/dist/src/runtime/automations/publication.js +97 -0
- package/dist/src/runtime/automations/replay-preparation.d.ts +7 -0
- package/dist/src/runtime/automations/replay-preparation.js +59 -0
- package/dist/src/runtime/automations/result-capacity.d.ts +5 -0
- package/dist/src/runtime/automations/result-capacity.js +9 -0
- package/dist/src/runtime/automations/result-publication.d.ts +10 -0
- package/dist/src/runtime/automations/result-publication.js +21 -0
- package/dist/src/runtime/automations/result-store.d.ts +17 -0
- package/dist/src/runtime/automations/result-store.js +109 -0
- package/dist/src/runtime/automations/retention.d.ts +12 -0
- package/dist/src/runtime/automations/retention.js +134 -0
- package/dist/src/runtime/automations/run-file-binding.d.ts +3 -0
- package/dist/src/runtime/automations/run-file-binding.js +19 -0
- package/dist/src/runtime/automations/run-output-summary.d.ts +25 -0
- package/dist/src/runtime/automations/run-output-summary.js +54 -0
- package/dist/src/runtime/automations/run-report.d.ts +83 -0
- package/dist/src/runtime/automations/run-report.js +121 -0
- package/dist/src/runtime/automations/runtime-executor.d.ts +16 -0
- package/dist/src/runtime/automations/runtime-executor.js +260 -0
- package/dist/src/runtime/automations/saved-agent-management.d.ts +16 -0
- package/dist/src/runtime/automations/saved-agent-management.js +94 -0
- package/dist/src/runtime/automations/service.d.ts +286 -0
- package/dist/src/runtime/automations/service.js +330 -0
- package/dist/src/runtime/automations/snapshot-staging.d.ts +13 -0
- package/dist/src/runtime/automations/snapshot-staging.js +126 -0
- package/dist/src/runtime/automations/source-attachment-access.d.ts +23 -0
- package/dist/src/runtime/automations/source-attachment-access.js +70 -0
- package/dist/src/runtime/automations/source-discovery.d.ts +25 -0
- package/dist/src/runtime/automations/source-discovery.js +179 -0
- package/dist/src/runtime/automations/starter-template-builder.d.ts +5 -0
- package/dist/src/runtime/automations/starter-template-builder.js +78 -0
- package/dist/src/runtime/automations/starter-template-contracts.d.ts +42 -0
- package/dist/src/runtime/automations/starter-template-contracts.js +1 -0
- package/dist/src/runtime/automations/starter-template-definitions.d.ts +3 -0
- package/dist/src/runtime/automations/starter-template-definitions.js +100 -0
- package/dist/src/runtime/automations/starter-template-showcases.d.ts +3 -0
- package/dist/src/runtime/automations/starter-template-showcases.js +154 -0
- package/dist/src/runtime/automations/starter-template-structure.d.ts +4 -0
- package/dist/src/runtime/automations/starter-template-structure.js +11 -0
- package/dist/src/runtime/automations/starter-templates.d.ts +20 -0
- package/dist/src/runtime/automations/starter-templates.js +75 -0
- package/dist/src/runtime/automations/step-evidence-effects.d.ts +46 -0
- package/dist/src/runtime/automations/step-evidence-effects.js +173 -0
- package/dist/src/runtime/automations/step-evidence-inputs.d.ts +22 -0
- package/dist/src/runtime/automations/step-evidence-inputs.js +105 -0
- package/dist/src/runtime/automations/step-evidence-output.d.ts +17 -0
- package/dist/src/runtime/automations/step-evidence-output.js +43 -0
- package/dist/src/runtime/automations/step-evidence.d.ts +24 -0
- package/dist/src/runtime/automations/step-evidence.js +53 -0
- package/dist/src/runtime/automations/step-interruption.d.ts +3 -0
- package/dist/src/runtime/automations/step-interruption.js +26 -0
- package/dist/src/runtime/automations/step-runner.d.ts +57 -0
- package/dist/src/runtime/automations/step-runner.js +278 -0
- package/dist/src/runtime/automations/storage-records.d.ts +133 -0
- package/dist/src/runtime/automations/storage-records.js +286 -0
- package/dist/src/runtime/automations/terminal-admission-receipt.d.ts +12 -0
- package/dist/src/runtime/automations/terminal-admission-receipt.js +39 -0
- package/dist/src/runtime/automations/tool-lifetimes.d.ts +13 -0
- package/dist/src/runtime/automations/tool-lifetimes.js +56 -0
- package/dist/src/runtime/automations/tool-step-executor.d.ts +32 -0
- package/dist/src/runtime/automations/tool-step-executor.js +136 -0
- package/dist/src/runtime/automations/tool-step-outcome.d.ts +24 -0
- package/dist/src/runtime/automations/tool-step-outcome.js +32 -0
- package/dist/src/runtime/automations/trigger-schedule.d.ts +7 -0
- package/dist/src/runtime/automations/trigger-schedule.js +19 -0
- package/dist/src/runtime/automations/working-directory.d.ts +3 -0
- package/dist/src/runtime/automations/working-directory.js +13 -0
- package/dist/src/runtime/capabilities/automation-builder/authoring-reference.d.ts +422 -0
- package/dist/src/runtime/capabilities/automation-builder/authoring-reference.js +130 -0
- package/dist/src/runtime/capabilities/automation-builder/creation-recipe.d.ts +9 -0
- package/dist/src/runtime/capabilities/automation-builder/creation-recipe.js +155 -0
- package/dist/src/runtime/capabilities/automation-builder/payload-instructions.d.ts +6 -0
- package/dist/src/runtime/capabilities/automation-builder/payload-instructions.js +6 -0
- package/dist/src/runtime/capabilities/automation-builder/payload-schema.d.ts +3 -0
- package/dist/src/runtime/capabilities/automation-builder/payload-schema.js +105 -0
- package/dist/src/runtime/capabilities/automation-builder/tool-contract.d.ts +65 -0
- package/dist/src/runtime/capabilities/automation-builder/tool-contract.js +27 -0
- package/dist/src/runtime/capabilities/automation-builder/tool-module.d.ts +4 -0
- package/dist/src/runtime/capabilities/automation-builder/tool-module.js +108 -0
- package/dist/src/runtime/capabilities/automations/authoring-catalog-contract.d.ts +78 -0
- package/dist/src/runtime/capabilities/automations/authoring-catalog-contract.js +28 -0
- package/dist/src/runtime/capabilities/automations/authoring-catalog.d.ts +320 -0
- package/dist/src/runtime/capabilities/automations/authoring-catalog.js +158 -0
- package/dist/src/runtime/capabilities/automations/authoring-input-contracts.d.ts +140 -0
- package/dist/src/runtime/capabilities/automations/authoring-input-contracts.js +36 -0
- package/dist/src/runtime/capabilities/automations/authoring-inputs.d.ts +9 -0
- package/dist/src/runtime/capabilities/automations/authoring-inputs.js +86 -0
- package/dist/src/runtime/capabilities/automations/authoring-preparation-limits.d.ts +5 -0
- package/dist/src/runtime/capabilities/automations/authoring-preparation-limits.js +5 -0
- package/dist/src/runtime/capabilities/automations/authoring-preparation.d.ts +483 -0
- package/dist/src/runtime/capabilities/automations/authoring-preparation.js +51 -0
- package/dist/src/runtime/capabilities/automations/draft-index.d.ts +14 -0
- package/dist/src/runtime/capabilities/automations/draft-index.js +26 -0
- package/dist/src/runtime/capabilities/automations/draft-operation-refs.d.ts +11 -0
- package/dist/src/runtime/capabilities/automations/draft-operation-refs.js +37 -0
- package/dist/src/runtime/capabilities/automations/draft-receipt-admission.d.ts +24 -0
- package/dist/src/runtime/capabilities/automations/draft-receipt-admission.js +36 -0
- package/dist/src/runtime/capabilities/automations/event-presentation.d.ts +3 -0
- package/dist/src/runtime/capabilities/automations/event-presentation.js +18 -0
- package/dist/src/runtime/capabilities/automations/model-tool-contract.d.ts +3 -0
- package/dist/src/runtime/capabilities/automations/model-tool-contract.js +34 -0
- package/dist/src/runtime/capabilities/automations/tool-contract.d.ts +3 -0
- package/dist/src/runtime/capabilities/automations/tool-contract.js +65 -0
- package/dist/src/runtime/capabilities/automations/tool-module.d.ts +4 -0
- package/dist/src/runtime/capabilities/automations/tool-module.js +286 -0
- package/dist/src/runtime/capabilities/configured-tool-registry.js +1 -1
- package/dist/src/runtime/capabilities/request-module-preparation.d.ts +2 -1
- package/dist/src/runtime/capabilities/request-module-preparation.js +3 -13
- package/dist/src/runtime/capabilities/request-property-narrowing.d.ts +3 -0
- package/dist/src/runtime/capabilities/request-property-narrowing.js +20 -0
- package/dist/src/runtime/capabilities/request-tool-resources.d.ts +33 -0
- package/dist/src/runtime/capabilities/request-tool-resources.js +92 -0
- package/dist/src/runtime/capabilities/request-tool-state.d.ts +13 -0
- package/dist/src/runtime/capabilities/request-tool-state.js +75 -0
- package/dist/src/runtime/capabilities/runtime-path-namespace.d.ts +6 -0
- package/dist/src/runtime/capabilities/runtime-path-namespace.js +48 -0
- package/dist/src/runtime/capabilities/runtime-target-path.d.ts +1 -0
- package/dist/src/runtime/capabilities/runtime-target-path.js +16 -8
- package/dist/src/runtime/capabilities/scheduling/create-operations.d.ts +6 -0
- package/dist/src/runtime/capabilities/scheduling/job-list-page.d.ts +5 -2
- package/dist/src/runtime/composition.d.ts +10 -3
- package/dist/src/runtime/context/canonical-capability-result.d.ts +4 -0
- package/dist/src/runtime/context/canonical-capability-result.js +80 -0
- package/dist/src/runtime/context/capability-brief-readmission.js +2 -5
- package/dist/src/runtime/context/capability-result-compaction-source.d.ts +12 -0
- package/dist/src/runtime/context/capability-result-compaction-source.js +61 -0
- package/dist/src/runtime/context/compacted-capability-result-receipt.d.ts +7 -0
- package/dist/src/runtime/context/compacted-capability-result-receipt.js +29 -0
- package/dist/src/runtime/context/compaction-source-invariant.d.ts +6 -0
- package/dist/src/runtime/context/compaction-source-invariant.js +12 -0
- package/dist/src/runtime/context/execution-compacted-evidence.d.ts +29 -0
- package/dist/src/runtime/context/execution-compacted-evidence.js +87 -0
- package/dist/src/runtime/context/execution-compaction-objective.d.ts +11 -0
- package/dist/src/runtime/context/execution-compaction-objective.js +12 -0
- package/dist/src/runtime/context/model-step-compaction.d.ts +9 -0
- package/dist/src/runtime/context/model-step-compaction.js +115 -128
- package/dist/src/runtime/context/operation-supervision-compacted-evidence.d.ts +37 -0
- package/dist/src/runtime/context/operation-supervision-compacted-evidence.js +69 -0
- package/dist/src/runtime/context/operation-supervision-evidence-binding.d.ts +29 -0
- package/dist/src/runtime/context/operation-supervision-evidence-binding.js +66 -0
- package/dist/src/runtime/context/operation-supervision-evidence-projection.d.ts +5 -0
- package/dist/src/runtime/context/operation-supervision-evidence-projection.js +133 -0
- package/dist/src/runtime/context/operation-supervision-evidence.d.ts +2 -1
- package/dist/src/runtime/context/operation-supervision-evidence.js +38 -37
- package/dist/src/runtime/context/request-context-contracts.d.ts +2 -0
- package/dist/src/runtime/context/request-context.js +5 -1
- package/dist/src/runtime/context/request-tool-results-checkpoint.d.ts +3 -0
- package/dist/src/runtime/context/request-tool-results-checkpoint.js +126 -0
- package/dist/src/runtime/context/request-tool-results-message-binding.d.ts +1 -0
- package/dist/src/runtime/context/request-tool-results-message-binding.js +10 -0
- package/dist/src/runtime/context/request-tool-results-supersession.d.ts +9 -0
- package/dist/src/runtime/context/request-tool-results-supersession.js +78 -0
- package/dist/src/runtime/context/request-tool-results.d.ts +3 -9
- package/dist/src/runtime/context/request-tool-results.js +15 -181
- package/dist/src/runtime/context/runtime-filesystem-scope.d.ts +21 -0
- package/dist/src/runtime/context/runtime-filesystem-scope.js +51 -0
- package/dist/src/runtime/context/semantic-compaction/checkpoint-message.d.ts +3 -0
- package/dist/src/runtime/context/semantic-compaction/checkpoint-message.js +22 -0
- package/dist/src/runtime/context/semantic-compaction/contracts.d.ts +0 -3
- package/dist/src/runtime/context/semantic-compaction/contracts.js +9 -20
- package/dist/src/runtime/context/semantic-compaction/dependency-results.js +15 -1
- package/dist/src/runtime/context/semantic-compaction/evidence-scope.d.ts +7 -0
- package/dist/src/runtime/context/semantic-compaction/evidence-scope.js +7 -0
- package/dist/src/runtime/context/semantic-compaction/format.d.ts +2 -1
- package/dist/src/runtime/context/semantic-compaction/format.js +27 -19
- package/dist/src/runtime/context/semantic-compaction/generation-contracts.d.ts +18 -0
- package/dist/src/runtime/context/semantic-compaction/generation-contracts.js +1 -0
- package/dist/src/runtime/context/semantic-compaction/generation-input.d.ts +11 -0
- package/dist/src/runtime/context/semantic-compaction/generation-input.js +74 -0
- package/dist/src/runtime/context/semantic-compaction/generation-source-registration.d.ts +3 -0
- package/dist/src/runtime/context/semantic-compaction/generation-source-registration.js +12 -0
- package/dist/src/runtime/context/semantic-compaction/output-validation.d.ts +10 -0
- package/dist/src/runtime/context/semantic-compaction/output-validation.js +75 -0
- package/dist/src/runtime/context/semantic-compaction/parser.d.ts +2 -2
- package/dist/src/runtime/context/semantic-compaction/parser.js +13 -26
- package/dist/src/runtime/context/semantic-compaction/prompt.js +18 -5
- package/dist/src/runtime/context/semantic-compaction/repair-headroom.d.ts +4 -3
- package/dist/src/runtime/context/semantic-compaction/repair-headroom.js +10 -4
- package/dist/src/runtime/context/semantic-compaction/replacement-budget.d.ts +25 -0
- package/dist/src/runtime/context/semantic-compaction/replacement-budget.js +55 -0
- package/dist/src/runtime/context/semantic-compaction/run.d.ts +3 -14
- package/dist/src/runtime/context/semantic-compaction/run.js +27 -186
- package/dist/src/runtime/context/semantic-compaction/scope-quarantine.d.ts +17 -0
- package/dist/src/runtime/context/semantic-compaction/scope-quarantine.js +37 -0
- package/dist/src/runtime/context/semantic-compaction/snapshot.d.ts +13 -0
- package/dist/src/runtime/context/semantic-compaction/snapshot.js +28 -0
- package/dist/src/runtime/context/semantic-compaction/source-registration.d.ts +3 -0
- package/dist/src/runtime/context/semantic-compaction/source-registration.js +34 -0
- package/dist/src/runtime/context/semantic-compaction/source-slots.d.ts +5 -0
- package/dist/src/runtime/context/semantic-compaction/source-slots.js +4 -0
- package/dist/src/runtime/context/semantic-compaction/store.d.ts +8 -1
- package/dist/src/runtime/context/semantic-compaction/store.js +60 -8
- package/dist/src/runtime/context/semantic-compaction/super-child-result-source.d.ts +8 -0
- package/dist/src/runtime/context/semantic-compaction/super-child-result-source.js +50 -0
- package/dist/src/runtime/context/semantic-compaction/super-operation-source.d.ts +8 -0
- package/dist/src/runtime/context/semantic-compaction/super-operation-source.js +99 -0
- package/dist/src/runtime/context/semantic-compaction/super-reviewer-source.d.ts +16 -0
- package/dist/src/runtime/context/semantic-compaction/super-reviewer-source.js +37 -0
- package/dist/src/runtime/context/semantic-compaction/super-source-integrity.d.ts +21 -0
- package/dist/src/runtime/context/semantic-compaction/super-source-integrity.js +169 -0
- package/dist/src/runtime/context/semantic-compaction/super-source-message.d.ts +4 -0
- package/dist/src/runtime/context/semantic-compaction/super-source-message.js +23 -0
- package/dist/src/runtime/context/session-memory/contracts.d.ts +7 -2
- package/dist/src/runtime/context/session-memory/controller.js +24 -3
- package/dist/src/runtime/context/session-memory/model-step-controller.js +34 -20
- package/dist/src/runtime/context/session-memory/selection.js +7 -4
- package/dist/src/runtime/context/session-memory/snapshot-state.d.ts +9 -0
- package/dist/src/runtime/context/session-memory/snapshot-state.js +21 -0
- package/dist/src/runtime/context/session-memory/snapshot.d.ts +5 -0
- package/dist/src/runtime/context/session-memory/snapshot.js +9 -0
- package/dist/src/runtime/context/spark-conversation-policy.d.ts +4 -0
- package/dist/src/runtime/context/spark-conversation-policy.js +16 -0
- package/dist/src/runtime/context/super-compaction-failure-owner.d.ts +10 -0
- package/dist/src/runtime/context/super-compaction-failure-owner.js +64 -0
- package/dist/src/runtime/context/super-context-failure.d.ts +28 -0
- package/dist/src/runtime/context/super-context-failure.js +37 -0
- package/dist/src/runtime/context/super-context-policy.d.ts +3 -0
- package/dist/src/runtime/context/super-context-policy.js +35 -0
- package/dist/src/runtime/context/super-request-tool-results-checkpoint.d.ts +6 -0
- package/dist/src/runtime/context/super-request-tool-results-checkpoint.js +29 -0
- package/dist/src/runtime/context/super-worker-compaction-failure.d.ts +5 -0
- package/dist/src/runtime/context/super-worker-compaction-failure.js +19 -0
- package/dist/src/runtime/context/super-worker-compaction-projection.d.ts +8 -0
- package/dist/src/runtime/context/super-worker-compaction-projection.js +41 -0
- package/dist/src/runtime/context/super-worker-compaction-sidecar.d.ts +21 -0
- package/dist/src/runtime/context/super-worker-compaction-sidecar.js +67 -0
- package/dist/src/runtime/context/tool-media-projection.d.ts +10 -0
- package/dist/src/runtime/context/tool-media-projection.js +97 -0
- package/dist/src/runtime/context/verified-compaction-projection.d.ts +7 -0
- package/dist/src/runtime/context/verified-compaction-projection.js +16 -0
- package/dist/src/runtime/default-environment-adapters.d.ts +4 -0
- package/dist/src/runtime/default-environment-adapters.js +7 -1
- package/dist/src/runtime/lifecycle/request-finalizer.d.ts +4 -0
- package/dist/src/runtime/lifecycle/request-finalizer.js +45 -16
- package/dist/src/runtime/local-application.d.ts +304 -1
- package/dist/src/runtime/local-application.js +38 -3
- package/dist/src/runtime/local-host/app-learning-dispatch.d.ts +3 -0
- package/dist/src/runtime/local-host/app-learning-dispatch.js +46 -0
- package/dist/src/runtime/local-host/app-native-permissions.d.ts +20 -0
- package/dist/src/runtime/local-host/app-native-permissions.js +76 -0
- package/dist/src/runtime/local-host/app-owner.js +66 -25
- package/dist/src/runtime/local-host/app-request-approvals.d.ts +18 -0
- package/dist/src/runtime/local-host/app-request-approvals.js +150 -0
- package/dist/src/runtime/local-host/app-request-control.d.ts +19 -2
- package/dist/src/runtime/local-host/app-request-control.js +158 -62
- package/dist/src/runtime/local-host/app-request-delivery.d.ts +16 -0
- package/dist/src/runtime/local-host/app-request-delivery.js +59 -0
- package/dist/src/runtime/local-host/app-service-dispatch.d.ts +2 -1
- package/dist/src/runtime/local-host/app-service-dispatch.js +31 -0
- package/dist/src/runtime/local-host/client-learning.d.ts +10 -0
- package/dist/src/runtime/local-host/client-learning.js +44 -0
- package/dist/src/runtime/local-host/client-native-permissions.d.ts +4 -0
- package/dist/src/runtime/local-host/client-native-permissions.js +37 -0
- package/dist/src/runtime/local-host/client-requests.d.ts +14 -2
- package/dist/src/runtime/local-host/client-requests.js +198 -41
- package/dist/src/runtime/local-host/client-services.d.ts +274 -1
- package/dist/src/runtime/local-host/client-services.js +3 -2
- package/dist/src/runtime/local-host/contracts.d.ts +2 -0
- package/dist/src/runtime/local-host/learning-events.d.ts +4 -0
- package/dist/src/runtime/local-host/learning-events.js +24 -0
- package/dist/src/runtime/local-host/learning-preferences-input.d.ts +3 -0
- package/dist/src/runtime/local-host/learning-preferences-input.js +73 -0
- package/dist/src/runtime/local-host/pending-client-request.d.ts +40 -0
- package/dist/src/runtime/local-host/pending-client-request.js +152 -0
- package/dist/src/runtime/local-host/reconnectable-connection.d.ts +4 -0
- package/dist/src/runtime/local-host/reconnectable-connection.js +96 -0
- package/dist/src/runtime/local-host/request-approval-contracts.d.ts +31 -0
- package/dist/src/runtime/local-host/request-approval-contracts.js +1 -0
- package/dist/src/runtime/local-host/saved-approvals.d.ts +30 -0
- package/dist/src/runtime/local-host/saved-approvals.js +334 -0
- package/dist/src/runtime/local-host/startup-connection.d.ts +4 -1
- package/dist/src/runtime/local-host/startup-connection.js +1 -1
- package/dist/src/runtime/local-host/transport.js +5 -32
- package/dist/src/runtime/long-term-memory/automatic-management.d.ts +3 -0
- package/dist/src/runtime/long-term-memory/automatic-management.js +6 -0
- package/dist/src/runtime/long-term-memory/background-save-queue.js +1 -0
- package/dist/src/runtime/long-term-memory/candidate-preparation.d.ts +1 -2
- package/dist/src/runtime/long-term-memory/candidate-preparation.js +5 -4
- package/dist/src/runtime/long-term-memory/candidate-processing.d.ts +5 -3
- package/dist/src/runtime/long-term-memory/candidate-processing.js +78 -31
- package/dist/src/runtime/long-term-memory/change-notifications.d.ts +10 -0
- package/dist/src/runtime/long-term-memory/change-notifications.js +45 -0
- package/dist/src/runtime/long-term-memory/contracts.d.ts +24 -3
- package/dist/src/runtime/long-term-memory/conversation-authoring/context.d.ts +14 -0
- package/dist/src/runtime/long-term-memory/conversation-authoring/context.js +55 -0
- package/dist/src/runtime/long-term-memory/conversation-authoring/contract.d.ts +54 -0
- package/dist/src/runtime/long-term-memory/conversation-authoring/contract.js +86 -0
- package/dist/src/runtime/long-term-memory/conversation-authoring/prompt.d.ts +4 -0
- package/dist/src/runtime/long-term-memory/conversation-authoring/prompt.js +19 -0
- package/dist/src/runtime/long-term-memory/conversation-candidates.d.ts +29 -0
- package/dist/src/runtime/long-term-memory/conversation-candidates.js +71 -0
- package/dist/src/runtime/long-term-memory/diagnostics.js +10 -0
- package/dist/src/runtime/long-term-memory/management/contracts.d.ts +5 -0
- package/dist/src/runtime/long-term-memory/management/mutations.js +25 -3
- package/dist/src/runtime/long-term-memory/management/queries.js +6 -2
- package/dist/src/runtime/long-term-memory/management/search.js +5 -1
- package/dist/src/runtime/long-term-memory/management/validation.d.ts +2 -0
- package/dist/src/runtime/long-term-memory/management/validation.js +8 -0
- package/dist/src/runtime/long-term-memory/maturation/apply-diagnostics.d.ts +10 -0
- package/dist/src/runtime/long-term-memory/maturation/apply-diagnostics.js +47 -0
- package/dist/src/runtime/long-term-memory/maturation/authoring-policy.d.ts +2 -0
- package/dist/src/runtime/long-term-memory/maturation/authoring-policy.js +6 -0
- package/dist/src/runtime/long-term-memory/maturation/candidate-promotion.d.ts +12 -0
- package/dist/src/runtime/long-term-memory/maturation/candidate-promotion.js +51 -0
- package/dist/src/runtime/long-term-memory/maturation/context.d.ts +12 -0
- package/dist/src/runtime/long-term-memory/maturation/context.js +67 -0
- package/dist/src/runtime/long-term-memory/maturation/contracts.d.ts +120 -0
- package/dist/src/runtime/long-term-memory/maturation/contracts.js +1 -0
- package/dist/src/runtime/long-term-memory/maturation/conversation-evidence.d.ts +3 -0
- package/dist/src/runtime/long-term-memory/maturation/conversation-evidence.js +16 -0
- package/dist/src/runtime/long-term-memory/maturation/current-bindings.d.ts +4 -0
- package/dist/src/runtime/long-term-memory/maturation/current-bindings.js +53 -0
- package/dist/src/runtime/long-term-memory/maturation/decision-envelope.d.ts +22 -0
- package/dist/src/runtime/long-term-memory/maturation/decision-envelope.js +66 -0
- package/dist/src/runtime/long-term-memory/maturation/decisions.d.ts +5 -0
- package/dist/src/runtime/long-term-memory/maturation/decisions.js +131 -0
- package/dist/src/runtime/long-term-memory/maturation/embedding-binding.d.ts +5 -0
- package/dist/src/runtime/long-term-memory/maturation/embedding-binding.js +20 -0
- package/dist/src/runtime/long-term-memory/maturation/embedding-reservation.d.ts +3 -0
- package/dist/src/runtime/long-term-memory/maturation/embedding-reservation.js +17 -0
- package/dist/src/runtime/long-term-memory/maturation/evidence-contracts.d.ts +33 -0
- package/dist/src/runtime/long-term-memory/maturation/evidence-contracts.js +1 -0
- package/dist/src/runtime/long-term-memory/maturation/evidence.d.ts +7 -0
- package/dist/src/runtime/long-term-memory/maturation/evidence.js +42 -0
- package/dist/src/runtime/long-term-memory/maturation/maintenance-clock.d.ts +31 -0
- package/dist/src/runtime/long-term-memory/maturation/maintenance-clock.js +118 -0
- package/dist/src/runtime/long-term-memory/maturation/maintenance.d.ts +5 -0
- package/dist/src/runtime/long-term-memory/maturation/maintenance.js +40 -0
- package/dist/src/runtime/long-term-memory/maturation/memory-update.d.ts +12 -0
- package/dist/src/runtime/long-term-memory/maturation/memory-update.js +43 -0
- package/dist/src/runtime/long-term-memory/maturation/overview.d.ts +4 -0
- package/dist/src/runtime/long-term-memory/maturation/overview.js +30 -0
- package/dist/src/runtime/long-term-memory/maturation/policy.d.ts +5 -0
- package/dist/src/runtime/long-term-memory/maturation/policy.js +15 -0
- package/dist/src/runtime/long-term-memory/maturation/receipt-capacity.d.ts +8 -0
- package/dist/src/runtime/long-term-memory/maturation/receipt-capacity.js +33 -0
- package/dist/src/runtime/long-term-memory/maturation/retention-lifecycle.d.ts +13 -0
- package/dist/src/runtime/long-term-memory/maturation/retention-lifecycle.js +56 -0
- package/dist/src/runtime/long-term-memory/maturation/retention.d.ts +8 -0
- package/dist/src/runtime/long-term-memory/maturation/retention.js +42 -0
- package/dist/src/runtime/long-term-memory/maturation/scheduled-review.d.ts +11 -0
- package/dist/src/runtime/long-term-memory/maturation/scheduled-review.js +97 -0
- package/dist/src/runtime/long-term-memory/maturation/service.d.ts +7 -0
- package/dist/src/runtime/long-term-memory/maturation/service.js +105 -0
- package/dist/src/runtime/long-term-memory/maturation/source-state.d.ts +4 -0
- package/dist/src/runtime/long-term-memory/maturation/source-state.js +66 -0
- package/dist/src/runtime/long-term-memory/maturation/sources.d.ts +3 -0
- package/dist/src/runtime/long-term-memory/maturation/sources.js +12 -0
- package/dist/src/runtime/long-term-memory/maturation/state.d.ts +3 -0
- package/dist/src/runtime/long-term-memory/maturation/state.js +84 -0
- package/dist/src/runtime/long-term-memory/maturation/transition.d.ts +11 -0
- package/dist/src/runtime/long-term-memory/maturation/transition.js +126 -0
- package/dist/src/runtime/long-term-memory/maturation/write-targets.d.ts +4 -0
- package/dist/src/runtime/long-term-memory/maturation/write-targets.js +22 -0
- package/dist/src/runtime/long-term-memory/observation-contracts.d.ts +40 -0
- package/dist/src/runtime/long-term-memory/observation-contracts.js +1 -0
- package/dist/src/runtime/long-term-memory/observation-persistence.d.ts +10 -0
- package/dist/src/runtime/long-term-memory/observation-persistence.js +78 -0
- package/dist/src/runtime/long-term-memory/observation-receipt-retention.d.ts +3 -0
- package/dist/src/runtime/long-term-memory/observation-receipt-retention.js +18 -0
- package/dist/src/runtime/long-term-memory/observation-source.d.ts +3 -0
- package/dist/src/runtime/long-term-memory/observation-source.js +24 -0
- package/dist/src/runtime/long-term-memory/observation-state.d.ts +4 -0
- package/dist/src/runtime/long-term-memory/observation-state.js +58 -0
- package/dist/src/runtime/long-term-memory/projection.js +17 -1
- package/dist/src/runtime/long-term-memory/repository-state.js +105 -4
- package/dist/src/runtime/long-term-memory/service.js +32 -3
- package/dist/src/runtime/model/context-compaction-admission.d.ts +21 -0
- package/dist/src/runtime/model/context-compaction-admission.js +214 -0
- package/dist/src/runtime/model/context-compaction-contracts.d.ts +32 -0
- package/dist/src/runtime/model/context-compaction-contracts.js +1 -0
- package/dist/src/runtime/model/context-compaction-diagnostics.d.ts +33 -0
- package/dist/src/runtime/model/context-compaction-diagnostics.js +97 -0
- package/dist/src/runtime/model/context-compaction-stage-plan.d.ts +3 -0
- package/dist/src/runtime/model/context-compaction-stage-plan.js +28 -0
- package/dist/src/runtime/model/input-token-count.d.ts +1 -0
- package/dist/src/runtime/model/input-token-count.js +4 -1
- package/dist/src/runtime/model/invalid-output-failure.d.ts +13 -0
- package/dist/src/runtime/model/invalid-output-failure.js +96 -0
- package/dist/src/runtime/model/invocation-identity.d.ts +2 -0
- package/dist/src/runtime/model/invocation-identity.js +6 -0
- package/dist/src/runtime/model/invoke-raw-step.js +5 -1
- package/dist/src/runtime/model/invoke-step.js +99 -127
- package/dist/src/runtime/model/invoke-structured-step.d.ts +2 -1
- package/dist/src/runtime/model/invoke-structured-step.js +7 -3
- package/dist/src/runtime/model/model-context-assessment.d.ts +17 -0
- package/dist/src/runtime/model/model-context-assessment.js +51 -0
- package/dist/src/runtime/model/model-context-budget.d.ts +5 -0
- package/dist/src/runtime/model/model-context-budget.js +9 -0
- package/dist/src/runtime/model/model-step-acceptance.d.ts +4 -0
- package/dist/src/runtime/model/model-step-acceptance.js +28 -0
- package/dist/src/runtime/model/model-step-port.d.ts +8 -15
- package/dist/src/runtime/model/model-step-steering.d.ts +14 -1
- package/dist/src/runtime/model/model-step-steering.js +23 -0
- package/dist/src/runtime/model/provider-completion.d.ts +5 -2
- package/dist/src/runtime/model/provider-completion.js +7 -3
- package/dist/src/runtime/orchestration/capability-adapters/result.d.ts +6 -1
- package/dist/src/runtime/orchestration/capability-adapters/result.js +14 -7
- package/dist/src/runtime/orchestration/final-response/authoring-contract.d.ts +3 -1
- package/dist/src/runtime/orchestration/final-response/authoring-contract.js +5 -30
- package/dist/src/runtime/orchestration/final-response/finalization.d.ts +2 -0
- package/dist/src/runtime/orchestration/final-response/finalization.js +8 -2
- package/dist/src/runtime/orchestration/final-response/format.js +8 -28
- package/dist/src/runtime/orchestration/final-response/invoke.d.ts +2 -0
- package/dist/src/runtime/orchestration/final-response/invoke.js +1 -0
- package/dist/src/runtime/orchestration/lifecycle/execution-budgets.d.ts +8 -0
- package/dist/src/runtime/orchestration/lifecycle/execution-budgets.js +13 -0
- package/dist/src/runtime/orchestration/lifecycle/request-lifecycle.d.ts +21 -0
- package/dist/src/runtime/orchestration/lifecycle/request-lifecycle.js +121 -14
- package/dist/src/runtime/orchestration/role-calls/candidate-validation.js +2 -1
- package/dist/src/runtime/orchestration/role-calls/checkpoint-contract.d.ts +8 -0
- package/dist/src/runtime/orchestration/role-calls/checkpoint-contract.js +1 -0
- package/dist/src/runtime/orchestration/role-calls/checkpoint-state.d.ts +4 -0
- package/dist/src/runtime/orchestration/role-calls/checkpoint-state.js +79 -0
- package/dist/src/runtime/orchestration/role-calls/checkpoint.d.ts +8 -0
- package/dist/src/runtime/orchestration/role-calls/checkpoint.js +15 -0
- package/dist/src/runtime/orchestration/role-calls/child-return.d.ts +5 -1
- package/dist/src/runtime/orchestration/role-calls/child-return.js +5 -4
- package/dist/src/runtime/orchestration/role-calls/command-dispatch/child-transitions.js +4 -3
- package/dist/src/runtime/orchestration/role-calls/contracts.d.ts +2 -0
- package/dist/src/runtime/orchestration/role-calls/contracts.js +1 -0
- package/dist/src/runtime/orchestration/role-calls/index.d.ts +1 -0
- package/dist/src/runtime/orchestration/role-calls/index.js +1 -0
- package/dist/src/runtime/orchestration/role-calls/ledger.d.ts +2 -0
- package/dist/src/runtime/orchestration/role-calls/ledger.js +8 -5
- package/dist/src/runtime/orchestration/role-calls/operation-supervision-issuance.d.ts +2 -0
- package/dist/src/runtime/orchestration/role-calls/operation-supervision-issuance.js +5 -0
- package/dist/src/runtime/orchestration/role-calls/role-result-text.d.ts +2 -0
- package/dist/src/runtime/orchestration/role-calls/role-result-text.js +4 -0
- package/dist/src/runtime/orchestration/role-executors/activation/loop.d.ts +6 -6
- package/dist/src/runtime/orchestration/role-executors/activation/loop.js +40 -5
- package/dist/src/runtime/orchestration/role-executors/activation/model-output-failure.d.ts +3 -0
- package/dist/src/runtime/orchestration/role-executors/activation/model-output-failure.js +98 -0
- package/dist/src/runtime/orchestration/role-executors/activation/result-normalization.d.ts +1 -1
- package/dist/src/runtime/orchestration/role-executors/activation/result-normalization.js +6 -5
- package/dist/src/runtime/orchestration/role-executors/approval-continuation.d.ts +20 -0
- package/dist/src/runtime/orchestration/role-executors/approval-continuation.js +34 -0
- package/dist/src/runtime/orchestration/role-executors/child-invocation/entered-child.d.ts +19 -0
- package/dist/src/runtime/orchestration/role-executors/child-invocation/entered-child.js +55 -0
- package/dist/src/runtime/orchestration/role-executors/child-invocation/state-validation.d.ts +5 -5
- package/dist/src/runtime/orchestration/role-executors/child-invocation/state-validation.js +2 -2
- package/dist/src/runtime/orchestration/role-executors/child-invocation/transaction.d.ts +7 -7
- package/dist/src/runtime/orchestration/role-executors/child-invocation/transaction.js +47 -15
- package/dist/src/runtime/orchestration/role-executors/contracts.d.ts +37 -20
- package/dist/src/runtime/orchestration/role-executors/registry.js +13 -6
- package/dist/src/runtime/orchestration/state-head-checkpoint.d.ts +4 -0
- package/dist/src/runtime/orchestration/state-head-checkpoint.js +10 -0
- package/dist/src/runtime/orchestration/state-head-contracts.d.ts +100 -0
- package/dist/src/runtime/orchestration/state-head-contracts.js +1 -0
- package/dist/src/runtime/orchestration/state-head.d.ts +2 -99
- package/dist/src/runtime/orchestration/state-head.js +4 -3
- package/dist/src/runtime/orchestration/worker-capabilities/approval-contracts.d.ts +47 -0
- package/dist/src/runtime/orchestration/worker-capabilities/approval-contracts.js +6 -0
- package/dist/src/runtime/orchestration/worker-capabilities/binding/adapter-normalization.js +3 -0
- package/dist/src/runtime/orchestration/worker-capabilities/binding/bound-capability-session.d.ts +2 -0
- package/dist/src/runtime/orchestration/worker-capabilities/binding/bound-capability-session.js +4 -0
- package/dist/src/runtime/orchestration/worker-capabilities/binding/create-binding.d.ts +2 -0
- package/dist/src/runtime/orchestration/worker-capabilities/binding/create-binding.js +1 -0
- package/dist/src/runtime/orchestration/worker-capabilities/binding/invocation-preparation.js +1 -8
- package/dist/src/runtime/orchestration/worker-capabilities/contracts.d.ts +22 -6
- package/dist/src/runtime/orchestration/worker-capabilities/contracts.js +1 -1
- package/dist/src/runtime/orchestration/worker-capabilities/execution/approval-group.d.ts +30 -0
- package/dist/src/runtime/orchestration/worker-capabilities/execution/approval-group.js +171 -0
- package/dist/src/runtime/orchestration/worker-capabilities/execution/context-projection.js +2 -1
- package/dist/src/runtime/orchestration/worker-capabilities/execution/invocation-preparation.js +12 -0
- package/dist/src/runtime/orchestration/worker-capabilities/execution/ledger-transaction.d.ts +3 -0
- package/dist/src/runtime/orchestration/worker-capabilities/execution/ledger-transaction.js +37 -52
- package/dist/src/runtime/orchestration/worker-capabilities/execution/preparation-rejection.d.ts +66 -0
- package/dist/src/runtime/orchestration/worker-capabilities/execution/preparation-rejection.js +37 -0
- package/dist/src/runtime/orchestration/worker-capabilities/execution/settle-prepared.d.ts +15 -0
- package/dist/src/runtime/orchestration/worker-capabilities/execution/settle-prepared.js +43 -0
- package/dist/src/runtime/orchestration/worker-capabilities/execution.d.ts +3 -0
- package/dist/src/runtime/orchestration/worker-capabilities/execution.js +4 -1
- package/dist/src/runtime/orchestration/worker-capabilities/index.d.ts +2 -0
- package/dist/src/runtime/orchestration/worker-capabilities/index.js +2 -0
- package/dist/src/runtime/orchestration/worker-capabilities/payload-assignment-validation.js +9 -9
- package/dist/src/runtime/orchestration/worker-capabilities/payload-author.js +11 -37
- package/dist/src/runtime/orchestration/worker-capabilities/payload-body-normalization.d.ts +12 -0
- package/dist/src/runtime/orchestration/worker-capabilities/payload-body-normalization.js +80 -0
- package/dist/src/runtime/orchestration/worker-capabilities/payload-compaction-transport.d.ts +3 -0
- package/dist/src/runtime/orchestration/worker-capabilities/payload-compaction-transport.js +14 -0
- package/dist/src/runtime/orchestration/worker-capabilities/payload-context-snapshot.d.ts +2 -0
- package/dist/src/runtime/orchestration/worker-capabilities/payload-context-snapshot.js +12 -0
- package/dist/src/runtime/orchestration/worker-capabilities/payload-contracts.d.ts +5 -1
- package/dist/src/runtime/orchestration/worker-capabilities/payload-instructions.js +1 -1
- package/dist/src/runtime/passive-learning/active-batches.d.ts +11 -0
- package/dist/src/runtime/passive-learning/active-batches.js +29 -0
- package/dist/src/runtime/passive-learning/activity-permissions.d.ts +7 -0
- package/dist/src/runtime/passive-learning/activity-permissions.js +88 -0
- package/dist/src/runtime/passive-learning/analysis-clock.d.ts +14 -0
- package/dist/src/runtime/passive-learning/analysis-clock.js +46 -0
- package/dist/src/runtime/passive-learning/analysis-schedule.d.ts +6 -0
- package/dist/src/runtime/passive-learning/analysis-schedule.js +69 -0
- package/dist/src/runtime/passive-learning/application-catalog.d.ts +13 -0
- package/dist/src/runtime/passive-learning/application-catalog.js +29 -0
- package/dist/src/runtime/passive-learning/application-controls.d.ts +10 -0
- package/dist/src/runtime/passive-learning/application-controls.js +14 -0
- package/dist/src/runtime/passive-learning/application-pending.d.ts +15 -0
- package/dist/src/runtime/passive-learning/application-pending.js +44 -0
- package/dist/src/runtime/passive-learning/application-policy.d.ts +7 -0
- package/dist/src/runtime/passive-learning/application-policy.js +26 -0
- package/dist/src/runtime/passive-learning/background-dependencies.d.ts +37 -0
- package/dist/src/runtime/passive-learning/background-dependencies.js +1 -0
- package/dist/src/runtime/passive-learning/background-lifecycle.d.ts +22 -0
- package/dist/src/runtime/passive-learning/background-lifecycle.js +75 -0
- package/dist/src/runtime/passive-learning/batch-lifecycle.d.ts +7 -0
- package/dist/src/runtime/passive-learning/batch-lifecycle.js +48 -0
- package/dist/src/runtime/passive-learning/batch-partition.d.ts +10 -0
- package/dist/src/runtime/passive-learning/batch-partition.js +46 -0
- package/dist/src/runtime/passive-learning/batch-receipt.d.ts +15 -0
- package/dist/src/runtime/passive-learning/batch-receipt.js +34 -0
- package/dist/src/runtime/passive-learning/collection-source.d.ts +24 -0
- package/dist/src/runtime/passive-learning/collection-source.js +96 -0
- package/dist/src/runtime/passive-learning/collection-window-clock.d.ts +21 -0
- package/dist/src/runtime/passive-learning/collection-window-clock.js +55 -0
- package/dist/src/runtime/passive-learning/contracts.d.ts +167 -0
- package/dist/src/runtime/passive-learning/contracts.js +1 -0
- package/dist/src/runtime/passive-learning/control-policy.d.ts +9 -0
- package/dist/src/runtime/passive-learning/control-policy.js +52 -0
- package/dist/src/runtime/passive-learning/independent-preferences.d.ts +2 -0
- package/dist/src/runtime/passive-learning/independent-preferences.js +39 -0
- package/dist/src/runtime/passive-learning/journal.d.ts +37 -0
- package/dist/src/runtime/passive-learning/journal.js +185 -0
- package/dist/src/runtime/passive-learning/maturation-preferences.d.ts +8 -0
- package/dist/src/runtime/passive-learning/maturation-preferences.js +40 -0
- package/dist/src/runtime/passive-learning/memory-review-format.d.ts +51 -0
- package/dist/src/runtime/passive-learning/memory-review-format.js +21 -0
- package/dist/src/runtime/passive-learning/model.d.ts +11 -0
- package/dist/src/runtime/passive-learning/model.js +230 -0
- package/dist/src/runtime/passive-learning/proactive/agent.d.ts +62 -0
- package/dist/src/runtime/passive-learning/proactive/agent.js +385 -0
- package/dist/src/runtime/passive-learning/proactive/contracts.d.ts +96 -0
- package/dist/src/runtime/passive-learning/proactive/contracts.js +143 -0
- package/dist/src/runtime/passive-learning/proactive/conversation-style-prompt.d.ts +1 -0
- package/dist/src/runtime/passive-learning/proactive/conversation-style-prompt.js +6 -0
- package/dist/src/runtime/passive-learning/proactive/conversation-style-reference.d.ts +30 -0
- package/dist/src/runtime/passive-learning/proactive/conversation-style-reference.js +61 -0
- package/dist/src/runtime/passive-learning/proactive/handoff-brief.d.ts +1 -0
- package/dist/src/runtime/passive-learning/proactive/handoff-brief.js +4 -0
- package/dist/src/runtime/passive-learning/proactive/model-output.d.ts +3 -0
- package/dist/src/runtime/passive-learning/proactive/model-output.js +53 -0
- package/dist/src/runtime/passive-learning/proactive/model.d.ts +79 -0
- package/dist/src/runtime/passive-learning/proactive/model.js +147 -0
- package/dist/src/runtime/passive-learning/proactive/prompt.d.ts +1 -0
- package/dist/src/runtime/passive-learning/proactive/prompt.js +10 -0
- package/dist/src/runtime/passive-learning/proactive/staged-agent-review.d.ts +16 -0
- package/dist/src/runtime/passive-learning/proactive/staged-agent-review.js +54 -0
- package/dist/src/runtime/passive-learning/proactive/staged-authoring.d.ts +14 -0
- package/dist/src/runtime/passive-learning/proactive/staged-authoring.js +27 -0
- package/dist/src/runtime/passive-learning/proactive/staged-context.d.ts +42 -0
- package/dist/src/runtime/passive-learning/proactive/staged-context.js +101 -0
- package/dist/src/runtime/passive-learning/proactive/staged-contract.d.ts +3 -0
- package/dist/src/runtime/passive-learning/proactive/staged-contract.js +4 -0
- package/dist/src/runtime/passive-learning/proactive/staged-format.d.ts +9 -0
- package/dist/src/runtime/passive-learning/proactive/staged-format.js +20 -0
- package/dist/src/runtime/passive-learning/proactive/staged-output.d.ts +15 -0
- package/dist/src/runtime/passive-learning/proactive/staged-output.js +93 -0
- package/dist/src/runtime/passive-learning/proactive/staged-progress-store.d.ts +17 -0
- package/dist/src/runtime/passive-learning/proactive/staged-progress-store.js +57 -0
- package/dist/src/runtime/passive-learning/proactive/staged-prompt.d.ts +6 -0
- package/dist/src/runtime/passive-learning/proactive/staged-prompt.js +24 -0
- package/dist/src/runtime/passive-learning/proactive/staged-review.d.ts +5 -0
- package/dist/src/runtime/passive-learning/proactive/staged-review.js +40 -0
- package/dist/src/runtime/passive-learning/proactive/store.d.ts +65 -0
- package/dist/src/runtime/passive-learning/proactive/store.js +378 -0
- package/dist/src/runtime/passive-learning/process-batch.d.ts +16 -0
- package/dist/src/runtime/passive-learning/process-batch.js +90 -0
- package/dist/src/runtime/passive-learning/processing-budget-policy.d.ts +14 -0
- package/dist/src/runtime/passive-learning/processing-budget-policy.js +33 -0
- package/dist/src/runtime/passive-learning/processing-cycle.d.ts +42 -0
- package/dist/src/runtime/passive-learning/processing-cycle.js +155 -0
- package/dist/src/runtime/passive-learning/processing-pass.d.ts +29 -0
- package/dist/src/runtime/passive-learning/processing-pass.js +104 -0
- package/dist/src/runtime/passive-learning/processing-trigger.d.ts +7 -0
- package/dist/src/runtime/passive-learning/processing-trigger.js +31 -0
- package/dist/src/runtime/passive-learning/queue.d.ts +29 -0
- package/dist/src/runtime/passive-learning/queue.js +182 -0
- package/dist/src/runtime/passive-learning/reassessment-receipt.d.ts +20 -0
- package/dist/src/runtime/passive-learning/reassessment-receipt.js +18 -0
- package/dist/src/runtime/passive-learning/reassessment-state.d.ts +25 -0
- package/dist/src/runtime/passive-learning/reassessment-state.js +156 -0
- package/dist/src/runtime/passive-learning/resources/admission.d.ts +23 -0
- package/dist/src/runtime/passive-learning/resources/admission.js +92 -0
- package/dist/src/runtime/passive-learning/resources/budget.d.ts +21 -0
- package/dist/src/runtime/passive-learning/resources/budget.js +78 -0
- package/dist/src/runtime/passive-learning/resources/contracts.d.ts +29 -0
- package/dist/src/runtime/passive-learning/resources/contracts.js +26 -0
- package/dist/src/runtime/passive-learning/resources/day-window.d.ts +3 -0
- package/dist/src/runtime/passive-learning/resources/day-window.js +39 -0
- package/dist/src/runtime/passive-learning/resources/gateway.d.ts +13 -0
- package/dist/src/runtime/passive-learning/resources/gateway.js +38 -0
- package/dist/src/runtime/passive-learning/resources/store.d.ts +13 -0
- package/dist/src/runtime/passive-learning/resources/store.js +96 -0
- package/dist/src/runtime/passive-learning/review-batch.d.ts +20 -0
- package/dist/src/runtime/passive-learning/review-batch.js +56 -0
- package/dist/src/runtime/passive-learning/review-capacity.d.ts +5 -0
- package/dist/src/runtime/passive-learning/review-capacity.js +19 -0
- package/dist/src/runtime/passive-learning/review-decision-adapter.d.ts +17 -0
- package/dist/src/runtime/passive-learning/review-decision-adapter.js +145 -0
- package/dist/src/runtime/passive-learning/review-invocation.d.ts +7 -0
- package/dist/src/runtime/passive-learning/review-invocation.js +47 -0
- package/dist/src/runtime/passive-learning/review-method.d.ts +3 -0
- package/dist/src/runtime/passive-learning/review-method.js +11 -0
- package/dist/src/runtime/passive-learning/review-output.d.ts +2 -0
- package/dist/src/runtime/passive-learning/review-output.js +17 -0
- package/dist/src/runtime/passive-learning/review-progress.d.ts +25 -0
- package/dist/src/runtime/passive-learning/review-progress.js +59 -0
- package/dist/src/runtime/passive-learning/review-references.d.ts +63 -0
- package/dist/src/runtime/passive-learning/review-references.js +44 -0
- package/dist/src/runtime/passive-learning/review-response-format.d.ts +4 -0
- package/dist/src/runtime/passive-learning/review-response-format.js +72 -0
- package/dist/src/runtime/passive-learning/scheduled-reassessment.d.ts +52 -0
- package/dist/src/runtime/passive-learning/scheduled-reassessment.js +262 -0
- package/dist/src/runtime/passive-learning/service-status.d.ts +24 -0
- package/dist/src/runtime/passive-learning/service-status.js +61 -0
- package/dist/src/runtime/passive-learning/service.d.ts +16 -0
- package/dist/src/runtime/passive-learning/service.js +463 -0
- package/dist/src/runtime/passive-learning/spark-chat-preferences.d.ts +3 -0
- package/dist/src/runtime/passive-learning/spark-chat-preferences.js +8 -0
- package/dist/src/runtime/passive-learning/staged-learning-assessment.d.ts +11 -0
- package/dist/src/runtime/passive-learning/staged-learning-assessment.js +30 -0
- package/dist/src/runtime/passive-learning/staged-learning-authoring.d.ts +11 -0
- package/dist/src/runtime/passive-learning/staged-learning-authoring.js +29 -0
- package/dist/src/runtime/passive-learning/staged-learning-changes.d.ts +5 -0
- package/dist/src/runtime/passive-learning/staged-learning-changes.js +56 -0
- package/dist/src/runtime/passive-learning/staged-learning-review.d.ts +5 -0
- package/dist/src/runtime/passive-learning/staged-learning-review.js +55 -0
- package/dist/src/runtime/passive-learning/staged-learning-selection.d.ts +18 -0
- package/dist/src/runtime/passive-learning/staged-learning-selection.js +57 -0
- package/dist/src/runtime/passive-learning/staged-learning-stage.d.ts +75 -0
- package/dist/src/runtime/passive-learning/staged-learning-stage.js +60 -0
- package/dist/src/runtime/passive-learning/staged-learning-timing.d.ts +3 -0
- package/dist/src/runtime/passive-learning/staged-learning-timing.js +20 -0
- package/dist/src/runtime/passive-learning/staged-review-call.d.ts +26 -0
- package/dist/src/runtime/passive-learning/staged-review-call.js +141 -0
- package/dist/src/runtime/passive-learning/status-projection.d.ts +10 -0
- package/dist/src/runtime/passive-learning/status-projection.js +148 -0
- package/dist/src/runtime/passive-learning/store.d.ts +14 -0
- package/dist/src/runtime/passive-learning/store.js +159 -0
- package/dist/src/runtime/plugins/manifest-projection.js +4 -0
- package/dist/src/runtime/plugins/manifest-validator.js +7 -0
- package/dist/src/runtime/ports.d.ts +21 -2
- package/dist/src/runtime/request/approval-continuation.d.ts +24 -0
- package/dist/src/runtime/request/approval-continuation.js +62 -0
- package/dist/src/runtime/request/approval-wait/activation-events.d.ts +36 -0
- package/dist/src/runtime/request/approval-wait/activation-events.js +154 -0
- package/dist/src/runtime/request/approval-wait/approval-gate.d.ts +9 -0
- package/dist/src/runtime/request/approval-wait/approval-gate.js +65 -0
- package/dist/src/runtime/request/approval-wait/failure.d.ts +8 -0
- package/dist/src/runtime/request/approval-wait/failure.js +27 -0
- package/dist/src/runtime/request/approval-wait/park.d.ts +15 -0
- package/dist/src/runtime/request/approval-wait/park.js +89 -0
- package/dist/src/runtime/request/approval-wait/preflight.d.ts +5 -0
- package/dist/src/runtime/request/approval-wait/preflight.js +155 -0
- package/dist/src/runtime/request/approval-wait/snapshot-data.d.ts +2 -0
- package/dist/src/runtime/request/approval-wait/snapshot-data.js +31 -0
- package/dist/src/runtime/request/approval-wait/snapshot.d.ts +38 -0
- package/dist/src/runtime/request/approval-wait/snapshot.js +22 -0
- package/dist/src/runtime/request/approval-wait/super-compaction-restore.d.ts +20 -0
- package/dist/src/runtime/request/approval-wait/super-compaction-restore.js +61 -0
- package/dist/src/runtime/request/automation-output-contract.d.ts +6 -0
- package/dist/src/runtime/request/automation-output-contract.js +33 -0
- package/dist/src/runtime/request/bound-runtime-handler.js +10 -4
- package/dist/src/runtime/request/cancellation.d.ts +15 -0
- package/dist/src/runtime/request/cancellation.js +14 -0
- package/dist/src/runtime/request/capability-execution-freshness.d.ts +8 -0
- package/dist/src/runtime/request/capability-execution-freshness.js +28 -0
- package/dist/src/runtime/request/contracts.d.ts +33 -1
- package/dist/src/runtime/request/execution-agent-root-execution.js +2 -0
- package/dist/src/runtime/request/execution-facets.js +20 -0
- package/dist/src/runtime/request/execution-payload-compacted-evidence.d.ts +64 -0
- package/dist/src/runtime/request/execution-payload-compacted-evidence.js +46 -0
- package/dist/src/runtime/request/execution-scope-surfaces.d.ts +2 -0
- package/dist/src/runtime/request/execution-scope-surfaces.js +47 -0
- package/dist/src/runtime/request/execution-scope.d.ts +8 -2
- package/dist/src/runtime/request/execution-scope.js +14 -2
- package/dist/src/runtime/request/handler.d.ts +13 -1
- package/dist/src/runtime/request/handler.js +359 -186
- package/dist/src/runtime/request/interruption.d.ts +5 -0
- package/dist/src/runtime/request/interruption.js +11 -0
- package/dist/src/runtime/request/locked-request-steering.d.ts +3 -0
- package/dist/src/runtime/request/locked-request-steering.js +12 -0
- package/dist/src/runtime/request/plan-event-projection.d.ts +1 -0
- package/dist/src/runtime/request/plan-event-projection.js +1 -1
- package/dist/src/runtime/request/policy-degraded-finalization.d.ts +10 -0
- package/dist/src/runtime/request/policy-degraded-finalization.js +27 -0
- package/dist/src/runtime/request/prepared-execution.d.ts +89 -0
- package/dist/src/runtime/request/prepared-execution.js +245 -0
- package/dist/src/runtime/request/request-steering.d.ts +1 -1
- package/dist/src/runtime/request/result.d.ts +4 -0
- package/dist/src/runtime/request/role-call-policy.d.ts +4 -0
- package/dist/src/runtime/request/role-call-policy.js +16 -0
- package/dist/src/runtime/request/role-executor-composition.js +4 -3
- package/dist/src/runtime/request/root-child-completion.d.ts +17 -0
- package/dist/src/runtime/request/root-child-completion.js +23 -0
- package/dist/src/runtime/request/root-contract.d.ts +2 -0
- package/dist/src/runtime/request/root-execution-contracts.d.ts +45 -0
- package/dist/src/runtime/request/root-execution-contracts.js +1 -0
- package/dist/src/runtime/request/root-execution-kernel.d.ts +6 -4
- package/dist/src/runtime/request/root-execution-kernel.js +99 -54
- package/dist/src/runtime/request/root-invalid-output-progress.d.ts +4 -0
- package/dist/src/runtime/request/root-invalid-output-progress.js +16 -0
- package/dist/src/runtime/request/root-invalid-output.d.ts +21 -0
- package/dist/src/runtime/request/root-invalid-output.js +145 -0
- package/dist/src/runtime/request/root-response-commit.d.ts +7 -0
- package/dist/src/runtime/request/root-response-commit.js +15 -0
- package/dist/src/runtime/request/runner.d.ts +14 -2
- package/dist/src/runtime/request/runner.js +61 -21
- package/dist/src/runtime/request/session-admission.d.ts +10 -2
- package/dist/src/runtime/request/session-admission.js +56 -12
- package/dist/src/runtime/request/session-artifact-path-persistence.d.ts +1 -1
- package/dist/src/runtime/request/session-store.d.ts +1 -1
- package/dist/src/runtime/request/super-checkpoint-quarantine.d.ts +8 -0
- package/dist/src/runtime/request/super-checkpoint-quarantine.js +76 -0
- package/dist/src/runtime/request/super-context-failure-executor.d.ts +4 -0
- package/dist/src/runtime/request/super-context-failure-executor.js +68 -0
- package/dist/src/runtime/request/super-context-failure-integrity.d.ts +16 -0
- package/dist/src/runtime/request/super-context-failure-integrity.js +130 -0
- package/dist/src/runtime/request/super-context-scope.d.ts +9 -0
- package/dist/src/runtime/request/super-context-scope.js +65 -0
- package/dist/src/runtime/request/super-failure-explanation.d.ts +22 -0
- package/dist/src/runtime/request/super-failure-explanation.js +77 -0
- package/dist/src/runtime/request/super-failure-message.d.ts +10 -0
- package/dist/src/runtime/request/super-failure-message.js +40 -0
- package/dist/src/runtime/request/super-payload-context-failure.d.ts +11 -0
- package/dist/src/runtime/request/super-payload-context-failure.js +55 -0
- package/dist/src/runtime/request/super-root-failure-finalization.d.ts +23 -0
- package/dist/src/runtime/request/super-root-failure-finalization.js +112 -0
- package/dist/src/runtime/request/tool-approval-wait.d.ts +4 -0
- package/dist/src/runtime/request/tool-approval-wait.js +14 -0
- package/dist/src/runtime/request/worker-capability-composition.d.ts +2 -0
- package/dist/src/runtime/request/worker-capability-composition.js +5 -1
- package/dist/src/runtime/request/worker-capability-payload.d.ts +2 -1
- package/dist/src/runtime/request/worker-capability-payload.js +74 -48
- package/dist/src/runtime/runtime-environment.d.ts +8 -4
- package/dist/src/runtime/runtime-environment.js +220 -6
- package/dist/src/runtime/runtime-host-scheduler-ownership.js +12 -1
- package/dist/src/runtime/scheduler/automation-job-management.d.ts +12 -0
- package/dist/src/runtime/scheduler/automation-job-management.js +288 -0
- package/dist/src/runtime/scheduler/automation-rerun.d.ts +6 -0
- package/dist/src/runtime/scheduler/automation-rerun.js +95 -0
- package/dist/src/runtime/scheduler/automation-run-budget.d.ts +4 -0
- package/dist/src/runtime/scheduler/automation-run-budget.js +16 -0
- package/dist/src/runtime/scheduler/automation-run-change-events.d.ts +11 -0
- package/dist/src/runtime/scheduler/automation-run-change-events.js +77 -0
- package/dist/src/runtime/scheduler/automation-run-completion.d.ts +11 -0
- package/dist/src/runtime/scheduler/automation-run-completion.js +93 -0
- package/dist/src/runtime/scheduler/automation-run-control.d.ts +3 -0
- package/dist/src/runtime/scheduler/automation-run-control.js +48 -0
- package/dist/src/runtime/scheduler/automation-run-records.d.ts +5 -0
- package/dist/src/runtime/scheduler/automation-run-records.js +37 -0
- package/dist/src/runtime/scheduler/automation-schedule.d.ts +10 -0
- package/dist/src/runtime/scheduler/automation-schedule.js +48 -0
- package/dist/src/runtime/scheduler/automation-scheduler-engine.d.ts +4 -0
- package/dist/src/runtime/scheduler/automation-scheduler-engine.js +188 -0
- package/dist/src/runtime/scheduler/automation-snapshot-validation.d.ts +3 -0
- package/dist/src/runtime/scheduler/automation-snapshot-validation.js +106 -0
- package/dist/src/runtime/scheduler/contracts.d.ts +149 -5
- package/dist/src/runtime/scheduler/file-store.d.ts +1 -1
- package/dist/src/runtime/scheduler/file-store.js +17 -3
- package/dist/src/runtime/scheduler/job-management.js +7 -4
- package/dist/src/runtime/scheduler/journal-automation-index.d.ts +23 -0
- package/dist/src/runtime/scheduler/journal-automation-index.js +205 -0
- package/dist/src/runtime/scheduler/journal-automation-transaction.d.ts +11 -0
- package/dist/src/runtime/scheduler/journal-automation-transaction.js +90 -0
- package/dist/src/runtime/scheduler/journal-checkpoint.js +5 -2
- package/dist/src/runtime/scheduler/journal-head.d.ts +1 -1
- package/dist/src/runtime/scheduler/journal-head.js +2 -2
- package/dist/src/runtime/scheduler/journal-index-state.d.ts +22 -11
- package/dist/src/runtime/scheduler/journal-index-state.js +76 -17
- package/dist/src/runtime/scheduler/journal-index.d.ts +9 -3
- package/dist/src/runtime/scheduler/journal-index.js +84 -9
- package/dist/src/runtime/scheduler/journal-store.d.ts +12 -2
- package/dist/src/runtime/scheduler/journal-store.js +125 -9
- package/dist/src/runtime/scheduler/journal-transaction.d.ts +7 -4
- package/dist/src/runtime/scheduler/journal-transaction.js +13 -2
- package/dist/src/runtime/scheduler/next-occurrence.js +2 -0
- package/dist/src/runtime/scheduler/run-completion.js +2 -1
- package/dist/src/runtime/scheduler/run-records.js +9 -3
- package/dist/src/runtime/scheduler/schedule-update.d.ts +2 -2
- package/dist/src/runtime/scheduler/schedule-validation.d.ts +2 -2
- package/dist/src/runtime/scheduler/schedule-validation.js +4 -0
- package/dist/src/runtime/scheduler/scheduler-engine.js +26 -9
- package/dist/src/runtime/scheduler/scheduler-service.d.ts +4 -1
- package/dist/src/runtime/scheduler/scheduler-service.js +83 -10
- package/dist/src/runtime/scheduler/scheduler-target.d.ts +9 -0
- package/dist/src/runtime/scheduler/scheduler-target.js +41 -0
- package/dist/src/runtime/scheduler/service-context.d.ts +6 -2
- package/dist/src/runtime/scheduler/service-context.js +6 -3
- package/dist/src/runtime/scheduler/snapshot-validation.d.ts +3 -3
- package/dist/src/runtime/scheduler/snapshot-validation.js +24 -2
- package/dist/src/runtime/scheduler/startup-recovery.d.ts +1 -1
- package/dist/src/runtime/scheduler/startup-recovery.js +15 -2
- package/dist/src/runtime/scheduler/tool-permission-mode.d.ts +5 -0
- package/dist/src/runtime/scheduler/tool-permission-mode.js +14 -0
- package/dist/src/runtime/scheduler/working-store.js +8 -0
- package/dist/src/runtime/session/cancelled-response.d.ts +12 -0
- package/dist/src/runtime/session/cancelled-response.js +39 -0
- package/dist/src/runtime/session/request-activation.d.ts +3 -0
- package/dist/src/runtime/session/request-activation.js +43 -0
- package/dist/src/runtime/session/request-history.js +8 -1
- package/dist/src/runtime/session/request-session.d.ts +4 -0
- package/dist/src/runtime/session/request-session.js +16 -0
- package/dist/src/runtime/session/session-deletion-boundary.d.ts +1 -1
- package/dist/src/runtime/session/session-deletion-boundary.js +6 -2
- package/dist/src/runtime/session/session-lifecycle-store.d.ts +4 -1
- package/dist/src/runtime/session/session-lifecycle-store.js +51 -4
- package/dist/src/runtime/session/session-title.js +19 -2
- package/dist/src/runtime/session/spark-session-attachments.d.ts +4 -0
- package/dist/src/runtime/session/spark-session-attachments.js +28 -0
- package/dist/src/runtime/session/spark-session-cleanup-receipt.d.ts +7 -0
- package/dist/src/runtime/session/spark-session-cleanup-receipt.js +61 -0
- package/dist/src/runtime/session/spark-session-clear.d.ts +6 -0
- package/dist/src/runtime/session/spark-session-clear.js +36 -0
- package/dist/src/runtime/session/terminal-response.d.ts +21 -0
- package/dist/src/runtime/session/terminal-response.js +38 -0
- package/dist/src/runtime/steps/auditor-decision/advisory-receipt.d.ts +1 -0
- package/dist/src/runtime/steps/auditor-decision/advisory-receipt.js +12 -0
- package/dist/src/runtime/steps/auditor-decision/contracts.d.ts +4 -0
- package/dist/src/runtime/steps/auditor-decision/evidence-coverage.js +5 -5
- package/dist/src/runtime/steps/auditor-decision/evidence-inventory.d.ts +2 -1
- package/dist/src/runtime/steps/auditor-decision/evidence-inventory.js +12 -1
- package/dist/src/runtime/steps/auditor-decision/evidence-representation.d.ts +8 -2
- package/dist/src/runtime/steps/auditor-decision/evidence-representation.js +14 -1
- package/dist/src/runtime/steps/auditor-decision/input.d.ts +2 -0
- package/dist/src/runtime/steps/auditor-decision/input.js +13 -3
- package/dist/src/runtime/steps/auditor-decision/projection.js +20 -1
- package/dist/src/runtime/steps/auditor-decision/prompt.js +6 -6
- package/dist/src/runtime/steps/auditor-decision/run.js +3 -3
- package/dist/src/runtime/steps/capability-execution-instructions.d.ts +5 -0
- package/dist/src/runtime/steps/capability-execution-instructions.js +5 -0
- package/dist/src/runtime/steps/degraded-finalization/contract.d.ts +3 -0
- package/dist/src/runtime/steps/degraded-finalization/fallback.js +14 -4
- package/dist/src/runtime/steps/degraded-finalization/input.d.ts +1 -0
- package/dist/src/runtime/steps/degraded-finalization/input.js +12 -2
- package/dist/src/runtime/steps/degraded-finalization/model-authored.d.ts +8 -0
- package/dist/src/runtime/steps/degraded-finalization/model-authored.js +81 -0
- package/dist/src/runtime/steps/degraded-finalization/output-limit-cause.d.ts +4 -0
- package/dist/src/runtime/steps/degraded-finalization/output-limit-cause.js +17 -0
- package/dist/src/runtime/steps/degraded-finalization/prompt.js +4 -1
- package/dist/src/runtime/steps/degraded-finalization/render.js +2 -1
- package/dist/src/runtime/steps/degraded-finalization/super.d.ts +20 -0
- package/dist/src/runtime/steps/degraded-finalization/super.js +128 -0
- package/dist/src/runtime/steps/execution-agent/capability-decision-parsing.d.ts +1 -0
- package/dist/src/runtime/steps/execution-agent/capability-decision-parsing.js +21 -3
- package/dist/src/runtime/steps/execution-agent/capability-invocation-contract.d.ts +1 -1
- package/dist/src/runtime/steps/execution-agent/capability-invocation-contract.js +4 -2
- package/dist/src/runtime/steps/execution-agent/capability-selection-schema.d.ts +3 -0
- package/dist/src/runtime/steps/execution-agent/capability-selection-schema.js +72 -0
- package/dist/src/runtime/steps/execution-agent/compaction.d.ts +5 -2
- package/dist/src/runtime/steps/execution-agent/compaction.js +10 -4
- package/dist/src/runtime/steps/execution-agent/contracts.d.ts +14 -2
- package/dist/src/runtime/steps/execution-agent/controls-compacted-evidence.d.ts +16 -0
- package/dist/src/runtime/steps/execution-agent/controls-compacted-evidence.js +67 -0
- package/dist/src/runtime/steps/execution-agent/controls-evidence-contract.d.ts +21 -0
- package/dist/src/runtime/steps/execution-agent/controls-evidence-contract.js +64 -0
- package/dist/src/runtime/steps/execution-agent/controls-evidence.d.ts +32 -0
- package/dist/src/runtime/steps/execution-agent/controls-evidence.js +119 -0
- package/dist/src/runtime/steps/execution-agent/decision-parsing.js +1 -0
- package/dist/src/runtime/steps/execution-agent/format.d.ts +2 -0
- package/dist/src/runtime/steps/execution-agent/format.js +9 -68
- package/dist/src/runtime/steps/execution-agent/input.js +36 -15
- package/dist/src/runtime/steps/execution-agent/prompt.d.ts +1 -0
- package/dist/src/runtime/steps/execution-agent/prompt.js +15 -2
- package/dist/src/runtime/steps/execution-agent/refinement-input.d.ts +32 -0
- package/dist/src/runtime/steps/execution-agent/refinement-input.js +146 -0
- package/dist/src/runtime/steps/execution-agent/refinement-prompt.d.ts +1 -0
- package/dist/src/runtime/steps/execution-agent/refinement-prompt.js +11 -0
- package/dist/src/runtime/steps/execution-agent/refinement.d.ts +4 -4
- package/dist/src/runtime/steps/execution-agent/refinement.js +18 -108
- package/dist/src/runtime/steps/execution-agent/response-input.d.ts +1 -0
- package/dist/src/runtime/steps/execution-agent/response-input.js +14 -6
- package/dist/src/runtime/steps/execution-agent/response-prompt.js +1 -1
- package/dist/src/runtime/steps/execution-agent/response-run.js +31 -5
- package/dist/src/runtime/steps/execution-agent/run.js +9 -3
- package/dist/src/runtime/steps/execution-agent/state-context.d.ts +1 -1
- package/dist/src/runtime/steps/execution-agent/state-context.js +20 -5
- package/dist/src/runtime/steps/model-step-timeout.d.ts +9 -0
- package/dist/src/runtime/steps/model-step-timeout.js +13 -1
- package/dist/src/runtime/steps/planner-decision/contracts.d.ts +0 -1
- package/dist/src/runtime/steps/planner-decision/contracts.js +1 -2
- package/dist/src/runtime/steps/planner-decision/format.js +3 -15
- package/dist/src/runtime/steps/planner-decision/input.js +7 -0
- package/dist/src/runtime/steps/planner-decision/parser.js +9 -4
- package/dist/src/runtime/steps/planner-decision/prompt.js +1 -2
- package/dist/src/runtime/steps/planner-decision/resume.d.ts +2 -1
- package/dist/src/runtime/steps/planner-decision/resume.js +3 -3
- package/dist/src/runtime/steps/planner-decision/run.js +13 -0
- package/dist/src/runtime/steps/planner-graph/prompt.js +2 -0
- package/dist/src/runtime/steps/planner-graph/run.js +1 -0
- package/dist/src/runtime/steps/reviewer-decision/projection.js +5 -0
- package/dist/src/runtime/steps/reviewer-decision/run.js +13 -0
- package/dist/src/runtime/steps/supervisor-decision/input.d.ts +1 -1
- package/dist/src/runtime/steps/supervisor-decision/input.js +18 -12
- package/dist/src/runtime/steps/supervisor-decision/resume.js +2 -2
- package/dist/src/runtime/steps/supervisor-decision/run.js +14 -0
- package/dist/src/runtime/steps/supervisor-decision/working-directory.d.ts +2 -0
- package/dist/src/runtime/steps/supervisor-decision/working-directory.js +6 -0
- package/dist/src/runtime/steps/supervisor-response/input.d.ts +4 -1
- package/dist/src/runtime/steps/supervisor-response/input.js +15 -5
- package/dist/src/runtime/steps/supervisor-response/memory-authoring.d.ts +2 -0
- package/dist/src/runtime/steps/supervisor-response/memory-authoring.js +6 -41
- package/dist/src/runtime/steps/supervisor-response/prompt.d.ts +2 -0
- package/dist/src/runtime/steps/supervisor-response/prompt.js +9 -2
- package/dist/src/runtime/steps/supervisor-response/run.js +55 -10
- package/dist/src/runtime/steps/worker-decision/compaction-integrity.d.ts +11 -0
- package/dist/src/runtime/steps/worker-decision/compaction-integrity.js +40 -0
- package/dist/src/runtime/steps/worker-decision/contracts.d.ts +0 -1
- package/dist/src/runtime/steps/worker-decision/contracts.js +0 -2
- package/dist/src/runtime/steps/worker-decision/format.js +2 -11
- package/dist/src/runtime/steps/worker-decision/input/reference-context.js +7 -0
- package/dist/src/runtime/steps/worker-decision/input/types.d.ts +4 -1
- package/dist/src/runtime/steps/worker-decision/parser/action-validation.d.ts +1 -1
- package/dist/src/runtime/steps/worker-decision/parser/action-validation.js +5 -3
- package/dist/src/runtime/steps/worker-decision/prompt.js +18 -18
- package/dist/src/runtime/steps/worker-decision/result-author.js +5 -15
- package/dist/src/runtime/steps/worker-decision/run.js +19 -49
- package/dist/src/runtime/steps/worker-decision/worker-handoff-compaction.d.ts +4 -0
- package/dist/src/runtime/steps/worker-decision/worker-handoff-compaction.js +69 -0
- package/dist/src/runtime/streaming/request-callbacks.d.ts +8 -1
- package/dist/src/runtime/streaming/request-callbacks.js +12 -4
- package/dist/src/sessions/assistant-initiative-append.d.ts +14 -0
- package/dist/src/sessions/assistant-initiative-append.js +64 -0
- package/dist/src/sessions/assistant-initiative.d.ts +30 -0
- package/dist/src/sessions/assistant-initiative.js +66 -0
- package/dist/src/sessions/automation-session-origin.d.ts +34 -0
- package/dist/src/sessions/automation-session-origin.js +78 -0
- package/dist/src/sessions/automation-session-store.d.ts +12 -0
- package/dist/src/sessions/automation-session-store.js +129 -0
- package/dist/src/sessions/context-window.js +2 -0
- package/dist/src/sessions/durable-session-commit.d.ts +9 -0
- package/dist/src/sessions/durable-session-commit.js +51 -0
- package/dist/src/sessions/index.d.ts +1 -0
- package/dist/src/sessions/index.js +3 -0
- package/dist/src/sessions/memory/source.d.ts +2 -0
- package/dist/src/sessions/memory/source.js +11 -1
- package/dist/src/sessions/project-binding.d.ts +1 -0
- package/dist/src/sessions/record/projection.d.ts +1 -0
- package/dist/src/sessions/record/projection.js +13 -0
- package/dist/src/sessions/request-lifecycle/activation-transitions.d.ts +4 -0
- package/dist/src/sessions/request-lifecycle/activation-transitions.js +140 -0
- package/dist/src/sessions/request-lifecycle/approval-decisions.d.ts +3 -0
- package/dist/src/sessions/request-lifecycle/approval-decisions.js +109 -0
- package/dist/src/sessions/request-lifecycle/continuation-blobs.d.ts +13 -0
- package/dist/src/sessions/request-lifecycle/continuation-blobs.js +114 -0
- package/dist/src/sessions/request-lifecycle/continuation-cleanup.d.ts +7 -0
- package/dist/src/sessions/request-lifecycle/continuation-cleanup.js +49 -0
- package/dist/src/sessions/request-lifecycle/contracts.d.ts +169 -0
- package/dist/src/sessions/request-lifecycle/contracts.js +1 -0
- package/dist/src/sessions/request-lifecycle/projection.d.ts +4 -0
- package/dist/src/sessions/request-lifecycle/projection.js +30 -0
- package/dist/src/sessions/request-lifecycle/record-operations.d.ts +27 -0
- package/dist/src/sessions/request-lifecycle/record-operations.js +109 -0
- package/dist/src/sessions/request-lifecycle/service.d.ts +12 -0
- package/dist/src/sessions/request-lifecycle/service.js +95 -0
- package/dist/src/sessions/request-lifecycle/terminal-transitions.d.ts +5 -0
- package/dist/src/sessions/request-lifecycle/terminal-transitions.js +103 -0
- package/dist/src/sessions/request-lifecycle/wait-initial-decisions.d.ts +4 -0
- package/dist/src/sessions/request-lifecycle/wait-initial-decisions.js +34 -0
- package/dist/src/sessions/session-service.d.ts +13 -0
- package/dist/src/sessions/session-service.js +105 -15
- package/dist/src/sessions/session-store.d.ts +1 -1
- package/dist/src/sessions/session-store.js +9 -1
- package/dist/src/sessions/spark-handoff-brief.d.ts +3 -0
- package/dist/src/sessions/spark-handoff-brief.js +9 -0
- package/dist/src/sessions/spark-session.d.ts +13 -0
- package/dist/src/sessions/spark-session.js +25 -0
- package/dist/src/sessions/types.d.ts +17 -2
- package/dist/src/shared/model-step-registry-data.json +9 -0
- package/dist/src/shared/model-step-registry.d.ts +9 -0
- package/dist/src/shared/model-step-registry.generated.d.ts +9 -0
- package/dist/src/shared/model-step-registry.generated.js +9 -0
- package/dist/src/shared/passive-observation.d.ts +46 -0
- package/dist/src/shared/passive-observation.js +2 -0
- package/dist/src/web-ui/app/ARCHITECTURE.md +129 -3
- package/dist/src/web-ui/app/app-bootstrap.js +68 -3
- package/dist/src/web-ui/app/app-dom.js +28 -0
- package/dist/src/web-ui/app/app-page-bindings.js +46 -0
- package/dist/src/web-ui/app/app-realtime-transport.js +67 -0
- package/dist/src/web-ui/app/app-state.js +1 -0
- package/dist/src/web-ui/app/app.js +90 -81
- package/dist/src/web-ui/app/automations-feature.js +103 -0
- package/dist/src/web-ui/app/components/automations/archive-actions.js +20 -0
- package/dist/src/web-ui/app/components/automations/authoring-entry.js +25 -0
- package/dist/src/web-ui/app/components/automations/binding-editor.js +101 -0
- package/dist/src/web-ui/app/components/automations/binding-fields.js +166 -0
- package/dist/src/web-ui/app/components/automations/chat-run-projection.js +280 -0
- package/dist/src/web-ui/app/components/automations/draft-recovery-actions.js +28 -0
- package/dist/src/web-ui/app/components/automations/editor-action-icons.js +18 -0
- package/dist/src/web-ui/app/components/automations/editor-actions.js +57 -0
- package/dist/src/web-ui/app/components/automations/editor.js +218 -0
- package/dist/src/web-ui/app/components/automations/failure-presentation.js +299 -0
- package/dist/src/web-ui/app/components/automations/library-tabs.js +45 -0
- package/dist/src/web-ui/app/components/automations/list.js +58 -0
- package/dist/src/web-ui/app/components/automations/live-view.js +39 -0
- package/dist/src/web-ui/app/components/automations/node-inspector.js +251 -0
- package/dist/src/web-ui/app/components/automations/permission-selection.js +37 -0
- package/dist/src/web-ui/app/components/automations/rerun-confirmation.js +16 -0
- package/dist/src/web-ui/app/components/automations/run-output-view.js +100 -0
- package/dist/src/web-ui/app/components/automations/run-report-view.js +224 -0
- package/dist/src/web-ui/app/components/automations/run-step-selection.js +7 -0
- package/dist/src/web-ui/app/components/automations/run-steps-view.js +33 -0
- package/dist/src/web-ui/app/components/automations/run.js +38 -0
- package/dist/src/web-ui/app/components/automations/schema-literal-inputs.js +212 -0
- package/dist/src/web-ui/app/components/automations/step-editor-dialog.js +243 -0
- package/dist/src/web-ui/app/components/automations/step-preview.js +48 -0
- package/dist/src/web-ui/app/components/automations/template-gallery.js +74 -0
- package/dist/src/web-ui/app/components/automations/timeline-camera.js +219 -0
- package/dist/src/web-ui/app/components/automations/timeline.js +141 -0
- package/dist/src/web-ui/app/components/automations/tool-identity.js +25 -0
- package/dist/src/web-ui/app/components/automations/workspace.js +462 -0
- package/dist/src/web-ui/app/components/composer-actions.d.ts +4 -0
- package/dist/src/web-ui/app/components/composer-actions.js +20 -0
- package/dist/src/web-ui/app/components/composer-context-window.js +24 -13
- package/dist/src/web-ui/app/components/config-workspace/calibration-disclosure.js +39 -0
- package/dist/src/web-ui/app/components/config-workspace/config-model.js +3 -5
- package/dist/src/web-ui/app/components/config-workspace/dashboard-rendering.js +3 -20
- package/dist/src/web-ui/app/components/config-workspace/model-removal.js +105 -0
- package/dist/src/web-ui/app/components/config-workspace/model-rendering.js +68 -39
- package/dist/src/web-ui/app/components/config-workspace/model-setup-entry.js +6 -3
- package/dist/src/web-ui/app/components/config-workspace/raw-config-repair.js +1 -1
- package/dist/src/web-ui/app/components/config-workspace/workspace-events.js +19 -42
- package/dist/src/web-ui/app/components/config-workspace/workspace-mutations.js +1 -1
- package/dist/src/web-ui/app/components/config-workspace/workspace-persistence.js +0 -2
- package/dist/src/web-ui/app/components/config-workspace/workspace-view.js +66 -51
- package/dist/src/web-ui/app/components/config-workspace.js +23 -7
- package/dist/src/web-ui/app/components/conversation-activity.d.ts +2 -28
- package/dist/src/web-ui/app/components/conversation-activity.js +50 -83
- package/dist/src/web-ui/app/components/conversation-file-focus.js +3 -0
- package/dist/src/web-ui/app/components/conversation-reasoning.d.ts +9 -0
- package/dist/src/web-ui/app/components/conversation-reasoning.js +46 -0
- package/dist/src/web-ui/app/components/conversation-role-cards.d.ts +1 -8
- package/dist/src/web-ui/app/components/conversation-role-cards.js +24 -57
- package/dist/src/web-ui/app/components/conversation-sources.js +2 -2
- package/dist/src/web-ui/app/components/conversation-status.js +3 -2
- package/dist/src/web-ui/app/components/conversation-tool-evidence.js +6 -0
- package/dist/src/web-ui/app/components/conversation-tools.js +1 -1
- package/dist/src/web-ui/app/components/conversation-view.js +45 -42
- package/dist/src/web-ui/app/components/dashboard/activity.js +1 -1
- package/dist/src/web-ui/app/components/dashboard/approvals.js +168 -0
- package/dist/src/web-ui/app/components/dashboard/automations.js +28 -0
- package/dist/src/web-ui/app/components/dashboard/recent-conversations.js +16 -22
- package/dist/src/web-ui/app/components/dashboard/workspace.js +62 -58
- package/dist/src/web-ui/app/components/home-guidance/daily-review-entry.js +24 -0
- package/dist/src/web-ui/app/components/home-guidance/daily-review.js +80 -0
- package/dist/src/web-ui/app/components/home-guidance/home-guidance.js +160 -0
- package/dist/src/web-ui/app/components/home-guidance/suggestion-policy.js +35 -0
- package/dist/src/web-ui/app/components/long-term-memory/manager.js +8 -1
- package/dist/src/web-ui/app/components/long-term-memory/record-list.js +7 -0
- package/dist/src/web-ui/app/components/long-term-memory/view-model.js +3 -0
- package/dist/src/web-ui/app/components/long-term-memory/workspace.js +48 -0
- package/dist/src/web-ui/app/components/model-setup/rendering.js +1 -1
- package/dist/src/web-ui/app/components/model-setup/save-flow.js +11 -6
- package/dist/src/web-ui/app/components/model-setup/save-outcome.js +16 -0
- package/dist/src/web-ui/app/components/model-setup/wizard.d.ts +1 -0
- package/dist/src/web-ui/app/components/model-setup/wizard.js +4 -0
- package/dist/src/web-ui/app/components/notifications/dom.js +33 -0
- package/dist/src/web-ui/app/components/notifications/feedback.js +34 -0
- package/dist/src/web-ui/app/components/notifications/focus.js +56 -0
- package/dist/src/web-ui/app/components/notifications/home-entry.js +35 -0
- package/dist/src/web-ui/app/components/notifications/pagination.js +13 -0
- package/dist/src/web-ui/app/components/notifications/presentation.js +144 -0
- package/dist/src/web-ui/app/components/notifications/tabs.js +49 -0
- package/dist/src/web-ui/app/components/notifications/workspace.js +108 -0
- package/dist/src/web-ui/app/components/onboarding-workspace-access.js +53 -0
- package/dist/src/web-ui/app/components/operations-section.js +9 -2
- package/dist/src/web-ui/app/components/passive-learning/activity-controls.js +91 -0
- package/dist/src/web-ui/app/components/passive-learning/agent-motion.js +37 -0
- package/dist/src/web-ui/app/components/passive-learning/agent-state.js +126 -0
- package/dist/src/web-ui/app/components/passive-learning/agent-view.js +40 -0
- package/dist/src/web-ui/app/components/passive-learning/application-actions.js +22 -0
- package/dist/src/web-ui/app/components/passive-learning/applications-view.js +126 -0
- package/dist/src/web-ui/app/components/passive-learning/batch-detail.js +143 -0
- package/dist/src/web-ui/app/components/passive-learning/computer-update-notice.js +13 -0
- package/dist/src/web-ui/app/components/passive-learning/diagnostics-view.js +28 -0
- package/dist/src/web-ui/app/components/passive-learning/failure-copy.js +141 -0
- package/dist/src/web-ui/app/components/passive-learning/home.js +97 -0
- package/dist/src/web-ui/app/components/passive-learning/knowledge-view.js +137 -0
- package/dist/src/web-ui/app/components/passive-learning/macos-collection-consent.js +78 -0
- package/dist/src/web-ui/app/components/passive-learning/macos-collection-restart-notice.js +52 -0
- package/dist/src/web-ui/app/components/passive-learning/memory.js +232 -0
- package/dist/src/web-ui/app/components/passive-learning/presentation.js +183 -0
- package/dist/src/web-ui/app/components/passive-learning/processing-state.js +13 -0
- package/dist/src/web-ui/app/components/passive-learning/settings-view.js +82 -0
- package/dist/src/web-ui/app/components/passive-learning/settings.js +178 -0
- package/dist/src/web-ui/app/components/passive-learning/usage-view.js +60 -0
- package/dist/src/web-ui/app/components/passive-learning/workspace-view.js +67 -0
- package/dist/src/web-ui/app/components/plugins/rendering.js +2 -2
- package/dist/src/web-ui/app/components/project-session-groups.js +66 -10
- package/dist/src/web-ui/app/components/project-session-preview.js +52 -0
- package/dist/src/web-ui/app/components/runtime-config-activation.js +16 -12
- package/dist/src/web-ui/app/components/runtime-setup/configuration-recovery.js +3 -3
- package/dist/src/web-ui/app/components/runtime-setup/connection-form.js +1 -1
- package/dist/src/web-ui/app/components/runtime-setup/optional-steps.js +11 -1
- package/dist/src/web-ui/app/components/runtime-setup-guide.d.ts +8 -2
- package/dist/src/web-ui/app/components/runtime-setup-guide.js +8 -3
- package/dist/src/web-ui/app/components/schedules/details.js +13 -6
- package/dist/src/web-ui/app/components/schedules/form.js +13 -5
- package/dist/src/web-ui/app/components/schedules/workspace-state.js +3 -1
- package/dist/src/web-ui/app/components/schedules/workspace.js +23 -28
- package/dist/src/web-ui/app/components/session-sidebar-drag.js +58 -0
- package/dist/src/web-ui/app/components/session-sidebar-sections.js +43 -0
- package/dist/src/web-ui/app/components/spark-chat/empty-state.js +45 -0
- package/dist/src/web-ui/app/components/spark-chat/handoff-actions.js +59 -0
- package/dist/src/web-ui/app/components/spark-chat/mascot-activity.js +27 -0
- package/dist/src/web-ui/app/components/spark-chat/motion.js +52 -0
- package/dist/src/web-ui/app/components/spark-chat/panel.js +109 -0
- package/dist/src/web-ui/app/components/spark-chat/placement.js +198 -0
- package/dist/src/web-ui/app/components/spark-chat/results.js +44 -0
- package/dist/src/web-ui/app/components/spark-chat/settings.js +84 -0
- package/dist/src/web-ui/app/components/startup-screen.js +30 -0
- package/dist/src/web-ui/app/components/system-host/macos-connection-actions.js +92 -0
- package/dist/src/web-ui/app/components/system-host/macos-permission-dialog.js +95 -0
- package/dist/src/web-ui/app/components/system-host/macos-permission-preparation.js +83 -0
- package/dist/src/web-ui/app/components/system-host/macos-permission-rendering.js +85 -0
- package/dist/src/web-ui/app/components/system-host/macos-permission-scopes.js +51 -0
- package/dist/src/web-ui/app/components/system-host/macos-permissions.js +36 -0
- package/dist/src/web-ui/app/components/system-host/macos-setup.js +91 -0
- package/dist/src/web-ui/app/components/system-host/manager.js +82 -1
- package/dist/src/web-ui/app/components/system-host/rendering.js +87 -23
- package/dist/src/web-ui/app/components/system-host/setup-notice.js +2 -2
- package/dist/src/web-ui/app/components/tool-approval-card.js +8 -6
- package/dist/src/web-ui/app/components/workspace-shell.js +127 -16
- package/dist/src/web-ui/app/computer-access-feature.js +72 -0
- package/dist/src/web-ui/app/configuration-feature.js +85 -27
- package/dist/src/web-ui/app/controllers/app-event-bindings.js +115 -59
- package/dist/src/web-ui/app/controllers/automation-draft-actions.js +153 -0
- package/dist/src/web-ui/app/controllers/automation-management-actions.js +75 -0
- package/dist/src/web-ui/app/controllers/automation-mutation-lifecycle.js +32 -0
- package/dist/src/web-ui/app/controllers/automation-read-projection.js +63 -0
- package/dist/src/web-ui/app/controllers/automation-run-actions.js +54 -0
- package/dist/src/web-ui/app/controllers/automation-view-scope.js +19 -0
- package/dist/src/web-ui/app/controllers/automations-controller.js +395 -0
- package/dist/src/web-ui/app/controllers/chat-request-controller.js +1 -1
- package/dist/src/web-ui/app/controllers/composer-queue-controller.d.ts +3 -2
- package/dist/src/web-ui/app/controllers/composer-queue-controller.js +30 -17
- package/dist/src/web-ui/app/controllers/composer-stop-controller.d.ts +9 -0
- package/dist/src/web-ui/app/controllers/composer-stop-controller.js +64 -0
- package/dist/src/web-ui/app/controllers/composer-submit-controller.d.ts +4 -0
- package/dist/src/web-ui/app/controllers/composer-submit-controller.js +44 -6
- package/dist/src/web-ui/app/controllers/conversation-read-state-controller.js +3 -0
- package/dist/src/web-ui/app/controllers/conversation-session-controller.d.ts +10 -2
- package/dist/src/web-ui/app/controllers/conversation-session-controller.js +99 -33
- package/dist/src/web-ui/app/controllers/conversation-view-feature.js +2 -1
- package/dist/src/web-ui/app/controllers/daily-memory-review.js +151 -0
- package/dist/src/web-ui/app/controllers/dashboard-approvals-controller.js +141 -0
- package/dist/src/web-ui/app/controllers/dashboard-controller.js +100 -17
- package/dist/src/web-ui/app/controllers/long-term-memory/controller.d.ts +3 -0
- package/dist/src/web-ui/app/controllers/long-term-memory/controller.js +11 -1
- package/dist/src/web-ui/app/controllers/long-term-memory/state.js +1 -0
- package/dist/src/web-ui/app/controllers/notification-presence.js +68 -0
- package/dist/src/web-ui/app/controllers/notifications-controller.js +153 -0
- package/dist/src/web-ui/app/controllers/operations-controller.d.ts +4 -2
- package/dist/src/web-ui/app/controllers/operations-controller.js +27 -4
- package/dist/src/web-ui/app/controllers/passive-learning-controller.js +406 -0
- package/dist/src/web-ui/app/controllers/projects-controller.d.ts +2 -0
- package/dist/src/web-ui/app/controllers/projects-controller.js +53 -18
- package/dist/src/web-ui/app/controllers/realtime-event-controller.d.ts +1 -1
- package/dist/src/web-ui/app/controllers/realtime-event-controller.js +95 -166
- package/dist/src/web-ui/app/controllers/request-lifecycle-controller.d.ts +12 -0
- package/dist/src/web-ui/app/controllers/request-lifecycle-controller.js +61 -0
- package/dist/src/web-ui/app/controllers/runtime-onboarding-controller.d.ts +4 -1
- package/dist/src/web-ui/app/controllers/runtime-onboarding-controller.js +14 -3
- package/dist/src/web-ui/app/controllers/runtime-selection-controller.js +0 -2
- package/dist/src/web-ui/app/controllers/schedules-controller.js +118 -50
- package/dist/src/web-ui/app/controllers/session-controller.js +16 -42
- package/dist/src/web-ui/app/controllers/session-sidebar-controller.js +159 -0
- package/dist/src/web-ui/app/controllers/spark-chat-notices.js +34 -0
- package/dist/src/web-ui/app/controllers/spark-chat-reading.js +145 -0
- package/dist/src/web-ui/app/controllers/spark-chat-sync.js +151 -0
- package/dist/src/web-ui/app/controllers/spark-handoff-navigation.js +32 -0
- package/dist/src/web-ui/app/controllers/tool-approval-controller.d.ts +3 -0
- package/dist/src/web-ui/app/controllers/tool-approval-controller.js +65 -4
- package/dist/src/web-ui/app/controllers/workspace-route-controller.js +356 -0
- package/dist/src/web-ui/app/dashboard-feature.js +19 -5
- package/dist/src/web-ui/app/favicon.svg +12 -0
- package/dist/src/web-ui/app/index.html +227 -44
- package/dist/src/web-ui/app/lib/approval-decision-command.js +14 -0
- package/dist/src/web-ui/app/lib/automation-binding-producers.js +47 -0
- package/dist/src/web-ui/app/lib/automation-graph-position.js +19 -0
- package/dist/src/web-ui/app/lib/automation-parallel-depth.js +19 -0
- package/dist/src/web-ui/app/lib/configuration-pages.js +29 -0
- package/dist/src/web-ui/app/lib/context-compaction-state.d.ts +41 -0
- package/dist/src/web-ui/app/lib/context-compaction-state.js +172 -0
- package/dist/src/web-ui/app/lib/context-window-measurement.d.ts +33 -0
- package/dist/src/web-ui/app/lib/context-window-measurement.js +99 -0
- package/dist/src/web-ui/app/lib/context-window-replay.d.ts +32 -0
- package/dist/src/web-ui/app/lib/context-window-replay.js +38 -0
- package/dist/src/web-ui/app/lib/context-window-snapshot-order.d.ts +16 -8
- package/dist/src/web-ui/app/lib/context-window-snapshot-order.js +29 -9
- package/dist/src/web-ui/app/lib/context-window-state.d.ts +80 -0
- package/dist/src/web-ui/app/lib/context-window-state.js +341 -0
- package/dist/src/web-ui/app/lib/conversation-role-model.js +4 -1
- package/dist/src/web-ui/app/lib/conversation-status-model.js +15 -3
- package/dist/src/web-ui/app/lib/dashboard-presentation.js +1 -0
- package/dist/src/web-ui/app/lib/event-presentation.d.ts +1 -0
- package/dist/src/web-ui/app/lib/event-presentation.js +25 -4
- package/dist/src/web-ui/app/lib/event-refresh.js +85 -0
- package/dist/src/web-ui/app/lib/live-region.js +96 -0
- package/dist/src/web-ui/app/lib/realtime-message.js +9 -0
- package/dist/src/web-ui/app/lib/request-lifecycle-view.d.ts +23 -0
- package/dist/src/web-ui/app/lib/request-lifecycle-view.js +83 -0
- package/dist/src/web-ui/app/lib/request-stop-state.js +53 -0
- package/dist/src/web-ui/app/lib/schedule-conversation-presentation.js +19 -0
- package/dist/src/web-ui/app/lib/schedule-presentation.js +12 -2
- package/dist/src/web-ui/app/lib/session-archive-visibility.js +4 -0
- package/dist/src/web-ui/app/lib/session-sidebar-order.js +35 -0
- package/dist/src/web-ui/app/lib/spark-chat-address.js +22 -0
- package/dist/src/web-ui/app/lib/spark-chat-presentation.js +16 -0
- package/dist/src/web-ui/app/lib/spark-chat-read-state.js +13 -0
- package/dist/src/web-ui/app/lib/spark-proposal-message.js +13 -0
- package/dist/src/web-ui/app/lib/tool-activity-event.d.ts +1 -0
- package/dist/src/web-ui/app/lib/tool-activity-event.js +8 -3
- package/dist/src/web-ui/app/lib/tool-activity-model.js +31 -7
- package/dist/src/web-ui/app/lib/tool-approval-acknowledgement.js +7 -0
- package/dist/src/web-ui/app/lib/tool-approval-activity.d.ts +4 -0
- package/dist/src/web-ui/app/lib/tool-approval-activity.js +33 -0
- package/dist/src/web-ui/app/lib/tool-automation-activity-fields.js +59 -0
- package/dist/src/web-ui/app/lib/tool-computer-activity-fields.js +74 -0
- package/dist/src/web-ui/app/lib/tool-process-activity-fields.js +1 -1
- package/dist/src/web-ui/app/lib/workspace-change.js +34 -0
- package/dist/src/web-ui/app/lib/workspace-route.d.ts +24 -0
- package/dist/src/web-ui/app/lib/workspace-route.js +71 -0
- package/dist/src/web-ui/app/notifications-feature.js +108 -0
- package/dist/src/web-ui/app/passive-learning-feature.js +73 -0
- package/dist/src/web-ui/app/projects-feature.js +63 -8
- package/dist/src/web-ui/app/runtime-onboarding-feature.js +6 -1
- package/dist/src/web-ui/app/schedules-feature.js +60 -7
- package/dist/src/web-ui/app/services/client-preferences.d.ts +6 -0
- package/dist/src/web-ui/app/services/client-preferences.js +3 -0
- package/dist/src/web-ui/app/services/home-guidance-preferences.js +47 -0
- package/dist/src/web-ui/app/services/runtime-web-client/automations.d.ts +36 -0
- package/dist/src/web-ui/app/services/runtime-web-client/automations.js +63 -0
- package/dist/src/web-ui/app/services/runtime-web-client/configuration.js +6 -0
- package/dist/src/web-ui/app/services/runtime-web-client/learning.js +63 -0
- package/dist/src/web-ui/app/services/runtime-web-client/memory.js +5 -2
- package/dist/src/web-ui/app/services/runtime-web-client/notifications.d.ts +30 -0
- package/dist/src/web-ui/app/services/runtime-web-client/notifications.js +27 -0
- package/dist/src/web-ui/app/services/runtime-web-client/schedules.js +9 -0
- package/dist/src/web-ui/app/services/runtime-web-client/spark-chat.d.ts +22 -0
- package/dist/src/web-ui/app/services/runtime-web-client/spark-chat.js +29 -0
- package/dist/src/web-ui/app/services/runtime-web-client/system-host.js +8 -4
- package/dist/src/web-ui/app/services/runtime-web-client/tool-approvals.d.ts +20 -0
- package/dist/src/web-ui/app/services/runtime-web-client/tool-approvals.js +72 -0
- package/dist/src/web-ui/app/services/runtime-web-client.d.ts +88 -5
- package/dist/src/web-ui/app/services/runtime-web-client.js +55 -13
- package/dist/src/web-ui/app/services/session-sidebar-preferences.js +42 -0
- package/dist/src/web-ui/app/spark-chat-conversation.js +217 -0
- package/dist/src/web-ui/app/spark-chat-feature.js +187 -0
- package/dist/src/web-ui/app/spark-mascot.svg +12 -0
- package/dist/src/web-ui/app/styles/00-tokens-base.css +59 -46
- package/dist/src/web-ui/app/styles/10-shell-sessions.css +46 -338
- package/dist/src/web-ui/app/styles/11-workspace-header-width.css +133 -0
- package/dist/src/web-ui/app/styles/11-workspace-rail.css +366 -0
- package/dist/src/web-ui/app/styles/12-conversation-sidebar.css +136 -22
- package/dist/src/web-ui/app/styles/13-projects.css +152 -34
- package/dist/src/web-ui/app/styles/14-startup-screen.css +37 -0
- package/dist/src/web-ui/app/styles/18-dashboard.css +126 -97
- package/dist/src/web-ui/app/styles/19-dashboard-approvals.css +108 -0
- package/dist/src/web-ui/app/styles/19-dashboard-automations.css +32 -0
- package/dist/src/web-ui/app/styles/19-home-guidance.css +110 -0
- package/dist/src/web-ui/app/styles/19-runtime-setup.css +0 -9
- package/dist/src/web-ui/app/styles/20-chat-composer.css +86 -222
- package/dist/src/web-ui/app/styles/21-composer-controls.css +10 -10
- package/dist/src/web-ui/app/styles/22-composer-context-window.css +7 -7
- package/dist/src/web-ui/app/styles/23-composer-plan.css +9 -9
- package/dist/src/web-ui/app/styles/24-composer-stop.css +44 -0
- package/dist/src/web-ui/app/styles/24-conversation-role-cards.css +214 -85
- package/dist/src/web-ui/app/styles/25-conversation-sources.css +5 -5
- package/dist/src/web-ui/app/styles/26-message-content.css +84 -5
- package/dist/src/web-ui/app/styles/27-conversation-tools.css +4 -4
- package/dist/src/web-ui/app/styles/28-conversation-status.css +2 -2
- package/dist/src/web-ui/app/styles/28-tool-approval-card.css +161 -0
- package/dist/src/web-ui/app/styles/29-conversation-file-preview.css +2 -2
- package/dist/src/web-ui/app/styles/30-inspector-config.css +60 -84
- package/dist/src/web-ui/app/styles/35-memory-onboarding.css +10 -10
- package/dist/src/web-ui/app/styles/36-memory-management.css +19 -18
- package/dist/src/web-ui/app/styles/37-config-operations.css +70 -56
- package/dist/src/web-ui/app/styles/37-runtime-activation.css +16 -2
- package/dist/src/web-ui/app/styles/38-schedule-workspace.css +114 -76
- package/dist/src/web-ui/app/styles/38-schedules.css +61 -52
- package/dist/src/web-ui/app/styles/39-memory-workspace.css +80 -0
- package/dist/src/web-ui/app/styles/39-passive-learning.css +226 -0
- package/dist/src/web-ui/app/styles/40-config-workspace.css +65 -96
- package/dist/src/web-ui/app/styles/41-co-worker-agent.css +94 -0
- package/dist/src/web-ui/app/styles/41-plugin-management.css +36 -10
- package/dist/src/web-ui/app/styles/42-co-worker-settings.css +55 -0
- package/dist/src/web-ui/app/styles/42-runtime-setup-plugins.css +6 -6
- package/dist/src/web-ui/app/styles/43-co-worker-applications.css +19 -0
- package/dist/src/web-ui/app/styles/43-model-setup.css +4 -4
- package/dist/src/web-ui/app/styles/44-model-provider-cards.css +36 -17
- package/dist/src/web-ui/app/styles/46-system-host.css +126 -4
- package/dist/src/web-ui/app/styles/47-config-controls.css +178 -0
- package/dist/src/web-ui/app/styles/48-notifications.css +103 -0
- package/dist/src/web-ui/app/styles/49-macos-permission.css +225 -0
- package/dist/src/web-ui/app/styles/50-automations.css +353 -0
- package/dist/src/web-ui/app/styles/51-automation-editor-actions.css +35 -0
- package/dist/src/web-ui/app/styles/51-automation-templates.css +39 -0
- package/dist/src/web-ui/app/styles/52-automation-reports.css +84 -0
- package/dist/src/web-ui/app/styles/52-automation-step-editor.css +73 -0
- package/dist/src/web-ui/app/styles/53-automation-schema-inputs.css +21 -0
- package/dist/src/web-ui/app/styles/54-spark-chat.css +111 -0
- package/dist/src/web-ui/app/styles/90-responsive.css +19 -16
- package/dist/src/web-ui/app/styles/91-schedules-responsive.css +15 -4
- package/dist/src/web-ui/app/styles/92-dashboard-responsive.css +22 -26
- package/dist/src/web-ui/app/styles/93-compact-viewport.css +21 -0
- package/dist/src/web-ui/app/styles/94-automations-responsive.css +35 -0
- package/dist/src/web-ui/app/styles/foundation.css +3 -92
- package/dist/src/web-ui/app/styles.css +25 -0
- package/dist/src/web-ui/app/ui-behavior.d.ts +1 -1
- package/dist/src/web-ui/app/ui-behavior.js +6 -0
- package/dist/src/web-ui/config-dashboard-backend.d.ts +6 -0
- package/dist/src/web-ui/config-dashboard-backend.js +69 -39
- package/dist/src/web-ui/forwarded-loopback-policy.js +1 -1
- package/dist/src/web-ui/local-runtime/api-router.d.ts +6 -1
- package/dist/src/web-ui/local-runtime/api-router.js +58 -4
- package/dist/src/web-ui/local-runtime/approval-request-attachment.d.ts +15 -0
- package/dist/src/web-ui/local-runtime/approval-request-attachment.js +58 -0
- package/dist/src/web-ui/local-runtime/automation-routes.d.ts +27 -0
- package/dist/src/web-ui/local-runtime/automation-routes.js +227 -0
- package/dist/src/web-ui/local-runtime/environment-registry.d.ts +6 -0
- package/dist/src/web-ui/local-runtime/environment-registry.js +6 -0
- package/dist/src/web-ui/local-runtime/learning-notifications.d.ts +2 -0
- package/dist/src/web-ui/local-runtime/learning-notifications.js +20 -0
- package/dist/src/web-ui/local-runtime/learning-routes.d.ts +19 -0
- package/dist/src/web-ui/local-runtime/learning-routes.js +162 -0
- package/dist/src/web-ui/local-runtime/managed-tool-approvals.d.ts +15 -0
- package/dist/src/web-ui/local-runtime/managed-tool-approvals.js +121 -0
- package/dist/src/web-ui/local-runtime/memory-management-input.js +4 -0
- package/dist/src/web-ui/local-runtime/memory-management-response.d.ts +3 -1
- package/dist/src/web-ui/local-runtime/memory-management-response.js +17 -3
- package/dist/src/web-ui/local-runtime/model-removal.d.ts +13 -0
- package/dist/src/web-ui/local-runtime/model-removal.js +74 -0
- package/dist/src/web-ui/local-runtime/model-setup-catalog.js +3 -1
- package/dist/src/web-ui/local-runtime/model-setup-input.js +10 -1
- package/dist/src/web-ui/local-runtime/model-setup-profile-file.d.ts +17 -0
- package/dist/src/web-ui/local-runtime/model-setup-profile-file.js +121 -0
- package/dist/src/web-ui/local-runtime/model-setup-retry.d.ts +1 -1
- package/dist/src/web-ui/local-runtime/model-setup-retry.js +8 -6
- package/dist/src/web-ui/local-runtime/model-setup-routes.js +4 -2
- package/dist/src/web-ui/local-runtime/model-setup-service.d.ts +5 -0
- package/dist/src/web-ui/local-runtime/model-setup-service.js +70 -25
- package/dist/src/web-ui/local-runtime/model-setup-validation.d.ts +2 -1
- package/dist/src/web-ui/local-runtime/model-setup-validation.js +2 -1
- package/dist/src/web-ui/local-runtime/pending-tool-approvals.d.ts +29 -0
- package/dist/src/web-ui/local-runtime/pending-tool-approvals.js +104 -0
- package/dist/src/web-ui/local-runtime/realtime-controller.d.ts +1 -0
- package/dist/src/web-ui/local-runtime/realtime-controller.js +21 -2
- package/dist/src/web-ui/local-runtime/realtime-hub.d.ts +8 -0
- package/dist/src/web-ui/local-runtime/realtime-hub.js +44 -4
- package/dist/src/web-ui/local-runtime/request-cancellation-route.d.ts +8 -0
- package/dist/src/web-ui/local-runtime/request-cancellation-route.js +34 -0
- package/dist/src/web-ui/local-runtime/request-execution.d.ts +4 -2
- package/dist/src/web-ui/local-runtime/request-execution.js +68 -42
- package/dist/src/web-ui/local-runtime/runtime-availability.js +1 -1
- package/dist/src/web-ui/local-runtime/runtime-setup-service.js +1 -1
- package/dist/src/web-ui/local-runtime/session-routes.d.ts +3 -1
- package/dist/src/web-ui/local-runtime/session-routes.js +51 -7
- package/dist/src/web-ui/local-runtime/setup-embedding-config-repository.d.ts +6 -0
- package/dist/src/web-ui/local-runtime/setup-embedding-config-repository.js +25 -0
- package/dist/src/web-ui/local-runtime/setup-embedding-service.js +2 -0
- package/dist/src/web-ui/local-runtime/spark-chat-admission.d.ts +7 -0
- package/dist/src/web-ui/local-runtime/spark-chat-admission.js +37 -0
- package/dist/src/web-ui/local-runtime/spark-chat-configuration.d.ts +8 -0
- package/dist/src/web-ui/local-runtime/spark-chat-configuration.js +16 -0
- package/dist/src/web-ui/local-runtime/spark-chat-handoff.d.ts +4 -0
- package/dist/src/web-ui/local-runtime/spark-chat-handoff.js +84 -0
- package/dist/src/web-ui/local-runtime/spark-chat-routes.d.ts +19 -0
- package/dist/src/web-ui/local-runtime/spark-chat-routes.js +62 -0
- package/dist/src/web-ui/local-runtime/tool-approval-routes.d.ts +21 -0
- package/dist/src/web-ui/local-runtime/tool-approval-routes.js +70 -0
- package/dist/src/web-ui/local-runtime/workspace-notifications.d.ts +4 -0
- package/dist/src/web-ui/local-runtime/workspace-notifications.js +15 -0
- package/dist/src/web-ui/local-runtime-backend.d.ts +8 -0
- package/dist/src/web-ui/local-runtime-backend.js +42 -4
- package/dist/src/web-ui/notifications/automation-event-projection.d.ts +3 -0
- package/dist/src/web-ui/notifications/automation-event-projection.js +57 -0
- package/dist/src/web-ui/notifications/contracts.d.ts +66 -0
- package/dist/src/web-ui/notifications/contracts.js +14 -0
- package/dist/src/web-ui/notifications/conversation-source.d.ts +6 -0
- package/dist/src/web-ui/notifications/conversation-source.js +26 -0
- package/dist/src/web-ui/notifications/delivery-queue.d.ts +6 -0
- package/dist/src/web-ui/notifications/delivery-queue.js +12 -0
- package/dist/src/web-ui/notifications/desktop-delivery.d.ts +14 -0
- package/dist/src/web-ui/notifications/desktop-delivery.js +109 -0
- package/dist/src/web-ui/notifications/event-fields.d.ts +3 -0
- package/dist/src/web-ui/notifications/event-fields.js +12 -0
- package/dist/src/web-ui/notifications/event-projection.d.ts +4 -0
- package/dist/src/web-ui/notifications/event-projection.js +128 -0
- package/dist/src/web-ui/notifications/presence.d.ts +9 -0
- package/dist/src/web-ui/notifications/presence.js +46 -0
- package/dist/src/web-ui/notifications/query.d.ts +14 -0
- package/dist/src/web-ui/notifications/query.js +91 -0
- package/dist/src/web-ui/notifications/request-input.d.ts +11 -0
- package/dist/src/web-ui/notifications/request-input.js +47 -0
- package/dist/src/web-ui/notifications/routes.d.ts +15 -0
- package/dist/src/web-ui/notifications/routes.js +125 -0
- package/dist/src/web-ui/notifications/service.d.ts +42 -0
- package/dist/src/web-ui/notifications/service.js +162 -0
- package/dist/src/web-ui/notifications/storage-schema.d.ts +15 -0
- package/dist/src/web-ui/notifications/storage-schema.js +267 -0
- package/dist/src/web-ui/notifications/store.d.ts +26 -0
- package/dist/src/web-ui/notifications/store.js +185 -0
- package/dist/src/web-ui/server.js +1 -1
- package/dist/src/web-ui/session-read-state/projection.js +3 -0
- package/dist/src/web-ui/session-read-state/service.d.ts +39 -0
- package/dist/src/web-ui/session-read-state/service.js +20 -2
- package/dist/src/web-ui/session-read-state/store.d.ts +2 -0
- package/dist/src/web-ui/session-read-state/store.js +7 -0
- package/dist/src/web-ui/session-read-state/visible-messages.d.ts +30 -0
- package/dist/src/web-ui/session-read-state/visible-messages.js +119 -0
- package/dist/src/web-ui/system-host-service.d.ts +4 -1
- package/dist/src/web-ui/system-host-service.js +32 -12
- package/dist/src/web-ui/system-host-setup/companion-linux.d.ts +3 -0
- package/dist/src/web-ui/system-host-setup/companion-linux.js +50 -0
- package/dist/src/web-ui/system-host-setup/companion-macos.js +11 -2
- package/dist/src/web-ui/system-host-setup/companion-windows.js +5 -2
- package/dist/src/web-ui/system-host-setup/installer-contract.d.ts +2 -1
- package/dist/src/web-ui/system-host-setup/installer-contract.js +18 -5
- package/dist/src/web-ui/system-host-setup/installers.js +15 -2
- package/dist/src/web-ui/system-host-setup/local-connection.d.ts +21 -0
- package/dist/src/web-ui/system-host-setup/local-connection.js +77 -0
- package/dist/src/web-ui/system-host-setup/local-request-authority.d.ts +3 -0
- package/dist/src/web-ui/system-host-setup/local-request-authority.js +15 -0
- package/dist/src/web-ui/system-host-setup/local-setup-availability.d.ts +7 -0
- package/dist/src/web-ui/system-host-setup/local-setup-availability.js +34 -0
- package/dist/src/web-ui/system-host-setup/native-permission-route.d.ts +26 -0
- package/dist/src/web-ui/system-host-setup/native-permission-route.js +96 -0
- package/dist/src/web-ui/system-host-setup/permission-route.d.ts +13 -0
- package/dist/src/web-ui/system-host-setup/permission-route.js +102 -0
- package/dist/src/web-ui/system-host-setup/readiness.d.ts +8 -4
- package/dist/src/web-ui/system-host-setup/readiness.js +72 -43
- package/dist/src/web-ui/system-host-setup/routes.d.ts +4 -1
- package/dist/src/web-ui/system-host-setup/routes.js +48 -15
- package/dist/src/web-ui/system-host-startup-diagnostic.d.ts +2 -0
- package/dist/src/web-ui/system-host-startup-diagnostic.js +53 -0
- package/docs/architecture.md +15 -0
- package/docs/installation.md +128 -19
- package/docs/known-limitations.md +17 -3
- package/docs/long-term-memory.md +210 -2
- package/docs/plugins.md +64 -12
- package/docs/projects-and-full-plus.md +21 -22
- package/docs/runtime-public-contracts.md +7 -2
- package/docs/tool-execution-result-evidence-contract.md +11 -4
- package/package.json +6 -2
- package/plugins/capability-brief/src/index.cjs +88 -35
- package/plugins/code-outline/source/index.ts +7 -2
- package/plugins/code-outline/src/index.cjs +94 -37
- package/plugins/document-reader/plugin.json +18 -3
- package/plugins/document-reader/skills/document_reader_skill/SKILL.md +10 -3
- package/plugins/document-reader/source/handler.ts +5 -3
- package/plugins/document-reader/source/source-resolution.ts +1 -1
- package/plugins/document-reader/src/index.cjs +94 -39
- package/plugins/exec/plugin.json +3 -3
- package/plugins/exec/source/handlers.ts +96 -288
- package/plugins/exec/source/index.ts +12 -0
- package/plugins/exec/source/output-contracts.ts +45 -0
- package/plugins/exec/source/output-files.ts +161 -0
- package/plugins/exec/source/output-maintenance.ts +60 -0
- package/plugins/exec/source/output-range-reader.ts +97 -0
- package/plugins/exec/source/output-retention.ts +34 -0
- package/plugins/exec/source/output-snapshot.ts +54 -0
- package/plugins/exec/source/output-store.ts +182 -0
- package/plugins/exec/source/output-utf8-boundary.ts +14 -0
- package/plugins/exec/source/output-writer.ts +131 -0
- package/plugins/exec/source/process-manager.ts +171 -110
- package/plugins/exec/source/process-output-buffer.ts +39 -0
- package/plugins/exec/source/process-output.ts +158 -0
- package/plugins/exec/source/request-resources.ts +219 -0
- package/plugins/exec/source/result-presentation.ts +275 -0
- package/plugins/exec/source/retained-output-failure.ts +51 -0
- package/plugins/exec/source/settings.ts +9 -10
- package/plugins/exec/source/terminal-delivery.ts +49 -0
- package/plugins/exec/source/types.ts +12 -1
- package/plugins/exec/src/index.cjs +1495 -397
- package/plugins/filesystem/plugin.json +5 -5
- package/plugins/filesystem/skills/read_file_skill/SKILL.md +1 -1
- package/plugins/filesystem/src/index.cjs +88 -35
- package/plugins/json-inspector/source/index.ts +7 -2
- package/plugins/json-inspector/src/index.cjs +94 -37
- package/plugins/local-search/source/index.ts +9 -4
- package/plugins/local-search/src/index.cjs +96 -39
- package/plugins/memory/src/index.cjs +88 -35
- package/plugins/project-orientation/source/index.ts +9 -4
- package/plugins/project-orientation/src/index.cjs +96 -39
- package/plugins/system/README.md +113 -0
- package/plugins/system/plugin.json +560 -2
- package/plugins/system/skills/system_actions/SKILL.md +12 -0
- package/plugins/system/source/computer/desktop-bindings.ts +270 -0
- package/plugins/system/source/computer/handlers.ts +160 -0
- package/plugins/system/source/computer/observation-output.ts +145 -0
- package/plugins/system/source/computer/observation-result.ts +122 -0
- package/plugins/system/source/computer/public-action.ts +53 -0
- package/plugins/system/source/computer/request-computers.ts +154 -0
- package/plugins/system/source/computer/request-modules.ts +90 -0
- package/plugins/system/source/host-dispatch.ts +5 -18
- package/plugins/system/source/index.ts +5 -3
- package/plugins/system/source/request-system-modules.ts +48 -12
- package/plugins/system/source/request-target-snapshot.ts +13 -5
- package/plugins/system/src/index.cjs +5321 -871
- package/plugins/system-probe/source/index.ts +7 -2
- package/plugins/system-probe/src/index.cjs +94 -37
- package/plugins/web/README.md +9 -0
- package/plugins/web/source/plugin.ts +5 -3
- package/plugins/web/source/research.ts +7 -7
- package/plugins/web/src/index.cjs +99 -41
- package/src/runtime/README.md +114 -12
- package/src/runtime/local-host/README.md +66 -4
- package/src/runtime/scheduler/README.md +71 -2
- package/dist/plugins/system/source/companion/native-supervisor.js +0 -93
- package/dist/src/runtime/long-term-memory/candidate-persistence.d.ts +0 -16
- package/dist/src/runtime/long-term-memory/candidate-persistence.js +0 -109
- package/plugins/system/source/application-catalog.ts +0 -237
- package/plugins/system/source/application-launch.ts +0 -113
- package/plugins/system/source/application-observation.ts +0 -78
- package/plugins/system/source/commands.ts +0 -106
- package/plugins/system/source/companion/autostart.ts +0 -185
- package/plugins/system/source/companion/broker-client.ts +0 -183
- package/plugins/system/source/companion/broker-location.ts +0 -89
- package/plugins/system/source/companion/broker-server.ts +0 -169
- package/plugins/system/source/companion/connection.ts +0 -211
- package/plugins/system/source/companion/liveness.ts +0 -23
- package/plugins/system/source/companion/native-address.ts +0 -55
- package/plugins/system/source/companion/native-identity.ts +0 -26
- package/plugins/system/source/companion/native-messages.ts +0 -100
- package/plugins/system/source/companion/native-session.ts +0 -268
- package/plugins/system/source/companion/native-state.ts +0 -135
- package/plugins/system/source/companion/native-supervisor.ts +0 -98
- package/plugins/system/source/companion/pairing-store.ts +0 -110
- package/plugins/system/source/companion/private-store.ts +0 -58
- package/plugins/system/source/companion/process-owner-identity.ts +0 -190
- package/plugins/system/source/companion/protocol.ts +0 -108
- package/plugins/system/source/contracts.ts +0 -44
- package/plugins/system/source/elevation.ts +0 -88
- package/plugins/system/source/handlers.ts +0 -120
- package/plugins/system/source/host-evidence.ts +0 -72
- package/plugins/system/source/host-observation.ts +0 -66
- package/plugins/system/source/process-result.ts +0 -111
- package/plugins/system/source/process-runner.ts +0 -104
- package/plugins/system/source/target-observation.ts +0 -43
- package/plugins/system/source/targets.ts +0 -147
- /package/dist/{plugins/system/source → src/computer-access}/application-catalog.d.ts +0 -0
- /package/dist/{plugins/system/source → src/computer-access}/application-catalog.js +0 -0
- /package/dist/{plugins/system/source → src/computer-access}/application-launch.d.ts +0 -0
- /package/dist/{plugins/system/source → src/computer-access}/application-observation.d.ts +0 -0
- /package/dist/{plugins/system/source → src/computer-access}/application-observation.js +0 -0
- /package/dist/{plugins/system/source → src/computer-access}/commands.d.ts +0 -0
- /package/dist/{plugins/system/source → src/computer-access}/companion/broker-location.d.ts +0 -0
- /package/dist/{plugins/system/source → src/computer-access}/companion/broker-server.d.ts +0 -0
- /package/dist/{plugins/system/source → src/computer-access}/companion/liveness.d.ts +0 -0
- /package/dist/{plugins/system/source → src/computer-access}/companion/liveness.js +0 -0
- /package/dist/{plugins/system/source → src/computer-access}/companion/native-identity.d.ts +0 -0
- /package/dist/{plugins/system/source → src/computer-access}/companion/native-identity.js +0 -0
- /package/dist/{plugins/system/source → src/computer-access}/companion/native-messages.d.ts +0 -0
- /package/dist/{plugins/system/source → src/computer-access}/companion/private-store.d.ts +0 -0
- /package/dist/{plugins/system/source → src/computer-access}/companion/private-store.js +0 -0
- /package/dist/{plugins/system/source → src/computer-access}/contracts.d.ts +0 -0
- /package/dist/{plugins/system/source → src/computer-access}/contracts.js +0 -0
- /package/dist/{plugins/system/source → src/computer-access}/elevation.d.ts +0 -0
- /package/dist/{plugins/system/source → src/computer-access}/elevation.js +0 -0
- /package/dist/{plugins/system/source → src/computer-access}/host-observation.js +0 -0
- /package/dist/{plugins/system/source → src/computer-access}/process-runner.d.ts +0 -0
- /package/dist/{plugins/system/source → src/computer-access}/process-runner.js +0 -0
- /package/dist/{plugins/system/source → src/computer-access}/target-observation.d.ts +0 -0
- /package/dist/{plugins/system/source → src/computer-access}/target-observation.js +0 -0
- /package/dist/{plugins/system/source → src/computer-access}/targets.d.ts +0 -0
- /package/dist/{plugins/system/source → src/computer-access}/targets.js +0 -0
|
@@ -138,8 +138,28 @@ function defineRuntimePlugin(definition) {
|
|
|
138
138
|
return definition;
|
|
139
139
|
}
|
|
140
140
|
|
|
141
|
+
// src/capabilities/tool-context-text.ts
|
|
142
|
+
function hasValidToolContextText(carrier) {
|
|
143
|
+
const fields = carrier.contextTextFields;
|
|
144
|
+
if (fields === void 0) return true;
|
|
145
|
+
if (!Array.isArray(fields) || fields.length === 0 || fields.length > 3)
|
|
146
|
+
return false;
|
|
147
|
+
if (new Set(fields).size !== fields.length) return false;
|
|
148
|
+
for (const field of fields) {
|
|
149
|
+
if (!isContextTextField(field)) return false;
|
|
150
|
+
if (typeof carrier[field] !== "string") return false;
|
|
151
|
+
}
|
|
152
|
+
return true;
|
|
153
|
+
}
|
|
154
|
+
function isContextTextField(value) {
|
|
155
|
+
return value === "output" || value === "stdout" || value === "stderr";
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
// src/capabilities/result-budget.ts
|
|
159
|
+
var CAPABILITY_RESULT_ENVELOPE_MAX_BYTES = 256 * 1024;
|
|
160
|
+
|
|
141
161
|
// src/plugin-sdk/results.ts
|
|
142
|
-
var PLUGIN_RESULT_SERIALIZED_MAX_BYTES =
|
|
162
|
+
var PLUGIN_RESULT_SERIALIZED_MAX_BYTES = CAPABILITY_RESULT_ENVELOPE_MAX_BYTES;
|
|
143
163
|
function resultBoundsFailure(code, message) {
|
|
144
164
|
return {
|
|
145
165
|
ok: false,
|
|
@@ -149,9 +169,27 @@ function resultBoundsFailure(code, message) {
|
|
|
149
169
|
errorCode: code
|
|
150
170
|
};
|
|
151
171
|
}
|
|
152
|
-
function enforcePluginResultByteBudget(result) {
|
|
153
|
-
let
|
|
172
|
+
function enforcePluginResultByteBudget(result, resultBudget) {
|
|
173
|
+
let requiresContextTextHost = false;
|
|
174
|
+
let serializedBytes;
|
|
175
|
+
let envelopeBytes;
|
|
176
|
+
let maxBytes = PLUGIN_RESULT_SERIALIZED_MAX_BYTES;
|
|
177
|
+
let fitsDeclaredBudget = true;
|
|
154
178
|
try {
|
|
179
|
+
if (!hasValidToolContextText(result)) {
|
|
180
|
+
return resultBoundsFailure(
|
|
181
|
+
"plugin_context_text_invalid",
|
|
182
|
+
"The plugin declared invalid context text fields."
|
|
183
|
+
);
|
|
184
|
+
}
|
|
185
|
+
requiresContextTextHost = result.contextTextFields !== void 0;
|
|
186
|
+
const lacksContextTextHost = requiresContextTextHost && resultBudget?.acceptsContextText !== true;
|
|
187
|
+
if (lacksContextTextHost) {
|
|
188
|
+
return resultBoundsFailure(
|
|
189
|
+
"plugin_context_text_unavailable",
|
|
190
|
+
"The host does not support context-managed tool text."
|
|
191
|
+
);
|
|
192
|
+
}
|
|
155
193
|
const candidate = JSON.stringify(result);
|
|
156
194
|
if (candidate === void 0) {
|
|
157
195
|
return resultBoundsFailure(
|
|
@@ -159,35 +197,43 @@ function enforcePluginResultByteBudget(result) {
|
|
|
159
197
|
"The plugin produced a result that is not JSON-safe."
|
|
160
198
|
);
|
|
161
199
|
}
|
|
162
|
-
|
|
200
|
+
const assessment = resultBudget?.assess(result);
|
|
201
|
+
serializedBytes = assessment?.serializedBytes ?? Buffer.byteLength(candidate, "utf8");
|
|
202
|
+
envelopeBytes = assessment?.envelopeBytes ?? serializedBytes;
|
|
203
|
+
maxBytes = Math.min(assessment?.maxBytes ?? maxBytes, maxBytes);
|
|
204
|
+
fitsDeclaredBudget = assessment?.fits ?? true;
|
|
163
205
|
} catch {
|
|
164
206
|
return resultBoundsFailure(
|
|
165
207
|
"plugin_result_not_json_safe",
|
|
166
208
|
"The plugin produced a result that is not JSON-safe."
|
|
167
209
|
);
|
|
168
210
|
}
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
);
|
|
211
|
+
const hasResultDeliveryHeadroom = fitsDeclaredBudget && envelopeBytes <= maxBytes;
|
|
212
|
+
if (!hasResultDeliveryHeadroom) {
|
|
213
|
+
const message = requiresContextTextHost ? `The plugin result envelope is ${envelopeBytes} bytes (${serializedBytes} total bytes) and exceeds the ${maxBytes}-byte delivery limit.` : `The plugin result is ${serializedBytes} bytes and exceeds the ${maxBytes}-byte delivery limit.`;
|
|
214
|
+
return resultBoundsFailure("plugin_result_too_large", message);
|
|
174
215
|
}
|
|
175
216
|
return result;
|
|
176
217
|
}
|
|
177
|
-
function failureResult(input) {
|
|
178
|
-
return enforcePluginResultByteBudget(
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
218
|
+
function failureResult(input, resultBudget) {
|
|
219
|
+
return enforcePluginResultByteBudget(
|
|
220
|
+
{
|
|
221
|
+
ok: false,
|
|
222
|
+
...input.interruption ? { interruption: input.interruption } : {},
|
|
223
|
+
...input.media !== void 0 ? { media: input.media } : {},
|
|
224
|
+
output: input.output ?? input.message,
|
|
225
|
+
producedNewInformation: false,
|
|
226
|
+
...input.progress !== void 0 ? { progress: input.progress } : {},
|
|
227
|
+
...input.actions !== void 0 ? { actions: input.actions } : {},
|
|
228
|
+
...input.exitCode !== void 0 ? { exitCode: input.exitCode } : {},
|
|
229
|
+
...input.stdout !== void 0 ? { stdout: input.stdout } : {},
|
|
230
|
+
...input.stderr !== void 0 ? { stderr: input.stderr } : {},
|
|
231
|
+
...input.data !== void 0 ? { data: input.data } : {},
|
|
232
|
+
error: input.message,
|
|
233
|
+
errorCode: input.errorCode
|
|
234
|
+
},
|
|
235
|
+
resultBudget
|
|
236
|
+
);
|
|
191
237
|
}
|
|
192
238
|
function failureFromError(error, options) {
|
|
193
239
|
const pathCode = runtimeToolPathErrorCode(error);
|
|
@@ -201,29 +247,23 @@ function failureFromError(error, options) {
|
|
|
201
247
|
});
|
|
202
248
|
}
|
|
203
249
|
|
|
204
|
-
//
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
};
|
|
213
|
-
function execFailureFromError(error, operation) {
|
|
214
|
-
if (error instanceof ExecPluginError) {
|
|
215
|
-
return failureResult({
|
|
216
|
-
errorCode: error.code,
|
|
217
|
-
message: error.message,
|
|
218
|
-
output: `${operation} failed: ${error.message}`
|
|
219
|
-
});
|
|
220
|
-
}
|
|
221
|
-
return failureFromError(error, {
|
|
222
|
-
fallbackCode: `${operation}_failed`,
|
|
223
|
-
fallbackMessage: `${operation} failed without a safe diagnostic.`,
|
|
224
|
-
operation
|
|
225
|
-
});
|
|
250
|
+
// src/plugin-sdk/context-text-result.ts
|
|
251
|
+
function deliverPluginTextResult(result, fields, budget) {
|
|
252
|
+
const assessed = enforcePluginResultByteBudget(result, budget);
|
|
253
|
+
if (!canHandOffContextText(result, assessed, budget)) return assessed;
|
|
254
|
+
return enforcePluginResultByteBudget(
|
|
255
|
+
{ ...result, contextTextFields: Object.freeze([...fields]) },
|
|
256
|
+
budget
|
|
257
|
+
);
|
|
226
258
|
}
|
|
259
|
+
function canHandOffContextText(original, assessed, budget) {
|
|
260
|
+
if (budget?.acceptsContextText !== true) return false;
|
|
261
|
+
if (assessed === original) return false;
|
|
262
|
+
return assessed.errorCode === "plugin_result_too_large";
|
|
263
|
+
}
|
|
264
|
+
|
|
265
|
+
// src/capabilities/tool-media.ts
|
|
266
|
+
var TOOL_IMAGE_MAX_BYTES = 10 * 1024 * 1024;
|
|
227
267
|
|
|
228
268
|
// plugins/exec/source/filesystem-observer.ts
|
|
229
269
|
var import_node_crypto = require("node:crypto");
|
|
@@ -495,11 +535,532 @@ function diffExecFilesystemSnapshots(before, after) {
|
|
|
495
535
|
});
|
|
496
536
|
}
|
|
497
537
|
|
|
498
|
-
// plugins/exec/source/
|
|
538
|
+
// plugins/exec/source/result-presentation.ts
|
|
539
|
+
var EXEC_CONTEXT_TEXT_FIELDS = Object.freeze(["stdout", "stderr"]);
|
|
540
|
+
function streamReceipt(snapshot, field) {
|
|
541
|
+
if (snapshot.text) return `See the ${field} field (${snapshot.text.length} characters).`;
|
|
542
|
+
return snapshot.sawOutput ? "(no new output; earlier output was already returned)" : "(empty)";
|
|
543
|
+
}
|
|
544
|
+
function renderedOutput(lines) {
|
|
545
|
+
const output = lines.join("\n");
|
|
546
|
+
return Object.freeze({
|
|
547
|
+
output,
|
|
548
|
+
metadata: Object.freeze({
|
|
549
|
+
truncated: false,
|
|
550
|
+
originalChars: output.length,
|
|
551
|
+
returnedChars: output.length,
|
|
552
|
+
omittedChars: 0
|
|
553
|
+
})
|
|
554
|
+
});
|
|
555
|
+
}
|
|
556
|
+
function outputBoundsData(snapshot, rendered) {
|
|
557
|
+
return Object.freeze({
|
|
558
|
+
maxChars: null,
|
|
559
|
+
stdout: snapshot.stdout.metadata,
|
|
560
|
+
stderr: snapshot.stderr.metadata,
|
|
561
|
+
rendered
|
|
562
|
+
});
|
|
563
|
+
}
|
|
564
|
+
function runningResult(snapshot, execution, resultBudget) {
|
|
565
|
+
const nextCursor = snapshot.nextCursor ?? 1;
|
|
566
|
+
const rendered = renderedOutput(
|
|
567
|
+
[
|
|
568
|
+
`Command: ${execution.commandPreview}`,
|
|
569
|
+
`CWD: ${execution.cwd.logicalPath}`,
|
|
570
|
+
"Process status: running",
|
|
571
|
+
`Process ID: ${snapshot.processId}`,
|
|
572
|
+
`Next cursor: ${nextCursor}`,
|
|
573
|
+
"STDOUT since the previous observation:",
|
|
574
|
+
streamReceipt(snapshot.stdout, "stdout"),
|
|
575
|
+
"STDERR since the previous observation:",
|
|
576
|
+
streamReceipt(snapshot.stderr, "stderr"),
|
|
577
|
+
"Continue this exact process with exec_wait; do not run the command again."
|
|
578
|
+
]
|
|
579
|
+
);
|
|
580
|
+
return deliverPluginTextResult({
|
|
581
|
+
ok: false,
|
|
582
|
+
producedNewInformation: false,
|
|
583
|
+
errorCode: "exec_process_running",
|
|
584
|
+
error: "The command is still running. Continue it with exec_wait using the returned process ID and cursor.",
|
|
585
|
+
output: rendered.output,
|
|
586
|
+
stdout: snapshot.stdout.text,
|
|
587
|
+
stderr: snapshot.stderr.text,
|
|
588
|
+
data: {
|
|
589
|
+
processId: snapshot.processId,
|
|
590
|
+
processStatus: "running",
|
|
591
|
+
nextCursor,
|
|
592
|
+
outputBounds: outputBoundsData(snapshot, rendered.metadata),
|
|
593
|
+
observationMeta: {
|
|
594
|
+
kind: "volatile_external",
|
|
595
|
+
carryPolicy: "never"
|
|
596
|
+
}
|
|
597
|
+
}
|
|
598
|
+
}, EXEC_CONTEXT_TEXT_FIELDS, resultBudget);
|
|
599
|
+
}
|
|
600
|
+
async function captureFilesystemDelta(execution) {
|
|
601
|
+
if (!execution.filesystemStateBefore) return null;
|
|
602
|
+
try {
|
|
603
|
+
const after = await captureExecFilesystemSnapshot(
|
|
604
|
+
execution.cwd.absolutePath,
|
|
605
|
+
execution.cwd.logicalPath
|
|
606
|
+
);
|
|
607
|
+
return diffExecFilesystemSnapshots(execution.filesystemStateBefore, after);
|
|
608
|
+
} catch {
|
|
609
|
+
return null;
|
|
610
|
+
}
|
|
611
|
+
}
|
|
612
|
+
function projectExecFilesystemEvidence(delta, logicalRoot) {
|
|
613
|
+
const effects = delta.actions.map(renderExecFilesystemEffect);
|
|
614
|
+
const omittedEffectCount = Math.max(
|
|
615
|
+
0,
|
|
616
|
+
delta.changedEntryCount - effects.length
|
|
617
|
+
);
|
|
618
|
+
const omittedEffectLine = omittedEffectCount > 0 ? `- ${omittedEffectCount} additional changed ${omittedEffectCount === 1 ? "entry" : "entries"} omitted by the ${delta.observation.actionLimit}-effect projection limit.` : void 0;
|
|
619
|
+
const outputLines = Object.freeze([
|
|
620
|
+
`Filesystem changes observed: ${delta.changedEntryCount}${delta.observation.complete ? "" : " (bounded observation)"}`,
|
|
621
|
+
"Filesystem effects observed:",
|
|
622
|
+
...effects,
|
|
623
|
+
...omittedEffectLine ? [omittedEffectLine] : []
|
|
624
|
+
]);
|
|
625
|
+
return Object.freeze({
|
|
626
|
+
outputLines,
|
|
627
|
+
mutationGrounding: [
|
|
628
|
+
"Observed post-command filesystem effects (settled tool evidence; not command intent, semantic verification, or complete artifact content):",
|
|
629
|
+
`- observation root: ${logicalRoot}`,
|
|
630
|
+
`- observation complete: ${delta.observation.complete}`,
|
|
631
|
+
`- changed entries: ${delta.changedEntryCount}`,
|
|
632
|
+
`- listed effects: ${effects.length}`,
|
|
633
|
+
`- effects truncated: ${delta.observation.actionsTruncated}`,
|
|
634
|
+
"Effects:",
|
|
635
|
+
...effects,
|
|
636
|
+
...omittedEffectLine ? [omittedEffectLine] : []
|
|
637
|
+
].join("\n")
|
|
638
|
+
});
|
|
639
|
+
}
|
|
640
|
+
function renderExecFilesystemEffect(action) {
|
|
641
|
+
const target = action.target ? `: ${action.target}` : "";
|
|
642
|
+
const state = action.details === "exec_filesystem_created" ? "created" : action.details === "exec_filesystem_modified" ? "modified" : action.details === "exec_filesystem_removed" ? "removed" : void 0;
|
|
643
|
+
return `- ${action.type}${target}${state ? ` (${state})` : ""}`;
|
|
644
|
+
}
|
|
645
|
+
async function finalizeExecResult(params) {
|
|
646
|
+
const { snapshot, execution } = params;
|
|
647
|
+
const exitCode = snapshot.exitCode ?? -1;
|
|
648
|
+
const cancellationIsSuccess = params.cancellationIsSuccess === true && snapshot.terminationReason === "cancelled";
|
|
649
|
+
const filesystemDelta = await captureFilesystemDelta(execution);
|
|
650
|
+
const observedStateChange = filesystemDelta?.observedStateChange === true;
|
|
651
|
+
const filesystemEvidence = observedStateChange && filesystemDelta ? projectExecFilesystemEvidence(
|
|
652
|
+
filesystemDelta,
|
|
653
|
+
execution.cwd.logicalPath
|
|
654
|
+
) : null;
|
|
655
|
+
const commandHasData = snapshot.stdout.sawOutput || snapshot.stderr.sawOutput;
|
|
656
|
+
const ok = exitCode === 0 || cancellationIsSuccess;
|
|
657
|
+
const inconclusiveSuccess = exitCode === 0 && !commandHasData && !observedStateChange;
|
|
658
|
+
const producedNewInformation = observedStateChange || cancellationIsSuccess || ok && commandHasData;
|
|
659
|
+
const actions = filesystemDelta?.actions ?? [];
|
|
660
|
+
const resultSummary = cancellationIsSuccess ? "Result summary: the running command was cancelled." : inconclusiveSuccess ? "Result summary: the command completed without observable output or filesystem change. Inspect a concrete target or use a dedicated creation capability." : "";
|
|
661
|
+
const rendered = renderedOutput(
|
|
662
|
+
[
|
|
663
|
+
`Command: ${execution.commandPreview}`,
|
|
664
|
+
`CWD: ${execution.cwd.logicalPath}`,
|
|
665
|
+
`Process ID: ${snapshot.processId}`,
|
|
666
|
+
`Process status: ${snapshot.terminationReason ?? "completed"}`,
|
|
667
|
+
`Exit code: ${exitCode}`,
|
|
668
|
+
...filesystemEvidence ? filesystemEvidence.outputLines : [],
|
|
669
|
+
"STDOUT:",
|
|
670
|
+
streamReceipt(snapshot.stdout, "stdout"),
|
|
671
|
+
"STDERR:",
|
|
672
|
+
streamReceipt(snapshot.stderr, "stderr"),
|
|
673
|
+
...resultSummary ? [resultSummary] : []
|
|
674
|
+
]
|
|
675
|
+
);
|
|
676
|
+
const processStatus = snapshot.terminationReason ?? "completed";
|
|
677
|
+
const data = {
|
|
678
|
+
...commandHasData ? { hasData: true } : {},
|
|
679
|
+
...observedStateChange ? { mutationEvidence: true } : {},
|
|
680
|
+
...filesystemEvidence ? { mutationGrounding: filesystemEvidence.mutationGrounding } : {},
|
|
681
|
+
processId: snapshot.processId,
|
|
682
|
+
processStatus,
|
|
683
|
+
outputBounds: outputBoundsData(snapshot, rendered.metadata),
|
|
684
|
+
...filesystemDelta ? { filesystemObservation: filesystemDelta.observation } : { filesystemObservation: { available: false } },
|
|
685
|
+
observationMeta: {
|
|
686
|
+
kind: "volatile_external",
|
|
687
|
+
carryPolicy: "never"
|
|
688
|
+
}
|
|
689
|
+
};
|
|
690
|
+
const common = {
|
|
691
|
+
output: rendered.output,
|
|
692
|
+
progress: observedStateChange || cancellationIsSuccess,
|
|
693
|
+
producedNewInformation,
|
|
694
|
+
actions: [...actions],
|
|
695
|
+
exitCode,
|
|
696
|
+
stdout: snapshot.stdout.text,
|
|
697
|
+
stderr: snapshot.stderr.text,
|
|
698
|
+
data
|
|
699
|
+
};
|
|
700
|
+
if (ok && (!inconclusiveSuccess || cancellationIsSuccess)) {
|
|
701
|
+
return deliverPluginTextResult({ ok: true, ...common }, EXEC_CONTEXT_TEXT_FIELDS, params.resultBudget);
|
|
702
|
+
}
|
|
703
|
+
const errorCode = inconclusiveSuccess ? "no_observable_result" : snapshot.terminationReason === "aborted" ? "exec_aborted" : snapshot.terminationReason === "spawn_failed" ? "exec_spawn_failed" : snapshot.terminationReason === "idle_timeout" ? "exec_idle_timeout" : snapshot.terminationReason === "hard_timeout" ? "exec_hard_timeout" : "non_zero_exit";
|
|
704
|
+
const error = inconclusiveSuccess ? resultSummary : errorCode === "exec_aborted" ? "The exec request was aborted." : errorCode === "exec_spawn_failed" ? "The runtime could not start the configured non-interactive shell." : errorCode === "exec_idle_timeout" ? `The command produced no output for ${execution.idleTimeoutMs}ms.` : errorCode === "exec_hard_timeout" ? `The command exceeded the ${execution.hardTimeoutMs}ms hard timeout.` : `The command exited with code ${exitCode}.`;
|
|
705
|
+
return deliverPluginTextResult({
|
|
706
|
+
ok: false,
|
|
707
|
+
...common,
|
|
708
|
+
error,
|
|
709
|
+
errorCode
|
|
710
|
+
}, EXEC_CONTEXT_TEXT_FIELDS, params.resultBudget);
|
|
711
|
+
}
|
|
712
|
+
|
|
713
|
+
// plugins/exec/source/retained-output-failure.ts
|
|
714
|
+
function retainedOutputFailure(snapshot, context) {
|
|
715
|
+
const expired = hasUnavailableOutput(snapshot);
|
|
716
|
+
return failureResult(
|
|
717
|
+
{
|
|
718
|
+
errorCode: expired ? "exec_output_expired" : snapshot.outputFailure ? "exec_output_storage_failed" : "exec_output_delivery_pending",
|
|
719
|
+
message: expired ? "The retained output expired or is no longer available. The command was already started; it has not been run again." : snapshot.outputFailure ? "Output storage or delivery failed. The command was already started; do not run it again. Any committed bytes are retained for the configured retention period; complete output delivery is not confirmed." : "The output exceeds the delivery envelope and remains retained. The command was already executed; do not run it again.",
|
|
720
|
+
data: {
|
|
721
|
+
processId: snapshot.processId,
|
|
722
|
+
processStatus: snapshot.status,
|
|
723
|
+
nextCursor: snapshot.nextCursor,
|
|
724
|
+
...snapshot.exitCode !== void 0 ? { exitCode: snapshot.exitCode } : {},
|
|
725
|
+
...snapshot.terminationReason ? { terminationReason: snapshot.terminationReason } : {},
|
|
726
|
+
outputDelivery: expired ? "expired" : "pending",
|
|
727
|
+
...snapshot.outputFailure ? { outputStorageFailure: snapshot.outputFailure } : {},
|
|
728
|
+
retainedCharacters: snapshot.stdout.text.length + snapshot.stderr.text.length
|
|
729
|
+
}
|
|
730
|
+
},
|
|
731
|
+
context?.resultBudget
|
|
732
|
+
);
|
|
733
|
+
}
|
|
734
|
+
function hasUnavailableOutput(snapshot) {
|
|
735
|
+
if (snapshot.outputFailure?.code === "exec_output_expired") return true;
|
|
736
|
+
return snapshot.outputFailure?.code === "exec_output_expired_or_unavailable";
|
|
737
|
+
}
|
|
738
|
+
|
|
739
|
+
// plugins/exec/source/errors.ts
|
|
740
|
+
var ExecPluginError = class extends Error {
|
|
741
|
+
code;
|
|
742
|
+
constructor(code, message) {
|
|
743
|
+
super(message);
|
|
744
|
+
this.name = "ExecPluginError";
|
|
745
|
+
this.code = code;
|
|
746
|
+
}
|
|
747
|
+
};
|
|
748
|
+
function execFailureFromError(error, operation) {
|
|
749
|
+
if (error instanceof ExecPluginError) {
|
|
750
|
+
return failureResult({
|
|
751
|
+
errorCode: error.code,
|
|
752
|
+
message: error.message,
|
|
753
|
+
output: `${operation} failed: ${error.message}`
|
|
754
|
+
});
|
|
755
|
+
}
|
|
756
|
+
return failureFromError(error, {
|
|
757
|
+
fallbackCode: `${operation}_failed`,
|
|
758
|
+
fallbackMessage: `${operation} failed without a safe diagnostic.`,
|
|
759
|
+
operation
|
|
760
|
+
});
|
|
761
|
+
}
|
|
762
|
+
|
|
763
|
+
// plugins/exec/source/terminal-delivery.ts
|
|
764
|
+
var import_node_crypto2 = require("node:crypto");
|
|
765
|
+
var ExecTerminalDelivery = class {
|
|
766
|
+
claim;
|
|
767
|
+
accepted = false;
|
|
768
|
+
get isClaimed() {
|
|
769
|
+
return this.claim !== void 0;
|
|
770
|
+
}
|
|
771
|
+
assertAvailable() {
|
|
772
|
+
if (this.isClaimed) throw this.unavailable();
|
|
773
|
+
}
|
|
774
|
+
reserve(snapshot) {
|
|
775
|
+
if (snapshot.status !== "settled") return snapshot;
|
|
776
|
+
this.assertAvailable();
|
|
777
|
+
this.claim = (0, import_node_crypto2.randomUUID)();
|
|
778
|
+
return Object.freeze({ ...snapshot, deliveryId: this.claim });
|
|
779
|
+
}
|
|
780
|
+
assertOwner(snapshot) {
|
|
781
|
+
if (snapshot.status !== "settled") return;
|
|
782
|
+
if (!this.claim || snapshot.deliveryId !== this.claim || this.accepted)
|
|
783
|
+
throw this.unavailable();
|
|
784
|
+
}
|
|
785
|
+
accept(snapshot) {
|
|
786
|
+
if (snapshot.status !== "settled") return;
|
|
787
|
+
this.assertOwner(snapshot);
|
|
788
|
+
this.accepted = true;
|
|
789
|
+
}
|
|
790
|
+
reject(snapshot) {
|
|
791
|
+
if (this.accepted) return;
|
|
792
|
+
if (snapshot.deliveryId !== this.claim) return;
|
|
793
|
+
this.claim = void 0;
|
|
794
|
+
}
|
|
795
|
+
unavailable() {
|
|
796
|
+
return new ExecPluginError(
|
|
797
|
+
"unknown_exec_process",
|
|
798
|
+
"The terminal exec result is already claimed by another observation."
|
|
799
|
+
);
|
|
800
|
+
}
|
|
801
|
+
};
|
|
802
|
+
|
|
803
|
+
// plugins/exec/source/output-files.ts
|
|
804
|
+
var import_node_crypto3 = require("node:crypto");
|
|
499
805
|
var import_promises2 = require("node:fs/promises");
|
|
500
806
|
var import_node_path2 = require("node:path");
|
|
807
|
+
var ID = /^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$/;
|
|
808
|
+
function outputStorageRoot(stateDir) {
|
|
809
|
+
if (!stateDir.trim()) throw outputFailure("state_dir_invalid");
|
|
810
|
+
return (0, import_node_path2.resolve)(stateDir, "output");
|
|
811
|
+
}
|
|
812
|
+
function outputOwnerDirectory(root, ownerId) {
|
|
813
|
+
if (!ownerId.trim()) throw outputFailure("owner_invalid");
|
|
814
|
+
return (0, import_node_path2.join)(root, (0, import_node_crypto3.createHash)("sha256").update(ownerId).digest("hex"));
|
|
815
|
+
}
|
|
816
|
+
function outputStreamPath(directory, id) {
|
|
817
|
+
assertOutputId(id);
|
|
818
|
+
return (0, import_node_path2.join)(directory, `${id}.bytes`);
|
|
819
|
+
}
|
|
820
|
+
function outputSnapshotPath(directory, id) {
|
|
821
|
+
assertOutputId(id);
|
|
822
|
+
return (0, import_node_path2.join)(directory, `${id}.snapshot.json`);
|
|
823
|
+
}
|
|
824
|
+
function assertOutputId(id) {
|
|
825
|
+
if (typeof id !== "string" || !ID.test(id)) throw outputFailure("id_invalid");
|
|
826
|
+
}
|
|
827
|
+
function outputFailure(code, cause) {
|
|
828
|
+
const error = new ExecPluginError(
|
|
829
|
+
`exec_output_${code}`,
|
|
830
|
+
`Exec output storage failed: ${code}.`
|
|
831
|
+
);
|
|
832
|
+
if (cause !== void 0)
|
|
833
|
+
Object.defineProperty(error, "cause", { value: cause });
|
|
834
|
+
return error;
|
|
835
|
+
}
|
|
836
|
+
async function writeOutputMetadata(path, value) {
|
|
837
|
+
const temporary = `${path}.${(0, import_node_crypto3.randomUUID)()}.tmp`;
|
|
838
|
+
try {
|
|
839
|
+
const file = await (0, import_promises2.open)(temporary, "wx", 384);
|
|
840
|
+
try {
|
|
841
|
+
await file.writeFile(JSON.stringify(value));
|
|
842
|
+
await file.sync();
|
|
843
|
+
} finally {
|
|
844
|
+
await file.close();
|
|
845
|
+
}
|
|
846
|
+
await (0, import_promises2.rename)(temporary, path);
|
|
847
|
+
const directory = await (0, import_promises2.open)((0, import_node_path2.dirname)(path), "r");
|
|
848
|
+
try {
|
|
849
|
+
await directory.sync();
|
|
850
|
+
} finally {
|
|
851
|
+
await directory.close();
|
|
852
|
+
}
|
|
853
|
+
} catch (error) {
|
|
854
|
+
await (0, import_promises2.rm)(temporary, { force: true }).catch(() => void 0);
|
|
855
|
+
throw outputFailure("metadata_write_failed", error);
|
|
856
|
+
}
|
|
857
|
+
}
|
|
858
|
+
async function prepareOutputOwnerDirectory(directory) {
|
|
859
|
+
try {
|
|
860
|
+
await (0, import_promises2.mkdir)(directory, { recursive: true, mode: 448 });
|
|
861
|
+
} catch (error) {
|
|
862
|
+
throw outputFailure("write_failed", error);
|
|
863
|
+
}
|
|
864
|
+
}
|
|
865
|
+
async function readOutputOwner(directory) {
|
|
866
|
+
let value;
|
|
867
|
+
try {
|
|
868
|
+
value = JSON.parse(await (0, import_promises2.readFile)((0, import_node_path2.join)(directory, "owner.json"), "utf8"));
|
|
869
|
+
} catch (error) {
|
|
870
|
+
if (error.code === "ENOENT") return void 0;
|
|
871
|
+
throw outputFailure("owner_read_failed", error);
|
|
872
|
+
}
|
|
873
|
+
if (!isOutputOwnerRecord(value)) throw outputFailure("owner_invalid");
|
|
874
|
+
return value;
|
|
875
|
+
}
|
|
876
|
+
function isOutputOwnerRecord(value) {
|
|
877
|
+
if (!value || typeof value !== "object") return false;
|
|
878
|
+
const owner = value;
|
|
879
|
+
if (owner.kind !== "exec_output_owner_v1") return false;
|
|
880
|
+
if (typeof owner.ownerId !== "string" || !owner.ownerId.trim()) return false;
|
|
881
|
+
return owner.completedAt === null || Number.isSafeInteger(owner.completedAt) && owner.completedAt >= 0;
|
|
882
|
+
}
|
|
883
|
+
async function lookupOutputSnapshot(directory, ownerId, id) {
|
|
884
|
+
let value;
|
|
885
|
+
try {
|
|
886
|
+
value = JSON.parse(
|
|
887
|
+
await (0, import_promises2.readFile)(outputSnapshotPath(directory, id), "utf8")
|
|
888
|
+
);
|
|
889
|
+
} catch (error) {
|
|
890
|
+
throw outputFailure("snapshot_unavailable", error);
|
|
891
|
+
}
|
|
892
|
+
if (!isStoredOutputSnapshot(value, ownerId, id))
|
|
893
|
+
throw outputFailure("snapshot_binding_invalid");
|
|
894
|
+
return value;
|
|
895
|
+
}
|
|
896
|
+
function isStoredOutputSnapshot(value, ownerId, id) {
|
|
897
|
+
if (!value || typeof value !== "object") return false;
|
|
898
|
+
const snapshot = value;
|
|
899
|
+
if (snapshot.kind !== "exec_output_snapshot_v1" || snapshot.ownerId !== ownerId)
|
|
900
|
+
return false;
|
|
901
|
+
if (typeof snapshot.streamId !== "string" || !ID.test(snapshot.streamId))
|
|
902
|
+
return false;
|
|
903
|
+
const body = snapshot.body;
|
|
904
|
+
if (!body || typeof body !== "object" || body.id !== id) return false;
|
|
905
|
+
return isExecOutputBody(body);
|
|
906
|
+
}
|
|
907
|
+
function isExecOutputBody(value) {
|
|
908
|
+
if (!value || typeof value !== "object") return false;
|
|
909
|
+
const body = value;
|
|
910
|
+
if (typeof body.id !== "string" || !ID.test(body.id)) return false;
|
|
911
|
+
if (body.stream !== "stdout" && body.stream !== "stderr") return false;
|
|
912
|
+
if (!Number.isSafeInteger(body.startByte) || body.startByte < 0) return false;
|
|
913
|
+
if (!Number.isSafeInteger(body.endByte) || body.endByte < body.startByte)
|
|
914
|
+
return false;
|
|
915
|
+
if (body.byteLength !== body.endByte - body.startByte) return false;
|
|
916
|
+
return typeof body.sha256 === "string" && /^sha256:[a-f0-9]{64}$/.test(body.sha256);
|
|
917
|
+
}
|
|
918
|
+
async function readOutputSnapshot(directory, ownerId, body) {
|
|
919
|
+
const snapshot = await lookupOutputSnapshot(directory, ownerId, body.id);
|
|
920
|
+
const stored = snapshot.body;
|
|
921
|
+
if (stored.stream !== body.stream || stored.startByte !== body.startByte || stored.endByte !== body.endByte || stored.byteLength !== body.byteLength || stored.sha256 !== body.sha256)
|
|
922
|
+
throw outputFailure("snapshot_binding_invalid");
|
|
923
|
+
return snapshot;
|
|
924
|
+
}
|
|
925
|
+
|
|
926
|
+
// plugins/exec/source/request-resources.ts
|
|
927
|
+
var ExecRequestResources = class {
|
|
928
|
+
constructor(manager, pending, preparation) {
|
|
929
|
+
this.manager = manager;
|
|
930
|
+
this.pending = pending;
|
|
931
|
+
const state = preparation?.requestState;
|
|
932
|
+
if (!state) return;
|
|
933
|
+
const saved = state.read("exec.terminal.v1");
|
|
934
|
+
if (saved !== void 0) this.restore(saved);
|
|
935
|
+
state.register("exec.terminal.v1", {
|
|
936
|
+
snapshot: () => this.snapshot(),
|
|
937
|
+
dispose: () => this.dispose()
|
|
938
|
+
});
|
|
939
|
+
}
|
|
940
|
+
manager;
|
|
941
|
+
pending;
|
|
942
|
+
owned = /* @__PURE__ */ new Map();
|
|
943
|
+
restored = /* @__PURE__ */ new Map();
|
|
944
|
+
deliveries = /* @__PURE__ */ new Map();
|
|
945
|
+
started(processId, scope, settled, context) {
|
|
946
|
+
this.owned.set(processId, scope);
|
|
947
|
+
context?.requestWork?.trackUntil(settled);
|
|
948
|
+
}
|
|
949
|
+
forget(processId) {
|
|
950
|
+
this.owned.delete(processId);
|
|
951
|
+
this.restored.delete(processId);
|
|
952
|
+
this.deliveries.delete(processId);
|
|
953
|
+
}
|
|
954
|
+
isRestored(processId) {
|
|
955
|
+
return this.restored.has(processId);
|
|
956
|
+
}
|
|
957
|
+
terminal(processId, scope, cursor) {
|
|
958
|
+
const entry = this.restored.get(processId);
|
|
959
|
+
if (!entry) return void 0;
|
|
960
|
+
if (entry.scope !== scope)
|
|
961
|
+
throw new ExecPluginError(
|
|
962
|
+
"unknown_exec_process",
|
|
963
|
+
"The exec process belongs to a different session."
|
|
964
|
+
);
|
|
965
|
+
if (cursor !== void 0 && cursor !== entry.cursor)
|
|
966
|
+
throw new ExecPluginError(
|
|
967
|
+
"stale_exec_process_cursor",
|
|
968
|
+
"The saved exec cursor is stale."
|
|
969
|
+
);
|
|
970
|
+
return this.deliveries.get(processId).reserve({
|
|
971
|
+
...structuredClone(entry.snapshot),
|
|
972
|
+
nextCursor: entry.cursor
|
|
973
|
+
});
|
|
974
|
+
}
|
|
975
|
+
rejectTerminal(snapshot) {
|
|
976
|
+
this.deliveries.get(snapshot.processId)?.reject(snapshot);
|
|
977
|
+
}
|
|
978
|
+
snapshot() {
|
|
979
|
+
for (const delivery of this.deliveries.values()) delivery.assertAvailable();
|
|
980
|
+
const executions = [...this.restored.values()];
|
|
981
|
+
for (const [processId, scope] of this.owned) {
|
|
982
|
+
const execution = this.pending.get(processId);
|
|
983
|
+
if (!execution) continue;
|
|
984
|
+
const terminal = this.manager.snapshotSettled(processId, scope);
|
|
985
|
+
const before = execution.filesystemStateBefore;
|
|
986
|
+
executions.push({
|
|
987
|
+
processId,
|
|
988
|
+
scope,
|
|
989
|
+
...terminal,
|
|
990
|
+
execution: {
|
|
991
|
+
...execution,
|
|
992
|
+
filesystemStateBefore: before ? { ...before, entries: [...before.entries] } : null
|
|
993
|
+
}
|
|
994
|
+
});
|
|
995
|
+
}
|
|
996
|
+
return { kind: "exec_terminal_state_v2", executions };
|
|
997
|
+
}
|
|
998
|
+
restore(value) {
|
|
999
|
+
if (!isRecord(value) || value.kind !== "exec_terminal_state_v1" && value.kind !== "exec_terminal_state_v2" || !Array.isArray(value.executions))
|
|
1000
|
+
throw invalid();
|
|
1001
|
+
for (const entry of value.executions) {
|
|
1002
|
+
if (!isSavedExecution(entry) || this.restored.has(entry.processId))
|
|
1003
|
+
throw invalid();
|
|
1004
|
+
const before = entry.execution.filesystemStateBefore;
|
|
1005
|
+
this.restored.set(entry.processId, structuredClone(entry));
|
|
1006
|
+
this.deliveries.set(entry.processId, new ExecTerminalDelivery());
|
|
1007
|
+
this.pending.set(entry.processId, {
|
|
1008
|
+
...structuredClone(entry.execution),
|
|
1009
|
+
filesystemStateBefore: before ? { ...before, entries: new Map(before.entries) } : null
|
|
1010
|
+
});
|
|
1011
|
+
}
|
|
1012
|
+
}
|
|
1013
|
+
async dispose() {
|
|
1014
|
+
for (const [processId, scope] of this.owned) {
|
|
1015
|
+
try {
|
|
1016
|
+
await this.manager.cancel({ processId, scope });
|
|
1017
|
+
} catch {
|
|
1018
|
+
}
|
|
1019
|
+
try {
|
|
1020
|
+
await this.manager.release(processId, scope);
|
|
1021
|
+
} catch {
|
|
1022
|
+
}
|
|
1023
|
+
this.pending.delete(processId);
|
|
1024
|
+
}
|
|
1025
|
+
for (const id of this.restored.keys()) this.pending.delete(id);
|
|
1026
|
+
this.owned.clear();
|
|
1027
|
+
this.restored.clear();
|
|
1028
|
+
this.deliveries.clear();
|
|
1029
|
+
}
|
|
1030
|
+
};
|
|
1031
|
+
function isSavedExecution(value) {
|
|
1032
|
+
if (!isRecord(value) || typeof value.processId !== "string" || typeof value.scope !== "string" || !Number.isSafeInteger(value.cursor) || value.cursor < 1 || !isRecord(value.snapshot) || value.snapshot.processId !== value.processId || value.snapshot.status !== "settled" || !isStream(value.snapshot.stdout, "stdout") || !isStream(value.snapshot.stderr, "stderr") || !Number.isFinite(value.snapshot.elapsedMs) || !isRecord(value.execution) || typeof value.execution.commandPreview !== "string" || !isRecord(value.execution.cwd) || typeof value.execution.cwd.absolutePath !== "string" || typeof value.execution.cwd.logicalPath !== "string")
|
|
1033
|
+
return false;
|
|
1034
|
+
if (![value.execution.hardTimeoutMs, value.execution.idleTimeoutMs].every(
|
|
1035
|
+
Number.isFinite
|
|
1036
|
+
))
|
|
1037
|
+
return false;
|
|
1038
|
+
const before = value.execution.filesystemStateBefore;
|
|
1039
|
+
return before === null || isRecord(before) && typeof before.absoluteRoot === "string" && typeof before.logicalRoot === "string" && typeof before.rootExists === "boolean" && typeof before.complete === "boolean" && Array.isArray(before.entries) && before.entries.every(
|
|
1040
|
+
(entry) => Array.isArray(entry) && entry.length === 2 && typeof entry[0] === "string" && isRecord(entry[1]) && typeof entry[1].kind === "string" && [entry[1].mode, entry[1].size, entry[1].mtimeMs].every(
|
|
1041
|
+
Number.isFinite
|
|
1042
|
+
)
|
|
1043
|
+
);
|
|
1044
|
+
}
|
|
1045
|
+
function isStream(value, stream) {
|
|
1046
|
+
return isRecord(value) && typeof value.text === "string" && typeof value.sawOutput === "boolean" && (value.body === void 0 || isExecOutputBody(value.body) && value.body.stream === stream) && isRecord(value.metadata) && typeof value.metadata.truncated === "boolean" && [
|
|
1047
|
+
value.metadata.originalChars,
|
|
1048
|
+
value.metadata.returnedChars,
|
|
1049
|
+
value.metadata.omittedChars
|
|
1050
|
+
].every(Number.isFinite);
|
|
1051
|
+
}
|
|
1052
|
+
function isRecord(value) {
|
|
1053
|
+
return !!value && typeof value === "object" && !Array.isArray(value);
|
|
1054
|
+
}
|
|
1055
|
+
function invalid() {
|
|
1056
|
+
return new Error("exec_terminal_snapshot_invalid");
|
|
1057
|
+
}
|
|
1058
|
+
|
|
1059
|
+
// plugins/exec/source/paths.ts
|
|
1060
|
+
var import_promises3 = require("node:fs/promises");
|
|
1061
|
+
var import_node_path3 = require("node:path");
|
|
501
1062
|
function resolveContextualDirectory(pluginContext, executionContext, requestedPath) {
|
|
502
|
-
if ((0,
|
|
1063
|
+
if ((0, import_node_path3.isAbsolute)(requestedPath)) return { absolutePath: requestedPath };
|
|
503
1064
|
const isWorkspaceAlias = requestedPath === "workspace" || requestedPath.startsWith("workspace/");
|
|
504
1065
|
const base = resolvePluginPath(
|
|
505
1066
|
{
|
|
@@ -509,73 +1070,688 @@ function resolveContextualDirectory(pluginContext, executionContext, requestedPa
|
|
|
509
1070
|
{ allowedLocations: [isWorkspaceAlias ? "workspace" : "agent_work"] }
|
|
510
1071
|
);
|
|
511
1072
|
const relativePath = isWorkspaceAlias ? requestedPath.slice("workspace".length + 1) || "." : requestedPath;
|
|
512
|
-
return { absolutePath: `${base.absolutePath}${
|
|
1073
|
+
return { absolutePath: `${base.absolutePath}${import_node_path3.sep}${relativePath}`, base };
|
|
513
1074
|
}
|
|
514
1075
|
function isOutsideExecContextBase(relativePath) {
|
|
515
1076
|
if (relativePath === "..") return true;
|
|
516
|
-
if (relativePath.startsWith(`..${
|
|
517
|
-
return (0,
|
|
1077
|
+
if (relativePath.startsWith(`..${import_node_path3.sep}`)) return true;
|
|
1078
|
+
return (0, import_node_path3.isAbsolute)(relativePath);
|
|
518
1079
|
}
|
|
519
1080
|
function logicalDirectory(absolutePath, base) {
|
|
520
1081
|
if (!base) return absolutePath;
|
|
521
|
-
const fromBase = (0,
|
|
1082
|
+
const fromBase = (0, import_node_path3.relative)(base.absolutePath, absolutePath);
|
|
522
1083
|
if (isOutsideExecContextBase(fromBase)) return absolutePath;
|
|
523
|
-
return
|
|
1084
|
+
return import_node_path3.posix.join(base.logicalPath, fromBase.split(import_node_path3.sep).join("/") || ".");
|
|
1085
|
+
}
|
|
1086
|
+
async function resolveExecWorkingDirectory(pluginContext, executionContext, rawPath) {
|
|
1087
|
+
const requestedPath = readRequiredString(rawPath, {
|
|
1088
|
+
name: "cwd",
|
|
1089
|
+
trim: false,
|
|
1090
|
+
maxLength: 4096
|
|
1091
|
+
});
|
|
1092
|
+
if (requestedPath.includes("\0")) {
|
|
1093
|
+
throw new ExecPluginError(
|
|
1094
|
+
"exec_cwd_invalid",
|
|
1095
|
+
"The selected cwd contains NUL characters."
|
|
1096
|
+
);
|
|
1097
|
+
}
|
|
1098
|
+
const target = resolveContextualDirectory(
|
|
1099
|
+
pluginContext,
|
|
1100
|
+
executionContext,
|
|
1101
|
+
requestedPath
|
|
1102
|
+
);
|
|
1103
|
+
let absolutePath;
|
|
1104
|
+
let info;
|
|
1105
|
+
try {
|
|
1106
|
+
absolutePath = await (0, import_promises3.realpath)(target.absolutePath);
|
|
1107
|
+
info = await (0, import_promises3.stat)(absolutePath);
|
|
1108
|
+
} catch (error) {
|
|
1109
|
+
if (error instanceof Error && "code" in error && error.code === "ENOENT") {
|
|
1110
|
+
throw new ExecPluginError(
|
|
1111
|
+
"exec_cwd_not_found",
|
|
1112
|
+
"The selected cwd does not exist. Select an existing directory."
|
|
1113
|
+
);
|
|
1114
|
+
}
|
|
1115
|
+
throw new ExecPluginError(
|
|
1116
|
+
"exec_cwd_inaccessible",
|
|
1117
|
+
"The selected cwd cannot be accessed by the runtime."
|
|
1118
|
+
);
|
|
1119
|
+
}
|
|
1120
|
+
if (!info.isDirectory()) {
|
|
1121
|
+
throw new ExecPluginError(
|
|
1122
|
+
"exec_cwd_not_directory",
|
|
1123
|
+
"The selected cwd is not a directory."
|
|
1124
|
+
);
|
|
1125
|
+
}
|
|
1126
|
+
return Object.freeze({
|
|
1127
|
+
absolutePath,
|
|
1128
|
+
logicalPath: logicalDirectory(absolutePath, target.base)
|
|
1129
|
+
});
|
|
1130
|
+
}
|
|
1131
|
+
|
|
1132
|
+
// plugins/exec/source/process-manager.ts
|
|
1133
|
+
var import_node_child_process = require("node:child_process");
|
|
1134
|
+
var import_node_crypto6 = require("node:crypto");
|
|
1135
|
+
var import_node_os = require("node:os");
|
|
1136
|
+
var import_node_path6 = require("node:path");
|
|
1137
|
+
|
|
1138
|
+
// plugins/exec/source/process-output.ts
|
|
1139
|
+
function streamReceipt2(body) {
|
|
1140
|
+
return {
|
|
1141
|
+
text: "",
|
|
1142
|
+
sawOutput: (body?.endByte ?? 0) > 0,
|
|
1143
|
+
metadata: {
|
|
1144
|
+
truncated: false,
|
|
1145
|
+
originalChars: 0,
|
|
1146
|
+
returnedChars: 0,
|
|
1147
|
+
omittedChars: 0
|
|
1148
|
+
},
|
|
1149
|
+
...body ? { body } : {}
|
|
1150
|
+
};
|
|
1151
|
+
}
|
|
1152
|
+
async function createExecProcessOutput(store, ownerId) {
|
|
1153
|
+
const stdout = await store.createWriter({ ownerId, stream: "stdout" });
|
|
1154
|
+
let stderr;
|
|
1155
|
+
try {
|
|
1156
|
+
stderr = await store.createWriter({ ownerId, stream: "stderr" });
|
|
1157
|
+
} catch (error) {
|
|
1158
|
+
await stdout.dispose();
|
|
1159
|
+
throw error;
|
|
1160
|
+
}
|
|
1161
|
+
const offsets = { stdout: 0, stderr: 0 };
|
|
1162
|
+
let settled;
|
|
1163
|
+
let failure;
|
|
1164
|
+
let finished2 = false;
|
|
1165
|
+
let tail = Promise.resolve();
|
|
1166
|
+
const serialize = async (operation) => {
|
|
1167
|
+
const previous = tail;
|
|
1168
|
+
let release = () => {
|
|
1169
|
+
};
|
|
1170
|
+
tail = new Promise((resolve2) => {
|
|
1171
|
+
release = resolve2;
|
|
1172
|
+
});
|
|
1173
|
+
await previous;
|
|
1174
|
+
try {
|
|
1175
|
+
return await operation();
|
|
1176
|
+
} finally {
|
|
1177
|
+
release();
|
|
1178
|
+
}
|
|
1179
|
+
};
|
|
1180
|
+
const recordFailure = (error) => {
|
|
1181
|
+
failure ??= error instanceof Error ? error.message : "exec_output_write_failed";
|
|
1182
|
+
};
|
|
1183
|
+
const capture = async () => {
|
|
1184
|
+
try {
|
|
1185
|
+
const out = await stdout.snapshot({
|
|
1186
|
+
startByte: offsets.stdout,
|
|
1187
|
+
endByte: finished2 ? stdout.byteLength : stdout.utf8ByteLength
|
|
1188
|
+
});
|
|
1189
|
+
const err = await stderr.snapshot({
|
|
1190
|
+
startByte: offsets.stderr,
|
|
1191
|
+
endByte: finished2 ? stderr.byteLength : stderr.utf8ByteLength
|
|
1192
|
+
});
|
|
1193
|
+
return {
|
|
1194
|
+
stdout: streamReceipt2(out),
|
|
1195
|
+
stderr: streamReceipt2(err),
|
|
1196
|
+
...failureReceipt()
|
|
1197
|
+
};
|
|
1198
|
+
} catch (error) {
|
|
1199
|
+
recordFailure(error);
|
|
1200
|
+
return {
|
|
1201
|
+
stdout: streamReceipt2(),
|
|
1202
|
+
stderr: streamReceipt2(),
|
|
1203
|
+
...failureReceipt()
|
|
1204
|
+
};
|
|
1205
|
+
}
|
|
1206
|
+
};
|
|
1207
|
+
const failureReceipt = () => failure ? {
|
|
1208
|
+
outputFailure: {
|
|
1209
|
+
code: failure,
|
|
1210
|
+
stdoutBytes: stdout.byteLength,
|
|
1211
|
+
stderrBytes: stderr.byteLength
|
|
1212
|
+
}
|
|
1213
|
+
} : {};
|
|
1214
|
+
return Object.freeze({
|
|
1215
|
+
attach(streams, onActivity, onFailure) {
|
|
1216
|
+
for (const name of ["stdout", "stderr"]) {
|
|
1217
|
+
const source = streams[name];
|
|
1218
|
+
const writer = name === "stdout" ? stdout : stderr;
|
|
1219
|
+
source.on("data", onActivity);
|
|
1220
|
+
const failed = (error) => {
|
|
1221
|
+
recordFailure(error);
|
|
1222
|
+
source.pause();
|
|
1223
|
+
onFailure();
|
|
1224
|
+
};
|
|
1225
|
+
writer.sink.on("error", failed);
|
|
1226
|
+
source.on("error", failed);
|
|
1227
|
+
source.pipe(writer.sink);
|
|
1228
|
+
}
|
|
1229
|
+
},
|
|
1230
|
+
async finish() {
|
|
1231
|
+
if (!stdout.sink.writableEnded) stdout.sink.end();
|
|
1232
|
+
if (!stderr.sink.writableEnded) stderr.sink.end();
|
|
1233
|
+
const outcomes = await Promise.allSettled([
|
|
1234
|
+
stdout.completion,
|
|
1235
|
+
stderr.completion
|
|
1236
|
+
]);
|
|
1237
|
+
for (const outcome of outcomes)
|
|
1238
|
+
if (outcome.status === "rejected") recordFailure(outcome.reason);
|
|
1239
|
+
await serialize(async () => {
|
|
1240
|
+
finished2 = true;
|
|
1241
|
+
settled = await capture();
|
|
1242
|
+
});
|
|
1243
|
+
},
|
|
1244
|
+
peek() {
|
|
1245
|
+
return serialize(async () => settled ?? await capture());
|
|
1246
|
+
},
|
|
1247
|
+
checkpoint() {
|
|
1248
|
+
if (!settled) throw new Error("exec_snapshot_not_quiescent");
|
|
1249
|
+
return settled;
|
|
1250
|
+
},
|
|
1251
|
+
accept(snapshot) {
|
|
1252
|
+
return serialize(async () => {
|
|
1253
|
+
if (snapshot.outputFailure)
|
|
1254
|
+
throw new Error("exec_output_not_delivered");
|
|
1255
|
+
for (const name of ["stdout", "stderr"]) {
|
|
1256
|
+
const body = snapshot[name].body;
|
|
1257
|
+
const writer = name === "stdout" ? stdout : stderr;
|
|
1258
|
+
if (!body || body.startByte !== offsets[name] || body.endByte > writer.byteLength)
|
|
1259
|
+
throw new Error("exec_output_snapshot_mismatch");
|
|
1260
|
+
}
|
|
1261
|
+
offsets.stdout = snapshot.stdout.body.endByte;
|
|
1262
|
+
offsets.stderr = snapshot.stderr.body.endByte;
|
|
1263
|
+
if (finished2) settled = await capture();
|
|
1264
|
+
});
|
|
1265
|
+
},
|
|
1266
|
+
async dispose() {
|
|
1267
|
+
await Promise.all([stdout.dispose(), stderr.dispose()]);
|
|
1268
|
+
}
|
|
1269
|
+
});
|
|
1270
|
+
}
|
|
1271
|
+
|
|
1272
|
+
// plugins/exec/source/output-store.ts
|
|
1273
|
+
var import_promises9 = require("node:fs/promises");
|
|
1274
|
+
var import_node_path5 = require("node:path");
|
|
1275
|
+
|
|
1276
|
+
// plugins/exec/source/output-contracts.ts
|
|
1277
|
+
var DEFAULT_EXEC_OUTPUT_RETENTION_MS = 7 * 24 * 60 * 6e4;
|
|
1278
|
+
var EXEC_OUTPUT_IO_CHUNK_BYTES = 64 * 1024;
|
|
1279
|
+
|
|
1280
|
+
// plugins/exec/source/output-range-reader.ts
|
|
1281
|
+
var import_node_crypto4 = require("node:crypto");
|
|
1282
|
+
var import_promises4 = require("node:fs/promises");
|
|
1283
|
+
function assertOutputRange(startByte, endByte, availableBytes) {
|
|
1284
|
+
if (!Number.isSafeInteger(startByte) || startByte < 0)
|
|
1285
|
+
throw outputFailure("range_invalid");
|
|
1286
|
+
if (!Number.isSafeInteger(endByte) || endByte < startByte)
|
|
1287
|
+
throw outputFailure("range_invalid");
|
|
1288
|
+
if (endByte > availableBytes) throw outputFailure("range_invalid");
|
|
1289
|
+
}
|
|
1290
|
+
async function* readOutputFileRange(path, range) {
|
|
1291
|
+
assertOutputRange(
|
|
1292
|
+
range.offset,
|
|
1293
|
+
range.offset + range.length,
|
|
1294
|
+
Number.MAX_SAFE_INTEGER
|
|
1295
|
+
);
|
|
1296
|
+
if (!Number.isSafeInteger(range.maxChunkBytes) || range.maxChunkBytes < 1 || range.maxChunkBytes > EXEC_OUTPUT_IO_CHUNK_BYTES)
|
|
1297
|
+
throw outputFailure("chunk_size_invalid");
|
|
1298
|
+
range.signal?.throwIfAborted();
|
|
1299
|
+
const handle = await (0, import_promises4.open)(path, "r").catch((error) => {
|
|
1300
|
+
throw outputFailure("read_failed", error);
|
|
1301
|
+
});
|
|
1302
|
+
try {
|
|
1303
|
+
const end = range.offset + range.length;
|
|
1304
|
+
let position = range.offset;
|
|
1305
|
+
while (position < end) {
|
|
1306
|
+
range.signal?.throwIfAborted();
|
|
1307
|
+
const buffer = Buffer.allocUnsafe(
|
|
1308
|
+
Math.min(range.maxChunkBytes, end - position)
|
|
1309
|
+
);
|
|
1310
|
+
const { bytesRead } = await handle.read(
|
|
1311
|
+
buffer,
|
|
1312
|
+
0,
|
|
1313
|
+
buffer.length,
|
|
1314
|
+
position
|
|
1315
|
+
);
|
|
1316
|
+
if (bytesRead === 0) throw outputFailure("body_incomplete");
|
|
1317
|
+
position += bytesRead;
|
|
1318
|
+
yield buffer.subarray(0, bytesRead);
|
|
1319
|
+
}
|
|
1320
|
+
range.signal?.throwIfAborted();
|
|
1321
|
+
} catch (error) {
|
|
1322
|
+
if (range.signal?.aborted) throw error;
|
|
1323
|
+
if (error instanceof ExecPluginError) throw error;
|
|
1324
|
+
throw outputFailure("read_failed", error);
|
|
1325
|
+
} finally {
|
|
1326
|
+
await handle.close();
|
|
1327
|
+
}
|
|
1328
|
+
}
|
|
1329
|
+
async function hashOutputRange(path, startByte, endByte, signal) {
|
|
1330
|
+
const hash = (0, import_node_crypto4.createHash)("sha256");
|
|
1331
|
+
for await (const chunk of readOutputFileRange(path, {
|
|
1332
|
+
offset: startByte,
|
|
1333
|
+
length: endByte - startByte,
|
|
1334
|
+
maxChunkBytes: EXEC_OUTPUT_IO_CHUNK_BYTES,
|
|
1335
|
+
...signal ? { signal } : {}
|
|
1336
|
+
}))
|
|
1337
|
+
hash.update(chunk);
|
|
1338
|
+
return `sha256:${hash.digest("hex")}`;
|
|
1339
|
+
}
|
|
1340
|
+
async function assertOutputBodyHash(path, body, signal) {
|
|
1341
|
+
assertOutputRange(body.startByte, body.endByte, Number.MAX_SAFE_INTEGER);
|
|
1342
|
+
if (body.byteLength !== body.endByte - body.startByte)
|
|
1343
|
+
throw outputFailure("snapshot_binding_invalid");
|
|
1344
|
+
if (await hashOutputRange(path, body.startByte, body.endByte, signal) !== body.sha256)
|
|
1345
|
+
throw outputFailure("body_hash_mismatch");
|
|
1346
|
+
}
|
|
1347
|
+
|
|
1348
|
+
// plugins/exec/source/output-maintenance.ts
|
|
1349
|
+
var import_promises5 = require("node:fs/promises");
|
|
1350
|
+
var MAX_CLEANUP_INTERVAL_MS = 60 * 6e4;
|
|
1351
|
+
var jobs = /* @__PURE__ */ new Map();
|
|
1352
|
+
function scheduleExecOutputCleanup(root, retentionMs, cleanup) {
|
|
1353
|
+
const intervalMs = Math.max(
|
|
1354
|
+
1,
|
|
1355
|
+
Math.min(retentionMs, MAX_CLEANUP_INTERVAL_MS)
|
|
1356
|
+
);
|
|
1357
|
+
const previous = jobs.get(root);
|
|
1358
|
+
if (previous) {
|
|
1359
|
+
previous.cleanup = cleanup;
|
|
1360
|
+
previous.intervalMs = intervalMs;
|
|
1361
|
+
previous.requested = true;
|
|
1362
|
+
return;
|
|
1363
|
+
}
|
|
1364
|
+
const job = { cleanup, intervalMs, requested: false };
|
|
1365
|
+
jobs.set(root, job);
|
|
1366
|
+
const sweep = async () => {
|
|
1367
|
+
job.requested = false;
|
|
1368
|
+
let empty = false;
|
|
1369
|
+
try {
|
|
1370
|
+
await job.cleanup();
|
|
1371
|
+
empty = (await (0, import_promises5.readdir)(root).catch((error) => {
|
|
1372
|
+
if (error.code === "ENOENT") return [];
|
|
1373
|
+
throw error;
|
|
1374
|
+
})).length === 0;
|
|
1375
|
+
} catch {
|
|
1376
|
+
process.emitWarning(
|
|
1377
|
+
"EXEC output cleanup failed; a later sweep will retry.",
|
|
1378
|
+
{
|
|
1379
|
+
code: "EXEC_OUTPUT_CLEANUP_FAILED"
|
|
1380
|
+
}
|
|
1381
|
+
);
|
|
1382
|
+
}
|
|
1383
|
+
if (empty && !job.requested) {
|
|
1384
|
+
jobs.delete(root);
|
|
1385
|
+
return;
|
|
1386
|
+
}
|
|
1387
|
+
const timer = setTimeout(() => {
|
|
1388
|
+
void sweep();
|
|
1389
|
+
}, job.intervalMs);
|
|
1390
|
+
timer.unref();
|
|
1391
|
+
};
|
|
1392
|
+
void sweep();
|
|
1393
|
+
}
|
|
1394
|
+
|
|
1395
|
+
// plugins/exec/source/output-retention.ts
|
|
1396
|
+
var import_promises6 = require("node:fs/promises");
|
|
1397
|
+
var import_node_path4 = require("node:path");
|
|
1398
|
+
async function outputCaptureCompletedAt(directory, owner) {
|
|
1399
|
+
if (owner?.completedAt !== null && owner?.completedAt !== void 0)
|
|
1400
|
+
return owner.completedAt;
|
|
1401
|
+
const entries = await (0, import_promises6.readdir)(directory, { withFileTypes: true });
|
|
1402
|
+
const captures = entries.filter(
|
|
1403
|
+
(entry) => entry.isFile() && entry.name.endsWith(".bytes")
|
|
1404
|
+
);
|
|
1405
|
+
if (!captures.length) return (await (0, import_promises6.stat)(directory)).mtimeMs;
|
|
1406
|
+
const times = await Promise.all(
|
|
1407
|
+
captures.map(
|
|
1408
|
+
async (entry) => (await (0, import_promises6.stat)((0, import_node_path4.join)(directory, entry.name))).mtimeMs
|
|
1409
|
+
)
|
|
1410
|
+
);
|
|
1411
|
+
return Math.max(...times);
|
|
1412
|
+
}
|
|
1413
|
+
async function hasOutputExpired(directory, owner, now, retentionMs) {
|
|
1414
|
+
return now - await outputCaptureCompletedAt(directory, owner) >= retentionMs;
|
|
1415
|
+
}
|
|
1416
|
+
|
|
1417
|
+
// plugins/exec/source/output-utf8-boundary.ts
|
|
1418
|
+
function incompleteUtf8TailBytes(tail) {
|
|
1419
|
+
if (tail.length === 0) return 0;
|
|
1420
|
+
let lead = tail.length - 1;
|
|
1421
|
+
while (lead >= 0 && (tail[lead] & 192) === 128) lead -= 1;
|
|
1422
|
+
if (lead < 0) return 0;
|
|
1423
|
+
const byte = tail[lead];
|
|
1424
|
+
let expected = 1;
|
|
1425
|
+
if (byte >= 194 && byte <= 223) expected = 2;
|
|
1426
|
+
if (byte >= 224 && byte <= 239) expected = 3;
|
|
1427
|
+
if (byte >= 240 && byte <= 244) expected = 4;
|
|
1428
|
+
const available = tail.length - lead;
|
|
1429
|
+
return available < expected ? available : 0;
|
|
1430
|
+
}
|
|
1431
|
+
|
|
1432
|
+
// plugins/exec/source/output-writer.ts
|
|
1433
|
+
var import_node_crypto5 = require("node:crypto");
|
|
1434
|
+
var import_promises7 = require("node:fs/promises");
|
|
1435
|
+
var import_node_stream = require("node:stream");
|
|
1436
|
+
var import_promises8 = require("node:stream/promises");
|
|
1437
|
+
var OutputFileSink = class extends import_node_stream.Writable {
|
|
1438
|
+
constructor(file) {
|
|
1439
|
+
super({ highWaterMark: EXEC_OUTPUT_IO_CHUNK_BYTES });
|
|
1440
|
+
this.file = file;
|
|
1441
|
+
}
|
|
1442
|
+
file;
|
|
1443
|
+
committedBytes = 0;
|
|
1444
|
+
utf8ByteLength = 0;
|
|
1445
|
+
tail = Buffer.alloc(0);
|
|
1446
|
+
_write(chunk, _encoding, callback) {
|
|
1447
|
+
this.writeChunk(chunk).then(
|
|
1448
|
+
() => callback(),
|
|
1449
|
+
(error) => callback(outputFailure("write_failed", error))
|
|
1450
|
+
);
|
|
1451
|
+
}
|
|
1452
|
+
async writeChunk(chunk) {
|
|
1453
|
+
let offset = 0;
|
|
1454
|
+
while (offset < chunk.length) {
|
|
1455
|
+
const length = Math.min(
|
|
1456
|
+
EXEC_OUTPUT_IO_CHUNK_BYTES,
|
|
1457
|
+
chunk.length - offset
|
|
1458
|
+
);
|
|
1459
|
+
const { bytesWritten } = await this.file.write(
|
|
1460
|
+
chunk,
|
|
1461
|
+
offset,
|
|
1462
|
+
length,
|
|
1463
|
+
this.committedBytes
|
|
1464
|
+
);
|
|
1465
|
+
if (bytesWritten === 0) throw outputFailure("write_zero_progress");
|
|
1466
|
+
const written = chunk.subarray(offset, offset + bytesWritten);
|
|
1467
|
+
this.tail = Buffer.concat([this.tail, written.subarray(-4)]).subarray(-4);
|
|
1468
|
+
offset += bytesWritten;
|
|
1469
|
+
this.committedBytes += bytesWritten;
|
|
1470
|
+
this.utf8ByteLength = this.committedBytes - incompleteUtf8TailBytes(this.tail);
|
|
1471
|
+
}
|
|
1472
|
+
}
|
|
1473
|
+
_final(callback) {
|
|
1474
|
+
this.file.datasync().then(
|
|
1475
|
+
() => callback(),
|
|
1476
|
+
(error) => callback(outputFailure("write_failed", error))
|
|
1477
|
+
);
|
|
1478
|
+
}
|
|
1479
|
+
_destroy(error, callback) {
|
|
1480
|
+
this.file.close().then(
|
|
1481
|
+
() => callback(error),
|
|
1482
|
+
(cause) => callback(error ?? outputFailure("close_failed", cause))
|
|
1483
|
+
);
|
|
1484
|
+
}
|
|
1485
|
+
};
|
|
1486
|
+
async function createOutputWriter(params) {
|
|
1487
|
+
const streamId = (0, import_node_crypto5.randomUUID)();
|
|
1488
|
+
const path = outputStreamPath(params.directory, streamId);
|
|
1489
|
+
const file = await (0, import_promises7.open)(path, "wx+", 384).catch((error) => {
|
|
1490
|
+
throw outputFailure("write_failed", error);
|
|
1491
|
+
});
|
|
1492
|
+
const sink = new OutputFileSink(file);
|
|
1493
|
+
const completion = (0, import_promises8.finished)(sink).finally(params.onClosed);
|
|
1494
|
+
void completion.catch(() => void 0);
|
|
1495
|
+
return Object.freeze({
|
|
1496
|
+
sink,
|
|
1497
|
+
get byteLength() {
|
|
1498
|
+
return sink.committedBytes;
|
|
1499
|
+
},
|
|
1500
|
+
get utf8ByteLength() {
|
|
1501
|
+
return sink.utf8ByteLength;
|
|
1502
|
+
},
|
|
1503
|
+
completion,
|
|
1504
|
+
async snapshot(range = {
|
|
1505
|
+
startByte: 0
|
|
1506
|
+
}) {
|
|
1507
|
+
if (sink.errored) throw sink.errored;
|
|
1508
|
+
const startByte = range.startByte;
|
|
1509
|
+
const endByte = range.endByte ?? sink.committedBytes;
|
|
1510
|
+
assertOutputRange(startByte, endByte, sink.committedBytes);
|
|
1511
|
+
const body = Object.freeze({
|
|
1512
|
+
id: (0, import_node_crypto5.randomUUID)(),
|
|
1513
|
+
stream: params.stream,
|
|
1514
|
+
startByte,
|
|
1515
|
+
endByte,
|
|
1516
|
+
byteLength: endByte - startByte,
|
|
1517
|
+
sha256: await hashOutputRange(path, startByte, endByte)
|
|
1518
|
+
});
|
|
1519
|
+
await writeOutputMetadata(outputSnapshotPath(params.directory, body.id), {
|
|
1520
|
+
kind: "exec_output_snapshot_v1",
|
|
1521
|
+
ownerId: params.ownerId,
|
|
1522
|
+
streamId,
|
|
1523
|
+
body
|
|
1524
|
+
});
|
|
1525
|
+
return body;
|
|
1526
|
+
},
|
|
1527
|
+
async dispose() {
|
|
1528
|
+
if (!sink.destroyed) sink.destroy();
|
|
1529
|
+
await completion.catch(() => void 0);
|
|
1530
|
+
}
|
|
1531
|
+
});
|
|
1532
|
+
}
|
|
1533
|
+
|
|
1534
|
+
// plugins/exec/source/output-store.ts
|
|
1535
|
+
var activeWriters = /* @__PURE__ */ new Map();
|
|
1536
|
+
var activeReaders = /* @__PURE__ */ new Map();
|
|
1537
|
+
var ownerOperations = /* @__PURE__ */ new Map();
|
|
1538
|
+
async function withOutputOwnerLock(directory, operation) {
|
|
1539
|
+
const previous = ownerOperations.get(directory) ?? Promise.resolve();
|
|
1540
|
+
let release = () => {
|
|
1541
|
+
};
|
|
1542
|
+
const current = new Promise((resolve2) => {
|
|
1543
|
+
release = resolve2;
|
|
1544
|
+
});
|
|
1545
|
+
ownerOperations.set(directory, current);
|
|
1546
|
+
await previous;
|
|
1547
|
+
try {
|
|
1548
|
+
return await operation();
|
|
1549
|
+
} finally {
|
|
1550
|
+
release();
|
|
1551
|
+
if (ownerOperations.get(directory) === current)
|
|
1552
|
+
ownerOperations.delete(directory);
|
|
1553
|
+
}
|
|
1554
|
+
}
|
|
1555
|
+
function createExecOutputStore(params) {
|
|
1556
|
+
const root = outputStorageRoot(params.stateDir);
|
|
1557
|
+
const retentionMs = params.retentionMs ?? DEFAULT_EXEC_OUTPUT_RETENTION_MS;
|
|
1558
|
+
if (!Number.isSafeInteger(retentionMs) || retentionMs < 0)
|
|
1559
|
+
throw outputFailure("retention_invalid");
|
|
1560
|
+
const now = params.now ?? Date.now;
|
|
1561
|
+
async function retain(directory, ownerId) {
|
|
1562
|
+
await prepareOutputOwnerDirectory(directory);
|
|
1563
|
+
const previous = await readOutputOwner(directory);
|
|
1564
|
+
if (previous && previous.ownerId !== ownerId)
|
|
1565
|
+
throw outputFailure("owner_binding_invalid");
|
|
1566
|
+
if (previous?.completedAt === null) return;
|
|
1567
|
+
await writeOutputMetadata((0, import_node_path5.join)(directory, "owner.json"), {
|
|
1568
|
+
kind: "exec_output_owner_v1",
|
|
1569
|
+
ownerId,
|
|
1570
|
+
completedAt: null
|
|
1571
|
+
});
|
|
1572
|
+
}
|
|
1573
|
+
const store = Object.freeze({
|
|
1574
|
+
async createWriter(input) {
|
|
1575
|
+
if (input.stream !== "stdout" && input.stream !== "stderr")
|
|
1576
|
+
throw outputFailure("stream_invalid");
|
|
1577
|
+
const directory = outputOwnerDirectory(root, input.ownerId);
|
|
1578
|
+
return withOutputOwnerLock(directory, async () => {
|
|
1579
|
+
await retain(directory, input.ownerId);
|
|
1580
|
+
const writer = await createOutputWriter({
|
|
1581
|
+
directory,
|
|
1582
|
+
ownerId: input.ownerId,
|
|
1583
|
+
stream: input.stream,
|
|
1584
|
+
async onClosed() {
|
|
1585
|
+
await withOutputOwnerLock(directory, async () => {
|
|
1586
|
+
const count = (activeWriters.get(directory) ?? 1) - 1;
|
|
1587
|
+
if (count > 0) activeWriters.set(directory, count);
|
|
1588
|
+
if (count > 0) return;
|
|
1589
|
+
activeWriters.delete(directory);
|
|
1590
|
+
await writeOutputMetadata((0, import_node_path5.join)(directory, "owner.json"), {
|
|
1591
|
+
kind: "exec_output_owner_v1",
|
|
1592
|
+
ownerId: input.ownerId,
|
|
1593
|
+
completedAt: now()
|
|
1594
|
+
});
|
|
1595
|
+
});
|
|
1596
|
+
}
|
|
1597
|
+
});
|
|
1598
|
+
activeWriters.set(directory, (activeWriters.get(directory) ?? 0) + 1);
|
|
1599
|
+
store.startMaintenance();
|
|
1600
|
+
return writer;
|
|
1601
|
+
});
|
|
1602
|
+
},
|
|
1603
|
+
async *readRange(input) {
|
|
1604
|
+
const directory = outputOwnerDirectory(root, input.ownerId);
|
|
1605
|
+
assertOutputRange(
|
|
1606
|
+
input.offset,
|
|
1607
|
+
input.offset + input.length,
|
|
1608
|
+
input.body.byteLength
|
|
1609
|
+
);
|
|
1610
|
+
await withOutputOwnerLock(directory, async () => {
|
|
1611
|
+
const owner = await readOutputOwner(directory);
|
|
1612
|
+
if (!owner) throw outputFailure("expired_or_unavailable");
|
|
1613
|
+
if (owner.ownerId !== input.ownerId)
|
|
1614
|
+
throw outputFailure("owner_binding_invalid");
|
|
1615
|
+
if (!activeWriters.has(directory) && await hasOutputExpired(directory, owner, now(), retentionMs))
|
|
1616
|
+
throw outputFailure("expired");
|
|
1617
|
+
activeReaders.set(directory, (activeReaders.get(directory) ?? 0) + 1);
|
|
1618
|
+
});
|
|
1619
|
+
try {
|
|
1620
|
+
const snapshot = await readOutputSnapshot(
|
|
1621
|
+
directory,
|
|
1622
|
+
input.ownerId,
|
|
1623
|
+
input.body
|
|
1624
|
+
);
|
|
1625
|
+
const path = outputStreamPath(directory, snapshot.streamId);
|
|
1626
|
+
await assertOutputBodyHash(path, input.body, input.signal);
|
|
1627
|
+
yield* readOutputFileRange(path, {
|
|
1628
|
+
offset: input.body.startByte + input.offset,
|
|
1629
|
+
length: input.length,
|
|
1630
|
+
maxChunkBytes: input.maxChunkBytes,
|
|
1631
|
+
...input.signal ? { signal: input.signal } : {}
|
|
1632
|
+
});
|
|
1633
|
+
} finally {
|
|
1634
|
+
const count = (activeReaders.get(directory) ?? 1) - 1;
|
|
1635
|
+
if (count > 0) activeReaders.set(directory, count);
|
|
1636
|
+
if (count === 0) activeReaders.delete(directory);
|
|
1637
|
+
}
|
|
1638
|
+
},
|
|
1639
|
+
startMaintenance() {
|
|
1640
|
+
scheduleExecOutputCleanup(
|
|
1641
|
+
root,
|
|
1642
|
+
retentionMs,
|
|
1643
|
+
() => store.cleanupExpired()
|
|
1644
|
+
);
|
|
1645
|
+
},
|
|
1646
|
+
async cleanupExpired() {
|
|
1647
|
+
const directories = await (0, import_promises9.readdir)(root, { withFileTypes: true }).catch(
|
|
1648
|
+
(error) => {
|
|
1649
|
+
if (error.code === "ENOENT") return [];
|
|
1650
|
+
throw outputFailure("cleanup_failed", error);
|
|
1651
|
+
}
|
|
1652
|
+
);
|
|
1653
|
+
let removed = 0;
|
|
1654
|
+
for (const entry of directories) {
|
|
1655
|
+
if (!entry.isDirectory() || !/^[a-f0-9]{64}$/.test(entry.name))
|
|
1656
|
+
continue;
|
|
1657
|
+
const directory = (0, import_node_path5.join)(root, entry.name);
|
|
1658
|
+
await withOutputOwnerLock(directory, async () => {
|
|
1659
|
+
if (activeWriters.has(directory)) return;
|
|
1660
|
+
if (activeReaders.has(directory)) return;
|
|
1661
|
+
const owner = await readOutputOwner(directory);
|
|
1662
|
+
if (owner && outputOwnerDirectory(root, owner.ownerId) !== directory)
|
|
1663
|
+
throw outputFailure("owner_binding_invalid");
|
|
1664
|
+
if (!await hasOutputExpired(directory, owner, now(), retentionMs))
|
|
1665
|
+
return;
|
|
1666
|
+
await (0, import_promises9.rm)(directory, { recursive: true });
|
|
1667
|
+
removed += 1;
|
|
1668
|
+
});
|
|
1669
|
+
}
|
|
1670
|
+
return removed;
|
|
1671
|
+
}
|
|
1672
|
+
});
|
|
1673
|
+
return store;
|
|
1674
|
+
}
|
|
1675
|
+
|
|
1676
|
+
// plugins/exec/source/output-snapshot.ts
|
|
1677
|
+
var import_node_string_decoder = require("node:string_decoder");
|
|
1678
|
+
|
|
1679
|
+
// plugins/exec/source/process-output-buffer.ts
|
|
1680
|
+
var ExecOutputBuffer = class {
|
|
1681
|
+
text = "";
|
|
1682
|
+
sawOutput = false;
|
|
1683
|
+
append(chunk) {
|
|
1684
|
+
if (!chunk) return;
|
|
1685
|
+
this.sawOutput = true;
|
|
1686
|
+
this.text += sanitizeJsonText(chunk);
|
|
1687
|
+
}
|
|
1688
|
+
peek() {
|
|
1689
|
+
const text = this.text;
|
|
1690
|
+
return Object.freeze({
|
|
1691
|
+
text,
|
|
1692
|
+
sawOutput: this.sawOutput,
|
|
1693
|
+
metadata: Object.freeze({
|
|
1694
|
+
truncated: false,
|
|
1695
|
+
originalChars: text.length,
|
|
1696
|
+
returnedChars: text.length,
|
|
1697
|
+
omittedChars: 0
|
|
1698
|
+
})
|
|
1699
|
+
});
|
|
1700
|
+
}
|
|
1701
|
+
accept(snapshot) {
|
|
1702
|
+
if (!this.text.startsWith(snapshot.text)) {
|
|
1703
|
+
throw new Error("exec_output_snapshot_mismatch");
|
|
1704
|
+
}
|
|
1705
|
+
this.text = this.text.slice(snapshot.text.length);
|
|
1706
|
+
}
|
|
1707
|
+
consume() {
|
|
1708
|
+
const result = this.peek();
|
|
1709
|
+
this.accept(result);
|
|
1710
|
+
return result;
|
|
1711
|
+
}
|
|
1712
|
+
};
|
|
1713
|
+
|
|
1714
|
+
// plugins/exec/source/output-snapshot.ts
|
|
1715
|
+
function execOutputOwner(scope, processId) {
|
|
1716
|
+
return JSON.stringify([scope, processId]);
|
|
524
1717
|
}
|
|
525
|
-
async function
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
1718
|
+
async function materializeExecOutput(store, scope, snapshot) {
|
|
1719
|
+
if (snapshot.outputFailure) return snapshot;
|
|
1720
|
+
const ownerId = execOutputOwner(scope, snapshot.processId);
|
|
1721
|
+
async function read(stream) {
|
|
1722
|
+
if (!stream.body) return stream;
|
|
1723
|
+
const decoder = new import_node_string_decoder.StringDecoder("utf8");
|
|
1724
|
+
const buffer = new ExecOutputBuffer();
|
|
1725
|
+
for await (const chunk of store.readRange({
|
|
1726
|
+
ownerId,
|
|
1727
|
+
body: stream.body,
|
|
1728
|
+
offset: 0,
|
|
1729
|
+
length: stream.body.byteLength,
|
|
1730
|
+
maxChunkBytes: EXEC_OUTPUT_IO_CHUNK_BYTES
|
|
1731
|
+
}))
|
|
1732
|
+
buffer.append(decoder.write(Buffer.from(chunk)));
|
|
1733
|
+
buffer.append(decoder.end());
|
|
1734
|
+
return { ...buffer.peek(), sawOutput: stream.sawOutput, body: stream.body };
|
|
536
1735
|
}
|
|
537
|
-
const target = resolveContextualDirectory(
|
|
538
|
-
pluginContext,
|
|
539
|
-
executionContext,
|
|
540
|
-
requestedPath
|
|
541
|
-
);
|
|
542
|
-
let absolutePath;
|
|
543
|
-
let info;
|
|
544
1736
|
try {
|
|
545
|
-
|
|
546
|
-
|
|
1737
|
+
const stdout = await read(snapshot.stdout);
|
|
1738
|
+
const stderr = await read(snapshot.stderr);
|
|
1739
|
+
return { ...snapshot, stdout, stderr };
|
|
547
1740
|
} catch (error) {
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
"The selected cwd cannot be accessed by the runtime."
|
|
557
|
-
);
|
|
558
|
-
}
|
|
559
|
-
if (!info.isDirectory()) {
|
|
560
|
-
throw new ExecPluginError(
|
|
561
|
-
"exec_cwd_not_directory",
|
|
562
|
-
"The selected cwd is not a directory."
|
|
563
|
-
);
|
|
1741
|
+
return {
|
|
1742
|
+
...snapshot,
|
|
1743
|
+
outputFailure: {
|
|
1744
|
+
code: error instanceof ExecPluginError ? error.code : "exec_output_read_failed",
|
|
1745
|
+
stdoutBytes: snapshot.stdout.body?.byteLength ?? 0,
|
|
1746
|
+
stderrBytes: snapshot.stderr.body?.byteLength ?? 0
|
|
1747
|
+
}
|
|
1748
|
+
};
|
|
564
1749
|
}
|
|
565
|
-
return Object.freeze({
|
|
566
|
-
absolutePath,
|
|
567
|
-
logicalPath: logicalDirectory(absolutePath, target.base)
|
|
568
|
-
});
|
|
569
1750
|
}
|
|
570
1751
|
|
|
571
|
-
// plugins/exec/source/process-manager.ts
|
|
572
|
-
var import_node_child_process = require("node:child_process");
|
|
573
|
-
var import_node_crypto2 = require("node:crypto");
|
|
574
|
-
var import_node_string_decoder = require("node:string_decoder");
|
|
575
|
-
|
|
576
1752
|
// plugins/exec/source/shell-platform.ts
|
|
577
1753
|
var import_node_fs2 = require("node:fs");
|
|
578
|
-
var
|
|
1754
|
+
var import_promises10 = require("node:fs/promises");
|
|
579
1755
|
var EXEC_SHELL = "/bin/bash";
|
|
580
1756
|
function isSupportedExecPlatform(platform) {
|
|
581
1757
|
return platform === "linux" || platform === "darwin";
|
|
@@ -588,7 +1764,7 @@ async function assertSupportedShell(platform = process.platform) {
|
|
|
588
1764
|
);
|
|
589
1765
|
}
|
|
590
1766
|
try {
|
|
591
|
-
await (0,
|
|
1767
|
+
await (0, import_promises10.access)(EXEC_SHELL, import_node_fs2.constants.X_OK);
|
|
592
1768
|
} catch {
|
|
593
1769
|
throw new ExecPluginError(
|
|
594
1770
|
"exec_shell_unavailable",
|
|
@@ -598,59 +1774,23 @@ async function assertSupportedShell(platform = process.platform) {
|
|
|
598
1774
|
}
|
|
599
1775
|
|
|
600
1776
|
// plugins/exec/source/process-manager.ts
|
|
601
|
-
var COMPLETED_PROCESS_RETENTION_MS = 5 * 6e4;
|
|
602
1777
|
var MAX_ACTIVE_PROCESSES_PER_SCOPE = 4;
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
}
|
|
607
|
-
maxChars;
|
|
608
|
-
text = "";
|
|
609
|
-
originalChars = 0;
|
|
610
|
-
omittedChars = 0;
|
|
611
|
-
sawOutput = false;
|
|
612
|
-
append(chunk) {
|
|
613
|
-
if (!chunk) return;
|
|
614
|
-
const safeChunk = sanitizeJsonText(chunk);
|
|
615
|
-
this.sawOutput = true;
|
|
616
|
-
this.originalChars += safeChunk.length;
|
|
617
|
-
const available = Math.max(this.maxChars - this.text.length, 0);
|
|
618
|
-
this.text += safeChunk.slice(0, available);
|
|
619
|
-
this.omittedChars += Math.max(safeChunk.length - available, 0);
|
|
620
|
-
}
|
|
621
|
-
consume() {
|
|
622
|
-
const text = this.text;
|
|
623
|
-
const originalChars = this.originalChars;
|
|
624
|
-
const omittedChars = this.omittedChars;
|
|
625
|
-
this.text = "";
|
|
626
|
-
this.originalChars = 0;
|
|
627
|
-
this.omittedChars = 0;
|
|
628
|
-
return Object.freeze({
|
|
629
|
-
text,
|
|
630
|
-
sawOutput: this.sawOutput,
|
|
631
|
-
metadata: Object.freeze({
|
|
632
|
-
truncated: omittedChars > 0,
|
|
633
|
-
originalChars,
|
|
634
|
-
returnedChars: text.length,
|
|
635
|
-
omittedChars
|
|
636
|
-
})
|
|
637
|
-
});
|
|
638
|
-
}
|
|
639
|
-
};
|
|
640
|
-
function createExecProcessManager() {
|
|
1778
|
+
function createExecProcessManager(store = createExecOutputStore({
|
|
1779
|
+
stateDir: (0, import_node_path6.join)((0, import_node_os.tmpdir)(), "abot-exec")
|
|
1780
|
+
})) {
|
|
641
1781
|
const processes = /* @__PURE__ */ new Map();
|
|
1782
|
+
const opening = /* @__PURE__ */ new Map();
|
|
642
1783
|
const unknownProcess = () => new ExecPluginError(
|
|
643
1784
|
"unknown_exec_process",
|
|
644
1785
|
"The exec process is unknown to this plugin instance and session."
|
|
645
1786
|
);
|
|
646
1787
|
const dispose = (managed) => {
|
|
647
|
-
if (managed.retentionTimeout) clearTimeout(managed.retentionTimeout);
|
|
648
1788
|
processes.delete(managed.processId);
|
|
649
1789
|
managed.onDisposed?.(managed.processId);
|
|
650
1790
|
};
|
|
651
1791
|
const activeProcessCount = (scope) => [...processes.values()].filter(
|
|
652
1792
|
(managed) => managed.scope === scope && !managed.settled
|
|
653
|
-
).length;
|
|
1793
|
+
).length + (opening.get(scope) ?? 0);
|
|
654
1794
|
const killProcessTree = (managed) => {
|
|
655
1795
|
const pid = managed.child.pid;
|
|
656
1796
|
if (typeof pid === "number") {
|
|
@@ -666,8 +1806,13 @@ function createExecProcessManager() {
|
|
|
666
1806
|
if (managed.settled || managed.terminationReason) return;
|
|
667
1807
|
managed.terminationReason = reason;
|
|
668
1808
|
killProcessTree(managed);
|
|
1809
|
+
if (reason === "output_storage_failed") {
|
|
1810
|
+
managed.child.stdout.destroy();
|
|
1811
|
+
managed.child.stderr.destroy();
|
|
1812
|
+
}
|
|
669
1813
|
};
|
|
670
1814
|
const scheduleIdleTimeout = (managed, idleTimeoutMs) => {
|
|
1815
|
+
if (managed.settling || managed.settled) return;
|
|
671
1816
|
if (managed.idleTimeout) clearTimeout(managed.idleTimeout);
|
|
672
1817
|
managed.idleTimeout = setTimeout(
|
|
673
1818
|
() => requestTermination(managed, "idle_timeout"),
|
|
@@ -675,11 +1820,17 @@ function createExecProcessManager() {
|
|
|
675
1820
|
);
|
|
676
1821
|
managed.idleTimeout.unref?.();
|
|
677
1822
|
};
|
|
678
|
-
const settle = (managed, exitCode, fallbackReason) => {
|
|
679
|
-
if (managed.settled) return;
|
|
1823
|
+
const settle = async (managed, exitCode, fallbackReason) => {
|
|
1824
|
+
if (managed.settling || managed.settled) return;
|
|
1825
|
+
managed.settling = true;
|
|
1826
|
+
if (managed.hardTimeout) clearTimeout(managed.hardTimeout);
|
|
1827
|
+
if (managed.idleTimeout) clearTimeout(managed.idleTimeout);
|
|
1828
|
+
await managed.output.finish();
|
|
680
1829
|
managed.settled = true;
|
|
1830
|
+
if (managed.output.checkpoint().outputFailure)
|
|
1831
|
+
managed.terminationReason = "output_storage_failed";
|
|
681
1832
|
managed.terminationReason ??= fallbackReason;
|
|
682
|
-
managed.exitCode = managed.terminationReason === "hard_timeout" || managed.terminationReason === "idle_timeout" ? 124 : managed.terminationReason === "cancelled" || managed.terminationReason === "aborted" ? 130 : exitCode;
|
|
1833
|
+
managed.exitCode = managed.terminationReason === "hard_timeout" || managed.terminationReason === "idle_timeout" ? 124 : managed.terminationReason === "cancelled" || managed.terminationReason === "aborted" ? 130 : managed.terminationReason === "output_storage_failed" ? -1 : exitCode;
|
|
683
1834
|
if (managed.hardTimeout) clearTimeout(managed.hardTimeout);
|
|
684
1835
|
if (managed.idleTimeout) clearTimeout(managed.idleTimeout);
|
|
685
1836
|
if (managed.abortSignal && managed.abortListener) {
|
|
@@ -690,35 +1841,43 @@ function createExecProcessManager() {
|
|
|
690
1841
|
dispose(managed);
|
|
691
1842
|
return;
|
|
692
1843
|
}
|
|
693
|
-
managed.retentionTimeout = setTimeout(
|
|
694
|
-
() => dispose(managed),
|
|
695
|
-
COMPLETED_PROCESS_RETENTION_MS
|
|
696
|
-
);
|
|
697
|
-
managed.retentionTimeout.unref?.();
|
|
698
1844
|
};
|
|
699
|
-
const
|
|
700
|
-
|
|
701
|
-
|
|
702
|
-
|
|
1845
|
+
const peekSnapshot = async (managed) => {
|
|
1846
|
+
managed.terminalDelivery.assertAvailable();
|
|
1847
|
+
const status = managed.settled ? "settled" : "running";
|
|
1848
|
+
const output = await managed.output.peek();
|
|
1849
|
+
if (output.outputFailure && !managed.settled) {
|
|
1850
|
+
requestTermination(managed, "output_storage_failed");
|
|
1851
|
+
await managed.settlePromise;
|
|
1852
|
+
return peekSnapshot(managed);
|
|
703
1853
|
}
|
|
704
|
-
|
|
705
|
-
|
|
706
|
-
|
|
707
|
-
|
|
708
|
-
|
|
709
|
-
|
|
710
|
-
|
|
711
|
-
|
|
712
|
-
|
|
713
|
-
|
|
1854
|
+
const snapshot = await materializeExecOutput(
|
|
1855
|
+
store,
|
|
1856
|
+
managed.scope,
|
|
1857
|
+
Object.freeze({
|
|
1858
|
+
processId: managed.processId,
|
|
1859
|
+
status,
|
|
1860
|
+
nextCursor: managed.cursor,
|
|
1861
|
+
...managed.exitCode === void 0 ? {} : { exitCode: managed.exitCode },
|
|
1862
|
+
...output,
|
|
1863
|
+
...managed.terminationReason ? { terminationReason: managed.terminationReason } : {},
|
|
1864
|
+
elapsedMs: Date.now() - managed.startedAt
|
|
1865
|
+
})
|
|
1866
|
+
);
|
|
1867
|
+
if (snapshot.outputFailure && !managed.settled) {
|
|
1868
|
+
requestTermination(managed, "output_storage_failed");
|
|
1869
|
+
await managed.settlePromise;
|
|
1870
|
+
return peekSnapshot(managed);
|
|
1871
|
+
}
|
|
1872
|
+
return managed.terminalDelivery.reserve(snapshot);
|
|
714
1873
|
};
|
|
715
1874
|
const waitForSettlement = async (managed, waitMs) => {
|
|
716
1875
|
if (managed.settled) return;
|
|
717
1876
|
let timeout;
|
|
718
1877
|
await Promise.race([
|
|
719
1878
|
managed.settlePromise,
|
|
720
|
-
new Promise((
|
|
721
|
-
timeout = setTimeout(
|
|
1879
|
+
new Promise((resolve2) => {
|
|
1880
|
+
timeout = setTimeout(resolve2, waitMs);
|
|
722
1881
|
timeout.unref?.();
|
|
723
1882
|
})
|
|
724
1883
|
]);
|
|
@@ -734,8 +1893,8 @@ function createExecProcessManager() {
|
|
|
734
1893
|
const withProcessTransition = async (managed, operation) => {
|
|
735
1894
|
const previous = managed.transitionTail;
|
|
736
1895
|
let releaseTransition = () => void 0;
|
|
737
|
-
managed.transitionTail = new Promise((
|
|
738
|
-
releaseTransition =
|
|
1896
|
+
managed.transitionTail = new Promise((resolve2) => {
|
|
1897
|
+
releaseTransition = resolve2;
|
|
739
1898
|
});
|
|
740
1899
|
await previous;
|
|
741
1900
|
try {
|
|
@@ -754,9 +1913,27 @@ function createExecProcessManager() {
|
|
|
754
1913
|
`The session already has ${MAX_ACTIVE_PROCESSES_PER_SCOPE} active exec processes.`
|
|
755
1914
|
);
|
|
756
1915
|
}
|
|
1916
|
+
opening.set(params.scope, (opening.get(params.scope) ?? 0) + 1);
|
|
1917
|
+
const processId = `exec_${(0, import_node_crypto6.randomUUID)()}`;
|
|
1918
|
+
let output;
|
|
1919
|
+
try {
|
|
1920
|
+
await store.cleanupExpired();
|
|
1921
|
+
output = await createExecProcessOutput(
|
|
1922
|
+
store,
|
|
1923
|
+
execOutputOwner(params.scope, processId)
|
|
1924
|
+
);
|
|
1925
|
+
if (params.abortSignal?.aborted) {
|
|
1926
|
+
await output.dispose();
|
|
1927
|
+
params.abortSignal.throwIfAborted();
|
|
1928
|
+
}
|
|
1929
|
+
} finally {
|
|
1930
|
+
const count = opening.get(params.scope) - 1;
|
|
1931
|
+
if (count) opening.set(params.scope, count);
|
|
1932
|
+
else opening.delete(params.scope);
|
|
1933
|
+
}
|
|
757
1934
|
let resolveSettled = () => void 0;
|
|
758
|
-
const settlePromise = new Promise((
|
|
759
|
-
resolveSettled =
|
|
1935
|
+
const settlePromise = new Promise((resolve2) => {
|
|
1936
|
+
resolveSettled = resolve2;
|
|
760
1937
|
});
|
|
761
1938
|
let child;
|
|
762
1939
|
try {
|
|
@@ -766,50 +1943,41 @@ function createExecProcessManager() {
|
|
|
766
1943
|
stdio: ["ignore", "pipe", "pipe"]
|
|
767
1944
|
});
|
|
768
1945
|
} catch {
|
|
1946
|
+
await output.dispose();
|
|
769
1947
|
throw new ExecPluginError(
|
|
770
1948
|
"exec_spawn_failed",
|
|
771
1949
|
"The runtime could not start the configured non-interactive shell."
|
|
772
1950
|
);
|
|
773
1951
|
}
|
|
774
1952
|
const managed = {
|
|
775
|
-
processId
|
|
1953
|
+
processId,
|
|
776
1954
|
scope: params.scope,
|
|
777
1955
|
child,
|
|
778
1956
|
startedAt: Date.now(),
|
|
779
1957
|
cursor: 1,
|
|
780
|
-
|
|
781
|
-
|
|
782
|
-
stdoutDecoder: new import_node_string_decoder.StringDecoder("utf8"),
|
|
783
|
-
stderrDecoder: new import_node_string_decoder.StringDecoder("utf8"),
|
|
1958
|
+
output,
|
|
1959
|
+
settling: false,
|
|
784
1960
|
settled: false,
|
|
785
1961
|
settlePromise,
|
|
786
1962
|
resolveSettled,
|
|
787
1963
|
transitionTail: Promise.resolve(),
|
|
788
|
-
|
|
1964
|
+
terminalDelivery: new ExecTerminalDelivery(),
|
|
789
1965
|
waitInFlight: false,
|
|
790
1966
|
...params.abortSignal ? { abortSignal: params.abortSignal } : {},
|
|
791
1967
|
...params.onDisposed ? { onDisposed: params.onDisposed } : {}
|
|
792
1968
|
};
|
|
793
1969
|
processes.set(managed.processId, managed);
|
|
794
|
-
|
|
795
|
-
|
|
796
|
-
|
|
797
|
-
|
|
798
|
-
|
|
799
|
-
};
|
|
800
|
-
child.stdout.on(
|
|
801
|
-
"data",
|
|
802
|
-
(chunk) => observe("stdout", managed.stdoutDecoder.write(chunk))
|
|
803
|
-
);
|
|
804
|
-
child.stderr.on(
|
|
805
|
-
"data",
|
|
806
|
-
(chunk) => observe("stderr", managed.stderrDecoder.write(chunk))
|
|
1970
|
+
params.onStarted?.(managed.processId, managed.settlePromise);
|
|
1971
|
+
output.attach(
|
|
1972
|
+
child,
|
|
1973
|
+
() => scheduleIdleTimeout(managed, params.idleTimeoutMs),
|
|
1974
|
+
() => requestTermination(managed, "output_storage_failed")
|
|
807
1975
|
);
|
|
808
|
-
child.on("error", () =>
|
|
1976
|
+
child.on("error", () => {
|
|
1977
|
+
void settle(managed, -1, "spawn_failed");
|
|
1978
|
+
});
|
|
809
1979
|
child.on("close", (code) => {
|
|
810
|
-
|
|
811
|
-
observe("stderr", managed.stderrDecoder.end());
|
|
812
|
-
settle(managed, typeof code === "number" ? code : -1, "completed");
|
|
1980
|
+
void settle(managed, typeof code === "number" ? code : -1, "completed");
|
|
813
1981
|
});
|
|
814
1982
|
managed.hardTimeout = setTimeout(
|
|
815
1983
|
() => requestTermination(managed, "hard_timeout"),
|
|
@@ -831,12 +1999,12 @@ function createExecProcessManager() {
|
|
|
831
1999
|
} else {
|
|
832
2000
|
await waitForSettlement(managed, params.yieldAfterMs);
|
|
833
2001
|
}
|
|
834
|
-
return
|
|
2002
|
+
return peekSnapshot(managed);
|
|
835
2003
|
},
|
|
836
2004
|
async wait(params) {
|
|
837
2005
|
const managed = getScopedProcess(params.processId, params.scope);
|
|
838
2006
|
await withProcessTransition(managed, () => {
|
|
839
|
-
|
|
2007
|
+
managed.terminalDelivery.assertAvailable();
|
|
840
2008
|
if (managed.waitInFlight) {
|
|
841
2009
|
throw new ExecPluginError(
|
|
842
2010
|
"exec_wait_in_progress",
|
|
@@ -855,19 +2023,59 @@ function createExecProcessManager() {
|
|
|
855
2023
|
await waitForSettlement(managed, params.waitMs);
|
|
856
2024
|
return withProcessTransition(managed, () => {
|
|
857
2025
|
managed.waitInFlight = false;
|
|
858
|
-
|
|
859
|
-
return
|
|
2026
|
+
managed.terminalDelivery.assertAvailable();
|
|
2027
|
+
return peekSnapshot(managed);
|
|
860
2028
|
});
|
|
861
2029
|
},
|
|
862
2030
|
async cancel(params) {
|
|
863
2031
|
const managed = getScopedProcess(params.processId, params.scope);
|
|
864
2032
|
return withProcessTransition(managed, async () => {
|
|
865
|
-
|
|
2033
|
+
managed.terminalDelivery.assertAvailable();
|
|
866
2034
|
if (!managed.settled) {
|
|
867
2035
|
requestTermination(managed, "cancelled");
|
|
868
2036
|
await managed.settlePromise;
|
|
869
2037
|
}
|
|
870
|
-
return
|
|
2038
|
+
return peekSnapshot(managed);
|
|
2039
|
+
});
|
|
2040
|
+
},
|
|
2041
|
+
snapshotSettled(processId, scope) {
|
|
2042
|
+
const managed = getScopedProcess(processId, scope);
|
|
2043
|
+
if (!managed.settled || managed.waitInFlight || managed.terminalDelivery.isClaimed)
|
|
2044
|
+
throw new Error("exec_snapshot_not_quiescent");
|
|
2045
|
+
return Object.freeze({
|
|
2046
|
+
cursor: managed.cursor,
|
|
2047
|
+
snapshot: Object.freeze({
|
|
2048
|
+
processId,
|
|
2049
|
+
status: "settled",
|
|
2050
|
+
...managed.exitCode === void 0 ? {} : { exitCode: managed.exitCode },
|
|
2051
|
+
...managed.output.checkpoint(),
|
|
2052
|
+
...managed.terminationReason ? { terminationReason: managed.terminationReason } : {},
|
|
2053
|
+
elapsedMs: Date.now() - managed.startedAt
|
|
2054
|
+
})
|
|
2055
|
+
});
|
|
2056
|
+
},
|
|
2057
|
+
async accept(snapshot, scope) {
|
|
2058
|
+
const wasReleasedAfterAbort = snapshot.terminationReason === "aborted" && !processes.has(snapshot.processId);
|
|
2059
|
+
if (wasReleasedAfterAbort) return;
|
|
2060
|
+
const managed = getScopedProcess(snapshot.processId, scope);
|
|
2061
|
+
await withProcessTransition(managed, async () => {
|
|
2062
|
+
managed.terminalDelivery.assertOwner(snapshot);
|
|
2063
|
+
if (snapshot.nextCursor !== managed.cursor) {
|
|
2064
|
+
throw new ExecPluginError(
|
|
2065
|
+
"stale_exec_process_cursor",
|
|
2066
|
+
"The output receipt no longer matches the current exec cursor."
|
|
2067
|
+
);
|
|
2068
|
+
}
|
|
2069
|
+
await managed.output.accept(snapshot);
|
|
2070
|
+
managed.terminalDelivery.accept(snapshot);
|
|
2071
|
+
});
|
|
2072
|
+
},
|
|
2073
|
+
async reject(snapshot, scope) {
|
|
2074
|
+
const managed = processes.get(snapshot.processId);
|
|
2075
|
+
if (!managed) return;
|
|
2076
|
+
if (managed.scope !== scope) throw unknownProcess();
|
|
2077
|
+
await withProcessTransition(managed, () => {
|
|
2078
|
+
managed.terminalDelivery.reject(snapshot);
|
|
871
2079
|
});
|
|
872
2080
|
},
|
|
873
2081
|
async release(processId, scope) {
|
|
@@ -887,11 +2095,15 @@ function createExecProcessManager() {
|
|
|
887
2095
|
var DEFAULT_EXEC_HARD_TIMEOUT_MS = 6e5;
|
|
888
2096
|
var DEFAULT_EXEC_YIELD_AFTER_MS = 15e3;
|
|
889
2097
|
var DEFAULT_EXEC_IDLE_TIMEOUT_MS = 12e4;
|
|
890
|
-
var
|
|
891
|
-
var EXEC_OUTPUT_MAX_CHARS = 8e3;
|
|
892
|
-
var EXEC_COMMAND_MAX_CHARS = 4096;
|
|
2098
|
+
var EXEC_COMMAND_MAX_CHARS = 8192;
|
|
893
2099
|
function readExecSettings(config) {
|
|
894
2100
|
return Object.freeze({
|
|
2101
|
+
outputRetentionMs: readBoundedInteger(config?.outputRetentionMs, {
|
|
2102
|
+
defaultValue: DEFAULT_EXEC_OUTPUT_RETENTION_MS,
|
|
2103
|
+
minimum: 1,
|
|
2104
|
+
maximum: Number.MAX_SAFE_INTEGER,
|
|
2105
|
+
name: "outputRetentionMs"
|
|
2106
|
+
}),
|
|
895
2107
|
hardTimeoutMs: readBoundedInteger(config?.timeoutMs, {
|
|
896
2108
|
defaultValue: DEFAULT_EXEC_HARD_TIMEOUT_MS,
|
|
897
2109
|
minimum: 1,
|
|
@@ -909,12 +2121,6 @@ function readExecSettings(config) {
|
|
|
909
2121
|
minimum: 1,
|
|
910
2122
|
maximum: 36e5,
|
|
911
2123
|
name: "idleTimeoutMs"
|
|
912
|
-
}),
|
|
913
|
-
outputMaxChars: readBoundedInteger(config?.outputMaxChars, {
|
|
914
|
-
defaultValue: DEFAULT_EXEC_OUTPUT_MAX_CHARS,
|
|
915
|
-
minimum: 64,
|
|
916
|
-
maximum: EXEC_OUTPUT_MAX_CHARS,
|
|
917
|
-
name: "outputMaxChars"
|
|
918
2124
|
})
|
|
919
2125
|
});
|
|
920
2126
|
}
|
|
@@ -947,12 +2153,12 @@ function isInvalidExecParameter(name, value) {
|
|
|
947
2153
|
function createExecAdapter() {
|
|
948
2154
|
return {
|
|
949
2155
|
validateCall(input) {
|
|
950
|
-
const
|
|
2156
|
+
const invalid2 = ["command", "cwd"].filter(
|
|
951
2157
|
(name) => isInvalidExecParameter(name, input.params[name])
|
|
952
2158
|
);
|
|
953
|
-
if (
|
|
2159
|
+
if (invalid2.length === 0) return null;
|
|
954
2160
|
return {
|
|
955
|
-
error: `invalid params for exec: invalid ${
|
|
2161
|
+
error: `invalid params for exec: invalid ${invalid2.join(", ")}`,
|
|
956
2162
|
repairHint: "Provide one command without NUL characters and one explicit existing cwd."
|
|
957
2163
|
};
|
|
958
2164
|
}
|
|
@@ -965,191 +2171,66 @@ function processScope(context) {
|
|
|
965
2171
|
const sessionId = context?.sharedState?.currentSessionId?.trim();
|
|
966
2172
|
return sessionId || "anonymous";
|
|
967
2173
|
}
|
|
968
|
-
function
|
|
969
|
-
|
|
970
|
-
|
|
971
|
-
|
|
972
|
-
function renderedOutput(lines, outputMaxChars) {
|
|
973
|
-
const bounded = boundText(lines.join("\n"), {
|
|
974
|
-
maxChars: outputMaxChars,
|
|
975
|
-
marker: "\n[exec output truncated]"
|
|
976
|
-
});
|
|
977
|
-
return Object.freeze({ output: bounded.text, metadata: bounded.metadata });
|
|
978
|
-
}
|
|
979
|
-
function outputBoundsData(snapshot, rendered, maxChars) {
|
|
980
|
-
return Object.freeze({
|
|
981
|
-
maxChars,
|
|
982
|
-
stdout: snapshot.stdout.metadata,
|
|
983
|
-
stderr: snapshot.stderr.metadata,
|
|
984
|
-
rendered
|
|
985
|
-
});
|
|
986
|
-
}
|
|
987
|
-
function runningResult(snapshot, execution) {
|
|
988
|
-
const nextCursor = snapshot.nextCursor ?? 1;
|
|
989
|
-
const rendered = renderedOutput(
|
|
990
|
-
[
|
|
991
|
-
`Command: ${execution.commandPreview}`,
|
|
992
|
-
`CWD: ${execution.cwd.logicalPath}`,
|
|
993
|
-
"Process status: running",
|
|
994
|
-
`Process ID: ${snapshot.processId}`,
|
|
995
|
-
`Next cursor: ${nextCursor}`,
|
|
996
|
-
"STDOUT since the previous observation:",
|
|
997
|
-
streamDisplay(snapshot.stdout),
|
|
998
|
-
"STDERR since the previous observation:",
|
|
999
|
-
streamDisplay(snapshot.stderr),
|
|
1000
|
-
"Continue this exact process with exec_wait; do not run the command again."
|
|
1001
|
-
],
|
|
1002
|
-
execution.outputMaxChars
|
|
1003
|
-
);
|
|
1004
|
-
return failureResult({
|
|
1005
|
-
errorCode: "exec_process_running",
|
|
1006
|
-
message: "The command is still running. Continue it with exec_wait using the returned process ID and cursor.",
|
|
1007
|
-
output: rendered.output,
|
|
1008
|
-
stdout: snapshot.stdout.text,
|
|
1009
|
-
stderr: snapshot.stderr.text,
|
|
1010
|
-
data: {
|
|
1011
|
-
processId: snapshot.processId,
|
|
1012
|
-
processStatus: "running",
|
|
1013
|
-
nextCursor,
|
|
1014
|
-
outputBounds: outputBoundsData(
|
|
1015
|
-
snapshot,
|
|
1016
|
-
rendered.metadata,
|
|
1017
|
-
execution.outputMaxChars
|
|
1018
|
-
),
|
|
1019
|
-
observationMeta: {
|
|
1020
|
-
kind: "volatile_external",
|
|
1021
|
-
carryPolicy: "never"
|
|
1022
|
-
}
|
|
1023
|
-
}
|
|
1024
|
-
});
|
|
1025
|
-
}
|
|
1026
|
-
async function captureFilesystemDelta(execution) {
|
|
1027
|
-
if (!execution.filesystemStateBefore) return null;
|
|
1028
|
-
try {
|
|
1029
|
-
const after = await captureExecFilesystemSnapshot(
|
|
1030
|
-
execution.cwd.absolutePath,
|
|
1031
|
-
execution.cwd.logicalPath
|
|
1032
|
-
);
|
|
1033
|
-
return diffExecFilesystemSnapshots(execution.filesystemStateBefore, after);
|
|
1034
|
-
} catch {
|
|
1035
|
-
return null;
|
|
1036
|
-
}
|
|
1037
|
-
}
|
|
1038
|
-
function projectExecFilesystemEvidence(delta, logicalRoot) {
|
|
1039
|
-
const effects = delta.actions.map(renderExecFilesystemEffect);
|
|
1040
|
-
const omittedEffectCount = Math.max(
|
|
1041
|
-
0,
|
|
1042
|
-
delta.changedEntryCount - effects.length
|
|
1043
|
-
);
|
|
1044
|
-
const omittedEffectLine = omittedEffectCount > 0 ? `- ${omittedEffectCount} additional changed ${omittedEffectCount === 1 ? "entry" : "entries"} omitted by the ${delta.observation.actionLimit}-effect projection limit.` : void 0;
|
|
1045
|
-
const outputLines = Object.freeze([
|
|
1046
|
-
`Filesystem changes observed: ${delta.changedEntryCount}${delta.observation.complete ? "" : " (bounded observation)"}`,
|
|
1047
|
-
"Filesystem effects observed:",
|
|
1048
|
-
...effects,
|
|
1049
|
-
...omittedEffectLine ? [omittedEffectLine] : []
|
|
1050
|
-
]);
|
|
1051
|
-
return Object.freeze({
|
|
1052
|
-
outputLines,
|
|
1053
|
-
mutationGrounding: [
|
|
1054
|
-
"Observed post-command filesystem effects (settled tool evidence; not command intent, semantic verification, or complete artifact content):",
|
|
1055
|
-
`- observation root: ${logicalRoot}`,
|
|
1056
|
-
`- observation complete: ${delta.observation.complete}`,
|
|
1057
|
-
`- changed entries: ${delta.changedEntryCount}`,
|
|
1058
|
-
`- listed effects: ${effects.length}`,
|
|
1059
|
-
`- effects truncated: ${delta.observation.actionsTruncated}`,
|
|
1060
|
-
"Effects:",
|
|
1061
|
-
...effects,
|
|
1062
|
-
...omittedEffectLine ? [omittedEffectLine] : []
|
|
1063
|
-
].join("\n")
|
|
1064
|
-
});
|
|
1065
|
-
}
|
|
1066
|
-
function renderExecFilesystemEffect(action) {
|
|
1067
|
-
const target = action.target ? `: ${action.target}` : "";
|
|
1068
|
-
const state = action.details === "exec_filesystem_created" ? "created" : action.details === "exec_filesystem_modified" ? "modified" : action.details === "exec_filesystem_removed" ? "removed" : void 0;
|
|
1069
|
-
return `- ${action.type}${target}${state ? ` (${state})` : ""}`;
|
|
1070
|
-
}
|
|
1071
|
-
async function finalizeExecResult(params) {
|
|
1072
|
-
const { snapshot, execution } = params;
|
|
1073
|
-
const exitCode = snapshot.exitCode ?? -1;
|
|
1074
|
-
const cancellationIsSuccess = params.cancellationIsSuccess === true && snapshot.terminationReason === "cancelled";
|
|
1075
|
-
const filesystemDelta = await captureFilesystemDelta(execution);
|
|
1076
|
-
const observedStateChange = filesystemDelta?.observedStateChange === true;
|
|
1077
|
-
const filesystemEvidence = observedStateChange && filesystemDelta ? projectExecFilesystemEvidence(
|
|
1078
|
-
filesystemDelta,
|
|
1079
|
-
execution.cwd.logicalPath
|
|
1080
|
-
) : null;
|
|
1081
|
-
const commandHasData = snapshot.stdout.sawOutput || snapshot.stderr.sawOutput;
|
|
1082
|
-
const ok = exitCode === 0 || cancellationIsSuccess;
|
|
1083
|
-
const inconclusiveSuccess = exitCode === 0 && !commandHasData && !observedStateChange;
|
|
1084
|
-
const producedNewInformation = observedStateChange || cancellationIsSuccess || ok && commandHasData;
|
|
1085
|
-
const actions = filesystemDelta?.actions ?? [];
|
|
1086
|
-
const resultSummary = cancellationIsSuccess ? "Result summary: the running command was cancelled." : inconclusiveSuccess ? "Result summary: the command completed without observable output or filesystem change. Inspect a concrete target or use a dedicated creation capability." : "";
|
|
1087
|
-
const rendered = renderedOutput(
|
|
1088
|
-
[
|
|
1089
|
-
`Command: ${execution.commandPreview}`,
|
|
1090
|
-
`CWD: ${execution.cwd.logicalPath}`,
|
|
1091
|
-
`Process ID: ${snapshot.processId}`,
|
|
1092
|
-
`Process status: ${snapshot.terminationReason ?? "completed"}`,
|
|
1093
|
-
`Exit code: ${exitCode}`,
|
|
1094
|
-
...filesystemEvidence ? filesystemEvidence.outputLines : [],
|
|
1095
|
-
"STDOUT:",
|
|
1096
|
-
streamDisplay(snapshot.stdout),
|
|
1097
|
-
"STDERR:",
|
|
1098
|
-
streamDisplay(snapshot.stderr),
|
|
1099
|
-
...resultSummary ? [resultSummary] : []
|
|
1100
|
-
],
|
|
1101
|
-
execution.outputMaxChars
|
|
1102
|
-
);
|
|
1103
|
-
const processStatus = snapshot.terminationReason ?? "completed";
|
|
1104
|
-
const data = {
|
|
1105
|
-
...commandHasData ? { hasData: true } : {},
|
|
1106
|
-
...observedStateChange ? { mutationEvidence: true } : {},
|
|
1107
|
-
...filesystemEvidence ? { mutationGrounding: filesystemEvidence.mutationGrounding } : {},
|
|
1108
|
-
processId: snapshot.processId,
|
|
1109
|
-
processStatus,
|
|
1110
|
-
outputBounds: outputBoundsData(
|
|
1111
|
-
snapshot,
|
|
1112
|
-
rendered.metadata,
|
|
1113
|
-
execution.outputMaxChars
|
|
1114
|
-
),
|
|
1115
|
-
...filesystemDelta ? { filesystemObservation: filesystemDelta.observation } : { filesystemObservation: { available: false } },
|
|
1116
|
-
observationMeta: {
|
|
1117
|
-
kind: "volatile_external",
|
|
1118
|
-
carryPolicy: "never"
|
|
1119
|
-
}
|
|
1120
|
-
};
|
|
1121
|
-
const common = {
|
|
1122
|
-
output: rendered.output,
|
|
1123
|
-
progress: observedStateChange || cancellationIsSuccess,
|
|
1124
|
-
producedNewInformation,
|
|
1125
|
-
actions: [...actions],
|
|
1126
|
-
exitCode,
|
|
1127
|
-
stdout: snapshot.stdout.text,
|
|
1128
|
-
stderr: snapshot.stderr.text,
|
|
1129
|
-
data
|
|
1130
|
-
};
|
|
1131
|
-
if (ok && (!inconclusiveSuccess || cancellationIsSuccess)) {
|
|
1132
|
-
return enforcePluginResultByteBudget({ ok: true, ...common });
|
|
1133
|
-
}
|
|
1134
|
-
const errorCode = inconclusiveSuccess ? "no_observable_result" : snapshot.terminationReason === "aborted" ? "exec_aborted" : snapshot.terminationReason === "spawn_failed" ? "exec_spawn_failed" : snapshot.terminationReason === "idle_timeout" ? "exec_idle_timeout" : snapshot.terminationReason === "hard_timeout" ? "exec_hard_timeout" : "non_zero_exit";
|
|
1135
|
-
const error = inconclusiveSuccess ? resultSummary : errorCode === "exec_aborted" ? "The exec request was aborted." : errorCode === "exec_spawn_failed" ? "The runtime could not start the configured non-interactive shell." : errorCode === "exec_idle_timeout" ? `The command produced no output for ${execution.idleTimeoutMs}ms.` : errorCode === "exec_hard_timeout" ? `The command exceeded the ${execution.hardTimeoutMs}ms hard timeout.` : `The command exited with code ${exitCode}.`;
|
|
1136
|
-
return enforcePluginResultByteBudget({
|
|
1137
|
-
ok: false,
|
|
1138
|
-
...common,
|
|
1139
|
-
error,
|
|
1140
|
-
errorCode
|
|
2174
|
+
function createExecHandlers(pluginContext, settings, preparation) {
|
|
2175
|
+
const outputStore = createExecOutputStore({
|
|
2176
|
+
stateDir: pluginContext.stateDir,
|
|
2177
|
+
retentionMs: settings.outputRetentionMs
|
|
1141
2178
|
});
|
|
1142
|
-
|
|
1143
|
-
|
|
1144
|
-
const processManager = createExecProcessManager();
|
|
2179
|
+
outputStore.startMaintenance();
|
|
2180
|
+
const processManager = createExecProcessManager(outputStore);
|
|
1145
2181
|
const pendingExecutions = /* @__PURE__ */ new Map();
|
|
2182
|
+
const requestResources = new ExecRequestResources(
|
|
2183
|
+
processManager,
|
|
2184
|
+
pendingExecutions,
|
|
2185
|
+
preparation
|
|
2186
|
+
);
|
|
1146
2187
|
const finalizeAndRelease = async (params) => {
|
|
2188
|
+
pendingExecutions.set(params.snapshot.processId, params.execution);
|
|
1147
2189
|
try {
|
|
1148
|
-
|
|
1149
|
-
|
|
2190
|
+
if (params.snapshot.outputFailure) {
|
|
2191
|
+
return retainedOutputFailure(params.snapshot, params.context);
|
|
2192
|
+
}
|
|
2193
|
+
const result = await finalizeExecResult({
|
|
2194
|
+
...params,
|
|
2195
|
+
resultBudget: params.context?.resultBudget
|
|
2196
|
+
});
|
|
2197
|
+
if (result.errorCode === "plugin_result_too_large") {
|
|
2198
|
+
return retainedOutputFailure(params.snapshot, params.context);
|
|
2199
|
+
}
|
|
2200
|
+
try {
|
|
2201
|
+
if (!requestResources.isRestored(params.snapshot.processId)) {
|
|
2202
|
+
await processManager.accept(params.snapshot, params.scope);
|
|
2203
|
+
}
|
|
2204
|
+
} catch (error) {
|
|
2205
|
+
return retainedOutputFailure(
|
|
2206
|
+
{
|
|
2207
|
+
...params.snapshot,
|
|
2208
|
+
outputFailure: {
|
|
2209
|
+
code: error instanceof Error ? error.message : "exec_output_acknowledgement_failed",
|
|
2210
|
+
stdoutBytes: params.snapshot.stdout.body?.byteLength ?? 0,
|
|
2211
|
+
stderrBytes: params.snapshot.stderr.body?.byteLength ?? 0
|
|
2212
|
+
}
|
|
2213
|
+
},
|
|
2214
|
+
params.context
|
|
2215
|
+
);
|
|
2216
|
+
}
|
|
1150
2217
|
pendingExecutions.delete(params.snapshot.processId);
|
|
2218
|
+
requestResources.forget(params.snapshot.processId);
|
|
1151
2219
|
await processManager.release(params.snapshot.processId, params.scope);
|
|
2220
|
+
return result;
|
|
2221
|
+
} finally {
|
|
2222
|
+
requestResources.rejectTerminal(params.snapshot);
|
|
2223
|
+
await processManager.reject(params.snapshot, params.scope);
|
|
2224
|
+
}
|
|
2225
|
+
};
|
|
2226
|
+
const deliverRunning = async (snapshot, execution, scope, context) => {
|
|
2227
|
+
if (snapshot.outputFailure) return retainedOutputFailure(snapshot, context);
|
|
2228
|
+
const result = runningResult(snapshot, execution, context?.resultBudget);
|
|
2229
|
+
if (result.errorCode === "plugin_result_too_large") {
|
|
2230
|
+
return retainedOutputFailure(snapshot, context);
|
|
1152
2231
|
}
|
|
2232
|
+
await processManager.accept(snapshot, scope);
|
|
2233
|
+
return result;
|
|
1153
2234
|
};
|
|
1154
2235
|
const exec = async (params, context) => {
|
|
1155
2236
|
try {
|
|
@@ -1172,26 +2253,28 @@ function createExecHandlers(pluginContext, settings) {
|
|
|
1172
2253
|
cwd,
|
|
1173
2254
|
filesystemStateBefore,
|
|
1174
2255
|
hardTimeoutMs: settings.hardTimeoutMs,
|
|
1175
|
-
idleTimeoutMs: Math.min(settings.idleTimeoutMs, settings.hardTimeoutMs)
|
|
1176
|
-
outputMaxChars: settings.outputMaxChars
|
|
2256
|
+
idleTimeoutMs: Math.min(settings.idleTimeoutMs, settings.hardTimeoutMs)
|
|
1177
2257
|
});
|
|
1178
2258
|
const scope = processScope(context);
|
|
1179
2259
|
const snapshot = await processManager.start({
|
|
1180
2260
|
scope,
|
|
1181
2261
|
shellCommand: command,
|
|
1182
2262
|
cwd: cwd.absolutePath,
|
|
1183
|
-
outputMaxChars: settings.outputMaxChars,
|
|
1184
2263
|
yieldAfterMs: Math.min(settings.yieldAfterMs, settings.hardTimeoutMs),
|
|
1185
2264
|
idleTimeoutMs: execution.idleTimeoutMs,
|
|
1186
2265
|
hardTimeoutMs: execution.hardTimeoutMs,
|
|
1187
2266
|
...context?.abortSignal ? { abortSignal: context.abortSignal } : {},
|
|
1188
|
-
onDisposed: (processId) =>
|
|
2267
|
+
onDisposed: (processId) => {
|
|
2268
|
+
pendingExecutions.delete(processId);
|
|
2269
|
+
requestResources.forget(processId);
|
|
2270
|
+
},
|
|
2271
|
+
onStarted: (processId, settled) => requestResources.started(processId, scope, settled, context)
|
|
1189
2272
|
});
|
|
1190
2273
|
if (snapshot.status === "running") {
|
|
1191
2274
|
pendingExecutions.set(snapshot.processId, execution);
|
|
1192
|
-
return
|
|
2275
|
+
return deliverRunning(snapshot, execution, scope, context);
|
|
1193
2276
|
}
|
|
1194
|
-
return finalizeAndRelease({ snapshot, execution, scope });
|
|
2277
|
+
return finalizeAndRelease({ snapshot, execution, scope, context });
|
|
1195
2278
|
} catch (error) {
|
|
1196
2279
|
return execFailureFromError(error, "exec");
|
|
1197
2280
|
}
|
|
@@ -1215,13 +2298,14 @@ function createExecHandlers(pluginContext, settings) {
|
|
|
1215
2298
|
);
|
|
1216
2299
|
}
|
|
1217
2300
|
const scope = processScope(context);
|
|
1218
|
-
const
|
|
2301
|
+
const restored = requestResources.terminal(processId, scope, cursor);
|
|
2302
|
+
const snapshot = restored ? await materializeExecOutput(outputStore, scope, restored) : await processManager.wait({
|
|
1219
2303
|
processId,
|
|
1220
2304
|
scope,
|
|
1221
2305
|
cursor,
|
|
1222
2306
|
waitMs: settings.yieldAfterMs
|
|
1223
2307
|
});
|
|
1224
|
-
return snapshot.status === "running" ?
|
|
2308
|
+
return snapshot.status === "running" ? deliverRunning(snapshot, execution, scope, context) : finalizeAndRelease({ snapshot, execution, scope, context });
|
|
1225
2309
|
} catch (error) {
|
|
1226
2310
|
return execFailureFromError(error, "exec_wait");
|
|
1227
2311
|
}
|
|
@@ -1240,12 +2324,14 @@ function createExecHandlers(pluginContext, settings) {
|
|
|
1240
2324
|
);
|
|
1241
2325
|
}
|
|
1242
2326
|
const scope = processScope(context);
|
|
1243
|
-
const
|
|
2327
|
+
const restored = requestResources.terminal(processId, scope);
|
|
2328
|
+
const snapshot = restored ? await materializeExecOutput(outputStore, scope, restored) : await processManager.cancel({ processId, scope });
|
|
1244
2329
|
return finalizeAndRelease({
|
|
1245
2330
|
snapshot,
|
|
1246
2331
|
execution,
|
|
1247
2332
|
scope,
|
|
1248
|
-
cancellationIsSuccess: true
|
|
2333
|
+
cancellationIsSuccess: true,
|
|
2334
|
+
context
|
|
1249
2335
|
});
|
|
1250
2336
|
} catch (error) {
|
|
1251
2337
|
return execFailureFromError(error, "exec_cancel");
|
|
@@ -1257,6 +2343,18 @@ function createExecHandlers(pluginContext, settings) {
|
|
|
1257
2343
|
// plugins/exec/source/index.ts
|
|
1258
2344
|
var index_default = defineRuntimePlugin((context) => ({
|
|
1259
2345
|
handlers: createExecHandlers(context, readExecSettings(context.config)),
|
|
2346
|
+
prepareRequest: async (modules, preparation) => {
|
|
2347
|
+
if (!preparation?.requestState) return modules;
|
|
2348
|
+
const handlers = createExecHandlers(
|
|
2349
|
+
context,
|
|
2350
|
+
readExecSettings(context.config),
|
|
2351
|
+
preparation
|
|
2352
|
+
);
|
|
2353
|
+
return modules.map((module2) => ({
|
|
2354
|
+
...module2,
|
|
2355
|
+
implementation: handlers[module2.definition.name]
|
|
2356
|
+
}));
|
|
2357
|
+
},
|
|
1260
2358
|
adapters: {
|
|
1261
2359
|
exec: createExecAdapter()
|
|
1262
2360
|
}
|