@abot-ai/runtime 1.8.1 → 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/dist/scripts/runtime-setup-files.js +46 -2
- 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/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/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/composition.d.ts +5 -0
- 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 +1 -0
- package/dist/src/runtime/long-term-memory/conversation-authoring/context.js +1 -1
- 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 +1 -0
- 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 +2 -0
- package/dist/src/runtime/orchestration/role-calls/checkpoint-state.js +2 -1
- 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 +6 -3
- package/dist/src/runtime/orchestration/role-calls/contracts.js +3 -3
- 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 +1 -1
- package/dist/src/runtime/orchestration/worker-capabilities/contracts.js +1 -1
- package/dist/src/runtime/orchestration/worker-capabilities/execution/approval-group.js +5 -3
- 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/request/approval-wait/preflight.js +1 -0
- package/dist/src/runtime/request/bound-runtime-handler.js +1 -0
- package/dist/src/runtime/request/contracts.d.ts +2 -0
- 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 +11 -1
- package/dist/src/runtime/request/root-execution-kernel.js +35 -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 +10 -0
- package/dist/src/runtime/request/super-payload-context-failure.js +13 -4
- package/dist/src/runtime/request/supervisor-root-execution.js +48 -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/direct-response-prompt.js +14 -14
- package/dist/src/runtime/steps/execution-agent/input.js +14 -2
- package/dist/src/runtime/steps/execution-agent/prompt.js +40 -38
- 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 +1 -1
- package/dist/src/runtime/steps/execution-agent/run.js +1 -1
- package/dist/src/runtime/steps/execution-agent/state-context.js +1 -1
- 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 +2 -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 +3 -0
- 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 +7 -1
- package/dist/src/runtime/steps/supervisor-decision/input.js +30 -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 +4 -0
- package/dist/src/runtime/steps/supervisor-decision/prompt.js +96 -109
- 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 +6 -0
- package/dist/src/runtime/steps/supervisor-decision/run.js +73 -159
- 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 +5 -0
- 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/app-bootstrap.js +3 -0
- package/dist/src/web-ui/app/app.js +6 -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/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/onboarding-workspace-access.js +1 -1
- package/dist/src/web-ui/app/components/skills/workspace.js +119 -0
- package/dist/src/web-ui/app/components/workspace-shell.js +11 -1
- 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/realtime-event-controller.js +22 -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/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/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/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 +2 -1
- package/dist/src/web-ui/app/styles.css +1 -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/runtime-public-contracts.md +37 -0
- package/examples/request-runner.config.example.json +3 -0
- package/package.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
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { findExactEvidencePath } from "../context/exact-evidence-match.js";
|
|
2
|
+
import { createSemanticCompactionSha256Fingerprint, } from "../context/semantic-compaction/contracts.js";
|
|
3
|
+
/** Keep the adapter envelope exact and the pre-projection compaction identity stable. */
|
|
4
|
+
export function projectPayloadSettledEvidence(results) {
|
|
5
|
+
const resultSourceOverrides = [];
|
|
6
|
+
let deduplicatedReferenceDataChars = 0;
|
|
7
|
+
const projected = results.map((result) => {
|
|
8
|
+
if (!("adapterResult" in result) || !result.referenceData)
|
|
9
|
+
return result;
|
|
10
|
+
const representedAt = findExactEvidencePath(result.adapterResult, result.referenceData);
|
|
11
|
+
if (!representedAt)
|
|
12
|
+
return result;
|
|
13
|
+
deduplicatedReferenceDataChars += result.referenceData.length;
|
|
14
|
+
const content = JSON.stringify(result);
|
|
15
|
+
resultSourceOverrides.push(Object.freeze({
|
|
16
|
+
sourceRef: `payload-result:${result.executionId}`,
|
|
17
|
+
sourceFingerprint: createSemanticCompactionSha256Fingerprint(content),
|
|
18
|
+
content,
|
|
19
|
+
}));
|
|
20
|
+
const { referenceData: _referenceData, ...singleCopyResult } = result;
|
|
21
|
+
return Object.freeze(singleCopyResult);
|
|
22
|
+
});
|
|
23
|
+
return Object.freeze({
|
|
24
|
+
results: Object.freeze(projected),
|
|
25
|
+
resultSourceOverrides: Object.freeze(resultSourceOverrides),
|
|
26
|
+
deduplicatedReferenceDataCount: resultSourceOverrides.length,
|
|
27
|
+
deduplicatedReferenceDataChars,
|
|
28
|
+
});
|
|
29
|
+
}
|
|
@@ -211,6 +211,7 @@ export async function prepareRequestExecution(params) {
|
|
|
211
211
|
resources.assertRestoredStateClaimed();
|
|
212
212
|
const request = createRequestExecutionScope({
|
|
213
213
|
seed,
|
|
214
|
+
...(options.knowledgeSkillStore ? { knowledgeSkillStore: options.knowledgeSkillStore } : {}),
|
|
214
215
|
requestWorkingDirectory,
|
|
215
216
|
executionPolicy,
|
|
216
217
|
...(superFailureFinalization ? { superFailureFinalization } : {}),
|
|
@@ -227,6 +228,7 @@ export async function prepareRequestExecution(params) {
|
|
|
227
228
|
? { runtimeConfig: options.runtimeConfig }
|
|
228
229
|
: {}),
|
|
229
230
|
...(toolRegistry ? { toolRegistryOverride: toolRegistry } : {}),
|
|
231
|
+
knowledgeSkillStore: options.knowledgeSkillStore,
|
|
230
232
|
}),
|
|
231
233
|
});
|
|
232
234
|
return {
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { RoleCallLedger, RoleCallLedgerCommit } from "../orchestration/role-calls/index.js";
|
|
2
|
+
import { type RuntimeDelegateRoleId } from "../orchestration/roles.js";
|
|
3
|
+
export type RequestRoleDelegationEvent = Readonly<{
|
|
4
|
+
name: "role.delegated";
|
|
5
|
+
payload: Readonly<{
|
|
6
|
+
callerCallId: string;
|
|
7
|
+
callerRole: "supervisor";
|
|
8
|
+
childCallId: string;
|
|
9
|
+
childRole: RuntimeDelegateRoleId;
|
|
10
|
+
objective: string;
|
|
11
|
+
}>;
|
|
12
|
+
}>;
|
|
13
|
+
/** Projects the accepted assignment without changing role state or active stage. */
|
|
14
|
+
export declare function projectRequestRoleDelegationCommit(commit: RoleCallLedgerCommit): RequestRoleDelegationEvent | undefined;
|
|
15
|
+
/** Uses the existing synchronous commit boundary, including emission faults. */
|
|
16
|
+
export declare function attachRequestRoleDelegationEvents(params: Readonly<{
|
|
17
|
+
ledger: RoleCallLedger;
|
|
18
|
+
onEvent(name: string, payload: Record<string, unknown>): void;
|
|
19
|
+
}>): void;
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { consumeUnexpectedThenable } from "../orchestration/synchronous-boundary.js";
|
|
2
|
+
import { isRuntimeDelegateRoleId, } from "../orchestration/roles.js";
|
|
3
|
+
/** Projects the accepted assignment without changing role state or active stage. */
|
|
4
|
+
export function projectRequestRoleDelegationCommit(commit) {
|
|
5
|
+
if (!isDirectSupervisorChildOpen(commit))
|
|
6
|
+
return undefined;
|
|
7
|
+
const child = commit.head.state.calls.find((call) => call.callId === commit.effect.childCallId);
|
|
8
|
+
if (!isDirectSupervisorChild(child, commit.effect.callerCallId))
|
|
9
|
+
return undefined;
|
|
10
|
+
return Object.freeze({
|
|
11
|
+
name: "role.delegated",
|
|
12
|
+
payload: Object.freeze({
|
|
13
|
+
callerCallId: commit.effect.callerCallId,
|
|
14
|
+
callerRole: "supervisor",
|
|
15
|
+
childCallId: child.callId,
|
|
16
|
+
childRole: child.roleId,
|
|
17
|
+
objective: child.objective,
|
|
18
|
+
}),
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
/** Uses the existing synchronous commit boundary, including emission faults. */
|
|
22
|
+
export function attachRequestRoleDelegationEvents(params) {
|
|
23
|
+
params.ledger.commits.subscribe((commit) => {
|
|
24
|
+
const event = projectRequestRoleDelegationCommit(commit);
|
|
25
|
+
if (!event)
|
|
26
|
+
return;
|
|
27
|
+
const emitted = Reflect.apply(params.onEvent, undefined, [
|
|
28
|
+
event.name,
|
|
29
|
+
event.payload,
|
|
30
|
+
]);
|
|
31
|
+
if (consumeUnexpectedThenable(emitted))
|
|
32
|
+
throw new TypeError("Request delegation event sink must be synchronous.");
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
function isDirectSupervisorChildOpen(commit) {
|
|
36
|
+
if (commit.effect.type !== "child_opened")
|
|
37
|
+
return false;
|
|
38
|
+
if (commit.head.policy.authority.rootContractId !== "supervisor")
|
|
39
|
+
return false;
|
|
40
|
+
return commit.effect.callerCallId === commit.head.state.rootCallId;
|
|
41
|
+
}
|
|
42
|
+
function isDirectSupervisorChild(child, callerCallId) {
|
|
43
|
+
if (!child)
|
|
44
|
+
return false;
|
|
45
|
+
if (child.parentCallId !== callerCallId)
|
|
46
|
+
return false;
|
|
47
|
+
if (child.depth !== 1)
|
|
48
|
+
return false;
|
|
49
|
+
if (!isRuntimeDelegateRoleId(child.roleId))
|
|
50
|
+
return false;
|
|
51
|
+
return typeof child.objective === "string";
|
|
52
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { type RoleCallLedger, type RoleCallLedgerCommit } from "../orchestration/role-calls/index.js";
|
|
2
|
+
export type RequestRoleReturnEvent = Readonly<{
|
|
3
|
+
name: "role.returned";
|
|
4
|
+
payload: Readonly<{
|
|
5
|
+
callerCallId: string;
|
|
6
|
+
callerRole: "supervisor";
|
|
7
|
+
childCallId: string;
|
|
8
|
+
childRole: "planner";
|
|
9
|
+
outcome: "completed" | "failed";
|
|
10
|
+
summary: string;
|
|
11
|
+
}>;
|
|
12
|
+
}>;
|
|
13
|
+
/** Projects the stored Planner result without changing role state or active stage. */
|
|
14
|
+
export declare function projectRequestRoleReturnCommit(commit: RoleCallLedgerCommit): RequestRoleReturnEvent | undefined;
|
|
15
|
+
/** Uses the existing synchronous commit boundary, including emission faults. */
|
|
16
|
+
export declare function attachRequestRoleReturnEvents(params: Readonly<{
|
|
17
|
+
ledger: RoleCallLedger;
|
|
18
|
+
onEvent(name: string, payload: Record<string, unknown>): void;
|
|
19
|
+
}>): void;
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { consumeUnexpectedThenable } from "../orchestration/synchronous-boundary.js";
|
|
2
|
+
import { isRoleCallResultText, } from "../orchestration/role-calls/index.js";
|
|
3
|
+
/** Projects the stored Planner result without changing role state or active stage. */
|
|
4
|
+
export function projectRequestRoleReturnCommit(commit) {
|
|
5
|
+
if (!isDirectSupervisorChildReturn(commit))
|
|
6
|
+
return undefined;
|
|
7
|
+
const child = commit.head.state.calls.find((call) => call.callId === commit.effect.childCallId);
|
|
8
|
+
if (!isReturnedPlanner(child, commit.effect))
|
|
9
|
+
return undefined;
|
|
10
|
+
const result = commit.head.state.results.find((candidate) => candidate.resultRef === child.resultRef);
|
|
11
|
+
if (!isMatchingPlannerResult(result, child))
|
|
12
|
+
return undefined;
|
|
13
|
+
return Object.freeze({
|
|
14
|
+
name: "role.returned",
|
|
15
|
+
payload: Object.freeze({
|
|
16
|
+
callerCallId: commit.effect.callerCallId,
|
|
17
|
+
callerRole: "supervisor",
|
|
18
|
+
childCallId: child.callId,
|
|
19
|
+
childRole: "planner",
|
|
20
|
+
outcome: result.outcome,
|
|
21
|
+
summary: result.summary,
|
|
22
|
+
}),
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
/** Uses the existing synchronous commit boundary, including emission faults. */
|
|
26
|
+
export function attachRequestRoleReturnEvents(params) {
|
|
27
|
+
params.ledger.commits.subscribe((commit) => {
|
|
28
|
+
const event = projectRequestRoleReturnCommit(commit);
|
|
29
|
+
if (!event)
|
|
30
|
+
return;
|
|
31
|
+
const emitted = Reflect.apply(params.onEvent, undefined, [
|
|
32
|
+
event.name,
|
|
33
|
+
event.payload,
|
|
34
|
+
]);
|
|
35
|
+
if (consumeUnexpectedThenable(emitted))
|
|
36
|
+
throw new TypeError("Request return event sink must be synchronous.");
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
function isDirectSupervisorChildReturn(commit) {
|
|
40
|
+
if (commit.effect.type !== "child_returned")
|
|
41
|
+
return false;
|
|
42
|
+
if (commit.head.policy.authority.rootContractId !== "supervisor")
|
|
43
|
+
return false;
|
|
44
|
+
return commit.effect.callerCallId === commit.head.state.rootCallId;
|
|
45
|
+
}
|
|
46
|
+
function isReturnedPlanner(child, effect) {
|
|
47
|
+
if (!child)
|
|
48
|
+
return false;
|
|
49
|
+
if (child.parentCallId !== effect.callerCallId || child.depth !== 1)
|
|
50
|
+
return false;
|
|
51
|
+
if (child.roleId !== "planner" || child.status !== "completed")
|
|
52
|
+
return false;
|
|
53
|
+
return child.resultRef === effect.resultRef;
|
|
54
|
+
}
|
|
55
|
+
function isMatchingPlannerResult(result, child) {
|
|
56
|
+
if (!result)
|
|
57
|
+
return false;
|
|
58
|
+
if (result.producerCallId !== child.callId || result.roleId !== child.roleId)
|
|
59
|
+
return false;
|
|
60
|
+
if (result.outcome !== "completed" && result.outcome !== "failed")
|
|
61
|
+
return false;
|
|
62
|
+
return isRoleCallResultText(result.summary);
|
|
63
|
+
}
|
|
@@ -43,10 +43,10 @@ export const EXECUTION_AGENT_ROLE_EXECUTORS = projectRequestRoleExecutorRegistry
|
|
|
43
43
|
]);
|
|
44
44
|
const SUPERVISOR_WORKER_V1_POLICY_DEFINITION = Object.freeze({
|
|
45
45
|
id: "supervisor-worker-v1",
|
|
46
|
-
version:
|
|
46
|
+
version: 3,
|
|
47
47
|
rootContract: SUPERVISOR_ROOT_CONTRACT,
|
|
48
48
|
roleExecutors: REQUEST_ROLE_EXECUTORS,
|
|
49
|
-
capabilityAuthorities: Object.freeze(["worker"]),
|
|
49
|
+
capabilityAuthorities: Object.freeze(["root", "worker"]),
|
|
50
50
|
});
|
|
51
51
|
const EXECUTION_AGENT_V1_POLICY_DEFINITION = Object.freeze({
|
|
52
52
|
id: "execution-agent-v1",
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { type WorkerCapabilityBinding } from "../orchestration/worker-capabilities/index.js";
|
|
2
|
+
import { type RoleCallLedger, type RoleCallLedgerHead, type RoleCallFrame } from "../orchestration/role-calls/index.js";
|
|
3
|
+
import type { RequestExecutionScope, RequestCapabilityExecutionView } from "./execution-scope.js";
|
|
4
|
+
import type { RootActivation } from "./root-execution-contracts.js";
|
|
5
|
+
import type { RootContractDecision } from "./root-contract.js";
|
|
6
|
+
/** Existing root capability preparation, shared without changing either policy's execution path. */
|
|
7
|
+
export declare function prepareRootCapabilityBinding(params: {
|
|
8
|
+
request: RequestExecutionScope;
|
|
9
|
+
ledger: RoleCallLedger;
|
|
10
|
+
activation: RootActivation & Readonly<{
|
|
11
|
+
decisionSteeringVersion: number;
|
|
12
|
+
}>;
|
|
13
|
+
decision: Extract<RootContractDecision, {
|
|
14
|
+
action: "invoke_capability" | "invoke_capabilities";
|
|
15
|
+
}>;
|
|
16
|
+
}): Promise<{
|
|
17
|
+
head: RoleCallLedgerHead;
|
|
18
|
+
call: RoleCallFrame;
|
|
19
|
+
binding: WorkerCapabilityBinding<RequestCapabilityExecutionView>;
|
|
20
|
+
}>;
|
|
21
|
+
export declare function requireRootCallFrame(params: {
|
|
22
|
+
head: RoleCallLedgerHead;
|
|
23
|
+
callId: string;
|
|
24
|
+
}): RoleCallFrame;
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { createRootExecutionFreshness } from "./capability-execution-freshness.js";
|
|
2
|
+
import { createRoleCapabilityBinding } from "../orchestration/worker-capabilities/index.js";
|
|
3
|
+
import { resolveRoleCallTransactions } from "../orchestration/role-calls/index.js";
|
|
4
|
+
import { RUNTIME_ROOT_ROLE_ID } from "../orchestration/roles.js";
|
|
5
|
+
import { resolveRequestSteeringInbox } from "./request-steering.js";
|
|
6
|
+
/** Existing root capability preparation, shared without changing either policy's execution path. */
|
|
7
|
+
export async function prepareRootCapabilityBinding(params) {
|
|
8
|
+
const { request, ledger, activation, decision } = params;
|
|
9
|
+
const transactions = resolveRoleCallTransactions(ledger);
|
|
10
|
+
const requestSteering = resolveRequestSteeringInbox(request.requestSteering);
|
|
11
|
+
let head = activation.head;
|
|
12
|
+
let call = activation.call;
|
|
13
|
+
if (decision.workingDirectory !== undefined) {
|
|
14
|
+
const established = await transactions.establishWorkingDirectory({
|
|
15
|
+
expectedHead: head,
|
|
16
|
+
callId: call.callId,
|
|
17
|
+
invocationAttempt: call.activationCount,
|
|
18
|
+
workingDirectory: decision.workingDirectory,
|
|
19
|
+
});
|
|
20
|
+
if (!established.ok) {
|
|
21
|
+
throw new Error(`role_call_ledger_rejected:${established.issueCode}`);
|
|
22
|
+
}
|
|
23
|
+
head = established.commit.head;
|
|
24
|
+
call = requireRootCallFrame({ head, callId: call.callId });
|
|
25
|
+
}
|
|
26
|
+
const binding = createRoleCapabilityBinding({
|
|
27
|
+
requestId: request.requestId,
|
|
28
|
+
context: request.workerCapabilities.executionContext,
|
|
29
|
+
call,
|
|
30
|
+
ledger,
|
|
31
|
+
adapters: request.workerCapabilities.provider.getAdapters(),
|
|
32
|
+
...(request.approvalGate
|
|
33
|
+
? { approvalGate: request.approvalGate }
|
|
34
|
+
: {}),
|
|
35
|
+
...(request.executionPolicy.authority.capabilityAuthorities.includes("root")
|
|
36
|
+
? {
|
|
37
|
+
executionFreshness: createRootExecutionFreshness({
|
|
38
|
+
requestSteering,
|
|
39
|
+
steeringVersion: activation.decisionSteeringVersion,
|
|
40
|
+
}),
|
|
41
|
+
}
|
|
42
|
+
: {}),
|
|
43
|
+
});
|
|
44
|
+
return { head, call, binding };
|
|
45
|
+
}
|
|
46
|
+
export function requireRootCallFrame(params) {
|
|
47
|
+
const call = params.head.state.calls.find((candidate) => candidate.callId === params.callId);
|
|
48
|
+
if (!call ||
|
|
49
|
+
call.callId !== params.head.state.rootCallId ||
|
|
50
|
+
call.parentCallId !== null ||
|
|
51
|
+
call.roleId !== RUNTIME_ROOT_ROLE_ID ||
|
|
52
|
+
call.depth !== 0 ||
|
|
53
|
+
call.status !== "active") {
|
|
54
|
+
throw new Error("supervisor_call_frame_missing");
|
|
55
|
+
}
|
|
56
|
+
return call;
|
|
57
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { ExecutionPolicyAuthoritySnapshot } from "../orchestration/role-calls/index.js";
|
|
2
|
+
import type { RuntimeDelegateRoleId } from "../orchestration/roles.js";
|
|
3
|
+
import type { WorkerCapabilityDescriptor } from "../orchestration/worker-capabilities/contracts.js";
|
|
4
|
+
/** Capture both role projections from the same request-session descriptor read. */
|
|
5
|
+
export declare function captureRootCapabilityCatalog(params: {
|
|
6
|
+
authority: ExecutionPolicyAuthoritySnapshot;
|
|
7
|
+
roleIds: readonly RuntimeDelegateRoleId[];
|
|
8
|
+
getDescriptors: () => readonly WorkerCapabilityDescriptor[];
|
|
9
|
+
}): Readonly<{
|
|
10
|
+
availableWorkerCapabilityCatalog: readonly Readonly<{
|
|
11
|
+
groupId: import("../../capabilities/tool-types.js").ToolCatalogGroup;
|
|
12
|
+
memberCount: number;
|
|
13
|
+
effects: readonly import("../orchestration/worker-capabilities/contracts.js").WorkerCapabilityEffect[];
|
|
14
|
+
}>[];
|
|
15
|
+
availableSkillWriteOperationIds: readonly string[];
|
|
16
|
+
}>;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { projectWorkerCapabilityCatalogGroups } from "../orchestration/worker-capabilities/index.js";
|
|
2
|
+
import { isSupervisorSkillWriteCapabilityId, projectSupervisorWorkerCapabilityDescriptors, } from "../orchestration/worker-capabilities/supervisor-skill-authority.js";
|
|
3
|
+
import { hasSuperContextContract } from "../context/super-context-policy.js";
|
|
4
|
+
/** Capture both role projections from the same request-session descriptor read. */
|
|
5
|
+
export function captureRootCapabilityCatalog(params) {
|
|
6
|
+
const descriptors = canCaptureRootCapabilityCatalog(params.authority, params.roleIds)
|
|
7
|
+
? params.getDescriptors() : [];
|
|
8
|
+
const availableWorkerCapabilityCatalog = projectWorkerCapabilityCatalogGroups(projectSupervisorWorkerCapabilityDescriptors({ authority: params.authority, descriptors }));
|
|
9
|
+
const availableSkillWriteOperationIds = hasSuperContextContract(params.authority, "supervisor")
|
|
10
|
+
? descriptors.map(({ capabilityId }) => capabilityId).filter(isSupervisorSkillWriteCapabilityId) : [];
|
|
11
|
+
return Object.freeze({ availableWorkerCapabilityCatalog,
|
|
12
|
+
availableSkillWriteOperationIds: Object.freeze(availableSkillWriteOperationIds) });
|
|
13
|
+
}
|
|
14
|
+
function canCaptureRootCapabilityCatalog(authority, roleIds) {
|
|
15
|
+
if (authority.capabilityAuthorities.includes("root"))
|
|
16
|
+
return true;
|
|
17
|
+
if (!roleIds.includes("worker"))
|
|
18
|
+
return false;
|
|
19
|
+
return authority.capabilityAuthorities.includes("worker");
|
|
20
|
+
}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import type { SupervisorSkillWriteSelection } from "../steps/supervisor-skill-authoring/contract.js";
|
|
2
|
+
import type { SkillReadDecision } from "../steps/skill-read-decision.js";
|
|
1
3
|
import type { ModelStep } from "../../shared/model-steps.js";
|
|
2
4
|
import type { ModelWorkPlanUpdate } from "../orchestration/role-calls/work-plan-contracts.js";
|
|
3
5
|
import type { ChatMessage } from "../../model-gateway/types.js";
|
|
@@ -16,9 +18,15 @@ export type RootContractCallIdentity = Readonly<{
|
|
|
16
18
|
depth: number;
|
|
17
19
|
invocationAttempt: number;
|
|
18
20
|
}>;
|
|
19
|
-
type RootContractAction = MemoryRecallDecision | Readonly<{
|
|
21
|
+
type RootContractAction = SkillReadDecision | MemoryRecallDecision | Readonly<{
|
|
22
|
+
action: "prepare_skill_write";
|
|
23
|
+
selection: SupervisorSkillWriteSelection;
|
|
24
|
+
acknowledgement?: string;
|
|
25
|
+
title?: string;
|
|
26
|
+
}> | Readonly<{
|
|
20
27
|
action: "respond";
|
|
21
28
|
responseRecommendation?: string;
|
|
29
|
+
responseRecommendationOrigin?: "skill_authoring_no_save";
|
|
22
30
|
directResponse?: RootAuthoredResponse;
|
|
23
31
|
acknowledgement?: string;
|
|
24
32
|
title?: string;
|
|
@@ -92,6 +100,7 @@ export type RootContractAdapter<TRequest> = Readonly<{
|
|
|
92
100
|
includeTitle: boolean;
|
|
93
101
|
allowedRoleIds: readonly RuntimeDelegateRoleId[];
|
|
94
102
|
availableWorkerCapabilityCatalog: readonly WorkerCapabilityCatalogGroup[];
|
|
103
|
+
availableSkillWriteOperationIds?: readonly string[];
|
|
95
104
|
memoryRecallMessage?: ChatMessage;
|
|
96
105
|
resume?: RoleChildReturnContext;
|
|
97
106
|
}>): Promise<RootContractDecisionOutcome>;
|
|
@@ -100,6 +109,7 @@ export type RootContractAdapter<TRequest> = Readonly<{
|
|
|
100
109
|
callFrame: RoleCallFrame;
|
|
101
110
|
steeringVersion: number;
|
|
102
111
|
responseRecommendation?: string;
|
|
112
|
+
responseRecommendationOrigin?: "skill_authoring_no_save";
|
|
103
113
|
directResponse?: RootAuthoredResponse;
|
|
104
114
|
call: RootContractCallIdentity;
|
|
105
115
|
toolResults: RequestToolResultsView;
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { prepareRootCapabilityBinding, requireRootCallFrame } from "./root-capability-binding.js";
|
|
2
|
+
import { captureRootCapabilityCatalog } from "./root-capability-catalog.js";
|
|
3
|
+
import { prepareSupervisorSkillWrite } from "./supervisor-skill-write-preparation.js";
|
|
2
4
|
import { bindRoleApprovalWait, isRoleApprovalWait, } from "../orchestration/role-executors/approval-continuation.js";
|
|
3
5
|
import { isWorkerCapabilityApprovalWait } from "../orchestration/worker-capabilities/approval-contracts.js";
|
|
4
6
|
import { createEnteredChildInvocation } from "../orchestration/role-executors/child-invocation/entered-child.js";
|
|
@@ -9,13 +11,12 @@ import { projectRequestToolResults } from "../context/request-tool-results.js";
|
|
|
9
11
|
import { emitRuntimeStatus } from "../events/runtime-status.js";
|
|
10
12
|
import { isModelStepSteeringSuperseded } from "../model/model-step-steering.js";
|
|
11
13
|
import { resolveRoleCallTransactions, } from "../orchestration/role-calls/index.js";
|
|
12
|
-
import {
|
|
13
|
-
import { createRoleCapabilityBinding, isWorkerCapabilityOperationSupervisionLimitError, projectWorkerCapabilityCatalogGroups, } from "../orchestration/worker-capabilities/index.js";
|
|
14
|
+
import { isWorkerCapabilityOperationSupervisionLimitError, } from "../orchestration/worker-capabilities/index.js";
|
|
14
15
|
import { runPolicyDegradedFinalization, projectPolicyDegradedResult, } from "./policy-degraded-finalization.js";
|
|
15
16
|
import { resolveRequestSteeringInbox, } from "./request-steering.js";
|
|
16
17
|
import { traceSupervisorRootAcknowledgementPublished, traceSupervisorRootActivationFailed, traceSupervisorRootActivationStarted, traceSupervisorRootInvocationSuperseded, traceSupervisorRootResponseSuperseded, } from "./supervisor-root-execution-diagnostics.js";
|
|
17
18
|
import { projectSupervisorFinalObservation, } from "./root-observation-handoff.js";
|
|
18
|
-
import {
|
|
19
|
+
import { isRootReferenceDecision, performRootReferenceAction } from "./root-reference-action.js";
|
|
19
20
|
import { applyRootModelWorkPlan } from "./root-plan-update.js";
|
|
20
21
|
import { projectRootMemoryRecallMessage } from "../long-term-memory/recall-context.js";
|
|
21
22
|
import { createPlainRootAuthoredResponse } from "../orchestration/final-response/authoring-contract.js";
|
|
@@ -38,7 +39,7 @@ class RootExecutionSession {
|
|
|
38
39
|
requestSteering;
|
|
39
40
|
resume;
|
|
40
41
|
observationHandoff;
|
|
41
|
-
|
|
42
|
+
capabilityCatalog;
|
|
42
43
|
acknowledgementPublished = false;
|
|
43
44
|
titlePublished = false;
|
|
44
45
|
constructor(params) {
|
|
@@ -162,12 +163,10 @@ class RootExecutionSession {
|
|
|
162
163
|
}
|
|
163
164
|
async decide(activation, attempt) {
|
|
164
165
|
attempt.failureStage = "project_worker_catalog";
|
|
165
|
-
this.
|
|
166
|
-
this.policy.authority.
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
? projectWorkerCapabilityCatalogGroups(this.request.workerCapabilities.provider.getDescriptors())
|
|
170
|
-
: Object.freeze([]);
|
|
166
|
+
this.capabilityCatalog ??= captureRootCapabilityCatalog({
|
|
167
|
+
authority: this.policy.authority, roleIds: this.policy.roleExecutors.roleIds,
|
|
168
|
+
getDescriptors: () => this.request.workerCapabilities.provider.getDescriptors(),
|
|
169
|
+
});
|
|
171
170
|
attempt.failureStage = "decide";
|
|
172
171
|
const decisionToolResults = projectRequestToolResults({
|
|
173
172
|
ledger: this.ledger,
|
|
@@ -190,7 +189,7 @@ class RootExecutionSession {
|
|
|
190
189
|
!this.titlePublished &&
|
|
191
190
|
this.request.shouldGenerateSessionTitle,
|
|
192
191
|
allowedRoleIds: this.policy.roleExecutors.roleIds,
|
|
193
|
-
|
|
192
|
+
...this.capabilityCatalog,
|
|
194
193
|
...(this.resume ? { resume: this.resume } : {}),
|
|
195
194
|
});
|
|
196
195
|
const requiresFreshPresentation = this.policy.rootContract.deferRespondPresentation === true;
|
|
@@ -239,6 +238,22 @@ class RootExecutionSession {
|
|
|
239
238
|
}
|
|
240
239
|
async executeDecision(activation, attempt) {
|
|
241
240
|
const { decision } = activation;
|
|
241
|
+
if (decision.action === "prepare_skill_write") {
|
|
242
|
+
attempt.failureStage = "apply_root_transition";
|
|
243
|
+
const prepared = await prepareSupervisorSkillWrite({
|
|
244
|
+
request: this.request, ledger: this.ledger,
|
|
245
|
+
activation: { ...activation, decision }, resume: this.resume,
|
|
246
|
+
});
|
|
247
|
+
if (!prepared)
|
|
248
|
+
return CONTINUE_ROOT_EXECUTION;
|
|
249
|
+
activation = prepared.activation;
|
|
250
|
+
this.resume = prepared.resume;
|
|
251
|
+
attempt.head = activation.head;
|
|
252
|
+
attempt.call = activation.call;
|
|
253
|
+
return prepared.activation.decision.action === "respond"
|
|
254
|
+
? this.completeResponse(activation, prepared.activation.decision, attempt)
|
|
255
|
+
: this.invokeCapabilities(activation, prepared.activation.decision, attempt);
|
|
256
|
+
}
|
|
242
257
|
if (decision.workPlan) {
|
|
243
258
|
attempt.failureStage = "apply_root_transition";
|
|
244
259
|
const updated = await applyRootModelWorkPlan({
|
|
@@ -255,16 +270,9 @@ class RootExecutionSession {
|
|
|
255
270
|
attempt.head = updated.head;
|
|
256
271
|
attempt.call = updated.call;
|
|
257
272
|
}
|
|
258
|
-
if (decision
|
|
259
|
-
attempt.failureStage = "recall_memory";
|
|
260
|
-
await
|
|
261
|
-
request: this.request,
|
|
262
|
-
ledger: this.ledger,
|
|
263
|
-
head: activation.head,
|
|
264
|
-
call: activation.call,
|
|
265
|
-
steeringVersion: activation.decisionSteeringVersion,
|
|
266
|
-
query: decision.query,
|
|
267
|
-
});
|
|
273
|
+
if (isRootReferenceDecision(decision)) {
|
|
274
|
+
attempt.failureStage = decision.action === "recall_memory" ? "recall_memory" : "apply_root_transition";
|
|
275
|
+
this.resume = await performRootReferenceAction(this.request, this.ledger, { ...activation, decision }, this.resume);
|
|
268
276
|
return CONTINUE_ROOT_EXECUTION;
|
|
269
277
|
}
|
|
270
278
|
if (decision.action === "invoke_role") {
|
|
@@ -374,41 +382,11 @@ class RootExecutionSession {
|
|
|
374
382
|
return CONTINUE_ROOT_EXECUTION;
|
|
375
383
|
}
|
|
376
384
|
attempt.failureStage = "invoke_child";
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
if (decision.workingDirectory !== undefined) {
|
|
380
|
-
const established = await this.transactions.establishWorkingDirectory({
|
|
381
|
-
expectedHead: head,
|
|
382
|
-
callId: call.callId,
|
|
383
|
-
invocationAttempt: call.activationCount,
|
|
384
|
-
workingDirectory: decision.workingDirectory,
|
|
385
|
-
});
|
|
386
|
-
if (!established.ok) {
|
|
387
|
-
throw new Error(`role_call_ledger_rejected:${established.issueCode}`);
|
|
388
|
-
}
|
|
389
|
-
head = established.commit.head;
|
|
390
|
-
attempt.head = head;
|
|
391
|
-
call = requireRootCallFrame({ head, callId: call.callId });
|
|
392
|
-
attempt.call = call;
|
|
393
|
-
}
|
|
394
|
-
const binding = createRoleCapabilityBinding({
|
|
395
|
-
requestId: this.request.requestId,
|
|
396
|
-
context: this.request.workerCapabilities.executionContext,
|
|
397
|
-
call,
|
|
398
|
-
ledger: this.ledger,
|
|
399
|
-
adapters: this.request.workerCapabilities.provider.getAdapters(),
|
|
400
|
-
...(this.request.approvalGate
|
|
401
|
-
? { approvalGate: this.request.approvalGate }
|
|
402
|
-
: {}),
|
|
403
|
-
...(this.policy.authority.capabilityAuthorities.includes("root")
|
|
404
|
-
? {
|
|
405
|
-
executionFreshness: createRootExecutionFreshness({
|
|
406
|
-
requestSteering: this.requestSteering,
|
|
407
|
-
steeringVersion: activation.decisionSteeringVersion,
|
|
408
|
-
}),
|
|
409
|
-
}
|
|
410
|
-
: {}),
|
|
385
|
+
const { head, call, binding } = await prepareRootCapabilityBinding({
|
|
386
|
+
request: this.request, ledger: this.ledger, activation, decision,
|
|
411
387
|
});
|
|
388
|
+
attempt.head = head;
|
|
389
|
+
attempt.call = call;
|
|
412
390
|
try {
|
|
413
391
|
const execution = decision.action === "invoke_capability"
|
|
414
392
|
? await binding.execute({
|
|
@@ -492,6 +470,7 @@ class RootExecutionSession {
|
|
|
492
470
|
? createPlainRootAuthoredResponse(decision.response)
|
|
493
471
|
: await this.policy.rootContract.authorResponse(this.request, {
|
|
494
472
|
responseRecommendation: decision.responseRecommendation,
|
|
473
|
+
responseRecommendationOrigin: decision.responseRecommendationOrigin,
|
|
495
474
|
directResponse: decision.directResponse,
|
|
496
475
|
memoryRecallMessage: projectRootMemoryRecallMessage({
|
|
497
476
|
head: activation.head,
|
|
@@ -586,15 +565,3 @@ function emitSupervisorResumeStatus(request) {
|
|
|
586
565
|
message: "Processing the delegated result...",
|
|
587
566
|
});
|
|
588
567
|
}
|
|
589
|
-
function requireRootCallFrame(params) {
|
|
590
|
-
const call = params.head.state.calls.find((candidate) => candidate.callId === params.callId);
|
|
591
|
-
if (!call ||
|
|
592
|
-
call.callId !== params.head.state.rootCallId ||
|
|
593
|
-
call.parentCallId !== null ||
|
|
594
|
-
call.roleId !== RUNTIME_ROOT_ROLE_ID ||
|
|
595
|
-
call.depth !== 0 ||
|
|
596
|
-
call.status !== "active") {
|
|
597
|
-
throw new Error("supervisor_call_frame_missing");
|
|
598
|
-
}
|
|
599
|
-
return call;
|
|
600
|
-
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { RoleCallFrame, RoleCallLedger, RoleCallLedgerHead, RoleChildReturnContext } from "../orchestration/role-calls/index.js";
|
|
2
|
+
import type { RootContractDecision } from "./root-contract.js";
|
|
3
|
+
import type { RequestExecutionScope } from "./execution-scope.js";
|
|
4
|
+
type RootReferenceDecision = Extract<RootContractDecision, {
|
|
5
|
+
action: "recall_memory" | "list_skills" | "read_skills";
|
|
6
|
+
}>;
|
|
7
|
+
export declare function isRootReferenceDecision(decision: RootContractDecision): decision is RootReferenceDecision;
|
|
8
|
+
/** Core reference actions use the same root loop without opening a child. */
|
|
9
|
+
export declare function performRootReferenceAction(request: RequestExecutionScope, ledger: RoleCallLedger, activation: {
|
|
10
|
+
head: RoleCallLedgerHead;
|
|
11
|
+
call: RoleCallFrame;
|
|
12
|
+
decisionSteeringVersion: number;
|
|
13
|
+
decision: RootReferenceDecision;
|
|
14
|
+
}, resume: RoleChildReturnContext | undefined): Promise<RoleChildReturnContext | undefined>;
|
|
15
|
+
export {};
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { projectStoredCompletedRoleChild } from "../orchestration/role-calls/child-return.js";
|
|
2
|
+
import { performRootMemoryRecall } from "./root-memory-recall.js";
|
|
3
|
+
import { performRootSkillRead } from "./root-skill-read.js";
|
|
4
|
+
export function isRootReferenceDecision(decision) {
|
|
5
|
+
return ["recall_memory", "list_skills", "read_skills"].includes(decision.action);
|
|
6
|
+
}
|
|
7
|
+
/** Core reference actions use the same root loop without opening a child. */
|
|
8
|
+
export async function performRootReferenceAction(request, ledger, activation, resume) {
|
|
9
|
+
const params = {
|
|
10
|
+
request,
|
|
11
|
+
ledger,
|
|
12
|
+
...activation,
|
|
13
|
+
steeringVersion: activation.decisionSteeringVersion,
|
|
14
|
+
resume,
|
|
15
|
+
};
|
|
16
|
+
if (params.decision.action === "recall_memory") {
|
|
17
|
+
await performRootMemoryRecall({ ...params, query: params.decision.query });
|
|
18
|
+
return params.resume;
|
|
19
|
+
}
|
|
20
|
+
await performRootSkillRead({ ...params, decision: params.decision });
|
|
21
|
+
return projectResumeAfterSkillRead(params.ledger.current(), params.resume);
|
|
22
|
+
}
|
|
23
|
+
/** A reference read advances the root activation without changing its completed children. */
|
|
24
|
+
function projectResumeAfterSkillRead(head, resume) {
|
|
25
|
+
if (!resume)
|
|
26
|
+
return undefined;
|
|
27
|
+
const call = head.state.calls.find(({ callId }) => callId === resume.callerCallId);
|
|
28
|
+
if (!call ||
|
|
29
|
+
call.callId !== head.state.rootCallId ||
|
|
30
|
+
call.status !== "active")
|
|
31
|
+
throw new Error("skill_read_resume_caller_invalid");
|
|
32
|
+
const completedChildren = call.childCallIds.flatMap((childCallId) => {
|
|
33
|
+
const child = head.state.calls.find(({ callId }) => callId === childCallId);
|
|
34
|
+
if (child?.status !== "completed")
|
|
35
|
+
return [];
|
|
36
|
+
return [
|
|
37
|
+
projectStoredCompletedRoleChild(head.state, { callerCallId: call.callId, childCallId }, head.policy),
|
|
38
|
+
];
|
|
39
|
+
});
|
|
40
|
+
if (!completedChildren.some((child) => child.childCallId === resume.returnedChildCallId &&
|
|
41
|
+
child.resultRef === resume.returnedResultRef))
|
|
42
|
+
throw new Error("skill_read_resume_result_invalid");
|
|
43
|
+
return Object.freeze({
|
|
44
|
+
...resume,
|
|
45
|
+
invocationAttempt: call.activationCount,
|
|
46
|
+
completedChildren: Object.freeze(completedChildren),
|
|
47
|
+
});
|
|
48
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { RoleCallFrame, RoleCallLedger, RoleCallLedgerHead } from "../orchestration/role-calls/index.js";
|
|
2
|
+
import type { SkillReadDecision } from "../steps/skill-read-decision.js";
|
|
3
|
+
import type { RequestExecutionScope } from "./execution-scope.js";
|
|
4
|
+
/** Read synchronously, then commit the exact snapshot and the next root activation together. */
|
|
5
|
+
export declare function performRootSkillRead(params: {
|
|
6
|
+
request: RequestExecutionScope;
|
|
7
|
+
ledger: RoleCallLedger;
|
|
8
|
+
head: RoleCallLedgerHead;
|
|
9
|
+
call: RoleCallFrame;
|
|
10
|
+
steeringVersion: number;
|
|
11
|
+
decision: SkillReadDecision;
|
|
12
|
+
}): Promise<void>;
|
|
13
|
+
export declare function canRootReadSkills(request: RequestExecutionScope, head: RoleCallLedgerHead, call: RoleCallFrame): boolean;
|