@pushary/agent-hooks 1.5.1 → 1.6.1

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 (82) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/dist/bin/pushary-bell-hook.js +18 -18
  3. package/dist/bin/pushary-bell.js +6 -6
  4. package/dist/bin/pushary-claude.js +19 -19
  5. package/dist/bin/pushary-clean.js +20 -20
  6. package/dist/bin/pushary-codex-bridge.js +95 -20
  7. package/dist/bin/pushary-codex-hook.js +24 -24
  8. package/dist/bin/pushary-codex.js +7 -7
  9. package/dist/bin/pushary-connect.js +6 -6
  10. package/dist/bin/pushary-cowork.js +3 -3
  11. package/dist/bin/pushary-daemon.js +23 -23
  12. package/dist/bin/pushary-disconnect.js +11 -11
  13. package/dist/bin/pushary-doctor.js +23 -23
  14. package/dist/bin/pushary-elicitation-hook.js +18 -18
  15. package/dist/bin/pushary-gemini-bridge.js +9 -9
  16. package/dist/bin/pushary-gemini-hook.js +21 -21
  17. package/dist/bin/pushary-hook.js +24 -24
  18. package/dist/bin/pushary-login.js +7 -7
  19. package/dist/bin/pushary-logout.js +4 -4
  20. package/dist/bin/pushary-mode.js +3 -3
  21. package/dist/bin/pushary-notification-hook.js +21 -21
  22. package/dist/bin/pushary-opencode-hook.js +20 -20
  23. package/dist/bin/pushary-permission-denied-hook.js +25 -25
  24. package/dist/bin/pushary-permission-hook.js +24 -24
  25. package/dist/bin/pushary-post-hook.js +21 -21
  26. package/dist/bin/pushary-prompt-hook.js +21 -21
  27. package/dist/bin/pushary-session-end-hook.js +21 -21
  28. package/dist/bin/pushary-session-start-hook.js +25 -25
  29. package/dist/bin/pushary-setup.js +29 -30
  30. package/dist/bin/pushary-stats.js +2 -2
  31. package/dist/bin/pushary-status.js +10 -10
  32. package/dist/bin/pushary-stop-hook.js +21 -21
  33. package/dist/bin/pushary-stopfailure-hook.js +21 -21
  34. package/dist/bin/pushary-transcript-register.js +16 -16
  35. package/dist/bin/pushary-transcripts.js +4 -4
  36. package/dist/bin/pushary-upgrade.js +44 -26
  37. package/dist/bin/pushary-wait.js +3 -3
  38. package/dist/{chunk-X7FESZTD.js → chunk-2PHHXWA4.js} +3 -3
  39. package/dist/{chunk-M2LMXPJZ.js → chunk-3ROHFC7Q.js} +1 -1
  40. package/dist/{chunk-2AUIEZYS.js → chunk-3TKMWW34.js} +3 -3
  41. package/dist/{chunk-6EEANS74.js → chunk-45BA4RL6.js} +8 -3
  42. package/dist/{chunk-TUXFIVOH.js → chunk-5NDOV3UU.js} +1 -1
  43. package/dist/{chunk-HUAOMX4U.js → chunk-5TRIYAHM.js} +1 -1
  44. package/dist/{chunk-HVBF35GT.js → chunk-7H4HD2WR.js} +1 -1
  45. package/dist/{chunk-43ZDACBO.js → chunk-7WRJFRNF.js} +1 -1
  46. package/dist/{chunk-YAWXKL2X.js → chunk-7XGW7IKI.js} +1 -1
  47. package/dist/{chunk-KHXVTWYS.js → chunk-B75OQ2E7.js} +3 -3
  48. package/dist/{chunk-5UQ5ATIE.js → chunk-CATEMFAP.js} +1 -1
  49. package/dist/{chunk-JKBDGZFL.js → chunk-CNJWNFBL.js} +22 -12
  50. package/dist/{chunk-XWEONSLV.js → chunk-DACRA27R.js} +1 -1
  51. package/dist/{chunk-5ZZG76S2.js → chunk-GE64YOTX.js} +2 -2
  52. package/dist/{chunk-5HYNICS7.js → chunk-GOQC7R3F.js} +1 -1
  53. package/dist/{chunk-HU5LSYL2.js → chunk-IEXXFXSP.js} +1 -1
  54. package/dist/{chunk-WNJSGZY7.js → chunk-J7X5YVTP.js} +4 -4
  55. package/dist/{chunk-KJRALILH.js → chunk-K5BPU3RG.js} +2 -2
  56. package/dist/{chunk-6IU45EHE.js → chunk-L2FPZQQM.js} +1 -1
  57. package/dist/{chunk-TZGCUNOX.js → chunk-LNMHLXNR.js} +6 -6
  58. package/dist/{chunk-PYCQXCI5.js → chunk-LVHGSD5E.js} +2 -0
  59. package/dist/{chunk-TFKBFQCE.js → chunk-MK7ZJ2JN.js} +1 -1
  60. package/dist/{chunk-UYDTFCHW.js → chunk-MR2GHF3F.js} +1 -1
  61. package/dist/{chunk-43LJSM4F.js → chunk-MZCYOUBR.js} +1 -1
  62. package/dist/{chunk-T4QY64OR.js → chunk-NTTMJFJU.js} +383 -13
  63. package/dist/{chunk-Z4VGIBJ7.js → chunk-NYFBIXA7.js} +3 -3
  64. package/dist/{chunk-MU3WU2FO.js → chunk-O6MHM25J.js} +1 -1
  65. package/dist/{chunk-USQDVBEV.js → chunk-OLD4YGZR.js} +1 -1
  66. package/dist/{chunk-DTQNDR7C.js → chunk-PWQHK3F7.js} +1 -1
  67. package/dist/{chunk-D573TLP6.js → chunk-ROCRCXTP.js} +8 -7
  68. package/dist/{chunk-6QFEQIPM.js → chunk-TPD6LCQI.js} +2 -2
  69. package/dist/{chunk-PJ27EHCD.js → chunk-UJ4O22GU.js} +67 -13
  70. package/dist/{chunk-4ERLRNOK.js → chunk-UMVM4HVV.js} +3 -3
  71. package/dist/{chunk-K3QVDAZW.js → chunk-VT5TVFM3.js} +1 -1
  72. package/dist/{chunk-TIWURSLS.js → chunk-VT63XWPR.js} +1 -1
  73. package/dist/{chunk-3ZSGKLSO.js → chunk-W5JUN4TF.js} +2 -2
  74. package/dist/{chunk-2QT3GCU4.js → chunk-WBWF7WU7.js} +1 -1
  75. package/dist/{chunk-WOLPADR6.js → chunk-WHOD4YGB.js} +1 -1
  76. package/dist/{chunk-R5KY3PBN.js → chunk-X4G4MQEV.js} +5 -5
  77. package/dist/{chunk-IV3RHICU.js → chunk-XTXCQ4QE.js} +4 -4
  78. package/dist/{chunk-MDJJW3LP.js → chunk-ZR4NP264.js} +3 -3
  79. package/dist/{reapply-5CZSTJZI.js → reapply-GGHT2YJX.js} +9 -9
  80. package/dist/src/index.d.ts +1 -0
  81. package/dist/src/index.js +13 -13
  82. package/package.json +1 -1
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  activeHookSource,
3
3
  activeIdentity
