@pushary/agent-hooks 1.9.79 → 1.9.81

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 (131) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/README.md +4 -4
  3. package/data/SKILL.md +12 -16
  4. package/data/cursor-plugin/README.md +1 -1
  5. package/data/cursor-plugin/skills/pushary/SKILL.md +11 -15
  6. package/data/vscode-plugin/README.md +1 -1
  7. package/data/vscode-plugin/skills/pushary/SKILL.md +11 -15
  8. package/dist/{api-T6DRYZOD.js → api-VFUZ5HBR.js} +10 -10
  9. package/dist/bin/pushary-bell-hook.js +25 -25
  10. package/dist/bin/pushary-bell.js +10 -10
  11. package/dist/bin/pushary-claude.js +26 -26
  12. package/dist/bin/pushary-clean.js +34 -34
  13. package/dist/bin/pushary-codex-bridge.js +21 -21
  14. package/dist/bin/pushary-codex-hook.js +30 -30
  15. package/dist/bin/pushary-codex-session.js +8 -8
  16. package/dist/bin/pushary-codex.js +13 -13
  17. package/dist/bin/pushary-connect.js +26 -26
  18. package/dist/bin/pushary-cowork.js +5 -5
  19. package/dist/bin/pushary-daemon.js +38 -38
  20. package/dist/bin/pushary-disconnect.js +25 -25
  21. package/dist/bin/pushary-display-hook.js +16 -16
  22. package/dist/bin/pushary-doctor.js +41 -41
  23. package/dist/bin/pushary-elicitation-hook.js +25 -25
  24. package/dist/bin/pushary-gemini-bridge.js +15 -15
  25. package/dist/bin/pushary-gemini-hook.js +27 -27
  26. package/dist/bin/pushary-hook.js +29 -29
  27. package/dist/bin/pushary-login.js +20 -20
  28. package/dist/bin/pushary-logout.js +24 -24
  29. package/dist/bin/pushary-mcp.js +11 -11
  30. package/dist/bin/pushary-mode.js +15 -15
  31. package/dist/bin/pushary-notification-hook.js +24 -24
  32. package/dist/bin/pushary-opencode-hook.js +26 -26
  33. package/dist/bin/pushary-permission-denied-hook.js +29 -29
  34. package/dist/bin/pushary-permission-hook.js +29 -29
  35. package/dist/bin/pushary-post-hook.js +24 -24
  36. package/dist/bin/pushary-prompt-hook.js +24 -24
  37. package/dist/bin/pushary-session-end-hook.js +26 -26
  38. package/dist/bin/pushary-session-start-hook.js +34 -34
  39. package/dist/bin/pushary-setup.js +48 -56
  40. package/dist/bin/pushary-stats.js +5 -5
  41. package/dist/bin/pushary-status.js +31 -31
  42. package/dist/bin/pushary-stop-hook.js +24 -24
  43. package/dist/bin/pushary-stopfailure-hook.js +24 -24
  44. package/dist/bin/pushary-suggestions.js +15 -15
  45. package/dist/bin/pushary-transcript-register.js +16 -16
  46. package/dist/bin/pushary-transcripts.js +18 -18
  47. package/dist/bin/pushary-upgrade.js +39 -39
  48. package/dist/bin/pushary-wait.js +15 -15
  49. package/dist/bin/pushary.js +7 -7
  50. package/dist/{chunk-TRVJ6MS5.js → chunk-35S7VB26.js} +5 -5
  51. package/dist/{chunk-OJS32QPK.js → chunk-3BFCJZBU.js} +1 -1
  52. package/dist/{chunk-UGP4FYMV.js → chunk-3YOXBN7V.js} +4 -4
  53. package/dist/{chunk-VER45SAA.js → chunk-47RUEZZA.js} +5 -5
  54. package/dist/{chunk-WJVQOAZY.js → chunk-4TR4G7A4.js} +1 -1
  55. package/dist/{chunk-O7WSNZIR.js → chunk-5WC7TXSS.js} +13 -13
  56. package/dist/{chunk-RDXNJSXM.js → chunk-5WIVX2NN.js} +3 -3
  57. package/dist/{chunk-CH3CCVH4.js → chunk-74QJBFMG.js} +2 -2
  58. package/dist/{chunk-LXV53WHO.js → chunk-7JU6DPO7.js} +3 -3
  59. package/dist/{chunk-CX6EIW3N.js → chunk-7WCB2BC4.js} +7 -7
  60. package/dist/{chunk-V3EN7LWU.js → chunk-ALTTZKDU.js} +6 -6
  61. package/dist/{chunk-KLE2ZMSJ.js → chunk-AZV3DQQU.js} +16 -10
  62. package/dist/{chunk-MVAP3NRX.js → chunk-B2HMISVL.js} +2 -2
  63. package/dist/{chunk-PZ3OFAZ7.js → chunk-BB4W35D6.js} +10 -10
  64. package/dist/{chunk-ANNRW6VU.js → chunk-BYFFELB3.js} +6 -6
  65. package/dist/{chunk-SNQ5HQHE.js → chunk-CRKODLLY.js} +1 -1
  66. package/dist/{chunk-WA4S6YAT.js → chunk-DF7A5AWF.js} +3 -3
  67. package/dist/{chunk-L7FBI7N7.js → chunk-DLBUDQEE.js} +4 -4
  68. package/dist/{chunk-QZ5KIX6U.js → chunk-DPP3ZCEE.js} +2 -2
  69. package/dist/{chunk-IPIJY4TI.js → chunk-ER4UCECJ.js} +1 -1
  70. package/dist/{chunk-63JW566T.js → chunk-ESS7CW3I.js} +5 -5
  71. package/dist/{chunk-IYKY3ZAV.js → chunk-FIMSM5SW.js} +2 -2
  72. package/dist/{chunk-ERC6QW27.js → chunk-GOYYPBBJ.js} +3 -3
  73. package/dist/{chunk-Z7AIEIM5.js → chunk-HG5EUDF3.js} +2 -2
  74. package/dist/{chunk-AFNLCEHM.js → chunk-HNUK557P.js} +3 -3
  75. package/dist/{chunk-WB5PC4TL.js → chunk-IA53GEP5.js} +5 -5
  76. package/dist/{chunk-Q7J77QL2.js → chunk-ID46TTYS.js} +3 -3
  77. package/dist/{chunk-XKJYTP3G.js → chunk-IO3OLTED.js} +5 -5
  78. package/dist/{chunk-BH7XLF5R.js → chunk-IQQQ2LGB.js} +5 -5
  79. package/dist/{chunk-CLE7EVOW.js → chunk-IS5YVKUX.js} +31 -4
  80. package/dist/{chunk-TDW5LI6P.js → chunk-IXVMMDIG.js} +3 -3
  81. package/dist/{chunk-ZU7XS6PN.js → chunk-JTO6UPTJ.js} +2 -2
  82. package/dist/{chunk-5HA42EV4.js → chunk-JTYZEP4Q.js} +1 -1
  83. package/dist/{chunk-ZJGIJDWP.js → chunk-JXE4UQFJ.js} +3 -3
  84. package/dist/{chunk-4NRT3CEF.js → chunk-K5QN6V5K.js} +3 -3
  85. package/dist/{chunk-EUW7JL2K.js → chunk-K6ZOH6P7.js} +13 -6
  86. package/dist/{chunk-CSJD7NN6.js → chunk-KERGWHCK.js} +6 -6
  87. package/dist/{chunk-3K67QTMR.js → chunk-KXSZ43Z6.js} +9 -9
  88. package/dist/{chunk-4DSCZINL.js → chunk-LFEJVQWI.js} +6 -6
  89. package/dist/{chunk-5NWAWDRM.js → chunk-LJ4TUZJV.js} +6 -6
  90. package/dist/{chunk-QATBJHE6.js → chunk-LJFB5ZJ4.js} +4 -4
  91. package/dist/{chunk-7R5ZKOQ4.js → chunk-M5XNFUXN.js} +1 -1
  92. package/dist/{chunk-WBC2ZXU7.js → chunk-NK3I2QQA.js} +4 -4
  93. package/dist/{chunk-GXW43S4A.js → chunk-NPBPH7KI.js} +2 -2
  94. package/dist/{chunk-CB2Y4GEH.js → chunk-NVEDZZ3V.js} +10 -10
  95. package/dist/{chunk-AFCKBLEG.js → chunk-ONUAAXAW.js} +1 -1
  96. package/dist/{chunk-A2OAJ7CS.js → chunk-PJ26BODT.js} +1 -1
  97. package/dist/{chunk-RQOJ23I4.js → chunk-QNEWV4JV.js} +1 -1
  98. package/dist/{chunk-IEJOZQ7N.js → chunk-QZ666HLH.js} +5 -5
  99. package/dist/{chunk-AVCPF3VS.js → chunk-RVC7OSC7.js} +1 -1
  100. package/dist/{chunk-EKVW5Y23.js → chunk-SEVGKJ7K.js} +4 -4
  101. package/dist/{chunk-BLG7OEX4.js → chunk-SFUJLUBM.js} +1 -1
  102. package/dist/{chunk-Q5J33E43.js → chunk-TJZIUFWK.js} +6 -6
  103. package/dist/{chunk-35M6YE6T.js → chunk-TTTK44RK.js} +3 -5
  104. package/dist/{chunk-NFRBLMM2.js → chunk-UUASO2FU.js} +4 -4
  105. package/dist/{chunk-236NGCTH.js → chunk-VII55DVC.js} +2 -2
  106. package/dist/{chunk-5MKPJ3WR.js → chunk-VK2CHU3L.js} +1 -1
  107. package/dist/{chunk-3D3L4ULT.js → chunk-VYRJAPZ6.js} +3 -3
  108. package/dist/{chunk-XU2FL4B6.js → chunk-W3VRQEL3.js} +2 -2
  109. package/dist/{chunk-HGCUZQUL.js → chunk-WG67W43Y.js} +0 -1
  110. package/dist/{chunk-J3QUMD2E.js → chunk-WPGSQRMW.js} +2 -2
  111. package/dist/{chunk-DLPFYJ7G.js → chunk-X2P3O4PX.js} +1 -1
  112. package/dist/{chunk-C7BK5C6K.js → chunk-X772USE7.js} +4 -4
  113. package/dist/{chunk-X7JGHARV.js → chunk-YAAJ3VZA.js} +6 -6
  114. package/dist/{chunk-7BALOMAV.js → chunk-YIKIQ6YN.js} +3 -3
  115. package/dist/{chunk-P2PPAW5E.js → chunk-YNWEE2WC.js} +1 -1
  116. package/dist/{chunk-LTQJ2IMO.js → chunk-ZBST77LF.js} +3 -3
  117. package/dist/{chunk-7OSGGPBR.js → chunk-ZBYZCM6Y.js} +2 -2
  118. package/dist/{chunk-5HMSHKZT.js → chunk-ZIJKTWNO.js} +1 -1
  119. package/dist/{codex-app-cards-switch-OWLU462R.js → codex-app-cards-switch-ZL6OHUXQ.js} +11 -11
  120. package/dist/{codex-desktop-launch-G37GNF4B.js → codex-desktop-launch-LQF5CPKU.js} +1 -1
  121. package/dist/{codex-session-launch-AV2AL64X.js → codex-session-launch-5WBL5YHX.js} +18 -18
  122. package/dist/{config-PXISW4O5.js → config-MZDRETL2.js} +3 -3
  123. package/dist/{global-upgrade-JWI5XIZP.js → global-upgrade-HDDPHNGX.js} +10 -10
  124. package/dist/{identity-JAXJ3FOD.js → identity-RNZLFMKW.js} +4 -4
  125. package/dist/{live-capabilities-7PPQ2HPU.js → live-capabilities-Y2Q5QBVK.js} +5 -5
  126. package/dist/{paths-YV3ZK5LT.js → paths-WILX6YI3.js} +3 -3
  127. package/dist/{reapply-YHJHUTFY.js → reapply-KF7ZZSA2.js} +27 -27
  128. package/dist/src/index.js +28 -28
  129. package/dist/{upgrade-lock-I4JPC4WG.js → upgrade-lock-7Q4VWMDA.js} +4 -4
  130. package/dist/{usage-FZTPRQRP.js → usage-MSILPJVQ.js} +3 -3
  131. package/package.json +1 -1
