pushary 1.9.102 → 1.9.104

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 (135) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/README.md +1 -0
  3. package/dist/{api-3O3GJV3V.js → api-QOG7JVXE.js} +13 -12
  4. package/dist/bin/pushary-audit.d.ts +1 -0
  5. package/dist/bin/pushary-audit.js +263 -0
  6. package/dist/bin/pushary-bell-hook.js +31 -30
  7. package/dist/bin/pushary-bell.js +14 -13
  8. package/dist/bin/pushary-claude.js +42 -41
  9. package/dist/bin/pushary-clean.js +40 -39
  10. package/dist/bin/pushary-codex-bridge.js +25 -24
  11. package/dist/bin/pushary-codex-hook.js +39 -38
  12. package/dist/bin/pushary-codex-session.js +8 -8
  13. package/dist/bin/pushary-codex.js +17 -16
  14. package/dist/bin/pushary-connect.js +33 -32
  15. package/dist/bin/pushary-cowork.js +8 -8
  16. package/dist/bin/pushary-daemon.js +52 -50
  17. package/dist/bin/pushary-disconnect.js +32 -31
  18. package/dist/bin/pushary-display-hook.js +21 -20
  19. package/dist/bin/pushary-doctor.js +56 -54
  20. package/dist/bin/pushary-elicitation-hook.js +31 -30
  21. package/dist/bin/pushary-gemini-bridge.js +16 -15
  22. package/dist/bin/pushary-gemini-hook.js +34 -33
  23. package/dist/bin/pushary-hook.js +36 -35
  24. package/dist/bin/pushary-login.js +27 -26
  25. package/dist/bin/pushary-logout.js +33 -32
  26. package/dist/bin/pushary-mcp.js +14 -13
  27. package/dist/bin/pushary-mode.js +19 -18
  28. package/dist/bin/pushary-notification-hook.js +31 -30
  29. package/dist/bin/pushary-opencode-hook.js +33 -32
  30. package/dist/bin/pushary-permission-denied-hook.js +35 -34
  31. package/dist/bin/pushary-permission-hook.js +36 -35
  32. package/dist/bin/pushary-post-hook.js +31 -30
  33. package/dist/bin/pushary-prompt-hook.js +31 -30
  34. package/dist/bin/pushary-session-end-hook.js +33 -32
  35. package/dist/bin/pushary-session-start-hook.js +41 -40
  36. package/dist/bin/pushary-setup.js +71 -69
  37. package/dist/bin/pushary-stats.js +6 -6
  38. package/dist/bin/pushary-status.js +39 -38
  39. package/dist/bin/pushary-stop-hook.js +31 -30
  40. package/dist/bin/pushary-stopfailure-hook.js +31 -30
  41. package/dist/bin/pushary-suggestions.js +19 -18
  42. package/dist/bin/pushary-transcript-register.js +22 -21
  43. package/dist/bin/pushary-transcripts.js +30 -29
  44. package/dist/bin/pushary-upgrade.js +48 -46
  45. package/dist/bin/pushary-wait.js +19 -18
  46. package/dist/bin/pushary.js +11 -9
  47. package/dist/{chunk-YETNUPV5.js → chunk-2MRLDEQY.js} +3 -3
  48. package/dist/{chunk-KOUB4ZLX.js → chunk-3A7REECH.js} +1 -1
  49. package/dist/{chunk-O5ZKMUTP.js → chunk-3KEY3453.js} +6 -6
  50. package/dist/{chunk-JVE4P54I.js → chunk-4HBWXZPI.js} +5 -3
  51. package/dist/{chunk-WYJ6QM7K.js → chunk-4JBCPRWZ.js} +2 -2
  52. package/dist/{chunk-J6SSLXSU.js → chunk-4OLWSYX5.js} +4 -4
  53. package/dist/{chunk-JECH4NJL.js → chunk-4QI6SBNR.js} +6 -4
  54. package/dist/{chunk-UOE26LPT.js → chunk-5BX57BGT.js} +7 -7
  55. package/dist/{chunk-4FAJQPFY.js → chunk-5YVBVJOH.js} +330 -0
  56. package/dist/{chunk-4TVLPGJV.js → chunk-6B4R7HUV.js} +1 -1
  57. package/dist/{chunk-JKOAAIJD.js → chunk-7RHEZVAE.js} +5 -5
  58. package/dist/{chunk-RVSRPDRF.js → chunk-AE2BQ3XM.js} +2 -2
  59. package/dist/{chunk-SRE6XJ3K.js → chunk-AG7PFGGE.js} +7 -7
  60. package/dist/{chunk-O7ITTNDD.js → chunk-AYWX6M7J.js} +5 -3
  61. package/dist/{chunk-JUA7MX2V.js → chunk-BDSI2NEN.js} +4 -4
  62. package/dist/{chunk-KZERVKTD.js → chunk-BG4HHB7E.js} +2 -1
  63. package/dist/{chunk-ZCYLCD6L.js → chunk-CC4LGKEZ.js} +5 -5
  64. package/dist/{chunk-CQ7QE4W2.js → chunk-CFTPHNBY.js} +1 -1
  65. package/dist/{chunk-AFGMZZEB.js → chunk-FH6PHTUD.js} +2 -2
  66. package/dist/{chunk-IOQ3ZCAE.js → chunk-FQNMUJTK.js} +1 -1
  67. package/dist/{chunk-AWF5WICI.js → chunk-FVERRWDP.js} +2 -2
  68. package/dist/{chunk-KTM2X3XQ.js → chunk-FXTUSTQG.js} +16 -16
  69. package/dist/{chunk-ZXK46QT4.js → chunk-FYQHXN4X.js} +2 -2
  70. package/dist/{chunk-AZSOH2SF.js → chunk-GV2MF4NY.js} +2 -2
  71. package/dist/{chunk-4QO267OY.js → chunk-GV5TEADP.js} +1 -1
  72. package/dist/{chunk-FF7L4B3W.js → chunk-HB7FHRTT.js} +9 -9
  73. package/dist/{chunk-T7G6IIV4.js → chunk-HHEFOGT2.js} +3 -3
  74. package/dist/{chunk-3OIUMHHO.js → chunk-HJ4EBHK4.js} +2 -2
  75. package/dist/{chunk-MK2XE66G.js → chunk-HXZYBYBD.js} +3 -3
  76. package/dist/{chunk-SA4PCB6N.js → chunk-I3T5YV5I.js} +7 -7
  77. package/dist/{chunk-KLJ2CTT7.js → chunk-ID4BZRBW.js} +4 -4
  78. package/dist/{chunk-Y7KRX7U4.js → chunk-IVAXF3JG.js} +1 -1
  79. package/dist/{chunk-MA65OP6M.js → chunk-JGRBWTDW.js} +14 -12
  80. package/dist/{chunk-WPK2UWDU.js → chunk-JMTOQXHV.js} +2 -2
  81. package/dist/{chunk-QD57EL3I.js → chunk-JVZVO3K5.js} +3 -3
  82. package/dist/{chunk-KACD6W6J.js → chunk-KDIZS7FN.js} +1 -1
  83. package/dist/{chunk-T6TQETDN.js → chunk-LIDIA5JW.js} +4 -4
  84. package/dist/{chunk-G7RMOSRX.js → chunk-M7BDKARZ.js} +1 -1
  85. package/dist/{chunk-Y3SZVZF6.js → chunk-N4RIGNDX.js} +2 -2
  86. package/dist/{chunk-7BIVBOD5.js → chunk-NGY2WS3X.js} +5 -5
  87. package/dist/{chunk-HYAQIKYB.js → chunk-NKA2PEQQ.js} +6 -6
  88. package/dist/{chunk-MP3SEXXJ.js → chunk-OFRQNTJD.js} +1 -1
  89. package/dist/{chunk-NZQEABRO.js → chunk-OPV6724W.js} +13 -11
  90. package/dist/{chunk-SXAZPWL7.js → chunk-ORIVT4BL.js} +8 -6
  91. package/dist/{chunk-V5DV7XZN.js → chunk-PK6LBL3Z.js} +4 -4
  92. package/dist/{chunk-6N5DQG5F.js → chunk-PYUN7HNY.js} +2 -2
  93. package/dist/chunk-QENTGE75.js +86 -0
  94. package/dist/{chunk-PM34Z5WX.js → chunk-RDUY7MKN.js} +6 -6
  95. package/dist/{chunk-X3HBR57D.js → chunk-RUN772MN.js} +7 -7
  96. package/dist/{chunk-VD6CAELE.js → chunk-RYUIXLZ5.js} +4 -4
  97. package/dist/{chunk-2PR5EP7N.js → chunk-SJCHJQKT.js} +4 -4
  98. package/dist/{chunk-EOD3DBIN.js → chunk-SJJCCFD5.js} +3 -3
  99. package/dist/{chunk-3K7PB5LI.js → chunk-SPM4VNED.js} +3 -3
  100. package/dist/{chunk-3Q2X3T3U.js → chunk-SVZPRTCK.js} +1 -1
  101. package/dist/{chunk-UQWEH7CK.js → chunk-TMJK3CLD.js} +5 -5
  102. package/dist/{chunk-AHIAB7JQ.js → chunk-TYH7SNKD.js} +1 -1
  103. package/dist/{chunk-PPWEBIKL.js → chunk-TYM6IH5F.js} +23 -9
  104. package/dist/{chunk-VJOMBYY5.js → chunk-U5DBYW63.js} +1 -1
  105. package/dist/{chunk-TLERJKSE.js → chunk-UL52HYKN.js} +1 -1
  106. package/dist/{chunk-Z2TX7DVU.js → chunk-UUYLBSAU.js} +15 -13
  107. package/dist/{chunk-7OZOFTTB.js → chunk-UYJLXAP4.js} +7 -7
  108. package/dist/{chunk-BQHZRH6S.js → chunk-VAZCGOLS.js} +26 -110
  109. package/dist/{chunk-LURFSDCL.js → chunk-VUFHYMSP.js} +1 -1
  110. package/dist/{chunk-JPKJBKZE.js → chunk-VZY4GD4T.js} +9 -9
  111. package/dist/{chunk-5PW25NHB.js → chunk-WBLK4WLO.js} +5 -5
  112. package/dist/{chunk-2S5J5YI2.js → chunk-XDTE55H7.js} +5 -5
  113. package/dist/{chunk-3ITURBPE.js → chunk-XTMAVKO3.js} +5 -5
  114. package/dist/{chunk-E7WJQBK3.js → chunk-XXNXMX2G.js} +14 -14
  115. package/dist/{chunk-WZNLWDSL.js → chunk-XXPA3X6L.js} +7 -7
  116. package/dist/{chunk-PWGD5EP6.js → chunk-YDT6TVGN.js} +7 -1
  117. package/dist/{chunk-NMUI3ZWG.js → chunk-YPY4YCIZ.js} +1 -1
  118. package/dist/{chunk-PPY5N2E6.js → chunk-YU2EUD7O.js} +1 -1
  119. package/dist/{chunk-WVAJSBI2.js → chunk-ZBT3U2VB.js} +3 -3
  120. package/dist/{chunk-AVXG5QB2.js → chunk-ZUXDGVW4.js} +5 -5
  121. package/dist/{codex-app-cards-switch-D475JLP5.js → codex-app-cards-switch-6IDDWXYS.js} +13 -12
  122. package/dist/{codex-desktop-launch-WOPEZMO6.js → codex-desktop-launch-VP4TXVCM.js} +1 -1
  123. package/dist/{codex-session-launch-AWWECV2L.js → codex-session-launch-OACJB5NN.js} +22 -21
  124. package/dist/{config-A5EC37VZ.js → config-S7HAIK6E.js} +3 -3
  125. package/dist/{global-upgrade-V6FA6MUF.js → global-upgrade-OOFEGR4H.js} +12 -11
  126. package/dist/{identity-BEPQQHNR.js → identity-QSM6MVAH.js} +5 -4
  127. package/dist/{live-capabilities-EAM2QN73.js → live-capabilities-NSVW362T.js} +6 -5
  128. package/dist/{paths-2IEEYSHM.js → paths-KFRRYJWL.js} +4 -3
  129. package/dist/reapply-7H3VCPW4.js +65 -0
  130. package/dist/src/index.js +37 -36
  131. package/dist/{upgrade-lock-DLGVC34L.js → upgrade-lock-BJKRXNMC.js} +5 -4
  132. package/dist/usage-KGWL6WKQ.js +11 -0
  133. package/package.json +2 -1
  134. package/dist/reapply-3LBUA5EV.js +0 -64
  135. package/dist/usage-U6H5UFS2.js +0 -11
