mixdog 0.7.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (404) hide show
  1. package/.claude-plugin/marketplace.json +31 -0
  2. package/.claude-plugin/plugin.json +20 -0
  3. package/.gitattributes +34 -0
  4. package/.mcp.json +14 -0
  5. package/ARCHITECTURE.md +77 -0
  6. package/CHANGELOG.md +7 -0
  7. package/CONTRIBUTING.md +45 -0
  8. package/DATA-FLOW.md +79 -0
  9. package/LICENSE +21 -0
  10. package/README.md +389 -0
  11. package/SECURITY.md +138 -0
  12. package/UNINSTALL.md +112 -0
  13. package/agents/maintenance.md +5 -0
  14. package/agents/memory-classification.md +30 -0
  15. package/agents/scheduler-task.md +18 -0
  16. package/agents/webhook-handler.md +27 -0
  17. package/agents/worker.md +24 -0
  18. package/bin/bridge +133 -0
  19. package/bin/statusline-launcher.mjs +78 -0
  20. package/bin/statusline-lib.mjs +550 -0
  21. package/bin/statusline.mjs +607 -0
  22. package/bun.lock +802 -0
  23. package/commands/config.md +16 -0
  24. package/commands/doctor.md +13 -0
  25. package/commands/setup.md +17 -0
  26. package/defaults/cycle3-review-prompt.md +90 -0
  27. package/defaults/hidden-roles.json +65 -0
  28. package/defaults/memory-chunk-prompt.md +63 -0
  29. package/defaults/memory-promote-prompt.md +135 -0
  30. package/defaults/mixdog-config.template.json +27 -0
  31. package/defaults/user-workflow.json +8 -0
  32. package/defaults/user-workflow.md +12 -0
  33. package/hooks/hooks.json +73 -0
  34. package/hooks/lib/active-instance.cjs +77 -0
  35. package/hooks/lib/permission-evaluator.cjs +411 -0
  36. package/hooks/lib/permission-route.cjs +63 -0
  37. package/hooks/lib/permission-rules.cjs +170 -0
  38. package/hooks/lib/settings-loader.cjs +116 -0
  39. package/hooks/post-tool-use.cjs +84 -0
  40. package/hooks/pre-mcp-sandbox.cjs +158 -0
  41. package/hooks/pre-tool-subagent.cjs +253 -0
  42. package/hooks/session-start.cjs +1372 -0
  43. package/hooks/turn-timer.cjs +82 -0
  44. package/lib/claude-md-writer.cjs +386 -0
  45. package/lib/config-cjs.cjs +61 -0
  46. package/lib/hook-pipe-path.cjs +10 -0
  47. package/lib/keychain-cjs.cjs +263 -0
  48. package/lib/plugin-paths.cjs +61 -0
  49. package/lib/rules-builder.cjs +241 -0
  50. package/lib/text-utils.cjs +61 -0
  51. package/native/README.md +117 -0
  52. package/native/prebuilt/linux-aarch64/mixdog-shim +0 -0
  53. package/native/prebuilt/linux-x86_64/mixdog-shim +0 -0
  54. package/native/prebuilt/macos-aarch64/mixdog-shim +0 -0
  55. package/native/prebuilt/macos-x86_64/mixdog-shim +0 -0
  56. package/native/prebuilt/windows-x86_64/mixdog-shim.exe +0 -0
  57. package/package.json +107 -0
  58. package/prompts/code-review.txt +16 -0
  59. package/prompts/security-audit.txt +17 -0
  60. package/rules/bridge/00-common.md +39 -0
  61. package/rules/bridge/20-skip-protocol.md +18 -0
  62. package/rules/bridge/30-explorer.md +33 -0
  63. package/rules/bridge/40-cycle1-agent.md +52 -0
  64. package/rules/bridge/41-cycle2-agent.md +62 -0
  65. package/rules/bridge/42-cycle3-agent.md +44 -0
  66. package/rules/lead/00-tool-lead.md +61 -0
  67. package/rules/lead/01-general.md +23 -0
  68. package/rules/lead/02-channels.md +49 -0
  69. package/rules/lead/03-team.md +27 -0
  70. package/rules/lead/04-workflow.md +20 -0
  71. package/rules/shared/00-language.md +14 -0
  72. package/rules/shared/01-tool.md +138 -0
  73. package/scripts/bootstrap.mjs +184 -0
  74. package/scripts/bridge-unify-smoke.mjs +308 -0
  75. package/scripts/build-runtime-linux.sh +348 -0
  76. package/scripts/build-runtime-macos.sh +217 -0
  77. package/scripts/build-runtime-windows.ps1 +242 -0
  78. package/scripts/builtin-utils-smoke.mjs +392 -0
  79. package/scripts/check-json.mjs +45 -0
  80. package/scripts/check-syntax-changed.mjs +102 -0
  81. package/scripts/check-syntax.mjs +58 -0
  82. package/scripts/code-graph-batch.test.mjs +33 -0
  83. package/scripts/config-preserve-smoke.mjs +180 -0
  84. package/scripts/doctor.mjs +484 -0
  85. package/scripts/edit-normalize-fuzz.mjs +130 -0
  86. package/scripts/edit-normalize-smoke.mjs +401 -0
  87. package/scripts/edit-operation-smoke.mjs +369 -0
  88. package/scripts/edit2-smoke.mjs +63 -0
  89. package/scripts/fuzzy-e2e.mjs +28 -0
  90. package/scripts/fuzzy-smoke.mjs +26 -0
  91. package/scripts/generate-runtime-manifest.mjs +166 -0
  92. package/scripts/guard-smoke.mjs +66 -0
  93. package/scripts/hidden-role-schema-smoke.mjs +162 -0
  94. package/scripts/hook-routing-smoke.mjs +29 -0
  95. package/scripts/inject-input.ps1 +204 -0
  96. package/scripts/io-complex-smoke.mjs +667 -0
  97. package/scripts/io-explore-bench.mjs +424 -0
  98. package/scripts/io-guardrails-smoke.mjs +205 -0
  99. package/scripts/io-mini-bench-baseline.json +11 -0
  100. package/scripts/io-mini-bench.mjs +216 -0
  101. package/scripts/io-route-harness.mjs +933 -0
  102. package/scripts/io-telemetry-report.mjs +691 -0
  103. package/scripts/mutation-bench.mjs +564 -0
  104. package/scripts/mutation-io-smoke.mjs +1081 -0
  105. package/scripts/native-patch-bridge-smoke.mjs +288 -0
  106. package/scripts/native-patch-smoke.mjs +304 -0
  107. package/scripts/patch-interior-context-smoke.mjs +49 -0
  108. package/scripts/patch-newline-utf8-smoke.mjs +157 -0
  109. package/scripts/perf-hook-smoke.mjs +71 -0
  110. package/scripts/permission-eval-smoke.mjs +426 -0
  111. package/scripts/prep-patch.mjs +53 -0
  112. package/scripts/prep-shim.mjs +96 -0
  113. package/scripts/provider-cache-smoke.mjs +687 -0
  114. package/scripts/report-runtime-health.mjs +132 -0
  115. package/scripts/run-mcp.mjs +1547 -0
  116. package/scripts/salvage-v4a-shatter.test.mjs +58 -0
  117. package/scripts/scoped-cache-io-smoke.mjs +103 -0
  118. package/scripts/shell-policy-round3-smoke.mjs +46 -0
  119. package/scripts/smoke-runtime-negative.ps1 +100 -0
  120. package/scripts/smoke-runtime-negative.sh +95 -0
  121. package/scripts/stall-policy-smoke.mjs +50 -0
  122. package/scripts/start-memory-worker.mjs +23 -0
  123. package/scripts/statusline-launcher-smoke.mjs +82 -0
  124. package/scripts/stress-atomic-write.mjs +1028 -0
  125. package/scripts/test-config-rmw-restore.mjs +122 -0
  126. package/scripts/test-fault-inject.mjs +164 -0
  127. package/scripts/test-large-file.mjs +174 -0
  128. package/scripts/tool-edge-smoke.mjs +209 -0
  129. package/scripts/uninstall.mjs +201 -0
  130. package/scripts/webhook-selfheal-smoke.mjs +29 -0
  131. package/scripts/write-overwrite-guard-smoke.mjs +56 -0
  132. package/server-main.mjs +3055 -0
  133. package/server.mjs +468 -0
  134. package/setup/config-merge.mjs +254 -0
  135. package/setup/install.mjs +120 -0
  136. package/setup/launch-core.mjs +507 -0
  137. package/setup/launch.mjs +101 -0
  138. package/setup/setup-server.mjs +3206 -0
  139. package/setup/setup.html +3693 -0
  140. package/skills/retro-skill-proposer/SKILL.md +92 -0
  141. package/skills/schedule-add/SKILL.md +77 -0
  142. package/skills/setup/SKILL.md +346 -0
  143. package/skills/webhook-add/SKILL.md +81 -0
  144. package/src/agent/bridge-stall-watchdog.mjs +337 -0
  145. package/src/agent/index.mjs +2138 -0
  146. package/src/agent/orchestrator/activity-bus.mjs +38 -0
  147. package/src/agent/orchestrator/ai-wrapped-dispatch.mjs +1010 -0
  148. package/src/agent/orchestrator/bridge-retry.mjs +220 -0
  149. package/src/agent/orchestrator/bridge-trace.mjs +583 -0
  150. package/src/agent/orchestrator/cache-mtime.mjs +58 -0
  151. package/src/agent/orchestrator/config.mjs +358 -0
  152. package/src/agent/orchestrator/context/collect.mjs +651 -0
  153. package/src/agent/orchestrator/dispatch-persist.mjs +549 -0
  154. package/src/agent/orchestrator/drain-registry.mjs +50 -0
  155. package/src/agent/orchestrator/explore-validator.mjs +8 -0
  156. package/src/agent/orchestrator/internal-roles.mjs +118 -0
  157. package/src/agent/orchestrator/internal-tools.mjs +88 -0
  158. package/src/agent/orchestrator/jobs.mjs +116 -0
  159. package/src/agent/orchestrator/mcp/client.mjs +364 -0
  160. package/src/agent/orchestrator/providers/anthropic-betas.mjs +21 -0
  161. package/src/agent/orchestrator/providers/anthropic-oauth.mjs +1745 -0
  162. package/src/agent/orchestrator/providers/anthropic.mjs +437 -0
  163. package/src/agent/orchestrator/providers/gemini.mjs +1175 -0
  164. package/src/agent/orchestrator/providers/grok-oauth.mjs +782 -0
  165. package/src/agent/orchestrator/providers/model-catalog.mjs +241 -0
  166. package/src/agent/orchestrator/providers/openai-compat.mjs +1467 -0
  167. package/src/agent/orchestrator/providers/openai-oauth-ws.mjs +1890 -0
  168. package/src/agent/orchestrator/providers/openai-oauth.mjs +1307 -0
  169. package/src/agent/orchestrator/providers/openai-ws.mjs +104 -0
  170. package/src/agent/orchestrator/providers/registry.mjs +192 -0
  171. package/src/agent/orchestrator/providers/retry-classifier.mjs +325 -0
  172. package/src/agent/orchestrator/session/abort-lookup.mjs +13 -0
  173. package/src/agent/orchestrator/session/cache/post-edit-marks.mjs +42 -0
  174. package/src/agent/orchestrator/session/cache/prefetch-cache.mjs +142 -0
  175. package/src/agent/orchestrator/session/cache/read-cache.mjs +319 -0
  176. package/src/agent/orchestrator/session/cache/scoped-cache-outcome.mjs +11 -0
  177. package/src/agent/orchestrator/session/cache/scoped-cache.mjs +361 -0
  178. package/src/agent/orchestrator/session/cache/util.mjs +49 -0
  179. package/src/agent/orchestrator/session/loop.mjs +1478 -0
  180. package/src/agent/orchestrator/session/manager.mjs +1975 -0
  181. package/src/agent/orchestrator/session/read-dedup.mjs +6 -0
  182. package/src/agent/orchestrator/session/result-classification.mjs +65 -0
  183. package/src/agent/orchestrator/session/save-session-worker.mjs +18 -0
  184. package/src/agent/orchestrator/session/store.mjs +624 -0
  185. package/src/agent/orchestrator/session/stream-watchdog.mjs +130 -0
  186. package/src/agent/orchestrator/session/tool-result-offload.mjs +166 -0
  187. package/src/agent/orchestrator/session/trim.mjs +491 -0
  188. package/src/agent/orchestrator/smart-bridge/CACHE-SHARD.md +115 -0
  189. package/src/agent/orchestrator/smart-bridge/bridge-llm.mjs +327 -0
  190. package/src/agent/orchestrator/smart-bridge/cache-obs.mjs +150 -0
  191. package/src/agent/orchestrator/smart-bridge/cache-strategy.mjs +228 -0
  192. package/src/agent/orchestrator/smart-bridge/index.mjs +215 -0
  193. package/src/agent/orchestrator/smart-bridge/profiles.mjs +37 -0
  194. package/src/agent/orchestrator/smart-bridge/registry.mjs +348 -0
  195. package/src/agent/orchestrator/smart-bridge/session-builder.mjs +116 -0
  196. package/src/agent/orchestrator/stall-policy.mjs +195 -0
  197. package/src/agent/orchestrator/tool-loop-guard.mjs +75 -0
  198. package/src/agent/orchestrator/tools/bash-policy-scan.mjs +77 -0
  199. package/src/agent/orchestrator/tools/bash-session.mjs +721 -0
  200. package/src/agent/orchestrator/tools/builtin/advisory-lock.mjs +171 -0
  201. package/src/agent/orchestrator/tools/builtin/arg-guard.mjs +455 -0
  202. package/src/agent/orchestrator/tools/builtin/atomic-write.mjs +236 -0
  203. package/src/agent/orchestrator/tools/builtin/bash-tool.mjs +480 -0
  204. package/src/agent/orchestrator/tools/builtin/binary-file.mjs +76 -0
  205. package/src/agent/orchestrator/tools/builtin/builtin-tools.mjs +256 -0
  206. package/src/agent/orchestrator/tools/builtin/cache-layers.mjs +386 -0
  207. package/src/agent/orchestrator/tools/builtin/cwd-utils.mjs +37 -0
  208. package/src/agent/orchestrator/tools/builtin/device-paths.mjs +154 -0
  209. package/src/agent/orchestrator/tools/builtin/diagnostics-tool.mjs +292 -0
  210. package/src/agent/orchestrator/tools/builtin/diff-utils.mjs +109 -0
  211. package/src/agent/orchestrator/tools/builtin/edit-base-guard.mjs +58 -0
  212. package/src/agent/orchestrator/tools/builtin/edit-byte-plan.mjs +240 -0
  213. package/src/agent/orchestrator/tools/builtin/edit-byte-utils.mjs +113 -0
  214. package/src/agent/orchestrator/tools/builtin/edit-commit.mjs +74 -0
  215. package/src/agent/orchestrator/tools/builtin/edit-context-utils.mjs +242 -0
  216. package/src/agent/orchestrator/tools/builtin/edit-diagnostics.mjs +211 -0
  217. package/src/agent/orchestrator/tools/builtin/edit-engine.mjs +1364 -0
  218. package/src/agent/orchestrator/tools/builtin/edit-failure-context.mjs +126 -0
  219. package/src/agent/orchestrator/tools/builtin/edit-hint.mjs +141 -0
  220. package/src/agent/orchestrator/tools/builtin/edit-match-utils.mjs +194 -0
  221. package/src/agent/orchestrator/tools/builtin/edit-partial-write.mjs +60 -0
  222. package/src/agent/orchestrator/tools/builtin/edit-stale-refresh.mjs +168 -0
  223. package/src/agent/orchestrator/tools/builtin/edit-tool.mjs +173 -0
  224. package/src/agent/orchestrator/tools/builtin/edit-utf8-guard.mjs +48 -0
  225. package/src/agent/orchestrator/tools/builtin/fs-reachability.mjs +48 -0
  226. package/src/agent/orchestrator/tools/builtin/fuzzy-match.mjs +99 -0
  227. package/src/agent/orchestrator/tools/builtin/glob-walk.mjs +170 -0
  228. package/src/agent/orchestrator/tools/builtin/grep-formatting.mjs +113 -0
  229. package/src/agent/orchestrator/tools/builtin/hash-utils.mjs +6 -0
  230. package/src/agent/orchestrator/tools/builtin/list-formatting.mjs +7 -0
  231. package/src/agent/orchestrator/tools/builtin/list-tool.mjs +593 -0
  232. package/src/agent/orchestrator/tools/builtin/native-edit-runner.mjs +89 -0
  233. package/src/agent/orchestrator/tools/builtin/notebook-edit-tool.mjs +300 -0
  234. package/src/agent/orchestrator/tools/builtin/open-config-tool.mjs +26 -0
  235. package/src/agent/orchestrator/tools/builtin/path-diagnostics.mjs +152 -0
  236. package/src/agent/orchestrator/tools/builtin/path-locks.mjs +35 -0
  237. package/src/agent/orchestrator/tools/builtin/path-utils.mjs +201 -0
  238. package/src/agent/orchestrator/tools/builtin/read-args.mjs +103 -0
  239. package/src/agent/orchestrator/tools/builtin/read-batch.mjs +172 -0
  240. package/src/agent/orchestrator/tools/builtin/read-constants.mjs +40 -0
  241. package/src/agent/orchestrator/tools/builtin/read-formatting.mjs +118 -0
  242. package/src/agent/orchestrator/tools/builtin/read-image-resize.mjs +189 -0
  243. package/src/agent/orchestrator/tools/builtin/read-image.mjs +88 -0
  244. package/src/agent/orchestrator/tools/builtin/read-lines.mjs +12 -0
  245. package/src/agent/orchestrator/tools/builtin/read-mode-tool.mjs +455 -0
  246. package/src/agent/orchestrator/tools/builtin/read-open.mjs +190 -0
  247. package/src/agent/orchestrator/tools/builtin/read-range-index.mjs +271 -0
  248. package/src/agent/orchestrator/tools/builtin/read-ranges.mjs +26 -0
  249. package/src/agent/orchestrator/tools/builtin/read-single-tool.mjs +728 -0
  250. package/src/agent/orchestrator/tools/builtin/read-snapshot-runtime.mjs +173 -0
  251. package/src/agent/orchestrator/tools/builtin/read-special-files.mjs +268 -0
  252. package/src/agent/orchestrator/tools/builtin/read-streaming.mjs +602 -0
  253. package/src/agent/orchestrator/tools/builtin/read-tool.mjs +530 -0
  254. package/src/agent/orchestrator/tools/builtin/read-windows.mjs +107 -0
  255. package/src/agent/orchestrator/tools/builtin/rename-tool.mjs +196 -0
  256. package/src/agent/orchestrator/tools/builtin/rg-runner.mjs +422 -0
  257. package/src/agent/orchestrator/tools/builtin/search-builders.mjs +158 -0
  258. package/src/agent/orchestrator/tools/builtin/search-tool.mjs +869 -0
  259. package/src/agent/orchestrator/tools/builtin/shell-analysis.mjs +653 -0
  260. package/src/agent/orchestrator/tools/builtin/shell-jobs.mjs +936 -0
  261. package/src/agent/orchestrator/tools/builtin/shell-output.mjs +36 -0
  262. package/src/agent/orchestrator/tools/builtin/shell-runtime.mjs +214 -0
  263. package/src/agent/orchestrator/tools/builtin/snapshot-helpers.mjs +143 -0
  264. package/src/agent/orchestrator/tools/builtin/snapshot-store.mjs +206 -0
  265. package/src/agent/orchestrator/tools/builtin/snapshot-validation.mjs +98 -0
  266. package/src/agent/orchestrator/tools/builtin/text-stats.mjs +69 -0
  267. package/src/agent/orchestrator/tools/builtin/windows-roots.mjs +23 -0
  268. package/src/agent/orchestrator/tools/builtin/write-tool.mjs +401 -0
  269. package/src/agent/orchestrator/tools/builtin.mjs +500 -0
  270. package/src/agent/orchestrator/tools/code-graph-prewarm-worker.mjs +39 -0
  271. package/src/agent/orchestrator/tools/code-graph-tool-defs.mjs +24 -0
  272. package/src/agent/orchestrator/tools/code-graph.mjs +4095 -0
  273. package/src/agent/orchestrator/tools/cwd-tool.mjs +298 -0
  274. package/src/agent/orchestrator/tools/destructive-warning.mjs +323 -0
  275. package/src/agent/orchestrator/tools/edit-normalize.mjs +603 -0
  276. package/src/agent/orchestrator/tools/env-scrub.mjs +100 -0
  277. package/src/agent/orchestrator/tools/graph-binary-fetcher.mjs +144 -0
  278. package/src/agent/orchestrator/tools/graph-manifest.json +26 -0
  279. package/src/agent/orchestrator/tools/host-input.mjs +204 -0
  280. package/src/agent/orchestrator/tools/mutation-content-cache.mjs +67 -0
  281. package/src/agent/orchestrator/tools/mutation-planner.mjs +75 -0
  282. package/src/agent/orchestrator/tools/next-call-utils.mjs +48 -0
  283. package/src/agent/orchestrator/tools/patch-binary-fetcher.mjs +133 -0
  284. package/src/agent/orchestrator/tools/patch-manifest.json +26 -0
  285. package/src/agent/orchestrator/tools/patch-tool-defs.mjs +20 -0
  286. package/src/agent/orchestrator/tools/patch.mjs +2754 -0
  287. package/src/agent/orchestrator/tools/progress-message.mjs +118 -0
  288. package/src/agent/orchestrator/tools/result-compression.mjs +279 -0
  289. package/src/agent/orchestrator/tools/shell-command.mjs +865 -0
  290. package/src/agent/orchestrator/tools/shell-exec-policy.mjs +89 -0
  291. package/src/agent/orchestrator/tools/shell-policy-danger-target.mjs +27 -0
  292. package/src/agent/orchestrator/tools/shell-policy-imports.mjs +7 -0
  293. package/src/agent/orchestrator/tools/shell-policy.mjs +345 -0
  294. package/src/agent/orchestrator/tools/shell-snapshot.mjs +313 -0
  295. package/src/agent/orchestrator/workflow-store.mjs +93 -0
  296. package/src/agent/tool-defs.mjs +103 -0
  297. package/src/channels/backends/discord.mjs +784 -0
  298. package/src/channels/data/voice-runtime-manifest.json +138 -0
  299. package/src/channels/index.mjs +3229 -0
  300. package/src/channels/lib/cli-worker-host.mjs +12 -0
  301. package/src/channels/lib/config-lock.mjs +13 -0
  302. package/src/channels/lib/config.mjs +292 -0
  303. package/src/channels/lib/drop-trace.mjs +71 -0
  304. package/src/channels/lib/event-pipeline.mjs +81 -0
  305. package/src/channels/lib/event-queue.mjs +345 -0
  306. package/src/channels/lib/executor.mjs +168 -0
  307. package/src/channels/lib/format.mjs +188 -0
  308. package/src/channels/lib/holidays.mjs +138 -0
  309. package/src/channels/lib/hook-pipe-server.mjs +802 -0
  310. package/src/channels/lib/interaction-workflows.mjs +184 -0
  311. package/src/channels/lib/memory-client.mjs +149 -0
  312. package/src/channels/lib/output-forwarder.mjs +765 -0
  313. package/src/channels/lib/runtime-paths.mjs +479 -0
  314. package/src/channels/lib/scheduler.mjs +723 -0
  315. package/src/channels/lib/session-control.mjs +36 -0
  316. package/src/channels/lib/session-discovery.mjs +103 -0
  317. package/src/channels/lib/settings.mjs +11 -0
  318. package/src/channels/lib/state-file.mjs +68 -0
  319. package/src/channels/lib/status-snapshot.mjs +219 -0
  320. package/src/channels/lib/tool-format.mjs +140 -0
  321. package/src/channels/lib/transcript-discovery.mjs +195 -0
  322. package/src/channels/lib/voice-runtime-fetcher.mjs +734 -0
  323. package/src/channels/lib/webhook.mjs +1179 -0
  324. package/src/channels/lib/whisper-server.mjs +477 -0
  325. package/src/channels/tool-defs.mjs +170 -0
  326. package/src/daemon/host.mjs +118 -0
  327. package/src/daemon/mcp-transport.mjs +47 -0
  328. package/src/daemon/session.mjs +100 -0
  329. package/src/daemon/thin-client.mjs +71 -0
  330. package/src/daemon/transport.mjs +163 -0
  331. package/src/memory/data/runtime-manifest.json +40 -0
  332. package/src/memory/index.mjs +3305 -0
  333. package/src/memory/lib/agent-ipc.mjs +93 -0
  334. package/src/memory/lib/bridge-trace-queries.mjs +120 -0
  335. package/src/memory/lib/core-memory-store.mjs +330 -0
  336. package/src/memory/lib/embedding-provider.mjs +269 -0
  337. package/src/memory/lib/embedding-worker.mjs +323 -0
  338. package/src/memory/lib/llm-worker-host.mjs +17 -0
  339. package/src/memory/lib/memory-cycle.mjs +11 -0
  340. package/src/memory/lib/memory-cycle1.mjs +641 -0
  341. package/src/memory/lib/memory-cycle2.mjs +1284 -0
  342. package/src/memory/lib/memory-cycle3.mjs +540 -0
  343. package/src/memory/lib/memory-embed.mjs +299 -0
  344. package/src/memory/lib/memory-extraction.mjs +5 -0
  345. package/src/memory/lib/memory-maintenance-store.mjs +32 -0
  346. package/src/memory/lib/memory-ops-policy.mjs +190 -0
  347. package/src/memory/lib/memory-recall-id-patch.mjs +15 -0
  348. package/src/memory/lib/memory-recall-read-query.mjs +7 -0
  349. package/src/memory/lib/memory-recall-scope-filter.mjs +63 -0
  350. package/src/memory/lib/memory-recall-store.mjs +621 -0
  351. package/src/memory/lib/memory-retrievers.mjs +112 -0
  352. package/src/memory/lib/memory-score.mjs +71 -0
  353. package/src/memory/lib/memory-text-utils.mjs +58 -0
  354. package/src/memory/lib/memory.mjs +412 -0
  355. package/src/memory/lib/model-profile.mjs +85 -0
  356. package/src/memory/lib/pg/adapter.mjs +308 -0
  357. package/src/memory/lib/pg/process.mjs +360 -0
  358. package/src/memory/lib/pg/supervisor.mjs +396 -0
  359. package/src/memory/lib/project-id-resolver.mjs +86 -0
  360. package/src/memory/lib/runtime-fetcher.mjs +442 -0
  361. package/src/memory/lib/trace-store.mjs +728 -0
  362. package/src/memory/tool-defs.mjs +79 -0
  363. package/src/search/index.mjs +1173 -0
  364. package/src/search/lib/backends/anthropic-oauth.mjs +98 -0
  365. package/src/search/lib/backends/exa.mjs +50 -0
  366. package/src/search/lib/backends/firecrawl.mjs +61 -0
  367. package/src/search/lib/backends/gemini-api.mjs +83 -0
  368. package/src/search/lib/backends/grok-oauth.mjs +86 -0
  369. package/src/search/lib/backends/index.mjs +150 -0
  370. package/src/search/lib/backends/openai-api.mjs +144 -0
  371. package/src/search/lib/backends/openai-oauth.mjs +98 -0
  372. package/src/search/lib/backends/openai-web-search.mjs +76 -0
  373. package/src/search/lib/backends/tavily.mjs +55 -0
  374. package/src/search/lib/backends/xai-api.mjs +113 -0
  375. package/src/search/lib/cache.mjs +131 -0
  376. package/src/search/lib/config.mjs +192 -0
  377. package/src/search/lib/formatter.mjs +115 -0
  378. package/src/search/lib/provider-usage.mjs +67 -0
  379. package/src/search/lib/providers.mjs +47 -0
  380. package/src/search/lib/search-intent.mjs +109 -0
  381. package/src/search/lib/setup-handler.mjs +261 -0
  382. package/src/search/lib/state.mjs +201 -0
  383. package/src/search/lib/web-tools.mjs +1207 -0
  384. package/src/search/tool-defs.mjs +83 -0
  385. package/src/setup/defender-exclusion.mjs +183 -0
  386. package/src/shared/abort-controller.mjs +15 -0
  387. package/src/shared/atomic-file.mjs +420 -0
  388. package/src/shared/config.mjs +350 -0
  389. package/src/shared/daemon-recycle.mjs +108 -0
  390. package/src/shared/disable-claude-builtins.mjs +88 -0
  391. package/src/shared/err-text.mjs +12 -0
  392. package/src/shared/llm/cost.mjs +66 -0
  393. package/src/shared/llm/http-agent.mjs +123 -0
  394. package/src/shared/llm/index.mjs +41 -0
  395. package/src/shared/llm/pid-cleanup.mjs +27 -0
  396. package/src/shared/llm/usage-log.mjs +47 -0
  397. package/src/shared/plugin-paths.mjs +58 -0
  398. package/src/shared/schedules-store.mjs +70 -0
  399. package/src/shared/seed.mjs +119 -0
  400. package/src/shared/user-cwd.mjs +213 -0
  401. package/src/shared/user-data-guard.mjs +238 -0
  402. package/src/status/aggregator.mjs +584 -0
  403. package/src/status/server.mjs +413 -0
  404. package/tools.json +1653 -0
