@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
package/src/bridge/acp/server.ts
CHANGED
|
@@ -8,9 +8,11 @@ import {
|
|
|
8
8
|
ACP_METHODS,
|
|
9
9
|
ACP_PERMISSION_CAPABILITY,
|
|
10
10
|
ACP_PROTOCOL_VERSION,
|
|
11
|
+
ACP_TASK_CAPABILITY,
|
|
11
12
|
} from '../../constants/acp/index.js'
|
|
12
13
|
import type { HostCommandRegistry } from '../../registry/command/index.js'
|
|
13
14
|
import type { ToolPresenter } from '../../registry/tool/presentation.js'
|
|
15
|
+
import { isReviewMode } from '../../runtime/query/review-policy.js'
|
|
14
16
|
import type {
|
|
15
17
|
AcpFsReadResult,
|
|
16
18
|
AcpInitializeParams,
|
|
@@ -23,6 +25,7 @@ import type {
|
|
|
23
25
|
AcpSessionPromptParams,
|
|
24
26
|
AcpSessionPromptResult,
|
|
25
27
|
AcpSessionUpdate,
|
|
28
|
+
AcpTaskUpdate,
|
|
26
29
|
} from '../../types/acp/index.js'
|
|
27
30
|
import type { MCPJsonRpcMessage, MCPTransport } from '../../types/connector/mcp.js'
|
|
28
31
|
import type { SessionEvent } from '../../types/session/events.js'
|
|
@@ -35,6 +38,7 @@ import type {
|
|
|
35
38
|
AcpPermissionOutcome,
|
|
36
39
|
AcpPermissionRequest,
|
|
37
40
|
} from './permission.js'
|
|
41
|
+
import { toAcpTaskUpdate } from './tasks.js'
|
|
38
42
|
import { toAcpSessionUpdate, toAcpStopReason } from './update.js'
|
|
39
43
|
|
|
40
44
|
/**
|
|
@@ -80,6 +84,8 @@ export interface AcpAgentGateway {
|
|
|
80
84
|
prompt(request: {
|
|
81
85
|
readonly sessionId: string
|
|
82
86
|
readonly prompt: string
|
|
87
|
+
readonly attachments?: AcpSessionPromptParams['attachments']
|
|
88
|
+
readonly options?: AcpSessionPromptParams['options']
|
|
83
89
|
readonly cwd: string
|
|
84
90
|
readonly onEvent: (event: SessionEvent) => void
|
|
85
91
|
readonly signal: AbortSignal
|
|
@@ -121,10 +127,23 @@ export interface AcpAgentGateway {
|
|
|
121
127
|
* client's and may be any string: a namzu session id, or one the gateway
|
|
122
128
|
* maps to a session through the index's `acp` / `session` refs.
|
|
123
129
|
*/
|
|
124
|
-
load?(sessionId: string): Promise<readonly unknown[] | undefined>
|
|
130
|
+
load?(sessionId: string, cwd?: string): Promise<readonly unknown[] | undefined>
|
|
131
|
+
/** Explicit host retry of one durable pause; never a new operator prompt. */
|
|
132
|
+
retry?(
|
|
133
|
+
request: Omit<Parameters<AcpAgentGateway['prompt']>[0], 'prompt' | 'attachments'> & {
|
|
134
|
+
readonly turnId: string
|
|
135
|
+
readonly checkpointId: string
|
|
136
|
+
},
|
|
137
|
+
): ReturnType<AcpAgentGateway['prompt']>
|
|
125
138
|
}
|
|
126
139
|
|
|
127
140
|
export interface AcpServerOptions {
|
|
141
|
+
/** Declare that the gateway preserves user attachment bytes in its model messages. */
|
|
142
|
+
readonly supportsPromptAttachments?: boolean
|
|
143
|
+
/** The host applies optional effort and permission settings to the exact turn. */
|
|
144
|
+
readonly supportsPromptOptions?: boolean
|
|
145
|
+
/** Emit planning notifications only to clients declaring namzu/tasks. */
|
|
146
|
+
readonly supportsTaskNotifications?: boolean
|
|
128
147
|
readonly transport: MCPTransport
|
|
129
148
|
readonly gateway: AcpAgentGateway
|
|
130
149
|
/**
|
|
@@ -143,6 +162,11 @@ export interface AcpServerOptions {
|
|
|
143
162
|
* and injecting it also keeps a test off a random id.
|
|
144
163
|
*/
|
|
145
164
|
readonly newSessionId?: () => string
|
|
165
|
+
/** Explicit host extensions. Names must begin with `namzu/`; core methods
|
|
166
|
+
* cannot be replaced. Called only after initialization and permission negotiation. */
|
|
167
|
+
readonly extensions?: Readonly<
|
|
168
|
+
Record<string, (params: Record<string, unknown>) => unknown | Promise<unknown>>
|
|
169
|
+
>
|
|
146
170
|
readonly log?: Logger
|
|
147
171
|
}
|
|
148
172
|
|
|
@@ -212,12 +236,50 @@ export class ACPServer {
|
|
|
212
236
|
private requestSeq = 0
|
|
213
237
|
|
|
214
238
|
constructor(private readonly options: AcpServerOptions) {
|
|
215
|
-
this.log = resolveLogger(options.log).child({
|
|
239
|
+
this.log = resolveLogger(options.log).child({
|
|
240
|
+
'namzu.log.scope': 'bridge/acp',
|
|
241
|
+
})
|
|
242
|
+
for (const name of Object.keys(options.extensions ?? {})) {
|
|
243
|
+
if (!/^namzu\/[a-z][a-z0-9_/-]*$/.test(name)) {
|
|
244
|
+
throw new Error(`Invalid ACP host extension name: ${name}`)
|
|
245
|
+
}
|
|
246
|
+
}
|
|
216
247
|
}
|
|
217
248
|
|
|
218
249
|
/** The method names this server answers. For the drift test. */
|
|
219
250
|
methodNames(): readonly string[] {
|
|
220
|
-
return Object.keys(this.handlers).sort()
|
|
251
|
+
return [...Object.keys(this.handlers), ...Object.keys(this.options.extensions ?? {})].sort()
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
/** Published connection-owned workspace, absent while loading or after shutdown. */
|
|
255
|
+
getSessionCwd(sessionId: string): string | undefined {
|
|
256
|
+
return this.stopped ? undefined : this.sessions.get(sessionId)?.cwd
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
/** Host extensions can reuse the prompt's ordering, cancellation and review owner. */
|
|
260
|
+
async retrySession(
|
|
261
|
+
sessionId: string,
|
|
262
|
+
turnId: string,
|
|
263
|
+
checkpointId: string,
|
|
264
|
+
options?: AcpSessionPromptParams['options'],
|
|
265
|
+
): Promise<AcpSessionPromptResult> {
|
|
266
|
+
this.requireInitialized()
|
|
267
|
+
this.requirePermissionCapability()
|
|
268
|
+
if (this.stopped) throw new Error('The ACP server is stopped.')
|
|
269
|
+
if (
|
|
270
|
+
![turnId, checkpointId].every((id) => typeof id === 'string' && id.trim() && id.length <= 400)
|
|
271
|
+
)
|
|
272
|
+
throw new AcpError(ACP_ERROR_CODES.INVALID_PARAMS, 'Invalid retry turn or checkpoint.')
|
|
273
|
+
const retry = this.options.gateway.retry
|
|
274
|
+
if (!retry)
|
|
275
|
+
throw new AcpError(ACP_ERROR_CODES.INVALID_REQUEST, 'This agent cannot retry paused turns.')
|
|
276
|
+
return this.onSessionPrompt(
|
|
277
|
+
{ sessionId, prompt: '', ...(options ? { options } : {}) },
|
|
278
|
+
(request) => {
|
|
279
|
+
const { prompt: _prompt, attachments: _attachments, ...context } = request
|
|
280
|
+
return retry.call(this.options.gateway, { ...context, turnId, checkpointId })
|
|
281
|
+
},
|
|
282
|
+
)
|
|
221
283
|
}
|
|
222
284
|
|
|
223
285
|
async start(): Promise<void> {
|
|
@@ -282,7 +344,7 @@ export class ACPServer {
|
|
|
282
344
|
}
|
|
283
345
|
this.pending.set(id, entry)
|
|
284
346
|
signal?.addEventListener('abort', onAbort, { once: true })
|
|
285
|
-
void this.send({ jsonrpc: '2.0', id, method, params }).catch((err: unknown) => {
|
|
347
|
+
void this.send({ jsonrpc: '2.0', id, method, params }, true).catch((err: unknown) => {
|
|
286
348
|
entry.reject(err instanceof Error ? err : new Error(String(err)))
|
|
287
349
|
})
|
|
288
350
|
})
|
|
@@ -305,7 +367,21 @@ export class ACPServer {
|
|
|
305
367
|
return
|
|
306
368
|
}
|
|
307
369
|
|
|
308
|
-
const
|
|
370
|
+
const extension = Object.hasOwn(this.options.extensions ?? {}, message.method)
|
|
371
|
+
? this.options.extensions?.[message.method]
|
|
372
|
+
: undefined
|
|
373
|
+
const core = Object.hasOwn(this.handlers, message.method)
|
|
374
|
+
? this.handlers[message.method]
|
|
375
|
+
: undefined
|
|
376
|
+
const handler =
|
|
377
|
+
core ??
|
|
378
|
+
(extension
|
|
379
|
+
? (params: Record<string, unknown>) => {
|
|
380
|
+
this.requireInitialized()
|
|
381
|
+
this.requirePermissionCapability()
|
|
382
|
+
return extension(params)
|
|
383
|
+
}
|
|
384
|
+
: undefined)
|
|
309
385
|
if (!handler) {
|
|
310
386
|
// Answered, and the CONNECTION STAYS OPEN. A client probing for a
|
|
311
387
|
// feature must not lose its session because this agent does not have
|
|
@@ -347,24 +423,39 @@ export class ACPServer {
|
|
|
347
423
|
await this.send({ jsonrpc: '2.0', id, error: { code, message } })
|
|
348
424
|
}
|
|
349
425
|
|
|
350
|
-
private async send(message: MCPJsonRpcMessage): Promise<void> {
|
|
426
|
+
private async send(message: MCPJsonRpcMessage, requireDelivery = false): Promise<void> {
|
|
351
427
|
try {
|
|
352
428
|
await this.options.transport.send(message)
|
|
353
429
|
} catch (err) {
|
|
354
|
-
//
|
|
355
|
-
//
|
|
430
|
+
// Terminal responses have no caller waiting on their delivery. A
|
|
431
|
+
// request or ordered update does, so its owning promise must fail.
|
|
356
432
|
this.log.warn('acp send failed', {
|
|
357
433
|
'namzu.acp.error_message': err instanceof Error ? err.message : String(err),
|
|
358
434
|
})
|
|
435
|
+
if (requireDelivery) throw err
|
|
359
436
|
}
|
|
360
437
|
}
|
|
361
438
|
|
|
362
439
|
private async notifyUpdate(sessionId: string, update: AcpSessionUpdate): Promise<void> {
|
|
363
|
-
await this.send(
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
440
|
+
await this.send(
|
|
441
|
+
{
|
|
442
|
+
jsonrpc: '2.0',
|
|
443
|
+
method: ACP_CLIENT_NOTIFICATIONS.SESSION_UPDATE,
|
|
444
|
+
params: { sessionId, update } as unknown as Record<string, unknown>,
|
|
445
|
+
},
|
|
446
|
+
true,
|
|
447
|
+
)
|
|
448
|
+
}
|
|
449
|
+
|
|
450
|
+
private async notifyTaskUpdate(update: AcpTaskUpdate): Promise<void> {
|
|
451
|
+
await this.send(
|
|
452
|
+
{
|
|
453
|
+
jsonrpc: '2.0',
|
|
454
|
+
method: ACP_CLIENT_NOTIFICATIONS.TASK_UPDATE,
|
|
455
|
+
params: update as unknown as Record<string, unknown>,
|
|
456
|
+
},
|
|
457
|
+
true,
|
|
458
|
+
)
|
|
368
459
|
}
|
|
369
460
|
|
|
370
461
|
private onInitialize(params: AcpInitializeParams): AcpInitializeResult {
|
|
@@ -372,6 +463,8 @@ export class ACPServer {
|
|
|
372
463
|
this.clientCapabilities = params.capabilities ?? []
|
|
373
464
|
return {
|
|
374
465
|
protocolVersion: ACP_PROTOCOL_VERSION,
|
|
466
|
+
...(this.options.supportsPromptAttachments ? { promptAttachments: true } : {}),
|
|
467
|
+
...(this.options.supportsPromptOptions ? { promptOptions: true } : {}),
|
|
375
468
|
agentInfo: this.options.agentInfo,
|
|
376
469
|
// From the registry, per call. A hard-coded list here would be a
|
|
377
470
|
// second definition of the command surface.
|
|
@@ -381,7 +474,13 @@ export class ACPServer {
|
|
|
381
474
|
// from `required` on purpose: a peer that is not an editor has no
|
|
382
475
|
// buffers, and demanding this of it would refuse a session that is
|
|
383
476
|
// perfectly able to run.
|
|
384
|
-
optionalClientCapabilities: [
|
|
477
|
+
optionalClientCapabilities: [
|
|
478
|
+
ACP_FILESYSTEM_CAPABILITY,
|
|
479
|
+
...(this.options.supportsTaskNotifications ? [ACP_TASK_CAPABILITY] : []),
|
|
480
|
+
],
|
|
481
|
+
...(this.options.extensions
|
|
482
|
+
? { extensions: Object.keys(this.options.extensions).sort() }
|
|
483
|
+
: {}),
|
|
385
484
|
}
|
|
386
485
|
}
|
|
387
486
|
|
|
@@ -417,7 +516,7 @@ export class ACPServer {
|
|
|
417
516
|
const cwd = this.requireAbsoluteCwd(params.cwd)
|
|
418
517
|
const token = this.reserveSessionId(params.sessionId)
|
|
419
518
|
try {
|
|
420
|
-
const history = await this.options.gateway.load(params.sessionId)
|
|
519
|
+
const history = await this.options.gateway.load(params.sessionId, cwd)
|
|
421
520
|
if (history === undefined) {
|
|
422
521
|
throw new AcpError(
|
|
423
522
|
ACP_ERROR_CODES.INVALID_PARAMS,
|
|
@@ -451,7 +550,10 @@ export class ACPServer {
|
|
|
451
550
|
return resolved
|
|
452
551
|
}
|
|
453
552
|
|
|
454
|
-
private reserveGeneratedSessionId(): {
|
|
553
|
+
private reserveGeneratedSessionId(): {
|
|
554
|
+
readonly sessionId: string
|
|
555
|
+
readonly token: symbol
|
|
556
|
+
} {
|
|
455
557
|
if (this.options.newSessionId) {
|
|
456
558
|
const sessionId = this.options.newSessionId()
|
|
457
559
|
return { sessionId, token: this.reserveSessionId(sessionId) }
|
|
@@ -531,8 +633,23 @@ export class ACPServer {
|
|
|
531
633
|
}
|
|
532
634
|
}
|
|
533
635
|
|
|
534
|
-
private async onSessionPrompt(
|
|
636
|
+
private async onSessionPrompt(
|
|
637
|
+
params: AcpSessionPromptParams,
|
|
638
|
+
run: AcpAgentGateway['prompt'] = (request) => this.options.gateway.prompt(request),
|
|
639
|
+
): Promise<AcpSessionPromptResult> {
|
|
535
640
|
const session = this.requireSession(params.sessionId)
|
|
641
|
+
if (
|
|
642
|
+
typeof params.prompt !== 'string' ||
|
|
643
|
+
(params.attachments !== undefined && params.prompt.length > 400_000)
|
|
644
|
+
)
|
|
645
|
+
throw new AcpError(ACP_ERROR_CODES.INVALID_PARAMS, 'Invalid prompt text.')
|
|
646
|
+
const attachments = this.readPromptAttachments(params.attachments)
|
|
647
|
+
const options = this.readPromptOptions(params.options)
|
|
648
|
+
if (attachments.length && this.options.supportsPromptAttachments !== true)
|
|
649
|
+
throw new AcpError(
|
|
650
|
+
ACP_ERROR_CODES.INVALID_REQUEST,
|
|
651
|
+
'This agent does not accept prompt attachments.',
|
|
652
|
+
)
|
|
536
653
|
if (session.promptInFlight) {
|
|
537
654
|
throw new AcpError(
|
|
538
655
|
ACP_ERROR_CODES.INVALID_REQUEST,
|
|
@@ -545,18 +662,47 @@ export class ACPServer {
|
|
|
545
662
|
// already cancelled.
|
|
546
663
|
const controller = new AbortController()
|
|
547
664
|
session.controller = controller
|
|
665
|
+
let updates = Promise.resolve()
|
|
666
|
+
let terminalReason: string | undefined
|
|
667
|
+
let updateFailure: Error | undefined
|
|
548
668
|
|
|
549
669
|
try {
|
|
550
|
-
const outcome = await
|
|
670
|
+
const outcome = await run({
|
|
551
671
|
sessionId: params.sessionId,
|
|
552
672
|
prompt: params.prompt,
|
|
673
|
+
...(attachments.length ? { attachments } : {}),
|
|
674
|
+
...(options ? { options } : {}),
|
|
553
675
|
cwd: session.cwd,
|
|
554
676
|
signal: controller.signal,
|
|
555
677
|
onEvent: (event) => {
|
|
678
|
+
const taskUpdate =
|
|
679
|
+
this.options.supportsTaskNotifications &&
|
|
680
|
+
this.clientCapabilities.includes(ACP_TASK_CAPABILITY)
|
|
681
|
+
? toAcpTaskUpdate(event, params.sessionId)
|
|
682
|
+
: null
|
|
556
683
|
const update = toAcpSessionUpdate(event, this.options.presenter)
|
|
557
|
-
if (update
|
|
684
|
+
if (!update && !taskUpdate) return
|
|
685
|
+
if (update?.kind === 'turn_ended') terminalReason = update.reason
|
|
686
|
+
// A transport can complete writes asynchronously. Preserve admission
|
|
687
|
+
// order and finish every update before the prompt response settles.
|
|
688
|
+
updates = updates
|
|
689
|
+
.then(() => {
|
|
690
|
+
if (taskUpdate) return this.notifyTaskUpdate(taskUpdate)
|
|
691
|
+
if (update) return this.notifyUpdate(params.sessionId, update)
|
|
692
|
+
return undefined
|
|
693
|
+
})
|
|
694
|
+
.catch((error: unknown) => {
|
|
695
|
+
// Catch immediately, even while the gateway is still running.
|
|
696
|
+
// Keep later deliveries ordered without replacing the first failure.
|
|
697
|
+
updateFailure ??= error instanceof Error ? error : new Error(String(error))
|
|
698
|
+
})
|
|
699
|
+
},
|
|
700
|
+
ask: async (request) => {
|
|
701
|
+
const admittedUpdates = updates
|
|
702
|
+
await admittedUpdates
|
|
703
|
+
if (updateFailure) throw updateFailure
|
|
704
|
+
return this.askPermission(params.sessionId, session, request, controller.signal)
|
|
558
705
|
},
|
|
559
|
-
ask: (request) => this.askPermission(params.sessionId, session, request, controller.signal),
|
|
560
706
|
filesystem: this.clientFilesystem(),
|
|
561
707
|
history: session.history,
|
|
562
708
|
})
|
|
@@ -570,11 +716,19 @@ export class ACPServer {
|
|
|
570
716
|
session.history = [...outcome.history]
|
|
571
717
|
}
|
|
572
718
|
|
|
719
|
+
await updates
|
|
720
|
+
if (updateFailure) throw updateFailure
|
|
721
|
+
const reason = controller.signal.aborted
|
|
722
|
+
? 'cancelled'
|
|
723
|
+
: (terminalReason ?? outcome.stopReason)
|
|
573
724
|
return {
|
|
574
|
-
stopReason:
|
|
725
|
+
stopReason: toAcpStopReason(reason),
|
|
726
|
+
...(reason === undefined ? {} : { reason }),
|
|
575
727
|
}
|
|
576
728
|
} catch (error) {
|
|
577
|
-
|
|
729
|
+
await updates
|
|
730
|
+
if (updateFailure) throw updateFailure
|
|
731
|
+
if (controller.signal.aborted) return { stopReason: 'cancelled', reason: 'cancelled' }
|
|
578
732
|
// The session log refused the turn: another one is active, perhaps
|
|
579
733
|
// started by another process on the same session. A client error, not
|
|
580
734
|
// an internal one, and it says what to do.
|
|
@@ -586,7 +740,11 @@ export class ACPServer {
|
|
|
586
740
|
}
|
|
587
741
|
throw error
|
|
588
742
|
} finally {
|
|
589
|
-
|
|
743
|
+
try {
|
|
744
|
+
await updates
|
|
745
|
+
} finally {
|
|
746
|
+
session.promptInFlight = false
|
|
747
|
+
}
|
|
590
748
|
}
|
|
591
749
|
}
|
|
592
750
|
|
|
@@ -630,8 +788,17 @@ export class ACPServer {
|
|
|
630
788
|
case 'approve_all':
|
|
631
789
|
session.approveAll = true
|
|
632
790
|
return { kind: 'approve_all' }
|
|
633
|
-
case 'reject':
|
|
634
|
-
|
|
791
|
+
case 'reject': {
|
|
792
|
+
// Only a client that says so is reporting a person's No: older clients
|
|
793
|
+
// send a bare `reject`, which stays exactly what it was.
|
|
794
|
+
const declined = answer.declined
|
|
795
|
+
const note = typeof declined?.note === 'string' ? declined.note.trim() : ''
|
|
796
|
+
return {
|
|
797
|
+
kind: 'reject',
|
|
798
|
+
...(answer.feedback ? { feedback: answer.feedback } : {}),
|
|
799
|
+
...(declined && typeof declined === 'object' ? { declined: note ? { note } : {} } : {}),
|
|
800
|
+
}
|
|
801
|
+
}
|
|
635
802
|
default:
|
|
636
803
|
// An answer this side cannot read is not an approval. A client that
|
|
637
804
|
// sent something unrecognised has not said yes, and treating
|
|
@@ -663,6 +830,85 @@ export class ACPServer {
|
|
|
663
830
|
}
|
|
664
831
|
}
|
|
665
832
|
|
|
833
|
+
private readPromptOptions(value: unknown): AcpSessionPromptParams['options'] {
|
|
834
|
+
if (value === undefined) return undefined
|
|
835
|
+
if (this.options.supportsPromptOptions !== true)
|
|
836
|
+
throw new AcpError(
|
|
837
|
+
ACP_ERROR_CODES.INVALID_REQUEST,
|
|
838
|
+
'This agent does not accept prompt settings.',
|
|
839
|
+
)
|
|
840
|
+
if (!value || typeof value !== 'object' || Array.isArray(value))
|
|
841
|
+
throw new AcpError(ACP_ERROR_CODES.INVALID_PARAMS, 'Invalid prompt settings.')
|
|
842
|
+
const { effort, permissionMode } = value as Record<string, unknown>
|
|
843
|
+
if (
|
|
844
|
+
Object.keys(value).some((key) => key !== 'effort' && key !== 'permissionMode') ||
|
|
845
|
+
(effort !== undefined &&
|
|
846
|
+
(typeof effort !== 'string' ||
|
|
847
|
+
!['none', 'minimal', 'low', 'medium', 'high', 'xhigh', 'max', 'ultra'].includes(
|
|
848
|
+
effort,
|
|
849
|
+
))) ||
|
|
850
|
+
(permissionMode !== undefined && !isReviewMode(permissionMode))
|
|
851
|
+
)
|
|
852
|
+
throw new AcpError(ACP_ERROR_CODES.INVALID_PARAMS, 'Invalid prompt settings.')
|
|
853
|
+
return {
|
|
854
|
+
...(effort
|
|
855
|
+
? { effort: effort as NonNullable<AcpSessionPromptParams['options']>['effort'] }
|
|
856
|
+
: {}),
|
|
857
|
+
...(permissionMode
|
|
858
|
+
? {
|
|
859
|
+
permissionMode: permissionMode as NonNullable<
|
|
860
|
+
AcpSessionPromptParams['options']
|
|
861
|
+
>['permissionMode'],
|
|
862
|
+
}
|
|
863
|
+
: {}),
|
|
864
|
+
}
|
|
865
|
+
}
|
|
866
|
+
private readPromptAttachments(
|
|
867
|
+
value: unknown,
|
|
868
|
+
): NonNullable<AcpSessionPromptParams['attachments']> {
|
|
869
|
+
if (value === undefined) return []
|
|
870
|
+
if (!Array.isArray(value) || value.length > 8)
|
|
871
|
+
throw new AcpError(ACP_ERROR_CODES.INVALID_PARAMS, 'Attach at most eight files.')
|
|
872
|
+
let bytes = 0
|
|
873
|
+
return value.map((item) => {
|
|
874
|
+
if (!item || typeof item !== 'object' || Array.isArray(item))
|
|
875
|
+
throw new AcpError(ACP_ERROR_CODES.INVALID_PARAMS, 'Invalid attachment.')
|
|
876
|
+
const { type, data, mediaType, name, citations } = item
|
|
877
|
+
if (
|
|
878
|
+
(type !== undefined && type !== 'image' && type !== 'document') ||
|
|
879
|
+
typeof data !== 'string' ||
|
|
880
|
+
!data.length ||
|
|
881
|
+
data.length > 4 * 1024 * 1024 ||
|
|
882
|
+
data.length % 4 !== 0 ||
|
|
883
|
+
!/^[A-Za-z0-9+/]+={0,2}$/.test(data) ||
|
|
884
|
+
typeof mediaType !== 'string' ||
|
|
885
|
+
(type === 'document'
|
|
886
|
+
? !['application/pdf', 'text/plain'].includes(mediaType)
|
|
887
|
+
: !['image/png', 'image/jpeg', 'image/webp', 'image/gif'].includes(mediaType)) ||
|
|
888
|
+
(name !== undefined && (typeof name !== 'string' || name.length > 180)) ||
|
|
889
|
+
(citations !== undefined && typeof citations !== 'boolean')
|
|
890
|
+
)
|
|
891
|
+
throw new AcpError(
|
|
892
|
+
ACP_ERROR_CODES.INVALID_PARAMS,
|
|
893
|
+
'Invalid attachment bytes or media type.',
|
|
894
|
+
)
|
|
895
|
+
bytes += Buffer.from(data, 'base64').byteLength
|
|
896
|
+
if (bytes > 3 * 1024 * 1024)
|
|
897
|
+
throw new AcpError(
|
|
898
|
+
ACP_ERROR_CODES.INVALID_PARAMS,
|
|
899
|
+
'Keep attachments under 3 MiB per message.',
|
|
900
|
+
)
|
|
901
|
+
return type === 'document'
|
|
902
|
+
? {
|
|
903
|
+
type,
|
|
904
|
+
data,
|
|
905
|
+
mediaType,
|
|
906
|
+
...(name ? { name } : {}),
|
|
907
|
+
...(citations !== undefined ? { citations } : {}),
|
|
908
|
+
}
|
|
909
|
+
: { type: 'image' as const, data, mediaType }
|
|
910
|
+
})
|
|
911
|
+
}
|
|
666
912
|
private requireSession(sessionId: string): Session {
|
|
667
913
|
const session = this.sessions.get(sessionId)
|
|
668
914
|
if (!session) {
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { AcpTaskUpdate } from '../../types/acp/index.js'
|
|
2
|
+
import type { SessionEvent } from '../../types/session/events.js'
|
|
3
|
+
|
|
4
|
+
/** Project only the addressed session's planning rows, without task descriptions or metadata. */
|
|
5
|
+
export function toAcpTaskUpdate(event: SessionEvent, sessionId: string): AcpTaskUpdate | null {
|
|
6
|
+
if (
|
|
7
|
+
(event.type !== 'task_created' && event.type !== 'task_updated') ||
|
|
8
|
+
event.sessionId !== sessionId
|
|
9
|
+
)
|
|
10
|
+
return null
|
|
11
|
+
return {
|
|
12
|
+
sessionId,
|
|
13
|
+
task: {
|
|
14
|
+
taskId: event.taskId,
|
|
15
|
+
subject: event.subject,
|
|
16
|
+
status: event.status,
|
|
17
|
+
blockedBy: [...(event.blockedBy ?? [])],
|
|
18
|
+
...(event.owner === undefined ? {} : { owner: event.owner }),
|
|
19
|
+
...(event.activeForm ? { activeForm: event.activeForm } : {}),
|
|
20
|
+
},
|
|
21
|
+
...(event.type === 'task_updated' && event.deleted === true ? { deleted: true } : {}),
|
|
22
|
+
}
|
|
23
|
+
}
|