@namzu/sdk 48.3.1 → 50.0.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/CHANGELOG.md +542 -0
- package/README.md +137 -125
- package/dist/agents/QueryAgent.d.ts.map +1 -1
- package/dist/agents/QueryAgent.js +1 -0
- package/dist/agents/QueryAgent.js.map +1 -1
- package/dist/agents/examples/SupervisorAgent.d.ts.map +1 -1
- package/dist/agents/examples/SupervisorAgent.js +1 -0
- package/dist/agents/examples/SupervisorAgent.js.map +1 -1
- package/dist/agents/runAgent.d.ts +2 -0
- package/dist/agents/runAgent.d.ts.map +1 -1
- package/dist/agents/runAgent.js +1 -0
- package/dist/agents/runAgent.js.map +1 -1
- package/dist/authorization/shell-lexer.d.ts.map +1 -1
- package/dist/authorization/shell-lexer.js +16 -1
- package/dist/authorization/shell-lexer.js.map +1 -1
- package/dist/bridge/acp/permission.d.ts +8 -2
- package/dist/bridge/acp/permission.d.ts.map +1 -1
- package/dist/bridge/acp/permission.js +1 -0
- package/dist/bridge/acp/permission.js.map +1 -1
- package/dist/bridge/acp/server.d.ts +25 -1
- package/dist/bridge/acp/server.d.ts.map +1 -1
- package/dist/bridge/acp/server.js +205 -21
- package/dist/bridge/acp/server.js.map +1 -1
- package/dist/bridge/acp/tasks.d.ts +5 -0
- package/dist/bridge/acp/tasks.d.ts.map +1 -0
- package/dist/bridge/acp/tasks.js +19 -0
- package/dist/bridge/acp/tasks.js.map +1 -0
- package/dist/bridge/acp/update.d.ts.map +1 -1
- package/dist/bridge/acp/update.js +148 -13
- package/dist/bridge/acp/update.js.map +1 -1
- package/dist/config/registry.d.ts +2 -0
- package/dist/config/registry.d.ts.map +1 -1
- package/dist/config/registry.js +23 -3
- package/dist/config/registry.js.map +1 -1
- package/dist/config/runtime.d.ts +31 -31
- package/dist/connector/mcp/adapter.d.ts.map +1 -1
- package/dist/connector/mcp/adapter.js +11 -4
- package/dist/connector/mcp/adapter.js.map +1 -1
- package/dist/connector/mcp/client.d.ts.map +1 -1
- package/dist/connector/mcp/client.js +6 -3
- package/dist/connector/mcp/client.js.map +1 -1
- package/dist/connector/mcp/discovery.d.ts +9 -5
- package/dist/connector/mcp/discovery.d.ts.map +1 -1
- package/dist/connector/mcp/discovery.js +16 -8
- package/dist/connector/mcp/discovery.js.map +1 -1
- package/dist/connector/mcp/mcp-toolset.d.ts +3 -0
- package/dist/connector/mcp/mcp-toolset.d.ts.map +1 -1
- package/dist/connector/mcp/mcp-toolset.js +20 -2
- package/dist/connector/mcp/mcp-toolset.js.map +1 -1
- package/dist/connector/mcp/reconnect.d.ts +2 -0
- package/dist/connector/mcp/reconnect.d.ts.map +1 -1
- package/dist/connector/mcp/reconnect.js +36 -5
- package/dist/connector/mcp/reconnect.js.map +1 -1
- package/dist/constants/acp/index.d.ts +3 -0
- package/dist/constants/acp/index.d.ts.map +1 -1
- package/dist/constants/acp/index.js +3 -0
- package/dist/constants/acp/index.js.map +1 -1
- package/dist/contracts/a2a.d.ts +80 -80
- package/dist/contracts/schemas.d.ts +2 -2
- package/dist/contracts/session/schemas.d.ts +10 -10
- package/dist/manager/agent/lifecycle.d.ts +11 -0
- package/dist/manager/agent/lifecycle.d.ts.map +1 -1
- package/dist/manager/agent/lifecycle.js +178 -3
- package/dist/manager/agent/lifecycle.js.map +1 -1
- package/dist/manager/plan/lifecycle.d.ts +7 -8
- package/dist/manager/plan/lifecycle.d.ts.map +1 -1
- package/dist/manager/plan/lifecycle.js +7 -8
- package/dist/manager/plan/lifecycle.js.map +1 -1
- package/dist/manager/resident/consumption.d.ts +8 -8
- package/dist/manager/resident/learning-cycle.d.ts +2 -2
- package/dist/manager/resident/learning-observation.d.ts +12 -12
- package/dist/manager/resident/learning.d.ts +82 -82
- package/dist/manager/resident/outbox.d.ts +8 -8
- package/dist/manager/resident/proposal.d.ts +2 -2
- package/dist/manager/resident/store.d.ts +10 -10
- package/dist/manager/session/attribution.d.ts +1 -0
- package/dist/manager/session/attribution.d.ts.map +1 -1
- package/dist/manager/session/attribution.js +9 -1
- package/dist/manager/session/attribution.js.map +1 -1
- package/dist/manager/session/streamed-message-identity.d.ts +6 -0
- package/dist/manager/session/streamed-message-identity.d.ts.map +1 -0
- package/dist/manager/session/streamed-message-identity.js +14 -0
- package/dist/manager/session/streamed-message-identity.js.map +1 -0
- package/dist/manager/session/turn-recorder.d.ts.map +1 -1
- package/dist/manager/session/turn-recorder.js +4 -3
- package/dist/manager/session/turn-recorder.js.map +1 -1
- package/dist/pals/activity/causality.d.ts +23 -0
- package/dist/pals/activity/causality.d.ts.map +1 -0
- package/dist/pals/activity/causality.js +205 -0
- package/dist/pals/activity/causality.js.map +1 -0
- package/dist/pals/activity/projection.d.ts +5 -0
- package/dist/pals/activity/projection.d.ts.map +1 -0
- package/dist/pals/activity/projection.js +79 -0
- package/dist/pals/activity/projection.js.map +1 -0
- package/dist/pals/activity/source.d.ts +16 -0
- package/dist/pals/activity/source.d.ts.map +1 -0
- package/dist/pals/activity/source.js +235 -0
- package/dist/pals/activity/source.js.map +1 -0
- package/dist/pals/activity/subscription-policy.d.ts +38 -0
- package/dist/pals/activity/subscription-policy.d.ts.map +1 -0
- package/dist/pals/activity/subscription-policy.js +183 -0
- package/dist/pals/activity/subscription-policy.js.map +1 -0
- package/dist/pals/activity/subscription-schema.d.ts +353 -0
- package/dist/pals/activity/subscription-schema.d.ts.map +1 -0
- package/dist/pals/activity/subscription-schema.js +24 -0
- package/dist/pals/activity/subscription-schema.js.map +1 -0
- package/dist/pals/activity/subscription-store.d.ts +25 -0
- package/dist/pals/activity/subscription-store.d.ts.map +1 -0
- package/dist/pals/activity/subscription-store.js +152 -0
- package/dist/pals/activity/subscription-store.js.map +1 -0
- package/dist/pals/activity/subscription-types.d.ts +42 -0
- package/dist/pals/activity/subscription-types.d.ts.map +1 -0
- package/dist/pals/activity/subscription-types.js +2 -0
- package/dist/pals/activity/subscription-types.js.map +1 -0
- package/dist/pals/activity/subscriptions.d.ts +32 -0
- package/dist/pals/activity/subscriptions.d.ts.map +1 -0
- package/dist/pals/activity/subscriptions.js +151 -0
- package/dist/pals/activity/subscriptions.js.map +1 -0
- package/dist/pals/activity/types.d.ts +77 -0
- package/dist/pals/activity/types.d.ts.map +1 -0
- package/dist/pals/activity/types.js +2 -0
- package/dist/pals/activity/types.js.map +1 -0
- package/dist/pals/channels/ingress.d.ts +9 -0
- package/dist/pals/channels/ingress.d.ts.map +1 -0
- package/dist/pals/channels/ingress.js +131 -0
- package/dist/pals/channels/ingress.js.map +1 -0
- package/dist/pals/channels/routes.d.ts +20 -0
- package/dist/pals/channels/routes.d.ts.map +1 -0
- package/dist/pals/channels/routes.js +111 -0
- package/dist/pals/channels/routes.js.map +1 -0
- package/dist/pals/channels/routing.d.ts +37 -0
- package/dist/pals/channels/routing.d.ts.map +1 -0
- package/dist/pals/channels/routing.js +150 -0
- package/dist/pals/channels/routing.js.map +1 -0
- package/dist/pals/channels/schema.d.ts +234 -0
- package/dist/pals/channels/schema.d.ts.map +1 -0
- package/dist/pals/channels/schema.js +94 -0
- package/dist/pals/channels/schema.js.map +1 -0
- package/dist/pals/channels/types.d.ts +115 -0
- package/dist/pals/channels/types.d.ts.map +1 -0
- package/dist/pals/channels/types.js +2 -0
- package/dist/pals/channels/types.js.map +1 -0
- package/dist/pals/communication/broker.d.ts +8 -0
- package/dist/pals/communication/broker.d.ts.map +1 -0
- package/dist/pals/communication/broker.js +121 -0
- package/dist/pals/communication/broker.js.map +1 -0
- package/dist/pals/communication/dispatch.d.ts +4 -0
- package/dist/pals/communication/dispatch.d.ts.map +1 -0
- package/dist/pals/communication/dispatch.js +57 -0
- package/dist/pals/communication/dispatch.js.map +1 -0
- package/dist/pals/communication/inbound.d.ts +9 -0
- package/dist/pals/communication/inbound.d.ts.map +1 -0
- package/dist/pals/communication/inbound.js +155 -0
- package/dist/pals/communication/inbound.js.map +1 -0
- package/dist/pals/communication/ingress-dispatch.d.ts +5 -0
- package/dist/pals/communication/ingress-dispatch.d.ts.map +1 -0
- package/dist/pals/communication/ingress-dispatch.js +51 -0
- package/dist/pals/communication/ingress-dispatch.js.map +1 -0
- package/dist/pals/communication/ingress-inbound.d.ts +9 -0
- package/dist/pals/communication/ingress-inbound.d.ts.map +1 -0
- package/dist/pals/communication/ingress-inbound.js +222 -0
- package/dist/pals/communication/ingress-inbound.js.map +1 -0
- package/dist/pals/communication/ingress-schema.d.ts +7829 -0
- package/dist/pals/communication/ingress-schema.d.ts.map +1 -0
- package/dist/pals/communication/ingress-schema.js +479 -0
- package/dist/pals/communication/ingress-schema.js.map +1 -0
- package/dist/pals/communication/ingress-types.d.ts +187 -0
- package/dist/pals/communication/ingress-types.d.ts.map +1 -0
- package/dist/pals/communication/ingress-types.js +73 -0
- package/dist/pals/communication/ingress-types.js.map +1 -0
- package/dist/pals/communication/operator.d.ts +75 -0
- package/dist/pals/communication/operator.d.ts.map +1 -0
- package/dist/pals/communication/operator.js +217 -0
- package/dist/pals/communication/operator.js.map +1 -0
- package/dist/pals/communication/policy.d.ts +41 -0
- package/dist/pals/communication/policy.d.ts.map +1 -0
- package/dist/pals/communication/policy.js +138 -0
- package/dist/pals/communication/policy.js.map +1 -0
- package/dist/pals/communication/schema.d.ts +2000 -0
- package/dist/pals/communication/schema.d.ts.map +1 -0
- package/dist/pals/communication/schema.js +170 -0
- package/dist/pals/communication/schema.js.map +1 -0
- package/dist/pals/communication/store.d.ts +61 -0
- package/dist/pals/communication/store.d.ts.map +1 -0
- package/dist/pals/communication/store.js +450 -0
- package/dist/pals/communication/store.js.map +1 -0
- package/dist/pals/communication/tools.d.ts +23 -0
- package/dist/pals/communication/tools.d.ts.map +1 -0
- package/dist/pals/communication/tools.js +107 -0
- package/dist/pals/communication/tools.js.map +1 -0
- package/dist/pals/communication/types.d.ts +168 -0
- package/dist/pals/communication/types.d.ts.map +1 -0
- package/dist/pals/communication/types.js +24 -0
- package/dist/pals/communication/types.js.map +1 -0
- package/dist/pals/communication/verify.d.ts +22 -0
- package/dist/pals/communication/verify.d.ts.map +1 -0
- package/dist/pals/communication/verify.js +142 -0
- package/dist/pals/communication/verify.js.map +1 -0
- package/dist/pals/lifecycle.d.ts +37 -0
- package/dist/pals/lifecycle.d.ts.map +1 -0
- package/dist/pals/lifecycle.js +22 -0
- package/dist/pals/lifecycle.js.map +1 -0
- package/dist/pals/prompt.d.ts +30 -0
- package/dist/pals/prompt.d.ts.map +1 -0
- package/dist/pals/prompt.js +65 -0
- package/dist/pals/prompt.js.map +1 -0
- package/dist/pals/reference-images.d.ts +44 -0
- package/dist/pals/reference-images.d.ts.map +1 -0
- package/dist/pals/reference-images.js +248 -0
- package/dist/pals/reference-images.js.map +1 -0
- package/dist/pals/runtime.d.ts +46 -0
- package/dist/pals/runtime.d.ts.map +1 -0
- package/dist/pals/runtime.js +624 -0
- package/dist/pals/runtime.js.map +1 -0
- package/dist/pals/store.d.ts +26 -0
- package/dist/pals/store.d.ts.map +1 -0
- package/dist/pals/store.js +334 -0
- package/dist/pals/store.js.map +1 -0
- package/dist/pals/types.d.ts +145 -0
- package/dist/pals/types.d.ts.map +1 -0
- package/dist/pals/types.js +2 -0
- package/dist/pals/types.js.map +1 -0
- package/dist/peers/envelope.js +1 -1
- package/dist/peers/envelope.js.map +1 -1
- package/dist/peers/protocol.d.ts +83 -83
- package/dist/peers/record.d.ts +10 -10
- package/dist/plugin/lifecycle.d.ts +14 -10
- package/dist/plugin/lifecycle.d.ts.map +1 -1
- package/dist/plugin/lifecycle.js +178 -41
- package/dist/plugin/lifecycle.js.map +1 -1
- package/dist/plugin/shell-hook.d.ts.map +1 -1
- package/dist/plugin/shell-hook.js +7 -2
- package/dist/plugin/shell-hook.js.map +1 -1
- package/dist/process/kill-tree.d.ts.map +1 -1
- package/dist/process/kill-tree.js +9 -1
- package/dist/process/kill-tree.js.map +1 -1
- package/dist/prompt/resident-learning.js +2 -2
- package/dist/prompt/resident-learning.js.map +1 -1
- package/dist/prompt/resident-step.d.ts +2 -2
- package/dist/prompt/resident-step.js +4 -4
- package/dist/prompt/resident-step.js.map +1 -1
- package/dist/provider/errors.d.ts +19 -0
- package/dist/provider/errors.d.ts.map +1 -1
- package/dist/provider/errors.js +123 -2
- package/dist/provider/errors.js.map +1 -1
- package/dist/public-runtime.d.ts +43 -15
- package/dist/public-runtime.d.ts.map +1 -1
- package/dist/public-runtime.js +37 -9
- package/dist/public-runtime.js.map +1 -1
- package/dist/public-tools.d.ts +8 -3
- package/dist/public-tools.d.ts.map +1 -1
- package/dist/public-tools.js +8 -3
- package/dist/public-tools.js.map +1 -1
- package/dist/public-types.d.ts +27 -7
- package/dist/public-types.d.ts.map +1 -1
- package/dist/registry/tool/presentation.d.ts +1 -0
- package/dist/registry/tool/presentation.d.ts.map +1 -1
- package/dist/registry/tool/presentation.js +9 -7
- package/dist/registry/tool/presentation.js.map +1 -1
- package/dist/registry/tool/screen.d.ts.map +1 -1
- package/dist/registry/tool/screen.js +33 -2
- package/dist/registry/tool/screen.js.map +1 -1
- package/dist/runtime/harness-session/index.d.ts +5 -0
- package/dist/runtime/harness-session/index.d.ts.map +1 -0
- package/dist/runtime/harness-session/index.js +928 -0
- package/dist/runtime/harness-session/index.js.map +1 -0
- package/dist/runtime/harness-session/journal.d.ts +37 -0
- package/dist/runtime/harness-session/journal.d.ts.map +1 -0
- package/dist/runtime/harness-session/journal.js +177 -0
- package/dist/runtime/harness-session/journal.js.map +1 -0
- package/dist/runtime/harness-session/saved-view.d.ts +8 -0
- package/dist/runtime/harness-session/saved-view.d.ts.map +1 -0
- package/dist/runtime/harness-session/saved-view.js +112 -0
- package/dist/runtime/harness-session/saved-view.js.map +1 -0
- package/dist/runtime/jobs/awaited-jobs.d.ts +2 -1
- package/dist/runtime/jobs/awaited-jobs.d.ts.map +1 -1
- package/dist/runtime/jobs/awaited-jobs.js +2 -1
- package/dist/runtime/jobs/awaited-jobs.js.map +1 -1
- package/dist/runtime/jobs/registry.d.ts +56 -1
- package/dist/runtime/jobs/registry.d.ts.map +1 -1
- package/dist/runtime/jobs/registry.js +377 -39
- package/dist/runtime/jobs/registry.js.map +1 -1
- package/dist/runtime/query/abandon-turn.d.ts +12 -1
- package/dist/runtime/query/abandon-turn.d.ts.map +1 -1
- package/dist/runtime/query/abandon-turn.js +3 -1
- package/dist/runtime/query/abandon-turn.js.map +1 -1
- package/dist/runtime/query/checkpoint.d.ts +4 -0
- package/dist/runtime/query/checkpoint.d.ts.map +1 -1
- package/dist/runtime/query/checkpoint.js +10 -0
- package/dist/runtime/query/checkpoint.js.map +1 -1
- package/dist/runtime/query/durable-inbound.d.ts +5 -0
- package/dist/runtime/query/durable-inbound.d.ts.map +1 -0
- package/dist/runtime/query/durable-inbound.js +89 -0
- package/dist/runtime/query/durable-inbound.js.map +1 -0
- package/dist/runtime/query/events.d.ts +4 -0
- package/dist/runtime/query/events.d.ts.map +1 -1
- package/dist/runtime/query/events.js +22 -5
- package/dist/runtime/query/events.js.map +1 -1
- package/dist/runtime/query/executor/tool-call-admission.d.ts +5 -1
- package/dist/runtime/query/executor/tool-call-admission.d.ts.map +1 -1
- package/dist/runtime/query/executor/tool-call-admission.js +85 -13
- package/dist/runtime/query/executor/tool-call-admission.js.map +1 -1
- package/dist/runtime/query/executor.d.ts +41 -18
- package/dist/runtime/query/executor.d.ts.map +1 -1
- package/dist/runtime/query/executor.js +227 -114
- package/dist/runtime/query/executor.js.map +1 -1
- package/dist/runtime/query/index.d.ts +9 -0
- package/dist/runtime/query/index.d.ts.map +1 -1
- package/dist/runtime/query/index.js +41 -5
- package/dist/runtime/query/index.js.map +1 -1
- package/dist/runtime/query/iteration/index.d.ts +18 -6
- package/dist/runtime/query/iteration/index.d.ts.map +1 -1
- package/dist/runtime/query/iteration/index.js +176 -75
- package/dist/runtime/query/iteration/index.js.map +1 -1
- package/dist/runtime/query/iteration/outstanding-work.d.ts +9 -5
- package/dist/runtime/query/iteration/outstanding-work.d.ts.map +1 -1
- package/dist/runtime/query/iteration/outstanding-work.js +63 -6
- package/dist/runtime/query/iteration/outstanding-work.js.map +1 -1
- package/dist/runtime/query/iteration/phases/context.d.ts +8 -0
- package/dist/runtime/query/iteration/phases/context.d.ts.map +1 -1
- package/dist/runtime/query/iteration/phases/context.js.map +1 -1
- package/dist/runtime/query/iteration/phases/tool-review.d.ts.map +1 -1
- package/dist/runtime/query/iteration/phases/tool-review.js +106 -17
- package/dist/runtime/query/iteration/phases/tool-review.js.map +1 -1
- package/dist/runtime/query/iteration/step-shaping.d.ts +2 -0
- package/dist/runtime/query/iteration/step-shaping.d.ts.map +1 -1
- package/dist/runtime/query/iteration/step-shaping.js +5 -1
- package/dist/runtime/query/iteration/step-shaping.js.map +1 -1
- package/dist/runtime/query/observation-context.d.ts +2 -2
- package/dist/runtime/query/observation-context.d.ts.map +1 -1
- package/dist/runtime/query/observation-context.js +20 -13
- package/dist/runtime/query/observation-context.js.map +1 -1
- package/dist/runtime/query/prepare-turn.js +2 -2
- package/dist/runtime/query/prepare-turn.js.map +1 -1
- package/dist/runtime/query/prompt-cache.d.ts +1 -0
- package/dist/runtime/query/prompt-cache.d.ts.map +1 -1
- package/dist/runtime/query/prompt-cache.js +2 -0
- package/dist/runtime/query/prompt-cache.js.map +1 -1
- package/dist/runtime/query/prompt.d.ts +2 -0
- package/dist/runtime/query/prompt.d.ts.map +1 -1
- package/dist/runtime/query/prompt.js +23 -1
- package/dist/runtime/query/prompt.js.map +1 -1
- package/dist/runtime/query/repeat-call.d.ts +12 -3
- package/dist/runtime/query/repeat-call.d.ts.map +1 -1
- package/dist/runtime/query/repeat-call.js +33 -10
- package/dist/runtime/query/repeat-call.js.map +1 -1
- package/dist/runtime/query/resume-pending.d.ts +5 -6
- package/dist/runtime/query/resume-pending.d.ts.map +1 -1
- package/dist/runtime/query/resume-pending.js +30 -3
- package/dist/runtime/query/resume-pending.js.map +1 -1
- package/dist/runtime/query/resume-session.js +1 -1
- package/dist/runtime/query/resume-session.js.map +1 -1
- package/dist/runtime/query/review-policy.d.ts +8 -1
- package/dist/runtime/query/review-policy.d.ts.map +1 -1
- package/dist/runtime/query/review-policy.js +6 -0
- package/dist/runtime/query/review-policy.js.map +1 -1
- package/dist/runtime/query/saved-presentation.d.ts +13 -0
- package/dist/runtime/query/saved-presentation.d.ts.map +1 -0
- package/dist/runtime/query/saved-presentation.js +63 -0
- package/dist/runtime/query/saved-presentation.js.map +1 -0
- package/dist/runtime/query/steering.d.ts +6 -9
- package/dist/runtime/query/steering.d.ts.map +1 -1
- package/dist/runtime/query/steering.js.map +1 -1
- package/dist/runtime/query/tool-executions.d.ts +7 -3
- package/dist/runtime/query/tool-executions.d.ts.map +1 -1
- package/dist/runtime/query/tool-executions.js +89 -9
- package/dist/runtime/query/tool-executions.js.map +1 -1
- package/dist/runtime/query/tooling.d.ts +3 -1
- package/dist/runtime/query/tooling.d.ts.map +1 -1
- package/dist/runtime/query/tooling.js +3 -0
- package/dist/runtime/query/tooling.js.map +1 -1
- package/dist/scheduler/completion-inbox.d.ts +25 -1
- package/dist/scheduler/completion-inbox.d.ts.map +1 -1
- package/dist/scheduler/completion-inbox.js +102 -8
- package/dist/scheduler/completion-inbox.js.map +1 -1
- package/dist/scheduler/delegating.d.ts.map +1 -1
- package/dist/scheduler/delegating.js +5 -0
- package/dist/scheduler/delegating.js.map +1 -1
- package/dist/scheduler/local.d.ts.map +1 -1
- package/dist/scheduler/local.js +2 -0
- package/dist/scheduler/local.js.map +1 -1
- package/dist/session/summary/materialize.d.ts +10 -6
- package/dist/session/summary/materialize.d.ts.map +1 -1
- package/dist/session/summary/materialize.js +41 -8
- package/dist/session/summary/materialize.js.map +1 -1
- package/dist/store/budget/ledger.d.ts +9 -0
- package/dist/store/budget/ledger.d.ts.map +1 -1
- package/dist/store/budget/ledger.js +58 -6
- package/dist/store/budget/ledger.js.map +1 -1
- package/dist/store/evidence/index-page.d.ts +12 -12
- package/dist/store/evidence/source-text.d.ts +4 -4
- package/dist/store/index.d.ts +1 -0
- package/dist/store/index.d.ts.map +1 -1
- package/dist/store/index.js +1 -0
- package/dist/store/index.js.map +1 -1
- package/dist/store/memory/disk.d.ts +7 -2
- package/dist/store/memory/disk.d.ts.map +1 -1
- package/dist/store/memory/disk.js +58 -5
- package/dist/store/memory/disk.js.map +1 -1
- package/dist/store/memory/index.d.ts +9 -0
- package/dist/store/memory/index.d.ts.map +1 -1
- package/dist/store/memory/index.js +43 -5
- package/dist/store/memory/index.js.map +1 -1
- package/dist/store/memory/markdown.d.ts +7 -2
- package/dist/store/memory/markdown.d.ts.map +1 -1
- package/dist/store/memory/markdown.js +33 -0
- package/dist/store/memory/markdown.js.map +1 -1
- package/dist/store/memory/memory.d.ts +7 -2
- package/dist/store/memory/memory.d.ts.map +1 -1
- package/dist/store/memory/memory.js +34 -0
- package/dist/store/memory/memory.js.map +1 -1
- package/dist/store/memory/revision.d.ts +16 -0
- package/dist/store/memory/revision.d.ts.map +1 -0
- package/dist/store/memory/revision.js +144 -0
- package/dist/store/memory/revision.js.map +1 -0
- package/dist/store/session/disk.d.ts +9 -4
- package/dist/store/session/disk.d.ts.map +1 -1
- package/dist/store/session/disk.js +57 -11
- package/dist/store/session/disk.js.map +1 -1
- package/dist/store/session/memory.d.ts +5 -3
- package/dist/store/session/memory.d.ts.map +1 -1
- package/dist/store/session/memory.js +24 -7
- package/dist/store/session/memory.js.map +1 -1
- package/dist/store/session-log/core.d.ts +26 -6
- package/dist/store/session-log/core.d.ts.map +1 -1
- package/dist/store/session-log/core.js +61 -8
- package/dist/store/session-log/core.js.map +1 -1
- package/dist/store/session-log/disk.d.ts +2 -2
- package/dist/store/session-log/disk.d.ts.map +1 -1
- package/dist/store/session-log/disk.js +1 -0
- package/dist/store/session-log/disk.js.map +1 -1
- package/dist/store/session-log/fold.d.ts +7 -0
- package/dist/store/session-log/fold.d.ts.map +1 -1
- package/dist/store/session-log/fold.js +21 -0
- package/dist/store/session-log/fold.js.map +1 -1
- package/dist/store/session-log/index.d.ts +5 -3
- package/dist/store/session-log/index.d.ts.map +1 -1
- package/dist/store/session-log/index.js +3 -1
- package/dist/store/session-log/index.js.map +1 -1
- package/dist/store/session-log/memory.d.ts +1 -1
- package/dist/store/session-log/memory.d.ts.map +1 -1
- package/dist/store/session-log/memory.js +1 -0
- package/dist/store/session-log/memory.js.map +1 -1
- package/dist/store/session-log/spill.d.ts +10 -3
- package/dist/store/session-log/spill.d.ts.map +1 -1
- package/dist/store/session-log/spill.js +70 -5
- package/dist/store/session-log/spill.js.map +1 -1
- package/dist/store/session-log/structured-result.d.ts +21 -0
- package/dist/store/session-log/structured-result.d.ts.map +1 -0
- package/dist/store/session-log/structured-result.js +67 -0
- package/dist/store/session-log/structured-result.js.map +1 -0
- package/dist/store/task/disk.d.ts +11 -0
- package/dist/store/task/disk.d.ts.map +1 -1
- package/dist/store/task/disk.js +41 -2
- package/dist/store/task/disk.js.map +1 -1
- package/dist/store/task/memory.d.ts.map +1 -1
- package/dist/store/task/memory.js +15 -3
- package/dist/store/task/memory.js.map +1 -1
- package/dist/tools/admit-facts.d.ts +13 -0
- package/dist/tools/admit-facts.d.ts.map +1 -0
- package/dist/tools/admit-facts.js +142 -0
- package/dist/tools/admit-facts.js.map +1 -0
- package/dist/tools/builtins/bash.d.ts +4 -1
- package/dist/tools/builtins/bash.d.ts.map +1 -1
- package/dist/tools/builtins/bash.js +108 -22
- package/dist/tools/builtins/bash.js.map +1 -1
- package/dist/tools/builtins/browser.d.ts +10 -10
- package/dist/tools/builtins/computer-use.d.ts +90 -90
- package/dist/tools/builtins/edit.d.ts +17 -0
- package/dist/tools/builtins/edit.d.ts.map +1 -1
- package/dist/tools/builtins/edit.js +34 -0
- package/dist/tools/builtins/edit.js.map +1 -1
- package/dist/tools/builtins/file-write-result.d.ts.map +1 -1
- package/dist/tools/builtins/file-write-result.js +13 -0
- package/dist/tools/builtins/file-write-result.js.map +1 -1
- package/dist/tools/builtins/glob.d.ts.map +1 -1
- package/dist/tools/builtins/glob.js +12 -0
- package/dist/tools/builtins/glob.js.map +1 -1
- package/dist/tools/builtins/grep.d.ts.map +1 -1
- package/dist/tools/builtins/grep.js +14 -0
- package/dist/tools/builtins/grep.js.map +1 -1
- package/dist/tools/builtins/index.d.ts +2 -0
- package/dist/tools/builtins/index.d.ts.map +1 -1
- package/dist/tools/builtins/index.js +1 -0
- package/dist/tools/builtins/index.js.map +1 -1
- package/dist/tools/builtins/job.d.ts.map +1 -1
- package/dist/tools/builtins/job.js +4 -1
- package/dist/tools/builtins/job.js.map +1 -1
- package/dist/tools/builtins/lsp.d.ts +2 -2
- package/dist/tools/builtins/read-file.d.ts.map +1 -1
- package/dist/tools/builtins/read-file.js +49 -0
- package/dist/tools/builtins/read-file.js.map +1 -1
- package/dist/tools/builtins/view-image.d.ts +24 -0
- package/dist/tools/builtins/view-image.d.ts.map +1 -0
- package/dist/tools/builtins/view-image.js +385 -0
- package/dist/tools/builtins/view-image.js.map +1 -0
- package/dist/tools/builtins/wait-for-job-bounds.d.ts +8 -4
- package/dist/tools/builtins/wait-for-job-bounds.d.ts.map +1 -1
- package/dist/tools/builtins/wait-for-job-bounds.js +43 -8
- package/dist/tools/builtins/wait-for-job-bounds.js.map +1 -1
- package/dist/tools/builtins/wait-for-job.d.ts +3 -0
- package/dist/tools/builtins/wait-for-job.d.ts.map +1 -1
- package/dist/tools/builtins/wait-for-job.js +127 -15
- package/dist/tools/builtins/wait-for-job.js.map +1 -1
- package/dist/tools/builtins/write-file.d.ts.map +1 -1
- package/dist/tools/builtins/write-file.js +1 -0
- package/dist/tools/builtins/write-file.js.map +1 -1
- package/dist/tools/command-shell.d.ts +37 -2
- package/dist/tools/command-shell.d.ts.map +1 -1
- package/dist/tools/command-shell.js +100 -3
- package/dist/tools/command-shell.js.map +1 -1
- package/dist/tools/coordinator/agent.d.ts +9 -19
- package/dist/tools/coordinator/agent.d.ts.map +1 -1
- package/dist/tools/coordinator/agent.js.map +1 -1
- package/dist/tools/coordinator/index.d.ts.map +1 -1
- package/dist/tools/coordinator/index.js +127 -67
- package/dist/tools/coordinator/index.js.map +1 -1
- package/dist/tools/coordinator/wait-with-idle-bound.d.ts +2 -0
- package/dist/tools/coordinator/wait-with-idle-bound.d.ts.map +1 -1
- package/dist/tools/coordinator/wait-with-idle-bound.js +1 -1
- package/dist/tools/coordinator/wait-with-idle-bound.js.map +1 -1
- package/dist/tools/defineTool.d.ts.map +1 -1
- package/dist/tools/defineTool.js +4 -0
- package/dist/tools/defineTool.js.map +1 -1
- package/dist/tools/failure-facts.d.ts +8 -0
- package/dist/tools/failure-facts.d.ts.map +1 -0
- package/dist/tools/failure-facts.js +24 -0
- package/dist/tools/failure-facts.js.map +1 -0
- package/dist/tools/host-output.d.ts +24 -0
- package/dist/tools/host-output.d.ts.map +1 -0
- package/dist/tools/host-output.js +117 -0
- package/dist/tools/host-output.js.map +1 -0
- package/dist/tools/memory/delete.d.ts.map +1 -1
- package/dist/tools/memory/delete.js +38 -3
- package/dist/tools/memory/delete.js.map +1 -1
- package/dist/tools/memory/read.d.ts.map +1 -1
- package/dist/tools/memory/read.js +38 -2
- package/dist/tools/memory/read.js.map +1 -1
- package/dist/tools/memory/search.d.ts.map +1 -1
- package/dist/tools/memory/search.js +38 -7
- package/dist/tools/memory/search.js.map +1 -1
- package/dist/tools/memory/update.d.ts.map +1 -1
- package/dist/tools/memory/update.js +30 -3
- package/dist/tools/memory/update.js.map +1 -1
- package/dist/tools/oem-code-pages.d.ts +8 -0
- package/dist/tools/oem-code-pages.d.ts.map +1 -0
- package/dist/tools/oem-code-pages.js +23 -0
- package/dist/tools/oem-code-pages.js.map +1 -0
- package/dist/tools/schedules/schedule-tool.d.ts.map +1 -1
- package/dist/tools/schedules/schedule-tool.js +35 -6
- package/dist/tools/schedules/schedule-tool.js.map +1 -1
- package/dist/tools/schedules/types.d.ts +23 -3
- package/dist/tools/schedules/types.d.ts.map +1 -1
- package/dist/tools/task/list.d.ts.map +1 -1
- package/dist/tools/task/list.js +14 -6
- package/dist/tools/task/list.js.map +1 -1
- package/dist/tools/task/present.d.ts.map +1 -1
- package/dist/tools/task/present.js +26 -6
- package/dist/tools/task/present.js.map +1 -1
- package/dist/tools/task/update.d.ts.map +1 -1
- package/dist/tools/task/update.js +12 -5
- package/dist/tools/task/update.js.map +1 -1
- package/dist/tools/text-window.d.ts +19 -0
- package/dist/tools/text-window.d.ts.map +1 -0
- package/dist/tools/text-window.js +83 -0
- package/dist/tools/text-window.js.map +1 -0
- package/dist/toolsets/manager.d.ts +24 -0
- package/dist/toolsets/manager.d.ts.map +1 -1
- package/dist/toolsets/manager.js +105 -2
- package/dist/toolsets/manager.js.map +1 -1
- package/dist/turn/memory-recall.d.ts +2 -0
- package/dist/turn/memory-recall.d.ts.map +1 -1
- package/dist/turn/memory-recall.js +3 -1
- package/dist/turn/memory-recall.js.map +1 -1
- package/dist/types/acp/index.d.ts +137 -1
- package/dist/types/acp/index.d.ts.map +1 -1
- package/dist/types/agent/base.d.ts +3 -0
- package/dist/types/agent/base.d.ts.map +1 -1
- package/dist/types/agent/manager.d.ts +8 -23
- package/dist/types/agent/manager.d.ts.map +1 -1
- package/dist/types/agent/scheduler.d.ts +10 -1
- package/dist/types/agent/scheduler.d.ts.map +1 -1
- package/dist/types/agent/task.d.ts +4 -0
- package/dist/types/agent/task.d.ts.map +1 -1
- package/dist/types/authorization/index.d.ts +30 -30
- package/dist/types/connector/mcp.d.ts +7 -0
- package/dist/types/connector/mcp.d.ts.map +1 -1
- package/dist/types/errors/catalog.d.ts.map +1 -1
- package/dist/types/errors/catalog.js +4 -2
- package/dist/types/errors/catalog.js.map +1 -1
- package/dist/types/harness/schema.d.ts +354 -0
- package/dist/types/harness/schema.d.ts.map +1 -0
- package/dist/types/harness/schema.js +203 -0
- package/dist/types/harness/schema.js.map +1 -0
- package/dist/types/harness/session.d.ts +278 -0
- package/dist/types/harness/session.d.ts.map +1 -0
- package/dist/types/harness/session.js +2 -0
- package/dist/types/harness/session.js.map +1 -0
- package/dist/types/hitl/index.d.ts +12 -0
- package/dist/types/hitl/index.d.ts.map +1 -1
- package/dist/types/hitl/index.js.map +1 -1
- package/dist/types/job/index.d.ts +47 -0
- package/dist/types/job/index.d.ts.map +1 -0
- package/dist/types/job/index.js +2 -0
- package/dist/types/job/index.js.map +1 -0
- package/dist/types/memory/index.d.ts +29 -0
- package/dist/types/memory/index.d.ts.map +1 -1
- package/dist/types/memory/index.js +6 -0
- package/dist/types/memory/index.js.map +1 -1
- package/dist/types/message/inbound-delivery.d.ts +44 -0
- package/dist/types/message/inbound-delivery.d.ts.map +1 -0
- package/dist/types/message/inbound-delivery.js +14 -0
- package/dist/types/message/inbound-delivery.js.map +1 -0
- package/dist/types/message/index.d.ts +4 -1
- package/dist/types/message/index.d.ts.map +1 -1
- package/dist/types/message/index.js +5 -1
- package/dist/types/message/index.js.map +1 -1
- package/dist/types/plugin/index.d.ts +18 -8
- package/dist/types/plugin/index.d.ts.map +1 -1
- package/dist/types/plugin/index.js +5 -2
- package/dist/types/plugin/index.js.map +1 -1
- package/dist/types/sandbox/index.d.ts +39 -2
- package/dist/types/sandbox/index.d.ts.map +1 -1
- package/dist/types/sandbox/index.js.map +1 -1
- package/dist/types/session/checkpoint.d.ts +24 -17
- package/dist/types/session/checkpoint.d.ts.map +1 -1
- package/dist/types/session/checkpoint.js +1 -0
- package/dist/types/session/checkpoint.js.map +1 -1
- package/dist/types/session/events.d.ts +23 -1
- package/dist/types/session/events.d.ts.map +1 -1
- package/dist/types/session/events.js.map +1 -1
- package/dist/types/session/records.d.ts +1514 -565
- package/dist/types/session/records.d.ts.map +1 -1
- package/dist/types/session/records.js +89 -1
- package/dist/types/session/records.js.map +1 -1
- package/dist/types/session/step.d.ts +2 -0
- package/dist/types/session/step.d.ts.map +1 -1
- package/dist/types/session/step.js.map +1 -1
- package/dist/types/session/store.d.ts +19 -10
- package/dist/types/session/store.d.ts.map +1 -1
- package/dist/types/session/tool-execution.d.ts +6 -0
- package/dist/types/session/tool-execution.d.ts.map +1 -1
- package/dist/types/structured-output/index.d.ts +12 -2
- package/dist/types/structured-output/index.d.ts.map +1 -1
- package/dist/types/summary/ref.d.ts +3 -1
- package/dist/types/summary/ref.d.ts.map +1 -1
- package/dist/types/tool/index.d.ts +32 -4
- package/dist/types/tool/index.d.ts.map +1 -1
- package/dist/types/tool/index.js.map +1 -1
- package/dist/types/tool/presentation.d.ts +106 -0
- package/dist/types/tool/presentation.d.ts.map +1 -1
- package/dist/utils/json-snapshot.d.ts +6 -2
- package/dist/utils/json-snapshot.d.ts.map +1 -1
- package/dist/utils/json-snapshot.js +19 -9
- package/dist/utils/json-snapshot.js.map +1 -1
- package/dist/utils/structured-result-json.d.ts +5 -0
- package/dist/utils/structured-result-json.d.ts.map +1 -0
- package/dist/utils/structured-result-json.js +10 -0
- package/dist/utils/structured-result-json.js.map +1 -0
- package/package.json +1 -1
- package/src/agents/QueryAgent.ts +1 -0
- package/src/agents/examples/SupervisorAgent.ts +1 -0
- package/src/agents/runAgent.ts +3 -0
- package/src/authorization/shell-lexer.ts +16 -1
- package/src/bridge/acp/permission.ts +17 -3
- package/src/bridge/acp/server.ts +271 -25
- package/src/bridge/acp/tasks.ts +23 -0
- package/src/bridge/acp/update.ts +167 -13
- package/src/config/registry.ts +24 -3
- package/src/connector/mcp/adapter.ts +16 -4
- package/src/connector/mcp/client.ts +6 -2
- package/src/connector/mcp/discovery.ts +29 -8
- package/src/connector/mcp/mcp-toolset.ts +25 -4
- package/src/connector/mcp/reconnect.ts +34 -4
- package/src/constants/acp/index.ts +4 -0
- package/src/manager/agent/lifecycle.ts +230 -3
- package/src/manager/plan/lifecycle.ts +11 -9
- package/src/manager/session/attribution.ts +12 -2
- package/src/manager/session/streamed-message-identity.ts +21 -0
- package/src/manager/session/turn-recorder.ts +4 -3
- package/src/pals/activity/causality.ts +261 -0
- package/src/pals/activity/projection.ts +89 -0
- package/src/pals/activity/source.ts +240 -0
- package/src/pals/activity/subscription-policy.ts +230 -0
- package/src/pals/activity/subscription-schema.ts +27 -0
- package/src/pals/activity/subscription-store.ts +172 -0
- package/src/pals/activity/subscription-types.ts +48 -0
- package/src/pals/activity/subscriptions.ts +209 -0
- package/src/pals/activity/types.ts +108 -0
- package/src/pals/channels/ingress.ts +153 -0
- package/src/pals/channels/routes.ts +118 -0
- package/src/pals/channels/routing.ts +197 -0
- package/src/pals/channels/schema.ts +108 -0
- package/src/pals/channels/types.ts +156 -0
- package/src/pals/communication/broker.ts +131 -0
- package/src/pals/communication/dispatch.ts +66 -0
- package/src/pals/communication/inbound.ts +193 -0
- package/src/pals/communication/ingress-dispatch.ts +63 -0
- package/src/pals/communication/ingress-inbound.ts +269 -0
- package/src/pals/communication/ingress-schema.ts +526 -0
- package/src/pals/communication/ingress-types.ts +336 -0
- package/src/pals/communication/operator.ts +315 -0
- package/src/pals/communication/policy.ts +174 -0
- package/src/pals/communication/schema.ts +173 -0
- package/src/pals/communication/store.ts +577 -0
- package/src/pals/communication/tools.ts +139 -0
- package/src/pals/communication/types.ts +227 -0
- package/src/pals/communication/verify.ts +220 -0
- package/src/pals/lifecycle.ts +54 -0
- package/src/pals/prompt.ts +101 -0
- package/src/pals/reference-images.ts +322 -0
- package/src/pals/runtime.ts +670 -0
- package/src/pals/store.ts +369 -0
- package/src/pals/types.ts +157 -0
- package/src/peers/envelope.ts +1 -1
- package/src/plugin/lifecycle.ts +217 -46
- package/src/plugin/shell-hook.ts +8 -2
- package/src/process/kill-tree.ts +10 -1
- package/src/prompt/resident-learning.ts +2 -2
- package/src/prompt/resident-step.ts +4 -4
- package/src/provider/errors.ts +135 -2
- package/src/public-runtime.ts +119 -12
- package/src/public-tools.ts +13 -1
- package/src/public-types.ts +69 -7
- package/src/registry/tool/presentation.ts +9 -4
- package/src/registry/tool/screen.ts +34 -2
- package/src/runtime/harness-session/index.ts +1125 -0
- package/src/runtime/harness-session/journal.ts +209 -0
- package/src/runtime/harness-session/saved-view.ts +122 -0
- package/src/runtime/jobs/awaited-jobs.ts +2 -1
- package/src/runtime/jobs/registry.ts +423 -50
- package/src/runtime/query/abandon-turn.ts +18 -2
- package/src/runtime/query/checkpoint.ts +11 -0
- package/src/runtime/query/durable-inbound.ts +101 -0
- package/src/runtime/query/events.ts +22 -5
- package/src/runtime/query/executor/tool-call-admission.ts +125 -32
- package/src/runtime/query/executor.ts +316 -130
- package/src/runtime/query/index.ts +48 -5
- package/src/runtime/query/iteration/index.ts +253 -114
- package/src/runtime/query/iteration/outstanding-work.ts +57 -7
- package/src/runtime/query/iteration/phases/context.ts +8 -0
- package/src/runtime/query/iteration/phases/tool-review.ts +124 -22
- package/src/runtime/query/iteration/step-shaping.ts +9 -1
- package/src/runtime/query/observation-context.ts +22 -16
- package/src/runtime/query/prepare-turn.ts +2 -2
- package/src/runtime/query/prompt-cache.ts +3 -0
- package/src/runtime/query/prompt.ts +32 -1
- package/src/runtime/query/repeat-call.ts +40 -10
- package/src/runtime/query/resume-pending.ts +60 -7
- package/src/runtime/query/resume-session.ts +1 -1
- package/src/runtime/query/review-policy.ts +23 -2
- package/src/runtime/query/saved-presentation.ts +70 -0
- package/src/runtime/query/steering.ts +6 -9
- package/src/runtime/query/tool-executions.ts +108 -9
- package/src/runtime/query/tooling.ts +6 -1
- package/src/scheduler/completion-inbox.ts +108 -7
- package/src/scheduler/delegating.ts +5 -0
- package/src/scheduler/local.ts +2 -0
- package/src/session/summary/materialize.ts +51 -9
- package/src/store/budget/ledger.ts +60 -5
- package/src/store/index.ts +1 -0
- package/src/store/memory/disk.ts +82 -7
- package/src/store/memory/index.ts +66 -7
- package/src/store/memory/markdown.ts +54 -2
- package/src/store/memory/memory.ts +52 -2
- package/src/store/memory/revision.ts +158 -0
- package/src/store/session/disk.ts +77 -10
- package/src/store/session/memory.ts +32 -7
- package/src/store/session-log/core.ts +118 -11
- package/src/store/session-log/disk.ts +9 -2
- package/src/store/session-log/fold.ts +22 -0
- package/src/store/session-log/index.ts +5 -0
- package/src/store/session-log/memory.ts +2 -1
- package/src/store/session-log/spill.ts +89 -6
- package/src/store/session-log/structured-result.ts +96 -0
- package/src/store/task/disk.ts +46 -2
- package/src/store/task/memory.ts +13 -3
- package/src/tools/admit-facts.ts +145 -0
- package/src/tools/builtins/bash.ts +132 -24
- package/src/tools/builtins/edit.ts +42 -0
- package/src/tools/builtins/file-write-result.ts +14 -0
- package/src/tools/builtins/glob.ts +12 -0
- package/src/tools/builtins/grep.ts +14 -0
- package/src/tools/builtins/index.ts +2 -0
- package/src/tools/builtins/job.ts +4 -1
- package/src/tools/builtins/read-file.ts +57 -0
- package/src/tools/builtins/view-image.ts +409 -0
- package/src/tools/builtins/wait-for-job-bounds.ts +45 -7
- package/src/tools/builtins/wait-for-job.ts +159 -36
- package/src/tools/builtins/write-file.ts +4 -2
- package/src/tools/command-shell.ts +132 -5
- package/src/tools/coordinator/agent.ts +9 -19
- package/src/tools/coordinator/index.ts +150 -75
- package/src/tools/coordinator/wait-with-idle-bound.ts +3 -1
- package/src/tools/defineTool.ts +4 -0
- package/src/tools/failure-facts.ts +24 -0
- package/src/tools/host-output.ts +136 -0
- package/src/tools/memory/delete.ts +33 -3
- package/src/tools/memory/read.ts +35 -2
- package/src/tools/memory/search.ts +38 -7
- package/src/tools/memory/update.ts +28 -3
- package/src/tools/oem-code-pages.ts +22 -0
- package/src/tools/schedules/schedule-tool.ts +38 -5
- package/src/tools/schedules/types.ts +23 -3
- package/src/tools/task/list.ts +15 -7
- package/src/tools/task/present.ts +37 -7
- package/src/tools/task/update.ts +12 -5
- package/src/tools/text-window.ts +87 -0
- package/src/toolsets/manager.ts +132 -2
- package/src/turn/memory-recall.ts +5 -1
- package/src/types/acp/index.ts +150 -4
- package/src/types/agent/base.ts +3 -0
- package/src/types/agent/manager.ts +8 -23
- package/src/types/agent/scheduler.ts +10 -1
- package/src/types/agent/task.ts +4 -0
- package/src/types/connector/mcp.ts +7 -0
- package/src/types/errors/catalog.ts +4 -2
- package/src/types/harness/schema.ts +203 -0
- package/src/types/harness/session.ts +306 -0
- package/src/types/hitl/index.ts +17 -1
- package/src/types/job/index.ts +42 -0
- package/src/types/memory/index.ts +43 -0
- package/src/types/message/inbound-delivery.ts +63 -0
- package/src/types/message/index.ts +8 -1
- package/src/types/plugin/index.ts +11 -6
- package/src/types/sandbox/index.ts +46 -0
- package/src/types/session/checkpoint.ts +4 -1
- package/src/types/session/events.ts +23 -1
- package/src/types/session/records.ts +114 -2
- package/src/types/session/step.ts +2 -0
- package/src/types/session/store.ts +23 -9
- package/src/types/session/tool-execution.ts +6 -0
- package/src/types/structured-output/index.ts +13 -2
- package/src/types/summary/ref.ts +3 -1
- package/src/types/tool/index.ts +39 -5
- package/src/types/tool/presentation.ts +121 -0
- package/src/utils/json-snapshot.ts +26 -9
- package/src/utils/structured-result-json.ts +10 -0
|
@@ -3,11 +3,14 @@ import {
|
|
|
3
3
|
extractFromAssistantMessage,
|
|
4
4
|
extractFromUserMessage,
|
|
5
5
|
} from '../../../compaction/extractor.js'
|
|
6
|
+
import { estimateMessageTokens } from '../../../compaction/token-estimate.js'
|
|
6
7
|
import { AUTO_CONTINUATION_USER_MESSAGE } from '../../../constants/continuation.js'
|
|
8
|
+
import { CHARS_PER_TOKEN } from '../../../constants/limits.js'
|
|
7
9
|
import {
|
|
8
10
|
DEFAULT_STRUCTURED_OUTPUT_RETRIES,
|
|
9
11
|
STRUCTURED_OUTPUT_REPROMPT,
|
|
10
12
|
} from '../../../constants/tools/index.js'
|
|
13
|
+
import { withStreamedMessageIdentity } from '../../../manager/session/streamed-message-identity.js'
|
|
11
14
|
import { renderSkillsSection } from '../../../persona/assembler.js'
|
|
12
15
|
import { resolveProviderCapabilities } from '../../../provider/capabilities.js'
|
|
13
16
|
import { collectChatCompletion } from '../../../provider/collect-chat-completion.js'
|
|
@@ -46,7 +49,9 @@ import type { LLMToolSchema } from '../../../types/tool/index.js'
|
|
|
46
49
|
import { toErrorMessage } from '../../../utils/error.js'
|
|
47
50
|
import { stableDigest } from '../../../utils/hash.js'
|
|
48
51
|
import { generateMessageId } from '../../../utils/id.js'
|
|
52
|
+
import { parseStructuredResultJson } from '../../../utils/structured-result-json.js'
|
|
49
53
|
import { createCallbackInference } from '../callback-inference.js'
|
|
54
|
+
import { deliverDurableInbound } from '../durable-inbound.js'
|
|
50
55
|
import type { ToolCallOutcome } from '../executor.js'
|
|
51
56
|
import { projectObservationContext } from '../observation-context.js'
|
|
52
57
|
import { applyLifecycleHookResults } from '../plugin-hooks.js'
|
|
@@ -63,7 +68,11 @@ import {
|
|
|
63
68
|
} from '../request-rich-content.js'
|
|
64
69
|
import { formatSteeringNote, isOperatorUserMessage } from '../steering.js'
|
|
65
70
|
import { parseNativeCandidate } from './native-output.js'
|
|
66
|
-
import {
|
|
71
|
+
import {
|
|
72
|
+
drainArrivedTaskCompletions,
|
|
73
|
+
holdForOutstandingWork,
|
|
74
|
+
settleOutstandingWork,
|
|
75
|
+
} from './outstanding-work.js'
|
|
67
76
|
import { runAdvisoryPhase } from './phases/advisory.js'
|
|
68
77
|
import { runIterationCheckpoint } from './phases/checkpoint.js'
|
|
69
78
|
import {
|
|
@@ -160,7 +169,12 @@ export class IterationOrchestrator {
|
|
|
160
169
|
private projectObservations(messages: Message[]): Message[] {
|
|
161
170
|
const config = this.ctx.compactionConfig
|
|
162
171
|
return config && config.strategy !== 'disabled' && config.deduplicateObservations !== false
|
|
163
|
-
? projectObservationContext(
|
|
172
|
+
? projectObservationContext(
|
|
173
|
+
messages,
|
|
174
|
+
this.ctx.tools,
|
|
175
|
+
config.preserveToolResultsFrom,
|
|
176
|
+
(call, message) => this.ctx.toolExecutor.recordedObservationKey(call, message),
|
|
177
|
+
)
|
|
164
178
|
: messages
|
|
165
179
|
}
|
|
166
180
|
/** Rich tool blocks already reported; durable history is scanned every turn. */
|
|
@@ -182,6 +196,9 @@ export class IterationOrchestrator {
|
|
|
182
196
|
private stopDeferredForOutstandingWork = false
|
|
183
197
|
/** One current input, independent of the compactable history array. */
|
|
184
198
|
private latestUserMessage: UserMessage | undefined
|
|
199
|
+
private initialDurableDelivered = false
|
|
200
|
+
private resumedToolResults: readonly ToolCallOutcome[] = []
|
|
201
|
+
private toolStructuredCounterHydrated = false
|
|
185
202
|
|
|
186
203
|
constructor(ctx: IterationContext) {
|
|
187
204
|
this.ctx = {
|
|
@@ -194,6 +211,11 @@ export class IterationOrchestrator {
|
|
|
194
211
|
ctx.checkpointMgr.setAnswerReviewAttemptsSource?.(() => this.answerReviewAttempts)
|
|
195
212
|
ctx.checkpointMgr.setStructuredReviewAttemptsSource?.(() => this.structuredReviewAttempts)
|
|
196
213
|
ctx.checkpointMgr.setNativeStructuredAttemptsSource?.(() => this.nativeStructuredAttempts)
|
|
214
|
+
ctx.checkpointMgr.setToolStructuredAttemptsSource?.(() =>
|
|
215
|
+
this.toolStructuredCounterHydrated
|
|
216
|
+
? this.toolStructuredAttempts
|
|
217
|
+
: (ctx.checkpointMgr.restoredToolStructuredAttempts ?? 0),
|
|
218
|
+
)
|
|
197
219
|
if (ctx.structuredOutput?.mode === 'native') {
|
|
198
220
|
const limit = ctx.structuredOutput.maxRetries
|
|
199
221
|
if (limit !== undefined && (!Number.isSafeInteger(limit) || limit < 0))
|
|
@@ -207,6 +229,11 @@ export class IterationOrchestrator {
|
|
|
207
229
|
)
|
|
208
230
|
throw new RangeError('Unknown structuredOutput.mode')
|
|
209
231
|
const maxReviews = ctx.structuredOutput?.maxReviews
|
|
232
|
+
const retention = ctx.structuredOutput?.toolResultRetention
|
|
233
|
+
if (retention !== undefined && !['receipt', 'durable'].includes(retention))
|
|
234
|
+
throw new RangeError('Unknown structuredOutput.toolResultRetention')
|
|
235
|
+
if (retention === 'durable' && ctx.structuredOutput?.mode === 'native')
|
|
236
|
+
throw new RangeError('structuredOutput.toolResultRetention: durable requires tool mode')
|
|
210
237
|
if (maxReviews !== undefined && (!Number.isSafeInteger(maxReviews) || maxReviews < 0))
|
|
211
238
|
throw new RangeError('structuredOutput.maxReviews must be a nonnegative safe integer')
|
|
212
239
|
if (
|
|
@@ -291,15 +318,35 @@ export class IterationOrchestrator {
|
|
|
291
318
|
this.ctx = { ...this.ctx, rootSpan: span }
|
|
292
319
|
}
|
|
293
320
|
|
|
321
|
+
/** Fresh input is recorded before guards; restored tool batches must finish first. */
|
|
322
|
+
async deliverInitialDurable(): Promise<void> {
|
|
323
|
+
if (this.initialDurableDelivered) return
|
|
324
|
+
await deliverDurableInbound(
|
|
325
|
+
this.ctx.recorder,
|
|
326
|
+
this.ctx.durableInbound,
|
|
327
|
+
this.ctx.abortController.signal,
|
|
328
|
+
)
|
|
329
|
+
this.initialDurableDelivered = true
|
|
330
|
+
}
|
|
331
|
+
|
|
332
|
+
/** A restored pending batch must answer every owned call before consuming its correction. */
|
|
333
|
+
setResumedToolResults(results: readonly ToolCallOutcome[]): void {
|
|
334
|
+
this.resumedToolResults = results
|
|
335
|
+
}
|
|
336
|
+
|
|
294
337
|
async *runLoop(): AsyncGenerator<SessionEvent> {
|
|
295
338
|
const { turnConfig, recorder } = this.ctx
|
|
296
339
|
const { model } = turnConfig
|
|
297
340
|
const tracer = getTracer()
|
|
341
|
+
// Initial durable input arrives before checkpoints, plan gates or inference.
|
|
342
|
+
await this.deliverInitialDurable()
|
|
298
343
|
// Resume hydration happens after construction, before the loop starts.
|
|
299
344
|
this.latestUserMessage = this.ctx.checkpointMgr.restoredLatestUserMessage
|
|
300
345
|
this.answerReviewAttempts = this.ctx.checkpointMgr.restoredAnswerReviewAttempts ?? 0
|
|
301
346
|
this.structuredReviewAttempts = this.ctx.checkpointMgr.restoredStructuredReviewAttempts ?? 0
|
|
302
347
|
this.nativeStructuredAttempts = this.ctx.checkpointMgr.restoredNativeStructuredAttempts ?? 0
|
|
348
|
+
this.toolStructuredAttempts = this.ctx.checkpointMgr.restoredToolStructuredAttempts ?? 0
|
|
349
|
+
this.toolStructuredCounterHydrated = true
|
|
303
350
|
if (!this.latestUserMessage) {
|
|
304
351
|
for (const message of recorder.messages) this.rememberUserMessage(message, false)
|
|
305
352
|
}
|
|
@@ -307,6 +354,9 @@ export class IterationOrchestrator {
|
|
|
307
354
|
// Only known post-checkpoint arrivals may supersede it, never an old
|
|
308
355
|
// retained user turn encountered while scanning restored history.
|
|
309
356
|
for (const message of this.ctx.resumedInput ?? []) this.rememberUserMessage(message)
|
|
357
|
+
const resumedToolResults = this.resumedToolResults
|
|
358
|
+
this.resumedToolResults = []
|
|
359
|
+
await this.recordToolStructuredFailure(resumedToolResults, recorder.currentIteration)
|
|
310
360
|
|
|
311
361
|
// What a recoverable failure pauses on when it lands before this
|
|
312
362
|
// loop wrote a checkpoint of its own: without it a 429 on the first
|
|
@@ -326,9 +376,6 @@ export class IterationOrchestrator {
|
|
|
326
376
|
// succeeded, which is the evidence that the turn is no longer stuck.
|
|
327
377
|
let overflowRelieved = false
|
|
328
378
|
|
|
329
|
-
const planSignal = yield* runPlanGate(this.ctx)
|
|
330
|
-
if (planSignal === 'stop') return
|
|
331
|
-
|
|
332
379
|
// A `finally` rather than a line at each exit, for the reason written
|
|
333
380
|
// beside `iterSpan.end()` below: this loop leaves by eight `break`s,
|
|
334
381
|
// two `return`s and a `throw`, and a rule every future edit has to
|
|
@@ -339,19 +386,17 @@ export class IterationOrchestrator {
|
|
|
339
386
|
// A `finally` also covers a generator abandoned by its consumer, which
|
|
340
387
|
// no post-loop block reaches.
|
|
341
388
|
try {
|
|
389
|
+
// Restored exhaustion precedes plan gates and any auxiliary inference.
|
|
390
|
+
if (this.stopForStructuredRetryExhaustion()) return
|
|
391
|
+
const planSignal = yield* runPlanGate(this.ctx)
|
|
392
|
+
if (planSignal === 'stop') return
|
|
342
393
|
while (true) {
|
|
343
394
|
if (this.ctx.abortController.signal.aborted) {
|
|
344
395
|
recorder.setStopReason('cancelled')
|
|
345
396
|
recorder.markCancelled()
|
|
346
397
|
break
|
|
347
398
|
}
|
|
348
|
-
if (
|
|
349
|
-
this.ctx.structuredOutput?.mode === 'native' &&
|
|
350
|
-
this.nativeStructuredAttempts > this.structuredOutputRetryLimit()
|
|
351
|
-
) {
|
|
352
|
-
recorder.setStopReason('structured_output_failed')
|
|
353
|
-
break
|
|
354
|
-
}
|
|
399
|
+
if (this.stopForStructuredRetryExhaustion()) break
|
|
355
400
|
if (
|
|
356
401
|
this.ctx.reviewAnswer &&
|
|
357
402
|
this.answerReviewAttempts > (this.ctx.maxAnswerReviews ?? DEFAULT_ANSWER_REVIEW_LIMIT)
|
|
@@ -548,13 +593,37 @@ export class IterationOrchestrator {
|
|
|
548
593
|
// Shape this step before calling the model. `stopWhen` decides
|
|
549
594
|
// whether to keep going; this decides HOW. No-op when the host
|
|
550
595
|
// supplied no hook.
|
|
596
|
+
// Render request-only contributions once before preparation. Their
|
|
597
|
+
// estimated cost reduces every stage's headroom, and the same text
|
|
598
|
+
// reaches the provider even if a stage changes external state.
|
|
599
|
+
const contextSections =
|
|
600
|
+
this.ctx.promptContributions?.render('context', { iteration: iterationNum }) ?? []
|
|
601
|
+
const deferredMcpHints =
|
|
602
|
+
this.ctx.showDeferredToolContext !== false
|
|
603
|
+
? this.ctx.tools.snapshotUntrustedDeferredContext()
|
|
604
|
+
: undefined
|
|
605
|
+
const pricedContextText = [
|
|
606
|
+
...contextSections,
|
|
607
|
+
...(deferredMcpHints?.all ? [deferredMcpHints.all] : []),
|
|
608
|
+
].join('\n\n')
|
|
609
|
+
const shaping: StepShaping = {
|
|
610
|
+
...this.stepShaping(),
|
|
611
|
+
requestContextTokens: pricedContextText
|
|
612
|
+
? estimateMessageTokens(stepContextMessage(pricedContextText)) +
|
|
613
|
+
Math.ceil(
|
|
614
|
+
((deferredMcpHints?.maxRenderedChars ?? 0) -
|
|
615
|
+
(deferredMcpHints?.all.length ?? 0)) /
|
|
616
|
+
CHARS_PER_TOKEN,
|
|
617
|
+
)
|
|
618
|
+
: 0,
|
|
619
|
+
}
|
|
551
620
|
const contextModelBeforePreparation = this.ctx.contextModel ?? model
|
|
552
|
-
const step = await prepareStep(
|
|
621
|
+
const step = await prepareStep(shaping, iterationNum)
|
|
553
622
|
// Preparation inference belongs to the turn, not the main-model step.
|
|
554
623
|
usageBefore = { ...recorder.tokenUsage }
|
|
555
624
|
costBefore = { ...recorder.costInfo }
|
|
556
625
|
stepModel = step.model ?? model
|
|
557
|
-
await selectContextModel(
|
|
626
|
+
await selectContextModel(shaping, stepModel)
|
|
558
627
|
// Preserve post-compaction preparation/recall semantics. A changed
|
|
559
628
|
// model needs a second check against its own window; never replay
|
|
560
629
|
// host preparation effects merely to rebuild its request guidance.
|
|
@@ -563,6 +632,11 @@ export class IterationOrchestrator {
|
|
|
563
632
|
yield* this.ctx.drainPending()
|
|
564
633
|
|
|
565
634
|
const stepAllowedTools = step.allowedTools ?? this.ctx.allowedTools
|
|
635
|
+
const deferredMcpContext = deferredMcpHints?.forNames(stepAllowedTools) ?? ''
|
|
636
|
+
const contextText = [
|
|
637
|
+
...contextSections,
|
|
638
|
+
...(deferredMcpContext ? [deferredMcpContext] : []),
|
|
639
|
+
].join('\n\n')
|
|
566
640
|
const llmTools = this.ctx.tools
|
|
567
641
|
.toLLMTools(stepAllowedTools)
|
|
568
642
|
.filter(
|
|
@@ -643,11 +717,6 @@ export class IterationOrchestrator {
|
|
|
643
717
|
// (compaction preserves it there) and leaves the request's
|
|
644
718
|
// system run here.
|
|
645
719
|
const workingMemory = splitWorkingMemoryForRequest(baseMessages)
|
|
646
|
-
const contextSections =
|
|
647
|
-
this.ctx.promptContributions?.render('context', {
|
|
648
|
-
iteration: iterationNum,
|
|
649
|
-
}) ?? []
|
|
650
|
-
|
|
651
720
|
const stepPreamble = [step.system, stepSkills, policyNotice, ...turnSections]
|
|
652
721
|
.filter(Boolean)
|
|
653
722
|
.join('\n\n')
|
|
@@ -655,15 +724,14 @@ export class IterationOrchestrator {
|
|
|
655
724
|
? [...workingMemory.history, createSystemMessage(stepPreamble)]
|
|
656
725
|
: [...workingMemory.history]
|
|
657
726
|
if (workingMemory.context) requestHistory.push(workingMemory.context)
|
|
658
|
-
if (
|
|
659
|
-
requestHistory.push(stepContextMessage(contextSections.join('\n\n')))
|
|
727
|
+
if (contextText) requestHistory.push(stepContextMessage(contextText))
|
|
660
728
|
if (step.context) requestHistory.push(stepContextMessage(step.context))
|
|
661
729
|
const messages = projectRequestRichContent(
|
|
662
730
|
this.projectObservations(requestHistory),
|
|
663
731
|
this.ctx.turnConfig.maxRequestRichContentBytes ??
|
|
664
732
|
DEFAULT_MAX_REQUEST_RICH_CONTENT_BYTES,
|
|
665
733
|
)
|
|
666
|
-
appendWorkContext(
|
|
734
|
+
appendWorkContext(shaping, messages, iterationNum, step)
|
|
667
735
|
if (closingDirective) messages.push(closingDirective)
|
|
668
736
|
await this.reportUnsupportedToolResults(messages)
|
|
669
737
|
yield* this.ctx.drainPending()
|
|
@@ -962,22 +1030,25 @@ export class IterationOrchestrator {
|
|
|
962
1030
|
// with the turn they belong to. Trimming therefore removes both;
|
|
963
1031
|
// retaining them gives the target adapter enough evidence to
|
|
964
1032
|
// validate native replay against the exact serving route.
|
|
965
|
-
const assistantMsg =
|
|
966
|
-
|
|
967
|
-
|
|
968
|
-
|
|
969
|
-
|
|
970
|
-
|
|
971
|
-
|
|
972
|
-
|
|
973
|
-
|
|
974
|
-
|
|
975
|
-
|
|
976
|
-
|
|
977
|
-
|
|
978
|
-
|
|
979
|
-
|
|
980
|
-
|
|
1033
|
+
const assistantMsg = withStreamedMessageIdentity(
|
|
1034
|
+
createAssistantMessage(
|
|
1035
|
+
response.message.content,
|
|
1036
|
+
forceFinalize ? undefined : response.message.toolCalls,
|
|
1037
|
+
response.message.reasoning,
|
|
1038
|
+
// Rides with the turn it belongs to, like reasoning does, so
|
|
1039
|
+
// trimming or compacting the turn takes its evidence with it
|
|
1040
|
+
// rather than leaving citations pointing at prose that is gone.
|
|
1041
|
+
response.message.citations,
|
|
1042
|
+
{
|
|
1043
|
+
type: 'model',
|
|
1044
|
+
...servedBy,
|
|
1045
|
+
...(response.message.replayState !== undefined
|
|
1046
|
+
? { replayState: response.message.replayState }
|
|
1047
|
+
: {}),
|
|
1048
|
+
},
|
|
1049
|
+
response.message.textParts,
|
|
1050
|
+
),
|
|
1051
|
+
messageId,
|
|
981
1052
|
)
|
|
982
1053
|
recorder.pushMessage(assistantMsg)
|
|
983
1054
|
if (this.ctx.advisoryCtx && requestMessages) {
|
|
@@ -1150,7 +1221,7 @@ export class IterationOrchestrator {
|
|
|
1150
1221
|
const changed = yield* holdForOutstandingWork(this.ctx, iterationNum, false, () =>
|
|
1151
1222
|
this.deliverInbound(),
|
|
1152
1223
|
)
|
|
1153
|
-
const inbound = this.deliverInbound()
|
|
1224
|
+
const inbound = await this.deliverInbound()
|
|
1154
1225
|
if (changed || inbound > 0) continue
|
|
1155
1226
|
}
|
|
1156
1227
|
if (this.ctx.abortController.signal.aborted) {
|
|
@@ -1171,6 +1242,21 @@ export class IterationOrchestrator {
|
|
|
1171
1242
|
continue
|
|
1172
1243
|
}
|
|
1173
1244
|
|
|
1245
|
+
// Missing output and rejected model arguments share one durable
|
|
1246
|
+
// correction allowance, including prose cut off by the output cap.
|
|
1247
|
+
if (!forceFinalize && this.needsStructuredOutput()) {
|
|
1248
|
+
await this.recordToolStructuredCorrection(iterationNum)
|
|
1249
|
+
await this.ctx.emitEvent({
|
|
1250
|
+
type: 'iteration_completed',
|
|
1251
|
+
turnId: recorder.turnId,
|
|
1252
|
+
iteration: iterationNum,
|
|
1253
|
+
hasToolCalls: false,
|
|
1254
|
+
})
|
|
1255
|
+
yield* this.ctx.drainPending()
|
|
1256
|
+
if (this.stopForStructuredRetryExhaustion()) break
|
|
1257
|
+
continue
|
|
1258
|
+
}
|
|
1259
|
+
|
|
1174
1260
|
const hasContent =
|
|
1175
1261
|
response.message.content !== null && response.message.content.length > 0
|
|
1176
1262
|
|
|
@@ -1221,40 +1307,6 @@ export class IterationOrchestrator {
|
|
|
1221
1307
|
continue
|
|
1222
1308
|
}
|
|
1223
1309
|
|
|
1224
|
-
// The model tried to finish in prose while a structured
|
|
1225
|
-
// output was demanded. Send it back with the schema error
|
|
1226
|
-
// rather than returning an unusable result — this is the
|
|
1227
|
-
// re-prompt half, and it is bounded so a model that cannot
|
|
1228
|
-
// satisfy the schema fails loudly instead of looping.
|
|
1229
|
-
if (!forceFinalize && this.needsStructuredOutput()) {
|
|
1230
|
-
const attempt = ++this.structuredOutputAttempts
|
|
1231
|
-
const limit = this.structuredOutputRetryLimit()
|
|
1232
|
-
if (attempt > limit) {
|
|
1233
|
-
this.ctx.log.warn('Structured output not produced within its retries', {
|
|
1234
|
-
[NAMZU.TURN_ID]: recorder.turnId,
|
|
1235
|
-
'namzu.runtime.attempts': attempt - 1,
|
|
1236
|
-
})
|
|
1237
|
-
recorder.setStopReason('structured_output_failed')
|
|
1238
|
-
break
|
|
1239
|
-
}
|
|
1240
|
-
this.ctx.log.info('Re-prompting for structured output', {
|
|
1241
|
-
[NAMZU.TURN_ID]: recorder.turnId,
|
|
1242
|
-
'namzu.retry.attempt': attempt,
|
|
1243
|
-
'namzu.runtime.limit': limit,
|
|
1244
|
-
})
|
|
1245
|
-
recorder.pushMessage(
|
|
1246
|
-
createRuntimeContextMessage(STRUCTURED_OUTPUT_REPROMPT, 'structured-output'),
|
|
1247
|
-
)
|
|
1248
|
-
await this.ctx.emitEvent({
|
|
1249
|
-
type: 'iteration_completed',
|
|
1250
|
-
turnId: recorder.turnId,
|
|
1251
|
-
iteration: iterationNum,
|
|
1252
|
-
hasToolCalls: false,
|
|
1253
|
-
})
|
|
1254
|
-
yield* this.ctx.drainPending()
|
|
1255
|
-
continue
|
|
1256
|
-
}
|
|
1257
|
-
|
|
1258
1310
|
// Let the host judge the ANSWER and hand back work.
|
|
1259
1311
|
//
|
|
1260
1312
|
// The stop predicate is only consulted after tools ran, so
|
|
@@ -1346,7 +1398,7 @@ export class IterationOrchestrator {
|
|
|
1346
1398
|
// After the outstanding-work hold above, so a delivery
|
|
1347
1399
|
// does not race a worker still finishing, and before the
|
|
1348
1400
|
// settle below, which is the last moment it can matter.
|
|
1349
|
-
if (!forceFinalize && this.deliverInbound() > 0) {
|
|
1401
|
+
if (!forceFinalize && (await this.deliverInbound()) > 0) {
|
|
1350
1402
|
await this.ctx.emitEvent({
|
|
1351
1403
|
type: 'iteration_completed',
|
|
1352
1404
|
turnId: recorder.turnId,
|
|
@@ -1431,6 +1483,10 @@ export class IterationOrchestrator {
|
|
|
1431
1483
|
if (reviewOutcome.decision === 'stop') {
|
|
1432
1484
|
return
|
|
1433
1485
|
}
|
|
1486
|
+
const needsCorrection = await this.recordToolStructuredFailure(
|
|
1487
|
+
reviewOutcome.results,
|
|
1488
|
+
iterationNum,
|
|
1489
|
+
)
|
|
1434
1490
|
|
|
1435
1491
|
// A tool asked for a person. The whole batch is committed; the
|
|
1436
1492
|
// turn parks here rather than asking the model what to do about
|
|
@@ -1442,6 +1498,17 @@ export class IterationOrchestrator {
|
|
|
1442
1498
|
if (reviewOutcome.decision === 'rejected') {
|
|
1443
1499
|
continue
|
|
1444
1500
|
}
|
|
1501
|
+
if (needsCorrection) {
|
|
1502
|
+
await this.ctx.emitEvent({
|
|
1503
|
+
type: 'iteration_completed',
|
|
1504
|
+
turnId: recorder.turnId,
|
|
1505
|
+
iteration: iterationNum,
|
|
1506
|
+
hasToolCalls: true,
|
|
1507
|
+
})
|
|
1508
|
+
yield* this.ctx.drainPending()
|
|
1509
|
+
if (this.stopForStructuredRetryExhaustion()) break
|
|
1510
|
+
continue
|
|
1511
|
+
}
|
|
1445
1512
|
|
|
1446
1513
|
// A successful `structured_output` call IS the answer, so the
|
|
1447
1514
|
// run ends here rather than paying for another turn whose only
|
|
@@ -1491,7 +1558,7 @@ export class IterationOrchestrator {
|
|
|
1491
1558
|
break
|
|
1492
1559
|
}
|
|
1493
1560
|
if (!forceFinalize) {
|
|
1494
|
-
const inbound = this.deliverInbound()
|
|
1561
|
+
const inbound = await this.deliverInbound()
|
|
1495
1562
|
// Tool-result steering may already have been delivered by
|
|
1496
1563
|
// runToolReview. Its candidate still answers the older input.
|
|
1497
1564
|
if (inbound > 0 || this.latestUserMessage !== operatorInputAtDispatch) continue
|
|
@@ -1617,7 +1684,7 @@ export class IterationOrchestrator {
|
|
|
1617
1684
|
// Placed beside the advisory phase deliberately: that is the
|
|
1618
1685
|
// established seam for putting a user message in after tool
|
|
1619
1686
|
// results and before the next turn.
|
|
1620
|
-
const unheard = this.ctx
|
|
1687
|
+
const unheard = await drainArrivedTaskCompletions(this.ctx)
|
|
1621
1688
|
if (unheard.length > 0) {
|
|
1622
1689
|
this.ctx.log.info('Delivering unawaited task completions', {
|
|
1623
1690
|
[NAMZU.TURN_ID]: recorder.turnId,
|
|
@@ -1633,7 +1700,7 @@ export class IterationOrchestrator {
|
|
|
1633
1700
|
// and never deliver it. Placed here rather than at the top of
|
|
1634
1701
|
// the next iteration so a message queued during THIS turn is
|
|
1635
1702
|
// in the history the next request is built from.
|
|
1636
|
-
this.deliverInbound()
|
|
1703
|
+
await this.deliverInbound()
|
|
1637
1704
|
|
|
1638
1705
|
await runAdvisoryPhase(this.ctx, iterationNum, response, this.getAdvisoryTurnContext())
|
|
1639
1706
|
|
|
@@ -1858,7 +1925,7 @@ export class IterationOrchestrator {
|
|
|
1858
1925
|
}
|
|
1859
1926
|
}
|
|
1860
1927
|
|
|
1861
|
-
private deliverInbound(): number {
|
|
1928
|
+
private async deliverInbound(): Promise<number> {
|
|
1862
1929
|
const queued = this.ctx.inboundMessages?.() ?? []
|
|
1863
1930
|
for (const message of queued) {
|
|
1864
1931
|
this.ctx.recorder.pushMessage(message)
|
|
@@ -1875,7 +1942,12 @@ export class IterationOrchestrator {
|
|
|
1875
1942
|
this.rememberUserMessage(createRuntimeContextMessage(stranded, 'steering'))
|
|
1876
1943
|
}
|
|
1877
1944
|
|
|
1878
|
-
|
|
1945
|
+
const durable = await deliverDurableInbound(
|
|
1946
|
+
this.ctx.recorder,
|
|
1947
|
+
this.ctx.durableInbound,
|
|
1948
|
+
this.ctx.abortController.signal,
|
|
1949
|
+
)
|
|
1950
|
+
return queued.length + (stranded ? 1 : 0) + durable
|
|
1879
1951
|
}
|
|
1880
1952
|
|
|
1881
1953
|
private recordStep(input: {
|
|
@@ -1933,6 +2005,7 @@ export class IterationOrchestrator {
|
|
|
1933
2005
|
toolName: tc.function.name,
|
|
1934
2006
|
output: outcome?.output ?? '',
|
|
1935
2007
|
isError: outcome?.isError ?? false,
|
|
2008
|
+
...(outcome?.skipped ? { skipped: true as const } : {}),
|
|
1936
2009
|
durationMs: 0,
|
|
1937
2010
|
},
|
|
1938
2011
|
]
|
|
@@ -1977,8 +2050,8 @@ export class IterationOrchestrator {
|
|
|
1977
2050
|
}
|
|
1978
2051
|
}
|
|
1979
2052
|
|
|
1980
|
-
/**
|
|
1981
|
-
private
|
|
2053
|
+
/** Model responses needing a tool-mode schema correction, separate from host reviews. */
|
|
2054
|
+
private toolStructuredAttempts = 0
|
|
1982
2055
|
private nativeStructuredAttempts = 0
|
|
1983
2056
|
private structuredOutputDone = false
|
|
1984
2057
|
private pendingStructuredOutput: unknown
|
|
@@ -1988,6 +2061,58 @@ export class IterationOrchestrator {
|
|
|
1988
2061
|
return this.ctx.structuredOutput?.maxRetries ?? DEFAULT_STRUCTURED_OUTPUT_RETRIES
|
|
1989
2062
|
}
|
|
1990
2063
|
|
|
2064
|
+
private stopForStructuredRetryExhaustion(): boolean {
|
|
2065
|
+
const { recorder, abortController } = this.ctx
|
|
2066
|
+
if (abortController.signal.aborted) {
|
|
2067
|
+
recorder.setStopReason('cancelled')
|
|
2068
|
+
recorder.markCancelled()
|
|
2069
|
+
return true
|
|
2070
|
+
}
|
|
2071
|
+
if (!this.needsStructuredOutput()) return false
|
|
2072
|
+
const attempts =
|
|
2073
|
+
this.ctx.structuredOutput?.mode === 'native'
|
|
2074
|
+
? this.nativeStructuredAttempts
|
|
2075
|
+
: this.toolStructuredAttempts
|
|
2076
|
+
if (attempts === 0 || !(attempts > this.structuredOutputRetryLimit())) return false
|
|
2077
|
+
recorder.setStopReason('structured_output_failed')
|
|
2078
|
+
return true
|
|
2079
|
+
}
|
|
2080
|
+
|
|
2081
|
+
private async recordToolStructuredFailure(
|
|
2082
|
+
results: readonly ToolCallOutcome[],
|
|
2083
|
+
iteration: number,
|
|
2084
|
+
): Promise<boolean> {
|
|
2085
|
+
if (
|
|
2086
|
+
!this.needsStructuredOutput() ||
|
|
2087
|
+
this.ctx.structuredOutput?.mode === 'native' ||
|
|
2088
|
+
this.ctx.abortController.signal.aborted ||
|
|
2089
|
+
!results.some(
|
|
2090
|
+
(result) => result.toolName === STRUCTURED_OUTPUT_TOOL_NAME && result.inputFailure,
|
|
2091
|
+
)
|
|
2092
|
+
)
|
|
2093
|
+
return false
|
|
2094
|
+
// One model response consumes one correction, even with several invalid calls.
|
|
2095
|
+
await this.recordToolStructuredCorrection(iteration)
|
|
2096
|
+
return true
|
|
2097
|
+
}
|
|
2098
|
+
|
|
2099
|
+
private async recordToolStructuredCorrection(iteration: number): Promise<void> {
|
|
2100
|
+
this.toolStructuredAttempts++
|
|
2101
|
+
const { recorder } = this.ctx
|
|
2102
|
+
recorder.pushMessage(
|
|
2103
|
+
createRuntimeContextMessage(STRUCTURED_OUTPUT_REPROMPT, 'structured-output'),
|
|
2104
|
+
)
|
|
2105
|
+
// Commit the full answered batch, feedback and allowance before another request
|
|
2106
|
+
// or handoff. A failed checkpoint must not buy another correction opportunity.
|
|
2107
|
+
const checkpoint = await this.ctx.checkpointMgr.create(recorder, iteration)
|
|
2108
|
+
await this.ctx.emitEvent({
|
|
2109
|
+
type: 'checkpoint_created',
|
|
2110
|
+
turnId: recorder.turnId,
|
|
2111
|
+
checkpointId: checkpoint.id,
|
|
2112
|
+
iteration,
|
|
2113
|
+
})
|
|
2114
|
+
}
|
|
2115
|
+
|
|
1991
2116
|
/** True while a structured output was demanded and has not arrived. */
|
|
1992
2117
|
private needsStructuredOutput(): boolean {
|
|
1993
2118
|
return this.ctx.structuredOutput !== undefined && !this.structuredOutputDone
|
|
@@ -1999,9 +2124,9 @@ export class IterationOrchestrator {
|
|
|
1999
2124
|
* Deliberately narrow. A terminal call decides the turn only when it is
|
|
2000
2125
|
* the ONLY call the model made in that turn: a model that asked for
|
|
2001
2126
|
* other work meant to see those results, and settling here would throw
|
|
2002
|
-
* away answers it requested.
|
|
2003
|
-
*
|
|
2004
|
-
*
|
|
2127
|
+
* away answers it requested. A failed or skipped terminal call also
|
|
2128
|
+
* needs another model turn: its receipt is not an executed answer.
|
|
2129
|
+
* These cases fall through to the ordinary path, and each says so in
|
|
2005
2130
|
* the log rather than quietly costing the relay the flag was set to
|
|
2006
2131
|
* avoid.
|
|
2007
2132
|
*/
|
|
@@ -2024,11 +2149,16 @@ export class IterationOrchestrator {
|
|
|
2024
2149
|
}
|
|
2025
2150
|
|
|
2026
2151
|
const hit = terminal[0]
|
|
2027
|
-
if (!hit || hit.isError) {
|
|
2028
|
-
this.ctx.log.info(
|
|
2029
|
-
|
|
2030
|
-
|
|
2031
|
-
|
|
2152
|
+
if (!hit || hit.isError || hit.skipped) {
|
|
2153
|
+
this.ctx.log.info(
|
|
2154
|
+
hit?.skipped
|
|
2155
|
+
? 'Terminal tool was skipped — returning its receipt to the model'
|
|
2156
|
+
: 'Terminal tool failed — returning the error to the model',
|
|
2157
|
+
{
|
|
2158
|
+
[NAMZU.TURN_ID]: this.ctx.recorder.turnId,
|
|
2159
|
+
[GENAI.TOOL_NAME]: hit?.toolName,
|
|
2160
|
+
},
|
|
2161
|
+
)
|
|
2032
2162
|
return undefined
|
|
2033
2163
|
}
|
|
2034
2164
|
return hit
|
|
@@ -2040,7 +2170,8 @@ export class IterationOrchestrator {
|
|
|
2040
2170
|
* The tool validates against the Zod schema before its `execute` runs,
|
|
2041
2171
|
* so reaching here successfully means the value is already valid — a
|
|
2042
2172
|
* failed parse comes back as an error result and simply does not
|
|
2043
|
-
* satisfy the demand, which sends the loop round again.
|
|
2173
|
+
* satisfy the demand, which sends the loop round again. A hook-skipped
|
|
2174
|
+
* receipt did not execute the tool and is not a candidate either.
|
|
2044
2175
|
*
|
|
2045
2176
|
* Narrow in the same way {@link terminalToolOutput} is, for its stated
|
|
2046
2177
|
* reason and one that is sharper here. The neighbour refuses a shared
|
|
@@ -2086,7 +2217,9 @@ export class IterationOrchestrator {
|
|
|
2086
2217
|
): Promise<'absent' | 'accepted' | 'retry' | 'exhausted' | 'cancelled'> {
|
|
2087
2218
|
if (!this.needsStructuredOutput() || this.ctx.structuredOutput?.mode === 'native')
|
|
2088
2219
|
return 'absent'
|
|
2089
|
-
const hit = results.find(
|
|
2220
|
+
const hit = results.find(
|
|
2221
|
+
(r) => r.toolName === STRUCTURED_OUTPUT_TOOL_NAME && !r.isError && !r.skipped,
|
|
2222
|
+
)
|
|
2090
2223
|
if (!hit) return 'absent'
|
|
2091
2224
|
|
|
2092
2225
|
const callCount = response.message.toolCalls?.length ?? 0
|
|
@@ -2100,15 +2233,19 @@ export class IterationOrchestrator {
|
|
|
2100
2233
|
|
|
2101
2234
|
let parsed: unknown
|
|
2102
2235
|
try {
|
|
2103
|
-
parsed =
|
|
2236
|
+
parsed =
|
|
2237
|
+
this.ctx.structuredOutput?.toolResultRetention === 'durable'
|
|
2238
|
+
? parseStructuredResultJson(
|
|
2239
|
+
hit.structuredResultJson === undefined ? hit.output : hit.structuredResultJson,
|
|
2240
|
+
)
|
|
2241
|
+
: JSON.parse(hit.output)
|
|
2104
2242
|
} catch {
|
|
2105
|
-
//
|
|
2106
|
-
//
|
|
2107
|
-
|
|
2108
|
-
|
|
2109
|
-
|
|
2110
|
-
|
|
2111
|
-
parsed = hit.output
|
|
2243
|
+
// Screening, hooks or output budgeting can change the validated
|
|
2244
|
+
// tool's receipt. A raw-text fallback is not a structured result;
|
|
2245
|
+
// do not recover input/data that bypasses those boundaries either.
|
|
2246
|
+
throw new Error(
|
|
2247
|
+
'Structured output requires an intact JSON tool result; check result transformations, increase maxToolOutputChars to fit the result, or use native mode with a capable provider',
|
|
2248
|
+
)
|
|
2112
2249
|
}
|
|
2113
2250
|
return this.reviewStructuredOutput(parsed, reviewRequest, model)
|
|
2114
2251
|
}
|
|
@@ -2386,23 +2523,25 @@ export class IterationOrchestrator {
|
|
|
2386
2523
|
model: servedBy.model,
|
|
2387
2524
|
})
|
|
2388
2525
|
|
|
2389
|
-
const
|
|
2390
|
-
|
|
2391
|
-
|
|
2392
|
-
|
|
2393
|
-
|
|
2394
|
-
|
|
2395
|
-
|
|
2396
|
-
|
|
2397
|
-
|
|
2398
|
-
|
|
2399
|
-
|
|
2400
|
-
|
|
2401
|
-
|
|
2526
|
+
const finalMessageId = generateMessageId()
|
|
2527
|
+
const assistantMsg = withStreamedMessageIdentity(
|
|
2528
|
+
createAssistantMessage(
|
|
2529
|
+
response.message.content,
|
|
2530
|
+
undefined,
|
|
2531
|
+
response.message.reasoning,
|
|
2532
|
+
response.message.citations,
|
|
2533
|
+
{
|
|
2534
|
+
type: 'model',
|
|
2535
|
+
...servedBy,
|
|
2536
|
+
...(response.message.replayState !== undefined
|
|
2537
|
+
? { replayState: response.message.replayState }
|
|
2538
|
+
: {}),
|
|
2539
|
+
},
|
|
2540
|
+
response.message.textParts,
|
|
2541
|
+
),
|
|
2542
|
+
finalMessageId,
|
|
2402
2543
|
)
|
|
2403
2544
|
this.ctx.recorder.pushMessage(assistantMsg)
|
|
2404
|
-
|
|
2405
|
-
const finalMessageId = generateMessageId()
|
|
2406
2545
|
await this.ctx.emitEvent({
|
|
2407
2546
|
type: 'message_started',
|
|
2408
2547
|
turnId: this.ctx.recorder.turnId,
|