pushary 1.9.61 → 1.9.63

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 (125) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/README.md +1 -1
  3. package/dist/{api-LW3PJQYY.js → api-UHUUAONF.js} +14 -12
  4. package/dist/bin/pushary-bell-hook.js +27 -27
  5. package/dist/bin/pushary-bell.js +12 -12
  6. package/dist/bin/pushary-claude.js +35 -28
  7. package/dist/bin/pushary-clean.js +35 -34
  8. package/dist/bin/pushary-codex-bridge.js +21 -21
  9. package/dist/bin/pushary-codex-hook.js +51 -38
  10. package/dist/bin/pushary-codex-session.js +8 -8
  11. package/dist/bin/pushary-codex.js +14 -14
  12. package/dist/bin/pushary-connect.js +27 -27
  13. package/dist/bin/pushary-cowork.js +5 -5
  14. package/dist/bin/pushary-daemon.js +39 -38
  15. package/dist/bin/pushary-disconnect.js +30 -29
  16. package/dist/bin/pushary-doctor.js +46 -44
  17. package/dist/bin/pushary-elicitation-hook.js +30 -28
  18. package/dist/bin/pushary-gemini-bridge.js +15 -15
  19. package/dist/bin/pushary-gemini-hook.js +38 -30
  20. package/dist/bin/pushary-hook.js +32 -31
  21. package/dist/bin/pushary-login.js +27 -15
  22. package/dist/bin/pushary-logout.js +28 -28
  23. package/dist/bin/pushary-mcp.js +11 -11
  24. package/dist/bin/pushary-mode.js +14 -14
  25. package/dist/bin/pushary-notification-hook.js +26 -26
  26. package/dist/bin/pushary-opencode-hook.js +40 -31
  27. package/dist/bin/pushary-permission-denied-hook.js +31 -31
  28. package/dist/bin/pushary-permission-hook.js +30 -30
  29. package/dist/bin/pushary-post-hook.js +26 -26
  30. package/dist/bin/pushary-prompt-hook.js +26 -26
  31. package/dist/bin/pushary-session-end-hook.js +26 -26
  32. package/dist/bin/pushary-session-start-hook.js +34 -33
  33. package/dist/bin/pushary-setup.js +115 -4205
  34. package/dist/bin/pushary-stats.js +5 -5
  35. package/dist/bin/pushary-status.js +32 -32
  36. package/dist/bin/pushary-stop-hook.js +26 -26
  37. package/dist/bin/pushary-stopfailure-hook.js +26 -26
  38. package/dist/bin/pushary-suggestions.js +14 -14
  39. package/dist/bin/pushary-transcript-register.js +18 -18
  40. package/dist/bin/pushary-transcripts.js +62 -9
  41. package/dist/bin/pushary-upgrade.js +43 -41
  42. package/dist/bin/pushary-wait.js +14 -14
  43. package/dist/bin/pushary.js +7 -7
  44. package/dist/{chunk-ORX5BTV4.js → chunk-2MZ6ROWZ.js} +8 -6
  45. package/dist/{chunk-7BHI3PZN.js → chunk-3GVV7XVT.js} +1 -1
  46. package/dist/{chunk-GKFO5JLN.js → chunk-3QLFB2EY.js} +4 -4
  47. package/dist/{chunk-LBHJJEKT.js → chunk-4WFAP6QN.js} +10 -10
  48. package/dist/{chunk-PITQ5ZIQ.js → chunk-5JK3DQGZ.js} +2 -2
  49. package/dist/{chunk-CJ5TCFD4.js → chunk-5LOP4AVD.js} +3 -3
  50. package/dist/{chunk-ERK24P76.js → chunk-6Z2VR3BA.js} +4 -2
  51. package/dist/{chunk-K4MBKXAE.js → chunk-75ODMNOM.js} +1 -1
  52. package/dist/{chunk-YPD3MTFU.js → chunk-7GRQGXF4.js} +1 -1
  53. package/dist/{chunk-AXJLJJ3M.js → chunk-7NCLUA65.js} +99 -6
  54. package/dist/{chunk-YDR4BQ7R.js → chunk-AB3VAQ25.js} +3 -3
  55. package/dist/{chunk-2AELPDMT.js → chunk-BCVCUDFI.js} +16 -5
  56. package/dist/{chunk-RGSW36XH.js → chunk-BQFL2ECS.js} +3 -3
  57. package/dist/{chunk-BG4Y64FW.js → chunk-BUQU3OPX.js} +1 -1
  58. package/dist/{chunk-SHJVFW22.js → chunk-CLABCSZC.js} +4 -4
  59. package/dist/{chunk-4VRTSDGP.js → chunk-DMNLFWGY.js} +7 -108
  60. package/dist/{chunk-7MCCXE5Y.js → chunk-EHHTQURL.js} +5 -5
  61. package/dist/{chunk-XAO6EYGM.js → chunk-ELAK46NR.js} +26 -3
  62. package/dist/{chunk-JGQV4MDQ.js → chunk-EQ26IKZM.js} +6 -6
  63. package/dist/{chunk-VX2MJ4X7.js → chunk-FAF5AW3P.js} +9 -9
  64. package/dist/{chunk-XEJOPVCG.js → chunk-FEAGK25K.js} +1 -1
  65. package/dist/{chunk-GZCSWDAS.js → chunk-GNUARBRZ.js} +4 -4
  66. package/dist/{chunk-64S5PQBQ.js → chunk-GZS72NCF.js} +4 -4
  67. package/dist/{chunk-WFSGCFXQ.js → chunk-HAIXS4OX.js} +2 -6
  68. package/dist/{chunk-G36T5LAP.js → chunk-HOIO66DU.js} +3 -3
  69. package/dist/{chunk-ADR3KHOC.js → chunk-HZ72EMJE.js} +2 -2
  70. package/dist/{chunk-WN3RACVD.js → chunk-IOH2T3CB.js} +17 -3
  71. package/dist/chunk-KEPESIIR.js +4117 -0
  72. package/dist/{chunk-ZEWIMY63.js → chunk-KL76XWZ7.js} +1 -1
  73. package/dist/{chunk-IFPOHFDJ.js → chunk-KLZZI5TU.js} +1 -1
  74. package/dist/{chunk-ATKN4BJT.js → chunk-KUCL7ETL.js} +1 -1
  75. package/dist/{chunk-SFAP4AJY.js → chunk-L5CDGXPO.js} +3 -3
  76. package/dist/{chunk-GDKQUB52.js → chunk-LGZ545TA.js} +5 -5
  77. package/dist/{chunk-ZGU3NXL2.js → chunk-LTT54NOU.js} +8 -8
  78. package/dist/{chunk-MWLTTLPK.js → chunk-MK4USZYQ.js} +2 -2
  79. package/dist/{chunk-NKLNU577.js → chunk-MRCVYYPW.js} +3 -3
  80. package/dist/{chunk-7JXJJNQ5.js → chunk-OJEIS5L2.js} +1 -1
  81. package/dist/{chunk-ELLJPP6O.js → chunk-OP5IBEV7.js} +7 -3
  82. package/dist/{chunk-BQ2VV7LY.js → chunk-OU3BYBJ3.js} +2 -2
  83. package/dist/{chunk-6T5Z64KS.js → chunk-OW6VBXXI.js} +15 -15
  84. package/dist/{chunk-USE5IEEW.js → chunk-OY6Z4IKB.js} +1 -1
  85. package/dist/{chunk-O65F2IIN.js → chunk-P6RF4RQN.js} +6 -6
  86. package/dist/{chunk-4N5E4JNF.js → chunk-PIQ4HHA2.js} +5 -5
  87. package/dist/{chunk-7HDGH3Z2.js → chunk-PJ34FOIV.js} +4 -4
  88. package/dist/{chunk-DQLCFGHK.js → chunk-PXAOEFJZ.js} +17 -11
  89. package/dist/{chunk-P3VQH65N.js → chunk-QC2W42DE.js} +33 -20
  90. package/dist/{chunk-X3YKQJCZ.js → chunk-RAJ3QEIL.js} +1 -1
  91. package/dist/chunk-S2Z6VWHH.js +112 -0
  92. package/dist/{chunk-FUZ5VYWD.js → chunk-SARPHHTT.js} +1 -1
  93. package/dist/{chunk-BJTSKOH3.js → chunk-SKUSGWFK.js} +5 -5
  94. package/dist/{chunk-Y6Z7DA5Y.js → chunk-T3GHXR6N.js} +5 -5
  95. package/dist/{chunk-EUIPTDLX.js → chunk-T6XQNOZV.js} +22 -15
  96. package/dist/{chunk-RJHX66EY.js → chunk-TBKHQWIH.js} +16 -11
  97. package/dist/{chunk-CICLXLQN.js → chunk-TMGJAFSD.js} +4 -4
  98. package/dist/{chunk-Y5VKZNFN.js → chunk-V5W3CK7F.js} +2 -2
  99. package/dist/{chunk-GAMVAORR.js → chunk-V7N5NOZV.js} +4 -2
  100. package/dist/{chunk-33OOEVPG.js → chunk-VC3HFFMQ.js} +1 -1
  101. package/dist/{chunk-KPNZ7JUL.js → chunk-VDBXSUXP.js} +6 -6
  102. package/dist/{chunk-7BAO42UV.js → chunk-VFJSVPNL.js} +3 -3
  103. package/dist/{chunk-HUI4OE43.js → chunk-VHZAJ6IB.js} +3 -3
  104. package/dist/{chunk-QER5R7Z6.js → chunk-VN7XH6TU.js} +2 -2
  105. package/dist/{chunk-UADSXJZ4.js → chunk-WUOOZE5S.js} +2 -2
  106. package/dist/{chunk-LN7DE5LY.js → chunk-XBTWG2VL.js} +4 -4
  107. package/dist/{chunk-XV6S5PWW.js → chunk-XE5N352V.js} +1 -1
  108. package/dist/{chunk-SVQWHV65.js → chunk-XO3KAH7K.js} +1 -1
  109. package/dist/{chunk-BUZIEL7Y.js → chunk-YK6GR4GU.js} +2 -2
  110. package/dist/chunk-YMZOM6BD.js +216 -0
  111. package/dist/{codex-app-cards-switch-BD7LCI2I.js → codex-app-cards-switch-LXMAIOFB.js} +11 -11
  112. package/dist/{codex-desktop-launch-V5CASSBB.js → codex-desktop-launch-VE5RLFUU.js} +1 -1
  113. package/dist/{codex-session-launch-5PKFKUFD.js → codex-session-launch-XZZWXCPK.js} +18 -18
  114. package/dist/{config-AEKH7HGC.js → config-PPX25AV5.js} +3 -3
  115. package/dist/{global-upgrade-IUXJJDWF.js → global-upgrade-NRMHNLNU.js} +9 -9
  116. package/dist/{identity-YJIV2XTY.js → identity-ZFQR7JNW.js} +4 -4
  117. package/dist/{live-capabilities-QYFW5QAW.js → live-capabilities-SJRYRKNB.js} +4 -4
  118. package/dist/{paths-A5GAR5PL.js → paths-7VTVOQXJ.js} +3 -3
  119. package/dist/{reapply-BKJGICRJ.js → reapply-WOANOIRZ.js} +27 -26
  120. package/dist/src/index.d.ts +1 -0
  121. package/dist/src/index.js +21 -21
  122. package/dist/{upgrade-lock-DDB7WEWC.js → upgrade-lock-VAYJZVTB.js} +4 -4
  123. package/dist/{usage-HBDNFZ3O.js → usage-C4DIYUR6.js} +3 -3
  124. package/package.json +1 -1
  125. package/dist/chunk-6FJ6CK32.js +0 -126
