mixdog 1.4.0 → 1.4.2

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 (493) hide show
  1. package/package.json +3 -2
  2. package/scripts/build-shipped-history.mjs +115 -33
  3. package/scripts/check-voice-runtime-inputs.mjs +25 -0
  4. package/scripts/gate-local.mjs +183 -63
  5. package/scripts/latest-guard.mjs +21 -9
  6. package/scripts/lib/gate-scheduler.mjs +138 -32
  7. package/scripts/lib/gate-timing-reporter.mjs +16 -0
  8. package/scripts/lib/isolated-test-env.mjs +10 -5
  9. package/scripts/lib/run-node-tests.mjs +91 -66
  10. package/scripts/lib/scoped-temp.d.mts +16 -0
  11. package/scripts/lib/scoped-temp.mjs +124 -0
  12. package/scripts/lib/stale-temp.mjs +44 -0
  13. package/scripts/lib/test-failure-records.mjs +14 -1
  14. package/scripts/lib/test-failure-summary.mjs +16 -4
  15. package/scripts/lib/test-spawn-ledger.mjs +12 -3
  16. package/scripts/post-release-check.mjs +1 -6
  17. package/scripts/pptx-kit-index.mjs +17 -5
  18. package/scripts/suite-health.mjs +115 -24
  19. package/scripts/test-data-dir.mjs +10 -7
  20. package/scripts/test.mjs +9 -14
  21. package/src/agents/advisor/AGENT.md +4 -4
  22. package/src/agents/advisor/agent.json +1 -1
  23. package/src/agents/explore/AGENT.md +22 -0
  24. package/src/agents/explore/agent.json +6 -0
  25. package/src/app.mjs +4 -0
  26. package/src/cli.mjs +7 -0
  27. package/src/defaults/agents.json +7 -0
  28. package/src/defaults/shipped-history.json +23 -2
  29. package/src/defaults/skills/browser-use/SKILL.md +10 -5
  30. package/src/defaults/skills/code-tidy/SKILL.md +71 -102
  31. package/src/defaults/skills/code-tidy/references/agent-cleanup.md +66 -114
  32. package/src/defaults/skills/code-tidy/references/cleanup-report.md +19 -35
  33. package/src/defaults/skills/code-tidy/references/dead-code.md +3 -9
  34. package/src/defaults/skills/code-tidy/references/test-suite-slop.md +16 -27
  35. package/src/defaults/skills/computer-use/SKILL.md +16 -4
  36. package/src/defaults/skills/goal-management/SKILL.md +1 -1
  37. package/src/defaults/skills/setup/references/actions.md +12 -6
  38. package/src/defaults/skills/setup/references/surfaces.md +2 -2
  39. package/src/defaults/skills/setup-guide/SKILL.md +5 -2
  40. package/src/defaults/skills/setup-guide/model-recommendations.json +13 -0
  41. package/src/defaults/skills/skill-creator/SKILL.md +85 -190
  42. package/src/defaults/skills/skill-creator/references/design.md +70 -162
  43. package/src/defaults/skills/skill-creator/references/evaluation.md +33 -92
  44. package/src/defaults/skills/test-suite/SKILL.md +194 -0
  45. package/src/defaults/skills/test-suite/references/case-management.md +51 -0
  46. package/src/defaults/skills/test-suite/references/flaky-policy.md +39 -0
  47. package/src/defaults/skills/test-suite/references/reliability.md +49 -0
  48. package/src/defaults/skills/test-suite/references/suite-design.md +78 -0
  49. package/src/defaults/skills/test-suite/scripts/inventory.mjs +335 -0
  50. package/src/defaults/skills/visualize/SKILL.md +6 -2
  51. package/src/lib/rules-builder.cjs +35 -42
  52. package/src/output-styles/common.md +2 -2
  53. package/src/output-styles/simple.md +1 -1
  54. package/src/rules/agent/AGENT.md +5 -4
  55. package/src/rules/lead/LEAD.md +12 -7
  56. package/src/rules/shared/10-tool-workflow.md +3 -1
  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/45-destructive.md +0 -2
  60. package/src/rules/shared/50-execution.md +2 -0
  61. package/src/rules/shared/60-verification.md +10 -9
  62. package/src/rules/shared/70-delivery.md +8 -9
  63. package/src/runtime/agent/orchestrator/agent-runtime/agent-dispatch/abort-link.mjs +5 -1
  64. package/src/runtime/agent/orchestrator/agent-runtime/agent-dispatch.mjs +10 -1
  65. package/src/runtime/agent/orchestrator/agent-runtime/agent-progress-watchdog.mjs +156 -24
  66. package/src/runtime/agent/orchestrator/agent-runtime/cache-strategy.mjs +13 -0
  67. package/src/runtime/agent/orchestrator/agent-runtime/maintenance-route.mjs +4 -1
  68. package/src/runtime/agent/orchestrator/cache-break-trace.mjs +2 -0
  69. package/src/runtime/agent/orchestrator/config.mjs +12 -7
  70. package/src/runtime/agent/orchestrator/context/deferred-tools.mjs +8 -8
  71. package/src/runtime/agent/orchestrator/context/role-instructions.mjs +5 -26
  72. package/src/runtime/agent/orchestrator/context/skill-catalog.mjs +3 -1
  73. package/src/runtime/agent/orchestrator/internal-agents.mjs +3 -14
  74. package/src/runtime/agent/orchestrator/mcp/agent-connectors.mjs +122 -12
  75. package/src/runtime/agent/orchestrator/mcp/child-tree.mjs +5 -3
  76. package/src/runtime/agent/orchestrator/mcp/client-config.mjs +13 -2
  77. package/src/runtime/agent/orchestrator/mcp/client-transport.mjs +152 -58
  78. package/src/runtime/agent/orchestrator/mcp/client.mjs +51 -18
  79. package/src/runtime/agent/orchestrator/mcp/oauth-login.mjs +88 -54
  80. package/src/runtime/agent/orchestrator/mcp/oauth.mjs +42 -26
  81. package/src/runtime/agent/orchestrator/providers/account-pool.mjs +54 -8
  82. package/src/runtime/agent/orchestrator/providers/anthropic-api-recovery.mjs +1 -1
  83. package/src/runtime/agent/orchestrator/providers/anthropic-api-request.mjs +37 -31
  84. package/src/runtime/agent/orchestrator/providers/anthropic-api-transport.mjs +8 -2
  85. package/src/runtime/agent/orchestrator/providers/anthropic-max-tokens-recovery.mjs +6 -2
  86. package/src/runtime/agent/orchestrator/providers/anthropic-messages.mjs +2 -2
  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-oauth-request/initial-status.mjs +3 -1
  90. package/src/runtime/agent/orchestrator/providers/anthropic-oauth.mjs +14 -3
  91. package/src/runtime/agent/orchestrator/providers/anthropic-sse.mjs +6 -0
  92. package/src/runtime/agent/orchestrator/providers/anthropic-turn-result.mjs +2 -2
  93. package/src/runtime/agent/orchestrator/providers/antigravity-oauth-login.mjs +3 -1
  94. package/src/runtime/agent/orchestrator/providers/antigravity-oauth-tokens.mjs +2 -2
  95. package/src/runtime/agent/orchestrator/providers/codex-client-meta.mjs +1 -1
  96. package/src/runtime/agent/orchestrator/providers/command-code-oauth-login.mjs +1 -10
  97. package/src/runtime/agent/orchestrator/providers/command-code-oauth.mjs +1 -1
  98. package/src/runtime/agent/orchestrator/providers/cursor.mjs +3 -0
  99. package/src/runtime/agent/orchestrator/providers/custom-provider-config.mjs +40 -0
  100. package/src/runtime/agent/orchestrator/providers/custom-provider-keys.mjs +34 -0
  101. package/src/runtime/agent/orchestrator/providers/custom-provider.mjs +3 -0
  102. package/src/runtime/agent/orchestrator/providers/devin-auth.mjs +14 -7
  103. package/src/runtime/agent/orchestrator/providers/devin-wire-transport.mjs +3 -2
  104. package/src/runtime/agent/orchestrator/providers/devin.mjs +3 -0
  105. package/src/runtime/agent/orchestrator/providers/gemini-response.mjs +2 -2
  106. package/src/runtime/agent/orchestrator/providers/gemini-stream.mjs +4 -1
  107. package/src/runtime/agent/orchestrator/providers/grok-oauth-login.mjs +248 -41
  108. package/src/runtime/agent/orchestrator/providers/lib/anthropic-prefix-trace.mjs +76 -11
  109. package/src/runtime/agent/orchestrator/providers/lib/anthropic-request-utils.mjs +45 -6
  110. package/src/runtime/agent/orchestrator/providers/lib/first-output-window.mjs +58 -0
  111. package/src/runtime/agent/orchestrator/providers/lib/listen-on.mjs +14 -0
  112. package/src/runtime/agent/orchestrator/providers/lib/oauth-page.mjs +0 -18
  113. package/src/runtime/agent/orchestrator/providers/lib/oauth-token-utils.mjs +138 -6
  114. package/src/runtime/agent/orchestrator/providers/mimo-oauth-login.mjs +1 -10
  115. package/src/runtime/agent/orchestrator/providers/mimo-oauth.mjs +1 -1
  116. package/src/runtime/agent/orchestrator/providers/model-cache.mjs +100 -33
  117. package/src/runtime/agent/orchestrator/providers/muse-code-oauth.mjs +1 -1
  118. package/src/runtime/agent/orchestrator/providers/oauth-secret-fields.fixtures.mjs +45 -0
  119. package/src/runtime/agent/orchestrator/providers/openai-compat-chat-send.mjs +1 -0
  120. package/src/runtime/agent/orchestrator/providers/openai-compat-chat-stream/chunk-events.mjs +9 -2
  121. package/src/runtime/agent/orchestrator/providers/openai-compat-chat-stream/stream-state.mjs +7 -0
  122. package/src/runtime/agent/orchestrator/providers/openai-compat-chat-stream.mjs +14 -3
  123. package/src/runtime/agent/orchestrator/providers/openai-compat-responses-events.mjs +4 -2
  124. package/src/runtime/agent/orchestrator/providers/openai-compat-responses.mjs +1 -0
  125. package/src/runtime/agent/orchestrator/providers/openai-compat-stream-common.mjs +5 -3
  126. package/src/runtime/agent/orchestrator/providers/openai-compat-stream.mjs +16 -3
  127. package/src/runtime/agent/orchestrator/providers/openai-compat-xai-send.mjs +1 -0
  128. package/src/runtime/agent/orchestrator/providers/openai-http-sse-response-state/response-events/output-items.mjs +5 -2
  129. package/src/runtime/agent/orchestrator/providers/openai-http-sse-response-state/response-events.mjs +13 -3
  130. package/src/runtime/agent/orchestrator/providers/openai-http-sse-response-state.mjs +13 -2
  131. package/src/runtime/agent/orchestrator/providers/openai-http-sse-watchdogs.mjs +81 -42
  132. package/src/runtime/agent/orchestrator/providers/openai-oauth-http-sse.mjs +8 -0
  133. package/src/runtime/agent/orchestrator/providers/openai-oauth-login.mjs +160 -31
  134. package/src/runtime/agent/orchestrator/providers/openai-ws-stream/event-switch.mjs +22 -12
  135. package/src/runtime/agent/orchestrator/providers/openai-ws-stream.mjs +7 -1
  136. package/src/runtime/agent/orchestrator/providers/openai-ws-watchdogs.mjs +49 -22
  137. package/src/runtime/agent/orchestrator/providers/opencode-go-oauth.mjs +1 -1
  138. package/src/runtime/agent/orchestrator/providers/opencode-go.mjs +3 -1
  139. package/src/runtime/agent/orchestrator/providers/registry.mjs +45 -2
  140. package/src/runtime/agent/orchestrator/providers/vertex-ai-auth.mjs +622 -0
  141. package/src/runtime/agent/orchestrator/providers/vertex-ai-maas.mjs +185 -0
  142. package/src/runtime/agent/orchestrator/providers/vertex-ai-models.mjs +445 -0
  143. package/src/runtime/agent/orchestrator/providers/vertex-ai.mjs +567 -0
  144. package/src/runtime/agent/orchestrator/runtime-core/ask-user-tool-defs.mjs +41 -13
  145. package/src/runtime/agent/orchestrator/runtime-core/builtin-features.mjs +2 -0
  146. package/src/runtime/agent/orchestrator/runtime-core/orchestration.mjs +8 -6
  147. package/src/runtime/agent/orchestrator/runtime-core/session-text.mjs +7 -3
  148. package/src/runtime/agent/orchestrator/runtime-core/tool-catalog-data.mjs +3 -0
  149. package/src/runtime/agent/orchestrator/runtime-core/tool-defs.mjs +6 -1
  150. package/src/runtime/agent/orchestrator/runtime-core/workflow/context.mjs +14 -5
  151. package/src/runtime/agent/orchestrator/runtime-core/workflow-ids.mjs +1 -0
  152. package/src/runtime/agent/orchestrator/runtime-core/workflow.mjs +5 -2
  153. package/src/runtime/agent/orchestrator/session/agent-room.d.mts +30 -5
  154. package/src/runtime/agent/orchestrator/session/agent-room.mjs +171 -37
  155. package/src/runtime/agent/orchestrator/session/cache/scoped-cache.mjs +1 -3
  156. package/src/runtime/agent/orchestrator/session/cache-warm.mjs +102 -12
  157. package/src/runtime/agent/orchestrator/session/catalog-db/schema.mjs +4 -1
  158. package/src/runtime/agent/orchestrator/session/compact/execution-tail.mjs +1 -8
  159. package/src/runtime/agent/orchestrator/session/compact/messages.mjs +23 -0
  160. package/src/runtime/agent/orchestrator/session/compact/observation-supersession.mjs +103 -23
  161. package/src/runtime/agent/orchestrator/session/compact/runner.mjs +160 -36
  162. package/src/runtime/agent/orchestrator/session/context-utils.mjs +13 -1
  163. package/src/runtime/agent/orchestrator/session/conversation-import/claude.mjs +164 -23
  164. package/src/runtime/agent/orchestrator/session/conversation-import/codex.mjs +139 -19
  165. package/src/runtime/agent/orchestrator/session/conversation-import/convert.mjs +38 -7
  166. package/src/runtime/agent/orchestrator/session/conversation-import/imported-session.mjs +3 -0
  167. package/src/runtime/agent/orchestrator/session/conversation-import/turns.mjs +100 -22
  168. package/src/runtime/agent/orchestrator/session/eager-dispatch.mjs +4 -3
  169. package/src/runtime/agent/orchestrator/session/human-gate/requests.mjs +36 -6
  170. package/src/runtime/agent/orchestrator/session/loop/compact-policy.mjs +33 -3
  171. package/src/runtime/agent/orchestrator/session/loop/fresh-context.mjs +9 -2
  172. package/src/runtime/agent/orchestrator/session/loop/pre-dispatch-deny.mjs +1 -1
  173. package/src/runtime/agent/orchestrator/session/loop/provider-tool-exclusions.mjs +13 -5
  174. package/src/runtime/agent/orchestrator/session/loop/route-fallback.mjs +14 -0
  175. package/src/runtime/agent/orchestrator/session/loop/send-phase.mjs +13 -1
  176. package/src/runtime/agent/orchestrator/session/loop/tool-exec/before-hook.mjs +23 -4
  177. package/src/runtime/agent/orchestrator/session/loop/tool-exec/dispatch.mjs +2 -0
  178. package/src/runtime/agent/orchestrator/session/loop/tool-exec.mjs +23 -1
  179. package/src/runtime/agent/orchestrator/session/loop/tool-exposure-migration.mjs +39 -21
  180. package/src/runtime/agent/orchestrator/session/loop/turn-limits.mjs +13 -8
  181. package/src/runtime/agent/orchestrator/session/manager/ask-session.mjs +50 -28
  182. package/src/runtime/agent/orchestrator/session/manager/ask-turn-loop-options.mjs +3 -3
  183. package/src/runtime/agent/orchestrator/session/manager/ask-turn-settle.mjs +3 -1
  184. package/src/runtime/agent/orchestrator/session/manager/owner-route-fallbacks.mjs +2 -2
  185. package/src/runtime/agent/orchestrator/session/manager/prompt-utils.mjs +1 -0
  186. package/src/runtime/agent/orchestrator/session/manager/route-fallback-chain.mjs +2 -1
  187. package/src/runtime/agent/orchestrator/session/manager/rules-cache.mjs +30 -13
  188. package/src/runtime/agent/orchestrator/session/manager/runtime-liveness.mjs +63 -6
  189. package/src/runtime/agent/orchestrator/session/manager/session-close.mjs +7 -0
  190. package/src/runtime/agent/orchestrator/session/manager/session-crud.mjs +15 -0
  191. package/src/runtime/agent/orchestrator/session/manager/session-lifecycle.mjs +35 -13
  192. package/src/runtime/agent/orchestrator/session/manager/session-prompt-composition.mjs +24 -14
  193. package/src/runtime/agent/orchestrator/session/manager/session-scratch-environment.mjs +70 -0
  194. package/src/runtime/agent/orchestrator/session/manager/session-tool-surface.mjs +0 -3
  195. package/src/runtime/agent/orchestrator/session/manager/tool-resolution.mjs +10 -6
  196. package/src/runtime/agent/orchestrator/session/manager/turn-checkpoint-context.mjs +4 -0
  197. package/src/runtime/agent/orchestrator/session/manager/turn-checkpoint.mjs +3 -0
  198. package/src/runtime/agent/orchestrator/session/manager/turn-interruption.mjs +56 -29
  199. package/src/runtime/agent/orchestrator/session/manager/turn-reap.mjs +125 -0
  200. package/src/runtime/agent/orchestrator/session/mixy-name.mjs +11 -5
  201. package/src/runtime/agent/orchestrator/session/pre-send-compact.mjs +5 -1
  202. package/src/runtime/agent/orchestrator/session/prompt-cache-touch-store.mjs +30 -7
  203. package/src/runtime/agent/orchestrator/session/restart-prefix-parity.fixture.mjs +154 -0
  204. package/src/runtime/agent/orchestrator/session/store/session-delete.mjs +7 -0
  205. package/src/runtime/agent/orchestrator/session/store-summary-catalog.mjs +4 -0
  206. package/src/runtime/agent/orchestrator/session/store-summary-fields.mjs +15 -0
  207. package/src/runtime/agent/orchestrator/session/store-summary-index.mjs +37 -8
  208. package/src/runtime/agent/orchestrator/session/store-summary-reader.mjs +252 -39
  209. package/src/runtime/agent/orchestrator/session/store-transcript-cache.mjs +163 -64
  210. package/src/runtime/agent/orchestrator/session/store-transcript-projection.mjs +164 -4
  211. package/src/runtime/agent/orchestrator/session/store-transcript-worker.mjs +142 -18
  212. package/src/runtime/agent/orchestrator/session/transcript-restore/restore.mjs +61 -2
  213. package/src/runtime/agent/orchestrator/stall-policy.mjs +23 -0
  214. package/src/runtime/agent/orchestrator/tools/builtin/bash-tool/completed-result.mjs +6 -2
  215. package/src/runtime/agent/orchestrator/tools/builtin/bash-tool/invocation-plan.mjs +2 -2
  216. package/src/runtime/agent/orchestrator/tools/builtin/bash-tool/spawn-env.mjs +4 -2
  217. package/src/runtime/agent/orchestrator/tools/builtin/bash-tool.mjs +6 -1
  218. package/src/runtime/agent/orchestrator/tools/builtin/builtin-tools.mjs +46 -20
  219. package/src/runtime/agent/orchestrator/tools/builtin/cache-layers.mjs +7 -1
  220. package/src/runtime/agent/orchestrator/tools/builtin/git-command-tool.mjs +67 -31
  221. package/src/runtime/agent/orchestrator/tools/builtin/git-worktree-tool.mjs +25 -13
  222. package/src/runtime/agent/orchestrator/tools/builtin/lib/scoped-search-flight.mjs +9 -5
  223. package/src/runtime/agent/orchestrator/tools/builtin/lib/shell-job-records.mjs +58 -20
  224. package/src/runtime/agent/orchestrator/tools/builtin/read-single-stream.mjs +7 -1
  225. package/src/runtime/agent/orchestrator/tools/builtin/read-streaming.mjs +6 -3
  226. package/src/runtime/agent/orchestrator/tools/builtin/read-tool/batch-dispatch.mjs +1 -1
  227. package/src/runtime/agent/orchestrator/tools/builtin/read-tool/batch-publication.mjs +23 -12
  228. package/src/runtime/agent/orchestrator/tools/builtin/read-tool/batch-snapshot.mjs +6 -1
  229. package/src/runtime/agent/orchestrator/tools/builtin/read-tool.mjs +1 -8
  230. package/src/runtime/agent/orchestrator/tools/builtin/runtime-capabilities.mjs +20 -15
  231. package/src/runtime/agent/orchestrator/tools/builtin/shell-jobs.mjs +96 -20
  232. package/src/runtime/agent/orchestrator/tools/builtin/task-tool.mjs +59 -10
  233. package/src/runtime/agent/orchestrator/tools/code-graph/dispatch/federation.mjs +3 -1
  234. package/src/runtime/agent/orchestrator/tools/code-graph-tool-defs.mjs +1 -1
  235. package/src/runtime/agent/orchestrator/tools/graph-manifest.json +13 -13
  236. package/src/runtime/agent/orchestrator/tools/lib/isolated-test-env.mjs +4 -3
  237. package/src/runtime/agent/orchestrator/tools/lib/native-spawn-client.mjs +99 -2
  238. package/src/runtime/agent/orchestrator/tools/lib/owned-shell-trees.mjs +2 -0
  239. package/src/runtime/agent/orchestrator/tools/lib/shell-descendants.mjs +103 -13
  240. package/src/runtime/agent/orchestrator/tools/lib/shell-run-background/promote-job.mjs +3 -1
  241. package/src/runtime/agent/orchestrator/tools/lib/shell-run-settle.mjs +49 -15
  242. package/src/runtime/agent/orchestrator/tools/lib/shell-run-spawn.mjs +45 -27
  243. package/src/runtime/agent/orchestrator/tools/lib/shell-run-state.mjs +34 -10
  244. package/src/runtime/agent/orchestrator/tools/lib/shell-warm-standby.mjs +28 -4
  245. package/src/runtime/agent/orchestrator/tools/lib/wait-until-fixture.mjs +26 -0
  246. package/src/runtime/agent/orchestrator/tools/shell-command.mjs +7 -2
  247. package/src/runtime/agent/orchestrator/tools/spawn-manifest.json +13 -13
  248. package/src/runtime/channels/lib/webhook/signature.mjs +4 -1
  249. package/src/runtime/channels/lib/whisper-port.mjs +29 -11
  250. package/src/runtime/channels/lib/whisper-server.mjs +10 -1
  251. package/src/runtime/computer-bridge/action-schema.mjs +2 -2
  252. package/src/runtime/computer-bridge/core-actions.mjs +2 -2
  253. package/src/runtime/computer-bridge/error-recovery.mjs +5 -4
  254. package/src/runtime/computer-bridge/linux-action-capabilities.mjs +24 -5
  255. package/src/runtime/computer-bridge/linux-readiness.d.mts +7 -2
  256. package/src/runtime/connectors/connector-accounts-mcp.mjs +236 -103
  257. package/src/runtime/connectors/gmail-app-password.mjs +3 -3
  258. package/src/runtime/explore/explorer.mjs +93 -0
  259. package/src/runtime/explore/tool-defs.mjs +35 -0
  260. package/src/runtime/explore/tool.mjs +123 -0
  261. package/src/runtime/local-provider/server-process.mjs +2 -1
  262. package/src/runtime/media/adapters/gemini-video.mjs +4 -1
  263. package/src/runtime/media/adapters/xai-media.mjs +2 -1
  264. package/src/runtime/memory/index.mjs +4 -0
  265. package/src/runtime/memory/lib/embedding-provider.mjs +4 -1
  266. package/src/runtime/memory/lib/embedding-worker.mjs +10 -3
  267. package/src/runtime/memory/lib/memory-action-handlers/cycle-backfill-action.mjs +1 -7
  268. package/src/runtime/memory/lib/memory-chunk-quality.mjs +1 -6
  269. package/src/runtime/office/authoring/pdf-author-action.mjs +1 -6
  270. package/src/runtime/office/design/design-art-direction.mjs +29 -27
  271. package/src/runtime/office/pdf/pdf-writer.mjs +6 -1
  272. package/src/runtime/office/portable/portable-snapshot-docx.mjs +7 -1
  273. package/src/runtime/office/portable/portable-snapshot-shared.mjs +6 -1
  274. package/src/runtime/office/quality/assurance-rendered.mjs +9 -2
  275. package/src/runtime/office/quality/assurance-structure-docx.mjs +4 -2
  276. package/src/runtime/office/quality/design-review.mjs +1 -5
  277. package/src/runtime/office/quality/document-brief.mjs +1 -5
  278. package/src/runtime/office/quality/forced-break-pages.mjs +9 -6
  279. package/src/runtime/office/quality/quality-pipeline.mjs +1 -1
  280. package/src/runtime/shared/agent-route-config.mjs +17 -2
  281. package/src/runtime/shared/atomic-file.mjs +103 -2
  282. package/src/runtime/shared/background-tasks.mjs +15 -6
  283. package/src/runtime/shared/bot-owned-work.mjs +56 -0
  284. package/src/runtime/shared/connector-accounts.mjs +5 -5
  285. package/src/runtime/shared/connector-catalog.d.mts +11 -4
  286. package/src/runtime/shared/connector-catalog.mjs +60 -52
  287. package/src/runtime/shared/custom-provider-keys.mjs +20 -0
  288. package/src/runtime/shared/defaults-separation.mjs +1 -4
  289. package/src/runtime/shared/fetch-safe-listen.d.mts +16 -0
  290. package/src/runtime/shared/fetch-safe-listen.mjs +50 -0
  291. package/src/runtime/shared/file-has-data.mjs +26 -2
  292. package/src/runtime/shared/file-lock.mjs +13 -15
  293. package/src/runtime/shared/git-launch.d.mts +9 -0
  294. package/src/runtime/shared/git-launch.mjs +213 -0
  295. package/src/runtime/shared/git-runner-worker.mjs +2 -1
  296. package/src/runtime/shared/handoff-artifacts.d.mts +2 -1
  297. package/src/runtime/shared/handoff-artifacts.mjs +18 -8
  298. package/src/runtime/shared/idle-auto-clear-gate.mjs +29 -7
  299. package/src/runtime/shared/llm/cost.mjs +11 -2
  300. package/src/runtime/shared/llm/http-agent.mjs +313 -29
  301. package/src/runtime/shared/llm/model-catalog-projection.mjs +3 -2
  302. package/src/runtime/shared/llm/model-catalog.mjs +46 -6
  303. package/src/runtime/shared/llm/provider-catalog-registry.mjs +3 -0
  304. package/src/runtime/shared/llm/system-proxy.mjs +452 -0
  305. package/src/runtime/shared/loopback-listener.mjs +25 -2
  306. package/src/runtime/shared/model-route-chain.d.mts +7 -2
  307. package/src/runtime/shared/model-route-chain.mjs +22 -4
  308. package/src/runtime/shared/open-url.mjs +10 -0
  309. package/src/runtime/shared/provider-accounts.mjs +52 -2
  310. package/src/runtime/shared/session-activity-signal.mjs +14 -0
  311. package/src/runtime/shared/session-scratch.mjs +37 -0
  312. package/src/runtime/shared/staged-install-worker.mjs +5 -0
  313. package/src/runtime/shared/staged-update.mjs +47 -2
  314. package/src/runtime/shared/tool-card-model/agent-surface.mjs +1 -3
  315. package/src/runtime/shared/tool-card-model/card-status.mjs +15 -2
  316. package/src/runtime/shared/tool-result-summary.mjs +1 -1
  317. package/src/runtime/shared/tool-surface.mjs +113 -36
  318. package/src/runtime/shared/tool-work-units.mjs +6 -0
  319. package/src/runtime/shared/turn-snapshot-store.mjs +13 -6
  320. package/src/runtime/shared/turn-worktree-snapshot.mjs +414 -54
  321. package/src/runtime/shared/worktrees/activity-gate.mjs +215 -318
  322. package/src/runtime/shared/worktrees/activity-ledger-worker.mjs +56 -0
  323. package/src/runtime/shared/worktrees/activity-ledger.mjs +391 -0
  324. package/src/runtime/shared/worktrees/branch-management.mjs +9 -3
  325. package/src/runtime/shared/worktrees/contract.mjs +4 -1
  326. package/src/runtime/shared/worktrees/git.mjs +72 -0
  327. package/src/runtime/shared/worktrees/manager.mjs +285 -168
  328. package/src/runtime/shared/worktrees/test-support.mjs +6 -10
  329. package/src/runtime/tidy/install.mjs +95 -15
  330. package/src/runtime/tidy/languages.mjs +17 -15
  331. package/src/runtime/tidy/process.mjs +7 -4
  332. package/src/runtime/tidy/resolve.mjs +19 -16
  333. package/src/runtime/tidy/runners/biome.mjs +3 -3
  334. package/src/runtime/tidy/tool.mjs +1 -1
  335. package/src/runtime/tidy/worktree.mjs +10 -6
  336. package/src/runtime/visualize-bridge/client.mjs +6 -1
  337. package/src/runtime/visualize-bridge/tool-defs.mjs +7 -2
  338. package/src/runtime/web-search/index.mjs +1 -1
  339. package/src/session-runtime/agent-home-delivery.mjs +41 -0
  340. package/src/session-runtime/agent-task-sessions.mjs +458 -312
  341. package/src/session-runtime/agent-tool-routing.mjs +8 -41
  342. package/src/session-runtime/boot/tools.mjs +7 -1
  343. package/src/session-runtime/bot-status.mjs +107 -101
  344. package/src/session-runtime/bot-target.mjs +38 -0
  345. package/src/session-runtime/channel-config-api.mjs +6 -1
  346. package/src/session-runtime/connector-merge-migration.mjs +18 -15
  347. package/src/session-runtime/conversation-import/codex-titles.mjs +88 -0
  348. package/src/session-runtime/conversation-import/discovery.mjs +401 -36
  349. package/src/session-runtime/conversation-import/service.mjs +35 -8
  350. package/src/session-runtime/handoff-attachments.mjs +82 -31
  351. package/src/session-runtime/held-requests.mjs +3 -1
  352. package/src/session-runtime/internal-tool-executor/ask-user-tool.mjs +12 -13
  353. package/src/session-runtime/internal-tool-executor/bridge-tools.mjs +1 -0
  354. package/src/session-runtime/internal-tool-executor/feature-tools.mjs +2 -0
  355. package/src/session-runtime/internal-tool-executor/knowledge-tools.mjs +8 -0
  356. package/src/session-runtime/internal-tool-executor/reaction-tool.mjs +4 -1
  357. package/src/session-runtime/internal-tool-executor/workspace-tools.mjs +145 -112
  358. package/src/session-runtime/lifecycle/cold-heir.mjs +11 -6
  359. package/src/session-runtime/lifecycle/session-catalog.mjs +9 -1
  360. package/src/session-runtime/lifecycle/teardown/session-close.mjs +6 -1
  361. package/src/session-runtime/lifecycle/teardown.mjs +1 -1
  362. package/src/session-runtime/mcp-glue/server-catalog.mjs +16 -10
  363. package/src/session-runtime/mcp-glue/server-input.mjs +4 -1
  364. package/src/session-runtime/mixy-heartbeat.mjs +1 -1
  365. package/src/session-runtime/model-route/set-route.mjs +11 -2
  366. package/src/session-runtime/provider-auth/login.mjs +2 -2
  367. package/src/session-runtime/provider-catalog-cache.mjs +82 -36
  368. package/src/session-runtime/provider-models/catalog-load.mjs +23 -6
  369. package/src/session-runtime/provider-models.mjs +4 -2
  370. package/src/session-runtime/resource-mcp-api.mjs +98 -35
  371. package/src/session-runtime/resource-mcp-connector-accounts.mjs +44 -31
  372. package/src/session-runtime/resource-mcp-secrets.mjs +28 -11
  373. package/src/session-runtime/resource-mcp-servers.mjs +5 -4
  374. package/src/session-runtime/resource-recall-api.mjs +6 -1
  375. package/src/session-runtime/runtime-feature-gates.mjs +5 -1
  376. package/src/session-runtime/services/agent-tool/execute.mjs +14 -9
  377. package/src/session-runtime/services/agent-tool/job-views/agent-list.mjs +20 -4
  378. package/src/session-runtime/services/agent-tool/model-select.mjs +48 -7
  379. package/src/session-runtime/services/agent-tool/render.mjs +71 -17
  380. package/src/session-runtime/services/agent-tool/send-flow.mjs +10 -2
  381. package/src/session-runtime/services/agent-tool/spawn-flow/spawn-prep.mjs +8 -3
  382. package/src/session-runtime/services/agent-tool/spawn-flow/spawn-run.mjs +4 -1
  383. package/src/session-runtime/services/agent-tool/spawn-preset.mjs +6 -2
  384. package/src/session-runtime/services/agent-tool/tool-def.mjs +9 -9
  385. package/src/session-runtime/services/agent-watchdog-registry.mjs +32 -4
  386. package/src/session-runtime/services/channel-worker/daemon-spawn.mjs +2 -0
  387. package/src/session-runtime/services/daemon-candidate.mjs +4 -1
  388. package/src/session-runtime/services/memory-runtime-proxy/daemon-spawn.mjs +4 -0
  389. package/src/session-runtime/services/plugin-admin.mjs +10 -6
  390. package/src/session-runtime/services/provider-admin.mjs +283 -11
  391. package/src/session-runtime/session-turn-api.mjs +2 -0
  392. package/src/session-runtime/settings-builtin-tools-api.mjs +4 -1
  393. package/src/session-runtime/settings-system-api.mjs +1 -1
  394. package/src/session-runtime/setup-tool/agent-settings-actions.mjs +13 -3
  395. package/src/session-runtime/setup-tool/connector-widen-approval.mjs +96 -0
  396. package/src/session-runtime/setup-tool/executor.mjs +6 -2
  397. package/src/session-runtime/setup-tool/tool-defs.mjs +2 -1
  398. package/src/session-runtime/tool-policy/policy-stage.mjs +1 -0
  399. package/src/session-runtime/turn/agent-ops.mjs +23 -0
  400. package/src/session-runtime/workflow-agents-api/agent-connectors.mjs +49 -11
  401. package/src/session-runtime/workflow-agents-api/agent-editor.mjs +5 -1
  402. package/src/session-runtime/workflow-agents-api/agent-route.mjs +25 -5
  403. package/src/session-runtime/workflow-agents-api/onboarding.mjs +3 -3
  404. package/src/session-runtime/workspace/activity-guards.mjs +176 -0
  405. package/src/session-runtime/workspace/session-view.mjs +149 -0
  406. package/src/session-runtime/workspace/side-checkouts.mjs +203 -0
  407. package/src/session-runtime/workspace/transition-runner.mjs +188 -0
  408. package/src/session-runtime/workspace/transitions.mjs +108 -1041
  409. package/src/session-runtime/workspace/workspace-merge.mjs +132 -0
  410. package/src/session-runtime/workspace/worktree-intents.mjs +242 -0
  411. package/src/session-runtime/workspace/worktree-maintenance.mjs +80 -0
  412. package/src/session-runtime/workspace/worktree-setup.mjs +85 -0
  413. package/src/session-runtime/workspace/worktree-tool.mjs +73 -56
  414. package/src/standalone/daemon-desktop-runtime.mjs +2 -0
  415. package/src/standalone/daemon-session-control.mjs +169 -138
  416. package/src/standalone/daemon.mjs +7 -0
  417. package/src/standalone/desktop-service-registry.mjs +9 -0
  418. package/src/standalone/local-session-runtime.mjs +5 -1
  419. package/src/standalone/session-client/daemon-unavailable.mjs +3 -0
  420. package/src/standalone/session-client.mjs +5 -1
  421. package/src/standalone/session-frame-stream.mjs +83 -11
  422. package/src/standalone/session-protocol.mjs +4 -0
  423. package/src/standalone/session-service/agent-tree/agent-turns.mjs +16 -12
  424. package/src/standalone/session-service/agent-tree.mjs +45 -9
  425. package/src/standalone/session-service/projection/transcript-window.mjs +700 -64
  426. package/src/standalone/session-service/session-calls/session-action.mjs +10 -3
  427. package/src/standalone/session-service/session-calls/session-views.mjs +160 -104
  428. package/src/standalone/session-service/stored-reader.mjs +127 -40
  429. package/src/standalone/session-transport/client-registry/client-grace.mjs +12 -9
  430. package/src/tui/App.jsx +154 -164
  431. package/src/tui/app/app-view/floating-panel.jsx +10 -4
  432. package/src/tui/app/app-view/text-entry-labels.mjs +1 -0
  433. package/src/tui/app/clipboard.mjs +21 -10
  434. package/src/tui/app/model-picker/route-selection/fast-parameters.mjs +1 -3
  435. package/src/tui/app/model-picker/route-selection.mjs +5 -6
  436. package/src/tui/app/prompt-handlers/use-prompt-history-nav.mjs +1 -1
  437. package/src/tui/app/prompt-handlers/use-prompt-interrupt.mjs +3 -0
  438. package/src/tui/app/prompt-submit/provider-prompts.mjs +3 -1
  439. package/src/tui/app/provider-setup/api-key-actions.mjs +31 -1
  440. package/src/tui/app/provider-setup/oauth-actions.mjs +58 -21
  441. package/src/tui/app/provider-setup/provider-items.mjs +8 -2
  442. package/src/tui/app/provider-setup-picker.mjs +29 -18
  443. package/src/tui/app/shell-layout/row-budgets.mjs +12 -10
  444. package/src/tui/app/slash-commands.mjs +1 -0
  445. package/src/tui/app/slash-dispatch/session-commands.mjs +46 -0
  446. package/src/tui/app/slash-dispatch.mjs +1 -1
  447. package/src/tui/app/use-btw-panel.mjs +29 -0
  448. package/src/tui/app/use-context-panel-refresh.mjs +31 -0
  449. package/src/tui/app/use-model-catalog-cache.mjs +13 -10
  450. package/src/tui/app/use-mouse-input.mjs +11 -0
  451. package/src/tui/app/use-onboarding-start.mjs +8 -3
  452. package/src/tui/app/use-panel-transition.mjs +10 -1
  453. package/src/tui/app/use-pasted-buffers.mjs +28 -20
  454. package/src/tui/app/use-prompt-draft-flow.mjs +7 -0
  455. package/src/tui/app/use-prompt-layout-rows.mjs +3 -3
  456. package/src/tui/app/use-prompt-queue-history.mjs +3 -2
  457. package/src/tui/app/use-selection-focus.mjs +11 -2
  458. package/src/tui/app/use-selection-geometry.mjs +18 -9
  459. package/src/tui/app/use-selection-paint.mjs +4 -4
  460. package/src/tui/app/use-selection-stitch.mjs +3 -3
  461. package/src/tui/app/use-slash-palette.mjs +62 -0
  462. package/src/tui/app/use-terminal-chrome.mjs +2 -2
  463. package/src/tui/app/use-transcript-activity.mjs +47 -32
  464. package/src/tui/app/use-transcript-follow.mjs +12 -4
  465. package/src/tui/app/use-transcript-scroll.mjs +46 -17
  466. package/src/tui/app/use-transcript-swap-reset.mjs +27 -0
  467. package/src/tui/app/use-transcript-window/geometry.mjs +19 -5
  468. package/src/tui/app/use-transcript-window/instance-state.mjs +4 -0
  469. package/src/tui/app/use-transcript-window/selection-shift.mjs +5 -1
  470. package/src/tui/app/use-transcript-window.mjs +21 -11
  471. package/src/tui/app/use-tui-ready.mjs +18 -0
  472. package/src/tui/app/use-welcome-prompt-hint.mjs +5 -0
  473. package/src/tui/app/use-workflow-tab-cycle.mjs +5 -3
  474. package/src/tui/components/Picker.jsx +27 -3
  475. package/src/tui/components/QuestionPanel.jsx +13 -4
  476. package/src/tui/components/SignInUrl.jsx +68 -0
  477. package/src/tui/components/TextEntryPanel.jsx +76 -46
  478. package/src/tui/components/sign-in-url-layout.mjs +24 -0
  479. package/src/tui/dist/index.mjs +1963 -1361
  480. package/src/tui/session/goal-turn-state.mjs +6 -2
  481. package/src/tui/session/session-api/controls.mjs +4 -0
  482. package/src/tui/session/session-api/extensions.mjs +8 -0
  483. package/src/tui/session/session-api/intake/abort.mjs +2 -1
  484. package/src/tui/session/session-api/intake.mjs +2 -0
  485. package/src/tui/session/session-api/integrations.mjs +2 -2
  486. package/src/tui/session/session-api/routes-agent-definitions.mjs +1 -0
  487. package/src/tui/session/session-api/settings.mjs +2 -2
  488. package/src/tui/session/session-flow/queue/take-entries.mjs +11 -0
  489. package/src/tui/session/transcript-spill/spill-writer.mjs +15 -0
  490. package/src/tui/session/transcript-spill.mjs +92 -4
  491. package/src/tui/session/transcript-store.mjs +2 -0
  492. package/src/ui/statusline-agents.mjs +1 -3
  493. package/src/defaults/skills/skill-creator/references/source-review.md +0 -94
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": [
@@ -114,6 +116,7 @@
114
116
  "3f5915d27c7659ad82cdbda064acfbfa",
