pushary 1.9.113 → 1.9.116

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 (129) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/dist/{api-PCAXOVGM.js → api-X624HAAU.js} +11 -11
  3. package/dist/bin/pushary-audit.js +3 -3
  4. package/dist/bin/pushary-bell-hook.js +27 -27
  5. package/dist/bin/pushary-bell.js +10 -10
  6. package/dist/bin/pushary-claude.js +25 -25
  7. package/dist/bin/pushary-clean.js +34 -34
  8. package/dist/bin/pushary-codex-bridge.js +21 -21
  9. package/dist/bin/pushary-codex-hook.js +32 -32
  10. package/dist/bin/pushary-codex-session.js +8 -8
  11. package/dist/bin/pushary-codex.js +15 -15
  12. package/dist/bin/pushary-connect.js +28 -28
  13. package/dist/bin/pushary-cowork.js +5 -5
  14. package/dist/bin/pushary-daemon.js +42 -42
  15. package/dist/bin/pushary-disconnect.js +27 -27
  16. package/dist/bin/pushary-display-hook.js +17 -17
  17. package/dist/bin/pushary-doctor.js +42 -42
  18. package/dist/bin/pushary-elicitation-hook.js +27 -27
  19. package/dist/bin/pushary-gemini-bridge.js +15 -15
  20. package/dist/bin/pushary-gemini-hook.js +29 -29
  21. package/dist/bin/pushary-hook.js +32 -32
  22. package/dist/bin/pushary-login.js +21 -21
  23. package/dist/bin/pushary-logout.js +26 -26
  24. package/dist/bin/pushary-mcp.js +12 -12
  25. package/dist/bin/pushary-mode.js +15 -15
  26. package/dist/bin/pushary-notification-hook.js +26 -26
  27. package/dist/bin/pushary-opencode-hook.js +28 -28
  28. package/dist/bin/pushary-permission-denied-hook.js +32 -32
  29. package/dist/bin/pushary-permission-hook.js +32 -32
  30. package/dist/bin/pushary-post-hook.js +26 -26
  31. package/dist/bin/pushary-prompt-hook.js +26 -26
  32. package/dist/bin/pushary-session-end-hook.js +26 -26
  33. package/dist/bin/pushary-session-start-hook.js +35 -35
  34. package/dist/bin/pushary-setup.js +51 -49
  35. package/dist/bin/pushary-stats.js +5 -5
  36. package/dist/bin/pushary-status.js +32 -32
  37. package/dist/bin/pushary-stop-hook.js +26 -26
  38. package/dist/bin/pushary-stopfailure-hook.js +26 -26
  39. package/dist/bin/pushary-suggestions.js +15 -15
  40. package/dist/bin/pushary-transcript-register.js +17 -17
  41. package/dist/bin/pushary-transcripts.js +25 -25
  42. package/dist/bin/pushary-upgrade.js +40 -40
  43. package/dist/bin/pushary-wait.js +15 -15
  44. package/dist/bin/pushary.js +7 -7
  45. package/dist/{chunk-FQSFN5ZE.js → chunk-27CV6IXW.js} +1 -1
  46. package/dist/{chunk-T5GJK54S.js → chunk-32MHL5HC.js} +4 -4
  47. package/dist/{chunk-JXN4SH6M.js → chunk-32R6ESWY.js} +1 -1
  48. package/dist/{chunk-WUREJCUJ.js → chunk-3CYXPFGA.js} +5 -5
  49. package/dist/{chunk-O5VJGP6H.js → chunk-3WEWYRLQ.js} +4 -4
  50. package/dist/{chunk-Q4VB3DIL.js → chunk-4B6USDD3.js} +2 -2
  51. package/dist/{chunk-UMR6UQZ4.js → chunk-4NCIAMPN.js} +3 -3
  52. package/dist/{chunk-E3A77P52.js → chunk-4Q5J3HRJ.js} +4 -4
  53. package/dist/{chunk-CG5SK6NF.js → chunk-4QJUMXZS.js} +1 -1
  54. package/dist/{chunk-Z2QWM27R.js → chunk-4WG5XTKS.js} +6 -6
  55. package/dist/{chunk-MPG4HYQ6.js → chunk-4X6GTMU4.js} +3 -3
  56. package/dist/{chunk-OJGHJIFQ.js → chunk-5LWC7PSM.js} +5 -5
  57. package/dist/{chunk-U35OB2HQ.js → chunk-6FMHWS6M.js} +6 -6
  58. package/dist/{chunk-AR3VX4UQ.js → chunk-6RKEHEW6.js} +10 -10
  59. package/dist/{chunk-NG2EWF32.js → chunk-7ELMLTD7.js} +2 -2
  60. package/dist/{chunk-YM5OM2CI.js → chunk-7O4ZTJYY.js} +6 -6
  61. package/dist/{chunk-GBT74TNN.js → chunk-7THCN7FJ.js} +2 -2
  62. package/dist/{chunk-FLRVTAV4.js → chunk-BVN3WPDZ.js} +2 -2
  63. package/dist/{chunk-PU2KHDRD.js → chunk-BWSAVEMV.js} +101 -18
  64. package/dist/{chunk-BMZFL3HF.js → chunk-BZLG63YR.js} +4 -4
  65. package/dist/{chunk-3D2J3T2M.js → chunk-CBJXUJ4Y.js} +1 -1
  66. package/dist/{chunk-GNP6I5XM.js → chunk-CHHS7WT2.js} +2 -2
  67. package/dist/{chunk-XL6DDWWT.js → chunk-CJL7IMWO.js} +1 -1
  68. package/dist/{chunk-GQFT3QTC.js → chunk-CW34RKBV.js} +5 -3
  69. package/dist/{chunk-IWUYKDDW.js → chunk-DGZGCKDA.js} +4 -4
  70. package/dist/{chunk-KDTTCR3E.js → chunk-DMY2J2MY.js} +3 -3
  71. package/dist/{chunk-LUBECFXJ.js → chunk-EQZKJXHE.js} +1 -1
  72. package/dist/{chunk-T2N7MEO3.js → chunk-FHRXFUGD.js} +3 -3
  73. package/dist/{chunk-GI3266RE.js → chunk-FKVPV3SH.js} +2 -2
  74. package/dist/{chunk-RIBCPWOB.js → chunk-FU33PDFG.js} +3 -3
  75. package/dist/{chunk-KB2EEK5T.js → chunk-GB5E3JHR.js} +5 -5
  76. package/dist/{chunk-ZUZ4RXM7.js → chunk-GKXEA6IW.js} +1 -1
  77. package/dist/{chunk-KPCVIH52.js → chunk-H5TODUJ3.js} +113 -9
  78. package/dist/{chunk-P4PLDBZK.js → chunk-I5XLH7L3.js} +5 -5
  79. package/dist/{chunk-3LJWADU2.js → chunk-IC7LNHAX.js} +6 -6
  80. package/dist/{chunk-DSXBMC2N.js → chunk-JQS5YQQZ.js} +5 -5
  81. package/dist/{chunk-NPG4WCIM.js → chunk-JSTA2JTL.js} +1 -1
  82. package/dist/{chunk-24M7PB2Y.js → chunk-KK7JA5JP.js} +5 -5
  83. package/dist/{chunk-53ROMSOB.js → chunk-KVZAFFEE.js} +3 -3
  84. package/dist/{chunk-BWSXWX6T.js → chunk-LC2A3GBN.js} +2 -2
  85. package/dist/{chunk-3ZU77DJH.js → chunk-LQQWATPA.js} +6 -6
  86. package/dist/{chunk-GSJUGW3A.js → chunk-NGWG2CHI.js} +1 -1
  87. package/dist/{chunk-233KC6DP.js → chunk-NXEOD5JC.js} +1 -1
  88. package/dist/{chunk-5SUTYXCT.js → chunk-OEXJ7AJO.js} +1 -1
  89. package/dist/{chunk-44O6GG4I.js → chunk-PBM565KU.js} +6 -6
  90. package/dist/{chunk-B5NKPU2E.js → chunk-PCRLVQW3.js} +5 -5
  91. package/dist/{chunk-XQFHB2EK.js → chunk-PH4LJXTG.js} +3 -3
  92. package/dist/{chunk-DLCECUKY.js → chunk-PPEN3N44.js} +7 -7
  93. package/dist/{chunk-TAGLGMA6.js → chunk-PPW3K5DR.js} +2 -2
  94. package/dist/{chunk-BYL7RNOM.js → chunk-PPYNBRU6.js} +3 -3
  95. package/dist/{chunk-5J2OGCUA.js → chunk-Q3GYEEOM.js} +1 -1
  96. package/dist/{chunk-44HW5T6P.js → chunk-QVD4UOJ7.js} +2 -2
  97. package/dist/{chunk-D3XNQAQO.js → chunk-QXLV3CT6.js} +2 -2
  98. package/dist/{chunk-4EFZANH3.js → chunk-R7BP6ZEW.js} +1 -1
  99. package/dist/{chunk-MDEXA6JD.js → chunk-RQGMDAHY.js} +3 -3
  100. package/dist/{chunk-JXNDO7FB.js → chunk-RZRFHCAG.js} +1 -1
  101. package/dist/{chunk-22OATDEL.js → chunk-S5B3LKOP.js} +3 -3
  102. package/dist/{chunk-4I6FWGZ5.js → chunk-SDMGCRO3.js} +1 -1
  103. package/dist/{chunk-F5TQ6TCH.js → chunk-TNQ5JFCV.js} +1 -1
  104. package/dist/{chunk-WGK2BIX6.js → chunk-TSXTMJQH.js} +4 -4
  105. package/dist/{chunk-JCHF4VR3.js → chunk-TWRDOVN4.js} +1 -1
  106. package/dist/{chunk-SI7EFQEU.js → chunk-V766TMSY.js} +4 -4
  107. package/dist/{chunk-NK5XT4RS.js → chunk-VAT53KQR.js} +4 -4
  108. package/dist/{chunk-JRW5HK32.js → chunk-WACBGAWA.js} +2 -2
  109. package/dist/{chunk-I7HSE5LD.js → chunk-XUHDUD34.js} +27 -14
  110. package/dist/{chunk-GGBGKQIZ.js → chunk-YDQ2KQOH.js} +8 -8
  111. package/dist/{chunk-HJ566HEV.js → chunk-Z3WNBZG6.js} +3 -3
  112. package/dist/{chunk-OR5SWH44.js → chunk-ZETS7HPG.js} +10 -10
  113. package/dist/{chunk-6E2D22Y5.js → chunk-ZR7ODRKY.js} +2 -2
  114. package/dist/{chunk-RLBTKTOK.js → chunk-ZUVDQOU6.js} +16 -2
  115. package/dist/{codex-app-cards-switch-UI2LQQ6C.js → codex-app-cards-switch-7XA2J7MU.js} +11 -11
  116. package/dist/{codex-card-routing-IOVURY45.js → codex-card-routing-SWDFV5IG.js} +2 -2
  117. package/dist/{codex-desktop-launch-GAXMK6IM.js → codex-desktop-launch-7Y2YODZM.js} +1 -1
  118. package/dist/{codex-session-launch-FYXRCD3I.js → codex-session-launch-5I3NEQRG.js} +18 -18
  119. package/dist/{config-WOATWPOD.js → config-HUULA2T7.js} +3 -3
  120. package/dist/{global-upgrade-LDIMKAPF.js → global-upgrade-BTHOIZK5.js} +9 -9
  121. package/dist/{identity-GCRCIP45.js → identity-MVXY2GIK.js} +4 -4
  122. package/dist/{live-capabilities-DPMIMA3P.js → live-capabilities-KCTCX3EI.js} +4 -4
  123. package/dist/{paths-H5LP5HJB.js → paths-BVROPWE2.js} +3 -3
  124. package/dist/{reapply-FBNJRZLQ.js → reapply-6J22YOVO.js} +28 -28
  125. package/dist/src/index.d.ts +0 -1
  126. package/dist/src/index.js +31 -31
  127. package/dist/{upgrade-lock-76Z2YLIV.js → upgrade-lock-LQQDJAEJ.js} +4 -4
  128. package/dist/{usage-SIELH6XD.js → usage-LC7XUIV3.js} +3 -3
  129. package/package.json +1 -1
