prjct-cli 3.97.0 → 3.98.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 (297) hide show
  1. package/CHANGELOG.md +5 -0
  2. package/dist/bin/core-chunks/{agent-HCP5FF77.mjs → agent-3N2MSSGT.mjs} +1 -1
  3. package/dist/bin/core-chunks/{agent-switch-AVSX6SLY.mjs → agent-switch-4SE6GF7R.mjs} +1 -1
  4. package/dist/bin/core-chunks/{agents-OAQXBGH3.mjs → agents-ZPNNCOH7.mjs} +1 -1
  5. package/dist/bin/core-chunks/{analysis-3A7ODSSI.mjs → analysis-OARMM4AH.mjs} +2 -2
  6. package/dist/bin/core-chunks/{auto-flush-EWSVMKQN.mjs → auto-flush-XA3V7BJ6.mjs} +1 -1
  7. package/dist/bin/core-chunks/{bin-commands-LLHG2NSY.mjs → bin-commands-FYID6EYI.mjs} +5 -5
  8. package/dist/bin/core-chunks/{capture-7LQ52T6L.mjs → capture-3JJPWIF3.mjs} +1 -1
  9. package/dist/bin/core-chunks/{capture-gate-M4HM7WAI.mjs → capture-gate-G5LGVDME.mjs} +1 -1
  10. package/dist/bin/core-chunks/{ceremonies-4OZ3FKRE.mjs → ceremonies-B565WDCA.mjs} +4 -4
  11. package/dist/bin/core-chunks/{changelog-CUNVCEL5.mjs → changelog-LPJ4GKB6.mjs} +1 -1
  12. package/dist/bin/core-chunks/{chunk-DN46DLU3.mjs → chunk-2FRLIQKX.mjs} +1 -1
  13. package/dist/bin/core-chunks/{chunk-X4FR5S7E.mjs → chunk-2VRS5CUH.mjs} +1 -1
  14. package/dist/bin/core-chunks/{chunk-ZK7BMUMR.mjs → chunk-2VXPFULA.mjs} +1 -1
  15. package/dist/bin/core-chunks/chunk-3OWKIRK6.mjs +7 -0
  16. package/dist/bin/core-chunks/{chunk-V5VCXMKO.mjs → chunk-5DZ2LTII.mjs} +1 -1
  17. package/dist/bin/core-chunks/{chunk-5ONMON5L.mjs → chunk-5OWPZWEU.mjs} +1 -1
  18. package/dist/bin/core-chunks/{chunk-KWC2PCPC.mjs → chunk-5TGZSK4C.mjs} +1 -1
  19. package/dist/bin/core-chunks/chunk-5ZBACKED.mjs +14 -0
  20. package/dist/bin/core-chunks/{chunk-X35YYOFE.mjs → chunk-6KNMT46X.mjs} +2 -2
  21. package/dist/bin/core-chunks/{chunk-5MN22JFI.mjs → chunk-6POAOY5C.mjs} +1 -1
  22. package/dist/bin/core-chunks/{chunk-7CI4AMVO.mjs → chunk-6U3CYLY5.mjs} +1 -1
  23. package/dist/bin/core-chunks/{chunk-J7T5IEFJ.mjs → chunk-6U3MV7KZ.mjs} +1 -1
  24. package/dist/bin/core-chunks/{chunk-2ZPM4Z6W.mjs → chunk-7BU6SJBC.mjs} +4 -4
  25. package/dist/bin/core-chunks/{chunk-ZKJZDOPT.mjs → chunk-ACIOJQSI.mjs} +1 -1
  26. package/dist/bin/core-chunks/{chunk-UE3XKXWM.mjs → chunk-ALTQ3KL4.mjs} +1 -1
  27. package/dist/bin/core-chunks/{chunk-IVGWOY3U.mjs → chunk-ANBDOI53.mjs} +1 -1
  28. package/dist/bin/core-chunks/{chunk-LZC6NGB6.mjs → chunk-B2HY22OD.mjs} +2 -2
  29. package/dist/bin/core-chunks/{chunk-6AFXUX2M.mjs → chunk-BUD3R6LF.mjs} +2 -2
  30. package/dist/bin/core-chunks/{chunk-MDONTD7O.mjs → chunk-CA2VFWFP.mjs} +1 -1
  31. package/dist/bin/core-chunks/{chunk-56FW4P6U.mjs → chunk-CB3CNJTL.mjs} +1 -1
  32. package/dist/bin/core-chunks/{chunk-6FFOWWH2.mjs → chunk-CVKMV22J.mjs} +1 -1
  33. package/dist/bin/core-chunks/{chunk-5UUITMRX.mjs → chunk-CXKDKMYE.mjs} +1 -1
  34. package/dist/bin/core-chunks/{chunk-XSZG3CBO.mjs → chunk-DTMZBK4E.mjs} +1 -1
  35. package/dist/bin/core-chunks/chunk-DW4QMD6J.mjs +10 -0
  36. package/dist/bin/core-chunks/{chunk-CDLZLTRY.mjs → chunk-DZDEBDAB.mjs} +1 -1
  37. package/dist/bin/core-chunks/{chunk-WGDE3L33.mjs → chunk-FOUBHU4X.mjs} +1 -1
  38. package/dist/bin/core-chunks/{chunk-CNWEQUB7.mjs → chunk-HA7Y76GF.mjs} +1 -1
  39. package/dist/bin/core-chunks/{chunk-MTDCRYLP.mjs → chunk-HVXWQ2XZ.mjs} +1 -1
  40. package/dist/bin/core-chunks/{chunk-OYXQRBVM.mjs → chunk-IJNKHQIS.mjs} +1 -1
  41. package/dist/bin/core-chunks/{chunk-KIRU4QFX.mjs → chunk-J6Y7IVFQ.mjs} +1 -1
  42. package/dist/bin/core-chunks/{chunk-3FXNIJCS.mjs → chunk-JGGQSMZC.mjs} +1 -1
  43. package/dist/bin/core-chunks/{chunk-6P4GMVUZ.mjs → chunk-KI4OY3UQ.mjs} +1 -1
  44. package/dist/bin/core-chunks/{chunk-BTCCUMKI.mjs → chunk-L3DJN3XD.mjs} +1 -1
  45. package/dist/bin/core-chunks/{chunk-CEOTHJIY.mjs → chunk-LFOQ7FCR.mjs} +1 -1
  46. package/dist/bin/core-chunks/{chunk-XU3BQPBU.mjs → chunk-LGX2GM45.mjs} +1 -1
  47. package/dist/bin/core-chunks/chunk-LTKUTRRL.mjs +7 -0
  48. package/dist/bin/core-chunks/{chunk-BQKDJ3U6.mjs → chunk-LZILSE5H.mjs} +1 -1
  49. package/dist/bin/core-chunks/chunk-MPU3VM6Z.mjs +7 -0
  50. package/dist/bin/core-chunks/{chunk-INM5COWM.mjs → chunk-MXJF3FA7.mjs} +1 -1
  51. package/dist/bin/core-chunks/{chunk-VDXTMAMO.mjs → chunk-NNILF7R3.mjs} +1 -1
  52. package/dist/bin/core-chunks/{chunk-WZXUFSVT.mjs → chunk-O5VCBMEK.mjs} +1 -1
  53. package/dist/bin/core-chunks/{chunk-XYDLXF5A.mjs → chunk-OE27RFLJ.mjs} +1 -1
  54. package/dist/bin/core-chunks/{chunk-HEXSVBUP.mjs → chunk-OGM34Z6W.mjs} +1 -1
  55. package/dist/bin/core-chunks/{chunk-KKIJAEYU.mjs → chunk-OXKGN3HG.mjs} +1 -1
  56. package/dist/bin/core-chunks/{chunk-QLMZW4K7.mjs → chunk-PQTR6XVW.mjs} +1 -1
  57. package/dist/bin/core-chunks/{chunk-53ZPEZLU.mjs → chunk-Q7GJIU6D.mjs} +1 -1
  58. package/dist/bin/core-chunks/{chunk-IFLBZKKK.mjs → chunk-QWRPJARA.mjs} +1 -1
  59. package/dist/bin/core-chunks/{chunk-TGNZI4KF.mjs → chunk-STFUT7R7.mjs} +2 -2
  60. package/dist/bin/core-chunks/{chunk-IMQCXC3R.mjs → chunk-SUXIKMTS.mjs} +1 -1
  61. package/dist/bin/core-chunks/{chunk-WP5IU4W4.mjs → chunk-TOORPP6K.mjs} +1 -1
  62. package/dist/bin/core-chunks/{chunk-7QMBIMEX.mjs → chunk-UAYTDSYG.mjs} +3 -3
  63. package/dist/bin/core-chunks/{chunk-PPERWRFS.mjs → chunk-UNIBFM6J.mjs} +1 -1
  64. package/dist/bin/core-chunks/{chunk-5YSPND5J.mjs → chunk-UX2ORID4.mjs} +1 -1
  65. package/dist/bin/core-chunks/{chunk-3JD6KRNJ.mjs → chunk-VJCTTFKP.mjs} +1 -1
  66. package/dist/bin/core-chunks/chunk-W23JLJJZ.mjs +109 -0
  67. package/dist/bin/core-chunks/{chunk-DCVPNFS4.mjs → chunk-WCTVZQBG.mjs} +1 -1
  68. package/dist/bin/core-chunks/{chunk-GOIBJ7PV.mjs → chunk-WZ6W5ZQ5.mjs} +1 -1
  69. package/dist/bin/core-chunks/{chunk-XPRLQIVQ.mjs → chunk-X433BB6F.mjs} +1 -1
  70. package/dist/bin/core-chunks/{chunk-ZHTYSYZC.mjs → chunk-XBR63NJA.mjs} +1 -1
  71. package/dist/bin/core-chunks/{chunk-ZS7XJUPE.mjs → chunk-XJTEPHLC.mjs} +1 -1
  72. package/dist/bin/core-chunks/{chunk-K25HGTC3.mjs → chunk-XLAGA5B7.mjs} +1 -1
  73. package/dist/bin/core-chunks/{chunk-3USVY66O.mjs → chunk-XSZOHNL4.mjs} +1 -1
  74. package/dist/bin/core-chunks/{chunk-TTN2CFZC.mjs → chunk-XWLTEAGN.mjs} +1 -1
  75. package/dist/bin/core-chunks/{chunk-V3Y3G2DE.mjs → chunk-YOWW4LHK.mjs} +1 -1
  76. package/dist/bin/core-chunks/{chunk-P53YMOKR.mjs → chunk-YPLFWN62.mjs} +1 -1
  77. package/dist/bin/core-chunks/{chunk-ZQHSJ6FF.mjs → chunk-ZAUJWUUN.mjs} +3 -3
  78. package/dist/bin/core-chunks/{chunk-WSVMQYYU.mjs → chunk-ZQ2XH76U.mjs} +2 -2
  79. package/dist/bin/core-chunks/{chunk-RXXXA7Z6.mjs → chunk-ZSANMA7K.mjs} +1 -1
  80. package/dist/bin/core-chunks/{chunk-AJTBFIH2.mjs → chunk-ZZR3LXCK.mjs} +1 -1
  81. package/dist/bin/core-chunks/{cleanup-installs-WHXUGAHM.mjs → cleanup-installs-LD43GI4K.mjs} +1 -1
  82. package/dist/bin/core-chunks/{cloud-FFUJZLDV.mjs → cloud-RXHFZ7MX.mjs} +1 -1
  83. package/dist/bin/core-chunks/{code-SU7GCPH6.mjs → code-IYK65A62.mjs} +1 -1
  84. package/dist/bin/core-chunks/{codex-hooks-GOLMCL2Q.mjs → codex-hooks-N5UHKK5B.mjs} +1 -1
  85. package/dist/bin/core-chunks/{codex-mcp-K4X2UIQF.mjs → codex-mcp-G7WNAT6T.mjs} +1 -1
  86. package/dist/bin/core-chunks/{codex-skill-3HNVU4T4.mjs → codex-skill-IZNP76BJ.mjs} +1 -1
  87. package/dist/bin/core-chunks/{command-installer-XIQK2G6W.mjs → command-installer-4ENM4GZR.mjs} +1 -1
  88. package/dist/bin/core-chunks/{config-W3RHV3GK.mjs → config-UVF7YOR6.mjs} +1 -1
  89. package/dist/bin/core-chunks/{config-manager-QVFHXIKI.mjs → config-manager-QY73WM5U.mjs} +1 -1
  90. package/dist/bin/core-chunks/{context-4KGTUAC4.mjs → context-4GB6ICXK.mjs} +1 -1
  91. package/dist/bin/core-chunks/{context-DDHC7VIC.mjs → context-MPHOQPXF.mjs} +2 -2
  92. package/dist/bin/core-chunks/{context-checkpoint-4CEUPEVG.mjs → context-checkpoint-NBI5HKPV.mjs} +1 -1
  93. package/dist/bin/core-chunks/{context-tiers-4S6H22NP.mjs → context-tiers-NOKJ75QP.mjs} +1 -1
  94. package/dist/bin/core-chunks/{context7-service-AZWDYK5Z.mjs → context7-service-2MYRUNKY.mjs} +1 -1
  95. package/dist/bin/core-chunks/{core-PR5WEQCS.mjs → core-WMEHDCOK.mjs} +1 -1
  96. package/dist/bin/core-chunks/{crew-JQCG6NS3.mjs → crew-EYVSIX4L.mjs} +1 -1
  97. package/dist/bin/core-chunks/{cwd-changed-ODKZVSPB.mjs → cwd-changed-EUJZOBIC.mjs} +1 -1
  98. package/dist/bin/core-chunks/{daemon-2NQTBFVR.mjs → daemon-QARP3RVX.mjs} +1 -1
  99. package/dist/bin/core-chunks/{developer-profile-MRPBWL2K.mjs → developer-profile-2VSFJGCU.mjs} +1 -1
  100. package/dist/bin/core-chunks/{distill-MLDZG5RA.mjs → distill-ZF7WHGCZ.mjs} +1 -1
  101. package/dist/bin/core-chunks/doctor-heal-XFSVPSEY.mjs +7 -0
  102. package/dist/bin/core-chunks/{doctor-service-WXLB2FEE.mjs → doctor-service-6ZJBWIXR.mjs} +1 -1
  103. package/dist/bin/core-chunks/{dynasty-outcomes-H2O546OL.mjs → dynasty-outcomes-KDWIEA4Y.mjs} +1 -1
  104. package/dist/bin/core-chunks/{embeddings-7A5Z5I67.mjs → embeddings-354ZYFKX.mjs} +1 -1
  105. package/dist/bin/core-chunks/{enriched-recall-YXK7EIKH.mjs → enriched-recall-MKBOXB7M.mjs} +1 -1
  106. package/dist/bin/core-chunks/{eval-4YFUBFLV.mjs → eval-O4YD6YOV.mjs} +2 -2
  107. package/dist/bin/core-chunks/{format-5V6GF6JJ.mjs → format-SYVL4CV5.mjs} +1 -1
  108. package/dist/bin/core-chunks/{gemini-settings-ZTU3VQU3.mjs → gemini-settings-RGD7JLSP.mjs} +1 -1
  109. package/dist/bin/core-chunks/{grok-mcp-F3SRFMCW.mjs → grok-mcp-IE2RRRRW.mjs} +1 -1
  110. package/dist/bin/core-chunks/{grok-plugin-4CE2WUYI.mjs → grok-plugin-SSANHBS7.mjs} +1 -1
  111. package/dist/bin/core-chunks/{grok-skill-GLSBOOKW.mjs → grok-skill-7ZP7R7KO.mjs} +1 -1
  112. package/dist/bin/core-chunks/{guard-FJBJ6IAE.mjs → guard-RT7U3LJX.mjs} +1 -1
  113. package/dist/bin/core-chunks/{guards-LFUFKVVH.mjs → guards-AXH6V2IJ.mjs} +1 -1
  114. package/dist/bin/core-chunks/{harness-FN3HASSA.mjs → harness-V7J7WIT2.mjs} +2 -2
  115. package/dist/bin/core-chunks/{health-W2VWME7Z.mjs → health-TNB5OC37.mjs} +1 -1
  116. package/dist/bin/core-chunks/{help-I37I3V2R.mjs → help-P7EYELVK.mjs} +1 -1
  117. package/dist/bin/core-chunks/{hooks-service-C2P5DRCH.mjs → hooks-service-REI56DDC.mjs} +1 -1
  118. package/dist/bin/core-chunks/{install-XP4S6HWQ.mjs → install-FZQJJWT5.mjs} +2 -2
  119. package/dist/bin/core-chunks/{judgment-GJE332LF.mjs → judgment-G5KH6QFC.mjs} +2 -2
  120. package/dist/bin/core-chunks/{judgment-receipt-WT4EMCAV.mjs → judgment-receipt-GO6QEZQC.mjs} +1 -1
  121. package/dist/bin/core-chunks/{kimi-hooks-2UEUIKXV.mjs → kimi-hooks-TR6J3OVG.mjs} +1 -1
  122. package/dist/bin/core-chunks/{kimi-mcp-DJCXZ2JY.mjs → kimi-mcp-ETG7O6O5.mjs} +1 -1
  123. package/dist/bin/core-chunks/{land-cue-5USQ64MS.mjs → land-cue-3BUD3KJJ.mjs} +1 -1
  124. package/dist/bin/core-chunks/{land-rho-ISNVEPVC.mjs → land-rho-MCTQDPRH.mjs} +1 -1
  125. package/dist/bin/core-chunks/{land-synthesis-CHARJMUP.mjs → land-synthesis-MU4EZEYL.mjs} +1 -1
  126. package/dist/bin/core-chunks/{lean-L53CKZNH.mjs → lean-26BWCUOR.mjs} +1 -1
  127. package/dist/bin/core-chunks/{legacy-crew-sweep-2TLKJTHI.mjs → legacy-crew-sweep-G5UJT2PM.mjs} +2 -2
  128. package/dist/bin/core-chunks/{llm-XMH7WTHV.mjs → llm-KMVXVBHG.mjs} +1 -1
  129. package/dist/bin/core-chunks/{mcp-FLVIZBV2.mjs → mcp-BD5TOTCK.mjs} +1 -1
  130. package/dist/bin/core-chunks/{memory-dream-EJWI4FJO.mjs → memory-dream-6GFV2GXN.mjs} +1 -1
  131. package/dist/bin/core-chunks/{memory-export-27HTNNFI.mjs → memory-export-WJ4H7CFV.mjs} +1 -1
  132. package/dist/bin/core-chunks/{memory-index-BRZDZ2BY.mjs → memory-index-7NIU34EI.mjs} +1 -1
  133. package/dist/bin/core-chunks/{notification-KJ4FQJAW.mjs → notification-G654IX3O.mjs} +1 -1
  134. package/dist/bin/core-chunks/{notify-76B7AICZ.mjs → notify-EWYUBKGO.mjs} +1 -1
  135. package/dist/bin/core-chunks/{opencode-mcp-5YSIYDI3.mjs → opencode-mcp-L7NC77JF.mjs} +1 -1
  136. package/dist/bin/core-chunks/{pack-integrity-GXN67LJB.mjs → pack-integrity-X277OVRB.mjs} +1 -1
  137. package/dist/bin/core-chunks/{pack-manager-46SPIPPD.mjs → pack-manager-VN7F6R47.mjs} +1 -1
  138. package/dist/bin/core-chunks/package-R4FUTGOE.mjs +7 -0
  139. package/dist/bin/core-chunks/{pi-skill-SDHTUK3V.mjs → pi-skill-IZQEUILZ.mjs} +1 -1
  140. package/dist/bin/core-chunks/{planning-S3MYVWH6.mjs → planning-NOWLKZDS.mjs} +2 -2
  141. package/dist/bin/core-chunks/{post-edit-5YSNEMK7.mjs → post-edit-GTBY32JU.mjs} +1 -1
  142. package/dist/bin/core-chunks/{pre-bash-GLDILCRF.mjs → pre-bash-32ZOGNSP.mjs} +1 -1
  143. package/dist/bin/core-chunks/{pre-commit-U6HPPNIC.mjs → pre-commit-7TU2A7H4.mjs} +1 -1
  144. package/dist/bin/core-chunks/{pre-edit-PEYQA6P6.mjs → pre-edit-ASEWA5TS.mjs} +1 -1
  145. package/dist/bin/core-chunks/{pre-package-76JR5GLO.mjs → pre-package-ZTZACEBB.mjs} +1 -1
  146. package/dist/bin/core-chunks/{pre-search-5EHNUOP3.mjs → pre-search-MKDRFJSE.mjs} +1 -1
  147. package/dist/bin/core-chunks/{preferences-BTSYWYUM.mjs → preferences-KO5U2ELK.mjs} +1 -1
  148. package/dist/bin/core-chunks/{primitives-IXAYLX7U.mjs → primitives-GNUMBYOK.mjs} +1 -1
  149. package/dist/bin/core-chunks/{prjct-md-SUDFWDCS.mjs → prjct-md-BSFV7OQQ.mjs} +1 -1
  150. package/dist/bin/core-chunks/{product-KKGJ6MMF.mjs → product-GUHSUNIH.mjs} +1 -1
  151. package/dist/bin/core-chunks/{project-agent-surfaces-I2CUZUIN.mjs → project-agent-surfaces-BXCJJXB7.mjs} +1 -1
  152. package/dist/bin/core-chunks/{project-memory-GYLYIJQD.mjs → project-memory-L5MDZYST.mjs} +1 -1
  153. package/dist/bin/core-chunks/{project-style-evolution-5W25UPPN.mjs → project-style-evolution-HIMSJQQB.mjs} +1 -1
  154. package/dist/bin/core-chunks/prompt-47YP5JIR.mjs +25 -0
  155. package/dist/bin/core-chunks/{purge-5EPJV25P.mjs → purge-6SJKHKIY.mjs} +1 -1
  156. package/dist/bin/core-chunks/{registry-LK6IQ5UX.mjs → registry-YM2EYUXY.mjs} +1 -1
  157. package/dist/bin/core-chunks/{retention-S22T3SPT.mjs → retention-QSXWKE4H.mjs} +1 -1
  158. package/dist/bin/core-chunks/{retro-CLKOHAN6.mjs → retro-B2EBN4TA.mjs} +1 -1
  159. package/dist/bin/core-chunks/{review-risk-LLLBKUXT.mjs → review-risk-LBPY5M3K.mjs} +1 -1
  160. package/dist/bin/core-chunks/{safe-artifacts-RW5WQUUJ.mjs → safe-artifacts-PE2TMEZQ.mjs} +1 -1
  161. package/dist/bin/core-chunks/{sdd-HE7O6N5S.mjs → sdd-3WNZJ6FU.mjs} +1 -1
  162. package/dist/bin/core-chunks/{seed-JX7W53E5.mjs → seed-MMDJE2UO.mjs} +2 -2
  163. package/dist/bin/core-chunks/{self-heal-DFUEKNF3.mjs → self-heal-R5FBXEVQ.mjs} +1 -1
  164. package/dist/bin/core-chunks/{session-continuity-BFSW4OL6.mjs → session-continuity-OQDB5UYI.mjs} +1 -1
  165. package/dist/bin/core-chunks/{session-start-HVYUKJL2.mjs → session-start-FM6UL7MT.mjs} +1 -1
  166. package/dist/bin/core-chunks/{setup-GHS24ER5.mjs → setup-BL36ZWPW.mjs} +2 -2
  167. package/dist/bin/core-chunks/{setup-J4JFYT63.mjs → setup-V75BWRHU.mjs} +2 -2
  168. package/dist/bin/core-chunks/{shipping-I4D4AVTE.mjs → shipping-NZVM57JJ.mjs} +4 -4
  169. package/dist/bin/core-chunks/{signals-digest-V44KYN6Z.mjs → signals-digest-P5BG6MZF.mjs} +1 -1
  170. package/dist/bin/core-chunks/{skill-adherence-MHY4BZL4.mjs → skill-adherence-JE3N3Y67.mjs} +1 -1
  171. package/dist/bin/core-chunks/{spec-2XXPLHUZ.mjs → spec-VC3VTUI3.mjs} +3 -3
  172. package/dist/bin/core-chunks/{spec-context-inference-THFMXC7S.mjs → spec-context-inference-KOINWBC7.mjs} +1 -1
  173. package/dist/bin/core-chunks/{spec-service-I23KJKKP.mjs → spec-service-UZ53XL6X.mjs} +1 -1
  174. package/dist/bin/core-chunks/{spec-task-breakdown-HTG6ME6G.mjs → spec-task-breakdown-3Y7YXCIQ.mjs} +1 -1
  175. package/dist/bin/core-chunks/{stop-2H57XCGZ.mjs → stop-6SH36ULT.mjs} +3 -3
  176. package/dist/bin/core-chunks/{subagent-start-5LPASXOS.mjs → subagent-start-TVGBV2V2.mjs} +1 -1
  177. package/dist/bin/core-chunks/{subagent-stop-ANLSG3KN.mjs → subagent-stop-APWY6KMX.mjs} +1 -1
  178. package/dist/bin/core-chunks/{surface-attribution-WL7S53XX.mjs → surface-attribution-CQVM2SWY.mjs} +1 -1
  179. package/dist/bin/core-chunks/{task-service-FK7FC3PE.mjs → task-service-KFYL5NT4.mjs} +1 -1
  180. package/dist/bin/core-chunks/{tdd-NQDHU62B.mjs → tdd-P2PP4RR4.mjs} +1 -1
  181. package/dist/bin/core-chunks/{team-XZ4Q6UBV.mjs → team-WKAAOEFE.mjs} +1 -1
  182. package/dist/bin/core-chunks/{template-loader-33OVJ4G5.mjs → template-loader-H4FE37HV.mjs} +1 -1
  183. package/dist/bin/core-chunks/{uninstall-6NFON7FO.mjs → uninstall-W6EAUS7N.mjs} +1 -1
  184. package/dist/bin/core-chunks/{update-4IE6SA6M.mjs → update-PSHEJJI5.mjs} +2 -2
  185. package/dist/bin/core-chunks/{update-checker-FK7MWNWN.mjs → update-checker-LZCUPWQB.mjs} +1 -1
  186. package/dist/bin/core-chunks/{version-252QLBN2.mjs → version-B5DBRVGQ.mjs} +1 -1
  187. package/dist/bin/core-chunks/{watch-service-7ZERG7RC.mjs → watch-service-7V3O52TW.mjs} +1 -1
  188. package/dist/bin/core-chunks/weak-frontier-demo-ZCDTMYRO.mjs +7 -0
  189. package/dist/bin/core-chunks/{weak-model-mode-DH66XMD2.mjs → weak-model-mode-LOAPFJPQ.mjs} +1 -1
  190. package/dist/bin/core-chunks/{work-graph-JGJWE3AV.mjs → work-graph-ZNV7S6EU.mjs} +1 -1
  191. package/dist/bin/core-chunks/{work-scope-3LXOEIUX.mjs → work-scope-XXPUH6TU.mjs} +1 -1
  192. package/dist/bin/core-chunks/{workflow-FGJVLRQ3.mjs → workflow-XM77QYRF.mjs} +2 -2
  193. package/dist/bin/core-chunks/{workflows-reference-UWKRZ6BJ.mjs → workflows-reference-T7RH7IGJ.mjs} +1 -1
  194. package/dist/bin/core-chunks/{world-model-impact-RH5WH2B3.mjs → world-model-impact-FAGGNUGN.mjs} +1 -1
  195. package/dist/bin/hook-chunks/{agent-switch-7GOGG4KG.mjs → agent-switch-TAJWH2ZD.mjs} +1 -1
  196. package/dist/bin/hook-chunks/{analysis-UI2JRLJO.mjs → analysis-34WDLUXK.mjs} +2 -2
  197. package/dist/bin/hook-chunks/{auto-flush-JKIXTI2I.mjs → auto-flush-7TIEBPPQ.mjs} +1 -1
  198. package/dist/bin/hook-chunks/{capture-gate-DIPHPNIC.mjs → capture-gate-JFVGG7RB.mjs} +1 -1
  199. package/dist/bin/hook-chunks/{chunk-XXVHUYL7.mjs → chunk-22CBVTZ3.mjs} +1 -1
  200. package/dist/bin/hook-chunks/{chunk-ZH2MF7H7.mjs → chunk-3JOZN7YJ.mjs} +1 -1
  201. package/dist/bin/hook-chunks/{chunk-Y7RDBMNC.mjs → chunk-4X3KUIXK.mjs} +1 -1
  202. package/dist/bin/hook-chunks/{chunk-6RS7PNAN.mjs → chunk-5ALQBNIZ.mjs} +1 -1
  203. package/dist/bin/hook-chunks/{chunk-IL36ER4U.mjs → chunk-5VPZI2ZF.mjs} +1 -1
  204. package/dist/bin/hook-chunks/{chunk-FBEDUKMG.mjs → chunk-6EHYPQ5U.mjs} +1 -1
  205. package/dist/bin/hook-chunks/chunk-7H5UVM6X.mjs +9 -0
  206. package/dist/bin/hook-chunks/{chunk-IDPBMN3Q.mjs → chunk-A3R47SP6.mjs} +1 -1
  207. package/dist/bin/hook-chunks/{chunk-UI25YRTY.mjs → chunk-CGAKJDKT.mjs} +1 -1
  208. package/dist/bin/hook-chunks/{chunk-6LU777GI.mjs → chunk-CJY4Y5SO.mjs} +1 -1
  209. package/dist/bin/hook-chunks/{chunk-WIA6ORIY.mjs → chunk-FSFURDAE.mjs} +1 -1
  210. package/dist/bin/hook-chunks/{chunk-6WDRJ7J7.mjs → chunk-FTBBQHI4.mjs} +1 -1
  211. package/dist/bin/hook-chunks/{chunk-25OGCQTR.mjs → chunk-G4VJKPG7.mjs} +3 -3
  212. package/dist/bin/hook-chunks/{chunk-PFORBQBF.mjs → chunk-GAJOSSB4.mjs} +2 -2
  213. package/dist/bin/hook-chunks/{chunk-KOLXYWOA.mjs → chunk-H3GIYI4Q.mjs} +2 -2
  214. package/dist/bin/hook-chunks/{chunk-B7MHIUFA.mjs → chunk-HRU2KNEB.mjs} +1 -1
  215. package/dist/bin/hook-chunks/{chunk-JF6DFOQK.mjs → chunk-LCGWETJ6.mjs} +1 -1
  216. package/dist/bin/hook-chunks/{chunk-PQJ64L6U.mjs → chunk-MG2DNP4Z.mjs} +1 -1
  217. package/dist/bin/hook-chunks/chunk-NGB6JNSB.mjs +18 -0
  218. package/dist/bin/hook-chunks/{chunk-AEDB75AK.mjs → chunk-OALZUWC6.mjs} +1 -1
  219. package/dist/bin/hook-chunks/{chunk-IFIENAZU.mjs → chunk-PZMBZ6GE.mjs} +1 -1
  220. package/dist/bin/hook-chunks/{chunk-F3PNT2DQ.mjs → chunk-QIB6Y6AH.mjs} +2 -2
  221. package/dist/bin/hook-chunks/{chunk-ZXON2U5F.mjs → chunk-QMNZPNVY.mjs} +1 -1
  222. package/dist/bin/hook-chunks/{chunk-B2ZA5ZAO.mjs → chunk-R4YDE3GU.mjs} +1 -1
  223. package/dist/bin/hook-chunks/{chunk-UBWUQ64A.mjs → chunk-RFKRKUHB.mjs} +1 -1
  224. package/dist/bin/hook-chunks/{chunk-NMB6YSAH.mjs → chunk-RGOTJCZU.mjs} +1 -1
  225. package/dist/bin/hook-chunks/{chunk-ANSRNEEI.mjs → chunk-T2KVL6PZ.mjs} +1 -1
  226. package/dist/bin/hook-chunks/{chunk-HNZ24HIK.mjs → chunk-T7DRHVK3.mjs} +2 -2
  227. package/dist/bin/hook-chunks/{chunk-IHEOOJJT.mjs → chunk-TWFLW6OJ.mjs} +1 -1
  228. package/dist/bin/hook-chunks/{chunk-ONGVBXBD.mjs → chunk-UJIOGFNP.mjs} +1 -1
  229. package/dist/bin/hook-chunks/{chunk-NSTXHVTH.mjs → chunk-UK24P7PV.mjs} +2 -2
  230. package/dist/bin/hook-chunks/{chunk-63P5VOR6.mjs → chunk-ULNGKZB6.mjs} +4 -4
  231. package/dist/bin/hook-chunks/{chunk-UMJ5D5I6.mjs → chunk-UWHVPO6X.mjs} +2 -2
  232. package/dist/bin/hook-chunks/{chunk-A6LRNS6R.mjs → chunk-XC2BSGWF.mjs} +1 -1
  233. package/dist/bin/hook-chunks/{chunk-7PA4KPSR.mjs → chunk-ZPAY2NSF.mjs} +2 -2
  234. package/dist/bin/hook-chunks/{codex-skill-UZZCACMB.mjs → codex-skill-BFRU5FTP.mjs} +1 -1
  235. package/dist/bin/hook-chunks/{command-installer-FJ73C2ZW.mjs → command-installer-3XOZGKOQ.mjs} +1 -1
  236. package/dist/bin/hook-chunks/{config-manager-XDKOTIJM.mjs → config-manager-UPB7NEXF.mjs} +1 -1
  237. package/dist/bin/hook-chunks/{context7-service-NH4BMGSJ.mjs → context7-service-7VFXEQVN.mjs} +1 -1
  238. package/dist/bin/hook-chunks/{cwd-changed-STP3LH6Y.mjs → cwd-changed-USNJYUH7.mjs} +1 -1
  239. package/dist/bin/hook-chunks/{distill-63BHUJAC.mjs → distill-47YVL7IH.mjs} +1 -1
  240. package/dist/bin/hook-chunks/{enriched-recall-6F6LBYAB.mjs → enriched-recall-CVYI52NO.mjs} +1 -1
  241. package/dist/bin/hook-chunks/{format-VJ2YQ4XQ.mjs → format-DPIN45EG.mjs} +1 -1
  242. package/dist/bin/hook-chunks/{judgment-receipt-LSJCAYBT.mjs → judgment-receipt-G2DKQR7U.mjs} +1 -1
  243. package/dist/bin/hook-chunks/{land-cue-DEO2AZW4.mjs → land-cue-3JD2TXFP.mjs} +1 -1
  244. package/dist/bin/hook-chunks/{land-synthesis-GTMFIGDM.mjs → land-synthesis-5C4KGCTB.mjs} +1 -1
  245. package/dist/bin/hook-chunks/{legacy-crew-sweep-QPKU7ITU.mjs → legacy-crew-sweep-XQNXNZES.mjs} +2 -2
  246. package/dist/bin/hook-chunks/{memory-index-KCMXQGKX.mjs → memory-index-LL6SQJ2N.mjs} +1 -1
  247. package/dist/bin/hook-chunks/{notification-DX6ZHOUC.mjs → notification-ACQBRJG3.mjs} +1 -1
  248. package/dist/bin/hook-chunks/{pack-integrity-UMLIB5RQ.mjs → pack-integrity-DCXVRRJZ.mjs} +1 -1
  249. package/dist/bin/hook-chunks/{pack-manager-YXRK2TJ4.mjs → pack-manager-KYWKNYUY.mjs} +1 -1
  250. package/dist/bin/hook-chunks/{planning-JR7O5MYW.mjs → planning-KOU3XKWS.mjs} +2 -2
  251. package/dist/bin/hook-chunks/{post-edit-IPTVSRVG.mjs → post-edit-CK2MYQEN.mjs} +1 -1
  252. package/dist/bin/hook-chunks/{pre-bash-5WWTH36N.mjs → pre-bash-W5A5CTR3.mjs} +1 -1
  253. package/dist/bin/hook-chunks/{pre-commit-KZ5TNTPW.mjs → pre-commit-5Q24RM4S.mjs} +1 -1
  254. package/dist/bin/hook-chunks/{pre-edit-XHPYBXRU.mjs → pre-edit-YIJ4BCYL.mjs} +1 -1
  255. package/dist/bin/hook-chunks/{pre-package-U3HDW3SX.mjs → pre-package-O4RMVA4T.mjs} +1 -1
  256. package/dist/bin/hook-chunks/{pre-search-R5CRK66E.mjs → pre-search-WYOWC3D6.mjs} +1 -1
  257. package/dist/bin/hook-chunks/{prjct-md-IBQTJBK7.mjs → prjct-md-2UVHFYTJ.mjs} +1 -1
  258. package/dist/bin/hook-chunks/{project-agent-surfaces-TPZO73ZV.mjs → project-agent-surfaces-BKFYUMRV.mjs} +1 -1
  259. package/dist/bin/hook-chunks/{project-memory-YQLZX5RG.mjs → project-memory-OC5GTJPY.mjs} +1 -1
  260. package/dist/bin/hook-chunks/{project-style-evolution-NOFCIIZZ.mjs → project-style-evolution-2IFJCACQ.mjs} +1 -1
  261. package/dist/bin/hook-chunks/prompt-JIWMP563.mjs +26 -0
  262. package/dist/bin/hook-chunks/{purge-5W3K2MZL.mjs → purge-FQK3Z4QS.mjs} +1 -1
  263. package/dist/bin/hook-chunks/{retention-GWJ4AX7I.mjs → retention-2FETBJFG.mjs} +1 -1
  264. package/dist/bin/hook-chunks/{sdd-GWBRD4KI.mjs → sdd-V43TSJ2P.mjs} +1 -1
  265. package/dist/bin/hook-chunks/{session-continuity-VH645RGR.mjs → session-continuity-RO2ACICF.mjs} +1 -1
  266. package/dist/bin/hook-chunks/{session-start-4TYTI27B.mjs → session-start-FKKFMKQ5.mjs} +1 -1
  267. package/dist/bin/hook-chunks/{setup-VF4UHUBX.mjs → setup-YV2DKG5L.mjs} +2 -2
  268. package/dist/bin/hook-chunks/{shipping-2ULWBGRX.mjs → shipping-SCNFEXBY.mjs} +4 -4
  269. package/dist/bin/hook-chunks/{spec-context-inference-HVENYOIO.mjs → spec-context-inference-BD3ANTXA.mjs} +1 -1
  270. package/dist/bin/hook-chunks/{spec-service-4XGQQPGP.mjs → spec-service-OWYOAGXS.mjs} +2 -2
  271. package/dist/bin/hook-chunks/{spec-task-breakdown-JXF556UH.mjs → spec-task-breakdown-HOTLUFDM.mjs} +1 -1
  272. package/dist/bin/hook-chunks/{stop-NJDYIIXR.mjs → stop-MIXT7WXA.mjs} +3 -3
  273. package/dist/bin/hook-chunks/{subagent-start-2YMGD4SY.mjs → subagent-start-NO3TN65K.mjs} +1 -1
  274. package/dist/bin/hook-chunks/{subagent-stop-4TZJ2NSJ.mjs → subagent-stop-CKWIXX7W.mjs} +1 -1
  275. package/dist/bin/hook-chunks/{surface-attribution-UNK4J5W2.mjs → surface-attribution-BYESPLXM.mjs} +1 -1
  276. package/dist/bin/hook-chunks/{task-service-SPUES5DO.mjs → task-service-5ONSBKKP.mjs} +1 -1
  277. package/dist/bin/hook-chunks/{tdd-MYF7I5FS.mjs → tdd-SESB4IG3.mjs} +1 -1
  278. package/dist/bin/hook-chunks/{template-loader-4SYVR2UB.mjs → template-loader-KO67FVHO.mjs} +1 -1
  279. package/dist/bin/hook-chunks/{weak-model-mode-TYJJT6JJ.mjs → weak-model-mode-HPXBKXJT.mjs} +1 -1
  280. package/dist/bin/hook-chunks/{work-scope-A6XPENFE.mjs → work-scope-RNPGACPA.mjs} +1 -1
  281. package/dist/bin/prjct-core.mjs +3 -3
  282. package/dist/bin/prjct-hooks.mjs +1 -1
  283. package/dist/daemon/entry.mjs +591 -583
  284. package/dist/mcp/server.mjs +318 -312
  285. package/package.json +2 -1
  286. package/dist/bin/core-chunks/chunk-GDLAQV3Q.mjs +0 -14
  287. package/dist/bin/core-chunks/chunk-R7LLMJDP.mjs +0 -7
  288. package/dist/bin/core-chunks/chunk-UT425KVX.mjs +0 -10
  289. package/dist/bin/core-chunks/chunk-VILH3VYH.mjs +0 -103
  290. package/dist/bin/core-chunks/chunk-Y5SEUYET.mjs +0 -7
  291. package/dist/bin/core-chunks/doctor-heal-ZUZ2RHGY.mjs +0 -7
  292. package/dist/bin/core-chunks/package-DCGCOAGQ.mjs +0 -7
  293. package/dist/bin/core-chunks/prompt-SW5XDRMX.mjs +0 -23
  294. package/dist/bin/core-chunks/weak-frontier-demo-5C4FR3OA.mjs +0 -7
  295. package/dist/bin/hook-chunks/chunk-IWUF2LGO.mjs +0 -18
  296. package/dist/bin/hook-chunks/chunk-ZYCNW75E.mjs +0 -9
  297. package/dist/bin/hook-chunks/prompt-DJWONMTZ.mjs +0 -24