115
117
  "4e6134d60ee5c54c2888e874653bcdad",
116
118
  "4ecd89b0c07ad8a81aa1f84882cf1b00",
119
+ "88ac40e616f4c181583c35e591c32952",
117
120
  "899529696b7d6d3373ae83a76976ab48",
118
121
  "8d343d0a406fd5817b7fd98a3ac47010",
119
122
  "a1b73ce404125d3ce0a5762e4a1e1555",
@@ -163,6 +166,7 @@
163
166
  "simple.md": [
164
167
  "07c197ff8f20e24c65d844cd91711216",
165
168
  "16d8b5e7757001c614dae62f18f63aa1",
169
+ "2d33871a37ab8672ea550c6bfb4ba64d",
166
170
  "56b61d99f3179018f65b530d9b1491d7",
167
171
  "6e1749aa66d4416cadad4bcd26eb807a",
168
172
  "75ca4c5ec12866b2052a6d08b023759d",
@@ -180,9 +184,11 @@
180
184
  "00085086a7649ec6631f5cf0a3bbbf60",
181
185
  "08eee52328524eb032fd14f342742c41",
182
186
  "25a6744e7591ea5597abbda008d123fe",
187
+ "2e536962f4ff0b8f8028141050c7e7ab",
183
188
  "43eeb0b9c5792f08f2223c76846926cb",
184
189
  "4ab5316454013712cedb25d9b75f4e43",
185
190
  "4f042de090d853ed38aaa82b88d301ac",
191
+ "5d909abd96e4aa8636f27cf652301c5e",
186
192
  "646365a3f7041a3da3d7d7d896a0c3b6",
187
193
  "662f730d603b1e583dc777a1984b9134",
188
194
  "814b0820a05119a049cf4262dc35301b",
@@ -213,6 +219,7 @@
213
219
  "8a5a68ec13a7414b35e7f3b0089e2208",
214
220
  "9728f28dc5b23eb1bb1924213d3ffddd",
215
221
  "9a8789b3b4f5f6b3ba02f407cdfb92f7",
222
+ "ab5cce4a2fccad63e006cf22aa6cc6b0",
216
223
  "b50e9c0ba5e8228583eab4f0e0573838",
217
224
  "c03f4d0e008467497c0152639953b166",
218
225
  "cd1a47197762135462037ea6555ea721",
@@ -232,6 +239,7 @@
232
239
  "8236330f56f27dd283bda6da1239285d",
233
240
  "8bc93c9320b83de81baa8cf242af5c0b",
234
241
  "8fe64c8f6d81bee2120134adf0d6a471",
242
+ "9d5afe7dfa82ea3f4c627f71ccdca331",
235
243
  "9e7a48df5065f5073bbab6f9db3e4061",
236
244
  "b46617cc619e09c35b6bad8f6177e722",
237
245
  "c2b0c50791e358064e22be87bdab4707",
@@ -242,6 +250,7 @@
242
250
  "e10367dd4291a0b3d8ee8e8dd60eae36",
243
251
  "e1f2526aaf123fb77072aa8975f890de",
244
252
  "e67f30ec5bbdd36d7feaabd35b7504b3",
253
+ "edc3519cf07e37702a5793bb23e0643c",
245
254
  "f0798c546c172a742e3384d82322ede4"
246
255
  ],