@@ -1,13 +1,13 @@
1
1
  import {
2
2
  configFilePath
3
- } from "./chunk-GSJUGW3A.js";
3
+ } from "./chunk-NGWG2CHI.js";
4
4
  import {
5
5
  readJsonSafe,
6
6
  writeJsonAtomic
7
7
  } from "./chunk-T5I4PKOQ.js";
8
8
  import {
9
9
  readSetupOutcomeProperties
10
- } from "./chunk-KPCVIH52.js";
10
+ } from "./chunk-H5TODUJ3.js";
11
11
 
12
12
  // src/diagnostics/service-runtime.ts
13
13
  var unescapeXml = (value) => value.replaceAll("&quot;", '"').replaceAll("&apos;", "'").replaceAll("&lt;", "<").replaceAll("&gt;", ">").replaceAll("&amp;", "&");
@@ -3,7 +3,7 @@ import {
3
3
  } from "./chunk-POFBE6ZY.js";
4
4
  import {
5
5
  autoUpdateState
6
- } from "./chunk-RLBTKTOK.js";
6
+ } from "./chunk-ZUVDQOU6.js";
7
7
  import {
8
8
  readJsonSafe,
9
9
  writeJsonAtomic
@@ -17,7 +17,7 @@ import {
17
17
  } from "./chunk-ZVU6WMMU.js";
18
18
  import {
19
19
  isAutoUpdateResult
20
- } from "./chunk-KPCVIH52.js";
20
+ } from "./chunk-H5TODUJ3.js";
21
21
 