@@ -4,9 +4,9 @@ import { dirname as __pathDirname } from 'path';
4
4
  const require = __createRequire(import.meta.url);
5
5
  const __filename = __fileURLToPath(import.meta.url);
6
6
  const __dirname = __pathDirname(__filename);
7
- import{b as R}from"./chunk-LZC6NGB6.mjs";import{g as E,i as se}from"./chunk-DMO3ZFUG.mjs";import{a as f,c}from"./chunk-TIBYHZFA.mjs";import{a as V,b as te}from"./chunk-U24YKPYX.mjs";import{b as w,p as ie}from"./chunk-D62TAZG6.mjs";import{d as D,j as oe}from"./chunk-KPR5TWSN.mjs";import{a as o}from"./chunk-3TRXQAU4.mjs";var O="https://api.openai.com/v1",$="text-embedding-3-small";function C(e,r){return/openrouter\.ai/i.test(r)&&e&&!e.includes("/")?`openai/${e}`:e}o(C,"normalizeModelForBaseUrl");function de(e){let r=e.trim();if(/^sk-or-/i.test(r))return{baseUrl:"https://openrouter.ai/api/v1",provider:"OpenRouter"};if(!/^sk-ant-/i.test(r)&&!/^(gsk_|gpg_)/i.test(r)){if(/^sk-/i.test(r))return{baseUrl:"https://api.openai.com/v1",provider:"OpenAI"};if(/^pa-/i.test(r))return{baseUrl:"https://api.voyageai.com/v1",provider:"Voyage"}}}o(de,"detectBaseUrlFromKey");var P="embeddings.provider",H="embeddings.baseUrl",v="embeddings.model",k="embeddings.authHeader",F="embeddings.authScheme",T="embeddings.headers",B="embeddings.query";function ae(e){if(!(typeof e!="string"||!e.trim()))try{let r=JSON.parse(e);if(r&&typeof r=="object"&&!Array.isArray(r)){let n={};for(let[t,i]of Object.entries(r))n[t]=String(i);return Object.keys(n).length?n:void 0}}catch{}}o(ae,"parseHeaders");function _(){let e=f(P),r=f(v);if(e!=="openai-compatible"||!r)return null;let n=f(F),t=f(k),i=f(B),s=String(f(H)??O);return{provider:"openai-compatible",baseUrl:s,model:C(String(r),s),authHeader:t!=null?String(t):void 0,authScheme:n!=null?String(n):void 0,extraHeaders:ae(f(T)),query:i!=null?String(i):void 0}}o(_,"resolveGlobalEmbeddings");function ce(e){let r=_();if(c(P,"openai-compatible"),e.baseUrl?.trim()?c(H,e.baseUrl.trim()):r||c(H,O),e.model?.trim()?c(v,e.model.trim()):r||c(v,$),e.authHeader!==void 0&&c(k,e.authHeader.trim()||void 0),e.authScheme!==void 0&&c(F,e.authScheme),e.query!==void 0&&c(B,e.query.trim()||void 0),e.extraHeaders!==void 0){let i=Object.keys(e.extraHeaders).length>0;c(T,i?JSON.stringify(e.extraHeaders):void 0)}let t=_();return t.model!==f(v)&&c(v,t.model),t}o(ce,"setGlobalEmbeddings");function ue(){c(P,void 0),c(H,void 0),c(v,void 0),c(k,void 0),c(F,void 0),c(T,void 0),c(B,void 0)}o(ue,"clearGlobalEmbeddings");te();ie();import x from"node:fs";import Y from"node:path";var K="PRJCT_EMBEDDINGS_API_KEY",q="prjct-embeddings",I="prjct";function A(){return Y.join(V(),"config","embeddings.key")}o(A,"keyFilePath");var S={value:void 0};function N(){return process.platform==="darwin"}o(N,"isDarwin");async function j(){try{let{stdout:e}=await w("security",["find-generic-password","-a",I,"-s",q,"-w"]);return e.trim()||null}catch{return null}}o(j,"readKeychain");function z(){try{return x.readFileSync(A(),"utf-8").trim()||null}catch{return null}}o(z,"readFileKey");async function W(){if(S.value!==void 0)return S.value;let e=process.env[K]?.trim();if(e)return S.value=e,e;let r=(N()?await j():null)??z();return S.value=r,r}o(W,"getEmbeddingsKey");async function He(){return process.env[K]?.trim()?"env":N()&&await j()?"keychain":z()?"file":"none"}o(He,"getKeyLocation");async function Ne(e){let r=e.trim();if(S.value=r,N())try{return await w("security",["add-generic-password","-U","-a",I,"-s",q,"-w",r]),"keychain"}catch{}x.mkdirSync(Y.dirname(A()),{recursive:!0}),x.writeFileSync(A(),r,{mode:384});try{x.chmodSync(A(),384)}catch{}return"file"}o(Ne,"setEmbeddingsKey");async function Le(){if(S.value=null,N())try{await w("security",["delete-generic-password","-a",I,"-s",q])}catch{}try{x.rmSync(A())}catch{}}o(Le,"clearEmbeddingsKey");oe();se();function me(e){let r=e?.embeddings;return!r||!r.provider||!r.model?null:r.provider==="openai-compatible"?new L(r.baseUrl??"https://api.openai.com/v1",r.model,{authHeader:r.authHeader,authScheme:r.authScheme,extraHeaders:r.headers,query:r.query}):null}o(me,"resolveProvider");function le(e,r,n,t,i={}){let s=e.replace(/\/+$/,""),a=i.query?.trim().replace(/^\?/,""),m=`${s}/embeddings${a?`?${a}`:""}`,g=C(r,s),b={"content-type":"application/json",...i.extraHeaders??{}};if(t){let y=i.authHeader?.trim()||"authorization",l=i.authScheme??"Bearer";b[y]=l?`${l} ${t}`:t}return{url:m,init:{method:"POST",headers:b,body:JSON.stringify({model:g,input:n})}}}o(le,"buildEmbeddingsRequest");var L=class{constructor(r,n,t={}){this.baseUrl=r;this.model=n;this.auth=t}baseUrl;model;auth;static{o(this,"HttpEmbeddingProvider")}async embed(r){if(r.length===0)return[];let n=await W(),{url:t,init:i}=le(this.baseUrl,this.model,r,n,this.auth),s=await fetch(t,i);if(!s.ok)throw new Error(`embeddings endpoint ${s.status}: ${await s.text().catch(()=>"")}`);return((await s.json()).data??[]).map(m=>m.embedding)}},ge="local-subword-v1",J=256,fe=800;function be(e){return Array.from({length:e.length},(n,t)=>e.charCodeAt(t)).reduce((n,t)=>Math.imul(n^t,16777619),2166136261)>>>0}o(be,"fnv1a");function ye(e,r,n){let t=[];if(e.length<r)return t.push(e),t;for(let i of Array.from({length:n-r+1},(s,a)=>r+a))t.push(...Array.from({length:Math.max(0,e.length-i+1)},(s,a)=>e.slice(a,a+i)));return t}o(ye,"charNGrams");function Z(e){let r=new Float64Array(J),n=(e.toLowerCase().match(/[\p{L}\p{N}]+/gu)??[]).slice(0,fe);for(let i of n){let s=ye(`<${i}>`,3,5);s.push(i);for(let a of s){let m=be(a),g=m%J,b=m&65536?1:-1;r[g]+=b}}let t=Math.sqrt(r.reduce((i,s)=>i+s*s,0))||1;return Array.from(r,i=>i/t)}o(Z,"embedLocal");function Te(e){return Z(e)}o(Te,"embedLocalText");var G=class{static{o(this,"LocalSubwordEmbeddingProvider")}model=ge;isLocal=!0;async embed(r){return r.map(n=>Z(n))}};function X(e){let r=me(e);if(r)return r;let n=_();return n?new L(n.baseUrl,n.model,{authHeader:n.authHeader,authScheme:n.authScheme,extraHeaders:n.extraHeaders,query:n.query}):new G}o(X,"resolveActiveProvider");function he(e){return Buffer.from(new Float32Array(e).buffer)}o(he,"packVector");function pe(e){let r=Uint8Array.from(e);return new Float32Array(r.buffer,r.byteOffset,Math.floor(r.byteLength/4))}o(pe,"unpackVector");function Be(e,r){let n=M(e)*M(r);return n===0?0:ee(e,r)/n}o(Be,"cosineSimilarity");function M(e){return Math.sqrt(e.reduce((r,n)=>r+n*n,0))}o(M,"l2Norm");function ee(e,r){let n=Math.min(e.length,r.length);return e.reduce((t,i,s)=>s<n?t+i*r[s]:t,0)}o(ee,"dot");var Ee=2e3,ve=10,Q=new Map,Ke={isEnabled(e){return!0},store(e,r,n,t,i){E.run(e,`INSERT INTO memory_embeddings (memory_id, vector, model, dims, norm, created_at)
7
+ import{b as R}from"./chunk-B2HY22OD.mjs";import{g as E,i as se}from"./chunk-DMO3ZFUG.mjs";import{a as f,c}from"./chunk-TIBYHZFA.mjs";import{a as V,b as te}from"./chunk-U24YKPYX.mjs";import{b as w,p as ie}from"./chunk-D62TAZG6.mjs";import{d as D,j as oe}from"./chunk-KPR5TWSN.mjs";import{a as o}from"./chunk-3TRXQAU4.mjs";var O="https://api.openai.com/v1",$="text-embedding-3-small";function C(e,r){return/openrouter\.ai/i.test(r)&&e&&!e.includes("/")?`openai/${e}`:e}o(C,"normalizeModelForBaseUrl");function de(e){let r=e.trim();if(/^sk-or-/i.test(r))return{baseUrl:"https://openrouter.ai/api/v1",provider:"OpenRouter"};if(!/^sk-ant-/i.test(r)&&!/^(gsk_|gpg_)/i.test(r)){if(/^sk-/i.test(r))return{baseUrl:"https://api.openai.com/v1",provider:"OpenAI"};if(/^pa-/i.test(r))return{baseUrl:"https://api.voyageai.com/v1",provider:"Voyage"}}}o(de,"detectBaseUrlFromKey");var P="embeddings.provider",H="embeddings.baseUrl",v="embeddings.model",k="embeddings.authHeader",F="embeddings.authScheme",T="embeddings.headers",B="embeddings.query";function ae(e){if(!(typeof e!="string"||!e.trim()))try{let r=JSON.parse(e);if(r&&typeof r=="object"&&!Array.isArray(r)){let n={};for(let[t,i]of Object.entries(r))n[t]=String(i);return Object.keys(n).length?n:void 0}}catch{}}o(ae,"parseHeaders");function _(){let e=f(P),r=f(v);if(e!=="openai-compatible"||!r)return null;let n=f(F),t=f(k),i=f(B),s=String(f(H)??O);return{provider:"openai-compatible",baseUrl:s,model:C(String(r),s),authHeader:t!=null?String(t):void 0,authScheme:n!=null?String(n):void 0,extraHeaders:ae(f(T)),query:i!=null?String(i):void 0}}o(_,"resolveGlobalEmbeddings");function ce(e){let r=_();if(c(P,"openai-compatible"),e.baseUrl?.trim()?c(H,e.baseUrl.trim()):r||c(H,O),e.model?.trim()?c(v,e.model.trim()):r||c(v,$),e.authHeader!==void 0&&c(k,e.authHeader.trim()||void 0),e.authScheme!==void 0&&c(F,e.authScheme),e.query!==void 0&&c(B,e.query.trim()||void 0),e.extraHeaders!==void 0){let i=Object.keys(e.extraHeaders).length>0;c(T,i?JSON.stringify(e.extraHeaders):void 0)}let t=_();return t.model!==f(v)&&c(v,t.model),t}o(ce,"setGlobalEmbeddings");function ue(){c(P,void 0),c(H,void 0),c(v,void 0),c(k,void 0),c(F,void 0),c(T,void 0),c(B,void 0)}o(ue,"clearGlobalEmbeddings");te();ie();import x from"node:fs";import Y from"node:path";var K="PRJCT_EMBEDDINGS_API_KEY",q="prjct-embeddings",I="prjct";function A(){return Y.join(V(),"config","embeddings.key")}o(A,"keyFilePath");var S={value:void 0};function N(){return process.platform==="darwin"}o(N,"isDarwin");async function j(){try{let{stdout:e}=await w("security",["find-generic-password","-a",I,"-s",q,"-w"]);return e.trim()||null}catch{return null}}o(j,"readKeychain");function z(){try{return x.readFileSync(A(),"utf-8").trim()||null}catch{return null}}o(z,"readFileKey");async function W(){if(S.value!==void 0)return S.value;let e=process.env[K]?.trim();if(e)return S.value=e,e;let r=(N()?await j():null)??z();return S.value=r,r}o(W,"getEmbeddingsKey");async function He(){return process.env[K]?.trim()?"env":N()&&await j()?"keychain":z()?"file":"none"}o(He,"getKeyLocation");async function Ne(e){let r=e.trim();if(S.value=r,N())try{return await w("security",["add-generic-password","-U","-a",I,"-s",q,"-w",r]),"keychain"}catch{}x.mkdirSync(Y.dirname(A()),{recursive:!0}),x.writeFileSync(A(),r,{mode:384});try{x.chmodSync(A(),384)}catch{}return"file"}o(Ne,"setEmbeddingsKey");async function Le(){if(S.value=null,N())try{await w("security",["delete-generic-password","-a",I,"-s",q])}catch{}try{x.rmSync(A())}catch{}}o(Le,"clearEmbeddingsKey");oe();se();function me(e){let r=e?.embeddings;return!r||!r.provider||!r.model?null:r.provider==="openai-compatible"?new L(r.baseUrl??"https://api.openai.com/v1",r.model,{authHeader:r.authHeader,authScheme:r.authScheme,extraHeaders:r.headers,query:r.query}):null}o(me,"resolveProvider");function le(e,r,n,t,i={}){let s=e.replace(/\/+$/,""),a=i.query?.trim().replace(/^\?/,""),m=`${s}/embeddings${a?`?${a}`:""}`,g=C(r,s),b={"content-type":"application/json",...i.extraHeaders??{}};if(t){let y=i.authHeader?.trim()||"authorization",l=i.authScheme??"Bearer";b[y]=l?`${l} ${t}`:t}return{url:m,init:{method:"POST",headers:b,body:JSON.stringify({model:g,input:n})}}}o(le,"buildEmbeddingsRequest");var L=class{constructor(r,n,t={}){this.baseUrl=r;this.model=n;this.auth=t}baseUrl;model;auth;static{o(this,"HttpEmbeddingProvider")}async embed(r){if(r.length===0)return[];let n=await W(),{url:t,init:i}=le(this.baseUrl,this.model,r,n,this.auth),s=await fetch(t,i);if(!s.ok)throw new Error(`embeddings endpoint ${s.status}: ${await s.text().catch(()=>"")}`);return((await s.json()).data??[]).map(m=>m.embedding)}},ge="local-subword-v1",J=256,fe=800;function be(e){return Array.from({length:e.length},(n,t)=>e.charCodeAt(t)).reduce((n,t)=>Math.imul(n^t,16777619),2166136261)>>>0}o(be,"fnv1a");function ye(e,r,n){let t=[];if(e.length<r)return t.push(e),t;for(let i of Array.from({length:n-r+1},(s,a)=>r+a))t.push(...Array.from({length:Math.max(0,e.length-i+1)},(s,a)=>e.slice(a,a+i)));return t}o(ye,"charNGrams");function Z(e){let r=new Float64Array(J),n=(e.toLowerCase().match(/[\p{L}\p{N}]+/gu)??[]).slice(0,fe);for(let i of n){let s=ye(`<${i}>`,3,5);s.push(i);for(let a of s){let m=be(a),g=m%J,b=m&65536?1:-1;r[g]+=b}}let t=Math.sqrt(r.reduce((i,s)=>i+s*s,0))||1;return Array.from(r,i=>i/t)}o(Z,"embedLocal");function Te(e){return Z(e)}o(Te,"embedLocalText");var G=class{static{o(this,"LocalSubwordEmbeddingProvider")}model=ge;isLocal=!0;async embed(r){return r.map(n=>Z(n))}};function X(e){let r=me(e);if(r)return r;let n=_();return n?new L(n.baseUrl,n.model,{authHeader:n.authHeader,authScheme:n.authScheme,extraHeaders:n.extraHeaders,query:n.query}):new G}o(X,"resolveActiveProvider");function he(e){return Buffer.from(new Float32Array(e).buffer)}o(he,"packVector");function pe(e){let r=Uint8Array.from(e);return new Float32Array(r.buffer,r.byteOffset,Math.floor(r.byteLength/4))}o(pe,"unpackVector");function Be(e,r){let n=M(e)*M(r);return n===0?0:ee(e,r)/n}o(Be,"cosineSimilarity");function M(e){return Math.sqrt(e.reduce((r,n)=>r+n*n,0))}o(M,"l2Norm");function ee(e,r){let n=Math.min(e.length,r.length);return e.reduce((t,i,s)=>s<n?t+i*r[s]:t,0)}o(ee,"dot");var Ee=2e3,ve=10,Q=new Map,Ke={isEnabled(e){return!0},store(e,r,n,t,i){E.run(e,`INSERT INTO memory_embeddings (memory_id, vector, model, dims, norm, created_at)
8
8
  VALUES (?, ?, ?, ?, ?, ?)
9
9
  ON CONFLICT(memory_id) DO UPDATE SET
10
10
  vector = excluded.vector, model = excluded.model,
11
- dims = excluded.dims, norm = excluded.norm, created_at = excluded.created_at`,r,he(n),t,n.length,M(n),i)},embeddedIds(e,r){try{let n=E.query(e,"SELECT memory_id FROM memory_embeddings WHERE model = ?",r);return new Set(n.map(t=>t.memory_id))}catch{return new Set}},async backfill(e,r,n,t={}){let i=t.provider??X(r),s=t.batchSize??64,a=await(async()=>{try{let{evaluateRetention:d}=await import("./retention-S22T3SPT.mjs");return d(e,Date.now()).byId}catch{return null}})(),m=R.unembeddedEntriesForIndex(e,i.model).filter(d=>{if(!D(d)||d.content.trim().length===0)return!1;let u=a?.get(d.id);return!(u&&u.verdict!=="active")});if(this.shouldPruneThisRun(e)){let u=R.allEntriesForIndex(e).filter(p=>{if(!D(p))return!0;let h=a?.get(p.id);return h!=null&&h.verdict!=="active"}).map(p=>p.id);this.pruneNonModelVectors(e,u)}let g=this.countByModel(e,i.model),b=Array.from({length:Math.ceil(m.length/s)},(d,u)=>m.slice(u*s,(u+1)*s)),y=[];for(let d of b)try{let u=await i.embed(d.map(h=>h.content)),p=d.reduce((h,re,ne)=>{let U=u[ne];return!U||U.length===0?h:(this.store(e,re.id,U,i.model,n),h+1)},0);y.push(p)}catch{}return{embedded:y.reduce((d,u)=>d+u,0),skipped:g,total:g+m.length}},countByModel(e,r){try{return E.get(e,"SELECT COUNT(*) AS n FROM memory_embeddings WHERE model = ?",r)?.n??0}catch{return 0}},shouldPruneThisRun(e){let r=Q.get(e)??0;return Q.set(e,(r+1)%ve),r===0},pruneNonModelVectors(e,r){if(r.length!==0)try{let n=r.map(()=>"?").join(",");E.run(e,`DELETE FROM memory_embeddings WHERE memory_id IN (${n})`,...r)}catch{}},async semanticSearch(e,r,n,t=10,i){let s=i??X(n);if(!r.trim())return[];let a=await(async()=>{try{return(await s.embed([r]))[0]}catch{return}})();if(!a||a.length===0)return[];let m=(()=>{try{return E.query(e,`SELECT memory_id, vector, norm FROM memory_embeddings
11
+ dims = excluded.dims, norm = excluded.norm, created_at = excluded.created_at`,r,he(n),t,n.length,M(n),i)},embeddedIds(e,r){try{let n=E.query(e,"SELECT memory_id FROM memory_embeddings WHERE model = ?",r);return new Set(n.map(t=>t.memory_id))}catch{return new Set}},async backfill(e,r,n,t={}){let i=t.provider??X(r),s=t.batchSize??64,a=await(async()=>{try{let{evaluateRetention:d}=await import("./retention-QSXWKE4H.mjs");return d(e,Date.now()).byId}catch{return null}})(),m=R.unembeddedEntriesForIndex(e,i.model).filter(d=>{if(!D(d)||d.content.trim().length===0)return!1;let u=a?.get(d.id);return!(u&&u.verdict!=="active")});if(this.shouldPruneThisRun(e)){let u=R.allEntriesForIndex(e).filter(p=>{if(!D(p))return!0;let h=a?.get(p.id);return h!=null&&h.verdict!=="active"}).map(p=>p.id);this.pruneNonModelVectors(e,u)}let g=this.countByModel(e,i.model),b=Array.from({length:Math.ceil(m.length/s)},(d,u)=>m.slice(u*s,(u+1)*s)),y=[];for(let d of b)try{let u=await i.embed(d.map(h=>h.content)),p=d.reduce((h,re,ne)=>{let U=u[ne];return!U||U.length===0?h:(this.store(e,re.id,U,i.model,n),h+1)},0);y.push(p)}catch{}return{embedded:y.reduce((d,u)=>d+u,0),skipped:g,total:g+m.length}},countByModel(e,r){try{return E.get(e,"SELECT COUNT(*) AS n FROM memory_embeddings WHERE model = ?",r)?.n??0}catch{return 0}},shouldPruneThisRun(e){let r=Q.get(e)??0;return Q.set(e,(r+1)%ve),r===0},pruneNonModelVectors(e,r){if(r.length!==0)try{let n=r.map(()=>"?").join(",");E.run(e,`DELETE FROM memory_embeddings WHERE memory_id IN (${n})`,...r)}catch{}},async semanticSearch(e,r,n,t=10,i){let s=i??X(n);if(!r.trim())return[];let a=await(async()=>{try{return(await s.embed([r]))[0]}catch{return}})();if(!a||a.length===0)return[];let m=(()=>{try{return E.query(e,`SELECT memory_id, vector, norm FROM memory_embeddings
12
12
  WHERE model = ? ORDER BY rowid DESC LIMIT ?`,s.model,Ee)}catch{return null}})();if(!m)return[];let g=M(a);if(g===0)return[];let b=m.map(l=>{let d=pe(l.vector),u=g*(l.norm??M(d));return{id:l.memory_id,score:u===0?0:ee(a,d)/u}}).sort((l,d)=>d.score-l.score).slice(0,t),y=[];for(let l of b){let d=R.getById(e,l.id);d&&y.push(d)}return y}};export{$ as a,de as b,_ as c,ce as d,ue as e,He as f,Ne as g,Le as h,Te as i,X as j,Be as k,ee as l,Ke as m};
@@ -4,4 +4,4 @@ import { dirname as __pathDirname } from 'path';
4
4
  const require = __createRequire(import.meta.url);
5
5
  const __filename = __fileURLToPath(import.meta.url);
6
6
  const __dirname = __pathDirname(__filename);
7
- import{b as k}from"./chunk-CNWEQUB7.mjs";import{b as P}from"./chunk-AJXELVNH.mjs";import{b as O,c as U}from"./chunk-F2FKQUYE.mjs";import{a as Y}from"./chunk-BTCCUMKI.mjs";import{c as A,f as T,g as C}from"./chunk-KKIJAEYU.mjs";import{a as $,b as x}from"./chunk-LZC6NGB6.mjs";import{b as D}from"./chunk-B7AQHL7B.mjs";import{a as I,h as L}from"./chunk-UNNY2IWZ.mjs";import{a as F,b as G,g as S,i as z}from"./chunk-DMO3ZFUG.mjs";import{d as M,i as w,j as H}from"./chunk-KPR5TWSN.mjs";import{a as l}from"./chunk-3TRXQAU4.mjs";G();H();z();var X=new Set(["decision","gotcha","learning","feedback","fact","shipped","spec"]),J=30,q=50,K=20,Q=45,Z=25,j=15,ee=180,V=90,te=25,ne=.12,re=40,se=40,oe=30,ie=20,ce=35,ae=.12,de=864e5,ue=100,le=50,pe=25,me=15,fe=/\b[\w.-]+(?:\/[\w.-]+)+\.(?:ts|tsx|js|jsx|mjs|cjs|json|md|sh|toml|yml|yaml)\b/g;function he(e,t){let s=x.allEntriesForIndex(e),r=new Set;for(let a of s)for(let p of O(a.tags))r.add(p);let n=(()=>{try{let a=P(e);return a?new Set(Object.keys(a.documents)):null}catch{return null}})(),i=A(s),c=T(i);return{entries:s,usefulness:U.decayedScores(e,t),supersededIds:w(s),correctedIds:r,indexedPaths:n,nowMs:t,refIndex:c}}l(he,"collectRetentionInputs");function ge(e){let t=new Map,s=new Set,r=[...e].sort((n,i)=>i.rememberedAt.localeCompare(n.rememberedAt));for(let n of r){let i=F(n.content);t.has(i)?s.add(n.id):t.set(i,n)}return s}l(ge,"collectDuplicateIds");function xe(e,t){let s=e.content.match(fe);return!s||s.length===0?!1:!s.some(r=>t.has(r))}l(xe,"isUngrounded");function Ee(e,t,s){let r=[],n=C(e.content,t.refIndex,e.id),i=s.has(e.id);i&&!n.exactDup&&r.push("duplicate of newer entry"),r.push(`excess ${n.excess.toFixed(2)} (sim ${n.maxSim.toFixed(2)})`);let c=n.exactDup||n.nearDup||n.excess<ae;c&&r.push(n.exactDup?`exact dup of ${n.nearestId}`:n.nearDup?`near-dup of ${n.nearestId}`:"low excess vs reference");let a=t.usefulness.get(e.id)??0,p=Math.min(Z,Math.max(0,a*8));a>0&&r.push(`used (+${Math.round(p)})`);let u=Math.max(0,(t.nowMs-Date.parse(e.rememberedAt))/de),h=Number.isFinite(u)?Math.max(0,j*(1-u/ee)):0,o=a<=0&&Number.isFinite(u)&&u>V?Math.min(te,(u-V)*ne):0;o>0&&r.push(`idle ${Math.round(u)}d`);let f=t.supersededIds.has(e.id);f&&r.push("superseded");let m=t.correctedIds.has(e.id);m&&r.push("corrected");let b=!M(e)||k(e);b&&r.push("generated noise");let E=!!(t.indexedPaths&&xe(e,t.indexedPaths));E&&r.push("cites files missing at HEAD");let g=Math.max(0,Math.min(100,n.excess*Q+p+h-(c?ce:0)-o-(f?re:0)-(m?se:0)-(b?oe:0)-(E?ie:0)-(i?20:0))),R=g>=q?"active":g>=K?"archive":"delete",_=i||n.exactDup||n.nearDup||f,y=R!=="active"&&u<J&&!_?"active":R;y!==R&&r.push("grace period");let d=y==="delete"&&X.has(e.type)?"archive":y;return d!==y&&r.push("protected type"),{id:e.id,type:e.type,verdict:d,score:Math.round(g),reasons:r,excess:n.excess,maxSim:n.maxSim,nearestId:n.nearestId}}l(Ee,"scoreEntry");function ye(e,t){let s=he(e,t),r=ge(s.entries),n={evaluated:s.entries.length,active:0,archive:0,delete:0,referenceSize:s.refIndex.entries.length,flagged:[],byId:new Map};for(let i of s.entries){let c=Ee(i,s,r);n[c.verdict]++,n.byId.set(c.id,c),c.verdict!=="active"&&n.flagged.push(c)}return n.flagged.sort((i,c)=>i.score-c.score),n}l(ye,"evaluateRetention");var Re=6e4,W=new Map;function B(e,t){let s=Math.floor(t/Re),r=(()=>{try{return $(e)}catch{return null}})();if(r!==null){let i=W.get(e);if(i&&i.bucket===s&&i.stamp===r)return i.report}let n=ye(e,t);return r!==null&&W.set(e,{bucket:s,stamp:r,report:n}),n}l(B,"evaluateRetentionShared");function He(e,t){return!(!M(e)||e.content.trim().length===0||t&&t.verdict!=="active"||t&&t.excess!==void 0&&t.excess<.05)}l(He,"shouldEmbedEntry");function v(e,t){if(t.startsWith("ship_"))return ve(e,t);if(x.forget(e,t))return!0;try{return(S.run(e,"UPDATE memory_entries SET deleted_at = ? WHERE id = ? AND deleted_at IS NULL",Date.now(),t).changes??0)>0}catch{return!1}}l(v,"forgetEntry");function N(e){return e.startsWith("mem_")||e.startsWith("ship_")||/^\d+$/.test(e)}l(N,"isRetentionRemovableId");function ve(e,t){let s=t.startsWith("ship_")?t.slice(5):t;if(!s)return!1;try{let r=S.get(e,"SELECT * FROM shipped_features WHERE id = ?",s);if(!r)return!1;try{D.archive(e,{entityType:"shipped",entityId:s,entityData:r,summary:`retention archive shipped [${r.name}]`,reason:"retention-archive"})}catch{}return(S.run(e,"DELETE FROM shipped_features WHERE id = ?",s).changes??0)>0}catch{return!1}}l(ve,"forgetShippedFeature");function be(e,t={}){let s=t.dryRun===!0,r=t.nowMs??Date.now(),n=t.maxArchive??ue,i=t.maxDelete??le,c=B(e,r),a=c.flagged.filter(o=>o.verdict==="archive"&&N(o.id)),p=c.flagged.filter(o=>o.verdict==="delete"&&N(o.id)),u=c.flagged.filter(o=>(o.verdict==="archive"||o.verdict==="delete")&&!N(o.id)).length,h=s?{archived:0,deleted:0,skipped:u}:(()=>{let o=a.slice(0,n),f=o.map(d=>{if(!d.id.startsWith("ship_"))try{D.archive(e,{entityType:"memory_entry",entityId:d.id,entityData:{id:d.id,type:d.type,score:d.score,excess:d.excess,reasons:d.reasons,verdict:d.verdict},summary:`retention archive [${d.type}] excess=${d.excess?.toFixed(2)??"?"} score=${d.score}`,reason:"retention-archive"})}catch{}return v(e,d.id)}),m=f.filter(Boolean).length,b=Math.max(0,a.length-o.length)+f.filter(d=>!d).length,E=p.slice(0,i),g=E.filter(d=>!X.has(d.type)).map(d=>d.id),R=E.length-g.length,_=g.length>0?Y(e,g):0,y=Math.max(0,p.length-E.length)+R+g.length-_;return{archived:m,deleted:_,skipped:u+b+y}})();return{evaluated:c.evaluated,active:c.active,wouldArchive:a.length,wouldDelete:p.length,archived:h.archived,deleted:h.deleted,skipped:h.skipped,dryRun:s,samples:c.flagged.slice(0,10),referenceSize:c.referenceSize}}l(be,"applyRetention");function Ge(e){return be(e,{maxArchive:pe,maxDelete:me})}l(Ge,"applyRetentionIncremental");function ze(e,t={}){let s=t.max??50,r=t.types??["inbox","context","idea","todo","question","gotcha","spec"],n=[],i=[];try{let c=x.allEntriesForIndex(e);for(let a of c){if(n.length>=s)break;if(!r.includes(a.type))continue;let p=I(a.content,a.type),u=L(a.content,a.type);(p.junk||u.action==="refuse"||a.type==="gotcha"&&u.action==="demote")&&v(e,a.id)&&(n.push(a),i.length<8&&i.push(`${a.id}:${p.junk?p.reason:u.reasonCode}`))}}catch{return{forgotten:0,samples:[]}}return{forgotten:n.length,samples:i}}l(ze,"forgetJunkCaptures");function Je(e,t=Date.now()){let r=x.allEntriesForIndex(e).filter(o=>o.type==="inbox");if(r.length===0)return{merged:0,archived:0,junkForgotten:0};let n=r.filter(o=>I(o.content,o.type).junk&&v(e,o.id)).length,i=x.allEntriesForIndex(e).filter(o=>o.type==="inbox");if(i.length===0)return{merged:0,archived:0,junkForgotten:n};let c=A(x.allEntriesForIndex(e)),a=T(c),p=B(e,t),u=[],h=[];for(let o of i){let f=C(o.content,a);if(f.exactDup||f.nearDup||f.excess<.15){v(e,o.id)&&u.push(o.id);continue}let m=p.byId.get(o.id);if(m&&m.verdict!=="active"){try{D.archive(e,{entityType:"memory_entry",entityId:o.id,entityData:{id:o.id,type:"inbox",score:m.score,excess:m.excess,reasons:m.reasons},summary:`inbox triage excess=${m.excess?.toFixed(2)??"?"}`,reason:"retention-inbox"})}catch{}v(e,o.id)&&h.push(o.id)}}return{merged:u.length,archived:h.length,junkForgotten:n}}l(Je,"triageInbox");export{X as a,he as b,ge as c,Ee as d,ye as e,B as f,He as g,N as h,ve as i,be as j,Ge as k,ze as l,Je as m};
7
+ import{b as k}from"./chunk-HA7Y76GF.mjs";import{b as P}from"./chunk-AJXELVNH.mjs";import{b as O,c as U}from"./chunk-F2FKQUYE.mjs";import{a as Y}from"./chunk-L3DJN3XD.mjs";import{c as A,f as T,g as C}from"./chunk-OXKGN3HG.mjs";import{a as $,b as x}from"./chunk-B2HY22OD.mjs";import{b as D}from"./chunk-B7AQHL7B.mjs";import{a as I,h as L}from"./chunk-UNNY2IWZ.mjs";import{a as F,b as G,g as S,i as z}from"./chunk-DMO3ZFUG.mjs";import{d as M,i as w,j as H}from"./chunk-KPR5TWSN.mjs";import{a as l}from"./chunk-3TRXQAU4.mjs";G();H();z();var X=new Set(["decision","gotcha","learning","feedback","fact","shipped","spec"]),J=30,q=50,K=20,Q=45,Z=25,j=15,ee=180,V=90,te=25,ne=.12,re=40,se=40,oe=30,ie=20,ce=35,ae=.12,de=864e5,ue=100,le=50,pe=25,me=15,fe=/\b[\w.-]+(?:\/[\w.-]+)+\.(?:ts|tsx|js|jsx|mjs|cjs|json|md|sh|toml|yml|yaml)\b/g;function he(e,t){let s=x.allEntriesForIndex(e),r=new Set;for(let a of s)for(let p of O(a.tags))r.add(p);let n=(()=>{try{let a=P(e);return a?new Set(Object.keys(a.documents)):null}catch{return null}})(),i=A(s),c=T(i);return{entries:s,usefulness:U.decayedScores(e,t),supersededIds:w(s),correctedIds:r,indexedPaths:n,nowMs:t,refIndex:c}}l(he,"collectRetentionInputs");function ge(e){let t=new Map,s=new Set,r=[...e].sort((n,i)=>i.rememberedAt.localeCompare(n.rememberedAt));for(let n of r){let i=F(n.content);t.has(i)?s.add(n.id):t.set(i,n)}return s}l(ge,"collectDuplicateIds");function xe(e,t){let s=e.content.match(fe);return!s||s.length===0?!1:!s.some(r=>t.has(r))}l(xe,"isUngrounded");function Ee(e,t,s){let r=[],n=C(e.content,t.refIndex,e.id),i=s.has(e.id);i&&!n.exactDup&&r.push("duplicate of newer entry"),r.push(`excess ${n.excess.toFixed(2)} (sim ${n.maxSim.toFixed(2)})`);let c=n.exactDup||n.nearDup||n.excess<ae;c&&r.push(n.exactDup?`exact dup of ${n.nearestId}`:n.nearDup?`near-dup of ${n.nearestId}`:"low excess vs reference");let a=t.usefulness.get(e.id)??0,p=Math.min(Z,Math.max(0,a*8));a>0&&r.push(`used (+${Math.round(p)})`);let u=Math.max(0,(t.nowMs-Date.parse(e.rememberedAt))/de),h=Number.isFinite(u)?Math.max(0,j*(1-u/ee)):0,o=a<=0&&Number.isFinite(u)&&u>V?Math.min(te,(u-V)*ne):0;o>0&&r.push(`idle ${Math.round(u)}d`);let f=t.supersededIds.has(e.id);f&&r.push("superseded");let m=t.correctedIds.has(e.id);m&&r.push("corrected");let b=!M(e)||k(e);b&&r.push("generated noise");let E=!!(t.indexedPaths&&xe(e,t.indexedPaths));E&&r.push("cites files missing at HEAD");let g=Math.max(0,Math.min(100,n.excess*Q+p+h-(c?ce:0)-o-(f?re:0)-(m?se:0)-(b?oe:0)-(E?ie:0)-(i?20:0))),R=g>=q?"active":g>=K?"archive":"delete",_=i||n.exactDup||n.nearDup||f,y=R!=="active"&&u<J&&!_?"active":R;y!==R&&r.push("grace period");let d=y==="delete"&&X.has(e.type)?"archive":y;return d!==y&&r.push("protected type"),{id:e.id,type:e.type,verdict:d,score:Math.round(g),reasons:r,excess:n.excess,maxSim:n.maxSim,nearestId:n.nearestId}}l(Ee,"scoreEntry");function ye(e,t){let s=he(e,t),r=ge(s.entries),n={evaluated:s.entries.length,active:0,archive:0,delete:0,referenceSize:s.refIndex.entries.length,flagged:[],byId:new Map};for(let i of s.entries){let c=Ee(i,s,r);n[c.verdict]++,n.byId.set(c.id,c),c.verdict!=="active"&&n.flagged.push(c)}return n.flagged.sort((i,c)=>i.score-c.score),n}l(ye,"evaluateRetention");var Re=6e4,W=new Map;function B(e,t){let s=Math.floor(t/Re),r=(()=>{try{return $(e)}catch{return null}})();if(r!==null){let i=W.get(e);if(i&&i.bucket===s&&i.stamp===r)return i.report}let n=ye(e,t);return r!==null&&W.set(e,{bucket:s,stamp:r,report:n}),n}l(B,"evaluateRetentionShared");function He(e,t){return!(!M(e)||e.content.trim().length===0||t&&t.verdict!=="active"||t&&t.excess!==void 0&&t.excess<.05)}l(He,"shouldEmbedEntry");function v(e,t){if(t.startsWith("ship_"))return ve(e,t);if(x.forget(e,t))return!0;try{return(S.run(e,"UPDATE memory_entries SET deleted_at = ? WHERE id = ? AND deleted_at IS NULL",Date.now(),t).changes??0)>0}catch{return!1}}l(v,"forgetEntry");function N(e){return e.startsWith("mem_")||e.startsWith("ship_")||/^\d+$/.test(e)}l(N,"isRetentionRemovableId");function ve(e,t){let s=t.startsWith("ship_")?t.slice(5):t;if(!s)return!1;try{let r=S.get(e,"SELECT * FROM shipped_features WHERE id = ?",s);if(!r)return!1;try{D.archive(e,{entityType:"shipped",entityId:s,entityData:r,summary:`retention archive shipped [${r.name}]`,reason:"retention-archive"})}catch{}return(S.run(e,"DELETE FROM shipped_features WHERE id = ?",s).changes??0)>0}catch{return!1}}l(ve,"forgetShippedFeature");function be(e,t={}){let s=t.dryRun===!0,r=t.nowMs??Date.now(),n=t.maxArchive??ue,i=t.maxDelete??le,c=B(e,r),a=c.flagged.filter(o=>o.verdict==="archive"&&N(o.id)),p=c.flagged.filter(o=>o.verdict==="delete"&&N(o.id)),u=c.flagged.filter(o=>(o.verdict==="archive"||o.verdict==="delete")&&!N(o.id)).length,h=s?{archived:0,deleted:0,skipped:u}:(()=>{let o=a.slice(0,n),f=o.map(d=>{if(!d.id.startsWith("ship_"))try{D.archive(e,{entityType:"memory_entry",entityId:d.id,entityData:{id:d.id,type:d.type,score:d.score,excess:d.excess,reasons:d.reasons,verdict:d.verdict},summary:`retention archive [${d.type}] excess=${d.excess?.toFixed(2)??"?"} score=${d.score}`,reason:"retention-archive"})}catch{}return v(e,d.id)}),m=f.filter(Boolean).length,b=Math.max(0,a.length-o.length)+f.filter(d=>!d).length,E=p.slice(0,i),g=E.filter(d=>!X.has(d.type)).map(d=>d.id),R=E.length-g.length,_=g.length>0?Y(e,g):0,y=Math.max(0,p.length-E.length)+R+g.length-_;return{archived:m,deleted:_,skipped:u+b+y}})();return{evaluated:c.evaluated,active:c.active,wouldArchive:a.length,wouldDelete:p.length,archived:h.archived,deleted:h.deleted,skipped:h.skipped,dryRun:s,samples:c.flagged.slice(0,10),referenceSize:c.referenceSize}}l(be,"applyRetention");function Ge(e){return be(e,{maxArchive:pe,maxDelete:me})}l(Ge,"applyRetentionIncremental");function ze(e,t={}){let s=t.max??50,r=t.types??["inbox","context","idea","todo","question","gotcha","spec"],n=[],i=[];try{let c=x.allEntriesForIndex(e);for(let a of c){if(n.length>=s)break;if(!r.includes(a.type))continue;let p=I(a.content,a.type),u=L(a.content,a.type);(p.junk||u.action==="refuse"||a.type==="gotcha"&&u.action==="demote")&&v(e,a.id)&&(n.push(a),i.length<8&&i.push(`${a.id}:${p.junk?p.reason:u.reasonCode}`))}}catch{return{forgotten:0,samples:[]}}return{forgotten:n.length,samples:i}}l(ze,"forgetJunkCaptures");function Je(e,t=Date.now()){let r=x.allEntriesForIndex(e).filter(o=>o.type==="inbox");if(r.length===0)return{merged:0,archived:0,junkForgotten:0};let n=r.filter(o=>I(o.content,o.type).junk&&v(e,o.id)).length,i=x.allEntriesForIndex(e).filter(o=>o.type==="inbox");if(i.length===0)return{merged:0,archived:0,junkForgotten:n};let c=A(x.allEntriesForIndex(e)),a=T(c),p=B(e,t),u=[],h=[];for(let o of i){let f=C(o.content,a);if(f.exactDup||f.nearDup||f.excess<.15){v(e,o.id)&&u.push(o.id);continue}let m=p.byId.get(o.id);if(m&&m.verdict!=="active"){try{D.archive(e,{entityType:"memory_entry",entityId:o.id,entityData:{id:o.id,type:"inbox",score:m.score,excess:m.excess,reasons:m.reasons},summary:`inbox triage excess=${m.excess?.toFixed(2)??"?"}`,reason:"retention-inbox"})}catch{}v(e,o.id)&&h.push(o.id)}}return{merged:u.length,archived:h.length,junkForgotten:n}}l(Je,"triageInbox");export{X as a,he as b,ge as c,Ee as d,ye as e,B as f,He as g,N as h,ve as i,be as j,Ge as k,ze as l,Je as m};
@@ -4,6 +4,6 @@ import { dirname as __pathDirname } from 'path';
4
4
  const require = __createRequire(import.meta.url);
5
5
  const __filename = __fileURLToPath(import.meta.url);
6
6
  const __dirname = __pathDirname(__filename);
7
- import{a as f}from"./chunk-MCY7OXED.mjs";import{i as a}from"./chunk-YQ6HM3YO.mjs";import{i as u}from"./chunk-6AFXUX2M.mjs";import{b as m}from"./chunk-LZC6NGB6.mjs";import{b as l}from"./chunk-3USVY66O.mjs";import{a as i}from"./chunk-3TRXQAU4.mjs";import{execSync as d}from"node:child_process";var h=1200,y=3;function C(t){try{return d("git diff --cached --name-only",{cwd:t,encoding:"utf-8",stdio:["pipe","pipe","pipe"]}).split(`
7
+ import{a as f}from"./chunk-MCY7OXED.mjs";import{i as a}from"./chunk-YQ6HM3YO.mjs";import{j as u}from"./chunk-BUD3R6LF.mjs";import{b as m}from"./chunk-B2HY22OD.mjs";import{b as l}from"./chunk-XSZOHNL4.mjs";import{a as i}from"./chunk-3TRXQAU4.mjs";import{execSync as d}from"node:child_process";var h=1200,y=3;function C(t){try{return d("git diff --cached --name-only",{cwd:t,encoding:"utf-8",stdio:["pipe","pipe","pipe"]}).split(`
8
8
  `).map(o=>o.trim()).filter(Boolean)}catch{return[]}}i(C,"stagedFiles");function b(t){let o=new Set;for(let r of t){let n=r.split("/").filter(Boolean);for(let s of n){let e=s.replace(/\.[^.]+$/,"").toLowerCase();e.length>=3&&o.add(e)}}return[...o]}i(b,"pathFragments");function k(t,o){let r=t.content.toLowerCase();if(o.some(n=>r.includes(n)))return!0;for(let n of Object.values(t.tags)){let s=n.toLowerCase();if(o.some(e=>s.includes(e)))return!0}return!1}i(k,"mentionsFragment");async function I(t){let o=await l.readConfig(t);if(!o?.projectId)return null;let r=C(t);if(r.length===0)return null;let n=b(r);if(n.length===0)return null;let s=(()=>{try{return m.recall(o.projectId,{types:["anti-pattern","gotcha"],limit:50})}catch{return null}})();if(!s)return null;let e=s.filter(g=>k(g,n)).slice(0,y);if(e.length===0)return null;let c=["# prjct: heads-up for this commit",""];c.push(`${e.length} anti-pattern/gotcha entr${e.length===1?"y":"ies"} match the staged files.`),c.push(""),c.push(u(e)),c.push(""),c.push("> Nudge, not block. Proceed if you think it still applies.");let p=c.join(`
9
9
  `);return a(p,h)}i(I,"buildPreCommitContext");function _(t=process.cwd(),o){return f({event:"PreToolUse",projectPath:t,build:i(async(r,n)=>w(r)?I(n):null,"build")},o)}i(_,"runPreCommitHook");function w(t){return/\bgit\s+commit\b/.test(t.tool_input?.command??"")}i(w,"isCommitInput");export{I as a,_ as b,w as c};
@@ -4,4 +4,4 @@ import { dirname as __pathDirname } from 'path';
4
4
  const require = __createRequire(import.meta.url);
5
5
  const __filename = __fileURLToPath(import.meta.url);
6
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};
7
+ import{h as a,i as b,j as c,k as d,l as e,m as f}from"./chunk-OGM34Z6W.mjs";import"./chunk-6RT2P22O.mjs";import"./chunk-D62TAZG6.mjs";import"./chunk-OE27RFLJ.mjs";import"./chunk-FATYLG3L.mjs";import"./chunk-2EEMQV7N.mjs";import"./chunk-KPR5TWSN.mjs";import"./chunk-623SNKDH.mjs";import"./chunk-XWLTEAGN.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};
@@ -4,7 +4,7 @@ import { dirname as __pathDirname } from 'path';
4
4
  const require = __createRequire(import.meta.url);
5
5
  const __filename = __fileURLToPath(import.meta.url);
6
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(`
7
+ import{a as L,b as E,c as q,e as j}from"./chunk-PQTR6XVW.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-6POAOY5C.mjs";import{a as A}from"./chunk-5DZ2LTII.mjs";import{d as m,e as f}from"./chunk-FOWTB762.mjs";import"./chunk-6U3CYLY5.mjs";import"./chunk-X433BB6F.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-XSZOHNL4.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-XWLTEAGN.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
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
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
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(`
@@ -4,7 +4,7 @@ import { dirname as __pathDirname } from 'path';
4
4
  const require = __createRequire(import.meta.url);
5
5
  const __filename = __fileURLToPath(import.meta.url);
6
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(`
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-J6Y7IVFQ.mjs";import"./chunk-UAYTDSYG.mjs";import"./chunk-NNILF7R3.mjs";import"./chunk-NZKUCQZK.mjs";import"./chunk-H2KNJUPN.mjs";import{a as b}from"./chunk-6POAOY5C.mjs";import{a as U}from"./chunk-5DZ2LTII.mjs";import{d,e as j}from"./chunk-FOWTB762.mjs";import"./chunk-6FUCOGOW.mjs";import"./chunk-6U3CYLY5.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-CB3CNJTL.mjs";import"./chunk-LZILSE5H.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-BUD3R6LF.mjs";import"./chunk-ZQ2XH76U.mjs";import"./chunk-B2HY22OD.mjs";import"./chunk-XLFEWZRA.mjs";import"./chunk-X433BB6F.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-XSZOHNL4.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-XWLTEAGN.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
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
9
  `):["> No symbol index yet. Run `prjct sync` or `prjct code reindex`.",o?`> ${o}`:""].filter(Boolean).join(`
10
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(`
@@ -4,4 +4,4 @@ import { dirname as __pathDirname } from 'path';
4
4
  const require = __createRequire(import.meta.url);
5
5
  const __filename = __fileURLToPath(import.meta.url);
6
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};
7
+ import{a,b,c,d,e,f,g}from"./chunk-5OWPZWEU.mjs";import"./chunk-YLYAYRSJ.mjs";import"./chunk-5ZBACKED.mjs";import"./chunk-DW4QMD6J.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};
@@ -4,4 +4,4 @@ import { dirname as __pathDirname } from 'path';
4
4
  const require = __createRequire(import.meta.url);
5
5
  const __filename = __fileURLToPath(import.meta.url);
6
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};
7
+ import{a,b,c,d,e,f,g}from"./chunk-5ZBACKED.mjs";import"./chunk-DW4QMD6J.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};
@@ -4,4 +4,4 @@ import { dirname as __pathDirname } from 'path';
4
4
  const require = __createRequire(import.meta.url);
5
5
  const __filename = __fileURLToPath(import.meta.url);
6
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};
7
+ import{a,b,c,d}from"./chunk-2FRLIQKX.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-OE27RFLJ.mjs";import"./chunk-FATYLG3L.mjs";import"./chunk-2EEMQV7N.mjs";import"./chunk-KPR5TWSN.mjs";import"./chunk-623SNKDH.mjs";import"./chunk-XWLTEAGN.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};
@@ -4,4 +4,4 @@ import { dirname as __pathDirname } from 'path';
4
4
  const require = __createRequire(import.meta.url);
5
5
  const __filename = __fileURLToPath(import.meta.url);
6
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};
7
+ import{a,b,c,d}from"./chunk-IJNKHQIS.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-OE27RFLJ.mjs";import"./chunk-FATYLG3L.mjs";import"./chunk-2EEMQV7N.mjs";import"./chunk-KPR5TWSN.mjs";import"./chunk-623SNKDH.mjs";import"./chunk-XWLTEAGN.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};
@@ -4,5 +4,5 @@ import { dirname as __pathDirname } from 'path';
4
4
  const require = __createRequire(import.meta.url);
