mixdog 1.4.1 → 1.4.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (630) hide show
  1. package/package.json +4 -3
  2. package/scripts/build-shipped-history.mjs +125 -33
  3. package/scripts/gate-local.mjs +220 -63
  4. package/scripts/graph-parity.mjs +8 -3
  5. package/scripts/lib/gate-scheduler.mjs +139 -32
  6. package/scripts/lib/gate-timing-reporter.mjs +16 -0
  7. package/scripts/lib/run-node-tests.mjs +71 -34
  8. package/scripts/lib/scoped-temp.mjs +1 -0
  9. package/scripts/lib/test-failure-records.mjs +14 -1
  10. package/scripts/lib/test-failure-summary.mjs +9 -4
  11. package/scripts/lib/test-spawn-ledger.mjs +43 -3
  12. package/scripts/post-release-check.mjs +26 -16
  13. package/scripts/pptx-kit-index.mjs +5 -6
  14. package/scripts/provider-pingpong-live.mjs +1 -1
  15. package/scripts/prune-embedding-runtime.mjs +3 -1
  16. package/scripts/release-paths.mjs +7 -1
  17. package/scripts/suite-health.mjs +110 -28
  18. package/scripts/test.mjs +9 -14
  19. package/src/agents/advisor/AGENT.md +4 -4
  20. package/src/agents/advisor/agent.json +1 -1
  21. package/src/agents/explore/AGENT.md +22 -0
  22. package/src/agents/explore/agent.json +6 -0
  23. package/src/cli.mjs +7 -0
  24. package/src/defaults/agents.json +7 -0
  25. package/src/defaults/shipped-history.json +38 -2
  26. package/src/defaults/skills/browser-use/SKILL.md +4 -1
  27. package/src/defaults/skills/code-tidy/SKILL.md +71 -102
  28. package/src/defaults/skills/code-tidy/references/agent-cleanup.md +66 -114
  29. package/src/defaults/skills/code-tidy/references/cleanup-report.md +19 -35
  30. package/src/defaults/skills/code-tidy/references/dead-code.md +3 -9
  31. package/src/defaults/skills/code-tidy/references/test-suite-slop.md +16 -27
  32. package/src/defaults/skills/computer-use/SKILL.md +12 -2
  33. package/src/defaults/skills/setup/SKILL.md +2 -2
  34. package/src/defaults/skills/setup/references/actions.md +28 -9
  35. package/src/defaults/skills/setup/references/surfaces.md +5 -2
  36. package/src/defaults/skills/setup-guide/SKILL.md +11 -3
  37. package/src/defaults/skills/setup-guide/model-recommendations.json +13 -0
  38. package/src/defaults/skills/skill-creator/SKILL.md +85 -190
  39. package/src/defaults/skills/skill-creator/references/design.md +70 -162
  40. package/src/defaults/skills/skill-creator/references/evaluation.md +33 -92
  41. package/src/defaults/skills/test-suite/SKILL.md +194 -0
  42. package/src/defaults/skills/test-suite/references/case-management.md +51 -0
  43. package/src/defaults/skills/test-suite/references/flaky-policy.md +39 -0
  44. package/src/defaults/skills/test-suite/references/reliability.md +49 -0
  45. package/src/defaults/skills/test-suite/references/suite-design.md +78 -0
  46. package/src/defaults/skills/test-suite/scripts/inventory.mjs +335 -0
  47. package/src/defaults/skills/visualize/SKILL.md +6 -2
  48. package/src/lib/instruction-text.cjs +36 -0
  49. package/src/lib/rules-builder.cjs +40 -50
  50. package/src/orchestration/balanced.md +23 -0
  51. package/src/orchestration/focused.md +22 -0
  52. package/src/orchestration/none.md +5 -0
  53. package/src/orchestration/swarm.md +24 -0
  54. package/src/rules/agent-mode/AGENT_MODE.md +3 -1
  55. package/src/rules/agent-mode/MIXY.md +2 -2
  56. package/src/rules/lead/LEAD.md +3 -3
  57. package/src/rules/shared/20-research.md +3 -6
  58. package/src/rules/shared/40-editing.md +1 -0
  59. package/src/rules/shared/60-verification.md +10 -9
  60. package/src/rules/shared/70-delivery.md +4 -3
  61. package/src/runtime/agent/orchestrator/agent-runtime/agent-dispatch/abort-link.mjs +5 -1
  62. package/src/runtime/agent/orchestrator/agent-runtime/agent-dispatch/session-prep.mjs +3 -3
  63. package/src/runtime/agent/orchestrator/agent-runtime/agent-dispatch.mjs +10 -2
  64. package/src/runtime/agent/orchestrator/agent-runtime/agent-progress-watchdog.mjs +132 -21
  65. package/src/runtime/agent/orchestrator/agent-runtime/cache-strategy.mjs +13 -9
  66. package/src/runtime/agent/orchestrator/agent-runtime/heartbeat-completion.mjs +2 -2
  67. package/src/runtime/agent/orchestrator/agent-runtime/maintenance-route.mjs +4 -1
  68. package/src/runtime/agent/orchestrator/agent-runtime/session-builder.mjs +67 -0
  69. package/src/runtime/agent/orchestrator/agent-trace-format.mjs +1 -0
  70. package/src/runtime/agent/orchestrator/config.mjs +12 -7
  71. package/src/runtime/agent/orchestrator/context/deferred-tools.mjs +7 -7
  72. package/src/runtime/agent/orchestrator/context/role-instructions.mjs +9 -30
  73. package/src/runtime/agent/orchestrator/internal-agents.mjs +3 -14
  74. package/src/runtime/agent/orchestrator/mcp/agent-connectors.mjs +124 -12
  75. package/src/runtime/agent/orchestrator/mcp/child-tree.mjs +204 -49
  76. package/src/runtime/agent/orchestrator/mcp/client-config.mjs +16 -7
  77. package/src/runtime/agent/orchestrator/mcp/client-transport.mjs +157 -57
  78. package/src/runtime/agent/orchestrator/mcp/client.mjs +54 -23
  79. package/src/runtime/agent/orchestrator/mcp/oauth-client.mjs +1 -1
  80. package/src/runtime/agent/orchestrator/mcp/oauth-credentials.mjs +8 -2
  81. package/src/runtime/agent/orchestrator/mcp/oauth-login.mjs +83 -52
  82. package/src/runtime/agent/orchestrator/mcp/oauth-probe.mjs +1 -1
  83. package/src/runtime/agent/orchestrator/mcp/oauth-provider.mjs +14 -0
  84. package/src/runtime/agent/orchestrator/mcp/oauth.mjs +43 -27
  85. package/src/runtime/agent/orchestrator/providers/account-pool.mjs +43 -8
  86. package/src/runtime/agent/orchestrator/providers/anthropic-api-request.mjs +30 -28
  87. package/src/runtime/agent/orchestrator/providers/anthropic-oauth-client-version.mjs +1 -1
  88. package/src/runtime/agent/orchestrator/providers/anthropic-oauth-credentials.mjs +31 -21
  89. package/src/runtime/agent/orchestrator/providers/anthropic-sse-turn/turn-events/content-block-stop.mjs +3 -3
  90. package/src/runtime/agent/orchestrator/providers/antigravity-oauth-login.mjs +3 -1
  91. package/src/runtime/agent/orchestrator/providers/antigravity-oauth-tokens.mjs +2 -2
  92. package/src/runtime/agent/orchestrator/providers/codex-client-meta.mjs +1 -1
  93. package/src/runtime/agent/orchestrator/providers/command-code-oauth.mjs +1 -1
  94. package/src/runtime/agent/orchestrator/providers/custom-provider-config.mjs +40 -0
  95. package/src/runtime/agent/orchestrator/providers/custom-provider-keys.mjs +34 -0
  96. package/src/runtime/agent/orchestrator/providers/custom-provider.mjs +3 -0
  97. package/src/runtime/agent/orchestrator/providers/devin-auth.mjs +14 -7
  98. package/src/runtime/agent/orchestrator/providers/devin-wire-transport.mjs +3 -2
  99. package/src/runtime/agent/orchestrator/providers/gemini-response.mjs +2 -2
  100. package/src/runtime/agent/orchestrator/providers/gemini-stream.mjs +4 -1
  101. package/src/runtime/agent/orchestrator/providers/gemini-thinking.mjs +2 -2
  102. package/src/runtime/agent/orchestrator/providers/grok-oauth-login.mjs +48 -31
  103. package/src/runtime/agent/orchestrator/providers/lib/oauth-page.mjs +0 -18
  104. package/src/runtime/agent/orchestrator/providers/lib/oauth-token-utils.mjs +138 -6
  105. package/src/runtime/agent/orchestrator/providers/mimo-oauth.mjs +1 -1
  106. package/src/runtime/agent/orchestrator/providers/model-cache.mjs +100 -33
  107. package/src/runtime/agent/orchestrator/providers/muse-code-oauth.mjs +1 -1
  108. package/src/runtime/agent/orchestrator/providers/oauth-secret-fields.fixtures.mjs +45 -0
  109. package/src/runtime/agent/orchestrator/providers/openai-compat-response-normalization.mjs +4 -6
  110. package/src/runtime/agent/orchestrator/providers/openai-compat-responses-head-parity.json +2784 -2872
  111. package/src/runtime/agent/orchestrator/providers/openai-compat-xai.mjs +5 -8
  112. package/src/runtime/agent/orchestrator/providers/openai-oauth-login.mjs +26 -28
  113. package/src/runtime/agent/orchestrator/providers/openai-responses-payload-parity.fixture.json +288 -300
  114. package/src/runtime/agent/orchestrator/providers/openai-ws-stream/event-switch.mjs +3 -1
  115. package/src/runtime/agent/orchestrator/providers/openai-ws-watchdogs.mjs +1 -0
  116. package/src/runtime/agent/orchestrator/providers/opencode-go-oauth.mjs +1 -1
  117. package/src/runtime/agent/orchestrator/providers/opencode-go.mjs +3 -1
  118. package/src/runtime/agent/orchestrator/providers/registry.mjs +33 -2
  119. package/src/runtime/agent/orchestrator/providers/vertex-ai-auth.mjs +622 -0
  120. package/src/runtime/agent/orchestrator/providers/vertex-ai-maas.mjs +185 -0
  121. package/src/runtime/agent/orchestrator/providers/vertex-ai-models.mjs +445 -0
  122. package/src/runtime/agent/orchestrator/providers/vertex-ai.mjs +576 -0
  123. package/src/runtime/agent/orchestrator/providers/xai-tool-search-head-parity.json +10 -30
  124. package/src/runtime/agent/orchestrator/runtime-core/builtin-features.mjs +32 -0
  125. package/src/runtime/agent/orchestrator/runtime-core/config-helpers.mjs +0 -11
  126. package/src/runtime/agent/orchestrator/runtime-core/deferred-tool-availability.mjs +8 -0
  127. package/src/runtime/agent/orchestrator/runtime-core/deferred-tool-delta.mjs +17 -3
  128. package/src/runtime/agent/orchestrator/runtime-core/goal-control.mjs +47 -27
  129. package/src/runtime/agent/orchestrator/runtime-core/goal-deadlines.mjs +141 -10
  130. package/src/runtime/agent/orchestrator/runtime-core/goal-mutations.mjs +26 -63
  131. package/src/runtime/agent/orchestrator/runtime-core/goal-reminder.mjs +28 -3
  132. package/src/runtime/agent/orchestrator/runtime-core/goal-runtime.mjs +36 -11
  133. package/src/runtime/agent/orchestrator/runtime-core/goal-state.mjs +88 -56
  134. package/src/runtime/agent/orchestrator/runtime-core/goal-storage.mjs +4 -1
  135. package/src/runtime/agent/orchestrator/runtime-core/goal-store.mjs +51 -32
  136. package/src/runtime/agent/orchestrator/runtime-core/goal-text.mjs +45 -145
  137. package/src/runtime/agent/orchestrator/runtime-core/goal-tool-defs.mjs +15 -98
  138. package/src/runtime/agent/orchestrator/runtime-core/goal-tool-exec.mjs +32 -99
  139. package/src/runtime/agent/orchestrator/runtime-core/goal-turns.mjs +23 -78
  140. package/src/runtime/agent/orchestrator/runtime-core/orchestration.mjs +69 -47
  141. package/src/runtime/agent/orchestrator/runtime-core/todo-list.mjs +367 -0
  142. package/src/runtime/agent/orchestrator/runtime-core/todo-tool-defs.mjs +47 -0
  143. package/src/runtime/agent/orchestrator/runtime-core/tool-availability.mjs +155 -0
  144. package/src/runtime/agent/orchestrator/runtime-core/tool-catalog-data.mjs +12 -0
  145. package/src/runtime/agent/orchestrator/runtime-core/tool-catalog.mjs +119 -35
  146. package/src/runtime/agent/orchestrator/runtime-core/tool-defs.mjs +4 -1
  147. package/src/runtime/agent/orchestrator/runtime-core/workflow/context.mjs +15 -6
  148. package/src/runtime/agent/orchestrator/runtime-core/workflow-ids.mjs +1 -0
  149. package/src/runtime/agent/orchestrator/session/agent-loop.mjs +28 -22
  150. package/src/runtime/agent/orchestrator/session/agent-pool-progress.mjs +30 -0
  151. package/src/runtime/agent/orchestrator/session/agent-room.d.mts +30 -5
  152. package/src/runtime/agent/orchestrator/session/agent-room.mjs +171 -37
  153. package/src/runtime/agent/orchestrator/session/attachment-preflight.mjs +1 -1
  154. package/src/runtime/agent/orchestrator/session/cache-warm.mjs +94 -10
  155. package/src/runtime/agent/orchestrator/session/catalog-db/index.mjs +2 -2
  156. package/src/runtime/agent/orchestrator/session/catalog-db/schema.mjs +1 -1
  157. package/src/runtime/agent/orchestrator/session/compact/execution-tail.mjs +1 -1
  158. package/src/runtime/agent/orchestrator/session/compact/runner.mjs +3 -0
  159. package/src/runtime/agent/orchestrator/session/compact/summary-route.mjs +1 -1
  160. package/src/runtime/agent/orchestrator/session/context-utils.mjs +8 -12
  161. package/src/runtime/agent/orchestrator/session/conversation-import/claude.mjs +4 -4
  162. package/src/runtime/agent/orchestrator/session/conversation-import/codex.mjs +11 -6
  163. package/src/runtime/agent/orchestrator/session/conversation-import/convert.mjs +6 -6
  164. package/src/runtime/agent/orchestrator/session/conversation-import/imported-session.mjs +7 -3
  165. package/src/runtime/agent/orchestrator/session/conversation-import/turns.mjs +11 -1
  166. package/src/runtime/agent/orchestrator/session/eager-dispatch.mjs +4 -3
  167. package/src/runtime/agent/orchestrator/session/human-gate/held-message.mjs +1 -1
  168. package/src/runtime/agent/orchestrator/session/human-gate/requests.mjs +37 -8
  169. package/src/runtime/agent/orchestrator/session/human-gate/run-policy.mjs +1 -1
  170. package/src/runtime/agent/orchestrator/session/image-strip-recovery.mjs +1 -1
  171. package/src/runtime/agent/orchestrator/session/loop/completion-guards.mjs +11 -1
  172. package/src/runtime/agent/orchestrator/session/loop/context-overflow.mjs +1 -1
  173. package/src/runtime/agent/orchestrator/session/loop/fresh-context.mjs +5 -3
  174. package/src/runtime/agent/orchestrator/session/loop/loop-state.mjs +8 -1
  175. package/src/runtime/agent/orchestrator/session/loop/no-tool-turn/todo-check.mjs +196 -0
  176. package/src/runtime/agent/orchestrator/session/loop/no-tool-turn.mjs +116 -50
  177. package/src/runtime/agent/orchestrator/session/loop/pre-dispatch-deny.mjs +8 -1
  178. package/src/runtime/agent/orchestrator/session/loop/provider-tool-exclusions.mjs +1 -1
  179. package/src/runtime/agent/orchestrator/session/loop/route-fallback.mjs +1 -1
  180. package/src/runtime/agent/orchestrator/session/loop/steering.mjs +3 -1
  181. package/src/runtime/agent/orchestrator/session/loop/stored-tool-args.mjs +5 -6
  182. package/src/runtime/agent/orchestrator/session/loop/tool-exec/before-hook.mjs +27 -3
  183. package/src/runtime/agent/orchestrator/session/loop/tool-exec/dispatch.mjs +18 -2
  184. package/src/runtime/agent/orchestrator/session/loop/tool-exec.mjs +23 -1
  185. package/src/runtime/agent/orchestrator/session/loop/turn-limits.mjs +13 -8
  186. package/src/runtime/agent/orchestrator/session/loop/turn-report.mjs +35 -0
  187. package/src/runtime/agent/orchestrator/session/loop/usage.mjs +1 -1
  188. package/src/runtime/agent/orchestrator/session/manager/ask-session.mjs +103 -50
  189. package/src/runtime/agent/orchestrator/session/manager/ask-turn-auto-effort.mjs +9 -7
  190. package/src/runtime/agent/orchestrator/session/manager/ask-turn-execute.mjs +21 -3
  191. package/src/runtime/agent/orchestrator/session/manager/ask-turn-failure.mjs +27 -11
  192. package/src/runtime/agent/orchestrator/session/manager/ask-turn-open.mjs +37 -34
  193. package/src/runtime/agent/orchestrator/session/manager/ask-turn-prepare.mjs +15 -0
  194. package/src/runtime/agent/orchestrator/session/manager/ask-turn-settle.mjs +25 -15
  195. package/src/runtime/agent/orchestrator/session/manager/ask-turn-state.mjs +79 -24
  196. package/src/runtime/agent/orchestrator/session/manager/ask-turn-steering-drain.mjs +3 -0
  197. package/src/runtime/agent/orchestrator/session/manager/compaction-runner.mjs +12 -1
  198. package/src/runtime/agent/orchestrator/session/manager/context-meta.mjs +1 -1
  199. package/src/runtime/agent/orchestrator/session/manager/idle-cleanup.mjs +6 -1
  200. package/src/runtime/agent/orchestrator/session/manager/pending-messages.mjs +9 -1
  201. package/src/runtime/agent/orchestrator/session/manager/pending-spool-path.mjs +2 -2
  202. package/src/runtime/agent/orchestrator/session/manager/pending-spool-shard.mjs +1 -1
  203. package/src/runtime/agent/orchestrator/session/manager/prompt-settings.mjs +598 -0
  204. package/src/runtime/agent/orchestrator/session/manager/prompt-utils.mjs +20 -0
  205. package/src/runtime/agent/orchestrator/session/manager/rules-cache.mjs +22 -14
  206. package/src/runtime/agent/orchestrator/session/manager/runtime-liveness.mjs +2 -0
  207. package/src/runtime/agent/orchestrator/session/manager/session-close.mjs +12 -0
  208. package/src/runtime/agent/orchestrator/session/manager/session-crud.mjs +15 -0
  209. package/src/runtime/agent/orchestrator/session/manager/session-fallback-title.mjs +1 -1
  210. package/src/runtime/agent/orchestrator/session/manager/session-lifecycle.mjs +56 -14
  211. package/src/runtime/agent/orchestrator/session/manager/session-lock.mjs +31 -0
  212. package/src/runtime/agent/orchestrator/session/manager/session-prompt-composition.mjs +59 -20
  213. package/src/runtime/agent/orchestrator/session/manager/session-record.mjs +2 -0
  214. package/src/runtime/agent/orchestrator/session/manager/session-scratch-environment.mjs +70 -0
  215. package/src/runtime/agent/orchestrator/session/manager/session-tool-surface.mjs +0 -3
  216. package/src/runtime/agent/orchestrator/session/manager/tool-resolution.mjs +18 -4
  217. package/src/runtime/agent/orchestrator/session/manager/turn-checkpoint-context.mjs +8 -9
  218. package/src/runtime/agent/orchestrator/session/manager/turn-checkpoint-journal.mjs +339 -88
  219. package/src/runtime/agent/orchestrator/session/manager/turn-checkpoint-recovery.mjs +135 -11
  220. package/src/runtime/agent/orchestrator/session/manager/turn-checkpoint.mjs +377 -104
  221. package/src/runtime/agent/orchestrator/session/manager/turn-durability.mjs +144 -0
  222. package/src/runtime/agent/orchestrator/session/manager/turn-interruption.mjs +48 -30
  223. package/src/runtime/agent/orchestrator/session/manager/turn-reap.mjs +125 -0
  224. package/src/runtime/agent/orchestrator/session/manager/usage-metrics.mjs +4 -0
  225. package/src/runtime/agent/orchestrator/session/manager.mjs +6 -0
  226. package/src/runtime/agent/orchestrator/session/mixy-name.mjs +12 -6
  227. package/src/runtime/agent/orchestrator/session/pre-send-compact.mjs +8 -1
  228. package/src/runtime/agent/orchestrator/session/restart-prefix-parity.fixture.mjs +1 -1
  229. package/src/runtime/agent/orchestrator/session/save-session-worker.mjs +5 -1
  230. package/src/runtime/agent/orchestrator/session/store/canonical-reader.mjs +1 -1
  231. package/src/runtime/agent/orchestrator/session/store/liveness-veto.mjs +2 -2
  232. package/src/runtime/agent/orchestrator/session/store/save-worker.mjs +23 -2
  233. package/src/runtime/agent/orchestrator/session/store/sweep/sub-agent-retention.mjs +3 -3
  234. package/src/runtime/agent/orchestrator/session/store/transcript-durability.mjs +88 -0
  235. package/src/runtime/agent/orchestrator/session/store-agent-worker-rows.mjs +5 -0
  236. package/src/runtime/agent/orchestrator/session/store-summary-log.mjs +1 -1
  237. package/src/runtime/agent/orchestrator/session/store-summary-reader.mjs +243 -38
  238. package/src/runtime/agent/orchestrator/session/store-transcript-cache.mjs +163 -64
  239. package/src/runtime/agent/orchestrator/session/store-transcript-projection.mjs +177 -8
  240. package/src/runtime/agent/orchestrator/session/store-transcript-worker.mjs +142 -18
  241. package/src/runtime/agent/orchestrator/session/store.mjs +5 -0
  242. package/src/runtime/agent/orchestrator/session/synthetic-user-envelope.mjs +7 -1
  243. package/src/runtime/agent/orchestrator/session/tail-reminder-rules.mjs +9 -1
  244. package/src/runtime/agent/orchestrator/session/transcript-restore/agent-envelope.mjs +1 -1
  245. package/src/runtime/agent/orchestrator/session/transcript-restore/restore.mjs +3 -1
  246. package/src/runtime/agent/orchestrator/session/transcript-restore/user-text.mjs +2 -2
  247. package/src/runtime/agent/orchestrator/stall-policy.mjs +3 -5
  248. package/src/runtime/agent/orchestrator/tools/builtin/bash-tool/backgrounded-result.mjs +4 -1
  249. package/src/runtime/agent/orchestrator/tools/builtin/bash-tool/completed-result.mjs +6 -2
  250. package/src/runtime/agent/orchestrator/tools/builtin/bash-tool/misuse-guard.mjs +21 -3
  251. package/src/runtime/agent/orchestrator/tools/builtin/bash-tool/result-format.mjs +1 -1
  252. package/src/runtime/agent/orchestrator/tools/builtin/bash-tool/worktree-add-guard.mjs +77 -0
  253. package/src/runtime/agent/orchestrator/tools/builtin/bash-tool.mjs +0 -1
  254. package/src/runtime/agent/orchestrator/tools/builtin/git-command-tool.mjs +42 -28
  255. package/src/runtime/agent/orchestrator/tools/builtin/git-worktree-tool.mjs +30 -14
  256. package/src/runtime/agent/orchestrator/tools/builtin/lib/search-input-helpers.mjs +2 -2
  257. package/src/runtime/agent/orchestrator/tools/builtin/lib/shell-job-records.mjs +58 -20
  258. package/src/runtime/agent/orchestrator/tools/builtin/read-range-index.mjs +1 -1
  259. package/src/runtime/agent/orchestrator/tools/builtin/read-single-fast-paths.mjs +0 -1
  260. package/src/runtime/agent/orchestrator/tools/builtin/runtime-capabilities.mjs +20 -15
  261. package/src/runtime/agent/orchestrator/tools/builtin/search-tool.mjs +0 -10
  262. package/src/runtime/agent/orchestrator/tools/builtin/shell-jobs.mjs +95 -20
  263. package/src/runtime/agent/orchestrator/tools/builtin/task-tool.mjs +59 -10
  264. package/src/runtime/agent/orchestrator/tools/builtin.mjs +1 -24
  265. package/src/runtime/agent/orchestrator/tools/code-graph/graph-binary/child-kill.mjs +4 -3
  266. package/src/runtime/agent/orchestrator/tools/code-graph/graph-binary.mjs +1 -2
  267. package/src/runtime/agent/orchestrator/tools/code-graph/modes/calls.mjs +1 -1
  268. package/src/runtime/agent/orchestrator/tools/code-graph/modes/symbols.mjs +2 -2
  269. package/src/runtime/agent/orchestrator/tools/code-graph/search.mjs +4 -5
  270. package/src/runtime/agent/orchestrator/tools/code-graph/symbol-index.mjs +3 -4
  271. package/src/runtime/agent/orchestrator/tools/code-graph.mjs +4 -22
  272. package/src/runtime/agent/orchestrator/tools/graph-manifest.json +13 -13
  273. package/src/runtime/agent/orchestrator/tools/lib/native-spawn-client.mjs +99 -2
  274. package/src/runtime/agent/orchestrator/tools/lib/owned-shell-trees.mjs +2 -0
  275. package/src/runtime/agent/orchestrator/tools/lib/shell-descendants.mjs +105 -15
  276. package/src/runtime/agent/orchestrator/tools/lib/shell-run-background/promote-job.mjs +3 -1
  277. package/src/runtime/agent/orchestrator/tools/lib/shell-run-settle.mjs +49 -15
  278. package/src/runtime/agent/orchestrator/tools/lib/shell-run-spawn.mjs +45 -27
  279. package/src/runtime/agent/orchestrator/tools/lib/shell-run-state.mjs +35 -11
  280. package/src/runtime/agent/orchestrator/tools/lib/shell-warm-standby.mjs +2 -0
  281. package/src/runtime/agent/orchestrator/tools/lib/wait-until-fixture.mjs +26 -0
  282. package/src/runtime/agent/orchestrator/tools/shell-command.mjs +7 -6
  283. package/src/runtime/agent/orchestrator/tools/shell-policy.mjs +0 -1
  284. package/src/runtime/agent/orchestrator/tools/spawn-manifest.json +13 -13
  285. package/src/runtime/attachments/attachment-reference.mjs +1 -1
  286. package/src/runtime/attachments/pdf-extract.mjs +1 -1
  287. package/src/runtime/attachments/store.d.mts +1 -0
  288. package/src/runtime/attachments/store.mjs +2 -2
  289. package/src/runtime/channels/lib/config-reload-watch.mjs +42 -0
  290. package/src/runtime/channels/lib/owned-runtime/config-reload.mjs +29 -9
  291. package/src/runtime/channels/lib/scheduler.mjs +33 -0
  292. package/src/runtime/channels/lib/schedules-db.mjs +11 -4
  293. package/src/runtime/channels/lib/webhook/session-dispatch.mjs +4 -1
  294. package/src/runtime/channels/lib/webhooks-db.mjs +9 -3
  295. package/src/runtime/channels/lib/whisper-port.mjs +19 -10
  296. package/src/runtime/channels/lib/whisper-server.mjs +22 -13
  297. package/src/runtime/channels/lib/worker-main.mjs +9 -31
  298. package/src/runtime/computer-bridge/linux-readiness.mjs +10 -14
  299. package/src/runtime/connectors/connector-accounts-mcp.mjs +372 -103
  300. package/src/runtime/connectors/gmail-app-password.mjs +4 -4
  301. package/src/runtime/connectors/google-mcp.mjs +1 -1
  302. package/src/runtime/effort-judge/judge-client.mjs +2 -2
  303. package/src/runtime/effort-judge/judge-input.mjs +4 -4
  304. package/src/runtime/explore/explorer.mjs +88 -0
  305. package/src/runtime/explore/tool-defs.mjs +35 -0
  306. package/src/runtime/explore/tool.mjs +123 -0
  307. package/src/runtime/local-provider/hardware.mjs +1 -1
  308. package/src/runtime/media/adapters/codex-image.mjs +3 -3
  309. package/src/runtime/media/adapters/gemini-video.mjs +1 -1
  310. package/src/runtime/media/media-usage.mjs +1 -1
  311. package/src/runtime/media/store.mjs +1 -1
  312. package/src/runtime/memory/index.mjs +15 -1
  313. package/src/runtime/memory/lib/embedding-provider.mjs +4 -1
  314. package/src/runtime/memory/lib/embedding-reindex.mjs +27 -0
  315. package/src/runtime/memory/lib/embedding-worker.mjs +4 -0
  316. package/src/runtime/memory/lib/memory-embed.mjs +83 -14
  317. package/src/runtime/memory/lib/memory-process-lock.mjs +159 -36
  318. package/src/runtime/memory/lib/memory-text-utils.mjs +6 -1
  319. package/src/runtime/memory/lib/memory.mjs +17 -0
  320. package/src/runtime/memory/lib/pg/process.mjs +1 -1
  321. package/src/runtime/memory/lib/pg/supervisor.mjs +16 -96
  322. package/src/runtime/memory/lib/recall-hybrid/hybrid-sql.mjs +12 -3
  323. package/src/runtime/office/authoring/docx-html-runner.mjs +1 -1
  324. package/src/runtime/office/authoring/pptx-author-action.mjs +1 -1
  325. package/src/runtime/office/authoring/xlsx-html-build.mjs +1 -1
  326. package/src/runtime/office/authoring/xlsx-html-runner.mjs +1 -1
  327. package/src/runtime/office/capabilities.mjs +1 -1
  328. package/src/runtime/office/core/office-core.mjs +1 -1
  329. package/src/runtime/office/design/content-model.mjs +3 -3
  330. package/src/runtime/office/design/docx/design-docx/section.mjs +6 -6
  331. package/src/runtime/office/design/xlsx/design-xlsx-components.mjs +1 -1
  332. package/src/runtime/office/design/xlsx/design-xlsx.mjs +1 -1
  333. package/src/runtime/office/pdf/ocr-engine.mjs +1 -1
  334. package/src/runtime/office/pdf/pdf-writer.mjs +4 -4
  335. package/src/runtime/office/portable/portable-docx-operations.mjs +2 -2
  336. package/src/runtime/office/portable/portable-soffice.mjs +8 -6
  337. package/src/runtime/office/portable/xlsx-contract.mjs +1 -1
  338. package/src/runtime/office/quality/assurance-structure-docx.mjs +1 -1
  339. package/src/runtime/shared/agent-route-config.mjs +17 -2
  340. package/src/runtime/shared/atomic-file.d.mts +8 -0
  341. package/src/runtime/shared/atomic-file.mjs +103 -2
  342. package/src/runtime/shared/background-tasks.mjs +37 -10
  343. package/src/runtime/shared/background-wait.mjs +66 -0
  344. package/src/runtime/shared/child-guardian.mjs +17 -7
  345. package/src/runtime/shared/config.mjs +313 -16
  346. package/src/runtime/shared/connector-accounts.mjs +5 -5
  347. package/src/runtime/shared/connector-catalog.d.mts +14 -8
  348. package/src/runtime/shared/connector-catalog.mjs +70 -52
  349. package/src/runtime/shared/custom-provider-keys.mjs +20 -0
  350. package/src/runtime/shared/file-has-data.mjs +26 -2
  351. package/src/runtime/shared/file-lock.mjs +21 -18
  352. package/src/runtime/shared/git-launch.d.mts +9 -0
  353. package/src/runtime/shared/git-launch.mjs +213 -0
  354. package/src/runtime/shared/git-runner-worker.mjs +2 -1
  355. package/src/runtime/shared/git-runner.mjs +7 -2
  356. package/src/runtime/shared/idle-gc.mjs +30 -7
  357. package/src/runtime/shared/llm/cost.mjs +6 -1
  358. package/src/runtime/shared/llm/http-agent.mjs +316 -29
  359. package/src/runtime/shared/llm/model-catalog-projection.mjs +3 -2
  360. package/src/runtime/shared/llm/model-catalog.mjs +46 -6
  361. package/src/runtime/shared/llm/provider-catalog-registry.mjs +3 -0
  362. package/src/runtime/shared/llm/system-proxy.mjs +453 -0
  363. package/src/runtime/shared/llm/usage-ledger-quota.mjs +31 -12
  364. package/src/runtime/shared/llm/usage-ledger-rollup.mjs +84 -8
  365. package/src/runtime/shared/llm/usage-ledger.mjs +3 -0
  366. package/src/runtime/shared/llm/usage-rollup.mjs +48 -0
  367. package/src/runtime/shared/maintenance-schedule.mjs +109 -0
  368. package/src/runtime/shared/process-runner.mjs +8 -4
  369. package/src/runtime/shared/provider-accounts.mjs +52 -2
  370. package/src/runtime/shared/routine-trigger.d.mts +13 -0
  371. package/src/runtime/shared/routine-trigger.mjs +34 -0
  372. package/src/runtime/shared/run-child.d.mts +2 -1
  373. package/src/runtime/shared/run-child.mjs +70 -18
  374. package/src/runtime/shared/session-scratch.mjs +14 -2
  375. package/src/runtime/shared/shipped-definitions.mjs +7 -1
  376. package/src/runtime/shared/staged-install-worker.mjs +5 -0
  377. package/src/runtime/shared/staged-update.mjs +47 -2
  378. package/src/runtime/shared/tool-card-model.golden.json +3 -12
  379. package/src/runtime/shared/tool-execution-contract.mjs +2 -0
  380. package/src/runtime/shared/tool-surface.mjs +110 -36
  381. package/src/runtime/shared/tool-work-units.mjs +35 -6
  382. package/src/runtime/shared/turn-snapshot.mjs +26 -4
  383. package/src/runtime/shared/turn-worktree-snapshot.mjs +409 -54
  384. package/src/runtime/shared/worker-requests.mjs +17 -3
  385. package/src/runtime/shared/worktrees/activity-gate.mjs +215 -318
  386. package/src/runtime/shared/worktrees/activity-ledger-worker.mjs +56 -0
  387. package/src/runtime/shared/worktrees/activity-ledger.mjs +391 -0
  388. package/src/runtime/shared/worktrees/branch-management.mjs +5 -3
  389. package/src/runtime/shared/worktrees/contract.mjs +16 -6
  390. package/src/runtime/shared/worktrees/dependencies.mjs +127 -89
  391. package/src/runtime/shared/worktrees/disk.mjs +79 -2
  392. package/src/runtime/shared/worktrees/git.mjs +97 -7
  393. package/src/runtime/shared/worktrees/include.mjs +6 -4
  394. package/src/runtime/shared/worktrees/maintenance.mjs +422 -30
  395. package/src/runtime/shared/worktrees/manager.mjs +962 -197
  396. package/src/runtime/shared/worktrees/settings.mjs +33 -7
  397. package/src/runtime/shared/worktrees/test-support.mjs +5 -1
  398. package/src/runtime/shared/worktrees/worker-snapshots.mjs +82 -0
  399. package/src/runtime/tidy/install.mjs +95 -15
  400. package/src/runtime/tidy/languages.mjs +17 -15
  401. package/src/runtime/tidy/process.mjs +9 -5
  402. package/src/runtime/tidy/resolve.mjs +19 -16
  403. package/src/runtime/tidy/runners/biome.mjs +3 -3
  404. package/src/runtime/tidy/tool.mjs +1 -1
  405. package/src/runtime/tidy/worktree.mjs +10 -6
  406. package/src/runtime/visualize-bridge/client.mjs +4 -1
  407. package/src/runtime/visualize-bridge/tool-defs.mjs +7 -2
  408. package/src/runtime/web-search/index.mjs +4 -23
  409. package/src/runtime/web-search/lib/web-tools.mjs +2 -2
  410. package/src/runtime/web-search/tool-defs.mjs +17 -26
  411. package/src/session-runtime/agent-profile-changes.mjs +55 -4
  412. package/src/session-runtime/agent-task-sessions.mjs +410 -353
  413. package/src/session-runtime/boot/apis.mjs +27 -4
  414. package/src/session-runtime/boot/begin.mjs +2 -0
  415. package/src/session-runtime/boot/config.mjs +10 -1
  416. package/src/session-runtime/boot/facade.mjs +1 -0
  417. package/src/session-runtime/boot/providers.mjs +70 -3
  418. package/src/session-runtime/boot/session.mjs +2 -0
  419. package/src/session-runtime/boot/tools.mjs +71 -25
  420. package/src/session-runtime/bot-status.mjs +103 -103
  421. package/src/session-runtime/channel-config-api.mjs +1 -0
  422. package/src/session-runtime/config-change-effects.mjs +179 -0
  423. package/src/session-runtime/config-lifecycle/config-writers.mjs +1 -0
  424. package/src/session-runtime/config-lifecycle.mjs +160 -24
  425. package/src/session-runtime/connector-merge-migration.mjs +18 -15
  426. package/src/session-runtime/conversation-import/discovery.mjs +245 -47
  427. package/src/session-runtime/conversation-import/service.mjs +12 -5
  428. package/src/session-runtime/goal-facade-api.mjs +49 -3
  429. package/src/session-runtime/handoff-attachments.mjs +1 -1
  430. package/src/session-runtime/held-requests.mjs +3 -1
  431. package/src/session-runtime/internal-tool-executor/ask-user-tool.mjs +3 -0
  432. package/src/session-runtime/internal-tool-executor/bridge-tools.mjs +3 -2
  433. package/src/session-runtime/internal-tool-executor/feature-tools.mjs +5 -11
  434. package/src/session-runtime/internal-tool-executor/knowledge-tools.mjs +8 -0
  435. package/src/session-runtime/internal-tool-executor/workspace-tools.mjs +161 -120
  436. package/src/session-runtime/internal-tool-executor.mjs +12 -19
  437. package/src/session-runtime/lifecycle/cold-heir.mjs +7 -0
  438. package/src/session-runtime/lifecycle/memory-ingest.mjs +3 -3
  439. package/src/session-runtime/lifecycle/session-switch/session-delete.mjs +53 -5
  440. package/src/session-runtime/lifecycle/session-switch.mjs +13 -2
  441. package/src/session-runtime/lifecycle/teardown/session-close.mjs +10 -5
  442. package/src/session-runtime/lifecycle/teardown.mjs +1 -1
  443. package/src/session-runtime/lifecycle-api.mjs +1 -0
  444. package/src/session-runtime/mcp-glue/server-catalog.mjs +27 -10
  445. package/src/session-runtime/mcp-glue/server-connection.mjs +34 -8
  446. package/src/session-runtime/mcp-glue/server-input.mjs +4 -1
  447. package/src/session-runtime/mixy-heartbeat.mjs +1 -1
  448. package/src/session-runtime/model-route/set-route.mjs +40 -7
  449. package/src/session-runtime/native-web-search/routes.mjs +3 -3
  450. package/src/session-runtime/provider-auth/login.mjs +2 -2
  451. package/src/session-runtime/provider-auth/refresh.mjs +6 -3
  452. package/src/session-runtime/provider-auth/setup.mjs +1 -1
  453. package/src/session-runtime/provider-readiness.mjs +53 -4
  454. package/src/session-runtime/resource-api.mjs +1 -1
  455. package/src/session-runtime/resource-extension-sync.mjs +4 -8
  456. package/src/session-runtime/resource-mcp-api.mjs +98 -35
  457. package/src/session-runtime/resource-mcp-connector-accounts.mjs +49 -32
  458. package/src/session-runtime/resource-mcp-secrets.mjs +27 -10
  459. package/src/session-runtime/resource-mcp-servers.mjs +5 -4
  460. package/src/session-runtime/resource-plugins-api.mjs +4 -0
  461. package/src/session-runtime/routine-executor.mjs +152 -0
  462. package/src/session-runtime/routine-home-turn.mjs +46 -5
  463. package/src/session-runtime/runtime-facade.mjs +5 -0
  464. package/src/session-runtime/runtime-feature-gates.mjs +2 -11
  465. package/src/session-runtime/schedule-session-run.mjs +1 -0
  466. package/src/session-runtime/services/agent-tool/job-task-reconcile.mjs +6 -1
  467. package/src/session-runtime/services/agent-tool/job-views/session-progress.mjs +7 -0
  468. package/src/session-runtime/services/agent-tool/send-flow.mjs +120 -8
  469. package/src/session-runtime/services/agent-tool/spawn-flow/job-start.mjs +12 -0
  470. package/src/session-runtime/services/agent-tool/spawn-flow/spawn-plan.mjs +5 -0
  471. package/src/session-runtime/services/agent-tool/spawn-flow/spawn-prep.mjs +8 -3
  472. package/src/session-runtime/services/agent-tool/spawn-flow/spawn-run.mjs +28 -7
  473. package/src/session-runtime/services/agent-tool.mjs +51 -1
  474. package/src/session-runtime/services/agent-watchdog-registry.mjs +32 -4
  475. package/src/session-runtime/services/channel-admin.mjs +18 -0
  476. package/src/session-runtime/services/channel-worker/daemon-spawn.mjs +2 -0
  477. package/src/session-runtime/services/daemon-candidate.mjs +4 -1
  478. package/src/session-runtime/services/hook-bus/command-handler.mjs +7 -11
  479. package/src/session-runtime/services/memory-runtime-proxy/daemon-spawn.mjs +4 -0
  480. package/src/session-runtime/services/plugin-admin.mjs +14 -6
  481. package/src/session-runtime/services/provider-admin.mjs +281 -10
  482. package/src/session-runtime/services/seeds.mjs +7 -0
  483. package/src/session-runtime/services/usage-stats-model.mjs +32 -11
  484. package/src/session-runtime/session-create/materialize.mjs +4 -2
  485. package/src/session-runtime/session-create/session-options.mjs +2 -0
  486. package/src/session-runtime/session-turn-api.mjs +2 -0
  487. package/src/session-runtime/settings-builtin-tools-api.mjs +5 -10
  488. package/src/session-runtime/settings-system-api.mjs +1 -1
  489. package/src/session-runtime/setup-tool/agent-settings-actions.mjs +13 -3
  490. package/src/session-runtime/setup-tool/connector-widen-approval.mjs +96 -0
  491. package/src/session-runtime/setup-tool/executor.mjs +14 -3
  492. package/src/session-runtime/setup-tool/extended-actions.mjs +2 -0
  493. package/src/session-runtime/setup-tool/settings-contract.mjs +28 -0
  494. package/src/session-runtime/setup-tool/tool-defs.mjs +28 -2
  495. package/src/session-runtime/tool-policy/agent-profile-fold.mjs +40 -43
  496. package/src/session-runtime/tool-policy/mode-switch.mjs +1 -1
  497. package/src/session-runtime/tool-policy/policy-stage.mjs +106 -8
  498. package/src/session-runtime/tool-policy/workflow-overlay.mjs +2 -1
  499. package/src/session-runtime/tool-policy-refresh.mjs +182 -5
  500. package/src/session-runtime/tool-surface.mjs +38 -1
  501. package/src/session-runtime/turn/agent-ops.mjs +33 -2
  502. package/src/session-runtime/turn/session-ops.mjs +2 -0
  503. package/src/session-runtime/turn/turn-run/turn-prepare.mjs +5 -0
  504. package/src/session-runtime/turn/turn-run.mjs +1 -1
  505. package/src/session-runtime/webhook-session-run.mjs +2 -0
  506. package/src/session-runtime/workflow-agents-api/agent-connectors.mjs +46 -11
  507. package/src/session-runtime/workflow-agents-api/agent-route.mjs +2 -0
  508. package/src/session-runtime/workflow-agents-api/instruction-files.mjs +165 -0
  509. package/src/session-runtime/workflow-agents-api/style-and-mode.mjs +5 -4
  510. package/src/session-runtime/workflow-agents-api/workflow-packs.mjs +2 -3
  511. package/src/session-runtime/workflow-agents-api.mjs +2 -0
  512. package/src/session-runtime/workspace/activity-guards.mjs +176 -0
  513. package/src/session-runtime/workspace/project-branches.mjs +1 -1
  514. package/src/session-runtime/workspace/session-view.mjs +149 -0
  515. package/src/session-runtime/workspace/side-checkouts.mjs +203 -0
  516. package/src/session-runtime/workspace/transition-runner.mjs +188 -0
  517. package/src/session-runtime/workspace/transitions.mjs +128 -1070
  518. package/src/session-runtime/workspace/workspace-merge.mjs +132 -0
  519. package/src/session-runtime/workspace/worktree-intents.mjs +242 -0
  520. package/src/session-runtime/workspace/worktree-maintenance.mjs +200 -0
  521. package/src/session-runtime/workspace/worktree-setup.mjs +97 -0
  522. package/src/session-runtime/workspace/worktree-tool.mjs +70 -54
  523. package/src/standalone/daemon-agent-control.mjs +25 -8
  524. package/src/standalone/daemon-desktop-runtime.mjs +8 -2
  525. package/src/standalone/daemon-lag-profiler.mjs +7 -7
  526. package/src/standalone/daemon-session-control.mjs +151 -136
  527. package/src/standalone/daemon.mjs +61 -2
  528. package/src/standalone/desktop-service-registry.mjs +9 -0
  529. package/src/standalone/local-session-runtime.mjs +21 -1
  530. package/src/standalone/session-client/daemon-unavailable.mjs +4 -1
  531. package/src/standalone/session-client.mjs +5 -1
  532. package/src/standalone/session-frame-stream.mjs +83 -11
  533. package/src/standalone/session-protocol.mjs +15 -0
  534. package/src/standalone/session-service/agent-route-follow.mjs +23 -20
  535. package/src/standalone/session-service/agent-tree/agent-turns.mjs +18 -6
  536. package/src/standalone/session-service/agent-tree.mjs +45 -9
  537. package/src/standalone/session-service/projection/transcript-window.mjs +700 -64
  538. package/src/standalone/session-service/quota-resume.mjs +9 -0
  539. package/src/standalone/session-service/session-calls/session-action.mjs +51 -1
  540. package/src/standalone/session-service/session-calls/session-turns.mjs +37 -18
  541. package/src/standalone/session-service/session-calls/session-views.mjs +160 -104
  542. package/src/standalone/session-service/session-calls/turn-gate.mjs +34 -0
  543. package/src/standalone/session-service/session-calls.mjs +2 -1
  544. package/src/standalone/session-service/stored-reader.mjs +127 -40
  545. package/src/tui/App.jsx +162 -164
  546. package/src/tui/app/app-view/floating-panel.jsx +3 -0
  547. package/src/tui/app/app-view/text-entry-labels.mjs +1 -0
  548. package/src/tui/app/clipboard.mjs +22 -11
  549. package/src/tui/app/create-app-pickers.mjs +2 -0
  550. package/src/tui/app/doctor.mjs +2 -2
  551. package/src/tui/app/panel-signature.mjs +1 -1
  552. package/src/tui/app/prompt-handlers/use-prompt-history-nav.mjs +1 -1
  553. package/src/tui/app/prompt-handlers/use-prompt-interrupt.mjs +3 -0
  554. package/src/tui/app/prompt-submit/provider-prompts.mjs +3 -1
  555. package/src/tui/app/provider-setup/api-key-actions.mjs +31 -1
  556. package/src/tui/app/provider-setup/oauth-actions.mjs +25 -6
  557. package/src/tui/app/provider-setup-picker.mjs +20 -13
  558. package/src/tui/app/settings-picker.mjs +53 -8
  559. package/src/tui/app/shell-layout/row-budgets.mjs +14 -12
  560. package/src/tui/app/slash-commands.mjs +2 -1
  561. package/src/tui/app/slash-dispatch/route-commands.mjs +1 -1
  562. package/src/tui/app/slash-dispatch/session-commands.mjs +47 -1
  563. package/src/tui/app/slash-dispatch.mjs +1 -1
  564. package/src/tui/app/use-btw-panel.mjs +29 -0
  565. package/src/tui/app/use-context-panel-refresh.mjs +31 -0
  566. package/src/tui/app/use-model-catalog-cache.mjs +13 -10
  567. package/src/tui/app/use-mouse-input.mjs +11 -0
  568. package/src/tui/app/use-onboarding-start.mjs +8 -3
  569. package/src/tui/app/use-panel-transition.mjs +10 -1
  570. package/src/tui/app/use-pasted-buffers.mjs +28 -20
  571. package/src/tui/app/use-prompt-draft-flow.mjs +7 -0
  572. package/src/tui/app/use-prompt-layout-rows.mjs +3 -3
  573. package/src/tui/app/use-prompt-queue-history.mjs +5 -4
  574. package/src/tui/app/use-selection-focus.mjs +11 -2
  575. package/src/tui/app/use-selection-geometry.mjs +18 -9
  576. package/src/tui/app/use-selection-paint.mjs +4 -4
  577. package/src/tui/app/use-selection-stitch.mjs +3 -3
  578. package/src/tui/app/use-slash-palette.mjs +62 -0
  579. package/src/tui/app/use-terminal-chrome.mjs +2 -2
  580. package/src/tui/app/use-transcript-activity.mjs +48 -33
  581. package/src/tui/app/use-transcript-follow.mjs +12 -4
  582. package/src/tui/app/use-transcript-scroll.mjs +46 -17
  583. package/src/tui/app/use-transcript-swap-reset.mjs +27 -0
  584. package/src/tui/app/use-transcript-window/geometry.mjs +20 -6
  585. package/src/tui/app/use-transcript-window/instance-state.mjs +4 -0
  586. package/src/tui/app/use-transcript-window/selection-shift.mjs +5 -1
  587. package/src/tui/app/use-transcript-window.mjs +21 -11
  588. package/src/tui/app/use-tui-ready.mjs +18 -0
  589. package/src/tui/app/use-welcome-prompt-hint.mjs +5 -0
  590. package/src/tui/app/use-workflow-tab-cycle.mjs +5 -3
  591. package/src/tui/components/Picker.jsx +27 -3
  592. package/src/tui/components/SignInUrl.jsx +68 -0
  593. package/src/tui/components/TextEntryPanel.jsx +76 -46
  594. package/src/tui/components/prompt-input/escape-policy.d.mts +0 -1
  595. package/src/tui/components/prompt-input/escape-policy.mjs +1 -1
  596. package/src/tui/components/question-panel-model.mjs +4 -4
  597. package/src/tui/components/sign-in-url-layout.mjs +24 -0
  598. package/src/tui/components/tool-execution/standard-card.jsx +3 -4
  599. package/src/tui/components/user-message-skills.mjs +1 -1
  600. package/src/tui/dist/index.mjs +2205 -1371
  601. package/src/tui/markdown/render-ansi.mjs +1 -1
  602. package/src/tui/session/agent-job-feed/notification-router.mjs +10 -0
  603. package/src/tui/session/agent-job-feed.mjs +2 -0
  604. package/src/tui/session/context-state.mjs +3 -0
  605. package/src/tui/session/goal-turn-state.mjs +6 -2
  606. package/src/tui/session/quota-resume.mjs +1 -1
  607. package/src/tui/session/session-api/controls.mjs +4 -0
  608. package/src/tui/session/session-api/extensions.mjs +8 -0
  609. package/src/tui/session/session-api/intake/abort.mjs +2 -1
  610. package/src/tui/session/session-api/intake.mjs +2 -0
  611. package/src/tui/session/session-api/integrations.mjs +2 -2
  612. package/src/tui/session/session-api/lifecycle/dispose.mjs +1 -0
  613. package/src/tui/session/session-api/lifecycle/session-reset.mjs +7 -0
  614. package/src/tui/session/session-api/routes-agent-definitions.mjs +6 -0
  615. package/src/tui/session/session-api/settings.mjs +2 -2
  616. package/src/tui/session/session-api/worktree.mjs +13 -1
  617. package/src/tui/session/session-flow/drain.mjs +11 -14
  618. package/src/tui/session/tool-card-results/grouped-result.mjs +2 -2
  619. package/src/tui/session/transcript-spill/spill-writer.mjs +15 -0
  620. package/src/tui/session/transcript-spill.mjs +92 -4
  621. package/src/tui/session/transcript-store.mjs +2 -0
  622. package/src/tui/session/turn-quiet.mjs +1 -1
  623. package/src/tui/session/turn.mjs +3 -0
  624. package/src/tui/session/worktree-setup-notice.mjs +1 -1
  625. package/src/tui/spinner-meta.mjs +3 -3
  626. package/src/tui/spinner-verbs.mjs +2 -2
  627. package/src/defaults/skills/goal-management/SKILL.md +0 -169
  628. package/src/defaults/skills/skill-creator/references/source-review.md +0 -94
  629. package/src/runtime/agent/orchestrator/runtime-core/goal-tasks.mjs +0 -156
  630. package/src/session-runtime/goal-tasks.mjs +0 -1
