mixdog 0.7.17 → 0.8.0

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 (836) hide show
  1. package/README.md +37 -331
  2. package/package.json +67 -99
  3. package/scripts/boot-smoke.mjs +94 -0
  4. package/scripts/build-tui.mjs +52 -0
  5. package/scripts/compact-smoke.mjs +199 -0
  6. package/scripts/lead-workflow-smoke.mjs +598 -0
  7. package/scripts/live-worker-smoke.mjs +239 -0
  8. package/scripts/output-style-smoke.mjs +101 -0
  9. package/scripts/smoke-loop-report.mjs +221 -0
  10. package/scripts/smoke-loop.mjs +201 -0
  11. package/scripts/smoke.mjs +113 -0
  12. package/scripts/tool-failures.mjs +143 -0
  13. package/scripts/tool-smoke.mjs +456 -0
  14. package/src/agents/debugger/AGENT.md +3 -0
  15. package/src/agents/debugger/agent.json +6 -0
  16. package/src/agents/explore/AGENT.md +4 -0
  17. package/src/agents/explore/agent.json +6 -0
  18. package/src/agents/heavy-worker/AGENT.md +3 -0
  19. package/src/agents/heavy-worker/agent.json +6 -0
  20. package/src/agents/maintainer/AGENT.md +3 -0
  21. package/src/agents/maintainer/agent.json +6 -0
  22. package/src/agents/reviewer/AGENT.md +3 -0
  23. package/src/agents/reviewer/agent.json +6 -0
  24. package/src/agents/scheduler-task.md +3 -0
  25. package/src/agents/web-researcher/AGENT.md +3 -0
  26. package/src/agents/web-researcher/agent.json +6 -0
  27. package/src/agents/webhook-handler.md +3 -0
  28. package/src/agents/worker/AGENT.md +3 -0
  29. package/src/agents/worker/agent.json +6 -0
  30. package/src/app.mjs +90 -0
  31. package/src/cli.mjs +11 -0
  32. package/src/defaults/hidden-roles.json +72 -0
  33. package/src/defaults/mixdog-config.template.json +15 -0
  34. package/src/hooks/lib/permission-evaluator.cjs +488 -0
  35. package/src/hooks/lib/settings-loader.cjs +112 -0
  36. package/src/lib/keychain-cjs.cjs +332 -0
  37. package/src/lib/plugin-paths.cjs +28 -0
  38. package/src/lib/rules-builder.cjs +315 -0
  39. package/src/mixdog-session-runtime.mjs +3704 -0
  40. package/src/output-styles/default.md +38 -0
  41. package/src/output-styles/extreme-simple.md +17 -0
  42. package/src/output-styles/simple.md +17 -0
  43. package/src/repl.mjs +322 -0
  44. package/src/rules/bridge/00-common.md +5 -0
  45. package/src/rules/bridge/20-skip-protocol.md +11 -0
  46. package/src/rules/bridge/30-explorer.md +4 -0
  47. package/src/rules/bridge/40-cycle1-agent.md +28 -0
  48. package/src/rules/bridge/41-cycle2-agent.md +59 -0
  49. package/src/rules/lead/00-tool-lead.md +5 -0
  50. package/src/rules/lead/01-general.md +5 -0
  51. package/src/rules/lead/02-channels.md +3 -0
  52. package/src/rules/lead/04-workflow.md +12 -0
  53. package/src/rules/shared/00-language.md +3 -0
  54. package/src/rules/shared/01-tool.md +3 -0
  55. package/src/runtime/agent/orchestrator/bridge-trace.mjs +814 -0
  56. package/src/runtime/agent/orchestrator/cache-mtime.mjs +60 -0
  57. package/src/runtime/agent/orchestrator/config.mjs +446 -0
  58. package/src/runtime/agent/orchestrator/context/collect.mjs +796 -0
  59. package/src/runtime/agent/orchestrator/dispatch-persist.mjs +417 -0
  60. package/src/runtime/agent/orchestrator/internal-roles.mjs +188 -0
  61. package/src/runtime/agent/orchestrator/internal-tools.mjs +88 -0
  62. package/src/runtime/agent/orchestrator/mcp/client.mjs +345 -0
  63. package/src/runtime/agent/orchestrator/providers/anthropic-oauth.mjs +2104 -0
  64. package/src/runtime/agent/orchestrator/providers/anthropic.mjs +784 -0
  65. package/src/runtime/agent/orchestrator/providers/api-usage.mjs +341 -0
  66. package/src/runtime/agent/orchestrator/providers/gemini.mjs +1679 -0
  67. package/src/runtime/agent/orchestrator/providers/grok-oauth.mjs +959 -0
  68. package/src/runtime/agent/orchestrator/providers/media-normalization.mjs +213 -0
  69. package/src/runtime/agent/orchestrator/providers/model-cache.mjs +38 -0
  70. package/src/runtime/agent/orchestrator/providers/model-catalog.mjs +471 -0
  71. package/src/runtime/agent/orchestrator/providers/oauth-usage.mjs +615 -0
  72. package/src/runtime/agent/orchestrator/providers/openai-compat-stream.mjs +808 -0
  73. package/src/runtime/agent/orchestrator/providers/openai-compat.mjs +1719 -0
  74. package/src/runtime/agent/orchestrator/providers/openai-oauth-ws.mjs +2587 -0
  75. package/src/runtime/agent/orchestrator/providers/openai-oauth.mjs +1953 -0
  76. package/src/runtime/agent/orchestrator/providers/openai-ws.mjs +136 -0
  77. package/src/runtime/agent/orchestrator/providers/opencode-go-usage.mjs +317 -0
  78. package/src/runtime/agent/orchestrator/providers/opencode-go.mjs +109 -0
  79. package/src/runtime/agent/orchestrator/providers/registry.mjs +247 -0
  80. package/src/runtime/agent/orchestrator/providers/retry-classifier.mjs +332 -0
  81. package/src/runtime/agent/orchestrator/providers/statusline-route-meta.mjs +11 -0
  82. package/src/runtime/agent/orchestrator/providers/trace-utils.mjs +50 -0
  83. package/src/runtime/agent/orchestrator/session/cache/prefetch-cache.mjs +142 -0
  84. package/src/runtime/agent/orchestrator/session/cache/read-cache.mjs +318 -0
  85. package/src/runtime/agent/orchestrator/session/cache/scoped-cache.mjs +367 -0
  86. package/src/runtime/agent/orchestrator/session/compact.mjs +882 -0
  87. package/src/runtime/agent/orchestrator/session/context-utils.mjs +233 -0
  88. package/src/runtime/agent/orchestrator/session/loop.mjs +2320 -0
  89. package/src/runtime/agent/orchestrator/session/manager.mjs +2960 -0
  90. package/src/runtime/agent/orchestrator/session/result-classification.mjs +65 -0
  91. package/src/runtime/agent/orchestrator/session/store.mjs +663 -0
  92. package/src/runtime/agent/orchestrator/session/tool-result-offload.mjs +166 -0
  93. package/src/runtime/agent/orchestrator/smart-bridge/bridge-llm.mjs +339 -0
  94. package/src/runtime/agent/orchestrator/smart-bridge/cache-strategy.mjs +419 -0
  95. package/src/runtime/agent/orchestrator/stall-policy.mjs +227 -0
  96. package/src/runtime/agent/orchestrator/tool-loop-guard.mjs +235 -0
  97. package/src/runtime/agent/orchestrator/tools/bash-session.mjs +723 -0
  98. package/src/runtime/agent/orchestrator/tools/builtin/arg-guard.mjs +389 -0
  99. package/src/runtime/agent/orchestrator/tools/builtin/bash-tool.mjs +637 -0
  100. package/src/runtime/agent/orchestrator/tools/builtin/builtin-tools.mjs +165 -0
  101. package/src/runtime/agent/orchestrator/tools/builtin/fuzzy-match.mjs +104 -0
  102. package/src/runtime/agent/orchestrator/tools/builtin/glob-walk.mjs +194 -0
  103. package/src/runtime/agent/orchestrator/tools/builtin/list-tool.mjs +596 -0
  104. package/src/runtime/agent/orchestrator/tools/builtin/native-edit-runner.mjs +110 -0
  105. package/src/runtime/agent/orchestrator/tools/builtin/path-diagnostics.mjs +153 -0
  106. package/src/runtime/agent/orchestrator/tools/builtin/read-formatting.mjs +118 -0
  107. package/src/runtime/agent/orchestrator/tools/builtin/read-open.mjs +189 -0
  108. package/src/runtime/agent/orchestrator/tools/builtin/read-single-tool.mjs +731 -0
  109. package/src/runtime/agent/orchestrator/tools/builtin/read-snapshot-runtime.mjs +168 -0
  110. package/src/runtime/agent/orchestrator/tools/builtin/read-streaming.mjs +602 -0
  111. package/src/runtime/agent/orchestrator/tools/builtin/rg-runner.mjs +465 -0
  112. package/src/runtime/agent/orchestrator/tools/builtin/search-builders.mjs +160 -0
  113. package/src/runtime/agent/orchestrator/tools/builtin/search-tool.mjs +982 -0
  114. package/src/runtime/agent/orchestrator/tools/builtin/shell-jobs.mjs +1087 -0
  115. package/src/runtime/agent/orchestrator/tools/builtin/shell-runtime.mjs +231 -0
  116. package/src/runtime/agent/orchestrator/tools/builtin/snapshot-store.mjs +223 -0
  117. package/src/runtime/agent/orchestrator/tools/builtin.mjs +478 -0
  118. package/src/runtime/agent/orchestrator/tools/code-graph-tool-defs.mjs +24 -0
  119. package/src/runtime/agent/orchestrator/tools/code-graph.mjs +4102 -0
  120. package/src/runtime/agent/orchestrator/tools/destructive-warning.mjs +323 -0
  121. package/src/runtime/agent/orchestrator/tools/graph-binary-fetcher.mjs +154 -0
  122. package/src/runtime/agent/orchestrator/tools/graph-manifest.json +26 -0
  123. package/src/runtime/agent/orchestrator/tools/patch-binary-fetcher.mjs +143 -0
  124. package/src/runtime/agent/orchestrator/tools/patch-tool-defs.mjs +18 -0
  125. package/src/runtime/agent/orchestrator/tools/patch.mjs +2772 -0
  126. package/src/runtime/agent/orchestrator/tools/progress-message.mjs +114 -0
  127. package/src/runtime/agent/orchestrator/tools/shell-command.mjs +880 -0
  128. package/src/runtime/agent/orchestrator/tools/shell-snapshot.mjs +312 -0
  129. package/src/runtime/channels/backends/discord.mjs +781 -0
  130. package/src/runtime/channels/data/voice-runtime-manifest.json +138 -0
  131. package/src/runtime/channels/index.mjs +3309 -0
  132. package/src/runtime/channels/lib/config.mjs +285 -0
  133. package/src/runtime/channels/lib/drop-trace.mjs +71 -0
  134. package/src/runtime/channels/lib/event-pipeline.mjs +81 -0
  135. package/src/runtime/channels/lib/holidays.mjs +138 -0
  136. package/src/runtime/channels/lib/hook-pipe-server.mjs +671 -0
  137. package/src/runtime/channels/lib/output-forwarder.mjs +765 -0
  138. package/src/runtime/channels/lib/runtime-paths.mjs +497 -0
  139. package/src/runtime/channels/lib/scheduler.mjs +710 -0
  140. package/src/runtime/channels/lib/session-discovery.mjs +102 -0
  141. package/src/runtime/channels/lib/state-file.mjs +68 -0
  142. package/src/runtime/channels/lib/status-snapshot.mjs +224 -0
  143. package/src/runtime/channels/lib/tool-format.mjs +124 -0
  144. package/src/runtime/channels/lib/transcript-discovery.mjs +195 -0
  145. package/src/runtime/channels/lib/voice-runtime-fetcher.mjs +734 -0
  146. package/src/runtime/channels/lib/webhook.mjs +1288 -0
  147. package/src/runtime/channels/tool-defs.mjs +177 -0
  148. package/src/runtime/lib/keychain-cjs.cjs +289 -0
  149. package/src/runtime/memory/data/runtime-manifest.json +40 -0
  150. package/src/runtime/memory/index.mjs +3600 -0
  151. package/src/runtime/memory/lib/core-memory-store.mjs +336 -0
  152. package/src/runtime/memory/lib/embedding-provider.mjs +275 -0
  153. package/src/runtime/memory/lib/embedding-worker.mjs +331 -0
  154. package/src/runtime/memory/lib/memory-cycle-requests.mjs +276 -0
  155. package/src/runtime/memory/lib/memory-cycle1.mjs +783 -0
  156. package/src/runtime/memory/lib/memory-cycle2.mjs +1389 -0
  157. package/src/runtime/memory/lib/memory-cycle3.mjs +646 -0
  158. package/src/runtime/memory/lib/memory-embed.mjs +300 -0
  159. package/src/runtime/memory/lib/memory-ops-policy.mjs +149 -0
  160. package/src/runtime/memory/lib/memory-recall-store.mjs +644 -0
  161. package/src/runtime/memory/lib/memory.mjs +418 -0
  162. package/src/runtime/memory/lib/pg/adapter.mjs +314 -0
  163. package/src/runtime/memory/lib/pg/process.mjs +366 -0
  164. package/src/runtime/memory/lib/pg/supervisor.mjs +495 -0
  165. package/src/runtime/memory/lib/runtime-fetcher.mjs +464 -0
  166. package/src/runtime/memory/lib/trace-store.mjs +734 -0
  167. package/src/runtime/memory/tool-defs.mjs +79 -0
  168. package/src/runtime/search/index.mjs +925 -0
  169. package/src/runtime/search/lib/config.mjs +61 -0
  170. package/src/runtime/search/lib/web-tools.mjs +1278 -0
  171. package/src/runtime/search/tool-defs.mjs +64 -0
  172. package/src/runtime/shared/atomic-file.mjs +435 -0
  173. package/src/runtime/shared/background-tasks.mjs +376 -0
  174. package/src/runtime/shared/child-guardian.mjs +98 -0
  175. package/src/runtime/shared/config.mjs +393 -0
  176. package/src/runtime/shared/err-text.mjs +121 -0
  177. package/src/runtime/shared/launcher-control.mjs +259 -0
  178. package/src/runtime/shared/llm/cost.mjs +66 -0
  179. package/src/runtime/shared/llm/http-agent.mjs +129 -0
  180. package/src/runtime/shared/open-url.mjs +37 -0
  181. package/src/runtime/shared/plugin-paths.mjs +25 -0
  182. package/src/runtime/shared/process-shutdown.mjs +147 -0
  183. package/src/runtime/shared/schedules-store.mjs +70 -0
  184. package/src/runtime/shared/tool-execution-contract.mjs +104 -0
  185. package/src/runtime/shared/tool-surface.mjs +950 -0
  186. package/src/runtime/shared/user-cwd.mjs +221 -0
  187. package/src/runtime/shared/user-data-guard.mjs +232 -0
  188. package/src/runtime/shared/workspace-router.mjs +259 -0
  189. package/src/standalone/bridge-tool.mjs +1414 -0
  190. package/src/standalone/channel-admin.mjs +366 -0
  191. package/src/standalone/channel-worker-preload.cjs +3 -0
  192. package/src/standalone/channel-worker.mjs +353 -0
  193. package/src/standalone/explore-tool.mjs +233 -0
  194. package/src/standalone/hook-bus.mjs +246 -0
  195. package/src/standalone/plugin-admin.mjs +247 -0
  196. package/src/standalone/provider-admin.mjs +338 -0
  197. package/src/standalone/seeds.mjs +94 -0
  198. package/src/standalone/usage-dashboard.mjs +510 -0
  199. package/src/tui/App.jsx +5438 -0
  200. package/src/tui/components/AnsiText.jsx +199 -0
  201. package/src/tui/components/ContextPanel.jsx +217 -0
  202. package/src/tui/components/Markdown.jsx +205 -0
  203. package/src/tui/components/MarkdownTable.jsx +204 -0
  204. package/src/tui/components/Message.jsx +103 -0
  205. package/src/tui/components/Picker.jsx +317 -0
  206. package/src/tui/components/PromptInput.jsx +584 -0
  207. package/src/tui/components/QueuedCommands.jsx +47 -0
  208. package/src/tui/components/SlashCommandPalette.jsx +114 -0
  209. package/src/tui/components/Spinner.jsx +317 -0
  210. package/src/tui/components/StatusLine.jsx +87 -0
  211. package/src/tui/components/TextEntryPanel.jsx +323 -0
  212. package/src/tui/components/ToolExecution.jsx +772 -0
  213. package/src/tui/components/TurnDone.jsx +78 -0
  214. package/src/tui/components/UsagePanel.jsx +331 -0
  215. package/src/tui/dist/index.mjs +12359 -0
  216. package/src/tui/engine.mjs +2410 -0
  217. package/src/tui/figures.mjs +50 -0
  218. package/src/tui/hooks/useEngine.mjs +16 -0
  219. package/src/tui/index.jsx +254 -0
  220. package/src/tui/input-editing.mjs +242 -0
  221. package/src/tui/markdown/format-token.mjs +194 -0
  222. package/src/tui/paste-attachments.mjs +198 -0
  223. package/src/tui/runtime/shared/process-shutdown.mjs +1 -0
  224. package/src/tui/spinner-verbs.mjs +45 -0
  225. package/src/tui/theme.mjs +67 -0
  226. package/src/tui/time-format.mjs +53 -0
  227. package/src/ui/ansi.mjs +115 -0
  228. package/src/ui/markdown.mjs +195 -0
  229. package/src/ui/statusline.mjs +730 -0
  230. package/src/ui/tool-card.mjs +101 -0
  231. package/src/vendor/statusline/bin/statusline-lib.mjs +805 -0
  232. package/src/vendor/statusline/bin/statusline-route.mjs +596 -0
  233. package/src/vendor/statusline/scripts/lib/gateway-settings.mjs +285 -0
  234. package/src/vendor/statusline/src/gateway/claude-current.mjs +320 -0
  235. package/src/vendor/statusline/src/gateway/route-meta.mjs +753 -0
  236. package/src/vendor/statusline/src/gateway/session-routes.mjs +244 -0
  237. package/src/workflows/default/WORKFLOW.md +7 -0
  238. package/src/workflows/default/workflow.json +14 -0
  239. package/vendor/ink/build/ansi-tokenizer.d.ts +38 -0
  240. package/vendor/ink/build/ansi-tokenizer.js +316 -0
  241. package/vendor/ink/build/ansi-tokenizer.js.map +1 -0
  242. package/vendor/ink/build/colorize.d.ts +3 -0
  243. package/vendor/ink/build/colorize.js +48 -0
  244. package/vendor/ink/build/colorize.js.map +1 -0
  245. package/vendor/ink/build/components/AccessibilityContext.d.ts +3 -0
  246. package/vendor/ink/build/components/AccessibilityContext.js +5 -0
  247. package/vendor/ink/build/components/AccessibilityContext.js.map +1 -0
  248. package/vendor/ink/build/components/AnimationContext.d.ts +9 -0
  249. package/vendor/ink/build/components/AnimationContext.js +13 -0
  250. package/vendor/ink/build/components/AnimationContext.js.map +1 -0
  251. package/vendor/ink/build/components/App.d.ts +24 -0
  252. package/vendor/ink/build/components/App.js +554 -0
  253. package/vendor/ink/build/components/App.js.map +1 -0
  254. package/vendor/ink/build/components/AppContext.d.ts +80 -0
  255. package/vendor/ink/build/components/AppContext.js +25 -0
  256. package/vendor/ink/build/components/AppContext.js.map +1 -0
  257. package/vendor/ink/build/components/BackgroundContext.d.ts +4 -0
  258. package/vendor/ink/build/components/BackgroundContext.js +3 -0
  259. package/vendor/ink/build/components/BackgroundContext.js.map +1 -0
  260. package/vendor/ink/build/components/Box.d.ts +130 -0
  261. package/vendor/ink/build/components/Box.js +34 -0
  262. package/vendor/ink/build/components/Box.js.map +1 -0
  263. package/vendor/ink/build/components/CursorContext.d.ts +11 -0
  264. package/vendor/ink/build/components/CursorContext.js +8 -0
  265. package/vendor/ink/build/components/CursorContext.js.map +1 -0
  266. package/vendor/ink/build/components/ErrorBoundary.d.ts +18 -0
  267. package/vendor/ink/build/components/ErrorBoundary.js +23 -0
  268. package/vendor/ink/build/components/ErrorBoundary.js.map +1 -0
  269. package/vendor/ink/build/components/ErrorOverview.d.ts +6 -0
  270. package/vendor/ink/build/components/ErrorOverview.js +90 -0
  271. package/vendor/ink/build/components/ErrorOverview.js.map +1 -0
  272. package/vendor/ink/build/components/FocusContext.d.ts +16 -0
  273. package/vendor/ink/build/components/FocusContext.js +17 -0
  274. package/vendor/ink/build/components/FocusContext.js.map +1 -0
  275. package/vendor/ink/build/components/Newline.d.ts +13 -0
  276. package/vendor/ink/build/components/Newline.js +8 -0
  277. package/vendor/ink/build/components/Newline.js.map +1 -0
  278. package/vendor/ink/build/components/Spacer.d.ts +7 -0
  279. package/vendor/ink/build/components/Spacer.js +11 -0
  280. package/vendor/ink/build/components/Spacer.js.map +1 -0
  281. package/vendor/ink/build/components/Static.d.ts +24 -0
  282. package/vendor/ink/build/components/Static.js +28 -0
  283. package/vendor/ink/build/components/Static.js.map +1 -0
  284. package/vendor/ink/build/components/StderrContext.d.ts +15 -0
  285. package/vendor/ink/build/components/StderrContext.js +13 -0
  286. package/vendor/ink/build/components/StderrContext.js.map +1 -0
  287. package/vendor/ink/build/components/StdinContext.d.ts +28 -0
  288. package/vendor/ink/build/components/StdinContext.js +20 -0
  289. package/vendor/ink/build/components/StdinContext.js.map +1 -0
  290. package/vendor/ink/build/components/StdoutContext.d.ts +15 -0
  291. package/vendor/ink/build/components/StdoutContext.js +13 -0
  292. package/vendor/ink/build/components/StdoutContext.js.map +1 -0
  293. package/vendor/ink/build/components/Text.d.ts +55 -0
  294. package/vendor/ink/build/components/Text.js +50 -0
  295. package/vendor/ink/build/components/Text.js.map +1 -0
  296. package/vendor/ink/build/components/Transform.d.ts +16 -0
  297. package/vendor/ink/build/components/Transform.js +15 -0
  298. package/vendor/ink/build/components/Transform.js.map +1 -0
  299. package/vendor/ink/build/cursor-helpers.d.ts +39 -0
  300. package/vendor/ink/build/cursor-helpers.js +62 -0
  301. package/vendor/ink/build/cursor-helpers.js.map +1 -0
  302. package/vendor/ink/build/devtools-window-polyfill.d.ts +1 -0
  303. package/vendor/ink/build/devtools-window-polyfill.js +68 -0
  304. package/vendor/ink/build/devtools-window-polyfill.js.map +1 -0
  305. package/vendor/ink/build/devtools.d.ts +1 -0
  306. package/vendor/ink/build/devtools.js +36 -0
  307. package/vendor/ink/build/devtools.js.map +1 -0
  308. package/vendor/ink/build/dom.d.ts +62 -0
  309. package/vendor/ink/build/dom.js +143 -0
  310. package/vendor/ink/build/dom.js.map +1 -0
  311. package/vendor/ink/build/get-max-width.d.ts +3 -0
  312. package/vendor/ink/build/get-max-width.js +10 -0
  313. package/vendor/ink/build/get-max-width.js.map +1 -0
  314. package/vendor/ink/build/hooks/use-animation.d.ts +49 -0
  315. package/vendor/ink/build/hooks/use-animation.js +87 -0
  316. package/vendor/ink/build/hooks/use-animation.js.map +1 -0
  317. package/vendor/ink/build/hooks/use-app.d.ts +5 -0
  318. package/vendor/ink/build/hooks/use-app.js +8 -0
  319. package/vendor/ink/build/hooks/use-app.js.map +1 -0
  320. package/vendor/ink/build/hooks/use-box-metrics.d.ts +59 -0
  321. package/vendor/ink/build/hooks/use-box-metrics.js +81 -0
  322. package/vendor/ink/build/hooks/use-box-metrics.js.map +1 -0
  323. package/vendor/ink/build/hooks/use-cursor.d.ts +12 -0
  324. package/vendor/ink/build/hooks/use-cursor.js +29 -0
  325. package/vendor/ink/build/hooks/use-cursor.js.map +1 -0
  326. package/vendor/ink/build/hooks/use-focus-manager.d.ts +43 -0
  327. package/vendor/ink/build/hooks/use-focus-manager.js +18 -0
  328. package/vendor/ink/build/hooks/use-focus-manager.js.map +1 -0
  329. package/vendor/ink/build/hooks/use-focus.d.ts +30 -0
  330. package/vendor/ink/build/hooks/use-focus.js +43 -0
  331. package/vendor/ink/build/hooks/use-focus.js.map +1 -0
  332. package/vendor/ink/build/hooks/use-input.d.ts +132 -0
  333. package/vendor/ink/build/hooks/use-input.js +126 -0
  334. package/vendor/ink/build/hooks/use-input.js.map +1 -0
  335. package/vendor/ink/build/hooks/use-is-screen-reader-enabled.d.ts +6 -0
  336. package/vendor/ink/build/hooks/use-is-screen-reader-enabled.js +12 -0
  337. package/vendor/ink/build/hooks/use-is-screen-reader-enabled.js.map +1 -0
  338. package/vendor/ink/build/hooks/use-paste.d.ts +35 -0
  339. package/vendor/ink/build/hooks/use-paste.js +62 -0
  340. package/vendor/ink/build/hooks/use-paste.js.map +1 -0
  341. package/vendor/ink/build/hooks/use-stderr.d.ts +5 -0
  342. package/vendor/ink/build/hooks/use-stderr.js +8 -0
  343. package/vendor/ink/build/hooks/use-stderr.js.map +1 -0
  344. package/vendor/ink/build/hooks/use-stdin.d.ts +7 -0
  345. package/vendor/ink/build/hooks/use-stdin.js +9 -0
  346. package/vendor/ink/build/hooks/use-stdin.js.map +1 -0
  347. package/vendor/ink/build/hooks/use-stdout.d.ts +5 -0
  348. package/vendor/ink/build/hooks/use-stdout.js +8 -0
  349. package/vendor/ink/build/hooks/use-stdout.js.map +1 -0
  350. package/vendor/ink/build/hooks/use-window-size.d.ts +18 -0
  351. package/vendor/ink/build/hooks/use-window-size.js +22 -0
  352. package/vendor/ink/build/hooks/use-window-size.js.map +1 -0
  353. package/vendor/ink/build/index.d.ts +42 -0
  354. package/vendor/ink/build/index.js +24 -0
  355. package/vendor/ink/build/index.js.map +1 -0
  356. package/vendor/ink/build/ink.d.ts +146 -0
  357. package/vendor/ink/build/ink.js +1022 -0
  358. package/vendor/ink/build/ink.js.map +1 -0
  359. package/vendor/ink/build/input-parser.d.ts +10 -0
  360. package/vendor/ink/build/input-parser.js +194 -0
  361. package/vendor/ink/build/input-parser.js.map +1 -0
  362. package/vendor/ink/build/instances.d.ts +3 -0
  363. package/vendor/ink/build/instances.js +8 -0
  364. package/vendor/ink/build/instances.js.map +1 -0
  365. package/vendor/ink/build/kitty-keyboard.d.ts +23 -0
  366. package/vendor/ink/build/kitty-keyboard.js +32 -0
  367. package/vendor/ink/build/kitty-keyboard.js.map +1 -0
  368. package/vendor/ink/build/log-update.d.ts +20 -0
  369. package/vendor/ink/build/log-update.js +261 -0
  370. package/vendor/ink/build/log-update.js.map +1 -0
  371. package/vendor/ink/build/measure-element.d.ts +20 -0
  372. package/vendor/ink/build/measure-element.js +13 -0
  373. package/vendor/ink/build/measure-element.js.map +1 -0
  374. package/vendor/ink/build/measure-text.d.ts +6 -0
  375. package/vendor/ink/build/measure-text.js +21 -0
  376. package/vendor/ink/build/measure-text.js.map +1 -0
  377. package/vendor/ink/build/output.d.ts +35 -0
  378. package/vendor/ink/build/output.js +328 -0
  379. package/vendor/ink/build/output.js.map +1 -0
  380. package/vendor/ink/build/parse-keypress.d.ts +20 -0
  381. package/vendor/ink/build/parse-keypress.js +495 -0
  382. package/vendor/ink/build/parse-keypress.js.map +1 -0
  383. package/vendor/ink/build/reconciler.d.ts +4 -0
  384. package/vendor/ink/build/reconciler.js +306 -0
  385. package/vendor/ink/build/reconciler.js.map +1 -0
  386. package/vendor/ink/build/render-background.d.ts +4 -0
  387. package/vendor/ink/build/render-background.js +25 -0
  388. package/vendor/ink/build/render-background.js.map +1 -0
  389. package/vendor/ink/build/render-border.d.ts +4 -0
  390. package/vendor/ink/build/render-border.js +84 -0
  391. package/vendor/ink/build/render-border.js.map +1 -0
  392. package/vendor/ink/build/render-node-to-output.d.ts +14 -0
  393. package/vendor/ink/build/render-node-to-output.js +162 -0
  394. package/vendor/ink/build/render-node-to-output.js.map +1 -0
  395. package/vendor/ink/build/render-to-string.d.ts +38 -0
  396. package/vendor/ink/build/render-to-string.js +116 -0
  397. package/vendor/ink/build/render-to-string.js.map +1 -0
  398. package/vendor/ink/build/render.d.ts +176 -0
  399. package/vendor/ink/build/render.js +71 -0
  400. package/vendor/ink/build/render.js.map +1 -0
  401. package/vendor/ink/build/renderer.d.ts +8 -0
  402. package/vendor/ink/build/renderer.js +64 -0
  403. package/vendor/ink/build/renderer.js.map +1 -0
  404. package/vendor/ink/build/sanitize-ansi.d.ts +2 -0
  405. package/vendor/ink/build/sanitize-ansi.js +27 -0
  406. package/vendor/ink/build/sanitize-ansi.js.map +1 -0
  407. package/vendor/ink/build/squash-text-nodes.d.ts +3 -0
  408. package/vendor/ink/build/squash-text-nodes.js +36 -0
  409. package/vendor/ink/build/squash-text-nodes.js.map +1 -0
  410. package/vendor/ink/build/styles.d.ts +302 -0
  411. package/vendor/ink/build/styles.js +303 -0
  412. package/vendor/ink/build/styles.js.map +1 -0
  413. package/vendor/ink/build/utils.d.ts +9 -0
  414. package/vendor/ink/build/utils.js +19 -0
  415. package/vendor/ink/build/utils.js.map +1 -0
  416. package/vendor/ink/build/wrap-text.d.ts +3 -0
  417. package/vendor/ink/build/wrap-text.js +38 -0
  418. package/vendor/ink/build/wrap-text.js.map +1 -0
  419. package/vendor/ink/build/write-synchronized.d.ts +4 -0
  420. package/vendor/ink/build/write-synchronized.js +9 -0
  421. package/vendor/ink/build/write-synchronized.js.map +1 -0
  422. package/vendor/ink/license +10 -0
  423. package/vendor/ink/package.json +137 -0
  424. package/.claude-plugin/marketplace.json +0 -34
  425. package/.claude-plugin/plugin.json +0 -20
  426. package/.gitattributes +0 -34
  427. package/.mcp.json +0 -14
  428. package/ARCHITECTURE.md +0 -77
  429. package/CHANGELOG.md +0 -30
  430. package/CONTRIBUTING.md +0 -45
  431. package/DATA-FLOW.md +0 -79
  432. package/LICENSE +0 -21
  433. package/SECURITY.md +0 -138
  434. package/UNINSTALL.md +0 -112
  435. package/agents/maintenance.md +0 -5
  436. package/agents/memory-classification.md +0 -30
  437. package/agents/scheduler-task.md +0 -18
  438. package/agents/webhook-handler.md +0 -27
  439. package/agents/worker.md +0 -24
  440. package/bin/bridge +0 -133
  441. package/bin/statusline-launcher.mjs +0 -82
  442. package/bin/statusline-lib.mjs +0 -558
  443. package/bin/statusline.mjs +0 -615
  444. package/bun.lock +0 -927
  445. package/commands/config.md +0 -16
  446. package/commands/doctor.md +0 -13
  447. package/commands/setup.md +0 -17
  448. package/defaults/hidden-roles.json +0 -68
  449. package/defaults/memory-chunk-prompt.md +0 -63
  450. package/defaults/mixdog-config.template.json +0 -27
  451. package/defaults/user-workflow.json +0 -8
  452. package/defaults/user-workflow.md +0 -17
  453. package/hooks/hooks.json +0 -73
  454. package/hooks/lib/active-instance.cjs +0 -77
  455. package/hooks/lib/permission-evaluator.cjs +0 -411
  456. package/hooks/lib/permission-route.cjs +0 -63
  457. package/hooks/lib/settings-loader.cjs +0 -117
  458. package/hooks/post-tool-use.cjs +0 -84
  459. package/hooks/pre-mcp-sandbox.cjs +0 -158
  460. package/hooks/pre-tool-subagent.cjs +0 -258
  461. package/hooks/session-start.cjs +0 -1479
  462. package/hooks/shim-launcher.cjs +0 -65
  463. package/hooks/turn-timer.cjs +0 -82
  464. package/lib/claude-md-writer.cjs +0 -386
  465. package/lib/keychain-cjs.cjs +0 -290
  466. package/lib/plugin-paths.cjs +0 -69
  467. package/lib/rules-builder.cjs +0 -241
  468. package/native/README.md +0 -117
  469. package/native/prebuilt/linux-aarch64/mixdog-shim +0 -0
  470. package/native/prebuilt/linux-x86_64/mixdog-shim +0 -0
  471. package/native/prebuilt/macos-aarch64/mixdog-shim +0 -0
  472. package/native/prebuilt/macos-x86_64/mixdog-shim +0 -0
  473. package/native/prebuilt/windows-x86_64/mixdog-shim.exe +0 -0
  474. package/prompts/code-review.txt +0 -16
  475. package/prompts/security-audit.txt +0 -17
  476. package/rules/bridge/00-common.md +0 -39
  477. package/rules/bridge/20-skip-protocol.md +0 -18
  478. package/rules/bridge/30-explorer.md +0 -33
  479. package/rules/bridge/40-cycle1-agent.md +0 -52
  480. package/rules/bridge/41-cycle2-agent.md +0 -62
  481. package/rules/lead/00-tool-lead.md +0 -61
  482. package/rules/lead/01-general.md +0 -23
  483. package/rules/lead/02-channels.md +0 -49
  484. package/rules/lead/03-team.md +0 -27
  485. package/rules/lead/04-workflow.md +0 -20
  486. package/rules/shared/00-language.md +0 -14
  487. package/rules/shared/01-tool.md +0 -138
  488. package/scripts/bootstrap.mjs +0 -130
  489. package/scripts/bridge-unify-smoke.mjs +0 -308
  490. package/scripts/build-runtime-linux.sh +0 -348
  491. package/scripts/build-runtime-macos.sh +0 -217
  492. package/scripts/build-runtime-windows.ps1 +0 -242
  493. package/scripts/builtin-utils-smoke.mjs +0 -398
  494. package/scripts/bump.mjs +0 -80
  495. package/scripts/check-json.mjs +0 -45
  496. package/scripts/check-syntax-changed.mjs +0 -102
  497. package/scripts/check-syntax.mjs +0 -58
  498. package/scripts/code-graph-batch.test.mjs +0 -33
  499. package/scripts/config-preserve-smoke.mjs +0 -180
  500. package/scripts/doctor.mjs +0 -489
  501. package/scripts/edit-normalize-fuzz.mjs +0 -130
  502. package/scripts/edit-normalize-smoke.mjs +0 -401
  503. package/scripts/edit-operation-smoke.mjs +0 -369
  504. package/scripts/edit2-smoke.mjs +0 -63
  505. package/scripts/ensure-deps.mjs +0 -259
  506. package/scripts/fuzzy-e2e.mjs +0 -28
  507. package/scripts/fuzzy-smoke.mjs +0 -26
  508. package/scripts/generate-runtime-manifest.mjs +0 -166
  509. package/scripts/guard-smoke.mjs +0 -66
  510. package/scripts/hidden-role-schema-smoke.mjs +0 -162
  511. package/scripts/hook-routing-smoke.mjs +0 -29
  512. package/scripts/inject-input.ps1 +0 -204
  513. package/scripts/io-complex-smoke.mjs +0 -667
  514. package/scripts/io-explore-bench.mjs +0 -424
  515. package/scripts/io-guardrails-smoke.mjs +0 -205
  516. package/scripts/io-mini-bench-baseline.json +0 -11
  517. package/scripts/io-mini-bench.mjs +0 -216
  518. package/scripts/io-route-harness.mjs +0 -933
  519. package/scripts/io-telemetry-report.mjs +0 -691
  520. package/scripts/mutation-bench.mjs +0 -564
  521. package/scripts/mutation-io-smoke.mjs +0 -1097
  522. package/scripts/native-patch-bridge-smoke.mjs +0 -288
  523. package/scripts/native-patch-smoke.mjs +0 -304
  524. package/scripts/openai-oauth-catalog-smoke.mjs +0 -53
  525. package/scripts/patch-interior-context-smoke.mjs +0 -49
  526. package/scripts/patch-newline-utf8-smoke.mjs +0 -157
  527. package/scripts/perf-hook-smoke.mjs +0 -71
  528. package/scripts/permission-eval-smoke.mjs +0 -443
  529. package/scripts/prep-patch.mjs +0 -53
  530. package/scripts/prep-shim.mjs +0 -96
  531. package/scripts/provider-cache-smoke.mjs +0 -687
  532. package/scripts/report-runtime-health.mjs +0 -132
  533. package/scripts/resolve-bun.mjs +0 -60
  534. package/scripts/run-mcp.mjs +0 -1448
  535. package/scripts/salvage-v4a-shatter.test.mjs +0 -58
  536. package/scripts/scoped-cache-io-smoke.mjs +0 -103
  537. package/scripts/shell-policy-round3-smoke.mjs +0 -46
  538. package/scripts/smoke-runtime-negative.ps1 +0 -100
  539. package/scripts/smoke-runtime-negative.sh +0 -95
  540. package/scripts/stall-policy-smoke.mjs +0 -50
  541. package/scripts/start-memory-worker.mjs +0 -23
  542. package/scripts/statusline-launcher-smoke.mjs +0 -82
  543. package/scripts/stress-atomic-write.mjs +0 -1028
  544. package/scripts/test-fault-inject.mjs +0 -164
  545. package/scripts/test-large-file.mjs +0 -174
  546. package/scripts/tool-edge-smoke.mjs +0 -209
  547. package/scripts/uninstall.mjs +0 -201
  548. package/scripts/webhook-selfheal-smoke.mjs +0 -27
  549. package/scripts/write-overwrite-guard-smoke.mjs +0 -56
  550. package/server-main.mjs +0 -3109
  551. package/server.mjs +0 -468
  552. package/setup/config-merge.mjs +0 -246
  553. package/setup/install.mjs +0 -574
  554. package/setup/launch-core.mjs +0 -617
  555. package/setup/launch.mjs +0 -101
  556. package/setup/locate-claude.mjs +0 -56
  557. package/setup/mixdog-cli.mjs +0 -122
  558. package/setup/setup-server.mjs +0 -3305
  559. package/setup/setup.html +0 -3740
  560. package/setup/tui.mjs +0 -325
  561. package/skills/retro-skill-proposer/SKILL.md +0 -92
  562. package/skills/schedule-add/SKILL.md +0 -77
  563. package/skills/setup/SKILL.md +0 -356
  564. package/skills/webhook-add/SKILL.md +0 -81
  565. package/src/agent/bridge-stall-watchdog.mjs +0 -337
  566. package/src/agent/index.mjs +0 -2138
  567. package/src/agent/orchestrator/ai-wrapped-dispatch.mjs +0 -1010
  568. package/src/agent/orchestrator/bridge-retry.mjs +0 -220
  569. package/src/agent/orchestrator/bridge-trace.mjs +0 -583
  570. package/src/agent/orchestrator/cache-mtime.mjs +0 -58
  571. package/src/agent/orchestrator/config.mjs +0 -405
  572. package/src/agent/orchestrator/context/collect.mjs +0 -651
  573. package/src/agent/orchestrator/dispatch-persist.mjs +0 -549
  574. package/src/agent/orchestrator/drain-registry.mjs +0 -50
  575. package/src/agent/orchestrator/explore-validator.mjs +0 -8
  576. package/src/agent/orchestrator/internal-roles.mjs +0 -118
  577. package/src/agent/orchestrator/internal-tools.mjs +0 -88
  578. package/src/agent/orchestrator/jobs.mjs +0 -116
  579. package/src/agent/orchestrator/mcp/client.mjs +0 -364
  580. package/src/agent/orchestrator/providers/anthropic-oauth.mjs +0 -1881
  581. package/src/agent/orchestrator/providers/anthropic.mjs +0 -594
  582. package/src/agent/orchestrator/providers/gemini.mjs +0 -1530
  583. package/src/agent/orchestrator/providers/grok-oauth.mjs +0 -779
  584. package/src/agent/orchestrator/providers/model-catalog.mjs +0 -374
  585. package/src/agent/orchestrator/providers/openai-compat-stream.mjs +0 -366
  586. package/src/agent/orchestrator/providers/openai-compat.mjs +0 -1511
  587. package/src/agent/orchestrator/providers/openai-oauth-ws.mjs +0 -1891
  588. package/src/agent/orchestrator/providers/openai-oauth.mjs +0 -1456
  589. package/src/agent/orchestrator/providers/openai-ws.mjs +0 -127
  590. package/src/agent/orchestrator/providers/registry.mjs +0 -192
  591. package/src/agent/orchestrator/providers/retry-classifier.mjs +0 -325
  592. package/src/agent/orchestrator/session/cache/prefetch-cache.mjs +0 -142
  593. package/src/agent/orchestrator/session/cache/read-cache.mjs +0 -319
  594. package/src/agent/orchestrator/session/cache/scoped-cache.mjs +0 -361
  595. package/src/agent/orchestrator/session/loop.mjs +0 -1478
  596. package/src/agent/orchestrator/session/manager.mjs +0 -1991
  597. package/src/agent/orchestrator/session/result-classification.mjs +0 -65
  598. package/src/agent/orchestrator/session/store.mjs +0 -632
  599. package/src/agent/orchestrator/session/stream-watchdog.mjs +0 -130
  600. package/src/agent/orchestrator/session/tool-result-offload.mjs +0 -166
  601. package/src/agent/orchestrator/session/trim.mjs +0 -491
  602. package/src/agent/orchestrator/smart-bridge/CACHE-SHARD.md +0 -115
  603. package/src/agent/orchestrator/smart-bridge/bridge-llm.mjs +0 -331
  604. package/src/agent/orchestrator/smart-bridge/cache-obs.mjs +0 -150
  605. package/src/agent/orchestrator/smart-bridge/cache-strategy.mjs +0 -228
  606. package/src/agent/orchestrator/smart-bridge/index.mjs +0 -215
  607. package/src/agent/orchestrator/smart-bridge/profiles.mjs +0 -37
  608. package/src/agent/orchestrator/smart-bridge/registry.mjs +0 -348
  609. package/src/agent/orchestrator/stall-policy.mjs +0 -201
  610. package/src/agent/orchestrator/tool-loop-guard.mjs +0 -75
  611. package/src/agent/orchestrator/tools/bash-session.mjs +0 -722
  612. package/src/agent/orchestrator/tools/builtin/arg-guard.mjs +0 -455
  613. package/src/agent/orchestrator/tools/builtin/bash-tool.mjs +0 -480
  614. package/src/agent/orchestrator/tools/builtin/builtin-tools.mjs +0 -256
  615. package/src/agent/orchestrator/tools/builtin/edit-base-guard.mjs +0 -58
  616. package/src/agent/orchestrator/tools/builtin/edit-byte-plan.mjs +0 -240
  617. package/src/agent/orchestrator/tools/builtin/edit-byte-utils.mjs +0 -113
  618. package/src/agent/orchestrator/tools/builtin/edit-commit.mjs +0 -74
  619. package/src/agent/orchestrator/tools/builtin/edit-context-utils.mjs +0 -242
  620. package/src/agent/orchestrator/tools/builtin/edit-diagnostics.mjs +0 -211
  621. package/src/agent/orchestrator/tools/builtin/edit-engine.mjs +0 -1364
  622. package/src/agent/orchestrator/tools/builtin/edit-failure-context.mjs +0 -126
  623. package/src/agent/orchestrator/tools/builtin/edit-hint.mjs +0 -141
  624. package/src/agent/orchestrator/tools/builtin/edit-match-utils.mjs +0 -194
  625. package/src/agent/orchestrator/tools/builtin/edit-partial-write.mjs +0 -60
  626. package/src/agent/orchestrator/tools/builtin/edit-stale-refresh.mjs +0 -168
  627. package/src/agent/orchestrator/tools/builtin/edit-tool.mjs +0 -173
  628. package/src/agent/orchestrator/tools/builtin/edit-utf8-guard.mjs +0 -48
  629. package/src/agent/orchestrator/tools/builtin/fuzzy-match.mjs +0 -99
  630. package/src/agent/orchestrator/tools/builtin/glob-walk.mjs +0 -193
  631. package/src/agent/orchestrator/tools/builtin/list-tool.mjs +0 -597
  632. package/src/agent/orchestrator/tools/builtin/native-edit-runner.mjs +0 -110
  633. package/src/agent/orchestrator/tools/builtin/notebook-edit-tool.mjs +0 -300
  634. package/src/agent/orchestrator/tools/builtin/path-diagnostics.mjs +0 -152
  635. package/src/agent/orchestrator/tools/builtin/read-formatting.mjs +0 -118
  636. package/src/agent/orchestrator/tools/builtin/read-open.mjs +0 -190
  637. package/src/agent/orchestrator/tools/builtin/read-single-tool.mjs +0 -728
  638. package/src/agent/orchestrator/tools/builtin/read-snapshot-runtime.mjs +0 -173
  639. package/src/agent/orchestrator/tools/builtin/read-streaming.mjs +0 -602
  640. package/src/agent/orchestrator/tools/builtin/rename-tool.mjs +0 -196
  641. package/src/agent/orchestrator/tools/builtin/rg-runner.mjs +0 -422
  642. package/src/agent/orchestrator/tools/builtin/search-builders.mjs +0 -158
  643. package/src/agent/orchestrator/tools/builtin/search-tool.mjs +0 -869
  644. package/src/agent/orchestrator/tools/builtin/shell-jobs.mjs +0 -962
  645. package/src/agent/orchestrator/tools/builtin/shell-runtime.mjs +0 -223
  646. package/src/agent/orchestrator/tools/builtin/snapshot-store.mjs +0 -206
  647. package/src/agent/orchestrator/tools/builtin/write-tool.mjs +0 -401
  648. package/src/agent/orchestrator/tools/builtin.mjs +0 -503
  649. package/src/agent/orchestrator/tools/code-graph-tool-defs.mjs +0 -24
  650. package/src/agent/orchestrator/tools/code-graph.mjs +0 -4095
  651. package/src/agent/orchestrator/tools/cwd-tool.mjs +0 -298
  652. package/src/agent/orchestrator/tools/destructive-warning.mjs +0 -323
  653. package/src/agent/orchestrator/tools/edit-normalize.mjs +0 -603
  654. package/src/agent/orchestrator/tools/graph-binary-fetcher.mjs +0 -154
  655. package/src/agent/orchestrator/tools/graph-manifest.json +0 -26
  656. package/src/agent/orchestrator/tools/host-input.mjs +0 -204
  657. package/src/agent/orchestrator/tools/patch-binary-fetcher.mjs +0 -143
  658. package/src/agent/orchestrator/tools/patch-manifest.json +0 -26
  659. package/src/agent/orchestrator/tools/patch-tool-defs.mjs +0 -20
  660. package/src/agent/orchestrator/tools/patch.mjs +0 -2754
  661. package/src/agent/orchestrator/tools/progress-message.mjs +0 -118
  662. package/src/agent/orchestrator/tools/shell-command.mjs +0 -865
  663. package/src/agent/orchestrator/tools/shell-policy-imports.mjs +0 -7
  664. package/src/agent/orchestrator/tools/shell-snapshot.mjs +0 -313
  665. package/src/agent/orchestrator/workflow-store.mjs +0 -93
  666. package/src/agent/tool-defs.mjs +0 -103
  667. package/src/channels/backends/discord.mjs +0 -784
  668. package/src/channels/data/voice-runtime-manifest.json +0 -138
  669. package/src/channels/index.mjs +0 -3268
  670. package/src/channels/lib/config.mjs +0 -292
  671. package/src/channels/lib/drop-trace.mjs +0 -71
  672. package/src/channels/lib/event-pipeline.mjs +0 -81
  673. package/src/channels/lib/holidays.mjs +0 -138
  674. package/src/channels/lib/hook-pipe-server.mjs +0 -822
  675. package/src/channels/lib/output-forwarder.mjs +0 -765
  676. package/src/channels/lib/runtime-paths.mjs +0 -517
  677. package/src/channels/lib/scheduler.mjs +0 -723
  678. package/src/channels/lib/session-discovery.mjs +0 -103
  679. package/src/channels/lib/state-file.mjs +0 -68
  680. package/src/channels/lib/status-snapshot.mjs +0 -219
  681. package/src/channels/lib/tool-format.mjs +0 -140
  682. package/src/channels/lib/transcript-discovery.mjs +0 -195
  683. package/src/channels/lib/voice-runtime-fetcher.mjs +0 -734
  684. package/src/channels/lib/webhook.mjs +0 -1318
  685. package/src/channels/tool-defs.mjs +0 -170
  686. package/src/daemon/host.mjs +0 -118
  687. package/src/daemon/mcp-transport.mjs +0 -47
  688. package/src/daemon/session.mjs +0 -100
  689. package/src/daemon/thin-client.mjs +0 -71
  690. package/src/daemon/transport.mjs +0 -163
  691. package/src/memory/data/runtime-manifest.json +0 -40
  692. package/src/memory/index.mjs +0 -3332
  693. package/src/memory/lib/core-memory-store.mjs +0 -330
  694. package/src/memory/lib/embedding-provider.mjs +0 -269
  695. package/src/memory/lib/embedding-worker.mjs +0 -323
  696. package/src/memory/lib/memory-cycle1.mjs +0 -645
  697. package/src/memory/lib/memory-cycle2.mjs +0 -1284
  698. package/src/memory/lib/memory-cycle3.mjs +0 -540
  699. package/src/memory/lib/memory-embed.mjs +0 -299
  700. package/src/memory/lib/memory-ops-policy.mjs +0 -190
  701. package/src/memory/lib/memory-recall-store.mjs +0 -638
  702. package/src/memory/lib/memory.mjs +0 -412
  703. package/src/memory/lib/pg/adapter.mjs +0 -308
  704. package/src/memory/lib/pg/process.mjs +0 -360
  705. package/src/memory/lib/pg/supervisor.mjs +0 -396
  706. package/src/memory/lib/runtime-fetcher.mjs +0 -458
  707. package/src/memory/lib/trace-store.mjs +0 -728
  708. package/src/memory/tool-defs.mjs +0 -79
  709. package/src/search/index.mjs +0 -1173
  710. package/src/search/lib/backends/anthropic-oauth.mjs +0 -98
  711. package/src/search/lib/backends/exa.mjs +0 -50
  712. package/src/search/lib/backends/firecrawl.mjs +0 -61
  713. package/src/search/lib/backends/gemini-api.mjs +0 -83
  714. package/src/search/lib/backends/grok-oauth.mjs +0 -86
  715. package/src/search/lib/backends/index.mjs +0 -150
  716. package/src/search/lib/backends/openai-api.mjs +0 -144
  717. package/src/search/lib/backends/openai-oauth.mjs +0 -102
  718. package/src/search/lib/backends/openai-web-search.mjs +0 -76
  719. package/src/search/lib/backends/tavily.mjs +0 -55
  720. package/src/search/lib/backends/xai-api.mjs +0 -113
  721. package/src/search/lib/config.mjs +0 -192
  722. package/src/search/lib/provider-usage.mjs +0 -67
  723. package/src/search/lib/providers.mjs +0 -47
  724. package/src/search/lib/search-intent.mjs +0 -109
  725. package/src/search/lib/setup-handler.mjs +0 -261
  726. package/src/search/lib/web-tools.mjs +0 -1219
  727. package/src/search/tool-defs.mjs +0 -83
  728. package/src/setup/defender-exclusion.mjs +0 -183
  729. package/src/shared/atomic-file.mjs +0 -436
  730. package/src/shared/config.mjs +0 -372
  731. package/src/shared/daemon-recycle.mjs +0 -108
  732. package/src/shared/disable-claude-builtins.mjs +0 -91
  733. package/src/shared/err-text.mjs +0 -12
  734. package/src/shared/llm/cost.mjs +0 -66
  735. package/src/shared/llm/http-agent.mjs +0 -123
  736. package/src/shared/open-url.mjs +0 -62
  737. package/src/shared/plugin-paths.mjs +0 -58
  738. package/src/shared/schedules-store.mjs +0 -70
  739. package/src/shared/seed.mjs +0 -136
  740. package/src/shared/user-cwd.mjs +0 -225
  741. package/src/shared/user-data-guard.mjs +0 -244
  742. package/src/status/aggregator.mjs +0 -584
  743. package/src/status/server.mjs +0 -413
  744. package/tools.json +0 -1653
  745. /package/{defaults → src/defaults}/cycle3-review-prompt.md +0 -0
  746. /package/{defaults → src/defaults}/memory-promote-prompt.md +0 -0
  747. /package/{hooks → src/hooks}/lib/permission-rules.cjs +0 -0
  748. /package/{lib → src/lib}/config-cjs.cjs +0 -0
  749. /package/{lib → src/lib}/hook-pipe-path.cjs +0 -0
  750. /package/{lib → src/lib}/mixdog-debug.cjs +0 -0
  751. /package/{lib → src/lib}/text-utils.cjs +0 -0
  752. /package/{rules → src/rules}/bridge/42-cycle3-agent.md +0 -0
  753. /package/src/{agent → runtime/agent}/orchestrator/activity-bus.mjs +0 -0
  754. /package/src/{agent → runtime/agent}/orchestrator/providers/anthropic-betas.mjs +0 -0
  755. /package/src/{agent → runtime/agent}/orchestrator/session/abort-lookup.mjs +0 -0
  756. /package/src/{agent → runtime/agent}/orchestrator/session/cache/post-edit-marks.mjs +0 -0
  757. /package/src/{agent → runtime/agent}/orchestrator/session/cache/scoped-cache-outcome.mjs +0 -0
  758. /package/src/{agent → runtime/agent}/orchestrator/session/cache/util.mjs +0 -0
  759. /package/src/{agent → runtime/agent}/orchestrator/session/read-dedup.mjs +0 -0
  760. /package/src/{agent → runtime/agent}/orchestrator/session/save-session-worker.mjs +0 -0
  761. /package/src/{agent → runtime/agent}/orchestrator/smart-bridge/session-builder.mjs +0 -0
  762. /package/src/{agent → runtime/agent}/orchestrator/tools/bash-policy-scan.mjs +0 -0
  763. /package/src/{agent → runtime/agent}/orchestrator/tools/builtin/advisory-lock.mjs +0 -0
  764. /package/src/{agent → runtime/agent}/orchestrator/tools/builtin/atomic-write.mjs +0 -0
  765. /package/src/{agent → runtime/agent}/orchestrator/tools/builtin/binary-file.mjs +0 -0
  766. /package/src/{agent → runtime/agent}/orchestrator/tools/builtin/cache-layers.mjs +0 -0
  767. /package/src/{agent → runtime/agent}/orchestrator/tools/builtin/cwd-utils.mjs +0 -0
  768. /package/src/{agent → runtime/agent}/orchestrator/tools/builtin/device-paths.mjs +0 -0
  769. /package/src/{agent → runtime/agent}/orchestrator/tools/builtin/diagnostics-tool.mjs +0 -0
  770. /package/src/{agent → runtime/agent}/orchestrator/tools/builtin/diff-utils.mjs +0 -0
  771. /package/src/{agent → runtime/agent}/orchestrator/tools/builtin/fs-reachability.mjs +0 -0
  772. /package/src/{agent → runtime/agent}/orchestrator/tools/builtin/grep-formatting.mjs +0 -0
  773. /package/src/{agent → runtime/agent}/orchestrator/tools/builtin/hash-utils.mjs +0 -0
  774. /package/src/{agent → runtime/agent}/orchestrator/tools/builtin/list-formatting.mjs +0 -0
  775. /package/src/{agent → runtime/agent}/orchestrator/tools/builtin/open-config-tool.mjs +0 -0
  776. /package/src/{agent → runtime/agent}/orchestrator/tools/builtin/path-locks.mjs +0 -0
  777. /package/src/{agent → runtime/agent}/orchestrator/tools/builtin/path-utils.mjs +0 -0
  778. /package/src/{agent → runtime/agent}/orchestrator/tools/builtin/read-args.mjs +0 -0
  779. /package/src/{agent → runtime/agent}/orchestrator/tools/builtin/read-batch.mjs +0 -0
  780. /package/src/{agent → runtime/agent}/orchestrator/tools/builtin/read-constants.mjs +0 -0
  781. /package/src/{agent → runtime/agent}/orchestrator/tools/builtin/read-image-resize.mjs +0 -0
  782. /package/src/{agent → runtime/agent}/orchestrator/tools/builtin/read-image.mjs +0 -0
  783. /package/src/{agent → runtime/agent}/orchestrator/tools/builtin/read-lines.mjs +0 -0
  784. /package/src/{agent → runtime/agent}/orchestrator/tools/builtin/read-mode-tool.mjs +0 -0
  785. /package/src/{agent → runtime/agent}/orchestrator/tools/builtin/read-range-index.mjs +0 -0
  786. /package/src/{agent → runtime/agent}/orchestrator/tools/builtin/read-ranges.mjs +0 -0
  787. /package/src/{agent → runtime/agent}/orchestrator/tools/builtin/read-special-files.mjs +0 -0
  788. /package/src/{agent → runtime/agent}/orchestrator/tools/builtin/read-tool.mjs +0 -0
  789. /package/src/{agent → runtime/agent}/orchestrator/tools/builtin/read-windows.mjs +0 -0
  790. /package/src/{agent → runtime/agent}/orchestrator/tools/builtin/shell-analysis.mjs +0 -0
  791. /package/src/{agent → runtime/agent}/orchestrator/tools/builtin/shell-output.mjs +0 -0
  792. /package/src/{agent → runtime/agent}/orchestrator/tools/builtin/snapshot-helpers.mjs +0 -0
  793. /package/src/{agent → runtime/agent}/orchestrator/tools/builtin/snapshot-validation.mjs +0 -0
  794. /package/src/{agent → runtime/agent}/orchestrator/tools/builtin/text-stats.mjs +0 -0
  795. /package/src/{agent → runtime/agent}/orchestrator/tools/builtin/windows-roots.mjs +0 -0
  796. /package/src/{agent → runtime/agent}/orchestrator/tools/code-graph-prewarm-worker.mjs +0 -0
  797. /package/src/{agent → runtime/agent}/orchestrator/tools/env-scrub.mjs +0 -0
  798. /package/src/{agent → runtime/agent}/orchestrator/tools/mutation-content-cache.mjs +0 -0
  799. /package/src/{agent → runtime/agent}/orchestrator/tools/mutation-planner.mjs +0 -0
  800. /package/src/{agent → runtime/agent}/orchestrator/tools/next-call-utils.mjs +0 -0
  801. /package/src/{agent → runtime/agent}/orchestrator/tools/result-compression.mjs +0 -0
  802. /package/src/{agent → runtime/agent}/orchestrator/tools/shell-exec-policy.mjs +0 -0
  803. /package/src/{agent → runtime/agent}/orchestrator/tools/shell-policy-danger-target.mjs +0 -0
  804. /package/src/{agent → runtime/agent}/orchestrator/tools/shell-policy.mjs +0 -0
  805. /package/src/{channels → runtime/channels}/lib/cli-worker-host.mjs +0 -0
  806. /package/src/{channels → runtime/channels}/lib/config-lock.mjs +0 -0
  807. /package/src/{channels → runtime/channels}/lib/event-queue.mjs +0 -0
  808. /package/src/{channels → runtime/channels}/lib/executor.mjs +0 -0
  809. /package/src/{channels → runtime/channels}/lib/format.mjs +0 -0
  810. /package/src/{channels → runtime/channels}/lib/interaction-workflows.mjs +0 -0
  811. /package/src/{channels → runtime/channels}/lib/memory-client.mjs +0 -0
  812. /package/src/{channels → runtime/channels}/lib/session-control.mjs +0 -0
  813. /package/src/{channels → runtime/channels}/lib/settings.mjs +0 -0
  814. /package/src/{channels → runtime/channels}/lib/whisper-server.mjs +0 -0
  815. /package/src/{memory → runtime/memory}/lib/agent-ipc.mjs +0 -0
  816. /package/src/{memory → runtime/memory}/lib/bridge-trace-queries.mjs +0 -0
  817. /package/src/{memory → runtime/memory}/lib/llm-worker-host.mjs +0 -0
  818. /package/src/{memory → runtime/memory}/lib/memory-cycle.mjs +0 -0
  819. /package/src/{memory → runtime/memory}/lib/memory-extraction.mjs +0 -0
  820. /package/src/{memory → runtime/memory}/lib/memory-maintenance-store.mjs +0 -0
  821. /package/src/{memory → runtime/memory}/lib/memory-recall-id-patch.mjs +0 -0
  822. /package/src/{memory → runtime/memory}/lib/memory-recall-read-query.mjs +0 -0
  823. /package/src/{memory → runtime/memory}/lib/memory-recall-scope-filter.mjs +0 -0
  824. /package/src/{memory → runtime/memory}/lib/memory-retrievers.mjs +0 -0
  825. /package/src/{memory → runtime/memory}/lib/memory-score.mjs +0 -0
  826. /package/src/{memory → runtime/memory}/lib/memory-text-utils.mjs +0 -0
  827. /package/src/{memory → runtime/memory}/lib/model-profile.mjs +0 -0
  828. /package/src/{memory → runtime/memory}/lib/project-id-resolver.mjs +0 -0
  829. /package/src/{search → runtime/search}/lib/cache.mjs +0 -0
  830. /package/src/{search → runtime/search}/lib/formatter.mjs +0 -0
  831. /package/src/{search → runtime/search}/lib/state.mjs +0 -0
  832. /package/src/{shared → runtime/shared}/abort-controller.mjs +0 -0
  833. /package/src/{shared → runtime/shared}/llm/index.mjs +0 -0
  834. /package/src/{shared → runtime/shared}/llm/pid-cleanup.mjs +0 -0
  835. /package/src/{shared → runtime/shared}/llm/usage-log.mjs +0 -0
  836. /package/src/{shared → runtime/shared}/wsl.mjs +0 -0