4
- } from "./chunk-R5KY3PBN.js";
4
+ } from "./chunk-X4G4MQEV.js";
5
5
  import {
6
6
  blockedActionFingerprint,
7
7
  defersToNativeMode,
@@ -9,11 +9,11 @@ import {
9
9
  hasBlockedActionHint,
10
10
  recordBlockedActionHint,
11
11
  reportMachineDenial
12
- } from "./chunk-MDJJW3LP.js";
12
+ } from "./chunk-ZR4NP264.js";
13
13
  import {
14
14
  isGatingMoment,
15
15
  recordKeylessMoment
16
- } from "./chunk-43ZDACBO.js";
16
+ } from "./chunk-7WRJFRNF.js";
17
17
  import {
18
18
  denyReasonFrom,
19
19
  isDeferAnswer
@@ -36,7 +36,7 @@ import {
36
36
  reportEvent,
37
37
  scopePathFor,
38
38
  settleQuestionsForToolUse
39
- } from "./chunk-D573TLP6.js";
39
+ } from "./chunk-ROCRCXTP.js";
40
40
  import {
41
41
  DECISION_STOP_REASON,
42
42
  askUser,
@@ -48,10 +48,10 @@ import {
48
48
  requestGate,
49
49
  sendNotification,
50
50
  waitForQuestion
51
- } from "./chunk-PYCQXCI5.js";
51
+ } from "./chunk-LVHGSD5E.js";
52
52
  import {
53
53
  getMachineId
54
- } from "./chunk-WOLPADR6.js";
54
+ } from "./chunk-WHOD4YGB.js";
55
55
  import {
56
56
  getApiKey,
57
57
  getBaseUrl
@@ -61,9 +61,13 @@ import {
61
61
  GATE_BLOCK_REASON_MAX_LENGTH,
62
62
  GATE_WIRE,
63
63
  agentQuestionStrategy,
64
+ agentRulesAllowEveryInput,
64
65
  buildDecisionEpisodeFeatures,
66
+ claudeAllowlistOwnsCall,
67
+ claudeConsultsItsAllowlist,
65
68
  claudePermissionDeniedOutput,
66
69
  claudePermissionRequestOutput,
70
+ claudePermissionRulesFromSettings,
67
71
  claudePreToolUseOutput,
68
72
  claudePromptsBeforeAnEdit,
69
73
  editAsksAtTheAgentsPrompt,
@@ -79,7 +83,51 @@ import {
79
83
  parseAgentQuestions,
80
84
  resolveGate,
81
85
  stoppedOutput
82
- } from "./chunk-T4QY64OR.js";
86
+ } from "./chunk-NTTMJFJU.js";
87
+
88
+ // src/claude-permission-rules.ts
89
+ import { readFileSync, statSync } from "fs";
90
+ import { homedir } from "os";
91
+ import { join } from "path";
92
+ var MANAGED_CLAUDE_SETTINGS_BY_PLATFORM = {
93
+ darwin: "/Library/Application Support/ClaudeCode/managed-settings.json",
94
+ linux: "/etc/claude-code/managed-settings.json",
95
+ win32: "C:\\ProgramData\\ClaudeCode\\managed-settings.json"
96
+ };
97
+ var MAX_CLAUDE_SETTINGS_BYTES = 1048576;
98
+ var claudeSettingsLocationFor = (cwd, environment = process.env, home = homedir(), platform = process.platform) => ({
99
+ configDir: environment.CLAUDE_CONFIG_DIR || join(home, ".claude"),
100
+ projectDir: environment.CLAUDE_PROJECT_DIR || cwd || void 0,
101
+ managedSettingsPath: MANAGED_CLAUDE_SETTINGS_BY_PLATFORM[platform]
102
+ });
103
+ var claudeSettingsSources = (location) => [
104
+ ...location.managedSettingsPath ? [{ path: location.managedSettingsPath, trust: "grants" }] : [],
105
+ { path: join(location.configDir, "settings.json"), trust: "grants" },
106
+ ...location.projectDir ? [
107
+ { path: join(location.projectDir, ".claude", "settings.json"), trust: "restricts_only" },
108
+ { path: join(location.projectDir, ".claude", "settings.local.json"), trust: "grants" }
109
+ ] : []
110
+ ];
111
+ var isRecord = (value) => typeof value === "object" && value !== null && !Array.isArray(value);
112
+ var restrictionsOnly = (document) => {
113
+ if (!isRecord(document) || !isRecord(document.permissions)) return null;
114
+ const { ask: ask2, deny: deny2 } = document.permissions;
115
+ return { permissions: { ask: ask2, deny: deny2 } };
116
+ };
117
+ var readSettingsDocument = (path) => {
118
+ try {
119
+ const stats = statSync(path);
120
+ if (!stats.isFile() || stats.size > MAX_CLAUDE_SETTINGS_BYTES) return null;
121
+ return JSON.parse(readFileSync(path, "utf8"));
122
+ } catch {
123
+ return null;
124
+ }
125
+ };
126
+ var trustedDocument = ({ path, trust }) => {
127
+ const document = readSettingsDocument(path);
128
+ return trust === "grants" ? document : restrictionsOnly(document);
129
+ };
130
+ var readClaudePermissionRules = (location) => claudePermissionRulesFromSettings(claudeSettingsSources(location).map(trustedDocument));
83
131
 
84
132
  // src/decision-episode.ts
85
133
  var EPISODE_PATH = "/api/agent/decision-episode";
@@ -104,7 +152,7 @@ var reportDecisionEpisode = async (apiKey, input) => {
104
152
  };
105
153
 
106
154
  // src/hook.ts
107
- import { basename, join } from "path";
155
+ import { basename, join as join2 } from "path";
108
156
  import { tmpdir } from "os";
109
157
  import { existsSync, writeFileSync } from "fs";
110
158
  var START_MS = Date.now();
@@ -259,7 +307,8 @@ var dispatchModeHandler = async (apiKey, input, toolPolicy, machineId, trainingC
259
307
  // The gate asks at most one question per tool call, so the runtime's id needs
260
308
  // no suffix here. Absent on runtimes that do not send one, and the server then
261
309
  // creates a fresh decision exactly as before.
262
- toolUseId: input.tool_use_id
310
+ toolUseId: input.tool_use_id,
311
+ sessionToolAware: true
263
312
  };
264
313
  const signals = {};
265
314
  const runHandler = () => {
@@ -298,7 +347,7 @@ var KEYLESS_NOTICE = "[pushary] Not connected (no API key), so your agent runs u
298
347
  var oncePerSession = (kind, sessionId) => {
299
348
  try {
300
349
  const key = (sessionId || DEFAULT_SESSION).replace(/[^a-zA-Z0-9_-]/g, "");
301
- const marker = join(tmpdir(), `pushary-${kind}-${key}`);
350
+ const marker = join2(tmpdir(), `pushary-${kind}-${key}`);
302
351
  if (existsSync(marker)) return false;
303
352
  writeFileSync(marker, "1", "utf-8");
304
353
  return true;
@@ -457,6 +506,8 @@ var handleKeyless = (input) => {
457
506
  }
458
507
  return void 0;
459
508
  };
509
+ var claudePermissionRulesFor = (input) => ACTIVE_SOURCE === "claude" ? readClaudePermissionRules(claudeSettingsLocationFor(input.cwd)) : null;
510
+ var claudeRulesMayCover = (input, rules) => rules !== null && claudeConsultsItsAllowlist(input.permission_mode) && agentRulesAllowEveryInput(rules, input.tool_name, [input.tool_input ?? {}], input.cwd);
460
511
  var claudeGateInput = (modeState, config, input, canonical) => {
461
512
  const toolName = canonical?.toolName ?? input.tool_name;
462
513
  const toolInputs = canonical?.toolInputs ?? [input.tool_input ?? {}];
@@ -549,6 +600,7 @@ var handlePreToolUse = async (input, canonical) => {
549
600
  if (!(verdict.kind === "gate" && verdict.scopeReason) && shouldDeferToNativeMode(input.permission_mode, input.tool_name)) {
550
601
  return void 0;
551
602
  }
603
+ if (claudeAllowlistOwnsCall(gateInput, verdict, input.permission_mode, claudePermissionRulesFor(input))) return void 0;
552
604
  if (claudePromptsBeforeAnEdit(input.permission_mode) && editAsksAtTheAgentsPrompt(gateInput, verdict)) return handleTerminalOnly();
553
605
  switch (verdict.kind) {
554
606
  case "allow":
@@ -578,7 +630,8 @@ var toPermissionRequestOutput = (hookOutput) => {
578
630
  return void 0;
579
631
  };
580
632
  var handlePermissionRequest = async (input, canonical) => {
581
- if (canonical === void 0 && isPermissionRequestOwnedByPreToolUse(input.tool_name, input.permission_mode, shouldDeferToNativeMode)) return void 0;
633
+ const claudeRules = claudePermissionRulesFor(input);
634
+ if (canonical === void 0 && !claudeRulesMayCover(input, claudeRules) && isPermissionRequestOwnedByPreToolUse(input.tool_name, input.permission_mode, shouldDeferToNativeMode)) return void 0;
582
635
  if (isPusharyOwnTool(input.tool_name)) return void 0;
583
636
  let apiKey;
584
637
  try {
@@ -589,7 +642,8 @@ var handlePermissionRequest = async (input, canonical) => {
589
642
  try {
590
643
  const modeState = await fetchModeState(apiKey, input.session_id);
591
644
  const policy = await getPolicy(apiKey, modeState.policyVersion, ACTIVE_AGENT.type, true, input.session_id);
592
- const verdict = resolveGate(claudeGateInput(modeState, policy, input, canonical));
645
+ const gateInput = claudeGateInput(modeState, policy, input, canonical);
646
+ const verdict = resolveGate(gateInput);
593
647
  if (verdict.kind === "kill") {
594
648
  await reportMachineDenial(input, verdict, ACTIVE_AGENT);
595
649
  return permReqHalted(verdict.reason);
@@ -601,7 +655,7 @@ var handlePermissionRequest = async (input, canonical) => {
601
655
  if (canonical === null) return permReqDeny(unreadableReason);
602
656
  if (agentQuestionStrategy(ACTIVE_SOURCE, "PermissionRequest", input.tool_name) === AGENT_QUESTION_STRATEGY.native) return void 0;
603
657
  if (verdict.kind === "gate" && verdict.scopeReason && (canonical?.toolInputs.length ?? 0) > 1) return permReqDeny(batchScopeReason);
604
- if (!(verdict.kind === "gate" && verdict.scopeReason) && isPermissionRequestOwnedByPreToolUse(input.tool_name, input.permission_mode, shouldDeferToNativeMode)) return void 0;
658
+ if (!(verdict.kind === "gate" && verdict.scopeReason) && !claudeAllowlistOwnsCall(gateInput, verdict, input.permission_mode, claudeRules) && isPermissionRequestOwnedByPreToolUse(input.tool_name, input.permission_mode, shouldDeferToNativeMode)) return void 0;
605
659
  switch (verdict.kind) {
606
660
  case "allow":
607
661
  return permReqAllow();
@@ -1,17 +1,17 @@
1
1
  import {
2
2
  CLAUDE_HOOK_EVENTS,
3
3
  supportedClaudeEvents
4
- } from "./chunk-2AUIEZYS.js";
4
+ } from "./chunk-3TKMWW34.js";
5
5
  import {
6
6
  guardBinary,
7
7
  holdBudgetOf,
8
8
  isProtectedByScope,
9
9
  registerHookEntry
10
- } from "./chunk-6IU45EHE.js";
10
+ } from "./chunk-L2FPZQQM.js";
11
11
  import {
12
12
  HOOK_LOCATOR_BINARY,
13
13
  withHookHoldBudget
14
- } from "./chunk-T4QY64OR.js";
14
+ } from "./chunk-NTTMJFJU.js";
15
15
 
16
16
  // src/claude-config.ts
17
17
  import { join } from "path";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  HOOK_LOCATOR_BINARY
3
- } from "./chunk-T4QY64OR.js";
3
+ } from "./chunk-NTTMJFJU.js";
4
4
 
5
5
  // src/diagnostics/bridge.ts
6
6
  import { execFileSync } from "child_process";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  redactSecrets
3
- } from "./chunk-T4QY64OR.js";
3
+ } from "./chunk-NTTMJFJU.js";
4
4
 
5
5
  // src/crypto.ts
6
6
  import nacl from "tweetnacl";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  SETUP_FLAGS
3
- } from "./chunk-TFKBFQCE.js";
3
+ } from "./chunk-MK7ZJ2JN.js";
4
4
  import {
5
5
  parseFlags
6
6
  } from "./chunk-GMXKITVA.js";
@@ -14,7 +14,7 @@ import {
14
14
  CLAUDE_CONNECTOR_URL,
15
15
  COWORK_CONNECTOR_LIMIT,
16
16
  COWORK_STANDING_INSTRUCTIONS
17
- } from "./chunk-T4QY64OR.js";
17
+ } from "./chunk-NTTMJFJU.js";
18
18
 
19
19
  // src/cli/cowork.ts
20
20
  import { readFileSync } from "fs";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  readTranscriptPreference
3
- } from "./chunk-USQDVBEV.js";
3
+ } from "./chunk-OLD4YGZR.js";
4
4
 
5
5
  // src/transcript-setting.ts
6
6
  var transcriptEnvironmentPreference = () => {
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  pusharyDir
3
- } from "./chunk-6IU45EHE.js";
3
+ } from "./chunk-L2FPZQQM.js";
4
4
  import {
5
5
  writeFileAtomic
6
6
  } from "./chunk-T7E75EKA.js";
