@pushary/agent-hooks 1.9.5 → 1.9.6

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 (99) hide show
  1. package/CHANGELOG.md +5 -0
  2. package/data/cowork/SKILL.md +11 -10
  3. package/dist/bin/pushary-bell-hook.js +23 -23
  4. package/dist/bin/pushary-bell.js +9 -9
  5. package/dist/bin/pushary-claude.js +26 -26
  6. package/dist/bin/pushary-clean.js +28 -28
  7. package/dist/bin/pushary-codex-bridge.js +18 -18
  8. package/dist/bin/pushary-codex-hook.js +31 -31
  9. package/dist/bin/pushary-codex.js +13 -13
  10. package/dist/bin/pushary-connect.js +13 -13
  11. package/dist/bin/pushary-cowork.js +5 -5
  12. package/dist/bin/pushary-daemon.js +26 -26
  13. package/dist/bin/pushary-disconnect.js +18 -18
  14. package/dist/bin/pushary-doctor.js +30 -30
  15. package/dist/bin/pushary-elicitation-hook.js +25 -25
  16. package/dist/bin/pushary-gemini-bridge.js +13 -13
  17. package/dist/bin/pushary-gemini-hook.js +28 -28
  18. package/dist/bin/pushary-hook.js +32 -32
  19. package/dist/bin/pushary-login.js +12 -12
  20. package/dist/bin/pushary-logout.js +7 -7
  21. package/dist/bin/pushary-mcp.js +9 -9
  22. package/dist/bin/pushary-mode.js +9 -9
  23. package/dist/bin/pushary-notification-hook.js +28 -28
  24. package/dist/bin/pushary-opencode-hook.js +27 -27
  25. package/dist/bin/pushary-permission-denied-hook.js +32 -32
  26. package/dist/bin/pushary-permission-hook.js +31 -31
  27. package/dist/bin/pushary-post-hook.js +28 -28
  28. package/dist/bin/pushary-prompt-hook.js +28 -28
  29. package/dist/bin/pushary-session-end-hook.js +28 -28
  30. package/dist/bin/pushary-session-start-hook.js +31 -31
  31. package/dist/bin/pushary-setup.js +36 -36
  32. package/dist/bin/pushary-stats.js +5 -5
  33. package/dist/bin/pushary-status.js +15 -15
  34. package/dist/bin/pushary-stop-hook.js +28 -28
  35. package/dist/bin/pushary-stopfailure-hook.js +28 -28
  36. package/dist/bin/pushary-suggestions.js +4 -4
  37. package/dist/bin/pushary-transcript-register.js +19 -19
  38. package/dist/bin/pushary-transcripts.js +7 -7
  39. package/dist/bin/pushary-upgrade.js +21 -21
  40. package/dist/bin/pushary-wait.js +9 -9
  41. package/dist/bin/pushary.js +6 -6
  42. package/dist/{chunk-G3W5GP6O.js → chunk-2I23NFVT.js} +5 -5
  43. package/dist/{chunk-2DSUVY6R.js → chunk-2QRE6QH2.js} +1 -1
  44. package/dist/{chunk-K2J6OGGN.js → chunk-3BUAEQCY.js} +1 -1
  45. package/dist/{chunk-L5XJZKF2.js → chunk-4QKM44N6.js} +3 -3
  46. package/dist/{chunk-IX5EFNCI.js → chunk-5AXCOTIT.js} +1 -1
  47. package/dist/{chunk-5DU7LJ7L.js → chunk-5BHROGRB.js} +2 -2
  48. package/dist/{chunk-TNCINDSF.js → chunk-5PMTC2CB.js} +6 -6
  49. package/dist/{chunk-2JOP4D2G.js → chunk-6GERGJHF.js} +2 -2
  50. package/dist/{chunk-FQKFONAS.js → chunk-75CA37FZ.js} +2 -2
  51. package/dist/{chunk-7AV2KBZC.js → chunk-7JTVYR5B.js} +1 -1
  52. package/dist/{chunk-ZJSII7OP.js → chunk-BSZ7VBVT.js} +10 -10
  53. package/dist/{chunk-VZGCXECP.js → chunk-BVCHY4OY.js} +2 -2
  54. package/dist/{chunk-UQBJTGLX.js → chunk-CBVDW2N6.js} +3 -3
  55. package/dist/{chunk-JSVBVV2Q.js → chunk-CCDVL63C.js} +9 -9
  56. package/dist/{chunk-RKEVFUBN.js → chunk-D7SOOVHX.js} +3 -3
  57. package/dist/{chunk-CPMVKL6H.js → chunk-DA4FTGTK.js} +4 -4
  58. package/dist/{chunk-FYEQSB6N.js → chunk-DGQTJDSJ.js} +1 -1
  59. package/dist/{chunk-KSJCYP4I.js → chunk-DJ4BB264.js} +1 -1
  60. package/dist/{chunk-QEY4SCXT.js → chunk-EVFY3VE6.js} +1 -1
  61. package/dist/{chunk-LSYSKKWW.js → chunk-EZAFBC2C.js} +1 -1
  62. package/dist/{chunk-4LVFBQJ3.js → chunk-F56SB65Y.js} +2 -2
  63. package/dist/{chunk-6WKOOF2H.js → chunk-FBD3QGVJ.js} +2 -2
  64. package/dist/{chunk-M7MMZURA.js → chunk-GQHZIBAZ.js} +1 -1
  65. package/dist/{chunk-ZBF5WAP7.js → chunk-HJXZJF6O.js} +4 -4
  66. package/dist/{chunk-ORBTANP2.js → chunk-HT3WMM6Q.js} +1 -1
  67. package/dist/{chunk-2PFD44YK.js → chunk-HWQNQVY6.js} +2 -2
  68. package/dist/{chunk-FNOY2K4N.js → chunk-IMGJYFCX.js} +2 -2
  69. package/dist/{chunk-V3TD72QA.js → chunk-IR5FRUPQ.js} +3 -3
  70. package/dist/{chunk-G7CZUI4G.js → chunk-JUFKJCZG.js} +1 -1
  71. package/dist/{chunk-XXBOA4ZL.js → chunk-KK54WQ74.js} +1 -1
  72. package/dist/{chunk-HOTK2D2S.js → chunk-L6USMDTW.js} +1 -1
  73. package/dist/{chunk-NUYECJ57.js → chunk-LBLCFD5K.js} +1 -1
  74. package/dist/{chunk-6OUATBSK.js → chunk-MKJ3RTUS.js} +2 -2
  75. package/dist/{chunk-3Z7NUGXO.js → chunk-NVGDMTX3.js} +4 -4
  76. package/dist/{chunk-LBTOB7Z7.js → chunk-PYZC54KA.js} +5 -5
  77. package/dist/{chunk-23R4BMUP.js → chunk-Q23MMVTD.js} +1 -1
  78. package/dist/{chunk-SBR2UKUO.js → chunk-Q4E56K4X.js} +15 -3
  79. package/dist/{chunk-XEZWDDR5.js → chunk-RDK7FX5F.js} +1 -1
  80. package/dist/{chunk-GRFV6GPY.js → chunk-RIC6OOJX.js} +1 -1
  81. package/dist/{chunk-5T65DZBH.js → chunk-SJN22ADZ.js} +1 -1
  82. package/dist/{chunk-Q6KNNFGG.js → chunk-SNJ3BOCP.js} +2 -2
  83. package/dist/{chunk-ZW7KE2GP.js → chunk-SPXBXN23.js} +1 -1
  84. package/dist/{chunk-GBKM4ULB.js → chunk-SVTHEMM3.js} +6 -6
  85. package/dist/{chunk-NH63BTRO.js → chunk-TE5M6GGK.js} +5 -5
  86. package/dist/{chunk-NI2BRIHL.js → chunk-UKNKYTTY.js} +3 -3
  87. package/dist/{chunk-V3ASMZLF.js → chunk-VRT3EEZN.js} +8 -8
  88. package/dist/{chunk-ELQAQZNO.js → chunk-W4Q7NFXU.js} +3 -3
  89. package/dist/{chunk-UM7DXK6V.js → chunk-WN6WYUCV.js} +5 -5
  90. package/dist/{chunk-2KH5NTKR.js → chunk-WUKUXICK.js} +2 -2
  91. package/dist/{chunk-EYKHHCLA.js → chunk-YPXUD6DW.js} +4 -4
  92. package/dist/{chunk-KTIY7ZIA.js → chunk-ZC3TF4LR.js} +5 -5
  93. package/dist/{chunk-CV2IAVD5.js → chunk-ZPW4MJOV.js} +3 -3
  94. package/dist/{global-upgrade-GWD4OADP.js → global-upgrade-7F5RP45B.js} +6 -6
  95. package/dist/{paths-MJGE4UFY.js → paths-MELXIVBO.js} +2 -2
  96. package/dist/{reapply-U6BMGCAB.js → reapply-NOB2Q6C4.js} +8 -8
  97. package/dist/src/index.js +20 -20
  98. package/dist/{upgrade-lock-HQP6XCER.js → upgrade-lock-AHRBA66K.js} +3 -3
  99. package/package.json +1 -1
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  configFilePath
3
- } from "./chunk-2DSUVY6R.js";
3
+ } from "./chunk-2QRE6QH2.js";
4
4
  import {
5
5
  normalizeInstallSource
6
- } from "./chunk-SBR2UKUO.js";
6
+ } from "./chunk-Q4E56K4X.js";
7
7
 
