@abot-ai/runtime 1.7.0 → 1.8.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +216 -222
- package/dist/src/capabilities/tool-definition-validator/definition-parser.js +8 -0
- package/dist/src/capabilities/tool-request-resources.d.ts +3 -0
- package/dist/src/capabilities/tool-types.d.ts +4 -0
- package/dist/src/cli/abot.js +2 -0
- package/dist/src/cli/host-companion-bundle.mjs +751 -333
- package/dist/src/computer-access/collection-consent.d.ts +9 -0
- package/dist/src/computer-access/collection-consent.js +47 -0
- package/dist/src/computer-access/command-output-capture.d.ts +17 -6
- package/dist/src/computer-access/command-output-capture.js +134 -68
- package/dist/src/computer-access/command-output-protection.d.ts +17 -0
- package/dist/src/computer-access/command-output-protection.js +59 -0
- package/dist/src/computer-access/companion/command-output.d.ts +1 -0
- package/dist/src/computer-access/companion/command-output.js +23 -6
- package/dist/src/computer-access/companion/install-link-macos.js +2 -1
- package/dist/src/computer-access/companion/native-notifications.js +3 -2
- package/dist/src/computer-access/companion/native-session.js +6 -2
- package/dist/src/computer-access/companion/observation-filter.js +2 -26
- package/dist/src/computer-access/companion/observation-process.d.ts +2 -0
- package/dist/src/computer-access/companion/observation-process.js +51 -25
- package/dist/src/computer-access/companion/observation-redaction.d.ts +2 -7
- package/dist/src/computer-access/companion/observation-redaction.js +2 -111
- package/dist/src/computer-access/companion/secret-protection-protocol.d.ts +6 -0
- package/dist/src/computer-access/companion/secret-protection-protocol.js +6 -0
- package/dist/src/computer-access/computer/companion-sessions.js +7 -6
- package/dist/src/computer-access/computer/unix-native-process.js +23 -11
- package/dist/src/computer-access/handlers.d.ts +2 -1
- package/dist/src/computer-access/handlers.js +79 -11
- package/dist/src/computer-access/host-observation.d.ts +3 -3
- package/dist/src/computer-access/native-observation-connection.d.ts +12 -0
- package/dist/src/computer-access/native-observation-connection.js +78 -0
- package/dist/src/computer-access/native-observation-ownership.d.ts +6 -0
- package/dist/src/computer-access/native-observation-ownership.js +55 -0
- package/dist/src/computer-access/native-observation-shutdown.d.ts +7 -0
- package/dist/src/computer-access/native-observation-shutdown.js +58 -0
- package/dist/src/computer-access/observation-source.d.ts +6 -0
- package/dist/src/computer-access/observation-source.js +10 -0
- package/dist/src/computer-access/security/desktop-result.d.ts +8 -0
- package/dist/src/computer-access/security/desktop-result.js +146 -0
- package/dist/src/computer-access/security/observed-error.d.ts +2 -0
- package/dist/src/computer-access/security/observed-error.js +10 -0
- package/dist/src/computer-access/security/secret-text.d.ts +7 -0
- package/dist/src/computer-access/security/secret-text.js +111 -0
- package/dist/src/computer-access/security/system-results.d.ts +2 -0
- package/dist/src/computer-access/security/system-results.js +53 -0
- package/dist/src/computer-access/system-result-protection.d.ts +11 -0
- package/dist/src/computer-access/system-result-protection.js +1 -0
- package/dist/src/model-gateway/observability/provider-response-capture.d.ts +60 -0
- package/dist/src/model-gateway/observability/provider-response-capture.js +68 -0
- package/dist/src/model-gateway/observability/provider-response-prefix.d.ts +7 -0
- package/dist/src/model-gateway/observability/provider-response-prefix.js +14 -0
- package/dist/src/model-gateway/observability/provider-response-tail.d.ts +8 -0
- package/dist/src/model-gateway/observability/provider-response-tail.js +28 -0
- package/dist/src/model-gateway/observability/provider-sse-diagnostics.d.ts +30 -0
- package/dist/src/model-gateway/observability/provider-sse-diagnostics.js +119 -0
- package/dist/src/model-gateway/observability/provider-trace.js +30 -8
- package/dist/src/model-gateway/protocol/message-contract.d.ts +1 -0
- package/dist/src/model-gateway/protocol/message-contract.js +1 -1
- package/dist/src/model-gateway/providers/ollama/adapter.js +8 -2
- package/dist/src/model-gateway/providers/ollama/stream-normalizer.js +70 -50
- package/dist/src/model-gateway/providers/ollama/stream-termination.d.ts +6 -0
- package/dist/src/model-gateway/providers/ollama/stream-termination.js +20 -0
- package/dist/src/model-gateway/providers/openai/adapter.js +9 -7
- package/dist/src/model-gateway/providers/openai/diagnostics.d.ts +0 -1
- package/dist/src/model-gateway/providers/openai/diagnostics.js +0 -9
- package/dist/src/model-gateway/providers/openai/function-output.d.ts +11 -0
- package/dist/src/model-gateway/providers/openai/function-output.js +37 -0
- package/dist/src/model-gateway/providers/openai/function-result.d.ts +7 -0
- package/dist/src/model-gateway/providers/openai/function-result.js +35 -0
- package/dist/src/model-gateway/providers/openai/message-output-policy.d.ts +3 -0
- package/dist/src/model-gateway/providers/openai/message-output-policy.js +16 -0
- package/dist/src/model-gateway/providers/openai/payload.d.ts +0 -2
- package/dist/src/model-gateway/providers/openai/payload.js +6 -23
- package/dist/src/model-gateway/providers/openai/response-lifetime.d.ts +2 -0
- package/dist/src/model-gateway/providers/openai/response-lifetime.js +64 -0
- package/dist/src/model-gateway/providers/openai/sse-data.d.ts +9 -0
- package/dist/src/model-gateway/providers/openai/sse-data.js +67 -0
- package/dist/src/model-gateway/providers/openai/stream-normalizer.d.ts +10 -22
- package/dist/src/model-gateway/providers/openai/stream-normalizer.js +78 -79
- package/dist/src/model-gateway/providers/openai/stream.js +13 -41
- package/dist/src/model-gateway/providers/openai/structured-message-output.d.ts +42 -0
- package/dist/src/model-gateway/providers/openai/structured-message-output.js +175 -0
- package/dist/src/model-gateway/server/chat-handler.js +5 -7
- package/dist/src/model-gateway/server/chat-stream-response.d.ts +7 -0
- package/dist/src/model-gateway/server/chat-stream-response.js +25 -0
- package/dist/src/model-gateway/server.js +5 -1
- package/dist/src/plugin-contract/index.d.ts +1 -0
- package/dist/src/plugin-contract/index.js +1 -0
- package/dist/src/plugin-contract/manifest.d.ts +2 -0
- package/dist/src/plugin-contract/manifest.js +1 -0
- package/dist/src/plugin-contract/platform-compatibility.d.ts +16 -0
- package/dist/src/plugin-contract/platform-compatibility.js +3 -0
- package/dist/src/plugin-sdk/computer-access.d.ts +4 -0
- package/dist/src/plugin-sdk/computer-access.js +1 -0
- package/dist/src/plugin-sdk/files-windows/process.d.ts +3 -0
- package/dist/src/plugin-sdk/files-windows/process.js +93 -0
- package/dist/src/plugin-sdk/files-windows/read-script.d.ts +1 -0
- package/dist/src/plugin-sdk/files-windows/read-script.js +43 -0
- package/dist/src/plugin-sdk/files-windows/read.d.ts +6 -0
- package/dist/src/plugin-sdk/files-windows/read.js +56 -0
- package/dist/src/plugin-sdk/files-windows/result.d.ts +4 -0
- package/dist/src/plugin-sdk/files-windows/result.js +67 -0
- package/dist/src/plugin-sdk/files.js +4 -0
- package/dist/src/plugin-sdk/index.d.ts +1 -0
- package/dist/src/plugin-sdk/index.js +1 -0
- package/dist/src/plugin-sdk/mutation-result.d.ts +7 -0
- package/dist/src/plugin-sdk/mutation-result.js +11 -0
- package/dist/src/runtime/adapters/long-term-memory/file-lock/acquisition.js +20 -3
- package/dist/src/runtime/adapters/long-term-memory/file-lock/owner-record.js +3 -1
- package/dist/src/runtime/adapters/long-term-memory/file-lock/path-observation.d.ts +3 -0
- package/dist/src/runtime/adapters/long-term-memory/file-lock/path-observation.js +20 -0
- package/dist/src/runtime/adapters/long-term-memory/file-lock/snapshot.js +7 -3
- package/dist/src/runtime/adapters/passive-learning-runtime.d.ts +1 -1
- package/dist/src/runtime/adapters/passive-learning-runtime.js +3 -3
- package/dist/src/runtime/adapters/registered-tool-worker-capabilities/payload-rejection.d.ts +2 -2
- package/dist/src/runtime/adapters/registered-tool-worker-capabilities/payload-rejection.js +2 -2
- package/dist/src/runtime/adapters/registered-tool-worker-capabilities/prepared-execution.js +17 -11
- package/dist/src/runtime/adapters/runtime-observation-connection.d.ts +5 -0
- package/dist/src/runtime/adapters/runtime-observation-connection.js +13 -0
- package/dist/src/runtime/capabilities/tool-availability.js +6 -0
- package/dist/src/runtime/context/capability-brief.d.ts +2 -2
- package/dist/src/runtime/context/capability-brief.js +3 -3
- package/dist/src/runtime/context/capability-descriptions.d.ts +3 -2
- package/dist/src/runtime/context/capability-descriptions.js +57 -20
- package/dist/src/runtime/local-host/windows-private-access.js +2 -0
- package/dist/src/runtime/long-term-memory/conversation-authoring/context.d.ts +6 -1
- package/dist/src/runtime/long-term-memory/conversation-authoring/context.js +51 -25
- package/dist/src/runtime/long-term-memory/initial-context.d.ts +17 -0
- package/dist/src/runtime/long-term-memory/initial-context.js +57 -0
- package/dist/src/runtime/long-term-memory/projection.js +1 -1
- package/dist/src/runtime/orchestration/role-calls/candidate-validation.js +2 -1
- package/dist/src/runtime/orchestration/role-calls/checkpoint-state.d.ts +1 -1
- package/dist/src/runtime/orchestration/role-calls/checkpoint-state.js +5 -2
- package/dist/src/runtime/orchestration/role-calls/contracts.d.ts +2 -1
- package/dist/src/runtime/orchestration/role-calls/ledger.d.ts +2 -1
- package/dist/src/runtime/orchestration/role-calls/ledger.js +2 -2
- package/dist/src/runtime/orchestration/role-calls/memory-recall-contract.d.ts +7 -0
- package/dist/src/runtime/orchestration/role-calls/memory-recall-state-validation.d.ts +2 -0
- package/dist/src/runtime/orchestration/role-calls/memory-recall-state-validation.js +88 -0
- package/dist/src/runtime/orchestration/role-calls/reducer.d.ts +1 -1
- package/dist/src/runtime/orchestration/role-calls/reducer.js +2 -1
- package/dist/src/runtime/orchestration/worker-capabilities/contracts.d.ts +3 -1
- package/dist/src/runtime/orchestration/worker-capabilities/contracts.js +1 -1
- package/dist/src/runtime/orchestration/worker-capabilities/execution/approval-group.js +5 -1
- package/dist/src/runtime/orchestration/worker-capabilities/execution/execution-freshness.d.ts +5 -0
- package/dist/src/runtime/orchestration/worker-capabilities/execution/execution-freshness.js +31 -0
- package/dist/src/runtime/passive-learning/application-catalog.js +3 -1
- package/dist/src/runtime/passive-learning/collection-source.js +7 -0
- package/dist/src/runtime/passive-learning/service.js +2 -3
- package/dist/src/runtime/passive-learning/status-projection.d.ts +2 -0
- package/dist/src/runtime/passive-learning/status-projection.js +9 -0
- package/dist/src/runtime/plugins/installation/package.d.ts +8 -0
- package/dist/src/runtime/plugins/installation/package.js +2 -0
- package/dist/src/runtime/plugins/installation/service.d.ts +7 -0
- package/dist/src/runtime/plugins/loader.js +24 -14
- package/dist/src/runtime/plugins/manifest-platform-compatibility.d.ts +2 -0
- package/dist/src/runtime/plugins/manifest-platform-compatibility.js +39 -0
- package/dist/src/runtime/plugins/manifest-projection.js +3 -0
- package/dist/src/runtime/plugins/manifest-validator.js +9 -1
- package/dist/src/runtime/plugins/platform-compatibility.d.ts +4 -0
- package/dist/src/runtime/plugins/platform-compatibility.js +44 -0
- package/dist/src/runtime/request/approval-wait/activation-events.js +19 -7
- package/dist/src/runtime/request/approval-wait/execution-compaction-restore.d.ts +20 -0
- package/dist/src/runtime/request/approval-wait/execution-compaction-restore.js +118 -0
- package/dist/src/runtime/request/approval-wait/super-compaction-restore.js +2 -1
- package/dist/src/runtime/request/capability-execution-freshness.js +6 -1
- package/dist/src/runtime/request/execution-agent-root-execution.js +11 -1
- package/dist/src/runtime/request/prepared-execution.js +3 -0
- package/dist/src/runtime/request/root-contract.d.ts +2 -0
- package/dist/src/runtime/request/root-execution-kernel.js +1 -0
- package/dist/src/runtime/request/runner.js +9 -3
- package/dist/src/runtime/request/supervisor-root-execution.js +6 -0
- package/dist/src/runtime/steps/execution-agent/capability-result-context.d.ts +6 -0
- package/dist/src/runtime/steps/execution-agent/capability-result-context.js +29 -0
- package/dist/src/runtime/steps/execution-agent/contracts.d.ts +10 -0
- package/dist/src/runtime/steps/execution-agent/decision-parsing.js +13 -1
- package/dist/src/runtime/steps/execution-agent/direct-response-configuration.d.ts +3 -0
- package/dist/src/runtime/steps/execution-agent/direct-response-configuration.js +64 -0
- package/dist/src/runtime/steps/execution-agent/direct-response-contract.d.ts +7 -0
- package/dist/src/runtime/steps/execution-agent/direct-response-contract.js +56 -0
- package/dist/src/runtime/steps/execution-agent/direct-response-policy.d.ts +9 -0
- package/dist/src/runtime/steps/execution-agent/direct-response-policy.js +30 -0
- package/dist/src/runtime/steps/execution-agent/direct-response-prompt.d.ts +7 -0
- package/dist/src/runtime/steps/execution-agent/direct-response-prompt.js +43 -0
- package/dist/src/runtime/steps/execution-agent/format.js +4 -3
- package/dist/src/runtime/steps/execution-agent/input.d.ts +2 -0
- package/dist/src/runtime/steps/execution-agent/input.js +22 -1
- package/dist/src/runtime/steps/execution-agent/plugin-catalog.d.ts +4 -0
- package/dist/src/runtime/steps/execution-agent/plugin-catalog.js +8 -0
- package/dist/src/runtime/steps/execution-agent/prompt.d.ts +1 -0
- package/dist/src/runtime/steps/execution-agent/prompt.js +7 -8
- package/dist/src/runtime/steps/execution-agent/response-prompt.js +1 -0
- package/dist/src/runtime/steps/execution-agent/response-run.js +5 -11
- package/dist/src/runtime/steps/execution-agent/run.js +4 -1
- package/dist/src/runtime/steps/execution-agent/state-context.d.ts +3 -5
- package/dist/src/runtime/steps/execution-agent/state-context.js +5 -51
- package/dist/src/runtime/steps/execution-agent/work-plan-contract.d.ts +1 -3
- package/dist/src/runtime/steps/execution-agent/work-plan-contract.js +0 -55
- package/dist/src/runtime/steps/execution-agent/work-plan-schema.d.ts +3 -0
- package/dist/src/runtime/steps/execution-agent/work-plan-schema.js +61 -0
- package/dist/src/runtime/steps/planner-decision/capability-brief.d.ts +2 -0
- package/dist/src/runtime/steps/planner-decision/prompt.js +26 -49
- package/dist/src/runtime/steps/supervisor-decision/input.d.ts +1 -0
- package/dist/src/runtime/steps/supervisor-decision/input.js +5 -0
- package/dist/src/runtime/steps/supervisor-decision/prompt.d.ts +1 -0
- package/dist/src/runtime/steps/supervisor-decision/prompt.js +6 -2
- package/dist/src/runtime/steps/supervisor-decision/run.d.ts +1 -0
- package/dist/src/runtime/steps/supervisor-decision/run.js +4 -0
- package/dist/src/runtime/steps/supervisor-response/run.d.ts +2 -0
- package/dist/src/runtime/steps/supervisor-response/run.js +3 -6
- package/dist/src/sessions/durable-session-commit.js +3 -3
- package/dist/src/sessions/prepared-session-replacement.d.ts +6 -0
- package/dist/src/sessions/prepared-session-replacement.js +46 -0
- package/dist/src/sessions/session-store.js +3 -3
- package/dist/src/shared/passive-observation-self-exclusion.d.ts +5 -0
- package/dist/src/shared/passive-observation-self-exclusion.js +37 -0
- package/dist/src/shared/windows-file-io/authority-script.d.ts +1 -0
- package/dist/src/shared/windows-file-io/authority-script.js +94 -0
- package/dist/src/shared/windows-file-io/native-script.d.ts +2 -0
- package/dist/src/shared/windows-file-io/native-script.js +120 -0
- package/dist/src/shared/windows-file-io/read-bytes-script.d.ts +1 -0
- package/dist/src/shared/windows-file-io/read-bytes-script.js +18 -0
- package/dist/src/shared/windows-job-object.d.ts +2 -0
- package/dist/src/shared/windows-job-object.js +66 -0
- package/dist/src/web-ui/app/ARCHITECTURE.md +1 -1
- package/dist/src/web-ui/app/app-bootstrap.js +14 -1
- package/dist/src/web-ui/app/app-state.js +0 -7
- package/dist/src/web-ui/app/app.js +54 -156
- package/dist/src/web-ui/app/components/automations/node-inspector.js +3 -2
- package/dist/src/web-ui/app/components/automations/step-editor-dialog.js +3 -0
- package/dist/src/web-ui/app/components/automations/timeline.js +3 -2
- package/dist/src/web-ui/app/components/composer-submission-notice.js +50 -0
- package/dist/src/web-ui/app/components/config-workspace/model-plugin-permissions.js +7 -1
- package/dist/src/web-ui/app/components/config-workspace/workspace-mutations.js +22 -2
- package/dist/src/web-ui/app/components/dashboard/compact-layout.js +137 -0
- package/dist/src/web-ui/app/components/dashboard/icons.js +5 -0
- package/dist/src/web-ui/app/components/dashboard/widget-card.js +85 -0
- package/dist/src/web-ui/app/components/dashboard/widget-dialog.js +83 -0
- package/dist/src/web-ui/app/components/dashboard/widget-summaries.js +155 -0
- package/dist/src/web-ui/app/components/dashboard/workspace.js +28 -4
- package/dist/src/web-ui/app/components/home-guidance/daily-review.js +2 -2
- package/dist/src/web-ui/app/components/home-guidance/home-guidance.js +20 -6
- package/dist/src/web-ui/app/components/model-setup/context-window-feedback.js +53 -0
- package/dist/src/web-ui/app/components/model-setup/save-flow.js +3 -1
- package/dist/src/web-ui/app/components/model-setup/save-outcome.js +1 -0
- package/dist/src/web-ui/app/components/model-setup/wizard.js +12 -0
- package/dist/src/web-ui/app/components/operations-summary.js +2 -1
- package/dist/src/web-ui/app/components/passive-learning/activity-controls.js +4 -0
- package/dist/src/web-ui/app/components/passive-learning/collection-access.js +35 -0
- package/dist/src/web-ui/app/components/passive-learning/collection-consent-dialog.js +59 -0
- package/dist/src/web-ui/app/components/passive-learning/collection-consent-gate.js +94 -0
- package/dist/src/web-ui/app/components/passive-learning/computer-update-notice.js +6 -0
- package/dist/src/web-ui/app/components/passive-learning/failure-copy.js +1 -0
- package/dist/src/web-ui/app/components/passive-learning/home-widget-preview.js +32 -0
- package/dist/src/web-ui/app/components/passive-learning/home.js +11 -3
- package/dist/src/web-ui/app/components/passive-learning/macos-collection-restart-notice.js +1 -0
- package/dist/src/web-ui/app/components/passive-learning/memory.js +2 -4
- package/dist/src/web-ui/app/components/passive-learning/workspace-view.js +2 -2
- package/dist/src/web-ui/app/components/plugins/compatibility.js +13 -0
- package/dist/src/web-ui/app/components/plugins/discovery-rendering.js +9 -1
- package/dist/src/web-ui/app/components/plugins/installation-compatibility.js +7 -0
- package/dist/src/web-ui/app/components/plugins/installation.js +2 -1
- package/dist/src/web-ui/app/components/plugins/rendering.js +3 -0
- package/dist/src/web-ui/app/components/reasoning-override-prompt.js +82 -0
- package/dist/src/web-ui/app/components/runtime-config-activation.js +22 -8
- package/dist/src/web-ui/app/components/runtime-setup/optional-steps.js +7 -4
- package/dist/src/web-ui/app/components/runtime-setup/plugins.js +3 -1
- package/dist/src/web-ui/app/components/runtime-setup/rendering.js +6 -4
- package/dist/src/web-ui/app/components/runtime-setup-guide.d.ts +1 -0
- package/dist/src/web-ui/app/components/schedules/details.js +3 -2
- package/dist/src/web-ui/app/components/schedules/form.js +10 -8
- package/dist/src/web-ui/app/components/schedules/workspace.js +23 -4
- package/dist/src/web-ui/app/components/session-sidebar-sections.js +2 -2
- package/dist/src/web-ui/app/components/spark-chat/handoff-actions.js +9 -3
- package/dist/src/web-ui/app/components/spark-chat/panel.js +1 -1
- package/dist/src/web-ui/app/components/spark-chat/placement.js +4 -7
- package/dist/src/web-ui/app/components/spark-chat/settings.js +8 -4
- package/dist/src/web-ui/app/components/system-host/home-widget-permission-preview.js +75 -0
- package/dist/src/web-ui/app/components/system-host/home-widget-summary.js +93 -0
- package/dist/src/web-ui/app/components/system-host/macos-permission-rendering.js +2 -2
- package/dist/src/web-ui/app/components/system-host/macos-permissions.js +2 -0
- package/dist/src/web-ui/app/components/system-host/native-windows-access.js +50 -0
- package/dist/src/web-ui/app/components/system-host/rendering.js +6 -3
- package/dist/src/web-ui/app/components/system-host/windows-store-setup.js +2 -2
- package/dist/src/web-ui/app/components/workspace-storage-notice.js +37 -0
- package/dist/src/web-ui/app/computer-access-feature.js +13 -1
- package/dist/src/web-ui/app/configuration-environment-refresh.js +27 -34
- package/dist/src/web-ui/app/configuration-feature.js +11 -1
- package/dist/src/web-ui/app/controllers/app-event-bindings.js +38 -105
- package/dist/src/web-ui/app/controllers/chat-request-controller.d.ts +28 -0
- package/dist/src/web-ui/app/controllers/chat-request-controller.js +34 -66
- package/dist/src/web-ui/app/controllers/composer-attachments-controller.d.ts +15 -40
- package/dist/src/web-ui/app/controllers/composer-attachments-controller.js +26 -69
- package/dist/src/web-ui/app/controllers/composer-draft-view.d.ts +27 -0
- package/dist/src/web-ui/app/controllers/composer-draft-view.js +48 -0
- package/dist/src/web-ui/app/controllers/composer-drafts.d.ts +55 -0
- package/dist/src/web-ui/app/controllers/composer-drafts.js +120 -0
- package/dist/src/web-ui/app/controllers/composer-feature.d.ts +65 -0
- package/dist/src/web-ui/app/controllers/composer-feature.js +124 -0
- package/dist/src/web-ui/app/controllers/composer-queue-controller.d.ts +33 -94
- package/dist/src/web-ui/app/controllers/composer-queue-controller.js +185 -251
- package/dist/src/web-ui/app/controllers/composer-submission-lifecycle.d.ts +48 -0
- package/dist/src/web-ui/app/controllers/composer-submission-lifecycle.js +97 -0
- package/dist/src/web-ui/app/controllers/composer-submit-controller.d.ts +30 -61
- package/dist/src/web-ui/app/controllers/composer-submit-controller.js +56 -138
- package/dist/src/web-ui/app/controllers/composer-surface-controller.js +6 -0
- package/dist/src/web-ui/app/controllers/composer-workspace-controller.d.ts +22 -40
- package/dist/src/web-ui/app/controllers/composer-workspace-controller.js +49 -165
- package/dist/src/web-ui/app/controllers/conversation-navigation-intent.js +15 -0
- package/dist/src/web-ui/app/controllers/conversation-request-hydration.js +20 -17
- package/dist/src/web-ui/app/controllers/conversation-session-controller.d.ts +1 -2
- package/dist/src/web-ui/app/controllers/conversation-session-controller.js +49 -22
- package/dist/src/web-ui/app/controllers/conversation-workspace-activation.js +27 -0
- package/dist/src/web-ui/app/controllers/daily-memory-review.js +15 -16
- package/dist/src/web-ui/app/controllers/environment-transition.js +126 -0
- package/dist/src/web-ui/app/controllers/environment-workspace-preparation.js +18 -0
- package/dist/src/web-ui/app/controllers/home-composer-feature.d.ts +14 -36
- package/dist/src/web-ui/app/controllers/home-composer-feature.js +17 -114
- package/dist/src/web-ui/app/controllers/home-conversation-activation.js +6 -8
- package/dist/src/web-ui/app/controllers/operations-controller.js +2 -1
- package/dist/src/web-ui/app/controllers/passive-learning-controller.js +56 -0
- package/dist/src/web-ui/app/controllers/projects-controller.d.ts +1 -1
- package/dist/src/web-ui/app/controllers/projects-controller.js +6 -1
- package/dist/src/web-ui/app/controllers/reasoning-mode-controller.js +174 -0
- package/dist/src/web-ui/app/controllers/runtime-selection-controller.d.ts +7 -0
- package/dist/src/web-ui/app/controllers/runtime-selection-controller.js +20 -155
- package/dist/src/web-ui/app/controllers/session-controller.js +33 -17
- package/dist/src/web-ui/app/controllers/session-pin-updates.js +14 -0
- package/dist/src/web-ui/app/controllers/session-sidebar-controller.js +12 -14
- package/dist/src/web-ui/app/controllers/spark-chat-sync.js +2 -2
- package/dist/src/web-ui/app/controllers/steer-controller.js +9 -7
- package/dist/src/web-ui/app/controllers/tool-permission-mode-controller.js +1 -1
- package/dist/src/web-ui/app/controllers/workspace-conversation-opener.js +34 -0
- package/dist/src/web-ui/app/dashboard-feature.js +12 -2
- package/dist/src/web-ui/app/lib/reasoning-controls.js +40 -0
- package/dist/src/web-ui/app/lib/session-composer-queue-ownership.js +58 -0
- package/dist/src/web-ui/app/lib/session-composer-queue.d.ts +12 -0
- package/dist/src/web-ui/app/lib/session-composer-queue.js +25 -6
- package/dist/src/web-ui/app/passive-learning-feature.js +18 -5
- package/dist/src/web-ui/app/schedules-feature.js +5 -3
- package/dist/src/web-ui/app/services/client-preferences.d.ts +18 -10
- package/dist/src/web-ui/app/services/client-preferences.js +25 -16
- package/dist/src/web-ui/app/services/home-guidance-preferences.js +13 -13
- package/dist/src/web-ui/app/services/reasoning-override.js +12 -0
- package/dist/src/web-ui/app/services/runtime-web-client/automations.js +10 -2
- package/dist/src/web-ui/app/services/runtime-web-client/memory.js +7 -2
- package/dist/src/web-ui/app/services/runtime-web-client/system-host.js +2 -0
- package/dist/src/web-ui/app/services/runtime-web-client.d.ts +2 -0
- package/dist/src/web-ui/app/services/runtime-web-client.js +2 -0
- package/dist/src/web-ui/app/services/server-composer-queue.js +32 -0
- package/dist/src/web-ui/app/services/session-sidebar-preferences.js +5 -5
- package/dist/src/web-ui/app/services/workspace-state-storage.js +116 -0
- package/dist/src/web-ui/app/services/workspace-state.js +27 -0
- package/dist/src/web-ui/app/spark-chat-conversation.js +34 -45
- package/dist/src/web-ui/app/spark-chat-feature.js +10 -4
- package/dist/src/web-ui/app/styles/21-composer-controls.css +16 -0
- package/dist/src/web-ui/app/styles/41-plugin-management.css +8 -0
- package/dist/src/web-ui/app/styles/42-model-plugin-permissions.css +1 -0
- package/dist/src/web-ui/app/styles/49-collection-consent.css +30 -0
- package/dist/src/web-ui/app/styles/64-workspace-storage.css +23 -0
- package/dist/src/web-ui/app/styles/95-home-widgets.css +109 -0
- package/dist/src/web-ui/app/styles.css +3 -0
- package/dist/src/web-ui/client-state/contracts.d.ts +15 -0
- package/dist/src/web-ui/client-state/contracts.js +13 -0
- package/dist/src/web-ui/client-state/preference-shapes.d.ts +2 -0
- package/dist/src/web-ui/client-state/preference-shapes.js +80 -0
- package/dist/src/web-ui/client-state/preferences.d.ts +3 -0
- package/dist/src/web-ui/client-state/preferences.js +84 -0
- package/dist/src/web-ui/client-state/queue.d.ts +3 -0
- package/dist/src/web-ui/client-state/queue.js +43 -0
- package/dist/src/web-ui/client-state/routes.d.ts +7 -0
- package/dist/src/web-ui/client-state/routes.js +58 -0
- package/dist/src/web-ui/client-state/store.d.ts +14 -0
- package/dist/src/web-ui/client-state/store.js +88 -0
- package/dist/src/web-ui/local-runtime/configuration-activation-source.js +2 -0
- package/dist/src/web-ui/local-runtime/http.js +11 -2
- package/dist/src/web-ui/local-runtime/model-context-capacity-error.d.ts +14 -0
- package/dist/src/web-ui/local-runtime/model-context-capacity-error.js +28 -0
- package/dist/src/web-ui/local-runtime/model-setup-context-window.d.ts +15 -0
- package/dist/src/web-ui/local-runtime/model-setup-context-window.js +25 -0
- package/dist/src/web-ui/local-runtime/model-setup-routes.js +2 -0
- package/dist/src/web-ui/local-runtime/model-setup-service.js +5 -2
- package/dist/src/web-ui/local-runtime/model-setup-validation.d.ts +1 -0
- package/dist/src/web-ui/local-runtime/model-setup-validation.js +14 -7
- package/dist/src/web-ui/local-runtime/request-body-error.d.ts +11 -0
- package/dist/src/web-ui/local-runtime/request-body-error.js +14 -0
- package/dist/src/web-ui/local-runtime/request-control-observation.js +2 -2
- package/dist/src/web-ui/local-runtime/request-execution.js +18 -18
- package/dist/src/web-ui/local-runtime/runtime-setup-connection-edit.d.ts +2 -0
- package/dist/src/web-ui/local-runtime/runtime-setup-connection-edit.js +35 -22
- package/dist/src/web-ui/local-runtime/runtime-setup-context-window.d.ts +2 -9
- package/dist/src/web-ui/local-runtime/runtime-setup-context-window.js +4 -27
- package/dist/src/web-ui/local-runtime/runtime-setup-credentials.d.ts +15 -1
- package/dist/src/web-ui/local-runtime/runtime-setup-credentials.js +30 -11
- package/dist/src/web-ui/local-runtime/runtime-setup-edit-files.d.ts +20 -0
- package/dist/src/web-ui/local-runtime/runtime-setup-edit-files.js +104 -0
- package/dist/src/web-ui/local-runtime/runtime-setup-edit-journal.d.ts +29 -0
- package/dist/src/web-ui/local-runtime/runtime-setup-edit-journal.js +151 -0
- package/dist/src/web-ui/local-runtime/runtime-setup-edit-recovery.d.ts +7 -0
- package/dist/src/web-ui/local-runtime/runtime-setup-edit-recovery.js +87 -0
- package/dist/src/web-ui/local-runtime/runtime-setup-edit-transaction.d.ts +3 -0
- package/dist/src/web-ui/local-runtime/runtime-setup-edit-transaction.js +37 -0
- package/dist/src/web-ui/local-runtime/runtime-setup-service.js +4 -0
- package/dist/src/web-ui/local-runtime-backend.js +14 -0
- package/dist/src/web-ui/plugin-management-catalog.d.ts +3 -1
- package/dist/src/web-ui/plugin-management-catalog.js +3 -1
- package/dist/src/web-ui/plugin-management-service.d.ts +1 -0
- package/dist/src/web-ui/plugin-removal-service.d.ts +1 -0
- package/dist/src/web-ui/server-readiness.d.ts +3 -0
- package/dist/src/web-ui/server-readiness.js +36 -0
- package/dist/src/web-ui/server.d.ts +2 -0
- package/dist/src/web-ui/server.js +23 -1
- package/dist/src/web-ui/system-host-service.js +13 -2
- package/dist/src/web-ui/system-host-setup/collection-consent-route.d.ts +3 -0
- package/dist/src/web-ui/system-host-setup/collection-consent-route.js +30 -0
- package/docs/installation.md +44 -5
- package/docs/plugins.md +174 -28
- package/docs/tool-execution-result-evidence-contract.md +57 -0
- package/docs/windows-companion-store.md +5 -0
- package/package.json +4 -2
- package/plugins/capability-brief/plugin.json +5 -1
- package/plugins/code-outline/README.md +20 -0
- package/plugins/code-outline/plugin.json +2 -1
- package/plugins/code-outline/source/index.ts +16 -20
- package/plugins/code-outline/source/read-failure.ts +40 -0
- package/plugins/code-outline/src/index.cjs +614 -29
- package/plugins/document-reader/README.md +33 -0
- package/plugins/document-reader/plugin.json +2 -1
- package/plugins/document-reader/source/pdf-contract.ts +57 -0
- package/plugins/document-reader/source/pdf-parser.ts +139 -0
- package/plugins/document-reader/source/pdf-process-main.ts +56 -0
- package/plugins/document-reader/source/pdf-process.ts +207 -0
- package/plugins/document-reader/source/pdf-result.ts +79 -0
- package/plugins/document-reader/source/pdf-worker.ts +39 -303
- package/plugins/document-reader/source/pdf.ts +4 -1
- package/plugins/document-reader/source/read-failure.ts +37 -0
- package/plugins/document-reader/source/reader.ts +3 -19
- package/plugins/document-reader/src/index.cjs +995 -211
- package/plugins/exec/README.md +19 -0
- package/plugins/exec/plugin.json +4 -3
- package/plugins/exec/skills/exec_skill/SKILL.md +3 -2
- package/plugins/exec/source/filesystem-file-observer.ts +98 -0
- package/plugins/exec/source/filesystem-observer.ts +8 -79
- package/plugins/exec/source/output-files.ts +12 -6
- package/plugins/exec/source/paths.ts +3 -1
- package/plugins/exec/source/process-manager.ts +8 -24
- package/plugins/exec/source/shell-platform.ts +19 -3
- package/plugins/exec/source/shell-process.ts +55 -0
- package/plugins/exec/source/windows-job-source.ts +1 -0
- package/plugins/exec/source/windows-shell-bootstrap.ts +20 -0
- package/plugins/exec/src/index.cjs +252 -96
- package/plugins/filesystem/README.md +65 -0
- package/plugins/filesystem/plugin.json +7 -3
- package/plugins/filesystem/source/atomic-write.ts +2 -0
- package/plugins/filesystem/source/bounded-io.ts +80 -306
- package/plugins/filesystem/source/directory-sample.ts +2 -0
- package/plugins/filesystem/source/errors.ts +14 -0
- package/plugins/filesystem/source/file-observation.ts +151 -0
- package/plugins/filesystem/source/file-version.ts +41 -0
- package/plugins/filesystem/source/index.ts +6 -0
- package/plugins/filesystem/source/mutation-coordinator.ts +1 -0
- package/plugins/filesystem/source/windows/authority-script.ts +1 -0
- package/plugins/filesystem/source/windows/native-script.ts +1 -0
- package/plugins/filesystem/source/windows/operations.ts +197 -0
- package/plugins/filesystem/source/windows/process.ts +214 -0
- package/plugins/filesystem/source/windows/publication-script.ts +29 -0
- package/plugins/filesystem/source/windows/read-script.ts +63 -0
- package/plugins/filesystem/source/windows/request-availability.ts +67 -0
- package/plugins/filesystem/source/windows/source.ts +42 -0
- package/plugins/filesystem/source/windows/storage-script.ts +11 -0
- package/plugins/filesystem/source/windows/streams-script.ts +24 -0
- package/plugins/filesystem/source/windows/write-script.ts +86 -0
- package/plugins/filesystem/src/index.cjs +1208 -322
- package/plugins/json-inspector/README.md +18 -0
- package/plugins/json-inspector/plugin.json +2 -1
- package/plugins/json-inspector/source/index.ts +16 -19
- package/plugins/json-inspector/source/read-failure.ts +42 -0
- package/plugins/json-inspector/src/index.cjs +612 -27
- package/plugins/local-search/README.md +29 -0
- package/plugins/local-search/plugin.json +2 -1
- package/plugins/local-search/source/errors.ts +2 -0
- package/plugins/local-search/source/paths.ts +3 -0
- package/plugins/local-search/source/ripgrep-process.ts +31 -5
- package/plugins/local-search/source/ripgrep.ts +3 -3
- package/plugins/local-search/source/windows-authority.ts +99 -0
- package/plugins/local-search/source/windows-search-lease.ts +49 -0
- package/plugins/local-search/source/windows-search-process.ts +91 -0
- package/plugins/local-search/source/windows-search-script.ts +52 -0
- package/plugins/local-search/src/index.cjs +595 -26
- package/plugins/memory/plugin.json +5 -1
- package/plugins/memory/source/lock-directory-claim.ts +56 -0
- package/plugins/memory/source/lock-owner-file.ts +71 -0
- package/plugins/memory/source/lock-path-observation.ts +26 -0
- package/plugins/memory/source/prepared-memory-replacement.ts +40 -0
- package/plugins/memory/source/store-lock.ts +12 -7
- package/plugins/memory/source/store.ts +3 -2
- package/plugins/memory/src/index.cjs +174 -25
- package/plugins/project-orientation/README.md +23 -0
- package/plugins/project-orientation/plugin.json +2 -1
- package/plugins/project-orientation/source/index.ts +12 -9
- package/plugins/project-orientation/source/inspection-failure.ts +70 -0
- package/plugins/project-orientation/source/manifest-summary.ts +9 -2
- package/plugins/project-orientation/source/tree.ts +6 -0
- package/plugins/project-orientation/src/index.cjs +647 -31
- package/plugins/system/README.md +51 -15
- package/plugins/system/plugin.json +6 -2
- package/plugins/system/skills/system_actions/SKILL.md +1 -1
- package/plugins/system/source/command-working-directory.ts +47 -0
- package/plugins/system/source/computer/handlers.ts +13 -9
- package/plugins/system/source/computer/observation-result.ts +10 -5
- package/plugins/system/source/computer/request-computers.ts +10 -3
- package/plugins/system/source/computer/request-modules.ts +3 -6
- package/plugins/system/source/computer/runtime-platform.ts +18 -0
- package/plugins/system/source/host-dispatch.ts +18 -2
- package/plugins/system/source/index.ts +5 -3
- package/plugins/system/source/local-command-output-retention.ts +16 -0
- package/plugins/system/source/local-command-output.ts +16 -8
- package/plugins/system/source/request-system-modules.ts +12 -2
- package/plugins/system/source/request-target-snapshot.ts +2 -1
- package/plugins/system/source/security/desktop-result.ts +177 -0
- package/plugins/system/source/security/observed-error.ts +10 -0
- package/plugins/system/source/security/secret-text.ts +118 -0
- package/plugins/system/source/security/system-results.ts +62 -0
- package/plugins/system/source/security/windows-output-directory.ts +82 -0
- package/plugins/system/src/index.cjs +837 -151
- package/plugins/system-probe/plugin.json +9 -3
- package/plugins/system-probe/source/disk-path.ts +8 -0
- package/plugins/system-probe/source/index.ts +10 -5
- package/plugins/system-probe/source/machine-load.ts +33 -0
- package/plugins/system-probe/source/metrics.ts +6 -8
- package/plugins/system-probe/src/index.cjs +49 -16
- package/plugins/web/plugin.json +5 -1
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { resolveRequestSteeringInbox } from "../request/request-steering.js";
|
|
2
|
+
import { retrieveResponseLongTermMemory } from "./response-context.js";
|
|
3
|
+
import { prepareConversationMemoryKnowledge, buildConversationMemoryAuthoringContext, canAuthorConversationMemory, projectConversationMemoryKnowledge, } from "./conversation-authoring/context.js";
|
|
4
|
+
/** Prepared once as part of the existing request ledger initialization. */
|
|
5
|
+
export async function prepareInitialMemory(request, restored) {
|
|
6
|
+
if (!usesInitialMemory(request))
|
|
7
|
+
return undefined;
|
|
8
|
+
if (restored !== undefined)
|
|
9
|
+
return restored;
|
|
10
|
+
request.abortSignal.throwIfAborted();
|
|
11
|
+
const steering = resolveRequestSteeringInbox(request.requestSteering).snapshot();
|
|
12
|
+
const message = await retrieveResponseLongTermMemory(request, steering);
|
|
13
|
+
request.abortSignal.throwIfAborted();
|
|
14
|
+
// EA prepares authoring targets at startup; Supervisor keeps its terminal step.
|
|
15
|
+
const knowledge = usesInitialExecutionMemory(request)
|
|
16
|
+
? await prepareConversationMemoryKnowledge(request, steering)
|
|
17
|
+
: undefined;
|
|
18
|
+
request.abortSignal.throwIfAborted();
|
|
19
|
+
return Object.freeze({
|
|
20
|
+
...(message ? { message: projectPersistentMemoryMessage(message) } : {}),
|
|
21
|
+
...(knowledge ? { knowledge: projectConversationMemoryKnowledge(knowledge) } : {}),
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
function projectPersistentMemoryMessage(message) {
|
|
25
|
+
if (!message.attachments)
|
|
26
|
+
return message;
|
|
27
|
+
return { ...message, attachments: message.attachments.filter(isPersistentMemoryAttachment) };
|
|
28
|
+
}
|
|
29
|
+
function isPersistentMemoryAttachment(attachment) {
|
|
30
|
+
return attachment.toolEvidence === undefined;
|
|
31
|
+
}
|
|
32
|
+
function usesInitialMemory(request) {
|
|
33
|
+
if (!request.longTermMemory?.enabled)
|
|
34
|
+
return false;
|
|
35
|
+
if (request.executionPolicy.authority.id === "execution-agent-v1")
|
|
36
|
+
return true;
|
|
37
|
+
return request.executionPolicy.authority.id === "supervisor-worker-v1";
|
|
38
|
+
}
|
|
39
|
+
export function projectExecutionAgentMemory(request, initial, steering) {
|
|
40
|
+
if (!usesInitialExecutionMemory(request))
|
|
41
|
+
return { memoryMessage: undefined, authoringContext: undefined, authoringEnabled: false };
|
|
42
|
+
const authoringContext = initial?.knowledge
|
|
43
|
+
? buildConversationMemoryAuthoringContext(request, steering, {
|
|
44
|
+
...initial.knowledge, referenceTime: new Date().toISOString(),
|
|
45
|
+
})
|
|
46
|
+
: undefined;
|
|
47
|
+
return Object.freeze({
|
|
48
|
+
memoryMessage: initial?.message,
|
|
49
|
+
authoringContext,
|
|
50
|
+
authoringEnabled: canAuthorConversationMemory(request, authoringContext),
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
function usesInitialExecutionMemory(request) {
|
|
54
|
+
if (!request.longTermMemory?.enabled)
|
|
55
|
+
return false;
|
|
56
|
+
return request.executionPolicy.authority.id === "execution-agent-v1";
|
|
57
|
+
}
|
|
@@ -32,7 +32,7 @@ function serializeProjection(records) {
|
|
|
32
32
|
return JSON.stringify({
|
|
33
33
|
kind: LONG_TERM_MEMORY_MESSAGE_KIND,
|
|
34
34
|
authority: "passive_reference",
|
|
35
|
-
purpose: "
|
|
35
|
+
purpose: "support_root_decisions_and_response_authoring",
|
|
36
36
|
memories: records.map((record) => ({
|
|
37
37
|
content: record.content,
|
|
38
38
|
tags: record.tags,
|
|
@@ -2,7 +2,7 @@ import { isRuntimeDelegateRoleId, RUNTIME_ROOT_ROLE_ID, RUNTIME_ROLE_IDS, } from
|
|
|
2
2
|
import { createRoleCapabilitySelectionFingerprint, normalizeRoleCapabilitySelectionProjection, } from "./capability-selection-reconsideration.js";
|
|
3
3
|
import { isRoleCapabilitySelectionSupervisionState, } from "./capability-selection-supervision.js";
|
|
4
4
|
import { isValidRoleCapabilitySelectionSupervision } from "./capability-selection-supervision-validation.js";
|
|
5
|
-
import { validateRoleMemoryRecalls } from "./memory-recall-state-validation.js";
|
|
5
|
+
import { hasInitialMemoryContext, validateRoleMemoryRecalls } from "./memory-recall-state-validation.js";
|
|
6
6
|
import { isValidAdoptedModelWorkPlan } from "./work-plan-validation.js";
|
|
7
7
|
import { isRoleOperationFingerprint, isRoleOperationOutcomeFingerprintForOutcome, isSameRoleOperationIdentity, replayRoleOperationSupervisionEvidence, } from "./operation-supervision.js";
|
|
8
8
|
import { isIssuedRoleOperationSupervisionInterventionForRequest } from "./operation-supervision-issuance.js";
|
|
@@ -48,6 +48,7 @@ export function validateRoleCallState(state, policy) {
|
|
|
48
48
|
!Array.isArray(state?.plans) ||
|
|
49
49
|
!Array.isArray(state?.capabilityExecutions) ||
|
|
50
50
|
!Array.isArray(state?.memoryRecalls) ||
|
|
51
|
+
!hasInitialMemoryContext(state?.initialMemory, policy.authority.id) ||
|
|
51
52
|
!isRoleOperationSupervisionState(state?.operationSupervision) ||
|
|
52
53
|
!isRoleCapabilitySelectionSupervisionState(state?.capabilitySelectionSupervision) ||
|
|
53
54
|
!Number.isInteger(state?.callSequence) ||
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import type { RoleCallLedgerCheckpoint } from "./checkpoint-contract.js";
|
|
2
2
|
import type { RoleCallPolicy, RoleCallState } from "./contracts.js";
|
|
3
3
|
/** Hydrate only an admitted, parked capability; no model or reducer command replay. */
|
|
4
|
-
export declare function restoreCheckpointState(checkpoint: RoleCallLedgerCheckpoint, requestId: string, policy: RoleCallPolicy): RoleCallState;
|
|
4
|
+
export declare function restoreCheckpointState(checkpoint: RoleCallLedgerCheckpoint, requestId: string, policy: RoleCallPolicy, initialMemory?: RoleCallState["initialMemory"]): RoleCallState;
|
|
@@ -4,14 +4,17 @@ import { validateRoleCallCandidate } from "./reducer.js";
|
|
|
4
4
|
import { issueInitialRoleCapabilitySelectionSupervisionState } from "./capability-selection-supervision-issuance.js";
|
|
5
5
|
import { restoreRoleOperationSupervisionIssuance } from "./operation-supervision-issuance.js";
|
|
6
6
|
/** Hydrate only an admitted, parked capability; no model or reducer command replay. */
|
|
7
|
-
export function restoreCheckpointState(checkpoint, requestId, policy) {
|
|
7
|
+
export function restoreCheckpointState(checkpoint, requestId, policy, initialMemory) {
|
|
8
8
|
if (!isCheckpointEnvelope(checkpoint))
|
|
9
9
|
throw new Error("role_call_checkpoint_invalid");
|
|
10
10
|
if (!hasCheckpointRequestIdentity(checkpoint, requestId))
|
|
11
11
|
throw new Error("role_call_checkpoint_request_mismatch");
|
|
12
12
|
if (!hasCheckpointPolicy(checkpoint, policy))
|
|
13
13
|
throw new Error("role_call_checkpoint_policy_mismatch");
|
|
14
|
-
const state = seal(structuredClone(checkpoint.state
|
|
14
|
+
const state = seal(structuredClone({ ...checkpoint.state,
|
|
15
|
+
...(checkpoint.state.initialMemory === undefined && initialMemory !== undefined
|
|
16
|
+
? { initialMemory } : {}),
|
|
17
|
+
}));
|
|
15
18
|
if (!isParkedCapabilityState(state))
|
|
16
19
|
throw new Error("role_call_checkpoint_not_parked");
|
|
17
20
|
if (!issueInitialRoleCapabilitySelectionSupervisionState(state))
|
|
@@ -5,7 +5,7 @@ import type { RoleOperationFingerprint, RoleOperationOutcomeFingerprint, RoleOpe
|
|
|
5
5
|
import type { RoleCapabilitySelectionSupervisionStage, RoleCapabilitySelectionSupervisionState, RoleCapabilitySelectionSupervisionTrigger } from "./capability-selection-supervision.js";
|
|
6
6
|
import type { RoleCapabilitySelectionReconsiderationCause } from "./reconsideration-cause.js";
|
|
7
7
|
import type { RoleCallResultReceipt } from "./result-receipt.js";
|
|
8
|
-
import type { RoleMemoryRecall, RoleMemoryRecallCommand, RoleMemoryRecallCommitEffect, RoleMemoryRecallTransactions } from "./memory-recall-contract.js";
|
|
8
|
+
import type { RoleInitialMemory, RoleMemoryRecall, RoleMemoryRecallCommand, RoleMemoryRecallCommitEffect, RoleMemoryRecallTransactions } from "./memory-recall-contract.js";
|
|
9
9
|
import type { AdoptedModelWorkPlan, UpdateModelWorkPlanCommand, ModelWorkPlanCommitEffect, ModelWorkPlanTransactions } from "./work-plan-contracts.js";
|
|
10
10
|
export declare const ROLE_CALL_LEDGER_CONTRACT_VERSION = 18;
|
|
11
11
|
export declare const ROLE_CALL_LEDGER_HEAD_KIND: "runtime_role_call_ledger_v18";
|
|
@@ -191,6 +191,7 @@ export type RoleCallState = Readonly<{
|
|
|
191
191
|
plans: readonly RoleCallPlanState[];
|
|
192
192
|
capabilityExecutions: readonly RoleCapabilityExecution[];
|
|
193
193
|
memoryRecalls: readonly RoleMemoryRecall[];
|
|
194
|
+
initialMemory?: RoleInitialMemory;
|
|
194
195
|
operationSupervision: RoleOperationSupervisionState;
|
|
195
196
|
capabilitySelectionSupervision: RoleCapabilitySelectionSupervisionState;
|
|
196
197
|
rootResponse: string | null;
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import type { RoleCallLedgerCheckpoint } from "./checkpoint-contract.js";
|
|
2
|
-
import { type RoleCallLedger, type RoleCallLedgerHead, type RoleCallPolicyInput } from "./contracts.js";
|
|
2
|
+
import { type RoleCallLedger, type RoleCallLedgerHead, type RoleCallPolicyInput, type RoleCallState } from "./contracts.js";
|
|
3
3
|
export declare function createRoleCallLedger(params: {
|
|
4
4
|
requestId: string;
|
|
5
5
|
policy: RoleCallPolicyInput;
|
|
6
6
|
checkpoint?: RoleCallLedgerCheckpoint;
|
|
7
|
+
initialMemory?: RoleCallState["initialMemory"];
|
|
7
8
|
}): RoleCallLedger;
|
|
8
9
|
/** Confirms exact current-head ownership without trusting structural ledgers. */
|
|
9
10
|
export declare function isCurrentRoleCallLedgerHead(ledger: RoleCallLedger, head: RoleCallLedgerHead): boolean;
|
|
@@ -15,8 +15,8 @@ const issuedRoleCallLedgerHeads = new WeakMap();
|
|
|
15
15
|
export function createRoleCallLedger(params) {
|
|
16
16
|
const policy = sealRoleCallPolicy(params.policy);
|
|
17
17
|
const initialState = params.checkpoint
|
|
18
|
-
? restoreCheckpointState(params.checkpoint, params.requestId, policy)
|
|
19
|
-
: createInitialRoleCallState(params.requestId);
|
|
18
|
+
? restoreCheckpointState(params.checkpoint, params.requestId, policy, params.initialMemory)
|
|
19
|
+
: createInitialRoleCallState(params.requestId, params.initialMemory);
|
|
20
20
|
const capabilitySelectionSupervisionIssuanceAuthority = resolveRoleCapabilitySelectionSupervisionIssuanceAuthority(initialState);
|
|
21
21
|
if (!capabilitySelectionSupervisionIssuanceAuthority) {
|
|
22
22
|
throw new Error("role_call_capability_selection_supervision_issuance_authority_missing");
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import type { ChatMessage } from "../../../model-gateway/types.js";
|
|
2
|
+
import type { LearningKnowledgeContext } from "../../long-term-memory/maturation/contracts.js";
|
|
1
3
|
import type { LongTermMemoryRecord } from "../../long-term-memory/contracts.js";
|
|
2
4
|
import type { RoleCallTransactionInput, RoleCallTransactionResult } from "./contracts.js";
|
|
3
5
|
export declare const ROLE_MEMORY_RECALL_QUERY_MAX_LENGTH = 1024;
|
|
@@ -49,3 +51,8 @@ export type RoleMemoryRecallTransactions = Readonly<{
|
|
|
49
51
|
beginMemoryRecall(input: RoleCallTransactionInput<BeginRoleMemoryRecallCommand>): Promise<RoleCallTransactionResult<"memory_recall_begun", "memory_recall_transition_invalid">>;
|
|
50
52
|
settleMemoryRecall(input: RoleCallTransactionInput<SettleRoleMemoryRecallCommand>): Promise<RoleCallTransactionResult<"memory_recall_settled", "memory_recall_transition_invalid">>;
|
|
51
53
|
}>;
|
|
54
|
+
/** Initial automatic reference; never a model recall or an activation. */
|
|
55
|
+
export type RoleInitialMemory = Readonly<{
|
|
56
|
+
message?: ChatMessage;
|
|
57
|
+
knowledge?: LearningKnowledgeContext;
|
|
58
|
+
}>;
|
|
@@ -1,3 +1,5 @@
|
|
|
1
1
|
import type { RoleCallState, RoleCallValidationIssue } from "./contracts.js";
|
|
2
2
|
export declare function validateRoleMemoryRecalls(state: RoleCallState): RoleCallValidationIssue[];
|
|
3
3
|
export declare function hasSettledMemoryRecallActivationRange(state: RoleCallState, callId: string, fromActivation: number, toActivation: number): boolean;
|
|
4
|
+
/** The existing checkpoint carries this passive startup field, never a model action. */
|
|
5
|
+
export declare function hasInitialMemoryContext(value: unknown, policyId: string): boolean;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { isAssistantToolCallMessage, isStrictTextChatMessage, isToolResultMessage, } from "../../../model-gateway/message-contract.js";
|
|
1
2
|
import { RUNTIME_ROOT_ROLE_ID } from "../roles.js";
|
|
2
3
|
import { hasMemoryRecallIdentity, isBoundedMemoryRecallQuery, normalizeRoleMemoryRecallResult, } from "./memory-recall-decoder.js";
|
|
3
4
|
import { exactKeys, isRecord } from "../../validation/strict-record.js";
|
|
@@ -119,3 +120,90 @@ function hasUnboundMemoryWait(state, pendingCount) {
|
|
|
119
120
|
return true;
|
|
120
121
|
return waitingCalls.some((call) => call.callId !== state.rootCallId);
|
|
121
122
|
}
|
|
123
|
+
/** The existing checkpoint carries this passive startup field, never a model action. */
|
|
124
|
+
export function hasInitialMemoryContext(value, policyId) {
|
|
125
|
+
if (value === undefined)
|
|
126
|
+
return true;
|
|
127
|
+
if (policyId !== "execution-agent-v1" && policyId !== "supervisor-worker-v1")
|
|
128
|
+
return false;
|
|
129
|
+
if (!isRecord(value) || !exactKeys(value, [], ["message", "knowledge"]))
|
|
130
|
+
return false;
|
|
131
|
+
if (value.message !== undefined && !isInitialMemoryMessage(value.message))
|
|
132
|
+
return false;
|
|
133
|
+
if (value.knowledge === undefined)
|
|
134
|
+
return true;
|
|
135
|
+
return isInitialMemoryKnowledge(value.knowledge);
|
|
136
|
+
}
|
|
137
|
+
function isInitialMemoryMessage(value) {
|
|
138
|
+
if (isStrictTextChatMessage(value))
|
|
139
|
+
return true;
|
|
140
|
+
if (isAssistantToolCallMessage(value))
|
|
141
|
+
return true;
|
|
142
|
+
return isToolResultMessage(value);
|
|
143
|
+
}
|
|
144
|
+
function isInitialMemoryKnowledge(value) {
|
|
145
|
+
if (!isRecord(value))
|
|
146
|
+
return false;
|
|
147
|
+
if (value.kind !== "learning_knowledge_reference_v1")
|
|
148
|
+
return false;
|
|
149
|
+
if (value.authority !== "passive_reference")
|
|
150
|
+
return false;
|
|
151
|
+
if (value.presenceEffect !== "does_not_authorize_actions_or_add_user_intent")
|
|
152
|
+
return false;
|
|
153
|
+
if (!isMemoryRevision(value.repositoryRevision))
|
|
154
|
+
return false;
|
|
155
|
+
if (!isMemoryRevision(value.knowledgeRevision))
|
|
156
|
+
return false;
|
|
157
|
+
if (!isMemoryRevision(value.omitted))
|
|
158
|
+
return false;
|
|
159
|
+
if (typeof value.referenceTime !== "string" || !Number.isFinite(Date.parse(value.referenceTime)))
|
|
160
|
+
return false;
|
|
161
|
+
if (!Array.isArray(value.entries) || value.entries.length > 12)
|
|
162
|
+
return false;
|
|
163
|
+
if (!value.entries.every(isInitialMemoryKnowledgeEntry))
|
|
164
|
+
return false;
|
|
165
|
+
const identities = value.entries.map(entry => JSON.stringify([entry.kind, entry.id]));
|
|
166
|
+
return new Set(identities).size === identities.length;
|
|
167
|
+
}
|
|
168
|
+
function isMemoryRevision(value) {
|
|
169
|
+
if (typeof value !== "number" || !Number.isSafeInteger(value))
|
|
170
|
+
return false;
|
|
171
|
+
return value >= 0;
|
|
172
|
+
}
|
|
173
|
+
function isInitialMemoryKnowledgeEntry(value) {
|
|
174
|
+
if (!isRecord(value))
|
|
175
|
+
return false;
|
|
176
|
+
if (value.kind !== "candidate" && value.kind !== "memory")
|
|
177
|
+
return false;
|
|
178
|
+
if (typeof value.id !== "string" || value.id.length === 0)
|
|
179
|
+
return false;
|
|
180
|
+
if (typeof value.version !== "string" || value.version.length === 0)
|
|
181
|
+
return false;
|
|
182
|
+
if (typeof value.content !== "string")
|
|
183
|
+
return false;
|
|
184
|
+
if (!Array.isArray(value.tags) || !value.tags.every(tag => typeof tag === "string"))
|
|
185
|
+
return false;
|
|
186
|
+
if (typeof value.mutable !== "boolean")
|
|
187
|
+
return false;
|
|
188
|
+
if (value.score !== null && !isMemoryScore(value.score))
|
|
189
|
+
return false;
|
|
190
|
+
if (value.reason !== null && typeof value.reason !== "string")
|
|
191
|
+
return false;
|
|
192
|
+
if (!["observed", "inferred", "unspecified"].includes(value.certainty))
|
|
193
|
+
return false;
|
|
194
|
+
if (!isOptionalMemoryTime(value.lastReinforcedAt))
|
|
195
|
+
return false;
|
|
196
|
+
return isOptionalMemoryTime(value.reconsiderAt);
|
|
197
|
+
}
|
|
198
|
+
function isMemoryScore(value) {
|
|
199
|
+
if (typeof value !== "number" || !Number.isFinite(value))
|
|
200
|
+
return false;
|
|
201
|
+
return value >= 0 && value <= 100;
|
|
202
|
+
}
|
|
203
|
+
function isOptionalMemoryTime(value) {
|
|
204
|
+
if (value === null)
|
|
205
|
+
return true;
|
|
206
|
+
if (typeof value !== "string")
|
|
207
|
+
return false;
|
|
208
|
+
return Number.isFinite(Date.parse(value));
|
|
209
|
+
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { type RoleCallPolicy, type RoleCallPolicyInput, type RoleCallState, type RoleCallTransitionResult, type RoleCallValidationIssue } from "./contracts.js";
|
|
2
2
|
export { hasRoleCallCapabilityAuthority } from "./candidate-validation.js";
|
|
3
|
-
export declare function createInitialRoleCallState(requestId: string): RoleCallState;
|
|
3
|
+
export declare function createInitialRoleCallState(requestId: string, initialMemory?: RoleCallState["initialMemory"]): RoleCallState;
|
|
4
4
|
export declare function applyRoleCallCommand(state: RoleCallState, commandInput: unknown, policy: RoleCallPolicy, admittedHeadRevision?: number): RoleCallTransitionResult;
|
|
5
5
|
export declare function validateRoleCallCandidate(params: {
|
|
6
6
|
state: RoleCallState;
|
|
@@ -8,7 +8,7 @@ import { issueInitialRoleCapabilitySelectionSupervisionState } from "./capabilit
|
|
|
8
8
|
import { createInitialRoleOperationSupervisionState } from "./operation-supervision.js";
|
|
9
9
|
import { reject, seal } from "./reducer-primitives.js";
|
|
10
10
|
export { hasRoleCallCapabilityAuthority } from "./candidate-validation.js";
|
|
11
|
-
export function createInitialRoleCallState(requestId) {
|
|
11
|
+
export function createInitialRoleCallState(requestId, initialMemory) {
|
|
12
12
|
const state = seal({
|
|
13
13
|
contractVersion: ROLE_CALL_LEDGER_CONTRACT_VERSION,
|
|
14
14
|
requestId,
|
|
@@ -23,6 +23,7 @@ export function createInitialRoleCallState(requestId) {
|
|
|
23
23
|
plans: [],
|
|
24
24
|
capabilityExecutions: [],
|
|
25
25
|
memoryRecalls: [],
|
|
26
|
+
...(initialMemory !== undefined ? { initialMemory } : {}),
|
|
26
27
|
operationSupervision: createInitialRoleOperationSupervisionState(),
|
|
27
28
|
capabilitySelectionSupervision: createInitialRoleCapabilitySelectionSupervisionState(),
|
|
28
29
|
rootResponse: null,
|
|
@@ -12,7 +12,7 @@ export declare const WORKER_CAPABILITY_SUMMARY_MAX_LENGTH = 512;
|
|
|
12
12
|
export declare const WORKER_CAPABILITY_COUNT_MAX = 128;
|
|
13
13
|
export declare const WORKER_CAPABILITY_CONTROL_COUNT_MAX = 16;
|
|
14
14
|
export declare const WORKER_CAPABILITY_CONTROL_ID_MAX_LENGTH = 64;
|
|
15
|
-
export { TOOL_NORMAL_INVOCATION_STRING_MAX_LENGTH as WORKER_CAPABILITY_CONTROL_STRING_MAX_LENGTH
|
|
15
|
+
export { TOOL_NORMAL_INVOCATION_STRING_MAX_LENGTH as WORKER_CAPABILITY_CONTROL_STRING_MAX_LENGTH } from "../../../capabilities/normal-invocation/contracts.js";
|
|
16
16
|
export declare const WORKER_CAPABILITY_CONTROL_ENUM_MAX_VALUES = 64;
|
|
17
17
|
export declare const WORKER_CAPABILITY_CONTROL_ENUM_VALUE_MAX_LENGTH = 256;
|
|
18
18
|
export declare const WORKER_CAPABILITY_CONTROL_ARRAY_MAX_ITEMS = 64;
|
|
@@ -165,6 +165,8 @@ export type WorkerCapabilityPreparedExecution = Readonly<{
|
|
|
165
165
|
onAdmitted?(executionId: string): void;
|
|
166
166
|
approvalRequest?: ToolApprovalRequest;
|
|
167
167
|
applyApprovalDecision?(decision: BoundApprovalDecision): void;
|
|
168
|
+
/** Project a fenced rejection with adapter-owned lifecycle and evidence; never execute. */
|
|
169
|
+
rejectBeforeExecution?(executionId: string, code: string, message: string): WorkerCapabilityAdapterResult;
|
|
168
170
|
execute(executionId: string): Promise<WorkerCapabilityAdapterResult>;
|
|
169
171
|
}>;
|
|
170
172
|
export type WorkerCapabilityAdapterPreparationInput<TContext> = Readonly<Omit<WorkerCapabilityAdapterExecutionInput<TContext>, "executionId"> & {
|
|
@@ -8,7 +8,7 @@ export const WORKER_CAPABILITY_SUMMARY_MAX_LENGTH = 512;
|
|
|
8
8
|
export const WORKER_CAPABILITY_COUNT_MAX = 128;
|
|
9
9
|
export const WORKER_CAPABILITY_CONTROL_COUNT_MAX = 16;
|
|
10
10
|
export const WORKER_CAPABILITY_CONTROL_ID_MAX_LENGTH = 64;
|
|
11
|
-
export { TOOL_NORMAL_INVOCATION_STRING_MAX_LENGTH as WORKER_CAPABILITY_CONTROL_STRING_MAX_LENGTH
|
|
11
|
+
export { TOOL_NORMAL_INVOCATION_STRING_MAX_LENGTH as WORKER_CAPABILITY_CONTROL_STRING_MAX_LENGTH } from "../../../capabilities/normal-invocation/contracts.js";
|
|
12
12
|
export const WORKER_CAPABILITY_CONTROL_ENUM_MAX_VALUES = 64;
|
|
13
13
|
export const WORKER_CAPABILITY_CONTROL_ENUM_VALUE_MAX_LENGTH = 256;
|
|
14
14
|
export const WORKER_CAPABILITY_CONTROL_ARRAY_MAX_ITEMS = 64;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { fenceRestoredApprovalExecution } from "./execution-freshness.js";
|
|
1
2
|
import { restorePreparationRejection } from "./preparation-rejection.js";
|
|
2
3
|
import { isDeepStrictEqual } from "node:util";
|
|
3
4
|
import { settleAdmittedPreparedGroup } from "./settle-prepared.js";
|
|
@@ -132,7 +133,10 @@ export async function restoreCapabilityApprovalGroup(params) {
|
|
|
132
133
|
ledger: params.ledger,
|
|
133
134
|
expectedHead: head,
|
|
134
135
|
call,
|
|
135
|
-
invocations
|
|
136
|
+
invocations: invocations.map((invocation) => ({
|
|
137
|
+
...invocation,
|
|
138
|
+
prepared: fenceRestoredApprovalExecution(invocation.prepared, params.executionFreshness),
|
|
139
|
+
})),
|
|
136
140
|
executionIds: group.entries.map((entry) => entry.executionId),
|
|
137
141
|
batch: group.batch,
|
|
138
142
|
diagnostic,
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { WorkerCapabilityExecutionFreshness, WorkerCapabilityPreparedExecution } from "../contracts.js";
|
|
2
|
+
export declare const STEERING_SUPERSEDED_BEFORE_EXTERNAL_EXECUTION: "steering_superseded_before_external_execution";
|
|
3
|
+
export declare const STEERING_SUPERSEDED_SUMMARY = "steering_superseded_before_external_execution: No external execution occurred because a newer active-request update superseded this capability invocation.";
|
|
4
|
+
/** Preserve the admitted identity and decision binding; only fence its dispatch. */
|
|
5
|
+
export declare function fenceRestoredApprovalExecution(prepared: WorkerCapabilityPreparedExecution, freshness: WorkerCapabilityExecutionFreshness | undefined): WorkerCapabilityPreparedExecution;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
export const STEERING_SUPERSEDED_BEFORE_EXTERNAL_EXECUTION = "steering_superseded_before_external_execution";
|
|
2
|
+
export const STEERING_SUPERSEDED_SUMMARY = "steering_superseded_before_external_execution: No external execution occurred because a newer active-request update superseded this capability invocation.";
|
|
3
|
+
/** Preserve the admitted identity and decision binding; only fence its dispatch. */
|
|
4
|
+
export function fenceRestoredApprovalExecution(prepared, freshness) {
|
|
5
|
+
if (!freshness)
|
|
6
|
+
return prepared;
|
|
7
|
+
return Object.freeze({
|
|
8
|
+
...prepared,
|
|
9
|
+
async execute(executionId) {
|
|
10
|
+
if (freshness.isCurrent())
|
|
11
|
+
return prepared.execute(executionId);
|
|
12
|
+
if (prepared.rejectBeforeExecution)
|
|
13
|
+
return prepared.rejectBeforeExecution(executionId, STEERING_SUPERSEDED_BEFORE_EXTERNAL_EXECUTION, STEERING_SUPERSEDED_SUMMARY);
|
|
14
|
+
return Object.freeze({
|
|
15
|
+
outcome: "failed",
|
|
16
|
+
observedEffect: "none",
|
|
17
|
+
summary: STEERING_SUPERSEDED_SUMMARY,
|
|
18
|
+
// This is request control, not evidence of a repeatable tool failure.
|
|
19
|
+
failureOutcomeFingerprint: null,
|
|
20
|
+
exactResult: Object.freeze({
|
|
21
|
+
kind: "runtime_capability_rejection_v1",
|
|
22
|
+
authority: "runtime",
|
|
23
|
+
status: "rejected",
|
|
24
|
+
stage: "before_external_execution",
|
|
25
|
+
code: STEERING_SUPERSEDED_BEFORE_EXTERNAL_EXECUTION,
|
|
26
|
+
message: STEERING_SUPERSEDED_SUMMARY,
|
|
27
|
+
}),
|
|
28
|
+
});
|
|
29
|
+
},
|
|
30
|
+
});
|
|
31
|
+
}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { isLearningApplicationExcluded, learningApplicationKey } from "./application-policy.js";
|
|
2
|
+
import { isOwnObservationApplication } from "../../shared/passive-observation-self-exclusion.js";
|
|
2
3
|
/** Derived metadata only; counts cover retained observations, never lifetime usage. */
|
|
3
4
|
export function learningApplicationCatalog(queued, history, preferences) {
|
|
4
5
|
const rows = new Map();
|
|
@@ -18,7 +19,8 @@ export function learningApplicationCatalog(queued, history, preferences) {
|
|
|
18
19
|
row.lastObservedAt = observation.timestamp;
|
|
19
20
|
rows.set(key, row);
|
|
20
21
|
}
|
|
21
|
-
const
|
|
22
|
+
const configurable = [...rows.values()].filter((row) => !isOwnObservationApplication(learningApplicationKey(row.app)));
|
|
23
|
+
const summaries = configurable.map((row) => ({ ...row,
|
|
22
24
|
collectionExcluded: isLearningApplicationExcluded(row.app, preferences.excludedApplications),
|
|
23
25
|
processingExcluded: isLearningApplicationExcluded(row.app, preferences.processingExcludedApplications),
|
|
24
26
|
}));
|
|
@@ -12,6 +12,11 @@ function shouldReconnectCollectionSource(event) {
|
|
|
12
12
|
return true;
|
|
13
13
|
return event.reason === "collector_start_failed";
|
|
14
14
|
}
|
|
15
|
+
function requiresCollectionConsent(error) {
|
|
16
|
+
if (!(error instanceof Error))
|
|
17
|
+
return false;
|
|
18
|
+
return error.message === "collection_consent_required";
|
|
19
|
+
}
|
|
15
20
|
function hasHealthyCollectionEvent(event) {
|
|
16
21
|
if (event.type === "observation")
|
|
17
22
|
return true;
|
|
@@ -66,6 +71,8 @@ export class LearningCollectionSource {
|
|
|
66
71
|
if (abort.signal.aborted)
|
|
67
72
|
return;
|
|
68
73
|
this.options.failed(error);
|
|
74
|
+
if (requiresCollectionConsent(error))
|
|
75
|
+
return;
|
|
69
76
|
this.reconnect();
|
|
70
77
|
}
|
|
71
78
|
}
|
|
@@ -16,7 +16,7 @@ import { LearningJournal } from "./journal.js";
|
|
|
16
16
|
import { ObservationQueue } from "./queue.js";
|
|
17
17
|
import { canProcessLearningObservation, isLearningApplicationExcluded } from "./application-policy.js";
|
|
18
18
|
import { commitLearningApplicationPreferences } from "./application-controls.js";
|
|
19
|
-
import { learningFailureReason, summarizeBatch, } from "./status-projection.js";
|
|
19
|
+
import { learningFailureReason, learningCollectionFailureState, summarizeBatch, } from "./status-projection.js";
|
|
20
20
|
import { DEFAULT_LEARNING_PREFERENCES, normalizeLearningPreferences, } from "./store.js";
|
|
21
21
|
export function createPassiveLearningService(options) {
|
|
22
22
|
const service = new LearningService(options);
|
|
@@ -447,8 +447,7 @@ class LearningService {
|
|
|
447
447
|
}
|
|
448
448
|
failFeature(error) {
|
|
449
449
|
this.reason = learningFailureReason(error);
|
|
450
|
-
this.state =
|
|
451
|
-
this.reason === "learning_host_unavailable" ? "unavailable" : "failed";
|
|
450
|
+
this.state = learningCollectionFailureState(this.reason);
|
|
452
451
|
this.changed();
|
|
453
452
|
}
|
|
454
453
|
failProcessing(error) {
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { PassiveCollectionState } from "../../shared/passive-observation.js";
|
|
1
2
|
import type { LongTermMemoryService } from "../long-term-memory/contracts.js";
|
|
2
3
|
import type { LearningBatch, LearningBatchSummary } from "./contracts.js";
|
|
3
4
|
export declare function summarizeBatch({ observations, reviewProgress: _reviewProgress, ...summary }: LearningBatch): LearningBatchSummary;
|
|
@@ -7,4 +8,5 @@ export declare function recentLearningMemories(memory: LongTermMemoryService, hi
|
|
|
7
8
|
content: string;
|
|
8
9
|
createdAt: string;
|
|
9
10
|
}>[]>;
|
|
11
|
+
export declare function learningCollectionFailureState(reason: string): PassiveCollectionState;
|
|
10
12
|
export declare function learningFailureReason(error: unknown): string;
|
|
@@ -36,6 +36,13 @@ export async function recentLearningMemories(memory, history) {
|
|
|
36
36
|
return [];
|
|
37
37
|
}
|
|
38
38
|
}
|
|
39
|
+
export function learningCollectionFailureState(reason) {
|
|
40
|
+
if (reason === "collection_consent_required")
|
|
41
|
+
return "permission_required";
|
|
42
|
+
if (reason === "learning_host_unavailable")
|
|
43
|
+
return "unavailable";
|
|
44
|
+
return "failed";
|
|
45
|
+
}
|
|
39
46
|
export function learningFailureReason(error) {
|
|
40
47
|
if (!(error instanceof Error))
|
|
41
48
|
return "learning_failed";
|
|
@@ -48,6 +55,8 @@ export function learningFailureReason(error) {
|
|
|
48
55
|
"learning_model_profile_overridden",
|
|
49
56
|
"learning_memory_unavailable",
|
|
50
57
|
"learning_host_unavailable",
|
|
58
|
+
"collection_consent_required",
|
|
59
|
+
"native_observation_identity_invalid",
|
|
51
60
|
"learning_storage_unavailable",
|
|
52
61
|
"learning_batch_timeout",
|
|
53
62
|
"learning_disabled",
|
|
@@ -10,6 +10,7 @@ export declare function preparePluginPackage(rootDir: string, source: PluginInst
|
|
|
10
10
|
description?: string;
|
|
11
11
|
extensions: Readonly<{
|
|
12
12
|
[ABOT_RUNTIME_EXTENSION]: import("../../../plugin-contract/manifest.js").AbotRuntimePluginExtension;
|
|
13
|
+
["ai.abot.compatibility"]?: import("../../../plugin-contract/platform-compatibility.js").PluginPlatformDeclaration;
|
|
13
14
|
[namespace: string]: unknown;
|
|
14
15
|
}>;
|
|
15
16
|
}>;
|
|
@@ -23,6 +24,13 @@ export declare function preparePluginPackage(rootDir: string, source: PluginInst
|
|
|
23
24
|
};
|
|
24
25
|
digest: string;
|
|
25
26
|
id: string;
|
|
27
|
+
compatibility: Readonly<{
|
|
28
|
+
supported: boolean;
|
|
29
|
+
status: "declared" | "legacy" | "unsupported" | "undeclared";
|
|
30
|
+
runtimePlatform: NodeJS.Platform;
|
|
31
|
+
runtimePlatforms?: readonly import("../../../plugin-contract/platform-compatibility.js").PluginRuntimePlatform[];
|
|
32
|
+
reason?: string;
|
|
33
|
+
}>;
|
|
26
34
|
version: string;
|
|
27
35
|
description: string;
|
|
28
36
|
capabilities: {
|
|
@@ -2,6 +2,7 @@ import { mkdtemp, readFile, readdir, rm } from "node:fs/promises";
|
|
|
2
2
|
import { join } from "node:path";
|
|
3
3
|
import { PluginInstallError, } from "../../../plugin-contract/install-source.js";
|
|
4
4
|
import { ABOT_RUNTIME_EXTENSION } from "../../../plugin-contract/manifest.js";
|
|
5
|
+
import { resolvePluginPlatformCompatibility } from "../platform-compatibility.js";
|
|
5
6
|
import { parseAgentPluginManifest } from "../manifest-validator.js";
|
|
6
7
|
import { projectManifestRuntimeContract } from "../manifest-projection.js";
|
|
7
8
|
import { discoverConfiguredRuntimePluginManifests } from "../configured-manifests.js";
|
|
@@ -42,6 +43,7 @@ export async function preparePluginPackage(rootDir, source, download = downloadG
|
|
|
42
43
|
source: downloaded.source,
|
|
43
44
|
digest,
|
|
44
45
|
id: manifest.name,
|
|
46
|
+
compatibility: resolvePluginPlatformCompatibility(manifest),
|
|
45
47
|
version: manifest.version ?? "",
|
|
46
48
|
description: manifest.description ?? "",
|
|
47
49
|
capabilities: capabilities.map((id) => ({
|
|
@@ -10,6 +10,13 @@ export declare function inspectPluginPackage(rootDir: string, input: unknown, do
|
|
|
10
10
|
};
|
|
11
11
|
digest: string;
|
|
12
12
|
id: string;
|
|
13
|
+
compatibility: Readonly<{
|
|
14
|
+
supported: boolean;
|
|
15
|
+
status: "declared" | "legacy" | "unsupported" | "undeclared";
|
|
16
|
+
runtimePlatform: NodeJS.Platform;
|
|
17
|
+
runtimePlatforms?: readonly import("../../../plugin-contract/platform-compatibility.js").PluginRuntimePlatform[];
|
|
18
|
+
reason?: string;
|
|
19
|
+
}>;
|
|
13
20
|
version: string;
|
|
14
21
|
description: string;
|
|
15
22
|
capabilities: {
|
|
@@ -11,6 +11,7 @@ import { discoverAgentPluginManifests } from "./manifest-discovery.js";
|
|
|
11
11
|
import { resolveBundledRuntimeRoot } from "./bundled-root.js";
|
|
12
12
|
import { projectManifestRuntimeContract } from "./manifest-projection.js";
|
|
13
13
|
import { discoverConfiguredRuntimePluginManifests } from "./configured-manifests.js";
|
|
14
|
+
import { resolvePluginPlatformCompatibility } from "./platform-compatibility.js";
|
|
14
15
|
import { isPluginCatalogDisabled, isPluginToolSelected, normalizePluginSelection, pluginSelectionCacheKey, } from "./selection.js";
|
|
15
16
|
const require = createRequire(import.meta.url);
|
|
16
17
|
const compiledCatalogCache = new WeakMap();
|
|
@@ -110,20 +111,15 @@ export function loadConfiguredRuntimePlugins(config) {
|
|
|
110
111
|
if (cached) {
|
|
111
112
|
return cached;
|
|
112
113
|
}
|
|
113
|
-
const
|
|
114
|
-
rootDir: config.paths.rootDir,
|
|
115
|
-
pluginConfiguration: readPluginConfigurationStore(config.paths.rootDir)
|
|
116
|
-
.plugins,
|
|
117
|
-
runtimeId: config.runtimeId,
|
|
118
|
-
agentBridgeUrl: config.agentBridgeUrl,
|
|
119
|
-
runtimePaths: config.paths,
|
|
120
|
-
};
|
|
121
|
-
const manifestPlugins = discoverConfiguredRuntimePluginManifests(config.paths.rootDir, {
|
|
114
|
+
const discoveredPlugins = discoverConfiguredRuntimePluginManifests(config.paths.rootDir, {
|
|
122
115
|
excludedPluginIds: new Set([
|
|
123
116
|
...selection.deny,
|
|
124
117
|
...selection.disabledPluginIds,
|
|
125
118
|
]),
|
|
126
|
-
})
|
|
119
|
+
});
|
|
120
|
+
const compatiblePlugins = discoveredPlugins.filter((plugin) => resolvePluginPlatformCompatibility(plugin.manifest).supported);
|
|
121
|
+
const allPluginsIncompatible = discoveredPlugins.length > 0 && compatiblePlugins.length === 0;
|
|
122
|
+
const selectedPlugins = compatiblePlugins
|
|
127
123
|
.map((plugin) => ({
|
|
128
124
|
plugin,
|
|
129
125
|
selectedCapabilityIds: Object.keys(plugin.manifest.extensions[ABOT_RUNTIME_EXTENSION].capabilities).filter((capabilityId) => isPluginToolSelected({
|
|
@@ -132,8 +128,17 @@ export function loadConfiguredRuntimePlugins(config) {
|
|
|
132
128
|
selection,
|
|
133
129
|
})),
|
|
134
130
|
}))
|
|
135
|
-
.filter(({ selectedCapabilityIds }) => selectedCapabilityIds.length > 0)
|
|
136
|
-
|
|
131
|
+
.filter(({ selectedCapabilityIds }) => selectedCapabilityIds.length > 0);
|
|
132
|
+
const host = {
|
|
133
|
+
rootDir: config.paths.rootDir,
|
|
134
|
+
pluginConfiguration: allPluginsIncompatible
|
|
135
|
+
? {}
|
|
136
|
+
: readPluginConfigurationStore(config.paths.rootDir).plugins,
|
|
137
|
+
runtimeId: config.runtimeId,
|
|
138
|
+
agentBridgeUrl: config.agentBridgeUrl,
|
|
139
|
+
runtimePaths: config.paths,
|
|
140
|
+
};
|
|
141
|
+
const manifestPlugins = selectedPlugins.map(({ plugin, selectedCapabilityIds }) => loadManifestRuntimePlugin(host, plugin, selectedCapabilityIds));
|
|
137
142
|
const pluginIds = new Set();
|
|
138
143
|
for (const plugin of manifestPlugins) {
|
|
139
144
|
if (pluginIds.has(plugin.id)) {
|
|
@@ -175,14 +180,19 @@ export function loadBundledRuntimePlugins() {
|
|
|
175
180
|
if (cached) {
|
|
176
181
|
return cached;
|
|
177
182
|
}
|
|
183
|
+
const discoveredPlugins = discoverAgentPluginManifests(packageRoot);
|
|
184
|
+
const selectedPlugins = discoveredPlugins.filter((plugin) => resolvePluginPlatformCompatibility(plugin.manifest).supported);
|
|
185
|
+
const allPluginsIncompatible = discoveredPlugins.length > 0 && selectedPlugins.length === 0;
|
|
178
186
|
const host = {
|
|
179
187
|
rootDir,
|
|
180
|
-
pluginConfiguration:
|
|
188
|
+
pluginConfiguration: allPluginsIncompatible
|
|
189
|
+
? {}
|
|
190
|
+
: readPluginConfigurationStore(rootDir).plugins,
|
|
181
191
|
runtimeId: "default",
|
|
182
192
|
agentBridgeUrl: "",
|
|
183
193
|
runtimePaths: createUnconfiguredRuntimePaths(rootDir),
|
|
184
194
|
};
|
|
185
|
-
const catalog = Object.freeze(
|
|
195
|
+
const catalog = Object.freeze(selectedPlugins.map((plugin) => freezeRuntimePlugin(loadManifestRuntimePlugin(host, plugin, Object.keys(plugin.manifest.extensions[ABOT_RUNTIME_EXTENSION].capabilities)))));
|
|
186
196
|
bundledCatalogCache.set(cacheKey, catalog);
|
|
187
197
|
return catalog;
|
|
188
198
|
}
|