@abot-ai/runtime 1.6.0 → 1.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -0
- package/dist/src/bridge/request-steering.js +60 -15
- package/dist/src/capabilities/normal-invocation/contracts.d.ts +3 -0
- package/dist/src/capabilities/normal-invocation/output-channels.d.ts +10 -0
- package/dist/src/capabilities/normal-invocation/output-channels.js +29 -0
- package/dist/src/capabilities/normal-invocation/validator.js +4 -2
- package/dist/src/capabilities/tool-types.d.ts +1 -1
- package/dist/src/cli/host-companion-bundle.mjs +7570 -6781
- package/dist/src/cli/host-companion-entry.js +5 -22
- package/dist/src/cli/host-companion-input.d.ts +3 -0
- package/dist/src/cli/host-companion-input.js +21 -0
- package/dist/src/cli/host-companion-lifecycle.d.ts +11 -0
- package/dist/src/cli/host-companion-lifecycle.js +32 -0
- package/dist/src/cli/host-companion-setup-target.d.ts +4 -0
- package/dist/src/cli/host-companion-setup-target.js +17 -0
- package/dist/src/cli/host-companion-startup.d.ts +2 -0
- package/dist/src/cli/host-companion-startup.js +7 -2
- package/dist/src/cli/host-companion.d.ts +6 -0
- package/dist/src/cli/host-companion.js +30 -27
- package/dist/src/cli/windows-companion-store-entry.d.ts +9 -0
- package/dist/src/cli/windows-companion-store-entry.js +67 -0
- package/dist/src/computer-access/command-output-capture.d.ts +37 -0
- package/dist/src/computer-access/command-output-capture.js +136 -0
- package/dist/src/computer-access/command-output-retention.d.ts +5 -0
- package/dist/src/computer-access/command-output-retention.js +90 -0
- package/dist/src/computer-access/command-output.d.ts +7 -0
- package/dist/src/computer-access/command-output.js +1 -0
- package/dist/src/computer-access/commands.d.ts +1 -0
- package/dist/src/computer-access/commands.js +1 -1
- package/dist/src/computer-access/companion/command-output-protocol.d.ts +12 -0
- package/dist/src/computer-access/companion/command-output-protocol.js +28 -0
- package/dist/src/computer-access/companion/command-output.d.ts +13 -0
- package/dist/src/computer-access/companion/command-output.js +110 -0
- package/dist/src/computer-access/companion/install-link-macos.d.ts +7 -0
- package/dist/src/computer-access/companion/install-link-macos.js +48 -0
- package/dist/src/computer-access/companion/install-link-registration.d.ts +4 -0
- package/dist/src/computer-access/companion/install-link-registration.js +184 -0
- package/dist/src/computer-access/companion/install-link-windows.d.ts +4 -0
- package/dist/src/computer-access/companion/install-link-windows.js +65 -0
- package/dist/src/computer-access/companion/install-link.d.ts +9 -0
- package/dist/src/computer-access/companion/install-link.js +54 -0
- package/dist/src/computer-access/companion/native-messages.js +3 -0
- package/dist/src/computer-access/companion/native-session.d.ts +1 -0
- package/dist/src/computer-access/companion/native-session.js +14 -2
- package/dist/src/computer-access/companion/native-supervisor.js +1 -0
- package/dist/src/computer-access/companion/notification-windows.d.ts +1 -1
- package/dist/src/computer-access/companion/notification-windows.js +8 -3
- package/dist/src/computer-access/companion/protocol.d.ts +1 -1
- package/dist/src/computer-access/companion/protocol.js +6 -0
- package/dist/src/computer-access/companion/release-version.d.ts +1 -1
- package/dist/src/computer-access/companion/release-version.js +1 -1
- package/dist/src/computer-access/companion/windows-store/connection-error.d.ts +7 -0
- package/dist/src/computer-access/companion/windows-store/connection-error.js +19 -0
- package/dist/src/computer-access/companion/windows-store/connection-link.d.ts +13 -0
- package/dist/src/computer-access/companion/windows-store/connection-link.js +109 -0
- package/dist/src/computer-access/companion/windows-store/identity.d.ts +13 -0
- package/dist/src/computer-access/companion/windows-store/identity.js +13 -0
- package/dist/src/computer-access/companion/windows-store/lifecycle.d.ts +5 -0
- package/dist/src/computer-access/companion/windows-store/lifecycle.js +90 -0
- package/dist/src/computer-access/contracts.d.ts +1 -1
- package/dist/src/computer-access/handlers.d.ts +2 -1
- package/dist/src/computer-access/handlers.js +5 -1
- package/dist/src/computer-access/process-capture.d.ts +6 -0
- package/dist/src/computer-access/process-capture.js +1 -0
- package/dist/src/computer-access/process-result.d.ts +2 -0
- package/dist/src/computer-access/process-result.js +14 -6
- package/dist/src/computer-access/process-runner.d.ts +2 -1
- package/dist/src/computer-access/process-runner.js +21 -13
- package/dist/src/model-gateway/server/configuration.d.ts +2 -0
- package/dist/src/model-gateway/server/configuration.js +73 -21
- package/dist/src/plugin-contract/install-source.d.ts +13 -0
- package/dist/src/plugin-contract/install-source.js +99 -0
- package/dist/src/plugin-contract/manifest.d.ts +2 -1
- package/dist/src/plugin-sdk/computer-access.d.ts +8 -0
- package/dist/src/plugin-sdk/computer-access.js +5 -0
- package/dist/src/runtime/adapters/in-memory-session-store.js +6 -16
- package/dist/src/runtime/admin/config-control.js +2 -1
- package/dist/src/runtime/automations/catalog.d.ts +3 -0
- package/dist/src/runtime/automations/catalog.js +1 -0
- package/dist/src/runtime/automations/model-dependency-projection.d.ts +2 -0
- package/dist/src/runtime/automations/service.d.ts +2 -0
- package/dist/src/runtime/capabilities/automation-builder/authoring-reference.d.ts +10 -5
- package/dist/src/runtime/capabilities/automation-builder/authoring-reference.js +8 -7
- package/dist/src/runtime/capabilities/automation-builder/payload-instructions.d.ts +2 -2
- package/dist/src/runtime/capabilities/automation-builder/payload-instructions.js +2 -2
- package/dist/src/runtime/capabilities/automation-builder/tool-contract.d.ts +2 -2
- package/dist/src/runtime/capabilities/automations/authoring-catalog.js +1 -1
- package/dist/src/runtime/capabilities/automations/authoring-preparation.d.ts +11 -5
- package/dist/src/runtime/capabilities/automations/tool-module.js +1 -1
- package/dist/src/runtime/capabilities/request-permission-catalog.d.ts +3 -1
- package/dist/src/runtime/capabilities/request-permission-catalog.js +21 -2
- package/dist/src/runtime/capabilities/request-permission-tool-registry.d.ts +2 -1
- package/dist/src/runtime/capabilities/request-permission-tool-registry.js +18 -10
- package/dist/src/runtime/capabilities/request-runtime-tool-registry.d.ts +2 -0
- package/dist/src/runtime/capabilities/request-runtime-tool-registry.js +1 -1
- package/dist/src/runtime/capabilities/scheduling/create-operations.d.ts +6 -0
- package/dist/src/runtime/config/builders.js +6 -5
- package/dist/src/runtime/config/effective-model-config-validation.js +4 -35
- package/dist/src/runtime/config/fields.js +15 -0
- package/dist/src/runtime/config/model-context-capacity.d.ts +20 -0
- package/dist/src/runtime/config/model-context-capacity.js +55 -0
- package/dist/src/runtime/config/model-execution-policy.d.ts +5 -1
- package/dist/src/runtime/config/model-execution-policy.js +16 -0
- package/dist/src/runtime/config/model-plugin-config.d.ts +8 -0
- package/dist/src/runtime/config/model-plugin-config.js +40 -0
- package/dist/src/runtime/config/schema.js +5 -1
- package/dist/src/runtime/config/validation/model-profile-validation.js +2 -0
- package/dist/src/runtime/config/validation/runtime-config-validation-contract.d.ts +3 -1
- package/dist/src/runtime/config/validation/runtime-config-validation-contract.js +3 -1
- package/dist/src/runtime/config/validation/runtime-root-section-validation.js +11 -4
- package/dist/src/runtime/config/validation/web-ui-config-validation.js +3 -2
- package/dist/src/runtime/config/web-ui.d.ts +5 -0
- package/dist/src/runtime/config/web-ui.js +5 -0
- package/dist/src/runtime/config.js +2 -0
- package/dist/src/runtime/local-application.d.ts +2 -0
- package/dist/src/runtime/local-host/app-owner.js +50 -6
- package/dist/src/runtime/local-host/app-request-control.d.ts +3 -1
- package/dist/src/runtime/local-host/app-request-control.js +91 -11
- package/dist/src/runtime/local-host/client-requests.js +32 -5
- package/dist/src/runtime/local-host/client-services.d.ts +2 -0
- package/dist/src/runtime/local-host/local-request-diagnostics.d.ts +9 -0
- package/dist/src/runtime/local-host/local-request-diagnostics.js +47 -0
- package/dist/src/runtime/local-host/saved-approvals.js +23 -2
- package/dist/src/runtime/model/model-selection.js +4 -1
- package/dist/src/runtime/observability/request-control-diagnostics.d.ts +6 -0
- package/dist/src/runtime/observability/request-control-diagnostics.js +52 -0
- package/dist/src/runtime/plugins/configuration-context.d.ts +9 -0
- package/dist/src/runtime/plugins/configuration-context.js +42 -0
- package/dist/src/runtime/plugins/configuration-settings.d.ts +2 -0
- package/dist/src/runtime/plugins/configuration-settings.js +26 -0
- package/dist/src/runtime/plugins/configuration-store.d.ts +23 -0
- package/dist/src/runtime/plugins/configuration-store.js +100 -0
- package/dist/src/runtime/plugins/configuration-write.d.ts +5 -0
- package/dist/src/runtime/plugins/configuration-write.js +58 -0
- package/dist/src/runtime/plugins/installation/archive.d.ts +2 -0
- package/dist/src/runtime/plugins/installation/archive.js +107 -0
- package/dist/src/runtime/plugins/installation/github-download.d.ts +9 -0
- package/dist/src/runtime/plugins/installation/github-download.js +72 -0
- package/dist/src/runtime/plugins/installation/installed-package.d.ts +9 -0
- package/dist/src/runtime/plugins/installation/installed-package.js +66 -0
- package/dist/src/runtime/plugins/installation/package.d.ts +45 -0
- package/dist/src/runtime/plugins/installation/package.js +79 -0
- package/dist/src/runtime/plugins/installation/portable-path.d.ts +2 -0
- package/dist/src/runtime/plugins/installation/portable-path.js +10 -0
- package/dist/src/runtime/plugins/installation/publication.d.ts +10 -0
- package/dist/src/runtime/plugins/installation/publication.js +17 -0
- package/dist/src/runtime/plugins/installation/service.d.ts +41 -0
- package/dist/src/runtime/plugins/installation/service.js +80 -0
- package/dist/src/runtime/plugins/loader.js +15 -29
- package/dist/src/runtime/plugins/manifest-projection.js +1 -0
- package/dist/src/runtime/plugins/manifest-validator.js +3 -0
- package/dist/src/runtime/plugins/module-cache.d.ts +2 -0
- package/dist/src/runtime/plugins/module-cache.js +19 -0
- package/dist/src/runtime/plugins/selection.d.ts +2 -0
- package/dist/src/runtime/plugins/selection.js +16 -11
- package/dist/src/runtime/ports.d.ts +6 -4
- package/dist/src/runtime/request/dependencies.d.ts +2 -1
- package/dist/src/runtime/request/execution-payload-compacted-evidence.d.ts +1 -1
- package/dist/src/runtime/request/handler.js +8 -0
- package/dist/src/runtime/request/prepared-execution.js +6 -1
- package/dist/src/runtime/request/request-steering.d.ts +4 -0
- package/dist/src/runtime/request/request-steering.js +37 -12
- package/dist/src/runtime/request/worker-capability-composition.d.ts +2 -0
- package/dist/src/runtime/request/worker-capability-composition.js +4 -1
- package/dist/src/runtime/scheduler/journal-index-state.d.ts +1 -1
- package/dist/src/sessions/assistant-initiative-message.d.ts +3 -0
- package/dist/src/sessions/assistant-initiative-message.js +12 -0
- package/dist/src/sessions/assistant-initiative.d.ts +2 -2
- package/dist/src/sessions/assistant-initiative.js +1 -7
- package/dist/src/sessions/durable-session-commit.d.ts +2 -1
- package/dist/src/sessions/durable-session-commit.js +6 -1
- package/dist/src/sessions/metadata/projection.d.ts +15 -0
- package/dist/src/sessions/metadata/projection.js +55 -0
- package/dist/src/sessions/metadata/publication.d.ts +12 -0
- package/dist/src/sessions/metadata/publication.js +78 -0
- package/dist/src/sessions/metadata/source-receipt.d.ts +5 -0
- package/dist/src/sessions/metadata/source-receipt.js +42 -0
- package/dist/src/sessions/metadata/store.d.ts +7 -0
- package/dist/src/sessions/metadata/store.js +119 -0
- package/dist/src/sessions/record/projection.d.ts +3 -1
- package/dist/src/sessions/record/projection.js +26 -18
- package/dist/src/sessions/request-lifecycle/service.js +3 -3
- package/dist/src/sessions/session-service.d.ts +2 -4
- package/dist/src/sessions/session-service.js +4 -16
- package/dist/src/sessions/session-store.d.ts +2 -1
- package/dist/src/sessions/session-store.js +9 -3
- package/dist/src/sessions/snapshot.d.ts +17 -0
- package/dist/src/sessions/snapshot.js +105 -0
- package/dist/src/sessions/types.d.ts +2 -0
- package/dist/src/shared/tool-selection.d.ts +2 -0
- package/dist/src/shared/tool-selection.js +7 -0
- package/dist/src/web-ui/app/ARCHITECTURE.md +14 -0
- package/dist/src/web-ui/app/app.js +6 -3
- package/dist/src/web-ui/app/components/config-workspace/config-model.js +2 -0
- package/dist/src/web-ui/app/components/config-workspace/model-plugin-permissions.js +130 -0
- package/dist/src/web-ui/app/components/config-workspace/model-plugin-selection.js +180 -0
- package/dist/src/web-ui/app/components/config-workspace/model-plugin-view-state.js +114 -0
- package/dist/src/web-ui/app/components/config-workspace/model-rendering.js +3 -0
- package/dist/src/web-ui/app/components/config-workspace/model-summary.js +39 -0
- package/dist/src/web-ui/app/components/config-workspace/summary-rendering.js +30 -0
- package/dist/src/web-ui/app/components/config-workspace/workspace-events.js +37 -0
- package/dist/src/web-ui/app/components/config-workspace/workspace-mutations.js +2 -0
- package/dist/src/web-ui/app/components/config-workspace/workspace-persistence.js +9 -1
- package/dist/src/web-ui/app/components/config-workspace/workspace-view.js +23 -67
- package/dist/src/web-ui/app/components/config-workspace.js +11 -2
- package/dist/src/web-ui/app/components/conversation-view.js +36 -5
- package/dist/src/web-ui/app/components/dashboard/recent-conversations.js +2 -1
- package/dist/src/web-ui/app/components/dashboard/workspace.js +2 -1
- package/dist/src/web-ui/app/components/operations-summary.js +105 -0
- package/dist/src/web-ui/app/components/passive-learning/home.js +1 -9
- package/dist/src/web-ui/app/components/plugins/configuration-draft.js +34 -0
- package/dist/src/web-ui/app/components/plugins/configuration-editor.js +147 -0
- package/dist/src/web-ui/app/components/plugins/configuration-fields.js +103 -0
- package/dist/src/web-ui/app/components/plugins/configuration-retained-secrets.js +20 -0
- package/dist/src/web-ui/app/components/plugins/configuration-settings.js +108 -0
- package/dist/src/web-ui/app/components/plugins/discovery-rendering.js +37 -0
- package/dist/src/web-ui/app/components/plugins/installation.js +212 -0
- package/dist/src/web-ui/app/components/plugins/manager.js +160 -6
- package/dist/src/web-ui/app/components/plugins/removal.js +130 -0
- package/dist/src/web-ui/app/components/plugins/rendering.js +14 -2
- package/dist/src/web-ui/app/components/plugins/summary.js +54 -0
- package/dist/src/web-ui/app/components/plugins/tabs.js +31 -0
- package/dist/src/web-ui/app/components/plugins/view-state.js +3 -1
- package/dist/src/web-ui/app/components/runtime-setup/connection-form.js +5 -2
- package/dist/src/web-ui/app/components/runtime-setup/connection-state.js +9 -1
- package/dist/src/web-ui/app/components/runtime-setup/context-window-feedback.js +71 -0
- package/dist/src/web-ui/app/components/runtime-setup/optional-steps.js +2 -0
- package/dist/src/web-ui/app/components/runtime-setup-guide.js +15 -3
- package/dist/src/web-ui/app/components/spark-chat/empty-state.js +1 -0
- package/dist/src/web-ui/app/components/spark-chat/panel.js +1 -0
- package/dist/src/web-ui/app/components/system-host/connection-card.js +35 -0
- package/dist/src/web-ui/app/components/system-host/macos-setup.js +1 -1
- package/dist/src/web-ui/app/components/system-host/manager.js +45 -12
- package/dist/src/web-ui/app/components/system-host/rendering.js +111 -106
- package/dist/src/web-ui/app/components/system-host/windows-store-setup.js +293 -0
- package/dist/src/web-ui/app/components/workspace-shell.js +6 -0
- package/dist/src/web-ui/app/computer-access-feature.js +22 -5
- package/dist/src/web-ui/app/configuration-feature.js +35 -2
- package/dist/src/web-ui/app/controllers/app-event-bindings.js +4 -1
- package/dist/src/web-ui/app/controllers/conversation-read-state-controller.d.ts +1 -0
- package/dist/src/web-ui/app/controllers/conversation-read-state-controller.js +7 -3
- package/dist/src/web-ui/app/controllers/conversation-request-hydration.js +88 -0
- package/dist/src/web-ui/app/controllers/conversation-session-controller.d.ts +9 -3
- package/dist/src/web-ui/app/controllers/conversation-session-controller.js +52 -144
- package/dist/src/web-ui/app/controllers/history-pagination.js +111 -0
- package/dist/src/web-ui/app/controllers/operations-controller.d.ts +12 -0
- package/dist/src/web-ui/app/controllers/operations-controller.js +28 -21
- package/dist/src/web-ui/app/controllers/runtime-onboarding-controller.d.ts +1 -0
- package/dist/src/web-ui/app/controllers/runtime-onboarding-controller.js +11 -0
- package/dist/src/web-ui/app/controllers/session-controller.js +10 -2
- package/dist/src/web-ui/app/controllers/session-list-pagination.js +71 -0
- package/dist/src/web-ui/app/controllers/session-sidebar-controller.js +6 -4
- package/dist/src/web-ui/app/controllers/spark-chat-reading.js +1 -0
- package/dist/src/web-ui/app/controllers/spark-chat-sync.js +24 -5
- package/dist/src/web-ui/app/controllers/workspace-route-controller.js +21 -19
- package/dist/src/web-ui/app/dashboard-feature.js +2 -2
- package/dist/src/web-ui/app/index.html +6 -2
- package/dist/src/web-ui/app/lib/history-page-messages.js +49 -0
- package/dist/src/web-ui/app/lib/request-lifecycle-view.js +8 -0
- package/dist/src/web-ui/app/lib/workspace-route.d.ts +3 -0
- package/dist/src/web-ui/app/lib/workspace-route.js +4 -0
- package/dist/src/web-ui/app/passive-learning-feature.js +0 -1
- package/dist/src/web-ui/app/runtime-onboarding-feature.js +3 -0
- package/dist/src/web-ui/app/schedules-feature.js +1 -1
- package/dist/src/web-ui/app/services/runtime-web-client/configuration.js +20 -0
- package/dist/src/web-ui/app/services/runtime-web-client/plugin-configuration.js +19 -0
- package/dist/src/web-ui/app/services/runtime-web-client/spark-chat.js +4 -4
- 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 +6 -1
- package/dist/src/web-ui/app/services/runtime-web-client.js +12 -3
- package/dist/src/web-ui/app/spark-chat-feature.js +76 -19
- package/dist/src/web-ui/app/styles/11-product-links.css +30 -0
- package/dist/src/web-ui/app/styles/41-plugin-configuration.css +79 -0
- package/dist/src/web-ui/app/styles/41-plugin-discovery.css +132 -0
- package/dist/src/web-ui/app/styles/41-plugin-management.css +6 -0
- package/dist/src/web-ui/app/styles/42-model-plugin-permissions.css +173 -0
- package/dist/src/web-ui/app/styles/46-system-host.css +61 -107
- package/dist/src/web-ui/app/styles/47-config-controls.css +13 -1
- package/dist/src/web-ui/app/styles/54-spark-chat.css +33 -1
- package/dist/src/web-ui/app/styles.css +4 -0
- package/dist/src/web-ui/local-runtime/api-router.js +11 -6
- package/dist/src/web-ui/local-runtime/approval-request-attachment.js +14 -5
- package/dist/src/web-ui/local-runtime/configuration-activation-source.d.ts +1 -1
- package/dist/src/web-ui/local-runtime/configuration-activation-source.js +9 -3
- package/dist/src/web-ui/local-runtime/contracts.d.ts +4 -3
- package/dist/src/web-ui/local-runtime/environment-registry.d.ts +5 -1
- package/dist/src/web-ui/local-runtime/environment-registry.js +53 -11
- package/dist/src/web-ui/local-runtime/history-pagination.d.ts +16 -0
- package/dist/src/web-ui/local-runtime/history-pagination.js +20 -0
- package/dist/src/web-ui/local-runtime/plugin-configuration-routes.d.ts +16 -0
- package/dist/src/web-ui/local-runtime/plugin-configuration-routes.js +68 -0
- package/dist/src/web-ui/local-runtime/plugin-installation-routes.d.ts +16 -0
- package/dist/src/web-ui/local-runtime/plugin-installation-routes.js +96 -0
- package/dist/src/web-ui/local-runtime/plugin-management-routes.d.ts +8 -1
- package/dist/src/web-ui/local-runtime/plugin-management-routes.js +17 -0
- package/dist/src/web-ui/local-runtime/plugin-mutation-admission.d.ts +7 -0
- package/dist/src/web-ui/local-runtime/plugin-mutation-admission.js +17 -0
- package/dist/src/web-ui/local-runtime/plugin-removal-routes.d.ts +18 -0
- package/dist/src/web-ui/local-runtime/plugin-removal-routes.js +60 -0
- package/dist/src/web-ui/local-runtime/realtime-controller.js +41 -2
- package/dist/src/web-ui/local-runtime/request-cancellation-route.js +28 -1
- package/dist/src/web-ui/local-runtime/request-control-observation.d.ts +19 -0
- package/dist/src/web-ui/local-runtime/request-control-observation.js +80 -0
- package/dist/src/web-ui/local-runtime/request-execution.js +69 -37
- package/dist/src/web-ui/local-runtime/runtime-setup-context-window.d.ts +20 -0
- package/dist/src/web-ui/local-runtime/runtime-setup-context-window.js +44 -0
- package/dist/src/web-ui/local-runtime/runtime-setup-routes.js +2 -0
- package/dist/src/web-ui/local-runtime/runtime-setup-validation.js +9 -2
- package/dist/src/web-ui/local-runtime/session-routes.d.ts +1 -0
- package/dist/src/web-ui/local-runtime/session-routes.js +16 -4
- package/dist/src/web-ui/local-runtime/spark-chat-routes.js +4 -3
- package/dist/src/web-ui/plugin-capability-selection.js +4 -1
- package/dist/src/web-ui/plugin-configuration-input.d.ts +12 -0
- package/dist/src/web-ui/plugin-configuration-input.js +68 -0
- package/dist/src/web-ui/plugin-configuration-retained-secrets.d.ts +9 -0
- package/dist/src/web-ui/plugin-configuration-retained-secrets.js +48 -0
- package/dist/src/web-ui/plugin-configuration-service.d.ts +52 -0
- package/dist/src/web-ui/plugin-configuration-service.js +66 -0
- package/dist/src/web-ui/plugin-configuration-view.d.ts +25 -0
- package/dist/src/web-ui/plugin-configuration-view.js +45 -0
- package/dist/src/web-ui/plugin-disabled-selection.d.ts +7 -0
- package/dist/src/web-ui/plugin-disabled-selection.js +17 -0
- package/dist/src/web-ui/plugin-management-catalog.d.ts +3 -1
- package/dist/src/web-ui/plugin-management-catalog.js +11 -1
- package/dist/src/web-ui/plugin-management-selection.js +22 -9
- package/dist/src/web-ui/plugin-management-service.d.ts +5 -1
- package/dist/src/web-ui/plugin-management-service.js +11 -7
- package/dist/src/web-ui/plugin-removal-error.d.ts +7 -0
- package/dist/src/web-ui/plugin-removal-error.js +16 -0
- package/dist/src/web-ui/plugin-removal-service.d.ts +30 -0
- package/dist/src/web-ui/plugin-removal-service.js +109 -0
- package/dist/src/web-ui/runtime-setup-gateway.d.ts +6 -2
- package/dist/src/web-ui/runtime-setup-gateway.js +30 -10
- package/dist/src/web-ui/server.js +6 -2
- package/dist/src/web-ui/session-read-state/overview.d.ts +42 -0
- package/dist/src/web-ui/session-read-state/overview.js +16 -0
- package/dist/src/web-ui/session-read-state/pagination.d.ts +15 -0
- package/dist/src/web-ui/session-read-state/pagination.js +42 -0
- package/dist/src/web-ui/session-read-state/projection.d.ts +4 -3
- package/dist/src/web-ui/session-read-state/service.d.ts +213 -20
- package/dist/src/web-ui/session-read-state/service.js +25 -23
- package/dist/src/web-ui/session-read-state/visible-messages.d.ts +3 -3
- package/dist/src/web-ui/system-host-setup/companion-linux.js +1 -1
- package/dist/src/web-ui/system-host-setup/installer-contract.d.ts +1 -1
- package/dist/src/web-ui/system-host-setup/installer-contract.js +2 -2
- package/dist/src/web-ui/system-host-setup/installers.js +0 -7
- package/dist/src/web-ui/system-host-setup/local-connection.d.ts +4 -1
- package/dist/src/web-ui/system-host-setup/local-connection.js +10 -17
- package/dist/src/web-ui/system-host-setup/routes.d.ts +2 -0
- package/dist/src/web-ui/system-host-setup/routes.js +32 -9
- package/dist/src/web-ui/system-host-setup/setup-mutation.d.ts +9 -0
- package/dist/src/web-ui/system-host-setup/setup-mutation.js +27 -0
- package/dist/src/web-ui/system-host-setup/windows-store-route.d.ts +13 -0
- package/dist/src/web-ui/system-host-setup/windows-store-route.js +68 -0
- package/docs/configuration.md +46 -0
- package/docs/installation.md +45 -24
- package/docs/plugins.md +165 -2
- package/docs/projects-and-full-plus.md +2 -6
- package/docs/runtime-library.md +0 -1
- package/docs/windows-companion-store.md +127 -0
- package/package.json +3 -3
- package/plugins/document-reader/plugin.json +1 -0
- package/plugins/exec/plugin.json +3 -0
- package/plugins/filesystem/plugin.json +2 -0
- package/plugins/local-search/plugin.json +1 -0
- package/plugins/system/README.md +43 -3
- package/plugins/system/plugin.json +5 -0
- package/plugins/system/source/companion-command-output.ts +82 -0
- package/plugins/system/source/host-dispatch.ts +4 -0
- package/plugins/system/source/index.ts +11 -5
- package/plugins/system/source/local-command-output.ts +61 -0
- package/plugins/system/source/request-system-modules.ts +2 -0
- package/plugins/system/src/index.cjs +474 -39
- package/plugins/web/README.md +2 -2
- package/plugins/web/plugin.json +4 -0
- package/runtime.config.schema.json +25 -1
- package/src/runtime/README.md +12 -2
- package/dist/src/web-ui/system-host-setup/companion-windows.d.ts +0 -2
- package/dist/src/web-ui/system-host-setup/companion-windows.js +0 -108
- package/docs/publishing.md +0 -167
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { spawn } from "node:child_process";
|
|
2
2
|
const STREAM_MAX_CHARS = 16_000;
|
|
3
3
|
/** Bounded process observation; exit zero proves command completion, not effects. */
|
|
4
|
-
export function runSystemProcess(input) {
|
|
4
|
+
export function runSystemProcess(input, capture) {
|
|
5
5
|
if (input.abortSignal?.aborted)
|
|
6
6
|
return Promise.resolve({
|
|
7
7
|
exitCode: null,
|
|
@@ -29,6 +29,7 @@ export function runSystemProcess(input) {
|
|
|
29
29
|
if (stopGrace)
|
|
30
30
|
clearTimeout(stopGrace);
|
|
31
31
|
input.abortSignal?.removeEventListener("abort", abort);
|
|
32
|
+
capture?.end();
|
|
32
33
|
resolve(Object.freeze({
|
|
33
34
|
exitCode,
|
|
34
35
|
stdout,
|
|
@@ -76,18 +77,25 @@ export function runSystemProcess(input) {
|
|
|
76
77
|
stopGrace.unref();
|
|
77
78
|
};
|
|
78
79
|
const abort = () => stop("aborted");
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
stdout
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
80
|
+
const attachOutput = () => {
|
|
81
|
+
if (capture) {
|
|
82
|
+
capture.attach(child.stdout, child.stderr, () => stop("output_failed"));
|
|
83
|
+
return;
|
|
84
|
+
}
|
|
85
|
+
child.stdout.setEncoding("utf8");
|
|
86
|
+
child.stderr.setEncoding("utf8");
|
|
87
|
+
child.stdout.on("data", (chunk) => {
|
|
88
|
+
const remaining = streamMaxChars - stdout.length;
|
|
89
|
+
truncated ||= chunk.length > remaining;
|
|
90
|
+
stdout += chunk.slice(0, remaining);
|
|
91
|
+
});
|
|
92
|
+
child.stderr.on("data", (chunk) => {
|
|
93
|
+
const remaining = streamMaxChars - stderr.length;
|
|
94
|
+
truncated ||= chunk.length > remaining;
|
|
95
|
+
stderr += chunk.slice(0, remaining);
|
|
96
|
+
});
|
|
97
|
+
};
|
|
98
|
+
attachOutput();
|
|
91
99
|
child.once("error", (error) => {
|
|
92
100
|
status = "spawn_failed";
|
|
93
101
|
stderr = error.message.slice(0, STREAM_MAX_CHARS);
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import type { ModelGatewayPolicyConfig } from "../types.js";
|
|
2
2
|
import type { ModelGatewayHandlerOptions } from "./contracts.js";
|
|
3
3
|
export declare function resolveModelGatewayPort(environment?: NodeJS.ProcessEnv): number;
|
|
4
|
+
/** Captures gateway inputs without changing its loggers or retaining credentials. */
|
|
5
|
+
export declare function captureModelGatewayConfiguration(options: ModelGatewayHandlerOptions): string | null;
|
|
4
6
|
export declare function configureModelGateway(options: ModelGatewayHandlerOptions): ModelGatewayPolicyConfig;
|
|
@@ -1,10 +1,11 @@
|
|
|
1
|
+
import { createHash } from "node:crypto";
|
|
1
2
|
import { join } from "node:path";
|
|
2
3
|
import { loadRuntimeConfig } from "../../runtime/config.js";
|
|
3
4
|
import { RUNTIME_LOGS_DIR_NAME } from "../../runtime/config/layout.js";
|
|
4
5
|
import { loadRequestRunnerConfig } from "../../runtime/config/runner/loader.js";
|
|
5
6
|
import { createRequestModelPolicy } from "../../runtime/config/runner/model-policy.js";
|
|
6
7
|
import { configureDebugLogger } from "../../runtime/observability/debug-logger.js";
|
|
7
|
-
import { DEFAULT_MODEL_GATEWAY_URL } from "../../shared/constants.js";
|
|
8
|
+
import { DEFAULT_MODEL_GATEWAY_URL, DEFAULT_OLLAMA_URL, } from "../../shared/constants.js";
|
|
8
9
|
import { configureModelIoTrace } from "../model-io-trace.js";
|
|
9
10
|
const MODEL_GATEWAY_TRACE_FILE_SEGMENTS = ["model-gateway.jsonl"];
|
|
10
11
|
const MODEL_IO_TRACE_FILE_SEGMENTS = ["model-io.jsonl"];
|
|
@@ -26,7 +27,7 @@ export function resolveModelGatewayPort(environment = process.env) {
|
|
|
26
27
|
const parsedUrl = new URL(configuredUrl);
|
|
27
28
|
return Number(parsedUrl.port || "80");
|
|
28
29
|
}
|
|
29
|
-
|
|
30
|
+
function resolveModelGatewayConfiguration(options) {
|
|
30
31
|
const runtimeConfig = loadRuntimeConfig({
|
|
31
32
|
rootDir: options.rootDir ?? process.cwd(),
|
|
32
33
|
configPath: options.configPath,
|
|
@@ -38,23 +39,74 @@ export function configureModelGateway(options) {
|
|
|
38
39
|
configPath: runtimeConfig.requestRunner.configPath,
|
|
39
40
|
}),
|
|
40
41
|
});
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
42
|
+
return {
|
|
43
|
+
modelGatewayUrl: runtimeConfig.modelGatewayUrl,
|
|
44
|
+
modelPolicy,
|
|
45
|
+
debugLogging: {
|
|
46
|
+
traceFile: resolveTraceFile({
|
|
47
|
+
configuredPath: resolveConfiguredTraceFile("MODEL_GATEWAY_TRACE_FILE"),
|
|
48
|
+
sharedDir: runtimeConfig.paths.sharedDir,
|
|
49
|
+
segments: MODEL_GATEWAY_TRACE_FILE_SEGMENTS,
|
|
50
|
+
}),
|
|
51
|
+
enabled: runtimeConfig.logging?.enabled,
|
|
52
|
+
rotation: runtimeConfig.logging?.rotation,
|
|
53
|
+
},
|
|
54
|
+
modelIoLogging: {
|
|
55
|
+
traceFile: resolveTraceFile({
|
|
56
|
+
configuredPath: resolveConfiguredTraceFile("MODEL_GATEWAY_MODEL_IO_TRACE_FILE"),
|
|
57
|
+
sharedDir: runtimeConfig.paths.sharedDir,
|
|
58
|
+
segments: MODEL_IO_TRACE_FILE_SEGMENTS,
|
|
59
|
+
}),
|
|
60
|
+
enabled: runtimeConfig.logging?.enabled,
|
|
61
|
+
rotation: runtimeConfig.logging?.rotation,
|
|
62
|
+
},
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
function canonicalConfiguration(value) {
|
|
66
|
+
if (Array.isArray(value))
|
|
67
|
+
return value.map(canonicalConfiguration);
|
|
68
|
+
if (value && typeof value === "object")
|
|
69
|
+
return Object.fromEntries(Object.entries(value)
|
|
70
|
+
.sort(([left], [right]) => left.localeCompare(right))
|
|
71
|
+
.map(([key, entry]) => [key, canonicalConfiguration(entry)]));
|
|
72
|
+
return value;
|
|
73
|
+
}
|
|
74
|
+
function providerEnvironment(options, policy) {
|
|
75
|
+
const credentialNames = new Set(["OPENAI_API_KEY"]);
|
|
76
|
+
for (const provider of Object.values(policy.providers ?? {})) {
|
|
77
|
+
if (provider.type !== "openai")
|
|
78
|
+
continue;
|
|
79
|
+
const configuredName = provider.apiKeyEnv?.trim();
|
|
80
|
+
if (configuredName && /^[A-Za-z_][A-Za-z0-9_]*$/.test(configuredName))
|
|
81
|
+
credentialNames.add(configuredName);
|
|
82
|
+
}
|
|
83
|
+
const numPredict = Number(process.env.OLLAMA_NUM_PREDICT);
|
|
84
|
+
return {
|
|
85
|
+
ollamaUrl: options.ollamaUrl ?? (process.env.OLLAMA_URL || DEFAULT_OLLAMA_URL),
|
|
86
|
+
openAIBaseUrl: process.env.OPENAI_BASE_URL || "https://api.openai.com/v1",
|
|
87
|
+
ollamaNumPredict: Number.isFinite(numPredict) && numPredict > 0
|
|
88
|
+
? Math.trunc(numPredict)
|
|
89
|
+
: null,
|
|
90
|
+
credentials: Object.fromEntries([...credentialNames].map((name) => [name, process.env[name] || null])),
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
/** Captures gateway inputs without changing its loggers or retaining credentials. */
|
|
94
|
+
export function captureModelGatewayConfiguration(options) {
|
|
95
|
+
if (options.providerAdapters || options.additionalProviderAdapters?.length)
|
|
96
|
+
return null;
|
|
97
|
+
const configuration = resolveModelGatewayConfiguration(options);
|
|
98
|
+
const snapshot = {
|
|
99
|
+
...configuration,
|
|
100
|
+
modelGatewayUrl: new URL(configuration.modelGatewayUrl).href,
|
|
101
|
+
providerEnvironment: providerEnvironment(options, configuration.modelPolicy),
|
|
102
|
+
};
|
|
103
|
+
return createHash("sha256")
|
|
104
|
+
.update(JSON.stringify(canonicalConfiguration(snapshot)))
|
|
105
|
+
.digest("hex");
|
|
106
|
+
}
|
|
107
|
+
export function configureModelGateway(options) {
|
|
108
|
+
const configuration = resolveModelGatewayConfiguration(options);
|
|
109
|
+
configureDebugLogger(configuration.debugLogging);
|
|
110
|
+
configureModelIoTrace(configuration.modelIoLogging);
|
|
111
|
+
return configuration.modelPolicy;
|
|
60
112
|
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/** Portable installation intent. A source never grants execution authority. */
|
|
2
|
+
export type PluginInstallSource = Readonly<{
|
|
3
|
+
repository: string;
|
|
4
|
+
ref?: string;
|
|
5
|
+
path?: string;
|
|
6
|
+
}>;
|
|
7
|
+
export declare class PluginInstallError extends Error {
|
|
8
|
+
readonly code: string;
|
|
9
|
+
readonly statusCode: number;
|
|
10
|
+
constructor(code: string, message: string, statusCode?: number);
|
|
11
|
+
}
|
|
12
|
+
export declare function parsePluginInstallSource(input: unknown): PluginInstallSource;
|
|
13
|
+
export declare function parsePluginInstallLink(value: string): PluginInstallSource;
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
export class PluginInstallError extends Error {
|
|
2
|
+
code;
|
|
3
|
+
statusCode;
|
|
4
|
+
constructor(code, message, statusCode = 400) {
|
|
5
|
+
super(message);
|
|
6
|
+
this.code = code;
|
|
7
|
+
this.statusCode = statusCode;
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
function invalidSource(message) {
|
|
11
|
+
throw new PluginInstallError("plugin_source_invalid", message);
|
|
12
|
+
}
|
|
13
|
+
function hasPublicGitHubOrigin(url) {
|
|
14
|
+
if (url.protocol !== "https:")
|
|
15
|
+
return false;
|
|
16
|
+
if (url.hostname !== "github.com")
|
|
17
|
+
return false;
|
|
18
|
+
if (url.port || url.username || url.password)
|
|
19
|
+
return false;
|
|
20
|
+
return !url.search && !url.hash;
|
|
21
|
+
}
|
|
22
|
+
function isPluginInstallEndpoint(url) {
|
|
23
|
+
if (url.protocol !== "abot:")
|
|
24
|
+
return false;
|
|
25
|
+
if (url.hostname !== "install")
|
|
26
|
+
return false;
|
|
27
|
+
if (!["", "/"].includes(url.pathname))
|
|
28
|
+
return false;
|
|
29
|
+
if (url.username || url.password || url.port)
|
|
30
|
+
return false;
|
|
31
|
+
return !url.hash;
|
|
32
|
+
}
|
|
33
|
+
function isRepositoryFolderComponent(part) {
|
|
34
|
+
if (part === "." || part === "..")
|
|
35
|
+
return false;
|
|
36
|
+
return /^[A-Za-z0-9_.-]+$/u.test(part);
|
|
37
|
+
}
|
|
38
|
+
export function parsePluginInstallSource(input) {
|
|
39
|
+
if (!input || typeof input !== "object" || Array.isArray(input))
|
|
40
|
+
return invalidSource("Enter a public GitHub repository URL.");
|
|
41
|
+
const value = input;
|
|
42
|
+
if (typeof value.repository !== "string" || value.repository.length > 512)
|
|
43
|
+
return invalidSource("Enter a public GitHub repository URL.");
|
|
44
|
+
let url;
|
|
45
|
+
try {
|
|
46
|
+
url = new URL(value.repository.trim());
|
|
47
|
+
}
|
|
48
|
+
catch {
|
|
49
|
+
return invalidSource("Enter a public GitHub repository URL.");
|
|
50
|
+
}
|
|
51
|
+
if (!hasPublicGitHubOrigin(url))
|
|
52
|
+
return invalidSource("Use an HTTPS repository URL on github.com.");
|
|
53
|
+
const match = /^\/([A-Za-z0-9][A-Za-z0-9-]{0,38})\/([A-Za-z0-9_.-]{1,100})\/?$/u.exec(url.pathname);
|
|
54
|
+
if (!match)
|
|
55
|
+
return invalidSource("Use the repository URL; enter its revision and folder separately.");
|
|
56
|
+
const repo = match[2].replace(/\.git$/u, "");
|
|
57
|
+
if (repo === "." || repo === ".." || !repo)
|
|
58
|
+
return invalidSource("Invalid repository name.");
|
|
59
|
+
const ref = value.ref === undefined ? "" : value.ref;
|
|
60
|
+
if (typeof ref !== "string" ||
|
|
61
|
+
ref.length > 200 ||
|
|
62
|
+
/[\u0000-\u0020\u007f\\?#]/u.test(ref))
|
|
63
|
+
return invalidSource("Enter a commit, tag or branch without spaces.");
|
|
64
|
+
const path = value.path === undefined ? "" : value.path;
|
|
65
|
+
if (typeof path !== "string" || path.length > 512)
|
|
66
|
+
return invalidSource("Enter a folder relative to the repository root.");
|
|
67
|
+
if (path && !path.split("/").every(isRepositoryFolderComponent))
|
|
68
|
+
return invalidSource("The plugin folder must be a relative path without traversal.");
|
|
69
|
+
return {
|
|
70
|
+
repository: `https://github.com/${match[1]}/${repo}`,
|
|
71
|
+
...(ref ? { ref } : {}),
|
|
72
|
+
...(path ? { path } : {}),
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
export function parsePluginInstallLink(value) {
|
|
76
|
+
if (value.length > 2048)
|
|
77
|
+
return invalidSource("The installation link is too long.");
|
|
78
|
+
let url;
|
|
79
|
+
try {
|
|
80
|
+
url = new URL(value);
|
|
81
|
+
}
|
|
82
|
+
catch {
|
|
83
|
+
return invalidSource("Invalid ABot installation link.");
|
|
84
|
+
}
|
|
85
|
+
if (!isPluginInstallEndpoint(url))
|
|
86
|
+
return invalidSource("Unsupported ABot installation link.");
|
|
87
|
+
const allowed = ["kind", "repo", "ref", "path"];
|
|
88
|
+
for (const key of url.searchParams.keys()) {
|
|
89
|
+
if (!allowed.includes(key) || url.searchParams.getAll(key).length !== 1)
|
|
90
|
+
return invalidSource("Unsupported installation link fields.");
|
|
91
|
+
}
|
|
92
|
+
if (url.searchParams.get("kind") !== "plugin")
|
|
93
|
+
return invalidSource("This installation link must select a plugin.");
|
|
94
|
+
return parsePluginInstallSource({
|
|
95
|
+
repository: url.searchParams.get("repo"),
|
|
96
|
+
ref: url.searchParams.get("ref") ?? "",
|
|
97
|
+
path: url.searchParams.get("path") ?? "",
|
|
98
|
+
});
|
|
99
|
+
}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
import type { ToolCatalogGroup, ToolDevelopmentRole, ToolEventPresentation, ToolNormalInvocationApproval, ToolNormalInvocationAttachmentInput, ToolNormalInvocationEffect, ToolNormalInvocationFixedValue, ToolNormalInvocationInput, ToolNormalInvocationPayload, ToolPayloadChannelSpec, ToolRoutingCapability, ToolRuntimePathBinding } from "../capabilities/tool-types.js";
|
|
1
|
+
import type { ToolCatalogGroup, ToolDevelopmentRole, ToolEventPresentation, ToolNormalInvocationApproval, ToolNormalInvocationAttachmentInput, ToolNormalInvocationEffect, ToolNormalInvocationFixedValue, ToolNormalInvocationInput, ToolNormalInvocationPayload, ToolNormalInvocationOutputChannels, ToolPayloadChannelSpec, ToolRoutingCapability, ToolRuntimePathBinding } from "../capabilities/tool-types.js";
|
|
2
2
|
export declare const AGENT_PLUGIN_MANIFEST_SCHEMA = "https://agent-plugins.org/schemas/1.0.0/plugin.schema.json";
|
|
3
3
|
export declare const ABOT_RUNTIME_EXTENSION = "ai.abot.runtime";
|
|
4
4
|
export declare const ABOT_RUNTIME_EXTENSION_VERSION: 1;
|
|
5
5
|
export type AgentPluginOperationManifest = Readonly<{
|
|
6
6
|
summary: string;
|
|
7
|
+
outputChannels?: ToolNormalInvocationOutputChannels;
|
|
7
8
|
input: ToolNormalInvocationInput;
|
|
8
9
|
selectionControlIds?: readonly string[];
|
|
9
10
|
effect: ToolNormalInvocationEffect;
|
|
@@ -11,3 +11,11 @@ export { SystemOperationError, type SystemTarget, type SystemTargetId, } from ".
|
|
|
11
11
|
export { createSystemHandlers } from "../computer-access/handlers.js";
|
|
12
12
|
export { type SystemTargetObservation, observeSystemTargets, } from "../computer-access/target-observation.js";
|
|
13
13
|
export type { ComputerAccessConnection, CompanionTarget, } from "../computer-access/client.js";
|
|
14
|
+
export { runSystemProcess } from "../computer-access/process-runner.js";
|
|
15
|
+
export { buildSystemProcessResult } from "../computer-access/process-result.js";
|
|
16
|
+
export type { SystemCommandOutputFactory } from "../computer-access/command-output.js";
|
|
17
|
+
export type { SystemProcessCapture } from "../computer-access/process-capture.js";
|
|
18
|
+
export type { SystemProcessResult } from "../computer-access/contracts.js";
|
|
19
|
+
export { createSystemOutputCapture, type SystemOutputReceipt } from "../computer-access/command-output-capture.js";
|
|
20
|
+
export { DEFAULT_SYSTEM_OUTPUT_RETENTION_MS, scheduleSystemOutputCleanup } from "../computer-access/command-output-retention.js";
|
|
21
|
+
export { SYSTEM_OUTPUT_CAPABILITY, SYSTEM_OUTPUT_CHUNK_BYTES, readSystemOutputTransfer } from "../computer-access/companion/command-output-protocol.js";
|
|
@@ -9,3 +9,8 @@ export { COMPUTER_CAPABILITY, readNativeComputerResult, } from "../computer-acce
|
|
|
9
9
|
export { SystemOperationError, } from "../computer-access/contracts.js";
|
|
10
10
|
export { createSystemHandlers } from "../computer-access/handlers.js";
|
|
11
11
|
export { observeSystemTargets, } from "../computer-access/target-observation.js";
|
|
12
|
+
export { runSystemProcess } from "../computer-access/process-runner.js";
|
|
13
|
+
export { buildSystemProcessResult } from "../computer-access/process-result.js";
|
|
14
|
+
export { createSystemOutputCapture } from "../computer-access/command-output-capture.js";
|
|
15
|
+
export { DEFAULT_SYSTEM_OUTPUT_RETENTION_MS, scheduleSystemOutputCleanup } from "../computer-access/command-output-retention.js";
|
|
16
|
+
export { SYSTEM_OUTPUT_CAPABILITY, SYSTEM_OUTPUT_CHUNK_BYTES, readSystemOutputTransfer } from "../computer-access/companion/command-output-protocol.js";
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { randomUUID } from "node:crypto";
|
|
2
2
|
import { assertSessionProjectUnchanged, copySessionProject, } from "../../sessions/project-binding.js";
|
|
3
3
|
import { assertValidSessionArtifactPathInputs, upsertSessionArtifactPaths, } from "../../sessions/artifact-paths.js";
|
|
4
|
-
import {
|
|
4
|
+
import { compactRequestEvents, getRequestFinalState, getSessionRequest, isSameMessageId, normalizeAfterSeq, normalizeCursor, normalizeLimit, normalizeSessionTitle, toClientReplayEvent, toEpochMs, toSessionListItem, } from "../../sessions/record/projection.js";
|
|
5
|
+
import { projectSessionSnapshot } from "../../sessions/snapshot.js";
|
|
5
6
|
import { assertValidRequestId, assertValidSessionId, createContextEntryId, defaultCreateMessageId, pruneSupersededContextEntries, } from "../../sessions/record/rules.js";
|
|
6
7
|
import { resolveSessionMemoryCheckpointCommit } from "../../sessions/memory/rules.js";
|
|
7
8
|
import { assertSessionKindUnchanged, sessionKindCreationFields } from "../../sessions/spark-session.js";
|
|
@@ -99,21 +100,10 @@ class InMemorySessionStore {
|
|
|
99
100
|
return session ? cloneSession(session) : null;
|
|
100
101
|
}
|
|
101
102
|
async getSessionSnapshot(sessionId, options = {}) {
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
return {
|
|
107
|
-
sessionId,
|
|
108
|
-
...(session.kind ? { kind: session.kind } : {}),
|
|
109
|
-
...(session.project ? { project: session.project } : {}),
|
|
110
|
-
title: session.title,
|
|
111
|
-
messages: filterMessagesAfter(clientVisibleMessages(session.messages), options.afterMessageId).map((message) => toSnapshotMessage(sessionId, message, session.requests ?? [])),
|
|
112
|
-
requests: options.includeRequests === false
|
|
113
|
-
? []
|
|
114
|
-
: (session.requests ?? []).map(toSnapshotRequest),
|
|
115
|
-
nextCursor: null,
|
|
116
|
-
};
|
|
103
|
+
assertValidSessionId(sessionId);
|
|
104
|
+
const session = this.sessions.get(sessionId);
|
|
105
|
+
// Copy only the projection; identities-only reads never clone history bodies/events.
|
|
106
|
+
return session ? structuredClone(projectSessionSnapshot(session, options)) : null;
|
|
117
107
|
}
|
|
118
108
|
async getRequestReplayById(requestId, afterSeq = 0) {
|
|
119
109
|
assertValidRequestId(requestId);
|
|
@@ -5,6 +5,7 @@ import { loadRuntimeConfig } from "../config.js";
|
|
|
5
5
|
import { DEFAULT_RUNTIME_CONFIG_FILE } from "../config/constants.js";
|
|
6
6
|
import { loadRuntimeConfigFile } from "../config/loader.js";
|
|
7
7
|
import { RUNTIME_CONFIG_JSON_SCHEMA } from "../config/schema.js";
|
|
8
|
+
import { resolveRuntimePath } from "../config/utils.js";
|
|
8
9
|
import { RuntimeConfigValidationError, validateRuntimeConfigFile, } from "../config/validation.js";
|
|
9
10
|
const NON_SECRET_TOKEN_CONFIG_KEYS = new Set([
|
|
10
11
|
"contextwindowtokens",
|
|
@@ -23,7 +24,7 @@ function isRecord(value) {
|
|
|
23
24
|
}
|
|
24
25
|
function resolveConfigPath(rootDir, configPath) {
|
|
25
26
|
return configPath
|
|
26
|
-
?
|
|
27
|
+
? resolveRuntimePath(rootDir, configPath)
|
|
27
28
|
: join(rootDir, DEFAULT_RUNTIME_CONFIG_FILE);
|
|
28
29
|
}
|
|
29
30
|
function redactConfigValue(value) {
|
|
@@ -8,6 +8,7 @@ export type AutomationCatalogOperation = Readonly<{
|
|
|
8
8
|
operationId: string;
|
|
9
9
|
contractVersion: number;
|
|
10
10
|
label: string;
|
|
11
|
+
outputChannels?: ToolNormalInvocationOperation["outputChannels"];
|
|
11
12
|
pluginName?: string;
|
|
12
13
|
catalogGroups: readonly ToolCatalogGroup[];
|
|
13
14
|
toolDescription?: string;
|
|
@@ -32,6 +33,7 @@ export declare function readAutomationCatalog(input: {
|
|
|
32
33
|
operationId: string;
|
|
33
34
|
contractVersion: number;
|
|
34
35
|
label: string;
|
|
36
|
+
outputChannels?: ToolNormalInvocationOperation["outputChannels"];
|
|
35
37
|
pluginName?: string;
|
|
36
38
|
catalogGroups: readonly ToolCatalogGroup[];
|
|
37
39
|
toolDescription?: string;
|
|
@@ -49,6 +51,7 @@ export declare function readAutomationCatalog(input: {
|
|
|
49
51
|
operationId: string;
|
|
50
52
|
contractVersion: number;
|
|
51
53
|
label: string;
|
|
54
|
+
outputChannels?: ToolNormalInvocationOperation["outputChannels"];
|
|
52
55
|
pluginName?: string;
|
|
53
56
|
catalogGroups: readonly ToolCatalogGroup[];
|
|
54
57
|
toolDescription?: string;
|
|
@@ -16,6 +16,7 @@ export async function readAutomationCatalog(input) {
|
|
|
16
16
|
operationId: operation.operationId,
|
|
17
17
|
contractVersion: registration.contract.version,
|
|
18
18
|
label: operation.summary,
|
|
19
|
+
...(operation.outputChannels ? { outputChannels: operation.outputChannels } : {}),
|
|
19
20
|
...(registration.definition.pluginName
|
|
20
21
|
? { pluginName: registration.definition.pluginName }
|
|
21
22
|
: {}),
|
|
@@ -10,11 +10,13 @@ export declare function projectAutomationModelDependencies(config: RuntimeConfig
|
|
|
10
10
|
admission: Readonly<{
|
|
11
11
|
policy: RequestExecutionPolicyId;
|
|
12
12
|
primaryProfileId?: string;
|
|
13
|
+
plugins?: import("../config/model-plugin-config.js").RuntimeModelPluginConfig;
|
|
13
14
|
source: "model_profile" | "default";
|
|
14
15
|
}>;
|
|
15
16
|
execution: Readonly<{
|
|
16
17
|
policy: RequestExecutionPolicyId;
|
|
17
18
|
primaryProfileId?: string;
|
|
19
|
+
plugins?: import("../config/model-plugin-config.js").RuntimeModelPluginConfig;
|
|
18
20
|
source: "model_profile" | "default";
|
|
19
21
|
}>;
|
|
20
22
|
invocations: ({
|
|
@@ -122,6 +122,7 @@ export declare function createAutomationService(options: {
|
|
|
122
122
|
operationId: string;
|
|
123
123
|
contractVersion: number;
|
|
124
124
|
label: string;
|
|
125
|
+
outputChannels?: import("../../capabilities/tool-types.js").ToolNormalInvocationOperation["outputChannels"];
|
|
125
126
|
pluginName?: string;
|
|
126
127
|
catalogGroups: readonly import("../../capabilities/tool-types.js").ToolCatalogGroup[];
|
|
127
128
|
toolDescription?: string;
|
|
@@ -139,6 +140,7 @@ export declare function createAutomationService(options: {
|
|
|
139
140
|
operationId: string;
|
|
140
141
|
contractVersion: number;
|
|
141
142
|
label: string;
|
|
143
|
+
outputChannels?: import("../../capabilities/tool-types.js").ToolNormalInvocationOperation["outputChannels"];
|
|
142
144
|
pluginName?: string;
|
|
143
145
|
catalogGroups: readonly import("../../capabilities/tool-types.js").ToolCatalogGroup[];
|
|
144
146
|
toolDescription?: string;
|
|
@@ -47,7 +47,7 @@ export declare const AUTOMATION_AUTHORING_REFERENCE: {
|
|
|
47
47
|
readonly steps: readonly [{
|
|
48
48
|
readonly key: "evidence";
|
|
49
49
|
readonly kind: "tool";
|
|
50
|
-
readonly title: "Read
|
|
50
|
+
readonly title: "Read text evidence";
|
|
51
51
|
readonly operation: {
|
|
52
52
|
readonly toolName: "catalog_tool";
|
|
53
53
|
readonly operationId: "catalog_operation";
|
|
@@ -63,7 +63,7 @@ export declare const AUTOMATION_AUTHORING_REFERENCE: {
|
|
|
63
63
|
readonly evidence: {
|
|
64
64
|
readonly kind: "node_result";
|
|
65
65
|
readonly nodeId: "$evidence";
|
|
66
|
-
readonly select: "
|
|
66
|
+
readonly select: "text";
|
|
67
67
|
};
|
|
68
68
|
};
|
|
69
69
|
}];
|
|
@@ -326,10 +326,15 @@ export declare const AUTOMATION_AUTHORING_REFERENCE: {
|
|
|
326
326
|
};
|
|
327
327
|
};
|
|
328
328
|
readonly channels: {
|
|
329
|
-
readonly text: "
|
|
330
|
-
readonly data: "
|
|
329
|
+
readonly text: "Saved text.";
|
|
330
|
+
readonly data: "Separate optional JSON; no implicit Text channel.";
|
|
331
331
|
};
|
|
332
|
-
readonly
|
|
332
|
+
readonly outputChannels: {
|
|
333
|
+
content: string;
|
|
334
|
+
metadata: string;
|
|
335
|
+
conditional: string;
|
|
336
|
+
};
|
|
337
|
+
readonly policy: "literal=constants; run_input=definition.inputs; node_result needs prior success. Follow operation.outputChannels; absent=unknown. Whole data needs no pointer. RFC6901 pointers need documented fields (/items/0; ~ as ~0, / as ~1). Never execute steps for output discovery.";
|
|
333
338
|
readonly files: "run_file resolves a new file for each run under its working directory; fileName is one portable filename, no path. source_files requires a configured source and an agent consumer. source_file index selects the frozen batch entry; field=snapshot_path|original_path|version.";
|
|
334
339
|
readonly parallel: "branch_results is agent-only after the referenced parallel join; it supplies each branch's settled tail output/status. A failed/skipped source has no successful node_result for downstream bindings.";
|
|
335
340
|
};
|
|
@@ -61,10 +61,10 @@ export const AUTOMATION_AUTHORING_REFERENCE = {
|
|
|
61
61
|
},
|
|
62
62
|
bounds: { batch: AUTOMATION_DRAFT_BATCH_LIMITS, recipe: AUTOMATION_CREATION_RECIPE_LIMITS, graph: AUTOMATION_GRAPH_LIMITS },
|
|
63
63
|
createPlanExample: { version: 1, settings: { objective: "Requested workflow outcome" }, steps: [
|
|
64
|
-
{ key: "evidence", kind: "tool", title: "Read
|
|
64
|
+
{ key: "evidence", kind: "tool", title: "Read text evidence", operation },
|
|
65
65
|
{ key: "analysis", kind: "agent", title: "Analyze evidence", modelProfileId: "catalog_model_id",
|
|
66
66
|
prompt: "Analyze the supplied evidence.",
|
|
67
|
-
inputs: { evidence: { kind: "node_result", nodeId: "$evidence", select: "
|
|
67
|
+
inputs: { evidence: { kind: "node_result", nodeId: "$evidence", select: "text" } } },
|
|
68
68
|
] },
|
|
69
69
|
creationRules: "New drafts use settings + ordered steps with unique keys and node shapes below. Runtime fills IDs, parents, indices and commands. Defaults: onFailure=stop; tool controls={}; agentMode=fast, roleInstructions='', inputs={}, tools=[], result={kind:'text'}. Override explicitly. Bind earlier results via $key. Parallel: {key,kind:'parallel',branches:[[steps],[steps]]}; branches are ordered and nonempty. Edit with commands; never mix commands and steps.",
|
|
70
70
|
creationCapacity: `Budget ${AUTOMATION_CREATION_RECIPE_LIMITS.compiledCommands}: leaf=1, parallel group=1, nonempty settings=1; total across all branches. With settings, max ${AUTOMATION_CREATION_RECIPE_LIMITS.compiledCommands - 1} flat steps. Oversize rejects atomically: automation_recipe_capacity_exceeded. Expand with later draft edits.`,
|
|
@@ -107,12 +107,13 @@ export const AUTOMATION_AUTHORING_REFERENCE = {
|
|
|
107
107
|
acceptanceExample: [{ field: "ready", equals: true }],
|
|
108
108
|
acceptancePolicy: "Optional acceptance compares required scalar JSON fields to string/number/boolean values of the same type. A mismatch fails the step under onFailure, not a conditional branch. Use [] to clear. No if/else graph construct exists.", },
|
|
109
109
|
bindings: { examples: bindings,
|
|
110
|
-
channels: { text: "
|
|
111
|
-
|
|
112
|
-
|
|
110
|
+
channels: { text: "Saved text.", data: "Separate optional JSON; no implicit Text channel." },
|
|
111
|
+
outputChannels: { content: "Substantive output; may be bounded/summarized.",
|
|
112
|
+
metadata: "IDs, status, counts or receipts; no content body.",
|
|
113
|
+
conditional: "Depends on operation inputs; do not assume content." },
|
|
114
|
+
policy: "literal=constants; run_input=definition.inputs; node_result needs prior success. Follow operation.outputChannels; absent=unknown. Whole data needs no pointer. RFC6901 pointers need documented fields (/items/0; ~ as ~0, / as ~1). Never execute steps for output discovery.",
|
|
113
115
|
files: "run_file resolves a new file for each run under its working directory; fileName is one portable filename, no path. source_files requires a configured source and an agent consumer. source_file index selects the frozen batch entry; field=snapshot_path|original_path|version.",
|
|
114
|
-
parallel: "branch_results is agent-only after the referenced parallel join; it supplies each branch's settled tail output/status. A failed/skipped source has no successful node_result for downstream bindings.",
|
|
115
|
-
},
|
|
116
|
+
parallel: "branch_results is agent-only after the referenced parallel join; it supplies each branch's settled tail output/status. A failed/skipped source has no successful node_result for downstream bindings.", },
|
|
116
117
|
definition: {
|
|
117
118
|
editableFields: ["title", "objective", "workingDirectory", "trigger", "source", "inputs", "limits"],
|
|
118
119
|
replacement: "A patch merges top-level fields only; inputs, controls, tools, result, acceptance, source, trigger and limits replace their entire field. Keep existing entries when changing part. Limits require all seven keys.",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/** Complete grammar is supplied as bounded passive evidence by prepare_draft. */
|
|
2
|
-
export declare const AUTOMATION_BUILDER_PAYLOAD_INSTRUCTIONS = "Return only JSON following authoringReference from prepare_draft. Use version:1 with commands:[{as,mutation}] for existing drafts. Save all related changes together; new nodes omit id and use earlier aliases in bindings. Outputs never pass implicitly. Agent inputs and tool controls are binding maps; payload is a separate binding. Match exact operation schemas and model IDs. Choose
|
|
2
|
+
export declare const AUTOMATION_BUILDER_PAYLOAD_INSTRUCTIONS = "Return only JSON following authoringReference from prepare_draft. Use version:1 with commands:[{as,mutation}] for existing drafts. Save all related changes together; new nodes omit id and use earlier aliases in bindings. Outputs never pass implicitly. Agent inputs and tool controls are binding maps; payload is a separate binding. Match exact operation schemas and model IDs. Choose output channels using the selected operation.outputChannels and authoringReference.bindings. Agents need declared JSON results for data. Inputs, limits, controls and selected tools replace their entire field. Never invent schedules or execute future steps.";
|
|
3
3
|
export declare const AUTOMATION_BUILDER_CREATE_SUMMARY = "Create the entire connected automation from settings and ordered steps in one write; Runtime generates IDs and positions. Discover with browse_catalog, then prepare_draft for exact schemas and the authoring reference for planJson. Returns revision 1, generated IDs and the exact saved draft for inspection; no empty draft or separate step edits are needed. Saves only a draft; the user grants permissions, publishes and runs it.";
|
|
4
4
|
export declare const AUTOMATION_BUILDER_APPLY_SUMMARY = "Save related edits atomically. Use the saved draft from read_draft or a builder receipt, with its revision as expectedRevision. operationRefs is the full inventory: select refs needed within preparation.operationRefLimit; use separate prepare_draft reads if needed. Returns the saved draft without another read. Invalid/stale plans save nothing. Single-field edits use this operation too. Users retain permission, publication and run control.";
|
|
5
5
|
/** Creation describes workflow content; the capability compiles mechanical mutation structure. */
|
|
6
|
-
export declare const AUTOMATION_BUILDER_CREATION_INSTRUCTIONS = "Return only JSON using {\"version\":1,\"settings\":{...},\"steps\":[{\"key\":\"first\",\"kind\":\"tool\"|\"agent\",...}]}. Follow authoringReference.createPlanExample and creationRules. settings is optional; steps are ordered with unique keys. Runtime generates IDs, parents, indices and mutation wrappers. Bind prior $key results explicitly. Tool steps need title and exact operation; agent steps need title, exact modelProfileId and prompt. Use documented defaults and tool schemas. Choose
|
|
6
|
+
export declare const AUTOMATION_BUILDER_CREATION_INSTRUCTIONS = "Return only JSON using {\"version\":1,\"settings\":{...},\"steps\":[{\"key\":\"first\",\"kind\":\"tool\"|\"agent\",...}]}. Follow authoringReference.createPlanExample and creationRules. settings is optional; steps are ordered with unique keys. Runtime generates IDs, parents, indices and mutation wrappers. Bind prior $key results explicitly. Tool steps need title and exact operation; agent steps need title, exact modelProfileId and prompt. Use documented defaults and tool schemas. Choose output channels using the selected operation.outputChannels and authoringReference.bindings. Agents need declared JSON results for data. Result and acceptance are sibling agent fields. A parallel step is {key,kind:parallel,branches:[stepArrays]}. Leave unspecified timing to the user. Save only an inactive draft; never execute future steps.";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/** Complete grammar is supplied as bounded passive evidence by prepare_draft. */
|
|
2
|
-
export const AUTOMATION_BUILDER_PAYLOAD_INSTRUCTIONS = "Return only JSON following authoringReference from prepare_draft. Use version:1 with commands:[{as,mutation}] for existing drafts. Save all related changes together; new nodes omit id and use earlier aliases in bindings. Outputs never pass implicitly. Agent inputs and tool controls are binding maps; payload is a separate binding. Match exact operation schemas and model IDs. Choose
|
|
2
|
+
export const AUTOMATION_BUILDER_PAYLOAD_INSTRUCTIONS = "Return only JSON following authoringReference from prepare_draft. Use version:1 with commands:[{as,mutation}] for existing drafts. Save all related changes together; new nodes omit id and use earlier aliases in bindings. Outputs never pass implicitly. Agent inputs and tool controls are binding maps; payload is a separate binding. Match exact operation schemas and model IDs. Choose output channels using the selected operation.outputChannels and authoringReference.bindings. Agents need declared JSON results for data. Inputs, limits, controls and selected tools replace their entire field. Never invent schedules or execute future steps.";
|
|
3
3
|
export const AUTOMATION_BUILDER_CREATE_SUMMARY = "Create the entire connected automation from settings and ordered steps in one write; Runtime generates IDs and positions. Discover with browse_catalog, then prepare_draft for exact schemas and the authoring reference for planJson. Returns revision 1, generated IDs and the exact saved draft for inspection; no empty draft or separate step edits are needed. Saves only a draft; the user grants permissions, publishes and runs it.";
|
|
4
4
|
export const AUTOMATION_BUILDER_APPLY_SUMMARY = "Save related edits atomically. Use the saved draft from read_draft or a builder receipt, with its revision as expectedRevision. operationRefs is the full inventory: select refs needed within preparation.operationRefLimit; use separate prepare_draft reads if needed. Returns the saved draft without another read. Invalid/stale plans save nothing. Single-field edits use this operation too. Users retain permission, publication and run control.";
|
|
5
5
|
/** Creation describes workflow content; the capability compiles mechanical mutation structure. */
|
|
6
|
-
export const AUTOMATION_BUILDER_CREATION_INSTRUCTIONS = "Return only JSON using {\"version\":1,\"settings\":{...},\"steps\":[{\"key\":\"first\",\"kind\":\"tool\"|\"agent\",...}]}. Follow authoringReference.createPlanExample and creationRules. settings is optional; steps are ordered with unique keys. Runtime generates IDs, parents, indices and mutation wrappers. Bind prior $key results explicitly. Tool steps need title and exact operation; agent steps need title, exact modelProfileId and prompt. Use documented defaults and tool schemas. Choose
|
|
6
|
+
export const AUTOMATION_BUILDER_CREATION_INSTRUCTIONS = "Return only JSON using {\"version\":1,\"settings\":{...},\"steps\":[{\"key\":\"first\",\"kind\":\"tool\"|\"agent\",...}]}. Follow authoringReference.createPlanExample and creationRules. settings is optional; steps are ordered with unique keys. Runtime generates IDs, parents, indices and mutation wrappers. Bind prior $key results explicitly. Tool steps need title and exact operation; agent steps need title, exact modelProfileId and prompt. Use documented defaults and tool schemas. Choose output channels using the selected operation.outputChannels and authoringReference.bindings. Agents need declared JSON results for data. Result and acceptance are sibling agent fields. A parallel step is {key,kind:parallel,branches:[stepArrays]}. Leave unspecified timing to the user. Save only an inactive draft; never execute future steps.";
|
|
@@ -22,7 +22,7 @@ export declare const automationBuilderToolContract: {
|
|
|
22
22
|
};
|
|
23
23
|
readonly selectionControlIds: readonly ["title"];
|
|
24
24
|
readonly payload: {
|
|
25
|
-
readonly instructions: "Return only JSON using {\"version\":1,\"settings\":{...},\"steps\":[{\"key\":\"first\",\"kind\":\"tool\"|\"agent\",...}]}. Follow authoringReference.createPlanExample and creationRules. settings is optional; steps are ordered with unique keys. Runtime generates IDs, parents, indices and mutation wrappers. Bind prior $key results explicitly. Tool steps need title and exact operation; agent steps need title, exact modelProfileId and prompt. Use documented defaults and tool schemas. Choose
|
|
25
|
+
readonly instructions: "Return only JSON using {\"version\":1,\"settings\":{...},\"steps\":[{\"key\":\"first\",\"kind\":\"tool\"|\"agent\",...}]}. Follow authoringReference.createPlanExample and creationRules. settings is optional; steps are ordered with unique keys. Runtime generates IDs, parents, indices and mutation wrappers. Bind prior $key results explicitly. Tool steps need title and exact operation; agent steps need title, exact modelProfileId and prompt. Use documented defaults and tool schemas. Choose output channels using the selected operation.outputChannels and authoringReference.bindings. Agents need declared JSON results for data. Result and acceptance are sibling agent fields. A parallel step is {key,kind:parallel,branches:[stepArrays]}. Leave unspecified timing to the user. Save only an inactive draft; never execute future steps.";
|
|
26
26
|
readonly kind: "raw_text";
|
|
27
27
|
readonly param: "planJson";
|
|
28
28
|
readonly minBytes: 2;
|
|
@@ -59,7 +59,7 @@ export declare const automationBuilderToolContract: {
|
|
|
59
59
|
readonly param: "planJson";
|
|
60
60
|
readonly minBytes: 2;
|
|
61
61
|
readonly maxBytes: number;
|
|
62
|
-
readonly instructions: "Return only JSON following authoringReference from prepare_draft. Use version:1 with commands:[{as,mutation}] for existing drafts. Save all related changes together; new nodes omit id and use earlier aliases in bindings. Outputs never pass implicitly. Agent inputs and tool controls are binding maps; payload is a separate binding. Match exact operation schemas and model IDs. Choose
|
|
62
|
+
readonly instructions: "Return only JSON following authoringReference from prepare_draft. Use version:1 with commands:[{as,mutation}] for existing drafts. Save all related changes together; new nodes omit id and use earlier aliases in bindings. Outputs never pass implicitly. Agent inputs and tool controls are binding maps; payload is a separate binding. Match exact operation schemas and model IDs. Choose output channels using the selected operation.outputChannels and authoringReference.bindings. Agents need declared JSON results for data. Inputs, limits, controls and selected tools replace their entire field. Never invent schedules or execute future steps.";
|
|
63
63
|
};
|
|
64
64
|
}];
|
|
65
65
|
};
|
|
@@ -147,7 +147,7 @@ export async function readAutomationAuthoringCatalogOperation(service, automatio
|
|
|
147
147
|
const selected = catalog.grantableOperations.find(matchesReference);
|
|
148
148
|
if (!selected)
|
|
149
149
|
throw new Error("automation_catalog_operation_not_found");
|
|
150
|
-
const { fixedParams: _fixedParams, ...operation } = selected;
|
|
150
|
+
const { fixedParams: _fixedParams, outputChannels: _outputChannels, ...operation } = selected;
|
|
151
151
|
return {
|
|
152
152
|
kind: "automation_authoring_catalog_operation_v1",
|
|
153
153
|
catalogScope: automationAuthoringCatalogScope(automationId),
|