22
22
  // src/auto-update.ts
23
23
  import { spawn } from "child_process";
@@ -7,7 +7,7 @@ import {
7
7
  recordSealerFor,
8
8
  uploadTranscriptRecords,
9
9
  wrapSessionKey
10
- } from "./chunk-KDTTCR3E.js";
10
+ } from "./chunk-DMY2J2MY.js";
11
11
 
12
12
  // src/live-session.ts
13
13
  var MAX_TRANSCRIPT_QUEUE = 100;
@@ -5,10 +5,10 @@ import {
5
5
  hermesAppWiringRecord,
6
6
  hermesConfigReceipt,
7
7
  hermesSetupReceipt
8
- } from "./chunk-RLBTKTOK.js";
8
+ } from "./chunk-ZUVDQOU6.js";
9
9
  import {
10
10
  resolvePathBinary
11
- } from "./chunk-RIBCPWOB.js";
11
+ } from "./chunk-FU33PDFG.js";
12
12
  import {
13
13
  readJsonSafe,
14
14
  writeJsonAtomic
@@ -19,7 +19,7 @@ import {
19
19
  } from "./chunk-ZVU6WMMU.js";
20
20
  import {
21
21
  isRecord
22
- } from "./chunk-KPCVIH52.js";
22
+ } from "./chunk-H5TODUJ3.js";
23
23
 
24
24
  // src/hermes/plugin-payload.ts
25
25
  import { createHash } from "crypto";
@@ -7,7 +7,7 @@ import {
7
7
  } from "./chunk-BG4HHB7E.js";
8
8
  import {
9
9
  redactSecretsFromContent
10
- } from "./chunk-KPCVIH52.js";
10
+ } from "./chunk-H5TODUJ3.js";
11
11
 
12
12
  // src/cli/json.ts
13
13
  var writeStdoutFully = (text) => new Promise((resolve, reject) => {
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  resolveInstallSourceFor
3
- } from "./chunk-JRW5HK32.js";
3
+ } from "./chunk-WACBGAWA.js";
4
4
  import {
5
5
  configFilePath
6
- } from "./chunk-GSJUGW3A.js";
6
+ } from "./chunk-NGWG2CHI.js";
7
7
  import {
8
8
  backupFile,
9
9
  readJsonSafe,
@@ -14,7 +14,7 @@ import {
14
14
  API_KEY_PREFIX_PATTERN,
15
15
  isRecord,
16
16
  isValidApiKey
17
- } from "./chunk-KPCVIH52.js";
17
+ } from "./chunk-H5TODUJ3.js";
18
18
 