@@ -1,489 +0,0 @@
1
- #!/usr/bin/env bun
2
- /**
3
- * mixdog doctor - health diagnostics for the mixdog plugin.
4
- * Usage:
5
- * bun scripts/doctor.mjs # run checks only
6
- * bun scripts/doctor.mjs --setup # run checks then launch setup UI
7
- *
8
- * Pure Node/Bun built-ins only. No external deps. Cross-OS.
9
- * Exit 0 unless FAIL count > 0, then exit 1.
10
- */
11
- import { existsSync, readFileSync, statSync, readdirSync, lstatSync } from 'fs';
12
- import { join, basename, dirname } from 'path';
13
- import { homedir, tmpdir } from 'os';
14
- import { spawnSync, spawn } from 'child_process';
15
- import { fileURLToPath } from 'url';
16
- import { createConnection } from 'net';
17
- import { createRequire } from 'module';
18
-
19
- const __dirname = dirname(fileURLToPath(import.meta.url));
20
- const require = createRequire(import.meta.url);
21
-
22
- // ---------------------------------------------------------------------------
23
- // Resolve PLUGIN_ROOT and PLUGIN_DATA
24
- // ---------------------------------------------------------------------------
25
- const PLUGIN_ROOT = process.env.CLAUDE_PLUGIN_ROOT || dirname(__dirname);
26
-
27
- // Claude config base — honours CLAUDE_CONFIG_DIR (matches settings-loader / statusline).
28
- function claudeConfigBase() {
29
- return process.env.CLAUDE_CONFIG_DIR || join(homedir(), '.claude');
30
- }
31
-
32
- function resolvePluginData() {
33
- if (process.env.CLAUDE_PLUGIN_DATA) return process.env.CLAUDE_PLUGIN_DATA;
34
- const dirName = basename(PLUGIN_ROOT);
35
- // Cache layout: <plugin>/<marketplace>/<semver>/
36
- if (/^\d+\.\d+\.\d+/.test(dirName)) {
37
- const pluginName = basename(join(PLUGIN_ROOT, '..'));
38
- const marketplace = basename(join(PLUGIN_ROOT, '..', '..'));
39
- return join(claudeConfigBase(), 'plugins', 'data', `${pluginName}-${marketplace}`);
40
- }
41
- // Marketplace layout: root IS the plugin dir
42
- const marketplace = dirName;
43
- let pluginName = 'mixdog';
44
- try {
45
- const manifest = JSON.parse(readFileSync(join(PLUGIN_ROOT, '.claude-plugin', 'plugin.json'), 'utf8'));
46
- if (typeof manifest?.name === 'string' && manifest.name.trim()) pluginName = manifest.name.trim();
47
- } catch { /* fall through */ }
48
- return join(claudeConfigBase(), 'plugins', 'data', `${pluginName}-${marketplace}`);
49
- }
50
-
51
- const PLUGIN_DATA = resolvePluginData();
52
- const isSetup = process.argv.includes('--setup');
53
-
54
- // ---------------------------------------------------------------------------
55
- // Result tracking
56
- // ---------------------------------------------------------------------------
57
- const rows = [];
58
- let failCount = 0;
59
- let warnCount = 0;
60
- let okCount = 0;
61
-
62
- function addRow(status, label, detail) {
63
- rows.push({ status, label, detail: detail ?? '' });
64
- if (status === 'FAIL') failCount++;
65
- else if (status === 'WARN') warnCount++;
66
- else okCount++;
67
- }
68
- const ok = (label, detail) => addRow('OK', label, detail);
69
- const warn = (label, detail) => addRow('WARN', label, detail);
70
- const fail = (label, detail) => addRow('FAIL', label, detail);
71
-
72
- // ---------------------------------------------------------------------------
73
- // Helpers
74
- // ---------------------------------------------------------------------------
75
- function readJson(p) {
76
- try { return JSON.parse(readFileSync(p, 'utf8')); } catch { return null; }
77
- }
78
-
79
- function parsePositivePid(value) {
80
- const pid = Number(value);
81
- return Number.isFinite(pid) && pid > 0 ? pid : null;
82
- }
83
-
84
- function getActiveOwnerPid(inst) {
85
- return parsePositivePid(inst?.ownerLeadPid)
86
- ?? parsePositivePid(inst?.terminalLeadPid)
87
- ?? parsePositivePid(inst?.supervisor_pid)
88
- ?? parsePositivePid(inst?.instanceId);
89
- }
90
-
91
- function dirSize(p, limitBytes = Infinity) {
92
- let total = 0;
93
- try {
94
- const entries = readdirSync(p, { withFileTypes: true });
95
- for (const e of entries) {
96
- if (total >= limitBytes) break;
97
- const full = join(p, e.name);
98
- try {
99
- if (e.isDirectory()) total += dirSize(full, limitBytes - total);
100
- else total += statSync(full).size;
101
- } catch { /* skip inaccessible */ }
102
- }
103
- } catch { /* skip inaccessible dir */ }
104
- return total;
105
- }
106
-
107
- function toMB(bytes) { return (bytes / 1024 / 1024).toFixed(1); }
108
-
109
- function semverGte(a, b) {
110
- // Returns true if version string a >= b (numeric segments only)
111
- const pa = a.replace(/[^0-9.]/g, '').split('.').map(Number);
112
- const pb = b.replace(/[^0-9.]/g, '').split('.').map(Number);
113
- for (let i = 0; i < Math.max(pa.length, pb.length); i++) {
114
- const na = pa[i] ?? 0, nb = pb[i] ?? 0;
115
- if (na > nb) return true;
116
- if (na < nb) return false;
117
- }
118
- return true;
119
- }
120
-
121
- // ---------------------------------------------------------------------------
122
- // Check 1: Version sync (package.json vs .claude-plugin/plugin.json)
123
- // ---------------------------------------------------------------------------
124
- (function checkVersionSync() {
125
- const pkgPath = join(PLUGIN_ROOT, 'package.json');
126
- const pluginPath = join(PLUGIN_ROOT, '.claude-plugin', 'plugin.json');
127
- const pkg = readJson(pkgPath);
128
- const plugin = readJson(pluginPath);
129
- if (!pkg) { fail('Version sync', `cannot read ${pkgPath}`); return; }
130
- if (!plugin) { fail('Version sync', `cannot read ${pluginPath}`); return; }
131
- const pv = pkg.version ?? '(missing)';
132
- const pjv = plugin.version ?? '(missing)';
133
- if (pv === pjv) ok('Version sync', `${pv}`);
134
- else fail('Version sync', `package.json=${pv} vs plugin.json=${pjv}`);
135
- })();
136
-
137
- // ---------------------------------------------------------------------------
138
- // Check 2: Bun version >= 1.1.0
139
- // ---------------------------------------------------------------------------
140
- (function checkBunVersion() {
141
- // When running under bun, Bun.version is available; otherwise fall back to CLI.
142
- let version = typeof Bun !== 'undefined' ? Bun.version : null;
143
- if (!version) {
144
- const r = spawnSync('bun', ['--version'], { encoding: 'utf8' });
145
- version = (r.stdout ?? '').trim();
146
- }
147
- if (!version) { fail('Bun version', 'bun not found on PATH'); return; }
148
- const clean = version.replace(/^v/, '');
149
- if (semverGte(clean, '1.1.0')) ok('Bun version', `${clean} (>= 1.1.0)`);
150
- else fail('Bun version', `${clean} < 1.1.0 - upgrade required`);
151
- })();
152
-
153
- // ---------------------------------------------------------------------------
154
- // Check 3: Bun source (system PATH vs plugin-local vs absent)
155
- // ---------------------------------------------------------------------------
156
- (function checkBunSource() {
157
- const isWin = process.platform === 'win32';
158
- // Try system PATH first.
159
- const whichCmd = isWin ? 'where.exe' : 'which';
160
- const r = spawnSync(whichCmd, ['bun'], { encoding: 'utf8' });
161
- if (r.status === 0 && r.stdout) {
162
- const first = r.stdout.split(/\r?\n/).map(l => l.trim()).find(l => l.length > 0);
163
- if (first && existsSync(first)) { ok('Bun source', `system: ${first}`); return; }
164
- }
165
- // Check plugin-local node_modules/.bin/bun.
166
- const localBin = join(PLUGIN_ROOT, 'node_modules', '.bin', isWin ? 'bun.exe' : 'bun');
167
- if (existsSync(localBin)) { ok('Bun source', `local: ${localBin}`); return; }
168
- // Not found - bootstrap will install on first launch.
169
- warn('Bun source', 'not found (bootstrap will install via npm on first launch)');
170
- })();
171
-
172
- // ---------------------------------------------------------------------------
173
- // Check 4: Shell availability
174
- // ---------------------------------------------------------------------------
175
- (function checkShellSource() {
176
- const isWindows = process.platform === 'win32'
177
- || !!(process.env.WINDIR || process.env.SystemRoot);
178
- if (!isWindows) {
179
- if (existsSync('/bin/sh')) ok('Shell source', '/bin/sh');
180
- else fail('Shell source', '/bin/sh not found');
181
- return;
182
- }
183
- const explicit = process.env.CLAUDE_CODE_SHELL;
184
- if (explicit) {
185
- const stem = basename(explicit).toLowerCase().replace(/\.exe$/, '');
186
- if (stem !== 'pwsh' && stem !== 'powershell') {
187
- warn('Shell source', `CLAUDE_CODE_SHELL is ignored on Windows unless it is PowerShell/pwsh: ${explicit}`);
188
- } else if (existsSync(explicit)) {
189
- ok('Shell source', `PowerShell: ${explicit}`);
190
- return;
191
- } else {
192
- warn('Shell source', `CLAUDE_CODE_SHELL set but not found: ${explicit}`);
193
- }
194
- }
195
- const candidates = [
196
- join(process.env.ProgramFiles || 'C:\\Program Files', 'PowerShell', '7', 'pwsh.exe'),
197
- join(process.env.SystemRoot || process.env.WINDIR || 'C:\\Windows', 'System32', 'WindowsPowerShell', 'v1.0', 'powershell.exe'),
198
- ];
199
- for (const c of candidates) {
200
- if (existsSync(c)) { ok('Shell source', `PowerShell: ${c}`); return; }
201
- }
202
- const r = spawnSync('where.exe', ['powershell.exe'], { encoding: 'utf8' });
203
- const found = (r.stdout || '').split(/\r?\n/).map(l => l.trim()).find(l => l && existsSync(l));
204
- if (found) ok('Shell source', `PowerShell: ${found}`);
205
- else fail('Shell source', 'PowerShell not found');
206
- })();
207
-
208
- // ---------------------------------------------------------------------------
209
- // Check 4: Active supervisor
210
- // ---------------------------------------------------------------------------
211
- (function checkSupervisor() {
212
- const instancePath = join(tmpdir(), 'mixdog', 'active-instance.json');
213
- if (!existsSync(instancePath)) {
214
- warn('Supervisor', 'active-instance.json not found - supervisor not running');
215
- return;
216
- }
217
- const inst = readJson(instancePath);
218
- if (!inst) { warn('Supervisor', 'active-instance.json unreadable or invalid JSON'); return; }
219
- const pid = getActiveOwnerPid(inst);
220
- if (!pid) { warn('Supervisor', 'owner PID missing in active-instance.json'); return; }
221
- let alive = false;
222
- try { process.kill(pid, 0); alive = true; } catch { alive = false; }
223
- if (!alive) { warn('Supervisor', `ownerPid=${pid} is not alive`); return; }
224
- const ready = inst.backendReady === true;
225
- if (ready) ok('Supervisor', `ownerPid=${pid} alive, backendReady=true`);
226
- else warn('Supervisor', `ownerPid=${pid} alive but backendReady=${inst.backendReady} — permission hooks may be fail-open (bypassed) until the daemon is ready`);
227
- })();
228
-
229
- // ---------------------------------------------------------------------------
230
- // Check 4.5: Hook IPC pipe reachability (fail-open warning)
231
- // ---------------------------------------------------------------------------
232
- // Hooks are fail-open by design: if the daemon/pipe is down, the shim exits 0
233
- // and the server emits "null", so nothing is blocked. Surface that clearly so
234
- // an operator knows permission hooks are bypassed until the daemon is restored.
235
- // See SECURITY.md "Fail-open Hook Model".
236
- await (async function checkHookPipe() {
237
- let pipePath;
238
- try {
239
- pipePath = require('../lib/hook-pipe-path.cjs')();
240
- } catch (err) {
241
- warn('Hook pipe', `cannot resolve pipe path: ${err?.message || String(err)}`);
242
- return;
243
- }
244
- const reachable = await new Promise((resolve) => {
245
- let done = false;
246
- const finish = (val) => { if (!done) { done = true; resolve(val); } };
247
- let sock;
248
- try {
249
- sock = createConnection(pipePath);
250
- } catch { finish(false); return; }
251
- const timer = setTimeout(() => { try { sock.destroy(); } catch {} finish(false); }, 1000);
252
- sock.once('connect', () => { clearTimeout(timer); try { sock.destroy(); } catch {} finish(true); });
253
- sock.once('error', () => { clearTimeout(timer); try { sock.destroy(); } catch {} finish(false); });
254
- });
255
- if (reachable) {
256
- ok('Hook pipe', `reachable at ${pipePath}`);
257
- } else {
258
- warn('Hook pipe', `unreachable at ${pipePath} — permission hooks are FAIL-OPEN (bypassed); restart the daemon to restore them`);
259
- }
260
- })();
261
-
262
- // ---------------------------------------------------------------------------
263
- // Check 5: Plugin DATA dir - required config files
264
- // ---------------------------------------------------------------------------
265
- (function checkDataDir() {
266
- const configFile = join(PLUGIN_DATA, 'mixdog-config.json');
267
- const workflowFile = join(PLUGIN_DATA, 'user-workflow.json');
268
- const missingFiles = [];
269
- if (!existsSync(configFile)) missingFiles.push('mixdog-config.json');
270
- if (!existsSync(workflowFile)) missingFiles.push('user-workflow.json');
271
- if (missingFiles.length === 0) ok('Plugin DATA dir', PLUGIN_DATA);
272
- else warn('Plugin DATA dir', `missing: ${missingFiles.join(', ')} in ${PLUGIN_DATA}`);
273
- })();
274
-
275
- // ---------------------------------------------------------------------------
276
- // Check 6: Cache layout - ~/.claude/plugins/cache/trib-plugin/mixdog/<ver>/
277
- // ---------------------------------------------------------------------------
278
- (function checkCacheLayout() {
279
- const cacheBase = join(claudeConfigBase(), 'plugins', 'cache', 'trib-plugin', 'mixdog');
280
- if (!existsSync(cacheBase)) {
281
- warn('Cache layout', `cache dir not found: ${cacheBase}`);
282
- return;
283
- }
284
- let entries;
285
- try { entries = readdirSync(cacheBase, { withFileTypes: true }); } catch {
286
- warn('Cache layout', `cannot read ${cacheBase}`);
287
- return;
288
- }
289
- const verDirs = entries.filter(e => e.isDirectory());
290
- if (verDirs.length === 0) { warn('Cache layout', 'no version directories found'); return; }
291
-
292
- const THRESHOLD = 100 * 1024 * 1024; // 100 MB
293
- let anyFail = false;
294
- for (const vd of verDirs) {
295
- const verPath = join(cacheBase, vd.name);
296
- const nmPath = join(verPath, 'node_modules');
297
- if (!existsSync(nmPath)) {
298
- ok(`Cache ${vd.name}`, 'no node_modules');
299
- continue;
300
- }
301
- let isJunction = false;
302
- try {
303
- const lst = lstatSync(nmPath);
304
- isJunction = lst.isSymbolicLink();
305
- } catch { /* treat as real */ }
306
- const kind = isJunction ? 'junction/symlink' : 'real';
307
- if (isJunction) {
308
- ok(`Cache ${vd.name}`, `node_modules=${kind}`);
309
- } else {
310
- const sz = dirSize(nmPath, THRESHOLD + 1);
311
- const mb = toMB(sz);
312
- if (sz > THRESHOLD) {
313
- warn(`Cache ${vd.name}`, `node_modules=${kind} ${mb} MB (> 100 MB - regression risk)`);
314
- anyFail = true;
315
- } else {
316
- ok(`Cache ${vd.name}`, `node_modules=${kind} ${mb} MB`);
317
- }
318
- }
319
- }
320
- })();
321
-
322
- // ---------------------------------------------------------------------------
323
- // Check 7: Voice runtime
324
- // ---------------------------------------------------------------------------
325
- await (async function checkVoiceRuntime() {
326
- try {
327
- const { resolveVoiceRuntime } = await import('../src/channels/lib/voice-runtime-fetcher.mjs');
328
- const runtime = resolveVoiceRuntime(PLUGIN_DATA);
329
- if (runtime?.installed) {
330
- ok('Voice runtime', `${runtime.kind}: whisper=${basename(runtime.whisperCmd || '')}, ffmpeg=${basename(runtime.ffmpegPath || '')}, model=${runtime.modelName || basename(runtime.modelPath || '')}`);
331
- return;
332
- }
333
- const missing = [
334
- runtime?.binary ? null : 'binary',
335
- runtime?.model ? null : 'model',
336
- runtime?.ffmpeg ? null : 'ffmpeg',
337
- ].filter(Boolean);
338
- warn('Voice runtime', `not installed - missing: ${missing.join(', ')}`);
339
- } catch (err) {
340
- warn('Voice runtime', `check failed: ${err?.message || String(err)}`);
341
- }
342
- })();
343
-
344
- // ---------------------------------------------------------------------------
345
- // Check 8: Required npm dependencies
346
- // ---------------------------------------------------------------------------
347
- (function checkDeps() {
348
- const required = [
349
- '@modelcontextprotocol/sdk',
350
- 'zod',
351
- 'openai',
352
- 'pg',
353
- ];
354
- // Search in PLUGIN_ROOT/node_modules (typical) and parent cache node_modules.
355
- const nmCandidates = [
356
- join(PLUGIN_ROOT, 'node_modules'),
357
- join(PLUGIN_ROOT, '..', 'node_modules'),
358
- ];
359
- const missing = [];
360
- for (const dep of required) {
361
- const found = nmCandidates.some(nm => existsSync(join(nm, dep)));
362
- if (!found) missing.push(dep);
363
- }
364
- if (missing.length === 0) ok('Required deps', required.join(', '));
365
- else fail('Required deps', `missing: ${missing.join(', ')}`);
366
- })();
367
-
368
- // ---------------------------------------------------------------------------
369
- // Check 9.5: Cache / sidecar storage sizes
370
- // ---------------------------------------------------------------------------
371
- (function checkCacheStorage() {
372
- const targets = [
373
- { p: join(PLUGIN_DATA, 'code-graph-cache.json'), label: 'code-graph-cache.json' },
374
- { p: join(PLUGIN_DATA, 'code-graph-cache'), label: 'code-graph-cache/' },
375
- { p: join(PLUGIN_DATA, 'sidecars'), label: 'sidecars/' },
376
- { p: join(PLUGIN_DATA, 'sessions-archive'), label: 'sessions-archive/' },
377
- { p: join(PLUGIN_DATA, 'shell-output'), label: 'shell-output/' },
378
- { p: join(PLUGIN_DATA, 'shell-jobs'), label: 'shell-jobs/' },
379
- ];
380
- const WARN_THRESHOLD = 100 * 1024 * 1024; // 100 MB per target
381
- const lines = [];
382
- const oversized = [];
383
- for (const { p, label } of targets) {
384
- if (!existsSync(p)) continue;
385
- let sz = 0;
386
- try {
387
- const st = statSync(p);
388
- sz = st.isDirectory() ? dirSize(p, WARN_THRESHOLD * 2 + 1) : st.size;
389
- } catch { continue; }
390
- if (sz === 0) continue;
391
- const mb = toMB(sz);
392
- lines.push(`${label}=${mb} MB`);
393
- if (sz > WARN_THRESHOLD) oversized.push(`${label} ${mb} MB`);
394
- }
395
- if (lines.length === 0) ok('Cache storage', 'no cache artefacts');
396
- else if (oversized.length > 0) warn('Cache storage', `oversized (> 100 MB): ${oversized.join(', ')} | all: ${lines.join(', ')}`);
397
- else ok('Cache storage', lines.join(', '));
398
- })();
399
-
400
- // ---------------------------------------------------------------------------
401
- // Check 9: Log file sizes
402
- // ---------------------------------------------------------------------------
403
- (function checkLogs() {
404
- const WARN_THRESHOLD = 50 * 1024 * 1024; // 50 MB
405
- let logEntries;
406
- try {
407
- logEntries = readdirSync(PLUGIN_DATA, { withFileTypes: true })
408
- .filter(e => e.isFile() && e.name.endsWith('.log'));
409
- } catch {
410
- ok('Logs', 'data dir not yet created or no log files');
411
- return;
412
- }
413
- if (logEntries.length === 0) { ok('Logs', 'no log files'); return; }
414
- const large = [];
415
- const lines = [];
416
- for (const e of logEntries) {
417
- const p = join(PLUGIN_DATA, e.name);
418
- let sz = 0;
419
- try { sz = statSync(p).size; } catch { /* skip */ }
420
- const mb = toMB(sz);
421
- lines.push({ name: e.name, size: sz, text: `${e.name}=${mb} MB` });
422
- if (sz > WARN_THRESHOLD) large.push(`${e.name} ${mb} MB`);
423
- }
424
- if (large.length > 0) warn('Logs', `oversized (> 50 MB): ${large.join(', ')}`);
425
- else if (lines.length > 300) warn('Logs', `${lines.length} files (> 300) — likely stale per-PID log accumulation`);
426
- else {
427
- lines.sort((a, b) => b.size - a.size);
428
- const shown = lines.slice(0, 8).map(e => e.text);
429
- const suffix = lines.length > shown.length ? `, +${lines.length - shown.length} more` : '';
430
- ok('Logs', `${lines.length} files; largest: ${shown.join(', ')}${suffix}`);
431
- }
432
- })();
433
-
434
- // ---------------------------------------------------------------------------
435
- // Check 9.7: Memory DB size (Postgres pgdata)
436
- // ---------------------------------------------------------------------------
437
- (function checkMemoryDbSize() {
438
- const pgdata = join(PLUGIN_DATA, 'pgdata');
439
- if (!existsSync(pgdata)) { ok('Memory DB size', 'pgdata not found'); return; }
440
- const WARN_THRESHOLD = 1024 * 1024 * 1024; // 1 GB
441
- let total = 0;
442
- try { total = dirSize(pgdata); } catch { warn('Memory DB size', `cannot read ${pgdata}`); return; }
443
- const baseBytes = existsSync(join(pgdata, 'base')) ? dirSize(join(pgdata, 'base')) : 0;
444
- const walBytes = existsSync(join(pgdata, 'pg_wal')) ? dirSize(join(pgdata, 'pg_wal')) : 0;
445
- const detail = `pgdata ${toMB(total)} MB (base ${toMB(baseBytes)}, wal ${toMB(walBytes)})`;
446
- if (total >= WARN_THRESHOLD) warn('Memory DB size', `${detail} — >= 1 GB, review memory retention`);
447
- else ok('Memory DB size', detail);
448
- })();
449
-
450
- // ---------------------------------------------------------------------------
451
- // Print report
452
- // ---------------------------------------------------------------------------
453
- const SEP = '-'.repeat(62);
454
- console.log('');
455
- console.log('mixdog doctor');
456
- console.log(SEP);
457
- for (const { status, label, detail } of rows) {
458
- const tag = `[${status}]`.padEnd(6);
459
- console.log(`${tag} ${label}${detail ? ': ' + detail : ''}`);
460
- }
461
- console.log(SEP);
462
- console.log(`${okCount} OK ${warnCount} WARN ${failCount} FAIL`);
463
- console.log('');
464
-
465
- // ---------------------------------------------------------------------------
466
- // --setup: launch setup UI after report
467
- // ---------------------------------------------------------------------------
468
- if (isSetup) {
469
- const launchScript = join(PLUGIN_ROOT, 'setup', 'launch.mjs');
470
- if (!existsSync(launchScript)) {
471
- console.error(`[FAIL] setup launcher not found: ${launchScript}`);
472
- process.exit(1);
473
- }
474
- console.log('Launching setup UI...');
475
- const child = spawn(process.execPath, [launchScript], {
476
- detached: true,
477
- stdio: 'ignore',
478
- cwd: PLUGIN_ROOT,
479
- windowsHide: true,
480
- env: {
481
- ...process.env,
482
- CLAUDE_PLUGIN_ROOT: PLUGIN_ROOT,
483
- CLAUDE_PLUGIN_DATA: PLUGIN_DATA,
484
- },
485
- });
486
- child.unref();
487
- }
488
-
489
- process.exit(failCount > 0 ? 1 : 0);
@@ -1,130 +0,0 @@
1
- // Fuzz test: _findActualString invariants under random drift.
2
- //
3
- // Approach: pick a random substring of randomly-generated content, apply
4
- // one of several deterministic drift transforms (NFC/NFD swap, codepoint
5
- // fold variants, trailing-whitespace injection, indent shift, line-end
6
- // drop) to the substring, and feed it through _findActualString.
7
- //
8
- // Invariants checked when the matcher returns a non-null slice:
9
- // • returned string IS a substring of `content` (content.includes(slice))
10
- // • content.indexOf(slice) finds a position (no synthesised bytes)
11
- // • slice.normalize('NFD').indexOf(searchAfterDriftNfd) === 0 or close
12
- // — the matched slice's NFD form contains the search's NFD form at
13
- // the start, confirming the matcher did not pick something unrelated
14
- //
15
- // Seed: a deterministic LCG so the same DEV_FUZZ_SEED env reproduces
16
- // failures bit-for-bit.
17
-
18
- import { findActualString as _findActualString } from '../src/agent/orchestrator/tools/edit-normalize.mjs';
19
-
20
- const ITERATIONS = Number(process.env.DEV_FUZZ_ITER) || 1000;
21
- const SEED = Number(process.env.DEV_FUZZ_SEED) || 0xC0DE1234;
22
-
23
- // LCG PRNG for reproducible fuzz.
24
- let _state = SEED >>> 0;
25
- function rand() {
26
- _state = (_state * 1664525 + 1013904223) >>> 0;
27
- return _state / 0x100000000;
28
- }
29
- function randInt(min, max) {
30
- return min + Math.floor(rand() * (max - min + 1));
31
- }
32
- function pick(arr) {
33
- return arr[Math.floor(rand() * arr.length)];
34
- }
35
-
36
- const ASCII = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-_(){}[],.;:!? \t\n';
37
- const HANGUL = '가나다라마바사아자차카타파하각간갈감갑값나라말사람';
38
- const FOLD_VARIANTS = '      ‐–—―−-‘’“”"'';
39
-
40
- function randomChar() {
41
- const r = rand();
42
- if (r < 0.70) return ASCII[Math.floor(rand() * ASCII.length)];
43
- if (r < 0.85) return HANGUL[Math.floor(rand() * HANGUL.length)];
44
- return FOLD_VARIANTS[Math.floor(rand() * FOLD_VARIANTS.length)];
45
- }
46
-
47
- function randomContent() {
48
- const len = randInt(80, 300);
49
- let out = '';
50
- for (let i = 0; i < len; i++) out += randomChar();
51
- return out;
52
- }
53
-
54
- // Drift transforms — each takes a slice and produces a possibly different
55
- // representation. The matcher must still locate the original slice.
56
- const drifts = [
57
- (s) => s, // identity
58
- (s) => s.normalize('NFC'), // NFC
59
- (s) => s.normalize('NFD'), // NFD
60
- (s) => s.replace(/-/g, '—'), // hyphen → em dash
61
- (s) => s.replace(/'/g, '‘'), // straight → curly single
62
- (s) => s.replace(/"/g, '“'), // straight → curly double
63
- (s) => s.replace(/ /g, ' '), // space → NBSP
64
- (s) => s.replace(/—/g, '-'), // em dash → hyphen
65
- (s) => s.replace(/‘/g, "'"), // curly → straight
66
- (s) => s.replace(/“/g, '"'), // curly → straight
67
- (s) => s.replace(/ /g, ' '), // NBSP → space
68
- (s) => s.split('\n').map((l) => l + ' ').join('\n'), // add trailing spaces
69
- (s) => s.split('\n').map((l) => l.replace(/ +$/, '')).join('\n'), // strip trailing
70
- (s) => s.split('\n').map((l) => ' ' + l).join('\n'), // add leading indent
71
- (s) => s.split('\n').map((l) => l.replace(/^ +/, '')).join('\n'), // strip leading
72
- ];
73
-
74
- let matched = 0;
75
- let unmatched = 0;
76
- let invariantFails = 0;
77
- const failSamples = [];
78
-
79
- for (let i = 0; i < ITERATIONS; i++) {
80
- const content = randomContent();
81
- const start = randInt(0, Math.max(0, content.length - 10));
82
- const len = randInt(3, Math.min(60, content.length - start));
83
- const original = content.substring(start, start + len);
84
- if (original.length < 2) continue;
85
- const drift = pick(drifts);
86
- const search = drift(original);
87
- const info = {};
88
- let result;
89
- try {
90
- result = _findActualString(content, search, info);
91
- } catch (err) {
92
- invariantFails++;
93
- failSamples.push({ reason: 'throw', err: String(err), content, search });
94
- if (failSamples.length > 5) break;
95
- continue;
96
- }
97
- if (result === null) {
98
- unmatched++;
99
- continue;
100
- }
101
- matched++;
102
- if (typeof result !== 'string') {
103
- invariantFails++;
104
- failSamples.push({ reason: 'non-string', result, content, search });
105
- if (failSamples.length > 5) break;
106
- continue;
107
- }
108
- if (!content.includes(result)) {
109
- invariantFails++;
110
- failSamples.push({ reason: 'not-substring', result, content, search });
111
- if (failSamples.length > 5) break;
112
- }
113
- }
114
-
115
- console.log(`edit-normalize-fuzz: ${ITERATIONS} iterations (seed=0x${SEED.toString(16).toUpperCase()})`);
116
- console.log(` matched: ${matched}`);
117
- console.log(` unmatched: ${unmatched}`);
118
- console.log(` invariant fails: ${invariantFails}`);
119
-
120
- if (invariantFails > 0) {
121
- console.error('\nFAIL samples:');
122
- for (const s of failSamples) {
123
- console.error(` reason: ${s.reason}`);
124
- console.error(` content: ${JSON.stringify(s.content).slice(0, 200)}`);
125
- console.error(` search: ${JSON.stringify(s.search).slice(0, 200)}`);
126
- if (s.result !== undefined) console.error(` result: ${JSON.stringify(s.result).slice(0, 200)}`);
127
- if (s.err) console.error(` err: ${s.err}`);
128
- }
129
- process.exit(1);
130
- }