@@ -12,91 +12,14 @@ import {
12
12
  ownPackageName
13
13
  } from "./chunk-ZVU6WMMU.js";
14
14
 
15
- // src/cli/fsx.ts
16
- import { copyFileSync, lstatSync, realpathSync, existsSync, fchmodSync, fsyncSync, mkdirSync, openSync, closeSync, readFileSync, renameSync, statSync, unlinkSync, writeFileSync } from "fs";
17
- import { dirname, join } from "path";
18
- var readJsonSafe = (filePath) => {
19
- let raw;
20
- try {
21
- raw = readFileSync(filePath, "utf-8");
22
- } catch (err) {
23
- const error = err;
24
- if (error.code === "ENOENT") return { kind: "missing" };
25
- return { kind: "unreadable", error };
26
- }
27
- if (raw.trim() === "") return { kind: "ok", value: {} };
28
- try {
29
- const value = JSON.parse(raw);
30
- return { kind: "ok", value };
31
- } catch (err) {
32
- return { kind: "unparseable", error: err, raw };
33
- }
34
- };
35
- var isFile = (path) => {
36
- try {
37
- return statSync(path).isFile();
38
- } catch {
39
- return false;
40
- }
41
- };
42
- var readFileOrMissing = (path) => {
43
- try {
44
- return readFileSync(path, "utf-8");
45
- } catch (error) {
46
- if (error instanceof Error && "code" in error && error.code === "ENOENT") return null;
47
- throw error;
48
- }
49
- };
50
- var stamp = () => (/* @__PURE__ */ new Date()).toISOString().replace(/[:.]/g, "-");
51
- var backupFile = (filePath) => {
52
- const target = `${filePath}.pushary-backup-${stamp()}`;
53
- copyFileSync(filePath, target);
54
- return target;
55
- };
56
- var writeFileAtomic = (filePath, contents, mode, encoding = "utf-8") => {
57
- const target = lstatSync(filePath, { throwIfNoEntry: false })?.isSymbolicLink() ? realpathSync(filePath) : filePath;
58
- const dir = dirname(target);
59
- if (!existsSync(dir)) mkdirSync(dir, { recursive: true });
60
- const temp = join(dir, `.${process.pid}-${stamp()}.pushary-tmp`);
61
- try {
62
- writeFileSync(temp, contents, mode === void 0 ? encoding : { encoding, mode });
63
- const handle = openSync(temp, "r+");
64
- try {
65
- if (mode !== void 0) fchmodSync(handle, mode);
66
- fsyncSync(handle);
67
- } finally {
68
- closeSync(handle);
69
- }
70
- renameSync(temp, target);
71
- } catch (err) {
72
- try {
73
- if (existsSync(temp)) unlinkSync(temp);
74
- } catch {
75
- }
76
- throw err;
77
- }
78
- };
79
- var writeJsonAtomic = (filePath, data, mode) => writeFileAtomic(filePath, `${JSON.stringify(data, null, 2)}
80
- `, mode);
81
- var writeJsonAtomicDurable = (filePath, data, mode) => {
82
- writeJsonAtomic(filePath, data, mode);
83
- if (process.platform === "win32") return;
84
- const directory = openSync(dirname(filePath), "r");
85
- try {
86
- fsyncSync(directory);
87
- } finally {
88
- closeSync(directory);
89
- }
90
- };
91
-
92
15
  // src/shell-quote.ts
