@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,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { validateManifestEntrypoint } from "./entrypoint-validation.js";
|
|
2
2
|
import { createRequire } from "node:module";
|
|
3
|
-
import { join
|
|
3
|
+
import { join } from "node:path";
|
|
4
4
|
import { createRuntimeToolPathResolver } from "../capabilities/runtime-target-path.js";
|
|
5
5
|
import { validateToolModuleDeclarations } from "../../capabilities/tool-definition-validator.js";
|
|
6
6
|
import { traceDebug } from "../observability/debug-logger.js";
|
|
@@ -8,42 +8,11 @@ import { ABOT_RUNTIME_EXTENSION } from "../../plugin-contract/manifest.js";
|
|
|
8
8
|
import { discoverAgentPluginManifests } from "./manifest-discovery.js";
|
|
9
9
|
import { resolveBundledRuntimeRoot } from "./bundled-root.js";
|
|
10
10
|
import { projectManifestRuntimeContract } from "./manifest-projection.js";
|
|
11
|
+
import { discoverConfiguredRuntimePluginManifests } from "./configured-manifests.js";
|
|
12
|
+
import { isPluginCatalogDisabled, isPluginToolSelected, normalizePluginSelection, pluginSelectionCacheKey, } from "./selection.js";
|
|
11
13
|
const require = createRequire(import.meta.url);
|
|
12
14
|
const compiledCatalogCache = new WeakMap();
|
|
13
15
|
const bundledCatalogCache = new Map();
|
|
14
|
-
function uniqueSorted(values) {
|
|
15
|
-
return [
|
|
16
|
-
...new Set((values ?? [])
|
|
17
|
-
.map((value) => value.trim())
|
|
18
|
-
.filter((value) => value.length > 0)),
|
|
19
|
-
].sort((left, right) => left.localeCompare(right));
|
|
20
|
-
}
|
|
21
|
-
function normalizePluginSelection(config) {
|
|
22
|
-
return Object.freeze({
|
|
23
|
-
enabled: config?.enabled !== false,
|
|
24
|
-
allow: Object.freeze(uniqueSorted(config?.allow)),
|
|
25
|
-
deny: Object.freeze(uniqueSorted(config?.deny)),
|
|
26
|
-
});
|
|
27
|
-
}
|
|
28
|
-
function pluginSelectionCacheKey(selection) {
|
|
29
|
-
return JSON.stringify([selection.enabled, selection.allow, selection.deny]);
|
|
30
|
-
}
|
|
31
|
-
function matchesPluginToolId(pluginId, toolName, configuredId) {
|
|
32
|
-
return (configuredId === "*" ||
|
|
33
|
-
configuredId === pluginId ||
|
|
34
|
-
configuredId === toolName ||
|
|
35
|
-
configuredId === `${pluginId}.${toolName}`);
|
|
36
|
-
}
|
|
37
|
-
function isPluginToolSelected(params) {
|
|
38
|
-
if (!params.selection.enabled) {
|
|
39
|
-
return false;
|
|
40
|
-
}
|
|
41
|
-
if (params.selection.allow.length > 0 &&
|
|
42
|
-
!params.selection.allow.some((entry) => matchesPluginToolId(params.pluginId, params.toolName, entry))) {
|
|
43
|
-
return false;
|
|
44
|
-
}
|
|
45
|
-
return !params.selection.deny.some((entry) => matchesPluginToolId(params.pluginId, params.toolName, entry));
|
|
46
|
-
}
|
|
47
16
|
function isRecord(value) {
|
|
48
17
|
return !!value && typeof value === "object" && !Array.isArray(value);
|
|
49
18
|
}
|
|
@@ -61,64 +30,12 @@ function unwrapPluginExport(rawModule) {
|
|
|
61
30
|
function compiledCapabilityFromDeclaration(tool) {
|
|
62
31
|
return {
|
|
63
32
|
execute: tool.implementation,
|
|
33
|
+
...(tool.prepareRequest ? { prepareRequest: tool.prepareRequest } : {}),
|
|
64
34
|
...(tool.adapter ? { adapter: tool.adapter } : {}),
|
|
65
35
|
definition: tool.definition,
|
|
66
36
|
normalInvocation: tool.normalInvocation,
|
|
67
37
|
};
|
|
68
38
|
}
|
|
69
|
-
function validateManifestEntrypoint(params) {
|
|
70
|
-
if (!isRecord(params.raw) || !isRecord(params.raw.handlers)) {
|
|
71
|
-
throw new Error(`Runtime plugin ${params.pluginId} entrypoint must export handlers`);
|
|
72
|
-
}
|
|
73
|
-
const unexpectedEntrypointKeys = Object.keys(params.raw).filter((key) => key !== "handlers" && key !== "adapters");
|
|
74
|
-
if (unexpectedEntrypointKeys.length > 0) {
|
|
75
|
-
throw new Error(`Runtime plugin ${params.pluginId} entrypoint contains unsupported field ${unexpectedEntrypointKeys[0]}`);
|
|
76
|
-
}
|
|
77
|
-
const handlers = {};
|
|
78
|
-
for (const [capabilityId, handler] of Object.entries(params.raw.handlers)) {
|
|
79
|
-
if (typeof handler !== "function") {
|
|
80
|
-
throw new Error(`Runtime plugin ${params.pluginId} handler ${capabilityId} must be a function`);
|
|
81
|
-
}
|
|
82
|
-
handlers[capabilityId] = handler;
|
|
83
|
-
}
|
|
84
|
-
const expected = new Set(params.expectedCapabilityIds);
|
|
85
|
-
const missing = params.expectedCapabilityIds.filter((capabilityId) => !handlers[capabilityId]);
|
|
86
|
-
const unexpected = Object.keys(handlers).filter((capabilityId) => !expected.has(capabilityId));
|
|
87
|
-
if (missing.length > 0 || unexpected.length > 0) {
|
|
88
|
-
throw new Error(`Runtime plugin ${params.pluginId} handler mismatch: missing=${missing.join(",") || "none"}; unexpected=${unexpected.join(",") || "none"}`);
|
|
89
|
-
}
|
|
90
|
-
const adapters = {};
|
|
91
|
-
if (params.raw.adapters !== undefined) {
|
|
92
|
-
if (!isRecord(params.raw.adapters)) {
|
|
93
|
-
throw new Error(`Runtime plugin ${params.pluginId} entrypoint adapters must be an object`);
|
|
94
|
-
}
|
|
95
|
-
for (const [capabilityId, rawAdapter] of Object.entries(params.raw.adapters)) {
|
|
96
|
-
if (!expected.has(capabilityId)) {
|
|
97
|
-
throw new Error(`Runtime plugin ${params.pluginId} adapter ${capabilityId} has no declared capability`);
|
|
98
|
-
}
|
|
99
|
-
if (!isRecord(rawAdapter)) {
|
|
100
|
-
throw new Error(`Runtime plugin ${params.pluginId} adapter ${capabilityId} must be an object`);
|
|
101
|
-
}
|
|
102
|
-
const unexpectedAdapterKeys = Object.keys(rawAdapter).filter((key) => key !== "normalizeCall" && key !== "validateCall");
|
|
103
|
-
if (unexpectedAdapterKeys.length > 0) {
|
|
104
|
-
throw new Error(`Runtime plugin ${params.pluginId} adapter ${capabilityId} contains unsupported field ${unexpectedAdapterKeys[0]}`);
|
|
105
|
-
}
|
|
106
|
-
if (rawAdapter.normalizeCall !== undefined &&
|
|
107
|
-
typeof rawAdapter.normalizeCall !== "function") {
|
|
108
|
-
throw new Error(`Runtime plugin ${params.pluginId} adapter ${capabilityId}.normalizeCall must be a function`);
|
|
109
|
-
}
|
|
110
|
-
if (rawAdapter.validateCall !== undefined &&
|
|
111
|
-
typeof rawAdapter.validateCall !== "function") {
|
|
112
|
-
throw new Error(`Runtime plugin ${params.pluginId} adapter ${capabilityId}.validateCall must be a function`);
|
|
113
|
-
}
|
|
114
|
-
adapters[capabilityId] = rawAdapter;
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
return {
|
|
118
|
-
handlers,
|
|
119
|
-
...(Object.keys(adapters).length > 0 ? { adapters } : {}),
|
|
120
|
-
};
|
|
121
|
-
}
|
|
122
39
|
function createManifestSecretAccessor(pluginId, declarations) {
|
|
123
40
|
if (!declarations || Object.keys(declarations).length === 0) {
|
|
124
41
|
return undefined;
|
|
@@ -180,6 +97,9 @@ function loadManifestRuntimePlugin(host, discovered, selectedCapabilityIds) {
|
|
|
180
97
|
definition,
|
|
181
98
|
normalInvocation,
|
|
182
99
|
implementation: entrypoint.handlers[definition.name],
|
|
100
|
+
...(entrypoint.prepareRequest
|
|
101
|
+
? { prepareRequest: entrypoint.prepareRequest }
|
|
102
|
+
: {}),
|
|
183
103
|
...(entrypoint.adapters?.[definition.name]
|
|
184
104
|
? { adapter: entrypoint.adapters[definition.name] }
|
|
185
105
|
: {}),
|
|
@@ -201,42 +121,9 @@ function loadManifestRuntimePlugin(host, discovered, selectedCapabilityIds) {
|
|
|
201
121
|
capabilitySkills: projection.capabilitySkills,
|
|
202
122
|
};
|
|
203
123
|
}
|
|
204
|
-
function canonicalPluginDiscoveryRoot(rootDir) {
|
|
205
|
-
const absoluteRoot = resolve(rootDir);
|
|
206
|
-
try {
|
|
207
|
-
return realpathSync(absoluteRoot);
|
|
208
|
-
}
|
|
209
|
-
catch (error) {
|
|
210
|
-
if (error.code !== "ENOENT") {
|
|
211
|
-
throw error;
|
|
212
|
-
}
|
|
213
|
-
return absoluteRoot;
|
|
214
|
-
}
|
|
215
|
-
}
|
|
216
|
-
function assertUniquePluginManifestIds(plugins) {
|
|
217
|
-
const manifestPathsByPluginId = new Map();
|
|
218
|
-
for (const plugin of plugins) {
|
|
219
|
-
const pluginId = plugin.manifest.name;
|
|
220
|
-
const previousManifestPath = manifestPathsByPluginId.get(pluginId);
|
|
221
|
-
if (previousManifestPath) {
|
|
222
|
-
throw new Error(`Duplicate runtime plugin id: ${pluginId}; manifests: ${previousManifestPath}, ${plugin.manifestPath}`);
|
|
223
|
-
}
|
|
224
|
-
manifestPathsByPluginId.set(pluginId, plugin.manifestPath);
|
|
225
|
-
}
|
|
226
|
-
}
|
|
227
|
-
function discoverConfiguredRuntimePluginManifests(consumerRoot) {
|
|
228
|
-
const bundledRoot = resolveBundledRuntimeRoot();
|
|
229
|
-
const roots = canonicalPluginDiscoveryRoot(bundledRoot) ===
|
|
230
|
-
canonicalPluginDiscoveryRoot(consumerRoot)
|
|
231
|
-
? [consumerRoot]
|
|
232
|
-
: [bundledRoot, consumerRoot];
|
|
233
|
-
const plugins = roots.flatMap((rootDir) => discoverAgentPluginManifests(rootDir));
|
|
234
|
-
assertUniquePluginManifestIds(plugins);
|
|
235
|
-
return Object.freeze(plugins);
|
|
236
|
-
}
|
|
237
124
|
export function loadConfiguredRuntimePlugins(config) {
|
|
238
125
|
const selection = normalizePluginSelection(config.plugins);
|
|
239
|
-
if (
|
|
126
|
+
if (isPluginCatalogDisabled(selection)) {
|
|
240
127
|
return [];
|
|
241
128
|
}
|
|
242
129
|
const cacheKey = pluginSelectionCacheKey(selection);
|
|
@@ -251,7 +138,7 @@ export function loadConfiguredRuntimePlugins(config) {
|
|
|
251
138
|
agentBridgeUrl: config.agentBridgeUrl,
|
|
252
139
|
runtimePaths: config.paths,
|
|
253
140
|
};
|
|
254
|
-
const manifestPlugins = discoverConfiguredRuntimePluginManifests(config.paths.rootDir)
|
|
141
|
+
const manifestPlugins = discoverConfiguredRuntimePluginManifests(config.paths.rootDir, { excludedPluginIds: new Set(selection.deny) })
|
|
255
142
|
.map((plugin) => ({
|
|
256
143
|
plugin,
|
|
257
144
|
selectedCapabilityIds: Object.keys(plugin.manifest.extensions[ABOT_RUNTIME_EXTENSION].capabilities).filter((capabilityId) => isPluginToolSelected({
|
|
@@ -330,6 +217,7 @@ export function runtimePluginsToToolModules(plugins) {
|
|
|
330
217
|
function toolModuleDeclarationFromRuntimePlugin(tool) {
|
|
331
218
|
return {
|
|
332
219
|
implementation: tool.execute,
|
|
220
|
+
...(tool.prepareRequest ? { prepareRequest: tool.prepareRequest } : {}),
|
|
333
221
|
...(tool.adapter ? { adapter: tool.adapter } : {}),
|
|
334
222
|
definition: tool.definition,
|
|
335
223
|
normalInvocation: tool.normalInvocation,
|
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
import type { DiscoveredAgentPluginManifest } from "./discovered-manifest.js";
|
|
2
|
+
export type AgentPluginManifestDiscoveryOptions = Readonly<{
|
|
3
|
+
excludedPluginIds?: ReadonlySet<string>;
|
|
4
|
+
}>;
|
|
2
5
|
export declare function resolveContainedPluginFile(params: {
|
|
3
6
|
pluginRoot: string;
|
|
4
7
|
configuredPath: string;
|
|
5
8
|
label: string;
|
|
6
9
|
}): string;
|
|
7
10
|
export declare function readAgentPluginSkills(plugin: DiscoveredAgentPluginManifest, selectedSkillNames?: ReadonlySet<string>): Record<string, string>;
|
|
8
|
-
export declare function discoverAgentPluginManifests(rootDir: string): DiscoveredAgentPluginManifest[];
|
|
11
|
+
export declare function discoverAgentPluginManifests(rootDir: string, options?: AgentPluginManifestDiscoveryOptions): DiscoveredAgentPluginManifest[];
|
|
@@ -2,6 +2,9 @@ import { existsSync, readFileSync, readdirSync, realpathSync, statSync, } from "
|
|
|
2
2
|
import { isAbsolute, join, relative, resolve } from "node:path";
|
|
3
3
|
import { traceDebug } from "../observability/debug-logger.js";
|
|
4
4
|
import { parseAgentPluginManifest } from "./manifest-validator.js";
|
|
5
|
+
function isPluginManifestExcluded(pluginId, options) {
|
|
6
|
+
return options.excludedPluginIds?.has(pluginId) ?? false;
|
|
7
|
+
}
|
|
5
8
|
function isContained(root, candidate) {
|
|
6
9
|
const relativePath = relative(root, candidate);
|
|
7
10
|
return (relativePath === "" ||
|
|
@@ -62,7 +65,7 @@ export function readAgentPluginSkills(plugin, selectedSkillNames) {
|
|
|
62
65
|
}
|
|
63
66
|
return skills;
|
|
64
67
|
}
|
|
65
|
-
export function discoverAgentPluginManifests(rootDir) {
|
|
68
|
+
export function discoverAgentPluginManifests(rootDir, options = {}) {
|
|
66
69
|
const pluginsPath = resolve(rootDir, "plugins");
|
|
67
70
|
traceDebug("runtime.plugins", "manifest_discovery.started", {
|
|
68
71
|
pluginsPath,
|
|
@@ -80,6 +83,10 @@ export function discoverAgentPluginManifests(rootDir) {
|
|
|
80
83
|
}).sort((left, right) => left.name.localeCompare(right.name));
|
|
81
84
|
const discovered = [];
|
|
82
85
|
for (const entry of entries) {
|
|
86
|
+
// A valid manifest must use its directory name as the plugin ID. An
|
|
87
|
+
// explicitly denied package needs no filesystem traversal or validation.
|
|
88
|
+
if (isPluginManifestExcluded(entry.name, options))
|
|
89
|
+
continue;
|
|
83
90
|
const candidateRoot = join(resolvedPluginsPath, entry.name);
|
|
84
91
|
if (!statSync(candidateRoot).isDirectory()) {
|
|
85
92
|
continue;
|
|
@@ -40,6 +40,9 @@ export function projectManifestRuntimeContract(discovered, selectedCapabilityIds
|
|
|
40
40
|
declarations.push({
|
|
41
41
|
definition: {
|
|
42
42
|
name: capabilityId,
|
|
43
|
+
...(capability.requiredPermissionMode
|
|
44
|
+
? { requiredPermissionMode: capability.requiredPermissionMode }
|
|
45
|
+
: {}),
|
|
43
46
|
description: capability.description,
|
|
44
47
|
routingCapability: capability.routingCapability,
|
|
45
48
|
...(capability.controlsRefinement
|
|
@@ -1,5 +1,7 @@
|
|
|
1
|
+
import { parseRequiredToolPermissionMode } from "../../capabilities/tool-permission-mode.js";
|
|
1
2
|
import { isToolCatalogGroupId } from "../../capabilities/tool-types.js";
|
|
2
3
|
import { parseEventResultMetadata } from "../../capabilities/tool-definition-validator/event-result-metadata.js";
|
|
4
|
+
import { parseEventInputTextOptions } from "../../capabilities/tool-definition-validator/event-input-text-options.js";
|
|
3
5
|
import { ABOT_RUNTIME_EXTENSION, ABOT_RUNTIME_EXTENSION_VERSION, AGENT_PLUGIN_MANIFEST_SCHEMA, } from "../../plugin-contract/manifest.js";
|
|
4
6
|
const PLUGIN_NAME_PATTERN = /^(?!.*(?:--|\.\.))[a-z0-9][a-z0-9.-]{0,62}[a-z0-9]$|^[a-z0-9]$/u;
|
|
5
7
|
const SECRET_ENV_PATTERN = /^[A-Z][A-Z0-9_]*$/u;
|
|
@@ -20,6 +22,7 @@ const DEVELOPMENT_ROLES = [
|
|
|
20
22
|
const EVENT_PROJECTION_KINDS = [
|
|
21
23
|
"string",
|
|
22
24
|
"number",
|
|
25
|
+
"boolean",
|
|
23
26
|
"string_array",
|
|
24
27
|
"length",
|
|
25
28
|
];
|
|
@@ -211,7 +214,7 @@ function parseEventPresentation(value, path) {
|
|
|
211
214
|
throw new Error(`${path}.metadata contains an empty key`);
|
|
212
215
|
}
|
|
213
216
|
const projection = expectRecord(rawProjection, `${path}.metadata.${key}`);
|
|
214
|
-
rejectUnknownKeys(projection, ["param", "kind", "default"], `${path}.metadata.${key}`);
|
|
217
|
+
rejectUnknownKeys(projection, ["param", "kind", "default", "maxLength", "preserveWhitespace"], `${path}.metadata.${key}`);
|
|
215
218
|
if (!nonEmptyString(projection.param)) {
|
|
216
219
|
throw new Error(`${path}.metadata.${key}.param must be non-empty`);
|
|
217
220
|
}
|
|
@@ -228,6 +231,7 @@ function parseEventPresentation(value, path) {
|
|
|
228
231
|
return [
|
|
229
232
|
key,
|
|
230
233
|
{
|
|
234
|
+
...parseEventInputTextOptions(projection, `${path}.metadata.${key}`),
|
|
231
235
|
param: projection.param.trim(),
|
|
232
236
|
kind: projection.kind,
|
|
233
237
|
...(fallback !== undefined ? { default: fallback } : {}),
|
|
@@ -349,6 +353,7 @@ function parseCapabilities(value, path) {
|
|
|
349
353
|
}
|
|
350
354
|
const capability = expectRecord(rawCapability, `${path}.${capabilityId}`);
|
|
351
355
|
rejectUnknownKeys(capability, [
|
|
356
|
+
"requiredPermissionMode",
|
|
352
357
|
"description",
|
|
353
358
|
"routingCapability",
|
|
354
359
|
"controlsRefinement",
|
|
@@ -393,6 +398,7 @@ function parseCapabilities(value, path) {
|
|
|
393
398
|
return [
|
|
394
399
|
capabilityId,
|
|
395
400
|
{
|
|
401
|
+
requiredPermissionMode: parseRequiredToolPermissionMode(capability.requiredPermissionMode, `${path}.${capabilityId}.requiredPermissionMode`),
|
|
396
402
|
description: capability.description.trim(),
|
|
397
403
|
routingCapability: capability.routingCapability,
|
|
398
404
|
...(controlsRefinement === "mechanical_when_complete"
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { RuntimeConfig } from "../ports.js";
|
|
2
|
+
import type { CompiledRuntimePlugin } from "./compiled-catalog.js";
|
|
3
|
+
/** Tools and skills share the same selected catalog and compiled instances. */
|
|
4
|
+
export declare function loadRuntimeCapabilityPlugins(config?: RuntimeConfig): readonly CompiledRuntimePlugin[];
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { loadBundledRuntimePlugins, loadConfiguredRuntimePlugins, } from "./loader.js";
|
|
2
|
+
/** Tools and skills share the same selected catalog and compiled instances. */
|
|
3
|
+
export function loadRuntimeCapabilityPlugins(config) {
|
|
4
|
+
return config
|
|
5
|
+
? loadConfiguredRuntimePlugins(config)
|
|
6
|
+
: loadBundledRuntimePlugins();
|
|
7
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { RuntimePluginConfig } from "../ports.js";
|
|
2
|
+
export type PluginSelection = Readonly<{
|
|
3
|
+
enabled: boolean;
|
|
4
|
+
allow: readonly string[];
|
|
5
|
+
deny: readonly string[];
|
|
6
|
+
}>;
|
|
7
|
+
export declare function normalizePluginSelection(config: RuntimePluginConfig | undefined): PluginSelection;
|
|
8
|
+
export declare function pluginSelectionCacheKey(selection: PluginSelection): string;
|
|
9
|
+
export declare function isPluginCatalogDisabled(selection: PluginSelection): boolean;
|
|
10
|
+
export declare function isPluginToolSelected(params: {
|
|
11
|
+
pluginId: string;
|
|
12
|
+
toolName: string;
|
|
13
|
+
selection: PluginSelection;
|
|
14
|
+
}): boolean;
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
function uniqueSorted(values) {
|
|
2
|
+
return [
|
|
3
|
+
...new Set((values ?? [])
|
|
4
|
+
.map((value) => value.trim())
|
|
5
|
+
.filter((value) => value.length > 0)),
|
|
6
|
+
].sort((left, right) => left.localeCompare(right));
|
|
7
|
+
}
|
|
8
|
+
export function normalizePluginSelection(config) {
|
|
9
|
+
return Object.freeze({
|
|
10
|
+
enabled: config?.enabled !== false,
|
|
11
|
+
allow: Object.freeze(uniqueSorted(config?.allow)),
|
|
12
|
+
deny: Object.freeze(uniqueSorted(config?.deny)),
|
|
13
|
+
});
|
|
14
|
+
}
|
|
15
|
+
export function pluginSelectionCacheKey(selection) {
|
|
16
|
+
return JSON.stringify([selection.enabled, selection.allow, selection.deny]);
|
|
17
|
+
}
|
|
18
|
+
export function isPluginCatalogDisabled(selection) {
|
|
19
|
+
if (!selection.enabled)
|
|
20
|
+
return true;
|
|
21
|
+
return selection.deny.includes("*");
|
|
22
|
+
}
|
|
23
|
+
function matchesPluginToolId(pluginId, toolName, configuredId) {
|
|
24
|
+
return (configuredId === "*" ||
|
|
25
|
+
configuredId === pluginId ||
|
|
26
|
+
configuredId === toolName ||
|
|
27
|
+
configuredId === `${pluginId}.${toolName}`);
|
|
28
|
+
}
|
|
29
|
+
export function isPluginToolSelected(params) {
|
|
30
|
+
if (!params.selection.enabled) {
|
|
31
|
+
return false;
|
|
32
|
+
}
|
|
33
|
+
if (params.selection.allow.length > 0 &&
|
|
34
|
+
!params.selection.allow.some((entry) => matchesPluginToolId(params.pluginId, params.toolName, entry))) {
|
|
35
|
+
return false;
|
|
36
|
+
}
|
|
37
|
+
return !params.selection.deny.some((entry) => matchesPluginToolId(params.pluginId, params.toolName, entry));
|
|
38
|
+
}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type WebSocket from "ws";
|
|
2
|
+
import type { SessionCreationOptions } from "../sessions/project-binding.js";
|
|
2
3
|
import type { AgentMode, ModelReasoningLevel, ModelStep } from "../shared/types.js";
|
|
3
4
|
import type { ContextBuckets, ModelContextMessage } from "../sessions/context-window.js";
|
|
4
5
|
import type { SessionArtifactPathInput, SessionContextEntryKind, SessionDeleteResult, SessionListResult, SessionMessageDeleteResult, SessionMessageGrounding, SessionMessageObservationMeta, SessionMessageRole, SessionMessageSource, SessionMessageTaskType, SessionMessagesClearResult, SessionRecord, SessionRequestReplay, SessionSnapshot, SessionThinkingTraceEntry } from "../sessions/types.js";
|
|
@@ -111,7 +112,7 @@ export type AppendSessionContextEntryOptions = {
|
|
|
111
112
|
requestId?: string;
|
|
112
113
|
};
|
|
113
114
|
export type SessionStore = SessionMemoryRepository & {
|
|
114
|
-
getOrCreateSession: (sessionId: string) => Promise<SessionRecord>;
|
|
115
|
+
getOrCreateSession: (sessionId: string, options?: SessionCreationOptions) => Promise<SessionRecord>;
|
|
115
116
|
getAllSessions: () => Promise<SessionRecord[]>;
|
|
116
117
|
listSessions: (params?: {
|
|
117
118
|
limit?: number;
|
|
@@ -147,11 +148,14 @@ export type ConversationContextProvider = {
|
|
|
147
148
|
buildContextWindow: (session: SessionRecord, maxMessages?: number) => ModelContextMessage[];
|
|
148
149
|
};
|
|
149
150
|
export type ToolExecutionOptions = {
|
|
151
|
+
/** Trusted request snapshot, never parsed from a model tool payload. */
|
|
152
|
+
requestWorkingDirectory?: string;
|
|
150
153
|
abortSignal?: AbortSignal;
|
|
151
154
|
sharedState?: ToolExecutionContext["sharedState"];
|
|
152
155
|
modelInvoker?: ToolExecutionContext["modelInvoker"];
|
|
156
|
+
reportFileOutput?: ToolExecutionContext["reportFileOutput"];
|
|
153
157
|
};
|
|
154
|
-
export type ToolPermissionMode
|
|
158
|
+
export type { ToolPermissionMode } from "../capabilities/tool-permission-mode.js";
|
|
155
159
|
export type ToolApprovalRequest = {
|
|
156
160
|
requestId: string;
|
|
157
161
|
approvalId: string;
|
|
@@ -168,6 +172,8 @@ export type ToolApprovalController = {
|
|
|
168
172
|
}) => Promise<ToolApprovalDecision>;
|
|
169
173
|
};
|
|
170
174
|
export type ToolRegistry = {
|
|
175
|
+
/** Build an isolated availability/execution snapshot before model projection. */
|
|
176
|
+
prepareRequest?: () => Promise<ToolRegistry>;
|
|
171
177
|
listDefinitions: () => ToolDefinition[];
|
|
172
178
|
/** The sole config-filtered availability snapshot for ordinary invocation. */
|
|
173
179
|
listNormalInvocations?: () => readonly RegisteredToolNormalInvocation[];
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import type { SessionProject } from "../../sessions/project-binding.js";
|
|
2
|
+
export type RuntimeProject = SessionProject & Readonly<{
|
|
3
|
+
createdAt: string;
|
|
4
|
+
}>;
|
|
5
|
+
export type ProjectFolder = Readonly<{
|
|
6
|
+
name: string;
|
|
7
|
+
path: string;
|
|
8
|
+
}>;
|
|
9
|
+
export type ProjectFolderPage = Readonly<{
|
|
10
|
+
directory: string;
|
|
11
|
+
parent: string | null;
|
|
12
|
+
entries: readonly ProjectFolder[];
|
|
13
|
+
nextCursor: string | null;
|
|
14
|
+
roots: readonly Readonly<{
|
|
15
|
+
label: string;
|
|
16
|
+
path: string;
|
|
17
|
+
}>[];
|
|
18
|
+
hostPlatform: NodeJS.Platform;
|
|
19
|
+
}>;
|
|
20
|
+
export type RuntimeProjectService = Readonly<{
|
|
21
|
+
list: () => Promise<readonly RuntimeProject[]>;
|
|
22
|
+
get: (id: string) => Promise<RuntimeProject | null>;
|
|
23
|
+
create: (input: {
|
|
24
|
+
name?: string;
|
|
25
|
+
directory: string;
|
|
26
|
+
}) => Promise<RuntimeProject>;
|
|
27
|
+
browseFolders: (input?: {
|
|
28
|
+
path?: string;
|
|
29
|
+
cursor?: string;
|
|
30
|
+
}) => Promise<ProjectFolderPage>;
|
|
31
|
+
createSession: (projectId: string) => Promise<{
|
|
32
|
+
sessionId: string;
|
|
33
|
+
project: SessionProject;
|
|
34
|
+
}>;
|
|
35
|
+
}>;
|
|
36
|
+
export declare class ProjectOperationError extends Error {
|
|
37
|
+
readonly code: string;
|
|
38
|
+
readonly status: number;
|
|
39
|
+
constructor(code: string, message: string, status?: number);
|
|
40
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { type ProjectFolderPage } from "./contracts.js";
|
|
2
|
+
export declare function resolveProjectDirectory(input: string): Promise<string>;
|
|
3
|
+
export declare function browseProjectFolders(defaultDirectory: string, input?: {
|
|
4
|
+
path?: string;
|
|
5
|
+
cursor?: string;
|
|
6
|
+
}): Promise<ProjectFolderPage>;
|
|
7
|
+
export declare function projectDisplayName(input: string | undefined, directory: string): string;
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
import { homedir } from "node:os";
|
|
2
|
+
import { readdir, realpath, stat } from "node:fs/promises";
|
|
3
|
+
import { basename, dirname, isAbsolute, join, parse } from "node:path";
|
|
4
|
+
import { ProjectOperationError } from "./contracts.js";
|
|
5
|
+
function isAbsoluteProjectDirectory(input) {
|
|
6
|
+
if (typeof input !== "string")
|
|
7
|
+
return false;
|
|
8
|
+
if (!input.trim())
|
|
9
|
+
return false;
|
|
10
|
+
return isAbsolute(input);
|
|
11
|
+
}
|
|
12
|
+
export async function resolveProjectDirectory(input) {
|
|
13
|
+
if (!isAbsoluteProjectDirectory(input))
|
|
14
|
+
throw new ProjectOperationError("project_directory_absolute_required", "Choose an absolute folder path on this Runtime host.");
|
|
15
|
+
if (input.includes("\0"))
|
|
16
|
+
throw new ProjectOperationError("project_directory_invalid", "The folder path is invalid.");
|
|
17
|
+
try {
|
|
18
|
+
const canonical = await realpath(input);
|
|
19
|
+
if (!(await directoryExists(canonical)))
|
|
20
|
+
throw new ProjectOperationError("project_directory_required", "Choose a directory.");
|
|
21
|
+
return canonical;
|
|
22
|
+
}
|
|
23
|
+
catch (error) {
|
|
24
|
+
if (error instanceof ProjectOperationError)
|
|
25
|
+
throw error;
|
|
26
|
+
throw new ProjectOperationError("project_directory_unavailable", "This folder is unavailable to the Runtime host.", 404);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
async function directoryExists(path) {
|
|
30
|
+
try {
|
|
31
|
+
return (await stat(path)).isDirectory();
|
|
32
|
+
}
|
|
33
|
+
catch {
|
|
34
|
+
return false;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
async function isProjectDirectoryEntry(child, path) {
|
|
38
|
+
if (child.isDirectory())
|
|
39
|
+
return true;
|
|
40
|
+
if (!child.isSymbolicLink())
|
|
41
|
+
return false;
|
|
42
|
+
return directoryExists(path);
|
|
43
|
+
}
|
|
44
|
+
function resolveFolderPageStart(names, cursor) {
|
|
45
|
+
if (!cursor)
|
|
46
|
+
return 0;
|
|
47
|
+
const index = names.indexOf(cursor);
|
|
48
|
+
if (index < 0)
|
|
49
|
+
throw new ProjectOperationError("project_folder_cursor_stale", "Folder contents changed. Browse this folder again.", 409);
|
|
50
|
+
return index + 1;
|
|
51
|
+
}
|
|
52
|
+
async function initialProjectBrowserDirectory(defaultDirectory, selected) {
|
|
53
|
+
if (selected)
|
|
54
|
+
return resolveProjectDirectory(selected);
|
|
55
|
+
if (await directoryExists(defaultDirectory))
|
|
56
|
+
return resolveProjectDirectory(defaultDirectory);
|
|
57
|
+
return resolveProjectDirectory(homedir());
|
|
58
|
+
}
|
|
59
|
+
export async function browseProjectFolders(defaultDirectory, input = {}) {
|
|
60
|
+
const directory = await initialProjectBrowserDirectory(defaultDirectory, input.path);
|
|
61
|
+
const roots = [
|
|
62
|
+
{ label: "Default workspace", path: defaultDirectory },
|
|
63
|
+
{ label: "Home", path: homedir() },
|
|
64
|
+
{ label: "Desktop", path: join(homedir(), "Desktop") },
|
|
65
|
+
{ label: "Filesystem", path: parse(directory).root },
|
|
66
|
+
];
|
|
67
|
+
const availableRoots = [];
|
|
68
|
+
for (const root of roots) {
|
|
69
|
+
if (await directoryExists(root.path))
|
|
70
|
+
availableRoots.push(root);
|
|
71
|
+
}
|
|
72
|
+
let children;
|
|
73
|
+
try {
|
|
74
|
+
children = await readdir(directory, { withFileTypes: true });
|
|
75
|
+
}
|
|
76
|
+
catch {
|
|
77
|
+
throw new ProjectOperationError("project_directory_unreadable", "The Runtime host cannot list this folder.", 403);
|
|
78
|
+
}
|
|
79
|
+
const folders = [];
|
|
80
|
+
for (const child of children) {
|
|
81
|
+
const path = join(directory, child.name);
|
|
82
|
+
if (await isProjectDirectoryEntry(child, path))
|
|
83
|
+
folders.push({ name: child.name, path });
|
|
84
|
+
}
|
|
85
|
+
folders.sort((left, right) => left.name.localeCompare(right.name));
|
|
86
|
+
const start = resolveFolderPageStart(folders.map((folder) => folder.name), input.cursor);
|
|
87
|
+
const entries = folders.slice(start, start + 100);
|
|
88
|
+
const parent = dirname(directory);
|
|
89
|
+
return {
|
|
90
|
+
directory,
|
|
91
|
+
parent: parent === directory ? null : parent,
|
|
92
|
+
entries,
|
|
93
|
+
nextCursor: start + entries.length < folders.length ? entries.at(-1).name : null,
|
|
94
|
+
roots: availableRoots,
|
|
95
|
+
hostPlatform: process.platform,
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
function isProjectDisplayName(name) {
|
|
99
|
+
if (!name)
|
|
100
|
+
return false;
|
|
101
|
+
if (name.length > 120)
|
|
102
|
+
return false;
|
|
103
|
+
return !/[\u0000-\u001f]/.test(name);
|
|
104
|
+
}
|
|
105
|
+
export function projectDisplayName(input, directory) {
|
|
106
|
+
const name = input?.trim() || basename(directory) || directory;
|
|
107
|
+
if (!isProjectDisplayName(name))
|
|
108
|
+
throw new ProjectOperationError("project_name_invalid", "Choose a project name of 1 to 120 characters.");
|
|
109
|
+
return name;
|
|
110
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { RuntimeProject } from "./contracts.js";
|
|
2
|
+
/** One environment owner serializes updates; rename publishes a complete registry. */
|
|
3
|
+
export declare class FileProjectRepository {
|
|
4
|
+
private readonly filename;
|
|
5
|
+
private tail;
|
|
6
|
+
constructor(filename: string);
|
|
7
|
+
list(): Promise<RuntimeProject[]>;
|
|
8
|
+
create(project: RuntimeProject): Promise<RuntimeProject>;
|
|
9
|
+
private save;
|
|
10
|
+
}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { randomUUID } from "node:crypto";
|
|
2
|
+
import { mkdir, readFile, rename, rm, writeFile } from "node:fs/promises";
|
|
3
|
+
import { dirname } from "node:path";
|
|
4
|
+
import { copySessionProject } from "../../sessions/project-binding.js";
|
|
5
|
+
/** One environment owner serializes updates; rename publishes a complete registry. */
|
|
6
|
+
export class FileProjectRepository {
|
|
7
|
+
filename;
|
|
8
|
+
tail = Promise.resolve();
|
|
9
|
+
constructor(filename) {
|
|
10
|
+
this.filename = filename;
|
|
11
|
+
}
|
|
12
|
+
async list() {
|
|
13
|
+
try {
|
|
14
|
+
const input = JSON.parse(await readFile(this.filename, "utf8"));
|
|
15
|
+
if (!Array.isArray(input))
|
|
16
|
+
throw new Error("project_registry_invalid");
|
|
17
|
+
return input.map((entry) => {
|
|
18
|
+
const project = copySessionProject(entry);
|
|
19
|
+
if (typeof entry.createdAt !== "string")
|
|
20
|
+
throw new Error("project_registry_created_at_invalid");
|
|
21
|
+
return { ...project, createdAt: entry.createdAt };
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
catch (error) {
|
|
25
|
+
if (error.code === "ENOENT")
|
|
26
|
+
return [];
|
|
27
|
+
throw error;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
create(project) {
|
|
31
|
+
const result = this.tail.then(async () => {
|
|
32
|
+
const projects = await this.list();
|
|
33
|
+
const existing = projects.find((entry) => entry.directory === project.directory);
|
|
34
|
+
if (existing)
|
|
35
|
+
return existing;
|
|
36
|
+
await this.save([...projects, project]);
|
|
37
|
+
return project;
|
|
38
|
+
});
|
|
39
|
+
this.tail = result.then(() => undefined, () => undefined);
|
|
40
|
+
return result;
|
|
41
|
+
}
|
|
42
|
+
async save(projects) {
|
|
43
|
+
await mkdir(dirname(this.filename), { recursive: true });
|
|
44
|
+
const temporary = `${this.filename}.${process.pid}.${randomUUID()}.tmp`;
|
|
45
|
+
try {
|
|
46
|
+
await writeFile(temporary, JSON.stringify(projects, null, 2), "utf8");
|
|
47
|
+
await rename(temporary, this.filename);
|
|
48
|
+
}
|
|
49
|
+
catch (error) {
|
|
50
|
+
await rm(temporary, { force: true }).catch(() => undefined);
|
|
51
|
+
throw error;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import type { RuntimeConfig, SessionStore } from "../ports.js";
|
|
2
|
+
import { type RuntimeProjectService } from "./contracts.js";
|
|
3
|
+
export declare function createRuntimeProjectService(config: RuntimeConfig, sessions: Pick<SessionStore, "getOrCreateSession">): RuntimeProjectService;
|