pushary 1.9.120 → 1.9.122

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 (130) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/dist/{api-QFUMNTEQ.js → api-KE4OJ3NK.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 +34 -34
  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 +31 -31
  21. package/dist/bin/pushary-hook.js +33 -33
  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 +30 -30
  28. package/dist/bin/pushary-permission-denied-hook.js +33 -33
  29. package/dist/bin/pushary-permission-hook.js +33 -33
  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 +49 -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-YOSATSUD.js → chunk-27FILS44.js} +2 -2
  46. package/dist/{chunk-AIABYHHZ.js → chunk-2FOCCDVV.js} +6 -6
  47. package/dist/{chunk-MZX35RFX.js → chunk-2M7FELUY.js} +1 -1
  48. package/dist/{chunk-XRRY45XB.js → chunk-2M7ZV6NA.js} +3 -3
  49. package/dist/{chunk-363YZ5WJ.js → chunk-2QWQCU7L.js} +1 -1
  50. package/dist/{chunk-PEMESJZY.js → chunk-2WGP6QE7.js} +3 -3
  51. package/dist/{chunk-6CJ7D6EQ.js → chunk-44SXI642.js} +5 -5
  52. package/dist/{chunk-4DSJF5JD.js → chunk-5MITA7MU.js} +3 -3
  53. package/dist/{chunk-7VRL6XYM.js → chunk-5S32WI3B.js} +1 -1
  54. package/dist/{chunk-H4LCCX7W.js → chunk-6VMEUCKP.js} +6 -6
  55. package/dist/{chunk-SSTO42XS.js → chunk-7EYXAM63.js} +1 -1
  56. package/dist/{chunk-ZWUVJ3DV.js → chunk-7LZQK7EB.js} +3 -3
  57. package/dist/{chunk-RWS4DRFK.js → chunk-7M5M3CF5.js} +3 -3
  58. package/dist/{chunk-HVGN7TRN.js → chunk-7OSBFMRV.js} +1 -1
  59. package/dist/{chunk-KG7UZSCD.js → chunk-7ZTVBYPE.js} +6 -6
  60. package/dist/{chunk-5KCUQ3B7.js → chunk-ABYRJP4R.js} +3 -3
  61. package/dist/{chunk-XSSG5JLJ.js → chunk-AH4NLZTT.js} +1 -1
  62. package/dist/{chunk-33NEYAK2.js → chunk-AVSHVOFB.js} +4 -4
  63. package/dist/{chunk-ZV7G73KH.js → chunk-B5OX2WCA.js} +3 -3
  64. package/dist/{chunk-BZ6N5DDZ.js → chunk-BHQYJFPY.js} +19 -26
  65. package/dist/{chunk-IYUAMUO6.js → chunk-BVI2N7QA.js} +1 -1
  66. package/dist/{chunk-L37Q4BR6.js → chunk-C2L477NM.js} +4 -4
  67. package/dist/{chunk-KESS6HAK.js → chunk-DK6R5IVR.js} +2 -2
  68. package/dist/{chunk-EG2E2562.js → chunk-DRYQ7RLF.js} +1 -1
  69. package/dist/{chunk-TAHUCUY3.js → chunk-E3LX6DEF.js} +2 -2
  70. package/dist/{chunk-47HCNA5U.js → chunk-E5LU5MJ2.js} +1 -1
  71. package/dist/{chunk-EU4NV7SS.js → chunk-EBJ5QUVE.js} +2 -2
  72. package/dist/{chunk-ZRTUS6WD.js → chunk-EUIDFLPM.js} +5 -4
  73. package/dist/{chunk-W744DTUT.js → chunk-HI5YJFKW.js} +60 -13
  74. package/dist/{chunk-J6ACLE2A.js → chunk-I2D23TBS.js} +2 -2
  75. package/dist/{chunk-YZORQXN7.js → chunk-IA3E675D.js} +1 -1
  76. package/dist/{chunk-HSFTTGOB.js → chunk-JLUMELYR.js} +2 -2
  77. package/dist/{chunk-ODXZPMKN.js → chunk-KQKHSJOM.js} +3 -3
  78. package/dist/{chunk-BYP2R2PF.js → chunk-LIIIC27B.js} +1 -1
  79. package/dist/{chunk-YQUJQGJU.js → chunk-LRS26PXE.js} +4 -4
  80. package/dist/{chunk-SUI5JE6T.js → chunk-LS3CQ536.js} +1 -1
  81. package/dist/{chunk-5JZCFZUT.js → chunk-MIO2IWCZ.js} +8 -8
  82. package/dist/{chunk-EDNCFLR7.js → chunk-MKUFVNZL.js} +3 -3
  83. package/dist/{chunk-W4MZBZU3.js → chunk-MXUQJIQS.js} +3 -3
  84. package/dist/{chunk-B4M2XZNQ.js → chunk-NCHNITQW.js} +2 -2
  85. package/dist/{chunk-4FLMGGWB.js → chunk-NLEHRQHL.js} +2 -2
  86. package/dist/{chunk-PTONPJWL.js → chunk-NPAEVCTN.js} +4 -4
  87. package/dist/{chunk-2ZT4XV4I.js → chunk-NZEFACKS.js} +6 -6
  88. package/dist/{chunk-A5YOWKPR.js → chunk-O2UMQKR4.js} +10 -10
  89. package/dist/{chunk-K4RIBZ32.js → chunk-OJPHNITI.js} +1 -1
  90. package/dist/{chunk-YQGPBLIT.js → chunk-P2WA3YY2.js} +2 -2
  91. package/dist/{chunk-RM7MNCCA.js → chunk-P6H2DI6T.js} +5 -5
  92. package/dist/{chunk-NXWQZBOK.js → chunk-PO5Z73HT.js} +3 -3
  93. package/dist/{chunk-ZR35L635.js → chunk-PO6ECYXG.js} +2 -2
  94. package/dist/{chunk-3GFJ7CXQ.js → chunk-Q3KKA5IZ.js} +4 -4
  95. package/dist/{chunk-6FR5ZYMS.js → chunk-RBPPX663.js} +1 -1
  96. package/dist/{chunk-F24QURGP.js → chunk-RF66KSSY.js} +4 -4
  97. package/dist/{chunk-NVOQBKIL.js → chunk-RKXSWF62.js} +4 -4
  98. package/dist/{chunk-INKDRMSK.js → chunk-SBPVEVLZ.js} +5 -5
  99. package/dist/{chunk-5NHWNILG.js → chunk-SNF3OTPB.js} +5 -5
  100. package/dist/{chunk-UZL3VQCE.js → chunk-SO44USAF.js} +5 -5
  101. package/dist/{chunk-XUAGV5VH.js → chunk-STGEWWFW.js} +2 -2
  102. package/dist/{chunk-CPBS6LS3.js → chunk-SZV5SLSD.js} +3 -3
  103. package/dist/{chunk-2AMSWODQ.js → chunk-T2WDQ3NT.js} +2 -2
  104. package/dist/{chunk-VKRRUT45.js → chunk-TJ32WT6M.js} +5 -5
  105. package/dist/{chunk-ZMKZ5WHS.js → chunk-UV2JM3PZ.js} +1 -1
  106. package/dist/{chunk-J4AJVM5F.js → chunk-VUNQZNKR.js} +3 -3
  107. package/dist/{chunk-XOPOX5QY.js → chunk-WLC3AX6F.js} +11 -11
  108. package/dist/{chunk-SJPH24TK.js → chunk-WS37PSC5.js} +4 -4
  109. package/dist/{chunk-RHTAI4XP.js → chunk-WZWZ7UCN.js} +24 -17
  110. package/dist/{chunk-T57CIR6H.js → chunk-X2PN3XNW.js} +1 -1
  111. package/dist/{chunk-3DD44QTA.js → chunk-X6WYICTL.js} +5 -5
  112. package/dist/{chunk-WFHUECGB.js → chunk-XWFYR52C.js} +6 -6
  113. package/dist/{chunk-7YRKM4AB.js → chunk-YANGE5FG.js} +6 -6
  114. package/dist/{chunk-UFRRAAYD.js → chunk-YWA4Q42Z.js} +4 -4
  115. package/dist/{chunk-NBKH6SKN.js → chunk-Z7FUHJKU.js} +1 -1
  116. package/dist/{chunk-HHZSB6KL.js → chunk-ZAYXOSEP.js} +5 -5
  117. package/dist/{codex-app-cards-switch-545ISCGQ.js → codex-app-cards-switch-HUU5TTBZ.js} +11 -11
  118. package/dist/{codex-card-routing-IKNAEEMC.js → codex-card-routing-JTZ2PC24.js} +2 -2
  119. package/dist/{codex-desktop-launch-VQNI4GUS.js → codex-desktop-launch-QJOCWURE.js} +1 -1
  120. package/dist/{codex-session-launch-OGOGHTM7.js → codex-session-launch-DANHY5JS.js} +18 -18
  121. package/dist/{config-VGWGOR2V.js → config-43UOHCK6.js} +3 -3
  122. package/dist/{global-upgrade-GUHXKJPO.js → global-upgrade-SIAPPAFR.js} +9 -9
  123. package/dist/{identity-FORDJUYW.js → identity-DCDWOISV.js} +4 -4
  124. package/dist/{live-capabilities-VA3VXZOZ.js → live-capabilities-VB7PM2DJ.js} +4 -4
  125. package/dist/{paths-5XZPI4LD.js → paths-346XNBFK.js} +3 -3
  126. package/dist/{reapply-77JJ3QV2.js → reapply-LMTBF3XQ.js} +28 -28
  127. package/dist/src/index.js +32 -32
  128. package/dist/{upgrade-lock-EEPLQBLA.js → upgrade-lock-YT4O5QW6.js} +4 -4
  129. package/dist/{usage-27IDH6UH.js → usage-MUXR5SZ7.js} +3 -3
  130. package/package.json +1 -1
