@monoes/monomindcli 2.8.4 → 2.9.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 (363) hide show
  1. package/.claude/helpers/auto-memory-hook.mjs +0 -0
  2. package/.claude/helpers/handlers/route-handler.cjs +12 -0
  3. package/.claude/helpers/handlers/session-restore-handler.cjs +28 -7
  4. package/.claude/helpers/hook-handler.cjs +0 -0
  5. package/.claude/helpers/utils/micro-agents.cjs +22 -0
  6. package/.claude/skills/monodesign/scripts/live/sveltekit-adapter.mjs +11 -6
  7. package/.claude/skills/monodesign/scripts/live-inject.mjs +20 -7
  8. package/.claude/skills/monodesign/scripts/live-server.mjs +38 -2
  9. package/LICENSE +191 -0
  10. package/README.md +8 -6
  11. package/dist/src/browser/dashboard/server.d.ts +5 -0
  12. package/dist/src/browser/dashboard/server.d.ts.map +1 -1
  13. package/dist/src/browser/dashboard/server.js +59 -4
  14. package/dist/src/browser/dashboard/server.js.map +1 -1
  15. package/dist/src/browser/dashboard/ui.html +18 -8
  16. package/dist/src/browser/workflow/store.d.ts.map +1 -1
  17. package/dist/src/browser/workflow/store.js +3 -2
  18. package/dist/src/browser/workflow/store.js.map +1 -1
  19. package/dist/src/capabilities/cap-documents.d.ts.map +1 -1
  20. package/dist/src/capabilities/cap-documents.js +14 -9
  21. package/dist/src/capabilities/cap-documents.js.map +1 -1
  22. package/dist/src/commands/doctor.d.ts.map +1 -1
  23. package/dist/src/commands/doctor.js +22 -18
  24. package/dist/src/commands/doctor.js.map +1 -1
  25. package/dist/src/commands/download-embeddings.d.ts +8 -0
  26. package/dist/src/commands/download-embeddings.d.ts.map +1 -0
  27. package/dist/src/commands/download-embeddings.js +34 -0
  28. package/dist/src/commands/download-embeddings.js.map +1 -0
  29. package/dist/src/commands/hooks.d.ts.map +1 -1
  30. package/dist/src/commands/hooks.js +14 -0
  31. package/dist/src/commands/hooks.js.map +1 -1
  32. package/dist/src/commands/index.d.ts.map +1 -1
  33. package/dist/src/commands/index.js +4 -0
  34. package/dist/src/commands/index.js.map +1 -1
  35. package/dist/src/commands/init-wizard.js +1 -1
  36. package/dist/src/commands/init-wizard.js.map +1 -1
  37. package/dist/src/commands/init.d.ts.map +1 -1
  38. package/dist/src/commands/init.js +48 -1
  39. package/dist/src/commands/init.js.map +1 -1
  40. package/dist/src/commands/monograph.d.ts.map +1 -1
  41. package/dist/src/commands/monograph.js +35 -1
  42. package/dist/src/commands/monograph.js.map +1 -1
  43. package/dist/src/commands/org-observe.d.ts +10 -0
  44. package/dist/src/commands/org-observe.d.ts.map +1 -1
  45. package/dist/src/commands/org-observe.js +195 -31
  46. package/dist/src/commands/org-observe.js.map +1 -1
  47. package/dist/src/commands/org.d.ts +1 -0
  48. package/dist/src/commands/org.d.ts.map +1 -1
  49. package/dist/src/commands/org.js +139 -3
  50. package/dist/src/commands/org.js.map +1 -1
  51. package/dist/src/commands/route.d.ts +1 -9
  52. package/dist/src/commands/route.d.ts.map +1 -1
  53. package/dist/src/commands/route.js +42 -65
  54. package/dist/src/commands/route.js.map +1 -1
  55. package/dist/src/commands/security-cve.d.ts.map +1 -1
  56. package/dist/src/commands/security-cve.js +2 -1
  57. package/dist/src/commands/security-cve.js.map +1 -1
  58. package/dist/src/index.d.ts +0 -10
  59. package/dist/src/index.d.ts.map +1 -1
  60. package/dist/src/index.js +4 -15
  61. package/dist/src/index.js.map +1 -1
  62. package/dist/src/init/copy-assets.d.ts +17 -0
  63. package/dist/src/init/copy-assets.d.ts.map +1 -0
  64. package/dist/src/init/copy-assets.js +271 -0
  65. package/dist/src/init/copy-assets.js.map +1 -0
  66. package/dist/src/init/executor.d.ts +2 -30
  67. package/dist/src/init/executor.d.ts.map +1 -1
  68. package/dist/src/init/executor.js +56 -2493
  69. package/dist/src/init/executor.js.map +1 -1
  70. package/dist/src/init/helpers-generator.d.ts.map +1 -1
  71. package/dist/src/init/helpers-generator.js +9 -0
  72. package/dist/src/init/helpers-generator.js.map +1 -1
  73. package/dist/src/init/settings-generator.d.ts.map +1 -1
  74. package/dist/src/init/settings-generator.js +0 -4
  75. package/dist/src/init/settings-generator.js.map +1 -1
  76. package/dist/src/init/shared.d.ts +112 -0
  77. package/dist/src/init/shared.d.ts.map +1 -0
  78. package/dist/src/init/shared.js +475 -0
  79. package/dist/src/init/shared.js.map +1 -0
  80. package/dist/src/init/statusline-generator.d.ts.map +1 -1
  81. package/dist/src/init/statusline-generator.js +37 -0
  82. package/dist/src/init/statusline-generator.js.map +1 -1
  83. package/dist/src/init/types.d.ts +1 -1
  84. package/dist/src/init/types.d.ts.map +1 -1
  85. package/dist/src/init/upgrade.d.ts +34 -0
  86. package/dist/src/init/upgrade.d.ts.map +1 -0
  87. package/dist/src/init/upgrade.js +477 -0
  88. package/dist/src/init/upgrade.js.map +1 -0
  89. package/dist/src/init/write-antigravity.d.ts +13 -0
  90. package/dist/src/init/write-antigravity.d.ts.map +1 -0
  91. package/dist/src/init/write-antigravity.js +117 -0
  92. package/dist/src/init/write-antigravity.js.map +1 -0
  93. package/dist/src/init/write-capabilities.d.ts +9 -0
  94. package/dist/src/init/write-capabilities.d.ts.map +1 -0
  95. package/dist/src/init/write-capabilities.js +392 -0
  96. package/dist/src/init/write-capabilities.js.map +1 -0
  97. package/dist/src/init/write-claude.d.ts +25 -0
  98. package/dist/src/init/write-claude.d.ts.map +1 -0
  99. package/dist/src/init/write-claude.js +279 -0
  100. package/dist/src/init/write-claude.js.map +1 -0
  101. package/dist/src/init/write-kimicode.d.ts +19 -0
  102. package/dist/src/init/write-kimicode.d.ts.map +1 -0
  103. package/dist/src/init/write-kimicode.js +223 -0
  104. package/dist/src/init/write-kimicode.js.map +1 -0
  105. package/dist/src/init/write-opencode.d.ts +14 -0
  106. package/dist/src/init/write-opencode.d.ts.map +1 -0
  107. package/dist/src/init/write-opencode.js +130 -0
  108. package/dist/src/init/write-opencode.js.map +1 -0
  109. package/dist/src/init/write-runtime-config.d.ts +14 -0
  110. package/dist/src/init/write-runtime-config.d.ts.map +1 -0
  111. package/dist/src/init/write-runtime-config.js +214 -0
  112. package/dist/src/init/write-runtime-config.js.map +1 -0
  113. package/dist/src/init/write-sample-org.d.ts +9 -0
  114. package/dist/src/init/write-sample-org.d.ts.map +1 -0
  115. package/dist/src/init/write-sample-org.js +39 -0
  116. package/dist/src/init/write-sample-org.js.map +1 -0
  117. package/dist/src/knowledge/eval/golden-set.js +1 -1
  118. package/dist/src/knowledge/eval/golden-set.js.map +1 -1
  119. package/dist/src/mcp-tools/analyze-tools.d.ts.map +1 -1
  120. package/dist/src/mcp-tools/analyze-tools.js +2 -25
  121. package/dist/src/mcp-tools/analyze-tools.js.map +1 -1
  122. package/dist/src/mcp-tools/auto-install.d.ts.map +1 -1
  123. package/dist/src/mcp-tools/auto-install.js +2 -1
  124. package/dist/src/mcp-tools/auto-install.js.map +1 -1
  125. package/dist/src/mcp-tools/hooks-routing.d.ts.map +1 -1
  126. package/dist/src/mcp-tools/hooks-routing.js +26 -0
  127. package/dist/src/mcp-tools/hooks-routing.js.map +1 -1
  128. package/dist/src/mcp-tools/memory-tools.d.ts.map +1 -1
  129. package/dist/src/mcp-tools/memory-tools.js +2 -37
  130. package/dist/src/mcp-tools/memory-tools.js.map +1 -1
  131. package/dist/src/mcp-tools/monograph/agent-history-tools.d.ts +5 -0
  132. package/dist/src/mcp-tools/monograph/agent-history-tools.d.ts.map +1 -0
  133. package/dist/src/mcp-tools/monograph/agent-history-tools.js +177 -0
  134. package/dist/src/mcp-tools/monograph/agent-history-tools.js.map +1 -0
  135. package/dist/src/mcp-tools/monograph/build-tools.d.ts +9 -0
  136. package/dist/src/mcp-tools/monograph/build-tools.d.ts.map +1 -0
  137. package/dist/src/mcp-tools/monograph/build-tools.js +299 -0
  138. package/dist/src/mcp-tools/monograph/build-tools.js.map +1 -0
  139. package/dist/src/mcp-tools/monograph/group-tools.d.ts +10 -0
  140. package/dist/src/mcp-tools/monograph/group-tools.d.ts.map +1 -0
  141. package/dist/src/mcp-tools/monograph/group-tools.js +225 -0
  142. package/dist/src/mcp-tools/monograph/group-tools.js.map +1 -0
  143. package/dist/src/mcp-tools/monograph/health-tools.d.ts +6 -0
  144. package/dist/src/mcp-tools/monograph/health-tools.d.ts.map +1 -0
  145. package/dist/src/mcp-tools/monograph/health-tools.js +113 -0
  146. package/dist/src/mcp-tools/monograph/health-tools.js.map +1 -0
  147. package/dist/src/mcp-tools/monograph/impact-tools.d.ts +9 -0
  148. package/dist/src/mcp-tools/monograph/impact-tools.d.ts.map +1 -0
  149. package/dist/src/mcp-tools/monograph/impact-tools.js +532 -0
  150. package/dist/src/mcp-tools/monograph/impact-tools.js.map +1 -0
  151. package/dist/src/mcp-tools/monograph/index.d.ts +10 -0
  152. package/dist/src/mcp-tools/monograph/index.d.ts.map +1 -0
  153. package/dist/src/mcp-tools/monograph/index.js +73 -0
  154. package/dist/src/mcp-tools/monograph/index.js.map +1 -0
  155. package/dist/src/mcp-tools/monograph/query-tools.d.ts +11 -0
  156. package/dist/src/mcp-tools/monograph/query-tools.d.ts.map +1 -0
  157. package/dist/src/mcp-tools/monograph/query-tools.js +500 -0
  158. package/dist/src/mcp-tools/monograph/query-tools.js.map +1 -0
  159. package/dist/src/mcp-tools/monograph/shared.d.ts +64 -0
  160. package/dist/src/mcp-tools/monograph/shared.d.ts.map +1 -0
  161. package/dist/src/mcp-tools/monograph/shared.js +215 -0
  162. package/dist/src/mcp-tools/monograph/shared.js.map +1 -0
  163. package/dist/src/mcp-tools/monograph/visualize-tools.d.ts +10 -0
  164. package/dist/src/mcp-tools/monograph/visualize-tools.d.ts.map +1 -0
  165. package/dist/src/mcp-tools/monograph/visualize-tools.js +382 -0
  166. package/dist/src/mcp-tools/monograph/visualize-tools.js.map +1 -0
  167. package/dist/src/mcp-tools/monograph-tools.d.ts +4 -23
  168. package/dist/src/mcp-tools/monograph-tools.d.ts.map +1 -1
  169. package/dist/src/mcp-tools/monograph-tools.js +4 -2439
  170. package/dist/src/mcp-tools/monograph-tools.js.map +1 -1
  171. package/dist/src/mcp-tools/monomind-tools.d.ts +8 -0
  172. package/dist/src/mcp-tools/monomind-tools.d.ts.map +1 -1
  173. package/dist/src/mcp-tools/monomind-tools.js +13 -1
  174. package/dist/src/mcp-tools/monomind-tools.js.map +1 -1
  175. package/dist/src/mcp-tools/quality/security-compliance/detect-secrets.d.ts.map +1 -1
  176. package/dist/src/mcp-tools/quality/security-compliance/detect-secrets.js +31 -2
  177. package/dist/src/mcp-tools/quality/security-compliance/detect-secrets.js.map +1 -1
  178. package/dist/src/mcp-tools/terminal-tools.d.ts.map +1 -1
  179. package/dist/src/mcp-tools/terminal-tools.js +31 -1
  180. package/dist/src/mcp-tools/terminal-tools.js.map +1 -1
  181. package/dist/src/mcp-tools/types.d.ts +8 -27
  182. package/dist/src/mcp-tools/types.d.ts.map +1 -1
  183. package/dist/src/mcp-tools/types.js +9 -91
  184. package/dist/src/mcp-tools/types.js.map +1 -1
  185. package/dist/src/memory/file-permissions.d.ts +15 -0
  186. package/dist/src/memory/file-permissions.d.ts.map +1 -0
  187. package/dist/src/memory/file-permissions.js +25 -0
  188. package/dist/src/memory/file-permissions.js.map +1 -0
  189. package/dist/src/memory/memory-bridge.d.ts.map +1 -1
  190. package/dist/src/memory/memory-bridge.js +94 -34
  191. package/dist/src/memory/memory-bridge.js.map +1 -1
  192. package/dist/src/memory/memory-crud.d.ts.map +1 -1
  193. package/dist/src/memory/memory-crud.js +298 -275
  194. package/dist/src/memory/memory-crud.js.map +1 -1
  195. package/dist/src/memory/memory-initializer.d.ts +2 -4
  196. package/dist/src/memory/memory-initializer.d.ts.map +1 -1
  197. package/dist/src/memory/memory-initializer.js +53 -76
  198. package/dist/src/memory/memory-initializer.js.map +1 -1
  199. package/dist/src/memory/memory-migrations.d.ts +1 -14
  200. package/dist/src/memory/memory-migrations.d.ts.map +1 -1
  201. package/dist/src/memory/memory-migrations.js +52 -105
  202. package/dist/src/memory/memory-migrations.js.map +1 -1
  203. package/dist/src/memory/sona-optimizer.d.ts +1 -1
  204. package/dist/src/memory/sona-optimizer.js +1 -1
  205. package/dist/src/monovector/index.d.ts +16 -19
  206. package/dist/src/monovector/index.d.ts.map +1 -1
  207. package/dist/src/monovector/index.js +50 -8
  208. package/dist/src/monovector/index.js.map +1 -1
  209. package/dist/src/orgrt/approvals.d.ts +16 -0
  210. package/dist/src/orgrt/approvals.d.ts.map +1 -0
  211. package/dist/src/orgrt/approvals.js +72 -0
  212. package/dist/src/orgrt/approvals.js.map +1 -0
  213. package/dist/src/orgrt/bus.d.ts.map +1 -1
  214. package/dist/src/orgrt/bus.js +21 -0
  215. package/dist/src/orgrt/bus.js.map +1 -1
  216. package/dist/src/orgrt/checkpoint-ops.d.ts +19 -0
  217. package/dist/src/orgrt/checkpoint-ops.d.ts.map +1 -0
  218. package/dist/src/orgrt/checkpoint-ops.js +219 -0
  219. package/dist/src/orgrt/checkpoint-ops.js.map +1 -0
  220. package/dist/src/orgrt/checkpoint.d.ts +33 -1
  221. package/dist/src/orgrt/checkpoint.d.ts.map +1 -1
  222. package/dist/src/orgrt/checkpoint.js +50 -6
  223. package/dist/src/orgrt/checkpoint.js.map +1 -1
  224. package/dist/src/orgrt/cross-org.d.ts +32 -0
  225. package/dist/src/orgrt/cross-org.d.ts.map +1 -0
  226. package/dist/src/orgrt/cross-org.js +256 -0
  227. package/dist/src/orgrt/cross-org.js.map +1 -0
  228. package/dist/src/orgrt/daemon.d.ts +131 -157
  229. package/dist/src/orgrt/daemon.d.ts.map +1 -1
  230. package/dist/src/orgrt/daemon.js +356 -966
  231. package/dist/src/orgrt/daemon.js.map +1 -1
  232. package/dist/src/orgrt/decisions.d.ts +33 -0
  233. package/dist/src/orgrt/decisions.d.ts.map +1 -0
  234. package/dist/src/orgrt/decisions.js +169 -0
  235. package/dist/src/orgrt/decisions.js.map +1 -0
  236. package/dist/src/orgrt/kimicode-runner.d.ts.map +1 -1
  237. package/dist/src/orgrt/kimicode-runner.js +5 -1
  238. package/dist/src/orgrt/kimicode-runner.js.map +1 -1
  239. package/dist/src/orgrt/opencode-runner.d.ts.map +1 -1
  240. package/dist/src/orgrt/opencode-runner.js +10 -2
  241. package/dist/src/orgrt/opencode-runner.js.map +1 -1
  242. package/dist/src/orgrt/org-memory.d.ts +45 -0
  243. package/dist/src/orgrt/org-memory.d.ts.map +1 -0
  244. package/dist/src/orgrt/org-memory.js +220 -0
  245. package/dist/src/orgrt/org-memory.js.map +1 -0
  246. package/dist/src/orgrt/policy.d.ts +4 -0
  247. package/dist/src/orgrt/policy.d.ts.map +1 -1
  248. package/dist/src/orgrt/policy.js +13 -1
  249. package/dist/src/orgrt/policy.js.map +1 -1
  250. package/dist/src/orgrt/prechecks.d.ts +15 -0
  251. package/dist/src/orgrt/prechecks.d.ts.map +1 -0
  252. package/dist/src/orgrt/prechecks.js +21 -0
  253. package/dist/src/orgrt/prechecks.js.map +1 -0
  254. package/dist/src/orgrt/questions.d.ts +39 -0
  255. package/dist/src/orgrt/questions.d.ts.map +1 -0
  256. package/dist/src/orgrt/questions.js +135 -0
  257. package/dist/src/orgrt/questions.js.map +1 -0
  258. package/dist/src/orgrt/remote.d.ts +25 -0
  259. package/dist/src/orgrt/remote.d.ts.map +1 -0
  260. package/dist/src/orgrt/remote.js +73 -0
  261. package/dist/src/orgrt/remote.js.map +1 -0
  262. package/dist/src/orgrt/scheduler-integration.d.ts +19 -0
  263. package/dist/src/orgrt/scheduler-integration.d.ts.map +1 -0
  264. package/dist/src/orgrt/scheduler-integration.js +90 -0
  265. package/dist/src/orgrt/scheduler-integration.js.map +1 -0
  266. package/dist/src/orgrt/server.d.ts.map +1 -1
  267. package/dist/src/orgrt/server.js +70 -2
  268. package/dist/src/orgrt/server.js.map +1 -1
  269. package/dist/src/orgrt/session.d.ts +30 -1
  270. package/dist/src/orgrt/session.d.ts.map +1 -1
  271. package/dist/src/orgrt/session.js +184 -53
  272. package/dist/src/orgrt/session.js.map +1 -1
  273. package/dist/src/orgrt/state-detector.d.ts +19 -0
  274. package/dist/src/orgrt/state-detector.d.ts.map +1 -0
  275. package/dist/src/orgrt/state-detector.js +59 -0
  276. package/dist/src/orgrt/state-detector.js.map +1 -0
  277. package/dist/src/orgrt/task-dag.d.ts +27 -0
  278. package/dist/src/orgrt/task-dag.d.ts.map +1 -0
  279. package/dist/src/orgrt/task-dag.js +100 -0
  280. package/dist/src/orgrt/task-dag.js.map +1 -0
  281. package/dist/src/orgrt/tool-fence.d.ts +7 -4
  282. package/dist/src/orgrt/tool-fence.d.ts.map +1 -1
  283. package/dist/src/orgrt/tool-fence.js +47 -6
  284. package/dist/src/orgrt/tool-fence.js.map +1 -1
  285. package/dist/src/orgrt/types.d.ts +57 -2
  286. package/dist/src/orgrt/types.d.ts.map +1 -1
  287. package/dist/src/orgrt/types.js +34 -3
  288. package/dist/src/orgrt/types.js.map +1 -1
  289. package/dist/src/routing/model-download.d.ts +49 -0
  290. package/dist/src/routing/model-download.d.ts.map +1 -0
  291. package/dist/src/routing/model-download.js +106 -0
  292. package/dist/src/routing/model-download.js.map +1 -0
  293. package/dist/src/services/crash-reporter.d.ts +5 -0
  294. package/dist/src/services/crash-reporter.d.ts.map +1 -1
  295. package/dist/src/services/crash-reporter.js +49 -0
  296. package/dist/src/services/crash-reporter.js.map +1 -1
  297. package/dist/src/transfer/anonymization/index.d.ts +18 -15
  298. package/dist/src/transfer/anonymization/index.d.ts.map +1 -1
  299. package/dist/src/transfer/anonymization/index.js +7 -119
  300. package/dist/src/transfer/anonymization/index.js.map +1 -1
  301. package/dist/src/ui/dashboard.html +606 -7
  302. package/dist/src/ui/orgs.html +7 -1
  303. package/dist/src/ui/routes-monograph.mjs +6 -0
  304. package/dist/src/ui/server.mjs +327 -7
  305. package/dist/src/update/checker.d.ts.map +1 -1
  306. package/dist/src/update/checker.js +2 -1
  307. package/dist/src/update/checker.js.map +1 -1
  308. package/dist/src/update/executor.d.ts.map +1 -1
  309. package/dist/src/update/executor.js +7 -3
  310. package/dist/src/update/executor.js.map +1 -1
  311. package/dist/src/update/index.d.ts +0 -1
  312. package/dist/src/update/index.d.ts.map +1 -1
  313. package/dist/src/update/index.js +5 -24
  314. package/dist/src/update/index.js.map +1 -1
  315. package/dist/src/utils/db-mutex.d.ts +11 -0
  316. package/dist/src/utils/db-mutex.d.ts.map +1 -0
  317. package/dist/src/utils/db-mutex.js +23 -0
  318. package/dist/src/utils/db-mutex.js.map +1 -0
  319. package/dist/src/utils/input-guards.d.ts +23 -0
  320. package/dist/src/utils/input-guards.d.ts.map +1 -1
  321. package/dist/src/utils/input-guards.js +72 -0
  322. package/dist/src/utils/input-guards.js.map +1 -1
  323. package/dist/src/utils/npm-command.d.ts +10 -0
  324. package/dist/src/utils/npm-command.d.ts.map +1 -0
  325. package/dist/src/utils/npm-command.js +12 -0
  326. package/dist/src/utils/npm-command.js.map +1 -0
  327. package/dist/src/utils/paths.d.ts +28 -0
  328. package/dist/src/utils/paths.d.ts.map +1 -0
  329. package/dist/src/utils/paths.js +108 -0
  330. package/dist/src/utils/paths.js.map +1 -0
  331. package/dist/tsconfig.tsbuildinfo +1 -1
  332. package/package.json +17 -17
  333. package/scripts/download-embedding-model.mjs +97 -0
  334. package/scripts/publish.sh +0 -0
  335. package/scripts/sync-claude-assets.sh +0 -0
  336. package/dist/src/production/circuit-breaker.d.ts +0 -121
  337. package/dist/src/production/circuit-breaker.d.ts.map +0 -1
  338. package/dist/src/production/circuit-breaker.js +0 -262
  339. package/dist/src/production/circuit-breaker.js.map +0 -1
  340. package/dist/src/production/error-handler.d.ts +0 -119
  341. package/dist/src/production/error-handler.d.ts.map +0 -1
  342. package/dist/src/production/error-handler.js +0 -324
  343. package/dist/src/production/error-handler.js.map +0 -1
  344. package/dist/src/production/index.d.ts +0 -6
  345. package/dist/src/production/index.d.ts.map +0 -1
  346. package/dist/src/production/index.js +0 -6
  347. package/dist/src/production/index.js.map +0 -1
  348. package/dist/src/production/monitoring.d.ts +0 -181
  349. package/dist/src/production/monitoring.d.ts.map +0 -1
  350. package/dist/src/production/monitoring.js +0 -375
  351. package/dist/src/production/monitoring.js.map +0 -1
  352. package/dist/src/production/rate-limiter.d.ts +0 -125
  353. package/dist/src/production/rate-limiter.d.ts.map +0 -1
  354. package/dist/src/production/rate-limiter.js +0 -218
  355. package/dist/src/production/rate-limiter.js.map +0 -1
  356. package/dist/src/production/retry.d.ts +0 -48
  357. package/dist/src/production/retry.d.ts.map +0 -1
  358. package/dist/src/production/retry.js +0 -189
  359. package/dist/src/production/retry.js.map +0 -1
  360. package/dist/src/transfer/types.d.ts +0 -245
  361. package/dist/src/transfer/types.d.ts.map +0 -1
  362. package/dist/src/transfer/types.js +0 -6
  363. package/dist/src/transfer/types.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"tool-fence.d.ts","sourceRoot":"","sources":["../../../src/orgrt/tool-fence.ts"],"names":[],"mappings":"AACA;;;;;;;;;;;;;GAaG;AAGH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEpD,0EAA0E;AAC1E,eAAO,MAAM,YAAY,QAAoC,CAAC;AAE9D;+DAC+D;AAC/D,eAAO,MAAM,eAAe,KAAK,CAAC;AAElC,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,UAAU,EAAE,GAAG,MAAM,CA6B7D;AAkBD;;4EAE4E;AAC5E,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,QAAQ,EAAE,CAmB7D;AAED;;wDAEwD;AACxD,wBAAsB,eAAe,CAAC,KAAK,EAAE,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,CAa1F;AAED,uEAAuE;AACvE,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,MAAM,CAI9E"}
