@pushary/agent-hooks 0.98.0 → 0.99.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (63) hide show
  1. package/CHANGELOG.md +10 -0
  2. package/dist/bin/pushary-bell-hook.js +15 -14
  3. package/dist/bin/pushary-bell.js +6 -5
  4. package/dist/bin/pushary-claude.js +15 -14
  5. package/dist/bin/pushary-clean.js +13 -12
  6. package/dist/bin/pushary-codex-bridge.js +8 -7
  7. package/dist/bin/pushary-codex-hook.js +25 -15
  8. package/dist/bin/pushary-codex.js +5 -4
  9. package/dist/bin/pushary-connect.js +4 -3
  10. package/dist/bin/pushary-daemon.js +19 -18
  11. package/dist/bin/pushary-disconnect.js +3 -3
  12. package/dist/bin/pushary-doctor.js +15 -14
  13. package/dist/bin/pushary-elicitation-hook.js +14 -13
  14. package/dist/bin/pushary-gemini-bridge.js +7 -6
  15. package/dist/bin/pushary-gemini-hook.js +15 -14
  16. package/dist/bin/pushary-hook.js +17 -16
  17. package/dist/bin/pushary-login.js +6 -5
  18. package/dist/bin/pushary-logout.js +4 -3
  19. package/dist/bin/pushary-notification-hook.js +15 -14
  20. package/dist/bin/pushary-opencode-hook.js +15 -14
  21. package/dist/bin/pushary-permission-denied-hook.js +17 -16
  22. package/dist/bin/pushary-permission-hook.js +17 -16
  23. package/dist/bin/pushary-post-hook.js +15 -14
  24. package/dist/bin/pushary-prompt-hook.js +15 -14
  25. package/dist/bin/pushary-session-end-hook.js +15 -14
  26. package/dist/bin/pushary-session-start-hook.js +18 -17
  27. package/dist/bin/pushary-setup.js +19 -18
  28. package/dist/bin/pushary-status.js +9 -8
  29. package/dist/bin/pushary-stop-hook.js +15 -14
  30. package/dist/bin/pushary-stopfailure-hook.js +15 -14
  31. package/dist/bin/pushary-transcript-register.js +13 -12
  32. package/dist/bin/pushary-transcripts.js +5 -4
  33. package/dist/bin/pushary-upgrade.js +13 -12
  34. package/dist/{chunk-FAJ4R7IB.js → chunk-3ZAEUPM4.js} +1 -1
  35. package/dist/{chunk-LX4NNYII.js → chunk-4C4XFAGJ.js} +1 -1
  36. package/dist/{chunk-VZD2GEKB.js → chunk-4LL6LG5X.js} +1 -43
  37. package/dist/{chunk-SJLGOVC6.js → chunk-4PBCNVI3.js} +4 -2
  38. package/dist/{chunk-WU6LSXJ6.js → chunk-562UJ2DA.js} +2 -2
  39. package/dist/{chunk-YJDRHQLG.js → chunk-64WARXGV.js} +2 -2
  40. package/dist/{chunk-J44RPHUZ.js → chunk-6IFUXNFX.js} +2 -2
  41. package/dist/{chunk-53QCTSWY.js → chunk-6KLCP7VF.js} +2 -2
  42. package/dist/{chunk-DOD3A6EU.js → chunk-CRFLU455.js} +4 -4
  43. package/dist/{chunk-2GLOHBYB.js → chunk-EXHXR2X5.js} +1 -1
  44. package/dist/chunk-GCD3SQSV.js +44 -0
  45. package/dist/{chunk-NQGYPTJQ.js → chunk-ID5FDKDZ.js} +1 -1
  46. package/dist/{chunk-XL3RKJYQ.js → chunk-JBJBVERL.js} +64 -29
  47. package/dist/{chunk-B35OCFXH.js → chunk-JL33EDN7.js} +4 -4
  48. package/dist/{chunk-6LRGZJFB.js → chunk-JXELRCU5.js} +9 -5
  49. package/dist/{chunk-K6CH5NVW.js → chunk-K4XFCEVI.js} +1 -1
  50. package/dist/{chunk-NIXVMMJM.js → chunk-K6BASBQJ.js} +1 -1
  51. package/dist/{chunk-JQU6PMH4.js → chunk-LWKPMSBB.js} +62 -45
  52. package/dist/{chunk-5B5QV3KC.js → chunk-NSFNEDCT.js} +7 -7
  53. package/dist/{chunk-M4TVEMLH.js → chunk-O3LZQEQP.js} +1 -1
  54. package/dist/{chunk-HFQ7WSHZ.js → chunk-PD6JY33P.js} +4 -2
  55. package/dist/{chunk-QXIF6R4P.js → chunk-QS55LDX4.js} +2 -2
  56. package/dist/{chunk-W2MG2P46.js → chunk-RALVI7OF.js} +2 -2
  57. package/dist/{chunk-6CYB77VD.js → chunk-T3JZZUAR.js} +3 -3
  58. package/dist/{chunk-V47GITZV.js → chunk-V262ATS5.js} +1 -1
  59. package/dist/{chunk-TZHDKRMG.js → chunk-WGV3VY7O.js} +1 -1
  60. package/dist/{chunk-OBYC6SN4.js → chunk-YKLCWWEI.js} +1 -1
  61. package/dist/reapply-HQ264ZTR.js +30 -0
  62. package/dist/src/index.js +7 -6
  63. package/package.json +1 -1
