@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
|
@@ -3,31 +3,14 @@ import { fileURLToPath, pathToFileURL } from "node:url";
|
|
|
3
3
|
import { isNativeCredential } from "../computer-access/companion/native-state.js";
|
|
4
4
|
import { isHostIdentifier, isHostRecord, } from "../computer-access/companion/protocol.js";
|
|
5
5
|
import { runHostCompanionCli } from "./host-companion.js";
|
|
6
|
-
|
|
7
|
-
const SETUP_INPUT_TIMEOUT_MS = 10_000;
|
|
6
|
+
import { readHostCompanionInput } from "./host-companion-input.js";
|
|
8
7
|
async function readSetupInput(input) {
|
|
9
|
-
const
|
|
10
|
-
let length = 0;
|
|
11
|
-
const deadline = setTimeout(() => {
|
|
12
|
-
input.destroy(new Error("Host setup input timed out."));
|
|
13
|
-
}, SETUP_INPUT_TIMEOUT_MS);
|
|
8
|
+
const text = await readHostCompanionInput(input);
|
|
14
9
|
try {
|
|
15
|
-
|
|
16
|
-
const bytes = Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk);
|
|
17
|
-
length += bytes.length;
|
|
18
|
-
if (length > SETUP_INPUT_LIMIT_BYTES)
|
|
19
|
-
throw new Error("Host setup input exceeds the size limit.");
|
|
20
|
-
chunks.push(bytes);
|
|
21
|
-
}
|
|
22
|
-
try {
|
|
23
|
-
return JSON.parse(Buffer.concat(chunks).toString("utf8"));
|
|
24
|
-
}
|
|
25
|
-
catch {
|
|
26
|
-
throw new Error("Host setup requires a JSON object on standard input.");
|
|
27
|
-
}
|
|
10
|
+
return JSON.parse(text);
|
|
28
11
|
}
|
|
29
|
-
|
|
30
|
-
|
|
12
|
+
catch {
|
|
13
|
+
throw new Error("Host setup requires a JSON object on standard input.");
|
|
31
14
|
}
|
|
32
15
|
}
|
|
33
16
|
function readSetupRequest(value) {
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/** Native launchers send short-lived secrets through bounded stdin, never shell arguments. */
|
|
2
|
+
export async function readHostCompanionInput(input, maxBytes = 16_384) {
|
|
3
|
+
const chunks = [];
|
|
4
|
+
let length = 0;
|
|
5
|
+
const deadline = setTimeout(() => {
|
|
6
|
+
input.destroy(new Error("Host setup input timed out."));
|
|
7
|
+
}, 10_000);
|
|
8
|
+
try {
|
|
9
|
+
for await (const chunk of input) {
|
|
10
|
+
const bytes = Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk);
|
|
11
|
+
length += bytes.length;
|
|
12
|
+
if (length > maxBytes)
|
|
13
|
+
throw new Error("Host setup input exceeds the size limit.");
|
|
14
|
+
chunks.push(bytes);
|
|
15
|
+
}
|
|
16
|
+
return Buffer.concat(chunks).toString("utf8");
|
|
17
|
+
}
|
|
18
|
+
finally {
|
|
19
|
+
clearTimeout(deadline);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { type NativeAutostartOptions } from "../computer-access/companion/autostart.js";
|
|
2
|
+
import type { NativeNotificationSession } from "../computer-access/companion/native-notifications.js";
|
|
3
|
+
import type { NativeHostState } from "../computer-access/companion/native-state.js";
|
|
4
|
+
/** Packaging owns OS registration; pairing, ownership and supervision stay shared. */
|
|
5
|
+
export type HostCompanionLifecycle = Readonly<{
|
|
6
|
+
assertStartupSupported(startup: NativeAutostartOptions): void | Promise<void>;
|
|
7
|
+
completeStartup(state: NativeHostState, startup: NativeAutostartOptions, hostId: string): Promise<void>;
|
|
8
|
+
uninstall(state: NativeHostState, startup: NativeAutostartOptions): Promise<void>;
|
|
9
|
+
createNotifications?(runtimeUrl: string, signal?: AbortSignal): Promise<NativeNotificationSession>;
|
|
10
|
+
}>;
|
|
11
|
+
export declare const defaultHostCompanionLifecycle: HostCompanionLifecycle;
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { join } from "node:path";
|
|
2
|
+
import { nativeAutostartFile, uninstallNativeAutostart, } from "../computer-access/companion/autostart.js";
|
|
3
|
+
import { uninstallCompanionInstallLinks } from "../computer-access/companion/install-link-registration.js";
|
|
4
|
+
import { uninstallDesktopNotificationIdentity } from "../computer-access/companion/notification-installation.js";
|
|
5
|
+
import { isProcessOwnerAlive, requireCurrentProcessOwnerIdentity, } from "../computer-access/companion/process-owner-identity.js";
|
|
6
|
+
import { acquireFileLock } from "../runtime/adapters/long-term-memory/file-lock/acquisition.js";
|
|
7
|
+
import { completeHostCompanionStartup } from "./host-companion-startup.js";
|
|
8
|
+
async function uninstallDefaultCompanion(state, startup) {
|
|
9
|
+
await state.remove();
|
|
10
|
+
await uninstallNativeAutostart(startup);
|
|
11
|
+
await uninstallDesktopNotificationIdentity(startup);
|
|
12
|
+
const ownerIdentity = await requireCurrentProcessOwnerIdentity();
|
|
13
|
+
const release = await acquireFileLock(join(state.directory, "agent"), {
|
|
14
|
+
waitMs: 5_000,
|
|
15
|
+
releaseMode: "synchronous",
|
|
16
|
+
ownerIdentity,
|
|
17
|
+
processIsAlive: isProcessOwnerAlive,
|
|
18
|
+
});
|
|
19
|
+
await release();
|
|
20
|
+
await uninstallCompanionInstallLinks(startup).catch((error) => {
|
|
21
|
+
console.warn("Plugin installation link cleanup needs attention: " +
|
|
22
|
+
(error instanceof Error ? error.message : String(error)));
|
|
23
|
+
});
|
|
24
|
+
console.log("Host companion stopped. Login startup and the saved credential were removed.");
|
|
25
|
+
}
|
|
26
|
+
export const defaultHostCompanionLifecycle = {
|
|
27
|
+
assertStartupSupported(startup) {
|
|
28
|
+
nativeAutostartFile(startup);
|
|
29
|
+
},
|
|
30
|
+
completeStartup: completeHostCompanionStartup,
|
|
31
|
+
uninstall: uninstallDefaultCompanion,
|
|
32
|
+
};
|
|
@@ -1,3 +1,7 @@
|
|
|
1
1
|
import type { NativeHostConnection } from "../computer-access/companion/native-state.js";
|
|
2
2
|
/** Upgrade identity selects existing private state, never a new credential destination. */
|
|
3
3
|
export declare function resolveHostCompanionSetupUrl(saved: NativeHostConnection | undefined, requestedUrl: string, upgradeHostId?: string): string;
|
|
4
|
+
/** Explicit fresh Store consent bypasses resume; other callers keep their saved pairing. */
|
|
5
|
+
export declare function canResumeHostCompanionPairing(saved: NativeHostConnection | undefined, pairingMode?: "fresh-grant"): saved is NativeHostConnection;
|
|
6
|
+
export declare function assertFreshHostPairingGrant(pairingMode: "fresh-grant" | undefined, pairingCode: string | undefined, upgradeHostId: string | undefined): void;
|
|
7
|
+
export declare function requiresFreshHostPairing(pairingMode?: "fresh-grant"): boolean;
|
|
@@ -21,3 +21,20 @@ export function resolveHostCompanionSetupUrl(saved, requestedUrl, upgradeHostId)
|
|
|
21
21
|
throw new Error("This upgrade belongs to a different paired computer connection.");
|
|
22
22
|
return saved.url;
|
|
23
23
|
}
|
|
24
|
+
/** Explicit fresh Store consent bypasses resume; other callers keep their saved pairing. */
|
|
25
|
+
export function canResumeHostCompanionPairing(saved, pairingMode) {
|
|
26
|
+
if (!saved)
|
|
27
|
+
return false;
|
|
28
|
+
return !requiresFreshHostPairing(pairingMode);
|
|
29
|
+
}
|
|
30
|
+
export function assertFreshHostPairingGrant(pairingMode, pairingCode, upgradeHostId) {
|
|
31
|
+
if (!requiresFreshHostPairing(pairingMode))
|
|
32
|
+
return;
|
|
33
|
+
if (!pairingCode)
|
|
34
|
+
throw new Error("A fresh connection requires a pairing grant.");
|
|
35
|
+
if (upgradeHostId !== undefined)
|
|
36
|
+
throw new Error("A fresh connection cannot carry an upgrade identity.");
|
|
37
|
+
}
|
|
38
|
+
export function requiresFreshHostPairing(pairingMode) {
|
|
39
|
+
return pairingMode === "fresh-grant";
|
|
40
|
+
}
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import { type NativeAutostartOptions } from "../computer-access/companion/autostart.js";
|
|
2
2
|
import type { NativeHostState } from "../computer-access/companion/native-state.js";
|
|
3
|
+
export declare function startDetachedCompanion(options: NativeAutostartOptions): Promise<void>;
|
|
4
|
+
export declare function waitForNativeConnection(state: NativeHostState, hostId: string, buildId: string, connectedAfter: number): Promise<boolean>;
|
|
3
5
|
/** Startup can be resumed without consuming another grant or changing the saved pairing. */
|
|
4
6
|
export declare function completeHostCompanionStartup(state: NativeHostState, startup: NativeAutostartOptions, hostId: string): Promise<void>;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { installCompanionInstallLinks } from "../computer-access/companion/install-link-registration.js";
|
|
1
2
|
import { spawn } from "node:child_process";
|
|
2
3
|
import { installDesktopNotificationIdentity } from "../computer-access/companion/notification-installation.js";
|
|
3
4
|
import { setTimeout as delay } from "node:timers/promises";
|
|
@@ -5,7 +6,7 @@ import { installNativeAutostart, existingOwnedRegistration, nativeAutostartFile,
|
|
|
5
6
|
import { readNativeCompanionBuildId } from "../computer-access/companion/native-build-identity.js";
|
|
6
7
|
import { stopOwnedNativeCompanion } from "../computer-access/companion/native-replacement.js";
|
|
7
8
|
import { prepareNativeCompanionRuntime } from "../computer-access/companion/native-runtime-installation.js";
|
|
8
|
-
async function startDetachedCompanion(options) {
|
|
9
|
+
export async function startDetachedCompanion(options) {
|
|
9
10
|
const child = spawn(options.nodePath, [options.cliPath, "host", "run"], {
|
|
10
11
|
cwd: options.homeDir,
|
|
11
12
|
detached: true,
|
|
@@ -18,7 +19,7 @@ async function startDetachedCompanion(options) {
|
|
|
18
19
|
});
|
|
19
20
|
child.unref();
|
|
20
21
|
}
|
|
21
|
-
async function waitForNativeConnection(state, hostId, buildId, connectedAfter) {
|
|
22
|
+
export async function waitForNativeConnection(state, hostId, buildId, connectedAfter) {
|
|
22
23
|
const deadline = Date.now() + 10_000;
|
|
23
24
|
do {
|
|
24
25
|
if (await state.isConnected(hostId, buildId, connectedAfter))
|
|
@@ -39,6 +40,10 @@ export async function completeHostCompanionStartup(state, startup, hostId) {
|
|
|
39
40
|
console.warn("Desktop notifications setup needs attention: " +
|
|
40
41
|
(error instanceof Error ? error.message : String(error)));
|
|
41
42
|
});
|
|
43
|
+
await installCompanionInstallLinks(managedStartup).catch((error) => {
|
|
44
|
+
console.warn("Plugin installation links need attention: " +
|
|
45
|
+
(error instanceof Error ? error.message : String(error)));
|
|
46
|
+
});
|
|
42
47
|
const connectedAfter = Date.now();
|
|
43
48
|
const installed = await installNativeAutostart(managedStartup);
|
|
44
49
|
if (!installed.started)
|
|
@@ -1,6 +1,12 @@
|
|
|
1
|
+
import { type NativeHostState } from "../computer-access/companion/native-state.js";
|
|
2
|
+
import { type HostCompanionLifecycle } from "./host-companion-lifecycle.js";
|
|
3
|
+
export declare function createHostCompanionState(): NativeHostState;
|
|
1
4
|
export type HostCompanionCliOptions = Readonly<{
|
|
2
5
|
cliPath?: string;
|
|
3
6
|
pairingCode?: string;
|
|
4
7
|
upgradeHostId?: string;
|
|
8
|
+
/** Store fresh connection consent must consume its new grant even with stale state. */
|
|
9
|
+
pairingMode?: "fresh-grant";
|
|
10
|
+
lifecycle?: HostCompanionLifecycle;
|
|
5
11
|
}>;
|
|
6
12
|
export declare function runHostCompanionCli(args: string[], options?: HostCompanionCliOptions): Promise<void>;
|
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
import { homedir } from "node:os";
|
|
2
|
-
import {
|
|
2
|
+
import { openPluginInstallLink, parsePluginInstallArguments, } from "../computer-access/companion/install-link.js";
|
|
3
3
|
import { join } from "node:path";
|
|
4
4
|
import { createInterface } from "node:readline/promises";
|
|
5
5
|
import { stdin, stdout } from "node:process";
|
|
6
6
|
import { fileURLToPath } from "node:url";
|
|
7
|
-
import { nativeAutostartFile, uninstallNativeAutostart, } from "../computer-access/companion/autostart.js";
|
|
8
7
|
import { normalizeNativeRuntimeUrl, resolveNativeRuntimeAddress, } from "../computer-access/companion/native-address.js";
|
|
9
8
|
import { readNativeHostIdentity } from "../computer-access/companion/native-identity.js";
|
|
10
9
|
import { connectNativeHost } from "../computer-access/companion/native-session.js";
|
|
@@ -14,8 +13,9 @@ import { isProcessOwnerAlive, requireCurrentProcessOwnerIdentity, } from "../com
|
|
|
14
13
|
import { acquireFileLock } from "../runtime/adapters/long-term-memory/file-lock/acquisition.js";
|
|
15
14
|
import { ensurePrivateRuntimeDirectory } from "../runtime/local-host/private-directory.js";
|
|
16
15
|
import { assertPrivateRuntimeAccess } from "../runtime/local-host/private-access.js";
|
|
17
|
-
import {
|
|
18
|
-
import { resolveHostCompanionSetupUrl } from "./host-companion-setup-target.js";
|
|
16
|
+
import { defaultHostCompanionLifecycle, } from "./host-companion-lifecycle.js";
|
|
17
|
+
import { assertFreshHostPairingGrant, canResumeHostCompanionPairing, resolveHostCompanionSetupUrl, requiresFreshHostPairing, } from "./host-companion-setup-target.js";
|
|
18
|
+
import { stopOwnedNativeCompanion } from "../computer-access/companion/native-replacement.js";
|
|
19
19
|
import { readNativeCompanionBuildId } from "../computer-access/companion/native-build-identity.js";
|
|
20
20
|
import { runHostPermissionsCli } from "./host-permissions.js";
|
|
21
21
|
function printHostHelp() {
|
|
@@ -27,6 +27,7 @@ function printHostHelp() {
|
|
|
27
27
|
" abot host disconnect",
|
|
28
28
|
" abot host uninstall",
|
|
29
29
|
" abot host run",
|
|
30
|
+
" abot host open-link <abot://install link>",
|
|
30
31
|
"",
|
|
31
32
|
"Connect asks for a one-time code from ABot Settings, saves a private credential,",
|
|
32
33
|
"and starts the companion now and at future Windows/macOS/Linux desktop logins.",
|
|
@@ -35,7 +36,7 @@ function printHostHelp() {
|
|
|
35
36
|
"Revoke the host in ABot Settings to remove Runtime-side pairing too.",
|
|
36
37
|
].join("\n"));
|
|
37
38
|
}
|
|
38
|
-
function
|
|
39
|
+
export function createHostCompanionState() {
|
|
39
40
|
return createNativeHostState(join(homedir(), ".abot", "host-companion"), {
|
|
40
41
|
ensureDirectory: ensurePrivateRuntimeDirectory,
|
|
41
42
|
assertFile: (path, stat) => assertPrivateRuntimeAccess(path, stat, "host_companion_state_not_private"),
|
|
@@ -79,14 +80,20 @@ async function connectHost(args, state, options) {
|
|
|
79
80
|
if (args.length !== 2 || args[0] !== "--url")
|
|
80
81
|
throw new Error("Usage: abot host connect --url http://localhost:5177");
|
|
81
82
|
const startup = autostartOptions(state, options);
|
|
82
|
-
|
|
83
|
+
const lifecycle = options.lifecycle ?? defaultHostCompanionLifecycle;
|
|
84
|
+
await lifecycle.assertStartupSupported(startup);
|
|
85
|
+
assertFreshHostPairingGrant(options.pairingMode, options.pairingCode, options.upgradeHostId);
|
|
83
86
|
const saved = await state.read();
|
|
84
87
|
const url = resolveHostCompanionSetupUrl(saved, normalizeNativeRuntimeUrl(args[1]), options.upgradeHostId);
|
|
85
88
|
await resolveNativeRuntimeAddress(url);
|
|
86
|
-
if (saved) {
|
|
87
|
-
await
|
|
89
|
+
if (canResumeHostCompanionPairing(saved, options.pairingMode)) {
|
|
90
|
+
await lifecycle.completeStartup(state, startup, saved.hostId);
|
|
88
91
|
return;
|
|
89
92
|
}
|
|
93
|
+
// The old process must exit before its credential is replaced; its in-flight
|
|
94
|
+
// authorization failure must not race with the new saved connection.
|
|
95
|
+
if (requiresFreshHostPairing(options.pairingMode))
|
|
96
|
+
await stopOwnedNativeCompanion(state.directory);
|
|
90
97
|
const code = options.pairingCode ?? (await readPairingCode());
|
|
91
98
|
let pairedHostId;
|
|
92
99
|
let interrupted = false;
|
|
@@ -120,10 +127,11 @@ async function connectHost(args, state, options) {
|
|
|
120
127
|
throw new Error("Host setup was interrupted before startup installation.");
|
|
121
128
|
if (!pairedHostId)
|
|
122
129
|
throw new Error("Pairing did not complete. Check ABot Settings and use a fresh pairing code.");
|
|
123
|
-
await
|
|
130
|
+
await lifecycle.completeStartup(state, startup, pairedHostId);
|
|
124
131
|
}
|
|
125
132
|
async function runHost(state, options) {
|
|
126
|
-
|
|
133
|
+
const saved = await state.read();
|
|
134
|
+
if (!saved)
|
|
127
135
|
return;
|
|
128
136
|
const buildId = await readNativeCompanionBuildId(autostartOptions(state, options).cliPath);
|
|
129
137
|
const ownerIdentity = await requireCurrentProcessOwnerIdentity();
|
|
@@ -143,31 +151,22 @@ async function runHost(state, options) {
|
|
|
143
151
|
throw error;
|
|
144
152
|
}
|
|
145
153
|
try {
|
|
146
|
-
await withStopSignals((signal) => runNativeHostSupervisor({
|
|
154
|
+
await withStopSignals(async (signal) => runNativeHostSupervisor({
|
|
147
155
|
state,
|
|
148
156
|
identity: readNativeHostIdentity(),
|
|
149
157
|
signal,
|
|
150
158
|
buildId,
|
|
159
|
+
...(options.lifecycle?.createNotifications
|
|
160
|
+
? {
|
|
161
|
+
notifications: await options.lifecycle.createNotifications(saved.url, signal),
|
|
162
|
+
}
|
|
163
|
+
: {}),
|
|
151
164
|
}));
|
|
152
165
|
}
|
|
153
166
|
finally {
|
|
154
167
|
await release();
|
|
155
168
|
}
|
|
156
169
|
}
|
|
157
|
-
async function disconnectHost(state) {
|
|
158
|
-
await state.remove();
|
|
159
|
-
await uninstallNativeAutostart(autostartOptions(state));
|
|
160
|
-
await uninstallDesktopNotificationIdentity(autostartOptions(state));
|
|
161
|
-
const ownerIdentity = await requireCurrentProcessOwnerIdentity();
|
|
162
|
-
const release = await acquireFileLock(join(state.directory, "agent"), {
|
|
163
|
-
waitMs: 5_000,
|
|
164
|
-
releaseMode: "synchronous",
|
|
165
|
-
ownerIdentity,
|
|
166
|
-
processIsAlive: isProcessOwnerAlive,
|
|
167
|
-
});
|
|
168
|
-
await release();
|
|
169
|
-
console.log("Host companion stopped. Login startup and the saved credential were removed.");
|
|
170
|
-
}
|
|
171
170
|
export async function runHostCompanionCli(args, options = {}) {
|
|
172
171
|
const [command, ...rest] = args;
|
|
173
172
|
if (!command || ["help", "--help", "-h"].includes(command)) {
|
|
@@ -178,11 +177,15 @@ export async function runHostCompanionCli(args, options = {}) {
|
|
|
178
177
|
await runHostPermissionsCli(rest);
|
|
179
178
|
return;
|
|
180
179
|
}
|
|
181
|
-
const state =
|
|
180
|
+
const state = createHostCompanionState();
|
|
182
181
|
if (command === "connect") {
|
|
183
182
|
await connectHost(rest, state, options);
|
|
184
183
|
return;
|
|
185
184
|
}
|
|
185
|
+
if (command === "open-link") {
|
|
186
|
+
await openPluginInstallLink(state, parsePluginInstallArguments(rest));
|
|
187
|
+
return;
|
|
188
|
+
}
|
|
186
189
|
if (rest.length > 0)
|
|
187
190
|
throw new Error(`Unknown host argument: ${rest[0]}`);
|
|
188
191
|
if (command === "run") {
|
|
@@ -190,7 +193,7 @@ export async function runHostCompanionCli(args, options = {}) {
|
|
|
190
193
|
return;
|
|
191
194
|
}
|
|
192
195
|
if (command === "disconnect" || command === "uninstall") {
|
|
193
|
-
await
|
|
196
|
+
await (options.lifecycle ?? defaultHostCompanionLifecycle).uninstall(state, autostartOptions(state, options));
|
|
194
197
|
return;
|
|
195
198
|
}
|
|
196
199
|
if (command === "status") {
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { Readable } from "node:stream";
|
|
2
|
+
import { createHostCompanionState, runHostCompanionCli } from "./host-companion.js";
|
|
3
|
+
/** Store-specific activation; all pairing, state and tool execution remain in the shared CLI. */
|
|
4
|
+
export declare function runWindowsCompanionStoreEntry(args: string[], options?: Readonly<{
|
|
5
|
+
input?: Readable;
|
|
6
|
+
cliPath?: string;
|
|
7
|
+
runCli?: typeof runHostCompanionCli;
|
|
8
|
+
createState?: typeof createHostCompanionState;
|
|
9
|
+
}>): Promise<void>;
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { stdin } from "node:process";
|
|
2
|
+
import { fileURLToPath, pathToFileURL } from "node:url";
|
|
3
|
+
import { normalizeNativeRuntimeUrl, resolveNativeRuntimeAddress } from "../computer-access/companion/native-address.js";
|
|
4
|
+
import { parseStoreConnectionLink, STORE_CONNECTION_LINK_MAX_BYTES } from "../computer-access/companion/windows-store/connection-link.js";
|
|
5
|
+
import { WINDOWS_COMPANION_AUMID } from "../computer-access/companion/windows-store/identity.js";
|
|
6
|
+
import { createWindowsStoreLifecycle } from "../computer-access/companion/windows-store/lifecycle.js";
|
|
7
|
+
import { hasMissingStoreUpgradeConnection, MissingStoreConnectionError, serializeStoreConnectionError } from "../computer-access/companion/windows-store/connection-error.js";
|
|
8
|
+
import { createHostCompanionState, runHostCompanionCli } from "./host-companion.js";
|
|
9
|
+
import { readHostCompanionInput } from "./host-companion-input.js";
|
|
10
|
+
import { resolveHostCompanionSetupUrl } from "./host-companion-setup-target.js";
|
|
11
|
+
function browserOrigin(runtimeUrl) {
|
|
12
|
+
const url = new URL(runtimeUrl);
|
|
13
|
+
url.protocol = url.protocol === "wss:" ? "https:" : "http:";
|
|
14
|
+
return url.origin;
|
|
15
|
+
}
|
|
16
|
+
/** Store-specific activation; all pairing, state and tool execution remain in the shared CLI. */
|
|
17
|
+
export async function runWindowsCompanionStoreEntry(args, options = {}) {
|
|
18
|
+
const [command, ...rest] = args;
|
|
19
|
+
const cliPath = options.cliPath ?? fileURLToPath(import.meta.url);
|
|
20
|
+
const runCli = options.runCli ?? runHostCompanionCli;
|
|
21
|
+
const lifecycle = createWindowsStoreLifecycle({ appUserModelId: WINDOWS_COMPANION_AUMID });
|
|
22
|
+
if (command === "host") {
|
|
23
|
+
if (!['run', 'status', 'disconnect', 'uninstall', '--help'].includes(rest[0] ?? '') || rest.length !== 1)
|
|
24
|
+
throw new Error("Unsupported Companion command.");
|
|
25
|
+
await runCli(rest, { cliPath, lifecycle });
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
if (rest.length !== 0)
|
|
29
|
+
throw new Error("Companion links must be sent on standard input.");
|
|
30
|
+
if (!["inspect-link", "setup-link", "open-plugin-link"].includes(command ?? ""))
|
|
31
|
+
throw new Error("Unsupported Companion command.");
|
|
32
|
+
const link = await readHostCompanionInput(options.input ?? stdin, STORE_CONNECTION_LINK_MAX_BYTES);
|
|
33
|
+
if (command === "open-plugin-link") {
|
|
34
|
+
await runCli(["open-link", link], { cliPath, lifecycle });
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
const invitation = parseStoreConnectionLink(link);
|
|
38
|
+
const state = (options.createState ?? createHostCompanionState)();
|
|
39
|
+
const saved = await state.read();
|
|
40
|
+
if (hasMissingStoreUpgradeConnection(invitation.upgradeHostId, saved))
|
|
41
|
+
throw new MissingStoreConnectionError();
|
|
42
|
+
const target = resolveHostCompanionSetupUrl(saved, normalizeNativeRuntimeUrl(invitation.url), invitation.upgradeHostId);
|
|
43
|
+
await resolveNativeRuntimeAddress(target);
|
|
44
|
+
if (command === "inspect-link") {
|
|
45
|
+
console.log(JSON.stringify({
|
|
46
|
+
runtimeUrl: browserOrigin(target),
|
|
47
|
+
expiresAt: invitation.expiresAt,
|
|
48
|
+
paired: Boolean(saved),
|
|
49
|
+
...(saved ? { existingRuntimeUrl: browserOrigin(saved.url) } : {}),
|
|
50
|
+
}));
|
|
51
|
+
return;
|
|
52
|
+
}
|
|
53
|
+
// Revalidated by the CLI immediately before pairing; inspection never grants consent itself.
|
|
54
|
+
await runCli(["connect", "--url", invitation.url], {
|
|
55
|
+
cliPath, lifecycle, pairingCode: invitation.code,
|
|
56
|
+
...(invitation.upgradeHostId
|
|
57
|
+
? { upgradeHostId: invitation.upgradeHostId }
|
|
58
|
+
: { pairingMode: "fresh-grant" }),
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
if (process.argv[1] && import.meta.url === pathToFileURL(process.argv[1]).href) {
|
|
62
|
+
void runWindowsCompanionStoreEntry(process.argv.slice(2)).catch((error) => {
|
|
63
|
+
// Neither activation URI nor one-time authorization may appear in process output.
|
|
64
|
+
console.error(serializeStoreConnectionError(error));
|
|
65
|
+
process.exitCode = 1;
|
|
66
|
+
});
|
|
67
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export type CollectionConsent = Readonly<{
|
|
2
|
+
accepted: boolean;
|
|
3
|
+
acceptedAt?: string;
|
|
4
|
+
}>;
|
|
5
|
+
/** Installation data, shared across environments and independent of app versions or pairing. */
|
|
6
|
+
export declare function readCollectionConsent(rootDir: string): CollectionConsent;
|
|
7
|
+
/** Acknowledgment records awareness only; it does not change activity permissions or start collection. */
|
|
8
|
+
export declare function acceptCollectionConsent(rootDir: string): Promise<CollectionConsent>;
|
|
9
|
+
export declare function requireCollectionConsent(rootDir: string): void;
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { join } from "node:path";
|
|
2
|
+
import { ensurePrivateRuntimeDirectory } from "../runtime/local-host/private-directory.js";
|
|
3
|
+
import { hostStateDirectory, readHostPrivateJson, writeHostPrivateJson, } from "./companion/private-store.js";
|
|
4
|
+
function isSavedCollectionConsent(value) {
|
|
5
|
+
if (!value || typeof value !== "object" || Array.isArray(value))
|
|
6
|
+
return false;
|
|
7
|
+
const record = value;
|
|
8
|
+
if (record.version !== 1)
|
|
9
|
+
return false;
|
|
10
|
+
if (typeof record.acceptedAt !== "string")
|
|
11
|
+
return false;
|
|
12
|
+
return Number.isFinite(Date.parse(record.acceptedAt));
|
|
13
|
+
}
|
|
14
|
+
function collectionConsentPath(rootDir) {
|
|
15
|
+
return join(hostStateDirectory(rootDir), "collection-consent.json");
|
|
16
|
+
}
|
|
17
|
+
/** Installation data, shared across environments and independent of app versions or pairing. */
|
|
18
|
+
export function readCollectionConsent(rootDir) {
|
|
19
|
+
let record;
|
|
20
|
+
try {
|
|
21
|
+
record = readHostPrivateJson(collectionConsentPath(rootDir));
|
|
22
|
+
}
|
|
23
|
+
catch (error) {
|
|
24
|
+
// A malformed record never authorizes collection. Filesystem safety errors remain visible.
|
|
25
|
+
if (error instanceof SyntaxError)
|
|
26
|
+
return { accepted: false };
|
|
27
|
+
throw error;
|
|
28
|
+
}
|
|
29
|
+
if (!isSavedCollectionConsent(record))
|
|
30
|
+
return { accepted: false };
|
|
31
|
+
return { accepted: true, acceptedAt: record.acceptedAt };
|
|
32
|
+
}
|
|
33
|
+
/** Acknowledgment records awareness only; it does not change activity permissions or start collection. */
|
|
34
|
+
export async function acceptCollectionConsent(rootDir) {
|
|
35
|
+
await ensurePrivateRuntimeDirectory(hostStateDirectory(rootDir));
|
|
36
|
+
const existing = readCollectionConsent(rootDir);
|
|
37
|
+
if (existing.accepted)
|
|
38
|
+
return existing;
|
|
39
|
+
const acceptedAt = new Date().toISOString();
|
|
40
|
+
writeHostPrivateJson(collectionConsentPath(rootDir), { version: 1, acceptedAt });
|
|
41
|
+
return { accepted: true, acceptedAt };
|
|
42
|
+
}
|
|
43
|
+
export function requireCollectionConsent(rootDir) {
|
|
44
|
+
if (readCollectionConsent(rootDir).accepted)
|
|
45
|
+
return;
|
|
46
|
+
throw new Error("collection_consent_required");
|
|
47
|
+
}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import type { Readable } from "node:stream";
|
|
2
|
+
import { type SystemProcessResult } from "./contracts.js";
|
|
3
|
+
export type SystemOutputReceipt = Readonly<{
|
|
4
|
+
id: string;
|
|
5
|
+
stdoutBytes: number;
|
|
6
|
+
stderrBytes: number;
|
|
7
|
+
completedAt: string;
|
|
8
|
+
retentionMs: number;
|
|
9
|
+
complete: boolean;
|
|
10
|
+
stdoutSha256?: string;
|
|
11
|
+
stderrSha256?: string;
|
|
12
|
+
}>;
|
|
13
|
+
type OutputStreams = {
|
|
14
|
+
stdout: string;
|
|
15
|
+
stderr: string;
|
|
16
|
+
};
|
|
17
|
+
/** Private backpressured capture. No read is admitted before complete checks. */
|
|
18
|
+
export declare function createSystemOutputCapture(root: string, retentionMs: number, redact: (text: string) => string): Promise<{
|
|
19
|
+
capture: Readonly<{
|
|
20
|
+
attach(stdout: Readable, stderr: Readable, onFailure: () => void): void;
|
|
21
|
+
end(): void;
|
|
22
|
+
}>;
|
|
23
|
+
readonly receipt: Readonly<{
|
|
24
|
+
id: string;
|
|
25
|
+
stdoutBytes: number;
|
|
26
|
+
stderrBytes: number;
|
|
27
|
+
completedAt: string;
|
|
28
|
+
retentionMs: number;
|
|
29
|
+
complete: boolean;
|
|
30
|
+
stdoutSha256?: string;
|
|
31
|
+
stderrSha256?: string;
|
|
32
|
+
}> | undefined;
|
|
33
|
+
readonly failure: string | undefined;
|
|
34
|
+
readonly failureKind: "storage" | "security" | undefined;
|
|
35
|
+
readonly processResult: Readonly<{
|
|
36
|
+
exitCode: number | null;
|
|
37
|
+
stdout: string;
|
|
38
|
+
stderr: string;
|
|
39
|
+
status: "completed" | "timeout" | "aborted" | "spawn_failed" | "output_failed";
|
|
40
|
+
outputTruncated: boolean;
|
|
41
|
+
spawnedProcess?: import("./contracts.js").SystemSpawnObservation;
|
|
42
|
+
}> | undefined;
|
|
43
|
+
retain(): void;
|
|
44
|
+
release(): void;
|
|
45
|
+
read(stream: "stdout" | "stderr", offset: number, length: number): Promise<Buffer>;
|
|
46
|
+
finish(result?: SystemProcessResult, materialize?: boolean): Promise<OutputStreams>;
|
|
47
|
+
}>;
|
|
48
|
+
export {};
|