93
16
  var shellDoubleQuoted = (text) => `"${text.replace(/(["\\$`])/g, "\\$1")}"`;
94
17
 
95
18
  // src/npm.ts
96
19
  import { promisify } from "util";
97
20
  import { exec, execFile, execFileSync, execSync } from "child_process";
98
- import { existsSync as existsSync2, readFileSync as readFileSync2, readlinkSync, realpathSync as realpathSync2 } from "fs";
99
- import { dirname as dirname2, isAbsolute, join as join2, relative, resolve } from "path";
21
+ import { existsSync, readFileSync, readlinkSync, realpathSync } from "fs";
22
+ import { dirname, isAbsolute, join, relative, resolve } from "path";
100
23
  var latestReleaseUrl = (packageName) => `https://registry.npmjs.org/${packageName}/latest`;
101
24
  var REGISTRY_TIMEOUT_MS = 5e3;
102
25
  var LATEST_TAG = "latest";
@@ -165,8 +88,8 @@ var resolveGlobalBinary = (name) => {
165
88
  return resolveGlobalBinaryAt(name, prefix);
166
89
  };
167
90
  var resolveGlobalBinaryAt = (name, prefix, platform = process.platform) => {
168
- const candidates = platform === "win32" ? [join2(prefix, `${name}.cmd`), join2(prefix, name)] : [join2(prefix, "bin", name)];
169
- return candidates.find(existsSync2);
91
+ const candidates = platform === "win32" ? [join(prefix, `${name}.cmd`), join(prefix, name)] : [join(prefix, "bin", name)];
92
+ return candidates.find(existsSync);
170
93
  };