@@ -1,15 +1,15 @@
1
1
  import {
2
2
  compatibleConfigFile
3
- } from "./chunk-NFRBLMM2.js";
3
+ } from "./chunk-UUASO2FU.js";
4
4
  import {
5
5
  hookOwnerOf,
6
6
  hookOwnerOfCommands,
7
7
  liveBridgeProbe,
8
8
  resolveBridgeStub
9
- } from "./chunk-C7BK5C6K.js";
9
+ } from "./chunk-X772USE7.js";
10
10
  import {
11
11
  AGENT_CHOICES
12
- } from "./chunk-ZJGIJDWP.js";
12
+ } from "./chunk-JXE4UQFJ.js";
13
13
  import {
14
14
  claudeSettings,
15
15
  codexHooksJson,
@@ -18,10 +18,10 @@ import {
18
18
  guardedArgv,
19
19
  pusharyDir,
20
20
  vscodePluginDir
21
- } from "./chunk-MVAP3NRX.js";
21
+ } from "./chunk-B2HMISVL.js";
22
22
  import {
23
23
  readJsonSafe
24
- } from "./chunk-CLE7EVOW.js";
24
+ } from "./chunk-IS5YVKUX.js";
25
25
  import {
26
26
  HOOK_BUDGETS,
27
27
  HOOK_COMPATIBLE_PROFILES,
@@ -29,7 +29,7 @@ import {
29
29
  OPENCODE_APPROVAL_EVENT,
30
30
  hookCompatibleProfile,
31
31
  isRecord
32
- } from "./chunk-HGCUZQUL.js";
32
+ } from "./chunk-WG67W43Y.js";
33
33
 