@@ -1,17 +1,20 @@
1
1
  import {
2
2
  detectClaudeVersion
3
- } from "./chunk-K6CH5NVW.js";
3
+ } from "./chunk-K4XFCEVI.js";
4
4
  import {
5
5
  addClaudeMcpServer,
6
6
  addPusharyHooks,
7
7
  addPusharyToolPermissions
8
- } from "./chunk-QXIF6R4P.js";
8
+ } from "./chunk-QS55LDX4.js";
9
9
  import {
10
+ claudeUnprovenHolds,
10
11
  claudeWired,
12
+ codexUnprovenHolds,
11
13
  codexWired,
12
14
  geminiWired
13
- } from "./chunk-6LRGZJFB.js";
15
+ } from "./chunk-JXELRCU5.js";
14
16
  import {
17
+ CLAUDE_HOOK_BINARY,
15
18
  CLAUDE_HOOK_EVENTS,
16
19
  GEMINI_HOOK_BINARY,
17
20
  addGeminiHooks,
@@ -21,7 +24,7 @@ import {
21
24
  needsReregistration,
22
25
  registrationSignatures,
23
26
  supportedClaudeEvents
24
- } from "./chunk-HFQ7WSHZ.js";
27
+ } from "./chunk-PD6JY33P.js";
25
28
  import {
26
29
  CODEX_HOOK_BINARY,
27
30
  addCodexHookTrust,
@@ -31,69 +34,48 @@ import {
31
34
  codexConfigToml,
32
35
  codexHookPositions,
33
36
  codexHooksJson,
37
+ codexRegistrationHolder,
34
38
  codexVacatedIndexes,
35
39
  dropVacatedCodexHookTrust,
36
40
  guardBinary,
37
41
  hasCodexHooks,
38
- resolveGlobalBinDir,
42
+ namesOurBinary,
43
+ registeredCommands,
44
+ registrationHolderOf,
39
45
  resolveGlobalBinary,
40
46
  vscodePluginMcp
41
- } from "./chunk-XL3RKJYQ.js";
47
+ } from "./chunk-JBJBVERL.js";
42
48
  import {
43
49
  readJsonSafe,
50
+ writeFileAtomic,
44
51
  writeJsonAtomic
45
- } from "./chunk-VZD2GEKB.js";
46
- import {
47
- HOOK_LOCATOR_BINARY
48
- } from "./chunk-OUAE3GKO.js";
52
+ } from "./chunk-4LL6LG5X.js";
49
53
 
50
54
  // src/reapply.ts
51
- import { join } from "path";
55
+ import { dirname, join } from "path";
52
56
  import { homedir } from "os";
53
- import { readFileSync, writeFileSync } from "fs";
57
+ import { readFileSync, statSync } from "fs";
54
58
  import { parse as parseTOML, stringify as stringifyTOML } from "smol-toml";
