@abot-ai/runtime 1.3.1 → 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/runtime-model-addition.d.ts +13 -0
- package/dist/scripts/runtime-model-addition.js +53 -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/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 +124 -19
- 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/types.ts +6 -4
- package/plugins/exec/source/validation.ts +33 -198
- package/plugins/exec/src/index.cjs +62 -204
- 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 +6 -3
- package/plugins/filesystem/source/dev-view.ts +2 -1
- package/plugins/filesystem/source/directory-authority-write.ts +4 -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 +18 -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 +162 -35
- 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
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { setupConfigMap } from "./runtime-setup-draft.js";
|
|
2
|
+
function selectedEnabledEmbeddingProvider(config) {
|
|
3
|
+
const memory = setupConfigMap(config.longTermMemory);
|
|
4
|
+
if (memory.enabled !== true)
|
|
5
|
+
return undefined;
|
|
6
|
+
if (typeof memory.embeddingProfileId !== "string")
|
|
7
|
+
return undefined;
|
|
8
|
+
const models = setupConfigMap(config.models);
|
|
9
|
+
const profiles = setupConfigMap(models.embeddingProfiles);
|
|
10
|
+
const profileId = memory.embeddingProfileId.trim();
|
|
11
|
+
const provider = setupConfigMap(profiles[profileId]).provider;
|
|
12
|
+
if (typeof provider !== "string")
|
|
13
|
+
return undefined;
|
|
14
|
+
return provider.trim() || undefined;
|
|
15
|
+
}
|
|
16
|
+
function openAICredentialBinding(provider) {
|
|
17
|
+
if (provider.type !== "openai")
|
|
18
|
+
return undefined;
|
|
19
|
+
const configured = typeof provider.apiKeyEnv === "string" ? provider.apiKeyEnv.trim() : "";
|
|
20
|
+
if (!/^[A-Za-z_][A-Za-z0-9_]*$/u.test(configured))
|
|
21
|
+
return "OPENAI_API_KEY";
|
|
22
|
+
return configured;
|
|
23
|
+
}
|
|
24
|
+
/** Credentials may be shared by provider aliases; addresses belong to one provider. */
|
|
25
|
+
export function shouldInvalidateSetupEmbedding(params) {
|
|
26
|
+
const selectedProviderId = selectedEnabledEmbeddingProvider(params.config);
|
|
27
|
+
if (!selectedProviderId)
|
|
28
|
+
return false;
|
|
29
|
+
if (selectedProviderId === params.providerId)
|
|
30
|
+
return params.providerChanged || params.credentialChanged;
|
|
31
|
+
if (!params.credentialChanged)
|
|
32
|
+
return false;
|
|
33
|
+
const changedBinding = openAICredentialBinding(params.provider);
|
|
34
|
+
if (!changedBinding)
|
|
35
|
+
return false;
|
|
36
|
+
const models = setupConfigMap(params.config.models);
|
|
37
|
+
const providers = setupConfigMap(models.providers);
|
|
38
|
+
const selectedProvider = setupConfigMap(providers[selectedProviderId]);
|
|
39
|
+
return openAICredentialBinding(selectedProvider) === changedBinding;
|
|
40
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function replaceRuntimeSetupEnvironmentAssignment(raw: string, key: string, value: string): string;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { parse } from "dotenv";
|
|
2
|
+
import { RuntimeSetupError } from "./runtime-setup-input.js";
|
|
3
|
+
function canRoundTripEnvironmentAssignment(assignment, key, value) {
|
|
4
|
+
if (/[\r\n]/u.test(value))
|
|
5
|
+
return false;
|
|
6
|
+
const parsed = parse(assignment);
|
|
7
|
+
if (Object.keys(parsed).length !== 1)
|
|
8
|
+
return false;
|
|
9
|
+
return parsed[key] === value;
|
|
10
|
+
}
|
|
11
|
+
function serializeEnvironmentAssignment(key, value) {
|
|
12
|
+
// Both startup readers strip these quotes. Single quotes preserve literal \n/\r.
|
|
13
|
+
for (const quote of ['"', "'"]) {
|
|
14
|
+
const assignment = `${key}=${quote}${value}${quote}`;
|
|
15
|
+
if (canRoundTripEnvironmentAssignment(assignment, key, value))
|
|
16
|
+
return assignment;
|
|
17
|
+
}
|
|
18
|
+
throw new RuntimeSetupError("unsupported_setup_environment_value", "A setup value cannot be preserved in the local environment file.", 400);
|
|
19
|
+
}
|
|
20
|
+
export function replaceRuntimeSetupEnvironmentAssignment(raw, key, value) {
|
|
21
|
+
const assignment = serializeEnvironmentAssignment(key, value);
|
|
22
|
+
const prefix = new RegExp(`^\\s*(?:export\\s+)?${key}\\s*=`, "u");
|
|
23
|
+
const lines = raw.split(/\r?\n/u).filter((line) => !prefix.test(line));
|
|
24
|
+
while (lines.at(-1) === "")
|
|
25
|
+
lines.pop();
|
|
26
|
+
return [...lines, assignment, ""].join("\n");
|
|
27
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export declare class RuntimeSetupError extends Error {
|
|
2
|
+
readonly code: string;
|
|
3
|
+
readonly statusCode: number;
|
|
4
|
+
constructor(code: string, message: string, statusCode?: number);
|
|
5
|
+
}
|
|
6
|
+
export type RuntimeSetupInput = Readonly<{
|
|
7
|
+
provider: "openai" | "ollama";
|
|
8
|
+
model: string;
|
|
9
|
+
contextWindowTokens?: number;
|
|
10
|
+
baseUrl?: string;
|
|
11
|
+
apiKey?: string;
|
|
12
|
+
deferActivation?: boolean;
|
|
13
|
+
connectionRevision?: string;
|
|
14
|
+
}>;
|
|
15
|
+
export type RuntimeSetupActivation = Readonly<{
|
|
16
|
+
status: "ready" | "restart_required";
|
|
17
|
+
message?: string;
|
|
18
|
+
}>;
|
|
19
|
+
export declare function parseRuntimeSetupInput(body: Record<string, unknown> | null): RuntimeSetupInput;
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { parseBaseUrl, parseContextWindowTokens, } from "../../../scripts/runtime-setup-files.js";
|
|
2
|
+
export class RuntimeSetupError extends Error {
|
|
3
|
+
code;
|
|
4
|
+
statusCode;
|
|
5
|
+
constructor(code, message, statusCode = 400) {
|
|
6
|
+
super(message);
|
|
7
|
+
this.code = code;
|
|
8
|
+
this.statusCode = statusCode;
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
function readSetupString(value) {
|
|
12
|
+
return typeof value === "string" ? value.trim() : "";
|
|
13
|
+
}
|
|
14
|
+
function isUsableModelIdentifier(model) {
|
|
15
|
+
if (!model)
|
|
16
|
+
return false;
|
|
17
|
+
if (model.length > 256)
|
|
18
|
+
return false;
|
|
19
|
+
return !/[\u0000-\u0020\u007f]/u.test(model);
|
|
20
|
+
}
|
|
21
|
+
function isSetupConnectionRevision(value) {
|
|
22
|
+
return /^[a-f0-9-]{36}$/u.test(value);
|
|
23
|
+
}
|
|
24
|
+
function isSafeCredential(value) {
|
|
25
|
+
if (value.length > 4096)
|
|
26
|
+
return false;
|
|
27
|
+
return !/[\u0000-\u0020\u007f'"`]/u.test(value);
|
|
28
|
+
}
|
|
29
|
+
export function parseRuntimeSetupInput(body) {
|
|
30
|
+
if (body?.deferActivation !== undefined &&
|
|
31
|
+
typeof body.deferActivation !== "boolean") {
|
|
32
|
+
throw new RuntimeSetupError("invalid_setup_activation", "The deferred activation option must be true or false.");
|
|
33
|
+
}
|
|
34
|
+
const connectionRevision = readSetupString(body?.connectionRevision);
|
|
35
|
+
if (body?.connectionRevision !== undefined &&
|
|
36
|
+
!isSetupConnectionRevision(connectionRevision))
|
|
37
|
+
throw new RuntimeSetupError("invalid_setup_revision", "Refresh setup before editing the connection.");
|
|
38
|
+
let contextWindowTokens;
|
|
39
|
+
try {
|
|
40
|
+
contextWindowTokens = parseContextWindowTokens(body?.contextWindowTokens);
|
|
41
|
+
}
|
|
42
|
+
catch {
|
|
43
|
+
throw new RuntimeSetupError("invalid_context_window", "Context window must be a positive whole number of tokens.");
|
|
44
|
+
}
|
|
45
|
+
const provider = readSetupString(body?.provider);
|
|
46
|
+
if (provider !== "openai" && provider !== "ollama") {
|
|
47
|
+
throw new RuntimeSetupError("invalid_setup_provider", "Choose OpenAI or Ollama.");
|
|
48
|
+
}
|
|
49
|
+
const model = readSetupString(body?.model);
|
|
50
|
+
if (!isUsableModelIdentifier(model)) {
|
|
51
|
+
throw new RuntimeSetupError("invalid_setup_model", "Enter a model ID without spaces or control characters.");
|
|
52
|
+
}
|
|
53
|
+
const apiKey = readSetupString(body?.apiKey);
|
|
54
|
+
if (!isSafeCredential(apiKey)) {
|
|
55
|
+
throw new RuntimeSetupError("invalid_setup_credential", "The API key contains unsupported characters.");
|
|
56
|
+
}
|
|
57
|
+
if (provider === "ollama" && apiKey) {
|
|
58
|
+
throw new RuntimeSetupError("unexpected_setup_credential", "Ollama setup does not use an OpenAI API key.");
|
|
59
|
+
}
|
|
60
|
+
const requestedBaseUrl = readSetupString(body?.baseUrl);
|
|
61
|
+
if (provider === "openai" && requestedBaseUrl) {
|
|
62
|
+
throw new RuntimeSetupError("unexpected_setup_base_url", "A custom address is available for Ollama.");
|
|
63
|
+
}
|
|
64
|
+
let baseUrl;
|
|
65
|
+
if (provider === "ollama") {
|
|
66
|
+
try {
|
|
67
|
+
baseUrl = parseBaseUrl(requestedBaseUrl || "http://127.0.0.1:11434");
|
|
68
|
+
}
|
|
69
|
+
catch {
|
|
70
|
+
throw new RuntimeSetupError("invalid_setup_base_url", "Enter an HTTP or HTTPS origin without a path or credentials.");
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
return {
|
|
74
|
+
provider,
|
|
75
|
+
model,
|
|
76
|
+
...(contextWindowTokens !== undefined ? { contextWindowTokens } : {}),
|
|
77
|
+
...(baseUrl ? { baseUrl } : {}),
|
|
78
|
+
...(apiKey ? { apiKey } : {}),
|
|
79
|
+
...(body?.deferActivation === true ? { deferActivation: true } : {}),
|
|
80
|
+
...(connectionRevision ? { connectionRevision } : {}),
|
|
81
|
+
};
|
|
82
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { InspectedRuntimeConfigFile } from "../../runtime/config/loader.js";
|
|
2
|
+
/** Recovery creates its own file instead of reclaiming an orphaned model. */
|
|
3
|
+
export declare function planRuntimeSetupModelFile(configPath: string, recoveringDraft: boolean): Promise<{
|
|
4
|
+
path: string;
|
|
5
|
+
configRef: string;
|
|
6
|
+
}>;
|
|
7
|
+
export declare function runtimeSetupDraftModelPath(source: InspectedRuntimeConfigFile): Promise<string | undefined>;
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { randomUUID } from "node:crypto";
|
|
2
|
+
import { lstat } from "node:fs/promises";
|
|
3
|
+
import { dirname, resolve } from "node:path";
|
|
4
|
+
import { canonicalConfigFilePath } from "../../runtime/adapters/config-file-transaction.js";
|
|
5
|
+
import { isRecord } from "../../runtime/config/utils.js";
|
|
6
|
+
import { RuntimeSetupError } from "./runtime-setup-input.js";
|
|
7
|
+
/** Recovery creates its own file instead of reclaiming an orphaned model. */
|
|
8
|
+
export async function planRuntimeSetupModelFile(configPath, recoveringDraft) {
|
|
9
|
+
const configDirectory = dirname(configPath);
|
|
10
|
+
const configRef = "./models/default.config.json";
|
|
11
|
+
const path = resolve(configDirectory, configRef);
|
|
12
|
+
try {
|
|
13
|
+
await lstat(path);
|
|
14
|
+
}
|
|
15
|
+
catch (error) {
|
|
16
|
+
if (error instanceof Error && "code" in error && error.code === "ENOENT")
|
|
17
|
+
return { path, configRef };
|
|
18
|
+
throw error;
|
|
19
|
+
}
|
|
20
|
+
if (!recoveringDraft)
|
|
21
|
+
throw new RuntimeSetupError("setup_model_file_exists", "The default model file already exists and will be preserved.", 409);
|
|
22
|
+
const recoveryRef = `./models/setup-${randomUUID()}.config.json`;
|
|
23
|
+
return { path: resolve(configDirectory, recoveryRef), configRef: recoveryRef };
|
|
24
|
+
}
|
|
25
|
+
export async function runtimeSetupDraftModelPath(source) {
|
|
26
|
+
const models = source.config.models;
|
|
27
|
+
if (!isRecord(models) || !isRecord(models.profiles))
|
|
28
|
+
return undefined;
|
|
29
|
+
const profile = models.profiles.default;
|
|
30
|
+
if (!isRecord(profile))
|
|
31
|
+
return undefined;
|
|
32
|
+
if (typeof profile.configRef !== "string" || !profile.configRef.trim())
|
|
33
|
+
return undefined;
|
|
34
|
+
return canonicalConfigFilePath(resolve(dirname(source.path), profile.configRef.trim()));
|
|
35
|
+
}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { InspectedRuntimeConfigFile } from "../../runtime/config/loader.js";
|
|
2
|
+
import { type RuntimeSetupDraft } from "./runtime-setup-draft.js";
|
|
3
|
+
/** A stale model receipt retains ownership only of unchanged providers at its canonical target. */
|
|
4
|
+
export declare function recoverSetupProviderOwnership(source: InspectedRuntimeConfigFile, draft?: RuntimeSetupDraft, configPath?: string): Promise<Record<string, unknown>>;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { isDeepStrictEqual } from "node:util";
|
|
2
|
+
import { canonicalConfigFilePath } from "../../runtime/adapters/config-file-transaction.js";
|
|
3
|
+
import { isRecord } from "../../runtime/config/utils.js";
|
|
4
|
+
import { setupConfigMap, } from "./runtime-setup-draft.js";
|
|
5
|
+
function providerStillMatchesReceipt(providers, providerId, ownedProvider) {
|
|
6
|
+
if (!Object.hasOwn(providers, providerId))
|
|
7
|
+
return false;
|
|
8
|
+
if (!isRecord(ownedProvider))
|
|
9
|
+
return false;
|
|
10
|
+
return isDeepStrictEqual(providers[providerId], ownedProvider);
|
|
11
|
+
}
|
|
12
|
+
/** A stale model receipt retains ownership only of unchanged providers at its canonical target. */
|
|
13
|
+
export async function recoverSetupProviderOwnership(source, draft, configPath = source.path) {
|
|
14
|
+
if (!draft)
|
|
15
|
+
return {};
|
|
16
|
+
if ((await canonicalConfigFilePath(source.path)) !== draft.configPath)
|
|
17
|
+
return {};
|
|
18
|
+
if ((await canonicalConfigFilePath(configPath)) !== draft.configPath)
|
|
19
|
+
return {};
|
|
20
|
+
const models = setupConfigMap(source.config.models);
|
|
21
|
+
const providers = setupConfigMap(models.providers);
|
|
22
|
+
return Object.fromEntries(Object.entries(draft.ownedProviders).filter(([providerId, provider]) => providerStillMatchesReceipt(providers, providerId, provider)));
|
|
23
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/** The current draft owns the sole chat profile; embeddings may still use its old providers. */
|
|
2
|
+
export declare function retainSetupConnectionProviders(params: {
|
|
3
|
+
providers: Record<string, unknown>;
|
|
4
|
+
ownedProviders: Record<string, unknown>;
|
|
5
|
+
embeddingProfiles: unknown;
|
|
6
|
+
providerId: string;
|
|
7
|
+
provider: Record<string, unknown>;
|
|
8
|
+
}): {
|
|
9
|
+
providers: Record<string, unknown>;
|
|
10
|
+
ownedProviders: Record<string, unknown>;
|
|
11
|
+
};
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { setupConfigMap } from "./runtime-setup-draft.js";
|
|
2
|
+
function embeddingReferencesProvider(embeddingProfiles, providerId) {
|
|
3
|
+
return Object.values(setupConfigMap(embeddingProfiles)).some((profile) => {
|
|
4
|
+
const provider = setupConfigMap(profile).provider;
|
|
5
|
+
return typeof provider === "string" && provider.trim() === providerId;
|
|
6
|
+
});
|
|
7
|
+
}
|
|
8
|
+
function canRemoveAbandonedSetupProvider(providerId, selectedProviderId, embeddingProfiles) {
|
|
9
|
+
if (providerId === selectedProviderId)
|
|
10
|
+
return false;
|
|
11
|
+
return !embeddingReferencesProvider(embeddingProfiles, providerId);
|
|
12
|
+
}
|
|
13
|
+
/** The current draft owns the sole chat profile; embeddings may still use its old providers. */
|
|
14
|
+
export function retainSetupConnectionProviders(params) {
|
|
15
|
+
const providers = {
|
|
16
|
+
...params.providers,
|
|
17
|
+
[params.providerId]: params.provider,
|
|
18
|
+
};
|
|
19
|
+
const ownedProviders = { ...params.ownedProviders };
|
|
20
|
+
const selectedProviderIsOwned = Object.hasOwn(ownedProviders, params.providerId);
|
|
21
|
+
const selectedProviderIsNew = !Object.hasOwn(params.providers, params.providerId);
|
|
22
|
+
if (selectedProviderIsOwned || selectedProviderIsNew)
|
|
23
|
+
ownedProviders[params.providerId] = params.provider;
|
|
24
|
+
for (const providerId of Object.keys(ownedProviders)) {
|
|
25
|
+
if (!canRemoveAbandonedSetupProvider(providerId, params.providerId, params.embeddingProfiles))
|
|
26
|
+
continue;
|
|
27
|
+
delete providers[providerId];
|
|
28
|
+
delete ownedProviders[providerId];
|
|
29
|
+
}
|
|
30
|
+
return { providers, ownedProviders };
|
|
31
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { InspectedRuntimeConfigFile } from "../../runtime/config/loader.js";
|
|
2
|
+
/** Setup inspects saved files without replacing the running owner's cached runner. */
|
|
3
|
+
export declare function readConfiguredSetupRunner(source: InspectedRuntimeConfigFile): import("../../runtime/config/runner/contracts.js").RequestRunnerConfig | undefined;
|
|
4
|
+
export declare function configuredSetupModel(source: InspectedRuntimeConfigFile): {
|
|
5
|
+
provider: string;
|
|
6
|
+
model: string;
|
|
7
|
+
contextWindowTokens: number | undefined;
|
|
8
|
+
apiKeyEnv: string;
|
|
9
|
+
baseUrl: string | undefined;
|
|
10
|
+
} | undefined;
|
|
11
|
+
export declare function requiresConfiguredCredential(source: InspectedRuntimeConfigFile, rootDir: string): boolean;
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { readFileSync } from "node:fs";
|
|
2
|
+
import { dirname, resolve } from "node:path";
|
|
3
|
+
import { buildRuntimeModelConfiguration } from "../../runtime/config/builders.js";
|
|
4
|
+
import { parseRequestRunnerConfig } from "../../runtime/config/runner/versioned-config.js";
|
|
5
|
+
import { isRecord } from "../../runtime/config/utils.js";
|
|
6
|
+
import { readRuntimeSetupCredential } from "./runtime-setup-credentials.js";
|
|
7
|
+
function configuredSetupBaseUrl(value) {
|
|
8
|
+
if (!value)
|
|
9
|
+
return undefined;
|
|
10
|
+
try {
|
|
11
|
+
const url = new URL(value);
|
|
12
|
+
if (url.username || url.password)
|
|
13
|
+
return undefined;
|
|
14
|
+
return url.origin;
|
|
15
|
+
}
|
|
16
|
+
catch {
|
|
17
|
+
return undefined;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
/** Setup inspects saved files without replacing the running owner's cached runner. */
|
|
21
|
+
export function readConfiguredSetupRunner(source) {
|
|
22
|
+
const ref = isRecord(source.config.requestRunner)
|
|
23
|
+
? source.config.requestRunner.configRef
|
|
24
|
+
: undefined;
|
|
25
|
+
if (typeof ref !== "string" || !ref.trim())
|
|
26
|
+
return undefined;
|
|
27
|
+
const path = resolve(dirname(source.path), ref.trim());
|
|
28
|
+
return parseRequestRunnerConfig(JSON.parse(readFileSync(path, "utf8")), path);
|
|
29
|
+
}
|
|
30
|
+
export function configuredSetupModel(source) {
|
|
31
|
+
if (!source.exists)
|
|
32
|
+
return undefined;
|
|
33
|
+
const policy = buildRuntimeModelConfiguration(source.config, {
|
|
34
|
+
mainConfigPath: source.path,
|
|
35
|
+
}).modelPolicy;
|
|
36
|
+
const defaultId = readConfiguredSetupRunner(source)?.models.defaults.profileId ??
|
|
37
|
+
policy?.defaults?.profileId;
|
|
38
|
+
const profile = defaultId
|
|
39
|
+
? policy?.profiles?.[defaultId]
|
|
40
|
+
: Object.values(policy?.profiles ?? {})[0];
|
|
41
|
+
if (!profile?.provider || !profile.model)
|
|
42
|
+
return undefined;
|
|
43
|
+
const provider = policy?.providers?.[profile.provider];
|
|
44
|
+
if (!provider)
|
|
45
|
+
return undefined;
|
|
46
|
+
const apiKeyEnv = provider.apiKeyEnv?.trim() || "OPENAI_API_KEY";
|
|
47
|
+
return {
|
|
48
|
+
provider: provider.type,
|
|
49
|
+
model: profile.model,
|
|
50
|
+
contextWindowTokens: profile.contextWindowTokens,
|
|
51
|
+
apiKeyEnv,
|
|
52
|
+
baseUrl: configuredSetupBaseUrl(provider.baseUrl),
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
export function requiresConfiguredCredential(source, rootDir) {
|
|
56
|
+
const model = configuredSetupModel(source);
|
|
57
|
+
if (model?.provider !== "openai")
|
|
58
|
+
return false;
|
|
59
|
+
return !readRuntimeSetupCredential(rootDir, model.apiKeyEnv);
|
|
60
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { RuntimeSetupError } from "./runtime-setup-input.js";
|
|
2
|
+
export declare class MalformedRuntimeSetupReceiptError extends RuntimeSetupError {
|
|
3
|
+
constructor();
|
|
4
|
+
}
|
|
5
|
+
export declare function runtimeSetupReceiptPath(configPath: string): Promise<string>;
|
|
6
|
+
export declare function readRuntimeSetupReceipt(configPath: string): Promise<string | undefined>;
|
|
7
|
+
/** Receipt storage compares raw bytes so a malformed sidecar can be backed up and replaced. */
|
|
8
|
+
export declare function writeRuntimeSetupReceipt(configPath: string, receipt: object): Promise<void>;
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import { randomUUID } from "node:crypto";
|
|
2
|
+
import { lstat, mkdir, readFile, rename, rm, writeFile, } from "node:fs/promises";
|
|
3
|
+
import { dirname } from "node:path";
|
|
4
|
+
import { canonicalConfigFilePath } from "../../runtime/adapters/config-file-transaction.js";
|
|
5
|
+
import { withFileLock } from "../../runtime/adapters/long-term-memory/file-lock.js";
|
|
6
|
+
import { RuntimeSetupError } from "./runtime-setup-input.js";
|
|
7
|
+
export class MalformedRuntimeSetupReceiptError extends RuntimeSetupError {
|
|
8
|
+
constructor() {
|
|
9
|
+
super("setup_configuration_changed", "The unfinished setup receipt is invalid. Refresh to start setup again.", 409);
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
function receiptFileChanged() {
|
|
13
|
+
return new RuntimeSetupError("setup_configuration_changed", "The unfinished setup receipt changed. Refresh before saving again.", 409);
|
|
14
|
+
}
|
|
15
|
+
function isMissingReceipt(error) {
|
|
16
|
+
return error instanceof Error && "code" in error && error.code === "ENOENT";
|
|
17
|
+
}
|
|
18
|
+
async function readReceiptFile(path) {
|
|
19
|
+
try {
|
|
20
|
+
const info = await lstat(path);
|
|
21
|
+
if (!info.isFile() || info.isSymbolicLink())
|
|
22
|
+
throw receiptFileChanged();
|
|
23
|
+
return { raw: await readFile(path), mode: info.mode & 0o777 };
|
|
24
|
+
}
|
|
25
|
+
catch (error) {
|
|
26
|
+
if (isMissingReceipt(error))
|
|
27
|
+
return { mode: 0o600 };
|
|
28
|
+
throw error;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
export async function runtimeSetupReceiptPath(configPath) {
|
|
32
|
+
const path = `${await canonicalConfigFilePath(configPath)}.web-setup.json`;
|
|
33
|
+
await readReceiptFile(path);
|
|
34
|
+
return path;
|
|
35
|
+
}
|
|
36
|
+
export async function readRuntimeSetupReceipt(configPath) {
|
|
37
|
+
const path = await runtimeSetupReceiptPath(configPath);
|
|
38
|
+
return (await readReceiptFile(path)).raw?.toString("utf8");
|
|
39
|
+
}
|
|
40
|
+
async function requireUnchangedReceipt(path, previous) {
|
|
41
|
+
const current = (await readReceiptFile(path)).raw;
|
|
42
|
+
if (current === undefined && previous === undefined)
|
|
43
|
+
return;
|
|
44
|
+
if (current === undefined)
|
|
45
|
+
throw receiptFileChanged();
|
|
46
|
+
if (previous === undefined)
|
|
47
|
+
throw receiptFileChanged();
|
|
48
|
+
if (!current.equals(previous))
|
|
49
|
+
throw receiptFileChanged();
|
|
50
|
+
}
|
|
51
|
+
/** Receipt storage compares raw bytes so a malformed sidecar can be backed up and replaced. */
|
|
52
|
+
export async function writeRuntimeSetupReceipt(configPath, receipt) {
|
|
53
|
+
const path = await runtimeSetupReceiptPath(configPath);
|
|
54
|
+
await mkdir(dirname(path), { recursive: true });
|
|
55
|
+
await withFileLock(`${path}.config.lock`, async () => {
|
|
56
|
+
const previous = await readReceiptFile(path);
|
|
57
|
+
const token = randomUUID();
|
|
58
|
+
const temporary = `${path}.${token}.tmp`;
|
|
59
|
+
const backup = `${path}.${new Date().toISOString().replace(/[:.]/gu, "-")}.${token}.bak`;
|
|
60
|
+
try {
|
|
61
|
+
if (previous.raw !== undefined)
|
|
62
|
+
await writeFile(backup, previous.raw, {
|
|
63
|
+
mode: previous.mode,
|
|
64
|
+
flag: "wx",
|
|
65
|
+
});
|
|
66
|
+
await writeFile(temporary, JSON.stringify(receipt, null, 2) + "\n", {
|
|
67
|
+
mode: previous.mode,
|
|
68
|
+
flag: "wx",
|
|
69
|
+
});
|
|
70
|
+
await requireUnchangedReceipt(path, previous.raw);
|
|
71
|
+
await rename(temporary, path);
|
|
72
|
+
}
|
|
73
|
+
finally {
|
|
74
|
+
await rm(temporary, { force: true });
|
|
75
|
+
}
|
|
76
|
+
});
|
|
77
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import type { IncomingMessage, ServerResponse } from "node:http";
|
|
2
|
+
import { RuntimeSetupService } from "./runtime-setup-service.js";
|
|
3
|
+
export declare class RuntimeSetupRoutes {
|
|
4
|
+
private readonly service;
|
|
5
|
+
constructor(service: RuntimeSetupService);
|
|
6
|
+
status(): Promise<{
|
|
7
|
+
providers: {
|
|
8
|
+
id: string;
|
|
9
|
+
label: string;
|
|
10
|
+
requiresApiKey: boolean;
|
|
11
|
+
credentialConfigured: boolean;
|
|
12
|
+
}[];
|
|
13
|
+
existingModel?: {
|
|
14
|
+
baseUrl?: string | undefined;
|
|
15
|
+
provider: string;
|
|
16
|
+
model: string;
|
|
17
|
+
contextWindowTokens: number | undefined;
|
|
18
|
+
} | undefined;
|
|
19
|
+
defaultContextWindowTokens: number;
|
|
20
|
+
editableConnection?: {
|
|
21
|
+
revision: string;
|
|
22
|
+
} | undefined;
|
|
23
|
+
recovery?: "configuration" | undefined;
|
|
24
|
+
message?: string | undefined;
|
|
25
|
+
status: "required" | "ready";
|
|
26
|
+
configExists: boolean;
|
|
27
|
+
}>;
|
|
28
|
+
finalize(connectionRevision?: string): Promise<boolean>;
|
|
29
|
+
handle(params: {
|
|
30
|
+
method: string;
|
|
31
|
+
route: string;
|
|
32
|
+
request: IncomingMessage;
|
|
33
|
+
response: ServerResponse;
|
|
34
|
+
}): Promise<boolean>;
|
|
35
|
+
}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { assertConfigMutationRequest, ConfigMutationRequestError, } from "./config-mutation-request.js";
|
|
2
|
+
import { readBody, readJsonBody, sendJson } from "./http.js";
|
|
3
|
+
import { RuntimeSetupError } from "./runtime-setup-input.js";
|
|
4
|
+
export class RuntimeSetupRoutes {
|
|
5
|
+
service;
|
|
6
|
+
constructor(service) {
|
|
7
|
+
this.service = service;
|
|
8
|
+
}
|
|
9
|
+
status() {
|
|
10
|
+
return this.service.status();
|
|
11
|
+
}
|
|
12
|
+
finalize(connectionRevision) {
|
|
13
|
+
return this.service.finalize(connectionRevision);
|
|
14
|
+
}
|
|
15
|
+
async handle(params) {
|
|
16
|
+
if (params.route !== "runtime/setup")
|
|
17
|
+
return false;
|
|
18
|
+
params.response.setHeader("cache-control", "no-store");
|
|
19
|
+
try {
|
|
20
|
+
if (params.method === "GET") {
|
|
21
|
+
sendJson(params.response, 200, {
|
|
22
|
+
ok: true,
|
|
23
|
+
setup: await this.service.status(),
|
|
24
|
+
});
|
|
25
|
+
return true;
|
|
26
|
+
}
|
|
27
|
+
if (params.method !== "POST") {
|
|
28
|
+
sendJson(params.response, 405, {
|
|
29
|
+
ok: false,
|
|
30
|
+
error: "method_not_allowed",
|
|
31
|
+
});
|
|
32
|
+
return true;
|
|
33
|
+
}
|
|
34
|
+
assertConfigMutationRequest(params.request);
|
|
35
|
+
const body = readJsonBody(await readBody(params.request, { maxBytes: 16_384 }));
|
|
36
|
+
sendJson(params.response, 200, {
|
|
37
|
+
ok: true,
|
|
38
|
+
...(await this.service.save(body)),
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
catch (error) {
|
|
42
|
+
const isPublicError = error instanceof RuntimeSetupError ||
|
|
43
|
+
error instanceof ConfigMutationRequestError;
|
|
44
|
+
sendJson(params.response, isPublicError ? error.statusCode : 400, {
|
|
45
|
+
ok: false,
|
|
46
|
+
error: error instanceof RuntimeSetupError
|
|
47
|
+
? error.code
|
|
48
|
+
: "runtime_setup_failed",
|
|
49
|
+
message: isPublicError
|
|
50
|
+
? error.message
|
|
51
|
+
: "Setup could not be saved. Check the existing configuration and file access, then try again.",
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
return true;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { type RuntimeSetupDraft } from "./runtime-setup-draft.js";
|
|
2
|
+
import { type InspectedRuntimeConfigFile } from "../../runtime/config/loader.js";
|
|
3
|
+
import { type RuntimeSetupInput } from "./runtime-setup-input.js";
|
|
4
|
+
/** Uses the same package templates and provider/model builders as the CLI. */
|
|
5
|
+
export declare function writeRuntimeSetupScaffold(params: {
|
|
6
|
+
rootDir: string;
|
|
7
|
+
configPath: string;
|
|
8
|
+
source: InspectedRuntimeConfigFile;
|
|
9
|
+
input: RuntimeSetupInput;
|
|
10
|
+
recoveringDraft?: boolean;
|
|
11
|
+
recoveryDraft?: RuntimeSetupDraft;
|
|
12
|
+
credentialChanged?: boolean;
|
|
13
|
+
commitWithCredentials?: (commit: () => Promise<RuntimeSetupDraft>) => Promise<RuntimeSetupDraft>;
|
|
14
|
+
}): Promise<{
|
|
15
|
+
draft: RuntimeSetupDraft;
|
|
16
|
+
embeddingInvalidated: boolean;
|
|
17
|
+
}>;
|