prjct-cli 3.96.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.
- package/CHANGELOG.md +10 -0
- package/bin/prjct.cjs +14 -0
- package/dist/bin/core-chunks/agent-3N2MSSGT.mjs +31 -0
- package/dist/bin/core-chunks/agent-codenames-7N4DU62I.mjs +7 -0
- package/dist/bin/core-chunks/agent-identity-4KFRR5OU.mjs +7 -0
- package/dist/bin/core-chunks/agent-runtime-registry-3RMVBEV2.mjs +7 -0
- package/dist/bin/core-chunks/agent-switch-4SE6GF7R.mjs +7 -0
- package/dist/bin/core-chunks/agents-ZPNNCOH7.mjs +10 -0
- package/dist/bin/core-chunks/ai-provider-RVXK7D7R.mjs +7 -0
- package/dist/bin/core-chunks/analysis-OARMM4AH.mjs +41 -0
- package/dist/bin/core-chunks/auth-config-KWLVKHCY.mjs +7 -0
- package/dist/bin/core-chunks/auto-flush-XA3V7BJ6.mjs +7 -0
- package/dist/bin/core-chunks/auto-updater-PKYQRBGQ.mjs +8 -0
- package/dist/bin/core-chunks/bin-commands-FYID6EYI.mjs +21 -0
- package/dist/bin/core-chunks/capture-3JJPWIF3.mjs +7 -0
- package/dist/bin/core-chunks/capture-gate-G5LGVDME.mjs +7 -0
- package/dist/bin/core-chunks/ceremonies-B565WDCA.mjs +19 -0
- package/dist/bin/core-chunks/changelog-LPJ4GKB6.mjs +10 -0
- package/dist/bin/core-chunks/chunk-225DWS4D.mjs +7 -0
- package/dist/bin/core-chunks/chunk-24EN5Y62.mjs +48 -0
- package/dist/bin/core-chunks/chunk-2EEMQV7N.mjs +9 -0
- package/dist/bin/core-chunks/chunk-2FRLIQKX.mjs +10 -0
- package/dist/bin/core-chunks/chunk-2I5PUQWY.mjs +7 -0
- package/dist/bin/core-chunks/chunk-2JJM3YMW.mjs +44 -0
- package/dist/bin/core-chunks/chunk-2NI4EEK2.mjs +8 -0
- package/dist/bin/core-chunks/chunk-2TJRTFIS.mjs +9 -0
- package/dist/bin/core-chunks/chunk-2VRS5CUH.mjs +9 -0
- package/dist/bin/core-chunks/chunk-2VXPFULA.mjs +7 -0
- package/dist/bin/core-chunks/chunk-3OWKIRK6.mjs +7 -0
- package/dist/bin/core-chunks/chunk-3TRXQAU4.mjs +7 -0
- package/dist/bin/core-chunks/chunk-45LKWJ5D.mjs +7 -0
- package/dist/bin/core-chunks/chunk-4IE7LRH3.mjs +7 -0
- package/dist/bin/core-chunks/chunk-4MR5XSLO.mjs +8 -0
- package/dist/bin/core-chunks/chunk-4PPIE6GA.mjs +102 -0
- package/dist/bin/core-chunks/chunk-4PRD4EU2.mjs +7 -0
- package/dist/bin/core-chunks/chunk-4T7NGLNQ.mjs +16 -0
- package/dist/bin/core-chunks/chunk-5DZ2LTII.mjs +52 -0
- package/dist/bin/core-chunks/chunk-5EF5EOCL.mjs +7 -0
- package/dist/bin/core-chunks/chunk-5OWPZWEU.mjs +13 -0
- package/dist/bin/core-chunks/chunk-5TGZSK4C.mjs +10 -0
- package/dist/bin/core-chunks/chunk-5YLI5V3Q.mjs +8 -0
- package/dist/bin/core-chunks/chunk-5ZBACKED.mjs +14 -0
- package/dist/bin/core-chunks/chunk-623SNKDH.mjs +7 -0
- package/dist/bin/core-chunks/chunk-6FUCOGOW.mjs +7 -0
- package/dist/bin/core-chunks/chunk-6KNMT46X.mjs +18 -0
- package/dist/bin/core-chunks/chunk-6OYLZ4NM.mjs +10 -0
- package/dist/bin/core-chunks/chunk-6POAOY5C.mjs +19 -0
- package/dist/bin/core-chunks/chunk-6RT2P22O.mjs +7 -0
- package/dist/bin/core-chunks/chunk-6U3CYLY5.mjs +7 -0
- package/dist/bin/core-chunks/chunk-6U3MV7KZ.mjs +15 -0
- package/dist/bin/core-chunks/chunk-6XTLPAPZ.mjs +15 -0
- package/dist/bin/core-chunks/chunk-76YMLNLF.mjs +7 -0
- package/dist/bin/core-chunks/chunk-7BU6SJBC.mjs +17 -0
- package/dist/bin/core-chunks/chunk-7QTE6X4J.mjs +7 -0
- package/dist/bin/core-chunks/chunk-7ZHWJSW5.mjs +8 -0
- package/dist/bin/core-chunks/chunk-ACIOJQSI.mjs +14 -0
- package/dist/bin/core-chunks/chunk-AJXELVNH.mjs +7 -0
- package/dist/bin/core-chunks/chunk-ALTQ3KL4.mjs +7 -0
- package/dist/bin/core-chunks/chunk-ANBDOI53.mjs +8 -0
- package/dist/bin/core-chunks/chunk-ANVCA6LF.mjs +7 -0
- package/dist/bin/core-chunks/chunk-AS3LWTQ4.mjs +16 -0
- package/dist/bin/core-chunks/chunk-B2HY22OD.mjs +50 -0
- package/dist/bin/core-chunks/chunk-B7AQHL7B.mjs +7 -0
- package/dist/bin/core-chunks/chunk-BSR3XUBD.mjs +24 -0
- package/dist/bin/core-chunks/chunk-BTSHD3XJ.mjs +9 -0
- package/dist/bin/core-chunks/chunk-BUD3R6LF.mjs +9 -0
- package/dist/bin/core-chunks/chunk-C35JQUWD.mjs +8 -0
- package/dist/bin/core-chunks/chunk-C7YBUD4K.mjs +10 -0
- package/dist/bin/core-chunks/chunk-CA2VFWFP.mjs +21 -0
- package/dist/bin/core-chunks/chunk-CB3CNJTL.mjs +10 -0
- package/dist/bin/core-chunks/chunk-CFD6CW7T.mjs +46 -0
- package/dist/bin/core-chunks/chunk-CKYBGRCF.mjs +8 -0
- package/dist/bin/core-chunks/chunk-CUIB6CTG.mjs +20 -0
- package/dist/bin/core-chunks/chunk-CVKMV22J.mjs +17 -0
- package/dist/bin/core-chunks/chunk-CWLGRKA7.mjs +6 -0
- package/dist/bin/core-chunks/chunk-CXKDKMYE.mjs +9 -0
- package/dist/bin/core-chunks/chunk-CXNVDJNN.mjs +7 -0
- package/dist/bin/core-chunks/chunk-D62TAZG6.mjs +9 -0
- package/dist/bin/core-chunks/chunk-DEYAQEF5.mjs +7 -0
- package/dist/bin/core-chunks/chunk-DIEPWXJJ.mjs +7 -0
- package/dist/bin/core-chunks/chunk-DMO3ZFUG.mjs +1259 -0
- package/dist/bin/core-chunks/chunk-DOJPSIMG.mjs +7 -0
- package/dist/bin/core-chunks/chunk-DTMZBK4E.mjs +7 -0
- package/dist/bin/core-chunks/chunk-DW4QMD6J.mjs +10 -0
- package/dist/bin/core-chunks/chunk-DZDEBDAB.mjs +10 -0
- package/dist/bin/core-chunks/chunk-DZVOFEM5.mjs +7 -0
- package/dist/bin/core-chunks/chunk-E5QQDYBR.mjs +7 -0
- package/dist/bin/core-chunks/chunk-E73HSXCX.mjs +7 -0
- package/dist/bin/core-chunks/chunk-EFSPBB4S.mjs +8 -0
- package/dist/bin/core-chunks/chunk-EHVU2SMR.mjs +34 -0
- package/dist/bin/core-chunks/chunk-ESB4ALH2.mjs +7 -0
- package/dist/bin/core-chunks/chunk-EZRNQXCC.mjs +7 -0
- package/dist/bin/core-chunks/chunk-F2FKQUYE.mjs +19 -0
- package/dist/bin/core-chunks/chunk-F7OOBAJO.mjs +30 -0
- package/dist/bin/core-chunks/chunk-FATYLG3L.mjs +14 -0
- package/dist/bin/core-chunks/chunk-FOUBHU4X.mjs +7 -0
- package/dist/bin/core-chunks/chunk-FOWTB762.mjs +7 -0
- package/dist/bin/core-chunks/chunk-GGGDYL4P.mjs +7 -0
- package/dist/bin/core-chunks/chunk-GHSRH4GL.mjs +8 -0
- package/dist/bin/core-chunks/chunk-GSNQKBHZ.mjs +11 -0
- package/dist/bin/core-chunks/chunk-GTG67Z45.mjs +11 -0
- package/dist/bin/core-chunks/chunk-H2KNJUPN.mjs +23 -0
- package/dist/bin/core-chunks/chunk-HA7Y76GF.mjs +7 -0
- package/dist/bin/core-chunks/chunk-HCPQZRR3.mjs +7 -0
- package/dist/bin/core-chunks/chunk-HPCSSJXH.mjs +7 -0
- package/dist/bin/core-chunks/chunk-HU5ERAAV.mjs +8 -0
- package/dist/bin/core-chunks/chunk-HVXWQ2XZ.mjs +7 -0
- package/dist/bin/core-chunks/chunk-HYIT7MF5.mjs +8 -0
- package/dist/bin/core-chunks/chunk-HYMJVHAX.mjs +13 -0
- package/dist/bin/core-chunks/chunk-ID2C2S33.mjs +18 -0
- package/dist/bin/core-chunks/chunk-ID5KE74L.mjs +7 -0
- package/dist/bin/core-chunks/chunk-IJNKHQIS.mjs +10 -0
- package/dist/bin/core-chunks/chunk-INJ5WT2D.mjs +7 -0
- package/dist/bin/core-chunks/chunk-IOFCSTGM.mjs +7 -0
- package/dist/bin/core-chunks/chunk-J6Y7IVFQ.mjs +7 -0
- package/dist/bin/core-chunks/chunk-JCWA7NLM.mjs +7 -0
- package/dist/bin/core-chunks/chunk-JGGQSMZC.mjs +8 -0
- package/dist/bin/core-chunks/chunk-JPMUJY42.mjs +7 -0
- package/dist/bin/core-chunks/chunk-JT4RNQ67.mjs +15 -0
- package/dist/bin/core-chunks/chunk-KI4OY3UQ.mjs +18 -0
- package/dist/bin/core-chunks/chunk-KPR5TWSN.mjs +7 -0
- package/dist/bin/core-chunks/chunk-KUQLXY2P.mjs +11 -0
- package/dist/bin/core-chunks/chunk-L3DJN3XD.mjs +12 -0
- package/dist/bin/core-chunks/chunk-L4TUXFCL.mjs +7 -0
- package/dist/bin/core-chunks/chunk-L5LFLI4R.mjs +7 -0
- package/dist/bin/core-chunks/chunk-LFOQ7FCR.mjs +10 -0
- package/dist/bin/core-chunks/chunk-LGX2GM45.mjs +7 -0
- package/dist/bin/core-chunks/chunk-LTKUTRRL.mjs +7 -0
- package/dist/bin/core-chunks/chunk-LZILSE5H.mjs +8 -0
- package/dist/bin/core-chunks/chunk-MCY7OXED.mjs +10 -0
- package/dist/bin/core-chunks/chunk-MG3YN3AI.mjs +7 -0
- package/dist/bin/core-chunks/chunk-MPU3VM6Z.mjs +7 -0
- package/dist/bin/core-chunks/chunk-MR5XXHRK.mjs +8 -0
- package/dist/bin/core-chunks/chunk-MXJF3FA7.mjs +7 -0
- package/dist/bin/core-chunks/chunk-MXJKULJY.mjs +9 -0
- package/dist/bin/core-chunks/chunk-NINFE7GS.mjs +9 -0
- package/dist/bin/core-chunks/chunk-NNILF7R3.mjs +7 -0
- package/dist/bin/core-chunks/chunk-NNOX3UU4.mjs +7 -0
- package/dist/bin/core-chunks/chunk-NOHSLOLL.mjs +7 -0
- package/dist/bin/core-chunks/chunk-NXUIMC22.mjs +13 -0
- package/dist/bin/core-chunks/chunk-NZKUCQZK.mjs +8 -0
- package/dist/bin/core-chunks/chunk-O5N6XYPU.mjs +8 -0
- package/dist/bin/core-chunks/chunk-O5VCBMEK.mjs +25 -0
- package/dist/bin/core-chunks/chunk-OE27RFLJ.mjs +8 -0
- package/dist/bin/core-chunks/chunk-OGM34Z6W.mjs +8 -0
- package/dist/bin/core-chunks/chunk-OIE3AKKO.mjs +7 -0
- package/dist/bin/core-chunks/chunk-OXKGN3HG.mjs +7 -0
- package/dist/bin/core-chunks/chunk-P2KU4FFA.mjs +11 -0
- package/dist/bin/core-chunks/chunk-PIA26GWG.mjs +7 -0
- package/dist/bin/core-chunks/chunk-PPSVWUXC.mjs +15 -0
- package/dist/bin/core-chunks/chunk-PQTR6XVW.mjs +7 -0
- package/dist/bin/core-chunks/chunk-PWL3KS7Y.mjs +7 -0
- package/dist/bin/core-chunks/chunk-Q3LUL6LL.mjs +7 -0
- package/dist/bin/core-chunks/chunk-Q6C27OL7.mjs +7 -0
- package/dist/bin/core-chunks/chunk-Q7GJIU6D.mjs +8 -0
- package/dist/bin/core-chunks/chunk-QAIEAOJF.mjs +7 -0
- package/dist/bin/core-chunks/chunk-QWRPJARA.mjs +14 -0
- package/dist/bin/core-chunks/chunk-QZ7T2EYR.mjs +25 -0
- package/dist/bin/core-chunks/chunk-RACISWUV.mjs +10 -0
- package/dist/bin/core-chunks/chunk-RCIWCKL7.mjs +9 -0
- package/dist/bin/core-chunks/chunk-ROOCBUKH.mjs +8 -0
- package/dist/bin/core-chunks/chunk-RP7F67ZT.mjs +7 -0
- package/dist/bin/core-chunks/chunk-RXZJB43D.mjs +7 -0
- package/dist/bin/core-chunks/chunk-S6FBPXQL.mjs +9 -0
- package/dist/bin/core-chunks/chunk-SLYLGDX7.mjs +8 -0
- package/dist/bin/core-chunks/chunk-SO3ZPNWT.mjs +7 -0
- package/dist/bin/core-chunks/chunk-SRJEX6XF.mjs +12 -0
- package/dist/bin/core-chunks/chunk-SROBBOJB.mjs +11 -0
- package/dist/bin/core-chunks/chunk-STFUT7R7.mjs +28 -0
- package/dist/bin/core-chunks/chunk-SUXIKMTS.mjs +30 -0
- package/dist/bin/core-chunks/chunk-TDTPDVUM.mjs +8 -0
- package/dist/bin/core-chunks/chunk-TIBYHZFA.mjs +8 -0
- package/dist/bin/core-chunks/chunk-TILUQF6L.mjs +8 -0
- package/dist/bin/core-chunks/chunk-TOORPP6K.mjs +7 -0
- package/dist/bin/core-chunks/chunk-U24YKPYX.mjs +7 -0
- package/dist/bin/core-chunks/chunk-U55OPVYR.mjs +9 -0
- package/dist/bin/core-chunks/chunk-UAYTDSYG.mjs +64 -0
- package/dist/bin/core-chunks/chunk-UHXV7MDW.mjs +12 -0
- package/dist/bin/core-chunks/chunk-UNIBFM6J.mjs +13 -0
- package/dist/bin/core-chunks/chunk-UNNY2IWZ.mjs +9 -0
- package/dist/bin/core-chunks/chunk-UX2ORID4.mjs +9 -0
- package/dist/bin/core-chunks/chunk-UYMZ3NAF.mjs +8 -0
- package/dist/bin/core-chunks/chunk-V6L5PLD7.mjs +18 -0
- package/dist/bin/core-chunks/chunk-V7R3L54M.mjs +7 -0
- package/dist/bin/core-chunks/chunk-V7VA4EQX.mjs +7 -0
- package/dist/bin/core-chunks/chunk-VCSESVZ4.mjs +9 -0
- package/dist/bin/core-chunks/chunk-VCYVYFWE.mjs +9 -0
- package/dist/bin/core-chunks/chunk-VJCTTFKP.mjs +8 -0
- package/dist/bin/core-chunks/chunk-VRFYDYQY.mjs +7 -0
- package/dist/bin/core-chunks/chunk-VWFVSNQT.mjs +7 -0
- package/dist/bin/core-chunks/chunk-W23JLJJZ.mjs +109 -0
- package/dist/bin/core-chunks/chunk-WCTVZQBG.mjs +8 -0
- package/dist/bin/core-chunks/chunk-WTDUJB4I.mjs +8 -0
- package/dist/bin/core-chunks/chunk-WZ6W5ZQ5.mjs +7 -0
- package/dist/bin/core-chunks/chunk-X433BB6F.mjs +7 -0
- package/dist/bin/core-chunks/chunk-XBR63NJA.mjs +7 -0
- package/dist/bin/core-chunks/chunk-XC6YAP36.mjs +7 -0
- package/dist/bin/core-chunks/chunk-XJTEPHLC.mjs +7 -0
- package/dist/bin/core-chunks/chunk-XLAGA5B7.mjs +10 -0
- package/dist/bin/core-chunks/chunk-XLFEWZRA.mjs +7 -0
- package/dist/bin/core-chunks/chunk-XSZOHNL4.mjs +7 -0
- package/dist/bin/core-chunks/chunk-XWLTEAGN.mjs +7 -0
- package/dist/bin/core-chunks/chunk-Y7XOKG4O.mjs +7 -0
- package/dist/bin/core-chunks/chunk-YEALP3WX.mjs +7 -0
- package/dist/bin/core-chunks/chunk-YJOC2JJK.mjs +12 -0
- package/dist/bin/core-chunks/chunk-YLYAYRSJ.mjs +8 -0
- package/dist/bin/core-chunks/chunk-YOGI4WE6.mjs +8 -0
- package/dist/bin/core-chunks/chunk-YOWW4LHK.mjs +8 -0
- package/dist/bin/core-chunks/chunk-YPLFWN62.mjs +7 -0
- package/dist/bin/core-chunks/chunk-YQ6HM3YO.mjs +10 -0
- package/dist/bin/core-chunks/chunk-YZEO5DZA.mjs +7 -0
- package/dist/bin/core-chunks/chunk-ZAUJWUUN.mjs +20 -0
- package/dist/bin/core-chunks/chunk-ZBBNCCGV.mjs +12 -0
- package/dist/bin/core-chunks/chunk-ZQ2XH76U.mjs +12 -0
- package/dist/bin/core-chunks/chunk-ZSANMA7K.mjs +7 -0
- package/dist/bin/core-chunks/chunk-ZXTJLMVZ.mjs +7 -0
- package/dist/bin/core-chunks/chunk-ZZR3LXCK.mjs +9 -0
- package/dist/bin/core-chunks/cleanup-installs-LD43GI4K.mjs +7 -0
- package/dist/bin/core-chunks/client-D43KKUYH.mjs +8 -0
- package/dist/bin/core-chunks/closest-command-YYNABM7V.mjs +7 -0
- package/dist/bin/core-chunks/cloud-RXHFZ7MX.mjs +14 -0
- package/dist/bin/core-chunks/code-IYK65A62.mjs +12 -0
- package/dist/bin/core-chunks/code-graph-cloud-G3WQBICY.mjs +7 -0
- package/dist/bin/core-chunks/codex-hooks-N5UHKK5B.mjs +7 -0
- package/dist/bin/core-chunks/codex-mcp-G7WNAT6T.mjs +7 -0
- package/dist/bin/core-chunks/codex-skill-IZNP76BJ.mjs +7 -0
- package/dist/bin/core-chunks/command-installer-4ENM4GZR.mjs +7 -0
- package/dist/bin/core-chunks/config-UVF7YOR6.mjs +8 -0
- package/dist/bin/core-chunks/config-manager-QY73WM5U.mjs +7 -0
- package/dist/bin/core-chunks/content-bound-stamp-2PJNI4JC.mjs +7 -0
- package/dist/bin/core-chunks/context-4GB6ICXK.mjs +38 -0
- package/dist/bin/core-chunks/context-MPHOQPXF.mjs +10 -0
- package/dist/bin/core-chunks/context-checkpoint-NBI5HKPV.mjs +27 -0
- package/dist/bin/core-chunks/context-pressure-5URQVNBC.mjs +7 -0
- package/dist/bin/core-chunks/context-tiers-NOKJ75QP.mjs +7 -0
- package/dist/bin/core-chunks/context7-service-2MYRUNKY.mjs +7 -0
- package/dist/bin/core-chunks/core-WMEHDCOK.mjs +70 -0
- package/dist/bin/core-chunks/crew-EYVSIX4L.mjs +24 -0
- package/dist/bin/core-chunks/cursor-hooks-DGDJVAI6.mjs +7 -0
- package/dist/bin/core-chunks/custom-workflow-storage-EBEIG54R.mjs +7 -0
- package/dist/bin/core-chunks/cwd-changed-EUJZOBIC.mjs +7 -0
- package/dist/bin/core-chunks/cycle-budget-card-H37XRAIX.mjs +7 -0
- package/dist/bin/core-chunks/daemon-QARP3RVX.mjs +13 -0
- package/dist/bin/core-chunks/database-UU2ZXSD4.mjs +7 -0
- package/dist/bin/core-chunks/delivery-geometry-GSJ6LXUC.mjs +7 -0
- package/dist/bin/core-chunks/detect-changes-2YIEX7AY.mjs +7 -0
- package/dist/bin/core-chunks/detection-KKDZYWVD.mjs +7 -0
- package/dist/bin/core-chunks/developer-evolution-AVAXGDKQ.mjs +11 -0
- package/dist/bin/core-chunks/developer-profile-2VSFJGCU.mjs +7 -0
- package/dist/bin/core-chunks/discuss-lock-CWXKBBYJ.mjs +7 -0
- package/dist/bin/core-chunks/distill-ZF7WHGCZ.mjs +7 -0
- package/dist/bin/core-chunks/doctor-heal-XFSVPSEY.mjs +7 -0
- package/dist/bin/core-chunks/doctor-service-6ZJBWIXR.mjs +8 -0
- package/dist/bin/core-chunks/drift-refresh-XPJAO2B3.mjs +7 -0
- package/dist/bin/core-chunks/dynasty-outcomes-KDWIEA4Y.mjs +11 -0
- package/dist/bin/core-chunks/editors-config-ELAQA6RV.mjs +7 -0
- package/dist/bin/core-chunks/embeddings-354ZYFKX.mjs +7 -0
- package/dist/bin/core-chunks/enriched-recall-MKBOXB7M.mjs +7 -0
- package/dist/bin/core-chunks/eval-O4YD6YOV.mjs +76 -0
- package/dist/bin/core-chunks/exec-34V6SJYO.mjs +7 -0
- package/dist/bin/core-chunks/file-helper-LLQKU6YF.mjs +7 -0
- package/dist/bin/core-chunks/format-SYVL4CV5.mjs +7 -0
- package/dist/bin/core-chunks/gemini-settings-RGD7JLSP.mjs +7 -0
- package/dist/bin/core-chunks/git-context-ZSWE3KWM.mjs +8 -0
- package/dist/bin/core-chunks/git-helpers-UC53D4FT.mjs +7 -0
- package/dist/bin/core-chunks/grok-mcp-IE2RRRRW.mjs +7 -0
- package/dist/bin/core-chunks/grok-plugin-SSANHBS7.mjs +7 -0
- package/dist/bin/core-chunks/grok-skill-7ZP7R7KO.mjs +7 -0
- package/dist/bin/core-chunks/guard-RT7U3LJX.mjs +13 -0
- package/dist/bin/core-chunks/guards-AXH6V2IJ.mjs +7 -0
- package/dist/bin/core-chunks/handoff-storage-NGUA4Y2L.mjs +7 -0
- package/dist/bin/core-chunks/harness-V7J7WIT2.mjs +43 -0
- package/dist/bin/core-chunks/health-TNB5OC37.mjs +11 -0
- package/dist/bin/core-chunks/help-P7EYELVK.mjs +14 -0
- package/dist/bin/core-chunks/hooks-service-REI56DDC.mjs +91 -0
- package/dist/bin/core-chunks/infer-memory-file-ATP7PSAQ.mjs +7 -0
- package/dist/bin/core-chunks/install-FZQJJWT5.mjs +9 -0
- package/dist/bin/core-chunks/judgment-G5KH6QFC.mjs +21 -0
- package/dist/bin/core-chunks/judgment-ledger-storage-ZTYXPMM4.mjs +7 -0
- package/dist/bin/core-chunks/judgment-orchestrator-E3SO3NVE.mjs +7 -0
- package/dist/bin/core-chunks/judgment-receipt-GO6QEZQC.mjs +7 -0
- package/dist/bin/core-chunks/kimi-hooks-TR6J3OVG.mjs +7 -0
- package/dist/bin/core-chunks/kimi-mcp-ETG7O6O5.mjs +7 -0
- package/dist/bin/core-chunks/land-cue-3BUD3KJJ.mjs +8 -0
- package/dist/bin/core-chunks/land-rho-MCTQDPRH.mjs +8 -0
- package/dist/bin/core-chunks/land-synthesis-MU4EZEYL.mjs +7 -0
- package/dist/bin/core-chunks/lean-26BWCUOR.mjs +34 -0
- package/dist/bin/core-chunks/legacy-crew-sweep-G5UJT2PM.mjs +23 -0
- package/dist/bin/core-chunks/living-context-contract-HZIVBMXX.mjs +7 -0
- package/dist/bin/core-chunks/llm-KMVXVBHG.mjs +18 -0
- package/dist/bin/core-chunks/mcp-BD5TOTCK.mjs +17 -0
- package/dist/bin/core-chunks/memory-dream-6GFV2GXN.mjs +14 -0
- package/dist/bin/core-chunks/memory-export-WJ4H7CFV.mjs +13 -0
- package/dist/bin/core-chunks/memory-index-7NIU34EI.mjs +7 -0
- package/dist/bin/core-chunks/notification-G654IX3O.mjs +7 -0
- package/dist/bin/core-chunks/notify-EWYUBKGO.mjs +9 -0
- package/dist/bin/core-chunks/nyquist-lite-A23B7G4B.mjs +9 -0
- package/dist/bin/core-chunks/one-breath-install-LVNIVN6S.mjs +7 -0
- package/dist/bin/core-chunks/opencode-mcp-L7NC77JF.mjs +7 -0
- package/dist/bin/core-chunks/output-D27IOQXR.mjs +7 -0
- package/dist/bin/core-chunks/pack-integrity-X277OVRB.mjs +9 -0
- package/dist/bin/core-chunks/pack-manager-VN7F6R47.mjs +7 -0
- package/dist/bin/core-chunks/package-R4FUTGOE.mjs +7 -0
- package/dist/bin/core-chunks/package-legitimacy-VHHGI4P7.mjs +7 -0
- package/dist/bin/core-chunks/path-manager-E5DCU5LP.mjs +7 -0
- package/dist/bin/core-chunks/performance-tracker-BFBNR3LY.mjs +7 -0
- package/dist/bin/core-chunks/pi-skill-IZQEUILZ.mjs +7 -0
- package/dist/bin/core-chunks/planning-NOWLKZDS.mjs +8 -0
- package/dist/bin/core-chunks/post-edit-GTBY32JU.mjs +7 -0
- package/dist/bin/core-chunks/pr-convention-37YHTUKM.mjs +7 -0
- package/dist/bin/core-chunks/pre-bash-32ZOGNSP.mjs +10 -0
- package/dist/bin/core-chunks/pre-commit-7TU2A7H4.mjs +7 -0
- package/dist/bin/core-chunks/pre-edit-ASEWA5TS.mjs +8 -0
- package/dist/bin/core-chunks/pre-package-ZTZACEBB.mjs +7 -0
- package/dist/bin/core-chunks/pre-search-MKDRFJSE.mjs +8 -0
- package/dist/bin/core-chunks/pre-secrets-RJELPDFY.mjs +7 -0
- package/dist/bin/core-chunks/precision-classifier-AV75OEVA.mjs +7 -0
- package/dist/bin/core-chunks/precision-judgment-MCX4MIIG.mjs +7 -0
- package/dist/bin/core-chunks/preferences-KO5U2ELK.mjs +31 -0
- package/dist/bin/core-chunks/primitives-GNUMBYOK.mjs +13 -0
- package/dist/bin/core-chunks/prjct-md-BSFV7OQQ.mjs +7 -0
- package/dist/bin/core-chunks/product-GUHSUNIH.mjs +68 -0
- package/dist/bin/core-chunks/project-agent-surfaces-BXCJJXB7.mjs +7 -0
- package/dist/bin/core-chunks/project-alignment-ADKW3ZWQ.mjs +17 -0
- package/dist/bin/core-chunks/project-file-inventory-XIHHJZUP.mjs +7 -0
- package/dist/bin/core-chunks/project-memory-L5MDZYST.mjs +7 -0
- package/dist/bin/core-chunks/project-style-evolution-HIMSJQQB.mjs +7 -0
- package/dist/bin/core-chunks/prompt-47YP5JIR.mjs +25 -0
- package/dist/bin/core-chunks/protocol-4AJ4J5SI.mjs +7 -0
- package/dist/bin/core-chunks/provider-cache-IWVTFLGT.mjs +7 -0
- package/dist/bin/core-chunks/provider-status-HQUBKMH5.mjs +7 -0
- package/dist/bin/core-chunks/publish-helper-2T2EHM3V.mjs +7 -0
- package/dist/bin/core-chunks/purge-6SJKHKIY.mjs +7 -0
- package/dist/bin/core-chunks/queue-storage-BKH5XX2E.mjs +7 -0
- package/dist/bin/core-chunks/registry-YM2EYUXY.mjs +7 -0
- package/dist/bin/core-chunks/reliability-repair-JMPZWDD4.mjs +20 -0
- package/dist/bin/core-chunks/removed-verbs-EU3WPRNK.mjs +7 -0
- package/dist/bin/core-chunks/retention-QSXWKE4H.mjs +7 -0
- package/dist/bin/core-chunks/retro-B2EBN4TA.mjs +13 -0
- package/dist/bin/core-chunks/review-risk-LBPY5M3K.mjs +12 -0
- package/dist/bin/core-chunks/run-recorder-EZQ32M55.mjs +7 -0
- package/dist/bin/core-chunks/safe-artifacts-PE2TMEZQ.mjs +9 -0
- package/dist/bin/core-chunks/sdd-3WNZJ6FU.mjs +9 -0
- package/dist/bin/core-chunks/seed-MMDJE2UO.mjs +10 -0
- package/dist/bin/core-chunks/self-heal-R5FBXEVQ.mjs +7 -0
- package/dist/bin/core-chunks/session-continuity-OQDB5UYI.mjs +10 -0
- package/dist/bin/core-chunks/session-start-FM6UL7MT.mjs +7 -0
- package/dist/bin/core-chunks/session-tracker-RG2FBWMS.mjs +7 -0
- package/dist/bin/core-chunks/settings-installer-4XHM3HAZ.mjs +7 -0
- package/dist/bin/core-chunks/setup-BL36ZWPW.mjs +140 -0
- package/dist/bin/core-chunks/setup-V75BWRHU.mjs +38 -0
- package/dist/bin/core-chunks/shipping-NZVM57JJ.mjs +12 -0
- package/dist/bin/core-chunks/signals-digest-P5BG6MZF.mjs +7 -0
- package/dist/bin/core-chunks/skill-adherence-JE3N3Y67.mjs +13 -0
- package/dist/bin/core-chunks/skill-generator-LKS5BNMY.mjs +7 -0
- package/dist/bin/core-chunks/skill-index-L4UWQCQE.mjs +11 -0
- package/dist/bin/core-chunks/spec-VC3VTUI3.mjs +27 -0
- package/dist/bin/core-chunks/spec-context-inference-KOINWBC7.mjs +9 -0
- package/dist/bin/core-chunks/spec-inventory-2TT7BTFZ.mjs +9 -0
- package/dist/bin/core-chunks/spec-service-UZ53XL6X.mjs +7 -0
- package/dist/bin/core-chunks/spec-task-breakdown-3Y7YXCIQ.mjs +7 -0
- package/dist/bin/core-chunks/state-storage-6CGFWW5D.mjs +7 -0
- package/dist/bin/core-chunks/stdin-spill-Y2A6WOOW.mjs +7 -0
- package/dist/bin/core-chunks/stop-6SH36ULT.mjs +15 -0
- package/dist/bin/core-chunks/subagent-start-TVGBV2V2.mjs +7 -0
- package/dist/bin/core-chunks/subagent-stop-APWY6KMX.mjs +7 -0
- package/dist/bin/core-chunks/surface-attribution-CQVM2SWY.mjs +7 -0
- package/dist/bin/core-chunks/symbol-graph-PCS43SHZ.mjs +7 -0
- package/dist/bin/core-chunks/sync-analyzer-M37Q4LE4.mjs +7 -0
- package/dist/bin/core-chunks/sync-client-6TAOTJWR.mjs +7 -0
- package/dist/bin/core-chunks/sync-cursor-storage-GKO4X2QN.mjs +18 -0
- package/dist/bin/core-chunks/task-orchestration-GS4J4KGS.mjs +7 -0
- package/dist/bin/core-chunks/task-overview-XSMK7YEN.mjs +7 -0
- package/dist/bin/core-chunks/task-service-KFYL5NT4.mjs +7 -0
- package/dist/bin/core-chunks/tdd-P2PP4RR4.mjs +9 -0
- package/dist/bin/core-chunks/team-WKAAOEFE.mjs +42 -0
- package/dist/bin/core-chunks/template-loader-H4FE37HV.mjs +7 -0
- package/dist/bin/core-chunks/token-backfill-WPXXD5MP.mjs +12 -0
- package/dist/bin/core-chunks/token-economics-JZAQJUET.mjs +7 -0
- package/dist/bin/core-chunks/transcript-jsonl-OC7TH4Q3.mjs +7 -0
- package/dist/bin/core-chunks/trust-boundary-24F662RM.mjs +7 -0
- package/dist/bin/core-chunks/uninstall-W6EAUS7N.mjs +13 -0
- package/dist/bin/core-chunks/update-PSHEJJI5.mjs +11 -0
- package/dist/bin/core-chunks/update-checker-LZCUPWQB.mjs +7 -0
- package/dist/bin/core-chunks/usefulness-A3GRKFL3.mjs +7 -0
- package/dist/bin/core-chunks/user-home-BODIAXR4.mjs +7 -0
- package/dist/bin/core-chunks/vault-retire-notice-FDRT7BJG.mjs +8 -0
- package/dist/bin/core-chunks/velocity-storage-5T7RYOWH.mjs +7 -0
- package/dist/bin/core-chunks/verb-names-QWGYABFH.mjs +7 -0
- package/dist/bin/core-chunks/version-B5DBRVGQ.mjs +7 -0
- package/dist/bin/core-chunks/watch-service-7V3O52TW.mjs +9 -0
- package/dist/bin/core-chunks/weak-frontier-demo-ZCDTMYRO.mjs +7 -0
- package/dist/bin/core-chunks/weak-model-mode-LOAPFJPQ.mjs +7 -0
- package/dist/bin/core-chunks/work-graph-WHMCFN6U.mjs +7 -0
- package/dist/bin/core-chunks/work-graph-ZNV7S6EU.mjs +16 -0
- package/dist/bin/core-chunks/work-scope-XXPUH6TU.mjs +7 -0
- package/dist/bin/core-chunks/workflow-XM77QYRF.mjs +61 -0
- package/dist/bin/core-chunks/workflows-reference-T7RH7IGJ.mjs +7 -0
- package/dist/bin/core-chunks/workspace-occupancy-JUXKZBUZ.mjs +7 -0
- package/dist/bin/core-chunks/worktree-service-YRRPFU57.mjs +11 -0
- package/dist/bin/core-chunks/world-model-impact-FAGGNUGN.mjs +7 -0
- package/dist/bin/hook-chunks/{agent-switch-I4MTVE56.mjs → agent-switch-TAJWH2ZD.mjs} +1 -1
- package/dist/bin/hook-chunks/{analysis-VN7APBHR.mjs → analysis-34WDLUXK.mjs} +2 -2
- package/dist/bin/hook-chunks/{auto-flush-DX3FVSQE.mjs → auto-flush-7TIEBPPQ.mjs} +1 -1
- package/dist/bin/hook-chunks/{capture-gate-MEIQD7ZS.mjs → capture-gate-JFVGG7RB.mjs} +1 -1
- package/dist/bin/hook-chunks/{chunk-UVATSTRF.mjs → chunk-22CBVTZ3.mjs} +1 -1
- package/dist/bin/hook-chunks/{chunk-MW54MTLB.mjs → chunk-3JOZN7YJ.mjs} +1 -1
- package/dist/bin/hook-chunks/{chunk-E7NA34VQ.mjs → chunk-4X3KUIXK.mjs} +1 -1
- package/dist/bin/hook-chunks/{chunk-3AHW4XQH.mjs → chunk-5ALQBNIZ.mjs} +1 -1
- package/dist/bin/hook-chunks/{chunk-H2DGDAQP.mjs → chunk-5VPZI2ZF.mjs} +1 -1
- package/dist/bin/hook-chunks/{chunk-XYKVWO23.mjs → chunk-6EHYPQ5U.mjs} +1 -1
- package/dist/bin/hook-chunks/chunk-6NMHVPAI.mjs +35 -0
- package/dist/bin/hook-chunks/chunk-7H5UVM6X.mjs +9 -0
- package/dist/bin/hook-chunks/{chunk-LR24AIEW.mjs → chunk-A3R47SP6.mjs} +1 -1
- package/dist/bin/hook-chunks/chunk-AFGXKRRP.mjs +12 -0
- package/dist/bin/hook-chunks/{chunk-64ZEBHDX.mjs → chunk-CGAKJDKT.mjs} +1 -1
- package/dist/bin/hook-chunks/{chunk-EI6VQZOX.mjs → chunk-CJY4Y5SO.mjs} +1 -1
- package/dist/bin/hook-chunks/chunk-FSFURDAE.mjs +16 -0
- package/dist/bin/hook-chunks/{chunk-ZZBNFNMG.mjs → chunk-FTBBQHI4.mjs} +1 -1
- package/dist/bin/hook-chunks/chunk-G4VJKPG7.mjs +69 -0
- package/dist/bin/hook-chunks/{chunk-7PBWIO4K.mjs → chunk-GAJOSSB4.mjs} +2 -2
- package/dist/bin/hook-chunks/{chunk-DB226JIV.mjs → chunk-GER6HFWV.mjs} +1 -1
- package/dist/bin/hook-chunks/{chunk-LQLCYBFF.mjs → chunk-H3GIYI4Q.mjs} +2 -2
- package/dist/bin/hook-chunks/{chunk-KDNUQPAK.mjs → chunk-HRU2KNEB.mjs} +1 -1
- package/dist/bin/hook-chunks/{chunk-33BHU4OM.mjs → chunk-LCGWETJ6.mjs} +1 -1
- package/dist/bin/hook-chunks/{chunk-WL6PKX3U.mjs → chunk-MG2DNP4Z.mjs} +1 -1
- package/dist/bin/hook-chunks/{chunk-XV2LJVYB.mjs → chunk-MIJZT4ZR.mjs} +1 -1
- package/dist/bin/hook-chunks/chunk-NGB6JNSB.mjs +18 -0
- package/dist/bin/hook-chunks/{chunk-IJ523YO2.mjs → chunk-OALZUWC6.mjs} +1 -1
- package/dist/bin/hook-chunks/{chunk-EGCYDLSO.mjs → chunk-PZMBZ6GE.mjs} +1 -1
- package/dist/bin/hook-chunks/{chunk-RT2DFIWF.mjs → chunk-QIB6Y6AH.mjs} +2 -2
- package/dist/bin/hook-chunks/{chunk-ZQI4TJ5C.mjs → chunk-QMNZPNVY.mjs} +1 -1
- package/dist/bin/hook-chunks/{chunk-YLOK4WRR.mjs → chunk-R4YDE3GU.mjs} +1 -1
- package/dist/bin/hook-chunks/{chunk-WJV24WE6.mjs → chunk-RFKRKUHB.mjs} +1 -1
- package/dist/bin/hook-chunks/{chunk-SWJ7TLBD.mjs → chunk-RGOTJCZU.mjs} +1 -1
- package/dist/bin/hook-chunks/{chunk-FZS3XGEA.mjs → chunk-RLKYEL3F.mjs} +1 -1
- package/dist/bin/hook-chunks/{chunk-LF3S3MYE.mjs → chunk-T2KVL6PZ.mjs} +1 -1
- package/dist/bin/hook-chunks/{chunk-NLL5AV2G.mjs → chunk-T7DRHVK3.mjs} +2 -2
- package/dist/bin/hook-chunks/{chunk-KV4NXLPT.mjs → chunk-TWFLW6OJ.mjs} +1 -1
- package/dist/bin/hook-chunks/{chunk-ADYTBOCZ.mjs → chunk-UJIOGFNP.mjs} +1 -1
- package/dist/bin/hook-chunks/{chunk-Y3RHBU2R.mjs → chunk-UK24P7PV.mjs} +2 -2
- package/dist/bin/hook-chunks/{chunk-OLQAMCYV.mjs → chunk-ULNGKZB6.mjs} +5 -5
- package/dist/bin/hook-chunks/{chunk-UMJ5D5I6.mjs → chunk-UWHVPO6X.mjs} +2 -2
- package/dist/bin/hook-chunks/{chunk-YHOZTAZH.mjs → chunk-V6GGH6H5.mjs} +1 -1
- package/dist/bin/hook-chunks/{chunk-EXVL2OFE.mjs → chunk-XC2BSGWF.mjs} +1 -1
- package/dist/bin/hook-chunks/{chunk-JZDZH6IV.mjs → chunk-YATXTHDL.mjs} +1 -1
- package/dist/bin/hook-chunks/{chunk-DCHIPMOG.mjs → chunk-ZF2EVMY7.mjs} +1 -1
- package/dist/bin/hook-chunks/{chunk-PVCEWFHS.mjs → chunk-ZPAY2NSF.mjs} +2 -2
- package/dist/bin/hook-chunks/{codex-skill-6CRFUF3A.mjs → codex-skill-BFRU5FTP.mjs} +1 -1
- package/dist/bin/hook-chunks/{command-installer-MUHZWDZA.mjs → command-installer-3XOZGKOQ.mjs} +1 -1
- package/dist/bin/hook-chunks/{config-manager-2JJPCLKC.mjs → config-manager-UPB7NEXF.mjs} +1 -1
- package/dist/bin/hook-chunks/{context7-service-NH4BMGSJ.mjs → context7-service-7VFXEQVN.mjs} +1 -1
- package/dist/bin/hook-chunks/{cwd-changed-UTD6Y4MS.mjs → cwd-changed-USNJYUH7.mjs} +1 -1
- package/dist/bin/hook-chunks/{distill-5TNAM3LY.mjs → distill-47YVL7IH.mjs} +1 -1
- package/dist/bin/hook-chunks/{enriched-recall-6VOIUNLN.mjs → enriched-recall-CVYI52NO.mjs} +1 -1
- package/dist/bin/hook-chunks/{format-IIOFTSBF.mjs → format-DPIN45EG.mjs} +1 -1
- package/dist/bin/hook-chunks/{judgment-receipt-QLV3MYFT.mjs → judgment-receipt-G2DKQR7U.mjs} +1 -1
- package/dist/bin/hook-chunks/{land-cue-57B23PEL.mjs → land-cue-3JD2TXFP.mjs} +1 -1
- package/dist/bin/hook-chunks/{land-synthesis-ZVPFJERV.mjs → land-synthesis-5C4KGCTB.mjs} +1 -1
- package/dist/bin/hook-chunks/{legacy-crew-sweep-GR6HRSHX.mjs → legacy-crew-sweep-XQNXNZES.mjs} +2 -2
- package/dist/bin/hook-chunks/{memory-index-XE2MWKQS.mjs → memory-index-LL6SQJ2N.mjs} +1 -1
- package/dist/bin/hook-chunks/{notification-GU2ZJP5K.mjs → notification-ACQBRJG3.mjs} +1 -1
- package/dist/bin/hook-chunks/{pack-integrity-WV5U3AFF.mjs → pack-integrity-DCXVRRJZ.mjs} +1 -1
- package/dist/bin/hook-chunks/{pack-manager-QLFQKP24.mjs → pack-manager-KYWKNYUY.mjs} +1 -1
- package/dist/bin/hook-chunks/{planning-VPAX5DZL.mjs → planning-KOU3XKWS.mjs} +2 -2
- package/dist/bin/hook-chunks/{post-edit-UXCFSR3Y.mjs → post-edit-CK2MYQEN.mjs} +1 -1
- package/dist/bin/hook-chunks/{pre-bash-MB4JNNYG.mjs → pre-bash-W5A5CTR3.mjs} +1 -1
- package/dist/bin/hook-chunks/{pre-commit-U7TRFKWX.mjs → pre-commit-5Q24RM4S.mjs} +1 -1
- package/dist/bin/hook-chunks/{pre-edit-MDCQXI5F.mjs → pre-edit-YIJ4BCYL.mjs} +1 -1
- package/dist/bin/hook-chunks/{pre-package-A6ZI5R64.mjs → pre-package-O4RMVA4T.mjs} +1 -1
- package/dist/bin/hook-chunks/{pre-search-ZZO3LGXJ.mjs → pre-search-WYOWC3D6.mjs} +1 -1
- package/dist/bin/hook-chunks/{prjct-md-MS52YLI2.mjs → prjct-md-2UVHFYTJ.mjs} +1 -1
- package/dist/bin/hook-chunks/{project-agent-surfaces-6AIW7KL6.mjs → project-agent-surfaces-BKFYUMRV.mjs} +1 -1
- package/dist/bin/hook-chunks/{project-memory-UDH56VFP.mjs → project-memory-OC5GTJPY.mjs} +1 -1
- package/dist/bin/hook-chunks/{project-style-evolution-IJXT2MCP.mjs → project-style-evolution-2IFJCACQ.mjs} +1 -1
- package/dist/bin/hook-chunks/prompt-JIWMP563.mjs +26 -0
- package/dist/bin/hook-chunks/{purge-N2WN6NDB.mjs → purge-FQK3Z4QS.mjs} +1 -1
- package/dist/bin/hook-chunks/{retention-RET4P2RO.mjs → retention-2FETBJFG.mjs} +1 -1
- package/dist/bin/hook-chunks/{sdd-PB6WKSLE.mjs → sdd-V43TSJ2P.mjs} +1 -1
- package/dist/bin/hook-chunks/{session-continuity-BIJXMN44.mjs → session-continuity-RO2ACICF.mjs} +1 -1
- package/dist/bin/hook-chunks/{session-start-R2VMKW2L.mjs → session-start-FKKFMKQ5.mjs} +1 -1
- package/dist/bin/hook-chunks/{setup-PPIZHVXS.mjs → setup-YV2DKG5L.mjs} +2 -2
- package/dist/bin/hook-chunks/{shipping-C637PCOF.mjs → shipping-SCNFEXBY.mjs} +4 -4
- package/dist/bin/hook-chunks/{spec-context-inference-RTTDOZZO.mjs → spec-context-inference-BD3ANTXA.mjs} +1 -1
- package/dist/bin/hook-chunks/{spec-service-ENLAAMVL.mjs → spec-service-OWYOAGXS.mjs} +2 -2
- package/dist/bin/hook-chunks/{spec-task-breakdown-RUDEP3AY.mjs → spec-task-breakdown-HOTLUFDM.mjs} +1 -1
- package/dist/bin/hook-chunks/{state-storage-AJUPG7J5.mjs → state-storage-EMWLIFQJ.mjs} +1 -1
- package/dist/bin/hook-chunks/{stop-DPXAWJFN.mjs → stop-MIXT7WXA.mjs} +3 -3
- package/dist/bin/hook-chunks/{subagent-start-AFHPXL2S.mjs → subagent-start-NO3TN65K.mjs} +1 -1
- package/dist/bin/hook-chunks/{subagent-stop-5BMV63ML.mjs → subagent-stop-CKWIXX7W.mjs} +1 -1
- package/dist/bin/hook-chunks/{surface-attribution-EGIKCVMF.mjs → surface-attribution-BYESPLXM.mjs} +1 -1
- package/dist/bin/hook-chunks/{task-overview-F3GB77OA.mjs → task-overview-P3VRH2FD.mjs} +1 -1
- package/dist/bin/hook-chunks/{task-service-FZABHPFV.mjs → task-service-5ONSBKKP.mjs} +1 -1
- package/dist/bin/hook-chunks/{tdd-TAMBOPN3.mjs → tdd-SESB4IG3.mjs} +1 -1
- package/dist/bin/hook-chunks/{template-loader-MXOMU4XH.mjs → template-loader-KO67FVHO.mjs} +1 -1
- package/dist/bin/hook-chunks/{weak-model-mode-BMSPGEQY.mjs → weak-model-mode-HPXBKXJT.mjs} +1 -1
- package/dist/bin/hook-chunks/{work-scope-YCS4GTXW.mjs → work-scope-RNPGACPA.mjs} +1 -1
- package/dist/bin/hook-chunks/{workspace-occupancy-JOBYNNXV.mjs → workspace-occupancy-3NEAXILW.mjs} +1 -1
- package/dist/bin/prjct-core.mjs +9 -3323
- package/dist/bin/prjct-hooks.mjs +1 -1
- package/dist/bin/prjct.mjs +7 -1
- package/dist/daemon/entry.mjs +591 -582
- package/dist/mcp/server.mjs +320 -313
- package/package.json +4 -2
- package/dist/bin/hook-chunks/chunk-3UB6SFRA.mjs +0 -11
- package/dist/bin/hook-chunks/chunk-D7DQABWO.mjs +0 -35
- package/dist/bin/hook-chunks/chunk-IWUF2LGO.mjs +0 -18
- package/dist/bin/hook-chunks/chunk-M4YM7Z3F.mjs +0 -69
- package/dist/bin/hook-chunks/chunk-TB57OYGW.mjs +0 -16
- package/dist/bin/hook-chunks/chunk-ZYCNW75E.mjs +0 -9
- package/dist/bin/hook-chunks/prompt-7VZLYONO.mjs +0 -24
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,16 @@
|
|
|
2
2
|
|
|
3
3
|
## [Unreleased]
|
|
4
4
|
|
|
5
|
+
## [3.98.0] - 2026-08-19
|
|
6
|
+
|
|
7
|
+
### Added
|
|
8
|
+
- Reduce prjct token consumption for non-caching hosts (Kimi/Codex): session context cache, lean MCP tier, delta hook emission — target: usage windows last >=50% longer
|
|
9
|
+
|
|
10
|
+
## [3.97.0] - 2026-08-17
|
|
11
|
+
|
|
12
|
+
### Added
|
|
13
|
+
- Nueva auditoria de eficiencia, DX y performance con mejora medida minima 30%
|
|
14
|
+
|
|
5
15
|
## [3.96.0] - 2026-08-16
|
|
6
16
|
|
|
7
17
|
### Added
|
package/bin/prjct.cjs
CHANGED
|
@@ -326,6 +326,20 @@ async function runInProcess() {
|
|
|
326
326
|
process.emitWarning = origEmit
|
|
327
327
|
return false
|
|
328
328
|
}
|
|
329
|
+
// V8 compile cache (node >=22.8): persists compiled bytecode for the core
|
|
330
|
+
// bundle + its code-split chunks across cold starts (~23% off --version,
|
|
331
|
+
// measured). Guarded because the node floor (22.5) predates
|
|
332
|
+
// enableCompileCache; on older node this is a no-op. Best-effort: an
|
|
333
|
+
// unwritable cache dir must never block the CLI.
|
|
334
|
+
try {
|
|
335
|
+
// NOTE: in CJS, bare `module` is the module wrapper, not node:module.
|
|
336
|
+
const nodeModule = require('node:module')
|
|
337
|
+
if (typeof nodeModule.enableCompileCache === 'function') {
|
|
338
|
+
nodeModule.enableCompileCache(path.join(CLI_HOME, 'cache', 'compile-cache'))
|
|
339
|
+
}
|
|
340
|
+
} catch {
|
|
341
|
+
/* best effort */
|
|
342
|
+
}
|
|
329
343
|
try {
|
|
330
344
|
// Resolves when the entry's top-level finishes; the entry keeps the event
|
|
331
345
|
// loop alive (daemon socket / core fallback) and exits the process itself.
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { createRequire as __createRequire } from 'module';
|
|
2
|
+
import { fileURLToPath as __fileURLToPath } from 'url';
|
|
3
|
+
import { dirname as __pathDirname } from 'path';
|
|
4
|
+
const require = __createRequire(import.meta.url);
|
|
5
|
+
const __filename = __fileURLToPath(import.meta.url);
|
|
6
|
+
const __dirname = __pathDirname(__filename);
|
|
7
|
+
import{e as K,g as V,j as X,o as J,u as Q}from"./chunk-PPSVWUXC.mjs";import{c as N}from"./chunk-CFD6CW7T.mjs";import{e as Y}from"./chunk-UAYTDSYG.mjs";import"./chunk-NNILF7R3.mjs";import"./chunk-NZKUCQZK.mjs";import"./chunk-H2KNJUPN.mjs";import{a as U,d as H,h as G}from"./chunk-6POAOY5C.mjs";import{a as z}from"./chunk-5DZ2LTII.mjs";import{e as b}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{j as I}from"./chunk-BUD3R6LF.mjs";import"./chunk-ZQ2XH76U.mjs";import{b as P}from"./chunk-B2HY22OD.mjs";import"./chunk-XLFEWZRA.mjs";import"./chunk-X433BB6F.mjs";import"./chunk-EZRNQXCC.mjs";import"./chunk-HCPQZRR3.mjs";import{b as D}from"./chunk-EHVU2SMR.mjs";import"./chunk-HPCSSJXH.mjs";import"./chunk-E5QQDYBR.mjs";import"./chunk-B7AQHL7B.mjs";import"./chunk-L4TUXFCL.mjs";import{h as k}from"./chunk-ID2C2S33.mjs";import"./chunk-DIEPWXJJ.mjs";import"./chunk-UNNY2IWZ.mjs";import{b as C}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"./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 as gt}from"./chunk-225DWS4D.mjs";import{a as i}from"./chunk-3TRXQAU4.mjs";import It from"node:path";import{execFile as kt}from"node:child_process";import $ from"node:fs";import{promisify as bt}from"node:util";import Z from"node:fs";import f from"node:path";var yt=/^(?:\.env(?:\..+)?|.*\.(?:pem|key|p12|pfx)|id_rsa|id_ed25519|credentials\.json|auth\.json)$/i,ht=/(?:^|\/)(?:\.ssh|\.gnupg|\.aws|\.config\/gcloud)(?:\/|$)/i,x=class extends Error{static{i(this,"PathDeniedError")}constructor(e){super(e),this.name="PathDeniedError"}};function T(t,e){if(!e||typeof e!="string")throw new x("path is required");let o=f.resolve(t),r=f.isAbsolute(e)?f.resolve(e):f.resolve(o,e),n=f.relative(o,r);if(n.startsWith("..")||f.isAbsolute(n))throw new x(`path escapes project root: ${e}`);let s=f.basename(r);if(yt.test(s))throw new x(`path blocked (secret-like name): ${s}`);let a=r.split(f.sep).join("/");if(ht.test(a))throw new x(`path blocked (sensitive directory): ${e}`);return r}i(T,"resolveSafePath");function tt(t){Z.mkdirSync(f.dirname(t),{recursive:!0})}i(tt,"ensureParentDir");function E(t){try{return Z.accessSync(t),!0}catch{return!1}}i(E,"fileExists");function w(t){return{ok:!0,content:t}}i(w,"ok");function A(t){return{ok:!1,content:t}}i(A,"fail");function j(t,e){if(typeof t!="string"||!t.trim())throw new Error(`${e} must be a non-empty string`);return t.trim()}i(j,"asString");async function S(t){try{return await C.getProjectId(t)||null}catch{return null}}i(S,"resolveProjectId");async function et(t,e,o=3){let r=await S(t);if(!r)return null;try{let n=P.recallForFile(r,e,o);return n.length===0?null:I(n,{boundary:"llm",compact:!0})}catch{return null}}i(et,"fetchGuardHits");var ot={name:"prjct_search",description:"Search durable project memory (decisions, gotchas, learnings). Prefer this before broad codebase exploration.",parameters:{type:"object",properties:{query:{type:"string",description:"Keyword / topic to search"},limit:{type:"number",description:"Max entries (default 10)"}},required:["query"]},async execute(t,e){try{let o=j(t.query,"query"),r=typeof t.limit=="number"&&t.limit>0?Math.min(t.limit,25):10,n=await S(e.root);if(!n)return w("(not a prjct project \u2014 no memory index)");let{enrichedRecall:s}=await import("./enriched-recall-MKBOXB7M.mjs"),a=await s(e.root,n,{topic:o,limit:r,expandLinks:!1});return a.length===0?w("No matching memories."):w(I(a,{boundary:"llm",compact:!0}))}catch(o){return A(o instanceof Error?o.message:String(o))}}},rt={name:"prjct_guard",description:"Anticipation: preventive memory for a file (gotchas/anti-patterns) before edit. Empty means clear to edit.",parameters:{type:"object",properties:{path:{type:"string",description:"Repo-relative file path"},limit:{type:"number",description:"Max traps (default 3)"}},required:["path"]},async execute(t,e){try{let o=j(t.path,"path"),r=typeof t.limit=="number"&&t.limit>0?t.limit:3,n=await S(e.root);if(!n)return w("clear to edit (no prjct project)");let s=P.recallForFile(n,o,r);return s.length===0?w(`No preventive memory for ${o} \u2014 clear to edit.`):w(I(s,{boundary:"llm",compact:!0}))}catch(o){return A(o instanceof Error?o.message:String(o))}}},nt={name:"prjct_remember",description:"Persist a durable memory in ENGLISH (decision|learning|gotcha|fact|\u2026). Use after resolving something non-obvious.",parameters:{type:"object",properties:{type:{type:"string",description:"Memory type e.g. decision, learning, gotcha, fact"},content:{type:"string",description:"Memory body in English"},tags:{type:"object",description:"Optional key:value tags",additionalProperties:{type:"string"}}},required:["type","content"]},async execute(t,e){try{let o=j(t.type,"type"),r=j(t.content,"content"),n=t.tags&&typeof t.tags=="object"&&!Array.isArray(t.tags)?t.tags:void 0,s=await S(e.root);return s?(await P.remember(e.root,{type:o,content:r,tags:n,projectId:s,requireWrite:!0}),w(`Saved ${o}: ${r.slice(0,100)}`)):A("Not a prjct project \u2014 cannot remember")}catch(o){return A(o instanceof Error?o.message:String(o))}}},st={name:"prjct_work",description:"Start a tracked prjct work cycle for an intent (same gates as `prjct work`). Prefer once at the beginning if none is active. Pass a real task description, not a bare CLI verb.",parameters:{type:"object",properties:{description:{type:"string",description:'Work intent (e.g. "fix null guard in auth login")'}},required:["description"]},async execute(t,e){try{let o=j(t.description,"description"),r=await S(e.root);if(!r)return A("Not a prjct project \u2014 cannot start work");let{startTask:n}=await import("./task-service-KFYL5NT4.mjs"),s=await n(r,e.root,o,{});if(!s.ok)return A(s.blocked??"Work start blocked");let a=[`Work started: ${s.taskId}`,s.description?`Description: ${s.description}`:"",s.branch?`Branch: ${s.branch}`:"",s.isolation?.worktreePath?`Worktree: ${s.isolation.worktreePath} (cd there for further edits)`:""].filter(Boolean);if(s.risks?.length){a.push("Risks:");for(let p of s.risks.slice(0,5))a.push(`- [${p.file}] ${p.title}`)}return w(a.join(`
|
|
8
|
+
`))}catch(o){return A(o instanceof Error?o.message:String(o))}}};function M(){return[ot,rt,nt,st]}i(M,"prjctBodyTools");async function O(t,e,o){if(!o.ok)return o;let r=await et(t.root,e,3);return r?{ok:!0,content:`PREVENTIVE MEMORY (review before trusting this edit):
|
|
9
|
+
${r}
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
${o.content}`}:o}i(O,"withGuardPrefix");var wt=bt(kt),xt=256*1024,At=3e4,it=64*1024;function R(t){return{ok:!0,content:t}}i(R,"ok");function m(t){return{ok:!1,content:t}}i(m,"fail");function v(t,e){if(typeof t!="string"||!t)throw new Error(`${e} must be a non-empty string`);return t}i(v,"asString");var at={name:"read",description:"Read a UTF-8 text file under the project root. Path is relative to project root.",parameters:{type:"object",properties:{path:{type:"string",description:"Relative path from project root"}},required:["path"]},async execute(t,e){try{let o=v(t.path,"path"),r=T(e.root,o);if(!E(r))return m(`File not found: ${o}`);let n=$.statSync(r);if(!n.isFile())return m(`Not a file: ${o}`);let s=e.maxReadBytes??xt;if(n.size>s)return m(`File too large (${n.size} > ${s} bytes): ${o}`);let a=$.readFileSync(r,"utf-8");return R(a)}catch(o){return m(o instanceof Error?o.message:String(o))}}},lt={name:"write",description:"Create or overwrite a UTF-8 text file under the project root. Creates parent dirs. Prefer edit for small changes.",parameters:{type:"object",properties:{path:{type:"string",description:"Relative path from project root"},content:{type:"string",description:"Full file contents"}},required:["path","content"]},async execute(t,e){try{let o=v(t.path,"path"),r=typeof t.content=="string"?t.content:String(t.content??""),n=T(e.root,o);return tt(n),$.writeFileSync(n,r,"utf-8"),O(e,o,R(`Wrote ${o} (${r.length} chars)`))}catch(o){return m(o instanceof Error?o.message:String(o))}}},ct={name:"edit",description:"Replace an exact substring in a file once. Fails if old_string is missing or not unique. Surfaces preventive memory for the file when present.",parameters:{type:"object",properties:{path:{type:"string"},old_string:{type:"string"},new_string:{type:"string"}},required:["path","old_string","new_string"]},async execute(t,e){try{let o=v(t.path,"path"),r=v(t.old_string,"old_string"),n=typeof t.new_string=="string"?t.new_string:String(t.new_string??""),s=T(e.root,o);if(!E(s))return m(`File not found: ${o}`);let a=$.readFileSync(s,"utf-8"),p=a.split(r).length-1;return p===0?m(`old_string not found in ${o}`):p>1?m(`old_string not unique in ${o} (${p} matches)`):($.writeFileSync(s,a.replace(r,n),"utf-8"),O(e,o,R(`Edited ${o}`)))}catch(o){return m(o instanceof Error?o.message:String(o))}}},Tt=/\b(?:rm\s+-rf\s+\/|mkfs|dd\s+if=|curl\s+|wget\s+|nc\s+|ncat\s+|ssh\s+|scp\s+|sudo\s+|chmod\s+777)\b/i,pt={name:"bash",description:"Run a short shell command in the project root (cwd fixed). Prefer read/edit/write for file changes. No network/sudo.",parameters:{type:"object",properties:{command:{type:"string",description:"Shell command to run"}},required:["command"]},async execute(t,e){try{let o=v(t.command,"command");if(Tt.test(o))return m("Command blocked by safety policy");let r=e.maxBashMs??At,n=e.maxBashOutputBytes??it,{stdout:s,stderr:a}=await wt("bash",["-lc",o],{cwd:e.root,timeout:r,maxBuffer:n,env:{...process.env,CI:process.env.CI}}),p=[s,a].filter(Boolean).join(`
|
|
13
|
+
`).slice(0,n);return R(p||"(no output)")}catch(o){let r=o;if(r.killed)return m("Command timed out");let n=[r.stderr,r.stdout,r.message].filter(Boolean).join(`
|
|
14
|
+
`).slice(0,it);return m(n||"Command failed")}}};function W(){return[at,lt,ct,pt,...M()]}i(W,"defaultTools");function F(t){return new Map(t.map(e=>[e.name,e]))}i(F,"getToolMap");function B(t){return t.map(e=>({type:"function",function:{name:e.name,description:e.description,parameters:e.parameters}}))}i(B,"toolsToChatDefs");var jt=12;function St(t,e){if(!(!t.projectId||!t.taskId)&&!(e.tokensIn+e.tokensOut<=0))try{N(t.projectId,t.taskId,e.tokensIn,e.tokensOut,{agent:"prjct-agent",model:e.model||t.provider.profile.model,runtime:"prjct",source:"agent-loop"})}catch{}}i(St,"recordRunUsage");function dt(t,e){let o=["You are prjct owned agent (print mode): a careful coding agent.",`Project root: ${t}`,"Use tools to inspect and edit files. Prefer edit over write for small changes.","Prefer prjct_search for project knowledge and prjct_guard before risky edits.","Persist non-obvious outcomes with prjct_remember (English).","A work cycle may already be open for this intent; use prjct_work only if none is active.","Stay inside the project. Do not touch secrets (.env, keys, credentials).","When done, respond with a short summary of what you changed \u2014 no more tool calls.","If the task is unclear or impossible, say so without inventing files."].join(`
|
|
15
|
+
`);return e?`${o}
|
|
16
|
+
|
|
17
|
+
${e}`:o}i(dt,"buildSystemPrompt");function $t(t){try{let e=JSON.parse(t||"{}");return e&&typeof e=="object"&&!Array.isArray(e)?e:{value:e}}catch{return{raw:t}}}i($t,"parseToolArgs");async function q(t){let e=t.tools??W(),o=F(e),r=B(e),n=t.maxSteps??jt,s={root:t.root},a=t.provider.profile,p=[{role:"system",content:dt(t.root,t.systemAppend)},{role:"user",content:t.intent}],u={toolCalls:0,steps:0},g={tokensIn:0,tokensOut:0,model:""};try{for(let c of Array.from({length:n},(d,y)=>y+1)){u.steps=c,t.onStep?.({type:"generate",step:c});let d=await t.provider.generate({messages:p,tools:r,temperature:.2,max_tokens:4096,timeoutMs:t.timeoutMsPerGenerate});d.usage&&(g.tokensIn+=d.usage.prompt_tokens??0,g.tokensOut+=d.usage.completion_tokens??0),d.model&&(g.model=d.model);let y=d.tool_calls??[];if(t.onStep?.({type:"assistant",step:c,content:d.content,tool_calls:y}),y.length===0)return t.onStep?.({type:"done",step:c,content:d.content}),{success:!0,content:d.content,steps:u.steps,toolCalls:u.toolCalls,messages:[...p,{role:"assistant",content:d.content,tool_calls:void 0}],profile:a.name,model:d.model||a.model};p.push({role:"assistant",content:d.content,tool_calls:y});for(let l of y){u.toolCalls++;let h=await vt(l,o,s),ft=h.content.slice(0,200);t.onStep?.({type:"tool",step:c,name:l.function.name,ok:h.ok,preview:ft}),p.push({role:"tool",tool_call_id:l.id,content:h.content,name:l.function.name})}}return{success:!1,content:null,steps:u.steps,toolCalls:u.toolCalls,messages:p,error:`Reached maxSteps (${n}) without a final answer`,profile:a.name,model:a.model}}catch(c){return{success:!1,content:null,steps:u.steps,toolCalls:u.toolCalls,messages:p,error:c instanceof Error?c.message:String(c),profile:a.name,model:a.model}}finally{St(t,g)}}i(q,"runAgent");async function vt(t,e,o){let r=e.get(t.function.name);if(!r)return{ok:!1,content:`Unknown tool: ${t.function.name}`};let n=$t(t.function.arguments);return r.execute(n,o)}i(vt,"executeToolCall");function Ct(t){let e=[];if(t.taskId&&e.push(`Work cycle: ${t.taskId} \u2014 ${t.description??""}`),t.branch&&e.push(`Branch: ${t.branch}`),t.harness&&e.push(`Harness: ${t.harness.level} ${t.harness.kind}/${t.harness.risk}`),t.risks&&t.risks.length>0){e.push("Risks (read before edit):");for(let o of t.risks.slice(0,8))e.push(`- [${o.file}] ${o.label}: ${o.title}`)}if(t.relatedContext&&t.relatedContext.length>0){e.push("Related project memory:");for(let o of t.relatedContext.slice(0,6))e.push(`- (${o.type}) ${o.title}: ${o.detail.slice(0,160)}`)}if(t.likelyFiles&&t.likelyFiles.length>0){e.push("Likely files:");for(let o of t.likelyFiles.slice(0,10))e.push(`- ${o.path}${o.reason?` (${o.reason})`:""}`)}if(t.instructions&&t.instructions.length>0){e.push("Instructions:");for(let o of t.instructions.slice(0,8))e.push(`- ${o}`)}return e.join(`
|
|
18
|
+
`)}i(Ct,"formatStartBrief");function ut(t){return J(t)?["Weak-model mode: be deliberate and tool-heavy.","- Prefer prjct_search / prjct_guard before broad exploration.","- Prefer edit over rewrite; verify with read after edits.","- One clear goal per step; do not invent files or APIs.","- When finished, short factual summary only."].join(`
|
|
19
|
+
`):""}i(ut,"weakModelAppend");async function L(t){let e=[],o=ut(t.profile);o&&e.push(o);let r=await C.getProjectId(t.root).catch(()=>null);if(!r||t.noWork)return{root:t.root,projectId:r,workStarted:!1,systemAppend:e.join(`
|
|
20
|
+
|
|
21
|
+
`)};try{let u=await D.getCurrentTask(r);if(u?.description)return e.push(`Active work cycle already open: ${u.id??"unknown"} \u2014 ${u.description}. Continue that intent; do not start a parallel cycle.`),{root:t.root,projectId:r,workStarted:!1,taskId:u.id,systemAppend:e.join(`
|
|
22
|
+
|
|
23
|
+
`)}}catch{}let n=await Y(r,t.root,t.intent,{skipHooks:!1});if(!n.ok)return e.push(`Work cycle was not started (${n.blocked??"blocked"}). Proceed carefully without a tracked cycle.`),{root:t.root,projectId:r,workStarted:!1,blocked:n.blocked,systemAppend:e.join(`
|
|
24
|
+
|
|
25
|
+
`)};let s=Ct(n);s&&e.push(s);let a=n.isolation?.worktreePath,p=a??t.root;return a&&e.push(`Isolated worktree: ${a} (branch ${n.isolation?.branch}). All file tools use this root.`),{root:p,projectId:r,workStarted:!0,taskId:n.taskId,isolationPath:a,systemAppend:e.join(`
|
|
26
|
+
|
|
27
|
+
`)}}i(L,"prepareOwnedAgentWorkContext");gt();var mt=class extends z{static{i(this,"AgentCommands")}async run(e=null,o=process.cwd(),r={}){if(!K())return b(`${V()}
|
|
28
|
+
|
|
29
|
+
Then: prjct llm set \u2026 && prjct agent "<intent>"`,r);let n=(e??"").trim();if(!n)return b(`Usage: prjct agent "<intent>" [--no-work] [--max-steps N]
|
|
30
|
+
Example: prjct agent "add a hello() function to src/hi.ts"`,r);let s=X();if(!s)return b(`No LLM brain configured. Run: prjct llm set --name <n> --key <K> (or Ollama base-url)
|
|
31
|
+
Then: prjct llm test`,r);let a=await Q();if(!a)return b("Could not resolve LLM provider for the active profile.",r);let p=It.resolve(o),u=typeof r.maxSteps=="number"&&r.maxSteps>0?Math.min(r.maxSteps,40):12,g=await L({root:p,intent:n,profile:s,noWork:r.noWork===!0}).then(l=>({value:l}),l=>({error:l}));if("error"in g)return b(`Work context failed: ${_(g.error)}`,r);let c=g.value,d=c.root;!r.md&&!r.quiet&&(k.info(`Owned agent \xB7 ${s.name} \xB7 ${s.model} \xB7 maxSteps=${u} \xB7 ${d}`),c.workStarted&&c.taskId?k.info(`Work cycle: ${c.taskId}`):c.blocked&&k.info(`Work not started: ${c.blocked}`),c.isolationPath&&k.info(`Isolated worktree: ${c.isolationPath}`));let y=r.quiet?void 0:l=>{r.md||l.type==="tool"&&k.info(` tool ${l.name} ${l.ok?"ok":"fail"}: ${l.preview.slice(0,80)}`)};try{let l=await q({intent:n,root:d,provider:a,maxSteps:u,onStep:y,systemAppend:c.systemAppend||void 0,projectId:c.projectId??void 0,taskId:c.taskId});if(!l.success)return b(l.error??"Agent failed",r);let h=(l.content??"").trim()||"(no summary)";return r.md?(console.log(U(H("Agent done",h),G({profile:l.profile,model:l.model,steps:l.steps,"tool calls":l.toolCalls,work:c.taskId??(c.workStarted?"started":"none"),root:d}))),{success:!0,content:h,steps:l.steps,toolCalls:l.toolCalls,taskId:c.taskId}):(k.done(`Agent finished \xB7 ${l.steps} step(s) \xB7 ${l.toolCalls} tool call(s)`),c.taskId&&k.info(`Work cycle still open: ${c.taskId} (prjct done when ready)`),console.log(h),{success:!0,content:h,steps:l.steps,toolCalls:l.toolCalls,taskId:c.taskId})}catch(l){return b(_(l),r)}}};export{mt as AgentCommands};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { createRequire as __createRequire } from 'module';
|
|
2
|
+
import { fileURLToPath as __fileURLToPath } from 'url';
|
|
3
|
+
import { dirname as __pathDirname } from 'path';
|
|
4
|
+
const require = __createRequire(import.meta.url);
|
|
5
|
+
const __filename = __fileURLToPath(import.meta.url);
|
|
6
|
+
const __dirname = __pathDirname(__filename);
|
|
7
|
+
import{a,b,c,d,e,f,g,h,i}from"./chunk-SO3ZPNWT.mjs";import"./chunk-3TRXQAU4.mjs";export{a as AGENT_CODENAME_POOL,f as CREW_CAST_ROLES,e as PARALLEL_CAST_ROLES,d as assignAgentCast,i as castForFanout,h as formatAgentCastDispatchHint,g as formatAgentCastLine,b as hashSeed,c as pickCodename};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { createRequire as __createRequire } from 'module';
|
|
2
|
+
import { fileURLToPath as __fileURLToPath } from 'url';
|
|
3
|
+
import { dirname as __pathDirname } from 'path';
|
|
4
|
+
const require = __createRequire(import.meta.url);
|
|
5
|
+
const __filename = __fileURLToPath(import.meta.url);
|
|
6
|
+
const __dirname = __pathDirname(__filename);
|
|
7
|
+
import{a,b,c,d,e}from"./chunk-ESB4ALH2.mjs";import"./chunk-SO3ZPNWT.mjs";import"./chunk-3TRXQAU4.mjs";export{a as KNOWN_AGENTS,b as detectRuntimeAgent,d as normalizeAgentName,c as resolveCallerIdentity,e as sameOwner};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { createRequire as __createRequire } from 'module';
|
|
2
|
+
import { fileURLToPath as __fileURLToPath } from 'url';
|
|
3
|
+
import { dirname as __pathDirname } from 'path';
|
|
4
|
+
const require = __createRequire(import.meta.url);
|
|
5
|
+
const __filename = __fileURLToPath(import.meta.url);
|
|
6
|
+
const __dirname = __pathDirname(__filename);
|
|
7
|
+
import{a,b,c,d,e}from"./chunk-JPMUJY42.mjs";import"./chunk-6RT2P22O.mjs";import"./chunk-D62TAZG6.mjs";import"./chunk-DOJPSIMG.mjs";import"./chunk-HYIT7MF5.mjs";import"./chunk-225DWS4D.mjs";import"./chunk-3TRXQAU4.mjs";export{a as AGENT_RUNTIME_REGISTRY,e as detectAgentRuntimes,b as getAgentRuntime,c as listAgentRuntimes,d as listProjectRuleTargets};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { createRequire as __createRequire } from 'module';
|
|
2
|
+
import { fileURLToPath as __fileURLToPath } from 'url';
|
|
3
|
+
import { dirname as __pathDirname } from 'path';
|
|
4
|
+
const require = __createRequire(import.meta.url);
|
|
5
|
+
const __filename = __fileURLToPath(import.meta.url);
|
|
6
|
+
const __dirname = __pathDirname(__filename);
|
|
7
|
+
import{a,b,c,d}from"./chunk-UNIBFM6J.mjs";import"./chunk-XC6YAP36.mjs";import"./chunk-6U3MV7KZ.mjs";import"./chunk-VRFYDYQY.mjs";import"./chunk-6XTLPAPZ.mjs";import"./chunk-L5LFLI4R.mjs";import"./chunk-AS3LWTQ4.mjs";import"./chunk-UAYTDSYG.mjs";import"./chunk-NNILF7R3.mjs";import"./chunk-NZKUCQZK.mjs";import"./chunk-H2KNJUPN.mjs";import"./chunk-6FUCOGOW.mjs";import"./chunk-6U3CYLY5.mjs";import"./chunk-ESB4ALH2.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-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-HCPQZRR3.mjs";import"./chunk-EHVU2SMR.mjs";import"./chunk-HPCSSJXH.mjs";import"./chunk-E5QQDYBR.mjs";import"./chunk-B7AQHL7B.mjs";import"./chunk-L4TUXFCL.mjs";import"./chunk-ID2C2S33.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-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"./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 acceptAgentHandoff,c as formatPendingHandoffCue,d as launchTargetAgent,a as switchAgent};
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { createRequire as __createRequire } from 'module';
|
|
2
|
+
import { fileURLToPath as __fileURLToPath } from 'url';
|
|
3
|
+
import { dirname as __pathDirname } from 'path';
|
|
4
|
+
const require = __createRequire(import.meta.url);
|
|
5
|
+
const __filename = __fileURLToPath(import.meta.url);
|
|
6
|
+
const __dirname = __pathDirname(__filename);
|
|
7
|
+
import{a as m}from"./chunk-MR5XXHRK.mjs";import{a as y,b as h}from"./chunk-YOWW4LHK.mjs";import"./chunk-5OWPZWEU.mjs";import"./chunk-SLYLGDX7.mjs";import"./chunk-JGGQSMZC.mjs";import{b as A}from"./chunk-J6Y7IVFQ.mjs";import"./chunk-UAYTDSYG.mjs";import"./chunk-NNILF7R3.mjs";import"./chunk-NZKUCQZK.mjs";import"./chunk-H2KNJUPN.mjs";import{a as C}from"./chunk-5DZ2LTII.mjs";import{e as p}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{a as M}from"./chunk-QWRPJARA.mjs";import"./chunk-ACIOJQSI.mjs";import"./chunk-YOGI4WE6.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"./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-YLYAYRSJ.mjs";import"./chunk-Q6C27OL7.mjs";import"./chunk-NXUIMC22.mjs";import{e as R}from"./chunk-JPMUJY42.mjs";import"./chunk-O5VCBMEK.mjs";import"./chunk-DZDEBDAB.mjs";import"./chunk-LFOQ7FCR.mjs";import"./chunk-DZVOFEM5.mjs";import"./chunk-5EF5EOCL.mjs";import"./chunk-5TGZSK4C.mjs";import"./chunk-DMO3ZFUG.mjs";import"./chunk-NNOX3UU4.mjs";import"./chunk-HVXWQ2XZ.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-TIBYHZFA.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-5ZBACKED.mjs";import"./chunk-DW4QMD6J.mjs";import"./chunk-DOJPSIMG.mjs";import"./chunk-HYIT7MF5.mjs";import{e as f,g as k}from"./chunk-225DWS4D.mjs";import{a}from"./chunk-3TRXQAU4.mjs";k();var j=class extends C{static{a(this,"AgentsCommands")}async agents(n=null,i=process.cwd(),t={}){let e=(n??"").trim().toLowerCase().split(/\s+/).filter(Boolean),r=e[0]??"doctor";if(r!=="doctor"&&r!=="status"&&r!=="list"&&r!=="surfaces")return p("Unknown agents subcommand. Use: prjct agents doctor | surfaces [--detail]",t);try{if(r==="surfaces"){let d=e.includes("--detail")||e.includes("detail")||t.md,g=m({detail:!!d});return console.log(t.md?g:g.replace(/^## /gm,"").replace(/^### /gm,"")),{success:!0,surfaces:!0}}let o=await R(i),u=t.fix?await $(i,t,o):null;if(u&&!v(u))return u;let l=await y(i);return t.md?console.log([S(o,u),"",h(l)].join(`
|
|
8
|
+
`)):(console.log(b(o,u)),console.log(`organic: ${l.liveCount}/${l.detectedCount} live (${l.organicPct}%) \u2014 ${l.summary}`)),{success:!0,runtimes:o.length,detected:o.filter(d=>d.detected).length,fixed:!!u,organicPct:l.organicPct,liveRuntimes:l.liveCount}}catch(o){return p(f(o),t)}}};async function $(s,n,i){let t=await A(s,n);if(!t.ok)return t.result;let e=i.filter(o=>o.detected).map(o=>o.runtime.id),r=await M(s,{explicit:!0,agents:e});return{success:!0,prjctMd:r.prjctMd.action,agentsMd:r.agentsMd.action,claudeMd:r.claudeMd?.action??null,ideRules:r.ideRules}}a($,"repairAgentSurfaces");function v(s){return s.success===!0&&typeof s.prjctMd=="string"&&typeof s.agentsMd=="string"&&(s.claudeMd===null||typeof s.claudeMd=="string")&&Array.isArray(s.ideRules)}a(v,"isAgentRepairResult");function S(s,n=null){let i=["# Agent Compatibility","","| Agent | Detected | Level | AGENTS.md | MCP | Skills | Hooks | ACP | Rules | Evidence |","|---|---:|---|---:|---:|---:|---:|---:|---:|---|"];for(let t of s){let{runtime:e}=t,r=[e.displayName,t.detected?"yes":"no",t.supportLevel,c(e.supports.agentsMd),c(e.supports.mcp),c(e.supports.skills),c(e.supports.hooks),c(e.supports.acp),c(e.supports.projectRules),t.detectedSignals.join(", ")||e.notes].join(" | ");i.push(`| ${r} |`)}return n?.success&&i.push("","## Repair","",`- PRJCT.md: ${n.prjctMd}`,`- AGENTS.md: ${n.agentsMd}`,`- CLAUDE.md: ${n.claudeMd??"skipped (Claude not detected)"}`,`- IDE rule adapters: ${n.ideRules.length>0?n.ideRules.join(", "):"none needed"}`),i.push("","Support levels:","- `full`: benchmark-tier investment (Claude/Codex/Gemini/OpenCode/Cursor/Cline/Grok).","- `good`: AGENTS.md plus MCP-capable runtime.","- `baseline`: repo instructions only; agents can still run `prjct --md`.","- `hosted`: repo instructions are the portable layer; external platform config may be manual.","- `manual`: a portable standard exists, but prjct cannot configure it automatically.","",m({only:s.filter(t=>t.detected&&t.supportLevel==="full").map(t=>t.runtime.id),detail:!1}),"","Deep surface map (hooks events, MCP paths, wire status): `prjct agents surfaces --md`","Grok Build inherits Claude Code hooks/MCP/skills \u2014 `prjct install` covers Grok without a second adapter."),i.join(`
|
|
9
|
+
`)}a(S,"formatMarkdown");function b(s,n=null){let i=s.filter(e=>e.detected),t=["Agent compatibility",""];n?.success&&t.push(`repair: PRJCT.md ${n.prjctMd}; AGENTS.md ${n.agentsMd}; CLAUDE.md ${n.claudeMd??"skipped"}; adapters ${n.ideRules.length>0?n.ideRules.join(", "):"none needed"}`,"");for(let e of s){let r=e.detected?"yes":"no ",o=[e.runtime.supports.agentsMd?"AGENTS.md":null,e.runtime.supports.mcp?"MCP":null,e.runtime.supports.skills?"skills":null,e.runtime.supports.hooks?"hooks":null,e.runtime.supports.acp?"ACP":null,e.runtime.supports.projectRules?"rules":null].filter(Boolean).join(", ");t.push(`${r} ${e.runtime.displayName} [${e.supportLevel}] ${o||"manual"}`),e.detectedSignals.length>0&&t.push(` evidence: ${e.detectedSignals.join(", ")}`)}return t.push("",`${i.length}/${s.length} runtimes detected.`),t.join(`
|
|
10
|
+
`)}a(b,"formatText");function c(s){return s?"yes":"no"}a(c,"yes");export{j as AgentsCommands};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { createRequire as __createRequire } from 'module';
|
|
2
|
+
import { fileURLToPath as __fileURLToPath } from 'url';
|
|
3
|
+
import { dirname as __pathDirname } from 'path';
|
|
4
|
+
const require = __createRequire(import.meta.url);
|
|
5
|
+
const __filename = __fileURLToPath(import.meta.url);
|
|
6
|
+
const __dirname = __pathDirname(__filename);
|
|
7
|
+
import{A as k,B as l,C as m,E as n,q as a,r as b,s as c,t as d,u as e,v as f,w as g,x as h,y as i,z as j}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-DOJPSIMG.mjs";import"./chunk-HYIT7MF5.mjs";import"./chunk-225DWS4D.mjs";import"./chunk-3TRXQAU4.mjs";n();export{a as ClaudeProvider,c as CursorProvider,b as GeminiProvider,d as Providers,g as detectAllProviders,j as detectAntigravity,k as detectCodex,l as detectKimi,e as detectProvider,h as getActiveProvider,i as getProviderBranding,m as selectProvider,f as validateCliVersion};
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { createRequire as __createRequire } from 'module';
|
|
2
|
+
import { fileURLToPath as __fileURLToPath } from 'url';
|
|
3
|
+
import { dirname as __pathDirname } from 'path';
|
|
4
|
+
const require = __createRequire(import.meta.url);
|
|
5
|
+
const __filename = __fileURLToPath(import.meta.url);
|
|
6
|
+
const __dirname = __pathDirname(__filename);
|
|
7
|
+
import{a as G,b as Se,c as b,d as U,e as q,f as H}from"./chunk-STFUT7R7.mjs";import"./chunk-Y7XOKG4O.mjs";import"./chunk-JCWA7NLM.mjs";import{a as ve,b as $e}from"./chunk-TDTPDVUM.mjs";import"./chunk-CFD6CW7T.mjs";import"./chunk-ANBDOI53.mjs";import"./chunk-JT4RNQ67.mjs";import"./chunk-VCSESVZ4.mjs";import{b as v}from"./chunk-J6Y7IVFQ.mjs";import"./chunk-UAYTDSYG.mjs";import"./chunk-NNILF7R3.mjs";import"./chunk-NZKUCQZK.mjs";import"./chunk-H2KNJUPN.mjs";import{a as y,d as R,e as M,g as we,h as E,i as L,j as z}from"./chunk-6POAOY5C.mjs";import{a as ke}from"./chunk-5DZ2LTII.mjs";import{e as ge,f as A}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-HYMJVHAX.mjs";import"./chunk-4T7NGLNQ.mjs";import"./chunk-P2KU4FFA.mjs";import"./chunk-V7R3L54M.mjs";import{a as ye,b as K}from"./chunk-TILUQF6L.mjs";import{a as D}from"./chunk-MPU3VM6Z.mjs";import"./chunk-MG3YN3AI.mjs";import"./chunk-YEALP3WX.mjs";import"./chunk-QZ7T2EYR.mjs";import"./chunk-QWRPJARA.mjs";import"./chunk-ACIOJQSI.mjs";import"./chunk-YOGI4WE6.mjs";import"./chunk-UYMZ3NAF.mjs";import"./chunk-LTKUTRRL.mjs";import"./chunk-HA7Y76GF.mjs";import{e as pe}from"./chunk-AJXELVNH.mjs";import"./chunk-CWLGRKA7.mjs";import"./chunk-2NI4EEK2.mjs";import"./chunk-2VRS5CUH.mjs";import"./chunk-5YLI5V3Q.mjs";import{g as fe}from"./chunk-BUD3R6LF.mjs";import"./chunk-ZQ2XH76U.mjs";import{b as he}from"./chunk-B2HY22OD.mjs";import"./chunk-XLFEWZRA.mjs";import{a as de}from"./chunk-X433BB6F.mjs";import"./chunk-EZRNQXCC.mjs";import"./chunk-KUQLXY2P.mjs";import"./chunk-HCPQZRR3.mjs";import{b as me}from"./chunk-EHVU2SMR.mjs";import"./chunk-HPCSSJXH.mjs";import"./chunk-E5QQDYBR.mjs";import"./chunk-B7AQHL7B.mjs";import"./chunk-L4TUXFCL.mjs";import{h as d}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-JPMUJY42.mjs";import"./chunk-DZVOFEM5.mjs";import"./chunk-5EF5EOCL.mjs";import"./chunk-DTMZBK4E.mjs";import{f as _,i as ce}from"./chunk-DMO3ZFUG.mjs";import"./chunk-NNOX3UU4.mjs";import"./chunk-2FRLIQKX.mjs";import"./chunk-PIA26GWG.mjs";import{a as le,b as Xe}from"./chunk-RP7F67ZT.mjs";import"./chunk-INJ5WT2D.mjs";import{d as ue}from"./chunk-IJNKHQIS.mjs";import{F as ie,G as We,e as J,j as ae,l as X}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 N,b as ne,p as re}from"./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-5ZBACKED.mjs";import"./chunk-DW4QMD6J.mjs";import"./chunk-DOJPSIMG.mjs";import{l as oe,p as Qe}from"./chunk-HYIT7MF5.mjs";import{a as $,e as k,g as I}from"./chunk-225DWS4D.mjs";import{a as m}from"./chunk-3TRXQAU4.mjs";I();re();Qe();import j from"node:fs/promises";import C from"node:path";var Y=class{static{m(this,"CodebaseAnalyzer")}projectPath=null;init(e=process.cwd()){this.projectPath=e}async readPackageJson(){try{let e=C.join(this.projectPath,"package.json"),t=await j.readFile(e,"utf-8");return JSON.parse(t)}catch(e){if($(e)||e instanceof SyntaxError)return null;throw e}}async readCargoToml(){try{let e=C.join(this.projectPath,"Cargo.toml");return await j.readFile(e,"utf-8")}catch(e){if($(e))return null;throw e}}async readRequirements(){try{let e=C.join(this.projectPath,"requirements.txt");return await j.readFile(e,"utf-8")}catch(e){if($(e))return null;throw e}}async readGoMod(){try{let e=C.join(this.projectPath,"go.mod");return await j.readFile(e,"utf-8")}catch(e){if($(e))return null;throw e}}async readGemfile(){try{let e=C.join(this.projectPath,"Gemfile");return await j.readFile(e,"utf-8")}catch(e){if($(e))return null;throw e}}async readMixExs(){try{let e=C.join(this.projectPath,"mix.exs");return await j.readFile(e,"utf-8")}catch(e){if($(e))return null;throw e}}async readPomXml(){try{let e=C.join(this.projectPath,"pom.xml");return await j.readFile(e,"utf-8")}catch(e){if($(e))return null;throw e}}async readComposerJson(){try{let e=C.join(this.projectPath,"composer.json"),t=await j.readFile(e,"utf-8");return JSON.parse(t)}catch(e){if($(e)||e instanceof SyntaxError)return null;throw e}}async readPyprojectToml(){try{let e=C.join(this.projectPath,"pyproject.toml");return await j.readFile(e,"utf-8")}catch(e){if($(e))return null;throw e}}async getFileExtensions(){try{let{stdout:e}=await N('find . -type f ! -path "*/node_modules/*" ! -path "*/.git/*" ! -path "*/dist/*" ! -path "*/.next/*" | sed "s/.*\\./\\./" | sort | uniq -c | sort -rn',{cwd:this.projectPath}),t={};return e.trim().split(`
|
|
8
|
+
`).filter(Boolean).forEach(o=>{let s=o.trim().match(/^\s*(\d+)\s+(\.\w+)$/);s&&(t[s[2]]=parseInt(s[1],10))}),t}catch{return{}}}async listConfigFiles(){try{let e=await j.readdir(this.projectPath),t=[/^package\.json$/,/^Cargo\.toml$/,/^go\.mod$/,/^requirements\.txt$/,/^Gemfile$/,/^mix\.exs$/,/^pom\.xml$/,/^composer\.json$/,/^pyproject\.toml$/,/^tsconfig.*\.json$/,/^\..*rc(\.json|\.js|\.cjs)?$/,/^Dockerfile$/,/^docker-compose.*\.ya?ml$/,/^\.env.*$/];return e.filter(o=>t.some(s=>s.test(o)))}catch(e){if($(e))return[];throw e}}async listDirectories(){try{return(await j.readdir(this.projectPath,{withFileTypes:!0})).filter(t=>t.isDirectory()).map(t=>t.name).filter(t=>!t.startsWith(".")&&t!=="node_modules")}catch(e){if($(e))return[];throw e}}async getGitLog(e=50){try{let{stdout:t}=await N(`git log -n ${e} --pretty=format:"%h|%an|%ar|%s"`,{cwd:this.projectPath});return t}catch{return""}}async getGitStats(){try{let{stdout:e}=await N("git rev-list --count HEAD",{cwd:this.projectPath}),{stdout:t}=await N('git log --format="%an" | sort -u | wc -l',{cwd:this.projectPath}),{stdout:o}=await N('git log --reverse --pretty=format:"%ar" | head -1',{cwd:this.projectPath});return{totalCommits:parseInt(e.trim(),10)||0,contributors:parseInt(t.trim(),10)||0,age:o.trim()||"unknown"}}catch{return{totalCommits:0,contributors:0,age:"unknown"}}}async countFiles(){try{let{stdout:e}=await N('find . -type f ! -path "*/node_modules/*" ! -path "*/.git/*" ! -path "*/dist/*" | wc -l',{cwd:this.projectPath});return parseInt(e.trim(),10)||0}catch{return 0}}async fileExists(e){return oe(C.join(this.projectPath,e))}async readFile(e){try{let t=C.join(this.projectPath,e);return await j.readFile(t,"utf-8")}catch(t){if($(t))return null;throw t}}async findFiles(e){try{let{stdout:t}=await N(`find . -type f -name "${e}" ! -path "*/node_modules/*" ! -path "*/.git/*"`,{cwd:this.projectPath});return t.trim().split(`
|
|
9
|
+
`).filter(Boolean)}catch{return[]}}},Ke=new Y,S=Ke;We();import je from"node:fs/promises";import Pe from"node:path";Xe();var V=800,Z=6,Ye=8,Ze=5;async function ee(r,e,t,o){let[s,i,n,a]=await Promise.all([et(r,e,o),tt(r),st(r),nt(r)]);return{project:{name:o.name,ecosystem:o.ecosystem,languages:o.languages,frameworks:o.frameworks,fileCount:o.fileCount,projectType:o.projectType},git:{branch:t.branch,recentCommits:t.recentCommits.slice(0,Ye).map(u=>({message:u.message,date:u.date})),hasChanges:t.hasChanges,weeklyCommits:t.weeklyCommits},codeSamples:s,existingPatterns:i,taskHistory:n,previousAnalysis:a??void 0}}m(ee,"buildAnalysisPayload");async function et(r,e,t){let o=[],s=[...t.frameworks.map(a=>a.toLowerCase()),"config","router","middleware","service","model","schema","database","api","auth"].join(" "),i=pe(r,s,Z*2);for(let a of i){if(o.length>=Z)break;try{let u=Pe.join(e,a.path),c=await je.readFile(u,"utf-8");c.length>V*3?o.push({path:a.path,content:`${c.slice(0,V)}
|
|
10
|
+
// ... truncated`,reason:`BM25 score: ${a.score.toFixed(2)} (truncated, ${c.length} chars)`}):o.push({path:a.path,content:c.slice(0,V),reason:`BM25 score: ${a.score.toFixed(2)}`})}catch{}}let n=["package.json","tsconfig.json","src/index.ts","src/main.ts","app.ts"];for(let a of n){if(o.length>=Z)break;if(!o.some(u=>u.path===a))try{let u=Pe.join(e,a),c=await je.readFile(u,"utf-8");o.push({path:a,content:c.slice(0,V),reason:"entry point"})}catch{}}return o}m(et,"selectCodeSamples");async function tt(r){try{let e=await b.getActive(r);return e?{patterns:(e.patterns??[]).map(t=>({name:t.name,description:t.description})),antiPatterns:(e.antiPatterns??[]).map(t=>({issue:t.issue,file:t.file,suggestion:t.suggestion}))}:{patterns:[],antiPatterns:[]}}catch{return{patterns:[],antiPatterns:[]}}}m(tt,"getExistingPatterns");async function st(r){try{return(await me.getTaskHistory(r)).slice(0,Ze).map(t=>({description:t.title,status:t.classification,branch:t.branchName}))}catch{return[]}}m(st,"getTaskHistory");function nt(r){try{let e=D.getActiveSummary(r);return Promise.resolve(e)}catch(e){return le.debug("Failed to get previous LLM analysis summary",{error:e}),Promise.resolve(null)}}m(nt,"getPreviousAnalysisSummary");I();X();ce();I();async function be(r=process.cwd(),e={}){try{let t=await v(r);if(!t.ok)return e.json&&console.log(JSON.stringify({success:!1,error:"No project ID found"})),t.result;let o=t.value,s=await b.seal(o);return e.json?(console.log(JSON.stringify({success:s.success,signature:s.signature,error:s.error})),{success:s.success,error:s.error}):s.success?(d.done("Analysis sealed"),console.log(` Signature: ${s.signature?.substring(0,16)}...`),console.log(""),{success:!0,data:{signature:s.signature}}):(d.fail(s.error||"Seal failed"),{success:!1,error:s.error})}catch(t){let o=k(t);return e.json?console.log(JSON.stringify({success:!1,error:o})):d.fail(o),{success:!1,error:o}}}m(be,"seal");async function Ce(r=process.cwd(),e={}){try{let t=await v(r);if(!t.ok)return e.json&&console.log(JSON.stringify({success:!1,error:"No project ID found"})),t.result;let o=t.value,s=await b.rollback(o);return e.json?(console.log(JSON.stringify({success:s.success,restoredSignature:s.restoredSignature,error:s.error})),{success:s.success,error:s.error}):e.md?s.success?(console.log(y(L("Analysis Rolled Back"),E({"Restored signature":`${s.restoredSignature?.substring(0,16)}...`,Note:"Previous sealed version is now active. Current version moved to draft."}))),{success:!0,data:{restoredSignature:s.restoredSignature}}):(console.log(y("## Rollback Failed",`> ${s.error}`)),{success:!1,error:s.error}):s.success?(d.done("Analysis rolled back to previous sealed version"),console.log(` Restored signature: ${s.restoredSignature?.substring(0,16)}...`),console.log(" Previous sealed version demoted to draft"),console.log(""),{success:!0,data:{restoredSignature:s.restoredSignature}}):(d.fail(s.error||"Rollback failed"),{success:!1,error:s.error})}catch(t){let o=k(t);return e.json?console.log(JSON.stringify({success:!1,error:o})):e.md?console.log(y("## Rollback Failed",`> ${o}`)):d.fail(o),{success:!1,error:o}}}m(Ce,"rollback");async function xe(r=process.cwd(),e={}){if(e.semantic)return te(r,e);try{let t=await v(r);if(!t.ok)return t.result;let o=t.value,s=await b.verify(o);return e.json?(console.log(JSON.stringify(s)),{success:s.valid}):(s.valid?d.done(s.message):d.fail(s.message),console.log(""),{success:s.valid,data:s})}catch(t){let o=k(t);return ge(o)}}m(xe,"verify");async function te(r=process.cwd(),e={}){try{let t=await v(r);if(!t.ok)return e.json?console.log(JSON.stringify({success:!1,error:"No project ID found"})):d.fail("No project ID found"),t.result;let o=t.value,s=(()=>{try{return _.getDoc(o,"project")?.repoPath||r}catch{return r}})(),i=await b.semanticVerify(o,s);if(e.json)return console.log(JSON.stringify(i)),{success:i.passed,data:i};console.log(""),i.passed?(d.done("Semantic verification passed"),console.log(` ${i.passedCount}/${i.checks.length} checks passed (${i.totalMs}ms)`)):(d.fail("Semantic verification failed"),console.log(` ${i.failedCount}/${i.checks.length} checks failed`)),console.log(""),console.log("Check Results:");for(let n of i.checks){let a=n.passed?"\u2713":"\u2717",u=n.passed?`${n.output} (${n.durationMs}ms)`:n.error||"Failed";console.log(` ${a} ${n.name}: ${u}`)}return console.log(""),{success:i.passed,data:i}}catch(t){let o=k(t);return e.json?console.log(JSON.stringify({success:!1,error:o})):d.fail(o),{success:!1,error:o}}}m(te,"semanticVerifyCommand");import De from"node:fs/promises";import Re from"node:path";import{z as l}from"zod";var rt=l.object({style:l.string(),insights:l.array(l.string()),domains:l.array(l.string())}),ot=l.object({name:l.string(),description:l.string(),locations:l.array(l.string()),confidence:l.number().min(0).max(1),category:l.string()}),at=l.object({issue:l.string(),reasoning:l.string(),files:l.array(l.string()),suggestion:l.string(),severity:l.enum(["low","medium","high"]),confidence:l.number().min(0).max(1)}),it=l.object({description:l.string(),area:l.string(),effort:l.enum(["small","medium","large"]),impact:l.string(),priority:l.enum(["low","medium","high"])}),ct=l.object({path:l.string(),reason:l.string(),risk:l.string(),severity:l.enum(["low","medium","high"])}),lt=l.object({description:l.string(),files:l.array(l.string()),benefit:l.string(),effort:l.enum(["small","medium","large"])}),ut=l.object({category:l.string(),rule:l.string(),example:l.string().optional()}),mt=l.object({build:l.string().optional(),test:l.string().optional(),lint:l.string().optional(),dev:l.string().optional(),format:l.string().optional(),install:l.string().optional()}),gt=l.object({languages:l.array(l.string()),frameworks:l.array(l.string()),packageManager:l.string().optional()}),dt=l.object({version:l.literal(1),commitHash:l.string().nullable(),analyzedAt:l.string(),architecture:rt,patterns:l.array(ot),antiPatterns:l.array(at),techDebt:l.array(it),riskAreas:l.array(ct),refactorSuggestions:l.array(lt),projectInsights:l.array(l.string()),conventions:l.array(ut),commands:mt.optional(),stack:gt.optional()});function Ae(r){let e=dt.safeParse(r);return e.success?{ok:!0,value:e.data}:{ok:!1,error:e.error.issues.map(o=>`${o.path.length>0?o.path.join("."):"<root>"}: ${o.message}`).join("; ")}}m(Ae,"parseLlmAnalysis");X();re();async function Le(r,e=process.cwd(),t={}){try{let o=await v(e);if(!o.ok)return o.result;let s=o.value,i=await ft(r,e),n=await ht(i.content,e),a=D.getActive(s),u=!!(a&&ye(a)&&K(n)),c=u?pt(a,n):n;D.save(s,c);try{let{recomputeProjectStyle:f}=await import("./project-style-evolution-HIMSJQQB.mjs"),{gatherStats:h,detectStack:x,detectCommands:B}=await import("./sync-analyzer-M37Q4LE4.mjs"),[T,P,Q]=await Promise.all([h(e),x(e),B(e)]);await f({projectId:s,projectPath:e,stats:T,stack:P,commands:Q,commitHash:c.commitHash,source:"analysis-save"})}catch{}let p=K(c)&&!u;if(t.md){let h=[L(u?"LLM Analysis Notes Merged (house style preserved)":p?"LLM Analysis Notes Saved (thin \u2014 not house style)":"LLM Analysis Saved"),E({Input:i.source,Architecture:c.architecture.style,Patterns:c.patterns.length,"Anti-patterns":c.antiPatterns?.length||0,"Tech debt items":c.techDebt?.length||0,"Risk areas":c.riskAreas?.length||0,Conventions:c.conventions?.length||0,...u?{Merge:"thin notes \u2192 existing rich analysis"}:{},...p?{Kind:"thin markdown/notes"}:{}})];p&&h.push(z("Prefer schema v1 JSON (architecture/patterns/conventions) via `prjct analysis-save-llm <file> --md`. Markdown alone leaves patterns empty and burns a retry loop.")),console.log(y(...h))}else console.log(JSON.stringify({success:!0,message:u?"LLM analysis notes merged into existing rich analysis":p?"LLM analysis thin notes saved (prefer schema v1 JSON for house style)":"LLM analysis saved",input:i.source,mergedNotes:u,thin:p,stats:{patterns:c.patterns.length,antiPatterns:c.antiPatterns?.length||0,techDebt:c.techDebt?.length||0},...p?{tip:"Prefer schema v1 JSON (architecture/patterns/conventions). Markdown alone is thin notes."}:{}}));return{success:!0}}catch(o){return A(o)}}m(Le,"saveLlmAnalysis");function pt(r,e){let t=m((o,s,i)=>{let n=[],a=new Set;for(let u of[...o,...s]){let c=u.toLowerCase();if(!(a.has(c)||!u.trim())&&(a.add(c),n.push(u),n.length>=i))break}return n},"mergeUnique");return{...r,analyzedAt:e.analyzedAt,commitHash:e.commitHash??r.commitHash,projectInsights:t(r.projectInsights??[],e.projectInsights??[],60),architecture:{...r.architecture,insights:t(r.architecture.insights??[],e.architecture.insights??[],24)}}}m(pt,"mergeThinNotesIntoRich");async function ft(r,e){let t=r.trim();if(!t)throw new Error("analysis-save-llm requires analysis text, JSON, or a file path");let o=Re.isAbsolute(t)?t:Re.resolve(e,t);try{if((await De.stat(o)).isFile())return{content:await De.readFile(o,"utf-8"),source:"file"}}catch{}return{content:r,source:"inline"}}m(ft,"resolveAnalysisInput");async function ht(r,e){let t=r.trim();if(!t)throw new Error("analysis-save-llm received an empty analysis");let o=yt(t);if(o.ok){let s=Ae(o.value);return s.ok?s.value:Me(`Structured analysis did not match the legacy schema; preserved as LLM notes.
|
|
11
|
+
|
|
12
|
+
${JSON.stringify(o.value,null,2)}`,e)}return Me(t,e)}m(ht,"normalizeAnalysis");function yt(r){try{return{ok:!0,value:JSON.parse(r)}}catch{return{ok:!1}}}m(yt,"tryParseJson");async function Me(r,e){let t=St(r);return{version:1,commitHash:await vt(e),analyzedAt:J(),architecture:{style:"unknown",insights:t.slice(0,8),domains:[]},patterns:[],antiPatterns:[],techDebt:[],riskAreas:[],refactorSuggestions:[],projectInsights:t,conventions:[]}}m(Me,"analysisFromText");function St(r){let e=r.split(/\r?\n/).map(s=>s.replace(/^\s{0,3}#{1,6}\s+/,"").replace(/^\s*[-*]\s+\[[ xX]\]\s+/,"").replace(/^\s*[-*]\s+/,"").replace(/^\s*\d+[.)]\s+/,"").trim()).filter(wt),t=[],o=new Set;for(let s of e){let i=s.toLowerCase();if(!o.has(i)&&(o.add(i),t.push(s),t.length>=40))break}return t.length>0?t:[r.slice(0,2e3)]}m(St,"textToInsights");function wt(r){if(!r||!/[\p{L}\p{N}]/u.test(r))return!1;let e=r.toLowerCase().replace(/\s+/g," ").trim();return!(["current work","wip","misc","todo","n/a","none","latest","unreleased","changelog"].includes(e)||/^[-=_]{3,}$/.test(e)||/^(added|changed|fixed|removed)$/i.test(e)||/^v?\d+\.\d+\.\d+(?:-[\w.-]+)?$/i.test(e))}m(wt,"isUsefulInsight");async function vt(r){try{let{stdout:e}=await ne("git",["rev-parse","HEAD"],{cwd:r});return e.trim()||null}catch{return null}}m(vt,"resolveCurrentCommit");async function Ne(r=process.cwd(),e={}){try{let t=await v(r);if(!t.ok)return t.result;let o=t.value,s=D.getActive(o);if(!s)return e.md?console.log(y("## No LLM Analysis","> Run `prjct sync` to generate.")):console.log(JSON.stringify({success:!1,message:"No LLM analysis found"})),{success:!1,message:"No LLM analysis found"};if(e.md){let i=[L(`LLM Analysis (${s.architecture.style})`),""];if(s.architecture.insights.length>0&&i.push(R("Architecture Insights",M(s.architecture.insights.slice(0,5)))),s.patterns.length>0){let n=s.patterns.slice(0,8);i.push(R(`Patterns (${s.patterns.length})`,M(n.map(a=>`**${a.name}** \u2014 ${a.description} (${a.category})`))))}if(s.antiPatterns.length>0){let n=s.antiPatterns.slice(0,5);i.push(R(`Anti-Patterns (${s.antiPatterns.length})`,M(n.map(a=>`[${a.severity}] ${a.issue} \u2014 ${a.suggestion}`))))}if(s.techDebt.length>0){let n=s.techDebt.slice(0,5);i.push(R(`Tech Debt (${s.techDebt.length})`,M(n.map(a=>`[${a.priority}/${a.effort}] ${a.description}`))))}s.conventions.length>0&&i.push(R("Conventions",M(s.conventions.slice(0,5).map(n=>`**${n.category}**: ${n.rule}`)))),console.log(y(...i))}else{let i={...s,patterns:s.patterns.slice(0,10),antiPatterns:s.antiPatterns.slice(0,6),techDebt:s.techDebt.slice(0,6),conventions:s.conventions.slice(0,6)};console.log(JSON.stringify({success:!0,analysis:i}))}return{success:!0,data:s}}catch(t){return A(t)}}m(Ne,"getLlmAnalysis");ce();I();import kt from"node:path";X();async function Te(r,e){let t=Date.now()-e;await ue.installGlobalConfig(),d.done(`Synced ${r.stats.name||"project"} (${(t/1e3).toFixed(1)}s)`),console.log("");let o=r.stats.frameworks.length>0?` (${r.stats.frameworks[0]})`:"",s=r.syncMetrics?.indexes,i=[`${r.stats.fileCount} files indexed`,`Stack: ${r.stats.ecosystem}${o} | Branch: ${r.git.branch}`];if(s?.bm25Files){let a=s.bm25Files*(s.bm25AvgTokens||0);i.push(`Index: ${O(a)} tokens | ${s.bm25VocabSize||0} terms | ${s.importEdges||0} imports`)}d.box("Sync Summary",i.join(`
|
|
13
|
+
`));let n=[];if(r.generatedSkills?.generated&&r.generatedSkills.generated.length>0){let a=r.generatedSkills.generated.length,u=a===1?"skill":"skills";n.push(`${a} ${u} generated`)}if(r.context7&&n.push(`Context7: ${r.context7.verified?"verified":`not ready${r.context7.message?` (${r.context7.message})`:""}`}`),r.analysisSummary&&n.push(`Analysis: ${r.analysisSummary.patterns} patterns | ${r.analysisSummary.antiPatterns} anti-patterns (${r.analysisSummary.criticalAntiPatterns} critical)`),r.contextQuality){let a=r.contextQuality,u=a.irrelevantRemoved>0||a.repairEntriesCreated>0?`, repaired ${a.repairEntriesCreated}, removed ${a.irrelevantRemoved}`:"";n.push(`Context quality: ${a.score}/${a.threshold}${a.passed?"":" (needs review)"}${u}`)}if(d.section("Generated"),d.list(n,{bullet:"\u2713"}),console.log(""),r.phaseTimings&&r.phaseTimings.length>0){let a=[...r.phaseTimings].sort((u,c)=>c.ms-u.ms).slice(0,3).map(u=>`${u.phase} ${(u.ms/1e3).toFixed(1)}s`).join(", ");console.log(`Slowest phases: ${a}`),console.log("")}if(r.git.hasChanges&&(d.warn("Uncommitted changes detected"),console.log("")),r.verification){let a=r.verification;if(a.passed){let u=a.checks.map(c=>`${c.name} (${c.durationMs}ms)`);d.section("Verified"),d.list(u,{bullet:"\u2713"})}else{d.section("Verification");let u=a.checks.map(c=>c.passed?`\u2713 ${c.name}`:`\u2717 ${c.name}${c.error?` \u2014 ${c.error}`:""}`);d.list(u),a.skippedCount>0&&d.warn(`${a.skippedCount} check(s) skipped (fail-fast)`)}console.log("")}return ve("sync"),{success:!0,data:r,metrics:{elapsed:t,fileCount:r.stats.fileCount}}}m(Te,"showSyncResult");async function Fe(r){try{let e=await de.getRecentEvents(r,100),t=new Date().toISOString().split("T")[0],o=e.filter(c=>(c.timestamp||c.ts)?.startsWith(t)),s=(()=>{if(o.length<2)return null;let c=o.map(f=>new Date(f.timestamp||f.ts).getTime()).filter(f=>!Number.isNaN(f)).sort((f,h)=>f-h);if(c.length<2)return null;let p=c[c.length-1]-c[0];return ae(p)})(),i=o.filter(c=>c.action==="task_completed").length,n=o.filter(c=>c.action==="feature_shipped").length,a=new Map;for(let c of o)if(c.action==="sync"&&Array.isArray(c.subagents))for(let p of c.subagents)a.set(p,(a.get(p)||0)+1);let u=Array.from(a.entries()).map(([c,p])=>({name:c,count:p})).sort((c,p)=>p.count-c.count);return{sessionDuration:s,tasksCompleted:i,featuresShipped:n,agentsUsed:u}}catch{return{sessionDuration:null,tasksCompleted:0,featuresShipped:0,agentsUsed:[]}}}m(Fe,"getSessionActivity");function O(r){return r>=1e6?`${(r/1e6).toFixed(1)}M`:r>=1e3?`${(r/1e3).toFixed(1)}K`:r.toLocaleString()}m(O,"formatTokens");function se(r){return r<1e3?`${Math.round(r)}ms`:`${(r/1e3).toFixed(1)}s`}m(se,"formatDuration");function Ee(r){if(r.length===0)return"";let e="\u2581\u2582\u2583\u2584\u2585\u2586\u2587\u2588",t=r.map(s=>s.tokensSaved),o=Math.max(...t,1);return t.map(s=>{let i=Math.min(Math.floor(s/o*(e.length-1)),e.length-1);return e[i]}).join("")}m(Ee,"generateSparkline");function Oe(r,e,t,o,s,i){let n=[];if(n.push(`# ${t} - Stats Dashboard`),n.push(""),n.push(`_Generated: ${new Date().toLocaleString()} | Tracking since: ${o}_`),n.push(""),s){if(n.push("## Today's Activity"),n.push(""),n.push("| Metric | Value |"),n.push("|--------|-------|"),s.sessionDuration&&n.push(`| Duration | ${s.sessionDuration} |`),n.push(`| Tasks completed | ${s.tasksCompleted} |`),n.push(`| Features shipped | ${s.featuresShipped} |`),s.agentsUsed.length>0){let a=s.agentsUsed.slice(0,3).map(u=>`${u.name} (${u.count}\xD7)`).join(", ");n.push(`| Agents used | ${a} |`)}n.push("")}if(i&&(i.decisions>0||i.preferences>0)&&(n.push("## Patterns Learned"),n.push(""),n.push("| Type | Count |"),n.push("|------|-------|"),n.push(`| Decisions | ${i.learnedDecisions} confirmed (${i.decisions} total) |`),n.push(`| Preferences | ${i.preferences} |`),n.push(`| Workflows | ${i.workflows} |`),n.push("")),n.push("## Context Efficiency"),n.push(""),n.push("| Metric | Value |"),n.push("|--------|-------|"),n.push(`| Tokens reduced | ${O(r.totalTokensSaved)} |`),n.push(`| Compression | ${(r.compressionRate*100).toFixed(0)}% |`),n.push(`| Est. cost saved | ${U(r.estimatedCostSaved)} |`),n.push(""),n.push("## Performance"),n.push(""),n.push("| Metric | Value |"),n.push("|--------|-------|"),n.push(`| Syncs | ${r.syncCount} |`),n.push(`| Avg time | ${se(r.avgSyncDuration)} |`),n.push(""),r.topAgents.length>0){n.push("## Agent Usage"),n.push(""),n.push("| Agent | Usage |"),n.push("|-------|-------|");let a=r.topAgents.reduce((u,c)=>u+c.usageCount,0);for(let u of r.topAgents){let c=a>0?(u.usageCount/a*100).toFixed(0):0;n.push(`| ${u.agentName} | ${c}% (${u.usageCount}) |`)}n.push("")}if(n.push("## 30-Day Trend"),n.push(""),n.push(`- Tokens saved: ${O(r.last30DaysTokens)}`),r.trend!==0){let a=r.trend>0?"+":"";n.push(`- Trend: ${a}${r.trend.toFixed(0)}% vs previous period`)}return n.push(""),n.push("---"),n.push(""),n.push("_Generated with [prjct-cli](https://prjct.app)_"),n.join(`
|
|
14
|
+
`)}m(Oe,"generateStatsMarkdown");function Ie(r,e){let t=[];t.push(`# Repository Analysis
|
|
15
|
+
`),t.push(`Generated: ${new Date().toLocaleString()}
|
|
16
|
+
`);let o=kt.basename(e);if(t.push(`## Project: ${o}
|
|
17
|
+
`),t.push(`## Stack Detected
|
|
18
|
+
`),r.packageJson){let n=r.packageJson;if(t.push(`### JavaScript/TypeScript
|
|
19
|
+
`),t.push("- **Package Manager**: npm/yarn/pnpm"),n.dependencies){let a=Object.keys(n.dependencies);a.length>0&&t.push(`- **Dependencies**: ${a.slice(0,10).join(", ")}${a.length>10?` (+${a.length-10} more)`:""}`)}r.hasNextConfig&&t.push("- **Framework**: Next.js detected"),r.hasViteConfig&&t.push("- **Build Tool**: Vite detected"),r.hasTsconfig&&t.push("- **Language**: TypeScript"),t.push("")}r.cargoToml&&(t.push(`### Rust
|
|
20
|
+
`),t.push("- **Package Manager**: Cargo"),t.push(`- **Language**: Rust
|
|
21
|
+
`)),r.goMod&&(t.push(`### Go
|
|
22
|
+
`),t.push("- **Package Manager**: Go modules"),t.push(`- **Language**: Go
|
|
23
|
+
`)),r.requirements&&(t.push(`### Python
|
|
24
|
+
`),t.push("- **Package Manager**: pip"),t.push(`- **Language**: Python
|
|
25
|
+
`));let s=r.directories;t.push(`## Structure
|
|
26
|
+
`),t.push(`- **Total Files**: ${r.fileCount}`),t.push(`- **Directories**: ${s?.slice(0,15).join(", ")||"none"}${(s?.length||0)>15?` (+${(s?.length||0)-15} more)`:""}`),r.hasDockerfile&&t.push("- **Docker**: Detected"),r.hasDockerCompose&&t.push("- **Docker Compose**: Detected"),r.hasReadme&&t.push("- **Documentation**: README.md found"),t.push("");let i=r.gitStats;return t.push(`## Git Statistics
|
|
27
|
+
`),t.push(`- **Total Commits**: ${i?.totalCommits||0}`),t.push(`- **Contributors**: ${i?.contributors||0}`),t.push(`- **Age**: ${i?.age||"unknown"}`),t.push(""),r.gitLog&&(t.push(`## Recent Activity
|
|
28
|
+
`),r.gitLog.split(`
|
|
29
|
+
`).slice(0,5).forEach(a=>{if(a.trim()){let[u,,c,p]=a.split("|");t.push(`- \`${u}\` ${p} (${c})`)}}),t.push("")),t.push(`## Recommendations
|
|
30
|
+
`),t.push("Based on detected stack, consider generating specialized agents using `p. sync`.\n"),t.push(`---
|
|
31
|
+
`),t.push("*This analysis was generated automatically. For updated information, run `p. analyze` again.*\n"),t.join(`
|
|
32
|
+
`)}m(Ie,"generateAnalysisSummary");async function Je(r=process.cwd(),e={}){try{let t=await v(r);if(!t.ok)return t.result;let o=t.value,s=await q.getSummary(o),i=await q.getDailyStats(o,30),n=await Fe(o),a={decisions:0,preferences:0,workflows:0,learnedDecisions:0};if(e.json){let f={session:n,patterns:a,totalTokensSaved:s.totalTokensSaved,estimatedCostSaved:s.estimatedCostSaved,compressionRate:s.compressionRate,syncCount:s.syncCount,avgSyncDuration:s.avgSyncDuration,topAgents:s.topAgents.slice(0,5),last30DaysTokens:s.last30DaysTokens,trend:s.trend,dailyStats:i.slice(0,7)};return console.log(JSON.stringify(f)),{success:!0,data:f}}let u=(()=>{try{return _.getDoc(o,"project")?.name||"Unknown"}catch{return"Unknown"}})(),c=await q.getFirstSyncDate(o),p=c?new Date(c).toLocaleDateString("en-US",{month:"short",day:"numeric",year:"numeric"}):"N/A";if(console.log(""),console.log("\u256D\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256E"),console.log("\u2502 \u{1F4CA} prjct-cli Stats Dashboard \u2502"),console.log(`\u2502 Project: ${u.padEnd(20).slice(0,20)} | Since: ${p.padEnd(12).slice(0,12)} \u2502`),console.log("\u2570\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256F"),console.log(""),console.log("\u{1F3AF} TODAY'S ACTIVITY"),n.sessionDuration&&console.log(` Duration: ${n.sessionDuration}`),console.log(` Tasks completed: ${n.tasksCompleted}`),console.log(` Features shipped: ${n.featuresShipped}`),n.agentsUsed.length>0){let f=n.agentsUsed.slice(0,3).map(h=>`${h.name} (${h.count}\xD7)`).join(", ");console.log(` Agents used: ${f}`)}if(console.log(""),(a.decisions>0||a.preferences>0)&&(console.log("\u{1F9E0} PATTERNS LEARNED"),console.log(` Decisions: ${a.learnedDecisions} confirmed (${a.decisions} total)`),console.log(` Preferences: ${a.preferences} saved`),console.log(` Workflows: ${a.workflows} tracked`),console.log("")),console.log("\u{1F4B0} TOKEN SAVINGS"),console.log(` Total saved: ${O(s.totalTokensSaved)} tokens`),console.log(` Compression: ${(s.compressionRate*100).toFixed(0)}% average reduction`),console.log(` Estimated cost: ${U(s.estimatedCostSaved)} saved`),console.log(""),console.log("\u26A1 PERFORMANCE"),console.log(` Syncs completed: ${s.syncCount.toLocaleString()}`),console.log(` Avg sync time: ${se(s.avgSyncDuration)}`),console.log(""),s.topAgents.length>0){console.log("\u{1F916} AGENT USAGE (all time)");let f=s.topAgents.reduce((h,x)=>h+x.usageCount,0);for(let h of s.topAgents){let x=f>0?(h.usageCount/f*100).toFixed(0):0;console.log(` ${h.agentName.padEnd(12)}: ${x}% (${h.usageCount} uses)`)}console.log("")}if(i.length>0){console.log("\u{1F4C8} TREND (last 30 days)");let f=Ee(i);if(console.log(` ${f} ${O(s.last30DaysTokens)} tokens saved`),s.trend!==0){let h=s.trend>0?"\u2191":"\u2193",x=s.trend>0?"+":"";console.log(` ${h} ${x}${s.trend.toFixed(0)}% vs previous 30 days`)}console.log("")}if(console.log("\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500"),console.log("Export: prjct stats --export > stats.md"),console.log(""),e.export){let f=Oe(s,i,u,p,n,a);return console.log(f),{success:!0,data:{markdown:f}}}return{success:!0,data:{...s,session:n,patterns:a}}}catch(t){return console.error("\u274C Error:",k(t)),A(t)}}m(Je,"stats");async function _e(r=process.cwd(),e={}){try{let t=await v(r);if(!t.ok)return e.json&&console.log(JSON.stringify({success:!1,error:"No project ID found"})),t.result;let o=t.value,s=await b.diff(o);if(!s){let i="Cannot compute diff: need both a sealed and a draft analysis. Run `p. sync` to create a draft.";return e.json?console.log(JSON.stringify({success:!1,error:i})):e.md?console.log(y("## Analysis Diff",`> ${i}`)):d.warn(i),{success:!1,error:i}}if(e.json)return console.log(JSON.stringify({success:!0,...s})),{success:!0,data:s};if(e.md)return console.log(y(G(s))),{success:!0,data:s};if(!s.hasChanges)d.done("No changes between draft and sealed analysis");else{d.section("Analysis Diff"),console.log(Se(s)),console.log("");let i=[];s.summary.added>0&&i.push(`${s.summary.added} added`),s.summary.removed>0&&i.push(`${s.summary.removed} removed`),s.summary.changed>0&&i.push(`${s.summary.changed} changed`),d.done(i.join(", "))}return console.log(""),{success:!0,data:s}}catch(t){let o=k(t);return e.json?console.log(JSON.stringify({success:!1,error:o})):e.md?console.log(y("## Diff Failed",`> ${o}`)):d.fail(o),{success:!1,error:o}}}m(_e,"diff");var Ge=["> Review this project data and save durable notes for future AI agents (architecture, conventions, risks, gotchas).","> **Prefer schema v1 JSON** with: architecture{style,insights,domains}, patterns[], antiPatterns[], techDebt[], riskAreas[], refactorSuggestions[], projectInsights[], conventions[], optional stack/commands. See core/schemas/llm-analysis.ts.","> Markdown alone saves style=unknown and empty patterns (thin notes) \u2014 agents then retry and burn tokens. Use markdown only to append insight bullets when a rich analysis already exists.","> Save path: write the JSON file, then `prjct analysis-save-llm <file> --md`."].join(`
|
|
33
|
+
`),Ue=class extends ke{static{m(this,"AnalysisCommands")}async analyze(e={},t=process.cwd()){try{await this.initializeAgent(),console.log(`\u{1F50D} Analyzing repository...
|
|
34
|
+
`),S.init(t);let o={packageJson:await S.readPackageJson(),cargoToml:await S.readCargoToml(),goMod:await S.readGoMod(),requirements:await S.readRequirements(),directories:await S.listDirectories(),fileCount:await S.countFiles(),gitStats:await S.getGitStats(),gitLog:await S.getGitLog(20),hasDockerfile:await S.fileExists("Dockerfile"),hasDockerCompose:await S.fileExists("docker-compose.yml"),hasReadme:await S.fileExists("README.md"),hasTsconfig:await S.fileExists("tsconfig.json"),hasViteConfig:await S.fileExists("vite.config.ts")||await S.fileExists("vite.config.js"),hasNextConfig:await S.fileExists("next.config.js")||await S.fileExists("next.config.mjs")},s=Ie(o,t);return await this.logToMemory(t,"repository_analyzed",{timestamp:J(),fileCount:o.fileCount,gitCommits:o.gitStats.totalCommits}),console.log(`\u2705 Analysis complete!
|
|
35
|
+
`),console.log(s),console.log(`
|
|
36
|
+
Next steps:`),console.log("\u2022 p. sync \u2192 Generate agents based on stack"),console.log('\u2022 p. work "<intent>" \u2192 Start a work cycle'),{success:!0,summary:s,data:o}}catch(o){return console.error("\u274C Error:",k(o)),A(o)}}async sync(e=process.cwd(),t={}){try{let o=await v(e);if(!o.ok)return o.result;let s=o.value,i=Date.now();if(t.package){let a=await ie.detectMonorepo(e);if(!a.isMonorepo)return{success:!1,error:"Not a monorepo. --package flag only works in monorepos."};let u=a.packages.find(p=>p.name===t.package||p.relativePath===t.package);if(!u){let p=a.packages.map(f=>f.name).join(", ");return{success:!1,error:`Package "${t.package}" not found. Available: ${p}`}}let c=await H.sync(e,{packagePath:u.path,packageName:u.name});return t.json?console.log(JSON.stringify({success:c.success,package:u.name,path:u.relativePath})):t.md?console.log(y(L(`Synced package: ${u.name}`))):d.done(`Synced package: ${u.name}`),{success:c.success}}t.md||d.spin("Syncing project...");let n=await H.sync(e,{full:t.full});if(!n.success)return t.md?console.log(y("## Sync Failed",`> ${n.error||"Unknown error"}`)):d.fail(n.error||"Sync failed"),{success:!1,error:n.error};if(t.md||d.stop(),t.md){let a=Date.now()-i,u=n.generatedSkills?.generated?.length??0,c=await b.diff(s).then(g=>g?.hasChanges?G(g):null).catch(()=>null),p=n.git.recentCommits[0]?.hash??null,h=p&&D.isCurrent(s,p)?null:await ee(s,e,n.git,n.stats).then(g=>["## Analysis Payload",Ge,"### Data","```json",JSON.stringify(g),"```"].join(`
|
|
37
|
+
`)).catch(()=>"### Next: Run `prjct analysis-payload --md` to update project analysis"),x=$e("sync",!0),B=(()=>{try{let g=he.recall(s,{types:["context"],limit:5}).map(F=>`- ${fe(F)} \`${F.id}\``);return g.length>0?["### Evaluate recent context","Task contexts captured recently \u2014 fold their decisions, patterns and","anti-patterns into the project analysis (and supersede anything now wrong):","",...g].join(`
|
|
38
|
+
`):null}catch{return null}})(),T=n.syncMetrics?.indexes,P={Duration:`${(a/1e3).toFixed(1)}s`,Skills:`${u} generated`,"Files indexed":n.stats.fileCount};if(T?.bm25Files){let g=T.bm25Files*(T.bm25AvgTokens||0);P["Tokens indexed"]=`${Math.round(g/1e3)}K`,P["Import edges"]=T.importEdges||0,P["Co-change commits"]=T.cochangeCommits||0}n.contextQuality&&(P["Context quality"]=`${n.contextQuality.score}/${n.contextQuality.threshold}`+(n.contextQuality.passed?"":" needs review"),P["Context removed"]=n.contextQuality.irrelevantRemoved,P["Context repairs"]=n.contextQuality.repairEntriesCreated);let Q=n.phaseTimings&&n.phaseTimings.length>0?R("Phase timings (slowest first)",M([...n.phaseTimings].sort((g,F)=>F.ms-g.ms).map(g=>`${g.phase}: ${(g.ms/1e3).toFixed(2)}s`))):null,qe=(()=>{if(!n.retentionDryRun)return null;let g=n.retentionDryRun,F=g.dryRun===!1?"applied":"dry-run",Be=g.dryRun===!1?` \xB7 acted: ${g.archived??0} archived, ${g.deleted??0} deleted`+(g.inboxMerged||g.inboxArchived?`, inbox ${g.inboxMerged??0} merged/${g.inboxArchived??0} archived`:""):"";if(P[`Retention (${F})`]=`${g.active} active \xB7 ${g.archive} archive \xB7 ${g.delete} delete${Be}`,g.vault){let w=g.vault,W=g.dryRun===!1?` \xB7 purged: hard\u0394${w.softDeletedPurged??0} distill\u0394${w.distilledDiscarded??0} digests+${w.digestsWritten??0} arch\u0394${w.archivesPruned??0}`:"";P.Vault=`${w.live} live \xB7 soft-del ${w.softDeleted} \xB7 archives ${w.archives} \xB7 auto ${w.autoSourceLive}${W}`}return g.samples.length>0?R(g.dryRun===!1?"Retention (Rho) \u2014 worst excess/score (actions applied)":"Retention (Rho) dry-run \u2014 worst excess/score (nothing removed)",M(g.samples.map(w=>{let W="excess"in w&&typeof w.excess=="number"?` excess=${w.excess.toFixed(2)}`:"";return`\`${w.id}\` [${w.type}] ${w.verdict} (${w.score}${W}) \u2014 ${w.reasons.join(", ")}`}))):null})(),He=n.projectStyle?.evolutionMd?n.projectStyle.evolutionMd:n.projectStyle?.summary?["## Project style","",n.projectStyle.summary,"",`Coverage: ${n.projectStyle.styleCoverage}/100 \xB7 ${n.projectStyle.patternCount} patterns \xB7 ${n.projectStyle.conventionCount} conventions \xB7 ${n.projectStyle.antiPatternCount} anti-patterns`].join(`
|
|
39
|
+
`):null,ze=n.developerSnapshotCaptured?await import("./developer-evolution-AVAXGDKQ.mjs").then(({renderDeveloperEvolution:g})=>g(s,4)).catch(()=>`## Developer evolution
|
|
40
|
+
|
|
41
|
+
Weekly developer snapshot captured.`):null,Ve=y(L("Sync Complete"),E(P),Q,qe,c,He,ze,n.git.hasChanges?z("Uncommitted changes detected"):null,B,h,we(x.map(g=>({label:g.desc,command:g.cmd}))));return console.log(Ve),{success:!0,data:n,metrics:{elapsed:a,skillCount:u,fileCount:n.stats.fileCount}}}return Te(n,i)}catch(o){return t.md?console.log(y("## Sync Failed",`> ${k(o)}`)):d.fail(k(o)),A(o)}}async analysisPayload(e=process.cwd(),t={}){try{let o=await v(e);if(!o.ok)return o.result;let s=o.value,i=await H.sync(e);if(!i.success)return{success:!1,error:i.error||"Failed to gather project data"};let n=i.git.recentCommits[0]?.hash??null;if(n&&D.isCurrent(s,n))return t.md?console.log(y(L("LLM analysis is current"),"> No re-analysis needed.")):console.log(JSON.stringify({success:!0,action:"skip",message:"Analysis is current"})),{success:!0,message:"Analysis is current"};let a=await ee(s,e,i.git,i.stats);return t.md?console.log(y("## Analysis Payload",Ge,"### Data","```json",JSON.stringify(a),"```")):console.log(JSON.stringify({success:!0,payload:a})),{success:!0,data:a}}catch(o){return A(o)}}async saveLlmAnalysis(...e){return Le(...e)}async getLlmAnalysis(...e){return Ne(...e)}async stats(...e){return Je(...e)}async diff(...e){return _e(...e)}async seal(...e){return be(...e)}async rollback(...e){return Ce(...e)}async verify(...e){return xe(...e)}async semanticVerify(...e){return te(...e)}};export{Ue as AnalysisCommands};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { createRequire as __createRequire } from 'module';
|
|
2
|
+
import { fileURLToPath as __fileURLToPath } from 'url';
|
|
3
|
+
import { dirname as __pathDirname } from 'path';
|
|
4
|
+
const require = __createRequire(import.meta.url);
|
|
5
|
+
const __filename = __fileURLToPath(import.meta.url);
|
|
6
|
+
const __dirname = __pathDirname(__filename);
|
|
7
|
+
import{a,b,c}from"./chunk-4PPIE6GA.mjs";import"./chunk-HU5ERAAV.mjs";import"./chunk-6RT2P22O.mjs";import"./chunk-ZXTJLMVZ.mjs";import"./chunk-VWFVSNQT.mjs";import"./chunk-U24YKPYX.mjs";import"./chunk-D62TAZG6.mjs";import"./chunk-DOJPSIMG.mjs";import"./chunk-HYIT7MF5.mjs";import"./chunk-225DWS4D.mjs";import"./chunk-3TRXQAU4.mjs";export{a as DEFAULT_API_URL,b as DEFAULT_WEB_URL,c as default};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { createRequire as __createRequire } from 'module';
|
|
2
|
+
import { fileURLToPath as __fileURLToPath } from 'url';
|
|
3
|
+
import { dirname as __pathDirname } from 'path';
|
|
4
|
+
const require = __createRequire(import.meta.url);
|
|
5
|
+
const __filename = __fileURLToPath(import.meta.url);
|
|
6
|
+
const __dirname = __pathDirname(__filename);
|
|
7
|
+
import{a as n}from"./chunk-F7OOBAJO.mjs";import"./chunk-JT4RNQ67.mjs";import"./chunk-VCSESVZ4.mjs";import"./chunk-YJOC2JJK.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"./chunk-OIE3AKKO.mjs";import"./chunk-7QTE6X4J.mjs";import"./chunk-4PPIE6GA.mjs";import"./chunk-Q6C27OL7.mjs";import"./chunk-NXUIMC22.mjs";import"./chunk-5EF5EOCL.mjs";import"./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"./chunk-VWFVSNQT.mjs";import"./chunk-U24YKPYX.mjs";import"./chunk-D62TAZG6.mjs";import"./chunk-DOJPSIMG.mjs";import"./chunk-HYIT7MF5.mjs";import"./chunk-225DWS4D.mjs";import{a as t}from"./chunk-3TRXQAU4.mjs";async function c(u,o){try{let e=o??await import("./config-manager-QY73WM5U.mjs").then(({default:a})=>a.readConfig(u).catch(()=>null));if(!e?.projectId||!e.cloud?.enabled||e.cloud.paused)return{ran:!1};if(!await n.hasAuth())return{ran:!1};let r=await n.sync(e.projectId,{include:e.cloud.include??{}});return{ran:!0,pushed:r.pushed?.count??0,pulled:r.pulled?.count??0,error:r.success?void 0:r.error}}catch{return{ran:!1}}}t(c,"flushIfLinked");export{c as flushIfLinked};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { createRequire as __createRequire } from 'module';
|
|
2
|
+
import { fileURLToPath as __fileURLToPath } from 'url';
|
|
3
|
+
import { dirname as __pathDirname } from 'path';
|
|
4
|
+
const require = __createRequire(import.meta.url);
|
|
5
|
+
const __filename = __fileURLToPath(import.meta.url);
|
|
6
|
+
const __dirname = __pathDirname(__filename);
|
|
7
|
+
import{b as l}from"./chunk-CKYBGRCF.mjs";import{a as p,c as m}from"./chunk-TIBYHZFA.mjs";import{h as s,i as S}from"./chunk-VWFVSNQT.mjs";import{a as c,b as h}from"./chunk-U24YKPYX.mjs";import{b as u,p as b}from"./chunk-D62TAZG6.mjs";import{a as e}from"./chunk-3TRXQAU4.mjs";h();S();b();import{execFileSync as f,spawn as w}from"node:child_process";import r from"node:fs";import o from"node:path";var d=e(()=>o.join(c(),"state"),"stateDir"),$=e(()=>o.join(d(),"auto-update.log"),"logPath"),g=3600*1e3;function C(n){if(!n||process.env.PRJCT_NO_AUTO_UPDATE==="1"||p("auto-update")!=="on")return;let t=p("auto-update-last-check");if(t&&Date.now()-Date.parse(t)<g)return;m("auto-update-last-check",new Date().toISOString()),w(process.execPath,[process.argv[1],"__internal-auto-update",n],{detached:!0,stdio:"ignore"}).unref()}e(C,"maybeAutoUpdate");async function O(n){try{let t=await l();if(!t)return;if(s(t,n)<=0){i(`current ${n} >= latest ${t}, no-op`);return}let a=y();i(`upgrade available: ${n} \u2192 ${t} (source: ${a})`),await j(a,t),i(`upgrade complete: ${n} \u2192 ${t}`)}catch(t){i(`auto-update failed: ${t.message}`)}}e(O,"runBackgroundCheck");function y(){let n=o.join(c(),"bin","prjct");if(r.existsSync(n))try{if(r.statSync(n).size>1024*1024)return"binary"}catch{}try{let t=f("npm",["root","-g"],{encoding:"utf8",stdio:["ignore","pipe","ignore"]}).trim();if(t&&r.existsSync(o.join(t,"prjct-cli")))return"npm"}catch{}try{let t=f("bun",["pm","bin","-g"],{encoding:"utf8",stdio:["ignore","pipe","ignore"]}).trim();if(t&&r.existsSync(o.join(t,"prjct")))return"bun"}catch{}return"unknown"}e(y,"detectInstallSource");async function j(n,t){if(n==="binary"){i(`binary install auto-update skipped for ${t}; run the installer manually to upgrade`);return}if(n==="bun"){await u("bun",["install","-g","prjct-cli@latest"],{timeout:12e4});return}if(n==="npm"||n==="unknown"){await u("npm",["install","-g","prjct-cli@latest"],{timeout:12e4});return}}e(j,"applyUpgrade");function i(n){try{r.mkdirSync(d(),{recursive:!0}),r.appendFileSync($(),`${new Date().toISOString()} ${n}
|
|
8
|
+
`)}catch{}}e(i,"log");var A={fetchLatestVersion:l,detectInstallSource:y,compareSemver:s,THROTTLE_MS:g};export{A as _internal,C as maybeAutoUpdate,O as runBackgroundCheck};
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { createRequire as __createRequire } from 'module';
|
|
2
|
+
import { fileURLToPath as __fileURLToPath } from 'url';
|
|
3
|
+
import { dirname as __pathDirname } from 'path';
|
|
4
|
+
const require = __createRequire(import.meta.url);
|
|
5
|
+
const __filename = __fileURLToPath(import.meta.url);
|
|
6
|
+
const __dirname = __pathDirname(__filename);
|
|
7
|
+
import{a as C}from"./chunk-3TRXQAU4.mjs";async function $(t,m){if(t[0]==="daemon"){let s=t[1]||"status";if(s==="start"){let{isDaemonRunning:o,spawnDaemon:e}=await import("./client-D43KKUYH.mjs");if(await o())console.log("Daemon is already running."),process.exitCode=0;else if(t.includes("--foreground")||t.includes("-f")){let{startDaemon:i}=await import("./daemon-QARP3RVX.mjs");await i({foreground:!0})}else await e()?console.log("Daemon started."):(console.error("Failed to start daemon."),process.exitCode=1)}else if(s==="stop"){let{isDaemonRunning:o,stopDaemon:e}=await import("./client-D43KKUYH.mjs");if(await o()){let n=await e();console.log(n?"Daemon stopped.":"Failed to stop daemon."),process.exitCode=n?0:1}else console.log("Daemon is not running."),process.exitCode=0}else if(s==="status"){let{getDaemonStatus:o}=await import("./client-D43KKUYH.mjs"),e=await o();if(e.running){let n=(await import("chalk")).default,i=e.uptime?Math.round(e.uptime/1e3):0,c=e.stale;if(console.log(`Daemon running (PID ${e.pid})${c?" \u26A0 STALE":""}`),e.version&&console.log(` Version: ${e.version}`),console.log(` Uptime: ${i}s`),console.log(` Commands served: ${e.commandsServed??0}`),typeof e.activeRequests=="number"&&console.log(` Active requests: ${e.activeRequests}`),typeof e.memoryRss=="number"){let a=Math.round(e.memoryRss/1024/1024);console.log(` Memory (RSS): ${a} MB`)}e.lastActivity&&console.log(` Last activity: ${e.lastActivity}`),e.restartPending&&console.log(` ${n.yellow(`Restart pending (${e.restartReason??"unknown"})`)}`),typeof e.absorbedErrors=="number"&&e.absorbedErrors>0&&console.log(` Absorbed errors: ${e.absorbedErrors}`),c&&console.log(` ${n.yellow("\u26A0 Code changed since daemon started. Run: prjct restart")}`)}else console.log("Daemon is not running.");process.exitCode=0}else if(s==="restart"){let{forceRestartDaemon:o}=await import("./client-D43KKUYH.mjs");await o()?(console.log("Daemon restarted."),process.exitCode=0):(console.error("Failed to restart daemon."),process.exitCode=1)}else if(s==="logs"){let o=await import("node:fs"),{DAEMON_PATHS:e}=await import("./protocol-4AJ4J5SI.mjs"),n=e.log();if(!o.existsSync(n))console.error(`No daemon log at ${n}. Start the daemon first.`),process.exitCode=1;else{let i=t.includes("--follow")||t.includes("-f"),c=t.includes("--all"),a=t.find(l=>l.startsWith("--lines="))?.split("=")[1]||(t.includes("-n")?t[t.indexOf("-n")+1]:void 0),r=a?parseInt(a,10):50;if(i){let{spawn:l}=await import("node:child_process"),d=l("tail",["-n",String(r),"-f",n],{stdio:"inherit"});process.on("SIGINT",()=>d.kill("SIGINT")),await new Promise(u=>d.on("exit",()=>u()))}else if(c)process.stdout.write(o.readFileSync(n,"utf-8"));else{let l=o.readFileSync(n,"utf-8"),u=l.split(`
|
|
8
|
+
`).slice(-Math.max(1,r));process.stdout.write(u.join(`
|
|
9
|
+
`)),l.endsWith(`
|
|
10
|
+
`)||process.stdout.write(`
|
|
11
|
+
`)}process.exitCode=0}}else console.error(`Unknown daemon command: ${s}. Use: start, stop, restart, status, logs`),process.exitCode=1}else if(t[0]==="stop"){let{isDaemonRunning:s,stopDaemon:o,forceKillDaemon:e}=await import("./client-D43KKUYH.mjs");if(t.includes("--force")||t.includes("-f")){let i=e();console.log(i?"Daemon force-killed.":"Daemon is not running."),process.exitCode=0}else await s()?await o()?(console.log("Daemon stopped."),process.exitCode=0):(console.log("Graceful stop failed, force-killing..."),e(),console.log("Daemon force-killed."),process.exitCode=0):(e(),console.log("Daemon is not running (cleaned up stale files)."),process.exitCode=0)}else if(t[0]==="restart"){let{forceRestartDaemon:s}=await import("./client-D43KKUYH.mjs");await s()?(console.log("Daemon restarted."),process.exitCode=0):(console.error("Failed to restart daemon."),process.exitCode=1)}else if(t[0]==="start"||t[0]==="setup"){let{SetupCommands:s}=await import("./setup-BL36ZWPW.mjs"),o=new s,e=t[0]==="start"?await o.start():await o.setup({force:t.includes("--force")});e.message&&console.log(e.message),process.exitCode=e.success?0:1}else if(t[0]==="context"){let s=process.cwd(),o=await b(s);if(o){let e=await m.trackSession("context"),n=t.slice(1).filter(a=>a!=="--md"&&a!=="--json"),i=t.includes("--md"),c=t.includes("--json");if(n.length===0){let{ContextCommands:a}=await import("./context-MPHOQPXF.mjs"),l=await new a().context(null,s,{md:i&&!c});process.exitCode=l.success?0:1}else{let{runContextTool:a}=await import("./context-4GB6ICXK.mjs"),r=await a(n,o,s),l=r.result&&typeof r.result=="object"&&"markdown"in r.result&&typeof r.result.markdown=="string"?r.result.markdown:null;i&&!c&&r.tool!=="error"&&l!==null?console.log(l):(i&&!c&&r.tool!=="error"&&console.error("--md is not supported for this tool; output is JSON"),console.log(JSON.stringify(r,null,2))),process.exitCode=r.tool==="error"?1:0}e()}}else if(t[0]==="hooks"){let s=await m.trackSession("hooks"),{hooksService:o}=await import("./hooks-service-REI56DDC.mjs"),e=t[1]||"status",n=await o.run(process.cwd(),e);process.exitCode=n,s()}else if(t[0]==="seed"){let s=t[1]??"list",o=t.slice(2).filter(a=>!a.startsWith("-")).join(","),e=t.includes("--md"),{SeedCommands:n}=await import("./seed-MMDJE2UO.mjs"),i=new n,c=await(async()=>s==="add"?i.add(o||null,process.cwd(),{md:e}):s==="remove"?i.remove(o||null,process.cwd(),{md:e}):s==="list"?i.list(null,process.cwd(),{md:e}):s==="suggest"?i.suggest(null,process.cwd(),{md:e}):s==="catalog"?i.catalog(null,process.cwd(),{md:e}):s==="verify"?i.verify(null,process.cwd(),{md:e}):(console.error(`Unknown seed subcommand: ${s}. Use: add, remove, list, suggest, catalog, verify.`),{success:!1,error:"unknown"}))();process.exitCode=c.success?0:1}else if(t[0]==="context-save"){let s=t.slice(1).find(r=>!r.startsWith("-"))??null,o=t.indexOf("--notes"),e=o>=0?t[o+1]:void 0,n=t.includes("--md"),{ContextCheckpointCommands:i}=await import("./context-checkpoint-NBI5HKPV.mjs"),a=await new i().save(s,process.cwd(),{md:n,notes:e});process.exitCode=a.success?0:1}else if(t[0]==="context-restore"){let s=t.includes("--list"),o=t.indexOf("--file"),e=o>=0?t[o+1]:void 0,n=t.slice(1).find(l=>!l.startsWith("-"))??null,i=t.includes("--md"),{ContextCheckpointCommands:c}=await import("./context-checkpoint-NBI5HKPV.mjs"),r=await new c().restore(n,process.cwd(),{md:i,list:s,file:e});process.exitCode=r.success?0:1}else if(t[0]==="health"){let s=t.includes("--md"),{HealthCommands:o}=await import("./health-TNB5OC37.mjs"),n=await new o().health(null,process.cwd(),{md:s});process.exitCode=n.success?0:1}else if(t[0]==="retro"){let s=t.slice(1).find(c=>!c.startsWith("-"))??null,o=t.includes("--md"),{RetroCommands:e}=await import("./retro-B2EBN4TA.mjs"),i=await new e().retro(s,process.cwd(),{md:o});process.exitCode=i.success?0:1}else if(t[0]==="skill-adherence"){let s=t.slice(1).find(c=>!c.startsWith("-"))??null,o=t.includes("--md"),{SkillAdherenceCommands:e}=await import("./skill-adherence-JE3N3Y67.mjs"),i=await new e().skillAdherence(s,process.cwd(),{md:o});process.exitCode=i.success?0:1}else if(t[0]==="review-risk"){let s=t.includes("--md"),{ReviewRiskCommands:o}=await import("./review-risk-LBPY5M3K.mjs"),n=await new o().reviewRisk(null,process.cwd(),{md:s});process.exitCode=n.success?0:1}else if(t[0]==="prefs"){let s=t[1]??"list",o=t.slice(2).filter(l=>!l.startsWith("-")),e=t.indexOf("--reason"),n=e>=0?t[e+1]:void 0,i=t.includes("--md"),{PreferencesCommands:c}=await import("./preferences-KO5U2ELK.mjs"),r=await new c().prefs([s,...o],process.cwd(),{md:i,reason:n});process.exitCode=r.success?0:1}else if(t[0]==="install"){let{InstallCommands:s}=await import("./install-FZQJJWT5.mjs"),o=new s,e=t.includes("--md"),n=await o.install(null,process.cwd(),{md:e});process.exitCode=n.success?0:1}else if(t[0]==="claude"){let s=t[1]??"status",{InstallCommands:o}=await import("./install-FZQJJWT5.mjs"),e=new o,n=t.includes("--md"),i=await(async()=>{if(s==="install")return e.install(null,process.cwd(),{md:n});if(s==="uninstall")return e.uninstall(null,process.cwd(),{md:n});let c=await e.status();return c.success?console.log(n?`# prjct Claude Code hooks
|
|
12
|
+
|
|
13
|
+
- installed: ${c.installed}
|
|
14
|
+
- expected: ${c.expected}
|
|
15
|
+
`:`installed: ${c.installed}/${c.expected}`):console.error(c.error),c})();process.exitCode=i.success?0:1}else if(t[0]==="hook"){let s=t[1],o=process.cwd();try{switch(s){case"session-start":{let{runSessionStartHook:e}=await import("./session-start-FM6UL7MT.mjs");await e(o);break}case"prompt":{let{runPromptHook:e}=await import("./prompt-47YP5JIR.mjs");await e(o);break}case"pre-bash":{let{runPreBashHook:e}=await import("./pre-bash-32ZOGNSP.mjs");await e(o);break}case"pre-commit":{let{runPreCommitHook:e}=await import("./pre-commit-7TU2A7H4.mjs");await e(o);break}case"pre-secrets":{let{runPreSecretsHook:e}=await import("./pre-secrets-RJELPDFY.mjs");await e(o);break}case"pre-package":{let{runPrePackageHook:e}=await import("./pre-package-ZTZACEBB.mjs");await e(o);break}case"pre-edit":{let{runPreEditHook:e}=await import("./pre-edit-ASEWA5TS.mjs");await e(o);break}case"pre-search":{let{runPreSearchHook:e}=await import("./pre-search-MKDRFJSE.mjs");await e(o);break}case"post-edit":{let{runPostEditHook:e}=await import("./post-edit-GTBY32JU.mjs");await e(o);break}case"stop":{let{runStopHook:e}=await import("./stop-6SH36ULT.mjs");await e(o);break}case"subagent-start":{let{runSubagentStartHook:e}=await import("./subagent-start-TVGBV2V2.mjs");await e(o);break}case"subagent-stop":{let{runSubagentStopHook:e}=await import("./subagent-stop-APWY6KMX.mjs");await e(o);break}case"notification":{let{runNotificationHook:e}=await import("./notification-G654IX3O.mjs");await e(o);break}case"cwd-changed":{let{runCwdChangedHook:e}=await import("./cwd-changed-EUJZOBIC.mjs");await e(o);break}default:process.stdout.write(`{}
|
|
16
|
+
`)}process.exitCode=0}catch{process.stdout.write(`{}
|
|
17
|
+
`),process.exitCode=0}}else if(t[0]==="crew"){let s=t[1]??"status",{CrewCommands:o}=await import("./crew-EYVSIX4L.mjs"),e=new o,n=t.includes("--md"),i=C(a=>{let r=t.indexOf(`--${a}`);if(r>=0&&r+1<t.length&&!t[r+1].startsWith("--"))return t[r+1]},"getFlag"),c=await(async()=>{if(s==="install")return e.install(null,process.cwd(),{md:n});if(s==="uninstall")return e.uninstall(null,process.cwd(),{md:n});if(s==="status")return e.status(null,process.cwd(),{md:n});if(s==="checkpoints"){let a=t[2]??"show";return e.checkpoints(a,process.cwd(),{md:n,content:i("content"),file:i("file")})}return s==="record-run"?e.recordRun(process.cwd(),{md:n,spec:i("spec"),task:i("task"),"implementer-summary":i("implementer-summary"),files:i("files"),"reviewer-verdict":i("reviewer-verdict"),"reviewer-notes":i("reviewer-notes"),"run-id":i("run-id")}):(console.error(`Unknown crew subcommand: ${s}. Use: install, uninstall, status, checkpoints, record-run.`),{success:!1,error:`unknown subcommand: ${s}`})})();process.exitCode=c.success?0:1}else if(t[0]==="harness"){let s=t[1]??"list",{HarnessCommands:o}=await import("./harness-V7J7WIT2.mjs"),e=new o,n=t.includes("--md"),i=await(async()=>{if(s==="score")return e.score(process.cwd(),{md:n});if(s==="instructions"){if(t[2]==="set")return e.instructionDisposition(t[3]??null,t[4]??null,process.cwd());let c=t[2]?.startsWith("--")?null:t[2]??null;return e.instructions(c,process.cwd(),{md:n})}return s==="learn-from"?e.learnFrom(process.cwd(),{md:n}):s==="list"?e.list({md:n}):s==="use"?e.use(t[2]??null,process.cwd(),{md:n}):(console.error(`Unknown harness subcommand: ${s}. Use: score, instructions [24h|7d|14d|30d|set <id> <open|resolved|false-positive>], learn-from, list, use <rig>.`),{success:!1,error:`unknown subcommand: ${s}`})})();process.exitCode=i.success?0:1}else if(t[0]==="doctor"){let s=await m.trackSession("doctor"),{doctorService:o}=await import("./doctor-service-6ZJBWIXR.mjs"),n=t.includes("--fix")||t.includes("--heal")?await o.heal(process.cwd()):await o.run(process.cwd());process.exitCode=n,s()}else if(t[0]==="uninstall"){let{uninstall:s}=await import("./uninstall-W6EAUS7N.mjs"),o=t.includes("--force")||t.includes("-f"),e=t.includes("--backup")||t.includes("-b"),n=t.includes("--dry-run")||t.includes("-n"),i=t.includes("--keep-package"),c=await s({force:o,backup:e,dryRun:n,keepPackage:i});process.exitCode=c.success?0:1}else if(t[0]==="watch"){let s=process.cwd();if(await b(s)){let{watchService:e}=await import("./watch-service-7V3O52TW.mjs"),n=t.includes("--verbose")||t.includes("-v"),i=t.find(d=>d.startsWith("--debounce=")),c=i?parseInt(i.split("=")[1],10):void 0,a=t.find(d=>d.startsWith("--interval=")),r=a?parseInt(a.split("=")[1],10)*1e3:void 0,l=await e.start(s,{verbose:n,quiet:m.isQuietMode,debounceMs:c,minIntervalMs:r});l.success||(console.error(l.error),process.exitCode=1)}}else if(t[0]==="help"||t[0]==="-h"||t[0]==="--help"){let{getHelp:s}=await import("./help-P7EYELVK.mjs"),o=t[1];console.log(s(o)),process.exitCode=0}else if(t[0]==="version"||t[0]==="-v"||t[0]==="--version"){let s=await import("node:os"),o=await import("node:path"),e=(await import("chalk")).default,{detectAllProviders:n,detectAntigravity:i,detectCodex:c}=await import("./ai-provider-RVXK7D7R.mjs"),{listAgentRuntimes:a}=await import("./agent-runtime-registry-3RMVBEV2.mjs"),{fileExists:r}=await import("./file-helper-LLQKU6YF.mjs"),{VERSION:l}=await import("./version-B5DBRVGQ.mjs"),d=await n(m.isRefresh),u=s.homedir(),k=process.cwd(),[v,y,x,S,h,g]=await Promise.all([r(o.join(u,".claude","CLAUDE.md")),r(o.join(u,".gemini","GEMINI.md")),r(o.join(k,".cursor")),r(o.join(k,".cursor","rules","prjct.mdc")),r(o.join(u,".codex","config.toml")),r(o.join(k,"AGENTS.md"))]),[w,f]=await Promise.all([c(),i()]),{providerStatusHeader:j,providerStatusLine:p}=await import("./provider-status-HQUBKMH5.mjs"),D=a().filter(M=>M.id!=="agents-md").length;console.log(j(l)),console.log(p("Universal AGENTS.md",g?"ready":"missing",e.dim(` (${D} runtime profiles in registry)`))),console.log(p("Claude Code",d.claude.installed?v?"ready":"installed":"missing",d.claude.version?e.dim(` (v${d.claude.version})`):"")),console.log(p("Gemini CLI",d.gemini.installed?y?"ready":"installed":"missing",d.gemini.version?e.dim(` (v${d.gemini.version})`):"")),console.log(p("OpenAI Codex",w.installed?w.skillInstalled&&h?"ready":"installed":"missing",w.installed&&!w.skillInstalled?e.dim(" (run prjct start)"):w.installed&&!h?e.dim(" (MCP pending)"):"")),console.log(p("Antigravity",f.installed?f.skillInstalled?"ready":"detected":"missing",f.installed&&!f.skillInstalled?e.dim(" (run prjct start)"):"")),console.log(p("Cursor IDE",x?S?"ready":"detected":"missing",x?e.dim(" (project)"):"","\u25CB not detected")),console.log(`
|
|
18
|
+
${e.dim("Run 'prjct start' to configure global/runtime adapters")}
|
|
19
|
+
${e.dim("Run 'prjct init' or 'prjct sync' to refresh AGENTS.md and project-level rules")}
|
|
20
|
+
${e.cyan("https://prjct.app")}
|
|
21
|
+
`)}else return!1;return!0}C($,"runBinCommand");async function b(t){let s=await(await import("./config-manager-QY73WM5U.mjs")).default.getProjectId(t);return s||(console.error('No prjct project found. Run "prjct init" first.'),process.exitCode=1,null)}C(b,"requireProjectOrExit");export{$ as runBinCommand};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { createRequire as __createRequire } from 'module';
|
|
2
|
+
import { fileURLToPath as __fileURLToPath } from 'url';
|
|
3
|
+
import { dirname as __pathDirname } from 'path';
|
|
4
|
+
const require = __createRequire(import.meta.url);
|
|
5
|
+
const __filename = __fileURLToPath(import.meta.url);
|
|
6
|
+
const __dirname = __pathDirname(__filename);
|
|
7
|
+
import{a as k}from"./chunk-DEYAQEF5.mjs";import{e as w}from"./chunk-J6Y7IVFQ.mjs";import"./chunk-UAYTDSYG.mjs";import"./chunk-NNILF7R3.mjs";import"./chunk-NZKUCQZK.mjs";import"./chunk-H2KNJUPN.mjs";import{a as y}from"./chunk-5DZ2LTII.mjs";import{e as g}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{b as v}from"./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 i}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"./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 f,g as q}from"./chunk-225DWS4D.mjs";import{a as p}from"./chunk-3TRXQAU4.mjs";q();var b=class extends y{static{p(this,"CaptureCommands")}async capture(c=null,o=process.cwd(),r={}){try{if(!c||!c.trim())return i.info('Usage: prjct capture "<anything>" [--tags k:v,...]'),{success:!1,error:"Content required"};let e=c.trim(),s=w(e,{force:r.force});if(!s.ok)return s.result;let a=k(r.tags),n=await this.ensureProjectInit(o);if(!n.success)return n;if(r.fromCurrent){let{requireProject:C}=await import("./guards-AXH6V2IJ.mjs"),t=await C(o);if(!t.ok)return t.result;let{queueStorage:$}=await import("./queue-storage-BKH5XX2E.mjs"),{workGraph:h}=await import("./work-graph-WHMCFN6U.mjs"),u=await $.addTask(t.value,{description:e,section:"active",type:"feature",priority:"medium"});try{let{collectActiveTasks:x}=await import("./task-overview-XSMK7YEN.mjs"),l=await x(t.value,o);l.current?.id&&h.addDependency(t.value,u.id,l.current.id,"discovered-from")}catch{}let d=e.length>60?`${e.slice(0,57)}\u2026`:e;return r.md?console.log(`\u2713 captured as backlog item (discovered-from current): ${d}`):i.done(`captured as backlog item: ${d}`),{success:!0,type:"discovered",id:u.id,content:e}}await v.remember(o,{type:"inbox",content:e,tags:a,provenance:"declared"});let m=e.length>60?`${e.slice(0,57)}\u2026`:e;return r.md?console.log(`\u2713 captured: ${m}`):i.done(`captured: ${m}`),{success:!0,type:"inbox",content:e,tags:a}}catch(e){let s=f(e);return g(s)}}};export{b as CaptureCommands};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { createRequire as __createRequire } from 'module';
|
|
2
|
+
import { fileURLToPath as __fileURLToPath } from 'url';
|
|
3
|
+
import { dirname as __pathDirname } from 'path';
|
|
4
|
+
const require = __createRequire(import.meta.url);
|
|
5
|
+
const __filename = __fileURLToPath(import.meta.url);
|
|
6
|
+
const __dirname = __pathDirname(__filename);
|
|
7
|
+
import{i as a}from"./chunk-OXKGN3HG.mjs";import"./chunk-ZQ2XH76U.mjs";import"./chunk-6KNMT46X.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-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{a as captureGate};
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { createRequire as __createRequire } from 'module';
|
|
2
|
+
import { fileURLToPath as __fileURLToPath } from 'url';
|
|
3
|
+
import { dirname as __pathDirname } from 'path';
|
|
4
|
+
const require = __createRequire(import.meta.url);
|
|
5
|
+
const __filename = __fileURLToPath(import.meta.url);
|
|
6
|
+
const __dirname = __pathDirname(__filename);
|
|
7
|
+
import{a as U}from"./chunk-XLAGA5B7.mjs";import{a as b}from"./chunk-GTG67Z45.mjs";import{a as P}from"./chunk-24EN5Y62.mjs";import{b as C}from"./chunk-J6Y7IVFQ.mjs";import{b as N}from"./chunk-UAYTDSYG.mjs";import"./chunk-NNILF7R3.mjs";import"./chunk-NZKUCQZK.mjs";import"./chunk-H2KNJUPN.mjs";import{a as H}from"./chunk-5DZ2LTII.mjs";import"./chunk-FOWTB762.mjs";import"./chunk-6FUCOGOW.mjs";import"./chunk-6U3CYLY5.mjs";import{c as M}from"./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-5YLI5V3Q.mjs";import{g as W}from"./chunk-BUD3R6LF.mjs";import"./chunk-ZQ2XH76U.mjs";import{b as $}from"./chunk-B2HY22OD.mjs";import"./chunk-XLFEWZRA.mjs";import"./chunk-X433BB6F.mjs";import"./chunk-EZRNQXCC.mjs";import{a as D}from"./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 w}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{f as y,g as T,i as A}from"./chunk-DMO3ZFUG.mjs";import"./chunk-NNOX3UU4.mjs";import"./chunk-INJ5WT2D.mjs";import{e as I,l as z}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"./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 E}from"./chunk-3TRXQAU4.mjs";A();z();A();import{z as R}from"zod";var L="work-plan:active",F=R.object({status:R.enum(["draft","approved","abandoned"]),title:R.string().min(1),content:R.string(),taskId:R.string().nullable().optional(),createdAt:R.string().min(1),updatedAt:R.string().min(1),approvedAt:R.string().nullable().optional()});function V(_){return[`# Plan: ${_}`,"","## Context","","Why this change is needed.","","## Recommended approach","","The path we will take (not every alternative).","","## Critical files","","- `path/to/file` \u2014 why","","## Reuse","","Existing functions/utilities to match (file:line when known).","","## Verification","","How to test end-to-end after implementation.",""].join(`
|
|
8
|
+
`)}E(V,"emptyPlanTemplate");var j=class{static{E(this,"PlanStorage")}get(r){let n=T.getDoc(r,L);if(n===null)return null;let e=F.safeParse(n);return e.success?e.data:null}set(r,n){let e=F.parse(n);return T.setDoc(r,L,e),e}start(r,n,e){let t=I(),s={status:"draft",title:n.trim()||"Untitled plan",content:V(n.trim()||"Untitled plan"),taskId:e??null,createdAt:t,updatedAt:t,approvedAt:null};return this.set(r,s)}writeContent(r,n){let e=this.get(r);return!e||e.status!=="draft"?null:this.set(r,{...e,content:n,updatedAt:I()})}approve(r){let n=this.get(r);if(!n||n.status!=="draft")return null;let e=I();return this.set(r,{...n,status:"approved",updatedAt:e,approvedAt:e})}abandon(r){let n=this.get(r);return n?this.set(r,{...n,status:"abandoned",updatedAt:I()}):null}clear(r){T.deleteDoc(r,L)}},v=new j;var Y=4,G=3,q=class extends H{static{E(this,"CeremonyCommands")}async log(r=null,n=process.cwd(),e={}){let t=await C(n,e);if(!t.ok)return t.result;let s=(r??"").trim();if(!s)return this.fail('Usage: prjct log "<what you tried / found>" [--task id]',e);let o=e.task??(await b(t.value,n).catch(()=>null))?.current?.id;if(!o)return this.fail("No active work cycle \u2014 pass --task <id>",e);y.run(t.value,"INSERT INTO task_log (task_id, session_id, content, created_at) VALUES (?, ?, ?, ?)",o,process.env.CLAUDE_SESSION_ID??null,s,new Date().toISOString());let i=`logged to ${o.slice(0,8)}: ${s.slice(0,70)}`;return e.md?console.log(`\u2713 ${i}`):w.done(i),{success:!0,taskId:o}}async brief(r=null,n=process.cwd(),e={}){let t=await C(n,e);if(!t.ok)return t.result;let s=(r??"").trim()||void 0,o=s?void 0:(await b(t.value,n).catch(()=>null))?.current,i=s??o?.id;if(!i)return this.fail("No active work cycle \u2014 pass a task id",e);let m=o?.description??(await D.getTasks(t.value)).find(a=>a.id===i)?.description??y.get(t.value,"SELECT description FROM tasks WHERE id = ?",i)?.description??i,c=[`# Brief \u2014 ${m}`,""],h=N(m),p=M(h);c.push(`**Orchestration:** ${p.model}/${p.effort} \xB7 spec: ${p.spec} \xB7 tests: ${p.tests} \xB7 fan-out: ${p.fanout} \xB7 ~${p.expectedPoints} pt`,"");let g=y.query(t.value,"SELECT content, created_at FROM task_log WHERE task_id = ? ORDER BY id DESC LIMIT 8",i);if(g.length>0){c.push("## Journal (previous attempts)","");for(let a of g.reverse())c.push(`- ${a.created_at.slice(5,16)} \u2014 ${a.content}`);c.push("")}try{let a=m.split(/\s+/).filter(u=>u.length>3).slice(0,6),l=$.searchFts(t.value,a,5);if(l.length>0){c.push("## Related memory","");for(let u of l)c.push(`- [${u.id} \xB7 ${u.type}] ${u.content.slice(0,140)}`);c.push("")}}catch{}let d=y.query(t.value,`SELECT description FROM tasks WHERE status IN ('completed','shipped') AND id != ?
|
|
9
|
+
ORDER BY COALESCE(completed_at, shipped_at) DESC LIMIT 3`,i);if(d.length>0){c.push("## Recently landed (follow their conventions)","");for(let a of d)c.push(`- ${a.description.slice(0,110)}`);c.push("")}let k=P.dependenciesOf(t.value,i);if(k.length>0){c.push("## Graph position","");for(let a of k)c.push(`- \`${a.fromId.slice(0,8)}\` \u2014${a.depType}\u2192 \`${a.toId.slice(0,8)}\``);c.push("")}c.push("_Compiled brief \u2014 regenerate with `prjct brief` after major drift._");let S=c.join(`
|
|
10
|
+
`);return y.run(t.value,`INSERT INTO task_briefs (task_id, content, created_at) VALUES (?, ?, ?)
|
|
11
|
+
ON CONFLICT(task_id) DO UPDATE SET content = excluded.content, created_at = excluded.created_at`,i,S,new Date().toISOString()),console.log(S),{success:!0,taskId:i,bytes:S.length}}async replan(r=null,n=process.cwd(),e={}){let t=await C(n,e);if(!t.ok)return t.result;let s=(r??"").trim();if(!s)return this.fail('Usage: prjct replan "<what actually changed>"',e);await $.remember(n,{type:"decision",content:`Replan: ${s}`,tags:{topic:"replan"},provenance:"declared"});let o=P.ready(t.value,{limit:15}),i=["# Replan directive","",`**What changed:** ${s}`,"","Re-evaluate each open item below against the change. For each one: still valid \u2192 leave;","obsolete \u2192 complete or remove it; needs rewording \u2192 update via `prjct sync` flow;",'new work implied \u2192 `prjct capture "<item>" --fromCurrent`.',""];for(let m of o)i.push(`- \`${m.id.slice(0,8)}\` ${m.description.slice(0,100)}`);return i.push("","_The pivot was already captured as a decision memory._"),console.log(i.join(`
|
|
12
|
+
`)),{success:!0,items:o.length}}async plan(r=null,n=process.cwd(),e={}){let t=await C(n,e);if(!t.ok)return t.result;let s=(r??"").trim(),o=s.split(/\s+/).filter(Boolean),i=(o[0]??"").toLowerCase(),m=o.slice(1).join(" ").trim();return!i||i==="show"||i==="status"?this.planShowOrStart(t.value,n,s,e):i==="write"||i==="set"?this.planWrite(t.value,m||null,e):i==="approve"||i==="ok"?this.planApprove(t.value,n,e):i==="clear"||i==="abandon"||i==="quit"?this.planClear(t.value,i==="clear",e):["start","new","enter"].includes(i)?this.planStart(t.value,n,m||"Untitled plan",e):this.planStart(t.value,n,s,e)}async planShowOrStart(r,n,e,t){let s=v.get(r);return s?(this.printPlan(s,t),{success:!0,status:s.status,title:s.title}):!e||["show","status"].includes(e.toLowerCase())?this.fail('No active plan. Start one: `prjct plan "<title>"` then fill sections; approve with `prjct plan approve`.',t):this.planStart(r,n,e,t)}async planStart(r,n,e,t){let s=v.get(r);if(s?.status==="draft")return this.printPlan(s,t),{success:!0,status:s.status,title:s.title,message:"draft already active"};let o=await b(r,n).then(m=>m?.current?.id??null).catch(()=>null),i=v.start(r,e,o);return this.printPlan(i,t),{success:!0,status:i.status,title:i.title,created:!0}}planWrite(r,n,e){if(!n)return this.fail('Usage: prjct plan write "<markdown plan body>" \u2014 only allowed while status is draft.',e);let t=v.writeContent(r,n);return t?(this.printPlan(t,e),{success:!0,status:t.status,title:t.title,written:!0}):this.fail('No draft plan to update. Start with `prjct plan "<title>"` or approve/clear the current plan.',e)}async planApprove(r,n,e){let t=v.approve(r);return t?(await $.remember(n,{type:"decision",content:`Plan approved: ${t.title}
|
|
13
|
+
|
|
14
|
+
${t.content.slice(0,2e3)}`,tags:{topic:"plan-mode",status:"approved"},provenance:"declared"}),this.printPlan(t,e),e.md?console.log(`
|
|
15
|
+
> Plan approved. Source edits are allowed. Implement against the plan.`):w.done("Plan approved \u2014 implement against the plan"),{success:!0,status:t.status,title:t.title,approved:!0}):this.fail('No draft plan to approve. Start with `prjct plan "<title>"` and fill the sections first.',e)}planClear(r,n,e){let t=v.get(r);if(!t)return this.fail("No active plan to clear.",e);n?v.clear(r):v.abandon(r);let s=n?"Plan cleared from SQLite.":`Plan abandoned (${t.title}).`;return e.md?console.log(`> ${s}`):w.done(s),{success:!0,cleared:n,abandoned:!n}}printPlan(r,n){let e=r.status==="draft"?["## Host contract (draft \u2014 read-only)","","- Do **not** edit project source files until `prjct plan approve`.",'- Only mutate the plan via `prjct plan write "<markdown>"`.',"- Fill: Context \xB7 Recommended approach \xB7 Critical files \xB7 Reuse \xB7 Verification.","- When ready, ask the user; then `prjct plan approve --md`.",""]:r.status==="approved"?["## Host contract (approved)","","- Source edits allowed. Implement against this plan.","- Persist decisions/learnings with `prjct remember`.",""]:["## Host contract (abandoned)",""],t=[`# Plan \u2014 ${r.status}`,"",`**Title:** ${r.title}`,`**Updated:** ${r.updatedAt}`,r.taskId?`**Work cycle:** \`${r.taskId.slice(0,8)}\``:null,"",...e,"## Plan body","",r.content.trimEnd(),""].filter(s=>s!==null);console.log(t.join(`
|
|
16
|
+
`)),!n.md&&r.status==="draft"&&w.info("Plan mode: draft \u2014 no source edits until approve")}async prime(r=null,n=process.cwd(),e={}){let t=await C(n,e);if(!t.ok)return t.result;let s=await b(t.value,n).catch(()=>null),o=s?.current?y.query(t.value,"SELECT content FROM task_log WHERE task_id = ? ORDER BY id DESC LIMIT 3",s.current.id).map(a=>a.content).reverse():[],{loadSessionContinuity:i,loadLastSessionCloseContent:m,formatSessionResumeCard:c}=await import("./session-continuity-OQDB5UYI.mjs"),h=i(t.value),p=m(t.value),g=await import("./agent-switch-4SE6GF7R.mjs").then(({formatPendingHandoffCue:a})=>a(t.value)).catch(()=>null),d=[c({stamp:h,liveCycleDescription:s?.current?.description??null,liveCycleId:s?.current?.id??null,journal:o,sessionCloseContent:p,pendingHandoffCue:g}),""],k=P.ready(t.value,{limit:5});if(k.length>0){d.push("**Ready frontier:**");for(let a of k)d.push(`- \`${a.id.slice(0,8)}\` ${a.description.slice(0,90)}`);d.push("")}try{let a=$.recall(t.value,{types:["feedback","improvement-signal"],limit:40,dedupeByKey:!1}),l=U(a,Y);if(l.length>0){d.push("**Act as this developer:**");for(let u of l){let f=u.kind==="preference"?"said":"showed";d.push(`- ${u.rule.slice(0,140)} _(${f})_`)}d.push("")}}catch{}try{let a=$.recall(t.value,{types:["gotcha","anti-pattern"],limit:G});if(a.length>0){d.push("**Top traps (do not re-pay):**");for(let l of a)d.push(`- ${W(l).slice(0,100)} \`${l.id}\``);d.push("")}}catch{}try{let{default:a}=await import("./config-manager-QY73WM5U.mjs"),l=await a.readConfig(n),{buildTokenEconomics:u}=await import("./token-economics-JZAQJUET.mjs"),f=s?.current,O=u(t.value,{cycleTokensIn:f&&"tokensIn"in f?f.tokensIn:void 0,cycleTokensOut:f&&"tokensOut"in f?f.tokensOut:void 0,maxTokensPerCycle:l?.maxTokensPerCycle??null});d.push(`**${O.line}**`);let{effectiveWeakModelMode:x,weakModelOneLiner:B}=await import("./weak-model-mode-LOAPFJPQ.mjs");x(l)==="on"&&d.push(`**${B()}**`)}catch{}console.log(`${d.join(`
|
|
17
|
+
`).trimEnd()}
|
|
18
|
+
`);let{isContinuityFresh:S}=await import("./session-continuity-OQDB5UYI.mjs");return{success:!0,continuity:h?{landedAt:h.landedAt,cycleId:h.cycleId,fresh:S(h)}:null}}async land(r=null,n=process.cwd(),e={}){let t=await C(n,e);if(!t.ok)return t.result;let s=["# Land the plane",""],o=[],i=await b(t.value,n).catch(()=>null),{synthesizeLandHandoff:m}=await import("./land-synthesis-MU4EZEYL.mjs"),c=await m({projectId:t.value,projectPath:n,cycleDescription:i?.current?.description??null,cycleId:i?.current?.id??null}).catch(()=>null),{synthesizeJudgmentReceipt:h}=await import("./judgment-receipt-GO6QEZQC.mjs"),p=await h({projectId:t.value,projectPath:n,cycleDescription:i?.current?.description??null,cycleId:i?.current?.id??null}).catch(()=>null),g=await(async()=>{try{let{default:l}=await import("./config-manager-QY73WM5U.mjs"),u=await l.readConfig(n).catch(()=>null),{stateStorage:f}=await import("./state-storage-6CGFWW5D.mjs"),O=i?.current?await f.getCurrentTask(t.value).catch(()=>null):null,{stampSessionContinuity:x}=await import("./session-continuity-OQDB5UYI.mjs");return x({projectId:t.value,projectPath:n,config:u,cycleId:i?.current?.id??null,cycleDescription:i?.current?.description??null,turns:O?.turnCount??null,tokensIn:O?.tokensIn??null,tokensOut:O?.tokensOut??null,handoffWrote:c?.wrote??!1,receiptWrote:p?.wrote??!1,handoffContent:c?.content??null})}catch{return null}})();i?.current&&o.push(`Active cycle still open: "${i.current.description.slice(0,70)}" \u2014 finish it (\`prjct status done\`) or journal the state (\`prjct log "..."\`).`);let d=y.query(t.value,"SELECT id, description FROM queue_tasks WHERE completed = 0 AND claimed_by IS NOT NULL LIMIT 5");for(let l of d)o.push(`Claimed but open: \`${l.id.slice(0,8)}\` ${l.description.slice(0,60)} \u2014 release or finish.`);let k=y.get(t.value,"SELECT COUNT(*) AS c FROM sync_pending");(k?.c??0)>0&&o.push(`${k?.c} event(s) pending cloud sync.`),c?.wrote?s.push("- [x] Hand-off auto-synthesized (`context` \xB7 topic:`session-close` \xB7 source:`land-auto`). No `remember` required.",""):c?.reason==="nothing-to-land"?s.push("- [x] Nothing durable to hand off (no cycle / journal / commits / auto-captures).",""):o.push('Persist the hand-off: `prjct remember context "Session close: what changed, why, next" --tags topic:<key>`.'),p?.wrote&&p.summary&&s.push(`- [x] ${p.summary} (tags: source:land-receipt \xB7 capture:receipt-v1).`,"");let S=await(async()=>{try{let{runLandRhoDryRun:l}=await import("./land-rho-MCTQDPRH.mjs"),u=l(t.value);return u?(e.md?s.push(u.md):s.push(`- [x] ${u.line}`,""),u.line):null}catch{return null}})(),a=await(async()=>{try{let{maybeDreamOnLand:l}=await import("./memory-dream-6GFV2GXN.mjs"),u=l(t.value);return u?(e.md?s.push(u.md):(u.ran||!u.skipped)&&s.push(`- [x] ${u.line}`,""),u.line):null}catch{return null}})();try{if(!a||!a.startsWith("Dream complete")){let{buildAndStoreMemoryL0Index:l}=await import("./memory-index-7NIU34EI.mjs");l({projectId:t.value,source:"land"})}}catch{}if(o.push("Team share (optional): `prjct memory export` \u2192 commit `.prjct/memory-export/` \u2192 clone \u2192 `prjct memory import`."),o.push("Next window: `prjct prime --md` (managed session resume \u2014 not a blank chat)."),s.push(...o.map(l=>`- [ ] ${l}`)),g){let{formatLandContinuityFooter:l}=await import("./session-continuity-OQDB5UYI.mjs");s.push(l(g))}return console.log(s.join(`
|
|
19
|
+
`)),{success:!0,items:o.length+(c?.wrote?1:0)+(p?.wrote?1:0),dream:a,handoff:c?.wrote??!1,receipt:p?.wrote??!1,receiptSummary:p?.summary??null,rhoDryRun:S,continuity:g?{landedAt:g.landedAt,key:"session:continuity"}:null}}async dream(r=null,n=process.cwd(),e={}){let t=await C(n,e);if(!t.ok)return t.result;let{runMemoryDream:s}=await import("./memory-dream-6GFV2GXN.mjs"),o=s({projectId:t.value,projectPath:n,force:e.force===!0,dryRun:e.dryRun===!0,minHours:e.minHours,minSessions:e.minSessions});return e.md?(console.log(o.md),o.index?.markdown&&o.ran&&console.log(o.index.markdown)):o.skipped?(w.info(o.line),w.info("Use `prjct dream --force` to run now, or `--dry-run` to preview.")):w.done(o.line),{success:!0,ran:o.ran,skipped:o.skipped,dryRun:o.dryRun,reason:o.reason??null,line:o.line,archived:o.phases.consolidate.archived,deleted:o.phases.consolidate.deleted,indexLive:o.phases.prune.indexLive}}fail(r,n){return n.md?console.log(`> ${r}`):w.fail(r),{success:!1,error:r}}};export{q as CeremonyCommands};
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { createRequire as __createRequire } from 'module';
|
|
2
|
+
import { fileURLToPath as __fileURLToPath } from 'url';
|
|
3
|
+
import { dirname as __pathDirname } from 'path';
|
|
4
|
+
const require = __createRequire(import.meta.url);
|
|
5
|
+
const __filename = __fileURLToPath(import.meta.url);
|
|
6
|
+
const __dirname = __pathDirname(__filename);
|
|
7
|
+
import{b as u}from"./chunk-J6Y7IVFQ.mjs";import"./chunk-UAYTDSYG.mjs";import"./chunk-NNILF7R3.mjs";import"./chunk-NZKUCQZK.mjs";import"./chunk-H2KNJUPN.mjs";import{a as g}from"./chunk-5DZ2LTII.mjs";import"./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}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{f as l,i as w}from"./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 m}from"./chunk-3TRXQAU4.mjs";w();var f=class extends g{static{m(this,"ChangelogCommands")}async changelog(y=null,R=process.cwd(),a={}){let n=await u(R,a);if(!n.ok)return n.result;let c=Number((y??"").trim())||14,d=new Date(Date.now()-c*864e5).toISOString(),i=l.query(n.value,"SELECT name, version, shipped_at FROM shipped_features WHERE shipped_at >= ? ORDER BY shipped_at DESC",d),r=l.query(n.value,`SELECT description, type, completed_at FROM tasks
|
|
8
|
+
WHERE status = 'completed' AND completed_at >= ?
|
|
9
|
+
ORDER BY completed_at DESC LIMIT 40`,d);if(i.length===0&&r.length===0){let e=`Nothing shipped or completed in the last ${c} day(s).`;return a.md?console.log(`> ${e}`):h.info(e),{success:!0,ships:0,completed:0}}let s=[`# Changelog \u2014 last ${c} day(s)`,""];if(i.length>0){let e=new Map;for(let t of i){let o=t.version&&t.version!=="unversioned"?`v${t.version}`:t.shipped_at.slice(0,10),p=e.get(o)??[];p.push(t),e.set(o,p)}s.push("## Shipped");for(let[t,o]of e){s.push("",`### ${t} \u2014 ${o[0].shipped_at.slice(0,10)}`);for(let p of o)s.push(`- ${p.name}`)}s.push("")}if(r.length>0){s.push("## Completed work cycles","");for(let e of r){let t=e.type?` \`${e.type}\``:"";s.push(`- ${e.description}${t} (${e.completed_at.slice(0,10)})`)}}return console.log(s.join(`
|
|
10
|
+
`)),{success:!0,ships:i.length,completed:r.length}}};export{f as ChangelogCommands};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { createRequire as __createRequire } from 'module';
|
|
2
|
+
import { fileURLToPath as __fileURLToPath } from 'url';
|
|
3
|
+
import { dirname as __pathDirname } from 'path';
|
|
4
|
+
const require = __createRequire(import.meta.url);
|
|
5
|
+
const __filename = __fileURLToPath(import.meta.url);
|
|
6
|
+
const __dirname = __pathDirname(__filename);
|
|
7
|
+
import{a as e,c}from"./chunk-3TRXQAU4.mjs";function t(n){return n instanceof Error&&"code"in n}function f(n){return t(n)&&n.code==="ENOENT"}function a(n){return t(n)&&(n.code==="EACCES"||n.code==="EPERM")}function d(n){let o=t(n)?n.code:void 0;return o==="EROFS"||o==="SQLITE_READONLY"?!0:/readonly|read-only/i.test(i(n))}function l(n,o,r="file"){let s=i(n);if(d(n)||a(n)){let u=t(n)&&n.code||"read-only";return`prjct can't write its ${r} at ${o} (${u}). This usually means a sandboxed or read-only environment. Re-run with write access to that path \u2014 some agents (e.g. Codex) run commands in a restricted sandbox, so approve filesystem/write access for prjct.`}return`Failed to write ${r} at ${o}: ${s}`}function i(n){return n instanceof Error?n.message:typeof n=="string"?n:"Unknown error"}function p(n){if(n instanceof Error)return n.stack}var E=c(()=>{"use strict";e(t,"isNodeError");e(f,"isNotFoundError");e(a,"isPermissionError");e(d,"isReadonlyError");e(l,"describeFsWriteError");e(i,"getErrorMessage");e(p,"getErrorStack")});export{f as a,a as b,d as c,l as d,i as e,p as f,E as g};
|