mixdog 0.9.63 → 0.9.64

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.
Files changed (403) hide show
  1. package/README.md +3 -0
  2. package/package.json +9 -2
  3. package/scripts/code-graph-description-contract.mjs +3 -3
  4. package/scripts/verify-release-assets.mjs +2 -2
  5. package/src/runtime/agent/orchestrator/agent-runtime/agent-dispatch.mjs +11 -14
  6. package/src/runtime/agent/orchestrator/agent-runtime/agent-progress-watchdog.mjs +6 -6
  7. package/src/runtime/agent/orchestrator/agent-runtime/cache-strategy.mjs +2 -2
  8. package/src/runtime/agent/orchestrator/agent-trace-format.mjs +1 -0
  9. package/src/runtime/agent/orchestrator/config.mjs +19 -124
  10. package/src/runtime/agent/orchestrator/context/collect.mjs +6 -6
  11. package/src/runtime/agent/orchestrator/dispatch-persist.mjs +2 -2
  12. package/src/runtime/agent/orchestrator/internal-agents.mjs +2 -2
  13. package/src/runtime/agent/orchestrator/mcp/child-tree.mjs +1 -1
  14. package/src/runtime/agent/orchestrator/mcp/client.mjs +4 -4
  15. package/src/runtime/agent/orchestrator/providers/admission-scheduler.mjs +2 -2
  16. package/src/runtime/agent/orchestrator/providers/anthropic-betas.mjs +4 -4
  17. package/src/runtime/agent/orchestrator/providers/anthropic-effort.mjs +2 -2
  18. package/src/runtime/agent/orchestrator/providers/anthropic-max-tokens.mjs +4 -4
  19. package/src/runtime/agent/orchestrator/providers/anthropic-messages.mjs +333 -0
  20. package/src/runtime/agent/orchestrator/providers/anthropic-model-resolve.mjs +2 -2
  21. package/src/runtime/agent/orchestrator/providers/anthropic-oauth-credentials.mjs +4 -4
  22. package/src/runtime/agent/orchestrator/providers/anthropic-oauth.mjs +1 -1
  23. package/src/runtime/agent/orchestrator/providers/anthropic.mjs +3 -277
  24. package/src/runtime/agent/orchestrator/providers/codex-client-meta.mjs +2 -2
  25. package/src/runtime/agent/orchestrator/providers/custom-tool-wire.mjs +1 -1
  26. package/src/runtime/agent/orchestrator/providers/gemini-cache.mjs +2 -2
  27. package/src/runtime/agent/orchestrator/providers/gemini-stream.mjs +6 -6
  28. package/src/runtime/agent/orchestrator/providers/grok-oauth-login.mjs +196 -0
  29. package/src/runtime/agent/orchestrator/providers/grok-oauth-tokens.mjs +460 -0
  30. package/src/runtime/agent/orchestrator/providers/grok-oauth.mjs +14 -593
  31. package/src/runtime/agent/orchestrator/providers/lib/anthropic-request-utils.mjs +1 -1
  32. package/src/runtime/agent/orchestrator/providers/media-normalization.mjs +1 -1
  33. package/src/runtime/agent/orchestrator/providers/openai-compat-wire.mjs +1 -1
  34. package/src/runtime/agent/orchestrator/providers/openai-compat-xai.mjs +4 -4
  35. package/src/runtime/agent/orchestrator/providers/openai-oauth-ws.mjs +2 -2
  36. package/src/runtime/agent/orchestrator/providers/openai-oauth.mjs +5 -280
  37. package/src/runtime/agent/orchestrator/providers/openai-responses-payload.mjs +357 -0
  38. package/src/runtime/agent/orchestrator/providers/openai-ws-headers.mjs +216 -0
  39. package/src/runtime/agent/orchestrator/providers/openai-ws-pool.mjs +2 -188
  40. package/src/runtime/agent/orchestrator/providers/openai-ws-stream.mjs +2 -2
  41. package/src/runtime/agent/orchestrator/providers/openai-ws.mjs +2 -2
  42. package/src/runtime/agent/orchestrator/providers/opencode-go.mjs +1 -1
  43. package/src/runtime/agent/orchestrator/providers/provider-catalog-cache.mjs +1 -1
  44. package/src/runtime/agent/orchestrator/providers/registry.mjs +1 -1
  45. package/src/runtime/agent/orchestrator/providers/retry-classifier.mjs +2 -2
  46. package/src/runtime/agent/orchestrator/providers/statusline-route-meta.mjs +1 -1
  47. package/src/runtime/agent/orchestrator/session/cache/prefetch-cache.mjs +1 -1
  48. package/src/runtime/agent/orchestrator/session/cache/scoped-cache.mjs +3 -3
  49. package/src/runtime/agent/orchestrator/session/compact/budget.mjs +2 -2
  50. package/src/runtime/agent/orchestrator/session/compact/file-reattach.mjs +2 -2
  51. package/src/runtime/agent/orchestrator/session/compact/summary-schema.mjs +1 -1
  52. package/src/runtime/agent/orchestrator/session/compact/summary.mjs +1 -1
  53. package/src/runtime/agent/orchestrator/session/compact/text-utils.mjs +2 -2
  54. package/src/runtime/agent/orchestrator/session/context-utils.mjs +4 -4
  55. package/src/runtime/agent/orchestrator/session/loop/deferred-call-through.mjs +1 -1
  56. package/src/runtime/agent/orchestrator/session/loop/pre-dispatch-deny.mjs +17 -0
  57. package/src/runtime/agent/orchestrator/session/loop/steering.mjs +1 -1
  58. package/src/runtime/agent/orchestrator/session/loop/stored-tool-args.mjs +18 -26
  59. package/src/runtime/agent/orchestrator/session/loop/termination.mjs +1 -1
  60. package/src/runtime/agent/orchestrator/session/loop/tool-classify.mjs +3 -3
  61. package/src/runtime/agent/orchestrator/session/manager/compaction-runner.mjs +1 -0
  62. package/src/runtime/agent/orchestrator/session/manager/context-meta.mjs +1 -1
  63. package/src/runtime/agent/orchestrator/session/manager/delivered-completions.mjs +1 -1
  64. package/src/runtime/agent/orchestrator/session/manager/status-telemetry.mjs +1 -1
  65. package/src/runtime/agent/orchestrator/session/store/live-state.mjs +49 -0
  66. package/src/runtime/agent/orchestrator/session/store/load-cache.mjs +49 -0
  67. package/src/runtime/agent/orchestrator/session/store/save-worker.mjs +260 -0
  68. package/src/runtime/agent/orchestrator/session/store/serialize.mjs +72 -0
  69. package/src/runtime/agent/orchestrator/session/store/summary-cache.mjs +163 -0
  70. package/src/runtime/agent/orchestrator/session/store/write-guards.mjs +1 -1
  71. package/src/runtime/agent/orchestrator/session/store-summary-index.mjs +1 -1
  72. package/src/runtime/agent/orchestrator/session/store-summary-reader.mjs +4 -1
  73. package/src/runtime/agent/orchestrator/session/store.mjs +9 -561
  74. package/src/runtime/agent/orchestrator/session/tool-envelope.mjs +1 -1
  75. package/src/runtime/agent/orchestrator/session/tool-result-offload.mjs +2 -2
  76. package/src/runtime/agent/orchestrator/stall-policy.mjs +11 -11
  77. package/src/runtime/agent/orchestrator/tools/bash-policy-scan.mjs +1 -1
  78. package/src/runtime/agent/orchestrator/tools/bash-session.mjs +2 -2
  79. package/src/runtime/agent/orchestrator/tools/builtin/advisory-lock.mjs +1 -1
  80. package/src/runtime/agent/orchestrator/tools/builtin/arg-guard.mjs +2 -2
  81. package/src/runtime/agent/orchestrator/tools/builtin/atomic-write.mjs +1 -1
  82. package/src/runtime/agent/orchestrator/tools/builtin/bash-tool.mjs +2 -154
  83. package/src/runtime/agent/orchestrator/tools/builtin/cache-layers.mjs +1 -1
  84. package/src/runtime/agent/orchestrator/tools/builtin/cwd-utils.mjs +1 -1
  85. package/src/runtime/agent/orchestrator/tools/builtin/fs-reachability.mjs +1 -1
  86. package/src/runtime/agent/orchestrator/tools/builtin/fuzzy-match.mjs +1 -1
  87. package/src/runtime/agent/orchestrator/tools/builtin/glob-walk.mjs +1 -1
  88. package/src/runtime/agent/orchestrator/tools/builtin/path-locks.mjs +1 -1
  89. package/src/runtime/agent/orchestrator/tools/builtin/path-utils.mjs +1 -1
  90. package/src/runtime/agent/orchestrator/tools/builtin/read-args.mjs +2 -2
  91. package/src/runtime/agent/orchestrator/tools/builtin/read-formatting.mjs +2 -3
  92. package/src/runtime/agent/orchestrator/tools/builtin/read-image-resize.mjs +4 -4
  93. package/src/runtime/agent/orchestrator/tools/builtin/read-open.mjs +1 -1
  94. package/src/runtime/agent/orchestrator/tools/builtin/read-streaming.mjs +1 -1
  95. package/src/runtime/agent/orchestrator/tools/builtin/rg-runner.mjs +2 -2
  96. package/src/runtime/agent/orchestrator/tools/builtin/search-path-diagnostics.mjs +5 -5
  97. package/src/runtime/agent/orchestrator/tools/builtin/shell-analysis.mjs +1 -1
  98. package/src/runtime/agent/orchestrator/tools/builtin/shell-job-paths.mjs +2 -2
  99. package/src/runtime/agent/orchestrator/tools/builtin/shell-job-process.mjs +2 -2
  100. package/src/runtime/agent/orchestrator/tools/builtin/shell-job-spawn.mjs +519 -0
  101. package/src/runtime/agent/orchestrator/tools/builtin/shell-jobs.mjs +5 -449
  102. package/src/runtime/agent/orchestrator/tools/builtin/snapshot-helpers.mjs +1 -1
  103. package/src/runtime/agent/orchestrator/tools/builtin/task-tool.mjs +212 -0
  104. package/src/runtime/agent/orchestrator/tools/builtin.mjs +1 -1
  105. package/src/runtime/agent/orchestrator/tools/code-graph/build.mjs +1 -7
  106. package/src/runtime/agent/orchestrator/tools/code-graph/disk-cache.mjs +9 -36
  107. package/src/runtime/agent/orchestrator/tools/code-graph/dispatch.mjs +15 -3
  108. package/src/runtime/agent/orchestrator/tools/code-graph/search-references.mjs +429 -0
  109. package/src/runtime/agent/orchestrator/tools/code-graph/search.mjs +2 -395
  110. package/src/runtime/agent/orchestrator/tools/code-graph/symbol-index.mjs +2 -2
  111. package/src/runtime/agent/orchestrator/tools/code-graph/text-mask.mjs +1 -1
  112. package/src/runtime/agent/orchestrator/tools/code-graph/trusted-roots.mjs +1 -1
  113. package/src/runtime/agent/orchestrator/tools/code-graph-prewarm-worker.mjs +1 -1
  114. package/src/runtime/agent/orchestrator/tools/code-graph-state.mjs +3 -3
  115. package/src/runtime/agent/orchestrator/tools/mutation-planner.mjs +5 -5
  116. package/src/runtime/agent/orchestrator/tools/next-call-utils.mjs +1 -1
  117. package/src/runtime/agent/orchestrator/tools/patch/dispatch.mjs +1 -1
  118. package/src/runtime/agent/orchestrator/tools/patch/matcher.mjs +7 -7
  119. package/src/runtime/agent/orchestrator/tools/patch/orchestrator.mjs +72 -9
  120. package/src/runtime/agent/orchestrator/tools/patch/parsing.mjs +4 -4
  121. package/src/runtime/agent/orchestrator/tools/patch/paths.mjs +1 -1
  122. package/src/runtime/agent/orchestrator/tools/patch/v4a-convert.mjs +1 -1
  123. package/src/runtime/agent/orchestrator/tools/patch-tool-defs.mjs +4 -4
  124. package/src/runtime/agent/orchestrator/tools/patch.mjs +1 -1
  125. package/src/runtime/agent/orchestrator/tools/result-compression.mjs +3 -3
  126. package/src/runtime/agent/orchestrator/tools/shell-command.mjs +2 -444
  127. package/src/runtime/agent/orchestrator/tools/shell-exec-output.mjs +505 -0
  128. package/src/runtime/agent/orchestrator/tools/shell-exec-policy.mjs +2 -2
  129. package/src/runtime/agent/orchestrator/tools/shell-snapshot.mjs +1 -1
  130. package/src/runtime/channels/lib/backend-dispatch.mjs +20 -5
  131. package/src/runtime/channels/lib/scheduler.mjs +1 -1
  132. package/src/runtime/channels/lib/telegram-format.mjs +1 -1
  133. package/src/runtime/channels/lib/voice-runtime-fetcher.mjs +4 -4
  134. package/src/runtime/channels/tool-defs.mjs +2 -3
  135. package/src/runtime/memory/index.mjs +1 -5
  136. package/src/runtime/memory/lib/core-memory-candidates.mjs +357 -0
  137. package/src/runtime/memory/lib/core-memory-store.mjs +7 -357
  138. package/src/runtime/memory/lib/cycle-signatures.mjs +1 -1
  139. package/src/runtime/memory/lib/embedding-model-config.mjs +1 -1
  140. package/src/runtime/memory/lib/embedding-provider.mjs +1 -5
  141. package/src/runtime/memory/lib/embedding-worker.mjs +1 -5
  142. package/src/runtime/memory/lib/ko-morph.mjs +2 -2
  143. package/src/runtime/memory/lib/memory-config-flags.mjs +2 -5
  144. package/src/runtime/memory/lib/memory-cycle-requests.mjs +3 -7
  145. package/src/runtime/memory/lib/memory-cycle1.mjs +4 -8
  146. package/src/runtime/memory/lib/memory-cycle2-gate.mjs +1 -1
  147. package/src/runtime/memory/lib/memory-cycle2-mutations.mjs +1 -1
  148. package/src/runtime/memory/lib/memory-cycle2-shared.mjs +2 -5
  149. package/src/runtime/memory/lib/memory-cycle3.mjs +1 -5
  150. package/src/runtime/memory/lib/memory-embed.mjs +2 -6
  151. package/src/runtime/memory/lib/memory-log.mjs +8 -0
  152. package/src/runtime/memory/lib/memory-ops-policy.mjs +4 -8
  153. package/src/runtime/memory/lib/memory-recall-scope-filter.mjs +1 -1
  154. package/src/runtime/memory/lib/memory-recall-store.mjs +2 -193
  155. package/src/runtime/memory/lib/memory-score.mjs +1 -1
  156. package/src/runtime/memory/lib/memory-text-utils.mjs +2 -2
  157. package/src/runtime/memory/lib/memory.mjs +2 -6
  158. package/src/runtime/memory/lib/pg/adapter.mjs +2 -6
  159. package/src/runtime/memory/lib/pg/process.mjs +1 -5
  160. package/src/runtime/memory/lib/pg/supervisor.mjs +1 -5
  161. package/src/runtime/memory/lib/recall-format.mjs +2 -2
  162. package/src/runtime/memory/lib/recall-scoring.mjs +195 -0
  163. package/src/runtime/memory/lib/runtime-fetcher.mjs +1 -5
  164. package/src/runtime/memory/lib/trace-store.mjs +2 -6
  165. package/src/runtime/search/lib/http-fetch.mjs +6 -6
  166. package/src/runtime/search/lib/web-tools.mjs +2 -2
  167. package/src/runtime/shared/buffered-appender.mjs +1 -1
  168. package/src/runtime/shared/child-guardian.mjs +1 -1
  169. package/src/runtime/shared/child-spawn-gate.mjs +1 -1
  170. package/src/runtime/shared/config.mjs +4 -4
  171. package/src/runtime/shared/launcher-control.mjs +9 -10
  172. package/src/runtime/shared/llm/index.mjs +5 -20
  173. package/src/runtime/shared/markdown-frontmatter.mjs +1 -1
  174. package/src/runtime/shared/memory-snapshot.mjs +4 -4
  175. package/src/runtime/shared/pristine-execution.mjs +1 -1
  176. package/src/runtime/shared/process-lifecycle.mjs +0 -1
  177. package/src/runtime/shared/process-shutdown.mjs +1 -1
  178. package/src/runtime/shared/resource-admission.mjs +2 -2
  179. package/src/runtime/shared/schedule-session-run.mjs +1 -1
  180. package/src/runtime/shared/schedules-db.mjs +1 -1
  181. package/src/runtime/shared/service-discovery.mjs +2 -2
  182. package/src/runtime/shared/staged-update.mjs +6 -6
  183. package/src/runtime/shared/tool-execution-contract.mjs +1 -1
  184. package/src/runtime/shared/tool-primitives.mjs +1 -1
  185. package/src/runtime/shared/tool-surface.mjs +2 -2
  186. package/src/runtime/shared/update-checker.mjs +1 -1
  187. package/src/runtime/shared/user-cwd.mjs +3 -3
  188. package/src/runtime/shared/user-data-guard.mjs +4 -4
  189. package/src/runtime/shared/workspace-router.mjs +5 -5
  190. package/src/session-runtime/config-helpers.mjs +2 -3
  191. package/src/session-runtime/config-lifecycle.mjs +1 -1
  192. package/src/session-runtime/hitch-profile.mjs +1 -1
  193. package/src/session-runtime/lifecycle-api.mjs +6 -4
  194. package/src/session-runtime/model-recency.mjs +5 -5
  195. package/src/session-runtime/plugin-mcp.mjs +1 -1
  196. package/src/session-runtime/provider-request-snapshot.mjs +338 -0
  197. package/src/session-runtime/session-text.mjs +4 -4
  198. package/src/session-runtime/tool-catalog-schema.mjs +197 -0
  199. package/src/session-runtime/tool-catalog.mjs +6 -483
  200. package/src/session-runtime/tool-defs.mjs +1 -1
  201. package/src/standalone/agent-task-status.mjs +1 -1
  202. package/src/standalone/agent-tool/helpers.mjs +2 -2
  203. package/src/standalone/channel-admin.mjs +4 -4
  204. package/src/standalone/explore-tool.mjs +3 -3
  205. package/src/standalone/hook-bus/config.mjs +1 -1
  206. package/src/standalone/hook-bus/constants.mjs +1 -1
  207. package/src/standalone/hook-bus/rules.mjs +1 -1
  208. package/src/standalone/projects.mjs +1 -1
  209. package/src/standalone/provider-admin.mjs +2 -2
  210. package/src/tui/app/app-format.mjs +2 -2
  211. package/src/tui/app/clipboard.mjs +3 -3
  212. package/src/tui/app/input-parsers.mjs +1 -1
  213. package/src/tui/app/text-layout.mjs +1 -1
  214. package/src/tui/app/transcript-row-estimate.mjs +360 -0
  215. package/src/tui/app/transcript-window.mjs +5 -347
  216. package/src/tui/app/use-mouse-input.mjs +1 -1
  217. package/src/tui/app/use-prompt-handlers.mjs +1 -1
  218. package/src/tui/components/tool-execution/surface-detail.mjs +9 -9
  219. package/src/tui/components/tool-execution/text-format.mjs +2 -2
  220. package/src/tui/components/tool-output-format.mjs +7 -7
  221. package/src/tui/display-width.mjs +4 -4
  222. package/src/tui/dist/index.mjs +63 -97
  223. package/src/tui/engine/agent-envelope.mjs +5 -5
  224. package/src/tui/engine/notification-plan.mjs +1 -1
  225. package/src/tui/engine/queue-helpers.mjs +3 -3
  226. package/src/tui/engine/render-timing.mjs +4 -5
  227. package/src/tui/engine/session-api-ext.mjs +3 -3
  228. package/src/tui/engine/tool-result-status.mjs +5 -5
  229. package/src/tui/engine/tool-result-text.mjs +1 -1
  230. package/src/tui/engine/transcript-spill.mjs +585 -0
  231. package/src/tui/engine/tui-steering-persist.mjs +1 -1
  232. package/src/tui/engine.mjs +2 -474
  233. package/src/tui/lib/voice-setup.mjs +1 -1
  234. package/src/tui/markdown/format-token.mjs +1 -1
  235. package/src/tui/markdown/render-ansi.mjs +1 -1
  236. package/src/tui/markdown/table-layout.mjs +4 -4
  237. package/src/tui/paste-attachments.mjs +1 -1
  238. package/src/tui/prompt-history-store.mjs +3 -3
  239. package/src/tui/statusline-ansi-bridge.mjs +2 -2
  240. package/src/tui/theme.mjs +1 -1
  241. package/src/tui/transcript-tool-failures.mjs +2 -2
  242. package/src/ui/ansi.mjs +0 -9
  243. package/src/ui/statusline-format.mjs +2 -4
  244. package/scripts/_bench-cwc.json +0 -20
  245. package/scripts/_jitter-fuzz.jsx +0 -42
  246. package/scripts/_jitter-fuzz2.jsx +0 -30
  247. package/scripts/_jitter-probe.jsx +0 -35
  248. package/scripts/_jp2.jsx +0 -16
  249. package/scripts/_smoke_wd.mjs +0 -7
  250. package/scripts/abort-recovery-test.mjs +0 -175
  251. package/scripts/agent-dispatch-abort-compose-test.mjs +0 -31
  252. package/scripts/agent-live-arg-guard-smoke.mjs +0 -20
  253. package/scripts/agent-live-path-suffix-smoke.mjs +0 -34
  254. package/scripts/agent-live-toolcall-args-smoke.mjs +0 -45
  255. package/scripts/agent-loop-policy-test.mjs +0 -37
  256. package/scripts/agent-model-liveness-test.mjs +0 -763
  257. package/scripts/agent-parallel-smoke.mjs +0 -435
  258. package/scripts/agent-route-batch-test.mjs +0 -40
  259. package/scripts/agent-tag-reuse-smoke.mjs +0 -441
  260. package/scripts/agent-terminal-reap-test.mjs +0 -252
  261. package/scripts/agent-trace-io-test.mjs +0 -133
  262. package/scripts/ansi-color-capability-test.mjs +0 -90
  263. package/scripts/anthropic-admission-retry-integration-test.mjs +0 -119
  264. package/scripts/anthropic-maxtokens-test.mjs +0 -119
  265. package/scripts/anthropic-oauth-refresh-race-test.mjs +0 -397
  266. package/scripts/anthropic-transport-policy-test.mjs +0 -726
  267. package/scripts/apply-patch-edit-smoke.mjs +0 -71
  268. package/scripts/arg-guard-test.mjs +0 -93
  269. package/scripts/async-notify-settlement-test.mjs +0 -99
  270. package/scripts/atomic-lock-tryonce-test.mjs +0 -125
  271. package/scripts/background-task-meta-smoke.mjs +0 -38
  272. package/scripts/bench-run.mjs +0 -508
  273. package/scripts/boot-smoke.mjs +0 -137
  274. package/scripts/build-runtime-windows.ps1 +0 -242
  275. package/scripts/channel-daemon-smoke.mjs +0 -1103
  276. package/scripts/code-graph-aggregate-cwd-test.mjs +0 -158
  277. package/scripts/code-graph-disk-hit-test.mjs +0 -290
  278. package/scripts/code-graph-dispatch-test.mjs +0 -96
  279. package/scripts/code-graph-root-federation-test.mjs +0 -273
  280. package/scripts/compact-active-turn-test.mjs +0 -68
  281. package/scripts/compact-file-reattach-test.mjs +0 -88
  282. package/scripts/compact-pressure-test.mjs +0 -788
  283. package/scripts/compact-prior-context-flatten-test.mjs +0 -252
  284. package/scripts/compact-recall-digest-test.mjs +0 -57
  285. package/scripts/compact-smoke.mjs +0 -1017
  286. package/scripts/compact-trigger-migration-smoke.mjs +0 -261
  287. package/scripts/compacted-placeholder-scrub-test.mjs +0 -63
  288. package/scripts/context-mcp-metering-test.mjs +0 -1406
  289. package/scripts/debounced-skills-async-save-test.mjs +0 -57
  290. package/scripts/deferred-tool-loading-test.mjs +0 -250
  291. package/scripts/desktop-session-bridge-test.mjs +0 -1013
  292. package/scripts/dispatch-persist-recovery-test.mjs +0 -141
  293. package/scripts/embedding-worker-exit-test.mjs +0 -76
  294. package/scripts/execution-completion-dedup-test.mjs +0 -205
  295. package/scripts/execution-pending-resume-kick-test.mjs +0 -151
  296. package/scripts/execution-resume-esc-integration-test.mjs +0 -176
  297. package/scripts/explore-bench-tmp.mjs +0 -36
  298. package/scripts/explore-bench.mjs +0 -248
  299. package/scripts/explore-prompt-policy-test.mjs +0 -256
  300. package/scripts/explore-timeout-cancel-test.mjs +0 -345
  301. package/scripts/find-fuzzy-hidden-test.mjs +0 -267
  302. package/scripts/forwarder-rebind-tail-test.mjs +0 -67
  303. package/scripts/freevar-smoke.mjs +0 -98
  304. package/scripts/gemini-provider-test.mjs +0 -1448
  305. package/scripts/generate-oc-icons.mjs +0 -11
  306. package/scripts/grok-oauth-refresh-race-test.mjs +0 -273
  307. package/scripts/headless-pristine-execution-test.mjs +0 -614
  308. package/scripts/hook-bus-test.mjs +0 -552
  309. package/scripts/ingest-pure-conversation-smoke.mjs +0 -175
  310. package/scripts/internal-comms-bench-test.mjs +0 -226
  311. package/scripts/internal-comms-bench.mjs +0 -853
  312. package/scripts/internal-comms-smoke.mjs +0 -277
  313. package/scripts/internal-tools-normalization-test.mjs +0 -62
  314. package/scripts/interrupted-turn-history-test.mjs +0 -399
  315. package/scripts/lead-workflow-smoke.mjs +0 -592
  316. package/scripts/lifecycle-api-test.mjs +0 -137
  317. package/scripts/live-share-test.mjs +0 -148
  318. package/scripts/live-worker-smoke.mjs +0 -333
  319. package/scripts/log-writer-guard-smoke.mjs +0 -131
  320. package/scripts/maintenance-default-routes-test.mjs +0 -164
  321. package/scripts/max-output-recovery-persist-test.mjs +0 -81
  322. package/scripts/max-output-recovery-test.mjs +0 -368
  323. package/scripts/mcp-client-normalization-test.mjs +0 -45
  324. package/scripts/mcp-grace-deferred-test.mjs +0 -225
  325. package/scripts/memory-core-input-test.mjs +0 -167
  326. package/scripts/memory-cycle-routing-test.mjs +0 -111
  327. package/scripts/memory-meta-concurrency-test.mjs +0 -20
  328. package/scripts/memory-pg-recovery-test.mjs +0 -59
  329. package/scripts/memory-rule-contract-test.mjs +0 -93
  330. package/scripts/model-list-sanitize-test.mjs +0 -37
  331. package/scripts/mouse-tracking-restore-smoke.mjs +0 -107
  332. package/scripts/native-edit-wire-test.mjs +0 -152
  333. package/scripts/notify-completion-mirror-test.mjs +0 -73
  334. package/scripts/openai-oauth-refresh-race-test.mjs +0 -120
  335. package/scripts/openai-oauth-ws-1006-retry-test.mjs +0 -954
  336. package/scripts/openai-ws-early-settle-test.mjs +0 -216
  337. package/scripts/output-style-bench.mjs +0 -292
  338. package/scripts/output-style-smoke.mjs +0 -145
  339. package/scripts/parent-abort-link-test.mjs +0 -90
  340. package/scripts/patch-binary-cache-test.mjs +0 -181
  341. package/scripts/path-suffix-test.mjs +0 -57
  342. package/scripts/pending-completion-drop-test.mjs +0 -239
  343. package/scripts/pending-messages-lock-nonblocking-test.mjs +0 -62
  344. package/scripts/pretool-ask-runtime-test.mjs +0 -54
  345. package/scripts/process-lifecycle-test.mjs +0 -461
  346. package/scripts/prompt-immediate-render-test.mjs +0 -89
  347. package/scripts/prompt-input-parity-test.mjs +0 -145
  348. package/scripts/provider-admission-scheduler-test.mjs +0 -681
  349. package/scripts/provider-contract-test.mjs +0 -632
  350. package/scripts/provider-stream-stall-test.mjs +0 -276
  351. package/scripts/provider-toolcall-test.mjs +0 -3063
  352. package/scripts/reactive-compact-persist-smoke.mjs +0 -203
  353. package/scripts/recall-bench.mjs +0 -359
  354. package/scripts/resource-admission-test.mjs +0 -792
  355. package/scripts/result-classification-test.mjs +0 -75
  356. package/scripts/rg-runner-test.mjs +0 -240
  357. package/scripts/routing-corpus-test.mjs +0 -349
  358. package/scripts/sanitize-tool-pairs-test.mjs +0 -260
  359. package/scripts/session-bench-cache-break-test.mjs +0 -102
  360. package/scripts/session-bench.mjs +0 -1708
  361. package/scripts/session-context-bench.mjs +0 -344
  362. package/scripts/session-heartbeat-lifecycle-test.mjs +0 -68
  363. package/scripts/session-ingest-compaction-smoke.mjs +0 -279
  364. package/scripts/session-ingest-smoke.mjs +0 -177
  365. package/scripts/session-orphan-sweep-test.mjs +0 -109
  366. package/scripts/set-effort-config-test.mjs +0 -41
  367. package/scripts/shell-failure-diagnostics-test.mjs +0 -280
  368. package/scripts/shell-hardening-test.mjs +0 -209
  369. package/scripts/shell-jobs-windows-hide-test.mjs +0 -164
  370. package/scripts/ship-mode-test.mjs +0 -98
  371. package/scripts/smoke-loop-failure-summary-test.mjs +0 -38
  372. package/scripts/smoke-loop-failure-summary.mjs +0 -16
  373. package/scripts/smoke-loop-report.mjs +0 -221
  374. package/scripts/smoke-loop.mjs +0 -202
  375. package/scripts/smoke-runtime-negative.ps1 +0 -106
  376. package/scripts/statusline-quota-hysteresis-test.mjs +0 -62
  377. package/scripts/steering-drain-buckets-test.mjs +0 -467
  378. package/scripts/steering-fold-provenance-test.mjs +0 -71
  379. package/scripts/streaming-tail-window-test.mjs +0 -175
  380. package/scripts/submit-commandbusy-race-test.mjs +0 -257
  381. package/scripts/task-bench.mjs +0 -205
  382. package/scripts/terminal-bench-isolation-guards-test.mjs +0 -102
  383. package/scripts/termio-input-smoke.mjs +0 -199
  384. package/scripts/tool-result-hook-test.mjs +0 -48
  385. package/scripts/tool-smoke.mjs +0 -2453
  386. package/scripts/tool-tui-presentation-test.mjs +0 -286
  387. package/scripts/toolcall-args-test.mjs +0 -239
  388. package/scripts/tui-ambiguous-width-test.mjs +0 -113
  389. package/scripts/tui-background-failure-smoke.mjs +0 -73
  390. package/scripts/tui-perf-run.ps1 +0 -26
  391. package/scripts/tui-render-smoke.mjs +0 -90
  392. package/scripts/tui-runtime-load-bench-entry.jsx +0 -608
  393. package/scripts/tui-runtime-load-bench.mjs +0 -50
  394. package/scripts/tui-store-frame-batch-test.mjs +0 -99
  395. package/scripts/tui-transcript-jitter-harness-entry.jsx +0 -383
  396. package/scripts/tui-transcript-perf-test.mjs +0 -934
  397. package/scripts/usage-metrics-epoch-smoke.mjs +0 -114
  398. package/scripts/verify-release-assets-test.mjs +0 -281
  399. package/scripts/web-fetch-routing-test.mjs +0 -158
  400. package/scripts/webhook-smoke.mjs +0 -201
  401. package/scripts/windows-hide-spawn-options-test.mjs +0 -19
  402. package/scripts/worker-notify-rejection-test.mjs +0 -51
  403. package/scripts/write-backpressure-test.mjs +0 -147