@@ -0,0 +1,216 @@
1
+ import {
2
+ registerTranscript
3
+ } from "./chunk-T6XQNOZV.js";
4
+ import {
5
+ namedEvent
6
+ } from "./chunk-3QLFB2EY.js";
7
+ import {
8
+ isBridgeLocator,
9
+ liveBridgeProbe,
10
+ pusharyHookExecutable,
11
+ resolveBridgeStub
12
+ } from "./chunk-SKUSGWFK.js";
13
+ import {
14
+ atLeast,
15
+ parseVersion
16
+ } from "./chunk-6ICPEJY5.js";
17
+ import {
18
+ writeDegraded
19
+ } from "./chunk-TBKHQWIH.js";
20
+ import {
21
+ cursorUserHooks
22
+ } from "./chunk-MK4USZYQ.js";
23
+ import {
24
+ CURSOR_GATE_COVERAGE,
25
+ CURSOR_GATE_SCRIPT,
26
+ HOOK_VERSION_PATTERN,
27
+ NO_CURSOR_GATE,
28
+ claudeShapedHookInput,
29
+ cursorGateOwnsToolCall,
30
+ hookCompatibleProfileBySource,
31
+ isCursorHookPayload,
32
+ isGrokHookPayload,
33
+ isGrokSessionEndStop,
34
+ isRecord,
35
+ toolsCoveredByGateEntry
36
+ } from "./chunk-7NCLUA65.js";
37
+
38
+ // src/tool-hook-input.ts
39
+ var OPTIONAL_TEXT_FIELDS = ["hook_event_name", "session_id", "cwd", "transcript_path", "tool_use_id", "permission_mode", "cursor_version"];
40
+ function isInputRecord(value) {
41
+ return value !== null && typeof value === "object" && !Array.isArray(value);
42
+ }
43
+ function isToolHookInput(value) {
44
+ if (!isInputRecord(value)) return false;
45
+ if (typeof value.tool_name !== "string" || value.tool_name.length === 0) return false;
46
+ if (!isInputRecord(value.tool_input)) return false;
47
+ for (const field of OPTIONAL_TEXT_FIELDS) {
48
+ if (value[field] !== void 0 && typeof value[field] !== "string") return false;
49
+ }
50
+ return true;
51
+ }
52
+ function parseToolHookInput(value) {
53
+ if (!isInputRecord(value)) return null;
54
+ const input = { ...value, tool_input: value.tool_input === void 0 ? {} : value.tool_input };
55
+ return isToolHookInput(input) ? input : null;
56
+ }
57
+
58
+ // src/admission.ts
59
+ import { readFileSync } from "fs";
60
+ import { homedir } from "os";
61
+ import { join as join2 } from "path";
62
+
63
+ // src/cursor-gate-registration.ts
64
+ import { dirname, isAbsolute, join, resolve } from "path";
65
+ var FIRST_PLUGIN_VERSION_HANDLING = {
66
+ beforeShellExecution: [0, 1, 0],
67
+ beforeMCPExecution: [0, 2, 1],
68
+ preToolUse: [0, 2, 2]
69
+ };
70
+ var COMMAND_HOOK_TYPE = "command";
71
+ var PLUGIN_MANIFEST = join(".cursor-plugin", "plugin.json");
72
+ var NO_SPOTLIGHT = () => [];
73
+ var executableName = (executable) => executable.split(/[/\\]/).pop() ?? "";
74
+ var isCursorGateScript = (executable) => executableName(executable) === CURSOR_GATE_SCRIPT;
75
+ var fromHooksDirectory = (path, environment) => isAbsolute(path) ? path : resolve(dirname(environment.hooksFile), path);
76
+ var pluginManifestBeside = (script) => join(dirname(dirname(script)), PLUGIN_MANIFEST);
77
+ var versionIn = (manifest) => {
78
+ try {
79
+ const parsed = JSON.parse(manifest);
80
+ return isRecord(parsed) && typeof parsed.version === "string" && HOOK_VERSION_PATTERN.test(parsed.version) ? parseVersion(parsed.version) : null;
81
+ } catch {
82
+ return null;
83
+ }
84
+ };
85
+ var pluginVersionOf = (script, probe) => {
86
+ const manifest = probe.readFile(pluginManifestBeside(script));
87
+ return manifest === null ? null : versionIn(manifest);
88
+ };
89
+ var gateScriptHandles = (script, event, probe) => {
90
+ if (!probe.exists(script)) return false;
91
+ const version = pluginVersionOf(script, probe);
92
+ return version !== null && atLeast(version, FIRST_PLUGIN_VERSION_HANDLING[event]);
93
+ };
94
+ var appBundleResolves = (locator, probe) => resolveBridgeStub(locator, { ...probe, mdfind: NO_SPOTLIGHT }).kind === "bundle";
95
+ var isLiveCursorGateCommand = (command, event, environment) => {
96
+ const executable = pusharyHookExecutable(command);
97
+ if (executable === null) return false;
98
+ const target = fromHooksDirectory(executable, environment);
99
+ if (isCursorGateScript(executable)) return gateScriptHandles(target, event, environment.probe);
100
+ return isBridgeLocator(executable) && appBundleResolves(target, environment.probe);
101
+ };
102
+ var isCommandHook = (entry) => entry.type === void 0 || entry.type === COMMAND_HOOK_TYPE;
103
+ var entriesOn = (hooks, event) => {
104
+ const entries = Object.hasOwn(hooks, event) ? hooks[event] : void 0;
105
+ return Array.isArray(entries) ? entries.filter(isRecord) : [];
106
+ };
107
+ var runsALiveGate = (entry, event, isLiveGate) => isCommandHook(entry) && typeof entry.command === "string" && isLiveGate(entry.command, event);
108
+ var toolsCoveredOn = (hooks, coverage, isLiveGate) => entriesOn(hooks, coverage.event).filter((entry) => runsALiveGate(entry, coverage.event, isLiveGate)).flatMap((entry) => toolsCoveredByGateEntry(coverage, entry.matcher) ?? []);
109
+ var cursorGateRegistrationOf = (document, isLiveGate) => {
110
+ if (!isRecord(document) || !isRecord(document.hooks)) return NO_CURSOR_GATE;
111
+ const hooks = document.hooks;
112
+ return CURSOR_GATE_COVERAGE.flatMap((coverage) => toolsCoveredOn(hooks, coverage, isLiveGate));
113
+ };
114
+ var userCursorGateEnvironment = () => ({ hooksFile: cursorUserHooks(), probe: liveBridgeProbe() });
115
+ var readCursorGateRegistration = (environment = userCursorGateEnvironment()) => {
116
+ try {
117
+ const raw = environment.probe.readFile(environment.hooksFile);
118
+ if (raw === null) return NO_CURSOR_GATE;
119
+ return cursorGateRegistrationOf(JSON.parse(raw), (command, event) => isLiveCursorGateCommand(command, event, environment));
120
+ } catch {
121
+ return NO_CURSOR_GATE;
122
+ }
123
+ };
124
+ var cursorGateOwnsClaudeCall = (payload, readRegistration) => isCursorHookPayload(payload) && cursorGateOwnsToolCall(readRegistration(), payload.tool_name);
125
+
126
+ // src/admission.ts
127
+ var NO_RULES = { version: 1, disabled: [] };
128
+ var SUPPORTED_VERSION = 1;
129
+ var parseAdmissionRules = (raw) => {
130
+ if (!raw) return NO_RULES;
131
+ try {
132
+ const parsed = JSON.parse(raw);
133
+ if (parsed.version !== SUPPORTED_VERSION) return NO_RULES;
134
+ if (!Array.isArray(parsed.disabled)) return NO_RULES;
135
+ return {
136
+ version: SUPPORTED_VERSION,
137
+ disabled: parsed.disabled.filter((rule) => typeof rule === "string")
138
+ };
139
+ } catch {
140
+ return NO_RULES;
141
+ }
142
+ };
143
+ var admissionRulesFile = () => process.env.PUSHARY_ADMISSION_FILE?.trim() || join2(homedir(), ".pushary", "admission-rules.json");
144
+ var readAdmissionRules = () => {
145
+ try {
146
+ return parseAdmissionRules(readFileSync(admissionRulesFile(), "utf-8"));
147
+ } catch {
148
+ return NO_RULES;
149
+ }
150
+ };
151
+ var matches = (rule, source, event) => {
152
+ const colon = rule.indexOf(":");
153
+ if (colon <= 0 || colon === rule.length - 1) return false;
154
+ const ruleSource = rule.slice(0, colon);
155
+ const ruleEvent = rule.slice(colon + 1);
156
+ return (ruleSource === "*" || ruleSource === source) && (ruleEvent === "*" || ruleEvent === event);
157
+ };
158
+ var isAdmitted = (rules, source, event) => !rules.disabled.some((rule) => matches(rule, source, event));
159
+ var UNREADABLE = { kind: "unreadable" };
160
+ var UNKNOWN_AGENT = { kind: "unknown_agent" };
161
+ var GATED_BY_CURSOR = { kind: "gated_by_cursor" };
162
+ var readHookInputOutcome = async (source, fallbackEvent = "", stdin = process.stdin, parseInput, { cursorGateOwnsCall } = {}) => {
163
+ if (source === null) {
164
+ writeDegraded("hook", {
165
+ reason: "unknown_agent",
166
+ fallback: "stood aside, so nothing is gated or reported for this call",
167
+ event: fallbackEvent
168
+ });
169
+ return UNKNOWN_AGENT;
170
+ }
171
+ let raw = "";
172
+ for await (const chunk of stdin) raw += chunk;
173
+ if (!raw.trim()) return UNREADABLE;
174
+ let parsed;
175
+ try {
176
+ parsed = JSON.parse(raw);
177
+ } catch {
178
+ return UNREADABLE;
179
+ }
180
+ if (!parsed || typeof parsed !== "object" || Array.isArray(parsed)) return UNREADABLE;
181
+ if (source !== "grok" && process.env.GROK_SESSION_ID && isGrokHookPayload(parsed)) return UNREADABLE;
182
+ if (cursorGateOwnsCall?.(parsed)) return GATED_BY_CURSOR;
183
+ const shaped = inClaudeShape(source, namedEvent(process.argv) ?? fallbackEvent, parsed);
184
+ if (source === "grok" && isGrokSessionEndStop(shaped.hook_event_name, shaped.reason)) return UNREADABLE;
185
+ const input = parseInput ? parseInput(shaped) : shaped;
186
+ if (input === null) return UNREADABLE;
187
+ const event = eventNameOf(input) ?? fallbackEvent;
188
+ if (!isAdmitted(readAdmissionRules(), source, event)) return { kind: "not_admitted", input };
189
+ if (stdin === process.stdin) registerTranscript(source, input);
190
+ return { kind: "admitted", input };
191
+ };
192
+ var admittedInput = (read) => read.kind === "admitted" ? read.input : null;
193
+ var readHookInput = async (source, fallbackEvent = "", stdin = process.stdin, parseInput) => admittedInput(await readHookInputOutcome(source, fallbackEvent, stdin, parseInput));
194
+ var inClaudeShape = (source, event, parsed) => {
195
+ const profile = hookCompatibleProfileBySource(source);
196
+ return profile ? claudeShapedHookInput(profile.payload, event, parsed) : parsed;
197
+ };
198
+ var eventNameOf = (input) => {
199
+ if (!("hook_event_name" in input)) return void 0;
200
+ const name = input.hook_event_name;
201
+ return typeof name === "string" && name.length > 0 ? name : void 0;
202
+ };
203
+ function readToolHookInput(source, event, stdin = process.stdin) {
204
+ return readHookInput(source, event, stdin, parseToolHookInput);
205
+ }
206
+ var isClaudePreToolUse = (source, event) => source === "claude" && event === "PreToolUse";
207
+ var screenFor = (source, event, readCursorGate) => isClaudePreToolUse(source, event) ? { cursorGateOwnsCall: (payload) => cursorGateOwnsClaudeCall(payload, readCursorGate) } : {};
208
+ function readToolHookCall(source, event, stdin = process.stdin, { readCursorGate = readCursorGateRegistration } = {}) {
209
+ return readHookInputOutcome(source, event, stdin, parseToolHookInput, screenFor(source, event, readCursorGate));
210
+ }
211
+
212
+ export {
213
+ readHookInput,
214
+ readToolHookInput,
215
+ readToolHookCall
216
+ };
@@ -22,23 +22,23 @@ import {
22
22
  turnCodexAppCardsOff,
23
23
  turnCodexAppCardsOn,
24
24
  whyLaunchctlFailed
25
- } from "./chunk-BQ2VV7LY.js";
26
- import "./chunk-PITQ5ZIQ.js";
25
+ } from "./chunk-OU3BYBJ3.js";
26
+ import "./chunk-5JK3DQGZ.js";
27
27
  import "./chunk-XCEN33UP.js";
