@cleocode/cleo 2026.10.3 → 2026.10.5-rc.ci.672

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 (352) hide show
  1. package/README.md +7 -0
  2. package/bin/cleo.js +11 -1
  3. package/dist/cli/adapter-OUQRSFZL.js +159 -0
  4. package/dist/cli/add-4SRRJL4U.js +443 -0
  5. package/dist/cli/add-batch-TSWICA5J.js +164 -0
  6. package/dist/cli/admin-L3F6CDYH.js +1428 -0
  7. package/dist/cli/admin-YMU55YCU.js +341 -0
  8. package/dist/cli/adr-XESRMFMP.js +172 -0
  9. package/dist/cli/agent-TAFPIYUU.js +2404 -0
  10. package/dist/cli/agent-outputs-HVJJIPS4.js +84 -0
  11. package/dist/cli/analyze-YQ22QVGW.js +49 -0
  12. package/dist/cli/archive-W5XX6AH7.js +65 -0
  13. package/dist/cli/archive-stats-HP2KPAJU.js +101 -0
  14. package/dist/cli/attention-7JBDCRZX.js +124 -0
  15. package/dist/cli/attention-ZXZANHKC.js +168 -0
  16. package/dist/cli/audit-ICA2SEFN.js +122 -0
  17. package/dist/cli/auth-DXIG5OG7.js +491 -0
  18. package/dist/cli/backfill-LBSYBWLR.js +156 -0
  19. package/dist/cli/backup-NUGBZ7NA.js +588 -0
  20. package/dist/cli/backup-inspect-PDRXI45A.js +26 -0
  21. package/dist/cli/backup-recover-TVKAPERB.js +29 -0
  22. package/dist/cli/blockers-ZOPCGHDW.js +55 -0
  23. package/dist/cli/brain-EJOBKL4A.js +397 -0
  24. package/dist/cli/briefing-RDQJ6WHS.js +213 -0
  25. package/dist/cli/caamp-Z3XPKEHB.js +181 -0
  26. package/dist/cli/cancel-S7EHLCJN.js +85 -0
  27. package/dist/cli/canon-NPF5RODM.js +142 -0
  28. package/dist/cli/canon-docs-2GTOLF7Y.js +26 -0
  29. package/dist/cli/cant-CHNN6O57.js +239 -0
  30. package/dist/cli/changeset-RYPHPN2B.js +246 -0
  31. package/dist/cli/check-C67YAU7W.js +759 -0
  32. package/dist/cli/check-DHMURGHC.js +924 -0
  33. package/dist/cli/checkpoint-UWDFOGYQ.js +128 -0
  34. package/dist/cli/chunk-22YPFZYB.js +91 -0
  35. package/dist/cli/chunk-2MGFDMDF.js +272 -0
  36. package/dist/cli/chunk-47JYZAMS.js +30 -0
  37. package/dist/cli/chunk-4JYHPP4C.js +76 -0
  38. package/dist/cli/chunk-4PEODTHY.js +278 -0
  39. package/dist/cli/chunk-4RGSNUUP.js +950 -0
  40. package/dist/cli/chunk-4VASFLUW.js +35 -0
  41. package/dist/cli/chunk-5PNI276X.js +124 -0
  42. package/dist/cli/chunk-6JSJNYH2.js +114 -0
  43. package/dist/cli/chunk-6N6WGLXE.js +63 -0
  44. package/dist/cli/chunk-75UH3BLS.js +210 -0
  45. package/dist/cli/chunk-7ACK4EIN.js +92 -0
  46. package/dist/cli/chunk-7NMKLVMI.js +107 -0
  47. package/dist/cli/chunk-7SINJXB6.js +110 -0
  48. package/dist/cli/chunk-7UARFJYS.js +46 -0
  49. package/dist/cli/chunk-7ZYPQV4N.js +90 -0
  50. package/dist/cli/chunk-AQCYT3L4.js +72 -0
  51. package/dist/cli/chunk-BQK6XTOH.js +57 -0
  52. package/dist/cli/chunk-C3B7C43W.js +16 -0
  53. package/dist/cli/chunk-CAPAGD5E.js +98 -0
  54. package/dist/cli/chunk-CHGEDCKG.js +77 -0
  55. package/dist/cli/chunk-COXFJ3PT.js +74 -0
  56. package/dist/cli/chunk-D7BAQNV2.js +55 -0
  57. package/dist/cli/chunk-EIUXVHNF.js +258 -0
  58. package/dist/cli/chunk-EUGB6P5V.js +173 -0
  59. package/dist/cli/chunk-EW2CKNNZ.js +304 -0
  60. package/dist/cli/chunk-FSKN4DWC.js +108 -0
  61. package/dist/cli/chunk-FVKLULL7.js +48 -0
  62. package/dist/cli/chunk-GAGUBU4Z.js +280 -0
  63. package/dist/cli/chunk-GKRFH2YG.js +171 -0
  64. package/dist/cli/chunk-GRU74UE4.js +270 -0
  65. package/dist/cli/chunk-GZFVDR44.js +320 -0
  66. package/dist/cli/chunk-HFLLZE6A.js +83 -0
  67. package/dist/cli/chunk-HXRXT3XU.js +78 -0
  68. package/dist/cli/chunk-IIOGUY3B.js +258 -0
  69. package/dist/cli/chunk-ILWWL462.js +60 -0
  70. package/dist/cli/chunk-J5USPJKZ.js +48 -0
  71. package/dist/cli/chunk-KEQS36GD.js +88 -0
  72. package/dist/cli/chunk-L7ONYSV6.js +2497 -0
  73. package/dist/cli/chunk-LVGIFMCV.js +163 -0
  74. package/dist/cli/chunk-NEFMQYLE.js +656 -0
  75. package/dist/cli/chunk-NU6CQQVB.js +4501 -0
  76. package/dist/cli/chunk-OILHT47L.js +252 -0
  77. package/dist/cli/chunk-PKKZPOOP.js +352 -0
  78. package/dist/cli/chunk-PN4WW5VX.js +66 -0
  79. package/dist/cli/chunk-PSJ33WVO.js +56 -0
  80. package/dist/cli/chunk-QA6T2LQ5.js +71 -0
  81. package/dist/cli/chunk-QJJWWCIC.js +288 -0
  82. package/dist/cli/chunk-QKMBWYAS.js +93 -0
  83. package/dist/cli/chunk-QWNKLLLG.js +84 -0
  84. package/dist/cli/chunk-QWUFFDL3.js +85 -0
  85. package/dist/cli/chunk-QY76BRUZ.js +35 -0
  86. package/dist/cli/chunk-R45KVF5Y.js +117 -0
  87. package/dist/cli/chunk-RRKP7HLU.js +66 -0
  88. package/dist/cli/chunk-SXXOC6KZ.js +209 -0
  89. package/dist/cli/chunk-T6GZJYL3.js +108 -0
  90. package/dist/cli/chunk-TLQ37HRE.js +67 -0
  91. package/dist/cli/chunk-TPTNEJZJ.js +52 -0
  92. package/dist/cli/chunk-TYC7G5LF.js +100 -0
  93. package/dist/cli/chunk-UWCZY52R.js +766 -0
  94. package/dist/cli/chunk-VB3LDPL5.js +46 -0
  95. package/dist/cli/chunk-VLEYOOPH.js +31 -0
  96. package/dist/cli/chunk-W3JLYKKY.js +140 -0
  97. package/dist/cli/chunk-WWCYZYSN.js +56 -0
  98. package/dist/cli/chunk-XA5WISNV.js +52 -0
  99. package/dist/cli/chunk-XHRZ7OYZ.js +132 -0
  100. package/dist/cli/chunk-XLPMIGJJ.js +148 -0
  101. package/dist/cli/chunk-YY66LFZF.js +29 -0
  102. package/dist/cli/chunk-ZMGDZMSJ.js +210 -0
  103. package/dist/cli/claim-IGOG2QOC.js +97 -0
  104. package/dist/cli/classify-MG4N7GMQ.js +117 -0
  105. package/dist/cli/cli-A23Q335V.js +51 -0
  106. package/dist/cli/cloud-SILYJVKO.js +731 -0
  107. package/dist/cli/cockpit-RZKLGYPN.js +790 -0
  108. package/dist/cli/code-H2FQCVMW.js +178 -0
  109. package/dist/cli/complete-JLX7NBI4.js +35 -0
  110. package/dist/cli/complexity-OKV7PVZH.js +57 -0
  111. package/dist/cli/compliance-QMGZHJNQ.js +277 -0
  112. package/dist/cli/conduit-4H32UYEA.js +308 -0
  113. package/dist/cli/conduit-EY54WTZA.js +535 -0
  114. package/dist/cli/config-TDYOC7XO.js +519 -0
  115. package/dist/cli/consensus-4XCOFPPT.js +122 -0
  116. package/dist/cli/context-FN4YTGHD.js +142 -0
  117. package/dist/cli/contribution-7RWFBJLC.js +112 -0
  118. package/dist/cli/curator-HKZJCVRL.js +139 -0
  119. package/dist/cli/current-B2NU7V3G.js +43 -0
  120. package/dist/cli/daemon-GBD4TVCD.js +452 -0
  121. package/dist/cli/dash-IGDANIE5.js +71 -0
  122. package/dist/cli/decide-26SXC2V6.js +416 -0
  123. package/dist/cli/decompose-LQ76TEZG.js +78 -0
  124. package/dist/cli/decomposition-WFRWNUSJ.js +122 -0
  125. package/dist/cli/delete-T5DUQHOX.js +69 -0
  126. package/dist/cli/deps-UTPZJBXL.js +462 -0
  127. package/dist/cli/detect-FFZSMVDT.js +46 -0
  128. package/dist/cli/detect-drift-TVCJOFYJ.js +408 -0
  129. package/dist/cli/diagnostics-GN5CVD3N.js +93 -0
  130. package/dist/cli/diagnostics-ZNBKH6GX.js +133 -0
  131. package/dist/cli/docs-CLQKEEUK.js +1710 -0
  132. package/dist/cli/docs-DPPDFTWR.js +3098 -0
  133. package/dist/cli/doctor-GPENOP4N.js +1270 -0
  134. package/dist/cli/doctor-ac-bindings-S3IOEFP4.js +26 -0
  135. package/dist/cli/doctor-acceptance-drift-VNFKPBSQ.js +26 -0
  136. package/dist/cli/doctor-credentials-A5H4JMTF.js +26 -0
  137. package/dist/cli/doctor-db-substrate-FGCISE4Z.js +27 -0
  138. package/dist/cli/doctor-dep-cycles-BKKKHHYG.js +26 -0
  139. package/dist/cli/doctor-exodus-ND2DH2KP.js +26 -0
  140. package/dist/cli/doctor-exodus-residue-4EMRYMEQ.js +26 -0
  141. package/dist/cli/doctor-fk-check-VY3RIQV3.js +26 -0
  142. package/dist/cli/doctor-global-delivery-JN6IGHUL.js +26 -0
  143. package/dist/cli/doctor-heavy-command-hook-XSN44WXU.js +26 -0
  144. package/dist/cli/doctor-legacy-backups-QAG5NHYP.js +26 -0
  145. package/dist/cli/doctor-legacy-reaper-CIRGFE6R.js +26 -0
  146. package/dist/cli/doctor-malformed-ids-WL7HT4TB.js +26 -0
  147. package/dist/cli/doctor-manifest-rows-SMQCKJ2T.js +26 -0
  148. package/dist/cli/doctor-memory-guard-LJDOJG76.js +26 -0
  149. package/dist/cli/doctor-migrations-ETQPFNUP.js +26 -0
  150. package/dist/cli/doctor-nexus-residency-A4JMKBEJ.js +26 -0
  151. package/dist/cli/doctor-project-identity-FFQJ5LNX.js +26 -0
  152. package/dist/cli/doctor-projects-MFUTKRHP.js +30 -0
  153. package/dist/cli/doctor-projects-registry-76X6VTGM.js +26 -0
  154. package/dist/cli/doctor-release-readiness-QJCOPFTK.js +26 -0
  155. package/dist/cli/doctor-repair-AU76FIKY.js +26 -0
  156. package/dist/cli/doctor-row-identity-KW6JYZQE.js +26 -0
  157. package/dist/cli/doctor-skill-fixtures-G3T7JUHS.js +26 -0
  158. package/dist/cli/doctor-split-brain-FUW6L7FS.js +26 -0
  159. package/dist/cli/doctor-superseded-store-DUHGSBLC.js +26 -0
  160. package/dist/cli/doctor-sync-journal-SXMUIKF7.js +26 -0
  161. package/dist/cli/doctor-sync-triggers-6WNJZFRM.js +26 -0
  162. package/dist/cli/doctor-tool-locks-66LSLUBN.js +26 -0
  163. package/dist/cli/doctor-twin-collapse-AYBYBFC4.js +26 -0
  164. package/dist/cli/doctor-worktree-stores-C5XEH5OG.js +26 -0
  165. package/dist/cli/done-R64XRZ32.js +196 -0
  166. package/dist/cli/dynamic-RR4HB7BB.js +29 -0
  167. package/dist/cli/entities-3JIHDIOK.js +361 -0
  168. package/dist/cli/event-45KEWV5H.js +372 -0
  169. package/dist/cli/exists-BEDZS5RI.js +65 -0
  170. package/dist/cli/exodus-DUX62344.js +401 -0
  171. package/dist/cli/export-C5PQIQ5O.js +93 -0
  172. package/dist/cli/export-tasks-CUXDZPJB.js +97 -0
  173. package/dist/cli/federation-ESM35EGG.js +145 -0
  174. package/dist/cli/find-5EUZHHQJ.js +178 -0
  175. package/dist/cli/focus-6AH4KLRO.js +368 -0
  176. package/dist/cli/focus-ANKAIRO5.js +56 -0
  177. package/dist/cli/gateway-2GW2KTK3.js +77 -0
  178. package/dist/cli/gateway-auto-start-EDK7XI6E.js +36 -0
  179. package/dist/cli/gc-CTOQLUSA.js +291 -0
  180. package/dist/cli/go-YJPNHHYT.js +206 -0
  181. package/dist/cli/goal-4GW4G77D.js +213 -0
  182. package/dist/cli/grade-25WSZH4X.js +57 -0
  183. package/dist/cli/graph-JUO3TMF3.js +879 -0
  184. package/dist/cli/history-NACNUQTC.js +138 -0
  185. package/dist/cli/hook-UF7J7R6D.js +57 -0
  186. package/dist/cli/hook-entry.js +244 -19
  187. package/dist/cli/hygiene-3QZ2NI7P.js +55 -0
  188. package/dist/cli/import-7ESGL5SS.js +89 -0
  189. package/dist/cli/import-tasks-FLE2RPBR.js +109 -0
  190. package/dist/cli/index.js +601 -94637
  191. package/dist/cli/init-AN4DZ2XO.js +40 -0
  192. package/dist/cli/inject-HQWA5GWY.js +83 -0
  193. package/dist/cli/install-global-YQV4W5OG.js +95 -0
  194. package/dist/cli/intelligence-OFFNQGHE.js +238 -0
  195. package/dist/cli/intelligence-QIC4SN4X.js +182 -0
  196. package/dist/cli/issue-P5RNMRDG.js +159 -0
  197. package/dist/cli/janitor-ZNCFQ7E3.js +111 -0
  198. package/dist/cli/labels-ORBM3T57.js +88 -0
  199. package/dist/cli/lifecycle-MHR22TVI.js +273 -0
  200. package/dist/cli/list-LB6GCYYU.js +109 -0
  201. package/dist/cli/llm-H7LZWQKX.js +130 -0
  202. package/dist/cli/llm-OTJWPMGI.js +704 -0
  203. package/dist/cli/llm-cost-MLMXEAR4.js +25 -0
  204. package/dist/cli/llm-stream-AAEUNKRP.js +27 -0
  205. package/dist/cli/log-W2A5M2NA.js +76 -0
  206. package/dist/cli/login-SIXFFZSP.js +45 -0
  207. package/dist/cli/logout-G3KVLQQM.js +74 -0
  208. package/dist/cli/manifest-G4T6EBSI.js +354 -0
  209. package/dist/cli/map-VU5M72TK.js +53 -0
  210. package/dist/cli/memory-2E27G2G5.js +1952 -0
  211. package/dist/cli/memory-IAEYKXG6.js +1895 -0
  212. package/dist/cli/migrate-agents-v2-A52QIYNJ.js +33 -0
  213. package/dist/cli/migrate-claude-mem-TPDW3R4Z.js +206 -0
  214. package/dist/cli/next-SVH4LIDY.js +57 -0
  215. package/dist/cli/nexus-FPQV2EAF.js +1059 -0
  216. package/dist/cli/nexus-XSFXN5E6.js +2924 -0
  217. package/dist/cli/ops-K6LHY5J6.js +52 -0
  218. package/dist/cli/orchestrate-CZ2J6W3L.js +1650 -0
  219. package/dist/cli/orchestrate-HURUCQFT.js +950 -0
  220. package/dist/cli/otel-JCNPVJLZ.js +188 -0
  221. package/dist/cli/phase-VDFRASSO.js +221 -0
  222. package/dist/cli/pipeline-TCZPOEDR.js +697 -0
  223. package/dist/cli/pivot-V5MSQZ7L.js +88 -0
  224. package/dist/cli/plan-SQUGCKSM.js +49 -0
  225. package/dist/cli/playbook-L47GLDQD.js +230 -0
  226. package/dist/cli/playbook-NJVO4R6P.js +33 -0
  227. package/dist/cli/project-YZEC7GYF.js +331 -0
  228. package/dist/cli/promote-FINF4HVK.js +53 -0
  229. package/dist/cli/provenance-3TUWVBFR.js +141 -0
  230. package/dist/cli/provenance-YZG33JGM.js +129 -0
  231. package/dist/cli/provider-23JVLLG3.js +213 -0
  232. package/dist/cli/reason-FHN54O7O.js +138 -0
  233. package/dist/cli/reconcile-MOM5T4AX.js +128 -0
  234. package/dist/cli/refresh-memory-3OSTRAVK.js +45 -0
  235. package/dist/cli/relates-6FWUFUS2.js +260 -0
  236. package/dist/cli/release-G2DPSG5M.js +347 -0
  237. package/dist/cli/release-URX6JHZ2.js +525 -0
  238. package/dist/cli/remote-VIULU2T5.js +279 -0
  239. package/dist/cli/renderers-TGSW77J4.js +37 -0
  240. package/dist/cli/reorder-UIPN6TQY.js +87 -0
  241. package/dist/cli/reparent-ALOWWUIU.js +59 -0
  242. package/dist/cli/req-RH2Y3H7A.js +130 -0
  243. package/dist/cli/research-G2Y72HRC.js +366 -0
  244. package/dist/cli/restore-VBR5XNML.js +470 -0
  245. package/dist/cli/revert-32LDNSGP.js +240 -0
  246. package/dist/cli/roadmap-LFU3AG7D.js +62 -0
  247. package/dist/cli/run-HXRILSR7.js +245 -0
  248. package/dist/cli/safestop-Z5UC7NGQ.js +89 -0
  249. package/dist/cli/saga-Y6FZS6AM.js +286 -0
  250. package/dist/cli/schema-OOOKLWUE.js +195 -0
  251. package/dist/cli/self-update-26SOTJMH.js +504 -0
  252. package/dist/cli/selfimprove-4SMOCLUV.js +89 -0
  253. package/dist/cli/selfimprove-EB4RQLP4.js +139 -0
  254. package/dist/cli/sentient-QPETVE53.js +254 -0
  255. package/dist/cli/sentient-RGMWR4XJ.js +1088 -0
  256. package/dist/cli/sequence-H7DSAJPF.js +94 -0
  257. package/dist/cli/service-EK5MGB2D.js +156 -0
  258. package/dist/cli/service-GLOMZWPQ.js +437 -0
  259. package/dist/cli/session-HYUXAQGC.js +708 -0
  260. package/dist/cli/session-N5ISU56W.js +568 -0
  261. package/dist/cli/setup-L3YYV53D.js +323 -0
  262. package/dist/cli/show-364V3KY2.js +123 -0
  263. package/dist/cli/skill-F2KR6HW5.js +84 -0
  264. package/dist/cli/skills-FS3DCP6E.js +929 -0
  265. package/dist/cli/smoke-provider-SKUFMZXU.js +218 -0
  266. package/dist/cli/snapshot-EGXEQ5PR.js +120 -0
  267. package/dist/cli/src-LYLXHXHH.js +80 -0
  268. package/dist/cli/start-6DXOCCKL.js +68 -0
  269. package/dist/cli/stats-UVUQEGYC.js +96 -0
  270. package/dist/cli/status-XLKYLN42.js +157 -0
  271. package/dist/cli/sticky-VSTQ2I2O.js +264 -0
  272. package/dist/cli/sticky-XZXZDCFW.js +339 -0
  273. package/dist/cli/stop-VNOAFWNB.js +43 -0
  274. package/dist/cli/sync-YYPARW3A.js +155 -0
  275. package/dist/cli/tasks-C24KHTFF.js +1118 -0
  276. package/dist/cli/tasks-LBJC7CZV.js +175 -0
  277. package/dist/cli/telemetry-CU7W5WAY.js +120 -0
  278. package/dist/cli/templates-G42JBUY4.js +609 -0
  279. package/dist/cli/testing-HSRITHEY.js +147 -0
  280. package/dist/cli/token-J74E7TSU.js +221 -0
  281. package/dist/cli/tools-BI74W7VE.js +652 -0
  282. package/dist/cli/transcript-RGK7RSGQ.js +440 -0
  283. package/dist/cli/tui-BPUFHYKK.js +51 -0
  284. package/dist/cli/update-2KQWA27S.js +478 -0
  285. package/dist/cli/update-check-entry.js +124 -0
  286. package/dist/cli/update-notice-6SQ6WPQG.js +68 -0
  287. package/dist/cli/upgrade-E2MJAPC7.js +136 -0
  288. package/dist/cli/upgrade-XRSQ4RWH.js +243 -0
  289. package/dist/cli/verify-WASRGDBA.js +191 -0
  290. package/dist/cli/web-NJ3P67EU.js +275 -0
  291. package/dist/cli/workgraph-OHJ2VKJD.js +232 -0
  292. package/dist/cli/worktree-FVQLORFY.js +371 -0
  293. package/dist/cli/worktree-ZJ6JTQNG.js +287 -0
  294. package/package.json +13 -13
  295. package/studio-dist/client/_app/immutable/chunks/{DMj27Pxj.js → AH7dIemv.js} +1 -1
  296. package/studio-dist/client/_app/immutable/chunks/{Dc2owyvE.js → BDgH40i3.js} +1 -1
  297. package/studio-dist/client/_app/immutable/chunks/BXDCSJ7U.js +1 -0
  298. package/studio-dist/client/_app/immutable/chunks/{qq3pe1aT.js → Gg4iYl59.js} +1 -1
  299. package/studio-dist/client/_app/immutable/entry/{app.CHWXLeE9.js → app.DUDNK-37.js} +2 -2
  300. package/studio-dist/client/_app/immutable/entry/start.DNmZ0pA4.js +1 -0
  301. package/studio-dist/client/_app/immutable/nodes/{0.DmKQGvFh.js → 0.DWqP3ail.js} +1 -1
  302. package/studio-dist/client/_app/immutable/nodes/{1.DqJk_REO.js → 1.CZGVUP5B.js} +1 -1
  303. package/studio-dist/client/_app/immutable/nodes/{15.GUy6kdW1.js → 15.DGaflZRS.js} +1 -1
  304. package/studio-dist/client/_app/immutable/nodes/{16.CcnKZ8f9.js → 16.uYlarGXl.js} +1 -1
  305. package/studio-dist/client/_app/immutable/nodes/{17.DAlQF3lQ.js → 17.CZMR0E47.js} +1 -1
  306. package/studio-dist/client/_app/immutable/nodes/{18.vQFr-vFj.js → 18.CBC-AKH_.js} +1 -1
  307. package/studio-dist/client/_app/immutable/nodes/{20.GVOj5j_r.js → 20.BGi43MvQ.js} +1 -1
  308. package/studio-dist/client/_app/immutable/nodes/{24.2-wC6DOh.js → 24.Dv8ftCyR.js} +1 -1
  309. package/studio-dist/client/_app/immutable/nodes/25.DQPVlTDQ.js +39 -0
  310. package/studio-dist/client/_app/immutable/nodes/{26.C3rNqzZF.js → 26.Cl800304.js} +1 -1
  311. package/studio-dist/client/_app/immutable/nodes/{3.b-7pzc3M.js → 3.D_fQKj9f.js} +1 -1
  312. package/studio-dist/client/_app/version.json +1 -1
  313. package/studio-dist/server/chunks/{0-BaCce-O1.js → 0-BpOagOst.js} +3 -3
  314. package/studio-dist/server/chunks/1-D0oRGR-C.js +9 -0
  315. package/studio-dist/server/chunks/{15-DRMOSIC9.js → 15-BcjHz7Tv.js} +3 -3
  316. package/studio-dist/server/chunks/{16-BulXhoZZ.js → 16-CXm8TUk7.js} +3 -3
  317. package/studio-dist/server/chunks/{17-DUEOCM0H.js → 17-mSgUK-cp.js} +3 -3
  318. package/studio-dist/server/chunks/{18-DP7Q8zPs.js → 18-BtfnIw1d.js} +3 -3
  319. package/studio-dist/server/chunks/{20-9ta6MI7q.js → 20-By1e4QDS.js} +3 -3
  320. package/studio-dist/server/chunks/{24-DysdL1ab.js → 24-0i2YLVxG.js} +3 -3
  321. package/studio-dist/server/chunks/{dist-CdoCt9zT.js → 25-DPsrqbrh.js} +797 -10736
  322. package/studio-dist/server/chunks/{26-Df4YXgg0.js → 26-P0XkOibm.js} +3 -3
  323. package/studio-dist/server/chunks/{3-BEhOhYpL.js → 3-WudjUK7e.js} +3 -3
  324. package/studio-dist/server/chunks/{_layout.svelte-CnLcXYG-.js → _layout.svelte-D9m81Rle.js} +4 -4
  325. package/studio-dist/server/chunks/{_page.svelte-DGhXqeRc.js → _page.svelte-2PDLOF83.js} +3 -3
  326. package/studio-dist/server/chunks/{_page.svelte-Dv8tmDEC.js → _page.svelte-BjE3jm2K.js} +3 -3
  327. package/studio-dist/server/chunks/{_page.svelte-C0qgUvzA.js → _page.svelte-Clc0vmiZ.js} +4 -4
  328. package/studio-dist/server/chunks/{_page.svelte-ui7LnWkL.js → _page.svelte-DABdRT3h.js} +3 -3
  329. package/studio-dist/server/chunks/{_page.svelte-HUqTICJR.js → _page.svelte-DG3PjiHj.js} +3 -3
  330. package/studio-dist/server/chunks/{_page.svelte-DzcZljiy.js → _page.svelte-Edy9CaE8.js} +20 -7
  331. package/studio-dist/server/chunks/{_page.svelte-DOl0DGOO.js → _page.svelte-Hrf3-ZR8.js} +3 -3
  332. package/studio-dist/server/chunks/{_page.svelte-Da4q5l93.js → _page.svelte-VB4O4Nl5.js} +3 -3
  333. package/studio-dist/server/chunks/{_page.svelte-CbyEPj2j.js → _page.svelte-d3jEgjsI.js} +3 -3
  334. package/studio-dist/server/chunks/{_server.ts-P4wVVksg.js → _server.ts-BcRFsyo3.js} +4 -5
  335. package/studio-dist/server/chunks/{_server.ts-Cr57EKWf.js → _server.ts-CEWpIFrj.js} +6 -5
  336. package/studio-dist/server/chunks/{_server.ts-CnKVmf_s.js → _server.ts-CLVdVIF9.js} +2 -2
  337. package/studio-dist/server/chunks/{_server.ts-C0evMKCk.js → _server.ts-D_j7aSy5.js} +6 -5
  338. package/studio-dist/server/chunks/{_server.ts-2BazvYRP.js → _server.ts-QEZF8h2q.js} +4 -5
  339. package/studio-dist/server/chunks/{client-CPM4LrO2.js → client-Kp1dP1od.js} +2 -2
  340. package/studio-dist/server/chunks/{error.svelte-ShcZo43D.js → error.svelte-WOCioJVX.js} +3 -3
  341. package/studio-dist/server/chunks/{hooks.server-D2qbf3Zp.js → hooks.server-DH9zkIrJ.js} +3 -1
  342. package/studio-dist/server/chunks/{http-BiQjEmVU.js → http-DT5kxaWk.js} +5 -4
  343. package/studio-dist/server/chunks/{internal-Cgsrya1j.js → internal-z0vqd5_u.js} +3 -3
  344. package/studio-dist/server/chunks/operations-registry-DdzmYzqX.js +10584 -0
  345. package/studio-dist/server/chunks/{stores-BGrpEDMK.js → stores-s2kaL315.js} +2 -2
  346. package/studio-dist/server/index.js +1 -1
  347. package/studio-dist/server/manifest.js +17 -17
  348. package/studio-dist/client/_app/immutable/chunks/Bw6J8NDM.js +0 -1
  349. package/studio-dist/client/_app/immutable/entry/start.C9bwPpvc.js +0 -1
  350. package/studio-dist/client/_app/immutable/nodes/25.D1vYaH8g.js +0 -39
  351. package/studio-dist/server/chunks/1-CVo7Nk6d.js +0 -9
  352. package/studio-dist/server/chunks/25-CYsps38R.js +0 -366
