@abot-ai/runtime 1.8.0 → 1.9.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 +216 -222
- package/dist/scripts/runtime-setup-files.js +46 -2
- package/dist/src/capabilities/tool-definition-validator/definition-parser.js +8 -0
- package/dist/src/capabilities/tool-types.d.ts +4 -0
- package/dist/src/model-gateway/client/chat.js +9 -5
- package/dist/src/model-gateway/client/invocation-error.d.ts +9 -0
- package/dist/src/model-gateway/client/invocation-error.js +30 -0
- package/dist/src/model-gateway/client/stream-consumer.js +9 -2
- package/dist/src/model-gateway/client/stream-parser.js +2 -1
- 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/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/runtime/adapters/registered-tool-normal-invocations/execution/approval.d.ts +5 -1
- package/dist/src/runtime/adapters/registered-tool-normal-invocations/execution/approval.js +15 -1
- package/dist/src/runtime/adapters/registered-tool-normal-invocations/execution/prepared-execution.js +7 -5
- package/dist/src/runtime/adapters/registered-tool-normal-invocations/execution/prepared-snapshot.js +9 -2
- 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/automations/service.d.ts +1 -1
- package/dist/src/runtime/capabilities/automation-builder/tool-module.js +4 -4
- package/dist/src/runtime/capabilities/automations/draft-index.d.ts +1 -1
- package/dist/src/runtime/capabilities/automations/tool-module.js +4 -4
- package/dist/src/runtime/capabilities/core-tool-contracts.d.ts +29 -0
- package/dist/src/runtime/capabilities/core-tool-contracts.js +38 -0
- package/dist/src/runtime/capabilities/knowledge-skills/read-many.d.ts +4 -0
- package/dist/src/runtime/capabilities/knowledge-skills/read-many.js +21 -0
- package/dist/src/runtime/capabilities/knowledge-skills/read-targets.d.ts +13 -0
- package/dist/src/runtime/capabilities/knowledge-skills/read-targets.js +44 -0
- package/dist/src/runtime/capabilities/knowledge-skills/tool-contract.d.ts +141 -0
- package/dist/src/runtime/capabilities/knowledge-skills/tool-contract.js +58 -0
- package/dist/src/runtime/capabilities/knowledge-skills/tool-module.d.ts +4 -0
- package/dist/src/runtime/capabilities/knowledge-skills/tool-module.js +78 -0
- package/dist/src/runtime/capabilities/knowledge-skills/tool-output.d.ts +12 -0
- package/dist/src/runtime/capabilities/knowledge-skills/tool-output.js +21 -0
- package/dist/src/runtime/capabilities/knowledge-skills/write-contract.d.ts +77 -0
- package/dist/src/runtime/capabilities/knowledge-skills/write-contract.js +28 -0
- package/dist/src/runtime/capabilities/knowledge-skills/write-operations.d.ts +3 -0
- package/dist/src/runtime/capabilities/knowledge-skills/write-operations.js +34 -0
- package/dist/src/runtime/capabilities/scheduling/tool-module.js +3 -3
- package/dist/src/runtime/capabilities/tool-availability.js +6 -0
- package/dist/src/runtime/composition.d.ts +5 -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/context/capability-result-compaction-source.d.ts +3 -1
- package/dist/src/runtime/context/capability-result-compaction-source.js +13 -1
- package/dist/src/runtime/context/core-skill-read-context.d.ts +16 -0
- package/dist/src/runtime/context/core-skill-read-context.js +76 -0
- package/dist/src/runtime/context/exact-evidence-match.d.ts +3 -0
- package/dist/src/runtime/context/exact-evidence-match.js +34 -0
- package/dist/src/runtime/context/model-step-compaction.js +20 -6
- package/dist/src/runtime/context/semantic-compaction/core-skill-read-source.d.ts +9 -0
- package/dist/src/runtime/context/semantic-compaction/core-skill-read-source.js +38 -0
- package/dist/src/runtime/context/semantic-compaction/generation-contracts.d.ts +2 -0
- package/dist/src/runtime/context/semantic-compaction/prompt.js +7 -7
- package/dist/src/runtime/context/semantic-compaction/run.js +10 -3
- package/dist/src/runtime/context/semantic-compaction/super-source-integrity.js +33 -3
- package/dist/src/runtime/context/session-artifact-paths.d.ts +2 -1
- package/dist/src/runtime/context/session-artifact-paths.js +2 -1
- package/dist/src/runtime/context/session-memory/model-step-controller.d.ts +2 -2
- package/dist/src/runtime/context/super-worker-compaction-failure.d.ts +1 -1
- package/dist/src/runtime/context/super-worker-compaction-failure.js +2 -1
- package/dist/src/runtime/context/super-worker-compaction-sidecar.d.ts +2 -1
- package/dist/src/runtime/context/super-worker-compaction-sidecar.js +9 -3
- package/dist/src/runtime/default-environment-adapters.d.ts +2 -1
- package/dist/src/runtime/default-environment-adapters.js +5 -1
- package/dist/src/runtime/knowledge-skills/available-skills-projection.d.ts +17 -0
- package/dist/src/runtime/knowledge-skills/available-skills-projection.js +66 -0
- package/dist/src/runtime/knowledge-skills/available-skills.d.ts +7 -0
- package/dist/src/runtime/knowledge-skills/available-skills.js +17 -0
- package/dist/src/runtime/knowledge-skills/builtins/abot-studio.d.ts +2 -0
- package/dist/src/runtime/knowledge-skills/builtins/abot-studio.js +27 -0
- package/dist/src/runtime/knowledge-skills/builtins/computer-use.d.ts +2 -0
- package/dist/src/runtime/knowledge-skills/builtins/computer-use.js +34 -0
- package/dist/src/runtime/knowledge-skills/builtins/skill-creator.d.ts +2 -0
- package/dist/src/runtime/knowledge-skills/builtins/skill-creator.js +29 -0
- package/dist/src/runtime/knowledge-skills/builtins/technical-work.d.ts +2 -0
- package/dist/src/runtime/knowledge-skills/builtins/technical-work.js +27 -0
- package/dist/src/runtime/knowledge-skills/catalog.d.ts +2 -0
- package/dist/src/runtime/knowledge-skills/catalog.js +12 -0
- package/dist/src/runtime/knowledge-skills/personal-contracts.d.ts +48 -0
- package/dist/src/runtime/knowledge-skills/personal-contracts.js +29 -0
- package/dist/src/runtime/knowledge-skills/personal-documents.d.ts +6 -0
- package/dist/src/runtime/knowledge-skills/personal-documents.js +56 -0
- package/dist/src/runtime/knowledge-skills/personal-management.d.ts +9 -0
- package/dist/src/runtime/knowledge-skills/personal-management.js +64 -0
- package/dist/src/runtime/knowledge-skills/personal-repository.d.ts +6 -0
- package/dist/src/runtime/knowledge-skills/personal-repository.js +76 -0
- package/dist/src/runtime/knowledge-skills/personal-store.d.ts +4 -0
- package/dist/src/runtime/knowledge-skills/personal-store.js +33 -0
- package/dist/src/runtime/knowledge-skills/read-evidence.d.ts +3 -0
- package/dist/src/runtime/knowledge-skills/read-evidence.js +13 -0
- package/dist/src/runtime/knowledge-skills/store.d.ts +19 -0
- package/dist/src/runtime/knowledge-skills/store.js +41 -0
- package/dist/src/runtime/local-application.d.ts +2 -1
- package/dist/src/runtime/local-host/app-service-dispatch.d.ts +1 -0
- package/dist/src/runtime/local-host/app-service-dispatch.js +5 -0
- package/dist/src/runtime/local-host/client-services.d.ts +3 -1
- package/dist/src/runtime/local-host/client-services.js +3 -2
- package/dist/src/runtime/long-term-memory/conversation-authoring/context.d.ts +7 -1
- package/dist/src/runtime/long-term-memory/conversation-authoring/context.js +51 -25
- package/dist/src/runtime/long-term-memory/conversation-authoring/plain-text-context.d.ts +5 -0
- package/dist/src/runtime/long-term-memory/conversation-authoring/plain-text-context.js +28 -0
- package/dist/src/runtime/long-term-memory/initial-context.d.ts +18 -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/model/context-compaction-admission.d.ts +1 -0
- package/dist/src/runtime/model/context-compaction-admission.js +35 -1
- package/dist/src/runtime/model/context-compaction-contracts.d.ts +9 -1
- package/dist/src/runtime/model/invoke-step.js +6 -2
- package/dist/src/runtime/model/provider-failure.d.ts +13 -0
- package/dist/src/runtime/model/provider-failure.js +37 -0
- package/dist/src/runtime/orchestration/role-calls/activation-budget.js +1 -0
- package/dist/src/runtime/orchestration/role-calls/candidate-validation.js +4 -1
- package/dist/src/runtime/orchestration/role-calls/checkpoint-state.d.ts +1 -1
- package/dist/src/runtime/orchestration/role-calls/checkpoint-state.js +7 -3
- package/dist/src/runtime/orchestration/role-calls/command-decoder.js +3 -0
- package/dist/src/runtime/orchestration/role-calls/command-dispatch/skill-read-transition.d.ts +4 -0
- package/dist/src/runtime/orchestration/role-calls/command-dispatch/skill-read-transition.js +48 -0
- package/dist/src/runtime/orchestration/role-calls/command-dispatch.js +3 -0
- package/dist/src/runtime/orchestration/role-calls/contracts.d.ts +8 -4
- package/dist/src/runtime/orchestration/role-calls/contracts.js +3 -3
- 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/role-calls/skill-read.d.ts +47 -0
- package/dist/src/runtime/orchestration/role-calls/skill-read.js +196 -0
- package/dist/src/runtime/orchestration/role-executors/activation/model-output-failure.d.ts +1 -1
- package/dist/src/runtime/orchestration/role-executors/activation/model-output-failure.js +4 -2
- package/dist/src/runtime/orchestration/worker-capabilities/binding/create-binding.js +4 -1
- package/dist/src/runtime/orchestration/worker-capabilities/contracts.d.ts +4 -2
- package/dist/src/runtime/orchestration/worker-capabilities/contracts.js +2 -2
- package/dist/src/runtime/orchestration/worker-capabilities/execution/approval-group.js +10 -4
- 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/orchestration/worker-capabilities/payload-compaction-transport.d.ts +2 -0
- package/dist/src/runtime/orchestration/worker-capabilities/payload-compaction-transport.js +7 -2
- package/dist/src/runtime/orchestration/worker-capabilities/supervisor-skill-authority.d.ts +19 -0
- package/dist/src/runtime/orchestration/worker-capabilities/supervisor-skill-authority.js +43 -0
- package/dist/src/runtime/plugins/loader.js +7 -6
- package/dist/src/runtime/plugins/manifest-projection.js +3 -0
- package/dist/src/runtime/request/approval-wait/preflight.js +1 -0
- package/dist/src/runtime/request/bound-runtime-handler.js +1 -0
- package/dist/src/runtime/request/capability-execution-freshness.js +6 -1
- package/dist/src/runtime/request/contracts.d.ts +2 -0
- package/dist/src/runtime/request/execution-agent-root-execution.js +11 -1
- package/dist/src/runtime/request/execution-payload-compacted-evidence.d.ts +2 -2
- package/dist/src/runtime/request/execution-scope-surfaces.d.ts +2 -0
- package/dist/src/runtime/request/execution-scope-surfaces.js +7 -0
- package/dist/src/runtime/request/execution-scope.d.ts +6 -2
- package/dist/src/runtime/request/execution-scope.js +11 -0
- package/dist/src/runtime/request/payload-settled-evidence.d.ts +11 -0
- package/dist/src/runtime/request/payload-settled-evidence.js +29 -0
- package/dist/src/runtime/request/prepared-execution.js +2 -0
- package/dist/src/runtime/request/role-call-delegation-events.d.ts +19 -0
- package/dist/src/runtime/request/role-call-delegation-events.js +52 -0
- package/dist/src/runtime/request/role-call-return-events.d.ts +19 -0
- package/dist/src/runtime/request/role-call-return-events.js +63 -0
- package/dist/src/runtime/request/role-executor-composition.js +2 -2
- package/dist/src/runtime/request/root-capability-binding.d.ts +24 -0
- package/dist/src/runtime/request/root-capability-binding.js +57 -0
- package/dist/src/runtime/request/root-capability-catalog.d.ts +16 -0
- package/dist/src/runtime/request/root-capability-catalog.js +20 -0
- package/dist/src/runtime/request/root-contract.d.ts +13 -1
- package/dist/src/runtime/request/root-execution-kernel.js +36 -68
- package/dist/src/runtime/request/root-reference-action.d.ts +15 -0
- package/dist/src/runtime/request/root-reference-action.js +48 -0
- package/dist/src/runtime/request/root-skill-read.d.ts +13 -0
- package/dist/src/runtime/request/root-skill-read.js +102 -0
- package/dist/src/runtime/request/runner.js +19 -3
- package/dist/src/runtime/request/super-payload-context-failure.js +13 -4
- package/dist/src/runtime/request/supervisor-root-execution.js +54 -1
- package/dist/src/runtime/request/supervisor-skill-edit-target.d.ts +9 -0
- package/dist/src/runtime/request/supervisor-skill-edit-target.js +25 -0
- package/dist/src/runtime/request/supervisor-skill-payload-context.d.ts +21 -0
- package/dist/src/runtime/request/supervisor-skill-payload-context.js +91 -0
- package/dist/src/runtime/request/supervisor-skill-write-preparation.d.ts +25 -0
- package/dist/src/runtime/request/supervisor-skill-write-preparation.js +71 -0
- package/dist/src/runtime/request/worker-capability-composition.d.ts +4 -1
- package/dist/src/runtime/request/worker-capability-composition.js +4 -1
- package/dist/src/runtime/request/worker-capability-payload.d.ts +1 -1
- package/dist/src/runtime/request/worker-capability-payload.js +44 -37
- package/dist/src/runtime/runtime-environment.d.ts +2 -0
- package/dist/src/runtime/runtime-environment.js +12 -1
- package/dist/src/runtime/scheduler/contracts.d.ts +4 -0
- package/dist/src/runtime/scheduler/run-list-filter.d.ts +11 -0
- package/dist/src/runtime/scheduler/run-list-filter.js +56 -0
- package/dist/src/runtime/scheduler/run-list-query.d.ts +2 -2
- package/dist/src/runtime/scheduler/run-list-query.js +4 -1
- package/dist/src/runtime/steps/auditor-decision/contracts.d.ts +2 -0
- package/dist/src/runtime/steps/auditor-decision/evidence-representation.d.ts +2 -2
- package/dist/src/runtime/steps/auditor-decision/evidence-representation.js +2 -34
- package/dist/src/runtime/steps/auditor-decision/input.js +21 -3
- package/dist/src/runtime/steps/auditor-decision/projection.js +5 -0
- package/dist/src/runtime/steps/auditor-decision/prompt.d.ts +1 -1
- package/dist/src/runtime/steps/auditor-decision/prompt.js +14 -3
- package/dist/src/runtime/steps/capability-execution-guidance.d.ts +7 -0
- package/dist/src/runtime/steps/capability-execution-guidance.js +28 -0
- package/dist/src/runtime/steps/capability-execution-instructions.d.ts +0 -2
- package/dist/src/runtime/steps/capability-execution-instructions.js +0 -2
- package/dist/src/runtime/steps/execution-agent/capability-result-context.d.ts +5 -2
- package/dist/src/runtime/steps/execution-agent/capability-result-context.js +22 -3
- package/dist/src/runtime/steps/execution-agent/compaction.d.ts +3 -2
- package/dist/src/runtime/steps/execution-agent/compaction.js +9 -1
- 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 +2 -0
- package/dist/src/runtime/steps/execution-agent/input.d.ts +2 -0
- package/dist/src/runtime/steps/execution-agent/input.js +35 -2
- 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 +42 -41
- package/dist/src/runtime/steps/execution-agent/refinement-input.d.ts +1 -0
- package/dist/src/runtime/steps/execution-agent/refinement-prompt.js +4 -1
- package/dist/src/runtime/steps/execution-agent/response-prompt.js +1 -0
- package/dist/src/runtime/steps/execution-agent/response-run.js +6 -12
- package/dist/src/runtime/steps/execution-agent/run.js +5 -2
- package/dist/src/runtime/steps/execution-agent/state-context.d.ts +2 -3
- package/dist/src/runtime/steps/execution-agent/state-context.js +3 -40
- package/dist/src/runtime/steps/knowledge-skill-instructions.d.ts +3 -0
- package/dist/src/runtime/steps/knowledge-skill-instructions.js +3 -0
- package/dist/src/runtime/steps/planner-decision/capability-brief.d.ts +4 -2
- package/dist/src/runtime/steps/planner-decision/capability-brief.js +5 -1
- package/dist/src/runtime/steps/planner-decision/input.d.ts +2 -2
- package/dist/src/runtime/steps/planner-decision/input.js +7 -1
- package/dist/src/runtime/steps/planner-decision/prompt.js +29 -49
- package/dist/src/runtime/steps/planner-graph/input.d.ts +2 -2
- package/dist/src/runtime/steps/planner-graph/input.js +9 -8
- package/dist/src/runtime/steps/planner-graph/prompt.js +2 -2
- package/dist/src/runtime/steps/planner-graph/run.d.ts +2 -2
- package/dist/src/runtime/steps/planner-graph/run.js +5 -5
- package/dist/src/runtime/steps/planner-graph/skill-guidance.d.ts +5 -0
- package/dist/src/runtime/steps/planner-graph/skill-guidance.js +62 -0
- package/dist/src/runtime/steps/reviewer-decision/final-evidence.d.ts +1 -0
- package/dist/src/runtime/steps/reviewer-decision/final-evidence.js +3 -1
- package/dist/src/runtime/steps/reviewer-decision/input.d.ts +3 -1
- package/dist/src/runtime/steps/reviewer-decision/input.js +2 -22
- package/dist/src/runtime/steps/reviewer-decision/model-context.d.ts +21 -0
- package/dist/src/runtime/steps/reviewer-decision/model-context.js +32 -1
- package/dist/src/runtime/steps/reviewer-decision/projection.js +4 -0
- package/dist/src/runtime/steps/reviewer-decision/prompt.d.ts +1 -1
- package/dist/src/runtime/steps/reviewer-decision/prompt.js +15 -4
- package/dist/src/runtime/steps/reviewer-decision/run.d.ts +2 -0
- package/dist/src/runtime/steps/reviewer-decision/run.js +6 -0
- package/dist/src/runtime/steps/skill-read-decision.d.ts +34 -0
- package/dist/src/runtime/steps/skill-read-decision.js +91 -0
- package/dist/src/runtime/steps/supervisor-decision/artifact-paths.d.ts +22 -0
- package/dist/src/runtime/steps/supervisor-decision/artifact-paths.js +132 -0
- package/dist/src/runtime/steps/supervisor-decision/capability-brief.d.ts +2 -0
- package/dist/src/runtime/steps/supervisor-decision/capability-brief.js +9 -2
- package/dist/src/runtime/steps/supervisor-decision/contracts.d.ts +12 -3
- package/dist/src/runtime/steps/supervisor-decision/contracts.js +3 -0
- package/dist/src/runtime/steps/supervisor-decision/decision-phases.d.ts +37 -0
- package/dist/src/runtime/steps/supervisor-decision/decision-phases.js +124 -0
- package/dist/src/runtime/steps/supervisor-decision/diagnostics.d.ts +5 -1
- package/dist/src/runtime/steps/supervisor-decision/diagnostics.js +4 -0
- package/dist/src/runtime/steps/supervisor-decision/format.d.ts +1 -0
- package/dist/src/runtime/steps/supervisor-decision/format.js +2 -0
- package/dist/src/runtime/steps/supervisor-decision/input.d.ts +8 -1
- package/dist/src/runtime/steps/supervisor-decision/input.js +35 -11
- package/dist/src/runtime/steps/supervisor-decision/parser.d.ts +1 -0
- package/dist/src/runtime/steps/supervisor-decision/parser.js +11 -0
- package/dist/src/runtime/steps/supervisor-decision/preparation-input.d.ts +26 -0
- package/dist/src/runtime/steps/supervisor-decision/preparation-input.js +39 -0
- package/dist/src/runtime/steps/supervisor-decision/preparation.d.ts +17 -0
- package/dist/src/runtime/steps/supervisor-decision/preparation.js +65 -0
- package/dist/src/runtime/steps/supervisor-decision/presentation.d.ts +13 -0
- package/dist/src/runtime/steps/supervisor-decision/presentation.js +47 -0
- package/dist/src/runtime/steps/supervisor-decision/prompt.d.ts +5 -0
- package/dist/src/runtime/steps/supervisor-decision/prompt.js +97 -106
- package/dist/src/runtime/steps/supervisor-decision/response-recommendation.d.ts +2 -0
- package/dist/src/runtime/steps/supervisor-decision/response-recommendation.js +2 -0
- package/dist/src/runtime/steps/supervisor-decision/resume.d.ts +3 -0
- package/dist/src/runtime/steps/supervisor-decision/resume.js +20 -0
- package/dist/src/runtime/steps/supervisor-decision/run.d.ts +7 -0
- package/dist/src/runtime/steps/supervisor-decision/run.js +76 -158
- package/dist/src/runtime/steps/supervisor-decision/skill-selection-input.d.ts +21 -0
- package/dist/src/runtime/steps/supervisor-decision/skill-selection-input.js +29 -0
- package/dist/src/runtime/steps/supervisor-decision/skill-selection.d.ts +16 -0
- package/dist/src/runtime/steps/supervisor-decision/skill-selection.js +44 -0
- package/dist/src/runtime/steps/supervisor-response/input.d.ts +3 -0
- package/dist/src/runtime/steps/supervisor-response/input.js +5 -0
- package/dist/src/runtime/steps/supervisor-response/prompt.js +2 -0
- package/dist/src/runtime/steps/supervisor-response/response-recommendation.d.ts +3 -0
- package/dist/src/runtime/steps/supervisor-response/response-recommendation.js +24 -4
- package/dist/src/runtime/steps/supervisor-response/run.d.ts +7 -0
- package/dist/src/runtime/steps/supervisor-response/run.js +3 -6
- package/dist/src/runtime/steps/supervisor-skill-authoring/contract.d.ts +43 -0
- package/dist/src/runtime/steps/supervisor-skill-authoring/contract.js +85 -0
- package/dist/src/runtime/steps/supervisor-skill-authoring/input.d.ts +35 -0
- package/dist/src/runtime/steps/supervisor-skill-authoring/input.js +87 -0
- package/dist/src/runtime/steps/supervisor-skill-authoring/run.d.ts +10 -0
- package/dist/src/runtime/steps/supervisor-skill-authoring/run.js +35 -0
- package/dist/src/runtime/steps/supervisor-skill-instructions.d.ts +4 -0
- package/dist/src/runtime/steps/supervisor-skill-instructions.js +4 -0
- package/dist/src/runtime/steps/worker-capability-scope-decision.js +14 -1
- package/dist/src/runtime/steps/worker-decision/contracts.d.ts +1 -0
- package/dist/src/runtime/steps/worker-decision/input/execution-guidance.d.ts +5 -0
- package/dist/src/runtime/steps/worker-decision/input/execution-guidance.js +31 -0
- package/dist/src/runtime/steps/worker-decision/input/prompt-context.js +2 -25
- package/dist/src/runtime/steps/worker-decision/input/reference-context.js +4 -0
- package/dist/src/runtime/steps/worker-decision/prompt.js +6 -2
- package/dist/src/runtime/steps/worker-decision/result-author.js +6 -0
- package/dist/src/web-ui/app/ARCHITECTURE.md +1 -1
- package/dist/src/web-ui/app/app-bootstrap.js +3 -0
- package/dist/src/web-ui/app/app.js +7 -1
- package/dist/src/web-ui/app/components/automations/run-history-controls.js +77 -0
- package/dist/src/web-ui/app/components/automations/run-history.js +55 -0
- package/dist/src/web-ui/app/components/automations/run.js +3 -8
- package/dist/src/web-ui/app/components/automations/timeline.js +3 -2
- package/dist/src/web-ui/app/components/automations/workspace.js +11 -2
- package/dist/src/web-ui/app/components/conversation-role-cards.js +27 -0
- package/dist/src/web-ui/app/components/conversation-role-delegations.d.ts +12 -0
- package/dist/src/web-ui/app/components/conversation-role-delegations.js +24 -0
- package/dist/src/web-ui/app/components/conversation-role-history.d.ts +13 -0
- package/dist/src/web-ui/app/components/conversation-role-history.js +81 -0
- package/dist/src/web-ui/app/components/conversation-role-returns.d.ts +12 -0
- package/dist/src/web-ui/app/components/conversation-role-returns.js +23 -0
- 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/onboarding-workspace-access.js +1 -1
- package/dist/src/web-ui/app/components/operations-summary.js +2 -1
- 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 +4 -1
- package/dist/src/web-ui/app/components/schedules/details.js +3 -2
- package/dist/src/web-ui/app/components/skills/workspace.js +119 -0
- package/dist/src/web-ui/app/components/spark-chat/panel.js +1 -1
- package/dist/src/web-ui/app/components/spark-chat/settings.js +1 -1
- 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/native-windows-access.js +1 -1
- package/dist/src/web-ui/app/components/system-host/rendering.js +3 -3
- package/dist/src/web-ui/app/components/system-host/windows-store-setup.js +2 -2
- package/dist/src/web-ui/app/components/workspace-shell.js +11 -1
- package/dist/src/web-ui/app/computer-access-feature.js +13 -1
- package/dist/src/web-ui/app/configuration-feature.js +2 -0
- package/dist/src/web-ui/app/controllers/automation-read-projection.js +8 -4
- package/dist/src/web-ui/app/controllers/automation-run-actions.js +3 -1
- package/dist/src/web-ui/app/controllers/automation-run-history.js +159 -0
- package/dist/src/web-ui/app/controllers/automations-controller.js +27 -11
- package/dist/src/web-ui/app/controllers/environment-workspace-preparation.js +6 -2
- package/dist/src/web-ui/app/controllers/operations-controller.js +2 -1
- package/dist/src/web-ui/app/controllers/realtime-event-controller.js +22 -1
- package/dist/src/web-ui/app/controllers/reasoning-mode-controller.js +1 -1
- package/dist/src/web-ui/app/controllers/runtime-selection-controller.js +7 -1
- package/dist/src/web-ui/app/controllers/skills-controller.js +237 -0
- package/dist/src/web-ui/app/dashboard-feature.js +9 -0
- package/dist/src/web-ui/app/lib/conversation-role-model.d.ts +5 -0
- package/dist/src/web-ui/app/lib/conversation-role-model.js +63 -5
- package/dist/src/web-ui/app/lib/event-presentation.js +34 -0
- package/dist/src/web-ui/app/lib/reasoning-controls.js +6 -1
- package/dist/src/web-ui/app/lib/role-delegation-event.d.ts +18 -0
- package/dist/src/web-ui/app/lib/role-delegation-event.js +47 -0
- package/dist/src/web-ui/app/lib/role-return-event.d.ts +19 -0
- package/dist/src/web-ui/app/lib/role-return-event.js +36 -0
- package/dist/src/web-ui/app/lib/tool-activity-event.js +8 -6
- package/dist/src/web-ui/app/lib/tool-skill-activity-fields.js +50 -0
- package/dist/src/web-ui/app/lib/workspace-route.js +1 -0
- package/dist/src/web-ui/app/passive-learning-feature.js +2 -2
- package/dist/src/web-ui/app/services/runtime-web-client/automations.d.ts +9 -1
- package/dist/src/web-ui/app/services/runtime-web-client/automations.js +10 -2
- package/dist/src/web-ui/app/services/runtime-web-client/skills.js +23 -0
- package/dist/src/web-ui/app/services/runtime-web-client.js +2 -0
- package/dist/src/web-ui/app/skills-feature.js +36 -0
- package/dist/src/web-ui/app/styles/24-conversation-role-cards.css +58 -0
- package/dist/src/web-ui/app/styles/40-skills.css +34 -0
- package/dist/src/web-ui/app/styles/50-automations.css +24 -3
- package/dist/src/web-ui/app/styles/95-home-widgets.css +110 -0
- package/dist/src/web-ui/app/styles.css +2 -0
- package/dist/src/web-ui/app/ui-behavior.d.ts +1 -1
- package/dist/src/web-ui/app/ui-behavior.js +1 -0
- package/dist/src/web-ui/client-state/store.js +3 -2
- package/dist/src/web-ui/client-state/transaction-order.d.ts +2 -0
- package/dist/src/web-ui/client-state/transaction-order.js +18 -0
- package/dist/src/web-ui/local-runtime/api-router.d.ts +1 -0
- package/dist/src/web-ui/local-runtime/api-router.js +7 -0
- package/dist/src/web-ui/local-runtime/automation-routes.js +2 -1
- package/dist/src/web-ui/local-runtime/automation-run-page.d.ts +5 -0
- package/dist/src/web-ui/local-runtime/automation-run-page.js +26 -0
- package/dist/src/web-ui/local-runtime/skill-management-routes.d.ts +18 -0
- package/dist/src/web-ui/local-runtime/skill-management-routes.js +118 -0
- package/docs/configuration.md +8 -0
- package/docs/plugins.md +37 -32
- package/docs/runtime-public-contracts.md +37 -0
- package/examples/request-runner.config.example.json +3 -0
- package/package.json +1 -1
- package/plugins/capability-brief/plugin.json +1 -1
- package/plugins/code-outline/plugin.json +1 -1
- package/plugins/document-reader/plugin.json +1 -1
- package/plugins/exec/plugin.json +1 -1
- package/plugins/filesystem/plugin.json +1 -1
- package/plugins/json-inspector/plugin.json +1 -1
- package/plugins/local-search/plugin.json +1 -1
- package/plugins/memory/plugin.json +1 -1
- package/plugins/project-orientation/plugin.json +1 -1
- package/plugins/system/plugin.json +1 -1
- package/plugins/system-probe/plugin.json +1 -1
- package/plugins/web/plugin.json +1 -1
- package/plugins/web/skills/web_fetch_skill/SKILL.md +1 -2
- package/plugins/web/skills/web_search_skill/SKILL.md +3 -7
- package/src/runtime/README.md +96 -1
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { traceDebug } from "../../runtime/observability/debug-logger.js";
|
|
2
2
|
import { permitsModelContentTrace } from "../observability/content-trace-policy.js";
|
|
3
3
|
import { buildModelInvocationMetrics } from "./invocation-metrics.js";
|
|
4
|
+
import { fetchModelGatewayResponse, ModelGatewayInvocationError, } from "./invocation-error.js";
|
|
4
5
|
import { buildChatGatewayRequestBody, resolveMetricMessages, resolveRequestMessages, } from "./message-projection.js";
|
|
5
6
|
import { resolveClientOptions } from "./options.js";
|
|
6
7
|
import { ChatStreamAccumulator, classifyEmptyResponse, InactivityBoundStreamReader, } from "./stream-consumer.js";
|
|
@@ -24,14 +25,16 @@ export async function invokeModelGatewayWithOptions(params, options = {}) {
|
|
|
24
25
|
textLength: typeof params.text === "string" ? params.text.length : 0,
|
|
25
26
|
messageCount: requestMessages.length,
|
|
26
27
|
});
|
|
27
|
-
const
|
|
28
|
+
const serializedRequestBody = JSON.stringify(requestBody);
|
|
29
|
+
const response = await fetchModelGatewayResponse(url + "/chat", {
|
|
28
30
|
method: "POST",
|
|
29
31
|
headers: {
|
|
30
32
|
"Content-Type": "application/json",
|
|
31
33
|
},
|
|
32
34
|
signal: params.abortSignal,
|
|
33
|
-
body:
|
|
34
|
-
});
|
|
35
|
+
body: serializedRequestBody,
|
|
36
|
+
}, params.abortSignal);
|
|
37
|
+
params.abortSignal.throwIfAborted();
|
|
35
38
|
traceDebug("model-gateway.client", "chat.response.received", {
|
|
36
39
|
requestId,
|
|
37
40
|
status: response.status,
|
|
@@ -39,6 +42,7 @@ export async function invokeModelGatewayWithOptions(params, options = {}) {
|
|
|
39
42
|
});
|
|
40
43
|
if (!response.ok) {
|
|
41
44
|
const errorText = await response.text().catch(() => "");
|
|
45
|
+
params.abortSignal.throwIfAborted();
|
|
42
46
|
traceDebug("model-gateway.client", "chat.response.error", {
|
|
43
47
|
requestId,
|
|
44
48
|
status: response.status,
|
|
@@ -47,13 +51,13 @@ export async function invokeModelGatewayWithOptions(params, options = {}) {
|
|
|
47
51
|
? { bodyPreview: errorText.slice(0, 400) }
|
|
48
52
|
: { contentOmitted: true }),
|
|
49
53
|
});
|
|
50
|
-
throw new
|
|
54
|
+
throw new ModelGatewayInvocationError("http", `bridge_request_failed:${response.status}:${permitsModelContentTrace(params.modelStep, params.messages) ? errorText || "empty error body" : "content omitted"}`);
|
|
51
55
|
}
|
|
52
56
|
if (!response.body) {
|
|
53
57
|
traceDebug("model-gateway.client", "chat.response.no_body", {
|
|
54
58
|
requestId,
|
|
55
59
|
});
|
|
56
|
-
throw new
|
|
60
|
+
throw new ModelGatewayInvocationError("missing_stream", "no stream");
|
|
57
61
|
}
|
|
58
62
|
const streamReader = new InactivityBoundStreamReader(response.body.getReader(), params.abortSignal, clientOptions.getStreamInactivityTimeoutMs);
|
|
59
63
|
const stream = new ChatStreamAccumulator(params);
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export type ModelGatewayInvocationFailureKind = "network" | "http" | "stream" | "inactivity" | "missing_stream";
|
|
2
|
+
/** A failed transport attempt, distinct from local validation or callbacks. */
|
|
3
|
+
export declare class ModelGatewayInvocationError extends Error {
|
|
4
|
+
readonly kind: ModelGatewayInvocationFailureKind;
|
|
5
|
+
constructor(kind: ModelGatewayInvocationFailureKind, message: string, options?: ErrorOptions);
|
|
6
|
+
}
|
|
7
|
+
export declare function wrapModelGatewayTransportError(kind: "network" | "stream", cause: unknown): ModelGatewayInvocationError;
|
|
8
|
+
/** Only fetch rejection is classified; request construction stays with callers. */
|
|
9
|
+
export declare function fetchModelGatewayResponse(url: string, init: RequestInit, abortSignal: AbortSignal): Promise<Response>;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/** A failed transport attempt, distinct from local validation or callbacks. */
|
|
2
|
+
export class ModelGatewayInvocationError extends Error {
|
|
3
|
+
kind;
|
|
4
|
+
constructor(kind, message, options) {
|
|
5
|
+
super(message, options);
|
|
6
|
+
this.kind = kind;
|
|
7
|
+
this.name = "ModelGatewayInvocationError";
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
export function wrapModelGatewayTransportError(kind, cause) {
|
|
11
|
+
return new ModelGatewayInvocationError(kind, readTransportFailureMessage(kind, cause), { cause });
|
|
12
|
+
}
|
|
13
|
+
function readTransportFailureMessage(kind, cause) {
|
|
14
|
+
if (cause instanceof Error)
|
|
15
|
+
return cause.message;
|
|
16
|
+
if (typeof cause === "string")
|
|
17
|
+
return cause;
|
|
18
|
+
return `model_gateway_${kind}_failed`;
|
|
19
|
+
}
|
|
20
|
+
/** Only fetch rejection is classified; request construction stays with callers. */
|
|
21
|
+
export async function fetchModelGatewayResponse(url, init, abortSignal) {
|
|
22
|
+
try {
|
|
23
|
+
return await fetch(url, init);
|
|
24
|
+
}
|
|
25
|
+
catch (error) {
|
|
26
|
+
if (abortSignal.aborted)
|
|
27
|
+
throw error;
|
|
28
|
+
throw wrapModelGatewayTransportError("network", error);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { applyStreamLine, } from "../client-stream-parser.js";
|
|
2
|
+
import { ModelGatewayInvocationError, wrapModelGatewayTransportError, } from "./invocation-error.js";
|
|
2
3
|
function resolveAbortMessage(reason) {
|
|
3
4
|
if (reason instanceof Error) {
|
|
4
5
|
return reason.message;
|
|
@@ -53,9 +54,15 @@ export class InactivityBoundStreamReader {
|
|
|
53
54
|
void this.reader
|
|
54
55
|
.cancel("llm_stream_inactivity_timeout")
|
|
55
56
|
.catch(() => { });
|
|
56
|
-
settle(reject,
|
|
57
|
+
settle(reject, new ModelGatewayInvocationError("inactivity", "llm_stream_inactivity_timeout"));
|
|
57
58
|
}, inactivityTimeoutMs);
|
|
58
|
-
void this.reader.read().then((result) => settle(resolve, result), (error) =>
|
|
59
|
+
void this.reader.read().then((result) => settle(resolve, result), (error) => {
|
|
60
|
+
if (this.abortSignal.aborted) {
|
|
61
|
+
settle(reject, createAbortError(this.abortSignal.reason));
|
|
62
|
+
return;
|
|
63
|
+
}
|
|
64
|
+
settle(reject, wrapModelGatewayTransportError("stream", error));
|
|
65
|
+
});
|
|
59
66
|
});
|
|
60
67
|
}
|
|
61
68
|
}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { normalizeModelTokenUsage } from "../protocol/usage.js";
|
|
2
|
+
import { ModelGatewayInvocationError } from "./invocation-error.js";
|
|
2
3
|
function readText(value) {
|
|
3
4
|
return typeof value === "string" ? value : "";
|
|
4
5
|
}
|
|
@@ -51,7 +52,7 @@ function throwStreamError(message, data, callbacks) {
|
|
|
51
52
|
kind: "error",
|
|
52
53
|
text: errorText,
|
|
53
54
|
});
|
|
54
|
-
throw new
|
|
55
|
+
throw new ModelGatewayInvocationError("stream", `model_stream_error: ${errorText}`);
|
|
55
56
|
}
|
|
56
57
|
function readContentText(message, data) {
|
|
57
58
|
return (readText(message.text) ||
|
|
@@ -6,6 +6,7 @@ export declare function isModelGatewayToolCall(value: unknown): value is ModelGa
|
|
|
6
6
|
export declare function isAssistantToolCallMessage(value: unknown): value is ChatAssistantToolCallMessage;
|
|
7
7
|
export declare function isToolResultMessage(value: unknown): value is ChatToolResultMessage;
|
|
8
8
|
export declare function isTextChatMessage(value: unknown): value is ChatTextMessage;
|
|
9
|
+
export declare function isStrictTextChatMessage(value: unknown): value is ChatTextMessage;
|
|
9
10
|
export declare function hasModelGatewayToolInteractionLane(value: unknown): boolean;
|
|
10
11
|
/**
|
|
11
12
|
* Enforces the native tool-call continuation protocol whenever any tool-lane
|
|
@@ -115,7 +115,7 @@ export function isTextChatMessage(value) {
|
|
|
115
115
|
typeof value.content === "string" &&
|
|
116
116
|
!Object.prototype.hasOwnProperty.call(value, "toolCalls"));
|
|
117
117
|
}
|
|
118
|
-
function isStrictTextChatMessage(value) {
|
|
118
|
+
export function isStrictTextChatMessage(value) {
|
|
119
119
|
if (!isRecord(value) ||
|
|
120
120
|
!hasOnlyKeys(value, TEXT_MESSAGE_KEYS) ||
|
|
121
121
|
!isTextChatMessage(value)) {
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { resolveModelInvocation } from "../policy/invocation-policy.js";
|
|
2
2
|
import { respondToGatewayHandlerError } from "./errors.js";
|
|
3
|
+
import { writeChatStreamResponse } from "./chat-stream-response.js";
|
|
3
4
|
import { sendText } from "./http-response.js";
|
|
4
5
|
import { applyConfiguredModelPolicy, emitResolvedModelInvocation, validateImageInvocationSupport, validateMessageInteractionRequest, } from "./invocation-validation.js";
|
|
5
6
|
import { createContextGuardedProviderFetch } from "./provider-fetch.js";
|
|
@@ -62,14 +63,11 @@ export function createChatHandler(options = {}, inputTokenMeasurements) {
|
|
|
62
63
|
if (result.kind !== "chat") {
|
|
63
64
|
throw new Error("model_provider_adapter_chat_result_invalid");
|
|
64
65
|
}
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
response.write(`${JSON.stringify(event)}\n`);
|
|
70
|
-
},
|
|
66
|
+
await writeChatStreamResponse({
|
|
67
|
+
invocation: result,
|
|
68
|
+
response,
|
|
69
|
+
abortSignal,
|
|
71
70
|
});
|
|
72
|
-
response.end();
|
|
73
71
|
}
|
|
74
72
|
catch (error) {
|
|
75
73
|
respondToGatewayHandlerError({
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { ModelProviderChatInvocation } from "../providers/contracts.js";
|
|
2
|
+
import type { GatewayResponse } from "./contracts.js";
|
|
3
|
+
export declare function writeChatStreamResponse(params: {
|
|
4
|
+
invocation: ModelProviderChatInvocation;
|
|
5
|
+
response: GatewayResponse;
|
|
6
|
+
abortSignal: AbortSignal;
|
|
7
|
+
}): Promise<void>;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
export async function writeChatStreamResponse(params) {
|
|
2
|
+
const { invocation, response, abortSignal } = params;
|
|
3
|
+
let hasEmittedEvent = false;
|
|
4
|
+
response.setHeader("Content-Type", "application/x-ndjson; charset=utf-8");
|
|
5
|
+
response.setHeader("Cache-Control", "no-cache");
|
|
6
|
+
try {
|
|
7
|
+
await invocation.stream({
|
|
8
|
+
emit(event) {
|
|
9
|
+
response.write(`${JSON.stringify(event)}\n`);
|
|
10
|
+
hasEmittedEvent = true;
|
|
11
|
+
},
|
|
12
|
+
});
|
|
13
|
+
}
|
|
14
|
+
catch (error) {
|
|
15
|
+
if (abortSignal.aborted)
|
|
16
|
+
return;
|
|
17
|
+
// Before the first write, the handler can still send its normal HTTP error.
|
|
18
|
+
if (!hasEmittedEvent)
|
|
19
|
+
throw error;
|
|
20
|
+
console.error(error);
|
|
21
|
+
response.end(`${JSON.stringify({ type: "error", error: "server error" })}\n`);
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
24
|
+
response.end();
|
|
25
|
+
}
|
package/dist/src/runtime/adapters/registered-tool-normal-invocations/execution/approval.d.ts
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import type { ToolCall } from "../../../../capabilities/tool-types.js";
|
|
2
2
|
import { type ToolEventExecutorIdentity } from "../shared/event-metadata.js";
|
|
3
3
|
import type { ToolApprovalController, ToolApprovalRequest, ToolApprovalDecision, ToolPermissionMode } from "../../../ports.js";
|
|
4
|
-
import type { RegisteredToolNormalInvocationRejection } from "../shared/contracts.js";
|
|
4
|
+
import type { BoundOperation, RegisteredToolNormalInvocationRejection } from "../shared/contracts.js";
|
|
5
|
+
/** Both accepted source and normalized target must share the core read exemption. */
|
|
6
|
+
export declare function requiresRegisteredToolActionApproval(mode: ToolPermissionMode, source: BoundOperation, target: BoundOperation): boolean;
|
|
5
7
|
export declare function requestNormalInvocationApproval(params: {
|
|
6
8
|
preparedRequest?: ToolApprovalRequest;
|
|
7
9
|
decision?: ToolApprovalDecision;
|
|
@@ -17,6 +19,8 @@ export declare function requestNormalInvocationApproval(params: {
|
|
|
17
19
|
call: ToolCall;
|
|
18
20
|
eventMeta?: Record<string, unknown>;
|
|
19
21
|
force: boolean;
|
|
22
|
+
/** Captured operation policy; omitted for ordinary direct approval callers. */
|
|
23
|
+
requiredByOperationPolicy?: boolean;
|
|
20
24
|
}): Promise<Readonly<{
|
|
21
25
|
ok: true;
|
|
22
26
|
}> | Readonly<{
|
|
@@ -1,13 +1,27 @@
|
|
|
1
1
|
import { requiresToolActionApproval } from "../../../../capabilities/tool-permission-mode.js";
|
|
2
|
+
import { isCoreToolAutomaticRead } from "../../../capabilities/core-tool-contracts.js";
|
|
2
3
|
import { buildToolExecutorEventMetadata, } from "../shared/event-metadata.js";
|
|
3
4
|
import { rejectNormalInvocation } from "../shared/rejection.js";
|
|
5
|
+
/** Both accepted source and normalized target must share the core read exemption. */
|
|
6
|
+
export function requiresRegisteredToolActionApproval(mode, source, target) {
|
|
7
|
+
const force = source.operation.approval === "always" || target.operation.approval === "always";
|
|
8
|
+
if (!requiresToolActionApproval(mode, force))
|
|
9
|
+
return false;
|
|
10
|
+
if (force)
|
|
11
|
+
return true;
|
|
12
|
+
if (!isCoreToolAutomaticRead(source.registration.toolName, source.operation))
|
|
13
|
+
return true;
|
|
14
|
+
return !isCoreToolAutomaticRead(target.registration.toolName, target.operation);
|
|
15
|
+
}
|
|
4
16
|
function recommendsFullPlusForForcedAction(mode, force) {
|
|
5
17
|
if (mode !== "full_access")
|
|
6
18
|
return false;
|
|
7
19
|
return force;
|
|
8
20
|
}
|
|
9
21
|
export async function requestNormalInvocationApproval(params) {
|
|
10
|
-
|
|
22
|
+
const required = params.requiredByOperationPolicy ??
|
|
23
|
+
requiresToolActionApproval(params.toolPermissionMode, params.force);
|
|
24
|
+
if (!required) {
|
|
11
25
|
return Object.freeze({ ok: true });
|
|
12
26
|
}
|
|
13
27
|
const approvalId = params.preparedRequest?.approvalId ?? params.nextApprovalId();
|
package/dist/src/runtime/adapters/registered-tool-normal-invocations/execution/prepared-execution.js
CHANGED
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
import { createRegisteredToolResultBudget, assertRegisteredToolResultMetadataFits, } from "./result-budget.js";
|
|
2
2
|
import { randomUUID } from "node:crypto";
|
|
3
|
-
import { requiresToolActionApproval } from "../../../../capabilities/tool-permission-mode.js";
|
|
4
3
|
import { buildToolCompletedEventActions, buildToolCompletedEventMetadata, buildToolLifecycleEventCopy, } from "../../../../capabilities/tool-event-metadata.js";
|
|
5
4
|
import { buildToolExecutorEventMetadata, } from "../shared/event-metadata.js";
|
|
6
5
|
import { rejectNormalInvocation } from "../shared/rejection.js";
|
|
7
|
-
import { requestNormalInvocationApproval } from "./approval.js";
|
|
6
|
+
import { requestNormalInvocationApproval, requiresRegisteredToolActionApproval } from "./approval.js";
|
|
8
7
|
import { createPreparedInvocationRejectionEmitter } from "./rejection-event.js";
|
|
9
8
|
import { createFileOutputPresentation } from "./file-output-presentation.js";
|
|
10
9
|
import { executeWithToolResources } from "./tool-media-execution.js";
|
|
11
10
|
export function createPreparedNormalInvocation(params) {
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
11
|
+
// Keep an already-recorded approval pending across upgrades; new core reads skip it.
|
|
12
|
+
const requiresApproval = params.restoredApprovalRequest !== undefined ||
|
|
13
|
+
requiresRegisteredToolActionApproval(params.executor.toolPermissionMode, params.source, params.target);
|
|
14
|
+
const approvalRequest = requiresApproval
|
|
15
15
|
? Object.freeze({
|
|
16
16
|
...(params.restoredApprovalRequest ?? {
|
|
17
17
|
requestId: params.executor.requestId,
|
|
@@ -82,6 +82,8 @@ async function executePreparedNormalInvocation(params) {
|
|
|
82
82
|
});
|
|
83
83
|
assertRegisteredToolResultMetadataFits(resultBudget);
|
|
84
84
|
const approval = await requestNormalInvocationApproval({
|
|
85
|
+
requiredByOperationPolicy: params.approvalRequest !== undefined ||
|
|
86
|
+
requiresRegisteredToolActionApproval(params.executor.toolPermissionMode, params.source, params.target),
|
|
85
87
|
...(params.approvalRequest
|
|
86
88
|
? { preparedRequest: params.approvalRequest }
|
|
87
89
|
: {}),
|
package/dist/src/runtime/adapters/registered-tool-normal-invocations/execution/prepared-snapshot.js
CHANGED
|
@@ -3,6 +3,7 @@ import { createRegisteredToolActionFingerprint } from "../shared/action-fingerpr
|
|
|
3
3
|
import { captureToolCall, resolveExactTargetOperation, validateCompleteCall, } from "./call-binding.js";
|
|
4
4
|
import { captureExecutionBinding } from "./execution-binding.js";
|
|
5
5
|
import { createPreparedNormalInvocation } from "./prepared-execution.js";
|
|
6
|
+
import { requiresRegisteredToolActionApproval } from "./approval.js";
|
|
6
7
|
/** Validate a saved exact call; restoration never invokes normalization or payload authoring. */
|
|
7
8
|
export function restoreNormalInvocation(params) {
|
|
8
9
|
const value = params.snapshot;
|
|
@@ -48,8 +49,14 @@ export function restoreNormalInvocation(params) {
|
|
|
48
49
|
throw invalid();
|
|
49
50
|
const force = source.operation.approval === "always" ||
|
|
50
51
|
target.operation.approval === "always";
|
|
51
|
-
const required =
|
|
52
|
-
|
|
52
|
+
const required = requiresRegisteredToolActionApproval(params.executor.toolPermissionMode, source, target);
|
|
53
|
+
const missingRequiredApproval = required && !value.approvalRequest;
|
|
54
|
+
if (missingRequiredApproval)
|
|
55
|
+
throw invalid();
|
|
56
|
+
// Existing ASK approvals remain valid even when core reads no longer need new ones.
|
|
57
|
+
const unexpectedRecordedApproval = value.approvalRequest &&
|
|
58
|
+
!requiresToolActionApproval(params.executor.toolPermissionMode, force);
|
|
59
|
+
if (unexpectedRecordedApproval)
|
|
53
60
|
throw invalid();
|
|
54
61
|
if (value.approvalRequest) {
|
|
55
62
|
if (!isRequestApproval(value.approvalRequest, params.executor.requestId))
|
package/dist/src/runtime/adapters/registered-tool-worker-capabilities/payload-rejection.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import type { CapabilityAdapterResult } from "../../orchestration/capability-adapters/index.js";
|
|
2
2
|
import type { WorkerCapabilityAdapterResult, WorkerCapabilityExecutionFreshness } from "../../orchestration/worker-capabilities/index.js";
|
|
3
3
|
import type { PayloadLifecycleEmitter } from "./payload-observability.js";
|
|
4
|
-
|
|
5
|
-
export
|
|
4
|
+
import { STEERING_SUPERSEDED_BEFORE_EXTERNAL_EXECUTION, STEERING_SUPERSEDED_SUMMARY } from "../../orchestration/worker-capabilities/execution/execution-freshness.js";
|
|
5
|
+
export { STEERING_SUPERSEDED_BEFORE_EXTERNAL_EXECUTION, STEERING_SUPERSEDED_SUMMARY, };
|
|
6
6
|
export type PayloadLifecycleContext = Readonly<Omit<Parameters<PayloadLifecycleEmitter["emitPayloadLifecycle"]>[0], "phase" | "errorCode">>;
|
|
7
7
|
export declare function rejectPayloadLifecycle(params: {
|
|
8
8
|
executor: PayloadLifecycleEmitter;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { boundedSummary, requireCapabilityAdapterResult, } from "./result-observer.js";
|
|
2
2
|
import { createRegisteredToolWorkerFailureOutcomeFingerprint } from "./failure-outcome-fingerprint.js";
|
|
3
|
-
|
|
4
|
-
export
|
|
3
|
+
import { STEERING_SUPERSEDED_BEFORE_EXTERNAL_EXECUTION, STEERING_SUPERSEDED_SUMMARY, } from "../../orchestration/worker-capabilities/execution/execution-freshness.js";
|
|
4
|
+
export { STEERING_SUPERSEDED_BEFORE_EXTERNAL_EXECUTION, STEERING_SUPERSEDED_SUMMARY, };
|
|
5
5
|
export function rejectPayloadLifecycle(params) {
|
|
6
6
|
const failed = params.executor.emitPayloadLifecycle({
|
|
7
7
|
...params.lifecycle,
|
|
@@ -1,9 +1,23 @@
|
|
|
1
1
|
import { traceRegisteredToolWorkerCapabilityExecutionStarted, traceRegisteredToolWorkerCapabilityExecutionCompleted, traceRegisteredToolWorkerCapabilityExecutionFailed, } from "../registered-tool-worker-capability-diagnostics.js";
|
|
2
2
|
import { executionFreshnessRejection } from "./payload-lifecycle.js";
|
|
3
|
+
import { payloadRejection } from "./payload-rejection.js";
|
|
3
4
|
import { RegisteredToolWorkerCapabilityExecutionError } from "./errors.js";
|
|
4
5
|
import { observeExternalResult, attachTargetReferences, } from "./result-observer.js";
|
|
5
6
|
export function createPreparedWorkerInvocation(params, input, normalPreparation, selectedTargetReferences, payloadObservability) {
|
|
6
7
|
const operationId = params.projection.operation.operationId;
|
|
8
|
+
const rejectBeforeExecution = (executionId, code, message) => {
|
|
9
|
+
payloadObservability.release(executionId);
|
|
10
|
+
const rejectedExecution = payloadRejection(code, message);
|
|
11
|
+
normalPreparation.emitRejection({
|
|
12
|
+
executionId,
|
|
13
|
+
executorIdentity: input.call,
|
|
14
|
+
errorCode: code,
|
|
15
|
+
});
|
|
16
|
+
return attachTargetReferences({
|
|
17
|
+
...rejectedExecution.result,
|
|
18
|
+
exactResult: rejectedExecution.exactResult,
|
|
19
|
+
}, selectedTargetReferences);
|
|
20
|
+
};
|
|
7
21
|
return Object.freeze({
|
|
8
22
|
actionFingerprint: normalPreparation.actionFingerprint,
|
|
9
23
|
acceptedControls: normalPreparation.acceptedControls,
|
|
@@ -18,22 +32,14 @@ export function createPreparedWorkerInvocation(params, input, normalPreparation,
|
|
|
18
32
|
: {}),
|
|
19
33
|
applyApprovalDecision: normalPreparation.applyApprovalDecision,
|
|
20
34
|
onAdmitted: payloadObservability.release,
|
|
35
|
+
rejectBeforeExecution,
|
|
21
36
|
execute: async (executionId) => {
|
|
22
37
|
try {
|
|
23
38
|
payloadObservability.release(executionId);
|
|
24
39
|
traceRegisteredToolWorkerCapabilityExecutionStarted(params.diagnostic, operationId, input.call, executionId, input.intent.length, Object.keys(input.controls).length);
|
|
25
40
|
const rejectedExecution = executionFreshnessRejection(input.executionFreshness);
|
|
26
|
-
if (rejectedExecution)
|
|
27
|
-
|
|
28
|
-
executionId,
|
|
29
|
-
executorIdentity: input.call,
|
|
30
|
-
errorCode: rejectedExecution.sourceIssueCode,
|
|
31
|
-
});
|
|
32
|
-
return attachTargetReferences({
|
|
33
|
-
...rejectedExecution.result,
|
|
34
|
-
exactResult: rejectedExecution.exactResult,
|
|
35
|
-
}, selectedTargetReferences);
|
|
36
|
-
}
|
|
41
|
+
if (rejectedExecution)
|
|
42
|
+
return rejectBeforeExecution(executionId, rejectedExecution.sourceIssueCode, rejectedExecution.result.summary);
|
|
37
43
|
const externalResult = await normalPreparation.execute(executionId, input.call, selectedTargetReferences);
|
|
38
44
|
const observed = observeExternalResult(externalResult, params.projection.operation.effect, input.call.parentCallId === null, selectedTargetReferences);
|
|
39
45
|
const observedResult = observed.result;
|
|
@@ -15,7 +15,7 @@ export declare function createAutomationService(options: {
|
|
|
15
15
|
latestRunId?: string | undefined;
|
|
16
16
|
latestRunStatus?: import("../scheduler/contracts.js").SchedulerRunStatus | "stopping" | "completed_with_skips" | undefined;
|
|
17
17
|
publishedRevision?: number;
|
|
18
|
-
status: "
|
|
18
|
+
status: "archived" | "active" | "paused" | "draft";
|
|
19
19
|
id: string;
|
|
20
20
|
title: string;
|
|
21
21
|
draftRevision: number;
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
+
import { CORE_TOOL_CONTRACTS } from "../core-tool-contracts.js";
|
|
1
2
|
import { Buffer } from "node:buffer";
|
|
2
3
|
import { AUTOMATION_TOOL_EVENT_PRESENTATION } from "../automations/event-presentation.js";
|
|
3
4
|
import { automationDraftPreparationReceipt } from "../automations/draft-operation-refs.js";
|
|
4
5
|
import { AutomationDraftReceiptCapacityError, prepareAutomationDraftReceipt } from "../automations/draft-receipt-admission.js";
|
|
5
6
|
import { AUTOMATION_DRAFT_BATCH_LIMITS, AutomationDraftBatchError, AutomationDraftBatchGraphError } from "../../automations/draft-batch.js";
|
|
6
|
-
import { automationBuilderToolContract } from "./tool-contract.js";
|
|
7
7
|
import { AUTOMATION_BUILDER_PAYLOAD_FORMAT } from "./payload-schema.js";
|
|
8
8
|
import { compileAutomationCreationRecipe, hasAutomationCreationRecipe } from "./creation-recipe.js";
|
|
9
9
|
function requiredText(params, key) {
|
|
@@ -41,7 +41,7 @@ function requireAcceptedDraftReceipt(output) {
|
|
|
41
41
|
async function execute(service, params) {
|
|
42
42
|
const action = requiredText(params, "action");
|
|
43
43
|
const plan = parsePlanPayload(params);
|
|
44
|
-
const operation =
|
|
44
|
+
const operation = CORE_TOOL_CONTRACTS.automationBuilder.normalInvocation.operations.find(({ operationId }) => operationId === action);
|
|
45
45
|
if (!operation)
|
|
46
46
|
throw new Error("automation_action_unknown");
|
|
47
47
|
let acceptedOutput;
|
|
@@ -76,7 +76,7 @@ function failureDetails(error) {
|
|
|
76
76
|
export function createAutomationBuilderToolModule(getService, ready) {
|
|
77
77
|
return {
|
|
78
78
|
definition: {
|
|
79
|
-
name:
|
|
79
|
+
name: CORE_TOOL_CONTRACTS.automationBuilder.name,
|
|
80
80
|
eventPresentation: {
|
|
81
81
|
...AUTOMATION_TOOL_EVENT_PRESENTATION,
|
|
82
82
|
metadata: {
|
|
@@ -91,7 +91,7 @@ export function createAutomationBuilderToolModule(getService, ready) {
|
|
|
91
91
|
payloadChannelSpec: { params: ["planJson"], outputParam: "planJson", generationMode: "raw_text",
|
|
92
92
|
stages: [{ outputParam: "planJson", responseFormat: AUTOMATION_BUILDER_PAYLOAD_FORMAT }] },
|
|
93
93
|
},
|
|
94
|
-
normalInvocation:
|
|
94
|
+
normalInvocation: CORE_TOOL_CONTRACTS.automationBuilder.normalInvocation,
|
|
95
95
|
async implementation(params, context) {
|
|
96
96
|
try {
|
|
97
97
|
await ready();
|
|
@@ -7,7 +7,7 @@ export declare function readAutomationDraftIndex(service: AutomationService, off
|
|
|
7
7
|
automationId: string;
|
|
8
8
|
title: string;
|
|
9
9
|
revision: number;
|
|
10
|
-
status: "
|
|
10
|
+
status: "archived" | "active" | "paused" | "draft";
|
|
11
11
|
}[];
|
|
12
12
|
nextOffset: number | null;
|
|
13
13
|
omittedCount: number;
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
+
import { CORE_TOOL_CONTRACTS } from "../core-tool-contracts.js";
|
|
1
2
|
import { Buffer } from "node:buffer";
|
|
2
3
|
import { AUTOMATION_TOOL_EVENT_PRESENTATION } from "./event-presentation.js";
|
|
3
4
|
import { automationDraftPreparationReceipt } from "./draft-operation-refs.js";
|
|
4
5
|
import { AutomationDraftReceiptCapacityError, prepareAutomationDraftReceipt } from "./draft-receipt-admission.js";
|
|
5
6
|
import { readAutomationDraftIndex } from "./draft-index.js";
|
|
6
|
-
import { automationModelToolContract } from "./model-tool-contract.js";
|
|
7
7
|
import { readAutomationAuthoringPreparation } from "./authoring-preparation.js";
|
|
8
8
|
import { automationAuthoringCatalogScope, readAutomationAuthoringCatalog, readAutomationAuthoringCatalogIndex } from "./authoring-catalog.js";
|
|
9
9
|
import { AUTOMATION_AUTHORING_REFERENCE } from "../automation-builder/authoring-reference.js";
|
|
@@ -254,7 +254,7 @@ async function execute(service, params) {
|
|
|
254
254
|
export function createAutomationDraftToolModule(getService, ready) {
|
|
255
255
|
return {
|
|
256
256
|
definition: {
|
|
257
|
-
name:
|
|
257
|
+
name: CORE_TOOL_CONTRACTS.automations.name,
|
|
258
258
|
eventPresentation: AUTOMATION_TOOL_EVENT_PRESENTATION,
|
|
259
259
|
description: "Inspect and make targeted edits to ABot Studio drafts. For a complete connected workflow or several related edits, prefer automation_builder create_automation_draft or apply_automation_draft_changes. Catalog discovery lists tools for the FUTURE workflow, not Studio editing commands; fetch operation detail only when needed. Successful edits return exact revision and newNodeIds for reuse; read_draft when state is unknown or after a revision conflict. Draft authoring only: the user grants permissions, publishes and runs automations.",
|
|
260
260
|
routingCapability: "semantic_mutation",
|
|
@@ -262,14 +262,14 @@ export function createAutomationDraftToolModule(getService, ready) {
|
|
|
262
262
|
developmentRoles: ["auxiliary"],
|
|
263
263
|
controlsRefinement: "mechanical_when_complete",
|
|
264
264
|
},
|
|
265
|
-
normalInvocation:
|
|
265
|
+
normalInvocation: CORE_TOOL_CONTRACTS.automations.normalInvocation,
|
|
266
266
|
async implementation(params, context) {
|
|
267
267
|
try {
|
|
268
268
|
await ready();
|
|
269
269
|
context?.abortSignal?.throwIfAborted();
|
|
270
270
|
const result = await execute(getService(), params);
|
|
271
271
|
if (params.action === "read_draft") {
|
|
272
|
-
const operation =
|
|
272
|
+
const operation = CORE_TOOL_CONTRACTS.automations.normalInvocation.operations.find(({ operationId }) => operationId === "read_draft");
|
|
273
273
|
return prepareAutomationDraftReceipt(result, { tool: "automations", operation, params, mutationEvidence: false });
|
|
274
274
|
}
|
|
275
275
|
const isDraftMutation = !["list_drafts", "read_draft", "catalog", "browse_catalog", "prepare_draft", "validate_draft"].includes(String(params.action));
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import type { ToolNormalInvocationContract, ToolNormalInvocationOperation } from "../../capabilities/tool-types.js";
|
|
2
|
+
/** One source for native definitions and their reserved plugin identities. */
|
|
3
|
+
export declare const CORE_TOOL_CONTRACTS: Readonly<{
|
|
4
|
+
skills: Readonly<{
|
|
5
|
+
name: string;
|
|
6
|
+
normalInvocation: ToolNormalInvocationContract;
|
|
7
|
+
readApproval: "request_policy" | "automatic";
|
|
8
|
+
}>;
|
|
9
|
+
scheduling: Readonly<{
|
|
10
|
+
name: string;
|
|
11
|
+
normalInvocation: ToolNormalInvocationContract;
|
|
12
|
+
readApproval: "request_policy" | "automatic";
|
|
13
|
+
}>;
|
|
14
|
+
automations: Readonly<{
|
|
15
|
+
name: string;
|
|
16
|
+
normalInvocation: ToolNormalInvocationContract;
|
|
17
|
+
readApproval: "request_policy" | "automatic";
|
|
18
|
+
}>;
|
|
19
|
+
automationBuilder: Readonly<{
|
|
20
|
+
name: string;
|
|
21
|
+
normalInvocation: ToolNormalInvocationContract;
|
|
22
|
+
readApproval: "request_policy" | "automatic";
|
|
23
|
+
}>;
|
|
24
|
+
}>;
|
|
25
|
+
/** Core policy only; public plugins cannot opt out of request approval. */
|
|
26
|
+
export declare function isCoreToolAutomaticRead(toolName: string, operation: Pick<ToolNormalInvocationOperation, "operationId" | "effect">): boolean;
|
|
27
|
+
export declare function hasCoreToolContractCollision(capabilities: Readonly<Record<string, {
|
|
28
|
+
operations: Readonly<Record<string, unknown>>;
|
|
29
|
+
}>>): boolean;
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { schedulingToolContract } from "./scheduling/tool-contract.js";
|
|
2
|
+
import { automationModelToolContract } from "./automations/model-tool-contract.js";
|
|
3
|
+
import { automationBuilderToolContract } from "./automation-builder/tool-contract.js";
|
|
4
|
+
import { knowledgeSkillsToolContract } from "./knowledge-skills/tool-contract.js";
|
|
5
|
+
function coreToolContract(name, normalInvocation, readApproval = "request_policy") {
|
|
6
|
+
return Object.freeze({ name, normalInvocation, readApproval });
|
|
7
|
+
}
|
|
8
|
+
/** One source for native definitions and their reserved plugin identities. */
|
|
9
|
+
export const CORE_TOOL_CONTRACTS = Object.freeze({
|
|
10
|
+
skills: coreToolContract("abot_skills", knowledgeSkillsToolContract, "automatic"),
|
|
11
|
+
scheduling: coreToolContract("schedules", schedulingToolContract),
|
|
12
|
+
automations: coreToolContract("automations", automationModelToolContract),
|
|
13
|
+
automationBuilder: coreToolContract("automation_builder", automationBuilderToolContract),
|
|
14
|
+
});
|
|
15
|
+
const coreTools = Object.values(CORE_TOOL_CONTRACTS);
|
|
16
|
+
const coreToolNames = new Set(coreTools.map(({ name }) => name));
|
|
17
|
+
const coreOperationIds = new Set(coreTools.flatMap(({ normalInvocation }) => normalInvocation.operations.map(({ operationId }) => operationId)));
|
|
18
|
+
/** Core policy only; public plugins cannot opt out of request approval. */
|
|
19
|
+
export function isCoreToolAutomaticRead(toolName, operation) {
|
|
20
|
+
const core = coreTools.find(({ name }) => name === toolName);
|
|
21
|
+
if (core?.readApproval !== "automatic")
|
|
22
|
+
return false;
|
|
23
|
+
if (operation.effect !== "read_only")
|
|
24
|
+
return false;
|
|
25
|
+
return core.normalInvocation.operations.some((candidate) => candidate.operationId === operation.operationId && candidate.effect === "read_only");
|
|
26
|
+
}
|
|
27
|
+
export function hasCoreToolContractCollision(capabilities) {
|
|
28
|
+
for (const [name, capability] of Object.entries(capabilities)) {
|
|
29
|
+
const hasReservedToolName = coreToolNames.has(name);
|
|
30
|
+
if (hasReservedToolName)
|
|
31
|
+
return true;
|
|
32
|
+
const hasReservedOperationId = Object.keys(capability.operations)
|
|
33
|
+
.some((operationId) => coreOperationIds.has(operationId));
|
|
34
|
+
if (hasReservedOperationId)
|
|
35
|
+
return true;
|
|
36
|
+
}
|
|
37
|
+
return false;
|
|
38
|
+
}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { ToolImplementationOutput } from "../../../capabilities/tool-types.js";
|
|
2
|
+
import { type KnowledgeSkillStore } from "../../knowledge-skills/store.js";
|
|
3
|
+
/** One ordinary read result; never report a partial document set as success. */
|
|
4
|
+
export declare function executeKnowledgeSkillsReadMany(store: KnowledgeSkillStore, skillIds: unknown): ToolImplementationOutput;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { KNOWLEDGE_SKILL_READ_MAX_ITEMS, } from "../../knowledge-skills/store.js";
|
|
2
|
+
import { knowledgeSkillDocumentsReadOutput, knowledgeSkillFailure } from "./tool-output.js";
|
|
3
|
+
import { isKnowledgeSkillReadReference, resolveKnowledgeSkillReadTargets } from "./read-targets.js";
|
|
4
|
+
function hasValidSkillIds(value) {
|
|
5
|
+
if (!Array.isArray(value))
|
|
6
|
+
return false;
|
|
7
|
+
if (value.length === 0 || value.length > KNOWLEDGE_SKILL_READ_MAX_ITEMS)
|
|
8
|
+
return false;
|
|
9
|
+
if (!value.every(isKnowledgeSkillReadReference))
|
|
10
|
+
return false;
|
|
11
|
+
return new Set(value).size === value.length;
|
|
12
|
+
}
|
|
13
|
+
/** One ordinary read result; never report a partial document set as success. */
|
|
14
|
+
export function executeKnowledgeSkillsReadMany(store, skillIds) {
|
|
15
|
+
if (!hasValidSkillIds(skillIds))
|
|
16
|
+
return knowledgeSkillFailure("knowledge_skill_ids_invalid");
|
|
17
|
+
const resolved = resolveKnowledgeSkillReadTargets(store, skillIds);
|
|
18
|
+
if (!resolved.ok)
|
|
19
|
+
return knowledgeSkillFailure(resolved.errorCode);
|
|
20
|
+
return knowledgeSkillDocumentsReadOutput(resolved.skills);
|
|
21
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { type KnowledgeSkillDocument, type KnowledgeSkillStore } from "../../knowledge-skills/store.js";
|
|
2
|
+
export declare const KNOWLEDGE_SKILL_READ_REFERENCE_MAX_LENGTH: number;
|
|
3
|
+
export declare function isKnowledgeSkillReadReference(value: unknown): value is string;
|
|
4
|
+
type ResolvedSkillRead = Readonly<{
|
|
5
|
+
ok: true;
|
|
6
|
+
skills: readonly KnowledgeSkillDocument[];
|
|
7
|
+
}> | Readonly<{
|
|
8
|
+
ok: false;
|
|
9
|
+
errorCode: string;
|
|
10
|
+
}>;
|
|
11
|
+
/** Resolve exact IDs first, then full names, against the same Store used for discovery. */
|
|
12
|
+
export declare function resolveKnowledgeSkillReadTargets(store: KnowledgeSkillStore, references: readonly string[]): ResolvedSkillRead;
|
|
13
|
+
export {};
|