55
59
 
56
60
  // src/reregister.ts
57
61
  var asRecord = (value) => typeof value === "object" && value !== null && !Array.isArray(value) ? value : null;
58
- var commandsUnder = (settings) => {
59
- const hooks = asRecord(settings?.hooks);
60
- if (!hooks) return [];
61
- const found = [];
62
- for (const [event, value] of Object.entries(hooks)) {
63
- if (!Array.isArray(value)) continue;
64
- for (const item of value) {
65
- const inner = asRecord(item)?.hooks;
66
- if (!Array.isArray(inner)) continue;
67
- for (const hook of inner) {
68
- const command = asRecord(hook)?.command;
69
- if (typeof command === "string") found.push({ event, command });
70
- }
71
- }
72
- }
73
- return found;
74
- };
75
- var segments = (command) => command.split(/[\s/\\"']+/).map((segment) => segment.replace(/\.(cmd|exe)$/i, ""));
76
- var CLI_BINARIES = new Set(CLAUDE_HOOK_EVENTS.map((hook) => hook.binary));
77
- var namesLocator = (command) => segments(command).includes(HOOK_LOCATOR_BINARY);
78
- var namesCliBinary = (command) => segments(command).some((segment) => CLI_BINARIES.has(segment));
79
- var registrationHolder = (settings) => {
80
- const commands = commandsUnder(settings);
81
- if (commands.some(({ command }) => namesLocator(command))) return "app";
82
- return commands.some(({ command }) => namesCliBinary(command)) ? "cli" : "none";
83
- };
62
+ var CLAUDE_CLI_BINARIES = new Set(CLAUDE_HOOK_EVENTS.map((hook) => hook.binary));
63
+ var registrationHolder = (settings) => registrationHolderOf(settings, CLAUDE_CLI_BINARIES);
84
64
  var registeredPusharyEvents = (settings) => new Set(
85
- commandsUnder(settings).filter(({ command }) => namesLocator(command) || namesCliBinary(command)).map(({ event }) => event)
65
+ registeredCommands(settings).filter(({ command }) => namesOurBinary(command, CLAUDE_CLI_BINARIES)).map(({ event }) => event)
86
66
  );
87
67
  var reregisterVerdict = ({ settings, stored, version }) => {
88
68
  const holder = registrationHolder(settings);
89
69
  if (holder === "none") return { kind: "not_wired" };
90
70
  if (holder === "app") return { kind: "app_owned" };
91
- if (!needsReregistration(stored, version)) return { kind: "current" };
71
+ const unproven = claudeUnprovenHolds(settings);
72
+ if (unproven.length === 0 && !needsReregistration(stored, version)) return { kind: "current" };
92
73
  const supported = new Set(supportedClaudeEvents(version).map((hook) => hook.event));
93
74
  const present = registeredPusharyEvents(settings);
94
75
  const missing = [...supported].filter((event) => !present.has(event));
95
76
  const extra = [...present].filter((event) => !supported.has(event));
96
- return missing.length > 0 || extra.length > 0 ? { kind: "stale", version, missing, extra } : { kind: "record_only", version };
77
+ const repairable = unproven.filter((event) => supported.has(event));
78
+ return missing.length > 0 || extra.length > 0 || repairable.length > 0 ? { kind: "stale", version, missing, extra, unproven: repairable } : { kind: "record_only", version };
97
79
  };
98
80
  var receiptFor = (version, now = /* @__PURE__ */ new Date()) => ({
99
81
  signatures: registrationSignatures(supportedClaudeEvents(version), version),
@@ -119,8 +101,17 @@ var readJson = (filePath) => {
119
101
  return null;
120
102
  };
121
103
  var writeJson = (filePath, data) => writeJsonAtomic(filePath, data);
122
- var hasPusharyClaudeHooks = (settings) => JSON.stringify(settings.hooks ?? {}).includes("pushary-hook");
104
+ var hasPusharyClaudeHooks = (settings) => JSON.stringify(settings.hooks ?? {}).includes(CLAUDE_HOOK_BINARY);
123
105
  var hasPusharyMcp = (claudeJson) => !!claudeJson.mcpServers?.pushary;
106
+ var PRIVATE_TO_OWNER = 384;
107
+ var modeToPreserve = (filePath) => {
108
+ try {
109
+ return statSync(filePath).mode & 511;
110
+ } catch {
111
+ return PRIVATE_TO_OWNER;
112
+ }
113
+ };
114
+ var wouldWriteBareNames = (resolve, probe) => resolve(probe) === void 0;
124
115
  var reapplyClaudeSettings = (apiKey, paths = {}) => {
125
116
  const settingsPath = paths.settingsPath ?? CLAUDE_SETTINGS;
126
117
  const claudeJsonPath = paths.claudeJsonPath ?? CLAUDE_JSON;
@@ -136,7 +127,8 @@ var reapplyClaudeSettings = (apiKey, paths = {}) => {
136
127
  if (!settingsWritable) throw new Error("settings.json could not be parsed");
137
128
  const s = settings;
138
129
  addPusharyToolPermissions(s);
139
- addPusharyHooks(s, resolveGlobalBinDir("pushary-hook"), (paths.detectVersion ?? detectClaudeVersion)());
130
+ const binary = (paths.resolveBinary ?? resolveGlobalBinary)(CLAUDE_HOOK_BINARY);
131
+ addPusharyHooks(s, binary ? dirname(binary) : void 0, (paths.detectVersion ?? detectClaudeVersion)());
140
132
  writeJson(settingsPath, s);
141
133
  hooks = true;
142
134
  } catch {
@@ -168,6 +160,10 @@ var reapplyClaudeForVersion = (apiKey, paths = {}) => {
168
160
  if (verdict.kind === "not_wired" || verdict.kind === "app_owned" || verdict.kind === "current") {
169
161
  return { verdict: verdict.kind, rewrote: false, missing: [] };
170
162
  }
163
+ const resolveBinary = paths.resolveBinary ?? resolveGlobalBinary;
164
+ if (verdict.kind === "stale" && wouldWriteBareNames(resolveBinary, CLAUDE_HOOK_BINARY)) {
165
+ return { verdict: "stale", rewrote: false, missing: verdict.missing };
166
+ }
171
167
  const rewrote = verdict.kind === "stale" ? reapplyClaudeSettings(apiKey, { ...paths, settingsPath }).hooks : false;
172
168
  if (verdict.kind === "stale" && !rewrote) return { verdict: "stale", rewrote: false, missing: verdict.missing };
173
169
  writeJsonAtomic(receiptPath, receiptFor(version));
@@ -213,7 +209,7 @@ var reapplyCodexSettings = (apiKey, paths = {}) => {
213
209
  const hooksConfig = readJson(hooksPath);
214
210
  const configured = config != null && !!config.mcp_servers?.pushary || hooksConfig != null && hasCodexHooks(hooksConfig);
215
211
  if (!configured) return { configured: false, reapplied: false, hooks: false, mcp: false };
216
- const command = guardBinary(resolveGlobalBinary(CODEX_HOOK_BINARY) ?? CODEX_HOOK_BINARY);
212
+ const command = guardBinary((paths.resolveBinary ?? resolveGlobalBinary)(CODEX_HOOK_BINARY) ?? CODEX_HOOK_BINARY);
217
213
  let hooks = false;
218
214
  let mcp = false;
219
215
  const vacated = codexVacatedIndexes(hooksConfig ?? void 0);
@@ -235,12 +231,27 @@ var reapplyCodexSettings = (apiKey, paths = {}) => {
235
231
  addCodexMcpServer(config, apiKey);
236
232
  mcp = true;
237
233
  }
238
- if (hooks || apiKey) writeFileSync(configPath, stringifyTOML(config), "utf-8");
234
+ if (hooks || apiKey) {
235
+ writeFileAtomic(configPath, stringifyTOML(config), modeToPreserve(configPath), "utf-8");
236
+ }
239
237
  } catch {
240
238
  }
241
239
  }
242
240
  return { configured: true, reapplied: hooks || mcp, hooks, mcp };
243
241
  };
242
+ var repairCodexHolds = (paths = {}) => {
243
+ const idle = { configured: false, reapplied: false, hooks: false, mcp: false };
244
+ try {
245
+ const hooksPath = paths.hooksPath ?? codexHooksJson();
246
+ const hooksConfig = readJson(hooksPath);
247
+ if (!hooksConfig || codexRegistrationHolder(hooksConfig) !== "cli") return idle;
248
+ if (codexUnprovenHolds(hooksConfig).length === 0) return idle;
249
+ if (wouldWriteBareNames(paths.resolveBinary ?? resolveGlobalBinary, CODEX_HOOK_BINARY)) return idle;
250
+ return reapplyCodexSettings(void 0, paths);
251
+ } catch {
252
+ return idle;
253
+ }
254
+ };
244
255
  var reapplyGeminiSettings = (apiKey, paths = {}) => {
245
256
  const settingsPath = paths.settingsPath ?? join(homedir(), ".gemini", "settings.json");
246
257
  const settings = readJson(settingsPath);
@@ -300,7 +311,13 @@ var reapplyAllAgents = (apiKey) => {
300
311
  };
301
312
 
302
313
  export {
314
+ reapplyClaudeSettings,
303
315
  reapplyClaudeForVersion,
304
316
  inspectConfiguredManagedProviders,
317
+ reapplyCodexSettings,
318
+ repairCodexHolds,
319
+ reapplyGeminiSettings,
320
+ reapplyCursorPlugin,
321
+ reapplyVsCodePlugin,
305
322
  reapplyAllAgents
306
323
  };
@@ -3,13 +3,13 @@ import {
3
3
  loadPin,
4
4
  savePin,
5
5
  verifyRecipients
6
- } from "./chunk-OBYC6SN4.js";
6
+ } from "./chunk-YKLCWWEI.js";
7
7
  import {
8
8
  hookOwnerOf
9
- } from "./chunk-W2MG2P46.js";
9
+ } from "./chunk-RALVI7OF.js";
10
10
  import {
11
11
  ensureDaemonRunning
12
- } from "./chunk-DOD3A6EU.js";
12
+ } from "./chunk-CRFLU455.js";
13
13
  import {
14
14
  buildTranscriptRecords,
15
15
  decodePublicKey,
@@ -23,17 +23,17 @@ import {
23
23
  import {
24
24
  transcriptEnvironmentPreference,
25
25
  transcriptsEnabled
26
- } from "./chunk-NQGYPTJQ.js";
26
+ } from "./chunk-ID5FDKDZ.js";
27
27
  import {
28
28
  codexHome,
29
29
  pusharyDir
30
- } from "./chunk-XL3RKJYQ.js";
30
+ } from "./chunk-JBJBVERL.js";
31
31
  import {
32
32
  readTranscriptPreference
33
- } from "./chunk-SJLGOVC6.js";
33
+ } from "./chunk-4PBCNVI3.js";
34
34
  import {
35
35
  writeJsonAtomic
36
- } from "./chunk-VZD2GEKB.js";
36
+ } from "./chunk-4LL6LG5X.js";
37
37
  import {
38
38
  getApiKey,
39
39
  getBaseUrl
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  registerTranscript
3
- } from "./chunk-5B5QV3KC.js";
3
+ } from "./chunk-NSFNEDCT.js";
4
4
 
