mixdog 1.0.12 → 1.1.1

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 (356) hide show
  1. package/README.md +83 -182
  2. package/package.json +4 -2
  3. package/scripts/build-shipped-history.mjs +131 -0
  4. package/scripts/latest-guard.mjs +63 -0
  5. package/scripts/lib/run-node-tests.mjs +330 -32
  6. package/scripts/lib/test-failure-records.mjs +5 -0
  7. package/scripts/lib/test-failure-summary.mjs +14 -3
  8. package/scripts/lib/test-spawn-ledger.mjs +19 -0
  9. package/scripts/merge-mac-update-feed.mjs +107 -0
  10. package/scripts/mobile-release.mjs +210 -0
  11. package/scripts/post-release-check.mjs +353 -0
  12. package/scripts/prune-embedding-runtime.mjs +9 -5
  13. package/scripts/publish-asset-release.mjs +43 -0
  14. package/scripts/release-guard.mjs +63 -0
  15. package/scripts/test-direct.mjs +16 -1
  16. package/scripts/test.mjs +29 -7
  17. package/src/agents/advisor/AGENT.md +38 -0
  18. package/src/agents/advisor/agent.json +6 -0
  19. package/src/agents/reviewer/AGENT.md +5 -2
  20. package/src/agents/reviewer/agent.json +1 -1
  21. package/src/defaults/shipped-history.json +383 -0
  22. package/src/defaults/skills/computer-use/SKILL.md +1 -1
  23. package/src/defaults/skills/goal-management/SKILL.md +11 -5
  24. package/src/defaults/skills/setup/SKILL.md +5 -8
  25. package/src/defaults/skills/setup/references/actions.md +62 -31
  26. package/src/defaults/skills/setup/references/surfaces.md +12 -10
  27. package/src/lib/keychain-cjs.cjs +582 -17
  28. package/src/lib/rules-builder.cjs +1 -1
  29. package/src/runtime/agent/orchestrator/agent-runtime/cache-strategy.mjs +3 -1
  30. package/src/runtime/agent/orchestrator/agent-runtime/session-builder.mjs +4 -0
  31. package/src/runtime/agent/orchestrator/config-presets.d.mts +1 -0
  32. package/src/runtime/agent/orchestrator/config-presets.mjs +44 -0
  33. package/src/runtime/agent/orchestrator/config-providers-merge.mjs +9 -1
  34. package/src/runtime/agent/orchestrator/config-storage.mjs +32 -4
  35. package/src/runtime/agent/orchestrator/config.mjs +120 -21
  36. package/src/runtime/agent/orchestrator/context/instruction-files.mjs +130 -0
  37. package/src/runtime/agent/orchestrator/context/role-instructions.mjs +4 -0
  38. package/src/runtime/agent/orchestrator/providers/account-pool.mjs +77 -26
  39. package/src/runtime/agent/orchestrator/providers/anthropic-api-request.mjs +44 -14
  40. package/src/runtime/agent/orchestrator/providers/anthropic-oauth-credentials.mjs +2 -1
  41. package/src/runtime/agent/orchestrator/providers/anthropic.mjs +11 -2
  42. package/src/runtime/agent/orchestrator/providers/antigravity-oauth-login.mjs +2 -0
  43. package/src/runtime/agent/orchestrator/providers/cursor-auth.mjs +3 -3
  44. package/src/runtime/agent/orchestrator/providers/custom-provider-config.mjs +388 -0
  45. package/src/runtime/agent/orchestrator/providers/custom-provider.mjs +92 -109
  46. package/src/runtime/agent/orchestrator/providers/custom-reasoning.mjs +107 -0
  47. package/src/runtime/agent/orchestrator/providers/effort-configuration.mjs +51 -9
  48. package/src/runtime/agent/orchestrator/providers/grok-oauth-login.mjs +2 -1
  49. package/src/runtime/agent/orchestrator/providers/lib/oauth-token-utils.mjs +11 -0
  50. package/src/runtime/agent/orchestrator/providers/lib/open-login-url.mjs +9 -0
  51. package/src/runtime/agent/orchestrator/providers/mimo-oauth-login.mjs +254 -0
  52. package/src/runtime/agent/orchestrator/providers/mimo-oauth-profile.mjs +218 -0
  53. package/src/runtime/agent/orchestrator/providers/mimo-oauth-tokens.mjs +239 -0
  54. package/src/runtime/agent/orchestrator/providers/mimo-oauth.mjs +233 -0
  55. package/src/runtime/agent/orchestrator/providers/muse-code-oauth-login.mjs +247 -0
  56. package/src/runtime/agent/orchestrator/providers/muse-code-oauth-tokens.mjs +225 -0
  57. package/src/runtime/agent/orchestrator/providers/muse-code-oauth.mjs +542 -0
  58. package/src/runtime/agent/orchestrator/providers/oauth-credential-probes.mjs +25 -0
  59. package/src/runtime/agent/orchestrator/providers/oauth-usage.mjs +18 -10
  60. package/src/runtime/agent/orchestrator/providers/openai-codex-model.mjs +13 -0
  61. package/src/runtime/agent/orchestrator/providers/openai-compat-chat-send.mjs +51 -11
  62. package/src/runtime/agent/orchestrator/providers/openai-compat-chat-stream.mjs +6 -1
  63. package/src/runtime/agent/orchestrator/providers/openai-compat-models.mjs +7 -5
  64. package/src/runtime/agent/orchestrator/providers/openai-compat-options.mjs +12 -0
  65. package/src/runtime/agent/orchestrator/providers/openai-compat-responses.mjs +37 -9
  66. package/src/runtime/agent/orchestrator/providers/openai-compat-wire.mjs +12 -2
  67. package/src/runtime/agent/orchestrator/providers/openai-compat.mjs +6 -1
  68. package/src/runtime/agent/orchestrator/providers/openai-oauth-catalog-store.mjs +99 -0
  69. package/src/runtime/agent/orchestrator/providers/openai-oauth-catalog.mjs +4 -8
  70. package/src/runtime/agent/orchestrator/providers/openai-oauth-login.mjs +3 -7
  71. package/src/runtime/agent/orchestrator/providers/openai-responses-payload.mjs +8 -0
  72. package/src/runtime/agent/orchestrator/providers/quota-reading.mjs +70 -0
  73. package/src/runtime/agent/orchestrator/providers/registry.mjs +42 -3
  74. package/src/runtime/agent/orchestrator/runtime-core/builtin-features.mjs +19 -35
  75. package/src/runtime/agent/orchestrator/runtime-core/effort.mjs +7 -0
  76. package/src/runtime/agent/orchestrator/runtime-core/goal-mutations.mjs +0 -17
  77. package/src/runtime/agent/orchestrator/runtime-core/goal-state.mjs +0 -3
  78. package/src/runtime/agent/orchestrator/runtime-core/goal-store.mjs +0 -1
  79. package/src/runtime/agent/orchestrator/runtime-core/goal-text.mjs +1 -1
  80. package/src/runtime/agent/orchestrator/runtime-core/goal-tool-defs.mjs +16 -2
  81. package/src/runtime/agent/orchestrator/runtime-core/goal-tool-exec.mjs +1 -2
  82. package/src/runtime/agent/orchestrator/runtime-core/goal-turns.mjs +18 -4
  83. package/src/runtime/agent/orchestrator/runtime-core/orchestration.mjs +7 -1
  84. package/src/runtime/agent/orchestrator/runtime-core/session-route-policy.mjs +16 -0
  85. package/src/runtime/agent/orchestrator/runtime-core/tool-catalog.mjs +2 -0
  86. package/src/runtime/agent/orchestrator/runtime-core/tool-defs.mjs +2 -2
  87. package/src/runtime/agent/orchestrator/runtime-core/workflow/context.mjs +7 -7
  88. package/src/runtime/agent/orchestrator/runtime-core/workflow.mjs +6 -0
  89. package/src/runtime/agent/orchestrator/session/loop/send-phase.mjs +11 -1
  90. package/src/runtime/agent/orchestrator/session/loop/step-auto-effort.mjs +28 -3
  91. package/src/runtime/agent/orchestrator/session/loop/tool-call-ids.mjs +90 -0
  92. package/src/runtime/agent/orchestrator/session/loop/tool-exec/before-hook.mjs +19 -11
  93. package/src/runtime/agent/orchestrator/session/loop/tool-phase.mjs +1 -0
  94. package/src/runtime/agent/orchestrator/session/manager/ask-turn-auto-effort.mjs +24 -11
  95. package/src/runtime/agent/orchestrator/session/manager/ask-turn-execute.mjs +2 -6
  96. package/src/runtime/agent/orchestrator/session/manager/runtime-liveness.mjs +28 -0
  97. package/src/runtime/agent/orchestrator/session/manager/session-lifecycle.mjs +63 -3
  98. package/src/runtime/agent/orchestrator/session/manager/session-prompt-composition.mjs +8 -0
  99. package/src/runtime/agent/orchestrator/session/manager/session-record.mjs +3 -0
  100. package/src/runtime/agent/orchestrator/session/manager/session-tool-surface.mjs +4 -4
  101. package/src/runtime/agent/orchestrator/session/store-agent-worker-rows.mjs +3 -0
  102. package/src/runtime/agent/orchestrator/session/tool-batch/finalize.mjs +2 -0
  103. package/src/runtime/agent/orchestrator/session/transcript-restore/restore.mjs +3 -0
  104. package/src/runtime/agent/orchestrator/session/transcript-restore/tool-result-status.mjs +23 -0
  105. package/src/runtime/agent/orchestrator/session/turn-effort.mjs +18 -0
  106. package/src/runtime/agent/orchestrator/stall-policy.mjs +0 -1
  107. package/src/runtime/agent/orchestrator/tools/builtin/arg-guard.mjs +11 -8
  108. package/src/runtime/agent/orchestrator/tools/builtin/atomic-write.mjs +27 -12
  109. package/src/runtime/agent/orchestrator/tools/builtin/bash-tool/bashism-rewrite.mjs +245 -0
  110. package/src/runtime/agent/orchestrator/tools/builtin/bash-tool/command-preflight.mjs +13 -1
  111. package/src/runtime/agent/orchestrator/tools/builtin/bash-tool/completed-result.mjs +3 -1
  112. package/src/runtime/agent/orchestrator/tools/builtin/bash-tool/invocation-plan.mjs +2 -2
  113. package/src/runtime/agent/orchestrator/tools/builtin/bash-tool/result-format.mjs +49 -0
  114. package/src/runtime/agent/orchestrator/tools/builtin/bash-tool.mjs +3 -3
  115. package/src/runtime/agent/orchestrator/tools/builtin/builtin-tools.mjs +9 -7
  116. package/src/runtime/agent/orchestrator/tools/builtin/cache-layers.mjs +19 -20
  117. package/src/runtime/agent/orchestrator/tools/builtin/external-tool-adapters.mjs +67 -19
  118. package/src/runtime/agent/orchestrator/tools/builtin/file-version-test-helpers.mjs +11 -0
  119. package/src/runtime/agent/orchestrator/tools/builtin/file-version.mjs +13 -0
  120. package/src/runtime/agent/orchestrator/tools/builtin/git-command-tool.mjs +28 -3
  121. package/src/runtime/agent/orchestrator/tools/builtin/lib/grep-single-file-rescue.mjs +8 -5
  122. package/src/runtime/agent/orchestrator/tools/builtin/lib/shell-task-output.mjs +25 -12
  123. package/src/runtime/agent/orchestrator/tools/builtin/path-utils.mjs +73 -1
  124. package/src/runtime/agent/orchestrator/tools/builtin/raw-content-publication.mjs +17 -0
  125. package/src/runtime/agent/orchestrator/tools/builtin/read-range-index.mjs +136 -76
  126. package/src/runtime/agent/orchestrator/tools/builtin/read-single-guards.mjs +2 -2
  127. package/src/runtime/agent/orchestrator/tools/builtin/read-single-render.mjs +15 -17
  128. package/src/runtime/agent/orchestrator/tools/builtin/read-single-tool.mjs +4 -2
  129. package/src/runtime/agent/orchestrator/tools/builtin/read-snapshot-runtime.mjs +11 -10
  130. package/src/runtime/agent/orchestrator/tools/builtin/read-source-windows.mjs +5 -3
  131. package/src/runtime/agent/orchestrator/tools/builtin/read-streaming.mjs +30 -16
  132. package/src/runtime/agent/orchestrator/tools/builtin/read-tool.mjs +3 -1
  133. package/src/runtime/agent/orchestrator/tools/builtin/search-grep-tool.mjs +17 -6
  134. package/src/runtime/agent/orchestrator/tools/builtin/search-path-diagnostics.mjs +23 -5
  135. package/src/runtime/agent/orchestrator/tools/builtin/shell-jobs.mjs +93 -43
  136. package/src/runtime/agent/orchestrator/tools/builtin/snapshot-helpers.mjs +4 -11
  137. package/src/runtime/agent/orchestrator/tools/builtin/snapshot-store.mjs +7 -3
  138. package/src/runtime/agent/orchestrator/tools/builtin/snapshot-validation.mjs +16 -19
  139. package/src/runtime/agent/orchestrator/tools/builtin/task-tool.mjs +32 -6
  140. package/src/runtime/agent/orchestrator/tools/builtin.mjs +9 -2
  141. package/src/runtime/agent/orchestrator/tools/code-graph/dispatch.mjs +3 -1
  142. package/src/runtime/agent/orchestrator/tools/graph-manifest.json +13 -13
  143. package/src/runtime/agent/orchestrator/tools/lib/shell-run-background/promote-job.mjs +12 -15
  144. package/src/runtime/agent/orchestrator/tools/lib/shell-run-background.mjs +6 -3
  145. package/src/runtime/agent/orchestrator/tools/lib/shell-run-settle.mjs +14 -4
  146. package/src/runtime/agent/orchestrator/tools/lib/shell-run-state.mjs +4 -2
  147. package/src/runtime/agent/orchestrator/tools/patch/apply-patch/codex-batch.mjs +58 -8
  148. package/src/runtime/agent/orchestrator/tools/patch/content-guard.mjs +47 -0
  149. package/src/runtime/agent/orchestrator/tools/patch/delete-quarantine.mjs +155 -0
  150. package/src/runtime/agent/orchestrator/tools/patch/dispatch/native-proofs.mjs +6 -2
  151. package/src/runtime/agent/orchestrator/tools/patch/dispatch/native-snapshots.mjs +6 -2
  152. package/src/runtime/agent/orchestrator/tools/patch/dispatch.mjs +19 -16
  153. package/src/runtime/agent/orchestrator/tools/patch/matcher.mjs +13 -44
  154. package/src/runtime/agent/orchestrator/tools/patch/orchestrator.mjs +2 -2
  155. package/src/runtime/agent/orchestrator/tools/patch/post-patch-excerpts.mjs +5 -2
  156. package/src/runtime/agent/orchestrator/tools/patch/replay-capture.mjs +47 -7
  157. package/src/runtime/agent/orchestrator/tools/patch/rollback-state.mjs +72 -8
  158. package/src/runtime/agent/orchestrator/tools/patch/section-coalesce.mjs +3 -2
  159. package/src/runtime/agent/orchestrator/tools/patch/sequence/run.mjs +9 -1
  160. package/src/runtime/agent/orchestrator/tools/patch/sequence/units.mjs +9 -1
  161. package/src/runtime/agent/orchestrator/tools/patch/sequence.mjs +6 -6
  162. package/src/runtime/agent/orchestrator/tools/patch/ui-diff.mjs +16 -4
  163. package/src/runtime/agent/orchestrator/tools/patch/v4a-convert.mjs +35 -14
  164. package/src/runtime/agent/orchestrator/tools/patch/wave.mjs +42 -4
  165. package/src/runtime/agent/orchestrator/tools/shell-codepage.mjs +296 -0
  166. package/src/runtime/agent/orchestrator/tools/shell-command.mjs +124 -81
  167. package/src/runtime/agent/orchestrator/tools/shell-exec-output.mjs +75 -24
  168. package/src/runtime/agent/orchestrator/tools/shell-exec-policy.mjs +19 -4
  169. package/src/runtime/channels/lib/config.mjs +3 -8
  170. package/src/runtime/channels/lib/voice-runtime-fetcher.mjs +7 -3
  171. package/src/{tui → runtime/channels}/lib/voice-setup.mjs +38 -22
  172. package/src/runtime/channels/lib/webhook/request-handler.mjs +42 -8
  173. package/src/runtime/computer-bridge/actions.mjs +2 -0
  174. package/src/runtime/computer-bridge/client.mjs +25 -1
  175. package/src/runtime/computer-bridge/linux-action-capabilities.mjs +84 -0
  176. package/src/runtime/computer-bridge/linux-readiness.d.mts +52 -0
  177. package/src/runtime/computer-bridge/linux-readiness.mjs +411 -0
  178. package/src/runtime/computer-bridge/test-linux-display.mjs +5 -0
  179. package/src/runtime/effort-judge/compact-tokenizer.mjs +13 -8
  180. package/src/runtime/effort-judge/judge-client.mjs +12 -3
  181. package/src/runtime/effort-judge/judge-input.mjs +5 -2
  182. package/src/runtime/effort-judge/model-install.mjs +9 -3
  183. package/src/runtime/effort-judge/model-manifest.json +8 -8
  184. package/src/runtime/effort-judge/previous-human-request.mjs +162 -0
  185. package/src/runtime/effort-judge/verified-context-input.mjs +10 -0
  186. package/src/runtime/memory/lib/embedding-provider.mjs +12 -0
  187. package/src/runtime/memory/lib/embedding-worker.mjs +9 -3
  188. package/src/runtime/memory/lib/http-router/session-routes.mjs +2 -1
  189. package/src/runtime/memory/lib/memory-config-flags.mjs +3 -2
  190. package/src/runtime/memory/lib/memory-embed.mjs +5 -0
  191. package/src/runtime/memory/lib/pg/supervisor.mjs +3 -0
  192. package/src/runtime/shared/agent-route-config.mjs +50 -2
  193. package/src/runtime/shared/bounded-file-read.mjs +166 -0
  194. package/src/runtime/shared/builtin-grandfathering.mjs +37 -0
  195. package/src/runtime/shared/config.mjs +74 -6
  196. package/src/runtime/shared/defaults-separation.mjs +263 -0
  197. package/src/runtime/shared/developer-options.mjs +7 -0
  198. package/src/runtime/shared/instruction-files-mode.mjs +9 -0
  199. package/src/runtime/shared/llm/anthropic-effort.mjs +4 -0
  200. package/src/runtime/shared/llm/model-catalog.mjs +25 -1
  201. package/src/runtime/shared/llm/openai-daybreak.mjs +79 -0
  202. package/src/runtime/shared/llm/usage-ledger-rollup.mjs +105 -1
  203. package/src/runtime/shared/llm/usage-ledger-worker.mjs +2 -1
  204. package/src/runtime/shared/llm/usage-ledger.mjs +72 -5
  205. package/src/runtime/shared/onnx-runtime-support.mjs +6 -0
  206. package/src/runtime/shared/orchestration.mjs +14 -6
  207. package/src/runtime/shared/pristine-execution-contract.json +9 -0
  208. package/src/runtime/shared/pristine-execution.mjs +1 -1
  209. package/src/runtime/shared/projects.mjs +65 -48
  210. package/src/runtime/shared/provider-accounts.mjs +49 -6
  211. package/src/runtime/shared/quota-resume-store.mjs +255 -0
  212. package/src/runtime/shared/resource-admission.mjs +10 -3
  213. package/src/runtime/shared/schedule-model-ref.mjs +11 -0
  214. package/src/runtime/shared/session-approval-wait.mjs +35 -0
  215. package/src/runtime/shared/shell-display.mjs +4 -2
  216. package/src/runtime/shared/shipped-definitions.mjs +275 -0
  217. package/src/runtime/shared/tool-card-model.golden.json +3 -3
  218. package/src/runtime/shared/tool-result-summary.mjs +86 -15
  219. package/src/runtime/shared/transcript-metadata.mjs +2 -0
  220. package/src/runtime/shared/turn-review-reply.mjs +2 -0
  221. package/src/runtime/shared/turn-snapshot.mjs +65 -6
  222. package/src/runtime/shared/turn-worktree-snapshot.mjs +208 -27
  223. package/src/session-runtime/boot/apis.mjs +24 -0
  224. package/src/session-runtime/boot/config.mjs +4 -0
  225. package/src/session-runtime/boot/facade.mjs +4 -1
  226. package/src/session-runtime/boot/infrastructure.mjs +21 -2
  227. package/src/session-runtime/boot/session.mjs +3 -0
  228. package/src/session-runtime/channel-config-api.mjs +5 -0
  229. package/src/session-runtime/config-lifecycle/config-writers.mjs +3 -0
  230. package/src/session-runtime/config-lifecycle.mjs +31 -6
  231. package/src/session-runtime/goal-facade-api.mjs +4 -0
  232. package/src/session-runtime/lifecycle/inheritance.mjs +28 -6
  233. package/src/session-runtime/lifecycle/session-switch/context-switch.mjs +3 -0
  234. package/src/session-runtime/lifecycle/session-switch/resume.mjs +7 -1
  235. package/src/session-runtime/lifecycle/session-switch/session-delete.mjs +6 -0
  236. package/src/session-runtime/lifecycle/teardown/session-close.mjs +14 -2
  237. package/src/session-runtime/media-api.mjs +32 -22
  238. package/src/session-runtime/model-recency.mjs +17 -0
  239. package/src/session-runtime/model-route/route-tuning.mjs +3 -5
  240. package/src/session-runtime/model-route/set-route.mjs +49 -21
  241. package/src/session-runtime/model-route-api.mjs +2 -1
  242. package/src/session-runtime/notification-bus.mjs +31 -6
  243. package/src/session-runtime/provider-auth/login.mjs +16 -10
  244. package/src/session-runtime/provider-auth/setup.mjs +22 -2
  245. package/src/session-runtime/provider-models/catalog-load.mjs +3 -1
  246. package/src/session-runtime/provider-models/row-hydration.mjs +26 -17
  247. package/src/session-runtime/provider-readiness.mjs +4 -0
  248. package/src/session-runtime/quick-model-rows/model-meta.mjs +26 -0
  249. package/src/session-runtime/quick-model-rows/provider-rows.mjs +40 -14
  250. package/src/session-runtime/resource-api.mjs +8 -1
  251. package/src/session-runtime/runtime-core.mjs +4 -0
  252. package/src/session-runtime/runtime-facade.mjs +25 -1
  253. package/src/session-runtime/runtime-review-api.mjs +12 -1
  254. package/src/session-runtime/schedule-session-run.mjs +3 -1
  255. package/src/session-runtime/services/agent-tool/helpers.mjs +4 -0
  256. package/src/session-runtime/services/agent-tool/index-write-queue.mjs +63 -27
  257. package/src/session-runtime/services/agent-tool/job-views/agent-list.mjs +15 -3
  258. package/src/session-runtime/services/agent-tool/job-views/session-progress.mjs +2 -0
  259. package/src/session-runtime/services/agent-tool/spawn-flow/spawn-prep.mjs +11 -3
  260. package/src/session-runtime/services/agent-tool/spawn-preset.mjs +2 -0
  261. package/src/session-runtime/services/agent-tool/worker-index/approval-wait.mjs +97 -0
  262. package/src/session-runtime/services/agent-tool/worker-index/mutation-batch.mjs +4 -2
  263. package/src/session-runtime/services/agent-tool/worker-index/row-liveness.mjs +8 -2
  264. package/src/session-runtime/services/agent-tool/worker-index/row-shape.mjs +3 -0
  265. package/src/session-runtime/services/agent-tool/worker-index/row-store.mjs +58 -2
  266. package/src/session-runtime/services/agent-tool/worker-index.mjs +69 -15
  267. package/src/session-runtime/services/agent-tool/worker-rows.mjs +2 -0
  268. package/src/session-runtime/services/channel-admin.mjs +91 -15
  269. package/src/session-runtime/services/provider-admin.mjs +336 -80
  270. package/src/session-runtime/services/seeds.mjs +80 -152
  271. package/src/session-runtime/services/usage-dashboard-model.mjs +35 -0
  272. package/src/session-runtime/services/usage-dashboard.mjs +7 -0
  273. package/src/session-runtime/session-address.mjs +125 -0
  274. package/src/session-runtime/session-create.mjs +57 -2
  275. package/src/session-runtime/settings-builtin-tools-api.mjs +23 -0
  276. package/src/session-runtime/settings-compaction-api.mjs +13 -0
  277. package/src/session-runtime/setup-tool/executor.mjs +97 -40
  278. package/src/session-runtime/setup-tool/extended-actions.mjs +64 -5
  279. package/src/session-runtime/setup-tool/settings-contract.mjs +44 -1
  280. package/src/session-runtime/setup-tool/tool-defs.mjs +20 -7
  281. package/src/session-runtime/tool-policy-refresh.mjs +3 -0
  282. package/src/session-runtime/tool-surface.mjs +16 -9
  283. package/src/session-runtime/turn/session-ops.mjs +3 -0
  284. package/src/session-runtime/turn/share-ops.mjs +4 -1
  285. package/src/session-runtime/turn/turn-run/turn-prepare.mjs +6 -0
  286. package/src/session-runtime/usage-stats-api.mjs +15 -0
  287. package/src/session-runtime/webhook-session-run.mjs +3 -1
  288. package/src/session-runtime/workflow-agents-api/agent-editor.mjs +31 -5
  289. package/src/session-runtime/workflow-agents-api/agent-route.mjs +4 -0
  290. package/src/session-runtime/workflow-agents-api/workflow-packs.mjs +27 -7
  291. package/src/standalone/daemon-boot-coordinator.mjs +10 -0
  292. package/src/standalone/daemon-drain-policy.mjs +9 -0
  293. package/src/standalone/daemon-stored-session-views.mjs +7 -8
  294. package/src/standalone/daemon.mjs +21 -5
  295. package/src/standalone/local-session-runtime.mjs +11 -0
  296. package/src/standalone/session-client.mjs +52 -7
  297. package/src/standalone/session-protocol.mjs +9 -0
  298. package/src/standalone/session-service/agent-tree/agent-child.mjs +2 -0
  299. package/src/standalone/session-service/entries/lifecycle.mjs +2 -0
  300. package/src/standalone/session-service/entries/session-loads.mjs +9 -0
  301. package/src/standalone/session-service/projection/revisions.mjs +28 -4
  302. package/src/standalone/session-service/projection.mjs +1 -0
  303. package/src/standalone/session-service/quota-resume.mjs +140 -0
  304. package/src/standalone/session-service/session-calls/session-action.mjs +2 -2
  305. package/src/standalone/session-service/session-calls.mjs +10 -2
  306. package/src/standalone/session-service/stored-reader.mjs +26 -1
  307. package/src/standalone/session-service.mjs +21 -0
  308. package/src/standalone/session-transport/routes.mjs +2 -0
  309. package/src/tui/app/doctor.mjs +7 -11
  310. package/src/tui/app/maintenance-pickers/auto-clear-picker.mjs +3 -5
  311. package/src/tui/app/model-options.mjs +13 -1
  312. package/src/tui/app/model-picker/route-selection/fast-parameters.mjs +10 -4
  313. package/src/tui/app/provider-setup/oauth-actions.mjs +5 -0
  314. package/src/tui/app/settings-picker/settings-rows.mjs +4 -6
  315. package/src/tui/app/settings-picker/settings-toggles/store-toggles.mjs +1 -1
  316. package/src/tui/app/slash-dispatch/route-commands.mjs +3 -2
  317. package/src/tui/components/ContextPanel.jsx +5 -1
  318. package/src/tui/components/Spinner.jsx +34 -319
  319. package/src/tui/components/SpinnerByline.jsx +256 -0
  320. package/src/tui/components/use-spinner-progress.mjs +113 -0
  321. package/src/tui/dist/index.mjs +15421 -14283
  322. package/src/tui/session/agent-job-feed/execution-delivery.mjs +13 -1
  323. package/src/tui/session/agent-job-feed/notification-router.mjs +3 -0
  324. package/src/tui/session/agent-job-feed/pending-resume.mjs +14 -1
  325. package/src/tui/session/agent-job-feed.mjs +4 -0
  326. package/src/tui/session/context-state.mjs +15 -1
  327. package/src/tui/session/initial-state.mjs +6 -0
  328. package/src/tui/session/live-share/owner.mjs +17 -0
  329. package/src/tui/session/oauth-flows.mjs +2 -0
  330. package/src/tui/session/quota-resume.mjs +263 -0
  331. package/src/tui/session/session-api/intake/abort.mjs +39 -35
  332. package/src/tui/session/session-api/intake/submission.mjs +13 -21
  333. package/src/tui/session/session-api/intake.mjs +3 -3
  334. package/src/tui/session/session-api/integrations.mjs +13 -9
  335. package/src/tui/session/session-api/lifecycle/dispose.mjs +1 -0
  336. package/src/tui/session/session-api/lifecycle/inheritance.mjs +2 -2
  337. package/src/tui/session/session-api/lifecycle/session-reset.mjs +4 -0
  338. package/src/tui/session/session-api/lifecycle.mjs +71 -2
  339. package/src/tui/session/session-api/media.mjs +2 -2
  340. package/src/tui/session/session-api/quota-resume.mjs +21 -0
  341. package/src/tui/session/session-api/routes.mjs +4 -2
  342. package/src/tui/session/session-api/settings.mjs +2 -0
  343. package/src/tui/session/session-api.mjs +2 -0
  344. package/src/tui/session/session-flow/auto-clear.mjs +14 -6
  345. package/src/tui/session/session-flow/drain.mjs +52 -5
  346. package/src/tui/session/session-flow/queue/take-entries.mjs +2 -3
  347. package/src/tui/session/session-flow/queue.mjs +3 -0
  348. package/src/tui/session/session-flow/steering.mjs +11 -0
  349. package/src/tui/session/session-flow.mjs +1 -0
  350. package/src/tui/session/tool-approval.mjs +7 -2
  351. package/src/tui/session/tool-card-results/grouped-result.mjs +11 -2
  352. package/src/tui/session/transcript-intake.mjs +1 -0
  353. package/src/tui/session/transcript-spill/spill-dir.mjs +22 -6
  354. package/src/tui/session/turn.mjs +40 -3
  355. package/src/tui/spinner-meta.mjs +26 -10
  356. package/src/vendor/statusline/bin/statusline-route.mjs +3 -2
