@monoes/monomindcli 2.8.3 → 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 (377) 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/design-palette.d.ts +5 -0
  23. package/dist/src/commands/design-palette.d.ts.map +1 -1
  24. package/dist/src/commands/design-palette.js +8 -5
  25. package/dist/src/commands/design-palette.js.map +1 -1
  26. package/dist/src/commands/doctor.d.ts.map +1 -1
  27. package/dist/src/commands/doctor.js +22 -18
  28. package/dist/src/commands/doctor.js.map +1 -1
  29. package/dist/src/commands/download-embeddings.d.ts +8 -0
  30. package/dist/src/commands/download-embeddings.d.ts.map +1 -0
  31. package/dist/src/commands/download-embeddings.js +34 -0
  32. package/dist/src/commands/download-embeddings.js.map +1 -0
  33. package/dist/src/commands/hooks.d.ts.map +1 -1
  34. package/dist/src/commands/hooks.js +14 -0
  35. package/dist/src/commands/hooks.js.map +1 -1
  36. package/dist/src/commands/index.d.ts.map +1 -1
  37. package/dist/src/commands/index.js +4 -0
  38. package/dist/src/commands/index.js.map +1 -1
  39. package/dist/src/commands/init-wizard.js +1 -1
  40. package/dist/src/commands/init-wizard.js.map +1 -1
  41. package/dist/src/commands/init.d.ts.map +1 -1
  42. package/dist/src/commands/init.js +48 -1
  43. package/dist/src/commands/init.js.map +1 -1
  44. package/dist/src/commands/monograph.d.ts.map +1 -1
  45. package/dist/src/commands/monograph.js +35 -1
  46. package/dist/src/commands/monograph.js.map +1 -1
  47. package/dist/src/commands/org-observe.d.ts +10 -0
  48. package/dist/src/commands/org-observe.d.ts.map +1 -1
  49. package/dist/src/commands/org-observe.js +195 -31
  50. package/dist/src/commands/org-observe.js.map +1 -1
  51. package/dist/src/commands/org.d.ts +1 -0
  52. package/dist/src/commands/org.d.ts.map +1 -1
  53. package/dist/src/commands/org.js +139 -3
  54. package/dist/src/commands/org.js.map +1 -1
  55. package/dist/src/commands/route.d.ts +1 -9
  56. package/dist/src/commands/route.d.ts.map +1 -1
  57. package/dist/src/commands/route.js +42 -65
  58. package/dist/src/commands/route.js.map +1 -1
  59. package/dist/src/commands/security-cve.d.ts.map +1 -1
  60. package/dist/src/commands/security-cve.js +2 -1
  61. package/dist/src/commands/security-cve.js.map +1 -1
  62. package/dist/src/index.d.ts +0 -10
  63. package/dist/src/index.d.ts.map +1 -1
  64. package/dist/src/index.js +4 -15
  65. package/dist/src/index.js.map +1 -1
  66. package/dist/src/init/copy-assets.d.ts +17 -0
  67. package/dist/src/init/copy-assets.d.ts.map +1 -0
  68. package/dist/src/init/copy-assets.js +271 -0
  69. package/dist/src/init/copy-assets.js.map +1 -0
  70. package/dist/src/init/executor.d.ts +2 -30
  71. package/dist/src/init/executor.d.ts.map +1 -1
  72. package/dist/src/init/executor.js +56 -2493
  73. package/dist/src/init/executor.js.map +1 -1
  74. package/dist/src/init/geminimd-generator.js +2 -2
  75. package/dist/src/init/helpers-generator.d.ts.map +1 -1
  76. package/dist/src/init/helpers-generator.js +9 -0
  77. package/dist/src/init/helpers-generator.js.map +1 -1
  78. package/dist/src/init/kimi-generator.js +3 -3
  79. package/dist/src/init/kimi-generator.js.map +1 -1
  80. package/dist/src/init/settings-generator.d.ts.map +1 -1
  81. package/dist/src/init/settings-generator.js +0 -4
  82. package/dist/src/init/settings-generator.js.map +1 -1
  83. package/dist/src/init/shared.d.ts +112 -0
  84. package/dist/src/init/shared.d.ts.map +1 -0
  85. package/dist/src/init/shared.js +475 -0
  86. package/dist/src/init/shared.js.map +1 -0
  87. package/dist/src/init/statusline-generator.d.ts.map +1 -1
  88. package/dist/src/init/statusline-generator.js +37 -0
  89. package/dist/src/init/statusline-generator.js.map +1 -1
  90. package/dist/src/init/types.d.ts +1 -1
  91. package/dist/src/init/types.d.ts.map +1 -1
  92. package/dist/src/init/upgrade.d.ts +34 -0
  93. package/dist/src/init/upgrade.d.ts.map +1 -0
  94. package/dist/src/init/upgrade.js +477 -0
  95. package/dist/src/init/upgrade.js.map +1 -0
  96. package/dist/src/init/write-antigravity.d.ts +13 -0
  97. package/dist/src/init/write-antigravity.d.ts.map +1 -0
  98. package/dist/src/init/write-antigravity.js +117 -0
  99. package/dist/src/init/write-antigravity.js.map +1 -0
  100. package/dist/src/init/write-capabilities.d.ts +9 -0
  101. package/dist/src/init/write-capabilities.d.ts.map +1 -0
  102. package/dist/src/init/write-capabilities.js +392 -0
  103. package/dist/src/init/write-capabilities.js.map +1 -0
  104. package/dist/src/init/write-claude.d.ts +25 -0
  105. package/dist/src/init/write-claude.d.ts.map +1 -0
  106. package/dist/src/init/write-claude.js +279 -0
  107. package/dist/src/init/write-claude.js.map +1 -0
  108. package/dist/src/init/write-kimicode.d.ts +19 -0
  109. package/dist/src/init/write-kimicode.d.ts.map +1 -0
  110. package/dist/src/init/write-kimicode.js +223 -0
  111. package/dist/src/init/write-kimicode.js.map +1 -0
  112. package/dist/src/init/write-opencode.d.ts +14 -0
  113. package/dist/src/init/write-opencode.d.ts.map +1 -0
  114. package/dist/src/init/write-opencode.js +130 -0
  115. package/dist/src/init/write-opencode.js.map +1 -0
  116. package/dist/src/init/write-runtime-config.d.ts +14 -0
  117. package/dist/src/init/write-runtime-config.d.ts.map +1 -0
  118. package/dist/src/init/write-runtime-config.js +214 -0
  119. package/dist/src/init/write-runtime-config.js.map +1 -0
  120. package/dist/src/init/write-sample-org.d.ts +9 -0
  121. package/dist/src/init/write-sample-org.d.ts.map +1 -0
  122. package/dist/src/init/write-sample-org.js +39 -0
  123. package/dist/src/init/write-sample-org.js.map +1 -0
  124. package/dist/src/knowledge/eval/golden-set.js +1 -1
  125. package/dist/src/knowledge/eval/golden-set.js.map +1 -1
  126. package/dist/src/mcp-client.d.ts.map +1 -1
  127. package/dist/src/mcp-client.js +7 -3
  128. package/dist/src/mcp-client.js.map +1 -1
  129. package/dist/src/mcp-tools/analyze-tools.d.ts.map +1 -1
  130. package/dist/src/mcp-tools/analyze-tools.js +2 -25
  131. package/dist/src/mcp-tools/analyze-tools.js.map +1 -1
  132. package/dist/src/mcp-tools/auto-install.d.ts.map +1 -1
  133. package/dist/src/mcp-tools/auto-install.js +2 -1
  134. package/dist/src/mcp-tools/auto-install.js.map +1 -1
  135. package/dist/src/mcp-tools/hooks-routing.d.ts.map +1 -1
  136. package/dist/src/mcp-tools/hooks-routing.js +26 -0
  137. package/dist/src/mcp-tools/hooks-routing.js.map +1 -1
  138. package/dist/src/mcp-tools/memory-tools.d.ts.map +1 -1
  139. package/dist/src/mcp-tools/memory-tools.js +2 -37
  140. package/dist/src/mcp-tools/memory-tools.js.map +1 -1
  141. package/dist/src/mcp-tools/monodesign-tools.d.ts +19 -0
  142. package/dist/src/mcp-tools/monodesign-tools.d.ts.map +1 -0
  143. package/dist/src/mcp-tools/monodesign-tools.js +233 -0
  144. package/dist/src/mcp-tools/monodesign-tools.js.map +1 -0
  145. package/dist/src/mcp-tools/monograph/agent-history-tools.d.ts +5 -0
  146. package/dist/src/mcp-tools/monograph/agent-history-tools.d.ts.map +1 -0
  147. package/dist/src/mcp-tools/monograph/agent-history-tools.js +177 -0
  148. package/dist/src/mcp-tools/monograph/agent-history-tools.js.map +1 -0
  149. package/dist/src/mcp-tools/monograph/build-tools.d.ts +9 -0
  150. package/dist/src/mcp-tools/monograph/build-tools.d.ts.map +1 -0
  151. package/dist/src/mcp-tools/monograph/build-tools.js +299 -0
  152. package/dist/src/mcp-tools/monograph/build-tools.js.map +1 -0
  153. package/dist/src/mcp-tools/monograph/group-tools.d.ts +10 -0
  154. package/dist/src/mcp-tools/monograph/group-tools.d.ts.map +1 -0
  155. package/dist/src/mcp-tools/monograph/group-tools.js +225 -0
  156. package/dist/src/mcp-tools/monograph/group-tools.js.map +1 -0
  157. package/dist/src/mcp-tools/monograph/health-tools.d.ts +6 -0
  158. package/dist/src/mcp-tools/monograph/health-tools.d.ts.map +1 -0
  159. package/dist/src/mcp-tools/monograph/health-tools.js +113 -0
  160. package/dist/src/mcp-tools/monograph/health-tools.js.map +1 -0
  161. package/dist/src/mcp-tools/monograph/impact-tools.d.ts +9 -0
  162. package/dist/src/mcp-tools/monograph/impact-tools.d.ts.map +1 -0
  163. package/dist/src/mcp-tools/monograph/impact-tools.js +532 -0
  164. package/dist/src/mcp-tools/monograph/impact-tools.js.map +1 -0
  165. package/dist/src/mcp-tools/monograph/index.d.ts +10 -0
  166. package/dist/src/mcp-tools/monograph/index.d.ts.map +1 -0
  167. package/dist/src/mcp-tools/monograph/index.js +73 -0
  168. package/dist/src/mcp-tools/monograph/index.js.map +1 -0
  169. package/dist/src/mcp-tools/monograph/query-tools.d.ts +11 -0
  170. package/dist/src/mcp-tools/monograph/query-tools.d.ts.map +1 -0
  171. package/dist/src/mcp-tools/monograph/query-tools.js +500 -0
  172. package/dist/src/mcp-tools/monograph/query-tools.js.map +1 -0
  173. package/dist/src/mcp-tools/monograph/shared.d.ts +64 -0
  174. package/dist/src/mcp-tools/monograph/shared.d.ts.map +1 -0
  175. package/dist/src/mcp-tools/monograph/shared.js +215 -0
  176. package/dist/src/mcp-tools/monograph/shared.js.map +1 -0
  177. package/dist/src/mcp-tools/monograph/visualize-tools.d.ts +10 -0
  178. package/dist/src/mcp-tools/monograph/visualize-tools.d.ts.map +1 -0
  179. package/dist/src/mcp-tools/monograph/visualize-tools.js +382 -0
  180. package/dist/src/mcp-tools/monograph/visualize-tools.js.map +1 -0
  181. package/dist/src/mcp-tools/monograph-tools.d.ts +4 -23
  182. package/dist/src/mcp-tools/monograph-tools.d.ts.map +1 -1
  183. package/dist/src/mcp-tools/monograph-tools.js +4 -2439
  184. package/dist/src/mcp-tools/monograph-tools.js.map +1 -1
  185. package/dist/src/mcp-tools/monomind-tools.d.ts +8 -0
  186. package/dist/src/mcp-tools/monomind-tools.d.ts.map +1 -1
  187. package/dist/src/mcp-tools/monomind-tools.js +13 -1
  188. package/dist/src/mcp-tools/monomind-tools.js.map +1 -1
  189. package/dist/src/mcp-tools/quality/security-compliance/detect-secrets.d.ts.map +1 -1
  190. package/dist/src/mcp-tools/quality/security-compliance/detect-secrets.js +31 -2
  191. package/dist/src/mcp-tools/quality/security-compliance/detect-secrets.js.map +1 -1
  192. package/dist/src/mcp-tools/terminal-tools.d.ts.map +1 -1
  193. package/dist/src/mcp-tools/terminal-tools.js +31 -1
  194. package/dist/src/mcp-tools/terminal-tools.js.map +1 -1
  195. package/dist/src/mcp-tools/types.d.ts +8 -27
  196. package/dist/src/mcp-tools/types.d.ts.map +1 -1
  197. package/dist/src/mcp-tools/types.js +9 -91
  198. package/dist/src/mcp-tools/types.js.map +1 -1
  199. package/dist/src/memory/file-permissions.d.ts +15 -0
  200. package/dist/src/memory/file-permissions.d.ts.map +1 -0
  201. package/dist/src/memory/file-permissions.js +25 -0
  202. package/dist/src/memory/file-permissions.js.map +1 -0
  203. package/dist/src/memory/memory-bridge.d.ts.map +1 -1
  204. package/dist/src/memory/memory-bridge.js +94 -34
  205. package/dist/src/memory/memory-bridge.js.map +1 -1
  206. package/dist/src/memory/memory-crud.d.ts.map +1 -1
  207. package/dist/src/memory/memory-crud.js +298 -275
  208. package/dist/src/memory/memory-crud.js.map +1 -1
  209. package/dist/src/memory/memory-initializer.d.ts +2 -4
  210. package/dist/src/memory/memory-initializer.d.ts.map +1 -1
  211. package/dist/src/memory/memory-initializer.js +53 -76
  212. package/dist/src/memory/memory-initializer.js.map +1 -1
  213. package/dist/src/memory/memory-migrations.d.ts +1 -14
  214. package/dist/src/memory/memory-migrations.d.ts.map +1 -1
  215. package/dist/src/memory/memory-migrations.js +52 -105
  216. package/dist/src/memory/memory-migrations.js.map +1 -1
  217. package/dist/src/memory/sona-optimizer.d.ts +1 -1
  218. package/dist/src/memory/sona-optimizer.js +1 -1
  219. package/dist/src/monovector/index.d.ts +16 -19
  220. package/dist/src/monovector/index.d.ts.map +1 -1
  221. package/dist/src/monovector/index.js +50 -8
  222. package/dist/src/monovector/index.js.map +1 -1
  223. package/dist/src/orgrt/approvals.d.ts +16 -0
  224. package/dist/src/orgrt/approvals.d.ts.map +1 -0
  225. package/dist/src/orgrt/approvals.js +72 -0
  226. package/dist/src/orgrt/approvals.js.map +1 -0
  227. package/dist/src/orgrt/bus.d.ts.map +1 -1
  228. package/dist/src/orgrt/bus.js +21 -0
  229. package/dist/src/orgrt/bus.js.map +1 -1
  230. package/dist/src/orgrt/checkpoint-ops.d.ts +19 -0
  231. package/dist/src/orgrt/checkpoint-ops.d.ts.map +1 -0
  232. package/dist/src/orgrt/checkpoint-ops.js +219 -0
  233. package/dist/src/orgrt/checkpoint-ops.js.map +1 -0
  234. package/dist/src/orgrt/checkpoint.d.ts +33 -1
  235. package/dist/src/orgrt/checkpoint.d.ts.map +1 -1
  236. package/dist/src/orgrt/checkpoint.js +50 -6
  237. package/dist/src/orgrt/checkpoint.js.map +1 -1
  238. package/dist/src/orgrt/cross-org.d.ts +32 -0
  239. package/dist/src/orgrt/cross-org.d.ts.map +1 -0
  240. package/dist/src/orgrt/cross-org.js +256 -0
  241. package/dist/src/orgrt/cross-org.js.map +1 -0
  242. package/dist/src/orgrt/daemon.d.ts +131 -157
  243. package/dist/src/orgrt/daemon.d.ts.map +1 -1
  244. package/dist/src/orgrt/daemon.js +356 -966
  245. package/dist/src/orgrt/daemon.js.map +1 -1
  246. package/dist/src/orgrt/decisions.d.ts +33 -0
  247. package/dist/src/orgrt/decisions.d.ts.map +1 -0
  248. package/dist/src/orgrt/decisions.js +169 -0
  249. package/dist/src/orgrt/decisions.js.map +1 -0
  250. package/dist/src/orgrt/kimicode-runner.d.ts.map +1 -1
  251. package/dist/src/orgrt/kimicode-runner.js +5 -1
  252. package/dist/src/orgrt/kimicode-runner.js.map +1 -1
  253. package/dist/src/orgrt/opencode-runner.d.ts.map +1 -1
  254. package/dist/src/orgrt/opencode-runner.js +10 -2
  255. package/dist/src/orgrt/opencode-runner.js.map +1 -1
  256. package/dist/src/orgrt/org-memory.d.ts +45 -0
  257. package/dist/src/orgrt/org-memory.d.ts.map +1 -0
  258. package/dist/src/orgrt/org-memory.js +220 -0
  259. package/dist/src/orgrt/org-memory.js.map +1 -0
  260. package/dist/src/orgrt/policy.d.ts +4 -0
  261. package/dist/src/orgrt/policy.d.ts.map +1 -1
  262. package/dist/src/orgrt/policy.js +13 -1
  263. package/dist/src/orgrt/policy.js.map +1 -1
  264. package/dist/src/orgrt/prechecks.d.ts +15 -0
  265. package/dist/src/orgrt/prechecks.d.ts.map +1 -0
  266. package/dist/src/orgrt/prechecks.js +21 -0
  267. package/dist/src/orgrt/prechecks.js.map +1 -0
  268. package/dist/src/orgrt/questions.d.ts +39 -0
  269. package/dist/src/orgrt/questions.d.ts.map +1 -0
  270. package/dist/src/orgrt/questions.js +135 -0
  271. package/dist/src/orgrt/questions.js.map +1 -0
  272. package/dist/src/orgrt/remote.d.ts +25 -0
  273. package/dist/src/orgrt/remote.d.ts.map +1 -0
  274. package/dist/src/orgrt/remote.js +73 -0
  275. package/dist/src/orgrt/remote.js.map +1 -0
  276. package/dist/src/orgrt/scheduler-integration.d.ts +19 -0
  277. package/dist/src/orgrt/scheduler-integration.d.ts.map +1 -0
  278. package/dist/src/orgrt/scheduler-integration.js +90 -0
  279. package/dist/src/orgrt/scheduler-integration.js.map +1 -0
  280. package/dist/src/orgrt/server.d.ts.map +1 -1
  281. package/dist/src/orgrt/server.js +70 -2
  282. package/dist/src/orgrt/server.js.map +1 -1
  283. package/dist/src/orgrt/session.d.ts +30 -1
  284. package/dist/src/orgrt/session.d.ts.map +1 -1
  285. package/dist/src/orgrt/session.js +184 -53
  286. package/dist/src/orgrt/session.js.map +1 -1
  287. package/dist/src/orgrt/state-detector.d.ts +19 -0
  288. package/dist/src/orgrt/state-detector.d.ts.map +1 -0
  289. package/dist/src/orgrt/state-detector.js +59 -0
  290. package/dist/src/orgrt/state-detector.js.map +1 -0
  291. package/dist/src/orgrt/task-dag.d.ts +27 -0
  292. package/dist/src/orgrt/task-dag.d.ts.map +1 -0
  293. package/dist/src/orgrt/task-dag.js +100 -0
  294. package/dist/src/orgrt/task-dag.js.map +1 -0
  295. package/dist/src/orgrt/tool-fence.d.ts +7 -4
  296. package/dist/src/orgrt/tool-fence.d.ts.map +1 -1
  297. package/dist/src/orgrt/tool-fence.js +47 -6
  298. package/dist/src/orgrt/tool-fence.js.map +1 -1
  299. package/dist/src/orgrt/types.d.ts +57 -2
  300. package/dist/src/orgrt/types.d.ts.map +1 -1
  301. package/dist/src/orgrt/types.js +34 -3
  302. package/dist/src/orgrt/types.js.map +1 -1
  303. package/dist/src/routing/model-download.d.ts +49 -0
  304. package/dist/src/routing/model-download.d.ts.map +1 -0
  305. package/dist/src/routing/model-download.js +106 -0
  306. package/dist/src/routing/model-download.js.map +1 -0
  307. package/dist/src/services/crash-reporter.d.ts +5 -0
  308. package/dist/src/services/crash-reporter.d.ts.map +1 -1
  309. package/dist/src/services/crash-reporter.js +49 -0
  310. package/dist/src/services/crash-reporter.js.map +1 -1
  311. package/dist/src/transfer/anonymization/index.d.ts +18 -15
  312. package/dist/src/transfer/anonymization/index.d.ts.map +1 -1
  313. package/dist/src/transfer/anonymization/index.js +7 -119
  314. package/dist/src/transfer/anonymization/index.js.map +1 -1
  315. package/dist/src/ui/dashboard.html +606 -7
  316. package/dist/src/ui/orgs.html +7 -1
  317. package/dist/src/ui/routes-monograph.mjs +6 -0
  318. package/dist/src/ui/server.mjs +327 -7
  319. package/dist/src/update/checker.d.ts.map +1 -1
  320. package/dist/src/update/checker.js +2 -1
  321. package/dist/src/update/checker.js.map +1 -1
  322. package/dist/src/update/executor.d.ts.map +1 -1
  323. package/dist/src/update/executor.js +7 -3
  324. package/dist/src/update/executor.js.map +1 -1
  325. package/dist/src/update/index.d.ts +0 -1
  326. package/dist/src/update/index.d.ts.map +1 -1
  327. package/dist/src/update/index.js +5 -24
  328. package/dist/src/update/index.js.map +1 -1
  329. package/dist/src/utils/db-mutex.d.ts +11 -0
  330. package/dist/src/utils/db-mutex.d.ts.map +1 -0
  331. package/dist/src/utils/db-mutex.js +23 -0
  332. package/dist/src/utils/db-mutex.js.map +1 -0
  333. package/dist/src/utils/input-guards.d.ts +23 -0
  334. package/dist/src/utils/input-guards.d.ts.map +1 -1
  335. package/dist/src/utils/input-guards.js +72 -0
  336. package/dist/src/utils/input-guards.js.map +1 -1
  337. package/dist/src/utils/npm-command.d.ts +10 -0
  338. package/dist/src/utils/npm-command.d.ts.map +1 -0
  339. package/dist/src/utils/npm-command.js +12 -0
  340. package/dist/src/utils/npm-command.js.map +1 -0
  341. package/dist/src/utils/paths.d.ts +28 -0
  342. package/dist/src/utils/paths.d.ts.map +1 -0
  343. package/dist/src/utils/paths.js +108 -0
  344. package/dist/src/utils/paths.js.map +1 -0
  345. package/dist/tsconfig.tsbuildinfo +1 -1
  346. package/package.json +17 -17
  347. package/scripts/download-embedding-model.mjs +97 -0
  348. package/scripts/publish.sh +0 -0
  349. package/scripts/sync-claude-assets.sh +0 -0
  350. package/dist/src/production/circuit-breaker.d.ts +0 -121
  351. package/dist/src/production/circuit-breaker.d.ts.map +0 -1
  352. package/dist/src/production/circuit-breaker.js +0 -262
  353. package/dist/src/production/circuit-breaker.js.map +0 -1
  354. package/dist/src/production/error-handler.d.ts +0 -119
  355. package/dist/src/production/error-handler.d.ts.map +0 -1
  356. package/dist/src/production/error-handler.js +0 -324
  357. package/dist/src/production/error-handler.js.map +0 -1
  358. package/dist/src/production/index.d.ts +0 -6
  359. package/dist/src/production/index.d.ts.map +0 -1
  360. package/dist/src/production/index.js +0 -6
  361. package/dist/src/production/index.js.map +0 -1
  362. package/dist/src/production/monitoring.d.ts +0 -181
  363. package/dist/src/production/monitoring.d.ts.map +0 -1
  364. package/dist/src/production/monitoring.js +0 -375
  365. package/dist/src/production/monitoring.js.map +0 -1
  366. package/dist/src/production/rate-limiter.d.ts +0 -125
  367. package/dist/src/production/rate-limiter.d.ts.map +0 -1
  368. package/dist/src/production/rate-limiter.js +0 -218
  369. package/dist/src/production/rate-limiter.js.map +0 -1
  370. package/dist/src/production/retry.d.ts +0 -48
  371. package/dist/src/production/retry.d.ts.map +0 -1
  372. package/dist/src/production/retry.js +0 -189
  373. package/dist/src/production/retry.js.map +0 -1
  374. package/dist/src/transfer/types.d.ts +0 -245
  375. package/dist/src/transfer/types.d.ts.map +0 -1
  376. package/dist/src/transfer/types.js +0 -6
  377. package/dist/src/transfer/types.js.map +0 -1
