@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
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { WINDOWS_FILESYSTEM_NATIVE } from "../../shared/windows-file-io/native-script.js";
|
|
2
|
+
import { WINDOWS_FILESYSTEM_AUTHORITY } from "../../shared/windows-file-io/authority-script.js";
|
|
3
|
+
import { WINDOWS_FILE_READ_BYTES } from "../../shared/windows-file-io/read-bytes-script.js";
|
|
4
|
+
const BOUNDED_READ = String.raw `
|
|
5
|
+
public static partial class AbotFilesystem {
|
|
6
|
+
static object ReadBounded(Dictionary<string,object> request) {
|
|
7
|
+
long maximum;
|
|
8
|
+
if (!Int64.TryParse(Text(request, "maxBytes"), out maximum) || maximum < 0 ||
|
|
9
|
+
maximum > 9007199254740991L) throw new FsFault("filesystem_invalid_request");
|
|
10
|
+
string[] parts=Components(request);
|
|
11
|
+
if (parts.Length == 0) return Record("ok", false, "reason", "not_regular_file");
|
|
12
|
+
using (var chain=new DirectoryChain(request)) {
|
|
13
|
+
chain.Walk(parts, parts.Length-1, false);
|
|
14
|
+
using (var file=OpenHandle(chain.Current, parts[parts.Length-1], false, 1, 0x80000000, 1)) {
|
|
15
|
+
var expected=request["targetIdentity"] as Dictionary<string,object>;
|
|
16
|
+
if (expected == null || !MatchesIdentity(Identity(file), expected))
|
|
17
|
+
return Record("ok", false, "reason", "changed_during_read");
|
|
18
|
+
var before=Metadata(file);
|
|
19
|
+
long size=Convert.ToInt64(before["size"]);
|
|
20
|
+
// Both the byte array and the base64 JSON response must fit .NET strings.
|
|
21
|
+
if (size > maximum || size > (Int32.MaxValue-4096L)/4*3)
|
|
22
|
+
return Record("ok", false, "reason", "too_large", "byteCount", size);
|
|
23
|
+
var bytes=ReadBytes(file, 0, (int)size);
|
|
24
|
+
if (!SameMetadata(before, Metadata(file)))
|
|
25
|
+
return Record("ok", false, "reason", "changed_during_read");
|
|
26
|
+
return Record("ok", true, "bytes", Convert.ToBase64String(bytes), "byteCount", size);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
public static string Run(string input) {
|
|
31
|
+
var json=new JavaScriptSerializer { MaxJsonLength=Int32.MaxValue };
|
|
32
|
+
try { return json.Serialize(ReadBounded(json.Deserialize<Dictionary<string,object>>(input))); }
|
|
33
|
+
catch (FsFault error) { return json.Serialize(Record("ok", false, "code", error.Code)); }
|
|
34
|
+
catch { return json.Serialize(Record("ok", false, "code", "filesystem_native_operation_failed")); }
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
`;
|
|
38
|
+
export const WINDOWS_BOUNDED_READ_SOURCE = [
|
|
39
|
+
WINDOWS_FILESYSTEM_NATIVE,
|
|
40
|
+
WINDOWS_FILESYSTEM_AUTHORITY,
|
|
41
|
+
WINDOWS_FILE_READ_BYTES,
|
|
42
|
+
BOUNDED_READ,
|
|
43
|
+
].join("\n");
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { BoundedRegularFileReadResult } from "../files.js";
|
|
2
|
+
export declare function readWindowsBoundedRegularFile(absolutePath: string, options: Readonly<{
|
|
3
|
+
maxBytes: number;
|
|
4
|
+
rootPath: string;
|
|
5
|
+
signal?: AbortSignal;
|
|
6
|
+
}>): Promise<BoundedRegularFileReadResult>;
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { lstat, open, realpath } from "node:fs/promises";
|
|
2
|
+
import { win32 } from "node:path";
|
|
3
|
+
import { runWindowsBoundedRead } from "./process.js";
|
|
4
|
+
import { decodeWindowsReadResult, windowsReadAbortError } from "./result.js";
|
|
5
|
+
function isOutsideRoot(rootRelative) {
|
|
6
|
+
if (win32.isAbsolute(rootRelative))
|
|
7
|
+
return true;
|
|
8
|
+
if (rootRelative === "..")
|
|
9
|
+
return true;
|
|
10
|
+
return rootRelative.startsWith("..\\");
|
|
11
|
+
}
|
|
12
|
+
function identity(stats) {
|
|
13
|
+
return {
|
|
14
|
+
device: String(stats.dev),
|
|
15
|
+
inode: String(stats.ino),
|
|
16
|
+
birthtimeNs: String(stats.birthtimeNs),
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
export async function readWindowsBoundedRegularFile(absolutePath, options) {
|
|
20
|
+
const relativePath = win32.relative(options.rootPath, absolutePath);
|
|
21
|
+
if (isOutsideRoot(relativePath))
|
|
22
|
+
return Object.freeze({ ok: false, reason: "outside_root" });
|
|
23
|
+
if (relativePath === "")
|
|
24
|
+
return Object.freeze({ ok: false, reason: "not_regular_file" });
|
|
25
|
+
let root;
|
|
26
|
+
try {
|
|
27
|
+
const canonicalRoot = await realpath(options.rootPath);
|
|
28
|
+
root = await open(canonicalRoot, "r");
|
|
29
|
+
const rootStats = await root.stat({ bigint: true });
|
|
30
|
+
if (!rootStats.isDirectory() || rootStats.ino <= 0n)
|
|
31
|
+
return Object.freeze({ ok: false, reason: "safe_open_unsupported" });
|
|
32
|
+
// Metadata only: all content reads happen through the rooted native handles.
|
|
33
|
+
const targetPath = win32.resolve(canonicalRoot, relativePath);
|
|
34
|
+
const target = await lstat(targetPath, { bigint: true });
|
|
35
|
+
if (!target.isFile())
|
|
36
|
+
return Object.freeze({ ok: false, reason: "not_regular_file" });
|
|
37
|
+
const canonicalTarget = await realpath(targetPath);
|
|
38
|
+
if (isOutsideRoot(win32.relative(canonicalRoot, canonicalTarget)))
|
|
39
|
+
return Object.freeze({ ok: false, reason: "outside_root" });
|
|
40
|
+
if (options.signal?.aborted)
|
|
41
|
+
throw windowsReadAbortError();
|
|
42
|
+
const raw = await runWindowsBoundedRead({
|
|
43
|
+
rootPath: canonicalRoot,
|
|
44
|
+
relativePath: relativePath.split(win32.sep).join("/"),
|
|
45
|
+
rootIdentity: identity(rootStats),
|
|
46
|
+
targetIdentity: identity(target),
|
|
47
|
+
maxBytes: String(options.maxBytes),
|
|
48
|
+
}, options.maxBytes, options.signal);
|
|
49
|
+
if (options.signal?.aborted)
|
|
50
|
+
throw windowsReadAbortError();
|
|
51
|
+
return decodeWindowsReadResult(raw, options.maxBytes);
|
|
52
|
+
}
|
|
53
|
+
finally {
|
|
54
|
+
await root?.close();
|
|
55
|
+
}
|
|
56
|
+
}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { BoundedRegularFileReadResult } from "../files.js";
|
|
2
|
+
export declare function windowsReadError(code: string): Error;
|
|
3
|
+
export declare function windowsReadAbortError(): Error;
|
|
4
|
+
export declare function decodeWindowsReadResult(raw: string, maxBytes: number): BoundedRegularFileReadResult;
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
export function windowsReadError(code) {
|
|
2
|
+
const error = new Error("The Windows safe file read failed (" + code + "). No fallback read was attempted.");
|
|
3
|
+
return Object.assign(error, { code });
|
|
4
|
+
}
|
|
5
|
+
export function windowsReadAbortError() {
|
|
6
|
+
const error = new Error("The file read was cancelled.");
|
|
7
|
+
error.name = "AbortError";
|
|
8
|
+
return error;
|
|
9
|
+
}
|
|
10
|
+
const FAILURE_REASONS = new Set([
|
|
11
|
+
"not_regular_file",
|
|
12
|
+
"too_large",
|
|
13
|
+
"changed_during_read",
|
|
14
|
+
"outside_root",
|
|
15
|
+
"safe_open_unsupported",
|
|
16
|
+
]);
|
|
17
|
+
function hasByteCount(value) {
|
|
18
|
+
return typeof value === "number" && Number.isSafeInteger(value) && value >= 0;
|
|
19
|
+
}
|
|
20
|
+
function decodeNativeFailure(code) {
|
|
21
|
+
switch (code) {
|
|
22
|
+
case "filesystem_windows_policy_blocked":
|
|
23
|
+
case "filesystem_windows_helper_unavailable":
|
|
24
|
+
case "filesystem_safe_io_unsupported":
|
|
25
|
+
return Object.freeze({ ok: false, reason: "safe_open_unsupported" });
|
|
26
|
+
case "filesystem_path_changed":
|
|
27
|
+
case "filesystem_target_changed":
|
|
28
|
+
case "filesystem_read_changed":
|
|
29
|
+
case "filesystem_read_incomplete":
|
|
30
|
+
return Object.freeze({ ok: false, reason: "changed_during_read" });
|
|
31
|
+
case "file_too_large":
|
|
32
|
+
return Object.freeze({ ok: false, reason: "too_large" });
|
|
33
|
+
case "file_not_found": throw windowsReadError("ENOENT");
|
|
34
|
+
case "filesystem_access_denied": throw windowsReadError("EACCES");
|
|
35
|
+
default: throw windowsReadError("EIO");
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
export function decodeWindowsReadResult(raw, maxBytes) {
|
|
39
|
+
let value;
|
|
40
|
+
try {
|
|
41
|
+
value = JSON.parse(raw);
|
|
42
|
+
}
|
|
43
|
+
catch {
|
|
44
|
+
throw windowsReadError("EIO");
|
|
45
|
+
}
|
|
46
|
+
if (value?.ok === false && typeof value.code === "string")
|
|
47
|
+
return decodeNativeFailure(value.code);
|
|
48
|
+
if (value?.ok === false && FAILURE_REASONS.has(value.reason)) {
|
|
49
|
+
if (value.byteCount !== undefined && !hasByteCount(value.byteCount))
|
|
50
|
+
throw windowsReadError("EIO");
|
|
51
|
+
return Object.freeze({
|
|
52
|
+
ok: false,
|
|
53
|
+
reason: value.reason,
|
|
54
|
+
...(value.byteCount !== undefined ? { byteCount: value.byteCount } : {}),
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
if (value?.ok !== true || !hasByteCount(value.byteCount))
|
|
58
|
+
throw windowsReadError("EIO");
|
|
59
|
+
if (value.byteCount > maxBytes || typeof value.bytes !== "string")
|
|
60
|
+
throw windowsReadError("EIO");
|
|
61
|
+
if (value.bytes.length !== 4 * Math.ceil(value.byteCount / 3))
|
|
62
|
+
throw windowsReadError("EIO");
|
|
63
|
+
const bytes = Buffer.from(value.bytes, "base64");
|
|
64
|
+
if (bytes.length !== value.byteCount || bytes.toString("base64") !== value.bytes)
|
|
65
|
+
throw windowsReadError("EIO");
|
|
66
|
+
return Object.freeze({ ok: true, bytes, byteCount: value.byteCount });
|
|
67
|
+
}
|
|
@@ -24,6 +24,10 @@ export async function readBoundedRegularFile(absolutePath, options) {
|
|
|
24
24
|
throw new RangeError("maxBytes must be a non-negative safe integer");
|
|
25
25
|
}
|
|
26
26
|
throwIfAborted(options.signal);
|
|
27
|
+
if (process.platform === "win32") {
|
|
28
|
+
const { readWindowsBoundedRegularFile } = await import("./files-windows/read.js");
|
|
29
|
+
return readWindowsBoundedRegularFile(absolutePath, options);
|
|
30
|
+
}
|
|
27
31
|
if (typeof constants.O_NOFOLLOW !== "number") {
|
|
28
32
|
return Object.freeze({ ok: false, reason: "safe_open_unsupported" });
|
|
29
33
|
}
|
|
@@ -4,6 +4,7 @@ export * from "./parameters.js";
|
|
|
4
4
|
export * from "./paths.js";
|
|
5
5
|
export * from "./plugin.js";
|
|
6
6
|
export * from "./results.js";
|
|
7
|
+
export * from "./mutation-result.js";
|
|
7
8
|
export * from "./context-text-result.js";
|
|
8
9
|
export * from "../capabilities/tool-media.js";
|
|
9
10
|
export * from "./tool-availability-brief.js";
|
|
@@ -4,6 +4,7 @@ export * from "./parameters.js";
|
|
|
4
4
|
export * from "./paths.js";
|
|
5
5
|
export * from "./plugin.js";
|
|
6
6
|
export * from "./results.js";
|
|
7
|
+
export * from "./mutation-result.js";
|
|
7
8
|
export * from "./context-text-result.js";
|
|
8
9
|
export * from "../capabilities/tool-media.js";
|
|
9
10
|
export * from "./tool-availability-brief.js";
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { ToolImplementationOutput } from "../plugin-contract/entrypoint.js";
|
|
2
|
+
import { type SuccessResultInput, type ToolResultBudget } from "./results.js";
|
|
3
|
+
/**
|
|
4
|
+
* Reports a mutation already confirmed by the owning plugin. This helper
|
|
5
|
+
* preserves its receipt; it does not execute or independently verify a change.
|
|
6
|
+
*/
|
|
7
|
+
export declare function mutationSuccessResult(input: SuccessResultInput, resultBudget?: ToolResultBudget): ToolImplementationOutput;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { successResult, } from "./results.js";
|
|
2
|
+
/**
|
|
3
|
+
* Reports a mutation already confirmed by the owning plugin. This helper
|
|
4
|
+
* preserves its receipt; it does not execute or independently verify a change.
|
|
5
|
+
*/
|
|
6
|
+
export function mutationSuccessResult(input, resultBudget) {
|
|
7
|
+
return successResult({
|
|
8
|
+
...input,
|
|
9
|
+
data: { ...input.data, mutationEvidence: true },
|
|
10
|
+
}, resultBudget);
|
|
11
|
+
}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { randomUUID } from "node:crypto";
|
|
2
2
|
import { assertSessionProjectUnchanged, copySessionProject, } from "../../sessions/project-binding.js";
|
|
3
3
|
import { assertValidSessionArtifactPathInputs, upsertSessionArtifactPaths, } from "../../sessions/artifact-paths.js";
|
|
4
|
-
import {
|
|
4
|
+
import { compactRequestEvents, getRequestFinalState, getSessionRequest, isSameMessageId, normalizeAfterSeq, normalizeCursor, normalizeLimit, normalizeSessionTitle, toClientReplayEvent, toEpochMs, toSessionListItem, } from "../../sessions/record/projection.js";
|
|
5
|
+
import { projectSessionSnapshot } from "../../sessions/snapshot.js";
|
|
5
6
|
import { assertValidRequestId, assertValidSessionId, createContextEntryId, defaultCreateMessageId, pruneSupersededContextEntries, } from "../../sessions/record/rules.js";
|
|
6
7
|
import { resolveSessionMemoryCheckpointCommit } from "../../sessions/memory/rules.js";
|
|
7
8
|
import { assertSessionKindUnchanged, sessionKindCreationFields } from "../../sessions/spark-session.js";
|
|
@@ -99,21 +100,10 @@ class InMemorySessionStore {
|
|
|
99
100
|
return session ? cloneSession(session) : null;
|
|
100
101
|
}
|
|
101
102
|
async getSessionSnapshot(sessionId, options = {}) {
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
return {
|
|
107
|
-
sessionId,
|
|
108
|
-
...(session.kind ? { kind: session.kind } : {}),
|
|
109
|
-
...(session.project ? { project: session.project } : {}),
|
|
110
|
-
title: session.title,
|
|
111
|
-
messages: filterMessagesAfter(clientVisibleMessages(session.messages), options.afterMessageId).map((message) => toSnapshotMessage(sessionId, message, session.requests ?? [])),
|
|
112
|
-
requests: options.includeRequests === false
|
|
113
|
-
? []
|
|
114
|
-
: (session.requests ?? []).map(toSnapshotRequest),
|
|
115
|
-
nextCursor: null,
|
|
116
|
-
};
|
|
103
|
+
assertValidSessionId(sessionId);
|
|
104
|
+
const session = this.sessions.get(sessionId);
|
|
105
|
+
// Copy only the projection; identities-only reads never clone history bodies/events.
|
|
106
|
+
return session ? structuredClone(projectSessionSnapshot(session, options)) : null;
|
|
117
107
|
}
|
|
118
108
|
async getRequestReplayById(requestId, afterSeq = 0) {
|
|
119
109
|
assertValidRequestId(requestId);
|
|
@@ -2,6 +2,7 @@ import { randomUUID } from "node:crypto";
|
|
|
2
2
|
import { removeEmptyLockTree, removeObservedOwner } from "./cleanup.js";
|
|
3
3
|
import { fileSystemErrorCode, INCOMPLETE_LOCK_GRACE_MS, LOCK_ACQUIRE_TIMEOUT_MS, LOCK_RETRY_DELAY_MS, ownerFileName, } from "./contracts.js";
|
|
4
4
|
import { installLockDirectory } from "./install.js";
|
|
5
|
+
import { isWindowsLockReadDenial } from "./path-observation.js";
|
|
5
6
|
import { readLockSnapshot } from "./snapshot.js";
|
|
6
7
|
import { removeObservedOwnerSynchronously } from "./synchronous-release.js";
|
|
7
8
|
export async function acquireFileLock(lockPath, options) {
|
|
@@ -18,7 +19,7 @@ export async function acquireFileLock(lockPath, options) {
|
|
|
18
19
|
catch (error) {
|
|
19
20
|
if (!isLockContention(error))
|
|
20
21
|
throw error;
|
|
21
|
-
const removed = await removeAbandonedLock(lockPath, processIsAlive);
|
|
22
|
+
const removed = await removeAbandonedLock(lockPath, processIsAlive, deadline, retryDelayMs);
|
|
22
23
|
if (removed)
|
|
23
24
|
continue;
|
|
24
25
|
if (Date.now() >= deadline) {
|
|
@@ -45,8 +46,8 @@ function createRelease(lockPath, token, releaseMode) {
|
|
|
45
46
|
function requiresSynchronousRelease(mode) {
|
|
46
47
|
return mode === "synchronous";
|
|
47
48
|
}
|
|
48
|
-
async function removeAbandonedLock(lockPath, processIsAlive) {
|
|
49
|
-
const snapshot = await
|
|
49
|
+
async function removeAbandonedLock(lockPath, processIsAlive, deadline, retryDelayMs) {
|
|
50
|
+
const snapshot = await readContendedSnapshot(lockPath, deadline, retryDelayMs);
|
|
50
51
|
if (!snapshot)
|
|
51
52
|
return true;
|
|
52
53
|
if (snapshot.kind === "legacy_file" || !snapshot.reclaimable)
|
|
@@ -64,6 +65,22 @@ async function removeAbandonedLock(lockPath, processIsAlive) {
|
|
|
64
65
|
}
|
|
65
66
|
return removeEmptyLockTree(lockPath, snapshot.hasLeaseDirectory);
|
|
66
67
|
}
|
|
68
|
+
async function readContendedSnapshot(lockPath, deadline, retryDelayMs) {
|
|
69
|
+
for (;;) {
|
|
70
|
+
try {
|
|
71
|
+
return await readLockSnapshot(lockPath);
|
|
72
|
+
}
|
|
73
|
+
catch (error) {
|
|
74
|
+
if (!isWindowsLockReadDenial(error))
|
|
75
|
+
throw error;
|
|
76
|
+
if (Date.now() >= deadline)
|
|
77
|
+
throw error;
|
|
78
|
+
// Windows can deny a pending deletion while stat still sees the directory.
|
|
79
|
+
// Wait within the acquisition budget; an unreadable owner is never reclaimed.
|
|
80
|
+
await delay(Math.min(retryDelayMs, Math.max(deadline - Date.now(), 0)));
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
}
|
|
67
84
|
async function hasLiveObservedOwner(snapshot, processIsAlive) {
|
|
68
85
|
if (snapshot.ownerPid === undefined)
|
|
69
86
|
return false;
|
|
@@ -3,10 +3,12 @@ import { open } from "node:fs/promises";
|
|
|
3
3
|
import { join } from "node:path";
|
|
4
4
|
import { directorySnapshot, fileSystemErrorCode, LEASE_DIRECTORY_NAME, MAX_LOCK_RECORD_BYTES, } from "./contracts.js";
|
|
5
5
|
import { isLockOwnerIdentity } from "./owner-identity.js";
|
|
6
|
+
import { observeLockReadFailure } from "./path-observation.js";
|
|
6
7
|
export async function readOwnerRecord(lockPath, entryName, expectedToken, directoryModifiedAtMs) {
|
|
7
8
|
let handle;
|
|
8
9
|
try {
|
|
9
|
-
|
|
10
|
+
const ownerPath = join(lockPath, LEASE_DIRECTORY_NAME, entryName);
|
|
11
|
+
handle = await open(ownerPath, constants.O_RDONLY | constants.O_NOFOLLOW).catch(async (error) => { throw await observeLockReadFailure(ownerPath, error); });
|
|
10
12
|
const before = await handle.stat({ bigint: true });
|
|
11
13
|
const modifiedAtMs = Math.max(directoryModifiedAtMs, Number(before.mtimeMs));
|
|
12
14
|
const hasReadableRecord = before.isFile() &&
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { lstat } from "node:fs/promises";
|
|
2
|
+
import { fileSystemErrorCode } from "./contracts.js";
|
|
3
|
+
/** Only confirmed disappearance can normalize a Windows pending-delete denial. */
|
|
4
|
+
export async function observeLockReadFailure(path, error) {
|
|
5
|
+
if (!isWindowsLockReadDenial(error))
|
|
6
|
+
return error;
|
|
7
|
+
try {
|
|
8
|
+
await lstat(path);
|
|
9
|
+
}
|
|
10
|
+
catch (observedError) {
|
|
11
|
+
if (fileSystemErrorCode(observedError) === "ENOENT")
|
|
12
|
+
return observedError;
|
|
13
|
+
}
|
|
14
|
+
return error;
|
|
15
|
+
}
|
|
16
|
+
export function isWindowsLockReadDenial(error) {
|
|
17
|
+
if (process.platform !== "win32")
|
|
18
|
+
return false;
|
|
19
|
+
return fileSystemErrorCode(error) === "EPERM";
|
|
20
|
+
}
|
|
@@ -2,6 +2,7 @@ import { lstat, readdir } from "node:fs/promises";
|
|
|
2
2
|
import { join } from "node:path";
|
|
3
3
|
import { directorySnapshot, fileSystemErrorCode, LEASE_DIRECTORY_NAME, OWNER_FILE_PATTERN, } from "./contracts.js";
|
|
4
4
|
import { readOwnerRecord } from "./owner-record.js";
|
|
5
|
+
import { observeLockReadFailure } from "./path-observation.js";
|
|
5
6
|
export async function readLockSnapshot(lockPath) {
|
|
6
7
|
const lockInfo = await readLockInfo(lockPath);
|
|
7
8
|
if (!lockInfo)
|
|
@@ -13,7 +14,8 @@ export async function readLockSnapshot(lockPath) {
|
|
|
13
14
|
try {
|
|
14
15
|
lockEntries = await readdir(lockPath, { withFileTypes: true });
|
|
15
16
|
}
|
|
16
|
-
catch (
|
|
17
|
+
catch (readError) {
|
|
18
|
+
const error = await observeLockReadFailure(lockPath, readError);
|
|
17
19
|
const code = fileSystemErrorCode(error);
|
|
18
20
|
if (code === "ENOENT")
|
|
19
21
|
return undefined;
|
|
@@ -45,7 +47,8 @@ async function readLockInfo(lockPath) {
|
|
|
45
47
|
try {
|
|
46
48
|
return await lstat(lockPath);
|
|
47
49
|
}
|
|
48
|
-
catch (
|
|
50
|
+
catch (readError) {
|
|
51
|
+
const error = await observeLockReadFailure(lockPath, readError);
|
|
49
52
|
if (fileSystemErrorCode(error) === "ENOENT")
|
|
50
53
|
return undefined;
|
|
51
54
|
throw error;
|
|
@@ -62,7 +65,8 @@ async function readLeaseSnapshot(lockPath, lockModifiedAtMs) {
|
|
|
62
65
|
}
|
|
63
66
|
leaseEntries = await readdir(leasePath, { withFileTypes: true });
|
|
64
67
|
}
|
|
65
|
-
catch (
|
|
68
|
+
catch (readError) {
|
|
69
|
+
const error = await observeLockReadFailure(leasePath, readError);
|
|
66
70
|
if (fileSystemErrorCode(error) === "ENOENT") {
|
|
67
71
|
return invalidLeaseSnapshot(lockModifiedAtMs);
|
|
68
72
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { RuntimeConfig, ModelGatewayClient, SessionStore } from "../ports.js";
|
|
2
2
|
import type { LongTermMemoryService } from "../long-term-memory/contracts.js";
|
|
3
3
|
import type { SessionRequestAdmission } from "../request/session-admission.js";
|
|
4
|
-
/** The environment owns learning; the
|
|
4
|
+
/** The environment owns learning; the collection adapter owns the selected desktop source. */
|
|
5
5
|
export declare function createRuntimePassiveLearning(params: {
|
|
6
6
|
config: RuntimeConfig;
|
|
7
7
|
models: ModelGatewayClient;
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { createHash } from "node:crypto";
|
|
2
2
|
import { join } from "node:path";
|
|
3
|
-
import {
|
|
3
|
+
import { connectRuntimeObservations } from "./runtime-observation-connection.js";
|
|
4
4
|
import { createPassiveLearningService } from "../passive-learning/service.js";
|
|
5
5
|
import { createRuntimePassiveLearningModel } from "../passive-learning/model.js";
|
|
6
6
|
import { createCoWorkerResourceDependencies } from "./co-worker-resources.js";
|
|
7
|
-
/** The environment owns learning; the
|
|
7
|
+
/** The environment owns learning; the collection adapter owns the selected desktop source. */
|
|
8
8
|
export function createRuntimePassiveLearning(params) {
|
|
9
9
|
const { config, models, memory } = params;
|
|
10
10
|
const ownerId = createHash("sha256")
|
|
@@ -19,7 +19,7 @@ export function createRuntimePassiveLearning(params) {
|
|
|
19
19
|
config, models, memory, context, ownerId, directory: join(config.paths.runtimeDir, "passive-learning"),
|
|
20
20
|
sessions: params.sessions, deliveryAdmission: params.deliveryAdmission,
|
|
21
21
|
}),
|
|
22
|
-
connect: (input) =>
|
|
22
|
+
connect: (input) => connectRuntimeObservations({
|
|
23
23
|
...input,
|
|
24
24
|
ownerId,
|
|
25
25
|
rootDir: config.paths.rootDir,
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { HostObservationSubscription } from "../../shared/passive-observation.js";
|
|
2
|
+
/** Installation consent gates every collection route before transport or helper startup. */
|
|
3
|
+
export declare function connectRuntimeObservations(options: HostObservationSubscription): Promise<Readonly<{
|
|
4
|
+
close(): void;
|
|
5
|
+
}>>;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { connectHostObservations } from "../../computer-access/companion/observation-client.js";
|
|
2
|
+
import { connectNativeObservations } from "../../computer-access/native-observation-connection.js";
|
|
3
|
+
import { requireCollectionConsent } from "../../computer-access/collection-consent.js";
|
|
4
|
+
import { readRuntimeCollectionSource } from "../../computer-access/observation-source.js";
|
|
5
|
+
/** Installation consent gates every collection route before transport or helper startup. */
|
|
6
|
+
export async function connectRuntimeObservations(options) {
|
|
7
|
+
options.abortSignal.throwIfAborted();
|
|
8
|
+
await requireCollectionConsent(options.rootDir);
|
|
9
|
+
options.abortSignal.throwIfAborted();
|
|
10
|
+
if (readRuntimeCollectionSource().mode === "native")
|
|
11
|
+
return connectNativeObservations(options);
|
|
12
|
+
return connectHostObservations(options);
|
|
13
|
+
}
|
|
@@ -5,6 +5,7 @@ import { loadRuntimeConfig } from "../config.js";
|
|
|
5
5
|
import { DEFAULT_RUNTIME_CONFIG_FILE } from "../config/constants.js";
|
|
6
6
|
import { loadRuntimeConfigFile } from "../config/loader.js";
|
|
7
7
|
import { RUNTIME_CONFIG_JSON_SCHEMA } from "../config/schema.js";
|
|
8
|
+
import { resolveRuntimePath } from "../config/utils.js";
|
|
8
9
|
import { RuntimeConfigValidationError, validateRuntimeConfigFile, } from "../config/validation.js";
|
|
9
10
|
const NON_SECRET_TOKEN_CONFIG_KEYS = new Set([
|
|
10
11
|
"contextwindowtokens",
|
|
@@ -23,7 +24,7 @@ function isRecord(value) {
|
|
|
23
24
|
}
|
|
24
25
|
function resolveConfigPath(rootDir, configPath) {
|
|
25
26
|
return configPath
|
|
26
|
-
?
|
|
27
|
+
? resolveRuntimePath(rootDir, configPath)
|
|
27
28
|
: join(rootDir, DEFAULT_RUNTIME_CONFIG_FILE);
|
|
28
29
|
}
|
|
29
30
|
function redactConfigValue(value) {
|
|
@@ -8,6 +8,7 @@ export type AutomationCatalogOperation = Readonly<{
|
|
|
8
8
|
operationId: string;
|
|
9
9
|
contractVersion: number;
|
|
10
10
|
label: string;
|
|
11
|
+
outputChannels?: ToolNormalInvocationOperation["outputChannels"];
|
|
11
12
|
pluginName?: string;
|
|
12
13
|
catalogGroups: readonly ToolCatalogGroup[];
|
|
13
14
|
toolDescription?: string;
|
|
@@ -32,6 +33,7 @@ export declare function readAutomationCatalog(input: {
|
|
|
32
33
|
operationId: string;
|
|
33
34
|
contractVersion: number;
|
|
34
35
|
label: string;
|
|
36
|
+
outputChannels?: ToolNormalInvocationOperation["outputChannels"];
|
|
35
37
|
pluginName?: string;
|
|
36
38
|
catalogGroups: readonly ToolCatalogGroup[];
|
|
37
39
|
toolDescription?: string;
|
|
@@ -49,6 +51,7 @@ export declare function readAutomationCatalog(input: {
|
|
|
49
51
|
operationId: string;
|
|
50
52
|
contractVersion: number;
|
|
51
53
|
label: string;
|
|
54
|
+
outputChannels?: ToolNormalInvocationOperation["outputChannels"];
|
|
52
55
|
pluginName?: string;
|
|
53
56
|
catalogGroups: readonly ToolCatalogGroup[];
|
|
54
57
|
toolDescription?: string;
|
|
@@ -16,6 +16,7 @@ export async function readAutomationCatalog(input) {
|
|
|
16
16
|
operationId: operation.operationId,
|
|
17
17
|
contractVersion: registration.contract.version,
|
|
18
18
|
label: operation.summary,
|
|
19
|
+
...(operation.outputChannels ? { outputChannels: operation.outputChannels } : {}),
|
|
19
20
|
...(registration.definition.pluginName
|
|
20
21
|
? { pluginName: registration.definition.pluginName }
|
|
21
22
|
: {}),
|
|
@@ -10,11 +10,13 @@ export declare function projectAutomationModelDependencies(config: RuntimeConfig
|
|
|
10
10
|
admission: Readonly<{
|
|
11
11
|
policy: RequestExecutionPolicyId;
|
|
12
12
|
primaryProfileId?: string;
|
|
13
|
+
plugins?: import("../config/model-plugin-config.js").RuntimeModelPluginConfig;
|
|
13
14
|
source: "model_profile" | "default";
|
|
14
15
|
}>;
|
|
15
16
|
execution: Readonly<{
|
|
16
17
|
policy: RequestExecutionPolicyId;
|
|
17
18
|
primaryProfileId?: string;
|
|
19
|
+
plugins?: import("../config/model-plugin-config.js").RuntimeModelPluginConfig;
|
|
18
20
|
source: "model_profile" | "default";
|
|
19
21
|
}>;
|
|
20
22
|
invocations: ({
|
|
@@ -122,6 +122,7 @@ export declare function createAutomationService(options: {
|
|
|
122
122
|
operationId: string;
|
|
123
123
|
contractVersion: number;
|
|
124
124
|
label: string;
|
|
125
|
+
outputChannels?: import("../../capabilities/tool-types.js").ToolNormalInvocationOperation["outputChannels"];
|
|
125
126
|
pluginName?: string;
|
|
126
127
|
catalogGroups: readonly import("../../capabilities/tool-types.js").ToolCatalogGroup[];
|
|
127
128
|
toolDescription?: string;
|
|
@@ -139,6 +140,7 @@ export declare function createAutomationService(options: {
|
|
|
139
140
|
operationId: string;
|
|
140
141
|
contractVersion: number;
|
|
141
142
|
label: string;
|
|
143
|
+
outputChannels?: import("../../capabilities/tool-types.js").ToolNormalInvocationOperation["outputChannels"];
|
|
142
144
|
pluginName?: string;
|
|
143
145
|
catalogGroups: readonly import("../../capabilities/tool-types.js").ToolCatalogGroup[];
|
|
144
146
|
toolDescription?: string;
|
|
@@ -47,7 +47,7 @@ export declare const AUTOMATION_AUTHORING_REFERENCE: {
|
|
|
47
47
|
readonly steps: readonly [{
|
|
48
48
|
readonly key: "evidence";
|
|
49
49
|
readonly kind: "tool";
|
|
50
|
-
readonly title: "Read
|
|
50
|
+
readonly title: "Read text evidence";
|
|
51
51
|
readonly operation: {
|
|
52
52
|
readonly toolName: "catalog_tool";
|
|
53
53
|
readonly operationId: "catalog_operation";
|
|
@@ -63,7 +63,7 @@ export declare const AUTOMATION_AUTHORING_REFERENCE: {
|
|
|
63
63
|
readonly evidence: {
|
|
64
64
|
readonly kind: "node_result";
|
|
65
65
|
readonly nodeId: "$evidence";
|
|
66
|
-
readonly select: "
|
|
66
|
+
readonly select: "text";
|
|
67
67
|
};
|
|
68
68
|
};
|
|
69
69
|
}];
|
|
@@ -326,10 +326,15 @@ export declare const AUTOMATION_AUTHORING_REFERENCE: {
|
|
|
326
326
|
};
|
|
327
327
|
};
|
|
328
328
|
readonly channels: {
|
|
329
|
-
readonly text: "
|
|
330
|
-
readonly data: "
|
|
329
|
+
readonly text: "Saved text.";
|
|
330
|
+
readonly data: "Separate optional JSON; no implicit Text channel.";
|
|
331
331
|
};
|
|
332
|
-
readonly
|
|
332
|
+
readonly outputChannels: {
|
|
333
|
+
content: string;
|
|
334
|
+
metadata: string;
|
|
335
|
+
conditional: string;
|
|
336
|
+
};
|
|
337
|
+
readonly policy: "literal=constants; run_input=definition.inputs; node_result needs prior success. Follow operation.outputChannels; absent=unknown. Whole data needs no pointer. RFC6901 pointers need documented fields (/items/0; ~ as ~0, / as ~1). Never execute steps for output discovery.";
|
|
333
338
|
readonly files: "run_file resolves a new file for each run under its working directory; fileName is one portable filename, no path. source_files requires a configured source and an agent consumer. source_file index selects the frozen batch entry; field=snapshot_path|original_path|version.";
|
|
334
339
|
readonly parallel: "branch_results is agent-only after the referenced parallel join; it supplies each branch's settled tail output/status. A failed/skipped source has no successful node_result for downstream bindings.";
|
|
335
340
|
};
|
|
@@ -61,10 +61,10 @@ export const AUTOMATION_AUTHORING_REFERENCE = {
|
|
|
61
61
|
},
|
|
62
62
|
bounds: { batch: AUTOMATION_DRAFT_BATCH_LIMITS, recipe: AUTOMATION_CREATION_RECIPE_LIMITS, graph: AUTOMATION_GRAPH_LIMITS },
|
|
63
63
|
createPlanExample: { version: 1, settings: { objective: "Requested workflow outcome" }, steps: [
|
|
64
|
-
{ key: "evidence", kind: "tool", title: "Read
|
|
64
|
+
{ key: "evidence", kind: "tool", title: "Read text evidence", operation },
|
|
65
65
|
{ key: "analysis", kind: "agent", title: "Analyze evidence", modelProfileId: "catalog_model_id",
|
|
66
66
|
prompt: "Analyze the supplied evidence.",
|
|
67
|
-
inputs: { evidence: { kind: "node_result", nodeId: "$evidence", select: "
|
|
67
|
+
inputs: { evidence: { kind: "node_result", nodeId: "$evidence", select: "text" } } },
|
|
68
68
|
] },
|
|
69
69
|
creationRules: "New drafts use settings + ordered steps with unique keys and node shapes below. Runtime fills IDs, parents, indices and commands. Defaults: onFailure=stop; tool controls={}; agentMode=fast, roleInstructions='', inputs={}, tools=[], result={kind:'text'}. Override explicitly. Bind earlier results via $key. Parallel: {key,kind:'parallel',branches:[[steps],[steps]]}; branches are ordered and nonempty. Edit with commands; never mix commands and steps.",
|
|
70
70
|
creationCapacity: `Budget ${AUTOMATION_CREATION_RECIPE_LIMITS.compiledCommands}: leaf=1, parallel group=1, nonempty settings=1; total across all branches. With settings, max ${AUTOMATION_CREATION_RECIPE_LIMITS.compiledCommands - 1} flat steps. Oversize rejects atomically: automation_recipe_capacity_exceeded. Expand with later draft edits.`,
|
|
@@ -107,12 +107,13 @@ export const AUTOMATION_AUTHORING_REFERENCE = {
|
|
|
107
107
|
acceptanceExample: [{ field: "ready", equals: true }],
|
|
108
108
|
acceptancePolicy: "Optional acceptance compares required scalar JSON fields to string/number/boolean values of the same type. A mismatch fails the step under onFailure, not a conditional branch. Use [] to clear. No if/else graph construct exists.", },
|
|
109
109
|
bindings: { examples: bindings,
|
|
110
|
-
channels: { text: "
|
|
111
|
-
|
|
112
|
-
|
|
110
|
+
channels: { text: "Saved text.", data: "Separate optional JSON; no implicit Text channel." },
|
|
111
|
+
outputChannels: { content: "Substantive output; may be bounded/summarized.",
|
|
112
|
+
metadata: "IDs, status, counts or receipts; no content body.",
|
|
113
|
+
conditional: "Depends on operation inputs; do not assume content." },
|
|
114
|
+
policy: "literal=constants; run_input=definition.inputs; node_result needs prior success. Follow operation.outputChannels; absent=unknown. Whole data needs no pointer. RFC6901 pointers need documented fields (/items/0; ~ as ~0, / as ~1). Never execute steps for output discovery.",
|
|
113
115
|
files: "run_file resolves a new file for each run under its working directory; fileName is one portable filename, no path. source_files requires a configured source and an agent consumer. source_file index selects the frozen batch entry; field=snapshot_path|original_path|version.",
|
|
114
|
-
parallel: "branch_results is agent-only after the referenced parallel join; it supplies each branch's settled tail output/status. A failed/skipped source has no successful node_result for downstream bindings.",
|
|
115
|
-
},
|
|
116
|
+
parallel: "branch_results is agent-only after the referenced parallel join; it supplies each branch's settled tail output/status. A failed/skipped source has no successful node_result for downstream bindings.", },
|
|
116
117
|
definition: {
|
|
117
118
|
editableFields: ["title", "objective", "workingDirectory", "trigger", "source", "inputs", "limits"],
|
|
118
119
|
replacement: "A patch merges top-level fields only; inputs, controls, tools, result, acceptance, source, trigger and limits replace their entire field. Keep existing entries when changing part. Limits require all seven keys.",
|