171
94
  var resolvePathBinary = (name, platform = process.platform) => {
172
95
  try {
@@ -278,20 +201,20 @@ var npmInstallFailure = (err, platform = process.platform) => {
278
201
  var resolveBinary = (name) => resolveGlobalBinary(name) ?? resolvePathBinary(name);
279
202
  var resolvePackageVersionFromBinary = (binary, packageName) => {
280
203
  try {
281
- let dir = dirname2(realpathSync2(binary));
204
+ let dir = dirname(realpathSync(binary));
282
205
  const packagePath = packageName.split("/");
283
206
  for (let depth = 0; depth < 8; depth++) {
284
207
  for (const manifest of [
285
- join2(dir, "package.json"),
286
- join2(dir, "node_modules", ...packagePath, "package.json")
208
+ join(dir, "package.json"),
209
+ join(dir, "node_modules", ...packagePath, "package.json")
287
210
  ]) {
288
211
  try {
289
- const value = JSON.parse(readFileSync2(manifest, "utf8"));
212
+ const value = JSON.parse(readFileSync(manifest, "utf8"));
290
213
  if (value.name === packageName && typeof value.version === "string") return value.version;
291
214
  } catch {
292
215
  }
293
216
  }
294
- const parent = dirname2(dir);
217
+ const parent = dirname(dir);
295
218
  if (parent === dir) break;
296
219
  dir = parent;
297
220
  }
@@ -327,11 +250,11 @@ var localImportsPresent = (entry, packageDir, seen = /* @__PURE__ */ new Set())
327
250
  if (seen.has(entry)) return true;
328
251
  seen.add(entry);
329
252
  try {
330
- const source = readFileSync2(entry, "utf8");
253
+ const source = readFileSync(entry, "utf8");
331
254
  for (const match of source.matchAll(/\b(?:import|export)\s+(?:[^"'()]*?\s+from\s+)?["'](\.{1,2}\/[^"']+)["']|\bimport\s*\(\s*["'](\.{1,2}\/[^"']+)["']/g)) {
332
- const dependency = resolve(dirname2(entry), match[1] ?? match[2]);
255
+ const dependency = resolve(dirname(entry), match[1] ?? match[2]);
333
256
  const localPath = relative(packageDir, dependency);
334
- if (localPath.startsWith("..") || isAbsolute(localPath) || !existsSync2(dependency)) return false;
257
+ if (localPath.startsWith("..") || isAbsolute(localPath) || !existsSync(dependency)) return false;
335
258
  if (/\.[cm]?js$/.test(dependency) && !localImportsPresent(dependency, packageDir, seen)) return false;
336
259
  }
337
260
  return true;
@@ -341,17 +264,17 @@ var localImportsPresent = (entry, packageDir, seen = /* @__PURE__ */ new Set())
341
264
  };
342
265
  var packageBinsPresent = (packageDir, prefix, platform = process.platform, requiredFiles = []) => {
343
266
  try {
344
- const manifest = JSON.parse(readFileSync2(join2(packageDir, "package.json"), "utf8"));
267
+ const manifest = JSON.parse(readFileSync(join(packageDir, "package.json"), "utf8"));
345
268
  if (!manifest.bin || typeof manifest.bin !== "object" || Array.isArray(manifest.bin)) return false;
346
269
  const bins = Object.entries(manifest.bin);
347
270
  if (bins.length === 0) return false;
348
- if (!requiredFiles.every((path) => existsSync2(join2(packageDir, path)))) return false;
271
+ if (!requiredFiles.every((path) => existsSync(join(packageDir, path)))) return false;
349
272
  const seen = /* @__PURE__ */ new Set();
350
273
  return bins.every(([name, target]) => {
351
274
  if (typeof target !== "string") return false;
352
- const shims = platform === "win32" ? [join2(prefix, `${name}.cmd`), join2(prefix, name)] : [join2(prefix, "bin", name)];
353
- const entry = join2(packageDir, target);
354
- return existsSync2(entry) && shims.some(existsSync2) && localImportsPresent(entry, packageDir, seen);
275
+ const shims = platform === "win32" ? [join(prefix, `${name}.cmd`), join(prefix, name)] : [join(prefix, "bin", name)];
276
+ const entry = join(packageDir, target);
277
+ return existsSync(entry) && shims.some(existsSync) && localImportsPresent(entry, packageDir, seen);
355
278
  });
356
279
  } catch {
357
280
  return false;
@@ -374,16 +297,16 @@ var globalPackageBinsPresent = (name, prefix, platform) => packageBinsPresent(gl
374
297
  var errorCode = (error) => typeof error === "object" && error !== null && "code" in error ? error.code : void 0;
375
298
  var realpathOrUndefined = (path) => {
376
299
  try {
377
- return realpathSync2(path);
300
+ return realpathSync(path);
378
301
  } catch {
379
302
  return void 0;
380
303
  }
381
304
  };
382
305
  var definedPaths = (paths) => paths.filter((path) => path !== void 0);
383
306
  var readPosixCommandLink = (prefix) => {
384
- const command = join2(prefix, "bin", OWNERSHIP_PROBE_COMMAND);
307
+ const command = join(prefix, "bin", OWNERSHIP_PROBE_COMMAND);
385
308
  try {
386
- const target = resolve(dirname2(command), readlinkSync(command));
309
+ const target = resolve(dirname(command), readlinkSync(command));
387
310
  return { kind: "resolved", targets: definedPaths([target, realpathOrUndefined(command)]) };
388
311
  } catch (error) {
389
312
  if (errorCode(error) === "ENOENT") return { kind: "absent" };
@@ -392,9 +315,9 @@ var readPosixCommandLink = (prefix) => {
392
315
  }
393
316
  };
394
317
  var readWindowsCommandLink = (prefix) => {
395
- const shim = join2(prefix, `${OWNERSHIP_PROBE_COMMAND}.cmd`);
318
+ const shim = join(prefix, `${OWNERSHIP_PROBE_COMMAND}.cmd`);
396
319
  try {
397
- const target = cmdShimTarget(prefix, readFileSync2(shim, "utf8"));
320
+ const target = cmdShimTarget(prefix, readFileSync(shim, "utf8"));
398
321
  return target === void 0 ? { kind: "unreadable" } : { kind: "resolved", targets: [target] };
399
322
  } catch (error) {
400
323
  return errorCode(error) === "ENOENT" ? { kind: "absent" } : { kind: "unreadable" };
@@ -403,7 +326,7 @@ var readWindowsCommandLink = (prefix) => {
403
326
  var readCommandLink = (prefix, platform) => platform === "win32" ? readWindowsCommandLink(prefix) : readPosixCommandLink(prefix);
404
327
  var readFolderManifest = (folder) => {
405
328
  try {
406
- return { kind: "read", manifest: JSON.parse(readFileSync2(join2(folder, "package.json"), "utf8")) };
329
+ return { kind: "read", manifest: JSON.parse(readFileSync(join(folder, "package.json"), "utf8")) };
407
330
  } catch {
408
331
  return { kind: "unreadable" };
409
332
  }
@@ -476,9 +399,9 @@ var installGlobally = (options) => {
476
399
  }
477
400
  const started = (async () => {
478
401
  if (!npmIsOnPath()) throw new NpmMissingError();
479
- const { withUpgradeLock } = await import("./global-upgrade-V6FA6MUF.js");
480
- const { installWithUpgradeLock, ownsUpgradeLock } = await import("./upgrade-lock-DLGVC34L.js");
481
- const { autoUpdateLock } = await import("./paths-2IEEYSHM.js");
402
+ const { withUpgradeLock } = await import("./global-upgrade-OOFEGR4H.js");
403
+ const { installWithUpgradeLock, ownsUpgradeLock } = await import("./upgrade-lock-BJKRXNMC.js");
404
+ const { autoUpdateLock } = await import("./paths-KFRRYJWL.js");
482
405
  let result = "skipped";
483
406
  const install = async () => {
484
407
  const platform = process.platform;
@@ -525,13 +448,6 @@ var atLeast = (version, floor) => compareVersion(version, floor) >= 0;
525
448
  var formatVersion = (version) => version.join(".");
526
449
 
527
450
  export {
528
- readJsonSafe,
529
- isFile,
530
- readFileOrMissing,
531
- backupFile,
532
- writeFileAtomic,
533
- writeJsonAtomic,
534
- writeJsonAtomicDurable,
535
451
  shellDoubleQuoted,
536
452
  parseVersion,
537
453
  compareVersion,
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  isFile
3
- } from "./chunk-BQHZRH6S.js";
3
+ } from "./chunk-QENTGE75.js";
4
4
 
5
5
  // src/claude-native-install.ts
6
6
  import { accessSync, constants } from "fs";
@@ -4,7 +4,7 @@ import {
4
4
  postLiveSession,
5
5
  postLiveSessionUntilAccepted,
6
6
  startLiveSessionHeartbeat
7
- } from "./chunk-KACD6W6J.js";
7
+ } from "./chunk-KDIZS7FN.js";
8
8
  import {
9
9
  CommandReceipts,
10
10
  controllerCommandSchema
@@ -14,24 +14,24 @@ import {
14
14
  describeIdleWindow,
15
15
  idleDeadlinePassed,
16
16
  startProcessOwnership
17
- } from "./chunk-T7G6IIV4.js";
18
- import {
19
- spawnClaude
20
- } from "./chunk-XHKBHWLX.js";
17
+ } from "./chunk-HHEFOGT2.js";
21
18
  import {
22
19
  repositoryScopeFor
23
- } from "./chunk-4QO267OY.js";
20
+ } from "./chunk-GV5TEADP.js";
24
21
  import {
25
22
  isAskUserResponse,
26
23
  isDecisionStopped,
27
24
  isWaitForAnswerResponse,
28
25
  withdrawQuestion,
29
26
  writeDegraded
30
- } from "./chunk-ZCYLCD6L.js";
27
+ } from "./chunk-CC4LGKEZ.js";
31
28
  import {
32
29
  callMcpTool,
33
30
  isRetryable
34
- } from "./chunk-V5DV7XZN.js";
31
+ } from "./chunk-PK6LBL3Z.js";
32
+ import {
33
+ spawnClaude
34
+ } from "./chunk-XHKBHWLX.js";
35
35
  import {
36
36
  AGENT_QUESTION_DESCRIPTION_MAX,
37
37
  AGENT_QUESTION_HEADER_MAX,
@@ -52,7 +52,7 @@ import {
52
52
  parseCodexQuestions,
53
53
  planElicitationAsk,
54
54
  readElicitationFields
55
- } from "./chunk-4FAJQPFY.js";
55
+ } from "./chunk-5YVBVJOH.js";
56
56
 
57
57
  // src/codex-question-owner.ts
58
58
  import { createHash } from "crypto";
@@ -1,15 +1,15 @@
1
1
  import {
2
2
  SETUP_FLAGS
3
- } from "./chunk-WVAJSBI2.js";
3
+ } from "./chunk-ZBT3U2VB.js";
4
4
  import {
5
5
  parseFlags
6
- } from "./chunk-NMUI3ZWG.js";
6
+ } from "./chunk-YPY4YCIZ.js";
7
7
  import {
8
8
  UsageError
9
- } from "./chunk-PPY5N2E6.js";
9
+ } from "./chunk-YU2EUD7O.js";
10
10
  import {
11
11
  NPX_LATEST_COMMAND
12
- } from "./chunk-PWGD5EP6.js";
12
+ } from "./chunk-YDT6TVGN.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-4FAJQPFY.js";
20
+ } from "./chunk-5YVBVJOH.js";
21
21
 
22
22
  // src/cli/cowork.ts
23
23
  import { readFileSync } from "fs";
@@ -1,19 +1,19 @@
1
1
  import {
2
2
  notificationAnswerStep
3
- } from "./chunk-O5ZKMUTP.js";
3
+ } from "./chunk-3KEY3453.js";
4
4
  import {
5
5
  canChangeApprovalSettings
6
- } from "./chunk-WYJ6QM7K.js";
6
+ } from "./chunk-4JBCPRWZ.js";
7
7
  import {
8
8
  matchMacAccountStep,
9
9
  retryAgentCommand
10
- } from "./chunk-JECH4NJL.js";
10
+ } from "./chunk-4QI6SBNR.js";
11
11
  import {
12
12
  EXIT
13
- } from "./chunk-KZERVKTD.js";
13
+ } from "./chunk-BG4HHB7E.js";
14
14
  import {
15
15
  NPX_LATEST_COMMAND
16
- } from "./chunk-PWGD5EP6.js";
16
+ } from "./chunk-YDT6TVGN.js";
17
17
 
18
18
  // src/setup/closing.ts
19
19
  var ACTIVITY_URL = "pushary.com/dashboard/agent/activity";
@@ -1,13 +1,13 @@
1
+ import {
2
+ configFilePath
3
+ } from "./chunk-3A7REECH.js";
1
4
  import {
2
5
  readJsonSafe,
3
6
  writeJsonAtomic
4
- } from "./chunk-BQHZRH6S.js";
5
- import {
6
- configFilePath
7
- } from "./chunk-KOUB4ZLX.js";
7
+ } from "./chunk-QENTGE75.js";
8
8
  import {
9
9
  readSetupOutcomeProperties
10
- } from "./chunk-4FAJQPFY.js";
10
+ } from "./chunk-5YVBVJOH.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;", "&");
@@ -4,24 +4,24 @@ import {
4
4
  outcomeOfFailedAsk,
5
5
  reportMachineDenial,
6
6
  storedWaitDeadline
7
- } from "./chunk-X3HBR57D.js";
7
+ } from "./chunk-RUN772MN.js";
8
8
  import {
9
9
  isGatingMoment,
10
10
  recordKeylessMoment
11
- } from "./chunk-4TVLPGJV.js";
11
+ } from "./chunk-6B4R7HUV.js";
12
12
  import {
13
13
  isAdmitted,
14
14
  readAdmissionRules
15
- } from "./chunk-SA4PCB6N.js";
15
+ } from "./chunk-I3T5YV5I.js";
16
16
  import {
17
17
  isDeferAnswer,
18
18
  oncePerSession
19
- } from "./chunk-CQ7QE4W2.js";
19
+ } from "./chunk-CFTPHNBY.js";
20
20
  import {
21
21
  activeHookSource,
22
22
  activeIdentity,
23
23
  namedSource
24
- } from "./chunk-UOE26LPT.js";
24
+ } from "./chunk-5BX57BGT.js";
25
25
  import {
26
26
  DEFAULT_SESSION,
27
27
  approvalAwaitingRetry,
@@ -37,7 +37,7 @@ import {
37
37
  recordBlockedActionHint,
38
38
  reportEvent,
39
39
  settleQuestionsForToolUse
40
- } from "./chunk-Z2TX7DVU.js";
40
+ } from "./chunk-UUYLBSAU.js";
41
41
  import {
42
42
  UNNAMED_ACTION,
43
43
  deriveAction,
@@ -48,11 +48,11 @@ import {
48
48
  patchDeletesFiles,
49
49
  permissionDeniedAction,
50
50
  scopePathFor
51
- } from "./chunk-MP3SEXXJ.js";
51
+ } from "./chunk-OFRQNTJD.js";
52
52
  import {
53
53
  repoKeyFor,
54
54
  repositoryScopeFor
55
- } from "./chunk-4QO267OY.js";
55
+ } from "./chunk-GV5TEADP.js";
56
56
  import {
57
57
  askUser,
58
58
  cancelQuestion,
@@ -69,20 +69,20 @@ import {
69
69
  waitForQuestion,
70
70
  waitsForThePhone,
71
71
  withdrawQuestion
72
- } from "./chunk-ZCYLCD6L.js";
72
+ } from "./chunk-CC4LGKEZ.js";
73
73
  import {
74
74
  getMachineId
75
- } from "./chunk-6N5DQG5F.js";
75
+ } from "./chunk-PYUN7HNY.js";
76
76
  import {
77
77
  claudeConfigDir
78
- } from "./chunk-O7ITTNDD.js";
78
+ } from "./chunk-AYWX6M7J.js";
79
79
  import {
80
80
  getApiKey,
81
81
  getBaseUrl
82
- } from "./chunk-KOUB4ZLX.js";
82
+ } from "./chunk-3A7REECH.js";
83
83
  import {
84
84
  NPX_LATEST_COMMAND
85
- } from "./chunk-PWGD5EP6.js";
85
+ } from "./chunk-YDT6TVGN.js";
86
86
  import {
87
87
  AGENT_QUESTION_STRATEGY,
88
88
  AGENT_QUESTION_TOOL,
@@ -139,7 +139,7 @@ import {
139
139
  terminalStaysLiveForTheCall,
140
140
  timeoutActionWithoutLocalPrompt,
141
141
  unansweredRefusalReason
142
- } from "./chunk-4FAJQPFY.js";
142
+ } from "./chunk-5YVBVJOH.js";
143
143
 