@@ -0,0 +1,500 @@
1
+ import { getProjectCwd } from '../types.js';
2
+ import { getDbPath, _isValidDb, text, applyPprRerank, computeCommitsBehind, triggerBackgroundBuildIfNeeded, STALENESS_THRESHOLD, preferSymbolHits } from './shared.js';
3
+ // ── monograph_query ───────────────────────────────────────────────────────────
4
+ export const monographQueryTool = {
5
+ name: 'monograph_query',
6
+ description: 'BM25 keyword search across the code knowledge graph. When MONOGRAPH_EMBEDDINGS=true uses hybrid BM25+vector ranking (RRF). Returns nodes with file path and line number.',
7
+ inputSchema: {
8
+ type: 'object',
9
+ properties: {
10
+ query: { type: 'string', description: 'Search terms' },
11
+ limit: { type: 'number', description: 'Max results (default 20)' },
12
+ label: { type: 'string', description: 'Filter by node type: Class, Function, Method, etc.' },
13
+ rerank: { type: 'boolean', description: 'Apply HippoRAG-style PPR graph reranking to boost neighbors of top hits (default: true)' },
14
+ damping: { type: 'number', description: 'PPR damping factor when rerank=true (0-1, default 0.5)' },
15
+ },
16
+ required: ['query'],
17
+ },
18
+ handler: async (input) => {
19
+ const dbPath = getDbPath();
20
+ if (!_isValidDb(dbPath))
21
+ return text('Monograph index not built yet. Run monograph_build first.');
22
+ const { openDb, closeDb, ftsSearch } = await import('@monoes/monograph');
23
+ const { hybridQuery } = await import('@monoes/monograph');
24
+ const db = openDb(dbPath);
25
+ try {
26
+ // Cap limit: passed directly to SQLite queries and hybridQuery; an
27
+ // unlimited value saturates memory with rows.
28
+ const MAX_QUERY_LIMIT = 1_000;
29
+ const rawLimit = input.limit ?? 20;
30
+ const limit = Number.isFinite(rawLimit) && rawLimit > 0
31
+ ? Math.min(Math.floor(rawLimit), MAX_QUERY_LIMIT)
32
+ : 20;
33
+ // Cap query: passed to FTS5 and hybridQuery; very long queries waste
34
+ // parse time and can stress the FTS tokenizer.
35
+ const MAX_MONOGRAPH_QUERY_LEN = 16 * 1024;
36
+ const rawQuery = input.query;
37
+ const query = typeof rawQuery === 'string' && rawQuery.length > MAX_MONOGRAPH_QUERY_LEN
38
+ ? rawQuery.slice(0, MAX_MONOGRAPH_QUERY_LEN)
39
+ : rawQuery;
40
+ const label = input.label;
41
+ const rerank = input.rerank ?? true;
42
+ const damping = input.damping ?? 0.5;
43
+ const zeroResultHint = /\s/.test(query) && !/[A-Z]/.test(query.replace(/\s+/g, '').slice(1))
44
+ ? ' Hint: monograph indexes identifiers and filenames — try camelCase/PascalCase (e.g. "AgentSpawn") or a filename instead of a phrase.'
45
+ : '';
46
+ // Lightweight staleness check — fire-and-forget background rebuild;
47
+ // append warning to results so the agent knows data may be outdated.
48
+ let stalenessNote = '';
49
+ const repoPath = getProjectCwd();
50
+ const staleness = await computeCommitsBehind(repoPath);
51
+ if (staleness && staleness.commitsBehind > 0) {
52
+ const triggered = triggerBackgroundBuildIfNeeded(repoPath, staleness.commitsBehind);
53
+ stalenessNote = `\n⚠ Index is ${staleness.commitsBehind} commit(s) behind HEAD${triggered ? ' — rebuild triggered' : ''}.`;
54
+ }
55
+ if (process.env['MONOGRAPH_EMBEDDINGS'] === 'true') {
56
+ const results = await hybridQuery(db, query, { limit: rerank ? limit * 2 : limit, label });
57
+ if (results.length === 0)
58
+ return text('No results found.' + zeroResultHint + stalenessNote);
59
+ if (rerank) {
60
+ const seeds = results.map(r => ({
61
+ id: r.id, name: r.name ?? r.id, label: r.label ?? '?',
62
+ filePath: r.filePath ?? '', startLine: r.startLine ?? null,
63
+ score: r.score,
64
+ }));
65
+ const reranked = applyPprRerank(db, seeds, damping, limit);
66
+ const lines = reranked.map(r => {
67
+ const loc = r.filePath ? (r.startLine != null ? `${r.filePath}:${r.startLine}` : r.filePath) : '';
68
+ const tag = r.boostedByNeighbors ? ' [PPR-boosted]' : '';
69
+ return `[${r.label}] ${r.name} ${loc} (score: ${r.score.toFixed(4)})${tag}`;
70
+ });
71
+ return text(lines.join('\n') + stalenessNote);
72
+ }
73
+ const lines = results.map(r => {
74
+ const loc = r.filePath ? (r.startLine != null ? `${r.filePath}:${r.startLine}` : r.filePath) : '';
75
+ return `[${r.label ?? '?'}] ${r.name ?? r.id} ${loc} (score: ${r.score.toFixed(4)})`;
76
+ });
77
+ return text(lines.join('\n') + stalenessNote);
78
+ }
79
+ const results = ftsSearch(db, query, rerank ? limit * 2 : limit, label);
80
+ if (results.length === 0)
81
+ return text('No results found.' + zeroResultHint + stalenessNote);
82
+ if (rerank) {
83
+ const seeds = results.map(r => ({
84
+ id: r.id, name: r.name, label: r.label,
85
+ filePath: r.filePath ?? '', startLine: r.startLine ?? null,
86
+ score: Math.abs(r.rank),
87
+ }));
88
+ const reranked = applyPprRerank(db, seeds, damping, limit);
89
+ const lines = reranked.map(r => {
90
+ const loc = r.filePath ? (r.startLine != null ? `${r.filePath}:${r.startLine}` : r.filePath) : '';
91
+ const tag = r.boostedByNeighbors ? ' [PPR-boosted]' : '';
92
+ return `[${r.label}] ${r.name} ${loc} (score: ${r.score.toFixed(3)})${tag}`;
93
+ });
94
+ return text(lines.join('\n') + stalenessNote);
95
+ }
96
+ const lines = results.map(r => {
97
+ const loc = r.filePath ? (r.startLine != null ? `${r.filePath}:${r.startLine}` : r.filePath) : '';
98
+ return `[${r.label}] ${r.name} ${loc} (score: ${r.rank.toFixed(3)})`;
99
+ });
100
+ return text(lines.join('\n') + stalenessNote);
101
+ }
102
+ finally {
103
+ closeDb(db);
104
+ }
105
+ },
106
+ };
107
+ // ── monograph_suggest ─────────────────────────────────────────────────────────
108
+ export const monographSuggestTool = {
109
+ name: 'monograph_suggest',
110
+ description: 'Get graph-topology-derived questions to explore the codebase. Pass task= to score by task relevance via BM25/FTS5.',
111
+ inputSchema: {
112
+ type: 'object',
113
+ properties: {
114
+ task: { type: 'string', description: 'Optional task description for task-relevance scoring' },
115
+ limit: { type: 'number', description: 'Max questions (default 10)' },
116
+ checkStaleness: { type: 'boolean', description: 'Check index staleness first and trigger a background rebuild when the index is behind HEAD. Appends a _staleness annotation to the result. (default true — pass false to skip the git check)' },
117
+ },
118
+ },
119
+ handler: async (input) => {
120
+ // Health-aware mode (formerly monograph_suggest_auto): check staleness and
121
+ // trigger a background rebuild if the index is behind HEAD. Defaults on
122
+ // (opt-out, not opt-in) — a caller that never checked was exactly how a
123
+ // stale graph kept serving results silently.
124
+ let stalenessAnnotation = '';
125
+ if (input.checkStaleness !== false) {
126
+ const repoPath = getProjectCwd();
127
+ const stalenessResult = await computeCommitsBehind(repoPath);
128
+ const commitsBehind = stalenessResult?.commitsBehind ?? 0;
129
+ const triggered = triggerBackgroundBuildIfNeeded(repoPath, commitsBehind, STALENESS_THRESHOLD + 1);
130
+ const status = triggered ? 'building' : commitsBehind === 0 ? 'fresh' : 'stale';
131
+ stalenessAnnotation = `\n_staleness: ${JSON.stringify({ commitsBehind, status, triggered })}`;
132
+ }
133
+ const dbPath = getDbPath();
134
+ if (!_isValidDb(dbPath))
135
+ return text('Monograph index not built yet. Run monograph_build first.' + stalenessAnnotation);
136
+ const { openDb, closeDb } = await import('@monoes/monograph');
137
+ const { hybridQuery } = await import('@monoes/monograph');
138
+ const db = openDb(dbPath);
139
+ try {
140
+ // Cap limit and task: limit is passed directly to SQL LIMIT clause;
141
+ // task is forwarded to hybridQuery (embedding path) or FTS.
142
+ const MAX_SUGGEST_LIMIT = 1_000;
143
+ const MAX_SUGGEST_TASK_LEN = 16 * 1024;
144
+ const rawSuggestLimit = input.limit ?? 10;
145
+ const limit = Number.isFinite(rawSuggestLimit) && rawSuggestLimit > 0
146
+ ? Math.min(Math.floor(rawSuggestLimit), MAX_SUGGEST_LIMIT)
147
+ : 10;
148
+ const rawTask = input.task ?? '';
149
+ const task = typeof rawTask === 'string' && rawTask.length > MAX_SUGGEST_TASK_LEN
150
+ ? rawTask.slice(0, MAX_SUGGEST_TASK_LEN)
151
+ : rawTask;
152
+ // Format a suggestion row as a navigable string for LLM consumption.
153
+ // Includes file:line references so the LLM can jump directly to the code.
154
+ const formatSuggestion = (r) => {
155
+ const srcLoc = r.src_file ? (r.src_line != null ? `${r.src_file}:${r.src_line}` : r.src_file) : '';
156
+ const tgtLoc = r.tgt_file ? (r.tgt_line != null ? `${r.tgt_file}:${r.tgt_line}` : r.tgt_file) : '';
157
+ const locHint = srcLoc ? ` [${srcLoc}${tgtLoc ? ` → ${tgtLoc}` : ''}]` : '';
158
+ return `Why does ${r.src} ${r.relation.toLowerCase()} ${r.tgt}? (${r.confidence})${locHint}`;
159
+ };
160
+ // When a task is provided, use BM25/FTS5 (via hybridQuery) to find
161
+ // relevant nodes and restrict the edge-level questions to them. This
162
+ // used to be gated behind MONOGRAPH_EMBEDDINGS=true, but hybridQuery
163
+ // is BM25-only now (the embeddings table stayed empty in practice —
164
+ // see hybrid-query.ts) so the env var gated nothing and just left this
165
+ // better-ranked path off unless a caller happened to know about it.
166
+ let hitIds = [];
167
+ if (task) {
168
+ const hits = await hybridQuery(db, task, { limit: 20 });
169
+ const { SYMBOL_NODE_LABELS } = await import('@monoes/monograph');
170
+ const relevantHits = preferSymbolHits(hits, SYMBOL_NODE_LABELS);
171
+ hitIds = [...new Set(relevantHits.map(h => h.id))];
172
+ if (hitIds.length === 0) {
173
+ return text('No suggestions for this task. Run monograph_build first or try a different query.' + stalenessAnnotation);
174
+ }
175
+ }
176
+ const taskFilter = hitIds.length
177
+ ? `AND (e.source_id IN (${hitIds.map(() => '?').join(',')}) OR e.target_id IN (${hitIds.map(() => '?').join(',')}))`
178
+ : '';
179
+ const rows = db.prepare(`
180
+ SELECT e.relation, e.confidence, n1.name as src, n2.name as tgt,
181
+ n1.file_path as src_file, n1.start_line as src_line,
182
+ n2.file_path as tgt_file, n2.start_line as tgt_line
183
+ FROM edges e
184
+ JOIN nodes n1 ON n1.id = e.source_id
185
+ JOIN nodes n2 ON n2.id = e.target_id
186
+ WHERE e.confidence IN ('AMBIGUOUS', 'INFERRED')
187
+ ${taskFilter}
188
+ LIMIT 100
189
+ `).all(...hitIds, ...hitIds);
190
+ const questions = rows.map(formatSuggestion);
191
+ const fallback = task ? 'No suggestions for this task. Run monograph_build first.' : 'No suggestions. Run monograph_build first.';
192
+ return text((questions.slice(0, limit).join('\n') || fallback) + stalenessAnnotation);
193
+ }
194
+ finally {
195
+ closeDb(db);
196
+ }
197
+ },
198
+ };
199
+ // ── monograph_context ─────────────────────────────────────────────────────────
200
+ export const monographContextTool = {
201
+ name: 'monograph_context',
202
+ description: '360° symbol view: callers, callees, imports, importedBy, community, and containing processes for a symbol.',
203
+ inputSchema: {
204
+ type: 'object',
205
+ properties: {
206
+ name: { type: 'string', description: 'Symbol name to look up' },
207
+ filePath: { type: 'string', description: 'Optional file path to disambiguate' },
208
+ },
209
+ required: ['name'],
210
+ },
211
+ handler: async (input) => {
212
+ const { openDb, closeDb } = await import('@monoes/monograph');
213
+ const { getMonographContext } = await import('@monoes/monograph');
214
+ const db = openDb(getDbPath());
215
+ try {
216
+ // Cap name and filePath: forwarded to parameterized SQL via getMonographContext.
217
+ // Very long strings waste memory before the query even executes.
218
+ const MAX_CTX_NAME_LEN = 512;
219
+ const MAX_CTX_PATH_LEN = 4 * 1024;
220
+ const rawCtxName = input.name;
221
+ const ctxName = typeof rawCtxName === 'string' && rawCtxName.length > MAX_CTX_NAME_LEN
222
+ ? rawCtxName.slice(0, MAX_CTX_NAME_LEN) : rawCtxName;
223
+ const rawCtxPath = input.filePath;
224
+ const ctxPath = typeof rawCtxPath === 'string' && rawCtxPath.length > MAX_CTX_PATH_LEN
225
+ ? rawCtxPath.slice(0, MAX_CTX_PATH_LEN) : rawCtxPath;
226
+ const result = getMonographContext(db, {
227
+ name: ctxName,
228
+ filePath: ctxPath,
229
+ });
230
+ if (!result || !result.node)
231
+ return text(`No symbol found: ${ctxName}`);
232
+ // Format context as structured text for direct LLM consumption
233
+ const n = result.node;
234
+ const loc = n.filePath ? (n.startLine != null ? `${n.filePath}:${n.startLine}` : n.filePath) : '';
235
+ const lines = [
236
+ `[${n.label ?? '?'}] ${n.name} ${loc}`,
237
+ '',
238
+ ];
239
+ const formatNodes = (nodes, label) => {
240
+ if (!Array.isArray(nodes) || nodes.length === 0)
241
+ return;
242
+ lines.push(`${label} (${nodes.length}):`);
243
+ for (const node of nodes.slice(0, 20)) {
244
+ const fp = node.filePath ?? node.file_path ?? '';
245
+ const ln = node.startLine ?? node.start_line;
246
+ const nodeLoc = fp ? (ln != null ? `${fp}:${ln}` : fp) : '';
247
+ lines.push(` [${node.label ?? '?'}] ${node.name ?? node.id} ${nodeLoc}`);
248
+ }
249
+ if (nodes.length > 20)
250
+ lines.push(` … ${nodes.length - 20} more`);
251
+ lines.push('');
252
+ };
253
+ formatNodes(result.callers, 'Callers');
254
+ formatNodes(result.callees, 'Callees');
255
+ formatNodes(result.imports, 'Imports');
256
+ formatNodes(result.importedBy, 'ImportedBy');
257
+ if (result.community != null)
258
+ lines.push(`Community: ${result.community}`);
259
+ if (result.communityName)
260
+ lines.push(`Community name: ${result.communityName}`);
261
+ return text(lines.join('\n').trim());
262
+ }
263
+ finally {
264
+ closeDb(db);
265
+ }
266
+ },
267
+ };
268
+ // ── monograph_neighbors ───────────────────────────────────────────────────────
269
+ export const monographNeighborsTool = {
270
+ name: 'monograph_neighbors',
271
+ description: 'Show all directly connected nodes for a given symbol — outbound and optionally inbound edges, with relation types.',
272
+ inputSchema: {
273
+ type: 'object',
274
+ properties: {
275
+ name: { type: 'string', description: 'Symbol name to look up' },
276
+ relationFilter: { type: 'string', description: 'Filter by relation type, e.g. IMPORTS, CALLS' },
277
+ includeInbound: { type: 'boolean', description: 'Include inbound edges (default: false)' },
278
+ },
279
+ required: ['name'],
280
+ },
281
+ handler: async (input) => {
282
+ const { openDb, closeDb, getMonographNeighbors } = await import('@monoes/monograph');
283
+ const db = openDb(getDbPath());
284
+ try {
285
+ const result = getMonographNeighbors(db, {
286
+ name: input.name,
287
+ relationFilter: input.relationFilter,
288
+ includeInbound: input.includeInbound ?? false,
289
+ });
290
+ if (!result.node)
291
+ return text(`No node found with name: ${input.name}`);
292
+ const nodeFilePath = result.node.filePath ?? '';
293
+ const nodeStartLine = result.node.startLine ?? result.node.start_line;
294
+ const nodeLoc = nodeFilePath ? (nodeStartLine != null ? `${nodeFilePath}:${nodeStartLine}` : nodeFilePath) : '';
295
+ const lines = [
296
+ `[${result.node.label}] ${result.node.name} ${nodeLoc}`,
297
+ `Neighbors: ${result.neighbors.length}`,
298
+ '',
299
+ ...result.neighbors.map(n => {
300
+ const fp = n.node.filePath ?? n.node.file_path ?? '';
301
+ const ln = n.node.startLine ?? n.node.start_line;
302
+ const loc = fp ? (ln != null ? `${fp}:${ln}` : fp) : '';
303
+ return ` ${n.direction === 'inbound' ? '←' : '→'} [${n.node.label}] ${n.node.name} (${n.relation}) ${loc}`;
304
+ }),
305
+ ];
306
+ return text(lines.join('\n'));
307
+ }
308
+ finally {
309
+ closeDb(db);
310
+ }
311
+ },
312
+ };
313
+ // ── monograph_get_node ────────────────────────────────────────────────────────
314
+ export const monographGetNodeTool = {
315
+ name: 'monograph_get_node',
316
+ description: 'Get a specific node by exact ID or name.',
317
+ inputSchema: {
318
+ type: 'object',
319
+ properties: {
320
+ id: { type: 'string', description: 'Node ID or name to look up' },
321
+ },
322
+ required: ['id'],
323
+ },
324
+ handler: async (input) => {
325
+ const { openDb, closeDb, getNode } = await import('@monoes/monograph');
326
+ const db = openDb(getDbPath());
327
+ try {
328
+ let node = getNode(db, input.id);
329
+ if (!node) {
330
+ const row = db.prepare('SELECT * FROM nodes WHERE name = ? LIMIT 1').get(input.id);
331
+ if (row)
332
+ node = row;
333
+ }
334
+ if (!node)
335
+ return text(`Node not found: ${input.id}`);
336
+ return text(JSON.stringify(node, null, 2));
337
+ }
338
+ finally {
339
+ closeDb(db);
340
+ }
341
+ },
342
+ };
343
+ // ── monograph_god_nodes ───────────────────────────────────────────────────────
344
+ export const monographGodNodesTool = {
345
+ name: 'monograph_god_nodes',
346
+ description: 'Return the top-N most connected real code entities (excludes File/Folder/Community nodes).',
347
+ inputSchema: {
348
+ type: 'object',
349
+ properties: { limit: { type: 'number', description: 'Max nodes to return (default 20)' } },
350
+ },
351
+ handler: async (input) => {
352
+ const dbPath = getDbPath();
353
+ if (!_isValidDb(dbPath))
354
+ return text('Monograph index not built yet. Run monograph_build first.');
355
+ const { openDb, closeDb } = await import('@monoes/monograph');
356
+ const db = openDb(dbPath);
357
+ try {
358
+ // Cap limit: passed directly to the SQL LIMIT clause.
359
+ const MAX_GOD_NODES_LIMIT = 1_000;
360
+ const rawGodLimit = input.limit ?? 20;
361
+ const limit = Number.isFinite(rawGodLimit) && rawGodLimit > 0
362
+ ? Math.min(Math.floor(rawGodLimit), MAX_GOD_NODES_LIMIT)
363
+ : 20;
364
+ const excluded = ['File', 'Folder', 'Community', 'Concept'];
365
+ const rows = db.prepare(`
366
+ SELECT n.id, n.label, n.name, n.file_path, n.start_line,
367
+ COUNT(DISTINCT e1.id) + COUNT(DISTINCT e2.id) AS degree,
368
+ COUNT(DISTINCT e2.id) AS in_degree,
369
+ COUNT(DISTINCT e1.id) AS out_degree
370
+ FROM nodes n
371
+ LEFT JOIN edges e1 ON e1.source_id = n.id
372
+ LEFT JOIN edges e2 ON e2.target_id = n.id
373
+ WHERE n.label NOT IN (${excluded.map(() => '?').join(',')})
374
+ GROUP BY n.id HAVING degree > 0
375
+ ORDER BY degree DESC LIMIT ?
376
+ `).all(...excluded, limit);
377
+ if (rows.length === 0)
378
+ return text('No god nodes found. Run monograph_build first.');
379
+ const lines = rows.map(r => {
380
+ const loc = r.file_path ? (r.start_line != null ? `${r.file_path}:${r.start_line}` : r.file_path) : '';
381
+ return `[${r.label}] ${r.name} degree=${r.degree} (↑${r.out_degree} ↓${r.in_degree}) ${loc}`;
382
+ });
383
+ return text(lines.join('\n'));
384
+ }
385
+ finally {
386
+ closeDb(db);
387
+ }
388
+ },
389
+ };
390
+ // ── monograph_augment ─────────────────────────────────────────────────────────
391
+ export const monographAugmentTool = {
392
+ name: 'monograph_augment',
393
+ description: 'Retrieve relevant code context for a query using graph-RAG. Returns formatted context block for injection into AI prompts.',
394
+ inputSchema: {
395
+ type: 'object',
396
+ properties: {
397
+ query: { type: 'string', description: 'The search query or task description' },
398
+ topK: { type: 'number', description: 'Number of results (default: 10)' },
399
+ format: { type: 'string', enum: ['markdown', 'json'], description: 'Output format (default: markdown)' },
400
+ },
401
+ required: ['query'],
402
+ },
403
+ handler: async (input) => {
404
+ const { augmentContext } = await import('@monoes/monograph');
405
+ const repoPath = getProjectCwd();
406
+ // Cap query (forwarded to FTS/embedding in augmentContext) and topK
407
+ // (controls how many context nodes are retrieved).
408
+ const MAX_AUGMENT_QUERY_LEN = 16 * 1024;
409
+ const MAX_AUGMENT_TOP_K = 100;
410
+ const rawAugmentQuery = input.query;
411
+ const augmentQuery = typeof rawAugmentQuery === 'string' && rawAugmentQuery.length > MAX_AUGMENT_QUERY_LEN
412
+ ? rawAugmentQuery.slice(0, MAX_AUGMENT_QUERY_LEN) : rawAugmentQuery;
413
+ const rawTopK = input.topK ?? 10;
414
+ const topK = Number.isFinite(rawTopK) && rawTopK > 0
415
+ ? Math.min(Math.floor(rawTopK), MAX_AUGMENT_TOP_K) : 10;
416
+ const result = await augmentContext({
417
+ query: augmentQuery,
418
+ repoPath,
419
+ topK,
420
+ format: input.format ?? 'markdown',
421
+ });
422
+ return text(result);
423
+ },
424
+ };
425
+ // ── monograph_cypher ──────────────────────────────────────────────────────────
426
+ export const monographCypherTool = {
427
+ name: 'monograph_cypher',
428
+ description: 'Execute a restricted read-only Cypher-style MATCH query against the Monograph knowledge graph. Supports node and relationship patterns. Write operations (CREATE, MERGE, SET, DELETE, REMOVE, DROP) are blocked.',
429
+ inputSchema: {
430
+ type: 'object',
431
+ properties: {
432
+ query: {
433
+ type: 'string',
434
+ description: 'Cypher MATCH query. Example: MATCH (a:Function)-[:CALLS]->(b:Function {name: "authenticate"}) RETURN a.name, a.filePath',
435
+ },
436
+ },
437
+ required: ['query'],
438
+ },
439
+ handler: async (input) => {
440
+ const { openDb, closeDb } = await import('@monoes/monograph');
441
+ const { getMonographCypher } = await import('@monoes/monograph');
442
+ const db = openDb(getDbPath());
443
+ try {
444
+ // Cap query: forwarded to the Cypher query engine; very long strings
445
+ // waste parse time and can stress the query compiler.
446
+ const MAX_CYPHER_QUERY_LEN = 16 * 1024;
447
+ const rawCypherQuery = input.query;
448
+ const cypherQuery = typeof rawCypherQuery === 'string' && rawCypherQuery.length > MAX_CYPHER_QUERY_LEN
449
+ ? rawCypherQuery.slice(0, MAX_CYPHER_QUERY_LEN)
450
+ : rawCypherQuery;
451
+ const result = getMonographCypher(db, cypherQuery);
452
+ if (result.error)
453
+ return text(`Error: ${result.error}`);
454
+ if (result.rows.length === 0)
455
+ return text('No results found.');
456
+ const header = Object.keys(result.rows[0]).join('\t');
457
+ const lines = result.rows.map(r => Object.values(r).join('\t'));
458
+ return text([header, ...lines, `\n(${result.rows.length} rows, ${result.queryTime}ms)`].join('\n'));
459
+ }
460
+ finally {
461
+ closeDb(db);
462
+ }
463
+ },
464
+ };
465
+ // ── monograph_shortest_path ───────────────────────────────────────────────────
466
+ export const monographShortestPathTool = {
467
+ name: 'monograph_shortest_path',
468
+ description: 'Find the shortest path between two nodes in the dependency graph.',
469
+ inputSchema: {
470
+ type: 'object',
471
+ properties: {
472
+ source: { type: 'string', description: 'Source node ID or name' },
473
+ target: { type: 'string', description: 'Target node ID or name' },
474
+ maxDepth: { type: 'number', description: 'Max path depth (default 6)' },
475
+ },
476
+ required: ['source', 'target'],
477
+ },
478
+ handler: async (input) => {
479
+ const { openDb, closeDb, getShortestPath } = await import('@monoes/monograph');
480
+ const db = openDb(getDbPath());
481
+ try {
482
+ const path = getShortestPath(db, input.source, input.target, input.maxDepth ?? 6);
483
+ if (!path)
484
+ return text(`No path found between ${input.source} and ${input.target}`);
485
+ // Enrich each node ID with file:line for direct LLM navigation
486
+ const enriched = path.map(nodeId => {
487
+ const row = db.prepare('SELECT label, name, file_path, start_line FROM nodes WHERE id = ? OR name = ? LIMIT 1').get(nodeId, nodeId);
488
+ if (!row)
489
+ return nodeId;
490
+ const loc = row.file_path ? (row.start_line != null ? `${row.file_path}:${row.start_line}` : row.file_path) : '';
491
+ return loc ? `${row.name ?? nodeId} [${loc}]` : (row.name ?? nodeId);
492
+ });
493
+ return text(`Path (${path.length - 1} hops):\n${enriched.join(' → ')}`);
494
+ }
495
+ finally {
496
+ closeDb(db);
497
+ }
498
+ },
499
+ };
500
+ //# sourceMappingURL=query-tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query-tools.js","sourceRoot":"","sources":["../../../../src/mcp-tools/monograph/query-tools.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,64 @@
1
+ export declare function _isValidDb(p: string): boolean;
2
+ /**
3
+ * Resolve the monograph DB path for a given repo root (defaults to project cwd).
4
+ * Falls back to searching up to the git root when the DB isn't directly under
5
+ * `<cwd>/.monomind` — e.g. when called from a subdirectory of the repo. Only
6
+ * the no-arg (project cwd) form is cached; explicit `repoPath` overrides are
7
+ * cheap one-off lookups (staleness checks with a user-supplied path) so caching
8
+ * them isn't worth the invalidation complexity.
9
+ */
10
+ export declare function getDbPath(repoPathOverride?: string): string;
11
+ export declare function text(t: string): {
12
+ content: {
13
+ type: 'text';
14
+ text: string;
15
+ }[];
16
+ };
17
+ export type PprScoredNode = {
18
+ id: string;
19
+ name: string;
20
+ label: string;
21
+ filePath: string;
22
+ startLine: number | null;
23
+ score: number;
24
+ };
25
+ export declare function applyPprRerank(db: any, seedNodes: PprScoredNode[], damping: number, maxResults: number): Array<PprScoredNode & {
26
+ boostedByNeighbors: boolean;
27
+ }>;
28
+ /**
29
+ * Compute how many commits the index is behind HEAD.
30
+ * Returns { commitsBehind, lastCommit } — or null if the index has never been
31
+ * built or git is unavailable.
32
+ */
33
+ export declare function computeCommitsBehind(repoPath: string): Promise<{
34
+ commitsBehind: number;
35
+ lastCommit: string;
36
+ } | null>;
37
+ /**
38
+ * Shared staleness threshold: both monograph_staleness and monograph_suggest (checkStaleness)
39
+ * trigger a background rebuild only when the index is more than this many commits behind HEAD.
40
+ * Using a shared constant prevents conflicting rebuild pressure during active dev sessions.
41
+ * Was 10 → 3 → 1. Even 3 let routine small commits accumulate stale results
42
+ * silently. At 1 (rebuild triggers at 2+ behind), staleness rarely persists
43
+ * across sessions.
44
+ */
45
+ export declare const STALENESS_THRESHOLD = 1;
46
+ /**
47
+ * Fire-and-forget background rebuild. Uses a module-level guard so concurrent
48
+ * MCP tool calls (e.g. repeated monograph_suggest checkStaleness) don't pile up builds.
49
+ * threshold: minimum commitsBehind to trigger (default STALENESS_THRESHOLD + 1).
50
+ */
51
+ export declare function triggerBackgroundBuildIfNeeded(repoPath: string, commitsBehind: number, threshold?: number): boolean;
52
+ /**
53
+ * BM25 ranks purely on literal keyword overlap, so a doc/concept node whose
54
+ * prose happens to mention task-related words (e.g. a report mentioning
55
+ * "retry" constants) can outrank the actual code symbol the task is really
56
+ * about, which is conceptually related but lexically different (issue #38).
57
+ * Prefer code-symbol hits (Function/Class/Method/...) over doc-type hits
58
+ * (Document/Concept/Section/...) when there are any, falling back to the
59
+ * full hit list so a genuinely doc-only task still gets results.
60
+ */
61
+ export declare function preferSymbolHits<T extends {
62
+ label: string;
63
+ }>(hits: T[], symbolLabels: ReadonlySet<string>): T[];
64
+ //# sourceMappingURL=shared.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../../../src/mcp-tools/monograph/shared.ts"],"names":[],"mappings":"AAWA,wBAAgB,UAAU,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAE7C;AACD;;;;;;;GAOG;AACH,wBAAgB,SAAS,CAAC,gBAAgB,CAAC,EAAE,MAAM,GAAG,MAAM,CAmB3D;AAED,wBAAgB,IAAI,CAAC,CAAC,EAAE,MAAM;;cACD,MAAM;;;EAClC;AAID,MAAM,MAAM,aAAa,GAAG;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AACnI,wBAAgB,cAAc,CAC5B,EAAE,EAAE,GAAG,EACP,SAAS,EAAE,aAAa,EAAE,EAC1B,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,GACjB,KAAK,CAAC,aAAa,GAAG;IAAE,kBAAkB,EAAE,OAAO,CAAA;CAAE,CAAC,CAuExD;AAKD;;;;GAIG;AACH,wBAAsB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC;IAAE,aAAa,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAAC,CAmC1H;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,mBAAmB,IAAI,CAAC;AAErC;;;;GAIG;AACH,wBAAgB,8BAA8B,CAAC,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,SAAS,SAA0B,GAAG,OAAO,CAWpI;AAED;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,SAAS;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,YAAY,EAAE,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAG/G"}