pushary 1.9.128 → 1.9.130

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 (138) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/dist/{api-JRRKVMXE.js → api-MMU454AE.js} +12 -12
  3. package/dist/bin/pushary-audit.js +4 -4
  4. package/dist/bin/pushary-bell-hook.js +30 -30
  5. package/dist/bin/pushary-bell.js +11 -11
  6. package/dist/bin/pushary-claude.js +35 -35
  7. package/dist/bin/pushary-clean.js +37 -37
  8. package/dist/bin/pushary-codex-bridge.js +24 -24
  9. package/dist/bin/pushary-codex-hook.js +37 -37
  10. package/dist/bin/pushary-codex-session.js +8 -8
  11. package/dist/bin/pushary-codex.js +16 -16
  12. package/dist/bin/pushary-connect.js +29 -29
  13. package/dist/bin/pushary-cowork.js +5 -5
  14. package/dist/bin/pushary-daemon.js +52 -52
  15. package/dist/bin/pushary-disconnect.js +28 -28
  16. package/dist/bin/pushary-display-hook.js +7868 -35
  17. package/dist/bin/pushary-doctor.js +48 -48
  18. package/dist/bin/pushary-elicitation-hook.js +30 -30
  19. package/dist/bin/pushary-gemini-bridge.js +18 -18
  20. package/dist/bin/pushary-gemini-hook.js +34 -34
  21. package/dist/bin/pushary-hook.js +36 -36
  22. package/dist/bin/pushary-login.js +23 -23
  23. package/dist/bin/pushary-logout.js +27 -27
  24. package/dist/bin/pushary-mcp.js +13 -13
  25. package/dist/bin/pushary-mode.js +16 -16
  26. package/dist/bin/pushary-notification-hook.js +29 -29
  27. package/dist/bin/pushary-opencode-hook.js +33 -33
  28. package/dist/bin/pushary-permission-denied-hook.js +36 -36
  29. package/dist/bin/pushary-permission-hook.js +36 -36
  30. package/dist/bin/pushary-post-hook.js +29 -29
  31. package/dist/bin/pushary-prompt-hook.js +29 -29
  32. package/dist/bin/pushary-session-end-hook.js +31 -31
  33. package/dist/bin/pushary-session-start-hook.js +39 -39
  34. package/dist/bin/pushary-setup.js +59 -59
  35. package/dist/bin/pushary-stats.js +5 -5
  36. package/dist/bin/pushary-status.js +35 -35
  37. package/dist/bin/pushary-stop-hook.js +29 -29
  38. package/dist/bin/pushary-stopfailure-hook.js +29 -29
  39. package/dist/bin/pushary-suggestions.js +16 -16
  40. package/dist/bin/pushary-transcript-register.js +21 -21
  41. package/dist/bin/pushary-transcripts.js +29 -29
  42. package/dist/bin/pushary-upgrade.js +43 -43
  43. package/dist/bin/pushary-wait.js +16 -16
  44. package/dist/bin/pushary.js +8 -8
  45. package/dist/{chunk-AH4NLZTT.js → chunk-25UU4Q4V.js} +1 -1
  46. package/dist/{chunk-7EYXAM63.js → chunk-2U4MCUVZ.js} +1 -1
  47. package/dist/{chunk-2FIS7KDD.js → chunk-2VNYP35D.js} +4 -4
  48. package/dist/{chunk-NLEHRQHL.js → chunk-2YS7YEUW.js} +2 -2
  49. package/dist/{chunk-KEJFRU2Q.js → chunk-3R2GILXH.js} +7 -7
  50. package/dist/{chunk-HHI3MSJJ.js → chunk-3SDMCBT7.js} +5 -5
  51. package/dist/{chunk-E5LU5MJ2.js → chunk-42PVKPHM.js} +1 -1
  52. package/dist/{chunk-ZLWWDEQB.js → chunk-47IBUIDJ.js} +12 -12
  53. package/dist/{chunk-XSG42MMY.js → chunk-4EQOCSJW.js} +1 -1
  54. package/dist/{chunk-LG3B5BDP.js → chunk-4VVYZJLG.js} +9 -9
  55. package/dist/{chunk-X4MUM7JK.js → chunk-56DO6XGT.js} +6 -6
  56. package/dist/{chunk-E27MPYOC.js → chunk-5AVCVA3Z.js} +3 -3
  57. package/dist/{chunk-HVJIITL4.js → chunk-66HILP6Q.js} +8 -8
  58. package/dist/{chunk-LHDKVRIP.js → chunk-6NG7NVTL.js} +4 -4
  59. package/dist/{chunk-VUNQZNKR.js → chunk-75FJZR2M.js} +3 -3
  60. package/dist/{chunk-ABMXITA2.js → chunk-7A745YEM.js} +3 -3
  61. package/dist/{chunk-VRUVMUHN.js → chunk-7COOVVQJ.js} +2 -2
  62. package/dist/{chunk-YZHVM5LY.js → chunk-AAMWERYZ.js} +2 -2
  63. package/dist/{chunk-H6MBABPQ.js → chunk-ANPQ6AW6.js} +9 -9
  64. package/dist/{chunk-IRZNQAQO.js → chunk-B3X4SME2.js} +6 -6
  65. package/dist/{chunk-WVFKRWPE.js → chunk-BBYFAY3S.js} +12 -76
  66. package/dist/{chunk-NCHNITQW.js → chunk-BKH4LQJC.js} +2 -2
  67. package/dist/{chunk-RK5VSHBW.js → chunk-BZOTJ2CO.js} +3 -3
  68. package/dist/{chunk-A5GLAQNK.js → chunk-C2TRPHGA.js} +5 -5
  69. package/dist/{chunk-2XTK53YK.js → chunk-CPSGGBEN.js} +5 -5
  70. package/dist/{chunk-XNKE67NJ.js → chunk-CRVPT3HO.js} +3 -3
  71. package/dist/{chunk-SZV5SLSD.js → chunk-CVBSETPW.js} +4 -4
  72. package/dist/{chunk-ROVLRXBI.js → chunk-CYTPQDQY.js} +1 -1
  73. package/dist/{chunk-O55LZDLD.js → chunk-DALJA6SH.js} +3 -3
  74. package/dist/{chunk-5QFC3NCU.js → chunk-DIUFYQ7F.js} +4 -4
  75. package/dist/{chunk-K256TL7E.js → chunk-FZWWCDYA.js} +5 -5
  76. package/dist/{chunk-27GQFR5J.js → chunk-G3IEREIQ.js} +8 -8
  77. package/dist/{chunk-BVI2N7QA.js → chunk-GQPXW6BL.js} +1 -1
  78. package/dist/{chunk-HXBQTPKC.js → chunk-GVSIVBVT.js} +1 -1
  79. package/dist/{chunk-NKV5AALF.js → chunk-H6CL3T2S.js} +1 -1
  80. package/dist/{chunk-VQJT6X3B.js → chunk-HE32H3U7.js} +6 -6
  81. package/dist/{chunk-Z7RGHFAW.js → chunk-HFIIF32E.js} +4 -4
  82. package/dist/{chunk-WJ4W33WN.js → chunk-HMHZ4QF3.js} +3 -3
  83. package/dist/{chunk-IYM3CXWZ.js → chunk-IVBRL2TT.js} +6 -6
  84. package/dist/{chunk-LBROBXUC.js → chunk-JGUKBFGP.js} +5 -5
  85. package/dist/{chunk-7OSBFMRV.js → chunk-JYCAAQUW.js} +1 -1
  86. package/dist/{chunk-XOYZK3XP.js → chunk-KBAVAEMC.js} +4 -4
  87. package/dist/{chunk-5MITA7MU.js → chunk-KWICQAP7.js} +3 -3
  88. package/dist/{chunk-HI5YJFKW.js → chunk-M65LPNIO.js} +1 -0
  89. package/dist/{chunk-4B3KU7O4.js → chunk-ND35WKWA.js} +16 -16
  90. package/dist/{chunk-XRJU7CZ2.js → chunk-NFK2RHD3.js} +3 -3
  91. package/dist/{chunk-44ONTVVI.js → chunk-NUOZ46B2.js} +1 -1
  92. package/dist/{chunk-UV2JM3PZ.js → chunk-NYFUU23B.js} +1 -1
  93. package/dist/{chunk-P3VVRBBI.js → chunk-OUN5T5VX.js} +1 -1
  94. package/dist/{chunk-DPXOELLZ.js → chunk-PBXXI75U.js} +3 -3
  95. package/dist/{chunk-FNLUSPM7.js → chunk-PEYTSAGK.js} +4 -4
  96. package/dist/{chunk-VKIQR33O.js → chunk-Q4WPTLEX.js} +3 -3
  97. package/dist/{chunk-T2WDQ3NT.js → chunk-QBJVECFY.js} +3 -3
  98. package/dist/{chunk-ODUAW2CX.js → chunk-QBWCBTDH.js} +6 -6
  99. package/dist/{chunk-VIUANC2F.js → chunk-QEEXR6CD.js} +3 -3
  100. package/dist/{chunk-J35EMNLD.js → chunk-QIHYQHCC.js} +3 -3
  101. package/dist/{chunk-ALRDG7SI.js → chunk-QQEU4LN2.js} +7 -7
  102. package/dist/{chunk-2QWQCU7L.js → chunk-RGVQOOGD.js} +1 -1
  103. package/dist/{chunk-FMUNFP4O.js → chunk-RQMUNSKU.js} +3 -3
  104. package/dist/{chunk-LCFSGKQW.js → chunk-SWWM3LRZ.js} +11 -7
  105. package/dist/{chunk-FXLWWEVQ.js → chunk-SZSIZCAU.js} +1 -1
  106. package/dist/{chunk-5S32WI3B.js → chunk-SZYKS433.js} +1 -1
  107. package/dist/{chunk-2M7FELUY.js → chunk-T6HX6OTY.js} +1 -1
  108. package/dist/{chunk-JDGLNYDZ.js → chunk-TGYM6UQJ.js} +2 -2
  109. package/dist/{chunk-GFCAZD2W.js → chunk-TJ2R3V5A.js} +12 -12
  110. package/dist/{chunk-T5I4PKOQ.js → chunk-TODDEIYG.js} +13 -9
  111. package/dist/{chunk-Z7FUHJKU.js → chunk-VRUEKURE.js} +1 -1
  112. package/dist/{chunk-PWC4IK4J.js → chunk-W3WJUR4P.js} +3 -3
  113. package/dist/{chunk-4CSFH736.js → chunk-WDA26JR4.js} +4 -4
  114. package/dist/{chunk-X2PN3XNW.js → chunk-WZ4SIRMH.js} +1 -1
  115. package/dist/{chunk-E66FG2DC.js → chunk-XGLXVYOH.js} +5 -5
  116. package/dist/{chunk-LS3CQ536.js → chunk-XHC3UNOK.js} +1 -1
  117. package/dist/{chunk-LIIIC27B.js → chunk-XMZVQF2J.js} +1 -1
  118. package/dist/{chunk-OKCK7DNN.js → chunk-XQHXVBC2.js} +5 -5
  119. package/dist/{chunk-BZUQXL43.js → chunk-YC6R5CXH.js} +3 -3
  120. package/dist/{chunk-WS37PSC5.js → chunk-YI6RR4JP.js} +4 -4
  121. package/dist/{chunk-PWTW7E5H.js → chunk-ZABDTVGQ.js} +6 -5
  122. package/dist/{chunk-TQBYF3W6.js → chunk-ZCMVIRD3.js} +2 -2
  123. package/dist/{codex-app-cards-switch-SC3YKXBG.js → codex-app-cards-switch-MZXLPTEJ.js} +13 -13
  124. package/dist/{codex-card-routing-JTZ2PC24.js → codex-card-routing-X2HUY2AV.js} +2 -2
  125. package/dist/{codex-desktop-launch-2ODSLA7V.js → codex-desktop-launch-Z7XUBFPH.js} +1 -1
  126. package/dist/{codex-session-launch-AD3AVJC4.js → codex-session-launch-L3KAQCLT.js} +21 -21
  127. package/dist/{config-43UOHCK6.js → config-5SNDVPS2.js} +3 -3
  128. package/dist/{global-upgrade-LBL5RJV5.js → global-upgrade-WGWQLBOM.js} +11 -11
  129. package/dist/{identity-RCT5QKWZ.js → identity-O6BBNMHO.js} +5 -5
  130. package/dist/{live-capabilities-WZHU2A5C.js → live-capabilities-HQC6V3BG.js} +6 -6
  131. package/dist/{paths-JK4EFG5J.js → paths-ABTFHZQF.js} +4 -4
  132. package/dist/reapply-GHISAECD.js +66 -0
  133. package/dist/src/index.js +35 -35
  134. package/dist/{upgrade-lock-MU5RYC57.js → upgrade-lock-LUZJZC4C.js} +5 -5
  135. package/dist/{usage-UO3T2VK7.js → usage-XLJK7OTL.js} +3 -3
  136. package/package.json +1 -1
  137. package/dist/bin/pushary-display-hook.d.ts +0 -1
  138. package/dist/reapply-4V5AZJFZ.js +0 -66