144
144
  // src/terminal-answer-watch.ts
145
145
  import { closeSync, openSync, readSync, statSync } from "fs";
@@ -1,9 +1,12 @@
1
1
  import {
2
2
  readMacAppAgentKey
3
- } from "./chunk-JKOAAIJD.js";
3
+ } from "./chunk-7RHEZVAE.js";
4
4
  import {
5
5
  API_KEYS_PATH
6
- } from "./chunk-WYJ6QM7K.js";
6
+ } from "./chunk-4JBCPRWZ.js";
7
+ import {
8
+ absoluteUrl
9
+ } from "./chunk-NGY2WS3X.js";
7
10
  import {
8
11
  findExportedKeyLines,
9
12
  isAdoptedMacAppKey,
@@ -13,13 +16,10 @@ import {
13
16
  readConfigFileKey,
14
17
  readKeySource,
15
18
  readMacAppKeyPrefix
16
- } from "./chunk-HYAQIKYB.js";
17
- import {
18
- absoluteUrl
19
- } from "./chunk-7BIVBOD5.js";
19
+ } from "./chunk-NKA2PEQQ.js";
20
20
  import {
21
21
  isValidApiKey
22
- } from "./chunk-4FAJQPFY.js";
22
+ } from "./chunk-5YVBVJOH.js";
23
23
 