34
34
  // src/opencode-plugin.ts
35
35
  var OPENCODE_PLUGIN_MARKER = "pushary-opencode-plugin w1";
@@ -12,7 +12,7 @@ import {
12
12
  reachVerdict,
13
13
  reachesYou,
14
14
  verifyDelivery
15
- } from "./chunk-X7JGHARV.js";
15
+ } from "./chunk-YAAJ3VZA.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-GXW43S4A.js";
27
+ } from "./chunk-NPBPH7KI.js";
28
28
  import {
29
29
  NPX_LATEST_COMMAND
30
- } from "./chunk-35M6YE6T.js";
30
+ } from "./chunk-TTTK44RK.js";
31
31
  import {
32
32
  NO_PAIRING_COMPUTER,
33
33
  PAIR_TTL_SECONDS
34
- } from "./chunk-HGCUZQUL.js";
34
+ } from "./chunk-WG67W43Y.js";
35
35
 
36
36
  // src/onboarding.ts
37
37
  import qrcodeTerminal from "qrcode-terminal";
@@ -424,15 +424,11 @@ var PAIR_POLL_INTERVAL_MS = 2e3;
424
424
  var PAIR_STOP_BEFORE_EXPIRY_MS = 1e4;
425
425
  var PAIR_TIMEOUT_MS = PAIR_TTL_SECONDS * 1e3 - PAIR_STOP_BEFORE_EXPIRY_MS;
426
426
  var PAIR_HINT_AFTER_MS = 45e3;
427
- var PAIR_BROWSER_FALLBACK_AFTER_MS = 6e4;
428
- var BROWSER_CONNECT_COMMAND = `${NPX_LATEST_COMMAND} setup --connect browser`;
429
- var PAIR_BROWSER_FALLBACK_LINE = `Still waiting? Ctrl-C, then: ${BROWSER_CONNECT_COMMAND}`;
430
427
  var PAIR_INSTALL_HINT = "No app yet? Install it, sign in, then scan the QR above. Ctrl-C to stop.";
431
428
  var PAIR_WAITING_LABEL = "Waiting for the app to authorize";
432
429
  var PAIR_ADVICE_ROTATION_MS = 5e3;