28
28
  import "./chunk-QCGNGEGE.js";
29
- import "./chunk-LBHJJEKT.js";
29
+ import "./chunk-4WFAP6QN.js";
30
30
  import "./chunk-XHKBHWLX.js";
31
- import "./chunk-WN3RACVD.js";
31
+ import "./chunk-IOH2T3CB.js";
32
32
  import "./chunk-E46NE7FB.js";
33
- import "./chunk-SFAP4AJY.js";
34
- import "./chunk-Y5VKZNFN.js";
35
- import "./chunk-MWLTTLPK.js";
36
- import "./chunk-CJ5TCFD4.js";
33
+ import "./chunk-L5CDGXPO.js";
34
+ import "./chunk-V5W3CK7F.js";
37
35
  import "./chunk-QENTGE75.js";
38
- import "./chunk-BG4Y64FW.js";
39
- import "./chunk-ERK24P76.js";
36
+ import "./chunk-MK4USZYQ.js";
37
+ import "./chunk-5LOP4AVD.js";
38
+ import "./chunk-BUQU3OPX.js";
39
+ import "./chunk-6Z2VR3BA.js";
40
40
  import "./chunk-QTOLNRET.js";
41
- import "./chunk-AXJLJJ3M.js";
41
+ import "./chunk-7NCLUA65.js";
42
42
  import "./chunk-MLKGABMK.js";