@@ -3,28 +3,28 @@ import {
3
3
  addPusharyToolPermissions,
4
4
  isPusharyHook,
5
5
  removeClaudeMcpServers
6
- } from "./chunk-4ERLRNOK.js";
6
+ } from "./chunk-UMVM4HVV.js";
7
7
  import {
8
8
  CLAUDE_HOOK_EVENTS,
9
9
  addGeminiMcpServer,
10
10
  removeGeminiMcpServer
11
- } from "./chunk-2AUIEZYS.js";
11
+ } from "./chunk-3TKMWW34.js";
12
12
  import {
13
13
  CLAUDE_CODE_AGENT,
14
14
  parseApplyPatchFiles
15
- } from "./chunk-D573TLP6.js";
15
+ } from "./chunk-ROCRCXTP.js";
16
16
  import {
17
17
  guardBinary,
18
18
  holdBudgetOf,
19
19
  registerHookEntry
20
- } from "./chunk-6IU45EHE.js";
20
+ } from "./chunk-L2FPZQQM.js";
21
21
  import {
22
22
  PHONE_ANSWERED_TOOLS,
23
23
  hookCompatibleProfile,
24
24
  hookCompatibleProfileBySource,
25
25
  toToolLookup,
26
26
  withHookHoldBudget
27
- } from "./chunk-T4QY64OR.js";
27
+ } from "./chunk-NTTMJFJU.js";
28
28
 