@@ -0,0 +1,18 @@
1
+ # Scheduler Task
2
+
3
+ Scheduled channel task agent. Executes a cron-triggered run defined in the scheduler configuration.
4
+
5
+ Stateless: each scheduled run is independent. Task instructions come from the schedule configuration.
6
+
7
+ Per-entry config lives in `${CLAUDE_PLUGIN_DATA}/schedules/<name>/{config.json, instructions.md}` — `instructions.md` is the per-run brief, `config.json` holds time/timezone/days/channel/model.
8
+
9
+ ## Routing (by channel presence)
10
+
11
+ Decided purely by `channel` presence in `config.json` — no `type`/`mode`/`role` field:
12
+
13
+ - **No `channel`** → on fire, the task is injected into the current (Lead) session, handled with full context.
14
+ - **With a `channel`** → this role runs as a direct dispatch and reports straight to that Discord channel (config carries the `model` preset).
15
+
16
+ ## Skip protocol
17
+
18
+ When a run has nothing to report (no action needed, nothing changed, or a dedup/duplicate), emit `[meta:silent]` as the FIRST line and nothing else. This drops the notification entirely: zero Lead turn, zero channel post. See `rules/bridge/20-skip-protocol.md`. True skips only — never to suppress an actionable result.
@@ -0,0 +1,27 @@
1
+ # Webhook Handler
2
+
3
+ Webhook event analysis agent. Processes an inbound webhook delivery, extracts actionable information, and reports it.
4
+
5
+ Stateless: each webhook event is processed independently. No context from prior webhooks.
6
+
7
+ Per-entry config lives in `${CLAUDE_PLUGIN_DATA}/webhooks/<name>/{config.json, instructions.md}` — `instructions.md` is the per-delivery brief, `config.json` holds parser/secret/channel/model.
8
+
9
+ ## Routing (by channel presence)
10
+
11
+ Decided purely by `channel` presence in `config.json` — no `mode`/`type`/`role` field:
12
+
13
+ - **No `channel`** → the delivery is injected into the current (Lead) session, handled with full context.
14
+ - **With a `channel`** → this role runs as a direct dispatch and reports the result straight to that Discord channel (config carries the `model` preset).
15
+
16
+ ## Skip protocol
17
+
18
+ When a delivery has nothing to report — no code change, non-default branch, docs-only, or a dedup/duplicate event — emit `[meta:silent]` as the FIRST line and nothing else. This drops the notification entirely: zero Lead turn, zero channel post. See `rules/bridge/20-skip-protocol.md`. Use only for true skips, never to suppress an actionable finding.
19
+
20
+ ## Discipline
21
+
22
+ - One read per concrete file:line evidence; never re-read the same file or paraphrase the same grep.
23
+ - After 2 grep turns without a locked file:line, switch to `code_graph
24
+ find_symbol` / `callers` / `references`, or `mode:search` (keyword or
25
+ partial symbol name — file-less, before grep).
26
+ - Response: keep narrative tight — `path:line` + one short cause + one suggested fix. Skip prelude, scope renegotiation, and closer questions.
27
+ - Stop as soon as the issue is grounded; further tool calls without new evidence are wasted budget.
@@ -0,0 +1,24 @@
1
+ Public bridge-worker tool discipline; the `explorer` role shares it.
2
+ The universal bridge contract — `<final-answer>` output, git refusal —
3
+ lives in rules/bridge/00-common.md; the tool routing policy lives in
4
+ rules/shared/01-tool.md. This file adds only the public-worker edit +
5
+ retrieval discipline.
6
+
7
+ ## Scope / Edits
8
+
9
+ - Do only the brief; no unrelated features, cleanup, abstractions, or
10
+ error handling.
11
+ - Prefer direct local changes.
12
+ - Comment only when the WHY is non-obvious.
13
+ - No compatibility shim inside your own change scope.
14
+ - No unrelated rewrite.
15
+
16
+ ## Tools
17
+
18
+ - Do not use `recall` or `search`.
19
+
20
+ ## Mismatch
21
+
22
+ On coordinate mismatch, report
23
+ `mismatch: at <path:line> expected '<X>' got '<Y>'`, then re-locate once
24
+ via normal routing. Found -> continue; not found -> return partial findings.
package/bin/bridge ADDED
@@ -0,0 +1,133 @@
1
+ #!/usr/bin/env bun
2
+ // bridge — CLI prompt store + lightweight bridge for mixdog
3
+ // Usage:
4
+ // bridge store <key> <file> Store file content with key
5
+ // bridge store <key> Read from stdin
6
+ // bridge list List stored keys
7
+ // bridge get <key> Print stored content
8
+ // bridge delete <key> Remove a key
9
+ // bridge <role> <prompt...> Send prompt via owner HTTP (no server boot)
10
+ // bridge <role> - Read prompt from stdin
11
+
12
+ import { readFileSync, writeFileSync, existsSync, mkdirSync } from 'fs';
13
+ import { join, dirname } from 'path';
14
+ import { tmpdir } from 'os';
15
+ import { request } from 'http';
16
+ import { createRequire } from 'module';
17
+
18
+ const require = createRequire(import.meta.url);
19
+ const { resolvePluginData } = require('../lib/plugin-paths.cjs');
20
+
21
+ const STORE_PATH = join(
22
+ resolvePluginData(),
23
+ 'prompt-store.json'
24
+ );
25
+
26
+ function load() {
27
+ if (!existsSync(STORE_PATH)) return {};
28
+ try { return JSON.parse(readFileSync(STORE_PATH, 'utf-8')); } catch { return {}; }
29
+ }
30
+
31
+ function save(store) {
32
+ mkdirSync(dirname(STORE_PATH), { recursive: true });
33
+ writeFileSync(STORE_PATH, JSON.stringify(store, null, 2) + '\n', 'utf-8');
34
+ }
35
+
36
+ function getOwnerPort() {
37
+ const activeFile = join(tmpdir(), 'mixdog', 'active-instance.json');
38
+ if (!existsSync(activeFile)) return null;
39
+ try {
40
+ const state = JSON.parse(readFileSync(activeFile, 'utf-8'));
41
+ return state.httpPort || null;
42
+ } catch { return null; }
43
+ }
44
+
45
+ function httpPost(port, path, body) {
46
+ return new Promise((resolve, reject) => {
47
+ const data = JSON.stringify(body);
48
+ const req = request({ hostname: '127.0.0.1', port, path, method: 'POST', headers: { 'Content-Type': 'application/json', 'Content-Length': Buffer.byteLength(data) } }, res => {
49
+ const chunks = [];
50
+ res.on('data', c => chunks.push(c));
51
+ res.on('end', () => {
52
+ try { resolve(JSON.parse(Buffer.concat(chunks).toString())); }
53
+ catch { resolve({ raw: Buffer.concat(chunks).toString() }); }
54
+ });
55
+ });
56
+ req.on('error', reject);
57
+ req.write(data);
58
+ req.end();
59
+ });
60
+ }
61
+
62
+ const [,, cmd, ...rest] = process.argv;
63
+
64
+ switch (cmd) {
65
+ case 'store': {
66
+ const [key, file] = rest;
67
+ if (!key) { console.error('Usage: bridge store <key> [file]'); process.exit(1); }
68
+ let content;
69
+ if (file) {
70
+ content = readFileSync(file, 'utf-8');
71
+ } else {
72
+ const chunks = [];
73
+ for await (const chunk of process.stdin) chunks.push(chunk);
74
+ content = Buffer.concat(chunks).toString('utf-8');
75
+ }
76
+ const store = load();
77
+ store[key] = content;
78
+ save(store);
79
+ console.log(`Stored '${key}' (${content.length} chars)`);
80
+ break;
81
+ }
82
+ case 'list': {
83
+ const store = load();
84
+ const keys = Object.keys(store);
85
+ if (keys.length === 0) { console.log('(empty)'); break; }
86
+ for (const k of keys) console.log(`${k} (${store[k].length} chars)`);
87
+ break;
88
+ }
89
+ case 'get': {
90
+ const [key2] = rest;
91
+ if (!key2) { console.error('Usage: bridge get <key>'); process.exit(1); }
92
+ const store = load();
93
+ if (!(key2 in store)) { console.error(`Key '${key2}' not found`); process.exit(1); }
94
+ console.log(store[key2]);
95
+ break;
96
+ }
97
+ case 'delete': {
98
+ const [key3] = rest;
99
+ if (!key3) { console.error('Usage: bridge delete <key>'); process.exit(1); }
100
+ const store = load();
101
+ if (!(key3 in store)) { console.error(`Key '${key3}' not found`); process.exit(1); }
102
+ delete store[key3];
103
+ save(store);
104
+ console.log(`Deleted '${key3}'`);
105
+ break;
106
+ }
107
+ default: {
108
+ const role = cmd;
109
+ if (!role || role.startsWith('-')) { console.error('Usage: bridge <role> <prompt...> | bridge <role> - (stdin)'); process.exit(1); }
110
+ const port = getOwnerPort();
111
+ if (!port) { console.error('No running mixdog instance found'); process.exit(1); }
112
+ const body = { role };
113
+ if (rest[0] === '-') {
114
+ const chunks = [];
115
+ for await (const chunk of process.stdin) chunks.push(chunk);
116
+ body.prompt = Buffer.concat(chunks).toString('utf-8').trim();
117
+ } else if (rest.length) {
118
+ body.prompt = rest.join(' ');
119
+ } else {
120
+ console.error('Usage: bridge <role> <prompt...> | bridge <role> - (stdin)');
121
+ process.exit(1);
122
+ }
123
+ try {
124
+ const result = await httpPost(port, '/bridge', body);
125
+ const text = result?.content?.[0]?.text || JSON.stringify(result);
126
+ console.log(text);
127
+ } catch (e) {
128
+ console.error(`bridge failed: ${e.message}`);
129
+ process.exit(1);
130
+ }
131
+ break;
132
+ }
133
+ }
@@ -0,0 +1,78 @@
1
+ #!/usr/bin/env node
2
+ // mixdog statusline launcher — version-independent STABLE entry.
3
+ // settings.json points here forever; each tick it resolves the ACTIVE
4
+ // install from installed_plugins.json (never a version-pinned path), so a
5
+ // plugin version bump self-heals on the next refresh with no restart.
6
+ // Node-builtins only — must run under both bun and node.
7
+ //
8
+ // FAIL-SOFT INVARIANT (non-negotiable): this command runs for EVERY machine
9
+ // on every tick. ANY error (missing/locked/parse-broken manifest, missing
10
+ // target, throw) must still print one minimal `mixdog` line and exit 0. A
11
+ // crashing command makes CC render nothing.
12
+
13
+ import fs from 'fs';
14
+ import os from 'os';
15
+ import path from 'path';
16
+ import { spawnSync } from 'child_process';
17
+ import { pathToFileURL } from 'url';
18
+
19
+ function failSoft() {
20
+ try { process.stdout.write('mixdog\n'); } catch {}
21
+ process.exit(0);
22
+ }
23
+
24
+ async function main() {
25
+ // CC stdin JSON (may be empty). Never block the tick on a read error.
26
+ let stdinBuf = Buffer.alloc(0);
27
+ try { stdinBuf = fs.readFileSync(0); } catch {}
28
+
29
+ // Resolve the ACTIVE install from the manifest — manifest-canonical, no
30
+ // version pin. Any failure here → fail-soft.
31
+ const manifestPath = path.join(
32
+ os.homedir(), '.claude', 'plugins', 'installed_plugins.json'
33
+ );
34
+ let installPath = '';
35
+ try {
36
+ const data = JSON.parse(fs.readFileSync(manifestPath, 'utf8'));
37
+ const entry = data?.plugins?.['mixdog@trib-plugin']?.[0];
38
+ installPath = String(entry?.installPath || '').replace(/\\/g, '/');
39
+ } catch { return failSoft(); }
40
+ if (!installPath) return failSoft();
41
+
42
+ // (a) Native shim fast path — match resolveStatusLineCommand's os/arch map.
43
+ const ext = process.platform === 'win32' ? '.exe' : '';
44
+ const platMap = { win32: 'windows', darwin: 'macos', linux: 'linux' };
45
+ const archMap = { x64: 'x86_64', arm64: 'aarch64' };
46
+ const prebuiltDir = `${platMap[process.platform]}-${archMap[process.arch]}`;
47
+ const shimCandidates = [
48
+ `${installPath}/native/mixdog-shim/target/release/mixdog-shim${ext}`,
49
+ `${installPath}/native/prebuilt/${prebuiltDir}/mixdog-shim${ext}`,
50
+ ];
51
+ for (const shimPath of shimCandidates) {
52
+ let exists = false;
53
+ try { exists = fs.existsSync(shimPath); } catch {}
54
+ if (!exists) continue;
55
+ try {
56
+ const r = spawnSync(shimPath, ['--kind=statusline'], { input: stdinBuf, windowsHide: true });
57
+ if (r.status === 0 && r.stdout && r.stdout.length) {
58
+ process.stdout.write(r.stdout);
59
+ return process.exit(0);
60
+ }
61
+ } catch {}
62
+ // Shim present but failed — fall through to the lib path / fail-soft.
63
+ break;
64
+ }
65
+
66
+ // (b) Library fallback — render in-process via statusline-lib's export.
67
+ const libPath = `${installPath}/bin/statusline-lib.mjs`;
68
+ let mod;
69
+ try { mod = await import(pathToFileURL(libPath).href); } catch { return failSoft(); }
70
+ const render = mod && mod.renderStatusLine;
71
+ if (typeof render !== 'function') return failSoft();
72
+ let out = '';
73
+ try { out = await render(stdinBuf.toString('utf8')); } catch { return failSoft(); }
74
+ process.stdout.write(out && out.length ? out : 'mixdog\n');
75
+ process.exit(0);
76
+ }
77
+
78
+ main().catch(failSoft);