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
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
// Decides the release tag a memory runtime build publishes under.
|
|
2
|
+
//
|
|
3
|
+
// Published runtime assets are immutable: every app that shipped a manifest
|
|
4
|
+
// naming a tag verifies that tag's assets by size and sha256, so replacing an
|
|
5
|
+
// asset under a shipped tag breaks the next runtime install of all of those
|
|
6
|
+
// apps. A build that would replace an asset of a shipped tag (any tag at or
|
|
7
|
+
// below the bundled manifest's release_tag) moves to the next patch tag; the
|
|
8
|
+
// manifest sync then points new app builds at it.
|
|
9
|
+
//
|
|
10
|
+
// CLI: node scripts/plan-runtime-release-tag.mjs <requested-tag> <shipped-tag> <needed-assets-file> <published-assets-file>
|
|
11
|
+
// prints the tag to build. The asset files hold one asset name per line.
|
|
12
|
+
import { readFileSync } from 'node:fs';
|
|
13
|
+
import { pathToFileURL } from 'node:url';
|
|
14
|
+
|
|
15
|
+
const TAG_RE = /^runtime-v(\d+)\.(\d+)\.(\d+)$/;
|
|
16
|
+
|
|
17
|
+
function parseTag(tag) {
|
|
18
|
+
const match = TAG_RE.exec(String(tag ?? '').trim());
|
|
19
|
+
if (!match) throw new Error(`invalid runtime release tag: ${tag}`);
|
|
20
|
+
return match.slice(1).map(Number);
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
function compareTags(left, right) {
|
|
24
|
+
const a = parseTag(left);
|
|
25
|
+
const b = parseTag(right);
|
|
26
|
+
for (let index = 0; index < 3; index += 1) {
|
|
27
|
+
if (a[index] !== b[index]) return a[index] - b[index];
|
|
28
|
+
}
|
|
29
|
+
return 0;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
export function planRuntimeReleaseTag({ requestedTag, shippedTag, neededAssets, publishedAssets }) {
|
|
33
|
+
const published = new Set(publishedAssets);
|
|
34
|
+
const replacesPublished = neededAssets.some((name) => published.has(name));
|
|
35
|
+
if (!replacesPublished || compareTags(requestedTag, shippedTag) > 0) return requestedTag;
|
|
36
|
+
const [major, minor, patch] = parseTag(shippedTag);
|
|
37
|
+
return `runtime-v${major}.${minor}.${patch + 1}`;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
function readNames(path) {
|
|
41
|
+
return readFileSync(path, 'utf8')
|
|
42
|
+
.split(/\r?\n/)
|
|
43
|
+
.map((line) => line.trim())
|
|
44
|
+
.filter(Boolean);
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
if (import.meta.url === pathToFileURL(process.argv[1] || '').href) {
|
|
48
|
+
const [requestedTag, shippedTag, neededPath, publishedPath] = process.argv.slice(2);
|
|
49
|
+
process.stdout.write(
|
|
50
|
+
`${planRuntimeReleaseTag({
|
|
51
|
+
requestedTag,
|
|
52
|
+
shippedTag,
|
|
53
|
+
neededAssets: readNames(neededPath),
|
|
54
|
+
publishedAssets: readNames(publishedPath),
|
|
55
|
+
})}\n`
|
|
56
|
+
);
|
|
57
|
+
}
|
|
@@ -56,7 +56,7 @@ export async function prepareRequiredNativeAssets({
|
|
|
56
56
|
}
|
|
57
57
|
const destination = join(stagedToolsDir, fileName);
|
|
58
58
|
await copyFile(installedPath, destination);
|
|
59
|
-
if (
|
|
59
|
+
if (platform !== 'win32') {
|
|
60
60
|
await chmod(destination, 0o755);
|
|
61
61
|
}
|
|
62
62
|
return [name, join(target, fileName)];
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
// Import this FIRST in provider-contract-test.mjs. Runtime modules resolve the
|
|
2
|
+
// data dir (and the config file under it) once, at load, so the isolated dir
|
|
3
|
+
// must exist before any of them is imported; setting it later leaves the
|
|
4
|
+
// developer's real config — including Settings → Developer options — in play.
|
|
5
|
+
//
|
|
6
|
+
// Usage snapshots persist to <data dir>/gateway-oauth-usage-cache.json. Without
|
|
7
|
+
// an isolated data dir these fixtures wrote provider rows into the developer's
|
|
8
|
+
// real cache, where a fake model id could later win a provider fallback lookup.
|
|
9
|
+
import { mkdtempSync, rmSync } from 'node:fs';
|
|
10
|
+
import { tmpdir } from 'node:os';
|
|
11
|
+
import { join } from 'node:path';
|
|
12
|
+
|
|
13
|
+
const PROVIDER_CONTRACT_DATA_DIR = mkdtempSync(join(tmpdir(), 'mixdog-provider-contract-'));
|
|
14
|
+
process.env.MIXDOG_DATA_DIR = PROVIDER_CONTRACT_DATA_DIR;
|
|
15
|
+
process.on('exit', () => {
|
|
16
|
+
try {
|
|
17
|
+
rmSync(PROVIDER_CONTRACT_DATA_DIR, { recursive: true, force: true, maxRetries: 5, retryDelay: 50 });
|
|
18
|
+
} catch {
|
|
19
|
+
/* a still-open handle leaves it for the OS temp cleanup */
|
|
20
|
+
}
|
|
21
|
+
});
|
|
@@ -22,6 +22,7 @@ export const DESKTOP_GATE_PREFIXES = ['apps/desktop/', 'src/', 'vendor/', 'LICEN
|
|
|
22
22
|
export const DESKTOP_GATE_FILES = ['README.md', 'NOTICE.md', ...PACKAGE_MANIFESTS];
|
|
23
23
|
// Desktop packaging/postinstall scripts; `.test` companions ride along.
|
|
24
24
|
export const DESKTOP_GATE_SCRIPT_BASES = [
|
|
25
|
+
'scripts/prune-desktop-runtime',
|
|
25
26
|
'scripts/prune-embedding-runtime',
|
|
26
27
|
'scripts/native-binary-arch',
|
|
27
28
|
'scripts/native-tool-download',
|
|
@@ -9,6 +9,7 @@ import { basename, resolve, win32 } from 'node:path';
|
|
|
9
9
|
import { resolvePluginData } from '../src/runtime/shared/plugin-paths.mjs';
|
|
10
10
|
import { parseSince } from './lib/parse-since.mjs';
|
|
11
11
|
import { argValue, hasFlag } from './lib/cli-args.mjs';
|
|
12
|
+
import { field, sessionId } from './lib/trace-row.mjs';
|
|
12
13
|
|
|
13
14
|
function defaultTracePath() {
|
|
14
15
|
const data = process.env.MIXDOG_DATA_DIR || resolvePluginData() || resolve(homedir(), '.mixdog', 'data');
|
|
@@ -28,17 +29,6 @@ function readRows(path) {
|
|
|
28
29
|
}
|
|
29
30
|
return out;
|
|
30
31
|
}
|
|
31
|
-
function payload(row) {
|
|
32
|
-
return row?.payload && typeof row.payload === 'object' ? row.payload : {};
|
|
33
|
-
}
|
|
34
|
-
function field(row, name) {
|
|
35
|
-
if (row && row[name] != null) return row[name];
|
|
36
|
-
const p = payload(row);
|
|
37
|
-
return p[name] != null ? p[name] : null;
|
|
38
|
-
}
|
|
39
|
-
function sessionId(row) {
|
|
40
|
-
return String(row?.session_id || row?.sessionId || field(row, 'session_id') || '');
|
|
41
|
-
}
|
|
42
32
|
function shortId(id) {
|
|
43
33
|
const s = String(id || '');
|
|
44
34
|
return s.length <= 18 ? s : `${s.slice(0, 10)}…${s.slice(-6)}`;
|
package/scripts/session-diag.mjs
CHANGED
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { existsSync, readFileSync } from 'node:fs';
|
|
3
|
-
import { homedir } from 'node:os';
|
|
4
|
-
import { resolve } from 'node:path';
|
|
5
3
|
import { parseSince } from './lib/parse-since.mjs';
|
|
6
4
|
import { argValue, intArg } from './lib/cli-args.mjs';
|
|
7
5
|
import { stats } from './lib/trace-stats.mjs';
|
|
6
|
+
import { defaultTraceFiles, field, num as numberField } from './lib/trace-row.mjs';
|
|
8
7
|
import { isInclusiveProvider } from '../src/runtime/shared/llm/cost.mjs';
|
|
9
8
|
|
|
10
9
|
const pathArg = argValue('--path', null);
|
|
@@ -16,32 +15,6 @@ const limit = intArg('--limit', 30);
|
|
|
16
15
|
const jsonMode = process.argv.includes('--json');
|
|
17
16
|
const treeMode = process.argv.includes('--tree');
|
|
18
17
|
|
|
19
|
-
const mixdogHome = process.env.MIXDOG_HOME || resolve(homedir(), '.mixdog');
|
|
20
|
-
const mixdogDataDir = process.env.MIXDOG_DATA_DIR || resolve(mixdogHome, 'data');
|
|
21
|
-
|
|
22
|
-
function unique(values) {
|
|
23
|
-
const seen = new Set();
|
|
24
|
-
const out = [];
|
|
25
|
-
for (const value of values) {
|
|
26
|
-
const key = String(value || '');
|
|
27
|
-
if (!key || seen.has(key)) continue;
|
|
28
|
-
seen.add(key);
|
|
29
|
-
out.push(value);
|
|
30
|
-
}
|
|
31
|
-
return out;
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
function defaultTraceFiles() {
|
|
35
|
-
if (pathArg) return [resolve(pathArg)];
|
|
36
|
-
const dirs = dataDir ? [resolve(dataDir)] : [resolve(process.cwd(), '.mixdog', 'data'), mixdogDataDir];
|
|
37
|
-
return unique(
|
|
38
|
-
dirs.flatMap((dir) => [
|
|
39
|
-
resolve(dir, 'history', 'agent-trace.jsonl.1'),
|
|
40
|
-
resolve(dir, 'history', 'agent-trace.jsonl'),
|
|
41
|
-
])
|
|
42
|
-
);
|
|
43
|
-
}
|
|
44
|
-
|
|
45
18
|
function readRows(file) {
|
|
46
19
|
if (!existsSync(file)) return [];
|
|
47
20
|
return readFileSync(file, 'utf8')
|
|
@@ -56,21 +29,6 @@ function readRows(file) {
|
|
|
56
29
|
});
|
|
57
30
|
}
|
|
58
31
|
|
|
59
|
-
function payload(row) {
|
|
60
|
-
return row?.payload && typeof row.payload === 'object' ? row.payload : {};
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
function field(row, name) {
|
|
64
|
-
if (row && row[name] != null) return row[name];
|
|
65
|
-
const p = payload(row);
|
|
66
|
-
return p[name] != null ? p[name] : null;
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
function numberField(row, name) {
|
|
70
|
-
const n = Number(field(row, name));
|
|
71
|
-
return Number.isFinite(n) ? n : null;
|
|
72
|
-
}
|
|
73
|
-
|
|
74
32
|
function values(nums) {
|
|
75
33
|
return nums.filter((n) => Number.isFinite(n));
|
|
76
34
|
}
|
|
@@ -386,7 +344,7 @@ function findSessionsByQuery(summaries, query) {
|
|
|
386
344
|
return summaries.filter((s) => sessionMatchesQuery(s.id, query));
|
|
387
345
|
}
|
|
388
346
|
|
|
389
|
-
const files = defaultTraceFiles();
|
|
347
|
+
const files = defaultTraceFiles({ pathArg, dataDir });
|
|
390
348
|
const sinceTs = parseSince(sinceArg);
|
|
391
349
|
const allRows = files
|
|
392
350
|
.flatMap(readRows)
|
|
@@ -42,9 +42,15 @@ curl -sIL -o /dev/null -w " HTTP %{http_code}\n" "$URL" || {
|
|
|
42
42
|
}
|
|
43
43
|
|
|
44
44
|
echo "==> Test 2: full download + sha256 (manifest match)"
|
|
45
|
-
curl -
|
|
45
|
+
curl -fsSL -o "$WORK/$ASSET" "$URL"
|
|
46
46
|
SHA="$(sha256sum "$WORK/$ASSET" 2>/dev/null | awk '{print $1}' || shasum -a 256 "$WORK/$ASSET" | awk '{print $1}')"
|
|
47
47
|
echo " sha256=$SHA"
|
|
48
|
+
EXPECTED_SHA="$(curl -fsSL "${URL}.sha256" | awk '{print tolower($1)}')"
|
|
49
|
+
[[ "$SHA" == "$EXPECTED_SHA" ]] || {
|
|
50
|
+
echo "FAIL: sha256 mismatch (got $SHA, release sidecar says ${EXPECTED_SHA:-<empty>})"
|
|
51
|
+
exit 1
|
|
52
|
+
}
|
|
53
|
+
echo " PASS: sha256 matches release sidecar"
|
|
48
54
|
|
|
49
55
|
echo "==> Test 3: corrupt tarball — flip one byte and ensure tar fails or runtime detects"
|
|
50
56
|
cp "$WORK/$ASSET" "$WORK/corrupt.tar.gz"
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
// Side-effect module: import FIRST in tests that touch the read-snapshot store.
|
|
2
|
+
// Points the Mixdog data dir at a per-run temp dir before snapshot-store.mjs
|
|
3
|
+
// resolves SNAPSHOT_DIR at module load, so tests never write to the real one.
|
|
4
|
+
import { mkdtempSync, rmSync } from 'node:fs';
|
|
5
|
+
import { tmpdir } from 'node:os';
|
|
6
|
+
import { join } from 'node:path';
|
|
7
|
+
|
|
8
|
+
if (!process.env.MIXDOG_TEST_DATA_DIR_OWNED) {
|
|
9
|
+
const dir = mkdtempSync(join(tmpdir(), 'mixdog-test-data-'));
|
|
10
|
+
process.env.MIXDOG_DATA_DIR = dir;
|
|
11
|
+
process.env.MIXDOG_TEST_DATA_DIR_OWNED = '1';
|
|
12
|
+
process.on('exit', () => {
|
|
13
|
+
try {
|
|
14
|
+
rmSync(dir, { recursive: true, force: true });
|
|
15
|
+
} catch {
|
|
16
|
+
/* best effort */
|
|
17
|
+
}
|
|
18
|
+
});
|
|
19
|
+
}
|
|
@@ -334,7 +334,7 @@ function clangFormatAssets(release) {
|
|
|
334
334
|
};
|
|
335
335
|
const assets = {};
|
|
336
336
|
for (const [platform, name] of Object.entries(map)) {
|
|
337
|
-
assets[platform] =
|
|
337
|
+
assets[platform] = exact(name);
|
|
338
338
|
}
|
|
339
339
|
return { version: `${major}.0.0`, assets };
|
|
340
340
|
}
|
|
@@ -412,8 +412,8 @@ function listTarGz(buffer) {
|
|
|
412
412
|
const real = tar.subarray(offset, offset + 512);
|
|
413
413
|
const realSize = Number.parseInt(real.subarray(124, 136).toString('utf8').replace(/\0.*$/, '').trim(), 8) || 0;
|
|
414
414
|
offset += 512 + Math.ceil(realSize / 512) * 512;
|
|
415
|
-
continue;
|
|
416
415
|
}
|
|
416
|
+
continue;
|
|
417
417
|
} else if (name) {
|
|
418
418
|
names.push(name);
|
|
419
419
|
}
|
|
@@ -430,10 +430,7 @@ function pickBinPath(entries, binNames, fallback) {
|
|
|
430
430
|
}
|
|
431
431
|
const loose = files.filter((file) => {
|
|
432
432
|
const base = file.split('/').pop();
|
|
433
|
-
return binNames.some((want) =>
|
|
434
|
-
const stem = want.replace(/\.exe$/i, '');
|
|
435
|
-
return base === want || base.startsWith(`${stem}-`) || base.startsWith(`${stem}_`) || base.startsWith(stem);
|
|
436
|
-
});
|
|
433
|
+
return binNames.some((want) => base.startsWith(want.replace(/\.exe$/i, '')));
|
|
437
434
|
});
|
|
438
435
|
if (loose.length === 1) return loose[0];
|
|
439
436
|
if (fallback && files.includes(fallback)) return fallback;
|
|
@@ -706,11 +703,12 @@ async function main() {
|
|
|
706
703
|
throw new Error(`--pin unknown engine '${id}'`);
|
|
707
704
|
}
|
|
708
705
|
}
|
|
709
|
-
|
|
710
|
-
await check();
|
|
711
|
-
|
|
706
|
+
try {
|
|
707
|
+
if (checkOnly) await check();
|
|
708
|
+
else await generate(pins);
|
|
709
|
+
} finally {
|
|
710
|
+
await rm(TMP_DIR, { recursive: true, force: true });
|
|
712
711
|
}
|
|
713
|
-
await generate(pins);
|
|
714
712
|
}
|
|
715
713
|
|
|
716
714
|
main().catch((error) => {
|
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
import { readFileSync, existsSync } from 'node:fs';
|
|
5
5
|
import { homedir } from 'node:os';
|
|
6
6
|
import { resolve } from 'node:path';
|
|
7
|
+
import { field as F } from './lib/trace-row.mjs';
|
|
7
8
|
|
|
8
9
|
function sinceArg() {
|
|
9
10
|
const i = process.argv.indexOf('--since');
|
|
@@ -32,10 +33,6 @@ for (const f of files) {
|
|
|
32
33
|
} catch {}
|
|
33
34
|
}
|
|
34
35
|
}
|
|
35
|
-
const F = (r, n) => {
|
|
36
|
-
if (r[n] != null) return r[n];
|
|
37
|
-
return r.payload && r.payload[n] != null ? r.payload[n] : null;
|
|
38
|
-
};
|
|
39
36
|
const bySess = new Map();
|
|
40
37
|
for (const r of rows) {
|
|
41
38
|
const k = r.sessionId || r.session_id || '?';
|
package/src/app.mjs
CHANGED
|
@@ -29,7 +29,7 @@ function warnWhenTuiBundleStale(bundle) {
|
|
|
29
29
|
const hotSources = [
|
|
30
30
|
join(__dirname, 'runtime', 'agent', 'orchestrator', 'session', 'agent-loop.mjs'),
|
|
31
31
|
join(__dirname, 'runtime', 'agent', 'orchestrator', 'session', 'loop', 'stored-tool-args.mjs'),
|
|
32
|
-
join(__dirname, '
|
|
32
|
+
join(__dirname, 'session-runtime', 'services', 'agent-tool.mjs'),
|
|
33
33
|
];
|
|
34
34
|
// The TUI half of the guard used to sample ONE path that does not exist
|
|
35
35
|
// (tui/engine/session-api-ext.mjs), so every real src/tui edit ran silently
|
|
@@ -181,7 +181,9 @@ next step needs.
|
|
|
181
181
|
reported, never auto-applied. Within a tier: comments → dead code →
|
|
182
182
|
defensive code → duplication → complexity → abstraction → performance.
|
|
183
183
|
Use targeted checks at meaningful behavior boundaries and run the
|
|
184
|
-
documented final tests/typecheck once after the round.
|
|
184
|
+
documented final tests/typecheck once after the round. Targeted checks
|
|
185
|
+
include the tests that import each edited module (found with `code_graph`
|
|
186
|
+
dependents or grep). Do not rerun
|
|
185
187
|
unaffected checks after every comment or mechanical edit.
|
|
186
188
|
- Structural items from the table below are CAREFUL unless their row says
|
|
187
189
|
otherwise; dead code follows
|
|
@@ -264,7 +266,8 @@ An unperformed confirmed split stays unfinished.
|
|
|
264
266
|
## 7. Round close and final report
|
|
265
267
|
Close each round in the conversation with a few lines: the partition, its test
|
|
266
268
|
lane, what landed, the verification result including every check that could not
|
|
267
|
-
run, the round's function counts over 50, 100 and 150 lines
|
|
269
|
+
run, the round's function counts over 50, 100 and 150 lines (taken from the
|
|
270
|
+
function-length summary in the `tidy` check/fix result), and whether the
|
|
268
271
|
round is complete or unfinished. Report all three counts: decomposition moves
|
|
269
272
|
mass downward, so functions over 100 falling while functions over 50 rise is
|
|
270
273
|
progress, and a single threshold hides it. Keep the inventory in `references/cleanup-report.md` form as you go;
|
|
@@ -105,7 +105,7 @@ The runtime absorbs what it can (one `a:pPr` per paragraph; package validation a
|
|
|
105
105
|
| `charSpacing`, not `letterSpacing` | ignored silently |
|
|
106
106
|
| Bullets: `bullet: true` on each item's first run, `breakLine: true` on every item but the last; `paraSpaceAfter`, not `lineSpacing`, between items | literal bullet characters and lineSpacing double the spacing |
|
|
107
107
|
| `rectRadius` only on `roundRect`; other corners are their own presets | ignored silently |
|
|
108
|
-
| Solid shape fills only; a gradient is
|
|
108
|
+
| Solid shape fills only; a gradient is drawn with the kit's `gradient()` (saved as a native `a:gradFill`; `gradientField` is its older name) | pptxgenjs gradient fill options are dropped |
|
|
109
109
|
| `margin: 0` when text must align with a shape edge | boxes carry internal padding |
|
|
110
110
|
| Stacked bar/column `dataLabelPosition` in `ctr`, `inEnd`, `inBase` | `outEnd` corrupts the file → runtime `chart_stacked_label_position` |
|
|
111
111
|
| A secondary-axis combo needs `valAxes` and `catAxes` with two entries each | PowerPoint drops the chart → runtime `chart_axis_undeclared` |
|
|
@@ -26,7 +26,7 @@ The cover decision follows the subject and available authorized assets (`directi
|
|
|
26
26
|
Three families; the modifiers in §3 and the lenses in `composition.md` §2 do the rest. Frame ratios are what `aspect:` gets when the picture is generated.
|
|
27
27
|
|
|
28
28
|
**Reference — what the frontier picture page is** (24 picture pages among 400 across thirteen decks, September 2026): twenty of them are *artifacts in a row* — three or four product screenshots, gameplay stills, press clippings, or document excerpts on one baseline across the body, each in its frame (a phone, a browser bar, a hairline) with a caption under it (Spotify's four phones on the green field, Krafton's stills grid, Bond's side-by-side captures, Evans's clipping collage); the picture covers 15-30% of the page and the page reads at 0.5-0.9 ink because the captions carry the argument. A full-bleed photograph under a scrim appears on covers and section marks, almost never on a body page. So a picture page is an evidence page: `tiles()` for the row, `clippings()` for the collage, a caption per artifact that says what it proves, and the title that says what the row shows together.
|
|
29
|
-
**Reference — how the frontier photograph sits and is toned** (tile reads of the same 24 picture pages plus the Samsung, NVIDIA, Sequoia, Coatue, and Kakao decks,
|
|
29
|
+
**Reference — how the frontier photograph sits and is toned** (tile reads of the same 24 picture pages plus the Samsung, NVIDIA, Sequoia, Coatue, and Kakao decks, September 2026): the photographic region covers a median 0.25 of the canvas on a picture page (0.05-0.94; the artifact rows 0.5-0.7 of their box is actual picture, the rest is frame and caption), and sits as a *band* across the width (Samsung: the top 28-44% of every body page, fading into the paper over its lower third — luminance ramp 0.6-0.7; Bond and Coatue: the body band under the title), or as an *inset* on one side (left 9 / right 5 of 24); a full-bleed photograph appears only on a cover or section mark (Kakao p4, Krafton p23: 0.9 of the canvas). Text over the photograph is 0.00-0.02 of the picture's tiles — copy sits beside the picture or on a scrim, never on the image. The photographs are toned, not raw: saturation 0.16-0.46 (median 0.31) and luminance 0.35-0.55 in the picture tiles, where a stock photograph reads 0.6-0.8 — a muted, mid-dark image that native type can sit beside. A gradient with one shape reads 0.01-0.12 photographic and 0.17-0.5 fill: a coloured plane where the reference has a photograph. So the picture is a real photograph (supplied, or generated per §0 in one image language), toned with `treat()`, placed as a band with `fade()` or an inset, with the copy beside it.
|
|
30
30
|
|
|
31
31
|
| Family | Variants and starting geometry | Frame |
|
|
32
32
|
|---|---|---|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { mkdir, mkdtemp, open, readFile, stat, writeFile } from 'node:fs/promises';
|
|
1
|
+
import { mkdir, mkdtemp, open, readFile, rm, stat, writeFile } from 'node:fs/promises';
|
|
2
2
|
import { createHash } from 'node:crypto';
|
|
3
3
|
import { dirname, extname, join, resolve } from 'node:path';
|
|
4
4
|
import { pathToFileURL } from 'node:url';
|
|
@@ -140,9 +140,18 @@ export async function runReview({ input, output, provider, model, effort = 'high
|
|
|
140
140
|
const target = resolve(output);
|
|
141
141
|
await mkdir(dirname(target), { recursive: true });
|
|
142
142
|
const directory = await mkdtemp(join(dirname(target), 'review-input-'));
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
143
|
+
let packet;
|
|
144
|
+
let files;
|
|
145
|
+
let runHeadlessExec;
|
|
146
|
+
let reportFile;
|
|
147
|
+
try {
|
|
148
|
+
({ packet, files } = await preparePacket(input, directory));
|
|
149
|
+
({ runHeadlessExec } = execute ? {} : await import('../../../../headless-exec.mjs'));
|
|
150
|
+
reportFile = await open(target, 'wx');
|
|
151
|
+
} catch (error) {
|
|
152
|
+
await rm(directory, { recursive: true, force: true });
|
|
153
|
+
throw error;
|
|
154
|
+
}
|
|
146
155
|
let raw = '';
|
|
147
156
|
const errors = [];
|
|
148
157
|
const result = {
|
|
@@ -34,42 +34,59 @@ function referencedPaths(body) {
|
|
|
34
34
|
return [...found];
|
|
35
35
|
}
|
|
36
36
|
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
}
|
|
37
|
+
// Resolve, read and parse SKILL.md; a failure is returned as the finished
|
|
38
|
+
// validation result.
|
|
39
|
+
function loadSkillDocument(inputPath) {
|
|
40
|
+
const fail = (message) => ({ failure: { ok: false, errors: [message], warnings: [] } });
|
|
41
|
+
if (!inputPath) return fail('A skill directory path is required.');
|
|
43
42
|
const skillDir = resolve(String(inputPath));
|
|
44
43
|
const skillFile = resolve(skillDir, 'SKILL.md');
|
|
45
44
|
if (!existsSync(skillDir) || !statSync(skillDir).isDirectory()) {
|
|
46
|
-
return
|
|
45
|
+
return fail(`Skill directory not found: ${skillDir}`);
|
|
47
46
|
}
|
|
48
47
|
if (!existsSync(skillFile) || !statSync(skillFile).isFile()) {
|
|
49
|
-
return
|
|
48
|
+
return fail(`SKILL.md not found: ${skillFile}`);
|
|
50
49
|
}
|
|
51
|
-
|
|
52
50
|
let source = '';
|
|
53
51
|
try {
|
|
54
52
|
source = readFileSync(skillFile, 'utf8');
|
|
55
53
|
} catch (error) {
|
|
56
|
-
return {
|
|
57
|
-
ok: false,
|
|
58
|
-
errors: [`Could not read SKILL.md: ${error instanceof Error ? error.message : String(error)}`],
|
|
59
|
-
warnings,
|
|
60
|
-
};
|
|
54
|
+
return fail(`Could not read SKILL.md: ${error instanceof Error ? error.message : String(error)}`);
|
|
61
55
|
}
|
|
62
|
-
|
|
63
|
-
let parsed;
|
|
64
56
|
try {
|
|
65
|
-
parsed
|
|
57
|
+
return { skillDir, parsed: parseSkillDocument(source) };
|
|
66
58
|
} catch (error) {
|
|
67
|
-
return
|
|
68
|
-
ok: false,
|
|
69
|
-
errors: [error instanceof Error ? error.message : String(error)],
|
|
70
|
-
warnings,
|
|
71
|
-
};
|
|
59
|
+
return fail(error instanceof Error ? error.message : String(error));
|
|
72
60
|
}
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
function checkReferencedResources(skillDir, body, errors, warnings) {
|
|
64
|
+
for (const resource of referencedPaths(body)) {
|
|
65
|
+
const resourcePath = resolve(skillDir, resource);
|
|
66
|
+
const rel = relative(skillDir, resourcePath);
|
|
67
|
+
if (!rel || rel.startsWith('..') || isAbsolute(rel)) {
|
|
68
|
+
errors.push(`Referenced resource escapes the skill directory: ${resource}.`);
|
|
69
|
+
} else if (!existsSync(resourcePath)) {
|
|
70
|
+
// A skill that bundles no folder of that kind is usually naming a
|
|
71
|
+
// repository path (`scripts/build.js` of the target repo), which this
|
|
72
|
+
// validator cannot resolve; a missing file inside a bundled folder is
|
|
73
|
+
// a broken link.
|
|
74
|
+
const bundledKind = existsSync(resolve(skillDir, resource.split('/')[0]));
|
|
75
|
+
if (bundledKind) errors.push(`Referenced resource does not exist: ${resource}.`);
|
|
76
|
+
else
|
|
77
|
+
warnings.push(
|
|
78
|
+
`${resource} is not bundled with the skill; if it is a repository path, prefer a repo-relative form the reader can resolve, or bundle it.`
|
|
79
|
+
);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
export function validateSkillDirectory(inputPath) {
|
|
85
|
+
const loaded = loadSkillDocument(inputPath);
|
|
86
|
+
if (loaded.failure) return loaded.failure;
|
|
87
|
+
const { skillDir, parsed } = loaded;
|
|
88
|
+
const errors = [];
|
|
89
|
+
const warnings = [];
|
|
73
90
|
|
|
74
91
|
const { name, description, whenToUse, body, frontmatter } = parsed;
|
|
75
92
|
for (const key of Object.keys(frontmatter)) {
|
|
@@ -133,24 +150,7 @@ export function validateSkillDirectory(inputPath) {
|
|
|
133
150
|
warnings.push(`SKILL.md body has ${bodyLines} lines; progressive disclosure is recommended above 500.`);
|
|
134
151
|
}
|
|
135
152
|
|
|
136
|
-
|
|
137
|
-
const resourcePath = resolve(skillDir, resource);
|
|
138
|
-
const rel = relative(skillDir, resourcePath);
|
|
139
|
-
if (!rel || rel.startsWith('..') || isAbsolute(rel)) {
|
|
140
|
-
errors.push(`Referenced resource escapes the skill directory: ${resource}.`);
|
|
141
|
-
} else if (!existsSync(resourcePath)) {
|
|
142
|
-
// A skill that bundles no folder of that kind is usually naming a
|
|
143
|
-
// repository path (`scripts/build.js` of the target repo), which this
|
|
144
|
-
// validator cannot resolve; a missing file inside a bundled folder is
|
|
145
|
-
// a broken link.
|
|
146
|
-
const bundledKind = existsSync(resolve(skillDir, resource.split('/')[0]));
|
|
147
|
-
if (bundledKind) errors.push(`Referenced resource does not exist: ${resource}.`);
|
|
148
|
-
else
|
|
149
|
-
warnings.push(
|
|
150
|
-
`${resource} is not bundled with the skill; if it is a repository path, prefer a repo-relative form the reader can resolve, or bundle it.`
|
|
151
|
-
);
|
|
152
|
-
}
|
|
153
|
-
}
|
|
153
|
+
checkReferencedResources(skillDir, body, errors, warnings);
|
|
154
154
|
|
|
155
155
|
return {
|
|
156
156
|
ok: errors.length === 0,
|
|
@@ -37,6 +37,7 @@ Excel proves the numbers and makes their meaning readable. Keep sourced inputs a
|
|
|
37
37
|
1. Settle the table first: headers, one row per record, consistent units, numeric cells as numbers (not text), dates as ISO strings (both backends store `2026-09-30` as the Excel date under `yyyy-mm-dd`, so date arithmetic is `=D5-DATE(2026,9,22)`, not `DATEVALUE`), percentages as fractions (`0.15`, formatted `0.0%`). A figure written as text is stored as the number Excel types from it, on both backends — `"1,234"` under `#,##0`, `"15%"` as 0.15 under `0%` — and any other text stays exactly as written (`"1-2"`, `"007"`, `"1e3"`, `"TRUE"` never become a date, a 7, a 1000, or a truth value). Keep the same `design.content` model as the deck or document in the same package.
|
|
38
38
|
2. For a report, design the reading order, sheet roles, column proportions, chart placement and intended screen/print use. Author with native cell, style, merge and chart operations by default. `compose_sheet` is an opt-in preset only when its table-plus-panel structure already fits; do not select it merely to save calls. Batch all known operations. Use `describe format:'xlsx' operation:<op>` when fields are unknown; cell styles belong in `properties`.
|
|
39
39
|
3. Add sheets with `add_sheet`, then native ranges and formulas targeting `sheet`. Use `set_formula` for derived cells and `define_name` for reused inputs. Check representative formulas against the intended ranges before extending a model; clean recalculation proves evaluation, not correct modelling. A design specimen is optional, not required for every workbook.
|
|
40
|
+
If `create` fails, stop dependent `open`, `render`, and `finalize` calls: a failed creation is not an artifact. Correct the reported inputs and resume only from a successful `create` result.
|
|
40
41
|
4. Raw tabular files (`.csv`, `.tsv`) take `set_range` with a 2D `values` array and `append_row`; they carry no styles, formulas, or multiple sheets.
|
|
41
42
|
5. `finalize` recalculates and returns current rendered pages for review; add `auditProfile:'financial-model'` for a decision model. Read the actual images as in `report-design.md`, with concrete keep/fix observations about hierarchy, charts and print layout. Correct material issues and rerender, rather than filling a pass checklist. Complete with `design:{ reviewed:true, reviewToken:<current token>, critique:[{ page:1, verdict:'pass', note:<page-specific observations> }, ...] }`. This records agent review, not user approval. CSV/TSV needs no visual approval. Resolve validation failures against their original baseline, never by reopening as a new baseline.
|
|
42
43
|
|
package/src/headless-exec.mjs
CHANGED
|
@@ -6,10 +6,11 @@ import {
|
|
|
6
6
|
createPristineExecutionBoundary,
|
|
7
7
|
validateExplicitPristineRoute,
|
|
8
8
|
} from './runtime/shared/pristine-execution.mjs';
|
|
9
|
+
import { BUNDLED_PATCH_MANIFEST_PATH } from './runtime/agent/orchestrator/tools/patch-manifest-path.mjs';
|
|
9
10
|
import { hasActiveBackgroundTasks } from './runtime/shared/background-tasks.mjs';
|
|
10
11
|
import { installProcessSignalCleanup } from './runtime/shared/process-shutdown.mjs';
|
|
11
12
|
import { closeUsageLedgers } from './runtime/shared/llm/usage-ledger.mjs';
|
|
12
|
-
import { stopStandaloneMemoryRuntimesForProcess } from './
|
|
13
|
+
import { stopStandaloneMemoryRuntimesForProcess } from './session-runtime/services/memory-runtime-proxy.mjs';
|
|
13
14
|
import { shutdownDaemonForRuntimeRoot } from './standalone/session-client.mjs';
|
|
14
15
|
import { applyUsageDelta, createSessionStats } from './ui/session-stats.mjs';
|
|
15
16
|
import { clean } from './runtime/shared/clean.mjs';
|
|
@@ -68,7 +69,8 @@ export async function runHeadlessExec({
|
|
|
68
69
|
write = (text) => stdout.write(text),
|
|
69
70
|
writeErr = (text) => stderr.write(text),
|
|
70
71
|
usageLogPath = process.env.MIXDOG_USAGE_LOG,
|
|
71
|
-
boundaryFactory =
|
|
72
|
+
boundaryFactory = (route) =>
|
|
73
|
+
createPristineExecutionBoundary({ ...route, patchManifestPath: BUNDLED_PATCH_MANIFEST_PATH }),
|
|
72
74
|
runtimeFactory = null,
|
|
73
75
|
memoryRuntimeCleanup = stopStandaloneMemoryRuntimesForProcess,
|
|
74
76
|
daemonRuntimeCleanup = shutdownDaemonForRuntimeRoot,
|