24
24
  // src/key-revocation.ts
25
25
  var SELF_REVOKE_PATH = "/api/v1/server/keys/self/revoke";
@@ -2,7 +2,7 @@ import {
2
2
  DISCONNECT_AGENT_IDS,
3
3
  SETUP_AGENT_CHOICES,
4
4
  isApprovalMode
5
- } from "./chunk-4FAJQPFY.js";
5
+ } from "./chunk-5YVBVJOH.js";
6
6
 
7
7
  // src/cli/mode-request.ts
8
8
  var parseDuration = (value) => {
@@ -112,6 +112,12 @@ var COMMAND_LIST = [
112
112
  { name: "mode", module: "pushary-mode", summary: "Choose where approval requests appear" },
113
113
  { name: "wait", module: "pushary-wait", summary: 'Show or set the "wait for your phone" ladder (pushary wait 45)' },
114
114
  { name: "stats", module: "pushary-stats", summary: "Show the approval moments your agents hit while not connected" },
115
+ {
116
+ name: "audit",
117
+ module: "pushary-audit",
118
+ summary: "Check a verifiable audit export: every hash, every signature, and the checkpoints you verified before",
119
+ detail: ["Download the file from Dashboard > Agent > Activity > Verifiable, then run: pushary audit verify <file>"]
120
+ },
115
121
  {
116
122
  name: "suggestions",
117
123
  module: "pushary-suggestions",
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  UsageError
3
- } from "./chunk-PPY5N2E6.js";
3
+ } from "./chunk-YU2EUD7O.js";
4
4
 
5
5
  // src/cli/flags.ts
6
6
  var normalize = (raw) => raw.replace(/^--?/, "");
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  EXIT
3
- } from "./chunk-KZERVKTD.js";
3
+ } from "./chunk-BG4HHB7E.js";
4
4
 