1
+ {"version":3,"file":"tool-fence.d.ts","sourceRoot":"","sources":["../../../src/orgrt/tool-fence.ts"],"names":[],"mappings":"AACA;;;;;;;;;;;;;GAaG;AAGH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEpD,0EAA0E;AAC1E,eAAO,MAAM,YAAY,QAAoC,CAAC;AAuB9D;+DAC+D;AAC/D,eAAO,MAAM,eAAe,KAAK,CAAC;AAElC,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,UAAU,EAAE,GAAG,MAAM,CA6B7D;AAkBD;;;;;yEAKyE;AACzE,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,MAAM,EAAE,EAClB,WAAW,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,GACjD,QAAQ,EAAE,CAwBZ;AAED;;wDAEwD;AACxD,wBAAsB,eAAe,CAAC,KAAK,EAAE,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,CAa1F;AAED,uEAAuE;AACvE,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,MAAM,CAI9E"}
@@ -16,6 +16,39 @@
16
16
  import { z } from 'zod';
17
17
  /** Fenced block the model uses to call a tool (see buildToolProtocol). */
18
18
  export const TOOL_CALL_RE = /```tool_call\s*\n([\s\S]*?)```/g;
19
+ /** Return the prefix of `s` ending at the first balanced JSON object/array,
20
+ * respecting string literals. Falls back to `s` unchanged when no balanced
21
+ * prefix exists (JSON.parse then reports the original error). */
22
+ function firstBalancedJson(s) {
23
+ let depth = 0, inStr = false, esc = false;
24
+ for (let i = 0; i < s.length; i++) {
25
+ const c = s[i];
26
+ if (esc) {
27
+ esc = false;
28
+ continue;
29
+ }
30
+ if (c === '\\' && inStr) {
31
+ esc = true;
32
+ continue;
33
+ }
34
+ if (c === '"') {
35
+ inStr = !inStr;
36
+ continue;
37
+ }
38
+ if (inStr)
39
+ continue;
40
+ if (c === '{' || c === '[')
41
+ depth++;
42
+ else if (c === '}' || c === ']') {
43
+ depth--;
44
+ if (depth === 0)
45
+ return s.slice(0, i + 1);
46
+ if (depth < 0)
47
+ return s;
48
+ }
49
+ }
50
+ return s;
51
+ }
19
52
  /** Max tool_call → tool_result round-trips within a single mailbox prompt.
20
53
  * Guards against a model that keeps calling tools forever. */
