@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,15 @@
|
|
|
1
|
+
import { ProjectRoutes } from "./project-routes.js";
|
|
2
|
+
import { ConversationFileRoutes } from "./conversation-file-routes.js";
|
|
3
|
+
import { ConfigFileConflictError } from "../../runtime/adapters/config-file-transaction.js";
|
|
4
|
+
import { ModelSetupRoutes } from "./model-setup-routes.js";
|
|
5
|
+
import { ModelSetupService } from "./model-setup-service.js";
|
|
6
|
+
import { SetupEmbeddingRoutes } from "./setup-embedding-routes.js";
|
|
7
|
+
import { SetupEmbeddingService } from "./setup-embedding-service.js";
|
|
8
|
+
import { RuntimeSetupRoutes } from "./runtime-setup-routes.js";
|
|
9
|
+
import { RuntimeSetupService } from "./runtime-setup-service.js";
|
|
10
|
+
import { applyAndCompleteRuntimeSetup, pendingRuntimeSetupCatalog, } from "./runtime-setup-completion.js";
|
|
11
|
+
import { PluginManagementRoutes } from "./plugin-management-routes.js";
|
|
12
|
+
import { acceptConfigMutationRequest } from "./config-mutation-request.js";
|
|
1
13
|
import { WebSessionRoutes } from "./session-routes.js";
|
|
2
14
|
import { WebSessionReadStates } from "../session-read-state/service.js";
|
|
3
15
|
import { getRuntimeConfig, getRuntimeConfigSchema, } from "../../runtime/admin/config-control.js";
|
|
@@ -21,26 +33,70 @@ export class LocalRuntimeApiRouter {
|
|
|
21
33
|
options;
|
|
22
34
|
environments;
|
|
23
35
|
requests;
|
|
36
|
+
conversationFiles;
|
|
24
37
|
attachments = new LocalAttachmentRoutes();
|
|
38
|
+
setup;
|
|
39
|
+
modelSetup;
|
|
40
|
+
setupEmbedding;
|
|
41
|
+
plugins;
|
|
25
42
|
memoryManagement;
|
|
26
43
|
memoryOnboarding;
|
|
27
44
|
schedules;
|
|
28
45
|
readStates;
|
|
29
46
|
sessions;
|
|
47
|
+
projects = new ProjectRoutes();
|
|
30
48
|
constructor(options, environments, requests) {
|
|
31
49
|
this.options = options;
|
|
32
50
|
this.environments = environments;
|
|
33
51
|
this.requests = requests;
|
|
52
|
+
this.conversationFiles = new ConversationFileRoutes(environments, requests, () => this.options.defaultEnvironmentId);
|
|
53
|
+
this.modelSetup = new ModelSetupRoutes(new ModelSetupService({
|
|
54
|
+
rootDir: options.rootDir ?? process.cwd(),
|
|
55
|
+
getConfigPath: () => options.configPath ?? process.env.LLM_RUNTIME_CONFIG_FILE,
|
|
56
|
+
}));
|
|
57
|
+
this.setup = new RuntimeSetupRoutes(new RuntimeSetupService({
|
|
58
|
+
rootDir: options.rootDir ?? process.cwd(),
|
|
59
|
+
getConfigPath: () => options.configPath ?? process.env.LLM_RUNTIME_CONFIG_FILE,
|
|
60
|
+
configure: (configPath) => this.environments.configure(configPath),
|
|
61
|
+
activate: async (_configPath) => {
|
|
62
|
+
const activation = await this.applyWhenRequestsIdle();
|
|
63
|
+
if (activation.status === "ready") {
|
|
64
|
+
await this.initializeSessionReadState([
|
|
65
|
+
options.defaultEnvironmentId,
|
|
66
|
+
]);
|
|
67
|
+
}
|
|
68
|
+
return activation;
|
|
69
|
+
},
|
|
70
|
+
}));
|
|
71
|
+
this.setupEmbedding = new SetupEmbeddingRoutes(new SetupEmbeddingService({
|
|
72
|
+
rootDir: options.rootDir ?? process.cwd(),
|
|
73
|
+
getConfigPath: () => options.configPath ?? process.env.LLM_RUNTIME_CONFIG_FILE,
|
|
74
|
+
providerAdapters: options.providerAdapters,
|
|
75
|
+
}));
|
|
76
|
+
this.plugins = new PluginManagementRoutes({
|
|
77
|
+
rootDir: options.rootDir ?? process.cwd(),
|
|
78
|
+
getConfigPath: () => options.configPath ?? process.env.LLM_RUNTIME_CONFIG_FILE,
|
|
79
|
+
});
|
|
34
80
|
this.readStates = new WebSessionReadStates((id) => this.environments.get(id));
|
|
35
81
|
this.sessions = new WebSessionRoutes(this.readStates);
|
|
36
82
|
this.schedules = new ScheduleManagementRoutes((id) => this.environments.get(id));
|
|
37
|
-
this.memoryOnboarding = new LongTermMemoryOnboardingRoutes(createLocalLongTermMemoryOnboardingService({
|
|
83
|
+
this.memoryOnboarding = new LongTermMemoryOnboardingRoutes(() => createLocalLongTermMemoryOnboardingService({
|
|
38
84
|
rootDir: options.rootDir ?? process.cwd(),
|
|
39
85
|
providerAdapters: options.providerAdapters,
|
|
40
|
-
|
|
86
|
+
configPath: options.configPath ?? process.env.LLM_RUNTIME_CONFIG_FILE,
|
|
41
87
|
}));
|
|
42
88
|
this.memoryManagement = new LongTermMemoryManagementRoutes((environmentId) => this.environments.get(environmentId).services.longTermMemory);
|
|
43
89
|
}
|
|
90
|
+
async applyWhenRequestsIdle() {
|
|
91
|
+
const hasAcknowledgedRequests = this.requests.healthDetails().length > 0;
|
|
92
|
+
if (hasAcknowledgedRequests) {
|
|
93
|
+
return {
|
|
94
|
+
status: "restart_required",
|
|
95
|
+
message: "Your agent is working. Wait for active conversations and Jobs to finish, then apply again.",
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
return this.environments.applyConfiguration();
|
|
99
|
+
}
|
|
44
100
|
async initializeSessionReadState(environmentIds) {
|
|
45
101
|
for (const id of environmentIds) {
|
|
46
102
|
try {
|
|
@@ -59,6 +115,38 @@ export class LocalRuntimeApiRouter {
|
|
|
59
115
|
const method = req.method || "GET";
|
|
60
116
|
const segments = pathSegments(pathname);
|
|
61
117
|
const route = segments.join("/");
|
|
118
|
+
if (await this.conversationFiles.handle(route, req, res))
|
|
119
|
+
return;
|
|
120
|
+
if (await this.modelSetup.handle({
|
|
121
|
+
method,
|
|
122
|
+
route,
|
|
123
|
+
request: req,
|
|
124
|
+
response: res,
|
|
125
|
+
}))
|
|
126
|
+
return;
|
|
127
|
+
if (await this.setup.handle({ method, route, request: req, response: res }))
|
|
128
|
+
return;
|
|
129
|
+
if (await this.setupEmbedding.handle({
|
|
130
|
+
method,
|
|
131
|
+
route,
|
|
132
|
+
request: req,
|
|
133
|
+
response: res,
|
|
134
|
+
}))
|
|
135
|
+
return;
|
|
136
|
+
if (method === "PUT" &&
|
|
137
|
+
["runtime/plugins", "runtime/config/dashboard/file"].includes(route)) {
|
|
138
|
+
if (!acceptConfigMutationRequest(req, res))
|
|
139
|
+
return;
|
|
140
|
+
}
|
|
141
|
+
if (method === "POST" && route === "runtime/config/apply") {
|
|
142
|
+
if (!acceptConfigMutationRequest(req, res))
|
|
143
|
+
return;
|
|
144
|
+
sendJson(res, 200, {
|
|
145
|
+
ok: true,
|
|
146
|
+
activation: await applyAndCompleteRuntimeSetup(this.setup, () => this.applyWhenRequestsIdle()),
|
|
147
|
+
});
|
|
148
|
+
return;
|
|
149
|
+
}
|
|
62
150
|
if (route === "chat/attachments") {
|
|
63
151
|
const environmentId = requestEnvironmentId(url, null, this.options.defaultEnvironmentId);
|
|
64
152
|
const setupRequirement = this.environments.setupRequirement(environmentId);
|
|
@@ -84,6 +172,8 @@ export class LocalRuntimeApiRouter {
|
|
|
84
172
|
? null
|
|
85
173
|
: readJsonBody(await readBody(req));
|
|
86
174
|
const environmentId = requestEnvironmentId(url, body, this.options.defaultEnvironmentId);
|
|
175
|
+
if (await this.plugins.handle({ method, route, body, response: res }))
|
|
176
|
+
return;
|
|
87
177
|
if (segments[0] === "schedules")
|
|
88
178
|
await this.initializeSessionReadState([environmentId]);
|
|
89
179
|
if (await this.schedules.handle({
|
|
@@ -119,6 +209,7 @@ export class LocalRuntimeApiRouter {
|
|
|
119
209
|
return;
|
|
120
210
|
}
|
|
121
211
|
if (method === "GET" && route === "runtime/config/dashboard") {
|
|
212
|
+
res.setHeader("cache-control", "no-store");
|
|
122
213
|
sendJson(res, 200, {
|
|
123
214
|
ok: true,
|
|
124
215
|
dashboard: await getConfigDashboardSnapshot({
|
|
@@ -129,25 +220,48 @@ export class LocalRuntimeApiRouter {
|
|
|
129
220
|
return;
|
|
130
221
|
}
|
|
131
222
|
if (method === "PUT" && route === "runtime/config/dashboard/file") {
|
|
223
|
+
res.setHeader("cache-control", "no-store");
|
|
132
224
|
const kind = readConfigFileKind(body?.kind);
|
|
133
225
|
if (!kind) {
|
|
134
226
|
sendJson(res, 400, { ok: false, error: "invalid_config_file_kind" });
|
|
135
227
|
return;
|
|
136
228
|
}
|
|
137
|
-
const
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
229
|
+
const expectedRevision = getString(body?.expectedRevision);
|
|
230
|
+
if (!expectedRevision) {
|
|
231
|
+
sendJson(res, 428, {
|
|
232
|
+
ok: false,
|
|
233
|
+
error: "config_revision_required",
|
|
234
|
+
message: "Reload Configuration before saving this file.",
|
|
235
|
+
});
|
|
236
|
+
return;
|
|
237
|
+
}
|
|
238
|
+
try {
|
|
239
|
+
const result = await saveConfigDashboardFile({
|
|
240
|
+
rootDir: this.options.rootDir ?? process.cwd(),
|
|
241
|
+
configPath: this.options.configPath,
|
|
242
|
+
kind,
|
|
243
|
+
id: getString(body?.id),
|
|
244
|
+
config: body?.config,
|
|
245
|
+
expectedRevision,
|
|
246
|
+
});
|
|
247
|
+
sendJson(res, 200, { ...result, restartRequired: true });
|
|
248
|
+
}
|
|
249
|
+
catch (error) {
|
|
250
|
+
if (!(error instanceof ConfigFileConflictError))
|
|
251
|
+
throw error;
|
|
252
|
+
sendJson(res, 409, {
|
|
253
|
+
ok: false,
|
|
254
|
+
error: error.code,
|
|
255
|
+
message: error.message,
|
|
256
|
+
});
|
|
257
|
+
}
|
|
145
258
|
return;
|
|
146
259
|
}
|
|
147
260
|
if (method === "GET" && route === "chat/models") {
|
|
261
|
+
const pendingSetup = await pendingRuntimeSetupCatalog(this.setup);
|
|
148
262
|
sendJson(res, 200, {
|
|
149
263
|
ok: true,
|
|
150
|
-
...this.environments.modelCatalog(environmentId),
|
|
264
|
+
...(pendingSetup ?? this.environments.modelCatalog(environmentId)),
|
|
151
265
|
modes: [],
|
|
152
266
|
});
|
|
153
267
|
return;
|
|
@@ -169,6 +283,16 @@ export class LocalRuntimeApiRouter {
|
|
|
169
283
|
}
|
|
170
284
|
}
|
|
171
285
|
const environment = this.environments.get(environmentId);
|
|
286
|
+
if (await this.projects.handle({
|
|
287
|
+
method,
|
|
288
|
+
segments,
|
|
289
|
+
url,
|
|
290
|
+
body,
|
|
291
|
+
environment,
|
|
292
|
+
request: req,
|
|
293
|
+
response: res,
|
|
294
|
+
}))
|
|
295
|
+
return;
|
|
172
296
|
if (await this.sessions.handle({
|
|
173
297
|
method,
|
|
174
298
|
segments,
|
|
@@ -179,7 +303,7 @@ export class LocalRuntimeApiRouter {
|
|
|
179
303
|
}))
|
|
180
304
|
return;
|
|
181
305
|
if (method === "POST" && route === "chat/messages") {
|
|
182
|
-
await this.requests.start(res, body ?? {}, environmentId,
|
|
306
|
+
await this.requests.start(res, body ?? {}, environmentId, this.environments.get(environmentId));
|
|
183
307
|
return;
|
|
184
308
|
}
|
|
185
309
|
if (method === "GET" &&
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { IncomingMessage, ServerResponse } from "node:http";
|
|
2
|
+
export declare class ConfigMutationRequestError extends Error {
|
|
3
|
+
readonly statusCode: number;
|
|
4
|
+
constructor(message: string, statusCode?: number);
|
|
5
|
+
}
|
|
6
|
+
/** Browser writes to machine-local configuration require same-origin JSON. */
|
|
7
|
+
export declare function assertConfigMutationRequest(request: IncomingMessage): void;
|
|
8
|
+
export declare function acceptConfigMutationRequest(request: IncomingMessage, response: ServerResponse): boolean;
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { sendJson } from "./http.js";
|
|
2
|
+
export class ConfigMutationRequestError extends Error {
|
|
3
|
+
statusCode;
|
|
4
|
+
constructor(message, statusCode = 403) {
|
|
5
|
+
super(message);
|
|
6
|
+
this.statusCode = statusCode;
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
function hasJsonContentType(request) {
|
|
10
|
+
const value = request.headers["content-type"] ?? "";
|
|
11
|
+
return value.split(";", 1)[0].trim().toLowerCase() === "application/json";
|
|
12
|
+
}
|
|
13
|
+
function hasSameOrigin(request) {
|
|
14
|
+
const origin = request.headers.origin;
|
|
15
|
+
if (!origin)
|
|
16
|
+
return true;
|
|
17
|
+
try {
|
|
18
|
+
const parsed = new URL(origin);
|
|
19
|
+
if (!["http:", "https:"].includes(parsed.protocol))
|
|
20
|
+
return false;
|
|
21
|
+
const encrypted = "encrypted" in request.socket && request.socket.encrypted;
|
|
22
|
+
const expectedOrigin = `${encrypted ? "https:" : "http:"}//${request.headers.host}`;
|
|
23
|
+
return parsed.origin === expectedOrigin;
|
|
24
|
+
}
|
|
25
|
+
catch {
|
|
26
|
+
return false;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
/** Browser writes to machine-local configuration require same-origin JSON. */
|
|
30
|
+
export function assertConfigMutationRequest(request) {
|
|
31
|
+
if (request.headers["sec-fetch-site"] === "cross-site") {
|
|
32
|
+
throw new ConfigMutationRequestError("Cross-site configuration changes are not allowed.");
|
|
33
|
+
}
|
|
34
|
+
if (!hasSameOrigin(request)) {
|
|
35
|
+
throw new ConfigMutationRequestError("Configuration changes require the same origin.");
|
|
36
|
+
}
|
|
37
|
+
if (!hasJsonContentType(request)) {
|
|
38
|
+
throw new ConfigMutationRequestError("Configuration changes require application/json.", 415);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
export function acceptConfigMutationRequest(request, response) {
|
|
42
|
+
try {
|
|
43
|
+
assertConfigMutationRequest(request);
|
|
44
|
+
return true;
|
|
45
|
+
}
|
|
46
|
+
catch (error) {
|
|
47
|
+
const status = error instanceof ConfigMutationRequestError ? error.statusCode : 403;
|
|
48
|
+
sendJson(response, status, {
|
|
49
|
+
ok: false,
|
|
50
|
+
error: "configuration_request_rejected",
|
|
51
|
+
message: "Configuration changes require same-origin JSON requests.",
|
|
52
|
+
});
|
|
53
|
+
return false;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { LocalRuntimeApplication } from "../../runtime/local-application.js";
|
|
2
|
+
export type EnvironmentEntry = readonly [string, LocalRuntimeApplication];
|
|
3
|
+
export type ActivationEnvironmentOptions = {
|
|
4
|
+
environments: Map<string, LocalRuntimeApplication>;
|
|
5
|
+
canContinue?: () => boolean;
|
|
6
|
+
};
|
|
7
|
+
export declare function requireActivationIntakeOpen(options: ActivationEnvironmentOptions): void;
|
|
8
|
+
export declare function settleExistingEnvironments(options: ActivationEnvironmentOptions): Promise<EnvironmentEntry[]>;
|
|
9
|
+
export type IdleEnvironmentShutdown = {
|
|
10
|
+
status: "closed";
|
|
11
|
+
closed: readonly EnvironmentEntry[];
|
|
12
|
+
} | {
|
|
13
|
+
status: "failed";
|
|
14
|
+
closed: readonly EnvironmentEntry[];
|
|
15
|
+
error: unknown;
|
|
16
|
+
hasUncertainOwners: boolean;
|
|
17
|
+
};
|
|
18
|
+
/** Every outcome settles before reporting a partial shutdown to Apply. */
|
|
19
|
+
export declare function closeIdleEnvironments(options: ActivationEnvironmentOptions, current: readonly EnvironmentEntry[]): Promise<IdleEnvironmentShutdown>;
|
|
20
|
+
export declare function startReplacementEnvironments(options: ActivationEnvironmentOptions, replacements: readonly EnvironmentEntry[]): Promise<void>;
|
|
21
|
+
/** Retire candidate owners before restoring the previous gateway policy. */
|
|
22
|
+
export declare function closeReplacementEnvironments(options: ActivationEnvironmentOptions, previous: readonly EnvironmentEntry[]): Promise<void>;
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
export function requireActivationIntakeOpen(options) {
|
|
2
|
+
if (options.canContinue?.() === false)
|
|
3
|
+
throw new Error("web_runtime_stopped");
|
|
4
|
+
}
|
|
5
|
+
async function disposeFailedEnvironment(options, entry, startupError) {
|
|
6
|
+
const [id, environment] = entry;
|
|
7
|
+
try {
|
|
8
|
+
await environment.stop();
|
|
9
|
+
}
|
|
10
|
+
catch (stopError) {
|
|
11
|
+
// LocalApplication.stop closes in finally, then may rethrow its original startup error.
|
|
12
|
+
if (stopError !== startupError)
|
|
13
|
+
throw new AggregateError([startupError, stopError], "Failed runtime startup could not be cleaned up.");
|
|
14
|
+
}
|
|
15
|
+
if (options.environments.get(id) === environment)
|
|
16
|
+
options.environments.delete(id);
|
|
17
|
+
}
|
|
18
|
+
export async function settleExistingEnvironments(options) {
|
|
19
|
+
const current = [...options.environments];
|
|
20
|
+
const starts = await Promise.allSettled(current.map(([, environment]) => environment.start()));
|
|
21
|
+
requireActivationIntakeOpen(options);
|
|
22
|
+
for (const [index, result] of starts.entries()) {
|
|
23
|
+
if (result.status !== "rejected")
|
|
24
|
+
continue;
|
|
25
|
+
await disposeFailedEnvironment(options, current[index], result.reason);
|
|
26
|
+
}
|
|
27
|
+
return current.filter(([id, environment]) => options.environments.get(id) === environment);
|
|
28
|
+
}
|
|
29
|
+
function requestIdleEnvironmentShutdown([, environment,]) {
|
|
30
|
+
try {
|
|
31
|
+
return environment.stopIfIdle();
|
|
32
|
+
}
|
|
33
|
+
catch (error) {
|
|
34
|
+
return Promise.reject(error);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
function isConfirmedIdleShutdown(result) {
|
|
38
|
+
if (result.status !== "fulfilled")
|
|
39
|
+
return false;
|
|
40
|
+
return result.value;
|
|
41
|
+
}
|
|
42
|
+
function isRefusedIdleShutdown(result) {
|
|
43
|
+
if (result.status !== "fulfilled")
|
|
44
|
+
return false;
|
|
45
|
+
return !result.value;
|
|
46
|
+
}
|
|
47
|
+
/** Every outcome settles before reporting a partial shutdown to Apply. */
|
|
48
|
+
export async function closeIdleEnvironments(options, current) {
|
|
49
|
+
// No await separates the complete idle snapshot from closing every owner's intake.
|
|
50
|
+
const closes = current.map(requestIdleEnvironmentShutdown);
|
|
51
|
+
const results = await Promise.allSettled(closes);
|
|
52
|
+
const closed = current.filter((_, index) => isConfirmedIdleShutdown(results[index]));
|
|
53
|
+
for (const [id, environment] of closed) {
|
|
54
|
+
if (options.environments.get(id) === environment)
|
|
55
|
+
options.environments.delete(id);
|
|
56
|
+
}
|
|
57
|
+
const failed = results.find((result) => result.status === "rejected");
|
|
58
|
+
if (failed?.status === "rejected") {
|
|
59
|
+
return {
|
|
60
|
+
status: "failed",
|
|
61
|
+
closed,
|
|
62
|
+
error: failed.reason,
|
|
63
|
+
hasUncertainOwners: true,
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
if (results.some(isRefusedIdleShutdown)) {
|
|
67
|
+
return {
|
|
68
|
+
status: "failed",
|
|
69
|
+
closed,
|
|
70
|
+
error: new Error("Runtime ownership changed while applying configuration."),
|
|
71
|
+
hasUncertainOwners: false,
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
return { status: "closed", closed };
|
|
75
|
+
}
|
|
76
|
+
export async function startReplacementEnvironments(options, replacements) {
|
|
77
|
+
requireActivationIntakeOpen(options);
|
|
78
|
+
for (const [id, replacement] of replacements)
|
|
79
|
+
options.environments.set(id, replacement);
|
|
80
|
+
const starts = await Promise.allSettled(replacements.map(async (entry) => {
|
|
81
|
+
try {
|
|
82
|
+
await entry[1].start();
|
|
83
|
+
}
|
|
84
|
+
catch (error) {
|
|
85
|
+
await disposeFailedEnvironment(options, entry, error);
|
|
86
|
+
throw error;
|
|
87
|
+
}
|
|
88
|
+
}));
|
|
89
|
+
const failed = starts.find((result) => result.status === "rejected");
|
|
90
|
+
if (failed?.status === "rejected")
|
|
91
|
+
throw failed.reason;
|
|
92
|
+
requireActivationIntakeOpen(options);
|
|
93
|
+
}
|
|
94
|
+
/** Retire candidate owners before restoring the previous gateway policy. */
|
|
95
|
+
export async function closeReplacementEnvironments(options, previous) {
|
|
96
|
+
const previousOwners = new Map(previous);
|
|
97
|
+
const candidates = [...options.environments].filter(([id, environment]) => previousOwners.get(id) !== environment);
|
|
98
|
+
const stops = await Promise.allSettled(candidates.map(async ([id, environment]) => {
|
|
99
|
+
await environment.stop();
|
|
100
|
+
if (options.environments.get(id) === environment)
|
|
101
|
+
options.environments.delete(id);
|
|
102
|
+
}));
|
|
103
|
+
const errors = stops.flatMap((result) => result.status === "rejected" ? [result.reason] : []);
|
|
104
|
+
if (errors.length > 0)
|
|
105
|
+
throw new AggregateError(errors, "Candidate runtime cleanup failed.");
|
|
106
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { RuntimeSetupActivation } from "./runtime-setup-input.js";
|
|
2
|
+
export type ConfigurationActivationPreparation = {
|
|
3
|
+
prepareConfiguration(): void;
|
|
4
|
+
restoreConfiguration(): void;
|
|
5
|
+
};
|
|
6
|
+
/** Cooperating root and linked-file saves wait for activation or restoration to finish. */
|
|
7
|
+
export declare function withConfigurationActivationSource(configPath: string, operation: (preparation: ConfigurationActivationPreparation) => Promise<RuntimeSetupActivation>): Promise<RuntimeSetupActivation>;
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { withConfigFileTransaction } from "../../runtime/adapters/config-file-transaction.js";
|
|
2
|
+
import { resolveRequestRunnerConfigReference } from "../../runtime/config/request-runner-config.js";
|
|
3
|
+
import { invalidateRequestRunnerConfig } from "../../runtime/config/runner/loader.js";
|
|
4
|
+
function restoreUnappliedRequestRunner(activation, preparation) {
|
|
5
|
+
if (activation.status === "ready")
|
|
6
|
+
return;
|
|
7
|
+
preparation.restoreConfiguration();
|
|
8
|
+
}
|
|
9
|
+
/** Cooperating root and linked-file saves wait for activation or restoration to finish. */
|
|
10
|
+
export function withConfigurationActivationSource(configPath, operation) {
|
|
11
|
+
return withConfigFileTransaction(configPath, async (transaction) => {
|
|
12
|
+
const runner = resolveRequestRunnerConfigReference({
|
|
13
|
+
fileConfig: transaction.snapshot.config,
|
|
14
|
+
mainConfigPath: configPath,
|
|
15
|
+
});
|
|
16
|
+
let restoreRequestRunner = () => { };
|
|
17
|
+
const preparation = {
|
|
18
|
+
prepareConfiguration() {
|
|
19
|
+
if (runner)
|
|
20
|
+
restoreRequestRunner = invalidateRequestRunnerConfig(runner);
|
|
21
|
+
},
|
|
22
|
+
restoreConfiguration() {
|
|
23
|
+
restoreRequestRunner();
|
|
24
|
+
},
|
|
25
|
+
};
|
|
26
|
+
try {
|
|
27
|
+
const activation = await operation(preparation);
|
|
28
|
+
restoreUnappliedRequestRunner(activation, preparation);
|
|
29
|
+
return activation;
|
|
30
|
+
}
|
|
31
|
+
catch (error) {
|
|
32
|
+
preparation.restoreConfiguration();
|
|
33
|
+
throw error;
|
|
34
|
+
}
|
|
35
|
+
});
|
|
36
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { LocalRuntimeApplication } from "../../runtime/local-application.js";
|
|
2
|
+
import type { RuntimeSetupActivation } from "./runtime-setup-input.js";
|
|
3
|
+
import type { RuntimeSetupGatewayRestorePoint } from "../runtime-setup-gateway.js";
|
|
4
|
+
type ActivationOptions = {
|
|
5
|
+
environments: Map<string, LocalRuntimeApplication>;
|
|
6
|
+
defaultEnvironmentId: string;
|
|
7
|
+
environmentIds?: readonly string[];
|
|
8
|
+
createEnvironment: (id: string) => LocalRuntimeApplication;
|
|
9
|
+
recreateEnvironment: (id: string, previous: LocalRuntimeApplication) => LocalRuntimeApplication;
|
|
10
|
+
createGatewayRestorePoint?: () => RuntimeSetupGatewayRestorePoint;
|
|
11
|
+
onRestorationFailure?: () => void;
|
|
12
|
+
prepareConfiguration?: () => void;
|
|
13
|
+
restoreConfiguration?: () => void;
|
|
14
|
+
checkGateway?: () => Promise<RuntimeSetupActivation>;
|
|
15
|
+
activateGateway: () => Promise<RuntimeSetupActivation>;
|
|
16
|
+
canContinue?: () => boolean;
|
|
17
|
+
};
|
|
18
|
+
/** Idle admission is checked at the owning host, never from a browser activity list. */
|
|
19
|
+
export declare function applyRuntimeConfiguration(options: ActivationOptions): Promise<RuntimeSetupActivation>;
|
|
20
|
+
export {};
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
import { closeIdleEnvironments, closeReplacementEnvironments, requireActivationIntakeOpen, settleExistingEnvironments, startReplacementEnvironments, } from "./configuration-activation-environments.js";
|
|
2
|
+
function blockedActivation(message) {
|
|
3
|
+
return { status: "restart_required", message };
|
|
4
|
+
}
|
|
5
|
+
function ownerActivationBlock(current) {
|
|
6
|
+
const hasExternalOwner = current.some(([, environment]) => environment.getOwnership() !== "owner");
|
|
7
|
+
if (hasExternalOwner) {
|
|
8
|
+
return blockedActivation("Another process owns this runtime. Changes are saved and will apply when that process restarts.");
|
|
9
|
+
}
|
|
10
|
+
const hasBusyOwner = current.some(([, environment]) => !environment.isOwnerIdle());
|
|
11
|
+
if (hasBusyOwner) {
|
|
12
|
+
return blockedActivation("Your agent is working. Wait for active conversations and Jobs to finish, then apply again.");
|
|
13
|
+
}
|
|
14
|
+
return undefined;
|
|
15
|
+
}
|
|
16
|
+
function desiredEnvironmentIds(options) {
|
|
17
|
+
const ids = new Set(options.environmentIds ?? options.environments.keys());
|
|
18
|
+
if (ids.size === 0)
|
|
19
|
+
ids.add(options.defaultEnvironmentId);
|
|
20
|
+
return [...ids];
|
|
21
|
+
}
|
|
22
|
+
/** Idle admission is checked at the owning host, never from a browser activity list. */
|
|
23
|
+
export async function applyRuntimeConfiguration(options) {
|
|
24
|
+
requireActivationIntakeOpen(options);
|
|
25
|
+
const ids = desiredEnvironmentIds(options);
|
|
26
|
+
const current = await settleExistingEnvironments(options);
|
|
27
|
+
const initialBlock = ownerActivationBlock(current);
|
|
28
|
+
if (initialBlock)
|
|
29
|
+
return initialBlock;
|
|
30
|
+
options.prepareConfiguration?.();
|
|
31
|
+
const gatewayCheck = await options.checkGateway?.();
|
|
32
|
+
requireActivationIntakeOpen(options);
|
|
33
|
+
if (gatewayCheck?.status === "restart_required")
|
|
34
|
+
return gatewayCheck;
|
|
35
|
+
// Config parsing is synchronous and cannot alter owner intake.
|
|
36
|
+
const replacements = ids.map((id) => [id, options.createEnvironment(id)]);
|
|
37
|
+
const finalBlock = ownerActivationBlock(current);
|
|
38
|
+
if (finalBlock)
|
|
39
|
+
return finalBlock;
|
|
40
|
+
const gatewayRestorePoint = options.createGatewayRestorePoint?.();
|
|
41
|
+
const shutdown = await closeIdleEnvironments(options, current);
|
|
42
|
+
if (shutdown.status === "failed") {
|
|
43
|
+
await restoreAfterIdleShutdownFailure(options, shutdown);
|
|
44
|
+
throw shutdown.error;
|
|
45
|
+
}
|
|
46
|
+
let activation;
|
|
47
|
+
try {
|
|
48
|
+
requireActivationIntakeOpen(options);
|
|
49
|
+
activation = await options.activateGateway();
|
|
50
|
+
requireActivationIntakeOpen(options);
|
|
51
|
+
if (isRuntimeActivationReady(activation))
|
|
52
|
+
await startReplacementEnvironments(options, replacements);
|
|
53
|
+
}
|
|
54
|
+
catch (error) {
|
|
55
|
+
await restoreConfigurationAfterFailure(options, current, gatewayRestorePoint, error);
|
|
56
|
+
throw error;
|
|
57
|
+
}
|
|
58
|
+
if (!isRuntimeActivationReady(activation)) {
|
|
59
|
+
await restoreConfigurationAfterFailure(options, current, gatewayRestorePoint, new Error(activation.message ?? "Runtime configuration was not activated."));
|
|
60
|
+
}
|
|
61
|
+
return activation;
|
|
62
|
+
}
|
|
63
|
+
async function restoreAfterIdleShutdownFailure(options, shutdown) {
|
|
64
|
+
if (isActivationStopped(options))
|
|
65
|
+
return;
|
|
66
|
+
// A rejected close does not prove that the previous owner's lease was released.
|
|
67
|
+
if (shutdown.hasUncertainOwners)
|
|
68
|
+
options.onRestorationFailure?.();
|
|
69
|
+
try {
|
|
70
|
+
options.restoreConfiguration?.();
|
|
71
|
+
const restored = shutdown.closed.map(([id, environment]) => [id, options.recreateEnvironment(id, environment)]);
|
|
72
|
+
await startReplacementEnvironments(options, restored);
|
|
73
|
+
}
|
|
74
|
+
catch (restorationError) {
|
|
75
|
+
if (isActivationStopped(options))
|
|
76
|
+
return;
|
|
77
|
+
options.onRestorationFailure?.();
|
|
78
|
+
throw new AggregateError([shutdown.error, restorationError], "Idle runtime shutdown failed and closed environments could not be restored.");
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
async function restoreConfigurationAfterFailure(options, previous, gateway, activationError) {
|
|
82
|
+
if (isActivationStopped(options))
|
|
83
|
+
return;
|
|
84
|
+
try {
|
|
85
|
+
await closeReplacementEnvironments(options, previous);
|
|
86
|
+
if (isActivationStopped(options))
|
|
87
|
+
return;
|
|
88
|
+
options.restoreConfiguration?.();
|
|
89
|
+
await gateway?.restore();
|
|
90
|
+
if (isActivationStopped(options))
|
|
91
|
+
return;
|
|
92
|
+
const restored = previous.map(([id, environment]) => [id, options.recreateEnvironment(id, environment)]);
|
|
93
|
+
await startReplacementEnvironments(options, restored);
|
|
94
|
+
}
|
|
95
|
+
catch (restorationError) {
|
|
96
|
+
if (isActivationStopped(options))
|
|
97
|
+
return;
|
|
98
|
+
options.onRestorationFailure?.();
|
|
99
|
+
throw new AggregateError([activationError, restorationError], "Configuration activation failed and the previous runtime could not be restored.");
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
function isActivationStopped(options) {
|
|
103
|
+
return options.canContinue?.() === false;
|
|
104
|
+
}
|
|
105
|
+
function isRuntimeActivationReady(activation) {
|
|
106
|
+
return activation.status === "ready";
|
|
107
|
+
}
|
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
import type { RuntimeSetupGatewayRestorePoint } from "../runtime-setup-gateway.js";
|
|
2
|
+
import type { WebUiEnvironmentConfig } from "../environment-config.js";
|
|
3
|
+
import type { RuntimeSetupActivation } from "./runtime-setup-input.js";
|
|
1
4
|
import type { LocalRuntimeApplication } from "../../runtime/local-application.js";
|
|
2
5
|
import type { RequestSteeringInbox } from "../../runtime/request/request-steering.js";
|
|
3
6
|
import type { ModelProviderAdapterRegistry } from "../../model-gateway/index.js";
|
|
@@ -6,7 +9,11 @@ export type LocalRuntimeBackendOptions = {
|
|
|
6
9
|
rootDir?: string;
|
|
7
10
|
configPath?: string;
|
|
8
11
|
defaultEnvironmentId: string;
|
|
12
|
+
resolveEnvironmentConfig?: (configPath?: string) => WebUiEnvironmentConfig;
|
|
9
13
|
providerAdapters?: ModelProviderAdapterRegistry;
|
|
14
|
+
onRuntimeSetup?: (configPath: string) => Promise<RuntimeSetupActivation>;
|
|
15
|
+
createRuntimeSetupRestorePoint?: () => RuntimeSetupGatewayRestorePoint;
|
|
16
|
+
checkRuntimeSetupActivation?: (configPath: string) => Promise<RuntimeSetupActivation>;
|
|
10
17
|
};
|
|
11
18
|
export type ResolvedLocalRuntimeBackendOptions = Omit<LocalRuntimeBackendOptions, "providerAdapters"> & {
|
|
12
19
|
providerAdapters: ModelProviderAdapterRegistry;
|
|
@@ -16,6 +23,7 @@ export type RuntimeSetupRequirement = {
|
|
|
16
23
|
status: "setup_required";
|
|
17
24
|
code: "runtime_configuration_required";
|
|
18
25
|
message: string;
|
|
26
|
+
recovery?: "configuration";
|
|
19
27
|
};
|
|
20
28
|
export type RuntimeAvailability = {
|
|
21
29
|
status: "ready";
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { RuntimeEnvironmentRegistry } from "./environment-registry.js";
|
|
2
|
+
import type { LocalRequestExecution } from "./request-execution.js";
|
|
3
|
+
export type ConversationFileReference = {
|
|
4
|
+
environmentId: string;
|
|
5
|
+
sessionId: string;
|
|
6
|
+
requestId: string;
|
|
7
|
+
executionId: string;
|
|
8
|
+
};
|
|
9
|
+
export declare function readConversationFileReference(url: URL): ConversationFileReference;
|
|
10
|
+
/** The recorded completion and its request generation own every file action. */
|
|
11
|
+
export declare class ConversationFileAccess {
|
|
12
|
+
private readonly environments;
|
|
13
|
+
private readonly requests;
|
|
14
|
+
private readonly defaultEnvironmentId;
|
|
15
|
+
constructor(environments: Pick<RuntimeEnvironmentRegistry, "environmentConfig" | "setupRequirement" | "get">, requests: LocalRequestExecution, defaultEnvironmentId: () => string);
|
|
16
|
+
authorize(reference: ConversationFileReference): Promise<{
|
|
17
|
+
receipt: Readonly<{
|
|
18
|
+
version: 1;
|
|
19
|
+
location: import("../../capabilities/file-output-presentation.js").ToolFileOutputLocation;
|
|
20
|
+
rootId: string;
|
|
21
|
+
relativePath: string;
|
|
22
|
+
logicalPath: string;
|
|
23
|
+
operation: import("../../capabilities/file-output-presentation.js").ToolFileOutputOperation;
|
|
24
|
+
}>;
|
|
25
|
+
paths: import("../../runtime/ports.js").RuntimePaths;
|
|
26
|
+
assertCurrent: () => Promise<void>;
|
|
27
|
+
}>;
|
|
28
|
+
private fileReceipt;
|
|
29
|
+
private resolveEnvironment;
|
|
30
|
+
}
|