5
5
  // src/admission.ts
6
6
  import { readFileSync } from "fs";
@@ -5,7 +5,7 @@ import {
5
5
  import {
6
6
  isProtectedByScope,
7
7
  registerHookEntry
8
- } from "./chunk-XL3RKJYQ.js";
8
+ } from "./chunk-JBJBVERL.js";
9
9
  import {
10
10
  CLAUDE_PRETOOLUSE_MATCHER,
11
11
  HOOK_BUDGETS,
@@ -129,8 +129,9 @@ var formatVersion = (version) => version.join(".");
129
129
  var MIRRORED_TOOLS = POSTTOOLUSE_MIRRORED_TOOLS.join("|");
130
130
  var ESTABLISHED = [1, 0, 0];
131
131
  var OBSERVED = [2, 0, 0];
132
+ var CLAUDE_HOOK_BINARY = "pushary-hook";
132
133
  var CLAUDE_HOOK_EVENTS = [
133
- { event: "PreToolUse", binary: "pushary-hook", matcher: CLAUDE_PRETOOLUSE_MATCHER, timeout: HOOK_BUDGETS.claude.budgetSeconds, delivery: "approval", since: ESTABLISHED },
134
+ { event: "PreToolUse", binary: CLAUDE_HOOK_BINARY, matcher: CLAUDE_PRETOOLUSE_MATCHER, timeout: HOOK_BUDGETS.claude.budgetSeconds, delivery: "approval", since: ESTABLISHED },
134
135
  { event: "PostToolUse", binary: "pushary-post-hook", matcher: MIRRORED_TOOLS, timeout: 10, delivery: "telemetry", since: ESTABLISHED },
135
136
  { event: "Stop", binary: "pushary-stop-hook", timeout: 10, delivery: "telemetry", since: ESTABLISHED },
136
137
  { event: "UserPromptSubmit", binary: "pushary-prompt-hook", timeout: 10, delivery: "telemetry", since: ESTABLISHED },
@@ -175,6 +176,7 @@ export {
175
176
  parseVersion,
176
177
  compareVersion,
177
178
  formatVersion,
179
+ CLAUDE_HOOK_BINARY,
178
180
  CLAUDE_HOOK_EVENTS,
179
181
  supportedClaudeEvents,
180
182
  registrationSignatures,
@@ -1,13 +1,13 @@
1
1
  import {
2
2
  CLAUDE_HOOK_EVENTS,
3
3
  supportedClaudeEvents
4
- } from "./chunk-HFQ7WSHZ.js";
4
+ } from "./chunk-PD6JY33P.js";
5
5
  import {
6
6
  guardBinary,
7
7
  holdBudgetOf,
8
8
  isProtectedByScope,
9
9
  registerHookEntry
10
- } from "./chunk-XL3RKJYQ.js";
10
+ } from "./chunk-JBJBVERL.js";
11
11
  import {
12
12
  HOOK_LOCATOR_BINARY,
13
13
  withHookHoldBudget
@@ -6,10 +6,10 @@ import {
6
6
  } from "./chunk-IRLTW6KF.js";
7
7
  import {
8
8
  pusharyHookExecutable
9
- } from "./chunk-6LRGZJFB.js";
9
+ } from "./chunk-JXELRCU5.js";
10
10
  import {
11
11
  BELL_HOOK_BINARY
12
- } from "./chunk-2GLOHBYB.js";
12
+ } from "./chunk-EXHXR2X5.js";
13
13
 