5
5
  const __filename = __fileURLToPath(import.meta.url);
6
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(`
7
+ import{a as c,d as r}from"./chunk-6POAOY5C.mjs";import{a as p}from"./chunk-5DZ2LTII.mjs";import"./chunk-6U3CYLY5.mjs";import"./chunk-X433BB6F.mjs";import"./chunk-EZRNQXCC.mjs";import"./chunk-B7AQHL7B.mjs";import"./chunk-L4TUXFCL.mjs";import{h as o}from"./chunk-ID2C2S33.mjs";import"./chunk-XSZOHNL4.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-XWLTEAGN.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
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};
@@ -4,4 +4,4 @@ import { dirname as __pathDirname } from 'path';
4
4
  const require = __createRequire(import.meta.url);
5
5
  const __filename = __fileURLToPath(import.meta.url);
6
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};
7
+ import{b as a}from"./chunk-XSZOHNL4.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-XWLTEAGN.mjs";import"./chunk-DOJPSIMG.mjs";import"./chunk-HYIT7MF5.mjs";import"./chunk-225DWS4D.mjs";import"./chunk-3TRXQAU4.mjs";export{a as default};
@@ -4,7 +4,7 @@ import { dirname as __pathDirname } from 'path';
4
4
  const require = __createRequire(import.meta.url);
5
5
  const __filename = __fileURLToPath(import.meta.url);
6
6
  const __dirname = __pathDirname(__filename);
7
- import{a as w}from"./chunk-P53YMOKR.mjs";import{c as h}from"./chunk-F2FKQUYE.mjs";import{i as u}from"./chunk-6AFXUX2M.mjs";import"./chunk-WSVMQYYU.mjs";import{b as f}from"./chunk-LZC6NGB6.mjs";import"./chunk-XLFEWZRA.mjs";import"./chunk-XPRLQIVQ.mjs";import"./chunk-EZRNQXCC.mjs";import"./chunk-EHVU2SMR.mjs";import"./chunk-HPCSSJXH.mjs";import"./chunk-E5QQDYBR.mjs";import"./chunk-B7AQHL7B.mjs";import"./chunk-L4TUXFCL.mjs";import"./chunk-DIEPWXJJ.mjs";import"./chunk-UNNY2IWZ.mjs";import{b as y}from"./chunk-3USVY66O.mjs";import"./chunk-OIE3AKKO.mjs";import"./chunk-Q6C27OL7.mjs";import"./chunk-NXUIMC22.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"./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 g,g as x}from"./chunk-225DWS4D.mjs";import{a as d}from"./chunk-3TRXQAU4.mjs";x();async function M(c,r,o){let[n,...i]=c;try{switch(n){case"memory":return await k(i,o,{kind:"memory",projectId:r});case"learnings":return await k(i,o,{kind:"learnings",projectId:r});case"skills":{let{refreshSkillIndex:t,renderSkillIndex:a}=await import("./skill-index-L4UWQCQE.mjs");return await t(r,o),{tool:"skills",result:{markdown:a(r)??"No skills found in project or global skill roots."}}}case"tiers":{let{buildContextTiersReport:t,formatContextTiersJson:a,formatContextTiersMd:l}=await import("./context-tiers-4S6H22NP.mjs"),s=t();return{tool:"tiers",result:{markdown:l(s),...a(s)}}}case"project":{let{formatProjectFactsMd:t}=await import("./prjct-md-SUDFWDCS.mjs");return{tool:"project",result:{markdown:await t(o)}}}case"artifacts":{let{listSafeArtifacts:t,formatSafeArtifactsJson:a,formatSafeArtifactsMd:l}=await import("./safe-artifacts-RW5WQUUJ.mjs"),s=await t(r);return{tool:"artifacts",result:{markdown:l(s),...a(s)}}}case"help":return{tool:"error",result:{error:T(),code:"HELP"}};default:return{tool:"error",result:{error:`Unknown tool: ${n}. Use 'prjct context help' for usage.`,code:"UNKNOWN_TOOL"}}}}catch(t){return{tool:"error",result:{error:g(t),code:"EXECUTION_ERROR"}}}}d(M,"runContextTool");async function k(c,r,o){let n=o.projectId??await y.getProjectId(r);if(!n)return{tool:"error",result:{error:"No prjct project. Run `prjct init` first.",code:"NO_PROJECT"}};let i=c.filter(e=>!e.startsWith("-")).join(" ").trim()||void 0,t=(()=>{let e=c.find(m=>m.startsWith("--id"));if(e){let m=e.includes("=")?e.split("=")[1]:c[c.indexOf(e)+1];if(m)return m}return i&&/^mem[_-]?\d+$/i.test(i)?i:void 0})();if(t){let e=f.getById(n,t);e&&h.recordFetch(n,e.id);let m=e?f.expandWithLinks(n,[e],5):[],p=e?[e,...m]:[];return{tool:o.kind,result:{markdown:e?u(p):`> No memory entry with id \`${t}\` (it may have aged out or never existed).`,entryCount:p.length,topic:t}}}let a=["learning","anti-pattern","gotcha","red-herring"],l=o.kind==="learnings"?a:void 0,s=await w(r,n,{topic:i,types:l,limit:12});return{tool:o.kind,result:{markdown:u(s,{compact:!0}),entryCount:s.length,topic:i}}}d(k,"runMemoryTool");function T(){return`
7
+ import{a as w}from"./chunk-YPLFWN62.mjs";import{c as h}from"./chunk-F2FKQUYE.mjs";import{j as u}from"./chunk-BUD3R6LF.mjs";import"./chunk-ZQ2XH76U.mjs";import{b as f}from"./chunk-B2HY22OD.mjs";import"./chunk-XLFEWZRA.mjs";import"./chunk-X433BB6F.mjs";import"./chunk-EZRNQXCC.mjs";import"./chunk-EHVU2SMR.mjs";import"./chunk-HPCSSJXH.mjs";import"./chunk-E5QQDYBR.mjs";import"./chunk-B7AQHL7B.mjs";import"./chunk-L4TUXFCL.mjs";import"./chunk-DIEPWXJJ.mjs";import"./chunk-UNNY2IWZ.mjs";import{b as y}from"./chunk-XSZOHNL4.mjs";import"./chunk-OIE3AKKO.mjs";import"./chunk-Q6C27OL7.mjs";import"./chunk-NXUIMC22.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"./chunk-D62TAZG6.mjs";import"./chunk-KPR5TWSN.mjs";import"./chunk-623SNKDH.mjs";import"./chunk-XWLTEAGN.mjs";import"./chunk-DOJPSIMG.mjs";import"./chunk-HYIT7MF5.mjs";import{e as g,g as x}from"./chunk-225DWS4D.mjs";import{a as d}from"./chunk-3TRXQAU4.mjs";x();async function M(c,r,o){let[n,...i]=c;try{switch(n){case"memory":return await k(i,o,{kind:"memory",projectId:r});case"learnings":return await k(i,o,{kind:"learnings",projectId:r});case"skills":{let{refreshSkillIndex:t,renderSkillIndex:a}=await import("./skill-index-L4UWQCQE.mjs");return await t(r,o),{tool:"skills",result:{markdown:a(r)??"No skills found in project or global skill roots."}}}case"tiers":{let{buildContextTiersReport:t,formatContextTiersJson:a,formatContextTiersMd:l}=await import("./context-tiers-NOKJ75QP.mjs"),s=t();return{tool:"tiers",result:{markdown:l(s),...a(s)}}}case"project":{let{formatProjectFactsMd:t}=await import("./prjct-md-BSFV7OQQ.mjs");return{tool:"project",result:{markdown:await t(o)}}}case"artifacts":{let{listSafeArtifacts:t,formatSafeArtifactsJson:a,formatSafeArtifactsMd:l}=await import("./safe-artifacts-PE2TMEZQ.mjs"),s=await t(r);return{tool:"artifacts",result:{markdown:l(s),...a(s)}}}case"help":return{tool:"error",result:{error:T(),code:"HELP"}};default:return{tool:"error",result:{error:`Unknown tool: ${n}. Use 'prjct context help' for usage.`,code:"UNKNOWN_TOOL"}}}}catch(t){return{tool:"error",result:{error:g(t),code:"EXECUTION_ERROR"}}}}d(M,"runContextTool");async function k(c,r,o){let n=o.projectId??await y.getProjectId(r);if(!n)return{tool:"error",result:{error:"No prjct project. Run `prjct init` first.",code:"NO_PROJECT"}};let i=c.filter(e=>!e.startsWith("-")).join(" ").trim()||void 0,t=(()=>{let e=c.find(m=>m.startsWith("--id"));if(e){let m=e.includes("=")?e.split("=")[1]:c[c.indexOf(e)+1];if(m)return m}return i&&/^mem[_-]?\d+$/i.test(i)?i:void 0})();if(t){let e=f.getById(n,t);e&&h.recordFetch(n,e.id);let m=e?f.expandWithLinks(n,[e],5):[],p=e?[e,...m]:[];return{tool:o.kind,result:{markdown:e?u(p):`> No memory entry with id \`${t}\` (it may have aged out or never existed).`,entryCount:p.length,topic:t}}}let a=["learning","anti-pattern","gotcha","red-herring"],l=o.kind==="learnings"?a:void 0,s=await w(r,n,{topic:i,types:l,limit:12});return{tool:o.kind,result:{markdown:u(s,{compact:!0}),entryCount:s.length,topic:i}}}d(k,"runMemoryTool");function T(){return`
8
8
  prjct context \u2014 memory-bound context subtools
9
9
 
10
10
  USAGE:
@@ -4,7 +4,7 @@ import { dirname as __pathDirname } from 'path';
4
4
  const require = __createRequire(import.meta.url);
5
5
  const __filename = __fileURLToPath(import.meta.url);
6
6
  const __dirname = __pathDirname(__filename);
7
- import{l as O}from"./chunk-5YSPND5J.mjs";import{a as T,c as d,d as u,f as j,h as x,k as b}from"./chunk-5MN22JFI.mjs";import"./chunk-4T7NGLNQ.mjs";import{b as w}from"./chunk-EHVU2SMR.mjs";import"./chunk-HPCSSJXH.mjs";import"./chunk-E5QQDYBR.mjs";import"./chunk-B7AQHL7B.mjs";import"./chunk-L4TUXFCL.mjs";import{b as p}from"./chunk-3USVY66O.mjs";import"./chunk-OIE3AKKO.mjs";import"./chunk-Q6C27OL7.mjs";import"./chunk-NXUIMC22.mjs";import"./chunk-DMO3ZFUG.mjs";import"./chunk-NNOX3UU4.mjs";import"./chunk-INJ5WT2D.mjs";import{F as h,G as A}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-2EEMQV7N.mjs";import"./chunk-623SNKDH.mjs";import"./chunk-TTN2CFZC.mjs";import"./chunk-DOJPSIMG.mjs";import"./chunk-HYIT7MF5.mjs";import{a as k,e as y,g as P}from"./chunk-225DWS4D.mjs";import{a as g}from"./chunk-3TRXQAU4.mjs";import S from"node:fs/promises";import C from"node:path";A();P();var f=class{static{g(this,"ContextCommands")}async context(n=null,o=process.cwd(),t={}){try{let e=await p.readConfig(o);if(!e||!e.projectId)return console.log(JSON.stringify({projectId:"",globalPath:"",currentTask:null,domains:[],primaryDomain:null,subtasks:null,repoAnalysis:{ecosystem:"unknown",frameworks:[],hasTests:!1,technologies:[]}})),{success:!1,message:"No prjct project. Run `prjct init` first."};let s=e.projectId,a=h.getGlobalProjectPath(s),r=await w.read(s),c=r?.currentTask?{id:r.currentTask.id,description:r.currentTask.description,startedAt:r.currentTask.startedAt,subtasks:r.currentTask.subtasks?.map(l=>({id:l.id,description:l.description,status:l.status,domain:l.domain})),currentSubtaskIndex:r.currentTask.currentSubtaskIndex}:null,i=await this.loadRepoAnalysis(a,s),m={projectId:s,globalPath:a,currentTask:c,domains:[],primaryDomain:null,subtasks:null,repoAnalysis:{ecosystem:i?.ecosystem||"unknown",frameworks:i?.frameworks||[],hasTests:i?.hasTests||!1,technologies:i?.technologies||[]}};return t.md?console.log(this.formatContextMd(m)):console.log(JSON.stringify(m)),{success:!0,message:""}}catch(e){return{success:!1,message:`Context error: ${y(e)}`}}}async search(n=null,o=process.cwd(),t={}){let e=t.global?"global-kb":await p.getProjectId(o);if(!e)return{success:!1,message:"No prjct project. Run `prjct init` first."};let s=(n??"").trim();if(!s)return{success:!1,message:"search requires a query"};let{runContextTool:a}=await import("./context-4KGTUAC4.mjs"),r=await a(["memory",s],e,o),c=r.tool!=="error",i=t.md?r.result.markdown??"":JSON.stringify(r,null,2);return{success:c,message:i}}formatContextMd(n){let o=[];if(o.push(u("Project",b(d("ID",n.projectId),d("Path",n.globalPath)))),n.currentTask){let t=n.currentTask;if(o.push(j({description:t.description,status:"in-progress"})),t.subtasks&&t.subtasks.length>0){let e=t.subtasks.map(s=>`- [${s.status==="completed"?"x":" "}] ${s.description}${s.domain?` (${s.domain})`:""}`);o.push(e.join(`
7
+ import{l as O}from"./chunk-UX2ORID4.mjs";import{a as T,c as d,d as u,f as j,h as x,k as b}from"./chunk-6POAOY5C.mjs";import"./chunk-4T7NGLNQ.mjs";import{b as w}from"./chunk-EHVU2SMR.mjs";import"./chunk-HPCSSJXH.mjs";import"./chunk-E5QQDYBR.mjs";import"./chunk-B7AQHL7B.mjs";import"./chunk-L4TUXFCL.mjs";import{b as p}from"./chunk-XSZOHNL4.mjs";import"./chunk-OIE3AKKO.mjs";import"./chunk-Q6C27OL7.mjs";import"./chunk-NXUIMC22.mjs";import"./chunk-DMO3ZFUG.mjs";import"./chunk-NNOX3UU4.mjs";import"./chunk-INJ5WT2D.mjs";import{F as h,G as A}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-2EEMQV7N.mjs";import"./chunk-623SNKDH.mjs";import"./chunk-XWLTEAGN.mjs";import"./chunk-DOJPSIMG.mjs";import"./chunk-HYIT7MF5.mjs";import{a as k,e as y,g as P}from"./chunk-225DWS4D.mjs";import{a as g}from"./chunk-3TRXQAU4.mjs";import S from"node:fs/promises";import C from"node:path";A();P();var f=class{static{g(this,"ContextCommands")}async context(n=null,o=process.cwd(),t={}){try{let e=await p.readConfig(o);if(!e||!e.projectId)return console.log(JSON.stringify({projectId:"",globalPath:"",currentTask:null,domains:[],primaryDomain:null,subtasks:null,repoAnalysis:{ecosystem:"unknown",frameworks:[],hasTests:!1,technologies:[]}})),{success:!1,message:"No prjct project. Run `prjct init` first."};let s=e.projectId,a=h.getGlobalProjectPath(s),r=await w.read(s),c=r?.currentTask?{id:r.currentTask.id,description:r.currentTask.description,startedAt:r.currentTask.startedAt,subtasks:r.currentTask.subtasks?.map(l=>({id:l.id,description:l.description,status:l.status,domain:l.domain})),currentSubtaskIndex:r.currentTask.currentSubtaskIndex}:null,i=await this.loadRepoAnalysis(a,s),m={projectId:s,globalPath:a,currentTask:c,domains:[],primaryDomain:null,subtasks:null,repoAnalysis:{ecosystem:i?.ecosystem||"unknown",frameworks:i?.frameworks||[],hasTests:i?.hasTests||!1,technologies:i?.technologies||[]}};return t.md?console.log(this.formatContextMd(m)):console.log(JSON.stringify(m)),{success:!0,message:""}}catch(e){return{success:!1,message:`Context error: ${y(e)}`}}}async search(n=null,o=process.cwd(),t={}){let e=t.global?"global-kb":await p.getProjectId(o);if(!e)return{success:!1,message:"No prjct project. Run `prjct init` first."};let s=(n??"").trim();if(!s)return{success:!1,message:"search requires a query"};let{runContextTool:a}=await import("./context-4GB6ICXK.mjs"),r=await a(["memory",s],e,o),c=r.tool!=="error",i=t.md?r.result.markdown??"":JSON.stringify(r,null,2);return{success:c,message:i}}formatContextMd(n){let o=[];if(o.push(u("Project",b(d("ID",n.projectId),d("Path",n.globalPath)))),n.currentTask){let t=n.currentTask;if(o.push(j({description:t.description,status:"in-progress"})),t.subtasks&&t.subtasks.length>0){let e=t.subtasks.map(s=>`- [${s.status==="completed"?"x":" "}] ${s.description}${s.domain?` (${s.domain})`:""}`);o.push(e.join(`
8
8
  `))}}else o.push("> No active work cycle");return n.repoAnalysis&&o.push(u("Stack",x({Ecosystem:n.repoAnalysis.ecosystem,Frameworks:n.repoAnalysis.frameworks.join(", ")||"none",Tests:n.repoAnalysis.hasTests?"yes":"no",Tech:n.repoAnalysis.technologies.join(", ")||"none"}))),o.push(u("Context tiers",`${O()}
9
9
 
10
- _Detail: \`prjct context tiers --md\` \xB7 artifacts: \`prjct context artifacts --md\`_`)),T(...o)}async loadRepoAnalysis(n,o){if(o)try{let{getActiveProjectStyle:t}=await import("./project-style-evolution-5W25UPPN.mjs"),e=t(o);if(e){let s=e.payload.stack;return{ecosystem:s.ecosystem||"unknown",frameworks:s.frameworks??[],hasTests:s.hasTests??!1,technologies:[...s.languages??[],...s.frameworks??[],...s.keyLibraries??[]].filter((a,r,c)=>c.indexOf(a)===r)}}}catch{}try{let t=C.join(n,"analysis","repo-analysis.json"),e=await S.readFile(t,"utf-8"),s=JSON.parse(e);return{ecosystem:s.ecosystem||"unknown",frameworks:s.frameworks||[],hasTests:s.hasTests??!1,technologies:s.technologies||[]}}catch(t){k(t)}try{let{detectStack:t,gatherStats:e}=await import("./sync-analyzer-M37Q4LE4.mjs"),s=process.cwd(),[a,r]=await Promise.all([t(s),e(s)]);return{ecosystem:r.ecosystem||"unknown",frameworks:a.frameworks??r.frameworks??[],hasTests:a.hasTesting??!1,technologies:[...r.languages??[],...a.frameworks??[]].filter((c,i,m)=>m.indexOf(c)===i)}}catch{return null}}},I=new f,F=I;export{f as ContextCommands,I as contextCommands,F as default};
10
+ _Detail: \`prjct context tiers --md\` \xB7 artifacts: \`prjct context artifacts --md\`_`)),T(...o)}async loadRepoAnalysis(n,o){if(o)try{let{getActiveProjectStyle:t}=await import("./project-style-evolution-HIMSJQQB.mjs"),e=t(o);if(e){let s=e.payload.stack;return{ecosystem:s.ecosystem||"unknown",frameworks:s.frameworks??[],hasTests:s.hasTests??!1,technologies:[...s.languages??[],...s.frameworks??[],...s.keyLibraries??[]].filter((a,r,c)=>c.indexOf(a)===r)}}}catch{}try{let t=C.join(n,"analysis","repo-analysis.json"),e=await S.readFile(t,"utf-8"),s=JSON.parse(e);return{ecosystem:s.ecosystem||"unknown",frameworks:s.frameworks||[],hasTests:s.hasTests??!1,technologies:s.technologies||[]}}catch(t){k(t)}try{let{detectStack:t,gatherStats:e}=await import("./sync-analyzer-M37Q4LE4.mjs"),s=process.cwd(),[a,r]=await Promise.all([t(s),e(s)]);return{ecosystem:r.ecosystem||"unknown",frameworks:a.frameworks??r.frameworks??[],hasTests:a.hasTesting??!1,technologies:[...r.languages??[],...a.frameworks??[]].filter((c,i,m)=>m.indexOf(c)===i)}}catch{return null}}},I=new f,F=I;export{f as ContextCommands,I as contextCommands,F as default};
@@ -4,7 +4,7 @@ import { dirname as __pathDirname } from 'path';
4
4
  const require = __createRequire(import.meta.url);