29
29
  // src/compatible-config.ts
30
30
  import { homedir } from "os";
@@ -2,21 +2,21 @@ import {
2
2
  detectProviderLiveCapabilities,
3
3
  hasSpawnProvider,
4
4
  resolveControlPolicy
5
- } from "./chunk-5ZZG76S2.js";
5
+ } from "./chunk-GE64YOTX.js";
6
6
  import {
7
7
  daemonHasRemoteProof,
8
8
  daemonServiceManagerAvailable,
9
9
  hasDaemonServiceDefinition,
10
10
  readDaemonNeedsLogin,
11
11
  readDaemonStatus
12
- } from "./chunk-X7FESZTD.js";
12
+ } from "./chunk-2PHHXWA4.js";
13
13
  import {
14
14
  getMachineId
15
- } from "./chunk-WOLPADR6.js";
15
+ } from "./chunk-WHOD4YGB.js";
16
16
  import {
17
17
  readControlMode,
18
18
  readKeySource
19
- } from "./chunk-USQDVBEV.js";
19
+ } from "./chunk-OLD4YGZR.js";
20
20
  import {
21
21
  getBaseUrl
22
22
  } from "./chunk-OSJEMXSR.js";
@@ -7,10 +7,10 @@ import {
7
7
  permissionDeniedAction,
8
8
  releaseThrottle,
9
9
  reportEvent
10
- } from "./chunk-D573TLP6.js";
10
+ } from "./chunk-ROCRCXTP.js";
11
11
  import {
12
12
  canonicalJson
13
- } from "./chunk-6IU45EHE.js";
13
+ } from "./chunk-L2FPZQQM.js";
14
14
  import {
15
15
  writeFileAtomic
16
16
  } from "./chunk-T7E75EKA.js";