14
14
  // src/setup/hook-ownership.ts
15
15
  var commandsIn = (value) => {
@@ -4,7 +4,7 @@ import {
4
4
  forgetBlockedActionHint,
5
5
  hasBlockedActionHint,
6
6
  recordBlockedActionHint
7
- } from "./chunk-53QCTSWY.js";
7
+ } from "./chunk-6KLCP7VF.js";
8
8
  import {
9
9
  isGatingMoment,
10
10
  recordKeylessMoment
@@ -24,7 +24,7 @@ import {
24
24
  reportEvent,
25
25
  settleQuestionsForToolUse,
26
26
  throttlePass
27
- } from "./chunk-YJDRHQLG.js";
27
+ } from "./chunk-64WARXGV.js";
28
28
  import {
29
29
  UNNAMED_ACTION,
30
30
  deriveAction,
@@ -49,7 +49,7 @@ import {
49
49
  } from "./chunk-LGXUGYUH.js";
50
50
  import {
51
51
  getMachineId
52
- } from "./chunk-WU6LSXJ6.js";
52
+ } from "./chunk-562UJ2DA.js";
53
53
  import {
54
54
  getApiKey,
55
55
  getBaseUrl
@@ -3,7 +3,7 @@ import {
3
3
  } from "./chunk-HB2KB7QL.js";
4
4
  import {
5
5
  codexHomeFrom
6
- } from "./chunk-XL3RKJYQ.js";
6
+ } from "./chunk-JBJBVERL.js";
7
7
 