8
8
  // src/install-source.ts
9
9
  import { readFileSync } from "fs";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  getBaseUrl
3
- } from "./chunk-2DSUVY6R.js";
3
+ } from "./chunk-2QRE6QH2.js";
4
4
 
5
5
  // src/transcript-api.ts
6
6
  var fetchTranscriptRecipients = async (apiKey, baseUrl = getBaseUrl()) => {
@@ -1,15 +1,15 @@
1
1
  import {
2
2
  activeHookSource,
3
3
  activeIdentity
4
- } from "./chunk-NH63BTRO.js";
4
+ } from "./chunk-TE5M6GGK.js";
5
5
  import {
6
6
  defersToNativeMode,
7
7
  reportMachineDenial
8
- } from "./chunk-VZGCXECP.js";
8
+ } from "./chunk-BVCHY4OY.js";
9
9
  import {
10
10
  isGatingMoment,
11
11
  recordKeylessMoment
12
- } from "./chunk-M7MMZURA.js";
12
+ } from "./chunk-GQHZIBAZ.js";
13
13
  import {
14
14
  announceSubscriptionRequired,
15
15
  denyReasonFrom,
@@ -39,7 +39,7 @@ import {
39
39
  reportEvent,
40
40
  scopePathFor,
41
41
  settleQuestionsForToolUse
42
- } from "./chunk-JSVBVV2Q.js";
42
+ } from "./chunk-CCDVL63C.js";
43
43
  import {
44
44
  DEFAULT_SESSION
45
45
  } from "./chunk-N6IOSZOE.js";