@@ -27,11 +27,11 @@ import {
27
27
  toolResultErrorText,
28
28
  transcriptTokensIn,
29
29
  transcriptUsageRequest
30
- } from "./chunk-HVGN7TRN.js";
30
+ } from "./chunk-7OSBFMRV.js";
31
31
  import {
32
32
  branchFor,
33
33
  repoKeyFor
34
- } from "./chunk-363YZ5WJ.js";
34
+ } from "./chunk-2QWQCU7L.js";
35
35
  import {
36
36
  cancelQuestion,
37
37
  clientErrorKindOf,
@@ -39,35 +39,35 @@ import {
39
39
  reportClientError,
40
40
  sendNotification,
41
41
  waitForAnswer
42
- } from "./chunk-KG7UZSCD.js";
42
+ } from "./chunk-7ZTVBYPE.js";
43
43
  import {
44
44
  isRetryable,
45
45
  withRetry
46
- } from "./chunk-UZL3VQCE.js";
46
+ } from "./chunk-SO44USAF.js";
47
47
  import {
48
48
  fetchAsCredential
49
- } from "./chunk-47HCNA5U.js";
49
+ } from "./chunk-E5LU5MJ2.js";
50
50
  import {
51
51
  getMachineId
52
- } from "./chunk-6FR5ZYMS.js";
52
+ } from "./chunk-RBPPX663.js";
53
53
  import {
54
54
  reportedInstallSource
55
- } from "./chunk-B4M2XZNQ.js";
55
+ } from "./chunk-NCHNITQW.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-ZRTUS6WD.js";
62
+ } from "./chunk-EUIDFLPM.js";
63
63
  import {
64
64
  compareVersion,
65
65
  parseVersion
66
- } from "./chunk-ODXZPMKN.js";
66
+ } from "./chunk-KQKHSJOM.js";
67
67
  import {
68
68
  getApiKey,
69
69
  getBaseUrl
70
- } from "./chunk-MZX35RFX.js";
70
+ } from "./chunk-2M7FELUY.js";
71
71
  import {
72
72
  writeFileAtomic,
73
73
  writeJsonAtomicDurable
@@ -96,7 +96,7 @@ import {
96
96
  resolveAutoResolveOrigin,
97
97
  resolvePolicy,
98
98
  unansweredRefusalReason
99
- } from "./chunk-W744DTUT.js";
99
+ } from "./chunk-HI5YJFKW.js";
100
100
 