@@ -2,7 +2,7 @@ import {
2
2
  localRepoKey,
3
3
  normalizeRepoRemote,
4
4
  parseGitBranch
5
- } from "./chunk-HI5YJFKW.js";
5
+ } from "./chunk-M65LPNIO.js";
6
6
 
7
7
  // src/repo.ts
8
8
  import { existsSync, readFileSync, statSync } from "fs";
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  parseSseMessages
3
- } from "./chunk-ALRDG7SI.js";
3
+ } from "./chunk-QQEU4LN2.js";
4
4
  import {
5
5
  fetchAsCredential
6
- } from "./chunk-E5LU5MJ2.js";
6
+ } from "./chunk-42PVKPHM.js";
7
7
  import {
8
8
  NPX_LATEST_COMMAND
9
- } from "./chunk-5S32WI3B.js";
9
+ } from "./chunk-SZYKS433.js";
10
10
 
11
11
  // src/mcp-stdio-bridge.ts
12
12
  var MCP_BRIDGE_BINARY = "pushary-mcp";
@@ -3,10 +3,10 @@ import {
3
3
  formatVersion,
4
4
  quoteIfNeeded,
5
5
  shellDoubleQuoted
6
- } from "./chunk-WJ4W33WN.js";
6
+ } from "./chunk-HMHZ4QF3.js";
7
7
  import {
8
8
  writeFileAtomic
9
- } from "./chunk-T5I4PKOQ.js";
9
+ } from "./chunk-TODDEIYG.js";
10
10
  import {
11
11
  cmdShimScriptOf
12
12
  } from "./chunk-WIIMW5YO.js";