43
43
  export {
44
44
  CODEX_APP_CARDS_DIRECTORY,
@@ -11,7 +11,7 @@ import {
11
11
  installedCodexApp,
12
12
  shellQuoted,
13
13
  writeDesktopProxy
14
- } from "./chunk-PITQ5ZIQ.js";
14
+ } from "./chunk-5JK3DQGZ.js";
15
15
  import "./chunk-XCEN33UP.js";
16
16
  import {
17
17
  CODEX_APP_LAUNCH_VARIABLE
@@ -11,36 +11,36 @@ import {
11
11
  isCodexQuestionLeftWithTheLocalClient,
12
12
  planCodexElicitation,
13
13
  reportOwnedQuestion
14
- } from "./chunk-O65F2IIN.js";
15
- import "./chunk-ELLJPP6O.js";
16
- import "./chunk-G36T5LAP.js";
17
- import "./chunk-USE5IEEW.js";
18
- import "./chunk-SHJVFW22.js";
14
+ } from "./chunk-P6RF4RQN.js";
15
+ import "./chunk-OP5IBEV7.js";
16
+ import "./chunk-HOIO66DU.js";
17
+ import "./chunk-OY6Z4IKB.js";
18
+ import "./chunk-CLABCSZC.js";
19
19
  import "./chunk-VUFHYMSP.js";