247
256
  "docx": [
@@ -264,6 +273,7 @@
264
273
  "07604666cb32a7df8b1d4f0d1e137890",
265
274
  "189bca949decd5bccbbdeb49a18426b2",
266
275
  "1db9f3e81c714e7e4aa8db8c8004cca0",
276
+ "290d7620499a4134fdf511aa4902043d",
267
277
  "6d922fc351d6519c3d92cc5807fe0615",
268
278
  "95c83d23f3625c35cc346477a470c769",
269
279
  "a47d07ea3402854dc03e655afd5a3a6d",
@@ -329,6 +339,7 @@
329
339
  "48247c1645fd94aad7711082d4512c49",
330
340
  "4f94016363acccd788a724a2d414744e",
331
341
  "56e474f78faafae39aebe921ccff112d",
342
+ "5bd2e944160a64669a3e2f09466590b3",
332
343
  "60a1e22fd0c32aa283c64a2cc05b7889",
333
344
  "6358ad25dd07a2f92ad65c249a4f360b",
334
345
  "7fb12aeb07b79ae113c0deb0a90c6da7",
@@ -383,7 +394,9 @@
383
394
  "81e979463e0066e7a45cf511a31c5d68",
384
395
  "8476c811b2f02da3a434bcb23a1c3d12",
385
396
  "8af2b614e2a07b58dad6c0f1318d22e2",
397
+ "8b829db6b0675b62a71a1432dbd25490",
386
398
  "99d76213e70c6900d6af48ffa4045886",
399
+ "9a2188ce201e4394bc18182131b7a3e1",
387
400
  "9f90d3872b1ecd312977ce661b770b31",
388
401
  "ade615dd0f6ae6ed1601023e5b9cb692",
389
402
  "b21681ecfeb523c0d7dd89a299ec05a9",
@@ -407,18 +420,24 @@
407
420
  "633e15b84dbe22f2b578b67cc35853d4",
408
421
  "72e474711ecd18cfcae6c8365e08286e",
409
422
  "920d5b29ccfe6c88f623cf0892b29285",
410
- "ec88a82ab5e511c0afb1738162150648"
423
+ "ec88a82ab5e511c0afb1738162150648",
424
+ "fa355d4ea5f1823e4b75219ab842c34a"
411
425
  ],