433
430
  var PAIR_ADVICE = [
434
- { afterMs: PAIR_HINT_AFTER_MS, text: PAIR_INSTALL_HINT },
435
- { afterMs: PAIR_BROWSER_FALLBACK_AFTER_MS, text: PAIR_BROWSER_FALLBACK_LINE }
431
+ { afterMs: PAIR_HINT_AFTER_MS, text: PAIR_INSTALL_HINT }
436
432
  ];
437
433
  var adviceDueAt = (elapsedMs) => PAIR_ADVICE.filter((advice) => elapsedMs >= advice.afterMs);
438
434
  var pairAdviceDue = (elapsedMs) => adviceDueAt(elapsedMs).map((advice) => advice.text);
@@ -445,6 +441,16 @@ var pairWaitingLabel = (elapsedMs, minutesLeft) => {
445
441
  return labels[Math.floor((elapsedMs - newest.afterMs) / PAIR_ADVICE_ROTATION_MS) % labels.length] ?? PAIR_WAITING_LABEL;
446
442
  };
447
443
  var PAIR_GET_APP_LINE = "No app yet? Get it at pushary.com/download. Setup keeps waiting.";
444
+ var PAIRING_ESCAPE_APP_URL = "https://pushary.com/download";
445
+ var PAIRING_ESCAPE_KEY_COMMAND = `${NPX_LATEST_COMMAND} setup --key pk_...`;
446
+ var PAIRING_ESCAPE_KEY_PAGE = "pushary.com/dashboard/agent/settings";
447
+ var describePairingEscape = () => [
448
+ `${yellow("!")} No app yet? Get it at ${cyan(PAIRING_ESCAPE_APP_URL)}, then run setup again.`,
449
+ "",
450
+ ` ${dim("Already have a key? Use it instead:")}`,
451
+ ` ${cyan(PAIRING_ESCAPE_KEY_COMMAND)}`,
452
+ ` ${dim("Find it at")} ${cyan(PAIRING_ESCAPE_KEY_PAGE)}`
453
+ ];
448
454
  var describePairingScreen = (screen) => [
449
455
  bold("Connect your phone"),
450
456
  "Scan this with your phone's camera or the Pushary app.",
@@ -718,7 +724,7 @@ export {
718
724
  confirmAppConnection,
719
725
  connectExistingApp,
720
726
  printConnectInstructions,
721
- BROWSER_CONNECT_COMMAND,
727
+ describePairingEscape,
722
728
  pairingEscapeApplies,
723
729
  connectViaAppPairing,
724
730
  waitForYourPhone
@@ -4,7 +4,7 @@ import {
4
4
  quoteIfNeeded,
5
5
  shellDoubleQuoted,
6
6
  writeFileAtomic
7
- } from "./chunk-CLE7EVOW.js";
7
+ } from "./chunk-IS5YVKUX.js";
8
8
  import {
9
9
  CLAUDE_PRETOOLUSE_MATCHER,
10
10
  CODEX_QUESTION_TOOLS,
@@ -12,7 +12,7 @@ import {
12
12
  HOOK_LOCATOR_BINARY,
13
13
  PRETOOLUSE_GATED_TOOLS,
14
14
  withHookHoldBudget
15
- } from "./chunk-HGCUZQUL.js";
15
+ } from "./chunk-WG67W43Y.js";
16
16
 
17
17
  // src/setup/paths.ts
18
18
  import { createHash as createHash2 } from "crypto";
@@ -3,16 +3,16 @@ import {
3
3
  loadPin,
4
4
  savePin,
5
5
  verifyRecipients
6
- } from "./chunk-BLG7OEX4.js";
6
+ } from "./chunk-SFUJLUBM.js";
7
7
  import {
8
8
  SESSION_HISTORY_RETENTION_DAYS
9
9
  } from "./chunk-MHUKYYYR.js";
10
10
  import {
11
11
  ensureDaemonRunning
12
- } from "./chunk-Q5J33E43.js";
12
+ } from "./chunk-TJZIUFWK.js";
13
13
  import {
14
14
  hookOwnerOf
15
- } from "./chunk-C7BK5C6K.js";
15
+ } from "./chunk-X772USE7.js";
16
16
  import {
17
17
  buildTranscriptRecords,
18
18
  decodePublicKey,
@@ -23,37 +23,37 @@ import {
23
23
  recordSealerFor,
24
24
  uploadTranscriptRecords,
25
25
  wrapSessionKey
26
- } from "./chunk-XU2FL4B6.js";
26
+ } from "./chunk-W3VRQEL3.js";
27
27
  import {
28
28
  external_exports
29
29
  } from "./chunk-XMSDA5WA.js";
30
30
  import {
31
31
  transcriptEnvironmentPreference,
32
32
  transcriptsEnabled
33
- } from "./chunk-AVCPF3VS.js";
33
+ } from "./chunk-RVC7OSC7.js";
34
34
  import {
35
35
  readTranscriptPreference
36
- } from "./chunk-UGP4FYMV.js";
36
+ } from "./chunk-3YOXBN7V.js";
37
37
  import {
38
38
  claudeConfigDir,
39
39
  codexHome,
40
40
  pusharyDir
41
- } from "./chunk-MVAP3NRX.js";
41
+ } from "./chunk-B2HMISVL.js";
42
42
  import {
43
43
  writeJsonAtomic,
44
44
  writeJsonAtomicDurable
45
- } from "./chunk-CLE7EVOW.js";
45
+ } from "./chunk-IS5YVKUX.js";
46
46
  import {
47
47
  getApiKey,
48
48
  getBaseUrl
49
- } from "./chunk-AFCKBLEG.js";
49
+ } from "./chunk-ONUAAXAW.js";
50
50
  import {
51
51
  PENDING_COMMAND_PREFIX,
52
52
  SESSION_HISTORY_BACKFILL_LIMIT_BYTES,
53
53
  canonicalJsonText,
54
54
  isRecord,
55
55
  redactSecretsFromContent
56
- } from "./chunk-HGCUZQUL.js";
56
+ } from "./chunk-WG67W43Y.js";
57
57
 