@@ -18,8 +18,9 @@ import {
18
18
  HOOK_BUDGETS,
19
19
  HOOK_LOCATOR_BINARY,
20
20
  PRETOOLUSE_GATED_TOOLS,
21
+ PUSHARY_TOOL_PREFIX,
21
22
  withHookHoldBudget
22
- } from "./chunk-HI5YJFKW.js";
23
+ } from "./chunk-M65LPNIO.js";
23
24
 
24
25
  // src/setup/paths.ts
25
26
  import { createHash as createHash2 } from "crypto";
@@ -764,7 +765,7 @@ var needsReregistration = (stored, version) => {
764
765
  // src/claude-config.ts
765
766
  import { isDeepStrictEqual } from "util";
766
767
  var PUSHARY_MCP_URL = "https://pushary.com/api/mcp/mcp";
767
- var PUSHARY_PERMISSION_RULE = "mcp__pushary__*";
768
+ var PUSHARY_PERMISSION_RULE = `${PUSHARY_TOOL_PREFIX}*`;
768
769
  var asRecord3 = (value) => value && typeof value === "object" && !Array.isArray(value) ? value : void 0;
769
770
  var ensureRecord2 = (target, key) => {
770
771
  const existing = asRecord3(target[key]);
@@ -773,7 +774,9 @@ var ensureRecord2 = (target, key) => {
773
774
  target[key] = created;
774
775
  return created;
775
776
  };
776
- var isPusharyPermission = (rule) => typeof rule === "string" && (rule.includes("pushary") || rule.includes("MCP(pushary"));
777
+ var PUSHARY_SERVER_PERMISSION_RULE = "mcp__pushary";
778
+ var PUSHARY_TOOL_PERMISSION_PREFIXES = [PUSHARY_TOOL_PREFIX, "MCP(pushary:"];
779
+ var allowsPusharyTools = (rule) => typeof rule === "string" && (rule === PUSHARY_SERVER_PERMISSION_RULE || PUSHARY_TOOL_PERMISSION_PREFIXES.some((prefix) => rule.startsWith(prefix)));
777
780
  var HOOK_BINARIES = /* @__PURE__ */ new Set([
778
781
  ...CLAUDE_HOOK_EVENTS.map((hook) => hook.binary),
779
782
  HOOK_LOCATOR_BINARY
@@ -863,7 +866,7 @@ var removeClaudeMcpServers = (config) => {
863
866
  var removePusharyToolPermissions = (settings) => {
864
867
  const permissions = asRecord3(settings.permissions);
865
868
  if (!permissions || !Array.isArray(permissions.allow)) return false;
866
- const filtered = permissions.allow.filter((rule) => !isPusharyPermission(rule));
869
+ const filtered = permissions.allow.filter((rule) => !allowsPusharyTools(rule));
867
870
  if (filtered.length === permissions.allow.length) return false;
868
871
  if (filtered.length === 0) delete permissions.allow;
869
872
  else permissions.allow = filtered;
@@ -873,7 +876,7 @@ var removePusharyToolPermissions = (settings) => {
873
876
  var addPusharyToolPermissions = (settings) => {
874
877
  const permissions = ensureRecord2(settings, "permissions");
875
878
  const allow = Array.isArray(permissions.allow) ? permissions.allow : [];
876
- const filtered = allow.filter((rule) => !isPusharyPermission(rule));
879
+ const filtered = allow.filter((rule) => !allowsPusharyTools(rule));
877
880
  if (!filtered.includes(PUSHARY_PERMISSION_RULE)) {
878
881
  filtered.push(PUSHARY_PERMISSION_RULE);
879
882
  }
@@ -1341,6 +1344,7 @@ export {
1341
1344
  registrationSignatures,
1342
1345
  needsReregistration,
1343
1346
  PUSHARY_MCP_URL,
1347
+ allowsPusharyTools,
1344
1348
  isPusharyHook,
1345
1349
  addClaudeMcpServer,
1346
1350
  isClaudeMcpSnapshot,
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  guardBinary
3
- } from "./chunk-LCFSGKQW.js";
3
+ } from "./chunk-SWWM3LRZ.js";
4
4
 
5
5
  // src/bell/install.ts
6
6
  import { join } from "path";
@@ -2,7 +2,7 @@ import {
2
2
  DISCONNECT_AGENT_IDS,
3
3
  SETUP_AGENT_CHOICES,
4
4
  isApprovalMode
5
- } from "./chunk-HI5YJFKW.js";
5
+ } from "./chunk-M65LPNIO.js";
6
6
 
7
7
  // src/cli/mode-request.ts
8
8
  var parseDuration = (value) => {
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  NPX_LATEST_COMMAND
3
- } from "./chunk-5S32WI3B.js";
3
+ } from "./chunk-SZYKS433.js";
4
4
 
5
5
  // src/config.ts
6
6
  import { readFileSync } from "fs";
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  findNativeClaudeInstall
3
- } from "./chunk-ROVLRXBI.js";
3
+ } from "./chunk-CYTPQDQY.js";
4
4
  import {
5
5
  isFile
6
- } from "./chunk-T5I4PKOQ.js";
6
+ } from "./chunk-TODDEIYG.js";
7
7
 
8
8
  // src/wrapper/claudeBinary.ts
9
9
  import { homedir } from "os";
@@ -27,11 +27,11 @@ import {
27
27
  toolResultErrorText,
28
28
  transcriptTokensIn,
29
29
  transcriptUsageRequest
30
- } from "./chunk-7OSBFMRV.js";
30
+ } from "./chunk-JYCAAQUW.js";
31
31
  import {
32
32
  branchFor,
33
33
  repoKeyFor
34
- } from "./chunk-2QWQCU7L.js";
34
+ } from "./chunk-RGVQOOGD.js";
35
35
  import {
36
36
  cancelQuestion,
37
37
  clientErrorKindOf,
@@ -39,39 +39,39 @@ import {
39
39
  reportClientError,
40
40
  sendNotification,
41
41
  waitForAnswer
42
- } from "./chunk-HVJIITL4.js";
42
+ } from "./chunk-66HILP6Q.js";
43
43
  import {
44
44
  isRetryable,
45
45
  withRetry
46
- } from "./chunk-ALRDG7SI.js";
46
+ } from "./chunk-QQEU4LN2.js";
47
47
  import {
48
48
  fetchAsCredential
49
- } from "./chunk-E5LU5MJ2.js";
49
+ } from "./chunk-42PVKPHM.js";
50
50
  import {
51
51
  getMachineId
52
- } from "./chunk-TQBYF3W6.js";
52
+ } from "./chunk-ZCMVIRD3.js";
53
53
  import {
54
54
  reportedInstallSource
55
- } from "./chunk-NCHNITQW.js";
55
+ } from "./chunk-BKH4LQJC.js";
56
56
  import {
57
57
  IDLE_PROMPT_NOTIFICATION,
58
58
  NOTIFICATION_PUSH_TYPES,
59
59
  POSTTOOLUSE_MIRROR_ONLY_TOOLS,
60
60
  canonicalJson,
61
61
  claudeConfigDir
62
- } from "./chunk-LCFSGKQW.js";
62
+ } from "./chunk-SWWM3LRZ.js";
63
63
  import {
64
64
  compareVersion,
65
65
  parseVersion
66
- } from "./chunk-WJ4W33WN.js";
66
+ } from "./chunk-HMHZ4QF3.js";
67
67
  import {
68
68
  getApiKey,
69
69
  getBaseUrl
70
- } from "./chunk-2M7FELUY.js";
70
+ } from "./chunk-T6HX6OTY.js";
71
71
  import {
72
72
  writeFileAtomic,
73
73
  writeJsonAtomicDurable
74
- } from "./chunk-T5I4PKOQ.js";
74
+ } from "./chunk-TODDEIYG.js";
75
75
  import {
76
76
  BLOCKED_ACTION_GRANT_TTL_SECONDS,
77
77
  CLI_POLICY_REQUEST_CAPABILITIES,
@@ -96,7 +96,7 @@ import {
96
96
  resolveAutoResolveOrigin,
97
97
  resolvePolicy,
98
98
  unansweredRefusalReason
99
- } from "./chunk-HI5YJFKW.js";
99
+ } from "./chunk-M65LPNIO.js";
100
100
 