412
426
  "skill-creator": [
413
427
  "020817866da73a69544ba35086bdcd5f",
414
428
  "2f3f44805618783fbcca9a56652a5e91",
415
429
  "50e365910692a803732f68f82fc1ed1f",
416
430
  "77a4ca1c08f684780eeeebec50a3f1e6",
431
+ "92b2ed0b18a9c14470e434ec946a843f",
417
432
  "bd9bf738a5b3f443450c86230f3299fd",
418
433
  "bec7e5abbcae88a6781d23bcdd35e259",
419
434
  "d65265972caa7cbefc39baacc9e78157",
420
435
  "f450e6d58a7f1f06c71aa2dd557ce09c"
421
436
  ],
437
+ "test-suite": [
438
+ "df60ba4a182ee289f3550e79f1731cd4",
439
+ "f5c8ee5331a9b8279f997f609b10c380"
440
+ ],
422
441
  "video": [
423
442
  "6aad64b16521d324e355d125692a0cec",
424
443
  "82f61245cc67ce5380ab9ccf4c697c29",
@@ -431,6 +450,8 @@
431
450
  "8320fedd9dd745a332621c325a8bf355",
432
451
  "9c9fba19647b67d75a600137e38c02b8",
433
452
  "aa3531bfc4fd6ec3820493d0c190cc75",
453
+ "d9ba9f5f998bf42990eed838a3d1b774",
454
+ "df699ca05260ce37813a7fe6666927da",
434
455
  "f24ff77670e5aa43ce901dec1e0055ac",
435
456
  "f65924f0691284ad31000469a9855b62"
436
457
  ],