@@ -0,0 +1,1059 @@
1
+ (() => {
2
+ const _installed = Symbol.for('cleocode.cli.sqliteWarningFilter');
3
+ if (globalThis[_installed]) return;
4
+ globalThis[_installed] = true;
5
+ const _origEmitWarning = process.emitWarning;
6
+ process.emitWarning = function(warning, type, code, ctor) {
7
+ if (typeof warning === 'object' && warning.name === 'ExperimentalWarning' && typeof warning.message === 'string' && /SQLite is an experimental feature/i.test(warning.message)) {
8
+ return;
9
+ }
10
+ if (typeof warning === 'string' && /SQLite is an experimental feature/i.test(warning)) {
11
+ return;
12
+ }
13
+ return _origEmitWarning.call(process, warning, type, code, ctor);
14
+ };
15
+ })();
16
+ import {
17
+ defineTypedHandler,
18
+ lafsError,
19
+ lafsSuccess,
20
+ typedDispatch,
21
+ wrapCoreResult
22
+ } from "./chunk-QWNKLLLG.js";
23
+ import {
24
+ lazyOperation
25
+ } from "./chunk-TYC7G5LF.js";
26
+ import {
27
+ envelopeToEngineResult,
28
+ errorResult,
29
+ handleErrorResult,
30
+ unsupportedOp,
31
+ wrapResult
32
+ } from "./chunk-XHRZ7OYZ.js";
33
+
34
+ // packages/cleo/src/dispatch/domains/nexus.ts
35
+ import {
36
+ getNexusDescriptor,
37
+ NEXUS_SCOPE_MAP
38
+ } from "@cleocode/contracts/operations/nexus-scope-map.js";
39
+ import { getLogger } from "@cleocode/core/logger";
40
+ import {
41
+ discloseNexusFreshness,
42
+ judgeSymbolFiles,
43
+ querySymbolFiles,
44
+ withNexusFreshnessMeta
45
+ } from "@cleocode/core/nexus/freshness";
46
+ import { resolveNexusQueryProjectId } from "@cleocode/core/nexus/registry.js";
47
+ import { getProjectRoot } from "@cleocode/core/project-scope";
48
+ import { getBrainNativeDb } from "@cleocode/core/store/memory-sqlite";
49
+ import { getNexusNativeDb } from "@cleocode/core/store/nexus-sqlite";
50
+ import { stampNexusMeta } from "@cleocode/runtime/gateway/dispatch";
51
+ var assessNexusFreshnessForQuery = lazyOperation(
52
+ async () => (await import("@cleocode/core/nexus/freshness")).assessNexusFreshnessForQuery
53
+ );
54
+ var nexusAugment = lazyOperation(
55
+ async () => (await import("@cleocode/core/nexus/augment")).nexusAugment
56
+ );
57
+ var nexusBlockers = lazyOperation(
58
+ async () => (await import("@cleocode/core/nexus/deps")).nexusBlockers
59
+ );
60
+ var nexusBrainAnchors = lazyOperation(
61
+ async () => (await import("@cleocode/core/nexus/living-brain")).nexusBrainAnchors
62
+ );
63
+ var nexusClusters = lazyOperation(
64
+ async () => (await import("@cleocode/core/nexus/clusters")).nexusClusters
65
+ );
66
+ var nexusColdSymbols = lazyOperation(
67
+ async () => (await import("@cleocode/core/nexus/plasticity-queries")).nexusColdSymbols
68
+ );
69
+ var nexusConduitScan = lazyOperation(
70
+ async () => (await import("@cleocode/core/nexus/api-contracts")).nexusConduitScan
71
+ );
72
+ var nexusContext = lazyOperation(
73
+ async () => (await import("@cleocode/core/nexus/context")).nexusContext
74
+ );
75
+ var nexusContractsLinkTasks = lazyOperation(
76
+ async () => (await import("@cleocode/core/nexus/api-contracts")).nexusContractsLinkTasks
77
+ );
78
+ var nexusContractsShow = lazyOperation(
79
+ async () => (await import("@cleocode/core/nexus/api-contracts")).nexusContractsShow
80
+ );
81
+ var nexusContractsSync = lazyOperation(
82
+ async () => (await import("@cleocode/core/nexus/api-contracts")).nexusContractsSync
83
+ );
84
+ var nexusCriticalPath = lazyOperation(
85
+ async () => (await import("@cleocode/core/nexus/deps")).nexusCriticalPath
86
+ );
87
+ var nexusDepsQuery = lazyOperation(
88
+ async () => (await import("@cleocode/core/nexus/deps")).nexusDepsQuery
89
+ );
90
+ var nexusDiff = lazyOperation(async () => (await import("@cleocode/core/nexus/diff")).nexusDiff);
91
+ var nexusDiscover = lazyOperation(
92
+ async () => (await import("@cleocode/core/nexus/discover")).nexusDiscover
93
+ );
94
+ var nexusFlows = lazyOperation(
95
+ async () => (await import("@cleocode/core/nexus/flows")).nexusFlows
96
+ );
97
+ var nexusFullContext = lazyOperation(
98
+ async () => (await import("@cleocode/core/nexus/living-brain")).nexusFullContext
99
+ );
100
+ var nexusGraph = lazyOperation(
101
+ async () => (await import("@cleocode/core/nexus/deps")).nexusGraph
102
+ );
103
+ var nexusHotNodes = lazyOperation(
104
+ async () => (await import("@cleocode/core/nexus/plasticity-queries")).nexusHotNodes
105
+ );
106
+ var nexusHotPaths = lazyOperation(
107
+ async () => (await import("@cleocode/core/nexus/plasticity-queries")).nexusHotPaths
108
+ );
109
+ var nexusImpact = lazyOperation(
110
+ async () => (await import("@cleocode/core/nexus/impact")).nexusImpact
111
+ );
112
+ var nexusImpactFull = lazyOperation(
113
+ async () => (await import("@cleocode/core/nexus/living-brain")).nexusImpactFull
114
+ );
115
+ var nexusInitialize = lazyOperation(
116
+ async () => (await import("@cleocode/core/nexus/registry")).nexusInitialize
117
+ );
118
+ var nexusListProjects = lazyOperation(
119
+ async () => (await import("@cleocode/core/nexus/registry")).nexusListProjects
120
+ );
121
+ var nexusOrphans = lazyOperation(
122
+ async () => (await import("@cleocode/core/nexus/deps")).nexusOrphans
123
+ );
124
+ var nexusProfileExport = lazyOperation(
125
+ async () => (await import("@cleocode/core/nexus/user-profile")).nexusProfileExport
126
+ );
127
+ var nexusProfileGet = lazyOperation(
128
+ async () => (await import("@cleocode/core/nexus/user-profile")).nexusProfileGet
129
+ );
130
+ var nexusProfileImport = lazyOperation(
131
+ async () => (await import("@cleocode/core/nexus/user-profile")).nexusProfileImport
132
+ );
133
+ var nexusProfileReinforce = lazyOperation(
134
+ async () => (await import("@cleocode/core/nexus/user-profile")).nexusProfileReinforce
135
+ );
136
+ var nexusProfileSupersede = lazyOperation(
137
+ async () => (await import("@cleocode/core/nexus/user-profile")).nexusProfileSupersede
138
+ );
139
+ var nexusProfileUpsert = lazyOperation(
140
+ async () => (await import("@cleocode/core/nexus/user-profile")).nexusProfileUpsert
141
+ );
142
+ var nexusProfileView = lazyOperation(
143
+ async () => (await import("@cleocode/core/nexus/user-profile")).nexusProfileView
144
+ );
145
+ var nexusProjectsClean = lazyOperation(
146
+ async () => (await import("@cleocode/core/nexus/projects-clean")).nexusProjectsClean
147
+ );
148
+ var nexusProjectsFleet = lazyOperation(
149
+ async () => (await import("@cleocode/core/nexus/registry")).nexusProjectsFleet
150
+ );
151
+ var nexusProjectsList = lazyOperation(
152
+ async () => (await import("@cleocode/core/nexus/registry")).nexusProjectsList
153
+ );
154
+ var nexusProjectsRegister = lazyOperation(
155
+ async () => (await import("@cleocode/core/nexus/registry")).nexusProjectsRegister
156
+ );
157
+ var nexusProjectsRemove = lazyOperation(
158
+ async () => (await import("@cleocode/core/nexus/registry")).nexusProjectsRemove
159
+ );
160
+ var nexusProjectsScan = lazyOperation(
161
+ async () => (await import("@cleocode/core/nexus/projects-scan")).nexusProjectsScan
162
+ );
163
+ var nexusProjectsStatus = lazyOperation(
164
+ async () => (await import("@cleocode/core/nexus/registry")).nexusProjectsStatus
165
+ );
166
+ var nexusQueryCte = lazyOperation(
167
+ async () => (await import("@cleocode/core/nexus/query-dsl")).nexusQueryCte
168
+ );
169
+ var nexusReconcileProject = lazyOperation(
170
+ async () => (await import("@cleocode/core/nexus/registry")).nexusReconcileProject
171
+ );
172
+ var nexusRefreshBridge = lazyOperation(
173
+ async () => (await import("@cleocode/core/nexus/nexus-bridge")).nexusRefreshBridge
174
+ );
175
+ var nexusRegisterProject = lazyOperation(
176
+ async () => (await import("@cleocode/core/nexus/registry")).nexusRegisterProject
177
+ );
178
+ var nexusResolve = lazyOperation(
179
+ async () => (await import("@cleocode/core/nexus/query")).nexusResolve
180
+ );
181
+ var nexusRouteMap = lazyOperation(
182
+ async () => (await import("@cleocode/core/nexus/route-analysis")).nexusRouteMap
183
+ );
184
+ var nexusSearch = lazyOperation(
185
+ async () => (await import("@cleocode/core/nexus/discover")).nexusSearch
186
+ );
187
+ var nexusSearchCode = lazyOperation(
188
+ async () => (await import("@cleocode/core/nexus/augment")).nexusSearchCode
189
+ );
190
+ var nexusSetPermission = lazyOperation(
191
+ async () => (await import("@cleocode/core/nexus/permissions")).nexusSetPermission
192
+ );
193
+ var nexusShapeCheck = lazyOperation(
194
+ async () => (await import("@cleocode/core/nexus/route-analysis")).nexusShapeCheck
195
+ );
196
+ var nexusShareSnapshotExport = lazyOperation(
197
+ async () => (await import("@cleocode/core/nexus/transfer")).nexusShareSnapshotExport
198
+ );
199
+ var nexusShareSnapshotImport = lazyOperation(
200
+ async () => (await import("@cleocode/core/nexus/transfer")).nexusShareSnapshotImport
201
+ );
202
+ var nexusShareStatus = lazyOperation(
203
+ async () => (await import("@cleocode/core/nexus/sharing/index")).nexusShareStatus
204
+ );
205
+ var nexusShowProject = lazyOperation(
206
+ async () => (await import("@cleocode/core/nexus/registry")).nexusShowProject
207
+ );
208
+ var nexusSigilList = lazyOperation(
209
+ async () => (await import("@cleocode/core/nexus/sigil")).nexusSigilList
210
+ );
211
+ var nexusSigilSync = lazyOperation(
212
+ async () => (await import("@cleocode/core/nexus/sigil-sync")).nexusSigilSync
213
+ );
214
+ var nexusStatus = lazyOperation(
215
+ async () => (await import("@cleocode/core/nexus/registry")).nexusStatus
216
+ );
217
+ var nexusSyncProject = lazyOperation(
218
+ async () => (await import("@cleocode/core/nexus/registry")).nexusSyncProject
219
+ );
220
+ var nexusTaskFootprint = lazyOperation(
221
+ async () => (await import("@cleocode/core/nexus/living-brain")).nexusTaskFootprint
222
+ );
223
+ var nexusTaskSymbols = lazyOperation(
224
+ async () => (await import("@cleocode/core/nexus/api-contracts")).nexusTaskSymbols
225
+ );
226
+ var nexusTopEntries = lazyOperation(
227
+ async () => (await import("@cleocode/core/nexus/query")).nexusTopEntries
228
+ );
229
+ var nexusTransferExecute = lazyOperation(
230
+ async () => (await import("@cleocode/core/nexus/transfer")).nexusTransferExecute
231
+ );
232
+ var nexusTransferPreview = lazyOperation(
233
+ async () => (await import("@cleocode/core/nexus/transfer")).nexusTransferPreview
234
+ );
235
+ var nexusUnregisterProject = lazyOperation(
236
+ async () => (await import("@cleocode/core/nexus/registry")).nexusUnregisterProject
237
+ );
238
+ var nexusWhy = lazyOperation(
239
+ async () => (await import("@cleocode/core/nexus/living-brain")).nexusWhy
240
+ );
241
+ var nexusWiki = lazyOperation(
242
+ async () => (await import("@cleocode/core/nexus/wiki-index")).nexusWiki
243
+ );
244
+ var _nexusTypedHandler = defineTypedHandler("nexus", {
245
+ // -------------------------------------------------------------------------
246
+ // Query ops (30)
247
+ // -------------------------------------------------------------------------
248
+ status: async (_params) => wrapCoreResult(await nexusStatus(), "status"),
249
+ list: async (params) => {
250
+ const result = await nexusListProjects(params.limit, params.offset);
251
+ if (!result.success) {
252
+ return lafsError(
253
+ String(result.error?.code ?? "E_INTERNAL"),
254
+ result.error?.message ?? "Unknown error",
255
+ "list"
256
+ );
257
+ }
258
+ const data = result.data;
259
+ return lafsSuccess(
260
+ { projects: data.projects, count: data.count, total: data.total, filtered: data.filtered },
261
+ "list",
262
+ { page: data.page ?? result.page }
263
+ );
264
+ },
265
+ show: async (params) => {
266
+ if (!params.name) return lafsError("E_INVALID_INPUT", "name is required", "show");
267
+ return wrapCoreResult(await nexusShowProject(params.name), "show");
268
+ },
269
+ resolve: async (params) => {
270
+ if (!params.query) return lafsError("E_INVALID_INPUT", "query is required", "resolve");
271
+ return wrapCoreResult(await nexusResolve(params.query, params.currentProject), "resolve");
272
+ },
273
+ deps: async (params) => {
274
+ if (!params.query) return lafsError("E_INVALID_INPUT", "query is required", "deps");
275
+ return wrapCoreResult(
276
+ await nexusDepsQuery(params.query, params.direction ?? "forward"),
277
+ "deps"
278
+ );
279
+ },
280
+ graph: async (_params) => wrapCoreResult(await nexusGraph(), "graph"),
281
+ "path.show": async (_params) => wrapCoreResult(await nexusCriticalPath(), "path.show"),
282
+ "blockers.show": async (params) => {
283
+ if (!params.query) return lafsError("E_INVALID_INPUT", "query is required", "blockers.show");
284
+ return wrapCoreResult(await nexusBlockers(params.query), "blockers.show");
285
+ },
286
+ "orphans.list": async (params) => {
287
+ const result = await nexusOrphans(params.limit, params.offset);
288
+ if (!result.success) {
289
+ return lafsError(
290
+ String(result.error?.code ?? "E_INTERNAL"),
291
+ result.error?.message ?? "Unknown error",
292
+ "orphans.list"
293
+ );
294
+ }
295
+ const data = result.data;
296
+ return lafsSuccess(
297
+ { orphans: data.orphans, count: data.count, total: data.total, filtered: data.filtered },
298
+ "orphans.list",
299
+ { page: data.page ?? result.page }
300
+ );
301
+ },
302
+ discover: async (params) => {
303
+ if (!params.query) return lafsError("E_INVALID_INPUT", "query is required", "discover");
304
+ return wrapCoreResult(
305
+ await nexusDiscover(params.query, params.method ?? "auto", params.limit ?? 10),
306
+ "discover"
307
+ );
308
+ },
309
+ search: async (params) => {
310
+ if (!params.pattern) return lafsError("E_INVALID_INPUT", "pattern is required", "search");
311
+ return wrapCoreResult(
312
+ await nexusSearch(params.pattern, params.project, params.limit ?? 20),
313
+ "search"
314
+ );
315
+ },
316
+ augment: async (params) => {
317
+ if (!params.pattern) return lafsError("E_INVALID_INPUT", "pattern is required", "augment");
318
+ return wrapCoreResult(await nexusAugment(params.pattern, params.limit ?? 5), "augment");
319
+ },
320
+ "share.status": async (_params) => {
321
+ const projectRoot = getProjectRoot();
322
+ return wrapCoreResult(await nexusShareStatus(projectRoot), "share.status");
323
+ },
324
+ "transfer.preview": async (params) => {
325
+ if (!params.taskIds?.length || !params.sourceProject || !params.targetProject) {
326
+ return lafsError(
327
+ "E_INVALID_INPUT",
328
+ "taskIds, sourceProject, and targetProject are required",
329
+ "transfer.preview"
330
+ );
331
+ }
332
+ return wrapCoreResult(
333
+ await nexusTransferPreview({
334
+ taskIds: params.taskIds,
335
+ sourceProject: params.sourceProject,
336
+ targetProject: params.targetProject,
337
+ mode: params.mode ?? "copy",
338
+ scope: params.scope ?? "subtree"
339
+ }),
340
+ "transfer.preview"
341
+ );
342
+ },
343
+ "top-entries": async (params) => wrapCoreResult(
344
+ await nexusTopEntries({
345
+ limit: params?.limit,
346
+ kind: params?.kind,
347
+ nodeType: params?.nodeType
348
+ }),
349
+ "top-entries"
350
+ ),
351
+ impact: async (params) => {
352
+ if (!params.symbol) return lafsError("E_INVALID_INPUT", "symbol is required", "impact");
353
+ return wrapCoreResult(await nexusImpact(getProjectRoot(), params), "impact");
354
+ },
355
+ "full-context": async (params) => {
356
+ if (!params.symbol) return lafsError("E_INVALID_INPUT", "symbol is required", "full-context");
357
+ const projectRoot = getProjectRoot();
358
+ return wrapCoreResult(await nexusFullContext(params.symbol, projectRoot), "full-context");
359
+ },
360
+ "task-footprint": async (params) => {
361
+ if (!params.taskId) return lafsError("E_INVALID_INPUT", "taskId is required", "task-footprint");
362
+ const projectRoot = getProjectRoot();
363
+ return wrapCoreResult(await nexusTaskFootprint(params.taskId, projectRoot), "task-footprint");
364
+ },
365
+ "brain-anchors": async (params) => {
366
+ if (!params.entryId)
367
+ return lafsError("E_INVALID_INPUT", "entryId is required", "brain-anchors");
368
+ const projectRoot = getProjectRoot();
369
+ return wrapCoreResult(await nexusBrainAnchors(params.entryId, projectRoot), "brain-anchors");
370
+ },
371
+ why: async (params) => {
372
+ if (!params.symbol) return lafsError("E_INVALID_INPUT", "symbol is required", "why");
373
+ const projectRoot = getProjectRoot();
374
+ return wrapCoreResult(await nexusWhy(params.symbol, projectRoot), "why");
375
+ },
376
+ "impact-full": async (params) => {
377
+ if (!params.symbol) return lafsError("E_INVALID_INPUT", "symbol is required", "impact-full");
378
+ const projectRoot = getProjectRoot();
379
+ return wrapCoreResult(await nexusImpactFull(params.symbol, projectRoot), "impact-full");
380
+ },
381
+ "route-map": async (params) => {
382
+ const projectRoot = getProjectRoot();
383
+ const projectId = await resolveNexusQueryProjectId(projectRoot, params.projectId);
384
+ return wrapCoreResult(await nexusRouteMap(projectId, projectRoot), "route-map");
385
+ },
386
+ "shape-check": async (params) => {
387
+ if (!params.routeSymbol)
388
+ return lafsError("E_INVALID_INPUT", "routeSymbol is required", "shape-check");
389
+ const projectRoot = getProjectRoot();
390
+ const projectId = await resolveNexusQueryProjectId(projectRoot, params.projectId);
391
+ return wrapCoreResult(
392
+ await nexusShapeCheck(params.routeSymbol, projectId, projectRoot),
393
+ "shape-check"
394
+ );
395
+ },
396
+ "search-code": async (params) => {
397
+ if (!params.pattern) return lafsError("E_INVALID_INPUT", "pattern is required", "search-code");
398
+ return wrapCoreResult(await nexusSearchCode(params.pattern, params.limit ?? 10), "search-code");
399
+ },
400
+ wiki: async (params) => {
401
+ const projectRoot = getProjectRoot();
402
+ const outputDir = params.outputDir ?? `${projectRoot}/.cleo/wiki`;
403
+ return wrapCoreResult(
404
+ await nexusWiki(outputDir, projectRoot, {
405
+ communityFilter: params.communityFilter,
406
+ incremental: params.incremental
407
+ }),
408
+ "wiki"
409
+ );
410
+ },
411
+ "contracts-show": async (params) => {
412
+ if (!params.projectA || !params.projectB)
413
+ return lafsError("E_INVALID_INPUT", "projectA and projectB are required", "contracts-show");
414
+ const projectRoot = getProjectRoot();
415
+ return wrapCoreResult(
416
+ await nexusContractsShow(params.projectA, params.projectB, projectRoot),
417
+ "contracts-show"
418
+ );
419
+ },
420
+ "task-symbols": async (params) => {
421
+ if (!params.taskId) return lafsError("E_INVALID_INPUT", "taskId is required", "task-symbols");
422
+ const projectRoot = getProjectRoot();
423
+ return wrapCoreResult(await nexusTaskSymbols(params.taskId, projectRoot), "task-symbols");
424
+ },
425
+ "profile.view": async (params) => wrapCoreResult(
426
+ await nexusProfileView(params.minConfidence, params.includeSuperseded),
427
+ "profile.view"
428
+ ),
429
+ "profile.get": async (params) => {
430
+ if (!params.traitKey)
431
+ return lafsError("E_INVALID_INPUT", "traitKey is required", "profile.get");
432
+ return wrapCoreResult(await nexusProfileGet(params.traitKey), "profile.get");
433
+ },
434
+ "sigil.list": async (params) => wrapCoreResult(await nexusSigilList(params.role), "sigil.list"),
435
+ // T1510 — Phase 2 query ops
436
+ clusters: async (params) => {
437
+ const projectRoot = getProjectRoot();
438
+ const repoPath = params.repoPath ?? projectRoot;
439
+ const projectId = await resolveNexusQueryProjectId(repoPath, params.projectId);
440
+ return wrapCoreResult(await nexusClusters(projectId, repoPath), "clusters");
441
+ },
442
+ flows: async (params) => {
443
+ const projectRoot = getProjectRoot();
444
+ const repoPath = params.repoPath ?? projectRoot;
445
+ const projectId = await resolveNexusQueryProjectId(repoPath, params.projectId);
446
+ return wrapCoreResult(await nexusFlows(projectId, repoPath), "flows");
447
+ },
448
+ context: async (params) => {
449
+ if (!params.symbol) return lafsError("E_INVALID_INPUT", "symbol is required", "context");
450
+ const projectRoot = getProjectRoot();
451
+ const projectId = await resolveNexusQueryProjectId(projectRoot, params.projectId);
452
+ const limit = typeof params.limit === "number" ? params.limit : 20;
453
+ const showContent = params.content === true;
454
+ return wrapCoreResult(
455
+ await nexusContext(params.symbol, projectId, projectRoot, limit, showContent),
456
+ "context"
457
+ );
458
+ },
459
+ "projects.list": async (_params) => wrapCoreResult(await nexusProjectsList(), "projects.list"),
460
+ "projects.register": async (params) => {
461
+ if (!params.path) return lafsError("E_INVALID_INPUT", "path is required", "projects.register");
462
+ return wrapCoreResult(
463
+ await nexusProjectsRegister(params.path, params.name),
464
+ "projects.register"
465
+ );
466
+ },
467
+ "projects.remove": async (params) => {
468
+ if (!params.nameOrHash)
469
+ return lafsError("E_INVALID_INPUT", "nameOrHash is required", "projects.remove");
470
+ return wrapCoreResult(
471
+ await nexusProjectsRemove(params.nameOrHash),
472
+ "projects.remove"
473
+ );
474
+ },
475
+ "projects.scan": async (params) => wrapCoreResult(
476
+ await nexusProjectsScan({
477
+ roots: params.roots,
478
+ maxDepth: typeof params.maxDepth === "number" ? params.maxDepth : void 0,
479
+ autoRegister: params.autoRegister === true,
480
+ includeExisting: params.includeExisting === true
481
+ }),
482
+ "projects.scan"
483
+ ),
484
+ "projects.clean": async (params) => wrapCoreResult(
485
+ await nexusProjectsClean({
486
+ dryRun: params.dryRun === true,
487
+ pattern: params.pattern,
488
+ includeTemp: params.includeTemp === true,
489
+ includeTests: params.includeTests === true,
490
+ matchUnhealthy: params.matchUnhealthy === true,
491
+ matchNeverIndexed: params.matchNeverIndexed === true,
492
+ matchOrphaned: params.matchOrphaned === true,
493
+ removeFs: params.removeFs === true,
494
+ vacuum: params.vacuum === true
495
+ }),
496
+ "projects.clean"
497
+ ),
498
+ "projects.status": async (params) => wrapCoreResult(
499
+ await nexusProjectsStatus(getProjectRoot(), {
500
+ fetch: params.fetch === true,
501
+ concurrency: typeof params.concurrency === "number" ? params.concurrency : void 0,
502
+ timeoutMs: typeof params.timeoutMs === "number" ? params.timeoutMs : void 0,
503
+ staleAfterMs: typeof params.staleAfterMs === "number" ? params.staleAfterMs : void 0
504
+ }),
505
+ "projects.status"
506
+ ),
507
+ "projects.fleet": async (params) => wrapCoreResult(
508
+ await nexusProjectsFleet(getProjectRoot(), {
509
+ device: typeof params.device === "string" ? params.device : void 0,
510
+ missing: params.missing === true,
511
+ dirty: params.dirty === true,
512
+ behind: params.behind === true,
513
+ ahead: params.ahead === true,
514
+ stale: params.stale === true,
515
+ errored: params.errored === true,
516
+ staleAfterMs: typeof params.staleAfterMs === "number" ? params.staleAfterMs : void 0,
517
+ limit: typeof params.limit === "number" ? params.limit : void 0,
518
+ offset: typeof params.offset === "number" ? params.offset : void 0
519
+ }),
520
+ "projects.fleet"
521
+ ),
522
+ "refresh-bridge": async (params) => {
523
+ const projectRoot = getProjectRoot();
524
+ const repoPath = params.repoPath ?? projectRoot;
525
+ const projectId = params.projectId;
526
+ return wrapCoreResult(await nexusRefreshBridge(repoPath, projectId), "refresh-bridge");
527
+ },
528
+ diff: async (params) => {
529
+ const projectRoot = getProjectRoot();
530
+ const repoPath = params.repoPath ?? projectRoot;
531
+ return wrapCoreResult(
532
+ await nexusDiff(
533
+ repoPath,
534
+ params.beforeRef,
535
+ params.afterRef,
536
+ params.projectId
537
+ ),
538
+ "diff"
539
+ );
540
+ },
541
+ "query-cte": async (params) => {
542
+ if (!params.cte) return lafsError("E_INVALID_INPUT", "cte is required", "query-cte");
543
+ return wrapCoreResult(
544
+ await nexusQueryCte(params.cte, params.params),
545
+ "query-cte"
546
+ );
547
+ },
548
+ "hot-paths": async (params) => {
549
+ const projectRoot = getProjectRoot();
550
+ const limit = typeof params.limit === "number" ? params.limit : 20;
551
+ return wrapCoreResult(await nexusHotPaths(projectRoot, limit), "hot-paths");
552
+ },
553
+ "hot-nodes": async (params) => {
554
+ const projectRoot = getProjectRoot();
555
+ const limit = typeof params.limit === "number" ? params.limit : 20;
556
+ return wrapCoreResult(await nexusHotNodes(projectRoot, limit), "hot-nodes");
557
+ },
558
+ "cold-symbols": async (params) => {
559
+ const projectRoot = getProjectRoot();
560
+ const days = typeof params.days === "number" ? params.days : 30;
561
+ return wrapCoreResult(await nexusColdSymbols(projectRoot, days), "cold-symbols");
562
+ },
563
+ // -------------------------------------------------------------------------
564
+ // Mutate ops (18)
565
+ // -------------------------------------------------------------------------
566
+ init: async (_params) => wrapCoreResult(await nexusInitialize(), "init"),
567
+ register: async (params) => {
568
+ if (!params.path) return lafsError("E_INVALID_INPUT", "path is required", "register");
569
+ return wrapCoreResult(
570
+ await nexusRegisterProject(params.path, params.name, params.permission ?? "read"),
571
+ "register"
572
+ );
573
+ },
574
+ unregister: async (params) => {
575
+ if (!params.name) return lafsError("E_INVALID_INPUT", "name is required", "unregister");
576
+ return wrapCoreResult(await nexusUnregisterProject(params.name), "unregister");
577
+ },
578
+ sync: async (params) => wrapCoreResult(await nexusSyncProject(params.name), "sync"),
579
+ "permission.set": async (params) => {
580
+ if (!params.name) return lafsError("E_INVALID_INPUT", "name is required", "permission.set");
581
+ if (!params.level) return lafsError("E_INVALID_INPUT", "level is required", "permission.set");
582
+ if (!["read", "write", "execute"].includes(params.level)) {
583
+ return lafsError(
584
+ "E_INVALID_INPUT",
585
+ `Invalid permission level: ${params.level}. Must be: read, write, or execute`,
586
+ "permission.set"
587
+ );
588
+ }
589
+ return wrapCoreResult(
590
+ await nexusSetPermission(params.name, params.level),
591
+ "permission.set"
592
+ );
593
+ },
594
+ reconcile: async (params) => wrapCoreResult(
595
+ await nexusReconcileProject(params.projectRoot ?? getProjectRoot(), {
596
+ forceRebind: params.forceRebind === true
597
+ }),
598
+ "reconcile"
599
+ ),
600
+ "share.snapshot.export": async (params) => {
601
+ const projectRoot = getProjectRoot();
602
+ return wrapCoreResult(
603
+ await nexusShareSnapshotExport(projectRoot, params.outputPath),
604
+ "share.snapshot.export"
605
+ );
606
+ },
607
+ "share.snapshot.import": async (params) => {
608
+ if (!params.inputPath)
609
+ return lafsError("E_INVALID_INPUT", "inputPath is required", "share.snapshot.import");
610
+ const projectRoot = getProjectRoot();
611
+ return wrapCoreResult(
612
+ await nexusShareSnapshotImport(projectRoot, params.inputPath),
613
+ "share.snapshot.import"
614
+ );
615
+ },
616
+ transfer: async (params) => {
617
+ if (!params.taskIds?.length || !params.sourceProject || !params.targetProject) {
618
+ return lafsError(
619
+ "E_INVALID_INPUT",
620
+ "taskIds, sourceProject, and targetProject are required",
621
+ "transfer"
622
+ );
623
+ }
624
+ return wrapCoreResult(
625
+ await nexusTransferExecute({
626
+ taskIds: params.taskIds,
627
+ sourceProject: params.sourceProject,
628
+ targetProject: params.targetProject,
629
+ mode: params.mode ?? "copy",
630
+ scope: params.scope ?? "subtree",
631
+ onConflict: params.onConflict ?? "rename",
632
+ transferBrain: params.transferBrain ?? false
633
+ }),
634
+ "transfer"
635
+ );
636
+ },
637
+ "contracts-sync": async (params) => {
638
+ const projectRoot = getProjectRoot();
639
+ const repoPath = params.repoPath ?? projectRoot;
640
+ const projectId = await resolveNexusQueryProjectId(repoPath, params.projectId);
641
+ return wrapCoreResult(await nexusContractsSync(projectId, repoPath), "contracts-sync");
642
+ },
643
+ "contracts-link-tasks": async (params) => {
644
+ const projectRoot = getProjectRoot();
645
+ const repoPath = params.repoPath ?? projectRoot;
646
+ const projectId = await resolveNexusQueryProjectId(repoPath, params.projectId);
647
+ return wrapCoreResult(
648
+ await nexusContractsLinkTasks(projectId, repoPath),
649
+ "contracts-link-tasks"
650
+ );
651
+ },
652
+ "conduit-scan": async (_params) => {
653
+ const projectRoot = getProjectRoot();
654
+ return wrapCoreResult(await nexusConduitScan(projectRoot), "conduit-scan");
655
+ },
656
+ "profile.import": async (params) => wrapCoreResult(await nexusProfileImport(params.path), "profile.import"),
657
+ "profile.export": async (params) => wrapCoreResult(await nexusProfileExport(params.path), "profile.export"),
658
+ "profile.reinforce": async (params) => {
659
+ if (!params.traitKey)
660
+ return lafsError("E_INVALID_INPUT", "traitKey is required", "profile.reinforce");
661
+ return wrapCoreResult(
662
+ await nexusProfileReinforce(params.traitKey, params.source),
663
+ "profile.reinforce"
664
+ );
665
+ },
666
+ "profile.upsert": async (params) => {
667
+ if (!params.trait?.traitKey || !params.trait?.traitValue) {
668
+ return lafsError(
669
+ "E_INVALID_INPUT",
670
+ "trait.traitKey and trait.traitValue are required",
671
+ "profile.upsert"
672
+ );
673
+ }
674
+ return wrapCoreResult(await nexusProfileUpsert(params.trait), "profile.upsert");
675
+ },
676
+ "profile.supersede": async (params) => {
677
+ if (!params.oldKey || !params.newKey)
678
+ return lafsError("E_INVALID_INPUT", "oldKey and newKey are required", "profile.supersede");
679
+ return wrapCoreResult(
680
+ await nexusProfileSupersede(params.oldKey, params.newKey),
681
+ "profile.supersede"
682
+ );
683
+ },
684
+ "sigil.sync": async (_params) => wrapCoreResult(await nexusSigilSync(), "sigil.sync")
685
+ });
686
+ var QUERY_OPS = /* @__PURE__ */ new Set([
687
+ "share.status",
688
+ "status",
689
+ "list",
690
+ "show",
691
+ "resolve",
692
+ "deps",
693
+ "graph",
694
+ "path.show",
695
+ "blockers.show",
696
+ "orphans.list",
697
+ "discover",
698
+ "search",
699
+ "augment",
700
+ "transfer.preview",
701
+ "top-entries",
702
+ "impact",
703
+ "full-context",
704
+ "task-footprint",
705
+ "brain-anchors",
706
+ "why",
707
+ "impact-full",
708
+ "route-map",
709
+ "shape-check",
710
+ "search-code",
711
+ "wiki",
712
+ "contracts-show",
713
+ "task-symbols",
714
+ "profile.view",
715
+ "profile.get",
716
+ "sigil.list",
717
+ // T1510 — Phase 2 query ops
718
+ "clusters",
719
+ "flows",
720
+ "context",
721
+ "projects.list",
722
+ "projects.fleet",
723
+ "diff",
724
+ "query-cte",
725
+ "hot-paths",
726
+ "hot-nodes",
727
+ "cold-symbols"
728
+ ]);
729
+ var MUTATE_OPS = /* @__PURE__ */ new Set([
730
+ "share.snapshot.export",
731
+ "share.snapshot.import",
732
+ "init",
733
+ "register",
734
+ "unregister",
735
+ "sync",
736
+ "permission.set",
737
+ "reconcile",
738
+ "transfer",
739
+ "contracts-sync",
740
+ "contracts-link-tasks",
741
+ "conduit-scan",
742
+ "profile.import",
743
+ "profile.export",
744
+ "profile.reinforce",
745
+ "profile.upsert",
746
+ "profile.supersede",
747
+ "sigil.sync",
748
+ // T1510 — Phase 2 mutate ops
749
+ "projects.register",
750
+ "projects.remove",
751
+ "projects.scan",
752
+ "projects.clean",
753
+ "projects.status",
754
+ "refresh-bridge"
755
+ ]);
756
+ function nexusQueryEnvelopeToResponse(envelope, operation, startTime) {
757
+ const env = envelope;
758
+ let pageMetadata = env.page;
759
+ let resultData = env.data;
760
+ if (!pageMetadata && env.success && resultData && typeof resultData === "object") {
761
+ const dataObj = resultData;
762
+ if ("page" in dataObj && dataObj.page) {
763
+ pageMetadata = dataObj.page;
764
+ const { page: _removed, ...cleanData } = dataObj;
765
+ resultData = cleanData;
766
+ }
767
+ }
768
+ return wrapResult(
769
+ envelopeToEngineResult({
770
+ success: env.success,
771
+ data: resultData,
772
+ page: pageMetadata,
773
+ error: env.error
774
+ }),
775
+ "query",
776
+ "nexus",
777
+ operation,
778
+ startTime
779
+ );
780
+ }
781
+ function nexusMutateEnvelopeToResponse(envelope, operation, startTime) {
782
+ const env = envelope;
783
+ return wrapResult(
784
+ envelopeToEngineResult({
785
+ success: env.success,
786
+ data: env.data,
787
+ error: env.error
788
+ }),
789
+ "mutate",
790
+ "nexus",
791
+ operation,
792
+ startTime
793
+ );
794
+ }
795
+ var FRESHNESS_EXEMPT_OPS = /* @__PURE__ */ new Set(["diff"]);
796
+ function isScopeMapOp(operation) {
797
+ return operation in NEXUS_SCOPE_MAP;
798
+ }
799
+ function answersFromGraph(operation) {
800
+ if (FRESHNESS_EXEMPT_OPS.has(operation) || !isScopeMapOp(operation)) return false;
801
+ return getNexusDescriptor(operation).indexSensitive === true;
802
+ }
803
+ function withFreshness(response, operation, assessment) {
804
+ const freshness = judgeSymbolFiles(assessment, querySymbolFiles(response.data));
805
+ discloseNexusFreshness(`nexus ${operation}`, freshness);
806
+ return {
807
+ ...response,
808
+ meta: { ...response.meta, ...withNexusFreshnessMeta(response.meta, freshness) }
809
+ };
810
+ }
811
+ var NexusHandler = class {
812
+ /**
813
+ * Execute a read-only nexus query operation.
814
+ *
815
+ * @param operation - The nexus query op name (e.g. 'status', 'list').
816
+ * @param params - Raw params from the dispatcher (narrowed internally).
817
+ */
818
+ async query(operation, params) {
819
+ const startTime = Date.now();
820
+ if (!QUERY_OPS.has(operation)) {
821
+ return unsupportedOp("query", "nexus", operation, startTime);
822
+ }
823
+ if (answersFromGraph(operation)) {
824
+ const assessment = await assessNexusFreshnessForQuery(getProjectRoot());
825
+ return withFreshness(await this.answer(operation, params, startTime), operation, assessment);
826
+ }
827
+ return this.answer(operation, params, startTime);
828
+ }
829
+ /** Run one validated query op and stamp its `_nexus` scope metadata. */
830
+ async answer(operation, params, startTime) {
831
+ if (operation === "top-entries") {
832
+ const r = await handleTopEntries(operation, params, startTime);
833
+ return stampNexusMeta(r, operation, params ?? {});
834
+ }
835
+ if (operation === "impact") {
836
+ const r = await handleImpact(operation, params, startTime);
837
+ return stampNexusMeta(r, operation, params ?? {});
838
+ }
839
+ try {
840
+ const envelope = await typedDispatch(
841
+ _nexusTypedHandler,
842
+ operation,
843
+ params ?? {}
844
+ );
845
+ const response = nexusQueryEnvelopeToResponse(envelope, operation, startTime);
846
+ return stampNexusMeta(response, operation, params ?? {});
847
+ } catch (error) {
848
+ getLogger("domain:nexus").error(
849
+ { gateway: "query", domain: "nexus", operation, err: error },
850
+ error instanceof Error ? error.message : String(error)
851
+ );
852
+ return handleErrorResult("query", "nexus", operation, error, startTime);
853
+ }
854
+ }
855
+ /**
856
+ * Execute a state-modifying nexus mutation operation.
857
+ *
858
+ * @param operation - The nexus mutate op name (e.g. 'init', 'register').
859
+ * @param params - Raw params from the dispatcher (narrowed internally).
860
+ */
861
+ async mutate(operation, params) {
862
+ const startTime = Date.now();
863
+ if (!MUTATE_OPS.has(operation)) {
864
+ return unsupportedOp("mutate", "nexus", operation, startTime);
865
+ }
866
+ try {
867
+ const envelope = await typedDispatch(
868
+ _nexusTypedHandler,
869
+ operation,
870
+ params ?? {}
871
+ );
872
+ const response = nexusMutateEnvelopeToResponse(envelope, operation, startTime);
873
+ return stampNexusMeta(response, operation, params ?? {});
874
+ } catch (error) {
875
+ getLogger("domain:nexus").error(
876
+ { gateway: "mutate", domain: "nexus", operation, err: error },
877
+ error instanceof Error ? error.message : String(error)
878
+ );
879
+ return handleErrorResult("mutate", "nexus", operation, error, startTime);
880
+ }
881
+ }
882
+ /** Declared operations for introspection and validation. */
883
+ getSupportedOperations() {
884
+ return {
885
+ query: Array.from(QUERY_OPS),
886
+ mutate: Array.from(MUTATE_OPS)
887
+ };
888
+ }
889
+ };
890
+ async function handleTopEntries(operation, params, startTime) {
891
+ const rawLimit = params?.limit;
892
+ const limit = typeof rawLimit === "number" && Number.isFinite(rawLimit) && rawLimit > 0 ? Math.floor(rawLimit) : 20;
893
+ const brainDb = getBrainNativeDb();
894
+ if (brainDb !== null && brainDb !== void 0) {
895
+ return handleTopEntriesFromBrain(
896
+ operation,
897
+ params,
898
+ startTime,
899
+ brainDb,
900
+ limit
901
+ );
902
+ }
903
+ try {
904
+ const nexusDb = getNexusNativeDb();
905
+ if (!nexusDb) {
906
+ const emptyData = {
907
+ entries: [],
908
+ count: 0,
909
+ limit,
910
+ kind: params?.kind ?? null,
911
+ note: 'Neither brain.db nor nexus.db is available. Run "cleo nexus init" to initialize.'
912
+ };
913
+ return wrapResult({ success: true, data: emptyData }, "query", "nexus", operation, startTime);
914
+ }
915
+ return handleTopEntriesFromNexus(
916
+ operation,
917
+ params,
918
+ startTime,
919
+ nexusDb,
920
+ limit
921
+ );
922
+ } catch (dbErr) {
923
+ return handleErrorResult("query", "nexus", operation, dbErr, startTime);
924
+ }
925
+ }
926
+ function handleTopEntriesFromBrain(operation, params, startTime, db, limit) {
927
+ const rawNodeType = params?.nodeType;
928
+ const nodeType = typeof rawNodeType === "string" && rawNodeType.length > 0 ? rawNodeType : null;
929
+ let rows = [];
930
+ try {
931
+ const sql = nodeType === null ? `SELECT id, node_type, label, quality_score, last_activity_at, metadata_json
932
+ FROM brain_page_nodes
933
+ ORDER BY quality_score DESC
934
+ LIMIT ?` : `SELECT id, node_type, label, quality_score, last_activity_at, metadata_json
935
+ FROM brain_page_nodes
936
+ WHERE node_type = ?
937
+ ORDER BY quality_score DESC
938
+ LIMIT ?`;
939
+ const bindArgs = nodeType === null ? [limit] : [nodeType, limit];
940
+ const rawRows = db.prepare(sql).all(...bindArgs);
941
+ rows = rawRows.map((raw) => {
942
+ const r = raw;
943
+ return {
944
+ id: String(r["id"] ?? ""),
945
+ node_type: r["node_type"] != null ? String(r["node_type"]) : null,
946
+ label: r["label"] != null ? String(r["label"]) : null,
947
+ quality_score: r["quality_score"] != null ? Number(r["quality_score"]) : null,
948
+ last_activity_at: r["last_activity_at"] != null ? String(r["last_activity_at"]) : null,
949
+ metadata_json: r["metadata_json"] != null ? String(r["metadata_json"]) : null
950
+ };
951
+ });
952
+ } catch {
953
+ rows = [];
954
+ }
955
+ const entries = rows.map((r) => ({
956
+ id: r.id,
957
+ node_type: r.node_type ?? "unknown",
958
+ label: r.label ?? r.id,
959
+ quality_score: r.quality_score ?? 0,
960
+ last_activity_at: r.last_activity_at ?? "",
961
+ metadata_json: r.metadata_json ?? null
962
+ }));
963
+ const data = {
964
+ entries,
965
+ count: entries.length,
966
+ limit,
967
+ nodeType
968
+ };
969
+ return wrapResult({ success: true, data }, "query", "nexus", operation, startTime);
970
+ }
971
+ function handleTopEntriesFromNexus(operation, params, startTime, db, limit) {
972
+ const rawKind = params?.kind;
973
+ const kind = typeof rawKind === "string" && rawKind.length > 0 ? rawKind : null;
974
+ let rows = [];
975
+ try {
976
+ const sql = kind === null ? `SELECT r.source_id,
977
+ SUM(COALESCE(w.weight, 0)) AS totalWeight,
978
+ COUNT(*) AS edgeCount,
979
+ n.label,
980
+ n.kind,
981
+ n.file_path
982
+ FROM nexus_relations r
983
+ LEFT JOIN nexus_relation_weights w ON w.relation_id = r.id
984
+ LEFT JOIN nexus_nodes n ON n.id = r.source_id
985
+ GROUP BY r.source_id
986
+ ORDER BY totalWeight DESC, edgeCount DESC
987
+ LIMIT ?` : `SELECT r.source_id,
988
+ SUM(COALESCE(w.weight, 0)) AS totalWeight,
989
+ COUNT(*) AS edgeCount,
990
+ n.label,
991
+ n.kind,
992
+ n.file_path
993
+ FROM nexus_relations r
994
+ LEFT JOIN nexus_relation_weights w ON w.relation_id = r.id
995
+ LEFT JOIN nexus_nodes n ON n.id = r.source_id
996
+ WHERE n.kind = ?
997
+ GROUP BY r.source_id
998
+ ORDER BY totalWeight DESC, edgeCount DESC
999
+ LIMIT ?`;
1000
+ const bindArgs = kind === null ? [limit] : [kind, limit];
1001
+ const rawRows = db.prepare(sql).all(...bindArgs);
1002
+ rows = rawRows.map((raw) => {
1003
+ const r = raw;
1004
+ return {
1005
+ source_id: String(r["source_id"] ?? ""),
1006
+ totalWeight: Number(r["totalWeight"] ?? 0),
1007
+ edgeCount: Number(r["edgeCount"] ?? 0),
1008
+ label: r["label"] != null ? String(r["label"]) : null,
1009
+ kind: r["kind"] != null ? String(r["kind"]) : null,
1010
+ file_path: r["file_path"] != null ? String(r["file_path"]) : null
1011
+ };
1012
+ });
1013
+ } catch {
1014
+ rows = [];
1015
+ }
1016
+ const entries = rows.map((r) => ({
1017
+ nodeId: r.source_id,
1018
+ label: r.label ?? r.source_id,
1019
+ kind: r.kind ?? "unknown",
1020
+ filePath: r.file_path ?? null,
1021
+ totalWeight: r.totalWeight,
1022
+ edgeCount: r.edgeCount
1023
+ }));
1024
+ const allZero = entries.length === 0 || entries.every((e) => e.totalWeight === 0);
1025
+ const note = allZero ? "No Hebbian weights accumulated yet. Run a dream cycle or wait for plasticity updates." : void 0;
1026
+ const data = {
1027
+ entries,
1028
+ count: entries.length,
1029
+ limit,
1030
+ kind,
1031
+ ...note !== void 0 ? { note } : {}
1032
+ };
1033
+ return wrapResult({ success: true, data }, "query", "nexus", operation, startTime);
1034
+ }
1035
+ async function handleImpact(operation, params, startTime) {
1036
+ if (typeof params?.symbol !== "string" || !params.symbol) {
1037
+ return errorResult(
1038
+ "query",
1039
+ "nexus",
1040
+ operation,
1041
+ "E_INVALID_INPUT",
1042
+ "symbol is required",
1043
+ startTime
1044
+ );
1045
+ }
1046
+ const projectId = typeof params.projectId === "string" ? params.projectId : void 0;
1047
+ const depth = typeof params.depth === "number" ? params.depth : void 0;
1048
+ const result = await nexusImpact(getProjectRoot(), {
1049
+ symbol: params.symbol,
1050
+ projectId,
1051
+ why: params.why === true,
1052
+ depth
1053
+ });
1054
+ return wrapResult(result, "query", "nexus", operation, startTime);
1055
+ }
1056
+ export {
1057
+ NexusHandler
1058
+ };
1059
+ //# sourceMappingURL=nexus-FPQV2EAF.js.map