101
101
  // src/pending.ts
102
102
  import { join } from "path";
@@ -13,16 +13,16 @@ import {
13
13
  } from "./chunk-G66WIAST.js";
14
14
  import {
15
15
  keyPrefix
16
- } from "./chunk-CPBS6LS3.js";
16
+ } from "./chunk-SZV5SLSD.js";
17
17
  import {
18
18
  getBaseUrl
19
- } from "./chunk-MZX35RFX.js";
19
+ } from "./chunk-2M7FELUY.js";
20
20
  import {
21
21
  NPX_LATEST_COMMAND
22
- } from "./chunk-7VRL6XYM.js";
22
+ } from "./chunk-5S32WI3B.js";
23
23
  import {
24
24
  isValidApiKey
25
- } from "./chunk-W744DTUT.js";
25
+ } from "./chunk-HI5YJFKW.js";
26
26
 
27
27
  // src/cli/login-ui.ts
28
28
  import { hostname } from "os";
@@ -1,13 +1,13 @@
1
1
  import {
2
2
  ensureCodexTrustsPusharyHooks
3
- } from "./chunk-YOSATSUD.js";
3
+ } from "./chunk-27FILS44.js";
4
4
  import {
5
5
  hermesReceiptPaths,
6
6
  hermesSetupPredatesThePluginFolder,
7
7
  installHermesPlugin,
8
8
  refreshHermesPluginFiles,
9
9
  shippedHermesPlugin
10
- } from "./chunk-ZWUVJ3DV.js";
10
+ } from "./chunk-7LZQK7EB.js";
11
11
  import {
12
12
  fxIgnoresInstructionsFile,
13
13
  fxInstructionsBody,
@@ -16,7 +16,7 @@ import {
16
16
  macAppFxBridge,
17
17
  refreshClineKey,
18
18
  switchFxHttpEntryToBridge
19
- } from "./chunk-5NHWNILG.js";
19
+ } from "./chunk-SNF3OTPB.js";
20
20
  import {
21
21
  OPENCODE_HOOK_BINARY,
22
22
  agentHookOwner,
@@ -28,16 +28,16 @@ import {
28
28
  openCodePluginDir,
29
29
  openCodeWired,
30
30
  withOpenCodeAskRules
31
- } from "./chunk-INKDRMSK.js";
31
+ } from "./chunk-SBPVEVLZ.js";
32
32
  import {
33
33
  detectClaudeVersion
34
- } from "./chunk-YQGPBLIT.js";
34
+ } from "./chunk-P2WA3YY2.js";
35
35
  import {
36
36
  addCompatibleHooks,
37
37
  compatibleConfigFile,
38
38
  compatibleInstructionsFile,
39
39
  hasCompatibleHooks
40
- } from "./chunk-HHZSB6KL.js";
40
+ } from "./chunk-ZAYXOSEP.js";
41
41
  import {
42
42
  GEMINI_HOOK_BINARY,
43
43
  addGeminiHooks,
@@ -49,7 +49,7 @@ import {
49
49
  geminiWired,
50
50
  hasGeminiHooks,
51
51
  planHooks
52
- } from "./chunk-3GFJ7CXQ.js";
52
+ } from "./chunk-Q3KKA5IZ.js";
53
53
  import {
54
54
  CLAUDE_HOOK_BINARY,
55
55
  CLAUDE_HOOK_EVENTS,
@@ -85,6 +85,7 @@ import {
85
85
  geminiMd,
86
86
  guardBinary,
87
87
  hasCodexHooks,
88
+ namesCliBinary,
88
89
  namesOurBinary,
89
90
  needsReregistration,
90
91
  pusharyDir,
@@ -95,13 +96,13 @@ import {
95
96
  renderAgentInstructions,
96
97
  supportedClaudeEvents,
97
98
  vscodePluginMcp
98
- } from "./chunk-ZRTUS6WD.js";
99
+ } from "./chunk-EUIDFLPM.js";
99
100
  import {
100
101
  formatVersion,
101
102
  hookCommandsUseBareNames,
102
103
  resolveGlobalBinDir,
103
104
  resolveGlobalBinary
104
- } from "./chunk-ODXZPMKN.js";
105
+ } from "./chunk-KQKHSJOM.js";
105
106
  import {
106
107
  readJsonSafe,
107
108
  writeFileAtomic,
@@ -111,7 +112,7 @@ import {
111
112
  HOOK_COMPATIBLE_PROFILES,
112
113
  isCompatibleAgentType,
113
114
  isRecord
114
- } from "./chunk-W744DTUT.js";
115
+ } from "./chunk-HI5YJFKW.js";
115
116
 