@@ -8,6 +8,8 @@ dependencies:
8
8
  tools:
9
9
  - type: tool
10
10
  value: browser
11
+ - type: tool
12
+ value: handoff_user
11
13
  ---
12
14
 
13
15
  # Browser Use
@@ -170,7 +172,7 @@ not as two blocks joined.
170
172
  a submitted form's result.
171
173
  - **Handoff** — the user must act on the page: payment, approval, or an
172
174
  unfinished workflow they continue. A sign-in, CAPTCHA or 2FA step you
173
- wait on is an `ask_user` takeover instead (User step mid-flow).
175
+ wait on is a `handoff_user` takeover instead (User step mid-flow).
174
176
  - `open` replies with exactly one placement: "Shown in the browser panel",
175
177
  "Not on screen yet" (this conversation or its panel is not visible; the
176
178
  page appears when the user opens it), or an error. Tell the user that and
@@ -200,12 +202,12 @@ not as two blocks joined.
200
202
  pages.
201
203
  - **User step mid-flow** — a CAPTCHA or human check, 2FA, or identity check is
202
204
  a handoff, not completion (an e-mail check of a flow you started is not one:
203
- E-mail verification). With `ask_user`, call it with `handoff: { kind:
205
+ E-mail verification). With `handoff_user`, call it with `handoff: { kind:
204
206
  'takeover', surface: 'browser', tab, instructions, need }`: it shows the
205
207
  takeover card, notifies the user, opens that page beside the chat, and
206
208
  returns when they press Done; continue from a fresh observation. Never ask
207
209
  for the step in plain chat or tell the user to open the panel. Without
208
- `ask_user` (an agent), retain the page with `open`, report the required
210
+ `handoff_user` (an agent), retain the page with `open`, report the required
209
211
  user action, and stop.
210
212
  - Preserve pre-existing user tabs, unfinished forms, and pages needed for
211
213
  recovery. If ownership or disposability is unclear, preserve the page;
@@ -318,7 +320,10 @@ file-reading tool instead of clicking around the page.
318
320
  **Multi-page task** — keep one snapshot per page; `list_tabs` when targets or
319
321
  ownership are unknown, then act on the intended tab. Use `back` instead of
320
322
  re-navigating when history suffices; forward is a `navigate` to the URL the
321
- 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.
322
327
 
323
328
  **Downloads / uploads** — `downloads` lists and can `wait` for and `attach`
324
329
  the newest file (≤ 8 MiB). A wait pins the newest download, or the next one to
@@ -383,7 +388,7 @@ in the page instead of retrying the same `navigate`.
383
388
  `MIXDOG_BROWSER_CONFIRM_ACTIONS` and
384
389
  `MIXDOG_BROWSER_DENY_ACTIONS` optionally name comma-separated public actions
385
390
  (or `*`) the desktop app confirms once or refuses; denial takes precedence.
386
- - For a password or token, focus the field and call `ask_user` with
391
+ - For a password or token, focus the field and call `handoff_user` with
387
392
  `handoff: { kind: 'secret', surface: 'browser' }`; for sign-in, CAPTCHA or
388
393
  2FA use `kind: 'takeover'` with instructions. Never ask for secrets or
389
394
  these steps in plain chat.
@@ -15,45 +15,37 @@ dependencies:
15
15
  Layers, cheapest and safest first: project formatters and linters through
16
16
  `tidy`, structural rule packs, then agent-level cleanup. Every layer preserves
17
17
  behavior and public API; this is not a bug hunt. The `tidy` schema owns action
18
- fields; this file owns scope, order, and boundaries. Verification follows the
19
- shared rule: finish all planned edits, then check once (section 5).
18
+ fields; this file owns scope, order, and boundaries.
20
19
 
21
20
  ## 1. Job and mode
22
- - Tidy owns format, lint, structure, and cleanup, not feature work. New
23
- behavior and public-API refactors are out of scope. A correctness bug found
24
- while cleaning goes under "Bugs found", never into a cleanup edit.
25
- - Never invent a formatter config. A project with Biome, Prettier,
26
- clang-format, rustfmt, gofmt, or equivalent keeps it; add or rewrite
27
- `biome.json`, `.prettierrc`, `.clang-format` and the like only when asked.
21
+ - New behavior and public-API refactors are out of scope. A correctness defect
22
+ found while cleaning is reported, never fixed in a cleanup edit.
23
+ - Never invent a formatter config; a project's own formatter stays. Add or
24
+ rewrite one only when asked.
28
25
  - Mode is `apply` unless the user asks to check, review, or "just report";
29
26
  report-only stays read-only on every layer and lists what would change.
30
- - An explicit focus restricts every layer ("formatting only" excludes lint
31
- and semantic cleanup; "only dead code" excludes unrelated formatting). If
32
- the tool cannot isolate it, use targeted edits or report the limitation
33
- and ask before widening.
27
+ - An explicit focus restricts every layer. If the tool cannot isolate it, use
28
+ targeted edits or report the limitation and ask before widening.
34
29
 
35
30
  ## 2. Scope
36
31
  1. Scope comes from the user: named files, directories, a feature area
37
32
  resolved to confirmed paths, or an explicitly requested whole project. If
38
33
  absent or ambiguous, ask first. Never infer it from a diff, branch,
39
34
  commit, or recent activity.
40
- 2. Recommend (do not require, do not do it for them) that the user commit
41
- existing work before an apply run. A dirty tree means preserve those edits.
35
+ 2. Recommend (do not require) that the user commit existing work before an
36
+ apply run. A dirty tree means preserve those edits.
42
37
  3. Drop deleted, binary, generated, vendored files and lockfiles unless
43
38
  explicitly included. Consumers and covering tests may be read; editing
44
39
  them outside the scope needs approval. New non-ignored files are included.
45
40
  4. Pass the approved paths on every `scan`/`check`/`fix`; `paths:["."]` only
46
41
  for an explicitly requested whole project.
47
- 5. Too large to review in one pass (whole project, many directories):
48
- partition by directory or responsibility so every source unit gets the
49
- ladder and every survivor the lenses; hundreds of files per partition is
50
- the usual failure. Work through all partitions without pausing for input.
51
- Keep the partition list and candidate list across turns.
52
- 6. Read per-rule and per-directory counts first, then page only relevant
53
- rows with `tidy action:'results'` filters; never treat unreviewed in-scope
54
- results as clean. Real engine truncation, timeouts, or scope leakage mark
55
- that partition **unfinished**, not clean. Blocked checks stop dependent
56
- edits only.
42
+ 5. For large scopes, review bounded partitions once. Preserve their
43
+ completion state; report blocked partitions without restarting completed
44
+ work.
45
+ 6. Read per-rule and per-directory counts first, then page only relevant rows
46
+ with `tidy action:'results'` filters. Truncation, timeouts, or scope
47
+ leakage mark that partition **unfinished**, not clean. Blocked checks stop
48
+ dependent edits only.
57
49
 
58
50
  ## 3. Deterministic layers
59
51
  1. `tidy action:'scan'` first (languages, engines used/missing,
@@ -61,109 +53,86 @@ shared rule: finish all planned edits, then check once (section 5).
61
53
  2. Downloads are automatic under the default `auto` policy. Only when
62
54
  `tidy.downloads` is `ask` does a result carry `needsApproval`: ask once,
63
55
  listing engines and bytes, then re-call with `approveDownloads:true`.
64
- 3. Engines run only through `tidy` and are never installed by hand
65
- (rustfmt, gofmt, dart, swift, zig, mix, dotnet: report `installHint`). An
66
- ad-hoc `npx <engine>`, global binary, or package script is not
67
- verification and may report a false clean. An engine `tidy` cannot resolve
68
- leaves its check blocked, never clean.
69
- 4. Plan with `fix` without `apply:true`; no separate `check` first. The dry
70
- run is diagnostics and candidate files, not a frozen patch; apply
71
- recalculates. `structural:true` (default) also runs ordinary engines;
72
- `structural:false` disables structural rules only, not engine lint fixes.
73
- For a restricted focus, do not use a combined apply that touches unrelated
74
- code.
75
- 5. Apply with `apply:true` once the plan for the scope is settled, then review
76
- the actual changes. Skip apply when the dry run proposes nothing.
77
- Rules without a fix (`no-empty-catch`, `no-nested-ternary`, `no-any-cast`,
78
- `no-boolean-literal-compare`, `no-debug-statement`, `todo-marker`) are
79
- diagnostics for the agent layer. Keep the engine pass a distinct change
56
+ 3. Engines run only through `tidy` and are never installed by hand; report
57
+ `installHint`. An ad-hoc `npx <engine>`, global binary, or package script
58
+ is not verification. An engine `tidy` cannot resolve leaves its check
59
+ blocked, never clean.
60
+ 4. Plan with `fix` without `apply:true`. The dry run is diagnostics and
61
+ candidate files, not a frozen patch. `structural:false` disables
62
+ structural rules only. For a restricted focus, avoid a combined apply that
63
+ touches unrelated code.
64
+ 5. Apply with `apply:true` once the plan is settled, then review the actual
65
+ changes; skip it when the dry run proposes nothing. Rules without a fix
66
+ are diagnostics for the agent layer. Keep the engine pass a distinct change
80
67
  set from semantic edits. On engine or structural failure, truncation, or a
81
68
  rejected edit, stop affected writes; a partial result is not success.
82
69
 
83
70
  ## 4. Agent-level cleanup
84
71
  Read `references/agent-cleanup.md` (ladder, lenses, slop, risk tiers); also
85
72
  `references/test-suite-slop.md` when tests are in scope, and
86
- `references/cleanup-report.md` for recording and the closing report.
73
+ `references/cleanup-report.md` for the report.
87
74
 
88
- 1. **Pin behavior (read-only).** Search the tests for source-text guards
89
- (shapes in `agent-cleanup.md`) before extracting or moving anything. A file
90
- whose touched behavior no test covers gets the narrowest regression test
91
- that pins it, or only SAFE changes. Prose files have no behavior to pin.
92
- 2. **Ladder, then lenses.** Run the deletion ladder on every selected source
93
- unit, then the four lenses on the survivors. Engine diagnostics point at
94
- units; they do not define coverage. A partition reviewed only where an
95
- engine flagged is unfinished. Each finding has a path+symbol location,
96
- cost, action, confidence, and risk tier; drop findings without evidence.
97
- Use history only when code, contracts, and tests leave intent unclear;
98
- unresolved intent blocks deletion.
75
+ 1. **Pin behavior (read-only).** Find the source-text guards a planned move
76
+ can affect (procedure in `agent-cleanup.md`). A unit whose touched behavior
77
+ no test covers gets only SAFE changes; report it instead of adding tests.
78
+ 2. **Ladder, then lenses.** Run the deletion ladder on each selected source
79
+ unit, then the lenses on the survivors. Engine diagnostics point at units;
80
+ they do not define coverage. Findings need path+symbol evidence; drop the
81
+ rest. Use history only when code, contracts, and tests leave intent
82
+ unclear; unresolved intent blocks deletion.
99
83
  3. **Apply by tier.** SAFE as one batch; CAREFUL one source unit at a time,
100
- each finished and wired into its callers (never leave a new module nothing
101
- imports); RISKY is reported, never auto-applied. Order within a tier:
102
- comments, dead code, defensive code, duplication, complexity, abstraction,
103
- performance. Dead code follows `references/dead-code.md`.
104
- 4. **Stop rules.** Three failed attempts on one file: stop and escalate with
105
- what was tried. A deeper fix larger than the cleanup: report it as its own
106
- task. Principles cannot pick between two rewrites: apply neither, record
107
- both.
84
+ each wired into its callers (never leave a new module nothing imports);
85
+ RISKY is reported with its evidence and applied only after the user
86
+ approves that item. Dead code follows
87
+ `references/dead-code.md`.
88
+ 4. **Stop rules.** Follow the shared verification budget. Report correctness
89
+ defects and changes beyond cleanup scope; do not fix them here. When
90
+ principles cannot pick between two rewrites, apply neither and record both.
108
91
 
109
- Structural signals are leads, not candidates: file > 1,000 lines, function
110
- > 50 lines or nesting > 3 (under ~100 lines, act only on a named symptom:
111
- duplication, a defect, demonstrated difficulty of change), duplicated small
112
- helpers (consolidate only when intent matches), history comments (remove only
113
- if no protected content is lost), underscore-prefixed names exported across
114
- modules (rename is RISKY). Do not improve names, control flow, or types
115
- beyond the ladder, lenses, and these signals. A confirmed
92
+ Structural signals (file > 1,000 lines, function > 50 lines or nesting > 3,
93
+ duplicated small helpers, history comments, exported underscore names) are
94
+ leads, not candidates: act only on a named symptom. Do not improve names,
95
+ control flow, or types beyond the ladder and lenses. A confirmed
116
96
  responsibility-based split that preserves behavior and entry points is
117
- CAREFUL; an extracted unit takes only the values it reads. Moving a whole
118
- body elsewhere or cutting it into numbered chunks resolves nothing.
97
+ CAREFUL; moving a whole body elsewhere or cutting it into numbered chunks
98
+ resolves nothing.
119
99
 
120
- ## 5. Check once, then fix
121
- After every planned edit in the assigned scope is done, run the project's
122
- documented tests/typecheck covering the touched behavior and `tidy check` on
123
- the scope, once, in parallel. No check, build, lint, test, or formatter run
124
- before that. If it fails, read the full logs, finish the fixes, and rerun only
125
- the failed or invalidated checks. A failure on code you did not touch is
126
- pre-existing: report it separately. A broken runner leaves its scope
127
- unverified: say so. Skipped or failed checks never count as passed.
100
+ ## 5. Verify
101
+ Use the shared evidence budget. Run scoped `tidy check`; select behavioral
102
+ checks and typechecking only where the edits can invalidate their contracts.
103
+ Reuse valid passes. Attribute failures from evidence, not from whether the
104
+ failing file was edited. A broken runner leaves its scope unverified; say so.
105
+ Skipped or failed checks never count as passed.
128
106
 
129
107
  If checks fail and cannot be fixed, undo only this run's edits with targeted
130
108
  patches, preserving prior or concurrent work. Never use `git checkout`,
131
109
  `reset`, `restore`, or `stash` as rollback; if the edits cannot be separated
132
110
  safely, leave them and report the blocker.
133
111
 
134
- New findings from the final `tidy check` (e.g. imports orphaned by removals)
135
- are fixed once if SAFE; others are reported.
136
-
137
112
  ## 6. Keep: never remove or rename
138
- - Validation and error handling at a trust boundary (user input, external
139
- API, file, network) unless an adversarial test proves the guard redundant.
140
- - Export names, API routes, CLI flags, DB columns, config keys, event names,
141
- wire strings: contracts. A rename is RISKY even when the name is bad.
113
+ - Validation and error handling at a trust boundary unless an adversarial test
114
+ proves the guard redundant.
115
+ - Contracts: export names, routes, CLI flags, DB columns, config keys, event
116
+ names, wire strings. A rename is RISKY even when the name is bad.
142
117
  - Anything on the never-dead list in `references/dead-code.md`.
143
118
  - An empty catch or ignored error that may be intentional: flag it.
144
119
  - Complexity serving a current compatibility obligation, staged migration, or
145
- vendored-code isolation (see legacy retirement in `dead-code.md`).
146
- - License, copyright, SPDX notices; compiler, linter, bundler directives;
147
- public API docs; security and compatibility explanations. Block comments
148
- that may separate tokens or carry significant line breaks are left for
149
- manual review.
120
+ vendored-code isolation.
121
+ - Tool directives, public API docs, and security or compatibility
122
+ explanations. Comments that may separate tokens or carry significant line
123
+ breaks are left for manual review.
150
124
  - The project's own idioms (`AGENTS.md`/`CLAUDE.md`/lint config) over generic
151
- ones; clarity over fewer lines; nested ternaries are flattened, never added.
125
+ ones; clarity over fewer lines.
152
126
 
153
127
  ## 7. Pitfalls
154
128
  - Missing engine: `installHint` only; continue others; that check is blocked.
155
129
  - User declines downloads: skip those engines and say so.
156
- - Structural engine unavailable (missing or outdated mixdog-graph): `check`/
157
- `fix` fail with a rebuild remedy; `scan` still works. Retry with
158
- `structural:false` for formatters/linters only; missing structural matches
159
- are never clean. A per-language rule-pack error leaves only that language
160
- unfinished.
161
- - A dead-code scanner report is a candidate list, not proof; verify per
162
- `references/dead-code.md`.
130
+ - Structural engine unavailable: `check`/`fix` fail with a rebuild remedy;
131
+ `scan` still works. Retry with `structural:false`; missing structural
132
+ matches are never clean.
133
+ - A dead-code scanner report is a candidate list, not proof.
163
134
 
164
135
  ## 8. Reporting
165
- Report once, after the last partition, using `references/cleanup-report.md`.
166
- Put everything needing the user's decision in one list at the end: RISKY
167
- findings, bugs found, unresolved intent, unfinished candidates. Do not pause
168
- between partitions except for a blocker or a required approval. No separate
169
- report file unless requested.
136
+ Report once, after the last partition, using `references/cleanup-report.md`,
137
+ with everything needing the user's decision in one list. Pause only for a
138
+ blocker or a required approval. No report file unless requested.