8
8
  // src/vscode-config.ts
9
9
  import { homedir } from "os";
@@ -2,7 +2,7 @@ import {
2
2
  resolveBinary,
3
3
  resolveGlobalPackageVersion,
4
4
  resolvePackageVersionFromBinary
5
- } from "./chunk-XL3RKJYQ.js";
5
+ } from "./chunk-JBJBVERL.js";
6
6
  import {
7
7
  MANAGED_PROVIDERS
8
8
  } from "./chunk-OUAE3GKO.js";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  writeJsonAtomicDurable
3
- } from "./chunk-VZD2GEKB.js";
3
+ } from "./chunk-4LL6LG5X.js";
4
4
 
5
5
  // src/transcript-recipient-pin.ts
6
6
  import { existsSync, mkdirSync, readFileSync, rmSync } from "fs";
@@ -0,0 +1,30 @@
1
+ import {
2
+ inspectConfiguredManagedProviders,
3
+ reapplyAllAgents,
4
+ reapplyClaudeForVersion,
5
+ reapplyClaudeSettings,
6
+ reapplyCodexSettings,
7
+ reapplyCursorPlugin,
8
+ reapplyGeminiSettings,
9
+ reapplyVsCodePlugin,
10
+ repairCodexHolds
11
+ } from "./chunk-LWKPMSBB.js";
12
+ import "./chunk-K4XFCEVI.js";
13
+ import "./chunk-QS55LDX4.js";
14
+ import "./chunk-JXELRCU5.js";
15
+ import "./chunk-PD6JY33P.js";
16
+ import "./chunk-OPR2BPD4.js";
17
+ import "./chunk-JBJBVERL.js";
18
+ import "./chunk-4LL6LG5X.js";
19
+ import "./chunk-OUAE3GKO.js";
20
+ export {
21
+ inspectConfiguredManagedProviders,
22
+ reapplyAllAgents,
23
+ reapplyClaudeForVersion,
24
+ reapplyClaudeSettings,
25
+ reapplyCodexSettings,
26
+ reapplyCursorPlugin,
27
+ reapplyGeminiSettings,
28
+ reapplyVsCodePlugin,
29
+ repairCodexHolds
30
+ };
package/dist/src/index.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  handlePreToolUse
3
- } from "../chunk-6CYB77VD.js";
4
- import "../chunk-53QCTSWY.js";
3
+ } from "../chunk-T3JZZUAR.js";
4
+ import "../chunk-6KLCP7VF.js";
5
5
  import "../chunk-XOOWC62T.js";