@@ -0,0 +1,63 @@
1
+ // Shared helpers for the release automation guards: latest-guard.yml,
2
+ // publish-asset-release.mjs and post-release-check.mjs.
3
+ //
4
+ // GitHub's "Latest" release is what electron-updater follows (latest.yml /
5
+ // latest-mac.yml), so it must always be the newest published desktop app
6
+ // release (vX.Y.Z). Asset releases (effort-judge-*, voice-*, graph-v*, ...)
7
+ // and mobile-v* releases must never take it.
8
+
9
+ import { execFileSync } from 'node:child_process';
10
+
11
+ export const APP_TAG_RE = /^v\d+\.\d+\.\d+$/;
12
+
13
+ /** Numeric semver comparison of two vX.Y.Z tags (or X.Y.Z versions). */
14
+ export function compareSemver(a, b) {
15
+ const left = String(a).replace(/^v/, '').split('.').map(Number);
16
+ const right = String(b).replace(/^v/, '').split('.').map(Number);
17
+ for (let index = 0; index < 3; index++) {
18
+ if (left[index] !== right[index]) return left[index] - right[index];
19
+ }
20
+ return 0;
21
+ }
22
+
23
+ /** The newest non-draft, non-prerelease app release, or null. */
24
+ export function selectLatestAppRelease(releases) {
25
+ const apps = releases.filter(
26
+ (release) => !release.draft && !release.prerelease && APP_TAG_RE.test(release.tag_name || '')
27
+ );
28
+ apps.sort((a, b) => compareSemver(b.tag_name, a.tag_name));
29
+ return apps[0] ?? null;
30
+ }
31
+
32
+ /** Run `gh` and return stdout. Throws with gh's stderr on failure. */
33
+ export function gh(args) {
34
+ return execFileSync('gh', args, {
35
+ encoding: 'utf8',
36
+ maxBuffer: 256 * 1024 * 1024,
37
+ stdio: ['ignore', 'pipe', 'pipe'],
38
+ });
39
+ }
40
+
41
+ export function ghJson(args, run = gh) {
42
+ return JSON.parse(run(args));
43
+ }
44
+
45
+ /** All releases of a repo, newest first as the API returns them. */
46
+ export function listReleases(repo, run = gh) {
47
+ return ghJson(['api', '--paginate', '--slurp', `repos/${repo}/releases?per_page=100`], run).flat();
48
+ }
49
+
50
+ /** True only for an explicit HTTP 404 from `gh api`; "not found" wording alone (e.g. behind a 500) is not absence. */
51
+ export function isHttp404(error) {
52
+ return /\bHTTP 404\b/.test(`${error.stderr ?? ''}${error.message ?? ''}`);
53
+ }
54
+
55
+ /** Tag of the repo's current "Latest" release, or null when there is none. */
56
+ export function currentLatestTag(repo, run = gh) {
57
+ try {
58
+ return run(['api', `repos/${repo}/releases/latest`, '--jq', '.tag_name']).trim() || null;
59
+ } catch (error) {
60
+ if (isHttp404(error)) return null;
61
+ throw error;
62
+ }
63
+ }
@@ -2,5 +2,20 @@
2
2
  // Explicit Node test options and file paths, without discovery or lane filters.