116
117
  // src/reapply.ts
117
118
  import { dirname, join } from "path";
@@ -123,6 +124,7 @@ import { parse as parseTOML, stringify as stringifyTOML } from "smol-toml";
123
124
  var asRecord = (value) => typeof value === "object" && value !== null && !Array.isArray(value) ? value : null;
124
125
  var CLAUDE_CLI_BINARIES = new Set(CLAUDE_HOOK_EVENTS.map((hook) => hook.binary));
125
126
  var registrationHolder = (settings) => registrationHolderOf(settings, CLAUDE_CLI_BINARIES);
127
+ var holdsCliHooks = (settings) => registeredCommands(settings).some(({ command }) => namesCliBinary(command, CLAUDE_CLI_BINARIES));
126
128
  var registeredPusharyEvents = (settings) => new Set(
127
129
  registeredCommands(settings).filter(({ command }) => namesOurBinary(command, CLAUDE_CLI_BINARIES)).map(({ event }) => event)
128
130
  );
@@ -131,11 +133,13 @@ var reregisterVerdict = ({ settings, stored, version }) => {
131
133
  if (holder === "none") return { kind: "not_wired" };
132
134
  if (holder === "app") return { kind: "app_owned" };
133
135
  const unproven = claudeUnprovenHolds(settings);
134
- if (unproven.length === 0 && !needsReregistration(stored, version)) return { kind: "current" };
135
136
  const supported = new Set(supportedClaudeEvents(version).map((hook) => hook.event));
136
137
  const present = registeredPusharyEvents(settings);
137
138
  const missing = [...supported].filter((event) => !present.has(event));
138
- const extra = [...present].filter((event) => !supported.has(event));
139
+ if (unproven.length === 0 && missing.length === 0 && !needsReregistration(stored, version)) {
140
+ return { kind: "current" };
141
+ }
142
+ const extra = version === null ? [] : [...present].filter((event) => !supported.has(event));
139
143
  const repairable = unproven.filter((event) => supported.has(event));
140
144
  return missing.length > 0 || extra.length > 0 || repairable.length > 0 ? { kind: "stale", version, missing, extra, unproven: repairable } : { kind: "record_only", version };
141
145
  };
@@ -161,7 +165,7 @@ var readJson = (filePath) => {
161
165
  return null;
162
166
  };
163
167
  var writeJson = (filePath, data) => writeJsonAtomic(filePath, data);
164
- var hasPusharyClaudeHooks = (settings) => JSON.stringify(settings.hooks ?? {}).includes(CLAUDE_HOOK_BINARY);
168
+ var hasPusharyClaudeHooks = (settings) => holdsCliHooks(settings);
165
169
  var hasPusharyMcp = (claudeJson2) => !!claudeJson2.mcpServers?.pushary;
166
170
  var PRIVATE_TO_OWNER = 384;
167
171
  var modeToPreserve = (filePath) => {
@@ -171,6 +175,9 @@ var modeToPreserve = (filePath) => {
171
175
  return PRIVATE_TO_OWNER;
172
176
  }
173
177
  };
