@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,39 @@
|
|
|
1
|
+
import { ABOT_PLUGIN_COMPATIBILITY_EXTENSION, ABOT_PLUGIN_COMPATIBILITY_VERSION, PLUGIN_RUNTIME_PLATFORMS, } from "../../plugin-contract/platform-compatibility.js";
|
|
2
|
+
import { isRecord } from "../config/utils.js";
|
|
3
|
+
function hasUnknownCompatibilityField(value) {
|
|
4
|
+
return Object.keys(value).some((key) => key !== "version" && key !== "runtimePlatforms");
|
|
5
|
+
}
|
|
6
|
+
function isRuntimePlatformList(value) {
|
|
7
|
+
if (!Array.isArray(value))
|
|
8
|
+
return false;
|
|
9
|
+
if (value.length === 0)
|
|
10
|
+
return false;
|
|
11
|
+
return value.length <= PLUGIN_RUNTIME_PLATFORMS.length;
|
|
12
|
+
}
|
|
13
|
+
function isPluginRuntimePlatform(value) {
|
|
14
|
+
return PLUGIN_RUNTIME_PLATFORMS.some((platform) => platform === value);
|
|
15
|
+
}
|
|
16
|
+
function hasRepeatedRuntimePlatform(platforms) {
|
|
17
|
+
return new Set(platforms).size !== platforms.length;
|
|
18
|
+
}
|
|
19
|
+
export function parsePluginPlatformDeclaration(value) {
|
|
20
|
+
if (value === undefined)
|
|
21
|
+
return undefined;
|
|
22
|
+
const path = `extensions.${ABOT_PLUGIN_COMPATIBILITY_EXTENSION}`;
|
|
23
|
+
if (!isRecord(value))
|
|
24
|
+
throw new Error(`${path} must be an object`);
|
|
25
|
+
if (hasUnknownCompatibilityField(value))
|
|
26
|
+
throw new Error(`${path} contains an unknown field`);
|
|
27
|
+
if (value.version !== ABOT_PLUGIN_COMPATIBILITY_VERSION)
|
|
28
|
+
throw new Error(`${path}.version must be ${ABOT_PLUGIN_COMPATIBILITY_VERSION}`);
|
|
29
|
+
if (!isRuntimePlatformList(value.runtimePlatforms))
|
|
30
|
+
throw new Error(`${path}.runtimePlatforms must contain one to three platforms`);
|
|
31
|
+
if (!value.runtimePlatforms.every(isPluginRuntimePlatform))
|
|
32
|
+
throw new Error(`${path}.runtimePlatforms must use linux, darwin, or win32`);
|
|
33
|
+
if (hasRepeatedRuntimePlatform(value.runtimePlatforms))
|
|
34
|
+
throw new Error(`${path}.runtimePlatforms must not contain duplicates`);
|
|
35
|
+
return Object.freeze({
|
|
36
|
+
version: ABOT_PLUGIN_COMPATIBILITY_VERSION,
|
|
37
|
+
runtimePlatforms: Object.freeze([...value.runtimePlatforms]),
|
|
38
|
+
});
|
|
39
|
+
}
|
|
@@ -41,6 +41,9 @@ export function projectManifestRuntimeContract(discovered, selectedCapabilityIds
|
|
|
41
41
|
definition: {
|
|
42
42
|
name: capabilityId,
|
|
43
43
|
pluginName: manifest.name,
|
|
44
|
+
...(manifest.description !== undefined
|
|
45
|
+
? { pluginDescription: manifest.description }
|
|
46
|
+
: {}),
|
|
44
47
|
...(capability.requiredPermissionMode
|
|
45
48
|
? { requiredPermissionMode: capability.requiredPermissionMode }
|
|
46
49
|
: {}),
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { parseOptionalToolOutputChannels } from "../../capabilities/normal-invocation/output-channels.js";
|
|
2
2
|
import { parseRequiredToolPermissionMode } from "../../capabilities/tool-permission-mode.js";
|
|
3
|
+
import { ABOT_PLUGIN_COMPATIBILITY_EXTENSION } from "../../plugin-contract/platform-compatibility.js";
|
|
4
|
+
import { parsePluginPlatformDeclaration } from "./manifest-platform-compatibility.js";
|
|
3
5
|
import { isToolCatalogGroupId } from "../../capabilities/tool-types.js";
|
|
4
6
|
import { parseEventResultMetadata } from "../../capabilities/tool-definition-validator/event-result-metadata.js";
|
|
5
7
|
import { parseEventInputTextOptions } from "../../capabilities/tool-definition-validator/event-input-text-options.js";
|
|
@@ -321,7 +323,9 @@ function parseOperation(value, path) {
|
|
|
321
323
|
? { payload: payload }
|
|
322
324
|
: {}),
|
|
323
325
|
...(attachmentInput
|
|
324
|
-
? {
|
|
326
|
+
? {
|
|
327
|
+
attachmentInput: attachmentInput,
|
|
328
|
+
}
|
|
325
329
|
: {}),
|
|
326
330
|
},
|
|
327
331
|
...(legacySkills ? { legacySkills } : {}),
|
|
@@ -481,6 +485,7 @@ export function parseAgentPluginManifest(raw, folderName) {
|
|
|
481
485
|
}
|
|
482
486
|
const extensions = expectRecord(manifest.extensions, "plugin.json.extensions");
|
|
483
487
|
const runtimeExtension = parseRuntimeExtension(extensions[ABOT_RUNTIME_EXTENSION]);
|
|
488
|
+
const compatibility = parsePluginPlatformDeclaration(extensions[ABOT_PLUGIN_COMPATIBILITY_EXTENSION]);
|
|
484
489
|
return {
|
|
485
490
|
$schema: AGENT_PLUGIN_MANIFEST_SCHEMA,
|
|
486
491
|
name: manifest.name,
|
|
@@ -493,6 +498,9 @@ export function parseAgentPluginManifest(raw, folderName) {
|
|
|
493
498
|
extensions: {
|
|
494
499
|
...extensions,
|
|
495
500
|
[ABOT_RUNTIME_EXTENSION]: runtimeExtension,
|
|
501
|
+
...(compatibility
|
|
502
|
+
? { [ABOT_PLUGIN_COMPATIBILITY_EXTENSION]: compatibility }
|
|
503
|
+
: {}),
|
|
496
504
|
},
|
|
497
505
|
};
|
|
498
506
|
}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { AgentPluginManifest } from "../../plugin-contract/manifest.js";
|
|
2
|
+
import { type PluginPlatformCompatibility } from "../../plugin-contract/platform-compatibility.js";
|
|
3
|
+
/** Compatibility affects loading, never the user's saved plugin selection. */
|
|
4
|
+
export declare function resolvePluginPlatformCompatibility(manifest: AgentPluginManifest, runtimePlatform?: NodeJS.Platform): PluginPlatformCompatibility;
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { ABOT_PLUGIN_COMPATIBILITY_EXTENSION, } from "../../plugin-contract/platform-compatibility.js";
|
|
2
|
+
function runtimePlatformName(platform) {
|
|
3
|
+
if (platform === "win32")
|
|
4
|
+
return "Windows";
|
|
5
|
+
if (platform === "darwin")
|
|
6
|
+
return "macOS";
|
|
7
|
+
if (platform === "linux")
|
|
8
|
+
return "Linux";
|
|
9
|
+
return platform;
|
|
10
|
+
}
|
|
11
|
+
function supportsDeclaredRuntimePlatform(declaration, runtimePlatform) {
|
|
12
|
+
return declaration.runtimePlatforms.some((platform) => platform === runtimePlatform);
|
|
13
|
+
}
|
|
14
|
+
function undeclaredPlatformCompatibility(runtimePlatform) {
|
|
15
|
+
if (runtimePlatform === "win32")
|
|
16
|
+
return {
|
|
17
|
+
supported: false,
|
|
18
|
+
status: "undeclared",
|
|
19
|
+
runtimePlatform,
|
|
20
|
+
reason: "This plugin does not declare support for Windows Runtime.",
|
|
21
|
+
};
|
|
22
|
+
return { supported: true, status: "legacy", runtimePlatform };
|
|
23
|
+
}
|
|
24
|
+
/** Compatibility affects loading, never the user's saved plugin selection. */
|
|
25
|
+
export function resolvePluginPlatformCompatibility(manifest, runtimePlatform = process.platform) {
|
|
26
|
+
const declaration = manifest.extensions[ABOT_PLUGIN_COMPATIBILITY_EXTENSION];
|
|
27
|
+
if (!declaration)
|
|
28
|
+
return undeclaredPlatformCompatibility(runtimePlatform);
|
|
29
|
+
const runtimePlatforms = declaration.runtimePlatforms;
|
|
30
|
+
if (supportsDeclaredRuntimePlatform(declaration, runtimePlatform))
|
|
31
|
+
return {
|
|
32
|
+
supported: true,
|
|
33
|
+
status: "declared",
|
|
34
|
+
runtimePlatform,
|
|
35
|
+
runtimePlatforms,
|
|
36
|
+
};
|
|
37
|
+
return {
|
|
38
|
+
supported: false,
|
|
39
|
+
status: "unsupported",
|
|
40
|
+
runtimePlatform,
|
|
41
|
+
runtimePlatforms,
|
|
42
|
+
reason: `This plugin supports Runtime on ${runtimePlatforms.map(runtimePlatformName).join(", ")}; this Runtime is running on ${runtimePlatformName(runtimePlatform)}.`,
|
|
43
|
+
};
|
|
44
|
+
}
|
|
@@ -45,13 +45,22 @@ export class RequestActivationEvents {
|
|
|
45
45
|
}
|
|
46
46
|
async commit(operation) {
|
|
47
47
|
await this.events.drain();
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
this.
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
48
|
+
// Draining is an observation, not a queue reservation: steering can emit
|
|
49
|
+
// another event before this continuation runs. Claim this same queue before
|
|
50
|
+
// reading the revision so no event can race the lifecycle commit.
|
|
51
|
+
const committed = this.tail.then(async () => {
|
|
52
|
+
if (this.persistenceError)
|
|
53
|
+
throw this.persistenceError;
|
|
54
|
+
const result = await operation(this.expectation());
|
|
55
|
+
if (!result.accepted)
|
|
56
|
+
throw new Error(`request_lifecycle_rejected:${result.reason}`);
|
|
57
|
+
this.current = result.current;
|
|
58
|
+
this.sealed = result.current.status !== "streaming";
|
|
59
|
+
this.publishCommitted(result.events);
|
|
60
|
+
return result;
|
|
61
|
+
});
|
|
62
|
+
this.tail = committed.then(() => undefined, () => undefined);
|
|
63
|
+
return committed;
|
|
55
64
|
}
|
|
56
65
|
/** A failed event write cannot turn a committed wait into an execution failure. */
|
|
57
66
|
async finalizeFailure(input) {
|
|
@@ -115,6 +124,9 @@ export class RequestActivationEvents {
|
|
|
115
124
|
return;
|
|
116
125
|
this.tail = this.tail
|
|
117
126
|
.then(async () => {
|
|
127
|
+
const hasStreamingActivation = this.current.status === "streaming";
|
|
128
|
+
if (!hasStreamingActivation)
|
|
129
|
+
return;
|
|
118
130
|
if (this.persistenceError)
|
|
119
131
|
return;
|
|
120
132
|
const result = await this.store.appendActivationEvent(this.current.sessionId, {
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { RequestContextCompactionSnapshot } from "../../context/semantic-compaction/snapshot.js";
|
|
2
|
+
import type { SemanticCompactionSource } from "../../context/semantic-compaction/contracts.js";
|
|
3
|
+
import type { RoleCallLedgerCheckpoint } from "../../orchestration/role-calls/checkpoint.js";
|
|
4
|
+
import type { CompiledRequestExecutionPolicy } from "../execution-scope.js";
|
|
5
|
+
/** Invalidate only proven legacy EA projections; the ledger retains the original evidence. */
|
|
6
|
+
export declare function restoreExecutionApprovalCompaction(params: {
|
|
7
|
+
snapshot: RequestContextCompactionSnapshot;
|
|
8
|
+
ledgerCheckpoint: RoleCallLedgerCheckpoint;
|
|
9
|
+
requestId: string;
|
|
10
|
+
executionPolicy: CompiledRequestExecutionPolicy;
|
|
11
|
+
}): Readonly<{
|
|
12
|
+
snapshot?(): RequestContextCompactionSnapshot;
|
|
13
|
+
get(scopeId: string): import("../../context/semantic-compaction/contracts.js").SemanticCompactionCheckpoint | undefined;
|
|
14
|
+
findByCallIds(callIds: readonly string[]): readonly import("../../context/semantic-compaction/contracts.js").SemanticCompactionCheckpoint[];
|
|
15
|
+
registerSources(sources: readonly SemanticCompactionSource[]): void;
|
|
16
|
+
registerSourcesAtomically?(sources: readonly SemanticCompactionSource[]): void;
|
|
17
|
+
quarantineScope?(record: import("../../context/semantic-compaction/scope-quarantine.js").InvalidatedCompactionScope): void;
|
|
18
|
+
materializeSource(sourceRef: string, sourceFingerprint: string): SemanticCompactionSource | undefined;
|
|
19
|
+
commit(checkpoint: import("../../context/semantic-compaction/contracts.js").SemanticCompactionCheckpoint): void;
|
|
20
|
+
}>;
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
import { restoreRequestContextCompaction } from "../../context/semantic-compaction/snapshot.js";
|
|
2
|
+
import { createRoleCallLedger, } from "../../orchestration/role-calls/index.js";
|
|
3
|
+
import { traceDebug } from "../../observability/debug-logger.js";
|
|
4
|
+
import { createRequestRoleCallPolicy } from "../role-call-policy.js";
|
|
5
|
+
import { buildExecutionCapabilityResultMessage, EXECUTION_CAPABILITY_RESULT_MESSAGE_KIND, EXECUTION_CAPABILITY_TOOL_NAME, } from "../../steps/execution-agent/capability-result-context.js";
|
|
6
|
+
/** Invalidate only proven legacy EA projections; the ledger retains the original evidence. */
|
|
7
|
+
export function restoreExecutionApprovalCompaction(params) {
|
|
8
|
+
// Validate original hashes and complete checkpoint coverage before filtering anything.
|
|
9
|
+
const restored = restoreRequestContextCompaction(params.snapshot);
|
|
10
|
+
if (!usesExecutionAgentNativeResults(params.executionPolicy))
|
|
11
|
+
return restored;
|
|
12
|
+
if (!params.snapshot.sources.some(isNativeResultCompatibilityCandidate))
|
|
13
|
+
return restored;
|
|
14
|
+
const ledger = createRoleCallLedger({
|
|
15
|
+
requestId: params.requestId,
|
|
16
|
+
policy: createRequestRoleCallPolicy(params.executionPolicy),
|
|
17
|
+
checkpoint: params.ledgerCheckpoint,
|
|
18
|
+
});
|
|
19
|
+
const head = ledger.current();
|
|
20
|
+
const executions = new Map(head.state.capabilityExecutions
|
|
21
|
+
.filter((execution) => execution.callId === head.state.rootCallId)
|
|
22
|
+
.map((execution) => [`tool-result:${execution.executionId}`, execution]));
|
|
23
|
+
const legacySourceRefs = new Set();
|
|
24
|
+
for (const source of params.snapshot.sources) {
|
|
25
|
+
const execution = executions.get(source.sourceRef);
|
|
26
|
+
if (!isExecutionResultSource(source, execution))
|
|
27
|
+
continue;
|
|
28
|
+
if (!isSettledRootExecution(execution, head.state.rootCallId))
|
|
29
|
+
throw new Error("context_compaction_snapshot_source_incompatible");
|
|
30
|
+
const current = buildExecutionCapabilityResultMessage(head, execution);
|
|
31
|
+
const matchesCurrentProjection = source.content === JSON.stringify(current);
|
|
32
|
+
if (matchesCurrentProjection)
|
|
33
|
+
continue;
|
|
34
|
+
const matchesLegacyProjection = source.content === serializeLegacyExecutionResult(execution);
|
|
35
|
+
if (!matchesLegacyProjection)
|
|
36
|
+
throw new Error("context_compaction_snapshot_source_incompatible");
|
|
37
|
+
legacySourceRefs.add(source.sourceRef);
|
|
38
|
+
}
|
|
39
|
+
if (legacySourceRefs.size === 0)
|
|
40
|
+
return restored;
|
|
41
|
+
const invalidatedCheckpoints = params.snapshot.checkpoints.filter((checkpoint) => checkpoint.sourceDigests.some((source) => legacySourceRefs.has(source.sourceRef)));
|
|
42
|
+
const ownsInvalidatedCheckpoints = invalidatedCheckpoints.every((checkpoint) => checkpoint.requestId === params.requestId);
|
|
43
|
+
if (!ownsInvalidatedCheckpoints)
|
|
44
|
+
throw new Error("context_compaction_snapshot_source_incompatible");
|
|
45
|
+
const compatible = {
|
|
46
|
+
...params.snapshot,
|
|
47
|
+
sources: params.snapshot.sources.filter((source) => !legacySourceRefs.has(source.sourceRef)),
|
|
48
|
+
checkpoints: params.snapshot.checkpoints.filter((checkpoint) => !invalidatedCheckpoints.includes(checkpoint)),
|
|
49
|
+
};
|
|
50
|
+
const store = restoreRequestContextCompaction(compatible);
|
|
51
|
+
traceDebug("runtime.approvals", "compaction.legacy_execution_sources_invalidated", {
|
|
52
|
+
requestId: params.requestId,
|
|
53
|
+
sourceCount: legacySourceRefs.size,
|
|
54
|
+
checkpointCount: invalidatedCheckpoints.length,
|
|
55
|
+
scopeIds: invalidatedCheckpoints
|
|
56
|
+
.slice(0, 8)
|
|
57
|
+
.map(({ scopeId }) => scopeId),
|
|
58
|
+
omittedScopeCount: Math.max(0, invalidatedCheckpoints.length - 8),
|
|
59
|
+
});
|
|
60
|
+
return store;
|
|
61
|
+
}
|
|
62
|
+
function usesExecutionAgentNativeResults(policy) {
|
|
63
|
+
if (policy.authority.id !== "execution-agent-v1")
|
|
64
|
+
return false;
|
|
65
|
+
return policy.authority.rootContractId === "execution_agent";
|
|
66
|
+
}
|
|
67
|
+
function isSettledRootExecution(execution, rootCallId) {
|
|
68
|
+
if (!execution)
|
|
69
|
+
return false;
|
|
70
|
+
if (execution.callId !== rootCallId)
|
|
71
|
+
return false;
|
|
72
|
+
return execution.status === "settled";
|
|
73
|
+
}
|
|
74
|
+
function isNativeResultCompatibilityCandidate(source) {
|
|
75
|
+
if (source.sourceRef.startsWith("tool-result:"))
|
|
76
|
+
return true;
|
|
77
|
+
return hasExecutionResultEnvelope(source);
|
|
78
|
+
}
|
|
79
|
+
function isExecutionResultSource(source, execution) {
|
|
80
|
+
if (execution)
|
|
81
|
+
return true;
|
|
82
|
+
return hasExecutionResultEnvelope(source);
|
|
83
|
+
}
|
|
84
|
+
function hasExecutionResultEnvelope(source) {
|
|
85
|
+
try {
|
|
86
|
+
const message = JSON.parse(source.content);
|
|
87
|
+
if (message?.role !== "tool")
|
|
88
|
+
return false;
|
|
89
|
+
if (message.toolName !== EXECUTION_CAPABILITY_TOOL_NAME)
|
|
90
|
+
return false;
|
|
91
|
+
if (typeof message.content !== "string")
|
|
92
|
+
return false;
|
|
93
|
+
const envelope = JSON.parse(message.content);
|
|
94
|
+
return envelope?.kind === EXECUTION_CAPABILITY_RESULT_MESSAGE_KIND;
|
|
95
|
+
}
|
|
96
|
+
catch {
|
|
97
|
+
return false;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
/** Exact pre-canonical-outcome wire bytes, recognized only against the same ledger execution. */
|
|
101
|
+
function serializeLegacyExecutionResult(execution) {
|
|
102
|
+
return JSON.stringify({
|
|
103
|
+
role: "tool",
|
|
104
|
+
content: JSON.stringify({
|
|
105
|
+
kind: EXECUTION_CAPABILITY_RESULT_MESSAGE_KIND,
|
|
106
|
+
authority: "capability_adapter_result",
|
|
107
|
+
presenceEffect: "runtime_result_only_not_user_intent",
|
|
108
|
+
invocationAttempt: execution.invocationAttempt,
|
|
109
|
+
result: {
|
|
110
|
+
executionId: execution.executionId,
|
|
111
|
+
capabilityId: execution.capabilityId,
|
|
112
|
+
adapterResult: execution.exactResult,
|
|
113
|
+
},
|
|
114
|
+
}),
|
|
115
|
+
toolCallId: execution.executionId,
|
|
116
|
+
toolName: EXECUTION_CAPABILITY_TOOL_NAME,
|
|
117
|
+
});
|
|
118
|
+
}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { restoreExecutionApprovalCompaction } from "./execution-compaction-restore.js";
|
|
1
2
|
import { createRoleCallLedger } from "../../orchestration/role-calls/index.js";
|
|
2
3
|
import { hasSuperContextContract } from "../../context/super-context-policy.js";
|
|
3
4
|
import { createOwnedSuperContextFailure } from "../../context/super-context-failure.js";
|
|
@@ -8,7 +9,7 @@ import { createRequestRoleCallPolicy } from "../role-call-policy.js";
|
|
|
8
9
|
export function restoreApprovalCompaction(params) {
|
|
9
10
|
const { snapshot, executionPolicy } = params;
|
|
10
11
|
if (!hasSuperContextContract(executionPolicy.authority, "supervisor"))
|
|
11
|
-
return
|
|
12
|
+
return restoreExecutionApprovalCompaction(params);
|
|
12
13
|
const ledger = createRoleCallLedger({
|
|
13
14
|
requestId: params.requestId,
|
|
14
15
|
policy: createRequestRoleCallPolicy(executionPolicy),
|
|
@@ -22,7 +22,12 @@ export function restoreApprovalExecutionFreshness(token, requestSteering) {
|
|
|
22
22
|
});
|
|
23
23
|
if (!isDeepStrictEqual(current.token, token))
|
|
24
24
|
throw new Error("request_approval_steering_mismatch");
|
|
25
|
-
|
|
25
|
+
// A newer accepted prefix invalidates execution, not the saved approval.
|
|
26
|
+
// A closed inbox has no current version and must remain terminal.
|
|
27
|
+
if (!hasLiveSteeringInbox(inbox))
|
|
26
28
|
throw new Error("request_approval_steering_superseded");
|
|
27
29
|
return Object.freeze({ token, isCurrent: current.isCurrent });
|
|
28
30
|
}
|
|
31
|
+
function hasLiveSteeringInbox(inbox) {
|
|
32
|
+
return inbox.isCurrent(inbox.snapshot().version);
|
|
33
|
+
}
|
|
@@ -37,6 +37,8 @@ export const EXECUTION_AGENT_ROOT_CONTRACT = Object.freeze({
|
|
|
37
37
|
});
|
|
38
38
|
},
|
|
39
39
|
async authorResponse(request, options) {
|
|
40
|
+
if (options.directResponse !== undefined)
|
|
41
|
+
return options.directResponse;
|
|
40
42
|
const requestSteering = resolveRequestSteeringInbox(request.requestSteering);
|
|
41
43
|
return runExecutionAgentAuthoredResponse(request, {
|
|
42
44
|
head: options.head,
|
|
@@ -115,7 +117,15 @@ function projectKernelDecision(decision, steeringVersion) {
|
|
|
115
117
|
...presentation,
|
|
116
118
|
});
|
|
117
119
|
case "respond":
|
|
118
|
-
return Object.freeze({
|
|
120
|
+
return Object.freeze({
|
|
121
|
+
action: "respond", ...presentation,
|
|
122
|
+
...(decision.response !== undefined ? {
|
|
123
|
+
directResponse: Object.freeze({
|
|
124
|
+
finalResponse: decision.response,
|
|
125
|
+
memoryCandidates: decision.memoryCandidates ?? Object.freeze([]),
|
|
126
|
+
}),
|
|
127
|
+
} : {}),
|
|
128
|
+
});
|
|
119
129
|
case "blocked":
|
|
120
130
|
return Object.freeze({
|
|
121
131
|
action: "blocked",
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { bindRequestWorkingDirectory } from "../capabilities/request-working-directory.js";
|
|
2
|
+
import { createRuntimeToolPathResolver } from "../capabilities/runtime-target-path.js";
|
|
1
3
|
import { isSparkSession } from "../../sessions/spark-session.js";
|
|
2
4
|
import { createSuperFailureFinalization, } from "./super-failure-explanation.js";
|
|
3
5
|
import { resolveSessionWorkingDirectory } from "../projects/session-paths.js";
|
|
@@ -200,6 +202,7 @@ export async function prepareRequestExecution(params) {
|
|
|
200
202
|
: preparedSeed;
|
|
201
203
|
const toolRegistry = options.toolRegistry?.prepareRequest
|
|
202
204
|
? await options.toolRegistry.prepareRequest({
|
|
205
|
+
runtimePathResolver: createRuntimeToolPathResolver(bindRequestWorkingDirectory(options.toolRegistry.prepareSharedState?.() ?? {}, requestWorkingDirectory).runtimePaths),
|
|
203
206
|
requestState: resources.state,
|
|
204
207
|
onRequestDispose: resources.onRequestDispose,
|
|
205
208
|
})
|
|
@@ -19,6 +19,7 @@ export type RootContractCallIdentity = Readonly<{
|
|
|
19
19
|
type RootContractAction = MemoryRecallDecision | Readonly<{
|
|
20
20
|
action: "respond";
|
|
21
21
|
responseRecommendation?: string;
|
|
22
|
+
directResponse?: RootAuthoredResponse;
|
|
22
23
|
acknowledgement?: string;
|
|
23
24
|
title?: string;
|
|
24
25
|
}> | Readonly<{
|
|
@@ -99,6 +100,7 @@ export type RootContractAdapter<TRequest> = Readonly<{
|
|
|
99
100
|
callFrame: RoleCallFrame;
|
|
100
101
|
steeringVersion: number;
|
|
101
102
|
responseRecommendation?: string;
|
|
103
|
+
directResponse?: RootAuthoredResponse;
|
|
102
104
|
call: RootContractCallIdentity;
|
|
103
105
|
toolResults: RequestToolResultsView;
|
|
104
106
|
resume?: RoleChildReturnContext;
|
|
@@ -492,6 +492,7 @@ class RootExecutionSession {
|
|
|
492
492
|
? createPlainRootAuthoredResponse(decision.response)
|
|
493
493
|
: await this.policy.rootContract.authorResponse(this.request, {
|
|
494
494
|
responseRecommendation: decision.responseRecommendation,
|
|
495
|
+
directResponse: decision.directResponse,
|
|
495
496
|
memoryRecallMessage: projectRootMemoryRecallMessage({
|
|
496
497
|
head: activation.head,
|
|
497
498
|
callId: activation.call.callId,
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
+
import { prepareInitialMemory } from "../long-term-memory/initial-context.js";
|
|
1
2
|
import { createRequestRoleCallPolicy } from "./role-call-policy.js";
|
|
2
3
|
import { restoreApprovalExecutionFreshness } from "./capability-execution-freshness.js";
|
|
3
4
|
import { captureRoleCallLedgerCheckpoint } from "../orchestration/role-calls/checkpoint.js";
|
|
4
5
|
import { isRoleApprovalWait } from "../orchestration/role-executors/approval-continuation.js";
|
|
5
|
-
import {
|
|
6
|
+
import { restoreCapabilityApprovalGroup } from "../orchestration/worker-capabilities/execution/approval-group.js";
|
|
6
7
|
import { createRoleApprovalContinuation, validateRequestApprovalContinuation, } from "./approval-continuation.js";
|
|
7
8
|
import { createRoleCallLedger, resolveRoleCallTransactions, } from "../orchestration/role-calls/index.js";
|
|
8
9
|
import { traceDebug } from "../observability/debug-logger.js";
|
|
@@ -26,8 +27,10 @@ export async function runRequestRunner(request, options = {}) {
|
|
|
26
27
|
}
|
|
27
28
|
: {}),
|
|
28
29
|
});
|
|
30
|
+
const initialMemory = await prepareInitialMemory(request, options.continuation?.ledger.state.initialMemory);
|
|
29
31
|
const ledger = createRoleCallLedger({
|
|
30
32
|
requestId: request.requestId,
|
|
33
|
+
...(initialMemory !== undefined ? { initialMemory } : {}),
|
|
31
34
|
...(options.continuation
|
|
32
35
|
? { checkpoint: options.continuation.ledger }
|
|
33
36
|
: {}),
|
|
@@ -42,15 +45,18 @@ export async function runRequestRunner(request, options = {}) {
|
|
|
42
45
|
let continuation;
|
|
43
46
|
if (options.continuation) {
|
|
44
47
|
validateRequestApprovalContinuation(options.continuation, ledger, request.workerCapabilities.provider.getDescriptors());
|
|
48
|
+
request.abortSignal.throwIfAborted();
|
|
45
49
|
const executionFreshness = restoreApprovalExecutionFreshness(options.continuation.preparedGroup.executionFreshnessToken, request.requestSteering);
|
|
46
|
-
const
|
|
50
|
+
const prepared = await restoreCapabilityApprovalGroup({
|
|
47
51
|
...(executionFreshness ? { executionFreshness } : {}),
|
|
48
52
|
ledger,
|
|
49
53
|
context: request.workerCapabilities.executionContext,
|
|
50
54
|
adapters: request.workerCapabilities.provider.getAdapters(),
|
|
51
55
|
group: options.continuation.preparedGroup,
|
|
52
|
-
decisions: options.decisions ?? [],
|
|
53
56
|
});
|
|
57
|
+
request.abortSignal.throwIfAborted();
|
|
58
|
+
restoreApprovalExecutionFreshness(options.continuation.preparedGroup.executionFreshnessToken, request.requestSteering);
|
|
59
|
+
const settled = await prepared.execute(options.decisions ?? []);
|
|
54
60
|
continuation = createRoleApprovalContinuation(options.continuation, settled.executionIds);
|
|
55
61
|
}
|
|
56
62
|
else {
|
|
@@ -17,6 +17,9 @@ export const SUPERVISOR_ROOT_CONTRACT = Object.freeze({
|
|
|
17
17
|
includeTitle: options.includeTitle,
|
|
18
18
|
allowedRoleIds: options.allowedRoleIds,
|
|
19
19
|
availableWorkerCapabilityCatalog: options.availableWorkerCapabilityCatalog,
|
|
20
|
+
...(options.head.state.initialMemory?.message
|
|
21
|
+
? { initialMemoryMessage: options.head.state.initialMemory.message }
|
|
22
|
+
: {}),
|
|
20
23
|
...(options.memoryRecallMessage
|
|
21
24
|
? { memoryRecallMessage: options.memoryRecallMessage }
|
|
22
25
|
: {}),
|
|
@@ -28,6 +31,9 @@ export const SUPERVISOR_ROOT_CONTRACT = Object.freeze({
|
|
|
28
31
|
responseRecommendation: options.responseRecommendation,
|
|
29
32
|
call: options.call,
|
|
30
33
|
toolResults: options.toolResults,
|
|
34
|
+
...(options.head.state.initialMemory?.message
|
|
35
|
+
? { initialMemoryMessage: options.head.state.initialMemory.message }
|
|
36
|
+
: {}),
|
|
31
37
|
...(options.memoryRecallMessage
|
|
32
38
|
? { memoryRecallMessage: options.memoryRecallMessage }
|
|
33
39
|
: {}),
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { ChatMessage } from "../../../model-gateway/types.js";
|
|
2
|
+
import type { RoleCallLedgerHead, RoleCapabilityExecution } from "../../orchestration/role-calls/index.js";
|
|
3
|
+
export declare const EXECUTION_CAPABILITY_RESULT_MESSAGE_KIND: "runtime_execution_capability_result_v1";
|
|
4
|
+
export declare const EXECUTION_CAPABILITY_TOOL_NAME: "runtime_capability";
|
|
5
|
+
/** One exact native result representation for active input and saved-source compatibility. */
|
|
6
|
+
export declare function buildExecutionCapabilityResultMessage(head: RoleCallLedgerHead, execution: RoleCapabilityExecution): ChatMessage;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { projectCanonicalRequestToolResult } from "../../context/canonical-capability-result.js";
|
|
2
|
+
export const EXECUTION_CAPABILITY_RESULT_MESSAGE_KIND = "runtime_execution_capability_result_v1";
|
|
3
|
+
export const EXECUTION_CAPABILITY_TOOL_NAME = "runtime_capability";
|
|
4
|
+
/** One exact native result representation for active input and saved-source compatibility. */
|
|
5
|
+
export function buildExecutionCapabilityResultMessage(head, execution) {
|
|
6
|
+
if (execution.status !== "settled" || execution.exactResult === undefined) {
|
|
7
|
+
throw new Error("execution_agent_continuation_result_invalid");
|
|
8
|
+
}
|
|
9
|
+
const canonical = projectCanonicalRequestToolResult(head, execution);
|
|
10
|
+
return Object.freeze({
|
|
11
|
+
role: "tool",
|
|
12
|
+
content: JSON.stringify({
|
|
13
|
+
kind: EXECUTION_CAPABILITY_RESULT_MESSAGE_KIND,
|
|
14
|
+
authority: "canonical_role_call_ledger",
|
|
15
|
+
presenceEffect: "runtime_result_only_not_user_intent",
|
|
16
|
+
invocationAttempt: execution.invocationAttempt,
|
|
17
|
+
result: {
|
|
18
|
+
executionId: execution.executionId,
|
|
19
|
+
capabilityId: execution.capabilityId,
|
|
20
|
+
outcome: canonical.outcome,
|
|
21
|
+
observedEffect: canonical.observedEffect,
|
|
22
|
+
summary: canonical.summary,
|
|
23
|
+
adapterResult: execution.exactResult,
|
|
24
|
+
},
|
|
25
|
+
}),
|
|
26
|
+
toolCallId: execution.executionId,
|
|
27
|
+
toolName: EXECUTION_CAPABILITY_TOOL_NAME,
|
|
28
|
+
});
|
|
29
|
+
}
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import type { MemoryRecallDecision } from "../memory-recall-decision.js";
|
|
2
|
+
import type { MemoryCandidate } from "../../long-term-memory/contracts.js";
|
|
3
|
+
import type { ConversationMemoryAuthoringContext } from "../../long-term-memory/conversation-authoring/context.js";
|
|
2
4
|
import type { ExecutionWorkPlanOptions, ExecutionWorkPlanReport } from "./work-plan-contract.js";
|
|
3
5
|
import type { RoleCapabilitySelectionProjection, RoleCapabilitySelectionReconsiderationCause } from "../../orchestration/role-calls/index.js";
|
|
4
6
|
import { type CapabilityControls, type CapabilityDescriptor } from "../../orchestration/capability-adapters/index.js";
|
|
@@ -21,6 +23,10 @@ export type ExecutionAgentDecisionPresentation = Readonly<{
|
|
|
21
23
|
}>;
|
|
22
24
|
export type ExecutionAgentRespondDecision = Readonly<ExecutionAgentDecisionPresentation & {
|
|
23
25
|
action: "respond";
|
|
26
|
+
/** Exact prevalidated short answer; absent keeps separate presentation. */
|
|
27
|
+
response?: string;
|
|
28
|
+
/** Assessed proposals bound to the same accepted direct response. */
|
|
29
|
+
memoryCandidates?: readonly MemoryCandidate[];
|
|
24
30
|
}>;
|
|
25
31
|
export type ExecutionAgentOpenCapabilityScopeDecision = Readonly<ExecutionAgentDecisionPresentation & {
|
|
26
32
|
action: "open_capability_scope";
|
|
@@ -113,6 +119,10 @@ export type ExecutionAgentDecisionContractOptions = Readonly<{
|
|
|
113
119
|
includeAcknowledgement?: boolean;
|
|
114
120
|
includeTitle?: boolean;
|
|
115
121
|
allowRespond?: boolean;
|
|
122
|
+
directResponseMaxLength?: number;
|
|
123
|
+
directResponseMemoryAuthoring?: Readonly<{
|
|
124
|
+
context?: ConversationMemoryAuthoringContext;
|
|
125
|
+
}>;
|
|
116
126
|
allowMemoryRecall?: boolean;
|
|
117
127
|
allowPlanner?: boolean;
|
|
118
128
|
allowAuditor?: boolean;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { parseDirectResponse, parseDirectResponseMemoryCandidates, } from "./direct-response-contract.js";
|
|
1
2
|
import { readStructuredDecisionEnvelope } from "../../model/structured-decision-envelope.js";
|
|
2
3
|
import { parseDecisionWithWorkPlan } from "./work-plan-decision-parsing.js";
|
|
3
4
|
import { isMemoryRecallDecisionRecord, parseMemoryRecallDecision, } from "../memory-recall-decision.js";
|
|
@@ -62,12 +63,23 @@ function parseExecutionAgentActionOutput(text, options) {
|
|
|
62
63
|
}
|
|
63
64
|
}
|
|
64
65
|
else if (selectedAction === "respond") {
|
|
65
|
-
|
|
66
|
+
const response = parseDirectResponse(record, options.directResponseMaxLength, issues);
|
|
67
|
+
const memoryCandidates = response !== undefined
|
|
68
|
+
? parseDirectResponseMemoryCandidates(record, options.directResponseMemoryAuthoring)
|
|
69
|
+
: undefined;
|
|
70
|
+
exactKeys(record, [
|
|
71
|
+
"action",
|
|
72
|
+
...(response !== undefined ? ["response"] : []),
|
|
73
|
+
...(memoryCandidates !== undefined ? ["memoryCandidates"] : []),
|
|
74
|
+
...presentationKeys(contract),
|
|
75
|
+
], issues, "decision");
|
|
66
76
|
if (!contract.allowRespond) {
|
|
67
77
|
issues.push(issue("execution_agent_response_not_allowed", "decision.action", "respond is not available until the canonical completion gate is open."));
|
|
68
78
|
}
|
|
69
79
|
decision = {
|
|
70
80
|
action: "respond",
|
|
81
|
+
...(response !== undefined ? { response } : {}),
|
|
82
|
+
...(memoryCandidates !== undefined ? { memoryCandidates } : {}),
|
|
71
83
|
...presentation,
|
|
72
84
|
};
|
|
73
85
|
}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import type { RequestExecutionScope } from "../../request/execution-scope.js";
|
|
2
|
+
/** Preserve a separately configured response model/calibration instead of silently bypassing it. */
|
|
3
|
+
export declare function hasCompatibleDirectResponseConfiguration(request: RequestExecutionScope): boolean;
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { isDeepStrictEqual } from "node:util";
|
|
2
|
+
import { resolveModelInvocation } from "../../../model-gateway/invocation-policy.js";
|
|
3
|
+
import { resolveModelStepTimeout } from "../../model/model-step-timeout-policy.js";
|
|
4
|
+
import { EXECUTION_AGENT_DECISION_MODEL_STEP, EXECUTION_AGENT_RESPONSE_MODEL_STEP, } from "./contracts.js";
|
|
5
|
+
/** Preserve a separately configured response model/calibration instead of silently bypassing it. */
|
|
6
|
+
export function hasCompatibleDirectResponseConfiguration(request) {
|
|
7
|
+
try {
|
|
8
|
+
const decision = effectiveConfiguration(request, EXECUTION_AGENT_DECISION_MODEL_STEP);
|
|
9
|
+
const response = effectiveConfiguration(request, EXECUTION_AGENT_RESPONSE_MODEL_STEP);
|
|
10
|
+
if (!decision || !response)
|
|
11
|
+
return false;
|
|
12
|
+
return isDeepStrictEqual(decision, response);
|
|
13
|
+
}
|
|
14
|
+
catch {
|
|
15
|
+
// Resolution failures keep the existing deferred path and its diagnostics.
|
|
16
|
+
return false;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
function effectiveConfiguration(request, modelStep) {
|
|
20
|
+
const step = request.runnerConfig.steps[modelStep];
|
|
21
|
+
if (!step)
|
|
22
|
+
return undefined;
|
|
23
|
+
const invocation = resolveModelInvocation({
|
|
24
|
+
modelStep,
|
|
25
|
+
agentMode: request.agentMode,
|
|
26
|
+
...(request.modelPreference
|
|
27
|
+
? { modelPreference: request.modelPreference }
|
|
28
|
+
: {}),
|
|
29
|
+
...(request.modelPolicy ? { modelPolicy: request.modelPolicy } : {}),
|
|
30
|
+
});
|
|
31
|
+
if (hasSpecialResponseFormat(modelStep, invocation.format))
|
|
32
|
+
return undefined;
|
|
33
|
+
const { profile } = invocation;
|
|
34
|
+
return {
|
|
35
|
+
profileId: profile.id,
|
|
36
|
+
providerId: profile.providerId,
|
|
37
|
+
provider: profile.provider,
|
|
38
|
+
model: profile.model,
|
|
39
|
+
contextWindowTokens: profile.contextWindowTokens,
|
|
40
|
+
capabilities: profile.capabilities,
|
|
41
|
+
options: profile.options,
|
|
42
|
+
generation: profile.generation,
|
|
43
|
+
context: profile.context,
|
|
44
|
+
think: invocation.think,
|
|
45
|
+
instructions: invocation.instructions ?? [],
|
|
46
|
+
timeoutMs: resolveModelStepTimeout({
|
|
47
|
+
modelStep,
|
|
48
|
+
fallbackTimeoutMs: step.timeoutMs,
|
|
49
|
+
...(request.modelPreference
|
|
50
|
+
? { modelPreference: request.modelPreference }
|
|
51
|
+
: {}),
|
|
52
|
+
...(request.modelPolicy ? { modelPolicy: request.modelPolicy } : {}),
|
|
53
|
+
}).timeoutMs,
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
function hasSpecialResponseFormat(modelStep, format) {
|
|
57
|
+
if (modelStep !== EXECUTION_AGENT_RESPONSE_MODEL_STEP)
|
|
58
|
+
return false;
|
|
59
|
+
if (format === undefined)
|
|
60
|
+
return false;
|
|
61
|
+
if (format && typeof format === "object" && "type" in format)
|
|
62
|
+
return format.type !== "text";
|
|
63
|
+
return true;
|
|
64
|
+
}
|