@pushary/agent-hooks 1.9.1 → 1.9.3
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/data/cursor-plugin/.cursor-plugin/plugin.json +1 -1
- package/data/cursor-plugin/CHANGELOG.md +4 -0
- package/data/cursor-plugin/scripts/pushary-gate.mjs +1 -1
- package/data/vscode-plugin/.claude-plugin/plugin.json +1 -1
- package/data/vscode-plugin/CHANGELOG.md +4 -0
- package/data/vscode-plugin/scripts/pushary-gate.mjs +1 -1
- package/dist/bin/pushary-bell-hook.js +23 -23
- package/dist/bin/pushary-bell.js +9 -9
- package/dist/bin/pushary-claude.js +26 -26
- package/dist/bin/pushary-clean.js +28 -28
- package/dist/bin/pushary-codex-bridge.js +18 -18
- package/dist/bin/pushary-codex-hook.js +31 -31
- package/dist/bin/pushary-codex.js +13 -13
- package/dist/bin/pushary-connect.js +13 -13
- package/dist/bin/pushary-cowork.js +5 -5
- package/dist/bin/pushary-daemon.js +26 -26
- package/dist/bin/pushary-disconnect.js +18 -18
- package/dist/bin/pushary-doctor.js +99 -48
- package/dist/bin/pushary-elicitation-hook.js +25 -25
- package/dist/bin/pushary-gemini-bridge.js +13 -13
- package/dist/bin/pushary-gemini-hook.js +28 -28
- package/dist/bin/pushary-hook.js +32 -32
- package/dist/bin/pushary-login.js +26 -23
- package/dist/bin/pushary-logout.js +7 -7
- package/dist/bin/pushary-mcp.js +9 -9
- package/dist/bin/pushary-mode.js +9 -9
- package/dist/bin/pushary-notification-hook.js +28 -28
- package/dist/bin/pushary-opencode-hook.js +27 -27
- package/dist/bin/pushary-permission-denied-hook.js +32 -32
- package/dist/bin/pushary-permission-hook.js +31 -31
- package/dist/bin/pushary-post-hook.js +28 -28
- package/dist/bin/pushary-prompt-hook.js +28 -28
- package/dist/bin/pushary-session-end-hook.js +28 -28
- package/dist/bin/pushary-session-start-hook.js +31 -31
- package/dist/bin/pushary-setup.js +69 -52
- package/dist/bin/pushary-stats.js +5 -5
- package/dist/bin/pushary-status.js +15 -15
- package/dist/bin/pushary-stop-hook.js +28 -28
- package/dist/bin/pushary-stopfailure-hook.js +28 -28
- package/dist/bin/pushary-suggestions.js +4 -4
- package/dist/bin/pushary-transcript-register.js +19 -19
- package/dist/bin/pushary-transcripts.js +7 -7
- package/dist/bin/pushary-upgrade.js +21 -21
- package/dist/bin/pushary-wait.js +9 -9
- package/dist/bin/pushary.js +6 -6
- package/dist/{chunk-COSADFEH.js → chunk-2UWD2WZC.js} +1 -1
- package/dist/{chunk-7ER66HZH.js → chunk-34JHGOYO.js} +1 -1
- package/dist/{chunk-4SB46XLF.js → chunk-4GTXFYQ7.js} +1 -1
- package/dist/{chunk-P7YDVWLL.js → chunk-552AGATI.js} +1 -1
- package/dist/{chunk-ZMKEKWNR.js → chunk-5IIAUWEJ.js} +18 -5
- package/dist/{chunk-AKCJ5SNO.js → chunk-7FVC3RGF.js} +17 -12
- package/dist/{chunk-DMA3QUOB.js → chunk-7MO3CNBX.js} +3 -3
- package/dist/{chunk-IITCMJ4G.js → chunk-AGW7PMMO.js} +2 -2
- package/dist/{chunk-WWDPULS3.js → chunk-AMFNJPJ5.js} +8 -8
- package/dist/{chunk-LJI7U6PM.js → chunk-AUS3LY4N.js} +2 -2
- package/dist/{chunk-RS4ZOFSF.js → chunk-BPGATW2F.js} +7 -6
- package/dist/{chunk-JCER3Q6P.js → chunk-CJFVYYKM.js} +10 -9
- package/dist/{chunk-D3RS57MN.js → chunk-CVVPUVBD.js} +3 -3
- package/dist/{chunk-JGQ2ANHQ.js → chunk-DEWCUHOY.js} +2 -2
- package/dist/chunk-EO23EUOK.js +14 -0
- package/dist/{chunk-FVOCQSBG.js → chunk-EZFE4PC3.js} +1 -1
- package/dist/{chunk-LXWUYG7D.js → chunk-FANGHYW5.js} +1 -1
- package/dist/{chunk-SKEP3M6M.js → chunk-FLUECSUC.js} +2 -2
- package/dist/{chunk-J7JXA2LX.js → chunk-FSFI2PQL.js} +1 -1
- package/dist/{chunk-UPTEPARD.js → chunk-G2YXIZZS.js} +2 -2
- package/dist/{chunk-65TOHCXT.js → chunk-GB2U4QVF.js} +4 -4
- package/dist/{chunk-CE4UH4AP.js → chunk-GOWCPJTP.js} +7 -5
- package/dist/{chunk-RNDFGHSQ.js → chunk-HBUQ2EQD.js} +1 -1
- package/dist/{chunk-GHKNUQYU.js → chunk-HIQNUBWO.js} +2 -2
- package/dist/{chunk-QXL27RY6.js → chunk-HPXFPXW7.js} +1 -1
- package/dist/{chunk-CGRPHFOV.js → chunk-IVF3OVR2.js} +1 -1
- package/dist/{chunk-XEIV5QOT.js → chunk-JDUWMJDP.js} +118 -170
- package/dist/{chunk-V4H33GBM.js → chunk-JM2MCYRZ.js} +6 -6
- package/dist/{chunk-LZMH4EGE.js → chunk-KA2GI53J.js} +1 -1
- package/dist/{chunk-SWGY5WNX.js → chunk-KO7UOTLD.js} +5 -5
- package/dist/{chunk-HU2LWGEE.js → chunk-MH6SJHUE.js} +1 -1
- package/dist/{chunk-XW2B4QV2.js → chunk-NGD7H3GZ.js} +2 -2
- package/dist/{chunk-UYHLMBPQ.js → chunk-NP5RJL34.js} +1 -1
- package/dist/{chunk-IJXJW2VH.js → chunk-NZJ5LFMX.js} +10 -10
- package/dist/{chunk-QQJCDRD3.js → chunk-OEMF3KJ3.js} +5 -5
- package/dist/{chunk-6L7TNZ43.js → chunk-OXJRUMZT.js} +1 -1
- package/dist/{chunk-C6PPDKVI.js → chunk-P3REVSM5.js} +3 -3
- package/dist/{chunk-SPB3QRE7.js → chunk-PPC4FZKJ.js} +4 -4
- package/dist/{chunk-FJPC35OW.js → chunk-Q4RF7EEP.js} +1 -1
- package/dist/{chunk-4XT4JXMG.js → chunk-Q7FLA4N3.js} +1 -1
- package/dist/{chunk-LKKYRNJT.js → chunk-Q7KSRRQ4.js} +1 -1
- package/dist/{chunk-KR5JASA4.js → chunk-QVUOPB32.js} +44 -16
- package/dist/{chunk-VH6763OR.js → chunk-SJC5TXK7.js} +3 -3
- package/dist/{chunk-6QSDNXGM.js → chunk-U3DBAX7P.js} +2 -2
- package/dist/{chunk-JHZAZAI3.js → chunk-UWMEY4RS.js} +5 -5
- package/dist/{chunk-NVLXK2I6.js → chunk-VRPNTJX3.js} +5 -5
- package/dist/{chunk-5K43TBK4.js → chunk-VRYOALHQ.js} +3 -3
- package/dist/{chunk-VQLWYKX7.js → chunk-WEK6US33.js} +1 -1
- package/dist/{chunk-PEGKBNGN.js → chunk-WL4YO6CO.js} +5 -5
- package/dist/{chunk-6JTTJIKJ.js → chunk-WRDMCP4G.js} +3 -3
- package/dist/{chunk-RJ7ECJSZ.js → chunk-ZPTSEJMD.js} +4 -2
- package/dist/{chunk-6Q4NM2LW.js → chunk-ZUZKHTPJ.js} +3 -3
- package/dist/{chunk-PMS3EBD2.js → chunk-ZV32QRBR.js} +1 -1
- package/dist/{global-upgrade-ML2RHV4W.js → global-upgrade-VEQ4KQEW.js} +6 -6
- package/dist/{paths-LG3IEDDM.js → paths-QTOUBV2V.js} +2 -2
- package/dist/{reapply-7PFOITE4.js → reapply-T5PLCAGP.js} +8 -8
- package/dist/src/index.js +20 -20
- package/dist/{upgrade-lock-2A2YUUEU.js → upgrade-lock-KFZBAPNU.js} +3 -3
- package/package.json +1 -1
|
@@ -6,14 +6,17 @@ import {
|
|
|
6
6
|
readServiceExecPath,
|
|
7
7
|
versionManagerOf
|
|
8
8
|
} from "../chunk-GU3EJCVV.js";
|
|
9
|
+
import {
|
|
10
|
+
writeStdoutFully
|
|
11
|
+
} from "../chunk-EO23EUOK.js";
|
|
9
12
|
import {
|
|
10
13
|
assessCodexHookTrust,
|
|
11
14
|
readCodexTrustForPusharyHooks
|
|
12
|
-
} from "../chunk-
|
|
15
|
+
} from "../chunk-QVUOPB32.js";
|
|
13
16
|
import {
|
|
14
17
|
readMachineReadiness,
|
|
15
18
|
readManagedControlEvidence
|
|
16
|
-
} from "../chunk-
|
|
19
|
+
} from "../chunk-7FVC3RGF.js";
|
|
17
20
|
import {
|
|
18
21
|
FX_PROFILE_REFUSALS,
|
|
19
22
|
FX_PUSHARY_TOOLS_RULE,
|
|
@@ -33,28 +36,28 @@ import {
|
|
|
33
36
|
retryAgentCommand,
|
|
34
37
|
shortenHome,
|
|
35
38
|
vscodeSettingsTargets
|
|
36
|
-
} from "../chunk-
|
|
37
|
-
import "../chunk-
|
|
39
|
+
} from "../chunk-JM2MCYRZ.js";
|
|
40
|
+
import "../chunk-AUS3LY4N.js";
|
|
38
41
|
import {
|
|
39
42
|
OPENCODE_PLUGIN_PLACEHOLDER,
|
|
40
43
|
openCodePluginDir,
|
|
41
44
|
openCodePluginFile,
|
|
42
45
|
openCodeWired
|
|
43
|
-
} from "../chunk-
|
|
46
|
+
} from "../chunk-IVF3OVR2.js";
|
|
44
47
|
import {
|
|
45
48
|
compatibleConfigFile,
|
|
46
49
|
compatibleInstructionsFile,
|
|
47
50
|
compatibleMcpFile,
|
|
48
51
|
hasCompatibleHooks,
|
|
49
52
|
missingCompatibleHookEvents
|
|
50
|
-
} from "../chunk-
|
|
51
|
-
import "../chunk-
|
|
53
|
+
} from "../chunk-VRPNTJX3.js";
|
|
54
|
+
import "../chunk-ZUZKHTPJ.js";
|
|
52
55
|
import {
|
|
53
56
|
detectProviderLiveCapabilities,
|
|
54
57
|
expectedLaunchCapabilities,
|
|
55
58
|
hasSpawnProvider,
|
|
56
59
|
resolveControlPolicy
|
|
57
|
-
} from "../chunk-
|
|
60
|
+
} from "../chunk-AGW7PMMO.js";
|
|
58
61
|
import "../chunk-RIVNNBEK.js";
|
|
59
62
|
import {
|
|
60
63
|
AUTO_UPDATE_DISABLE_ENV,
|
|
@@ -63,16 +66,16 @@ import {
|
|
|
63
66
|
describeAutoUpdateCheck,
|
|
64
67
|
readAutoUpdateState,
|
|
65
68
|
takeAutoUpdateAnnouncement
|
|
66
|
-
} from "../chunk-
|
|
69
|
+
} from "../chunk-GOWCPJTP.js";
|
|
67
70
|
import {
|
|
68
71
|
readLedgerSummary
|
|
69
|
-
} from "../chunk-
|
|
72
|
+
} from "../chunk-552AGATI.js";
|
|
70
73
|
import {
|
|
71
74
|
describeBridgeResolution,
|
|
72
75
|
isBridgeLocator,
|
|
73
76
|
liveBridgeProbe,
|
|
74
77
|
resolveBridgeStub
|
|
75
|
-
} from "../chunk-
|
|
78
|
+
} from "../chunk-FANGHYW5.js";
|
|
76
79
|
import {
|
|
77
80
|
claudeOtherHolders,
|
|
78
81
|
claudeUnprovenHolds,
|
|
@@ -89,7 +92,7 @@ import {
|
|
|
89
92
|
geminiWired,
|
|
90
93
|
holdsLong,
|
|
91
94
|
pusharyHookExecutable
|
|
92
|
-
} from "../chunk-
|
|
95
|
+
} from "../chunk-VRYOALHQ.js";
|
|
93
96
|
import {
|
|
94
97
|
daemonHasRemoteProof,
|
|
95
98
|
daemonServiceManagerAvailable,
|
|
@@ -98,19 +101,19 @@ import {
|
|
|
98
101
|
readDaemonNeedsLogin,
|
|
99
102
|
readDaemonStatus,
|
|
100
103
|
readInstalledDaemonService
|
|
101
|
-
} from "../chunk-
|
|
104
|
+
} from "../chunk-WL4YO6CO.js";
|
|
102
105
|
import {
|
|
103
106
|
GEMINI_HOOK_BINARY,
|
|
104
107
|
hasGeminiHooks,
|
|
105
108
|
missingGeminiHookEvents
|
|
106
|
-
} from "../chunk-
|
|
109
|
+
} from "../chunk-CVVPUVBD.js";
|
|
107
110
|
import "../chunk-XHKBHWLX.js";
|
|
108
111
|
import "../chunk-6ICPEJY5.js";
|
|
109
|
-
import "../chunk-
|
|
112
|
+
import "../chunk-CJFVYYKM.js";
|
|
110
113
|
import "../chunk-N6IOSZOE.js";
|
|
111
|
-
import "../chunk-
|
|
112
|
-
import "../chunk-
|
|
113
|
-
import "../chunk-
|
|
114
|
+
import "../chunk-HBUQ2EQD.js";
|
|
115
|
+
import "../chunk-UWMEY4RS.js";
|
|
116
|
+
import "../chunk-PPC4FZKJ.js";
|
|
114
117
|
import "../chunk-POFBE6ZY.js";
|
|
115
118
|
import {
|
|
116
119
|
describeReach,
|
|
@@ -119,7 +122,7 @@ import {
|
|
|
119
122
|
reachVerdict,
|
|
120
123
|
roundTripEvidence,
|
|
121
124
|
verifyRoundTrip
|
|
122
|
-
} from "../chunk-
|
|
125
|
+
} from "../chunk-BPGATW2F.js";
|
|
123
126
|
import "../chunk-3EGEA4KH.js";
|
|
124
127
|
import "../chunk-QCGNGEGE.js";
|
|
125
128
|
import {
|
|
@@ -127,7 +130,7 @@ import {
|
|
|
127
130
|
} from "../chunk-U4TMAANR.js";
|
|
128
131
|
import {
|
|
129
132
|
exitOnHelpFlag
|
|
130
|
-
} from "../chunk-
|
|
133
|
+
} from "../chunk-DEWCUHOY.js";
|
|
131
134
|
import {
|
|
132
135
|
parseFlags
|
|
133
136
|
} from "../chunk-GMXKITVA.js";
|
|
@@ -135,28 +138,29 @@ import {
|
|
|
135
138
|
keyPrefix,
|
|
136
139
|
readControlMode,
|
|
137
140
|
readKeySource
|
|
138
|
-
} from "../chunk-
|
|
141
|
+
} from "../chunk-ZPTSEJMD.js";
|
|
139
142
|
import {
|
|
140
143
|
callMcpTool,
|
|
141
144
|
sendMcpRequest
|
|
142
|
-
} from "../chunk-
|
|
145
|
+
} from "../chunk-SJC5TXK7.js";
|
|
143
146
|
import {
|
|
144
147
|
checkApiKey,
|
|
145
148
|
describeKeyCheck
|
|
146
|
-
} from "../chunk-
|
|
147
|
-
import "../chunk-
|
|
149
|
+
} from "../chunk-7MO3CNBX.js";
|
|
150
|
+
import "../chunk-WRDMCP4G.js";
|
|
148
151
|
import {
|
|
149
152
|
getMachineId
|
|
150
|
-
} from "../chunk-
|
|
153
|
+
} from "../chunk-FSFI2PQL.js";
|
|
151
154
|
import {
|
|
152
155
|
UsageError
|
|
153
156
|
} from "../chunk-7QLSKOSU.js";
|
|
154
157
|
import {
|
|
155
158
|
EXIT
|
|
156
159
|
} from "../chunk-KZERVKTD.js";
|
|
157
|
-
import "../chunk-
|
|
160
|
+
import "../chunk-U3DBAX7P.js";
|
|
158
161
|
import {
|
|
159
162
|
CODEX_HOOK_EVENTS,
|
|
163
|
+
CODEX_REQUIRED_APPROVAL_EVENTS,
|
|
160
164
|
autoUpdateState,
|
|
161
165
|
claudeJson,
|
|
162
166
|
claudeSettings,
|
|
@@ -184,20 +188,21 @@ import {
|
|
|
184
188
|
readGlobalCliInstall,
|
|
185
189
|
resolvePathBinary,
|
|
186
190
|
vscodePluginDir
|
|
187
|
-
} from "../chunk-
|
|
191
|
+
} from "../chunk-5IIAUWEJ.js";
|
|
188
192
|
import "../chunk-T7E75EKA.js";
|
|
189
193
|
import {
|
|
190
194
|
getBaseUrl
|
|
191
|
-
} from "../chunk-
|
|
195
|
+
} from "../chunk-4GTXFYQ7.js";
|
|
192
196
|
import {
|
|
193
197
|
NPX_LATEST_COMMAND
|
|
194
|
-
} from "../chunk-
|
|
198
|
+
} from "../chunk-EZFE4PC3.js";
|
|
195
199
|
import {
|
|
196
200
|
AGENTS,
|
|
197
201
|
CURSOR_GATE_EVENTS,
|
|
198
202
|
HOOK_COMPATIBLE_PROFILES,
|
|
199
203
|
HOOK_LOCATOR_BINARY,
|
|
200
204
|
HOOK_SOURCES,
|
|
205
|
+
MAX_HOOK_ACTIVATION_EVIDENCE_ROWS,
|
|
201
206
|
SUPPORT_DISCORD,
|
|
202
207
|
SUPPORT_EMAIL,
|
|
203
208
|
commandsPackage,
|
|
@@ -206,11 +211,11 @@ import {
|
|
|
206
211
|
hookCompatibleProfile,
|
|
207
212
|
isHookActivationReport,
|
|
208
213
|
isNewerVersion
|
|
209
|
-
} from "../chunk-
|
|
214
|
+
} from "../chunk-JDUWMJDP.js";
|
|
210
215
|
|
|
211
216
|
// bin/pushary-doctor.ts
|
|
212
217
|
import { existsSync, readFileSync, writeFileSync } from "fs";
|
|
213
|
-
import { join
|
|
218
|
+
import { join as join2 } from "path";
|
|
214
219
|
import { homedir as homedir2 } from "os";
|
|
215
220
|
import { execFileSync } from "child_process";
|
|
216
221
|
import { confirm } from "@inquirer/prompts";
|
|
@@ -401,8 +406,27 @@ var inertRegistrationRemedy = () => `Upgrade with ${NPX_LATEST_COMMAND} upgrade,
|
|
|
401
406
|
var CURSOR_GATE_SCRIPT = "pushary-gate.mjs";
|
|
402
407
|
|
|
403
408
|
// src/diagnostics/activation.ts
|
|
404
|
-
|
|
405
|
-
|
|
409
|
+
import { realpathSync } from "fs";
|
|
410
|
+
import { basename, dirname, join, resolve } from "path";
|
|
411
|
+
var realpathOrNull = (path) => {
|
|
412
|
+
try {
|
|
413
|
+
return realpathSync(path);
|
|
414
|
+
} catch {
|
|
415
|
+
return null;
|
|
416
|
+
}
|
|
417
|
+
};
|
|
418
|
+
var canonicalPath = (path) => realpathOrNull(path) ?? join(realpathOrNull(dirname(path)) ?? dirname(path), basename(path));
|
|
419
|
+
var logicalCwd = () => {
|
|
420
|
+
const shell = process.env.PWD;
|
|
421
|
+
return shell && canonicalPath(shell) === canonicalPath(process.cwd()) ? shell : process.cwd();
|
|
422
|
+
};
|
|
423
|
+
var activationTargetPaths = (target, cwd = logicalCwd()) => {
|
|
424
|
+
const literal = resolve(cwd, target);
|
|
425
|
+
const canonical = canonicalPath(literal);
|
|
426
|
+
return canonical === literal ? [literal] : [literal, canonical];
|
|
427
|
+
};
|
|
428
|
+
var newestFirst = (a, b) => Date.parse(b.createdAt) - Date.parse(a.createdAt);
|
|
429
|
+
var readActivationAt = async (apiKey, agentType, machineId, target, deps) => {
|
|
406
430
|
const url = new URL("/api/agent/onboarding/activation", deps.baseUrl ?? getBaseUrl());
|
|
407
431
|
url.searchParams.set("machineId", machineId);
|
|
408
432
|
url.searchParams.set("agent", agentType);
|
|
@@ -422,6 +446,19 @@ var readHookActivation = async (apiKey, agentType, target, deps = {}) => {
|
|
|
422
446
|
return { kind: "unavailable", detail: "Activation evidence could not be read. Retry when the connection is available." };
|
|
423
447
|
}
|
|
424
448
|
};
|
|
449
|
+
var readHookActivation = async (apiKey, agentType, target, deps = {}) => {
|
|
450
|
+
const machineId = deps.machineId ?? getMachineId();
|
|
451
|
+
const paths = activationTargetPaths(target, deps.cwd);
|
|
452
|
+
const reads = await Promise.all(paths.map((path) => readActivationAt(apiKey, agentType, machineId, path, deps)));
|
|
453
|
+
const reports = [];
|
|
454
|
+
for (const read of reads) {
|
|
455
|
+
if (read.kind === "unavailable") return read;
|
|
456
|
+
reports.push(read.report);
|
|
457
|
+
}
|
|
458
|
+
const evidence = reports.flatMap((report) => report.evidence).sort(newestFirst);
|
|
459
|
+
const truncated = reports.some((report) => report.truncated) || evidence.length > MAX_HOOK_ACTIVATION_EVIDENCE_ROWS;
|
|
460
|
+
return { kind: "ok", report: { agentType, machineId, target: paths[0], truncated, evidence: truncated ? [] : evidence } };
|
|
461
|
+
};
|
|
425
462
|
|
|
426
463
|
// src/diagnostics/roundtrip-plan.ts
|
|
427
464
|
var planRoundTrip = (context) => {
|
|
@@ -455,7 +492,7 @@ var parseDoctorOptions = (argv) => {
|
|
|
455
492
|
if (activation2 && (!Object.hasOwn(AGENTS, activation2) || !AGENTS[activation2].activationGuide)) throw new UsageError("This build supports --activation claude_code. Other integrations remain unverified.");
|
|
456
493
|
const rawTarget = flags.values.get("activation-target");
|
|
457
494
|
if (Boolean(activation2) !== Boolean(rawTarget)) throw new UsageError("--activation requires --activation-target with the unique scratch-file path used for this check.");
|
|
458
|
-
const activationTarget = rawTarget
|
|
495
|
+
const activationTarget = rawTarget ?? null;
|
|
459
496
|
const noPush = flags.bools.has("no-push") || activation2 !== null && !roundtrip;
|
|
460
497
|
if (roundtrip && noPush) {
|
|
461
498
|
throw new UsageError("--roundtrip needs to send a push, so it cannot be combined with --no-push");
|
|
@@ -486,8 +523,8 @@ var fail = red("\u2717");
|
|
|
486
523
|
var warn = yellow("!");
|
|
487
524
|
var CLAUDE_SETTINGS = claudeSettings();
|
|
488
525
|
var registeredConfigs = () => [CLAUDE_SETTINGS, codexHooksJson(), ...HOOK_COMPATIBLE_PROFILES.map((profile) => compatibleConfigFile(profile))].filter(existsSync).map((file) => ({ file, contents: readFileSync(file, "utf-8") }));
|
|
489
|
-
var SKILL_PATH =
|
|
490
|
-
var SHELL_FILES = [".zshrc", ".zprofile", ".bashrc", ".bash_profile"].map((f) =>
|
|
526
|
+
var SKILL_PATH = join2(claudeSkillDir(), "SKILL.md");
|
|
527
|
+
var SHELL_FILES = [".zshrc", ".zprofile", ".bashrc", ".bash_profile"].map((f) => join2(homedir2(), f));
|
|
491
528
|
var reportFxQuestionRouting = (routing) => {
|
|
492
529
|
if (routing === "routed") {
|
|
493
530
|
check(true, "fx: questions go through Pushary", `${FX_QUESTION_TOOL} is off in ${fxSettings()}`);
|
|
@@ -587,7 +624,7 @@ var reportCodexOwnTrust = (assessment) => {
|
|
|
587
624
|
check(false, "Codex: hooks trusted", CODEX_NONE_LISTED);
|
|
588
625
|
return;
|
|
589
626
|
}
|
|
590
|
-
check(assessment.kind === "trusted", "Codex: hooks trusted", assessment.kind === "trusted" ? `Codex reports ${assessment.trusted} of ${assessment.total} trusted` : `Codex reports ${describeReadings(assessment.failures)}.
|
|
627
|
+
check(assessment.kind === "trusted", "Codex: hooks trusted", assessment.kind === "trusted" ? `Codex reports ${assessment.trusted} of ${assessment.total} trusted` : `Codex reports ${describeReadings(assessment.failures)}. Run /hooks in Codex to enable and trust them, or re-run setup to repair the registrations`);
|
|
591
628
|
if (assessment.notListed.length > 0) {
|
|
592
629
|
console.log(` ${warn} Codex: does not list ${assessment.notListed.join(", ")} ${dim("(this Codex may not support those events yet)")}`);
|
|
593
630
|
}
|
|
@@ -595,6 +632,13 @@ var reportCodexOwnTrust = (assessment) => {
|
|
|
595
632
|
console.log(` ${warn} Codex: ${assessment.disabled.join(", ")} turned off in Codex ${dim("(turn them back on in /hooks)")}`);
|
|
596
633
|
}
|
|
597
634
|
};
|
|
635
|
+
var describeStoredCodexTrust = (untrusted, disabled, missing, asynchronous) => {
|
|
636
|
+
if (asynchronous.length > 0) return `asynchronous (${asynchronous.join(", ")}) \u2014 re-run setup to restore blocking permission hooks`;
|
|
637
|
+
if (missing.length > 0) return `missing (${missing.join(", ")}) \u2014 re-run setup to register the permission hooks`;
|
|
638
|
+
if (disabled.length > 0) return `disabled (${disabled.join(", ")}) \u2014 type /hooks in Codex to enable the permission hooks`;
|
|
639
|
+
if (untrusted.length > 0) return `untrusted (${untrusted.join(", ")}) \u2014 type /hooks in Codex and trust them, once`;
|
|
640
|
+
return "all events trusted";
|
|
641
|
+
};
|
|
598
642
|
var skipped = (label, why) => {
|
|
599
643
|
console.log(` ${dim("\u2013")} ${label} ${dim(`(${why})`)}`);
|
|
600
644
|
};
|
|
@@ -737,7 +781,7 @@ var main = async () => {
|
|
|
737
781
|
}
|
|
738
782
|
const claudeHookState = { wired: claudeInPlay, hooksIntact: settings !== null && claudeHooksMissing === 0 };
|
|
739
783
|
for (const finding of rewriterFindings({
|
|
740
|
-
present: (rewriter) => rewriter.markers.some((marker) => existsSync(
|
|
784
|
+
present: (rewriter) => rewriter.markers.some((marker) => existsSync(join2(homedir2(), ...marker))),
|
|
741
785
|
agentState: (agent) => agent === "Claude Code" ? claudeHookState : void 0
|
|
742
786
|
})) {
|
|
743
787
|
console.log(` ${warn} ${describeRewriterFinding(finding)}`);
|
|
@@ -756,7 +800,7 @@ var main = async () => {
|
|
|
756
800
|
const codexInPlay = codexWired({
|
|
757
801
|
config: codexParsed,
|
|
758
802
|
hooks: codexHooksConfig,
|
|
759
|
-
skillExists: existsSync(
|
|
803
|
+
skillExists: existsSync(join2(codexSkillDir(), "SKILL.md"))
|
|
760
804
|
});
|
|
761
805
|
if (codexInPlay) {
|
|
762
806
|
checking("Codex");
|
|
@@ -819,6 +863,9 @@ var main = async () => {
|
|
|
819
863
|
positions
|
|
820
864
|
);
|
|
821
865
|
const untrusted = gaps.filter((gap) => gap.kind === "untrusted").map((gap) => gap.event);
|
|
866
|
+
const missingApprovals = CODEX_REQUIRED_APPROVAL_EVENTS.filter((event) => !positions[event]);
|
|
867
|
+
const disabled = gaps.filter((gap) => gap.kind === "disabled").map((gap) => gap.event);
|
|
868
|
+
const asynchronous = gaps.filter((gap) => gap.kind === "asynchronous").map((gap) => gap.event);
|
|
822
869
|
const stale = gaps.filter((gap) => gap.kind === "stale").map((gap) => gap.event);
|
|
823
870
|
const codexTrust = await readCodexTrustForPusharyHooks();
|
|
824
871
|
if (codexTrust.kind === "listed") {
|
|
@@ -826,7 +873,11 @@ var main = async () => {
|
|
|
826
873
|
} else {
|
|
827
874
|
const why = codexTrust.kind === "skipped" ? "did not ask" : "could not ask";
|
|
828
875
|
console.log(` ${warn} Codex: ${why} Codex about hook trust ${dim(`(${codexTrust.reason}); checking Pushary's own record instead`)}`);
|
|
829
|
-
check(
|
|
876
|
+
check(
|
|
877
|
+
untrusted.length === 0 && disabled.length === 0 && missingApprovals.length === 0 && asynchronous.length === 0,
|
|
878
|
+
"Codex: hooks trusted",
|
|
879
|
+
describeStoredCodexTrust(untrusted, disabled, missingApprovals, asynchronous)
|
|
880
|
+
);
|
|
830
881
|
}
|
|
831
882
|
if (stale.length > 0) {
|
|
832
883
|
console.log(` ${warn} Codex: ${stale.join(", ")} trusted at an older shape ${dim("(fires normally; re-run setup to pick up the current one)")}`);
|
|
@@ -842,7 +893,7 @@ var main = async () => {
|
|
|
842
893
|
check(resolves, "Codex: notify handler resolves", resolves ? codexNotifyPath : `not found: ${codexNotifyPath}`);
|
|
843
894
|
}
|
|
844
895
|
}
|
|
845
|
-
const codexSkillPath =
|
|
896
|
+
const codexSkillPath = join2(codexSkillDir(), "SKILL.md");
|
|
846
897
|
check(existsSync(codexSkillPath), "Codex: skill installed");
|
|
847
898
|
const codexAgentsMd2 = codexAgentsMd();
|
|
848
899
|
const hasCodexInstructions = hasInstructionBlock(codexAgentsMd2);
|
|
@@ -1030,7 +1081,7 @@ var main = async () => {
|
|
|
1030
1081
|
}
|
|
1031
1082
|
reportOtherHolders("Cursor", cursorOtherHolders(cursorUserHooksJson));
|
|
1032
1083
|
const { authorization: cursorAuth, source: cursorMcpSource } = cursorMcpAuthorization(
|
|
1033
|
-
readJson(
|
|
1084
|
+
readJson(join2(cursorPluginDir2, "mcp.json")),
|
|
1034
1085
|
cursorUserMcpJson
|
|
1035
1086
|
);
|
|
1036
1087
|
if (!cursorAuth) {
|
|
@@ -1056,7 +1107,7 @@ var main = async () => {
|
|
|
1056
1107
|
"VS Code: plugin registered",
|
|
1057
1108
|
registeredIn.length > 0 ? registeredIn.join(", ") : "not listed in chat.pluginLocations \u2014 re-run setup (an unregistered plugin directory is never loaded)"
|
|
1058
1109
|
);
|
|
1059
|
-
const vscodeHooks = readJson(
|
|
1110
|
+
const vscodeHooks = readJson(join2(vscodePluginDir2, "hooks", "hooks.json"));
|
|
1060
1111
|
const gateCommand = extractAgentHookCommand(vscodeHooks?.hooks?.PreToolUse, CURSOR_GATE_SCRIPT);
|
|
1061
1112
|
if (!gateCommand) {
|
|
1062
1113
|
check(false, "VS Code: permission gate present", "no Pushary gate in the plugin hooks.json \u2014 re-run setup");
|
|
@@ -1070,7 +1121,7 @@ var main = async () => {
|
|
|
1070
1121
|
);
|
|
1071
1122
|
noteHookTarget(gateCommand);
|
|
1072
1123
|
}
|
|
1073
|
-
const vscodeMcp = readJson(
|
|
1124
|
+
const vscodeMcp = readJson(join2(vscodePluginDir2, ".mcp.json"));
|
|
1074
1125
|
const vscodeServers = vscodeMcp?.mcpServers ?? {};
|
|
1075
1126
|
const vscodeAuth = vscodeServers.pushary?.headers?.Authorization;
|
|
1076
1127
|
if (!vscodeAuth) {
|
|
@@ -1118,7 +1169,7 @@ var main = async () => {
|
|
|
1118
1169
|
existsSync(binary) ? binary : `${binary} is not there \u2014 re-run setup`
|
|
1119
1170
|
);
|
|
1120
1171
|
}
|
|
1121
|
-
const manifest =
|
|
1172
|
+
const manifest = join2(openCodePluginDir(), "package.json");
|
|
1122
1173
|
check(
|
|
1123
1174
|
existsSync(manifest),
|
|
1124
1175
|
"OpenCode: plugins directory declares ESM",
|
|
@@ -1397,7 +1448,7 @@ var main = async () => {
|
|
|
1397
1448
|
checks: results.map((r) => ({ id: r.label, ok: r.passed, detail: r.detail ?? "" }))
|
|
1398
1449
|
})
|
|
1399
1450
|
);
|
|
1400
|
-
const target =
|
|
1451
|
+
const target = join2(process.cwd(), bundleFileName(bundle));
|
|
1401
1452
|
writeFileSync(target, `${JSON.stringify(bundle, null, 2)}
|
|
1402
1453
|
`, "utf-8");
|
|
1403
1454
|
const say = options.json ? process.stderr : process.stdout;
|
|
@@ -1411,7 +1462,7 @@ var main = async () => {
|
|
|
1411
1462
|
}
|
|
1412
1463
|
}
|
|
1413
1464
|
if (options.json) {
|
|
1414
|
-
await
|
|
1465
|
+
await writeStdoutFully(`${JSON.stringify({
|
|
1415
1466
|
ok: exitCode === EXIT.OK,
|
|
1416
1467
|
exitCode,
|
|
1417
1468
|
keyCheck: keyVerdict?.kind ?? null,
|
|
@@ -1426,7 +1477,7 @@ var main = async () => {
|
|
|
1426
1477
|
checks: results.map((r) => ({ label: r.label, passed: r.passed, detail: r.detail ?? null })),
|
|
1427
1478
|
otherHolders: otherHoldersByAgent
|
|
1428
1479
|
}, null, 2)}
|
|
1429
|
-
|
|
1480
|
+
`);
|
|
1430
1481
|
}
|
|
1431
1482
|
process.exit(exitCode);
|
|
1432
1483
|
};
|
|
@@ -1,53 +1,53 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
readHookInput
|
|
4
|
-
} from "../chunk-
|
|
4
|
+
} from "../chunk-G2YXIZZS.js";
|
|
5
5
|
import {
|
|
6
6
|
announceSubscriptionRequired,
|
|
7
7
|
isDeferAnswer
|
|
8
8
|
} from "../chunk-5OP5MQI7.js";
|
|
9
|
-
import "../chunk-
|
|
9
|
+
import "../chunk-AMFNJPJ5.js";
|
|
10
10
|
import "../chunk-SGZJ5LYH.js";
|
|
11
|
-
import "../chunk-
|
|
12
|
-
import "../chunk-
|
|
13
|
-
import "../chunk-
|
|
14
|
-
import "../chunk-
|
|
15
|
-
import "../chunk-
|
|
16
|
-
import "../chunk-
|
|
17
|
-
import "../chunk-
|
|
18
|
-
import "../chunk-
|
|
19
|
-
import "../chunk-
|
|
20
|
-
import "../chunk-
|
|
11
|
+
import "../chunk-GB2U4QVF.js";
|
|
12
|
+
import "../chunk-MH6SJHUE.js";
|
|
13
|
+
import "../chunk-FANGHYW5.js";
|
|
14
|
+
import "../chunk-VRYOALHQ.js";
|
|
15
|
+
import "../chunk-WL4YO6CO.js";
|
|
16
|
+
import "../chunk-CVVPUVBD.js";
|
|
17
|
+
import "../chunk-2UWD2WZC.js";
|
|
18
|
+
import "../chunk-Q4RF7EEP.js";
|
|
19
|
+
import "../chunk-ZV32QRBR.js";
|
|
20
|
+
import "../chunk-34JHGOYO.js";
|
|
21
21
|
import "../chunk-XHKBHWLX.js";
|
|
22
22
|
import "../chunk-6ICPEJY5.js";
|
|
23
23
|
import "../chunk-N6IOSZOE.js";
|
|
24
|
-
import "../chunk-
|
|
24
|
+
import "../chunk-HBUQ2EQD.js";
|
|
25
25
|
import {
|
|
26
26
|
askUser,
|
|
27
27
|
isDecisionStopped,
|
|
28
28
|
waitForQuestion
|
|
29
|
-
} from "../chunk-
|
|
30
|
-
import "../chunk-
|
|
29
|
+
} from "../chunk-UWMEY4RS.js";
|
|
30
|
+
import "../chunk-PPC4FZKJ.js";
|
|
31
31
|
import "../chunk-POFBE6ZY.js";
|
|
32
32
|
import "../chunk-GMXKITVA.js";
|
|
33
|
-
import "../chunk-
|
|
33
|
+
import "../chunk-ZPTSEJMD.js";
|
|
34
34
|
import {
|
|
35
35
|
SubscriptionRequiredError
|
|
36
|
-
} from "../chunk-
|
|
37
|
-
import "../chunk-
|
|
38
|
-
import "../chunk-
|
|
36
|
+
} from "../chunk-SJC5TXK7.js";
|
|
37
|
+
import "../chunk-7MO3CNBX.js";
|
|
38
|
+
import "../chunk-WRDMCP4G.js";
|
|
39
39
|
import {
|
|
40
40
|
getMachineId
|
|
41
|
-
} from "../chunk-
|
|
41
|
+
} from "../chunk-FSFI2PQL.js";
|
|
42
42
|
import "../chunk-7QLSKOSU.js";
|
|
43
43
|
import "../chunk-KZERVKTD.js";
|
|
44
|
-
import "../chunk-
|
|
45
|
-
import "../chunk-
|
|
44
|
+
import "../chunk-U3DBAX7P.js";
|
|
45
|
+
import "../chunk-5IIAUWEJ.js";
|
|
46
46
|
import "../chunk-T7E75EKA.js";
|
|
47
47
|
import {
|
|
48
48
|
getApiKey
|
|
49
|
-
} from "../chunk-
|
|
50
|
-
import "../chunk-
|
|
49
|
+
} from "../chunk-4GTXFYQ7.js";
|
|
50
|
+
import "../chunk-EZFE4PC3.js";
|
|
51
51
|
import {
|
|
52
52
|
ELICITATION_ANSWERABLE_MODE,
|
|
53
53
|
effectiveWaitSeconds,
|
|
@@ -58,7 +58,7 @@ import {
|
|
|
58
58
|
planElicitationAsk,
|
|
59
59
|
readElicitationFields,
|
|
60
60
|
renderElicitationOutput
|
|
61
|
-
} from "../chunk-
|
|
61
|
+
} from "../chunk-JDUWMJDP.js";
|
|
62
62
|
|
|
63
63
|
// bin/pushary-elicitation-hook.ts
|
|
64
64
|
import { basename } from "path";
|
|
@@ -5,10 +5,10 @@ import {
|
|
|
5
5
|
postLiveSession,
|
|
6
6
|
postLiveSessionUntilAccepted,
|
|
7
7
|
startLiveSessionHeartbeat
|
|
8
|
-
} from "../chunk-
|
|
8
|
+
} from "../chunk-FLUECSUC.js";
|
|
9
9
|
import {
|
|
10
10
|
resolveProviderBinary
|
|
11
|
-
} from "../chunk-
|
|
11
|
+
} from "../chunk-AGW7PMMO.js";
|
|
12
12
|
import "../chunk-RIVNNBEK.js";
|
|
13
13
|
import {
|
|
14
14
|
SESSION_IDLE_TIMEOUT_MS,
|
|
@@ -16,29 +16,29 @@ import {
|
|
|
16
16
|
idleDeadlinePassed,
|
|
17
17
|
startProcessOwnership,
|
|
18
18
|
withSpawnProcessOwnership
|
|
19
|
-
} from "../chunk-
|
|
20
|
-
import "../chunk-
|
|
21
|
-
import "../chunk-
|
|
19
|
+
} from "../chunk-OXJRUMZT.js";
|
|
20
|
+
import "../chunk-Q4RF7EEP.js";
|
|
21
|
+
import "../chunk-ZV32QRBR.js";
|
|
22
22
|
import {
|
|
23
23
|
transcriptsEnabled
|
|
24
|
-
} from "../chunk-
|
|
24
|
+
} from "../chunk-34JHGOYO.js";
|
|
25
25
|
import {
|
|
26
26
|
spawnClaude
|
|
27
27
|
} from "../chunk-XHKBHWLX.js";
|
|
28
28
|
import "../chunk-6ICPEJY5.js";
|
|
29
|
-
import "../chunk-
|
|
29
|
+
import "../chunk-ZPTSEJMD.js";
|
|
30
30
|
import {
|
|
31
31
|
getMachineId
|
|
32
|
-
} from "../chunk-
|
|
33
|
-
import "../chunk-
|
|
34
|
-
import "../chunk-
|
|
32
|
+
} from "../chunk-FSFI2PQL.js";
|
|
33
|
+
import "../chunk-U3DBAX7P.js";
|
|
34
|
+
import "../chunk-5IIAUWEJ.js";
|
|
35
35
|
import "../chunk-T7E75EKA.js";
|
|
36
36
|
import {
|
|
37
37
|
getApiKey,
|
|
38
38
|
getBaseUrl
|
|
39
|
-
} from "../chunk-
|
|
40
|
-
import "../chunk-
|
|
41
|
-
import "../chunk-
|
|
39
|
+
} from "../chunk-4GTXFYQ7.js";
|
|
40
|
+
import "../chunk-EZFE4PC3.js";
|
|
41
|
+
import "../chunk-JDUWMJDP.js";
|
|
42
42
|
|
|
43
43
|
// bin/pushary-gemini-bridge.ts
|
|
44
44
|
import { existsSync } from "fs";
|
|
@@ -1,31 +1,31 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
triggerAutoUpdate
|
|
4
|
-
} from "../chunk-
|
|
4
|
+
} from "../chunk-GOWCPJTP.js";
|
|
5
5
|
import {
|
|
6
6
|
isGatingMoment,
|
|
7
7
|
recordKeylessMoment
|
|
8
|
-
} from "../chunk-
|
|
8
|
+
} from "../chunk-552AGATI.js";
|
|
9
9
|
import {
|
|
10
10
|
readHookInput
|
|
11
|
-
} from "../chunk-
|
|
11
|
+
} from "../chunk-G2YXIZZS.js";
|
|
12
12
|
import {
|
|
13
13
|
announceSubscriptionRequired,
|
|
14
14
|
denyReasonFrom,
|
|
15
15
|
isDeferAnswer
|
|
16
16
|
} from "../chunk-5OP5MQI7.js";
|
|
17
|
-
import "../chunk-
|
|
17
|
+
import "../chunk-AMFNJPJ5.js";
|
|
18
18
|
import "../chunk-SGZJ5LYH.js";
|
|
19
|
-
import "../chunk-
|
|
20
|
-
import "../chunk-
|
|
21
|
-
import "../chunk-
|
|
22
|
-
import "../chunk-
|
|
23
|
-
import "../chunk-
|
|
24
|
-
import "../chunk-
|
|
25
|
-
import "../chunk-
|
|
26
|
-
import "../chunk-
|
|
27
|
-
import "../chunk-
|
|
28
|
-
import "../chunk-
|
|
19
|
+
import "../chunk-GB2U4QVF.js";
|
|
20
|
+
import "../chunk-MH6SJHUE.js";
|
|
21
|
+
import "../chunk-FANGHYW5.js";
|
|
22
|
+
import "../chunk-VRYOALHQ.js";
|
|
23
|
+
import "../chunk-WL4YO6CO.js";
|
|
24
|
+
import "../chunk-CVVPUVBD.js";
|
|
25
|
+
import "../chunk-2UWD2WZC.js";
|
|
26
|
+
import "../chunk-Q4RF7EEP.js";
|
|
27
|
+
import "../chunk-ZV32QRBR.js";
|
|
28
|
+
import "../chunk-34JHGOYO.js";
|
|
29
29
|
import "../chunk-XHKBHWLX.js";
|
|
30
30
|
import "../chunk-6ICPEJY5.js";
|
|
31
31
|
import {
|
|
@@ -46,11 +46,11 @@ import {
|
|
|
46
46
|
repoKeyFor,
|
|
47
47
|
reportEvent,
|
|
48
48
|
scopePathFor
|
|
49
|
-
} from "../chunk-
|
|
49
|
+
} from "../chunk-CJFVYYKM.js";
|
|
50
50
|
import {
|
|
51
51
|
DEFAULT_SESSION
|
|
52
52
|
} from "../chunk-N6IOSZOE.js";
|
|
53
|
-
import "../chunk-
|
|
53
|
+
import "../chunk-HBUQ2EQD.js";
|
|
54
54
|
import {
|
|
55
55
|
DECISION_STOP_REASON,
|
|
56
56
|
UNVERIFIABLE_APPROVAL_REASON,
|
|
@@ -59,32 +59,32 @@ import {
|
|
|
59
59
|
isLocalQuestionHandoff,
|
|
60
60
|
sendNotification,
|
|
61
61
|
waitForQuestion
|
|
62
|
-
} from "../chunk-
|
|
62
|
+
} from "../chunk-UWMEY4RS.js";
|
|
63
63
|
import {
|
|
64
64
|
exitAfterClientReports
|
|
65
|
-
} from "../chunk-
|
|
65
|
+
} from "../chunk-PPC4FZKJ.js";
|
|
66
66
|
import "../chunk-POFBE6ZY.js";
|
|
67
67
|
import "../chunk-GMXKITVA.js";
|
|
68
|
-
import "../chunk-
|
|
68
|
+
import "../chunk-ZPTSEJMD.js";
|
|
69
69
|
import {
|
|
70
70
|
SubscriptionRequiredError
|
|
71
|
-
} from "../chunk-
|
|
72
|
-
import "../chunk-
|
|
73
|
-
import "../chunk-
|
|
71
|
+
} from "../chunk-SJC5TXK7.js";
|
|
72
|
+
import "../chunk-7MO3CNBX.js";
|
|
73
|
+
import "../chunk-WRDMCP4G.js";
|
|
74
74
|
import {
|
|
75
75
|
getMachineId
|
|
76
|
-
} from "../chunk-
|
|
76
|
+
} from "../chunk-FSFI2PQL.js";
|
|
77
77
|
import "../chunk-7QLSKOSU.js";
|
|
78
78
|
import {
|
|
79
79
|
EXIT
|
|
80
80
|
} from "../chunk-KZERVKTD.js";
|
|
81
|
-
import "../chunk-
|
|
82
|
-
import "../chunk-
|
|
81
|
+
import "../chunk-U3DBAX7P.js";
|
|
82
|
+
import "../chunk-5IIAUWEJ.js";
|
|
83
83
|
import "../chunk-T7E75EKA.js";
|
|
84
84
|
import {
|
|
85
85
|
getApiKey
|
|
86
|
-
} from "../chunk-
|
|
87
|
-
import "../chunk-
|
|
86
|
+
} from "../chunk-4GTXFYQ7.js";
|
|
87
|
+
import "../chunk-EZFE4PC3.js";
|
|
88
88
|
import {
|
|
89
89
|
KILL_REASON,
|
|
90
90
|
effectiveWaitSeconds,
|
|
@@ -92,7 +92,7 @@ import {
|
|
|
92
92
|
hookWaitClamped,
|
|
93
93
|
hookWaitDeadline,
|
|
94
94
|
resolveGate
|
|
95
|
-
} from "../chunk-
|
|
95
|
+
} from "../chunk-JDUWMJDP.js";
|
|
96
96
|
|
|
97
97
|
// bin/pushary-gemini-hook.ts
|
|
98
98
|
import { basename } from "path";
|