@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
|
@@ -266,54 +266,37 @@ function canHandOffContextText(original, assessed, budget) {
|
|
|
266
266
|
var TOOL_IMAGE_MAX_BYTES = 10 * 1024 * 1024;
|
|
267
267
|
|
|
268
268
|
// plugins/exec/source/filesystem-observer.ts
|
|
269
|
+
var import_promises2 = require("node:fs/promises");
|
|
270
|
+
var import_node_path = require("node:path");
|
|
271
|
+
|
|
272
|
+
// plugins/exec/source/filesystem-file-observer.ts
|
|
269
273
|
var import_node_crypto = require("node:crypto");
|
|
270
274
|
var import_node_fs = require("node:fs");
|
|
271
275
|
var import_promises = require("node:fs/promises");
|
|
272
|
-
var import_node_path = require("node:path");
|
|
273
|
-
var SNAPSHOT_MAX_ENTRIES = 4096;
|
|
274
|
-
var SNAPSHOT_MAX_HASHED_BYTES = 16 * 1024 * 1024;
|
|
275
276
|
var SNAPSHOT_MAX_HASHED_FILE_BYTES = 2 * 1024 * 1024;
|
|
276
|
-
var DELTA_ACTION_LIMIT = 64;
|
|
277
|
-
var ACTION_TARGET_MAX_CHARS = 96;
|
|
278
277
|
function isMissingPathError(error) {
|
|
279
278
|
return error instanceof Error && "code" in error && (error.code === "ENOENT" || error.code === "ENOTDIR");
|
|
280
279
|
}
|
|
281
280
|
function hashBuffer(content) {
|
|
282
281
|
return (0, import_node_crypto.createHash)("sha256").update(content).digest("hex");
|
|
283
282
|
}
|
|
284
|
-
async function
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
if (!child) break;
|
|
300
|
-
if (children.length >= maxItems) {
|
|
301
|
-
complete = false;
|
|
302
|
-
break;
|
|
303
|
-
}
|
|
304
|
-
children.push(child);
|
|
305
|
-
}
|
|
306
|
-
} finally {
|
|
307
|
-
await directory.close().catch((error) => {
|
|
308
|
-
if (!(error instanceof Error) || !("code" in error) || error.code !== "ERR_DIR_CLOSED") {
|
|
309
|
-
throw error;
|
|
310
|
-
}
|
|
283
|
+
async function inspectExecRegularFile(absolutePath, remainingHashBytes) {
|
|
284
|
+
if (process.platform === "win32") {
|
|
285
|
+
const info = await (0, import_promises.lstat)(absolutePath).catch((error) => {
|
|
286
|
+
if (isMissingPathError(error)) return null;
|
|
287
|
+
throw error;
|
|
288
|
+
});
|
|
289
|
+
if (!info?.isFile()) return void 0;
|
|
290
|
+
return Object.freeze({
|
|
291
|
+
entry: Object.freeze({
|
|
292
|
+
kind: "file",
|
|
293
|
+
mode: info.mode,
|
|
294
|
+
size: info.size,
|
|
295
|
+
mtimeMs: info.mtimeMs
|
|
296
|
+
}),
|
|
297
|
+
hashedBytes: 0
|
|
311
298
|
});
|
|
312
299
|
}
|
|
313
|
-
children.sort((left, right) => left.name.localeCompare(right.name));
|
|
314
|
-
return Object.freeze({ children: Object.freeze(children), complete });
|
|
315
|
-
}
|
|
316
|
-
async function inspectRegularFile(absolutePath, remainingHashBytes) {
|
|
317
300
|
const noFollow = import_node_fs.constants.O_NOFOLLOW;
|
|
318
301
|
if (!Number.isInteger(noFollow)) return void 0;
|
|
319
302
|
let file;
|
|
@@ -359,11 +342,49 @@ async function inspectRegularFile(absolutePath, remainingHashBytes) {
|
|
|
359
342
|
await file.close();
|
|
360
343
|
}
|
|
361
344
|
}
|
|
345
|
+
|
|
346
|
+
// plugins/exec/source/filesystem-observer.ts
|
|
347
|
+
var SNAPSHOT_MAX_ENTRIES = 4096;
|
|
348
|
+
var SNAPSHOT_MAX_HASHED_BYTES = 16 * 1024 * 1024;
|
|
349
|
+
var DELTA_ACTION_LIMIT = 64;
|
|
350
|
+
var ACTION_TARGET_MAX_CHARS = 96;
|
|
351
|
+
async function readBoundedDirectory(absoluteDirectory, maxItems) {
|
|
352
|
+
let directory;
|
|
353
|
+
try {
|
|
354
|
+
directory = await (0, import_promises2.opendir)(absoluteDirectory);
|
|
355
|
+
} catch (error) {
|
|
356
|
+
if (isMissingPathError(error)) {
|
|
357
|
+
return Object.freeze({ children: Object.freeze([]), complete: true });
|
|
358
|
+
}
|
|
359
|
+
throw error;
|
|
360
|
+
}
|
|
361
|
+
const children = [];
|
|
362
|
+
let complete = true;
|
|
363
|
+
try {
|
|
364
|
+
while (true) {
|
|
365
|
+
const child = await directory.read();
|
|
366
|
+
if (!child) break;
|
|
367
|
+
if (children.length >= maxItems) {
|
|
368
|
+
complete = false;
|
|
369
|
+
break;
|
|
370
|
+
}
|
|
371
|
+
children.push(child);
|
|
372
|
+
}
|
|
373
|
+
} finally {
|
|
374
|
+
await directory.close().catch((error) => {
|
|
375
|
+
if (!(error instanceof Error) || !("code" in error) || error.code !== "ERR_DIR_CLOSED") {
|
|
376
|
+
throw error;
|
|
377
|
+
}
|
|
378
|
+
});
|
|
379
|
+
}
|
|
380
|
+
children.sort((left, right) => left.name.localeCompare(right.name));
|
|
381
|
+
return Object.freeze({ children: Object.freeze(children), complete });
|
|
382
|
+
}
|
|
362
383
|
async function captureExecFilesystemSnapshot(absoluteRoot, logicalRoot) {
|
|
363
384
|
const entries = /* @__PURE__ */ new Map();
|
|
364
385
|
let remainingHashBytes = SNAPSHOT_MAX_HASHED_BYTES;
|
|
365
386
|
let complete = true;
|
|
366
|
-
const rootInfo = await (0,
|
|
387
|
+
const rootInfo = await (0, import_promises2.lstat)(absoluteRoot).catch((error) => {
|
|
367
388
|
if (isMissingPathError(error)) return null;
|
|
368
389
|
throw error;
|
|
369
390
|
});
|
|
@@ -387,7 +408,7 @@ async function captureExecFilesystemSnapshot(absoluteRoot, logicalRoot) {
|
|
|
387
408
|
for (const child of directory.children) {
|
|
388
409
|
const relativePath = relativeDirectory ? (0, import_node_path.join)(relativeDirectory, child.name) : child.name;
|
|
389
410
|
const absolutePath = (0, import_node_path.join)(absoluteRoot, relativePath);
|
|
390
|
-
const info = await (0,
|
|
411
|
+
const info = await (0, import_promises2.lstat)(absolutePath).catch((error) => {
|
|
391
412
|
if (isMissingPathError(error)) return null;
|
|
392
413
|
throw error;
|
|
393
414
|
});
|
|
@@ -406,7 +427,7 @@ async function captureExecFilesystemSnapshot(absoluteRoot, logicalRoot) {
|
|
|
406
427
|
continue;
|
|
407
428
|
}
|
|
408
429
|
if (info.isSymbolicLink()) {
|
|
409
|
-
const linkTarget = await (0,
|
|
430
|
+
const linkTarget = await (0, import_promises2.readlink)(absolutePath).catch(() => void 0);
|
|
410
431
|
entries.set(
|
|
411
432
|
relativePath,
|
|
412
433
|
Object.freeze({
|
|
@@ -420,7 +441,7 @@ async function captureExecFilesystemSnapshot(absoluteRoot, logicalRoot) {
|
|
|
420
441
|
continue;
|
|
421
442
|
}
|
|
422
443
|
if (info.isFile()) {
|
|
423
|
-
const inspected = await
|
|
444
|
+
const inspected = await inspectExecRegularFile(
|
|
424
445
|
absolutePath,
|
|
425
446
|
remainingHashBytes
|
|
426
447
|
);
|
|
@@ -802,7 +823,7 @@ var ExecTerminalDelivery = class {
|
|
|
802
823
|
|
|
803
824
|
// plugins/exec/source/output-files.ts
|
|
804
825
|
var import_node_crypto3 = require("node:crypto");
|
|
805
|
-
var
|
|
826
|
+
var import_promises3 = require("node:fs/promises");
|
|
806
827
|
var import_node_path2 = require("node:path");
|
|
807
828
|
var ID = /^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$/;
|
|
808
829
|
function outputStorageRoot(stateDir) {
|
|
@@ -836,28 +857,32 @@ function outputFailure(code, cause) {
|
|
|
836
857
|
async function writeOutputMetadata(path, value) {
|
|
837
858
|
const temporary = `${path}.${(0, import_node_crypto3.randomUUID)()}.tmp`;
|
|
838
859
|
try {
|
|
839
|
-
const file = await (0,
|
|
860
|
+
const file = await (0, import_promises3.open)(temporary, "wx", 384);
|
|
840
861
|
try {
|
|
841
862
|
await file.writeFile(JSON.stringify(value));
|
|
842
863
|
await file.sync();
|
|
843
864
|
} finally {
|
|
844
865
|
await file.close();
|
|
845
866
|
}
|
|
846
|
-
await (0,
|
|
847
|
-
|
|
848
|
-
try {
|
|
849
|
-
await directory.sync();
|
|
850
|
-
} finally {
|
|
851
|
-
await directory.close();
|
|
852
|
-
}
|
|
867
|
+
await (0, import_promises3.rename)(temporary, path);
|
|
868
|
+
await syncOutputDirectoryEntry(path);
|
|
853
869
|
} catch (error) {
|
|
854
|
-
await (0,
|
|
870
|
+
await (0, import_promises3.rm)(temporary, { force: true }).catch(() => void 0);
|
|
855
871
|
throw outputFailure("metadata_write_failed", error);
|
|
856
872
|
}
|
|
857
873
|
}
|
|
874
|
+
async function syncOutputDirectoryEntry(path) {
|
|
875
|
+
if (process.platform === "win32") return;
|
|
876
|
+
const directory = await (0, import_promises3.open)((0, import_node_path2.dirname)(path), "r");
|
|
877
|
+
try {
|
|
878
|
+
await directory.sync();
|
|
879
|
+
} finally {
|
|
880
|
+
await directory.close();
|
|
881
|
+
}
|
|
882
|
+
}
|
|
858
883
|
async function prepareOutputOwnerDirectory(directory) {
|
|
859
884
|
try {
|
|
860
|
-
await (0,
|
|
885
|
+
await (0, import_promises3.mkdir)(directory, { recursive: true, mode: 448 });
|
|
861
886
|
} catch (error) {
|
|
862
887
|
throw outputFailure("write_failed", error);
|
|
863
888
|
}
|
|
@@ -865,7 +890,7 @@ async function prepareOutputOwnerDirectory(directory) {
|
|
|
865
890
|
async function readOutputOwner(directory) {
|
|
866
891
|
let value;
|
|
867
892
|
try {
|
|
868
|
-
value = JSON.parse(await (0,
|
|
893
|
+
value = JSON.parse(await (0, import_promises3.readFile)((0, import_node_path2.join)(directory, "owner.json"), "utf8"));
|
|
869
894
|
} catch (error) {
|
|
870
895
|
if (error.code === "ENOENT") return void 0;
|
|
871
896
|
throw outputFailure("owner_read_failed", error);
|
|
@@ -884,7 +909,7 @@ async function lookupOutputSnapshot(directory, ownerId, id) {
|
|
|
884
909
|
let value;
|
|
885
910
|
try {
|
|
886
911
|
value = JSON.parse(
|
|
887
|
-
await (0,
|
|
912
|
+
await (0, import_promises3.readFile)(outputSnapshotPath(directory, id), "utf8")
|
|
888
913
|
);
|
|
889
914
|
} catch (error) {
|
|
890
915
|
throw outputFailure("snapshot_unavailable", error);
|
|
@@ -1057,7 +1082,7 @@ function invalid() {
|
|
|
1057
1082
|
}
|
|
1058
1083
|
|
|
1059
1084
|
// plugins/exec/source/paths.ts
|
|
1060
|
-
var
|
|
1085
|
+
var import_promises4 = require("node:fs/promises");
|
|
1061
1086
|
var import_node_path3 = require("node:path");
|
|
1062
1087
|
function resolveContextualDirectory(pluginContext, executionContext, requestedPath) {
|
|
1063
1088
|
if ((0, import_node_path3.isAbsolute)(requestedPath)) return { absolutePath: requestedPath };
|
|
@@ -1084,11 +1109,12 @@ function logicalDirectory(absolutePath, base) {
|
|
|
1084
1109
|
return import_node_path3.posix.join(base.logicalPath, fromBase.split(import_node_path3.sep).join("/") || ".");
|
|
1085
1110
|
}
|
|
1086
1111
|
async function resolveExecWorkingDirectory(pluginContext, executionContext, rawPath) {
|
|
1087
|
-
const
|
|
1112
|
+
const inputPath = readRequiredString(rawPath, {
|
|
1088
1113
|
name: "cwd",
|
|
1089
1114
|
trim: false,
|
|
1090
1115
|
maxLength: 4096
|
|
1091
1116
|
});
|
|
1117
|
+
const requestedPath = process.platform === "win32" ? inputPath.replaceAll("\\", "/") : inputPath;
|
|
1092
1118
|
if (requestedPath.includes("\0")) {
|
|
1093
1119
|
throw new ExecPluginError(
|
|
1094
1120
|
"exec_cwd_invalid",
|
|
@@ -1103,8 +1129,8 @@ async function resolveExecWorkingDirectory(pluginContext, executionContext, rawP
|
|
|
1103
1129
|
let absolutePath;
|
|
1104
1130
|
let info;
|
|
1105
1131
|
try {
|
|
1106
|
-
absolutePath = await (0,
|
|
1107
|
-
info = await (0,
|
|
1132
|
+
absolutePath = await (0, import_promises4.realpath)(target.absolutePath);
|
|
1133
|
+
info = await (0, import_promises4.stat)(absolutePath);
|
|
1108
1134
|
} catch (error) {
|
|
1109
1135
|
if (error instanceof Error && "code" in error && error.code === "ENOENT") {
|
|
1110
1136
|
throw new ExecPluginError(
|
|
@@ -1130,10 +1156,9 @@ async function resolveExecWorkingDirectory(pluginContext, executionContext, rawP
|
|
|
1130
1156
|
}
|
|
1131
1157
|
|
|
1132
1158
|
// plugins/exec/source/process-manager.ts
|
|
1133
|
-
var import_node_child_process = require("node:child_process");
|
|
1134
1159
|
var import_node_crypto6 = require("node:crypto");
|
|
1135
1160
|
var import_node_os = require("node:os");
|
|
1136
|
-
var
|
|
1161
|
+
var import_node_path7 = require("node:path");
|
|
1137
1162
|
|
|
1138
1163
|
// plugins/exec/source/process-output.ts
|
|
1139
1164
|
function streamReceipt2(body) {
|
|
@@ -1270,7 +1295,7 @@ async function createExecProcessOutput(store, ownerId) {
|
|
|
1270
1295
|
}
|
|
1271
1296
|
|
|
1272
1297
|
// plugins/exec/source/output-store.ts
|
|
1273
|
-
var
|
|
1298
|
+
var import_promises10 = require("node:fs/promises");
|
|
1274
1299
|
var import_node_path5 = require("node:path");
|
|
1275
1300
|
|
|
1276
1301
|
// plugins/exec/source/output-contracts.ts
|
|
@@ -1279,7 +1304,7 @@ var EXEC_OUTPUT_IO_CHUNK_BYTES = 64 * 1024;
|
|
|
1279
1304
|
|
|
1280
1305
|
// plugins/exec/source/output-range-reader.ts
|
|
1281
1306
|
var import_node_crypto4 = require("node:crypto");
|
|
1282
|
-
var
|
|
1307
|
+
var import_promises5 = require("node:fs/promises");
|
|
1283
1308
|
function assertOutputRange(startByte, endByte, availableBytes) {
|
|
1284
1309
|
if (!Number.isSafeInteger(startByte) || startByte < 0)
|
|
1285
1310
|
throw outputFailure("range_invalid");
|
|
@@ -1296,7 +1321,7 @@ async function* readOutputFileRange(path, range) {
|
|
|
1296
1321
|
if (!Number.isSafeInteger(range.maxChunkBytes) || range.maxChunkBytes < 1 || range.maxChunkBytes > EXEC_OUTPUT_IO_CHUNK_BYTES)
|
|
1297
1322
|
throw outputFailure("chunk_size_invalid");
|
|
1298
1323
|
range.signal?.throwIfAborted();
|
|
1299
|
-
const handle = await (0,
|
|
1324
|
+
const handle = await (0, import_promises5.open)(path, "r").catch((error) => {
|
|
1300
1325
|
throw outputFailure("read_failed", error);
|
|
1301
1326
|
});
|
|
1302
1327
|
try {
|
|
@@ -1346,7 +1371,7 @@ async function assertOutputBodyHash(path, body, signal) {
|
|
|
1346
1371
|
}
|
|
1347
1372
|
|
|
1348
1373
|
// plugins/exec/source/output-maintenance.ts
|
|
1349
|
-
var
|
|
1374
|
+
var import_promises6 = require("node:fs/promises");
|
|
1350
1375
|
var MAX_CLEANUP_INTERVAL_MS = 60 * 6e4;
|
|
1351
1376
|
var jobs = /* @__PURE__ */ new Map();
|
|
1352
1377
|
function scheduleExecOutputCleanup(root, retentionMs, cleanup) {
|
|
@@ -1368,7 +1393,7 @@ function scheduleExecOutputCleanup(root, retentionMs, cleanup) {
|
|
|
1368
1393
|
let empty = false;
|
|
1369
1394
|
try {
|
|
1370
1395
|
await job.cleanup();
|
|
1371
|
-
empty = (await (0,
|
|
1396
|
+
empty = (await (0, import_promises6.readdir)(root).catch((error) => {
|
|
1372
1397
|
if (error.code === "ENOENT") return [];
|
|
1373
1398
|
throw error;
|
|
1374
1399
|
})).length === 0;
|
|
@@ -1393,19 +1418,19 @@ function scheduleExecOutputCleanup(root, retentionMs, cleanup) {
|
|
|
1393
1418
|
}
|
|
1394
1419
|
|
|
1395
1420
|
// plugins/exec/source/output-retention.ts
|
|
1396
|
-
var
|
|
1421
|
+
var import_promises7 = require("node:fs/promises");
|
|
1397
1422
|
var import_node_path4 = require("node:path");
|
|
1398
1423
|
async function outputCaptureCompletedAt(directory, owner) {
|
|
1399
1424
|
if (owner?.completedAt !== null && owner?.completedAt !== void 0)
|
|
1400
1425
|
return owner.completedAt;
|
|
1401
|
-
const entries = await (0,
|
|
1426
|
+
const entries = await (0, import_promises7.readdir)(directory, { withFileTypes: true });
|
|
1402
1427
|
const captures = entries.filter(
|
|
1403
1428
|
(entry) => entry.isFile() && entry.name.endsWith(".bytes")
|
|
1404
1429
|
);
|
|
1405
|
-
if (!captures.length) return (await (0,
|
|
1430
|
+
if (!captures.length) return (await (0, import_promises7.stat)(directory)).mtimeMs;
|
|
1406
1431
|
const times = await Promise.all(
|
|
1407
1432
|
captures.map(
|
|
1408
|
-
async (entry) => (await (0,
|
|
1433
|
+
async (entry) => (await (0, import_promises7.stat)((0, import_node_path4.join)(directory, entry.name))).mtimeMs
|
|
1409
1434
|
)
|
|
1410
1435
|
);
|
|
1411
1436
|
return Math.max(...times);
|
|
@@ -1431,9 +1456,9 @@ function incompleteUtf8TailBytes(tail) {
|
|
|
1431
1456
|
|
|
1432
1457
|
// plugins/exec/source/output-writer.ts
|
|
1433
1458
|
var import_node_crypto5 = require("node:crypto");
|
|
1434
|
-
var
|
|
1459
|
+
var import_promises8 = require("node:fs/promises");
|
|
1435
1460
|
var import_node_stream = require("node:stream");
|
|
1436
|
-
var
|
|
1461
|
+
var import_promises9 = require("node:stream/promises");
|
|
1437
1462
|
var OutputFileSink = class extends import_node_stream.Writable {
|
|
1438
1463
|
constructor(file) {
|
|
1439
1464
|
super({ highWaterMark: EXEC_OUTPUT_IO_CHUNK_BYTES });
|
|
@@ -1486,11 +1511,11 @@ var OutputFileSink = class extends import_node_stream.Writable {
|
|
|
1486
1511
|
async function createOutputWriter(params) {
|
|
1487
1512
|
const streamId = (0, import_node_crypto5.randomUUID)();
|
|
1488
1513
|
const path = outputStreamPath(params.directory, streamId);
|
|
1489
|
-
const file = await (0,
|
|
1514
|
+
const file = await (0, import_promises8.open)(path, "wx+", 384).catch((error) => {
|
|
1490
1515
|
throw outputFailure("write_failed", error);
|
|
1491
1516
|
});
|
|
1492
1517
|
const sink = new OutputFileSink(file);
|
|
1493
|
-
const completion = (0,
|
|
1518
|
+
const completion = (0, import_promises9.finished)(sink).finally(params.onClosed);
|
|
1494
1519
|
void completion.catch(() => void 0);
|
|
1495
1520
|
return Object.freeze({
|
|
1496
1521
|
sink,
|
|
@@ -1644,7 +1669,7 @@ function createExecOutputStore(params) {
|
|
|
1644
1669
|
);
|
|
1645
1670
|
},
|
|
1646
1671
|
async cleanupExpired() {
|
|
1647
|
-
const directories = await (0,
|
|
1672
|
+
const directories = await (0, import_promises10.readdir)(root, { withFileTypes: true }).catch(
|
|
1648
1673
|
(error) => {
|
|
1649
1674
|
if (error.code === "ENOENT") return [];
|
|
1650
1675
|
throw outputFailure("cleanup_failed", error);
|
|
@@ -1663,7 +1688,7 @@ function createExecOutputStore(params) {
|
|
|
1663
1688
|
throw outputFailure("owner_binding_invalid");
|
|
1664
1689
|
if (!await hasOutputExpired(directory, owner, now(), retentionMs))
|
|
1665
1690
|
return;
|
|
1666
|
-
await (0,
|
|
1691
|
+
await (0, import_promises10.rm)(directory, { recursive: true });
|
|
1667
1692
|
removed += 1;
|
|
1668
1693
|
});
|
|
1669
1694
|
}
|
|
@@ -1751,32 +1776,178 @@ async function materializeExecOutput(store, scope, snapshot) {
|
|
|
1751
1776
|
|
|
1752
1777
|
// plugins/exec/source/shell-platform.ts
|
|
1753
1778
|
var import_node_fs2 = require("node:fs");
|
|
1754
|
-
var
|
|
1779
|
+
var import_promises11 = require("node:fs/promises");
|
|
1780
|
+
var import_node_path6 = require("node:path");
|
|
1755
1781
|
var EXEC_SHELL = "/bin/bash";
|
|
1782
|
+
function execShell(platform = process.platform) {
|
|
1783
|
+
if (platform === "win32")
|
|
1784
|
+
return import_node_path6.win32.join(
|
|
1785
|
+
process.env.SystemRoot ?? "C:\\Windows",
|
|
1786
|
+
"System32",
|
|
1787
|
+
"WindowsPowerShell",
|
|
1788
|
+
"v1.0",
|
|
1789
|
+
"powershell.exe"
|
|
1790
|
+
);
|
|
1791
|
+
return EXEC_SHELL;
|
|
1792
|
+
}
|
|
1756
1793
|
function isSupportedExecPlatform(platform) {
|
|
1794
|
+
if (platform === "win32") return true;
|
|
1757
1795
|
return platform === "linux" || platform === "darwin";
|
|
1758
1796
|
}
|
|
1759
1797
|
async function assertSupportedShell(platform = process.platform) {
|
|
1760
1798
|
if (!isSupportedExecPlatform(platform)) {
|
|
1761
1799
|
throw new ExecPluginError(
|
|
1762
1800
|
"exec_platform_unsupported",
|
|
1763
|
-
"The exec plugin requires Linux or
|
|
1801
|
+
"The exec plugin requires Linux/macOS with Bash or native Windows with Windows PowerShell."
|
|
1764
1802
|
);
|
|
1765
1803
|
}
|
|
1766
1804
|
try {
|
|
1767
|
-
await (0,
|
|
1805
|
+
await (0, import_promises11.access)(execShell(platform), import_node_fs2.constants.X_OK);
|
|
1768
1806
|
} catch {
|
|
1769
1807
|
throw new ExecPluginError(
|
|
1770
1808
|
"exec_shell_unavailable",
|
|
1771
|
-
|
|
1809
|
+
`The exec shell is unavailable: ${execShell(platform)}. No command ran. Do not retry until the user restores shell availability.`
|
|
1772
1810
|
);
|
|
1773
1811
|
}
|
|
1774
1812
|
}
|
|
1775
1813
|
|
|
1814
|
+
// plugins/exec/source/shell-process.ts
|
|
1815
|
+
var import_node_child_process = require("node:child_process");
|
|
1816
|
+
|
|
1817
|
+
// plugins/exec/source/windows-shell-bootstrap.ts
|
|
1818
|
+
var WINDOWS_EXEC_BOOTSTRAP = [
|
|
1819
|
+
"$ErrorActionPreference='Stop'",
|
|
1820
|
+
"$ProgressPreference='SilentlyContinue'",
|
|
1821
|
+
"if ($ExecutionContext.SessionState.LanguageMode -ne 'FullLanguage') { Write-Error 'Windows policy blocks the EXEC helper. No command ran. Do not retry or bypass this restriction; ask the user to contact their administrator.' -ErrorAction Continue; exit 126 }",
|
|
1822
|
+
"$abotExecOriginalPSModulePath=$env:PSModulePath",
|
|
1823
|
+
"try {",
|
|
1824
|
+
"$env:PSModulePath=[IO.Path]::Combine($PSHOME,'Modules')",
|
|
1825
|
+
"[Console]::InputEncoding=[Text.UTF8Encoding]::new($false)",
|
|
1826
|
+
"[Console]::OutputEncoding=[Text.UTF8Encoding]::new($false)",
|
|
1827
|
+
"$OutputEncoding=[Text.UTF8Encoding]::new($false)",
|
|
1828
|
+
"$abotExecEnvelope=[Console]::In.ReadToEnd() | ConvertFrom-Json",
|
|
1829
|
+
"Add-Type -TypeDefinition $abotExecEnvelope.source",
|
|
1830
|
+
"[AbotExecJob]::Attach()",
|
|
1831
|
+
"} catch { [Console]::Error.WriteLine('The Windows EXEC helper is unavailable or blocked. No command ran. Do not retry or bypass the restriction; the user must resolve helper availability first.'); exit 126 }",
|
|
1832
|
+
"$env:PSModulePath=$abotExecOriginalPSModulePath",
|
|
1833
|
+
"$global:LASTEXITCODE=0",
|
|
1834
|
+
". ([ScriptBlock]::Create($abotExecEnvelope.command))",
|
|
1835
|
+
"if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE }"
|
|
1836
|
+
].join(";\n");
|
|
1837
|
+
|
|
1838
|
+
// src/shared/windows-job-object.ts
|
|
1839
|
+
var WINDOWS_EXEC_JOB_SOURCE = String.raw`
|
|
1840
|
+
using System;
|
|
1841
|
+
using System.ComponentModel;
|
|
1842
|
+
using System.Runtime.InteropServices;
|
|
1843
|
+
|
|
1844
|
+
public static class AbotExecJob {
|
|
1845
|
+
private static IntPtr job = IntPtr.Zero;
|
|
1846
|
+
|
|
1847
|
+
[StructLayout(LayoutKind.Sequential)]
|
|
1848
|
+
private struct BasicLimits {
|
|
1849
|
+
public long PerProcessUserTimeLimit;
|
|
1850
|
+
public long PerJobUserTimeLimit;
|
|
1851
|
+
public uint LimitFlags;
|
|
1852
|
+
public UIntPtr MinimumWorkingSetSize;
|
|
1853
|
+
public UIntPtr MaximumWorkingSetSize;
|
|
1854
|
+
public uint ActiveProcessLimit;
|
|
1855
|
+
public UIntPtr Affinity;
|
|
1856
|
+
public uint PriorityClass;
|
|
1857
|
+
public uint SchedulingClass;
|
|
1858
|
+
}
|
|
1859
|
+
[StructLayout(LayoutKind.Sequential)]
|
|
1860
|
+
private struct IoCounters {
|
|
1861
|
+
public ulong ReadOperationCount, WriteOperationCount, OtherOperationCount;
|
|
1862
|
+
public ulong ReadTransferCount, WriteTransferCount, OtherTransferCount;
|
|
1863
|
+
}
|
|
1864
|
+
[StructLayout(LayoutKind.Sequential)]
|
|
1865
|
+
private struct ExtendedLimits {
|
|
1866
|
+
public BasicLimits BasicLimitInformation;
|
|
1867
|
+
public IoCounters IoInfo;
|
|
1868
|
+
public UIntPtr ProcessMemoryLimit, JobMemoryLimit;
|
|
1869
|
+
public UIntPtr PeakProcessMemoryUsed, PeakJobMemoryUsed;
|
|
1870
|
+
}
|
|
1871
|
+
|
|
1872
|
+
[DllImport("kernel32.dll", CharSet = CharSet.Unicode, SetLastError = true)]
|
|
1873
|
+
private static extern IntPtr CreateJobObject(IntPtr attributes, string name);
|
|
1874
|
+
[DllImport("kernel32.dll", SetLastError = true)]
|
|
1875
|
+
private static extern bool SetInformationJobObject(IntPtr handle, int kind,
|
|
1876
|
+
ref ExtendedLimits limits, uint size);
|
|
1877
|
+
[DllImport("kernel32.dll", SetLastError = true)]
|
|
1878
|
+
private static extern bool AssignProcessToJobObject(IntPtr handle, IntPtr process);
|
|
1879
|
+
[DllImport("kernel32.dll")]
|
|
1880
|
+
private static extern IntPtr GetCurrentProcess();
|
|
1881
|
+
[DllImport("kernel32.dll")]
|
|
1882
|
+
private static extern bool CloseHandle(IntPtr handle);
|
|
1883
|
+
|
|
1884
|
+
public static void Attach() {
|
|
1885
|
+
if (job != IntPtr.Zero) throw new InvalidOperationException("Already attached");
|
|
1886
|
+
IntPtr candidate = CreateJobObject(IntPtr.Zero, null);
|
|
1887
|
+
if (candidate == IntPtr.Zero) throw new Win32Exception(Marshal.GetLastWin32Error());
|
|
1888
|
+
try {
|
|
1889
|
+
ExtendedLimits limits = new ExtendedLimits();
|
|
1890
|
+
limits.BasicLimitInformation.LimitFlags = 0x00002000; // KILL_ON_JOB_CLOSE
|
|
1891
|
+
if (!SetInformationJobObject(candidate, 9, ref limits,
|
|
1892
|
+
(uint)Marshal.SizeOf(typeof(ExtendedLimits))))
|
|
1893
|
+
throw new Win32Exception(Marshal.GetLastWin32Error());
|
|
1894
|
+
if (!AssignProcessToJobObject(candidate, GetCurrentProcess()))
|
|
1895
|
+
throw new Win32Exception(Marshal.GetLastWin32Error());
|
|
1896
|
+
job = candidate;
|
|
1897
|
+
candidate = IntPtr.Zero;
|
|
1898
|
+
} finally {
|
|
1899
|
+
if (candidate != IntPtr.Zero) CloseHandle(candidate);
|
|
1900
|
+
}
|
|
1901
|
+
}
|
|
1902
|
+
}
|
|
1903
|
+
`;
|
|
1904
|
+
|
|
1905
|
+
// plugins/exec/source/shell-process.ts
|
|
1906
|
+
function spawnExecShell(command, cwd) {
|
|
1907
|
+
if (process.platform !== "win32")
|
|
1908
|
+
return (0, import_node_child_process.spawn)(execShell(), ["-lc", command], {
|
|
1909
|
+
cwd,
|
|
1910
|
+
detached: true,
|
|
1911
|
+
stdio: ["ignore", "pipe", "pipe"]
|
|
1912
|
+
});
|
|
1913
|
+
const child = (0, import_node_child_process.spawn)(
|
|
1914
|
+
execShell(),
|
|
1915
|
+
[
|
|
1916
|
+
"-NoLogo",
|
|
1917
|
+
"-NoProfile",
|
|
1918
|
+
"-NonInteractive",
|
|
1919
|
+
"-EncodedCommand",
|
|
1920
|
+
Buffer.from(WINDOWS_EXEC_BOOTSTRAP, "utf16le").toString("base64")
|
|
1921
|
+
],
|
|
1922
|
+
{ cwd, windowsHide: true, stdio: ["pipe", "pipe", "pipe"] }
|
|
1923
|
+
);
|
|
1924
|
+
child.stdin.on("error", () => {
|
|
1925
|
+
});
|
|
1926
|
+
child.stdin.end(
|
|
1927
|
+
JSON.stringify({ source: WINDOWS_EXEC_JOB_SOURCE, command }),
|
|
1928
|
+
"utf8"
|
|
1929
|
+
);
|
|
1930
|
+
return child;
|
|
1931
|
+
}
|
|
1932
|
+
function killExecProcessTree(child) {
|
|
1933
|
+
if (process.platform === "win32") {
|
|
1934
|
+
child.kill("SIGKILL");
|
|
1935
|
+
return;
|
|
1936
|
+
}
|
|
1937
|
+
if (typeof child.pid === "number") {
|
|
1938
|
+
try {
|
|
1939
|
+
process.kill(-child.pid, "SIGKILL");
|
|
1940
|
+
return;
|
|
1941
|
+
} catch {
|
|
1942
|
+
}
|
|
1943
|
+
}
|
|
1944
|
+
child.kill("SIGKILL");
|
|
1945
|
+
}
|
|
1946
|
+
|
|
1776
1947
|
// plugins/exec/source/process-manager.ts
|
|
1777
1948
|
var MAX_ACTIVE_PROCESSES_PER_SCOPE = 4;
|
|
1778
1949
|
function createExecProcessManager(store = createExecOutputStore({
|
|
1779
|
-
stateDir: (0,
|
|
1950
|
+
stateDir: (0, import_node_path7.join)((0, import_node_os.tmpdir)(), "abot-exec")
|
|
1780
1951
|
})) {
|
|
1781
1952
|
const processes = /* @__PURE__ */ new Map();
|
|
1782
1953
|
const opening = /* @__PURE__ */ new Map();
|
|
@@ -1791,21 +1962,10 @@ function createExecProcessManager(store = createExecOutputStore({
|
|
|
1791
1962
|
const activeProcessCount = (scope) => [...processes.values()].filter(
|
|
1792
1963
|
(managed) => managed.scope === scope && !managed.settled
|
|
1793
1964
|
).length + (opening.get(scope) ?? 0);
|
|
1794
|
-
const killProcessTree = (managed) => {
|
|
1795
|
-
const pid = managed.child.pid;
|
|
1796
|
-
if (typeof pid === "number") {
|
|
1797
|
-
try {
|
|
1798
|
-
process.kill(-pid, "SIGKILL");
|
|
1799
|
-
return;
|
|
1800
|
-
} catch {
|
|
1801
|
-
}
|
|
1802
|
-
}
|
|
1803
|
-
managed.child.kill("SIGKILL");
|
|
1804
|
-
};
|
|
1805
1965
|
const requestTermination = (managed, reason) => {
|
|
1806
1966
|
if (managed.settled || managed.terminationReason) return;
|
|
1807
1967
|
managed.terminationReason = reason;
|
|
1808
|
-
|
|
1968
|
+
killExecProcessTree(managed.child);
|
|
1809
1969
|
if (reason === "output_storage_failed") {
|
|
1810
1970
|
managed.child.stdout.destroy();
|
|
1811
1971
|
managed.child.stderr.destroy();
|
|
@@ -1937,11 +2097,7 @@ function createExecProcessManager(store = createExecOutputStore({
|
|
|
1937
2097
|
});
|
|
1938
2098
|
let child;
|
|
1939
2099
|
try {
|
|
1940
|
-
child = (
|
|
1941
|
-
cwd: params.cwd,
|
|
1942
|
-
detached: true,
|
|
1943
|
-
stdio: ["ignore", "pipe", "pipe"]
|
|
1944
|
-
});
|
|
2100
|
+
child = spawnExecShell(params.shellCommand, params.cwd);
|
|
1945
2101
|
} catch {
|
|
1946
2102
|
await output.dispose();
|
|
1947
2103
|
throw new ExecPluginError(
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
# Filesystem plugin
|
|
2
|
+
|
|
3
|
+
The same four tools run on Linux, macOS and native Windows: `dev_view`,
|
|
4
|
+
`read_file`, `write_file` and `edit_file`. Tools use the runtime's existing
|
|
5
|
+
authorized `agent_work` and `workspace` roots. This plugin does not grant access
|
|
6
|
+
to arbitrary host paths.
|
|
7
|
+
|
|
8
|
+
`write_file` takes a complete file path, including its filename. Missing parent
|
|
9
|
+
directories are created automatically: writing `project/index.html` creates
|
|
10
|
+
`project` if needed, while writing `project` creates a file with that name.
|
|
11
|
+
To create an empty directory, use an available SYSTEM or EXEC command tool.
|
|
12
|
+
Files without extensions, such as `README`, remain valid file targets.
|
|
13
|
+
If an intermediate path component is a file, the plugin returns
|
|
14
|
+
`not_a_directory` and explains that the path must be corrected before another
|
|
15
|
+
attempt. It does not replace or remove the blocking file.
|
|
16
|
+
|
|
17
|
+
## Native Windows
|
|
18
|
+
|
|
19
|
+
Windows uses a plugin-owned C# helper compiled by the built-in Windows
|
|
20
|
+
PowerShell and .NET Framework. No extra application, administrator elevation,
|
|
21
|
+
Companion pairing or execution-policy change is performed. Atomic publication
|
|
22
|
+
requires Windows 10 version 1809 or newer and a filesystem supporting hard
|
|
23
|
+
links, such as NTFS. Unsupported publication is rejected.
|
|
24
|
+
|
|
25
|
+
Before tools enter a request's catalog, the plugin verifies that the helper can
|
|
26
|
+
compile and run. If PowerShell, compilation or organizational policy blocks it,
|
|
27
|
+
the filesystem tools are omitted from that request. A new request checks again.
|
|
28
|
+
This availability check does not guarantee permission to every selected file.
|
|
29
|
+
|
|
30
|
+
If a policy or helper-availability block appears after preparation, the tool
|
|
31
|
+
returns a non-retryable error explaining that no file operation ran. Subsequent
|
|
32
|
+
filesystem calls in that request return the same block without starting the
|
|
33
|
+
helper again. A file-specific access denial does not disable other file tools.
|
|
34
|
+
Organizational policy must be resolved by the user's administrator; the plugin
|
|
35
|
+
does not bypass it.
|
|
36
|
+
|
|
37
|
+
Each operation validates the authorized root's identity and opens path
|
|
38
|
+
components relative to held directory handles. Reparse points, device names,
|
|
39
|
+
alternate data streams and ambiguous Windows path aliases are rejected. Reads
|
|
40
|
+
and directory samples remain bounded. Writes use a private temporary file, check
|
|
41
|
+
the observed destination before commit, then atomically publish a hard link
|
|
42
|
+
under the final name within the held parent directory. New files are restricted
|
|
43
|
+
to the current Windows user; replacement preserves the existing file's DACL and
|
|
44
|
+
its protection flag. The temporary handle denies other opens until publication,
|
|
45
|
+
including while the destination's DACL is copied. The temporary name is marked
|
|
46
|
+
delete-on-close at creation and remains marked through publication. Windows
|
|
47
|
+
removes that name even if the helper is killed; a successfully published final
|
|
48
|
+
name survives independently. Replacing EFS-encrypted, NTFS-compressed or
|
|
49
|
+
named-stream-bearing files is rejected without changing the original or its
|
|
50
|
+
streams (including download-origin metadata). Reads remain available under the
|
|
51
|
+
existing permissions. The tool reports a non-retryable file-specific
|
|
52
|
+
restriction; other files remain usable. Writes to case variants of one Windows
|
|
53
|
+
path share the same in-process queue. Conflict checks before replacement are
|
|
54
|
+
optimistic: a separate process can still change the destination between the last
|
|
55
|
+
check and atomic publication. A read-only destination is left unchanged.
|
|
56
|
+
Interrupted writes with an unknown outcome are reported explicitly and are never
|
|
57
|
+
replayed by the plugin.
|
|
58
|
+
|
|
59
|
+
The maintained native tests cover Windows file operations, junction redirection,
|
|
60
|
+
conflicting writes, DACL preservation, read-only targets and policy blocking.
|
|
61
|
+
Network shares and third-party filesystem providers have not been validated.
|
|
62
|
+
Providers that lack the required identity or handle operations fail explicitly.
|
|
63
|
+
|
|
64
|
+
Optional host-generated chat file previews remain subject to the host's Windows
|
|
65
|
+
support. Successful plugin reads and writes do not depend on those previews.
|