@abot-ai/runtime 1.3.0 → 1.4.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/dist/plugins/system/source/application-catalog.d.ts +14 -0
- package/dist/plugins/system/source/application-catalog.js +185 -0
- package/dist/plugins/system/source/application-launch.d.ts +10 -0
- package/dist/plugins/system/source/application-launch.js +80 -0
- package/dist/plugins/system/source/application-observation.d.ts +25 -0
- package/dist/plugins/system/source/application-observation.js +53 -0
- package/dist/plugins/system/source/commands.d.ts +7 -0
- package/dist/plugins/system/source/commands.js +71 -0
- package/dist/plugins/system/source/companion/autostart.d.ts +16 -0
- package/dist/plugins/system/source/companion/autostart.js +146 -0
- package/dist/plugins/system/source/companion/broker-location.d.ts +11 -0
- package/dist/plugins/system/source/companion/broker-location.js +76 -0
- package/dist/plugins/system/source/companion/broker-server.d.ts +4 -0
- package/dist/plugins/system/source/companion/broker-server.js +147 -0
- package/dist/plugins/system/source/companion/connection.d.ts +25 -0
- package/dist/plugins/system/source/companion/connection.js +182 -0
- package/dist/plugins/system/source/companion/liveness.d.ts +3 -0
- package/dist/plugins/system/source/companion/liveness.js +20 -0
- package/dist/plugins/system/source/companion/native-address.d.ts +12 -0
- package/dist/plugins/system/source/companion/native-address.js +41 -0
- package/dist/plugins/system/source/companion/native-identity.d.ts +2 -0
- package/dist/plugins/system/source/companion/native-identity.js +23 -0
- package/dist/plugins/system/source/companion/native-messages.d.ts +9 -0
- package/dist/plugins/system/source/companion/native-messages.js +77 -0
- package/dist/plugins/system/source/companion/native-session.d.ts +19 -0
- package/dist/plugins/system/source/companion/native-session.js +205 -0
- package/dist/plugins/system/source/companion/native-state.d.ts +22 -0
- package/dist/plugins/system/source/companion/native-state.js +126 -0
- package/dist/plugins/system/source/companion/native-supervisor.d.ts +10 -0
- package/dist/plugins/system/source/companion/native-supervisor.js +93 -0
- package/dist/plugins/system/source/companion/pairing-store.d.ts +22 -0
- package/dist/plugins/system/source/companion/pairing-store.js +102 -0
- package/dist/plugins/system/source/companion/private-store.d.ts +4 -0
- package/dist/plugins/system/source/companion/private-store.js +59 -0
- package/dist/plugins/system/source/companion/process-owner-identity.d.ts +22 -0
- package/dist/plugins/system/source/companion/process-owner-identity.js +144 -0
- package/dist/plugins/system/source/companion/protocol.d.ts +57 -0
- package/dist/plugins/system/source/companion/protocol.js +66 -0
- package/dist/plugins/system/source/contracts.d.ts +38 -0
- package/dist/plugins/system/source/contracts.js +7 -0
- package/dist/plugins/system/source/elevation.d.ts +8 -0
- package/dist/plugins/system/source/elevation.js +57 -0
- package/dist/plugins/system/source/handlers.d.ts +3 -0
- package/dist/plugins/system/source/handlers.js +90 -0
- package/dist/plugins/system/source/host-evidence.d.ts +4 -0
- package/dist/plugins/system/source/host-evidence.js +52 -0
- package/dist/plugins/system/source/host-observation.d.ts +25 -0
- package/dist/plugins/system/source/host-observation.js +59 -0
- package/dist/plugins/system/source/process-result.d.ts +4 -0
- package/dist/plugins/system/source/process-result.js +86 -0
- package/dist/plugins/system/source/process-runner.d.ts +3 -0
- package/dist/plugins/system/source/process-runner.js +103 -0
- package/dist/plugins/system/source/target-observation.d.ts +18 -0
- package/dist/plugins/system/source/target-observation.js +29 -0
- package/dist/plugins/system/source/targets.d.ts +8 -0
- package/dist/plugins/system/source/targets.js +101 -0
- package/dist/scripts/add-runtime-model.js +10 -53
- package/dist/scripts/init-runtime.js +4 -13
- package/dist/scripts/runtime-model-addition.d.ts +13 -0
- package/dist/scripts/runtime-model-addition.js +53 -0
- package/dist/scripts/runtime-setup-directories.d.ts +2 -0
- package/dist/scripts/runtime-setup-directories.js +38 -0
- package/dist/scripts/runtime-setup-files.d.ts +3 -1
- package/dist/scripts/runtime-setup-files.js +18 -1
- package/dist/src/capabilities/file-output-presentation.d.ts +43 -0
- package/dist/src/capabilities/file-output-presentation.js +133 -0
- package/dist/src/capabilities/tool-definition-validator/definition-parser.js +2 -0
- package/dist/src/capabilities/tool-definition-validator/event-input-text-options.d.ts +5 -0
- package/dist/src/capabilities/tool-definition-validator/event-input-text-options.js +37 -0
- package/dist/src/capabilities/tool-definition-validator/event-presentation.js +3 -0
- package/dist/src/capabilities/tool-definition-validator/module-registry.js +12 -0
- package/dist/src/capabilities/tool-event-input-text.d.ts +9 -0
- package/dist/src/capabilities/tool-event-input-text.js +64 -0
- package/dist/src/capabilities/tool-event-metadata.js +10 -0
- package/dist/src/capabilities/tool-executor.d.ts +1 -0
- package/dist/src/capabilities/tool-executor.js +1 -0
- package/dist/src/capabilities/tool-permission-mode.d.ts +7 -0
- package/dist/src/capabilities/tool-permission-mode.js +27 -0
- package/dist/src/capabilities/tool-types.d.ts +18 -2
- package/dist/src/cli/abot.js +18 -15
- package/dist/src/cli/host-companion-bundle.mjs +5201 -0
- package/dist/src/cli/host-companion-entry.d.ts +8 -0
- package/dist/src/cli/host-companion-entry.js +70 -0
- package/dist/src/cli/host-companion-startup.d.ts +4 -0
- package/dist/src/cli/host-companion-startup.js +35 -0
- package/dist/src/cli/host-companion.d.ts +5 -0
- package/dist/src/cli/host-companion.js +203 -0
- package/dist/src/model-gateway/server/configuration.js +4 -1
- package/dist/src/model-gateway/server/contracts.d.ts +2 -0
- package/dist/src/plugin-contract/entrypoint.d.ts +4 -2
- package/dist/src/plugin-contract/manifest.d.ts +1 -0
- package/dist/src/runtime/adapters/config-file-transaction.d.ts +46 -0
- package/dist/src/runtime/adapters/config-file-transaction.js +158 -0
- package/dist/src/runtime/adapters/configured-skill-provider.js +3 -3
- package/dist/src/runtime/adapters/in-memory-session-store.js +11 -1
- package/dist/src/runtime/adapters/long-term-memory/file-lock/acquisition.js +7 -3
- package/dist/src/runtime/adapters/long-term-memory/file-lock/contracts.d.ts +4 -1
- package/dist/src/runtime/adapters/long-term-memory/file-lock/install.d.ts +1 -1
- package/dist/src/runtime/adapters/long-term-memory/file-lock/install.js +5 -1
- package/dist/src/runtime/adapters/long-term-memory/file-lock/owner-identity.d.ts +3 -0
- package/dist/src/runtime/adapters/long-term-memory/file-lock/owner-identity.js +15 -0
- package/dist/src/runtime/adapters/long-term-memory/file-lock/owner-record.js +2 -0
- package/dist/src/runtime/adapters/long-term-memory/onboarding-config-repository.js +17 -43
- package/dist/src/runtime/adapters/registered-tool-normal-invocations/catalog/registrations.js +6 -2
- package/dist/src/runtime/adapters/registered-tool-normal-invocations/execution/approval.js +10 -1
- package/dist/src/runtime/adapters/registered-tool-normal-invocations/execution/execution-binding.d.ts +11 -0
- package/dist/src/runtime/adapters/registered-tool-normal-invocations/execution/execution-binding.js +37 -0
- package/dist/src/runtime/adapters/registered-tool-normal-invocations/execution/file-output-presentation.d.ts +7 -0
- package/dist/src/runtime/adapters/registered-tool-normal-invocations/execution/file-output-presentation.js +105 -0
- package/dist/src/runtime/adapters/registered-tool-normal-invocations/execution/run.js +29 -3
- package/dist/src/runtime/adapters/registered-tool-normal-invocations/shared/action-fingerprint.d.ts +1 -0
- package/dist/src/runtime/adapters/registered-tool-normal-invocations/shared/action-fingerprint.js +1 -0
- package/dist/src/runtime/capabilities/configured-tool-registry.js +9 -1
- package/dist/src/runtime/capabilities/file-output-root-identity.d.ts +5 -0
- package/dist/src/runtime/capabilities/file-output-root-identity.js +146 -0
- package/dist/src/runtime/capabilities/file-output-root-marker-creation.d.ts +5 -0
- package/dist/src/runtime/capabilities/file-output-root-marker-creation.js +63 -0
- package/dist/src/runtime/capabilities/request-bound-tool-registry.d.ts +1 -0
- package/dist/src/runtime/capabilities/request-bound-tool-registry.js +6 -1
- package/dist/src/runtime/capabilities/request-module-preparation.d.ts +3 -0
- package/dist/src/runtime/capabilities/request-module-preparation.js +102 -0
- package/dist/src/runtime/capabilities/request-permission-catalog.d.ts +10 -0
- package/dist/src/runtime/capabilities/request-permission-catalog.js +50 -0
- package/dist/src/runtime/capabilities/request-permission-tool-registry.d.ts +4 -0
- package/dist/src/runtime/capabilities/request-permission-tool-registry.js +61 -0
- package/dist/src/runtime/capabilities/request-runtime-tool-registry.d.ts +3 -0
- package/dist/src/runtime/capabilities/request-runtime-tool-registry.js +5 -2
- package/dist/src/runtime/capabilities/request-working-directory.d.ts +3 -0
- package/dist/src/runtime/capabilities/request-working-directory.js +12 -0
- package/dist/src/runtime/composition.d.ts +2 -0
- package/dist/src/runtime/config/runner/loader.d.ts +4 -0
- package/dist/src/runtime/config/runner/loader.js +23 -3
- package/dist/src/runtime/context/capability-brief-budget.d.ts +18 -0
- package/dist/src/runtime/context/capability-brief-budget.js +38 -0
- package/dist/src/runtime/context/capability-brief-readmission.d.ts +21 -0
- package/dist/src/runtime/context/capability-brief-readmission.js +47 -0
- package/dist/src/runtime/context/capability-brief.d.ts +9 -2
- package/dist/src/runtime/context/capability-brief.js +21 -39
- package/dist/src/runtime/context/capability-descriptions.d.ts +3 -0
- package/dist/src/runtime/context/capability-descriptions.js +23 -0
- package/dist/src/runtime/default-environment-adapters.js +3 -4
- package/dist/src/runtime/local-application.d.ts +18 -0
- package/dist/src/runtime/local-application.js +12 -0
- package/dist/src/runtime/local-host/app-service-dispatch.d.ts +1 -0
- package/dist/src/runtime/local-host/app-service-dispatch.js +9 -0
- package/dist/src/runtime/local-host/client-services.d.ts +16 -0
- package/dist/src/runtime/local-host/client-services.js +3 -2
- package/dist/src/runtime/local-host/contracts.d.ts +4 -0
- package/dist/src/runtime/local-host/startup-connection.js +22 -7
- package/dist/src/runtime/local-host/transport.js +14 -2
- package/dist/src/runtime/orchestration/role-calls/candidate-validation.js +5 -2
- package/dist/src/runtime/orchestration/role-calls/command-decoder.js +3 -0
- package/dist/src/runtime/orchestration/role-calls/command-dispatch/work-plan-transition.d.ts +3 -0
- package/dist/src/runtime/orchestration/role-calls/command-dispatch/work-plan-transition.js +46 -0
- package/dist/src/runtime/orchestration/role-calls/command-dispatch.js +3 -0
- package/dist/src/runtime/orchestration/role-calls/contracts.d.ts +8 -4
- package/dist/src/runtime/orchestration/role-calls/transactions.js +2 -0
- package/dist/src/runtime/orchestration/role-calls/work-plan-contracts.d.ts +48 -0
- package/dist/src/runtime/orchestration/role-calls/work-plan-contracts.js +9 -0
- package/dist/src/runtime/orchestration/role-calls/work-plan-source.d.ts +7 -0
- package/dist/src/runtime/orchestration/role-calls/work-plan-source.js +85 -0
- package/dist/src/runtime/orchestration/role-calls/work-plan-transactions.d.ts +3 -0
- package/dist/src/runtime/orchestration/role-calls/work-plan-transactions.js +17 -0
- package/dist/src/runtime/orchestration/role-calls/work-plan-validation.d.ts +10 -0
- package/dist/src/runtime/orchestration/role-calls/work-plan-validation.js +149 -0
- package/dist/src/runtime/orchestration/worker-capabilities/contracts.d.ts +1 -1
- package/dist/src/runtime/orchestration/worker-capabilities/contracts.js +1 -1
- package/dist/src/runtime/plugins/compiled-catalog.d.ts +2 -1
- package/dist/src/runtime/plugins/configured-manifests.d.ts +3 -0
- package/dist/src/runtime/plugins/configured-manifests.js +37 -0
- package/dist/src/runtime/plugins/entrypoint-validation.d.ts +6 -0
- package/dist/src/runtime/plugins/entrypoint-validation.js +74 -0
- package/dist/src/runtime/plugins/loader.js +11 -123
- package/dist/src/runtime/plugins/manifest-discovery.d.ts +4 -1
- package/dist/src/runtime/plugins/manifest-discovery.js +8 -1
- package/dist/src/runtime/plugins/manifest-projection.js +3 -0
- package/dist/src/runtime/plugins/manifest-validator.js +7 -1
- package/dist/src/runtime/plugins/runtime-capability-plugins.d.ts +4 -0
- package/dist/src/runtime/plugins/runtime-capability-plugins.js +7 -0
- package/dist/src/runtime/plugins/selection.d.ts +14 -0
- package/dist/src/runtime/plugins/selection.js +38 -0
- package/dist/src/runtime/ports.d.ts +8 -2
- package/dist/src/runtime/projects/contracts.d.ts +40 -0
- package/dist/src/runtime/projects/contracts.js +10 -0
- package/dist/src/runtime/projects/folders.d.ts +7 -0
- package/dist/src/runtime/projects/folders.js +110 -0
- package/dist/src/runtime/projects/repository.d.ts +10 -0
- package/dist/src/runtime/projects/repository.js +54 -0
- package/dist/src/runtime/projects/service.d.ts +3 -0
- package/dist/src/runtime/projects/service.js +34 -0
- package/dist/src/runtime/projects/session-paths.d.ts +5 -0
- package/dist/src/runtime/projects/session-paths.js +13 -0
- package/dist/src/runtime/request/execution-agent-plan-update.d.ts +4 -0
- package/dist/src/runtime/request/execution-agent-plan-update.js +13 -0
- package/dist/src/runtime/request/execution-agent-root-execution.js +9 -1
- package/dist/src/runtime/request/handler.js +9 -2
- package/dist/src/runtime/request/input.d.ts +2 -1
- package/dist/src/runtime/request/input.js +1 -6
- package/dist/src/runtime/request/role-call-planner-events.js +4 -0
- package/dist/src/runtime/request/role-executor-composition.js +9 -1
- package/dist/src/runtime/request/root-contract.d.ts +6 -1
- package/dist/src/runtime/request/root-execution-kernel.js +17 -0
- package/dist/src/runtime/request/root-plan-event-projection.d.ts +3 -0
- package/dist/src/runtime/request/root-plan-event-projection.js +32 -0
- package/dist/src/runtime/request/root-plan-update.d.ts +15 -0
- package/dist/src/runtime/request/root-plan-update.js +20 -0
- package/dist/src/runtime/request/worker-capability-composition.d.ts +1 -0
- package/dist/src/runtime/request/worker-capability-composition.js +2 -0
- package/dist/src/runtime/runtime-environment.d.ts +1 -0
- package/dist/src/runtime/runtime-environment.js +2 -0
- package/dist/src/runtime/steps/auditor-decision/advisory-receipt.d.ts +32 -0
- package/dist/src/runtime/steps/auditor-decision/advisory-receipt.js +106 -0
- package/dist/src/runtime/steps/auditor-decision/advisory-result-budget.d.ts +5 -0
- package/dist/src/runtime/steps/auditor-decision/advisory-result-budget.js +40 -0
- package/dist/src/runtime/steps/auditor-decision/audit-input-state.d.ts +12 -0
- package/dist/src/runtime/steps/auditor-decision/audit-input-state.js +101 -0
- package/dist/src/runtime/steps/auditor-decision/contracts.d.ts +31 -16
- package/dist/src/runtime/steps/auditor-decision/contracts.js +3 -3
- package/dist/src/runtime/steps/auditor-decision/evidence-binding.d.ts +5 -0
- package/dist/src/runtime/steps/auditor-decision/evidence-binding.js +43 -0
- package/dist/src/runtime/steps/auditor-decision/evidence-coverage.d.ts +2 -0
- package/dist/src/runtime/steps/auditor-decision/evidence-coverage.js +71 -0
- package/dist/src/runtime/steps/auditor-decision/evidence-inventory.d.ts +13 -0
- package/dist/src/runtime/steps/auditor-decision/evidence-inventory.js +89 -0
- package/dist/src/runtime/steps/auditor-decision/evidence-representation.d.ts +10 -0
- package/dist/src/runtime/steps/auditor-decision/evidence-representation.js +56 -0
- package/dist/src/runtime/steps/auditor-decision/evidence-selection.d.ts +9 -0
- package/dist/src/runtime/steps/auditor-decision/evidence-selection.js +71 -0
- package/dist/src/runtime/steps/auditor-decision/format.js +44 -2
- package/dist/src/runtime/steps/auditor-decision/index.d.ts +3 -0
- package/dist/src/runtime/steps/auditor-decision/index.js +3 -0
- package/dist/src/runtime/steps/auditor-decision/input.d.ts +2 -2
- package/dist/src/runtime/steps/auditor-decision/input.js +64 -20
- package/dist/src/runtime/steps/auditor-decision/parser.js +38 -23
- package/dist/src/runtime/steps/auditor-decision/projection.js +49 -99
- package/dist/src/runtime/steps/auditor-decision/prompt.d.ts +1 -1
- package/dist/src/runtime/steps/auditor-decision/prompt.js +9 -4
- package/dist/src/runtime/steps/auditor-decision/run.js +79 -47
- package/dist/src/runtime/steps/execution-agent/contracts.d.ts +8 -1
- package/dist/src/runtime/steps/execution-agent/contracts.js +2 -0
- package/dist/src/runtime/steps/execution-agent/decision-parsing.js +4 -0
- package/dist/src/runtime/steps/execution-agent/format.js +4 -3
- package/dist/src/runtime/steps/execution-agent/input.js +10 -11
- package/dist/src/runtime/steps/execution-agent/prompt.d.ts +1 -0
- package/dist/src/runtime/steps/execution-agent/prompt.js +11 -4
- package/dist/src/runtime/steps/execution-agent/state-context.js +10 -0
- package/dist/src/runtime/steps/execution-agent/work-plan-contract.d.ts +18 -0
- package/dist/src/runtime/steps/execution-agent/work-plan-contract.js +86 -0
- package/dist/src/runtime/steps/execution-agent/work-plan-decision-parsing.d.ts +2 -0
- package/dist/src/runtime/steps/execution-agent/work-plan-decision-parsing.js +38 -0
- package/dist/src/runtime/steps/execution-agent/work-plan-sources.d.ts +6 -0
- package/dist/src/runtime/steps/execution-agent/work-plan-sources.js +54 -0
- package/dist/src/runtime/steps/planner-decision/capability-brief.d.ts +40 -0
- package/dist/src/runtime/steps/planner-decision/capability-brief.js +47 -0
- package/dist/src/runtime/steps/planner-decision/input.d.ts +4 -2
- package/dist/src/runtime/steps/planner-decision/input.js +23 -13
- package/dist/src/runtime/steps/planner-decision/prompt.js +2 -2
- package/dist/src/runtime/steps/planner-decision/run.js +11 -7
- package/dist/src/runtime/steps/planner-graph/parser.js +0 -11
- package/dist/src/runtime/steps/planner-graph/prompt.js +2 -1
- package/dist/src/runtime/steps/supervisor-decision/capability-brief-readmission.d.ts +10 -0
- package/dist/src/runtime/steps/supervisor-decision/capability-brief-readmission.js +39 -0
- package/dist/src/runtime/steps/supervisor-decision/run.js +2 -1
- package/dist/src/runtime/steps/worker-decision/parser/accepted-decision.d.ts +3 -1
- package/dist/src/runtime/steps/worker-decision/parser/accepted-decision.js +20 -1
- package/dist/src/runtime/steps/worker-decision/parser/capability-batch-validation.d.ts +1 -1
- package/dist/src/runtime/steps/worker-decision/parser/capability-batch-validation.js +6 -6
- package/dist/src/runtime/steps/worker-decision/parser/capability-invocation-validation.js +2 -1
- package/dist/src/sessions/project-binding.d.ts +12 -0
- package/dist/src/sessions/project-binding.js +49 -0
- package/dist/src/sessions/record/projection.d.ts +6 -1
- package/dist/src/sessions/record/projection.js +1 -0
- package/dist/src/sessions/session-service.d.ts +2 -1
- package/dist/src/sessions/session-service.js +11 -1
- package/dist/src/sessions/types.d.ts +7 -0
- package/dist/src/shared/directory-authority/bootstrap.d.ts +1 -0
- package/dist/src/shared/directory-authority/bootstrap.js +118 -0
- package/dist/src/shared/directory-authority/command.d.ts +8 -0
- package/dist/src/shared/directory-authority/command.js +27 -0
- package/dist/src/shared/directory-authority/errors.d.ts +5 -0
- package/dist/src/shared/directory-authority/errors.js +10 -0
- package/dist/src/shared/directory-authority/index.d.ts +3 -0
- package/dist/src/shared/directory-authority/index.js +3 -0
- package/dist/src/shared/directory-authority/protocol.d.ts +11 -0
- package/dist/src/shared/directory-authority/protocol.js +62 -0
- package/dist/src/shared/directory-authority/task.d.ts +7 -0
- package/dist/src/shared/directory-authority/task.js +97 -0
- package/dist/src/web-ui/app/ARCHITECTURE.md +121 -1
- package/dist/src/web-ui/app/app-bootstrap.js +3 -0
- package/dist/src/web-ui/app/app-dom.js +3 -0
- package/dist/src/web-ui/app/app-state.js +38 -0
- package/dist/src/web-ui/app/app.js +76 -67
- package/dist/src/web-ui/app/components/config-workspace/config-model.js +23 -3
- package/dist/src/web-ui/app/components/config-workspace/dashboard-rendering.js +2 -0
- package/dist/src/web-ui/app/components/config-workspace/field-rendering.js +2 -0
- package/dist/src/web-ui/app/components/config-workspace/model-rendering.js +6 -0
- package/dist/src/web-ui/app/components/config-workspace/model-setup-entry.js +27 -0
- package/dist/src/web-ui/app/components/config-workspace/raw-config-repair.js +28 -0
- package/dist/src/web-ui/app/components/config-workspace/workspace-events.js +5 -0
- package/dist/src/web-ui/app/components/config-workspace/workspace-mutations.js +23 -3
- package/dist/src/web-ui/app/components/config-workspace/workspace-persistence.js +26 -8
- package/dist/src/web-ui/app/components/config-workspace/workspace-view.js +56 -0
- package/dist/src/web-ui/app/components/config-workspace.js +11 -0
- package/dist/src/web-ui/app/components/conversation-activity.d.ts +6 -0
- package/dist/src/web-ui/app/components/conversation-activity.js +10 -2
- package/dist/src/web-ui/app/components/conversation-file-action.js +33 -0
- package/dist/src/web-ui/app/components/conversation-file-focus.d.ts +12 -0
- package/dist/src/web-ui/app/components/conversation-file-focus.js +149 -0
- package/dist/src/web-ui/app/components/conversation-file-preview.d.ts +23 -0
- package/dist/src/web-ui/app/components/conversation-file-preview.js +247 -0
- package/dist/src/web-ui/app/components/conversation-role-cards.d.ts +6 -0
- package/dist/src/web-ui/app/components/conversation-role-cards.js +10 -2
- package/dist/src/web-ui/app/components/conversation-tool-evidence.d.ts +9 -0
- package/dist/src/web-ui/app/components/conversation-tool-evidence.js +129 -0
- package/dist/src/web-ui/app/components/conversation-tools.d.ts +6 -0
- package/dist/src/web-ui/app/components/conversation-tools.js +25 -105
- package/dist/src/web-ui/app/components/conversation-view.js +10 -1
- package/dist/src/web-ui/app/components/dashboard/workspace.js +19 -7
- package/dist/src/web-ui/app/components/model-setup/rendering.js +99 -0
- package/dist/src/web-ui/app/components/model-setup/save-flow.js +111 -0
- package/dist/src/web-ui/app/components/model-setup/save-outcome.js +16 -0
- package/dist/src/web-ui/app/components/model-setup/validation.js +125 -0
- package/dist/src/web-ui/app/components/model-setup/wizard.d.ts +44 -0
- package/dist/src/web-ui/app/components/model-setup/wizard.js +370 -0
- package/dist/src/web-ui/app/components/plugins/manager.js +200 -0
- package/dist/src/web-ui/app/components/plugins/rendering.js +124 -0
- package/dist/src/web-ui/app/components/plugins/view-state.js +123 -0
- package/dist/src/web-ui/app/components/project-creation.js +119 -0
- package/dist/src/web-ui/app/components/project-session-groups.js +95 -0
- package/dist/src/web-ui/app/components/runtime-config-activation.js +83 -0
- package/dist/src/web-ui/app/components/runtime-setup/bridge-guide.d.ts +9 -0
- package/dist/src/web-ui/app/components/runtime-setup/bridge-guide.js +198 -0
- package/dist/src/web-ui/app/components/runtime-setup/bridge-rendering.js +107 -0
- package/dist/src/web-ui/app/components/runtime-setup/commands.js +54 -0
- package/dist/src/web-ui/app/components/runtime-setup/configuration-recovery.js +25 -0
- package/dist/src/web-ui/app/components/runtime-setup/connection-form.js +154 -0
- package/dist/src/web-ui/app/components/runtime-setup/connection-state.js +71 -0
- package/dist/src/web-ui/app/components/runtime-setup/context-window.js +18 -0
- package/dist/src/web-ui/app/components/runtime-setup/embedding-credential-status.d.ts +15 -0
- package/dist/src/web-ui/app/components/runtime-setup/embedding-credential-status.js +87 -0
- package/dist/src/web-ui/app/components/runtime-setup/embedding-provider-receipt.js +30 -0
- package/dist/src/web-ui/app/components/runtime-setup/embedding-rendering.js +57 -0
- package/dist/src/web-ui/app/components/runtime-setup/embedding.js +284 -0
- package/dist/src/web-ui/app/components/runtime-setup/optional-steps.js +117 -0
- package/dist/src/web-ui/app/components/runtime-setup/plugins.js +173 -0
- package/dist/src/web-ui/app/components/runtime-setup/rendering.js +141 -0
- package/dist/src/web-ui/app/components/runtime-setup/validation.js +69 -0
- package/dist/src/web-ui/app/components/runtime-setup/view-state.js +58 -0
- package/dist/src/web-ui/app/components/runtime-setup/wizard-shell.js +27 -0
- package/dist/src/web-ui/app/components/runtime-setup-guide.d.ts +66 -5
- package/dist/src/web-ui/app/components/runtime-setup-guide.js +415 -461
- package/dist/src/web-ui/app/components/system-host/download.js +38 -0
- package/dist/src/web-ui/app/components/system-host/manager.js +249 -0
- package/dist/src/web-ui/app/components/system-host/rendering.js +88 -0
- package/dist/src/web-ui/app/components/system-host/setup-notice.js +87 -0
- package/dist/src/web-ui/app/components/system-host/visibility.js +35 -0
- package/dist/src/web-ui/app/components/tool-approval-card.d.ts +4 -0
- package/dist/src/web-ui/app/components/tool-approval-card.js +15 -0
- package/dist/src/web-ui/app/configuration-environment-refresh.js +118 -0
- package/dist/src/web-ui/app/configuration-feature.js +125 -4
- package/dist/src/web-ui/app/controllers/app-event-bindings.js +2 -0
- package/dist/src/web-ui/app/controllers/composer-workspace-controller.d.ts +1 -0
- package/dist/src/web-ui/app/controllers/composer-workspace-controller.js +4 -3
- package/dist/src/web-ui/app/controllers/conversation-file-preview-controller.d.ts +24 -0
- package/dist/src/web-ui/app/controllers/conversation-file-preview-controller.js +158 -0
- package/dist/src/web-ui/app/controllers/conversation-file-preview-feature.d.ts +19 -0
- package/dist/src/web-ui/app/controllers/conversation-file-preview-feature.js +63 -0
- package/dist/src/web-ui/app/controllers/conversation-session-controller.d.ts +1 -0
- package/dist/src/web-ui/app/controllers/conversation-session-controller.js +2 -0
- package/dist/src/web-ui/app/controllers/conversation-view-feature.js +28 -0
- package/dist/src/web-ui/app/controllers/dashboard-controller.js +17 -0
- package/dist/src/web-ui/app/controllers/projects-controller.d.ts +45 -0
- package/dist/src/web-ui/app/controllers/projects-controller.js +278 -0
- package/dist/src/web-ui/app/controllers/realtime-event-controller.js +3 -0
- package/dist/src/web-ui/app/controllers/runtime-onboarding-controller.js +13 -6
- package/dist/src/web-ui/app/controllers/runtime-selection-controller.d.ts +7 -1
- package/dist/src/web-ui/app/controllers/runtime-selection-controller.js +11 -95
- package/dist/src/web-ui/app/controllers/session-controller.js +64 -57
- package/dist/src/web-ui/app/controllers/tool-permission-mode-controller.d.ts +20 -0
- package/dist/src/web-ui/app/controllers/tool-permission-mode-controller.js +116 -0
- package/dist/src/web-ui/app/dashboard-feature.js +32 -10
- package/dist/src/web-ui/app/index.html +44 -7
- package/dist/src/web-ui/app/lib/conversation-file-preview.d.ts +12 -0
- package/dist/src/web-ui/app/lib/conversation-file-reference.d.ts +30 -0
- package/dist/src/web-ui/app/lib/conversation-file-reference.js +66 -0
- package/dist/src/web-ui/app/lib/tool-activity-event.d.ts +2 -0
- package/dist/src/web-ui/app/lib/tool-activity-event.js +18 -6
- package/dist/src/web-ui/app/lib/tool-activity-model.d.ts +2 -0
- package/dist/src/web-ui/app/lib/tool-activity-model.js +4 -2
- package/dist/src/web-ui/app/lib/tool-permission-mode.d.ts +16 -0
- package/dist/src/web-ui/app/lib/tool-permission-mode.js +60 -0
- package/dist/src/web-ui/app/lib/tool-process-activity-fields.js +102 -0
- package/dist/src/web-ui/app/projects-feature.js +134 -0
- package/dist/src/web-ui/app/runtime-onboarding-feature.d.ts +34 -0
- package/dist/src/web-ui/app/runtime-onboarding-feature.js +92 -0
- package/dist/src/web-ui/app/runtime-setup-page-lifecycle.d.ts +5 -0
- package/dist/src/web-ui/app/runtime-setup-page-lifecycle.js +13 -0
- package/dist/src/web-ui/app/services/client-preferences.d.ts +24 -0
- package/dist/src/web-ui/app/services/client-preferences.js +32 -19
- package/dist/src/web-ui/app/services/runtime-web-client/configuration.js +46 -0
- package/dist/src/web-ui/app/services/runtime-web-client/conversation-files.d.ts +28 -0
- package/dist/src/web-ui/app/services/runtime-web-client/conversation-files.js +75 -0
- package/dist/src/web-ui/app/services/runtime-web-client/projects.d.ts +19 -0
- package/dist/src/web-ui/app/services/runtime-web-client/projects.js +34 -0
- package/dist/src/web-ui/app/services/runtime-web-client/system-host.js +27 -0
- package/dist/src/web-ui/app/services/runtime-web-client.d.ts +52 -0
- package/dist/src/web-ui/app/services/runtime-web-client.js +35 -4
- package/dist/src/web-ui/app/styles/13-projects.css +272 -0
- package/dist/src/web-ui/app/styles/18-dashboard.css +0 -5
- package/dist/src/web-ui/app/styles/19-runtime-setup.css +411 -0
- package/dist/src/web-ui/app/styles/20-chat-composer.css +0 -384
- package/dist/src/web-ui/app/styles/29-conversation-file-preview.css +254 -0
- package/dist/src/web-ui/app/styles/37-runtime-activation.css +26 -0
- package/dist/src/web-ui/app/styles/38-schedule-workspace.css +1 -10
- package/dist/src/web-ui/app/styles/41-plugin-management.css +351 -0
- package/dist/src/web-ui/app/styles/42-runtime-setup-plugins.css +179 -0
- package/dist/src/web-ui/app/styles/43-model-setup.css +73 -0
- package/dist/src/web-ui/app/styles/44-model-provider-cards.css +63 -0
- package/dist/src/web-ui/app/styles/45-bridge-setup.css +44 -0
- package/dist/src/web-ui/app/styles/46-system-host.css +132 -0
- package/dist/src/web-ui/app/styles.css +10 -0
- package/dist/src/web-ui/config-dashboard-backend.d.ts +5 -0
- package/dist/src/web-ui/config-dashboard-backend.js +94 -114
- package/dist/src/web-ui/config-dashboard-model-identity.d.ts +7 -0
- package/dist/src/web-ui/config-dashboard-model-identity.js +45 -0
- package/dist/src/web-ui/config-dashboard-save-transaction.d.ts +5 -0
- package/dist/src/web-ui/config-dashboard-save-transaction.js +21 -0
- package/dist/src/web-ui/environment-config.d.ts +17 -0
- package/dist/src/web-ui/environment-config.js +60 -0
- package/dist/src/web-ui/forwarded-loopback-policy.d.ts +2 -0
- package/dist/src/web-ui/forwarded-loopback-policy.js +14 -0
- package/dist/src/web-ui/local-runtime/api-router.d.ts +7 -0
- package/dist/src/web-ui/local-runtime/api-router.js +136 -12
- package/dist/src/web-ui/local-runtime/config-mutation-request.d.ts +8 -0
- package/dist/src/web-ui/local-runtime/config-mutation-request.js +55 -0
- package/dist/src/web-ui/local-runtime/configuration-activation-environments.d.ts +22 -0
- package/dist/src/web-ui/local-runtime/configuration-activation-environments.js +106 -0
- package/dist/src/web-ui/local-runtime/configuration-activation-source.d.ts +7 -0
- package/dist/src/web-ui/local-runtime/configuration-activation-source.js +36 -0
- package/dist/src/web-ui/local-runtime/configuration-activation.d.ts +20 -0
- package/dist/src/web-ui/local-runtime/configuration-activation.js +107 -0
- package/dist/src/web-ui/local-runtime/contracts.d.ts +8 -0
- package/dist/src/web-ui/local-runtime/conversation-file-access.d.ts +30 -0
- package/dist/src/web-ui/local-runtime/conversation-file-access.js +131 -0
- package/dist/src/web-ui/local-runtime/conversation-file-content.d.ts +21 -0
- package/dist/src/web-ui/local-runtime/conversation-file-content.js +75 -0
- package/dist/src/web-ui/local-runtime/conversation-file-format.d.ts +12 -0
- package/dist/src/web-ui/local-runtime/conversation-file-format.js +87 -0
- package/dist/src/web-ui/local-runtime/conversation-file-native-open.d.ts +10 -0
- package/dist/src/web-ui/local-runtime/conversation-file-native-open.js +94 -0
- package/dist/src/web-ui/local-runtime/conversation-file-native-request.d.ts +4 -0
- package/dist/src/web-ui/local-runtime/conversation-file-native-request.js +72 -0
- package/dist/src/web-ui/local-runtime/conversation-file-routes.d.ts +11 -0
- package/dist/src/web-ui/local-runtime/conversation-file-routes.js +105 -0
- package/dist/src/web-ui/local-runtime/conversation-file-target.d.ts +14 -0
- package/dist/src/web-ui/local-runtime/conversation-file-target.js +158 -0
- package/dist/src/web-ui/local-runtime/environment-registry.d.ts +14 -0
- package/dist/src/web-ui/local-runtime/environment-registry.js +121 -6
- package/dist/src/web-ui/local-runtime/memory-onboarding-routes.d.ts +2 -1
- package/dist/src/web-ui/local-runtime/memory-onboarding-routes.js +15 -10
- package/dist/src/web-ui/local-runtime/model-setup-catalog.d.ts +17 -0
- package/dist/src/web-ui/local-runtime/model-setup-catalog.js +45 -0
- package/dist/src/web-ui/local-runtime/model-setup-identity.d.ts +16 -0
- package/dist/src/web-ui/local-runtime/model-setup-identity.js +20 -0
- package/dist/src/web-ui/local-runtime/model-setup-input.d.ts +24 -0
- package/dist/src/web-ui/local-runtime/model-setup-input.js +107 -0
- package/dist/src/web-ui/local-runtime/model-setup-provider.d.ts +17 -0
- package/dist/src/web-ui/local-runtime/model-setup-provider.js +68 -0
- package/dist/src/web-ui/local-runtime/model-setup-retry.d.ts +14 -0
- package/dist/src/web-ui/local-runtime/model-setup-retry.js +47 -0
- package/dist/src/web-ui/local-runtime/model-setup-routes.d.ts +12 -0
- package/dist/src/web-ui/local-runtime/model-setup-routes.js +50 -0
- package/dist/src/web-ui/local-runtime/model-setup-service.d.ts +30 -0
- package/dist/src/web-ui/local-runtime/model-setup-service.js +93 -0
- package/dist/src/web-ui/local-runtime/model-setup-validation.d.ts +5 -0
- package/dist/src/web-ui/local-runtime/model-setup-validation.js +33 -0
- package/dist/src/web-ui/local-runtime/plugin-management-routes.d.ts +14 -0
- package/dist/src/web-ui/local-runtime/plugin-management-routes.js +50 -0
- package/dist/src/web-ui/local-runtime/project-routes.d.ts +17 -0
- package/dist/src/web-ui/local-runtime/project-routes.js +93 -0
- package/dist/src/web-ui/local-runtime/provider-credential-identity.d.ts +3 -0
- package/dist/src/web-ui/local-runtime/provider-credential-identity.js +18 -0
- package/dist/src/web-ui/local-runtime/request-execution.d.ts +1 -0
- package/dist/src/web-ui/local-runtime/request-execution.js +8 -0
- package/dist/src/web-ui/local-runtime/runtime-availability.js +36 -7
- package/dist/src/web-ui/local-runtime/runtime-setup-completion.d.ts +13 -0
- package/dist/src/web-ui/local-runtime/runtime-setup-completion.js +28 -0
- package/dist/src/web-ui/local-runtime/runtime-setup-connection-edit.d.ts +13 -0
- package/dist/src/web-ui/local-runtime/runtime-setup-connection-edit.js +110 -0
- package/dist/src/web-ui/local-runtime/runtime-setup-credential-completion.d.ts +4 -0
- package/dist/src/web-ui/local-runtime/runtime-setup-credential-completion.js +21 -0
- package/dist/src/web-ui/local-runtime/runtime-setup-credentials.d.ts +14 -0
- package/dist/src/web-ui/local-runtime/runtime-setup-credentials.js +148 -0
- package/dist/src/web-ui/local-runtime/runtime-setup-draft-recovery.d.ts +7 -0
- package/dist/src/web-ui/local-runtime/runtime-setup-draft-recovery.js +18 -0
- package/dist/src/web-ui/local-runtime/runtime-setup-draft.d.ts +21 -0
- package/dist/src/web-ui/local-runtime/runtime-setup-draft.js +105 -0
- package/dist/src/web-ui/local-runtime/runtime-setup-embedding-invalidation.d.ts +8 -0
- package/dist/src/web-ui/local-runtime/runtime-setup-embedding-invalidation.js +40 -0
- package/dist/src/web-ui/local-runtime/runtime-setup-environment-assignment.d.ts +1 -0
- package/dist/src/web-ui/local-runtime/runtime-setup-environment-assignment.js +27 -0
- package/dist/src/web-ui/local-runtime/runtime-setup-input.d.ts +19 -0
- package/dist/src/web-ui/local-runtime/runtime-setup-input.js +82 -0
- package/dist/src/web-ui/local-runtime/runtime-setup-model-file.d.ts +7 -0
- package/dist/src/web-ui/local-runtime/runtime-setup-model-file.js +35 -0
- package/dist/src/web-ui/local-runtime/runtime-setup-provider-ownership-recovery.d.ts +4 -0
- package/dist/src/web-ui/local-runtime/runtime-setup-provider-ownership-recovery.js +23 -0
- package/dist/src/web-ui/local-runtime/runtime-setup-provider-retention.d.ts +11 -0
- package/dist/src/web-ui/local-runtime/runtime-setup-provider-retention.js +31 -0
- package/dist/src/web-ui/local-runtime/runtime-setup-provider.d.ts +11 -0
- package/dist/src/web-ui/local-runtime/runtime-setup-provider.js +60 -0
- package/dist/src/web-ui/local-runtime/runtime-setup-receipt-file.d.ts +8 -0
- package/dist/src/web-ui/local-runtime/runtime-setup-receipt-file.js +77 -0
- package/dist/src/web-ui/local-runtime/runtime-setup-routes.d.ts +35 -0
- package/dist/src/web-ui/local-runtime/runtime-setup-routes.js +56 -0
- package/dist/src/web-ui/local-runtime/runtime-setup-scaffold.d.ts +17 -0
- package/dist/src/web-ui/local-runtime/runtime-setup-scaffold.js +229 -0
- package/dist/src/web-ui/local-runtime/runtime-setup-service.d.ts +65 -0
- package/dist/src/web-ui/local-runtime/runtime-setup-service.js +195 -0
- package/dist/src/web-ui/local-runtime/runtime-setup-validation.d.ts +8 -0
- package/dist/src/web-ui/local-runtime/runtime-setup-validation.js +35 -0
- package/dist/src/web-ui/local-runtime/saved-model-catalog.d.ts +3 -0
- package/dist/src/web-ui/local-runtime/saved-model-catalog.js +20 -0
- package/dist/src/web-ui/local-runtime/setup-embedding-input.d.ts +8 -0
- package/dist/src/web-ui/local-runtime/setup-embedding-input.js +71 -0
- package/dist/src/web-ui/local-runtime/setup-embedding-provider.d.ts +13 -0
- package/dist/src/web-ui/local-runtime/setup-embedding-provider.js +114 -0
- package/dist/src/web-ui/local-runtime/setup-embedding-routes.d.ts +12 -0
- package/dist/src/web-ui/local-runtime/setup-embedding-routes.js +53 -0
- package/dist/src/web-ui/local-runtime/setup-embedding-service.d.ts +32 -0
- package/dist/src/web-ui/local-runtime/setup-embedding-service.js +59 -0
- package/dist/src/web-ui/local-runtime-backend.d.ts +1 -0
- package/dist/src/web-ui/local-runtime-backend.js +3 -0
- package/dist/src/web-ui/plugin-capability-selection.d.ts +14 -0
- package/dist/src/web-ui/plugin-capability-selection.js +48 -0
- package/dist/src/web-ui/plugin-management-catalog.d.ts +26 -0
- package/dist/src/web-ui/plugin-management-catalog.js +56 -0
- package/dist/src/web-ui/plugin-management-selection.d.ts +16 -0
- package/dist/src/web-ui/plugin-management-selection.js +71 -0
- package/dist/src/web-ui/plugin-management-service.d.ts +29 -0
- package/dist/src/web-ui/plugin-management-service.js +150 -0
- package/dist/src/web-ui/request-authority.d.ts +8 -0
- package/dist/src/web-ui/request-authority.js +129 -0
- package/dist/src/web-ui/runtime-setup-gateway-address.d.ts +3 -0
- package/dist/src/web-ui/runtime-setup-gateway-address.js +26 -0
- package/dist/src/web-ui/runtime-setup-gateway.d.ts +29 -0
- package/dist/src/web-ui/runtime-setup-gateway.js +177 -0
- package/dist/src/web-ui/runtime-setup-shutdown.d.ts +2 -0
- package/dist/src/web-ui/runtime-setup-shutdown.js +20 -0
- package/dist/src/web-ui/server.d.ts +7 -14
- package/dist/src/web-ui/server.js +53 -63
- package/dist/src/web-ui/session-read-state/service.d.ts +12 -2
- package/dist/src/web-ui/system-host-service.d.ts +19 -0
- package/dist/src/web-ui/system-host-service.js +159 -0
- package/dist/src/web-ui/system-host-setup/companion-bundle.d.ts +2 -0
- package/dist/src/web-ui/system-host-setup/companion-bundle.js +12 -0
- package/dist/src/web-ui/system-host-setup/companion-macos.d.ts +2 -0
- package/dist/src/web-ui/system-host-setup/companion-macos.js +74 -0
- package/dist/src/web-ui/system-host-setup/companion-windows.d.ts +2 -0
- package/dist/src/web-ui/system-host-setup/companion-windows.js +105 -0
- package/dist/src/web-ui/system-host-setup/installer-contract.d.ts +18 -0
- package/dist/src/web-ui/system-host-setup/installer-contract.js +51 -0
- package/dist/src/web-ui/system-host-setup/installers.d.ts +6 -0
- package/dist/src/web-ui/system-host-setup/installers.js +30 -0
- package/dist/src/web-ui/system-host-setup/native-authorization.d.ts +3 -0
- package/dist/src/web-ui/system-host-setup/native-authorization.js +11 -0
- package/dist/src/web-ui/system-host-setup/node-distribution.d.ts +19 -0
- package/dist/src/web-ui/system-host-setup/node-distribution.js +9 -0
- package/dist/src/web-ui/system-host-setup/readiness.d.ts +18 -0
- package/dist/src/web-ui/system-host-setup/readiness.js +70 -0
- package/dist/src/web-ui/system-host-setup/routes.d.ts +20 -0
- package/dist/src/web-ui/system-host-setup/routes.js +121 -0
- package/dist/src/web-ui/system-host-setup/windows-script-wrapper.d.ts +2 -0
- package/dist/src/web-ui/system-host-setup/windows-script-wrapper.js +17 -0
- package/dist/src/web-ui/system-host-setup/wsl-interop-config.d.ts +3 -0
- package/dist/src/web-ui/system-host-setup/wsl-interop-config.js +67 -0
- package/dist/src/web-ui/system-host-setup/wsl-interop-windows.d.ts +1 -0
- package/dist/src/web-ui/system-host-setup/wsl-interop-windows.js +49 -0
- package/dist/src/web-ui/system-host-upgrade-authority.d.ts +5 -0
- package/dist/src/web-ui/system-host-upgrade-authority.js +13 -0
- package/docs/architecture.md +6 -1
- package/docs/installation.md +53 -17
- package/docs/known-limitations.md +14 -0
- package/docs/plugins.md +137 -26
- package/docs/projects-and-full-plus.md +218 -0
- package/docs/runtime-invariant-coverage.md +6 -3
- package/docs/runtime-prompt-policy-contracts.md +37 -5
- package/docs/runtime-public-contracts.md +17 -0
- package/package.json +5 -2
- package/plugins/exec/plugin.json +30 -9
- package/plugins/exec/skills/exec_process_skill/SKILL.md +1 -0
- package/plugins/exec/skills/exec_skill/SKILL.md +9 -10
- package/plugins/exec/source/handlers.ts +4 -38
- package/plugins/exec/source/paths.ts +53 -49
- package/plugins/exec/source/process-manager.ts +1 -20
- package/plugins/exec/source/shell-platform.ts +29 -0
- package/plugins/exec/source/types.ts +6 -4
- package/plugins/exec/source/validation.ts +33 -198
- package/plugins/exec/src/index.cjs +87 -222
- package/plugins/filesystem/plugin.json +1 -1
- package/plugins/filesystem/skills/dev_view_skill/SKILL.md +7 -0
- package/plugins/filesystem/source/atomic-write.ts +15 -3
- package/plugins/filesystem/source/bounded-io.ts +5 -99
- package/plugins/filesystem/source/dev-view.ts +2 -1
- package/plugins/filesystem/source/directory-authority-write.ts +68 -0
- package/plugins/filesystem/source/directory-sample-task.ts +23 -0
- package/plugins/filesystem/source/directory-sample.ts +132 -0
- package/plugins/filesystem/source/directory-write-task.ts +160 -0
- package/plugins/filesystem/source/edit-file.ts +3 -0
- package/plugins/filesystem/source/file-output-presentation.ts +42 -0
- package/plugins/filesystem/source/mutation-parent.ts +29 -9
- package/plugins/filesystem/source/view-locator.ts +141 -0
- package/plugins/filesystem/source/view-window.ts +12 -25
- package/plugins/filesystem/source/write-file.ts +8 -0
- package/plugins/filesystem/src/index.cjs +855 -153
- package/plugins/local-search/source/index.ts +2 -0
- package/plugins/local-search/source/paths.ts +30 -7
- package/plugins/local-search/source/ripgrep-process.ts +69 -0
- package/plugins/local-search/source/ripgrep.ts +19 -23
- package/plugins/local-search/src/index.cjs +295 -32
- package/plugins/system/plugin.json +374 -0
- package/plugins/system/skills/system_actions/SKILL.md +31 -0
- package/plugins/system/source/application-catalog.ts +237 -0
- package/plugins/system/source/application-launch.ts +113 -0
- package/plugins/system/source/application-observation.ts +78 -0
- package/plugins/system/source/commands.ts +106 -0
- package/plugins/system/source/companion/autostart.ts +185 -0
- package/plugins/system/source/companion/broker-client.ts +183 -0
- package/plugins/system/source/companion/broker-location.ts +89 -0
- package/plugins/system/source/companion/broker-server.ts +169 -0
- package/plugins/system/source/companion/connection.ts +211 -0
- package/plugins/system/source/companion/liveness.ts +23 -0
- package/plugins/system/source/companion/native-address.ts +55 -0
- package/plugins/system/source/companion/native-identity.ts +26 -0
- package/plugins/system/source/companion/native-messages.ts +100 -0
- package/plugins/system/source/companion/native-session.ts +268 -0
- package/plugins/system/source/companion/native-state.ts +135 -0
- package/plugins/system/source/companion/native-supervisor.ts +98 -0
- package/plugins/system/source/companion/pairing-store.ts +110 -0
- package/plugins/system/source/companion/private-store.ts +58 -0
- package/plugins/system/source/companion/process-owner-identity.ts +190 -0
- package/plugins/system/source/companion/protocol.ts +108 -0
- package/plugins/system/source/contracts.ts +44 -0
- package/plugins/system/source/elevation.ts +88 -0
- package/plugins/system/source/handlers.ts +120 -0
- package/plugins/system/source/host-dispatch.ts +106 -0
- package/plugins/system/source/host-evidence.ts +72 -0
- package/plugins/system/source/host-observation.ts +66 -0
- package/plugins/system/source/index.ts +8 -0
- package/plugins/system/source/process-result.ts +111 -0
- package/plugins/system/source/process-runner.ts +104 -0
- package/plugins/system/source/request-system-modules.ts +117 -0
- package/plugins/system/source/request-target-snapshot.ts +163 -0
- package/plugins/system/source/target-observation.ts +43 -0
- package/plugins/system/source/targets.ts +147 -0
- package/plugins/system/src/index.cjs +1730 -0
- package/src/runtime/README.md +36 -8
- package/src/runtime/local-host/README.md +7 -0
- package/dist/src/runtime/steps/planner-decision/capability-catalog-context.d.ts +0 -14
- package/dist/src/runtime/steps/planner-decision/capability-catalog-context.js +0 -87
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { SessionProject } from "./project-binding.js";
|
|
1
2
|
import type { AgentMode } from "../shared/types.js";
|
|
2
3
|
import type { RuntimeAttachmentReference } from "../shared/attachments.js";
|
|
3
4
|
import type { SessionMemoryCheckpoint } from "./memory/contracts.js";
|
|
@@ -50,6 +51,8 @@ export type SessionRuntimeEvent = {
|
|
|
50
51
|
export type SessionRequestRecord = {
|
|
51
52
|
requestId: string;
|
|
52
53
|
sessionId: string;
|
|
54
|
+
/** Absent for legacy records and records recreated by late event appends. */
|
|
55
|
+
generation?: string;
|
|
53
56
|
status: SessionRequestStatus;
|
|
54
57
|
createdAt: string;
|
|
55
58
|
updatedAt: string;
|
|
@@ -68,10 +71,12 @@ export type SessionRequestFinalState = {
|
|
|
68
71
|
export type SessionRequestReplay = {
|
|
69
72
|
requestId: string;
|
|
70
73
|
sessionId: string;
|
|
74
|
+
generation?: string;
|
|
71
75
|
events: Record<string, unknown>[];
|
|
72
76
|
finalState: SessionRequestFinalState | null;
|
|
73
77
|
};
|
|
74
78
|
export type SessionListItem = {
|
|
79
|
+
project?: SessionProject;
|
|
75
80
|
id: string;
|
|
76
81
|
title: string;
|
|
77
82
|
createdAt: number;
|
|
@@ -110,6 +115,7 @@ export type SessionSnapshotRequest = {
|
|
|
110
115
|
finalState: SessionRequestFinalState | null;
|
|
111
116
|
};
|
|
112
117
|
export type SessionSnapshot = {
|
|
118
|
+
project?: SessionProject;
|
|
113
119
|
sessionId: string;
|
|
114
120
|
title: string;
|
|
115
121
|
messages: SessionSnapshotMessage[];
|
|
@@ -156,6 +162,7 @@ export type SessionMessage = {
|
|
|
156
162
|
attachments?: RuntimeAttachmentReference[];
|
|
157
163
|
};
|
|
158
164
|
export type SessionRecord = {
|
|
165
|
+
project?: SessionProject;
|
|
159
166
|
id: string;
|
|
160
167
|
title: string;
|
|
161
168
|
createdAt: string;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function directoryAuthorityScript(mode: "task" | "command", messageLimit: number, task?: (input: never) => unknown): string;
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This function is serialized into a fresh Node process. It must remain
|
|
3
|
+
* closure-free and use only node: built-ins; the starting cwd is untrusted
|
|
4
|
+
* until its identity has been compared with the inherited directory handle.
|
|
5
|
+
*/
|
|
6
|
+
function directoryAuthorityBootstrap(mode, messageLimit, task) {
|
|
7
|
+
const fs = require("node:fs");
|
|
8
|
+
function fail(code, message) {
|
|
9
|
+
throw Object.assign(new Error(message), { code });
|
|
10
|
+
}
|
|
11
|
+
function verifyDirectoryAuthority() {
|
|
12
|
+
const expected = fs.fstatSync(3, { bigint: true });
|
|
13
|
+
const actual = fs.statSync(".", { bigint: true });
|
|
14
|
+
const matchesHeldDirectory = expected.isDirectory() &&
|
|
15
|
+
actual.isDirectory() &&
|
|
16
|
+
expected.dev === actual.dev &&
|
|
17
|
+
expected.ino === actual.ino;
|
|
18
|
+
if (matchesHeldDirectory)
|
|
19
|
+
return;
|
|
20
|
+
fail("directory_authority_changed", "The directory changed before the operation could establish its authority.");
|
|
21
|
+
}
|
|
22
|
+
function readRequest() {
|
|
23
|
+
const fd = mode === "task" ? 0 : 4;
|
|
24
|
+
const chunk = Buffer.alloc(64 * 1024);
|
|
25
|
+
const chunks = [];
|
|
26
|
+
let total = 0;
|
|
27
|
+
for (;;) {
|
|
28
|
+
const length = fs.readSync(fd, chunk, 0, chunk.length, null);
|
|
29
|
+
if (length === 0)
|
|
30
|
+
break;
|
|
31
|
+
total += length;
|
|
32
|
+
if (total > messageLimit) {
|
|
33
|
+
fail("directory_authority_request_too_large", "The directory operation input exceeds the bridge byte limit.");
|
|
34
|
+
}
|
|
35
|
+
chunks.push(Buffer.from(chunk.subarray(0, length)));
|
|
36
|
+
}
|
|
37
|
+
return JSON.parse(Buffer.concat(chunks).toString("utf8"));
|
|
38
|
+
}
|
|
39
|
+
function reportFailure(error) {
|
|
40
|
+
const detail = error;
|
|
41
|
+
const code = typeof detail?.code === "string"
|
|
42
|
+
? detail.code.slice(0, 256)
|
|
43
|
+
: "directory_authority_failed";
|
|
44
|
+
const message = typeof detail?.message === "string"
|
|
45
|
+
? detail.message.slice(0, 4096)
|
|
46
|
+
: "The directory operation failed.";
|
|
47
|
+
let encoded;
|
|
48
|
+
try {
|
|
49
|
+
encoded = JSON.stringify({
|
|
50
|
+
ok: false,
|
|
51
|
+
error: { code, message, data: detail?.data },
|
|
52
|
+
});
|
|
53
|
+
if (Buffer.byteLength(encoded) > messageLimit)
|
|
54
|
+
throw new Error();
|
|
55
|
+
}
|
|
56
|
+
catch {
|
|
57
|
+
encoded = JSON.stringify({ ok: false, error: { code, message } });
|
|
58
|
+
}
|
|
59
|
+
writeResponse(mode === "task" ? 1 : 2, encoded);
|
|
60
|
+
process.exitCode = mode === "task" ? 0 : 125;
|
|
61
|
+
}
|
|
62
|
+
function writeResponse(fd, encoded) {
|
|
63
|
+
const bytes = Buffer.from(encoded);
|
|
64
|
+
let offset = 0;
|
|
65
|
+
while (offset < bytes.length) {
|
|
66
|
+
offset += fs.writeSync(fd, bytes, offset, bytes.length - offset);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
async function runTask(input) {
|
|
70
|
+
if (!task)
|
|
71
|
+
fail("directory_authority_failed", "The directory task is missing.");
|
|
72
|
+
const result = await task(input);
|
|
73
|
+
const encoded = JSON.stringify({ ok: true, result });
|
|
74
|
+
if (Buffer.byteLength(encoded) > messageLimit) {
|
|
75
|
+
fail("directory_authority_result_too_large", "The directory operation result exceeds the bridge byte limit.");
|
|
76
|
+
}
|
|
77
|
+
writeResponse(1, encoded);
|
|
78
|
+
}
|
|
79
|
+
function runCommand(input) {
|
|
80
|
+
const { spawn } = require("node:child_process");
|
|
81
|
+
const command = input;
|
|
82
|
+
// Omitting cwd inherits the kernel-pinned authority. Resolving cwd() back
|
|
83
|
+
// into a pathname here would reopen the race this bridge prevents.
|
|
84
|
+
const child = spawn(command.command, command.args, {
|
|
85
|
+
stdio: ["ignore", "inherit", "inherit"],
|
|
86
|
+
env: process.env,
|
|
87
|
+
});
|
|
88
|
+
child.once("error", reportFailure);
|
|
89
|
+
child.once("exit", (code, signal) => {
|
|
90
|
+
if (signal) {
|
|
91
|
+
process.kill(process.pid, signal);
|
|
92
|
+
return;
|
|
93
|
+
}
|
|
94
|
+
if (typeof code === "number")
|
|
95
|
+
process.exitCode = code;
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
try {
|
|
99
|
+
verifyDirectoryAuthority();
|
|
100
|
+
const input = readRequest();
|
|
101
|
+
if (mode === "command") {
|
|
102
|
+
runCommand(input);
|
|
103
|
+
return;
|
|
104
|
+
}
|
|
105
|
+
void runTask(input).catch(reportFailure);
|
|
106
|
+
}
|
|
107
|
+
catch (error) {
|
|
108
|
+
reportFailure(error);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
export function directoryAuthorityScript(mode, messageLimit, task) {
|
|
112
|
+
const taskSource = task ? `(${task.toString()})` : "undefined";
|
|
113
|
+
// tsx preserves nested function names with esbuild's __name annotation.
|
|
114
|
+
// Include that annotation's definition so the same trusted task works in
|
|
115
|
+
// development and in the production bundle without rewriting its source.
|
|
116
|
+
const preserveFunctionName = "const __name=(target,value)=>Object.defineProperty(target,'name',{value,configurable:true});";
|
|
117
|
+
return `${preserveFunctionName}(${directoryAuthorityBootstrap.toString()})(${JSON.stringify(mode)},${messageLimit},${taskSource});`;
|
|
118
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { type ChildProcessByStdio } from "node:child_process";
|
|
2
|
+
import type { Readable } from "node:stream";
|
|
3
|
+
import { type DirectoryAuthorityLocation } from "./protocol.js";
|
|
4
|
+
export declare function spawnDirectoryAuthorityCommand(input: DirectoryAuthorityLocation & Readonly<{
|
|
5
|
+
command: string;
|
|
6
|
+
args: readonly string[];
|
|
7
|
+
env?: NodeJS.ProcessEnv;
|
|
8
|
+
}>): ChildProcessByStdio<null, Readable, Readable>;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { spawn } from "node:child_process";
|
|
2
|
+
import { directoryAuthorityScript } from "./bootstrap.js";
|
|
3
|
+
import { assertDirectoryAuthorityLocation, authorityEnvironment, AUTHORITY_MESSAGE_LIMIT, encodeAuthorityRequest, } from "./protocol.js";
|
|
4
|
+
export function spawnDirectoryAuthorityCommand(input) {
|
|
5
|
+
assertDirectoryAuthorityLocation(input);
|
|
6
|
+
const request = encodeAuthorityRequest({
|
|
7
|
+
command: input.command,
|
|
8
|
+
args: input.args,
|
|
9
|
+
});
|
|
10
|
+
const child = spawn(process.execPath, [
|
|
11
|
+
"--input-type=commonjs",
|
|
12
|
+
"-e",
|
|
13
|
+
directoryAuthorityScript("command", AUTHORITY_MESSAGE_LIMIT),
|
|
14
|
+
], {
|
|
15
|
+
cwd: input.directoryPath,
|
|
16
|
+
env: authorityEnvironment(input.env),
|
|
17
|
+
detached: true,
|
|
18
|
+
windowsHide: true,
|
|
19
|
+
stdio: ["ignore", "pipe", "pipe", input.directoryFd, "pipe"],
|
|
20
|
+
});
|
|
21
|
+
const requestPipe = child.stdio[4];
|
|
22
|
+
// An early authority failure may close the request pipe before the parent
|
|
23
|
+
// finishes writing. The process result remains the authoritative error.
|
|
24
|
+
requestPipe?.on("error", () => undefined);
|
|
25
|
+
requestPipe?.end(request);
|
|
26
|
+
return child;
|
|
27
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export declare const AUTHORITY_MESSAGE_LIMIT: number;
|
|
2
|
+
export declare const AUTHORITY_STDERR_LIMIT: number;
|
|
3
|
+
export declare const AUTHORITY_TASK_TIMEOUT_MS = 30000;
|
|
4
|
+
export type DirectoryAuthorityLocation = Readonly<{
|
|
5
|
+
directoryPath: string;
|
|
6
|
+
directoryFd: number;
|
|
7
|
+
}>;
|
|
8
|
+
export declare function assertDirectoryAuthorityLocation(location: DirectoryAuthorityLocation): void;
|
|
9
|
+
export declare function authorityEnvironment(environment?: NodeJS.ProcessEnv): NodeJS.ProcessEnv;
|
|
10
|
+
export declare function encodeAuthorityRequest(input: unknown): string;
|
|
11
|
+
export declare function decodeAuthorityResult<Result>(output: string): Result;
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { isAbsolute } from "node:path";
|
|
2
|
+
import { DirectoryAuthorityError } from "./errors.js";
|
|
3
|
+
export const AUTHORITY_MESSAGE_LIMIT = 8 * 1024 * 1024;
|
|
4
|
+
export const AUTHORITY_STDERR_LIMIT = 16 * 1024;
|
|
5
|
+
export const AUTHORITY_TASK_TIMEOUT_MS = 30_000;
|
|
6
|
+
export function assertDirectoryAuthorityLocation(location) {
|
|
7
|
+
if (!isAbsolute(location.directoryPath)) {
|
|
8
|
+
throw new DirectoryAuthorityError("directory_authority_invalid_path", "The directory authority requires an absolute starting path.");
|
|
9
|
+
}
|
|
10
|
+
const hasOpenDescriptorNumber = Number.isInteger(location.directoryFd) && location.directoryFd >= 0;
|
|
11
|
+
if (hasOpenDescriptorNumber)
|
|
12
|
+
return;
|
|
13
|
+
throw new DirectoryAuthorityError("directory_authority_invalid_fd", "The directory authority requires an open directory descriptor.");
|
|
14
|
+
}
|
|
15
|
+
export function authorityEnvironment(environment = process.env) {
|
|
16
|
+
const sanitized = { ...environment };
|
|
17
|
+
delete sanitized.NODE_OPTIONS;
|
|
18
|
+
delete sanitized.NODE_PATH;
|
|
19
|
+
return sanitized;
|
|
20
|
+
}
|
|
21
|
+
export function encodeAuthorityRequest(input) {
|
|
22
|
+
let encoded;
|
|
23
|
+
try {
|
|
24
|
+
encoded = JSON.stringify(input);
|
|
25
|
+
}
|
|
26
|
+
catch {
|
|
27
|
+
throw new DirectoryAuthorityError("directory_authority_invalid_request", "The directory operation input must be JSON serializable.");
|
|
28
|
+
}
|
|
29
|
+
if (encoded === undefined) {
|
|
30
|
+
throw new DirectoryAuthorityError("directory_authority_invalid_request", "The directory operation input must be JSON serializable.");
|
|
31
|
+
}
|
|
32
|
+
if (Buffer.byteLength(encoded) <= AUTHORITY_MESSAGE_LIMIT)
|
|
33
|
+
return encoded;
|
|
34
|
+
throw new DirectoryAuthorityError("directory_authority_request_too_large", "The directory operation input exceeds the bridge byte limit.");
|
|
35
|
+
}
|
|
36
|
+
function isAuthorityMessageObject(value) {
|
|
37
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
38
|
+
}
|
|
39
|
+
export function decodeAuthorityResult(output) {
|
|
40
|
+
let message;
|
|
41
|
+
try {
|
|
42
|
+
message = JSON.parse(output);
|
|
43
|
+
}
|
|
44
|
+
catch {
|
|
45
|
+
throw new DirectoryAuthorityError("directory_authority_protocol_error", "The directory operation returned an invalid response.");
|
|
46
|
+
}
|
|
47
|
+
if (!isAuthorityMessageObject(message)) {
|
|
48
|
+
throw new DirectoryAuthorityError("directory_authority_protocol_error", "The directory operation returned an invalid response.");
|
|
49
|
+
}
|
|
50
|
+
if (message.ok === true)
|
|
51
|
+
return message.result;
|
|
52
|
+
const hasAuthorityError = message.ok === false && isAuthorityMessageObject(message.error);
|
|
53
|
+
if (!hasAuthorityError) {
|
|
54
|
+
throw new DirectoryAuthorityError("directory_authority_protocol_error", "The directory operation returned an invalid response.");
|
|
55
|
+
}
|
|
56
|
+
const { code, message: explanation, data, } = message.error;
|
|
57
|
+
const hasErrorDescription = typeof code === "string" && typeof explanation === "string";
|
|
58
|
+
if (!hasErrorDescription) {
|
|
59
|
+
throw new DirectoryAuthorityError("directory_authority_protocol_error", "The directory operation returned an invalid error response.");
|
|
60
|
+
}
|
|
61
|
+
throw new DirectoryAuthorityError(code, explanation, isAuthorityMessageObject(data) ? data : undefined);
|
|
62
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { type DirectoryAuthorityLocation } from "./protocol.js";
|
|
2
|
+
export declare function runDirectoryAuthorityTask<Input, Result>(input: DirectoryAuthorityLocation & Readonly<{
|
|
3
|
+
input: Input;
|
|
4
|
+
task: (input: Input) => Result | Promise<Result>;
|
|
5
|
+
timeoutMs?: number;
|
|
6
|
+
signal?: AbortSignal;
|
|
7
|
+
}>): Promise<Result>;
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import { spawn } from "node:child_process";
|
|
2
|
+
import { directoryAuthorityScript } from "./bootstrap.js";
|
|
3
|
+
import { DirectoryAuthorityError } from "./errors.js";
|
|
4
|
+
import { assertDirectoryAuthorityLocation, authorityEnvironment, AUTHORITY_MESSAGE_LIMIT, AUTHORITY_STDERR_LIMIT, AUTHORITY_TASK_TIMEOUT_MS, decodeAuthorityResult, encodeAuthorityRequest, } from "./protocol.js";
|
|
5
|
+
export async function runDirectoryAuthorityTask(input) {
|
|
6
|
+
assertDirectoryAuthorityLocation(input);
|
|
7
|
+
const request = encodeAuthorityRequest(input.input);
|
|
8
|
+
const timeoutMs = input.timeoutMs ?? AUTHORITY_TASK_TIMEOUT_MS;
|
|
9
|
+
const hasPositiveDeadline = Number.isFinite(timeoutMs) && timeoutMs > 0;
|
|
10
|
+
if (!hasPositiveDeadline) {
|
|
11
|
+
throw new DirectoryAuthorityError("directory_authority_invalid_timeout", "The directory operation deadline must be a positive finite duration.");
|
|
12
|
+
}
|
|
13
|
+
if (input.signal?.aborted) {
|
|
14
|
+
throw new DirectoryAuthorityError("directory_authority_aborted", "The directory operation was cancelled before it started.");
|
|
15
|
+
}
|
|
16
|
+
const child = spawn(process.execPath, [
|
|
17
|
+
"--input-type=commonjs",
|
|
18
|
+
"-e",
|
|
19
|
+
directoryAuthorityScript("task", AUTHORITY_MESSAGE_LIMIT, input.task),
|
|
20
|
+
], {
|
|
21
|
+
cwd: input.directoryPath,
|
|
22
|
+
env: authorityEnvironment(),
|
|
23
|
+
detached: true,
|
|
24
|
+
windowsHide: true,
|
|
25
|
+
stdio: ["pipe", "pipe", "pipe", input.directoryFd],
|
|
26
|
+
});
|
|
27
|
+
return new Promise((resolve, reject) => {
|
|
28
|
+
const chunks = [];
|
|
29
|
+
const stderrChunks = [];
|
|
30
|
+
let bytes = 0;
|
|
31
|
+
let stderrBytes = 0;
|
|
32
|
+
let failure;
|
|
33
|
+
const stop = (error) => {
|
|
34
|
+
if (failure)
|
|
35
|
+
return;
|
|
36
|
+
failure = error;
|
|
37
|
+
if (typeof child.pid === "number") {
|
|
38
|
+
try {
|
|
39
|
+
process.kill(-child.pid, "SIGKILL");
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
catch {
|
|
43
|
+
// A process which has already exited may no longer own its group.
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
child.kill("SIGKILL");
|
|
47
|
+
};
|
|
48
|
+
const onAbort = () => stop(new DirectoryAuthorityError("directory_authority_aborted", "The directory operation was cancelled."));
|
|
49
|
+
const timer = setTimeout(() => stop(new DirectoryAuthorityError("directory_authority_timeout", "The directory operation exceeded its deadline.")), timeoutMs);
|
|
50
|
+
timer.unref();
|
|
51
|
+
input.signal?.addEventListener("abort", onAbort, { once: true });
|
|
52
|
+
if (input.signal?.aborted)
|
|
53
|
+
onAbort();
|
|
54
|
+
child.stdout.on("data", (chunk) => {
|
|
55
|
+
bytes += chunk.length;
|
|
56
|
+
if (bytes > AUTHORITY_MESSAGE_LIMIT) {
|
|
57
|
+
stop(new DirectoryAuthorityError("directory_authority_result_too_large", "The directory operation result exceeds the bridge byte limit."));
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
60
|
+
chunks.push(chunk);
|
|
61
|
+
});
|
|
62
|
+
child.stderr.on("data", (chunk) => {
|
|
63
|
+
const remaining = Math.max(AUTHORITY_STDERR_LIMIT - stderrBytes, 0);
|
|
64
|
+
if (remaining === 0)
|
|
65
|
+
return;
|
|
66
|
+
stderrChunks.push(chunk.subarray(0, remaining));
|
|
67
|
+
stderrBytes += Math.min(chunk.length, remaining);
|
|
68
|
+
});
|
|
69
|
+
child.stdin.on("error", () => undefined);
|
|
70
|
+
child.once("error", (error) => {
|
|
71
|
+
failure ??= new DirectoryAuthorityError("directory_authority_unavailable", `The directory operation could not start: ${error.message}`);
|
|
72
|
+
});
|
|
73
|
+
child.once("close", (code, signal) => {
|
|
74
|
+
clearTimeout(timer);
|
|
75
|
+
input.signal?.removeEventListener("abort", onAbort);
|
|
76
|
+
if (failure) {
|
|
77
|
+
reject(failure);
|
|
78
|
+
return;
|
|
79
|
+
}
|
|
80
|
+
if (code !== 0) {
|
|
81
|
+
reject(new DirectoryAuthorityError("directory_authority_failed", "The directory operation process did not complete successfully.", {
|
|
82
|
+
exitCode: code,
|
|
83
|
+
signal,
|
|
84
|
+
stderr: Buffer.concat(stderrChunks).toString("utf8"),
|
|
85
|
+
}));
|
|
86
|
+
return;
|
|
87
|
+
}
|
|
88
|
+
try {
|
|
89
|
+
resolve(decodeAuthorityResult(Buffer.concat(chunks).toString("utf8")));
|
|
90
|
+
}
|
|
91
|
+
catch (error) {
|
|
92
|
+
reject(error);
|
|
93
|
+
}
|
|
94
|
+
});
|
|
95
|
+
child.stdin.end(request);
|
|
96
|
+
});
|
|
97
|
+
}
|
|
@@ -48,6 +48,17 @@ the completion-event boundary: tool output, canonical evidence and model context
|
|
|
48
48
|
are unchanged. The Web UI does not fetch a file or memory record again to recreate
|
|
49
49
|
historical evidence. Passive Runtime memory remains outside tool activity.
|
|
50
50
|
|
|
51
|
+
`tool-process-activity-fields.js` projects declared process display fields without
|
|
52
|
+
branching on tool identities. Opted-in commands retain up to 4,096 characters and
|
|
53
|
+
whitespace; shared `conversation-tool-evidence.js` renders them as inert
|
|
54
|
+
preformatted text in both activity and approval disclosures. Working
|
|
55
|
+
directory, target, exit code and recorded process evidence remain distinct from
|
|
56
|
+
model-authored intent. Result output stays a bounded excerpt, and completion or
|
|
57
|
+
exit zero does not establish an application window or independent outcome check.
|
|
58
|
+
Terminal failures preserve recorded result fields and clipping flags. Old events
|
|
59
|
+
without declared input/output evidence remain unavailable; the UI never guesses
|
|
60
|
+
commands from rationale or opaque parameter summaries.
|
|
61
|
+
|
|
51
62
|
Web sources appear in a separate Activity section alongside role cards and the event timeline. `web-source-event.js` projects only successful `web_search` and `web_fetch` completions; `web-sources.js` validates bounded plugin receipts and groups them by recorded call. `conversation-sources.js` renders links and retrieval/presentation states without interpreting answer text. Source-bearing events retain their own identity before display grouping, and stored session events use the same projection as live events. Session switching clears them with the existing Activity state.
|
|
52
63
|
|
|
53
64
|
The optional `meta.webSources` version 1 receipt describes the final bounded **tool output**, not whether a later model invocation consumed or cited it. Older events can show found/fetched URLs with unknown output visibility; absent or unsupported receipts never imply full content. Favicons are best-effort browser requests to the source origin's `/favicon.ico`, loaded lazily with no referrer and a local fallback. No third-party icon service or server proxy is used. Source URL policy rejects unsafe schemes and credentials, and prevents automatic image loads for local/private IP literals; origin DNS, redirects, cookies, and browser image policy remain browser concerns. Icons carry no evidence and never block tool execution.
|
|
@@ -80,6 +91,36 @@ The native conversation list uses the existing `SessionService` disk reader and
|
|
|
80
91
|
|
|
81
92
|
Read-state persistence is an optional Web UI projection. `session-read-state/availability.ts` isolates sidecar failures from listing, loading, clearing and deleting conversations. A failure returns `readStateStatus: "unavailable"` and unknown counts, preserves the sidecar for diagnosis, and leaves read acknowledgements unsuccessful. The browser keeps the last known receipt, labels unavailable tracking explicitly and resumes normal counts after a healthy list refresh. Canonical session and attachment failures remain errors. Workspace visibility is committed before change callbacks attempt to acknowledge visible messages, including drawer closure and responsive layout changes.
|
|
82
93
|
|
|
94
|
+
## Conversation file preview
|
|
95
|
+
|
|
96
|
+
`conversation-file-reference.js` projects only explicit successful file-output
|
|
97
|
+
receipts from tool events. Activity keeps this reference separate from the
|
|
98
|
+
historical sent/received fields and excerpt. `conversation-file-action.js` makes
|
|
99
|
+
the existing filename an inline preview control inside the tool summary. Its click suppresses disclosure activation;
|
|
100
|
+
other summary interactions retain the recorded evidence disclosure.
|
|
101
|
+
|
|
102
|
+
`conversation-file-preview-controller.js` owns scoped loading and stale-response
|
|
103
|
+
rejection. The feature adapter mounts the viewer outside the message subtree and
|
|
104
|
+
preserves conversation scroll while the layout changes. Session resets and
|
|
105
|
+
workspace departure close it; responsive focus and Escape behavior belong to
|
|
106
|
+
`conversation-file-focus.js`. Transport stays in the conversation-files service.
|
|
107
|
+
|
|
108
|
+
The local backend's `conversation-file-access.ts` admits only a saved or scoped
|
|
109
|
+
active completion belonging to the requested environment, session and request.
|
|
110
|
+
`conversation-file-target.ts` owns the held file and root/containment identity
|
|
111
|
+
checks shared by content reads and native opening. The route revalidates request
|
|
112
|
+
generation and completion before returning bytes or handing off to a Mac app.
|
|
113
|
+
`conversation-file-native-request.ts` limits native opening to same-origin JSON
|
|
114
|
+
POSTs from a local browser on macOS. `conversation-file-native-open.ts` restricts
|
|
115
|
+
file types and invokes the fixed OS opener without a shell. The viewer exposes
|
|
116
|
+
this action only when its preview response includes `nativeOpenAvailable: true`;
|
|
117
|
+
its controller scopes busy/failure feedback to the selected file. The OS app
|
|
118
|
+
resolves the original pathname after handoff; that asynchronous read is outside
|
|
119
|
+
the preview reader's held-descriptor guarantee. The receipt
|
|
120
|
+
is presentation-only: the optional filesystem report callback feeds event
|
|
121
|
+
metadata, never the canonical tool result or model context. No file registry or
|
|
122
|
+
historical content snapshot is created.
|
|
123
|
+
|
|
83
124
|
## Styles
|
|
84
125
|
|
|
85
126
|
`styles.css` is the ordered manifest. The modules under `styles/` own:
|
|
@@ -97,7 +138,6 @@ Keep responsive overrides last and avoid moving declarations between modules wit
|
|
|
97
138
|
|
|
98
139
|
Visual components may format or group events, but they never accept transport frames or construct Runtime API payloads. Realtime frame parsing belongs to `realtime-transport.js`; request sequence and terminal-state reduction belong to `realtime-event-controller.js`; endpoint construction and HTTP payload serialization belong to `runtime-web-client.js` and its feature request modules; and feature controllers own when those operations occur. Config remains explicit-save; presentation changes must never introduce autosave.
|
|
99
140
|
|
|
100
|
-
|
|
101
141
|
## Core schedules
|
|
102
142
|
|
|
103
143
|
`schedules-feature.js` composes the scheduler browser feature from its controller,
|
|
@@ -125,3 +165,83 @@ run identity before activating the ordinary realtime request lifecycle. Duplicat
|
|
|
125
165
|
trigger delivery cannot add another user message or reactivate a completed run.
|
|
126
166
|
The scheduler page and chat card are presentation-only consumers; the runtime
|
|
127
167
|
scheduler remains the sole owner of Job state and dispatch decisions.
|
|
168
|
+
|
|
169
|
+
## Interactive setup and configuration activation
|
|
170
|
+
|
|
171
|
+
The setup guide composes focused rendering/validation modules and receives
|
|
172
|
+
configuration transport callbacks. Runtime onboarding retains catalog authority
|
|
173
|
+
over chat readiness. Home suppresses its dashboard data and shortcuts while
|
|
174
|
+
setup is required; the guide has one scroll owner in either Home or Chat.
|
|
175
|
+
OpenAI credentials live only in the current password input and one save payload.
|
|
176
|
+
They never enter browser state, HTML attributes, preferences or control logs.
|
|
177
|
+
|
|
178
|
+
The setup sequence is Provider, Connection, Embedding, Plugins and Ready.
|
|
179
|
+
The onboarding feature assembles transport dependencies outside app.js; focused
|
|
180
|
+
step modules own embedding and plugin card selection. Chat connection writes
|
|
181
|
+
defer activation in the wizard, while ordinary setup API callers retain their
|
|
182
|
+
existing immediate-activation behavior. The pending-activation gate keeps the
|
|
183
|
+
catalog unavailable until the explicit final apply, including browser reload in
|
|
184
|
+
the same Web process. Optional choices are read back from canonical saved files.
|
|
185
|
+
|
|
186
|
+
Embedding setup prepares only the requested provider and its private credential,
|
|
187
|
+
then delegates to the existing memory probe-before-save service. Probe dimensions
|
|
188
|
+
and fingerprints come from the provider response; the UI never invents them.
|
|
189
|
+
Provider preparation may survive a later probe failure, which is reported without
|
|
190
|
+
exposing credentials. The memory Web router resolves the current configuration
|
|
191
|
+
path per request so first-time setup uses local/runtime.config.json correctly.
|
|
192
|
+
Plugin cards reuse the existing manifest selection API, preserving sibling tools
|
|
193
|
+
and saved policies. Fresh installations start with all plugins and tools selected.
|
|
194
|
+
The onboarding plugin cards display every tool checkbox directly. Their dedicated
|
|
195
|
+
stylesheet widens only this step and keeps the outer workspace as the scroll owner.
|
|
196
|
+
|
|
197
|
+
Configuration composes a plugin manager using the canonical manifest selection
|
|
198
|
+
projection. The separate activation control explicitly applies saved files.
|
|
199
|
+
The server checks synchronous owner admission, refuses busy or externally owned
|
|
200
|
+
environments, and refreshes its gateway through the owning lifecycle callback.
|
|
201
|
+
Browser reload and saved selection are not evidence of live activation.
|
|
202
|
+
|
|
203
|
+
### Additive model setup
|
|
204
|
+
|
|
205
|
+
Configuration composes a separate Provider / Model / Ready dialog in
|
|
206
|
+
components/model-setup/. It shares the wizard shell and connection form with
|
|
207
|
+
first setup, while retaining its own additive save/apply lifecycle. The dialog
|
|
208
|
+
is outside the dashboard so refresh and mutation locking cannot detach it.
|
|
209
|
+
An entered API key remains only in the mounted password field until final save;
|
|
210
|
+
review and back navigation do not copy it into state or markup.
|
|
211
|
+
|
|
212
|
+
configuration-feature.js guards opening against existing configuration drafts,
|
|
213
|
+
blocks workspace/environment navigation while the dialog is open, and holds the
|
|
214
|
+
external mutation lock during save, Apply and refresh. Saved model identity
|
|
215
|
+
survives Apply failure; successful Apply survives refresh failure. Completion
|
|
216
|
+
refreshes Memory provider choices and chat models, selects the new profile, and
|
|
217
|
+
focuses it only after closing the modal and releasing the lock.
|
|
218
|
+
|
|
219
|
+
local-runtime/model-setup-\* owns catalog/input/credential/addition behavior.
|
|
220
|
+
It uses the canonical configuration repository and shared CLI merge helper,
|
|
221
|
+
preserving existing profiles, references, defaults and connection settings.
|
|
222
|
+
Only new OpenAI/Ollama connections are created here; existing provider IDs are
|
|
223
|
+
resolved by adapter type. The transport exposes no secret values and requires
|
|
224
|
+
the same-origin JSON mutation guard. This flow does not invoke a model.
|
|
225
|
+
|
|
226
|
+
## Projects and permission modes
|
|
227
|
+
|
|
228
|
+
`projects-feature.js` composes project UI; `projects-controller.js` owns project
|
|
229
|
+
and folder loading, creation and stale-response rejection. Presentation modules
|
|
230
|
+
render the creation form and sidebar groups, while `runtime-web-client/projects.js`
|
|
231
|
+
owns transport. The folder form occupies the chat canvas without resetting the
|
|
232
|
+
active conversation or draft. It closes the file viewer through its existing
|
|
233
|
+
presentation lifecycle. Creation calls the owner API; a saved project session is
|
|
234
|
+
opened through the canonical conversation controller without a model request.
|
|
235
|
+
|
|
236
|
+
The session controller remains the owner of session row actions and read state.
|
|
237
|
+
Its injected group renderer places project groups above ordinary conversations,
|
|
238
|
+
including projects with no sessions. The session's saved project snapshot also
|
|
239
|
+
provides the visible working-folder label. Neither project presentation nor client
|
|
240
|
+
request payloads overwrite global runtime paths.
|
|
241
|
+
|
|
242
|
+
`tool-permission-mode-controller.js` owns the permission selector and explicit
|
|
243
|
+
per-session preference changes; `lib/tool-permission-mode.js` owns known browser
|
|
244
|
+
values and server compatibility. FULL+ requires advertised server support, and
|
|
245
|
+
transport rejects unsupported requests without a silent downgrade. The existing
|
|
246
|
+
composer queue keeps its captured mode. Project membership never selects FULL+.
|
|
247
|
+
`app-state.js` constructs the same one shared browser state identity for `app.js`.
|
|
@@ -8,6 +8,7 @@ export async function bootstrapWebApp({
|
|
|
8
8
|
homeComposer,
|
|
9
9
|
dashboard,
|
|
10
10
|
schedules,
|
|
11
|
+
projects,
|
|
11
12
|
selection,
|
|
12
13
|
client,
|
|
13
14
|
bindables,
|
|
@@ -30,6 +31,7 @@ export async function bootstrapWebApp({
|
|
|
30
31
|
renderMessages();
|
|
31
32
|
state.config = await client.loadWebConfig();
|
|
32
33
|
schedules.refreshAvailability();
|
|
34
|
+
projects?.refreshAvailability();
|
|
33
35
|
selection.renderEnvironmentOptions();
|
|
34
36
|
const options = selection.environmentOptions();
|
|
35
37
|
const saved = preferences.environmentId();
|
|
@@ -42,6 +44,7 @@ export async function bootstrapWebApp({
|
|
|
42
44
|
selection.renderAgentPicker();
|
|
43
45
|
realtime.connect();
|
|
44
46
|
await Promise.allSettled([
|
|
47
|
+
projects?.load(),
|
|
45
48
|
selection.loadModels(),
|
|
46
49
|
selection.loadAgentMode(),
|
|
47
50
|
operations.loadRuntimeStatus(),
|
|
@@ -26,6 +26,8 @@ export function findAppDom(documentRoot = document) {
|
|
|
26
26
|
environmentSelect: documentRoot.getElementById("environmentSelect"),
|
|
27
27
|
agentPickerButton: documentRoot.getElementById("agentPickerButton"),
|
|
28
28
|
agentPickerMenu: documentRoot.getElementById("agentPickerMenu"),
|
|
29
|
+
newProjectButton: documentRoot.getElementById("newProjectButton"),
|
|
30
|
+
projectCreationRoot: documentRoot.getElementById("projectCreationRoot"),
|
|
29
31
|
newSessionButton: documentRoot.getElementById("newSessionButton"),
|
|
30
32
|
refreshSessionsButton: documentRoot.getElementById("refreshSessionsButton"),
|
|
31
33
|
closeSessionsButton: documentRoot.getElementById("closeSessionsButton"),
|
|
@@ -33,6 +35,7 @@ export function findAppDom(documentRoot = document) {
|
|
|
33
35
|
sessionSearchInput: documentRoot.getElementById("sessionSearchInput"),
|
|
34
36
|
sessionsCount: documentRoot.getElementById("sessionsCount"),
|
|
35
37
|
sessionsList: documentRoot.getElementById("sessionsList"),
|
|
38
|
+
currentProjectContext: documentRoot.getElementById("currentProjectContext"),
|
|
36
39
|
sessionTitle: documentRoot.getElementById("sessionTitle"),
|
|
37
40
|
agentModeButton: documentRoot.getElementById("agentModeButton"),
|
|
38
41
|
agentModeMenu: documentRoot.getElementById("agentModeMenu"),
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
export function createAppState() {
|
|
2
|
+
return {
|
|
3
|
+
config: null,
|
|
4
|
+
connected: false,
|
|
5
|
+
sessions: [],
|
|
6
|
+
pinnedSessionIds: [],
|
|
7
|
+
sessionModes: {},
|
|
8
|
+
sessionModels: {},
|
|
9
|
+
lastModelByEnvironment: {},
|
|
10
|
+
agentMode: "reasoning",
|
|
11
|
+
supportedAgentModes: ["fast", "reasoning", "deep", "auto"],
|
|
12
|
+
agentModeMenuOpen: false,
|
|
13
|
+
permissionModeMenuOpen: false,
|
|
14
|
+
agentPickerOpen: false,
|
|
15
|
+
busySessionIds: new Set(),
|
|
16
|
+
messages: [],
|
|
17
|
+
events: [],
|
|
18
|
+
taskProgressByRequest: new Map(),
|
|
19
|
+
contextWindowByRequest: new Map(),
|
|
20
|
+
submittedToolApprovalIds: new Set(),
|
|
21
|
+
requestMessages: new Map(),
|
|
22
|
+
currentSessionId: "",
|
|
23
|
+
activeRequestId: "",
|
|
24
|
+
sessionViewVersion: 0,
|
|
25
|
+
lastSeqByRequest: new Map(),
|
|
26
|
+
modelProfiles: [],
|
|
27
|
+
defaultModelProfileId: "",
|
|
28
|
+
runtimeAvailability: { status: "loading" },
|
|
29
|
+
pendingAttachments: [],
|
|
30
|
+
pendingAttachmentUploadCounts: new Map(),
|
|
31
|
+
composerAttachmentGeneration: 0,
|
|
32
|
+
composerSending: false,
|
|
33
|
+
composerQueueDrainingScopes: new Set(),
|
|
34
|
+
composerQueueRecoveredReleaseTokens: new Set(),
|
|
35
|
+
activeComposerQueueRecovery: null,
|
|
36
|
+
sessionQuery: "",
|
|
37
|
+
};
|
|
38
|
+
}
|