58
58
  // src/transcript-registration.ts
59
59
  import { createHash as createHash4 } from "crypto";
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  announceSubscriptionRequired,
3
3
  isDeferAnswer
4
- } from "./chunk-5HMSHKZT.js";
4
+ } from "./chunk-ZIJKTWNO.js";
5
5
  import {
6
6
  AUTO_DECISION_WINDOW_MS,
7
7
  DEFAULT_SESSION,
@@ -10,19 +10,19 @@ import {
10
10
  permissionDeniedAction,
11
11
  releaseThrottle,
12
12
  reportEvent
13
- } from "./chunk-3K67QTMR.js";
13
+ } from "./chunk-KXSZ43Z6.js";
14
14
  import {
15
15
  askUser,
16
16
  isDecisionStopped,
17
17
  isQuestionLimitRefusal,
18
18
  waitForQuestion
19
- } from "./chunk-BH7XLF5R.js";
19
+ } from "./chunk-IQQQ2LGB.js";
20
20
  import {
21
21
  SubscriptionRequiredError
22
- } from "./chunk-EKVW5Y23.js";
22
+ } from "./chunk-SEVGKJ7K.js";
23
23
  import {
24
24
  getMachineId
25
- } from "./chunk-J3QUMD2E.js";
25
+ } from "./chunk-WPGSQRMW.js";
26
26
  import {
27
27
  ASK_CONTEXT_MAX,
28
28
  agentQuestionContext,
@@ -34,7 +34,7 @@ import {
34
34
  questionsShownAsASet,
35
35
  shouldDeferToNativeMode,
36
36
  wireVerdictFor
37
- } from "./chunk-HGCUZQUL.js";
37
+ } from "./chunk-WG67W43Y.js";
38
38
 
39
39
  // src/machine-decision-audit.ts
40
40
  import { basename } from "path";
@@ -3,7 +3,7 @@ import {
3
3
  } from "./chunk-KZERVKTD.js";
4
4
  import {
5
5
  renderCommandHelp
6
- } from "./chunk-35M6YE6T.js";
6
+ } from "./chunk-TTTK44RK.js";
7
7
  import {
8
8
  getPackageVersion
9
9
  } from "./chunk-QTOLNRET.js";
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  findNativeClaudeInstall
3
- } from "./chunk-RQOJ23I4.js";
3
+ } from "./chunk-QNEWV4JV.js";
4
4
  import {
5
5
  parseVersion
6
- } from "./chunk-CLE7EVOW.js";
6
+ } from "./chunk-IS5YVKUX.js";
7
7
  import {
8
8
  isRecord
9
- } from "./chunk-HGCUZQUL.js";
9
+ } from "./chunk-WG67W43Y.js";
10
10
 
11
11
  // src/setup/agent-probe.ts
12
12
  import { execSync } from "child_process";
@@ -1,19 +1,19 @@
1
1
  import {
2
2
  notificationAnswerStep
3
- } from "./chunk-X7JGHARV.js";
3
+ } from "./chunk-YAAJ3VZA.js";
4
4
  import {
5
5
  canChangeApprovalSettings
6
- } from "./chunk-ZU7XS6PN.js";
6
+ } from "./chunk-JTO6UPTJ.js";
7
7
  import {
8
8
  matchMacAccountStep,
9
9
  retryAgentCommand
10
- } from "./chunk-3D3L4ULT.js";
10
+ } from "./chunk-VYRJAPZ6.js";
11
11
  import {
12
12
  EXIT
13
13
  } from "./chunk-KZERVKTD.js";
14
14
  import {
15
15
  NPX_LATEST_COMMAND
16
- } from "./chunk-35M6YE6T.js";
16
+ } from "./chunk-TTTK44RK.js";
17
17
 
18
18
  // src/setup/closing.ts
19
19
  var ACTIVITY_URL = "pushary.com/dashboard/agent/activity";
@@ -7,10 +7,10 @@ import {
7
7
  codexHome,
8
8
  codexHooksJsonIn,
9
9
  isPusharyCodexCommand
10
- } from "./chunk-MVAP3NRX.js";
10
+ } from "./chunk-B2HMISVL.js";
11
11
  import {
12
12
  resolvePathBinary
13
- } from "./chunk-CLE7EVOW.js";
13
+ } from "./chunk-IS5YVKUX.js";
14
14
  import {
15
15
  getPackageVersion
16
16
  } from "./chunk-QTOLNRET.js";
@@ -7,7 +7,7 @@ import {
7
7
  } from "./chunk-KZERVKTD.js";
8
8
  import {
9
9
  redactSecretsFromContent
10
- } from "./chunk-HGCUZQUL.js";
10
+ } from "./chunk-WG67W43Y.js";
11
11
 
12
12
  // src/cli/json.ts
