@abot-ai/runtime 1.7.0 → 1.8.1
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 +216 -222
- package/dist/src/capabilities/tool-definition-validator/definition-parser.js +8 -0
- package/dist/src/capabilities/tool-request-resources.d.ts +3 -0
- package/dist/src/capabilities/tool-types.d.ts +4 -0
- package/dist/src/cli/abot.js +2 -0
- package/dist/src/cli/host-companion-bundle.mjs +751 -333
- 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 +17 -6
- package/dist/src/computer-access/command-output-capture.js +134 -68
- 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/companion/command-output.d.ts +1 -0
- package/dist/src/computer-access/companion/command-output.js +23 -6
- package/dist/src/computer-access/companion/install-link-macos.js +2 -1
- package/dist/src/computer-access/companion/native-notifications.js +3 -2
- package/dist/src/computer-access/companion/native-session.js +6 -2
- 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/secret-protection-protocol.d.ts +6 -0
- package/dist/src/computer-access/companion/secret-protection-protocol.js +6 -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/handlers.d.ts +2 -1
- package/dist/src/computer-access/handlers.js +79 -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/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/protocol/message-contract.d.ts +1 -0
- package/dist/src/model-gateway/protocol/message-contract.js +1 -1
- 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/chat-handler.js +5 -7
- package/dist/src/model-gateway/server/chat-stream-response.d.ts +7 -0
- package/dist/src/model-gateway/server/chat-stream-response.js +25 -0
- 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/manifest.d.ts +2 -0
- 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 +4 -0
- package/dist/src/plugin-sdk/computer-access.js +1 -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/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/registered-tool-worker-capabilities/payload-rejection.d.ts +2 -2
- package/dist/src/runtime/adapters/registered-tool-worker-capabilities/payload-rejection.js +2 -2
- package/dist/src/runtime/adapters/registered-tool-worker-capabilities/prepared-execution.js +17 -11
- 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/capabilities/tool-availability.js +6 -0
- package/dist/src/runtime/context/capability-brief.d.ts +2 -2
- package/dist/src/runtime/context/capability-brief.js +3 -3
- package/dist/src/runtime/context/capability-descriptions.d.ts +3 -2
- package/dist/src/runtime/context/capability-descriptions.js +57 -20
- package/dist/src/runtime/local-host/windows-private-access.js +2 -0
- package/dist/src/runtime/long-term-memory/conversation-authoring/context.d.ts +6 -1
- package/dist/src/runtime/long-term-memory/conversation-authoring/context.js +51 -25
- package/dist/src/runtime/long-term-memory/initial-context.d.ts +17 -0
- package/dist/src/runtime/long-term-memory/initial-context.js +57 -0
- package/dist/src/runtime/long-term-memory/projection.js +1 -1
- package/dist/src/runtime/orchestration/role-calls/candidate-validation.js +2 -1
- package/dist/src/runtime/orchestration/role-calls/checkpoint-state.d.ts +1 -1
- package/dist/src/runtime/orchestration/role-calls/checkpoint-state.js +5 -2
- package/dist/src/runtime/orchestration/role-calls/contracts.d.ts +2 -1
- package/dist/src/runtime/orchestration/role-calls/ledger.d.ts +2 -1
- package/dist/src/runtime/orchestration/role-calls/ledger.js +2 -2
- package/dist/src/runtime/orchestration/role-calls/memory-recall-contract.d.ts +7 -0
- package/dist/src/runtime/orchestration/role-calls/memory-recall-state-validation.d.ts +2 -0
- package/dist/src/runtime/orchestration/role-calls/memory-recall-state-validation.js +88 -0
- package/dist/src/runtime/orchestration/role-calls/reducer.d.ts +1 -1
- package/dist/src/runtime/orchestration/role-calls/reducer.js +2 -1
- package/dist/src/runtime/orchestration/worker-capabilities/contracts.d.ts +3 -1
- package/dist/src/runtime/orchestration/worker-capabilities/contracts.js +1 -1
- package/dist/src/runtime/orchestration/worker-capabilities/execution/approval-group.js +5 -1
- package/dist/src/runtime/orchestration/worker-capabilities/execution/execution-freshness.d.ts +5 -0
- package/dist/src/runtime/orchestration/worker-capabilities/execution/execution-freshness.js +31 -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/installation/package.d.ts +8 -0
- package/dist/src/runtime/plugins/installation/package.js +2 -0
- package/dist/src/runtime/plugins/installation/service.d.ts +7 -0
- package/dist/src/runtime/plugins/loader.js +24 -14
- 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 +3 -0
- package/dist/src/runtime/plugins/manifest-validator.js +9 -1
- 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/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/capability-execution-freshness.js +6 -1
- package/dist/src/runtime/request/execution-agent-root-execution.js +11 -1
- package/dist/src/runtime/request/prepared-execution.js +3 -0
- package/dist/src/runtime/request/root-contract.d.ts +2 -0
- package/dist/src/runtime/request/root-execution-kernel.js +1 -0
- package/dist/src/runtime/request/runner.js +9 -3
- package/dist/src/runtime/request/supervisor-root-execution.js +6 -0
- 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/contracts.d.ts +10 -0
- package/dist/src/runtime/steps/execution-agent/decision-parsing.js +13 -1
- package/dist/src/runtime/steps/execution-agent/direct-response-configuration.d.ts +3 -0
- package/dist/src/runtime/steps/execution-agent/direct-response-configuration.js +64 -0
- package/dist/src/runtime/steps/execution-agent/direct-response-contract.d.ts +7 -0
- package/dist/src/runtime/steps/execution-agent/direct-response-contract.js +56 -0
- package/dist/src/runtime/steps/execution-agent/direct-response-policy.d.ts +9 -0
- package/dist/src/runtime/steps/execution-agent/direct-response-policy.js +30 -0
- package/dist/src/runtime/steps/execution-agent/direct-response-prompt.d.ts +7 -0
- package/dist/src/runtime/steps/execution-agent/direct-response-prompt.js +43 -0
- package/dist/src/runtime/steps/execution-agent/format.js +4 -3
- package/dist/src/runtime/steps/execution-agent/input.d.ts +2 -0
- package/dist/src/runtime/steps/execution-agent/input.js +22 -1
- package/dist/src/runtime/steps/execution-agent/plugin-catalog.d.ts +4 -0
- package/dist/src/runtime/steps/execution-agent/plugin-catalog.js +8 -0
- package/dist/src/runtime/steps/execution-agent/prompt.d.ts +1 -0
- package/dist/src/runtime/steps/execution-agent/prompt.js +7 -8
- package/dist/src/runtime/steps/execution-agent/response-prompt.js +1 -0
- package/dist/src/runtime/steps/execution-agent/response-run.js +5 -11
- package/dist/src/runtime/steps/execution-agent/run.js +4 -1
- package/dist/src/runtime/steps/execution-agent/state-context.d.ts +3 -5
- package/dist/src/runtime/steps/execution-agent/state-context.js +5 -51
- 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/runtime/steps/planner-decision/capability-brief.d.ts +2 -0
- package/dist/src/runtime/steps/planner-decision/prompt.js +26 -49
- package/dist/src/runtime/steps/supervisor-decision/input.d.ts +1 -0
- package/dist/src/runtime/steps/supervisor-decision/input.js +5 -0
- package/dist/src/runtime/steps/supervisor-decision/prompt.d.ts +1 -0
- package/dist/src/runtime/steps/supervisor-decision/prompt.js +6 -2
- package/dist/src/runtime/steps/supervisor-decision/run.d.ts +1 -0
- package/dist/src/runtime/steps/supervisor-decision/run.js +4 -0
- package/dist/src/runtime/steps/supervisor-response/run.d.ts +2 -0
- package/dist/src/runtime/steps/supervisor-response/run.js +3 -6
- package/dist/src/sessions/durable-session-commit.js +3 -3
- 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/session-store.js +3 -3
- 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/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 +1 -1
- 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 +54 -156
- 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/automations/timeline.js +3 -2
- package/dist/src/web-ui/app/components/composer-submission-notice.js +50 -0
- package/dist/src/web-ui/app/components/config-workspace/model-plugin-permissions.js +7 -1
- package/dist/src/web-ui/app/components/config-workspace/workspace-mutations.js +22 -2
- package/dist/src/web-ui/app/components/dashboard/compact-layout.js +137 -0
- package/dist/src/web-ui/app/components/dashboard/icons.js +5 -0
- package/dist/src/web-ui/app/components/dashboard/widget-card.js +85 -0
- package/dist/src/web-ui/app/components/dashboard/widget-dialog.js +83 -0
- package/dist/src/web-ui/app/components/dashboard/widget-summaries.js +155 -0
- package/dist/src/web-ui/app/components/dashboard/workspace.js +28 -4
- 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 +2 -1
- 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-widget-preview.js +32 -0
- package/dist/src/web-ui/app/components/passive-learning/home.js +11 -3
- 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/discovery-rendering.js +9 -1
- package/dist/src/web-ui/app/components/plugins/installation-compatibility.js +7 -0
- package/dist/src/web-ui/app/components/plugins/installation.js +2 -1
- package/dist/src/web-ui/app/components/plugins/rendering.js +3 -0
- 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/optional-steps.js +7 -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/schedules/details.js +3 -2
- 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/handoff-actions.js +9 -3
- package/dist/src/web-ui/app/components/spark-chat/panel.js +1 -1
- package/dist/src/web-ui/app/components/spark-chat/placement.js +4 -7
- package/dist/src/web-ui/app/components/spark-chat/settings.js +8 -4
- package/dist/src/web-ui/app/components/system-host/home-widget-permission-preview.js +75 -0
- package/dist/src/web-ui/app/components/system-host/home-widget-summary.js +93 -0
- package/dist/src/web-ui/app/components/system-host/macos-permission-rendering.js +2 -2
- package/dist/src/web-ui/app/components/system-host/macos-permissions.js +2 -0
- 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 +6 -3
- package/dist/src/web-ui/app/components/system-host/windows-store-setup.js +2 -2
- package/dist/src/web-ui/app/components/workspace-storage-notice.js +37 -0
- package/dist/src/web-ui/app/computer-access-feature.js +13 -1
- package/dist/src/web-ui/app/configuration-environment-refresh.js +27 -34
- package/dist/src/web-ui/app/configuration-feature.js +11 -1
- package/dist/src/web-ui/app/controllers/app-event-bindings.js +38 -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-request-hydration.js +20 -17
- package/dist/src/web-ui/app/controllers/conversation-session-controller.d.ts +1 -2
- package/dist/src/web-ui/app/controllers/conversation-session-controller.js +49 -22
- 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/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.js +2 -1
- 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-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 +33 -17
- package/dist/src/web-ui/app/controllers/session-pin-updates.js +14 -0
- package/dist/src/web-ui/app/controllers/session-sidebar-controller.js +12 -14
- package/dist/src/web-ui/app/controllers/spark-chat-sync.js +2 -2
- 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/dashboard-feature.js +12 -2
- package/dist/src/web-ui/app/lib/reasoning-controls.js +40 -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/passive-learning-feature.js +18 -5
- 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/memory.js +7 -2
- package/dist/src/web-ui/app/services/runtime-web-client/system-host.js +2 -0
- package/dist/src/web-ui/app/services/runtime-web-client.d.ts +2 -0
- package/dist/src/web-ui/app/services/runtime-web-client.js +2 -0
- 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 +10 -4
- package/dist/src/web-ui/app/styles/21-composer-controls.css +16 -0
- package/dist/src/web-ui/app/styles/41-plugin-management.css +8 -0
- package/dist/src/web-ui/app/styles/42-model-plugin-permissions.css +1 -0
- package/dist/src/web-ui/app/styles/49-collection-consent.css +30 -0
- package/dist/src/web-ui/app/styles/64-workspace-storage.css +23 -0
- package/dist/src/web-ui/app/styles/95-home-widgets.css +109 -0
- package/dist/src/web-ui/app/styles.css +3 -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/configuration-activation-source.js +2 -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/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-control-observation.js +2 -2
- package/dist/src/web-ui/local-runtime/request-execution.js +18 -18
- 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 +2 -9
- package/dist/src/web-ui/local-runtime/runtime-setup-context-window.js +4 -27
- 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-service.js +4 -0
- package/dist/src/web-ui/local-runtime-backend.js +14 -0
- package/dist/src/web-ui/plugin-management-catalog.d.ts +3 -1
- package/dist/src/web-ui/plugin-management-catalog.js +3 -1
- package/dist/src/web-ui/plugin-management-service.d.ts +1 -0
- package/dist/src/web-ui/plugin-removal-service.d.ts +1 -0
- 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 +23 -1
- 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/docs/installation.md +44 -5
- package/docs/plugins.md +174 -28
- package/docs/tool-execution-result-evidence-contract.md +57 -0
- package/docs/windows-companion-store.md +5 -0
- package/package.json +4 -2
- package/plugins/capability-brief/plugin.json +5 -1
- package/plugins/code-outline/README.md +20 -0
- package/plugins/code-outline/plugin.json +2 -1
- 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 -1
- 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 +4 -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 +7 -3
- 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 +2 -1
- 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 -1
- 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 +5 -1
- 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 +2 -1
- 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 +51 -15
- package/plugins/system/plugin.json +6 -2
- package/plugins/system/skills/system_actions/SKILL.md +1 -1
- package/plugins/system/source/command-working-directory.ts +47 -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 +18 -2
- package/plugins/system/source/index.ts +5 -3
- package/plugins/system/source/local-command-output-retention.ts +16 -0
- package/plugins/system/source/local-command-output.ts +16 -8
- package/plugins/system/source/request-system-modules.ts +12 -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 +837 -151
- package/plugins/system-probe/plugin.json +9 -3
- 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/plugin.json +5 -1
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import { connectionDescription, connectionStatus, connectionTitle, hostSetupIsReady } from "./rendering.js";
|
|
2
|
+
import { isNativeWindowsLocalAccess, nativeWindowsAccessPresentation } from "./native-windows-access.js";
|
|
3
|
+
import { computerWidgetPreview } from "./home-widget-permission-preview.js";
|
|
4
|
+
import { macPermissionSummary, permissionSummary } from "./macos-permission-rendering.js";
|
|
5
|
+
import { permissionsMatchConnection, permissionsMatchNativeOwner } from "./macos-permission-scopes.js";
|
|
6
|
+
import { storeConnectionStage, storeConnectionDisplayContent, windowsStorePanelIsAvailable } from "./windows-store-setup.js";
|
|
7
|
+
|
|
8
|
+
function currentMacPermissionStates(state) {
|
|
9
|
+
const snapshot = state.snapshot;
|
|
10
|
+
const states = [];
|
|
11
|
+
if (permissionsMatchConnection(state.macPermissions, snapshot))
|
|
12
|
+
states.push(permissionSummary(state.macPermissions));
|
|
13
|
+
if (permissionsMatchNativeOwner(state.nativeMacPermissions, snapshot, snapshot?.nativePermissions?.environmentId))
|
|
14
|
+
states.push(permissionSummary(state.nativeMacPermissions));
|
|
15
|
+
return states;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
function hasComputerActionFailure(state) {
|
|
19
|
+
return Boolean(state.error || state.actionError || state.macPermissionError || state.nativeMacPermissionError);
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
function computerPermissionTone(state, permissionText) {
|
|
23
|
+
if (hasComputerActionFailure(state)) return "attention";
|
|
24
|
+
const status = connectionStatus(state.snapshot, state.statusUnavailable, state.busy);
|
|
25
|
+
if (["Paired · offline", "Update needed", "Computer access unavailable"].includes(status)) return "attention";
|
|
26
|
+
const states = currentMacPermissionStates(state);
|
|
27
|
+
if (states.includes("action needed")) return "attention";
|
|
28
|
+
// A connected Mac with unmeasured or unavailable permissions is not all-clear.
|
|
29
|
+
if (permissionText) return "neutral";
|
|
30
|
+
if (hostSetupIsReady(state.snapshot)) return "success";
|
|
31
|
+
return "neutral";
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
function windowsStoreTone(state, stage) {
|
|
35
|
+
if (hasComputerActionFailure(state)) return "attention";
|
|
36
|
+
if (state.busy) return "neutral";
|
|
37
|
+
const tones = { ready: "success", reconnect: "attention", expired: "attention", "confirm-repair": "attention", preparing: "active", repairing: "active", waiting: "active", open: "active" };
|
|
38
|
+
return tones[stage] || "neutral";
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
function nativeWindowsTone(state, status) {
|
|
42
|
+
if (hasComputerActionFailure(state)) return "attention";
|
|
43
|
+
if (status === "Check needed") return "attention";
|
|
44
|
+
return "neutral";
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
function windowsStoreSummary(state) {
|
|
48
|
+
const snapshot = state.snapshot;
|
|
49
|
+
const invitation = state.windowsStoreInvitation;
|
|
50
|
+
const stage = storeConnectionStage(snapshot, invitation, state.windowsStoreAttempt);
|
|
51
|
+
const content = storeConnectionDisplayContent(stage, snapshot, invitation, state.busy, state.statusUnavailable);
|
|
52
|
+
return {
|
|
53
|
+
title: snapshot.identity?.name || content.step,
|
|
54
|
+
detail: state.error || state.actionError || state.message || content.copy,
|
|
55
|
+
status: content.status,
|
|
56
|
+
tone: windowsStoreTone(state, stage),
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
/** Connection and process-bound permission receipts stay separate facts. */
|
|
61
|
+
export function computerAccessWidgetSummary(state = {}, supported = true) {
|
|
62
|
+
const input = { ...state, supported };
|
|
63
|
+
if (!supported)
|
|
64
|
+
return { title: "Computer connection unavailable", detail: "Computer access setup requires the local Runtime backend.", status: "Unavailable", tone: "neutral" };
|
|
65
|
+
if (state.statusUnavailable)
|
|
66
|
+
return { title: "Check your computer connection", detail: "The current connection status could not be checked.", status: "Status unavailable", tone: "attention" };
|
|
67
|
+
if (!state.snapshot)
|
|
68
|
+
return { title: "Checking this computer…", detail: "", status: "Checking", tone: "neutral" };
|
|
69
|
+
if (isNativeWindowsLocalAccess(state.snapshot)) {
|
|
70
|
+
const presentation = nativeWindowsAccessPresentation(input);
|
|
71
|
+
return {
|
|
72
|
+
title: presentation.title,
|
|
73
|
+
detail: state.error || state.actionError || state.message || presentation.description,
|
|
74
|
+
status: presentation.status,
|
|
75
|
+
tone: nativeWindowsTone(state, presentation.status),
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
if (windowsStorePanelIsAvailable(state.snapshot)) return windowsStoreSummary(state);
|
|
79
|
+
const permissionText = macPermissionSummary(state.snapshot, state.macPermissions, state.nativeMacPermissions);
|
|
80
|
+
const title = state.snapshot.identity?.name || connectionTitle(input);
|
|
81
|
+
if (state.busy)
|
|
82
|
+
return { title, detail: "Waiting for the current connection status…", status: "Checking", tone: "neutral" };
|
|
83
|
+
const feedback = state.error || state.actionError || state.macPermissionError || state.nativeMacPermissionError || state.message;
|
|
84
|
+
const status = connectionStatus(state.snapshot, state.statusUnavailable, state.busy);
|
|
85
|
+
const preview = feedback ? null : computerWidgetPreview(state, title, status);
|
|
86
|
+
return {
|
|
87
|
+
title,
|
|
88
|
+
detail: feedback || permissionText || connectionDescription(input),
|
|
89
|
+
status,
|
|
90
|
+
tone: computerPermissionTone(state, permissionText),
|
|
91
|
+
...(preview ? { preview } : {}),
|
|
92
|
+
};
|
|
93
|
+
}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { escapeHtml } from "../../lib/text-format.js";
|
|
2
2
|
import { canCheckMacPermissions, canCheckNativePermissions, permissionsMatchConnection, permissionsMatchNativeOwner } from "./macos-permission-scopes.js";
|
|
3
3
|
|
|
4
|
-
function hasNativePermissionSurface(snapshot) {
|
|
4
|
+
export function hasNativePermissionSurface(snapshot) {
|
|
5
5
|
if (snapshot?.identity?.os === "macos") return true;
|
|
6
6
|
if (!snapshot?.nativePermissions) return false;
|
|
7
7
|
return snapshot.nativePermissions.reason !== "native_macos_unavailable";
|
|
8
8
|
}
|
|
9
|
-
function permissionSummary(receipt) {
|
|
9
|
+
export function permissionSummary(receipt) {
|
|
10
10
|
if (!receipt) return "not checked";
|
|
11
11
|
if (receipt.permissions.screenRecording !== "granted") return "action needed";
|
|
12
12
|
if (receipt.permissions.accessibility !== "granted") return "action needed";
|
|
@@ -6,6 +6,7 @@ function hasManagedMacPermissionRuntime(version) {
|
|
|
6
6
|
}
|
|
7
7
|
|
|
8
8
|
export function macCompanionPermissionPath(snapshot) {
|
|
9
|
+
if (snapshot?.collectionSource?.mode === "native") return "";
|
|
9
10
|
if (!snapshot?.paired) return "";
|
|
10
11
|
if (snapshot.identity?.os !== "macos") return "";
|
|
11
12
|
if (!hasManagedMacPermissionRuntime(snapshot.companion?.installedVersion))
|
|
@@ -20,6 +21,7 @@ export function macCompanionPermissionPath(snapshot) {
|
|
|
20
21
|
|
|
21
22
|
/** The managed companion keeps its macOS permission subject at one private path. */
|
|
22
23
|
export function renderMacPermissionGuide(snapshot) {
|
|
24
|
+
if (snapshot?.collectionSource?.mode === "native") return "";
|
|
23
25
|
if (!snapshot?.paired) return "";
|
|
24
26
|
if (snapshot.identity?.os !== "macos") return "";
|
|
25
27
|
const version = snapshot.companion?.installedVersion;
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { renderConnectionCard } from "./connection-card.js";
|
|
2
|
+
|
|
3
|
+
/** The server's native Windows facts identify local access, independently of tool readiness. */
|
|
4
|
+
export function isNativeWindowsLocalAccess(snapshot) {
|
|
5
|
+
if (snapshot?.collectionSource?.mode !== "native") return false;
|
|
6
|
+
return snapshot.collectionSource.platform === "windows";
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
export function shouldRenderNativeWindowsAccess(input) {
|
|
10
|
+
if (!input.supported) return false;
|
|
11
|
+
return isNativeWindowsLocalAccess(input.snapshot);
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export function nativeWindowsAccessPresentation(input) {
|
|
15
|
+
if (input.statusUnavailable) return {
|
|
16
|
+
title: "Check Windows access", status: "Status unavailable",
|
|
17
|
+
description: "The current local access status could not be checked. Refresh to try again.",
|
|
18
|
+
};
|
|
19
|
+
if (input.busy) return {
|
|
20
|
+
title: "Checking Windows access…", status: "Checking",
|
|
21
|
+
description: "Waiting for the current local access status…",
|
|
22
|
+
};
|
|
23
|
+
if (input.snapshot?.readiness?.directAccessReady === false) return {
|
|
24
|
+
title: "Check local Windows access", status: "Check needed",
|
|
25
|
+
description: "ABot runs directly on Windows, but direct commands could not be verified. Refresh to check again. Companion pairing is not required for local tools.",
|
|
26
|
+
};
|
|
27
|
+
return {
|
|
28
|
+
title: "Windows access is local", status: "Local",
|
|
29
|
+
description: "ABot runs directly on this Windows computer. Local tools do not need Companion pairing. Compatible plugins and your permission settings determine which actions are available.",
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
function canCompactNativeWindowsAccess(input) {
|
|
34
|
+
if (!input.compact) return false;
|
|
35
|
+
if (input.statusUnavailable || input.busy) return false;
|
|
36
|
+
if (input.error || input.message) return false;
|
|
37
|
+
return input.snapshot?.readiness?.directAccessReady !== false;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
export function renderNativeWindowsAccess(input) {
|
|
41
|
+
const presentation = nativeWindowsAccessPresentation(input);
|
|
42
|
+
const compact = canCompactNativeWindowsAccess(input);
|
|
43
|
+
return renderConnectionCard({
|
|
44
|
+
...presentation, ready: false, compact, disabled: input.busy,
|
|
45
|
+
actions: '<button type="button" class="system-host-card-secondary" data-system-host-refresh' +
|
|
46
|
+
(input.busy ? " disabled" : "") + '>Refresh status</button>',
|
|
47
|
+
error: input.error, message: input.message,
|
|
48
|
+
attributes: "data-system-host-native-windows",
|
|
49
|
+
});
|
|
50
|
+
}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { escapeHtml } from "../../lib/text-format.js";
|
|
2
2
|
import { renderWindowsStoreSetup, windowsStorePanelIsAvailable } from "./windows-store-setup.js";
|
|
3
3
|
import { renderConnectionCard, renderComputerMetadata } from "./connection-card.js";
|
|
4
|
+
import { shouldRenderNativeWindowsAccess, renderNativeWindowsAccess } from "./native-windows-access.js";
|
|
4
5
|
import { macPermissionSummary, renderMacPermissionPreparation } from "./macos-permission-rendering.js";
|
|
5
6
|
import {
|
|
6
7
|
renderMacSetupAction,
|
|
@@ -22,7 +23,7 @@ function pairedCompanionIsOffline(snapshot) {
|
|
|
22
23
|
function hasDirectAccess(snapshot) {
|
|
23
24
|
return ["native", "wsl_interop"].includes(snapshot?.readiness?.route);
|
|
24
25
|
}
|
|
25
|
-
function connectionStatus(snapshot, statusUnavailable, busy) {
|
|
26
|
+
export function connectionStatus(snapshot, statusUnavailable, busy) {
|
|
26
27
|
if (statusUnavailable) return "Status unavailable";
|
|
27
28
|
if (busy || !snapshot) return "Checking";
|
|
28
29
|
if (hostSetupIsReady(snapshot)) return snapshot.identity?.os === "macos" ? "Connected" : "Ready";
|
|
@@ -41,7 +42,7 @@ function readyDescription(snapshot) {
|
|
|
41
42
|
return "Direct commands are available. No extra installation is needed for direct commands.";
|
|
42
43
|
return "You can use computer tools from your ABot chat. Permissions and Spark collection are managed separately.";
|
|
43
44
|
}
|
|
44
|
-
function connectionTitle({ snapshot, supported, statusUnavailable, busy }) {
|
|
45
|
+
export function connectionTitle({ snapshot, supported, statusUnavailable, busy }) {
|
|
45
46
|
if (!supported) return "Computer connection unavailable";
|
|
46
47
|
if (statusUnavailable) return "Check your computer connection";
|
|
47
48
|
if (busy || !snapshot) return "Checking this computer…";
|
|
@@ -54,7 +55,7 @@ function connectionTitle({ snapshot, supported, statusUnavailable, busy }) {
|
|
|
54
55
|
if (platforms.length === 1 && platforms[0] === "linux") return "Connect your Linux computer";
|
|
55
56
|
return "Connect your computer";
|
|
56
57
|
}
|
|
57
|
-
function connectionDescription({ snapshot, supported, statusUnavailable, busy }) {
|
|
58
|
+
export function connectionDescription({ snapshot, supported, statusUnavailable, busy }) {
|
|
58
59
|
if (!supported) return "Computer access setup requires the local Runtime backend.";
|
|
59
60
|
if (statusUnavailable) return "The current connection status could not be checked. Refresh to try again.";
|
|
60
61
|
if (busy || !snapshot) return "Waiting for the current connection status…";
|
|
@@ -123,6 +124,8 @@ function canRenderCompactConnection(input) {
|
|
|
123
124
|
return true;
|
|
124
125
|
}
|
|
125
126
|
export function renderSystemHostConnection(input) {
|
|
127
|
+
if (shouldRenderNativeWindowsAccess(input))
|
|
128
|
+
return renderNativeWindowsAccess(input);
|
|
126
129
|
if (input.supported && windowsStorePanelIsAvailable(input.snapshot)) {
|
|
127
130
|
return renderWindowsStoreSetup({
|
|
128
131
|
snapshot: input.snapshot, invitation: input.windowsStoreInvitation,
|
|
@@ -41,7 +41,7 @@ function storeRepairConfirmationIsCurrent(snapshot, attempt) {
|
|
|
41
41
|
return attempt?.phase === "confirm-repair";
|
|
42
42
|
}
|
|
43
43
|
|
|
44
|
-
function storeConnectionStage(snapshot, invitation, attempt) {
|
|
44
|
+
export function storeConnectionStage(snapshot, invitation, attempt) {
|
|
45
45
|
if (snapshot?.readiness?.ready === true) return "ready";
|
|
46
46
|
if (attempt?.phase === "repairing") return "repairing";
|
|
47
47
|
if (storeRepairConfirmationIsCurrent(snapshot, attempt)) return "confirm-repair";
|
|
@@ -111,7 +111,7 @@ function connectionStageContent(stage, snapshot, invitation, disabled) {
|
|
|
111
111
|
};
|
|
112
112
|
}
|
|
113
113
|
|
|
114
|
-
function storeConnectionDisplayContent(stage, snapshot, invitation, disabled, statusUnavailable) {
|
|
114
|
+
export function storeConnectionDisplayContent(stage, snapshot, invitation, disabled, statusUnavailable) {
|
|
115
115
|
if (statusUnavailable) return {
|
|
116
116
|
status: "Status unavailable", step: "Check your computer connection",
|
|
117
117
|
copy: "The current connection status could not be checked. Refresh to try again.",
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
export async function acknowledgeWorkspaceStorage(storage, documentRoot = document) {
|
|
2
|
+
if (storage.snapshot().introductionSeen) return;
|
|
3
|
+
const dialog = documentRoot.createElement("dialog");
|
|
4
|
+
dialog.className = "workspace-storage-notice";
|
|
5
|
+
dialog.innerHTML = `<h2>Your workspace settings stay with ABot</h2>
|
|
6
|
+
<p>Settings and queued messages are now saved with this ABot installation, across browsers and app restarts.</p>
|
|
7
|
+
<p>This is a one-time fresh start. Previous browser-only pins, archives, model choices, memory review markers and queued messages are not imported.</p>
|
|
8
|
+
<p>Your conversations, memories, configuration and read status are kept. Tool permissions start in <strong>Ask</strong>; you can change them in the composer.</p>
|
|
9
|
+
<p role="alert" hidden></p><button type="button" class="primary">Continue</button>`;
|
|
10
|
+
documentRoot.body.append(dialog);
|
|
11
|
+
dialog.addEventListener("cancel", (event) => event.preventDefault());
|
|
12
|
+
dialog.showModal();
|
|
13
|
+
await new Promise((resolve) => {
|
|
14
|
+
const button = dialog.querySelector("button");
|
|
15
|
+
button.addEventListener("click", async () => {
|
|
16
|
+
button.disabled = true;
|
|
17
|
+
try { await storage.execute({ kind: "introduction" }); dialog.close(); dialog.remove(); resolve(); }
|
|
18
|
+
catch (error) {
|
|
19
|
+
const notice = dialog.querySelector('[role="alert"]');
|
|
20
|
+
notice.textContent = `${error.message} Reload to try again.`;
|
|
21
|
+
notice.hidden = false;
|
|
22
|
+
}
|
|
23
|
+
});
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
export function showWorkspaceStorageFailure(error, documentRoot = document) {
|
|
28
|
+
let notice = documentRoot.querySelector("[data-workspace-storage-error]");
|
|
29
|
+
if (!notice) {
|
|
30
|
+
notice = documentRoot.createElement("div");
|
|
31
|
+
notice.dataset.workspaceStorageError = "";
|
|
32
|
+
notice.setAttribute("role", "alert");
|
|
33
|
+
notice.className = "workspace-storage-failure";
|
|
34
|
+
documentRoot.body.append(notice);
|
|
35
|
+
}
|
|
36
|
+
notice.textContent = `${error.message} Changes are not confirmed. Reload before sending more messages.`;
|
|
37
|
+
}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { createSystemHostConnectionManager } from "./components/system-host/manager.js";
|
|
2
2
|
import { createSystemHostSetupNotice } from "./components/system-host/setup-notice.js";
|
|
3
|
+
import { computerAccessWidgetSummary } from "./components/system-host/home-widget-summary.js";
|
|
3
4
|
|
|
4
5
|
/** One connection owner for configured Home and its shared chat notice. */
|
|
5
6
|
export function createComputerAccessFeature({
|
|
@@ -7,11 +8,13 @@ export function createComputerAccessFeature({
|
|
|
7
8
|
runtimeClient,
|
|
8
9
|
getEnvironmentId = () => "",
|
|
9
10
|
isComputerAccessAvailable = () => true,
|
|
11
|
+
compactHomeWidgets,
|
|
10
12
|
onChange = () => {},
|
|
11
13
|
}) {
|
|
12
14
|
const documentRoot = dom.homeDashboardRoot?.ownerDocument;
|
|
13
15
|
const root = documentRoot?.createElement("section");
|
|
14
16
|
let notice;
|
|
17
|
+
let unregisterWidget = () => {};
|
|
15
18
|
const connection = createSystemHostConnectionManager({
|
|
16
19
|
documentRoot,
|
|
17
20
|
compact: true,
|
|
@@ -27,6 +30,7 @@ export function createComputerAccessFeature({
|
|
|
27
30
|
supportsConnection: () => runtimeClient.supportsSystemHostConnection(),
|
|
28
31
|
onChange: () => {
|
|
29
32
|
notice?.render();
|
|
33
|
+
compactHomeWidgets?.refresh();
|
|
30
34
|
onChange();
|
|
31
35
|
},
|
|
32
36
|
});
|
|
@@ -35,7 +39,7 @@ export function createComputerAccessFeature({
|
|
|
35
39
|
if (!isComputerAccessAvailable()) return false;
|
|
36
40
|
dom.homeWorkspaceButton?.click();
|
|
37
41
|
if (dom.homeWorkspacePanel?.hidden !== false || !root) return false;
|
|
38
|
-
connection.openManagement();
|
|
42
|
+
if (!compactHomeWidgets?.open("computer")) connection.openManagement();
|
|
39
43
|
root.scrollIntoView?.({ block: "start", behavior: "smooth" });
|
|
40
44
|
root.focus({ preventScroll: true });
|
|
41
45
|
return true;
|
|
@@ -45,6 +49,7 @@ export function createComputerAccessFeature({
|
|
|
45
49
|
const ready = isComputerAccessAvailable();
|
|
46
50
|
if (root) root.hidden = !ready;
|
|
47
51
|
connection.setActive(ready);
|
|
52
|
+
compactHomeWidgets?.refresh();
|
|
48
53
|
notice?.render();
|
|
49
54
|
}
|
|
50
55
|
|
|
@@ -71,6 +76,12 @@ export function createComputerAccessFeature({
|
|
|
71
76
|
dom.homeDashboardRoot,
|
|
72
77
|
);
|
|
73
78
|
connection.mount(root);
|
|
79
|
+
unregisterWidget = compactHomeWidgets?.register({
|
|
80
|
+
id: "computer", label: "Computer access", icon: "computer", element: root,
|
|
81
|
+
isAvailable: isComputerAccessAvailable,
|
|
82
|
+
getSummary: () => computerAccessWidgetSummary(connection.state, runtimeClient.supportsSystemHostConnection()),
|
|
83
|
+
onOpen: connection.openManagement,
|
|
84
|
+
}) || unregisterWidget;
|
|
74
85
|
runtimeAvailabilityChanged();
|
|
75
86
|
}
|
|
76
87
|
dom.environmentSelect?.addEventListener("change", connection.environmentChanged);
|
|
@@ -80,6 +91,7 @@ export function createComputerAccessFeature({
|
|
|
80
91
|
open,
|
|
81
92
|
runtimeAvailabilityChanged,
|
|
82
93
|
dispose() {
|
|
94
|
+
unregisterWidget();
|
|
83
95
|
dom.environmentSelect?.removeEventListener("change", connection.environmentChanged);
|
|
84
96
|
notice.dispose();
|
|
85
97
|
connection.dispose();
|
|
@@ -6,6 +6,7 @@ export function createAppliedEnvironmentProjection({
|
|
|
6
6
|
dom,
|
|
7
7
|
selection,
|
|
8
8
|
loadWebConfig,
|
|
9
|
+
changeEnvironment,
|
|
9
10
|
}) {
|
|
10
11
|
let generation = 0;
|
|
11
12
|
let pending = null;
|
|
@@ -23,11 +24,10 @@ export function createAppliedEnvironmentProjection({
|
|
|
23
24
|
);
|
|
24
25
|
}
|
|
25
26
|
|
|
26
|
-
function
|
|
27
|
+
function applyProjection(config, selected) {
|
|
27
28
|
state.config = config;
|
|
28
29
|
selection.renderEnvironmentOptions();
|
|
29
30
|
dom.environmentSelect.value = selected;
|
|
30
|
-
selection.renderAgentPicker();
|
|
31
31
|
}
|
|
32
32
|
|
|
33
33
|
function preferredEnvironmentId(options, selected, defaultId) {
|
|
@@ -36,45 +36,36 @@ export function createAppliedEnvironmentProjection({
|
|
|
36
36
|
return options[0]?.value || "";
|
|
37
37
|
}
|
|
38
38
|
|
|
39
|
-
function
|
|
40
|
-
next,
|
|
41
|
-
previousConfig,
|
|
42
|
-
previousEnvironment,
|
|
43
|
-
) {
|
|
44
|
-
const ChangeEvent = dom.environmentSelect.ownerDocument.defaultView.Event;
|
|
45
|
-
dom.environmentSelect.dispatchEvent(new ChangeEvent("change"));
|
|
46
|
-
if (dom.environmentSelect.value === next) return true;
|
|
47
|
-
restoreProjection(previousConfig, previousEnvironment);
|
|
48
|
-
// Existing listeners also own composer/environment presentation after a refusal.
|
|
49
|
-
dom.environmentSelect.dispatchEvent(new ChangeEvent("change"));
|
|
50
|
-
return false;
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
function flush() {
|
|
39
|
+
async function flush() {
|
|
54
40
|
if (!pending) return "unchanged";
|
|
55
|
-
const previousConfig = state.config;
|
|
56
41
|
const previousEnvironment = selection.selectedEnvironmentId();
|
|
57
|
-
|
|
58
|
-
|
|
42
|
+
const projected = pending;
|
|
43
|
+
const revision = generation;
|
|
59
44
|
const next = preferredEnvironmentId(
|
|
60
|
-
selection.
|
|
45
|
+
selection.configuredEnvironmentOptions(projected),
|
|
61
46
|
previousEnvironment,
|
|
62
|
-
textOf(
|
|
47
|
+
textOf(projected.defaultEnvironmentId).trim(),
|
|
63
48
|
);
|
|
64
|
-
if (!next)
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
}
|
|
68
|
-
dom.environmentSelect.value = next;
|
|
69
|
-
const unchanged = next === previousEnvironment;
|
|
70
|
-
if (unchanged) {
|
|
49
|
+
if (!next) return "blocked";
|
|
50
|
+
if (next === previousEnvironment) {
|
|
51
|
+
applyProjection(projected, next);
|
|
71
52
|
pending = null;
|
|
72
53
|
selection.renderAgentPicker();
|
|
73
54
|
return "unchanged";
|
|
74
55
|
}
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
56
|
+
// Keep the old catalog and selected option until draft preparation commits.
|
|
57
|
+
const commitEnvironmentOptions = () => {
|
|
58
|
+
applyProjection(projected, next);
|
|
59
|
+
pending = null;
|
|
60
|
+
};
|
|
61
|
+
commitEnvironmentOptions.canCommit = () => {
|
|
62
|
+
if (revision !== generation) return false;
|
|
63
|
+
return pending === projected;
|
|
64
|
+
};
|
|
65
|
+
let accepted = false;
|
|
66
|
+
try { accepted = await changeEnvironment(next, { commitEnvironmentOptions }); }
|
|
67
|
+
catch { /* The old catalog remains active when draft persistence fails. */ }
|
|
68
|
+
if (!accepted) return "blocked";
|
|
78
69
|
selection.renderAgentPicker();
|
|
79
70
|
return "changed";
|
|
80
71
|
}
|
|
@@ -87,6 +78,7 @@ export function createConfigurationFeature({
|
|
|
87
78
|
state,
|
|
88
79
|
selection,
|
|
89
80
|
onConfigurationApplied,
|
|
81
|
+
changeEnvironment,
|
|
90
82
|
...options
|
|
91
83
|
}) {
|
|
92
84
|
const projection = createAppliedEnvironmentProjection({
|
|
@@ -94,6 +86,7 @@ export function createConfigurationFeature({
|
|
|
94
86
|
dom: options.dom,
|
|
95
87
|
selection,
|
|
96
88
|
loadWebConfig: () => options.runtimeClient.loadWebConfig(),
|
|
89
|
+
changeEnvironment,
|
|
97
90
|
});
|
|
98
91
|
const workspace = createWorkspaceFeature({
|
|
99
92
|
...options,
|
|
@@ -101,13 +94,13 @@ export function createConfigurationFeature({
|
|
|
101
94
|
const currentStillConfigured = await projection.prepare();
|
|
102
95
|
if (currentStillConfigured) await onConfigurationApplied();
|
|
103
96
|
},
|
|
104
|
-
onConfigurationSettled: () => projection.flush() !== "blocked",
|
|
97
|
+
onConfigurationSettled: async () => await projection.flush() !== "blocked",
|
|
105
98
|
});
|
|
106
99
|
return {
|
|
107
100
|
...workspace,
|
|
108
101
|
async reloadAppliedEnvironmentModels() {
|
|
109
102
|
await projection.prepare();
|
|
110
|
-
const result = projection.flush();
|
|
103
|
+
const result = await projection.flush();
|
|
111
104
|
if (result === "blocked") return false;
|
|
112
105
|
if (result === "changed") return true;
|
|
113
106
|
const refreshed = await workspace.load();
|
|
@@ -22,6 +22,7 @@ export function createConfigurationFeature({
|
|
|
22
22
|
getLearningSnapshot = () => null,
|
|
23
23
|
isRuntimeReady = () => true,
|
|
24
24
|
isComputerAccessAvailable = () => true,
|
|
25
|
+
compactHomeWidgets,
|
|
25
26
|
}) {
|
|
26
27
|
let configWorkspace;
|
|
27
28
|
let activation;
|
|
@@ -107,6 +108,7 @@ export function createConfigurationFeature({
|
|
|
107
108
|
let homeSetupSuggestion;
|
|
108
109
|
const computerAccess = createComputerAccessFeature({
|
|
109
110
|
dom,
|
|
111
|
+
compactHomeWidgets,
|
|
110
112
|
runtimeClient,
|
|
111
113
|
getEnvironmentId: selectedEnvironmentId,
|
|
112
114
|
isComputerAccessAvailable,
|
|
@@ -278,7 +280,15 @@ export function createConfigurationFeature({
|
|
|
278
280
|
"Finish or cancel model setup before leaving configuration.";
|
|
279
281
|
return null;
|
|
280
282
|
}
|
|
281
|
-
|
|
283
|
+
const prepared = prepareDiscardChanges(...args);
|
|
284
|
+
if (typeof prepared !== "function") return prepared;
|
|
285
|
+
const commit = () => prepared();
|
|
286
|
+
commit.canCommit = () => {
|
|
287
|
+
if (pluginManager.hasConfigurationDraft()) return false;
|
|
288
|
+
if (modelSetup.isOpen()) return false;
|
|
289
|
+
return prepared.canCommit?.() !== false;
|
|
290
|
+
};
|
|
291
|
+
return commit;
|
|
282
292
|
},
|
|
283
293
|
};
|
|
284
294
|
}
|