178
+ var OWNER_WRITE = 128;
179
+ var isReadOnly = (filePath) => (modeToPreserve(filePath) & OWNER_WRITE) === 0;
180
+ var writableModeToPreserve = (filePath) => isReadOnly(filePath) ? void 0 : modeToPreserve(filePath);
174
181
  var wouldWriteBareNames = (resolve, probe) => resolve(probe) === void 0;
175
182
  var reapplyClaudeSettings = (apiKey, paths = {}) => {
176
183
  const settingsPath = paths.settingsPath ?? claudeSettings();
@@ -190,7 +197,7 @@ var reapplyClaudeSettings = (apiKey, paths = {}) => {
190
197
  addPusharyToolPermissions(s);
191
198
  const binary = hookCommandsUseBareNames(paths.platform ?? process.platform) ? void 0 : (paths.resolveBinary ?? resolveGlobalBinary)(CLAUDE_HOOK_BINARY);
192
199
  addPusharyHooks(s, binary ? dirname(binary) : void 0, (paths.detectVersion ?? detectClaudeVersion)());
193
- writeJson(settingsPath, s);
200
+ writeJsonAtomic(settingsPath, s, writableModeToPreserve(settingsPath));
194
201
  hooks = true;
195
202
  } catch {
196
203
  failed = true;
@@ -200,7 +207,7 @@ var reapplyClaudeSettings = (apiKey, paths = {}) => {
200
207
  if (!claudeJsonWritable) throw new Error(".claude.json could not be parsed");
201
208
  const cj = claudeJson2;
202
209
  addClaudeMcpServer(cj, apiKey);
203
- writeJson(claudeJsonPath, cj);
210
+ writeJsonAtomic(claudeJsonPath, cj, PRIVATE_TO_OWNER);
204
211
  mcp = true;
205
212
  } catch {
206
213
  failed = true;
@@ -224,10 +231,10 @@ var reapplyClaudeForVersion = (apiKey, paths = {}) => {
224
231
  return { verdict: verdict.kind, rewrote: false, missing: [] };
225
232
  }
226
233
  const resolveBinary = paths.resolveBinary ?? resolveGlobalBinary;
227
- if (verdict.kind === "stale" && wouldWriteBareNames(resolveBinary, CLAUDE_HOOK_BINARY)) {
234
+ if (verdict.kind === "stale" && (wouldWriteBareNames(resolveBinary, CLAUDE_HOOK_BINARY) || isReadOnly(settingsPath))) {
228
235
  return { verdict: "stale", rewrote: false, missing: verdict.missing };
229
236
  }
230
- const rewrote = verdict.kind === "stale" ? reapplyClaudeSettings(apiKey, { ...paths, settingsPath }).hooks : false;
237
+ const rewrote = verdict.kind === "stale" ? reapplyClaudeSettings(apiKey, { ...paths, settingsPath, detectVersion: () => version }).hooks : false;
231
238
  if (verdict.kind === "stale" && !rewrote) return { verdict: "stale", rewrote: false, missing: verdict.missing };
232
239
  writeJsonAtomic(receiptPath, receiptFor(version));
233
240
  return {
@@ -2,7 +2,7 @@ import {
2
2
  isApprovalMode,
3
3
  isRecord,
4
4
  isTimeoutAction
5
- } from "./chunk-W744DTUT.js";
5
+ } from "./chunk-HI5YJFKW.js";
6
6
 
7
7
  // src/cli/settings-response.ts
8
8
  var isFiniteNumber = (value) => typeof value === "number" && Number.isFinite(value);
@@ -1,19 +1,19 @@
1
1
  import {
2
2
  announceSubscriptionRequired,
3
3
  isDeferAnswer
4
- } from "./chunk-K4RIBZ32.js";
4
+ } from "./chunk-OJPHNITI.js";
5
5
  import {
6
6
  askUser,
7
7
  isDecisionStopped,
8
8
  isQuestionLimitRefusal,
9
9
  waitForQuestion
10
- } from "./chunk-KG7UZSCD.js";
10
+ } from "./chunk-7ZTVBYPE.js";
11
11
  import {
12
12
  SubscriptionRequiredError
13
- } from "./chunk-UZL3VQCE.js";
13
+ } from "./chunk-SO44USAF.js";
14
14
  import {
15
15
  getMachineId
16
- } from "./chunk-6FR5ZYMS.js";
16
+ } from "./chunk-RBPPX663.js";
17
17
  import {
18
18
  ASK_CONTEXT_MAX,
19
19
  agentQuestionContext,
@@ -23,7 +23,7 @@ import {
23
23
  plainAskOf,
24
24
  questionsShownAsASet,
25
25
  shouldDeferToNativeMode
26
- } from "./chunk-W744DTUT.js";
26
+ } from "./chunk-HI5YJFKW.js";
27
27
 
28
28
  // src/native-defer.ts
