@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
|
@@ -5,6 +5,14 @@ import {
|
|
|
5
5
|
titleCaseEventValue,
|
|
6
6
|
} from "./event-presentation.js";
|
|
7
7
|
import { textOf } from "./text-format.js";
|
|
8
|
+
import {
|
|
9
|
+
isRoleDelegationEvent,
|
|
10
|
+
projectRoleDelegationEvent,
|
|
11
|
+
} from "./role-delegation-event.js";
|
|
12
|
+
import {
|
|
13
|
+
isRoleReturnEvent,
|
|
14
|
+
projectRoleReturnEvent,
|
|
15
|
+
} from "./role-return-event.js";
|
|
8
16
|
import { countToolInvocations } from "./tool-invocation-count.js";
|
|
9
17
|
import { projectToolActivityEvent } from "./tool-activity-event.js";
|
|
10
18
|
import { correlateToolApprovalActivity } from "./tool-approval-activity.js";
|
|
@@ -32,13 +40,16 @@ const ROLE_RESPONSIBILITIES = Object.freeze({
|
|
|
32
40
|
});
|
|
33
41
|
|
|
34
42
|
function latestRoleAction(group) {
|
|
43
|
+
if (group.summarySupersededByReturn) return "";
|
|
44
|
+
if (!group.latestEvent) return "";
|
|
35
45
|
if (group.toolActions.some((action) => !action.legacy)) {
|
|
36
|
-
return group.latestRoleEvent
|
|
46
|
+
return group.latestRoleEvent && !isSupervisorSkillActivity(group.latestRoleEvent)
|
|
37
47
|
? roleActivitySummary(group.latestRoleEvent)
|
|
38
48
|
: "";
|
|
39
49
|
}
|
|
40
50
|
const toolEvent = group.toolEvents.at(-1);
|
|
41
|
-
|
|
51
|
+
const event = toolEvent || group.latestEvent;
|
|
52
|
+
return isSupervisorSkillActivity(event) ? "" : roleActivitySummary(event);
|
|
42
53
|
}
|
|
43
54
|
|
|
44
55
|
function belongsToRoleRequest(event, requestId) {
|
|
@@ -64,14 +75,20 @@ function orderedRequestActivity(events, requestId) {
|
|
|
64
75
|
for (const event of events) {
|
|
65
76
|
if (!belongsToRoleRequest(event, requestId)) continue;
|
|
66
77
|
const position = activityPosition(event);
|
|
67
|
-
|
|
78
|
+
const delegation = projectRoleDelegationEvent(event);
|
|
79
|
+
const receipt = projectRoleReturnEvent(event);
|
|
80
|
+
if (!position && !delegation && !receipt) {
|
|
68
81
|
unique.push({ event, position });
|
|
69
82
|
continue;
|
|
70
83
|
}
|
|
71
|
-
|
|
84
|
+
let identity;
|
|
85
|
+
if (receipt) identity = `return:${receipt.id}`;
|
|
86
|
+
else if (delegation) identity = `delegation:${delegation.id}`;
|
|
87
|
+
else identity = `${position.domain}:${position.value}`;
|
|
72
88
|
if (seen.has(identity)) continue;
|
|
73
89
|
seen.add(identity);
|
|
74
90
|
unique.push({ event, position });
|
|
91
|
+
if (!position) continue;
|
|
75
92
|
const domain = domains.get(position.domain) || { events: [], next: 0 };
|
|
76
93
|
domain.events.push({ event, position });
|
|
77
94
|
domains.set(position.domain, domain);
|
|
@@ -104,8 +121,14 @@ function isToolActivityEvent(event) {
|
|
|
104
121
|
return activityEventName(event).startsWith("tool.");
|
|
105
122
|
}
|
|
106
123
|
|
|
124
|
+
function isSupervisorSkillActivity(event) {
|
|
125
|
+
return event.stage === "supervisor" && event.phase === "skills"
|
|
126
|
+
&& !isToolActivityEvent(event);
|
|
127
|
+
}
|
|
128
|
+
|
|
107
129
|
function roleActivityStage(event) {
|
|
108
130
|
if (isToolActivityEvent(event)) return "";
|
|
131
|
+
if (isRoleDelegationEvent(event) || isRoleReturnEvent(event)) return "";
|
|
109
132
|
return textOf(event.stage).trim();
|
|
110
133
|
}
|
|
111
134
|
|
|
@@ -114,6 +137,7 @@ function hasSupportedRoleStage(stage) {
|
|
|
114
137
|
}
|
|
115
138
|
|
|
116
139
|
function isFailedRoleActivity(event) {
|
|
140
|
+
if (!event) return false;
|
|
117
141
|
if (isToolActivityEvent(event)) return false;
|
|
118
142
|
return (textOf(event.tone) || eventTone(event)) === "failed";
|
|
119
143
|
}
|
|
@@ -134,6 +158,10 @@ function createRoleGroup(role, event) {
|
|
|
134
158
|
latestRoleEvent: null,
|
|
135
159
|
toolEvents: [],
|
|
136
160
|
toolActions: [],
|
|
161
|
+
skillActivities: [],
|
|
162
|
+
delegations: [],
|
|
163
|
+
returns: [],
|
|
164
|
+
summarySupersededByReturn: false,
|
|
137
165
|
};
|
|
138
166
|
}
|
|
139
167
|
|
|
@@ -153,6 +181,7 @@ function buildRoleCard(group, activeRole, streaming) {
|
|
|
153
181
|
const active = isActiveRoleActivity(group, activeRole, streaming);
|
|
154
182
|
const toolCount = countToolInvocations(group.toolEvents);
|
|
155
183
|
const toolSummary = summarizeConversationTools(group.toolActions);
|
|
184
|
+
const roleIdentityRecorded = group.latestRoleEvent || group.delegations[0];
|
|
156
185
|
let tone = "recorded";
|
|
157
186
|
if (active) tone = "active";
|
|
158
187
|
if (failed) tone = "failed";
|
|
@@ -160,12 +189,17 @@ function buildRoleCard(group, activeRole, streaming) {
|
|
|
160
189
|
id: group.role,
|
|
161
190
|
role: group.role,
|
|
162
191
|
title:
|
|
163
|
-
group.role === "supervisor" && !
|
|
192
|
+
group.role === "supervisor" && !roleIdentityRecorded
|
|
164
193
|
? "Root agent"
|
|
165
194
|
: ROLE_TITLES[group.role],
|
|
166
195
|
responsibility: ROLE_RESPONSIBILITIES[group.role],
|
|
167
196
|
phaseLabel: titleCaseEventValue(group.phase),
|
|
168
197
|
summary: latestRoleAction(group),
|
|
198
|
+
...(group.skillActivities.length > 0
|
|
199
|
+
? { skillActivities: group.skillActivities }
|
|
200
|
+
: {}),
|
|
201
|
+
...(group.delegations.length > 0 ? { delegations: group.delegations } : {}),
|
|
202
|
+
...(group.returns.length > 0 ? { returns: group.returns } : {}),
|
|
169
203
|
toolActions: group.toolActions,
|
|
170
204
|
facts: toolSummary
|
|
171
205
|
? [toolSummary]
|
|
@@ -203,6 +237,23 @@ export function buildConversationRoleCards({
|
|
|
203
237
|
continue;
|
|
204
238
|
}
|
|
205
239
|
|
|
240
|
+
const delegation = projectRoleDelegationEvent(event);
|
|
241
|
+
if (delegation) {
|
|
242
|
+
const group = groups.get("supervisor") || createRoleGroup("supervisor", null);
|
|
243
|
+
group.delegations.push(delegation);
|
|
244
|
+
groups.set("supervisor", group);
|
|
245
|
+
continue;
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
const receipt = projectRoleReturnEvent(event);
|
|
249
|
+
if (receipt) {
|
|
250
|
+
const group = groups.get("planner") || createRoleGroup("planner", null);
|
|
251
|
+
group.returns.push(receipt);
|
|
252
|
+
group.summarySupersededByReturn = true;
|
|
253
|
+
groups.set("planner", group);
|
|
254
|
+
continue;
|
|
255
|
+
}
|
|
256
|
+
|
|
206
257
|
const stage = roleActivityStage(event);
|
|
207
258
|
if (stage) {
|
|
208
259
|
activeRole = "";
|
|
@@ -212,6 +263,13 @@ export function buildConversationRoleCards({
|
|
|
212
263
|
group.phase = textOf(event.phase);
|
|
213
264
|
group.latestEvent = event;
|
|
214
265
|
group.latestRoleEvent = event;
|
|
266
|
+
group.summarySupersededByReturn = false;
|
|
267
|
+
if (isSupervisorSkillActivity(event)) {
|
|
268
|
+
group.skillActivities.push({
|
|
269
|
+
summary: roleActivitySummary(event),
|
|
270
|
+
tone: textOf(event.tone) || eventTone(event),
|
|
271
|
+
});
|
|
272
|
+
}
|
|
215
273
|
groups.set(stage, group);
|
|
216
274
|
}
|
|
217
275
|
}
|
|
@@ -1,8 +1,19 @@
|
|
|
1
1
|
import { textOf } from "./text-format.js";
|
|
2
2
|
import { isStopResult } from "./request-stop-state.js";
|
|
3
|
+
import {
|
|
4
|
+
isRoleDelegationEvent,
|
|
5
|
+
projectRoleDelegationEvent,
|
|
6
|
+
} from "./role-delegation-event.js";
|
|
7
|
+
|
|
8
|
+
import {
|
|
9
|
+
isRoleReturnEvent,
|
|
10
|
+
projectRoleReturnEvent,
|
|
11
|
+
} from "./role-return-event.js";
|
|
3
12
|
|
|
4
13
|
function canMergeEventTimelineEntries(previous, event, name, summary) {
|
|
5
14
|
if (!previous) return false;
|
|
15
|
+
if (isRoleDelegationEvent(previous) || isRoleDelegationEvent(event)) return false;
|
|
16
|
+
if (isRoleReturnEvent(previous) || isRoleReturnEvent(event)) return false;
|
|
6
17
|
if (previous.name !== name) return false;
|
|
7
18
|
if (previous.summary !== summary) return false;
|
|
8
19
|
if (previous.tone !== event.tone) return false;
|
|
@@ -119,7 +130,22 @@ export function getPlanItemPayload(message) {
|
|
|
119
130
|
};
|
|
120
131
|
}
|
|
121
132
|
|
|
133
|
+
function isMissingSkillLookup(message) {
|
|
134
|
+
if (message.type !== "event") return false;
|
|
135
|
+
if (message.stage !== "supervisor") return false;
|
|
136
|
+
if (message.phase !== "skills") return false;
|
|
137
|
+
// Runtime-owned status text, before or after event enrichment.
|
|
138
|
+
const name = textOf(message.name || message.rawType);
|
|
139
|
+
const status = textOf(message.message || name);
|
|
140
|
+
return (name === "runtime.state" || name === status)
|
|
141
|
+
&& status === "Skill lookup failed: knowledge_skill_not_found";
|
|
142
|
+
}
|
|
143
|
+
|
|
122
144
|
export function formatEventLabel(message) {
|
|
145
|
+
const receipt = projectRoleReturnEvent(message);
|
|
146
|
+
if (receipt) return receipt.outcome === "failed" ? "Planner failed" : "Returned result";
|
|
147
|
+
const delegation = projectRoleDelegationEvent(message);
|
|
148
|
+
if (delegation) return `Delegated to ${titleCaseEventValue(delegation.childRole)}`;
|
|
123
149
|
const name = textOf(message.name || message.rawType || message.type);
|
|
124
150
|
const status = textOf(message.status);
|
|
125
151
|
const phase = textOf(message.phase);
|
|
@@ -155,6 +181,7 @@ export function formatEventLabel(message) {
|
|
|
155
181
|
if (name === "request.failed" || message.type === "failed") {
|
|
156
182
|
return isStopResult(message) ? "Response stopped" : "Response failed";
|
|
157
183
|
}
|
|
184
|
+
if (isMissingSkillLookup(message)) return "Skill not found";
|
|
158
185
|
if (name === "runtime.state") {
|
|
159
186
|
return status || textOf(message.output) || "Runtime state";
|
|
160
187
|
}
|
|
@@ -180,6 +207,11 @@ function uncompletedToolLabel(message, name) {
|
|
|
180
207
|
}
|
|
181
208
|
|
|
182
209
|
export function formatEventDetail(message) {
|
|
210
|
+
const receipt = projectRoleReturnEvent(message);
|
|
211
|
+
if (receipt) return receipt.summary;
|
|
212
|
+
const delegation = projectRoleDelegationEvent(message);
|
|
213
|
+
if (delegation) return delegation.objective;
|
|
214
|
+
if (isMissingSkillLookup(message)) return "";
|
|
183
215
|
if (isStopResult(message)) return "Stopped by you.";
|
|
184
216
|
const parts = [];
|
|
185
217
|
const name = textOf(message.name || message.rawType || message.type);
|
|
@@ -209,10 +241,12 @@ export function formatEventDetail(message) {
|
|
|
209
241
|
}
|
|
210
242
|
|
|
211
243
|
export function eventTone(message) {
|
|
244
|
+
if (isRoleReturnEvent(message)) return "neutral";
|
|
212
245
|
const name = textOf(message.name || message.type);
|
|
213
246
|
const normalized = name.toLowerCase();
|
|
214
247
|
if (isStopResult(message)) return "neutral";
|
|
215
248
|
if (isUncompletedToolEvent(message)) return "neutral";
|
|
249
|
+
if (isMissingSkillLookup(message)) return "neutral";
|
|
216
250
|
if (
|
|
217
251
|
message.ok === false ||
|
|
218
252
|
textOf(message.status).toLowerCase() === "failed" ||
|
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
import { escapeHtml } from "./text-format.js";
|
|
2
2
|
|
|
3
|
+
export function displayReasoningMode(mode) {
|
|
4
|
+
if (mode === "fast") return "Low";
|
|
5
|
+
return mode;
|
|
6
|
+
}
|
|
7
|
+
|
|
3
8
|
export function canChooseReasoning(profile) {
|
|
4
9
|
return profile?.supportsThinking === true;
|
|
5
10
|
}
|
|
@@ -7,7 +12,7 @@ export function canChooseReasoning(profile) {
|
|
|
7
12
|
/** Keep the stored mode for compatibility while showing the effective provider default. */
|
|
8
13
|
export function reasoningModeOptions(mode, enabled, modes = ["fast", "reasoning", "deep"]) {
|
|
9
14
|
if (!enabled) return `<option value="${escapeHtml(mode || "reasoning")}">Provider default</option>`;
|
|
10
|
-
const labels = { fast: "
|
|
15
|
+
const labels = { fast: "Low", reasoning: "Reasoning", deep: "Deep", auto: "Auto" };
|
|
11
16
|
return modes.map((value) => `<option value="${escapeHtml(value)}"${value === mode ? " selected" : ""}>${escapeHtml(labels[value] || value)}</option>`).join("");
|
|
12
17
|
}
|
|
13
18
|
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export interface RoleDelegation {
|
|
2
|
+
id: string;
|
|
3
|
+
generation: string;
|
|
4
|
+
callerCallId: string;
|
|
5
|
+
callerRole: "supervisor";
|
|
6
|
+
childCallId: string;
|
|
7
|
+
childRole: "planner" | "worker" | "researcher" | "reviewer";
|
|
8
|
+
objective: string;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
export declare function isRoleDelegationEvent(event: unknown): boolean;
|
|
12
|
+
export declare function projectRoleDelegationEvent(
|
|
13
|
+
event: Record<string, unknown>,
|
|
14
|
+
): RoleDelegation | null;
|
|
15
|
+
export declare function hasRecordedRoleDelegation(
|
|
16
|
+
events: Record<string, unknown>[],
|
|
17
|
+
delegation: RoleDelegation,
|
|
18
|
+
): boolean;
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
const DELEGATED_ROLES = new Set([
|
|
2
|
+
"planner", "worker", "researcher", "reviewer",
|
|
3
|
+
]);
|
|
4
|
+
|
|
5
|
+
export function isRoleDelegationEvent(event) {
|
|
6
|
+
return (event?.eventName || event?.name || event?.rawType || event?.type)
|
|
7
|
+
=== "role.delegated";
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
function hasDelegationIdentity(value) {
|
|
11
|
+
if (typeof value !== "string") return false;
|
|
12
|
+
return value.trim().length > 0;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
function hasDelegationObjective(value) {
|
|
16
|
+
if (typeof value !== "string") return false;
|
|
17
|
+
if (value.length > 8_192) return false;
|
|
18
|
+
return value.trim().length > 0;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
/** Explicit committed delegation evidence, without inferred role or objective data. */
|
|
22
|
+
export function projectRoleDelegationEvent(event) {
|
|
23
|
+
if (!isRoleDelegationEvent(event)) return null;
|
|
24
|
+
const source = event.roleDelegation || event;
|
|
25
|
+
if (source.callerRole !== "supervisor") return null;
|
|
26
|
+
if (!DELEGATED_ROLES.has(source.childRole)) return null;
|
|
27
|
+
if (!hasDelegationIdentity(event.requestId)) return null;
|
|
28
|
+
if (!hasDelegationIdentity(source.callerCallId)) return null;
|
|
29
|
+
if (!hasDelegationIdentity(source.childCallId)) return null;
|
|
30
|
+
if (!hasDelegationObjective(source.objective)) return null;
|
|
31
|
+
if (source.generation !== undefined && typeof source.generation !== "string")
|
|
32
|
+
return null;
|
|
33
|
+
const generation = source.generation || "";
|
|
34
|
+
return {
|
|
35
|
+
id: JSON.stringify([event.requestId, generation, source.childCallId]),
|
|
36
|
+
generation,
|
|
37
|
+
callerCallId: source.callerCallId,
|
|
38
|
+
callerRole: source.callerRole,
|
|
39
|
+
childCallId: source.childCallId,
|
|
40
|
+
childRole: source.childRole,
|
|
41
|
+
objective: source.objective,
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
export function hasRecordedRoleDelegation(events, delegation) {
|
|
46
|
+
return events.some((event) => event.roleDelegation?.id === delegation.id);
|
|
47
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export interface RoleReturn {
|
|
2
|
+
id: string;
|
|
3
|
+
generation: string;
|
|
4
|
+
callerCallId: string;
|
|
5
|
+
callerRole: "supervisor";
|
|
6
|
+
childCallId: string;
|
|
7
|
+
childRole: "planner";
|
|
8
|
+
outcome: "completed" | "failed";
|
|
9
|
+
summary: string;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
export declare function isRoleReturnEvent(event: unknown): boolean;
|
|
13
|
+
export declare function projectRoleReturnEvent(
|
|
14
|
+
event: Record<string, unknown>,
|
|
15
|
+
): RoleReturn | null;
|
|
16
|
+
export declare function hasRecordedRoleReturn(
|
|
17
|
+
events: Record<string, unknown>[],
|
|
18
|
+
receipt: RoleReturn,
|
|
19
|
+
): boolean;
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
export function isRoleReturnEvent(event) {
|
|
2
|
+
return (event?.eventName || event?.name || event?.rawType || event?.type)
|
|
3
|
+
=== "role.returned";
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
function hasReturnIdentity(value) {
|
|
7
|
+
return typeof value === "string" && value.trim().length > 0;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
export function projectRoleReturnEvent(event) {
|
|
11
|
+
if (!isRoleReturnEvent(event)) return null;
|
|
12
|
+
const source = event.roleReturn || event;
|
|
13
|
+
if (source.callerRole !== "supervisor") return null;
|
|
14
|
+
if (source.childRole !== "planner") return null;
|
|
15
|
+
if (source.outcome !== "completed" && source.outcome !== "failed") return null;
|
|
16
|
+
if (!hasReturnIdentity(event.requestId)) return null;
|
|
17
|
+
if (!hasReturnIdentity(source.callerCallId)) return null;
|
|
18
|
+
if (!hasReturnIdentity(source.childCallId)) return null;
|
|
19
|
+
if (typeof source.summary !== "string" || !source.summary.trim()) return null;
|
|
20
|
+
if (source.generation !== undefined && typeof source.generation !== "string") return null;
|
|
21
|
+
const generation = source.generation || "";
|
|
22
|
+
return {
|
|
23
|
+
id: JSON.stringify([event.requestId, generation, source.childCallId]),
|
|
24
|
+
generation,
|
|
25
|
+
callerCallId: source.callerCallId,
|
|
26
|
+
callerRole: source.callerRole,
|
|
27
|
+
childCallId: source.childCallId,
|
|
28
|
+
childRole: source.childRole,
|
|
29
|
+
outcome: source.outcome,
|
|
30
|
+
summary: source.summary,
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
export function hasRecordedRoleReturn(events, receipt) {
|
|
35
|
+
return events.some((event) => event.roleReturn?.id === receipt.id);
|
|
36
|
+
}
|
|
@@ -2,6 +2,7 @@ import { getRecord, titleCaseEventValue } from "./event-presentation.js";
|
|
|
2
2
|
import { projectConversationFileReference } from "./conversation-file-reference.js";
|
|
3
3
|
import { computerInputFields } from "./tool-computer-activity-fields.js";
|
|
4
4
|
import { automationActivityFields } from "./tool-automation-activity-fields.js";
|
|
5
|
+
import { skillActivityFields } from "./tool-skill-activity-fields.js";
|
|
5
6
|
import {
|
|
6
7
|
processInputFields,
|
|
7
8
|
processResultFields,
|
|
@@ -193,10 +194,11 @@ export function projectToolActivityEvent(message) {
|
|
|
193
194
|
const params = getRecord(meta.params);
|
|
194
195
|
const inputMeta = { ...meta, params };
|
|
195
196
|
const fileReference = projectConversationFileReference(message);
|
|
196
|
-
const
|
|
197
|
+
const skill = skillActivityFields(meta, tool, completed, message.ok);
|
|
198
|
+
const activity = skill ?? automationActivityFields(meta, tool);
|
|
197
199
|
return {
|
|
198
200
|
...(fileReference ? { fileReference } : {}),
|
|
199
|
-
...(
|
|
201
|
+
...(activity?.activityTitle ? { activityTitle: activity.activityTitle } : {}),
|
|
200
202
|
name,
|
|
201
203
|
tool,
|
|
202
204
|
executionId: boundedText(message.executionId, 200).trim(),
|
|
@@ -206,7 +208,7 @@ export function projectToolActivityEvent(message) {
|
|
|
206
208
|
beforeExternalExecution: message.stage === "before_external_execution",
|
|
207
209
|
intent: boundedText(message.intent || meta.intent),
|
|
208
210
|
target: boundedText(
|
|
209
|
-
|
|
211
|
+
activity?.target ||
|
|
210
212
|
meta.source ||
|
|
211
213
|
meta.displayTarget ||
|
|
212
214
|
meta.path ||
|
|
@@ -215,10 +217,10 @@ export function projectToolActivityEvent(message) {
|
|
|
215
217
|
meta.id ||
|
|
216
218
|
meta.savedId,
|
|
217
219
|
),
|
|
218
|
-
sent: [...inputFields(inputMeta, completed, tool), ...(
|
|
220
|
+
sent: [...inputFields(inputMeta, completed, tool), ...(activity?.sent || [])],
|
|
219
221
|
received: terminal ? resultFields(meta, tool, message.ok) : [],
|
|
220
|
-
preview: terminal ? boundedText(meta.outputPreview, 1_200) : "",
|
|
221
|
-
previewTruncated: terminal && hasClippedPreview(meta),
|
|
222
|
+
preview: terminal && !skill ? boundedText(meta.outputPreview, 1_200) : "",
|
|
223
|
+
previewTruncated: terminal && !skill && hasClippedPreview(meta),
|
|
222
224
|
partial: terminal && hasPartialSource(meta),
|
|
223
225
|
outcome: completedOutcome(meta),
|
|
224
226
|
ok: typeof message.ok === "boolean" ? message.ok : null,
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
const ACTION_TITLES = Object.freeze({
|
|
2
|
+
list_skills: "List skills",
|
|
3
|
+
read_skill: "Read skill",
|
|
4
|
+
read_skills: "Read skills",
|
|
5
|
+
create_skill: "Create skill",
|
|
6
|
+
update_skill: "Edit skill",
|
|
7
|
+
});
|
|
8
|
+
|
|
9
|
+
function boundedSkillText(value, limit) {
|
|
10
|
+
if (typeof value !== "string") return "";
|
|
11
|
+
const text = value.trim();
|
|
12
|
+
if (text.length <= limit) return text;
|
|
13
|
+
return `${text.slice(0, limit - 1)}…`;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
function isSkillReadAction(action) {
|
|
17
|
+
return action === "read_skill" || action === "read_skills";
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
function hasSuccessfulSkillResult(action, completed, ok) {
|
|
21
|
+
if (action === "list_skills" || !Object.hasOwn(ACTION_TITLES, action)) return false;
|
|
22
|
+
if (!completed) return false;
|
|
23
|
+
return ok === true;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
/** Decode declared display metadata only; never inspect a Skill body or tool output. */
|
|
27
|
+
export function skillActivityFields(meta, tool, completed, ok) {
|
|
28
|
+
if (tool !== "abot_skills") return null;
|
|
29
|
+
const action = boundedSkillText(meta.skillAction, 128);
|
|
30
|
+
const activityTitle = Object.hasOwn(ACTION_TITLES, action)
|
|
31
|
+
? ACTION_TITLES[action]
|
|
32
|
+
: "";
|
|
33
|
+
const sent = [];
|
|
34
|
+
if (activityTitle) sent.push({ label: "Action", value: activityTitle });
|
|
35
|
+
if (action === "list_skills" || !activityTitle) return { activityTitle, target: "", sent };
|
|
36
|
+
|
|
37
|
+
const readAction = isSkillReadAction(action);
|
|
38
|
+
const referenceLimit = readAction ? 160 : 128;
|
|
39
|
+
const referenceLabel = readAction ? "Skill reference" : "Skill ID";
|
|
40
|
+
const skillId = action === "read_skills"
|
|
41
|
+
? boundedSkillText(Array.isArray(meta.skillIds)
|
|
42
|
+
? meta.skillIds.slice(0, 8).map((id) => boundedSkillText(id, referenceLimit)).filter(Boolean).join(", ")
|
|
43
|
+
: "", 160)
|
|
44
|
+
: boundedSkillText(meta.skillId, referenceLimit) || (completed && ok === true ? boundedSkillText(meta.savedSkillId, 128) : "");
|
|
45
|
+
const skillTitle = hasSuccessfulSkillResult(action, completed, ok)
|
|
46
|
+
? boundedSkillText(meta.skillTitle, 160)
|
|
47
|
+
: "";
|
|
48
|
+
if (skillId) sent.push({ label: action === "read_skills" ? "Skill references" : referenceLabel, value: skillId });
|
|
49
|
+
return { activityTitle, target: skillTitle || boundedSkillText(meta.skillName, 160) || skillId, sent };
|
|
50
|
+
}
|
|
@@ -77,8 +77,8 @@ export function createPassiveLearningFeature({
|
|
|
77
77
|
macConsent.cancel();
|
|
78
78
|
controller.environmentChanged();
|
|
79
79
|
},
|
|
80
|
-
mountHome: (root) => {
|
|
81
|
-
home.mount(root);
|
|
80
|
+
mountHome: (root, onRendered) => {
|
|
81
|
+
home.mount(root, onRendered);
|
|
82
82
|
home.render(controller.snapshot());
|
|
83
83
|
},
|
|
84
84
|
});
|
|
@@ -6,6 +6,14 @@ export type AutomationDraftResponse = Readonly<{
|
|
|
6
6
|
validation?: Record<string, unknown> | null;
|
|
7
7
|
}>;
|
|
8
8
|
|
|
9
|
+
export type AutomationRunHistoryQuery = Readonly<{
|
|
10
|
+
limit?: number;
|
|
11
|
+
cursor?: string;
|
|
12
|
+
status?: string;
|
|
13
|
+
from?: string;
|
|
14
|
+
to?: string;
|
|
15
|
+
}>;
|
|
16
|
+
|
|
9
17
|
export type AutomationRequests = Readonly<{
|
|
10
18
|
supportsAutomations(): boolean;
|
|
11
19
|
listAutomations(environmentId?: string): Promise<{ automations: Record<string, unknown>[] }>;
|
|
@@ -22,7 +30,7 @@ export type AutomationRequests = Readonly<{
|
|
|
22
30
|
setAutomationPermission(automationId: string, input: { expectedGrantRevision: number; mode: "full_access" | "full_plus"; operations: OperationRef[] }, environmentId?: string): Promise<Record<string, unknown>>;
|
|
23
31
|
getAutomationCatalog(automationId: string, environmentId?: string): Promise<Record<string, unknown>>;
|
|
24
32
|
startAutomationRun(automationId: string, idempotencyKey: string, environmentId?: string): Promise<Record<string, unknown>>;
|
|
25
|
-
listAutomationRuns(automationId: string, environmentId?: string): Promise<Record<string, unknown>>;
|
|
33
|
+
listAutomationRuns(automationId: string, environmentId?: string, query?: AutomationRunHistoryQuery): Promise<Record<string, unknown>>;
|
|
26
34
|
getAutomationRun(runId: string, environmentId?: string): Promise<Record<string, unknown>>;
|
|
27
35
|
getAutomationStepEvidence(runId: string, nodeId: string, environmentId?: string, full?: boolean): Promise<Record<string, unknown>>;
|
|
28
36
|
stopAutomationRun(runId: string, environmentId?: string): Promise<Record<string, unknown>>;
|
|
@@ -14,6 +14,14 @@ export function createAutomationRequests({ requestApi, getEnvironmentId, getConf
|
|
|
14
14
|
const post = (url, input) => requestAutomation(url, {
|
|
15
15
|
method: "POST", body: JSON.stringify(input),
|
|
16
16
|
});
|
|
17
|
+
const historyPath = (automationId, environmentId, query) => {
|
|
18
|
+
const params = new URLSearchParams();
|
|
19
|
+
for (const key of ["limit", "cursor", "status", "from", "to"])
|
|
20
|
+
if (query[key] !== undefined && query[key] !== null && query[key] !== "")
|
|
21
|
+
params.set(key, String(query[key]));
|
|
22
|
+
const suffix = params.size ? `&${params}` : "";
|
|
23
|
+
return `${path(`/${encodeURIComponent(automationId)}/runs`, environmentId)}${suffix}`;
|
|
24
|
+
};
|
|
17
25
|
return {
|
|
18
26
|
supportsAutomations,
|
|
19
27
|
listAutomations: (environmentId) => requestAutomation(path("", environmentId)),
|
|
@@ -59,8 +67,8 @@ export function createAutomationRequests({ requestApi, getEnvironmentId, getConf
|
|
|
59
67
|
},
|
|
60
68
|
startAutomationRun: (automationId, idempotencyKey, environmentId) =>
|
|
61
69
|
post(path(`/${encodeURIComponent(automationId)}/run`, environmentId), { idempotencyKey }),
|
|
62
|
-
listAutomationRuns: (automationId, environmentId) =>
|
|
63
|
-
requestAutomation(
|
|
70
|
+
listAutomationRuns: (automationId, environmentId, query = {}) =>
|
|
71
|
+
requestAutomation(historyPath(automationId, environmentId, query)),
|
|
64
72
|
getAutomationRun: (runId, environmentId) => requestAutomation(runPath(runId, environmentId)),
|
|
65
73
|
getAutomationStepEvidence: (runId, nodeId, environmentId, full = false) => requestAutomation(
|
|
66
74
|
`/automation-runs/${encodeURIComponent(runId)}/steps/${encodeURIComponent(nodeId)}?environment=${encodeURIComponent(environmentId || getEnvironmentId())}${full ? "&full=1" : ""}`),
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
export function createSkillRequests({ requestApi, getEnvironmentId, getConfig }) {
|
|
2
|
+
const supportsSkills = () => getConfig()?.backend === "runtime";
|
|
3
|
+
const path = (suffix, environmentId) =>
|
|
4
|
+
`/runtime/skills${suffix}?environment=${encodeURIComponent(environmentId)}`;
|
|
5
|
+
function request(suffix, environmentId, options) {
|
|
6
|
+
if (!supportsSkills()) throw new Error("Skills require the local Runtime backend.");
|
|
7
|
+
return requestApi(path(suffix, environmentId), options);
|
|
8
|
+
}
|
|
9
|
+
const identity = (id) => `/${encodeURIComponent(id)}`;
|
|
10
|
+
return {
|
|
11
|
+
supportsSkills,
|
|
12
|
+
createPersonalSkill: ({ name, description, content }, environmentId = getEnvironmentId()) =>
|
|
13
|
+
request("", environmentId, { method: "POST", body: JSON.stringify({ name, description, content }) }),
|
|
14
|
+
listPersonalSkills: (environmentId = getEnvironmentId()) => request("", environmentId),
|
|
15
|
+
readPersonalSkill: (id, environmentId = getEnvironmentId()) => request(identity(id), environmentId),
|
|
16
|
+
updatePersonalSkill: (id, content, expectedRevision, environmentId = getEnvironmentId()) =>
|
|
17
|
+
request(identity(id), environmentId, { method: "PATCH", body: JSON.stringify({ content, expectedRevision }) }),
|
|
18
|
+
archivePersonalSkill: (id, expectedRevision, environmentId = getEnvironmentId()) =>
|
|
19
|
+
request(`${identity(id)}/archive`, environmentId, { method: "POST", body: JSON.stringify({ expectedRevision }) }),
|
|
20
|
+
restorePersonalSkill: (id, expectedRevision, environmentId = getEnvironmentId()) =>
|
|
21
|
+
request(`${identity(id)}/restore`, environmentId, { method: "POST", body: JSON.stringify({ expectedRevision }) }),
|
|
22
|
+
};
|
|
23
|
+
}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { createSkillRequests } from "./runtime-web-client/skills.js";
|
|
1
2
|
import { createNotificationRequests } from "./runtime-web-client/notifications.js";
|
|
2
3
|
import { createSparkChatRequests } from "./runtime-web-client/spark-chat.js";
|
|
3
4
|
import { createProjectRequests } from "./runtime-web-client/projects.js";
|
|
@@ -380,6 +381,7 @@ export function createRuntimeWebClient({
|
|
|
380
381
|
...createProjectRequests({ requestApi, getEnvironmentId, getConfig }),
|
|
381
382
|
...createToolApprovalRequests({ requestApi, getEnvironmentId, getConfig }),
|
|
382
383
|
...createNotificationRequests({ requestApi, getEnvironmentId, getConfig }),
|
|
384
|
+
...createSkillRequests({ requestApi, getEnvironmentId, getConfig }),
|
|
383
385
|
...createSparkChatRequests({ requestApi, getEnvironmentId, getConfig }),
|
|
384
386
|
};
|
|
385
387
|
}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { createSkillsController } from "./controllers/skills-controller.js";
|
|
2
|
+
import { mountSkillsWorkspace, createSkillsWorkspace } from "./components/skills/workspace.js";
|
|
3
|
+
|
|
4
|
+
export function createSkillsFeature({ dom, client, shell, getEnvironmentId,
|
|
5
|
+
documentRoot = document, viewport = window }) {
|
|
6
|
+
mountSkillsWorkspace(dom, documentRoot);
|
|
7
|
+
let view;
|
|
8
|
+
const controller = createSkillsController({ client, getEnvironmentId,
|
|
9
|
+
confirmDiscard: (message) => viewport.confirm(message), render: (snapshot) => view?.render(snapshot) });
|
|
10
|
+
view = createSkillsWorkspace({ root: dom.skillsRoot, actions: controller,
|
|
11
|
+
confirmArchive: (message) => viewport.confirm(message) });
|
|
12
|
+
view.render(controller.snapshot());
|
|
13
|
+
shell.addWorkspaceGuard(({ from, to }) => {
|
|
14
|
+
if (from !== "skills" || to === "skills") return true;
|
|
15
|
+
return controller.prepareLeave();
|
|
16
|
+
});
|
|
17
|
+
shell.subscribeWorkspaceChange((workspace) => controller.setActive(workspace === "skills"));
|
|
18
|
+
function bind() {
|
|
19
|
+
// Bind after the canonical transition: rejected raw changes never clear drafts.
|
|
20
|
+
dom.environmentSelect.addEventListener("change", () => controller.environmentChanged());
|
|
21
|
+
viewport.addEventListener("beforeunload", (event) => {
|
|
22
|
+
if (!controller.isDirty()) return;
|
|
23
|
+
event.preventDefault();
|
|
24
|
+
event.returnValue = "";
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
function refreshAvailability() {
|
|
28
|
+
const available = client.supportsSkills();
|
|
29
|
+
dom.skillsWorkspaceButton.hidden = !available;
|
|
30
|
+
dom.skillsWorkspaceButton.disabled = !available || dom.skillsWorkspaceButton.dataset.onboardingBlocked === "true";
|
|
31
|
+
if (!available) controller.setActive(false);
|
|
32
|
+
}
|
|
33
|
+
shell.subscribeRuntimeAvailabilityChange(refreshAvailability);
|
|
34
|
+
return { bind, refreshAvailability, prepareEnvironmentChange: controller.prepareLeave,
|
|
35
|
+
isWorkspaceAvailable: (destination) => destination !== "skills" || client.supportsSkills() };
|
|
36
|
+
}
|