19
19
  // src/shell-alias.ts
20
20
  import { homedir } from "os";
@@ -2,7 +2,7 @@ import {
2
2
  localRepoKey,
3
3
  normalizeRepoRemote,
4
4
  parseGitBranch
5
- } from "./chunk-KPCVIH52.js";
5
+ } from "./chunk-H5TODUJ3.js";
6
6
 
7
7
  // src/repo.ts
8
8
  import { existsSync, readFileSync, statSync } from "fs";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  pusharyDir
3
- } from "./chunk-RLBTKTOK.js";
3
+ } from "./chunk-ZUVDQOU6.js";
4
4
  import {
5
5
  writeFileAtomic
6
6
  } from "./chunk-T5I4PKOQ.js";
@@ -12,7 +12,7 @@ import {
12
12
  reachVerdict,
13
13
  reachesYou,
14
14
  verifyDelivery
15
- } from "./chunk-U35OB2HQ.js";
15
+ } from "./chunk-6FMHWS6M.js";
16
16
  import {
17
17
  humanIsTty,
18
18
  writeHuman
@@ -24,14 +24,14 @@ import {
24
24
  } from "./chunk-FO3MDD26.js";
25
25
  import {
26
26
  reportedInstallSource
27
- } from "./chunk-JRW5HK32.js";
27
+ } from "./chunk-WACBGAWA.js";
28
28
  import {
29
29
  NPX_LATEST_COMMAND
30
- } from "./chunk-JCHF4VR3.js";
30
+ } from "./chunk-TWRDOVN4.js";
31
31
  import {
32
32
  NO_PAIRING_COMPUTER,
33
33
  PAIR_TTL_SECONDS
34
- } from "./chunk-KPCVIH52.js";
34
+ } from "./chunk-H5TODUJ3.js";
35
35
 
36
36
  // src/onboarding.ts
37
37
  import qrcodeTerminal from "qrcode-terminal";
@@ -2,7 +2,7 @@ import {
2
2
  DISCONNECT_AGENT_IDS,
3
3
  SETUP_AGENT_CHOICES,
4
4
  isApprovalMode
5
- } from "./chunk-KPCVIH52.js";
5
+ } from "./chunk-H5TODUJ3.js";
6
6
 
7
7
  // src/cli/mode-request.ts
8
8
  var parseDuration = (value) => {
@@ -1,19 +1,19 @@
1
1
  import {
2
2
  notificationAnswerStep
3
- } from "./chunk-U35OB2HQ.js";
3
+ } from "./chunk-6FMHWS6M.js";
4
4
  import {
5
5
  canChangeApprovalSettings
6
- } from "./chunk-NG2EWF32.js";
6
+ } from "./chunk-7ELMLTD7.js";
7
7
  import {
8
8
  matchMacAccountStep,
9
9
  retryAgentCommand
10
- } from "./chunk-MPG4HYQ6.js";
10
+ } from "./chunk-4X6GTMU4.js";
11
11
  import {
12
12
  EXIT
13
13
  } from "./chunk-BG4HHB7E.js";
14
14
  import {
15
15
  NPX_LATEST_COMMAND
16
- } from "./chunk-JCHF4VR3.js";
16
+ } from "./chunk-TWRDOVN4.js";
17
17
 
18
18
  // src/setup/closing.ts
19
19
  var ACTIVITY_URL = "pushary.com/dashboard/agent/activity";
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  AGENT_CHOICES
3
- } from "./chunk-5SUTYXCT.js";
3
+ } from "./chunk-OEXJ7AJO.js";
4
4
  import {
5
5
  BELL_HOOK_BINARY
6
- } from "./chunk-233KC6DP.js";
6
+ } from "./chunk-NXEOD5JC.js";
7
7
  import {
8
8
  CLAUDE_HOOK_EVENTS,
9
9
  CODEX_HOOK_EVENTS,
@@ -15,13 +15,13 @@ import {
15
15
  isBridgeLocator,
16
16
  isProtectedByScope,
17
17
  registerHookEntry
18
- } from "./chunk-RLBTKTOK.js";
18
+ } from "./chunk-ZUVDQOU6.js";
19
19
  import {
20
20
  CURSOR_GATE_EVENTS,
21
21
  HOOK_BUDGETS,
22
22
  HOOK_LOCATOR_BINARY,
23
23
  hookCommandHoldBudget
24
- } from "./chunk-KPCVIH52.js";
24
+ } from "./chunk-H5TODUJ3.js";
25
25
 
26
26
  // src/gemini-config.ts
27
27
  var GEMINI_HOOK_BINARY = "pushary-gemini-hook";
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  configFilePath
3
- } from "./chunk-GSJUGW3A.js";
3
+ } from "./chunk-NGWG2CHI.js";
4
4
  import {
5
5
  normalizeInstallSource
6
- } from "./chunk-KPCVIH52.js";
6
+ } from "./chunk-H5TODUJ3.js";
7
7
 
8
8
  // src/install-source.ts
9
9
  import { readFileSync } from "fs";