@@ -55,20 +55,20 @@ import {
55
55
  requestGate,
56
56
  sendNotification,
57
57
  waitForQuestion
58
- } from "./chunk-UM7DXK6V.js";
58
+ } from "./chunk-WN6WYUCV.js";
59
59
  import {
60
60
  SubscriptionRequiredError
61
- } from "./chunk-CV2IAVD5.js";
61
+ } from "./chunk-ZPW4MJOV.js";
62
62
  import {
63
63
  getMachineId
64
- } from "./chunk-K2J6OGGN.js";
64
+ } from "./chunk-3BUAEQCY.js";
65
65
  import {
66
66
  getApiKey,
67
67
  getBaseUrl
68
- } from "./chunk-2DSUVY6R.js";
68
+ } from "./chunk-2QRE6QH2.js";
69
69
  import {
70
70
  NPX_LATEST_COMMAND
71
- } from "./chunk-HOTK2D2S.js";
71
+ } from "./chunk-L6USMDTW.js";
72
72
  import {
73
73
  AGENT_QUESTION_STRATEGY,
74
74
  GATE_BLOCK_REASON_MAX_LENGTH,
@@ -96,7 +96,7 @@ import {
96
96
  parseAgentQuestions,
97
97
  resolveGate,
98
98
  stoppedOutput
99
- } from "./chunk-SBR2UKUO.js";
99
+ } from "./chunk-Q4E56K4X.js";
100
100
 
101
101
  // src/claude-permission-rules.ts
102
102
  import { readFileSync, statSync } from "fs";
@@ -5,7 +5,7 @@ import {
5
5
  permissionDeniedAction,
6
6
  releaseThrottle,
7
7
  reportEvent
8
- } from "./chunk-JSVBVV2Q.js";
8
+ } from "./chunk-CCDVL63C.js";
9
9
  import {
10
10
  DEFAULT_SESSION
11
11
  } from "./chunk-N6IOSZOE.js";
@@ -13,7 +13,7 @@ import {
13
13
  machineDecisionFor,
14
14
  shouldDeferToNativeMode,
15
15
  wireVerdictFor
16
- } from "./chunk-SBR2UKUO.js";
16
+ } from "./chunk-Q4E56K4X.js";
17
17
 
18
18
  // src/machine-decision-audit.ts
19
19
  import { basename } from "path";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  SETUP_FLAGS
3
- } from "./chunk-ZW7KE2GP.js";
3
+ } from "./chunk-SPXBXN23.js";
4
4
  import {
5
5
  parseFlags
6
6
  } from "./chunk-GMXKITVA.js";
@@ -9,7 +9,7 @@ import {
9
9
  } from "./chunk-7QLSKOSU.js";
10
10
  import {
11
11
  NPX_LATEST_COMMAND
12
- } from "./chunk-HOTK2D2S.js";
12
+ } from "./chunk-L6USMDTW.js";
13
13
  import {
14
14
  CLAUDE_CONNECTOR_GUIDE,
15
15
  CLAUDE_CONNECTOR_STEPS,
@@ -17,7 +17,7 @@ import {
17
17
  CLAUDE_CONNECTOR_URL,
18
18
  COWORK_CONNECTOR_LIMIT,
19
19
  COWORK_STANDING_INSTRUCTIONS
20
- } from "./chunk-SBR2UKUO.js";
20
+ } from "./chunk-Q4E56K4X.js";
21
21
 
