@abot-ai/runtime 1.6.0 → 1.8.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 +2 -0
- package/dist/src/bridge/request-steering.js +60 -15
- package/dist/src/capabilities/normal-invocation/contracts.d.ts +3 -0
- package/dist/src/capabilities/normal-invocation/output-channels.d.ts +10 -0
- package/dist/src/capabilities/normal-invocation/output-channels.js +29 -0
- package/dist/src/capabilities/normal-invocation/validator.js +4 -2
- package/dist/src/capabilities/tool-request-resources.d.ts +3 -0
- package/dist/src/capabilities/tool-types.d.ts +1 -1
- package/dist/src/cli/abot.js +2 -0
- package/dist/src/cli/host-companion-bundle.mjs +8003 -6796
- package/dist/src/cli/host-companion-entry.js +5 -22
- package/dist/src/cli/host-companion-input.d.ts +3 -0
- package/dist/src/cli/host-companion-input.js +21 -0
- package/dist/src/cli/host-companion-lifecycle.d.ts +11 -0
- package/dist/src/cli/host-companion-lifecycle.js +32 -0
- package/dist/src/cli/host-companion-setup-target.d.ts +4 -0
- package/dist/src/cli/host-companion-setup-target.js +17 -0
- package/dist/src/cli/host-companion-startup.d.ts +2 -0
- package/dist/src/cli/host-companion-startup.js +7 -2
- package/dist/src/cli/host-companion.d.ts +6 -0
- package/dist/src/cli/host-companion.js +30 -27
- package/dist/src/cli/windows-companion-store-entry.d.ts +9 -0
- package/dist/src/cli/windows-companion-store-entry.js +67 -0
- package/dist/src/computer-access/collection-consent.d.ts +9 -0
- package/dist/src/computer-access/collection-consent.js +47 -0
- package/dist/src/computer-access/command-output-capture.d.ts +48 -0
- package/dist/src/computer-access/command-output-capture.js +202 -0
- package/dist/src/computer-access/command-output-protection.d.ts +17 -0
- package/dist/src/computer-access/command-output-protection.js +59 -0
- package/dist/src/computer-access/command-output-retention.d.ts +5 -0
- package/dist/src/computer-access/command-output-retention.js +90 -0
- package/dist/src/computer-access/command-output.d.ts +7 -0
- package/dist/src/computer-access/command-output.js +1 -0
- package/dist/src/computer-access/commands.d.ts +1 -0
- package/dist/src/computer-access/commands.js +1 -1
- package/dist/src/computer-access/companion/command-output-protocol.d.ts +12 -0
- package/dist/src/computer-access/companion/command-output-protocol.js +28 -0
- package/dist/src/computer-access/companion/command-output.d.ts +14 -0
- package/dist/src/computer-access/companion/command-output.js +127 -0
- package/dist/src/computer-access/companion/install-link-macos.d.ts +7 -0
- package/dist/src/computer-access/companion/install-link-macos.js +49 -0
- package/dist/src/computer-access/companion/install-link-registration.d.ts +4 -0
- package/dist/src/computer-access/companion/install-link-registration.js +184 -0
- package/dist/src/computer-access/companion/install-link-windows.d.ts +4 -0
- package/dist/src/computer-access/companion/install-link-windows.js +65 -0
- package/dist/src/computer-access/companion/install-link.d.ts +9 -0
- package/dist/src/computer-access/companion/install-link.js +54 -0
- package/dist/src/computer-access/companion/native-messages.js +3 -0
- package/dist/src/computer-access/companion/native-notifications.js +3 -2
- package/dist/src/computer-access/companion/native-session.d.ts +1 -0
- package/dist/src/computer-access/companion/native-session.js +20 -4
- package/dist/src/computer-access/companion/native-supervisor.js +1 -0
- package/dist/src/computer-access/companion/notification-windows.d.ts +1 -1
- package/dist/src/computer-access/companion/notification-windows.js +8 -3
- package/dist/src/computer-access/companion/observation-filter.js +2 -26
- package/dist/src/computer-access/companion/observation-process.d.ts +2 -0
- package/dist/src/computer-access/companion/observation-process.js +51 -25
- package/dist/src/computer-access/companion/observation-redaction.d.ts +2 -7
- package/dist/src/computer-access/companion/observation-redaction.js +2 -111
- package/dist/src/computer-access/companion/protocol.d.ts +1 -1
- package/dist/src/computer-access/companion/protocol.js +6 -0
- package/dist/src/computer-access/companion/release-version.d.ts +1 -1
- package/dist/src/computer-access/companion/release-version.js +1 -1
- package/dist/src/computer-access/companion/secret-protection-protocol.d.ts +6 -0
- package/dist/src/computer-access/companion/secret-protection-protocol.js +6 -0
- package/dist/src/computer-access/companion/windows-store/connection-error.d.ts +7 -0
- package/dist/src/computer-access/companion/windows-store/connection-error.js +19 -0
- package/dist/src/computer-access/companion/windows-store/connection-link.d.ts +13 -0
- package/dist/src/computer-access/companion/windows-store/connection-link.js +109 -0
- package/dist/src/computer-access/companion/windows-store/identity.d.ts +13 -0
- package/dist/src/computer-access/companion/windows-store/identity.js +13 -0
- package/dist/src/computer-access/companion/windows-store/lifecycle.d.ts +5 -0
- package/dist/src/computer-access/companion/windows-store/lifecycle.js +90 -0
- package/dist/src/computer-access/computer/companion-sessions.js +7 -6
- package/dist/src/computer-access/computer/unix-native-process.js +23 -11
- package/dist/src/computer-access/contracts.d.ts +1 -1
- package/dist/src/computer-access/handlers.d.ts +3 -1
- package/dist/src/computer-access/handlers.js +83 -11
- package/dist/src/computer-access/host-observation.d.ts +3 -3
- package/dist/src/computer-access/native-observation-connection.d.ts +12 -0
- package/dist/src/computer-access/native-observation-connection.js +78 -0
- package/dist/src/computer-access/native-observation-ownership.d.ts +6 -0
- package/dist/src/computer-access/native-observation-ownership.js +55 -0
- package/dist/src/computer-access/native-observation-shutdown.d.ts +7 -0
- package/dist/src/computer-access/native-observation-shutdown.js +58 -0
- package/dist/src/computer-access/observation-source.d.ts +6 -0
- package/dist/src/computer-access/observation-source.js +10 -0
- package/dist/src/computer-access/process-capture.d.ts +6 -0
- package/dist/src/computer-access/process-capture.js +1 -0
- package/dist/src/computer-access/process-result.d.ts +2 -0
- package/dist/src/computer-access/process-result.js +14 -6
- package/dist/src/computer-access/process-runner.d.ts +2 -1
- package/dist/src/computer-access/process-runner.js +21 -13
- package/dist/src/computer-access/security/desktop-result.d.ts +8 -0
- package/dist/src/computer-access/security/desktop-result.js +146 -0
- package/dist/src/computer-access/security/observed-error.d.ts +2 -0
- package/dist/src/computer-access/security/observed-error.js +10 -0
- package/dist/src/computer-access/security/secret-text.d.ts +7 -0
- package/dist/src/computer-access/security/secret-text.js +111 -0
- package/dist/src/computer-access/security/system-results.d.ts +2 -0
- package/dist/src/computer-access/security/system-results.js +53 -0
- package/dist/src/computer-access/system-result-protection.d.ts +11 -0
- package/dist/src/computer-access/system-result-protection.js +1 -0
- package/dist/src/model-gateway/observability/provider-response-capture.d.ts +60 -0
- package/dist/src/model-gateway/observability/provider-response-capture.js +68 -0
- package/dist/src/model-gateway/observability/provider-response-prefix.d.ts +7 -0
- package/dist/src/model-gateway/observability/provider-response-prefix.js +14 -0
- package/dist/src/model-gateway/observability/provider-response-tail.d.ts +8 -0
- package/dist/src/model-gateway/observability/provider-response-tail.js +28 -0
- package/dist/src/model-gateway/observability/provider-sse-diagnostics.d.ts +30 -0
- package/dist/src/model-gateway/observability/provider-sse-diagnostics.js +119 -0
- package/dist/src/model-gateway/observability/provider-trace.js +30 -8
- package/dist/src/model-gateway/providers/ollama/adapter.js +8 -2
- package/dist/src/model-gateway/providers/ollama/stream-normalizer.js +70 -50
- package/dist/src/model-gateway/providers/ollama/stream-termination.d.ts +6 -0
- package/dist/src/model-gateway/providers/ollama/stream-termination.js +20 -0
- package/dist/src/model-gateway/providers/openai/adapter.js +9 -7
- package/dist/src/model-gateway/providers/openai/diagnostics.d.ts +0 -1
- package/dist/src/model-gateway/providers/openai/diagnostics.js +0 -9
- package/dist/src/model-gateway/providers/openai/function-output.d.ts +11 -0
- package/dist/src/model-gateway/providers/openai/function-output.js +37 -0
- package/dist/src/model-gateway/providers/openai/function-result.d.ts +7 -0
- package/dist/src/model-gateway/providers/openai/function-result.js +35 -0
- package/dist/src/model-gateway/providers/openai/message-output-policy.d.ts +3 -0
- package/dist/src/model-gateway/providers/openai/message-output-policy.js +16 -0
- package/dist/src/model-gateway/providers/openai/payload.d.ts +0 -2
- package/dist/src/model-gateway/providers/openai/payload.js +6 -23
- package/dist/src/model-gateway/providers/openai/response-lifetime.d.ts +2 -0
- package/dist/src/model-gateway/providers/openai/response-lifetime.js +64 -0
- package/dist/src/model-gateway/providers/openai/sse-data.d.ts +9 -0
- package/dist/src/model-gateway/providers/openai/sse-data.js +67 -0
- package/dist/src/model-gateway/providers/openai/stream-normalizer.d.ts +10 -22
- package/dist/src/model-gateway/providers/openai/stream-normalizer.js +78 -79
- package/dist/src/model-gateway/providers/openai/stream.js +13 -41
- package/dist/src/model-gateway/providers/openai/structured-message-output.d.ts +42 -0
- package/dist/src/model-gateway/providers/openai/structured-message-output.js +175 -0
- package/dist/src/model-gateway/server/configuration.d.ts +2 -0
- package/dist/src/model-gateway/server/configuration.js +73 -21
- package/dist/src/model-gateway/server.js +5 -1
- package/dist/src/plugin-contract/index.d.ts +1 -0
- package/dist/src/plugin-contract/index.js +1 -0
- package/dist/src/plugin-contract/install-source.d.ts +13 -0
- package/dist/src/plugin-contract/install-source.js +99 -0
- package/dist/src/plugin-contract/manifest.d.ts +4 -1
- package/dist/src/plugin-contract/manifest.js +1 -0
- package/dist/src/plugin-contract/platform-compatibility.d.ts +16 -0
- package/dist/src/plugin-contract/platform-compatibility.js +3 -0
- package/dist/src/plugin-sdk/computer-access.d.ts +12 -0
- package/dist/src/plugin-sdk/computer-access.js +6 -0
- package/dist/src/plugin-sdk/files-windows/process.d.ts +3 -0
- package/dist/src/plugin-sdk/files-windows/process.js +93 -0
- package/dist/src/plugin-sdk/files-windows/read-script.d.ts +1 -0
- package/dist/src/plugin-sdk/files-windows/read-script.js +43 -0
- package/dist/src/plugin-sdk/files-windows/read.d.ts +6 -0
- package/dist/src/plugin-sdk/files-windows/read.js +56 -0
- package/dist/src/plugin-sdk/files-windows/result.d.ts +4 -0
- package/dist/src/plugin-sdk/files-windows/result.js +67 -0
- package/dist/src/plugin-sdk/files.js +4 -0
- package/dist/src/plugin-sdk/index.d.ts +1 -0
- package/dist/src/plugin-sdk/index.js +1 -0
- package/dist/src/plugin-sdk/mutation-result.d.ts +7 -0
- package/dist/src/plugin-sdk/mutation-result.js +11 -0
- package/dist/src/runtime/adapters/in-memory-session-store.js +6 -16
- package/dist/src/runtime/adapters/long-term-memory/file-lock/acquisition.js +20 -3
- package/dist/src/runtime/adapters/long-term-memory/file-lock/owner-record.js +3 -1
- package/dist/src/runtime/adapters/long-term-memory/file-lock/path-observation.d.ts +3 -0
- package/dist/src/runtime/adapters/long-term-memory/file-lock/path-observation.js +20 -0
- package/dist/src/runtime/adapters/long-term-memory/file-lock/snapshot.js +7 -3
- package/dist/src/runtime/adapters/passive-learning-runtime.d.ts +1 -1
- package/dist/src/runtime/adapters/passive-learning-runtime.js +3 -3
- package/dist/src/runtime/adapters/runtime-observation-connection.d.ts +5 -0
- package/dist/src/runtime/adapters/runtime-observation-connection.js +13 -0
- package/dist/src/runtime/admin/config-control.js +2 -1
- package/dist/src/runtime/automations/catalog.d.ts +3 -0
- package/dist/src/runtime/automations/catalog.js +1 -0
- package/dist/src/runtime/automations/model-dependency-projection.d.ts +2 -0
- package/dist/src/runtime/automations/service.d.ts +2 -0
- package/dist/src/runtime/capabilities/automation-builder/authoring-reference.d.ts +10 -5
- package/dist/src/runtime/capabilities/automation-builder/authoring-reference.js +8 -7
- package/dist/src/runtime/capabilities/automation-builder/payload-instructions.d.ts +2 -2
- package/dist/src/runtime/capabilities/automation-builder/payload-instructions.js +2 -2
- package/dist/src/runtime/capabilities/automation-builder/tool-contract.d.ts +2 -2
- package/dist/src/runtime/capabilities/automations/authoring-catalog.js +1 -1
- package/dist/src/runtime/capabilities/automations/authoring-preparation.d.ts +11 -5
- package/dist/src/runtime/capabilities/automations/tool-module.js +1 -1
- package/dist/src/runtime/capabilities/request-permission-catalog.d.ts +3 -1
- package/dist/src/runtime/capabilities/request-permission-catalog.js +21 -2
- package/dist/src/runtime/capabilities/request-permission-tool-registry.d.ts +2 -1
- package/dist/src/runtime/capabilities/request-permission-tool-registry.js +18 -10
- package/dist/src/runtime/capabilities/request-runtime-tool-registry.d.ts +2 -0
- package/dist/src/runtime/capabilities/request-runtime-tool-registry.js +1 -1
- package/dist/src/runtime/capabilities/scheduling/create-operations.d.ts +6 -0
- package/dist/src/runtime/config/builders.js +6 -5
- package/dist/src/runtime/config/effective-model-config-validation.js +4 -35
- package/dist/src/runtime/config/fields.js +15 -0
- package/dist/src/runtime/config/model-context-capacity.d.ts +20 -0
- package/dist/src/runtime/config/model-context-capacity.js +55 -0
- package/dist/src/runtime/config/model-execution-policy.d.ts +5 -1
- package/dist/src/runtime/config/model-execution-policy.js +16 -0
- package/dist/src/runtime/config/model-plugin-config.d.ts +8 -0
- package/dist/src/runtime/config/model-plugin-config.js +40 -0
- package/dist/src/runtime/config/schema.js +5 -1
- package/dist/src/runtime/config/validation/model-profile-validation.js +2 -0
- package/dist/src/runtime/config/validation/runtime-config-validation-contract.d.ts +3 -1
- package/dist/src/runtime/config/validation/runtime-config-validation-contract.js +3 -1
- package/dist/src/runtime/config/validation/runtime-root-section-validation.js +11 -4
- package/dist/src/runtime/config/validation/web-ui-config-validation.js +3 -2
- package/dist/src/runtime/config/web-ui.d.ts +5 -0
- package/dist/src/runtime/config/web-ui.js +5 -0
- package/dist/src/runtime/config.js +2 -0
- package/dist/src/runtime/local-application.d.ts +2 -0
- package/dist/src/runtime/local-host/app-owner.js +50 -6
- package/dist/src/runtime/local-host/app-request-control.d.ts +3 -1
- package/dist/src/runtime/local-host/app-request-control.js +91 -11
- package/dist/src/runtime/local-host/client-requests.js +32 -5
- package/dist/src/runtime/local-host/client-services.d.ts +2 -0
- package/dist/src/runtime/local-host/local-request-diagnostics.d.ts +9 -0
- package/dist/src/runtime/local-host/local-request-diagnostics.js +47 -0
- package/dist/src/runtime/local-host/saved-approvals.js +23 -2
- package/dist/src/runtime/local-host/windows-private-access.js +2 -0
- package/dist/src/runtime/model/model-selection.js +4 -1
- package/dist/src/runtime/observability/request-control-diagnostics.d.ts +6 -0
- package/dist/src/runtime/observability/request-control-diagnostics.js +52 -0
- package/dist/src/runtime/passive-learning/application-catalog.js +3 -1
- package/dist/src/runtime/passive-learning/collection-source.js +7 -0
- package/dist/src/runtime/passive-learning/service.js +2 -3
- package/dist/src/runtime/passive-learning/status-projection.d.ts +2 -0
- package/dist/src/runtime/passive-learning/status-projection.js +9 -0
- package/dist/src/runtime/plugins/configuration-context.d.ts +9 -0
- package/dist/src/runtime/plugins/configuration-context.js +42 -0
- package/dist/src/runtime/plugins/configuration-settings.d.ts +2 -0
- package/dist/src/runtime/plugins/configuration-settings.js +26 -0
- package/dist/src/runtime/plugins/configuration-store.d.ts +23 -0
- package/dist/src/runtime/plugins/configuration-store.js +100 -0
- package/dist/src/runtime/plugins/configuration-write.d.ts +5 -0
- package/dist/src/runtime/plugins/configuration-write.js +58 -0
- package/dist/src/runtime/plugins/installation/archive.d.ts +2 -0
- package/dist/src/runtime/plugins/installation/archive.js +107 -0
- package/dist/src/runtime/plugins/installation/github-download.d.ts +9 -0
- package/dist/src/runtime/plugins/installation/github-download.js +72 -0
- package/dist/src/runtime/plugins/installation/installed-package.d.ts +9 -0
- package/dist/src/runtime/plugins/installation/installed-package.js +66 -0
- package/dist/src/runtime/plugins/installation/package.d.ts +53 -0
- package/dist/src/runtime/plugins/installation/package.js +81 -0
- package/dist/src/runtime/plugins/installation/portable-path.d.ts +2 -0
- package/dist/src/runtime/plugins/installation/portable-path.js +10 -0
- package/dist/src/runtime/plugins/installation/publication.d.ts +10 -0
- package/dist/src/runtime/plugins/installation/publication.js +17 -0
- package/dist/src/runtime/plugins/installation/service.d.ts +48 -0
- package/dist/src/runtime/plugins/installation/service.js +80 -0
- package/dist/src/runtime/plugins/loader.js +34 -38
- package/dist/src/runtime/plugins/manifest-platform-compatibility.d.ts +2 -0
- package/dist/src/runtime/plugins/manifest-platform-compatibility.js +39 -0
- package/dist/src/runtime/plugins/manifest-projection.js +1 -0
- package/dist/src/runtime/plugins/manifest-validator.js +12 -1
- package/dist/src/runtime/plugins/module-cache.d.ts +2 -0
- package/dist/src/runtime/plugins/module-cache.js +19 -0
- package/dist/src/runtime/plugins/platform-compatibility.d.ts +4 -0
- package/dist/src/runtime/plugins/platform-compatibility.js +44 -0
- package/dist/src/runtime/plugins/selection.d.ts +2 -0
- package/dist/src/runtime/plugins/selection.js +16 -11
- package/dist/src/runtime/ports.d.ts +6 -4
- package/dist/src/runtime/request/approval-wait/activation-events.js +19 -7
- package/dist/src/runtime/request/approval-wait/execution-compaction-restore.d.ts +20 -0
- package/dist/src/runtime/request/approval-wait/execution-compaction-restore.js +118 -0
- package/dist/src/runtime/request/approval-wait/super-compaction-restore.js +2 -1
- package/dist/src/runtime/request/dependencies.d.ts +2 -1
- package/dist/src/runtime/request/execution-payload-compacted-evidence.d.ts +1 -1
- package/dist/src/runtime/request/handler.js +8 -0
- package/dist/src/runtime/request/prepared-execution.js +9 -1
- package/dist/src/runtime/request/request-steering.d.ts +4 -0
- package/dist/src/runtime/request/request-steering.js +37 -12
- package/dist/src/runtime/request/worker-capability-composition.d.ts +2 -0
- package/dist/src/runtime/request/worker-capability-composition.js +4 -1
- package/dist/src/runtime/scheduler/journal-index-state.d.ts +1 -1
- package/dist/src/runtime/steps/execution-agent/capability-result-context.d.ts +6 -0
- package/dist/src/runtime/steps/execution-agent/capability-result-context.js +29 -0
- package/dist/src/runtime/steps/execution-agent/format.js +2 -3
- package/dist/src/runtime/steps/execution-agent/input.js +1 -1
- package/dist/src/runtime/steps/execution-agent/prompt.js +5 -5
- package/dist/src/runtime/steps/execution-agent/response-prompt.js +1 -0
- package/dist/src/runtime/steps/execution-agent/state-context.d.ts +2 -3
- package/dist/src/runtime/steps/execution-agent/state-context.js +26 -35
- package/dist/src/runtime/steps/execution-agent/work-plan-contract.d.ts +1 -3
- package/dist/src/runtime/steps/execution-agent/work-plan-contract.js +0 -55
- package/dist/src/runtime/steps/execution-agent/work-plan-schema.d.ts +3 -0
- package/dist/src/runtime/steps/execution-agent/work-plan-schema.js +61 -0
- package/dist/src/sessions/assistant-initiative-message.d.ts +3 -0
- package/dist/src/sessions/assistant-initiative-message.js +12 -0
- package/dist/src/sessions/assistant-initiative.d.ts +2 -2
- package/dist/src/sessions/assistant-initiative.js +1 -7
- package/dist/src/sessions/durable-session-commit.d.ts +2 -1
- package/dist/src/sessions/durable-session-commit.js +9 -4
- package/dist/src/sessions/metadata/projection.d.ts +15 -0
- package/dist/src/sessions/metadata/projection.js +55 -0
- package/dist/src/sessions/metadata/publication.d.ts +12 -0
- package/dist/src/sessions/metadata/publication.js +78 -0
- package/dist/src/sessions/metadata/source-receipt.d.ts +5 -0
- package/dist/src/sessions/metadata/source-receipt.js +42 -0
- package/dist/src/sessions/metadata/store.d.ts +7 -0
- package/dist/src/sessions/metadata/store.js +119 -0
- package/dist/src/sessions/prepared-session-replacement.d.ts +6 -0
- package/dist/src/sessions/prepared-session-replacement.js +46 -0
- package/dist/src/sessions/record/projection.d.ts +3 -1
- package/dist/src/sessions/record/projection.js +26 -18
- package/dist/src/sessions/request-lifecycle/service.js +3 -3
- package/dist/src/sessions/session-service.d.ts +2 -4
- package/dist/src/sessions/session-service.js +4 -16
- package/dist/src/sessions/session-store.d.ts +2 -1
- package/dist/src/sessions/session-store.js +11 -5
- package/dist/src/sessions/snapshot.d.ts +17 -0
- package/dist/src/sessions/snapshot.js +105 -0
- package/dist/src/sessions/types.d.ts +2 -0
- package/dist/src/shared/passive-observation-self-exclusion.d.ts +5 -0
- package/dist/src/shared/passive-observation-self-exclusion.js +37 -0
- package/dist/src/shared/tool-selection.d.ts +2 -0
- package/dist/src/shared/tool-selection.js +7 -0
- package/dist/src/shared/windows-file-io/authority-script.d.ts +1 -0
- package/dist/src/shared/windows-file-io/authority-script.js +94 -0
- package/dist/src/shared/windows-file-io/native-script.d.ts +2 -0
- package/dist/src/shared/windows-file-io/native-script.js +120 -0
- package/dist/src/shared/windows-file-io/read-bytes-script.d.ts +1 -0
- package/dist/src/shared/windows-file-io/read-bytes-script.js +18 -0
- package/dist/src/shared/windows-job-object.d.ts +2 -0
- package/dist/src/shared/windows-job-object.js +66 -0
- package/dist/src/web-ui/app/ARCHITECTURE.md +14 -0
- package/dist/src/web-ui/app/app-bootstrap.js +14 -1
- package/dist/src/web-ui/app/app-state.js +0 -7
- package/dist/src/web-ui/app/app.js +59 -159
- package/dist/src/web-ui/app/components/automations/node-inspector.js +3 -2
- package/dist/src/web-ui/app/components/automations/step-editor-dialog.js +3 -0
- package/dist/src/web-ui/app/components/composer-submission-notice.js +50 -0
- package/dist/src/web-ui/app/components/config-workspace/config-model.js +2 -0
- package/dist/src/web-ui/app/components/config-workspace/model-plugin-permissions.js +136 -0
- package/dist/src/web-ui/app/components/config-workspace/model-plugin-selection.js +180 -0
- package/dist/src/web-ui/app/components/config-workspace/model-plugin-view-state.js +114 -0
- package/dist/src/web-ui/app/components/config-workspace/model-rendering.js +3 -0
- package/dist/src/web-ui/app/components/config-workspace/model-summary.js +39 -0
- package/dist/src/web-ui/app/components/config-workspace/summary-rendering.js +30 -0
- package/dist/src/web-ui/app/components/config-workspace/workspace-events.js +37 -0
- package/dist/src/web-ui/app/components/config-workspace/workspace-mutations.js +24 -2
- package/dist/src/web-ui/app/components/config-workspace/workspace-persistence.js +9 -1
- package/dist/src/web-ui/app/components/config-workspace/workspace-view.js +23 -67
- package/dist/src/web-ui/app/components/config-workspace.js +11 -2
- package/dist/src/web-ui/app/components/conversation-view.js +36 -5
- package/dist/src/web-ui/app/components/dashboard/recent-conversations.js +2 -1
- package/dist/src/web-ui/app/components/dashboard/workspace.js +2 -1
- package/dist/src/web-ui/app/components/home-guidance/daily-review.js +2 -2
- package/dist/src/web-ui/app/components/home-guidance/home-guidance.js +20 -6
- package/dist/src/web-ui/app/components/model-setup/context-window-feedback.js +53 -0
- package/dist/src/web-ui/app/components/model-setup/save-flow.js +3 -1
- package/dist/src/web-ui/app/components/model-setup/save-outcome.js +1 -0
- package/dist/src/web-ui/app/components/model-setup/wizard.js +12 -0
- package/dist/src/web-ui/app/components/operations-summary.js +105 -0
- package/dist/src/web-ui/app/components/passive-learning/activity-controls.js +4 -0
- package/dist/src/web-ui/app/components/passive-learning/collection-access.js +35 -0
- package/dist/src/web-ui/app/components/passive-learning/collection-consent-dialog.js +59 -0
- package/dist/src/web-ui/app/components/passive-learning/collection-consent-gate.js +94 -0
- package/dist/src/web-ui/app/components/passive-learning/computer-update-notice.js +6 -0
- package/dist/src/web-ui/app/components/passive-learning/failure-copy.js +1 -0
- package/dist/src/web-ui/app/components/passive-learning/home.js +8 -11
- package/dist/src/web-ui/app/components/passive-learning/macos-collection-restart-notice.js +1 -0
- package/dist/src/web-ui/app/components/passive-learning/memory.js +2 -4
- package/dist/src/web-ui/app/components/passive-learning/workspace-view.js +2 -2
- package/dist/src/web-ui/app/components/plugins/compatibility.js +13 -0
- package/dist/src/web-ui/app/components/plugins/configuration-draft.js +34 -0
- package/dist/src/web-ui/app/components/plugins/configuration-editor.js +147 -0
- package/dist/src/web-ui/app/components/plugins/configuration-fields.js +103 -0
- package/dist/src/web-ui/app/components/plugins/configuration-retained-secrets.js +20 -0
- package/dist/src/web-ui/app/components/plugins/configuration-settings.js +108 -0
- package/dist/src/web-ui/app/components/plugins/discovery-rendering.js +45 -0
- package/dist/src/web-ui/app/components/plugins/installation-compatibility.js +7 -0
- package/dist/src/web-ui/app/components/plugins/installation.js +213 -0
- package/dist/src/web-ui/app/components/plugins/manager.js +160 -6
- package/dist/src/web-ui/app/components/plugins/removal.js +130 -0
- package/dist/src/web-ui/app/components/plugins/rendering.js +17 -2
- package/dist/src/web-ui/app/components/plugins/summary.js +54 -0
- package/dist/src/web-ui/app/components/plugins/tabs.js +31 -0
- package/dist/src/web-ui/app/components/plugins/view-state.js +3 -1
- package/dist/src/web-ui/app/components/reasoning-override-prompt.js +82 -0
- package/dist/src/web-ui/app/components/runtime-config-activation.js +22 -8
- package/dist/src/web-ui/app/components/runtime-setup/connection-form.js +5 -2
- package/dist/src/web-ui/app/components/runtime-setup/connection-state.js +9 -1
- package/dist/src/web-ui/app/components/runtime-setup/context-window-feedback.js +71 -0
- package/dist/src/web-ui/app/components/runtime-setup/optional-steps.js +9 -4
- package/dist/src/web-ui/app/components/runtime-setup/plugins.js +3 -1
- package/dist/src/web-ui/app/components/runtime-setup/rendering.js +6 -4
- package/dist/src/web-ui/app/components/runtime-setup-guide.d.ts +1 -0
- package/dist/src/web-ui/app/components/runtime-setup-guide.js +15 -3
- package/dist/src/web-ui/app/components/schedules/form.js +10 -8
- package/dist/src/web-ui/app/components/schedules/workspace.js +23 -4
- package/dist/src/web-ui/app/components/session-sidebar-sections.js +2 -2
- package/dist/src/web-ui/app/components/spark-chat/empty-state.js +1 -0
- package/dist/src/web-ui/app/components/spark-chat/handoff-actions.js +9 -3
- package/dist/src/web-ui/app/components/spark-chat/panel.js +1 -0
- package/dist/src/web-ui/app/components/spark-chat/placement.js +4 -7
- package/dist/src/web-ui/app/components/spark-chat/settings.js +7 -3
- package/dist/src/web-ui/app/components/system-host/connection-card.js +35 -0
- package/dist/src/web-ui/app/components/system-host/macos-permissions.js +2 -0
- package/dist/src/web-ui/app/components/system-host/macos-setup.js +1 -1
- package/dist/src/web-ui/app/components/system-host/manager.js +45 -12
- package/dist/src/web-ui/app/components/system-host/native-windows-access.js +50 -0
- package/dist/src/web-ui/app/components/system-host/rendering.js +114 -106
- package/dist/src/web-ui/app/components/system-host/windows-store-setup.js +293 -0
- package/dist/src/web-ui/app/components/workspace-shell.js +6 -0
- package/dist/src/web-ui/app/components/workspace-storage-notice.js +37 -0
- package/dist/src/web-ui/app/computer-access-feature.js +22 -5
- package/dist/src/web-ui/app/configuration-environment-refresh.js +27 -34
- package/dist/src/web-ui/app/configuration-feature.js +44 -3
- package/dist/src/web-ui/app/controllers/app-event-bindings.js +41 -105
- package/dist/src/web-ui/app/controllers/chat-request-controller.d.ts +28 -0
- package/dist/src/web-ui/app/controllers/chat-request-controller.js +34 -66
- package/dist/src/web-ui/app/controllers/composer-attachments-controller.d.ts +15 -40
- package/dist/src/web-ui/app/controllers/composer-attachments-controller.js +26 -69
- package/dist/src/web-ui/app/controllers/composer-draft-view.d.ts +27 -0
- package/dist/src/web-ui/app/controllers/composer-draft-view.js +48 -0
- package/dist/src/web-ui/app/controllers/composer-drafts.d.ts +55 -0
- package/dist/src/web-ui/app/controllers/composer-drafts.js +120 -0
- package/dist/src/web-ui/app/controllers/composer-feature.d.ts +65 -0
- package/dist/src/web-ui/app/controllers/composer-feature.js +124 -0
- package/dist/src/web-ui/app/controllers/composer-queue-controller.d.ts +33 -94
- package/dist/src/web-ui/app/controllers/composer-queue-controller.js +185 -251
- package/dist/src/web-ui/app/controllers/composer-submission-lifecycle.d.ts +48 -0
- package/dist/src/web-ui/app/controllers/composer-submission-lifecycle.js +97 -0
- package/dist/src/web-ui/app/controllers/composer-submit-controller.d.ts +30 -61
- package/dist/src/web-ui/app/controllers/composer-submit-controller.js +56 -138
- package/dist/src/web-ui/app/controllers/composer-surface-controller.js +6 -0
- package/dist/src/web-ui/app/controllers/composer-workspace-controller.d.ts +22 -40
- package/dist/src/web-ui/app/controllers/composer-workspace-controller.js +49 -165
- package/dist/src/web-ui/app/controllers/conversation-navigation-intent.js +15 -0
- package/dist/src/web-ui/app/controllers/conversation-read-state-controller.d.ts +1 -0
- package/dist/src/web-ui/app/controllers/conversation-read-state-controller.js +7 -3
- package/dist/src/web-ui/app/controllers/conversation-request-hydration.js +91 -0
- package/dist/src/web-ui/app/controllers/conversation-session-controller.d.ts +10 -5
- package/dist/src/web-ui/app/controllers/conversation-session-controller.js +97 -162
- package/dist/src/web-ui/app/controllers/conversation-workspace-activation.js +27 -0
- package/dist/src/web-ui/app/controllers/daily-memory-review.js +15 -16
- package/dist/src/web-ui/app/controllers/environment-transition.js +126 -0
- package/dist/src/web-ui/app/controllers/environment-workspace-preparation.js +18 -0
- package/dist/src/web-ui/app/controllers/history-pagination.js +111 -0
- package/dist/src/web-ui/app/controllers/home-composer-feature.d.ts +14 -36
- package/dist/src/web-ui/app/controllers/home-composer-feature.js +17 -114
- package/dist/src/web-ui/app/controllers/home-conversation-activation.js +6 -8
- package/dist/src/web-ui/app/controllers/operations-controller.d.ts +12 -0
- package/dist/src/web-ui/app/controllers/operations-controller.js +28 -21
- package/dist/src/web-ui/app/controllers/passive-learning-controller.js +56 -0
- package/dist/src/web-ui/app/controllers/projects-controller.d.ts +1 -1
- package/dist/src/web-ui/app/controllers/projects-controller.js +6 -1
- package/dist/src/web-ui/app/controllers/reasoning-mode-controller.js +174 -0
- package/dist/src/web-ui/app/controllers/runtime-onboarding-controller.d.ts +1 -0
- package/dist/src/web-ui/app/controllers/runtime-onboarding-controller.js +11 -0
- package/dist/src/web-ui/app/controllers/runtime-selection-controller.d.ts +7 -0
- package/dist/src/web-ui/app/controllers/runtime-selection-controller.js +20 -155
- package/dist/src/web-ui/app/controllers/session-controller.js +43 -19
- package/dist/src/web-ui/app/controllers/session-list-pagination.js +71 -0
- package/dist/src/web-ui/app/controllers/session-pin-updates.js +14 -0
- package/dist/src/web-ui/app/controllers/session-sidebar-controller.js +17 -17
- package/dist/src/web-ui/app/controllers/spark-chat-reading.js +1 -0
- package/dist/src/web-ui/app/controllers/spark-chat-sync.js +26 -7
- package/dist/src/web-ui/app/controllers/steer-controller.js +9 -7
- package/dist/src/web-ui/app/controllers/tool-permission-mode-controller.js +1 -1
- package/dist/src/web-ui/app/controllers/workspace-conversation-opener.js +34 -0
- package/dist/src/web-ui/app/controllers/workspace-route-controller.js +21 -19
- package/dist/src/web-ui/app/dashboard-feature.js +4 -3
- package/dist/src/web-ui/app/index.html +6 -2
- package/dist/src/web-ui/app/lib/history-page-messages.js +49 -0
- package/dist/src/web-ui/app/lib/reasoning-controls.js +35 -0
- package/dist/src/web-ui/app/lib/request-lifecycle-view.js +8 -0
- package/dist/src/web-ui/app/lib/session-composer-queue-ownership.js +58 -0
- package/dist/src/web-ui/app/lib/session-composer-queue.d.ts +12 -0
- package/dist/src/web-ui/app/lib/session-composer-queue.js +25 -6
- package/dist/src/web-ui/app/lib/workspace-route.d.ts +3 -0
- package/dist/src/web-ui/app/lib/workspace-route.js +4 -0
- package/dist/src/web-ui/app/passive-learning-feature.js +16 -4
- package/dist/src/web-ui/app/runtime-onboarding-feature.js +3 -0
- package/dist/src/web-ui/app/schedules-feature.js +5 -3
- package/dist/src/web-ui/app/services/client-preferences.d.ts +18 -10
- package/dist/src/web-ui/app/services/client-preferences.js +25 -16
- package/dist/src/web-ui/app/services/home-guidance-preferences.js +13 -13
- package/dist/src/web-ui/app/services/reasoning-override.js +12 -0
- package/dist/src/web-ui/app/services/runtime-web-client/automations.js +10 -2
- package/dist/src/web-ui/app/services/runtime-web-client/configuration.js +20 -0
- package/dist/src/web-ui/app/services/runtime-web-client/memory.js +7 -2
- package/dist/src/web-ui/app/services/runtime-web-client/plugin-configuration.js +19 -0
- package/dist/src/web-ui/app/services/runtime-web-client/spark-chat.js +4 -4
- package/dist/src/web-ui/app/services/runtime-web-client/system-host.js +4 -0
- package/dist/src/web-ui/app/services/runtime-web-client.d.ts +8 -1
- package/dist/src/web-ui/app/services/runtime-web-client.js +14 -3
- package/dist/src/web-ui/app/services/server-composer-queue.js +32 -0
- package/dist/src/web-ui/app/services/session-sidebar-preferences.js +5 -5
- package/dist/src/web-ui/app/services/workspace-state-storage.js +116 -0
- package/dist/src/web-ui/app/services/workspace-state.js +27 -0
- package/dist/src/web-ui/app/spark-chat-conversation.js +34 -45
- package/dist/src/web-ui/app/spark-chat-feature.js +84 -21
- package/dist/src/web-ui/app/styles/11-product-links.css +30 -0
- package/dist/src/web-ui/app/styles/21-composer-controls.css +16 -0
- package/dist/src/web-ui/app/styles/41-plugin-configuration.css +79 -0
- package/dist/src/web-ui/app/styles/41-plugin-discovery.css +132 -0
- package/dist/src/web-ui/app/styles/41-plugin-management.css +14 -0
- package/dist/src/web-ui/app/styles/42-model-plugin-permissions.css +174 -0
- package/dist/src/web-ui/app/styles/46-system-host.css +61 -107
- package/dist/src/web-ui/app/styles/47-config-controls.css +13 -1
- package/dist/src/web-ui/app/styles/49-collection-consent.css +30 -0
- package/dist/src/web-ui/app/styles/54-spark-chat.css +33 -1
- package/dist/src/web-ui/app/styles/64-workspace-storage.css +23 -0
- package/dist/src/web-ui/app/styles.css +6 -0
- package/dist/src/web-ui/client-state/contracts.d.ts +15 -0
- package/dist/src/web-ui/client-state/contracts.js +13 -0
- package/dist/src/web-ui/client-state/preference-shapes.d.ts +2 -0
- package/dist/src/web-ui/client-state/preference-shapes.js +80 -0
- package/dist/src/web-ui/client-state/preferences.d.ts +3 -0
- package/dist/src/web-ui/client-state/preferences.js +84 -0
- package/dist/src/web-ui/client-state/queue.d.ts +3 -0
- package/dist/src/web-ui/client-state/queue.js +43 -0
- package/dist/src/web-ui/client-state/routes.d.ts +7 -0
- package/dist/src/web-ui/client-state/routes.js +58 -0
- package/dist/src/web-ui/client-state/store.d.ts +14 -0
- package/dist/src/web-ui/client-state/store.js +88 -0
- package/dist/src/web-ui/local-runtime/api-router.js +11 -6
- package/dist/src/web-ui/local-runtime/approval-request-attachment.js +14 -5
- package/dist/src/web-ui/local-runtime/configuration-activation-source.d.ts +1 -1
- package/dist/src/web-ui/local-runtime/configuration-activation-source.js +11 -3
- package/dist/src/web-ui/local-runtime/contracts.d.ts +4 -3
- package/dist/src/web-ui/local-runtime/environment-registry.d.ts +5 -1
- package/dist/src/web-ui/local-runtime/environment-registry.js +53 -11
- package/dist/src/web-ui/local-runtime/history-pagination.d.ts +16 -0
- package/dist/src/web-ui/local-runtime/history-pagination.js +20 -0
- package/dist/src/web-ui/local-runtime/http.js +11 -2
- package/dist/src/web-ui/local-runtime/model-context-capacity-error.d.ts +14 -0
- package/dist/src/web-ui/local-runtime/model-context-capacity-error.js +28 -0
- package/dist/src/web-ui/local-runtime/model-setup-context-window.d.ts +15 -0
- package/dist/src/web-ui/local-runtime/model-setup-context-window.js +25 -0
- package/dist/src/web-ui/local-runtime/model-setup-routes.js +2 -0
- package/dist/src/web-ui/local-runtime/model-setup-service.js +5 -2
- package/dist/src/web-ui/local-runtime/model-setup-validation.d.ts +1 -0
- package/dist/src/web-ui/local-runtime/model-setup-validation.js +14 -7
- package/dist/src/web-ui/local-runtime/plugin-configuration-routes.d.ts +16 -0
- package/dist/src/web-ui/local-runtime/plugin-configuration-routes.js +68 -0
- package/dist/src/web-ui/local-runtime/plugin-installation-routes.d.ts +16 -0
- package/dist/src/web-ui/local-runtime/plugin-installation-routes.js +96 -0
- package/dist/src/web-ui/local-runtime/plugin-management-routes.d.ts +8 -1
- package/dist/src/web-ui/local-runtime/plugin-management-routes.js +17 -0
- package/dist/src/web-ui/local-runtime/plugin-mutation-admission.d.ts +7 -0
- package/dist/src/web-ui/local-runtime/plugin-mutation-admission.js +17 -0
- package/dist/src/web-ui/local-runtime/plugin-removal-routes.d.ts +18 -0
- package/dist/src/web-ui/local-runtime/plugin-removal-routes.js +60 -0
- package/dist/src/web-ui/local-runtime/realtime-controller.js +41 -2
- package/dist/src/web-ui/local-runtime/request-body-error.d.ts +11 -0
- package/dist/src/web-ui/local-runtime/request-body-error.js +14 -0
- package/dist/src/web-ui/local-runtime/request-cancellation-route.js +28 -1
- package/dist/src/web-ui/local-runtime/request-control-observation.d.ts +19 -0
- package/dist/src/web-ui/local-runtime/request-control-observation.js +80 -0
- package/dist/src/web-ui/local-runtime/request-execution.js +66 -34
- package/dist/src/web-ui/local-runtime/runtime-setup-connection-edit.d.ts +2 -0
- package/dist/src/web-ui/local-runtime/runtime-setup-connection-edit.js +35 -22
- package/dist/src/web-ui/local-runtime/runtime-setup-context-window.d.ts +13 -0
- package/dist/src/web-ui/local-runtime/runtime-setup-context-window.js +21 -0
- package/dist/src/web-ui/local-runtime/runtime-setup-credentials.d.ts +15 -1
- package/dist/src/web-ui/local-runtime/runtime-setup-credentials.js +30 -11
- package/dist/src/web-ui/local-runtime/runtime-setup-edit-files.d.ts +20 -0
- package/dist/src/web-ui/local-runtime/runtime-setup-edit-files.js +104 -0
- package/dist/src/web-ui/local-runtime/runtime-setup-edit-journal.d.ts +29 -0
- package/dist/src/web-ui/local-runtime/runtime-setup-edit-journal.js +151 -0
- package/dist/src/web-ui/local-runtime/runtime-setup-edit-recovery.d.ts +7 -0
- package/dist/src/web-ui/local-runtime/runtime-setup-edit-recovery.js +87 -0
- package/dist/src/web-ui/local-runtime/runtime-setup-edit-transaction.d.ts +3 -0
- package/dist/src/web-ui/local-runtime/runtime-setup-edit-transaction.js +37 -0
- package/dist/src/web-ui/local-runtime/runtime-setup-routes.js +2 -0
- package/dist/src/web-ui/local-runtime/runtime-setup-service.js +4 -0
- package/dist/src/web-ui/local-runtime/runtime-setup-validation.js +9 -2
- package/dist/src/web-ui/local-runtime/session-routes.d.ts +1 -0
- package/dist/src/web-ui/local-runtime/session-routes.js +16 -4
- package/dist/src/web-ui/local-runtime/spark-chat-routes.js +4 -3
- package/dist/src/web-ui/local-runtime-backend.js +14 -0
- package/dist/src/web-ui/plugin-capability-selection.js +4 -1
- package/dist/src/web-ui/plugin-configuration-input.d.ts +12 -0
- package/dist/src/web-ui/plugin-configuration-input.js +68 -0
- package/dist/src/web-ui/plugin-configuration-retained-secrets.d.ts +9 -0
- package/dist/src/web-ui/plugin-configuration-retained-secrets.js +48 -0
- package/dist/src/web-ui/plugin-configuration-service.d.ts +52 -0
- package/dist/src/web-ui/plugin-configuration-service.js +66 -0
- package/dist/src/web-ui/plugin-configuration-view.d.ts +25 -0
- package/dist/src/web-ui/plugin-configuration-view.js +45 -0
- package/dist/src/web-ui/plugin-disabled-selection.d.ts +7 -0
- package/dist/src/web-ui/plugin-disabled-selection.js +17 -0
- package/dist/src/web-ui/plugin-management-catalog.d.ts +5 -1
- package/dist/src/web-ui/plugin-management-catalog.js +13 -1
- package/dist/src/web-ui/plugin-management-selection.js +22 -9
- package/dist/src/web-ui/plugin-management-service.d.ts +6 -1
- package/dist/src/web-ui/plugin-management-service.js +11 -7
- package/dist/src/web-ui/plugin-removal-error.d.ts +7 -0
- package/dist/src/web-ui/plugin-removal-error.js +16 -0
- package/dist/src/web-ui/plugin-removal-service.d.ts +31 -0
- package/dist/src/web-ui/plugin-removal-service.js +109 -0
- package/dist/src/web-ui/runtime-setup-gateway.d.ts +6 -2
- package/dist/src/web-ui/runtime-setup-gateway.js +30 -10
- package/dist/src/web-ui/server-readiness.d.ts +3 -0
- package/dist/src/web-ui/server-readiness.js +36 -0
- package/dist/src/web-ui/server.d.ts +2 -0
- package/dist/src/web-ui/server.js +29 -3
- package/dist/src/web-ui/session-read-state/overview.d.ts +42 -0
- package/dist/src/web-ui/session-read-state/overview.js +16 -0
- package/dist/src/web-ui/session-read-state/pagination.d.ts +15 -0
- package/dist/src/web-ui/session-read-state/pagination.js +42 -0
- package/dist/src/web-ui/session-read-state/projection.d.ts +4 -3
- package/dist/src/web-ui/session-read-state/service.d.ts +213 -20
- package/dist/src/web-ui/session-read-state/service.js +25 -23
- package/dist/src/web-ui/session-read-state/visible-messages.d.ts +3 -3
- package/dist/src/web-ui/system-host-service.js +13 -2
- package/dist/src/web-ui/system-host-setup/collection-consent-route.d.ts +3 -0
- package/dist/src/web-ui/system-host-setup/collection-consent-route.js +30 -0
- package/dist/src/web-ui/system-host-setup/companion-linux.js +1 -1
- package/dist/src/web-ui/system-host-setup/installer-contract.d.ts +1 -1
- package/dist/src/web-ui/system-host-setup/installer-contract.js +2 -2
- package/dist/src/web-ui/system-host-setup/installers.js +0 -7
- package/dist/src/web-ui/system-host-setup/local-connection.d.ts +4 -1
- package/dist/src/web-ui/system-host-setup/local-connection.js +10 -17
- package/dist/src/web-ui/system-host-setup/routes.d.ts +2 -0
- package/dist/src/web-ui/system-host-setup/routes.js +32 -9
- package/dist/src/web-ui/system-host-setup/setup-mutation.d.ts +9 -0
- package/dist/src/web-ui/system-host-setup/setup-mutation.js +27 -0
- package/dist/src/web-ui/system-host-setup/windows-store-route.d.ts +13 -0
- package/dist/src/web-ui/system-host-setup/windows-store-route.js +68 -0
- package/docs/configuration.md +46 -0
- package/docs/installation.md +88 -28
- package/docs/plugins.md +310 -6
- package/docs/projects-and-full-plus.md +2 -6
- package/docs/runtime-library.md +0 -1
- package/docs/tool-execution-result-evidence-contract.md +57 -0
- package/docs/windows-companion-store.md +132 -0
- package/package.json +6 -4
- package/plugins/capability-brief/plugin.json +4 -0
- package/plugins/code-outline/README.md +20 -0
- package/plugins/code-outline/plugin.json +1 -0
- package/plugins/code-outline/source/index.ts +16 -20
- package/plugins/code-outline/source/read-failure.ts +40 -0
- package/plugins/code-outline/src/index.cjs +614 -29
- package/plugins/document-reader/README.md +33 -0
- package/plugins/document-reader/plugin.json +2 -0
- package/plugins/document-reader/source/pdf-contract.ts +57 -0
- package/plugins/document-reader/source/pdf-parser.ts +139 -0
- package/plugins/document-reader/source/pdf-process-main.ts +56 -0
- package/plugins/document-reader/source/pdf-process.ts +207 -0
- package/plugins/document-reader/source/pdf-result.ts +79 -0
- package/plugins/document-reader/source/pdf-worker.ts +39 -303
- package/plugins/document-reader/source/pdf.ts +4 -1
- package/plugins/document-reader/source/read-failure.ts +37 -0
- package/plugins/document-reader/source/reader.ts +3 -19
- package/plugins/document-reader/src/index.cjs +995 -211
- package/plugins/exec/README.md +19 -0
- package/plugins/exec/plugin.json +7 -3
- package/plugins/exec/skills/exec_skill/SKILL.md +3 -2
- package/plugins/exec/source/filesystem-file-observer.ts +98 -0
- package/plugins/exec/source/filesystem-observer.ts +8 -79
- package/plugins/exec/source/output-files.ts +12 -6
- package/plugins/exec/source/paths.ts +3 -1
- package/plugins/exec/source/process-manager.ts +8 -24
- package/plugins/exec/source/shell-platform.ts +19 -3
- package/plugins/exec/source/shell-process.ts +55 -0
- package/plugins/exec/source/windows-job-source.ts +1 -0
- package/plugins/exec/source/windows-shell-bootstrap.ts +20 -0
- package/plugins/exec/src/index.cjs +252 -96
- package/plugins/filesystem/README.md +65 -0
- package/plugins/filesystem/plugin.json +8 -2
- package/plugins/filesystem/source/atomic-write.ts +2 -0
- package/plugins/filesystem/source/bounded-io.ts +80 -306
- package/plugins/filesystem/source/directory-sample.ts +2 -0
- package/plugins/filesystem/source/errors.ts +14 -0
- package/plugins/filesystem/source/file-observation.ts +151 -0
- package/plugins/filesystem/source/file-version.ts +41 -0
- package/plugins/filesystem/source/index.ts +6 -0
- package/plugins/filesystem/source/mutation-coordinator.ts +1 -0
- package/plugins/filesystem/source/windows/authority-script.ts +1 -0
- package/plugins/filesystem/source/windows/native-script.ts +1 -0
- package/plugins/filesystem/source/windows/operations.ts +197 -0
- package/plugins/filesystem/source/windows/process.ts +214 -0
- package/plugins/filesystem/source/windows/publication-script.ts +29 -0
- package/plugins/filesystem/source/windows/read-script.ts +63 -0
- package/plugins/filesystem/source/windows/request-availability.ts +67 -0
- package/plugins/filesystem/source/windows/source.ts +42 -0
- package/plugins/filesystem/source/windows/storage-script.ts +11 -0
- package/plugins/filesystem/source/windows/streams-script.ts +24 -0
- package/plugins/filesystem/source/windows/write-script.ts +86 -0
- package/plugins/filesystem/src/index.cjs +1208 -322
- package/plugins/json-inspector/README.md +18 -0
- package/plugins/json-inspector/plugin.json +1 -0
- package/plugins/json-inspector/source/index.ts +16 -19
- package/plugins/json-inspector/source/read-failure.ts +42 -0
- package/plugins/json-inspector/src/index.cjs +612 -27
- package/plugins/local-search/README.md +29 -0
- package/plugins/local-search/plugin.json +2 -0
- package/plugins/local-search/source/errors.ts +2 -0
- package/plugins/local-search/source/paths.ts +3 -0
- package/plugins/local-search/source/ripgrep-process.ts +31 -5
- package/plugins/local-search/source/ripgrep.ts +3 -3
- package/plugins/local-search/source/windows-authority.ts +99 -0
- package/plugins/local-search/source/windows-search-lease.ts +49 -0
- package/plugins/local-search/source/windows-search-process.ts +91 -0
- package/plugins/local-search/source/windows-search-script.ts +52 -0
- package/plugins/local-search/src/index.cjs +595 -26
- package/plugins/memory/plugin.json +4 -0
- package/plugins/memory/source/lock-directory-claim.ts +56 -0
- package/plugins/memory/source/lock-owner-file.ts +71 -0
- package/plugins/memory/source/lock-path-observation.ts +26 -0
- package/plugins/memory/source/prepared-memory-replacement.ts +40 -0
- package/plugins/memory/source/store-lock.ts +12 -7
- package/plugins/memory/source/store.ts +3 -2
- package/plugins/memory/src/index.cjs +174 -25
- package/plugins/project-orientation/README.md +23 -0
- package/plugins/project-orientation/plugin.json +1 -0
- package/plugins/project-orientation/source/index.ts +12 -9
- package/plugins/project-orientation/source/inspection-failure.ts +70 -0
- package/plugins/project-orientation/source/manifest-summary.ts +9 -2
- package/plugins/project-orientation/source/tree.ts +6 -0
- package/plugins/project-orientation/src/index.cjs +647 -31
- package/plugins/system/README.md +81 -5
- package/plugins/system/plugin.json +10 -1
- package/plugins/system/skills/system_actions/SKILL.md +1 -1
- package/plugins/system/source/command-working-directory.ts +47 -0
- package/plugins/system/source/companion-command-output.ts +82 -0
- package/plugins/system/source/computer/handlers.ts +13 -9
- package/plugins/system/source/computer/observation-result.ts +10 -5
- package/plugins/system/source/computer/request-computers.ts +10 -3
- package/plugins/system/source/computer/request-modules.ts +3 -6
- package/plugins/system/source/computer/runtime-platform.ts +18 -0
- package/plugins/system/source/host-dispatch.ts +21 -1
- package/plugins/system/source/index.ts +14 -6
- package/plugins/system/source/local-command-output-retention.ts +16 -0
- package/plugins/system/source/local-command-output.ts +69 -0
- package/plugins/system/source/request-system-modules.ts +14 -2
- package/plugins/system/source/request-target-snapshot.ts +2 -1
- package/plugins/system/source/security/desktop-result.ts +177 -0
- package/plugins/system/source/security/observed-error.ts +10 -0
- package/plugins/system/source/security/secret-text.ts +118 -0
- package/plugins/system/source/security/system-results.ts +62 -0
- package/plugins/system/source/security/windows-output-directory.ts +82 -0
- package/plugins/system/src/index.cjs +1207 -86
- package/plugins/system-probe/plugin.json +8 -2
- package/plugins/system-probe/source/disk-path.ts +8 -0
- package/plugins/system-probe/source/index.ts +10 -5
- package/plugins/system-probe/source/machine-load.ts +33 -0
- package/plugins/system-probe/source/metrics.ts +6 -8
- package/plugins/system-probe/src/index.cjs +49 -16
- package/plugins/web/README.md +2 -2
- package/plugins/web/plugin.json +8 -0
- package/runtime.config.schema.json +25 -1
- package/src/runtime/README.md +12 -2
- package/dist/src/web-ui/system-host-setup/companion-windows.d.ts +0 -2
- package/dist/src/web-ui/system-host-setup/companion-windows.js +0 -108
- package/docs/publishing.md +0 -167
package/plugins/system/README.md
CHANGED
|
@@ -9,6 +9,76 @@ configuration. Ask and Full retain exact-action approvals; Full+ retains its nor
|
|
|
9
9
|
approval policy. OS accessibility, screen-recording and portal permissions still
|
|
10
10
|
apply. An available shell or connected companion does not prove desktop readiness.
|
|
11
11
|
|
|
12
|
+
## Command working directory
|
|
13
|
+
|
|
14
|
+
On native Windows, `system_command.cwd` accepts the same logical paths as
|
|
15
|
+
`filesystem`: `.` and ordinary relative paths use the request's agent-work root;
|
|
16
|
+
`workspace/...` uses the configured workspace. The request-bound resolver checks
|
|
17
|
+
these roots and resolves the full directory before exact-action approval. Approval,
|
|
18
|
+
activity and execution use that same captured absolute path. Absolute paths retain
|
|
19
|
+
their existing target-OS meaning and may be outside those roots.
|
|
20
|
+
|
|
21
|
+
The request root is also retained across approval resume, even if the configured
|
|
22
|
+
agent-work root changes. The adapter does not rewrite the command or choose a tool
|
|
23
|
+
or execution strategy. Linux/macOS, WSL interop and Companion targeting retain the
|
|
24
|
+
existing absolute-cwd contract; no guest-to-host directory mapping is performed.
|
|
25
|
+
|
|
26
|
+
## Local command output
|
|
27
|
+
|
|
28
|
+
Local `system_command` execution, including Windows through WSL interop, captures
|
|
29
|
+
stdout and stderr to private files under the plugin state directory. Temporary raw
|
|
30
|
+
disk storage is allowed inside this boundary. Once both streams reach natural EOF,
|
|
31
|
+
SYSTEM's independent secret detector checks their full text before any output read
|
|
32
|
+
or delivery. Suspected streams are replaced with `[REDACTED]`. An incomplete check,
|
|
33
|
+
invalid UTF-8 or scanner failure withholds output, attempts to remove raw stream
|
|
34
|
+
files and retains a safe process receipt.
|
|
35
|
+
|
|
36
|
+
There is no new total-output quota or truncation. Checking and final delivery still
|
|
37
|
+
materialize text in memory. The existing SDK context-text contract lets the Runtime
|
|
38
|
+
admit or compact the checked text using its normal model-context budget; even the
|
|
39
|
+
compaction model receives only checked text. Small clean results are unchanged.
|
|
40
|
+
|
|
41
|
+
`extensions["ai.abot.runtime"].settings.defaults.outputRetentionMs` in the plugin's
|
|
42
|
+
`plugin.json` controls retention; the default is seven days after capture completes. Cleanup protects active captures and removes expired
|
|
43
|
+
captures during plugin initialization and periodic maintenance, including raw
|
|
44
|
+
leftovers after a crash or interrupted cleanup. Removal is ordinary file cleanup,
|
|
45
|
+
not guaranteed forensic erasure. Reads do not renew
|
|
46
|
+
retention. Completed captures keep the retention recorded at creation across
|
|
47
|
+
Companion reconnects and later configuration changes. Each capture has an opaque
|
|
48
|
+
ID, byte counts and a saved process receipt;
|
|
49
|
+
files are private implementation storage, not user-authored artifacts or model
|
|
50
|
+
instructions. No wait/cancel operation or automatic command replay is added.
|
|
51
|
+
|
|
52
|
+
A storage failure before dispatch prevents the command from starting. A capture
|
|
53
|
+
write failure stops observation of that command and reports incomplete output;
|
|
54
|
+
external descendants are not assumed terminated. Delivery failures retain the
|
|
55
|
+
capture receipt, recorded helper PID, process status and exit code when available.
|
|
56
|
+
This does not grant a new model-facing operation for reading retained captures.
|
|
57
|
+
|
|
58
|
+
Application/target descriptions and launch results are checked before excerpts.
|
|
59
|
+
Sensitive actionable catalog identities are withheld instead of replaced by a
|
|
60
|
+
fabricated executable identifier. Input receipts retain their mechanical meaning.
|
|
61
|
+
|
|
62
|
+
## Companion command output
|
|
63
|
+
|
|
64
|
+
Updated companions advertise `host_secret_protection_v1` and
|
|
65
|
+
`system_command_output_v1`. SYSTEM then uses private
|
|
66
|
+
capture/read/close operations over the existing connection: the Companion stores
|
|
67
|
+
checked streams in its private state directory using its own detector with the
|
|
68
|
+
capture implementation,
|
|
69
|
+
returns the process receipt, and serves 64 KiB byte chunks. SYSTEM verifies the
|
|
70
|
+
capture ID, stream, offset, byte count and SHA-256 before delivering text through
|
|
71
|
+
the existing context-text contract. UTF-8 characters may cross chunk boundaries.
|
|
72
|
+
The model receives one tool result; transport chunks do not invoke a model.
|
|
73
|
+
|
|
74
|
+
Output references belong to the authenticated Companion connection. Transfers
|
|
75
|
+
protect their captures from expiry until closed or disconnected; the configured
|
|
76
|
+
SYSTEM retention then continues on disk. A failed transfer preserves the command
|
|
77
|
+
receipt and never repeats execution. Companions missing protection or complete
|
|
78
|
+
command capture fail before dispatch with an upgrade-required result; there is no
|
|
79
|
+
unprotected legacy fallback. This transfer adds no model-facing tool, and final
|
|
80
|
+
text delivery still materializes the streams in memory.
|
|
81
|
+
|
|
12
82
|
## Shared connection
|
|
13
83
|
|
|
14
84
|
Use **Home → Computer access** for one installation shared
|
|
@@ -94,9 +164,18 @@ request. Metadata remains within the ordinary tool-result budgets. A companion s
|
|
|
94
164
|
64 KiB private chunks through the existing bounded local protocol; bytes never enter
|
|
95
165
|
model-visible JSON output.
|
|
96
166
|
|
|
167
|
+
Before frame/media retention, each owner checks desktop/window/accessibility text
|
|
168
|
+
and diagnostic fields. Suspected text is masked and its associated image is
|
|
169
|
+
withheld; input that already occurred retains its dispatch receipt. Ordinary
|
|
170
|
+
images remain available. Pixel-only content is not inspected: OCR and additional
|
|
171
|
+
installation dependencies are deferred. Version 1 is best-effort known-indicator
|
|
172
|
+
protection, not a guarantee that an admitted image or text is free of secrets.
|
|
173
|
+
|
|
97
174
|
The Runtime stores images in request-owned memory, projects them only to consumers
|
|
98
|
-
of the original tool evidence, excludes them from history/provider traces
|
|
99
|
-
|
|
175
|
+
of the original tool evidence, and excludes them from history/provider traces.
|
|
176
|
+
Approval-wait continuation snapshots may persist request-owned image bytes; the
|
|
177
|
+
owner's checks therefore precede media admission, not merely model projection.
|
|
178
|
+
Buffers and registered resources are disposed at request end or abort. A non-vision
|
|
100
179
|
model receives an explicit image-input limitation and can still use available text
|
|
101
180
|
observations. Companion frames are erased after transfer, replacement or close;
|
|
102
181
|
abandoned native sessions have a bounded idle expiry and close on disconnection.
|
|
@@ -108,6 +187,3 @@ source compilation where available. They prove transport, identity, cancellation
|
|
|
108
187
|
image lifetime and projection invariants. Interactive acceptance on each actual OS,
|
|
109
188
|
permission configuration, compositor and provider remains a distinct live check;
|
|
110
189
|
unit checks alone do not establish all native integrations work on a user's machine.
|
|
111
|
-
The Windows helper has been compiled on Windows; its interactive behavior has not
|
|
112
|
-
been exercised. macOS native compilation and interactive Linux/macOS checks remain
|
|
113
|
-
unverified in this Windows/WSL development environment.
|
|
@@ -4,9 +4,18 @@
|
|
|
4
4
|
"version": "1.0.0",
|
|
5
5
|
"description": "System commands, applications and structured observation/control of existing user desktops across native and locally connected OS targets.",
|
|
6
6
|
"extensions": {
|
|
7
|
+
"ai.abot.compatibility": {
|
|
8
|
+
"version": 1,
|
|
9
|
+
"runtimePlatforms": ["linux", "darwin", "win32"]
|
|
10
|
+
},
|
|
7
11
|
"ai.abot.runtime": {
|
|
8
12
|
"version": 1,
|
|
9
13
|
"entrypoint": "./src/index.cjs",
|
|
14
|
+
"settings": {
|
|
15
|
+
"defaults": {
|
|
16
|
+
"outputRetentionMs": 604800000
|
|
17
|
+
}
|
|
18
|
+
},
|
|
10
19
|
"catalogGroups": [
|
|
11
20
|
"system"
|
|
12
21
|
],
|
|
@@ -76,7 +85,7 @@
|
|
|
76
85
|
],
|
|
77
86
|
"operations": {
|
|
78
87
|
"run_system_command": {
|
|
79
|
-
"summary": "Run a shell command
|
|
88
|
+
"summary": "Run a shell command in the selected OS. cwd must be absolute; native Windows also accepts agent-work-relative paths and workspace/. The entire command is limited to 4096 characters; use file payload tools for larger bodies. Native accessibility APIs can read exposed app/browser text, including signed-in pages; verify the document and text. Capability references are not commands; exit zero is not effect evidence.",
|
|
80
89
|
"input": {
|
|
81
90
|
"type": "object",
|
|
82
91
|
"additionalProperties": false,
|
|
@@ -16,7 +16,7 @@ When this catalog is insufficient, continue bounded, task-relevant inspection wi
|
|
|
16
16
|
|
|
17
17
|
## Execute the user's task
|
|
18
18
|
|
|
19
|
-
system_command executes general system commands using Bash for Linux/macOS or PowerShell for Windows. Supply an absolute cwd in the target OS namespace; it may be outside the project. Commands can inspect or manage applications, processes, services, installations, settings, network and files for the user's task. They run with actual host identity; elevated=true requests the supported native privilege path. Linux needs existing noninteractive sudo authorization, macOS uses its native administrator dialog, and Windows needs an authorized elevated host. Never fabricate credentials or bypass an OS authorization prompt.
|
|
19
|
+
system_command executes general system commands using Bash for Linux/macOS or PowerShell for Windows. Supply an absolute cwd in the target OS namespace; it may be outside the project. On native Windows only, cwd also accepts the runtime filesystem namespace: `.` and relative paths start at the request agent-work root, and `workspace/...` selects the configured workspace. The adapter resolves that directory before approval. WSL interop and Companion still require an absolute target-OS path; no cross-OS path mapping is implied. Commands can inspect or manage applications, processes, services, installations, settings, network and files for the user's task. They run with actual host identity; elevated=true requests the supported native privilege path. Linux needs existing noninteractive sudo authorization, macOS uses its native administrator dialog, and Windows needs an authorized elevated host. Never fabricate credentials or bypass an OS authorization prompt.
|
|
20
20
|
|
|
21
21
|
Use system_launch with the exact application identity returned by the target catalog; it revalidates that identity before dispatch. A catalog identity is not a raw executable path. There is no brand-specific application allowlist. Documented native invocations and further application control use system_command. Linux and Windows catalog identities do not define generic raw arguments; use the application's actual command interface when arguments are needed.
|
|
22
22
|
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { win32 } from "node:path";
|
|
2
|
+
import type {
|
|
3
|
+
RuntimeToolPathResolver,
|
|
4
|
+
ToolCall,
|
|
5
|
+
ToolCallAdapter,
|
|
6
|
+
} from "../../../src/plugin-sdk/index.js";
|
|
7
|
+
import type { SystemTargetSnapshot } from "./request-target-snapshot.js";
|
|
8
|
+
|
|
9
|
+
/** Resolve before exact-action approval; execution consumes the captured absolute cwd. */
|
|
10
|
+
export function createSystemCommandPathAdapter(
|
|
11
|
+
adapter: ToolCallAdapter | undefined,
|
|
12
|
+
snapshot: SystemTargetSnapshot,
|
|
13
|
+
resolver: RuntimeToolPathResolver | undefined,
|
|
14
|
+
): ToolCallAdapter | undefined {
|
|
15
|
+
if (!resolver) return adapter;
|
|
16
|
+
return {
|
|
17
|
+
...adapter,
|
|
18
|
+
normalizeCall(input) {
|
|
19
|
+
const call = adapter?.normalizeCall?.(input) ?? input;
|
|
20
|
+
if (!hasNativeWindowsRelativeDirectory(call, snapshot)) return call;
|
|
21
|
+
const directory = resolver.resolve(call.params.cwd, {
|
|
22
|
+
requirePath: true,
|
|
23
|
+
allowedLocations: ["agent_work", "workspace"],
|
|
24
|
+
});
|
|
25
|
+
return {
|
|
26
|
+
...call,
|
|
27
|
+
params: { ...call.params, cwd: directory.absolutePath },
|
|
28
|
+
};
|
|
29
|
+
},
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
function hasNativeWindowsRelativeDirectory(
|
|
34
|
+
call: ToolCall,
|
|
35
|
+
snapshot: SystemTargetSnapshot,
|
|
36
|
+
): boolean {
|
|
37
|
+
if (call.tool !== "system_command") return false;
|
|
38
|
+
if (call.params.target !== "windows") return false;
|
|
39
|
+
if (typeof call.params.cwd !== "string") return false;
|
|
40
|
+
if (win32.isAbsolute(call.params.cwd.trim())) return false;
|
|
41
|
+
const route = snapshot.find((entry) => {
|
|
42
|
+
if (entry.kind !== "native") return false;
|
|
43
|
+
if (entry.target.id !== "windows") return false;
|
|
44
|
+
return entry.target.transport === "native";
|
|
45
|
+
});
|
|
46
|
+
return route !== undefined;
|
|
47
|
+
}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { createHash } from "node:crypto";
|
|
2
|
+
import { StringDecoder } from "node:string_decoder";
|
|
3
|
+
import { deliverPluginTextResult, failureResult, type ToolExecutionContext,
|
|
4
|
+
type ToolImplementationOutput } from "../../../src/plugin-sdk/index.js";
|
|
5
|
+
import { SYSTEM_OUTPUT_CAPABILITY, SYSTEM_OUTPUT_CHUNK_BYTES, readSystemOutputTransfer,
|
|
6
|
+
type ComputerAccessConnection, type HostOperation } from "../../../src/plugin-sdk/computer-access.js";
|
|
7
|
+
import type { SystemRequestRoute } from "./request-target-snapshot.js";
|
|
8
|
+
|
|
9
|
+
type CompanionRoute = Extract<SystemRequestRoute, { kind: "companion" }>;
|
|
10
|
+
type Transfer = ReturnType<typeof readSystemOutputTransfer>;
|
|
11
|
+
type HostCall = (operation: HostOperation, params: Record<string, unknown>, signal?: AbortSignal) => Promise<ToolImplementationOutput>;
|
|
12
|
+
|
|
13
|
+
export function supportsCompanionCommandOutput(route: CompanionRoute): boolean {
|
|
14
|
+
return route.capabilities?.includes(SYSTEM_OUTPUT_CAPABILITY) === true;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
/** Transfer is private adapter IO; the model receives one settled tool result. */
|
|
18
|
+
export async function executeCompanionCommand(input: {
|
|
19
|
+
rootDir: string;
|
|
20
|
+
route: CompanionRoute;
|
|
21
|
+
connection: ComputerAccessConnection;
|
|
22
|
+
params: Record<string, unknown>;
|
|
23
|
+
outputRetentionMs?: number;
|
|
24
|
+
context?: ToolExecutionContext;
|
|
25
|
+
}): Promise<ToolImplementationOutput> {
|
|
26
|
+
const { route, context } = input;
|
|
27
|
+
const call: HostCall = (operation, params, signal) => input.connection.executeHostOperation(input.rootDir, {
|
|
28
|
+
hostId: route.hostId, connectionId: route.connectionId, operation,
|
|
29
|
+
params: { ...params, target: route.target }, ...(signal ? { abortSignal: signal } : {}),
|
|
30
|
+
});
|
|
31
|
+
const receipt = await call("system_command_capture", {
|
|
32
|
+
...input.params, ...(input.outputRetentionMs !== undefined ? { outputRetentionMs: input.outputRetentionMs } : {}),
|
|
33
|
+
}, context?.abortSignal);
|
|
34
|
+
if (!receipt.data?.outputTransfer && !receipt.ok) return receipt;
|
|
35
|
+
let transfer: Transfer | undefined;
|
|
36
|
+
try {
|
|
37
|
+
transfer = readSystemOutputTransfer(receipt.data?.outputTransfer);
|
|
38
|
+
const stdout = await readStream(call, transfer, "stdout", context?.abortSignal);
|
|
39
|
+
const stderr = await readStream(call, transfer, "stderr", context?.abortSignal);
|
|
40
|
+
const { outputTransfer: _transfer, ...data } = receipt.data ?? {};
|
|
41
|
+
const delivered = deliverPluginTextResult({ ...receipt, stdout, stderr: stderr || receipt.stderr,
|
|
42
|
+
data: { ...data, outputDelivery: "complete", summaryOmittedChars: { stdout: stdout.length, stderr: stderr.length } },
|
|
43
|
+
}, ["stdout", "stderr"], context?.resultBudget);
|
|
44
|
+
if (delivered.errorCode === "plugin_result_too_large") return transferFailure(receipt, context);
|
|
45
|
+
return delivered;
|
|
46
|
+
} catch {
|
|
47
|
+
return transferFailure(receipt, context);
|
|
48
|
+
} finally {
|
|
49
|
+
if (transfer) await call("system_command_output_close", { captureId: transfer.id }, AbortSignal.timeout(3_000)).catch(() => undefined);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
async function readStream(call: HostCall, transfer: Transfer, stream: "stdout" | "stderr", signal?: AbortSignal): Promise<string> {
|
|
54
|
+
const size = stream === "stdout" ? transfer.stdoutBytes : transfer.stderrBytes;
|
|
55
|
+
const digest = stream === "stdout" ? transfer.stdoutSha256 : transfer.stderrSha256;
|
|
56
|
+
const hash = createHash("sha256");
|
|
57
|
+
const decoder = new StringDecoder("utf8");
|
|
58
|
+
let text = "";
|
|
59
|
+
for (let offset = 0; offset < size; offset += SYSTEM_OUTPUT_CHUNK_BYTES) {
|
|
60
|
+
signal?.throwIfAborted();
|
|
61
|
+
const part = await call("system_command_output", { captureId: transfer.id, stream, offset }, signal);
|
|
62
|
+
if (!part.ok) throw new Error("system_output_transfer_failed");
|
|
63
|
+
const data = part.data;
|
|
64
|
+
if (data?.captureId !== transfer.id || data.stream !== stream || data.offset !== offset) throw new Error("system_output_chunk_binding_invalid");
|
|
65
|
+
if (typeof data.bytes !== "string" || data.bytes.length > SYSTEM_OUTPUT_CHUNK_BYTES * 2) throw new Error("system_output_chunk_invalid");
|
|
66
|
+
const bytes = Buffer.from(data.bytes, "base64");
|
|
67
|
+
if (bytes.toString("base64") !== data.bytes) throw new Error("system_output_chunk_invalid");
|
|
68
|
+
if (bytes.length !== Math.min(SYSTEM_OUTPUT_CHUNK_BYTES, size - offset)) throw new Error("system_output_chunk_size_invalid");
|
|
69
|
+
hash.update(bytes);
|
|
70
|
+
text += decoder.write(bytes);
|
|
71
|
+
}
|
|
72
|
+
if (hash.digest("hex") !== digest) throw new Error("system_output_digest_invalid");
|
|
73
|
+
return text + decoder.end();
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
function transferFailure(receipt: ToolImplementationOutput, context?: ToolExecutionContext): ToolImplementationOutput {
|
|
77
|
+
return failureResult({ errorCode: "system_output_delivery_pending",
|
|
78
|
+
message: "The command settled, but its retained output could not be delivered completely. Process receipt is preserved; the command was not replayed.",
|
|
79
|
+
...(receipt.exitCode !== undefined ? { exitCode: receipt.exitCode } : {}),
|
|
80
|
+
data: { ...receipt.data, outputDelivery: "pending", commandOk: receipt.ok, commandErrorCode: receipt.errorCode ?? null },
|
|
81
|
+
}, context?.resultBudget);
|
|
82
|
+
}
|
|
@@ -5,10 +5,14 @@ import {
|
|
|
5
5
|
type ToolImplementation,
|
|
6
6
|
} from "../../../../src/plugin-sdk/index.js";
|
|
7
7
|
import { SystemOperationError } from "../../../../src/plugin-sdk/computer-access.js";
|
|
8
|
-
import {
|
|
8
|
+
import {
|
|
9
|
+
computerFields,
|
|
10
|
+
readPhysicalRectangle,
|
|
11
|
+
} from "../../../../src/plugin-sdk/computer-access.js";
|
|
9
12
|
import { readPublicComputerAction } from "./public-action.js";
|
|
10
13
|
import { withDesktopQueue } from "../../../../src/plugin-sdk/computer-access.js";
|
|
11
14
|
import { serializeComputerDesktops } from "./observation-output.js";
|
|
15
|
+
import { protectObservedError } from "../security/observed-error.js";
|
|
12
16
|
import {
|
|
13
17
|
describeDesktop,
|
|
14
18
|
projectComputerResult,
|
|
@@ -53,10 +57,10 @@ export function createComputerHandlers(
|
|
|
53
57
|
error instanceof SystemOperationError
|
|
54
58
|
? error.code
|
|
55
59
|
: "computer_operation_interrupted",
|
|
56
|
-
message:
|
|
57
|
-
error
|
|
58
|
-
|
|
59
|
-
|
|
60
|
+
message: protectObservedError(
|
|
61
|
+
error,
|
|
62
|
+
"Computer operation interrupted; effects may be partial. Observe before another action.",
|
|
63
|
+
),
|
|
60
64
|
});
|
|
61
65
|
}
|
|
62
66
|
};
|
|
@@ -79,10 +83,10 @@ export function createComputerHandlers(
|
|
|
79
83
|
return {
|
|
80
84
|
...computerRouteLabel(entry),
|
|
81
85
|
available: false,
|
|
82
|
-
reason:
|
|
83
|
-
error
|
|
84
|
-
|
|
85
|
-
|
|
86
|
+
reason: protectObservedError(
|
|
87
|
+
error,
|
|
88
|
+
"Desktop inspection failed.",
|
|
89
|
+
),
|
|
86
90
|
};
|
|
87
91
|
}
|
|
88
92
|
},
|
|
@@ -10,6 +10,7 @@ import {
|
|
|
10
10
|
type RequestComputer,
|
|
11
11
|
} from "./request-computers.js";
|
|
12
12
|
import { serializeComputerObservation } from "./observation-output.js";
|
|
13
|
+
import { protectObservedError } from "../security/observed-error.js";
|
|
13
14
|
|
|
14
15
|
export function describeDesktop(
|
|
15
16
|
entry: RequestComputer,
|
|
@@ -45,8 +46,7 @@ export async function projectComputerResult(
|
|
|
45
46
|
);
|
|
46
47
|
media.push(image);
|
|
47
48
|
} catch (error) {
|
|
48
|
-
imageFailure =
|
|
49
|
-
error instanceof Error ? error.message : "Image admission failed.";
|
|
49
|
+
imageFailure = protectObservedError(error, "Image admission failed.");
|
|
50
50
|
} finally {
|
|
51
51
|
result.image.bytes.fill(0);
|
|
52
52
|
}
|
|
@@ -57,9 +57,14 @@ export async function projectComputerResult(
|
|
|
57
57
|
description.observation_ref = undefined;
|
|
58
58
|
}
|
|
59
59
|
const hasPartialInputDispatch = result.dispatch?.status === "partial";
|
|
60
|
-
const operationError =
|
|
61
|
-
|
|
62
|
-
|
|
60
|
+
const operationError =
|
|
61
|
+
result.error ??
|
|
62
|
+
(hasPartialInputDispatch
|
|
63
|
+
? {
|
|
64
|
+
code: "computer_input_partial",
|
|
65
|
+
message: "Only part of the input was accepted.",
|
|
66
|
+
}
|
|
67
|
+
: undefined);
|
|
63
68
|
const data = {
|
|
64
69
|
desktop_ref: entry.ref,
|
|
65
70
|
...(description.observation_ref
|
|
@@ -13,8 +13,12 @@ import { SystemOperationError } from "../../../../src/plugin-sdk/computer-access
|
|
|
13
13
|
import type { NativeComputerBackend } from "../../../../src/plugin-sdk/computer-access.js";
|
|
14
14
|
import { createNativeComputerBackend } from "../../../../src/plugin-sdk/computer-access.js";
|
|
15
15
|
import { createCompanionComputerBackend } from "../../../../src/plugin-sdk/computer-access.js";
|
|
16
|
-
import {
|
|
16
|
+
import {
|
|
17
|
+
COMPUTER_CAPABILITY,
|
|
18
|
+
HOST_SECRET_PROTECTION_CAPABILITY,
|
|
19
|
+
} from "../../../../src/plugin-sdk/computer-access.js";
|
|
17
20
|
import { DesktopBindings } from "./desktop-bindings.js";
|
|
21
|
+
import { protectNativeDesktopBackend } from "../security/desktop-result.js";
|
|
18
22
|
|
|
19
23
|
export type RequestComputer = {
|
|
20
24
|
ref: string;
|
|
@@ -80,7 +84,7 @@ export class RequestComputers {
|
|
|
80
84
|
if (entry.backend) return entry.backend;
|
|
81
85
|
entry.backend =
|
|
82
86
|
entry.route.kind === "native"
|
|
83
|
-
? this.nativeFactory(entry.route.target)
|
|
87
|
+
? protectNativeDesktopBackend(this.nativeFactory(entry.route.target))
|
|
84
88
|
: createCompanionComputerBackend(
|
|
85
89
|
this.rootDir,
|
|
86
90
|
entry.route,
|
|
@@ -110,7 +114,10 @@ export function computerQueueIdentity(entry: RequestComputer): string {
|
|
|
110
114
|
}
|
|
111
115
|
function supportsComputerRoute(route: SystemRequestRoute): boolean {
|
|
112
116
|
if (route.kind === "native") return true;
|
|
113
|
-
return
|
|
117
|
+
return (
|
|
118
|
+
route.capabilities?.includes(COMPUTER_CAPABILITY) === true &&
|
|
119
|
+
route.capabilities.includes(HOST_SECRET_PROTECTION_CAPABILITY)
|
|
120
|
+
);
|
|
114
121
|
}
|
|
115
122
|
|
|
116
123
|
function restoreComputers(
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import {
|
|
2
|
-
failureResult,
|
|
3
2
|
type ToolImplementation,
|
|
4
3
|
type ToolRequestPreparationContext,
|
|
5
4
|
type ToolModuleDeclaration,
|
|
@@ -12,17 +11,14 @@ import {
|
|
|
12
11
|
import type { SystemHostConnection } from "../host-dispatch.js";
|
|
13
12
|
import { createComputerHandlers, COMPUTER_TOOLS } from "./handlers.js";
|
|
14
13
|
import { RequestComputers } from "./request-computers.js";
|
|
14
|
+
import { supportsRuntimeDesktopTools, unboundComputerFailure } from "./runtime-platform.js";
|
|
15
15
|
|
|
16
16
|
/** Load-time placeholders cannot allocate a desktop outside request ownership. */
|
|
17
17
|
export function unboundComputerHandlers(): Record<string, ToolImplementation> {
|
|
18
18
|
return Object.fromEntries(
|
|
19
19
|
COMPUTER_TOOLS.map((name) => [
|
|
20
20
|
name,
|
|
21
|
-
async () =>
|
|
22
|
-
failureResult({
|
|
23
|
-
errorCode: "computer_request_binding_required",
|
|
24
|
-
message: "Computer control requires a prepared request.",
|
|
25
|
-
}),
|
|
21
|
+
async () => unboundComputerFailure(),
|
|
26
22
|
]),
|
|
27
23
|
);
|
|
28
24
|
}
|
|
@@ -35,6 +31,7 @@ export function prepareComputerModules(
|
|
|
35
31
|
preparation?: ToolRequestPreparationContext,
|
|
36
32
|
): readonly ToolModuleDeclaration[] {
|
|
37
33
|
if (modules.length === 0) return [];
|
|
34
|
+
if (!supportsRuntimeDesktopTools()) return [];
|
|
38
35
|
const computers = new RequestComputers(
|
|
39
36
|
rootDir,
|
|
40
37
|
routes,
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { failureResult } from "../../../../src/plugin-sdk/index.js";
|
|
2
|
+
|
|
3
|
+
/** Windows desktop images and input await the separate OCR rollout. */
|
|
4
|
+
export function supportsRuntimeDesktopTools(platform: NodeJS.Platform = process.platform): boolean {
|
|
5
|
+
return platform !== "win32";
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
export function unboundComputerFailure() {
|
|
9
|
+
if (!supportsRuntimeDesktopTools())
|
|
10
|
+
return failureResult({
|
|
11
|
+
errorCode: "computer_runtime_platform_unsupported",
|
|
12
|
+
message: "Desktop observation and control are unavailable on Windows Runtime. System commands and applications remain available.",
|
|
13
|
+
});
|
|
14
|
+
return failureResult({
|
|
15
|
+
errorCode: "computer_request_binding_required",
|
|
16
|
+
message: "Computer control requires a prepared request.",
|
|
17
|
+
});
|
|
18
|
+
}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { executeCompanionCommand, supportsCompanionCommandOutput } from "./companion-command-output.js";
|
|
2
|
+
import { redactSecretText } from "./security/secret-text.js";
|
|
1
3
|
import type { ComputerAccessConnection } from "../../../src/plugin-sdk/computer-access.js";
|
|
2
4
|
import {
|
|
3
5
|
failureResult,
|
|
@@ -10,6 +12,7 @@ import {
|
|
|
10
12
|
} from "../../../src/plugin-sdk/computer-access.js";
|
|
11
13
|
import {
|
|
12
14
|
HOST_OPERATIONS,
|
|
15
|
+
HOST_SECRET_PROTECTION_CAPABILITY,
|
|
13
16
|
type HostOperation,
|
|
14
17
|
} from "../../../src/plugin-sdk/computer-access.js";
|
|
15
18
|
import { SystemOperationError } from "../../../src/plugin-sdk/computer-access.js";
|
|
@@ -32,6 +35,7 @@ export function createBoundSystemHandlers(
|
|
|
32
35
|
snapshot: SystemTargetSnapshot;
|
|
33
36
|
nativeHandlers: Readonly<Record<string, ToolImplementation>>;
|
|
34
37
|
connection: SystemHostConnection;
|
|
38
|
+
outputRetentionMs?: number;
|
|
35
39
|
}>,
|
|
36
40
|
): Record<string, ToolImplementation> {
|
|
37
41
|
return Object.fromEntries(
|
|
@@ -67,6 +71,18 @@ function boundOperation(
|
|
|
67
71
|
const route = requireSystemRequestRoute(input.snapshot, params.target);
|
|
68
72
|
if (route.kind === "native")
|
|
69
73
|
return await input.nativeHandlers[operation]!(params, context);
|
|
74
|
+
if (!supportsProtectedCompanionResults(route.capabilities))
|
|
75
|
+
return failureResult({
|
|
76
|
+
errorCode: "system_companion_protection_upgrade_required",
|
|
77
|
+
message: "Update Companion to enable protected system results. The operation was not dispatched.",
|
|
78
|
+
});
|
|
79
|
+
if (operation === "system_command" && !supportsCompanionCommandOutput(route))
|
|
80
|
+
return failureResult({
|
|
81
|
+
errorCode: "system_companion_protection_upgrade_required",
|
|
82
|
+
message: "Update Companion to enable protected complete command output. The command was not dispatched.",
|
|
83
|
+
});
|
|
84
|
+
if (operation === "system_command")
|
|
85
|
+
return await executeCompanionCommand({ ...input, route, params, context });
|
|
70
86
|
return await input.connection.executeHostOperation(input.rootDir, {
|
|
71
87
|
hostId: route.hostId,
|
|
72
88
|
connectionId: route.connectionId,
|
|
@@ -76,7 +92,7 @@ function boundOperation(
|
|
|
76
92
|
});
|
|
77
93
|
} catch (error) {
|
|
78
94
|
if (error instanceof SystemOperationError)
|
|
79
|
-
return failureResult({ errorCode: error.code, message: error.message });
|
|
95
|
+
return failureResult({ errorCode: error.code, message: redactSecretText(error.message) });
|
|
80
96
|
return failureResult({
|
|
81
97
|
errorCode: "system_execution_route_failed",
|
|
82
98
|
message:
|
|
@@ -86,6 +102,10 @@ function boundOperation(
|
|
|
86
102
|
};
|
|
87
103
|
}
|
|
88
104
|
|
|
105
|
+
function supportsProtectedCompanionResults(capabilities?: readonly string[]): boolean {
|
|
106
|
+
return capabilities?.includes(HOST_SECRET_PROTECTION_CAPABILITY) === true;
|
|
107
|
+
}
|
|
108
|
+
|
|
89
109
|
function hasConnectionControl(params: Record<string, unknown>): boolean {
|
|
90
110
|
if (Object.hasOwn(params, "host_id")) return true;
|
|
91
111
|
if (Object.hasOwn(params, "hostId")) return true;
|
|
@@ -1,10 +1,18 @@
|
|
|
1
1
|
import { defineRuntimePlugin } from "../../../src/plugin-sdk/index.js";
|
|
2
|
-
import { createSystemHandlers } from "../../../src/plugin-sdk/computer-access.js";
|
|
2
|
+
import { createSystemHandlers, observeSystemTargets } from "../../../src/plugin-sdk/computer-access.js";
|
|
3
3
|
import { prepareSystemRequestModules } from "./request-system-modules.js";
|
|
4
|
+
import { createLocalSystemCommandOutput, systemCommandOutputRetentionMs } from "./local-command-output.js";
|
|
4
5
|
import { unboundComputerHandlers } from "./computer/request-modules.js";
|
|
6
|
+
import { systemResultProtection } from "./security/system-results.js";
|
|
5
7
|
|
|
6
|
-
export default defineRuntimePlugin((
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
8
|
+
export default defineRuntimePlugin((context) => {
|
|
9
|
+
const output = createLocalSystemCommandOutput(context);
|
|
10
|
+
return {
|
|
11
|
+
handlers: { ...createSystemHandlers(undefined, undefined, output, systemResultProtection), ...unboundComputerHandlers() },
|
|
12
|
+
prepareRequest: (modules, preparation) => prepareSystemRequestModules(context.rootDir, modules, {
|
|
13
|
+
outputRetentionMs: systemCommandOutputRetentionMs(context),
|
|
14
|
+
observeTargets: async () => systemResultProtection.protectTargets(await observeSystemTargets()),
|
|
15
|
+
createNativeHandlers: (resolve) => createSystemHandlers(undefined, resolve, output, systemResultProtection),
|
|
16
|
+
}, preparation),
|
|
17
|
+
};
|
|
18
|
+
});
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { scheduleSystemOutputCleanup } from "../../../src/plugin-sdk/computer-access.js";
|
|
2
|
+
import { ensureWindowsOutputDirectory } from "./security/windows-output-directory.js";
|
|
3
|
+
|
|
4
|
+
/** Retention may traverse only a verified Windows output root, including at plugin load. */
|
|
5
|
+
export function scheduleLocalSystemOutputCleanup(root: string, retentionMs: number): Promise<void> {
|
|
6
|
+
if (process.platform !== "win32") {
|
|
7
|
+
scheduleSystemOutputCleanup(root, retentionMs);
|
|
8
|
+
return Promise.resolve();
|
|
9
|
+
}
|
|
10
|
+
return ensureWindowsOutputDirectory(root).then(
|
|
11
|
+
() => scheduleSystemOutputCleanup(root, retentionMs),
|
|
12
|
+
() => process.emitWarning("SYSTEM output cleanup skipped because private storage could not be verified.", {
|
|
13
|
+
code: "SYSTEM_OUTPUT_PRIVATE_STORAGE_UNAVAILABLE",
|
|
14
|
+
}),
|
|
15
|
+
);
|
|
16
|
+
}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { join } from "node:path";
|
|
2
|
+
import { deliverPluginTextResult, failureResult, readBoundedInteger, type RuntimePluginLoadContext,
|
|
3
|
+
type ToolExecutionContext, type ToolImplementationOutput } from "../../../src/plugin-sdk/index.js";
|
|
4
|
+
import { buildSystemProcessResult, runSystemProcess, type SystemCommandOutputFactory,
|
|
5
|
+
type SystemProcessResult, type SystemTarget } from "../../../src/plugin-sdk/computer-access.js";
|
|
6
|
+
import { createSystemOutputCapture, type SystemOutputReceipt } from "../../../src/plugin-sdk/computer-access.js";
|
|
7
|
+
import { DEFAULT_SYSTEM_OUTPUT_RETENTION_MS } from "../../../src/plugin-sdk/computer-access.js";
|
|
8
|
+
import { redactSecretText } from "./security/secret-text.js";
|
|
9
|
+
import { ensureWindowsOutputDirectory } from "./security/windows-output-directory.js";
|
|
10
|
+
import { scheduleLocalSystemOutputCleanup } from "./local-command-output-retention.js";
|
|
11
|
+
|
|
12
|
+
type Capture = Awaited<ReturnType<typeof createSystemOutputCapture>>;
|
|
13
|
+
const CONTEXT_STREAMS = Object.freeze(["stdout", "stderr"] as const);
|
|
14
|
+
|
|
15
|
+
export function createLocalSystemCommandOutput(plugin: RuntimePluginLoadContext): SystemCommandOutputFactory {
|
|
16
|
+
const root = join(plugin.stateDir, "command-output");
|
|
17
|
+
const retentionMs = systemCommandOutputRetentionMs(plugin);
|
|
18
|
+
const initialization = scheduleLocalSystemOutputCleanup(root, retentionMs);
|
|
19
|
+
return (context) => {
|
|
20
|
+
let captured: Capture | undefined;
|
|
21
|
+
return {
|
|
22
|
+
async run(input) {
|
|
23
|
+
if (input.abortSignal?.aborted) return runSystemProcess(input);
|
|
24
|
+
await initialization;
|
|
25
|
+
await ensureWindowsOutputDirectory(root);
|
|
26
|
+
captured = await createSystemOutputCapture(root, retentionMs, redactSecretText);
|
|
27
|
+
let result: SystemProcessResult;
|
|
28
|
+
try { result = await runSystemProcess(input, captured.capture); }
|
|
29
|
+
catch (error) { await captured.finish(); throw error; }
|
|
30
|
+
const streams = await captured.finish(result);
|
|
31
|
+
return { ...captured.processResult!, stdout: streams.stdout, stderr: streams.stderr,
|
|
32
|
+
outputTruncated: Boolean(captured.failure) };
|
|
33
|
+
},
|
|
34
|
+
async present(target, result) {
|
|
35
|
+
if (captured?.failure) return outputFailure(target, result, context, captured.receipt, captured.failure, captured.failureKind);
|
|
36
|
+
const receipt = buildSystemProcessResult(target, result, "command_process_completion");
|
|
37
|
+
const delivered = deliverPluginTextResult({ ...receipt,
|
|
38
|
+
data: { ...receipt.data, ...(captured?.receipt ? { outputCapture: captured.receipt } : {}) } }, CONTEXT_STREAMS, context?.resultBudget);
|
|
39
|
+
if (delivered.errorCode === "plugin_result_too_large")
|
|
40
|
+
return outputFailure(target, result, context, captured?.receipt);
|
|
41
|
+
return delivered;
|
|
42
|
+
},
|
|
43
|
+
};
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
function outputFailure(target: SystemTarget, result: SystemProcessResult, context?: ToolExecutionContext,
|
|
48
|
+
capture?: SystemOutputReceipt, captureFailure?: string, failureKind?: "security" | "storage"): ToolImplementationOutput {
|
|
49
|
+
const failureCode = failureKind === "security" ? "system_output_protection_failed" : "system_output_storage_failed";
|
|
50
|
+
return failureResult({
|
|
51
|
+
errorCode: captureFailure ? failureCode : "system_output_delivery_pending",
|
|
52
|
+
message: "The command was dispatched. Its output could not be delivered completely; do not repeat the command just to retrieve output. Inspect the process receipt and retained capture.",
|
|
53
|
+
...(result.exitCode !== null ? { exitCode: result.exitCode } : {}),
|
|
54
|
+
data: { target: target.id, transport: target.transport, processStatus: result.status,
|
|
55
|
+
spawnedProcess: result.spawnedProcess ?? null, exitCode: result.exitCode,
|
|
56
|
+
outputCapture: capture ?? null,
|
|
57
|
+
...(captureFailure && failureKind === "security" ? { securityFailure: captureFailure } : {}),
|
|
58
|
+
...(captureFailure && failureKind !== "security" ? { storageFailure: captureFailure } : {}),
|
|
59
|
+
outputDelivery: "pending", evidenceScope: "command_process_completion", independentOutcomeCheck: "not_performed",
|
|
60
|
+
observationMeta: { kind: "volatile_external", carryPolicy: "never" } },
|
|
61
|
+
}, context?.resultBudget);
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
export function systemCommandOutputRetentionMs(plugin: RuntimePluginLoadContext): number {
|
|
65
|
+
return readBoundedInteger(plugin.config?.outputRetentionMs, {
|
|
66
|
+
name: "outputRetentionMs", defaultValue: DEFAULT_SYSTEM_OUTPUT_RETENTION_MS,
|
|
67
|
+
minimum: 1, maximum: Number.MAX_SAFE_INTEGER,
|
|
68
|
+
});
|
|
69
|
+
}
|