3
3
  import { runNodeTests } from './lib/run-node-tests.mjs';
4
4
 
5
+ const argv = process.argv.slice(2);
6
+ // The same defaults as scripts/test.mjs: `mock.module` is still flag-gated on
7
+ // 22/24, and a suite that leaves a handle open must not hang the whole run.
8
+ // A flag the caller already passed (to node or to this script) is not repeated.
9
+ const given = new Set([...process.execArgv, ...argv]);
10
+ const unlessGiven = (flag) => (given.has(flag) ? [] : [flag]);
11
+
5
12
  // Preserve parent Node flags such as heap limits and preload modules.
6
- await runNodeTests([...process.execArgv, '--test'], process.argv.slice(2));
13
+ await runNodeTests(
14
+ [
15
+ ...process.execArgv,
16
+ ...unlessGiven('--experimental-test-module-mocks'),
17
+ '--test',
18
+ ...unlessGiven('--test-force-exit'),
19
+ ],
20
+ argv
21
+ );
package/scripts/test.mjs CHANGED
@@ -21,7 +21,7 @@
21
21
  import { glob } from 'node:fs/promises';
22
22
  import { resolve } from 'node:path';
23
23
  import { fileURLToPath } from 'node:url';
24
- import { runNodeTests } from './lib/run-node-tests.mjs';
24
+ import { DEFAULT_TEST_TIMEOUT_MS, LONG_TEST_TIMEOUT_MS, runNodeTests } from './lib/run-node-tests.mjs';
25
25
 