@@ -10,7 +10,7 @@
10
10
  // stores. Only the API-key secrets (`secrets/agent.<provider>.apiKey.dpapi`) and the
11
11
  // `agent` section of mixdog-config.json are copied in. OAuth providers (`*-oauth`, whose
12
12
  // refresh tokens could be rotated) are skipped unless `--real-data` is passed, which
13
- // restores the old behaviour of running against the real data dir. The isolated dir is
13
+ // runs against the real data dir instead. The isolated dir is
14
14
  // deleted at the end, after stopping only processes whose executable lives inside it.
15
15
  // Usage: node scripts/provider-pingpong-live.mjs [--suite extended] [--real-data] [case-name ...]
16
16
  import fs from 'node:fs';
@@ -118,7 +118,9 @@ export async function pruneEmbeddingRuntime(packageRoot, options = {}) {
118
118
  }
119
119
  }
120
120
  }
121
- await removeChildrenExcept(ortRoot, new Set(['package.json', 'dist', 'bin', 'node_modules']));
121
+ // npm runs onnxruntime-node's own postinstall (node ./script/install)
122
+ // concurrently with ours, so its script/ helpers must survive the prune.
123
+ await removeChildrenExcept(ortRoot, new Set(['package.json', 'dist', 'bin', 'node_modules', 'script']));
122
124
 