20
- import "./chunk-2AELPDMT.js";
21
- import "./chunk-GAMVAORR.js";
20
+ import "./chunk-BCVCUDFI.js";
21
+ import "./chunk-V7N5NOZV.js";
22
22
  import "./chunk-XHKBHWLX.js";
23
23
  import "./chunk-6ICPEJY5.js";
24
- import "./chunk-YPD3MTFU.js";
24
+ import "./chunk-7GRQGXF4.js";
25
25
  import {
26
26
  writeDegraded
27
- } from "./chunk-RJHX66EY.js";
28
- import "./chunk-XAO6EYGM.js";
27
+ } from "./chunk-TBKHQWIH.js";
29
28
  import "./chunk-POFBE6ZY.js";
30
- import "./chunk-YDR4BQ7R.js";
31
- import "./chunk-7BAO42UV.js";
32
- import "./chunk-SFAP4AJY.js";
29
+ import "./chunk-ELAK46NR.js";
30
+ import "./chunk-AB3VAQ25.js";
31
+ import "./chunk-VFJSVPNL.js";
32
+ import "./chunk-L5CDGXPO.js";
33
33
  import "./chunk-PPY5N2E6.js";
34
34
  import "./chunk-KZERVKTD.js";
35
- import "./chunk-MWLTTLPK.js";
36
- import "./chunk-CJ5TCFD4.js";
37
35
  import "./chunk-QENTGE75.js";