26
26
  const FILE_LANES = ['fast', 'slow', 'live', 'electron'];
27
27
  const LANES = [...FILE_LANES, 'all'];
@@ -40,11 +40,14 @@ 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 run uses --exclude-lane electron.
43
- --rerun-failed <n> re-run the failed files up to n times (default 0 = off).
44
- A test that passes on a re-run is reported as flaky and,
45
- because the flag was passed, does NOT fail the run; a test
46
- that fails every re-run still exits 1. Without the flag every
47
- failure fails the run, as before.
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.
49
+ Per-file timeout: --test-timeout (default 120000 ms for the fast lane, 600000
50
+ ms otherwise); MIXDOG_TEST_TIMEOUT_MS overrides, 0 disables.
48
51
  --import forwarded to node (desktop passes its test-env and tsx loaders).
49
52
  --test-* forwarded to node --test (e.g. --test-name-pattern, --test-only).
50
53
  --coverage collect V8 coverage (NODE_V8_COVERAGE, no dependency) and fold
@@ -80,6 +83,17 @@ function rerunCount(value) {
80
83
  return Number(value);
81
84
  }
82
85
 
86
+ // Files run in parallel on every core, which exposes timing-sensitive tests
87
+ // that pass alone. A local run therefore re-runs failed files once and reports
88
+ // a pass on the re-run as flaky (named in the failure summary). CI keeps the
89
+ // strict policy unless it opts in with --rerun-failed or MIXDOG_TEST_RERUN_FAILED;
90
+ // MIXDOG_TEST_RERUN_FAILED=0 turns the local default off.
91
+ export function defaultRerunFailed(env = process.env) {
92
+ if (/^\d+$/.test(String(env.MIXDOG_TEST_RERUN_FAILED ?? ''))) return Number(env.MIXDOG_TEST_RERUN_FAILED);
93
+ const ci = String(env.CI ?? '').toLowerCase();
94
+ return ci && ci !== '0' && ci !== 'false' ? 0 : 1;
95
+ }
96
+
83
97
  export function parseArgs(argv) {
84
98
  const options = { lane: 'fast', list: false, nodeArgs: [], filters: [] };
85
99
  for (let index = 0; index < argv.length; index++) {
@@ -102,6 +116,10 @@ export function parseArgs(argv) {
102
116
  const spec = argv[++index];
103
117
  if (spec === undefined) throw new Error('--import requires a value');
104
118
  options.nodeArgs.push(arg, spec);
119
+ } else if (arg === '--test-timeout' || arg === '--test-concurrency') {
120
+ const value = argv[++index];
121
+ if (value === undefined) throw new Error(`${arg} requires a value`);
122
+ options.nodeArgs.push(`${arg}=${value}`);
105
123
  } else if (arg.startsWith('--import=') || arg.startsWith('--test-')) options.nodeArgs.push(arg);
106
124
  else options.filters.push(arg.replaceAll('\\', '/'));
107
125
  }
@@ -198,7 +216,11 @@ async function main() {
198
216
  '--test-force-exit',
199
217
  ],
200
218
  files,
201
- { coverage: options.coverage === true, rerunFailed: options.rerunFailed ?? 0 }
219
+ {
220
+ coverage: options.coverage === true,
221
+ rerunFailed: options.rerunFailed ?? defaultRerunFailed(),
222
+ testTimeoutMs: options.lane === 'fast' ? DEFAULT_TEST_TIMEOUT_MS : LONG_TEST_TIMEOUT_MS,
223
+ }
202
224
  );