29
29
  var nativeDeferOptions = () => {
@@ -4,19 +4,19 @@ import {
4
4
  } from "./chunk-XHKBHWLX.js";
5
5
  import {
6
6
  getMachineId
7
- } from "./chunk-6FR5ZYMS.js";
7
+ } from "./chunk-RBPPX663.js";
8
8
  import {
9
9
  readControlMode
10
- } from "./chunk-CPBS6LS3.js";
10
+ } from "./chunk-SZV5SLSD.js";
11
11
  import {
12
12
  pusharyDir
13
- } from "./chunk-ZRTUS6WD.js";
13
+ } from "./chunk-EUIDFLPM.js";
14
14
  import {
15
15
  resolveGlobalBinary
16
- } from "./chunk-ODXZPMKN.js";
16
+ } from "./chunk-KQKHSJOM.js";
17
17
  import {
18
18
  getApiKey
19
- } from "./chunk-MZX35RFX.js";
19
+ } from "./chunk-2M7FELUY.js";
20
20
  import {
21
21
  readJsonSafe,
22
22
  writeFileAtomic,
@@ -32,7 +32,7 @@ import {
32
32
  } from "./chunk-ZVU6WMMU.js";
33
33
  import {
34
34
  isRecord
35
- } from "./chunk-W744DTUT.js";
35
+ } from "./chunk-HI5YJFKW.js";
36
36
 
37
37
  // src/daemon-lifecycle.ts
38
38
  import { dirname, join, win32 as win32Path } from "path";
@@ -3,10 +3,10 @@ import {
3
3
  forkFinishWithUpgradeLock,
4
4
  installWithUpgradeLock,
5
5
  releaseAutoUpdateLock
6
- } from "./chunk-J6ACLE2A.js";
6
+ } from "./chunk-I2D23TBS.js";
7
7
  import {
8
8
  phoneStartIsRequired
9
- } from "./chunk-W4MZBZU3.js";
9
+ } from "./chunk-MXUQJIQS.js";
10
10
  import {
11
11
  describeAutoUpdateCheck,
12
12
  globalInstallLocation,
@@ -18,25 +18,25 @@ import {
18
18
  readAutoUpdateState,
19
19
  updateAutoUpdateState,
20
20
  upgradeEntryFor
21
- } from "./chunk-XUAGV5VH.js";
21
+ } from "./chunk-STGEWWFW.js";
22
22
  import {
23
23
  autoUpdateLock,
24
24
  autoUpdateLog,
25
25
  autoUpdateState
26
- } from "./chunk-ZRTUS6WD.js";
26
+ } from "./chunk-EUIDFLPM.js";
27
27
  import {
28
28
  execNpm,
29
29
  fetchLatestPublishedVersion,
30
30
  npmErrorMessage,
31
31
  readGlobalCliInstallAt,
32
32
  readGlobalPrefix
33
- } from "./chunk-ODXZPMKN.js";
33
+ } from "./chunk-KQKHSJOM.js";
34
34
  import {
35
35
  EXIT
36
36
  } from "./chunk-BG4HHB7E.js";
37
37
  import {
38
38
  NPX_LATEST_COMMAND
39
- } from "./chunk-7VRL6XYM.js";
39
+ } from "./chunk-5S32WI3B.js";
40
40
  import {
41
41
  commandsPackage,
42
42
  globalUpgradeEntry,
@@ -12,7 +12,7 @@ import {
12
12
  reachVerdict,
13
13
  reachesYou,
14
14
  verifyDelivery
15
- } from "./chunk-AIABYHHZ.js";
15
+ } from "./chunk-2FOCCDVV.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-B4M2XZNQ.js";
27
+ } from "./chunk-NCHNITQW.js";
28
28
  import {
29
29
  NPX_LATEST_COMMAND
30
- } from "./chunk-7VRL6XYM.js";
30
+ } from "./chunk-5S32WI3B.js";
31
31
  import {
32
32
  NO_PAIRING_COMPUTER,
33
33
  PAIR_TTL_SECONDS
34
- } from "./chunk-W744DTUT.js";
34
+ } from "./chunk-HI5YJFKW.js";
35
35
 
36
36
  // src/onboarding.ts
37
37
  import qrcodeTerminal from "qrcode-terminal";
@@ -7,7 +7,7 @@ import {
7
7
  } from "./chunk-BG4HHB7E.js";
8
8
  import {
9
9
  redactSecretsFromContent
10
- } from "./chunk-W744DTUT.js";
10
+ } from "./chunk-HI5YJFKW.js";
11
11
 
12
12
  // src/cli/json.ts
