@pushary/agent-hooks 0.87.2 → 0.87.4
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/data/cursor-plugin/hooks/hooks.json +7 -0
- package/data/cursor-plugin/scripts/pushary-gate.mjs +94 -28
- package/data/cursor-plugin/scripts/pushary-gate.test.mjs +81 -1
- package/dist/bin/pushary-bell-hook.js +4 -4
- package/dist/bin/pushary-bell.js +7 -6
- package/dist/bin/pushary-claude.js +14 -11
- package/dist/bin/pushary-clean.js +36 -20
- package/dist/bin/pushary-codex-bridge.js +6 -5
- package/dist/bin/pushary-codex-hook.js +129 -52
- package/dist/bin/pushary-codex.js +4 -3
- package/dist/bin/pushary-connect.js +6 -6
- package/dist/bin/pushary-daemon.js +5 -4
- package/dist/bin/pushary-disconnect.js +65 -8
- package/dist/bin/pushary-doctor.js +79 -18
- package/dist/bin/pushary-elicitation-hook.js +1 -1
- package/dist/bin/pushary-gemini-bridge.js +6 -5
- package/dist/bin/pushary-gemini-hook.js +12 -10
- package/dist/bin/pushary-hook.js +6 -5
- package/dist/bin/pushary-login.js +4 -4
- package/dist/bin/pushary-logout.js +5 -4
- package/dist/bin/pushary-mode.js +3 -3
- package/dist/bin/pushary-notification-hook.js +4 -3
- package/dist/bin/pushary-opencode-hook.d.ts +1 -0
- package/dist/bin/pushary-opencode-hook.js +329 -0
- package/dist/bin/pushary-permission-denied-hook.js +6 -5
- package/dist/bin/pushary-permission-hook.js +6 -5
- package/dist/bin/pushary-post-hook.js +4 -3
- package/dist/bin/pushary-prompt-hook.js +4 -3
- package/dist/bin/pushary-session-end-hook.js +4 -3
- package/dist/bin/pushary-session-start-hook.js +4 -3
- package/dist/bin/pushary-setup.js +238 -84
- package/dist/bin/pushary-stats.js +2 -2
- package/dist/bin/pushary-status.js +5 -5
- package/dist/bin/pushary-stop-hook.js +4 -3
- package/dist/bin/pushary-stopfailure-hook.js +4 -3
- package/dist/bin/pushary-upgrade.js +7 -6
- package/dist/bin/pushary-wait.js +3 -3
- package/dist/{chunk-5646VKR4.js → chunk-2JYQAW4B.js} +5 -53
- package/dist/chunk-7J67NYK4.js +287 -0
- package/dist/{chunk-M7RYIZX6.js → chunk-B7ZBHWOW.js} +10 -1
- package/dist/{chunk-QBWYNVKY.js → chunk-BFBAHOGR.js} +1 -1
- package/dist/{chunk-7YJS2VTG.js → chunk-DMW54VWK.js} +12 -1
- package/dist/{chunk-3LKYBFWA.js → chunk-EJL3PJU7.js} +1 -1
- package/dist/chunk-GIRT7677.js +11 -0
- package/dist/{chunk-SJVLFIYP.js → chunk-H5PIPIKQ.js} +1 -1
- package/dist/{chunk-HAUTLCMA.js → chunk-ICERLAE2.js} +1 -1
- package/dist/{chunk-ZZE6FN7T.js → chunk-K42RXJPG.js} +52 -1
- package/dist/{chunk-Y3UTTFTZ.js → chunk-KBS53WOE.js} +1 -1
- package/dist/{chunk-A4I5JGCW.js → chunk-KFAH6KRE.js} +1 -1
- package/dist/{chunk-LT2VLPUK.js → chunk-KULUNLRO.js} +18 -2
- package/dist/{chunk-B3V2H6SA.js → chunk-NAPRGHZ3.js} +54 -13
- package/dist/{chunk-HJ44HIUW.js → chunk-OMA2OZRE.js} +11 -9
- package/dist/{chunk-ECEUMWBH.js → chunk-QLMX5LLV.js} +1 -1
- package/dist/{chunk-XW5CHAQX.js → chunk-QXZ2CKRK.js} +2 -2
- package/dist/{chunk-JAICP7BA.js → chunk-TD3M232T.js} +1 -1
- package/dist/{chunk-WLLBFDVY.js → chunk-TV3UFGT7.js} +1 -1
- package/dist/{chunk-7MBDFNUC.js → chunk-VIHRP25S.js} +1 -1
- package/dist/{chunk-V2XPF77V.js → chunk-VOE4SYPR.js} +42 -279
- package/dist/{chunk-OT4YD54Q.js → chunk-YX6ZKCC5.js} +1 -1
- package/dist/{chunk-2T3GX7WG.js → chunk-YYTLTEGU.js} +1 -1
- package/dist/chunk-ZGC3W23N.js +371 -0
- package/dist/src/index.js +6 -5
- package/package.json +2 -1
|
@@ -0,0 +1,329 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import {
|
|
3
|
+
isGatingMoment,
|
|
4
|
+
recordKeylessMoment
|
|
5
|
+
} from "../chunk-VIHRP25S.js";
|
|
6
|
+
import {
|
|
7
|
+
readHookInput
|
|
8
|
+
} from "../chunk-6CUUA7HO.js";
|
|
9
|
+
import {
|
|
10
|
+
denyReasonFrom,
|
|
11
|
+
isDeferAnswer
|
|
12
|
+
} from "../chunk-YHG74UFF.js";
|
|
13
|
+
import {
|
|
14
|
+
fetchModeState,
|
|
15
|
+
getPolicy,
|
|
16
|
+
handlePostToolUse,
|
|
17
|
+
handleStop,
|
|
18
|
+
handleUserPrompt,
|
|
19
|
+
policyRequestFor,
|
|
20
|
+
readLastPrompt,
|
|
21
|
+
repoKeyFor
|
|
22
|
+
} from "../chunk-VOE4SYPR.js";
|
|
23
|
+
import {
|
|
24
|
+
DEFAULT_SESSION,
|
|
25
|
+
askUser,
|
|
26
|
+
cancelQuestion,
|
|
27
|
+
savePendingQuestion,
|
|
28
|
+
sendNotification,
|
|
29
|
+
waitForAnswer
|
|
30
|
+
} from "../chunk-J3YDT4HM.js";
|
|
31
|
+
import {
|
|
32
|
+
OPENCODE_TOOL_NAMES,
|
|
33
|
+
deriveActionBody,
|
|
34
|
+
deriveBlocker,
|
|
35
|
+
deriveToolTarget,
|
|
36
|
+
describeToolCall,
|
|
37
|
+
scopePathFor
|
|
38
|
+
} from "../chunk-7J67NYK4.js";
|
|
39
|
+
import {
|
|
40
|
+
getMachineId
|
|
41
|
+
} from "../chunk-RN3NOEJF.js";
|
|
42
|
+
import "../chunk-BSZYIAZL.js";
|
|
43
|
+
import "../chunk-SAF6HGAA.js";
|
|
44
|
+
import "../chunk-KBS53WOE.js";
|
|
45
|
+
import "../chunk-7QLSKOSU.js";
|
|
46
|
+
import "../chunk-KZERVKTD.js";
|
|
47
|
+
import {
|
|
48
|
+
getApiKey
|
|
49
|
+
} from "../chunk-2UMNXADU.js";
|
|
50
|
+
import {
|
|
51
|
+
DECISION_LINE_MAX,
|
|
52
|
+
KILL_REASON,
|
|
53
|
+
OPENCODE_APPROVAL_EVENT,
|
|
54
|
+
effectiveWaitSeconds,
|
|
55
|
+
gateOutputFor,
|
|
56
|
+
hookWaitClamped,
|
|
57
|
+
hookWaitDeadline,
|
|
58
|
+
resolveGate
|
|
59
|
+
} from "../chunk-DMW54VWK.js";
|
|
60
|
+
|
|
61
|
+
// bin/pushary-opencode-hook.ts
|
|
62
|
+
import { basename } from "path";
|
|
63
|
+
|
|
64
|
+
// src/opencode-adapter.ts
|
|
65
|
+
var OPENCODE_AGENT = { type: "opencode", label: "OpenCode" };
|
|
66
|
+
var toOpenCodePolicyLookup = (toolName, toolInput) => ({
|
|
67
|
+
tool: OPENCODE_TOOL_NAMES[toolName] ?? toolName,
|
|
68
|
+
input: toolInput
|
|
69
|
+
});
|
|
70
|
+
var openCodeAllow = () => ({ kind: "allow" });
|
|
71
|
+
var openCodeDeny = (reason) => ({ kind: "deny", reason });
|
|
72
|
+
var openCodePass = () => ({ kind: "pass" });
|
|
73
|
+
var openCodeTimeoutDecision = (timeoutAction, denyReason = "No response within timeout") => {
|
|
74
|
+
if (timeoutAction === "approve") return openCodeAllow();
|
|
75
|
+
if (timeoutAction === "deny") return openCodeDeny(denyReason);
|
|
76
|
+
return openCodePass();
|
|
77
|
+
};
|
|
78
|
+
var toOpenCodeWire = (decision) => {
|
|
79
|
+
if (decision.kind === "pass") return null;
|
|
80
|
+
const output = gateOutputFor(
|
|
81
|
+
"opencode",
|
|
82
|
+
OPENCODE_APPROVAL_EVENT,
|
|
83
|
+
decision.kind,
|
|
84
|
+
decision.kind === "deny" ? decision.reason : void 0
|
|
85
|
+
);
|
|
86
|
+
return output ?? null;
|
|
87
|
+
};
|
|
88
|
+
|
|
89
|
+
// bin/pushary-opencode-hook.ts
|
|
90
|
+
var START_MS = Date.now();
|
|
91
|
+
var sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
|
|
92
|
+
var outstanding;
|
|
93
|
+
var pollForAnswer = async (apiKey, correlationId, deadlineMs, pollInterval = 2e3) => {
|
|
94
|
+
while (Date.now() < deadlineMs) {
|
|
95
|
+
const remaining = Math.min(Math.max(deadlineMs - Date.now(), 1e3), 3e4);
|
|
96
|
+
let answer;
|
|
97
|
+
try {
|
|
98
|
+
answer = await waitForAnswer(apiKey, correlationId, remaining);
|
|
99
|
+
} catch {
|
|
100
|
+
if (Date.now() + pollInterval >= deadlineMs) break;
|
|
101
|
+
await sleep(pollInterval);
|
|
102
|
+
continue;
|
|
103
|
+
}
|
|
104
|
+
if (answer.answered) return answer;
|
|
105
|
+
if (Date.now() + pollInterval >= deadlineMs) break;
|
|
106
|
+
await sleep(pollInterval);
|
|
107
|
+
}
|
|
108
|
+
return { answered: false };
|
|
109
|
+
};
|
|
110
|
+
var agentNameFor = (input) => `${OPENCODE_AGENT.label} - ${basename(input.cwd ?? process.cwd())}`;
|
|
111
|
+
var pushQuestion = async (apiKey, input, lookup, waitSeconds, mode, pollInterval = 2e3) => {
|
|
112
|
+
const projectName = basename(input.cwd ?? process.cwd());
|
|
113
|
+
const description = describeToolCall(lookup.tool, lookup.input, "hook");
|
|
114
|
+
const result = await askUser(apiKey, {
|
|
115
|
+
question: `Allow ${description}?`,
|
|
116
|
+
type: "confirm",
|
|
117
|
+
context: `Agent wants to run this in ${projectName}`,
|
|
118
|
+
agentName: agentNameFor(input),
|
|
119
|
+
sessionId: input.session_id,
|
|
120
|
+
machineId: getMachineId(),
|
|
121
|
+
toolName: lookup.tool,
|
|
122
|
+
toolTarget: deriveToolTarget(lookup.tool, lookup.input),
|
|
123
|
+
intent: readLastPrompt(input.session_id || DEFAULT_SESSION),
|
|
124
|
+
action: description.slice(0, DECISION_LINE_MAX),
|
|
125
|
+
blocker: deriveBlocker(mode),
|
|
126
|
+
actionBody: deriveActionBody(lookup.tool, lookup.input),
|
|
127
|
+
repoKey: repoKeyFor(input.cwd)
|
|
128
|
+
});
|
|
129
|
+
if (result.suppressed || result.noDevices) {
|
|
130
|
+
return {
|
|
131
|
+
answer: { answered: false },
|
|
132
|
+
correlationId: result.correlationId,
|
|
133
|
+
suppressed: !!result.suppressed,
|
|
134
|
+
noDevices: !!result.noDevices,
|
|
135
|
+
clampCut: false
|
|
136
|
+
};
|
|
137
|
+
}
|
|
138
|
+
outstanding = { apiKey, correlationId: result.correlationId };
|
|
139
|
+
const now = Date.now();
|
|
140
|
+
const deadline = hookWaitDeadline(START_MS, waitSeconds, "opencode", now);
|
|
141
|
+
const clampCut = hookWaitClamped(START_MS, waitSeconds, "opencode", now);
|
|
142
|
+
const answer = await pollForAnswer(apiKey, result.correlationId, deadline, pollInterval);
|
|
143
|
+
outstanding = void 0;
|
|
144
|
+
return { answer, correlationId: result.correlationId, suppressed: false, noDevices: false, clampCut };
|
|
145
|
+
};
|
|
146
|
+
var notifyApprovalNeeded = async (apiKey, input, lookup) => {
|
|
147
|
+
try {
|
|
148
|
+
await sendNotification(apiKey, {
|
|
149
|
+
title: "Agent needs approval",
|
|
150
|
+
body: describeToolCall(lookup.tool, lookup.input, "hook"),
|
|
151
|
+
agentName: agentNameFor(input),
|
|
152
|
+
sessionId: input.session_id,
|
|
153
|
+
machineId: getMachineId()
|
|
154
|
+
});
|
|
155
|
+
} catch {
|
|
156
|
+
}
|
|
157
|
+
};
|
|
158
|
+
var handlePushOnly = async (apiKey, input, lookup, timeoutSeconds, timeoutAction) => {
|
|
159
|
+
let pushed;
|
|
160
|
+
try {
|
|
161
|
+
pushed = await pushQuestion(
|
|
162
|
+
apiKey,
|
|
163
|
+
input,
|
|
164
|
+
lookup,
|
|
165
|
+
effectiveWaitSeconds(timeoutAction, timeoutSeconds, "opencode"),
|
|
166
|
+
"push_only"
|
|
167
|
+
);
|
|
168
|
+
} catch {
|
|
169
|
+
return openCodeTimeoutDecision(timeoutAction, "Push notification failed, denying per policy");
|
|
170
|
+
}
|
|
171
|
+
const { answer, correlationId, suppressed, clampCut } = pushed;
|
|
172
|
+
if (suppressed) {
|
|
173
|
+
await cancelQuestion(apiKey, correlationId).catch(() => {
|
|
174
|
+
});
|
|
175
|
+
return openCodePass();
|
|
176
|
+
}
|
|
177
|
+
if (answer.answered) {
|
|
178
|
+
if (isDeferAnswer(answer.value)) return openCodePass();
|
|
179
|
+
return answer.value === "yes" ? openCodeAllow() : openCodeDeny(denyReasonFrom(answer.value, answer.note));
|
|
180
|
+
}
|
|
181
|
+
savePendingQuestion(input.session_id || DEFAULT_SESSION, correlationId);
|
|
182
|
+
if (clampCut) return openCodePass();
|
|
183
|
+
return openCodeTimeoutDecision(timeoutAction);
|
|
184
|
+
};
|
|
185
|
+
var handlePushFirst = async (apiKey, input, lookup, pushFirstSeconds) => {
|
|
186
|
+
let pushed;
|
|
187
|
+
try {
|
|
188
|
+
pushed = await pushQuestion(apiKey, input, lookup, pushFirstSeconds, "push_first", 1500);
|
|
189
|
+
} catch {
|
|
190
|
+
return openCodePass();
|
|
191
|
+
}
|
|
192
|
+
const { answer, correlationId, suppressed, noDevices } = pushed;
|
|
193
|
+
if (suppressed) {
|
|
194
|
+
await cancelQuestion(apiKey, correlationId).catch(() => {
|
|
195
|
+
});
|
|
196
|
+
return openCodePass();
|
|
197
|
+
}
|
|
198
|
+
if (noDevices) return openCodePass();
|
|
199
|
+
if (answer.answered) {
|
|
200
|
+
if (isDeferAnswer(answer.value)) return openCodePass();
|
|
201
|
+
return answer.value === "yes" ? openCodeAllow() : openCodeDeny(denyReasonFrom(answer.value, answer.note));
|
|
202
|
+
}
|
|
203
|
+
savePendingQuestion(input.session_id || DEFAULT_SESSION, correlationId);
|
|
204
|
+
return openCodePass();
|
|
205
|
+
};
|
|
206
|
+
var decidePermission = async (input) => {
|
|
207
|
+
let apiKey;
|
|
208
|
+
try {
|
|
209
|
+
apiKey = getApiKey();
|
|
210
|
+
} catch {
|
|
211
|
+
try {
|
|
212
|
+
const lookup = toOpenCodePolicyLookup(input.tool_name ?? "", input.tool_input ?? {});
|
|
213
|
+
if (isGatingMoment(lookup.tool, lookup.input)) {
|
|
214
|
+
recordKeylessMoment({
|
|
215
|
+
ts: Date.now(),
|
|
216
|
+
tool: lookup.tool,
|
|
217
|
+
project: basename(input.cwd ?? process.cwd()),
|
|
218
|
+
sessionId: input.session_id
|
|
219
|
+
});
|
|
220
|
+
}
|
|
221
|
+
} catch {
|
|
222
|
+
}
|
|
223
|
+
return openCodePass();
|
|
224
|
+
}
|
|
225
|
+
try {
|
|
226
|
+
const modeState = await fetchModeState(apiKey, input.session_id);
|
|
227
|
+
const policyRequest = policyRequestFor(OPENCODE_AGENT.type);
|
|
228
|
+
const lookup = toOpenCodePolicyLookup(input.tool_name ?? "", input.tool_input ?? {});
|
|
229
|
+
const config = await getPolicy(
|
|
230
|
+
apiKey,
|
|
231
|
+
modeState.policyVersion,
|
|
232
|
+
policyRequest.agent,
|
|
233
|
+
policyRequest.repoAware,
|
|
234
|
+
input.session_id
|
|
235
|
+
);
|
|
236
|
+
const scopePath = modeState.scope ? scopePathFor(lookup.tool, lookup.input, input.cwd) : void 0;
|
|
237
|
+
const verdict = resolveGate({
|
|
238
|
+
modeState,
|
|
239
|
+
config,
|
|
240
|
+
toolName: lookup.tool,
|
|
241
|
+
toolInputs: [lookup.input],
|
|
242
|
+
scopePaths: scopePath ? [scopePath] : [],
|
|
243
|
+
cwd: input.cwd,
|
|
244
|
+
repoKey: repoKeyFor(input.cwd),
|
|
245
|
+
sessionId: input.session_id
|
|
246
|
+
});
|
|
247
|
+
if (verdict.kind === "kill") return openCodeDeny(KILL_REASON);
|
|
248
|
+
if (verdict.kind === "allow") return openCodeAllow();
|
|
249
|
+
if (verdict.kind === "deny") return openCodeDeny(verdict.reason);
|
|
250
|
+
if (verdict.kind === "defer") return openCodePass();
|
|
251
|
+
const toolPolicy = verdict.policy;
|
|
252
|
+
switch (toolPolicy.mode) {
|
|
253
|
+
case "push_only":
|
|
254
|
+
return handlePushOnly(apiKey, input, lookup, toolPolicy.timeoutSeconds, toolPolicy.timeoutAction);
|
|
255
|
+
case "terminal_only":
|
|
256
|
+
return openCodePass();
|
|
257
|
+
case "push_first":
|
|
258
|
+
return handlePushFirst(apiKey, input, lookup, toolPolicy.pushFirstSeconds);
|
|
259
|
+
case "notify_only":
|
|
260
|
+
await notifyApprovalNeeded(apiKey, input, lookup);
|
|
261
|
+
return openCodePass();
|
|
262
|
+
default:
|
|
263
|
+
return handlePushFirst(apiKey, input, lookup, toolPolicy.pushFirstSeconds);
|
|
264
|
+
}
|
|
265
|
+
} catch {
|
|
266
|
+
return openCodePass();
|
|
267
|
+
}
|
|
268
|
+
};
|
|
269
|
+
var withdrawn = false;
|
|
270
|
+
var emit = (wire) => {
|
|
271
|
+
if (!wire || withdrawn) return;
|
|
272
|
+
try {
|
|
273
|
+
process.stdout.write(JSON.stringify(wire));
|
|
274
|
+
} catch {
|
|
275
|
+
}
|
|
276
|
+
};
|
|
277
|
+
var withdrawAndExit = () => {
|
|
278
|
+
withdrawn = true;
|
|
279
|
+
const pending = outstanding;
|
|
280
|
+
outstanding = void 0;
|
|
281
|
+
if (!pending) {
|
|
282
|
+
process.exit(0);
|
|
283
|
+
}
|
|
284
|
+
cancelQuestion(pending.apiKey, pending.correlationId).catch(() => {
|
|
285
|
+
}).finally(() => process.exit(0));
|
|
286
|
+
setTimeout(() => process.exit(0), 3e3).unref();
|
|
287
|
+
};
|
|
288
|
+
var main = async () => {
|
|
289
|
+
process.on("SIGTERM", withdrawAndExit);
|
|
290
|
+
const input = await readHookInput("opencode");
|
|
291
|
+
if (!input) {
|
|
292
|
+
process.exit(0);
|
|
293
|
+
}
|
|
294
|
+
try {
|
|
295
|
+
switch (input.hook_event_name) {
|
|
296
|
+
case OPENCODE_APPROVAL_EVENT:
|
|
297
|
+
emit(toOpenCodeWire(await decidePermission(input)));
|
|
298
|
+
break;
|
|
299
|
+
case "tool.execute.after": {
|
|
300
|
+
const lookup = toOpenCodePolicyLookup(input.tool_name ?? "", input.tool_input ?? {});
|
|
301
|
+
await handlePostToolUse({
|
|
302
|
+
tool_name: lookup.tool,
|
|
303
|
+
tool_input: lookup.input,
|
|
304
|
+
tool_result: input.tool_result,
|
|
305
|
+
cwd: input.cwd,
|
|
306
|
+
session_id: input.session_id
|
|
307
|
+
}, OPENCODE_AGENT);
|
|
308
|
+
break;
|
|
309
|
+
}
|
|
310
|
+
case "chat.message":
|
|
311
|
+
await handleUserPrompt({
|
|
312
|
+
prompt: input.prompt,
|
|
313
|
+
cwd: input.cwd,
|
|
314
|
+
session_id: input.session_id
|
|
315
|
+
}, OPENCODE_AGENT);
|
|
316
|
+
break;
|
|
317
|
+
case "session.idle":
|
|
318
|
+
await handleStop({
|
|
319
|
+
cwd: input.cwd,
|
|
320
|
+
session_id: input.session_id
|
|
321
|
+
}, OPENCODE_AGENT);
|
|
322
|
+
break;
|
|
323
|
+
default:
|
|
324
|
+
break;
|
|
325
|
+
}
|
|
326
|
+
} catch {
|
|
327
|
+
}
|
|
328
|
+
};
|
|
329
|
+
main();
|
|
@@ -1,23 +1,24 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
handlePermissionDenied
|
|
4
|
-
} from "../chunk-
|
|
4
|
+
} from "../chunk-OMA2OZRE.js";
|
|
5
5
|
import "../chunk-ATBKJNWS.js";
|
|
6
|
-
import "../chunk-
|
|
6
|
+
import "../chunk-VIHRP25S.js";
|
|
7
7
|
import {
|
|
8
8
|
readHookInput
|
|
9
9
|
} from "../chunk-6CUUA7HO.js";
|
|
10
10
|
import "../chunk-YHG74UFF.js";
|
|
11
|
-
import "../chunk-
|
|
11
|
+
import "../chunk-VOE4SYPR.js";
|
|
12
12
|
import "../chunk-J3YDT4HM.js";
|
|
13
|
+
import "../chunk-7J67NYK4.js";
|
|
13
14
|
import "../chunk-RN3NOEJF.js";
|
|
14
15
|
import "../chunk-BSZYIAZL.js";
|
|
15
16
|
import "../chunk-SAF6HGAA.js";
|
|
16
|
-
import "../chunk-
|
|
17
|
+
import "../chunk-KBS53WOE.js";
|
|
17
18
|
import "../chunk-7QLSKOSU.js";
|
|
18
19
|
import "../chunk-KZERVKTD.js";
|
|
19
20
|
import "../chunk-2UMNXADU.js";
|
|
20
|
-
import "../chunk-
|
|
21
|
+
import "../chunk-DMW54VWK.js";
|
|
21
22
|
|
|
22
23
|
// bin/pushary-permission-denied-hook.ts
|
|
23
24
|
var main = async () => {
|
|
@@ -1,23 +1,24 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
handlePermissionRequest
|
|
4
|
-
} from "../chunk-
|
|
4
|
+
} from "../chunk-OMA2OZRE.js";
|
|
5
5
|
import "../chunk-ATBKJNWS.js";
|
|
6
|
-
import "../chunk-
|
|
6
|
+
import "../chunk-VIHRP25S.js";
|
|
7
7
|
import {
|
|
8
8
|
readHookInput
|
|
9
9
|
} from "../chunk-6CUUA7HO.js";
|
|
10
10
|
import "../chunk-YHG74UFF.js";
|
|
11
|
-
import "../chunk-
|
|
11
|
+
import "../chunk-VOE4SYPR.js";
|
|
12
12
|
import "../chunk-J3YDT4HM.js";
|
|
13
|
+
import "../chunk-7J67NYK4.js";
|
|
13
14
|
import "../chunk-RN3NOEJF.js";
|
|
14
15
|
import "../chunk-BSZYIAZL.js";
|
|
15
16
|
import "../chunk-SAF6HGAA.js";
|
|
16
|
-
import "../chunk-
|
|
17
|
+
import "../chunk-KBS53WOE.js";
|
|
17
18
|
import "../chunk-7QLSKOSU.js";
|
|
18
19
|
import "../chunk-KZERVKTD.js";
|
|
19
20
|
import "../chunk-2UMNXADU.js";
|
|
20
|
-
import "../chunk-
|
|
21
|
+
import "../chunk-DMW54VWK.js";
|
|
21
22
|
|
|
22
23
|
// bin/pushary-permission-hook.ts
|
|
23
24
|
var main = async () => {
|
|
@@ -4,16 +4,17 @@ import {
|
|
|
4
4
|
} from "../chunk-6CUUA7HO.js";
|
|
5
5
|
import {
|
|
6
6
|
handlePostToolUse
|
|
7
|
-
} from "../chunk-
|
|
7
|
+
} from "../chunk-VOE4SYPR.js";
|
|
8
8
|
import "../chunk-J3YDT4HM.js";
|
|
9
|
+
import "../chunk-7J67NYK4.js";
|
|
9
10
|
import "../chunk-RN3NOEJF.js";
|
|
10
11
|
import "../chunk-BSZYIAZL.js";
|
|
11
12
|
import "../chunk-SAF6HGAA.js";
|
|
12
|
-
import "../chunk-
|
|
13
|
+
import "../chunk-KBS53WOE.js";
|
|
13
14
|
import "../chunk-7QLSKOSU.js";
|
|
14
15
|
import "../chunk-KZERVKTD.js";
|
|
15
16
|
import "../chunk-2UMNXADU.js";
|
|
16
|
-
import "../chunk-
|
|
17
|
+
import "../chunk-DMW54VWK.js";
|
|
17
18
|
|
|
18
19
|
// bin/pushary-post-hook.ts
|
|
19
20
|
var main = async () => {
|
|
@@ -4,16 +4,17 @@ import {
|
|
|
4
4
|
} from "../chunk-6CUUA7HO.js";
|
|
5
5
|
import {
|
|
6
6
|
handleUserPrompt
|
|
7
|
-
} from "../chunk-
|
|
7
|
+
} from "../chunk-VOE4SYPR.js";
|
|
8
8
|
import "../chunk-J3YDT4HM.js";
|
|
9
|
+
import "../chunk-7J67NYK4.js";
|
|
9
10
|
import "../chunk-RN3NOEJF.js";
|
|
10
11
|
import "../chunk-BSZYIAZL.js";
|
|
11
12
|
import "../chunk-SAF6HGAA.js";
|
|
12
|
-
import "../chunk-
|
|
13
|
+
import "../chunk-KBS53WOE.js";
|
|
13
14
|
import "../chunk-7QLSKOSU.js";
|
|
14
15
|
import "../chunk-KZERVKTD.js";
|
|
15
16
|
import "../chunk-2UMNXADU.js";
|
|
16
|
-
import "../chunk-
|
|
17
|
+
import "../chunk-DMW54VWK.js";
|
|
17
18
|
|
|
18
19
|
// bin/pushary-prompt-hook.ts
|
|
19
20
|
var main = async () => {
|
|
@@ -4,16 +4,17 @@ import {
|
|
|
4
4
|
} from "../chunk-6CUUA7HO.js";
|
|
5
5
|
import {
|
|
6
6
|
handleSessionEnd
|
|
7
|
-
} from "../chunk-
|
|
7
|
+
} from "../chunk-VOE4SYPR.js";
|
|
8
8
|
import "../chunk-J3YDT4HM.js";
|
|
9
|
+
import "../chunk-7J67NYK4.js";
|
|
9
10
|
import "../chunk-RN3NOEJF.js";
|
|
10
11
|
import "../chunk-BSZYIAZL.js";
|
|
11
12
|
import "../chunk-SAF6HGAA.js";
|
|
12
|
-
import "../chunk-
|
|
13
|
+
import "../chunk-KBS53WOE.js";
|
|
13
14
|
import "../chunk-7QLSKOSU.js";
|
|
14
15
|
import "../chunk-KZERVKTD.js";
|
|
15
16
|
import "../chunk-2UMNXADU.js";
|
|
16
|
-
import "../chunk-
|
|
17
|
+
import "../chunk-DMW54VWK.js";
|
|
17
18
|
|
|
18
19
|
// bin/pushary-session-end-hook.ts
|
|
19
20
|
var main = async () => {
|
|
@@ -4,16 +4,17 @@ import {
|
|
|
4
4
|
} from "../chunk-6CUUA7HO.js";
|
|
5
5
|
import {
|
|
6
6
|
handleSessionStart
|
|
7
|
-
} from "../chunk-
|
|
7
|
+
} from "../chunk-VOE4SYPR.js";
|
|
8
8
|
import "../chunk-J3YDT4HM.js";
|
|
9
|
+
import "../chunk-7J67NYK4.js";
|
|
9
10
|
import "../chunk-RN3NOEJF.js";
|
|
10
11
|
import "../chunk-BSZYIAZL.js";
|
|
11
12
|
import "../chunk-SAF6HGAA.js";
|
|
12
|
-
import "../chunk-
|
|
13
|
+
import "../chunk-KBS53WOE.js";
|
|
13
14
|
import "../chunk-7QLSKOSU.js";
|
|
14
15
|
import "../chunk-KZERVKTD.js";
|
|
15
16
|
import "../chunk-2UMNXADU.js";
|
|
16
|
-
import "../chunk-
|
|
17
|
+
import "../chunk-DMW54VWK.js";
|
|
17
18
|
|
|
18
19
|
// bin/pushary-session-start-hook.ts
|
|
19
20
|
var main = async () => {
|