13
13
  var writeStdoutFully = (text) => new Promise((resolve, reject) => {
@@ -1,20 +1,20 @@
1
1
  import {
2
2
  openCodeConfigDirFrom
3
- } from "./chunk-V3EN7LWU.js";
3
+ } from "./chunk-ALTTZKDU.js";
4
4
  import {
5
5
  nativeClaudeInstallPath
6
- } from "./chunk-RQOJ23I4.js";
6
+ } from "./chunk-QNEWV4JV.js";
7
7
  import {
8
8
  grokHome
9
- } from "./chunk-NFRBLMM2.js";
9
+ } from "./chunk-UUASO2FU.js";
10
10
  import {
11
11
  claudeConfigDir,
12
12
  clineDataDirectory,
13
13
  codexHomeFrom
14
- } from "./chunk-MVAP3NRX.js";
14
+ } from "./chunk-B2HMISVL.js";
15
15
  import {
16
16
  HOOK_COMPATIBLE_PROFILES
17
- } from "./chunk-HGCUZQUL.js";
17
+ } from "./chunk-WG67W43Y.js";
18
18
 
19
19
  // src/vscode-config.ts
20
20
  import { homedir } from "os";
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  findNativeClaudeInstall
3
- } from "./chunk-RQOJ23I4.js";
3
+ } from "./chunk-QNEWV4JV.js";
4
4
  import {
5
5
  isFile
6
- } from "./chunk-CLE7EVOW.js";
6
+ } from "./chunk-IS5YVKUX.js";
7
7
 
8
8
  // src/wrapper/claudeBinary.ts
9
9
  import { homedir } from "os";
@@ -9,20 +9,20 @@ import {
9
9
  installedCodexApp,
10
10
  readCodexAppRuntime,
11
11
  shellQuoted
12
- } from "./chunk-236NGCTH.js";
12
+ } from "./chunk-VII55DVC.js";
13
13
  import {
14
14
  writeHuman
15
15
  } from "./chunk-QCGNGEGE.js";
16
16
  import {
17
17
  xml
18
- } from "./chunk-Q5J33E43.js";
18
+ } from "./chunk-TJZIUFWK.js";
19
19
  import {
20
20
  CODEX_APP_LAUNCH_AT_LOGIN_VERB,
21
21
  CODEX_APP_LAUNCH_VARIABLE
22
22
  } from "./chunk-E46NE7FB.js";
23
23
  import {
24
24
  writeFileAtomic
25
- } from "./chunk-CLE7EVOW.js";
25
+ } from "./chunk-IS5YVKUX.js";
26
26
 
27
27
  // src/codex-app-cards-switch.ts
28
28
  import { execFileSync as execFileSync2 } from "child_process";
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  parseSseMessages
3
- } from "./chunk-EKVW5Y23.js";
3
+ } from "./chunk-SEVGKJ7K.js";
4
4
  import {
5
5
  NPX_LATEST_COMMAND
6
- } from "./chunk-35M6YE6T.js";
6
+ } from "./chunk-TTTK44RK.js";
7
7
 
8
8
  // src/mcp-stdio-bridge.ts
9
9
  var MCP_BRIDGE_BINARY = "pushary-mcp";
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  pusharyFetch
3
- } from "./chunk-Q7J77QL2.js";
3
+ } from "./chunk-ID46TTYS.js";
4
4
  import {
5
5
  getBaseUrl
6
- } from "./chunk-AFCKBLEG.js";
6
+ } from "./chunk-ONUAAXAW.js";
7
7
  import {
8
8
  NetworkError
9
9
  } from "./chunk-PPY5N2E6.js";
@@ -13,7 +13,7 @@ import {
13
13
  import {
14
14
  isValidApiKey,
15
15
  normalizeKeyScope
16
- } from "./chunk-HGCUZQUL.js";
16
+ } from "./chunk-WG67W43Y.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;
@@ -3,24 +3,24 @@ import {
3
3
  expectedLaunchCapabilities,
4
4
  hasSpawnProvider,
5
5
  resolveControlPolicy
6
- } from "./chunk-WBC2ZXU7.js";
6
+ } from "./chunk-NK3I2QQA.js";
7
7
  import {
8
8
  daemonHasRemoteProof,
9
9
  daemonServiceManagerAvailable,
10
10
  hasDaemonServiceDefinition,
11
11
  readDaemonNeedsLogin,
12
12
  readDaemonStatus
13
- } from "./chunk-Q5J33E43.js";
13
+ } from "./chunk-TJZIUFWK.js";
14
14
  import {
15
15
  readControlMode,
16
16
  readKeySource
17
- } from "./chunk-UGP4FYMV.js";
17
+ } from "./chunk-3YOXBN7V.js";
18
18
  import {
19
19
  getMachineId
20
- } from "./chunk-J3QUMD2E.js";
20
+ } from "./chunk-WPGSQRMW.js";
21
21
  import {
22
22
  getBaseUrl
23
- } from "./chunk-AFCKBLEG.js";
23
+ } from "./chunk-ONUAAXAW.js";
24
24
  import {
25
25
  getPackageVersion
26
26
  } from "./chunk-QTOLNRET.js";
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  readExistingMachineId
3
- } from "./chunk-J3QUMD2E.js";
3
+ } from "./chunk-WPGSQRMW.js";
4
4
  import {
5
5
  getBaseUrl
6
- } from "./chunk-AFCKBLEG.js";
6
+ } from "./chunk-ONUAAXAW.js";
7
7
  import {
8
8
  NetworkError
9
9
  } from "./chunk-PPY5N2E6.js";