13
13
  var writeStdoutFully = (text) => new Promise((resolve, reject) => {
@@ -1,13 +1,13 @@
1
1
  import {
2
2
  CLAUDE_CODE_AGENT
3
- } from "./chunk-XOPOX5QY.js";
3
+ } from "./chunk-WLC3AX6F.js";
4
4
  import {
5
5
  addGeminiMcpServer,
6
6
  removeGeminiMcpServer
7
- } from "./chunk-3GFJ7CXQ.js";
7
+ } from "./chunk-Q3KKA5IZ.js";
8
8
  import {
9
9
  compatibleToolLookup
10
- } from "./chunk-HVGN7TRN.js";
10
+ } from "./chunk-7OSBFMRV.js";
11
11
  import {
12
12
  CLAUDE_HOOK_EVENTS,
13
13
  PUSHARY_MCP_URL,
@@ -19,7 +19,7 @@ import {
19
19
  isPusharyHook,
20
20
  registerHookEntry,
21
21
  removeClaudeMcpServers
22
- } from "./chunk-ZRTUS6WD.js";
22
+ } from "./chunk-EUIDFLPM.js";
23
23
  import {
24
24
  HOOK_COMPATIBLE_PROFILES,
25
25
  PHONE_ANSWERED_TOOLS,
@@ -30,7 +30,7 @@ import {
30
30
  pusharyMissingReason,
31
31
  refusalOutput,
32
32
  withHookHoldBudget
33
- } from "./chunk-W744DTUT.js";
33
+ } from "./chunk-HI5YJFKW.js";
34
34
 
35
35
  // src/config-document.ts
36
36
  import { parse, stringify } from "smol-toml";
@@ -22,22 +22,22 @@ import {
22
22
  turnCodexAppCardsOff,
23
23
  turnCodexAppCardsOn,
24
24
  whyLaunchctlFailed
25
- } from "./chunk-TAHUCUY3.js";
26
- import "./chunk-5KCUQ3B7.js";
25
+ } from "./chunk-E3LX6DEF.js";
26
+ import "./chunk-ABYRJP4R.js";
27
27
  import "./chunk-XCEN33UP.js";
28
28
  import "./chunk-QCGNGEGE.js";
29
- import "./chunk-WFHUECGB.js";
29
+ import "./chunk-XWFYR52C.js";
30
30
  import "./chunk-XHKBHWLX.js";
31
- import "./chunk-6FR5ZYMS.js";
32
- import "./chunk-CPBS6LS3.js";
33
- import "./chunk-B4M2XZNQ.js";
34
- import "./chunk-ZRTUS6WD.js";
35
- import "./chunk-ODXZPMKN.js";
36
- import "./chunk-MZX35RFX.js";
31
+ import "./chunk-RBPPX663.js";
32
+ import "./chunk-SZV5SLSD.js";
33
+ import "./chunk-NCHNITQW.js";
34
+ import "./chunk-EUIDFLPM.js";
35
+ import "./chunk-KQKHSJOM.js";
36
+ import "./chunk-2M7FELUY.js";
37
37
  import "./chunk-T5I4PKOQ.js";
38
- import "./chunk-7VRL6XYM.js";
38
+ import "./chunk-5S32WI3B.js";
39
39
  import "./chunk-ZVU6WMMU.js";
40
- import "./chunk-W744DTUT.js";
40
+ import "./chunk-HI5YJFKW.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-HVGN7TRN.js";
3
+ } from "./chunk-7OSBFMRV.js";
4
4
  import {
5
5
  TOOL_NAME_MAX_LENGTH,
6
6
  codexElicitationToolName
7
- } from "./chunk-W744DTUT.js";
7
+ } from "./chunk-HI5YJFKW.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-5KCUQ3B7.js";
14
+ } from "./chunk-ABYRJP4R.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-H4LCCX7W.js";
15
- import "./chunk-BYP2R2PF.js";
16
- import "./chunk-W4MZBZU3.js";
17
- import "./chunk-YQGPBLIT.js";
14
+ } from "./chunk-6VMEUCKP.js";
15
+ import "./chunk-LIIIC27B.js";
16
+ import "./chunk-MXUQJIQS.js";
17
+ import "./chunk-P2WA3YY2.js";
18
18
  import "./chunk-N5P2FLOJ.js";
19
- import "./chunk-HSFTTGOB.js";
19
+ import "./chunk-JLUMELYR.js";
20
20
  import "./chunk-ROVLRXBI.js";
21
- import "./chunk-4DSJF5JD.js";
21
+ import "./chunk-5MITA7MU.js";
22
22
  import "./chunk-XMSDA5WA.js";
23
- import "./chunk-363YZ5WJ.js";
23
+ import "./chunk-2QWQCU7L.js";
24
24
  import {
25
25
  writeDegraded
26
- } from "./chunk-KG7UZSCD.js";
26
+ } from "./chunk-7ZTVBYPE.js";
27
27
  import "./chunk-POFBE6ZY.js";
28
- import "./chunk-UZL3VQCE.js";
29
- import "./chunk-ZV7G73KH.js";
30
- import "./chunk-XRRY45XB.js";
28
+ import "./chunk-SO44USAF.js";
29
+ import "./chunk-B5OX2WCA.js";
30
+ import "./chunk-2M7ZV6NA.js";
31
31
  import "./chunk-XHKBHWLX.js";