@@ -27,11 +27,11 @@ import {
27
27
  toolResultErrorText,
28
28
  transcriptTokensIn,
29
29
  transcriptUsageRequest
30
- } from "./chunk-FQSFN5ZE.js";
30
+ } from "./chunk-27CV6IXW.js";
31
31
  import {
32
32
  branchFor,
33
33
  repoKeyFor
34
- } from "./chunk-4I6FWGZ5.js";
34
+ } from "./chunk-SDMGCRO3.js";
35
35
  import {
36
36
  cancelQuestion,
37
37
  clientErrorKindOf,
@@ -39,34 +39,34 @@ import {
39
39
  reportClientError,
40
40
  sendNotification,
41
41
  waitForAnswer
42
- } from "./chunk-44O6GG4I.js";
42
+ } from "./chunk-PBM565KU.js";
43
43
  import {
44
44
  withRetry
45
- } from "./chunk-WUREJCUJ.js";
45
+ } from "./chunk-3CYXPFGA.js";
46
46
  import {
47
47
  fetchAsCredential
48
- } from "./chunk-NPG4WCIM.js";
48
+ } from "./chunk-JSTA2JTL.js";
49
49
  import {
50
50
  getMachineId
51
- } from "./chunk-F5TQ6TCH.js";
51
+ } from "./chunk-TNQ5JFCV.js";
52
52
  import {
53
53
  reportedInstallSource
54
- } from "./chunk-JRW5HK32.js";
54
+ } from "./chunk-WACBGAWA.js";
55
55
  import {
56
56
  IDLE_PROMPT_NOTIFICATION,
57
57
  NOTIFICATION_PUSH_TYPES,
58
58
  POSTTOOLUSE_MIRROR_ONLY_TOOLS,
59
59
  canonicalJson,
60
60
  claudeConfigDir
61
- } from "./chunk-RLBTKTOK.js";
61
+ } from "./chunk-ZUVDQOU6.js";
62
62
  import {
63
63
  compareVersion,
64
64
  parseVersion
65
- } from "./chunk-RIBCPWOB.js";
65
+ } from "./chunk-FU33PDFG.js";
66
66
  import {
67
67
  getApiKey,
68
68
  getBaseUrl
69
- } from "./chunk-GSJUGW3A.js";
69
+ } from "./chunk-NGWG2CHI.js";
70
70
  import {
71
71
  writeFileAtomic,
72
72
  writeJsonAtomicDurable
@@ -94,7 +94,7 @@ import {
94
94
  resolveAutoResolveOrigin,
95
95
  resolvePolicy,
96
96
  unansweredRefusalReason
97
- } from "./chunk-KPCVIH52.js";
97
+ } from "./chunk-H5TODUJ3.js";
98
98
 
99
99
  // src/pending.ts
100
100
  import { join } from "path";
@@ -429,6 +429,17 @@ var getPolicy = async (apiKey, expectedVersion, agent, repoAware = false, sessio
429
429
  throw new Error("Failed to fetch policy and no cached policy available");
430
430
  }
431
431
  };
432
+ var readCachedPolicy = (apiKey, agent, repoAware = false) => {
433
+ const path = policyCacheFile(apiKey, agent, repoAware);
434
+ try {
435
+ const cached = JSON.parse(readFileSync2(path, "utf-8"));
436
+ if (!isPolicyConfig(cached)) return null;
437
+ const age = cached._cachedAt ? Date.now() - cached._cachedAt : STALE_CACHE_MAX_MS;
438
+ return age < STALE_CACHE_MAX_MS ? cached : null;
439
+ } catch {
440
+ return null;
441
+ }
442
+ };
432
443
  var MODE_GRACE_MS = 60 * 1e3;