6
6
  import "../chunk-YHG74UFF.js";
7
7
  import {
@@ -15,7 +15,7 @@ import {
15
15
  handlePostToolUse,
16
16
  handleStop,
17
17
  reportEvent
18
- } from "../chunk-YJDRHQLG.js";
18
+ } from "../chunk-64WARXGV.js";
19
19
  import "../chunk-A76GNRIK.js";
20
20
  import "../chunk-OPR2BPD4.js";
21
21
  import {
@@ -23,13 +23,14 @@ import {
23
23
  cancelQuestion,
24
24
  waitForAnswer
25
25
  } from "../chunk-LGXUGYUH.js";
26
- import "../chunk-WU6LSXJ6.js";
27
- import "../chunk-XL3RKJYQ.js";
26
+ import "../chunk-562UJ2DA.js";
27
+ import "../chunk-JBJBVERL.js";
28
28
  import "../chunk-EYRGBYZG.js";
29
29
  import "../chunk-SAF6HGAA.js";
30
30
  import "../chunk-7QLSKOSU.js";
31
31
  import "../chunk-KZERVKTD.js";
32
- import "../chunk-VZD2GEKB.js";
32
+ import "../chunk-GCD3SQSV.js";
33
+ import "../chunk-4LL6LG5X.js";
33
34
  import {
34
35
  getApiKey,
35
36
  getBaseUrl
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pushary/agent-hooks",
3
- "version": "0.98.0",
3
+ "version": "0.99.0",
4
4
  "description": "Permission hooks for AI coding agents: route tool approvals through Pushary push notifications",
5
5
  "keywords": [
6
6
  "pushary",