5
5
  // src/cli/errors.ts
6
6
  var UsageError = class extends Error {
@@ -1,15 +1,15 @@
1
1
  import {
2
2
  parseFlags
3
- } from "./chunk-NMUI3ZWG.js";
3
+ } from "./chunk-YPY4YCIZ.js";
4
4
  import {
5
5
  UsageError
6
- } from "./chunk-PPY5N2E6.js";
6
+ } from "./chunk-YU2EUD7O.js";
7
7
  import {
8
8
  SETUP_AGENT_CHOICES,
9
9
  isSetupConnectMode,
10
10
  isValidApiKey,
11
11
  normalizeAgentId
12
- } from "./chunk-4FAJQPFY.js";
12
+ } from "./chunk-5YVBVJOH.js";
13
13
 
14
14
  // src/setup/options.ts
15
15
  var AGENT_CHOICES = SETUP_AGENT_CHOICES;
@@ -1,20 +1,20 @@
1
1
  import {
2
2
  openCodeConfigDirFrom
3
- } from "./chunk-PM34Z5WX.js";
3
+ } from "./chunk-RDUY7MKN.js";
4
4
  import {
5
5
  nativeClaudeInstallPath
6
- } from "./chunk-LURFSDCL.js";
6
+ } from "./chunk-VUFHYMSP.js";
7
7
  import {
8
8
  grokHome
9
- } from "./chunk-UOE26LPT.js";
9
+ } from "./chunk-5BX57BGT.js";
10
10
  import {
11
11
  claudeConfigDir,
12
12
  clineDataDirectory,
13
13
  codexHomeFrom
14
- } from "./chunk-O7ITTNDD.js";
14
+ } from "./chunk-AYWX6M7J.js";
15
15
  import {
16
16
  HOOK_COMPATIBLE_PROFILES
17
- } from "./chunk-4FAJQPFY.js";
17
+ } from "./chunk-5YVBVJOH.js";
18
18
 