101
101
  // src/pending.ts
102
102
  import { join } from "path";
@@ -73,19 +73,21 @@ var backupFile = (filePath) => {
73
73
  copyFileSync(filePath, target);
74
74
  return target;
75
75
  };
76
- var writeFileAtomic = (filePath, contents, mode, encoding = "utf-8") => {
76
+ var replaceThroughTempFile = (filePath, contents, mode, encoding, fsyncBeforeRename) => {
77
77
  const target = lstatSync(filePath, { throwIfNoEntry: false })?.isSymbolicLink() ? realpathSync(filePath) : filePath;
78
78
  const dir = dirname(target);
79
79
  if (!existsSync(dir)) mkdirSync(dir, { recursive: true });
80
80
  const temp = join(dir, `.${process.pid}-${stamp()}.pushary-tmp`);
81
81
  try {
82
82
  writeFileSync(temp, contents, mode === void 0 ? encoding : { encoding, mode });
83
- const handle = openSync(temp, "r+");
84
- try {
85
- if (mode !== void 0) fchmodSync(handle, mode);
86
- fsyncSync(handle);
87
- } finally {
88
- closeSync(handle);
83
+ if (mode !== void 0 || fsyncBeforeRename) {
84
+ const handle = openSync(temp, "r+");
85
+ try {
86
+ if (mode !== void 0) fchmodSync(handle, mode);
87
+ if (fsyncBeforeRename) fsyncSync(handle);
88
+ } finally {
89
+ closeSync(handle);
90
+ }
89
91
  }
90
92
  renameSync(temp, target);
91
93
  } catch (err) {
@@ -96,8 +98,10 @@ var writeFileAtomic = (filePath, contents, mode, encoding = "utf-8") => {
96
98
  throw err;
97
99
  }
98
100
  };
99
- var writeJsonAtomic = (filePath, data, mode) => writeFileAtomic(filePath, `${JSON.stringify(data, null, 2)}
100
- `, mode);
101
+ var writeFileAtomic = (filePath, contents, mode, encoding = "utf-8") => replaceThroughTempFile(filePath, contents, mode, encoding, true);
102
+ var jsonFileContents = (data) => `${JSON.stringify(data, null, 2)}
103
+ `;
104
+ var writeJsonAtomic = (filePath, data, mode) => writeFileAtomic(filePath, jsonFileContents(data), mode);
101
105
  var writeJsonAtomicDurable = (filePath, data, mode) => {
102
106
  writeJsonAtomic(filePath, data, mode);
103
107
  if (process.platform === "win32") return;
@@ -7,7 +7,7 @@ import {
7
7
  } from "./chunk-BG4HHB7E.js";
8
8
  import {
9
9
  redactSecretsFromContent
10
- } from "./chunk-HI5YJFKW.js";
10
+ } from "./chunk-M65LPNIO.js";
11
11
 
12
12
  // src/cli/json.ts
13
13
  var writeStdoutFully = (text) => new Promise((resolve, reject) => {
@@ -4,15 +4,15 @@ import {
4
4
  claimThrottle,
5
5
  releaseThrottle,
6
6
  reportEvent
7
- } from "./chunk-GFCAZD2W.js";
7
+ } from "./chunk-TJ2R3V5A.js";
8
8
  import {
9
9
  deriveToolTarget,
10
10
  permissionDeniedAction
11
- } from "./chunk-7OSBFMRV.js";
11
+ } from "./chunk-JYCAAQUW.js";
12
12
  import {
13
13
  machineDecisionFor,
14
14
  wireVerdictFor
15
- } from "./chunk-HI5YJFKW.js";
15
+ } from "./chunk-M65LPNIO.js";
16
16
 
17
17
  // src/machine-decision-audit.ts
18
18
  import { basename } from "path";
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  realpath
3
- } from "./chunk-VIUANC2F.js";
3
+ } from "./chunk-QEEXR6CD.js";
4
4
  import {
5
5
  findNativeClaudeInstall
6
- } from "./chunk-ROVLRXBI.js";
6
+ } from "./chunk-CYTPQDQY.js";
7
7
  import {
8
8
  readGlobalPrefixAsync,
9
9
  resolveGlobalBinary,
@@ -13,10 +13,10 @@ import {
13
13
  resolvePackageVersionFromBinary,
14
14
  resolvePathBinary,
15
15
  resolvePathBinaryAsync
16
- } from "./chunk-WJ4W33WN.js";
16
+ } from "./chunk-HMHZ4QF3.js";
17
17
  import {
18
18
  MANAGED_PROVIDERS
19
- } from "./chunk-HI5YJFKW.js";
19
+ } from "./chunk-M65LPNIO.js";
20
20
 
