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,7 @@
|
|
|
1
|
+
import { createRequire as __createRequire } from 'module';
|
|
2
|
+
import { fileURLToPath as __fileURLToPath } from 'url';
|
|
3
|
+
import { dirname as __pathDirname } from 'path';
|
|
4
|
+
const require = __createRequire(import.meta.url);
|
|
5
|
+
const __filename = __fileURLToPath(import.meta.url);
|
|
6
|
+
const __dirname = __pathDirname(__filename);
|
|
7
|
+
import{a as e,c as t}from"./chunk-3TRXQAU4.mjs";import s from"node:os";import o from"node:path";function n(){let r=process.env.HOME?.trim()||process.env.USERPROFILE?.trim();return r?o.resolve(r):s.homedir()}function v(...r){return o.join(n(),...r)}var i=t(()=>{e(n,"resolveUserHome");e(v,"resolveUserPath")});export{n as a,v as b,i as c};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { createRequire as __createRequire } from 'module';
|
|
2
|
+
import { fileURLToPath as __fileURLToPath } from 'url';
|
|
3
|
+
import { dirname as __pathDirname } from 'path';
|
|
4
|
+
const require = __createRequire(import.meta.url);
|
|
5
|
+
const __filename = __fileURLToPath(import.meta.url);
|
|
6
|
+
const __dirname = __pathDirname(__filename);
|
|
7
|
+
import{a as b}from"./chunk-ZXTJLMVZ.mjs";import{a as g,b as M}from"./chunk-U24YKPYX.mjs";import{b as p,p as j}from"./chunk-D62TAZG6.mjs";import{a as x,f as y,g as w}from"./chunk-5ZBACKED.mjs";import{b as P}from"./chunk-DW4QMD6J.mjs";import{g as C,p as k}from"./chunk-HYIT7MF5.mjs";import{a as v,e as h,g as R}from"./chunk-225DWS4D.mjs";import{a as c}from"./chunk-3TRXQAU4.mjs";b();M();R();import{constants as D}from"node:fs";import l from"node:fs/promises";import m from"node:os";import s from"node:path";j();k();function N(){return process.env.NODE_ENV==="test"?s.join(m.tmpdir(),"prjct-context7-test","verify-cache.json"):s.join(g(),"state","context7-verify.json")}c(N,"getVerifyCachePath");async function A(){try{let r=await l.readFile(N(),"utf-8"),e=JSON.parse(r);if(typeof e?.at=="number"&&e.status)return{...e,provider:e.provider??"claude"}}catch{}return null}c(A,"readPersistedVerify");async function V(r,e,t){let n=N();try{await l.mkdir(s.dirname(n),{recursive:!0}),await l.writeFile(n,JSON.stringify({at:r,provider:e,status:t}),"utf-8")}catch{}}c(V,"writePersistedVerify");var O=P.context7,u={value:null},I=[s.dirname(process.execPath),"/opt/homebrew/bin","/usr/local/bin","/opt/local/bin","/usr/bin","/bin"],F=[[".bun","bin"],[".local","bin"],[".volta","bin"],[".asdf","shims"],[".local","share","mise","shims"],[".rtx","shims"],[".npm-global","bin"]];async function _(r){try{return(await l.readdir(r,{withFileTypes:!0})).filter(t=>t.isDirectory()).map(t=>t.name)}catch{return[]}}c(_,"listChildDirs");async function H(r){let e=[],t=process.env.NVM_DIR||s.join(r,".nvm"),n=s.join(t,"versions","node");for(let o of await _(n))e.push(s.join(n,o,"bin"));let a=process.env.FNM_DIR||s.join(r,".local","share","fnm"),i=s.join(a,"node-versions");for(let o of await _(i))e.push(s.join(i,o,"installation","bin"));return e}c(H,"discoverNodeManagerBinDirs");async function X(r=process.env.PATH||"",e=m.homedir()){let t=new Set,n=[],a=F.map(o=>s.join(e,...o)),i=[...I,...a,...process.env.NVM_BIN?[process.env.NVM_BIN]:[],...process.env.VOLTA_HOME?[s.join(process.env.VOLTA_HOME,"bin")]:[],...process.env.ASDF_DIR?[s.join(process.env.ASDF_DIR,"shims")]:[],...process.env.MISE_DATA_DIR?[s.join(process.env.MISE_DATA_DIR,"shims")]:[],...await H(e)];for(let o of[...r.split(s.delimiter),...i]){let f=o.trim();!f||t.has(f)||(t.add(f),n.push(f))}return n.join(s.delimiter)}c(X,"buildContext7SmokePath");async function J(r,e){if(s.isAbsolute(r)||r.includes(s.sep))return r;let t=process.platform==="win32"?(process.env.PATHEXT||".EXE;.CMD;.BAT;.COM").split(";").filter(Boolean):[""];for(let n of e.split(s.delimiter))if(n)for(let a of t){let i=s.join(n,r+a);try{return await l.access(i,D.X_OK),i}catch{}}return r}c(J,"resolveExecutable");function E(){return process.env.PRJCT_CONTEXT7_CONFIG?process.env.PRJCT_CONTEXT7_CONFIG:process.env.NODE_ENV==="test"?s.join(m.tmpdir(),"prjct-context7-test","mcp.json"):s.join(m.homedir(),".claude","mcp.json")}c(E,"getConfigPath");async function T(r){try{let e=await l.readFile(r,"utf-8");return JSON.parse(e)}catch(e){if(v(e))return{};throw e}}c(T,"readConfig");async function B(){if(process.env.PRJCT_SKIP_CONTEXT7_SMOKE==="1"||process.env.NODE_ENV==="test")return;let r=O,e=[...r.args||[],"--help"],t=await X(),n=await J(r.command||"npx",t);await p(n,e,{timeout:15e3,env:{...process.env,PATH:t}})}c(B,"runSmokeCheck");var d=class{static{c(this,"Context7Service")}async install(e="claude"){if(e==="codex")return this.installCodex();if(e!=="claude")return{installed:!1,verified:!1,configPath:"",message:`Context7 auto-config not supported for ${e}; skipping`};let t=E(),n=s.dirname(t);await l.mkdir(n,{recursive:!0});let a=await T(t),i=a.mcpServers||{},o=O,f=i.context7;return f&&JSON.stringify(f)===JSON.stringify(o)?{installed:!0,verified:!1,configPath:t,message:"Context7 MCP already configured"}:(i.context7=o,a.mcpServers=i,await C(t,a),u.value=null,{installed:!0,verified:!1,configPath:t,message:"Context7 MCP configured"})}async installCodex(){let e=await y();return e.changed&&(u.value=null),{installed:!0,verified:!1,configPath:e.path,message:e.skipped==="user-managed"?"Context7 MCP user-managed in config.toml":"Context7 MCP configured in config.toml"}}async resolveConfigured(e){if(e==="codex"){let o=x();return await w(o)?{ok:!0,configPath:o}:{ok:!1,configPath:o,message:"Context7 MCP not configured in ~/.codex/config.toml"}}if(e!=="claude")return{ok:!1,configPath:"",message:`Context7 not managed for ${e}`};let t=E(),i=((await T(t)).mcpServers||{}).context7;return!i?.command||!Array.isArray(i.args)||i.args.length===0?{ok:!1,configPath:t,message:"Context7 MCP not configured in ~/.claude/mcp.json"}:{ok:!0,configPath:t}}async verify(e="claude"){let t=Date.now();if(u.value&&u.value.provider===e&&t-u.value.at<864e5)return u.value.status;let n=await A();if(n?.status.verified&&n.provider===e&&t-n.at<864e5)return u.value=n,n.status;let a=await this.resolveConfigured(e);if(!a.ok)return{installed:!1,verified:!1,configPath:a.configPath,message:a.message};try{await B();let i={installed:!0,verified:!0,configPath:a.configPath};return u.value={at:t,provider:e,status:i},await V(t,e,i),i}catch(i){let o={installed:!0,verified:!1,configPath:a.configPath,message:`Context7 smoke check failed: ${h(i)}`};return u.value={at:t,provider:e,status:o},o}}async ensureReady(e="claude"){await this.install(e);let t=await this.verify(e);if(!t.verified){let n=t.message||"Context7 MCP is required but not ready. Run `prjct start` to repair configuration.";throw new Error(n)}return t}},K=new d,te=K;export{N as a,X as b,te as c};
|
|
@@ -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{g as P,p as w}from"./chunk-HYIT7MF5.mjs";import{e as l,g as x}from"./chunk-225DWS4D.mjs";import{a as o,b as S}from"./chunk-3TRXQAU4.mjs";x();w();import p from"node:fs";import v from"node:fs/promises";import C from"node:os";import t from"node:path";var g="mcp-remote@0.1.38";var j="prjct: agentic harness with project memory, workflow gates, intent briefs, and performance context. Use prjct_task_start as the MCP entrypoint for a work cycle; prjct retrieves focused context, persists evidence stations, and keeps humans in the loop for risky gates. Agents resume from prjct_task_status/workflow output, create or link reviewed intent/spec briefs when required, and persist synthesized learning instead of raw transcript fragments.";function b(){let e=_();if(e)return e;if(process.env.PRJCT_MCP_ALLOW_LOCAL==="1"){let r=O();if(r)return{command:r,args:["mcp-server"],description:j}}return{command:"npx",args:["-y","prjct-cli@latest","mcp-server"],description:j}}o(b,"getPrjctMcpConfig");function M(e){let r=e.replace(/\\/g,"/");return!!(r.includes("/.worktrees/")||r.includes("/prjct-cli/bin/prjct")&&!r.includes("/node_modules/prjct-cli/"))}o(M,"isNonProductionPrjctPath");function _(){let e=[];try{e.push(t.dirname(S.resolve("prjct-cli/package.json")))}catch{}let r=C.homedir();for(let n of[process.env.NVM_BIN?t.resolve(process.env.NVM_BIN,".."):"",t.join(r,".nvm","versions","node",process.version,"lib"),"/opt/homebrew/lib","/usr/local/lib"].filter(Boolean))e.push(t.join(n,"node_modules","prjct-cli"));for(let n of e){if(M(n))continue;let s=t.join(n,"bin","prjct.cjs"),i=p.existsSync(t.join(n,"dist","bin","prjct.mjs"))||p.existsSync(t.join(n,"dist","bin","prjct-core.mjs"));if(!p.existsSync(s)||!i)continue;let a=[process.execPath,t.join(t.dirname(process.execPath),"node"),t.join(n,"..","..","bin","node")].find(m=>m&&p.existsSync(m)),f=t.resolve(n,"..","..","..","bin","node"),d=p.existsSync(f)?f:a??process.execPath;return{command:d,args:[s,"mcp-server"],env:{PATH:`${t.dirname(d)}${t.delimiter}/usr/bin${t.delimiter}/bin`},description:j}}return null}o(_,"resolvePublishedPrjctMcpConfig");function O(){let e=process.argv[1],r=[e?t.resolve(t.dirname(e),"prjct"):"",e?t.resolve(t.dirname(e),"..","bin","prjct"):"",t.resolve(process.cwd(),"bin","prjct")].filter(Boolean);for(let n of r){if(!p.existsSync(n))continue;let s=(()=>{try{return p.realpathSync(n)}catch{return n}})();if(!M(s))return s}return null}o(O,"resolveLocalPrjctBin");function $(){let e=k.prjct;return{...e,env:{...e.env??{},PRJCT_MCP_TOOLS:"lean"}}}o($,"getPrjctLeanMcpConfig");var k={context7:{command:"npx",args:["-y","@upstash/context7-mcp@latest"],description:"Library documentation lookup"},prjct:b(),linear:{command:"npx",args:["-y",g,"https://mcp.linear.app/mcp"],description:"Linear MCP server (OAuth)"},jira:{command:"npx",args:["-y",g,"https://mcp.atlassian.com/v1/mcp"],description:"Atlassian MCP server for Jira (OAuth)"}};function u(){return process.env.PRJCT_TEST_MODE==="1"?t.join(C.tmpdir(),"prjct-context7-test","mcp.json"):t.join(C.homedir(),".claude","mcp.json")}o(u,"getClaudeMcpConfigPath");async function h(e=u()){try{let r=await v.readFile(e,"utf-8");return JSON.parse(r)}catch(r){let n=l(r).toLowerCase();if(n.includes("no such file")||n.includes("enoent"))return{};throw new Error(`Failed to read MCP config at ${e}: ${l(r)}`)}}o(h,"readMcpConfig");async function y(e,r=u()){await P(r,e)}o(y,"writeMcpConfig");async function A(e,r,n=u()){let s=await h(n),i={...s.mcpServers||{}},c=i[e];i[e]=r,s.mcpServers=i;let a=JSON.stringify(c)!==JSON.stringify(r);return await y(s,n),{path:n,changed:a}}o(A,"upsertMcpServer");async function V(e,r=u()){return!!(await h(r)).mcpServers?.[e]}o(V,"hasMcpServer");async function D(e,r=u(),n){let s=await h(r),i=s.mcpServers,c=i?.[e];return!i||!c?{path:r,changed:!1}:n&&JSON.stringify(c)!==JSON.stringify(n)?{path:r,changed:!1}:(delete i[e],Object.keys(i).length===0&&delete s.mcpServers,await y(s,r),{path:r,changed:!0})}o(D,"removeMcpServer");function F(e,r,n,s,i){let c=e.indexOf(n),a=e.indexOf(s);if(c!==-1&&a!==-1&&a>c){let f=e.slice(0,c),d=e.slice(a+s.length),m=d.startsWith(`
|
|
8
|
+
`)?d.slice(1):d;return{next:f+r+m}}return new RegExp(`^\\s*\\[mcp_servers\\.${i}\\]`,"m").test(e)?{next:e,skipped:"user-managed"}:e.trim().length>0?{next:`${e.trimEnd()}
|
|
9
|
+
|
|
10
|
+
${r}`}:{next:r}}o(F,"upsertMarkedBlock");async function q(e,r,n){return n===r?{path:e,changed:!1}:(await v.mkdir(t.dirname(e),{recursive:!0}),await v.writeFile(e,n,"utf-8"),{path:e,changed:!0})}o(q,"writeConfigIfChanged");export{$ as a,k as b,u as c,A as d,V as e,D as f,F as g,q as h};
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { createRequire as __createRequire } from 'module';
|
|
2
|
+
import { fileURLToPath as __fileURLToPath } from 'url';
|
|
3
|
+
import { dirname as __pathDirname } from 'path';
|
|
4
|
+
const require = __createRequire(import.meta.url);
|
|
5
|
+
const __filename = __fileURLToPath(import.meta.url);
|
|
6
|
+
const __dirname = __pathDirname(__filename);
|
|
7
|
+
import{b as g}from"./chunk-DW4QMD6J.mjs";import{b as p,c as O}from"./chunk-DOJPSIMG.mjs";import{a as i}from"./chunk-3TRXQAU4.mjs";O();import a from"node:fs/promises";import l from"node:path";import*as o from"jsonc-parser";function h(){return process.env.PRJCT_TEST_MODE==="1"?l.join(p(".prjct-tests"),"opencode","opencode.json"):p(".config","opencode","opencode.json")}i(h,"getOpenCodeConfigPath");function E(){return process.env.PRJCT_TEST_MODE==="1"?l.join(p(".prjct-tests"),"opencode","opencode.jsonc"):p(".config","opencode","opencode.jsonc")}i(E,"getOpenCodeJsoncConfigPath");function P(n=g.prjct){let t={type:"local",command:[n.command,...n.args??[]],enabled:!0};return n.env&&Object.keys(n.env).length>0&&(t.environment={...n.env}),t}i(P,"toOpenCodeLocalMcp");async function S(n=h()){try{return await a.access(n),n}catch{}if(n===h()){let r=E();try{return await a.access(r),r}catch{}}return n}i(S,"resolveWritePath");function y(n){if(!n.trim())return{};let r=[],t=o.parse(n,r,{allowTrailingComma:!0,disallowComments:!1});if(r.length>0){let e=r[0];throw new SyntaxError(`OpenCode config parse error at offset ${e.offset}: ${o.printParseErrorCode(e.error)}`)}return t===null||typeof t!="object"||Array.isArray(t)?{}:t}i(y,"parseOpenCodeConfig");async function J(n,r=g.prjct){let t=n??await S();await a.mkdir(l.dirname(t),{recursive:!0});let e=await a.readFile(t,"utf-8").catch(f=>{if(f.code==="ENOENT")return"";throw f}),c=P(r);if(!e.trim()){let f={$schema:"https://opencode.ai/config.json",mcp:{prjct:c}};return await a.writeFile(t,`${JSON.stringify(f,null,2)}
|
|
8
|
+
`,"utf-8"),{path:t,changed:!0}}let s=y(e),C=(s.mcp??{}).prjct;if(!(JSON.stringify(C)!==JSON.stringify(c)))return{path:t,changed:!1};let d={tabSize:2,insertSpaces:!0},j=!s.mcp||typeof s.mcp!="object"?o.applyEdits(e,o.modify(e,["mcp"],{},{formattingOptions:d})):e,m=o.applyEdits(j,o.modify(j,["mcp","prjct"],c,{formattingOptions:d})),u=s.$schema?m:o.applyEdits(m,o.modify(m,["$schema"],"https://opencode.ai/config.json",{formattingOptions:d,isArrayInsertion:!1}));return await a.writeFile(t,u.endsWith(`
|
|
9
|
+
`)?u:`${u}
|
|
10
|
+
`,"utf-8"),{path:t,changed:!0}}i(J,"ensureOpenCodeMcpServer");function T(n){if(!n)return!1;try{let e=y(n).mcp?.prjct;if(!e)return!1;let c=e.command;return Array.isArray(c)?c.some(s=>typeof s=="string"&&(s.includes("prjct")||s.includes("mcp-server"))):typeof c=="string"?c.includes("prjct")||c.includes("mcp-server"):JSON.stringify(e).includes("mcp-server")||JSON.stringify(e).includes("prjct")}catch{return n.includes('"prjct"')&&(n.includes("mcp-server")||n.includes("type"))}}i(T,"hasOpenCodePrjctMcp");export{h as a,E as b,P as c,J as d,T 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";var n={NO_PROJECT:{message:"No prjct project found in this directory",hint:"Run 'prjct init' to set up a new project",file:".prjct/prjct.config.json"},NO_PROJECT_ID:{message:"Project ID not found",hint:"Run 'prjct init' or check .prjct/prjct.config.json",file:".prjct/prjct.config.json"},CONFIG_NOT_FOUND:{message:"Configuration file not found",hint:"Run 'prjct init' to create project configuration",file:".prjct/prjct.config.json"},CONFIG_INVALID:{message:"Invalid configuration file",hint:"Check JSON syntax or delete .prjct/ and run init again",file:".prjct/prjct.config.json"},GIT_NOT_FOUND:{message:"Git repository not detected",hint:"Run 'git init' first, then 'prjct init'"},GIT_NO_COMMITS:{message:"No commits in repository",hint:"Make an initial commit before using prjct"},GIT_DIRTY:{message:"Working directory has uncommitted changes",hint:"Commit or stash changes, or use '--force' to override"},GIT_ON_MAIN:{message:"Cannot ship from main/master branch",hint:"Create a feature branch first: git checkout -b feature/your-feature"},GIT_OPERATION_FAILED:{message:"Git operation failed",hint:"Check git status and resolve any conflicts"},GH_NOT_AUTHENTICATED:{message:"GitHub CLI not authenticated",hint:"Run 'gh auth login' to authenticate",docs:"https://cli.github.com/manual/gh_auth_login"},LINEAR_NOT_CONFIGURED:{message:"Linear integration not configured",hint:"Configure the Linear MCP server in your AI client"},LINEAR_API_ERROR:{message:"Linear API error",hint:"Check your API key or network connection"},NO_ACTIVE_TASK:{message:"No active work cycle",hint:`Start work with 'p. work "intent"'`},TASK_ALREADY_ACTIVE:{message:"A work cycle is already in progress",hint:"Use 'p. work' to inspect it or ship when complete"},SYNC_FAILED:{message:"Project sync failed",hint:"Check file permissions and try again"},NOTHING_TO_SHIP:{message:"Nothing to ship",hint:"Make some changes first, then run ship"},PR_CREATE_FAILED:{message:"Failed to create pull request",hint:"Check GitHub auth and remote configuration"},NO_AI_PROVIDER:{message:"No AI provider detected",hint:"Install Claude Code or Gemini CLI, then run 'prjct start'",docs:"https://prjct.app/docs"},PROVIDER_NOT_CONFIGURED:{message:"AI provider not configured for prjct",hint:"Run 'prjct start' to configure your provider"},UNKNOWN_COMMAND:{message:"Unknown command",hint:"Run 'prjct --help' to see available commands"},MISSING_PARAM:{message:"Missing required parameter",hint:"Check command usage below"},UNKNOWN:{message:"An unexpected error occurred",hint:"Check the error details and try again"}};function a(t,e){return{...n[t],...e}}r(a,"getError");function c(t,e,i){return{message:t,hint:e,...i}}r(c,"createError");export{a,c as b};
|
|
@@ -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}from"./chunk-NXUIMC22.mjs";import{f as c,i as g}from"./chunk-DMO3ZFUG.mjs";import{d as h}from"./chunk-INJ5WT2D.mjs";import{b as d,c as m,e as a,l as f}from"./chunk-HU5ERAAV.mjs";import{a as r}from"./chunk-3TRXQAU4.mjs";m();f();g();function v(i){let[e,t]=i.split(".");return e?{entityType:e.endsWith("s")?e:`${e}s`,eventType:t==="deleted"||t==="archived"||t==="removed"?"delete":"upsert"}:{}}r(v,"deriveEntityShape");function T(i){if(!i||typeof i!="object")return;let e=i;for(let t of["taskId","task_id","id","feature_id","featureId","specId","spec_id"]){let n=e[t];if(typeof n=="string"&&n.length>0)return n}}r(T,"entityIdOf");var u={value:null};async function w(){if(u.value)return u.value;try{let{default:i}=await import("./auth-config-KWLVKHCY.mjs"),e=i;if(typeof e.getDeviceId=="function"){let t=await e.getDeviceId();return u.value=t,t}return"unknown-device"}catch{return"unknown-device"}}r(w,"_resolveDeviceId");var y=class{static{r(this,"StorageManager")}filename;cache;constructor(e,t){this.filename=e,this.cache=new d({ttl:5e3,maxSize:50})}getStoreKey(){return this.filename.replace(".json","")}async read(e){if(!(process.env.PRJCT_IN_DAEMON==="1")){let n=this.cache.get(e);if(n!==null)return n}try{let n=c.getDoc(e,this.getStoreKey());if(n!==null)return this.cache.set(e,n),n}catch{}return this.getDefault()}async write(e,t){c.setDoc(e,this.getStoreKey(),t),this.cache.set(e,t)}async update(e,t){let n=this.getStoreKey(),s=c.updateDoc(e,n,t,()=>this.getDefault());return this.cache.set(e,s),s}async publishEvent(e,t,n){let s=v(t),o={type:t,path:[this.filename.replace(".json","")],data:n,timestamp:a(),projectId:e,entityType:s.entityType,entityId:T(n),eventType:s.eventType,contentHash:h(n),deviceId:await w(),revisionCount:1};await p.publish(o)}async publishEntityEvent(e,t,n,s){let o=`${t}.${n}`,l={...s,timestamp:a()};await this.publishEvent(e,o,l)}async exists(e){try{return c.hasDoc(e,this.getStoreKey())}catch{return!1}}clearCache(e){e?this.cache.delete(e):this.cache.clear()}getCacheStats(){return this.cache.stats()}};export{y 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{b as e,c as S}from"./chunk-76YMLNLF.mjs";var o=new Set(e.filter(t=>t.routing).map(t=>t.name)),r=S;export{o as a,r 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{e as y}from"./chunk-YJOC2JJK.mjs";import{f as u,i as v}from"./chunk-DMO3ZFUG.mjs";import{c as x}from"./chunk-INJ5WT2D.mjs";import{F as p,G as P,e as m,l as w}from"./chunk-HU5ERAAV.mjs";import{a as f,g as I}from"./chunk-225DWS4D.mjs";import{a as l}from"./chunk-3TRXQAU4.mjs";function $(c,t){let e=c.content,s=[`# ${c.title}`,"",`**id:** \`${c.id}\` \xB7 **status:** ${c.status} \xB7 **created:** ${c.createdAt}`,"","## Goal",e.goal];if(e.eli10&&s.push("","## ELI10",e.eli10),e.stakes&&s.push("","## Stakes",e.stakes),e.acceptance_criteria.length>0){s.push("","## Acceptance criteria");let n=new Map;if(e.delta_log.length>0){let r=y(e.delta_log);for(let[a,o]of Object.entries(e.scenarios)){let i=r.get(a);i&&o.length>0&&n.set(i,o)}}for(let r of e.acceptance_criteria){s.push(`- [ ] ${r}`);let a=n.get(r);if(a)for(let o of a){s.push(` - **Scenario: ${o.name}**`);for(let i of o.given)s.push(` - GIVEN ${i}`);for(let i of o.when)s.push(` - WHEN ${i}`);for(let i of o.then)s.push(` - THEN ${i}`)}}}if(e.scope.length>0){s.push("","## Scope");for(let n of e.scope)s.push(`- ${n}`)}if(e.out_of_scope.length>0){s.push("","## Out of scope");for(let n of e.out_of_scope)s.push(`- ${n}`)}if(e.risks.length>0){s.push("","## Risks");for(let n of e.risks)s.push(`- **${n.risk}** \u2014 ${n.mitigation}`)}if(e.test_plan.length>0){s.push("","## Test plan");for(let n of e.test_plan)s.push(`- ${n}`)}if(e.reviews&&Object.keys(e.reviews).length>0){s.push("","## Reviews");for(let[n,r]of Object.entries(e.reviews))s.push(`- **${n}:** ${r.verdict} \u2014 ${r.notes} _(${r.ts})_`)}if(e.linked_tasks.length>0&&s.push("","## Linked tasks",...e.linked_tasks.map(n=>`- ${n}`)),t&&e.acceptance_criteria.length>0){s.push("","## Tasks");for(let n of e.acceptance_criteria){let r=t.get(n);s.push(`- ${r?.completed?"[x]":"[ ]"} ${n}${r?` (\`${r.id}\`)`:""}`)}}return e.notes&&s.push("","## Notes",e.notes),s.join(`
|
|
8
|
+
`)}l($,"renderSpecMarkdown");P();I();w();import g from"node:fs/promises";import k from"node:path";v();var d="1.0.0";function C(){return{version:d,lastUpdated:"",checksums:{}}}l(C,"getDefaultChecksums");var h=class{static{l(this,"IndexStorage")}getIndexPath(t){return k.join(p.getGlobalProjectPath(t),"index")}async ensureIndexDir(t){let e=this.getIndexPath(t);return await g.mkdir(e,{recursive:!0}),e}async readIndex(t){try{let e=this.getIndexMeta(t,"project-index");if(e!==null)return e.version!==d?null:e}catch{}return null}async writeIndex(t,e){this.setIndexMeta(t,"project-index",e)}async hasValidIndex(t){let e=await this.readIndex(t);return e!==null&&e.lastFullScan!==""}async readChecksums(t){try{let e=this.getIndexMeta(t,"checksums");if(e!==null)return e}catch{}return C()}async writeChecksums(t,e){this.setIndexMeta(t,"checksums",e)}async calculateChecksum(t){try{let e=await g.readFile(t);return x(e)}catch{return""}}async detectChangedFiles(t,e){let n=(await this.readChecksums(t)).checksums,r=[],a=[],o=[];for(let[i,S]of e)i in n?n[i]!==S&&a.push(i):r.push(i);for(let i of Object.keys(n))e.has(i)||o.push(i);return{added:r,modified:a,deleted:o}}async readScores(t){try{let e=this.getIndexMeta(t,"file-scores");if(e!==null)return e.scores||[]}catch{}return[]}async writeScores(t,e){let s={version:d,lastUpdated:m(),scores:e};this.setIndexMeta(t,"file-scores",s)}async clearIndex(t){try{u.getDb(t).prepare("DELETE FROM index_meta").run()}catch{}let e=this.getIndexPath(t);try{let s=await g.readdir(e);await Promise.all(s.map(n=>g.unlink(k.join(e,n))))}catch(s){if(!f(s))throw s}}async getIndexAge(t){let e=await this.readIndex(t);if(!e||!e.lastFullScan)return 1/0;let s=new Date(e.lastFullScan);return(new Date().getTime()-s.getTime())/(1e3*60*60)}async readDomains(t){try{let e=this.getIndexMeta(t,"domains");if(e!==null)return e.version!==d?null:e}catch{}return null}readDomainsSync(t){try{let e=this.getIndexMeta(t,"domains");if(e!==null&&e.version===d)return e}catch{}return null}async writeDomains(t,e){this.setIndexMeta(t,"domains",e)}async readCategories(t){try{let e=this.getIndexMeta(t,"categories-cache");if(e!==null)return e.version!==d?null:e}catch{}return null}async writeCategories(t,e){this.setIndexMeta(t,"categories-cache",e)}async getFileCategories(t,e){let s=await this.readCategories(t),n=new Map;if(!s)return n;let r=new Set(e);for(let a of s.fileCategories)r.has(a.path)&&n.set(a.path,a.categories);return n}async getFilesByDomain(t,e){let s=await this.readCategories(t);return s?s.domainIndex[e]||[]:[]}getIndexMeta(t,e){let s=u.get(t,"SELECT data FROM index_meta WHERE key = ?",e);return s?JSON.parse(s.data):null}setIndexMeta(t,e,s){u.run(t,"INSERT OR REPLACE INTO index_meta (key, data, updated_at) VALUES (?, ?, ?)",e,JSON.stringify(s),new Date().toISOString())}},R=new h;export{$ as a,R as b};
|
|
@@ -0,0 +1,34 @@
|
|
|
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 I,b as R}from"./chunk-HPCSSJXH.mjs";import{a as W}from"./chunk-E5QQDYBR.mjs";import{b as y}from"./chunk-B7AQHL7B.mjs";import{a as B}from"./chunk-L4TUXFCL.mjs";import{f as E,g as b,i as _}from"./chunk-DMO3ZFUG.mjs";import{e as d,l as g}from"./chunk-HU5ERAAV.mjs";import{a as c}from"./chunk-3TRXQAU4.mjs";g();var f={idle:{transitions:["task"],prompt:"prjct work <intent> Start working",description:"No active work cycle"},working:{transitions:["done","pause"],prompt:"prjct status done Complete work | prjct status paused Switch context",description:"Work in progress"},paused:{transitions:["resume","task","ship"],prompt:"prjct status active Continue | prjct work <new> Start different | prjct ship Ship directly",description:"Task paused"},completed:{transitions:["ship","task","pause","reopen"],prompt:"prjct ship Ship it | prjct work <next> Start next | prjct status active Reopen",description:"Task completed"},shipped:{transitions:["task"],prompt:"prjct work <intent> Start new work cycle",description:"Feature shipped"}},S=class{static{c(this,"WorkflowStateMachine")}getCurrentState(t,s){if(s){let n=(t?.activeTasks??[]).find(a=>a.workspaceId===s);return n?this.statusToState(n):"idle"}let e=t?.currentTask;return e?this.statusToState(e):(t?.pausedTasks?.length||0)>0||t?.previousTask?.status==="paused"?"paused":"idle"}statusToState(t){switch((typeof t.status=="string"?t.status:"").toLowerCase()){case"in_progress":case"working":return"working";case"paused":return"paused";case"completed":case"done":return"completed";case"shipped":return"shipped";default:return"working"}}canTransition(t,s){if(f[t].transitions.includes(s))return{valid:!0};let n=this.formatNextSteps(t).join(" | ");return{valid:!1,error:`Cannot transition to '${s}' from '${t}' state`,suggestion:`Valid next steps: ${n}`}}getNextState(t,s){switch(s){case"task":return"working";case"done":return"completed";case"pause":return"paused";case"resume":return"working";case"ship":return"shipped";case"reopen":return"working";default:return t}}getStateInfo(t){return f[t]}getPrompt(t){return f[t].prompt}getValidCommands(t){return f[t].transitions}formatNextSteps(t){return f[t].transitions.map(e=>{switch(e){case"task":return"prjct work <intent> Start new work cycle";case"done":return"prjct status done Complete current work";case"pause":return"prjct status paused Pause and switch context";case"resume":return"prjct status active Continue paused task";case"ship":return"prjct ship Ship the feature";case"reopen":return"prjct status active Reopen completed task";default:return`prjct ${e}`}})}},w=new S;_();g();async function H(r,t,s){let e={pausedCount:0};if(await r.update(t,a=>{if(!a.currentTask)return a;r.validateTransition(a,"pause"),e.pausedTask={...a.currentTask,status:"paused",pausedAt:d(),pauseReason:s};let i=[e.pausedTask,...r.getPausedTasksFromState(a)].slice(0,r.maxPausedTasks);return e.pausedCount=i.length,{...a,currentTask:null,previousTask:null,pausedTasks:i,lastUpdated:d()}}),!e.pausedTask)return null;let n=e.pausedTask;return await r.publish(t,"task.paused",{taskId:n.id,description:n.description,pausedAt:n.pausedAt,reason:s,pausedCount:e.pausedCount}),n}c(H,"pauseTask");async function O(r,t,s){let e={remainingPaused:0};if(await r.update(t,a=>{let i=r.getPausedTasksFromState(a);if(i.length===0)return a;r.validateTransition(a,"resume");let u=s?i.findIndex(x=>x.id===s):0;if(u===-1)return a;let o=i[u],k=i.filter((x,lt)=>lt!==u),{status:p,pausedAt:T,pauseReason:l,...m}=o;return e.currentTask={...m,startedAt:d(),sessionId:o.sessionId??B()},e.remainingPaused=k.length,{...a,currentTask:e.currentTask,previousTask:null,pausedTasks:k,lastUpdated:d()}}),!e.currentTask)return null;let n=e.currentTask;return await r.publish(t,"task.resumed",{taskId:n.id,description:n.description,resumedAt:n.startedAt,remainingPaused:e.remainingPaused}),n}c(O,"resumeTask");async function D(r,t){let s=await r.read(t),e=r.getPausedTasksFromState(s),n=Date.now()-r.stalenessThresholdDays*24*60*60*1e3;return e.filter(a=>new Date(a.pausedAt).getTime()<n)}c(D,"getStalePausedTasks");async function F(r,t){let s=Date.now()-r.stalenessThresholdDays*24*60*60*1e3,e=[];await r.update(t,a=>{let i=r.getPausedTasksFromState(a),u=i.filter(k=>new Date(k.pausedAt).getTime()<s);if(e.push(u),u.length===0)return a;let o=i.filter(k=>new Date(k.pausedAt).getTime()>=s);return{...a,pausedTasks:o,previousTask:null,lastUpdated:d()}});let n=e[0]??[];if(n.length===0)return[];y.archiveMany(t,n.map(a=>({entityType:"paused_task",entityId:a.id,entityData:a,summary:a.description,reason:"staleness"})));for(let a of n)await r.publish(t,"task.archived",{taskId:a.id,description:a.description,pausedAt:a.pausedAt,reason:"staleness"});return n}c(F,"archiveStalePausedTasks");g();_();var Tt=20;function gt(r){let t=(()=>{if(!r.data)return{};try{return JSON.parse(r.data)}catch{return{}}})(),s={taskId:r.id,title:t.title??r.description,classification:r.type??"improvement",startedAt:r.started_at,completedAt:r.completed_at,subtaskCount:t.subtaskCount??0,subtaskSummaries:t.subtaskSummaries??[],outcome:t.outcome??"Task completed",branchName:r.branch??"unknown"};return r.linear_id!=null&&(s.linearId=r.linear_id),t.linearUuid!=null&&(s.linearUuid=t.linearUuid),r.pr_url!=null&&(s.prUrl=r.pr_url),t.feedback&&(s.feedback=t.feedback),t.harness&&(s.harness=t.harness),r.tokens_in&&(s.tokensIn=r.tokens_in),r.tokens_out&&(s.tokensOut=r.tokens_out),s}c(gt,"rowToHistoryEntry");function P(r,t="",...s){try{return E.query(r,`SELECT id, description, type, branch, linear_id, pr_url, started_at, completed_at, tokens_in, tokens_out, data
|
|
8
|
+
FROM tasks
|
|
9
|
+
WHERE status = 'completed' AND completed_at IS NOT NULL ${t}
|
|
10
|
+
ORDER BY completed_at DESC, rowid DESC LIMIT ${Tt}`,...s).map(gt)}catch{return[]}}c(P,"queryHistory");async function N(r,t){await r.update(t,()=>({currentTask:null,previousTask:null,pausedTasks:[],activeTasks:[],lastUpdated:d()}))}c(N,"clearTask");async function U(r,t){let s=await r.read(t),e=r.getPausedTasksFromState(s);return s.currentTask!==null||e.length>0}c(U,"hasTask");async function J(r,t){let s=await r.read(t);return r.getPausedTasksFromState(s)[0]||null}c(J,"getPausedTask");async function L(r,t){let s=await r.read(t);return r.getPausedTasksFromState(s)}c(L,"getAllPausedTasks");async function v(r,t){return P(t)}c(v,"getTaskHistory");async function q(r,t){return P(t)[0]||null}c(q,"getMostRecentTask");async function M(r,t,s){return P(t,"AND type = ?",s)}c(M,"getTaskHistoryByType");async function $(r,t){let e=(await v(r,t)).filter(l=>l.feedback),n=[],a=[],i=[],u=[];for(let l of e){let m=l.feedback;Array.isArray(m.stackConfirmed)&&n.push(...m.stackConfirmed),Array.isArray(m.patternsDiscovered)&&a.push(...m.patternsDiscovered),Array.isArray(m.agentAccuracy)&&i.push(...m.agentAccuracy),Array.isArray(m.issuesEncountered)&&u.push(...m.issuesEncountered)}let o=[...new Set(n)],k=[...new Set(a)],p=new Map;for(let l of u)p.set(l,(p.get(l)||0)+1);let T=[...p.entries()].filter(([l,m])=>m>=2).map(([l])=>l);return{stackConfirmed:o,patternsDiscovered:k,agentAccuracy:i,issuesEncountered:[...new Set(u)],knownGotchas:T}}c($,"getAggregatedFeedback");g();var yt=c(r=>r.filter(t=>t.status==="completed").length,"countCompleted"),j=c(r=>r.filter(t=>t.status==="completed"||t.status==="failed"||t.status==="skipped").length,"countResolved");async function h(r,t,s,e){let n={};return await r.update(t,a=>{if(!a.currentTask?.subtasks)return a;let i=a.currentTask.currentSubtaskIndex||0,u=a.currentTask.subtasks[i];if(!u)return a;let o=[...a.currentTask.subtasks];o[i]=s(u);let k=i+1,p=o.length;k<p&&(o[k]={...o[k],status:"in_progress",startedAt:d()});let T=k<p?o[k]:null,l=e?Q(e(o),p):void 0;return n.value={taskId:a.currentTask.id,current:o[i],next:T,...l?{progress:l}:{}},{...a,currentTask:{...a.currentTask,subtasks:o,currentSubtaskIndex:k<p?k:i,...l?{subtaskProgress:l}:{}},lastUpdated:d()}}),n.value??null}c(h,"mutateCurrentSubtask");function Q(r,t){return{completed:r,total:t,percentage:t>0?Math.round(r/t*100):0}}c(Q,"progressFrom");async function V(r,t,s){let e=await r.update(t,i=>{if(!i.currentTask)return i;let u=s.map((o,k)=>({...o,status:k===0?"in_progress":"pending",startedAt:k===0?d():void 0,dependsOn:o.dependsOn||[]}));return{...i,currentTask:{...i.currentTask,subtasks:u,currentSubtaskIndex:0,subtaskProgress:Q(0,u.length)},lastUpdated:d()}}),n=e.currentTask?.id??null,a=e.currentTask?.subtasks??[];n&&await r.publish(t,"subtasks.created",{taskId:n,subtaskCount:a.length,subtasks:a.map(i=>({id:i.id,description:i.description,domain:i.domain}))})}c(V,"createSubtasks");async function G(r,t,s){let e=I.safeParse(s);if(!e.success){let u=e.error.issues.map(o=>`${o.path.join(".")}: ${o.message}`);throw new Error(`Subtask completion requires handoff data:
|
|
11
|
+
${u.join(`
|
|
12
|
+
`)}`)}let{output:n,summary:a}=e.data,i=await h(r,t,u=>({...u,status:"completed",completedAt:d(),output:n,summary:a}),yt);return i?(await r.publish(t,"subtask.completed",{taskId:i.taskId,subtaskId:i.current.id,description:i.current.description,output:n,handoff:a.outputForNextAgent,filesChanged:a.filesChanged.length,progress:i.progress}),i.next):null}c(G,"completeSubtask");async function Y(r,t){let s=await r.read(t);if(!s.currentTask?.subtasks)return null;let e=s.currentTask.currentSubtaskIndex||0;return s.currentTask.subtasks[e]||null}c(Y,"getCurrentSubtask");async function z(r,t){let s=await r.read(t);if(!s.currentTask?.subtasks)return null;let e=(s.currentTask.currentSubtaskIndex||0)+1;return s.currentTask.subtasks[e]||null}c(z,"getNextSubtask");async function C(r,t){let s=await r.read(t);if(!s.currentTask?.subtasks)return null;let e=(s.currentTask.currentSubtaskIndex||0)-1;return e<0?null:s.currentTask.subtasks[e]||null}c(C,"getPreviousSubtask");async function K(r,t){let s=await C(r,t);return s?.summary?.outputForNextAgent?{fromSubtask:s.description,outputForNextAgent:s.summary.outputForNextAgent,filesChanged:s.summary.filesChanged,whatWasDone:s.summary.whatWasDone}:null}c(K,"getPreviousHandoff");async function X(r,t){return(await r.read(t)).currentTask?.subtasks||[]}c(X,"getSubtasks");async function Z(r,t){return(await r.read(t)).currentTask?.subtaskProgress||null}c(Z,"getSubtaskProgress");async function tt(r,t){return((await r.read(t)).currentTask?.subtasks?.length||0)>0}c(tt,"hasSubtasks");async function st(r,t){let s=await r.read(t);return s.currentTask?.subtasks?s.currentTask.subtasks.every(e=>e.status==="completed"||e.status==="failed"||e.status==="skipped"):!0}c(st,"areAllSubtasksComplete");async function et(r,t,s){let e=await h(r,t,n=>({...n,status:"failed",completedAt:d(),output:`Failed: ${s}`}),j);return e?(await r.publish(t,"subtask.failed",{taskId:e.taskId,subtaskId:e.current.id,description:e.current.description,error:s}),e.next):null}c(et,"failSubtask");async function rt(r,t,s){let e=await h(r,t,n=>({...n,status:"skipped",completedAt:d(),output:`Skipped: ${s}`,skipReason:s}),j);return e?(await r.publish(t,"subtask.skipped",{taskId:e.taskId,subtaskId:e.current.id,description:e.current.description,reason:s}),e.next):null}c(rt,"skipSubtask");async function at(r,t,s){let e=await h(r,t,n=>({...n,status:"blocked",output:`Blocked: ${s}`,blockReason:s}));return e?(await r.publish(t,"subtask.blocked",{taskId:e.taskId,subtaskId:e.current.id,description:e.current.description,blocker:s}),e.next):null}c(at,"blockSubtask");g();async function nt(r,t,s,e){let n={...s,workspaceId:e,startedAt:d()};return await r.update(t,a=>{if((a.activeTasks||[]).some(i=>i.workspaceId===e))throw new Error("A task is already active in this workspace");return{...a,activeTasks:[...a.activeTasks||[],n],lastUpdated:d()}}),await r.publish(t,"task.started",{taskId:n.id,description:n.description,startedAt:n.startedAt,sessionId:n.sessionId,workspaceId:e}),n}c(nt,"startTaskInWorkspace");async function it(r,t,s){return((await r.read(t)).activeTasks||[]).find(n=>n.workspaceId===s)??null}c(it,"getCurrentTaskForWorkspace");async function ot(r,t,s,e){let a=((await r.read(t)).activeTasks||[]).find(o=>o.workspaceId===s);if(!a)return null;let i=d(),u=[];return await r.update(t,o=>(u.push((o.activeTasks||[]).find(k=>k.workspaceId===s)??a),{...o,activeTasks:(o.activeTasks||[]).filter(k=>k.workspaceId!==s),lastUpdated:i})),r.persistHistoryEntry(t,r.createTaskHistoryEntry(u.at(-1)??a,i,e)),await r.publish(t,"task.completed",{taskId:a.id,description:a.description,startedAt:a.startedAt,completedAt:i,workspaceId:s}),a}c(ot,"completeTaskInWorkspace");async function ut(r,t){return(await r.read(t)).activeTasks||[]}c(ut,"getActiveTasks");async function ct(r,t,s){if(s.size===0)return[];let e=[];await r.update(t,a=>{let i=a.activeTasks||[],u=i.filter(o=>s.has(o.workspaceId));return e.push(u),u.length===0?a:{...a,activeTasks:i.filter(o=>!s.has(o.workspaceId)),lastUpdated:d()}});let n=e[0]??[];if(n.length===0)return[];y.archiveMany(t,n.map(a=>({entityType:"workspace_task",entityId:a.id,entityData:a,summary:a.description,reason:"staleness"})));for(let a of n)await r.publish(t,"task.archived",{taskId:a.id,description:a.description,workspaceId:a.workspaceId,reason:"staleness"});return n}c(ct,"archiveOrphanedWorkspaceTasks");async function kt(r,t){return((await r.read(t)).activeTasks||[]).length}c(kt,"getActiveTaskCount");async function dt(r,t,s,e){let a=((await r.read(t)).activeTasks||[]).find(o=>o.workspaceId===s);if(!a)return null;let i=c(o=>{let k={...o};for(let[p,T]of Object.entries(e))T===null?delete k[p]:T!==void 0&&(k[p]=T);return k.workspaceId=s,k},"merge"),u=[];return await r.update(t,o=>({...o,activeTasks:(o.activeTasks||[]).map(k=>{if(k.workspaceId!==s)return k;let p=i(k);return u.push(p),p}),lastUpdated:d()})),u.at(-1)??a}c(dt,"updateWorkspaceTask");async function pt(r,t,s,e,n){let a=await r.read(t);if(n){if(!(a.activeTasks||[]).some(o=>o.workspaceId===n))return null;let u=[];return await r.update(t,o=>({...o,activeTasks:(o.activeTasks||[]).map(k=>{if(k.workspaceId!==n)return k;let p=(k.tokensIn||0)+s,T=(k.tokensOut||0)+e;return u.push({tokensIn:p,tokensOut:T}),{...k,tokensIn:p,tokensOut:T}}),lastUpdated:d()})),u.at(-1)??null}if(!a.currentTask)return null;let i=[];return await r.update(t,u=>{if(!u.currentTask)return u;let o=(u.currentTask.tokensIn||0)+s,k=(u.currentTask.tokensOut||0)+e;return i.push({tokensIn:o,tokensOut:k}),{...u,currentTask:{...u.currentTask,tokensIn:o,tokensOut:k},lastUpdated:d()}}),i.at(-1)??null}c(pt,"addTokens");var A=class extends W{static{c(this,"StateStorage")}constructor(){super("state.json",R)}getDefault(){return{currentTask:null,previousTask:null,pausedTasks:[],taskHistory:[],activeTasks:[],lastUpdated:""}}getEventType(t){return`state.${t}d`}validateTransition(t,s,e){let n=w.getCurrentState(t,e),a=w.canTransition(n,s);if(!a.valid)throw new Error(`${a.error}. ${a.suggestion||""}`.trim())}async getCurrentTask(t){return(await this.read(t)).currentTask}async getTaskSnapshot(t){let s=await this.read(t);return{currentTask:s.currentTask,activeTasks:s.activeTasks||[]}}async bumpTurnCount(t){let s={count:0,task:null};return await this.update(t,e=>{if(!e.currentTask)return e;let n=(e.currentTask.turnCount??0)+1,a={...e.currentTask,turnCount:n};return s.count=n,s.task=a,{...e,currentTask:a}}),s}async acknowledgeTurnLimit(t,s){let e={ok:!1};return await this.update(t,n=>n.currentTask?(e.ok=!0,{...n,currentTask:{...n.currentTask,turnLimitAcknowledgedAt:s}}):n),e.ok}async getPausedTasks(t){let s=await this.read(t);return this.getPausedTasksFromState(s)}async startTask(t,s){let e={};if(await this.update(t,a=>(this.validateTransition(a,"task"),e.currentTask={...s,startedAt:d()},{...a,currentTask:e.currentTask,lastUpdated:d()})),!e.currentTask)throw new Error("Failed to start task");let n=e.currentTask;return this.mirrorTaskRow(t,n,"in_progress"),await this.publishEvent(t,"task.started",{taskId:n.id,description:n.description,startedAt:n.startedAt,sessionId:n.sessionId}),n}mirrorTaskRow(t,s,e,n={}){try{b.run(t,`INSERT INTO tasks (id, description, type, status, branch, linked_spec_id, session_id, feature_id, started_at, completed_at, paused_at, pause_reason)
|
|
13
|
+
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
14
|
+
ON CONFLICT(id) DO UPDATE SET
|
|
15
|
+
description = excluded.description,
|
|
16
|
+
status = excluded.status,
|
|
17
|
+
branch = COALESCE(excluded.branch, tasks.branch),
|
|
18
|
+
linked_spec_id = COALESCE(excluded.linked_spec_id, tasks.linked_spec_id),
|
|
19
|
+
completed_at = COALESCE(excluded.completed_at, tasks.completed_at),
|
|
20
|
+
paused_at = excluded.paused_at,
|
|
21
|
+
pause_reason = excluded.pause_reason`,s.id,s.description,s.type??null,e,s.branch??null,s.linkedSpecId??null,s.sessionId??null,s.featureId??null,s.startedAt??null,n.completedAt??null,n.pausedAt??null,n.pauseReason??null)}catch{}}mirrorHistoryEntry(t,s){try{let e=JSON.stringify({title:s.title,outcome:s.outcome,subtaskCount:s.subtaskCount,subtaskSummaries:s.subtaskSummaries,feedback:s.feedback,harness:s.harness,linearUuid:s.linearUuid});b.run(t,`INSERT INTO tasks (id, description, type, status, branch, linear_id, pr_url, started_at, completed_at, tokens_in, tokens_out, data)
|
|
22
|
+
VALUES (?, ?, ?, 'completed', ?, ?, ?, ?, ?, ?, ?, ?)
|
|
23
|
+
ON CONFLICT(id) DO UPDATE SET
|
|
24
|
+
description = excluded.description,
|
|
25
|
+
type = excluded.type,
|
|
26
|
+
status = 'completed',
|
|
27
|
+
branch = COALESCE(excluded.branch, tasks.branch),
|
|
28
|
+
linear_id = COALESCE(excluded.linear_id, tasks.linear_id),
|
|
29
|
+
started_at = COALESCE(excluded.started_at, tasks.started_at),
|
|
30
|
+
completed_at = excluded.completed_at,
|
|
31
|
+
pr_url = COALESCE(excluded.pr_url, tasks.pr_url),
|
|
32
|
+
tokens_in = CASE WHEN excluded.tokens_in > 0 THEN excluded.tokens_in ELSE tasks.tokens_in END,
|
|
33
|
+
tokens_out = CASE WHEN excluded.tokens_out > 0 THEN excluded.tokens_out ELSE tasks.tokens_out END,
|
|
34
|
+
data = excluded.data`,s.taskId,s.title,s.classification,s.branchName==="unknown"?null:s.branchName,s.linearId??null,s.prUrl??null,s.startedAt,s.completedAt,s.tokensIn??0,s.tokensOut??0,e)}catch{}}async updateCurrentTask(t,s){return(await this.update(t,n=>{if(!n.currentTask)return n;let a={...n.currentTask};for(let[u,o]of Object.entries(s))o===null?delete a[u]:o!==void 0&&(a[u]=o);return{...n,currentTask:a,lastUpdated:d()}})).currentTask}async completeTask(t,s){let e=d(),n={};if(await this.update(t,i=>i.currentTask?(this.validateTransition(i,"done"),n.completedTask=i.currentTask,{...i,currentTask:null,previousTask:null,lastUpdated:e}):i),!n.completedTask)return null;let a=n.completedTask;return this.mirrorTaskRow(t,a,"completed",{completedAt:e}),this.mirrorHistoryEntry(t,this.createTaskHistoryEntry(a,e,s)),await this.publishEvent(t,"task.completed",{taskId:a.id,description:a.description,startedAt:a.startedAt,completedAt:e}),a}createTaskHistoryEntry(t,s,e){let n=(t.subtasks||[]).filter(u=>u.status==="completed"&&u.summary).map(u=>u.summary),a=n.length>0?n.map(u=>u.title).join(", "):"Task completed",i={taskId:t.id,title:t.parentDescription||t.description,classification:t.type||"improvement",startedAt:t.startedAt,completedAt:s,subtaskCount:t.subtasks?.length||0,subtaskSummaries:n,outcome:a,branchName:t.branch||"unknown",linearId:t.linearId,linearUuid:t.linearUuid,prUrl:t.prUrl,harness:t.harness};return e&&(i.feedback=e),t.tokensIn&&(i.tokensIn=t.tokensIn),t.tokensOut&&(i.tokensOut=t.tokensOut),i}maxPausedTasks=5;stalenessThresholdDays=30;lifecycleBackend(){return{read:this.read.bind(this),update:this.update.bind(this),publish:this.publishEvent.bind(this),validateTransition:this.validateTransition.bind(this),getPausedTasksFromState:this.getPausedTasksFromState.bind(this),maxPausedTasks:this.maxPausedTasks,stalenessThresholdDays:this.stalenessThresholdDays}}async pauseTask(t,s){let e=await H(this.lifecycleBackend(),t,s);return e&&this.mirrorTaskRow(t,e,"paused",{pausedAt:e.pausedAt,pauseReason:e.pauseReason}),e}async resumeTask(t,s){let e=await O(this.lifecycleBackend(),t,s);return e&&this.mirrorTaskRow(t,e,"in_progress"),e}getPausedTasksFromState(t){return Array.isArray(t.pausedTasks)&&t.pausedTasks.length>0?t.pausedTasks:t.previousTask?[t.previousTask]:[]}async getStalePausedTasks(t){return D(this.lifecycleBackend(),t)}async archiveStalePausedTasks(t){return F(this.lifecycleBackend(),t)}queryBackend(){return{read:this.read.bind(this),update:this.update.bind(this),getPausedTasksFromState:this.getPausedTasksFromState.bind(this)}}async clearTask(t){return N(this.queryBackend(),t)}async hasTask(t){return U(this.queryBackend(),t)}async getPausedTask(t){return J(this.queryBackend(),t)}async getAllPausedTasks(t){return L(this.queryBackend(),t)}async getTaskHistory(t){return v(this.queryBackend(),t)}async getMostRecentTask(t){return q(this.queryBackend(),t)}async getTaskHistoryByType(t,s){return M(this.queryBackend(),t,s)}async getAggregatedFeedback(t){return $(this.queryBackend(),t)}workspaceBackend(){return{read:this.read.bind(this),update:this.update.bind(this),publish:this.publishEvent.bind(this),createTaskHistoryEntry:this.createTaskHistoryEntry.bind(this),persistHistoryEntry:this.mirrorHistoryEntry.bind(this)}}async startTaskInWorkspace(t,s,e){let n=await this.read(t);this.validateTransition(n,"task",e);let a=await nt(this.workspaceBackend(),t,s,e);return this.mirrorTaskRow(t,a,"in_progress"),a}async getCurrentTaskForWorkspace(t,s){return it(this.workspaceBackend(),t,s)}async completeTaskInWorkspace(t,s,e){let n=await ot(this.workspaceBackend(),t,s,e);return n&&this.mirrorTaskRow(t,n,"completed",{completedAt:d()}),n}async getActiveTasks(t){return ut(this.workspaceBackend(),t)}async archiveOrphanedWorkspaceTasks(t,s){return ct(this.workspaceBackend(),t,s)}async getActiveTaskCount(t){return kt(this.workspaceBackend(),t)}async updateWorkspaceTask(t,s,e){return dt(this.workspaceBackend(),t,s,e)}async addTokens(t,s,e,n){return pt(this.workspaceBackend(),t,s,e,n)}subtaskBackend(){return{read:this.read.bind(this),update:this.update.bind(this),publish:this.publishEvent.bind(this)}}async createSubtasks(t,s){return V(this.subtaskBackend(),t,s)}async completeSubtask(t,s){return G(this.subtaskBackend(),t,s)}async getCurrentSubtask(t){return Y(this.subtaskBackend(),t)}async getNextSubtask(t){return z(this.subtaskBackend(),t)}async getPreviousSubtask(t){return C(this.subtaskBackend(),t)}async getPreviousHandoff(t){return K(this.subtaskBackend(),t)}async getSubtasks(t){return X(this.subtaskBackend(),t)}async getSubtaskProgress(t){return Z(this.subtaskBackend(),t)}async hasSubtasks(t){return tt(this.subtaskBackend(),t)}async areAllSubtasksComplete(t){return st(this.subtaskBackend(),t)}async failSubtask(t,s){return et(this.subtaskBackend(),t,s)}async skipSubtask(t,s){return rt(this.subtaskBackend(),t,s)}async blockSubtask(t,s){return at(this.subtaskBackend(),t,s)}},Lt=new A;export{w as a,Lt as b};
|
|
@@ -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 o}from"./chunk-SO3ZPNWT.mjs";import{a as r}from"./chunk-3TRXQAU4.mjs";var c=new Set(["claude","codex","gemini","grok","cursor","opencode","pi","antigravity","kimi","unknown"]);function p(){let n=process.env.PRJCT_AGENT_RUNTIME?.trim().toLowerCase();return n&&c.has(n)?n:n?n.slice(0,32):process.env.CLAUDE_AGENT||process.env.ANTHROPIC_CLAUDE||process.env.CLAUDECODE?"claude":process.env.CODEX_SANDBOX||process.env.PRJCT_SANDBOX==="1"?"codex":process.env.GEMINI_CLI||process.env.GEMINI_API_KEY?"gemini":process.env.CURSOR_TRACE_ID||process.env.CURSOR_AGENT||process.env.CURSOR_SESSION_ID?"cursor":process.env.GROK_API_KEY||process.env.XAI_API_KEY||process.env.GROK_SESSION?"grok":process.env.OPENCODE||process.env.OPENCODE_SESSION||process.env.OPENCODE_CONFIG?"opencode":process.env.PI_CODING_AGENT_DIR||process.env.PI_SESSION||process.env.PI_AGENT?"pi":"unknown"}r(p,"detectRuntimeAgent");function u(n="session"){let e=p(),s=process.env.CLAUDE_SESSION_ID||process.env.CODEX_SESSION_ID||process.env.PRJCT_SESSION_ID||void 0,t=process.env.PRJCT_AGENT?.trim(),i=t&&t.length>0?t:o(`identity:${e}:${n}`);return{agent:e,identity:i,sessionId:s}}r(u,"resolveCallerIdentity");function d(n){let e=n.trim().toLowerCase();return e==="claude-code"||e==="anthropic"?"claude":e==="openai"||e==="oai"?"codex":e==="google"?"gemini":e==="xai"||e==="grok-build"?"grok":e==="opencode-ai"||e==="open-code"?"opencode":e==="pi-coding-agent"||e==="pi-agent"?"pi":e.slice(0,32)}r(d,"normalizeAgentName");function E(n,e){return n?!!(n.ownerSessionId&&e.sessionId&&n.ownerSessionId===e.sessionId||n.ownerIdentity&&e.identity&&n.ownerIdentity===e.identity):!1}r(E,"sameOwner");export{c as a,p as b,u as c,d,E 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 n,c as s,d as _}from"./chunk-3TRXQAU4.mjs";var N={};_(N,{MEMORY_EVENT_RANGE:()=>R,REMEMBER_ACTION_PREFIX:()=>e,REMEMBER_EVENT_PREFIX:()=>o,REMEMBER_EVENT_RANGE:()=>T,STATUS_CHANGE_ACTION:()=>M,TAG_EVENT_TYPE:()=>c});function r(t){return t.slice(0,-1)+String.fromCharCode(t.charCodeAt(t.length-1)+1)}var E,e,o,c,R,T,M,a=s(()=>{"use strict";E="memory.",e="remember.",o=`${E}${e}`,c=`${E}task.tagged`;n(r,"prefixUpperBound");R=[E,r(E)],T=[o,r(o)],M="status.changed"});export{e as a,o as b,c,R as d,T as e,M as f,N as g,a as h};
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { createRequire as __createRequire } from 'module';
|
|
2
|
+
import { fileURLToPath as __fileURLToPath } from 'url';
|
|
3
|
+
import { dirname as __pathDirname } from 'path';
|
|
4
|
+
const require = __createRequire(import.meta.url);
|
|
5
|
+
const __filename = __fileURLToPath(import.meta.url);
|
|
6
|
+
const __dirname = __pathDirname(__filename);
|
|
7
|
+
import{g as c,i as S}from"./chunk-DMO3ZFUG.mjs";import{a as m}from"./chunk-3TRXQAU4.mjs";S();var E=45,O=1,T=.4,R=2.5,h=-2.5,x=-.5,I=-1.3,p=864e5,N=["resolves","relates","supersedes","superseded-by","duplicates","spec"],C=["corrects","contradicts"],d=/\bmem[_-](\d+)\b/g;function w(n,r){let e=new Set;for(let t of N){let s=r[t];if(s)for(let o of String(s).matchAll(d))e.add(`mem_${o[1]}`)}for(let t of n.matchAll(d))e.add(`mem_${t[1]}`);for(let t of l(r))e.delete(t);return[...e]}m(w,"extractRefIds");function l(n){let r=new Set;for(let e of C){let t=n[e];if(t)for(let s of String(t).matchAll(d))r.add(`mem_${s[1]}`)}return[...r]}m(l,"extractCorrectionIds");function g(n,r,e,t,s){c.run(n,`INSERT INTO memory_usefulness (memory_id, score, ${t}, last_used_at)
|
|
8
|
+
VALUES (?, ?, 1, ?)
|
|
9
|
+
ON CONFLICT(memory_id) DO UPDATE SET
|
|
10
|
+
score = score + ?, ${t} = ${t} + 1, last_used_at = excluded.last_used_at`,r,e,s,e)}m(g,"bump");function f(n,r,e,t){c.run(n,`INSERT INTO memory_usefulness (memory_id, score, last_used_at)
|
|
11
|
+
VALUES (?, ?, ?)
|
|
12
|
+
ON CONFLICT(memory_id) DO UPDATE SET
|
|
13
|
+
score = score + ?, last_used_at = excluded.last_used_at`,r,e,t,e)}m(f,"addScore");var L={recordReferences(n,r,e,t=new Date().toISOString()){try{for(let s of w(r,e))g(n,s,O,"ref_count",t)}catch{}},recordCorrection(n,r,e=new Date().toISOString()){try{for(let t of l(r))f(n,t,h,e)}catch{}},recordFetch(n,r,e=new Date().toISOString()){try{g(n,r,T,"fetch_count",e)}catch{}},recordSurfaced(n,r,e,t=new Date().toISOString(),s={}){if(!(!e||r.length===0))try{let o=s.queryText?.trim()||null,u=s.surface?.trim()||null;for(let a of r)c.run(n,`INSERT INTO memory_surface_log (memory_id, task_id, created_at, query_text, surface)
|
|
14
|
+
VALUES (?, ?, ?, ?, ?)
|
|
15
|
+
ON CONFLICT(memory_id, task_id) DO UPDATE SET
|
|
16
|
+
query_text = COALESCE(memory_surface_log.query_text, excluded.query_text),
|
|
17
|
+
surface = COALESCE(memory_surface_log.surface, excluded.surface)`,a,e,t,o,u)}catch{}},penalizeSurfaced(n,r,e=new Date().toISOString()){if(!r)return 0;try{let t=c.query(n,"SELECT memory_id FROM memory_surface_log WHERE task_id = ?",r);for(let s of t)f(n,s.memory_id,x,e);return t.length}catch{return 0}},penalizeSkillMiss(n,r,e=new Date().toISOString()){try{f(n,r,I,e)}catch{}},creditShippedTask(n,r,e=new Date().toISOString()){if(!r)return 0;try{let t=c.query(n,"SELECT memory_id, query_text, surface FROM memory_surface_log WHERE task_id = ?",r);for(let s of t){f(n,s.memory_id,R,e);let o=s.query_text?.trim();o&&c.run(n,`INSERT OR IGNORE INTO retrieval_eval_labels
|
|
18
|
+
(query_text, positive_id, source, source_task_id, created_at, metadata)
|
|
19
|
+
VALUES (?, ?, ?, ?, ?, ?)`,o,s.memory_id,"ship-surfaced",r,e,JSON.stringify({surface:s.surface??"unknown"}))}return c.run(n,"DELETE FROM memory_surface_log WHERE task_id = ?",r),t.length}catch{return 0}},decayedScores(n,r=Date.now(),e){let t=new Map,s=(()=>{try{if(e&&e.length>0){let o=[...new Set(e)].slice(0,200),u=o.map(()=>"?").join(",");return c.query(n,`SELECT memory_id, score, last_used_at FROM memory_usefulness WHERE memory_id IN (${u})`,...o)}else return e&&e.length===0?[]:c.query(n,"SELECT memory_id, score, last_used_at FROM memory_usefulness")}catch{return null}})();if(!s)return t;for(let o of s){let u=Date.parse(o.last_used_at),a=Number.isNaN(u)?1:.5**(Math.max(0,r-u)/p/E);t.set(o.memory_id,o.score*a)}return t},rerank(n,r,e=Date.now()){if(r.length<2)return r;let t=(()=>{try{return this.decayedScores(n,e,r.map(i=>i.id))}catch{return null}})();if(!t||t.size===0)return r;let s=Math.max(1,...t.values()),o=4,u=r.length,a=r.map((i,_)=>{let y=(t.get(i.id)??0)/s;return{entry:i,i:_,rankScore:u-_+o*y}});return a.sort((i,_)=>_.rankScore-i.rankScore||i.i-_.i),a.map(i=>i.entry)}};export{w as a,l as b,L as c};
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { createRequire as __createRequire } from 'module';
|
|
2
|
+
import { fileURLToPath as __fileURLToPath } from 'url';
|
|
3
|
+
import { dirname as __pathDirname } from 'path';
|
|
4
|
+
const require = __createRequire(import.meta.url);
|
|
5
|
+
const __filename = __fileURLToPath(import.meta.url);
|
|
6
|
+
const __dirname = __pathDirname(__filename);
|
|
7
|
+
import{a as O}from"./chunk-JT4RNQ67.mjs";import{a as A}from"./chunk-VCSESVZ4.mjs";import{g as I}from"./chunk-YJOC2JJK.mjs";import{a as P,h as tt}from"./chunk-EZRNQXCC.mjs";import{a as h}from"./chunk-KUQLXY2P.mjs";import{b as R}from"./chunk-EHVU2SMR.mjs";import{b}from"./chunk-OIE3AKKO.mjs";import{a as w,c as x,d as S}from"./chunk-7QTE6X4J.mjs";import{c as E}from"./chunk-4PPIE6GA.mjs";import{a as m}from"./chunk-NXUIMC22.mjs";import{a as T,b as j,g as p,i as _}from"./chunk-DMO3ZFUG.mjs";import{d as N}from"./chunk-INJ5WT2D.mjs";import{e as D,l as Z}from"./chunk-HU5ERAAV.mjs";import{a as d}from"./chunk-3TRXQAU4.mjs";_();function g(e,t,n){return e[t]??e[n]??""}d(g,"str");var L={async upsert(e,t){let n=g(t,"id","id"),r=g(t,"entity_type","entityType"),s=g(t,"entity_id","entityId");if(!n||!r||!s||p.get(e,"SELECT id FROM archives WHERE entity_type = ? AND entity_id = ? LIMIT 1",r,s))return;let c=typeof t.entity_data=="string"?t.entity_data:t.entity_data!=null?JSON.stringify(t.entity_data):"{}",o=g(t,"archived_at","archivedAt")||g(t,"created_at","createdAt")||new Date().toISOString(),a=t.summary??null,u=g(t,"reason","reason")||"sync";try{p.run(e,`INSERT OR IGNORE INTO archives
|
|
8
|
+
(id, entity_type, entity_id, entity_data, summary, archived_at, reason)
|
|
9
|
+
VALUES (?, ?, ?, ?, ?, ?, ?)`,n,r,s,c,a,o,u)}catch{}},async delete(e,t){}};_();var C={async upsert(e,t){let n=t.name||"";if(!n)return;let r=t.description??null,s=et(t.metadata),i=new Date().toISOString(),c=p.get(e,"SELECT id, is_builtin FROM custom_workflows WHERE name = ?",n);if(c){if(c.is_builtin===1)return;p.run(e,"UPDATE custom_workflows SET description = ?, metadata = ?, updated_at = ? WHERE name = ? AND is_builtin = 0",r,s,i,n);return}p.run(e,`INSERT INTO custom_workflows (name, description, created_at, updated_at, is_builtin, enabled, metadata)
|
|
10
|
+
VALUES (?, ?, ?, ?, 0, 0, ?)`,n,r,t.created_at||i,i,s)},async delete(e,t){}};function et(e){if(e==null)return null;if(typeof e=="string")return e;try{return JSON.stringify(e)}catch{return null}}d(et,"serializeMetadata");var M={async upsert(e,t){let n=t.id||"";if(!n)return;let r=t.title||t.text||"";if(!r.trim())return;let s=t.priority||"medium",i=t.status||"active";await O.upsertIdea(e,{id:n,text:r,priority:s,status:i==="archived"?"archived":"pending",addedAt:t.created_at??t.addedAt??new Date().toISOString()})},async delete(e,t){}};j();tt();_();function nt(e){if(!e)return{};if(typeof e=="string")try{return JSON.parse(e)}catch{return{}}return typeof e=="object"?e:{}}d(nt,"asTags");function f(e,t,n){return e[t]??e[n]??""}d(f,"field");var W={async upsert(e,t){let n=f(t,"content","content"),r=f(t,"type","type");if(!n||!r)return;let s=nt(t.tags),i=f(t,"provenance","provenance")||"declared",c=t.source??null,o=T(n);if(p.get(e,"SELECT id FROM memory_entries WHERE content_hash = ? AND type = ? AND deleted_at IS NULL LIMIT 1",o,r))return;let u=t.created_at||t.createdAt||new Date().toISOString();p.appendEvent(e,`memory.${P}${r}`,{content:n,tags:s,source:c,provenance:i,content_hash:o,project_id:e,created_at:u})},async delete(e,t){let n=f(t,"id","id"),r=f(t,"content","content"),s=f(t,"type","type"),i=[];if(/^mem_\d+$/.test(n)&&i.push(n),r&&s){let o=T(r),a=p.query(e,"SELECT id FROM memory_entries WHERE content_hash = ? AND type = ? AND deleted_at IS NULL",o,s);i.push(...a.map(u=>u.id))}let c=[...new Set(i)];for(let o of c){let a=o.match(/^mem_(\d+)$/)?.[1];a&&p.run(e,"UPDATE events SET type = ? WHERE id = ?","memory.deleted.context-quality",Number(a)),p.run(e,"UPDATE memory_entries SET deleted_at = ? WHERE id = ?",Date.now(),o),p.run(e,"DELETE FROM memory_embeddings WHERE memory_id = ?",o)}}};var F={async upsert(e,t){let n=t.description||"";if(!n.trim())return;let r=t.id||"";if(!r){await h.addTask(e,{description:n,priority:t.priority||"medium",type:t.type||"feature",section:t.section||"backlog"});return}await h.upsertTask(e,{id:r,description:n,...t.priority?{priority:t.priority}:{},...t.type?{type:t.type}:{},...t.section?{section:t.section}:{}})},async delete(e,t){}};var k={async upsert(e,t){await A.addShipped(e,{name:t.name||t.title||"",version:t.version||"",description:t.description||""},t.created_at||t.shippedAt||t.shipped_at)},async delete(e,t){}};var U={async upsert(e,t){let n=t.id||"";n&&I.applyRemote(e,{id:n,title:t.title,status:t.status,content:t.content??{},tags:t.tags,created_at:t.created_at,updated_at:t.updated_at})},async delete(e,t){}};var $={async upsert(e,t){let n=t.id||"";if(!n)return;let r=t.status||"";if(r==="completed"||r==="shipped"){await R.update(e,s=>s.currentTask?.id===n?{...s,currentTask:null}:s);return}if(r==="active"||t.started_at||t.startedAt){await R.update(e,s=>({...s,currentTask:{id:n,description:t.description,startedAt:t.started_at||t.startedAt||new Date().toISOString(),sessionId:t.session_id||t.sessionId||""}}));return}(t.description||"").trim()&&await h.upsertTask(e,{id:n,description:t.description,...t.priority?{priority:t.priority}:{},...t.type?{type:t.type}:{}})},async delete(e,t){}};_();var q={async upsert(e,t){let n=Number(t.id);if(!Number.isSafeInteger(n)||n<=0)return;let r=-n;p.transaction(e,s=>{s.prepare(`INSERT INTO workflow_rules
|
|
11
|
+
(id, type, command, position, action, description, enabled, timeout_ms,
|
|
12
|
+
created_at, sort_order, when_expr, parallel, trust_source)
|
|
13
|
+
VALUES (?, ?, ?, ?, ?, ?, 0, ?, ?, ?, ?, ?, 'imported')
|
|
14
|
+
ON CONFLICT(id) DO UPDATE SET
|
|
15
|
+
type = excluded.type,
|
|
16
|
+
command = excluded.command,
|
|
17
|
+
position = excluded.position,
|
|
18
|
+
action = excluded.action,
|
|
19
|
+
description = excluded.description,
|
|
20
|
+
enabled = 0,
|
|
21
|
+
timeout_ms = excluded.timeout_ms,
|
|
22
|
+
sort_order = excluded.sort_order,
|
|
23
|
+
when_expr = excluded.when_expr,
|
|
24
|
+
parallel = excluded.parallel,
|
|
25
|
+
trust_source = 'imported'`).run(r,t.type||"step",t.command||"",t.position||"",t.action||"",t.description??null,typeof t.timeout_ms=="number"?t.timeout_ms:0,t.created_at||new Date().toISOString(),typeof t.sort_order=="number"?t.sort_order:0,t.when_expr??null,t.parallel===0?0:1),s.prepare("DELETE FROM workflow_rules WHERE id = ? AND trust_source = 'imported'").run(n)})},async delete(e,t){}};var v={memories:W,tasks:$,ideas:M,queue_tasks:F,shipped_items:k,shipped_features:k,custom_workflows:C,workflow_rules:q,specs:U,archives:L},Ut=Object.keys(v),Y=new Set(["roadmap_features","projects","sessions","agents","subtasks","metrics_daily","work_cost_snapshots","velocity_sprints","analysis"]);_();Z();function z(e,t,n){if(!t||!n)return null;try{return p.get(e,"SELECT content_hash, applied_at FROM sync_applied_hashes WHERE entity_type = ? AND entity_id = ?",t,n)?.content_hash??null}catch{return null}}d(z,"getApplied");function B(e,t,n,r,s){if(!(!t||!n||!r))try{p.run(e,`INSERT INTO sync_applied_hashes (entity_type, entity_id, content_hash, applied_at, created_at)
|
|
26
|
+
VALUES (?, ?, ?, ?, ?)
|
|
27
|
+
ON CONFLICT(entity_type, entity_id) DO UPDATE SET
|
|
28
|
+
content_hash = excluded.content_hash,
|
|
29
|
+
applied_at = excluded.applied_at,
|
|
30
|
+
created_at = COALESCE(excluded.created_at, sync_applied_hashes.created_at)`,t,n,r,D(),s??null)}catch{}}d(B,"recordApplied");function V(e,t,n){if(!(!t||!n))try{p.run(e,"DELETE FROM sync_applied_hashes WHERE entity_type = ? AND entity_id = ?",t,n)}catch{}}d(V,"clearApplied");var G=new Set;function rt(e){if(G.has(e))return;G.add(e);let n=Y.has(e)?"CLI does not track this entity locally yet \u2014 see Phase 2 spec":"no local handler registered";console.warn(`[sync] apply skipped: entity_type='${e}' (${n}). code=no_local_handler`)}d(rt,"warnNoLocalHandler");var J=new Set;function st(e){J.has(e)||(J.add(e),console.warn(`[sync] inbound '${e}' event has no created_at \u2014 origin chronology cannot be preserved. The producer should include created_at in its payload. code=missing_origin_created_at`))}d(st,"warnMissingCreatedAt");function it(e){let t=e.data??{},n=e.content_hash??e.contentHash;if(e.entity_type){let c=(e.event_type||"upsert")==="delete"?"delete":"upsert";return{entityType:e.entity_type,eventType:c,data:t,contentHash:n}}if(e.entityType){let c=e.eventType||"upsert";return{entityType:e.entityType,eventType:c==="delete"?"delete":"upsert",data:t,contentHash:n}}let[r,s]=(e.type||"").split("."),i=s==="deleted"||s==="archived"||s==="removed";return{entityType:w(r)||r||"unknown",eventType:i?"delete":"upsert",data:t,contentHash:n}}d(it,"normalizeEventShape");function K(e){return e instanceof Error?e.message:e&&typeof e=="object"&&"message"in e?String(e.message):"Unknown error"}d(K,"errorMessage");function X(e){if(e&&typeof e=="object"&&"code"in e)return e.code}d(X,"errorCode");var H=class{static{d(this,"SyncManager")}async hasAuth(){return await E.hasAuth()}async getStatus(t){if(!await this.hasAuth())return null;try{return await S.getStatus(t)}catch{return null}}async sync(t,n){if(!await this.hasAuth())return{success:!0,skipped:!0,reason:"no_auth"};let r={success:!0,skipped:!1};try{await A.republishShips(t)}catch{}let s=await this.push(t,n);s.success&&!s.skipped&&(r.pushed={count:s.count||0,syncedAt:s.syncedAt||new Date().toISOString()});let i=await this.pull(t);return i.success&&!i.skipped&&(r.pulled={count:i.count||0,syncedAt:i.syncedAt||new Date().toISOString()}),(!s.success||!i.success)&&(r.success=!1,r.error=s.error||i.error,r.code=s.code||i.code),r}async push(t,n){if(!await this.hasAuth())return{success:!0,skipped:!0,reason:"no_auth"};try{let r=await m.getPending(t),s=n?.include?r.filter(a=>{let u=w(a.entityType)??w(a.type?.split(".")[0]);return u?x(u,n.include):!0}):r;if(s.length===0)return{success:!0,skipped:!0,reason:"no_pending"};let i=await this.createProjectLinkEvent(t),c=i?[i,...s]:s,o=await S.pushEvents(t,c);if(o.success)return await m.clearPending(t),await m.updateLastSync(t),{success:!0,skipped:!1,count:o.processed,syncedAt:o.syncedAt};{let a=o.processed,u=o.errors.length,l=o.errors.map(y=>y.error).join(", ");return{success:!1,skipped:!1,count:a,syncedAt:o.syncedAt,error:`${u} events failed: ${l}`}}}catch(r){return{success:!1,skipped:!1,reason:"error",error:K(r),code:X(r)}}}async pull(t){if(!await this.hasAuth())return{success:!0,skipped:!0,reason:"no_auth"};try{let{syncCursorStorage:n}=await import("./sync-cursor-storage-GKO4X2QN.mjs"),r=await E.read(),s=r.deviceId??null,i=r.userId??null,o=(s?n.get(t,i,s):null)?.lastEventId??0,a=await S.pullEvents(t,o);if(a.events.length===0)return await m.updateLastSync(t),{success:!0,skipped:!1,count:0,applied:0,syncedAt:a.syncedAt};let u=await this.applyPulledEvents(t,a.events),l=a.events.flatMap(y=>[y.event_id,y.eventId]).filter(y=>typeof y=="number").reduce((y,Q)=>Math.max(y,Q),o);return s&&l>o&&n.advance(t,l,{userId:i,deviceId:s}),await m.updateLastSync(t),{success:!0,skipped:!1,count:a.events.length,applied:u,syncedAt:a.syncedAt}}catch(n){return{success:!1,skipped:!1,reason:"error",error:K(n),code:X(n)}}}async applyPulledEvents(t,n){let r=[];for(let s of n)try{await this.applyEvent(t,s),r.push(s)}catch(i){let c=s.entity_type||s.type||"unknown";console.error(`Failed to apply event ${c}:`,i)}return r.length}async applyRealtimeEvent(t,n){try{let r=await E.read(),s=r.deviceId??null,i=n.origin_device_id??n.originDeviceId;if(s&&i&&i===s)return!1;await this.applyEvent(t,n);let c=typeof n.event_id=="number"?n.event_id:typeof n.eventId=="number"?n.eventId:null;if(c!==null){let{syncCursorStorage:o}=await import("./sync-cursor-storage-GKO4X2QN.mjs"),a=r.userId??null,u=r.deviceId??null;if(u){let l=o.get(t,a,u);(!l||c>l.lastEventId)&&o.advance(t,c,{userId:a,deviceId:u})}}return!0}catch(r){return console.error("[realtime] apply failed:",r instanceof Error?r.message:r),!1}}async applyEvent(t,n){let{entityType:r,eventType:s,data:i,contentHash:c}=it(n),o=i.id??"",a=v[r];if(!a){rt(r);return}if(s==="delete"){await a.delete(t,i),o&&V(t,r,o);return}if(!(c&&this.alreadyApplied(t,r,o,c))&&(await a.upsert(t,i),o)){let u=i.created_at??i.createdAt??null;u||st(r);let l=c??N(i);B(t,r,o,l,u)}}alreadyApplied(t,n,r,s){if(!r)return!1;let i=z(t,n,r);return i!==null&&i===s}async createProjectLinkEvent(t){try{let n=await b(t).catch(()=>({}));return{type:"project.updated",path:["project"],data:{id:t,cli_project_id:t,meta:n},timestamp:new Date().toISOString(),projectId:t}}catch{return null}}},ot=new H,ee=ot;export{ee as a};
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { createRequire as __createRequire } from 'module';
|
|
2
|
+
import { fileURLToPath as __fileURLToPath } from 'url';
|
|
3
|
+
import { dirname as __pathDirname } from 'path';
|
|
4
|
+
const require = __createRequire(import.meta.url);
|
|
5
|
+
const __filename = __fileURLToPath(import.meta.url);
|
|
6
|
+
const __dirname = __pathDirname(__filename);
|
|
7
|
+
import{e as o,g as m}from"./chunk-2EEMQV7N.mjs";import{a as n,j as l}from"./chunk-KPR5TWSN.mjs";import{a as t,c as p}from"./chunk-3TRXQAU4.mjs";function s(){return`${["---","name: prjct","description: prjct work cycles + memory; run prjct verbs, do not preload context.","---","","# prjct","","Run `prjct <cmd> --md` and follow it.","",`- ${e.rag}`,`- ${e.entrypoint}`,`- ${e.pull}`,`- ${e.remember}`,`- ${e.kb}`,`- ${e.ship}`,`- ${e.loop}`,`- ${e.identity}`,"",`Commit footer: \`${i}\``].join(`
|
|
8
|
+
`)}
|
|
9
|
+
`}function c(r){return`${["<!-- prjct:start - DO NOT REMOVE THIS MARKER -->","# p/ \u2014 Context layer for AI agents","","Skills auto-activate for: work, intent, ship, sync, guard, remember, search, insights, performance","Other commands: run `prjct <command> --md` and follow CLI output","","Flow: known verbs run as `prjct <cmd> --md` (sync, search, remember, ship, guard, land, prime\u2026).",'`prjct work` is only for task/work cycles \u2014 never wrap a bare verb as work "sync".',"Substantive implementation follows the persisted work-cycle station from `prjct work --md`:","reviewed intent, evidence, tests when required, then code.","Sync analysis: prefer schema v1 JSON via `prjct analysis-save-llm` (markdown = thin notes only).","","Data:","- Persist everything (memories, context, intents) in ENGLISH, whatever language the user speaks",`- ${e.rag}`,`- ${e.entrypoint}`,`- ${e.pull}`,`- Sovereign knowledge base \u2014 ${e.kb}`,`- ${e.remember}`,`- ${e.loop}`,"- On close, save synthesized context; raw quotes, counters, detector rows, and transcript chunks are inputs, not final memory","- prjct remembers and shows the path; the agent decides how to execute with its own native tools","- Treat prjct output as signals, not a prescriptive harness",`- Commit footer: \`${i}\``,"- Path resolution: `.prjct/prjct.config.json` \u2192 `~/.prjct-cli/projects/{projectId}`","- Storage: `prjct` CLI (SQLite internally)","- Worktree hygiene: if working in a git worktree, remove it AFTER its PR merges \u2014 `git worktree remove` from the main worktree; never with uncommitted/unpushed work, never `--force`","",`Crew (opt-in via \`prjct crew install\`): Leader (blue) \xB7 Implementer (purple) \xB7 Reviewer (pink). Subagent dispatch is Claude-Code-only; in ${r}, identify the role you are playing explicitly.`,"","**Auto-managed by prjct-cli** | https://prjct.app","<!-- prjct:end - DO NOT REMOVE THIS MARKER -->"].join(`
|
|
10
|
+
`)}
|
|
11
|
+
`}function b(r){return`${["---",r,"---","",u,o,"","**Auto-managed by prjct-cli** | https://prjct.app",g].join(`
|
|
12
|
+
`)}
|
|
13
|
+
`}function S(r){return a[r]?.()??null}var d,i,u,g,e,h,y,w,j,R,a,O,f=p(()=>{"use strict";l();m();d=n.join("/"),i="Generated with [p/](https://www.prjct.app/)",u="<!-- prjct:start - DO NOT REMOVE THIS MARKER -->",g="<!-- prjct:end - DO NOT REMOVE THIS MARKER -->",e={rag:"prjct is a RAG-backed project memory harness; do not preload project history.",entrypoint:'Tasks \u2192 `prjct work "\u2026"`. Known cmds (`sync`/`search`/`remember`/\u2026) \u2192 `prjct <cmd>` \u2014 never work-wrap.',pull:"Pull only what surfaces: `prjct search` / `context memory` / `guard` / MCP \u2014 not something to load wholesale.",remember:'Save synthesized memory in English: `prjct remember <decision|learning|gotcha|context> "<text>"`.',kb:`KB (\`${d}\`): \`remember <facet>\` / \`context memory <facet>\` \u2014 on demand, never injected here.`,ship:"Ship only after user OKs: `prjct ship --md`.",loop:"Loop: land; H2+ intent; tip\u2192user SoT; close.",identity:"L0 portable; id=cwd."};t(s,"buildCompactSkill");h=s,y=s;t(c,"buildGlobalConfig");w=t(()=>c("Gemini"),"buildGeminiConfig"),j=t(()=>c("Antigravity"),"buildAntigravityConfig");t(b,"buildIdePointer");R=t(()=>b(`description: "prjct \u2014 pull project memory + workflow on demand"
|
|
14
|
+
alwaysApply: true`),"buildCursorRule"),a={"codex/SKILL.md":h,"antigravity/SKILL.md":y,"global/GEMINI.md":w,"global/ANTIGRAVITY.md":j,"global/CURSOR.mdc":R},O=Object.freeze(Object.keys(a));t(S,"buildEditorSurface")});export{s as a,S as b,f as c};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { createRequire as __createRequire } from 'module';
|
|
2
|
+
import { fileURLToPath as __fileURLToPath } from 'url';
|
|
3
|
+
import { dirname as __pathDirname } from 'path';
|
|
4
|
+
const require = __createRequire(import.meta.url);
|
|
5
|
+
const __filename = __fileURLToPath(import.meta.url);
|
|
6
|
+
const __dirname = __pathDirname(__filename);
|
|
7
|
+
import{a as k}from"./chunk-YOWW4LHK.mjs";import{a as I}from"./chunk-QWRPJARA.mjs";import{b as H}from"./chunk-XSZOHNL4.mjs";import{d as g,f as $}from"./chunk-YLYAYRSJ.mjs";import{e as x}from"./chunk-JPMUJY42.mjs";import{a as l}from"./chunk-3TRXQAU4.mjs";function E(e){let i=[{id:"claude-hooks",label:"Reinstall Claude hooks",needed:e.hooksExpected>0&&e.hooksInstalled<e.hooksExpected,reason:e.hooksInstalled<e.hooksExpected?`${e.hooksInstalled}/${e.hooksExpected} hooks missing`:"hooks complete"},{id:"multi-runtime-wire",label:"Wire detected multi-runtime adapters",needed:e.detectedCount>0&&(e.liveCount<e.detectedCount||e.organicPct<100),reason:e.detectedCount===0?"no runtimes detected":`organic ${e.liveCount}/${e.detectedCount} (${e.organicPct}%)`},{id:"agent-surfaces",label:"Refresh project AGENTS.md / adapters",needed:e.hasProject,reason:e.hasProject?"explicit surface refresh (clean-repo opt-in)":"no project \u2014 skip surfaces"},{id:"portable-skills",label:"Rewrite portable multi-host skills (clear project stamp)",needed:e.skillPoisoned===!0,reason:e.skillPoisoned===!0?"global skill has project identity (multi-project poison)":"skills portable"},{id:"organic-board",label:"Re-probe organic board",needed:!0,reason:"always re-probe after heal"}],s=i.filter(c=>c.needed).length,r=`Doctor heal plan: ${s}/${i.length} actions needed`;return{actions:i,neededCount:s,line:r}}l(E,"planDoctorHeal");async function B(e=process.cwd()){let i=[],s=[],r=[],{hooksInstalled:c,hooksExpected:y}=await $().then(t=>({hooksInstalled:t.installed,hooksExpected:t.expected})).catch(t=>(r.push(`hook status: ${t.message}`),{hooksInstalled:0,hooksExpected:0})),d=[await k(e).catch(()=>null)],S=await H.getProjectId(e).catch(()=>null),j=await(async()=>{try{let t=await import("node:fs/promises"),o=await import("node:path"),a=await import("node:os"),{skillBodyHasProjectStamp:n}=await import("./skill-generator-LKS5BNMY.mjs"),h=o.join(a.homedir(),".claude","skills","prjct","SKILL.md"),v=await t.readFile(h,"utf-8").catch(()=>null);return v?n(v):!1}catch{return!1}})(),u=d[0],w=E({hooksInstalled:c,hooksExpected:y,liveCount:u?.liveCount??0,detectedCount:u?.detectedCount??0,organicPct:u?.organicPct??0,hasProject:!!S,skillPoisoned:j}),p={value:null};async function f(){if(!p.value){let t=await x(e);p.value=t.filter(o=>o.detected).map(o=>o.runtime.id)}return p.value}l(f,"detectedIds");for(let t of w.actions){if(!t.needed&&t.id!=="organic-board"){s.push(t.id);continue}try{if(t.id==="claude-hooks")await g(),i.push(t.id);else if(t.id==="portable-skills"){let{skillGenerator:o}=await import("./skill-generator-LKS5BNMY.mjs");await o.generateAndInstall(),i.push(t.id)}else if(t.id==="multi-runtime-wire"){let o=await f();if(o.includes("codex")){let{ensureCodexMcpServer:a}=await import("./codex-mcp-G7WNAT6T.mjs"),{installCodexHooks:n}=await import("./codex-hooks-N5UHKK5B.mjs");await a(),await n()}if(o.includes("gemini")){let{installGeminiSettings:a}=await import("./gemini-settings-RGD7JLSP.mjs");await a()}if(o.includes("cursor")){let{installCursorHooks:a}=await import("./cursor-hooks-DGDJVAI6.mjs");await a()}if(o.includes("kimi-cli")){let{ensureKimiMcpServer:a}=await import("./kimi-mcp-ETG7O6O5.mjs"),{installKimiHooks:n}=await import("./kimi-hooks-TR6J3OVG.mjs");await a(),await n()}if(o.includes("grok")){let{ensureGrokMcpServer:a}=await import("./grok-mcp-IE2RRRRW.mjs"),{installGrokSkill:n}=await import("./grok-skill-7ZP7R7KO.mjs"),{installGrokPlugin:h}=await import("./grok-plugin-SSANHBS7.mjs");await a(),await n(),await h()}if(o.includes("opencode")){let{ensureOpenCodeMcpServer:a}=await import("./opencode-mcp-L7NC77JF.mjs");await a()}if(o.includes("pi")){let{installPiSkill:a}=await import("./pi-skill-IZQEUILZ.mjs");await a()}await g(),i.push(t.id)}else if(t.id==="agent-surfaces"){let o=await f();await I(e,{explicit:!0,agents:o}),i.push(t.id)}else t.id==="organic-board"&&(d.push(await k(e)),i.push(t.id))}catch(o){r.push(`${t.id}: ${o.message}`)}}let m=d.at(-1),b=m?.liveCount??0,C=m?.detectedCount??0,P=m?.organicPct??0,A=`Doctor heal: applied ${i.length} \xB7 skipped ${s.length} \xB7 errors ${r.length} \xB7 organic ${b}/${C} (${P}%)`;return{planned:w.neededCount,applied:i,skipped:s,errors:r,organicPct:P,liveCount:b,detectedCount:C,line:A}}l(B,"applyDoctorHeal");export{E as a,B as b};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { createRequire as __createRequire } from 'module';
|
|
2
|
+
import { fileURLToPath as __fileURLToPath } from 'url';
|
|
3
|
+
import { dirname as __pathDirname } from 'path';
|
|
4
|
+
const require = __createRequire(import.meta.url);
|
|
5
|
+
const __filename = __fileURLToPath(import.meta.url);
|
|
6
|
+
const __dirname = __pathDirname(__filename);
|
|
7
|
+
import{h as s}from"./chunk-ID2C2S33.mjs";import{e,g as p}from"./chunk-225DWS4D.mjs";import{a as n}from"./chunk-3TRXQAU4.mjs";p();function i(o,t,r){if(r.md){console.log(`> ${t}`);return}s[o](t)}n(i,"notify");var d=n((o,t={})=>i("warn",o,t),"notifyWarn"),a=n((o,t={})=>i("info",o,t),"notifyInfo"),f=n((o,t={})=>i("fail",o,t),"notifyFail"),u=n((o,t={})=>i("done",o,t),"notifyDone");function l(o,t={}){return d(o,t),{success:!1,error:o}}n(l,"failWith");function y(o,t={}){return f(o,t),{success:!1,error:o}}n(y,"failHard");function M(o,t){let r=e(o);return t&&f(r,t),{success:!1,error:r}}n(M,"failFromError");export{a,f as b,u as c,l as d,y as e,M as f};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { createRequire as __createRequire } from 'module';
|
|
2
|
+
import { fileURLToPath as __fileURLToPath } from 'url';
|
|
3
|
+
import { dirname as __pathDirname } from 'path';
|
|
4
|
+
const require = __createRequire(import.meta.url);
|
|
5
|
+
const __filename = __fileURLToPath(import.meta.url);
|
|
6
|
+
const __dirname = __pathDirname(__filename);
|
|
7
|
+
import{F as l,G as d}from"./chunk-HU5ERAAV.mjs";import{g as t,l as c,p as u}from"./chunk-HYIT7MF5.mjs";import{e as o,g as f}from"./chunk-225DWS4D.mjs";import{a}from"./chunk-3TRXQAU4.mjs";f();u();d();import n from"node:fs/promises";import m from"node:path";var s=class{static{a(this,"EditorsConfig")}get configDir(){return l.globalConfigDir}get configFile(){return m.join(this.configDir,"installed-editors.json")}async ensureConfigDir(){try{await n.mkdir(this.configDir,{recursive:!0})}catch(r){console.error("[editors-config] Error creating config directory:",o(r))}}async loadConfig(){try{let r=await n.readFile(this.configFile,"utf-8");return JSON.parse(r)}catch(r){return r.code==="ENOENT"||console.error("[editors-config] Error loading config:",o(r)),null}}async saveConfig(r,i,g="claude"){try{await this.ensureConfigDir();let e={version:r,provider:g,lastInstall:new Date().toISOString(),path:i};return await t(this.configFile,e),!0}catch(e){return console.error("[editors-config] Error saving config:",o(e)),!1}}async getProvider(){let r=await this.loadConfig();return r?r.provider||"claude":null}async getLastVersion(){let r=await this.loadConfig();return r?r.version:null}async hasVersionChanged(r){let i=await this.getLastVersion();return i!==null&&i!==r}async updateVersion(r){try{let i=await this.loadConfig();return i?(i.version=r,i.lastInstall=new Date().toISOString(),await t(this.configFile,i),!0):!1}catch(i){return!1}}async configExists(){return c(this.configFile)}async deleteConfig(){try{return await this.configExists()&&await n.unlink(this.configFile),!0}catch(r){return console.error("[editors-config] Error deleting config:",o(r)),!1}}},h=new s,C=h;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{d as f}from"./chunk-WTDUJB4I.mjs";import{a as o}from"./chunk-3TRXQAU4.mjs";import s from"node:fs";import g from"node:os";import a from"node:path";function y(r,t){return Array.from({length:Math.max(0,t-1)}).reduce(n=>{let i=n.at(-1),e=a.dirname(i);return e===i?n:[...n,e]},[r])}o(y,"ancestorDirectories");function C(){for(let n of y(__dirname,5))if(s.existsSync(a.join(n,"package.json"))){let i=a.join(n,"dist","daemon","entry.mjs");if(s.existsSync(i))return i;break}let r=[a.join(__dirname,"..","daemon","entry.mjs"),a.join(__dirname,"..","dist","daemon","entry.mjs")];for(let n of r)if(s.existsSync(n))return n;let t=process.argv[1];return t&&s.existsSync(t)?t:null}o(C,"resolveEntryPath");function _(r){return r.codeStale?{restart:!0,lastDriftCheckMs:r.lastDriftCheckMs}:r.ownVersion&&r.command!=="__ping"&&r.now-r.lastDriftCheckMs>=r.driftMinIntervalMs?{restart:r.checkDrift(r.ownVersion),lastDriftCheckMs:r.now}:{restart:!1,lastDriftCheckMs:r.lastDriftCheckMs}}o(_,"decideRestart");function N(r,t){if(!r||t===null)return!1;try{return s.statSync(r).mtimeMs!==t}catch{return!1}}o(N,"isCodeStale");function P(){for(let r of y(__dirname,6)){let t=a.join(r,"package.json");try{let n=JSON.parse(s.readFileSync(t,"utf-8"));if(n?.name==="prjct-cli"&&typeof n.version=="string")return n.version}catch{}}return null}o(P,"readOwnPackageVersion");function S(r,t){let n=o(l=>{let m=l.trim().replace(/^v/i,"").split("-")[0].split("+")[0].split(".").map(d=>Number.parseInt(d,10));return m.length<1||m.some(d=>Number.isNaN(d))?null:[...m,0,0].slice(0,3)},"parse"),i=n(r),e=n(t);if(!i||!e)return!1;let p=i.map((l,u)=>l-e[u]).find(l=>l!==0);return p!==void 0&&p>0}o(S,"isStrictlyNewerVersion");function v(r){if(!r)return!1;let t=g.homedir(),n=[`${t}/Library/pnpm/prjct`,`${t}/.local/share/pnpm/prjct`,`${t}/.npm-global/bin/prjct`,"/usr/local/bin/prjct","/opt/homebrew/bin/prjct",`${t}/.volta/bin/prjct`,`${t}/.asdf/shims/prjct`];for(let i of n){let e=(()=>{try{return s.realpathSync(i)}catch{return null}})();if(e)for(let p of y(a.dirname(e),6)){let l=a.join(p,"package.json");try{let u=JSON.parse(s.readFileSync(l,"utf-8"));if(u?.name==="prjct-cli"&&typeof u.version=="string")return S(u.version,r)}catch{}}}return!1}o(v,"isGlobalVersionDrifted");var k=1024*1024;function L(){let r=f.log();try{if(s.statSync(r).size>k){let n=`${r}.1`;try{s.unlinkSync(n)}catch{}s.renameSync(r,n)}}catch{}}o(L,"rotateLog");function h(r){try{return process.kill(r,0),!0}catch{return!1}}o(h,"isProcessRunning");import c from"node:fs";import b from"node:path";function x(r=f.runDir()){return b.join(r,"daemon.spawn.lock")}o(x,"spawnLockPath");function O(r=f.runDir(),t=process.pid){c.mkdirSync(r,{recursive:!0});let n=x(r);for(let i of[0,1])try{let e=c.openSync(n,"wx");try{c.writeFileSync(e,`${t}
|
|
8
|
+
`)}catch{try{c.closeSync(e)}catch{}try{c.unlinkSync(n)}catch{}return null}return{fd:e,path:n}}catch{let e=(()=>{try{return parseInt(c.readFileSync(n,"utf-8").trim(),10)}catch{return null}})();if(e&&!Number.isNaN(e)&&h(e))return null;try{c.unlinkSync(n)}catch{return null}}return null}o(O,"tryAcquireSpawnLock");function V(r){if(r){try{c.closeSync(r.fd)}catch{}try{if(c.existsSync(r.path)){let t=c.readFileSync(r.path,"utf-8").trim();(t===String(process.pid)||t===`${process.pid}`)&&c.unlinkSync(r.path)}}catch{}}}o(V,"releaseSpawnLock");function R(r){let t=r.errorCode??"",n=r.errorMessage,i=t==="EADDRINUSE"||n.includes("EADDRINUSE")||n.includes("address already in use")||n.includes("Failed to listen");return i&&r.peerHealthy?{exitCode:0,reason:"lost-spawn-race-peer-healthy"}:i?{exitCode:1,reason:"listen-failed-no-peer"}:{exitCode:1,reason:"listen-error"}}o(R,"decideListenFailure");export{C as a,_ as b,N as c,P as d,v as e,L as f,h as g,O as h,V as i,R 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 r}from"./chunk-3TRXQAU4.mjs";import e from"chalk";var s={ready:e.green("\u2713 ready"),installed:e.yellow("\u25CF installed"),detected:e.yellow("\u25CF detected")};function l(t,i,d="",n="\u25CB not installed"){let o=i==="missing"?e.dim(n):s[i];return` ${t.padEnd(14)}${o}${d}`}r(l,"providerStatusLine");function c(t){return`
|
|
8
|
+
${e.cyan("p/")} prjct v${t}
|
|
9
|
+
${e.dim("Context layer for AI coding agents")}
|
|
10
|
+
|
|
11
|
+
${e.dim("Providers:")}`}r(c,"providerStatusHeader");export{l as a,c as b};
|
|
@@ -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{b as u,c as a,d as w}from"./chunk-H2KNJUPN.mjs";import{b as k}from"./chunk-EHVU2SMR.mjs";import{e as h,p as T}from"./chunk-D62TAZG6.mjs";import{a as o}from"./chunk-3TRXQAU4.mjs";T();function f(t,n){let r=t===a?a:t.slice(0,6);return{shortId:r,label:`${r} \xB7 ${n??"(detached)"}`}}o(f,"labelFor");async function m(t,n,r){let i=r.filter(e=>e.worktreePath);if(i.length===0)return r;let c=await h(["worktree","list","--porcelain"],{cwd:n,timeoutMs:2e3});if(!c.ok)return r;let s=new Set(c.stdout.split(`
|
|
8
|
+
`).filter(e=>e.startsWith("worktree ")).map(e=>e.slice(9).trim())),p=i.filter(e=>!s.has(e.worktreePath));if(p.length===0)return r;let d=new Set(p.map(e=>e.workspaceId));return await k.archiveOrphanedWorkspaceTasks(t,d),r.filter(e=>!d.has(e.workspaceId))}o(m,"pruneOrphanedWorkspaceTasks");async function P(t,n){let r=await w(n),i=[],c=await k.getTaskSnapshot(t),s=c.currentTask;if(s){let{shortId:e,label:l}=f(a,s.branch);i.push({id:s.id,description:s.description,workspaceId:a,shortId:e,label:l,branch:s.branch,linearId:s.linearId,harness:s.harness,startedAt:s.startedAt,isCurrent:r.workspaceId===a,pipeline:u(t,s.id,a)??void 0})}let p=await m(t,n,c.activeTasks);for(let e of p){if(e.workspaceId===a)continue;let{shortId:l,label:g}=f(e.workspaceId,e.branch);i.push({id:e.id,description:e.description,workspaceId:e.workspaceId,shortId:l,label:g,branch:e.branch,linearId:e.linearId,harness:e.harness,startedAt:e.startedAt,isCurrent:r.workspaceId===e.workspaceId,pipeline:u(t,e.id,e.workspaceId)??void 0})}return i.sort((e,l)=>Number(l.isCurrent)-Number(e.isCurrent)),{current:i.find(e=>e.isCurrent)??null,all:i,mainTaskRaw:s}}o(P,"collectActiveTasks");function I(t){let n=t.isCurrent?"\u2192":" ",r=t.isCurrent?" (this worktree)":"";return`${n} ${t.label} ${t.description}${r}`}o(I,"formatActiveTaskLine");function W(t){if(t.all.length===0)return"No active work cycle.";if(t.all.length===1&&t.current){let r=t.current,i=r.pipeline?`
|
|
9
|
+
Pipeline: ${r.pipeline.station}`:"";return`Active: ${r.description}
|
|
10
|
+
Workspace: ${r.label}${i}`}let n=[`Active work cycles (${t.all.length})`];for(let r of t.all)n.push(I(r));return n.join(`
|
|
11
|
+
`)}o(W,"formatActiveTaskList");export{P as a,I as b,W as c};
|
|
@@ -0,0 +1,23 @@
|
|
|
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 d,i as C}from"./chunk-DMO3ZFUG.mjs";import{b as g}from"./chunk-INJ5WT2D.mjs";import{e as f,l as E}from"./chunk-HU5ERAAV.mjs";import{e as _,p as q}from"./chunk-D62TAZG6.mjs";import{a as s}from"./chunk-3TRXQAU4.mjs";E();C();function m(e){return{projectId:e.project_id,taskId:e.task_id,workspaceId:e.workspace_id,classification:e.classification,station:e.station,requiresSpec:e.requires_spec===1,requiresTestsFirst:e.requires_tests_first===1,reason:e.reason,linkedSpecId:e.linked_spec_id,createdAt:e.created_at,updatedAt:e.updated_at}}s(m,"toState");function y(e,t){let i=f(),r=d.query(e,`INSERT INTO task_pipeline_state (
|
|
8
|
+
project_id, task_id, workspace_id, classification, station,
|
|
9
|
+
requires_spec, requires_tests_first, reason, linked_spec_id,
|
|
10
|
+
created_at, updated_at
|
|
11
|
+
) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
12
|
+
ON CONFLICT(project_id, task_id, workspace_id) DO UPDATE SET
|
|
13
|
+
classification = excluded.classification,
|
|
14
|
+
station = excluded.station,
|
|
15
|
+
requires_spec = excluded.requires_spec,
|
|
16
|
+
requires_tests_first = excluded.requires_tests_first,
|
|
17
|
+
reason = excluded.reason,
|
|
18
|
+
linked_spec_id = excluded.linked_spec_id,
|
|
19
|
+
updated_at = excluded.updated_at
|
|
20
|
+
RETURNING *`,e,t.taskId,t.workspaceId,t.classification,t.station,t.requiresSpec?1:0,t.requiresTestsFirst?1:0,t.reason,t.linkedSpecId??null,i,i)[0];if(!r)throw new Error("Task pipeline state upsert returned no row");return m(r)}s(y,"upsertTaskPipelineState");function N(e,t,i){let r=d.query(e,`SELECT * FROM task_pipeline_state
|
|
21
|
+
WHERE project_id = ? AND task_id = ? AND workspace_id = ?
|
|
22
|
+
LIMIT 1`,e,t,i)[0];return r?m(r):null}s(N,"getTaskPipelineState");q();import A from"node:fs/promises";import T from"node:path";var a="main";async function I(e){try{return await A.realpath(e)}catch{return e}}s(I,"safeRealpath");function l(e,t){return`${e} \xB7 ${t??"(detached)"}`}s(l,"buildLabel");var P=new Map,D=5e3;async function U(e){let t=Date.now(),i=P.get(e);if(i&&t-i.at<D)return i.ctx;let n=await R(e);return P.set(e,{ctx:n,at:t}),n}s(U,"deriveWorkspace");async function R(e){let t=await _(["rev-parse","--show-toplevel","--git-dir","--git-common-dir","--abbrev-ref","HEAD"],{cwd:e});if(!t.ok){let b=await I(e);return{workspaceId:a,worktreePath:b,shortId:a,isMain:!0,label:l(a),...t.kind==="exit"?{}:{gitError:t.kind}}}let[i="",n="",r="",c=""]=t.stdout.trim().split(`
|
|
23
|
+
`),S=i.trim(),w=n.trim(),x=r.trim(),o=c.trim()&&c.trim()!=="HEAD"?c.trim():void 0,h=T.resolve(e,w)===T.resolve(e,x),p=await I(S||e);if(h)return{workspaceId:a,worktreePath:p,shortId:a,branch:o,isMain:!0,label:l(a,o)};let u=g(p),k=u.slice(0,6);return{workspaceId:u,worktreePath:p,shortId:k,branch:o,isMain:!1,label:l(k,o)}}s(R,"computeWorkspace");export{y as a,N as b,a as c,U 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{f as x}from"./chunk-2NI4EEK2.mjs";import{b as M}from"./chunk-2VRS5CUH.mjs";import{g as E}from"./chunk-BUD3R6LF.mjs";import{b as f}from"./chunk-B2HY22OD.mjs";import{a as q}from"./chunk-Q6C27OL7.mjs";import{a as c}from"./chunk-3TRXQAU4.mjs";var k=85,I=2;async function j(t,e,n={}){let o=n.threshold??k,d=n.maxIterations??I,i=await import("./retention-QSXWKE4H.mjs").then(({evaluateRetentionShared:s})=>s(e,Date.now()).byId).catch(()=>null),h=c(async(s,a,y,g)=>{if(s>=d||a.score>=o)return{...a,irrelevantRemoved:y,repairEntriesCreated:g};let r=f.allEntriesForIndex(e),m=r.filter(l=>{if(!C(l))return!1;let b=i?.get(l.id);return!(b&&b.verdict==="active"&&b.score>=70)}),u=L(r)?0:1;u>0&&await f.remember(t,{type:"context",content:D(r,a),tags:{context_schema:"living-v2",synthesis:"model-authored",feature:"context-quality-cleanup",key_data:`quality_score=${a.score}; threshold=${o}; irrelevant=${m.length}`,model:"prjct sync context-quality analyzer",token_usage:"0 deterministic sync tokens",source:"sync-context-quality"},provenance:"inferred",projectId:e});let p=[];for(let l of m)f.forget(e,l.id)&&(p.push(l.id),await q({projectId:e,entityType:"memories",entityId:l.id,eventType:"delete",data:{id:l.id,type:l.type,content:l.content,tags:l.tags,reason:"context-quality-cleanup"}}));let w={...R(e,o),iterations:s+1,irrelevantRemoved:y+p.length,repairEntriesCreated:g+u};return m.length===0&&u===0?w:h(s+1,w,y+p.length,g+u)},"repairIteration");return h(0,R(e,o),0,0)}c(j,"repairContextQuality");function R(t,e=k){let n=f.allEntriesForIndex(t),o=n.filter(r=>r.type==="context"),d=o.filter(v),i=o.filter(r=>!v(r)),h=n.filter(C),s=[],a=[];n.length>0&&d.length===0&&(a.push(35),s.push("missing living-v2 context synthesis")),h.length>0&&(a.push(Math.min(40,h.length*8)),s.push(`${h.length} irrelevant generated entries in active context`)),i.length>0&&(a.push(Math.min(20,i.length*5)),s.push(`${i.length} legacy context entries need cleanup`));let y=d[0];if(y){let r=x(y.content),u=[r.contextSynthesis,r.keyData,r.model,r.tokenUsage,r.nextImplication].filter(p=>!p).length;u>0&&(a.push(u*4),s.push("latest living context is missing structured UI/LLM fields"))}let g=Math.max(0,Math.min(100,100-a.reduce((r,m)=>r+m,0)));return{score:g,threshold:e,passed:g>=e,iterations:0,livingContextCount:d.length,legacyContextCount:i.length,irrelevantRemoved:0,repairEntriesCreated:0,issues:s}}c(R,"evaluateContextQuality");function C(t){return M(t)?!0:t.tags?.source==="sync-context-quality"||t.type!=="context"||v(t)?!1:$(t)}c(C,"isIrrelevantGeneratedContext");function v(t){if(t.tags?.context_schema==="living-v2")return!0;let e=x(t.content);return!!(e.contextSynthesis&&e.keyData)}c(v,"isLivingV2Context");function L(t){return t.some(e=>e.type==="context"&&v(e))}c(L,"hasUsableLivingContext");function $(t){let e=t.content.trim();if(e.length<260||/User pushback:|raw quote|transcript|hot file|skill-miss/i.test(e))return!0;let n=x(e);return[n.whatHappened,n.whyItMattered,n.pattern,n.antiPattern,n.outcome,n.nextImplication].filter(Boolean).length<3}c($,"isLowValueLegacyContext");function D(t,e){let n=t.filter(i=>!C(i)).filter(i=>["decision","gotcha","learning","context","shipped"].includes(i.type)).slice(0,8),o=n.length>0?n.map(i=>`${i.type}:${E(i)}`).join("; "):"No high-quality prior context survived cleanup.";return["Context synthesis: Sync repaired historical low-quality project context by removing generated telemetry and preserving the useful project knowledge as a living-v2 synthesis. Future agents should trust this synthesized layer over old raw detector rows or legacy context snippets.",`Key data: ${[`quality_score=${e.score}`,`threshold=${e.threshold}`,`legacy_context=${e.legacyContextCount}`,`issues=${e.issues.join("|")||"none"}`].join("; ")}`,"What happened: prjct sync detected that active context quality was below the required threshold and generated a replacement synthesis before deleting irrelevant generated entries.","Why it mattered: Existing users had accumulated low-signal context over time; leaving it active makes the second brain noisy for both the UI and LLM retrieval.","Who/author: prjct sync","Model: prjct sync context-quality analyzer","Token usage: 0 deterministic sync tokens","Sentiment: cleanup required because raw generated context had become product debt","Related files: generated from existing project memory during sync","Feature/domain: context-quality-cleanup","Pattern: Keep structured key data for UI representation and synthesized context for humans/LLMs.","Anti-pattern: Surfacing raw detector rows, hot-file counters, or short legacy snippets as durable project knowledge.","Decision/trap: Generated garbage is hard-deleted from active recall/vault/search; user-authored decisions, gotchas, learnings, and facts are preserved.",`Outcome: Repair synthesis created from surviving highlights: ${o}`,"Next implication: If quality remains below threshold, run full sync/analysis and inspect remaining user-authored entries manually instead of deleting them blindly."].join(" \xB7 ")}c(D,"buildRepairContext");export{j as a,C as b};
|
|
@@ -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}from"./chunk-3TRXQAU4.mjs";var s={critical:0,high:1,medium:2,low:3},c={active:0,previously_active:1,backlog:2};function u(e){return[...e].sort((t,r)=>{let i=c[t.section]-c[r.section];return i!==0?i:s[t.priority]-s[r.priority]})}o(u,"sortBySectionAndPriority");function a(e,t){let r=new Set;return e.filter(i=>{let n=t(i);return r.has(n)?!1:(r.add(n),!0)})}o(a,"uniqueBy");function y(e){return Array.from(e.entries()).map(([t,r])=>({path:t,score:r})).sort((t,r)=>r.score-t.score)}o(y,"scoresToSortedArray");export{u as a,a as b,y 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{e as n,i as p}from"./chunk-VWFVSNQT.mjs";p();import{z as e}from"zod";var c=e.enum(["low","medium","high","critical"]),t=e.enum(["feature","bug","improvement","chore"]),u=e.enum(["active","backlog","previously_active"]),l=e.enum(["H0","H1","H2","H3"]),m=e.enum(["bug","feature","refactor","docs","chore","security","research","unknown"]),d=e.enum(["low","medium","high"]),g=e.enum(["regression-test","focused-tests","docs-if-public-behavior","config-preservation","spec-or-design","edge-cases","scope-check"]),k=e.enum(["verify-before-done","scope-check","review-before-ship","spec-before-implementation"]),y=e.enum(["pending","in_progress","completed","blocked","paused","failed","skipped"]),o=e.object({title:e.string(),description:e.string(),filesChanged:e.array(e.object({path:e.string(),action:e.enum(["created","modified","deleted"])})),whatWasDone:e.array(e.string()).min(1),outputForNextAgent:e.string().min(1),notes:e.string().optional()}),I=e.object({output:e.string().min(1,"Subtask output is required"),summary:o}),S=e.object({id:e.string(),description:e.string(),domain:e.string(),agent:e.string(),status:y,dependsOn:e.array(e.string()),startedAt:e.string().optional(),completedAt:e.string().optional(),output:e.string().optional(),summary:o.optional(),skipReason:e.string().optional(),blockReason:e.string().optional(),estimatedPoints:e.number().optional(),estimatedMinutes:e.number().optional()}),f=e.object({completed:e.number(),total:e.number(),percentage:e.number()}),s=e.object({level:l,kind:m,risk:d,expectedEvidence:e.array(g),scopeHints:e.array(e.string()),gates:e.array(k),rationale:e.string(),createdAt:e.string()}),r=e.object({featureId:e.string().optional(),subtasks:e.array(S).optional(),currentSubtaskIndex:e.number().optional(),subtaskProgress:f.optional(),linearId:e.string().optional(),linearUuid:e.string().optional(),estimatedPoints:e.number().optional(),estimatedMinutes:e.number().optional(),modelMetadata:n.optional(),tokensIn:e.number().optional(),tokensOut:e.number().optional(),harness:s.optional()}),i=r.extend({id:e.string(),description:e.string(),type:t.optional(),startedAt:e.string(),sessionId:e.string(),linkedSpecId:e.string().optional(),parentDescription:e.string().optional(),branch:e.string().optional(),prUrl:e.string().optional(),turnCount:e.number().optional(),turnLimitAcknowledgedAt:e.string().optional(),ownerAgent:e.string().optional(),ownerIdentity:e.string().optional(),ownerSessionId:e.string().optional(),yieldStatus:e.enum(["active","yielded"]).optional(),pendingHandoffId:e.string().optional()}),a=r.extend({id:e.string(),description:e.string(),status:e.literal("paused"),startedAt:e.string(),pausedAt:e.string(),pauseReason:e.string().optional(),type:t.optional(),sessionId:e.string().optional()}),h=e.object({stackConfirmed:e.array(e.string()).optional(),patternsDiscovered:e.array(e.string()).optional(),agentAccuracy:e.array(e.object({agent:e.string(),rating:e.enum(["helpful","neutral","inaccurate"]),note:e.string().optional()})).optional(),issuesEncountered:e.array(e.string()).optional()}),b=e.object({taskId:e.string(),title:e.string(),classification:t,startedAt:e.string(),completedAt:e.string(),subtaskCount:e.number(),subtaskSummaries:e.array(o),outcome:e.string(),branchName:e.string(),linearId:e.string().optional(),linearUuid:e.string().optional(),prUrl:e.string().optional(),feedback:h.optional(),harness:s.optional(),tokensIn:e.number().optional(),tokensOut:e.number().optional()}),x=i.extend({workspaceId:e.string(),worktreePath:e.string().optional(),agentSessionId:e.string().optional(),jiraId:e.string().optional(),jiraUuid:e.string().optional(),dispatchedFrom:e.string().optional()}),j=e.object({currentTask:i.nullable(),previousTask:a.nullable().optional(),pausedTasks:e.array(a).optional(),taskHistory:e.array(b).optional(),activeTasks:e.array(x).optional(),lastUpdated:e.string()}),T=e.object({id:e.string(),description:e.string(),body:e.string().optional(),priority:c,type:t,featureId:e.string().optional(),originFeature:e.string().optional(),completed:e.boolean(),completedAt:e.string().optional(),createdAt:e.string(),section:u,agent:e.string().optional(),groupName:e.string().optional(),groupId:e.string().optional()}),A=e.object({tasks:e.array(T),lastUpdated:e.string()});export{I as a,j as b,A as c};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { createRequire as __createRequire } from 'module';
|
|
2
|
+
import { fileURLToPath as __fileURLToPath } from 'url';
|
|
3
|
+
import { dirname as __pathDirname } from 'path';
|
|
4
|
+
const require = __createRequire(import.meta.url);
|
|
5
|
+
const __filename = __fileURLToPath(import.meta.url);
|
|
6
|
+
const __dirname = __pathDirname(__filename);
|
|
7
|
+
import{b as A,e as ye}from"./chunk-6RT2P22O.mjs";import{a as Pe}from"./chunk-ZXTJLMVZ.mjs";import{f as y,g as D,h as V,i as fe}from"./chunk-VWFVSNQT.mjs";import{a as L,b as pe}from"./chunk-U24YKPYX.mjs";import{a as z,p as he}from"./chunk-D62TAZG6.mjs";import{a as J,b as m,c as W}from"./chunk-DOJPSIMG.mjs";import{g as K,l,m as F,n as h,p as b}from"./chunk-HYIT7MF5.mjs";import{a as i,c as P,d as de,e as I}from"./chunk-3TRXQAU4.mjs";function Ee(n){let e=n.getFullYear(),t=(n.getMonth()+1).toString().padStart(2,"0"),r=n.getDate().toString().padStart(2,"0");return`${e}-${t}-${r}`}function Y(n){return{year:n.getFullYear().toString(),month:(n.getMonth()+1).toString().padStart(2,"0"),day:n.getDate().toString().padStart(2,"0")}}function Ge(){return new Date().toISOString()}function De(n){let e=new Date;return e.setDate(e.getDate()-n),e}function He(n){return De(n).toISOString()}function _e(n){return typeof n=="number"&&Number.isFinite(n)&&n>0?n:null}function $e(n,e){if(!n||!e)return null;let t=Date.parse(n),r=Date.parse(e);return!Number.isFinite(t)||!Number.isFinite(r)||r<t?null:Math.round((r-t)/6e4)}function Be(n){let e=Math.floor(n/1e3),t=Math.floor(e/60),r=Math.floor(t/60),o=Math.floor(r/24);return o>0?`${o}d ${r%24}h`:r>0?`${r}h ${t%60}m`:t>0?`${t}m`:`${e}s`}function Ue(n){let t=(n??"7d").trim().toLowerCase().match(/^(\d+)\s*([hd])$/);if(!t)return null;let r=Number.parseInt(t[1],10);return!Number.isFinite(r)||r<=0||r>365?null:{n:r,unit:t[2]}}var Oe,q=P(()=>{"use strict";i(Ee,"formatDate");i(Y,"getYearMonthDay");i(Ge,"getTimestamp");i(De,"getDaysAgo");i(He,"sinceIso");i(_e,"nullableNumber");i($e,"durationMinutes");i(Be,"formatDuration");Oe=new Intl.RelativeTimeFormat("en",{numeric:"always"});i(Ue,"parseWindowSpec")});import je from"node:fs";import v from"node:fs/promises";import u from"node:path";async function N(n){let e={isMonorepo:!1,type:null,rootPath:n,packages:[]},t=[{file:"pnpm-workspace.yaml",type:"pnpm"},{file:"lerna.json",type:"lerna"},{file:"nx.json",type:"nx"},{file:"rush.json",type:"rush"},{file:"turbo.json",type:"turborepo"}];for(let r of t)if(await l(u.join(n,r.file))){e.isMonorepo=!0,e.type=r.type;break}if(!e.isMonorepo){let r=u.join(n,"package.json");if(await l(r))try{JSON.parse(await v.readFile(r,"utf-8")).workspaces&&(e.isMonorepo=!0,e.type="npm")}catch{}}return e.isMonorepo&&(e.packages=await R(n,e.type)),e}async function R(n,e){let t=[];try{let r=await(async()=>{if(e==="pnpm"){let g=(await v.readFile(u.join(n,"pnpm-workspace.yaml"),"utf-8")).match(/packages:\s*\n((?:\s*-\s*.+\n?)+)/);return g?g[1].split(`
|
|
8
|
+
`).map(c=>c.replace(/^\s*-\s*['"]?|['"]?\s*$/g,"")).filter(Boolean):[]}if(e==="npm"||e==="lerna"){let a=u.join(n,"package.json"),g=JSON.parse(await v.readFile(a,"utf-8")),c=Array.isArray(g.workspaces)?g.workspaces:g.workspaces?.packages??[];if(e==="lerna"){let d=u.join(n,"lerna.json");if(await l(d)){let p=JSON.parse(await v.readFile(d,"utf-8"));if(p.packages)return p.packages}}return c}if(e==="nx")return["apps/*","libs/*","packages/*"];if(e==="turborepo"){let a=JSON.parse(await v.readFile(u.join(n,"package.json"),"utf-8"));return Array.isArray(a.workspaces)?a.workspaces:[]}return[]})(),o=r.length>0?r:["packages/*","apps/*","libs/*"];for(let a of o){if(a.startsWith("!"))continue;let g=xe(a,{cwd:n});for(let c of g){let d=u.join(n,c),p=u.join(d,"package.json");if(await l(p))try{let f=JSON.parse(await v.readFile(p,"utf-8")),j=u.join(d,"PRJCT.md");t.push({name:f.name||u.basename(c),path:d,relativePath:c,hasPrjctMd:await l(j)})}catch{}}}}catch{}return t}async function Q(n,e){if(!e.isMonorepo)return null;let t=u.resolve(n);for(let r of e.packages){let o=u.resolve(r.path);if(t.startsWith(o))return r}return null}async function T(n){let e=u.resolve(n),t=u.parse(e).root;return e===t?null:(await N(e)).isMonorepo?e:T(u.dirname(e))}var xe,X=P(()=>{"use strict";b();xe=je.globSync;i(N,"detectMonorepo");i(R,"discoverMonorepoPackages");i(Q,"findContainingPackage");i(T,"findMonorepoRoot")});var S={};de(S,{ClaudeProvider:()=>C,CursorProvider:()=>re,GeminiProvider:()=>H,Providers:()=>w,detectAllProviders:()=>B,detectAntigravity:()=>Me,detectCodex:()=>oe,detectKimi:()=>Ie,detectProvider:()=>G,getActiveProvider:()=>Se,getProviderBranding:()=>ke,selectProvider:()=>Fe,validateCliVersion:()=>ie});import E from"node:path";async function $(n){let e=await A(n);return e||(process.platform==="win32"?A(`${n}.cmd`):null)}async function Ce(n){try{let{stdout:e}=await z(`${n} --version`,{timeout:2e3}),t=e.match(/\d+\.\d+\.\d+/);return t?t[0]:e.trim()}catch{return null}}async function G(n){let e=w[n];if(!e.cliCommand)return{installed:!1};let t=await $(e.cliCommand);if(!t)return{installed:!1};let r=await Ce(e.cliCommand),o=ie(n,r||void 0);return{installed:!0,version:r||void 0,path:t,versionWarning:o||void 0}}function ie(n,e){let t=w[n];return!t.minCliVersion||!e?null:V(e,t.minCliVersion)<0?`\u26A0\uFE0F ${t.displayName} v${e} is below minimum v${t.minCliVersion}. Some features may not work correctly.`:null}async function B(n=!1){if(!n){let g=await Z();if(g)return g}let[e,t,r]=await Promise.all([G("claude"),G("gemini"),oe()]),o={installed:r.installed},a={claude:e,gemini:t,codex:o};return await ee(a).catch(()=>{}),a}async function Se(n){if(n&&w[n])return w[n];let e=await B(),t=[e.claude.installed?"claude":null,e.gemini.installed?"gemini":null,e.codex.installed?"codex":null].filter(Boolean);return t.length===1?w[t[0]]:e.claude.installed?C:e.gemini.installed?H:e.codex.installed?_:C}function ke(n){return{commitFooter:"Generated with [p/](https://www.prjct.app/)",signature:{claude:"\u26A1 prjct + Claude",gemini:"\u26A1 prjct + Gemini",cursor:"\u26A1 prjct + Cursor",antigravity:"\u26A1 prjct + Antigravity",codex:"\u26A1 prjct + Codex"}[n]||"\u26A1 prjct"}}async function Me(){let n=ne.configDir;if(!n)return{installed:!1,skillInstalled:!1};let e=E.join(n,"skills","prjct","SKILL.md"),[t,r]=await Promise.all([l(n),l(e)]);return{installed:t,skillInstalled:r,configPath:t?n:void 0}}async function oe(){let n=_.configDir;if(!n)return{installed:!1,skillInstalled:!1};let e=await $("codex"),t=E.join(n,"skills","prjct","SKILL.md"),r=await l(t),o=!!e||await l(E.join(n,"auth.json"));return{installed:o,skillInstalled:r,configPath:o?n:void 0}}async function Ie(){let n=m(".kimi-code"),e=m(".kimi"),[t,r,o]=await Promise.all([$("kimi"),l(n),l(e)]),a=!!t||r||o;return{installed:a,configPath:a?r||!o?n:e:void 0}}async function Fe(){let n=await B();return{provider:n.claude.installed?"claude":n.gemini.installed?"gemini":n.codex.installed?"codex":"claude",detection:n}}var C,H,ne,re,_,w,k=P(()=>{Pe();fe();he();b();te();ye();W();C={name:"claude",displayName:"Claude Code",cliCommand:"claude",get configDir(){return m(".claude")},contextFile:"CLAUDE.md",get skillsDir(){return m(".claude","skills")},commandsDir:".claude/commands",commandFormat:"md",settingsFile:"settings.json",projectSettingsFile:"settings.local.json",ignoreFile:".claudeignore",websiteUrl:"https://www.anthropic.com/claude",docsUrl:"https://docs.anthropic.com/claude-code",get defaultModel(){return D(this.name)},get supportedModels(){return y(this.name)},minCliVersion:"1.0.0"},H={name:"gemini",displayName:"Gemini CLI",cliCommand:"gemini",get configDir(){return m(".gemini")},contextFile:"GEMINI.md",get skillsDir(){return m(".gemini","skills")},commandsDir:".gemini/commands",commandFormat:"toml",settingsFile:"settings.json",projectSettingsFile:"settings.json",ignoreFile:".geminiignore",websiteUrl:"https://geminicli.com",docsUrl:"https://geminicli.com/docs",get defaultModel(){return D(this.name)},get supportedModels(){return y(this.name)},minCliVersion:"1.0.0"},ne={name:"antigravity",displayName:"Google Antigravity",cliCommand:null,get configDir(){return m(".gemini","antigravity")},contextFile:"ANTIGRAVITY.md",get skillsDir(){return m(".gemini","antigravity","global_skills")},commandsDir:".agent/skills",commandFormat:"md",settingsFile:"mcp_config.json",projectSettingsFile:null,ignoreFile:".agentignore",websiteUrl:"https://gemini.google.com/app/antigravity",docsUrl:"https://gemini.google.com/app/antigravity",get defaultModel(){return D(this.name)},get supportedModels(){return y(this.name)},minCliVersion:null},re={name:"cursor",displayName:"Cursor IDE",cliCommand:null,configDir:null,contextFile:"prjct.mdc",skillsDir:null,commandsDir:".cursor/commands",rulesDir:".cursor/rules",commandFormat:"md",settingsFile:null,projectSettingsFile:null,ignoreFile:".cursorignore",isProjectLevel:!0,websiteUrl:"https://cursor.com",docsUrl:"https://cursor.com/docs",get defaultModel(){return D(this.name)},get supportedModels(){return y(this.name)},minCliVersion:null},_={name:"codex",displayName:"OpenAI Codex",cliCommand:"codex",get configDir(){return m(".codex")},contextFile:"AGENTS.md",get skillsDir(){return m(".codex","skills")},commandsDir:".agents/skills",commandFormat:"md",settingsFile:null,projectSettingsFile:null,ignoreFile:".codexignore",websiteUrl:"https://openai.com/codex",docsUrl:"https://github.com/openai/codex",get defaultModel(){return D(this.name)},get supportedModels(){return y(this.name)},minCliVersion:null},w={claude:C,gemini:H,cursor:re,antigravity:ne,codex:_};i($,"whichCommand");i(Ce,"getCliVersion");i(G,"detectProvider");i(ie,"validateCliVersion");i(B,"detectAllProviders");i(Se,"getActiveProvider");i(ke,"getProviderBranding");i(Me,"detectAntigravity");i(oe,"detectCodex");i(Ie,"detectKimi");i(Fe,"selectProvider")});import Ae from"node:crypto";import M from"node:fs/promises";import s from"node:path";var O,Ne,se,ae=P(()=>{q();b();pe();X();W();O=class{static{i(this,"PathManager")}globalBaseDir;globalConfigDir;constructor(){this.globalBaseDir=L(),this.globalConfigDir=s.join(this.globalBaseDir,"config")}get globalProjectsDir(){let e=process.env.PRJCT_PROJECTS_DIR;return e?s.resolve(e):s.join(this.globalBaseDir,"projects")}setGlobalBaseDir(e){this.globalBaseDir=s.resolve(e),this.globalConfigDir=s.join(this.globalBaseDir,"config")}generateProjectId(e){return Ae.randomUUID()}getGlobalBasePath(){return this.globalBaseDir}getGlobalProjectPath(e){return s.join(this.globalProjectsDir,e)}getLocalConfigPath(e){return s.join(e,".prjct","prjct.config.json")}getGlobalProjectConfigPath(e){return s.join(this.getGlobalProjectPath(e),"project.json")}getLegacyPrjctPath(e){return s.join(e,".prjct")}async hasLegacyStructure(e){return await F(this.getLegacyPrjctPath(e))}async hasConfig(e){return await l(this.getLocalConfigPath(e))}async ensureGlobalStructure(){await h(this.globalBaseDir),await h(this.globalProjectsDir),await h(this.globalConfigDir)}async ensureProjectStructure(e){await this.ensureGlobalStructure();let t=this.getGlobalProjectPath(e),r=["analysis","memory"];for(let o of r)await h(s.join(t,o));return await h(s.join(t,"sessions")),t}getSessionPath(e,t=new Date){let{year:r,month:o,day:a}=Y(t);return s.join(this.getGlobalProjectPath(e),"sessions",r,o,a)}getCurrentSessionPath(e){return this.getSessionPath(e,new Date)}async ensureSessionPath(e,t=new Date){let r=this.getSessionPath(e,t);return await h(r),r}async listSessions(e,t=null,r=null){let o=s.join(this.getGlobalProjectPath(e),"sessions"),a=[];try{let g=await M.readdir(o,{withFileTypes:!0});for(let c of g){if(!c.isDirectory()||t&&c.name!==t.toString())continue;let d=s.join(o,c.name),p=await M.readdir(d,{withFileTypes:!0});for(let f of p){if(!f.isDirectory()||r&&f.name!==r.toString().padStart(2,"0"))continue;let j=s.join(d,f.name),me=await M.readdir(j,{withFileTypes:!0});for(let x of me)x.isDirectory()&&a.push({year:c.name,month:f.name,day:x.name,path:s.join(j,x.name),date:new Date(`${c.name}-${f.name}-${x.name}`)})}}return a.sort((c,d)=>d.date.getTime()-c.date.getTime()),a}catch{return[]}}async getSessionsInRange(e,t,r=new Date){return(await this.listSessions(e)).filter(a=>a.date>=t&&a.date<=r)}getFilePath(e,t,r){return s.join(this.getGlobalProjectPath(e),t,r)}async listProjects(){try{return await this.ensureGlobalStructure(),(await M.readdir(this.globalProjectsDir,{withFileTypes:!0})).filter(t=>t.isDirectory()).map(t=>t.name)}catch{return[]}}async projectExists(e){return await F(this.getGlobalProjectPath(e))}getDisplayPath(e){let t=J();return e.startsWith(t)?e.replace(t,"~"):e}getAuthConfigPath(){return s.join(this.globalConfigDir,"auth.json")}getSyncPendingPath(e){return s.join(this.getGlobalProjectPath(e),"sync","pending.json")}getLastSyncPath(e){return s.join(this.getGlobalProjectPath(e),"sync","last-sync.json")}getRunningStatusPath(){return s.join(this.globalBaseDir,".running")}getCachePath(){return s.join(this.globalBaseDir,"cache")}getStatePath(){return s.join(this.globalBaseDir,"state")}getStatusLinePath(){return s.join(this.globalBaseDir,"statusline")}async getAgentDir(){return(await(k(),I(S)).getActiveProvider()).configDir}async getAgentSettingsPath(){let e=await(k(),I(S)).getActiveProvider();return(k(),I(S)).getGlobalSettingsPath(e.name)}getClaudeDir(){return m(".claude")}getClaudeSettingsPath(){return s.join(this.getClaudeDir(),"settings.json")}getStoragePath(e,t){return s.join(this.getGlobalProjectPath(e),"storage",t)}getContextPath(e){return s.join(this.getGlobalProjectPath(e),"context")}async detectMonorepo(e){return N(e)}async discoverMonorepoPackages(e,t){return R(e,t)}async findContainingPackage(e,t){return Q(e,t)}async findMonorepoRoot(e){return T(e)}},Ne=new O,se=Ne});function le(n,e){let t=typeof n=="string"?new Date(n).getTime():n;return Date.now()-t>e}var ce,ue=P(()=>{"use strict";i(le,"isExpired");ce=class{static{i(this,"TTLCache")}cache=new Map;ttl;maxSize;constructor(e={}){this.ttl=e.ttl??5e3,this.maxSize=e.maxSize??50}isValid(e){let t=this.cache.get(e);return t?Date.now()-t.timestamp<this.ttl:!1}get(e){let t=this.cache.get(e);return t?this.isValid(e)?t.data:(this.cache.delete(e),null):null}set(e,t){this.cache.set(e,{data:t,timestamp:Date.now()}),this.evictOldEntries()}delete(e){this.cache.delete(e)}clear(){this.cache.clear()}has(e){return this.cache.has(e)}get size(){return this.cache.size}evictOldEntries(){if(this.cache.size<=this.maxSize)return;let t=Array.from(this.cache.entries()).sort((r,o)=>r[1].timestamp-o[1].timestamp).slice(0,this.cache.size-this.maxSize);for(let[r]of t)this.cache.delete(r)}stats(){return{size:this.cache.size,maxSize:this.maxSize,ttl:this.ttl}}prune(){let e=[...this.cache.keys()].filter(t=>!this.isValid(t));for(let t of e)this.cache.delete(t);return e.length}}});import ge from"node:fs/promises";import Re from"node:path";async function Z(){try{let n=await ge.readFile(U(),"utf-8"),e=JSON.parse(n);return!e.timestamp||!e.detection||!e.detection.claude||!e.detection.gemini||!e.detection.codex||le(e.timestamp,Te)?null:e.detection}catch{return null}}async function ee(n){let e={timestamp:new Date().toISOString(),detection:n};await K(U(),e)}async function Dt(){try{await ge.unlink(U())}catch{}}var U,Te,te=P(()=>{ae();ue();b();U=i(()=>Re.join(se.getCachePath(),"providers.json"),"cacheFile"),Te=600*1e3;i(Z,"readProviderCache");i(ee,"writeProviderCache");i(Dt,"invalidateProviderCache")});export{le as a,ce as b,ue as c,Ee as d,Ge as e,De as f,He as g,_e as h,$e as i,Be as j,Ue as k,q as l,Z as m,ee as n,Dt as o,te as p,C as q,H as r,re as s,w as t,G as u,ie as v,B as w,Se as x,ke as y,Me as z,oe as A,Ie as B,Fe as C,S as D,k as E,se as F,ae 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{b as a}from"./chunk-5ZBACKED.mjs";import{b as c,g as i,h as p}from"./chunk-DW4QMD6J.mjs";import{b as o,c as k}from"./chunk-DOJPSIMG.mjs";import{a as e}from"./chunk-3TRXQAU4.mjs";k();import m from"node:fs/promises";import j from"node:path";var f="# prjct:mcp:start - managed by prjct, do not edit between markers",M="# prjct:mcp:end";function u(){return process.env.PRJCT_TEST_MODE==="1"?j.join(o(".prjct-tests"),"grok","config.toml"):o(".grok","config.toml")}e(u,"getGrokConfigTomlPath");async function h(t=u(),r=c.prjct){let n=await m.readFile(t,"utf-8").catch(()=>""),l=a(r),s=i(n,l,f,M,"prjct"),g=s.next,d=s.skipped;return{...await p(t,n,g),skipped:d}}e(h,"ensureGrokMcpServer");async function v(t=u()){try{let r=await m.readFile(t,"utf-8");return/^\s*\[mcp_servers\.prjct\]/m.test(r)||r.includes(f)}catch{return!1}}e(v,"grokHasPrjctMcpServer");export{u as a,h as b,v as c};
|