433
444
  var modeStateCacheFile = (apiKey) => {
434
445
  const hash = createHash2("sha256").update(`mode:${apiKey}`).digest("hex").slice(0, 12);
@@ -851,12 +862,12 @@ var blockedActionFingerprint = ({ source = "claude", sessionId, toolName, toolIn
851
862
  var hintDir = () => join6(tmpdir6(), `pushary-blocked-action-hints-${userScope()}`);
852
863
  var hintFile = (fingerprint) => join6(hintDir(), fingerprint);
853
864
  var isExpired = (mtimeMs, nowMs) => nowMs - mtimeMs >= BLOCKED_ACTION_HINT_TTL_MS;
854
- var sweepExpired2 = (dir, nowMs) => {
865
+ var sweepFilesOlderThan = (dir, ttlMs, nowMs) => {
855
866
  try {
856
867
  for (const name of readdirSync3(dir)) {
857
868
  const path = join6(dir, name);
858
869
  try {
859
- if (isExpired(statSync5(path).mtimeMs, nowMs)) rmSync4(path, { force: true });
870
+ if (nowMs - statSync5(path).mtimeMs >= ttlMs) rmSync4(path, { force: true });
860
871
  } catch {
861
872
  continue;
862
873
  }
@@ -870,7 +881,7 @@ var recordBlockedActionHint = (fingerprint, approved) => {
870
881
  try {
871
882
  const dir = hintDir();
872
883
  if (!existsSync5(dir)) mkdirSync5(dir, { recursive: true, mode: 448 });
873
- else sweepExpired2(dir, Date.now());
884
+ else sweepFilesOlderThan(dir, BLOCKED_ACTION_HINT_TTL_MS, Date.now());
874
885
  writeFileAtomic(hintFile(fingerprint), JSON.stringify({ fingerprint, ...approved }), 384);
875
886
  return true;
876
887
  } catch {
@@ -1659,6 +1670,7 @@ export {
1659
1670
  releaseThrottle,
1660
1671
  policyRequestFor,
1661
1672
  getPolicy,
1673
+ readCachedPolicy,
1662
1674
  fetchModeState,
1663
1675
  fetchModeOverride,
1664
1676
  readLastUserPrompt,
@@ -1677,6 +1689,7 @@ export {
1677
1689
  recordCodexCallDecision,
1678
1690
  consumeCodexCallDecision,
1679
1691
  blockedActionFingerprint,
1692
+ sweepFilesOlderThan,
1680
1693
  recordBlockedActionHint,
1681
1694
  hasBlockedActionHint,
1682
1695
  approvalAwaitingRetry,
@@ -1,31 +1,31 @@
1
1
  import {
2
2
  MANAGED_CLAUDE_SETTINGS_BY_PLATFORM
3
- } from "./chunk-6E2D22Y5.js";
3
+ } from "./chunk-ZR7ODRKY.js";
4
4
  import {
5
5
  declinedAgentsFile,
6
6
  readDeclinedAgents
7
- } from "./chunk-BWSXWX6T.js";
7
+ } from "./chunk-LC2A3GBN.js";
8
8
  import {
9
9
  OPENCODE_HOOK_BINARY,
10
10
  openCodeConfigDir,
11
11
  openCodePluginArgv,
12
12
  openCodePluginFile
13
- } from "./chunk-KB2EEK5T.js";
13
+ } from "./chunk-GB5E3JHR.js";
14
14
  import {
15
15
  liveCursorGateCoverage
16
- } from "./chunk-IWUYKDDW.js";
16
+ } from "./chunk-DGZGCKDA.js";
17
17
  import {
18
18
  compatibleConfigFile,
19
19
  compatibleHookEvents,
20
20
  grokHome,
21
21
  parseConfigDocument
22
- } from "./chunk-OJGHJIFQ.js";
22
+ } from "./chunk-5LWC7PSM.js";
23
23
  import {
24
24
  DEFAULT_HOOKS_KEY_PATH,
25
25
  GEMINI_HOOK_BINARY,
26
26
  GEMINI_HOOK_EVENTS,
27
27
  hooksAt
28
- } from "./chunk-NK5XT4RS.js";
28
+ } from "./chunk-VAT53KQR.js";
29
29
  import {
30
30
  CODEX_EARLIER_APPROVAL_MATCHERS,
31
31
  CODEX_HOOK_BINARY,
@@ -53,7 +53,7 @@ import {
53
53
  parseHookArgv,
54
54
  parseHookCommand,
55
55
  supportedClaudeEvents
56
- } from "./chunk-RLBTKTOK.js";
56
+ } from "./chunk-ZUVDQOU6.js";
57
57
  import {
58
58
  readRegularJsonFile,
59
59
  readRegularTextFile
@@ -67,7 +67,7 @@ import {
67
67
  OPENCODE_APPROVAL_EVENT,
68
68
  isRecord,
69
69
  matcherMatchesEveryCall
70
- } from "./chunk-KPCVIH52.js";
70
+ } from "./chunk-H5TODUJ3.js";
71
71
 
72
72
  // src/hook-wiring.ts
73
73
  import { createHash } from "crypto";
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  pusharyFetch
3
- } from "./chunk-XQFHB2EK.js";
3
+ } from "./chunk-PH4LJXTG.js";
4
4
  import {
5
5
  getBaseUrl
6
- } from "./chunk-GSJUGW3A.js";
6
+ } from "./chunk-NGWG2CHI.js";
7
7
  import {
8
8
  NetworkError
9
9
  } from "./chunk-YU2EUD7O.js";
@@ -13,7 +13,7 @@ import {
13
13
  import {
14
14
  isValidApiKey,
15
15
  normalizeKeyScope
16
- } from "./chunk-KPCVIH52.js";
16
+ } from "./chunk-H5TODUJ3.js";
17
17
 
18
18
  // src/session.ts
19
19
  var samePusharyAccount = (left, right) => left.kind === "ok" && right.kind === "ok" && left.identity.workspaceId !== "" && left.identity.workspaceId === right.identity.workspaceId && left.identity.siteId === right.identity.siteId;
@@ -7,13 +7,13 @@ import {
7
7
  } from "./chunk-G66WIAST.js";
8
8
  import {
9
9
  ensureDaemonRunning
10
- } from "./chunk-3ZU77DJH.js";
10
+ } from "./chunk-LQQWATPA.js";
11
11
  import {
12
12
  hookOwnerOf
13
- } from "./chunk-NK5XT4RS.js";
13
+ } from "./chunk-VAT53KQR.js";
14
14
  import {
15
15
  hookMeaning
16
- } from "./chunk-FQSFN5ZE.js";
16
+ } from "./chunk-27CV6IXW.js";
17
17
  import {
18
18
  buildTranscriptRecords,
19
19
  decodePublicKey,
@@ -24,29 +24,29 @@ import {
24
24
  recordSealerFor,
25
25
  uploadTranscriptRecords,
26
26
  wrapSessionKey
27
- } from "./chunk-KDTTCR3E.js";
27
+ } from "./chunk-DMY2J2MY.js";
28
28
  import {
29
29
  external_exports
30
30
  } from "./chunk-XMSDA5WA.js";
