prjct-cli 3.96.0 → 3.97.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (503) hide show
  1. package/CHANGELOG.md +5 -0
  2. package/bin/prjct.cjs +14 -0
  3. package/dist/bin/core-chunks/agent-HCP5FF77.mjs +31 -0
  4. package/dist/bin/core-chunks/agent-codenames-7N4DU62I.mjs +7 -0
  5. package/dist/bin/core-chunks/agent-identity-4KFRR5OU.mjs +7 -0
  6. package/dist/bin/core-chunks/agent-runtime-registry-3RMVBEV2.mjs +7 -0
  7. package/dist/bin/core-chunks/agent-switch-AVSX6SLY.mjs +7 -0
  8. package/dist/bin/core-chunks/agents-OAQXBGH3.mjs +10 -0
  9. package/dist/bin/core-chunks/ai-provider-RVXK7D7R.mjs +7 -0
  10. package/dist/bin/core-chunks/analysis-3A7ODSSI.mjs +41 -0
  11. package/dist/bin/core-chunks/auth-config-KWLVKHCY.mjs +7 -0
  12. package/dist/bin/core-chunks/auto-flush-EWSVMKQN.mjs +7 -0
  13. package/dist/bin/core-chunks/auto-updater-PKYQRBGQ.mjs +8 -0
  14. package/dist/bin/core-chunks/bin-commands-LLHG2NSY.mjs +21 -0
  15. package/dist/bin/core-chunks/capture-7LQ52T6L.mjs +7 -0
  16. package/dist/bin/core-chunks/capture-gate-M4HM7WAI.mjs +7 -0
  17. package/dist/bin/core-chunks/ceremonies-4OZ3FKRE.mjs +19 -0
  18. package/dist/bin/core-chunks/changelog-CUNVCEL5.mjs +10 -0
  19. package/dist/bin/core-chunks/chunk-225DWS4D.mjs +7 -0
  20. package/dist/bin/core-chunks/chunk-24EN5Y62.mjs +48 -0
  21. package/dist/bin/core-chunks/chunk-2EEMQV7N.mjs +9 -0
  22. package/dist/bin/core-chunks/chunk-2I5PUQWY.mjs +7 -0
  23. package/dist/bin/core-chunks/chunk-2JJM3YMW.mjs +44 -0
  24. package/dist/bin/core-chunks/chunk-2NI4EEK2.mjs +8 -0
  25. package/dist/bin/core-chunks/chunk-2TJRTFIS.mjs +9 -0
  26. package/dist/bin/core-chunks/chunk-2ZPM4Z6W.mjs +17 -0
  27. package/dist/bin/core-chunks/chunk-3FXNIJCS.mjs +8 -0
  28. package/dist/bin/core-chunks/chunk-3JD6KRNJ.mjs +8 -0
  29. package/dist/bin/core-chunks/chunk-3TRXQAU4.mjs +7 -0
  30. package/dist/bin/core-chunks/chunk-3USVY66O.mjs +7 -0
  31. package/dist/bin/core-chunks/chunk-45LKWJ5D.mjs +7 -0
  32. package/dist/bin/core-chunks/chunk-4IE7LRH3.mjs +7 -0
  33. package/dist/bin/core-chunks/chunk-4MR5XSLO.mjs +8 -0
  34. package/dist/bin/core-chunks/chunk-4PPIE6GA.mjs +102 -0
  35. package/dist/bin/core-chunks/chunk-4PRD4EU2.mjs +7 -0
  36. package/dist/bin/core-chunks/chunk-4T7NGLNQ.mjs +16 -0
  37. package/dist/bin/core-chunks/chunk-53ZPEZLU.mjs +8 -0
  38. package/dist/bin/core-chunks/chunk-56FW4P6U.mjs +10 -0
  39. package/dist/bin/core-chunks/chunk-5EF5EOCL.mjs +7 -0
  40. package/dist/bin/core-chunks/chunk-5MN22JFI.mjs +19 -0
  41. package/dist/bin/core-chunks/chunk-5ONMON5L.mjs +13 -0
  42. package/dist/bin/core-chunks/chunk-5UUITMRX.mjs +9 -0
  43. package/dist/bin/core-chunks/chunk-5YLI5V3Q.mjs +8 -0
  44. package/dist/bin/core-chunks/chunk-5YSPND5J.mjs +9 -0
  45. package/dist/bin/core-chunks/chunk-623SNKDH.mjs +7 -0
  46. package/dist/bin/core-chunks/chunk-6AFXUX2M.mjs +9 -0
  47. package/dist/bin/core-chunks/chunk-6FFOWWH2.mjs +17 -0
  48. package/dist/bin/core-chunks/chunk-6FUCOGOW.mjs +7 -0
  49. package/dist/bin/core-chunks/chunk-6OYLZ4NM.mjs +10 -0
  50. package/dist/bin/core-chunks/chunk-6P4GMVUZ.mjs +18 -0
  51. package/dist/bin/core-chunks/chunk-6RT2P22O.mjs +7 -0
  52. package/dist/bin/core-chunks/chunk-6XTLPAPZ.mjs +15 -0
  53. package/dist/bin/core-chunks/chunk-76YMLNLF.mjs +7 -0
  54. package/dist/bin/core-chunks/chunk-7CI4AMVO.mjs +7 -0
  55. package/dist/bin/core-chunks/chunk-7QMBIMEX.mjs +64 -0
  56. package/dist/bin/core-chunks/chunk-7QTE6X4J.mjs +7 -0
  57. package/dist/bin/core-chunks/chunk-7ZHWJSW5.mjs +8 -0
  58. package/dist/bin/core-chunks/chunk-AJTBFIH2.mjs +9 -0
  59. package/dist/bin/core-chunks/chunk-AJXELVNH.mjs +7 -0
  60. package/dist/bin/core-chunks/chunk-ANVCA6LF.mjs +7 -0
  61. package/dist/bin/core-chunks/chunk-AS3LWTQ4.mjs +16 -0
  62. package/dist/bin/core-chunks/chunk-B7AQHL7B.mjs +7 -0
  63. package/dist/bin/core-chunks/chunk-BQKDJ3U6.mjs +8 -0
  64. package/dist/bin/core-chunks/chunk-BSR3XUBD.mjs +24 -0
  65. package/dist/bin/core-chunks/chunk-BTCCUMKI.mjs +12 -0
  66. package/dist/bin/core-chunks/chunk-BTSHD3XJ.mjs +9 -0
  67. package/dist/bin/core-chunks/chunk-C35JQUWD.mjs +8 -0
  68. package/dist/bin/core-chunks/chunk-C7YBUD4K.mjs +10 -0
  69. package/dist/bin/core-chunks/chunk-CDLZLTRY.mjs +10 -0
  70. package/dist/bin/core-chunks/chunk-CEOTHJIY.mjs +10 -0
  71. package/dist/bin/core-chunks/chunk-CFD6CW7T.mjs +46 -0
  72. package/dist/bin/core-chunks/chunk-CKYBGRCF.mjs +8 -0
  73. package/dist/bin/core-chunks/chunk-CNWEQUB7.mjs +7 -0
  74. package/dist/bin/core-chunks/chunk-CUIB6CTG.mjs +20 -0
  75. package/dist/bin/core-chunks/chunk-CWLGRKA7.mjs +6 -0
  76. package/dist/bin/core-chunks/chunk-CXNVDJNN.mjs +7 -0
  77. package/dist/bin/core-chunks/chunk-D62TAZG6.mjs +9 -0
  78. package/dist/bin/core-chunks/chunk-DCVPNFS4.mjs +8 -0
  79. package/dist/bin/core-chunks/chunk-DEYAQEF5.mjs +7 -0
  80. package/dist/bin/core-chunks/chunk-DIEPWXJJ.mjs +7 -0
  81. package/dist/bin/core-chunks/chunk-DMO3ZFUG.mjs +1259 -0
  82. package/dist/bin/core-chunks/chunk-DN46DLU3.mjs +10 -0
  83. package/dist/bin/core-chunks/chunk-DOJPSIMG.mjs +7 -0
  84. package/dist/bin/core-chunks/chunk-DZVOFEM5.mjs +7 -0
  85. package/dist/bin/core-chunks/chunk-E5QQDYBR.mjs +7 -0
  86. package/dist/bin/core-chunks/chunk-E73HSXCX.mjs +7 -0
  87. package/dist/bin/core-chunks/chunk-EFSPBB4S.mjs +8 -0
  88. package/dist/bin/core-chunks/chunk-EHVU2SMR.mjs +34 -0
  89. package/dist/bin/core-chunks/chunk-ESB4ALH2.mjs +7 -0
  90. package/dist/bin/core-chunks/chunk-EZRNQXCC.mjs +7 -0
  91. package/dist/bin/core-chunks/chunk-F2FKQUYE.mjs +19 -0
  92. package/dist/bin/core-chunks/chunk-F7OOBAJO.mjs +30 -0
  93. package/dist/bin/core-chunks/chunk-FATYLG3L.mjs +14 -0
  94. package/dist/bin/core-chunks/chunk-FOWTB762.mjs +7 -0
  95. package/dist/bin/core-chunks/chunk-GDLAQV3Q.mjs +14 -0
  96. package/dist/bin/core-chunks/chunk-GGGDYL4P.mjs +7 -0
  97. package/dist/bin/core-chunks/chunk-GHSRH4GL.mjs +8 -0
  98. package/dist/bin/core-chunks/chunk-GOIBJ7PV.mjs +7 -0
  99. package/dist/bin/core-chunks/chunk-GSNQKBHZ.mjs +11 -0
  100. package/dist/bin/core-chunks/chunk-GTG67Z45.mjs +11 -0
  101. package/dist/bin/core-chunks/chunk-H2KNJUPN.mjs +23 -0
  102. package/dist/bin/core-chunks/chunk-HCPQZRR3.mjs +7 -0
  103. package/dist/bin/core-chunks/chunk-HEXSVBUP.mjs +8 -0
  104. package/dist/bin/core-chunks/chunk-HPCSSJXH.mjs +7 -0
  105. package/dist/bin/core-chunks/chunk-HU5ERAAV.mjs +8 -0
  106. package/dist/bin/core-chunks/chunk-HYIT7MF5.mjs +8 -0
  107. package/dist/bin/core-chunks/chunk-HYMJVHAX.mjs +13 -0
  108. package/dist/bin/core-chunks/chunk-ID2C2S33.mjs +18 -0
  109. package/dist/bin/core-chunks/chunk-ID5KE74L.mjs +7 -0
  110. package/dist/bin/core-chunks/chunk-IFLBZKKK.mjs +14 -0
  111. package/dist/bin/core-chunks/chunk-IMQCXC3R.mjs +30 -0
  112. package/dist/bin/core-chunks/chunk-INJ5WT2D.mjs +7 -0
  113. package/dist/bin/core-chunks/chunk-INM5COWM.mjs +7 -0
  114. package/dist/bin/core-chunks/chunk-IOFCSTGM.mjs +7 -0
  115. package/dist/bin/core-chunks/chunk-IVGWOY3U.mjs +8 -0
  116. package/dist/bin/core-chunks/chunk-J7T5IEFJ.mjs +15 -0
  117. package/dist/bin/core-chunks/chunk-JCWA7NLM.mjs +7 -0
  118. package/dist/bin/core-chunks/chunk-JPMUJY42.mjs +7 -0
  119. package/dist/bin/core-chunks/chunk-JT4RNQ67.mjs +15 -0
  120. package/dist/bin/core-chunks/chunk-K25HGTC3.mjs +10 -0
  121. package/dist/bin/core-chunks/chunk-KIRU4QFX.mjs +7 -0
  122. package/dist/bin/core-chunks/chunk-KKIJAEYU.mjs +7 -0
  123. package/dist/bin/core-chunks/chunk-KPR5TWSN.mjs +7 -0
  124. package/dist/bin/core-chunks/chunk-KUQLXY2P.mjs +11 -0
  125. package/dist/bin/core-chunks/chunk-KWC2PCPC.mjs +10 -0
  126. package/dist/bin/core-chunks/chunk-L4TUXFCL.mjs +7 -0
  127. package/dist/bin/core-chunks/chunk-L5LFLI4R.mjs +7 -0
  128. package/dist/bin/core-chunks/chunk-LZC6NGB6.mjs +50 -0
  129. package/dist/bin/core-chunks/chunk-MCY7OXED.mjs +10 -0
  130. package/dist/bin/core-chunks/chunk-MDONTD7O.mjs +21 -0
  131. package/dist/bin/core-chunks/chunk-MG3YN3AI.mjs +7 -0
  132. package/dist/bin/core-chunks/chunk-MR5XXHRK.mjs +8 -0
  133. package/dist/bin/core-chunks/chunk-MTDCRYLP.mjs +7 -0
  134. package/dist/bin/core-chunks/chunk-MXJKULJY.mjs +9 -0
  135. package/dist/bin/core-chunks/chunk-NINFE7GS.mjs +9 -0
  136. package/dist/bin/core-chunks/chunk-NNOX3UU4.mjs +7 -0
  137. package/dist/bin/core-chunks/chunk-NOHSLOLL.mjs +7 -0
  138. package/dist/bin/core-chunks/chunk-NXUIMC22.mjs +13 -0
  139. package/dist/bin/core-chunks/chunk-NZKUCQZK.mjs +8 -0
  140. package/dist/bin/core-chunks/chunk-O5N6XYPU.mjs +8 -0
  141. package/dist/bin/core-chunks/chunk-OIE3AKKO.mjs +7 -0
  142. package/dist/bin/core-chunks/chunk-OYXQRBVM.mjs +10 -0
  143. package/dist/bin/core-chunks/chunk-P2KU4FFA.mjs +11 -0
  144. package/dist/bin/core-chunks/chunk-P53YMOKR.mjs +7 -0
  145. package/dist/bin/core-chunks/chunk-PIA26GWG.mjs +7 -0
  146. package/dist/bin/core-chunks/chunk-PPERWRFS.mjs +13 -0
  147. package/dist/bin/core-chunks/chunk-PPSVWUXC.mjs +15 -0
  148. package/dist/bin/core-chunks/chunk-PWL3KS7Y.mjs +7 -0
  149. package/dist/bin/core-chunks/chunk-Q3LUL6LL.mjs +7 -0
  150. package/dist/bin/core-chunks/chunk-Q6C27OL7.mjs +7 -0
  151. package/dist/bin/core-chunks/chunk-QAIEAOJF.mjs +7 -0
  152. package/dist/bin/core-chunks/chunk-QLMZW4K7.mjs +7 -0
  153. package/dist/bin/core-chunks/chunk-QZ7T2EYR.mjs +25 -0
  154. package/dist/bin/core-chunks/chunk-R7LLMJDP.mjs +7 -0
  155. package/dist/bin/core-chunks/chunk-RACISWUV.mjs +10 -0
  156. package/dist/bin/core-chunks/chunk-RCIWCKL7.mjs +9 -0
  157. package/dist/bin/core-chunks/chunk-ROOCBUKH.mjs +8 -0
  158. package/dist/bin/core-chunks/chunk-RP7F67ZT.mjs +7 -0
  159. package/dist/bin/core-chunks/chunk-RXXXA7Z6.mjs +7 -0
  160. package/dist/bin/core-chunks/chunk-RXZJB43D.mjs +7 -0
  161. package/dist/bin/core-chunks/chunk-S6FBPXQL.mjs +9 -0
  162. package/dist/bin/core-chunks/chunk-SLYLGDX7.mjs +8 -0
  163. package/dist/bin/core-chunks/chunk-SO3ZPNWT.mjs +7 -0
  164. package/dist/bin/core-chunks/chunk-SRJEX6XF.mjs +12 -0
  165. package/dist/bin/core-chunks/chunk-SROBBOJB.mjs +11 -0
  166. package/dist/bin/core-chunks/chunk-TDTPDVUM.mjs +8 -0
  167. package/dist/bin/core-chunks/chunk-TGNZI4KF.mjs +28 -0
  168. package/dist/bin/core-chunks/chunk-TIBYHZFA.mjs +8 -0
  169. package/dist/bin/core-chunks/chunk-TILUQF6L.mjs +8 -0
  170. package/dist/bin/core-chunks/chunk-TTN2CFZC.mjs +7 -0
  171. package/dist/bin/core-chunks/chunk-U24YKPYX.mjs +7 -0
  172. package/dist/bin/core-chunks/chunk-U55OPVYR.mjs +9 -0
  173. package/dist/bin/core-chunks/chunk-UE3XKXWM.mjs +7 -0
  174. package/dist/bin/core-chunks/chunk-UHXV7MDW.mjs +12 -0
  175. package/dist/bin/core-chunks/chunk-UNNY2IWZ.mjs +9 -0
  176. package/dist/bin/core-chunks/chunk-UT425KVX.mjs +10 -0
  177. package/dist/bin/core-chunks/chunk-UYMZ3NAF.mjs +8 -0
  178. package/dist/bin/core-chunks/chunk-V3Y3G2DE.mjs +8 -0
  179. package/dist/bin/core-chunks/chunk-V5VCXMKO.mjs +52 -0
  180. package/dist/bin/core-chunks/chunk-V6L5PLD7.mjs +18 -0
  181. package/dist/bin/core-chunks/chunk-V7R3L54M.mjs +7 -0
  182. package/dist/bin/core-chunks/chunk-V7VA4EQX.mjs +7 -0
  183. package/dist/bin/core-chunks/chunk-VCSESVZ4.mjs +9 -0
  184. package/dist/bin/core-chunks/chunk-VCYVYFWE.mjs +9 -0
  185. package/dist/bin/core-chunks/chunk-VDXTMAMO.mjs +7 -0
  186. package/dist/bin/core-chunks/chunk-VILH3VYH.mjs +103 -0
  187. package/dist/bin/core-chunks/chunk-VRFYDYQY.mjs +7 -0
  188. package/dist/bin/core-chunks/chunk-VWFVSNQT.mjs +7 -0
  189. package/dist/bin/core-chunks/chunk-WGDE3L33.mjs +7 -0
  190. package/dist/bin/core-chunks/chunk-WP5IU4W4.mjs +7 -0
  191. package/dist/bin/core-chunks/chunk-WSVMQYYU.mjs +12 -0
  192. package/dist/bin/core-chunks/chunk-WTDUJB4I.mjs +8 -0
  193. package/dist/bin/core-chunks/chunk-WZXUFSVT.mjs +25 -0
  194. package/dist/bin/core-chunks/chunk-X35YYOFE.mjs +18 -0
  195. package/dist/bin/core-chunks/chunk-X4FR5S7E.mjs +9 -0
  196. package/dist/bin/core-chunks/chunk-XC6YAP36.mjs +7 -0
  197. package/dist/bin/core-chunks/chunk-XLFEWZRA.mjs +7 -0
  198. package/dist/bin/core-chunks/chunk-XPRLQIVQ.mjs +7 -0
  199. package/dist/bin/core-chunks/chunk-XSZG3CBO.mjs +7 -0
  200. package/dist/bin/core-chunks/chunk-XU3BQPBU.mjs +7 -0
  201. package/dist/bin/core-chunks/chunk-XYDLXF5A.mjs +8 -0
  202. package/dist/bin/core-chunks/chunk-Y5SEUYET.mjs +7 -0
  203. package/dist/bin/core-chunks/chunk-Y7XOKG4O.mjs +7 -0
  204. package/dist/bin/core-chunks/chunk-YEALP3WX.mjs +7 -0
  205. package/dist/bin/core-chunks/chunk-YJOC2JJK.mjs +12 -0
  206. package/dist/bin/core-chunks/chunk-YLYAYRSJ.mjs +8 -0
  207. package/dist/bin/core-chunks/chunk-YOGI4WE6.mjs +8 -0
  208. package/dist/bin/core-chunks/chunk-YQ6HM3YO.mjs +10 -0
  209. package/dist/bin/core-chunks/chunk-YZEO5DZA.mjs +7 -0
  210. package/dist/bin/core-chunks/chunk-ZBBNCCGV.mjs +12 -0
  211. package/dist/bin/core-chunks/chunk-ZHTYSYZC.mjs +7 -0
  212. package/dist/bin/core-chunks/chunk-ZK7BMUMR.mjs +7 -0
  213. package/dist/bin/core-chunks/chunk-ZKJZDOPT.mjs +14 -0
  214. package/dist/bin/core-chunks/chunk-ZQHSJ6FF.mjs +20 -0
  215. package/dist/bin/core-chunks/chunk-ZS7XJUPE.mjs +7 -0
  216. package/dist/bin/core-chunks/chunk-ZXTJLMVZ.mjs +7 -0
  217. package/dist/bin/core-chunks/cleanup-installs-WHXUGAHM.mjs +7 -0
  218. package/dist/bin/core-chunks/client-D43KKUYH.mjs +8 -0
  219. package/dist/bin/core-chunks/closest-command-YYNABM7V.mjs +7 -0
  220. package/dist/bin/core-chunks/cloud-FFUJZLDV.mjs +14 -0
  221. package/dist/bin/core-chunks/code-SU7GCPH6.mjs +12 -0
  222. package/dist/bin/core-chunks/code-graph-cloud-G3WQBICY.mjs +7 -0
  223. package/dist/bin/core-chunks/codex-hooks-GOLMCL2Q.mjs +7 -0
  224. package/dist/bin/core-chunks/codex-mcp-K4X2UIQF.mjs +7 -0
  225. package/dist/bin/core-chunks/codex-skill-3HNVU4T4.mjs +7 -0
  226. package/dist/bin/core-chunks/command-installer-XIQK2G6W.mjs +7 -0
  227. package/dist/bin/core-chunks/config-W3RHV3GK.mjs +8 -0
  228. package/dist/bin/core-chunks/config-manager-QVFHXIKI.mjs +7 -0
  229. package/dist/bin/core-chunks/content-bound-stamp-2PJNI4JC.mjs +7 -0
  230. package/dist/bin/core-chunks/context-4KGTUAC4.mjs +38 -0
  231. package/dist/bin/core-chunks/context-DDHC7VIC.mjs +10 -0
  232. package/dist/bin/core-chunks/context-checkpoint-4CEUPEVG.mjs +27 -0
  233. package/dist/bin/core-chunks/context-pressure-5URQVNBC.mjs +7 -0
  234. package/dist/bin/core-chunks/context-tiers-4S6H22NP.mjs +7 -0
  235. package/dist/bin/core-chunks/context7-service-AZWDYK5Z.mjs +7 -0
  236. package/dist/bin/core-chunks/core-PR5WEQCS.mjs +70 -0
  237. package/dist/bin/core-chunks/crew-JQCG6NS3.mjs +24 -0
  238. package/dist/bin/core-chunks/cursor-hooks-DGDJVAI6.mjs +7 -0
  239. package/dist/bin/core-chunks/custom-workflow-storage-EBEIG54R.mjs +7 -0
  240. package/dist/bin/core-chunks/cwd-changed-ODKZVSPB.mjs +7 -0
  241. package/dist/bin/core-chunks/cycle-budget-card-H37XRAIX.mjs +7 -0
  242. package/dist/bin/core-chunks/daemon-2NQTBFVR.mjs +13 -0
  243. package/dist/bin/core-chunks/database-UU2ZXSD4.mjs +7 -0
  244. package/dist/bin/core-chunks/delivery-geometry-GSJ6LXUC.mjs +7 -0
  245. package/dist/bin/core-chunks/detect-changes-2YIEX7AY.mjs +7 -0
  246. package/dist/bin/core-chunks/detection-KKDZYWVD.mjs +7 -0
  247. package/dist/bin/core-chunks/developer-evolution-AVAXGDKQ.mjs +11 -0
  248. package/dist/bin/core-chunks/developer-profile-MRPBWL2K.mjs +7 -0
  249. package/dist/bin/core-chunks/discuss-lock-CWXKBBYJ.mjs +7 -0
  250. package/dist/bin/core-chunks/distill-MLDZG5RA.mjs +7 -0
  251. package/dist/bin/core-chunks/doctor-heal-ZUZ2RHGY.mjs +7 -0
  252. package/dist/bin/core-chunks/doctor-service-WXLB2FEE.mjs +8 -0
  253. package/dist/bin/core-chunks/drift-refresh-XPJAO2B3.mjs +7 -0
  254. package/dist/bin/core-chunks/dynasty-outcomes-H2O546OL.mjs +11 -0
  255. package/dist/bin/core-chunks/editors-config-ELAQA6RV.mjs +7 -0
  256. package/dist/bin/core-chunks/embeddings-7A5Z5I67.mjs +7 -0
  257. package/dist/bin/core-chunks/enriched-recall-YXK7EIKH.mjs +7 -0
  258. package/dist/bin/core-chunks/eval-4YFUBFLV.mjs +76 -0
  259. package/dist/bin/core-chunks/exec-34V6SJYO.mjs +7 -0
  260. package/dist/bin/core-chunks/file-helper-LLQKU6YF.mjs +7 -0
  261. package/dist/bin/core-chunks/format-5V6GF6JJ.mjs +7 -0
  262. package/dist/bin/core-chunks/gemini-settings-ZTU3VQU3.mjs +7 -0
  263. package/dist/bin/core-chunks/git-context-ZSWE3KWM.mjs +8 -0
  264. package/dist/bin/core-chunks/git-helpers-UC53D4FT.mjs +7 -0
  265. package/dist/bin/core-chunks/grok-mcp-F3SRFMCW.mjs +7 -0
  266. package/dist/bin/core-chunks/grok-plugin-4CE2WUYI.mjs +7 -0
  267. package/dist/bin/core-chunks/grok-skill-GLSBOOKW.mjs +7 -0
  268. package/dist/bin/core-chunks/guard-FJBJ6IAE.mjs +13 -0
  269. package/dist/bin/core-chunks/guards-LFUFKVVH.mjs +7 -0
  270. package/dist/bin/core-chunks/handoff-storage-NGUA4Y2L.mjs +7 -0
  271. package/dist/bin/core-chunks/harness-FN3HASSA.mjs +43 -0
  272. package/dist/bin/core-chunks/health-W2VWME7Z.mjs +11 -0
  273. package/dist/bin/core-chunks/help-I37I3V2R.mjs +14 -0
  274. package/dist/bin/core-chunks/hooks-service-C2P5DRCH.mjs +91 -0
  275. package/dist/bin/core-chunks/infer-memory-file-ATP7PSAQ.mjs +7 -0
  276. package/dist/bin/core-chunks/install-XP4S6HWQ.mjs +9 -0
  277. package/dist/bin/core-chunks/judgment-GJE332LF.mjs +21 -0
  278. package/dist/bin/core-chunks/judgment-ledger-storage-ZTYXPMM4.mjs +7 -0
  279. package/dist/bin/core-chunks/judgment-orchestrator-E3SO3NVE.mjs +7 -0
  280. package/dist/bin/core-chunks/judgment-receipt-WT4EMCAV.mjs +7 -0
  281. package/dist/bin/core-chunks/kimi-hooks-2UEUIKXV.mjs +7 -0
  282. package/dist/bin/core-chunks/kimi-mcp-DJCXZ2JY.mjs +7 -0
  283. package/dist/bin/core-chunks/land-cue-5USQ64MS.mjs +8 -0
  284. package/dist/bin/core-chunks/land-rho-ISNVEPVC.mjs +8 -0
  285. package/dist/bin/core-chunks/land-synthesis-CHARJMUP.mjs +7 -0
  286. package/dist/bin/core-chunks/lean-L53CKZNH.mjs +34 -0
  287. package/dist/bin/core-chunks/legacy-crew-sweep-2TLKJTHI.mjs +23 -0
  288. package/dist/bin/core-chunks/living-context-contract-HZIVBMXX.mjs +7 -0
  289. package/dist/bin/core-chunks/llm-XMH7WTHV.mjs +18 -0
  290. package/dist/bin/core-chunks/mcp-FLVIZBV2.mjs +17 -0
  291. package/dist/bin/core-chunks/memory-dream-EJWI4FJO.mjs +14 -0
  292. package/dist/bin/core-chunks/memory-export-27HTNNFI.mjs +13 -0
  293. package/dist/bin/core-chunks/memory-index-BRZDZ2BY.mjs +7 -0
  294. package/dist/bin/core-chunks/notification-KJ4FQJAW.mjs +7 -0
  295. package/dist/bin/core-chunks/notify-76B7AICZ.mjs +9 -0
  296. package/dist/bin/core-chunks/nyquist-lite-A23B7G4B.mjs +9 -0
  297. package/dist/bin/core-chunks/one-breath-install-LVNIVN6S.mjs +7 -0
  298. package/dist/bin/core-chunks/opencode-mcp-5YSIYDI3.mjs +7 -0
  299. package/dist/bin/core-chunks/output-D27IOQXR.mjs +7 -0
  300. package/dist/bin/core-chunks/pack-integrity-GXN67LJB.mjs +9 -0
  301. package/dist/bin/core-chunks/pack-manager-46SPIPPD.mjs +7 -0
  302. package/dist/bin/core-chunks/package-DCGCOAGQ.mjs +7 -0
  303. package/dist/bin/core-chunks/package-legitimacy-VHHGI4P7.mjs +7 -0
  304. package/dist/bin/core-chunks/path-manager-E5DCU5LP.mjs +7 -0
  305. package/dist/bin/core-chunks/performance-tracker-BFBNR3LY.mjs +7 -0
  306. package/dist/bin/core-chunks/pi-skill-SDHTUK3V.mjs +7 -0
  307. package/dist/bin/core-chunks/planning-S3MYVWH6.mjs +8 -0
  308. package/dist/bin/core-chunks/post-edit-5YSNEMK7.mjs +7 -0
  309. package/dist/bin/core-chunks/pr-convention-37YHTUKM.mjs +7 -0
  310. package/dist/bin/core-chunks/pre-bash-GLDILCRF.mjs +10 -0
  311. package/dist/bin/core-chunks/pre-commit-U6HPPNIC.mjs +7 -0
  312. package/dist/bin/core-chunks/pre-edit-PEYQA6P6.mjs +8 -0
  313. package/dist/bin/core-chunks/pre-package-76JR5GLO.mjs +7 -0
  314. package/dist/bin/core-chunks/pre-search-5EHNUOP3.mjs +8 -0
  315. package/dist/bin/core-chunks/pre-secrets-RJELPDFY.mjs +7 -0
  316. package/dist/bin/core-chunks/precision-classifier-AV75OEVA.mjs +7 -0
  317. package/dist/bin/core-chunks/precision-judgment-MCX4MIIG.mjs +7 -0
  318. package/dist/bin/core-chunks/preferences-BTSYWYUM.mjs +31 -0
  319. package/dist/bin/core-chunks/primitives-IXAYLX7U.mjs +13 -0
  320. package/dist/bin/core-chunks/prjct-md-SUDFWDCS.mjs +7 -0
  321. package/dist/bin/core-chunks/product-KKGJ6MMF.mjs +68 -0
  322. package/dist/bin/core-chunks/project-agent-surfaces-I2CUZUIN.mjs +7 -0
  323. package/dist/bin/core-chunks/project-alignment-ADKW3ZWQ.mjs +17 -0
  324. package/dist/bin/core-chunks/project-file-inventory-XIHHJZUP.mjs +7 -0
  325. package/dist/bin/core-chunks/project-memory-GYLYIJQD.mjs +7 -0
  326. package/dist/bin/core-chunks/project-style-evolution-5W25UPPN.mjs +7 -0
  327. package/dist/bin/core-chunks/prompt-SW5XDRMX.mjs +23 -0
  328. package/dist/bin/core-chunks/protocol-4AJ4J5SI.mjs +7 -0
  329. package/dist/bin/core-chunks/provider-cache-IWVTFLGT.mjs +7 -0
  330. package/dist/bin/core-chunks/provider-status-HQUBKMH5.mjs +7 -0
  331. package/dist/bin/core-chunks/publish-helper-2T2EHM3V.mjs +7 -0
  332. package/dist/bin/core-chunks/purge-5EPJV25P.mjs +7 -0
  333. package/dist/bin/core-chunks/queue-storage-BKH5XX2E.mjs +7 -0
  334. package/dist/bin/core-chunks/registry-LK6IQ5UX.mjs +7 -0
  335. package/dist/bin/core-chunks/reliability-repair-JMPZWDD4.mjs +20 -0
  336. package/dist/bin/core-chunks/removed-verbs-EU3WPRNK.mjs +7 -0
  337. package/dist/bin/core-chunks/retention-S22T3SPT.mjs +7 -0
  338. package/dist/bin/core-chunks/retro-CLKOHAN6.mjs +13 -0
  339. package/dist/bin/core-chunks/review-risk-LLLBKUXT.mjs +12 -0
  340. package/dist/bin/core-chunks/run-recorder-EZQ32M55.mjs +7 -0
  341. package/dist/bin/core-chunks/safe-artifacts-RW5WQUUJ.mjs +9 -0
  342. package/dist/bin/core-chunks/sdd-HE7O6N5S.mjs +9 -0
  343. package/dist/bin/core-chunks/seed-JX7W53E5.mjs +10 -0
  344. package/dist/bin/core-chunks/self-heal-DFUEKNF3.mjs +7 -0
  345. package/dist/bin/core-chunks/session-continuity-BFSW4OL6.mjs +10 -0
  346. package/dist/bin/core-chunks/session-start-HVYUKJL2.mjs +7 -0
  347. package/dist/bin/core-chunks/session-tracker-RG2FBWMS.mjs +7 -0
  348. package/dist/bin/core-chunks/settings-installer-4XHM3HAZ.mjs +7 -0
  349. package/dist/bin/core-chunks/setup-GHS24ER5.mjs +140 -0
  350. package/dist/bin/core-chunks/setup-J4JFYT63.mjs +38 -0
  351. package/dist/bin/core-chunks/shipping-I4D4AVTE.mjs +12 -0
  352. package/dist/bin/core-chunks/signals-digest-V44KYN6Z.mjs +7 -0
  353. package/dist/bin/core-chunks/skill-adherence-MHY4BZL4.mjs +13 -0
  354. package/dist/bin/core-chunks/skill-generator-LKS5BNMY.mjs +7 -0
  355. package/dist/bin/core-chunks/skill-index-L4UWQCQE.mjs +11 -0
  356. package/dist/bin/core-chunks/spec-2XXPLHUZ.mjs +27 -0
  357. package/dist/bin/core-chunks/spec-context-inference-THFMXC7S.mjs +9 -0
  358. package/dist/bin/core-chunks/spec-inventory-2TT7BTFZ.mjs +9 -0
  359. package/dist/bin/core-chunks/spec-service-I23KJKKP.mjs +7 -0
  360. package/dist/bin/core-chunks/spec-task-breakdown-HTG6ME6G.mjs +7 -0
  361. package/dist/bin/core-chunks/state-storage-6CGFWW5D.mjs +7 -0
  362. package/dist/bin/core-chunks/stdin-spill-Y2A6WOOW.mjs +7 -0
  363. package/dist/bin/core-chunks/stop-2H57XCGZ.mjs +15 -0
  364. package/dist/bin/core-chunks/subagent-start-5LPASXOS.mjs +7 -0
  365. package/dist/bin/core-chunks/subagent-stop-ANLSG3KN.mjs +7 -0
  366. package/dist/bin/core-chunks/surface-attribution-WL7S53XX.mjs +7 -0
  367. package/dist/bin/core-chunks/symbol-graph-PCS43SHZ.mjs +7 -0
  368. package/dist/bin/core-chunks/sync-analyzer-M37Q4LE4.mjs +7 -0
  369. package/dist/bin/core-chunks/sync-client-6TAOTJWR.mjs +7 -0
  370. package/dist/bin/core-chunks/sync-cursor-storage-GKO4X2QN.mjs +18 -0
  371. package/dist/bin/core-chunks/task-orchestration-GS4J4KGS.mjs +7 -0
  372. package/dist/bin/core-chunks/task-overview-XSMK7YEN.mjs +7 -0
  373. package/dist/bin/core-chunks/task-service-FK7FC3PE.mjs +7 -0
  374. package/dist/bin/core-chunks/tdd-NQDHU62B.mjs +9 -0
  375. package/dist/bin/core-chunks/team-XZ4Q6UBV.mjs +42 -0
  376. package/dist/bin/core-chunks/template-loader-33OVJ4G5.mjs +7 -0
  377. package/dist/bin/core-chunks/token-backfill-WPXXD5MP.mjs +12 -0
  378. package/dist/bin/core-chunks/token-economics-JZAQJUET.mjs +7 -0
  379. package/dist/bin/core-chunks/transcript-jsonl-OC7TH4Q3.mjs +7 -0
  380. package/dist/bin/core-chunks/trust-boundary-24F662RM.mjs +7 -0
  381. package/dist/bin/core-chunks/uninstall-6NFON7FO.mjs +13 -0
  382. package/dist/bin/core-chunks/update-4IE6SA6M.mjs +11 -0
  383. package/dist/bin/core-chunks/update-checker-FK7MWNWN.mjs +7 -0
  384. package/dist/bin/core-chunks/usefulness-A3GRKFL3.mjs +7 -0
  385. package/dist/bin/core-chunks/user-home-BODIAXR4.mjs +7 -0
  386. package/dist/bin/core-chunks/vault-retire-notice-FDRT7BJG.mjs +8 -0
  387. package/dist/bin/core-chunks/velocity-storage-5T7RYOWH.mjs +7 -0
  388. package/dist/bin/core-chunks/verb-names-QWGYABFH.mjs +7 -0
  389. package/dist/bin/core-chunks/version-252QLBN2.mjs +7 -0
  390. package/dist/bin/core-chunks/watch-service-7ZERG7RC.mjs +9 -0
  391. package/dist/bin/core-chunks/weak-frontier-demo-5C4FR3OA.mjs +7 -0
  392. package/dist/bin/core-chunks/weak-model-mode-DH66XMD2.mjs +7 -0
  393. package/dist/bin/core-chunks/work-graph-JGJWE3AV.mjs +16 -0
  394. package/dist/bin/core-chunks/work-graph-WHMCFN6U.mjs +7 -0
  395. package/dist/bin/core-chunks/work-scope-3LXOEIUX.mjs +7 -0
  396. package/dist/bin/core-chunks/workflow-FGJVLRQ3.mjs +61 -0
  397. package/dist/bin/core-chunks/workflows-reference-UWKRZ6BJ.mjs +7 -0
  398. package/dist/bin/core-chunks/workspace-occupancy-JUXKZBUZ.mjs +7 -0
  399. package/dist/bin/core-chunks/worktree-service-YRRPFU57.mjs +11 -0
  400. package/dist/bin/core-chunks/world-model-impact-RH5WH2B3.mjs +7 -0
  401. package/dist/bin/hook-chunks/{agent-switch-I4MTVE56.mjs → agent-switch-7GOGG4KG.mjs} +1 -1
  402. package/dist/bin/hook-chunks/{analysis-VN7APBHR.mjs → analysis-UI2JRLJO.mjs} +2 -2
  403. package/dist/bin/hook-chunks/{auto-flush-DX3FVSQE.mjs → auto-flush-JKIXTI2I.mjs} +1 -1
  404. package/dist/bin/hook-chunks/{capture-gate-MEIQD7ZS.mjs → capture-gate-DIPHPNIC.mjs} +1 -1
  405. package/dist/bin/hook-chunks/chunk-25OGCQTR.mjs +69 -0
  406. package/dist/bin/hook-chunks/{chunk-OLQAMCYV.mjs → chunk-63P5VOR6.mjs} +5 -5
  407. package/dist/bin/hook-chunks/{chunk-EI6VQZOX.mjs → chunk-6LU777GI.mjs} +1 -1
  408. package/dist/bin/hook-chunks/chunk-6NMHVPAI.mjs +35 -0
  409. package/dist/bin/hook-chunks/{chunk-3AHW4XQH.mjs → chunk-6RS7PNAN.mjs} +1 -1
  410. package/dist/bin/hook-chunks/{chunk-ZZBNFNMG.mjs → chunk-6WDRJ7J7.mjs} +1 -1
  411. package/dist/bin/hook-chunks/{chunk-PVCEWFHS.mjs → chunk-7PA4KPSR.mjs} +2 -2
  412. package/dist/bin/hook-chunks/{chunk-EXVL2OFE.mjs → chunk-A6LRNS6R.mjs} +1 -1
  413. package/dist/bin/hook-chunks/{chunk-IJ523YO2.mjs → chunk-AEDB75AK.mjs} +1 -1
  414. package/dist/bin/hook-chunks/chunk-AFGXKRRP.mjs +12 -0
  415. package/dist/bin/hook-chunks/{chunk-LF3S3MYE.mjs → chunk-ANSRNEEI.mjs} +1 -1
  416. package/dist/bin/hook-chunks/{chunk-YLOK4WRR.mjs → chunk-B2ZA5ZAO.mjs} +1 -1
  417. package/dist/bin/hook-chunks/{chunk-KDNUQPAK.mjs → chunk-B7MHIUFA.mjs} +1 -1
  418. package/dist/bin/hook-chunks/{chunk-RT2DFIWF.mjs → chunk-F3PNT2DQ.mjs} +2 -2
  419. package/dist/bin/hook-chunks/{chunk-XYKVWO23.mjs → chunk-FBEDUKMG.mjs} +1 -1
  420. package/dist/bin/hook-chunks/{chunk-DB226JIV.mjs → chunk-GER6HFWV.mjs} +1 -1
  421. package/dist/bin/hook-chunks/{chunk-NLL5AV2G.mjs → chunk-HNZ24HIK.mjs} +2 -2
  422. package/dist/bin/hook-chunks/{chunk-LR24AIEW.mjs → chunk-IDPBMN3Q.mjs} +1 -1
  423. package/dist/bin/hook-chunks/{chunk-EGCYDLSO.mjs → chunk-IFIENAZU.mjs} +1 -1
  424. package/dist/bin/hook-chunks/{chunk-KV4NXLPT.mjs → chunk-IHEOOJJT.mjs} +1 -1
  425. package/dist/bin/hook-chunks/{chunk-H2DGDAQP.mjs → chunk-IL36ER4U.mjs} +1 -1
  426. package/dist/bin/hook-chunks/{chunk-33BHU4OM.mjs → chunk-JF6DFOQK.mjs} +1 -1
  427. package/dist/bin/hook-chunks/{chunk-LQLCYBFF.mjs → chunk-KOLXYWOA.mjs} +2 -2
  428. package/dist/bin/hook-chunks/{chunk-XV2LJVYB.mjs → chunk-MIJZT4ZR.mjs} +1 -1
  429. package/dist/bin/hook-chunks/{chunk-SWJ7TLBD.mjs → chunk-NMB6YSAH.mjs} +1 -1
  430. package/dist/bin/hook-chunks/{chunk-Y3RHBU2R.mjs → chunk-NSTXHVTH.mjs} +2 -2
  431. package/dist/bin/hook-chunks/{chunk-ADYTBOCZ.mjs → chunk-ONGVBXBD.mjs} +1 -1
  432. package/dist/bin/hook-chunks/{chunk-7PBWIO4K.mjs → chunk-PFORBQBF.mjs} +2 -2
  433. package/dist/bin/hook-chunks/{chunk-WL6PKX3U.mjs → chunk-PQJ64L6U.mjs} +1 -1
  434. package/dist/bin/hook-chunks/{chunk-FZS3XGEA.mjs → chunk-RLKYEL3F.mjs} +1 -1
  435. package/dist/bin/hook-chunks/{chunk-WJV24WE6.mjs → chunk-UBWUQ64A.mjs} +1 -1
  436. package/dist/bin/hook-chunks/{chunk-64ZEBHDX.mjs → chunk-UI25YRTY.mjs} +1 -1
  437. package/dist/bin/hook-chunks/{chunk-YHOZTAZH.mjs → chunk-V6GGH6H5.mjs} +1 -1
  438. package/dist/bin/hook-chunks/chunk-WIA6ORIY.mjs +16 -0
  439. package/dist/bin/hook-chunks/{chunk-UVATSTRF.mjs → chunk-XXVHUYL7.mjs} +1 -1
  440. package/dist/bin/hook-chunks/{chunk-E7NA34VQ.mjs → chunk-Y7RDBMNC.mjs} +1 -1
  441. package/dist/bin/hook-chunks/{chunk-JZDZH6IV.mjs → chunk-YATXTHDL.mjs} +1 -1
  442. package/dist/bin/hook-chunks/{chunk-DCHIPMOG.mjs → chunk-ZF2EVMY7.mjs} +1 -1
  443. package/dist/bin/hook-chunks/{chunk-MW54MTLB.mjs → chunk-ZH2MF7H7.mjs} +1 -1
  444. package/dist/bin/hook-chunks/{chunk-ZQI4TJ5C.mjs → chunk-ZXON2U5F.mjs} +1 -1
  445. package/dist/bin/hook-chunks/{codex-skill-6CRFUF3A.mjs → codex-skill-UZZCACMB.mjs} +1 -1
  446. package/dist/bin/hook-chunks/{command-installer-MUHZWDZA.mjs → command-installer-FJ73C2ZW.mjs} +1 -1
  447. package/dist/bin/hook-chunks/{config-manager-2JJPCLKC.mjs → config-manager-XDKOTIJM.mjs} +1 -1
  448. package/dist/bin/hook-chunks/{cwd-changed-UTD6Y4MS.mjs → cwd-changed-STP3LH6Y.mjs} +1 -1
  449. package/dist/bin/hook-chunks/{distill-5TNAM3LY.mjs → distill-63BHUJAC.mjs} +1 -1
  450. package/dist/bin/hook-chunks/{enriched-recall-6VOIUNLN.mjs → enriched-recall-6F6LBYAB.mjs} +1 -1
  451. package/dist/bin/hook-chunks/{format-IIOFTSBF.mjs → format-VJ2YQ4XQ.mjs} +1 -1
  452. package/dist/bin/hook-chunks/{judgment-receipt-QLV3MYFT.mjs → judgment-receipt-LSJCAYBT.mjs} +1 -1
  453. package/dist/bin/hook-chunks/{land-cue-57B23PEL.mjs → land-cue-DEO2AZW4.mjs} +1 -1
  454. package/dist/bin/hook-chunks/{land-synthesis-ZVPFJERV.mjs → land-synthesis-GTMFIGDM.mjs} +1 -1
  455. package/dist/bin/hook-chunks/{legacy-crew-sweep-GR6HRSHX.mjs → legacy-crew-sweep-QPKU7ITU.mjs} +2 -2
  456. package/dist/bin/hook-chunks/{memory-index-XE2MWKQS.mjs → memory-index-KCMXQGKX.mjs} +1 -1
  457. package/dist/bin/hook-chunks/{notification-GU2ZJP5K.mjs → notification-DX6ZHOUC.mjs} +1 -1
  458. package/dist/bin/hook-chunks/{pack-integrity-WV5U3AFF.mjs → pack-integrity-UMLIB5RQ.mjs} +1 -1
  459. package/dist/bin/hook-chunks/{pack-manager-QLFQKP24.mjs → pack-manager-YXRK2TJ4.mjs} +1 -1
  460. package/dist/bin/hook-chunks/{planning-VPAX5DZL.mjs → planning-JR7O5MYW.mjs} +2 -2
  461. package/dist/bin/hook-chunks/{post-edit-UXCFSR3Y.mjs → post-edit-IPTVSRVG.mjs} +1 -1
  462. package/dist/bin/hook-chunks/{pre-bash-MB4JNNYG.mjs → pre-bash-5WWTH36N.mjs} +1 -1
  463. package/dist/bin/hook-chunks/{pre-commit-U7TRFKWX.mjs → pre-commit-KZ5TNTPW.mjs} +1 -1
  464. package/dist/bin/hook-chunks/{pre-edit-MDCQXI5F.mjs → pre-edit-XHPYBXRU.mjs} +1 -1
  465. package/dist/bin/hook-chunks/{pre-package-A6ZI5R64.mjs → pre-package-U3HDW3SX.mjs} +1 -1
  466. package/dist/bin/hook-chunks/{pre-search-ZZO3LGXJ.mjs → pre-search-R5CRK66E.mjs} +1 -1
  467. package/dist/bin/hook-chunks/{prjct-md-MS52YLI2.mjs → prjct-md-IBQTJBK7.mjs} +1 -1
  468. package/dist/bin/hook-chunks/{project-agent-surfaces-6AIW7KL6.mjs → project-agent-surfaces-TPZO73ZV.mjs} +1 -1
  469. package/dist/bin/hook-chunks/{project-memory-UDH56VFP.mjs → project-memory-YQLZX5RG.mjs} +1 -1
  470. package/dist/bin/hook-chunks/{project-style-evolution-IJXT2MCP.mjs → project-style-evolution-NOFCIIZZ.mjs} +1 -1
  471. package/dist/bin/hook-chunks/{prompt-7VZLYONO.mjs → prompt-DJWONMTZ.mjs} +2 -2
  472. package/dist/bin/hook-chunks/{purge-N2WN6NDB.mjs → purge-5W3K2MZL.mjs} +1 -1
  473. package/dist/bin/hook-chunks/{retention-RET4P2RO.mjs → retention-GWJ4AX7I.mjs} +1 -1
  474. package/dist/bin/hook-chunks/{sdd-PB6WKSLE.mjs → sdd-GWBRD4KI.mjs} +1 -1
  475. package/dist/bin/hook-chunks/{session-continuity-BIJXMN44.mjs → session-continuity-VH645RGR.mjs} +1 -1
  476. package/dist/bin/hook-chunks/{session-start-R2VMKW2L.mjs → session-start-4TYTI27B.mjs} +1 -1
  477. package/dist/bin/hook-chunks/{setup-PPIZHVXS.mjs → setup-VF4UHUBX.mjs} +2 -2
  478. package/dist/bin/hook-chunks/{shipping-C637PCOF.mjs → shipping-2ULWBGRX.mjs} +4 -4
  479. package/dist/bin/hook-chunks/{spec-context-inference-RTTDOZZO.mjs → spec-context-inference-HVENYOIO.mjs} +1 -1
  480. package/dist/bin/hook-chunks/{spec-service-ENLAAMVL.mjs → spec-service-4XGQQPGP.mjs} +2 -2
  481. package/dist/bin/hook-chunks/{spec-task-breakdown-RUDEP3AY.mjs → spec-task-breakdown-JXF556UH.mjs} +1 -1
  482. package/dist/bin/hook-chunks/{state-storage-AJUPG7J5.mjs → state-storage-EMWLIFQJ.mjs} +1 -1
  483. package/dist/bin/hook-chunks/{stop-DPXAWJFN.mjs → stop-NJDYIIXR.mjs} +2 -2
  484. package/dist/bin/hook-chunks/{subagent-start-AFHPXL2S.mjs → subagent-start-2YMGD4SY.mjs} +1 -1
  485. package/dist/bin/hook-chunks/{subagent-stop-5BMV63ML.mjs → subagent-stop-4TZJ2NSJ.mjs} +1 -1
  486. package/dist/bin/hook-chunks/{surface-attribution-EGIKCVMF.mjs → surface-attribution-UNK4J5W2.mjs} +1 -1
  487. package/dist/bin/hook-chunks/{task-overview-F3GB77OA.mjs → task-overview-P3VRH2FD.mjs} +1 -1
  488. package/dist/bin/hook-chunks/{task-service-FZABHPFV.mjs → task-service-SPUES5DO.mjs} +1 -1
  489. package/dist/bin/hook-chunks/{tdd-TAMBOPN3.mjs → tdd-MYF7I5FS.mjs} +1 -1
  490. package/dist/bin/hook-chunks/{template-loader-MXOMU4XH.mjs → template-loader-4SYVR2UB.mjs} +1 -1
  491. package/dist/bin/hook-chunks/{weak-model-mode-BMSPGEQY.mjs → weak-model-mode-TYJJT6JJ.mjs} +1 -1
  492. package/dist/bin/hook-chunks/{work-scope-YCS4GTXW.mjs → work-scope-A6XPENFE.mjs} +1 -1
  493. package/dist/bin/hook-chunks/{workspace-occupancy-JOBYNNXV.mjs → workspace-occupancy-3NEAXILW.mjs} +1 -1
  494. package/dist/bin/prjct-core.mjs +9 -3323
  495. package/dist/bin/prjct-hooks.mjs +1 -1
  496. package/dist/bin/prjct.mjs +7 -1
  497. package/dist/daemon/entry.mjs +514 -513
  498. package/dist/mcp/server.mjs +234 -233
  499. package/package.json +3 -2
  500. package/dist/bin/hook-chunks/chunk-3UB6SFRA.mjs +0 -11
  501. package/dist/bin/hook-chunks/chunk-D7DQABWO.mjs +0 -35
  502. package/dist/bin/hook-chunks/chunk-M4YM7Z3F.mjs +0 -69
  503. package/dist/bin/hook-chunks/chunk-TB57OYGW.mjs +0 -16