22
22
  // src/cli/cowork.ts
23
23
  import { readFileSync } from "fs";
@@ -14,36 +14,36 @@ import {
14
14
  IDLE_PROMPT_NOTIFICATION,
15
15
  NOTIFICATION_PUSH_TYPES,
16
16
  POSTTOOLUSE_MIRROR_ONLY_TOOLS
17
- } from "./chunk-KSJCYP4I.js";
17
+ } from "./chunk-DJ4BB264.js";
18
18
  import {
19
19
  cancelQuestion,
20
20
  isPolicyConfig,
21
21
  sendNotification,
22
22
  waitForAnswer
23
- } from "./chunk-UM7DXK6V.js";
23
+ } from "./chunk-WN6WYUCV.js";
24
24
  import {
25
25
  clientErrorKindOf,
26
26
  reportClientError
27
- } from "./chunk-CPMVKL6H.js";
27
+ } from "./chunk-DA4FTGTK.js";
28
28
  import {
29
29
  withRetry
30
- } from "./chunk-CV2IAVD5.js";
30
+ } from "./chunk-ZPW4MJOV.js";
31
31
  import {
32
32
  getMachineId
33
- } from "./chunk-K2J6OGGN.js";
33
+ } from "./chunk-3BUAEQCY.js";
34
34
  import {
35
35
  reportedInstallSource
36
- } from "./chunk-FQKFONAS.js";
36
+ } from "./chunk-75CA37FZ.js";
37
37
  import {
38
38
  canonicalJson
39
- } from "./chunk-ZBF5WAP7.js";
39
+ } from "./chunk-HJXZJF6O.js";
40
40
  import {
41
41
  writeFileAtomic
42
42
  } from "./chunk-T7E75EKA.js";
43
43
  import {
44
44
  getApiKey,
45
45
  getBaseUrl
46
- } from "./chunk-2DSUVY6R.js";
46
+ } from "./chunk-2QRE6QH2.js";
47
47
  import {
48
48
  ACTION_BODY_MAX,
49
49
  AGENT_LABELS_BY_TYPE,
@@ -70,7 +70,7 @@ import {
70
70
  resolvePolicy,
71
71
  toToolLookup,
72
72
  truncateLine
73
- } from "./chunk-SBR2UKUO.js";
73
+ } from "./chunk-Q4E56K4X.js";
74
74
 
75
75
  // src/policy.ts
76
76
  import { createHash } from "crypto";
@@ -2,17 +2,17 @@ import {
2
2
  CLAUDE_HOOK_EVENTS,
3
3
  GEMINI_HOOK_EVENTS,
4
4
  hasGeminiHooks
5
- } from "./chunk-NI2BRIHL.js";
5
+ } from "./chunk-UKNKYTTY.js";
6
6
  import {
7
7
  CODEX_HOOK_EVENTS,
8
8
  hasCodexHooks,
9
9
  holdBudgetOf
10
- } from "./chunk-ZBF5WAP7.js";
10
+ } from "./chunk-HJXZJF6O.js";
11
11
  import {
12
12
  CURSOR_GATE_EVENTS,
13
13
  HOOK_LOCATOR_BINARY,
14
14
  hookCommandHoldBudget
15
- } from "./chunk-SBR2UKUO.js";
15
+ } from "./chunk-Q4E56K4X.js";
16
16
 
17
17
  // src/diagnostics/wiring.ts
18
18
  var record = (value) => value && typeof value === "object" && !Array.isArray(value) ? value : null;
@@ -4,18 +4,18 @@ import {
4
4
  } from "./chunk-POFBE6ZY.js";
5
5
  import {
6
6
  isNetworkFailure
7
- } from "./chunk-ELQAQZNO.js";
7
+ } from "./chunk-W4Q7NFXU.js";
8
8
  import {
9
9
  clientReportClaims
10
- } from "./chunk-ZBF5WAP7.js";
10
+ } from "./chunk-HJXZJF6O.js";
11
11
  import {
12
12
  getApiKey,
13
13
  getBaseUrl
14
- } from "./chunk-2DSUVY6R.js";
14
+ } from "./chunk-2QRE6QH2.js";
15
15
  import {
16
16
  CLIENT_REPORT_PATH,
17
17
  degradedLine
18
- } from "./chunk-SBR2UKUO.js";
18
+ } from "./chunk-Q4E56K4X.js";
19
19
 
20
20
  // src/client-report-claim.ts
21
21
  import { createHash } from "crypto";
@@ -9,7 +9,7 @@ import {
9
9
  } from "./chunk-3EGEA4KH.js";
10
10
  import {
11
11
  getBaseUrl
12
- } from "./chunk-2DSUVY6R.js";
12
+ } from "./chunk-2QRE6QH2.js";
13
13
 
14
14
  // src/cli/login-ui.ts