31
31
  import {
32
32
  transcriptEnvironmentPreference,
33
33
  transcriptsEnabled
34
- } from "./chunk-5J2OGCUA.js";
34
+ } from "./chunk-Q3GYEEOM.js";
35
35
  import {
36
36
  fetchAsCredential
37
- } from "./chunk-NPG4WCIM.js";
37
+ } from "./chunk-JSTA2JTL.js";
38
38
  import {
39
39
  readTranscriptPreference
40
- } from "./chunk-22OATDEL.js";
40
+ } from "./chunk-S5B3LKOP.js";
41
41
  import {
42
42
  claudeConfigDir,
43
43
  codexHome,
44
44
  pusharyDir
45
- } from "./chunk-RLBTKTOK.js";
45
+ } from "./chunk-ZUVDQOU6.js";
46
46
  import {
47
47
  getApiKey,
48
48
  getBaseUrl
49
- } from "./chunk-GSJUGW3A.js";
49
+ } from "./chunk-NGWG2CHI.js";
50
50
  import {
51
51
  writeJsonAtomic,
52
52
  writeJsonAtomicDurable
@@ -58,7 +58,7 @@ import {
58
58
  isHookSource,
59
59
  isRecord,
60
60
  redactSecretsFromContent
61
- } from "./chunk-KPCVIH52.js";
61
+ } from "./chunk-H5TODUJ3.js";
62
62
 
63
63
  // src/transcript-recipient-pin.ts
64
64
  import { createHash } from "crypto";
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  claudeConfigDir
3
- } from "./chunk-RLBTKTOK.js";
3
+ } from "./chunk-ZUVDQOU6.js";
4
4
  import {
5
5
  claudePermissionRulesFromSettings
6
- } from "./chunk-KPCVIH52.js";
6
+ } from "./chunk-H5TODUJ3.js";
7
7
 
8
8
  // src/claude-permission-rules.ts
9
9
  import { readFileSync, statSync } from "fs";
@@ -3,7 +3,7 @@ import {
3
3
  formatVersion,
4
4
  quoteIfNeeded,
5
5
  shellDoubleQuoted
6
- } from "./chunk-RIBCPWOB.js";
6
+ } from "./chunk-FU33PDFG.js";
7
7
  import {
8
8
  writeFileAtomic
9
9
  } from "./chunk-T5I4PKOQ.js";
@@ -11,13 +11,14 @@ import {
11
11
  cmdShimScriptOf
12
12
  } from "./chunk-ZVU6WMMU.js";
13
13
  import {
14
+ CLAUDE_MCP_PRETOOLUSE_MATCHER,
14
15
  CLAUDE_PRETOOLUSE_MATCHER,
15
16
  CODEX_QUESTION_TOOLS,
16
17
  HOOK_BUDGETS,
17
18
  HOOK_LOCATOR_BINARY,
18
19
  PRETOOLUSE_GATED_TOOLS,
19
20
  withHookHoldBudget
20
- } from "./chunk-KPCVIH52.js";
21
+ } from "./chunk-H5TODUJ3.js";
21
22
 
22
23
  // src/setup/paths.ts
23
24
  import { createHash as createHash2 } from "crypto";
@@ -734,6 +735,15 @@ var CLAUDE_HOOK_EVENTS = [
734
735
  // server's name, and we have no business preferring one server over another.
735
736
  { event: "Elicitation", binary: "pushary-elicitation-hook", timeout: HOOK_BUDGETS.claude.budgetSeconds, delivery: "approval", since: OBSERVED }
736
737
  ];
738
+ var CLAUDE_MCP_ROUTE_HOLD_HOOK = {
739
+ event: "PreToolUse",
740
+ binary: CLAUDE_HOOK_BINARY,
741
+ matcher: CLAUDE_MCP_PRETOOLUSE_MATCHER,
742
+ timeout: HOOK_BUDGETS.claude.budgetSeconds,
743
+ delivery: "approval",
744
+ cliOnly: true,
745
+ since: ESTABLISHED
746
+ };
737
747
  var supportedClaudeEvents = (version) => CLAUDE_HOOK_EVENTS.filter((hook) => version ? atLeast(version, hook.since) : hook.since === ESTABLISHED);
738
748
  var registrationSignatures = (events, version) => Object.fromEntries(
739
749
  events.map((hook) => [hook.event, `registered|${version ? formatVersion(version) : "unknown"}`])
@@ -882,6 +892,10 @@ var addPusharyHooks = (settings, binDir, version = null) => {
882
892
  delete hooks[known.event];
883
893
  }
884
894
  }
895
+ if (supported.has(CLAUDE_MCP_ROUTE_HOLD_HOOK.event)) {
896
+ const current = Array.isArray(hooks.PreToolUse) ? hooks.PreToolUse : [];
897
+ hooks.PreToolUse = [...current, entry(CLAUDE_MCP_ROUTE_HOLD_HOOK, resolve2)];
898
+ }
885
899
  };