203
225
  }
204
226
 
@@ -0,0 +1,38 @@
1
+ ---
2
+ name: Advisor
3
+ description: Use on non-trivial work after orientation and before committing to an approach, when stuck or results do not converge, before changing approach, and for requested second opinions. Skip for low-difficulty work. Advisory analysis only; the final check belongs to Reviewer.
4
+ ---
5
+
6
+ Independent technical advisor.
7
+
8
+ You are consulted at decision points: once orientation is done and before an
9
+ approach is committed, when errors recur or results stop converging, before a
10
+ change of approach, and when the user asks for a second opinion or
11
+ cross-validation. You do not see the Lead's conversation; work from the brief
12
+ and verify its evidence against the source yourself.
13
+
14
+ For design advice, compare the smallest viable alternatives against the
15
+ requested outcome, established project patterns, correctness, compatibility,
16
+ security, performance, and maintenance cost. Recommend one course of action and
17
+ explain the material trade-off. Do not broaden the task into a general audit or
18
+ redesign.
19
+
20
+ For a stuck or non-converging task, identify the most likely cause from the
21
+ actual execution paths and observed behavior, and name the decisive check that
22
+ separates competing explanations. Reproduce counterexamples with bounded tests
23
+ when needed. A passing test is evidence only for the path it exercises.
24
+
25
+ When the brief reports evidence that conflicts with earlier advice, resolve the
26
+ conflict explicitly: state which constraint decides it and why.
27
+
28
+ Work from source and observed behavior, not from the Lead's conclusion. State
29
+ what is confirmed, inferred, or unverified; name missing evidence and concrete
30
+ blockers rather than inventing certainty.
31
+
32
+ Do not implement fixes, modify project files or settings, stage or commit
33
+ changes, deploy, or delegate work. Keep checks non-destructive and isolate any
34
+ test fixtures from existing user data. The final check belongs to Reviewer.
35
+
36
+ Lead with the recommendation, then actionable findings ordered by severity, with
37
+ evidence located by project-relative path and function or symbol. If no issue
38
+ is found, say so and list only material residual risks and verification limits.
@@ -0,0 +1,6 @@
1
+ {
2
+ "id": "advisor",
3
+ "name": "Advisor",
4
+ "description": "Use on non-trivial work after orientation and before committing to an approach, when stuck or results do not converge, before changing approach, and for requested second opinions. Skip for low-difficulty work. Advisory analysis only; the final check belongs to Reviewer.",
5
+ "entry": "AGENT.md"
6
+ }
@@ -1,9 +1,12 @@
1
1
  ---
2
2
  name: Reviewer
3
- description: Use after implementation to independently verify correctness, regressions, risks, and stated acceptance criteria before final reporting.
3
+ description: Use once at the final check of non-trivial work: after the implementation is written and verified, before reporting completion, to independently verify correctness, regressions, risks, and acceptance criteria. Skip for low-difficulty work.
4
4
  ---
5
5
 
6
- Independent regression/risk review agent.
6
+ Independent final-check review agent.
7
+
8
+ You are called once, after the deliverable is written and the Lead's own
9
+ verification has run, before completion is reported.
7
10
 
8
11
  Inspect the diff, affected boundaries, existing tests, and stated acceptance