15
15
  import { hostname } from "os";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  PRETOOLUSE_GATED_TOOLS
3
- } from "./chunk-SBR2UKUO.js";
3
+ } from "./chunk-Q4E56K4X.js";
4
4
 
5
5
  // src/claude-tools.ts
6
6
  var POSTTOOLUSE_MIRROR_ONLY_TOOLS = ["TodoWrite", "Task", "WebFetch", "WebSearch"];
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  HOOK_HOLD_BUDGET_ENV,
3
3
  hookHoldBudgetProof
4
- } from "./chunk-SBR2UKUO.js";
4
+ } from "./chunk-Q4E56K4X.js";
5
5
 
6
6
  // src/hold-budget.ts
7
7
  var takeHookHoldBudget = (args = process.argv.slice(2), env = process.env) => {
@@ -2,7 +2,7 @@ import {
2
2
  autoUpdateLock,
3
3
  installPackageGlobally,
4
4
  npmErrorMessage
5
- } from "./chunk-ZBF5WAP7.js";
5
+ } from "./chunk-HJXZJF6O.js";
6
6
  import {
7
7
  writeJsonAtomic
8
8
  } from "./chunk-T7E75EKA.js";
@@ -3,11 +3,11 @@ import {
3
3
  decodePublicKey,
4
4
  generateSessionKey,
5
5
  wrapSessionKey
6
- } from "./chunk-IX5EFNCI.js";
6
+ } from "./chunk-5AXCOTIT.js";
7
7
  import {
8
8
  fetchTranscriptRecipients,
9
9
  uploadTranscriptRecords
10
- } from "./chunk-7AV2KBZC.js";
10
+ } from "./chunk-7JTVYR5B.js";
11
11
 
12
12
  // src/live-session.ts
13
13
  var MAX_TRANSCRIPT_QUEUE = 100;
@@ -3,10 +3,10 @@ import {
3
3
  } from "./chunk-KZERVKTD.js";
4
4
  import {
5
5
  renderCommandHelp
6
- } from "./chunk-HOTK2D2S.js";
6
+ } from "./chunk-L6USMDTW.js";
7
7
  import {
8
8
  getPackageVersion
9
- } from "./chunk-SBR2UKUO.js";
9
+ } from "./chunk-Q4E56K4X.js";
10
10
 
11
11
  // src/cli/usage.ts
12
12
  var exitOnHelpFlag = (command) => {
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  isSafeReadOnlyCommand
3
- } from "./chunk-SBR2UKUO.js";
3
+ } from "./chunk-Q4E56K4X.js";
4
4
 
5
5
  // src/ledger.ts
6
6
  import { appendFileSync, existsSync, mkdirSync, readFileSync, renameSync, rmSync, statSync } from "fs";
@@ -13,7 +13,7 @@ import {
13
13
  isReleaseVersion,
14
14
  ownPackageName,
15
15
  withHookHoldBudget
16
- } from "./chunk-SBR2UKUO.js";
16
+ } from "./chunk-Q4E56K4X.js";
17
17
 
18
18
  // src/setup/paths.ts
19
19
  import { homedir as homedir2 } from "os";
@@ -365,9 +365,9 @@ var installGlobally = (options) => {
365
365
  }
366
366
  const started = (async () => {
367
367
  if (!npmIsOnPath()) throw new NpmMissingError();
368
- const { withUpgradeLock } = await import("./global-upgrade-GWD4OADP.js");
369
- const { installWithUpgradeLock, ownsUpgradeLock } = await import("./upgrade-lock-HQP6XCER.js");
370
- const { autoUpdateLock: autoUpdateLock2 } = await import("./paths-MJGE4UFY.js");
368
+ const { withUpgradeLock } = await import("./global-upgrade-7F5RP45B.js");
369
+ const { installWithUpgradeLock, ownsUpgradeLock } = await import("./upgrade-lock-AHRBA66K.js");
370
+ const { autoUpdateLock: autoUpdateLock2 } = await import("./paths-MELXIVBO.js");
371
371
  let result = "skipped";
372
372
  const install = async () => {
373
373
  const platform = process.platform;
@@ -4,7 +4,7 @@ import {
4
4
  import {
5
5
  describeKeyCheck,
6
6
  keyCheckFromResponse
7
- } from "./chunk-L5XJZKF2.js";
7
+ } from "./chunk-4QKM44N6.js";
8
8
  import {
9
9
  EXIT
10
10
  } from "./chunk-KZERVKTD.js";
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  registerTranscript
3
- } from "./chunk-V3ASMZLF.js";
3
+ } from "./chunk-VRT3EEZN.js";
4
4
  import {
5
5
  writeDegraded
6
- } from "./chunk-CPMVKL6H.js";
6
+ } from "./chunk-DA4FTGTK.js";
7
7
 
8
8
  // src/tool-hook-input.ts
