mixdog 1.2.1 → 1.2.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +18 -0
- package/package.json +2 -1
- package/scripts/gate-local.mjs +19 -3
- package/scripts/model-catalog-audit.mjs +1 -15
- package/scripts/provider-pingpong-live.mjs +509 -0
- package/src/agents/advisor/AGENT.md +1 -1
- package/src/agents/advisor/agent.json +1 -1
- package/src/agents/reviewer/AGENT.md +3 -3
- package/src/agents/reviewer/agent.json +1 -1
- package/src/defaults/shipped-history.json +6 -0
- package/src/defaults/skills/setup/SKILL.md +6 -1
- package/src/defaults/skills/setup/references/actions.md +44 -22
- package/src/defaults/skills/setup/references/surfaces.md +10 -8
- package/src/headless-exec.mjs +15 -8
- package/src/lib/keychain-cjs.cjs +7 -4
- package/src/output-styles/common.md +11 -10
- package/src/repl/slash-commands.mjs +16 -1
- package/src/rules/agent/AGENT.md +5 -5
- package/src/rules/lead/LEAD.md +5 -5
- package/src/runtime/agent/orchestrator/agent-runtime/agent-progress-watchdog.mjs +29 -4
- package/src/runtime/agent/orchestrator/agent-runtime/cache-strategy.mjs +10 -0
- package/src/runtime/agent/orchestrator/agent-trace-io.mjs +92 -61
- package/src/runtime/agent/orchestrator/cache-mtime.mjs +10 -1
- package/src/runtime/agent/orchestrator/config-providers-merge.mjs +7 -0
- package/src/runtime/agent/orchestrator/config.mjs +5 -0
- package/src/runtime/agent/orchestrator/context/collect.mjs +1 -0
- package/src/runtime/agent/orchestrator/context/deferred-tools.mjs +26 -7
- package/src/runtime/agent/orchestrator/context/skill-catalog.mjs +112 -7
- package/src/runtime/agent/orchestrator/mcp/client-config.mjs +36 -7
- package/src/runtime/agent/orchestrator/mcp/client-handshake.mjs +49 -10
- package/src/runtime/agent/orchestrator/mcp/client-transport.mjs +40 -3
- package/src/runtime/agent/orchestrator/mcp/client.mjs +230 -96
- package/src/runtime/agent/orchestrator/mcp/oauth-callback.mjs +103 -0
- package/src/runtime/agent/orchestrator/mcp/oauth-credentials.mjs +150 -0
- package/src/runtime/agent/orchestrator/mcp/oauth-login.mjs +111 -0
- package/src/runtime/agent/orchestrator/mcp/oauth-probe.mjs +87 -0
- package/src/runtime/agent/orchestrator/mcp/oauth-provider.mjs +95 -0
- package/src/runtime/agent/orchestrator/mcp/oauth-request.mjs +122 -0
- package/src/runtime/agent/orchestrator/mcp/oauth-shared.mjs +9 -0
- package/src/runtime/agent/orchestrator/mcp/oauth.mjs +229 -0
- package/src/runtime/agent/orchestrator/providers/account-pool.mjs +188 -29
- package/src/runtime/agent/orchestrator/providers/anthropic-api-recovery.mjs +2 -1
- package/src/runtime/agent/orchestrator/providers/anthropic-api-request.mjs +48 -20
- package/src/runtime/agent/orchestrator/providers/anthropic-api-transport.mjs +94 -31
- package/src/runtime/agent/orchestrator/providers/anthropic-error-contract.mjs +98 -0
- package/src/runtime/agent/orchestrator/providers/anthropic-fast-mode.mjs +39 -18
- package/src/runtime/agent/orchestrator/providers/anthropic-max-tokens-recovery.mjs +55 -0
- package/src/runtime/agent/orchestrator/providers/anthropic-max-tokens.mjs +48 -37
- package/src/runtime/agent/orchestrator/providers/anthropic-messages.mjs +10 -7
- package/src/runtime/agent/orchestrator/providers/anthropic-midstream-recovery.mjs +18 -4
- package/src/runtime/agent/orchestrator/providers/anthropic-model-resolve.mjs +13 -1
- package/src/runtime/agent/orchestrator/providers/anthropic-oauth-client-version.mjs +1 -1
- package/src/runtime/agent/orchestrator/providers/anthropic-oauth-midstream.mjs +10 -1
- package/src/runtime/agent/orchestrator/providers/anthropic-oauth-recovery.mjs +23 -9
- package/src/runtime/agent/orchestrator/providers/anthropic-oauth-request/initial-status.mjs +46 -20
- package/src/runtime/agent/orchestrator/providers/anthropic-oauth-request.mjs +14 -9
- package/src/runtime/agent/orchestrator/providers/anthropic-oauth.mjs +102 -45
- package/src/runtime/agent/orchestrator/providers/anthropic-overload-fallback.mjs +69 -0
- package/src/runtime/agent/orchestrator/providers/anthropic-server-fallback.mjs +4 -0
- package/src/runtime/agent/orchestrator/providers/anthropic-sse-turn/turn-blocks.mjs +20 -1
- package/src/runtime/agent/orchestrator/providers/anthropic-sse-turn/turn-events/content-block-delta.mjs +15 -2
- package/src/runtime/agent/orchestrator/providers/anthropic-sse-turn/turn-events/content-block-start.mjs +11 -4
- package/src/runtime/agent/orchestrator/providers/anthropic-sse-turn/turn-events/message-events.mjs +3 -0
- package/src/runtime/agent/orchestrator/providers/anthropic-sse-turn/turn-events.mjs +12 -5
- package/src/runtime/agent/orchestrator/providers/anthropic-sse-turn/turn-outcome.mjs +1 -0
- package/src/runtime/agent/orchestrator/providers/anthropic-sse-turn/turn-state.mjs +14 -0
- package/src/runtime/agent/orchestrator/providers/anthropic-sse.mjs +10 -1
- package/src/runtime/agent/orchestrator/providers/anthropic-turn-result.mjs +9 -0
- package/src/runtime/agent/orchestrator/providers/anthropic.mjs +40 -7
- package/src/runtime/agent/orchestrator/providers/antigravity-oauth-catalog.mjs +30 -9
- package/src/runtime/agent/orchestrator/providers/antigravity-oauth.mjs +7 -0
- package/src/runtime/agent/orchestrator/providers/antigravity-request.mjs +88 -21
- package/src/runtime/agent/orchestrator/providers/antigravity-response.mjs +30 -10
- package/src/runtime/agent/orchestrator/providers/antigravity-retry-policy.mjs +106 -0
- package/src/runtime/agent/orchestrator/providers/antigravity-stream.mjs +10 -61
- package/src/runtime/agent/orchestrator/providers/antigravity-transport.mjs +94 -15
- package/src/runtime/agent/orchestrator/providers/codex-client-meta.mjs +1 -1
- package/src/runtime/agent/orchestrator/providers/command-code-oauth.mjs +117 -72
- package/src/runtime/agent/orchestrator/providers/compat-request-policy.mjs +78 -2
- package/src/runtime/agent/orchestrator/providers/cursor-auth.mjs +75 -10
- package/src/runtime/agent/orchestrator/providers/cursor-client-version.mjs +1 -1
- package/src/runtime/agent/orchestrator/providers/cursor-wire-guards.mjs +97 -2
- package/src/runtime/agent/orchestrator/providers/cursor-wire-stream-bridge.mjs +103 -23
- package/src/runtime/agent/orchestrator/providers/cursor-wire-stream-messages.mjs +43 -2
- package/src/runtime/agent/orchestrator/providers/cursor-wire-transport.mjs +103 -33
- package/src/runtime/agent/orchestrator/providers/cursor-wire.mjs +32 -6
- package/src/runtime/agent/orchestrator/providers/cursor.mjs +27 -3
- package/src/runtime/agent/orchestrator/providers/custom-provider-config.mjs +64 -1
- package/src/runtime/agent/orchestrator/providers/custom-provider.mjs +70 -6
- package/src/runtime/agent/orchestrator/providers/custom-reasoning.mjs +34 -7
- package/src/runtime/agent/orchestrator/providers/custom-tool-wire.mjs +32 -6
- package/src/runtime/agent/orchestrator/providers/deepseek.mjs +67 -0
- package/src/runtime/agent/orchestrator/providers/effort-configuration.mjs +80 -18
- package/src/runtime/agent/orchestrator/providers/gemini-cache-policy.mjs +11 -4
- package/src/runtime/agent/orchestrator/providers/gemini-cache.mjs +46 -8
- package/src/runtime/agent/orchestrator/providers/gemini-error-contract.mjs +273 -0
- package/src/runtime/agent/orchestrator/providers/gemini-family.mjs +9 -0
- package/src/runtime/agent/orchestrator/providers/gemini-history-signatures.mjs +9 -4
- package/src/runtime/agent/orchestrator/providers/gemini-request-body.mjs +41 -5
- package/src/runtime/agent/orchestrator/providers/gemini-response.mjs +3 -1
- package/src/runtime/agent/orchestrator/providers/gemini-retry-policy.mjs +180 -0
- package/src/runtime/agent/orchestrator/providers/gemini-schema.mjs +369 -112
- package/src/runtime/agent/orchestrator/providers/gemini-sdk-request.mjs +3 -1
- package/src/runtime/agent/orchestrator/providers/gemini-stream.mjs +140 -35
- package/src/runtime/agent/orchestrator/providers/gemini-thinking.mjs +70 -24
- package/src/runtime/agent/orchestrator/providers/gemini.mjs +80 -29
- package/src/runtime/agent/orchestrator/providers/grok-client-version.mjs +1 -1
- package/src/runtime/agent/orchestrator/providers/grok-oauth-tokens.mjs +3 -0
- package/src/runtime/agent/orchestrator/providers/grok-oauth.mjs +69 -19
- package/src/runtime/agent/orchestrator/providers/lib/action-input-contract.mjs +60 -0
- package/src/runtime/agent/orchestrator/providers/lib/anthropic-native-blocks.mjs +1 -0
- package/src/runtime/agent/orchestrator/providers/lib/anthropic-request-utils.mjs +246 -42
- package/src/runtime/agent/orchestrator/providers/lib/anthropic-server-tool-usage.mjs +18 -0
- package/src/runtime/agent/orchestrator/providers/lib/anthropic-system-blocks.mjs +27 -6
- package/src/runtime/agent/orchestrator/providers/lib/claude-bridge-schema.mjs +388 -0
- package/src/runtime/agent/orchestrator/providers/lib/inclusive-usage.mjs +54 -0
- package/src/runtime/agent/orchestrator/providers/lib/origin-bound-fetch.mjs +16 -0
- package/src/runtime/agent/orchestrator/providers/lib/responses-terminal-fields.mjs +11 -0
- package/src/runtime/agent/orchestrator/providers/lib/usage-primitives.mjs +8 -0
- package/src/runtime/agent/orchestrator/providers/lib/wire-pairing.mjs +48 -22
- package/src/runtime/agent/orchestrator/providers/media-normalization.mjs +119 -18
- package/src/runtime/agent/orchestrator/providers/mimo-oauth-profile.mjs +13 -15
- package/src/runtime/agent/orchestrator/providers/mimo-oauth.mjs +3 -0
- package/src/runtime/agent/orchestrator/providers/model-list-sanitize.mjs +2 -1
- package/src/runtime/agent/orchestrator/providers/model-proxy-channel.d.mts +1 -1
- package/src/runtime/agent/orchestrator/providers/model-proxy-channel.mjs +1 -0
- package/src/runtime/agent/orchestrator/providers/model-proxy-provider.mjs +33 -1
- package/src/runtime/agent/orchestrator/providers/muse-code-oauth.mjs +4 -9
- package/src/runtime/agent/orchestrator/providers/oauth-credential-probes.mjs +2 -0
- package/src/runtime/agent/orchestrator/providers/openai-codex-metadata.mjs +2 -0
- package/src/runtime/agent/orchestrator/providers/openai-compat-chat-send.mjs +123 -61
- package/src/runtime/agent/orchestrator/providers/openai-compat-chat-stream/chunk-events.mjs +35 -14
- package/src/runtime/agent/orchestrator/providers/openai-compat-chat-stream/stream-result.mjs +27 -2
- package/src/runtime/agent/orchestrator/providers/openai-compat-chat-stream/stream-state.mjs +37 -7
- package/src/runtime/agent/orchestrator/providers/openai-compat-chat-stream/tool-call-acc.mjs +2 -9
- package/src/runtime/agent/orchestrator/providers/openai-compat-chat-stream.mjs +1 -0
- package/src/runtime/agent/orchestrator/providers/openai-compat-error-contract.mjs +50 -0
- package/src/runtime/agent/orchestrator/providers/openai-compat-models.mjs +47 -2
- package/src/runtime/agent/orchestrator/providers/openai-compat-options.mjs +47 -25
- package/src/runtime/agent/orchestrator/providers/openai-compat-presets.mjs +5 -1
- package/src/runtime/agent/orchestrator/providers/openai-compat-reasoning-field.mjs +151 -0
- package/src/runtime/agent/orchestrator/providers/openai-compat-response-normalization.mjs +64 -23
- package/src/runtime/agent/orchestrator/providers/openai-compat-responses-events.mjs +79 -33
- package/src/runtime/agent/orchestrator/providers/openai-compat-responses-head-parity.json +2901 -0
- package/src/runtime/agent/orchestrator/providers/openai-compat-responses-parity.fixtures.mjs +172 -0
- package/src/runtime/agent/orchestrator/providers/openai-compat-responses-state.mjs +3 -2
- package/src/runtime/agent/orchestrator/providers/openai-compat-responses.mjs +144 -15
- package/src/runtime/agent/orchestrator/providers/openai-compat-retry-profile.mjs +193 -0
- package/src/runtime/agent/orchestrator/providers/openai-compat-stream-common.mjs +66 -2
- package/src/runtime/agent/orchestrator/providers/openai-compat-stream.mjs +9 -2
- package/src/runtime/agent/orchestrator/providers/openai-compat-trace.mjs +2 -0
- package/src/runtime/agent/orchestrator/providers/openai-compat-wire.mjs +109 -26
- package/src/runtime/agent/orchestrator/providers/openai-compat-xai-send.mjs +27 -6
- package/src/runtime/agent/orchestrator/providers/openai-compat-xai.mjs +34 -20
- package/src/runtime/agent/orchestrator/providers/openai-compat.mjs +23 -4
- package/src/runtime/agent/orchestrator/providers/openai-direct-request.mjs +37 -28
- package/src/runtime/agent/orchestrator/providers/openai-error-contract.mjs +274 -0
- package/src/runtime/agent/orchestrator/providers/openai-http-sse-request.mjs +72 -32
- package/src/runtime/agent/orchestrator/providers/openai-http-sse-response-state/response-events/output-items.mjs +23 -10
- package/src/runtime/agent/orchestrator/providers/openai-http-sse-response-state/response-events/terminal-frames.mjs +43 -15
- package/src/runtime/agent/orchestrator/providers/openai-http-sse-response-state/response-events.mjs +10 -0
- package/src/runtime/agent/orchestrator/providers/openai-http-sse-response-state/response-items.mjs +18 -7
- package/src/runtime/agent/orchestrator/providers/openai-http-sse-response-state/response-outcome.mjs +5 -2
- package/src/runtime/agent/orchestrator/providers/openai-http-sse-response-state/response-stamps.mjs +2 -2
- package/src/runtime/agent/orchestrator/providers/openai-http-sse-response-state/response-state.mjs +7 -3
- package/src/runtime/agent/orchestrator/providers/openai-http-sse-response-state/text-relay.mjs +9 -1
- package/src/runtime/agent/orchestrator/providers/openai-http-sse-response-state.mjs +2 -2
- package/src/runtime/agent/orchestrator/providers/openai-http-sse-watchdogs.mjs +1 -3
- package/src/runtime/agent/orchestrator/providers/openai-model-capabilities.mjs +80 -0
- package/src/runtime/agent/orchestrator/providers/openai-oauth-dispatch.mjs +37 -4
- package/src/runtime/agent/orchestrator/providers/openai-oauth-http-sse.mjs +12 -1
- package/src/runtime/agent/orchestrator/providers/openai-oauth-tokens.mjs +22 -2
- package/src/runtime/agent/orchestrator/providers/openai-oauth.mjs +12 -1
- package/src/runtime/agent/orchestrator/providers/openai-responses-input.mjs +76 -33
- package/src/runtime/agent/orchestrator/providers/openai-responses-payload-parity.fixture.json +323 -0
- package/src/runtime/agent/orchestrator/providers/openai-responses-payload.mjs +44 -16
- package/src/runtime/agent/orchestrator/providers/openai-retry-policy.mjs +9 -0
- package/src/runtime/agent/orchestrator/providers/openai-ws-delta.mjs +7 -16
- package/src/runtime/agent/orchestrator/providers/openai-ws-handshake.mjs +16 -8
- package/src/runtime/agent/orchestrator/providers/openai-ws-response-state/refusals.mjs +60 -0
- package/src/runtime/agent/orchestrator/providers/openai-ws-response-state/tool-calls.mjs +51 -35
- package/src/runtime/agent/orchestrator/providers/openai-ws-response-state.mjs +30 -0
- package/src/runtime/agent/orchestrator/providers/openai-ws-send-attempts/attempt-context.mjs +1 -2
- package/src/runtime/agent/orchestrator/providers/openai-ws-send-attempts/policy.mjs +25 -14
- package/src/runtime/agent/orchestrator/providers/openai-ws-stream/event-switch.mjs +12 -0
- package/src/runtime/agent/orchestrator/providers/openai-ws-stream/terminal-frames.mjs +25 -6
- package/src/runtime/agent/orchestrator/providers/openai-ws-terminal.mjs +18 -11
- package/src/runtime/agent/orchestrator/providers/openai-ws.mjs +41 -22
- package/src/runtime/agent/orchestrator/providers/opencode-go-gemini.mjs +170 -0
- package/src/runtime/agent/orchestrator/providers/opencode-go.mjs +75 -70
- package/src/runtime/agent/orchestrator/providers/openrouter.mjs +75 -0
- package/src/runtime/agent/orchestrator/providers/provider-error-kind.mjs +720 -0
- package/src/runtime/agent/orchestrator/providers/registry.mjs +4 -1
- package/src/runtime/agent/orchestrator/providers/retry-backoff.mjs +46 -7
- package/src/runtime/agent/orchestrator/providers/retry-classification.mjs +123 -219
- package/src/runtime/agent/orchestrator/providers/retry-classifier.mjs +2 -0
- package/src/runtime/agent/orchestrator/providers/retry-executor.mjs +148 -45
- package/src/runtime/agent/orchestrator/providers/retry-midstream.mjs +81 -16
- package/src/runtime/agent/orchestrator/providers/transport-scope.d.mts +6 -0
- package/src/runtime/agent/orchestrator/providers/transport-scope.mjs +28 -0
- package/src/runtime/agent/orchestrator/providers/wire-gateway.mjs +157 -0
- package/src/runtime/agent/orchestrator/providers/wire-route.mjs +512 -0
- package/src/runtime/agent/orchestrator/providers/xai-tool-search-head-parity.json +1131 -0
- package/src/runtime/agent/orchestrator/providers/xai-tool-search.fixtures.mjs +183 -0
- package/src/runtime/agent/orchestrator/runtime-core/ask-user-tool-defs.mjs +100 -0
- package/src/runtime/agent/orchestrator/runtime-core/config-helpers.mjs +3 -0
- package/src/runtime/agent/orchestrator/runtime-core/deferred-tool-availability.mjs +21 -0
- package/src/runtime/agent/orchestrator/runtime-core/effort.mjs +15 -0
- package/src/runtime/agent/orchestrator/runtime-core/goal-reminder.mjs +0 -18
- package/src/runtime/agent/orchestrator/runtime-core/model-capabilities.mjs +57 -28
- package/src/runtime/agent/orchestrator/runtime-core/orchestration.mjs +19 -16
- package/src/runtime/agent/orchestrator/runtime-core/plugin-mcp.mjs +1 -97
- package/src/runtime/agent/orchestrator/runtime-core/provider-request-snapshot.mjs +7 -3
- package/src/runtime/agent/orchestrator/runtime-core/session-title.mjs +21 -1
- package/src/runtime/agent/orchestrator/runtime-core/skill-tool-loading.mjs +14 -3
- package/src/runtime/agent/orchestrator/runtime-core/tool-bridge.mjs +526 -0
- package/src/runtime/agent/orchestrator/runtime-core/tool-catalog-data.mjs +3 -0
- package/src/runtime/agent/orchestrator/runtime-core/tool-catalog-schema.mjs +10 -7
- package/src/runtime/agent/orchestrator/runtime-core/tool-catalog.mjs +176 -71
- package/src/runtime/agent/orchestrator/runtime-core/tool-defs.mjs +62 -10
- package/src/runtime/agent/orchestrator/runtime-core/tool-exposure.mjs +96 -0
- package/src/runtime/agent/orchestrator/session/catalog-db/schema.mjs +5 -1
- package/src/runtime/agent/orchestrator/session/compact/constants.mjs +3 -2
- package/src/runtime/agent/orchestrator/session/compact/messages.mjs +14 -93
- package/src/runtime/agent/orchestrator/session/compact/summary-anchor.mjs +5 -0
- package/src/runtime/agent/orchestrator/session/compact/user-message-kind.mjs +120 -0
- package/src/runtime/agent/orchestrator/session/context-tool-schema.mjs +17 -2
- package/src/runtime/agent/orchestrator/session/context-utils.mjs +8 -4
- package/src/runtime/agent/orchestrator/session/eager-dispatch/admission.mjs +2 -1
- package/src/runtime/agent/orchestrator/session/eager-dispatch.mjs +6 -1
- package/src/runtime/agent/orchestrator/session/loop/compact-policy.mjs +91 -1
- package/src/runtime/agent/orchestrator/session/loop/completion-guards.mjs +1 -1
- package/src/runtime/agent/orchestrator/session/loop/context-overflow.mjs +56 -0
- package/src/runtime/agent/orchestrator/session/loop/deferred-call-through.mjs +18 -8
- package/src/runtime/agent/orchestrator/session/loop/loop-state.mjs +1 -0
- package/src/runtime/agent/orchestrator/session/loop/pre-dispatch-deny.mjs +21 -10
- package/src/runtime/agent/orchestrator/session/loop/provider-tool-exclusions.mjs +132 -0
- package/src/runtime/agent/orchestrator/session/loop/request-boundary.mjs +30 -0
- package/src/runtime/agent/orchestrator/session/loop/send-phase.mjs +67 -20
- package/src/runtime/agent/orchestrator/session/loop/step-auto-effort.mjs +104 -19
- package/src/runtime/agent/orchestrator/session/loop/tool-call-resolution.mjs +95 -0
- package/src/runtime/agent/orchestrator/session/loop/tool-exec/before-hook.mjs +30 -3
- package/src/runtime/agent/orchestrator/session/loop/tool-exec/dispatch.mjs +15 -4
- package/src/runtime/agent/orchestrator/session/loop/tool-exec.mjs +15 -1
- package/src/runtime/agent/orchestrator/session/loop/tool-exposure-migration.mjs +150 -0
- package/src/runtime/agent/orchestrator/session/loop/tool-phase.mjs +7 -2
- package/src/runtime/agent/orchestrator/session/manager/ask-queue.mjs +30 -2
- package/src/runtime/agent/orchestrator/session/manager/ask-session.mjs +11 -2
- package/src/runtime/agent/orchestrator/session/manager/ask-turn-auto-effort.mjs +2 -1
- package/src/runtime/agent/orchestrator/session/manager/ask-turn-commit.mjs +34 -12
- package/src/runtime/agent/orchestrator/session/manager/ask-turn-execute.mjs +57 -21
- package/src/runtime/agent/orchestrator/session/manager/ask-turn-loop-options.mjs +57 -25
- package/src/runtime/agent/orchestrator/session/manager/ask-turn-prepare.mjs +6 -0
- package/src/runtime/agent/orchestrator/session/manager/ask-turn-settle.mjs +4 -0
- package/src/runtime/agent/orchestrator/session/manager/compaction-runner.mjs +8 -0
- package/src/runtime/agent/orchestrator/session/manager/pending-message-entry.mjs +5 -10
- package/src/runtime/agent/orchestrator/session/manager/prompt-utils.mjs +208 -14
- package/src/runtime/agent/orchestrator/session/manager/session-close.mjs +16 -4
- package/src/runtime/agent/orchestrator/session/manager/session-crud.mjs +25 -3
- package/src/runtime/agent/orchestrator/session/manager/session-fallback-title.mjs +82 -0
- package/src/runtime/agent/orchestrator/session/manager/session-lifecycle.mjs +19 -2
- package/src/runtime/agent/orchestrator/session/manager/session-record.mjs +3 -0
- package/src/runtime/agent/orchestrator/session/manager/tool-resolution.mjs +4 -1
- package/src/runtime/agent/orchestrator/session/manager/turn-interruption.mjs +18 -7
- package/src/runtime/agent/orchestrator/session/manager.mjs +2 -1
- package/src/runtime/agent/orchestrator/session/pre-send-compact.mjs +6 -0
- package/src/runtime/agent/orchestrator/session/send-with-recovery.mjs +168 -29
- package/src/runtime/agent/orchestrator/session/side-question-store.mjs +96 -0
- package/src/runtime/agent/orchestrator/session/side-question.mjs +192 -0
- package/src/runtime/agent/orchestrator/session/store/lifecycle-barriers.mjs +17 -3
- package/src/runtime/agent/orchestrator/session/store/live-state.mjs +23 -0
- package/src/runtime/agent/orchestrator/session/store/paths-heartbeat.mjs +58 -2
- package/src/runtime/agent/orchestrator/session/store/save-worker.mjs +6 -3
- package/src/runtime/agent/orchestrator/session/store/session-delete.mjs +41 -28
- package/src/runtime/agent/orchestrator/session/store/session-observers.mjs +4 -2
- package/src/runtime/agent/orchestrator/session/store/sweep/sweep-finish.mjs +12 -1
- package/src/runtime/agent/orchestrator/session/store/write-admission.mjs +3 -1
- package/src/runtime/agent/orchestrator/session/store/write-guards.mjs +16 -0
- package/src/runtime/agent/orchestrator/session/store-agent-worker-rows.mjs +22 -10
- package/src/runtime/agent/orchestrator/session/store-summary-archived-agent.mjs +34 -15
- package/src/runtime/agent/orchestrator/session/store-summary-catalog.mjs +6 -0
- package/src/runtime/agent/orchestrator/session/store-summary-fields.mjs +13 -0
- package/src/runtime/agent/orchestrator/session/store-summary-index.mjs +13 -1
- package/src/runtime/agent/orchestrator/session/store-summary-reader.mjs +10 -2
- package/src/runtime/agent/orchestrator/session/store.mjs +19 -3
- package/src/runtime/agent/orchestrator/session/tool-batch/execute-call.mjs +1 -0
- package/src/runtime/agent/orchestrator/session/tool-batch/finalize.mjs +1 -1
- package/src/runtime/agent/orchestrator/session/tool-batch/record-outcome.mjs +1 -1
- package/src/runtime/agent/orchestrator/session/tool-batch/state.mjs +7 -1
- package/src/runtime/agent/orchestrator/session/tool-result-offload.mjs +4 -0
- package/src/runtime/agent/orchestrator/session/tool-schema-rejection.mjs +77 -0
- package/src/runtime/agent/orchestrator/session/transcript-restore/restore.mjs +20 -1
- package/src/runtime/agent/orchestrator/tools/bash-policy-scan.mjs +8 -2
- package/src/runtime/agent/orchestrator/tools/builtin/arg-guard.mjs +2 -2
- package/src/runtime/agent/orchestrator/tools/builtin/bash-tool/command-preflight.mjs +3 -3
- package/src/runtime/agent/orchestrator/tools/builtin/bash-tool/deadline-plan.mjs +12 -15
- package/src/runtime/agent/orchestrator/tools/builtin/bash-tool.mjs +4 -1
- package/src/runtime/agent/orchestrator/tools/builtin/builtin-tools.mjs +5 -5
- package/src/runtime/agent/orchestrator/tools/builtin/external-tool-adapters.mjs +14 -10
- package/src/runtime/agent/orchestrator/tools/builtin/lib/shell-job-records.mjs +49 -34
- package/src/runtime/agent/orchestrator/tools/builtin/runtime-capabilities.mjs +23 -1
- package/src/runtime/agent/orchestrator/tools/code-graph/dispatch/root-resolution.mjs +1 -1
- package/src/runtime/agent/orchestrator/tools/code-graph/search.mjs +1 -1
- package/src/runtime/agent/orchestrator/tools/patch/ui-diff.mjs +73 -39
- package/src/runtime/agent/orchestrator/tools/progress-message.mjs +18 -1
- package/src/runtime/agent/orchestrator/tools/shell-command.mjs +7 -4
- package/src/runtime/agent/orchestrator/tools/shell-exec-policy.mjs +88 -12
- package/src/runtime/agent/orchestrator/tools/shell-policy.mjs +2 -0
- package/src/runtime/computer-bridge/action-schema.mjs +44 -21
- package/src/runtime/github/tool.mjs +92 -2
- package/src/runtime/memory/index.mjs +1 -0
- package/src/runtime/memory/lib/http-router/ingest-routes.mjs +22 -1
- package/src/runtime/memory/lib/ingest/transcript-offsets.mjs +2 -0
- package/src/runtime/memory/lib/pg/adapter.mjs +98 -1
- package/src/runtime/memory/lib/pg/process.mjs +65 -50
- package/src/runtime/memory/lib/pg/run-child.mjs +49 -0
- package/src/runtime/memory/lib/pg/supervisor.mjs +124 -16
- package/src/runtime/memory/lib/runtime-fetcher.mjs +12 -13
- package/src/runtime/memory/lib/transcript-ingest.mjs +14 -0
- package/src/runtime/office/README.md +2 -2
- package/src/runtime/office/authoring/html-document-author.mjs +2 -0
- package/src/runtime/office/authoring/pptx-contact-sheet.mjs +2 -0
- package/src/runtime/office/authoring/pptx-html-measure.mjs +2 -0
- package/src/runtime/office/authoring/pptx-html-runner.mjs +2 -0
- package/src/runtime/office/authoring/xlsx-html-runner.mjs +2 -0
- package/src/runtime/office/core/office-actions-read.mjs +3 -0
- package/src/runtime/office/core/office-render-preview.mjs +2 -0
- package/src/runtime/office/core/office-session-dispatch.mjs +7 -0
- package/src/runtime/office/core/office-sessionless-actions.mjs +8 -0
- package/src/runtime/office/core/office-sessions.mjs +5 -0
- package/src/runtime/office/core/office-transactions.mjs +3 -0
- package/src/runtime/office/core/office-write-ledger.mjs +98 -0
- package/src/runtime/office/design/library/templates/mixdog-executive.mixdog-edit.pptx +0 -0
- package/src/runtime/office/index.mjs +30 -0
- package/src/runtime/office/pdf/pdf-edit-document.mjs +2 -0
- package/src/runtime/office/pdf/pdf-render.mjs +23 -7
- package/src/runtime/office/pdf/pdf-security.mjs +2 -0
- package/src/runtime/office/portable/portable-opc.mjs +4 -1
- package/src/runtime/office/quality/visual-diff.mjs +2 -0
- package/src/runtime/office/shared/values.mjs +0 -5
- package/src/runtime/shared/background-tasks.mjs +92 -14
- package/src/runtime/shared/bounded-file-read.mjs +13 -0
- package/src/runtime/shared/bounded-line-diff.mjs +182 -0
- package/src/runtime/shared/buffered-appender.mjs +18 -0
- package/src/runtime/shared/config.mjs +78 -18
- package/src/runtime/shared/err-text.mjs +31 -0
- package/src/runtime/shared/error-presentation.mjs +159 -19
- package/src/runtime/shared/file-permissions.d.mts +6 -1
- package/src/runtime/shared/file-permissions.mjs +54 -6
- package/src/runtime/shared/llm/anthropic-betas.mjs +4 -3
- package/src/runtime/shared/llm/anthropic-effort.mjs +129 -134
- package/src/runtime/shared/llm/anthropic-thinking-contract.mjs +50 -14
- package/src/runtime/shared/llm/model-catalog.mjs +53 -40
- package/src/runtime/shared/llm/openai-daybreak.mjs +4 -16
- package/src/runtime/shared/llm/provider-catalog-registry.mjs +11 -0
- package/src/runtime/shared/llm/provider-model-identities.mjs +13 -4
- package/src/runtime/shared/llm/usage-accounting.mjs +5 -2
- package/src/runtime/shared/llm/usage-ledger-rollup.mjs +3 -0
- package/src/runtime/shared/llm/usage-rollup.mjs +0 -1
- package/src/runtime/shared/loopback-listener.mjs +9 -0
- package/src/runtime/shared/model-display.mjs +13 -0
- package/src/runtime/shared/provider-api-key.mjs +2 -0
- package/src/runtime/shared/quota-resume-store.mjs +11 -0
- package/src/runtime/shared/review-diff.mjs +52 -0
- package/src/runtime/shared/session-baseline-store.mjs +960 -0
- package/src/runtime/shared/session-sidebar-host.d.mts +4 -0
- package/src/runtime/shared/session-sidebar-host.mjs +38 -0
- package/src/runtime/shared/slow-span.mjs +114 -0
- package/src/runtime/shared/statusline/statusline-format.mjs +4 -4
- package/src/runtime/shared/statusline/statusline-segments.mjs +28 -4
- package/src/runtime/shared/task-notification-envelope.mjs +2 -2
- package/src/runtime/shared/tool-card-model/card-header.mjs +6 -1
- package/src/runtime/shared/tool-card-model/generic-detail.mjs +39 -5
- package/src/runtime/shared/tool-card-model.mjs +5 -2
- package/src/runtime/shared/tool-output-limit.mjs +4 -0
- package/src/runtime/shared/tool-primitives.mjs +13 -0
- package/src/runtime/shared/tool-result-summary.mjs +8 -1
- package/src/runtime/shared/tool-surface.mjs +18 -3
- package/src/runtime/shared/tool-work-units.mjs +40 -4
- package/src/runtime/shared/transcript-writer/purge.mjs +74 -0
- package/src/runtime/shared/transcript-writer.mjs +10 -2
- package/src/runtime/shared/turn-changes.mjs +670 -274
- package/src/runtime/shared/turn-review-reply.mjs +8 -39
- package/src/runtime/shared/turn-snapshot-store.mjs +94 -2
- package/src/runtime/shared/turn-snapshot.mjs +986 -690
- package/src/runtime/shared/turn-worktree-snapshot.mjs +279 -262
- package/src/runtime/shared/user-data-guard.mjs +262 -49
- package/src/runtime/shared/worktrees/carry.mjs +531 -0
- package/src/runtime/shared/worktrees/contract.mjs +34 -24
- package/src/runtime/shared/worktrees/file-recovery.mjs +68 -0
- package/src/runtime/shared/worktrees/git-head.mjs +205 -0
- package/src/runtime/shared/worktrees/git.mjs +8 -3
- package/src/runtime/shared/worktrees/maintenance.mjs +1 -1
- package/src/runtime/shared/worktrees/manager.mjs +156 -8
- package/src/runtime/shared/worktrees/merge.mjs +31 -21
- package/src/runtime/shared/worktrees/paths.d.mts +6 -0
- package/src/runtime/shared/worktrees/test-support.mjs +19 -4
- package/src/runtime/terminal-bridge/client.mjs +44 -11
- package/src/runtime/terminal-bridge/tool-defs.mjs +13 -6
- package/src/runtime/tidy/apply.mjs +47 -2
- package/src/runtime/tidy/run-engines.mjs +11 -5
- package/src/session-runtime/agent-tool-routing.mjs +19 -13
- package/src/session-runtime/boot/apis.mjs +19 -5
- package/src/session-runtime/boot/facade.mjs +1 -0
- package/src/session-runtime/boot/infrastructure.mjs +12 -1
- package/src/session-runtime/boot/session.mjs +0 -1
- package/src/session-runtime/boot/tools.mjs +4 -1
- package/src/session-runtime/cwd-plugins/cwd-apply.mjs +12 -5
- package/src/session-runtime/internal-tool-executor/ask-user-tool.mjs +65 -0
- package/src/session-runtime/internal-tool-executor/bridge-tools.mjs +3 -1
- package/src/session-runtime/internal-tool-executor/knowledge-tools.mjs +11 -4
- package/src/session-runtime/internal-tool-executor/workspace-tools.mjs +115 -18
- package/src/session-runtime/internal-tool-executor.mjs +6 -2
- package/src/session-runtime/lifecycle/cold-heir.mjs +188 -0
- package/src/session-runtime/lifecycle/inheritance.mjs +71 -27
- package/src/session-runtime/lifecycle/session-catalog.mjs +14 -3
- package/src/session-runtime/lifecycle/session-switch/resume.mjs +6 -0
- package/src/session-runtime/lifecycle/session-switch/session-delete.mjs +29 -6
- package/src/session-runtime/lifecycle/teardown.mjs +73 -8
- package/src/session-runtime/lifecycle-api.mjs +1 -0
- package/src/session-runtime/mcp-glue/connect.mjs +46 -14
- package/src/session-runtime/mcp-glue/server-catalog.mjs +20 -3
- package/src/session-runtime/mcp-glue.mjs +3 -0
- package/src/session-runtime/mcp-oauth-login.mjs +174 -0
- package/src/session-runtime/model-route/model-switch-target.mjs +34 -0
- package/src/session-runtime/model-route/set-route.mjs +85 -17
- package/src/session-runtime/model-route/web-search-route.mjs +1 -1
- package/src/session-runtime/native-web-search/routes.mjs +22 -3
- package/src/session-runtime/native-web-search-usage.mjs +51 -0
- package/src/session-runtime/native-web-search.mjs +10 -1
- package/src/session-runtime/new-session-config.mjs +4 -2
- package/src/session-runtime/provider-auth/login.mjs +4 -0
- package/src/session-runtime/provider-models/model-meta.mjs +12 -3
- package/src/session-runtime/quick-model-rows/web-search-rows.mjs +13 -8
- package/src/session-runtime/quick-web-search-models.mjs +13 -38
- package/src/session-runtime/resource-extension-sync.mjs +4 -0
- package/src/session-runtime/resource-mcp-api.mjs +98 -2
- package/src/session-runtime/resource-scope-decorate.mjs +10 -3
- package/src/session-runtime/runtime-review-api.mjs +21 -2
- package/src/session-runtime/services/agent-tool/index-write-queue.mjs +81 -20
- package/src/session-runtime/services/agent-tool/job-task-reconcile.mjs +13 -1
- package/src/session-runtime/services/agent-tool/job-views/agent-list.mjs +7 -2
- package/src/session-runtime/services/agent-tool/lead-worker-index/forgotten-leads.mjs +29 -0
- package/src/session-runtime/services/agent-tool/lead-worker-index/index-file.mjs +1 -1
- package/src/session-runtime/services/agent-tool/lead-worker-index.mjs +73 -7
- package/src/session-runtime/services/agent-tool/send-flow.mjs +22 -4
- package/src/session-runtime/services/agent-tool/spawn-flow/job-start.mjs +2 -0
- package/src/session-runtime/services/agent-tool/spawn-flow/spawn-run.mjs +22 -5
- package/src/session-runtime/services/agent-tool/tag-registry.mjs +15 -1
- package/src/session-runtime/services/agent-tool/worker-index/row-liveness.mjs +8 -1
- package/src/session-runtime/services/agent-tool/worker-index/row-shape.mjs +2 -2
- package/src/session-runtime/services/agent-tool/worker-index/row-store.mjs +10 -1
- package/src/session-runtime/services/agent-tool/worker-index.mjs +46 -7
- package/src/session-runtime/services/agent-tool/worker-rows.mjs +17 -0
- package/src/session-runtime/services/agent-tool.mjs +3 -0
- package/src/session-runtime/services/channel-admin.mjs +19 -3
- package/src/session-runtime/services/memory-runtime-proxy/calls.mjs +4 -0
- package/src/session-runtime/services/memory-runtime-proxy.mjs +1 -0
- package/src/session-runtime/services/provider-admin.mjs +81 -15
- package/src/session-runtime/session-transcript-purge.mjs +32 -0
- package/src/session-runtime/session-turn-api.mjs +14 -5
- package/src/session-runtime/settings-builtin-tools-api.mjs +9 -0
- package/src/session-runtime/settings-compaction-api.mjs +1 -0
- package/src/session-runtime/setup-tool/executor.mjs +36 -6
- package/src/session-runtime/setup-tool/extended-actions.mjs +86 -6
- package/src/session-runtime/setup-tool/settings-contract.mjs +13 -3
- package/src/session-runtime/setup-tool/tool-defs.mjs +13 -4
- package/src/session-runtime/skills-api.mjs +3 -5
- package/src/session-runtime/tool-surface.mjs +5 -1
- package/src/session-runtime/turn/compaction-gate.mjs +25 -0
- package/src/session-runtime/turn/session-ops.mjs +7 -5
- package/src/session-runtime/turn/side-question-ops.mjs +22 -0
- package/src/session-runtime/turn/turn-run/ask-callbacks.mjs +5 -1
- package/src/session-runtime/turn/turn-run/turn-prepare.mjs +8 -3
- package/src/session-runtime/turn/turn-run/turn-settle.mjs +10 -0
- package/src/session-runtime/turn/turn-run/turn-timing.mjs +4 -3
- package/src/session-runtime/turn/turn-run.mjs +25 -9
- package/src/session-runtime/usage-stats-api.mjs +43 -11
- package/src/session-runtime/workspace/project-branches.mjs +7 -5
- package/src/session-runtime/workspace/transition-steps.mjs +129 -31
- package/src/session-runtime/workspace/transitions.mjs +190 -15
- package/src/standalone/daemon-agent-control.mjs +9 -1
- package/src/standalone/daemon-drain-policy.mjs +8 -0
- package/src/standalone/daemon-local-session-bridge.mjs +14 -1
- package/src/standalone/daemon-owner.mjs +17 -4
- package/src/standalone/daemon-pg-stop.mjs +51 -0
- package/src/standalone/daemon-stop-budget.d.mts +2 -0
- package/src/standalone/daemon-stop-budget.mjs +18 -0
- package/src/standalone/daemon-stored-session-views.mjs +2 -0
- package/src/standalone/daemon-telemetry.mjs +74 -0
- package/src/standalone/daemon.mjs +64 -8
- package/src/standalone/desktop-service-registry.mjs +5 -0
- package/src/standalone/local-session-runtime.mjs +70 -19
- package/src/standalone/session-client.mjs +42 -0
- package/src/standalone/session-protocol.mjs +14 -0
- package/src/standalone/session-proxy/projection.mjs +41 -4
- package/src/standalone/session-runtime-inline-host/boot-loaders.mjs +15 -1
- package/src/standalone/session-runtime-inline-host.mjs +1 -0
- package/src/standalone/session-service/agent-tree/agent-cancel.mjs +33 -2
- package/src/standalone/session-service/agent-tree/agent-turns.mjs +26 -10
- package/src/standalone/session-service/agent-tree.mjs +12 -0
- package/src/standalone/session-service/quota-resume.mjs +8 -0
- package/src/standalone/session-service/retention/busy.mjs +15 -1
- package/src/standalone/session-service/session-calls/session-action.mjs +18 -3
- package/src/standalone/session-service-api.mjs +11 -1
- package/src/standalone/session-service.mjs +1 -0
- package/src/standalone/session-state-patch.d.mts +2 -1
- package/src/standalone/session-state-patch.mjs +41 -1
- package/src/tui/App.jsx +25 -0
- package/src/tui/app/app-view/floating-panel.jsx +26 -1
- package/src/tui/app/app-view.jsx +1 -0
- package/src/tui/app/btw-controller.mjs +118 -0
- package/src/tui/app/create-app-pickers.mjs +6 -0
- package/src/tui/app/extension-pickers/mcp-login.mjs +107 -0
- package/src/tui/app/extension-pickers/mcp-servers-picker.mjs +2 -1
- package/src/tui/app/extension-pickers.mjs +2 -1
- package/src/tui/app/model-options.mjs +11 -16
- package/src/tui/app/shell-layout/row-budgets.mjs +11 -1
- package/src/tui/app/shell-layout/surfaces.mjs +3 -1
- package/src/tui/app/slash-commands.mjs +20 -5
- package/src/tui/app/slash-dispatch/panel-commands.mjs +16 -1
- package/src/tui/app/slash-dispatch/session-commands.mjs +19 -6
- package/src/tui/app/use-global-key-input/approval-shortcut.mjs +12 -0
- package/src/tui/app/use-global-key-input.mjs +5 -12
- package/src/tui/app/use-prompt-handlers.mjs +11 -0
- package/src/tui/components/BtwPanel.jsx +53 -0
- package/src/tui/components/QuestionPanel.jsx +275 -0
- package/src/tui/components/StatusLine.jsx +2 -0
- package/src/tui/components/question-panel-model.mjs +156 -0
- package/src/tui/components/status-line/local-line.mjs +5 -2
- package/src/tui/components/status-line/use-statusline-text.mjs +7 -1
- package/src/tui/dist/index.mjs +3221 -1500
- package/src/tui/session/context-state.mjs +4 -2
- package/src/tui/session/quota-resume.mjs +46 -14
- package/src/tui/session/session-api/commands.mjs +43 -24
- package/src/tui/session/session-api/controls.mjs +2 -2
- package/src/tui/session/session-api/extensions.mjs +22 -0
- package/src/tui/session/session-api/integrations.mjs +16 -2
- package/src/tui/session/session-api/lifecycle/dispose.mjs +1 -0
- package/src/tui/session/session-api/lifecycle.mjs +7 -2
- package/src/tui/session/session-api/routes.mjs +71 -7
- package/src/tui/session/session-api/settings.mjs +11 -14
- package/src/tui/session/session-api.mjs +1 -0
- package/src/tui/session/session-flow/drain.mjs +7 -1
- package/src/tui/session/session-flow/failed-turn-rewind.mjs +10 -4
- package/src/tui/session/tool-approval.mjs +10 -7
- package/src/tui/session/transcript-spill.mjs +14 -7
- package/src/tui/session/turn-stream.mjs +174 -31
- package/src/tui/session/turn.mjs +46 -16
- package/src/tui/statusline-ansi-bridge.mjs +1 -1
- package/src/ui/statusline-agents.mjs +15 -4
- package/src/ui/statusline.mjs +7 -3
- package/src/ui/streaming-markdown-heal.mjs +34 -3
- package/src/vendor/statusline/src/gateway/claude-current.mjs +14 -4
- package/src/workflows/default/WORKFLOW.md +3 -1
- package/src/runtime/memory/lib/memory-session-merge.mjs +0 -32
- package/src/runtime/shared/llm/usage-session-history.mjs +0 -266
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"id": "reviewer",
|
|
3
3
|
"name": "Reviewer",
|
|
4
|
-
"description": "Use
|
|
4
|
+
"description": "Use only at the end, as the final check of non-trivial work: after the implementation is written and verified, before reporting completion, to independently verify correctness, regressions, risks, and acceptance criteria. Skip for low-difficulty work.",
|
|
5
5
|
"entry": "AGENT.md"
|
|
6
6
|
}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"agents": {
|
|
3
3
|
"advisor": [
|
|
4
|
+
"6bd0318995f70547c162efda92795e79",
|
|
4
5
|
"d3b4a7926c9484833fe8ddba70260f9d"
|
|
5
6
|
],
|
|
6
7
|
"debugger": [
|
|
@@ -26,6 +27,7 @@
|
|
|
26
27
|
"reviewer": [
|
|
27
28
|
"07643b62440d3eba29b7360b8a33f09f",
|
|
28
29
|
"25b44b46269490e26ca31c1852925171",
|
|
30
|
+
"a60ea68f9287d55489e92e5450432f62",
|
|
29
31
|
"a61cb4557def4e7ed647d4bdacbb72e4",
|
|
30
32
|
"de860d4111b61985f3b59eb1011fa421"
|
|
31
33
|
],
|
|
@@ -61,6 +63,7 @@
|
|
|
61
63
|
"56355187d05762ef50579d6285636c71",
|
|
62
64
|
"599d6b09954a3afb163091878d3b7040",
|
|
63
65
|
"5fa8ddf4731b39cec5fa269d632cfcc4",
|
|
66
|
+
"627f69923f1b895e3ac5f95f9b2d766b",
|
|
64
67
|
"660cc103947dd30b94c70bcd1f22cefe",
|
|
65
68
|
"6bbd8bb9e7657bc642f7be02f36dfc6d",
|
|
66
69
|
"7976531213723a66a7a53b9a1cf0f372",
|
|
@@ -98,6 +101,7 @@
|
|
|
98
101
|
"outputStyles": {
|
|
99
102
|
"common.md": [
|
|
100
103
|
"4e6134d60ee5c54c2888e874653bcdad",
|
|
104
|
+
"4ecd89b0c07ad8a81aa1f84882cf1b00",
|
|
101
105
|
"899529696b7d6d3373ae83a76976ab48",
|
|
102
106
|
"8d343d0a406fd5817b7fd98a3ac47010",
|
|
103
107
|
"a1b73ce404125d3ce0a5762e4a1e1555",
|
|
@@ -335,9 +339,11 @@
|
|
|
335
339
|
"70c54f802c77b630863b9e17a16d8224",
|
|
336
340
|
"81e979463e0066e7a45cf511a31c5d68",
|
|
337
341
|
"8476c811b2f02da3a434bcb23a1c3d12",
|
|
342
|
+
"8af2b614e2a07b58dad6c0f1318d22e2",
|
|
338
343
|
"9f90d3872b1ecd312977ce661b770b31",
|
|
339
344
|
"ade615dd0f6ae6ed1601023e5b9cb692",
|
|
340
345
|
"b4f9c79dcb08151e6275b5ee35c2bca4",
|
|
346
|
+
"c6db973f51166fc42814808ae0001797",
|
|
341
347
|
"c8826387a65631b63e8023f55ef807a3",
|
|
342
348
|
"cb6f66d14ba75b11e7470eb3fd5ec94c",
|
|
343
349
|
"de9727a48e52673258bf5f9670564d56",
|
|
@@ -69,7 +69,8 @@ that a call returned without transport error.
|
|
|
69
69
|
injection stays on regardless. `set_recap_enabled` changes only the
|
|
70
70
|
background cycles. Core Memory entries
|
|
71
71
|
are read and changed with the `memory` tool, not setup.
|
|
72
|
-
- Built-ins have installation state separate from enabled state
|
|
72
|
+
- Built-ins have installation state separate from enabled state; Visualize
|
|
73
|
+
is toggle-only (on by default, no install step). Browser Use,
|
|
73
74
|
Computer Use actions require this conversation open in the local Desktop
|
|
74
75
|
window; voice runs on the runtime and needs no Desktop.
|
|
75
76
|
- Hook rules are before-tool policy, separate from MCP and plugins. Deleting a
|
|
@@ -94,6 +95,10 @@ that a call returned without transport error.
|
|
|
94
95
|
- For an MCP failure, inspect the reported transport error before changing
|
|
95
96
|
command, arguments, directory, environment, URL, headers, or enabled state.
|
|
96
97
|
- MCP reads intentionally omit raw connection values that may contain secrets.
|
|
98
|
+
- An HTTP/SSE MCP server that needs OAuth waits for sign-in instead of
|
|
99
|
+
failing; setup rows then show it enabled, not connected, with no `error`.
|
|
100
|
+
Setup cannot sign in, and `reconnect_mcp` does not log in: hand off to
|
|
101
|
+
`open mcp` (Connect/Reconnect) or the TUI `/mcp login`.
|
|
97
102
|
- For an unavailable built-in, distinguish not installed, installed but
|
|
98
103
|
disabled, and bridge inactive.
|
|
99
104
|
- Desktop requests require a single live claimant and a confirmed receipt.
|
|
@@ -4,11 +4,17 @@ Read this when choosing a `setup` mutation.
|
|
|
4
4
|
|
|
5
5
|
## Read and navigate
|
|
6
6
|
|
|
7
|
-
- `status` reads one domain
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
7
|
+
- `status` reads one domain from the schema enum; pick the narrowest.
|
|
8
|
+
- Results are compact JSON. `status providers` lists configured providers
|
|
9
|
+
only (`id`, `kind`, `authenticated`, `status`, `accounts` count); add
|
|
10
|
+
`detail: true` for every provider with key URLs, expiry and account ids.
|
|
11
|
+
- `list_models` narrows in steps: no `catalog` returns the provider index
|
|
12
|
+
(`provider`, `count`, `defaultModel?`); `catalog.provider` returns compact
|
|
13
|
+
rows (`id`, `display`, `context`, `efforts`, `fast?`, `vision?`) with
|
|
14
|
+
`total`/`page`/`pages`/`nextPage` (`page`, `limit` ≤ 100, default 25);
|
|
15
|
+
`catalog.model` (plus `provider` if several offer the id) returns that
|
|
16
|
+
model's full options. `webSearch` limits to native-search models; `refresh`
|
|
17
|
+
reloads the catalog.
|
|
12
18
|
- `open` navigates to a supported UI surface. Read `surfaces.md` for targets and
|
|
13
19
|
UI-only settings.
|
|
14
20
|
|
|
@@ -28,7 +34,7 @@ Read this when choosing a `setup` mutation.
|
|
|
28
34
|
| Background memory cycles | `set_recap_enabled` |
|
|
29
35
|
| Web Search tool exposure | `set_web_search_enabled` |
|
|
30
36
|
| Which user instruction files (AGENTS.md / CLAUDE.md) new sessions load: all, agents, claude, or off | `set_instruction_files` |
|
|
31
|
-
| Git, Office, Code Tidy, Local Provider, Auto Effort, Browser, Computer, or
|
|
37
|
+
| Git, Office, Code Tidy, Local Provider, Auto Effort, Browser, Computer, voice, or Visualize enabled state | `set_builtin_enabled` |
|
|
32
38
|
| Git, Memory, Office, Code Tidy, Local Provider, Auto Effort, Browser, Computer, or voice preparation | `install_builtin` |
|
|
33
39
|
| Managed local model installation | `install_local_model` |
|
|
34
40
|
| Start or resume a background runtime/model download | `start_local_installation` |
|
|
@@ -44,7 +50,7 @@ Read this when choosing a `setup` mutation.
|
|
|
44
50
|
| Automatic updates | `set_auto_update` |
|
|
45
51
|
| Worktree defaults: new tasks on the current branch or a new worktree, branch prefix, large-repository warning size, automatic cleanup | `set_worktree_settings` |
|
|
46
52
|
| Remove stored provider authentication (one OAuth account at a time) | `forget_provider_auth` |
|
|
47
|
-
| Select, rename,
|
|
53
|
+
| Select, rename, or reorder OAuth accounts, set the switching policy, or allow paid credits | `set_provider_account` |
|
|
48
54
|
| Developer options such as risk-gated OAuth providers | `set_developer_option` |
|
|
49
55
|
| Add an MCP server | `add_mcp_server` |
|
|
50
56
|
| Edit or rename an MCP server | `save_mcp_server` |
|
|
@@ -58,7 +64,7 @@ Read this when choosing a `setup` mutation.
|
|
|
58
64
|
| Enable or disable a plugin | `set_plugin_enabled` |
|
|
59
65
|
| Remove a plugin | `remove_plugin` |
|
|
60
66
|
| Turn back on and reconnect every MCP server a plugin declares | `enable_plugin_mcp` |
|
|
61
|
-
|
|
|
67
|
+
| Hosted model catalog: provider index, one provider's paged model rows, or one model's full options | `list_models` |
|
|
62
68
|
| Agent orchestration, independent of workflow instructions | `set_orchestration_mode` |
|
|
63
69
|
| Safe MCP edit metadata, excluding raw connection/credential values | `get_mcp_server` |
|
|
64
70
|
| Read a workflow, agent, or skill definition | `read_definition` |
|
|
@@ -69,7 +75,7 @@ Read this when choosing a `setup` mutation.
|
|
|
69
75
|
| Delete an existing schedule/webhook | `delete_automation` |
|
|
70
76
|
| Enable/disable a schedule/webhook | `set_automation_enabled` |
|
|
71
77
|
| Webhook listener enabled state, port, or domain | `set_webhook_config` |
|
|
72
|
-
| Desktop keep-awake, run in background after window close, turn-completion notifications, notification volume (Windows), usage pin, or Computer observe-only state | `set_desktop_settings` |
|
|
78
|
+
| Desktop keep-awake, run in background after window close, turn-completion notifications, notification volume (Windows), usage pin, usage rail short + long bars, or Computer observe-only state | `set_desktop_settings` |
|
|
73
79
|
| Desktop theme, display language, side panels, markdown default view, link previews, or tool activity expansion | `set_appearance` |
|
|
74
80
|
| Add a before-tool hook rule | `add_hook_rule` |
|
|
75
81
|
| Enable or disable a hook rule by its `status hooks` index | `set_hook_rule_enabled` |
|
|
@@ -88,8 +94,14 @@ workflow` before changing the corresponding domain.
|
|
|
88
94
|
|
|
89
95
|
- Main and agent routes also accept `modelParameters`, `contextPercent`, and
|
|
90
96
|
`contextTokens` (an exact window in tokens that overrides `contextPercent`);
|
|
91
|
-
agent routes accept `disabled`.
|
|
92
|
-
|
|
97
|
+
agent routes accept `disabled`. Route `autoEffort` (Main and agent only)
|
|
98
|
+
turns Auto reasoning on/off for that route; the Auto Effort built-in toggle
|
|
99
|
+
is the machine-wide switch and must also be on and `ready`.
|
|
100
|
+
Before `set_route`, read `list_models` with `catalog.model` (and `provider`)
|
|
101
|
+
for the model's `effortOptions`, `defaultEffort`, `fastCapable`,
|
|
102
|
+
`serviceTiers`, `modelParameterOptions` and `parameterVariants`; take
|
|
103
|
+
`effort`, `fast` and `modelParameters` values only from it, never from
|
|
104
|
+
remembered model ids.
|
|
93
105
|
- A Web Search route must support native web search; tool exposure is changed
|
|
94
106
|
separately.
|
|
95
107
|
- Definition actions use `definitionKind` (workflow, agent, skill).
|
|
@@ -102,12 +114,13 @@ workflow` before changing the corresponding domain.
|
|
|
102
114
|
|
|
103
115
|
## Providers and authentication
|
|
104
116
|
|
|
105
|
-
Use `status providers` for authenticated state
|
|
117
|
+
Use `status providers` for authenticated state; `detail: true` adds each API
|
|
118
|
+
key's source.
|
|
106
119
|
|
|
107
120
|
- API-key and OAuth providers: `open providers`, then the user completes
|
|
108
121
|
authentication in the visible UI.
|
|
109
122
|
- Custom providers are registered, tested, and removed in the Providers UI;
|
|
110
|
-
`status providers` lists them as API rows with `custom: true`.
|
|
123
|
+
`status providers` with `detail: true` lists them as API rows with `custom: true`.
|
|
111
124
|
- Local Provider is installed and enabled as a Built-in. Its endpoint is
|
|
112
125
|
Mixdog-managed and is never configured by the user.
|
|
113
126
|
Use the `local-provider` skill for hardware checks, model selection, downloads,
|
|
@@ -115,10 +128,14 @@ Use `status providers` for authenticated state and source.
|
|
|
115
128
|
the detail dialog lists installed models rather than the download catalog.
|
|
116
129
|
- Forgetting authentication is destructive and requires explicit approval.
|
|
117
130
|
It removes one OAuth account; a provider with several accounts requires
|
|
118
|
-
`accountId` from the account list in `status providers`.
|
|
119
|
-
- `set_provider_account` changes the selected account,
|
|
120
|
-
|
|
121
|
-
|
|
131
|
+
`accountId` from the account list in `status providers` with `detail: true`.
|
|
132
|
+
- `set_provider_account` changes the selected account, paid-credit use after
|
|
133
|
+
plan limits (`useCredits`), account order (every account id exactly once),
|
|
134
|
+
an account label, or the switching `policy`: `manual` stays on the selected
|
|
135
|
+
account, `limit` switches when it hits a limit, `headroom` starts each new
|
|
136
|
+
session on the account with the most headroom. `status providers` with
|
|
137
|
+
`detail: true` returns the current `policy` when one is set. Sign-in for a new account still
|
|
138
|
+
happens in the Providers UI.
|
|
122
139
|
- `status developer` lists developer options. An option with a `warning` is
|
|
123
140
|
enabled only after the user explicitly accepts that warning, passed as
|
|
124
141
|
`riskAccepted:true`; never assume acceptance.
|
|
@@ -159,7 +176,12 @@ markers are read with `status desktop`.
|
|
|
159
176
|
reasoning effort with a local judge model downloaded in the background.
|
|
160
177
|
Enabling or installing it fails on unsupported machines; `status features`
|
|
161
178
|
reports `supported`, `installing` (judge download running) and `ready`.
|
|
179
|
+
- Visualize is toggle-only through `set_builtin_enabled` (on by default);
|
|
180
|
+
`install_builtin` does not accept it.
|
|
162
181
|
- Terminal follows the live Desktop terminal bridge and has no toggle.
|
|
182
|
+
- Environment feature overrides (`MIXDOG_FEATURE_*`) win over these toggles;
|
|
183
|
+
they are diagnostics for headless or benchmark environments, not user
|
|
184
|
+
settings.
|
|
163
185
|
- Browser Use and Computer Use installation/toggles use the same
|
|
164
186
|
`install_builtin` and `set_builtin_enabled` actions through a live Desktop
|
|
165
187
|
receipt. Computer Use runs on Windows, macOS, and Linux desktops. These
|
|
@@ -177,16 +199,12 @@ markers are read with `status desktop`.
|
|
|
177
199
|
only as `hasArgumentEdit`; their contents are never returned. Indexes shift
|
|
178
200
|
after a delete;
|
|
179
201
|
re-read status before addressing another rule.
|
|
180
|
-
- `add_hook_rule`
|
|
181
|
-
and optional `tool`, `match`, `cwd`, `reason`. modify/rewrite need exactly
|
|
182
|
-
one of `patch` (merged into the arguments) or `args` (replaces them).
|
|
202
|
+
- `add_hook_rule` with modify/rewrite needs exactly one of `patch` or `args`.
|
|
183
203
|
- `delete_hook_rule` is destructive and requires explicit approval for the
|
|
184
204
|
named rule; disabling with `set_hook_rule_enabled` preserves it.
|
|
185
205
|
- `status media` shows the remembered lane/model per kind. `set_media_default`
|
|
186
206
|
accepts only a signed-in lane that offers the kind (and the model, when
|
|
187
207
|
given) in the live media catalog; the media tool's `list` reads that catalog.
|
|
188
|
-
- Environment feature overrides are diagnostics for headless or benchmark
|
|
189
|
-
environments, not ordinary user settings.
|
|
190
208
|
|
|
191
209
|
## Skills, MCP, and plugins
|
|
192
210
|
|
|
@@ -201,6 +219,10 @@ markers are read with `status desktop`.
|
|
|
201
219
|
transport. Raw credential fields are not accepted; `env_vars`,
|
|
202
220
|
`bearer_token_env_var`, and `env_http_headers` reference existing environment
|
|
203
221
|
variables without exposing their values.
|
|
222
|
+
- `startupTimeoutSec` (connect/handshake, default 30) and `toolTimeoutSec`
|
|
223
|
+
(per tool call, default 120) are positive seconds. Raise them for slow
|
|
224
|
+
servers instead of reconnecting repeatedly; a timed-out call is never
|
|
225
|
+
replayed.
|
|
204
226
|
- Environment/header maps are partial patches. Omitted keys are preserved;
|
|
205
227
|
`null` explicitly removes one key, including a stored credential.
|
|
206
228
|
- Plugin enablement moves its contributed skills and MCP integrations together.
|
|
@@ -18,7 +18,7 @@ or requests a setting with no mutation action.
|
|
|
18
18
|
| `profile` | User profile |
|
|
19
19
|
| `autoclear` | Session lifecycle controls |
|
|
20
20
|
| `memory` | Memory capability surface |
|
|
21
|
-
| `mcp` | Extensions → Skill → MCP |
|
|
21
|
+
| `mcp` | Extensions → Skill → MCP, including OAuth Connect/Reconnect/Disconnect |
|
|
22
22
|
| `skills` | Extensions → Skill → Skills |
|
|
23
23
|
| `plugins` | Extensions → Plugin |
|
|
24
24
|
| `update` | Update surface |
|
|
@@ -56,15 +56,15 @@ the user to Desktop.
|
|
|
56
56
|
|
|
57
57
|
## Desktop-backed settings
|
|
58
58
|
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
installation and toggles, Projects, and linked-device revocation through the
|
|
64
|
-
attached Desktop. A receipt identifies `scope:desktop-host`.
|
|
59
|
+
`set_desktop_settings`, `set_appearance`, `set_activity_rail_pins`,
|
|
60
|
+
`save_project`, `remove_project`, `revoke_linked_device`, and Browser/Computer
|
|
61
|
+
install or toggles run through the attached Desktop; the receipt identifies
|
|
62
|
+
`scope:desktop-host`.
|
|
65
63
|
|
|
66
64
|
Computer observe-only and background Memory cycles (`set_recap_enabled`)
|
|
67
|
-
have no settings control in either app; setup is their only supported route.
|
|
65
|
+
have no settings control in either app; setup is their only supported route.
|
|
66
|
+
Usage pin and the short + long rail bars live in the usage card's flyout menu
|
|
67
|
+
on the activity rail.
|
|
68
68
|
|
|
69
69
|
Schedules/webhooks and workflow/agent/skill definitions use their runtime
|
|
70
70
|
actions directly. These do not require clicking their Desktop rails.
|
|
@@ -74,6 +74,8 @@ actions directly. These do not require clicking their Desktop rails.
|
|
|
74
74
|
The setup tool does not mutate:
|
|
75
75
|
|
|
76
76
|
- API keys, OAuth, usage sign-in, and GitHub CLI connection;
|
|
77
|
+
- MCP server OAuth sign-in and sign-out (Desktop MCP list/editor, TUI
|
|
78
|
+
`/mcp login` and `/mcp logout`; remote windows paste the redirect address);
|
|
77
79
|
- notification permission and subscription on the receiving device;
|
|
78
80
|
- web-app pairing credentials and OS permission dialogs;
|
|
79
81
|
- TUI-local theme palettes (use `/theme`; Desktop themes are separate).
|
package/src/headless-exec.mjs
CHANGED
|
@@ -437,19 +437,26 @@ async function createHeadlessSessionRuntime(boundary, { provider, model, cwd, we
|
|
|
437
437
|
// hundred bytes and the write is atomic, so the cost is negligible and a
|
|
438
438
|
// live run stays readable from outside.
|
|
439
439
|
function headlessAskOptions({ stats, lifecycle, observedModels, writeUsage }) {
|
|
440
|
+
const recordUsage = (delta) => {
|
|
441
|
+
const observedModel = clean(delta?.model);
|
|
442
|
+
if (observedModel) observedModels.add(observedModel);
|
|
443
|
+
applyUsageDelta(stats, delta);
|
|
444
|
+
try {
|
|
445
|
+
writeUsage();
|
|
446
|
+
} catch {
|
|
447
|
+
// Telemetry must never break the session; the exit path reports.
|
|
448
|
+
}
|
|
449
|
+
};
|
|
440
450
|
return {
|
|
441
451
|
onTextReset: () => true,
|
|
442
452
|
onUsageDelta: (delta) => {
|
|
443
|
-
|
|
444
|
-
if (observedModel) observedModels.add(observedModel);
|
|
445
|
-
applyUsageDelta(stats, delta);
|
|
453
|
+
recordUsage(delta);
|
|
446
454
|
lifecycle?.onUsageDelta(delta);
|
|
447
|
-
try {
|
|
448
|
-
writeUsage();
|
|
449
|
-
} catch {
|
|
450
|
-
// Telemetry must never break the session; the exit path reports.
|
|
451
|
-
}
|
|
452
455
|
},
|
|
456
|
+
// Native web search runs its own provider send; fold its spend into the
|
|
457
|
+
// run's totals. It is not a main-stream request, so the lifecycle's
|
|
458
|
+
// model-request events stay untouched.
|
|
459
|
+
onNativeWebSearchUsage: recordUsage,
|
|
453
460
|
...(lifecycle
|
|
454
461
|
? {
|
|
455
462
|
onProviderSendStarted: () => lifecycle.onProviderSendStarted(),
|
package/src/lib/keychain-cjs.cjs
CHANGED
|
@@ -282,7 +282,8 @@ function darwinSet(account, value) {
|
|
|
282
282
|
|
|
283
283
|
function darwinDelete(account) {
|
|
284
284
|
const r = darwinRun(['delete-generic-password', '-a', account, '-s', SERVICE]);
|
|
285
|
-
|
|
285
|
+
// Exit 44 is errSecItemNotFound: nothing stored, so nothing to delete.
|
|
286
|
+
if (r.status !== 0 && r.status !== 44) throw new Error(`[keychain] security delete failed: ${r.stderr || r.stdout}`);
|
|
286
287
|
}
|
|
287
288
|
|
|
288
289
|
// ---------------------------------------------------------------------------
|
|
@@ -983,9 +984,11 @@ function win32Set(account, value) {
|
|
|
983
984
|
}
|
|
984
985
|
|
|
985
986
|
function win32Delete(account) {
|
|
986
|
-
|
|
987
|
-
|
|
988
|
-
|
|
987
|
+
try {
|
|
988
|
+
fs.unlinkSync(dpApiFile(account));
|
|
989
|
+
} catch (error) {
|
|
990
|
+
if (error?.code !== 'ENOENT') throw error;
|
|
991
|
+
}
|
|
989
992
|
}
|
|
990
993
|
|
|
991
994
|
// ---------------------------------------------------------------------------
|
|
@@ -7,13 +7,14 @@ partial: true
|
|
|
7
7
|
|
|
8
8
|
## Shared Output Format
|
|
9
9
|
|
|
10
|
-
- Lead with the answer
|
|
11
|
-
reader's vocabulary
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
10
|
+
- Lead with the answer; no restated request or closing recap. Natural,
|
|
11
|
+
complete sentences in the reader's vocabulary, each point once; no arrow
|
|
12
|
+
chains or unexplained shorthand.
|
|
13
|
+
- Plain prose for simple questions; headings, lists, or tables only for real
|
|
14
|
+
structure. GitHub-flavored Markdown, `$$…$$` for display math.
|
|
15
|
+
- Distinguish facts, inference, and uncertainty; keep exact literals and
|
|
16
|
+
material risks. Caveats only when they change the reader's next step.
|
|
17
|
+
- Never pad: no tangents, unsolicited offers, raw dumps, or process recaps.
|
|
18
|
+
Explicit depth requests win; depth applies to substantive answers only.
|
|
19
|
+
- At every depth keep decision-relevant failures, security warnings, and
|
|
20
|
+
destructive-action confirmations; quote needed error text exactly.
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
* to `ctx.out`; only `/exit` and `/quit` return 'exit'.
|
|
4
4
|
*/
|
|
5
5
|
import { dim, green, red, yellow, colorEnabled } from '../runtime/shared/statusline/ansi.mjs';
|
|
6
|
+
import { switchesSessionModel } from '../session-runtime/model-route/model-switch-target.mjs';
|
|
6
7
|
import { createSessionStats } from '../ui/session-stats.mjs';
|
|
7
8
|
import { statuslineFor } from './turn-output.mjs';
|
|
8
9
|
|
|
@@ -65,7 +66,21 @@ async function setModel(ctx, arg) {
|
|
|
65
66
|
return;
|
|
66
67
|
}
|
|
67
68
|
const runtime = await ctx.ensureRuntime();
|
|
68
|
-
|
|
69
|
+
const request = { model: arg };
|
|
70
|
+
// The user's model choice switches this conversation in place; with
|
|
71
|
+
// auto-compact on model change (default on) the history is compacted on the
|
|
72
|
+
// current model first. A failed compaction never blocks the switch.
|
|
73
|
+
if (switchesSessionModel(runtime, request) && runtime.getCompactionSettings?.()?.onModelChange !== false) {
|
|
74
|
+
// An invalid or unavailable selector is rejected before anything compacts.
|
|
75
|
+
await runtime.setRoute(request, { validateOnly: true });
|
|
76
|
+
out.write(`${dim('compacting conversation before the model change…')}\n`);
|
|
77
|
+
try {
|
|
78
|
+
await runtime.compact();
|
|
79
|
+
} catch {
|
|
80
|
+
/* next-turn auto-compaction fits the new window */
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
await runtime.setRoute(request, { switchEstablished: true });
|
|
69
84
|
out.write(`${green(`✓ model → ${runtime.provider}/${runtime.model}`)}\n`);
|
|
70
85
|
}
|
|
71
86
|
|
package/src/rules/agent/AGENT.md
CHANGED
|
@@ -6,8 +6,8 @@
|
|
|
6
6
|
unapproved destructive action, or a blocker.
|
|
7
7
|
- Communicate in English. Call tools immediately, with no preamble or
|
|
8
8
|
progress text.
|
|
9
|
-
- Reporting: report once, when
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
failures
|
|
13
|
-
Lead owns the independent review.
|
|
9
|
+
- Reporting: report once, when done, per your role's output contract;
|
|
10
|
+
otherwise done, partial, or blocked with the outcome, then only applicable
|
|
11
|
+
items: changed files with key symbols, checks run (passes in one line,
|
|
12
|
+
failures with decisive error text), material risks or blockers. No raw
|
|
13
|
+
logs, narration, or restated brief. Lead owns the independent review.
|
package/src/rules/lead/LEAD.md
CHANGED
|
@@ -17,11 +17,11 @@
|
|
|
17
17
|
<!-- tools: agent -->
|
|
18
18
|
- Briefing an agent: it sees only the brief, never this conversation. The
|
|
19
19
|
brief is written in English whatever language the user writes in, and
|
|
20
|
-
holds
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
20
|
+
holds only the task in the user's terms and its use; owned scope and
|
|
21
|
+
exclusions; changes located by path plus symbol or quoted line, not line
|
|
22
|
+
numbers; completion criteria; any return need beyond the role. No
|
|
23
|
+
background, rediscoverable detail, or known rules; large evidence by path.
|
|
24
|
+
A fresh or respawned agent gets the whole brief; a
|
|
25
25
|
continuing agent gets only what changed. Never assign the same work twice;
|
|
26
26
|
interrupt only to cancel.
|
|
27
27
|
<!-- tools: agent -->
|
|
@@ -59,6 +59,25 @@ function assistantMessageText(content) {
|
|
|
59
59
|
.join('\n');
|
|
60
60
|
}
|
|
61
61
|
|
|
62
|
+
// Visible assistant text inside a providerReplay envelope. Item shapes by
|
|
63
|
+
// provider: anthropic `{type:'text',text}`; openai/xai responses
|
|
64
|
+
// `{type:'message',content:[{type:'output_text',text}]}`; gemini/antigravity
|
|
65
|
+
// parts `{text}` (reasoning is `{thought:true,text}`). Reasoning/thinking and
|
|
66
|
+
// tool items are skipped.
|
|
67
|
+
function replayItemText(item) {
|
|
68
|
+
if (!item || typeof item !== 'object') return '';
|
|
69
|
+
if (item.type === 'message') return assistantMessageText(item.content);
|
|
70
|
+
if (item.type === 'text' || item.type === 'output_text' || (item.type === undefined && item.thought !== true)) {
|
|
71
|
+
return typeof item.text === 'string' ? item.text : '';
|
|
72
|
+
}
|
|
73
|
+
return '';
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
function providerReplayText(replay) {
|
|
77
|
+
const items = Array.isArray(replay?.items) ? replay.items : [];
|
|
78
|
+
return items.map(replayItemText).filter(Boolean).join('\n');
|
|
79
|
+
}
|
|
80
|
+
|
|
62
81
|
/** Message index at askSession start — salvage only assistant rows appended this run. */
|
|
63
82
|
export function resolveHandoffMessageStartIndex(session) {
|
|
64
83
|
const messages = Array.isArray(session?.messages) ? session.messages : [];
|
|
@@ -72,7 +91,8 @@ function collectSessionAssistantHandoffText(session, messageStartIndex = 0) {
|
|
|
72
91
|
for (let i = start; i < messages.length; i += 1) {
|
|
73
92
|
const m = messages[i];
|
|
74
93
|
if (m?.role !== 'assistant') continue;
|
|
75
|
-
const
|
|
94
|
+
const contentText = assistantMessageText(m.content).trim();
|
|
95
|
+
const t = contentText || providerReplayText(m.providerReplay).trim();
|
|
76
96
|
if (t && t !== '.') parts.push(t);
|
|
77
97
|
}
|
|
78
98
|
return parts.length ? parts.join('\n\n') : '';
|
|
@@ -80,9 +100,14 @@ function collectSessionAssistantHandoffText(session, messageStartIndex = 0) {
|
|
|
80
100
|
|
|
81
101
|
export function watchdogPartialHandoffFromError(error, session, messageStartIndex = 0) {
|
|
82
102
|
if (!isAgentProgressWatchdogAbortError(error)) return null;
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
103
|
+
return turnPartialHandoff(error, session, messageStartIndex);
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
/** Assistant text a stopped turn produced before it stopped. A canonical agent
|
|
107
|
+
* turn cannot expose its live transcript here, so it reads the text itself
|
|
108
|
+
* and carries it on the turn's error. */
|
|
109
|
+
export function turnPartialHandoff(error, session, messageStartIndex = 0) {
|
|
110
|
+
if (typeof error?.partialHandoff === 'string') return error.partialHandoff;
|
|
86
111
|
return partialHandoffTextFromSession(session, messageStartIndex);
|
|
87
112
|
}
|
|
88
113
|
|
|
@@ -210,6 +210,16 @@ export function resolveProviderCacheKey(opts, provider) {
|
|
|
210
210
|
);
|
|
211
211
|
}
|
|
212
212
|
|
|
213
|
+
/** A cache identity as a prompt_cache_key: kept as is up to the 64-char wire
|
|
214
|
+
* limit, a bounded hash identity beyond it, '' when empty. */
|
|
215
|
+
export function normalizeCacheKey(value) {
|
|
216
|
+
const text = String(value ?? '').trim();
|
|
217
|
+
if (!text) return '';
|
|
218
|
+
const wellFormed = text.toWellFormed();
|
|
219
|
+
if (wellFormed.length <= 64) return wellFormed;
|
|
220
|
+
return `pc_${createHash('sha256').update(wellFormed).digest('hex').slice(0, 32)}`;
|
|
221
|
+
}
|
|
222
|
+
|
|
213
223
|
function shortHash(value, chars = 18) {
|
|
214
224
|
return createHash('sha256').update(stableHashStringify(value)).digest('hex').slice(0, chars);
|
|
215
225
|
}
|