9
12
  criteria with independent judgment. Run the necessary builds, tests, lint, or
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "id": "reviewer",
3
3
  "name": "Reviewer",
4
- "description": "Use after implementation to independently verify correctness, regressions, risks, and stated acceptance criteria before final reporting.",
4
+ "description": "Use once at the final check of non-trivial work: after the implementation is written and verified, before reporting completion, to independently verify correctness, regressions, risks, and acceptance criteria. Skip for low-difficulty work.",
5
5
  "entry": "AGENT.md"
6
6
  }
@@ -0,0 +1,383 @@
1
+ {
2
+ "agents": {
3
+ "advisor": [
4
+ "d3b4a7926c9484833fe8ddba70260f9d"
5
+ ],
6
+ "debugger": [
7
+ "88c946270760ecbae86df65b9ce262f1"
8
+ ],
9
+ "explore": [
10
+ "d4fa3ff93ace1dfac0b92792f42b9cbf"
11
+ ],
12
+ "front-worker": [
13
+ "40fc5c27b89061096ccba4cd27224fae",
14
+ "ac167e68d1207bcccd13e570bb2ca63d"
15
+ ],
16
+ "heavy-worker": [
17
+ "14f33dc065b29bcdf236326c8f8c2e43",
18
+ "3f380914f50e2fa744cd2061013910a5",
19
+ "f1662590203b5ad1521f8a8a78236521"
20
+ ],
21
+ "maintainer": [
22
+ "602a50f142a4e244912547298ad8e512",
23
+ "62b2ecd8496b64b4653f031ec75b0e50",
24
+ "c25f03972df1ccfd2ed602ab23d2afae"
25
+ ],
26
+ "reviewer": [
27
+ "07643b62440d3eba29b7360b8a33f09f",
28
+ "25b44b46269490e26ca31c1852925171",
29
+ "a61cb4557def4e7ed647d4bdacbb72e4",
30
+ "de860d4111b61985f3b59eb1011fa421"
31
+ ],
32
+ "scheduler-task": [
33
+ "4e91fa34b4bdf3e0ab4dc2f2dfcad4d6"
34
+ ],
35
+ "security": [
36
+ "50d9fd43dab8deff3b90c5b1096167e3",
37
+ "54de597d001d4965c4b846f90960ebf2"
38
+ ],
39
+ "webhook-handler": [
40
+ "bd6765c2188681ff5a8114edcb3a21be"
41
+ ],
42
+ "worker": [
43
+ "40e47556c3edf39ebc6145eb57e43692",
44
+ "d02510cc6567fb4650b9da06f5b703d9",
45
+ "d6b55a346ab6885ce66a88be4e5a9ba0"
46
+ ],
47
+ "writer": [
48
+ "8273086982cacdd090e3bd129cd5fa0b",
49
+ "bb1784ff9a28c1b4c96db706a24ddab6"
50
+ ]
51
+ },
52
+ "workflows": {
53
+ "default": [
54
+ "066885aabdbc476757c264a98b54a932",
55
+ "07bd0a6f41369f0c629dff8efe9e0c79",
56
+ "08d03484742e51d90961bcc3efe0acfa",
57
+ "0afe17998c52bf57dcb8f3e8ebcec26f",
58
+ "33205f4956124396b7e80882fbbedd18",
59
+ "4aaa7fa1f071c092733fda61380822c9",
60
+ "4e133eaf5f209ea9c5eda74fe8d810e9",
61
+ "56355187d05762ef50579d6285636c71",
62
+ "599d6b09954a3afb163091878d3b7040",
63
+ "5fa8ddf4731b39cec5fa269d632cfcc4",
64
+ "660cc103947dd30b94c70bcd1f22cefe",
65
+ "6bbd8bb9e7657bc642f7be02f36dfc6d",
66
+ "7976531213723a66a7a53b9a1cf0f372",
67
+ "7c7761dffc8521e48e6c3984e285488b",
68
+ "8f2ea7e17db4e8d258762eea41fa9f12",
69
+ "a78d7474302fea702c67353066c8dc30",
70
+ "dcc26ca34f1a51dcae7b129a1356e55f",
71
+ "f04e5b67dfae9ffee2d65f81a71310d6",
72
+ "f14587269047edcfc3b3a26472ead129",
73
+ "fee909e20612ac29565996c77f347c3e"
74
+ ],
75
+ "headless": [
76
+ "a40de216961b473ee4952e9aff2fe35c",
77
+ "b813a5f4d3a760bf7509e06efbfd1ad7",
78
+ "c5731050dd0897658cc775a946ae1795",
79
+ "e3359cf27eb387dcda3da8dec76856b9"
80
+ ],
81
+ "solo": [
82
+ "02b90624c40269c141e138c1a09e43bc",
83
+ "24e780e69749bf58fb8f45d86f24bec7",
84
+ "39dc9d39fbd3495a80eff2961e307b8c",
85
+ "8472515926db11cfe131112fa4a49603",
86
+ "a0fa3e548891904c0e5520f3148318e7",
87
+ "d74ce8865eb8336a4890416c5945eeb4",
88
+ "e06f0dd97741542d35bd109655baea78",
89
+ "e859a2949876a6bebb8189cb4a274422",
90
+ "e9ba21757439ada80be3ec4abc947f8b",
91
+ "ec8ab1f9f14132cf06c96ff190ead470"
92
+ ],
93
+ "solo-bench": [
94
+ "550a841e4902bac95ad182f093ba2921",
95
+ "ef5066ec9b6233f1f18223b5ef7e2034"
96
+ ]
97
+ },
98
+ "outputStyles": {
99
+ "common.md": [
100
+ "4e6134d60ee5c54c2888e874653bcdad",
101
+ "899529696b7d6d3373ae83a76976ab48",
102
+ "8d343d0a406fd5817b7fd98a3ac47010",
103
+ "a1b73ce404125d3ce0a5762e4a1e1555",
104
+ "a28fb01bb21ceebbde1bc6c4a02d3db6",
105
+ "d40c23517c4803afdac3fc056bb65cda",
106
+ "db1af5417849abc2f6bb1d1d2b63939f"
107
+ ],
108
+ "detailed.md": [
109
+ "1aa66e56f8d93f02d2999b4839df688c",
110
+ "1c6cf199d61ff391a4a1e359cf097c71",
111
+ "3ce00b9dbd45e4e3cca788e8e1406b3c",
112
+ "63e76e2778f337ad12be3ae8f4f69e8d",
113
+ "65097337e21c56dcf29e50eaf9aae639",
114
+ "822498e7a6f11fa724fbf56a3498b21d",
115
+ "9b6b57fa5fc86b445b47b743d5249335",
116
+ "cf4dc49981a68a7b34990e6ba740e35b",
117
+ "f768eba35712c51ed741782cc91f23f3",
118
+ "f7ec059f73568252528a6a343f4e14d9"
119
+ ],
120
+ "extreme-minimal.md": [
121
+ "05dbbf291d146b8da564934313795501",
122
+ "153e27d90681cdb539f8e42121281ab8",
123
+ "17a5b91dc77e5fa55c23177057ae3df0",
124
+ "749ce3841e76979840956fbe21ca1c86",
125
+ "a88c86a3b2e75f5a87011e70f19b3925",
126
+ "ba50cac51380055938a0b51844680c0f",
127
+ "bf1067f879634a4f1e879625150efa91",
128
+ "d32d80a86d4a394016234c18c1f5aa86",
129
+ "dc987b215572c6a0569a0ca2398bb03c",
130
+ "fc52a1bee1f3fb5e84f0a01e44295b1c"
131
+ ],
132
+ "minimal.md": [
133
+ "05778bbf2481be70d4501543af6a7f44",
134
+ "0beee3927bc1b4c7ccf3f2cbea50d1c4",
135
+ "0c11f14731376cc80b0fd63a9dc4d4bf",
136
+ "10827dae8146a8e924e85f88a57d1e22",
137
+ "68ab17dda19d69ddba3cb3d4f2c319fa",
138
+ "6b102ba38f0fc9907a8e6a85b7bdc817",
139
+ "7bafc2474cd29a5c62dc3c49f296bc65",
140
+ "838bacd0e251a5df7b77eaee23682845",
141
+ "84e71cc8d6e437fbc4f37809069ee58e",
142
+ "eccd0524091bed441229a75c5eb803ff"
143
+ ],
144
+ "simple.md": [
145
+ "16d8b5e7757001c614dae62f18f63aa1",
146
+ "56b61d99f3179018f65b530d9b1491d7",
147
+ "6e1749aa66d4416cadad4bcd26eb807a",
148
+ "75ca4c5ec12866b2052a6d08b023759d",
149
+ "a311c3426746e53176852f9767540ce3",
150
+ "a7dcd96a9a933deca0f70d58e15300fb",
151
+ "b993dc4992e7eba34041f12298c48d94",
152
+ "beede840390bb7c8e16999d0ab48bc4b",
153
+ "c759ccfd6d64edbd31d30d102ff4b617",
154
+ "d238a03a5fc1eef97210e731c0a05701",
155
+ "d5f205f3b57c0b9541b8acc237069287"
156
+ ]
157
+ },
158
+ "skills": {
159
+ "browser-use": [
160
+ "00085086a7649ec6631f5cf0a3bbbf60",
161
+ "08eee52328524eb032fd14f342742c41",
162
+ "4ab5316454013712cedb25d9b75f4e43",
163
+ "646365a3f7041a3da3d7d7d896a0c3b6",
164
+ "8766650e61891e910b44bb2591c88f48",
165
+ "87c15aa8b84c6924598926295b3f7829",
166
+ "949c457b38fa2c9b7d9e684bf67e1470",
167
+ "a2538714c422b39a32d0eb9f27893b32",
168
+ "af1d1b975fc4b6a50f3a1775d890582f",
169
+ "d46676d3d80327445c36e70bb291ae52",
170
+ "dc812114c135d1d2716b219e1009e670",
171
+ "ff5607144eaf51be56217319431cb90e"
172
+ ],
173
+ "code-tidy": [
174
+ "01db3042ed3dcc2f0656461cfab697bc",
175
+ "1423ed1ee68b8c2bd295cf2b88a2a396",
176
+ "219cb92521da2c9f78826f5623223419",
177
+ "4b91d62a735f895841de5660d4a7139a",
178
+ "54d7b50fa72b97a259683664f40b8c24",
179
+ "65fc2984f2a7ead790d527f8e9940aee",
180
+ "74a70988e5ee5704f85fd1250b7d0bb6",
181
+ "7c3ce81e504b46e01a9256576f3b4dca",
182
+ "9728f28dc5b23eb1bb1924213d3ffddd",
183
+ "9a8789b3b4f5f6b3ba02f407cdfb92f7",
184
+ "b50e9c0ba5e8228583eab4f0e0573838",
185
+ "c03f4d0e008467497c0152639953b166",
186
+ "cd1a47197762135462037ea6555ea721",
187
+ "cf6e0d4b0473e33cab960a8870b45661",
188
+ "d75f011e98c37391cea26ba4df596a5d",
189
+ "f1cc6fe5574d51dd9f1f6cb126238d31"
190
+ ],
191
+ "computer-use": [
192
+ "0b72325bc70f07ab4df5bcf336eb9f23",
193
+ "26fc2fc1acc0dce5ca450c4c0fae30a6",
194
+ "27135bd0ba3468258d3b43c752501929",
195
+ "398b50b687206544149feeb0a5b02c09",
196
+ "3f8b7b4cd798dba866eccd7d09c76248",
197
+ "733d30c3ca6745c96a69f7e237f3d8c0",
198
+ "7b9ce58540ed4609f290dc981a7e1719",
199
+ "8236330f56f27dd283bda6da1239285d",
200
+ "8bc93c9320b83de81baa8cf242af5c0b",
201
+ "8fe64c8f6d81bee2120134adf0d6a471",
202
+ "9e7a48df5065f5073bbab6f9db3e4061",
203
+ "b46617cc619e09c35b6bad8f6177e722",
204
+ "c2b0c50791e358064e22be87bdab4707",
205
+ "c4c5e0b2a8b749b6fd7566927d842d62",
206
+ "c692e1771b70f6fb506cdd2d07a5f658",
207
+ "cb3b95673998c6f44ae68533a49fd891",
208
+ "d086c0ddd6ab4cdfd6a93221b93596b3",
209
+ "e10367dd4291a0b3d8ee8e8dd60eae36",
210
+ "e1f2526aaf123fb77072aa8975f890de"
211
+ ],
212
+ "docx": [
213
+ "25180dffff54178bcc336250f58ba7db",
214
+ "399e105761046c206a9d638609751313",
215
+ "52acd56f1e33cadb55c077fefa84f2e5",
216
+ "74ccfc661e33250bcbf53b0ced66c08e",
217
+ "75af4d91b04450db5bcec792225fc0c9",
218
+ "7c5a0798a7ee6e97d670a9c803b26272",
219
+ "87829941881ed6e321251de6d5b95251",
220
+ "972647c0de0659d7c0c624a81f0dcf11",
221
+ "9911a68bc102d89f580a5287c0c2e892",
222
+ "b6acb7af5193c271a5eaa6fd27b15e6b",
223
+ "b7fa5f118768e622d44f30f030a1cd0d",
224
+ "c95a4af45f6989a16a2fcd9cd9fa1529",
225
+ "cd9078fdd0bc572796c34b3a26aef5e0",
226
+ "d8e4ea52e07625097110f45dd292c214"
227
+ ],
228
+ "goal-management": [
229
+ "07604666cb32a7df8b1d4f0d1e137890",
230
+ "189bca949decd5bccbbdeb49a18426b2",
231
+ "1db9f3e81c714e7e4aa8db8c8004cca0",
232
+ "6d922fc351d6519c3d92cc5807fe0615",
233
+ "95c83d23f3625c35cc346477a470c769",
234
+ "a47d07ea3402854dc03e655afd5a3a6d",
235
+ "ab3ce13601e712165bd6c51ec9832010",
236
+ "c057fbb0f146fddbc3acb6d6526eff9c",
237
+ "c3e561302f8efad5fe4f50302b3f54b5",
238
+ "c96c22bf7ab5e55f37d543d1006b224a",
239
+ "d66f20b9de295ae2373e7261b6c7d3f4",
240
+ "f405cb92e4c1f5ff64a674b6d1897389"
241
+ ],
242
+ "history-recall": [
243
+ "1211daeb2c4ae770b1af23c5967baa20"
244
+ ],
245
+ "image": [
246
+ "2052d09860dfa293f239952d6e91d051",
247
+ "c1a7863f99f8c57bd6c6dc4f05228d06",
248
+ "de167d9432b970379e4ba6819416ebbc",
249
+ "e30b8db5872d14039f3ce96a48a0e711",
250
+ "e78e509faeb77e9841789f89edefd4fc"
251
+ ],
252
+ "local-provider": [
253
+ "0dd50d50ca7fd15c75eb7297a9731fac",
254
+ "64ae24b63d890f41d71f2d4acb245bdd",
255
+ "7064f1716df7abd987d2fc618ba56d51",
256
+ "d113331411c1e8459ede53a149ee7a74",
257
+ "e2e9117f822b5dd113e32e12a8105094",
258
+ "f5548508cc8e05ceae4fdb6d5d4096b8"
259
+ ],
260
+ "media": [
261
+ "bdf26b0f2ac9f3126bfa74ced15a7d73"
262
+ ],
263
+ "memory-management": [
264
+ "261a34fce0fb0f73abfd1b1e2add3602",
265
+ "356bf57f7087fe2c40c5dcd99622c3e9",
266
+ "a8ffffd02f438cdd6005e09cfe6cf42f",
267
+ "aad47f68614152e4b338cf3684f72304"
268
+ ],
269
+ "pdf": [
270
+ "239aa831e6a25a887ac4e2a1fb511225",
271
+ "36f73e2986feab19706d172486dd57b6",
272
+ "9895e5e04c97e5572087f6409c946c7a",
273
+ "ade52b2b327d03d24400fddf8530b08c",
274
+ "be7c293599fbb340fc440275b71247b9",
275
+ "c0b6d799c54193d1e20d48d74a4b29e7",
276
+ "c5d416db89c973fd9cedfe32310376dc",
277
+ "d8efa2799cb99d806572a690f169bf9a",
278
+ "da6a1af298107ffed1270bd7d514067f",
279
+ "e5af7a8e68898e305da7f085494dc0f0",
280
+ "ef3c4c71b1d8cd8a29906922821b3351",
281
+ "f1d9a290cf2dc6b602db652e6eff120c"
282
+ ],
283
+ "pptx": [
284
+ "02010418903501a4310a9cf9d84441ff",
285
+ "07802a61d913c3fb7c431774e7f4ebb7",
286
+ "0a34c5b6011578bebdb6cca63edfcec4",
287
+ "0ddf9f9845e1fcfc76d81592d6a71e70",
288
+ "44171df8144101dc74bf21f72cb5b7c0",
289
+ "48247c1645fd94aad7711082d4512c49",
290
+ "4f94016363acccd788a724a2d414744e",
291
+ "6358ad25dd07a2f92ad65c249a4f360b",
292
+ "7fb12aeb07b79ae113c0deb0a90c6da7",
293
+ "804afd71ebc3f68614a4dc419af4b98e",
294
+ "88bc9730f36ebd88c32f6bfc0939659b",
295
+ "906c55a112a89e6fb426cf5dce96f093",
296
+ "92dd030b740dec7b044a4228293a1ddb",
297
+ "9b5f1cfda6442a8a3de4832d9f7d155b",
298
+ "a0cbb844bc07f5b4576754477c89dd0d",
299
+ "a162503f3b099c64afe784842c5ba510",
300
+ "a7fcb0d3501f3b45b234121c7df377b3",
301
+ "ab1dfca887b7bbe8bf2215651f72d7d8",
302
+ "af0d76ff734bccf24a3a614d6b6eb261",
303
+ "b60a31c2309a652bb9eb4a0c464df9db",
304
+ "be8efc50af40e7c3fb32eb0ce0418093",
305
+ "c19ab0218014f3f39e2ecebf7751b24b",
306
+ "c1eeda7e08b415d07f56f86cca36aff3",
307
+ "c286d9054641d20eba5241a7ca581034",
308
+ "ccdcb72ab9cdc32d871fd004e29debe4",
309
+ "d17cccb2b9cd3afc56aae94fb557a55c",
310
+ "e54c90aa4a9d4792332cd92a4201f9ee",
311
+ "ecf4e2519cdc6c1001f65955bc92f20f",
312
+ "f2041412a1e73924042ef48de4d57225",
313
+ "f8a4e0c8153afbbac88579ca58740caf",
314
+ "ff9c59ad3686b2a8c6169ae6e51ea3da"
315
+ ],
316
+ "setup": [
317
+ "0357c6d475ced8ba2446e6bda21899b4",
318
+ "0be31b379e919420e5b8f74926bdf6e5",
319
+ "0d5c8c6e2349addf71d2ed2b4c1ccb1f",
320
+ "0d6926aaca2890da9347f15a826546e3",
321
+ "0f14ba0a3d8b3896b717dc144bbe49a4",
322
+ "1c317db86e1ff80a5c4102e09e36f5fb",
323
+ "242f11864abdef90fa0cc9cb4599a579",
324
+ "336ced846a9e4f774cbb109417856c3b",
325
+ "3f72247651ad9d777b6754bfd46732aa",
326
+ "50bdf35d06913236855080fdea6b50dc",
327
+ "6101786127a1e68778eafcd2bf2c9ce0",
328
+ "6711dbc9d84023b8eabfa928b8d33d18",
329
+ "6f9e9338f560fa9acd839a67b5e2d1cc",
330
+ "70c54f802c77b630863b9e17a16d8224",
331
+ "81e979463e0066e7a45cf511a31c5d68",
332
+ "8476c811b2f02da3a434bcb23a1c3d12",
333
+ "9f90d3872b1ecd312977ce661b770b31",
334
+ "ade615dd0f6ae6ed1601023e5b9cb692",
335
+ "b4f9c79dcb08151e6275b5ee35c2bca4",
336
+ "c8826387a65631b63e8023f55ef807a3",
337
+ "cb6f66d14ba75b11e7470eb3fd5ec94c",
338
+ "de9727a48e52673258bf5f9670564d56",
339
+ "e04e6abe9a54e7d07b37f8fc32b5ad30",
340
+ "e38d606df69865a9cf1cc48386535e8b",
341
+ "e5ac8ea16905815e36e88d883195a617",
342
+ "feabe973080344c4d52787a96043ab68",
343
+ "ff18ac1a9f5961925aec27ffb870bae0"
344
+ ],
345
+ "skill-creator": [
346
+ "020817866da73a69544ba35086bdcd5f",
347
+ "2f3f44805618783fbcca9a56652a5e91",
348
+ "50e365910692a803732f68f82fc1ed1f",
349
+ "77a4ca1c08f684780eeeebec50a3f1e6",
350
+ "bd9bf738a5b3f443450c86230f3299fd",
351
+ "bec7e5abbcae88a6781d23bcdd35e259",
352
+ "d65265972caa7cbefc39baacc9e78157",
353
+ "f450e6d58a7f1f06c71aa2dd557ce09c"
354
+ ],
355
+ "video": [
356
+ "6aad64b16521d324e355d125692a0cec",
357
+ "82f61245cc67ce5380ab9ccf4c697c29",
358
+ "c3e50ae30343e17652edaf62c01cd872",
359
+ "e2f452c525d668cfc298b4ab2204e425",
360
+ "f209e75b6ea0360929516a713474ad71",
361
+ "fe0512acbb2fc8f80c5961b9f44aa5e2"
362
+ ],
363
+ "xlsx": [
364
+ "0deebbdd009b0a0941ca4b0833dbe7f6",
365
+ "10778ab8e1e2f7929895c034fef9ac41",
366
+ "3cd77f27757fb016ce215f3a4a8e281d",
367
+ "4231011223ce510a8f10632716457981",
368
+ "4b62539cd528f63686c3e75b7a88fd69",
369
+ "53e79a678218c98f136efff6e4504b6f",
370
+ "5ac9a3e274c8a3b3318d93cb42cd485d",
371
+ "6ce20520ae797d0bd9f7692e2d677562",
372
+ "74a76fe7926c5f43d190751ef89ea043",
373
+ "968369bfd2f8475c037719251988ff5e",
374
+ "acbcb8ef7f1bfbf8e9c739d14c185cd0",
375
+ "b0076e5e89f72ae5f14f0d1dd24cdaa0",
376
+ "ca40b7f33401b8254a5fbcc8d7281e1b",
377
+ "ce5e001eb6f71697410f755c7641cbab",
378
+ "d9a95940d0ffb5dd65876ba6f2f02846",
379
+ "dcbf857ba2f63774026e0b44a6d18f33",
380
+ "ff032fa6478bba0f9bbadd5fc09c9fa2"
381
+ ]
382
+ }
383
+ }
@@ -20,7 +20,7 @@ Platform notes: on macOS, `cmd` is the Command key and Mixdog needs the
20
20
  Accessibility and Screen Recording permissions. On Linux Wayland there is no