9
9
  var OPTIONAL_TEXT_FIELDS = ["hook_event_name", "session_id", "cwd", "transcript_path", "tool_use_id", "permission_mode"];
@@ -8,10 +8,10 @@ import {
8
8
  codexHooksJsonIn,
9
9
  isPusharyCodexCommand,
10
10
  resolvePathBinary
11
- } from "./chunk-ZBF5WAP7.js";
11
+ } from "./chunk-HJXZJF6O.js";
12
12
  import {
13
13
  getPackageVersion
14
- } from "./chunk-SBR2UKUO.js";
14
+ } from "./chunk-Q4E56K4X.js";
15
15
 
16
16
  // src/codex-app-server.ts
17
17
  import { existsSync, realpathSync } from "fs";
@@ -1,17 +1,17 @@
1
1
  import {
2
2
  CLAUDE_HOOK_EVENTS,
3
3
  supportedClaudeEvents
4
- } from "./chunk-NI2BRIHL.js";
4
+ } from "./chunk-UKNKYTTY.js";
5
5
  import {
6
6
  guardBinary,
7
7
  holdBudgetOf,
8
8
  isProtectedByScope,
9
9
  registerHookEntry
10
- } from "./chunk-ZBF5WAP7.js";
10
+ } from "./chunk-HJXZJF6O.js";
11
11
  import {
12
12
  HOOK_LOCATOR_BINARY,
13
13
  withHookHoldBudget
14
- } from "./chunk-SBR2UKUO.js";
14
+ } from "./chunk-Q4E56K4X.js";
15
15
 
16
16
  // src/claude-config.ts
17
17
  import { join } from "path";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  NPX_LATEST_COMMAND
3
- } from "./chunk-HOTK2D2S.js";
3
+ } from "./chunk-L6USMDTW.js";
4
4
 
5
5
  // src/setup/codex-trust.ts
6
6
  var CODEX_TRUST_TELEMETRY = {
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  readTranscriptPreference
3
- } from "./chunk-5DU7LJ7L.js";
3
+ } from "./chunk-5BHROGRB.js";
4
4
 
5
5
  // src/transcript-setting.ts
6
6
  var transcriptEnvironmentPreference = () => {
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  SETUP_AGENT_CHOICES
3
- } from "./chunk-SBR2UKUO.js";
3
+ } from "./chunk-Q4E56K4X.js";
4
4
 
5
5
  // src/cli/commands.ts
6
6
  var NPX_LATEST_COMMAND = "npx pushary@latest";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  readConfigFileKey
3
- } from "./chunk-5DU7LJ7L.js";
3
+ } from "./chunk-5BHROGRB.js";
4
4
 
5
5
  // src/bell/fleet.ts
6
6
  import { closeSync, constants, futimesSync, lstatSync, mkdirSync, openSync, readdirSync, unlinkSync } from "fs";
@@ -10,10 +10,10 @@ import {
10
10
  resolvePackageVersionFromBinary,
11
11
  resolvePathBinary,
12
12
  resolvePathBinaryAsync
13
- } from "./chunk-ZBF5WAP7.js";
13
+ } from "./chunk-HJXZJF6O.js";
14
14
  import {
15
15
  MANAGED_PROVIDERS
16
- } from "./chunk-SBR2UKUO.js";
16
+ } from "./chunk-Q4E56K4X.js";
17
17
 
18
18
  // src/setup/codex-install.ts
19
19
  var NATIVE_BINARY_MIN_BYTES = 20 * 1024 * 1024;
@@ -1,15 +1,15 @@
1
1
  import {
2
2
  AGENT_CHOICES
3
- } from "./chunk-ZW7KE2GP.js";
3
+ } from "./chunk-SPXBXN23.js";
4
4
  import {
5
5
  isBridgeLocator
6
- } from "./chunk-5T65DZBH.js";
6
+ } from "./chunk-SJN22ADZ.js";
7
7
  import {
8
8
  pusharyHookExecutable
9
- } from "./chunk-RKEVFUBN.js";
9
+ } from "./chunk-D7SOOVHX.js";
10
10
  import {
11
11
  BELL_HOOK_BINARY
12
- } from "./chunk-23R4BMUP.js";
12
+ } from "./chunk-Q23MMVTD.js";
13
13
 
14
14
  // src/setup/hook-ownership.ts
15
15
  var commandsIn = (value) => {
@@ -3,7 +3,7 @@ import {
3
3
  finishWithUpgradeLock,
4
4
  installWithUpgradeLock,
5
5
  releaseAutoUpdateLock
6
- } from "./chunk-LSYSKKWW.js";
6
+ } from "./chunk-EZAFBC2C.js";
7
7
  import {
8
8
  describeAutoUpdateCheck,
9
9
  globalInstallLocation,
@@ -11,7 +11,7 @@ import {
11
11
  readAutoUpdateState,
12
12
  updateAutoUpdateState,
13
13
  upgradeEntryFor
14
- } from "./chunk-Q6KNNFGG.js";
14
+ } from "./chunk-SNJ3BOCP.js";
15
15
  import {
16
16
  EXIT
17
17
  } from "./chunk-KZERVKTD.js";
