mixdog 0.9.174 → 1.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/README.md +11 -12
- package/package.json +2 -2
- package/scripts/agent-turn-trace-probe.mjs +1 -1
- package/scripts/build-ffmpeg-runtime.sh +16 -0
- package/scripts/build-runtime-linux.sh +8 -2
- package/scripts/build-runtime-macos.sh +8 -2
- package/scripts/computer-task-cost-report.mjs +1 -9
- package/scripts/context-renewal-live-check.mjs +2 -1
- package/scripts/graph-parity.mjs +78 -55
- package/scripts/lib/bench-sandbox.mjs +67 -0
- package/scripts/lib/bench-sandbox.test.mjs +54 -0
- package/scripts/lib/coverage.mjs +2 -4
- package/scripts/lib/run-node-tests.mjs +24 -1
- package/scripts/lib/session-bench-fmt.mjs +65 -0
- package/scripts/lib/session-bench-render.mjs +394 -0
- package/scripts/lib/smoke-loop-shared.mjs +28 -0
- package/scripts/lib/smoke-loop-shared.test.mjs +22 -0
- package/scripts/lib/trace-row.mjs +40 -0
- package/scripts/lib/trace-row.test.mjs +47 -0
- package/scripts/lib/trace-stats.mjs +7 -0
- package/scripts/lib/trace-stats.test.mjs +7 -1
- package/scripts/llm-trace-summary.mjs +2 -44
- package/scripts/memory-chunk-quality.mjs +1 -1
- package/scripts/memory-layer2-check.mjs +1 -1
- package/scripts/pg-memory-diet.mjs +1 -1
- package/scripts/plan-runtime-release-tag.mjs +57 -0
- package/scripts/prepare-native-assets.mjs +1 -1
- package/scripts/provider-contract-test-env.mjs +21 -0
- package/scripts/release-paths.mjs +1 -0
- package/scripts/routing-corpus.mjs +1 -11
- package/scripts/session-diag.mjs +2 -44
- package/scripts/smoke-runtime-negative.sh +7 -1
- package/scripts/test-data-dir.mjs +19 -0
- package/scripts/tidy/sync-engines-manifest.mjs +8 -10
- package/scripts/tool-efficiency-diag.mjs +1 -4
- package/scripts/voice-runtime-config.json +1 -1
- package/src/app.mjs +1 -1
- package/src/defaults/skills/code-tidy/SKILL.md +5 -2
- package/src/defaults/skills/pptx/SKILL.md +1 -1
- package/src/defaults/skills/pptx/references/pictures.md +1 -1
- package/src/defaults/skills/pptx/scripts/review-deck.mjs +13 -4
- package/src/defaults/skills/skill-creator/scripts/validate-skill.mjs +40 -40
- package/src/defaults/skills/xlsx/SKILL.md +1 -0
- package/src/headless-exec.mjs +4 -2
- package/src/headless-role.mjs +81 -68
- package/src/lib/keychain-cjs.cjs +26 -49
- package/src/lib/mixdog-debug.cjs +1 -1
- package/src/lib/rules-builder.cjs +4 -3
- package/src/mixdog-session-runtime.mjs +2 -2
- package/src/repl/slash-commands.mjs +1 -1
- package/src/repl/stream-sink.mjs +1 -1
- package/src/repl/turn-output.mjs +2 -2
- package/src/repl.mjs +1 -1
- package/src/runtime/agent/orchestrator/agent-runtime/agent-dispatch/session-prep.mjs +1 -1
- package/src/runtime/agent/orchestrator/agent-runtime/cache-strategy.mjs +20 -16
- package/src/runtime/agent/orchestrator/agent-runtime/session-builder.mjs +0 -3
- package/src/runtime/agent/orchestrator/agent-trace-format.mjs +23 -22
- package/src/runtime/agent/orchestrator/context/skill-catalog.mjs +2 -2
- package/src/runtime/{shared/llm/index.mjs → agent/orchestrator/maintenance-preset.mjs} +2 -2
- package/src/runtime/agent/orchestrator/mcp/client-config.mjs +2 -1
- package/src/runtime/agent/orchestrator/mcp/client-transport.mjs +7 -36
- package/src/runtime/agent/orchestrator/mcp/client.mjs +28 -2
- package/src/runtime/agent/orchestrator/providers/admission-scheduler.mjs +1 -1
- package/src/runtime/agent/orchestrator/providers/anthropic-api-transport.mjs +6 -1
- package/src/runtime/agent/orchestrator/providers/anthropic-betas.mjs +1 -47
- package/src/runtime/agent/orchestrator/providers/anthropic-effort.mjs +1 -383
- package/src/runtime/agent/orchestrator/providers/anthropic-messages.mjs +2 -59
- package/src/runtime/agent/orchestrator/providers/anthropic-midstream-recovery.mjs +32 -31
- package/src/runtime/agent/orchestrator/providers/anthropic-model-resolve.mjs +2 -2
- package/src/runtime/agent/orchestrator/providers/anthropic-oauth-client-version.mjs +10 -1
- package/src/runtime/agent/orchestrator/providers/anthropic-oauth-credentials.mjs +12 -61
- package/src/runtime/agent/orchestrator/providers/anthropic-oauth-request/gzip-post.mjs +2 -1
- package/src/runtime/agent/orchestrator/providers/anthropic-oauth-request.mjs +2 -0
- package/src/runtime/agent/orchestrator/providers/anthropic-oauth.mjs +30 -67
- package/src/runtime/agent/orchestrator/providers/anthropic-recovery-guards.mjs +9 -12
- package/src/runtime/agent/orchestrator/providers/anthropic-server-fallback.mjs +3 -1
- package/src/runtime/agent/orchestrator/providers/anthropic-sse-turn/leak-guard.mjs +1 -1
- package/src/runtime/agent/orchestrator/providers/anthropic-sse-turn/turn-events/content-block-stop.mjs +20 -12
- package/src/runtime/agent/orchestrator/providers/anthropic-sse-turn/turn-events.mjs +12 -2
- package/src/runtime/agent/orchestrator/providers/anthropic-sse-turn/turn-outcome.mjs +4 -3
- package/src/runtime/agent/orchestrator/providers/anthropic-sse-turn.mjs +5 -1
- package/src/runtime/agent/orchestrator/providers/anthropic-sse-watchdogs.mjs +18 -10
- package/src/runtime/agent/orchestrator/providers/anthropic-sse.mjs +20 -16
- package/src/runtime/agent/orchestrator/providers/anthropic-thinking-contract.mjs +1 -26
- package/src/runtime/agent/orchestrator/providers/anthropic.mjs +9 -13
- package/src/runtime/agent/orchestrator/providers/antigravity-oauth-catalog.mjs +8 -3
- package/src/runtime/agent/orchestrator/providers/antigravity-oauth-login.mjs +4 -8
- package/src/runtime/agent/orchestrator/providers/antigravity-oauth-tokens.mjs +21 -30
- package/src/runtime/agent/orchestrator/providers/antigravity-response.mjs +1 -1
- package/src/runtime/agent/orchestrator/providers/antigravity-stream.mjs +4 -2
- package/src/runtime/agent/orchestrator/providers/api-usage.mjs +10 -8
- package/src/runtime/agent/orchestrator/providers/cursor-auth.mjs +13 -10
- package/src/runtime/agent/orchestrator/providers/cursor-client-version.mjs +29 -0
- package/src/runtime/agent/orchestrator/providers/cursor-wire-guards.mjs +0 -1
- package/src/runtime/agent/orchestrator/providers/cursor-wire-protobuf.mjs +10 -26
- package/src/runtime/agent/orchestrator/providers/cursor-wire-stream-bridge.mjs +2 -3
- package/src/runtime/agent/orchestrator/providers/cursor-wire-transport.mjs +7 -3
- package/src/runtime/agent/orchestrator/providers/cursor-wire.mjs +9 -15
- package/src/runtime/agent/orchestrator/providers/cursor.mjs +31 -5
- package/src/runtime/agent/orchestrator/providers/gemini-cache-policy.mjs +1 -2
- package/src/runtime/agent/orchestrator/providers/gemini-cache.mjs +1 -4
- package/src/runtime/agent/orchestrator/providers/gemini-response.mjs +2 -2
- package/src/runtime/agent/orchestrator/providers/gemini-schema.mjs +48 -46
- package/src/runtime/agent/orchestrator/providers/gemini-stream.mjs +18 -19
- package/src/runtime/agent/orchestrator/providers/gemini.mjs +3 -26
- package/src/runtime/agent/orchestrator/providers/grok-client-version.mjs +41 -0
- package/src/runtime/agent/orchestrator/providers/grok-oauth-login.mjs +5 -19
- package/src/runtime/agent/orchestrator/providers/grok-oauth-tokens.mjs +16 -83
- package/src/runtime/agent/orchestrator/providers/grok-oauth.mjs +26 -8
- package/src/runtime/agent/orchestrator/providers/lib/anthropic-models.mjs +8 -0
- package/src/runtime/agent/orchestrator/providers/lib/anthropic-request-utils.mjs +30 -1
- package/src/runtime/agent/orchestrator/providers/lib/anthropic-stream-labels.mjs +6 -0
- package/src/runtime/agent/orchestrator/providers/lib/anthropic-system-blocks.mjs +17 -0
- package/src/runtime/agent/orchestrator/providers/{anthropic-leaked-toolcall.mjs → lib/leaked-toolcall.mjs} +7 -7
- package/src/runtime/agent/orchestrator/providers/lib/oauth-token-utils.mjs +44 -0
- package/src/runtime/agent/orchestrator/providers/lib/send-callbacks.mjs +12 -0
- package/src/runtime/agent/orchestrator/providers/lib/sse-framing.mjs +9 -8
- package/src/runtime/agent/orchestrator/providers/lib/transport-fallback-trace.mjs +25 -0
- package/src/runtime/agent/orchestrator/providers/model-catalog-projection.mjs +1 -181
- package/src/runtime/agent/orchestrator/providers/model-catalog.mjs +1 -796
- package/src/runtime/agent/orchestrator/providers/model-pricing-rates.mjs +1 -71
- package/src/runtime/agent/orchestrator/providers/npm-cli-version.mjs +87 -0
- package/src/runtime/agent/orchestrator/providers/oauth-usage.mjs +4 -5
- package/src/runtime/agent/orchestrator/providers/openai-codex-metadata.mjs +4 -5
- package/src/runtime/agent/orchestrator/providers/openai-compat-chat-send.mjs +2 -21
- package/src/runtime/agent/orchestrator/providers/openai-compat-chat-stream/stream-result.mjs +1 -1
- package/src/runtime/agent/orchestrator/providers/openai-compat-chat-stream/stream-state.mjs +2 -3
- package/src/runtime/agent/orchestrator/providers/openai-compat-chat-stream/tool-call-acc.mjs +1 -2
- package/src/runtime/agent/orchestrator/providers/openai-compat-options.mjs +4 -8
- package/src/runtime/agent/orchestrator/providers/openai-compat-response-normalization.mjs +45 -32
- package/src/runtime/agent/orchestrator/providers/openai-compat-responses-events.mjs +2 -2
- package/src/runtime/agent/orchestrator/providers/openai-compat-responses-state.mjs +2 -2
- package/src/runtime/agent/orchestrator/providers/openai-compat-responses.mjs +6 -12
- package/src/runtime/agent/orchestrator/providers/openai-compat-stream-common.mjs +2 -2
- package/src/runtime/agent/orchestrator/providers/openai-compat-trace.mjs +2 -2
- package/src/runtime/agent/orchestrator/providers/openai-compat-wire.mjs +14 -22
- package/src/runtime/agent/orchestrator/providers/openai-compat-xai-send.mjs +25 -34
- package/src/runtime/agent/orchestrator/providers/openai-compat-xai.mjs +14 -14
- package/src/runtime/agent/orchestrator/providers/openai-http-sse-request.mjs +3 -1
- package/src/runtime/agent/orchestrator/providers/openai-http-sse-response-state/response-events/terminal-frames.mjs +2 -2
- package/src/runtime/agent/orchestrator/providers/openai-http-sse-response-state/response-items.mjs +1 -1
- package/src/runtime/agent/orchestrator/providers/openai-http-sse-response-state/response-outcome.mjs +2 -13
- package/src/runtime/agent/orchestrator/providers/openai-http-sse-response-state/response-state.mjs +1 -1
- package/src/runtime/agent/orchestrator/providers/openai-http-sse-response-state/text-relay.mjs +1 -1
- package/src/runtime/agent/orchestrator/providers/openai-oauth-login.mjs +2 -2
- package/src/runtime/agent/orchestrator/providers/openai-oauth-tokens.mjs +2 -44
- package/src/runtime/agent/orchestrator/providers/openai-oauth-ws.mjs +2 -16
- package/src/runtime/agent/orchestrator/providers/openai-oauth.mjs +6 -5
- package/src/runtime/agent/orchestrator/providers/openai-responses-input.mjs +4 -1
- package/src/runtime/agent/orchestrator/providers/openai-ws-pool.mjs +3 -2
- package/src/runtime/agent/orchestrator/providers/openai-ws-response-state/tool-calls.mjs +2 -2
- package/src/runtime/agent/orchestrator/providers/openai-ws-text-relay.mjs +1 -1
- package/src/runtime/agent/orchestrator/providers/openai-ws.mjs +6 -4
- package/src/runtime/agent/orchestrator/providers/opencode-go-usage.mjs +2 -1
- package/src/runtime/agent/orchestrator/providers/opencode-go.mjs +2 -2
- package/src/runtime/agent/orchestrator/providers/provider-catalog-cache.mjs +1 -130
- package/src/runtime/agent/orchestrator/providers/registry.mjs +20 -16
- package/src/runtime/agent/orchestrator/providers/retry-classification.mjs +21 -20
- package/src/runtime/agent/orchestrator/providers/retry-executor.mjs +17 -17
- package/src/runtime/agent/orchestrator/runtime-core/builtin-features.mjs +193 -0
- package/src/runtime/agent/orchestrator/runtime-core/config-helpers.mjs +421 -0
- package/src/{session-runtime → runtime/agent/orchestrator/runtime-core}/context-inspection.mjs +17 -17
- package/src/{session-runtime → runtime/agent/orchestrator/runtime-core}/context-status-inspection.mjs +1 -1
- package/src/{session-runtime → runtime/agent/orchestrator/runtime-core}/context-status-shape.mjs +3 -3
- package/src/{session-runtime → runtime/agent/orchestrator/runtime-core}/context-status.mjs +1 -1
- package/src/runtime/agent/orchestrator/runtime-core/deferred-tool-delta.mjs +101 -0
- package/src/runtime/agent/orchestrator/runtime-core/effort.mjs +145 -0
- package/src/{session-runtime → runtime/agent/orchestrator/runtime-core}/extension-scopes.mjs +5 -5
- package/src/{session-runtime → runtime/agent/orchestrator/runtime-core}/fs-utils.mjs +1 -1
- package/src/{session-runtime → runtime/agent/orchestrator/runtime-core}/goal-control.mjs +2 -2
- package/src/{session-runtime → runtime/agent/orchestrator/runtime-core}/goal-mutations.mjs +2 -2
- package/src/{session-runtime → runtime/agent/orchestrator/runtime-core}/goal-reminder.mjs +1 -1
- package/src/runtime/agent/orchestrator/runtime-core/goal-state.mjs +326 -0
- package/src/{session-runtime → runtime/agent/orchestrator/runtime-core}/goal-storage.mjs +2 -2
- package/src/runtime/agent/orchestrator/runtime-core/goal-tasks.mjs +148 -0
- package/src/{session-runtime → runtime/agent/orchestrator/runtime-core}/goal-title.mjs +2 -2
- package/src/runtime/agent/orchestrator/runtime-core/goal-tool-defs.mjs +140 -0
- package/src/{session-runtime → runtime/agent/orchestrator/runtime-core}/goal-turns.mjs +1 -1
- package/src/runtime/agent/orchestrator/runtime-core/model-capabilities.mjs +140 -0
- package/src/{session-runtime → runtime/agent/orchestrator/runtime-core}/orchestration.mjs +1 -1
- package/src/{session-runtime → runtime/agent/orchestrator/runtime-core}/plugin-mcp.mjs +2 -2
- package/src/runtime/agent/orchestrator/runtime-core/session-id.mjs +2 -0
- package/src/{session-runtime → runtime/agent/orchestrator/runtime-core}/session-route-policy.mjs +2 -2
- package/src/{session-runtime → runtime/agent/orchestrator/runtime-core}/session-text.mjs +3 -3
- package/src/{session-runtime → runtime/agent/orchestrator/runtime-core}/session-title.mjs +1 -2
- package/src/{session-runtime → runtime/agent/orchestrator/runtime-core}/skill-tool-loading.mjs +1 -1
- package/src/{session-runtime → runtime/agent/orchestrator/runtime-core}/tool-catalog-schema.mjs +1 -1
- package/src/runtime/agent/orchestrator/runtime-core/tool-catalog.mjs +747 -0
- package/src/runtime/agent/orchestrator/runtime-core/tool-defs.mjs +149 -0
- package/src/{session-runtime → runtime/agent/orchestrator/runtime-core}/workflow/agents.mjs +11 -7
- package/src/{session-runtime → runtime/agent/orchestrator/runtime-core}/workflow/context.mjs +6 -4
- package/src/{session-runtime → runtime/agent/orchestrator/runtime-core}/workflow/packs.mjs +2 -3
- package/src/{session-runtime → runtime/agent/orchestrator/runtime-core}/workflow-ids.mjs +1 -1
- package/src/runtime/agent/orchestrator/runtime-core/workflow.mjs +255 -0
- package/src/runtime/agent/orchestrator/session/agent-loop.mjs +3 -4
- package/src/runtime/agent/orchestrator/session/cache/prefetch-cache.mjs +2 -4
- package/src/runtime/agent/orchestrator/session/cache/read-cache.mjs +1 -1
- package/src/runtime/agent/orchestrator/session/context-identity-writer.mjs +162 -0
- package/src/runtime/agent/orchestrator/session/context-tool-pairs.mjs +2 -2
- package/src/runtime/agent/orchestrator/session/context-tool-schema.mjs +87 -0
- package/src/runtime/agent/orchestrator/session/context-utils.mjs +3 -245
- package/src/runtime/agent/orchestrator/session/eager-dispatch/admission.mjs +2 -3
- package/src/runtime/agent/orchestrator/session/eager-dispatch/mutation-paths.mjs +54 -0
- package/src/runtime/agent/orchestrator/session/eager-dispatch.mjs +1 -1
- package/src/runtime/agent/orchestrator/session/lifecycle-scan.mjs +1 -16
- package/src/runtime/agent/orchestrator/session/loop/arg-schema-coerce.mjs +2 -2
- package/src/runtime/agent/orchestrator/session/loop/compact-policy.mjs +13 -1
- package/src/runtime/agent/orchestrator/session/loop/completion-guards.mjs +3 -3
- package/src/runtime/agent/orchestrator/session/loop/deferred-call-through.mjs +4 -4
- package/src/runtime/agent/orchestrator/session/loop/fresh-context.mjs +1 -1
- package/src/runtime/agent/orchestrator/session/loop/loop-state.mjs +2 -2
- package/src/runtime/agent/orchestrator/session/loop/no-tool-turn/continuation.mjs +1 -1
- package/src/runtime/agent/orchestrator/session/loop/pre-dispatch-deny.mjs +2 -3
- package/src/runtime/agent/orchestrator/session/loop/request-boundary.mjs +2 -2
- package/src/runtime/agent/orchestrator/session/loop/send-phase.mjs +6 -3
- package/src/runtime/agent/orchestrator/session/loop/tool-classify.mjs +1 -1
- package/src/runtime/agent/orchestrator/session/loop/tool-exec/call-prep.mjs +3 -2
- package/src/runtime/agent/orchestrator/session/loop/tool-exec/dispatch.mjs +6 -10
- package/src/runtime/agent/orchestrator/session/loop/tool-exec.mjs +2 -2
- package/src/runtime/agent/orchestrator/session/loop/tool-helpers.mjs +1 -1
- package/src/runtime/agent/orchestrator/session/loop.mjs +5 -6
- package/src/runtime/agent/orchestrator/session/manager/ask-turn-commit.mjs +1 -1
- package/src/runtime/agent/orchestrator/session/manager/ask-turn-prepare.mjs +2 -2
- package/src/runtime/agent/orchestrator/session/manager/ask-turn-settle.mjs +2 -2
- package/src/runtime/agent/orchestrator/session/manager/compaction-runner.mjs +5 -5
- package/src/runtime/agent/orchestrator/session/manager/foreign-pending-messages.mjs +40 -64
- package/src/runtime/agent/orchestrator/session/manager/pending-lifecycle-epoch.mjs +2 -2
- package/src/runtime/agent/orchestrator/session/manager/pending-messages.mjs +24 -16
- package/src/runtime/agent/orchestrator/session/manager/pending-persist-queue.mjs +1 -1
- package/src/runtime/agent/orchestrator/session/manager/pending-spool-file.mjs +7 -13
- package/src/runtime/agent/orchestrator/session/manager/pending-spool-path.mjs +17 -2
- package/src/runtime/agent/orchestrator/session/manager/pending-spool-shard.mjs +139 -0
- package/src/runtime/agent/orchestrator/session/manager/pending-spool-sweep.mjs +34 -14
- package/src/runtime/agent/orchestrator/session/manager/prefetch-bridge/file-prefetch.mjs +1 -1
- package/src/runtime/agent/orchestrator/session/manager/prompt-utils.mjs +4 -18
- package/src/runtime/agent/orchestrator/session/manager/runtime-liveness.mjs +1 -1
- package/src/runtime/agent/orchestrator/session/manager/session-close.mjs +10 -18
- package/src/runtime/agent/orchestrator/session/manager/session-lifecycle.mjs +1 -1
- package/src/runtime/agent/orchestrator/session/manager/session-record.mjs +2 -2
- package/src/runtime/agent/orchestrator/session/manager/session-tool-surface.mjs +1 -1
- package/src/runtime/agent/orchestrator/session/manager/tool-resolution.mjs +2 -2
- package/src/runtime/agent/orchestrator/session/manager/turn-checkpoint.mjs +6 -10
- package/src/runtime/agent/orchestrator/session/manager.mjs +1 -2
- package/src/runtime/agent/orchestrator/session/pre-send-compact.mjs +11 -6
- package/src/runtime/agent/orchestrator/session/result-classification.mjs +1 -1
- package/src/runtime/agent/orchestrator/session/send-instrumentation.mjs +194 -0
- package/src/runtime/agent/orchestrator/session/send-with-recovery.mjs +6 -198
- package/src/runtime/agent/orchestrator/session/store/canonical-reader.mjs +7 -7
- package/src/runtime/agent/orchestrator/session/store/fs-probe.mjs +0 -19
- package/src/runtime/agent/orchestrator/session/store/lifecycle-barriers.mjs +15 -8
- package/src/runtime/agent/orchestrator/session/store/listing.mjs +18 -29
- package/src/runtime/agent/orchestrator/session/store/load-cache.mjs +6 -36
- package/src/runtime/agent/orchestrator/session/store/save-delta.mjs +148 -0
- package/src/runtime/agent/orchestrator/session/store/save-fault.mjs +3 -3
- package/src/runtime/agent/orchestrator/session/store/save-worker.mjs +15 -142
- package/src/runtime/agent/orchestrator/session/store/summary-cache.mjs +3 -3
- package/src/runtime/agent/orchestrator/session/store/sweep/stale-sweep.mjs +4 -2
- package/src/runtime/agent/orchestrator/session/store/sweep/sweep-finish.mjs +1 -1
- package/src/runtime/agent/orchestrator/session/store/sweep/sweep-row.mjs +3 -2
- package/src/runtime/agent/orchestrator/session/store/write-admission.mjs +9 -22
- package/src/runtime/agent/orchestrator/session/store-agent-worker-rows.mjs +14 -6
- package/src/runtime/agent/orchestrator/session/store-summary-index.mjs +200 -52
- package/src/runtime/agent/orchestrator/session/store-summary-log.mjs +81 -0
- package/src/runtime/agent/orchestrator/session/store-summary-reader.mjs +38 -4
- package/src/runtime/agent/orchestrator/session/store-transcript-cache.mjs +5 -2
- package/src/runtime/agent/orchestrator/session/store-transcript-projection.mjs +3 -5
- package/src/runtime/agent/orchestrator/session/store-transcript-worker.mjs +54 -0
- package/src/runtime/agent/orchestrator/session/store.mjs +5 -9
- package/src/runtime/agent/orchestrator/session/tool-batch/execute-call.mjs +19 -8
- package/src/runtime/agent/orchestrator/session/tool-batch/flush.mjs +1 -1
- package/src/runtime/agent/orchestrator/session/tool-batch/pre-dispatch.mjs +2 -2
- package/src/runtime/agent/orchestrator/session/tool-batch/record-outcome.mjs +2 -1
- package/src/runtime/agent/orchestrator/session/transcript-restore/agent-envelope.mjs +489 -0
- package/src/runtime/agent/orchestrator/session/transcript-restore/restore.mjs +419 -0
- package/src/runtime/agent/orchestrator/session/transcript-restore/tool-result-status.mjs +358 -0
- package/src/runtime/agent/orchestrator/session/transcript-restore/tool-result-text.mjs +157 -0
- package/src/runtime/agent/orchestrator/tools/bash-policy-scan.mjs +2 -3
- package/src/runtime/agent/orchestrator/tools/builtin/arg-guard.mjs +32 -11
- package/src/runtime/agent/orchestrator/tools/builtin/atomic-write.mjs +1 -31
- package/src/runtime/agent/orchestrator/tools/builtin/bash-tool/benign-exit.mjs +7 -3
- package/src/runtime/agent/orchestrator/tools/builtin/bash-tool/deadline-plan.mjs +11 -3
- package/src/runtime/agent/orchestrator/tools/builtin/bash-tool/spawn-env.mjs +4 -0
- package/src/runtime/agent/orchestrator/tools/builtin/bash-tool.mjs +13 -7
- package/src/runtime/agent/orchestrator/tools/builtin/binary-file.mjs +6 -3
- package/src/runtime/agent/orchestrator/tools/builtin/builtin-tools.mjs +11 -5
- package/src/runtime/agent/orchestrator/tools/builtin/device-paths.mjs +1 -206
- package/src/runtime/agent/orchestrator/tools/builtin/find-files-tool.mjs +1 -1
- package/src/runtime/agent/orchestrator/tools/builtin/git-command-tool.mjs +39 -3
- package/src/runtime/agent/orchestrator/tools/builtin/lib/grep-path-fanout.mjs +5 -7
- package/src/runtime/agent/orchestrator/tools/builtin/lib/grep-request.mjs +7 -25
- package/src/runtime/agent/orchestrator/tools/builtin/lib/list-helpers.mjs +27 -1
- package/src/runtime/agent/orchestrator/tools/builtin/lib/search-input-helpers.mjs +37 -0
- package/src/runtime/agent/orchestrator/tools/builtin/lib/shell-job-insights.mjs +1 -1
- package/src/runtime/agent/orchestrator/tools/builtin/list-tool.mjs +28 -18
- package/src/runtime/agent/orchestrator/tools/builtin/native-search-client.mjs +6 -10
- package/src/runtime/agent/orchestrator/tools/builtin/path-utils.mjs +15 -17
- package/src/runtime/agent/orchestrator/tools/builtin/read-formatting.mjs +3 -3
- package/src/runtime/agent/orchestrator/tools/builtin/read-image-resize.mjs +1 -399
- package/src/runtime/agent/orchestrator/tools/builtin/read-line-collector.mjs +3 -2
- package/src/runtime/agent/orchestrator/tools/builtin/read-office-files.mjs +8 -15
- package/src/runtime/agent/orchestrator/tools/builtin/read-range-index.mjs +5 -8
- package/src/runtime/agent/orchestrator/tools/builtin/read-single-render.mjs +3 -2
- package/src/runtime/agent/orchestrator/tools/builtin/read-source-windows.mjs +2 -2
- package/src/runtime/agent/orchestrator/tools/builtin/read-streaming.mjs +6 -5
- package/src/runtime/agent/orchestrator/tools/builtin/read-tool/batch-dispatch.mjs +50 -5
- package/src/runtime/agent/orchestrator/tools/builtin/read-tool/batch-render.mjs +1 -1
- package/src/runtime/agent/orchestrator/tools/builtin/read-tool/batch-snapshot.mjs +2 -5
- package/src/runtime/agent/orchestrator/tools/builtin/read-tool.mjs +11 -1
- package/src/runtime/agent/orchestrator/tools/builtin/runtime-capabilities.mjs +1 -1
- package/src/runtime/agent/orchestrator/tools/builtin/search-glob-tool.mjs +3 -35
- package/src/runtime/agent/orchestrator/tools/builtin/search-grep-tool.mjs +0 -12
- package/src/runtime/agent/orchestrator/tools/builtin/shell-analysis.mjs +50 -0
- package/src/runtime/agent/orchestrator/tools/builtin/shell-jobs.mjs +9 -26
- package/src/runtime/agent/orchestrator/tools/builtin/shell-lossless-compact.mjs +2 -1
- package/src/runtime/agent/orchestrator/tools/builtin/shell-output.mjs +6 -5
- package/src/runtime/agent/orchestrator/tools/builtin/snapshot-helpers.mjs +8 -3
- package/src/runtime/agent/orchestrator/tools/builtin/snapshot-store.mjs +6 -14
- package/src/runtime/agent/orchestrator/tools/builtin/snapshot-validation.mjs +3 -9
- package/src/runtime/agent/orchestrator/tools/builtin/tool-output-limit.mjs +1 -60
- package/src/runtime/agent/orchestrator/tools/builtin.mjs +10 -32
- package/src/runtime/agent/orchestrator/tools/code-graph/disk-cache.mjs +2 -2
- package/src/runtime/agent/orchestrator/tools/code-graph/modes/calls.mjs +3 -3
- package/src/runtime/agent/orchestrator/tools/code-graph/project-root.mjs +3 -7
- package/src/runtime/agent/orchestrator/tools/code-graph/search-references.mjs +15 -10
- package/src/runtime/agent/orchestrator/tools/code-graph/search.mjs +6 -10
- package/src/runtime/agent/orchestrator/tools/code-graph/symbol-index.mjs +4 -0
- package/src/runtime/agent/orchestrator/tools/code-graph/text-columns.mjs +3 -3
- package/src/runtime/agent/orchestrator/tools/code-graph/trusted-roots.mjs +3 -7
- package/src/runtime/agent/orchestrator/tools/code-graph-state.mjs +1 -84
- package/src/runtime/agent/orchestrator/tools/destructive-warning.mjs +11 -11
- package/src/runtime/agent/orchestrator/tools/graph-manifest.json +13 -13
- package/src/runtime/agent/orchestrator/tools/io-trace.mjs +28 -0
- package/src/runtime/agent/orchestrator/tools/lib/shell-run-spawn.mjs +38 -5
- package/src/runtime/agent/orchestrator/tools/lib/shell-warm-standby.mjs +10 -4
- package/src/runtime/agent/orchestrator/tools/patch/apply-patch/codex-batch.mjs +6 -26
- package/src/runtime/agent/orchestrator/tools/patch/apply-patch/request.mjs +0 -3
- package/src/runtime/agent/orchestrator/tools/patch/dispatch/native-report.mjs +2 -1
- package/src/runtime/agent/orchestrator/tools/patch/dispatch.mjs +3 -10
- package/src/runtime/agent/orchestrator/tools/patch/matcher.mjs +1 -1
- package/src/runtime/agent/orchestrator/tools/patch/mutation-output.mjs +6 -19
- package/src/runtime/agent/orchestrator/tools/patch/native-server.mjs +5 -15
- package/src/runtime/agent/orchestrator/tools/patch/orchestrator.mjs +1 -3
- package/src/runtime/agent/orchestrator/tools/patch/paths.mjs +4 -0
- package/src/runtime/agent/orchestrator/tools/patch/sequence/run.mjs +1 -3
- package/src/runtime/agent/orchestrator/tools/patch/sequence/units.mjs +4 -10
- package/src/runtime/agent/orchestrator/tools/patch/sequence.mjs +1 -2
- package/src/runtime/agent/orchestrator/tools/patch/v4a-convert.mjs +5 -11
- package/src/runtime/agent/orchestrator/tools/patch-binary-fetcher.mjs +1 -2
- package/src/runtime/agent/orchestrator/tools/patch-manifest-path.mjs +3 -0
- package/src/runtime/agent/orchestrator/tools/patch-manifest.json +12 -12
- package/src/runtime/agent/orchestrator/tools/shell-command.mjs +87 -12
- package/src/runtime/agent/orchestrator/tools/shell-exec-output.mjs +6 -3
- package/src/runtime/agent/orchestrator/tools/shell-exec-policy.mjs +1 -1
- package/src/runtime/agent/orchestrator/tools/shell-policy.mjs +15 -25
- package/src/runtime/agent/orchestrator/tools/spawn-manifest.json +13 -13
- package/src/runtime/{shared/llm → agent/orchestrator}/usage-log.mjs +1 -1
- package/src/runtime/attachments/pdf-extract.mjs +32 -29
- package/src/runtime/attachments/store.mjs +2 -1
- package/src/runtime/browser-bridge/browser-action-contract.d.mts +0 -2
- package/src/runtime/browser-bridge/client.mjs +30 -9
- package/src/runtime/channels/data/voice-runtime-manifest.json +21 -21
- package/src/runtime/channels/lib/config.mjs +4 -4
- package/src/runtime/channels/lib/event-pipeline.mjs +3 -3
- package/src/runtime/channels/lib/event-queue.mjs +1 -0
- package/src/runtime/channels/lib/executor.mjs +3 -25
- package/src/runtime/channels/lib/runtime-paths.mjs +36 -41
- package/src/runtime/channels/lib/scheduler.mjs +28 -44
- package/src/runtime/{shared → channels/lib}/schedules-db.mjs +3 -3
- package/src/runtime/channels/lib/tool-dispatch.mjs +3 -8
- package/src/runtime/channels/lib/voice-runtime-fetcher.mjs +19 -23
- package/src/runtime/channels/lib/voice-transcription.mjs +13 -9
- package/src/runtime/channels/lib/webhook/log.mjs +2 -29
- package/src/runtime/channels/lib/webhook/request-handler.mjs +4 -5
- package/src/runtime/channels/lib/webhook/session-dispatch.mjs +8 -12
- package/src/runtime/channels/lib/webhook/signature.mjs +15 -19
- package/src/runtime/channels/lib/webhook/untrusted-fence.mjs +9 -0
- package/src/runtime/channels/lib/webhook.mjs +1 -1
- package/src/runtime/{shared → channels/lib}/webhooks-db.mjs +3 -3
- package/src/runtime/channels/lib/whisper-server.mjs +3 -2
- package/src/runtime/channels/lib/worker-bootstrap.mjs +19 -21
- package/src/runtime/channels/lib/worker-main.mjs +49 -58
- package/src/runtime/computer-bridge/client.mjs +7 -10
- package/src/runtime/computer-bridge/core-actions.mjs +1 -1
- package/src/runtime/computer-bridge/limits.d.mts +0 -1
- package/src/runtime/github/client.mjs +11 -6
- package/src/runtime/github/commands.mjs +4 -2
- package/src/runtime/github/contract.mjs +3 -1
- package/src/runtime/local-provider/hugging-face.mjs +3 -3
- package/src/runtime/local-provider/registered-models.mjs +3 -1
- package/src/runtime/local-provider/request-queue.mjs +24 -29
- package/src/runtime/local-provider/serial-chain.mjs +19 -0
- package/src/runtime/local-provider/server-process.mjs +2 -10
- package/src/runtime/media/adapters/antigravity-image.mjs +2 -2
- package/src/runtime/media/adapters/codex-image.mjs +2 -2
- package/src/runtime/media/adapters/gemini-image.mjs +2 -1
- package/src/runtime/media/adapters/gemini-video.mjs +3 -7
- package/src/runtime/media/adapters/xai-media.mjs +3 -7
- package/src/runtime/media/bounded-signal.mjs +13 -0
- package/src/runtime/media/store.mjs +9 -3
- package/src/runtime/memory/data/runtime-manifest.json +11 -11
- package/src/runtime/memory/index.mjs +6 -21
- package/src/runtime/memory/lib/core-memory-file.mjs +1 -1
- package/src/runtime/memory/lib/cycle-scheduler/backlog-probe.mjs +2 -1
- package/src/runtime/memory/lib/cycle1/cycle1-plan.mjs +1 -1
- package/src/runtime/memory/lib/embedding-idle-lease.mjs +18 -0
- package/src/runtime/memory/lib/embedding-provider.mjs +13 -0
- package/src/runtime/memory/lib/embedding-worker.mjs +12 -1
- package/src/runtime/memory/lib/http-router/ingest-routes.mjs +1 -1
- package/src/runtime/memory/lib/http-router/session-routes.mjs +1 -1
- package/src/runtime/memory/lib/ingest/transcript-discovery.mjs +1 -1
- package/src/runtime/memory/lib/memory-action-handlers/manage-actions.mjs +1 -1
- package/src/runtime/memory/lib/memory-cycle1.mjs +24 -1
- package/src/runtime/memory/lib/memory-cycle2-quarantine.mjs +99 -0
- package/src/runtime/memory/lib/memory-cycle2-review.mjs +8 -2
- package/src/runtime/memory/lib/memory-cycle2.mjs +49 -9
- package/src/runtime/memory/lib/memory-embed.mjs +3 -2
- package/src/runtime/memory/lib/memory-extraction.mjs +1 -2
- package/src/runtime/memory/lib/memory-fingerprint.mjs +1 -1
- package/src/runtime/memory/lib/memory-ops-policy.mjs +18 -2
- package/src/runtime/memory/lib/memory-retrievers.mjs +2 -2
- package/src/runtime/memory/lib/memory-text-utils.mjs +1 -1
- package/src/runtime/memory/lib/pg/adapter.mjs +3 -3
- package/src/runtime/memory/lib/pg/process.mjs +2 -2
- package/src/runtime/memory/lib/pg/supervisor.mjs +1 -2
- package/src/runtime/memory/lib/query-ranking.mjs +2 -2
- package/src/runtime/memory/lib/query-search-plan.mjs +1 -1
- package/src/runtime/memory/lib/recall-format.mjs +3 -4
- package/src/runtime/memory/lib/runtime-fetcher.mjs +94 -23
- package/src/runtime/memory/lib/session-ingest-runtime.mjs +1 -1
- package/src/runtime/memory/lib/trace-store.mjs +6 -2
- package/src/runtime/office/authoring/pptx-author-action.mjs +8 -3
- package/src/runtime/office/authoring/pptx-brief.mjs +3 -3
- package/src/runtime/office/authoring/pptx-html-build.mjs +109 -37
- package/src/runtime/office/authoring/pptx-html-geometry.mjs +188 -46
- package/src/runtime/office/authoring/pptx-html-measure.mjs +60 -21
- package/src/runtime/office/authoring/pptx-html-runner.mjs +83 -29
- package/src/runtime/office/authoring/pptx-script-normalize.mjs +156 -16
- package/src/runtime/office/bench/polish-benchmark.mjs +204 -201
- package/src/runtime/office/bench/quality-live-benchmark.mjs +8 -4
- package/src/runtime/office/capabilities-catalog.mjs +12 -1
- package/src/runtime/office/capabilities-signatures.mjs +31 -11
- package/src/runtime/office/capabilities.mjs +39 -20
- package/src/runtime/office/com/com-adapter.mjs +16 -14
- package/src/runtime/office/com/office-com-host.ps1 +118 -140
- package/src/runtime/office/core/excel-snapshot-normalize.mjs +149 -0
- package/src/runtime/office/core/office-actions-batch.mjs +4 -7
- package/src/runtime/office/core/office-actions-inspect.mjs +17 -14
- package/src/runtime/office/core/office-actions-open.mjs +1 -6
- package/src/runtime/office/core/office-core.mjs +107 -49
- package/src/runtime/office/core/office-finalize/review-stage.mjs +4 -1
- package/src/runtime/office/core/office-qa/design-review-stage.mjs +2 -9
- package/src/runtime/office/core/office-qa/review-assembly.mjs +9 -7
- package/src/runtime/office/core/office-sessions.mjs +10 -149
- package/src/runtime/office/design/composition-system.mjs +5 -10
- package/src/runtime/office/design/design-system.mjs +1 -2
- package/src/runtime/office/design/docx/design-docx/section.mjs +1 -1
- package/src/runtime/office/design/docx/design-docx-components.mjs +2 -1
- package/src/runtime/office/design/docx/design-docx.mjs +2 -2
- package/src/runtime/office/design/xlsx/design-xlsx.mjs +6 -2
- package/src/runtime/office/pdf/pdf-analysis.mjs +39 -32
- package/src/runtime/office/pdf/pdf-batch-content.mjs +1 -1
- package/src/runtime/office/pdf/pdf-writer.mjs +26 -22
- package/src/runtime/office/portable/docx-tracked-edits.mjs +6 -6
- package/src/runtime/office/portable/font-provisioner.mjs +37 -11
- package/src/runtime/office/portable/portable-cells.mjs +2 -6
- package/src/runtime/office/portable/portable-chart.mjs +6 -6
- package/src/runtime/office/portable/portable-docx-edits.mjs +4 -9
- package/src/runtime/office/portable/portable-docx-operations.mjs +16 -13
- package/src/runtime/office/portable/portable-docx-parts.mjs +7 -2
- package/src/runtime/office/portable/portable-docx-xml.mjs +36 -28
- package/src/runtime/office/portable/portable-opc.mjs +11 -13
- package/src/runtime/office/portable/portable-package.mjs +3 -4
- package/src/runtime/office/portable/portable-pivot.mjs +7 -3
- package/src/runtime/office/portable/portable-pptx-charts.mjs +59 -42
- package/src/runtime/office/portable/portable-pptx-core.mjs +14 -4
- package/src/runtime/office/portable/portable-pptx-package.mjs +5 -4
- package/src/runtime/office/portable/portable-pptx-shapes.mjs +25 -8
- package/src/runtime/office/portable/portable-sheet-audits.mjs +4 -8
- package/src/runtime/office/portable/portable-sheet-page.mjs +2 -2
- package/src/runtime/office/portable/portable-sheet-xml.mjs +1 -1
- package/src/runtime/office/portable/portable-snapshot-docx.mjs +2 -3
- package/src/runtime/office/portable/portable-snapshot-pptx.mjs +3 -1
- package/src/runtime/office/portable/portable-soffice.mjs +27 -22
- package/src/runtime/office/portable/portable-validation-package.mjs +1 -2
- package/src/runtime/office/portable/portable-validation.mjs +9 -3
- package/src/runtime/office/portable/portable-xlsx-operations.mjs +2 -49
- package/src/runtime/office/portable/portable-xlsx-pivot-ops.mjs +10 -5
- package/src/runtime/office/portable/portable-xlsx-range-layout.mjs +3 -2
- package/src/runtime/office/portable/portable-xlsx-reference-shift.mjs +189 -98
- package/src/runtime/office/portable/portable-xlsx-sheet-edits.mjs +26 -6
- package/src/runtime/office/portable/portable-xml.mjs +1 -4
- package/src/runtime/office/portable/text-metrics.mjs +14 -17
- package/src/runtime/office/portable/xlsx-contract.mjs +37 -3
- package/src/runtime/office/portable/xlsx-formula-engine.mjs +7 -1
- package/src/runtime/office/quality/assurance-checklist.mjs +1 -1
- package/src/runtime/office/quality/assurance-rendered.mjs +1 -1
- package/src/runtime/office/quality/assurance-structure-pptx.mjs +17 -8
- package/src/runtime/office/quality/assurance-structure.mjs +0 -2
- package/src/runtime/office/quality/design-aesthetics.mjs +2 -9
- package/src/runtime/office/quality/design-deck-diversity.mjs +2 -9
- package/src/runtime/office/quality/design-review.mjs +3 -3
- package/src/runtime/office/quality/pptx-slide-roles.mjs +3 -3
- package/src/runtime/office/shared/line-breaks.mjs +3 -1
- package/src/runtime/office/tool-defs.mjs +2 -2
- package/src/runtime/shared/async-log-appender.mjs +83 -0
- package/src/runtime/shared/automation-presence.mjs +9 -0
- package/src/runtime/shared/buffered-appender.mjs +10 -7
- package/src/runtime/shared/child-spawn-gate.mjs +2 -37
- package/src/runtime/shared/code-graph-state.mjs +84 -0
- package/src/runtime/shared/config.mjs +71 -89
- package/src/runtime/shared/context-inspection.mjs +56 -0
- package/src/runtime/shared/context-measurement.mjs +83 -0
- package/src/runtime/shared/device-paths.mjs +206 -0
- package/src/{standalone → runtime/shared}/fair-call-scheduler/owner-groups.mjs +1 -1
- package/src/runtime/shared/fair-call-scheduler.mjs +198 -0
- package/src/runtime/shared/file-lock.mjs +85 -55
- package/src/runtime/shared/http-request-body.mjs +3 -1
- package/src/runtime/shared/llm/anthropic-betas.mjs +46 -0
- package/src/runtime/shared/llm/anthropic-effort.mjs +378 -0
- package/src/runtime/shared/llm/anthropic-thinking-contract.mjs +29 -0
- package/src/runtime/shared/llm/cost.mjs +19 -10
- package/src/runtime/shared/llm/model-catalog-projection.mjs +182 -0
- package/src/runtime/shared/llm/model-catalog.mjs +799 -0
- package/src/runtime/shared/llm/model-pricing-rates.mjs +78 -0
- package/src/runtime/shared/llm/provider-catalog-cache.mjs +130 -0
- package/src/runtime/shared/llm/usage-accounting.mjs +12 -11
- package/src/runtime/shared/llm/usage-context.mjs +7 -0
- package/src/runtime/shared/llm/usage-ledger-import.mjs +14 -3
- package/src/runtime/shared/llm/usage-ledger-quota.mjs +97 -37
- package/src/runtime/shared/llm/usage-ledger-repair.mjs +3 -1
- package/src/runtime/shared/llm/usage-ledger-rollup.mjs +6 -10
- package/src/runtime/shared/llm/usage-ledger.mjs +6 -7
- package/src/runtime/shared/llm/usage-pricing-refresh.mjs +1 -1
- package/src/runtime/shared/llm/usage-rollup.mjs +0 -1
- package/src/runtime/shared/model-display.mjs +178 -0
- package/src/runtime/shared/notify-trace.mjs +14 -3
- package/src/runtime/shared/owner-fair-gate.mjs +1 -1
- package/src/runtime/shared/pending-json-projection.mjs +17 -0
- package/src/runtime/shared/pristine-execution.mjs +4 -3
- package/src/runtime/shared/process-lifecycle.mjs +18 -7
- package/src/runtime/shared/read-image-resize.mjs +399 -0
- package/src/runtime/shared/schedule-model-ref.mjs +2 -2
- package/src/runtime/shared/staged-update.mjs +7 -36
- package/src/runtime/shared/statusline/ansi.mjs +161 -0
- package/src/{ui → runtime/shared/statusline}/statusline-format.mjs +5 -5
- package/src/{ui → runtime/shared/statusline}/statusline-segments.mjs +54 -50
- package/src/runtime/shared/tool-card-model/background-task.mjs +1 -1
- package/src/runtime/shared/tool-card-model/card-detail.mjs +2 -2
- package/src/runtime/shared/tool-card-model/card-status.mjs +7 -5
- package/src/runtime/shared/tool-card-model/git-result.mjs +10 -0
- package/src/runtime/shared/tool-card-model/terminal-status.mjs +6 -2
- package/src/runtime/shared/tool-card-model.golden-cases.mjs +2 -1
- package/src/runtime/shared/tool-output-limit.mjs +60 -0
- package/src/runtime/shared/tool-primitives.mjs +1 -1
- package/src/runtime/shared/tool-result-summary.mjs +1 -0
- package/src/runtime/shared/tool-status.mjs +35 -2
- package/src/runtime/shared/transcript-metadata.mjs +1 -1
- package/src/runtime/shared/transcript-writer/transcript-file.mjs +1 -2
- package/src/runtime/shared/turn-snapshot-store.mjs +23 -17
- package/src/runtime/shared/turn-worktree-snapshot.mjs +8 -4
- package/src/runtime/shared/update-checker.mjs +1 -3
- package/src/runtime/tidy/apply.mjs +2 -2
- package/src/runtime/tidy/function-length.mjs +63 -0
- package/src/runtime/tidy/report.mjs +6 -3
- package/src/runtime/tidy/runners/shared.mjs +1 -0
- package/src/runtime/tidy/runners/shellcheck.mjs +1 -1
- package/src/runtime/tidy/tool.mjs +10 -3
- package/src/runtime/web-search/index.mjs +6 -17
- package/src/runtime/web-search/lib/cache.mjs +8 -54
- package/src/runtime/web-search/lib/config.mjs +2 -6
- package/src/runtime/web-search/lib/debounced-json-writer.mjs +62 -0
- package/src/runtime/web-search/lib/http-fetch.mjs +24 -112
- package/src/runtime/web-search/lib/package-version.mjs +10 -0
- package/src/runtime/web-search/lib/ssrf-guard.mjs +34 -28
- package/src/runtime/web-search/lib/state.mjs +8 -53
- package/src/runtime/web-search/lib/web-tools.mjs +5 -5
- package/src/session-runtime/agent-tool-routing.mjs +3 -9
- package/src/{runtime/shared → session-runtime}/automation-workflow.mjs +4 -4
- package/src/session-runtime/boot/apis.mjs +4 -5
- package/src/session-runtime/boot/begin.mjs +1 -1
- package/src/session-runtime/boot/config.mjs +2 -2
- package/src/session-runtime/boot/facade.mjs +2 -2
- package/src/session-runtime/boot/infrastructure.mjs +4 -4
- package/src/session-runtime/boot/providers.mjs +6 -6
- package/src/session-runtime/boot/session.mjs +1 -1
- package/src/session-runtime/boot/shared.mjs +5 -7
- package/src/session-runtime/boot/tools.mjs +6 -6
- package/src/session-runtime/bridge-first-use-gate.mjs +1 -1
- package/src/session-runtime/builtin-features.mjs +1 -193
- package/src/session-runtime/channel-config-api.mjs +3 -3
- package/src/session-runtime/config-helpers.mjs +1 -420
- package/src/session-runtime/config-lifecycle.mjs +2 -2
- package/src/session-runtime/cwd-plugins/core-memory-context.mjs +2 -2
- package/src/session-runtime/cwd-plugins/plugin-status.mjs +1 -1
- package/src/session-runtime/deferred-tool-delta.mjs +1 -101
- package/src/session-runtime/effort.mjs +1 -145
- package/src/session-runtime/goal-facade-api.mjs +1 -1
- package/src/session-runtime/goal-state.mjs +1 -325
- package/src/session-runtime/goal-tasks.mjs +1 -137
- package/src/session-runtime/goal-tool-defs.mjs +1 -140
- package/src/session-runtime/hook-payload.mjs +4 -5
- package/src/session-runtime/internal-tool-executor/bridge-tools.mjs +3 -3
- package/src/session-runtime/internal-tool-executor/caller-context.mjs +8 -0
- package/src/session-runtime/internal-tool-executor/feature-tools.mjs +3 -2
- package/src/session-runtime/internal-tool-executor/knowledge-tools.mjs +4 -6
- package/src/session-runtime/internal-tool-executor/workspace-tools.mjs +2 -2
- package/src/session-runtime/internal-tool-executor.mjs +1 -1
- package/src/session-runtime/lifecycle/inheritance.mjs +1 -1
- package/src/session-runtime/lifecycle/session-catalog.mjs +3 -3
- package/src/session-runtime/lifecycle/session-switch/resume.mjs +2 -2
- package/src/session-runtime/lifecycle/session-switch/session-delete.mjs +1 -1
- package/src/session-runtime/lifecycle/session-switch.mjs +1 -1
- package/src/session-runtime/lifecycle/shared.mjs +1 -1
- package/src/session-runtime/mcp-glue/connect.mjs +1 -1
- package/src/session-runtime/mcp-glue/server-catalog.mjs +1 -1
- package/src/session-runtime/mcp-glue/server-input.mjs +1 -1
- package/src/session-runtime/model-capabilities.mjs +1 -140
- package/src/session-runtime/model-recency.mjs +1 -1
- package/src/session-runtime/model-route/route-persist.mjs +2 -2
- package/src/session-runtime/model-route/route-tuning.mjs +3 -3
- package/src/session-runtime/model-route/set-route.mjs +6 -6
- package/src/session-runtime/model-route/web-search-route.mjs +5 -5
- package/src/session-runtime/model-route-api.mjs +1 -1
- package/src/session-runtime/native-web-search/routes.mjs +1 -1
- package/src/session-runtime/native-web-search/tool-shape.mjs +2 -2
- package/src/session-runtime/output-styles.mjs +2 -2
- package/src/session-runtime/prewarm/channel-start.mjs +1 -0
- package/src/session-runtime/provider-auth/accounts.mjs +7 -2
- package/src/session-runtime/provider-auth/login.mjs +1 -1
- package/src/session-runtime/provider-auth-api.mjs +1 -1
- package/src/session-runtime/provider-models/model-meta.mjs +1 -1
- package/src/session-runtime/provider-models/row-hydration.mjs +3 -3
- package/src/session-runtime/provider-usage.mjs +2 -2
- package/src/session-runtime/quick-model-rows/model-meta.mjs +1 -1
- package/src/session-runtime/quick-model-rows/provider-rows.mjs +1 -1
- package/src/session-runtime/quick-model-rows/web-search-rows.mjs +2 -2
- package/src/session-runtime/resource-api.mjs +2 -2
- package/src/session-runtime/resource-mcp-api.mjs +3 -3
- package/src/session-runtime/resource-plugins-api.mjs +3 -3
- package/src/session-runtime/resource-recall-api.mjs +2 -2
- package/src/session-runtime/resource-scope-decorate.mjs +2 -2
- package/src/session-runtime/route-resolution.mjs +3 -3
- package/src/session-runtime/route-state.mjs +4 -4
- package/src/session-runtime/runtime-bootstrap.mjs +1 -1
- package/src/session-runtime/runtime-facade.mjs +1 -1
- package/src/session-runtime/runtime-feature-gates.mjs +2 -2
- package/src/session-runtime/runtime-modules.mjs +3 -3
- package/src/session-runtime/runtime-paths.mjs +6 -2
- package/src/session-runtime/runtime-tool-routing.mjs +2 -2
- package/src/{runtime/shared → session-runtime}/schedule-session-run.mjs +5 -5
- package/src/{standalone → session-runtime/services}/agent-task-status.mjs +1 -1
- package/src/{standalone → session-runtime/services}/agent-tool/close-flow/close-all.mjs +2 -2
- package/src/{standalone → session-runtime/services}/agent-tool/close-flow.mjs +1 -1
- package/src/{standalone → session-runtime/services}/agent-tool/execute.mjs +1 -1
- package/src/{standalone → session-runtime/services}/agent-tool/helpers.mjs +6 -6
- package/src/session-runtime/services/agent-tool/index-write-queue.mjs +209 -0
- package/src/{standalone → session-runtime/services}/agent-tool/job-task-reconcile.mjs +2 -2
- package/src/{standalone → session-runtime/services}/agent-tool/job-views/job-lookup.mjs +5 -1
- package/src/{standalone → session-runtime/services}/agent-tool/job-views/job-render.mjs +1 -1
- package/src/session-runtime/services/agent-tool/job-views/session-progress.mjs +101 -0
- package/src/{standalone → session-runtime/services}/agent-tool/job-views/spawn-meta.mjs +1 -1
- package/src/session-runtime/services/agent-tool/job-views.mjs +59 -0
- package/src/session-runtime/services/agent-tool/lead-worker-index/index-file.mjs +48 -0
- package/src/{standalone → session-runtime/services}/agent-tool/lead-worker-index/row-settlement.mjs +3 -3
- package/src/{standalone → session-runtime/services}/agent-tool/lead-worker-index.mjs +10 -2
- package/src/{standalone → session-runtime/services}/agent-tool/notify/early-completion.mjs +2 -2
- package/src/{standalone → session-runtime/services}/agent-tool/notify.mjs +4 -4
- package/src/{standalone → session-runtime/services}/agent-tool/render.mjs +2 -2
- package/src/{standalone → session-runtime/services}/agent-tool/send-flow.mjs +6 -2
- package/src/{standalone → session-runtime/services}/agent-tool/spawn-flow/job-start.mjs +2 -2
- package/src/{standalone → session-runtime/services}/agent-tool/spawn-flow/spawn-plan.mjs +3 -3
- package/src/{standalone → session-runtime/services}/agent-tool/spawn-flow/spawn-prep.mjs +3 -3
- package/src/{standalone → session-runtime/services}/agent-tool/spawn-flow/spawn-run.mjs +3 -3
- package/src/{standalone → session-runtime/services}/agent-tool/spawn-preset.mjs +1 -1
- package/src/session-runtime/services/agent-tool/tag-registry.mjs +121 -0
- package/src/{standalone → session-runtime/services}/agent-tool/terminal-reaper/reap-timers.mjs +1 -1
- package/src/{standalone → session-runtime/services}/agent-tool/terminal-reaper/scan-admission.mjs +1 -1
- package/src/{standalone → session-runtime/services}/agent-tool/terminal-reaper/stale-rows.mjs +1 -1
- package/src/{standalone → session-runtime/services}/agent-tool/terminal-reaper/tombstones.mjs +5 -2
- package/src/session-runtime/services/agent-tool/tool-def.mjs +60 -0
- package/src/{standalone → session-runtime/services}/agent-tool/turn-review.mjs +1 -1
- package/src/{standalone → session-runtime/services}/agent-tool/worker-index/row-liveness.mjs +1 -1
- package/src/{standalone → session-runtime/services}/agent-tool/worker-index/row-store.mjs +46 -20
- package/src/{standalone → session-runtime/services}/agent-tool/worker-index.mjs +8 -1
- package/src/{standalone → session-runtime/services}/agent-tool/worker-rows.mjs +1 -1
- package/src/session-runtime/services/agent-tool.mjs +151 -0
- package/src/{standalone → session-runtime/services}/agent-watchdog-registry.mjs +1 -1
- package/src/{standalone → session-runtime/services}/channel-admin.mjs +8 -10
- package/src/{standalone → session-runtime/services}/channel-client.mjs +1 -1
- package/src/{standalone → session-runtime/services}/channel-session-router.mjs +1 -1
- package/src/{standalone → session-runtime/services}/channel-worker/client-heartbeat.mjs +1 -1
- package/src/{standalone → session-runtime/services}/channel-worker/daemon-attach.mjs +1 -1
- package/src/{standalone → session-runtime/services}/channel-worker/daemon-spawn.mjs +5 -5
- package/src/session-runtime/services/channel-worker.mjs +140 -0
- package/src/session-runtime/services/daemon-crash-capture/daemon-exit-record.mjs +189 -0
- package/src/{standalone → session-runtime/services}/daemon-crash-capture/retention.mjs +1 -1
- package/src/{standalone → session-runtime/services}/daemon-crash-capture/spawn-capture.mjs +12 -1
- package/src/{standalone → session-runtime/services}/daemon-crash-capture.mjs +6 -0
- package/src/{standalone → session-runtime/services}/hook-bus/command-handler.mjs +1 -1
- package/src/{standalone → session-runtime/services}/hook-bus/event-runner.mjs +1 -1
- package/src/{standalone → session-runtime/services}/hook-bus/handler-dispatch.mjs +1 -1
- package/src/{standalone → session-runtime/services}/hook-bus/handlers.mjs +5 -4
- package/src/{standalone → session-runtime/services}/hook-bus/rule-file.mjs +2 -2
- package/src/{standalone → session-runtime/services}/hook-bus/tool-gate.mjs +1 -1
- package/src/{standalone → session-runtime/services}/memory-runtime-proxy/client-registry.mjs +1 -1
- package/src/{standalone → session-runtime/services}/memory-runtime-proxy/daemon-spawn.mjs +4 -4
- package/src/{standalone → session-runtime/services}/memory-runtime-proxy/discovery.mjs +5 -5
- package/src/{standalone → session-runtime/services}/memory-runtime-proxy/owner-claim.mjs +2 -2
- package/src/{standalone → session-runtime/services}/memory-runtime-proxy/rpc.mjs +0 -4
- package/src/{standalone → session-runtime/services}/memory-runtime-proxy/start.mjs +1 -1
- package/src/{standalone → session-runtime/services}/memory-runtime-proxy/tool-wire.mjs +1 -1
- package/src/session-runtime/services/memory-runtime-proxy.mjs +130 -0
- package/src/{standalone → session-runtime/services}/plugin-admin.mjs +6 -6
- package/src/session-runtime/services/provider-admin.mjs +576 -0
- package/src/{standalone → session-runtime/services}/seeds.mjs +3 -3
- package/src/{standalone → session-runtime/services}/usage-dashboard-model.mjs +1 -1
- package/src/session-runtime/services/usage-dashboard.mjs +278 -0
- package/src/{standalone → session-runtime/services}/usage-stats-hours.mjs +1 -1
- package/src/session-runtime/services/usage-stats-model.mjs +657 -0
- package/src/session-runtime/services/usage-stats-period.mjs +178 -0
- package/src/session-runtime/session-create/materialize.mjs +3 -3
- package/src/session-runtime/session-create/session-options.mjs +14 -7
- package/src/session-runtime/session-lifecycle.mjs +2 -2
- package/src/session-runtime/settings-builtin-tools-api.mjs +1 -1
- package/src/session-runtime/setup-tool/executor.mjs +2 -2
- package/src/session-runtime/skills-api.mjs +2 -2
- package/src/session-runtime/statusline-route.mjs +1 -1
- package/src/session-runtime/tool-catalog.mjs +1 -753
- package/src/session-runtime/tool-defs.mjs +1 -149
- package/src/session-runtime/tool-policy-refresh.mjs +7 -5
- package/src/session-runtime/tool-surface.mjs +5 -5
- package/src/session-runtime/turn/agent-ops.mjs +2 -2
- package/src/session-runtime/turn/session-ops.mjs +2 -2
- package/src/session-runtime/turn/share-ops.mjs +4 -3
- package/src/session-runtime/turn/turn-run/turn-prepare.mjs +1 -1
- package/src/session-runtime/turn/turn-run/turn-settle.mjs +4 -4
- package/src/session-runtime/usage-stats-api.mjs +18 -2
- package/src/session-runtime/warmup/statusline-usage-warmup.mjs +2 -2
- package/src/{runtime/shared → session-runtime}/webhook-session-run.mjs +5 -5
- package/src/session-runtime/workflow-agents-api/agent-editor.mjs +2 -2
- package/src/session-runtime/workflow-agents-api/agent-route.mjs +4 -4
- package/src/session-runtime/workflow-agents-api/onboarding.mjs +2 -2
- package/src/session-runtime/workflow-agents-api/shared.mjs +4 -6
- package/src/session-runtime/workflow-agents-api/workflow-packs.mjs +1 -1
- package/src/session-runtime/workflow.mjs +1 -255
- package/src/standalone/agent-tool/job-views/session-progress.mjs +1 -101
- package/src/standalone/agent-tool/job-views.mjs +1 -59
- package/src/standalone/agent-tool/tag-registry.mjs +1 -121
- package/src/standalone/agent-tool/tool-def.mjs +1 -60
- package/src/standalone/agent-tool.mjs +1 -151
- package/src/standalone/channel-worker.mjs +1 -140
- package/src/standalone/daemon-agent-control.mjs +1 -1
- package/src/standalone/daemon-desktop-runtime.mjs +2 -2
- package/src/standalone/daemon-stored-session-views.mjs +1 -1
- package/src/standalone/daemon.mjs +38 -5
- package/src/standalone/fair-call-scheduler.mjs +1 -198
- package/src/standalone/folder-dialog.mjs +12 -8
- package/src/standalone/memory-runtime-proxy.mjs +1 -130
- package/src/standalone/provider-admin.mjs +1 -576
- package/src/standalone/session-client/frame-stream.mjs +1 -1
- package/src/standalone/session-client.mjs +2 -2
- package/src/standalone/session-service/agent-tree/agent-child.mjs +1 -1
- package/src/standalone/session-service/projection/transcript-window.mjs +2 -2
- package/src/standalone/usage-dashboard.mjs +1 -278
- package/src/standalone/usage-stats-model.mjs +1 -653
- package/src/standalone/usage-stats-period.mjs +1 -178
- package/src/tui/App.jsx +107 -256
- package/src/tui/app/app-view/floating-panel.jsx +3 -12
- package/src/tui/app/app-view/welcome-banner.jsx +36 -0
- package/src/tui/app/app-view.jsx +18 -45
- package/src/tui/app/create-app-pickers.mjs +1 -1
- package/src/tui/app/doctor.mjs +15 -1
- package/src/tui/app/extension-pickers/mcp-servers-picker.mjs +7 -3
- package/src/tui/app/maintenance-pickers/auto-clear-picker.mjs +5 -8
- package/src/tui/app/model-options.mjs +2 -3
- package/src/tui/app/model-picker/model-footer.mjs +1 -1
- package/src/tui/app/model-picker/route-selection.mjs +1 -3
- package/src/tui/app/mouse-input/button-gestures.mjs +13 -31
- package/src/tui/app/mouse-input/wheel-router.mjs +22 -32
- package/src/tui/app/picker-enter-latch.mjs +21 -0
- package/src/tui/app/picker-index-mode.mjs +34 -0
- package/src/tui/app/shell-layout/panel-transition.mjs +7 -12
- package/src/tui/app/shell-layout/row-budgets.mjs +4 -9
- package/src/tui/app/slash-palette.mjs +31 -0
- package/src/tui/app/text-layout.mjs +1 -1
- package/src/tui/app/theme-effort-pickers.mjs +1 -1
- package/src/tui/app/transcript-window.mjs +1 -5
- package/src/tui/app/usage-context-panels/context-model.mjs +1 -1
- package/src/tui/app/use-global-key-input.mjs +0 -1
- package/src/tui/app/use-interaction-refs.mjs +55 -0
- package/src/tui/app/use-onboarding-start.mjs +45 -0
- package/src/tui/app/use-panel-transition.mjs +40 -0
- package/src/tui/app/use-prompt-draft-flow.mjs +4 -13
- package/src/tui/app/use-prompt-layout-rows.mjs +39 -0
- package/src/tui/app/use-prompt-queue-history/prompt-history.mjs +1 -1
- package/src/tui/app/use-prompt-state.mjs +40 -0
- package/src/tui/app/use-selection-paint.mjs +9 -5
- package/src/tui/app/use-transcript-scroll-state.mjs +61 -0
- package/src/tui/app/use-transcript-window.mjs +0 -1
- package/src/tui/app/use-ui-open-request.mjs +18 -0
- package/src/tui/app/use-workflow-tab-cycle.mjs +39 -0
- package/src/tui/components/ContextInspector.jsx +1 -1
- package/src/tui/components/ContextPanel.jsx +1 -1
- package/src/tui/components/Picker.jsx +41 -322
- package/src/tui/components/PromptInput.jsx +34 -468
- package/src/tui/components/StatusLine.jsx +8 -555
- package/src/tui/components/TextEntryPanel.jsx +25 -211
- package/src/tui/components/ToolExecution.jsx +43 -328
- package/src/tui/components/UsagePanel.jsx +1 -1
- package/src/tui/components/picker/PickerItemRow.jsx +85 -0
- package/src/tui/components/picker/picker-layout.mjs +46 -0
- package/src/tui/components/picker/use-picker-input.mjs +165 -0
- package/src/tui/components/picker/use-picker-selection.mjs +67 -0
- package/src/tui/components/prompt-input/edit-chords.mjs +87 -0
- package/src/tui/components/prompt-input/edit-helpers.mjs +15 -12
- package/src/tui/components/prompt-input/escape-key.mjs +87 -0
- package/src/tui/components/prompt-input/key-handler.mjs +364 -0
- package/src/tui/components/status-line/boot-schedule.mjs +83 -0
- package/src/tui/components/status-line/local-line.mjs +213 -0
- package/src/tui/components/status-line/use-statusline-text.mjs +319 -0
- package/src/tui/components/statusline-module-loader.mjs +21 -0
- package/src/tui/components/text-entry-layout.mjs +104 -0
- package/src/tui/components/text-entry-value.jsx +47 -0
- package/src/tui/components/tool-execution/aggregate-card.jsx +141 -0
- package/src/tui/components/tool-execution/pending-placeholder.jsx +24 -0
- package/src/tui/components/tool-execution/standard-card.jsx +229 -0
- package/src/tui/components/tool-output-format.mjs +3 -5
- package/src/tui/dist/index.mjs +3616 -3022
- package/src/tui/index.jsx +85 -66
- package/src/tui/markdown/format-token.mjs +3 -3
- package/src/tui/paste-attachments.mjs +1 -1
- package/src/tui/prompt-history-store.mjs +17 -6
- package/src/tui/session/agent-envelope.mjs +1 -489
- package/src/tui/session/context-state.mjs +2 -2
- package/src/tui/session/goal-continuation/continuation-queue.mjs +1 -1
- package/src/tui/session/goal-continuation/deadline-delivery.mjs +1 -1
- package/src/tui/session/goal-continuation/goal-visibility.mjs +1 -1
- package/src/tui/session/initial-state.mjs +1 -1
- package/src/tui/session/live-share/wire.mjs +3 -0
- package/src/tui/session/oauth-flows.mjs +1 -7
- package/src/tui/session/session-api/commands.mjs +5 -3
- package/src/tui/session/session-api/controls.mjs +1 -1
- package/src/tui/session/session-api/intake/submission.mjs +8 -3
- package/src/tui/session/session-api/integrations.mjs +1 -1
- package/src/tui/session/session-api/routes.mjs +9 -8
- package/src/tui/session/session-api/settings.mjs +24 -23
- package/src/tui/session/session-api/shared.mjs +13 -2
- package/src/tui/session/session-api-ext.mjs +7 -415
- package/src/tui/session/session-flow/drain.mjs +86 -82
- package/src/tui/session/session-flow/queue.mjs +3 -1
- package/src/tui/session/tool-result-status.mjs +1 -354
- package/src/tui/session/tool-result-text.mjs +1 -157
- package/src/tui/session/transcript-intake.mjs +1 -1
- package/src/tui/session/transcript-spill/spill-dir.mjs +4 -1
- package/src/tui/session/transcript-spill/spill-writer.mjs +1 -1
- package/src/tui/session/tui-steering-persist.mjs +44 -86
- package/src/tui/session-local.mjs +8 -5
- package/src/tui/statusline-ansi-bridge.mjs +1 -1
- package/src/tui/theme.mjs +1 -1
- package/src/ui/ansi.mjs +1 -161
- package/src/ui/context-inspection.mjs +1 -56
- package/src/ui/context-measurement.mjs +1 -83
- package/src/ui/markdown.mjs +3 -3
- package/src/ui/model-display.mjs +1 -173
- package/src/ui/statusline-agents.mjs +22 -21
- package/src/ui/statusline.mjs +21 -24
- package/src/ui/stream-finalize.mjs +1 -1
- package/src/ui/tool-card.mjs +1 -1
- package/src/vendor/statusline/src/gateway/route-meta.mjs +157 -29
- package/scripts/fixtures/spawn-lease-child-harness.mjs +0 -8
- package/scripts/fixtures/spawn-lease-fixture-worker.mjs +0 -37
- package/src/runtime/agent/orchestrator/activity-bus.mjs +0 -31
- package/src/runtime/shared/child-spawn-remote.mjs +0 -210
- package/src/runtime/shared/session-runtime-health.mjs +0 -201
- package/src/standalone/agent-tool/lead-worker-index/index-file.mjs +0 -45
- package/src/standalone/session-runtime-agent-control-client.mjs +0 -117
- package/src/standalone/session-runtime-agent-control.mjs +0 -85
- package/src/standalone/session-runtime-host-factory.mjs +0 -22
- package/src/standalone/session-runtime-host.mjs +0 -742
- package/src/standalone/session-runtime-provider-cooldown.mjs +0 -78
- package/src/standalone/session-runtime-proxy.mjs +0 -164
- package/src/standalone/session-runtime-record.mjs +0 -18
- package/src/standalone/session-runtime-shard-router.mjs +0 -151
- package/src/standalone/session-runtime-spawn-leases.mjs +0 -82
- package/src/standalone/session-runtime-worker.mjs +0 -678
- package/src/standalone/session-runtime-workload.mjs +0 -98
- /package/src/{session-runtime → runtime/agent/orchestrator/runtime-core}/context-status-cache.mjs +0 -0
- /package/src/{session-runtime → runtime/agent/orchestrator/runtime-core}/deferred-tool-availability.mjs +0 -0
- /package/src/{session-runtime → runtime/agent/orchestrator/runtime-core}/goal-deadlines.mjs +0 -0
- /package/src/{session-runtime → runtime/agent/orchestrator/runtime-core}/goal-runtime.mjs +0 -0
- /package/src/{session-runtime → runtime/agent/orchestrator/runtime-core}/goal-store.mjs +0 -0
- /package/src/{session-runtime → runtime/agent/orchestrator/runtime-core}/goal-text.mjs +0 -0
- /package/src/{session-runtime → runtime/agent/orchestrator/runtime-core}/goal-tool-exec.mjs +0 -0
- /package/src/{session-runtime → runtime/agent/orchestrator/runtime-core}/provider-request-snapshot.mjs +0 -0
- /package/src/{session-runtime → runtime/agent/orchestrator/runtime-core}/provider-request-tools.mjs +0 -0
- /package/src/{session-runtime → runtime/agent/orchestrator/runtime-core}/tool-catalog-data.mjs +0 -0
- /package/src/{session-runtime → runtime/agent/orchestrator/runtime-core}/tool-profile.mjs +0 -0
- /package/src/{session-runtime → runtime/agent/orchestrator/runtime-core}/workflow/shared-scan-cache.mjs +0 -0
- /package/src/{standalone → runtime/shared}/fair-call-scheduler/queue-item.mjs +0 -0
- /package/src/runtime/{agent/orchestrator/providers → shared/llm}/provider-model-identities.mjs +0 -0
- /package/src/{standalone → runtime/shared}/projects.mjs +0 -0
- /package/src/{standalone → session-runtime/services}/agent-tool/execute-send.mjs +0 -0
- /package/src/{standalone → session-runtime/services}/agent-tool/execute-spawn.mjs +0 -0
- /package/src/{standalone → session-runtime/services}/agent-tool/job-views/agent-list.mjs +0 -0
- /package/src/{standalone → session-runtime/services}/agent-tool/lead-worker-index/lead-rows.mjs +0 -0
- /package/src/{standalone → session-runtime/services}/agent-tool/lead-worker-index/reap-timers.mjs +0 -0
- /package/src/{standalone → session-runtime/services}/agent-tool/provider-init.mjs +0 -0
- /package/src/{standalone → session-runtime/services}/agent-tool/spawn-flow/deferred-spawn.mjs +0 -0
- /package/src/{standalone → session-runtime/services}/agent-tool/spawn-flow.mjs +0 -0
- /package/src/{standalone → session-runtime/services}/agent-tool/tag-maps.mjs +0 -0
- /package/src/{standalone → session-runtime/services}/agent-tool/tag-registry/tag-lookup.mjs +0 -0
- /package/src/{standalone → session-runtime/services}/agent-tool/tag-registry/tag-refresh.mjs +0 -0
- /package/src/{standalone → session-runtime/services}/agent-tool/terminal-reaper/row-helpers.mjs +0 -0
- /package/src/{standalone → session-runtime/services}/agent-tool/terminal-reaper.mjs +0 -0
- /package/src/{standalone → session-runtime/services}/agent-tool/terminal-trace.mjs +0 -0
- /package/src/{standalone → session-runtime/services}/agent-tool/worker-index/mutation-batch.mjs +0 -0
- /package/src/{standalone → session-runtime/services}/agent-tool/worker-index/row-shape.mjs +0 -0
- /package/src/{standalone → session-runtime/services}/channel-client/daemon-request.mjs +0 -0
- /package/src/{standalone → session-runtime/services}/channel-client/notify-stream.mjs +0 -0
- /package/src/{standalone → session-runtime/services}/channel-client/reconnect.mjs +0 -0
- /package/src/{standalone → session-runtime/services}/channel-client/registration.mjs +0 -0
- /package/src/{standalone → session-runtime/services}/daemon-candidate.mjs +0 -0
- /package/src/{standalone → session-runtime/services}/daemon-crash-capture/paths.mjs +0 -0
- /package/src/{standalone → session-runtime/services}/hook-bus/config-loader.mjs +0 -0
- /package/src/{standalone → session-runtime/services}/hook-bus/config.mjs +0 -0
- /package/src/{standalone → session-runtime/services}/hook-bus/constants.mjs +0 -0
- /package/src/{standalone → session-runtime/services}/hook-bus/event-log.mjs +0 -0
- /package/src/{standalone → session-runtime/services}/hook-bus/handler-timeout.mjs +0 -0
- /package/src/{standalone → session-runtime/services}/hook-bus/payload.mjs +0 -0
- /package/src/{standalone → session-runtime/services}/hook-bus/rule-store.mjs +0 -0
- /package/src/{standalone → session-runtime/services}/hook-bus/rules.mjs +0 -0
- /package/src/{standalone → session-runtime/services}/hook-bus.mjs +0 -0
- /package/src/{standalone → session-runtime/services}/memory-runtime-proxy/calls.mjs +0 -0
- /package/src/{standalone → session-runtime/services}/memory-runtime-proxy/state.mjs +0 -0
- /package/src/{standalone → session-runtime/services}/sse-frames.mjs +0 -0
package/src/headless-role.mjs
CHANGED
|
@@ -4,6 +4,7 @@ import {
|
|
|
4
4
|
formatPristineExecutionAudit,
|
|
5
5
|
validateExplicitPristineRoute,
|
|
6
6
|
} from './runtime/shared/pristine-execution.mjs';
|
|
7
|
+
import { BUNDLED_PATCH_MANIFEST_PATH } from './runtime/agent/orchestrator/tools/patch-manifest-path.mjs';
|
|
7
8
|
import { installProcessSignalCleanup, waitWithTimeout } from './runtime/shared/process-shutdown.mjs';
|
|
8
9
|
import { sleep } from './runtime/shared/sleep.mjs';
|
|
9
10
|
import { clean } from './runtime/shared/clean.mjs';
|
|
@@ -42,7 +43,7 @@ async function buildAgentRunner(cwd, boundary) {
|
|
|
42
43
|
// Import runtime/config modules only after MIXDOG_DATA_DIR and all behavioral
|
|
43
44
|
// guards point at the ephemeral pristine boundary.
|
|
44
45
|
const [{ createStandaloneAgent }, cfgMod, reg, mgr] = await Promise.all([
|
|
45
|
-
import('./
|
|
46
|
+
import('./session-runtime/services/agent-tool.mjs'),
|
|
46
47
|
import('./runtime/agent/orchestrator/config.mjs'),
|
|
47
48
|
import('./runtime/agent/orchestrator/providers/registry.mjs'),
|
|
48
49
|
import('./runtime/agent/orchestrator/session/manager.mjs'),
|
|
@@ -60,6 +61,69 @@ async function buildAgentRunner(cwd, boundary) {
|
|
|
60
61
|
});
|
|
61
62
|
}
|
|
62
63
|
|
|
64
|
+
// One-shot memoized shutdown: close the agent, drain the trace, close native
|
|
65
|
+
// patch servers, then remove the pristine boundary. Each step is time-boxed
|
|
66
|
+
// against a shared deadline and failures never skip the later steps.
|
|
67
|
+
function createRoleCleanup(run, { tag, context }) {
|
|
68
|
+
let cleanupPromise = null;
|
|
69
|
+
const shutdown = async () => {
|
|
70
|
+
const deadline = Date.now() + HEADLESS_SHUTDOWN_TIMEOUT_MS - HEADLESS_CLEANUP_RESERVE_MS;
|
|
71
|
+
const runCleanupStep = async (start, maxMs, label) => {
|
|
72
|
+
const remaining = deadline - Date.now();
|
|
73
|
+
if (remaining <= 0) return;
|
|
74
|
+
const budget = Math.min(maxMs, remaining);
|
|
75
|
+
// waitWithTimeout intentionally unrefs its timer. Keep this one-shot
|
|
76
|
+
// headless cleanup alive until the step settles or consumes its budget,
|
|
77
|
+
// otherwise an unresolved close can terminate Node before `finally`.
|
|
78
|
+
const keepAlive = setTimeout(() => {}, budget + 1);
|
|
79
|
+
try {
|
|
80
|
+
await waitWithTimeout(start(), budget, label);
|
|
81
|
+
} finally {
|
|
82
|
+
clearTimeout(keepAlive);
|
|
83
|
+
}
|
|
84
|
+
};
|
|
85
|
+
try {
|
|
86
|
+
if (run.agentRunner) {
|
|
87
|
+
await runCleanupStep(
|
|
88
|
+
() => run.agentRunner.execute({ type: 'close', tag }, context),
|
|
89
|
+
HEADLESS_CLOSE_TIMEOUT_MS,
|
|
90
|
+
'headless agent close'
|
|
91
|
+
);
|
|
92
|
+
}
|
|
93
|
+
} catch {
|
|
94
|
+
// Trace drain and boundary cleanup remain mandatory when close hangs.
|
|
95
|
+
}
|
|
96
|
+
try {
|
|
97
|
+
if (run.drainTrace) {
|
|
98
|
+
await runCleanupStep(run.drainTrace, HEADLESS_SHUTDOWN_TIMEOUT_MS, 'headless trace drain');
|
|
99
|
+
}
|
|
100
|
+
} catch {
|
|
101
|
+
// Telemetry must never block cleanup of the pristine boundary.
|
|
102
|
+
} finally {
|
|
103
|
+
try {
|
|
104
|
+
await runCleanupStep(
|
|
105
|
+
async () => {
|
|
106
|
+
const closeNativePatchServers = globalThis.__mixdogCloseNativePatchServers;
|
|
107
|
+
if (typeof closeNativePatchServers === 'function') {
|
|
108
|
+
await closeNativePatchServers();
|
|
109
|
+
}
|
|
110
|
+
},
|
|
111
|
+
HEADLESS_CLOSE_TIMEOUT_MS,
|
|
112
|
+
'headless native patch close'
|
|
113
|
+
);
|
|
114
|
+
} catch {
|
|
115
|
+
// The boundary cleanup below remains mandatory if native shutdown hangs.
|
|
116
|
+
} finally {
|
|
117
|
+
run.boundary?.cleanup();
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
};
|
|
121
|
+
return () => {
|
|
122
|
+
cleanupPromise ??= shutdown();
|
|
123
|
+
return cleanupPromise;
|
|
124
|
+
};
|
|
125
|
+
}
|
|
126
|
+
|
|
63
127
|
export async function runHeadlessRole({
|
|
64
128
|
agent,
|
|
65
129
|
message,
|
|
@@ -117,89 +181,38 @@ export async function runHeadlessRole({
|
|
|
117
181
|
fast,
|
|
118
182
|
});
|
|
119
183
|
|
|
120
|
-
let boundary = null;
|
|
121
|
-
let agentRunner = null;
|
|
122
184
|
let signalCleanup = null;
|
|
123
|
-
let cleanupPromise = null;
|
|
124
|
-
let drainTrace = null;
|
|
125
185
|
let taskId = null;
|
|
126
186
|
let lastOutput = '';
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
const deadline = Date.now() + HEADLESS_SHUTDOWN_TIMEOUT_MS - HEADLESS_CLEANUP_RESERVE_MS;
|
|
131
|
-
const runCleanupStep = async (start, maxMs, label) => {
|
|
132
|
-
const remaining = deadline - Date.now();
|
|
133
|
-
if (remaining <= 0) return;
|
|
134
|
-
const budget = Math.min(maxMs, remaining);
|
|
135
|
-
// waitWithTimeout intentionally unrefs its timer. Keep this one-shot
|
|
136
|
-
// headless cleanup alive until the step settles or consumes its budget,
|
|
137
|
-
// otherwise an unresolved close can terminate Node before `finally`.
|
|
138
|
-
const keepAlive = setTimeout(() => {}, budget + 1);
|
|
139
|
-
try {
|
|
140
|
-
await waitWithTimeout(start(), budget, label);
|
|
141
|
-
} finally {
|
|
142
|
-
clearTimeout(keepAlive);
|
|
143
|
-
}
|
|
144
|
-
};
|
|
145
|
-
try {
|
|
146
|
-
if (agentRunner) {
|
|
147
|
-
await runCleanupStep(
|
|
148
|
-
() => agentRunner.execute({ type: 'close', tag }, context),
|
|
149
|
-
HEADLESS_CLOSE_TIMEOUT_MS,
|
|
150
|
-
'headless agent close'
|
|
151
|
-
);
|
|
152
|
-
}
|
|
153
|
-
} catch {
|
|
154
|
-
// Trace drain and boundary cleanup remain mandatory when close hangs.
|
|
155
|
-
}
|
|
156
|
-
try {
|
|
157
|
-
if (drainTrace) {
|
|
158
|
-
await runCleanupStep(drainTrace, HEADLESS_SHUTDOWN_TIMEOUT_MS, 'headless trace drain');
|
|
159
|
-
}
|
|
160
|
-
} catch {
|
|
161
|
-
// Telemetry must never block cleanup of the pristine boundary.
|
|
162
|
-
} finally {
|
|
163
|
-
try {
|
|
164
|
-
await runCleanupStep(
|
|
165
|
-
async () => {
|
|
166
|
-
const closeNativePatchServers = globalThis.__mixdogCloseNativePatchServers;
|
|
167
|
-
if (typeof closeNativePatchServers === 'function') {
|
|
168
|
-
await closeNativePatchServers();
|
|
169
|
-
}
|
|
170
|
-
},
|
|
171
|
-
HEADLESS_CLOSE_TIMEOUT_MS,
|
|
172
|
-
'headless native patch close'
|
|
173
|
-
);
|
|
174
|
-
} catch {
|
|
175
|
-
// The boundary cleanup below remains mandatory if native shutdown hangs.
|
|
176
|
-
} finally {
|
|
177
|
-
boundary?.cleanup();
|
|
178
|
-
}
|
|
179
|
-
}
|
|
180
|
-
})();
|
|
181
|
-
return cleanupPromise;
|
|
182
|
-
};
|
|
187
|
+
// Live handles the shutdown path reads at cleanup time, not at creation.
|
|
188
|
+
const run = { boundary: null, agentRunner: null, drainTrace: null };
|
|
189
|
+
const cleanup = createRoleCleanup(run, { tag, context });
|
|
183
190
|
try {
|
|
184
191
|
try {
|
|
185
|
-
boundary = createPristineExecutionBoundary({
|
|
192
|
+
run.boundary = createPristineExecutionBoundary({
|
|
193
|
+
provider,
|
|
194
|
+
model,
|
|
195
|
+
effort,
|
|
196
|
+
fast,
|
|
197
|
+
patchManifestPath: BUNDLED_PATCH_MANIFEST_PATH,
|
|
198
|
+
});
|
|
186
199
|
} catch (error) {
|
|
187
200
|
writeErr(`mixdog: ${error?.message || error}\n`);
|
|
188
201
|
return 1;
|
|
189
202
|
}
|
|
190
|
-
writeErr(`${formatPristineExecutionAudit(boundary.audit)}\n`);
|
|
203
|
+
writeErr(`${formatPristineExecutionAudit(run.boundary.audit)}\n`);
|
|
191
204
|
signalCleanup = installProcessSignalCleanup({
|
|
192
205
|
name: 'mixdog-headless',
|
|
193
206
|
timeoutMs: HEADLESS_SHUTDOWN_TIMEOUT_MS,
|
|
194
207
|
cleanup,
|
|
195
208
|
});
|
|
196
|
-
agentRunner = await agentRunnerFactory(cwd, boundary);
|
|
209
|
+
run.agentRunner = await agentRunnerFactory(cwd, run.boundary);
|
|
197
210
|
try {
|
|
198
|
-
({ drainAgentTrace: drainTrace } = await import('./runtime/agent/orchestrator/agent-trace.mjs'));
|
|
211
|
+
({ drainAgentTrace: run.drainTrace } = await import('./runtime/agent/orchestrator/agent-trace.mjs'));
|
|
199
212
|
} catch {
|
|
200
|
-
drainTrace = null;
|
|
213
|
+
run.drainTrace = null;
|
|
201
214
|
}
|
|
202
|
-
const started = await agentRunner.execute(spawnArgs, context);
|
|
215
|
+
const started = await run.agentRunner.execute(spawnArgs, context);
|
|
203
216
|
lastOutput = clean(started);
|
|
204
217
|
taskId = taskIdFromOutput(started);
|
|
205
218
|
if (!taskId) {
|
|
@@ -208,7 +221,7 @@ export async function runHeadlessRole({
|
|
|
208
221
|
}
|
|
209
222
|
|
|
210
223
|
for (;;) {
|
|
211
|
-
lastOutput = clean(await agentRunner.execute({ type: 'read', task_id: taskId }, context));
|
|
224
|
+
lastOutput = clean(await run.agentRunner.execute({ type: 'read', task_id: taskId }, context));
|
|
212
225
|
if (TERMINAL_STATUS_RE.test(lastOutput)) break;
|
|
213
226
|
await sleep(500);
|
|
214
227
|
}
|
package/src/lib/keychain-cjs.cjs
CHANGED
|
@@ -69,7 +69,7 @@ function invalidateSecretCache(account) {
|
|
|
69
69
|
_cacheInvalidate(account);
|
|
70
70
|
}
|
|
71
71
|
|
|
72
|
-
// CommonJS module: cannot import the ESM src/shared/wsl.mjs, so inline an
|
|
72
|
+
// CommonJS module: cannot import the ESM src/runtime/shared/wsl.mjs, so inline an
|
|
73
73
|
// equivalent WSL check (process.platform reports 'linux' inside WSL).
|
|
74
74
|
function isWSL() {
|
|
75
75
|
if (process.platform !== 'linux') return false;
|
|
@@ -124,7 +124,7 @@ function powershellEnv() {
|
|
|
124
124
|
return env;
|
|
125
125
|
}
|
|
126
126
|
|
|
127
|
-
function powershell(script) {
|
|
127
|
+
function powershell(script, input = null) {
|
|
128
128
|
// Bound DPAPI PowerShell calls with a timeout: a hung powershell.exe
|
|
129
129
|
// (AV scan stall, profile loader, transient cert chain lookup) would
|
|
130
130
|
// otherwise block hook/server callers synchronously. The default is long
|
|
@@ -137,7 +137,11 @@ function powershell(script) {
|
|
|
137
137
|
const exe = resolvePowershellExe();
|
|
138
138
|
const profiled = /^(1|true|yes|on)$/i.test(String(process.env.MIXDOG_BOOT_PROFILE || ''));
|
|
139
139
|
const startedAt = profiled ? Date.now() : 0;
|
|
140
|
-
const r = run(exe, ['-NonInteractive', '-NoProfile', '-Command', script], {
|
|
140
|
+
const r = run(exe, ['-NonInteractive', '-NoProfile', '-Command', script], {
|
|
141
|
+
timeout: POWERSHELL_TIMEOUT_MS,
|
|
142
|
+
env: powershellEnv(),
|
|
143
|
+
...(input == null ? {} : { input, stdio: ['pipe', 'pipe', 'pipe'] }),
|
|
144
|
+
});
|
|
141
145
|
if (profiled) {
|
|
142
146
|
const caller = (new Error().stack || '')
|
|
143
147
|
.split('\n')
|
|
@@ -370,8 +374,7 @@ function linuxDelete(account) {
|
|
|
370
374
|
const PS_PROTECT = [
|
|
371
375
|
'Add-Type -AssemblyName System.Security -ErrorAction SilentlyContinue;',
|
|
372
376
|
'[Console]::OutputEncoding = [System.Text.Encoding]::UTF8;',
|
|
373
|
-
'$
|
|
374
|
-
'$bytes = [System.Text.Encoding]::UTF8.GetBytes($value);',
|
|
377
|
+
'$bytes = [Convert]::FromBase64String(([Console]::In.ReadToEnd()).Trim());',
|
|
375
378
|
'$scope = [System.Security.Cryptography.DataProtectionScope]::CurrentUser;',
|
|
376
379
|
'$enc = [System.Security.Cryptography.ProtectedData]::Protect($bytes, $null, $scope);',
|
|
377
380
|
'[Convert]::ToBase64String($enc)',
|
|
@@ -475,10 +478,9 @@ function prewarmSecrets() {
|
|
|
475
478
|
function win32Set(account, value) {
|
|
476
479
|
const dir = secretsDir();
|
|
477
480
|
fs.mkdirSync(dir, { recursive: true, mode: 0o700 });
|
|
478
|
-
//
|
|
479
|
-
//
|
|
480
|
-
const
|
|
481
|
-
const r = powershell(`& { ${PS_PROTECT} } '${escaped}'`);
|
|
481
|
+
// The secret travels via stdin (base64 of UTF-8) so it never appears in the
|
|
482
|
+
// process argv or needs script-level quoting.
|
|
483
|
+
const r = powershell(`& { ${PS_PROTECT} }`, Buffer.from(value, 'utf8').toString('base64'));
|
|
482
484
|
if (r.status !== 0) throw new Error(`[keychain] DPAPI encrypt failed (exit ${r.status}): ${r.stderr || r.stdout}`);
|
|
483
485
|
const out = (r.stdout || '').trim();
|
|
484
486
|
if (!out) throw new Error(`[keychain] DPAPI encrypt returned empty output (stderr: ${(r.stderr || '').trim()})`);
|
|
@@ -495,23 +497,22 @@ function win32Delete(account) {
|
|
|
495
497
|
// Public API
|
|
496
498
|
// ---------------------------------------------------------------------------
|
|
497
499
|
|
|
500
|
+
const BACKENDS = {
|
|
501
|
+
darwin: { get: darwinGet, set: darwinSet, delete: darwinDelete },
|
|
502
|
+
linux: { get: linuxGet, set: linuxSet, delete: linuxDelete },
|
|
503
|
+
win32: { get: win32Get, set: win32Set, delete: win32Delete },
|
|
504
|
+
};
|
|
505
|
+
|
|
506
|
+
function backend() {
|
|
507
|
+
const selected = BACKENDS[platform()];
|
|
508
|
+
if (!selected) throw new Error(`[keychain] unsupported platform: ${process.platform}`);
|
|
509
|
+
return selected;
|
|
510
|
+
}
|
|
511
|
+
|
|
498
512
|
function getSecret(account) {
|
|
499
513
|
const cached = _cacheGet(account);
|
|
500
514
|
if (cached !== undefined) return cached;
|
|
501
|
-
|
|
502
|
-
switch (platform()) {
|
|
503
|
-
case 'darwin':
|
|
504
|
-
value = darwinGet(account);
|
|
505
|
-
break;
|
|
506
|
-
case 'linux':
|
|
507
|
-
value = linuxGet(account);
|
|
508
|
-
break;
|
|
509
|
-
case 'win32':
|
|
510
|
-
value = win32Get(account);
|
|
511
|
-
break;
|
|
512
|
-
default:
|
|
513
|
-
throw new Error(`[keychain] unsupported platform: ${process.platform}`);
|
|
514
|
-
}
|
|
515
|
+
const value = backend().get(account);
|
|
515
516
|
_cacheSet(account, value);
|
|
516
517
|
return value;
|
|
517
518
|
}
|
|
@@ -529,19 +530,7 @@ function hasSecret(account) {
|
|
|
529
530
|
|
|
530
531
|
function setSecret(account, value) {
|
|
531
532
|
try {
|
|
532
|
-
|
|
533
|
-
case 'darwin':
|
|
534
|
-
darwinSet(account, value);
|
|
535
|
-
break;
|
|
536
|
-
case 'linux':
|
|
537
|
-
linuxSet(account, value);
|
|
538
|
-
break;
|
|
539
|
-
case 'win32':
|
|
540
|
-
win32Set(account, value);
|
|
541
|
-
break;
|
|
542
|
-
default:
|
|
543
|
-
throw new Error(`[keychain] unsupported platform: ${process.platform}`);
|
|
544
|
-
}
|
|
533
|
+
backend().set(account, value);
|
|
545
534
|
} finally {
|
|
546
535
|
_cacheInvalidate(account);
|
|
547
536
|
}
|
|
@@ -549,19 +538,7 @@ function setSecret(account, value) {
|
|
|
549
538
|
|
|
550
539
|
function deleteSecret(account) {
|
|
551
540
|
try {
|
|
552
|
-
|
|
553
|
-
case 'darwin':
|
|
554
|
-
darwinDelete(account);
|
|
555
|
-
break;
|
|
556
|
-
case 'linux':
|
|
557
|
-
linuxDelete(account);
|
|
558
|
-
break;
|
|
559
|
-
case 'win32':
|
|
560
|
-
win32Delete(account);
|
|
561
|
-
break;
|
|
562
|
-
default:
|
|
563
|
-
throw new Error(`[keychain] unsupported platform: ${process.platform}`);
|
|
564
|
-
}
|
|
541
|
+
backend().delete(account);
|
|
565
542
|
} finally {
|
|
566
543
|
_cacheInvalidate(account);
|
|
567
544
|
}
|
package/src/lib/mixdog-debug.cjs
CHANGED
|
@@ -164,7 +164,7 @@ function pruneStalePluginDataLogSiblings(
|
|
|
164
164
|
|
|
165
165
|
const SESSION_START_CRITICAL_LOG = 'session-start-critical.log';
|
|
166
166
|
const SESSION_START_CRITICAL_MAX_BYTES = 64 * 1024;
|
|
167
|
-
const SESSION_START_CRITICAL_KEEP_BYTES =
|
|
167
|
+
const SESSION_START_CRITICAL_KEEP_BYTES = 32 * 1024;
|
|
168
168
|
|
|
169
169
|
function rotateBoundedLog(filePath, maxBytes, keepBytes) {
|
|
170
170
|
try {
|
|
@@ -23,7 +23,8 @@
|
|
|
23
23
|
* - output-styles/common.md — shared built-in output composition policy
|
|
24
24
|
* - output-styles/<name>.md — selected built-in depth variant or standalone user style
|
|
25
25
|
* - agent/AGENT.md — common agent contract: chain of command, handoff (BP3, all profiles)
|
|
26
|
-
* - agent/
|
|
26
|
+
* - agent/4*-*.md — per-hidden-agent bodies (consumed by loadScopedRoleInstructions)
|
|
27
|
+
* - routes/*.md — optional provider/model-scoped rules appended to BP1 (buildRouteRulesContent)
|
|
27
28
|
*
|
|
28
29
|
* Core memory snapshot is injected separately from the memory worker (pgdata)
|
|
29
30
|
* (Lead only).
|
|
@@ -361,7 +362,7 @@ function buildRouteRulesContent({
|
|
|
361
362
|
return omitToolRoutes(parts.join('\n'), omitTools, allowTools);
|
|
362
363
|
}
|
|
363
364
|
|
|
364
|
-
function buildLeadRoleContent({ PLUGIN_ROOT,
|
|
365
|
+
function buildLeadRoleContent({ PLUGIN_ROOT, includeLeadBrief = true }) {
|
|
365
366
|
const RULES_DIR = path.join(PLUGIN_ROOT, 'rules');
|
|
366
367
|
const lead = readOptional(path.join(RULES_DIR, 'lead', 'LEAD.md'));
|
|
367
368
|
if (!lead) return '';
|
|
@@ -429,7 +430,7 @@ function buildAgentRoleContent({ PLUGIN_ROOT, profile = 'full' }) {
|
|
|
429
430
|
}
|
|
430
431
|
|
|
431
432
|
/**
|
|
432
|
-
*
|
|
433
|
+
* BP3 role rules for narrow hidden retrieval roles. These roles already carry a separate
|
|
433
434
|
* read-only tool schema shard, so keeping the full agent worker prefix does
|
|
434
435
|
* not improve cross-role cache reuse and only adds unrelated shell/edit/git
|
|
435
436
|
* guidance.
|
|
@@ -2,11 +2,11 @@ export { createMixdogSessionRuntime } from './session-runtime/runtime-core.mjs';
|
|
|
2
2
|
export {
|
|
3
3
|
compactToolSearchDescription,
|
|
4
4
|
defaultDeferredToolNames,
|
|
5
|
-
} from './
|
|
5
|
+
} from './runtime/agent/orchestrator/runtime-core/tool-catalog.mjs';
|
|
6
6
|
export {
|
|
7
7
|
SKILL_TOOL,
|
|
8
8
|
TOOL_SEARCH_TOOL,
|
|
9
|
-
} from './
|
|
9
|
+
} from './runtime/agent/orchestrator/runtime-core/tool-defs.mjs';
|
|
10
10
|
export {
|
|
11
11
|
__renderToolSearchForTest,
|
|
12
12
|
__saveModelSettingsForTest,
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* repl/slash-commands.mjs — the REPL's `/command` table. Every command writes
|
|
3
3
|
* to `ctx.out`; only `/exit` and `/quit` return 'exit'.
|
|
4
4
|
*/
|
|
5
|
-
import { dim, green, red, yellow, colorEnabled } from '../
|
|
5
|
+
import { dim, green, red, yellow, colorEnabled } from '../runtime/shared/statusline/ansi.mjs';
|
|
6
6
|
import { createSessionStats } from '../ui/session-stats.mjs';
|
|
7
7
|
import { statuslineFor } from './turn-output.mjs';
|
|
8
8
|
|
package/src/repl/stream-sink.mjs
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* flags the tool cards and the final re-render depend on, and the erase used
|
|
5
5
|
* to replace the raw stream with rendered markdown.
|
|
6
6
|
*/
|
|
7
|
-
import { colorEnabled } from '../
|
|
7
|
+
import { colorEnabled } from '../runtime/shared/statusline/ansi.mjs';
|
|
8
8
|
|
|
9
9
|
const STREAM_WRITE_BATCH_MS = 8;
|
|
10
10
|
|
package/src/repl/turn-output.mjs
CHANGED
|
@@ -3,12 +3,12 @@
|
|
|
3
3
|
* markdown re-render of the streamed block (TTY only, text-only turns) and the
|
|
4
4
|
* per-turn statusline footer.
|
|
5
5
|
*/
|
|
6
|
-
import { colorEnabled } from '../
|
|
6
|
+
import { colorEnabled } from '../runtime/shared/statusline/ansi.mjs';
|
|
7
7
|
import { buildStreamFinalPatch } from '../ui/stream-finalize.mjs';
|
|
8
8
|
import { eraseStreamedBlock } from './stream-sink.mjs';
|
|
9
9
|
|
|
10
10
|
/**
|
|
11
|
-
*
|
|
11
|
+
* Clear the raw streamed block and re-print as markdown. Only
|
|
12
12
|
* when we're on a TTY and actually streamed something — otherwise the raw text
|
|
13
13
|
* already on screen is fine (and we must not emit cursor escapes into a pipe).
|
|
14
14
|
*/
|
package/src/repl.mjs
CHANGED
|
@@ -28,7 +28,7 @@ import { createInterface } from 'node:readline';
|
|
|
28
28
|
import { stdin, stdout } from 'node:process';
|
|
29
29
|
import { basename } from 'node:path';
|
|
30
30
|
|
|
31
|
-
import { bold, dim, cyan, red, colorEnabled } from './
|
|
31
|
+
import { bold, dim, cyan, red, colorEnabled } from './runtime/shared/statusline/ansi.mjs';
|
|
32
32
|
import { printHelp } from './help.mjs';
|
|
33
33
|
import { createSessionStats, applyUsageDelta } from './ui/session-stats.mjs';
|
|
34
34
|
import { createRuntimeHandle } from './repl/runtime-handle.mjs';
|
|
@@ -73,7 +73,7 @@ export function prepareDispatchSession({
|
|
|
73
73
|
// resolveAgentSessionPermission (prepareAgentSession applies the same).
|
|
74
74
|
const permission = resolveAgentSessionPermission(
|
|
75
75
|
agent,
|
|
76
|
-
opts.permission ?? (isPoolC ? hidden
|
|
76
|
+
opts.permission ?? (isPoolC ? hidden.permission || 'read' : null)
|
|
77
77
|
);
|
|
78
78
|
// Pool C hidden-role instructions live in BP2 role-scoped context
|
|
79
79
|
// (loaded by loadScopedRoleInstructions from rules/agent/*.md).
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
* --- system#4 (unmarked) — volatile session/project environment
|
|
14
14
|
* (cacheTier:'env'); covered by the messages-tail BP so an
|
|
15
15
|
* environment change never invalidates the BP3 core write
|
|
16
|
-
* BP_4 messages (
|
|
16
|
+
* BP_4 messages (5m public/hidden agents; Lead linked to autoClear,
|
|
17
17
|
* whose Anthropic default is 1h — see below) —
|
|
18
18
|
* sliding tool_result / prior user-text tail
|
|
19
19
|
*
|
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
*
|
|
25
25
|
* Tier 3 gets its own BP because role/memory context is stable within the
|
|
26
26
|
* session. The volatile environment block stays unmarked and rides the sliding
|
|
27
|
-
*
|
|
27
|
+
* messages BP, which also handles tool_result accumulation and per-call
|
|
28
28
|
* task/event data while isolating volatile text from stable prefix BPs.
|
|
29
29
|
*
|
|
30
30
|
* Non-breakpoint providers:
|
|
@@ -91,18 +91,23 @@ export function resolveLeadMessagesTtl(autoClear) {
|
|
|
91
91
|
* BP1~3 stay at 1h: the system/role/tier3 prefix is shared across sessions
|
|
92
92
|
* (pool-stable), so the 2x write premium is amortized cross-session and the
|
|
93
93
|
* warm window survives per-session gaps. The volatile message tail (BP4) is
|
|
94
|
-
* per-session
|
|
95
|
-
* intra-session gaps over 5m were agent waits (5–27m), during which autoClear
|
|
96
|
-
* correctly cannot fire; 32.7% of agent intra-session gaps exceeded 5m due to
|
|
97
|
-
* long tool executions, with sessions surviving through reviewer fix-loop
|
|
98
|
-
* reuse; and no gap over 1h was observed. Tail-cost simulation (input-token
|
|
99
|
-
* equivalents) is Lead 1h=11.75M vs 5m=20.11M and agents 1h=14.46M vs
|
|
100
|
-
* 5m=45.04M: misses that rewrite the accumulated tail dominate the 2x-vs-1.25x
|
|
101
|
-
* write premium. Hidden and public-agent sessions therefore use a 1h tail.
|
|
94
|
+
* per-session.
|
|
102
95
|
*
|
|
103
96
|
* Lead sessions are linked to the user's autoClear idle-sweep config (see
|
|
104
97
|
* resolveLeadMessagesTtl); its Anthropic default is 1h, while explicit
|
|
105
|
-
* shorter overrides retain the shorter-sweep behavior.
|
|
98
|
+
* shorter overrides retain the shorter-sweep behavior. The 2026-07-16 6.8h
|
|
99
|
+
* trace supports the 1h Lead tail: 24/25 Lead intra-session gaps over 5m were
|
|
100
|
+
* agent waits (5–27m), during which autoClear correctly cannot fire, and no
|
|
101
|
+
* gap over 1h was observed (tail-cost simulation, input-token equivalents:
|
|
102
|
+
* 1h=11.75M vs 5m=20.11M).
|
|
103
|
+
*
|
|
104
|
+
* Hidden and public-agent sessions use a 5m tail. Replaying the usage
|
|
105
|
+
* ledger's Anthropic agent requests (2026-09-15..30, 25K requests) found 0.9%
|
|
106
|
+
* of intra-session gaps over 5m, and pre-send compaction rebuilds an agent
|
|
107
|
+
* transcript once its 5m tail has expired (compact-policy.mjs
|
|
108
|
+
* shouldCompactForExpiredAgentCache), so the cold request rewrites the
|
|
109
|
+
* compacted transcript instead of the whole accumulated tail. Replayed agent
|
|
110
|
+
* cost vs a 1h tail: -24.6% with that compaction, +2.7% without it.
|
|
106
111
|
* (Tail TTL only affects explicit-breakpoint providers — Anthropic; no-op
|
|
107
112
|
* elsewhere.)
|
|
108
113
|
*
|
|
@@ -132,9 +137,10 @@ export function resolveCacheStrategy(agent, { autoClear } = {}) {
|
|
|
132
137
|
return strategy;
|
|
133
138
|
};
|
|
134
139
|
if (getHiddenAgent(agent) || (agent && agent !== 'lead')) {
|
|
135
|
-
// Hidden and public agents
|
|
136
|
-
// session's tail is linked to
|
|
137
|
-
|
|
140
|
+
// Hidden and public agents use a flat 5m tail that pre-send compaction
|
|
141
|
+
// rebuilds once it expires — only the Lead session's tail is linked to
|
|
142
|
+
// autoClear.
|
|
143
|
+
return applyEnv({ tools: 'none', system: '1h', tier3: '1h', messages: '5m' });
|
|
138
144
|
}
|
|
139
145
|
// Lead session (agent === 'lead', or no agent — raw/CLI callers default
|
|
140
146
|
// to Lead behavior): message tail TTL is linked to autoClear (see
|
|
@@ -468,5 +474,3 @@ export function buildProviderCacheOpts(provider, _sessionId, agent, options = {}
|
|
|
468
474
|
}
|
|
469
475
|
return {};
|
|
470
476
|
}
|
|
471
|
-
|
|
472
|
-
// --- Helpers ---
|
|
@@ -130,9 +130,6 @@ export function prepareAgentSession({
|
|
|
130
130
|
model: runtimeSpec?.model || preset?.model || null,
|
|
131
131
|
provider: runtimeSpec?.provider || preset?.provider || null,
|
|
132
132
|
parentSessionId: parentSessionId || null,
|
|
133
|
-
permission: effectivePermission || null,
|
|
134
|
-
sourceName: sourceName || null,
|
|
135
|
-
cacheKeyOverride: cacheKeyOverride || null,
|
|
136
133
|
});
|
|
137
134
|
} catch {
|
|
138
135
|
/* telemetry best-effort */
|
|
@@ -4,6 +4,7 @@ import { countJsonNextCalls } from './tools/next-call-utils.mjs';
|
|
|
4
4
|
import { parseGrepContextHeader, splitGrepLinePrefix } from './tools/builtin/grep-formatting.mjs';
|
|
5
5
|
import { isReadOnlyNavigationMiss } from './session/result-classification.mjs';
|
|
6
6
|
import { nonNegativeInt } from '../../shared/numbers.mjs';
|
|
7
|
+
import { isUserControlCancellation } from '../../shared/tool-status.mjs';
|
|
7
8
|
import {
|
|
8
9
|
appendAgentTrace,
|
|
9
10
|
normalizeSessionId,
|
|
@@ -128,7 +129,7 @@ function traceAgentCompact({
|
|
|
128
129
|
}
|
|
129
130
|
|
|
130
131
|
const TOOL_ARG_KEYS = {
|
|
131
|
-
read: ['path', 'offset', 'limit', 'line', 'context'],
|
|
132
|
+
read: ['file_path', 'path', 'offset', 'limit', 'line', 'context'],
|
|
132
133
|
grep: ['pattern', 'path', 'glob', 'output_mode', 'head_limit', 'offset'],
|
|
133
134
|
glob: ['pattern', 'path', 'head_limit', 'offset', 'sort'],
|
|
134
135
|
find: ['query', 'path', 'head_limit'],
|
|
@@ -155,6 +156,12 @@ const SECRET_ASSIGNMENT_RE = /((?:PASSWORD|SECRET|TOKEN|API_KEY|APIKEY)\s*=\s*)\
|
|
|
155
156
|
const BEARER_HEADER_RE = /(Authorization:\s*Bearer\s+)\S+/gi;
|
|
156
157
|
// URL query params carrying tokens/keys.
|
|
157
158
|
const SECRET_QUERY_PARAM_RE = /([?&](?:token|api[-_]?key|access[-_]?token|auth|password|secret)=)[^&\s#]+/gi;
|
|
159
|
+
// Long flags: --password <v> / --password=<v> (also --token, --secret, --api-key).
|
|
160
|
+
const SECRET_LONG_FLAG_RE = /(--(?:password|token|secret|api[-_]?key)(?:\s+|=))\S+/gi;
|
|
161
|
+
// Short -p <v> flag (mysql/psql/curl style).
|
|
162
|
+
const SECRET_SHORT_FLAG_RE = /((?:^|\s)-p(?:\s+|=))\S+/g;
|
|
163
|
+
// URL userinfo: scheme://user:secret@host -> scheme://user:[redacted]@host.
|
|
164
|
+
const URL_USERINFO_RE = /(:\/\/[^:/\s@]+:)[^@\s]+(@)/g;
|
|
158
165
|
// Redact shell `command` values that look like they carry secrets. Covers
|
|
159
166
|
// assignment forms, Authorization headers, --password / -p flags, URL
|
|
160
167
|
// userinfo and token query params. The shapes shared with log text are the
|
|
@@ -164,12 +171,9 @@ function _redactShellCommand(cmd) {
|
|
|
164
171
|
let out = cmd;
|
|
165
172
|
out = out.replace(SECRET_ASSIGNMENT_RE, REDACTED);
|
|
166
173
|
out = out.replace(BEARER_HEADER_RE, REDACTED);
|
|
167
|
-
|
|
168
|
-
out = out.replace(
|
|
169
|
-
|
|
170
|
-
out = out.replace(/((?:^|\s)-p(?:\s+|=))\S+/g, '$1[redacted]');
|
|
171
|
-
// URL userinfo: scheme://user:secret@host -> scheme://user:[redacted]@host.
|
|
172
|
-
out = out.replace(/(:\/\/[^:/\s@]+:)[^@\s]+(@)/g, '$1[redacted]$2');
|
|
174
|
+
out = out.replace(SECRET_LONG_FLAG_RE, REDACTED);
|
|
175
|
+
out = out.replace(SECRET_SHORT_FLAG_RE, REDACTED);
|
|
176
|
+
out = out.replace(URL_USERINFO_RE, '$1[redacted]$2');
|
|
173
177
|
out = out.replace(SECRET_QUERY_PARAM_RE, REDACTED);
|
|
174
178
|
return out;
|
|
175
179
|
}
|
|
@@ -208,12 +212,11 @@ function summarizeToolArgs(toolName, args) {
|
|
|
208
212
|
for (const key of keys) {
|
|
209
213
|
if (Object.hasOwn(args, key)) out[key] = compactTraceArgValue(args[key], key);
|
|
210
214
|
}
|
|
211
|
-
|
|
215
|
+
// Arrays are clipped to 6 entries above; the count keeps batch-limit
|
|
216
|
+
// failures (more than 10 read/grep targets) diagnosable.
|
|
217
|
+
for (const countKey of ['edits', 'writes', 'file_path', 'path']) {
|
|
212
218
|
if (Array.isArray(args[countKey])) out[`${countKey}_count`] = args[countKey].length;
|
|
213
219
|
}
|
|
214
|
-
if (toolName === 'read' && Array.isArray(args.path)) {
|
|
215
|
-
out.path_count = args.path.length;
|
|
216
|
-
}
|
|
217
220
|
return Object.keys(out).length ? out : null;
|
|
218
221
|
}
|
|
219
222
|
|
|
@@ -240,6 +243,9 @@ function _redactLogText(text) {
|
|
|
240
243
|
out = out.replace(BEARER_HEADER_RE, REDACTED);
|
|
241
244
|
out = out.replace(SECRET_QUERY_PARAM_RE, REDACTED);
|
|
242
245
|
out = out.replace(SECRET_ASSIGNMENT_RE, REDACTED);
|
|
246
|
+
out = out.replace(SECRET_LONG_FLAG_RE, REDACTED);
|
|
247
|
+
out = out.replace(SECRET_SHORT_FLAG_RE, REDACTED);
|
|
248
|
+
out = out.replace(URL_USERINFO_RE, '$1[redacted]$2');
|
|
243
249
|
return out;
|
|
244
250
|
}
|
|
245
251
|
|
|
@@ -408,17 +414,12 @@ function classifyToolFailure(resultText, toolName) {
|
|
|
408
414
|
if (/\[tool-input-validation\]/.test(text)) return 'schema/args';
|
|
409
415
|
// These are emitted validation/cancellation contracts, not keywords found
|
|
410
416
|
// somewhere in a quoted document, command output, or error preview.
|
|
411
|
-
if (
|
|
412
|
-
/^(?:Browser command interrupted by local user input\.|computer_session_aborted: queued command was cancelled before execution|computer_user_control_active:)/i.test(
|
|
413
|
-
leading
|
|
414
|
-
)
|
|
415
|
-
)
|
|
416
|
-
return 'expected-cancellation';
|
|
417
|
+
if (isUserControlCancellation(leading)) return 'expected-cancellation';
|
|
417
418
|
if (
|
|
418
419
|
/^The arguments provided to `[^`]+` are invalid JSON and could not be parsed:/i.test(leading) ||
|
|
419
420
|
/^new Goal tasks must omit ids; use updates for existing tasks$/i.test(leading) ||
|
|
420
421
|
/^goal task exceeds \d+ characters$/i.test(leading) ||
|
|
421
|
-
/^goal (?:tasks|updates) support at most \d+ entries
|
|
422
|
+
/^goal (?:tasks|updates) support at most \d+ entries(?:$|;)/i.test(leading) ||
|
|
422
423
|
/^goal arguments contain unknown fields:/i.test(leading) ||
|
|
423
424
|
/^Unsupported field for GitHub [\w.]+\.$/i.test(leading) ||
|
|
424
425
|
/^browser action "[^"]+" (?:does not accept input field|requires input\.|accepts only one input target form|fields must be inside input:|input\.[^\n]*(?:must be|requires|accepts at most))/i.test(
|
|
@@ -593,6 +594,8 @@ function traceAgentTool({
|
|
|
593
594
|
// `category`) so trace-level aggregation can exclude expected command
|
|
594
595
|
// exits (`command-exit`) without joining tool-failures.jsonl.
|
|
595
596
|
const errorCategory = resultKind === 'error' ? classifyToolFailure(resultText, toolName) : null;
|
|
597
|
+
const localSearch =
|
|
598
|
+
localSearchTelemetry && Object.keys(localSearchTelemetry).length > 0 ? { ...localSearchTelemetry } : null;
|
|
596
599
|
// Flat shape — fields named exactly as the agent_calls PG columns so
|
|
597
600
|
// insertAgentCalls can pick them up by direct property access without
|
|
598
601
|
// a payload-unwrap step. result_kind has no column and rides as plain
|
|
@@ -617,8 +620,7 @@ function traceAgentTool({
|
|
|
617
620
|
result_bytes_est: resultBytesEst,
|
|
618
621
|
result_lines_est: resultLinesEst,
|
|
619
622
|
grep_coverage: grepCoverage,
|
|
620
|
-
local_search:
|
|
621
|
-
localSearchTelemetry && Object.keys(localSearchTelemetry).length > 0 ? { ...localSearchTelemetry } : null,
|
|
623
|
+
local_search: localSearch,
|
|
622
624
|
payload: {
|
|
623
625
|
...(summarizedTiming ? { timing: summarizedTiming } : {}),
|
|
624
626
|
...(toolBatchId ? { batch: { batch_id: toolBatchId, tool_call_id: toolCallId } } : {}),
|
|
@@ -653,8 +655,7 @@ function traceAgentTool({
|
|
|
653
655
|
result_next_call_count: nextCallCount,
|
|
654
656
|
result_bytes_est: resultBytesEst,
|
|
655
657
|
result_lines_est: resultLinesEst,
|
|
656
|
-
local_search:
|
|
657
|
-
localSearchTelemetry && Object.keys(localSearchTelemetry).length > 0 ? { ...localSearchTelemetry } : null,
|
|
658
|
+
local_search: localSearch,
|
|
658
659
|
cwd: cwd || null,
|
|
659
660
|
},
|
|
660
661
|
});
|
|
@@ -13,8 +13,8 @@ import {
|
|
|
13
13
|
} from '../../../shared/skill-document.mjs';
|
|
14
14
|
import { readSkillToolDependencies, skillToolDependenciesRoot } from '../../../shared/skill-tool-dependencies.mjs';
|
|
15
15
|
import { loadConfig, normalizeSkillsConfig } from '../config.mjs';
|
|
16
|
-
import { builtinFeatureActive, withGrandfatheredBuiltins } from '
|
|
17
|
-
import { SKILL_TOOL } from '
|
|
16
|
+
import { builtinFeatureActive, withGrandfatheredBuiltins } from '../runtime-core/builtin-features.mjs';
|
|
17
|
+
import { SKILL_TOOL } from '../runtime-core/tool-defs.mjs';
|
|
18
18
|
import { extensionScopesFromConfig, skillAllowedForCwd } from '../../../shared/extension-scopes.mjs';
|
|
19
19
|
import { currentSkillContext, latestSkillBodies, skillMessageText } from './skill-state.mjs';
|
|
20
20
|
import { compactPromptManifestText } from './deferred-tools.mjs';
|