38
- import "./chunk-BG4Y64FW.js";
39
- import "./chunk-ERK24P76.js";
36
+ import "./chunk-MK4USZYQ.js";
37
+ import "./chunk-5LOP4AVD.js";
38
+ import "./chunk-BUQU3OPX.js";
39
+ import "./chunk-6Z2VR3BA.js";
40
40
  import "./chunk-QTOLNRET.js";
41
41
  import {
42
42
  canonicalJsonText
43
- } from "./chunk-AXJLJJ3M.js";
43
+ } from "./chunk-7NCLUA65.js";
44
44
  import "./chunk-MLKGABMK.js";
45
45
 
46
46
  // src/codex-session-launch.ts
@@ -3,9 +3,9 @@ import {
3
3
  getApiKey,
4
4
  getBaseUrl,
5
5
  resetKeyDriftWarning
6
- } from "./chunk-BG4Y64FW.js";
7
- import "./chunk-ERK24P76.js";
8
- import "./chunk-AXJLJJ3M.js";
6
+ } from "./chunk-BUQU3OPX.js";
7
+ import "./chunk-6Z2VR3BA.js";
8
+ import "./chunk-7NCLUA65.js";
9
9
  import "./chunk-MLKGABMK.js";
10
10
  export {
11
11
  configFilePath,
@@ -7,21 +7,21 @@ import {
7
7
  recordUnfinishedUpgrade,
8
8
  upgradeInstalledPackage,
9
9
  withUpgradeLock
10
- } from "./chunk-JGQV4MDQ.js";
11
- import "./chunk-4N5E4JNF.js";
12
- import "./chunk-G36T5LAP.js";
13
- import "./chunk-USE5IEEW.js";
10
+ } from "./chunk-EQ26IKZM.js";
11
+ import "./chunk-PIQ4HHA2.js";
12
+ import "./chunk-HOIO66DU.js";
13
+ import "./chunk-OY6Z4IKB.js";
14
14
  import "./chunk-VUFHYMSP.js";
15
- import "./chunk-7HDGH3Z2.js";
15
+ import "./chunk-PJ34FOIV.js";
16
16
  import "./chunk-6ICPEJY5.js";
17
17
  import "./chunk-POFBE6ZY.js";
18
18
  import "./chunk-KZERVKTD.js";
19
- import "./chunk-MWLTTLPK.js";
20
- import "./chunk-CJ5TCFD4.js";
21
19
  import "./chunk-QENTGE75.js";
22
- import "./chunk-ERK24P76.js";
20
+ import "./chunk-MK4USZYQ.js";
21
+ import "./chunk-5LOP4AVD.js";
22
+ import "./chunk-6Z2VR3BA.js";
23
23
  import "./chunk-QTOLNRET.js";
24
- import "./chunk-AXJLJJ3M.js";
24
+ import "./chunk-7NCLUA65.js";
25
25
  import "./chunk-MLKGABMK.js";
26
26
  export {
27
27
  finishGlobalUpgrade,
@@ -2,12 +2,12 @@ import {
2
2
  getMachineId,
3
3
  getOrCreateMachineId,
4
4
  readExistingMachineId
5
- } from "./chunk-SFAP4AJY.js";
6
- import "./chunk-MWLTTLPK.js";
7
- import "./chunk-CJ5TCFD4.js";
5
+ } from "./chunk-L5CDGXPO.js";
8
6
  import "./chunk-QENTGE75.js";
7
+ import "./chunk-MK4USZYQ.js";
8
+ import "./chunk-5LOP4AVD.js";
9
9
  import "./chunk-QTOLNRET.js";
10
- import "./chunk-AXJLJJ3M.js";
10
+ import "./chunk-7NCLUA65.js";
11
11
  import "./chunk-MLKGABMK.js";