19
19
  // src/vscode-config.ts
20
20
  import { homedir } from "os";
@@ -22,22 +22,23 @@ import {
22
22
  turnCodexAppCardsOff,
23
23
  turnCodexAppCardsOn,
24
24
  whyLaunchctlFailed
25
- } from "./chunk-UQWEH7CK.js";
26
- import "./chunk-Y3SZVZF6.js";
25
+ } from "./chunk-TMJK3CLD.js";
26
+ import "./chunk-N4RIGNDX.js";
27
27
  import "./chunk-XCEN33UP.js";
28
28
  import "./chunk-QCGNGEGE.js";
29
- import "./chunk-NZQEABRO.js";
29
+ import "./chunk-OPV6724W.js";
30
30
  import "./chunk-XHKBHWLX.js";
31
- import "./chunk-HYAQIKYB.js";
32
- import "./chunk-E46NE7FB.js";
33
- import "./chunk-6N5DQG5F.js";
34
- import "./chunk-AFGMZZEB.js";
35
- import "./chunk-O7ITTNDD.js";
36
- import "./chunk-BQHZRH6S.js";
37
- import "./chunk-KOUB4ZLX.js";
38
- import "./chunk-PWGD5EP6.js";
31
+ import "./chunk-PYUN7HNY.js";
32
+ import "./chunk-NKA2PEQQ.js";
33
+ import "./chunk-FH6PHTUD.js";
34
+ import "./chunk-AYWX6M7J.js";
35
+ import "./chunk-VAZCGOLS.js";
36
+ import "./chunk-3A7REECH.js";
37
+ import "./chunk-QENTGE75.js";
38
+ import "./chunk-YDT6TVGN.js";
39
39
  import "./chunk-ZVU6WMMU.js";
40
- import "./chunk-4FAJQPFY.js";
40
+ import "./chunk-5YVBVJOH.js";
41
+ import "./chunk-E46NE7FB.js";
41
42
  import "./chunk-MLKGABMK.js";
42
43
  export {
43
44
  CODEX_APP_CARDS_DIRECTORY,
@@ -11,7 +11,7 @@ import {
11
11
  installedCodexApp,
12
12
  shellQuoted,
13
13
  writeDesktopProxy
14
- } from "./chunk-Y3SZVZF6.js";
14
+ } from "./chunk-N4RIGNDX.js";
15
15
  import "./chunk-XCEN33UP.js";
16
16
  import {
17
17
  CODEX_APP_LAUNCH_VARIABLE