@@ -20,7 +20,7 @@ import {
20
20
  machineDecisionFor,
21
21
  shouldDeferToNativeMode,
22
22
  wireVerdictFor
23
- } from "./chunk-T4QY64OR.js";
23
+ } from "./chunk-NTTMJFJU.js";
24
24
 
25
25
  // src/machine-decision-audit.ts
26
26
  import { basename } from "path";
@@ -9,17 +9,17 @@ import {
9
9
  reapplyGeminiSettings,
10
10
  reapplyVsCodePlugin,
11
11
  repairCodexHolds
12
- } from "./chunk-JKBDGZFL.js";
13
- import "./chunk-HUAOMX4U.js";
14
- import "./chunk-6EEANS74.js";
15
- import "./chunk-4ERLRNOK.js";
16
- import "./chunk-Z4VGIBJ7.js";
17
- import "./chunk-2AUIEZYS.js";
12
+ } from "./chunk-CNJWNFBL.js";
13
+ import "./chunk-5TRIYAHM.js";
14
+ import "./chunk-45BA4RL6.js";
15
+ import "./chunk-UMVM4HVV.js";
16
+ import "./chunk-NYFBIXA7.js";
17
+ import "./chunk-3TKMWW34.js";
18
18
  import "./chunk-XHKBHWLX.js";
