mixdog 0.9.63 → 0.9.65
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 +3 -0
- package/package.json +9 -2
- package/scripts/code-graph-description-contract.mjs +3 -3
- package/scripts/verify-release-assets.mjs +2 -2
- package/src/runtime/agent/orchestrator/agent-runtime/agent-dispatch.mjs +11 -14
- package/src/runtime/agent/orchestrator/agent-runtime/agent-progress-watchdog.mjs +6 -6
- package/src/runtime/agent/orchestrator/agent-runtime/cache-strategy.mjs +2 -2
- package/src/runtime/agent/orchestrator/agent-trace-format.mjs +1 -0
- package/src/runtime/agent/orchestrator/config.mjs +19 -124
- package/src/runtime/agent/orchestrator/context/collect.mjs +6 -6
- package/src/runtime/agent/orchestrator/dispatch-persist.mjs +2 -2
- package/src/runtime/agent/orchestrator/internal-agents.mjs +2 -2
- package/src/runtime/agent/orchestrator/mcp/child-tree.mjs +1 -1
- package/src/runtime/agent/orchestrator/mcp/client.mjs +4 -4
- package/src/runtime/agent/orchestrator/providers/admission-scheduler.mjs +2 -2
- package/src/runtime/agent/orchestrator/providers/anthropic-betas.mjs +4 -4
- package/src/runtime/agent/orchestrator/providers/anthropic-effort.mjs +2 -2
- package/src/runtime/agent/orchestrator/providers/anthropic-max-tokens.mjs +4 -4
- package/src/runtime/agent/orchestrator/providers/anthropic-messages.mjs +333 -0
- package/src/runtime/agent/orchestrator/providers/anthropic-model-resolve.mjs +2 -2
- package/src/runtime/agent/orchestrator/providers/anthropic-oauth-credentials.mjs +4 -4
- package/src/runtime/agent/orchestrator/providers/anthropic-oauth.mjs +1 -1
- package/src/runtime/agent/orchestrator/providers/anthropic.mjs +3 -277
- package/src/runtime/agent/orchestrator/providers/codex-client-meta.mjs +2 -2
- package/src/runtime/agent/orchestrator/providers/custom-tool-wire.mjs +1 -1
- package/src/runtime/agent/orchestrator/providers/gemini-cache.mjs +2 -2
- package/src/runtime/agent/orchestrator/providers/gemini-stream.mjs +6 -6
- package/src/runtime/agent/orchestrator/providers/grok-oauth-login.mjs +196 -0
- package/src/runtime/agent/orchestrator/providers/grok-oauth-tokens.mjs +460 -0
- package/src/runtime/agent/orchestrator/providers/grok-oauth.mjs +14 -593
- package/src/runtime/agent/orchestrator/providers/lib/anthropic-request-utils.mjs +1 -1
- package/src/runtime/agent/orchestrator/providers/media-normalization.mjs +1 -1
- package/src/runtime/agent/orchestrator/providers/openai-compat-wire.mjs +1 -1
- package/src/runtime/agent/orchestrator/providers/openai-compat-xai.mjs +4 -4
- package/src/runtime/agent/orchestrator/providers/openai-oauth-ws.mjs +2 -2
- package/src/runtime/agent/orchestrator/providers/openai-oauth.mjs +5 -280
- package/src/runtime/agent/orchestrator/providers/openai-responses-payload.mjs +357 -0
- package/src/runtime/agent/orchestrator/providers/openai-ws-headers.mjs +216 -0
- package/src/runtime/agent/orchestrator/providers/openai-ws-pool.mjs +2 -188
- package/src/runtime/agent/orchestrator/providers/openai-ws-stream.mjs +2 -2
- package/src/runtime/agent/orchestrator/providers/openai-ws.mjs +2 -2
- package/src/runtime/agent/orchestrator/providers/opencode-go.mjs +1 -1
- package/src/runtime/agent/orchestrator/providers/provider-catalog-cache.mjs +1 -1
- package/src/runtime/agent/orchestrator/providers/registry.mjs +1 -1
- package/src/runtime/agent/orchestrator/providers/retry-classifier.mjs +2 -2
- package/src/runtime/agent/orchestrator/providers/statusline-route-meta.mjs +1 -1
- package/src/runtime/agent/orchestrator/session/cache/prefetch-cache.mjs +1 -1
- package/src/runtime/agent/orchestrator/session/cache/scoped-cache.mjs +3 -3
- package/src/runtime/agent/orchestrator/session/compact/budget.mjs +2 -2
- package/src/runtime/agent/orchestrator/session/compact/file-reattach.mjs +2 -2
- package/src/runtime/agent/orchestrator/session/compact/summary-schema.mjs +1 -1
- package/src/runtime/agent/orchestrator/session/compact/summary.mjs +1 -1
- package/src/runtime/agent/orchestrator/session/compact/text-utils.mjs +2 -2
- package/src/runtime/agent/orchestrator/session/context-utils.mjs +4 -4
- package/src/runtime/agent/orchestrator/session/loop/deferred-call-through.mjs +1 -1
- package/src/runtime/agent/orchestrator/session/loop/pre-dispatch-deny.mjs +17 -0
- package/src/runtime/agent/orchestrator/session/loop/steering.mjs +1 -1
- package/src/runtime/agent/orchestrator/session/loop/stored-tool-args.mjs +18 -26
- package/src/runtime/agent/orchestrator/session/loop/termination.mjs +1 -1
- package/src/runtime/agent/orchestrator/session/loop/tool-classify.mjs +3 -3
- package/src/runtime/agent/orchestrator/session/manager/compaction-runner.mjs +1 -0
- package/src/runtime/agent/orchestrator/session/manager/context-meta.mjs +1 -1
- package/src/runtime/agent/orchestrator/session/manager/delivered-completions.mjs +1 -1
- package/src/runtime/agent/orchestrator/session/manager/status-telemetry.mjs +1 -1
- package/src/runtime/agent/orchestrator/session/store/live-state.mjs +49 -0
- package/src/runtime/agent/orchestrator/session/store/load-cache.mjs +49 -0
- package/src/runtime/agent/orchestrator/session/store/save-worker.mjs +260 -0
- package/src/runtime/agent/orchestrator/session/store/serialize.mjs +72 -0
- package/src/runtime/agent/orchestrator/session/store/summary-cache.mjs +163 -0
- package/src/runtime/agent/orchestrator/session/store/write-guards.mjs +1 -1
- package/src/runtime/agent/orchestrator/session/store-summary-index.mjs +1 -1
- package/src/runtime/agent/orchestrator/session/store-summary-reader.mjs +4 -1
- package/src/runtime/agent/orchestrator/session/store.mjs +9 -561
- package/src/runtime/agent/orchestrator/session/tool-envelope.mjs +1 -1
- package/src/runtime/agent/orchestrator/session/tool-result-offload.mjs +2 -2
- package/src/runtime/agent/orchestrator/stall-policy.mjs +11 -11
- package/src/runtime/agent/orchestrator/tools/bash-policy-scan.mjs +1 -1
- package/src/runtime/agent/orchestrator/tools/bash-session.mjs +2 -2
- package/src/runtime/agent/orchestrator/tools/builtin/advisory-lock.mjs +1 -1
- package/src/runtime/agent/orchestrator/tools/builtin/arg-guard.mjs +2 -2
- package/src/runtime/agent/orchestrator/tools/builtin/atomic-write.mjs +1 -1
- package/src/runtime/agent/orchestrator/tools/builtin/bash-tool.mjs +2 -154
- package/src/runtime/agent/orchestrator/tools/builtin/cache-layers.mjs +1 -1
- package/src/runtime/agent/orchestrator/tools/builtin/cwd-utils.mjs +1 -1
- package/src/runtime/agent/orchestrator/tools/builtin/fs-reachability.mjs +1 -1
- package/src/runtime/agent/orchestrator/tools/builtin/fuzzy-match.mjs +1 -1
- package/src/runtime/agent/orchestrator/tools/builtin/glob-walk.mjs +1 -1
- package/src/runtime/agent/orchestrator/tools/builtin/path-locks.mjs +1 -1
- package/src/runtime/agent/orchestrator/tools/builtin/path-utils.mjs +1 -1
- package/src/runtime/agent/orchestrator/tools/builtin/read-args.mjs +2 -2
- package/src/runtime/agent/orchestrator/tools/builtin/read-formatting.mjs +2 -3
- package/src/runtime/agent/orchestrator/tools/builtin/read-image-resize.mjs +4 -4
- package/src/runtime/agent/orchestrator/tools/builtin/read-open.mjs +1 -1
- package/src/runtime/agent/orchestrator/tools/builtin/read-streaming.mjs +1 -1
- package/src/runtime/agent/orchestrator/tools/builtin/rg-runner.mjs +2 -2
- package/src/runtime/agent/orchestrator/tools/builtin/search-path-diagnostics.mjs +5 -5
- package/src/runtime/agent/orchestrator/tools/builtin/shell-analysis.mjs +1 -1
- package/src/runtime/agent/orchestrator/tools/builtin/shell-job-paths.mjs +2 -2
- package/src/runtime/agent/orchestrator/tools/builtin/shell-job-process.mjs +2 -2
- package/src/runtime/agent/orchestrator/tools/builtin/shell-job-spawn.mjs +519 -0
- package/src/runtime/agent/orchestrator/tools/builtin/shell-jobs.mjs +5 -449
- package/src/runtime/agent/orchestrator/tools/builtin/snapshot-helpers.mjs +1 -1
- package/src/runtime/agent/orchestrator/tools/builtin/task-tool.mjs +212 -0
- package/src/runtime/agent/orchestrator/tools/builtin.mjs +1 -1
- package/src/runtime/agent/orchestrator/tools/code-graph/build.mjs +1 -7
- package/src/runtime/agent/orchestrator/tools/code-graph/disk-cache.mjs +9 -36
- package/src/runtime/agent/orchestrator/tools/code-graph/dispatch.mjs +15 -3
- package/src/runtime/agent/orchestrator/tools/code-graph/search-references.mjs +429 -0
- package/src/runtime/agent/orchestrator/tools/code-graph/search.mjs +2 -395
- package/src/runtime/agent/orchestrator/tools/code-graph/symbol-index.mjs +2 -2
- package/src/runtime/agent/orchestrator/tools/code-graph/text-mask.mjs +1 -1
- package/src/runtime/agent/orchestrator/tools/code-graph/trusted-roots.mjs +1 -1
- package/src/runtime/agent/orchestrator/tools/code-graph-prewarm-worker.mjs +1 -1
- package/src/runtime/agent/orchestrator/tools/code-graph-state.mjs +3 -3
- package/src/runtime/agent/orchestrator/tools/mutation-planner.mjs +5 -5
- package/src/runtime/agent/orchestrator/tools/next-call-utils.mjs +1 -1
- package/src/runtime/agent/orchestrator/tools/patch/dispatch.mjs +1 -1
- package/src/runtime/agent/orchestrator/tools/patch/matcher.mjs +7 -7
- package/src/runtime/agent/orchestrator/tools/patch/orchestrator.mjs +72 -9
- package/src/runtime/agent/orchestrator/tools/patch/parsing.mjs +4 -4
- package/src/runtime/agent/orchestrator/tools/patch/paths.mjs +1 -1
- package/src/runtime/agent/orchestrator/tools/patch/v4a-convert.mjs +1 -1
- package/src/runtime/agent/orchestrator/tools/patch-tool-defs.mjs +4 -4
- package/src/runtime/agent/orchestrator/tools/patch.mjs +1 -1
- package/src/runtime/agent/orchestrator/tools/result-compression.mjs +3 -3
- package/src/runtime/agent/orchestrator/tools/shell-command.mjs +2 -444
- package/src/runtime/agent/orchestrator/tools/shell-exec-output.mjs +505 -0
- package/src/runtime/agent/orchestrator/tools/shell-exec-policy.mjs +2 -2
- package/src/runtime/agent/orchestrator/tools/shell-snapshot.mjs +1 -1
- package/src/runtime/channels/lib/backend-dispatch.mjs +20 -5
- package/src/runtime/channels/lib/scheduler.mjs +1 -1
- package/src/runtime/channels/lib/telegram-format.mjs +1 -1
- package/src/runtime/channels/lib/voice-runtime-fetcher.mjs +4 -4
- package/src/runtime/channels/tool-defs.mjs +2 -3
- package/src/runtime/memory/index.mjs +1 -5
- package/src/runtime/memory/lib/core-memory-candidates.mjs +357 -0
- package/src/runtime/memory/lib/core-memory-store.mjs +7 -357
- package/src/runtime/memory/lib/cycle-signatures.mjs +1 -1
- package/src/runtime/memory/lib/embedding-model-config.mjs +1 -1
- package/src/runtime/memory/lib/embedding-provider.mjs +1 -5
- package/src/runtime/memory/lib/embedding-worker.mjs +1 -5
- package/src/runtime/memory/lib/ko-morph.mjs +2 -2
- package/src/runtime/memory/lib/memory-config-flags.mjs +2 -5
- package/src/runtime/memory/lib/memory-cycle-requests.mjs +3 -7
- package/src/runtime/memory/lib/memory-cycle1.mjs +4 -8
- package/src/runtime/memory/lib/memory-cycle2-gate.mjs +1 -1
- package/src/runtime/memory/lib/memory-cycle2-mutations.mjs +1 -1
- package/src/runtime/memory/lib/memory-cycle2-shared.mjs +2 -5
- package/src/runtime/memory/lib/memory-cycle3.mjs +1 -5
- package/src/runtime/memory/lib/memory-embed.mjs +2 -6
- package/src/runtime/memory/lib/memory-log.mjs +8 -0
- package/src/runtime/memory/lib/memory-ops-policy.mjs +4 -8
- package/src/runtime/memory/lib/memory-recall-scope-filter.mjs +1 -1
- package/src/runtime/memory/lib/memory-recall-store.mjs +2 -193
- package/src/runtime/memory/lib/memory-score.mjs +1 -1
- package/src/runtime/memory/lib/memory-text-utils.mjs +2 -2
- package/src/runtime/memory/lib/memory.mjs +2 -6
- package/src/runtime/memory/lib/pg/adapter.mjs +2 -6
- package/src/runtime/memory/lib/pg/process.mjs +1 -5
- package/src/runtime/memory/lib/pg/supervisor.mjs +1 -5
- package/src/runtime/memory/lib/recall-format.mjs +2 -2
- package/src/runtime/memory/lib/recall-scoring.mjs +195 -0
- package/src/runtime/memory/lib/runtime-fetcher.mjs +1 -5
- package/src/runtime/memory/lib/trace-store.mjs +2 -6
- package/src/runtime/search/lib/http-fetch.mjs +6 -6
- package/src/runtime/search/lib/web-tools.mjs +2 -2
- package/src/runtime/shared/buffered-appender.mjs +1 -1
- package/src/runtime/shared/child-guardian.mjs +1 -1
- package/src/runtime/shared/child-spawn-gate.mjs +1 -1
- package/src/runtime/shared/config.mjs +4 -4
- package/src/runtime/shared/launcher-control.mjs +9 -10
- package/src/runtime/shared/llm/index.mjs +5 -20
- package/src/runtime/shared/markdown-frontmatter.mjs +1 -1
- package/src/runtime/shared/memory-snapshot.mjs +4 -4
- package/src/runtime/shared/pristine-execution.mjs +1 -1
- package/src/runtime/shared/process-lifecycle.mjs +0 -1
- package/src/runtime/shared/process-shutdown.mjs +1 -1
- package/src/runtime/shared/resource-admission.mjs +2 -2
- package/src/runtime/shared/schedule-session-run.mjs +1 -1
- package/src/runtime/shared/schedules-db.mjs +1 -1
- package/src/runtime/shared/service-discovery.mjs +2 -2
- package/src/runtime/shared/staged-update.mjs +6 -6
- package/src/runtime/shared/tool-execution-contract.mjs +1 -1
- package/src/runtime/shared/tool-primitives.mjs +1 -1
- package/src/runtime/shared/tool-surface.mjs +2 -2
- package/src/runtime/shared/turn-snapshot.mjs +184 -0
- package/src/runtime/shared/update-checker.mjs +1 -1
- package/src/runtime/shared/user-cwd.mjs +3 -3
- package/src/runtime/shared/user-data-guard.mjs +4 -4
- package/src/runtime/shared/workspace-router.mjs +5 -5
- package/src/session-runtime/config-helpers.mjs +2 -3
- package/src/session-runtime/config-lifecycle.mjs +1 -1
- package/src/session-runtime/hitch-profile.mjs +1 -1
- package/src/session-runtime/lifecycle-api.mjs +6 -4
- package/src/session-runtime/model-recency.mjs +5 -5
- package/src/session-runtime/plugin-mcp.mjs +1 -1
- package/src/session-runtime/provider-request-snapshot.mjs +338 -0
- package/src/session-runtime/runtime-core.mjs +4 -0
- package/src/session-runtime/session-text.mjs +4 -4
- package/src/session-runtime/session-turn-api.mjs +7 -0
- package/src/session-runtime/tool-catalog-schema.mjs +197 -0
- package/src/session-runtime/tool-catalog.mjs +6 -483
- package/src/session-runtime/tool-defs.mjs +1 -1
- package/src/standalone/agent-task-status.mjs +1 -1
- package/src/standalone/agent-tool/helpers.mjs +2 -2
- package/src/standalone/channel-admin.mjs +4 -4
- package/src/standalone/explore-tool.mjs +3 -3
- package/src/standalone/hook-bus/config.mjs +1 -1
- package/src/standalone/hook-bus/constants.mjs +1 -1
- package/src/standalone/hook-bus/rules.mjs +1 -1
- package/src/standalone/projects.mjs +1 -1
- package/src/standalone/provider-admin.mjs +2 -2
- package/src/tui/App.jsx +1 -1
- package/src/tui/app/app-format.mjs +2 -2
- package/src/tui/app/clipboard.mjs +3 -3
- package/src/tui/app/input-parsers.mjs +1 -1
- package/src/tui/app/text-layout.mjs +1 -1
- package/src/tui/app/transcript-row-estimate.mjs +360 -0
- package/src/tui/app/transcript-window.mjs +5 -347
- package/src/tui/app/use-mouse-input.mjs +1 -1
- package/src/tui/app/use-prompt-handlers.mjs +1 -1
- package/src/tui/components/tool-execution/surface-detail.mjs +9 -9
- package/src/tui/components/tool-execution/text-format.mjs +2 -2
- package/src/tui/components/tool-output-format.mjs +7 -7
- package/src/tui/display-width.mjs +4 -4
- package/src/tui/dist/index.mjs +187 -99
- package/src/tui/engine/agent-envelope.mjs +5 -5
- package/src/tui/engine/live-share.mjs +100 -0
- package/src/tui/engine/notification-plan.mjs +1 -1
- package/src/tui/engine/queue-helpers.mjs +3 -3
- package/src/tui/engine/render-timing.mjs +4 -5
- package/src/tui/engine/session-api-ext.mjs +6 -3
- package/src/tui/engine/tool-result-status.mjs +5 -5
- package/src/tui/engine/tool-result-text.mjs +1 -1
- package/src/tui/engine/transcript-spill.mjs +585 -0
- package/src/tui/engine/tui-steering-persist.mjs +1 -1
- package/src/tui/engine.mjs +29 -474
- package/src/tui/lib/voice-setup.mjs +1 -1
- package/src/tui/markdown/format-token.mjs +1 -1
- package/src/tui/markdown/render-ansi.mjs +1 -1
- package/src/tui/markdown/table-layout.mjs +4 -4
- package/src/tui/paste-attachments.mjs +1 -1
- package/src/tui/prompt-history-store.mjs +3 -3
- package/src/tui/statusline-ansi-bridge.mjs +2 -2
- package/src/tui/theme.mjs +1 -1
- package/src/tui/transcript-tool-failures.mjs +2 -2
- package/src/ui/ansi.mjs +0 -9
- package/src/ui/statusline-format.mjs +2 -4
- package/scripts/_bench-cwc.json +0 -20
- package/scripts/_jitter-fuzz.jsx +0 -42
- package/scripts/_jitter-fuzz2.jsx +0 -30
- package/scripts/_jitter-probe.jsx +0 -35
- package/scripts/_jp2.jsx +0 -16
- package/scripts/_smoke_wd.mjs +0 -7
- package/scripts/abort-recovery-test.mjs +0 -175
- package/scripts/agent-dispatch-abort-compose-test.mjs +0 -31
- package/scripts/agent-live-arg-guard-smoke.mjs +0 -20
- package/scripts/agent-live-path-suffix-smoke.mjs +0 -34
- package/scripts/agent-live-toolcall-args-smoke.mjs +0 -45
- package/scripts/agent-loop-policy-test.mjs +0 -37
- package/scripts/agent-model-liveness-test.mjs +0 -763
- package/scripts/agent-parallel-smoke.mjs +0 -435
- package/scripts/agent-route-batch-test.mjs +0 -40
- package/scripts/agent-tag-reuse-smoke.mjs +0 -441
- package/scripts/agent-terminal-reap-test.mjs +0 -252
- package/scripts/agent-trace-io-test.mjs +0 -133
- package/scripts/ansi-color-capability-test.mjs +0 -90
- package/scripts/anthropic-admission-retry-integration-test.mjs +0 -119
- package/scripts/anthropic-maxtokens-test.mjs +0 -119
- package/scripts/anthropic-oauth-refresh-race-test.mjs +0 -397
- package/scripts/anthropic-transport-policy-test.mjs +0 -726
- package/scripts/apply-patch-edit-smoke.mjs +0 -71
- package/scripts/arg-guard-test.mjs +0 -93
- package/scripts/async-notify-settlement-test.mjs +0 -99
- package/scripts/atomic-lock-tryonce-test.mjs +0 -125
- package/scripts/background-task-meta-smoke.mjs +0 -38
- package/scripts/bench-run.mjs +0 -508
- package/scripts/boot-smoke.mjs +0 -137
- package/scripts/build-runtime-windows.ps1 +0 -242
- package/scripts/channel-daemon-smoke.mjs +0 -1103
- package/scripts/code-graph-aggregate-cwd-test.mjs +0 -158
- package/scripts/code-graph-disk-hit-test.mjs +0 -290
- package/scripts/code-graph-dispatch-test.mjs +0 -96
- package/scripts/code-graph-root-federation-test.mjs +0 -273
- package/scripts/compact-active-turn-test.mjs +0 -68
- package/scripts/compact-file-reattach-test.mjs +0 -88
- package/scripts/compact-pressure-test.mjs +0 -788
- package/scripts/compact-prior-context-flatten-test.mjs +0 -252
- package/scripts/compact-recall-digest-test.mjs +0 -57
- package/scripts/compact-smoke.mjs +0 -1017
- package/scripts/compact-trigger-migration-smoke.mjs +0 -261
- package/scripts/compacted-placeholder-scrub-test.mjs +0 -63
- package/scripts/context-mcp-metering-test.mjs +0 -1406
- package/scripts/debounced-skills-async-save-test.mjs +0 -57
- package/scripts/deferred-tool-loading-test.mjs +0 -250
- package/scripts/desktop-session-bridge-test.mjs +0 -1013
- package/scripts/dispatch-persist-recovery-test.mjs +0 -141
- package/scripts/embedding-worker-exit-test.mjs +0 -76
- package/scripts/execution-completion-dedup-test.mjs +0 -205
- package/scripts/execution-pending-resume-kick-test.mjs +0 -151
- package/scripts/execution-resume-esc-integration-test.mjs +0 -176
- package/scripts/explore-bench-tmp.mjs +0 -36
- package/scripts/explore-bench.mjs +0 -248
- package/scripts/explore-prompt-policy-test.mjs +0 -256
- package/scripts/explore-timeout-cancel-test.mjs +0 -345
- package/scripts/find-fuzzy-hidden-test.mjs +0 -267
- package/scripts/forwarder-rebind-tail-test.mjs +0 -67
- package/scripts/freevar-smoke.mjs +0 -98
- package/scripts/gemini-provider-test.mjs +0 -1448
- package/scripts/generate-oc-icons.mjs +0 -11
- package/scripts/grok-oauth-refresh-race-test.mjs +0 -273
- package/scripts/headless-pristine-execution-test.mjs +0 -614
- package/scripts/hook-bus-test.mjs +0 -552
- package/scripts/ingest-pure-conversation-smoke.mjs +0 -175
- package/scripts/internal-comms-bench-test.mjs +0 -226
- package/scripts/internal-comms-bench.mjs +0 -853
- package/scripts/internal-comms-smoke.mjs +0 -277
- package/scripts/internal-tools-normalization-test.mjs +0 -62
- package/scripts/interrupted-turn-history-test.mjs +0 -399
- package/scripts/lead-workflow-smoke.mjs +0 -592
- package/scripts/lifecycle-api-test.mjs +0 -137
- package/scripts/live-share-test.mjs +0 -148
- package/scripts/live-worker-smoke.mjs +0 -333
- package/scripts/log-writer-guard-smoke.mjs +0 -131
- package/scripts/maintenance-default-routes-test.mjs +0 -164
- package/scripts/max-output-recovery-persist-test.mjs +0 -81
- package/scripts/max-output-recovery-test.mjs +0 -368
- package/scripts/mcp-client-normalization-test.mjs +0 -45
- package/scripts/mcp-grace-deferred-test.mjs +0 -225
- package/scripts/memory-core-input-test.mjs +0 -167
- package/scripts/memory-cycle-routing-test.mjs +0 -111
- package/scripts/memory-meta-concurrency-test.mjs +0 -20
- package/scripts/memory-pg-recovery-test.mjs +0 -59
- package/scripts/memory-rule-contract-test.mjs +0 -93
- package/scripts/model-list-sanitize-test.mjs +0 -37
- package/scripts/mouse-tracking-restore-smoke.mjs +0 -107
- package/scripts/native-edit-wire-test.mjs +0 -152
- package/scripts/notify-completion-mirror-test.mjs +0 -73
- package/scripts/openai-oauth-refresh-race-test.mjs +0 -120
- package/scripts/openai-oauth-ws-1006-retry-test.mjs +0 -954
- package/scripts/openai-ws-early-settle-test.mjs +0 -216
- package/scripts/output-style-bench.mjs +0 -292
- package/scripts/output-style-smoke.mjs +0 -145
- package/scripts/parent-abort-link-test.mjs +0 -90
- package/scripts/patch-binary-cache-test.mjs +0 -181
- package/scripts/path-suffix-test.mjs +0 -57
- package/scripts/pending-completion-drop-test.mjs +0 -239
- package/scripts/pending-messages-lock-nonblocking-test.mjs +0 -62
- package/scripts/pretool-ask-runtime-test.mjs +0 -54
- package/scripts/process-lifecycle-test.mjs +0 -461
- package/scripts/prompt-immediate-render-test.mjs +0 -89
- package/scripts/prompt-input-parity-test.mjs +0 -145
- package/scripts/provider-admission-scheduler-test.mjs +0 -681
- package/scripts/provider-contract-test.mjs +0 -632
- package/scripts/provider-stream-stall-test.mjs +0 -276
- package/scripts/provider-toolcall-test.mjs +0 -3063
- package/scripts/reactive-compact-persist-smoke.mjs +0 -203
- package/scripts/recall-bench.mjs +0 -359
- package/scripts/resource-admission-test.mjs +0 -792
- package/scripts/result-classification-test.mjs +0 -75
- package/scripts/rg-runner-test.mjs +0 -240
- package/scripts/routing-corpus-test.mjs +0 -349
- package/scripts/sanitize-tool-pairs-test.mjs +0 -260
- package/scripts/session-bench-cache-break-test.mjs +0 -102
- package/scripts/session-bench.mjs +0 -1708
- package/scripts/session-context-bench.mjs +0 -344
- package/scripts/session-heartbeat-lifecycle-test.mjs +0 -68
- package/scripts/session-ingest-compaction-smoke.mjs +0 -279
- package/scripts/session-ingest-smoke.mjs +0 -177
- package/scripts/session-orphan-sweep-test.mjs +0 -109
- package/scripts/set-effort-config-test.mjs +0 -41
- package/scripts/shell-failure-diagnostics-test.mjs +0 -280
- package/scripts/shell-hardening-test.mjs +0 -209
- package/scripts/shell-jobs-windows-hide-test.mjs +0 -164
- package/scripts/ship-mode-test.mjs +0 -98
- package/scripts/smoke-loop-failure-summary-test.mjs +0 -38
- package/scripts/smoke-loop-failure-summary.mjs +0 -16
- package/scripts/smoke-loop-report.mjs +0 -221
- package/scripts/smoke-loop.mjs +0 -202
- package/scripts/smoke-runtime-negative.ps1 +0 -106
- package/scripts/statusline-quota-hysteresis-test.mjs +0 -62
- package/scripts/steering-drain-buckets-test.mjs +0 -467
- package/scripts/steering-fold-provenance-test.mjs +0 -71
- package/scripts/streaming-tail-window-test.mjs +0 -175
- package/scripts/submit-commandbusy-race-test.mjs +0 -257
- package/scripts/task-bench.mjs +0 -205
- package/scripts/terminal-bench-isolation-guards-test.mjs +0 -102
- package/scripts/termio-input-smoke.mjs +0 -199
- package/scripts/tool-result-hook-test.mjs +0 -48
- package/scripts/tool-smoke.mjs +0 -2453
- package/scripts/tool-tui-presentation-test.mjs +0 -286
- package/scripts/toolcall-args-test.mjs +0 -239
- package/scripts/tui-ambiguous-width-test.mjs +0 -113
- package/scripts/tui-background-failure-smoke.mjs +0 -73
- package/scripts/tui-perf-run.ps1 +0 -26
- package/scripts/tui-render-smoke.mjs +0 -90
- package/scripts/tui-runtime-load-bench-entry.jsx +0 -608
- package/scripts/tui-runtime-load-bench.mjs +0 -50
- package/scripts/tui-store-frame-batch-test.mjs +0 -99
- package/scripts/tui-transcript-jitter-harness-entry.jsx +0 -383
- package/scripts/tui-transcript-perf-test.mjs +0 -934
- package/scripts/usage-metrics-epoch-smoke.mjs +0 -114
- package/scripts/verify-release-assets-test.mjs +0 -281
- package/scripts/web-fetch-routing-test.mjs +0 -158
- package/scripts/webhook-smoke.mjs +0 -201
- package/scripts/windows-hide-spawn-options-test.mjs +0 -19
- package/scripts/worker-notify-rejection-test.mjs +0 -51
- package/scripts/write-backpressure-test.mjs +0 -147
package/src/tui/dist/index.mjs
CHANGED
|
@@ -203,7 +203,6 @@ __export(paste_attachments_exports, {
|
|
|
203
203
|
formatPastedTextRef: () => formatPastedTextRef,
|
|
204
204
|
imageAttachmentFromBuffer: () => imageAttachmentFromBuffer,
|
|
205
205
|
imageReferenceIds: () => imageReferenceIds,
|
|
206
|
-
isImagePathText: () => isImagePathText,
|
|
207
206
|
pastedTextReferenceIds: () => pastedTextReferenceIds,
|
|
208
207
|
readClipboardImageAttachment: () => readClipboardImageAttachment,
|
|
209
208
|
readClipboardText: () => readClipboardText,
|
|
@@ -1243,7 +1242,6 @@ __export(config_exports, {
|
|
|
1243
1242
|
deleteSecret: () => deleteSecret,
|
|
1244
1243
|
diagnoseDiscordTokenValue: () => diagnoseDiscordTokenValue,
|
|
1245
1244
|
getAgentApiKey: () => getAgentApiKey,
|
|
1246
|
-
getCapabilities: () => getCapabilities,
|
|
1247
1245
|
getDiscordToken: () => getDiscordToken,
|
|
1248
1246
|
getOpenAIUsageSessionKey: () => getOpenAIUsageSessionKey,
|
|
1249
1247
|
getOpenCodeGoAuthCookie: () => getOpenCodeGoAuthCookie,
|
|
@@ -1252,7 +1250,6 @@ __export(config_exports, {
|
|
|
1252
1250
|
hasStoredSecret: () => hasStoredSecret,
|
|
1253
1251
|
invalidateConfigReadCache: () => invalidateConfigReadCache,
|
|
1254
1252
|
invalidateSecretReadCache: () => invalidateSecretReadCache,
|
|
1255
|
-
isDiscordSnowflake: () => isDiscordSnowflake,
|
|
1256
1253
|
pendingConfigWrites: () => pendingConfigWrites,
|
|
1257
1254
|
readConfig: () => readConfig,
|
|
1258
1255
|
readSection: () => readSection,
|
|
@@ -1261,9 +1258,7 @@ __export(config_exports, {
|
|
|
1261
1258
|
updateConfig: () => updateConfig,
|
|
1262
1259
|
updateConfigAsync: () => updateConfigAsync,
|
|
1263
1260
|
updateSection: () => updateSection,
|
|
1264
|
-
updateSectionAsync: () => updateSectionAsync
|
|
1265
|
-
writeSection: () => writeSection,
|
|
1266
|
-
writeSectionAsync: () => writeSectionAsync
|
|
1261
|
+
updateSectionAsync: () => updateSectionAsync
|
|
1267
1262
|
});
|
|
1268
1263
|
import { readFileSync as readFileSync5, statSync as statSync4, mkdirSync as mkdirSync5, existsSync as existsSync6 } from "fs";
|
|
1269
1264
|
import { join as join6, dirname as dirname6 } from "path";
|
|
@@ -1454,13 +1449,6 @@ function updateConfig(updater) {
|
|
|
1454
1449
|
});
|
|
1455
1450
|
return saved;
|
|
1456
1451
|
}
|
|
1457
|
-
function writeSection(section, data) {
|
|
1458
|
-
withConfigLock(() => {
|
|
1459
|
-
const all = readAllForRmW();
|
|
1460
|
-
all[section] = stripGeneratedMarker(data);
|
|
1461
|
-
writeAll(all);
|
|
1462
|
-
});
|
|
1463
|
-
}
|
|
1464
1452
|
function updateSection(section, updater) {
|
|
1465
1453
|
withConfigLock(() => {
|
|
1466
1454
|
const all = readAllForRmW();
|
|
@@ -1528,13 +1516,6 @@ function updateConfigAsync(updater) {
|
|
|
1528
1516
|
return saved;
|
|
1529
1517
|
});
|
|
1530
1518
|
}
|
|
1531
|
-
function writeSectionAsync(section, data) {
|
|
1532
|
-
return trackConfigWrite(() => withConfigLockAsync(async () => {
|
|
1533
|
-
const all = readAllForRmW();
|
|
1534
|
-
all[section] = stripGeneratedMarker(data);
|
|
1535
|
-
await writeAllAsync(all);
|
|
1536
|
-
}));
|
|
1537
|
-
}
|
|
1538
1519
|
function updateSectionAsync(section, updater) {
|
|
1539
1520
|
return trackConfigWrite(() => withConfigLockAsync(async () => {
|
|
1540
1521
|
const all = readAllForRmW();
|
|
@@ -1543,18 +1524,6 @@ function updateSectionAsync(section, updater) {
|
|
|
1543
1524
|
await writeAllAsync(all);
|
|
1544
1525
|
}));
|
|
1545
1526
|
}
|
|
1546
|
-
function readCapabilities() {
|
|
1547
|
-
const raw = readAll().capabilities;
|
|
1548
|
-
const out = { ...CAPABILITY_DEFAULTS };
|
|
1549
|
-
if (raw && typeof raw === "object") {
|
|
1550
|
-
if (raw.homeAccess === true) out.homeAccess = true;
|
|
1551
|
-
else if (raw.homeAccess === false) out.homeAccess = false;
|
|
1552
|
-
}
|
|
1553
|
-
return out;
|
|
1554
|
-
}
|
|
1555
|
-
function getCapabilities() {
|
|
1556
|
-
return readCapabilities();
|
|
1557
|
-
}
|
|
1558
1527
|
function isDiscordSnowflake(value) {
|
|
1559
1528
|
return /^\d{17,20}$/.test(String(value || "").trim());
|
|
1560
1529
|
}
|
|
@@ -2618,7 +2587,7 @@ import React21 from "react";
|
|
|
2618
2587
|
import { render } from "../../../vendor/ink/build/index.js";
|
|
2619
2588
|
import { closeSync as closeSync3, constants as fsConstants, createWriteStream as createWriteStream2, mkdirSync as mkdirSync9, openSync as openSync3, readSync } from "node:fs";
|
|
2620
2589
|
import { tmpdir as tmpdir3 } from "node:os";
|
|
2621
|
-
import { dirname as
|
|
2590
|
+
import { dirname as dirname12, join as join15 } from "node:path";
|
|
2622
2591
|
import { performance as performance3 } from "node:perf_hooks";
|
|
2623
2592
|
import { format } from "node:util";
|
|
2624
2593
|
|
|
@@ -6233,16 +6202,7 @@ var magenta = sgr("38;2;177;133;219");
|
|
|
6233
6202
|
var cyan = sgr("38;2;136;136;136");
|
|
6234
6203
|
var white = sgr("38;2;198;198;198");
|
|
6235
6204
|
var gray = sgr("38;2;198;198;198");
|
|
6236
|
-
var brightRed = sgr("38;2;220;70;88");
|
|
6237
6205
|
var brightGreen = sgr("38;2;0;185;88");
|
|
6238
|
-
var brightYellow = sgr("38;2;255;210;80");
|
|
6239
|
-
var brightBlue = sgr("38;2;93;173;255");
|
|
6240
|
-
var brightMagenta = sgr("38;2;190;150;230");
|
|
6241
|
-
var brightCyan = sgr("38;2;168;168;168");
|
|
6242
|
-
var brightWhite = sgr("38;2;220;220;220");
|
|
6243
|
-
var bgGray = sgr("100");
|
|
6244
|
-
var bgBlack = sgr("40");
|
|
6245
|
-
var bgBlue = sgr("44");
|
|
6246
6206
|
|
|
6247
6207
|
// src/tui/statusline-ansi-bridge.mjs
|
|
6248
6208
|
var RESET2 = "\x1B[0m";
|
|
@@ -12413,41 +12373,7 @@ function wrapExpandedResultLines(logicalLines, columns = 80, { isShell = false }
|
|
|
12413
12373
|
return out.length > 0 ? clampAll(out) : [" "];
|
|
12414
12374
|
}
|
|
12415
12375
|
|
|
12416
|
-
// src/tui/app/transcript-
|
|
12417
|
-
function positiveIntEnv(name, fallback) {
|
|
12418
|
-
const value = Number(process.env[name]);
|
|
12419
|
-
return Number.isFinite(value) && value > 0 ? Math.floor(value) : fallback;
|
|
12420
|
-
}
|
|
12421
|
-
var TRANSCRIPT_WINDOW_MIN_ITEMS = positiveIntEnv("MIXDOG_TUI_TRANSCRIPT_WINDOW_MIN_ITEMS", 12);
|
|
12422
|
-
var TRANSCRIPT_WINDOW_OVERSCAN_ROWS = positiveIntEnv("MIXDOG_TUI_TRANSCRIPT_OVERSCAN_ROWS", 16);
|
|
12423
|
-
var TRANSCRIPT_WINDOW_MAX_ITEMS = positiveIntEnv("MIXDOG_TUI_TRANSCRIPT_WINDOW_ITEMS", 80);
|
|
12424
|
-
var TRANSCRIPT_WINDOW_TAIL_OVERSCAN_ROWS = positiveIntEnv("MIXDOG_TUI_TRANSCRIPT_TAIL_OVERSCAN_ROWS", 4);
|
|
12425
|
-
var TRANSCRIPT_WINDOW_TAIL_MAX_ITEMS = positiveIntEnv("MIXDOG_TUI_TRANSCRIPT_WINDOW_TAIL_ITEMS", 20);
|
|
12426
|
-
var SELECTION_PAINT_INTERVAL_MS = positiveIntEnv("MIXDOG_TUI_SELECTION_PAINT_MS", 24);
|
|
12427
|
-
var SCROLL_COALESCE_MS = positiveIntEnv("MIXDOG_TUI_SCROLL_COALESCE_MS", 16);
|
|
12428
|
-
var PROMPT_HISTORY_LIMIT = 50;
|
|
12429
|
-
function boolEnvDefaultTrue(name) {
|
|
12430
|
-
const raw = process.env[name];
|
|
12431
|
-
if (raw == null) return true;
|
|
12432
|
-
const v = String(raw).trim().toLowerCase();
|
|
12433
|
-
return !(v === "0" || v === "false" || v === "off" || v === "no");
|
|
12434
|
-
}
|
|
12435
|
-
var TRANSCRIPT_MEASURED_ROWS = boolEnvDefaultTrue("MIXDOG_TUI_TRANSCRIPT_MEASURED");
|
|
12436
|
-
function selectionRectsEqual(a, b) {
|
|
12437
|
-
if (a === b) return true;
|
|
12438
|
-
if (!a || !b) return false;
|
|
12439
|
-
return a.mode === b.mode && a.x1 === b.x1 && a.y1 === b.y1 && a.x2 === b.x2 && a.y2 === b.y2 && a.clipY1 === b.clipY1 && a.clipY2 === b.clipY2 && a.captureText === b.captureText;
|
|
12440
|
-
}
|
|
12441
|
-
function shiftSelectionRectY(rect, deltaY) {
|
|
12442
|
-
const dy = Math.round(Number(deltaY) || 0);
|
|
12443
|
-
if (!rect || dy === 0) return rect || null;
|
|
12444
|
-
return { ...rect, y1: rect.y1 + dy, y2: rect.y2 + dy };
|
|
12445
|
-
}
|
|
12446
|
-
function comparePoints(a, b) {
|
|
12447
|
-
if (a.y !== b.y) return a.y < b.y ? -1 : 1;
|
|
12448
|
-
if (a.x !== b.x) return a.x < b.x ? -1 : 1;
|
|
12449
|
-
return 0;
|
|
12450
|
-
}
|
|
12376
|
+
// src/tui/app/transcript-row-estimate.mjs
|
|
12451
12377
|
function wrappedLineRows2(line, width) {
|
|
12452
12378
|
const text = String(line);
|
|
12453
12379
|
const full = displayWidth(text);
|
|
@@ -12746,6 +12672,42 @@ function estimateTranscriptItemRows(item, columns, toolOutputExpanded, attachedT
|
|
|
12746
12672
|
return 1;
|
|
12747
12673
|
}
|
|
12748
12674
|
}
|
|
12675
|
+
|
|
12676
|
+
// src/tui/app/transcript-window.mjs
|
|
12677
|
+
function positiveIntEnv(name, fallback) {
|
|
12678
|
+
const value = Number(process.env[name]);
|
|
12679
|
+
return Number.isFinite(value) && value > 0 ? Math.floor(value) : fallback;
|
|
12680
|
+
}
|
|
12681
|
+
var TRANSCRIPT_WINDOW_MIN_ITEMS = positiveIntEnv("MIXDOG_TUI_TRANSCRIPT_WINDOW_MIN_ITEMS", 12);
|
|
12682
|
+
var TRANSCRIPT_WINDOW_OVERSCAN_ROWS = positiveIntEnv("MIXDOG_TUI_TRANSCRIPT_OVERSCAN_ROWS", 16);
|
|
12683
|
+
var TRANSCRIPT_WINDOW_MAX_ITEMS = positiveIntEnv("MIXDOG_TUI_TRANSCRIPT_WINDOW_ITEMS", 80);
|
|
12684
|
+
var TRANSCRIPT_WINDOW_TAIL_OVERSCAN_ROWS = positiveIntEnv("MIXDOG_TUI_TRANSCRIPT_TAIL_OVERSCAN_ROWS", 4);
|
|
12685
|
+
var TRANSCRIPT_WINDOW_TAIL_MAX_ITEMS = positiveIntEnv("MIXDOG_TUI_TRANSCRIPT_WINDOW_TAIL_ITEMS", 20);
|
|
12686
|
+
var SELECTION_PAINT_INTERVAL_MS = positiveIntEnv("MIXDOG_TUI_SELECTION_PAINT_MS", 24);
|
|
12687
|
+
var SCROLL_COALESCE_MS = positiveIntEnv("MIXDOG_TUI_SCROLL_COALESCE_MS", 16);
|
|
12688
|
+
var PROMPT_HISTORY_LIMIT = 50;
|
|
12689
|
+
function boolEnvDefaultTrue(name) {
|
|
12690
|
+
const raw = process.env[name];
|
|
12691
|
+
if (raw == null) return true;
|
|
12692
|
+
const v = String(raw).trim().toLowerCase();
|
|
12693
|
+
return !(v === "0" || v === "false" || v === "off" || v === "no");
|
|
12694
|
+
}
|
|
12695
|
+
var TRANSCRIPT_MEASURED_ROWS = boolEnvDefaultTrue("MIXDOG_TUI_TRANSCRIPT_MEASURED");
|
|
12696
|
+
function selectionRectsEqual(a, b) {
|
|
12697
|
+
if (a === b) return true;
|
|
12698
|
+
if (!a || !b) return false;
|
|
12699
|
+
return a.mode === b.mode && a.x1 === b.x1 && a.y1 === b.y1 && a.x2 === b.x2 && a.y2 === b.y2 && a.clipY1 === b.clipY1 && a.clipY2 === b.clipY2 && a.captureText === b.captureText;
|
|
12700
|
+
}
|
|
12701
|
+
function shiftSelectionRectY(rect, deltaY) {
|
|
12702
|
+
const dy = Math.round(Number(deltaY) || 0);
|
|
12703
|
+
if (!rect || dy === 0) return rect || null;
|
|
12704
|
+
return { ...rect, y1: rect.y1 + dy, y2: rect.y2 + dy };
|
|
12705
|
+
}
|
|
12706
|
+
function comparePoints(a, b) {
|
|
12707
|
+
if (a.y !== b.y) return a.y < b.y ? -1 : 1;
|
|
12708
|
+
if (a.x !== b.x) return a.x < b.x ? -1 : 1;
|
|
12709
|
+
return 0;
|
|
12710
|
+
}
|
|
12749
12711
|
function lowerBound(values, target) {
|
|
12750
12712
|
let lo = 0;
|
|
12751
12713
|
let hi = values.length;
|
|
@@ -23642,7 +23604,7 @@ function App({ store, initialStatusLine = "", forceOnboarding = false }) {
|
|
|
23642
23604
|
StatusLine,
|
|
23643
23605
|
{
|
|
23644
23606
|
sessionId: state.sessionId,
|
|
23645
|
-
clientHostPid: state.clientHostPid,
|
|
23607
|
+
clientHostPid: state.ownerClientHostPid || state.clientHostPid,
|
|
23646
23608
|
provider: state.provider,
|
|
23647
23609
|
model: state.model,
|
|
23648
23610
|
effort: state.effort,
|
|
@@ -23672,11 +23634,8 @@ function App({ store, initialStatusLine = "", forceOnboarding = false }) {
|
|
|
23672
23634
|
|
|
23673
23635
|
// src/tui/engine.mjs
|
|
23674
23636
|
import { performance as performance2 } from "node:perf_hooks";
|
|
23675
|
-
import { mkdtempSync, readFileSync as
|
|
23676
|
-
import {
|
|
23677
|
-
import { tmpdir as tmpdir2 } from "node:os";
|
|
23678
|
-
import { basename as basename6, dirname as dirname10, join as join13 } from "node:path";
|
|
23679
|
-
import { Worker } from "node:worker_threads";
|
|
23637
|
+
import { mkdtempSync as mkdtempSync2, readFileSync as readFileSync11, readdirSync as readdirSync5, rmSync as rmSync4, statSync as statSync7, watch as watch2, writeFileSync as writeFileSync8 } from "node:fs";
|
|
23638
|
+
import { basename as basename7, dirname as dirname11, join as join14 } from "node:path";
|
|
23680
23639
|
|
|
23681
23640
|
// src/runtime/shared/tool-execution-contract.mjs
|
|
23682
23641
|
function clean2(value) {
|
|
@@ -28090,6 +28049,9 @@ function createEngineApiB(bag) {
|
|
|
28090
28049
|
getUsageDashboard: async (options = {}) => {
|
|
28091
28050
|
return await runtime.getUsageDashboard?.(options);
|
|
28092
28051
|
},
|
|
28052
|
+
getTurnReviewDiff: async () => {
|
|
28053
|
+
return await runtime.getTurnReviewDiff?.() ?? { supported: false, files: [], patch: "" };
|
|
28054
|
+
},
|
|
28093
28055
|
getOnboardingStatus: () => {
|
|
28094
28056
|
return runtime.getOnboardingStatus?.() || { completed: true, workflowRoutes: {} };
|
|
28095
28057
|
},
|
|
@@ -29382,6 +29344,7 @@ function createLiveShare({
|
|
|
29382
29344
|
getPublishedState,
|
|
29383
29345
|
listeners,
|
|
29384
29346
|
onRemoteSubmit,
|
|
29347
|
+
onRemoteAbort,
|
|
29385
29348
|
onOwnerClosed,
|
|
29386
29349
|
viewerApply
|
|
29387
29350
|
}) {
|
|
@@ -29392,6 +29355,7 @@ function createLiveShare({
|
|
|
29392
29355
|
let lastItems = null;
|
|
29393
29356
|
let lastTail = null;
|
|
29394
29357
|
let lastSpinner = null;
|
|
29358
|
+
let lastLiveSig = "";
|
|
29395
29359
|
const broadcast = (frame) => {
|
|
29396
29360
|
if (sockets.size === 0) return;
|
|
29397
29361
|
const line = frameLine(frame);
|
|
@@ -29402,12 +29366,50 @@ function createLiveShare({
|
|
|
29402
29366
|
}
|
|
29403
29367
|
}
|
|
29404
29368
|
};
|
|
29369
|
+
const LIVE_STATS_KEYS = [
|
|
29370
|
+
"currentContextSource",
|
|
29371
|
+
"currentContextTokens",
|
|
29372
|
+
"currentEstimatedContextTokens",
|
|
29373
|
+
"currentContextUpdatedAt",
|
|
29374
|
+
"costUsd",
|
|
29375
|
+
"turns",
|
|
29376
|
+
"inputTokens",
|
|
29377
|
+
"outputTokens",
|
|
29378
|
+
"latestInputTokens",
|
|
29379
|
+
"latestPromptTokens",
|
|
29380
|
+
"contextTokens"
|
|
29381
|
+
];
|
|
29382
|
+
const liveStateOf = (st) => {
|
|
29383
|
+
const stats = st.stats && typeof st.stats === "object" ? st.stats : {};
|
|
29384
|
+
const statsSubset = {};
|
|
29385
|
+
for (const key of LIVE_STATS_KEYS) {
|
|
29386
|
+
if (stats[key] !== void 0) statsSubset[key] = stats[key];
|
|
29387
|
+
}
|
|
29388
|
+
return {
|
|
29389
|
+
busy: st.busy === true,
|
|
29390
|
+
commandBusy: st.commandBusy === true,
|
|
29391
|
+
queued: (Array.isArray(st.queued) ? st.queued : []).map((entry) => ({
|
|
29392
|
+
id: entry?.id,
|
|
29393
|
+
text: String(entry?.displayText ?? entry?.text ?? entry?.message ?? "").slice(0, 2e3),
|
|
29394
|
+
...entry?.enqueuedAt ? { enqueuedAt: entry.enqueuedAt } : {}
|
|
29395
|
+
})),
|
|
29396
|
+
activeToolSummary: st.activeToolSummary || null,
|
|
29397
|
+
agentWorkers: Array.isArray(st.agentWorkers) ? st.agentWorkers : [],
|
|
29398
|
+
agentJobs: Array.isArray(st.agentJobs) ? st.agentJobs : [],
|
|
29399
|
+
ownerClientHostPid: Number(st.clientHostPid) || process.pid,
|
|
29400
|
+
displayContextWindow: Number(st.displayContextWindow) || 0,
|
|
29401
|
+
compactBoundaryTokens: Number(st.compactBoundaryTokens) || 0,
|
|
29402
|
+
autoCompactTokenLimit: Number(st.autoCompactTokenLimit) || 0,
|
|
29403
|
+
stats: statsSubset
|
|
29404
|
+
};
|
|
29405
|
+
};
|
|
29405
29406
|
const fullFrame = (st) => ({
|
|
29406
29407
|
t: "full",
|
|
29407
29408
|
sessionId: serverId,
|
|
29408
29409
|
items: Array.isArray(st.items) ? st.items : [],
|
|
29409
29410
|
tail: st.streamingTail || null,
|
|
29410
|
-
spinner: st.spinner || null
|
|
29411
|
+
spinner: st.spinner || null,
|
|
29412
|
+
live: liveStateOf(st)
|
|
29411
29413
|
});
|
|
29412
29414
|
const onPublish = () => {
|
|
29413
29415
|
const st = getPublishedState();
|
|
@@ -29415,6 +29417,7 @@ function createLiveShare({
|
|
|
29415
29417
|
lastItems = st.items;
|
|
29416
29418
|
lastTail = st.streamingTail;
|
|
29417
29419
|
lastSpinner = st.spinner;
|
|
29420
|
+
lastLiveSig = "";
|
|
29418
29421
|
return;
|
|
29419
29422
|
}
|
|
29420
29423
|
const frame = { t: "delta" };
|
|
@@ -29473,6 +29476,13 @@ function createLiveShare({
|
|
|
29473
29476
|
lastSpinner = st.spinner;
|
|
29474
29477
|
dirty = true;
|
|
29475
29478
|
}
|
|
29479
|
+
const live = liveStateOf(st);
|
|
29480
|
+
const liveSig = JSON.stringify(live);
|
|
29481
|
+
if (liveSig !== lastLiveSig) {
|
|
29482
|
+
frame.live = live;
|
|
29483
|
+
lastLiveSig = liveSig;
|
|
29484
|
+
dirty = true;
|
|
29485
|
+
}
|
|
29476
29486
|
if (dirty) broadcast(frame);
|
|
29477
29487
|
};
|
|
29478
29488
|
listeners.add(onPublish);
|
|
@@ -29521,6 +29531,8 @@ function createLiveShare({
|
|
|
29521
29531
|
attachLineReader(socket, (frame) => {
|
|
29522
29532
|
if (frame.t === "submit" && typeof frame.text === "string" && frame.text.trim()) {
|
|
29523
29533
|
onRemoteSubmit(frame.text);
|
|
29534
|
+
} else if (frame.t === "abort") {
|
|
29535
|
+
onRemoteAbort?.();
|
|
29524
29536
|
} else if (frame.t === "sync") {
|
|
29525
29537
|
try {
|
|
29526
29538
|
socket.write(frameLine(fullFrame(getPublishedState())));
|
|
@@ -29538,6 +29550,7 @@ function createLiveShare({
|
|
|
29538
29550
|
lastItems = st.items;
|
|
29539
29551
|
lastTail = st.streamingTail;
|
|
29540
29552
|
lastSpinner = st.spinner;
|
|
29553
|
+
lastLiveSig = JSON.stringify(liveStateOf(st));
|
|
29541
29554
|
socket.write(frameLine(fullFrame(st)));
|
|
29542
29555
|
} catch {
|
|
29543
29556
|
try {
|
|
@@ -29623,11 +29636,47 @@ function createLiveShare({
|
|
|
29623
29636
|
if (exists) viewerApply.patchItem(item.id, item);
|
|
29624
29637
|
else viewerApply.appendItems([item]);
|
|
29625
29638
|
};
|
|
29639
|
+
const applyLiveState = (live) => {
|
|
29640
|
+
if (!live || typeof live !== "object") return;
|
|
29641
|
+
const patch = {
|
|
29642
|
+
busy: live.busy === true,
|
|
29643
|
+
commandBusy: live.commandBusy === true,
|
|
29644
|
+
queued: Array.isArray(live.queued) ? live.queued : [],
|
|
29645
|
+
activeToolSummary: live.activeToolSummary || null,
|
|
29646
|
+
agentWorkers: Array.isArray(live.agentWorkers) ? live.agentWorkers : [],
|
|
29647
|
+
agentJobs: Array.isArray(live.agentJobs) ? live.agentJobs : [],
|
|
29648
|
+
ownerClientHostPid: Number(live.ownerClientHostPid) || 0
|
|
29649
|
+
};
|
|
29650
|
+
for (const key of ["displayContextWindow", "compactBoundaryTokens", "autoCompactTokenLimit"]) {
|
|
29651
|
+
if (Number(live[key]) > 0) patch[key] = Number(live[key]);
|
|
29652
|
+
}
|
|
29653
|
+
if (live.stats && typeof live.stats === "object" && Object.keys(live.stats).length > 0) {
|
|
29654
|
+
const current = viewerApply.getState().stats;
|
|
29655
|
+
patch.stats = { ...current && typeof current === "object" ? current : {}, ...live.stats };
|
|
29656
|
+
}
|
|
29657
|
+
viewerApply.set(patch);
|
|
29658
|
+
};
|
|
29659
|
+
const clearMirroredLiveState = () => {
|
|
29660
|
+
try {
|
|
29661
|
+
viewerApply?.set?.({
|
|
29662
|
+
busy: false,
|
|
29663
|
+
commandBusy: false,
|
|
29664
|
+
spinner: null,
|
|
29665
|
+
queued: [],
|
|
29666
|
+
activeToolSummary: null,
|
|
29667
|
+
agentWorkers: [],
|
|
29668
|
+
agentJobs: [],
|
|
29669
|
+
ownerClientHostPid: 0
|
|
29670
|
+
});
|
|
29671
|
+
} catch {
|
|
29672
|
+
}
|
|
29673
|
+
};
|
|
29626
29674
|
const applyViewerFrame = (frame, socket) => {
|
|
29627
29675
|
if (frame.t === "full") {
|
|
29628
29676
|
viewerApply.replaceItems(Array.isArray(frame.items) ? frame.items : []);
|
|
29629
29677
|
if (frame.tail) viewerApply.updateStreamingTail(frame.tail.id, frame.tail);
|
|
29630
29678
|
viewerApply.set({ spinner: frame.spinner || null });
|
|
29679
|
+
applyLiveState(frame.live);
|
|
29631
29680
|
return;
|
|
29632
29681
|
}
|
|
29633
29682
|
if (frame.t !== "delta") return;
|
|
@@ -29653,6 +29702,7 @@ function createLiveShare({
|
|
|
29653
29702
|
else viewerApply.clearStreamingTail();
|
|
29654
29703
|
}
|
|
29655
29704
|
if ("spinner" in frame) viewerApply.set({ spinner: frame.spinner || null });
|
|
29705
|
+
if ("live" in frame) applyLiveState(frame.live);
|
|
29656
29706
|
};
|
|
29657
29707
|
const stopClient = () => {
|
|
29658
29708
|
const closing = client;
|
|
@@ -29695,6 +29745,7 @@ function createLiveShare({
|
|
|
29695
29745
|
socket.destroy();
|
|
29696
29746
|
} catch {
|
|
29697
29747
|
}
|
|
29748
|
+
if (wasUp) clearMirroredLiveState();
|
|
29698
29749
|
if (wasUp) onOwnerClosed?.(id, ownerClosed);
|
|
29699
29750
|
};
|
|
29700
29751
|
socket.on("error", () => down(false));
|
|
@@ -29739,6 +29790,15 @@ function createLiveShare({
|
|
|
29739
29790
|
return false;
|
|
29740
29791
|
}
|
|
29741
29792
|
},
|
|
29793
|
+
sendAbort() {
|
|
29794
|
+
if (!clientUp || !client) return false;
|
|
29795
|
+
try {
|
|
29796
|
+
client.write(frameLine({ t: "abort" }));
|
|
29797
|
+
return true;
|
|
29798
|
+
} catch {
|
|
29799
|
+
return false;
|
|
29800
|
+
}
|
|
29801
|
+
},
|
|
29742
29802
|
dispose() {
|
|
29743
29803
|
listeners.delete(onPublish);
|
|
29744
29804
|
stopServer();
|
|
@@ -29747,16 +29807,12 @@ function createLiveShare({
|
|
|
29747
29807
|
};
|
|
29748
29808
|
}
|
|
29749
29809
|
|
|
29750
|
-
// src/tui/engine.mjs
|
|
29751
|
-
|
|
29752
|
-
|
|
29753
|
-
|
|
29754
|
-
|
|
29755
|
-
}
|
|
29756
|
-
var LEAD_TURN_TIMEOUT_MS = (() => {
|
|
29757
|
-
const value = Number(process.env.MIXDOG_LEAD_TURN_TIMEOUT_MS);
|
|
29758
|
-
return Number.isFinite(value) && value > 0 ? Math.max(1e4, Math.round(value)) : 5 * 6e4;
|
|
29759
|
-
})();
|
|
29810
|
+
// src/tui/engine/transcript-spill.mjs
|
|
29811
|
+
import { mkdtempSync, readFileSync as readFileSync10, readdirSync as readdirSync4, rmSync as rmSync3, statSync as statSync6, watch, writeFileSync as writeFileSync7 } from "node:fs";
|
|
29812
|
+
import { randomUUID } from "node:crypto";
|
|
29813
|
+
import { tmpdir as tmpdir2 } from "node:os";
|
|
29814
|
+
import { basename as basename6, dirname as dirname10, join as join13 } from "node:path";
|
|
29815
|
+
import { Worker } from "node:worker_threads";
|
|
29760
29816
|
var TUI_DEBUG2 = /^(1|true|yes|on)$/i.test(String(process.env.MIXDOG_TUI_DEBUG || ""));
|
|
29761
29817
|
var tuiDebug = (msg) => {
|
|
29762
29818
|
if (!TUI_DEBUG2) return;
|
|
@@ -30238,6 +30294,17 @@ function createEngineItemMutators({
|
|
|
30238
30294
|
};
|
|
30239
30295
|
return { patchItem, settleStreamingTail };
|
|
30240
30296
|
}
|
|
30297
|
+
|
|
30298
|
+
// src/tui/engine.mjs
|
|
30299
|
+
var SESSION_RUNTIME_MODULE = import.meta.url.replace(/\\/g, "/").includes("/tui/dist/") ? "../../mixdog-session-runtime.mjs" : "../mixdog-session-runtime.mjs";
|
|
30300
|
+
var TOOL_APPROVAL_TIMEOUT_MS = (() => {
|
|
30301
|
+
const value = Number(process.env.MIXDOG_TOOL_APPROVAL_TIMEOUT_MS);
|
|
30302
|
+
return Number.isFinite(value) && value > 0 ? Math.max(1e3, Math.round(value)) : 12e4;
|
|
30303
|
+
})();
|
|
30304
|
+
var LEAD_TURN_TIMEOUT_MS = (() => {
|
|
30305
|
+
const value = Number(process.env.MIXDOG_LEAD_TURN_TIMEOUT_MS);
|
|
30306
|
+
return Number.isFinite(value) && value > 0 ? Math.max(1e4, Math.round(value)) : 5 * 6e4;
|
|
30307
|
+
})();
|
|
30241
30308
|
async function createEngineSession({
|
|
30242
30309
|
provider: providerName,
|
|
30243
30310
|
model,
|
|
@@ -30701,6 +30768,10 @@ async function createEngineSession({
|
|
|
30701
30768
|
lifecycle.runtimePulseTimer = setInterval(() => {
|
|
30702
30769
|
if (flags.disposed) return;
|
|
30703
30770
|
if (flags.pendingSessionReset) return;
|
|
30771
|
+
if (bag.liveShareMirroring?.()) {
|
|
30772
|
+
set({ ...routeState() });
|
|
30773
|
+
return;
|
|
30774
|
+
}
|
|
30704
30775
|
syncContextStats({ allowEstimated: true });
|
|
30705
30776
|
set({
|
|
30706
30777
|
...routeState(),
|
|
@@ -30846,6 +30917,13 @@ async function createEngineSession({
|
|
|
30846
30917
|
bag.enqueue(text);
|
|
30847
30918
|
void bag.drain();
|
|
30848
30919
|
},
|
|
30920
|
+
onRemoteAbort: () => {
|
|
30921
|
+
if (flags.disposed || state.sessionRemoteAttached) return;
|
|
30922
|
+
try {
|
|
30923
|
+
api.abort?.();
|
|
30924
|
+
} catch {
|
|
30925
|
+
}
|
|
30926
|
+
},
|
|
30849
30927
|
onOwnerClosed: (id) => {
|
|
30850
30928
|
const timer2 = setTimeout(() => {
|
|
30851
30929
|
if (flags.disposed || !state.sessionRemoteAttached) return;
|
|
@@ -30871,6 +30949,7 @@ async function createEngineSession({
|
|
|
30871
30949
|
} catch {
|
|
30872
30950
|
}
|
|
30873
30951
|
};
|
|
30952
|
+
bag.liveShareMirroring = () => state.sessionRemoteAttached && liveShare.viewerConnected();
|
|
30874
30953
|
if (typeof api.submit === "function") {
|
|
30875
30954
|
const baseSubmit = api.submit;
|
|
30876
30955
|
api.submit = (prompt, options = {}) => {
|
|
@@ -30881,6 +30960,15 @@ async function createEngineSession({
|
|
|
30881
30960
|
return baseSubmit(prompt, options);
|
|
30882
30961
|
};
|
|
30883
30962
|
}
|
|
30963
|
+
if (typeof api.abort === "function") {
|
|
30964
|
+
const baseAbort = api.abort;
|
|
30965
|
+
api.abort = (...args) => {
|
|
30966
|
+
if (state.sessionRemoteAttached && liveShare.viewerConnected() && liveShare.sendAbort()) {
|
|
30967
|
+
return true;
|
|
30968
|
+
}
|
|
30969
|
+
return baseAbort(...args);
|
|
30970
|
+
};
|
|
30971
|
+
}
|
|
30884
30972
|
const reconcileLiveShareNow = () => {
|
|
30885
30973
|
try {
|
|
30886
30974
|
liveShare.ensure();
|
|
@@ -30905,8 +30993,8 @@ async function createEngineSession({
|
|
|
30905
30993
|
try {
|
|
30906
30994
|
const spoolPath = String(runtime.pendingSpoolPath?.() || "");
|
|
30907
30995
|
if (spoolPath) {
|
|
30908
|
-
const spoolFile =
|
|
30909
|
-
spoolWatcher =
|
|
30996
|
+
const spoolFile = basename7(spoolPath);
|
|
30997
|
+
spoolWatcher = watch2(dirname11(spoolPath), { persistent: false }, (_event, filename) => {
|
|
30910
30998
|
if (filename && String(filename) !== spoolFile) return;
|
|
30911
30999
|
if (flags.disposed || spoolDebounce) return;
|
|
30912
31000
|
spoolDebounce = setTimeout(() => {
|
|
@@ -30975,7 +31063,7 @@ async function createEngineSession({
|
|
|
30975
31063
|
}
|
|
30976
31064
|
let mtime = 0;
|
|
30977
31065
|
try {
|
|
30978
|
-
mtime =
|
|
31066
|
+
mtime = statSync7(sessionPath(id)).mtimeMs || 0;
|
|
30979
31067
|
} catch {
|
|
30980
31068
|
return;
|
|
30981
31069
|
}
|
|
@@ -31223,7 +31311,7 @@ function scheduleHardExit(code = 0) {
|
|
|
31223
31311
|
timer2.unref?.();
|
|
31224
31312
|
}
|
|
31225
31313
|
function resolveTuiStderrLogPath() {
|
|
31226
|
-
return process.env.MIXDOG_TUI_STDERR_LOG ||
|
|
31314
|
+
return process.env.MIXDOG_TUI_STDERR_LOG || join15(process.env.MIXDOG_RUNTIME_ROOT || join15(tmpdir3(), "mixdog"), "mixdog-tui.stderr.log");
|
|
31227
31315
|
}
|
|
31228
31316
|
function ansiFg(rgb) {
|
|
31229
31317
|
const m = /rgb\((\d+),\s*(\d+),\s*(\d+)\)/.exec(String(rgb || ""));
|
|
@@ -31305,7 +31393,7 @@ function installTuiStderrGuard() {
|
|
|
31305
31393
|
const originalWrite = process.stderr.write.bind(process.stderr);
|
|
31306
31394
|
const logPath = resolveTuiStderrLogPath();
|
|
31307
31395
|
try {
|
|
31308
|
-
mkdirSync9(
|
|
31396
|
+
mkdirSync9(dirname12(logPath), { recursive: true });
|
|
31309
31397
|
} catch {
|
|
31310
31398
|
}
|
|
31311
31399
|
(0, import_mixdog_debug.rotateBoundedLog)(logPath, import_mixdog_debug.PLUGIN_LOG_MAX_BYTES, import_mixdog_debug.PLUGIN_LOG_KEEP_BYTES);
|
|
@@ -12,7 +12,7 @@ export function textBetweenTag(text, tag) {
|
|
|
12
12
|
return match ? match[1].trim() : '';
|
|
13
13
|
}
|
|
14
14
|
|
|
15
|
-
|
|
15
|
+
function stripSyntheticAgentTags(text) {
|
|
16
16
|
const value = String(text ?? '').trim();
|
|
17
17
|
const finalAnswer = textBetweenTag(value, 'final-answer');
|
|
18
18
|
if (finalAnswer) return finalAnswer;
|
|
@@ -24,7 +24,7 @@ export function stripSyntheticAgentTags(text) {
|
|
|
24
24
|
.trim();
|
|
25
25
|
}
|
|
26
26
|
|
|
27
|
-
|
|
27
|
+
function splitBridgeEnvelope(text) {
|
|
28
28
|
const value = String(text ?? '').trim();
|
|
29
29
|
if (!value) return { head: '', body: '' };
|
|
30
30
|
const match = /\n\s*\n/.exec(value);
|
|
@@ -35,7 +35,7 @@ export function splitBridgeEnvelope(text) {
|
|
|
35
35
|
};
|
|
36
36
|
}
|
|
37
37
|
|
|
38
|
-
|
|
38
|
+
function agentJobStatusText(parsed) {
|
|
39
39
|
if (!parsed) return '';
|
|
40
40
|
const parts = [];
|
|
41
41
|
if (parsed.status) parts.push(`status: ${parsed.status}`);
|
|
@@ -158,7 +158,7 @@ export function isStatusOnlyAgentCompletionNotification(text) {
|
|
|
158
158
|
return !(hasAgentResponseResultText(result) || hasAgentResponseResultText(text));
|
|
159
159
|
}
|
|
160
160
|
|
|
161
|
-
|
|
161
|
+
function hasAgentResponseResultText(text) {
|
|
162
162
|
const value = String(text || '').trim();
|
|
163
163
|
if (!value) return false;
|
|
164
164
|
if (/^status:\s*(?:running|pending|queued|completed|failed|cancelled|canceled)(?:\s*·\s*task_id:\s*\S+)?$/i.test(value)) return false;
|
|
@@ -166,7 +166,7 @@ export function hasAgentResponseResultText(text) {
|
|
|
166
166
|
return true;
|
|
167
167
|
}
|
|
168
168
|
|
|
169
|
-
|
|
169
|
+
function bracketField(text, name) {
|
|
170
170
|
const re = new RegExp(`^\\[${name}:\\s*([^\\]]*)\\]`, 'mi');
|
|
171
171
|
return re.exec(String(text ?? ''))?.[1]?.trim() || '';
|
|
172
172
|
}
|