prjct-cli 3.95.0 → 3.96.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 +5 -0
- package/dist/bin/hook-chunks/{agent-identity-45BYQBU2.mjs → agent-identity-DH6DX72X.mjs} +1 -1
- package/dist/bin/hook-chunks/{agent-switch-4ZJJWKMD.mjs → agent-switch-I4MTVE56.mjs} +1 -1
- package/dist/bin/hook-chunks/{analysis-UGHAG2SK.mjs → analysis-VN7APBHR.mjs} +3 -3
- package/dist/bin/hook-chunks/{auto-flush-CXWTU3RF.mjs → auto-flush-DX3FVSQE.mjs} +1 -1
- package/dist/bin/hook-chunks/{capture-gate-PS6QUXLX.mjs → capture-gate-MEIQD7ZS.mjs} +1 -1
- package/dist/bin/hook-chunks/{chunk-YDBZO6I3.mjs → chunk-22GFTUER.mjs} +1 -1
- package/dist/bin/hook-chunks/{chunk-OGIFB3OE.mjs → chunk-33BHU4OM.mjs} +1 -1
- package/dist/bin/hook-chunks/{chunk-QL3NYJTW.mjs → chunk-3AHW4XQH.mjs} +1 -1
- package/dist/bin/hook-chunks/{chunk-DCSKTMDX.mjs → chunk-3CKNJ5RA.mjs} +1 -1
- package/dist/bin/hook-chunks/{chunk-ABJNOG2I.mjs → chunk-3FEXJUO2.mjs} +1 -1
- package/dist/bin/hook-chunks/{chunk-22AXWLI6.mjs → chunk-3HGQPUKG.mjs} +1 -1
- package/dist/bin/hook-chunks/{chunk-EWOK4VE7.mjs → chunk-3UB6SFRA.mjs} +1 -1
- package/dist/bin/hook-chunks/{chunk-OUAVSD47.mjs → chunk-64ZEBHDX.mjs} +1 -1
- package/dist/bin/hook-chunks/{chunk-X5W2UYQK.mjs → chunk-7PBWIO4K.mjs} +3 -3
- package/dist/bin/hook-chunks/{chunk-QP5USCDX.mjs → chunk-7WO5CEH3.mjs} +1 -1
- package/dist/bin/hook-chunks/{chunk-N3L77UNM.mjs → chunk-ADYTBOCZ.mjs} +1 -1
- package/dist/bin/hook-chunks/{chunk-RTEEXGEA.mjs → chunk-AORD3YDQ.mjs} +1 -1
- package/dist/bin/hook-chunks/{chunk-Z6KVLCMK.mjs → chunk-BKJHD5JI.mjs} +1 -1
- package/dist/bin/hook-chunks/{chunk-4NTVXJD7.mjs → chunk-BVK7ZDLX.mjs} +1 -1
- package/dist/bin/hook-chunks/{chunk-IGHY4FGS.mjs → chunk-CPR4FPXG.mjs} +1 -1
- package/dist/bin/hook-chunks/{chunk-XXRAQZNC.mjs → chunk-D7DQABWO.mjs} +1 -1
- package/dist/bin/hook-chunks/{chunk-5H3KJWQS.mjs → chunk-DB226JIV.mjs} +2 -2
- package/dist/bin/hook-chunks/{chunk-ZFLIVOFX.mjs → chunk-DCHIPMOG.mjs} +1 -1
- package/dist/bin/hook-chunks/{chunk-U4OON3S7.mjs → chunk-E7NA34VQ.mjs} +1 -1
- package/dist/bin/hook-chunks/{chunk-PTA7DMLM.mjs → chunk-EGCYDLSO.mjs} +1 -1
- package/dist/bin/hook-chunks/{chunk-PP6DANGV.mjs → chunk-EI6VQZOX.mjs} +1 -1
- package/dist/bin/hook-chunks/{chunk-5XA5RL5I.mjs → chunk-ETTDRXQ6.mjs} +1 -1
- package/dist/bin/hook-chunks/{chunk-FW4MEPTB.mjs → chunk-EXVL2OFE.mjs} +1 -1
- package/dist/bin/hook-chunks/{chunk-I26F7TLM.mjs → chunk-FZS3XGEA.mjs} +1 -1
- package/dist/bin/hook-chunks/{chunk-IWJG7CZX.mjs → chunk-GSPDJSJ5.mjs} +1 -1
- package/dist/bin/hook-chunks/{chunk-S5N2ZZDL.mjs → chunk-H2DGDAQP.mjs} +1 -1
- package/dist/bin/hook-chunks/chunk-H5AVBDCH.mjs +8 -0
- package/dist/bin/hook-chunks/{chunk-HEDZA6KC.mjs → chunk-HGZQWYBL.mjs} +1 -1
- package/dist/bin/hook-chunks/{chunk-GCDLPKOH.mjs → chunk-IJ523YO2.mjs} +1 -1
- package/dist/bin/hook-chunks/{chunk-6GAFRIUQ.mjs → chunk-IWUF2LGO.mjs} +1 -1
- package/dist/bin/hook-chunks/{chunk-Z4X7JIAP.mjs → chunk-JGZ3QGWX.mjs} +3 -3
- package/dist/bin/hook-chunks/{chunk-ROA2AJXY.mjs → chunk-JZDZH6IV.mjs} +1 -1
- package/dist/bin/hook-chunks/{chunk-BOBFTVAY.mjs → chunk-KDNUQPAK.mjs} +1 -1
- package/dist/bin/hook-chunks/chunk-KV4NXLPT.mjs +11 -0
- package/dist/bin/hook-chunks/{chunk-WGWE3CSC.mjs → chunk-LF3S3MYE.mjs} +1 -1
- package/dist/bin/hook-chunks/chunk-LQLCYBFF.mjs +36 -0
- package/dist/bin/hook-chunks/{chunk-S5ISOGDB.mjs → chunk-LR24AIEW.mjs} +1 -1
- package/dist/bin/hook-chunks/{chunk-FXFG6PV6.mjs → chunk-M4YM7Z3F.mjs} +15 -15
- package/dist/bin/hook-chunks/{chunk-S6L3FECF.mjs → chunk-MW54MTLB.mjs} +1 -1
- package/dist/bin/hook-chunks/{chunk-J5UQVJUW.mjs → chunk-NCLONKOT.mjs} +1 -1
- package/dist/bin/hook-chunks/{chunk-QBYHZX33.mjs → chunk-NJ74RHNC.mjs} +1 -1
- package/dist/bin/hook-chunks/{chunk-GDESYWTD.mjs → chunk-NLL5AV2G.mjs} +2 -2
- package/dist/bin/hook-chunks/{chunk-GLPKMG5A.mjs → chunk-OLQAMCYV.mjs} +10 -10
- package/dist/bin/hook-chunks/{chunk-KSSRINDX.mjs → chunk-PPWPUEBH.mjs} +1 -1
- package/dist/bin/hook-chunks/chunk-PVCEWFHS.mjs +51 -0
- package/dist/bin/hook-chunks/{chunk-PGWFGRX4.mjs → chunk-QOQZHR3E.mjs} +1 -1
- package/dist/bin/hook-chunks/{chunk-2UC4DTDO.mjs → chunk-QXCEBAIA.mjs} +1 -1
- package/dist/bin/hook-chunks/chunk-RT2DFIWF.mjs +19 -0
- package/dist/bin/hook-chunks/{chunk-BDOAQVIF.mjs → chunk-SQW2B7NW.mjs} +1 -1
- package/dist/bin/hook-chunks/{chunk-NLKPAJND.mjs → chunk-SWJ7TLBD.mjs} +1 -1
- package/dist/bin/hook-chunks/{chunk-GDECEHO5.mjs → chunk-TB57OYGW.mjs} +1 -1
- package/dist/bin/hook-chunks/{chunk-4HAKTI36.mjs → chunk-TF6PN7IB.mjs} +1 -1
- package/dist/bin/hook-chunks/{chunk-UHVYBU7F.mjs → chunk-TKXOMN4K.mjs} +4 -4
- package/dist/bin/hook-chunks/{chunk-G7QQZMAO.mjs → chunk-UMJ5D5I6.mjs} +1 -1
- package/dist/bin/hook-chunks/{chunk-UYQC63MC.mjs → chunk-UVATSTRF.mjs} +1 -1
- package/dist/bin/hook-chunks/{chunk-BX7VKYA7.mjs → chunk-WJV24WE6.mjs} +1 -1
- package/dist/bin/hook-chunks/{chunk-76GDLA3Z.mjs → chunk-WL6PKX3U.mjs} +1 -1
- package/dist/bin/hook-chunks/chunk-WUOVBBPC.mjs +11 -0
- package/dist/bin/hook-chunks/{chunk-T6ELTQZM.mjs → chunk-XSJ7SPVR.mjs} +1 -1
- package/dist/bin/hook-chunks/{chunk-DVDZA63F.mjs → chunk-XV2LJVYB.mjs} +1 -1
- package/dist/bin/hook-chunks/{chunk-C4O243NG.mjs → chunk-XYKVWO23.mjs} +1 -1
- package/dist/bin/hook-chunks/{chunk-MHNWIB7B.mjs → chunk-Y3RHBU2R.mjs} +2 -2
- package/dist/bin/hook-chunks/{chunk-RHKF7EJW.mjs → chunk-Y7MZA2G4.mjs} +1 -1
- package/dist/bin/hook-chunks/{chunk-ZOX6OV6X.mjs → chunk-YHOZTAZH.mjs} +1 -1
- package/dist/bin/hook-chunks/chunk-YLOK4WRR.mjs +8 -0
- package/dist/bin/hook-chunks/{chunk-3WQBTXUC.mjs → chunk-ZJW27EUC.mjs} +1 -1
- package/dist/bin/hook-chunks/{chunk-J5UVRZ44.mjs → chunk-ZQI4TJ5C.mjs} +3 -3
- package/dist/bin/hook-chunks/chunk-ZYCNW75E.mjs +9 -0
- package/dist/bin/hook-chunks/{chunk-PO3QDKTE.mjs → chunk-ZZBNFNMG.mjs} +1 -1
- package/dist/bin/hook-chunks/{client-CRXA774S.mjs → client-K3ZA2BLB.mjs} +1 -1
- package/dist/bin/hook-chunks/{code-graph-cloud-GTSLO7CD.mjs → code-graph-cloud-XGQF7XYC.mjs} +1 -1
- package/dist/bin/hook-chunks/{codex-skill-NUBNPSMF.mjs → codex-skill-6CRFUF3A.mjs} +1 -1
- package/dist/bin/hook-chunks/{command-installer-UHSXC3UG.mjs → command-installer-MUHZWDZA.mjs} +1 -1
- package/dist/bin/hook-chunks/{config-manager-DX5OOPW5.mjs → config-manager-2JJPCLKC.mjs} +1 -1
- package/dist/bin/hook-chunks/{context7-service-GDJ3QICX.mjs → context7-service-NH4BMGSJ.mjs} +1 -1
- package/dist/bin/hook-chunks/{custom-workflow-storage-FD47DPA3.mjs → custom-workflow-storage-VBMWLKA7.mjs} +1 -1
- package/dist/bin/hook-chunks/cwd-changed-UTD6Y4MS.mjs +8 -0
- package/dist/bin/hook-chunks/{database-ZUC7OEZG.mjs → database-ZCP76LMM.mjs} +1 -1
- package/dist/bin/hook-chunks/{detect-changes-OJUBWWTU.mjs → detect-changes-5W6EGEZG.mjs} +1 -1
- package/dist/bin/hook-chunks/{developer-evolution-WNSTHDAA.mjs → developer-evolution-UTY3CWOK.mjs} +1 -1
- package/dist/bin/hook-chunks/{distill-GOGPFQFK.mjs → distill-5TNAM3LY.mjs} +1 -1
- package/dist/bin/hook-chunks/{enriched-recall-QF22RIK7.mjs → enriched-recall-6VOIUNLN.mjs} +1 -1
- package/dist/bin/hook-chunks/{format-J3X3R225.mjs → format-IIOFTSBF.mjs} +1 -1
- package/dist/bin/hook-chunks/{judgment-ledger-storage-FE4HXTHM.mjs → judgment-ledger-storage-7Q7AEEY6.mjs} +1 -1
- package/dist/bin/hook-chunks/{judgment-orchestrator-YDJTKNV2.mjs → judgment-orchestrator-AAON4ZJ4.mjs} +1 -1
- package/dist/bin/hook-chunks/{judgment-receipt-7A2DXVJA.mjs → judgment-receipt-QLV3MYFT.mjs} +1 -1
- package/dist/bin/hook-chunks/{land-cue-SZWJH6XP.mjs → land-cue-57B23PEL.mjs} +1 -1
- package/dist/bin/hook-chunks/{land-synthesis-JLYUBKHR.mjs → land-synthesis-ZVPFJERV.mjs} +1 -1
- package/dist/bin/hook-chunks/{legacy-crew-sweep-JXYO62UE.mjs → legacy-crew-sweep-GR6HRSHX.mjs} +2 -2
- package/dist/bin/hook-chunks/{memory-index-CIYDXN2G.mjs → memory-index-XE2MWKQS.mjs} +1 -1
- package/dist/bin/hook-chunks/{notification-UA7RTVHG.mjs → notification-GU2ZJP5K.mjs} +1 -1
- package/dist/bin/hook-chunks/{pack-integrity-GZC5NGFN.mjs → pack-integrity-WV5U3AFF.mjs} +1 -1
- package/dist/bin/hook-chunks/{pack-manager-AF5F7PRT.mjs → pack-manager-QLFQKP24.mjs} +1 -1
- package/dist/bin/hook-chunks/{planning-M3RAOZVB.mjs → planning-VPAX5DZL.mjs} +2 -2
- package/dist/bin/hook-chunks/{post-edit-QRDYPZLZ.mjs → post-edit-UXCFSR3Y.mjs} +1 -1
- package/dist/bin/hook-chunks/{pre-bash-TWWFVNQ7.mjs → pre-bash-MB4JNNYG.mjs} +1 -1
- package/dist/bin/hook-chunks/{pre-commit-PTFF7JIN.mjs → pre-commit-U7TRFKWX.mjs} +1 -1
- package/dist/bin/hook-chunks/pre-edit-MDCQXI5F.mjs +11 -0
- package/dist/bin/hook-chunks/{pre-package-325ALZKD.mjs → pre-package-A6ZI5R64.mjs} +1 -1
- package/dist/bin/hook-chunks/{pre-search-GOHVFAFH.mjs → pre-search-ZZO3LGXJ.mjs} +1 -1
- package/dist/bin/hook-chunks/{pre-secrets-MYNM5KI4.mjs → pre-secrets-MWPPZPWK.mjs} +1 -1
- package/dist/bin/hook-chunks/{prjct-md-RCB6FWD6.mjs → prjct-md-MS52YLI2.mjs} +1 -1
- package/dist/bin/hook-chunks/{project-agent-surfaces-V4P5RTUR.mjs → project-agent-surfaces-6AIW7KL6.mjs} +1 -1
- package/dist/bin/hook-chunks/{project-file-inventory-OKIP4LBO.mjs → project-file-inventory-HHURZTMH.mjs} +1 -1
- package/dist/bin/hook-chunks/project-memory-UDH56VFP.mjs +8 -0
- package/dist/bin/hook-chunks/{project-style-evolution-RPGATIYJ.mjs → project-style-evolution-IJXT2MCP.mjs} +1 -1
- package/dist/bin/hook-chunks/prompt-7VZLYONO.mjs +24 -0
- package/dist/bin/hook-chunks/{publish-helper-SX7HEV2L.mjs → publish-helper-ZSL27HSX.mjs} +1 -1
- package/dist/bin/hook-chunks/{purge-XKHUAB4H.mjs → purge-N2WN6NDB.mjs} +1 -1
- package/dist/bin/hook-chunks/retention-RET4P2RO.mjs +8 -0
- package/dist/bin/hook-chunks/{sdd-6PF7MBAY.mjs → sdd-PB6WKSLE.mjs} +1 -1
- package/dist/bin/hook-chunks/{session-continuity-UEXQDGZE.mjs → session-continuity-BIJXMN44.mjs} +1 -1
- package/dist/bin/hook-chunks/session-start-R2VMKW2L.mjs +8 -0
- package/dist/bin/hook-chunks/settings-installer-CQKMGMRG.mjs +9 -0
- package/dist/bin/hook-chunks/{setup-ZOHG6MGF.mjs → setup-PPIZHVXS.mjs} +3 -3
- package/dist/bin/hook-chunks/{shipping-QVGTOO6U.mjs → shipping-C637PCOF.mjs} +4 -4
- package/dist/bin/hook-chunks/{skill-index-FGDQVYHM.mjs → skill-index-55I3HLAI.mjs} +1 -1
- package/dist/bin/hook-chunks/{spec-context-inference-6Z52BT37.mjs → spec-context-inference-RTTDOZZO.mjs} +1 -1
- package/dist/bin/hook-chunks/{spec-service-UAQ5AEXQ.mjs → spec-service-ENLAAMVL.mjs} +2 -2
- package/dist/bin/hook-chunks/{spec-task-breakdown-LAXGVLMY.mjs → spec-task-breakdown-RUDEP3AY.mjs} +1 -1
- package/dist/bin/hook-chunks/{state-storage-XU35ZYNA.mjs → state-storage-AJUPG7J5.mjs} +1 -1
- package/dist/bin/hook-chunks/stop-DPXAWJFN.mjs +16 -0
- package/dist/bin/hook-chunks/subagent-start-AFHPXL2S.mjs +8 -0
- package/dist/bin/hook-chunks/{subagent-stop-OUG4PR7S.mjs → subagent-stop-5BMV63ML.mjs} +1 -1
- package/dist/bin/hook-chunks/{surface-attribution-A6GCGRFM.mjs → surface-attribution-EGIKCVMF.mjs} +1 -1
- package/dist/bin/hook-chunks/{symbol-graph-DMPBNBX7.mjs → symbol-graph-MH42JSPX.mjs} +1 -1
- package/dist/bin/hook-chunks/{sync-cursor-storage-VVLA3L2U.mjs → sync-cursor-storage-ZB7FGT6D.mjs} +1 -1
- package/dist/bin/hook-chunks/{task-orchestration-HFZYWYLR.mjs → task-orchestration-7NGRIISS.mjs} +1 -1
- package/dist/bin/hook-chunks/{task-overview-PCUZWL5Q.mjs → task-overview-F3GB77OA.mjs} +1 -1
- package/dist/bin/hook-chunks/task-service-FZABHPFV.mjs +8 -0
- package/dist/bin/hook-chunks/{tdd-QZL4OSM7.mjs → tdd-TAMBOPN3.mjs} +1 -1
- package/dist/bin/hook-chunks/{template-loader-SKXILJLJ.mjs → template-loader-MXOMU4XH.mjs} +1 -1
- package/dist/bin/hook-chunks/{usefulness-SZLG6LVC.mjs → usefulness-TBD5EYAL.mjs} +1 -1
- package/dist/bin/hook-chunks/{vault-retire-notice-HOXPURNQ.mjs → vault-retire-notice-7XHVNHU6.mjs} +1 -1
- package/dist/bin/hook-chunks/{velocity-storage-5J6BAMCW.mjs → velocity-storage-IOCVK2LU.mjs} +1 -1
- package/dist/bin/hook-chunks/{weak-model-mode-ZRNKFTFF.mjs → weak-model-mode-BMSPGEQY.mjs} +1 -1
- package/dist/bin/hook-chunks/{work-graph-PGYHFLEL.mjs → work-graph-AVAOKY63.mjs} +1 -1
- package/dist/bin/hook-chunks/{work-scope-FIB6LBKE.mjs → work-scope-YCS4GTXW.mjs} +1 -1
- package/dist/bin/hook-chunks/{workspace-occupancy-3D4OKQRB.mjs → workspace-occupancy-JOBYNNXV.mjs} +1 -1
- package/dist/bin/hook-fast-darwin-arm64 +0 -0
- package/dist/bin/hook-fast-darwin-x64 +0 -0
- package/dist/bin/hook-fast-linux-x64 +0 -0
- package/dist/bin/prjct-core.mjs +724 -712
- package/dist/bin/prjct-hooks.mjs +3 -3
- package/dist/bin/prjct.mjs +21 -8
- package/dist/daemon/entry.mjs +617 -603
- package/dist/mcp/server.mjs +315 -301
- package/package.json +3 -5
- package/scripts/install.sh +28 -496
- package/dist/bin/hook-chunks/chunk-4KXXDQYI.mjs +0 -11
- package/dist/bin/hook-chunks/chunk-BU22R6JX.mjs +0 -9
- package/dist/bin/hook-chunks/chunk-CYZ7ST2P.mjs +0 -36
- package/dist/bin/hook-chunks/chunk-GPZP7NXL.mjs +0 -11
- package/dist/bin/hook-chunks/chunk-KHLYWNHT.mjs +0 -8
- package/dist/bin/hook-chunks/chunk-TRMBRDKH.mjs +0 -8
- package/dist/bin/hook-chunks/chunk-TXSLON7M.mjs +0 -19
- package/dist/bin/hook-chunks/chunk-V2FR2NPL.mjs +0 -43
- package/dist/bin/hook-chunks/cwd-changed-EP3UIRK6.mjs +0 -8
- package/dist/bin/hook-chunks/pre-edit-PMMWDR2B.mjs +0 -11
- package/dist/bin/hook-chunks/project-memory-JK2MXRJB.mjs +0 -8
- package/dist/bin/hook-chunks/prompt-DOENKHLQ.mjs +0 -24
- package/dist/bin/hook-chunks/retention-C3NQT65W.mjs +0 -8
- package/dist/bin/hook-chunks/session-start-B4P7L33E.mjs +0 -8
- package/dist/bin/hook-chunks/settings-installer-QDM3GB6J.mjs +0 -9
- package/dist/bin/hook-chunks/stop-CFB2H3XC.mjs +0 -16
- package/dist/bin/hook-chunks/subagent-start-KFAZZUHS.mjs +0 -8
- package/dist/bin/hook-chunks/task-service-PXCDU55T.mjs +0 -8
package/dist/bin/prjct-hooks.mjs
CHANGED
|
@@ -5,6 +5,6 @@ import { dirname as __pathDirname } from 'path';
|
|
|
5
5
|
const require = __createRequire(import.meta.url);
|
|
6
6
|
const __filename = __fileURLToPath(import.meta.url);
|
|
7
7
|
const __dirname = __pathDirname(__filename);
|
|
8
|
-
import{d as p}from"./hook-chunks/chunk-
|
|
9
|
-
`),process.exit(0));let i=
|
|
10
|
-
`),process.exit(0)}}o(
|
|
8
|
+
import{d as p}from"./hook-chunks/chunk-JGZ3QGWX.mjs";import{a as d}from"./hook-chunks/chunk-QXCEBAIA.mjs";import"./hook-chunks/chunk-GAOQHD5S.mjs";import"./hook-chunks/chunk-WUHGODSQ.mjs";import{a as o}from"./hook-chunks/chunk-E66B27AL.mjs";import{spawn as R}from"node:child_process";var u={"session-start":{load:o(()=>import("./hook-chunks/session-start-R2VMKW2L.mjs"),"load"),exportName:"runSessionStartHook"},prompt:{load:o(()=>import("./hook-chunks/prompt-7VZLYONO.mjs"),"load"),exportName:"runPromptHook"},"pre-bash":{load:o(()=>import("./hook-chunks/pre-bash-MB4JNNYG.mjs"),"load"),exportName:"runPreBashHook"},"pre-commit":{load:o(()=>import("./hook-chunks/pre-commit-U7TRFKWX.mjs"),"load"),exportName:"runPreCommitHook"},"pre-secrets":{load:o(()=>import("./hook-chunks/pre-secrets-MWPPZPWK.mjs"),"load"),exportName:"runPreSecretsHook"},"pre-package":{load:o(()=>import("./hook-chunks/pre-package-A6ZI5R64.mjs"),"load"),exportName:"runPrePackageHook"},"pre-edit":{load:o(()=>import("./hook-chunks/pre-edit-MDCQXI5F.mjs"),"load"),exportName:"runPreEditHook"},"pre-search":{load:o(()=>import("./hook-chunks/pre-search-ZZO3LGXJ.mjs"),"load"),exportName:"runPreSearchHook"},"post-edit":{load:o(()=>import("./hook-chunks/post-edit-UXCFSR3Y.mjs"),"load"),exportName:"runPostEditHook"},stop:{load:o(()=>import("./hook-chunks/stop-DPXAWJFN.mjs"),"load"),exportName:"runStopHook"},"subagent-start":{load:o(()=>import("./hook-chunks/subagent-start-AFHPXL2S.mjs"),"load"),exportName:"runSubagentStartHook"},"subagent-stop":{load:o(()=>import("./hook-chunks/subagent-stop-5BMV63ML.mjs"),"load"),exportName:"runSubagentStopHook"},notification:{load:o(()=>import("./hook-chunks/notification-GU2ZJP5K.mjs"),"load"),exportName:"runNotificationHook"},"cwd-changed":{load:o(()=>import("./hook-chunks/cwd-changed-UTD6Y4MS.mjs"),"load"),exportName:"runCwdChangedHook"}},f=new Map;async function H(t){let n=f.get(t);if(n)return n;let r=u[t];if(!r)return;let i=(await r.load())[r.exportName];if(typeof i=="function")return f.set(t,i),i}o(H,"resolveRunner");var S=Object.fromEntries(Object.keys(u).map(t=>[t,async(n,r)=>{let e=await H(t);if(!e)throw new Error(`Hook runner missing export for '${t}'`);return e(n,r)}]));function m(t){return t&&u[t]?S[t]:void 0}o(m,"getHookRunner");import c from"node:fs";import x from"node:path";var w=3e4;function y(t){return Buffer.from(t,"utf-8").reduce((r,e)=>Math.imul(r^e,16777619)>>>0,2166136261).toString(16).padStart(8,"0")}o(y,"fnv1a32hex");function N(t){return t.toLowerCase().replace(/[^a-z0-9-]/g,"")}o(N,"sanitizeSubcommand");function P(t,n){let r=N(n);return r?x.join(d(),`hook-stdin-${y(t)}-${r}.json`):null}o(P,"hookStdinSpillPath");function l(t,n){let r=P(t,n);if(!r)return null;try{let e=c.statSync(r);if(Date.now()-e.mtimeMs>w)return c.unlinkSync(r),null;let i=c.readFileSync(r,"utf-8");return c.unlinkSync(r),i}catch{return null}}o(l,"consumeHookStdinSpill");var g="PRJCT_HOOK_AFTER_EMIT";function E(t,n){let r=n?l(process.cwd(),n):null;return r!==null?r:p(t).toString("utf-8")}o(E,"readStdinSync");function _(t,n){let r=process.argv[1];if(!r||!t)return!1;try{let e=R(process.execPath,[r,"hook",t],{detached:!0,stdio:["pipe","ignore","ignore"],cwd:process.cwd(),env:{...process.env,[g]:"1",PRJCT_NO_DAEMON:"1"},shell:!1});return e.stdin?.write(n),e.stdin?.end(),e.unref(),!0}catch{return!1}}o(_,"trySpawnAfterEmitWorker");async function O(){let n=process.argv.slice(2)[1],r=process.env[g]==="1";try{let e=m(n);e||(r||process.stdout.write(`{}
|
|
9
|
+
`),process.exit(0));let i=E(1e3,n),k=(()=>{try{return i?JSON.parse(i):{}}catch{return{}}})(),a=[];if(await e(process.cwd(),{afterEmitOnly:r,input:k,sink:o(s=>{r||process.stdout.write(s)},"sink"),detachAfterEmit:o(s=>{a.push(s)},"detachAfterEmit")}),r){for(let s of a)await s().catch(()=>{});process.exit(0)}if(a.length>0&&(process.env.PRJCT_HOOK_BENCH==="1"&&process.exit(0),!_(n,i)))for(let h of a)await h().catch(()=>{});process.exit(0)}catch{r||process.stdout.write(`{}
|
|
10
|
+
`),process.exit(0)}}o(O,"main");O();
|
package/dist/bin/prjct.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import{connect}from"node:net";import{existsSync,readSync}from"node:fs";import{isatty}from"node:tty";import{createHash,randomUUID}from"node:crypto";import{homedir}from"node:os";import{join,resolve}from"node:path";import{spawn}from"node:child_process";
|
|
2
|
+
import{connect}from"node:net";import{existsSync,mkdirSync,readFileSync,readSync,statSync,unlinkSync,writeFileSync}from"node:fs";import{isatty}from"node:tty";import{createHash,randomUUID}from"node:crypto";import{homedir}from"node:os";import{dirname,join,resolve}from"node:path";import{spawn}from"node:child_process";
|
|
3
3
|
const cliHome=process.env.PRJCT_CLI_HOME?resolve(process.env.PRJCT_CLI_HOME):join(homedir(),".prjct-cli");
|
|
4
4
|
const namedPipe=process.platform==="win32";
|
|
5
5
|
const sockPath=namedPipe?"\\.\pipe\prjct-"+createHash("sha1").update(resolve(cliHome)).digest("hex").slice(0,16)+"-daemon":join(cliHome,"run","daemon.sock");
|
|
@@ -17,16 +17,28 @@ const cmd=args.find(a=>!a.startsWith("-"));
|
|
|
17
17
|
const skip=new Set(["seed","mcp","install","help","start","setup","login","logout","auth","context","update","uninstall","daemon","stop","restart","upgrade","hook","hooks","claude","crew","harness","doctor","watch","version","prefs","retro","health","skill-adherence","review-risk","context-save","context-restore","-h","--help","-v","--version","intent","spec","audit-spec","dev","web","serve","__internal-auto-update","__post-upgrade","__internal-ensure-daemon"]);
|
|
18
18
|
function refuse(m){console.error("prjct: daemon dropped the request ("+m+"). Retry: prjct "+args.join(" "));process.exit(1)}
|
|
19
19
|
function isSafeRetry(e){const c=e&&e.code||"",m=e&&e.message||"";return c==="ECONNREFUSED"||c==="ENOENT"||c==="EACCES"||c==="EPERM"||m.includes("ECONNREFUSED")||m.includes("ENOENT")||m.includes("EACCES")||m.includes("EPERM")}
|
|
20
|
-
// Hook
|
|
21
|
-
//
|
|
22
|
-
//
|
|
23
|
-
//
|
|
20
|
+
// Hook stdin spill (mirrors core/hooks/stdin-spill.ts — keep fnv1a-32,
|
|
21
|
+
// filename shape, sanitizer and 30s freshness window IN LOCKSTEP with it and
|
|
22
|
+
// with native/hook-fast.c): when an earlier chain stage (native hook-fast,
|
|
23
|
+
// or this shim itself on a prior stage) already consumed stdin and punted,
|
|
24
|
+
// the payload waits at <cliHome>/run/hook-stdin-<fnv1a32hex(cwd)>-<sub>.json.
|
|
25
|
+
const fnv1a=(s)=>Buffer.from(s,"utf8").reduce((a,b)=>Math.imul(a^b,16777619)>>>0,2166136261).toString(16).padStart(8,"0");
|
|
26
|
+
const spillPath=(sub)=>{const s=(sub||"").toLowerCase().replace(/[^a-z0-9-]/g,"");return s?join(cliHome,"run","hook-stdin-"+fnv1a(process.cwd())+"-"+s+".json"):null};
|
|
27
|
+
const readSpill=(sub)=>{const p=spillPath(sub);if(!p)return null;try{const st=statSync(p);if(Date.now()-st.mtimeMs>3e4){unlinkSync(p);return null}const d=readFileSync(p,"utf8");unlinkSync(p);return d}catch{return null}};
|
|
28
|
+
const writeSpill=(sub,data)=>{const p=spillPath(sub);if(!p)return;try{mkdirSync(dirname(p),{recursive:true});writeFileSync(p,data)}catch{}};
|
|
29
|
+
// Hook fast path: forward the event (stdin, or the spill an earlier chain
|
|
30
|
+
// stage left behind) to the warm daemon and write its response raw. Hooks
|
|
31
|
+
// must never disturb the host session, so ANY failure (connect error,
|
|
32
|
+
// timeout, closed socket, stale-code retry) RE-SPILLS the payload and punts
|
|
33
|
+
// (exit 89, no output) — the next || chain stage re-runs the hook from the
|
|
34
|
+
// spill. Invoked outside a chain (manual "prjct hook X"), exit 89 + empty
|
|
35
|
+
// stdout is the same host-visible no-op the old {} emit was.
|
|
24
36
|
const hookCompletion=new AbortController();
|
|
25
37
|
function sendHook(sub,data){
|
|
26
38
|
if(hookCompletion.signal.aborted)return;hookCompletion.abort();
|
|
27
39
|
const msg=JSON.stringify({id:randomUUID(),command:"hook",args:sub?[sub]:[],options:{},cwd:process.cwd(),stdin:data,...(process.env.PRJCT_HOOK_HOST?{hookHost:process.env.PRJCT_HOOK_HOST}:{})})+"\n";
|
|
28
40
|
const sock=connect(sockPath);const chunks=[],completion=new AbortController();
|
|
29
|
-
const soft=()=>{if(!completion.signal.aborted){completion.abort();clearTimeout(t);sock.destroy();
|
|
41
|
+
const soft=()=>{if(!completion.signal.aborted){completion.abort();clearTimeout(t);sock.destroy();writeSpill(sub,data);process.exit(89)}};
|
|
30
42
|
const t=setTimeout(soft,800);
|
|
31
43
|
sock.on("connect",()=>sock.write(msg));
|
|
32
44
|
sock.on("data",c=>{chunks.push(c.toString());const buf=chunks.join("");const n=buf.indexOf("\n");if(n!==-1){const r=JSON.parse(buf.slice(0,n));if(r.retry){soft();return}completion.abort();clearTimeout(t);sock.end();if(r.stdout)process.stdout.write(r.stdout);process.exit(r.exitCode!=null?r.exitCode:0)}});
|
|
@@ -42,8 +54,9 @@ if(cmd==="hook"){
|
|
|
42
54
|
// unrecoverable read error yields whatever was read so far (the hook
|
|
43
55
|
// treats a blank result as {}). The host-side hook timeout
|
|
44
56
|
// (settings-installer HOOK_TIMEOUT_SECONDS) remains the backstop for a
|
|
45
|
-
// pathological host that never closes stdin.
|
|
46
|
-
|
|
57
|
+
// pathological host that never closes stdin. A fresh spill file (native
|
|
58
|
+
// hook-fast punted) takes precedence over the drained pipe.
|
|
59
|
+
sendHook(sub,readSpill(sub)??readStdinSync(1000));
|
|
47
60
|
}else{
|
|
48
61
|
// Cold path (daemon disabled/unreachable): run the hook from the dedicated
|
|
49
62
|
// hooks bundle, NOT the full core. cold-entry emits host JSON then detaches
|