@@ -13,7 +13,7 @@ import {
13
13
  import {
14
14
  clientContextHeaders,
15
15
  redactSecretsFromContent
16
- } from "./chunk-HGCUZQUL.js";
16
+ } from "./chunk-WG67W43Y.js";
17
17
 
18
18
  // src/cli/net.ts
19
19
  import { createRequire } from "module";
@@ -5,19 +5,19 @@ import {
5
5
  hermesAppWiringRecord,
6
6
  hermesConfigReceipt,
7
7
  hermesSetupReceipt
8
- } from "./chunk-MVAP3NRX.js";
8
+ } from "./chunk-B2HMISVL.js";
9
9
  import {
10
10
  readJsonSafe,
11
11
  resolvePathBinary,
12
12
  writeJsonAtomic
13
- } from "./chunk-CLE7EVOW.js";
13
+ } from "./chunk-IS5YVKUX.js";
14
14
  import {
15
15
  isNewerVersion,
16
16
  isReleaseVersion
17
17
  } from "./chunk-QTOLNRET.js";
18
18
  import {
19
19
  isRecord
20
- } from "./chunk-HGCUZQUL.js";
20
+ } from "./chunk-WG67W43Y.js";
21
21
 
22
22
  // src/hermes/plugin-payload.ts
23
23
  import { createHash } from "crypto";
@@ -2109,7 +2109,7 @@ var runHermesCommand = async (launcher, args, timeoutMs = HERMES_COMMAND_TIMEOUT
2109
2109
  const running = runFileAsync(
2110
2110
  shell ? quotedForWindowsShell(launcher.path) : launcher.path,
2111
2111
  shell ? args.map(quotedForWindowsShell) : [...args],
2112
- { encoding: "utf-8", timeout: timeoutMs, maxBuffer: HERMES_OUTPUT_LIMIT_BYTES, shell, windowsHide: true }
2112
+ { encoding: "utf-8", timeout: timeoutMs, maxBuffer: HERMES_OUTPUT_LIMIT_BYTES, shell }
2113
2113
  );
2114
2114
  running.child.stdin?.end();
2115
2115
  const { stdout } = await running;
@@ -2305,7 +2305,7 @@ var removeLegacyPipCopy = async (python, distribution) => {
2305
2305
  const running = runFileAsync(
2306
2306
  python,
2307
2307
  ["-m", "pip", "uninstall", "-y", distribution],
2308
- { encoding: "utf-8", timeout: LEGACY_PIP_TIMEOUT_MS, maxBuffer: HERMES_OUTPUT_LIMIT_BYTES, windowsHide: true }
2308
+ { encoding: "utf-8", timeout: LEGACY_PIP_TIMEOUT_MS, maxBuffer: HERMES_OUTPUT_LIMIT_BYTES }
2309
2309
  );
2310
2310
  running.child.stdin?.end();
2311
2311
  const { stdout } = await running;
@@ -6,18 +6,18 @@ import {
6
6
  McpToolError,
7
7
  SubscriptionRequiredError,
8
8
  callMcpTool
9
- } from "./chunk-EKVW5Y23.js";
9
+ } from "./chunk-SEVGKJ7K.js";
10
10
  import {
11
11
  installNetworkDefaults,
12
12
  isNetworkFailure
13
- } from "./chunk-Q7J77QL2.js";
13
+ } from "./chunk-ID46TTYS.js";
14
14
  import {
15
15
  clientReportClaims
16
- } from "./chunk-MVAP3NRX.js";
16
+ } from "./chunk-B2HMISVL.js";
17
17
  import {
18
18
  getApiKey,
19
19
  getBaseUrl
20
- } from "./chunk-AFCKBLEG.js";
20
+ } from "./chunk-ONUAAXAW.js";
21
21
  import {
22
22
  ASK_AGENT_NAME_MAX,
23
23
  CLIENT_REPORT_PATH,
@@ -26,7 +26,7 @@ import {
26
26
  TOOL_FAILURE_CODES,
27
27
  degradedLine,
28
28
  truncateLine
29
- } from "./chunk-HGCUZQUL.js";
29
+ } from "./chunk-WG67W43Y.js";
30
30
 
31
31
  // src/api.ts
32
32
  import { randomUUID } from "crypto";
@@ -124,7 +124,26 @@ var execNpm = (args, options = {}) => {
124
124
  });
125
125
  };
126
126
  var GLOBAL_PREFIX_TIMEOUT_MS = 5e3;