@@ -24,10 +24,10 @@ import {
24
24
  npmErrorMessage,
25
25
  readGlobalCliInstallAt,
26
26
  readGlobalPrefix
27
- } from "./chunk-ZBF5WAP7.js";
27
+ } from "./chunk-HJXZJF6O.js";
28
28
  import {
29
29
  NPX_LATEST_COMMAND
30
- } from "./chunk-HOTK2D2S.js";
30
+ } from "./chunk-L6USMDTW.js";
31
31
  import {
32
32
  commandsPackage,
33
33
  globalUpgradeEntry,
@@ -36,7 +36,7 @@ import {
36
36
  isSameMajorVersion,
37
37
  ownPackageRoot,
38
38
  packageVersionAt
39
- } from "./chunk-SBR2UKUO.js";
39
+ } from "./chunk-Q4E56K4X.js";
40
40
 
41
41
  // src/global-upgrade.ts
42
42
  import { existsSync } from "fs";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  guardBinary
3
- } from "./chunk-ZBF5WAP7.js";
3
+ } from "./chunk-HJXZJF6O.js";
4
4
 
5
5
  // src/bell/install.ts
6
6
  import { join } from "path";
@@ -520,6 +520,8 @@ var redactSecretsDeep = (text) => redactSecrets(text).replace(HIGH_ENTROPY_RULE.
520
520
 
521
521
  // ../contracts/src/shell-analysis.ts
522
522
  var SHELL_WORD_SEPARATOR = /[ \t\n]/;
523
+ var ARITHMETIC_EVALUATING_EXPANSION = /\$[#+=~^]*(?:[A-Za-z_][A-Za-z0-9_]*|[0-9]+|[-?$!@*#])?\[/;
524
+ var VISIBLE_ESCAPE = /\\[\s\S]/g;
523
525
  var trimShellWhitespace = (command) => command.replace(/^[ \t\n]+|[ \t\n]+$/g, "");
524
526
  var DOUBLE_QUOTE_ESCAPABLE = /* @__PURE__ */ new Set(['"', "\\", "$", "`"]);
525
527
  var SEGMENT_SEPARATORS = /* @__PURE__ */ new Set([";", "\n", "&", "|"]);
@@ -576,6 +578,14 @@ var shellVisibleText = (command) => {
576
578
  }
577
579
  return visible;
578
580
  };
581
+ var isInertOutsideExpansion = ({ quote, kind }) => kind === "escape" || kind === "text" && quote === "'";
582
+ var opensArithmeticEvaluation = (command) => {
583
+ const lexemes = scanShell(command);
584
+ if (lexemes === null) return true;
585
+ const expandableText = lexemes.map((lexeme) => isInertOutsideExpansion(lexeme) ? "_".repeat(lexeme.text.length) : lexeme.text).join("");
586
+ return ARITHMETIC_EVALUATING_EXPANSION.test(expandableText);
587
+ };
588
+ var withoutShellEscapes = (visible) => visible.replace(VISIBLE_ESCAPE, (escape) => "_".repeat(escape.length));
579
589
  var shellWordsOf = (command) => {
580
590
  const lexemes = scanShell(command);
581
591
  if (lexemes === null) return null;
@@ -1047,7 +1057,6 @@ var SAFE_SHELL_COMMANDS = /* @__PURE__ */ new Set([
1047
1057
  "tail",
1048
1058
  "wc",
1049
1059
  "echo",
1050
- "printf",
1051
1060
  "which",
1052
1061
  "type",
1053
1062
  "whoami",
@@ -1220,6 +1229,7 @@ var isSafeSimpleCommand = (segment) => {
1220
1229
  }
1221
1230
  if (exe === "sed") return isPrintOnlySed(tokens.slice(1));
1222
1231
  if (exe === "date") return isReadOnlyDate(tokens.slice(1));
1232
+ if (exe === "printf") return isOutputOnlyPrintf(tokens.slice(1));
1223
1233
  return SAFE_SHELL_COMMANDS.has(exe);
1224
1234
  };
1225
1235
  var SED_PRINT_ONLY_SCRIPT = /^(?:\d+|\$)(?:,(?:\d+|\$))?p$/;
@@ -1229,11 +1239,12 @@ var DATE_UTC_FLAG = "-u";
1229
1239
  var isFlagToken = (token) => token.startsWith("-");
1230
1240
  var isPrintOnlySed = (args) => args[0] === SED_QUIET_FLAG && SED_PRINT_ONLY_SCRIPT.test(args[1] ?? "") && !args.slice(2).some(isFlagToken);
1231
1241
  var isReadOnlyDate = (args) => args.every((arg) => arg.startsWith(DATE_FORMAT_PREFIX) || arg === DATE_UTC_FLAG);
1242
+ var isOutputOnlyPrintf = (args) => args[0] === END_OF_OPTIONS || !isFlagToken(args[0] ?? "");
1232
1243
  var READ_ONLY_SEGMENT_SEPARATOR = /&&|\|\||[;|]/g;
1233
1244
  var PIPELINE_CHAIN_SEPARATOR = /&&|\|\||;/g;
1234
1245
  var EXPANSION_THAT_CAN_BECOME_A_FLAG = /\$|(?:^|\s)[*?[]/;
1235
1246
  var SHELL_QUOTE_CHARACTERS = /['"]/g;
1236
- var INSPECTED_ARGUMENT_COMMANDS = /* @__PURE__ */ new Set(["git", "find", "sed", "date"]);
1247
+ var INSPECTED_ARGUMENT_COMMANDS = /* @__PURE__ */ new Set(["git", "find", "sed", "date", "printf"]);
1237
1248
  var argumentsMayExpand = (segment) => {
1238
1249
  const visible = shellVisibleText(segment);
1239
1250
  return visible === null || EXPANSION_THAT_CAN_BECOME_A_FLAG.test(visible.replace(SHELL_QUOTE_CHARACTERS, ""));
@@ -1242,7 +1253,7 @@ var blankedSafeRedirections = (text) => text.replace(SAFE_REDIRECTION, (redirect
1242
1253
  var segmentsSplitWhereVisible = (command, visible, separators) => {
1243
1254
  const segments = [];
1244
1255
  let start = 0;
1245
- for (const separator of visible.matchAll(separators)) {
1256
+ for (const separator of withoutShellEscapes(visible).matchAll(separators)) {
1246
1257
  segments.push(command.slice(start, separator.index));
1247
1258
  start = separator.index + separator[0].length;
1248
1259
  }
@@ -1257,6 +1268,7 @@ var isSafeReadOnlyCommand = (command) => {
1257
1268
  if (visible === null || /[`{}]|\$'/.test(visible)) return false;
1258
1269
  if (/\\(?![()!])/.test(visible)) return false;
1259
1270
  if (/(?<!\\)[()]/.test(visible)) return false;
1271
+ if (opensArithmeticEvaluation(trimmed)) return false;
1260
1272
  const visibleWithoutRedirection = blankedSafeRedirections(visible);
1261
1273
  if (/[<>]/.test(visibleWithoutRedirection)) return false;
1262
1274
  if (visibleWithoutRedirection.replace(/&&/g, " ").includes("&")) return false;
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  pusharyDir
3
- } from "./chunk-ZBF5WAP7.js";
3
+ } from "./chunk-HJXZJF6O.js";
4
4
  import {
5
5
  readJsonSafe
6
6
  } from "./chunk-T7E75EKA.js";
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  HOOK_BUDGETS,
3
3
  OPENCODE_APPROVAL_EVENT
4
- } from "./chunk-SBR2UKUO.js";
4
+ } from "./chunk-Q4E56K4X.js";
5
5
 
6
6
  // src/opencode-plugin.ts
7
7
  var OPENCODE_PLUGIN_MARKER = "pushary-opencode-plugin w1";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  HOOK_LOCATOR_BINARY
3
- } from "./chunk-SBR2UKUO.js";
3
+ } from "./chunk-Q4E56K4X.js";
4
4
 
5
5
  // src/diagnostics/bridge.ts
6
6
  import { execFileSync } from "child_process";
@@ -3,7 +3,7 @@ import {
3
3
  } from "./chunk-POFBE6ZY.js";
4
4
  import {
5
5
  autoUpdateState
6
- } from "./chunk-ZBF5WAP7.js";
6
+ } from "./chunk-HJXZJF6O.js";
7
7
  import {
8
8
  readJsonSafe,
9
9
  writeJsonAtomic
@@ -14,7 +14,7 @@ import {
14
14
  cliPackagePathSegments,
15
15
  globalUpgradeEntry,
16
16
  ownPackageRoot
17
- } from "./chunk-SBR2UKUO.js";
17
+ } from "./chunk-Q4E56K4X.js";
18
18
 
19
19
  // src/auto-update.ts
20
20
  import { spawn } from "child_process";
@@ -9,7 +9,7 @@ import {
9
9
  SETUP_CONNECT_MODES,
10
10
  isSetupConnectMode,
11
11
  isValidApiKey
12
- } from "./chunk-SBR2UKUO.js";
12
+ } from "./chunk-Q4E56K4X.js";
13
13
 
14
14
  // src/setup/options.ts
15
15
  var AGENT_CHOICES = SETUP_AGENT_CHOICES;