@@ -0,0 +1,8 @@
1
+ import { createRequire as __createRequire } from 'module';
2
+ import { fileURLToPath as __fileURLToPath } from 'url';
3
+ import { dirname as __pathDirname } from 'path';
4
+ const require = __createRequire(import.meta.url);
5
+ const __filename = __fileURLToPath(import.meta.url);
6
+ const __dirname = __pathDirname(__filename);
7
+ import{b,c as $}from"./chunk-FATYLG3L.mjs";import{b as y,e as E}from"./chunk-623SNKDH.mjs";import{e as c,g as A}from"./chunk-TTN2CFZC.mjs";import{a as n,c as P,d as x}from"./chunk-3TRXQAU4.mjs";var z={};x(z,{default:()=>k,getTemplateContent:()=>w,listTemplates:()=>j,resetBundle:()=>B});import m from"node:fs";import v from"node:fs/promises";import d from"node:path";function g(){if(s.loaded)return s.templates;s.loaded=!0;let t=d.join(c,"dist","templates.json");try{let e=m.readFileSync(t,"utf-8");return s.templates=JSON.parse(e),s.templates}catch{return null}}function L(t){let e=i.indexOf(t);e>-1&&i.splice(e,1),i.push(t)}function W(){for(;a.size>=R&&i.length>0;){let t=i.shift();t&&a.delete(t)}}function S(t){let e=/^---\n([\s\S]+?)\n---\n([\s\S]*)$/,r=t.match(e);if(!r)return{frontmatter:{},content:t.trim()};let[,o,l]=r,p={};return o.split(`
8
+ `).forEach(F=>{let[f,...h]=F.split(":");if(f&&h.length>0){let u=h.join(":").trim();u.startsWith("[")&&u.endsWith("]")?p[f.trim()]=u.slice(1,-1).split(",").map(O=>O.trim()):p[f.trim()]=u.replace(/^["']|["']$/g,"")}}),{frontmatter:p,content:l.trim()}}async function T(t){if(a.has(t))return L(t),a.get(t);let o=g()?.[`commands/${t}.md`]??await v.readFile(d.join(c,"templates","commands",`${t}.md`),"utf-8").catch(()=>{throw y.notFound(t)}),l=S(o);return W(),a.set(t,l),i.push(t),l}async function _(t){return(await T(t)).frontmatter["allowed-tools"]||[]}function C(){a.clear(),i.length=0}function B(){s.templates=null,s.loaded=!1,C()}function w(t){let e=g();if(e?.[t])return e[t];let r=b(t);if(r)return r;let o=d.join(c,"templates",t);try{return m.readFileSync(o,"utf-8")}catch{return null}}function j(t){let e=g();if(e)return Object.keys(e).filter(o=>o.startsWith(t));let r=d.join(c,"templates",t);try{return m.readdirSync(r).map(l=>`${t}${l}`)}catch{return[]}}var R,a,i,s,M,k,G=P(()=>{E();$();A();R=50,a=new Map,i=[],s={templates:null,loaded:!1};n(g,"loadBundle");n(L,"updateLruOrder");n(W,"evictLru");n(S,"parseFrontmatter");n(T,"load");n(_,"getAllowedTools");n(C,"clearCache");n(B,"resetBundle");n(w,"getTemplateContent");n(j,"listTemplates");M={load:T,parseFrontmatter:S,getAllowedTools:_,clearCache:C,getTemplateContent:w,listTemplates:j},k=M});export{B as a,w as b,j as c,k as d,z as e,G as f};
@@ -0,0 +1,7 @@
1
+ import { createRequire as __createRequire } from 'module';
2
+ import { fileURLToPath as __fileURLToPath } from 'url';
3
+ import { dirname as __pathDirname } from 'path';
4
+ const require = __createRequire(import.meta.url);
5
+ const __filename = __fileURLToPath(import.meta.url);
6
+ const __dirname = __pathDirname(__filename);
7
+ import{f as l,i as R}from"./chunk-DMO3ZFUG.mjs";import{e as h,l as L}from"./chunk-HU5ERAAV.mjs";import{a as c}from"./chunk-3TRXQAU4.mjs";L();R();function T(o,s,n){let a=o.prepare("INSERT INTO analysis_finding (id, analysis_id, kind, title, detail, severity, sort_order) VALUES (?, ?, ?, ?, ?, ?, ?)"),r=[],e=c((t,i,y,A)=>{if(!i)return;let p=r.length,_=`${s}-f${p}`;a.run(_,s,t,i,y,A,p),r.push(_)},"addFinding");for(let t of n.patterns??[])e("pattern",t.name,t.description,null);for(let t of n.antiPatterns??[])e("anti_pattern",t.issue,t.suggestion,t.severity);for(let t of n.techDebt??[])e("tech_debt",t.description,`${t.area}: ${t.impact}`,t.priority);for(let t of n.riskAreas??[])e("risk_area",t.path,`${t.reason} \u2014 ${t.risk}`,t.severity);for(let t of n.refactorSuggestions??[])e("refactor",t.description,t.benefit,null);let m=new Set;for(let t of[...n.projectInsights??[],...n.architecture?.insights??[]]){let i=t.toLowerCase();m.has(i)||(m.add(i),e("insight",t,null,null))}let d=o.prepare("INSERT INTO analysis_convention (id, analysis_id, rule, sort_order) VALUES (?, ?, ?, ?)");(n.conventions??[]).forEach((t,i)=>{d.run(`${s}-c${i}`,s,t.rule,i)});let g=o.prepare("INSERT INTO analysis_stack_item (id, analysis_id, kind, name) VALUES (?, ?, ?, ?)");[...(n.stack?.languages??[]).map(t=>({kind:"language",name:t})),...(n.stack?.frameworks??[]).map(t=>({kind:"framework",name:t}))].forEach((t,i)=>{g.run(`${s}-s${i}`,s,t.kind,t.name)});let f=o.prepare("INSERT INTO analysis_command (id, analysis_id, name, command, purpose) VALUES (?, ?, ?, ?, ?)");Object.entries(n.commands??{}).filter(t=>!!t[1]).forEach(([t,i],y)=>{f.run(`${s}-cmd${y}`,s,t,i,null)});let S=o.prepare("INSERT INTO analysis_domain (id, analysis_id, name, paths) VALUES (?, ?, ?, ?)");(n.architecture?.domains??[]).forEach((t,i)=>{S.run(`${s}-d${i}`,s,t,null)})}c(T,"writeAnalysisChildren");var E=class{static{c(this,"LLMAnalysisStorage")}save(s,n){let a=l.getDb(s),r=h();a.transaction(()=>{a.prepare("UPDATE llm_analysis SET status = 'superseded', superseded_at = ? WHERE status = 'active'").run(r);let e=a.prepare("INSERT INTO llm_analysis (commit_hash, status, analysis, analyzed_at) VALUES (?, ?, ?, ?)").run(n.commitHash??null,"active",JSON.stringify(n),n.analyzedAt);T(a,String(e.lastInsertRowid),n)})()}getActiveRelational(s){let n=l.get(s,"SELECT id FROM llm_analysis WHERE status = 'active' LIMIT 1");if(!n)return null;let a=String(n.id),r=l.query(s,"SELECT kind, title, detail FROM analysis_finding WHERE analysis_id = ? ORDER BY kind, sort_order",a),e=l.query(s,"SELECT rule FROM analysis_convention WHERE analysis_id = ? ORDER BY sort_order",a).map(u=>u.rule),m=l.query(s,"SELECT kind, name FROM analysis_stack_item WHERE analysis_id = ?",a),d=l.query(s,"SELECT name FROM analysis_domain WHERE analysis_id = ?",a).map(u=>u.name),g=l.query(s,"SELECT name, command FROM analysis_command WHERE analysis_id = ?",a);return r.length===0&&e.length===0&&m.length===0?null:{findings:r,conventions:e,stack:m,domains:d,commands:g}}getActive(s){let n=l.get(s,"SELECT analysis FROM llm_analysis WHERE status = 'active' LIMIT 1");return n?JSON.parse(n.analysis):null}getActiveSummary(s){let n=this.getActive(s);return n?{commitHash:n.commitHash,architectureStyle:n.architecture.style,patternCount:n.patterns.length,antiPatternCount:n.antiPatterns.length,analyzedAt:n.analyzedAt}:null}isCurrent(s,n){return n?l.get(s,"SELECT commit_hash FROM llm_analysis WHERE status = 'active' LIMIT 1")?.commit_hash===n:!1}getAllFull(s){return l.query(s,"SELECT id, commit_hash, status, analyzed_at, superseded_at, analysis FROM llm_analysis ORDER BY id DESC").map(a=>({id:a.id,status:a.status,commitHash:a.commit_hash,analyzedAt:a.analyzed_at,supersededAt:a.superseded_at,analysis:JSON.parse(a.analysis)}))}getHistory(s,n=10){return l.query(s,"SELECT id, commit_hash, status, analyzed_at, analysis FROM llm_analysis ORDER BY id DESC LIMIT ?",n).map(r=>{let e=JSON.parse(r.analysis);return{id:r.id,commitHash:r.commit_hash,status:r.status,analyzedAt:r.analyzed_at,patternCount:e.patterns.length}})}},k=new E,C=k;export{C as a};
@@ -0,0 +1,7 @@
1
+ import { createRequire as __createRequire } from 'module';
2
+ import { fileURLToPath as __fileURLToPath } from 'url';
3
+ import { dirname as __pathDirname } from 'path';
4
+ const require = __createRequire(import.meta.url);
5
+ const __filename = __fileURLToPath(import.meta.url);
6
+ const __dirname = __pathDirname(__filename);
7
+ import{a as f,b as g,g as p,h as b,i as y}from"./chunk-QZ7T2EYR.mjs";import{g as c,i as A}from"./chunk-DMO3ZFUG.mjs";import{F as m,G as S}from"./chunk-HU5ERAAV.mjs";import{a as s}from"./chunk-3TRXQAU4.mjs";import u from"node:fs/promises";import h from"node:path";import{gunzipSync as G,gzipSync as x}from"node:zlib";S();A();var w="code-graph.json.gz";function C(e){return h.join(m.getGlobalProjectPath(e),w)}s(C,"artifactPath");async function P(e){if(!p(e))return null;let t=y(e),n=g(e),r=b(e)??{symbolCount:t.length,edgeCount:n.length,fileCount:new Set(t.map(d=>d.file)).size,builtAt:new Date().toISOString()},o={version:1,projectId:e,exportedAt:new Date().toISOString(),meta:r,symbols:t,edges:n},a=Buffer.from(JSON.stringify(o),"utf-8"),i=x(a,{level:6}),l=C(e);return await u.mkdir(h.dirname(l),{recursive:!0}),await u.writeFile(l,i),{path:l,bytes:i.length,symbols:t.length,edges:n.length}}s(P,"exportCodeGraphArtifact");async function k(e){let t=C(e),n=await u.readFile(t).catch(()=>null);if(!n)return{imported:!1,symbols:0,edges:0,reason:"no per-project artifact"};let r=(()=>{try{let a=G(n).toString("utf-8");return{payload:JSON.parse(a)}}catch(a){return{error:`corrupt artifact: ${a instanceof Error?a.message:String(a)}`}}})();if("error"in r)return{imported:!1,symbols:0,edges:0,reason:r.error};let o=r.payload;return o.version!==1||!Array.isArray(o.symbols)?{imported:!1,symbols:0,edges:0,reason:"unsupported artifact version"}:o.projectId&&o.projectId!==e?{imported:!1,symbols:0,edges:0,reason:`artifact projectId mismatch (got ${o.projectId}, expected ${e})`}:(f(e,{symbols:o.symbols,edges:o.edges}),c.setDoc(e,"symbol-graph",{...o.meta,builtAt:o.meta.builtAt??o.exportedAt}),{imported:!0,symbols:o.symbols.length,edges:o.edges.length})}s(k,"importCodeGraphArtifact");async function F(e){if(p(e))return{bootstrapped:!1,detail:"local index already present"};let t=await k(e);return t.imported?{bootstrapped:!0,detail:`imported ${t.symbols} symbols / ${t.edges} edges from per-project cache`}:{bootstrapped:!1,detail:t.reason??"import failed"}}s(F,"bootstrapCodeGraphFromArtifact");function O(e){return e?.cloud?.enabled===!0&&e.cloud.paused!==!0}s(O,"shouldAutoUploadCodeGraph");async function j(e,t){try{await P(e)}catch{}if(t.uploadToCloud)try{await D(e,t.uploadDependencies)}catch{}}s(j,"maybeExportAfterIndex");async function D(e,t={}){let n=await import("./code-graph-cloud-G3WQBICY.mjs"),r=(t.buildSnapshot??n.buildCloudCodeGraphSnapshot)(e);if(!n.isUploadableGraph(r))return{uploaded:!1,reason:"no symbol index or empty graph"};try{let a=await(t.upload??(async(i,l)=>{let{default:d}=await import("./sync-client-6TAOTJWR.mjs");return d.uploadCodeGraph(i,l)}))(e,r);return a.ok?{uploaded:!0,nodes:a.nodes??r.nodes.length,links:a.links??r.links.length}:{uploaded:!1,reason:a.reason??"upload failed or unauthenticated",nodes:r.nodes.length,links:r.links.length}}catch(o){return{uploaded:!1,reason:o instanceof Error?o.message:String(o)}}}s(D,"maybeUploadCodeGraphToCloud");export{P as a,k as b,F as c,O as d,j as e,D as f};
@@ -0,0 +1,7 @@
1
+ import { createRequire as __createRequire } from 'module';
2
+ import { fileURLToPath as __fileURLToPath } from 'url';
3
+ import { dirname as __pathDirname } from 'path';
4
+ const require = __createRequire(import.meta.url);
5
+ const __filename = __fileURLToPath(import.meta.url);
6
+ const __dirname = __pathDirname(__filename);
7
+ import{g as u,i as C}from"./chunk-DMO3ZFUG.mjs";import{a as E,b as _,c as A,d as w,e as v,p as b}from"./chunk-HYIT7MF5.mjs";import{a as c}from"./chunk-3TRXQAU4.mjs";A();C();b();import I from"node:fs/promises";import d from"node:path";function O(t){let r=new RegExp(_.source,"g");return[...t.matchAll(r)].map(e=>e[1]).filter(e=>e.startsWith(".")||e.startsWith("@/"))}c(O,"extractImportSources");async function R(t,r,e){let n=t.startsWith("@/")?d.join(e,"src",t.slice(2)):d.resolve(d.dirname(d.join(e,r)),t);for(let o of E){let i=n+o;try{if((await I.stat(i)).isFile())return d.relative(e,i)}catch{}}return null}c(R,"resolveImport");async function x(t){let r=await w(t),e={},n={},o=await v(r,50,async i=>{let s=await G(t,i);return s&&s.imports.length>0?s:null});for(let{filePath:i,imports:s}of o){e[i]=s;for(let f of s)n[f]||(n[f]=[]),n[f].push(i)}return{forward:e,reverse:n,fileCount:r.length,edgeCount:o.reduce((i,s)=>i+s.imports.length,0),builtAt:new Date().toISOString()}}c(x,"buildGraph");function B(t,r,e=2){let n=new Set(t),o=new Map,i=[];for(let s of t){let f=r.forward[s]||[],a=r.reverse[s]||[];for(let p of[...f,...a])n.has(p)||i.push({file:p,depth:1})}for(let{file:s,depth:f}of i){if(f>e)continue;let a=1/(f+1),p=o.get(s);if(p){a>p.score&&o.set(s,{score:a,depth:f});continue}if(o.set(s,{score:a,depth:f}),f<e){let g=r.forward[s]||[],y=r.reverse[s]||[];for(let h of[...g,...y])!n.has(h)&&!o.has(h)&&i.push({file:h,depth:f+1})}}return Array.from(o.entries()).map(([s,{score:f,depth:a}])=>({path:s,score:f,depth:a})).sort((s,f)=>f.score-s.score)}c(B,"scoreFromSeeds");var l="import-graph",m=new Map;function D(t){return Object.values(t).reduce((r,e)=>r+e.length,0)}c(D,"countEdges");function T(t,r){let e=t.forward[r]||[];delete t.forward[r];for(let n of e){let o=(t.reverse[n]||[]).filter(i=>i!==r);o.length===0?delete t.reverse[n]:t.reverse[n]=o}}c(T,"removeOutgoingEdges");function P(t,r){let e=t.reverse[r]||[];delete t.reverse[r];let n=[];for(let o of e){let i=(t.forward[o]||[]).filter(s=>s!==r);i.length===0?delete t.forward[o]:t.forward[o]=i,n.push(o)}return n}c(P,"removeIncomingEdges");function M(t,r,e){if(e.length===0)return;let n=Array.from(new Set(e));t.forward[r]=n;for(let o of n)t.reverse[o]||(t.reverse[o]=[]),t.reverse[o].includes(r)||t.reverse[o].push(r)}c(M,"addEdges");async function G(t,r){try{let e=await I.readFile(d.join(t,r),"utf-8"),n=O(e),o=[];for(let i of n){let s=await R(i,r,t);s&&s!==r&&o.push(s)}return{filePath:r,imports:o}}catch{return null}}c(G,"importsForFile");function S(t){return{schemaVersion:2,fileCount:t.fileCount,edgeCount:t.edgeCount,builtAt:t.builtAt}}c(S,"graphMetadata");function F(t,r){try{u.transaction(t,e=>{e.prepare("DELETE FROM import_graph_edges").run();let n=e.prepare("INSERT INTO import_graph_edges (from_path, to_path, sort_order) VALUES (?, ?, ?)");for(let[o,i]of Object.entries(r.forward))for(let[s,f]of i.entries())n.run(o,f,s)})}catch{}}c(F,"replacePerFileEdges");function L(t,r,e,n){try{u.transaction(t,o=>{let i=o.prepare("DELETE FROM import_graph_edges WHERE from_path = ?"),s=o.prepare("INSERT INTO import_graph_edges (from_path, to_path, sort_order) VALUES (?, ?, ?)");for(let f of new Set([...e,...n]))i.run(f);for(let f of e){let a=r.forward[f]||[];for(let[p,g]of a.entries())s.run(f,g,p)}})}catch{}}c(L,"updatePerFileEdges");function N(t,r,e){try{let n=u.query(t,"SELECT from_path, to_path FROM import_graph_edges ORDER BY from_path, sort_order, to_path");if(n.length===0){if(e?.edgeCount===0){let a={forward:{},reverse:{},fileCount:e.fileCount,edgeCount:0,builtAt:e.builtAt};return m.set(t,{graph:a,updatedAt:r}),a}return null}let o={},i={};for(let a of n)o[a.from_path]||(o[a.from_path]=[]),o[a.from_path].push(a.to_path),i[a.to_path]||(i[a.to_path]=[]),i[a.to_path].push(a.from_path);let s=new Set;for(let[a,p]of Object.entries(o)){s.add(a);for(let g of p)s.add(g)}let f={forward:o,reverse:i,fileCount:e?.fileCount??s.size,edgeCount:n.length,builtAt:e?.builtAt??r};return m.set(t,{graph:f,updatedAt:r}),f}catch{return null}}c(N,"loadGraphFromPerFileEdges");function V(t,r){u.setDoc(t,l,S(r)),F(t,r),m.delete(t)}c(V,"saveGraph");function W(t,r,e,n){u.setDoc(t,l,S(r)),L(t,r,e,n),m.delete(t)}c(W,"saveGraphUpdate");function k(t){let r=u.get(t,"SELECT updated_at FROM kv_store WHERE key = ?",l);if(!r)return m.delete(t),null;let e=m.get(t);if(e&&e.updatedAt===r.updated_at)return e.graph;let n=u.getDoc(t,l),o=N(t,r.updated_at,n);if(o)return o;if(!n?.forward||!n?.reverse)return null;let i={forward:n.forward,reverse:n.reverse,fileCount:n.fileCount,edgeCount:n.edgeCount,builtAt:n.builtAt};return m.set(t,{graph:i,updatedAt:r.updated_at}),i}c(k,"loadGraph");async function q(t,r){let e=await x(t);return V(r,e),e}c(q,"indexImports");async function K(t,r,e,n=[]){let o=k(r);if(!o)return q(t,r);let i=new Set([...e,...n]);for(let a of i)T(o,a);let s=new Set;for(let a of n)for(let p of P(o,a))s.add(p);let f=await v(e,50,a=>G(t,a));for(let a of f)M(o,a.filePath,a.imports);return o.edgeCount=D(o.forward),o.builtAt=new Date().toISOString(),W(r,o,[...e,...s],n),o}c(K,"updateImportGraph");export{B as a,k as b,q as c,K as d};
@@ -0,0 +1,12 @@
1
+ import { createRequire as __createRequire } from 'module';
2
+ import { fileURLToPath as __fileURLToPath } from 'url';
3
+ import { dirname as __pathDirname } from 'path';
4
+ const require = __createRequire(import.meta.url);
5
+ const __filename = __fileURLToPath(import.meta.url);
6
+ const __dirname = __pathDirname(__filename);
7
+ import{a as N}from"./chunk-L4TUXFCL.mjs";import{b as q}from"./chunk-Q6C27OL7.mjs";import{g as u,i as M}from"./chunk-DMO3ZFUG.mjs";import{a as D,b as k}from"./chunk-RP7F67ZT.mjs";import{e as m,l as x}from"./chunk-HU5ERAAV.mjs";import{a as d}from"./chunk-3TRXQAU4.mjs";import{z as r}from"zod";var R=["draft","reviewed","in_progress","shipped","archived"];var P=r.object({verdict:r.enum(["pass","fail"]),notes:r.string(),ts:r.string(),candidateHash:r.string().optional()}),$=r.object({risk:r.string().min(1),mitigation:r.string().min(1)}),L=r.object({name:r.string().min(1),given:r.array(r.string()).default([]),when:r.array(r.string()).default([]),then:r.array(r.string()).default([])}),b=r.object({slug:r.string().min(1),name:r.string().min(1),statement:r.string().min(1),scenarios:r.array(L).default([])}),H=r.object({added:r.array(b).default([]),modified:r.array(b).default([]),removed:r.array(r.string().min(1)).default([])}),W=r.object({id:r.string().min(1),ts:r.string(),ops:H}),h=r.object({goal:r.string().min(1),eli10:r.string().default(""),stakes:r.string().default(""),acceptance_criteria:r.array(r.string().min(1)).default([]),scope:r.array(r.string()).default([]),out_of_scope:r.array(r.string()).default([]),risks:r.array($).default([]),test_plan:r.array(r.string()).default([]),reviews:r.record(r.string(),P).optional(),selected_reviewers:r.array(r.string()).default([]),linked_tasks:r.array(r.string()).default([]),notes:r.string().default(""),tasks_created_at:r.string().nullable().default(null),audit_candidate_hash:r.string().nullable().default(null),scenarios:r.record(r.string(),r.array(L)).default({}),delta_log:r.array(W).default([])});import{createHash as F}from"node:crypto";x();function z(c){return c.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")}d(z,"slugifyRequirement");function J(c){return`delta-${F("sha256").update(c.trim()).digest("hex").slice(0,12)}`}d(J,"deltaIdFor");function v(c){return[...c].sort((t,e)=>t.ts===e.ts?t.id<e.id?-1:t.id>e.id?1:0:t.ts<e.ts?-1:1)}d(v,"sortDeltaLog");function U(c,t){let e=new Map;for(let n of[...c,...t])e.has(n.id)||e.set(n.id,n);return v([...e.values()])}d(U,"mergeDeltaLogs");function A(c){let t=new Set;for(let e of c)for(let n of[...e.ops.added,...e.ops.modified])t.add(n.statement);return t}d(A,"allDeltaStatements");function O(c){let t={order:[],statements:new Map,scenarios:new Map},e=d(n=>{t.statements.has(n.slug)||t.order.push(n.slug),t.statements.set(n.slug,n.statement),n.scenarios.length>0?t.scenarios.set(n.slug,n.scenarios):t.scenarios.delete(n.slug)},"upsert");for(let n of v(c)){for(let s of n.ops.added)e(s);for(let s of n.ops.modified)e(s);for(let s of n.ops.removed){t.statements.delete(s),t.scenarios.delete(s);let i=t.order.indexOf(s);i>=0&&t.order.splice(i,1)}}return t}d(O,"foldEntries");function Z(c){return O(c).statements}d(Z,"requirementStatements");function T(c){let t=O(c),e={};for(let n of t.order){let s=t.scenarios.get(n);s&&(e[n]=s)}return{acceptance_criteria:t.order.map(n=>t.statements.get(n)??""),scenarios:e}}d(T,"materializeDeltas");function V(c){let t=[],e=[],n=[],s={section:null,req:null,scenario:null},i=d(()=>{s.scenario&&s.req&&s.req.scenarios.push({name:s.scenario.name,given:s.scenario.given,when:s.scenario.when,then:s.scenario.then}),s.scenario=null},"flushScenario"),l=d(()=>{i();let a=s.req;if(s.req=null,!a)return;let o=z(a.name);if(!o)throw new Error(`DELTA_PARSE: requirement name yields an empty slug: "${a.name}"`);if(s.section==="removed"){n.push(o);return}let g=a.statementLines.join(`
8
+ `).trim();if(!g)throw new Error(`DELTA_PARSE: requirement "${a.name}" has no SHALL statement`);(s.section==="modified"?e:t).push({slug:o,name:a.name,statement:g,scenarios:a.scenarios})},"flushReq");for(let a of c.split(`
9
+ `)){let o=a.trim(),g=o.match(/^##\s+(ADDED|MODIFIED|REMOVED)\s+Requirements\s*$/i);if(g){l(),s.section=g[1].toLowerCase();continue}if(/^#{1,2}\s/.test(o)){l(),s.section=null;continue}let f=o.match(/^###\s+Requirement:\s*(.+)$/i);if(f){if(l(),!s.section)throw new Error('DELTA_PARSE: "### Requirement:" outside an ADDED/MODIFIED/REMOVED Requirements section');s.req={name:f[1].trim(),statementLines:[],scenarios:[]};continue}let S=o.match(/^####\s+Scenario:\s*(.+)$/i);if(S){if(i(),!s.req)throw new Error('DELTA_PARSE: "#### Scenario:" outside a "### Requirement:" block');s.scenario={name:S[1].trim(),given:[],when:[],then:[],last:null};continue}if(s.scenario&&o.startsWith("-")){let p=o.replace(/^-\s+/,"").match(/^(?:\*\*)?(GIVEN|WHEN|THEN|AND)\b\s*:?\s*(?:\*\*)?\s*(.*)$/i);if(p){let _=p[1].toUpperCase(),y=_==="AND"?s.scenario.last??"when":_.toLowerCase();s.scenario[y].push(p[2].trim()),s.scenario.last=y}continue}s.req&&!s.scenario&&o!==""&&s.req.statementLines.push(o)}if(l(),t.length+e.length+n.length===0)throw new Error("DELTA_EMPTY: no ADDED/MODIFIED/REMOVED Requirements sections found");return{added:t,modified:e,removed:n}}d(V,"parseDelta");function I(c,t,e={}){let n=V(t),s=e.id??J(t);if(c.delta_log.some(p=>p.id===s))return c;let i=O(c.delta_log).statements,l=new Set(n.added.map(p=>p.slug));for(let p of n.modified)if(!i.has(p.slug)&&!l.has(p.slug))throw new Error(`DELTA_UNKNOWN_REQUIREMENT: MODIFIED target "${p.name}" (slug: ${p.slug}) does not exist`);for(let p of n.removed)if(!i.has(p)&&!l.has(p))throw new Error(`DELTA_UNKNOWN_REQUIREMENT: REMOVED target slug "${p}" does not exist`);let a={id:s,ts:e.ts??m(),ops:n},o=v([...c.delta_log,a]),g=A(o),f=c.acceptance_criteria.filter(p=>!g.has(p)),S=T(o);return h.parse({...c,acceptance_criteria:[...f,...S.acceptance_criteria],scenarios:S.scenarios,delta_log:o})}d(I,"applyDelta");x();k();M();var E=class extends Error{constructor(e,n){super(`spec relational projection failed for ${e} (content write rolled back): ${n instanceof Error?n.message:String(n)}`);this.specId=e;this.name="SpecProjectionError"}specId;static{d(this,"SpecProjectionError")}};function w(c,t,e){try{u.run(c,"DELETE FROM spec_review WHERE spec_id = ?",t),u.run(c,"DELETE FROM spec_selected_reviewer WHERE spec_id = ?",t);for(let[n,s]of Object.entries(e.reviews??{}))u.run(c,"INSERT INTO spec_review (id, spec_id, lens, verdict, notes, created_at) VALUES (?, ?, ?, ?, ?, ?)",`${t}-rev-${n}`,t,n,s.verdict,s.notes??null,Date.now());for(let n of e.selected_reviewers)u.run(c,"INSERT OR IGNORE INTO spec_selected_reviewer (spec_id, lens) VALUES (?, ?)",t,n)}catch(n){throw new E(t,n)}}d(w,"projectSpecRelational");var C=class{static{d(this,"SpecStorage")}nextUpdatedAt(t,e){let n=m(),i=u.get(t,"SELECT updated_at FROM specs WHERE id = ?",e)?.updated_at;return!i||n>i?n:new Date(new Date(i).getTime()+1).toISOString()}create(t,e){let n=N(),s=m(),i=h.parse(e.content);try{u.transaction(t,()=>{u.run(t,`INSERT INTO specs (id, title, status, content, tags, created_at, updated_at)
10
+ VALUES (?, ?, 'draft', ?, ?, ?, ?)`,n,e.title,JSON.stringify(i),e.tags?JSON.stringify(e.tags):null,s,s),w(t,n,i)})}catch(a){if(a instanceof E)D.warn(a.message);else throw a}let l={id:n,title:e.title,status:"draft",content:i,tags:e.tags??{},createdAt:s,updatedAt:s,shippedAt:null,shippedPr:null,shippedSha:null,archivedAt:null};return this.publishSync(t,l),l}get(t,e){let n=u.get(t,"SELECT * FROM specs WHERE id = ?",e);return n?this.rowToSpec(n):null}list(t,e={}){let n=[];e.status&&n.push(e.status);let i=`SELECT * FROM specs WHERE 1=1${e.status?" AND status = ?":e.includeArchived?"":" AND status != 'archived'"} ORDER BY created_at DESC`;return u.query(t,i,...n).map(a=>this.rowToSpec(a))}search(t,e){let n=`%${e}%`;return u.query(t,"SELECT * FROM specs WHERE title LIKE ? OR content LIKE ? ORDER BY created_at DESC",n,n).map(i=>this.rowToSpec(i))}updateContent(t,e,n){let s=h.parse(n),i=this.nextUpdatedAt(t,e);try{u.transaction(t,()=>{u.run(t,"UPDATE specs SET content = ?, updated_at = ? WHERE id = ?",JSON.stringify(s),i,e),w(t,e,s)})}catch(a){if(a instanceof E)D.warn(a.message);else throw a}let l=this.get(t,e);return l&&this.publishSync(t,l),l}casUpdate(t,e,n,s){let i=h.parse(n),l=this.nextUpdatedAt(t,e),a=(()=>{try{return u.transaction(t,()=>{let g=u.run(t,"UPDATE specs SET content = ?, updated_at = ? WHERE id = ? AND updated_at = ?",JSON.stringify(i),l,e,s).changes===1;return g&&w(t,e,i),g})}catch(o){if(o instanceof E)return D.warn(o.message),!1;throw o}})();if(a){let o=this.get(t,e);o&&this.publishSync(t,o)}return a}setStatus(t,e,n){if(!R.includes(n))throw new Error(`invalid spec status: ${n}`);let s=this.nextUpdatedAt(t,e),i=[],l=[n,s];n==="shipped"&&(i.push("shipped_at = ?"),l.push(s)),n==="archived"&&(i.push("archived_at = ?"),l.push(s));let a=["status = ?","updated_at = ?",...i].join(", ");l.push(e),u.run(t,`UPDATE specs SET ${a} WHERE id = ?`,...l);let o=this.get(t,e);return o&&this.publishSync(t,o),o}setShippedPr(t,e,n){u.run(t,"UPDATE specs SET shipped_pr = ?, updated_at = ? WHERE id = ?",n,this.nextUpdatedAt(t,e),e);let s=this.get(t,e);return s&&this.publishSync(t,s),s}setShippedSha(t,e,n){u.run(t,"UPDATE specs SET shipped_sha = ?, updated_at = ? WHERE id = ?",n,this.nextUpdatedAt(t,e),e);let s=this.get(t,e);return s&&this.publishSync(t,s),s}linkTask(t,e,n){let s=this.get(t,e);if(!s)return null;if(s.content.linked_tasks.includes(n))return s;let i={...s.content,linked_tasks:[...s.content.linked_tasks,n]};return this.updateContent(t,e,i)}delete(t,e){let n=this.get(t,e);return n?(u.run(t,"DELETE FROM specs WHERE id = ?",e),this.publishSync(t,n,"delete"),!0):!1}applyRemote(t,e){if(!e.id)return;let n=typeof e.content=="string"?e.content:JSON.stringify(e.content??{}),s=R.includes(e.status)?e.status:"draft",i=e.tags==null?null:typeof e.tags=="string"?e.tags:JSON.stringify(e.tags),l=m();if(u.run(t,`INSERT INTO specs (id, title, status, content, tags, created_at, updated_at)
11
+ VALUES (?, ?, ?, ?, ?, ?, ?)
12
+ ON CONFLICT(id) DO NOTHING`,e.id,e.title??"",s,n,i,e.created_at||l,e.updated_at||l).changes>0){try{let o=h.parse(JSON.parse(n));w(t,e.id,o)}catch{}return}this.mergeRemoteContent(t,e.id,n,e.updated_at)}mergeRemoteContent(t,e,n,s){let i=this.get(t,e);if(!i)return;let l=(()=>{try{return h.parse(JSON.parse(n))}catch{return null}})();if(!l||i.content.delta_log.length===0||l.delta_log.length===0)return;let a=U(i.content.delta_log,l.delta_log),o=(s??"")>i.updatedAt?l:i.content,g=A(a),f=o.acceptance_criteria.filter(y=>!g.has(y)),S=T(a),p=a.length===i.content.delta_log.length&&a.length===l.delta_log.length,_={...o,acceptance_criteria:[...f,...S.acceptance_criteria],scenarios:S.scenarios,delta_log:a,reviews:p?i.content.reviews:{},selected_reviewers:p?i.content.selected_reviewers:[],audit_candidate_hash:p?i.content.audit_candidate_hash:null};JSON.stringify(_)!==JSON.stringify(i.content)&&this.casUpdate(t,e,_,i.updatedAt)}count(t){let e=u.query(t,"SELECT status, COUNT(*) AS n FROM specs GROUP BY status"),n={total:0,draft:0,shipped:0};for(let s of e)n.total+=s.n,s.status==="draft"&&(n.draft=s.n),s.status==="shipped"&&(n.shipped=s.n);return n}publishSync(t,e,n="upsert"){q({projectId:t,entityType:"specs",entityId:e.id,eventType:n,data:{id:e.id,title:e.title,status:e.status,content:e.content,tags:e.tags,created_at:e.createdAt,updated_at:e.updatedAt,shipped_at:e.shippedAt,shipped_pr:e.shippedPr,shipped_sha:e.shippedSha,archived_at:e.archivedAt}})}rowToSpec(t){return{id:t.id,title:t.title,status:R.includes(t.status)?t.status:"draft",content:h.parse(JSON.parse(t.content)),tags:t.tags?JSON.parse(t.tags):{},createdAt:t.created_at,updatedAt:t.updated_at,shippedAt:t.shipped_at,shippedPr:t.shipped_pr,shippedSha:t.shipped_sha,archivedAt:t.archived_at}}},ct=new C;export{R as a,h as b,v as c,A as d,Z as e,I as f,ct as g};
@@ -0,0 +1,8 @@
1
+ import { createRequire as __createRequire } from 'module';
2
+ import { fileURLToPath as __fileURLToPath } from 'url';
3
+ import { dirname as __pathDirname } from 'path';
4
+ const require = __createRequire(import.meta.url);
5
+ const __filename = __fileURLToPath(import.meta.url);
6
+ const __dirname = __pathDirname(__filename);
7
+ import{a as r}from"./chunk-3TRXQAU4.mjs";import k from"node:fs/promises";import w from"node:os";import P from"node:path";import{existsSync as v}from"node:fs";import h from"node:path";function x(){if(process.platform==="win32")return null;let t=process.execPath;if(!t)return null;let e=__dirname,o=[h.join(e,"prjct.mjs"),h.resolve(e,"..","prjct.mjs"),h.resolve(e,"..","..","dist","bin","prjct.mjs")].find(c=>v(c));return o?`${h.basename(t).includes("bun")?"":'NODE_OPTIONS="--experimental-sqlite${NODE_OPTIONS:+ $NODE_OPTIONS}" '}"${t}" "${o}"`:null}r(x,"directHookPrefix");function j(){if(process.platform==="win32")return null;let t=__dirname,e=`hook-fast-${process.platform}-${process.arch}`;return[h.join(t,e),h.resolve(t,"..",e),h.resolve(t,"..","..","dist","bin",e)].find(o=>v(o))??null}r(j,"nativeHookFastBinary");function S(t,e){let o=process.env.PRJCT_BIN??"prjct",s=e?`${e} `:"",c=`command -v ${o} >/dev/null 2>&1 && ${s}${o} hook ${t} || exit 0`;if(process.env.PRJCT_BIN)return c;let n=x();if(!n)return c;let i=`${s}${n} hook ${t}`,m=j();return`${m?`${s}"${m}" ${t} || ${i}`:i} || { ${c.replace(" || exit 0","")}; } || exit 0`}r(S,"hookCommandChain");function f(){let t=process.env.HOME||w.homedir();return P.join(t,".claude","settings.json")}r(f,"settingsPath");var p="_prjctManaged",R=10,g=[{event:"SessionStart",matcher:"",subcommand:"session-start"},{event:"UserPromptSubmit",matcher:"",subcommand:"prompt"},{event:"PreToolUse",matcher:"Bash",subcommand:"pre-bash"},{event:"PreToolUse",matcher:"Edit|Write",subcommand:"pre-edit"},{event:"PreToolUse",matcher:"Grep|Glob",subcommand:"pre-search"},{event:"PostToolUse",matcher:"Edit|Write",subcommand:"post-edit"},{event:"Stop",matcher:"",subcommand:"stop"},{event:"SubagentStart",matcher:"",subcommand:"subagent-start"},{event:"SubagentStop",matcher:"",subcommand:"subagent-stop"},{event:"Notification",matcher:"",subcommand:"notification"},{event:"CwdChanged",matcher:"",subcommand:"cwd-changed"}];function H(t){let e=t.command?.match(/\bhook\s+(\S+)/);return e?e[1]:null}r(H,"subcommandOf");function N(t){let e=new Set(g.map(s=>s.subcommand)),o=[];for(let s of Object.keys(t)){let c=t[s],n=[];for(let i of c)i.hooks=i.hooks.filter(m=>{if(!d(m))return!0;let u=H(m);return u&&!e.has(u)?(o.push(m),!1):!0}),i.hooks.length>0&&n.push(i);n.length>0?t[s]=n:delete t[s]}return o.length}r(N,"pruneOrphanedManagedHooks");async function b(){try{let t=await k.readFile(f(),"utf-8"),e=JSON.parse(t);return e&&typeof e=="object"?e:{}}catch(t){if(t.code==="ENOENT")return{};throw t}}r(b,"readSettings");async function O(t){await k.mkdir(P.dirname(f()),{recursive:!0}),await k.writeFile(f(),`${JSON.stringify(t,null,2)}
8
+ `,"utf-8")}r(O,"writeSettings");function M(t){return S(t)}r(M,"hookCommand");function d(t){return t[p]===!0}r(d,"isPrjctHook");function _(t){if(t[p]===!0)return!1;let e=t.command?.trim()??"";return/(^|\/|\s)prjct\s+hook\s+\S+/.test(e)}r(_,"isLegacyPrjctHook");function y(t){let e={type:"command",command:M(t.subcommand),timeout:R,[p]:!0},o="ifClause"in t?t.ifClause:void 0;return typeof o=="string"&&o&&(e.if=o),e}r(y,"hookEntryFor");async function D(){let t=await b(),e=t.hooks??{},o=[],s=[];for(let n of g){let i=e[n.event]??[],m=i.find(a=>(a.matcher??"")===n.matcher),u=m??{matcher:n.matcher,hooks:[]};m||i.push(u);let E=u.hooks.length;u.hooks=u.hooks.filter(a=>!_(a));let $=E-u.hooks.length,l=u.hooks.find(a=>d(a)&&H(a)===n.subcommand);if(l){let a=y(n);l.command===a.command&&l.if===a.if&&l.timeout===a.timeout&&$===0?s.push(n):(l.command=a.command,l.if=a.if,l.timeout=a.timeout,o.push(n))}else u.hooks.push(y(n)),o.push(n);e[n.event]=i}let c=N(e);return t.hooks=e,await O(t),{settingsPath:f(),hooksWritten:o.length,alreadyPresent:s.length,hooksPruned:c}}r(D,"install");async function K(){let t=await b();if(!t.hooks)return{settingsPath:f(),hooksRemoved:0};let e=[];for(let[o,s]of Object.entries(t.hooks)){let c=[];for(let n of s){let i=n.hooks.filter(m=>d(m)?(e.push(m),!1):!0);i.length>0&&c.push({...n,hooks:i})}c.length>0?t.hooks[o]=c:delete t.hooks[o]}return Object.keys(t.hooks).length===0&&delete t.hooks,await O(t),{settingsPath:f(),hooksRemoved:e.length}}r(K,"uninstall");async function G(){let e=(await b()).hooks??{};return{installed:Object.values(e).flat().flatMap(s=>s.hooks).filter(d).length,expected:g.length}}r(G,"status");export{S as a,R as b,g as c,D as d,K as e,G as f};
@@ -0,0 +1,8 @@
1
+ import { createRequire as __createRequire } from 'module';
2
+ import { fileURLToPath as __fileURLToPath } from 'url';
3
+ import { dirname as __pathDirname } from 'path';
4
+ const require = __createRequire(import.meta.url);
5
+ const __filename = __fileURLToPath(import.meta.url);
6
+ const __dirname = __pathDirname(__filename);
7
+ import{a as o}from"./chunk-3TRXQAU4.mjs";function l(n){n.token&&(n.args.push(n.token),n.token="")}o(l,"commitToken");function u(n){l(n),n.args.length!==0&&(n.commands.push(n.args),n.args=[])}o(u,"commitCommand");function m(n){let t={commands:[],args:[],token:"",quote:null,escaped:!1,skipSeparatorTwin:!1},s=[...n];return s.forEach((e,r)=>{if(t.skipSeparatorTwin){t.skipSeparatorTwin=!1;return}if(t.escaped){t.token+=e,t.escaped=!1;return}if(e==="\\"&&t.quote!=="'"){t.escaped=!0;return}if(t.quote){e===t.quote?t.quote=null:t.token+=e;return}if(e==="'"||e==='"'){t.quote=e;return}if(/\s/.test(e)){l(t),e===`
8
+ `&&u(t);return}if(e===";"||e==="|"||e==="&"){u(t),t.skipSeparatorTwin=(e==="|"||e==="&")&&s[r+1]===e;return}t.token+=e}),u(t),t.commands}o(m,"shellCommands");var a=new Set(["-u","--unset","-C","--chdir"]),p=new Set(["u","C"]),S=new Set(["-C","--close-from","-D","--chdir","-g","--group","-h","--host","-p","--prompt","-R","--chroot","-r","--role","-T","--command-timeout","-t","--type","-u","--user"]),c=new Set(["C","D","g","h","p","R","r","T","t","u"]);function i(n,t,s=new Set){for(;n[0]?.startsWith("-");){let e=n.shift();if(e==="--")return;if(t.has(e)){n.shift();continue}let r=e.startsWith("--"),f=e.at(-1);!r&&f&&s.has(f)&&n.shift()}}o(i,"discardWrapperOptions");function d(n){let t=[...n];for(;t.length>0;){let s=t[0],e=s.split("/").at(-1)?.toLowerCase();if(/^[A-Za-z_][A-Za-z0-9_]*=/.test(s))t.shift();else if(e==="sudo")t.shift(),i(t,S,c);else if(e==="env")for(t.shift(),i(t,a,p);t[0]?.includes("=");)t.shift();else if(e==="command"){if(t.shift(),t[0]==="-v"||t[0]==="-V")return[];i(t,new Set)}else if(e==="nohup")t.shift(),i(t,new Set);else return t}return t}o(d,"unwrapCommand");export{m as a,d as b};
@@ -0,0 +1,10 @@
1
+ import { createRequire as __createRequire } from 'module';
2
+ import { fileURLToPath as __fileURLToPath } from 'url';
3
+ import { dirname as __pathDirname } from 'path';
4
+ const require = __createRequire(import.meta.url);
5
+ const __filename = __fileURLToPath(import.meta.url);
6
+ const __dirname = __pathDirname(__filename);
7
+ import{a as u}from"./chunk-XLFEWZRA.mjs";import{a as r}from"./chunk-3TRXQAU4.mjs";import{readSync as c}from"node:fs";import{isatty as d}from"node:tty";var p=new Set(["SessionStart","UserPromptSubmit","PreToolUse","PostToolUse"]);function T(e,t){return{hookSpecificOutput:{hookEventName:e,permissionDecision:"deny",permissionDecisionReason:a(t)}}}r(T,"buildDenyOutput");function f(e){let t=(e??"claude").trim().toLowerCase();return t==="gemini"||t==="codex"||t==="cursor"||t==="kimi"?t:"claude"}r(f,"hookHostFrom");function g(){return f(process.env.PRJCT_HOOK_HOST)}r(g,"currentHookHost");function m(e,t=g()){return t==="claude"||t==="codex"||!e||Object.keys(e).length===0?e:t==="gemini"?h(e):t==="cursor"?k(e):t==="kimi"?l(e):e}r(m,"adaptHookOutputForHost");function l(e){if(e.hookSpecificOutput?.permissionDecision==="deny")return e;let n=e;return n.hookSpecificOutput?.additionalContext?n.hookSpecificOutput.additionalContext:n.systemMessage?n.systemMessage:e}r(l,"adaptForKimi");function h(e){let t=e;if(t.hookSpecificOutput?.permissionDecision==="deny")return{decision:"deny",reason:t.hookSpecificOutput.permissionDecisionReason??"blocked by prjct"};let n=e,o=n.hookSpecificOutput;return o?.additionalContext?{hookSpecificOutput:{hookEventName:y(o.hookEventName),additionalContext:o.additionalContext}}:n.systemMessage?{systemMessage:n.systemMessage}:e}r(h,"adaptForGemini");function k(e){let t=e;if(t.hookSpecificOutput?.permissionDecision==="deny")return{decision:"deny",reason:t.hookSpecificOutput.permissionDecisionReason??"blocked by prjct",permissionDecision:"deny",permissionDecisionReason:t.hookSpecificOutput.permissionDecisionReason??"blocked by prjct"};let n=e,o=n.hookSpecificOutput;return o?.additionalContext?{hookSpecificOutput:{hookEventName:S(o.hookEventName),additional_context:o.additionalContext},additional_context:o.additionalContext}:n.systemMessage?{systemMessage:n.systemMessage}:e}r(k,"adaptForCursor");function y(e){switch(e){case"UserPromptSubmit":return"BeforeAgent";case"PreToolUse":return"BeforeTool";case"PostToolUse":return"AfterTool";case"Stop":return"AfterAgent";default:return e}}r(y,"mapClaudeEventToGemini");function S(e){switch(e){case"SessionStart":return"sessionStart";case"UserPromptSubmit":return"beforeSubmitPrompt";case"PreToolUse":return"preToolUse";case"PostToolUse":return"postToolUse";case"Stop":return"stop";case"SubagentStart":return"subagentStart";case"SubagentStop":return"subagentStop";default:return e.charAt(0).toLowerCase()+e.slice(1)}}r(S,"mapClaudeEventToCursor");function O(e){if(d(0))return Buffer.alloc(0);try{process.stdin.fd}catch{}let t=Date.now()+e,n=new Int32Array(new SharedArrayBuffer(4)),o=Buffer.alloc(65536),i=[];for(;;)try{let s=c(0,o,0,o.length,null);if(s===0)break;i.push(Buffer.from(o.subarray(0,s)))}catch(s){if(s.code==="EAGAIN"&&Date.now()<t){Atomics.wait(n,0,0,1);continue}break}return Buffer.concat(i)}r(O,"readStdinRaw");function C(){try{let e=O(200).toString("utf-8").trim();return e?JSON.parse(e):{}}catch{return{}}}r(C,"readStdinSafe");function w(e){let t=m(e);process.stdout.write(typeof t=="string"?`${t}
8
+ `:`${JSON.stringify(t)}
9
+ `)}r(w,"emit");function D(){w({})}r(D,"emitEmpty");async function v(e){try{await e()}catch{D()}}r(v,"safeRun");var b=new Set(["this","that","with","from","have","your","please","would","about","there","these","those","what","when","where","which","while","will","been","were","they","them","their","que","como","cuando","donde","porque","para","pero","por","con","sin","los","las","del","una","uno","unos","unas","este","esta","esto","estos","estas","eso","esos","esas","mas","muy","todo","toda","todos","todas","sobre","entre","hasta","desde","hace","hacer","tiene","tienen","debe","deben","puede","pueden","estan","ser","son","algo","ahora","aqui","bien","cada","dale"]);function E(e,t=8){let n=u(e.replace(/([a-z0-9])([A-Z])/g,"$1 $2").replace(/([A-Z]+)([A-Z][a-z])/g,"$1 $2")).toLowerCase(),o=new Set,i=[];for(let s of n.split(/[^\p{L}\p{N}]+/u))if(!(s.length<3)&&!b.has(s)&&!o.has(s)&&(o.add(s),i.push(s),i.length>=t))break;return i}r(E,"extractKeywords");function a(e){return e.replace(/[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?<![\uD800-\uDBFF])[\uDC00-\uDFFF]/g,"\uFFFD")}r(a,"stripLoneSurrogates");function A(e,t,n=`
10
+ \u2026 [truncated]`){if(e.length<=t)return e;let o=Math.max(0,t-n.length),i=e.charCodeAt(o-1),s=i>=55296&&i<=56319?o-1:o;return e.slice(0,Math.max(0,s))+n}r(A,"safeTruncate");function N(e,t){if(!t)return{};let n=a(t);return p.has(e)?{hookSpecificOutput:{hookEventName:e,additionalContext:n}}:{systemMessage:n}}r(N,"buildHookOutput");export{T as a,f as b,g as c,m as d,C as e,w as f,v as g,E as h,A as i,N as j};
@@ -0,0 +1,7 @@
1
+ import { createRequire as __createRequire } from 'module';
2
+ import { fileURLToPath as __fileURLToPath } from 'url';
3
+ import { dirname as __pathDirname } from 'path';
4
+ const require = __createRequire(import.meta.url);
5
+ const __filename = __fileURLToPath(import.meta.url);
6
+ const __dirname = __pathDirname(__filename);
7
+ import{a as f}from"./chunk-3TRXQAU4.mjs";function r(n,i){let t=n.indexOf(`--${i}`);if(t>=0&&n[t+1])return n[t+1];let e=n.find(d=>d.startsWith(`--${i}=`));return e?e.slice(i.length+3):void 0}f(r,"flag");export{r as a};
@@ -0,0 +1,12 @@
1
+ import { createRequire as __createRequire } from 'module';
2
+ import { fileURLToPath as __fileURLToPath } from 'url';
3
+ import { dirname as __pathDirname } from 'path';
4
+ const require = __createRequire(import.meta.url);
5
+ const __filename = __fileURLToPath(import.meta.url);
6
+ const __dirname = __pathDirname(__filename);
7
+ import{a as R,b as z}from"./chunk-RP7F67ZT.mjs";import{a as O,p as C}from"./chunk-D62TAZG6.mjs";import{a as k,e as M,g as $}from"./chunk-225DWS4D.mjs";import{a as p}from"./chunk-3TRXQAU4.mjs";$();C();z();import L from"node:fs/promises";import x from"node:path";var E={frontend:["component","page","view","ui","layout","style","css","scss","sass","hook","context","store","redux","zustand","react","vue","svelte","angular","next","nuxt","app","client"],backend:["api","route","controller","service","middleware","handler","resolver","schema","model","entity","repository","server","socket","graphql","rest","trpc"],database:["migration","seed","schema","model","entity","repository","prisma","drizzle","sequelize","typeorm","mongoose","knex","sql","db"],auth:["auth","login","logout","session","token","jwt","oauth","passport","credential","permission","role","user","account"],testing:["test","spec","e2e","integration","unit","mock","fixture","stub","jest","vitest","cypress","playwright"],config:["config","env","setting","constant","option","tsconfig","eslint","prettier","vite","webpack","rollup"],infra:["docker","compose","kubernetes","k8s","ci","cd","github","gitlab","jenkins","terraform","ansible","deploy"],util:["util","helper","lib","common","shared","core","base","abstract"]},j=new Set([".ts",".tsx",".js",".jsx",".mjs",".cjs",".py",".go",".rs",".java",".kt",".swift",".rb",".php",".c",".cpp",".h",".hpp",".cs",".vue",".svelte"]),A=new Set(["node_modules",".git","dist","build",".next",".nuxt",".output","coverage",".cache","__pycache__",".pytest_cache","vendor","target",".turbo",".vercel"]),T=new Set(["a","an","the","and","or","but","is","are","was","were","be","been","being","have","has","had","do","does","did","will","would","could","should","may","might","must","shall","can","need","to","of","in","for","on","with","at","by","from","as","into","through","during","before","after","above","below","between","under","again","further","then","once","here","there","when","where","why","how","all","each","few","more","most","other","some","such","no","nor","not","only","own","same","so","than","too","very","just","add","create","make","implement","fix","update","change","modify","remove","delete","new"]);async function Z(s,e,o={}){let a=Date.now(),r=o.maxFiles??30,n=o.minScore??.1,t=o.includeTests??!1,m=W(s),l=await P(e),i=await B(e),c=[];for(let h of l){if(!t&&G(h))continue;let u=q(h,m,i,o.historicalBoosts);u.score>=n&&c.push(u)}c.sort((h,u)=>u.score-h.score);let g=c.slice(0,r);return{files:g,metrics:{filesScanned:l.length,filesReturned:g.length,scanDuration:Date.now()-a}}}p(Z,"findRelevantFiles");function W(s){return s.toLowerCase().split(/[^a-z0-9]+/).filter(Boolean).filter(o=>!T.has(o)&&o.length>2)}p(W,"extractKeywords");async function P(s){let e=[];async function o(a,r=""){try{let n=await L.readdir(a,{withFileTypes:!0});for(let t of n){let m=x.join(a,t.name),l=x.join(r,t.name);if(t.isDirectory()){if(A.has(t.name)||t.name.startsWith("."))continue;await o(m,l)}else if(t.isFile()){let i=x.extname(t.name).toLowerCase();j.has(i)&&e.push(l)}}}catch(n){k(n)||R.debug(`files-tool: skipped unreadable path during walk: ${M(n)}`)}}return p(o,"walk"),await o(s),e}p(P,"getAllCodeFiles");async function B(s){let e=new Map;try{let{stdout:o}=await O(`git log -30 --pretty=format:"%H %ct" --name-only | awk '
8
+ /^[a-f0-9]{40}/ { commit=$1; timestamp=$2; next }
9
+ NF { files[$0]++; if (!lastmod[$0]) lastmod[$0]=timestamp }
10
+ END { for (const f in files) print files[f], lastmod[f], f }
11
+ '`,{cwd:s,maxBuffer:10485760}),a=Math.floor(Date.now()/1e3),r=o.trim().split(`
12
+ `).filter(Boolean);for(let n of r){let t=n.match(/^(\d+)\s+(\d+)\s+(.+)$/);if(t){let m=parseInt(t[1],10),l=parseInt(t[2],10),i=t[3],c=Math.floor((a-l)/86400);e.set(i,{commits:m,daysAgo:c})}}}catch{}return e}p(B,"getGitRecency");function q(s,e,o,a){let r=[],n=s.toLowerCase(),t=n.split("/").join(" ").split(/[^a-z0-9]+/),m=Math.min(1,e.reduce((_,d)=>{let y=n.includes(d);y&&r.push(`keyword:${d}`);let S=t.some(w=>w.includes(d)||d.includes(w));return _+(y?.3:0)+(S?.15:0)},0)),l=Math.min(1,Object.entries(E).reduce((_,[d,y])=>{let S=y.some(b=>n.includes(b)),w=e.some(b=>y.includes(b)||b.includes(d)||d.includes(b));return S&&w&&r.push(`domain:${d}`),_+(S&&w?.4:0)},0)),i=o.get(s),c=i?i.daysAgo<=1?1:i.daysAgo<=3?.8:i.daysAgo<=7?.6:i.daysAgo<=30?.3:0:0,g=c===1?"recent:1d":c===.8?"recent:3d":c===.6?"recent:1w":c===.3?"recent:1m":null;g&&r.push(g);let h=Math.min(1,c+(i&&i.commits>=5?.2:0)),u=x.basename(s).toLowerCase(),v=u.includes("index")||u.includes("main")||u.includes("app")||u.includes("entry"),F=n.includes("/core/")||n.includes("/shared/")||n.includes("/lib/"),D=v?.5:F?.3:0;v?r.push("import:0"):F&&r.push("import:1");let f=a?.get(s),N=f===void 0?0:(f+1)/2;f!==void 0&&f>0?r.push("history:boosted"):f!==void 0&&f<0&&r.push("history:penalized");let I=a&&a.size>0?m*.54+l*.18+h*.13+D*.05+N*.1:m*.6+l*.2+h*.15+D*.05;return{path:s,score:Math.min(1,I),reasons:[...new Set(r)]}}p(q,"scoreFile");function G(s){let e=s.toLowerCase();return e.includes(".test.")||e.includes(".spec.")||e.includes("__tests__")||e.includes("__mocks__")||e.includes("/tests/")||e.includes("/test/")||e.endsWith("_test.go")||e.endsWith("_test.py")}p(G,"isTestFile");export{Z as a};
@@ -0,0 +1,7 @@
1
+ import { createRequire as __createRequire } from 'module';
2
+ import { fileURLToPath as __fileURLToPath } from 'url';
3
+ import { dirname as __pathDirname } from 'path';
4
+ const require = __createRequire(import.meta.url);
5
+ const __filename = __fileURLToPath(import.meta.url);
6
+ const __dirname = __pathDirname(__filename);
7
+ import{a as m}from"./chunk-BQKDJ3U6.mjs";import{a as n}from"./chunk-3TRXQAU4.mjs";var d={high:50,medium:25,low:5};function g(t){return t.unblocks*100+t.priorityPts+t.ageDays*2+t.impactNeighbors*5+t.impactTraps*15+t.sotPressure*20}n(g,"scoreReadyFactors");function k(t){return t?d[t.toLowerCase()]??15:15}n(k,"priorityPoints");function R(t,s){let r=Date.parse(t);return Number.isNaN(r)?0:Math.max(0,Math.floor((s-r)/(1440*60*1e3)))}n(R,"ageDaysSince");function f(t,s){let r=[];return t.unblocks>0&&r.push(`unblocks ${t.unblocks}`),t.impactTraps>0&&r.push(`${t.impactTraps} trap(s)`),t.impactNeighbors>0&&r.push(`${t.impactNeighbors} blast neighbor(s)`),t.sotPressure>0&&r.push(`SoT pressure ${t.sotPressure}`),t.priorityPts>=50&&r.push("high priority"),r.length===0&&r.push("oldest ready / default rank"),`why next: ${r.join(" \xB7 ")} (score=${Math.round(s)})`}n(f,"formatWhyNext");function w(t){let s=t.map(r=>{let e=g(r.factors);return{...r,impactScore:e,why:f(r.factors,e)}});return s.sort((r,e)=>e.impactScore!==r.impactScore?e.impactScore-r.impactScore:e.unblocks!==r.unblocks?e.unblocks-r.unblocks:r.createdAt.localeCompare(e.createdAt)),s}n(w,"rankByFactors");function I(t){let s=/\b[\w.-]+(?:\/[\w.-]+)+\.(?:ts|tsx|js|jsx|mjs|cjs|json|md|sh|toml|yml|yaml)\b/g,r=t.match(s)??[],e=t.toLowerCase().split(/[^a-z0-9_./-]+/).filter(a=>a.length>=4&&!x.has(a)).slice(0,6);return[...new Set([...r,...e])].slice(0,8)}n(I,"seedHintsFromDescription");var x=new Set(["that","this","with","from","into","have","should","must","will","task","work","item","build","implement","feature","fix"]);function N(t,s,r={}){let e=r.nowMs??Date.now(),a=s.map(o=>{let p=I(o.description),u=(()=>{if(p.length===0)return{impactNeighbors:0,impactTraps:0,sotPressure:0};try{let i=m(t,p,6);return{impactNeighbors:i.neighbors.length,impactTraps:i.traps.length,sotPressure:i.traps.filter(c=>c.type==="gotcha"||c.type==="decision"||c.type==="fact").length}}catch{return{impactNeighbors:0,impactTraps:0,sotPressure:0}}})(),{impactNeighbors:h,impactTraps:l,sotPressure:b}=u,y={unblocks:o.unblocks,priorityPts:k(o.priority),ageDays:R(o.createdAt,e),impactNeighbors:h,impactTraps:l,sotPressure:b};return{...o,factors:y}});return w(a)}n(N,"rankReadyWithImpact");export{N as a};
@@ -0,0 +1,7 @@
1
+ import { createRequire as __createRequire } from 'module';
2
+ import { fileURLToPath as __fileURLToPath } from 'url';
3
+ import { dirname as __pathDirname } from 'path';
4
+ const require = __createRequire(import.meta.url);
5
+ const __filename = __fileURLToPath(import.meta.url);
6
+ const __dirname = __pathDirname(__filename);
7
+ import{F as a,G as o}from"./chunk-HU5ERAAV.mjs";import{a as r}from"./chunk-3TRXQAU4.mjs";o();import i from"node:fs";import c from"node:path";var e=r(()=>a.getStatePath(),"stampDir"),s=r(()=>c.join(e(),"installed-version"),"stampPath");function l(){try{return i.readFileSync(s(),"utf-8").trim()}catch{return null}}r(l,"readStamp");function u(t){try{i.mkdirSync(e(),{recursive:!0}),i.writeFileSync(s(),t,"utf-8")}catch{}}r(u,"writeStamp");function S(t){return t?l()===t:!0}r(S,"isSyncCurrent");async function g(t){if(t&&process.env.PRJCT_NO_SELF_SYNC!=="1"){try{let{installGlobalConfig:n}=await import("./command-installer-XIQK2G6W.mjs");await n()}catch{}try{await(await import("./settings-installer-4XHM3HAZ.mjs")).install()}catch{}try{let{SetupCommands:n}=await import("./setup-GHS24ER5.mjs");await new n().installStatusLine()}catch{}u(t)}}r(g,"runSelfHeal");export{S as a,g as b};
@@ -0,0 +1,14 @@
1
+ import { createRequire as __createRequire } from 'module';
2
+ import { fileURLToPath as __fileURLToPath } from 'url';
3
+ import { dirname as __pathDirname } from 'path';
4
+ const require = __createRequire(import.meta.url);
5
+ const __filename = __fileURLToPath(import.meta.url);
6
+ const __dirname = __pathDirname(__filename);
7
+ import{a as y,b as N}from"./chunk-YOGI4WE6.mjs";import{b as k}from"./chunk-3USVY66O.mjs";import{c as d,d as l,e as u,f,g as j}from"./chunk-2EEMQV7N.mjs";import{f as g,h as p,l as m,p as P}from"./chunk-HYIT7MF5.mjs";import{a}from"./chunk-3TRXQAU4.mjs";P();import c from"node:path";var A=[{scriptName:"typecheck",kind:"typecheck"},{scriptName:"lint",kind:"lint"},{scriptName:"test",kind:"test"},{scriptName:"build",kind:"build"},{scriptName:"dev",kind:"dev"},{scriptName:"format",kind:"format"}],R=[{file:"bun.lock",manager:"bun"},{file:"bun.lockb",manager:"bun"},{file:"pnpm-lock.yaml",manager:"pnpm"},{file:"yarn.lock",manager:"yarn"},{file:"package-lock.json",manager:"npm"}];async function w(t){for(let{file:n,manager:e}of R)if(await m(c.join(t,n)))return e;return null}a(w,"detectPackageManager");async function M(t){let n=c.join(t,"package.json");if(!await m(n))return[];let r=(await g(n,null))?.scripts??{};return A.filter(({scriptName:i})=>!!r[i]).map(({scriptName:i,kind:o})=>{let s=r[i];return{scriptName:i,command:s,kind:o,mutating:x(s)}})}a(M,"detectNodeCommands");async function _(t){return await m(c.join(t,"Cargo.toml"))?[{scriptName:"test",command:"cargo test",kind:"test",mutating:!1},{scriptName:"build",command:"cargo build",kind:"build",mutating:!1},{scriptName:"lint",command:"cargo clippy",kind:"lint",mutating:!1},{scriptName:"format",command:"cargo fmt",kind:"format",mutating:!0}]:[]}a(_,"detectCargoCommands");async function h(t){return await m(c.join(t,"go.mod"))?[{scriptName:"test",command:"go test ./...",kind:"test",mutating:!1},{scriptName:"build",command:"go build ./...",kind:"build",mutating:!1},{scriptName:"format",command:"gofmt -l .",kind:"format",mutating:!1}]:[]}a(h,"detectGoCommands");var V=[{marker:/\[tool\.pytest\b/,scriptName:"test",command:"pytest",kind:"test",mutating:!1},{marker:/\[tool\.ruff\b/,scriptName:"lint",command:"ruff check .",kind:"lint",mutating:!1},{marker:/\[tool\.black\b/,scriptName:"format",command:"black .",kind:"format",mutating:!0},{marker:/\[tool\.mypy\b/,scriptName:"typecheck",command:"mypy .",kind:"typecheck",mutating:!1}];async function T(t){let n=c.join(t,"pyproject.toml");if(!await m(n))return[];let e=await p(n,"");return V.filter(({marker:r})=>r.test(e)).map(({marker:r,...i})=>i)}a(T,"detectPythonCommands");async function C(t){let[n,e,r,i,o]=await Promise.all([M(t),_(t),h(t),T(t),w(t)]);return{packageManager:o,commands:[...n,...e,...r,...i]}}a(C,"detectVerifiedCommands");var E=/^(?:--fix|--write|--update|-w|--fix-type)$/,S=new Set(["migrate","push","publish","deploy","release","commit"]);function x(t){for(let n of y(t)){let e=N(n);if(e.some(r=>E.test(r))||e.some(r=>S.has(r.toLowerCase())))return!0}return!1}a(x,"classifyCommandMutation");j();var O=6,I=3,G=80;function K(t){let n=new Set;return t.filter(e=>n.has(e.kind)?!1:(n.add(e.kind),!0))}a(K,"dedupeByKind");function L(t,n){let e=t.replace(/\s+/g," ").trim();return e.length>n?`${e.slice(0,n-1)}\u2026`:e}a(L,"truncate");async function $(t){try{let n=await k.getProjectId(t),{getActiveProjectStyle:e}=await import("./project-style-evolution-5W25UPPN.mjs"),r=e(n);if(!r)return null;let i=r.payload.stack,o=[i.ecosystem&&i.ecosystem!=="unknown"?i.ecosystem:null,i.languages.slice(0,I).join(", ")||null,i.frameworks.slice(0,O).join(", ")||null].filter(s=>!!s);return o.length>0?o.join(" \xB7 "):null}catch{return null}}a($,"buildStackLine");async function b(t){let[n,e]=await Promise.all([$(t),C(t)]),r=K(e.commands);if(!n&&r.length===0)return null;let i=[];n&&i.push(`- stack: ${n}`);for(let o of r){let s=o.mutating?"mutating":"read-only";i.push(`- ${o.kind}: \`${L(o.command,G)}\` (${s})`)}return i.push("- deeper: `prjct context --md` \xB7 `prjct_analysis` MCP \xB7 `prjct_relevant_files` MCP"),i.join(`
8
+ `)}a(b,"buildProjectFactsSection");async function B(t){let n=await b(t),e=[u];return n&&e.push("","## This project",n),e.join(`
9
+ `)}a(B,"buildPrjctMdBody");async function Y(t){let n=await B(t),e=`${d}
10
+ ${n}
11
+ ${l}
12
+ `;return f(t,"PRJCT.md",e)}a(Y,"writeProjectPrjctMd");async function z(t){let n=await b(t);return n?["# Project facts","",n].join(`
13
+ `):["# Project facts","","No verified facts yet \u2014 run `prjct sync` for the stack line, and make sure a recognized manifest exists (package.json / Cargo.toml / go.mod / pyproject.toml) for verified commands."].join(`
14
+ `)}a(z,"formatProjectFactsMd");export{b as a,B as b,Y as c,z as d};
@@ -0,0 +1,20 @@
1
+ import { createRequire as __createRequire } from 'module';
2
+ import { fileURLToPath as __fileURLToPath } from 'url';
3
+ import { dirname as __pathDirname } from 'path';
4
+ const require = __createRequire(import.meta.url);
5
+ const __filename = __fileURLToPath(import.meta.url);
6
+ const __dirname = __pathDirname(__filename);
7
+ import{b as P}from"./chunk-V7VA4EQX.mjs";import{b,f as I,g as p}from"./chunk-YJOC2JJK.mjs";import{a as j,b as $,c as T,e as D}from"./chunk-MXJKULJY.mjs";import{b as _}from"./chunk-LZC6NGB6.mjs";import{b as C}from"./chunk-3USVY66O.mjs";import{g as v,i as N}from"./chunk-DMO3ZFUG.mjs";import{e as k,l as O}from"./chunk-HU5ERAAV.mjs";import{b as E,p as L}from"./chunk-D62TAZG6.mjs";import{a as f}from"./chunk-3TRXQAU4.mjs";O();L();N();import{createHash as F}from"node:crypto";function S(n){let s={goal:n.goal,eli10:n.eli10,stakes:n.stakes,acceptance_criteria:n.acceptance_criteria,scope:n.scope,out_of_scope:n.out_of_scope,risks:n.risks,test_plan:n.test_plan,scenarios:n.scenarios};return F("sha256").update(JSON.stringify(s)).digest("hex")}f(S,"computeAuditCandidateHash");function G(n,s,e){if(n.keywords.some(r=>r&&s.includes(r.toLowerCase())))return!0;for(let r of n.filePatterns)if(r.split("/").filter(t=>t&&!t.includes("*")).some(t=>e.some(a=>a.includes(t))))return!0;return!1}f(G,"domainMatchesSpec");function W(n,s=[]){let e=new Set(["architecture"]),r=[n.goal,n.eli10,n.stakes,...n.scope,...n.out_of_scope,...n.acceptance_criteria,...n.risks.flatMap(i=>[i.risk,i.mitigation])].join(" ").toLowerCase();if((n.stakes.trim()!==""||n.scope.length>=4||n.risks.length>=2)&&e.add("strategic"),/\b(cli|command|ui|ux|api|endpoint|flag|output|render|prompt)\b/.test(r)&&e.add("design"),/\b(auth|secret|token|crypto|password|payment|pii|permission|sandbox|exec|network)\b/.test(r)&&e.add("security"),/\b(schema|migration|sql|db|database|query|index|table|storage)\b/.test(r)&&e.add("data"),/\b(perf|latency|throughput|hot path|scale|cache|cold start)\b/.test(r)&&e.add("performance"),s.length>0){let i=P(n.scope);for(let t of s)j[t.name]||G(t,r,i)&&e.add(t.name)}return[...e]}f(W,"selectReviewers");function x(n,s){let e=v.get(n,"SELECT content FROM specs WHERE id = ?",s),r=(()=>{if(!e?.content)return null;try{return JSON.parse(e.content)}catch{return null}})(),i=v.query(n,"SELECT lens FROM spec_selected_reviewer WHERE spec_id = ?",s).map(c=>c.lens),t=new Set(v.query(n,"SELECT lens FROM spec_review WHERE spec_id = ? AND verdict = 'pass'",s).map(c=>c.lens));if(!(i.length>0?i.every(c=>t.has(c)):t.has("strategic")&&t.has("architecture")&&t.has("design")))return!1;let l=r?.audit_candidate_hash;if(!l)return!0;if(S(r)!==l)return!1;let u=r?.reviews??{};for(let c of i.length>0?i:Object.keys(u)){let h=u[c];if(!(!h||h.verdict!=="pass")&&h.candidateHash!==l)return!1}for(let c of i.length>0?i:["strategic","architecture","design"]){if(!t.has(c))continue;let h=u[c];if(!h||h.candidateHash!==l)return!1}return!0}f(x,"reviewsGatePassedRelational");async function X(n,s,e,r,i,t=[]){let a=await D(i),l=r&&r.length>0?r:W(e,t),u=new Map(t.map(d=>[d.name,d])),c=P(e.scope),h=c.length>0?`
8
+
9
+ ## Codebase paths to read (from spec.scope)
10
+ ${c.map(d=>`- \`${d}\``).join(`
11
+ `)}
12
+
13
+ Each reviewer SHOULD use the Read tool on these paths (cap 10 per reviewer) to ground the verdict in the actual code. Cite specific symbols / files / line numbers in notes when applicable.`:`
14
+
15
+ ## Codebase paths
16
+ _No path-shaped scope entries found. Reviewers judge the spec body alone._`,o=[];l.forEach((d,g)=>{let w=j[d],y=u.get(d),A=w?w.label:y?"domain expert":"custom lens",M=w?w.rubric:y?T(y):$,q=String.fromCharCode(65+g%26),H=w?.capabilityClass?` ${a.modelDirective("spec-review",w.capabilityClass)}`:"";o.push(`## Reviewer ${q} \u2014 ${d} (${A})`,`Reviewer prompt: "First run \`prjct spec show ${n} --md\` to read the spec. ${M} Return verdict (pass|fail) and 2-4 sentence notes."${H}`,"")});let m=a.runLine(l.length);return[`# audit-spec dispatch \u2014 ${s}`,"",`Spec id: \`${n}\``,"",`Selected lenses for this spec: **${l.join(", ")}**. This is the baseline prjct computed from the spec \u2014 re-run \`prjct spec audit ${n} --lenses <comma,separated>\` to adjust the set before dispatching (add a lens the risk surface demands, drop one that is irrelevant).`,"",m,"","## Where the spec lives \u2014 read it from prjct, it is NOT in this prompt",`The plan lives in prjct (SQLite), never duplicated into a dispatch payload. Each reviewer runs \`prjct spec show ${n} --md\` itself, fresh, to read the full spec. Do NOT paste the spec body into the prompts \u2014 point them at that command. (Same rule for any memory the reviewer wants: \`prjct context memory <topic>\` \u2014 pulled by the reviewer, not pre-pasted by you.)`,"","## Model policy (perf \u2014 read before dispatching)",`${a.modelDirective("spec-review")} The same applies to every lens \u2014 they judge a spec, they do not implement, so they run on a review-tier model, not the heaviest one. Hand reviewers the spec-read COMMAND and the codebase PATHS + the Read tool \u2014 never paste spec body or file contents into their prompts.`,h,"",...o,"## After dispatch","For each lens that returns:",` prjct spec record-review ${n} --reviewer <${l.join("|")}> --verdict <pass|fail> --notes "<their notes>"`,"",`When all selected lenses (${l.join(", ")}) are recorded with verdict=pass, the spec auto-promotes from \`draft\` \u2192 \`reviewed\`.`].join(`
17
+ `)}f(X,"renderAuditDispatch");async function B(n){try{let{stdout:s}=await E("git",["rev-parse","HEAD"],{cwd:n}),e=s.trim();return/^[0-9a-f]{7,40}$/.test(e)?e:null}catch{return null}}f(B,"readGitHead");var R=class{static{f(this,"SpecService")}async create(s,e){let r=await this.requireProjectId(s),{classifySpecCreate:i,shouldMirrorSpecToMemory:t}=await import("./precision-classifier-AV75OEVA.mjs"),a=i(e.title,e.content.goal);if(a.action==="refuse")throw new Error(`Cannot create empty spec (${a.reasonCode}): ${a.reason}`);let l=e.autoContext!==!1,u=e.content.notes??"",c=l&&!u.trim()?await import("./spec-context-inference-THFMXC7S.mjs").then(async({inferSpecContext:m,warnNoContextMatch:d})=>{let g=await m(e.title,r,s);return g.empty&&d(e.title),g.empty?u:g.notesBlock}):u,h=b.parse({goal:e.content.goal,eli10:e.content.eli10??"",stakes:e.content.stakes??"",acceptance_criteria:e.content.acceptance_criteria??[],scope:e.content.scope??[],out_of_scope:e.content.out_of_scope??[],risks:e.content.risks??[],test_plan:e.content.test_plan??[],reviews:e.content.reviews,linked_tasks:e.content.linked_tasks??[],notes:c}),o=p.create(r,{title:e.title,content:h,tags:e.tags});return t(o.title,o.content.goal)&&await _.remember(s,{type:"spec",content:`${o.title}
18
+
19
+ Goal: ${o.content.goal}`,tags:{...e.tags??{},spec_id:o.id,status:o.status},source:o.id,provenance:"declared"}),o}async get(s,e){let r=await this.requireProjectId(s);return p.get(r,e)}async list(s,e={}){let r=await this.requireProjectId(s);return p.list(r,e)}async setStatus(s,e,r){let i=await this.requireProjectId(s),t=p.setStatus(i,e,r);return t&&await _.remember(s,{type:"spec",content:`Spec status \u2192 ${r}: ${t.title}`,tags:{spec_id:e,status:r,event:"status_change"},source:e}),t}async patch(s,e,r){let i=await this.requireProjectId(s),t=p.get(i,e);if(!t)return null;let a=b.parse({...t.content,...r});return this.update(s,e,a)}async applyDelta(s,e,r){let i=await this.requireProjectId(s),t=p.get(i,e);if(!t)return null;let a=I(t.content,r);return a===t.content?t:this.update(s,e,a)}async update(s,e,r){let i=await this.requireProjectId(s),t=p.get(i,e);if(!t)return null;let a=S(t.content),l=S(r),u=a!==l,c=u?{...r,reviews:{},selected_reviewers:[],audit_candidate_hash:null}:r;return u&&(t.status==="reviewed"||t.status==="in_progress")&&p.setStatus(i,e,"draft"),p.updateContent(i,e,c)}async recordReview(s,e,r,i){let t=await this.requireProjectId(s),a=3,l=50,u=f(async h=>{let o=p.get(t,e);if(!o)return null;let m=o.content.audit_candidate_hash??S(o.content);if(o.content.audit_candidate_hash&&S(o.content)!==o.content.audit_candidate_hash)throw new Error(`SPEC_CANDIDATE_DRIFT: body no longer matches audit_candidate_hash. Re-run \`prjct spec audit ${e}\` then re-record reviews.`);let d={...i,ts:k(),candidateHash:m},g={...o.content,audit_candidate_hash:m,reviews:{...o.content.reviews??{},[r]:d}};if(p.casUpdate(t,e,g,o.updatedAt))return p.get(t,e);if(h+1>=a)throw new Error(`SPEC_RECORD_REVIEW_CONFLICT_RETRY_EXHAUSTED: ${a} retries failed for spec ${e}`);return await new Promise(y=>setTimeout(y,l)),u(h+1)},"attemptReview"),c=await u(0);if(c&&x(t,e)&&c.status==="draft"){let{assessAcceptanceCriteria:h}=await import("./nyquist-lite-A23B7G4B.mjs"),o=h(c.content.acceptance_criteria??[]);if(!o.ok&&o.message){let d=await C.readConfig(s).catch(()=>null),g=d?.tdd?.mode==="strict",w=d?.sdd?.mode==="strict";if(g||w)throw new Error(`NYQUIST_LITE_BLOCK: ${o.message}
20
+ Rewrite acceptance criteria with verifiable signals, then re-record the last review.`);try{await _.remember(s,{type:"improvement-signal",content:o.message,tags:{source:"nyquist-lite",spec:e},provenance:"extracted",projectId:t})}catch{}}let m=p.setStatus(t,e,"reviewed");if(m){let{breakdownSpecToTasks:d}=await import("./spec-task-breakdown-HTG6ME6G.mjs");return await d(t,s,m),p.get(t,e)}return m}return c}async linkTask(s,e,r){let i=await this.requireProjectId(s);return p.linkTask(i,e,r)}async ship(s,e,r){let i=await this.requireProjectId(s);r!==void 0&&p.setShippedPr(i,e,r);let t=await B(s);return t&&p.setShippedSha(i,e,t),p.setStatus(i,e,"shipped")}unmetCriteria(s,e=new Set){return s.content.acceptance_criteria.filter(r=>!e.has(r))}async setSelectedReviewers(s,e,r){let i=await this.requireProjectId(s),t=p.get(i,e);if(!t)return null;let a=S(t.content);return p.updateContent(i,e,{...t.content,selected_reviewers:r,audit_candidate_hash:a,reviews:{}})}async requireProjectId(s){let e=await C.readConfig(s);if(!e?.projectId)throw new Error("not a prjct project (run `prjct init` first)");return e.projectId}},ae=new R;export{W as a,X as b,ae as c};
@@ -0,0 +1,7 @@
1
+ import { createRequire as __createRequire } from 'module';
2
+ import { fileURLToPath as __fileURLToPath } from 'url';
3
+ import { dirname as __pathDirname } from 'path';
4
+ const require = __createRequire(import.meta.url);
5
+ const __filename = __fileURLToPath(import.meta.url);
6
+ const __dirname = __pathDirname(__filename);
7
+ import{a as u,c as m}from"./chunk-RXZJB43D.mjs";import{b as f}from"./chunk-3USVY66O.mjs";import{a as d}from"./chunk-3TRXQAU4.mjs";async function P(t){let i=await import("node:fs/promises"),n=await import("node:path"),s=new Set(["daily"]),o=["package.json","go.mod","Cargo.toml","pyproject.toml","Gemfile","pom.xml","build.gradle"];for(let e of o)try{await i.stat(n.join(t,e)),s.add("code");break}catch{}return[...s]}d(P,"detectSuggestedPacks");async function C(t){let i=await f.readConfig(t);if(!i)return{healed:!1,activated:[],reason:"no-config"};if(i.judgment?.conflictMode==="off")return{healed:!1,activated:[],reason:"conflictMode-off"};let n=i.persona?.packs??[];if(n.includes("code")||n.includes("code-strict"))return!i.judgment?.conflictMode&&n.includes("code")?(await f.writeConfig(t,{...i,judgment:{...i.judgment,conflictMode:"advisory"}}),{healed:!0,activated:[],reason:"conflictMode-healed"}):{healed:!1,activated:[],reason:"already-coding-pack"};if(!(await P(t)).includes("code"))return{healed:!1,activated:[],reason:"not-code-repo"};let e=await y(t,["code"],{suggestPersona:!0});return e.activated.includes("code")?{healed:!0,activated:e.activated,reason:"activated-code"}:{healed:!1,activated:[],reason:"noop"}}d(C,"ensureCodingAnticipationDefaults");async function y(t,i,n={}){let s=[],o=[],e=await f.readConfig(t);if(!e)throw new Error("No prjct project here \u2014 run `prjct init` first.");let a=e.persona??{role:"DEV"},r=new Set(a.packs??[]);for(let g of i){if(!u[g]){o.push(g);continue}r.has(g)||(r.add(g),s.push(g))}let l=[...r],c={...a,packs:l};n.suggestPersona&&s.length>0&&k(c,s);let p={...e,persona:c,...v(e,s)};if(await f.writeConfig(t,p),s.length>0&&e.projectId)try{let{stampPackInstalls:g}=await import("./pack-integrity-GXN67LJB.mjs");g(e.projectId,s)}catch{}return{activated:s,skipped:o}}d(y,"activatePacks");function v(t,i){let n={};for(let s of i){let o=u[s]?.configDefaults;o&&(o.sdd&&!t.sdd&&(n.sdd={mode:o.sdd}),o.tdd&&!t.tdd&&(n.tdd={mode:o.tdd}),o.maxTurnsPerCycle!=null&&t.maxTurnsPerCycle==null&&n.maxTurnsPerCycle==null&&(n.maxTurnsPerCycle=o.maxTurnsPerCycle),o.deliveryGeometry&&!t.deliveryGeometry&&(n.deliveryGeometry={mode:o.deliveryGeometry}),o.land&&!t.land&&(n.land={mode:o.land}),o.conflictMode&&!t.judgment?.conflictMode&&(n.judgment={...t.judgment,...n.judgment,conflictMode:o.conflictMode}))}return n}d(v,"packConfigDefaults");async function j(t,i){let n=await f.readConfig(t);if(!n)throw new Error("No prjct project here \u2014 run `prjct init` first.");let s=n.persona??{role:"DEV"},o=new Set(s.packs??[]),e=[],a=[];for(let c of i)o.delete(c)?e.push(c):a.push(c);let r={...s,packs:[...o]},l={...n,persona:r};if(await f.writeConfig(t,l),e.length>0&&n.projectId)try{let{clearPackInstalls:c}=await import("./pack-integrity-GXN67LJB.mjs");c(n.projectId,e)}catch{}return{deactivated:e,notActive:a}}d(j,"deactivatePacks");async function M(t){let n=(await f.readConfig(t))?.persona?.packs??[],s=await import("./pack-integrity-GXN67LJB.mjs").then(({buildPackCatalog:a})=>a(t)).catch(()=>[]),o=Object.fromEntries(s.filter(a=>a.active).map(a=>[a.name,{version:a.version,integrity:a.integrity,status:a.status}])),e=[];for(let a of n){let r=u[a];if(!r){let c=o[a];e.push({name:a,description:"Unknown pack (not in built-in catalog)",memoryTypes:[],slots:[],version:c?.version,integrity:c?.integrity,status:c?.status??"unknown"});continue}let l=o[a];e.push({name:r.name,description:r.description,memoryTypes:r.memoryTypes,slots:Object.keys(r.workflowSlots),version:l?.version??r.version,integrity:l?.integrity,status:l?.status??"active"})}return e}d(M,"listActivePacks");function k(t,i){let n=t.role&&t.role!=="DEV",s=t.mcps&&t.mcps.length>0;for(let o of i){let e=m(o);if(e?.suggestedPersona&&(!n&&e.suggestedPersona.role&&(t.role=e.suggestedPersona.role),!t.focus&&e.suggestedPersona.focus&&(t.focus=e.suggestedPersona.focus),!s&&e.suggestedPersona.mcps&&(t.mcps=[...e.suggestedPersona.mcps]),t.role&&t.role!=="DEV"))break}}d(k,"applyPersonaSuggestion");export{P as a,C as b,y as c,j as d,M as e};
@@ -0,0 +1,7 @@
1
+ import { createRequire as __createRequire } from 'module';
2
+ import { fileURLToPath as __fileURLToPath } from 'url';
3
+ import { dirname as __pathDirname } from 'path';
4
+ const require = __createRequire(import.meta.url);
5
+ const __filename = __fileURLToPath(import.meta.url);
6
+ const __dirname = __pathDirname(__filename);
7
+ import{c as _}from"./chunk-3TRXQAU4.mjs";var T=_(()=>{"use strict"});export{T as a};
@@ -0,0 +1,7 @@
1
+ import { createRequire as __createRequire } from 'module';
2
+ import { fileURLToPath as __fileURLToPath } from 'url';
3
+ import { dirname as __pathDirname } from 'path';
4
+ const require = __createRequire(import.meta.url);
5
+ const __filename = __fileURLToPath(import.meta.url);
6
+ const __dirname = __pathDirname(__filename);
7
+ import{h as a,i as b,j as c,k as d,l as e,m as f}from"./chunk-HEXSVBUP.mjs";import"./chunk-6RT2P22O.mjs";import"./chunk-D62TAZG6.mjs";import"./chunk-XYDLXF5A.mjs";import"./chunk-FATYLG3L.mjs";import"./chunk-2EEMQV7N.mjs";import"./chunk-KPR5TWSN.mjs";import"./chunk-623SNKDH.mjs";import"./chunk-TTN2CFZC.mjs";import"./chunk-225DWS4D.mjs";import"./chunk-3TRXQAU4.mjs";export{f as consolidateInstalls,c as isBrewWinnerPath,b as locationOwnsWinner,a as normalizePathForCompare,e as planCleanup,d as planCleanupFrom};
@@ -0,0 +1,8 @@
1
+ import { createRequire as __createRequire } from 'module';
2
+ import { fileURLToPath as __fileURLToPath } from 'url';
3
+ import { dirname as __pathDirname } from 'path';
4
+ const require = __createRequire(import.meta.url);
5
+ const __filename = __fileURLToPath(import.meta.url);
6
+ const __dirname = __pathDirname(__filename);
7
+ import{h as O,i as _}from"./chunk-GHSRH4GL.mjs";import{c as w,d as u,k as T,m as E}from"./chunk-WTDUJB4I.mjs";import{b as R,c as N}from"./chunk-NNOX3UU4.mjs";import"./chunk-U24YKPYX.mjs";import{a as i}from"./chunk-3TRXQAU4.mjs";N();import b from"node:crypto";import t from"node:fs";import{connect as M}from"node:net";import k from"node:path";function U(e){if(!e||typeof e!="object"||!("code"in e))return null;let n=e.code;return typeof n=="string"?n:null}i(U,"systemErrorCode");function q(e){let n=U(e);return n==="ENOENT"||n==="ECONNREFUSED"}i(q,"shouldUnlinkDaemonSocket");async function f(){let e=u.socket(),n=w(e);if(!n&&!t.existsSync(e))return!1;try{return(await D({id:b.randomUUID(),command:"__ping",args:[],options:{},cwd:process.cwd()},{timeoutMs:1e3})).success}catch(r){if(!n&&q(r))try{t.unlinkSync(e)}catch{}return!1}}i(f,"isDaemonRunning");async function J(){let e=u.socket(),n=u.pid();if(!w(e)&&!t.existsSync(e))return{running:!1};try{let o=await D({id:b.randomUUID(),command:"daemon",args:["status"],options:{},cwd:process.cwd()});if(o.success&&o.result)return o.result}catch{}return t.existsSync(n)?{running:!1,pid:parseInt(t.readFileSync(n,"utf-8").trim(),10),socketPath:e}:{running:!1}}i(J,"getDaemonStatus");function D(e,n={}){let r=n.timeoutMs??T(e.command);return new Promise((o,a)=>{let m=u.socket(),s=M(m),p=[],c=new AbortController,d=setTimeout(()=>{c.signal.aborted||(c.abort(),s.destroy(),a(new Error("Daemon request timed out")))},r);s.on("connect",()=>{s.write(E(e))}),s.on("data",y=>{p.push(y.toString());let l=p.join("");if(l.length>8*1024*1024){c.signal.aborted||(c.abort(),clearTimeout(d),s.destroy(),a(new Error("Daemon response too large")));return}let g=l.indexOf(`
8
+ `);if(g!==-1){let I=l.slice(0,g);p.splice(0,p.length,l.slice(g+1));try{let S=JSON.parse(I);c.abort(),clearTimeout(d),s.end(),o(S)}catch(S){c.abort(),clearTimeout(d),s.end(),a(new Error(`Invalid daemon response: ${S.message}`))}}}),s.on("error",y=>{c.signal.aborted||(c.abort(),clearTimeout(d),a(y))}),s.on("close",()=>{c.signal.aborted||(c.abort(),clearTimeout(d),a(new Error("Connection closed before response")))})})}i(D,"sendRequest");async function V(e,n,r,o,a,m=!0){let s=u.socket();if(!w(s)&&!t.existsSync(s))return m&&P().catch(()=>{}),null;try{return await D({id:b.randomUUID(),command:e,args:n,options:r,cwd:o,perfStartNs:a})}catch{return m&&P().catch(()=>{}),null}}i(V,"executeViaDaemon");async function C(){try{return(await D({id:b.randomUUID(),command:"daemon",args:["stop"],options:{},cwd:process.cwd()})).success}catch{return!1}}i(C,"stopDaemon");function x(){let e=u.pid(),n=u.socket(),r=(()=>{if(!t.existsSync(e))return{killed:!1,safeToCleanOwnership:!0};let o=parseInt(t.readFileSync(e,"utf-8").trim(),10);if(Number.isNaN(o))return{killed:!1,safeToCleanOwnership:!0};try{return process.kill(o,"SIGKILL"),{killed:!0,safeToCleanOwnership:!0}}catch(a){return{killed:!1,safeToCleanOwnership:U(a)==="ESRCH"}}})();if(!r.safeToCleanOwnership)return!1;try{t.existsSync(e)&&t.unlinkSync(e)}catch{}if(!w(n))try{t.existsSync(n)&&t.unlinkSync(n)}catch{}return r.killed}i(x,"forceKillDaemon");var h={inFlight:null};async function P(){return h.inFlight||(h.inFlight=v().finally(()=>{h.inFlight=null})),h.inFlight}i(P,"spawnDaemon");async function v(){if(await f())return!0;let e=O();if(!e)return await F(3e3);try{if(await f())return!0;let{spawn:n}=await import("node:child_process"),r=k.join(__dirname,"entry.ts"),o=k.join(__dirname,"..","daemon","entry.mjs"),a=k.join(__dirname,"..","dist","daemon","entry.mjs"),m=process.platform!=="win32"&&R(),s=t.existsSync(r)?{entryPath:r,runtime:"bun"}:t.existsSync(o)?{entryPath:o,runtime:m?"bun":"node"}:t.existsSync(a)?{entryPath:a,runtime:m?"bun":"node"}:null;if(!s)return!1;let{entryPath:p,runtime:c}=s,d=u.runDir();t.mkdirSync(d,{recursive:!0});let y=u.log(),l=t.openSync(y,"a");return n(c,[p],{detached:!0,stdio:["ignore",l,l],env:process.env}).unref(),t.closeSync(l),await F(3e3)}finally{_(e)}}i(v,"spawnDaemonExclusive");async function F(e){let n=Date.now()+e,r=i(async o=>Date.now()>=n?f():await f()?!0:(await new Promise(a=>setTimeout(a,o)),r(Math.min(o*2,250))),"poll");return r(40)}i(F,"waitUntilDaemonRunning");async function $(){try{return await f()?(await C()||x(),await new Promise(n=>setTimeout(n,300)),await P()):!1}catch{return!1}}i($,"restartDaemon");async function z(){return await f()?(await C()||x(),await new Promise(n=>setTimeout(n,300))):x(),await P()}i(z,"forceRestartDaemon");export{V as executeViaDaemon,x as forceKillDaemon,z as forceRestartDaemon,J as getDaemonStatus,f as isDaemonRunning,$ as restartDaemon,D as sendRequest,q as shouldUnlinkDaemonSocket,P as spawnDaemon,C as stopDaemon};
@@ -0,0 +1,7 @@
1
+ import { createRequire as __createRequire } from 'module';
2
+ import { fileURLToPath as __fileURLToPath } from 'url';
3
+ import { dirname as __pathDirname } from 'path';
4
+ const require = __createRequire(import.meta.url);
5
+ const __filename = __fileURLToPath(import.meta.url);
6
+ const __dirname = __pathDirname(__filename);
7
+ import{a}from"./chunk-QAIEAOJF.mjs";import"./chunk-76YMLNLF.mjs";import"./chunk-3TRXQAU4.mjs";export{a as findClosestCommand};
@@ -0,0 +1,14 @@
1
+ import { createRequire as __createRequire } from 'module';
2
+ import { fileURLToPath as __fileURLToPath } from 'url';
3
+ import { dirname as __pathDirname } from 'path';
4
+ const require = __createRequire(import.meta.url);
5
+ const __filename = __fileURLToPath(import.meta.url);
6
+ const __dirname = __pathDirname(__filename);
7
+ import{a as L,b as E,c as q,e as j}from"./chunk-QLMZW4K7.mjs";import{a as k}from"./chunk-F7OOBAJO.mjs";import"./chunk-JT4RNQ67.mjs";import"./chunk-VCSESVZ4.mjs";import"./chunk-YJOC2JJK.mjs";import{a as u}from"./chunk-5MN22JFI.mjs";import{a as A}from"./chunk-V5VCXMKO.mjs";import{d as m,e as f}from"./chunk-FOWTB762.mjs";import"./chunk-7CI4AMVO.mjs";import"./chunk-XPRLQIVQ.mjs";import"./chunk-EZRNQXCC.mjs";import"./chunk-KUQLXY2P.mjs";import"./chunk-HCPQZRR3.mjs";import"./chunk-EHVU2SMR.mjs";import"./chunk-HPCSSJXH.mjs";import"./chunk-E5QQDYBR.mjs";import"./chunk-B7AQHL7B.mjs";import"./chunk-L4TUXFCL.mjs";import{h as i}from"./chunk-ID2C2S33.mjs";import{b as h}from"./chunk-3USVY66O.mjs";import{b as T}from"./chunk-OIE3AKKO.mjs";import{b as x,e as w}from"./chunk-7QTE6X4J.mjs";import{c as C}from"./chunk-4PPIE6GA.mjs";import"./chunk-Q6C27OL7.mjs";import{a as v}from"./chunk-NXUIMC22.mjs";import"./chunk-DZVOFEM5.mjs";import"./chunk-5EF5EOCL.mjs";import{g as S,i as W}from"./chunk-DMO3ZFUG.mjs";import"./chunk-NNOX3UU4.mjs";import"./chunk-RP7F67ZT.mjs";import"./chunk-INJ5WT2D.mjs";import{F as D,G as _}from"./chunk-HU5ERAAV.mjs";import"./chunk-6RT2P22O.mjs";import"./chunk-ZXTJLMVZ.mjs";import"./chunk-VWFVSNQT.mjs";import"./chunk-U24YKPYX.mjs";import"./chunk-D62TAZG6.mjs";import"./chunk-623SNKDH.mjs";import"./chunk-TTN2CFZC.mjs";import"./chunk-DOJPSIMG.mjs";import"./chunk-HYIT7MF5.mjs";import{e as O,g as U}from"./chunk-225DWS4D.mjs";import{a as g}from"./chunk-3TRXQAU4.mjs";import H from"node:path";import*as B from"node:readline/promises";import Q from"node:fs/promises";import R from"node:path";_();W();async function Y(a){try{return(await Q.stat(a)).isDirectory()}catch{return!1}}g(Y,"pathExists");async function G(a){try{let o=S.getDoc(a,"project"),t=o?.repoPath||o?.path||null;return t&&await Y(t)?{path:t,name:o?.name||R.basename(t)}:{path:null,name:o?.name||a.slice(0,8)}}catch{return{path:null,name:a.slice(0,8)}}}g(G,"resolveFromDoc");async function $(){let a=new Map,o=await L();for(let e of o){let n=await Y(e.projectPath),c=n?await h.readConfig(e.projectPath).catch(()=>null):null;a.set(e.projectId,{projectId:e.projectId,projectPath:n?e.projectPath:null,name:n?R.basename(e.projectPath):e.projectId.slice(0,8),connected:!!c?.cloud?.enabled||n,paused:!!c?.cloud?.paused})}let t=await D.listProjects();for(let e of t){if(a.has(e)){let d=a.get(e);if(d.projectPath){let y=await h.readConfig(d.projectPath).catch(()=>null);y?.cloud&&(d.connected=!!y.cloud.enabled,d.paused=!!y.cloud.paused)}continue}let n=await G(e),c=n.path?await h.readConfig(n.path).catch(()=>null):null,r=!!(c?.projectId===e||c?.projectId),s=r&&!!c?.cloud?.enabled,p=r&&!!c?.cloud?.paused,l=r&&n.path?R.basename(n.path):n.name;a.set(e,{projectId:e,projectPath:n.path,name:l,connected:s,paused:p})}return[...a.values()].sort((e,n)=>e.name.localeCompare(n.name))}g($,"listCloudProjectCandidates");function I(a,o){return a.filter(t=>t.projectPath?o==="connect"?!t.connected:t.connected:!1)}g(I,"actionableCandidates");U();var z=["link","unlink","status","sync","pull","pause","resume","projects","list"];function M(a){return{all:a.includes("--all"),yes:a.includes("--yes")||a.includes("-y"),interactive:a.includes("--interactive")||a.includes("-i")}}g(M,"parseBulkFlags");var F=class extends A{static{g(this,"CloudCommands")}async connect(o=null,t=process.cwd(),e={}){let n=M((o??"").trim().split(/\s+/).filter(Boolean));return n.all||n.interactive?this.linkBulk(n,e):this.link(t,e)}async disconnect(o=null,t=process.cwd(),e={}){let n=M((o??"").trim().split(/\s+/).filter(Boolean));return n.all||n.interactive?this.unlinkBulk(n,e):this.unlink(t,e)}async cloud(o=null,t=process.cwd(),e={}){let n=(o??"").trim().split(/\s+/).filter(Boolean),c=(n[0]??"").toLowerCase(),r=n.slice(1),s=M(r);if(!c||c==="status"||c==="show")return this.status(t,e);switch(c){case"link":case"connect":return s.all||s.interactive?this.linkBulk(s,e):this.link(t,e);case"unlink":case"disconnect":return s.all||s.interactive?this.unlinkBulk(s,e):this.unlink(t,e);case"projects":case"list":return this.listProjects(e);case"sync":return this.runSync(t,e);case"pull":return this.runPull(t,e);case"pause":return this.setPaused(!0,t,e);case"resume":return this.setPaused(!1,t,e);default:return m(`Unknown cloud subcommand "${c}". Use: ${z.join(", ")}.`,e)}}async readProject(o){let t=await h.readConfig(o).catch(()=>null);return t?.projectId?t:null}async link(o,t){let e=await this.readProject(o);if(!e)return f("No prjct project here \u2014 run `prjct init` first.",t);if(!await C.hasAuth())return f("Not authenticated. Run `prjct login`, then `prjct connect` (or `prjct cloud link`).",t);let n={enabled:!0,paused:!1,linkedAt:e.cloud?.linkedAt??new Date().toISOString(),include:e.cloud?.include},c=await T(e.projectId).catch(()=>{}),r=await w.linkProject(e.projectId,H.basename(o),c);if(e.cloud=n,await h.writeConfig(o,e),r.syncStatus==="active"){await E(e.projectId,o),await j.start(e.projectId,o).catch(()=>{});let s=await k.sync(e.projectId,{include:e.cloud.include??{}});return this.reportSync("Connected",s,t,{extra:"Project is now connected. It will also sync on `prjct ship` and at session end. Disconnect with `prjct disconnect`."})}return this.subscriptionRequired(r.message,t,{title:r.syncStatus==="payment_pending"?"Cloud sync waiting for payment":"Cloud sync waiting for subscription",prefix:`Repo connected to your prjct account. Billing: ${r.billingUrl}`})}async unlink(o,t){let e=await this.readProject(o);if(!e)return f("No prjct project here \u2014 run `prjct init` first.",t);if(!e.cloud?.enabled){let c="Already local-only \u2014 nothing to disconnect.";return console.log(t.md?u("## Cloud",`> ${c}`):c),{success:!0,linked:!1}}e.cloud={...e.cloud,enabled:!1,paused:!1},await h.writeConfig(o,e),j.stop(e.projectId),await q(e.projectId),await w.setCloudLifecycle(e.projectId,"unlink").catch(()=>{});let n="Disconnected \u2014 this project is local-only again. Cloud history kept; local data untouched. Re-connect with `prjct connect`.";return t.md?console.log(u("## Cloud",`> ${n}`)):i.done(n),{success:!0,linked:!1}}async listProjects(o){let t=await $();if(t.length===0){let n="No local prjct projects found. Run `prjct sync` inside a git repo, then `prjct connect`.";return o.md?console.log(u("## Cloud projects",`> ${n}`)):i.info(n),{success:!0,projects:[]}}let e=t.map(n=>{let c=n.connected?n.paused?"connected,paused":"connected":"local-only",r=n.projectPath??"(path unknown)";return`- **${n.name}** \xB7 ${c} \xB7 \`${r}\` \xB7 \`${n.projectId.slice(0,8)}\``});if(o.md)console.log(u("## Cloud projects",`> ${t.length} local project(s)`,e.join(`
8
+ `)));else{i.info(`Cloud projects (${t.length})`);for(let n of t){let c=n.connected?n.paused?"connected \xB7 paused":"connected":"local-only";i.info(` ${n.name.padEnd(24)} ${c.padEnd(18)} ${n.projectPath??"(path unknown)"}`)}i.info("Connect: prjct connect | Disconnect: prjct disconnect | Bulk: \u2026 --all --yes")}return{success:!0,projects:t.map(n=>({projectId:n.projectId,name:n.name,path:n.projectPath,connected:n.connected,paused:n.paused}))}}async linkBulk(o,t){if(!await C.hasAuth())return f("Not authenticated. Run `prjct login` first.",t);let e=await $(),n=I(e,"connect");if(n.length===0){let r="No unconnected projects with a known path. Open each repo and run `prjct connect`, or `prjct sync` first so paths are recorded.";return t.md?console.log(u("## Connect",`> ${r}`)):i.info(r),{success:!0,connected:0,skipped:0}}let c=o.interactive&&!o.all?await this.pickInteractively(n,"connect",t):n;if(c===null)return m("No TTY for one-by-one prompts. Confirm with the human, then run `prjct cloud link --all --yes`, or `cd <path> && prjct connect` per project.",t);if(o.interactive&&!o.all){if(c.length===0){let s="No projects selected.";return t.md?console.log(u("## Connect",`> ${s}`)):i.info(s),{success:!0,connected:0}}}else if(!await this.confirmBulk(`Connect ${c.length} project(s) to Cloud Sync?`,c,o.yes,t))return m(`Would connect ${c.length} project(s). Confirm with the human, then re-run with --yes.`,t);return this.runBulk(c,"connect",t)}async unlinkBulk(o,t){let e=await $(),n=I(e,"disconnect");if(n.length===0){let r="No connected projects with a known path to disconnect.";return t.md?console.log(u("## Disconnect",`> ${r}`)):i.info(r),{success:!0,disconnected:0}}let c=o.interactive&&!o.all?await this.pickInteractively(n,"disconnect",t):n;if(c===null)return m("No TTY for one-by-one prompts. Confirm with the human, then run `prjct cloud unlink --all --yes`, or `cd <path> && prjct disconnect` per project.",t);if(o.interactive&&!o.all){if(c.length===0){let s="No projects selected.";return t.md?console.log(u("## Disconnect",`> ${s}`)):i.info(s),{success:!0,disconnected:0}}}else if(!await this.confirmBulk(`Disconnect ${c.length} project(s)? Cloud history kept; local vaults untouched.`,c,o.yes,t))return m(`Would disconnect ${c.length} project(s). Confirm with the human, then re-run with --yes.`,t);return this.runBulk(c,"disconnect",t)}async runBulk(o,t,e){let n=[],c=[],r=[];for(let l of o){if(!l.projectPath)continue;let d=t==="connect"?await this.link(l.projectPath,{...e,md:!0}):await this.unlink(l.projectPath,{...e,md:!0});d.success||t==="connect"&&d.paymentRequired?(n.push(l),e.md||i.done(`${t==="connect"?"Connected":"Disconnected"}: ${l.name} (${l.projectPath})`)):(c.push(l),r.push(`${l.name}: ${d.error??d.message??"failed"}`),e.md||i.warn(`Failed: ${l.name} \u2014 ${d.error??d.message??"failed"}`))}let p=`${t==="connect"?"Connected":"Disconnected"} ${n.length} project(s)${c.length?` \xB7 ${c.length} failed`:""}.`;return e.md?console.log(u(`## Cloud ${t}`,`> ${p}`,...r.length?[r.map(l=>`- ${l}`).join(`
9
+ `)]:[])):i.done(p),{success:c.length===0,[t==="connect"?"connected":"disconnected"]:n.length,failed:c.length,errors:r}}async pickInteractively(o,t,e){if(!process.stdin.isTTY||!process.stdout.isTTY)return null;e.md||i.info(t==="connect"?"Connect projects one by one (y/N). Local data never leaves until you say yes.":"Disconnect projects one by one (y/N). Cloud history kept; local vault untouched.");let n=[],c=B.createInterface({input:process.stdin,output:process.stdout});try{for(let r of o){let s=`${t==="connect"?"Connect":"Disconnect"} ${r.name} (${r.projectPath})? [y/N] `,p=(await c.question(s)).trim().toLowerCase();(p==="y"||p==="yes")&&n.push(r)}}finally{c.close()}return n}async confirmBulk(o,t,e,n){if(e)return!0;let c=t.map(s=>` - ${s.name}: ${s.projectPath}`);if(n.md)console.log(u("## Confirm",`> ${o}`,c.join(`
10
+ `)));else{i.info(o);for(let s of c)i.info(s)}if(!process.stdin.isTTY||!process.stdout.isTTY)return!1;let r=B.createInterface({input:process.stdin,output:process.stdout});try{let s=(await r.question("Proceed? [y/N] ")).trim().toLowerCase();return s==="y"||s==="yes"}finally{r.close()}}async runSync(o,t){let e=await this.readProject(o);if(!e)return f("No prjct project here \u2014 run `prjct init` first.",t);let n=this.gate(e,t);if(n)return n;let c=await k.sync(e.projectId,{include:e.cloud?.include??{}});return this.reportSync("Synced",c,t)}async runPull(o,t){let e=await this.readProject(o);if(!e)return f("No prjct project here \u2014 run `prjct init` first.",t);let n=this.gate(e,t);if(n)return n;try{let c=await k.pull(e.projectId);if(!c.success)return c.code==="PAYMENT_REQUIRED"?this.subscriptionRequired(c.error,t):m(`Pull failed: ${c.error??"unknown error"}`,t);let r=`Pulled ${c.count??0} change(s) (${c.applied??0} applied).`;return t.md?console.log(u("## Cloud pull",`> ${r}`)):i.done(r),{success:!0,pulled:c.count??0,applied:c.applied??0}}catch(c){return f(O(c),t)}}async setPaused(o,t,e){let n=await this.readProject(t);if(!n)return f("No prjct project here \u2014 run `prjct init` first.",e);if(!n.cloud?.enabled)return m("Not connected \u2014 nothing to pause/resume. Run `prjct connect` first.",e);n.cloud={...n.cloud,paused:o},await h.writeConfig(t,n),o?j.stop(n.projectId):await j.start(n.projectId,t).catch(()=>{}),await w.setCloudLifecycle(n.projectId,o?"pause":"resume").catch(()=>{});let c=o?"Cloud sync paused (still connected). Resume with `prjct cloud resume`. Disconnect with `prjct disconnect`.":"Cloud sync resumed.";return e.md?console.log(u("## Cloud",`> ${c}`)):i.done(c),{success:!0,paused:o}}async status(o,t){let e=await this.readProject(o);if(!e)return f("No prjct project here \u2014 run `prjct init` first.",t);let n=await C.hasAuth(),c=e.cloud,r=!!c?.enabled,s=!!c?.paused,p=(await v.getPending(e.projectId)).length,l=await v.getLastSync(e.projectId),d={...x,...c?.include??{}},y=Object.entries(d).filter(([,b])=>b).map(([b])=>b),N=n?r?s?"connected, paused":"connected, active":"local-only (run `prjct connect`)":"not authenticated (run `prjct login`)",P=r?j.available()?j.status(e.projectId):"requires daemon":"n/a";return t.md?console.log(u("## Cloud status",`> **State**: ${N}`,[`- Authenticated: ${n?"yes":"no"}`,`- Connected: ${r?"yes":"no"}${c?.linkedAt?` (since ${c.linkedAt})`:""}`,`- Realtime: ${P}`,`- Pending events: ${p}`,`- Last sync: ${l?.timestamp??"never"}`,`- Syncing groups: ${y.join(", ")}`].join(`
11
+ `))):i.info([`Cloud \u2014 ${N}`,` Authenticated: ${n?"yes":"no"}`,` Connected: ${r?"yes":"no"}${c?.linkedAt?` (since ${c.linkedAt})`:""}`,` Realtime: ${P}`,` Pending events: ${p}`,` Last sync: ${l?.timestamp??"never"}`,` Syncing groups: ${y.join(", ")}`].join(`
12
+ `)),{success:!0,linked:r,paused:s,authed:n,pending:p,realtime:P}}gate(o,t){return o.cloud?.enabled?o.cloud.paused?m("Cloud sync is paused. Run `prjct cloud resume` first.",t):null:m("This project is not connected. Run `prjct connect` first.",t)}subscriptionRequired(o,t,e){let n=o??"Cloud sync needs an active prjct subscription. Your local data is safe \u2014 only cloud backup is paused.";return t.md?console.log(u(`## ${e?.title??"Subscription required"}`,`> \u{1F4B3} ${e?.prefix?`${e.prefix}
13
+
14
+ ${n}`:n}`)):(i.warn(e?.title??"Cloud backup paused \u2014 subscription required"),e?.prefix&&i.info(e.prefix),i.info(n)),{success:!1,paymentRequired:!0,message:n}}reportSync(o,t,e,n){if(!t.success)return t.code==="PAYMENT_REQUIRED"?this.subscriptionRequired(t.error,e):m(`${o} with errors: ${t.error??"unknown error"}`,e);let c=t.pushed?.count??0,r=t.pulled?.count??0,s=`${o} \u2014 ${c} pushed, ${r} pulled.`;return e.md?console.log(u("## Cloud",`> ${s}`,...n?.extra?[n.extra]:[])):(i.done(s),n?.extra&&i.info(n.extra)),{success:!0,pushed:c,pulled:r}}};export{F as CloudCommands};
@@ -0,0 +1,12 @@
1
+ import { createRequire as __createRequire } from 'module';
2
+ import { fileURLToPath as __fileURLToPath } from 'url';
3
+ import { dirname as __pathDirname } from 'path';
4
+ const require = __createRequire(import.meta.url);
5
+ const __filename = __fileURLToPath(import.meta.url);
6
+ const __dirname = __pathDirname(__filename);
7
+ import{a as H,b as J,c as K}from"./chunk-SRJEX6XF.mjs";import{c as E,d as I,e as G}from"./chunk-V6L5PLD7.mjs";import{a as L,b as P,d as T,e as F,f as D}from"./chunk-Y7XOKG4O.mjs";import{b as p}from"./chunk-KIRU4QFX.mjs";import"./chunk-7QMBIMEX.mjs";import"./chunk-VDXTMAMO.mjs";import"./chunk-NZKUCQZK.mjs";import"./chunk-H2KNJUPN.mjs";import{a as b}from"./chunk-5MN22JFI.mjs";import{a as U}from"./chunk-V5VCXMKO.mjs";import{d,e as j}from"./chunk-FOWTB762.mjs";import"./chunk-6FUCOGOW.mjs";import"./chunk-7CI4AMVO.mjs";import"./chunk-Q3LUL6LL.mjs";import"./chunk-C7YBUD4K.mjs";import"./chunk-IOFCSTGM.mjs";import"./chunk-S6FBPXQL.mjs";import"./chunk-NOHSLOLL.mjs";import"./chunk-RCIWCKL7.mjs";import"./chunk-E73HSXCX.mjs";import"./chunk-76YMLNLF.mjs";import"./chunk-O5N6XYPU.mjs";import"./chunk-SROBBOJB.mjs";import"./chunk-56FW4P6U.mjs";import"./chunk-BQKDJ3U6.mjs";import"./chunk-6OYLZ4NM.mjs";import"./chunk-SO3ZPNWT.mjs";import"./chunk-V7R3L54M.mjs";import{a as B,b as _,c as N}from"./chunk-UHXV7MDW.mjs";import"./chunk-YEALP3WX.mjs";import{e as M,g,h as A,i as R,j as S,m as O}from"./chunk-QZ7T2EYR.mjs";import"./chunk-UYMZ3NAF.mjs";import"./chunk-AJXELVNH.mjs";import"./chunk-CWLGRKA7.mjs";import"./chunk-2NI4EEK2.mjs";import"./chunk-6AFXUX2M.mjs";import"./chunk-WSVMQYYU.mjs";import"./chunk-LZC6NGB6.mjs";import"./chunk-XLFEWZRA.mjs";import"./chunk-XPRLQIVQ.mjs";import"./chunk-EZRNQXCC.mjs";import"./chunk-HCPQZRR3.mjs";import"./chunk-EHVU2SMR.mjs";import"./chunk-HPCSSJXH.mjs";import"./chunk-E5QQDYBR.mjs";import"./chunk-B7AQHL7B.mjs";import"./chunk-L4TUXFCL.mjs";import{h as l}from"./chunk-ID2C2S33.mjs";import"./chunk-RACISWUV.mjs";import"./chunk-DIEPWXJJ.mjs";import"./chunk-NINFE7GS.mjs";import"./chunk-UNNY2IWZ.mjs";import{b as k}from"./chunk-3USVY66O.mjs";import"./chunk-OIE3AKKO.mjs";import"./chunk-Q6C27OL7.mjs";import"./chunk-NXUIMC22.mjs";import"./chunk-DZVOFEM5.mjs";import"./chunk-5EF5EOCL.mjs";import"./chunk-DMO3ZFUG.mjs";import"./chunk-NNOX3UU4.mjs";import"./chunk-INJ5WT2D.mjs";import"./chunk-HU5ERAAV.mjs";import"./chunk-6RT2P22O.mjs";import"./chunk-ZXTJLMVZ.mjs";import"./chunk-TIBYHZFA.mjs";import"./chunk-VWFVSNQT.mjs";import"./chunk-U24YKPYX.mjs";import{b as h,p as z}from"./chunk-D62TAZG6.mjs";import"./chunk-KPR5TWSN.mjs";import"./chunk-623SNKDH.mjs";import"./chunk-TTN2CFZC.mjs";import"./chunk-DOJPSIMG.mjs";import"./chunk-HYIT7MF5.mjs";import{e as v,g as Q}from"./chunk-225DWS4D.mjs";import{a as f}from"./chunk-3TRXQAU4.mjs";z();import $ from"node:path";async function q(i){try{let{stdout:s}=await h(process.platform==="win32"?"where":"which",[i],{timeout:2e3});return s.trim().split(/\r?\n/)[0]||null}catch{return null}}f(q,"which");async function y(){let i=await q("codebase-memory-mcp");if(!i)return{available:!1,path:null,version:null,note:"CBM not on PATH. Native prjct symbol graph is active. Install: https://github.com/DeusData/codebase-memory-mcp"};let s=await h(i,["--version"],{timeout:3e3}).catch(()=>h(i,["version"],{timeout:3e3})).then(({stdout:n,stderr:r})=>(n||r).trim().split(/\r?\n/)[0]||null).catch(()=>"unknown");return{available:!0,path:i,version:s,note:"CBM available. prjct native graph remains default; use CBM for polyglot Hybrid-LSP depth when needed."}}f(y,"detectCbm");function x(i){return i.available?`CBM: ${i.path}${i.version?` (${i.version})`:""} \u2014 ${i.note}`:`CBM: not installed \u2014 ${i.note}`}f(x,"formatCbmStatus");async function C(i,s,n={}){let r=await q("codebase-memory-mcp");if(!r)return{ok:!1,stdout:"",stderr:"",error:"codebase-memory-mcp not on PATH"};try{let{stdout:e,stderr:t}=await h(r,["cli",i,JSON.stringify(s)],{timeout:n.timeoutMs??3e4,maxBuffer:4194304});return{ok:!0,stdout:e.trim(),stderr:t.trim()}}catch(e){let t=e;return{ok:!1,stdout:(t.stdout??"").toString(),stderr:(t.stderr??"").toString(),error:t.message??String(e)}}}f(C,"cbmCli");async function V(i){let s=$.resolve(i),n=await C("list_projects",{});if(!n.ok||!n.stdout)return null;try{let r=JSON.parse(n.stdout),e=X(r);for(let t of e){let a=typeof t.path=="string"?$.resolve(t.path):"",o=typeof t.name=="string"?t.name:typeof t.project=="string"?t.project:null;if(o&&a&&(a===s||s.startsWith(a+$.sep))||o&&typeof t.repo_path=="string"&&$.resolve(t.repo_path)===s)return o}if(e.length===1){let t=e[0];return typeof t.name=="string"&&t.name||typeof t.project=="string"&&t.project||null}}catch{}return null}f(V,"cbmProjectName");function X(i){if(Array.isArray(i))return i;if(i&&typeof i=="object"){let s=i;if(Array.isArray(s.projects))return s.projects;if(Array.isArray(s.results))return s.results}return[]}f(X,"extractProjectsList");async function w(i,s,n={}){if(!(await y()).available)return null;let e=await V(s),t=e?{project:e}:{};if(i==="trace"&&!n.name)return null;let[a,o]=i==="trace"?["trace_path",{...t,function_name:n.name,direction:"both"}]:i==="architecture"?["get_architecture",{...t}]:["search_graph",{...t,name_pattern:n.pattern?`.*${Y(n.pattern)}.*`:".*",limit:30}],m=await C(a,o,{timeoutMs:2e4});if(!m.ok)return null;let c=m.stdout||m.stderr;return!c||c.length<2?null:{source:"cbm",text:[i==="trace"?`## Trace (CBM fallback): \`${n.name}\``:i==="architecture"?"## Architecture (CBM fallback)":`## Symbols (CBM fallback)${n.pattern?`: \`${n.pattern}\``:""}`,"","_Native prjct graph had no/weak hit \u2014 results from codebase-memory-mcp (Hybrid LSP / polyglot)._","","```",c.slice(0,12e3),c.length>12e3?"\u2026(truncated)\u2026":"","```"].filter(Boolean).join(`
8
+ `)}}f(w,"cbmFallback");function Y(i){return i.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}f(Y,"escapeRegex");Q();var W=class extends U{static{f(this,"CodeCommands")}async code(s=null,n=process.cwd(),r={}){try{let e=(s??"").trim().split(/\s+/).filter(Boolean),t=(e[0]??"").toLowerCase(),a=e.slice(1).join(" ");return!t||t==="status"||t==="stats"?this.showStats(n,r):t==="symbols"||t==="search"?this.symbols(a,n,r):t==="trace"?this.trace(a,n,r):t==="impact"||t==="detect"||t==="changes"?this.impact(n,r):t==="architecture"||t==="arch"?this.architecture(n,r):t==="export"?this.exportArtifact(n,r):t==="import"||t==="bootstrap"?this.importArtifact(n,r):t==="push-graph"||t==="push"||t==="upload-graph"?this.pushGraph(n,r):t==="reindex"||t==="index"?this.reindex(n,r):t==="dead"?this.dead(n,r):t==="cbm"?this.cbmCmd(a,r):d(`Unknown code subcommand "${t}". Use: symbols | trace | impact | architecture | dead | export | import | push-graph | reindex | cbm`,r)}catch(e){return j(v(e),r)}}async showStats(s,n){let r=await p(s,n);if(!r.ok)return r.result;let e=A(r.value),t=g(r.value),a=await y().catch(()=>null),o=a?x(a):null;return n.md?console.log(b("## Code symbol graph",t?[`- **Symbols**: ${e?.symbolCount??"?"}`,`- **Edges**: ${e?.edgeCount??"?"}`,`- **Files**: ${e?.fileCount??"?"}`,`- **Built**: ${e?.builtAt??"unknown"}`,o?`- **${o}**`:"","","Commands: `symbols` \xB7 `trace` \xB7 `impact` \xB7 `architecture` \xB7 `dead` \xB7 `export` \xB7 `import` \xB7 `reindex` \xB7 `cbm`"].filter(Boolean).join(`
9
+ `):["> No symbol index yet. Run `prjct sync` or `prjct code reindex`.",o?`> ${o}`:""].filter(Boolean).join(`
10
+ `))):(t?(l.info(`Code graph: ${e?.symbolCount??0} symbols \xB7 ${e?.edgeCount??0} edges \xB7 ${e?.fileCount??0} files (built ${e?.builtAt??"?"})`),l.info(" symbols | trace | impact | architecture | dead | export | import | reindex | cbm")):l.info("Code graph: empty \u2014 run `prjct sync` or `prjct code reindex`"),o&&l.info(` ${o}`)),{success:!0,ready:t,meta:e,cbm:a}}async symbols(s,n,r){let e=await p(n,r);if(!e.ok)return e.result;if(!g(e.value))return d("No symbol index \u2014 run `prjct sync` or `prjct code reindex` first.",r);let t=s.trim(),a=t?S(e.value,t,{limit:40}):R(e.value).filter(o=>o.exported).slice(0,40);if(a.length===0&&t){let o=await w("search",n,{pattern:t});if(o)return console.log(o.text),{success:!0,count:0,source:"cbm",symbols:[]}}if(r.md){let o=[`## Symbols${t?`: \`${t}\``:" (exported sample)"}`,"","| Kind | Name | File | Line |","|---|---|---|---:|"];for(let m of a)o.push(`| ${m.kind} | \`${m.name}\` | \`${m.file}\` | ${m.startLine} |`);a.length===0&&o.push("| \u2014 | _no matches_ | | |"),console.log(o.join(`
11
+ `))}else if(a.length===0)l.info("No symbols matched.");else{l.info(`${a.length} symbol(s)${t?` matching "${t}"`:""}:`);for(let o of a)l.info(` ${o.kind.padEnd(9)} ${o.name} ${o.file}:${o.startLine}`)}return{success:!0,count:a.length,symbols:a}}async trace(s,n,r){let e=await p(n,r);if(!e.ok)return e.result;let t=s.trim();if(!t)return d("Usage: prjct code trace <functionOrClassName>",r);let a=g(e.value),o=a?O(e.value,t,{direction:"both",depth:3}):null;if(!o||o.inbound.length===0&&o.outbound.length===0&&o.root.length===0){let c=await w("trace",n,{name:t});if(c)return console.log(c.text),{success:!0,source:"cbm",inbound:0,outbound:0}}if(!o)return d(a?`No symbol named "${t}". Try \`prjct code symbols ${t}\`${(await y()).available?" or index the repo in CBM for polyglot depth":""}.`:"No symbol index \u2014 run `prjct sync` or `prjct code reindex` first.",r);if(r.md){let c=[`## Trace: \`${t}\``,"","### Roots",...o.root.map(u=>`- \`${u.kind}\` **${u.name}** \u2014 \`${u.file}:${u.startLine}\``),"",`### Inbound callers (${o.inbound.length})`,...o.inbound.length===0?["_none_"]:o.inbound.map(u=>`- d${u.depth} \`${u.symbol.name}\` (${u.symbol.kind}) \u2014 \`${u.symbol.file}:${u.symbol.startLine}\``),"",`### Outbound callees (${o.outbound.length})`,...o.outbound.length===0?["_none_"]:o.outbound.map(u=>`- d${u.depth} \`${u.symbol.name}\` (${u.symbol.kind}) \u2014 \`${u.symbol.file}:${u.symbol.startLine}\``)];console.log(c.join(`
12
+ `))}else{l.info(`Trace ${t}:`);for(let c of o.root)l.info(` root: ${c.kind} ${c.name} @ ${c.file}:${c.startLine}`);l.info(` inbound (${o.inbound.length}):`);for(let c of o.inbound.slice(0,20))l.info(` d${c.depth} ${c.symbol.name} \u2190 ${c.symbol.file}`);l.info(` outbound (${o.outbound.length}):`);for(let c of o.outbound.slice(0,20))l.info(` d${c.depth} ${c.symbol.name} \u2192 ${c.symbol.file}`)}return{success:!0,source:"native",root:o.root,inbound:o.inbound.length,outbound:o.outbound.length}}async impact(s,n){let r=await p(s,n);if(!r.ok)return r.result;let e=await E(s,r.value,{source:"auto"});return console.log(n.md?I(e):G(e)),{success:!0,...e}}async architecture(s,n){let r=await p(s,n);if(!r.ok)return r.result;let e=B(r.value);if(!e.ready||e.symbols===0){let t=await w("architecture",s);if(t)return console.log(t.text),{success:!0,source:"cbm",ready:!1}}return console.log(n.md?_(e):N(e)),{success:!0,source:"native",...e}}async exportArtifact(s,n){let r=await p(s,n);if(!r.ok)return r.result;if(!g(r.value))return d("No symbol index \u2014 run `prjct code reindex` first.",n);let e=await L(r.value);if(!e)return d("Export failed.",n);let t=`Cached ${e.symbols} symbols \xB7 ${e.edges} edges \u2192 ${e.path} (${e.bytes} bytes gzip) [per-project, not in client repo]`;return n.md?console.log(b("## Code graph cache",`> ${t}`)):l.success(t),{success:!0,...e}}async importArtifact(s,n){let r=await p(s,n);if(!r.ok)return r.result;let e=await P(r.value);if(!e.imported)return d(e.reason??"Import failed",n);let t=`Restored ${e.symbols} symbols \xB7 ${e.edges} edges from per-project cache`;return n.md?console.log(b("## Code graph restore",`> ${t}`)):l.success(t),{success:!0,...e}}async pushGraph(s,n){let r=await p(s,n);if(!r.ok)return r.result;if(!g(r.value))return d("No symbol index \u2014 run `prjct code reindex` first.",n);let e=await D(r.value);if(!e.uploaded)return d(e.reason??"Cloud upload failed (login with `prjct login` if offline).",n);let t=`Uploaded full structural graph \xB7 ${e.nodes??0} nodes \xB7 ${e.links??0} links (Function/Class/File + CALLS/IMPORTS \u2014 uncapped)`;return n.md?console.log(b("## Code graph cloud",`> ${t}`)):l.success(t),{success:!0,...e}}async reindex(s,n){let r=await p(s,n);if(!r.ok)return r.result;let e=await M(s,r.value),t=await k.readConfig(s).catch(()=>null);await F(r.value,{uploadToCloud:T(t)});let a=`Indexed ${e.symbolCount} symbols \xB7 ${e.edgeCount} edges \xB7 ${e.fileCount} files`;return n.md?console.log(b("## Code reindex",`> ${a}`)):l.success(a),{success:!0,meta:e}}async dead(s,n){let r=await p(s,n);if(!r.ok)return r.result;let e=H(r.value,{limit:50});return console.log(n.md?J(e):K(e)),{success:!0,count:e.dead.length,...e}}async cbmCmd(s,n){let r=s.trim().split(/\s+/).filter(Boolean);if(r[0]==="cli"&&r[1]){let a=r[1],o=r.slice(2).join(" "),m=o?(()=>{try{return JSON.parse(o)}catch{return null}})():{};if(!m)return d("cbm cli args must be JSON object",n);let c=await C(a,m);return c.ok?(console.log(c.stdout||c.stderr),{success:!0,stdout:c.stdout}):d(c.error??c.stderr??"CBM cli failed",n)}let e=await y(),t=x(e);return n.md?console.log(b("## CBM bridge",`> ${t}`,e.available?'Execute: `prjct code cbm cli <tool> \'{"key":"val"}\'` (see CBM docs for tools).':"")):(l.info(t),e.available&&l.info(` Execute: prjct code cbm cli <tool> '{"\u2026}'`)),{success:!0,...e}}};export{W as CodeCommands};
@@ -0,0 +1,7 @@
1
+ import { createRequire as __createRequire } from 'module';
2
+ import { fileURLToPath as __fileURLToPath } from 'url';
3
+ import { dirname as __pathDirname } from 'path';
4
+ const require = __createRequire(import.meta.url);
5
+ const __filename = __fileURLToPath(import.meta.url);
6
+ const __dirname = __pathDirname(__filename);
7
+ import{b as S,g as k,h as x,i as N}from"./chunk-QZ7T2EYR.mjs";import"./chunk-DMO3ZFUG.mjs";import"./chunk-NNOX3UU4.mjs";import"./chunk-HU5ERAAV.mjs";import"./chunk-6RT2P22O.mjs";import"./chunk-ZXTJLMVZ.mjs";import"./chunk-VWFVSNQT.mjs";import"./chunk-U24YKPYX.mjs";import"./chunk-D62TAZG6.mjs";import"./chunk-DOJPSIMG.mjs";import"./chunk-HYIT7MF5.mjs";import"./chunk-225DWS4D.mjs";import{a as o}from"./chunk-3TRXQAU4.mjs";var w={function:"Function",method:"Method",class:"Class",interface:"Interface",type:"Type",enum:"Enum",const:"Const",route:"Route",file:"File"},G={CALLS:5,IMPORTS:4,DEFINES:3,HANDLES:2,TESTS:1};function A(n){return w[n.toLowerCase()]??"Symbol"}o(A,"mapKind");function I(n){return typeof n=="number"&&Number.isFinite(n)&&n>=0}o(I,"hasFiniteCap");function $(n,i={}){if(!k(n))return null;let u=N(n);if(u.length===0)return null;let c=S(n),l=x(n),s=new Map;for(let e of c){let t=G[e.edgeType]??1;s.set(e.src,(s.get(e.src)??0)+t),s.set(e.dst,(s.get(e.dst)??0)+t)}let E=o(e=>{switch(e){case"class":return 8;case"function":case"method":return 6;case"interface":case"type":return 4;case"route":return 5;default:return 2}},"kindWeight"),h=u.map(e=>{let t=s.get(e.id)??0,F=e.exported?4:0;return{s:e,score:t+F+E(e.kind)}}).sort((e,t)=>t.score-e.score||e.s.name.localeCompare(t.s.name)),d=I(i.maxNodes)?h.slice(0,i.maxNodes).map(e=>e.s):h.map(e=>e.s),p=new Set(d.map(e=>e.id)),f=new Map;for(let e of d)f.set(e.file,(f.get(e.file)??0)+1);let C=[...f.entries()].sort((e,t)=>t[1]-e[1]||e[0].localeCompare(t[0])).map(([e])=>e),m=o(e=>`file:${e}`,"fileNodeId"),g=[];for(let e of C){let t=e.split("/").pop()||e;g.push({id:m(e),name:t,kind:"File",file:e,exported:!1}),p.add(m(e))}for(let e of d)g.push({id:e.id,name:e.name,kind:A(e.kind),file:e.file,exported:e.exported});let y=[],L=new Set(C);for(let e of d)L.has(e.file)&&y.push({source:m(e.file),target:e.id,type:"DEFINES"});let T=c.filter(e=>p.has(e.src)&&p.has(e.dst)&&e.src!==e.dst).map(e=>({source:e.src,target:e.dst,type:e.edgeType,prio:G[e.edgeType]??0,conf:e.confidence})).sort((e,t)=>t.prio-e.prio||t.conf-e.conf),a=new Set,r=[],b=I(i.maxLinks)?i.maxLinks:Number.POSITIVE_INFINITY;for(let e of y){if(r.length>=b)break;let t=`${e.source}->${e.target}:${e.type}`;a.has(t)||(a.add(t),r.push({source:e.source,target:e.target,type:e.type}))}for(let e of T){if(r.length>=b)break;let t=`${e.source}->${e.target}:${e.type}`;a.has(t)||(a.add(t),r.push({source:e.source,target:e.target,type:e.type}))}return{version:1,builtAt:l?.builtAt??new Date().toISOString(),symbolCount:l?.symbolCount??u.length,edgeCount:l?.edgeCount??c.length,nodes:g,links:r}}o($,"buildCloudCodeGraphSnapshot");function D(n){return!!n&&n.nodes.length>0}o(D,"isUploadableGraph");export{$ as buildCloudCodeGraphSnapshot,D as isUploadableGraph};
@@ -0,0 +1,7 @@
1
+ import { createRequire as __createRequire } from 'module';
2
+ import { fileURLToPath as __fileURLToPath } from 'url';
3
+ import { dirname as __pathDirname } from 'path';
4
+ const require = __createRequire(import.meta.url);
5
+ const __filename = __fileURLToPath(import.meta.url);
6
+ const __dirname = __pathDirname(__filename);
7
+ import{a,b,c,d,e,f,g}from"./chunk-5ONMON5L.mjs";import"./chunk-YLYAYRSJ.mjs";import"./chunk-GDLAQV3Q.mjs";import"./chunk-UT425KVX.mjs";import"./chunk-DOJPSIMG.mjs";import"./chunk-HYIT7MF5.mjs";import"./chunk-225DWS4D.mjs";import"./chunk-3TRXQAU4.mjs";export{a as CODEX_HOOK_EVENTS,c as codexHookSpecs,g as codexHooksStatus,d as ensureCodexHooksFeature,b as getCodexHooksJsonPath,e as installCodexHooks,f as uninstallCodexHooks};
@@ -0,0 +1,7 @@
1
+ import { createRequire as __createRequire } from 'module';
2
+ import { fileURLToPath as __fileURLToPath } from 'url';
3
+ import { dirname as __pathDirname } from 'path';
4
+ const require = __createRequire(import.meta.url);
5
+ const __filename = __fileURLToPath(import.meta.url);
6
+ const __dirname = __pathDirname(__filename);
7
+ import{a,b,c,d,e,f,g}from"./chunk-GDLAQV3Q.mjs";import"./chunk-UT425KVX.mjs";import"./chunk-DOJPSIMG.mjs";import"./chunk-HYIT7MF5.mjs";import"./chunk-225DWS4D.mjs";import"./chunk-3TRXQAU4.mjs";export{d as buildCodexStatusLineToml,c as buildContext7McpTomlBlock,b as buildPrjctMcpTomlBlock,g as codexHasContext7Server,f as ensureCodexContext7Server,e as ensureCodexMcpServer,a as getCodexConfigTomlPath};
@@ -0,0 +1,7 @@
1
+ import { createRequire as __createRequire } from 'module';
2
+ import { fileURLToPath as __fileURLToPath } from 'url';
3
+ import { dirname as __pathDirname } from 'path';
4
+ const require = __createRequire(import.meta.url);
5
+ const __filename = __fileURLToPath(import.meta.url);
6
+ const __dirname = __pathDirname(__filename);
7
+ import{a,b,c,d}from"./chunk-DN46DLU3.mjs";import"./chunk-PIA26GWG.mjs";import"./chunk-RP7F67ZT.mjs";import"./chunk-INJ5WT2D.mjs";import"./chunk-HU5ERAAV.mjs";import"./chunk-6RT2P22O.mjs";import"./chunk-ZXTJLMVZ.mjs";import"./chunk-VWFVSNQT.mjs";import"./chunk-U24YKPYX.mjs";import"./chunk-D62TAZG6.mjs";import"./chunk-XYDLXF5A.mjs";import"./chunk-FATYLG3L.mjs";import"./chunk-2EEMQV7N.mjs";import"./chunk-KPR5TWSN.mjs";import"./chunk-623SNKDH.mjs";import"./chunk-TTN2CFZC.mjs";import"./chunk-DOJPSIMG.mjs";import"./chunk-HYIT7MF5.mjs";import"./chunk-225DWS4D.mjs";import"./chunk-3TRXQAU4.mjs";export{a as CODEX_SKILL_MAX_BYTES,b as buildCodexSkillContent,c as installCodexSkill,d as verifyCodexPRouterReady};
@@ -0,0 +1,7 @@
1
+ import { createRequire as __createRequire } from 'module';
2
+ import { fileURLToPath as __fileURLToPath } from 'url';
3
+ import { dirname as __pathDirname } from 'path';
4
+ const require = __createRequire(import.meta.url);
5
+ const __filename = __fileURLToPath(import.meta.url);
6
+ const __dirname = __pathDirname(__filename);
7
+ import{a,b,c,d}from"./chunk-OYXQRBVM.mjs";import"./chunk-HU5ERAAV.mjs";import"./chunk-6RT2P22O.mjs";import"./chunk-ZXTJLMVZ.mjs";import"./chunk-VWFVSNQT.mjs";import"./chunk-U24YKPYX.mjs";import"./chunk-D62TAZG6.mjs";import"./chunk-XYDLXF5A.mjs";import"./chunk-FATYLG3L.mjs";import"./chunk-2EEMQV7N.mjs";import"./chunk-KPR5TWSN.mjs";import"./chunk-623SNKDH.mjs";import"./chunk-TTN2CFZC.mjs";import"./chunk-DOJPSIMG.mjs";import"./chunk-HYIT7MF5.mjs";import"./chunk-225DWS4D.mjs";import"./chunk-3TRXQAU4.mjs";export{b as CommandInstaller,d as default,c as getProviderPaths,a as installGlobalConfig};
@@ -0,0 +1,8 @@
1
+ import { createRequire as __createRequire } from 'module';
2
+ import { fileURLToPath as __fileURLToPath } from 'url';
3
+ import { dirname as __pathDirname } from 'path';
4
+ const require = __createRequire(import.meta.url);
5
+ const __filename = __fileURLToPath(import.meta.url);
6
+ const __dirname = __pathDirname(__filename);
7
+ import{a as c,d as r}from"./chunk-5MN22JFI.mjs";import{a as p}from"./chunk-V5VCXMKO.mjs";import"./chunk-7CI4AMVO.mjs";import"./chunk-XPRLQIVQ.mjs";import"./chunk-EZRNQXCC.mjs";import"./chunk-B7AQHL7B.mjs";import"./chunk-L4TUXFCL.mjs";import{h as o}from"./chunk-ID2C2S33.mjs";import"./chunk-3USVY66O.mjs";import"./chunk-OIE3AKKO.mjs";import"./chunk-Q6C27OL7.mjs";import"./chunk-NXUIMC22.mjs";import"./chunk-DZVOFEM5.mjs";import"./chunk-5EF5EOCL.mjs";import"./chunk-DMO3ZFUG.mjs";import"./chunk-NNOX3UU4.mjs";import"./chunk-INJ5WT2D.mjs";import"./chunk-HU5ERAAV.mjs";import"./chunk-6RT2P22O.mjs";import"./chunk-ZXTJLMVZ.mjs";import{a as l,b as g,c as a,d as m,e as d}from"./chunk-TIBYHZFA.mjs";import"./chunk-VWFVSNQT.mjs";import"./chunk-U24YKPYX.mjs";import"./chunk-D62TAZG6.mjs";import"./chunk-623SNKDH.mjs";import"./chunk-TTN2CFZC.mjs";import"./chunk-DOJPSIMG.mjs";import"./chunk-HYIT7MF5.mjs";import"./chunk-225DWS4D.mjs";import{a as u}from"./chunk-3TRXQAU4.mjs";var C=class extends p{static{u(this,"ConfigCommands")}async config(e=null,n=process.cwd(),s={}){let t=(e??"").trim().split(/\s+/).filter(Boolean),i=t[0]??"list";switch(i){case"list":return this.list(s);case"get":return this.get(t[1],s);case"set":return this.set(t[1],t.slice(2).join(" "),s);case"unset":return this.unset(t[1],s);default:return o.fail(`Unknown config subcommand: ${i}. Use: list, get <k>, set <k> <v>, unset <k>.`),{success:!1,error:"Unknown config subcommand"}}}list(e){let n=g(),s=Object.keys(n).sort();if(e.md){let t=s.length===0?"_No global config set._":s.map(i=>`- \`${i}\`: \`${JSON.stringify(n[i])}\``).join(`
8
+ `);console.log(c(r("Global config",t),r("Path",`\`${d()}\``)))}else if(s.length===0)o.info("No global config set.");else for(let t of s)console.log(` ${t} = ${JSON.stringify(n[t])}`);return{success:!0,config:n}}get(e,n){if(!e)return o.fail("Usage: prjct config get <key>"),{success:!1,error:"Missing key"};let s=l(e);return n.md?console.log(c(r(e,s===void 0?"_(unset)_":`\`${JSON.stringify(s)}\``))):s===void 0?o.info("(unset)"):console.log(JSON.stringify(s)),{success:!0,key:e,value:s}}set(e,n,s){if(!e||n===void 0||n==="")return o.fail("Usage: prjct config set <key> <value>"),{success:!1,error:"Missing key or value"};let t=v(n);a(e,t);let i=`${e} = ${JSON.stringify(t)}`;return s.md?console.log(c(r("Set",i))):o.done(i),{success:!0,key:e,value:t}}unset(e,n){if(!e)return o.fail("Usage: prjct config unset <key>"),{success:!1,error:"Missing key"};m(e);let s=`Removed ${e}`;return n.md?console.log(c(r("Unset",s))):o.done(s),{success:!0,key:e}}};function v(f){let e=f.toLowerCase();if(e==="true"||e==="on")return"on";if(e==="false"||e==="off")return"off";let n=Number(f);return!Number.isNaN(n)&&/^-?\d+(\.\d+)?$/.test(f)?n:f}u(v,"parseValue");export{C as ConfigCommands};
@@ -0,0 +1,7 @@
1
+ import { createRequire as __createRequire } from 'module';
2
+ import { fileURLToPath as __fileURLToPath } from 'url';
3
+ import { dirname as __pathDirname } from 'path';
4
+ const require = __createRequire(import.meta.url);
5
+ const __filename = __fileURLToPath(import.meta.url);
6
+ const __dirname = __pathDirname(__filename);
7
+ import{b as a}from"./chunk-3USVY66O.mjs";import"./chunk-OIE3AKKO.mjs";import"./chunk-DMO3ZFUG.mjs";import"./chunk-NNOX3UU4.mjs";import"./chunk-HU5ERAAV.mjs";import"./chunk-6RT2P22O.mjs";import"./chunk-ZXTJLMVZ.mjs";import"./chunk-VWFVSNQT.mjs";import"./chunk-U24YKPYX.mjs";import"./chunk-D62TAZG6.mjs";import"./chunk-623SNKDH.mjs";import"./chunk-TTN2CFZC.mjs";import"./chunk-DOJPSIMG.mjs";import"./chunk-HYIT7MF5.mjs";import"./chunk-225DWS4D.mjs";import"./chunk-3TRXQAU4.mjs";export{a as default};
@@ -0,0 +1,7 @@
1
+ import { createRequire as __createRequire } from 'module';
2
+ import { fileURLToPath as __fileURLToPath } from 'url';
3
+ import { dirname as __pathDirname } from 'path';
4
+ const require = __createRequire(import.meta.url);
5
+ const __filename = __fileURLToPath(import.meta.url);
6
+ const __dirname = __pathDirname(__filename);
7
+ import{a,b,c,d,e,f,g,h,i,j,k,l,m}from"./chunk-U55OPVYR.mjs";import"./chunk-D62TAZG6.mjs";import"./chunk-3TRXQAU4.mjs";export{a as BLOB_MISSING,c as CONTENT_BOUND_MAX_PATHS,b as CONTENT_BOUND_VERSION,e as buildTreeHash,h as contentBoundDriftVerdict,m as currentTreeHashForStamp,d as hashBlobContent,f as normalizeStampPath,j as resolveStampPaths,i as shortHash,l as stampForApprove,g as stampFromContents,k as stampProjectPaths};