886
900
  var entry = (definition, resolve2) => ({
887
901
  ...definition.matcher ? { matcher: definition.matcher } : {},
@@ -22,22 +22,22 @@ import {
22
22
  turnCodexAppCardsOff,
23
23
  turnCodexAppCardsOn,
24
24
  whyLaunchctlFailed
25
- } from "./chunk-GNP6I5XM.js";
26
- import "./chunk-BYL7RNOM.js";
25
+ } from "./chunk-CHHS7WT2.js";
26
+ import "./chunk-PPYNBRU6.js";
27
27
  import "./chunk-XCEN33UP.js";
28
28
  import "./chunk-QCGNGEGE.js";
29
- import "./chunk-3ZU77DJH.js";
29
+ import "./chunk-LQQWATPA.js";
30
30
  import "./chunk-XHKBHWLX.js";
31
- import "./chunk-F5TQ6TCH.js";
32
- import "./chunk-22OATDEL.js";
33
- import "./chunk-JRW5HK32.js";
34
- import "./chunk-RLBTKTOK.js";
35
- import "./chunk-RIBCPWOB.js";
36
- import "./chunk-GSJUGW3A.js";
31
+ import "./chunk-TNQ5JFCV.js";
32
+ import "./chunk-S5B3LKOP.js";
33
+ import "./chunk-WACBGAWA.js";
34
+ import "./chunk-ZUVDQOU6.js";
35
+ import "./chunk-FU33PDFG.js";
36
+ import "./chunk-NGWG2CHI.js";
37
37
  import "./chunk-T5I4PKOQ.js";
38
- import "./chunk-JCHF4VR3.js";
38
+ import "./chunk-TWRDOVN4.js";
39
39
  import "./chunk-ZVU6WMMU.js";
40
- import "./chunk-KPCVIH52.js";
40
+ import "./chunk-H5TODUJ3.js";
41
41
  import "./chunk-E46NE7FB.js";
42
42
  import "./chunk-MLKGABMK.js";
43
43
  export {
@@ -1,10 +1,10 @@
1
1
  import {
2
2
  deriveToolTarget
3
- } from "./chunk-FQSFN5ZE.js";
3
+ } from "./chunk-27CV6IXW.js";
4
4
  import {
5
5
  TOOL_NAME_MAX_LENGTH,
6
6
  codexElicitationToolName
7
- } from "./chunk-KPCVIH52.js";
7
+ } from "./chunk-H5TODUJ3.js";
8
8
  import "./chunk-MLKGABMK.js";
9
9
 
10
10
  // src/codex-card-routing.ts
@@ -11,7 +11,7 @@ import {
11
11
  installedCodexApp,
12
12
  shellQuoted,
13
13
  writeDesktopProxy
14
- } from "./chunk-BYL7RNOM.js";
14
+ } from "./chunk-PPYNBRU6.js";
15
15
  import "./chunk-XCEN33UP.js";
16
16
  import {
17
17
  CODEX_APP_LAUNCH_VARIABLE
@@ -11,37 +11,37 @@ import {
11
11
  isCodexQuestionLeftWithTheLocalClient,
12
12
  planCodexElicitation,
13
13
  reportOwnedQuestion
14
- } from "./chunk-3LJWADU2.js";
15
- import "./chunk-4EFZANH3.js";
16
- import "./chunk-T2N7MEO3.js";
17
- import "./chunk-FLRVTAV4.js";
14
+ } from "./chunk-IC7LNHAX.js";
15
+ import "./chunk-R7BP6ZEW.js";
16
+ import "./chunk-FHRXFUGD.js";
17
+ import "./chunk-BVN3WPDZ.js";
18
18
  import "./chunk-N5P2FLOJ.js";
19
- import "./chunk-TAGLGMA6.js";
19
+ import "./chunk-PPW3K5DR.js";
20
20
  import "./chunk-ROVLRXBI.js";
21
- import "./chunk-KDTTCR3E.js";
21
+ import "./chunk-DMY2J2MY.js";
22
22
  import "./chunk-XMSDA5WA.js";
23
- import "./chunk-4I6FWGZ5.js";
23
+ import "./chunk-SDMGCRO3.js";
24
24
  import {
25
25
  writeDegraded
26
- } from "./chunk-44O6GG4I.js";
26
+ } from "./chunk-PBM565KU.js";
27
27
  import "./chunk-POFBE6ZY.js";
28
- import "./chunk-WUREJCUJ.js";
29
- import "./chunk-HJ566HEV.js";
30
- import "./chunk-XQFHB2EK.js";
28
+ import "./chunk-3CYXPFGA.js";
29
+ import "./chunk-Z3WNBZG6.js";
30
+ import "./chunk-PH4LJXTG.js";
31
31
  import "./chunk-XHKBHWLX.js";
32
- import "./chunk-NPG4WCIM.js";
33
- import "./chunk-F5TQ6TCH.js";
34
- import "./chunk-RLBTKTOK.js";
35
- import "./chunk-RIBCPWOB.js";
36
- import "./chunk-GSJUGW3A.js";
32
+ import "./chunk-JSTA2JTL.js";
33
+ import "./chunk-TNQ5JFCV.js";
34
+ import "./chunk-ZUVDQOU6.js";
35
+ import "./chunk-FU33PDFG.js";
36
+ import "./chunk-NGWG2CHI.js";
37
37
  import "./chunk-YU2EUD7O.js";
38
38
  import "./chunk-T5I4PKOQ.js";
39
39
  import "./chunk-BG4HHB7E.js";
40
- import "./chunk-JCHF4VR3.js";
40
+ import "./chunk-TWRDOVN4.js";
41
41
  import "./chunk-ZVU6WMMU.js";
42
42
  import {
43
43
  canonicalJsonText
44
- } from "./chunk-KPCVIH52.js";
44
+ } from "./chunk-H5TODUJ3.js";
45
45
  import "./chunk-MLKGABMK.js";
46
46
 
47
47
  // src/codex-session-launch.ts