21
21
  // src/live-capabilities.ts
22
22
  import { homedir } from "os";
@@ -2,7 +2,7 @@ import {
2
2
  isApprovalMode,
3
3
  isRecord,
4
4
  isTimeoutAction
5
- } from "./chunk-HI5YJFKW.js";
5
+ } from "./chunk-M65LPNIO.js";
6
6
 
7
7
  // src/cli/settings-response.ts
8
8
  var isFiniteNumber = (value) => typeof value === "number" && Number.isFinite(value);
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  readMacAppAgentKey
3
- } from "./chunk-OKCK7DNN.js";
3
+ } from "./chunk-XQHXVBC2.js";
4
4
  import {
5
5
  API_KEYS_PATH
6
- } from "./chunk-VRUVMUHN.js";
6
+ } from "./chunk-7COOVVQJ.js";
7
7
  import {
8
8
  absoluteUrl
9
- } from "./chunk-J35EMNLD.js";
9
+ } from "./chunk-QIHYQHCC.js";
10
10
  import {
11
11
  findExportedKeyLines,
12
12
  isAdoptedMacAppKey,
@@ -16,10 +16,10 @@ import {
16
16
  readConfigFileKey,
17
17
  readKeySource,
18
18
  readMacAppKeyPrefix
19
- } from "./chunk-SZV5SLSD.js";
19
+ } from "./chunk-CVBSETPW.js";
20
20
  import {
21
21
  isValidApiKey
22
- } from "./chunk-HI5YJFKW.js";
22
+ } from "./chunk-M65LPNIO.js";
23
23
 