5
5
  const __filename = __fileURLToPath(import.meta.url);
6
6
  const __dirname = __pathDirname(__filename);
7
- import{b as $}from"./chunk-KIRU4QFX.mjs";import"./chunk-7QMBIMEX.mjs";import"./chunk-VDXTMAMO.mjs";import"./chunk-NZKUCQZK.mjs";import"./chunk-H2KNJUPN.mjs";import{a as S}from"./chunk-V5VCXMKO.mjs";import{e as y}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"./chunk-YEALP3WX.mjs";import"./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 p}from"./chunk-ID2C2S33.mjs";import"./chunk-RACISWUV.mjs";import"./chunk-DIEPWXJJ.mjs";import"./chunk-NINFE7GS.mjs";import"./chunk-UNNY2IWZ.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{F as x,G as R}from"./chunk-HU5ERAAV.mjs";import"./chunk-6RT2P22O.mjs";import"./chunk-ZXTJLMVZ.mjs";import"./chunk-TIBYHZFA.mjs";import"./chunk-VWFVSNQT.mjs";import"./chunk-U24YKPYX.mjs";import{a as v,b as f,p as A}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 k,g as L}from"./chunk-225DWS4D.mjs";import{a as c}from"./chunk-3TRXQAU4.mjs";R();L();A();import m from"node:fs/promises";import u from"node:path";var j=50,C=class extends S{static{c(this,"ContextCheckpointCommands")}async save(n,t=process.cwd(),s={}){try{let i=await $(t);if(!i.ok)return i.result;let o=(n??"untitled").trim().slice(0,200)||"untitled",g=await F(t),r={version:1,title:o,createdAt:new Date().toISOString(),git:g,notes:(s.notes??"").trim()},a=b(i.value);await m.mkdir(a,{recursive:!0});let h=B(r.createdAt,o),d=u.join(a,h);return await m.writeFile(d,JSON.stringify(r,null,2),"utf-8"),s.md?console.log(`## context-save
7
+ import{b as $}from"./chunk-J6Y7IVFQ.mjs";import"./chunk-UAYTDSYG.mjs";import"./chunk-NNILF7R3.mjs";import"./chunk-NZKUCQZK.mjs";import"./chunk-H2KNJUPN.mjs";import{a as S}from"./chunk-5DZ2LTII.mjs";import{e as y}from"./chunk-FOWTB762.mjs";import"./chunk-6FUCOGOW.mjs";import"./chunk-6U3CYLY5.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-CB3CNJTL.mjs";import"./chunk-LZILSE5H.mjs";import"./chunk-6OYLZ4NM.mjs";import"./chunk-SO3ZPNWT.mjs";import"./chunk-V7R3L54M.mjs";import"./chunk-YEALP3WX.mjs";import"./chunk-QZ7T2EYR.mjs";import"./chunk-UYMZ3NAF.mjs";import"./chunk-AJXELVNH.mjs";import"./chunk-CWLGRKA7.mjs";import"./chunk-2NI4EEK2.mjs";import"./chunk-BUD3R6LF.mjs";import"./chunk-ZQ2XH76U.mjs";import"./chunk-B2HY22OD.mjs";import"./chunk-XLFEWZRA.mjs";import"./chunk-X433BB6F.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 p}from"./chunk-ID2C2S33.mjs";import"./chunk-RACISWUV.mjs";import"./chunk-DIEPWXJJ.mjs";import"./chunk-NINFE7GS.mjs";import"./chunk-UNNY2IWZ.mjs";import"./chunk-XSZOHNL4.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{F as x,G as R}from"./chunk-HU5ERAAV.mjs";import"./chunk-6RT2P22O.mjs";import"./chunk-ZXTJLMVZ.mjs";import"./chunk-TIBYHZFA.mjs";import"./chunk-VWFVSNQT.mjs";import"./chunk-U24YKPYX.mjs";import{a as v,b as f,p as A}from"./chunk-D62TAZG6.mjs";import"./chunk-KPR5TWSN.mjs";import"./chunk-623SNKDH.mjs";import"./chunk-XWLTEAGN.mjs";import"./chunk-DOJPSIMG.mjs";import"./chunk-HYIT7MF5.mjs";import{e as k,g as L}from"./chunk-225DWS4D.mjs";import{a as c}from"./chunk-3TRXQAU4.mjs";R();L();A();import m from"node:fs/promises";import u from"node:path";var j=50,C=class extends S{static{c(this,"ContextCheckpointCommands")}async save(n,t=process.cwd(),s={}){try{let i=await $(t);if(!i.ok)return i.result;let o=(n??"untitled").trim().slice(0,200)||"untitled",g=await F(t),r={version:1,title:o,createdAt:new Date().toISOString(),git:g,notes:(s.notes??"").trim()},a=b(i.value);await m.mkdir(a,{recursive:!0});let h=B(r.createdAt,o),d=u.join(a,h);return await m.writeFile(d,JSON.stringify(r,null,2),"utf-8"),s.md?console.log(`## context-save
8
8
 
9
9
  - **Title**: ${o}
10
10
  - **Branch**: ${g.branch}
@@ -4,4 +4,4 @@ import { dirname as __pathDirname } from 'path';
4
4
  const require = __createRequire(import.meta.url);
5
5
  const __filename = __fileURLToPath(import.meta.url);
6
6
  const __dirname = __pathDirname(__filename);
7
- import{d as a,e as b,f as c,g as d,h as e,i as f,j as g,k as h,l as i,m as j,n as k}from"./chunk-5YSPND5J.mjs";import"./chunk-4T7NGLNQ.mjs";import"./chunk-2EEMQV7N.mjs";import"./chunk-225DWS4D.mjs";import"./chunk-3TRXQAU4.mjs";export{e as CONTEXT_TIERS,b as L0_ROUTING_BYTES_MAX,a as L0_SKILL_TOKENS_MAX,c as MCP_TOOLS_CORE_MAX,d as PRJCT_MD_BODY_BYTES_MAX,h as buildContextTiersReport,i as contextTiersOneLiner,k as formatContextTiersJson,j as formatContextTiersMd,f as measureL0Budget,g as measurePrjctMdBudget};
7
+ import{d as a,e as b,f as c,g as d,h as e,i as f,j as g,k as h,l as i,m as j,n as k}from"./chunk-UX2ORID4.mjs";import"./chunk-4T7NGLNQ.mjs";import"./chunk-2EEMQV7N.mjs";import"./chunk-225DWS4D.mjs";import"./chunk-3TRXQAU4.mjs";export{e as CONTEXT_TIERS,b as L0_ROUTING_BYTES_MAX,a as L0_SKILL_TOKENS_MAX,c as MCP_TOOLS_CORE_MAX,d as PRJCT_MD_BODY_BYTES_MAX,h as buildContextTiersReport,i as contextTiersOneLiner,k as formatContextTiersJson,j as formatContextTiersMd,f as measureL0Budget,g as measurePrjctMdBudget};
@@ -4,4 +4,4 @@ import { dirname as __pathDirname } from 'path';
4
4
  const require = __createRequire(import.meta.url);
5
5
  const __filename = __fileURLToPath(import.meta.url);
6
6
  const __dirname = __pathDirname(__filename);
7
- import{a,b,c}from"./chunk-XSZG3CBO.mjs";import"./chunk-ZXTJLMVZ.mjs";import"./chunk-U24YKPYX.mjs";import"./chunk-D62TAZG6.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{b as buildContext7SmokePath,c as default,a as getVerifyCachePath};
7
+ import{a,b,c}from"./chunk-DTMZBK4E.mjs";import"./chunk-ZXTJLMVZ.mjs";import"./chunk-U24YKPYX.mjs";import"./chunk-D62TAZG6.mjs";import"./chunk-5ZBACKED.mjs";import"./chunk-DW4QMD6J.mjs";import"./chunk-DOJPSIMG.mjs";import"./chunk-HYIT7MF5.mjs";import"./chunk-225DWS4D.mjs";import"./chunk-3TRXQAU4.mjs";export{b as buildContext7SmokePath,c as default,a as getVerifyCachePath};
@@ -4,7 +4,7 @@ import { dirname as __pathDirname } from 'path';
4
4
  const require = __createRequire(import.meta.url);
5
5
  const __filename = __fileURLToPath(import.meta.url);
6
6
  const __dirname = __pathDirname(__filename);
7
- import{a as v,b as O}from"./chunk-GSNQKBHZ.mjs";import{a as B,b as h,d as L,e as E}from"./chunk-INM5COWM.mjs";import{b as A}from"./chunk-ANVCA6LF.mjs";import{a as G,b as q}from"./chunk-VCYVYFWE.mjs";import{a as R}from"./chunk-QAIEAOJF.mjs";import{a as S}from"./chunk-45LKWJ5D.mjs";import"./chunk-76YMLNLF.mjs";import{h as c}from"./chunk-ID2C2S33.mjs";import{b as W}from"./chunk-3USVY66O.mjs";import"./chunk-OIE3AKKO.mjs";import{a as I}from"./chunk-DZVOFEM5.mjs";import"./chunk-5EF5EOCL.mjs";import"./chunk-DMO3ZFUG.mjs";import"./chunk-NNOX3UU4.mjs";import{E as z,w as b,z as D}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{l as j,p as _}from"./chunk-HYIT7MF5.mjs";import{e as M,f as $,g as U}from"./chunk-225DWS4D.mjs";import{a as n}from"./chunk-3TRXQAU4.mjs";import T from"node:os";import k from"node:path";import f from"chalk";z();U();_();async function F(){let[s,...i]=process.argv.slice(2);if(["-v","--version","version"].includes(s)){let e=await import("./package-DCGCOAGQ.mjs");await K(e.version),process.exit(0)}if(["-h","--help",void 0].includes(s)&&(Q(),process.exit(0)),s&&q(s)&&!h.getByName(s)){let e=G[s];e&&(c.failWithHint({message:`'prjct ${s}' was removed in v2. ${e.note}`,hint:`Use: ${e.replacement}`}),process.exit(1))}let u=!!s&&!h.getByName(s)&&!(i.length===0&&R(s)!==null),r=u?"capture":s,d=u?[[s,...i.filter(e=>!e.startsWith("-"))].join(" "),...i.filter(e=>e.startsWith("-"))]:i,o=d.includes("--md");o||c.start();try{let e=h.getByName(r);if(!e){let a=R(r),l=a?`Did you mean 'prjct ${a}'? Run 'prjct --help' for all commands`:"Run 'prjct --help' to see available commands";c.failWithHint(I("UNKNOWN_COMMAND",{message:`Unknown command: ${r}`,hint:l})),o||c.end(),process.exit(1)}if(e.deprecated){let a=e.replacedBy?`Use 'prjct ${e.replacedBy}' instead`:"Run 'prjct --help' to see available commands";c.failWithHint({message:`Command '${r}' is deprecated`,hint:a}),o||c.end(),process.exit(1)}e.implemented||(c.failWithHint({message:`Command '${r}' is not yet implemented`,hint:"Run 'prjct --help' to see available commands",docs:"https://github.com/prjct-app/cli"}),o||c.end(),process.exit(1));let{parsedArgs:g,options:t}=J(e,d),x=!process.stdin.isTTY||t.md===!0||t.json===!0;e.requiresLlm&&!x&&(c.failWithHint({message:`'prjct ${r}' requires an AI agent to process its output`,hint:`Use 'p. ${r}' inside Claude/Cursor, or add --md flag`}),o||c.end(),process.exit(1));let N=V(e,g);N&&(c.failWithHint(N),o||c.end(),process.exit(1));let H=Date.now(),y=await(async()=>{try{let a=await W.getProjectId(process.cwd());return a&&(await S.expireIfStale(a),await S.touch(a)),a}catch{return null}})(),m=new B,C=await(async()=>{if(r==="analyze")return m.analyze(t);if(r==="setup")return m.setup(t);if(r==="update"||r==="upgrade")return m.update(t);let a=g.join(" ")||null,l=t.md===!0,w=h.getByName(r);if(w?.optionSchema)return h.executeWithOptions(r,a,process.cwd(),L(t,w.optionSchema));{let P={spec:n(p=>E(m,(p??"").trim().split(/\s+/).filter(Boolean),t,process.cwd()),"spec"),intent:n(p=>E(m,(p??"").trim().split(/\s+/).filter(Boolean),t,process.cwd()),"intent"),"audit-spec":n(p=>p?m.specAudit(p,process.cwd(),{md:l,lenses:t.lenses?String(t.lenses):void 0}):Promise.resolve({success:!1,error:"audit-spec requires a spec id"}),"audit-spec"),init:n(p=>m.init({idea:p,yes:t.yes===!0,pack:t.pack?String(t.pack):void 0,persona:t.persona?String(t.persona):void 0}),"init"),sync:n(()=>m.sync(process.cwd(),{preview:t.preview===!0||t["dry-run"]===!0,yes:t.yes===!0,json:t.json===!0,md:l,package:t.package?String(t.package):void 0,full:t.full===!0}),"sync"),"analysis-save-llm":n(p=>p?m.saveLlmAnalysis(p,process.cwd(),{md:l}):Promise.resolve({success:!1,error:"analysis-save-llm requires analysis text, JSON, or a file path"}),"analysis-save-llm"),start:n(()=>m.start(),"start"),login:n(()=>m.login({md:l}),"login"),logout:n(()=>m.logout(),"logout"),auth:n(p=>m.auth(p,{md:l}),"auth")}[r];if(P)return P(a);throw new Error(`Command '${r}' has no handler`)}})();if(y){let a=Date.now()-H;try{await S.trackCommand(y,r,a)}catch{}try{await A.recordTiming(y,"command_duration",a,{command:r});let l=globalThis.__perfStartNs;if(l){let w=Number(process.hrtime.bigint()-l)/1e6;await A.recordTiming(y,"startup_time",w)}await A.recordMemory(y,{command:r})}catch{}}C?.message?console.log(C.message):C?.error&&console.error(C.error),o||c.end(),process.exit(C?.success?0:1)}catch(e){console.error("Error:",M(e)),process.env.DEBUG&&console.error($(e)),o||c.end(),process.exit(1)}}n(F,"main");function V(s,i){if(!s.params)return null;let r=s.params.replace(/\[[^\]]*\]/g,"").match(/<[^>]+>/g);if(!r||r.length===0)return null;if(i.length<r.length){let d=r.map(e=>e.slice(1,-1)).join(", "),o=s.usage.terminal||`prjct ${s.name} ${s.params}`;return I("MISSING_PARAM",{message:`Missing required parameter: ${d}`,hint:`Usage: ${o}`})}return null}n(V,"validateCommandParams");function J(s,i){let u=[],r={},d=n(o=>{if(o>=i.length)return;let e=i[o];if(e.startsWith("--")){let g=e.slice(2);o+1<i.length&&!i[o+1].startsWith("--")?(r[g]=i[o+1],d(o+2)):(r[g]=!0,d(o+1))}else u.push(e),d(o+1)},"parseAt");return d(0),{parsedArgs:u,options:r}}n(J,"parseCommandArgs");async function K(s){let i=await b(),u=k.join(T.homedir(),".claude","commands","p.md"),r=k.join(T.homedir(),".gemini","commands","p.toml"),[d,o,e,g]=await Promise.all([j(u),j(r),j(k.join(process.cwd(),".cursor","commands","sync.md")),j(k.join(process.cwd(),".cursor"))]),t=await D();console.log(O(s)),console.log(v("Claude Code",i.claude.installed?d?"ready":"installed":"missing",i.claude.version?f.dim(` (v${i.claude.version})`):"")),console.log(v("Gemini CLI",i.gemini.installed?o?"ready":"installed":"missing",i.gemini.version?f.dim(` (v${i.gemini.version})`):"")),console.log(v("Antigravity",t.installed?t.skillInstalled?"ready":"detected":"missing",t.installed&&!t.skillInstalled?` ${f.dim("(run prjct start)")}`:"")),console.log(v("Cursor IDE",e?"ready":g?"detected":"missing",e?` ${f.dim("(use prjct router)")}`:g?` ${f.dim("(run prjct init)")}`:"","\u25CB no .cursor/ folder")),console.log(`
7
+ import{a as v,b as O}from"./chunk-GSNQKBHZ.mjs";import{a as B,b as h,d as L,e as E}from"./chunk-MXJF3FA7.mjs";import{b as A}from"./chunk-ANVCA6LF.mjs";import{a as G,b as q}from"./chunk-VCYVYFWE.mjs";import{a as R}from"./chunk-QAIEAOJF.mjs";import{a as S}from"./chunk-45LKWJ5D.mjs";import"./chunk-76YMLNLF.mjs";import{h as c}from"./chunk-ID2C2S33.mjs";import{b as W}from"./chunk-XSZOHNL4.mjs";import"./chunk-OIE3AKKO.mjs";import{a as I}from"./chunk-DZVOFEM5.mjs";import"./chunk-5EF5EOCL.mjs";import"./chunk-DMO3ZFUG.mjs";import"./chunk-NNOX3UU4.mjs";import{E as z,w as b,z as D}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-XWLTEAGN.mjs";import"./chunk-DOJPSIMG.mjs";import{l as j,p as _}from"./chunk-HYIT7MF5.mjs";import{e as M,f as $,g as U}from"./chunk-225DWS4D.mjs";import{a as n}from"./chunk-3TRXQAU4.mjs";import T from"node:os";import k from"node:path";import f from"chalk";z();U();_();async function F(){let[s,...i]=process.argv.slice(2);if(["-v","--version","version"].includes(s)){let e=await import("./package-R4FUTGOE.mjs");await K(e.version),process.exit(0)}if(["-h","--help",void 0].includes(s)&&(Q(),process.exit(0)),s&&q(s)&&!h.getByName(s)){let e=G[s];e&&(c.failWithHint({message:`'prjct ${s}' was removed in v2. ${e.note}`,hint:`Use: ${e.replacement}`}),process.exit(1))}let u=!!s&&!h.getByName(s)&&!(i.length===0&&R(s)!==null),r=u?"capture":s,d=u?[[s,...i.filter(e=>!e.startsWith("-"))].join(" "),...i.filter(e=>e.startsWith("-"))]:i,o=d.includes("--md");o||c.start();try{let e=h.getByName(r);if(!e){let a=R(r),l=a?`Did you mean 'prjct ${a}'? Run 'prjct --help' for all commands`:"Run 'prjct --help' to see available commands";c.failWithHint(I("UNKNOWN_COMMAND",{message:`Unknown command: ${r}`,hint:l})),o||c.end(),process.exit(1)}if(e.deprecated){let a=e.replacedBy?`Use 'prjct ${e.replacedBy}' instead`:"Run 'prjct --help' to see available commands";c.failWithHint({message:`Command '${r}' is deprecated`,hint:a}),o||c.end(),process.exit(1)}e.implemented||(c.failWithHint({message:`Command '${r}' is not yet implemented`,hint:"Run 'prjct --help' to see available commands",docs:"https://github.com/prjct-app/cli"}),o||c.end(),process.exit(1));let{parsedArgs:g,options:t}=J(e,d),x=!process.stdin.isTTY||t.md===!0||t.json===!0;e.requiresLlm&&!x&&(c.failWithHint({message:`'prjct ${r}' requires an AI agent to process its output`,hint:`Use 'p. ${r}' inside Claude/Cursor, or add --md flag`}),o||c.end(),process.exit(1));let N=V(e,g);N&&(c.failWithHint(N),o||c.end(),process.exit(1));let H=Date.now(),y=await(async()=>{try{let a=await W.getProjectId(process.cwd());return a&&(await S.expireIfStale(a),await S.touch(a)),a}catch{return null}})(),m=new B,C=await(async()=>{if(r==="analyze")return m.analyze(t);if(r==="setup")return m.setup(t);if(r==="update"||r==="upgrade")return m.update(t);let a=g.join(" ")||null,l=t.md===!0,w=h.getByName(r);if(w?.optionSchema)return h.executeWithOptions(r,a,process.cwd(),L(t,w.optionSchema));{let P={spec:n(p=>E(m,(p??"").trim().split(/\s+/).filter(Boolean),t,process.cwd()),"spec"),intent:n(p=>E(m,(p??"").trim().split(/\s+/).filter(Boolean),t,process.cwd()),"intent"),"audit-spec":n(p=>p?m.specAudit(p,process.cwd(),{md:l,lenses:t.lenses?String(t.lenses):void 0}):Promise.resolve({success:!1,error:"audit-spec requires a spec id"}),"audit-spec"),init:n(p=>m.init({idea:p,yes:t.yes===!0,pack:t.pack?String(t.pack):void 0,persona:t.persona?String(t.persona):void 0}),"init"),sync:n(()=>m.sync(process.cwd(),{preview:t.preview===!0||t["dry-run"]===!0,yes:t.yes===!0,json:t.json===!0,md:l,package:t.package?String(t.package):void 0,full:t.full===!0}),"sync"),"analysis-save-llm":n(p=>p?m.saveLlmAnalysis(p,process.cwd(),{md:l}):Promise.resolve({success:!1,error:"analysis-save-llm requires analysis text, JSON, or a file path"}),"analysis-save-llm"),start:n(()=>m.start(),"start"),login:n(()=>m.login({md:l}),"login"),logout:n(()=>m.logout(),"logout"),auth:n(p=>m.auth(p,{md:l}),"auth")}[r];if(P)return P(a);throw new Error(`Command '${r}' has no handler`)}})();if(y){let a=Date.now()-H;try{await S.trackCommand(y,r,a)}catch{}try{await A.recordTiming(y,"command_duration",a,{command:r});let l=globalThis.__perfStartNs;if(l){let w=Number(process.hrtime.bigint()-l)/1e6;await A.recordTiming(y,"startup_time",w)}await A.recordMemory(y,{command:r})}catch{}}C?.message?console.log(C.message):C?.error&&console.error(C.error),o||c.end(),process.exit(C?.success?0:1)}catch(e){console.error("Error:",M(e)),process.env.DEBUG&&console.error($(e)),o||c.end(),process.exit(1)}}n(F,"main");function V(s,i){if(!s.params)return null;let r=s.params.replace(/\[[^\]]*\]/g,"").match(/<[^>]+>/g);if(!r||r.length===0)return null;if(i.length<r.length){let d=r.map(e=>e.slice(1,-1)).join(", "),o=s.usage.terminal||`prjct ${s.name} ${s.params}`;return I("MISSING_PARAM",{message:`Missing required parameter: ${d}`,hint:`Usage: ${o}`})}return null}n(V,"validateCommandParams");function J(s,i){let u=[],r={},d=n(o=>{if(o>=i.length)return;let e=i[o];if(e.startsWith("--")){let g=e.slice(2);o+1<i.length&&!i[o+1].startsWith("--")?(r[g]=i[o+1],d(o+2)):(r[g]=!0,d(o+1))}else u.push(e),d(o+1)},"parseAt");return d(0),{parsedArgs:u,options:r}}n(J,"parseCommandArgs");async function K(s){let i=await b(),u=k.join(T.homedir(),".claude","commands","p.md"),r=k.join(T.homedir(),".gemini","commands","p.toml"),[d,o,e,g]=await Promise.all([j(u),j(r),j(k.join(process.cwd(),".cursor","commands","sync.md")),j(k.join(process.cwd(),".cursor"))]),t=await D();console.log(O(s)),console.log(v("Claude Code",i.claude.installed?d?"ready":"installed":"missing",i.claude.version?f.dim(` (v${i.claude.version})`):"")),console.log(v("Gemini CLI",i.gemini.installed?o?"ready":"installed":"missing",i.gemini.version?f.dim(` (v${i.gemini.version})`):"")),console.log(v("Antigravity",t.installed?t.skillInstalled?"ready":"detected":"missing",t.installed&&!t.skillInstalled?` ${f.dim("(run prjct start)")}`:"")),console.log(v("Cursor IDE",e?"ready":g?"detected":"missing",e?` ${f.dim("(use prjct router)")}`:g?` ${f.dim("(run prjct init)")}`:"","\u25CB no .cursor/ folder")),console.log(`
8
8
  ${f.dim("Run 'prjct start' for Claude/Gemini, 'prjct init' for Cursor")}
9
9
  ${f.cyan("https://prjct.app")}
10
10
  `)}n(K,"displayVersion");function Q(){console.log(`
@@ -4,7 +4,7 @@ import { dirname as __pathDirname } from 'path';
4
4
  const require = __createRequire(import.meta.url);
5
5
  const __filename = __fileURLToPath(import.meta.url);
6
6
  const __dirname = __pathDirname(__filename);
7
- import{b as W}from"./chunk-4PRD4EU2.mjs";import{a as K}from"./chunk-V5VCXMKO.mjs";import{d as v,e as h}from"./chunk-FOWTB762.mjs";import"./chunk-7CI4AMVO.mjs";import{a as E}from"./chunk-UE3XKXWM.mjs";import{d as O,e as b,f as H}from"./chunk-MXJKULJY.mjs";import"./chunk-XPRLQIVQ.mjs";import"./chunk-EZRNQXCC.mjs";import"./chunk-B7AQHL7B.mjs";import"./chunk-L4TUXFCL.mjs";import{h as l}from"./chunk-ID2C2S33.mjs";import{b as P}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{b as F,i as q}from"./chunk-VWFVSNQT.mjs";import"./chunk-U24YKPYX.mjs";import"./chunk-D62TAZG6.mjs";import{b as C,f as J}from"./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{l as I,p as X}from"./chunk-HYIT7MF5.mjs";import{e as S,g as Y}from"./chunk-225DWS4D.mjs";import{a as d}from"./chunk-3TRXQAU4.mjs";J();import m from"node:fs/promises";import p from"node:path";q();Y();X();var _="<!-- prjct:crew:start - DO NOT REMOVE THIS MARKER -->",j="<!-- prjct:crew:end - DO NOT REMOVE THIS MARKER -->",T="<!-- prjct:checkpoints:start - DO NOT EDIT (managed by `prjct crew checkpoints set|reset`) -->",Z="<!-- prjct:checkpoints:end -->";function ee(e,i){let r=e.indexOf(T),n=e.indexOf(Z);if(r<0||n<0||n<r)throw new Error("reviewer template is missing the prjct:checkpoints marker pair \u2014 rebuild dist/templates.json or report a bug");if(e.indexOf(T,r+1)>=0)throw new Error("reviewer template has duplicated checkpoints start marker");let t=e.slice(0,r+T.length),s=e.slice(n);return`${t}
7
+ import{b as W}from"./chunk-4PRD4EU2.mjs";import{a as K}from"./chunk-5DZ2LTII.mjs";import{d as v,e as h}from"./chunk-FOWTB762.mjs";import"./chunk-6U3CYLY5.mjs";import{a as E}from"./chunk-ALTQ3KL4.mjs";import{d as O,e as b,f as H}from"./chunk-MXJKULJY.mjs";import"./chunk-X433BB6F.mjs";import"./chunk-EZRNQXCC.mjs";import"./chunk-B7AQHL7B.mjs";import"./chunk-L4TUXFCL.mjs";import{h as l}from"./chunk-ID2C2S33.mjs";import{b as P}from"./chunk-XSZOHNL4.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{b as F,i as q}from"./chunk-VWFVSNQT.mjs";import"./chunk-U24YKPYX.mjs";import"./chunk-D62TAZG6.mjs";import{b as C,f as J}from"./chunk-OE27RFLJ.mjs";import"./chunk-FATYLG3L.mjs";import"./chunk-2EEMQV7N.mjs";import"./chunk-KPR5TWSN.mjs";import"./chunk-623SNKDH.mjs";import"./chunk-XWLTEAGN.mjs";import"./chunk-DOJPSIMG.mjs";import{l as I,p as X}from"./chunk-HYIT7MF5.mjs";import{e as S,g as Y}from"./chunk-225DWS4D.mjs";import{a as d}from"./chunk-3TRXQAU4.mjs";J();import m from"node:fs/promises";import p from"node:path";q();Y();X();var _="<!-- prjct:crew:start - DO NOT REMOVE THIS MARKER -->",j="<!-- prjct:crew:end - DO NOT REMOVE THIS MARKER -->",T="<!-- prjct:checkpoints:start - DO NOT EDIT (managed by `prjct crew checkpoints set|reset`) -->",Z="<!-- prjct:checkpoints:end -->";function ee(e,i){let r=e.indexOf(T),n=e.indexOf(Z);if(r<0||n<0||n<r)throw new Error("reviewer template is missing the prjct:checkpoints marker pair \u2014 rebuild dist/templates.json or report a bug");if(e.indexOf(T,r+1)>=0)throw new Error("reviewer template has duplicated checkpoints start marker");let t=e.slice(0,r+T.length),s=e.slice(n);return`${t}
8
8
  ${i.trimEnd()}
9
9
  ${s}`}d(ee,"spliceCheckpoints");var N=O.map(e=>({templateKey:`crew/roles/${e.name}.md`,destRelative:`.claude/agents/${e.name}.md`})),te=Object.fromEntries(O.map(e=>[`.claude/agents/${e.name}.md`,e.role]));function re(e,i){let r=te[i];if(!r)return e;let{model:n}=F(r);return e.replace(/^model:[ \t].*$/m,`model: ${n}`)}d(re,"applyCrewModelPolicy");var ne={templateKey:"crew/CHECKPOINTS.md",destRelative:".prjct/CHECKPOINTS.md"},L="crew/leader-mode.md",R="CLAUDE.md";async function se(){let e=C(L);if(!e)throw new Error(`Missing crew template: ${L}`);return e.trim()}d(se,"readSnippet");async function ie(e){let i=C(e);if(!i)throw new Error(`Missing crew template: ${e}`);return i}d(ie,"readTemplate");async function U(e,i){await m.mkdir(p.dirname(e),{recursive:!0}),await m.writeFile(e,i,"utf-8")}d(U,"writeFileEnsureDir");function x(e){return e.includes(_)&&e.includes(j)}d(x,"snippetPresent");function oe(e,i){if(x(e)){let n=e.indexOf(_),t=e.indexOf(j)+j.length;return`${e.slice(0,n)}${i}${e.slice(t)}`}let r=e.length>0&&!e.endsWith(`
10
10
  `)?`
@@ -4,4 +4,4 @@ import { dirname as __pathDirname } from 'path';
4
4
  const require = __createRequire(import.meta.url);
5
5
  const __filename = __fileURLToPath(import.meta.url);
6
6
  const __dirname = __pathDirname(__filename);
7
- import{a as t}from"./chunk-2ZPM4Z6W.mjs";import"./chunk-BSR3XUBD.mjs";import{a as n}from"./chunk-MCY7OXED.mjs";import"./chunk-YQ6HM3YO.mjs";import"./chunk-ZK7BMUMR.mjs";import"./chunk-5UUITMRX.mjs";import"./chunk-K25HGTC3.mjs";import"./chunk-45LKWJ5D.mjs";import"./chunk-6P4GMVUZ.mjs";import"./chunk-UHXV7MDW.mjs";import"./chunk-TILUQF6L.mjs";import"./chunk-Y5SEUYET.mjs";import"./chunk-MG3YN3AI.mjs";import"./chunk-YEALP3WX.mjs";import"./chunk-QZ7T2EYR.mjs";import"./chunk-5YLI5V3Q.mjs";import"./chunk-F2FKQUYE.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-B7AQHL7B.mjs";import"./chunk-L4TUXFCL.mjs";import"./chunk-DIEPWXJJ.mjs";import"./chunk-UNNY2IWZ.mjs";import"./chunk-3USVY66O.mjs";import"./chunk-OIE3AKKO.mjs";import"./chunk-Q6C27OL7.mjs";import"./chunk-NXUIMC22.mjs";import"./chunk-WTDUJB4I.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"./chunk-D62TAZG6.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{a as o}from"./chunk-3TRXQAU4.mjs";function p(r=process.cwd(),e){return n({event:"CwdChanged",projectPath:r,build:o(async(d,i)=>{let c=d.cwd||i;return t(c)},"build")},e)}o(p,"runCwdChangedHook");export{p as runCwdChangedHook};
7
+ import{a as t}from"./chunk-7BU6SJBC.mjs";import"./chunk-BSR3XUBD.mjs";import{a as n}from"./chunk-MCY7OXED.mjs";import"./chunk-YQ6HM3YO.mjs";import"./chunk-2VXPFULA.mjs";import"./chunk-CXKDKMYE.mjs";import"./chunk-XLAGA5B7.mjs";import"./chunk-45LKWJ5D.mjs";import"./chunk-KI4OY3UQ.mjs";import"./chunk-UHXV7MDW.mjs";import"./chunk-TILUQF6L.mjs";import"./chunk-MPU3VM6Z.mjs";import"./chunk-MG3YN3AI.mjs";import"./chunk-YEALP3WX.mjs";import"./chunk-QZ7T2EYR.mjs";import"./chunk-5YLI5V3Q.mjs";import"./chunk-F2FKQUYE.mjs";import"./chunk-BUD3R6LF.mjs";import"./chunk-ZQ2XH76U.mjs";import"./chunk-B2HY22OD.mjs";import"./chunk-XLFEWZRA.mjs";import"./chunk-X433BB6F.mjs";import"./chunk-EZRNQXCC.mjs";import"./chunk-B7AQHL7B.mjs";import"./chunk-L4TUXFCL.mjs";import"./chunk-DIEPWXJJ.mjs";import"./chunk-UNNY2IWZ.mjs";import"./chunk-XSZOHNL4.mjs";import"./chunk-OIE3AKKO.mjs";import"./chunk-Q6C27OL7.mjs";import"./chunk-NXUIMC22.mjs";import"./chunk-WTDUJB4I.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"./chunk-D62TAZG6.mjs";import"./chunk-KPR5TWSN.mjs";import"./chunk-623SNKDH.mjs";import"./chunk-XWLTEAGN.mjs";import"./chunk-DOJPSIMG.mjs";import"./chunk-HYIT7MF5.mjs";import"./chunk-225DWS4D.mjs";import{a as o}from"./chunk-3TRXQAU4.mjs";function p(r=process.cwd(),e){return n({event:"CwdChanged",projectPath:r,build:o(async(d,i)=>{let c=d.cwd||i;return t(c)},"build")},e)}o(p,"runCwdChangedHook");export{p as runCwdChangedHook};
@@ -4,7 +4,7 @@ import { dirname as __pathDirname } from 'path';
4
4
  const require = __createRequire(import.meta.url);
5
5
  const __filename = __fileURLToPath(import.meta.url);
6
6
  const __dirname = __pathDirname(__filename);
7
- import{a as C,b as u,c as W,d as B,e as G}from"./chunk-INM5COWM.mjs";import{d as P}from"./chunk-QLMZW4K7.mjs";import{a as z}from"./chunk-ANVCA6LF.mjs";import{b as J}from"./chunk-WP5IU4W4.mjs";import{b as L,c as F}from"./chunk-VCYVYFWE.mjs";import{a as K}from"./chunk-QAIEAOJF.mjs";import{b as U}from"./chunk-YQ6HM3YO.mjs";import"./chunk-F7OOBAJO.mjs";import"./chunk-JT4RNQ67.mjs";import"./chunk-VCSESVZ4.mjs";import"./chunk-YJOC2JJK.mjs";import"./chunk-76YMLNLF.mjs";import"./chunk-XLFEWZRA.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{a as I,b as O,c as T,d as N,e as H,f as j,g as k,j as $}from"./chunk-GHSRH4GL.mjs";import{b as V}from"./chunk-3USVY66O.mjs";import"./chunk-OIE3AKKO.mjs";import"./chunk-7QTE6X4J.mjs";import"./chunk-4PPIE6GA.mjs";import"./chunk-Q6C27OL7.mjs";import"./chunk-NXUIMC22.mjs";import"./chunk-5EF5EOCL.mjs";import{c as S,d as p,e as _,f as M,l as A,m as y}from"./chunk-WTDUJB4I.mjs";import{g as R,i as ee}from"./chunk-DMO3ZFUG.mjs";import"./chunk-NNOX3UU4.mjs";import"./chunk-RP7F67ZT.mjs";import"./chunk-INJ5WT2D.mjs";import"./chunk-HU5ERAAV.mjs";import"./chunk-6RT2P22O.mjs";import"./chunk-ZXTJLMVZ.mjs";import{a as D}from"./chunk-CKYBGRCF.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 d}from"./chunk-3TRXQAU4.mjs";import{spawn as se}from"node:child_process";import m from"node:fs";import{createServer as ie,connect as ae}from"node:net";ee();async function X(t,e){let o=e.args.join(" ")||null,n=e.options??{},i=n.md===!0;if(L(e.command)&&!u.getByName(e.command))return{success:!1,error:F(e.command)??`'${e.command}' was removed in v2.`};if(e.command&&!u.getByName(e.command)&&!(e.args.length===0&&K(e.command)!==null)){let c=[e.command,...e.args.filter(s=>!s.startsWith("-"))].join(" ");return t.capture(c,e.cwd,{md:i,tags:n.tags?String(n.tags):void 0,force:n.force===!0})}let a=u.getByName(e.command);if(a?.optionSchema)return u.executeWithOptions(e.command,o,e.cwd,B(n,a.optionSchema));switch(e.command){case"sync":return t.sync(e.cwd,{preview:n.preview===!0||n["dry-run"]===!0,yes:n.yes===!0,json:n.json===!0,md:i,package:n.package?String(n.package):void 0,full:n.full===!0});case"spec":return G(t,e.args,n,e.cwd);case"audit-spec":return o?t.specAudit(o,e.cwd,{md:i,lenses:n.lenses?String(n.lenses):void 0}):{success:!1,error:"audit-spec requires a spec id"};case"analyze":return t.analyze(n,e.cwd);case"analysis-save-llm":return o?t.saveLlmAnalysis(o,e.cwd,{md:i}):{success:!1,error:"analysis-save-llm requires analysis text, JSON, or a file path"};case"init":return t.init({idea:o,yes:n.yes===!0,pack:n.pack?String(n.pack):void 0,persona:n.persona?String(n.persona):void 0},e.cwd);default:return u.execute(e.command,o,e.cwd)}}d(X,"executeCommand");var b=class{static{d(this,"RequestJournal")}ttlMs;maxEntries;now;entries=new Map;constructor(e={}){this.ttlMs=e.ttlMs??12e4,this.maxEntries=e.maxEntries??512,this.now=e.now??Date.now}run(e,o){let n=this.now();this.prune(n);let i=te(e),a=this.entries.get(e.id);if(a){if(a.fingerprint!==i)return Promise.resolve({id:e.id,success:!1,exitCode:1,stderr:"Duplicate daemon request id reused with different payload"});if(a.response)return Promise.resolve(v(a.response));if(a.promise)return a.promise.then(v)}let c={createdAt:n,fingerprint:i},s=o().then(l=>(c.response=v(l),c.promise=void 0,v(l))).catch(l=>{throw this.entries.delete(e.id),l});return c.promise=s,this.entries.set(e.id,c),this.enforceMaxEntries(),s}clear(){this.entries.clear()}size(){return this.entries.size}prune(e){for(let[o,n]of this.entries)e-n.createdAt>this.ttlMs&&this.entries.delete(o)}enforceMaxEntries(){for(;this.entries.size>this.maxEntries;){let e=this.entries.keys().next().value;if(!e)break;this.entries.delete(e)}}};function te(t){return x({command:t.command,args:t.args,options:t.options,cwd:t.cwd,stdin:t.stdin})}d(te,"requestFingerprint");function x(t){return Array.isArray(t)?`[${t.map(x).join(",")}]`:t&&typeof t=="object"?`{${Object.entries(t).sort(([o],[n])=>o.localeCompare(n)).map(([o,n])=>`${JSON.stringify(o)}:${x(n)}`).join(",")}}`:JSON.stringify(t)}d(x,"stableStringify");function v(t){return{...t}}d(v,"cloneResponse");var Z=new b;function ne(){let t=process.env.PRJCT_HOOK_STATE_TIMEOUT_MS,e=t?Number(t):Number.NaN;return Number.isFinite(e)&&e>0?e:500}d(ne,"hookStateTimeoutMs");var w=class extends Error{static{d(this,"HookStateLaneTimeoutError")}timeoutMs;constructor(e){super(`hook-state lane exceeded ${e}ms waiting on this cwd's chain (a prior prompt/stop hook for the same project is still running). Set PRJCT_HOOK_STATE_TIMEOUT_MS to tune this bound.`),this.name="HookStateLaneTimeoutError",this.timeoutMs=e}};function oe(t,e){return new Promise((o,n)=>{let i=setTimeout(()=>n(new w(e)),e);t.then(a=>{clearTimeout(i),o(a)},a=>{clearTimeout(i),n(a)})})}d(oe,"raceWithTimeout");var re=64,E=class{static{d(this,"RequestLanes")}commandChain=Promise.resolve();hookStateChains=new Map;activeHooks=0;hookWaiters=[];async acquireHookSlot(){if(this.activeHooks<4){this.activeHooks++;return}await new Promise(e=>this.hookWaiters.push(e)),this.activeHooks++}releaseHookSlot(){this.activeHooks--,this.hookWaiters.shift()?.()}run(e,o,n){if(e==="hook")return(async()=>{await this.acquireHookSlot();try{return await o()}finally{this.releaseHookSlot()}})();if(e==="hook-state"){let c=n??"",l=(this.hookStateChains.get(c)??Promise.resolve()).then(o,o),h=l.then(()=>{},()=>{});return this.hookStateChains.size>re&&this.hookStateChains.clear(),this.hookStateChains.set(c,h),oe(l,ne())}let i=this.commandChain.then(o,o),a=i.then(()=>{},()=>{});return this.commandChain=a,i}},Q=new E;var ce=15*1e3,de=1e3,me=3600*1e3,le=50,r={ipcServer:null,commands:null,state:null,ownVersion:null,lastDriftCheckMs:0,updateTimer:null,walCheckpointTimer:null,shuttingDown:!1};async function Ze(t){process.env.PRJCT_IN_DAEMON="1";let e=p.socket(),o=p.pid(),n=p.runDir(),i=S(e);if(m.mkdirSync(n,{recursive:!0}),m.existsSync(o)){let s=parseInt(m.readFileSync(o,"utf-8").trim(),10);k(s)&&(console.log(`Daemon already running (PID ${s})`),process.exit(0));try{m.unlinkSync(o)}catch{}}if(!i&&m.existsSync(e)){await Y(e,o)&&(console.log("Daemon already serving \u2014 yielding"),process.exit(0));try{m.unlinkSync(e)}catch{}}j();let a=I(),c=(()=>{if(!a)return null;try{return m.statSync(a).mtimeMs}catch{return null}})();if(r.ownVersion=N(),r.state={startedAt:Date.now(),commandsServed:0,lastActivity:Date.now(),idleTimeoutMs:_,idleTimer:null,entryPath:a,entryMtime:c,activeRequests:0,restartPending:!1,restartReason:null,absorbedErrors:0},ue(),r.ownVersion)try{let{isSyncCurrent:s,runSelfHeal:l}=await import("./self-heal-DFUEKNF3.mjs");s(r.ownVersion)||await l(r.ownVersion)}catch{}if(r.ownVersion){let s=r.ownVersion;D(s).catch(()=>{}),r.updateTimer=setInterval(()=>{D(s).catch(()=>{})},me),r.updateTimer.unref?.()}if(r.walCheckpointTimer=setInterval(()=>{try{R.checkpointAll()}catch{}},ce),r.walCheckpointTimer.unref?.(),r.commands=new C,r.ipcServer=ie(s=>pe(s)),r.ipcServer.listen(e,()=>{if(!i)try{m.existsSync(e)&&m.chmodSync(e,384)}catch{}try{m.writeFileSync(o,String(process.pid))}catch(s){console.error("Failed to write daemon pid file:",s.message)}console.log(`prjct daemon started (PID ${process.pid})`),console.log(` Socket: ${e}`),a&&console.log(` Watching: ${a}`),q(),P.startAll().catch(()=>{})}),r.ipcServer.on("error",s=>{let l=s.code;(async()=>{let h=await Y(e,o),g=$({errorCode:l,errorMessage:s.message,peerHealthy:h});console.error(g.exitCode===0?`Daemon listen race lost (${g.reason}) \u2014 peer is healthy`:`Daemon socket error: ${s.message}`),process.exit(g.exitCode)})()}),process.on("SIGTERM",()=>{f(0)}),process.on("SIGINT",()=>{f(0)}),process.on("SIGHUP",()=>{r.commands=new C,W(),u.resetLazyResolutions(),console.log("Daemon reloaded (SIGHUP)")}),!t.foreground)try{process.stdin?.unref?.()}catch{}}d(Ze,"startDaemon");async function Y(t,e){if(!S(t)&&!m.existsSync(t)){if(m.existsSync(e)){let n=parseInt(m.readFileSync(e,"utf-8").trim(),10);return!Number.isNaN(n)&&k(n)}return!1}return await new Promise(n=>{let i=ae(t),a=new AbortController,c=d(l=>{if(!a.signal.aborted){a.abort();try{i.destroy()}catch{}n(l)}},"finish"),s=setTimeout(()=>c(!1),400);i.on("connect",()=>{i.write(y({id:"startup-peer-check",command:"__ping",args:[],options:{},cwd:process.cwd()}))}),i.on("data",l=>{try{let h=l.toString().split(`
7
+ import{a as C,b as u,c as W,d as B,e as G}from"./chunk-MXJF3FA7.mjs";import{d as P}from"./chunk-PQTR6XVW.mjs";import{a as z}from"./chunk-ANVCA6LF.mjs";import{b as J}from"./chunk-TOORPP6K.mjs";import{b as L,c as F}from"./chunk-VCYVYFWE.mjs";import{a as K}from"./chunk-QAIEAOJF.mjs";import{b as U}from"./chunk-YQ6HM3YO.mjs";import"./chunk-F7OOBAJO.mjs";import"./chunk-JT4RNQ67.mjs";import"./chunk-VCSESVZ4.mjs";import"./chunk-YJOC2JJK.mjs";import"./chunk-76YMLNLF.mjs";import"./chunk-XLFEWZRA.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{a as I,b as O,c as T,d as N,e as H,f as j,g as k,j as $}from"./chunk-GHSRH4GL.mjs";import{b as V}from"./chunk-XSZOHNL4.mjs";import"./chunk-OIE3AKKO.mjs";import"./chunk-7QTE6X4J.mjs";import"./chunk-4PPIE6GA.mjs";import"./chunk-Q6C27OL7.mjs";import"./chunk-NXUIMC22.mjs";import"./chunk-5EF5EOCL.mjs";import{c as S,d as p,e as _,f as M,l as A,m as y}from"./chunk-WTDUJB4I.mjs";import{g as R,i as ee}from"./chunk-DMO3ZFUG.mjs";import"./chunk-NNOX3UU4.mjs";import"./chunk-RP7F67ZT.mjs";import"./chunk-INJ5WT2D.mjs";import"./chunk-HU5ERAAV.mjs";import"./chunk-6RT2P22O.mjs";import"./chunk-ZXTJLMVZ.mjs";import{a as D}from"./chunk-CKYBGRCF.mjs";import"./chunk-VWFVSNQT.mjs";import"./chunk-U24YKPYX.mjs";import"./chunk-D62TAZG6.mjs";import"./chunk-623SNKDH.mjs";import"./chunk-XWLTEAGN.mjs";import"./chunk-DOJPSIMG.mjs";import"./chunk-HYIT7MF5.mjs";import"./chunk-225DWS4D.mjs";import{a as d}from"./chunk-3TRXQAU4.mjs";import{spawn as se}from"node:child_process";import m from"node:fs";import{createServer as ie,connect as ae}from"node:net";ee();async function X(t,e){let o=e.args.join(" ")||null,n=e.options??{},i=n.md===!0;if(L(e.command)&&!u.getByName(e.command))return{success:!1,error:F(e.command)??`'${e.command}' was removed in v2.`};if(e.command&&!u.getByName(e.command)&&!(e.args.length===0&&K(e.command)!==null)){let c=[e.command,...e.args.filter(s=>!s.startsWith("-"))].join(" ");return t.capture(c,e.cwd,{md:i,tags:n.tags?String(n.tags):void 0,force:n.force===!0})}let a=u.getByName(e.command);if(a?.optionSchema)return u.executeWithOptions(e.command,o,e.cwd,B(n,a.optionSchema));switch(e.command){case"sync":return t.sync(e.cwd,{preview:n.preview===!0||n["dry-run"]===!0,yes:n.yes===!0,json:n.json===!0,md:i,package:n.package?String(n.package):void 0,full:n.full===!0});case"spec":return G(t,e.args,n,e.cwd);case"audit-spec":return o?t.specAudit(o,e.cwd,{md:i,lenses:n.lenses?String(n.lenses):void 0}):{success:!1,error:"audit-spec requires a spec id"};case"analyze":return t.analyze(n,e.cwd);case"analysis-save-llm":return o?t.saveLlmAnalysis(o,e.cwd,{md:i}):{success:!1,error:"analysis-save-llm requires analysis text, JSON, or a file path"};case"init":return t.init({idea:o,yes:n.yes===!0,pack:n.pack?String(n.pack):void 0,persona:n.persona?String(n.persona):void 0},e.cwd);default:return u.execute(e.command,o,e.cwd)}}d(X,"executeCommand");var b=class{static{d(this,"RequestJournal")}ttlMs;maxEntries;now;entries=new Map;constructor(e={}){this.ttlMs=e.ttlMs??12e4,this.maxEntries=e.maxEntries??512,this.now=e.now??Date.now}run(e,o){let n=this.now();this.prune(n);let i=te(e),a=this.entries.get(e.id);if(a){if(a.fingerprint!==i)return Promise.resolve({id:e.id,success:!1,exitCode:1,stderr:"Duplicate daemon request id reused with different payload"});if(a.response)return Promise.resolve(v(a.response));if(a.promise)return a.promise.then(v)}let c={createdAt:n,fingerprint:i},s=o().then(l=>(c.response=v(l),c.promise=void 0,v(l))).catch(l=>{throw this.entries.delete(e.id),l});return c.promise=s,this.entries.set(e.id,c),this.enforceMaxEntries(),s}clear(){this.entries.clear()}size(){return this.entries.size}prune(e){for(let[o,n]of this.entries)e-n.createdAt>this.ttlMs&&this.entries.delete(o)}enforceMaxEntries(){for(;this.entries.size>this.maxEntries;){let e=this.entries.keys().next().value;if(!e)break;this.entries.delete(e)}}};function te(t){return x({command:t.command,args:t.args,options:t.options,cwd:t.cwd,stdin:t.stdin})}d(te,"requestFingerprint");function x(t){return Array.isArray(t)?`[${t.map(x).join(",")}]`:t&&typeof t=="object"?`{${Object.entries(t).sort(([o],[n])=>o.localeCompare(n)).map(([o,n])=>`${JSON.stringify(o)}:${x(n)}`).join(",")}}`:JSON.stringify(t)}d(x,"stableStringify");function v(t){return{...t}}d(v,"cloneResponse");var Z=new b;function ne(){let t=process.env.PRJCT_HOOK_STATE_TIMEOUT_MS,e=t?Number(t):Number.NaN;return Number.isFinite(e)&&e>0?e:500}d(ne,"hookStateTimeoutMs");var w=class extends Error{static{d(this,"HookStateLaneTimeoutError")}timeoutMs;constructor(e){super(`hook-state lane exceeded ${e}ms waiting on this cwd's chain (a prior prompt/stop hook for the same project is still running). Set PRJCT_HOOK_STATE_TIMEOUT_MS to tune this bound.`),this.name="HookStateLaneTimeoutError",this.timeoutMs=e}};function oe(t,e){return new Promise((o,n)=>{let i=setTimeout(()=>n(new w(e)),e);t.then(a=>{clearTimeout(i),o(a)},a=>{clearTimeout(i),n(a)})})}d(oe,"raceWithTimeout");var re=64,E=class{static{d(this,"RequestLanes")}commandChain=Promise.resolve();hookStateChains=new Map;activeHooks=0;hookWaiters=[];async acquireHookSlot(){if(this.activeHooks<4){this.activeHooks++;return}await new Promise(e=>this.hookWaiters.push(e)),this.activeHooks++}releaseHookSlot(){this.activeHooks--,this.hookWaiters.shift()?.()}run(e,o,n){if(e==="hook")return(async()=>{await this.acquireHookSlot();try{return await o()}finally{this.releaseHookSlot()}})();if(e==="hook-state"){let c=n??"",l=(this.hookStateChains.get(c)??Promise.resolve()).then(o,o),h=l.then(()=>{},()=>{});return this.hookStateChains.size>re&&this.hookStateChains.clear(),this.hookStateChains.set(c,h),oe(l,ne())}let i=this.commandChain.then(o,o),a=i.then(()=>{},()=>{});return this.commandChain=a,i}},Q=new E;var ce=15*1e3,de=1e3,me=3600*1e3,le=50,r={ipcServer:null,commands:null,state:null,ownVersion:null,lastDriftCheckMs:0,updateTimer:null,walCheckpointTimer:null,shuttingDown:!1};async function Ze(t){process.env.PRJCT_IN_DAEMON="1";let e=p.socket(),o=p.pid(),n=p.runDir(),i=S(e);if(m.mkdirSync(n,{recursive:!0}),m.existsSync(o)){let s=parseInt(m.readFileSync(o,"utf-8").trim(),10);k(s)&&(console.log(`Daemon already running (PID ${s})`),process.exit(0));try{m.unlinkSync(o)}catch{}}if(!i&&m.existsSync(e)){await Y(e,o)&&(console.log("Daemon already serving \u2014 yielding"),process.exit(0));try{m.unlinkSync(e)}catch{}}j();let a=I(),c=(()=>{if(!a)return null;try{return m.statSync(a).mtimeMs}catch{return null}})();if(r.ownVersion=N(),r.state={startedAt:Date.now(),commandsServed:0,lastActivity:Date.now(),idleTimeoutMs:_,idleTimer:null,entryPath:a,entryMtime:c,activeRequests:0,restartPending:!1,restartReason:null,absorbedErrors:0},ue(),r.ownVersion)try{let{isSyncCurrent:s,runSelfHeal:l}=await import("./self-heal-R5FBXEVQ.mjs");s(r.ownVersion)||await l(r.ownVersion)}catch{}if(r.ownVersion){let s=r.ownVersion;D(s).catch(()=>{}),r.updateTimer=setInterval(()=>{D(s).catch(()=>{})},me),r.updateTimer.unref?.()}if(r.walCheckpointTimer=setInterval(()=>{try{R.checkpointAll()}catch{}},ce),r.walCheckpointTimer.unref?.(),r.commands=new C,r.ipcServer=ie(s=>pe(s)),r.ipcServer.listen(e,()=>{if(!i)try{m.existsSync(e)&&m.chmodSync(e,384)}catch{}try{m.writeFileSync(o,String(process.pid))}catch(s){console.error("Failed to write daemon pid file:",s.message)}console.log(`prjct daemon started (PID ${process.pid})`),console.log(` Socket: ${e}`),a&&console.log(` Watching: ${a}`),q(),P.startAll().catch(()=>{})}),r.ipcServer.on("error",s=>{let l=s.code;(async()=>{let h=await Y(e,o),g=$({errorCode:l,errorMessage:s.message,peerHealthy:h});console.error(g.exitCode===0?`Daemon listen race lost (${g.reason}) \u2014 peer is healthy`:`Daemon socket error: ${s.message}`),process.exit(g.exitCode)})()}),process.on("SIGTERM",()=>{f(0)}),process.on("SIGINT",()=>{f(0)}),process.on("SIGHUP",()=>{r.commands=new C,W(),u.resetLazyResolutions(),console.log("Daemon reloaded (SIGHUP)")}),!t.foreground)try{process.stdin?.unref?.()}catch{}}d(Ze,"startDaemon");async function Y(t,e){if(!S(t)&&!m.existsSync(t)){if(m.existsSync(e)){let n=parseInt(m.readFileSync(e,"utf-8").trim(),10);return!Number.isNaN(n)&&k(n)}return!1}return await new Promise(n=>{let i=ae(t),a=new AbortController,c=d(l=>{if(!a.signal.aborted){a.abort();try{i.destroy()}catch{}n(l)}},"finish"),s=setTimeout(()=>c(!1),400);i.on("connect",()=>{i.write(y({id:"startup-peer-check",command:"__ping",args:[],options:{},cwd:process.cwd()}))}),i.on("data",l=>{try{let h=l.toString().split(`
8
8
  `)[0],g=JSON.parse(h);clearTimeout(s),c(g.success===!0)}catch{clearTimeout(s),c(!1)}}),i.on("error",()=>{clearTimeout(s),c(!1)})})}d(Y,"peerDaemonHealthy");function ue(){process.on("unhandledRejection",t=>{let e=r.state;e&&(e.absorbedErrors++,console.error(`Daemon absorbed unhandledRejection (${e.absorbedErrors}):`,t instanceof Error?t.message:String(t)),e.absorbedErrors>=le&&(console.error("Daemon absorbed-error cap reached \u2014 shutting down for clean respawn"),f(1,{respawn:!0})))}),process.on("uncaughtException",t=>{let e=r.state;if(!e){console.error("Daemon uncaughtException before init:",t.message),process.exit(1);return}e.absorbedErrors++,console.error(`Daemon absorbed uncaughtException (${e.absorbedErrors}):`,t.message),f(1,{respawn:!0})})}d(ue,"installCrashHandlers");function pe(t){let e=[];t.on("data",async o=>{e.push(o.toString());let n=e.join("");if(n.length>M){let c={id:"unknown",success:!1,exitCode:1,stderr:"Request too large"};t.write(y(c)),t.destroy(),e.length=0;return}let i=n.split(`
9
9
  `),a=i.pop()??"";e.splice(0,e.length,a);for(let c of i)if(c.trim())try{let s=JSON.parse(c),l=await he(s);t.write(y(l))}catch(s){let l={id:"unknown",success:!1,exitCode:1,stderr:`Protocol error: ${s.message}`};t.write(y(l))}}),t.on("error",()=>{})}d(pe,"handleConnection");function fe(t){let e=r.state;if(!e||e.restartPending)return;let o=T(e.entryPath,e.entryMtime),n=O({codeStale:o,command:t,ownVersion:r.ownVersion,now:Date.now(),lastDriftCheckMs:r.lastDriftCheckMs,driftMinIntervalMs:de,checkDrift:H});r.lastDriftCheckMs=n.lastDriftCheckMs,n.restart&&(e.restartPending=!0,e.restartReason=o?"code":"drift",console.log(o?"Build change detected \u2014 daemon will restart; request runs on fresh code.":`Version drift detected \u2014 daemon v${r.ownVersion} is stale; request runs on fresh code.`))}d(fe,"markStaleIfNeeded");async function he(t){let e=r.state;return!e||!r.commands?{id:t.id,success:!1,exitCode:1,stderr:"Daemon not initialized"}:r.shuttingDown&&t.command!=="daemon"&&t.command!=="__ping"?{id:t.id,success:!1,exitCode:1,retry:!0,stderr:"daemon is shutting down \u2014 running directly"}:(fe(t.command),e.restartPending&&t.command!=="daemon"&&t.command!=="__ping"?(e.activeRequests===0&&(console.log("Daemon shutting down for code reload..."),setImmediate(()=>{f(0,{respawn:r.state?.restartReason==="code"})})),{id:t.id,success:!1,exitCode:1,retry:!0,stderr:"daemon code is stale \u2014 running directly"}):Z.run(t,async()=>{e.activeRequests++;try{let o=t.command!=="hook"?"command":t.args[0]==="prompt"||t.args[0]==="stop"?"hook-state":"hook";try{return await Q.run(o,()=>ge(t),t.cwd)}catch(n){if(n instanceof w)return{id:t.id,success:!1,exitCode:1,retry:!0,stderr:n.message};throw n}}finally{e.activeRequests--,e.restartPending&&e.activeRequests===0&&(console.log("Daemon shutting down for code reload..."),setImmediate(()=>{f(0,{respawn:r.state?.restartReason==="code"})}))}}))}d(he,"handleRequest");async function ge(t){let e=r.state,o=r.commands;if(!e||!o)return{id:t.id,success:!1,exitCode:1,stderr:"Daemon not initialized"};if(q(),e.commandsServed++,e.lastActivity=Date.now(),t.command==="daemon")return we(t);if(t.command==="hook")return ye(t);if(t.command==="__ping")return{id:t.id,success:!0,exitCode:0,result:{pong:!0,pid:process.pid}};try{let n=[],i=[],a=console.log,c=console.error;console.log=(...s)=>n.push(s.map(String).join(" ")),console.error=(...s)=>i.push(s.map(String).join(" "));try{let s=await X(o,t);return{id:t.id,success:s.success,exitCode:s.success?0:1,stdout:n.join(`
10
10
  `)||s.message||void 0,stderr:i.join(`
@@ -4,4 +4,4 @@ import { dirname as __pathDirname } from 'path';
4
4
  const require = __createRequire(import.meta.url);
5
5
  const __filename = __fileURLToPath(import.meta.url);
6
6
  const __dirname = __pathDirname(__filename);
7
- import{a,b}from"./chunk-K25HGTC3.mjs";import"./chunk-5YLI5V3Q.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-B7AQHL7B.mjs";import"./chunk-L4TUXFCL.mjs";import"./chunk-DIEPWXJJ.mjs";import"./chunk-UNNY2IWZ.mjs";import"./chunk-3USVY66O.mjs";import"./chunk-OIE3AKKO.mjs";import"./chunk-Q6C27OL7.mjs";import"./chunk-NXUIMC22.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"./chunk-D62TAZG6.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 buildDeveloperProfile,a as extractDeveloperRules};
7
+ import{a,b}from"./chunk-XLAGA5B7.mjs";import"./chunk-5YLI5V3Q.mjs";import"./chunk-BUD3R6LF.mjs";import"./chunk-ZQ2XH76U.mjs";import"./chunk-B2HY22OD.mjs";import"./chunk-XLFEWZRA.mjs";import"./chunk-X433BB6F.mjs";import"./chunk-EZRNQXCC.mjs";import"./chunk-B7AQHL7B.mjs";import"./chunk-L4TUXFCL.mjs";import"./chunk-DIEPWXJJ.mjs";import"./chunk-UNNY2IWZ.mjs";import"./chunk-XSZOHNL4.mjs";import"./chunk-OIE3AKKO.mjs";import"./chunk-Q6C27OL7.mjs";import"./chunk-NXUIMC22.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"./chunk-D62TAZG6.mjs";import"./chunk-KPR5TWSN.mjs";import"./chunk-623SNKDH.mjs";import"./chunk-XWLTEAGN.mjs";import"./chunk-DOJPSIMG.mjs";import"./chunk-HYIT7MF5.mjs";import"./chunk-225DWS4D.mjs";import"./chunk-3TRXQAU4.mjs";export{b as buildDeveloperProfile,a as extractDeveloperRules};