21
21
  background pixel input, pointer and keys need write access to `/dev/uinput`,
22
22
  and window control needs a compositor that exposes it (sway, Hyprland, or
23
- GNOME with the Window Calls extension); prefer accessibility refs there.
23
+ GNOME with Mixdog's own shell extension, which the app sets up); prefer accessibility refs there.
24
24
 
25
25
  > Method and pointers only. The tool description and input schema are the
26
26
  > authority for every field; when this file and the schema disagree, the
@@ -150,11 +150,17 @@ status. Do not resume or extend the Goal without the user's approval.
150
150
 
151
151
  ### Blocked and redirected work
152
152
 
153
- Report an impasse that only external state or the user can clear with `block`
154
- once per turn, with a stable description of the same condition. The runtime
155
- stops after three consecutive turns confirm it; until then continue any
156
- available work. Treat equivalent blockers as the same condition even when their
157
- wording or stated next step changes. Never block for difficulty, slowness,
153
+ `block` stops the Goal immediately, with a stable description of an impasse
154
+ that only external state or the user can clear. Do not block the first time a
155
+ blocker appears: block only after the same condition has repeated for three
156
+ consecutive Goal turns, counting the user-triggered turn and automatic
157
+ continuations; after a resume, count only turns since that resume. Until then,
158
+ continue any available work and re-check the blocker against current state with
159
+ a tool each turn rather than restating it. When current state verifies an
160
+ impasse that only the user can clear (their action, approval, credentials, or a
161
+ resource they control), block on that turn. Once the threshold is met, block
162
+ instead of reporting the same blocker again. Treat equivalent blockers as the
163
+ same condition even when their wording or stated next step changes. Never block for difficulty, slowness,
158
164
  uncertainty, a choice you can make, confirmation for in-scope work, or
159
165
  clarification that would only help. Use `abandon` only when the user redirects away from
160
166
  the objective; it preserves a stopped record rather than declaring success.