19
- import "./chunk-UYDTFCHW.js";
20
- import "./chunk-6IU45EHE.js";
19
+ import "./chunk-MR2GHF3F.js";
20
+ import "./chunk-L2FPZQQM.js";
21
21
  import "./chunk-T7E75EKA.js";
22
- import "./chunk-T4QY64OR.js";
22
+ import "./chunk-NTTMJFJU.js";
23
23
  import "./chunk-HWJW3CPO.js";
24
24
  export {
25
25
  ensureCodexTrustAfterReapply,
@@ -157,6 +157,7 @@ interface AskUserParams {
157
157
  toolUseId?: string;
158
158
  waitEndsAt?: string;
159
159
  requestId?: string;
160
+ sessionToolAware?: true;
160
161
  }
161
162
  interface AskUserResponse {
162
163
  correlationId: string;
package/dist/src/index.js CHANGED
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  handlePreToolUse
3
- } from "../chunk-PJ27EHCD.js";
4
- import "../chunk-R5KY3PBN.js";
5
- import "../chunk-4ERLRNOK.js";
6
- import "../chunk-MDJJW3LP.js";
7
- import "../chunk-43ZDACBO.js";
3
+ } from "../chunk-UJ4O22GU.js";
4
+ import "../chunk-X4G4MQEV.js";
5
+ import "../chunk-UMVM4HVV.js";
6
+ import "../chunk-ZR4NP264.js";
7
+ import "../chunk-7WRJFRNF.js";
8
8
  import "../chunk-YHG74UFF.js";
