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
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { createRequire as __createRequire } from 'module';
|
|
2
|
+
import { fileURLToPath as __fileURLToPath } from 'url';
|
|
3
|
+
import { dirname as __pathDirname } from 'path';
|
|
4
|
+
const require = __createRequire(import.meta.url);
|
|
5
|
+
const __filename = __fileURLToPath(import.meta.url);
|
|
6
|
+
const __dirname = __pathDirname(__filename);
|
|
7
|
+
import{a as c,b as y,c as x,d as h,g as j}from"./chunk-225DWS4D.mjs";import{a as i,c as d}from"./chunk-3TRXQAU4.mjs";var v,R,_,F=d(()=>{"use strict";v=new Set(["node_modules",".git","dist","build","out",".next",".nuxt","coverage",".cache",".turbo",".vercel",".parcel-cache","__pycache__",".pytest_cache","target","vendor",".venv","venv","eggs","*.egg-info",".prjct",".worktrees"]),R=["",".ts",".tsx",".js",".jsx","/index.ts","/index.js"],_=/(?:import|from)\s+['"]([^'"]+)['"]/g});import S from"node:fs/promises";async function b(t,r){let e=await S.readFile(t,"utf-8").catch(a=>{if(c(a))return null;throw a});if(e===null)return null;let n=(()=>{try{return JSON.parse(e)}catch{return null}})();if(n===null)return await k(t,e),E(t,"Malformed JSON"),null;let o=r.safeParse(n);return o.success?n:(await k(t,e),E(t,O(o.error)),null)}async function k(t,r){let e=`${t}.backup`;try{await S.writeFile(e,r,{encoding:"utf-8",flag:"wx"})}catch{}}function E(t,r){console.error(`[prjct] Warning: Corrupted storage file: ${t}`),console.error(`[prjct] Reason: ${r}`),console.error("[prjct] A .backup file has been created. Returning defaults.")}function O(t){return t.issues.slice(0,3).map(r=>`${r.path.join(".")}: ${r.message}`).join("; ")}var T=d(()=>{"use strict";j();i(b,"safeRead");i(k,"createBackup");i(E,"logCorruption");i(O,"formatZodError")});import s from"node:fs/promises";import u from"node:path";async function g(t,r,e){try{return await e()}catch(n){throw x(n)||y(n)?new Error(h(n,t,r)):n}}async function M(t,r={}){let e=[],n=r.maxFiles??1/0,o=r.dotfileAllowlist?new Set(r.dotfileAllowlist):null;async function a(l){if(e.length>=n)return;let f=await s.readdir(l,{withFileTypes:!0}).catch(()=>[]);for(let p of f){if(e.length>=n)break;let m=String(p.name);if(v.has(m)||r.skipDotfiles&&m.startsWith(".")&&(!o||!o.has(m)))continue;let w=u.join(l,m);p.isDirectory()?await a(w):p.isFile()&&e.push(u.relative(t,w))}}return i(a,"walk"),await a(t),e}async function Z(t,r,e){let n=[],o=Array.from({length:Math.ceil(t.length/r)},(a,l)=>l*r);for(let a of o){let l=await Promise.all(t.slice(a,a+r).map(e));for(let f of l)f!==null&&n.push(f)}return n}async function G(t,r=null,e){if(e)return await b(t,e)??r;try{let n=await s.readFile(t,"utf-8");return JSON.parse(n)}catch(n){if(c(n))return r;throw n}}async function K(t,r,e=2){await g(t,"config",async()=>{let n=u.dirname(t);await s.mkdir(n,{recursive:!0});let o=`${JSON.stringify(r,null,e)}
|
|
8
|
+
`;await s.writeFile(t,o,"utf-8")})}async function X(t,r=""){try{return await s.readFile(t,"utf-8")}catch(e){if(c(e))return r;throw e}}async function q(t){return s.readFile(t,"utf-8").then(r=>({content:r,exists:!0})).catch(r=>{if(c(r))return{content:"",exists:!1};throw r})}async function B(t,r){await g(t,"file",async()=>{let e=u.dirname(t);await s.mkdir(e,{recursive:!0}),await s.writeFile(t,r,"utf-8")})}async function H(t,r){await g(t,"file",async()=>{let e=u.dirname(t);await s.mkdir(e,{recursive:!0});let n=`${t}.tmp`;await s.writeFile(n,r,"utf-8"),await s.rename(n,t)})}async function Q(t){try{return await s.access(t),!0}catch(r){if(c(r))return!1;throw r}}async function U(t){try{return(await s.stat(t)).isDirectory()}catch(r){if(c(r))return!1;throw r}}async function Y(t){await s.mkdir(t,{recursive:!0})}async function z(t,r={}){try{return(await s.readdir(t,{withFileTypes:!0})).filter(o=>!r.filesOnly||o.isFile()).filter(o=>!r.dirsOnly||o.isDirectory()).filter(o=>!r.extension||o.name.endsWith(r.extension)).map(o=>o.name)}catch(e){if(c(e))return[];throw e}}var P=d(()=>{F();T();j();i(g,"withWriteErrorContext");i(M,"walkDir");i(Z,"batchProcess");i(G,"readJson");i(K,"writeJson");i(X,"readFile");i(q,"readExistingFileOrEmpty");i(B,"writeFile");i(H,"writeFileAtomic");i(Q,"fileExists");i(U,"dirExists");i(Y,"ensureDir");i(z,"listFiles")});export{R as a,_ as b,F as c,M as d,Z as e,G as f,K as g,X as h,q as i,B as j,H as k,Q as l,U as m,Y as n,z as o,P as p};
|
|
@@ -0,0 +1,13 @@
|
|
|
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 g,c as S,e as h,f as j,g as v}from"./chunk-4T7NGLNQ.mjs";import{a as m,b as E}from"./chunk-RP7F67ZT.mjs";import{a as d,c as F}from"./chunk-FATYLG3L.mjs";import{d as c,e as R}from"./chunk-623SNKDH.mjs";import{a as n,c as D,d as I}from"./chunk-3TRXQAU4.mjs";var O={};I(O,{SKILL_DEFINITIONS:()=>u,SkillGenerator:()=>f,skillBodyHasProjectStamp:()=>y,skillGenerator:()=>K});import s from"node:fs/promises";import P from"node:os";import i from"node:path";function _(t){let o=t.userInvocable!==!1;return`---
|
|
8
|
+
description: "${t.description}"
|
|
9
|
+
allowed-tools: [${t.allowedTools.map(a=>`"${a}"`).join(", ")}]
|
|
10
|
+
user-invocable: ${o}
|
|
11
|
+
---`}function T(t){return`${_(t)}
|
|
12
|
+
|
|
13
|
+
${t.body()}`}function w(){return process.env.HOME||P.homedir()}function C(){return i.join(w(),".claude","skills")}function $(){let t=w();return[i.join(t,".codex","skills"),i.join(t,".gemini","skills"),i.join(t,".gemini","antigravity","global_skills"),i.join(t,".agents","skills")]}function y(t){return!!(/^# [^\n]+\n[^\n]*\|\s*\d+\s+files\s*\|/m.test(t)||/## Recent Deliveries/m.test(t)||/## Velocity/m.test(t)&&/pts\/sprint/m.test(t))}var u,f,K,N=D(()=>{R();E();F();v();u=[{name:"prjct",description:k,allowedTools:[...g],body:n(()=>h(),"body"),reference:n(()=>j(),"reference"),referenceFile:S}];n(_,"buildFrontmatter");n(T,"buildSkillContent");n(w,"homeDir");n(C,"claudeSkillsRoot");n($,"compactSkillRoots");n(y,"skillBodyHasProjectStamp");f=class{static{n(this,"SkillGenerator")}async generateAndInstall(){let o={generated:[],skipped:[]},a=C();for(let e of u)try{let r=T(e);if(y(r))throw new Error("refusing to install project-stamped skill body (isolation guard)");let l=i.join(a,e.name),p=i.join(l,"SKILL.md");await s.mkdir(l,{recursive:!0}),await s.writeFile(p,r,"utf-8"),e.reference&&e.referenceFile&&await s.writeFile(i.join(l,e.referenceFile),e.reference(),"utf-8"),o.generated.push({name:e.name,path:p})}catch(r){m.debug(`Failed to generate skill ${e.name}`,{error:c(r)}),o.skipped.push({name:e.name,reason:c(r)})}let b=d();for(let e of $())try{let r=i.join(e,"prjct"),l=i.join(r,"SKILL.md");await s.mkdir(r,{recursive:!0}),await s.writeFile(l,b,"utf-8"),o.generated.push({name:"prjct-compact",path:l})}catch(r){m.debug("Compact skill install skipped",{root:e,error:c(r)})}let L=new Set(u.map(e=>e.name));try{let e=await s.readdir(a,{withFileTypes:!0}).catch(()=>[]);for(let r of e)r.isDirectory()&&r.name.startsWith("prjct-")&&!L.has(r.name)&&await s.rm(i.join(a,r.name),{recursive:!0,force:!0}).catch(()=>{})}catch{}return o.generated.length>0&&m.info("Generated portable multi-host skills",{count:o.generated.length,skills:o.generated.map(e=>e.name)}),o}getDefinitions(){return u}},K=new f});export{u as a,y as b,f as c,K as d,O as e,N as f};
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { createRequire as __createRequire } from 'module';
|
|
2
|
+
import { fileURLToPath as __fileURLToPath } from 'url';
|
|
3
|
+
import { dirname as __pathDirname } from 'path';
|
|
4
|
+
const require = __createRequire(import.meta.url);
|
|
5
|
+
const __filename = __fileURLToPath(import.meta.url);
|
|
6
|
+
const __dirname = __pathDirname(__filename);
|
|
7
|
+
import{a as y}from"./chunk-DZVOFEM5.mjs";import{b as l}from"./chunk-5EF5EOCL.mjs";import{E as x,y as h}from"./chunk-HU5ERAAV.mjs";import{a as c}from"./chunk-3TRXQAU4.mjs";import n from"chalk";x();import f from"chalk";var M=["\u280B","\u2819","\u2839","\u2838","\u283C","\u2834","\u2826","\u2827","\u2807","\u280F"],E=80,v={name:"prjct",icon:"\u26A1",signature:"\u26A1 prjct",spinner:{frames:M,speed:E},cli:{header:c(()=>`${f.cyan.bold("\u26A1")} ${f.cyan("prjct")}`,"header"),footer:c(()=>f.dim("\u26A1 prjct"),"footer"),spin:c((t,r)=>`${f.cyan("\u26A1")} ${f.cyan("prjct")} ${f.cyan(M[t%10])} ${f.dim(r||"")}`,"spin")},template:{header:"\u26A1 prjct",footer:"\u26A1 prjct"},commitFooter:"Generated with [p/](https://www.prjct.app/)",urls:{website:"https://prjct.app",docs:"https://prjct.app/docs"},getCommitFooter:c((t="claude")=>h(t).commitFooter,"getCommitFooter"),getSignature:c((t="claude")=>h(t).signature,"getSignature")},d=v;var $=d.spinner.speed,L={silent:{maxLines:0,maxCharsPerLine:0,showMetrics:!1},minimal:{maxLines:1,maxCharsPerLine:65,showMetrics:!1},compact:{maxLines:4,maxCharsPerLine:80,showMetrics:!0},verbose:{maxLines:1/0,maxCharsPerLine:1/0,showMetrics:!0}},s={currentTier:"compact",interval:null,frame:0,quietMode:!1};function _(t){s.currentTier=t}c(_,"setOutputTier");function F(){return s.currentTier}c(F,"getOutputTier");function b(){return L[s.currentTier]}c(b,"getTierConfig");var g={success:n.green("\u2713"),fail:n.red("\u2717"),warn:n.yellow("\u26A0"),info:n.blue("\u2139"),debug:n.dim("\u{1F527}"),bullet:n.dim("\u2022"),arrow:n.dim("\u2192"),check:n.green("\u2713"),cross:n.red("\u2717"),spinner:n.cyan("\u25D0")};function G(t){s.quietMode=t}c(G,"setQuietMode");var a=c((t,r)=>{if(!process.stdout.isTTY&&!process.stderr.isTTY)return t||"";let e=r??(b().maxCharsPerLine||l.FALLBACK_TRUNCATE);return t&&t.length>e?`${t.slice(0,e-1)}\u2026`:t||""},"truncate");function T(t,r){let e=r??b().maxLines;if(e===1/0||e===0)return t;let o=t.split(`
|
|
8
|
+
`);if(o.length<=e)return t;let u=o.slice(0,e),i=o.length-e;return`${u.join(`
|
|
9
|
+
`)}
|
|
10
|
+
${n.dim(`...${i} more lines`)}`}c(T,"limitLines");function k(t){let r=b();if(s.currentTier==="silent")return"";if(s.currentTier==="verbose")return JSON.stringify(t,null,2);if(typeof t!="object"||t===null)return a(String(t),r.maxCharsPerLine);let e=t;if("identifier"in e&&"title"in e){let i=[];return i.push(`${e.identifier}: ${a(String(e.title),r.maxCharsPerLine-10)}`),e.status&&i.push(`Status: ${e.status}`),e.priority&&e.priority!=="none"&&i.push(`Priority: ${e.priority}`),e.url&&s.currentTier==="compact"&&i.push(n.dim(String(e.url))),T(i.join(`
|
|
11
|
+
`),r.maxLines)}if("issues"in e&&Array.isArray(e.issues)){let i=e.issues,p=i.slice(0,r.maxLines).map(m=>{let S=m.priority&&m.priority!=="none"?` [${m.priority}]`:"";return`${m.identifier} ${a(String(m.title),l.ISSUE_TITLE)}${S}`});return i.length>r.maxLines&&p.push(n.dim(`...${i.length-r.maxLines} more`)),p.join(`
|
|
12
|
+
`)}let u=["id","name","title","status","message","success","error"].filter(i=>i in e);return u.length>0?T(u.map(i=>`${i}: ${a(String(e[i]),r.maxCharsPerLine-i.length-2)}`).join(`
|
|
13
|
+
`),r.maxLines):T(JSON.stringify(t,null,2),r.maxLines)}c(k,"formatForHuman");var w=c(()=>process.stdout.isTTY?process.stdout.write(`\r${" ".repeat(l.CLEAR_WIDTH)}\r`):!0,"clear"),P={start(){return s.quietMode||console.log(d.cli.header()),this},end(){return s.quietMode||console.log(d.cli.footer()),this},spin(t){return s.quietMode?this:(this.stop(),process.stdout.isTTY?(s.interval=setInterval(()=>{process.stdout.write(`\r${d.cli.spin(s.frame++,a(t,l.SPINNER_MSG))}`)},$),this):(process.stdout.write(`${d.cli.spin(0,a(t,l.SPINNER_MSG))}
|
|
14
|
+
`),this))},done(t,r){if(this.stop(),!s.quietMode){let e=[];r?.agents!==void 0&&e.push(`${r.agents}a`),r?.reduction!==void 0&&e.push(`${r.reduction}%`),r?.tokens!==void 0&&e.push(`${Math.round(r.tokens)}K`);let o=e.length>0?n.dim(` [${e.join(" | ")}]`):"";console.log(`${g.success} ${a(t,l.DONE_MSG)}${o}`)}return this},fail(t){return this.stop(),console.error(`${g.fail} ${a(t,l.FAIL_MSG)}`),this},failWithHint(t){this.stop();let r=typeof t=="string"?y(t):t;return console.error(),console.error(`${g.fail} ${r.message}`),r.file&&console.error(n.dim(` File: ${r.file}`)),r.hint&&console.error(n.yellow(` \u{1F4A1} ${r.hint}`)),r.docs&&console.error(n.dim(` Docs: ${r.docs}`)),console.error(),this},warn(t){return this.stop(),s.quietMode||console.log(`${g.warn} ${a(t,l.WARN_MSG)}`),this},info(t){return this.stop(),s.quietMode||console.log(`${g.info} ${t}`),this},debug(t){this.stop();let r=process.env.DEBUG==="1"||process.env.DEBUG==="true";return!s.quietMode&&r&&console.log(`${g.debug} ${n.dim(t)}`),this},success(t,r){return this.done(t,r)},list(t,r={}){if(this.stop(),s.quietMode)return this;let e=r.bullet||g.bullet,o=" ".repeat(r.indent||0);for(let u of t)console.log(`${o}${e} ${u}`);return this},table(t,r={}){if(this.stop(),s.quietMode||t.length===0)return this;let e=Object.keys(t[0]),o={};for(let u of e){o[u]=u.length;for(let i of t){let p=String(i[u]??"");p.length>o[u]&&(o[u]=p.length)}}if(r.header!==!1){let u=e.map(i=>i.padEnd(o[i])).join(" ");console.log(n.dim(u)),console.log(n.dim("\u2500".repeat(u.length)))}for(let u of t){let i=e.map(p=>String(u[p]??"").padEnd(o[p])).join(" ");console.log(i)}return this},box(t,r){if(this.stop(),s.quietMode)return this;let e=r.split(`
|
|
15
|
+
`),o=Math.max(t.length,...e.map(i=>i.length)),u="\u2500".repeat(o+2);console.log(n.dim(`\u250C${u}\u2510`)),console.log(`${n.dim("\u2502")} ${n.bold(t.padEnd(o))} ${n.dim("\u2502")}`),console.log(n.dim(`\u251C${u}\u2524`));for(let i of e)console.log(`${n.dim("\u2502")} ${i.padEnd(o)} ${n.dim("\u2502")}`);return console.log(n.dim(`\u2514${u}\u2518`)),this},section(t){return this.stop(),s.quietMode?this:(console.log(`
|
|
16
|
+
${n.bold(t)}`),console.log(n.dim("\u2500".repeat(t.length))),this)},stop(){return s.interval&&(clearInterval(s.interval),s.interval=null,w()),this},step(t,r,e){if(s.quietMode)return this;this.stop();let o=n.dim(`[${t}/${r}]`);return process.stdout.isTTY?(s.interval=setInterval(()=>{process.stdout.write(`\r${d.cli.spin(s.frame++,`${o} ${a(e,l.STEP_MSG)}`)}`)},$),this):(process.stdout.write(`${d.cli.spin(0,`${o} ${a(e,l.STEP_MSG)}`)}
|
|
17
|
+
`),this)},progress(t,r,e){if(s.quietMode)return this;this.stop();let o=Math.round(t/r*100),u=Math.round(o/10),i=10-u,p=n.cyan("\u2588".repeat(u))+n.dim("\u2591".repeat(i)),m=e?` ${a(e,l.PROGRESS_TEXT)}`:"";return process.stdout.isTTY?(s.interval=setInterval(()=>{process.stdout.write(`\r${d.cli.spin(s.frame++,`[${p}] ${o}%${m}`)}`)},$),this):(process.stdout.write(`${d.cli.spin(0,`[${p}] ${o}%${m}`)}
|
|
18
|
+
`),this)}},U=P;export{L as a,_ as b,F as c,b as d,G as e,T as f,k as g,U as h};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { createRequire as __createRequire } from 'module';
|
|
2
|
+
import { fileURLToPath as __fileURLToPath } from 'url';
|
|
3
|
+
import { dirname as __pathDirname } from 'path';
|
|
4
|
+
const require = __createRequire(import.meta.url);
|
|
5
|
+
const __filename = __fileURLToPath(import.meta.url);
|
|
6
|
+
const __dirname = __pathDirname(__filename);
|
|
7
|
+
import{b as r,p as o}from"./chunk-D62TAZG6.mjs";import{a as i}from"./chunk-3TRXQAU4.mjs";o();import{existsSync as u}from"node:fs";import a from"node:path";var l=[".github/pull_request_template.md",".github/PULL_REQUEST_TEMPLATE.md",".github/PULL_REQUEST_TEMPLATE/default.md","docs/pull_request_template.md",".gitlab/merge_request_templates/default.md"];function m(t){for(let n of l)if(u(a.join(t,n)))return n;return null}i(m,"findPrTemplate");async function g(t){try{let{stdout:n}=await r("git",["remote","get-url","origin"],{cwd:t,timeout:3e3}),e=n.toString().trim();return e?/(^|[./@])github\.com([/:]|$)/.test(e)?"github":"other":null}catch{return null}}i(g,"getRemoteHost");async function f(t){let n=m(t);if(n)return{kind:"template",templatePath:n};let e=await g(t);return e==="github"?{kind:"github-ambiguous"}:e==="other"?{kind:"non-github"}:{kind:"no-remote"}}i(f,"detectPrConventionSignal");function h(t){return t.kind==="non-github"||t.kind==="no-remote"?"manual":"auto"}i(h,"defaultPrConventionFor");export{f as a,h as b};
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { createRequire as __createRequire } from 'module';
|
|
2
|
+
import { fileURLToPath as __fileURLToPath } from 'url';
|
|
3
|
+
import { dirname as __pathDirname } from 'path';
|
|
4
|
+
const require = __createRequire(import.meta.url);
|
|
5
|
+
const __filename = __fileURLToPath(import.meta.url);
|
|
6
|
+
const __dirname = __pathDirname(__filename);
|
|
7
|
+
import{D as F,E as M,x as j}from"./chunk-HU5ERAAV.mjs";import{b as k,f as G}from"./chunk-OE27RFLJ.mjs";import{a as b,b as S}from"./chunk-2EEMQV7N.mjs";import{f as L,g as N}from"./chunk-XWLTEAGN.mjs";import{a as E,b as a,c as _}from"./chunk-DOJPSIMG.mjs";import{i as A,l as I,p as O}from"./chunk-HYIT7MF5.mjs";import{e as l,g as R}from"./chunk-225DWS4D.mjs";import{a as c,e as C}from"./chunk-3TRXQAU4.mjs";R();O();M();import s from"node:fs/promises";import o from"node:path";G();R();O();S();import P from"node:fs/promises";import D from"node:path";var y='<!-- prjct:start - DO NOT REMOVE THIS MARKER -->\n# p/ \u2014 Project knowledge layer\n\nprjct stores project memory (decisions, learnings, gotchas, patterns, ships, analyses) per project in SQLite and serves it to you through tools. **Query it \u2014 don\'t re-read source from scratch.**\n\nprjct remembers and shows the path; it does not own execution. Treat prjct output as durable signals (task state, memories, specs, workflows, risks, recent learnings). Claude, GPT, and other agents decide the concrete HOW with their own native tools and judgment, then persist meaningful outcomes back to prjct.\n\nYou are in a prjct project when `.prjct/` is in cwd OR `~/.prjct-cli/projects/` has an entry for the current path.\n\n## Lookup FIRST, source LAST\n\nBefore reading source code or running broad searches for ANY question about the project (architecture, conventions, decisions, recent ships, bugs, patterns, tech debt, past analyses), QUERY prjct first \u2014 bounded, ranked answers from SQLite, no markdown trees to wade through:\n\n- `prjct context memory <topic>` / `prjct search "<q>"` \u2014 captured decisions, gotchas, learnings, facts\n- `prjct context --md` \u2014 current state: active cycle, ships, recent learnings\n- architecture / conventions / patterns / anti-patterns / tech-debt / insights \u2192 MCP `prjct_analysis` (add `mode:archive` for history)\n- developer preferences \u2192 MCP `prjct_developer`; machine signals \u2192 MCP `prjct_signals`\n- specs \u2192 MCP `prjct_spec_list` / `prjct_spec_get`; per-file traps before editing \u2192 `prjct guard <file>`\n\nOnly fall through to source/repo reading when prjct does not contain the answer.\n\n**Skill \u2260 project identity.** The prjct skill is a portable multi-LLM contract (L0). Live name/stack/branch come from SessionStart + `prjct context --md` for **this cwd**. If skill text and the tree disagree, trust the cwd and the tree.\n\n## Capture analyses BACK to prjct\n\nWhen you complete substantive work \u2014 analysis, decision, learning, gotcha \u2014 persist it: `prjct remember <decision|learning|gotcha|fact> "..."` or `prjct capture "<text>" --tags k:v`. **Author every entry in ENGLISH**, whatever language the user speaks. **Default to capturing \u2014 under-capture is the failure mode that makes prjct useless.** The full verb map and task workflow live in the `prjct` skill.\n\n## Where things live\n\n- Source of truth: SQLite at `~/.prjct-cli/projects/<id>/` (don\'t read directly \u2014 use `prjct` CLI / MCP tools)\n- Project config: `.prjct/prjct.config.json` in repo root\n\n**Auto-managed by prjct-cli** | https://prjct.app\n<!-- prjct:end - DO NOT REMOVE THIS MARKER -->\n';async function v(d){let t=(M(),C(F)),e=d??await t.getActiveProvider(),i=e.name;if(d){if(!e.configDir)return{success:!1,error:`${e.displayName} not detected`,action:"skipped"}}else if(!(await t.detectProvider(i)).installed&&!e.configDir)return{success:!1,error:`${e.displayName} not detected`,action:"skipped"};try{await P.mkdir(e.configDir,{recursive:!0});let n=D.join(e.configDir,e.contextFile),m=await(async()=>{if(i==="claude")return y;let u=k(`global/${e.contextFile}`);if(u)return u;let{PACKAGE_ROOT:g}=(N(),C(L)),T=D.join(g,"templates","global",e.contextFile);return P.readFile(T,"utf-8").catch(()=>i==="gemini"?y.replace(/Claude/g,"Gemini"):y)})(),r=await A(n),p="<!-- prjct-project:start - DO NOT REMOVE THIS MARKER -->",f="<!-- prjct-project:end - DO NOT REMOVE THIS MARKER -->",x=(()=>{if(!r.content.includes(p)||!r.content.includes(f))return r.content;let u=r.content.substring(0,r.content.indexOf(p)),g=r.content.substring(r.content.indexOf(f)+f.length);return`${(u+g).replace(/\n{3,}/g,`
|
|
8
|
+
|
|
9
|
+
`).trim()}
|
|
10
|
+
`})(),h=b(r.exists?x:"",m,"<!-- prjct:start - DO NOT REMOVE THIS MARKER -->","<!-- prjct:end - DO NOT REMOVE THIS MARKER -->");return r.exists&&r.content===h.content?{success:!0,action:"unchanged",path:n}:(await P.writeFile(n,h.content,"utf-8"),{success:!0,action:h.action,path:n})}catch(n){return{success:!1,error:l(n),action:"failed"}}}c(v,"installGlobalConfig");_();async function ot(d){return v(d)}c(ot,"installGlobalConfig");var w=class{static{c(this,"CommandInstaller")}commandsPath="";configPath="";_initialized=!1;async ensureInit(t){if(this._initialized)return;let e=t??await j();this.configPath=e.configDir??"",this.commandsPath=this.configPath?o.join(this.configPath,"commands"):"",this._initialized=!0}async detectActiveProvider(t){return await this.ensureInit(t),I(this.configPath)}async installCommands(){let t=await this.detectActiveProvider(),e=await j();return t?(await this.cleanupRouter(),{success:!0,installed:[],path:this.commandsPath}):{success:!1,error:`${e.displayName} not detected. Please install it first.`}}async uninstallCommands(){try{let t=[];await this.ensureInit();for(let e of["p.md","p.toml"]){let i=o.join(this.commandsPath,e);try{await s.unlink(i),t.push(e)}catch(n){if(n.code!=="ENOENT")return{success:!1,error:l(n)}}}return{success:!0,uninstalled:t}}catch(t){return{success:!1,error:l(t)}}}async checkInstallation(){return await this.detectActiveProvider()?{installed:!0,providerDetected:!0,commands:[],path:this.commandsPath}:{installed:!1,providerDetected:!1}}async getInstallPath(){return await this.ensureInit(),this.commandsPath}async syncCommands(t){if(!await this.detectActiveProvider(t))return{success:!1,error:"AI agent not detected",added:0,updated:0,removed:0};try{return{success:!0,added:0,updated:0,removed:await this.cleanupRouter()?1:0}}catch(i){return{success:!1,error:l(i),added:0,updated:0,removed:0}}}async cleanupRouter(){return await this.ensureInit(),(await Promise.all(["p.md","p.toml"].map(async e=>{try{return await s.unlink(o.join(this.commandsPath,e)),!0}catch{return!1}}))).some(Boolean)}async cleanupLegacyCommands(){await this.ensureInit();let t=o.join(this.commandsPath,"p");try{if((await s.stat(t).catch(()=>null))?.isDirectory())return await s.rm(t,{recursive:!0,force:!0}),!0}catch{}return!1}async installGlobalConfig(t){return v(t)}async cleanupAllLegacy(){let t=E(),e=[],i=[o.join(t,".claude","commands","p.md"),o.join(t,".claude","commands","p.toml"),o.join(t,".gemini","commands","p.md"),o.join(t,".gemini","commands","p.toml")];for(let r of i)try{await s.unlink(r),e.push(r)}catch{}let n=[o.join(t,".claude","commands","p"),o.join(t,".gemini","commands","p")];for(let r of n)try{(await s.stat(r).catch(()=>null))?.isDirectory()&&(await s.rm(r,{recursive:!0,force:!0}),e.push(r))}catch{}let m=[o.join(t,".prjct-cli","config","homebrew-migrated")];for(let r of m)try{await s.unlink(r),e.push(r)}catch{}return{cleaned:e}}};function it(){return{claude:{commands:a(".claude","commands"),config:a(".claude"),router:a(".claude","commands","p.md")},gemini:{commands:a(".gemini","commands"),config:a(".gemini"),router:a(".gemini","commands","p.toml")}}}c(it,"getProviderPaths");var H=new w,st=H;export{ot as a,w as b,it as c,st as d};
|
|
@@ -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 r}from"./chunk-3TRXQAU4.mjs";import{createHash as s}from"node:crypto";function e(n){return s("sha256").update(n).digest("hex")}r(e,"sha256");function c(n){return e(n).slice(0,16)}r(c,"sha256Short");function f(n){return s("md5").update(n).digest("hex")}r(f,"md5");function g(n){let t=n&&typeof n=="object"&&!Array.isArray(n)?JSON.stringify(i(n)):JSON.stringify(n);return e(t)}r(g,"hashPayload");function i(n){let t={};for(let o of Object.keys(n).sort())t[o]=n[o];return t}r(i,"sortKeys");export{e as a,c as b,f as c,g as d};
|
|
@@ -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{d as r,e as d}from"./chunk-NOHSLOLL.mjs";import{g as o,i as p}from"./chunk-DMO3ZFUG.mjs";import{e as n,l as m}from"./chunk-HU5ERAAV.mjs";import{a}from"./chunk-3TRXQAU4.mjs";m();p();var u="judgment:active",c="judgment:ghosts",g=class{static{a(this,"JudgmentLedgerStorage")}get(s){let t=o.getDoc(s,u);if(t===null)return null;let e=r.safeParse(t);return e.success?e.data:null}set(s,t){let e=t.updatedAt||n();return o.updateDoc(s,u,()=>r.parse({...t,updatedAt:e}),()=>r.parse({...t,updatedAt:e}))}clear(s){o.deleteDoc(s,u)}getGhosts(s){let t=o.getDoc(s,c);if(t===null)return{ghosts:[],updatedAt:n()};let e=d.safeParse(t);return e.success?e.data:{ghosts:[],updatedAt:n()}}setGhosts(s,t){let e=d.parse(t);return o.setDoc(s,c,e),e}},w=new g;export{u as a,c as b,w as c};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { createRequire as __createRequire } from 'module';
|
|
2
|
+
import { fileURLToPath as __fileURLToPath } from 'url';
|
|
3
|
+
import { dirname as __pathDirname } from 'path';
|
|
4
|
+
const require = __createRequire(import.meta.url);
|
|
5
|
+
const __filename = __fileURLToPath(import.meta.url);
|
|
6
|
+
const __dirname = __pathDirname(__filename);
|
|
7
|
+
import{i as c}from"./chunk-UAYTDSYG.mjs";import{d as s}from"./chunk-FOWTB762.mjs";import{a as m}from"./chunk-6U3CYLY5.mjs";import{a as u}from"./chunk-UYMZ3NAF.mjs";import{h as i}from"./chunk-ID2C2S33.mjs";import{a as f}from"./chunk-RACISWUV.mjs";import{b as l}from"./chunk-XSZOHNL4.mjs";import{a as o}from"./chunk-3TRXQAU4.mjs";async function k(t,r={}){let e=await l.getProjectId(t);return e?{ok:!0,value:e}:(r.md?console.log("> No project ID found. Run `prjct init` first."):i.failWithHint("NO_PROJECT_ID"),{ok:!1,result:{success:!1,error:"No project ID found"}})}o(k,"requireProjectId");async function C(t,r={}){let e=await m.ensureInit(t);return e.success?k(t,r):{ok:!1,result:e}}o(C,"requireProject");async function T(t,r={},e=process.cwd()){let n=await c(t,e);return n?{ok:!0,value:n}:{ok:!1,result:s('No active work cycle \u2014 start one with `prjct work "<intent>"`',r)}}o(T,"requireActiveTask");function O(t,r,e={}){if(r&&u.getWorkflow(t,r)?.enabled)return{ok:!0,value:{name:r}};let p=u.getAllWorkflows(t).map(a=>a.name).join(", ");return{ok:!1,result:s(`Workflow '${r??""}' not found. Available: ${p}`,e)}}o(O,"requireWorkflow");function P(t,r={}){let e=f(t,{force:r.force});return e.allow?{ok:!0}:(i.fail(e.denyMessage),{ok:!1,result:{success:!1,error:e.kind==="secrets"?"Secret-like content detected":e.kind==="prompt_injection"?"Prompt-injection-like content detected":e.reason}})}o(P,"requireTrustedMemoryContent");export{k as a,C as b,T as c,O as d,P as e};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { createRequire as __createRequire } from 'module';
|
|
2
|
+
import { fileURLToPath as __fileURLToPath } from 'url';
|
|
3
|
+
import { dirname as __pathDirname } from 'path';
|
|
4
|
+
const require = __createRequire(import.meta.url);
|
|
5
|
+
const __filename = __fileURLToPath(import.meta.url);
|
|
6
|
+
const __dirname = __pathDirname(__filename);
|
|
7
|
+
import{b as l}from"./chunk-YEALP3WX.mjs";import{a as n}from"./chunk-3TRXQAU4.mjs";function g(d,s){let t=[...d.added,...d.modified],e=new Set(t),i=new Set,c=l(s);if(c)for(let u of t){let r=c.reverse[u];if(r)for(let a of r)e.has(a)||i.add(a)}let o=Array.from(i),f=[...t,...o];return{directlyChanged:t,affectedByImports:o,deleted:d.deleted,allAffected:f}}n(g,"propagateChanges");function h(d){let s=new Set;for(let t of d){let e=t.toLowerCase();(e.endsWith(".tsx")||e.endsWith(".jsx")||e.endsWith(".css")||e.endsWith(".scss")||e.endsWith(".vue")||e.endsWith(".svelte")||e.includes("/components/")||e.includes("/pages/")||e.includes("/app/"))&&(s.add("frontend"),s.add("uxui")),(e.includes(".test.")||e.includes(".spec.")||e.includes("__tests__")||e.includes("/test/"))&&s.add("testing"),(e.includes("dockerfile")||e.includes("docker-compose")||e.includes(".dockerignore")||e.includes(".github/")||e.includes("ci/")||e.includes("cd/"))&&s.add("devops"),(e.endsWith(".sql")||e.includes("prisma")||e.includes("drizzle")||e.includes("migration")||e.includes("/db/"))&&s.add("database"),(e.endsWith(".ts")||e.endsWith(".js"))&&!e.includes(".test.")&&!e.includes(".spec.")&&!e.endsWith(".d.ts")&&s.add("backend")}return s}n(h,"affectedDomains");export{g as a,h as b};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { createRequire as __createRequire } from 'module';
|
|
2
|
+
import { fileURLToPath as __fileURLToPath } from 'url';
|
|
3
|
+
import { dirname as __pathDirname } from 'path';
|
|
4
|
+
const require = __createRequire(import.meta.url);
|
|
5
|
+
const __filename = __fileURLToPath(import.meta.url);
|
|
6
|
+
const __dirname = __pathDirname(__filename);
|
|
7
|
+
import{a as E,c as w}from"./chunk-YLYAYRSJ.mjs";import{b as j}from"./chunk-DW4QMD6J.mjs";import{b as G,c as P}from"./chunk-DOJPSIMG.mjs";import{a as i}from"./chunk-3TRXQAU4.mjs";P();import v from"node:fs/promises";import y from"node:path";var k="_prjctManaged";function b(){return process.env.PRJCT_TEST_MODE==="1"?y.join(G(".prjct-tests"),"gemini","settings.json"):G(".gemini","settings.json")}i(b,"getGeminiSettingsPath");function M(){let n=[];for(let e of w)e.event==="SessionStart"?n.push({geminiEvent:"SessionStart",matcher:e.matcher||void 0,subcommand:e.subcommand,name:`prjct-${e.subcommand}`}):e.event==="UserPromptSubmit"?n.push({geminiEvent:"BeforeAgent",subcommand:e.subcommand,name:`prjct-${e.subcommand}`}):e.event==="PreToolUse"&&e.matcher==="Bash"?n.push({geminiEvent:"BeforeTool",matcher:"run_shell_command",subcommand:e.subcommand,name:`prjct-${e.subcommand}`}):e.event==="PreToolUse"&&e.matcher==="Edit|Write"?n.push({geminiEvent:"BeforeTool",matcher:"write_file|replace",subcommand:e.subcommand,name:`prjct-${e.subcommand}`}):e.event==="PostToolUse"&&e.matcher==="Edit|Write"?n.push({geminiEvent:"AfterTool",matcher:"write_file|replace",subcommand:e.subcommand,name:`prjct-${e.subcommand}`}):e.event==="Stop"?n.push({geminiEvent:"AfterAgent",subcommand:e.subcommand,name:`prjct-${e.subcommand}`}):e.event==="Notification"&&n.push({geminiEvent:"Notification",subcommand:e.subcommand,name:`prjct-${e.subcommand}`});return n}i(M,"geminiHookMaps");function R(n){return E(n,"PRJCT_HOOK_HOST=gemini")}i(R,"hookCommand");function f(n){return n[k]===!0||(n.name?.startsWith("prjct-")??!1)}i(f,"isPrjctHandler");function h(n){if(n[k]===!0)return!1;let e=n.command?.trim()??"";return/(^|\/|\s)prjct\s+hook\s+\S+/.test(e)||/PRJCT_HOOK_HOST=gemini/.test(e)}i(h,"isLegacyPrjctHandler");async function S(n){try{let e=await v.readFile(n,"utf-8"),o=JSON.parse(e);return o&&typeof o=="object"?o:{}}catch(e){if(e.code==="ENOENT")return{};throw e}}i(S,"readSettings");async function H(n,e){await v.mkdir(y.dirname(n),{recursive:!0}),await v.writeFile(n,`${JSON.stringify(e,null,2)}
|
|
8
|
+
`,"utf-8")}i(H,"writeSettings");function O(n){return{type:"command",command:R(n.subcommand),name:n.name,timeout:3e4,description:`prjct ${n.subcommand} (managed)`,[k]:!0}}i(O,"handlerFor");function _(n){let e=new Set(M().map(r=>r.name)),o=[];for(let r of Object.keys(n)){let s=[];for(let m of n[r]??[])m.hooks=m.hooks.filter(t=>!f(t)&&!h(t)||t.name&&e.has(t.name)?!0:t.name&&!e.has(t.name)||!t.name&&h(t)?(o.push(t),!1):!0),m.hooks.length>0&&s.push(m);s.length>0?n[r]=s:delete n[r]}return o.length}i(_,"pruneOrphans");async function T(n=b()){let e=await S(n),o={...e.mcpServers??{}},r=o.prjct,s=j.prjct,m=JSON.stringify(r)!==JSON.stringify(s);return o.prjct=s,e.mcpServers=o,(m||r===void 0)&&await H(n,e),{path:n,changed:m||r===void 0}}i(T,"ensureGeminiMcpServer");async function x(n=b()){let e=await S(n),o=e.hooks??{},r=[],s=[];for(let t of M()){let p=o[t.geminiEvent]??[],g=t.matcher??"",l=p.find(a=>(a.matcher??"")===g),c=l??{matcher:t.matcher,hooks:[]};l||p.push(c),c.hooks=c.hooks.filter(a=>!h(a)||f(a)),c.hooks=c.hooks.filter(a=>!(h(a)&&!f(a)));let d=O(t),u=c.hooks.find(a=>f(a)&&(a.name===t.name||a.command.includes(t.subcommand)));u?u.command===d.command&&u.timeout===d.timeout?s.push(t):(u.command=d.command,u.timeout=d.timeout,u.name=d.name,u.description=d.description,u[k]=!0,r.push(t)):(c.hooks.push(d),r.push(t)),c.matcher||delete c.matcher,o[t.geminiEvent]=p}let m=_(o);return e.hooks=o,await H(n,e),{path:n,hooksWritten:r.length,alreadyPresent:s.length,hooksPruned:m}}i(x,"installGeminiHooks");async function U(n=b()){let e=await T(n),o=await x(n);return{settingsPath:n,mcpChanged:e.changed,hooksWritten:o.hooksWritten,alreadyPresent:o.alreadyPresent,hooksPruned:o.hooksPruned}}i(U,"installGeminiSettings");async function B(n=b()){let e=await S(n),o=[];if(e.hooks){for(let[s,m]of Object.entries(e.hooks)){let t=[];for(let p of m){let g=p.hooks.filter(l=>f(l)||h(l)?(o.push(l),!1):!0);g.length>0&&t.push({...p,hooks:g})}t.length>0?e.hooks[s]=t:delete e.hooks[s]}Object.keys(e.hooks).length===0&&delete e.hooks}let r=!!e.mcpServers?.prjct;return r&&e.mcpServers&&(delete e.mcpServers.prjct,Object.keys(e.mcpServers).length===0&&delete e.mcpServers),await H(n,e),{settingsPath:n,hooksRemoved:o.length,mcpRemoved:r}}i(B,"uninstallGeminiSettings");export{b as a,M as b,T as c,x as d,U as e,B as f};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { createRequire as __createRequire } from 'module';
|
|
2
|
+
import { fileURLToPath as __fileURLToPath } from 'url';
|
|
3
|
+
import { dirname as __pathDirname } from 'path';
|
|
4
|
+
const require = __createRequire(import.meta.url);
|
|
5
|
+
const __filename = __fileURLToPath(import.meta.url);
|
|
6
|
+
const __dirname = __pathDirname(__filename);
|
|
7
|
+
import{d as l,e as m}from"./chunk-6RT2P22O.mjs";import{a as c,c as p}from"./chunk-DOJPSIMG.mjs";import{l as d,m as n,p as u}from"./chunk-HYIT7MF5.mjs";import{a as i}from"./chunk-3TRXQAU4.mjs";u();m();p();import a from"node:path";var r=[{id:"agents-md",displayName:"AGENTS.md-compatible agents",kind:"standard",status:"stable",contextFiles:["AGENTS.md"],supports:{agentsMd:!0,mcp:!1,skills:!1,hooks:!1,acp:!1,projectRules:!1},notes:"Universal project instruction surface shared by current and future coding agents."},{id:"mcp",displayName:"Model Context Protocol clients",kind:"standard",status:"stable",contextFiles:[],supports:{agentsMd:!1,mcp:!0,skills:!1,hooks:!1,acp:!1,projectRules:!1},notes:"Universal tool surface for prjct memory, workflow, files, and code intelligence."},{id:"acp",displayName:"Agent Client Protocol clients",kind:"standard",status:"emerging",contextFiles:[],supports:{agentsMd:!1,mcp:!1,skills:!1,hooks:!1,acp:!0,projectRules:!1},notes:"Editor/agent transport for clients such as Zed and other ACP-compatible tools."},{id:"claude",displayName:"Claude Code",kind:"cli",status:"stable",detectsBy:{homeDirs:[".claude"],commands:["claude"]},contextFiles:["CLAUDE.md","AGENTS.md"],mcpTargets:[{format:"claude-json",pathHint:"~/.claude/mcp.json",writable:!0}],supports:{agentsMd:!1,mcp:!0,skills:!0,hooks:!0,acp:!1,projectRules:!0},notes:"Benchmark-tier CLI (2026-07): Claude Code + Opus frontier. CLAUDE.md, skills, hooks, MCP JSON."},{id:"codex",displayName:"OpenAI Codex",kind:"cli",status:"stable",detectsBy:{homeDirs:[".codex"],commands:["codex"]},contextFiles:["AGENTS.md"],mcpTargets:[{format:"codex-toml",pathHint:"~/.codex/config.toml",writable:!0}],supports:{agentsMd:!0,mcp:!0,skills:!0,hooks:!0,acp:!1,projectRules:!1},notes:"Benchmark-tier CLI (2026-07): Codex + GPT-5.x (TB leader). AGENTS.md, config.toml MCP (native), hooks opt-in (planned installer)."},{id:"gemini",displayName:"Gemini CLI",kind:"cli",status:"stable",detectsBy:{homeDirs:[".gemini"],commands:["gemini"]},contextFiles:["GEMINI.md","AGENTS.md"],mcpTargets:[{format:"claude-json",pathHint:"~/.gemini/settings.json mcpServers",writable:!0}],supports:{agentsMd:!0,mcp:!0,skills:!0,hooks:!0,acp:!1,projectRules:!0},notes:"Benchmark-tier CLI (2026-07): Gemini CLI + Pro/Flash. GEMINI.md; prjct install writes MCP+hooks to ~/.gemini/settings.json."},{id:"antigravity",displayName:"Google Antigravity",kind:"ide",status:"emerging",detectsBy:{homeDirs:[a.join(".gemini","antigravity")]},contextFiles:["ANTIGRAVITY.md","AGENTS.md"],supports:{agentsMd:!0,mcp:!0,skills:!0,hooks:!1,acp:!1,projectRules:!0},notes:"Uses Antigravity skills under the Gemini config tree."},{id:"opencode",displayName:"OpenCode",kind:"cli",status:"stable",detectsBy:{homeDirs:[".config/opencode"],projectDirs:[".opencode"],commands:["opencode"]},contextFiles:["AGENTS.md","opencode.json","opencode.jsonc"],mcpTargets:[{format:"opencode-json",pathHint:"~/.config/opencode/opencode.json mcp.prjct",writable:!0}],supports:{agentsMd:!0,mcp:!0,skills:!0,hooks:!1,acp:!1,projectRules:!0},notes:"Benchmark-tier open-source CLI (2026-07): most-starred multi-provider agent. AGENTS.md + prjct install writes mcp.prjct; Claude skill/CLAUDE.md compat."},{id:"pi",displayName:"Pi",kind:"cli",status:"stable",detectsBy:{homeDirs:[".pi",a.join(".pi","agent")],projectDirs:[".pi"],commands:["pi"]},contextFiles:["AGENTS.md","CLAUDE.md","SYSTEM.md","APPEND_SYSTEM.md"],supports:{agentsMd:!0,mcp:!1,skills:!0,hooks:!1,acp:!1,projectRules:!1},notes:"Benchmark-tier minimal harness (2026-07): AGENTS.md + prjct skill at ~/.pi/agent/skills/prjct. MCP only via optional extensions \u2014 do not require it."},{id:"qwen-code",displayName:"Qwen Code",kind:"model-runtime",status:"emerging",detectsBy:{homeDirs:[".qwen"],projectDirs:[".qwen"],commands:["qwen"]},contextFiles:["AGENTS.md","GEMINI.md"],supports:{agentsMd:!0,mcp:!0,skills:!1,hooks:!1,acp:!1,projectRules:!0},notes:"Qwen-family coding runtime; treat model/provider choice as separate from runtime setup."},{id:"kimi-cli",displayName:"Kimi Code CLI",kind:"model-runtime",status:"emerging",detectsBy:{homeDirs:[".kimi-code",".kimi"],projectDirs:[".kimi"],commands:["kimi"]},contextFiles:["AGENTS.md"],mcpTargets:[{format:"claude-json",pathHint:"~/.kimi-code/mcp.json",writable:!0},{format:"claude-json",pathHint:"~/.kimi/mcp.json (legacy Kimi CLI fallback)",writable:!1}],supports:{agentsMd:!0,mcp:!0,skills:!0,hooks:!0,acp:!1,projectRules:!1},notes:"Kimi Code CLI (~/.kimi-code; legacy ~/.kimi is fallback-only): native MCP + hooks ([[hooks]] in config.toml) + compact skill at ~/.agents/skills/prjct via prjct install. See harness-surfaces."},{id:"grok",displayName:"xAI Grok Build",kind:"cli",status:"stable",detectsBy:{homeDirs:[".grok"],commands:["grok"]},contextFiles:["AGENTS.md","CLAUDE.md"],mcpTargets:[{format:"codex-toml",pathHint:"~/.grok/config.toml",writable:!0},{format:"claude-json",pathHint:"~/.claude/mcp.json (Grok Claude-compat fallback)",writable:!0}],supports:{agentsMd:!0,mcp:!0,skills:!0,hooks:!0,acp:!1,projectRules:!1},notes:"Benchmark-tier CLI (2026-07): Grok Build. Native MCP + skill via prjct install (~/.grok/config.toml + ~/.grok/skills/prjct). Hooks still Claude-compat. See harness-surfaces."},{id:"goose",displayName:"Goose",kind:"cli",status:"stable",detectsBy:{homeDirs:[".config/goose"],projectDirs:[".goose"],commands:["goose"]},contextFiles:["AGENTS.md"],mcpTargets:[{format:"generic",pathHint:"Goose extensions",writable:!1}],supports:{agentsMd:!0,mcp:!0,skills:!1,hooks:!1,acp:!1,projectRules:!1},notes:"Open-source coding agent with extension/MCP-style tool configuration."},{id:"aider",displayName:"Aider",kind:"cli",status:"stable",detectsBy:{projectFiles:[".aider.conf.yml",".aider.conf.yaml"],commands:["aider"]},contextFiles:["AGENTS.md","CONVENTIONS.md"],supports:{agentsMd:!0,mcp:!1,skills:!1,hooks:!1,acp:!1,projectRules:!0},notes:"CLI pair-programming agent; AGENTS.md provides durable repo instructions."},{id:"cursor",displayName:"Cursor",kind:"ide",status:"stable",detectsBy:{projectDirs:[".cursor"],projectFiles:[".cursorrules"]},contextFiles:["AGENTS.md",".cursor/rules/prjct.mdc"],mcpTargets:[{format:"claude-json",pathHint:"~/.cursor/mcp.json (configured in-app; prjct does not write it)",writable:!1}],projectRuleTargets:[{relativePath:".cursor/rules/prjct.mdc",templateKey:"global/CURSOR.mdc",detectPath:".cursor"}],supports:{agentsMd:!0,mcp:!0,skills:!1,hooks:!0,acp:!1,projectRules:!0},notes:"Benchmark-tier AI IDE (2026-07): agent mode + CLI. Rules under .cursor/rules; prjct install writes ~/.cursor/hooks.json."},{id:"cline",displayName:"Cline",kind:"ide",status:"stable",detectsBy:{projectDirs:[".cline",".clinerules"],projectFiles:[".clinerules"]},contextFiles:["AGENTS.md",".clinerules/"],mcpTargets:[{format:"generic",pathHint:"Cline MCP settings (VS Code extension; configured in-app)",writable:!1}],supports:{agentsMd:!0,mcp:!0,skills:!0,hooks:!0,acp:!0,projectRules:!0},notes:"Benchmark-tier open agent (2026-07): VS Code + multi-model. AGENTS.md, rules, skills, hooks, MCP, ACP."},{id:"roo-code",displayName:"Roo Code",kind:"ide",status:"stable",detectsBy:{projectDirs:[".roo"]},contextFiles:["AGENTS.md"],supports:{agentsMd:!0,mcp:!0,skills:!1,hooks:!1,acp:!1,projectRules:!0},notes:"VS Code agent with MCP and project rule surfaces."},{id:"continue",displayName:"Continue",kind:"ide",status:"stable",detectsBy:{projectDirs:[".continue"]},contextFiles:["AGENTS.md"],mcpTargets:[{format:"continue-yaml",pathHint:".continue/mcpServers/",writable:!1}],supports:{agentsMd:!0,mcp:!0,skills:!1,hooks:!1,acp:!1,projectRules:!0},notes:"IDE assistant with dedicated MCP server config directory."},{id:"kiro",displayName:"Kiro",kind:"ide",status:"stable",detectsBy:{homeDirs:[".kiro"],projectDirs:[".kiro"]},contextFiles:["AGENTS.md",".kiro/steering/"],supports:{agentsMd:!0,mcp:!0,skills:!1,hooks:!0,acp:!1,projectRules:!0},notes:"Agentic IDE with steering docs and MCP."},{id:"copilot",displayName:"GitHub Copilot coding agent",kind:"hosted",status:"hosted",detectsBy:{projectFiles:[a.join(".github","copilot-instructions.md")]},contextFiles:["AGENTS.md",".github/copilot-instructions.md"],supports:{agentsMd:!0,mcp:!0,skills:!1,hooks:!1,acp:!1,projectRules:!0},notes:"GitHub Copilot coding agent / Copilot CLI (2026-07 benchmark field). Repo AGENTS.md + .github instructions + MCP."},{id:"devin",displayName:"Devin",kind:"hosted",status:"hosted",contextFiles:["AGENTS.md"],supports:{agentsMd:!0,mcp:!0,skills:!1,hooks:!1,acp:!1,projectRules:!1},notes:"Hosted coding agent; repo-level AGENTS.md is the safest portable surface."},{id:"jules",displayName:"Google Jules",kind:"hosted",status:"hosted",contextFiles:["AGENTS.md"],supports:{agentsMd:!0,mcp:!1,skills:!1,hooks:!1,acp:!1,projectRules:!1},notes:"Hosted coding agent; AGENTS.md carries repo-level prjct instructions."},{id:"zed",displayName:"Zed Agent Panel",kind:"ide",status:"stable",detectsBy:{projectDirs:[".zed"]},contextFiles:["AGENTS.md"],supports:{agentsMd:!0,mcp:!0,skills:!1,hooks:!1,acp:!0,projectRules:!0},notes:"Editor agent surface with ACP support; AGENTS.md remains the repo contract."},{id:"warp",displayName:"Warp",kind:"ide",status:"stable",detectsBy:{homeDirs:[".warp"]},contextFiles:["AGENTS.md"],supports:{agentsMd:!0,mcp:!0,skills:!1,hooks:!1,acp:!1,projectRules:!1},notes:"Terminal agent surface; AGENTS.md plus MCP covers portable prjct usage."},{id:"amp",displayName:"Amp",kind:"cli",status:"stable",detectsBy:{homeDirs:[".config/amp"],commands:["amp"]},contextFiles:["AGENTS.md"],supports:{agentsMd:!0,mcp:!0,skills:!1,hooks:!1,acp:!1,projectRules:!1},notes:"Coding agent runtime; AGENTS.md and MCP are the portable contract."},{id:"factory",displayName:"Factory",kind:"hosted",status:"hosted",contextFiles:["AGENTS.md"],supports:{agentsMd:!0,mcp:!0,skills:!1,hooks:!1,acp:!1,projectRules:!1},notes:"Hosted/agentic development platform; repo instructions are the stable surface."},{id:"augment",displayName:"Augment",kind:"ide",status:"stable",contextFiles:["AGENTS.md"],supports:{agentsMd:!0,mcp:!0,skills:!1,hooks:!1,acp:!1,projectRules:!0},notes:"IDE agent; universal project instructions avoid model-specific coupling."},{id:"kilo-code",displayName:"Kilo Code",kind:"ide",status:"stable",detectsBy:{projectDirs:[".kilocode"]},contextFiles:["AGENTS.md"],supports:{agentsMd:!0,mcp:!0,skills:!1,hooks:!1,acp:!1,projectRules:!0},notes:"Agent runtime in the Cline/Roo family; AGENTS.md and MCP keep it compatible."},{id:"phoenix",displayName:"Phoenix",kind:"hosted",status:"hosted",contextFiles:["AGENTS.md"],supports:{agentsMd:!0,mcp:!1,skills:!1,hooks:!1,acp:!1,projectRules:!1},notes:"Hosted coding agent; AGENTS.md is the repo-level bridge."},{id:"ona",displayName:"Ona",kind:"hosted",status:"hosted",contextFiles:["AGENTS.md"],supports:{agentsMd:!0,mcp:!1,skills:!1,hooks:!1,acp:!1,projectRules:!1},notes:"Hosted coding agent; AGENTS.md is the repo-level bridge."},{id:"semgrep",displayName:"Semgrep assistant",kind:"hosted",status:"hosted",contextFiles:["AGENTS.md"],supports:{agentsMd:!0,mcp:!1,skills:!1,hooks:!1,acp:!1,projectRules:!1},notes:"Security/review agent surface; AGENTS.md carries project workflow guidance."}];function R(e){let s=r.find(o=>o.id===e);if(!s)throw new Error(`Unknown agent runtime: ${e}`);return s}i(R,"getAgentRuntime");function T(){return r}i(T,"listAgentRuntimes");function S(){return r.flatMap(e=>e.projectRuleTargets??[])}i(S,"listProjectRuleTargets");async function E(e){return Promise.all(r.map(async s=>{let o=await g(s,e);return{runtime:s,detected:o.length>0||s.id==="agents-md"||s.id==="mcp",reason:o[0],detectedSignals:o,writableMcpTargets:(s.mcpTargets??[]).filter(t=>t.writable),supportLevel:h(s)}}))}i(E,"detectAgentRuntimes");async function g(e,s){let o=[];for(let t of e.detectsBy?.projectFiles??[])await d(a.join(s,t))&&o.push(t);for(let t of e.detectsBy?.projectDirs??[])await n(a.join(s,t))&&o.push(`${t}/`);for(let t of e.detectsBy?.homeDirs??[])await n(a.join(c(),t))&&o.push(`~/${t}/`);for(let t of e.detectsBy?.commands??[])await f(t)&&o.push(`command:${t}`);return o}i(g,"detectRuntimeSignals");async function f(e){return!!(await l(e)||process.platform==="win32"&&await l(`${e}.cmd`))}i(f,"commandExists");var k=new Set(["claude","codex","gemini","opencode","pi","cursor","cline","grok","kimi-cli"]);function h(e){return e.status==="hosted"?"hosted":k.has(e.id)?"full":e.supports.agentsMd&&e.supports.mcp?"good":e.supports.agentsMd?"baseline":"manual"}i(h,"supportLevelFor");export{r as a,R as b,T as c,S as d,E as e};
|
|
@@ -0,0 +1,15 @@
|
|
|
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}from"./chunk-E5QQDYBR.mjs";import{a as l,b as y}from"./chunk-B7AQHL7B.mjs";import{a as m}from"./chunk-L4TUXFCL.mjs";import{f as s,i as v}from"./chunk-DMO3ZFUG.mjs";import{e as u,f as p,l as S}from"./chunk-HU5ERAAV.mjs";import{a as d}from"./chunk-3TRXQAU4.mjs";import{z as t}from"zod";var T=t.enum(["low","medium","high"]),R=t.enum(["pending","converted","completed","archived","dormant"]),I=t.enum(["high","medium","low"]),P=t.object({impact:I,effort:I}),f=t.object({frontend:t.string().optional(),backend:t.string().optional(),payments:t.string().optional(),ai:t.string().optional(),deploy:t.string().optional(),other:t.array(t.string()).optional()}),A=t.object({name:t.string(),description:t.string()}),D=t.object({name:t.string(),description:t.string().optional()}),O=t.object({id:t.string(),text:t.string(),details:t.string().optional(),priority:T,status:R,tags:t.array(t.string()),addedAt:t.string(),completedAt:t.string().optional(),convertedTo:t.string().optional(),source:t.string().optional(),sourceFiles:t.array(t.string()).optional(),painPoints:t.array(t.string()).optional(),solutions:t.array(t.string()).optional(),filesAffected:t.array(t.string()).optional(),impactEffort:P.optional(),implementationNotes:t.string().optional(),stack:f.optional(),modules:t.array(A).optional(),roles:t.array(D).optional(),risks:t.array(t.string()).optional(),risksCount:t.number().optional()}),h=t.object({ideas:t.array(O),lastUpdated:t.string()});S();v();function o(n){let e=(()=>{if(!n.tags)return[];try{let i=JSON.parse(n.tags);return Array.isArray(i)?i:[]}catch{return[]}})(),r={...(()=>{if(!n.data)return{};try{return JSON.parse(n.data)}catch{return{}}})(),id:n.id,text:n.text,status:n.status,priority:n.priority,tags:e,addedAt:n.added_at};return n.converted_to!=null&&(r.convertedTo=n.converted_to),n.details!=null&&(r.details=n.details),r}d(o,"rowToIdea");var g=class extends E{static{d(this,"IdeasStorage")}constructor(){super("ideas.json",h)}getDefault(){return{ideas:[],lastUpdated:""}}getEventType(e){return`ideas.${e}d`}async getAll(e){return s.query(e,"SELECT * FROM ideas ORDER BY added_at DESC").map(o)}async getPending(e){return s.query(e,"SELECT * FROM ideas WHERE status = 'pending' ORDER BY added_at DESC").map(o)}async addIdea(e,a,r={}){let i={id:m(),text:a,status:"pending",priority:r.priority||"medium",tags:r.tags||[],addedAt:u()};return s.run(e,`INSERT INTO ideas (id, text, status, priority, tags, added_at, converted_to, details, data)
|
|
8
|
+
VALUES (?, ?, ?, ?, ?, ?, NULL, NULL, NULL)`,i.id,i.text,i.status,i.priority,i.tags.length?JSON.stringify(i.tags):null,i.addedAt),await this.publishEvent(e,"idea.created",{ideaId:i.id,text:i.text,priority:i.priority}),i}async upsertIdea(e,a){s.run(e,`INSERT INTO ideas (id, text, status, priority, tags, added_at)
|
|
9
|
+
VALUES (?, ?, ?, ?, NULL, ?)
|
|
10
|
+
ON CONFLICT(id) DO UPDATE SET
|
|
11
|
+
text = excluded.text,
|
|
12
|
+
status = excluded.status,
|
|
13
|
+
priority = excluded.priority`,a.id,a.text,a.status,a.priority,a.addedAt)}async getById(e,a){let r=s.get(e,"SELECT * FROM ideas WHERE id = ?",a);return r?o(r):void 0}async convertToFeature(e,a,r){s.run(e,"UPDATE ideas SET status = 'converted', converted_to = ? WHERE id = ?",r,a),await this.publishEvent(e,"idea.converted",{ideaId:a,featureId:r})}async archive(e,a){s.run(e,"UPDATE ideas SET status = 'archived' WHERE id = ?",a),await this.publishEvent(e,"idea.archived",{ideaId:a})}async setPriority(e,a,r){s.run(e,"UPDATE ideas SET priority = ? WHERE id = ?",r,a)}async addTags(e,a,r){let i=await this.getById(e,a);if(!i)return;let c=[...new Set([...i.tags,...r])];s.run(e,"UPDATE ideas SET tags = ? WHERE id = ?",c.length?JSON.stringify(c):null,a)}async removeIdea(e,a){s.run(e,"DELETE FROM ideas WHERE id = ?",a)}async getCounts(e){let a=s.query(e,"SELECT status, COUNT(*) AS c FROM ideas GROUP BY status"),r=new Map(a.map(i=>[i.status,i.c]));return{pending:r.get("pending")??0,converted:r.get("converted")??0,archived:r.get("archived")??0}}async cleanup(e){return{removed:s.run(e,`DELETE FROM ideas WHERE status = 'archived' AND id NOT IN (
|
|
14
|
+
SELECT id FROM ideas WHERE status = 'archived' ORDER BY added_at DESC LIMIT 50
|
|
15
|
+
)`).changes}}async markDormantIdeas(e){let a=p(l.IDEA_DORMANT_DAYS).toISOString(),r=s.query(e,"SELECT * FROM ideas WHERE status = 'pending' AND added_at < ?",a).map(o);return r.length===0?0:(y.archiveMany(e,r.map(i=>({entityType:"idea",entityId:i.id,entityData:i,summary:i.text,reason:"dormant"}))),s.run(e,"UPDATE ideas SET status = 'dormant' WHERE status = 'pending' AND added_at < ?",a),await this.publishEvent(e,"ideas.dormant",{count:r.length}),r.length)}},M=new g;export{M as a};
|
|
@@ -0,0 +1,18 @@
|
|
|
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 P}from"./chunk-UHXV7MDW.mjs";import{a as y,c as _,d as v}from"./chunk-TILUQF6L.mjs";import{a as h}from"./chunk-MPU3VM6Z.mjs";import{a as b}from"./chunk-MG3YN3AI.mjs";import{b as d}from"./chunk-B2HY22OD.mjs";import{a as f,b as $,f as u,i as L}from"./chunk-DMO3ZFUG.mjs";import{a as c}from"./chunk-3TRXQAU4.mjs";$();import m from"node:fs/promises";import g from"node:path";L();function w(t,e){let n=[];if(!t)return{hasChanges:!0,items:[{field:"Project style",type:"added",after:e.summary}],summary:{added:1,removed:0,changed:0},beforeCommit:null,afterCommit:e.commitHash};let o=t.payload,s=e.payload;return o.stack.ecosystem!==s.stack.ecosystem&&n.push({field:"Ecosystem",type:"changed",before:o.stack.ecosystem,after:s.stack.ecosystem}),(o.stack.packageManager??"")!==(s.stack.packageManager??"")&&n.push({field:"Package manager",type:"changed",before:o.stack.packageManager??"(none)",after:s.stack.packageManager??"(none)"}),S("Languages",o.stack.languages,s.stack.languages,n),S("Frameworks",o.stack.frameworks,s.stack.frameworks,n),S("Key libraries",o.stack.keyLibraries,s.stack.keyLibraries,n),o.stack.hasTests!==s.stack.hasTests&&n.push({field:"Has tests",type:"changed",before:String(o.stack.hasTests),after:String(s.stack.hasTests)}),k("Pattern",o.patterns.map(r=>[r.key,r.name]),s.patterns.map(r=>[r.key,r.name]),n),k("Anti-pattern",o.antiPatterns.map(r=>[r.key,r.issue]),s.antiPatterns.map(r=>[r.key,r.issue]),n),k("Convention",o.conventions.map(r=>[r.key,r.rule]),s.conventions.map(r=>[r.key,r.rule]),n),o.structural.symbols!==s.structural.symbols&&(o.structural.symbols>0||s.structural.symbols>0)&&n.push({field:"Symbols",type:"changed",before:String(o.structural.symbols),after:String(s.structural.symbols)}),o.structural.files!==s.structural.files&&n.push({field:"Files",type:"changed",before:String(o.structural.files),after:String(s.structural.files)}),b(n,t.commitHash,e.commitHash)}c(w,"generateProjectStyleDiff");function M(t){if(!t.hasChanges)return`## Project evolution
|
|
8
|
+
|
|
9
|
+
No style changes since last sync.`;let e=["## Project evolution (this sync)"];(t.beforeCommit||t.afterCommit)&&e.push(`> \`${C(t.beforeCommit)}\` \u2192 \`${C(t.afterCommit)}\``),e.push(""),e.push(`+${t.summary.added} \xB7 \u2212${t.summary.removed} \xB7 ~${t.summary.changed}`),e.push("");for(let n of t.items.slice(0,20)){let o=n.type==="added"?"+":n.type==="removed"?"\u2212":"~";n.type==="changed"?e.push(`- ${o} **${n.field}**: ${n.before} \u2192 ${n.after}`):n.type==="added"?e.push(`- ${o} **${n.field}**: ${n.after}`):e.push(`- ${o} **${n.field}**: ${n.before}`)}return e.join(`
|
|
10
|
+
`)}c(M,"formatProjectStyleDiffMd");function C(t){return t?t.length>7?t.slice(0,7):t:"(none)"}c(C,"short");function S(t,e,n,o){let s=new Set(e.map(a=>a.toLowerCase())),r=new Set(n.map(a=>a.toLowerCase()));for(let a of n)s.has(a.toLowerCase())||o.push({field:t,type:"added",after:a});for(let a of e)r.has(a.toLowerCase())||o.push({field:t,type:"removed",before:a})}c(S,"diffStringArray");function k(t,e,n,o){let s=new Map(e),r=new Map(n);for(let[a,i]of r)s.has(a)?s.get(a)!==i&&o.push({field:t,type:"changed",before:s.get(a),after:i}):o.push({field:t,type:"added",after:i});for(let[a,i]of s)r.has(a)||o.push({field:t,type:"removed",before:i})}c(k,"diffKeyed");var A=50;function R(t){let e=(()=>{try{return JSON.parse(t.payload_json)}catch{return I()}})();return{id:t.id,capturedAt:t.captured_at,commitHash:t.commit_hash,source:t.source||"sync-mechanical",patternCount:t.pattern_count,antiPatternCount:t.anti_pattern_count,conventionCount:t.convention_count,frameworkCount:t.framework_count,symbolCount:t.symbol_count,fileCount:t.file_count,summary:t.summary,payload:e}}c(R,"rowToSnapshot");function I(){return{payloadVersion:1,stack:{ecosystem:"unknown",languages:[],frameworks:[],keyLibraries:[],hasTests:!1,hasDocker:!1},commands:{},conventions:[],patterns:[],antiPatterns:[],structural:{symbols:0,files:0,packages:[]},metrics:{}}}c(I,"emptyPayload");function D(t){try{let e=u.get(t,"SELECT * FROM project_style_snapshots WHERE is_active = 1 ORDER BY captured_at DESC LIMIT 1");return e?R(e):null}catch{return null}}c(D,"getActiveProjectStyle");function T(t,e=12){try{return u.query(t,"SELECT * FROM project_style_snapshots ORDER BY captured_at DESC LIMIT ?",e).map(R)}catch{return[]}}c(T,"getProjectEvolution");function st(t,e=6){let n=T(t,e);if(n.length===0)return null;let o=["## Project evolution"];if(n.length>=2){let s=n[0],r=n[n.length-1],a=s.patternCount-r.patternCount,i=s.conventionCount-r.conventionCount,p=s.fileCount-r.fileCount;o.push(`Over ${n.length} snapshots: patterns ${j(a)}, conventions ${j(i)}, files ${j(p)}.`)}for(let s of n)o.push(`- ${s.capturedAt.slice(0,10)} \u2014 ${s.summary}`);return o.join(`
|
|
11
|
+
`)}c(st,"renderProjectEvolution");function j(t){return t>=0?`+${t}`:`${t}`}c(j,"fmtDelta");function x(t,e){u.transaction(t,n=>{n.prepare("UPDATE project_style_snapshots SET is_active = 0 WHERE is_active = 1").run(),n.prepare(`INSERT INTO project_style_snapshots (
|
|
12
|
+
id, captured_at, commit_hash, source,
|
|
13
|
+
pattern_count, anti_pattern_count, convention_count, framework_count,
|
|
14
|
+
symbol_count, file_count, summary, payload_json, is_active
|
|
15
|
+
) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, 1)`).run(e.id,e.capturedAt,e.commitHash,e.source,e.patternCount,e.antiPatternCount,e.conventionCount,e.frameworkCount,e.symbolCount,e.fileCount,e.summary,JSON.stringify(e.payload));let o=n.prepare("SELECT id FROM project_style_snapshots ORDER BY captured_at DESC").all();if(o.length>A){let s=o.slice(A),r=n.prepare("DELETE FROM project_style_snapshots WHERE id = ?");for(let a of s)r.run(a.id)}})}c(x,"persistProjectStyleSnapshot");async function rt(t){let e=D(t.projectId),n=F(t.projectId),o=await B(t.projectPath),s=H(t.projectId),r=N(t.projectId),a=_({stats:t.stats,stack:t.stack,commands:t.commands,packageDeps:o.deps,packageManager:o.packageManager,llmAnalysis:n,memoryPatterns:r.patterns,memoryAntiPatterns:r.antiPatterns,memoryConventions:r.conventions,structural:s,commitHash:t.commitHash??null,source:t.source??"sync-mechanical"});a.payload.metrics.styleCoverage=O(a),a.payload.metrics.hasRichAnalysis=y(n)?1:0;let i=w(e,a),p=e===null;(p||i.hasChanges)&&x(t.projectId,a);let l=D(t.projectId)??a;return t.bridgeMemory!==!1&&await J(t.projectPath,t.projectId,l).catch(()=>{}),await Y(t.projectId,l).catch(()=>{}),{snapshot:l,delta:i,isFirst:p}}c(rt,"recomputeProjectStyle");function O(t){let e=(t.payload.stack.ecosystem!=="unknown"?25:0)+(t.payload.stack.frameworks.length>0||t.payload.stack.keyLibraries.length>0?20:0)+(t.payload.stack.hasTests?10:0)+Math.min(25,t.conventionCount*5)+Math.min(15,t.patternCount*3)+Math.min(5,t.antiPatternCount);return Math.min(100,e)}c(O,"computeStyleCoverage");function F(t){try{let e=h.getActive(t);if(y(e))return e;try{let n=h.getAllFull(t);for(let o of n)if(y(o.analysis))return o.analysis}catch{}return e}catch{return null}}c(F,"pickBestAnalysis");function H(t){try{let e=P(t);return e.ready?{symbols:e.symbols,files:e.files,packages:e.packages.slice(0,20)}:{symbols:0,files:0,packages:[]}}catch{return{symbols:0,files:0,packages:[]}}}c(H,"loadStructural");function N(t){let e=[],n=[],o=[];try{let s=d.recall(t,{types:["pattern","anti-pattern","decision"],limit:40});for(let r of s){let a=r.tags?.topic??"";!a.startsWith("style:")&&r.type!=="pattern"&&r.type!=="anti-pattern"||(r.type==="pattern"||a.startsWith("style:pattern:")?e.push({name:r.tags?.name||a.replace(/^style:pattern:/,"")||"pattern",description:r.content.slice(0,400)}):r.type==="anti-pattern"||a.startsWith("style:anti:")?n.push({issue:r.tags?.name||a.replace(/^style:anti:/,"")||"anti-pattern",suggestion:r.content.slice(0,400)}):a.startsWith("style:convention:")&&o.push({rule:r.content.slice(0,400),category:r.tags?.category}))}}catch{}return{patterns:e,antiPatterns:n,conventions:o}}c(N,"loadMemoryStyle");async function B(t){try{let e=await m.readFile(g.join(t,"package.json"),"utf-8"),n=JSON.parse(e),o={...n.dependencies??{},...n.devDependencies??{}},s=n.packageManager?n.packageManager.split("@")[0]??null:await(async()=>{let r=[["bun.lockb","bun"],["bun.lock","bun"],["pnpm-lock.yaml","pnpm"],["yarn.lock","yarn"],["package-lock.json","npm"]];for(let[a,i]of r)try{return await m.access(g.join(t,a)),i}catch{}return null})();return{deps:o,packageManager:s}}catch{return{deps:{},packageManager:null}}}c(B,"readPackageMeta");function W(t){let e=t.payload,n=[...e.conventions.slice(0,25).map(s=>({type:"decision",content:s.rule,tags:{topic:`style:convention:${s.key}`,category:s.category??"convention",source:"project-style"}})),...e.patterns.slice(0,25).map(s=>({type:"pattern",content:`${s.name}: ${s.description}`,tags:{topic:`style:pattern:${s.key}`,name:s.name,source:"project-style",...s.category?{category:s.category}:{}}})),...e.antiPatterns.slice(0,25).map(s=>({type:"anti-pattern",content:`${s.issue}. Suggestion: ${s.suggestion}`,tags:{topic:`style:anti:${s.key}`,name:s.issue,source:"project-style",...s.severity?{severity:s.severity}:{}}}))],o=new Set;return n.filter(s=>{let r=`${s.type}\0${f(s.content)}`;return o.has(r)?!1:(o.add(r),!0)})}c(W,"desiredStyleBridgeEntries");function E(t,e,n){return`${t}\0${e}\0${n}`}c(E,"styleBridgeIdentity");async function J(t,e,n){let o=W(n);if(o.length===0)return 0;let s=(()=>{try{let a=[...new Set(o.map(l=>l.tags.topic))],i=a.map(()=>"?").join(","),p=u.query(e,`SELECT type, topic_key, content_hash
|
|
16
|
+
FROM memory_entries
|
|
17
|
+
WHERE project_id = ? AND deleted_at IS NULL
|
|
18
|
+
AND topic_key IN (${i})`,e,...a);return new Set(p.map(l=>E(l.type,l.topic_key,l.content_hash)))}catch{return null}})(),r=[];for(let a of o){let i=a.tags.topic,p=E(a.type,i,f(a.content));s?.has(p)||(await d.remember(t,{...a,projectId:e,provenance:"extracted"}),r.push(a))}return r.length}c(J,"bridgeStyleToMemory");async function Y(t,e){let{default:n}=await import("./path-manager-E5DCU5LP.mjs"),o=n.getGlobalProjectPath(t),s=g.join(o,"analysis");await m.mkdir(s,{recursive:!0});let r=e.payload.stack,a={ecosystem:r.ecosystem,frameworks:r.frameworks,hasTests:r.hasTests,technologies:[...r.languages,...r.frameworks,...r.keyLibraries].filter((i,p,l)=>l.indexOf(i)===p),packageManager:r.packageManager??null,updatedAt:e.capturedAt,styleSummary:e.summary};await m.writeFile(g.join(s,"repo-analysis.json"),JSON.stringify(a,null,2),"utf-8")}c(Y,"writeRepoAnalysisArtifact");function ot(t){let e=t.delta.hasChanges||t.isFirst?M(t.delta):null,n=v(t.snapshot,{maxConventions:4,maxPatterns:3,maxAnti:2});return{evolutionMd:e,digestMd:n,delta:t.delta}}c(ot,"formatProjectStyleForSync");export{D as a,T as b,st as c,x as d,rt as e,J as f,ot as g};
|
|
@@ -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 o,c as a}from"./chunk-3TRXQAU4.mjs";function f(e){return!(e.type==="improvement-signal"||e.tags?.pattern==="hot-file")}function d(e,t){try{return JSON.parse(e)}catch{return t}}function m(e){let t=e.data?d(e.data,{}):{},r=t.tags??{};return e.type&&(r.type=e.type),{id:`ship_${e.id}`,type:"shipped",content:e.name,tags:r,rememberedAt:e.shipped_at,source:t.taskId,provenance:"extracted"}}function l(e,t){let r=t.toLowerCase();if(e.content.toLowerCase().includes(r))return!0;for(let n of Object.values(e.tags))if(n.toLowerCase().includes(r))return!0;return!1}function M(e,t){for(let[r,n]of Object.entries(t))if(e.tags[r]!==n)return!1;return!0}function E(e){let t=new Set,r=[];for(let n of e){let s=n.tags.key;if(!s){r.push(n);continue}let i=`${n.type}::${s}`;t.has(i)||(t.add(i),r.push(n))}return r}function h(e){let t=new Set;for(let r of e){r.tags["superseded-by"]&&t.add(r.id);for(let n of["supersedes","duplicates"]){let s=r.tags[n];if(s)for(let i of String(s).matchAll(g))t.add(`mem_${i[1]}`)}}return t}var c,p,y,g,u=a(()=>{"use strict";c=["identity","voice","glossary","framework"],p=["fact","decision","learning","gotcha","red-herring","pattern","anti-pattern","shipped","example",...c,"context","inbox","todo","idea","insight","question","source","person","spec"],y=p;o(f,"isModelMemory");o(d,"safeJson");o(m,"shippedRowToEntry");o(l,"matchesTopic");o(M,"matchesTags");o(E,"dedupeLatestByKey");g=/\bmem[_-](\d+)\b/g;o(h,"collectSupersededIds")});export{c as a,p as b,y as c,f as d,m as e,l as f,M as g,E as h,h as i,u as j};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { createRequire as __createRequire } from 'module';
|
|
2
|
+
import { fileURLToPath as __fileURLToPath } from 'url';
|
|
3
|
+
import { dirname as __pathDirname } from 'path';
|
|
4
|
+
const require = __createRequire(import.meta.url);
|
|
5
|
+
const __filename = __fileURLToPath(import.meta.url);
|
|
6
|
+
const __dirname = __pathDirname(__filename);
|
|
7
|
+
import{a as f}from"./chunk-HCPQZRR3.mjs";import{c as _}from"./chunk-HPCSSJXH.mjs";import{a as k}from"./chunk-E5QQDYBR.mjs";import{a as E,b as y}from"./chunk-B7AQHL7B.mjs";import{a as d}from"./chunk-L4TUXFCL.mjs";import{f as r,i as R}from"./chunk-DMO3ZFUG.mjs";import{e as a,f as T,l as A}from"./chunk-HU5ERAAV.mjs";import{a as c}from"./chunk-3TRXQAU4.mjs";A();R();function o(s){let e={id:s.id,description:s.description,priority:s.priority??"medium",type:s.type??"feature",section:s.section??"backlog",completed:s.completed===1,createdAt:s.created_at};return s.completed_at!=null&&(e.completedAt=s.completed_at),s.feature_id!=null&&(e.featureId=s.feature_id),s.feature_name!=null&&(e.originFeature=s.feature_name),s.body!=null&&(e.body=s.body),s.agent!=null&&(e.agent=s.agent),s.group_name!=null&&(e.groupName=s.group_name),s.group_id!=null&&(e.groupId=s.group_id),e}c(o,"rowToTask");var p=`INSERT INTO queue_tasks
|
|
8
|
+
(id, description, type, priority, section, created_at, completed, completed_at,
|
|
9
|
+
feature_id, feature_name, body, agent, group_name, group_id)
|
|
10
|
+
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`;function m(s){return[s.id,s.description,s.type??null,s.priority??null,s.section??"backlog",s.createdAt,s.completed?1:0,s.completedAt??null,s.featureId??null,s.originFeature??null,s.body??null,s.agent??null,s.groupName??null,s.groupId??null]}c(m,"insertParams");var g=class extends k{static{c(this,"QueueStorage")}constructor(){super("queue.json",_)}getDefault(){return{tasks:[],lastUpdated:""}}getEventType(e){return`queue.${e}d`}async getTasks(e){return r.query(e,"SELECT * FROM queue_tasks ORDER BY created_at ASC").map(o)}async getActiveTasks(e){return r.query(e,"SELECT * FROM queue_tasks WHERE section = 'active' AND completed = 0 ORDER BY created_at ASC").map(o)}async getBacklog(e){return r.query(e,"SELECT * FROM queue_tasks WHERE section = 'backlog' AND completed = 0 ORDER BY created_at ASC").map(o)}async getNextTask(e){let t=await this.getActiveTasks(e);return f(t)[0]||null}async addTask(e,t){let i={...t,id:d(),createdAt:a(),completed:!1};return r.run(e,p,...m(i)),await this.publishEvent(e,"queue.task_added",{taskId:i.id,description:i.description,priority:i.priority,section:i.section,created_at:i.createdAt}),i}async addTasks(e,t){let i=a(),u=t.map(n=>({...n,id:d(),createdAt:i,completed:!1}));for(let n of u)r.run(e,p,...m(n));return await this.publishEvent(e,"queue.tasks_added",{count:u.length,tasks:u.map(n=>({id:n.id,description:n.description,created_at:n.createdAt}))}),u}async upsertTask(e,t){let i=await this.getTask(e,t.id);if(i){let n={...i};for(let l of["description","type","priority","section"])t[l]!==void 0&&(n[l]=t[l]);r.run(e,`UPDATE queue_tasks SET description = ?, type = ?, priority = ?, section = ?
|
|
11
|
+
WHERE id = ?`,n.description,n.type??null,n.priority??null,n.section??"backlog",t.id);return}let u={...t,id:t.id,description:t.description,priority:t.priority??"medium",type:t.type??"feature",section:t.section??"backlog",completed:t.completed??!1,createdAt:t.createdAt??a()};r.run(e,p,...m(u))}async removeTask(e,t){r.run(e,"DELETE FROM queue_tasks WHERE id = ?",t),await this.publishEvent(e,"queue.task_removed",{taskId:t})}async deleteByFeatureId(e,t){let u=r.run(e,"DELETE FROM queue_tasks WHERE feature_id = ?",t).changes;return u>0&&await this.publishEvent(e,"queue.tasks_removed_by_feature",{featureId:t,count:u}),u}async completeTask(e,t){let i=a();if(r.run(e,"UPDATE queue_tasks SET completed = 1, completed_at = ? WHERE id = ? AND completed = 0",i,t).changes===0)return null;let n=await this.getTask(e,t);return n&&await this.publishEvent(e,"queue.task_completed",{taskId:t,description:n.description,completedAt:n.completedAt}),n}async moveToSection(e,t,i){r.run(e,"UPDATE queue_tasks SET section = ? WHERE id = ?",i,t)}async setPriority(e,t,i){r.run(e,"UPDATE queue_tasks SET priority = ? WHERE id = ?",i,t)}async getTask(e,t){let i=r.get(e,"SELECT * FROM queue_tasks WHERE id = ?",t);return i?o(i):null}async updateTask(e,t,i){let u=await this.getTask(e,t);if(!u)return null;let n={...u,...i};return r.run(e,"UPDATE queue_tasks SET description = ?, body = ?, type = ?, priority = ?, section = ? WHERE id = ?",n.description,n.body??null,n.type??null,n.priority??null,n.section??"backlog",t),await this.publishEvent(e,"queue.task_updated",{taskId:t}),n}async clearCompleted(e){return r.run(e,"DELETE FROM queue_tasks WHERE completed = 1").changes}async removeStaleCompleted(e){let t=T(E.QUEUE_COMPLETED_DAYS).toISOString(),i=r.query(e,"SELECT * FROM queue_tasks WHERE completed = 1 AND completed_at IS NOT NULL AND completed_at < ?",t).map(o);return i.length===0?0:(y.archiveMany(e,i.map(u=>({entityType:"queue_task",entityId:u.id,entityData:u,summary:u.description,reason:"age"}))),r.run(e,"DELETE FROM queue_tasks WHERE completed = 1 AND completed_at IS NOT NULL AND completed_at < ?",t),await this.publishEvent(e,"queue.stale_removed",{count:i.length}),i.length)}},D=new g;export{D as a};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { createRequire as __createRequire } from 'module';
|
|
2
|
+
import { fileURLToPath as __fileURLToPath } from 'url';
|
|
3
|
+
import { dirname as __pathDirname } from 'path';
|
|
4
|
+
const require = __createRequire(import.meta.url);
|
|
5
|
+
const __filename = __fileURLToPath(import.meta.url);
|
|
6
|
+
const __dirname = __pathDirname(__filename);
|
|
7
|
+
import{g as p}from"./chunk-BUD3R6LF.mjs";import{e as f}from"./chunk-6KNMT46X.mjs";import{b as g}from"./chunk-B2HY22OD.mjs";import{g as m,i as _}from"./chunk-DMO3ZFUG.mjs";import{a as l}from"./chunk-3TRXQAU4.mjs";_();var S=8,y=140;function h(d,r){if(r.length===0)return 0;let n=[];try{m.transaction(d,s=>{let i=s.prepare("DELETE FROM memory_embeddings WHERE memory_id = ?"),c=s.prepare("DELETE FROM memory_entries WHERE id = ?"),t=s.prepare("DELETE FROM events WHERE id = ? AND type LIKE 'memory.remember.%'");for(let e of r){try{i.run(e)}catch{}c.run(e).changes&&n.push(e);let a=e.match(/^mem_(\d+)$/);if(a)try{t.run(Number(a[1]))}catch{}}})}catch{return n.length}return n.length}l(h,"hardDeleteEntries");function w(d,r,n){let s=new Map;for(let e of r)s.set(e.type,(s.get(e.type)??0)+1);let i=[...s.entries()].sort((e,o)=>o[1]-e[1]).map(([e,o])=>`${e}\xD7${o}`).join(", "),c=r.map(e=>p(e).replace(/\s+/g," ").trim()).filter(e=>e.length>20).slice(0,S).map(e=>`- ${e.length>y?`${e.slice(0,y-1)}\u2026`:e}`),t=[`Distill of discarded auto-history (${d}).`,`Context synthesis: ${r.length} low-value rows collapsed \u2014 raw history deleted; only this digest remains for the project model.`,`Key data: source=retention-distill; discarded=${r.length}; types=${i}; at=${n}`,"What happened: purged auto-generated / redundant captures that added no excess vs the reference model.","Why it mattered: prevent vault bloat; agents must not re-read detector noise.",`Outcome: ${r.length} raw entries hard-deleted after distillation.`,"Next implication: prefer high-excess judgment; re-run detectors only when code/model changes."];return c.length>0&&t.push(`Sample cues (not full bodies):
|
|
8
|
+
${c.join(`
|
|
9
|
+
`)}`),t.join(" ")}l(w,"buildDistillContent");async function A(d,r,n,s,i){if(s.length<=i)return{discarded:0,digested:!1};let t=[...s].sort((u,b)=>b.rememberedAt.localeCompare(u.rememberedAt)).slice(i);if(t.length===0)return{discarded:0,digested:!1};let e=new Date().toISOString(),o=`auto-distill:${n}`,a=w(n,t,e),E=await g.remember(d,{type:"learning",content:a,tags:{source:"retention-distill",topic:o,capture:"distill-discard-v1",context_schema:"living-v2",synthesis:"deterministic",discarded_count:String(t.length),auto_source:n},provenance:"inferred",projectId:r}).then(()=>!0).catch(()=>!1),D=t.map(u=>u.id);return{discarded:h(r,D),digested:E,digestTopic:o}}l(A,"distillAndDiscardAutoSource");async function v(d,r,n){let s=g.allEntriesForIndex(r),i=new Map;for(let t of s){let e=t.tags?.source;if(!f(e)||e==="retention-distill"||t.tags?.source==="retention-distill")continue;let o=i.get(e)??[];o.push(t),i.set(e,o)}let c=[];for(let[t,e]of i){if(e.length<=n)continue;let o=await A(d,r,t,e,n);c.push(o)}return{discarded:c.reduce((t,e)=>t+e.discarded,0),digests:c.filter(t=>t.digested).length}}l(v,"distillAndDiscardAllAutoSources");function x(d,r,n=1e3){let s=Date.now()-r*864e5;try{let i=m.query(d,`SELECT id, type, content FROM memory_entries
|
|
10
|
+
WHERE deleted_at IS NOT NULL AND deleted_at < ?
|
|
11
|
+
ORDER BY deleted_at ASC
|
|
12
|
+
LIMIT ?`,s,n);return i.length===0?{purged:0,digested:!1}:{purged:h(d,i.map(t=>t.id)),digested:!1}}catch{return{purged:0,digested:!1}}}l(x,"eliminateSoftDeletedNoValue");export{h as a,w as b,A as c,v as d,x as e};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { createRequire as __createRequire } from 'module';
|
|
2
|
+
import { fileURLToPath as __fileURLToPath } from 'url';
|
|
3
|
+
import { dirname as __pathDirname } from 'path';
|
|
4
|
+
const require = __createRequire(import.meta.url);
|
|
5
|
+
const __filename = __fileURLToPath(import.meta.url);
|
|
6
|
+
const __dirname = __pathDirname(__filename);
|
|
7
|
+
import{a as r}from"./chunk-3TRXQAU4.mjs";import t from"node:crypto";function o(){return t.randomUUID()}r(o,"generateUUID");export{o as a};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { createRequire as __createRequire } from 'module';
|
|
2
|
+
import { fileURLToPath as __fileURLToPath } from 'url';
|
|
3
|
+
import { dirname as __pathDirname } from 'path';
|
|
4
|
+
const require = __createRequire(import.meta.url);
|
|
5
|
+
const __filename = __fileURLToPath(import.meta.url);
|
|
6
|
+
const __dirname = __pathDirname(__filename);
|
|
7
|
+
import{f as n,i as o}from"./chunk-DMO3ZFUG.mjs";import{a as i}from"./chunk-3TRXQAU4.mjs";o();function u(r,e){try{return e?n.query(r,"SELECT content FROM task_log WHERE task_id = ? ORDER BY id DESC LIMIT 5",e).map(t=>t.content):n.query(r,"SELECT content FROM task_log ORDER BY id DESC LIMIT 5").map(t=>t.content)}catch{return[]}}i(u,"recentJournal");export{u as a};
|
|
@@ -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 p}from"./chunk-PIA26GWG.mjs";import{a as o,b as L}from"./chunk-RP7F67ZT.mjs";import{a as c}from"./chunk-INJ5WT2D.mjs";import{b as e,f as S}from"./chunk-OE27RFLJ.mjs";import{d as a,g as P}from"./chunk-XWLTEAGN.mjs";import{b as s,c as h}from"./chunk-DOJPSIMG.mjs";import{l as m,p as k}from"./chunk-HYIT7MF5.mjs";import{e as l,g as d}from"./chunk-225DWS4D.mjs";import{a as n}from"./chunk-3TRXQAU4.mjs";S();d();k();import I from"node:fs/promises";import u from"node:path";L();P();h();var E="prjct-pi-skill";function f(){return process.env.PRJCT_TEST_MODE==="1"?u.join(s(".prjct-tests"),"pi","agent","skills","prjct","SKILL.md"):s(".pi","agent","skills","prjct","SKILL.md")}n(f,"getPiSkillPath");function A(){return f()}n(A,"getPiSkillInstallPath");function w(t){return`<!-- ${E}: ${JSON.stringify({v:a,h:t})} -->`}n(w,"getPiSkillMetadata");function K(t){return c(t).slice(0,12)}n(K,"hashContent");async function x(){return e("pi/SKILL.md")??e("codex/SKILL.md")}n(x,"loadPiSkillTemplate");function C(t){let r=t.trimEnd(),i=K(r),g=w(i);return{content:`${r}
|
|
8
|
+
|
|
9
|
+
${g}
|
|
10
|
+
`,templateHash:i}}n(C,"buildPiSkillContent");async function H(){try{let t=f();await I.mkdir(u.dirname(t),{recursive:!0});let r=await m(t),i=await x();return i?await p({skillMdPath:t,skillExists:r,templateContent:i,build:C,logLabel:"Pi"}):(o.warn("Pi SKILL.md template not found"),{success:!1,action:null})}catch(t){return o.warn(`Pi skill warning: ${l(t)}`),{success:!1,action:null}}}n(H,"installPiSkill");export{A as a,C as b,H as c};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { createRequire as __createRequire } from 'module';
|
|
2
|
+
import { fileURLToPath as __fileURLToPath } from 'url';
|
|
3
|
+
import { dirname as __pathDirname } from 'path';
|
|
4
|
+
const require = __createRequire(import.meta.url);
|
|
5
|
+
const __filename = __fileURLToPath(import.meta.url);
|
|
6
|
+
const __dirname = __pathDirname(__filename);
|
|
7
|
+
import{c as t}from"./chunk-F2FKQUYE.mjs";import{a as e}from"./chunk-3TRXQAU4.mjs";async function f(r,o,i){if(i.length!==0)try{let{resolveActiveTask:s}=await import("./task-service-KFYL5NT4.mjs"),c=await s(r,o);c?.id&&t.recordSurfaced(r,i,c.id);for(let n of i)t.recordFetch(r,n)}catch{}}e(f,"recordSurfacedForActiveTask");export{f as a};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { createRequire as __createRequire } from 'module';
|
|
2
|
+
import { fileURLToPath as __fileURLToPath } from 'url';
|
|
3
|
+
import { dirname as __pathDirname } from 'path';
|
|
4
|
+
const require = __createRequire(import.meta.url);
|
|
5
|
+
const __filename = __fileURLToPath(import.meta.url);
|
|
6
|
+
const __dirname = __pathDirname(__filename);
|
|
7
|
+
import{a as p,b as o,d as c,f as s}from"./chunk-DW4QMD6J.mjs";import{b as i,c as g}from"./chunk-DOJPSIMG.mjs";import{a as n}from"./chunk-3TRXQAU4.mjs";g();import{existsSync as m}from"node:fs";import a from"node:path";function u(){return process.env.PRJCT_TEST_MODE==="1"?[i(".prjct-tests","kimi-code"),i(".prjct-tests","kimi")]:[i(".kimi-code"),i(".kimi")]}n(u,"kimiHomeDirs");function v(){return u().map(t=>a.join(t,"mcp.json"))}n(v,"getKimiMcpConfigPaths");function h(){let[t,e]=u(),r=m(e)&&!m(t)?e:t;return a.join(r,"mcp.json")}n(h,"getKimiMcpConfigPath");async function M(t=h()){let e=await c("context7",o.context7,t),r=await c("prjct",p(),t);return{path:t,changed:e.changed||r.changed}}n(M,"ensureKimiMcpServer");async function S(){let t=await Promise.all(v().map(async e=>{let r=await s("prjct",e),d=await s("context7",e,o.context7);return{path:e,removed:(r.changed?1:0)+(d.changed?1:0)}}));return{paths:t.filter(e=>e.removed>0).map(e=>e.path),serversRemoved:t.reduce((e,r)=>e+r.removed,0)}}n(S,"uninstallKimiMcpServer");export{v as a,h as b,M as c,S as d};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { createRequire as __createRequire } from 'module';
|
|
2
|
+
import { fileURLToPath as __fileURLToPath } from 'url';
|
|
3
|
+
import { dirname as __pathDirname } from 'path';
|
|
4
|
+
const require = __createRequire(import.meta.url);
|
|
5
|
+
const __filename = __fileURLToPath(import.meta.url);
|
|
6
|
+
const __dirname = __pathDirname(__filename);
|
|
7
|
+
import{a as b,b as m}from"./chunk-6OYLZ4NM.mjs";import{a as u,b as g}from"./chunk-YEALP3WX.mjs";import{b as f}from"./chunk-B2HY22OD.mjs";import{a as d}from"./chunk-3TRXQAU4.mjs";function M(o,i,s=8){let r=i.map(e=>e.trim()).filter(Boolean),h=!!g(o),l=!!m(o),c=new Map;if(r.length>0&&h)try{for(let e of u(r,g(o),2)){if(r.some(n=>n.endsWith(e.path)||e.path.endsWith(n)))continue;let t=c.get(e.path)??{score:0,via:new Set};t.score+=e.score,t.via.add("imports"),c.set(e.path,t)}}catch{}if(r.length>0&&l)try{for(let e of b(r,m(o))){if(r.some(n=>n.endsWith(e.path)||e.path.endsWith(n)))continue;let t=c.get(e.path)??{score:0,via:new Set};t.score+=e.score,t.via.add("cochange"),c.set(e.path,t)}}catch{}let p=[...c.entries()].map(([e,t])=>({path:e,score:t.score,via:t.via.size>1?"both":[...t.via][0]??"imports"})).sort((e,t)=>t.score-e.score).slice(0,s),a=[];for(let e of r.slice(0,5))try{let t=f.recallForFile(o,e,2,{preventiveOnly:!0});for(let n of t)a.push({id:n.id,type:n.type,title:n.content.replace(/\s+/g," ").trim().slice(0,100),file:e})}catch{}let $=p.length>0?`related=${p.slice(0,3).map(e=>e.path.split("/").pop()).join(",")}`:h||l?"related=none-strong":"indexes=cold",v=a.length>0?`traps=${a.length}`:"traps=0",y=r.length===0?"World model: no seed files":`World model impact: seeds=${r.length} \xB7 ${$} \xB7 ${v}`;return{seeds:r,neighbors:p,traps:a.slice(0,s),line:y,hasIndexes:{imports:h,cochange:l}}}d(M,"breakImpact");function S(o){if(o.seeds.length===0)return"";let i=["# prjct: world-model impact",o.line,""];if(o.neighbors.length>0){i.push("Related (imports/co-change):");for(let s of o.neighbors.slice(0,6))i.push(`- \`${s.path}\` (${s.via}, score=${s.score.toFixed(2)})`);i.push("")}if(o.traps.length>0){i.push("Judgment on seed files:");for(let s of o.traps.slice(0,5))i.push(`- **[${s.type}]** ${s.title} \`${s.id}\``)}return i.join(`
|
|
8
|
+
`).trim()}d(S,"formatImpactMd");export{M as a,S as b};
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { createRequire as __createRequire } from 'module';
|
|
2
|
+
import { fileURLToPath as __fileURLToPath } from 'url';
|
|
3
|
+
import { dirname as __pathDirname } from 'path';
|
|
4
|
+
const require = __createRequire(import.meta.url);
|
|
5
|
+
const __filename = __fileURLToPath(import.meta.url);
|
|
6
|
+
const __dirname = __pathDirname(__filename);
|
|
7
|
+
import{a as c,c as u,d,e as k,f as s,g as l,j as f}from"./chunk-YQ6HM3YO.mjs";import{a}from"./chunk-3TRXQAU4.mjs";function m(t){return typeof t=="string"?`${t}
|
|
8
|
+
`:`${JSON.stringify(t)}
|
|
9
|
+
`}a(m,"payloadLine");async function g(t,n){let e=t.projectPath??process.cwd();if(n){try{let i=n.hookHost??u(),r=n.input;if(n.afterEmitOnly){t.afterEmit&&n.detachAfterEmit(()=>t.afterEmit(r,e,i));return}let o=t.decide?await t.decide(r,e):null;if(o){n.sink(m(d(c(t.event,o.deny),i)));return}let H=t.build?await t.build(r,e,i):null;n.sink(m(d(f(t.event,H),i))),t.afterEmit&&n.detachAfterEmit(()=>t.afterEmit(r,e,i))}catch{n.sink(`{}
|
|
10
|
+
`)}return}await l(async()=>{let i=k(),r=t.decide?await t.decide(i,e):null;if(r){s(c(t.event,r.deny));return}let o=t.build?await t.build(i,e,u()):null;s(f(t.event,o)),t.afterEmit&&await t.afterEmit(i,e,u())})}a(g,"runHook");export{g as a};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { createRequire as __createRequire } from 'module';
|
|
2
|
+
import { fileURLToPath as __fileURLToPath } from 'url';
|
|
3
|
+
import { dirname as __pathDirname } from 'path';
|
|
4
|
+
const require = __createRequire(import.meta.url);
|
|
5
|
+
const __filename = __fileURLToPath(import.meta.url);
|
|
6
|
+
const __dirname = __pathDirname(__filename);
|
|
7
|
+
import{a as r}from"./chunk-3TRXQAU4.mjs";function o(e,t,d){let a=e.filter(n=>n.type==="added").length,m=e.filter(n=>n.type==="removed").length,l=e.filter(n=>n.type==="changed").length;return{hasChanges:e.length>0,items:e,summary:{added:a,removed:m,changed:l},beforeCommit:t,afterCommit:d}}r(o,"summarizeDiffItems");export{o as a};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { createRequire as __createRequire } from 'module';
|
|
2
|
+
import { fileURLToPath as __fileURLToPath } from 'url';
|
|
3
|
+
import { dirname as __pathDirname } from 'path';
|
|
4
|
+
const require = __createRequire(import.meta.url);
|
|
5
|
+
const __filename = __fileURLToPath(import.meta.url);
|
|
6
|
+
const __dirname = __pathDirname(__filename);
|
|
7
|
+
import{f as l,i as R}from"./chunk-DMO3ZFUG.mjs";import{e as h,l as L}from"./chunk-HU5ERAAV.mjs";import{a as d}from"./chunk-3TRXQAU4.mjs";L();R();function T(o,n,t){let a=o.prepare("INSERT INTO analysis_finding (id, analysis_id, kind, title, detail, severity, sort_order) VALUES (?, ?, ?, ?, ?, ?, ?)"),e=[],i=d((s,r,y,S)=>{if(!r)return;let _=e.length,p=`${n}-f${_}`;a.run(p,n,s,r,y,S,_),e.push(p)},"addFinding");for(let s of t.patterns??[])i("pattern",s.name,s.description,null);for(let s of t.antiPatterns??[])i("anti_pattern",s.issue,s.suggestion,s.severity);for(let s of t.techDebt??[])i("tech_debt",s.description,`${s.area}: ${s.impact}`,s.priority);for(let s of t.riskAreas??[])i("risk_area",s.path,`${s.reason} \u2014 ${s.risk}`,s.severity);for(let s of t.refactorSuggestions??[])i("refactor",s.description,s.benefit,null);let m=new Set;for(let s of[...t.projectInsights??[],...t.architecture?.insights??[]]){let r=s.toLowerCase();m.has(r)||(m.add(r),i("insight",s,null,null))}let c=o.prepare("INSERT INTO analysis_convention (id, analysis_id, rule, sort_order) VALUES (?, ?, ?, ?)");(t.conventions??[]).forEach((s,r)=>{c.run(`${n}-c${r}`,n,s.rule,r)});let g=o.prepare("INSERT INTO analysis_stack_item (id, analysis_id, kind, name) VALUES (?, ?, ?, ?)");[...(t.stack?.languages??[]).map(s=>({kind:"language",name:s})),...(t.stack?.frameworks??[]).map(s=>({kind:"framework",name:s}))].forEach((s,r)=>{g.run(`${n}-s${r}`,n,s.kind,s.name)});let f=o.prepare("INSERT INTO analysis_command (id, analysis_id, name, command, purpose) VALUES (?, ?, ?, ?, ?)");Object.entries(t.commands??{}).filter(s=>!!s[1]).forEach(([s,r],y)=>{f.run(`${n}-cmd${y}`,n,s,r,null)});let A=o.prepare("INSERT INTO analysis_domain (id, analysis_id, name, paths) VALUES (?, ?, ?, ?)");(t.architecture?.domains??[]).forEach((s,r)=>{A.run(`${n}-d${r}`,n,s,null)})}d(T,"writeAnalysisChildren");var E=class{static{d(this,"LLMAnalysisStorage")}save(n,t){let a=l.getDb(n),e=h();a.transaction(()=>{a.prepare("UPDATE llm_analysis SET status = 'superseded', superseded_at = ? WHERE status = 'active'").run(e);let i=a.prepare("INSERT INTO llm_analysis (commit_hash, status, analysis, analyzed_at) VALUES (?, ?, ?, ?)").run(t.commitHash??null,"active",JSON.stringify(t),t.analyzedAt);T(a,String(i.lastInsertRowid),t)})()}getActiveRelational(n){let t=l.get(n,"SELECT id FROM llm_analysis WHERE status = 'active' LIMIT 1");if(!t)return null;let a=String(t.id),e=l.query(n,"SELECT kind, title, detail FROM analysis_finding WHERE analysis_id = ? ORDER BY kind, sort_order",a),i=l.query(n,"SELECT rule FROM analysis_convention WHERE analysis_id = ? ORDER BY sort_order",a).map(u=>u.rule),m=l.query(n,"SELECT kind, name FROM analysis_stack_item WHERE analysis_id = ?",a),c=l.query(n,"SELECT name FROM analysis_domain WHERE analysis_id = ?",a).map(u=>u.name),g=l.query(n,"SELECT name, command FROM analysis_command WHERE analysis_id = ?",a);return e.length===0&&i.length===0&&m.length===0?null:{findings:e,conventions:i,stack:m,domains:c,commands:g}}getActive(n){let t=l.get(n,"SELECT analysis FROM llm_analysis WHERE status = 'active' LIMIT 1");return t?JSON.parse(t.analysis):null}getActiveSummary(n){let t=this.getActive(n);return t?{commitHash:t.commitHash,architectureStyle:t.architecture.style,patternCount:t.patterns.length,antiPatternCount:t.antiPatterns.length,analyzedAt:t.analyzedAt}:null}isCurrent(n,t){return t?l.get(n,"SELECT commit_hash FROM llm_analysis WHERE status = 'active' LIMIT 1")?.commit_hash===t:!1}getAllFull(n){return l.query(n,"SELECT id, commit_hash, status, analyzed_at, superseded_at, analysis FROM llm_analysis ORDER BY id DESC").map(a=>({id:a.id,status:a.status,commitHash:a.commit_hash,analyzedAt:a.analyzed_at,supersededAt:a.superseded_at,analysis:JSON.parse(a.analysis)}))}getArchiveSummaries(n,t){let a=l.get(n,"SELECT COUNT(*) AS c FROM llm_analysis WHERE status = 'superseded'")?.c??0,e=l.query(n,"SELECT id, commit_hash, analyzed_at, superseded_at, analysis FROM llm_analysis WHERE status = 'superseded' ORDER BY id DESC LIMIT ?",t);return{total:a,entries:e.map(i=>({id:i.id,commitHash:i.commit_hash,analyzedAt:i.analyzed_at,supersededAt:i.superseded_at,analysis:JSON.parse(i.analysis)}))}}getHistory(n,t=10){return l.query(n,"SELECT id, commit_hash, status, analyzed_at, analysis FROM llm_analysis ORDER BY id DESC LIMIT ?",t).map(e=>{let i=JSON.parse(e.analysis);return{id:e.id,commitHash:e.commit_hash,status:e.status,analyzedAt:e.analyzed_at,patternCount:i.patterns.length}})}},O=new E,C=O;export{C as a};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { createRequire as __createRequire } from 'module';
|
|
2
|
+
import { fileURLToPath as __fileURLToPath } from 'url';
|
|
3
|
+
import { dirname as __pathDirname } from 'path';
|
|
4
|
+
const require = __createRequire(import.meta.url);
|
|
5
|
+
const __filename = __fileURLToPath(import.meta.url);
|
|
6
|
+
const __dirname = __pathDirname(__filename);
|
|
7
|
+
import{a as n}from"./chunk-3TRXQAU4.mjs";var a=[{runtimeId:"claude",displayName:"Claude Code",product:"Anthropic Claude Code",instructions:{files:["CLAUDE.md","AGENTS.md","~/.claude/CLAUDE.md"],loadOrder:"user global \u2192 project CLAUDE.md \u2192 nested CLAUDE.md",prjct:"native"},mcp:{configPaths:["~/.claude/mcp.json","project .mcp.json"],format:"JSON mcpServers",prjct:"native",notes:"prjct MCP + Context7 installable via prjct install / context7-service"},skills:{paths:["~/.claude/skills/",".claude/skills/","project skills via skill-generator"],prjct:"native"},hooks:{configPaths:["~/.claude/settings.json"],events:["SessionStart","UserPromptSubmit","PreToolUse","PostToolUse","Stop","SubagentStart","SubagentStop","Notification","CwdChanged"],format:"settings.json hooks[] with type:command",prjct:"native",contract:"Passive inject via additionalContext; PreToolUse deny only for explicit loop-guard. Fail-soft {}.",notes:"prjct install writes _prjctManaged hooks (PRJCT_HOOKS)"},plugins:{paths:["Claude Code plugins / marketplaces"],prjct:"none"},legibility:"Deepest native wire: hooks + MCP + skill + CLAUDE.md. Reference implementation for all other rigs."},{runtimeId:"codex",displayName:"OpenAI Codex",product:"OpenAI Codex CLI",instructions:{files:["AGENTS.md","nested AGENTS.md"],loadOrder:"cwd \u2192 repo root AGENTS.md (Codex priority rules)",prjct:"portable"},mcp:{configPaths:["~/.codex/config.toml [mcp_servers.*]"],format:"TOML mcp_servers tables",prjct:"native",notes:"ensureCodexMcpServer writes # prjct:mcp markers; status line optional"},skills:{paths:["~/.codex/skills/",".agents/skills/","plugins"],prjct:"portable",notes:"Codex skill description hard ~1024 byte limit (gotcha mem_3723)"},hooks:{configPaths:["~/.codex/hooks.json","~/.codex/config.toml [[hooks.*]]",".codex/hooks.json"],events:["SessionStart","UserPromptSubmit","PreToolUse","PostToolUse","Stop","SubagentStart","SubagentStop","PermissionRequest","PreCompact","PostCompact"],format:"hooks.json (+ [features] hooks = true); trust via Codex /hooks once",prjct:"native",contract:"PRJCT_HOOKS mapped to hooks.json (skips Notification/CwdChanged). Fail-soft command wrapper. User must trust hooks once in TUI.",notes:"prjct install \u2192 installCodexHooks(); commandWindows for win32; features.hooks enabled when missing"},legibility:"MCP + hooks both native on install when Codex is detected. Trust new hooks once via `/hooks`. AGENTS.md portable."},{runtimeId:"gemini",displayName:"Gemini CLI",product:"Google Gemini CLI",instructions:{files:["GEMINI.md","AGENTS.md (if context.fileName includes it)","~/.gemini/GEMINI.md"],loadOrder:"global GEMINI.md \u2192 project \u2192 nested; fileName configurable",prjct:"portable"},mcp:{configPaths:["~/.gemini/settings.json mcpServers","mcp_config.json"],format:"JSON mcpServers in settings",prjct:"native",notes:"prjct install \u2192 ensureGeminiMcpServer (mcpServers.prjct)"},skills:{paths:["Agent Skills standard dirs under Gemini config"],prjct:"portable"},hooks:{configPaths:[".gemini/settings.json","~/.gemini/settings.json","/etc/gemini-cli/settings.json"],events:["BeforeTool","AfterTool","BeforeAgent","AfterAgent","SessionStart","SessionEnd","Notification"],format:"settings.json hooks.*[] with type:command; timeout ms",prjct:"native",contract:"PRJCT_HOOK_HOST=gemini remaps deny\u2192{decision:deny} and event names. Matchers: run_shell_command, write_file|replace.",notes:"installGeminiSettings maps Claude events \u2192 Gemini BeforeTool/BeforeAgent/AfterAgent"},legibility:"MCP + hooks native on install when Gemini is detected. GEMINI.md/AGENTS.md remain portable context."},{runtimeId:"grok",displayName:"xAI Grok Build",product:"xAI Grok Build CLI",instructions:{files:["AGENTS.md / Agents.md / AGENT.md","CLAUDE.md (native Claude compat)",".claude/rules/","~/.grok + project walk"],loadOrder:"AGENTS.md cwd\u2192root; also auto-reads Claude instruction files",prjct:"inherits-claude"},mcp:{configPaths:["~/.grok/config.toml [mcp_servers.prjct]","~/.claude/mcp.json (Claude compat fallback)","plugins .mcp.json"],format:"TOML mcp_servers (same shape as Codex) + Claude MCP JSON (compat)",prjct:"native",notes:"prjct install \u2192 ensureGrokMcpServer() writes managed [mcp_servers.prjct] into ~/.grok/config.toml; Claude MCP remains a fallback"},skills:{paths:["./.grok/skills/","~/.grok/skills/prjct/SKILL.md","~/.agents/skills/",".claude/skills/ (compat)","plugin skills/"],prjct:"native",notes:"prjct install \u2192 installGrokSkill() at ~/.grok/skills/prjct/SKILL.md"},hooks:{configPaths:["~/.grok/hooks/*.json",".grok/hooks/*.json (needs /hooks-trust)","~/.claude/settings.json (compat)",".cursor/hooks.json (compat)"],events:["SessionStart","SessionEnd","UserPromptSubmit","PreToolUse","PostToolUse","PostToolUseFailure","PermissionDenied","Stop","StopFailure","Notification","SubagentStart","SubagentStop","PreCompact","PostCompact"],format:"JSON hook files; Claude settings.json + Cursor hooks.json also loaded",prjct:"inherits-claude",contract:"PreToolUse is the only blocking event (decision deny or exit 2). Fail-open on errors. Project hooks need trust.",notes:"Hooks still via Claude/Cursor compat (no second Grok hook writer yet). MCP + skill are native."},plugins:{paths:["./.grok/plugins/","~/.grok/plugins/prjct/","marketplaces"],prjct:"native",notes:"prjct install \u2192 installGrokPlugin() at ~/.grok/plugins/prjct (skill + /plan command; MCP stays in config.toml)"},legibility:"Native MCP + skill + user plugin on prjct install when Grok is detected; PreToolUse/Session hooks still fire via Claude-compat settings. Plan ceremony: `prjct plan`. Grok is Brain; prjct SQLite is Body."},{runtimeId:"opencode",displayName:"OpenCode",product:"OpenCode (OSS multi-provider)",instructions:{files:["AGENTS.md","opencode.json(c)","CLAUDE.md (compat)"],loadOrder:"project AGENTS.md \u2192 global ~/.config/opencode/AGENTS.md; Claude fallbacks",prjct:"portable"},mcp:{configPaths:["~/.config/opencode/opencode.json mcp.prjct","~/.config/opencode/opencode.jsonc","project opencode.json(c)"],format:"JSONC mcp.<name> = { type:local, command:[...], enabled }",prjct:"native",notes:"prjct install \u2192 ensureOpenCodeMcpServer() upserts mcp.prjct (jsonc-safe merge)"},skills:{paths:[".opencode/skills/","~/.claude/skills/ (Claude Code compat)"],prjct:"inherits-claude",notes:"Claude skill install covers OpenCode when Claude compat is enabled"},hooks:{configPaths:[],events:[],format:"plugin/extension dependent",prjct:"none",contract:"No Claude-parity hook pack; MCP + AGENTS.md is the organic wire"},legibility:"Native MCP on prjct install when OpenCode is detected. AGENTS.md portable; Claude skills/CLAUDE.md as fallback."},{runtimeId:"pi",displayName:"Pi",product:"Pi coding agent (minimal harness)",instructions:{files:["AGENTS.md","CLAUDE.md","~/.pi/agent/AGENTS.md","SYSTEM.md / APPEND_SYSTEM.md"],loadOrder:"~/.pi/agent \u2192 parents \u2192 cwd",prjct:"portable"},mcp:{configPaths:[],format:"none built-in (extension-only)",prjct:"none",notes:"Pi intentionally has no native MCP; do not require it for full wire"},skills:{paths:["~/.pi/agent/skills/prjct/SKILL.md","pi packages"],prjct:"native",notes:"prjct install \u2192 installPiSkill() at ~/.pi/agent/skills/prjct/SKILL.md"},hooks:{configPaths:[],events:[],format:"extension event hooks only",prjct:"none",contract:"Skill + AGENTS.md + prjct CLI --md; no lifecycle hook pack"},legibility:"Native skill on prjct install when Pi is detected. AGENTS.md portable. MCP is optional via community extensions only."},{runtimeId:"kimi-cli",displayName:"Kimi Code CLI",product:"Moonshot Kimi Code CLI",instructions:{files:["AGENTS.md"],loadOrder:"project AGENTS.md routing block",prjct:"portable"},mcp:{configPaths:["~/.kimi-code/mcp.json","~/.kimi/mcp.json (legacy fallback)"],format:"JSON mcpServers (claude-json shape)",prjct:"native",notes:"ensureKimiMcpServer prefers ~/.kimi-code, writes legacy only when it is the sole Kimi home; uninstall strips prjct-managed servers from both"},skills:{paths:["~/.agents/skills/prjct/SKILL.md","$KIMI_CODE_HOME/skills/ (~/.kimi-code/skills/)"],prjct:"native",notes:"Compact skill via skill-generator fan-out into the shared user tier ~/.agents/skills (canonical Kimi scan dir, verified live)"},hooks:{configPaths:["~/.kimi-code/config.toml [[hooks]]"],events:["SessionStart","UserPromptSubmit","PreToolUse","PostToolUse","Stop","SubagentStart","SubagentStop","Notification"],format:"TOML [[hooks]] (event/matcher/command/timeout only \u2014 extra fields break config load); # prjct-managed comment marks our entries",prjct:"native",contract:"stdin JSON snake_case (hook_event_name/session_id/cwd/tool_input); exit 0 stdout text appended to context; deny via hookSpecificOutput.permissionDecision JSON or exit 2 + stderr; fail-open on error/timeout. No CwdChanged (cwd rides every payload).",notes:"PRJCT_HOOK_HOST=kimi adapts output to raw stdout text; forwarded to the daemon as hookHost. kimi-hooks.ts patches config.toml textually \u2014 user entries and orca-managed blocks stay byte-identical."},legibility:"Full native wire: TOML hooks + claude-json MCP + shared-tier skill + AGENTS.md. First-class since the ~/.kimi-code path fix."},{runtimeId:"cursor",displayName:"Cursor",product:"Cursor IDE",instructions:{files:["AGENTS.md",".cursor/rules/*.mdc"],loadOrder:"project rules + AGENTS.md; model pick in-app",prjct:"portable"},mcp:{configPaths:["Cursor MCP settings (app)"],format:"IDE MCP UI / json",prjct:"portable"},skills:{paths:[],prjct:"none",notes:"Skills are CLI-agent concept; Cursor uses rules + MCP"},hooks:{configPaths:["~/.cursor/hooks.json","project .cursor/hooks.json"],events:["sessionStart","beforeSubmitPrompt","preToolUse","postToolUse","stop","subagentStart","subagentStop"],format:"version:1 flat handlers; camelCase events; timeout seconds",prjct:"native",contract:"User-level install (clean-repo). PRJCT_HOOK_HOST=cursor emits camelCase + additional_context. Grok also reads this file.",notes:"installCursorHooks on prjct install when .cursor detected; matchers Write|StrReplace|Edit, Shell|Bash"},legibility:"Hooks native at ~/.cursor/hooks.json on install. AGENTS.md + optional .cursor/rules. MCP still IDE UI."},{runtimeId:"cline",displayName:"Cline",product:"Cline (VS Code agent)",instructions:{files:["AGENTS.md",".clinerules/"],loadOrder:"rules + AGENTS.md",prjct:"portable"},mcp:{configPaths:["Cline MCP settings"],format:"IDE MCP",prjct:"portable"},skills:{paths:["Cline skills / custom instructions"],prjct:"portable"},hooks:{configPaths:["Cline hooks (when enabled)"],events:["varies by version"],format:"extension-defined",prjct:"planned",contract:"Multi-model VS Code agent; ACP support for some hosts"},legibility:"AGENTS.md + MCP portable; deep native wire planned if hook schema stabilizes."}];function c(o){let s=o?.only?new Set(o.only):null,i=a.filter(e=>!s||s.has(e.runtimeId)),t=["## Harness surfaces (benchmark tier)","","| Runtime | Instructions | MCP | Skills | Hooks | prjct wire |","|---|---|---|---|---|---|"];for(let e of i){let r=l(e);t.push(`| ${e.displayName} | ${e.instructions.prjct} | ${e.mcp.prjct} | ${e.skills.prjct} | ${e.hooks.prjct} | ${r} |`)}if(t.push("","Wire legend: `native` = prjct installs; `inherits-claude` = covered by Claude install; `portable` = AGENTS.md/MCP/CLI; `planned` = surface exists, installer next.",""),o?.detail){t.push("### Integration notes","");for(let e of i)t.push(`#### ${e.displayName}`,"",e.legibility,""),e.hooks.notes&&t.push(`- Hooks: ${e.hooks.notes}`),e.mcp.notes&&t.push(`- MCP: ${e.mcp.notes}`),e.skills.notes&&t.push(`- Skills: ${e.skills.notes}`),t.push(`- Hook events: ${e.hooks.events.slice(0,8).join(", ")||"(none)"}`),t.push(`- MCP paths: ${e.mcp.configPaths.join("; ")}`),t.push("")}return t.join(`
|
|
8
|
+
`)}n(c,"formatHarnessSurfacesMarkdown");function l(o){let s=[o.hooks.prjct,o.mcp.prjct,o.instructions.prjct,o.skills.prjct];return s.includes("native")?"native+":s.includes("inherits-claude")?"via Claude":s.includes("planned")?"partial/planned":s.includes("portable")?"portable":"none"}n(l,"summarizeWire");export{c as a};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { createRequire as __createRequire } from 'module';
|
|
2
|
+
import { fileURLToPath as __fileURLToPath } from 'url';
|
|
3
|
+
import { dirname as __pathDirname } from 'path';
|
|
4
|
+
const require = __createRequire(import.meta.url);
|
|
5
|
+
const __filename = __fileURLToPath(import.meta.url);
|
|
6
|
+
const __dirname = __pathDirname(__filename);
|
|
7
|
+
import{a as P,b as v}from"./chunk-76YMLNLF.mjs";import{b as y}from"./chunk-XSZOHNL4.mjs";import{F as f,G as S,e as g,l as M}from"./chunk-HU5ERAAV.mjs";import{e as h,g as k}from"./chunk-225DWS4D.mjs";import{a as l}from"./chunk-3TRXQAU4.mjs";var b=class{static{l(this,"PrjctCommands")}_workflow;workflowG(){return this._workflow??=import("./workflow-XM77QYRF.mjs").then(e=>new e.WorkflowCommands).catch(e=>{throw this._workflow=void 0,e})}_planning;planningG(){return this._planning??=import("./planning-NOWLKZDS.mjs").then(e=>new e.PlanningCommands).catch(e=>{throw this._planning=void 0,e})}_shipping;shippingG(){return this._shipping??=import("./shipping-NZVM57JJ.mjs").then(e=>new e.ShippingCommands).catch(e=>{throw this._shipping=void 0,e})}_analysis;analysisG(){return this._analysis??=import("./analysis-OARMM4AH.mjs").then(e=>new e.AnalysisCommands).catch(e=>{throw this._analysis=void 0,e})}_setupCmds;setupCmdsG(){return this._setupCmds??=import("./setup-BL36ZWPW.mjs").then(e=>new e.SetupCommands).catch(e=>{throw this._setupCmds=void 0,e})}_updateCmds;updateCmdsG(){return this._updateCmds??=import("./update-PSHEJJI5.mjs").then(e=>new e.UpdateCommands).catch(e=>{throw this._updateCmds=void 0,e})}_contextCmds;contextCmdsG(){return this._contextCmds??=import("./context-MPHOQPXF.mjs").then(e=>new e.ContextCommands).catch(e=>{throw this._contextCmds=void 0,e})}_primitivesCmds;primitivesCmdsG(){return this._primitivesCmds??=import("./primitives-GNUMBYOK.mjs").then(e=>new e.PrimitiveCommands).catch(e=>{throw this._primitivesCmds=void 0,e})}_seedCmds;seedCmdsG(){return this._seedCmds??=import("./seed-MMDJE2UO.mjs").then(e=>new e.SeedCommands).catch(e=>{throw this._seedCmds=void 0,e})}_installCmds;installCmdsG(){return this._installCmds??=import("./install-FZQJJWT5.mjs").then(e=>new e.InstallCommands).catch(e=>{throw this._installCmds=void 0,e})}_captureCmds;captureCmdsG(){return this._captureCmds??=import("./capture-3JJPWIF3.mjs").then(e=>new e.CaptureCommands).catch(e=>{throw this._captureCmds=void 0,e})}_mcpCmds;mcpCmdsG(){return this._mcpCmds??=import("./mcp-BD5TOTCK.mjs").then(e=>new e.McpCommands).catch(e=>{throw this._mcpCmds=void 0,e})}_teamCmds;teamCmdsG(){return this._teamCmds??=import("./team-WKAAOEFE.mjs").then(e=>new e.TeamCommands).catch(e=>{throw this._teamCmds=void 0,e})}_configCmds;configCmdsG(){return this._configCmds??=import("./config-UVF7YOR6.mjs").then(e=>new e.ConfigCommands).catch(e=>{throw this._configCmds=void 0,e})}_embeddingsCmds;embeddingsCmdsG(){return this._embeddingsCmds??=import("./embeddings-354ZYFKX.mjs").then(e=>new e.EmbeddingsCommands).catch(e=>{throw this._embeddingsCmds=void 0,e})}_guardCmds;guardCmdsG(){return this._guardCmds??=import("./guard-RT7U3LJX.mjs").then(e=>new e.GuardCommands).catch(e=>{throw this._guardCmds=void 0,e})}_specCmds;specCmdsG(){return this._specCmds??=import("./spec-VC3VTUI3.mjs").then(e=>new e.SpecCommands).catch(e=>{throw this._specCmds=void 0,e})}agent;agentInfo;currentAuthor;prjctDir;constructor(){this.agent=null,this.agentInfo=null,this.currentAuthor=null,this.prjctDir=".prjct"}async task(e=null,t=process.cwd(),n={}){return(await this.workflowG()).now(e,t,n)}async workflowPrefs(e=null,t=process.cwd(),n={}){return(await this.workflowG()).workflow(e,t,n)}async init(e=null,t=process.cwd()){return(await this.planningG()).init(e,t)}async ship(e,t=process.cwd(),n={}){return(await this.shippingG()).ship(e,t,{...n})}async analyze(e={},t=process.cwd()){return(await this.analysisG()).analyze(e,t)}async sync(e=process.cwd(),t={}){return(await this.analysisG()).sync(e,t)}async saveLlmAnalysis(e,t=process.cwd(),n={}){return(await this.analysisG()).saveLlmAnalysis(e,t,n)}async context(e=null,t=process.cwd(),n={}){return(await this.contextCmdsG()).context(e,t,n)}async search(e=null,t=process.cwd(),n={}){return(await this.contextCmdsG()).search(e,t,n)}async status(e=null,t=process.cwd(),n={}){return(await this.primitivesCmdsG()).status(e,t,n)}async tag(e=null,t=process.cwd(),n={}){return(await this.primitivesCmdsG()).tag(e,t,n)}async remember(e=null,t=process.cwd(),n={}){return(await this.primitivesCmdsG()).remember(e,t,n)}async forget(e=null,t=process.cwd(),n={}){return(await this.primitivesCmdsG()).forget(e,t,n)}async close(e=null,t=process.cwd(),n={}){return(await this.primitivesCmdsG()).close(e,t,n)}async seed(e=null,t=process.cwd(),n={}){return(await this.seedCmdsG()).seed(e,t,n)}async install(e=null,t=process.cwd(),n={}){return(await this.installCmdsG()).install(null,t,n)}async capture(e=null,t=process.cwd(),n={}){return(await this.captureCmdsG()).capture(e,t,n)}async mcp(e=null,t=process.cwd(),n={}){return(await this.mcpCmdsG()).mcp(e,t,n)}async team(e=null,t=process.cwd(),n={}){return(await this.teamCmdsG()).team(e,t,n)}async config(e=null,t=process.cwd(),n={}){return(await this.configCmdsG()).config(e,t,n)}async embeddings(e=null,t=process.cwd(),n={}){return(await this.embeddingsCmdsG()).embeddings(e,t,n)}async guard(e=null,t=process.cwd(),n={}){return(await this.guardCmdsG()).guard(e,t,n)}async auth(e=null,t={}){return(await this.setupCmdsG()).auth(e,t)}async login(e={}){return(await this.setupCmdsG()).login(e)}async logout(){return(await this.setupCmdsG()).logout()}async start(){return(await this.setupCmdsG()).start()}async setup(e={}){return(await this.setupCmdsG()).setup(e)}async update(e={},t=process.cwd()){return(await this.updateCmdsG()).update(e,t)}async installStatusLine(){return(await this.setupCmdsG()).installStatusLine()}async initializeAgent(){return(await this.workflowG()).initializeAgent()}async ensureProjectInit(e){return(await this.workflowG()).ensureProjectInit(e)}async ensureAuthor(){return(await this.workflowG()).ensureAuthor()}async getGlobalProjectPath(e){return(await this.workflowG()).getGlobalProjectPath(e)}async logToMemory(e,t,n){return(await this.workflowG()).logToMemory(e,t,n)}async spec(e=null,t=process.cwd(),n={}){return(await this.specCmdsG()).draft(e,t,n)}async specList(e=process.cwd(),t={}){return(await this.specCmdsG()).list(null,e,t)}async specShow(e=null,t=process.cwd(),n={}){return(await this.specCmdsG()).show(e,t,n)}async specUpdate(e=null,t=process.cwd(),n={}){return(await this.specCmdsG()).update(e,t,n)}async specApplyDelta(e=null,t=process.cwd(),n={}){return(await this.specCmdsG()).applyDelta(e,t,n)}async specSetStatus(e=null,t=process.cwd(),n={}){return(await this.specCmdsG()).setStatus(e,t,n)}async specRecordReview(e=null,t=process.cwd(),n={}){return(await this.specCmdsG()).recordReview(e,t,n)}async specLinkTask(e=null,t=process.cwd(),n={}){return(await this.specCmdsG()).linkTask(e,t,n)}async specShip(e=null,t=process.cwd(),n={}){return(await this.specCmdsG()).ship(e,t,n)}async specAudit(e=null,t=process.cwd(),n={}){return(await this.specCmdsG()).audit(e,t,n)}async specValidate(e=null,t=process.cwd(),n={}){return(await this.specCmdsG()).validate(e,t,n)}async specBreakdown(e=null,t=process.cwd(),n={}){return(await this.specCmdsG()).breakdown(e,t,n)}async specInventory(e=process.cwd(),t={}){return(await this.specCmdsG()).inventory(null,e,t)}};S();k();M();var w=class{static{l(this,"CommandRegistry")}handlers=new Map;handlerFns=new Map;optionFns=new Map;lazyResetters=[];metadata=new Map;categories=new Map;noProjectCommands=new Set(["init","setup","start","migrateAll"]);register(e,t){this.handlers.set(e.name,e),this.setMeta(e.name,t)}registerFn(e,t,n){this.handlerFns.set(e,t),this.setMeta(e,n)}setMeta(e,t){let n=t?.requiresProject??!this.noProjectCommands.has(e);this.metadata.set(e,{name:e,group:t?.group??"unknown",surface:t?.surface,description:t?.description??"",requiresProject:n,usage:t?.usage??{claude:null,terminal:null},implemented:t?.implemented??!0,hasTemplate:t?.hasTemplate??!1,params:t?.params,blockingRules:t?.blockingRules,features:t?.features,isOptional:t?.isOptional,deprecated:t?.deprecated,replacedBy:t?.replacedBy,routingMode:t?.routingMode,optionSchema:t?.optionSchema})}registerCategory(e,t){this.categories.set(e,t)}registerLazyMethod(e,t,n,s){let i=[];this.lazyResetters.push(()=>{i.length=0});let o=l(async()=>{let d=i.at(-1);if(d)return d;let u=await t(),c=u[n];if(typeof c!="function")throw new Error(`${n} is not a function`);let p={instance:u,method:c};return i.push(p),p},"resolve"),m=l(async(d,u)=>{let{instance:c,method:p}=await o();return d!=null?p.call(c,d,u.projectPath):p.call(c,u.projectPath)},"wrapper");this.handlerFns.set(e,m),this.optionFns.set(e,async(d,u,c)=>{let{instance:p,method:G}=await o();return G.call(p,d,u,c)}),this.setMeta(e,s)}resetLazyResolutions(){for(let e of this.lazyResetters)e()}has(e){return this.handlers.has(e)||this.handlerFns.has(e)}list(){return[...this.handlers.keys(),...this.handlerFns.keys()]}listByGroup(e){return Array.from(this.metadata.entries()).filter(([,t])=>t.group===e).map(([t])=>t)}getGroups(){let e=new Set;for(let t of this.metadata.values())e.add(t.group);return Array.from(e)}getMeta(e){return this.metadata.get(e)}getAll(){return Array.from(this.metadata.values())}getByName(e){return this.metadata.get(e)}getByCategory(e){return this.getAll().filter(t=>t.group===e)}getAllImplemented(){return this.getAll().filter(e=>e.implemented)}getAllWithTemplates(){return this.getAll().filter(e=>e.hasTemplate)}getClaudeCommands(){return this.getAll().filter(e=>e.usage.claude!==null)}getTerminalCommands(){return this.getAll().filter(e=>e.usage.terminal!==null)}getAllCategories(){return new Map(this.categories)}getCategory(e){return this.categories.get(e)}getRequiresInit(){return this.getAll().filter(e=>e.requiresProject)}getWithBlockingRules(){return this.getAll().filter(e=>e.blockingRules!==void 0)}getOptionalCommands(){return this.getAll().filter(e=>e.isOptional)}getDeprecatedCommands(){return this.getAll().filter(e=>e.deprecated)}getStats(){let e=this.getAll(),t={};for(let n of this.categories.keys())t[n]=e.filter(s=>s.group===n).length;return{total:e.length,implemented:e.filter(n=>n.implemented).length,withTemplates:e.filter(n=>n.hasTemplate).length,claudeOnly:e.filter(n=>n.usage.claude&&!n.usage.terminal).length,terminalOnly:e.filter(n=>!n.usage.claude&&n.usage.terminal).length,both:e.filter(n=>n.usage.claude&&n.usage.terminal).length,requiresInit:e.filter(n=>n.requiresProject).length,byCategory:t}}validate(){let e=[],t=this.getAll(),n=t.map(m=>m.name),s=n.filter((m,d)=>n.indexOf(m)!==d);s.length>0&&e.push(`Duplicate command names: ${s.join(", ")}`);let i=t.filter(m=>m.hasTemplate&&!m.implemented);i.length>0&&e.push(`Commands with templates but not implemented: ${i.map(m=>m.name).join(", ")}`);let o=Array.from(this.categories.keys());if(o.length>0){let m=t.filter(d=>!o.includes(d.group));m.length>0&&e.push(`Invalid categories: ${m.map(d=>`${d.name}:${d.group}`).join(", ")}`)}return{valid:e.length===0,issues:e}}async buildContext(e){let t=await y.getProjectId(e);if(!t)throw new Error("No prjct project found. Run p. init first.");return{projectId:t,projectPath:e,globalPath:f.getGlobalProjectPath(t),timestamp:g()}}async execute(e,t,n=process.cwd()){let s=this.metadata.get(e),i=await(async()=>{if(s?.requiresProject===!1)return{projectId:"",projectPath:n,globalPath:"",timestamp:g()};try{return await this.buildContext(n)}catch(d){return{success:!1,error:h(d)}}})();if("success"in i)return i;let o=this.handlers.get(e);if(o)return o.execute(t,i);let m=this.handlerFns.get(e);return m?m(t,i):{success:!1,error:`Command not found: ${e}`}}async executeWithOptions(e,t,n,s){let i=this.optionFns.get(e);if(!i)return{success:!1,error:`Command not found: ${e}`};if(this.metadata.get(e)?.requiresProject!==!1)try{await this.buildContext(n)}catch(m){return{success:!1,error:h(m)}}return i(t,n,s)}async executeWithoutProject(e,t,n=process.cwd()){let s=this.handlers.get(e);if(s){let o={projectId:"",projectPath:n,globalPath:"",timestamp:g()};return s.execute(t,o)}let i=this.handlerFns.get(e);if(i){let o={projectId:"",projectPath:n,globalPath:"",timestamp:g()};return i(t,o)}return{success:!1,error:`Command not found: ${e}`}}clear(){this.handlers.clear(),this.handlerFns.clear(),this.metadata.clear(),this.categories.clear()}},C=new w;var R=[];function B(){for(let r of R)r()}l(B,"resetGroupLoaders");function a(r){let e={};return R.push(()=>{delete e.promise}),()=>(e.promise||(e.promise=r().catch(t=>{throw delete e.promise,t})),e.promise)}l(a,"lazy");var A={workflow:a(async()=>new(await import("./workflow-XM77QYRF.mjs")).WorkflowCommands),planning:a(async()=>new(await import("./planning-NOWLKZDS.mjs")).PlanningCommands),shipping:a(async()=>new(await import("./shipping-NZVM57JJ.mjs")).ShippingCommands),analysis:a(async()=>new(await import("./analysis-OARMM4AH.mjs")).AnalysisCommands),setup:a(async()=>new(await import("./setup-BL36ZWPW.mjs")).SetupCommands),context:a(async()=>new(await import("./context-MPHOQPXF.mjs")).ContextCommands),primitives:a(async()=>new(await import("./primitives-GNUMBYOK.mjs")).PrimitiveCommands),seed:a(async()=>new(await import("./seed-MMDJE2UO.mjs")).SeedCommands),install:a(async()=>new(await import("./install-FZQJJWT5.mjs")).InstallCommands),capture:a(async()=>new(await import("./capture-3JJPWIF3.mjs")).CaptureCommands),mcp:a(async()=>new(await import("./mcp-BD5TOTCK.mjs")).McpCommands),team:a(async()=>new(await import("./team-WKAAOEFE.mjs")).TeamCommands),config:a(async()=>new(await import("./config-UVF7YOR6.mjs")).ConfigCommands),uninstall:a(async()=>new(await import("./uninstall-W6EAUS7N.mjs")).UninstallCommands),update:a(async()=>new(await import("./update-PSHEJJI5.mjs")).UpdateCommands),spec:a(async()=>new(await import("./spec-VC3VTUI3.mjs")).SpecCommands),embeddings:a(async()=>new(await import("./embeddings-354ZYFKX.mjs")).EmbeddingsCommands),llm:a(async()=>new(await import("./llm-KMVXVBHG.mjs")).LlmCommands),agent:a(async()=>new(await import("./agent-3N2MSSGT.mjs")).AgentCommands),guard:a(async()=>new(await import("./guard-RT7U3LJX.mjs")).GuardCommands),memoryExport:a(async()=>new(await import("./memory-export-WJ4H7CFV.mjs")).MemoryExportCommands),workflowsReference:a(async()=>new(await import("./workflows-reference-T7RH7IGJ.mjs")).WorkflowsReferenceCommands),changelog:a(async()=>new(await import("./changelog-LPJ4GKB6.mjs")).ChangelogCommands),workGraph:a(async()=>new(await import("./work-graph-ZNV7S6EU.mjs")).WorkGraphCommands),ceremonies:a(async()=>new(await import("./ceremonies-B565WDCA.mjs")).CeremonyCommands),lean:a(async()=>new(await import("./lean-26BWCUOR.mjs")).LeanCommands),cloud:a(async()=>new(await import("./cloud-RXHFZ7MX.mjs")).CloudCommands),tdd:a(async()=>new(await import("./tdd-P2PP4RR4.mjs")).TddCommands),sdd:a(async()=>new(await import("./sdd-3WNZJ6FU.mjs")).SddCommands),notify:a(async()=>new(await import("./notify-EWYUBKGO.mjs")).NotifyCommands),agents:a(async()=>new(await import("./agents-ZPNNCOH7.mjs")).AgentsCommands),product:a(async()=>new(await import("./product-GUHSUNIH.mjs")).ProductCommands),eval:a(async()=>new(await import("./eval-O4YD6YOV.mjs")).EvalCommands),judgment:a(async()=>new(await import("./judgment-G5KH6QFC.mjs")).JudgmentCommands),code:a(async()=>new(await import("./code-IYK65A62.mjs")).CodeCommands)};function _(){for(let[r,e]of Object.entries(P))C.registerCategory(r,e)}l(_,"registerCategories");function j(){if(!C.has("work")){_();for(let r of v)r.routing&&C.registerLazyMethod(r.name,A[r.routing.group],r.routing.method,r)}}l(j,"registerAllCommands");j();function x(r){return r.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase()}l(x,"kebab");function V(r,e){let t=l(s=>r[s]!==void 0?r[s]:r[x(s)],"pick"),n={md:r.md===!0};for(let s of e.booleans??[])n[s]=t(s)===!0;for(let s of e.strings??[]){let i=t(s);n[s]=i!=null&&i!==!1&&i!==""?String(i):void 0}for(let s of e.numbers??[]){let i=t(s),o=i!=null&&i!==!1&&i!==""?Number(i):Number.NaN;n[s]=Number.isNaN(o)?void 0:o}return n}l(V,"mapOptions");var O=new Set(["list","show","update","apply-delta","set-status","record-review","link-task","ship","audit","validate","breakdown","inventory"]),I=new Set(["draft","new","create"]);async function K(r,e,t,n){let s=t.md===!0,i=e[0],o=e.slice(1).join(" ")||null,m=e.join(" ")||null,d={md:s,goal:t.goal?String(t.goal):void 0,tags:t.tags?String(t.tags):void 0};if(i&&I.has(i))return r.spec(o,n,d);if(!i||!O.has(i))return r.spec(m,n,d);switch(i){case"list":return r.specList(n,{md:s,status:t.status?String(t.status):void 0});case"show":return r.specShow(o,n,{md:s});case"update":return r.specUpdate(o,n,{md:s,json:t.json?String(t.json):void 0});case"apply-delta":return r.specApplyDelta(o,n,{md:t.md,file:t.file?String(t.file):void 0});case"set-status":return r.specSetStatus(o,n,{md:s,status:t.status?String(t.status):void 0});case"record-review":return r.specRecordReview(o,n,{md:s,reviewer:t.reviewer?String(t.reviewer):void 0,verdict:t.verdict?String(t.verdict):void 0,notes:t.notes?String(t.notes):void 0});case"link-task":return r.specLinkTask(o,n,{md:s,taskId:t["task-id"]?String(t["task-id"]):void 0});case"ship":return r.specShip(o,n,{md:s,pr:t.pr?String(t.pr):void 0});case"audit":return r.specAudit(o,n,{md:s,lenses:t.lenses?String(t.lenses):void 0,strict:t.strict===!0});case"validate":return r.specValidate(o,n,{md:s,strict:t.strict===!0});case"breakdown":return r.specBreakdown(o,n,{md:s,force:t.force===!0});case"inventory":return r.specInventory(n,{md:s,json:t.json===!0});default:return{success:!1,error:`unknown spec subverb: ${i}`}}}l(K,"routeSpec");export{b as a,C as b,B as c,V as d,K as e};
|