@@ -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 dirname11, join as join14 } from "node:path";
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-window.mjs
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;
@@ -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 readFileSync10, readdirSync as readdirSync4, rmSync as rmSync3, statSync as statSync6, watch, writeFileSync as writeFileSync7 } from "node:fs";
23676
- import { randomUUID } from "node:crypto";
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) {
@@ -29747,16 +29706,12 @@ function createLiveShare({
29747
29706
  };
29748
29707
  }
29749
29708
 
29750
- // src/tui/engine.mjs
29751
- var SESSION_RUNTIME_MODULE = import.meta.url.replace(/\\/g, "/").includes("/tui/dist/") ? "../../mixdog-session-runtime.mjs" : "../mixdog-session-runtime.mjs";
29752
- var TOOL_APPROVAL_TIMEOUT_MS = (() => {
29753
- const value = Number(process.env.MIXDOG_TOOL_APPROVAL_TIMEOUT_MS);
29754
- return Number.isFinite(value) && value > 0 ? Math.max(1e3, Math.round(value)) : 12e4;
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
- })();
29709
+ // src/tui/engine/transcript-spill.mjs
29710
+ import { mkdtempSync, readFileSync as readFileSync10, readdirSync as readdirSync4, rmSync as rmSync3, statSync as statSync6, watch, writeFileSync as writeFileSync7 } from "node:fs";
29711
+ import { randomUUID } from "node:crypto";
29712
+ import { tmpdir as tmpdir2 } from "node:os";
29713
+ import { basename as basename6, dirname as dirname10, join as join13 } from "node:path";
29714
+ import { Worker } from "node:worker_threads";
29760
29715
  var TUI_DEBUG2 = /^(1|true|yes|on)$/i.test(String(process.env.MIXDOG_TUI_DEBUG || ""));
29761
29716
  var tuiDebug = (msg) => {
29762
29717
  if (!TUI_DEBUG2) return;
@@ -30238,6 +30193,17 @@ function createEngineItemMutators({
30238
30193
  };
30239
30194
  return { patchItem, settleStreamingTail };
30240
30195
  }
30196
+
30197
+ // src/tui/engine.mjs
30198
+ var SESSION_RUNTIME_MODULE = import.meta.url.replace(/\\/g, "/").includes("/tui/dist/") ? "../../mixdog-session-runtime.mjs" : "../mixdog-session-runtime.mjs";
30199
+ var TOOL_APPROVAL_TIMEOUT_MS = (() => {
30200
+ const value = Number(process.env.MIXDOG_TOOL_APPROVAL_TIMEOUT_MS);
30201
+ return Number.isFinite(value) && value > 0 ? Math.max(1e3, Math.round(value)) : 12e4;
30202
+ })();
30203
+ var LEAD_TURN_TIMEOUT_MS = (() => {
30204
+ const value = Number(process.env.MIXDOG_LEAD_TURN_TIMEOUT_MS);
30205
+ return Number.isFinite(value) && value > 0 ? Math.max(1e4, Math.round(value)) : 5 * 6e4;
30206
+ })();
30241
30207
  async function createEngineSession({
30242
30208
  provider: providerName,
30243
30209
  model,
@@ -30905,8 +30871,8 @@ async function createEngineSession({
30905
30871
  try {
30906
30872
  const spoolPath = String(runtime.pendingSpoolPath?.() || "");
30907
30873
  if (spoolPath) {
30908
- const spoolFile = basename6(spoolPath);
30909
- spoolWatcher = watch(dirname10(spoolPath), { persistent: false }, (_event, filename) => {
30874
+ const spoolFile = basename7(spoolPath);
30875
+ spoolWatcher = watch2(dirname11(spoolPath), { persistent: false }, (_event, filename) => {
30910
30876
  if (filename && String(filename) !== spoolFile) return;
30911
30877
  if (flags.disposed || spoolDebounce) return;
30912
30878
  spoolDebounce = setTimeout(() => {
@@ -30975,7 +30941,7 @@ async function createEngineSession({
30975
30941
  }
30976
30942
  let mtime = 0;
30977
30943
  try {
30978
- mtime = statSync6(sessionPath(id)).mtimeMs || 0;
30944
+ mtime = statSync7(sessionPath(id)).mtimeMs || 0;
30979
30945
  } catch {
30980
30946
  return;
30981
30947
  }
@@ -31223,7 +31189,7 @@ function scheduleHardExit(code = 0) {
31223
31189
  timer2.unref?.();
31224
31190
  }
31225
31191
  function resolveTuiStderrLogPath() {
31226
- return process.env.MIXDOG_TUI_STDERR_LOG || join14(process.env.MIXDOG_RUNTIME_ROOT || join14(tmpdir3(), "mixdog"), "mixdog-tui.stderr.log");
31192
+ return process.env.MIXDOG_TUI_STDERR_LOG || join15(process.env.MIXDOG_RUNTIME_ROOT || join15(tmpdir3(), "mixdog"), "mixdog-tui.stderr.log");
31227
31193
  }
31228
31194
  function ansiFg(rgb) {
31229
31195
  const m = /rgb\((\d+),\s*(\d+),\s*(\d+)\)/.exec(String(rgb || ""));
@@ -31305,7 +31271,7 @@ function installTuiStderrGuard() {
31305
31271
  const originalWrite = process.stderr.write.bind(process.stderr);
31306
31272
  const logPath = resolveTuiStderrLogPath();
31307
31273
  try {
31308
- mkdirSync9(dirname11(logPath), { recursive: true });
31274
+ mkdirSync9(dirname12(logPath), { recursive: true });
31309
31275
  } catch {
31310
31276
  }
31311
31277
  (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
- export function stripSyntheticAgentTags(text) {
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
- export function splitBridgeEnvelope(text) {
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
- export function agentJobStatusText(parsed) {
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
- export function hasAgentResponseResultText(text) {
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
- export function bracketField(text, name) {
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
  }
@@ -63,7 +63,7 @@ export function executionCardKey(event, text, parsed) {
63
63
  return `card:${executionId}:${hasBody}`;
64
64
  }
65
65
 
66
- export function isExecutionNotification(event, text, parsed) {
66
+ function isExecutionNotification(event, text, parsed) {
67
67
  const meta = event?.meta && typeof event.meta === 'object' ? event.meta : {};
68
68
  if (meta.execution_id || meta.execution_surface) return true;
69
69
  if (parseAgentResultEnvelope(text)) return true;
@@ -53,7 +53,7 @@ export function isSlashQueuedEntry(entry) {
53
53
  return text.trim().startsWith('/');
54
54
  }
55
55
 
56
- export function firstQueueLine(text) {
56
+ function firstQueueLine(text) {
57
57
  return String(text || '').split('\n').map((line) => line.trim()).find(Boolean) || '';
58
58
  }
59
59
 
@@ -88,7 +88,7 @@ export function promptContentText(content) {
88
88
  return String(content ?? '');
89
89
  }
90
90
 
91
- export function timestampMs(value) {
91
+ function timestampMs(value) {
92
92
  if (value == null || value === '') return 0;
93
93
  const n = Number(value);
94
94
  if (Number.isFinite(n) && n > 0) return n;
@@ -96,7 +96,7 @@ export function timestampMs(value) {
96
96
  return Number.isFinite(parsed) && parsed > 0 ? parsed : 0;
97
97
  }
98
98
 
99
- export function hasModelVisibleConversation(session) {
99
+ function hasModelVisibleConversation(session) {
100
100
  const messages = Array.isArray(session?.messages) ? session.messages : [];
101
101
  return messages.some((message) => {
102
102
  const role = message?.role;
@@ -17,12 +17,11 @@
17
17
  * The fixed timeout below is only a fallback ceiling for when no renderer ack is
18
18
  * wired (or the renderer is idle) so a yield can never hang the turn.
19
19
  */
20
- export const RENDER_ACK_FALLBACK_MS = 32;
21
- export const RENDER_ACK_HANG_GUARD_MS = 250;
22
- export const RENDER_SETTLE_IDLE_MS = 64;
20
+ const RENDER_ACK_FALLBACK_MS = 32;
21
+ const RENDER_ACK_HANG_GUARD_MS = 250;
22
+ const RENDER_SETTLE_IDLE_MS = 64;
23
23
 
24
24
  // Back-compat alias: previously the fixed wait duration, now the fallback only.
25
- export const RENDER_THROTTLE_FLUSH_MS = RENDER_ACK_FALLBACK_MS;
26
25
 
27
26
  let pendingRenderAcks = [];
28
27
  let renderAckSeq = 0;
@@ -38,7 +37,7 @@ export const scheduleRenderFrameAck = () => {
38
37
  setImmediate(() => notifyRenderFrame(seq));
39
38
  };
40
39
 
41
- export const notifyRenderFrame = (seq = ++renderAckSeq) => {
40
+ const notifyRenderFrame = (seq = ++renderAckSeq) => {
42
41
  if (pendingRenderAcks.length === 0) return;
43
42
  const acks = pendingRenderAcks;
44
43
  pendingRenderAcks = [];
@@ -58,7 +58,7 @@ export function restoredAssistantTranscriptItems(message, nextId) {
58
58
  // tool_calls and the follow-up role:'tool' results, but resume used to drop
59
59
  // both — a reopened session lost every tool marker (user bug). Rebuild one
60
60
  // transcript tool item per call and attach its result by tool_call_id.
61
- export function restoredToolCallItems(message, nextId, pendingByCallId) {
61
+ function restoredToolCallItems(message, nextId, pendingByCallId) {
62
62
  const calls = Array.isArray(message?.tool_calls) ? message.tool_calls
63
63
  : Array.isArray(message?.toolCalls) ? message.toolCalls : [];
64
64
  const at = Number(message?.meta?.transcript?.at);
@@ -86,7 +86,7 @@ export function restoredToolCallItems(message, nextId, pendingByCallId) {
86
86
  return items;
87
87
  }
88
88
 
89
- export function attachRestoredToolResult(message, pendingByCallId) {
89
+ function attachRestoredToolResult(message, pendingByCallId) {
90
90
  const callId = typeof message?.tool_call_id === 'string' && message.tool_call_id
91
91
  ? message.tool_call_id
92
92
  : typeof message?.toolCallId === 'string' ? message.toolCallId : '';
@@ -177,7 +177,7 @@ function buildRestoredAggregateItem(members) {
177
177
  // Runs of 1 keep the plain per-call card (its argument summary stays visible).
178
178
  // Agent cards never merge on restore: the live rule scopes Agent grouping to
179
179
  // a single provider batch, a boundary the stored history no longer carries.
180
- export function mergeRestoredToolItems(items) {
180
+ function mergeRestoredToolItems(items) {
181
181
  const merged = [];
182
182
  let run = null; // { bucket, members: [{ item, category }] }
183
183
  const flushRun = () => {
@@ -13,7 +13,7 @@ import {
13
13
  toolResultTerminalStatus,
14
14
  } from '../../runtime/shared/tool-status.mjs';
15
15
 
16
- export const CANCELLED_RESULT_STATUS_LINE = '[status: cancelled]';
16
+ const CANCELLED_RESULT_STATUS_LINE = '[status: cancelled]';
17
17
 
18
18
  // Detect a shell command that RAN but exited non-zero (a process exit code)
19
19
  // as opposed to a real tool-call failure (`[shell-tool-failed]`) or a
@@ -71,15 +71,15 @@ export function failureDetailText({ succeeded = 0, realErrors = 0, exitErrors =
71
71
  return parts.join(' · ');
72
72
  }
73
73
 
74
- export function normalizedResultStatusToken(value) {
74
+ function normalizedResultStatusToken(value) {
75
75
  return normalizeToolTerminalStatus(value);
76
76
  }
77
77
 
78
- export function resultTextTerminalStatus(text) {
78
+ function resultTextTerminalStatus(text) {
79
79
  return toolResultTerminalStatus(text);
80
80
  }
81
81
 
82
- export function itemHasKnownTerminalStatus(item, texts = []) {
82
+ function itemHasKnownTerminalStatus(item, texts = []) {
83
83
  const settled = (token) => token === 'completed' || token === 'failed' || token === 'cancelled';
84
84
  if (settled(normalizedResultStatusToken(item?.args?.status))) return true;
85
85
  for (const text of texts) {
@@ -129,7 +129,7 @@ export function groupedToolResultText(group) {
129
129
  return '';
130
130
  }
131
131
 
132
- export function firstErrorLine(text) {
132
+ function firstErrorLine(text) {
133
133
  const clean = toolErrorDisplay(text, 'tool');
134
134
  if (clean) return clean;
135
135
  for (const line of String(text || '').split('\n')) {
@@ -52,7 +52,7 @@ function compactToolResultObjectFallback(obj) {
52
52
  }
53
53
  }
54
54
 
55
- export function toolResultPartText(part, depth = 0) {
55
+ function toolResultPartText(part, depth = 0) {
56
56
  if (part == null) return '';
57
57
  if (depth > TOOL_RESULT_PART_MAX_DEPTH) return '';
58
58
  if (typeof part === 'string') return part;