@pushary/agent-hooks 0.87.2 → 0.87.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.
Files changed (63) hide show
  1. package/data/cursor-plugin/hooks/hooks.json +7 -0
  2. package/data/cursor-plugin/scripts/pushary-gate.mjs +85 -28
  3. package/data/cursor-plugin/scripts/pushary-gate.test.mjs +42 -1
  4. package/dist/bin/pushary-bell-hook.js +4 -4
  5. package/dist/bin/pushary-bell.js +7 -6
  6. package/dist/bin/pushary-claude.js +14 -11
  7. package/dist/bin/pushary-clean.js +36 -20
  8. package/dist/bin/pushary-codex-bridge.js +6 -5
  9. package/dist/bin/pushary-codex-hook.js +129 -52
  10. package/dist/bin/pushary-codex.js +4 -3
  11. package/dist/bin/pushary-connect.js +6 -6
  12. package/dist/bin/pushary-daemon.js +5 -4
  13. package/dist/bin/pushary-disconnect.js +65 -8
  14. package/dist/bin/pushary-doctor.js +79 -18
  15. package/dist/bin/pushary-elicitation-hook.js +1 -1
  16. package/dist/bin/pushary-gemini-bridge.js +6 -5
  17. package/dist/bin/pushary-gemini-hook.js +12 -10
  18. package/dist/bin/pushary-hook.js +6 -5
  19. package/dist/bin/pushary-login.js +4 -4
  20. package/dist/bin/pushary-logout.js +5 -4
  21. package/dist/bin/pushary-mode.js +3 -3
  22. package/dist/bin/pushary-notification-hook.js +4 -3
  23. package/dist/bin/pushary-opencode-hook.d.ts +1 -0
  24. package/dist/bin/pushary-opencode-hook.js +329 -0
  25. package/dist/bin/pushary-permission-denied-hook.js +6 -5
  26. package/dist/bin/pushary-permission-hook.js +6 -5
  27. package/dist/bin/pushary-post-hook.js +4 -3
  28. package/dist/bin/pushary-prompt-hook.js +4 -3
  29. package/dist/bin/pushary-session-end-hook.js +4 -3
  30. package/dist/bin/pushary-session-start-hook.js +4 -3
  31. package/dist/bin/pushary-setup.js +238 -84
  32. package/dist/bin/pushary-stats.js +2 -2
  33. package/dist/bin/pushary-status.js +5 -5
  34. package/dist/bin/pushary-stop-hook.js +4 -3
  35. package/dist/bin/pushary-stopfailure-hook.js +4 -3
  36. package/dist/bin/pushary-upgrade.js +7 -6
  37. package/dist/bin/pushary-wait.js +3 -3
  38. package/dist/{chunk-5646VKR4.js → chunk-2JYQAW4B.js} +5 -53
  39. package/dist/chunk-7J67NYK4.js +287 -0
  40. package/dist/{chunk-M7RYIZX6.js → chunk-B7ZBHWOW.js} +10 -1
  41. package/dist/{chunk-7YJS2VTG.js → chunk-DMW54VWK.js} +12 -1
  42. package/dist/{chunk-LT2VLPUK.js → chunk-DPUOW6NS.js} +18 -2
  43. package/dist/{chunk-3LKYBFWA.js → chunk-EJL3PJU7.js} +1 -1
  44. package/dist/chunk-GIRT7677.js +11 -0
  45. package/dist/{chunk-HAUTLCMA.js → chunk-ICERLAE2.js} +1 -1
  46. package/dist/{chunk-ZZE6FN7T.js → chunk-K42RXJPG.js} +52 -1
  47. package/dist/{chunk-Y3UTTFTZ.js → chunk-KBS53WOE.js} +1 -1
  48. package/dist/{chunk-SJVLFIYP.js → chunk-KCAFCGGY.js} +1 -1
  49. package/dist/{chunk-A4I5JGCW.js → chunk-KFAH6KRE.js} +1 -1
  50. package/dist/{chunk-QBWYNVKY.js → chunk-LGVHYFIB.js} +1 -1
  51. package/dist/{chunk-HJ44HIUW.js → chunk-OMA2OZRE.js} +11 -9
  52. package/dist/{chunk-ECEUMWBH.js → chunk-QLMX5LLV.js} +1 -1
  53. package/dist/{chunk-XW5CHAQX.js → chunk-TAYHEJFF.js} +2 -2
  54. package/dist/{chunk-JAICP7BA.js → chunk-TD3M232T.js} +1 -1
  55. package/dist/{chunk-WLLBFDVY.js → chunk-TV3UFGT7.js} +1 -1
  56. package/dist/{chunk-7MBDFNUC.js → chunk-VIHRP25S.js} +1 -1
  57. package/dist/{chunk-B3V2H6SA.js → chunk-VL5ZNK6V.js} +43 -12
  58. package/dist/{chunk-V2XPF77V.js → chunk-VOE4SYPR.js} +42 -279
  59. package/dist/{chunk-OT4YD54Q.js → chunk-YX6ZKCC5.js} +1 -1
  60. package/dist/{chunk-2T3GX7WG.js → chunk-YYTLTEGU.js} +1 -1
  61. package/dist/chunk-ZGC3W23N.js +371 -0
  62. package/dist/src/index.js +6 -5
  63. 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-HJ44HIUW.js";
4
+ } from "../chunk-OMA2OZRE.js";
5
5
  import "../chunk-ATBKJNWS.js";
6
- import "../chunk-7MBDFNUC.js";
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-V2XPF77V.js";
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-Y3UTTFTZ.js";
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-7YJS2VTG.js";
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-HJ44HIUW.js";
4
+ } from "../chunk-OMA2OZRE.js";
5
5
  import "../chunk-ATBKJNWS.js";
6
- import "../chunk-7MBDFNUC.js";
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-V2XPF77V.js";
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-Y3UTTFTZ.js";
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-7YJS2VTG.js";
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-V2XPF77V.js";
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-Y3UTTFTZ.js";
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-7YJS2VTG.js";
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-V2XPF77V.js";
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-Y3UTTFTZ.js";
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-7YJS2VTG.js";
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-V2XPF77V.js";
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-Y3UTTFTZ.js";
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-7YJS2VTG.js";
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-V2XPF77V.js";
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-Y3UTTFTZ.js";
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-7YJS2VTG.js";
17
+ import "../chunk-DMW54VWK.js";
17
18
 
18
19
  // bin/pushary-session-start-hook.ts
19
20
  var main = async () => {