123
125
  // The Node bundle marks onnxruntime-web as an ignored webpack external. Keep
124
126
  // only its manifest so npm's dependency inventory remains coherent.
@@ -51,7 +51,13 @@ const PATCH_GATE_FILES = [
51
51
  // workflow, output-style and bundled-skill trees (scripts/build-shipped-history.mjs)
52
52
  // and committed under src/defaults/. Release re-checks it, so the gate checks
53
53
  // it first instead of letting a stale file fail the deploy late.
54
- const HISTORY_GATE_PREFIXES = ['src/agents/', 'src/workflows/', 'src/output-styles/', 'src/defaults/'];
54
+ const HISTORY_GATE_PREFIXES = [
55
+ 'src/agents/',
56
+ 'src/workflows/',
57
+ 'src/output-styles/',
58
+ 'src/orchestration/',
59
+ 'src/defaults/',
60
+ ];
55
61
  const HISTORY_GATE_FILES = [
56
62
  'scripts/build-shipped-history.mjs',
57
63
  'src/runtime/shared/shipped-definitions.mjs',
@@ -1,7 +1,6 @@
1
1
  #!/usr/bin/env node
2
2
  // Weekly opt-out sweep: run every test:*/smoke:* npm script in the repository
3
- // so no locally-registered suite can rot silently (docs/testing.md, "A
4
- // contract suite runs in CI or it drifts"). New scripts join automatically;
3
+ // so no locally-registered suite can rot silently (docs/testing.md, "CI coverage"). New scripts join automatically;
5
4
  // exclusions are explicit, reasoned, and fail closed when they go stale.
6
5
  import { readFileSync, writeFileSync } from 'node:fs';
7
6
  import { join } from 'node:path';
@@ -36,13 +35,9 @@ export const WORKSPACES = [
36
35
  'test:daemon:e2e': 'needs the built daemon; the release gate desktop job owns it',
37
36
  'test:spec-advisory': 'advisory by design (MIXDOG_TEST_ADVISORY)',
38
37
  'test:browser-host:integration': 'live desktop integration harness',
39
- 'test:browser-login-persistence:integration':
40
- 'live desktop integration harness; launches real Electron, which needs a display the Linux sweep runner lacks',
41
- 'test:browser-login-popup:integration':
42
- 'live desktop integration harness; launches real Electron, which needs a display the Linux sweep runner lacks',
43
38
  'test:browser-profile-import:integration': 'live desktop integration harness',
44
39
  'test:remote-webrtc-sender:integration':
45
- 'live desktop integration harness; launches real Electron, which needs a display the Linux sweep runner lacks',
40
+ 'live desktop integration harness; launches real Electron and has never run in the sweep, so it stays out until verified under Xvfb',
46
41
  'test:computer-host:integration': 'live desktop integration harness',
47
42
  'test:computer-host:scenarios': 'live desktop scenario harness',
48
43
  'test:computer-host:repeats': 'live desktop scenario harness',
@@ -50,6 +45,32 @@ export const WORKSPACES = [
50
45
  },
51
46
  ];
52
47
 
48
+ // Swept scripts that launch a real Electron window. The headless Linux runner
49
+ // has no X server, so they run inside a virtual one (xvfb-run, as
50
+ // linux-desktop-verify.yml does). The runner also has no usable keyring (a
51
+ // keyring daemon there prompts for an unlock on a display it cannot open and
52
+ // stalls the entry), and these entries check Mixdog's own persistence and
53
+ // sign-out logic, not the OS keychain. So on Linux the sweep sets
54
+ // TEST_PLAINTEXT_SAFE_STORAGE_ENV and the test harness alone (never the app)
55
+ // switches Electron's safeStorage to its in-memory-password fallback.
56
+ export const DISPLAY_SUITES = ['test:browser-login-persistence:integration', 'test:browser-login-popup:integration'];
57
+ export const TEST_PLAINTEXT_SAFE_STORAGE_ENV = 'MIXDOG_TEST_PLAINTEXT_SAFE_STORAGE';
58
+
59
+ const runsUnderDisplay = (ws, name, platform) =>
60
+ platform === 'linux' && ws.dir !== '.' && DISPLAY_SUITES.includes(name);
61
+
62
+ export function sweepCommand(ws, name, platform = process.platform) {
63
+ const args = ['run', name, ...(ws.dir === '.' ? [] : ['--prefix', ws.dir])];
64
+ if (runsUnderDisplay(ws, name, platform)) {
65
+ return ['xvfb-run', ['-a', '--server-args=-screen 0 1440x900x24', 'npm', ...args]];
66
+ }
67
+ return [platform === 'win32' ? 'npm.cmd' : 'npm', args];
68
+ }
69
+
70
+ export function sweepEnv(ws, name, platform = process.platform, base = process.env) {
71
+ return runsUnderDisplay(ws, name, platform) ? { ...base, [TEST_PLAINTEXT_SAFE_STORAGE_ENV]: '1' } : base;
72
+ }
73
+
53
74
  export function selectSuiteScripts(scripts, exclusions) {
54
75
  const names = Object.keys(scripts).filter((name) => /^(test|smoke)(:|$)/.test(name));
55
76
  const stale = Object.keys(exclusions).filter((name) => !names.includes(name));
@@ -59,12 +80,80 @@ export function selectSuiteScripts(scripts, exclusions) {
59
80
  return names.filter((name) => !(name in exclusions));
60
81
  }
61
82
 
62
- const lastLines = (text) =>
63
- String(text || '')
83
+ const TAIL_LINES = 25;
84
+ const lastLines = (text, name) => {
85
+ const lines = String(text || '')
64
86
  .trim()
87
+ .split('\n');
88
+ if (lines.length <= TAIL_LINES) return lines.join('\n');
89
+ return [`[${name} truncated: last ${TAIL_LINES} of ${lines.length} lines]`, ...lines.slice(-TAIL_LINES)].join('\n');
90
+ };
91
+
92
+ // What a failed entry shows in the report: how it ended, every failure-summary
93
+ // and failed-test line from either stream (a long stderr must not hide them),
94
+ // then each stream's tail.
95
+ export function failureParts({ stdout, stderr, status, signal, error }) {
96
+ const failedLines = `${stdout || ''}\n${stderr || ''}`
65
97
  .split('\n')
66
- .slice(-25)
67
- .join('\n');
98
+ .filter((line) => /^\[failure-summary\]|^\s*✖ /.test(line));
99
+ const ended = error
100
+ ? `spawn error: ${error.message}`
101
+ : `exit ${status ?? 'none'}${signal ? `, signal ${signal}` : ''}`;
102
+ const tails = [lastLines(stdout, 'stdout'), lastLines(stderr, 'stderr')].filter(Boolean).join('\n');
103
+ return { ended, failedLines, tails };
104
+ }
105
+
106
+ const failureText = ({ ended, failedLines, tails }) =>
107
+ [ended, failedLines.join('\n'), tails].filter(Boolean).join('\n').trim();
108
+
109
+ export const failureTail = (child) => failureText(failureParts(child));
110
+
111
+ // GitHub rejects an issue body over 65,536 characters (HTTP 422). Past the
112
+ // limit the tails go first, then failure lines from the end; the omission is
113
+ // always stated, and the full diagnostics stay in the workflow log.
114
+ const ISSUE_BODY_LIMIT = 60_000;
115
+
116
+ export function buildReport({ checked, runUrl, reportLines, failures, limit = ISSUE_BODY_LIMIT }) {
117
+ const render = (withTails, keep) => {
118
+ let left = keep;
119
+ let omitted = 0;
120
+ const blocks = failures.map(({ title, parts }) => {
121
+ const shown = parts.failedLines.slice(0, left);
122
+ left -= shown.length;
123
+ omitted += parts.failedLines.length - shown.length;
124
+ const text = failureText({ ...parts, failedLines: shown, tails: withTails ? parts.tails : '' });
125
+ return `${title}\n\n\`\`\`\n${text}\n\`\`\``;
126
+ });
127
+ const notes = [];
128
+ if (!withTails) notes.push('Stdout/stderr tails omitted to fit the issue size limit; see the workflow log.');
129
+ if (omitted) notes.push(`${omitted} more failure lines omitted — see the workflow log: ${runUrl}`);
130
+ return [
131
+ '# Weekly suite health sweep failed',
132
+ '',
133
+ `Checked: ${checked}`,
134
+ `Workflow run: ${runUrl}`,
135
+ '',
136
+ ...reportLines,
137
+ '',
138
+ ...blocks,
139
+ '',
140
+ ...notes,
141
+ ]
142
+ .join('\n')
143
+ .trimEnd()
144
+ .concat('\n');
145
+ };
146
+ const total = failures.reduce((sum, { parts }) => sum + parts.failedLines.length, 0);
147
+ if (render(true, total).length <= limit) return render(true, total);
148
+ let low = 0;
149
+ let high = total;
150
+ while (low < high) {
151
+ const mid = Math.ceil((low + high) / 2);
152
+ if (render(false, mid).length <= limit) low = mid;
153
+ else high = mid - 1;
154
+ }
155
+ return render(false, low);
156
+ }
68
157
 
69
158
  function runSweep() {
70
159
  const failures = [];
@@ -75,8 +164,9 @@ function runSweep() {
75
164
  for (const name of names) {
76
165
  const label = ws.dir === '.' ? name : `${ws.dir} ${name}`;
77
166
  const started = Date.now();
78
- const args = ['run', name, ...(ws.dir === '.' ? [] : ['--prefix', ws.dir])];
79
- const child = spawnSync(process.platform === 'win32' ? 'npm.cmd' : 'npm', args, {
167
+ const [command, args] = sweepCommand(ws, name);
168
+ const child = spawnSync(command, args, {
169
+ env: sweepEnv(ws, name),
80
170
  encoding: 'utf8',
81
171
  shell: process.platform === 'win32',
82
172
  maxBuffer: 64 * 1024 * 1024,
@@ -88,10 +178,10 @@ function runSweep() {
88
178
  } else {
89
179
  // Tail each stream on its own: a long stderr (cargo build chatter) must
90
180
  // not push the test failure summary on stdout out of the report.
91
- const tail = `${lastLines(child.stdout)}\n${lastLines(child.stderr)}`.trim();
92
- failures.push(`- ${label}: FAILED (${seconds}s)\n\n\`\`\`\n${tail}\n\`\`\``);
181
+ const parts = failureParts(child);
182
+ failures.push({ title: `- ${label}: FAILED (${seconds}s)`, parts });
93
183
  reportLines.push(`- ${label}: FAILED (${seconds}s)`);
94
- console.error(`${label}: FAILED (${seconds}s)\n${tail}`);
184
+ console.error(`${label}: FAILED (${seconds}s)\n${failureText(parts)}`);
95
185
  }
96
186
  }
97
187
  }
@@ -100,18 +190,10 @@ function runSweep() {
100
190
  const runUrl = process.env.GITHUB_RUN_ID
101
191
  ? `${process.env.GITHUB_SERVER_URL}/${process.env.GITHUB_REPOSITORY}/actions/runs/${process.env.GITHUB_RUN_ID}`
102
192
  : '(local run)';
103
- const report = [
104
- '# Weekly suite health sweep failed',
105
- '',
106
- `Checked: ${new Date().toISOString()}`,
107
- `Workflow run: ${runUrl}`,
108
- '',
109
- ...reportLines,
110
- '',
111
- ...failures,
112
- '',
113
- ].join('\n');
114
- writeFileSync('suite-health-report.md', report);
193
+ writeFileSync(
194
+ 'suite-health-report.md',
195
+ buildReport({ checked: new Date().toISOString(), runUrl, reportLines, failures })
196
+ );
115
197
  process.exitCode = 1;
116
198
  }
117
199
  }
package/scripts/test.mjs CHANGED
@@ -40,12 +40,11 @@ export const USAGE = `Usage: node scripts/test.mjs [--lane ${LANES.join('|')}] [
40
40
  --exclude-lane drop one lane from the selection, repeatable. Electron and
41
41
  window-capture tests cannot run twice at once, so a second
42
42
  concurrent --lane all run uses --exclude-lane electron.
43
- --rerun-failed <n> re-run the failed files up to n times. Default: 1 for a
44
- local run, 0 (off) when CI is set; MIXDOG_TEST_RERUN_FAILED
45
- overrides the default. A test that passes on a re-run is
46
- reported as flaky and does NOT fail the run; a test that
47
- fails every re-run still exits 1. With 0 every failure fails
48
- the run.
43
+ --rerun-failed <n> re-run the failed files up to n times to classify flaky
44
+ tests. Default 0: every failure fails the run;
45
+ MIXDOG_TEST_RERUN_FAILED overrides the default. A test that
46
+ passes on a re-run is reported as flaky and does NOT fail the
47
+ run; a test that fails every re-run still exits 1.
49
48
  Per-file timeout: --test-timeout (default 120000 ms for the fast lane, 600000
50
49
  ms otherwise); MIXDOG_TEST_TIMEOUT_MS overrides, 0 disables.
51
50
  --import forwarded to node (desktop passes its test-env and tsx loaders).
@@ -88,15 +87,11 @@ function rerunCount(value) {
88
87
  return Number(value);
89
88
  }
90
89
 
91
- // Files run in parallel on every core, which exposes timing-sensitive tests
92
- // that pass alone. A local run therefore re-runs failed files once and reports
93
- // a pass on the re-run as flaky (named in the failure summary). CI keeps the
94
- // strict policy unless it opts in with --rerun-failed or MIXDOG_TEST_RERUN_FAILED;
95
- // MIXDOG_TEST_RERUN_FAILED=0 turns the local default off.
90
+ // Every failure fails the run, locally and in CI: a test that passes only on a
91
+ // re-run is a defect to fix, not a pass. Re-runs happen only on an explicit
92
+ // --rerun-failed or MIXDOG_TEST_RERUN_FAILED, to classify a failure as flaky.
96
93
  export function defaultRerunFailed(env = process.env) {
97
- if (/^\d+$/.test(String(env.MIXDOG_TEST_RERUN_FAILED ?? ''))) return Number(env.MIXDOG_TEST_RERUN_FAILED);
98
- const ci = String(env.CI ?? '').toLowerCase();
99
- return ci && ci !== '0' && ci !== 'false' ? 0 : 1;
94
+ return /^\d+$/.test(String(env.MIXDOG_TEST_RERUN_FAILED ?? '')) ? Number(env.MIXDOG_TEST_RERUN_FAILED) : 0;
100
95
  }
101
96
 
102
97
  export function parseArgs(argv) {
@@ -1,13 +1,13 @@
1
1
  ---
2
2
  name: Advisor
3
- description: "Use when the approach is genuinely unclear, when errors recur or results stop converging, before changing approach, or when the user asks for a second opinion. Never for final verification."
3
+ description: "Use as a second mind on hard work: consulting before a risky or complex change is built, hunting a bug whose cause is unclear, errors that recur or results that stop converging, or when the user asks. Never for final verification."
4
4
  ---
5
5
 
6
6
  Independent technical advisor.
7
7
 
8
- You are consulted at decision points: when the approach is genuinely
9
- unclear, when errors recur or results stop converging, before a
10
- change of approach, and when the user asks for a second opinion or
8
+ You are a second mind on hard work: consulted before a risky or complex
9
+ change is built, to hunt a bug whose cause is unclear, when errors recur or
10
+ results stop converging, and when the user asks for a second opinion or
11
11
  cross-validation. You do not see the Lead's conversation; work from the brief
12
12
  and verify its evidence against the source yourself.
13
13
 
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "id": "advisor",
3
3
  "name": "Advisor",
4
- "description": "Use when the approach is genuinely unclear, when errors recur or results stop converging, before changing approach, or when the user asks for a second opinion. Never for final verification.",
4
+ "description": "Use as a second mind on hard work: consulting before a risky or complex change is built, hunting a bug whose cause is unclear, errors that recur or results that stop converging, or when the user asks. Never for final verification.",
5
5
  "entry": "AGENT.md"
6
6
  }
@@ -0,0 +1,22 @@
1
+ ---
2
+ name: Explore
3
+ description: Use when Mixdog runs the explore tool. The tool stays off until a model is picked.
4
+ permission: read
5
+ ---
6
+
7
+ Read-only explorer for one query of the explore tool. Search and read the
8
+ working directory; never edit, run commands or delegate.
9
+
10
+ Answer the query in the message, then stop:
11
+
12
+ - First a short direct answer.
13
+ - Then the evidence: one `path:line` per finding, copied from tool output,
14
+ with a few words on what is there.
15
+ - Only what you found. If nothing answers the query, say so in one line and
16
+ name what you searched.
17
+ - Nothing else: no locations the query did not ask about, no notes on what
18
+ you did not read.
19
+
20
+ Batch independent patterns and paths in one call. A location a tool returned
21
+ is final: do not re-read or reconfirm it. Stop as soon as the answer is
22
+ supported.
@@ -0,0 +1,6 @@
1
+ {
2
+ "id": "explore",
3
+ "name": "Explore",
4
+ "description": "Use when Mixdog runs the explore tool. The tool stays off until a model is picked.",
5
+ "entry": "AGENT.md"
6
+ }
package/src/cli.mjs CHANGED
@@ -24,6 +24,13 @@ try {
24
24
  // 2026-07-20). Default to production; an explicit NODE_ENV still wins.
25
25
  process.env.NODE_ENV ||= 'production';
26
26
 
27
+ // HTTPS_PROXY/HTTP_PROXY work without NODE_USE_ENV_PROXY: honoured in this
28
+ // process and in every child (the daemon included). On Windows without any
29
+ // proxy variable, the static system proxy routes this process's own fetch and
30
+ // is handed to the daemon this CLI starts, never exported as environment.
31
+ (await import('./runtime/shared/llm/system-proxy.mjs')).adoptSystemProxy();
32
+ (await import('./runtime/shared/llm/http-agent.mjs')).adoptEnvProxy();
33
+
27
34
  let swapped = false;
28
35
  const invocation = classifyCliInvocation(argv);
29
36
  const skipHostPrelude = invocation.kind === 'exec' || invocation.skipHostPrelude === true;
@@ -1,5 +1,12 @@
1
1
  {
2
2
  "agents": [
3
+ {
4
+ "agent": "explore-agent",
5
+ "slot": "explore",
6
+ "description": "One-off read-only explorer, one per query of the explore tool",
7
+ "invokedBy": "explore",
8
+ "maintKey": "explore"
9
+ },
3
10
  {
4
11
  "agent": "cycle1-agent",
5
12
  "slot": "cycle1",
@@ -3,12 +3,14 @@
3
3
  "advisor": [
4
4
  "6bd0318995f70547c162efda92795e79",
5
5
  "895c5f4311dcbebc0c8756c9ec61a02a",
6
- "d3b4a7926c9484833fe8ddba70260f9d"
6
+ "d3b4a7926c9484833fe8ddba70260f9d",
7
+ "fa56b363b9eeb07cb194dcd66dc4159b"
7
8
  ],
8
9
  "debugger": [
9
10
  "88c946270760ecbae86df65b9ce262f1"
10
11
  ],
11
12
  "explore": [
13
+ "baf26f0b3bd3abb0fb5a276febc8c4bc",
12
14
  "d4fa3ff93ace1dfac0b92792f42b9cbf"
13
15
  ],
14
16
  "front-worker": [
@@ -177,6 +179,20 @@
177
179
  "d5f205f3b57c0b9541b8acc237069287"
178
180
  ]
179
181
  },
182
+ "orchestration": {
183
+ "balanced.md": [
184
+ "ad1683ff1626ebabd4e027abe03fe29a"
185
+ ],
186
+ "focused.md": [
187
+ "e73b0d71f544900611b2d06f963472d4"
188
+ ],
189
+ "none.md": [
190
+ "9be4bf61f9ba91c4caf53296adff2e8a"
191
+ ],
192
+ "swarm.md": [
193
+ "7fa3e68e0c53d16203384f5ca645765d"
194
+ ]
195
+ },
180
196
  "skills": {
181
197
  "browser-use": [
182
198
  "00085086a7649ec6631f5cf0a3bbbf60",
@@ -186,6 +202,7 @@
186
202
  "43eeb0b9c5792f08f2223c76846926cb",
187
203
  "4ab5316454013712cedb25d9b75f4e43",
188
204
  "4f042de090d853ed38aaa82b88d301ac",
205
+ "5d909abd96e4aa8636f27cf652301c5e",
189
206
  "646365a3f7041a3da3d7d7d896a0c3b6",
190
207
  "662f730d603b1e583dc777a1984b9134",
191
208
  "814b0820a05119a049cf4262dc35301b",
@@ -216,6 +233,7 @@
216
233
  "8a5a68ec13a7414b35e7f3b0089e2208",
217
234
  "9728f28dc5b23eb1bb1924213d3ffddd",
218
235
  "9a8789b3b4f5f6b3ba02f407cdfb92f7",
236
+ "ab5cce4a2fccad63e006cf22aa6cc6b0",
219
237
  "b50e9c0ba5e8228583eab4f0e0573838",
220
238
  "c03f4d0e008467497c0152639953b166",
221
239
  "cd1a47197762135462037ea6555ea721",
@@ -246,6 +264,7 @@
246
264
  "e10367dd4291a0b3d8ee8e8dd60eae36",
247
265
  "e1f2526aaf123fb77072aa8975f890de",
248
266
  "e67f30ec5bbdd36d7feaabd35b7504b3",
267
+ "edc3519cf07e37702a5793bb23e0643c",
249
268
  "f0798c546c172a742e3384d82322ede4"
250
269
  ],
251
270
  "docx": [
@@ -268,6 +287,7 @@
268
287
  "07604666cb32a7df8b1d4f0d1e137890",
269
288
  "189bca949decd5bccbbdeb49a18426b2",
270
289
  "1db9f3e81c714e7e4aa8db8c8004cca0",
290
+ "290d7620499a4134fdf511aa4902043d",
271
291
  "6d922fc351d6519c3d92cc5807fe0615",
272
292
  "95c83d23f3625c35cc346477a470c769",
273
293
  "a47d07ea3402854dc03e655afd5a3a6d",
@@ -362,6 +382,7 @@
362
382
  ],
363
383
  "setup": [
364
384
  "0357c6d475ced8ba2446e6bda21899b4",
385
+ "0bb692f16b03c66f23af06cea06de51f",
365
386
  "0be31b379e919420e5b8f74926bdf6e5",
366
387
  "0d5c8c6e2349addf71d2ed2b4c1ccb1f",
367
388
  "0d6926aaca2890da9347f15a826546e3",
@@ -372,7 +393,9 @@
372
393
  "242f11864abdef90fa0cc9cb4599a579",
373
394
  "29a347c4d3a2f773fa92c627260301ba",
374
395
  "336ced846a9e4f774cbb109417856c3b",
396
+ "34c5f8fcb6292b8cc5239667d2119e83",
375
397
  "3716b2d2c2d973ae022694ed5cb756ad",
398
+ "398958b6f815bf8ad3f96dd288844333",
376
399
  "3dc990c29cdce1aca4b112d735ad5917",
377
400
  "3f72247651ad9d777b6754bfd46732aa",
378
401
  "50bdf35d06913236855080fdea6b50dc",
@@ -388,7 +411,10 @@
388
411
  "81e979463e0066e7a45cf511a31c5d68",
389
412
  "8476c811b2f02da3a434bcb23a1c3d12",
390
413
  "8af2b614e2a07b58dad6c0f1318d22e2",
414
+ "8b829db6b0675b62a71a1432dbd25490",
391
415
  "99d76213e70c6900d6af48ffa4045886",
416
+ "9a2188ce201e4394bc18182131b7a3e1",
417
+ "9b10b59b27497a126b212df083ace020",
392
418
  "9f90d3872b1ecd312977ce661b770b31",
393
419
  "ade615dd0f6ae6ed1601023e5b9cb692",
394
420
  "b21681ecfeb523c0d7dd89a299ec05a9",
@@ -409,21 +435,29 @@
409
435
  "ff18ac1a9f5961925aec27ffb870bae0"
410
436
  ],
411
437
  "setup-guide": [
438
+ "0968139f1aa26f48f03cfea2e94f45e8",
412
439
  "633e15b84dbe22f2b578b67cc35853d4",
413
440
  "72e474711ecd18cfcae6c8365e08286e",
414
441
  "920d5b29ccfe6c88f623cf0892b29285",
415
- "ec88a82ab5e511c0afb1738162150648"
442
+ "dbe3d22991ad4dff6e3906f9101c9b5f",
443
+ "ec88a82ab5e511c0afb1738162150648",
444
+ "fa355d4ea5f1823e4b75219ab842c34a"
416
445
  ],
417
446
  "skill-creator": [
418
447
  "020817866da73a69544ba35086bdcd5f",
419
448
  "2f3f44805618783fbcca9a56652a5e91",
420
449
  "50e365910692a803732f68f82fc1ed1f",
421
450
  "77a4ca1c08f684780eeeebec50a3f1e6",
451
+ "92b2ed0b18a9c14470e434ec946a843f",
422
452
  "bd9bf738a5b3f443450c86230f3299fd",
423
453
  "bec7e5abbcae88a6781d23bcdd35e259",
424
454
  "d65265972caa7cbefc39baacc9e78157",
425
455
  "f450e6d58a7f1f06c71aa2dd557ce09c"
426
456
  ],
457
+ "test-suite": [
458
+ "df60ba4a182ee289f3550e79f1731cd4",
459
+ "f5c8ee5331a9b8279f997f609b10c380"
460
+ ],
427
461
  "video": [
428
462
  "6aad64b16521d324e355d125692a0cec",
429
463
  "82f61245cc67ce5380ab9ccf4c697c29",
@@ -436,6 +470,8 @@
436
470
  "8320fedd9dd745a332621c325a8bf355",
437
471
  "9c9fba19647b67d75a600137e38c02b8",
438
472
  "aa3531bfc4fd6ec3820493d0c190cc75",
473
+ "d9ba9f5f998bf42990eed838a3d1b774",
474
+ "df699ca05260ce37813a7fe6666927da",
439
475
  "f24ff77670e5aa43ce901dec1e0055ac",
440
476
  "f65924f0691284ad31000469a9855b62"
441
477
  ],
@@ -320,7 +320,10 @@ file-reading tool instead of clicking around the page.
320
320
  **Multi-page task** — keep one snapshot per page; `list_tabs` when targets or
321
321
  ownership are unknown, then act on the intended tab. Use `back` instead of
322
322
  re-navigating when history suffices; forward is a `navigate` to the URL the
323
- earlier snapshot showed.
323
+ earlier snapshot showed. A popup the page opens (`window.open`, an OAuth or
324
+ sign-in window) becomes a background page the reply names ("Opened
325
+ "popup-N" as a new page"), and the visible page does not switch: act on it
326
+ by that name, and check `list_tabs` before concluding no popup opened.
324
327
 
325
328
  **Downloads / uploads** — `downloads` lists and can `wait` for and `attach`
326
329
  the newest file (≤ 8 MiB). A wait pins the newest download, or the next one to