127
- var readGlobalPrefix = () => {
127
+ var GLOBAL_PREFIX_REUSE_MS = 6e4;
128
+ var GLOBAL_PREFIX_ENVIRONMENT = ["PATH", "HOME", "USERPROFILE", "APPDATA", "PREFIX", "DESTDIR"];
129
+ var NPM_CONFIG_VARIABLE = /^npm_config_/i;
130
+ var rememberedGlobalPrefix = null;
131
+ var isNpmConfigVariable = ([key]) => NPM_CONFIG_VARIABLE.test(key);
132
+ var currentDirectory = () => {
133
+ try {
134
+ return process.cwd();
135
+ } catch {
136
+ return null;
137
+ }
138
+ };
139
+ var globalPrefixInputs = () => JSON.stringify({
140
+ cwd: currentDirectory(),
141
+ environment: GLOBAL_PREFIX_ENVIRONMENT.map((key) => process.env[key] ?? null),
142
+ npmConfig: Object.entries(process.env).filter(isNpmConfigVariable).sort(([left], [right]) => left.localeCompare(right))
143
+ });
144
+ var withinReuseWindow = (readAt, now) => now >= readAt && now - readAt < GLOBAL_PREFIX_REUSE_MS;
145
+ var stillCurrent = (remembered, inputs, now) => remembered !== null && remembered.inputs === inputs && withinReuseWindow(remembered.readAt, now);
146
+ var askNpmForGlobalPrefix = () => {
128
147
  try {
129
148
  const prefix = execNpm("prefix -g --no-workspaces", { timeout: GLOBAL_PREFIX_TIMEOUT_MS }).toString().trim();
130
149
  return prefix === "" ? void 0 : prefix;
@@ -132,6 +151,14 @@ var readGlobalPrefix = () => {
132
151
  return void 0;
133
152
  }
134
153
  };
154
+ var readGlobalPrefix = () => {
155
+ const inputs = globalPrefixInputs();
156
+ const now = Date.now();
157
+ if (stillCurrent(rememberedGlobalPrefix, inputs, now)) return rememberedGlobalPrefix.prefix;
158
+ const prefix = askNpmForGlobalPrefix();
159
+ rememberedGlobalPrefix = prefix === void 0 ? null : { inputs, prefix, readAt: now };
160
+ return prefix;
161
+ };
135
162
  var resolveGlobalBinary = (name) => {
136
163
  const prefix = readGlobalPrefix();
137
164
  if (prefix === void 0) return void 0;
@@ -443,9 +470,9 @@ var installGlobally = (options) => {
443
470
  }
444
471
  const started = (async () => {
445
472
  if (!npmIsOnPath()) throw new NpmMissingError();
446
- const { withUpgradeLock } = await import("./global-upgrade-JWI5XIZP.js");
447
- const { installWithUpgradeLock, ownsUpgradeLock } = await import("./upgrade-lock-I4JPC4WG.js");
448
- const { autoUpdateLock } = await import("./paths-YV3ZK5LT.js");
473
+ const { withUpgradeLock } = await import("./global-upgrade-HDDPHNGX.js");
474
+ const { installWithUpgradeLock, ownsUpgradeLock } = await import("./upgrade-lock-7Q4VWMDA.js");
475
+ const { autoUpdateLock } = await import("./paths-WILX6YI3.js");
449
476
  let result = "skipped";
450
477
  const install = async () => {
451
478
  const platform = process.platform;
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  SETUP_FLAGS
3
- } from "./chunk-ZJGIJDWP.js";
3
+ } from "./chunk-JXE4UQFJ.js";
4
4
  import {
5
5
  parseFlags
6
6
  } from "./chunk-NMUI3ZWG.js";
@@ -9,7 +9,7 @@ import {
9
9
  } from "./chunk-PPY5N2E6.js";
10
10
  import {
11
11
  NPX_LATEST_COMMAND
12
- } from "./chunk-35M6YE6T.js";
12
+ } from "./chunk-TTTK44RK.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-HGCUZQUL.js";
20
+ } from "./chunk-WG67W43Y.js";
21
21
 
22
22
  // src/cli/cowork.ts
23
23
  import { readFileSync } from "fs";
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  absoluteUrl
3
- } from "./chunk-AFNLCEHM.js";
3
+ } from "./chunk-HNUK557P.js";
4
4
  import {
5
5
  KEY_SCOPE
6
- } from "./chunk-HGCUZQUL.js";
6
+ } from "./chunk-WG67W43Y.js";
7
7
 
8
8
  // src/cli/approval-settings-pages.ts
9
9
  var API_KEYS_PATH = "/dashboard/agent/settings";
@@ -7,7 +7,7 @@ import {
7
7
  recordSealerFor,
8
8
  uploadTranscriptRecords,
9
9
  wrapSessionKey
10
- } from "./chunk-XU2FL4B6.js";
10
+ } from "./chunk-W3VRQEL3.js";
11
11
 
12
12
  // src/live-session.ts
13
13
  var MAX_TRANSCRIPT_QUEUE = 100;
@@ -6,20 +6,20 @@ import {
6
6
  } from "./chunk-PPY5N2E6.js";
7
7
  import {
8
8
  SETUP_AGENT_CHOICES,
9
- SETUP_CONNECT_MODES,
10
9
  isSetupConnectMode,
11
10
  isValidApiKey,
12
11
  normalizeAgentId
13
- } from "./chunk-HGCUZQUL.js";
12
+ } from "./chunk-WG67W43Y.js";
14
13
 
15
14
  // src/setup/options.ts
16
15
  var AGENT_CHOICES = SETUP_AGENT_CHOICES;
17
16
  var CONNECT_ALIASES = { auto: "app", pwa: "web" };
17
+ var OFFERED_CONNECT_MODES = ["app", "none"];
18
18
  var parseConnectMode = (raw) => {
19
19
  const value = raw.trim().toLowerCase();
20
20
  if (Object.hasOwn(CONNECT_ALIASES, value)) return CONNECT_ALIASES[value];
21
21
  if (isSetupConnectMode(value)) return value;
22
- throw new UsageError(`--connect must be one of: ${SETUP_CONNECT_MODES.join(", ")} (got ${raw})`);
22
+ throw new UsageError(`Unknown --connect value ${JSON.stringify(raw)}. Use one of: ${OFFERED_CONNECT_MODES.join(", ")}`);
23
23
  };
24
24
  var VERIFY_MODES = ["roundtrip", "push", "none"];
25
25
  var parseVerifyMode = (raw) => {