mixdog 0.7.18 → 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 (844) 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/http-agent.mjs +129 -0
  179. package/src/runtime/shared/open-url.mjs +37 -0
  180. package/src/runtime/shared/plugin-paths.mjs +25 -0
  181. package/src/runtime/shared/process-shutdown.mjs +147 -0
  182. package/src/runtime/shared/schedules-store.mjs +70 -0
  183. package/src/runtime/shared/tool-execution-contract.mjs +104 -0
  184. package/src/runtime/shared/tool-surface.mjs +950 -0
  185. package/src/runtime/shared/user-cwd.mjs +221 -0
  186. package/src/runtime/shared/user-data-guard.mjs +232 -0
  187. package/src/runtime/shared/workspace-router.mjs +259 -0
  188. package/src/standalone/bridge-tool.mjs +1414 -0
  189. package/src/standalone/channel-admin.mjs +366 -0
  190. package/src/standalone/channel-worker-preload.cjs +3 -0
  191. package/src/standalone/channel-worker.mjs +353 -0
  192. package/src/standalone/explore-tool.mjs +233 -0
  193. package/src/standalone/hook-bus.mjs +246 -0
  194. package/src/standalone/plugin-admin.mjs +247 -0
  195. package/src/standalone/provider-admin.mjs +338 -0
  196. package/src/standalone/seeds.mjs +94 -0
  197. package/src/standalone/usage-dashboard.mjs +510 -0
  198. package/src/tui/App.jsx +5438 -0
  199. package/src/tui/components/AnsiText.jsx +199 -0
  200. package/src/tui/components/ContextPanel.jsx +217 -0
  201. package/src/tui/components/Markdown.jsx +205 -0
  202. package/src/tui/components/MarkdownTable.jsx +204 -0
  203. package/src/tui/components/Message.jsx +103 -0
  204. package/src/tui/components/Picker.jsx +317 -0
  205. package/src/tui/components/PromptInput.jsx +584 -0
  206. package/src/tui/components/QueuedCommands.jsx +47 -0
  207. package/src/tui/components/SlashCommandPalette.jsx +114 -0
  208. package/src/tui/components/Spinner.jsx +317 -0
  209. package/src/tui/components/StatusLine.jsx +87 -0
  210. package/src/tui/components/TextEntryPanel.jsx +323 -0
  211. package/src/tui/components/ToolExecution.jsx +772 -0
  212. package/src/tui/components/TurnDone.jsx +78 -0
  213. package/src/tui/components/UsagePanel.jsx +331 -0
  214. package/src/tui/dist/index.mjs +12359 -0
  215. package/src/tui/engine.mjs +2410 -0
  216. package/src/tui/figures.mjs +50 -0
  217. package/src/tui/hooks/useEngine.mjs +16 -0
  218. package/src/tui/index.jsx +254 -0
  219. package/src/tui/input-editing.mjs +242 -0
  220. package/src/tui/markdown/format-token.mjs +194 -0
  221. package/src/tui/paste-attachments.mjs +198 -0
  222. package/src/tui/runtime/shared/process-shutdown.mjs +1 -0
  223. package/src/tui/spinner-verbs.mjs +45 -0
  224. package/src/tui/theme.mjs +67 -0
  225. package/src/tui/time-format.mjs +53 -0
  226. package/src/ui/ansi.mjs +115 -0
  227. package/src/ui/markdown.mjs +195 -0
  228. package/src/ui/statusline.mjs +730 -0
  229. package/src/ui/tool-card.mjs +101 -0
  230. package/src/vendor/statusline/bin/statusline-lib.mjs +805 -0
  231. package/src/vendor/statusline/bin/statusline-route.mjs +596 -0
  232. package/src/vendor/statusline/scripts/lib/gateway-settings.mjs +285 -0
  233. package/src/vendor/statusline/src/gateway/claude-current.mjs +320 -0
  234. package/src/vendor/statusline/src/gateway/route-meta.mjs +753 -0
  235. package/src/vendor/statusline/src/gateway/session-routes.mjs +244 -0
  236. package/src/workflows/default/WORKFLOW.md +7 -0
  237. package/src/workflows/default/workflow.json +14 -0
  238. package/vendor/ink/build/ansi-tokenizer.d.ts +38 -0
  239. package/vendor/ink/build/ansi-tokenizer.js +316 -0
  240. package/vendor/ink/build/ansi-tokenizer.js.map +1 -0
  241. package/vendor/ink/build/colorize.d.ts +3 -0
  242. package/vendor/ink/build/colorize.js +48 -0
  243. package/vendor/ink/build/colorize.js.map +1 -0
  244. package/vendor/ink/build/components/AccessibilityContext.d.ts +3 -0
  245. package/vendor/ink/build/components/AccessibilityContext.js +5 -0
  246. package/vendor/ink/build/components/AccessibilityContext.js.map +1 -0
  247. package/vendor/ink/build/components/AnimationContext.d.ts +9 -0
  248. package/vendor/ink/build/components/AnimationContext.js +13 -0
  249. package/vendor/ink/build/components/AnimationContext.js.map +1 -0
  250. package/vendor/ink/build/components/App.d.ts +24 -0
  251. package/vendor/ink/build/components/App.js +554 -0
  252. package/vendor/ink/build/components/App.js.map +1 -0
  253. package/vendor/ink/build/components/AppContext.d.ts +80 -0
  254. package/vendor/ink/build/components/AppContext.js +25 -0
  255. package/vendor/ink/build/components/AppContext.js.map +1 -0
  256. package/vendor/ink/build/components/BackgroundContext.d.ts +4 -0
  257. package/vendor/ink/build/components/BackgroundContext.js +3 -0
  258. package/vendor/ink/build/components/BackgroundContext.js.map +1 -0
  259. package/vendor/ink/build/components/Box.d.ts +130 -0
  260. package/vendor/ink/build/components/Box.js +34 -0
  261. package/vendor/ink/build/components/Box.js.map +1 -0
  262. package/vendor/ink/build/components/CursorContext.d.ts +11 -0
  263. package/vendor/ink/build/components/CursorContext.js +8 -0
  264. package/vendor/ink/build/components/CursorContext.js.map +1 -0
  265. package/vendor/ink/build/components/ErrorBoundary.d.ts +18 -0
  266. package/vendor/ink/build/components/ErrorBoundary.js +23 -0
  267. package/vendor/ink/build/components/ErrorBoundary.js.map +1 -0
  268. package/vendor/ink/build/components/ErrorOverview.d.ts +6 -0
  269. package/vendor/ink/build/components/ErrorOverview.js +90 -0
  270. package/vendor/ink/build/components/ErrorOverview.js.map +1 -0
  271. package/vendor/ink/build/components/FocusContext.d.ts +16 -0
  272. package/vendor/ink/build/components/FocusContext.js +17 -0
  273. package/vendor/ink/build/components/FocusContext.js.map +1 -0
  274. package/vendor/ink/build/components/Newline.d.ts +13 -0
  275. package/vendor/ink/build/components/Newline.js +8 -0
  276. package/vendor/ink/build/components/Newline.js.map +1 -0
  277. package/vendor/ink/build/components/Spacer.d.ts +7 -0
  278. package/vendor/ink/build/components/Spacer.js +11 -0
  279. package/vendor/ink/build/components/Spacer.js.map +1 -0
  280. package/vendor/ink/build/components/Static.d.ts +24 -0
  281. package/vendor/ink/build/components/Static.js +28 -0
  282. package/vendor/ink/build/components/Static.js.map +1 -0
  283. package/vendor/ink/build/components/StderrContext.d.ts +15 -0
  284. package/vendor/ink/build/components/StderrContext.js +13 -0
  285. package/vendor/ink/build/components/StderrContext.js.map +1 -0
  286. package/vendor/ink/build/components/StdinContext.d.ts +28 -0
  287. package/vendor/ink/build/components/StdinContext.js +20 -0
  288. package/vendor/ink/build/components/StdinContext.js.map +1 -0
  289. package/vendor/ink/build/components/StdoutContext.d.ts +15 -0
  290. package/vendor/ink/build/components/StdoutContext.js +13 -0
  291. package/vendor/ink/build/components/StdoutContext.js.map +1 -0
  292. package/vendor/ink/build/components/Text.d.ts +55 -0
  293. package/vendor/ink/build/components/Text.js +50 -0
  294. package/vendor/ink/build/components/Text.js.map +1 -0
  295. package/vendor/ink/build/components/Transform.d.ts +16 -0
  296. package/vendor/ink/build/components/Transform.js +15 -0
  297. package/vendor/ink/build/components/Transform.js.map +1 -0
  298. package/vendor/ink/build/cursor-helpers.d.ts +39 -0
  299. package/vendor/ink/build/cursor-helpers.js +62 -0
  300. package/vendor/ink/build/cursor-helpers.js.map +1 -0
  301. package/vendor/ink/build/devtools-window-polyfill.d.ts +1 -0
  302. package/vendor/ink/build/devtools-window-polyfill.js +68 -0
  303. package/vendor/ink/build/devtools-window-polyfill.js.map +1 -0
  304. package/vendor/ink/build/devtools.d.ts +1 -0
  305. package/vendor/ink/build/devtools.js +36 -0
  306. package/vendor/ink/build/devtools.js.map +1 -0
  307. package/vendor/ink/build/dom.d.ts +62 -0
  308. package/vendor/ink/build/dom.js +143 -0
  309. package/vendor/ink/build/dom.js.map +1 -0
  310. package/vendor/ink/build/get-max-width.d.ts +3 -0
  311. package/vendor/ink/build/get-max-width.js +10 -0
  312. package/vendor/ink/build/get-max-width.js.map +1 -0
  313. package/vendor/ink/build/hooks/use-animation.d.ts +49 -0
  314. package/vendor/ink/build/hooks/use-animation.js +87 -0
  315. package/vendor/ink/build/hooks/use-animation.js.map +1 -0
  316. package/vendor/ink/build/hooks/use-app.d.ts +5 -0
  317. package/vendor/ink/build/hooks/use-app.js +8 -0
  318. package/vendor/ink/build/hooks/use-app.js.map +1 -0
  319. package/vendor/ink/build/hooks/use-box-metrics.d.ts +59 -0
  320. package/vendor/ink/build/hooks/use-box-metrics.js +81 -0
  321. package/vendor/ink/build/hooks/use-box-metrics.js.map +1 -0
  322. package/vendor/ink/build/hooks/use-cursor.d.ts +12 -0
  323. package/vendor/ink/build/hooks/use-cursor.js +29 -0
  324. package/vendor/ink/build/hooks/use-cursor.js.map +1 -0
  325. package/vendor/ink/build/hooks/use-focus-manager.d.ts +43 -0
  326. package/vendor/ink/build/hooks/use-focus-manager.js +18 -0
  327. package/vendor/ink/build/hooks/use-focus-manager.js.map +1 -0
  328. package/vendor/ink/build/hooks/use-focus.d.ts +30 -0
  329. package/vendor/ink/build/hooks/use-focus.js +43 -0
  330. package/vendor/ink/build/hooks/use-focus.js.map +1 -0
  331. package/vendor/ink/build/hooks/use-input.d.ts +132 -0
  332. package/vendor/ink/build/hooks/use-input.js +126 -0
  333. package/vendor/ink/build/hooks/use-input.js.map +1 -0
  334. package/vendor/ink/build/hooks/use-is-screen-reader-enabled.d.ts +6 -0
  335. package/vendor/ink/build/hooks/use-is-screen-reader-enabled.js +12 -0
  336. package/vendor/ink/build/hooks/use-is-screen-reader-enabled.js.map +1 -0
  337. package/vendor/ink/build/hooks/use-paste.d.ts +35 -0
  338. package/vendor/ink/build/hooks/use-paste.js +62 -0
  339. package/vendor/ink/build/hooks/use-paste.js.map +1 -0
  340. package/vendor/ink/build/hooks/use-stderr.d.ts +5 -0
  341. package/vendor/ink/build/hooks/use-stderr.js +8 -0
  342. package/vendor/ink/build/hooks/use-stderr.js.map +1 -0
  343. package/vendor/ink/build/hooks/use-stdin.d.ts +7 -0
  344. package/vendor/ink/build/hooks/use-stdin.js +9 -0
  345. package/vendor/ink/build/hooks/use-stdin.js.map +1 -0
  346. package/vendor/ink/build/hooks/use-stdout.d.ts +5 -0
  347. package/vendor/ink/build/hooks/use-stdout.js +8 -0
  348. package/vendor/ink/build/hooks/use-stdout.js.map +1 -0
  349. package/vendor/ink/build/hooks/use-window-size.d.ts +18 -0
  350. package/vendor/ink/build/hooks/use-window-size.js +22 -0
  351. package/vendor/ink/build/hooks/use-window-size.js.map +1 -0
  352. package/vendor/ink/build/index.d.ts +42 -0
  353. package/vendor/ink/build/index.js +24 -0
  354. package/vendor/ink/build/index.js.map +1 -0
  355. package/vendor/ink/build/ink.d.ts +146 -0
  356. package/vendor/ink/build/ink.js +1022 -0
  357. package/vendor/ink/build/ink.js.map +1 -0
  358. package/vendor/ink/build/input-parser.d.ts +10 -0
  359. package/vendor/ink/build/input-parser.js +194 -0
  360. package/vendor/ink/build/input-parser.js.map +1 -0
  361. package/vendor/ink/build/instances.d.ts +3 -0
  362. package/vendor/ink/build/instances.js +8 -0
  363. package/vendor/ink/build/instances.js.map +1 -0
  364. package/vendor/ink/build/kitty-keyboard.d.ts +23 -0
  365. package/vendor/ink/build/kitty-keyboard.js +32 -0
  366. package/vendor/ink/build/kitty-keyboard.js.map +1 -0
  367. package/vendor/ink/build/log-update.d.ts +20 -0
  368. package/vendor/ink/build/log-update.js +261 -0
  369. package/vendor/ink/build/log-update.js.map +1 -0
  370. package/vendor/ink/build/measure-element.d.ts +20 -0
  371. package/vendor/ink/build/measure-element.js +13 -0
  372. package/vendor/ink/build/measure-element.js.map +1 -0
  373. package/vendor/ink/build/measure-text.d.ts +6 -0
  374. package/vendor/ink/build/measure-text.js +21 -0
  375. package/vendor/ink/build/measure-text.js.map +1 -0
  376. package/vendor/ink/build/output.d.ts +35 -0
  377. package/vendor/ink/build/output.js +328 -0
  378. package/vendor/ink/build/output.js.map +1 -0
  379. package/vendor/ink/build/parse-keypress.d.ts +20 -0
  380. package/vendor/ink/build/parse-keypress.js +495 -0
  381. package/vendor/ink/build/parse-keypress.js.map +1 -0
  382. package/vendor/ink/build/reconciler.d.ts +4 -0
  383. package/vendor/ink/build/reconciler.js +306 -0
  384. package/vendor/ink/build/reconciler.js.map +1 -0
  385. package/vendor/ink/build/render-background.d.ts +4 -0
  386. package/vendor/ink/build/render-background.js +25 -0
  387. package/vendor/ink/build/render-background.js.map +1 -0
  388. package/vendor/ink/build/render-border.d.ts +4 -0
  389. package/vendor/ink/build/render-border.js +84 -0
  390. package/vendor/ink/build/render-border.js.map +1 -0
  391. package/vendor/ink/build/render-node-to-output.d.ts +14 -0
  392. package/vendor/ink/build/render-node-to-output.js +162 -0
  393. package/vendor/ink/build/render-node-to-output.js.map +1 -0
  394. package/vendor/ink/build/render-to-string.d.ts +38 -0
  395. package/vendor/ink/build/render-to-string.js +116 -0
  396. package/vendor/ink/build/render-to-string.js.map +1 -0
  397. package/vendor/ink/build/render.d.ts +176 -0
  398. package/vendor/ink/build/render.js +71 -0
  399. package/vendor/ink/build/render.js.map +1 -0
  400. package/vendor/ink/build/renderer.d.ts +8 -0
  401. package/vendor/ink/build/renderer.js +64 -0
  402. package/vendor/ink/build/renderer.js.map +1 -0
  403. package/vendor/ink/build/sanitize-ansi.d.ts +2 -0
  404. package/vendor/ink/build/sanitize-ansi.js +27 -0
  405. package/vendor/ink/build/sanitize-ansi.js.map +1 -0
  406. package/vendor/ink/build/squash-text-nodes.d.ts +3 -0
  407. package/vendor/ink/build/squash-text-nodes.js +36 -0
  408. package/vendor/ink/build/squash-text-nodes.js.map +1 -0
  409. package/vendor/ink/build/styles.d.ts +302 -0
  410. package/vendor/ink/build/styles.js +303 -0
  411. package/vendor/ink/build/styles.js.map +1 -0
  412. package/vendor/ink/build/utils.d.ts +9 -0
  413. package/vendor/ink/build/utils.js +19 -0
  414. package/vendor/ink/build/utils.js.map +1 -0
  415. package/vendor/ink/build/wrap-text.d.ts +3 -0
  416. package/vendor/ink/build/wrap-text.js +38 -0
  417. package/vendor/ink/build/wrap-text.js.map +1 -0
  418. package/vendor/ink/build/write-synchronized.d.ts +4 -0
  419. package/vendor/ink/build/write-synchronized.js +9 -0
  420. package/vendor/ink/build/write-synchronized.js.map +1 -0
  421. package/vendor/ink/license +10 -0
  422. package/vendor/ink/package.json +137 -0
  423. package/.claude-plugin/marketplace.json +0 -34
  424. package/.claude-plugin/plugin.json +0 -20
  425. package/.gitattributes +0 -34
  426. package/.mcp.json +0 -14
  427. package/ARCHITECTURE.md +0 -77
  428. package/CHANGELOG.md +0 -30
  429. package/CONTRIBUTING.md +0 -45
  430. package/DATA-FLOW.md +0 -79
  431. package/LICENSE +0 -21
  432. package/SECURITY.md +0 -138
  433. package/UNINSTALL.md +0 -115
  434. package/agents/maintenance.md +0 -5
  435. package/agents/memory-classification.md +0 -30
  436. package/agents/scheduler-task.md +0 -18
  437. package/agents/webhook-handler.md +0 -27
  438. package/agents/worker.md +0 -24
  439. package/bin/bridge +0 -133
  440. package/bin/statusline-launcher.mjs +0 -82
  441. package/bin/statusline-lib.mjs +0 -581
  442. package/bin/statusline-route.mjs +0 -273
  443. package/bin/statusline.mjs +0 -638
  444. package/bun.lock +0 -927
  445. package/commands/config.md +0 -16
  446. package/commands/doctor.md +0 -13
  447. package/commands/model.md +0 -61
  448. package/commands/setup.md +0 -17
  449. package/defaults/hidden-roles.json +0 -68
  450. package/defaults/memory-chunk-prompt.md +0 -63
  451. package/defaults/mixdog-config.template.json +0 -27
  452. package/defaults/user-workflow.json +0 -8
  453. package/defaults/user-workflow.md +0 -17
  454. package/hooks/hooks.json +0 -73
  455. package/hooks/lib/active-instance.cjs +0 -77
  456. package/hooks/lib/permission-evaluator.cjs +0 -411
  457. package/hooks/lib/permission-route.cjs +0 -63
  458. package/hooks/lib/settings-loader.cjs +0 -117
  459. package/hooks/post-tool-use.cjs +0 -84
  460. package/hooks/pre-mcp-sandbox.cjs +0 -158
  461. package/hooks/pre-tool-subagent.cjs +0 -258
  462. package/hooks/session-start.cjs +0 -1493
  463. package/hooks/shim-launcher.cjs +0 -65
  464. package/hooks/turn-timer.cjs +0 -82
  465. package/lib/claude-md-writer.cjs +0 -386
  466. package/lib/keychain-cjs.cjs +0 -290
  467. package/lib/plugin-paths.cjs +0 -69
  468. package/lib/rules-builder.cjs +0 -241
  469. package/native/README.md +0 -117
  470. package/native/prebuilt/linux-aarch64/mixdog-shim +0 -0
  471. package/native/prebuilt/linux-x86_64/mixdog-shim +0 -0
  472. package/native/prebuilt/macos-aarch64/mixdog-shim +0 -0
  473. package/native/prebuilt/macos-x86_64/mixdog-shim +0 -0
  474. package/native/prebuilt/windows-x86_64/mixdog-shim.exe +0 -0
  475. package/prompts/code-review.txt +0 -16
  476. package/prompts/security-audit.txt +0 -17
  477. package/rules/bridge/00-common.md +0 -39
  478. package/rules/bridge/20-skip-protocol.md +0 -18
  479. package/rules/bridge/30-explorer.md +0 -33
  480. package/rules/bridge/40-cycle1-agent.md +0 -52
  481. package/rules/bridge/41-cycle2-agent.md +0 -62
  482. package/rules/lead/00-tool-lead.md +0 -61
  483. package/rules/lead/01-general.md +0 -26
  484. package/rules/lead/02-channels.md +0 -49
  485. package/rules/lead/03-team.md +0 -27
  486. package/rules/lead/04-workflow.md +0 -20
  487. package/rules/shared/00-language.md +0 -14
  488. package/rules/shared/01-tool.md +0 -138
  489. package/scripts/bootstrap.mjs +0 -130
  490. package/scripts/bridge-unify-smoke.mjs +0 -308
  491. package/scripts/build-runtime-linux.sh +0 -348
  492. package/scripts/build-runtime-macos.sh +0 -217
  493. package/scripts/build-runtime-windows.ps1 +0 -242
  494. package/scripts/builtin-utils-smoke.mjs +0 -398
  495. package/scripts/bump.mjs +0 -80
  496. package/scripts/check-json.mjs +0 -45
  497. package/scripts/check-syntax-changed.mjs +0 -102
  498. package/scripts/check-syntax.mjs +0 -58
  499. package/scripts/code-graph-batch.test.mjs +0 -33
  500. package/scripts/config-preserve-smoke.mjs +0 -180
  501. package/scripts/doctor.mjs +0 -489
  502. package/scripts/edit-normalize-fuzz.mjs +0 -130
  503. package/scripts/edit-normalize-smoke.mjs +0 -401
  504. package/scripts/edit-operation-smoke.mjs +0 -369
  505. package/scripts/edit2-smoke.mjs +0 -63
  506. package/scripts/ensure-deps.mjs +0 -259
  507. package/scripts/fuzzy-e2e.mjs +0 -28
  508. package/scripts/fuzzy-smoke.mjs +0 -26
  509. package/scripts/gateway-model.mjs +0 -596
  510. package/scripts/generate-runtime-manifest.mjs +0 -166
  511. package/scripts/guard-smoke.mjs +0 -66
  512. package/scripts/hidden-role-schema-smoke.mjs +0 -162
  513. package/scripts/hook-routing-smoke.mjs +0 -29
  514. package/scripts/inject-input.ps1 +0 -204
  515. package/scripts/io-complex-smoke.mjs +0 -667
  516. package/scripts/io-explore-bench.mjs +0 -424
  517. package/scripts/io-guardrails-smoke.mjs +0 -205
  518. package/scripts/io-mini-bench-baseline.json +0 -11
  519. package/scripts/io-mini-bench.mjs +0 -216
  520. package/scripts/io-route-harness.mjs +0 -933
  521. package/scripts/io-telemetry-report.mjs +0 -691
  522. package/scripts/lib/gateway-inventory.mjs +0 -178
  523. package/scripts/lib/gateway-settings.mjs +0 -78
  524. package/scripts/mutation-bench.mjs +0 -564
  525. package/scripts/mutation-io-smoke.mjs +0 -1097
  526. package/scripts/native-patch-bridge-smoke.mjs +0 -288
  527. package/scripts/native-patch-smoke.mjs +0 -304
  528. package/scripts/openai-oauth-catalog-smoke.mjs +0 -53
  529. package/scripts/patch-interior-context-smoke.mjs +0 -49
  530. package/scripts/patch-newline-utf8-smoke.mjs +0 -157
  531. package/scripts/perf-hook-smoke.mjs +0 -71
  532. package/scripts/permission-eval-smoke.mjs +0 -443
  533. package/scripts/prep-patch.mjs +0 -53
  534. package/scripts/prep-shim.mjs +0 -96
  535. package/scripts/provider-cache-smoke.mjs +0 -687
  536. package/scripts/report-runtime-health.mjs +0 -132
  537. package/scripts/resolve-bun.mjs +0 -60
  538. package/scripts/run-mcp.mjs +0 -1473
  539. package/scripts/salvage-v4a-shatter.test.mjs +0 -58
  540. package/scripts/scoped-cache-io-smoke.mjs +0 -103
  541. package/scripts/shell-policy-round3-smoke.mjs +0 -46
  542. package/scripts/smoke-runtime-negative.ps1 +0 -100
  543. package/scripts/smoke-runtime-negative.sh +0 -95
  544. package/scripts/stall-policy-smoke.mjs +0 -50
  545. package/scripts/start-memory-worker.mjs +0 -23
  546. package/scripts/statusline-launcher-smoke.mjs +0 -235
  547. package/scripts/stress-atomic-write.mjs +0 -1028
  548. package/scripts/test-fault-inject.mjs +0 -164
  549. package/scripts/test-large-file.mjs +0 -174
  550. package/scripts/tool-edge-smoke.mjs +0 -209
  551. package/scripts/uninstall.mjs +0 -238
  552. package/scripts/webhook-selfheal-smoke.mjs +0 -27
  553. package/scripts/write-overwrite-guard-smoke.mjs +0 -56
  554. package/server-main.mjs +0 -3350
  555. package/server.mjs +0 -468
  556. package/setup/config-merge.mjs +0 -246
  557. package/setup/install.mjs +0 -574
  558. package/setup/launch-core.mjs +0 -617
  559. package/setup/launch.mjs +0 -101
  560. package/setup/locate-claude.mjs +0 -56
  561. package/setup/mixdog-cli.mjs +0 -122
  562. package/setup/setup-server.mjs +0 -3305
  563. package/setup/setup.html +0 -3740
  564. package/setup/tui.mjs +0 -325
  565. package/skills/retro-skill-proposer/SKILL.md +0 -92
  566. package/skills/schedule-add/SKILL.md +0 -77
  567. package/skills/setup/SKILL.md +0 -356
  568. package/skills/webhook-add/SKILL.md +0 -81
  569. package/src/agent/bridge-stall-watchdog.mjs +0 -337
  570. package/src/agent/index.mjs +0 -2229
  571. package/src/agent/orchestrator/ai-wrapped-dispatch.mjs +0 -1010
  572. package/src/agent/orchestrator/bridge-retry.mjs +0 -220
  573. package/src/agent/orchestrator/bridge-trace.mjs +0 -601
  574. package/src/agent/orchestrator/cache-mtime.mjs +0 -58
  575. package/src/agent/orchestrator/config.mjs +0 -405
  576. package/src/agent/orchestrator/context/collect.mjs +0 -651
  577. package/src/agent/orchestrator/dispatch-persist.mjs +0 -549
  578. package/src/agent/orchestrator/drain-registry.mjs +0 -50
  579. package/src/agent/orchestrator/explore-validator.mjs +0 -8
  580. package/src/agent/orchestrator/internal-roles.mjs +0 -118
  581. package/src/agent/orchestrator/internal-tools.mjs +0 -88
  582. package/src/agent/orchestrator/jobs.mjs +0 -116
  583. package/src/agent/orchestrator/mcp/client.mjs +0 -364
  584. package/src/agent/orchestrator/providers/anthropic-oauth.mjs +0 -1884
  585. package/src/agent/orchestrator/providers/anthropic.mjs +0 -598
  586. package/src/agent/orchestrator/providers/gemini.mjs +0 -1530
  587. package/src/agent/orchestrator/providers/grok-oauth.mjs +0 -779
  588. package/src/agent/orchestrator/providers/model-catalog.mjs +0 -374
  589. package/src/agent/orchestrator/providers/openai-compat-stream.mjs +0 -366
  590. package/src/agent/orchestrator/providers/openai-compat.mjs +0 -1511
  591. package/src/agent/orchestrator/providers/openai-oauth-ws.mjs +0 -1891
  592. package/src/agent/orchestrator/providers/openai-oauth.mjs +0 -1456
  593. package/src/agent/orchestrator/providers/openai-ws.mjs +0 -127
  594. package/src/agent/orchestrator/providers/registry.mjs +0 -192
  595. package/src/agent/orchestrator/providers/retry-classifier.mjs +0 -325
  596. package/src/agent/orchestrator/session/cache/prefetch-cache.mjs +0 -142
  597. package/src/agent/orchestrator/session/cache/read-cache.mjs +0 -319
  598. package/src/agent/orchestrator/session/cache/scoped-cache.mjs +0 -361
  599. package/src/agent/orchestrator/session/loop.mjs +0 -1619
  600. package/src/agent/orchestrator/session/manager.mjs +0 -1991
  601. package/src/agent/orchestrator/session/result-classification.mjs +0 -65
  602. package/src/agent/orchestrator/session/store.mjs +0 -632
  603. package/src/agent/orchestrator/session/stream-watchdog.mjs +0 -130
  604. package/src/agent/orchestrator/session/tool-result-offload.mjs +0 -166
  605. package/src/agent/orchestrator/session/trim.mjs +0 -491
  606. package/src/agent/orchestrator/smart-bridge/CACHE-SHARD.md +0 -115
  607. package/src/agent/orchestrator/smart-bridge/bridge-llm.mjs +0 -331
  608. package/src/agent/orchestrator/smart-bridge/cache-obs.mjs +0 -150
  609. package/src/agent/orchestrator/smart-bridge/cache-strategy.mjs +0 -228
  610. package/src/agent/orchestrator/smart-bridge/index.mjs +0 -215
  611. package/src/agent/orchestrator/smart-bridge/profiles.mjs +0 -37
  612. package/src/agent/orchestrator/smart-bridge/registry.mjs +0 -348
  613. package/src/agent/orchestrator/stall-policy.mjs +0 -201
  614. package/src/agent/orchestrator/tool-loop-guard.mjs +0 -75
  615. package/src/agent/orchestrator/tools/bash-session.mjs +0 -722
  616. package/src/agent/orchestrator/tools/builtin/arg-guard.mjs +0 -511
  617. package/src/agent/orchestrator/tools/builtin/bash-tool.mjs +0 -480
  618. package/src/agent/orchestrator/tools/builtin/builtin-tools.mjs +0 -256
  619. package/src/agent/orchestrator/tools/builtin/edit-base-guard.mjs +0 -58
  620. package/src/agent/orchestrator/tools/builtin/edit-byte-plan.mjs +0 -240
  621. package/src/agent/orchestrator/tools/builtin/edit-byte-utils.mjs +0 -113
  622. package/src/agent/orchestrator/tools/builtin/edit-commit.mjs +0 -74
  623. package/src/agent/orchestrator/tools/builtin/edit-context-utils.mjs +0 -242
  624. package/src/agent/orchestrator/tools/builtin/edit-diagnostics.mjs +0 -211
  625. package/src/agent/orchestrator/tools/builtin/edit-engine.mjs +0 -1364
  626. package/src/agent/orchestrator/tools/builtin/edit-failure-context.mjs +0 -126
  627. package/src/agent/orchestrator/tools/builtin/edit-hint.mjs +0 -141
  628. package/src/agent/orchestrator/tools/builtin/edit-match-utils.mjs +0 -194
  629. package/src/agent/orchestrator/tools/builtin/edit-partial-write.mjs +0 -60
  630. package/src/agent/orchestrator/tools/builtin/edit-stale-refresh.mjs +0 -168
  631. package/src/agent/orchestrator/tools/builtin/edit-tool.mjs +0 -173
  632. package/src/agent/orchestrator/tools/builtin/edit-utf8-guard.mjs +0 -48
  633. package/src/agent/orchestrator/tools/builtin/fuzzy-match.mjs +0 -99
  634. package/src/agent/orchestrator/tools/builtin/glob-walk.mjs +0 -193
  635. package/src/agent/orchestrator/tools/builtin/list-tool.mjs +0 -597
  636. package/src/agent/orchestrator/tools/builtin/native-edit-runner.mjs +0 -110
  637. package/src/agent/orchestrator/tools/builtin/notebook-edit-tool.mjs +0 -300
  638. package/src/agent/orchestrator/tools/builtin/path-diagnostics.mjs +0 -152
  639. package/src/agent/orchestrator/tools/builtin/read-formatting.mjs +0 -118
  640. package/src/agent/orchestrator/tools/builtin/read-open.mjs +0 -190
  641. package/src/agent/orchestrator/tools/builtin/read-single-tool.mjs +0 -728
  642. package/src/agent/orchestrator/tools/builtin/read-snapshot-runtime.mjs +0 -173
  643. package/src/agent/orchestrator/tools/builtin/read-streaming.mjs +0 -602
  644. package/src/agent/orchestrator/tools/builtin/rename-tool.mjs +0 -196
  645. package/src/agent/orchestrator/tools/builtin/rg-runner.mjs +0 -422
  646. package/src/agent/orchestrator/tools/builtin/search-builders.mjs +0 -158
  647. package/src/agent/orchestrator/tools/builtin/search-tool.mjs +0 -869
  648. package/src/agent/orchestrator/tools/builtin/shell-jobs.mjs +0 -962
  649. package/src/agent/orchestrator/tools/builtin/shell-runtime.mjs +0 -223
  650. package/src/agent/orchestrator/tools/builtin/snapshot-store.mjs +0 -206
  651. package/src/agent/orchestrator/tools/builtin/write-tool.mjs +0 -401
  652. package/src/agent/orchestrator/tools/builtin.mjs +0 -503
  653. package/src/agent/orchestrator/tools/code-graph-tool-defs.mjs +0 -24
  654. package/src/agent/orchestrator/tools/code-graph.mjs +0 -4095
  655. package/src/agent/orchestrator/tools/cwd-tool.mjs +0 -298
  656. package/src/agent/orchestrator/tools/destructive-warning.mjs +0 -323
  657. package/src/agent/orchestrator/tools/edit-normalize.mjs +0 -603
  658. package/src/agent/orchestrator/tools/graph-binary-fetcher.mjs +0 -154
  659. package/src/agent/orchestrator/tools/graph-manifest.json +0 -26
  660. package/src/agent/orchestrator/tools/host-input.mjs +0 -204
  661. package/src/agent/orchestrator/tools/patch-binary-fetcher.mjs +0 -143
  662. package/src/agent/orchestrator/tools/patch-manifest.json +0 -26
  663. package/src/agent/orchestrator/tools/patch-tool-defs.mjs +0 -20
  664. package/src/agent/orchestrator/tools/patch.mjs +0 -2754
  665. package/src/agent/orchestrator/tools/progress-message.mjs +0 -118
  666. package/src/agent/orchestrator/tools/shell-command.mjs +0 -865
  667. package/src/agent/orchestrator/tools/shell-policy-imports.mjs +0 -7
  668. package/src/agent/orchestrator/tools/shell-snapshot.mjs +0 -313
  669. package/src/agent/orchestrator/workflow-store.mjs +0 -93
  670. package/src/agent/tool-defs.mjs +0 -110
  671. package/src/channels/backends/discord.mjs +0 -784
  672. package/src/channels/data/voice-runtime-manifest.json +0 -138
  673. package/src/channels/index.mjs +0 -3268
  674. package/src/channels/lib/config.mjs +0 -292
  675. package/src/channels/lib/drop-trace.mjs +0 -71
  676. package/src/channels/lib/event-pipeline.mjs +0 -81
  677. package/src/channels/lib/holidays.mjs +0 -138
  678. package/src/channels/lib/hook-pipe-server.mjs +0 -822
  679. package/src/channels/lib/output-forwarder.mjs +0 -765
  680. package/src/channels/lib/runtime-paths.mjs +0 -552
  681. package/src/channels/lib/scheduler.mjs +0 -723
  682. package/src/channels/lib/session-discovery.mjs +0 -103
  683. package/src/channels/lib/state-file.mjs +0 -68
  684. package/src/channels/lib/status-snapshot.mjs +0 -219
  685. package/src/channels/lib/tool-format.mjs +0 -140
  686. package/src/channels/lib/transcript-discovery.mjs +0 -195
  687. package/src/channels/lib/voice-runtime-fetcher.mjs +0 -734
  688. package/src/channels/lib/webhook.mjs +0 -1318
  689. package/src/channels/tool-defs.mjs +0 -170
  690. package/src/daemon/host.mjs +0 -118
  691. package/src/daemon/mcp-transport.mjs +0 -47
  692. package/src/daemon/session.mjs +0 -100
  693. package/src/daemon/thin-client.mjs +0 -71
  694. package/src/daemon/transport.mjs +0 -163
  695. package/src/gateway/claude-current.mjs +0 -255
  696. package/src/gateway/oauth-usage.mjs +0 -598
  697. package/src/gateway/route-meta.mjs +0 -629
  698. package/src/gateway/server.mjs +0 -713
  699. package/src/memory/data/runtime-manifest.json +0 -40
  700. package/src/memory/index.mjs +0 -3332
  701. package/src/memory/lib/core-memory-store.mjs +0 -330
  702. package/src/memory/lib/embedding-provider.mjs +0 -269
  703. package/src/memory/lib/embedding-worker.mjs +0 -323
  704. package/src/memory/lib/memory-cycle1.mjs +0 -645
  705. package/src/memory/lib/memory-cycle2.mjs +0 -1284
  706. package/src/memory/lib/memory-cycle3.mjs +0 -540
  707. package/src/memory/lib/memory-embed.mjs +0 -299
  708. package/src/memory/lib/memory-ops-policy.mjs +0 -190
  709. package/src/memory/lib/memory-recall-store.mjs +0 -638
  710. package/src/memory/lib/memory.mjs +0 -412
  711. package/src/memory/lib/pg/adapter.mjs +0 -308
  712. package/src/memory/lib/pg/process.mjs +0 -360
  713. package/src/memory/lib/pg/supervisor.mjs +0 -396
  714. package/src/memory/lib/runtime-fetcher.mjs +0 -458
  715. package/src/memory/lib/trace-store.mjs +0 -728
  716. package/src/memory/tool-defs.mjs +0 -79
  717. package/src/search/index.mjs +0 -1173
  718. package/src/search/lib/backends/anthropic-oauth.mjs +0 -98
  719. package/src/search/lib/backends/exa.mjs +0 -50
  720. package/src/search/lib/backends/firecrawl.mjs +0 -61
  721. package/src/search/lib/backends/gemini-api.mjs +0 -83
  722. package/src/search/lib/backends/grok-oauth.mjs +0 -86
  723. package/src/search/lib/backends/index.mjs +0 -150
  724. package/src/search/lib/backends/openai-api.mjs +0 -144
  725. package/src/search/lib/backends/openai-oauth.mjs +0 -102
  726. package/src/search/lib/backends/openai-web-search.mjs +0 -76
  727. package/src/search/lib/backends/tavily.mjs +0 -55
  728. package/src/search/lib/backends/xai-api.mjs +0 -113
  729. package/src/search/lib/config.mjs +0 -192
  730. package/src/search/lib/provider-usage.mjs +0 -67
  731. package/src/search/lib/providers.mjs +0 -47
  732. package/src/search/lib/search-intent.mjs +0 -109
  733. package/src/search/lib/setup-handler.mjs +0 -261
  734. package/src/search/lib/web-tools.mjs +0 -1219
  735. package/src/search/tool-defs.mjs +0 -83
  736. package/src/setup/defender-exclusion.mjs +0 -183
  737. package/src/shared/atomic-file.mjs +0 -436
  738. package/src/shared/config.mjs +0 -372
  739. package/src/shared/daemon-recycle.mjs +0 -108
  740. package/src/shared/disable-claude-builtins.mjs +0 -91
  741. package/src/shared/err-text.mjs +0 -12
  742. package/src/shared/llm/http-agent.mjs +0 -123
  743. package/src/shared/open-url.mjs +0 -62
  744. package/src/shared/plugin-paths.mjs +0 -58
  745. package/src/shared/schedules-store.mjs +0 -70
  746. package/src/shared/seed.mjs +0 -161
  747. package/src/shared/user-cwd.mjs +0 -225
  748. package/src/shared/user-data-guard.mjs +0 -244
  749. package/src/status/aggregator.mjs +0 -584
  750. package/src/status/server.mjs +0 -413
  751. package/tools.json +0 -1671
  752. /package/{defaults → src/defaults}/cycle3-review-prompt.md +0 -0
  753. /package/{defaults → src/defaults}/memory-promote-prompt.md +0 -0
  754. /package/{hooks → src/hooks}/lib/permission-rules.cjs +0 -0
  755. /package/{lib → src/lib}/config-cjs.cjs +0 -0
  756. /package/{lib → src/lib}/hook-pipe-path.cjs +0 -0
  757. /package/{lib → src/lib}/mixdog-debug.cjs +0 -0
  758. /package/{lib → src/lib}/text-utils.cjs +0 -0
  759. /package/{rules → src/rules}/bridge/42-cycle3-agent.md +0 -0
  760. /package/src/{agent → runtime/agent}/orchestrator/activity-bus.mjs +0 -0
  761. /package/src/{agent → runtime/agent}/orchestrator/providers/anthropic-betas.mjs +0 -0
  762. /package/src/{agent → runtime/agent}/orchestrator/session/abort-lookup.mjs +0 -0
  763. /package/src/{agent → runtime/agent}/orchestrator/session/cache/post-edit-marks.mjs +0 -0
  764. /package/src/{agent → runtime/agent}/orchestrator/session/cache/scoped-cache-outcome.mjs +0 -0
  765. /package/src/{agent → runtime/agent}/orchestrator/session/cache/util.mjs +0 -0
  766. /package/src/{agent → runtime/agent}/orchestrator/session/read-dedup.mjs +0 -0
  767. /package/src/{agent → runtime/agent}/orchestrator/session/save-session-worker.mjs +0 -0
  768. /package/src/{agent → runtime/agent}/orchestrator/smart-bridge/session-builder.mjs +0 -0
  769. /package/src/{agent → runtime/agent}/orchestrator/tools/bash-policy-scan.mjs +0 -0
  770. /package/src/{agent → runtime/agent}/orchestrator/tools/builtin/advisory-lock.mjs +0 -0
  771. /package/src/{agent → runtime/agent}/orchestrator/tools/builtin/atomic-write.mjs +0 -0
  772. /package/src/{agent → runtime/agent}/orchestrator/tools/builtin/binary-file.mjs +0 -0
  773. /package/src/{agent → runtime/agent}/orchestrator/tools/builtin/cache-layers.mjs +0 -0
  774. /package/src/{agent → runtime/agent}/orchestrator/tools/builtin/cwd-utils.mjs +0 -0
  775. /package/src/{agent → runtime/agent}/orchestrator/tools/builtin/device-paths.mjs +0 -0
  776. /package/src/{agent → runtime/agent}/orchestrator/tools/builtin/diagnostics-tool.mjs +0 -0
  777. /package/src/{agent → runtime/agent}/orchestrator/tools/builtin/diff-utils.mjs +0 -0
  778. /package/src/{agent → runtime/agent}/orchestrator/tools/builtin/fs-reachability.mjs +0 -0
  779. /package/src/{agent → runtime/agent}/orchestrator/tools/builtin/grep-formatting.mjs +0 -0
  780. /package/src/{agent → runtime/agent}/orchestrator/tools/builtin/hash-utils.mjs +0 -0
  781. /package/src/{agent → runtime/agent}/orchestrator/tools/builtin/list-formatting.mjs +0 -0
  782. /package/src/{agent → runtime/agent}/orchestrator/tools/builtin/open-config-tool.mjs +0 -0
  783. /package/src/{agent → runtime/agent}/orchestrator/tools/builtin/path-locks.mjs +0 -0
  784. /package/src/{agent → runtime/agent}/orchestrator/tools/builtin/path-utils.mjs +0 -0
  785. /package/src/{agent → runtime/agent}/orchestrator/tools/builtin/read-args.mjs +0 -0
  786. /package/src/{agent → runtime/agent}/orchestrator/tools/builtin/read-batch.mjs +0 -0
  787. /package/src/{agent → runtime/agent}/orchestrator/tools/builtin/read-constants.mjs +0 -0
  788. /package/src/{agent → runtime/agent}/orchestrator/tools/builtin/read-image-resize.mjs +0 -0
  789. /package/src/{agent → runtime/agent}/orchestrator/tools/builtin/read-image.mjs +0 -0
  790. /package/src/{agent → runtime/agent}/orchestrator/tools/builtin/read-lines.mjs +0 -0
  791. /package/src/{agent → runtime/agent}/orchestrator/tools/builtin/read-mode-tool.mjs +0 -0
  792. /package/src/{agent → runtime/agent}/orchestrator/tools/builtin/read-range-index.mjs +0 -0
  793. /package/src/{agent → runtime/agent}/orchestrator/tools/builtin/read-ranges.mjs +0 -0
  794. /package/src/{agent → runtime/agent}/orchestrator/tools/builtin/read-special-files.mjs +0 -0
  795. /package/src/{agent → runtime/agent}/orchestrator/tools/builtin/read-tool.mjs +0 -0
  796. /package/src/{agent → runtime/agent}/orchestrator/tools/builtin/read-windows.mjs +0 -0
  797. /package/src/{agent → runtime/agent}/orchestrator/tools/builtin/shell-analysis.mjs +0 -0
  798. /package/src/{agent → runtime/agent}/orchestrator/tools/builtin/shell-output.mjs +0 -0
  799. /package/src/{agent → runtime/agent}/orchestrator/tools/builtin/snapshot-helpers.mjs +0 -0
  800. /package/src/{agent → runtime/agent}/orchestrator/tools/builtin/snapshot-validation.mjs +0 -0
  801. /package/src/{agent → runtime/agent}/orchestrator/tools/builtin/text-stats.mjs +0 -0
  802. /package/src/{agent → runtime/agent}/orchestrator/tools/builtin/windows-roots.mjs +0 -0
  803. /package/src/{agent → runtime/agent}/orchestrator/tools/code-graph-prewarm-worker.mjs +0 -0
  804. /package/src/{agent → runtime/agent}/orchestrator/tools/env-scrub.mjs +0 -0
  805. /package/src/{agent → runtime/agent}/orchestrator/tools/mutation-content-cache.mjs +0 -0
  806. /package/src/{agent → runtime/agent}/orchestrator/tools/mutation-planner.mjs +0 -0
  807. /package/src/{agent → runtime/agent}/orchestrator/tools/next-call-utils.mjs +0 -0
  808. /package/src/{agent → runtime/agent}/orchestrator/tools/result-compression.mjs +0 -0
  809. /package/src/{agent → runtime/agent}/orchestrator/tools/shell-exec-policy.mjs +0 -0
  810. /package/src/{agent → runtime/agent}/orchestrator/tools/shell-policy-danger-target.mjs +0 -0
  811. /package/src/{agent → runtime/agent}/orchestrator/tools/shell-policy.mjs +0 -0
  812. /package/src/{channels → runtime/channels}/lib/cli-worker-host.mjs +0 -0
  813. /package/src/{channels → runtime/channels}/lib/config-lock.mjs +0 -0
  814. /package/src/{channels → runtime/channels}/lib/event-queue.mjs +0 -0
  815. /package/src/{channels → runtime/channels}/lib/executor.mjs +0 -0
  816. /package/src/{channels → runtime/channels}/lib/format.mjs +0 -0
  817. /package/src/{channels → runtime/channels}/lib/interaction-workflows.mjs +0 -0
  818. /package/src/{channels → runtime/channels}/lib/memory-client.mjs +0 -0
  819. /package/src/{channels → runtime/channels}/lib/session-control.mjs +0 -0
  820. /package/src/{channels → runtime/channels}/lib/settings.mjs +0 -0
  821. /package/src/{channels → runtime/channels}/lib/whisper-server.mjs +0 -0
  822. /package/src/{memory → runtime/memory}/lib/agent-ipc.mjs +0 -0
  823. /package/src/{memory → runtime/memory}/lib/bridge-trace-queries.mjs +0 -0
  824. /package/src/{memory → runtime/memory}/lib/llm-worker-host.mjs +0 -0
  825. /package/src/{memory → runtime/memory}/lib/memory-cycle.mjs +0 -0
  826. /package/src/{memory → runtime/memory}/lib/memory-extraction.mjs +0 -0
  827. /package/src/{memory → runtime/memory}/lib/memory-maintenance-store.mjs +0 -0
  828. /package/src/{memory → runtime/memory}/lib/memory-recall-id-patch.mjs +0 -0
  829. /package/src/{memory → runtime/memory}/lib/memory-recall-read-query.mjs +0 -0
  830. /package/src/{memory → runtime/memory}/lib/memory-recall-scope-filter.mjs +0 -0
  831. /package/src/{memory → runtime/memory}/lib/memory-retrievers.mjs +0 -0
  832. /package/src/{memory → runtime/memory}/lib/memory-score.mjs +0 -0
  833. /package/src/{memory → runtime/memory}/lib/memory-text-utils.mjs +0 -0
  834. /package/src/{memory → runtime/memory}/lib/model-profile.mjs +0 -0
  835. /package/src/{memory → runtime/memory}/lib/project-id-resolver.mjs +0 -0
  836. /package/src/{search → runtime/search}/lib/cache.mjs +0 -0
  837. /package/src/{search → runtime/search}/lib/formatter.mjs +0 -0
  838. /package/src/{search → runtime/search}/lib/state.mjs +0 -0
  839. /package/src/{shared → runtime/shared}/abort-controller.mjs +0 -0
  840. /package/src/{shared → runtime/shared}/llm/cost.mjs +0 -0
  841. /package/src/{shared → runtime/shared}/llm/index.mjs +0 -0
  842. /package/src/{shared → runtime/shared}/llm/pid-cleanup.mjs +0 -0
  843. /package/src/{shared → runtime/shared}/llm/usage-log.mjs +0 -0
  844. /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
- }