12
12
  export {
13
13
  getMachineId,
@@ -22,14 +22,14 @@ import {
22
22
  resolveControlPolicy,
23
23
  resolveProviderBinary,
24
24
  trackProviderInventory
25
- } from "./chunk-G36T5LAP.js";
26
- import "./chunk-USE5IEEW.js";
25
+ } from "./chunk-HOIO66DU.js";
26
+ import "./chunk-OY6Z4IKB.js";
27
27
  import "./chunk-VUFHYMSP.js";
28
28
  import "./chunk-6ICPEJY5.js";
29
- import "./chunk-CJ5TCFD4.js";
30
29
  import "./chunk-QENTGE75.js";
30
+ import "./chunk-5LOP4AVD.js";
31
31
  import "./chunk-QTOLNRET.js";
32
- import "./chunk-AXJLJJ3M.js";
32
+ import "./chunk-7NCLUA65.js";
33
33
  import "./chunk-MLKGABMK.js";
34
34
  export {
35
35
  CLAUDE_BRIDGE_CAPABILITY,
@@ -33,10 +33,10 @@ import {
33
33
  serviceOwedBackMark,
34
34
  vscodePluginDir,
35
35
  vscodePluginMcp
36
- } from "./chunk-MWLTTLPK.js";
37
- import "./chunk-CJ5TCFD4.js";
36
+ } from "./chunk-MK4USZYQ.js";
37
+ import "./chunk-5LOP4AVD.js";
38
38
  import "./chunk-QTOLNRET.js";
39
- import "./chunk-AXJLJJ3M.js";
39
+ import "./chunk-7NCLUA65.js";
40
40
  import "./chunk-MLKGABMK.js";
41
41
  export {
42
42
  autoUpdateLock,
@@ -11,41 +11,42 @@ import {
11
11
  reapplyOpenCodePlugin,
12
12
  reapplyVsCodePlugin,
13
13
  repairCodexHolds
14
- } from "./chunk-6T5Z64KS.js";
15
- import "./chunk-BUZIEL7Y.js";
16
- import "./chunk-4VRTSDGP.js";
17
- import "./chunk-UADSXJZ4.js";
18
- import "./chunk-ZGU3NXL2.js";
19
- import "./chunk-USE5IEEW.js";
14
+ } from "./chunk-OW6VBXXI.js";
15
+ import "./chunk-YK6GR4GU.js";
16
+ import "./chunk-DMNLFWGY.js";
17
+ import "./chunk-S2Z6VWHH.js";
18
+ import "./chunk-WUOOZE5S.js";
19
+ import "./chunk-LTT54NOU.js";
20
+ import "./chunk-OY6Z4IKB.js";
20
21
  import "./chunk-VUFHYMSP.js";
21
- import "./chunk-GKFO5JLN.js";
22
- import "./chunk-BJTSKOH3.js";
23
- import "./chunk-RGSW36XH.js";
24
- import "./chunk-XV6S5PWW.js";
25
- import "./chunk-IFPOHFDJ.js";
22
+ import "./chunk-3QLFB2EY.js";
23
+ import "./chunk-SKUSGWFK.js";
24
+ import "./chunk-BQFL2ECS.js";
25
+ import "./chunk-XE5N352V.js";
26
+ import "./chunk-KLZZI5TU.js";
26
27
  import "./chunk-NMUI3ZWG.js";
27
28
  import "./chunk-XHKBHWLX.js";
28
29
  import "./chunk-6ICPEJY5.js";
29
- import "./chunk-WN3RACVD.js";
30
- import "./chunk-DQLCFGHK.js";
31
- import "./chunk-33OOEVPG.js";
32
- import "./chunk-YPD3MTFU.js";
33
- import "./chunk-RJHX66EY.js";
34
- import "./chunk-XAO6EYGM.js";
30
+ import "./chunk-IOH2T3CB.js";
31
+ import "./chunk-PXAOEFJZ.js";
32
+ import "./chunk-VC3HFFMQ.js";
33
+ import "./chunk-7GRQGXF4.js";
34
+ import "./chunk-TBKHQWIH.js";
35
35
  import "./chunk-POFBE6ZY.js";
36
- import "./chunk-YDR4BQ7R.js";
37
- import "./chunk-7BAO42UV.js";
38
- import "./chunk-SFAP4AJY.js";
36
+ import "./chunk-ELAK46NR.js";
37
+ import "./chunk-AB3VAQ25.js";
38
+ import "./chunk-VFJSVPNL.js";
39
+ import "./chunk-L5CDGXPO.js";
39
40
  import "./chunk-PPY5N2E6.js";
40
41
  import "./chunk-KZERVKTD.js";
41
- import "./chunk-Y5VKZNFN.js";
42
- import "./chunk-MWLTTLPK.js";
43
- import "./chunk-CJ5TCFD4.js";
42
+ import "./chunk-V5W3CK7F.js";
44
43
  import "./chunk-QENTGE75.js";
45
- import "./chunk-BG4Y64FW.js";
46
- import "./chunk-ERK24P76.js";
44
+ import "./chunk-MK4USZYQ.js";
45
+ import "./chunk-5LOP4AVD.js";
46
+ import "./chunk-BUQU3OPX.js";
47
+ import "./chunk-6Z2VR3BA.js";
47
48
  import "./chunk-QTOLNRET.js";
48
- import "./chunk-AXJLJJ3M.js";
49
+ import "./chunk-7NCLUA65.js";
49
50
  import "./chunk-MLKGABMK.js";