9
- import "../chunk-2AUIEZYS.js";
9
+ import "../chunk-3TKMWW34.js";
10
10
  import {
11
11
  fetchAccountPublicKey
12
12
  } from "../chunk-66H2QQAK.js";
@@ -18,20 +18,20 @@ import {
18
18
  handlePostToolUse,
19
19
  handleStop,
20
20
  reportEvent
21
- } from "../chunk-D573TLP6.js";
22
- import "../chunk-UYDTFCHW.js";
21
+ } from "../chunk-ROCRCXTP.js";
22
+ import "../chunk-MR2GHF3F.js";
23
23
  import {
24
24
  askUser,
25
25
  cancelQuestion,
26
26
  waitForAnswer
27
- } from "../chunk-PYCQXCI5.js";
28
- import "../chunk-WOLPADR6.js";
29
- import "../chunk-6IU45EHE.js";
27
+ } from "../chunk-LVHGSD5E.js";
28
+ import "../chunk-WHOD4YGB.js";
29
+ import "../chunk-L2FPZQQM.js";
30
30
  import "../chunk-HETOKNIL.js";
31
31
  import "../chunk-SAF6HGAA.js";
32
32
  import "../chunk-7QLSKOSU.js";
33
33
  import "../chunk-KZERVKTD.js";
34
- import "../chunk-HU5LSYL2.js";
34
+ import "../chunk-IEXXFXSP.js";
35
35
  import "../chunk-T7E75EKA.js";
36
36
  import {
37
37
  getApiKey,
@@ -39,7 +39,7 @@ import {
39
39
  } from "../chunk-OSJEMXSR.js";
40
40
  import {
41
41
  resolvePolicy
42
- } from "../chunk-T4QY64OR.js";
42
+ } from "../chunk-NTTMJFJU.js";
43
43
  import "../chunk-EA3IELHP.js";
44
44
  import "../chunk-HWJW3CPO.js";
45
45
  export {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pushary/agent-hooks",
3
- "version": "1.5.1",
3
+ "version": "1.6.1",
4
4
  "description": "Permission hooks for AI coding agents: route tool approvals through Pushary push notifications",
5
5
  "keywords": [
6
6
  "pushary",