prjct-cli 3.88.0 → 3.91.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 +15 -0
- package/dist/bin/hook-chunks/agent-identity-45BYQBU2.mjs +8 -0
- package/dist/bin/hook-chunks/agent-switch-IQ5KSRKD.mjs +22 -0
- package/dist/bin/hook-chunks/analysis-LBYZSJKT.mjs +42 -0
- package/dist/bin/hook-chunks/auth-config-WNUARXTJ.mjs +8 -0
- package/dist/bin/hook-chunks/auto-flush-GW3FP763.mjs +8 -0
- package/dist/bin/hook-chunks/auto-updater-EHRRMCYY.mjs +9 -0
- package/dist/bin/hook-chunks/capture-gate-BQCNMHUC.mjs +8 -0
- package/dist/bin/hook-chunks/chunk-2NMSEZTQ.mjs +8 -0
- package/dist/bin/hook-chunks/chunk-2OU2MKNS.mjs +8 -0
- package/dist/bin/hook-chunks/chunk-2UC4DTDO.mjs +9 -0
- package/dist/bin/hook-chunks/chunk-3FBCOCPD.mjs +8 -0
- package/dist/bin/hook-chunks/chunk-3JUE6MNF.mjs +8 -0
- package/dist/bin/hook-chunks/chunk-3LG3ACQV.mjs +8 -0
- package/dist/bin/hook-chunks/chunk-3WKDMAS7.mjs +16 -0
- package/dist/bin/hook-chunks/chunk-45I2C2UB.mjs +25 -0
- package/dist/bin/hook-chunks/chunk-4DDCWMI6.mjs +8 -0
- package/dist/bin/hook-chunks/chunk-4KY2EHXS.mjs +9 -0
- package/dist/bin/hook-chunks/chunk-4WHS7CO7.mjs +8 -0
- package/dist/bin/hook-chunks/chunk-54LH63LM.mjs +7 -0
- package/dist/bin/hook-chunks/chunk-5TBQNW2G.mjs +17 -0
- package/dist/bin/hook-chunks/chunk-5WAONIPX.mjs +8 -0
- package/dist/bin/hook-chunks/chunk-6AFM6WRB.mjs +13 -0
- package/dist/bin/hook-chunks/chunk-6EWGHM32.mjs +9 -0
- package/dist/bin/hook-chunks/chunk-6IKHMK2U.mjs +10 -0
- package/dist/bin/hook-chunks/chunk-75UJIVMO.mjs +10 -0
- package/dist/bin/hook-chunks/chunk-7OZDWT6C.mjs +9 -0
- package/dist/bin/hook-chunks/chunk-7SI6X3Z7.mjs +8 -0
- package/dist/bin/hook-chunks/chunk-A5MUSARI.mjs +9 -0
- package/dist/bin/hook-chunks/chunk-A5RNWWTH.mjs +9 -0
- package/dist/bin/hook-chunks/chunk-AEYONUUY.mjs +31 -0
- package/dist/bin/hook-chunks/chunk-AKIN5WSQ.mjs +9 -0
- package/dist/bin/hook-chunks/chunk-AOPJ4Z6O.mjs +8 -0
- package/dist/bin/hook-chunks/chunk-AUUWQH3S.mjs +14 -0
- package/dist/bin/hook-chunks/chunk-AW25AWN5.mjs +31 -0
- package/dist/bin/hook-chunks/chunk-B7GMU46T.mjs +71 -0
- package/dist/bin/hook-chunks/chunk-BISPGBNN.mjs +35 -0
- package/dist/bin/hook-chunks/chunk-BUDZL4DW.mjs +8 -0
- package/dist/bin/hook-chunks/chunk-CE4RCNC7.mjs +8 -0
- package/dist/bin/hook-chunks/chunk-CQHPIYNM.mjs +8 -0
- package/dist/bin/hook-chunks/chunk-CREPUNOS.mjs +24 -0
- package/dist/bin/hook-chunks/chunk-CTWZQ7YI.mjs +8 -0
- package/dist/bin/hook-chunks/chunk-D4S3IRD3.mjs +8 -0
- package/dist/bin/hook-chunks/chunk-D6KT763C.mjs +9 -0
- package/dist/bin/hook-chunks/chunk-D7TRY3CO.mjs +8 -0
- package/dist/bin/hook-chunks/chunk-DGQYQSUK.mjs +19 -0
- package/dist/bin/hook-chunks/chunk-DMXFGLZE.mjs +21 -0
- package/dist/bin/hook-chunks/chunk-DXQMKW2B.mjs +10 -0
- package/dist/bin/hook-chunks/chunk-DYHYDHCW.mjs +8 -0
- package/dist/bin/hook-chunks/chunk-E66B27AL.mjs +8 -0
- package/dist/bin/hook-chunks/chunk-EHBEHLYN.mjs +15 -0
- package/dist/bin/hook-chunks/chunk-EM6ZDJAK.mjs +45 -0
- package/dist/bin/hook-chunks/chunk-FEH4IPIC.mjs +15 -0
- package/dist/bin/hook-chunks/chunk-FGQZ62ZP.mjs +47 -0
- package/dist/bin/hook-chunks/chunk-GAOQHD5S.mjs +8 -0
- package/dist/bin/hook-chunks/chunk-GCKILEXJ.mjs +8 -0
- package/dist/bin/hook-chunks/chunk-GVNMXVVA.mjs +8 -0
- package/dist/bin/hook-chunks/chunk-HBLR7BVG.mjs +11 -0
- package/dist/bin/hook-chunks/chunk-HDHVBB6Q.mjs +1260 -0
- package/dist/bin/hook-chunks/chunk-HDSS6UB3.mjs +8 -0
- package/dist/bin/hook-chunks/chunk-HJ4HEI45.mjs +8 -0
- package/dist/bin/hook-chunks/chunk-HZIORCPO.mjs +16 -0
- package/dist/bin/hook-chunks/chunk-IKUGYUAI.mjs +8 -0
- package/dist/bin/hook-chunks/chunk-J6JZ4PQA.mjs +18 -0
- package/dist/bin/hook-chunks/chunk-JQE2F2RK.mjs +8 -0
- package/dist/bin/hook-chunks/chunk-KEJ5RMAI.mjs +9 -0
- package/dist/bin/hook-chunks/chunk-L4COZ7ZH.mjs +13 -0
- package/dist/bin/hook-chunks/chunk-LGJUQEAU.mjs +8 -0
- package/dist/bin/hook-chunks/chunk-LJLUP4FF.mjs +8 -0
- package/dist/bin/hook-chunks/chunk-LLQUB6YR.mjs +11 -0
- package/dist/bin/hook-chunks/chunk-LPB3HUJ2.mjs +19 -0
- package/dist/bin/hook-chunks/chunk-LT5WSSQO.mjs +8 -0
- package/dist/bin/hook-chunks/chunk-LWCHQIJ7.mjs +11 -0
- package/dist/bin/hook-chunks/chunk-M3ZOJVPA.mjs +13 -0
- package/dist/bin/hook-chunks/chunk-MEQS4VPO.mjs +8 -0
- package/dist/bin/hook-chunks/chunk-MXHX44WF.mjs +9 -0
- package/dist/bin/hook-chunks/chunk-N5WOHG36.mjs +8 -0
- package/dist/bin/hook-chunks/chunk-NJAMZSHM.mjs +26 -0
- package/dist/bin/hook-chunks/chunk-NLG2EW6M.mjs +8 -0
- package/dist/bin/hook-chunks/chunk-NWY5M34K.mjs +12 -0
- package/dist/bin/hook-chunks/chunk-ODWWIFSN.mjs +9 -0
- package/dist/bin/hook-chunks/chunk-OIEZAHLC.mjs +16 -0
- package/dist/bin/hook-chunks/chunk-PKDYFXMI.mjs +8 -0
- package/dist/bin/hook-chunks/chunk-PSP56GGF.mjs +13 -0
- package/dist/bin/hook-chunks/chunk-PSSR7LSW.mjs +8 -0
- package/dist/bin/hook-chunks/chunk-PW3KYKVS.mjs +9 -0
- package/dist/bin/hook-chunks/chunk-PXJKXBTM.mjs +53 -0
- package/dist/bin/hook-chunks/chunk-Q5I2UPD6.mjs +9 -0
- package/dist/bin/hook-chunks/chunk-QDQ7DTDV.mjs +8 -0
- package/dist/bin/hook-chunks/chunk-QSAA6LZF.mjs +8 -0
- package/dist/bin/hook-chunks/chunk-QZSJSXJV.mjs +10 -0
- package/dist/bin/hook-chunks/chunk-RAHFKGM6.mjs +19 -0
- package/dist/bin/hook-chunks/chunk-RJ2BRRMH.mjs +38 -0
- package/dist/bin/hook-chunks/chunk-RRWPDRYR.mjs +43 -0
- package/dist/bin/hook-chunks/chunk-SJ75V4WG.mjs +9 -0
- package/dist/bin/hook-chunks/chunk-SOPRYWUY.mjs +11 -0
- package/dist/bin/hook-chunks/chunk-SVZHJZ5T.mjs +9 -0
- package/dist/bin/hook-chunks/chunk-SYHDEUVU.mjs +10 -0
- package/dist/bin/hook-chunks/chunk-TFGJVT6F.mjs +8 -0
- package/dist/bin/hook-chunks/chunk-TPESWBA7.mjs +8 -0
- package/dist/bin/hook-chunks/chunk-TRMBRDKH.mjs +8 -0
- package/dist/bin/hook-chunks/chunk-TXJT3G53.mjs +10 -0
- package/dist/bin/hook-chunks/chunk-UHW35BPE.mjs +18 -0
- package/dist/bin/hook-chunks/chunk-UQVJQME2.mjs +8 -0
- package/dist/bin/hook-chunks/chunk-UUULLTQV.mjs +8 -0
- package/dist/bin/hook-chunks/chunk-V37VTXDW.mjs +10 -0
- package/dist/bin/hook-chunks/chunk-W5OWBOLH.mjs +8 -0
- package/dist/bin/hook-chunks/chunk-WDGDFXSB.mjs +10 -0
- package/dist/bin/hook-chunks/chunk-WUHGODSQ.mjs +8 -0
- package/dist/bin/hook-chunks/chunk-X5RDLFPM.mjs +8 -0
- package/dist/bin/hook-chunks/chunk-XEFIIDHM.mjs +11 -0
- package/dist/bin/hook-chunks/chunk-Y5NQV46G.mjs +9 -0
- package/dist/bin/hook-chunks/chunk-YG7KBQYJ.mjs +16 -0
- package/dist/bin/hook-chunks/chunk-YJMWY4Y6.mjs +8 -0
- package/dist/bin/hook-chunks/chunk-YKMJI6TF.mjs +14 -0
- package/dist/bin/hook-chunks/chunk-YUOTOCKK.mjs +103 -0
- package/dist/bin/hook-chunks/chunk-ZTZTVBAZ.mjs +12 -0
- package/dist/bin/hook-chunks/chunk-ZX2KFQV5.mjs +11 -0
- package/dist/bin/hook-chunks/chunk-ZZ65CN5F.mjs +20 -0
- package/dist/bin/hook-chunks/client-SKFMAUI5.mjs +10 -0
- package/dist/bin/hook-chunks/code-graph-cloud-65GCWNII.mjs +8 -0
- package/dist/bin/hook-chunks/codex-skill-7IURPY6B.mjs +8 -0
- package/dist/bin/hook-chunks/command-installer-BVHQUSL4.mjs +8 -0
- package/dist/bin/hook-chunks/config-manager-KYC7WUOS.mjs +8 -0
- package/dist/bin/hook-chunks/content-bound-stamp-72EQVZLP.mjs +10 -0
- package/dist/bin/hook-chunks/context-pressure-OUN5PFMN.mjs +8 -0
- package/dist/bin/hook-chunks/context7-service-4C6VNJUS.mjs +8 -0
- package/dist/bin/hook-chunks/custom-workflow-storage-M77INP6Z.mjs +8 -0
- package/dist/bin/hook-chunks/cwd-changed-56X7BNS6.mjs +8 -0
- package/dist/bin/hook-chunks/cycle-budget-card-O5WAGNGC.mjs +9 -0
- package/dist/bin/hook-chunks/database-SLDTQXWG.mjs +8 -0
- package/dist/bin/hook-chunks/delivery-geometry-VHCURJ7E.mjs +8 -0
- package/dist/bin/hook-chunks/detect-changes-6N4DCWXQ.mjs +17 -0
- package/dist/bin/hook-chunks/detection-MEYHME4X.mjs +8 -0
- package/dist/bin/hook-chunks/developer-evolution-R5BXQH6G.mjs +12 -0
- package/dist/bin/hook-chunks/discuss-lock-55GER2LR.mjs +8 -0
- package/dist/bin/hook-chunks/distill-6C6YIFOE.mjs +8 -0
- package/dist/bin/hook-chunks/drift-refresh-TD3PYPJN.mjs +8 -0
- package/dist/bin/hook-chunks/editors-config-3N6VREZR.mjs +8 -0
- package/dist/bin/hook-chunks/enriched-recall-6ZZNKAJZ.mjs +8 -0
- package/dist/bin/hook-chunks/exec-I7XE7NMD.mjs +8 -0
- package/dist/bin/hook-chunks/format-YOYMJSLY.mjs +8 -0
- package/dist/bin/hook-chunks/git-helpers-6JLP2OJZ.mjs +8 -0
- package/dist/bin/hook-chunks/infer-memory-file-PIAZ542H.mjs +8 -0
- package/dist/bin/hook-chunks/judgment-ledger-storage-UKROWRVA.mjs +8 -0
- package/dist/bin/hook-chunks/judgment-orchestrator-UFGNBTEK.mjs +8 -0
- package/dist/bin/hook-chunks/judgment-receipt-2U7D6HS4.mjs +8 -0
- package/dist/bin/hook-chunks/land-cue-SS23JBAX.mjs +9 -0
- package/dist/bin/hook-chunks/land-synthesis-OATL5BNP.mjs +8 -0
- package/dist/bin/hook-chunks/legacy-crew-sweep-NH5EWEXF.mjs +24 -0
- package/dist/bin/hook-chunks/memory-index-677MUBCZ.mjs +10 -0
- package/dist/bin/hook-chunks/notification-S2IJJ6JW.mjs +8 -0
- package/dist/bin/hook-chunks/nyquist-lite-GE7OAFLC.mjs +10 -0
- package/dist/bin/hook-chunks/pack-integrity-L3BL7CGO.mjs +10 -0
- package/dist/bin/hook-chunks/pack-manager-SU53HCKK.mjs +8 -0
- package/dist/bin/hook-chunks/package-legitimacy-HXC4L73B.mjs +8 -0
- package/dist/bin/hook-chunks/path-manager-F2HE2GGK.mjs +8 -0
- package/dist/bin/hook-chunks/planning-ZYFCFU7N.mjs +9 -0
- package/dist/bin/hook-chunks/post-edit-JD7YFEBZ.mjs +8 -0
- package/dist/bin/hook-chunks/pr-convention-7UGI7TFA.mjs +8 -0
- package/dist/bin/hook-chunks/pre-bash-VIABNO5E.mjs +11 -0
- package/dist/bin/hook-chunks/pre-commit-NVQVXHZQ.mjs +8 -0
- package/dist/bin/hook-chunks/pre-edit-V4RD45C4.mjs +11 -0
- package/dist/bin/hook-chunks/pre-package-KFJZXI5T.mjs +8 -0
- package/dist/bin/hook-chunks/pre-search-7KRU5D2O.mjs +9 -0
- package/dist/bin/hook-chunks/pre-secrets-IE5NX5X5.mjs +8 -0
- package/dist/bin/hook-chunks/precision-classifier-IVVAXE26.mjs +8 -0
- package/dist/bin/hook-chunks/precision-judgment-WPTCNTGV.mjs +8 -0
- package/dist/bin/hook-chunks/prjct-md-FMCPUMQT.mjs +8 -0
- package/dist/bin/hook-chunks/project-agent-surfaces-TD7BHI25.mjs +8 -0
- package/dist/bin/hook-chunks/project-file-inventory-ZAPKPKY6.mjs +8 -0
- package/dist/bin/hook-chunks/project-memory-ZVZSLPB5.mjs +8 -0
- package/dist/bin/hook-chunks/project-style-evolution-7JS75AUP.mjs +8 -0
- package/dist/bin/hook-chunks/prompt-S4MMIXH5.mjs +22 -0
- package/dist/bin/hook-chunks/publish-helper-I37V4L7U.mjs +8 -0
- package/dist/bin/hook-chunks/purge-BDREPWEE.mjs +8 -0
- package/dist/bin/hook-chunks/retention-D2MVQLOF.mjs +8 -0
- package/dist/bin/hook-chunks/sdd-ZO4DP23G.mjs +10 -0
- package/dist/bin/hook-chunks/session-continuity-FNNUMOXB.mjs +11 -0
- package/dist/bin/hook-chunks/session-start-HA7IRBFX.mjs +8 -0
- package/dist/bin/hook-chunks/settings-installer-QDM3GB6J.mjs +9 -0
- package/dist/bin/hook-chunks/setup-7L3NXNRH.mjs +142 -0
- package/dist/bin/hook-chunks/shipping-GX4HFYJ3.mjs +13 -0
- package/dist/bin/hook-chunks/skill-index-OOVAXHYJ.mjs +12 -0
- package/dist/bin/hook-chunks/spec-context-inference-KER2R3F3.mjs +15 -0
- package/dist/bin/hook-chunks/spec-service-G3RLCJ2G.mjs +11 -0
- package/dist/bin/hook-chunks/spec-task-breakdown-YPJ76OWR.mjs +8 -0
- package/dist/bin/hook-chunks/state-storage-KNGP2CQV.mjs +8 -0
- package/dist/bin/hook-chunks/stop-HPZCLDPM.mjs +17 -0
- package/dist/bin/hook-chunks/subagent-start-7KZUTKV5.mjs +8 -0
- package/dist/bin/hook-chunks/subagent-stop-7C72RWGO.mjs +8 -0
- package/dist/bin/hook-chunks/surface-attribution-PDYR6DVA.mjs +8 -0
- package/dist/bin/hook-chunks/symbol-graph-LZM4RZXZ.mjs +8 -0
- package/dist/bin/hook-chunks/sync-analyzer-FKC57RTV.mjs +8 -0
- package/dist/bin/hook-chunks/sync-client-DJWOG2ZQ.mjs +8 -0
- package/dist/bin/hook-chunks/sync-cursor-storage-2VKG757H.mjs +19 -0
- package/dist/bin/hook-chunks/task-orchestration-MLOCR7GA.mjs +8 -0
- package/dist/bin/hook-chunks/task-overview-6ZQKJGSH.mjs +8 -0
- package/dist/bin/hook-chunks/task-service-RRFG5P7N.mjs +8 -0
- package/dist/bin/hook-chunks/tdd-XQUU4C23.mjs +10 -0
- package/dist/bin/hook-chunks/template-loader-4QMIMOBY.mjs +8 -0
- package/dist/bin/hook-chunks/transcript-jsonl-6X4DDD6R.mjs +8 -0
- package/dist/bin/hook-chunks/trust-boundary-ERMDF2C5.mjs +8 -0
- package/dist/bin/hook-chunks/usefulness-253CZLNY.mjs +8 -0
- package/dist/bin/hook-chunks/vault-retire-notice-GRT3QRLZ.mjs +9 -0
- package/dist/bin/hook-chunks/velocity-storage-UPW6TLK6.mjs +8 -0
- package/dist/bin/hook-chunks/weak-model-mode-M6D23IIM.mjs +8 -0
- package/dist/bin/hook-chunks/work-graph-QJGNBVIP.mjs +49 -0
- package/dist/bin/hook-chunks/work-scope-6FG6PSAV.mjs +8 -0
- package/dist/bin/hook-chunks/workspace-occupancy-UVIRHY5Z.mjs +8 -0
- package/dist/bin/hook-chunks/worktree-service-XGRN5TTE.mjs +12 -0
- 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 +625 -624
- package/dist/bin/prjct-hooks.mjs +3 -2282
- package/dist/bin/prjct.mjs +17 -2
- package/dist/daemon/entry.mjs +545 -544
- package/dist/mcp/server.mjs +196 -195
- package/package.json +1 -1
package/dist/bin/prjct.mjs
CHANGED
|
@@ -1,9 +1,17 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import{connect}from"node:net";import{existsSync}from"node:fs";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,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";
|
|
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");
|
|
6
6
|
const hasEndpoint=()=>namedPipe||existsSync(sockPath);
|
|
7
|
+
// Sync-read stdin via fs.readSync on fd 0 directly — never READS through
|
|
8
|
+
// process.stdin, whose stream wrapper costs event-loop turnaround per hook.
|
|
9
|
+
// Touching process.stdin.fd once up front flips fd 0 non-blocking (this
|
|
10
|
+
// shim always runs on node), so an open-but-empty pipe yields EAGAIN and
|
|
11
|
+
// the deadline is REAL: a host that opens stdin but never closes degrades
|
|
12
|
+
// to whatever arrived instead of hanging until the host's hook-timeout
|
|
13
|
+
// kill. EAGAIN retries sleep ~1ms via Atomics.wait to avoid a busy-spin.
|
|
14
|
+
function readStdinSync(ms){if(isatty(0))return"";try{void process.stdin.fd}catch{}const dl=Date.now()+ms;const slp=new Int32Array(new SharedArrayBuffer(4));const buf=Buffer.alloc(65536);const parts=[];for(;;){try{const n=readSync(0,buf,0,buf.length,null);if(n===0)break;parts.push(Buffer.from(buf.subarray(0,n)))}catch(e){if(e&&e.code==="EAGAIN"&&Date.now()<dl){Atomics.wait(slp,0,0,1);continue}break}}return Buffer.concat(parts).toString("utf8")}
|
|
7
15
|
const args=process.argv.slice(2);
|
|
8
16
|
const cmd=args.find(a=>!a.startsWith("-"));
|
|
9
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"]);
|
|
@@ -28,7 +36,14 @@ function sendHook(sub,data){
|
|
|
28
36
|
if(cmd==="hook"){
|
|
29
37
|
if(process.env.PRJCT_NO_DAEMON!=="1"&&hasEndpoint()){
|
|
30
38
|
const sub=args[1];
|
|
31
|
-
|
|
39
|
+
// Sync stdin read: event-accumulating a pipe costs ~15-20ms of event-loop
|
|
40
|
+
// turnaround per hook in bun/node; hosts write the event JSON and close
|
|
41
|
+
// stdin immediately, so a sync read returns at once. Fail-soft: an
|
|
42
|
+
// unrecoverable read error yields whatever was read so far (the hook
|
|
43
|
+
// treats a blank result as {}). The host-side hook timeout
|
|
44
|
+
// (settings-installer HOOK_TIMEOUT_SECONDS) remains the backstop for a
|
|
45
|
+
// pathological host that never closes stdin.
|
|
46
|
+
sendHook(sub,readStdinSync(1000));
|
|
32
47
|
}else{
|
|
33
48
|
// Cold path (daemon disabled/unreachable): run the hook from the dedicated
|
|
34
49
|
// hooks bundle, NOT the full core. cold-entry emits host JSON then detaches
|