50
51
  export {
51
52
  ensureCodexTrustAfterReapply,
@@ -11,6 +11,7 @@ interface ToolHookInput {
11
11
  readonly transcript_path?: string;
12
12
  readonly tool_use_id?: string;
13
13
  readonly permission_mode?: string;
14
+ readonly cursor_version?: string;
14
15
  }
15
16
 
16
17
  type HookOutput = ClaudePreToolUseOutput;
package/dist/src/index.js CHANGED
@@ -1,14 +1,14 @@
1
1
  import {
2
2
  handlePreToolUse
3
- } from "../chunk-P3VQH65N.js";
4
- import "../chunk-ORX5BTV4.js";
5
- import "../chunk-SVQWHV65.js";
6
- import "../chunk-ZEWIMY63.js";
7
- import "../chunk-GKFO5JLN.js";
8
- import "../chunk-RGSW36XH.js";
3
+ } from "../chunk-QC2W42DE.js";
4
+ import "../chunk-2MZ6ROWZ.js";
5
+ import "../chunk-XO3KAH7K.js";
6
+ import "../chunk-KL76XWZ7.js";
7
+ import "../chunk-3QLFB2EY.js";
8
+ import "../chunk-BQFL2ECS.js";
9
9
  import {
10
10
  fetchAccountPublicKey
11
- } from "../chunk-GAMVAORR.js";
11
+ } from "../chunk-V7N5NOZV.js";
12
12
  import "../chunk-6ICPEJY5.js";
13
13
  import {
14
14
  fetchModeOverride,
@@ -18,34 +18,34 @@ import {
18
18
  handlePostToolUse,
19
19
  handleStop,
20
20
  reportEvent
21
- } from "../chunk-DQLCFGHK.js";
22
- import "../chunk-33OOEVPG.js";
23
- import "../chunk-YPD3MTFU.js";
21
+ } from "../chunk-PXAOEFJZ.js";
22
+ import "../chunk-VC3HFFMQ.js";
23
+ import "../chunk-7GRQGXF4.js";
24
24
  import {
25
25
  askUser,
26
26
  cancelQuestion,
27
27
  waitForAnswer
28
- } from "../chunk-RJHX66EY.js";
29
- import "../chunk-XAO6EYGM.js";
28
+ } from "../chunk-TBKHQWIH.js";
30
29
  import "../chunk-POFBE6ZY.js";
31
- import "../chunk-YDR4BQ7R.js";
32
- import "../chunk-7BAO42UV.js";
33
- import "../chunk-SFAP4AJY.js";
30
+ import "../chunk-ELAK46NR.js";
31
+ import "../chunk-AB3VAQ25.js";
32
+ import "../chunk-VFJSVPNL.js";
33
+ import "../chunk-L5CDGXPO.js";
34
34
  import "../chunk-PPY5N2E6.js";
35
35
  import "../chunk-KZERVKTD.js";
36
- import "../chunk-Y5VKZNFN.js";
37
- import "../chunk-MWLTTLPK.js";
38
- import "../chunk-CJ5TCFD4.js";
36
+ import "../chunk-V5W3CK7F.js";
39
37
  import "../chunk-QENTGE75.js";
38
+ import "../chunk-MK4USZYQ.js";
39
+ import "../chunk-5LOP4AVD.js";
40
40
  import {
41
41
  getApiKey,
42
42
  getBaseUrl
43
- } from "../chunk-BG4Y64FW.js";
44
- import "../chunk-ERK24P76.js";
43
+ } from "../chunk-BUQU3OPX.js";
44
+ import "../chunk-6Z2VR3BA.js";
45
45
  import "../chunk-QTOLNRET.js";
46
46
  import {
47
47
  resolvePolicy
48
- } from "../chunk-AXJLJJ3M.js";
48
+ } from "../chunk-7NCLUA65.js";
49
49
  import "../chunk-MLKGABMK.js";
50
50
  export {
51
51
  askUser,
@@ -4,12 +4,12 @@ import {
4
4
  installWithUpgradeLock,
5
5
  ownsUpgradeLock,
6
6
  releaseAutoUpdateLock
7
- } from "./chunk-4N5E4JNF.js";
8
- import "./chunk-MWLTTLPK.js";
9
- import "./chunk-CJ5TCFD4.js";
7
+ } from "./chunk-PIQ4HHA2.js";
10
8
  import "./chunk-QENTGE75.js";
9
+ import "./chunk-MK4USZYQ.js";
10
+ import "./chunk-5LOP4AVD.js";
11
11
  import "./chunk-QTOLNRET.js";
12
- import "./chunk-AXJLJJ3M.js";
12
+ import "./chunk-7NCLUA65.js";
13
13
  import "./chunk-MLKGABMK.js";
14
14
  export {
15
15
  claimUpgradeLock,
@@ -1,10 +1,10 @@
1
1
  import {
2
2
  exitOnHelpFlag
3
- } from "./chunk-K4MBKXAE.js";
3
+ } from "./chunk-75ODMNOM.js";
4
4
  import "./chunk-KZERVKTD.js";
5
- import "./chunk-ERK24P76.js";
5
+ import "./chunk-6Z2VR3BA.js";
6
6
  import "./chunk-QTOLNRET.js";
7
- import "./chunk-AXJLJJ3M.js";
7
+ import "./chunk-7NCLUA65.js";
8
8
  import "./chunk-MLKGABMK.js";
9
9
  export {
10
10
  exitOnHelpFlag
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pushary",
3
- "version": "1.9.61",
3
+ "version": "1.9.63",
4
4
  "description": "Permission hooks for AI coding agents: route tool approvals through Pushary push notifications",
5
5
  "keywords": [
6
6
  "pushary",