24
24
  // src/key-revocation.ts
25
25
  var SELF_REVOKE_PATH = "/api/v1/server/keys/self/revoke";
@@ -9,7 +9,7 @@ import {
9
9
  isSetupConnectMode,
10
10
  isValidApiKey,
11
11
  normalizeAgentId
12
- } from "./chunk-HI5YJFKW.js";
12
+ } from "./chunk-M65LPNIO.js";
13
13
 
14
14
  // src/setup/options.ts
15
15
  var AGENT_CHOICES = SETUP_AGENT_CHOICES;
@@ -7,7 +7,7 @@ import {
7
7
  recordSealerFor,
8
8
  uploadTranscriptRecords,
9
9
  wrapSessionKey
10
- } from "./chunk-5MITA7MU.js";
10
+ } from "./chunk-KWICQAP7.js";
11
11
 
12
12
  // src/live-session.ts
13
13
  var MAX_TRANSCRIPT_QUEUE = 100;
@@ -1,19 +1,19 @@
1
1
  import {
2
2
  macAppBridgeAvailable
3
- } from "./chunk-X4MUM7JK.js";
3
+ } from "./chunk-56DO6XGT.js";
4
4
  import {
5
5
  keyPrefix
6
- } from "./chunk-SZV5SLSD.js";
6
+ } from "./chunk-CVBSETPW.js";
7
7
  import {
8
8
  bridgeAgentKey
9
- } from "./chunk-LCFSGKQW.js";
9
+ } from "./chunk-SWWM3LRZ.js";
10
10
  import {
11
11
  readJsonSafe
12
- } from "./chunk-T5I4PKOQ.js";
12
+ } from "./chunk-TODDEIYG.js";
13
13
  import {
14
14
  isRecord,
15
15
  isValidApiKey
16
- } from "./chunk-HI5YJFKW.js";
16
+ } from "./chunk-M65LPNIO.js";
17
17
 
18
18
  // src/shared-mcp-key.ts
19
19
  var asRecord = (value) => value !== null && typeof value === "object" && !Array.isArray(value) ? value : void 0;
@@ -1,16 +1,16 @@
1
1
  import {
2
2
  spawnClaude
3
- } from "./chunk-NKV5AALF.js";
3
+ } from "./chunk-H6CL3T2S.js";
4
4
  import {
5
5
  CODEX_HOOK_EVENTS,
6
6
  CODEX_REQUIRED_APPROVAL_EVENTS,
7
7
  codexHome,
8
8
  codexHooksJsonIn,
9
9
  isPusharyCodexCommand
10
- } from "./chunk-LCFSGKQW.js";
10
+ } from "./chunk-SWWM3LRZ.js";
11
11
  import {
12
12
  resolvePathBinary
13
- } from "./chunk-WJ4W33WN.js";
13
+ } from "./chunk-HMHZ4QF3.js";
14
14
  import {
15
15
  getPackageVersion
16
16
  } from "./chunk-WIIMW5YO.js";