21
54
  export const MAX_TOOL_ROUNDS = 10;
@@ -91,17 +124,23 @@ function describeZod(schema) {
91
124
  return `optional ${describeZod(schema._def.innerType)}`;
92
125
  return desc ? `${kind} — ${desc}` : kind;
93
126
  }
94
- /** Extract tool_call fences from raw assistant texts. Invalid JSON or a
95
- * missing name is skipped (reported back as an error result is impossible
96
- * without a name — so it's silently ignored, matching lenient parsing). */
97
- export function parseToolCalls(rawTexts) {
127
+ /** Extract tool_call fences from raw assistant texts. A fence whose JSON
128
+ * cannot be parsed at all is skipped — but NOT silently: `onMalformed` (when
129
+ * given) is invoked with the raw fence body and the parse error so callers
130
+ * can surface it (runners emit it as an assistant note, which session.ts
131
+ * routes to the org bus and scrollback). A parsed object without a string
132
+ * `name` is skipped quietly — there is nothing actionable to report. */
133
+ export function parseToolCalls(rawTexts, onMalformed) {
98
134
  const calls = [];
99
135
  for (const text of rawTexts) {
100
136
  TOOL_CALL_RE.lastIndex = 0;
101
137
  let m;
102
138
  while ((m = TOOL_CALL_RE.exec(text)) !== null) {
103
139
  try {
104
- const parsed = JSON.parse(m[1].trim());
140
+ // Models sometimes append extra closing braces after the JSON object
141
+ // (observed with kimi k3: `...}}}`); parse only the first balanced
142
+ // object instead of rejecting the whole fence.
143
+ const parsed = JSON.parse(firstBalancedJson(m[1].trim()));
105
144
  if (typeof parsed.name !== 'string' || !parsed.name)
106
145
  continue;
107
146
  calls.push({
@@ -111,7 +150,9 @@ export function parseToolCalls(rawTexts) {
111
150
  : {},
112
151
  });
113
152
  }
114
- catch { /* malformed fence — ignore */ }
153
+ catch (err) {
154
+ onMalformed?.(m[1].trim(), err instanceof Error ? err.message : String(err));
155
+ }
115
156
  }
116
157
  }
117
158
  return calls;
@@ -1 +1 @@
1
- {"version":3,"file":"tool-fence.js","sourceRoot":"","sources":["../../../src/orgrt/tool-fence.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tool-fence.js","sourceRoot":"","sources":["../../../src/orgrt/tool-fence.ts"],"names":[],"mappings":"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"}
@@ -67,7 +67,13 @@ export declare const RoleSchema: z.ZodObject<{
67
67
  read: "read";
68
68
  }>>>;
69
69
  }, z.core.$loose>>;
70
+ runtime: z.ZodOptional<z.ZodEnum<{
71
+ claude: "claude";
72
+ kimicode: "kimicode";
73
+ opencode: "opencode";
74
+ }>>;
70
75
  max_turns_per_message: z.ZodOptional<z.ZodNumber>;
76
+ budget_tokens: z.ZodOptional<z.ZodNumber>;
71
77
  }, z.core.$loose>;
72
78
  export declare const OrgDefSchema: z.ZodObject<{
73
79
  name: z.ZodString;
@@ -80,14 +86,32 @@ export declare const OrgDefSchema: z.ZodObject<{
80
86
  memory_namespace: z.ZodOptional<z.ZodOptional<z.ZodString>>;
81
87
  max_turns_per_message: z.ZodOptional<z.ZodDefault<z.ZodNumber>>;
82
88
  idle_minutes: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
83
- workspace: z.ZodOptional<z.ZodOptional<z.ZodUnion<readonly [z.ZodLiteral<"repo">, z.ZodLiteral<"isolated">, z.ZodString]>>>;
89
+ workspace: z.ZodOptional<z.ZodOptional<z.ZodUnion<readonly [z.ZodLiteral<"repo">, z.ZodLiteral<"isolated">, z.ZodLiteral<"worktree">, z.ZodLiteral<"worktree-per-role">, z.ZodString]>>>;
90
+ circuit_breaker: z.ZodOptional<z.ZodOptional<z.ZodObject<{
91
+ failure_threshold: z.ZodOptional<z.ZodDefault<z.ZodNumber>>;
92
+ cooldown_ms: z.ZodOptional<z.ZodDefault<z.ZodNumber>>;
93
+ }, z.core.$strip>>>;
94
+ stale_base_threshold: z.ZodOptional<z.ZodDefault<z.ZodNumber>>;
95
+ prechecks: z.ZodOptional<z.ZodOptional<z.ZodArray<z.ZodObject<{
96
+ name: z.ZodString;
97
+ command: z.ZodString;
98
+ }, z.core.$strip>>>>;
84
99
  }, z.core.$loose>>, z.ZodTransform<{
85
100
  memory_namespace?: string | undefined;
86
101
  idle_minutes?: number | undefined;
102
+ circuit_breaker?: {
103
+ failure_threshold?: number | undefined;
104
+ cooldown_ms?: number | undefined;
105
+ } | undefined;
106
+ prechecks?: {
107
+ name: string;
108
+ command: string;
109
+ }[] | undefined;
87
110
  max_concurrent_agents: number;
88
111
  budget_tokens: number;
89
112
  max_turns_per_message: number;
90
113
  workspace: string;
114
+ stale_base_threshold: number;
91
115
  }, {
92
116
  [x: string]: unknown;
93
117
  max_concurrent_agents?: number | undefined;
@@ -96,6 +120,15 @@ export declare const OrgDefSchema: z.ZodObject<{
96
120
  max_turns_per_message?: number | undefined;
97
121
  idle_minutes?: number | undefined;
98
122
  workspace?: string | undefined;
123
+ circuit_breaker?: {
124
+ failure_threshold?: number | undefined;
125
+ cooldown_ms?: number | undefined;
126
+ } | undefined;
127
+ stale_base_threshold?: number | undefined;
128
+ prechecks?: {
129
+ name: string;
130
+ command: string;
131
+ }[] | undefined;
99
132
  }>>;
100
133
  roles: z.ZodArray<z.ZodObject<{
101
134
  id: z.ZodString;
@@ -136,8 +169,19 @@ export declare const OrgDefSchema: z.ZodObject<{
136
169
  read: "read";
137
170
  }>>>;
138
171
  }, z.core.$loose>>;
172
+ runtime: z.ZodOptional<z.ZodEnum<{
173
+ claude: "claude";
174
+ kimicode: "kimicode";
175
+ opencode: "opencode";
176
+ }>>;
139
177
  max_turns_per_message: z.ZodOptional<z.ZodNumber>;
178
+ budget_tokens: z.ZodOptional<z.ZodNumber>;
140
179
  }, z.core.$loose>>;
180
+ runtime: z.ZodOptional<z.ZodEnum<{
181
+ claude: "claude";
182
+ kimicode: "kimicode";
183
+ opencode: "opencode";
184
+ }>>;
141
185
  }, z.core.$loose>;
142
186
  export type OrgDef = z.infer<typeof OrgDefSchema>;
143
187
  export type OrgRole = z.infer<typeof RoleSchema>;
@@ -149,7 +193,7 @@ export interface BusEvent {
149
193
  ts: number;
150
194
  org: string;
151
195
  run: string;
152
- type: 'message' | 'xorg' | 'tool' | 'asset' | 'chat' | 'status' | 'audit' | 'usage' | 'question';
196
+ type: 'message' | 'xorg' | 'tool' | 'asset' | 'chat' | 'status' | 'audit' | 'usage' | 'question' | 'gate';
153
197
  from?: string;
154
198
  to?: string;
155
199
  subject?: string;
@@ -166,6 +210,17 @@ export interface BusEvent {
166
210
  interactionId?: string;
167
211
  agentSessionId?: string;
168
212
  }
213
+ export interface DecisionGate {
214
+ id: string;
215
+ name: string;
216
+ description: string;
217
+ roleId: string;
218
+ status: 'pending' | 'approved' | 'rejected';
219
+ createdAt: number;
220
+ resolvedBy?: string;
221
+ resolvedAt?: number;
222
+ resolution?: string;
223
+ }
169
224
  export declare const ORG_DIR = ".monomind/orgs";
170
225
  /**
171
226
  * Recommended org_send handoff format for inter-role communication:
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/orgrt/types.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,4FAA4F;AAC5F,eAAO,MAAM,cAAc;;;;;;;;;;;;;kBAOhB,CAAC;AAEZ,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;iBAYH,CAAC;AAE3B,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAiBP,CAAC;AAEjB,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;mBAmBmG,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAElH,CAAC;AAEjB,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;AAClD,MAAM,MAAM,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,UAAU,CAAC,CAAC;AACjD,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAC1D,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AAE5D,mGAAmG;AACnG,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,QAAQ,GAAG,OAAO,GAAG,OAAO,GAAG,UAAU,CAAC;IACjG,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,yFAAyF;IACzF,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,yFAAyF;IACzF,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,eAAO,MAAM,OAAO,mBAAmB,CAAC;AAExC;;;;;;;;;;;;;;;;;;;;;;;GAuBG"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/orgrt/types.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,4FAA4F;AAC5F,eAAO,MAAM,cAAc;;;;;;;;;;;;;kBAOhB,CAAC;AAEZ,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;iBAcH,CAAC;AAE3B,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA0BP,CAAC;AAEjB,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mBAkCmG,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAOlH,CAAC;AAEjB,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;AAClD,MAAM,MAAM,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,UAAU,CAAC,CAAC;AACjD,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAC1D,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AAE5D,mGAAmG;AACnG,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,QAAQ,GAAG,OAAO,GAAG,OAAO,GAAG,UAAU,GAAG,MAAM,CAAC;IAC1G,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,yFAAyF;IACzF,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,yFAAyF;IACzF,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,SAAS,GAAG,UAAU,GAAG,UAAU,CAAC;IAC5C,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,eAAO,MAAM,OAAO,mBAAmB,CAAC;AAExC;;;;;;;;;;;;;;;;;;;;;;;GAuBG"}
@@ -15,7 +15,9 @@ export const RolePolicySchema = z.object({
15
15
  /** glob patterns relative to org cwd */
16
16
  fileWrite: z.array(z.string()).default(['**']),
17
17
  fileRead: z.array(z.string()).default(['**']),
18
- /** allowed domains for WebFetch/WebSearch; empty array = no web */
18
+ /** allowed domains for WebFetch/WebSearch; empty array = no web.
19
+ * Entries: exact host, subdomain suffix ('example.com' also matches
20
+ * 'api.example.com'), '*.example.com' wildcard, or '*' for any host. */
19
21
  webAllow: z.array(z.string()).optional(),
20
22
  maxTokens: z.number().int().positive().optional(),
21
23
  /** Git access level: 'none' blocks all git, 'read' allows status/log/diff,
@@ -35,10 +37,19 @@ export const RoleSchema = z.object({
35
37
  }).partial().optional(),
36
38
  provider: ProviderSchema.optional(),
37
39
  policy: RolePolicySchema.optional(),
40
+ /** Per-role runtime override: when set, this role's sessions run on the given
41
+ * agent runtime regardless of the org-level `runtime` field or the
42
+ * MONOMIND_RUNTIME env var ('claude' explicitly forces the Claude default).
43
+ * Enables mixed-runtime orgs — e.g. a Claude coordinator with opencode workers. */
44
+ runtime: z.enum(['claude', 'kimicode', 'opencode']).optional(),
38
45
  /** Per-role override of run_config.max_turns_per_message — roles that legitimately
39
46
  * need many more turns per message (e.g. a developer doing sequential build/fix/verify
40
47
  * cycles) than others (e.g. docs, pm) shouldn't be forced onto one global budget. */
41
48
  max_turns_per_message: z.number().int().positive().optional(),
49
+ /** Per-role override of the even run_config.budget_tokens split — a role on a
50
+ * token-hungry model (e.g. GLM via opencode) can get a larger budget without
51
+ * inflating the org-wide budget for every other role. Unset = even split. */
52
+ budget_tokens: z.number().int().positive().optional(),
42
53
  }).passthrough();
43
54
  export const OrgDefSchema = z.object({
44
55
  name: z.string().min(1),
@@ -57,10 +68,30 @@ export const OrgDefSchema = z.object({
57
68
  * 'isolated' — a scratch dir under .monomind/orgs/<name>/workspace, which the
58
69
  * policy engine's workdir check then confines every path to.
59
70
  * An absolute path is used verbatim. */
60
- workspace: z.union([z.literal('repo'), z.literal('isolated'), z.string()]).optional(),
71
+ workspace: z.union([z.literal('repo'), z.literal('isolated'), z.literal('worktree'), z.literal('worktree-per-role'), z.string()]).optional(),
72
+ /** Circuit breaker: after N consecutive non-success session results from
73
+ * a role, trip the circuit and close the role's mailbox instead of looping. */
74
+ circuit_breaker: z.object({
75
+ failure_threshold: z.number().int().positive().default(5),
76
+ cooldown_ms: z.number().int().nonnegative().default(0),
77
+ }).partial().optional(),
78
+ /** Stale-base drift detection: warn (or refuse) when the working tree is
79
+ * too many commits behind its tracking branch. 0 disables. */
80
+ stale_base_threshold: z.number().int().nonnegative().default(0),
81
+ /** Precondition checks: shell commands that must exit 0 before a scheduled
82
+ * run starts. If any fail, the run is skipped and the failure logged. */
83
+ prechecks: z.array(z.object({
84
+ name: z.string(),
85
+ command: z.string(),
86
+ })).optional(),
61
87
  }).partial().passthrough().default({})
62
- .transform(rc => ({ max_concurrent_agents: 4, budget_tokens: 1_000_000, max_turns_per_message: 30, workspace: 'repo', ...rc })),
88
+ .transform(rc => ({ max_concurrent_agents: 4, budget_tokens: 1_000_000, max_turns_per_message: 30, workspace: 'repo', stale_base_threshold: 0, ...rc })),
63
89
  roles: z.array(RoleSchema).min(1),
90
+ /** Which agent runtime hosts this org's role sessions. When absent, the
91
+ * MONOMIND_RUNTIME env var is honored, falling back to the default Claude
92
+ * runner. Per-org values override the env var, and a role's own `runtime`
93
+ * field (see RoleSchema) overrides this per role. */
94
+ runtime: z.enum(['claude', 'kimicode', 'opencode']).optional(),
64
95
  }).passthrough();
65
96
  export const ORG_DIR = '.monomind/orgs';
66
97
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/orgrt/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/orgrt/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,49 @@
1
+ /**
2
+ * Opt-in download of the semantic-routing embedding model.
3
+ *
4
+ * The semantic router (`routing/embedder.ts`) needs the weights of
5
+ * Snowflake/snowflake-arctic-embed-xs (~88 MB) cached on disk by
6
+ * `@huggingface/transformers`. On a fresh install they are absent, so the
7
+ * router silently falls back to keyword + hash routing. Nothing may download
8
+ * them implicitly — this module exists so `monomind init` can ASK first, and
9
+ * so users can fetch the model later via `monomind download-embeddings` (or
10
+ * `scripts/download-embedding-model.mjs` on a source checkout).
11
+ *
12
+ * Kept dependency-light and free of CLI I/O so it is unit-testable: the
13
+ * prompt/TTY decisions live in `embeddingDownloadDecision()`, the actual
14
+ * download in `downloadEmbeddingModel()`.
15
+ */
16
+ /** HuggingFace model id — kept in sync with `routing/embedder.ts`. */
17
+ export declare const EMBEDDING_MODEL_ID = "Snowflake/snowflake-arctic-embed-xs";
18
+ /** Approximate download size, used only for prompt/UX copy. */
19
+ export declare const EMBEDDING_MODEL_SIZE_LABEL = "~88 MB";
20
+ /**
21
+ * Locate the cache directory `@huggingface/transformers` writes model weights
22
+ * into (`<package root>/.cache`), or null when the optionalDependency is not
23
+ * installed. Resolution mirrors the guard in
24
+ * `__tests__/route-layer-source-worker.test.ts`.
25
+ */
26
+ export declare function findTransformersCacheDir(): string | null;
27
+ /** True when the embedding model weights are already cached on disk. */
28
+ export declare function isEmbeddingModelCached(): boolean;
29
+ export type EmbeddingDownloadReason = 'already-cached' | 'non-interactive' | 'prompt';
30
+ /**
31
+ * Pure decision for the init-time download prompt, kept separate from I/O so
32
+ * tests can drive it with stubbed TTY/CI values.
33
+ */
34
+ export declare function embeddingDownloadDecision(input: {
35
+ cached: boolean;
36
+ stdinTTY: boolean;
37
+ stdoutTTY: boolean;
38
+ ci: boolean;
39
+ }): EmbeddingDownloadReason;
40
+ /**
41
+ * Download the embedding model by loading the feature-extraction pipeline
42
+ * once, which populates the transformers.js cache. Progress is reported via
43
+ * the optional `onProgress` callback (human-readable lines).
44
+ *
45
+ * Throws when `@huggingface/transformers` is not installed or the download
46
+ * fails — callers decide how to present that.
47
+ */
48
+ export declare function downloadEmbeddingModel(onProgress?: (line: string) => void): Promise<void>;
49
+ //# sourceMappingURL=model-download.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model-download.d.ts","sourceRoot":"","sources":["../../../src/routing/model-download.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAMH,sEAAsE;AACtE,eAAO,MAAM,kBAAkB,wCAAwC,CAAC;AAExE,+DAA+D;AAC/D,eAAO,MAAM,0BAA0B,WAAW,CAAC;AAEnD;;;;;GAKG;AACH,wBAAgB,wBAAwB,IAAI,MAAM,GAAG,IAAI,CAkBxD;AAED,wEAAwE;AACxE,wBAAgB,sBAAsB,IAAI,OAAO,CAMhD;AAED,MAAM,MAAM,uBAAuB,GAC/B,gBAAgB,GAChB,iBAAiB,GACjB,QAAQ,CAAC;AAEb;;;GAGG;AACH,wBAAgB,yBAAyB,CAAC,KAAK,EAAE;IAC/C,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,OAAO,CAAC;IAClB,SAAS,EAAE,OAAO,CAAC;IACnB,EAAE,EAAE,OAAO,CAAC;CACb,GAAG,uBAAuB,CAI1B;AAED;;;;;;;GAOG;AACH,wBAAsB,sBAAsB,CAC1C,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,GAClC,OAAO,CAAC,IAAI,CAAC,CA2Bf"}
@@ -0,0 +1,106 @@
1
+ /**
2
+ * Opt-in download of the semantic-routing embedding model.
3
+ *
4
+ * The semantic router (`routing/embedder.ts`) needs the weights of
5
+ * Snowflake/snowflake-arctic-embed-xs (~88 MB) cached on disk by
6
+ * `@huggingface/transformers`. On a fresh install they are absent, so the
7
+ * router silently falls back to keyword + hash routing. Nothing may download
8
+ * them implicitly — this module exists so `monomind init` can ASK first, and
9
+ * so users can fetch the model later via `monomind download-embeddings` (or
10
+ * `scripts/download-embedding-model.mjs` on a source checkout).
11
+ *
12
+ * Kept dependency-light and free of CLI I/O so it is unit-testable: the
13
+ * prompt/TTY decisions live in `embeddingDownloadDecision()`, the actual
14
+ * download in `downloadEmbeddingModel()`.
15
+ */
16
+ import { existsSync } from 'fs';
17
+ import { createRequire } from 'module';
18
+ import { dirname, join } from 'path';
19
+ /** HuggingFace model id — kept in sync with `routing/embedder.ts`. */
20
+ export const EMBEDDING_MODEL_ID = 'Snowflake/snowflake-arctic-embed-xs';
21
+ /** Approximate download size, used only for prompt/UX copy. */
22
+ export const EMBEDDING_MODEL_SIZE_LABEL = '~88 MB';
23
+ /**
24
+ * Locate the cache directory `@huggingface/transformers` writes model weights
25
+ * into (`<package root>/.cache`), or null when the optionalDependency is not
26
+ * installed. Resolution mirrors the guard in
27
+ * `__tests__/route-layer-source-worker.test.ts`.
28
+ */
29
+ export function findTransformersCacheDir() {
30
+ let entry;
31
+ try {
32
+ const require = createRequire(import.meta.url);
33
+ // Resolve the main entry, not '<pkg>/package.json' — the package does not
34
+ // export its package.json, so that throws ERR_PACKAGE_PATH_NOT_EXPORTED.
35
+ entry = require.resolve('@huggingface/transformers');
36
+ }
37
+ catch {
38
+ return null;
39
+ }
40
+ let dir = dirname(entry);
41
+ for (let i = 0; i < 5 && !existsSync(join(dir, 'package.json')); i++) {
42
+ const parent = dirname(dir);
43
+ if (parent === dir)
44
+ break;
45
+ dir = parent;
46
+ }
47
+ return join(dir, '.cache');
48
+ }
49
+ /** True when the embedding model weights are already cached on disk. */
50
+ export function isEmbeddingModelCached() {
51
+ const cache = findTransformersCacheDir();
52
+ if (!cache)
53
+ return false;
54
+ // 'Xenova' covers checkouts where a Xenova-mirrored model populated the
55
+ // same cache (same check the semantic-routing tests use).
56
+ return existsSync(join(cache, 'Snowflake')) || existsSync(join(cache, 'Xenova'));
57
+ }
58
+ /**
59
+ * Pure decision for the init-time download prompt, kept separate from I/O so
60
+ * tests can drive it with stubbed TTY/CI values.
61
+ */
62
+ export function embeddingDownloadDecision(input) {
63
+ if (input.cached)
64
+ return 'already-cached';
65
+ if (!input.stdinTTY || !input.stdoutTTY || input.ci)
66
+ return 'non-interactive';
67
+ return 'prompt';
68
+ }
69
+ /**
70
+ * Download the embedding model by loading the feature-extraction pipeline
71
+ * once, which populates the transformers.js cache. Progress is reported via
72
+ * the optional `onProgress` callback (human-readable lines).
73
+ *
74
+ * Throws when `@huggingface/transformers` is not installed or the download
75
+ * fails — callers decide how to present that.
76
+ */
77
+ export async function downloadEmbeddingModel(onProgress) {
78
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
79
+ let hf;
80
+ try {
81
+ hf = await import('@huggingface/transformers');
82
+ }
83
+ catch {
84
+ throw new Error('@huggingface/transformers is not installed (it is an optionalDependency). ' +
85
+ 'Reinstall with optional dependencies enabled, e.g. `npm install --include=optional`.');
86
+ }
87
+ const seen = new Set();
88
+ await hf.pipeline('feature-extraction', EMBEDDING_MODEL_ID, {
89
+ dtype: 'fp32',
90
+ progress_callback: (p) => {
91
+ if (!onProgress || !p)
92
+ return;
93
+ if (p.status === 'downloading' && p.file && !seen.has(p.file)) {
94
+ seen.add(p.file);
95
+ onProgress(`Downloading ${p.file}...`);
96
+ }
97
+ else if (p.status === 'progress' && p.file && typeof p.progress === 'number') {
98
+ onProgress(`Downloading ${p.file}... ${Math.floor(p.progress)}%`);
99
+ }
100
+ else if (p.status === 'done' && p.file) {
101
+ onProgress(`Downloaded ${p.file}`);
102
+ }
103
+ },
104
+ });
105
+ }
106
+ //# sourceMappingURL=model-download.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model-download.js","sourceRoot":"","sources":["../../../src/routing/model-download.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAChC,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAErC,sEAAsE;AACtE,MAAM,CAAC,MAAM,kBAAkB,GAAG,qCAAqC,CAAC;AAExE,+DAA+D;AAC/D,MAAM,CAAC,MAAM,0BAA0B,GAAG,QAAQ,CAAC;AAEnD;;;;;GAKG;AACH,MAAM,UAAU,wBAAwB;IACtC,IAAI,KAAa,CAAC;IAClB,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,aAAa,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC;QAC/C,0EAA0E;QAC1E,yEAAyE;QACzE,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,2BAA2B,CAAC,CAAC;IACvD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;IACzB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QACrE,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;QAC5B,IAAI,MAAM,KAAK,GAAG;YAAE,MAAM;QAC1B,GAAG,GAAG,MAAM,CAAC;IACf,CAAC;IACD,OAAO,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;AAC7B,CAAC;AAED,wEAAwE;AACxE,MAAM,UAAU,sBAAsB;IACpC,MAAM,KAAK,GAAG,wBAAwB,EAAE,CAAC;IACzC,IAAI,CAAC,KAAK;QAAE,OAAO,KAAK,CAAC;IACzB,wEAAwE;IACxE,0DAA0D;IAC1D,OAAO,UAAU,CAAC,IAAI,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC;AACnF,CAAC;AAOD;;;GAGG;AACH,MAAM,UAAU,yBAAyB,CAAC,KAKzC;IACC,IAAI,KAAK,CAAC,MAAM;QAAE,OAAO,gBAAgB,CAAC;IAC1C,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,CAAC,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,EAAE;QAAE,OAAO,iBAAiB,CAAC;IAC9E,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,UAAmC;IAEnC,8DAA8D;IAC9D,IAAI,EAAO,CAAC;IACZ,IAAI,CAAC;QACH,EAAE,GAAG,MAAM,MAAM,CAAC,2BAAqC,CAAC,CAAC;IAC3D,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CACb,4EAA4E;YAC5E,sFAAsF,CACvF,CAAC;IACJ,CAAC;IAED,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,MAAM,EAAE,CAAC,QAAQ,CAAC,oBAAoB,EAAE,kBAAkB,EAAE;QAC1D,KAAK,EAAE,MAAM;QACb,iBAAiB,EAAE,CAAC,CAAwD,EAAE,EAAE;YAC9E,IAAI,CAAC,UAAU,IAAI,CAAC,CAAC;gBAAE,OAAO;YAC9B,IAAI,CAAC,CAAC,MAAM,KAAK,aAAa,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC9D,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;gBACjB,UAAU,CAAC,eAAe,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC;YACzC,CAAC;iBAAM,IAAI,CAAC,CAAC,MAAM,KAAK,UAAU,IAAI,CAAC,CAAC,IAAI,IAAI,OAAO,CAAC,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;gBAC/E,UAAU,CAAC,eAAe,CAAC,CAAC,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;YACpE,CAAC;iBAAM,IAAI,CAAC,CAAC,MAAM,KAAK,MAAM,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;gBACzC,UAAU,CAAC,cAAc,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;YACrC,CAAC;QACH,CAAC;KACF,CAAC,CAAC;AACL,CAAC"}
@@ -28,6 +28,11 @@ export declare function setEnabled(enabled: boolean): void;
28
28
  /**
29
29
  * Strip obvious secrets/PII before anything gets sent to a public GitHub repo.
30
30
  * Not a substitute for careful callers — this is a last-resort net.
31
+ *
32
+ * C6 hardening adds: absolute-path collapse (any multi-segment path to
33
+ * basename), hostname redaction (contextual after ://@, standalone with
34
+ * TLD heuristic — excludes version numbers, known code extensions, and
35
+ * decimals), IPv4/IPv6, emails, SSNs, and phone numbers.
31
36
  */
32
37
  export declare function redact(text: string): string;
33
38
  export declare function computeSignature(repo: string, title: string): string;
@@ -1 +1 @@
1
- {"version":3,"file":"crash-reporter.d.ts","sourceRoot":"","sources":["../../../src/services/crash-reporter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AA2BH,MAAM,WAAW,gBAAgB;IAC/B,kDAAkD;IAClD,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,6FAA6F;IAC7F,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,SAAS,GAAG,WAAW,GAAG,eAAe,GAAG,UAAU,GAAG,cAAc,GAAG,OAAO,CAAC;IAC1F,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACjB;AAwCD,wBAAgB,SAAS,IAAI,OAAO,CASnC;AAED,wBAAgB,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAEjD;AAED;;;GAGG;AACH,wBAAgB,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAmC3C;AAkBD,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAGpE;AA2KD;;;;;;GAMG;AACH,wBAAsB,WAAW,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CA4FrF"}
1
+ {"version":3,"file":"crash-reporter.d.ts","sourceRoot":"","sources":["../../../src/services/crash-reporter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AA2BH,MAAM,WAAW,gBAAgB;IAC/B,kDAAkD;IAClD,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,6FAA6F;IAC7F,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,SAAS,GAAG,WAAW,GAAG,eAAe,GAAG,UAAU,GAAG,cAAc,GAAG,OAAO,CAAC;IAC1F,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACjB;AAwCD,wBAAgB,SAAS,IAAI,OAAO,CASnC;AAED,wBAAgB,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAEjD;AAED;;;;;;;;GAQG;AACH,wBAAgB,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CA2F3C;AAkBD,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAGpE;AA2KD;;;;;;GAMG;AACH,wBAAsB,WAAW,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CA4FrF"}
@@ -70,6 +70,11 @@ export function setEnabled(enabled) {
70
70
  /**
71
71
  * Strip obvious secrets/PII before anything gets sent to a public GitHub repo.
72
72
  * Not a substitute for careful callers — this is a last-resort net.
73
+ *
74
+ * C6 hardening adds: absolute-path collapse (any multi-segment path to
75
+ * basename), hostname redaction (contextual after ://@, standalone with
76
+ * TLD heuristic — excludes version numbers, known code extensions, and
77
+ * decimals), IPv4/IPv6, emails, SSNs, and phone numbers.
73
78
  */
74
79
  export function redact(text) {
75
80
  let out = text;
@@ -86,6 +91,17 @@ export function redact(text) {
86
91
  out = out.replace(/\/home\/[^/\s]+/g, '/home/<user>');
87
92
  out = out.replace(/\/Users\/[^/\s]+/g, '/Users/<user>');
88
93
  out = out.replace(/C:\\Users\\[^\\\s]+/g, 'C:\\Users\\<user>');
94
+ // C6: strip IPv4 addresses — leaked via ECONNREFUSED, fetch errors,
95
+ // telemetry endpoints, internal service URLs. IPv6 is handled later with
96
+ // bracket, full, and compressed :: forms.
97
+ out = out.replace(/\b(?:\d{1,3}\.){3}\d{1,3}\b/g, '<ip>');
98
+ // C6: strip emails — commonly embedded in ValidationError messages and
99
+ // customer data dumps that reach the crash handler via err.message.
100
+ out = out.replace(/\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}\b/g, '<email>');
101
+ // C6: PII in err.message — SSN and phone numbers commonly appear in
102
+ // validation errors. SSN is high-sensitivity; phone is medium.
103
+ out = out.replace(/\b\d{3}-\d{2}-\d{4}\b/g, '<ssn>');
104
+ out = out.replace(/(?:\+?\d{1,3}[-.\s]?)?\(?\d{3}\)?[-.\s]?\d{3}[-.\s]?\d{4}\b/g, '<phone>');
89
105
  const SECRET_PATTERNS = [
90
106
  /(?:api[_-]?key|apikey)\s*[:=]\s*['"]?[^\s'"]{8,}['"]?/gi,
91
107
  /(?:secret|password|passwd|pwd)\s*[:=]\s*['"]?[^\s'"]{8,}['"]?/gi,
@@ -102,6 +118,39 @@ export function redact(text) {
102
118
  ];
103
119
  for (const pattern of SECRET_PATTERNS)
104
120
  out = out.replace(pattern, '[redacted]');
121
+ // Collapse any remaining multi-segment absolute path to its basename,
122
+ // preserving optional :line:col suffixes for debuggability. Fires on
123
+ // /a/b, ~/a/b, C:\a\b — single-segment paths (/tmp) are not touched.
124
+ // Runs AFTER home-dir and username replacement.
125
+ out = out.replace(/(?:~\/|(?<![:/>\w])\/(?!\/)|[A-Z]:\\)(?:[^\s'"]*[/\\])([\w.-]+(?::\d+(?::\d+)?)?)/g, '<path>/$1');
126
+ // Hostname / domain redaction.
127
+ // 1. Contextual: hostnames that follow :// or @ (requires at least one dot).
128
+ out = out.replace(/(\/\/|@)([a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?)+)/g, '$1<host>');
129
+ // 2. Standalone: 3+ dot-separated segments with a TLD-like tail (2-6
130
+ // alpha chars). Excludes version numbers (v2.9.0, 1.2.3), filenames
131
+ // whose last segment is a known code/config extension, and bare
132
+ // decimal numbers.
133
+ const KNOWN_CODE_EXTS = /\.(?:js|ts|jsx|tsx|json|md|yaml|yml|html|css|mjs|cjs|toml|xml|txt|log|sql|sh|py|go|rs|rb|java|c|cpp|h|hpp|swift|kt|lock|map)$/i;
134
+ out = out.replace(/\b([a-zA-Z][a-zA-Z0-9-]*(?:\.[a-zA-Z0-9][a-zA-Z0-9-]*)+\.[a-zA-Z]{2,6})\b/g, (match) => {
135
+ if (/^v?\d+(\.\d+)+$/.test(match))
136
+ return match; // version
137
+ if (KNOWN_CODE_EXTS.test(match))
138
+ return match; // filename
139
+ if (/^\d+(\.\d+)+$/.test(match))
140
+ return match; // decimal
141
+ return '<host>';
142
+ });
143
+ // IPv6 addresses.
144
+ // Bracketed form (URLs): [::1], [fe80::1], [2001:db8::1]
145
+ out = out.replace(/\[(?:[0-9a-fA-F]{0,4}:){2,}[0-9a-fA-F]{0,4}\]/g, '[<ipv6>]');
146
+ // Full unbracketed: 3+ colon-separated hex groups (avoids HH:MM:SS false positives)
147
+ out = out.replace(/(?<![:\w])(?:[0-9a-fA-F]{1,4}:){3,7}[0-9a-fA-F]{0,4}(?![:\w])/g, '<ipv6>');
148
+ // Compressed :: with leading hex groups: fe80::1, 2001:db8::1.
149
+ // Uses \b (not lookbehind) so hex digits before :: don't block the match.
150
+ // std::vector is safe: 's' is not [0-9a-fA-F].
151
+ out = out.replace(/\b[0-9a-fA-F]{1,4}(?::[0-9a-fA-F]{1,4})*::(?:[0-9a-fA-F]{1,4}(?::[0-9a-fA-F]{1,4})*)?\b/g, '<ipv6>');
152
+ // Compressed :: without leading hex: ::1, ::ffff:10.0.0.1
153
+ out = out.replace(/(?<![:\w])::(?:[0-9a-fA-F]{1,4}(?::[0-9a-fA-F]{1,4})*)?(?![:\w])/g, '<ipv6>');
105
154
  return out;
106
155
  }
107
156
  /**