32
- import "./chunk-47HCNA5U.js";
33
- import "./chunk-6FR5ZYMS.js";
34
- import "./chunk-ZRTUS6WD.js";
35
- import "./chunk-ODXZPMKN.js";
36
- import "./chunk-MZX35RFX.js";
32
+ import "./chunk-E5LU5MJ2.js";
33
+ import "./chunk-RBPPX663.js";
34
+ import "./chunk-EUIDFLPM.js";
35
+ import "./chunk-KQKHSJOM.js";
36
+ import "./chunk-2M7FELUY.js";
37
37
  import "./chunk-YU2EUD7O.js";
38
38
  import "./chunk-T5I4PKOQ.js";
39
39
  import "./chunk-BG4HHB7E.js";
40
- import "./chunk-7VRL6XYM.js";
40
+ import "./chunk-5S32WI3B.js";
41
41
  import "./chunk-ZVU6WMMU.js";
42
42
  import {
43
43
  canonicalJsonText
44
- } from "./chunk-W744DTUT.js";
44
+ } from "./chunk-HI5YJFKW.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-MZX35RFX.js";
7
- import "./chunk-7VRL6XYM.js";
8
- import "./chunk-W744DTUT.js";
6
+ } from "./chunk-2M7FELUY.js";
7
+ import "./chunk-5S32WI3B.js";
8
+ import "./chunk-HI5YJFKW.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-7YRKM4AB.js";
11
- import "./chunk-J6ACLE2A.js";
12
- import "./chunk-W4MZBZU3.js";
13
- import "./chunk-YQGPBLIT.js";
10
+ } from "./chunk-YANGE5FG.js";
11
+ import "./chunk-I2D23TBS.js";
12
+ import "./chunk-MXUQJIQS.js";
13
+ import "./chunk-P2WA3YY2.js";
14
14
  import "./chunk-ROVLRXBI.js";
15
- import "./chunk-XUAGV5VH.js";
15
+ import "./chunk-STGEWWFW.js";
16
16
  import "./chunk-POFBE6ZY.js";
17
- import "./chunk-ZRTUS6WD.js";
18
- import "./chunk-ODXZPMKN.js";
17
+ import "./chunk-EUIDFLPM.js";
18
+ import "./chunk-KQKHSJOM.js";
19
19
  import "./chunk-T5I4PKOQ.js";
20
20
  import "./chunk-BG4HHB7E.js";
21
- import "./chunk-7VRL6XYM.js";
21
+ import "./chunk-5S32WI3B.js";
22
22
  import "./chunk-ZVU6WMMU.js";
23
- import "./chunk-W744DTUT.js";
23
+ import "./chunk-HI5YJFKW.js";
24
24
  import "./chunk-MLKGABMK.js";
25
25
  export {
26
26
  finishGlobalUpgrade,
@@ -2,12 +2,12 @@ import {
2
2
  getMachineId,
3
3
  getOrCreateMachineId,
4
4
  readExistingMachineId
5
- } from "./chunk-6FR5ZYMS.js";
6
- import "./chunk-ZRTUS6WD.js";
7
- import "./chunk-ODXZPMKN.js";
5
+ } from "./chunk-RBPPX663.js";
6
+ import "./chunk-EUIDFLPM.js";
7
+ import "./chunk-KQKHSJOM.js";
8
8
  import "./chunk-T5I4PKOQ.js";
9
9
  import "./chunk-ZVU6WMMU.js";
10
- import "./chunk-W744DTUT.js";
10
+ import "./chunk-HI5YJFKW.js";
11
11
  import "./chunk-MLKGABMK.js";
12
12
  export {
13
13
  getMachineId,
@@ -22,13 +22,13 @@ import {
22
22
  resolveControlPolicy,
23
23
  resolveProviderBinary,
24
24
  trackProviderInventory
25
- } from "./chunk-W4MZBZU3.js";
26
- import "./chunk-YQGPBLIT.js";
25
+ } from "./chunk-MXUQJIQS.js";
26
+ import "./chunk-P2WA3YY2.js";
27
27
  import "./chunk-ROVLRXBI.js";
28
- import "./chunk-ODXZPMKN.js";
28
+ import "./chunk-KQKHSJOM.js";
29
29
  import "./chunk-T5I4PKOQ.js";
30
30
  import "./chunk-ZVU6WMMU.js";
31
- import "./chunk-W744DTUT.js";
31
+ import "./chunk-HI5YJFKW.js";
32
32
  import "./chunk-MLKGABMK.js";
33
33
  export {
34
34
  CLAUDE_BRIDGE_CAPABILITY,
@@ -39,11 +39,11 @@ import {
39
39
  serviceOwedBackMark,
40
40
  vscodePluginDir,
41
41
  vscodePluginMcp
42
- } from "./chunk-ZRTUS6WD.js";
43
- import "./chunk-ODXZPMKN.js";
42
+ } from "./chunk-EUIDFLPM.js";
43
+ import "./chunk-KQKHSJOM.js";
44
44
  import "./chunk-T5I4PKOQ.js";
45
45
  import "./chunk-ZVU6WMMU.js";
46
- import "./chunk-W744DTUT.js";
46
+ import "./chunk-HI5YJFKW.js";
47
47
  import "./chunk-MLKGABMK.js";
48
48
  export {
49
49
  autoUpdateLock,