@@ -13,16 +13,16 @@ import {
13
13
  } from "./chunk-G66WIAST.js";
14
14
  import {
15
15
  keyPrefix
16
- } from "./chunk-SZV5SLSD.js";
16
+ } from "./chunk-CVBSETPW.js";
17
17
  import {
18
18
  getBaseUrl
19
- } from "./chunk-2M7FELUY.js";
19
+ } from "./chunk-T6HX6OTY.js";
20
20
  import {
21
21
  NPX_LATEST_COMMAND
22
- } from "./chunk-5S32WI3B.js";
22
+ } from "./chunk-SZYKS433.js";
23
23
  import {
24
24
  isValidApiKey
25
- } from "./chunk-HI5YJFKW.js";
25
+ } from "./chunk-M65LPNIO.js";
26
26
 
27
27
  // src/cli/login-ui.ts
28
28
  import { hostname } from "os";
@@ -1,12 +1,13 @@
1
1
  import {
2
2
  AGENT_CHOICES
3
- } from "./chunk-LS3CQ536.js";
3
+ } from "./chunk-XHC3UNOK.js";
4
4
  import {
5
5
  BELL_HOOK_BINARY
6
- } from "./chunk-FXLWWEVQ.js";
6
+ } from "./chunk-SZSIZCAU.js";
7
7
  import {
8
8
  CLAUDE_HOOK_EVENTS,
9
9
  CODEX_HOOK_EVENTS,
10
+ allowsPusharyTools,
10
11
  hasCodexHooks,
11
12
  holdBudgetOf,
12
13
  hookBinaryNameOf,
@@ -15,13 +16,13 @@ import {
15
16
  isBridgeLocator,
16
17
  isProtectedByScope,
17
18
  registerHookEntry
18
- } from "./chunk-LCFSGKQW.js";
19
+ } from "./chunk-SWWM3LRZ.js";
19
20
  import {
20
21
  CURSOR_GATE_EVENTS,
21
22
  HOOK_BUDGETS,
22
23
  HOOK_LOCATOR_BINARY,
23
24
  hookCommandHoldBudget
24
- } from "./chunk-HI5YJFKW.js";
25
+ } from "./chunk-M65LPNIO.js";
25
26
 
26
27
  // src/gemini-config.ts
27
28
  var GEMINI_HOOK_BINARY = "pushary-gemini-hook";
@@ -135,7 +136,7 @@ var claudeWired = ({ claudeJson, settings, skillExists }) => {
135
136
  const hooks = JSON.stringify(s.hooks ?? {});
136
137
  if (CLAUDE_HOOK_BINARY.test(hooks) || hooks.includes(HOOK_LOCATOR_BINARY)) return true;
137
138
  const allow = record(s.permissions)?.allow;
138
- if (Array.isArray(allow) && allow.some((rule) => String(rule).includes("mcp__pushary__"))) return true;
139
+ if (Array.isArray(allow) && allow.some(allowsPusharyTools)) return true;
139
140
  }
140
141
  return skillExists;
141
142
  };
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  pusharyDir
3
- } from "./chunk-LCFSGKQW.js";
3
+ } from "./chunk-SWWM3LRZ.js";
4
4
  import {
5
5
  writeFileAtomic
6
- } from "./chunk-T5I4PKOQ.js";
6
+ } from "./chunk-TODDEIYG.js";
7
7
 
8
8
  // src/identity.ts
9
9
  import { randomUUID } from "crypto";
@@ -22,22 +22,22 @@ import {
22
22
  turnCodexAppCardsOff,
23
23
  turnCodexAppCardsOn,
24
24
  whyLaunchctlFailed
25
- } from "./chunk-RK5VSHBW.js";
26
- import "./chunk-XRJU7CZ2.js";
25
+ } from "./chunk-BZOTJ2CO.js";
26
+ import "./chunk-NFK2RHD3.js";
27
27
  import "./chunk-XCEN33UP.js";
28
28
  import "./chunk-QCGNGEGE.js";
29
- import "./chunk-27GQFR5J.js";
30
- import "./chunk-NKV5AALF.js";
31
- import "./chunk-TQBYF3W6.js";
32
- import "./chunk-SZV5SLSD.js";
33
- import "./chunk-NCHNITQW.js";
34
- import "./chunk-LCFSGKQW.js";
35
- import "./chunk-WJ4W33WN.js";
36
- import "./chunk-2M7FELUY.js";
37
- import "./chunk-T5I4PKOQ.js";
38
- import "./chunk-5S32WI3B.js";
29
+ import "./chunk-G3IEREIQ.js";
30
+ import "./chunk-H6CL3T2S.js";
31
+ import "./chunk-ZCMVIRD3.js";
32
+ import "./chunk-CVBSETPW.js";
33
+ import "./chunk-BKH4LQJC.js";
34
+ import "./chunk-SWWM3LRZ.js";
35
+ import "./chunk-HMHZ4QF3.js";
36
+ import "./chunk-T6HX6OTY.js";
37
+ import "./chunk-TODDEIYG.js";
38
+ import "./chunk-SZYKS433.js";
39
39
  import "./chunk-WIIMW5YO.js";
40
- import "./chunk-HI5YJFKW.js";
40
+ import "./chunk-M65LPNIO.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-7OSBFMRV.js";
3
+ } from "./chunk-JYCAAQUW.js";
4
4
  import {
5
5
  TOOL_NAME_MAX_LENGTH,
6
6
  codexElicitationToolName
7
- } from "./chunk-HI5YJFKW.js";
7
+ } from "./chunk-M65LPNIO.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-XRJU7CZ2.js";
14
+ } from "./chunk-NFK2RHD3.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-H6MBABPQ.js";
15
- import "./chunk-LIIIC27B.js";
16
- import "./chunk-4CSFH736.js";
17
- import "./chunk-VIUANC2F.js";
14
+ } from "./chunk-ANPQ6AW6.js";
15
+ import "./chunk-XMZVQF2J.js";
16
+ import "./chunk-WDA26JR4.js";
17
+ import "./chunk-QEEXR6CD.js";
18
18
  import "./chunk-N5P2FLOJ.js";
19
- import "./chunk-O55LZDLD.js";
20
- import "./chunk-ROVLRXBI.js";
21
- import "./chunk-5MITA7MU.js";
19
+ import "./chunk-DALJA6SH.js";
20
+ import "./chunk-CYTPQDQY.js";
21
+ import "./chunk-KWICQAP7.js";
22
22
  import "./chunk-XMSDA5WA.js";
23
- import "./chunk-2QWQCU7L.js";
23
+ import "./chunk-H6CL3T2S.js";
24
+ import "./chunk-RGVQOOGD.js";
24
25
  import {
25
26
  writeDegraded
26
- } from "./chunk-HVJIITL4.js";
27
+ } from "./chunk-66HILP6Q.js";
27
28
  import "./chunk-POFBE6ZY.js";
28
- import "./chunk-ALRDG7SI.js";
29
- import "./chunk-J35EMNLD.js";
30
- import "./chunk-E27MPYOC.js";
31
- import "./chunk-NKV5AALF.js";
32
- import "./chunk-E5LU5MJ2.js";
33
- import "./chunk-TQBYF3W6.js";
34
- import "./chunk-LCFSGKQW.js";
35
- import "./chunk-WJ4W33WN.js";
36
- import "./chunk-2M7FELUY.js";
29
+ import "./chunk-QQEU4LN2.js";
30
+ import "./chunk-42PVKPHM.js";
31
+ import "./chunk-QIHYQHCC.js";
32
+ import "./chunk-5AVCVA3Z.js";
33
+ import "./chunk-ZCMVIRD3.js";
34
+ import "./chunk-SWWM3LRZ.js";
35
+ import "./chunk-HMHZ4QF3.js";
36
+ import "./chunk-T6HX6OTY.js";
37
37
  import "./chunk-YU2EUD7O.js";
38
- import "./chunk-T5I4PKOQ.js";
38
+ import "./chunk-TODDEIYG.js";
39
39
  import "./chunk-BG4HHB7E.js";
40
- import "./chunk-5S32WI3B.js";
40
+ import "./chunk-SZYKS433.js";
41
41
  import "./chunk-WIIMW5YO.js";
42
42
  import {
43
43
  canonicalJsonText
44
- } from "./chunk-HI5YJFKW.js";
44
+ } from "./chunk-M65LPNIO.js";
45
45
  import "./chunk-MLKGABMK.js";
46
46
 
47
47
  // src/codex-session-launch.ts
@@ -3,9 +3,9 @@ import {
3
3
  getApiKey,
4
4
  getBaseUrl,
5
5
  resetKeyDriftWarning
6
- } from "./chunk-2M7FELUY.js";
7
- import "./chunk-5S32WI3B.js";
8
- import "./chunk-HI5YJFKW.js";
6
+ } from "./chunk-T6HX6OTY.js";
7
+ import "./chunk-SZYKS433.js";
8
+ import "./chunk-M65LPNIO.js";
9
9
  import "./chunk-MLKGABMK.js";
10
10
  export {
11
11
  configFilePath,
@@ -7,20 +7,20 @@ import {
7
7
  recordUnfinishedUpgrade,
8
8
  upgradeInstalledPackage,
9
9
  withUpgradeLock
10
- } from "./chunk-IYM3CXWZ.js";
11
- import "./chunk-DPXOELLZ.js";
12
- import "./chunk-4CSFH736.js";
13
- import "./chunk-VIUANC2F.js";
14
- import "./chunk-ROVLRXBI.js";
15
- import "./chunk-VKIQR33O.js";
10
+ } from "./chunk-IVBRL2TT.js";
11
+ import "./chunk-PBXXI75U.js";
12
+ import "./chunk-WDA26JR4.js";
13
+ import "./chunk-QEEXR6CD.js";
14
+ import "./chunk-CYTPQDQY.js";
15
+ import "./chunk-Q4WPTLEX.js";
16
16
  import "./chunk-POFBE6ZY.js";
17
- import "./chunk-LCFSGKQW.js";
18
- import "./chunk-WJ4W33WN.js";
19
- import "./chunk-T5I4PKOQ.js";
17
+ import "./chunk-SWWM3LRZ.js";
18
+ import "./chunk-HMHZ4QF3.js";
19
+ import "./chunk-TODDEIYG.js";
20
20
  import "./chunk-BG4HHB7E.js";
21
- import "./chunk-5S32WI3B.js";
21
+ import "./chunk-SZYKS433.js";
22
22
  import "./chunk-WIIMW5YO.js";
23
- import "./chunk-HI5YJFKW.js";
23
+ import "./chunk-M65LPNIO.js";
24
24
  import "./chunk-MLKGABMK.js";
25
25
  export {
26
26
  finishGlobalUpgrade,