@pushary/agent-hooks 1.9.66 → 1.9.67

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 (127) hide show
  1. package/CHANGELOG.md +9 -0
  2. package/data/SKILL.md +1 -1
  3. package/data/cursor-plugin/skills/pushary/SKILL.md +1 -1
  4. package/data/vscode-plugin/skills/pushary/SKILL.md +1 -1
  5. package/dist/{api-GDSVUTI2.js → api-3WIPD5GC.js} +10 -10
  6. package/dist/bin/pushary-bell-hook.js +25 -25
  7. package/dist/bin/pushary-bell.js +10 -10
  8. package/dist/bin/pushary-claude.js +26 -26
  9. package/dist/bin/pushary-clean.js +73 -74
  10. package/dist/bin/pushary-codex-bridge.js +21 -21
  11. package/dist/bin/pushary-codex-hook.js +30 -30
  12. package/dist/bin/pushary-codex-session.js +8 -8
  13. package/dist/bin/pushary-codex.js +13 -13
  14. package/dist/bin/pushary-connect.js +28 -27
  15. package/dist/bin/pushary-cowork.js +5 -5
  16. package/dist/bin/pushary-daemon.js +40 -39
  17. package/dist/bin/pushary-disconnect.js +25 -25
  18. package/dist/bin/pushary-doctor.js +115 -71
  19. package/dist/bin/pushary-elicitation-hook.js +25 -25
  20. package/dist/bin/pushary-gemini-bridge.js +15 -15
  21. package/dist/bin/pushary-gemini-hook.js +27 -27
  22. package/dist/bin/pushary-hook.js +29 -29
  23. package/dist/bin/pushary-login.js +20 -19
  24. package/dist/bin/pushary-logout.js +26 -27
  25. package/dist/bin/pushary-mcp.js +11 -11
  26. package/dist/bin/pushary-mode.js +16 -15
  27. package/dist/bin/pushary-notification-hook.js +24 -24
  28. package/dist/bin/pushary-opencode-hook.js +26 -26
  29. package/dist/bin/pushary-permission-denied-hook.js +29 -29
  30. package/dist/bin/pushary-permission-hook.js +29 -29
  31. package/dist/bin/pushary-post-hook.js +24 -24
  32. package/dist/bin/pushary-prompt-hook.js +24 -24
  33. package/dist/bin/pushary-session-end-hook.js +26 -26
  34. package/dist/bin/pushary-session-start-hook.js +34 -33
  35. package/dist/bin/pushary-setup.js +107 -93
  36. package/dist/bin/pushary-stats.js +5 -5
  37. package/dist/bin/pushary-status.js +37 -35
  38. package/dist/bin/pushary-stop-hook.js +24 -24
  39. package/dist/bin/pushary-stopfailure-hook.js +24 -24
  40. package/dist/bin/pushary-suggestions.js +15 -14
  41. package/dist/bin/pushary-transcript-register.js +16 -16
  42. package/dist/bin/pushary-transcripts.js +18 -17
  43. package/dist/bin/pushary-upgrade.js +45 -38
  44. package/dist/bin/pushary-wait.js +26 -20
  45. package/dist/bin/pushary.js +7 -7
  46. package/dist/{chunk-A47UKPC7.js → chunk-32OSSYGZ.js} +1 -1
  47. package/dist/{chunk-QR2QWGQI.js → chunk-3THDNNVL.js} +3 -3
  48. package/dist/{chunk-DPU6H4JY.js → chunk-564IPPBL.js} +3 -3
  49. package/dist/chunk-5MOJCOCF.js +25 -0
  50. package/dist/{chunk-V4EOFOB2.js → chunk-6H4E5UBA.js} +6 -6
  51. package/dist/{chunk-DKMVVBXO.js → chunk-6LXXKMV6.js} +38 -10
  52. package/dist/chunk-76SWHCAR.js +299 -0
  53. package/dist/{chunk-G6VJZ3RB.js → chunk-77L2TNJW.js} +1 -1
  54. package/dist/{chunk-6BGVSV2Q.js → chunk-7YJSDXLM.js} +1 -1
  55. package/dist/{chunk-AWGBL4P3.js → chunk-B3V2WOJX.js} +89 -41
  56. package/dist/{chunk-RJ6JEHCP.js → chunk-BBFGDYYI.js} +1 -1
  57. package/dist/{chunk-YQDCTID4.js → chunk-BFF3ABFV.js} +4 -4
  58. package/dist/{chunk-R7C2FS33.js → chunk-C4EDAHXI.js} +1 -1
  59. package/dist/{chunk-YB3HMDKE.js → chunk-CHYBOTQN.js} +2 -2
  60. package/dist/{chunk-26W46E46.js → chunk-CJZLIAJF.js} +27 -10
  61. package/dist/{chunk-ZJV7SFIJ.js → chunk-CPLQ5OHX.js} +1 -1
  62. package/dist/{chunk-ZAZUDYSF.js → chunk-D3U6CN7T.js} +5 -5
  63. package/dist/{chunk-MNNQEUQC.js → chunk-D7Z4USSB.js} +27 -8
  64. package/dist/{chunk-V3YBVOTZ.js → chunk-DP6LU6BB.js} +2 -2
  65. package/dist/{chunk-32ZT2ATY.js → chunk-DXCHIKAN.js} +8 -8
  66. package/dist/{chunk-QN25WBXL.js → chunk-EQR6JSFE.js} +7 -7
  67. package/dist/{chunk-IQ3GKPFM.js → chunk-FONWVVDD.js} +1 -1
  68. package/dist/{chunk-XXIJBYNW.js → chunk-GMHQYX3D.js} +1 -1
  69. package/dist/{chunk-3EZP5ZPS.js → chunk-ICQCQAUO.js} +4 -4
  70. package/dist/{chunk-5J7OZBJ4.js → chunk-IPG3RS23.js} +2 -2
  71. package/dist/{chunk-4APD2DPI.js → chunk-IRV2MNMA.js} +53 -3
  72. package/dist/{chunk-MDIGG3Q7.js → chunk-IVB5O6NY.js} +3 -3
  73. package/dist/{chunk-VURDLVAQ.js → chunk-IXTVUINH.js} +3 -3
  74. package/dist/{chunk-HUGVJBDN.js → chunk-JBRMIADM.js} +2 -2
  75. package/dist/{chunk-IGO3AGZK.js → chunk-JHB5SR5B.js} +4 -4
  76. package/dist/{chunk-CNJ7SI5V.js → chunk-JOBSKQ2Z.js} +4 -4
  77. package/dist/{chunk-5FJDODOA.js → chunk-JOD2325S.js} +3 -3
  78. package/dist/{chunk-376TUN72.js → chunk-JSPCGPSH.js} +3 -3
  79. package/dist/{chunk-T6YLXO6N.js → chunk-KE4TSJUD.js} +4 -4
  80. package/dist/{chunk-TQNFDNJA.js → chunk-KIXRHNCW.js} +6 -6
  81. package/dist/{chunk-Q5RNYE2L.js → chunk-KNUYUQBP.js} +4 -4
  82. package/dist/{chunk-3FQX74E4.js → chunk-KTLE7NIK.js} +23 -8
  83. package/dist/{chunk-57NTMVMI.js → chunk-LJHDUKBB.js} +6 -6
  84. package/dist/{chunk-CN6JFM62.js → chunk-LS42NV6E.js} +15 -6
  85. package/dist/{chunk-6ZXCWK27.js → chunk-LYTWK5TF.js} +5 -5
  86. package/dist/{chunk-XIJTXRWB.js → chunk-METUT7V4.js} +2 -2
  87. package/dist/{chunk-7LK3Y6ET.js → chunk-NSS2AIGI.js} +6 -6
  88. package/dist/{chunk-XEXF2OFZ.js → chunk-NWN6GGJL.js} +2 -2
  89. package/dist/{chunk-GECU7V44.js → chunk-P4RXSZDT.js} +3 -3
  90. package/dist/{chunk-IA5VWIHV.js → chunk-PIBWX3EF.js} +2 -2
  91. package/dist/{chunk-GWYCKTXS.js → chunk-PO2P3XDC.js} +5 -5
  92. package/dist/{chunk-DIUTSF6I.js → chunk-R2BZH2NK.js} +4 -4
  93. package/dist/{chunk-6RJZSBPD.js → chunk-RO2B4YBF.js} +1 -1
  94. package/dist/{chunk-EJR5JXMV.js → chunk-RQOT6QL3.js} +43 -5
  95. package/dist/{chunk-SVKCYUYP.js → chunk-SB6TYV4M.js} +9 -9
  96. package/dist/{chunk-GDLT32I4.js → chunk-TI4JYPGQ.js} +6 -2
  97. package/dist/{chunk-B6JC676X.js → chunk-UC2J5RR4.js} +1 -1
  98. package/dist/{chunk-XDDSURY3.js → chunk-UQIPWXBL.js} +3 -3
  99. package/dist/{chunk-EU2ZOZC3.js → chunk-UXN73YAE.js} +3 -3
  100. package/dist/{chunk-RSZQEEEW.js → chunk-VEYFXRZ6.js} +7 -6
  101. package/dist/{chunk-XFQAK35L.js → chunk-VHMZPN3N.js} +1 -1
  102. package/dist/{chunk-45KMS76L.js → chunk-VKZ3RJ5U.js} +1 -1
  103. package/dist/chunk-VVIQWGS7.js +2298 -0
  104. package/dist/{chunk-KS3O6O7E.js → chunk-WJLHZ6E6.js} +3 -3
  105. package/dist/{chunk-GO7YKPT3.js → chunk-X2MTVD4W.js} +1 -1
  106. package/dist/{chunk-2BL6KWN7.js → chunk-XFDWLDHG.js} +9 -9
  107. package/dist/{chunk-3ELJIG2R.js → chunk-XNUWKKGS.js} +3 -3
  108. package/dist/{chunk-QOIPUYUD.js → chunk-XZKSUJ55.js} +1 -1
  109. package/dist/{chunk-JL3SZJJP.js → chunk-Y4MRHAE5.js} +2 -2
  110. package/dist/{chunk-DBUHSUL7.js → chunk-Y6ZN454E.js} +1 -1
  111. package/dist/{chunk-XGFFNERF.js → chunk-YSD4SMHE.js} +1 -1
  112. package/dist/{chunk-UTAARXYQ.js → chunk-ZK5WYAMI.js} +1 -1
  113. package/dist/{chunk-AVWECJSN.js → chunk-ZPIYJLQ3.js} +2 -2
  114. package/dist/{codex-app-cards-switch-W7OLKOMO.js → codex-app-cards-switch-25TDTMUZ.js} +11 -11
  115. package/dist/{codex-desktop-launch-U6V3AXZF.js → codex-desktop-launch-JDKUCD2Y.js} +1 -1
  116. package/dist/{codex-session-launch-EFU46WBL.js → codex-session-launch-6N35AAEO.js} +18 -18
  117. package/dist/{config-UC4LMCNX.js → config-OBGYURFX.js} +3 -3
  118. package/dist/{global-upgrade-ABF5O3HU.js → global-upgrade-2QNQD5OM.js} +10 -10
  119. package/dist/{identity-3ZUZPHN6.js → identity-CUPX2U7Q.js} +4 -4
  120. package/dist/{live-capabilities-BXWXJARK.js → live-capabilities-CUEIWMSM.js} +5 -5
  121. package/dist/{paths-FO76CFRQ.js → paths-BHLBZ6FY.js} +7 -3
  122. package/dist/{reapply-3T3DFUAI.js → reapply-4GXLWZ5M.js} +27 -26
  123. package/dist/src/index.js +28 -28
  124. package/dist/{upgrade-lock-EZ5JIPJE.js → upgrade-lock-RDKTAHWR.js} +4 -4
  125. package/dist/{usage-Y6BL7RUD.js → usage-KX2HN47E.js} +3 -3
  126. package/package.json +1 -1
  127. package/dist/chunk-QBNICXMC.js +0 -615
@@ -1,9 +1,12 @@
1
1
  import {
2
2
  CODEX_HOOK_STATUS
3
- } from "./chunk-JL3SZJJP.js";
3
+ } from "./chunk-Y4MRHAE5.js";
4
+ import {
5
+ retryAgentCommand
6
+ } from "./chunk-JOD2325S.js";
4
7
  import {
5
8
  NPX_LATEST_COMMAND
6
- } from "./chunk-GO7YKPT3.js";
9
+ } from "./chunk-X2MTVD4W.js";
7
10
 
8
11
  // src/setup/codex-trust.ts
9
12
  var CODEX_TRUST_TELEMETRY = {
@@ -61,9 +64,56 @@ var describeCodexTrustConfirmation = (confirmation) => {
61
64
  }
62
65
  };
63
66
 
67
+ // src/hermes/messages.ts
68
+ var HERMES_RESTART_COMMAND = "hermes gateway restart";
69
+ var HERMES_MAC_APP_REPAIR = "open Pushary on this Mac and connect Hermes again";
70
+ var describeHermesInstallFailure = (reason, pluginDirectory, receiptPath) => {
71
+ switch (reason) {
72
+ case "home_unknown":
73
+ return "Hermes did not say where its settings live. Check that `hermes config path` works, then run setup again.";
74
+ case "receipt_invalid":
75
+ return `${receiptPath} is unreadable, so setup cannot record what it changes. Move it aside, then run setup again.`;
76
+ case "settings_unreadable":
77
+ return "Hermes would not report its settings through `hermes config get`. Run `hermes update`, then run setup again.";
78
+ case "plugin_folder_not_ours":
79
+ return `${pluginDirectory} holds a pushary plugin that Pushary did not install. Remove that folder, then run setup again.`;
80
+ case "plugin_write_failed":
81
+ return `Could not write the Pushary plugin to ${pluginDirectory}.`;
82
+ case "settings_failed":
83
+ return "The plugin is in place, but Hermes refused a settings change. Run `hermes plugins enable pushary`, then run setup again.";
84
+ }
85
+ };
86
+ var PROBLEM_DESCRIPTIONS = {
87
+ plugin_missing: "the Pushary plugin folder is missing",
88
+ plugin_not_enabled: "pushary is not in plugins.enabled",
89
+ plugin_disabled: "pushary is in plugins.disabled"
90
+ };
91
+ var describeHermesProblems = (problems) => problems.map((problem) => PROBLEM_DESCRIPTIONS[problem]).join(", ");
92
+ var hermesRepairStep = (installer) => installer === "mac_app" ? HERMES_MAC_APP_REPAIR : `run ${retryAgentCommand("hermes")}`;
93
+ var describeHermesState = (state) => {
94
+ switch (state.kind) {
95
+ case "not_wired":
96
+ return "Pushary is not set up for Hermes";
97
+ case "needs_repair":
98
+ return `Hermes needs repair: ${describeHermesProblems(state.problems)}`;
99
+ case "restart_needed":
100
+ return `Restart Hermes to load Pushary ${state.installedVersion ?? ""}`.trim();
101
+ case "connected":
102
+ if (!state.live) {
103
+ return state.gatewayRunning ? "Hermes is running, and this plugin copy does not report whether it loaded" : "Hermes loads Pushary the next time it starts";
104
+ }
105
+ return state.runningVersion === state.version ? "Hermes loaded Pushary" : `Hermes runs Pushary ${state.runningVersion ?? "from an older copy"}; restart it to load ${state.version ?? "the new copy"}`;
106
+ }
107
+ };
108
+
64
109
  export {
65
110
  codexTrustOutcome,
66
111
  CODEX_HOOK_REMEDY,
67
112
  needsCodexTrustStep,
68
- describeCodexTrustConfirmation
113
+ describeCodexTrustConfirmation,
114
+ HERMES_RESTART_COMMAND,
115
+ describeHermesInstallFailure,
116
+ describeHermesProblems,
117
+ hermesRepairStep,
118
+ describeHermesState
69
119
  };
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  findNativeClaudeInstall
3
- } from "./chunk-RJ6JEHCP.js";
3
+ } from "./chunk-BBFGDYYI.js";
4
4
  import {
5
5
  parseVersion
6
- } from "./chunk-KS3O6O7E.js";
6
+ } from "./chunk-WJLHZ6E6.js";
7
7
  import {
8
8
  isRecord
9
- } from "./chunk-EJR5JXMV.js";
9
+ } from "./chunk-RQOT6QL3.js";
10
10
 
11
11
  // src/setup/agent-probe.ts
12
12
  import { execSync } from "child_process";
@@ -3,11 +3,11 @@ import {
3
3
  } from "./chunk-POFBE6ZY.js";
4
4
  import {
5
5
  autoUpdateState
6
- } from "./chunk-GDLT32I4.js";
6
+ } from "./chunk-TI4JYPGQ.js";
7
7
  import {
8
8
  readJsonSafe,
9
9
  writeJsonAtomic
10
- } from "./chunk-KS3O6O7E.js";
10
+ } from "./chunk-WJLHZ6E6.js";
11
11
  import {
12
12
  CLI_PACKAGE_NAMES,
13
13
  POSIX_GLOBAL_ROOT_SEGMENTS,
@@ -17,7 +17,7 @@ import {
17
17
  } from "./chunk-QTOLNRET.js";
18
18
  import {
19
19
  isAutoUpdateResult
20
- } from "./chunk-EJR5JXMV.js";
20
+ } from "./chunk-RQOT6QL3.js";
21
21
 
22
22
  // src/auto-update.ts
23
23
  import { spawn } from "child_process";
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  parseSseMessages
3
- } from "./chunk-Q5RNYE2L.js";
3
+ } from "./chunk-KNUYUQBP.js";
4
4
  import {
5
5
  NPX_LATEST_COMMAND
6
- } from "./chunk-GO7YKPT3.js";
6
+ } from "./chunk-X2MTVD4W.js";
7
7
 
8
8
  // src/mcp-stdio-bridge.ts
9
9
  var MCP_BRIDGE_BINARY = "pushary-mcp";
@@ -1,17 +1,17 @@
1
1
  import {
2
2
  compatibleConfigFile,
3
3
  hasCompatibleHooks
4
- } from "./chunk-3EZP5ZPS.js";
4
+ } from "./chunk-ICQCQAUO.js";
5
5
  import {
6
6
  pusharyHookExecutable
7
- } from "./chunk-YQDCTID4.js";
7
+ } from "./chunk-BFF3ABFV.js";
8
8
  import {
9
9
  isProtectedByScope,
10
10
  registerHookEntry
11
- } from "./chunk-GDLT32I4.js";
11
+ } from "./chunk-TI4JYPGQ.js";
12
12
  import {
13
13
  isRecord
14
- } from "./chunk-EJR5JXMV.js";
14
+ } from "./chunk-RQOT6QL3.js";
15
15
 
16
16
  // src/cursor-config.ts
17
17
  var hookCommandOf = (entry) => {
@@ -1,19 +1,19 @@
1
1
  import {
2
2
  resolveInstallSourceFor
3
- } from "./chunk-XIJTXRWB.js";
3
+ } from "./chunk-METUT7V4.js";
4
4
  import {
5
5
  backupFile,
6
6
  readJsonSafe,
7
7
  writeFileAtomic,
8
8
  writeJsonAtomic
9
- } from "./chunk-KS3O6O7E.js";
9
+ } from "./chunk-WJLHZ6E6.js";
10
10
  import {
11
11
  configFilePath
12
- } from "./chunk-A47UKPC7.js";
12
+ } from "./chunk-32OSSYGZ.js";
13
13
  import {
14
14
  API_KEY_PREFIX_PATTERN,
15
15
  isRecord
16
- } from "./chunk-EJR5JXMV.js";
16
+ } from "./chunk-RQOT6QL3.js";
17
17
 
18
18
  // src/shell-alias.ts
19
19
  import { homedir } from "os";
@@ -3,13 +3,13 @@ import {
3
3
  NpmMissingError,
4
4
  NpmPermissionError,
5
5
  writeFileAtomic
6
- } from "./chunk-KS3O6O7E.js";
6
+ } from "./chunk-WJLHZ6E6.js";
7
7
  import {
8
8
  NPX_LATEST_COMMAND
9
- } from "./chunk-GO7YKPT3.js";
9
+ } from "./chunk-X2MTVD4W.js";
10
10
  import {
11
11
  readSetupAgentFailures
12
- } from "./chunk-EJR5JXMV.js";
12
+ } from "./chunk-RQOT6QL3.js";
13
13
 
14
14
  // src/setup/config-write.ts
15
15
  var AgentConfigWriteError = class extends Error {
@@ -1,13 +1,13 @@
1
1
  import {
2
2
  readJsonSafe,
3
3
  writeJsonAtomic
4
- } from "./chunk-KS3O6O7E.js";
4
+ } from "./chunk-WJLHZ6E6.js";
5
5
  import {
6
6
  configFilePath
7
- } from "./chunk-A47UKPC7.js";
7
+ } from "./chunk-32OSSYGZ.js";
8
8
  import {
9
9
  readSetupOutcomeProperties
10
- } from "./chunk-EJR5JXMV.js";
10
+ } from "./chunk-RQOT6QL3.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;", "&");
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  realpath
3
- } from "./chunk-MDIGG3Q7.js";
3
+ } from "./chunk-IVB5O6NY.js";
4
4
  import {
5
5
  findNativeClaudeInstall
6
- } from "./chunk-RJ6JEHCP.js";
6
+ } from "./chunk-BBFGDYYI.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-KS3O6O7E.js";
16
+ } from "./chunk-WJLHZ6E6.js";
17
17
  import {
18
18
  MANAGED_PROVIDERS
19
- } from "./chunk-EJR5JXMV.js";
19
+ } from "./chunk-RQOT6QL3.js";
20
20
 
21
21
  // src/live-capabilities.ts
22
22
  import { homedir } from "os";
@@ -4,30 +4,30 @@ import {
4
4
  postLiveSession,
5
5
  postLiveSessionUntilAccepted,
6
6
  startLiveSessionHeartbeat
7
- } from "./chunk-QOIPUYUD.js";
7
+ } from "./chunk-XZKSUJ55.js";
8
8
  import {
9
9
  SESSION_IDLE_TIMEOUT_MS,
10
10
  describeIdleWindow,
11
11
  idleDeadlinePassed,
12
12
  startProcessOwnership
13
- } from "./chunk-3ELJIG2R.js";
13
+ } from "./chunk-XNUWKKGS.js";
14
14
  import {
15
15
  spawnClaude
16
16
  } from "./chunk-XHKBHWLX.js";
17
17
  import {
18
18
  repoKeyFor
19
- } from "./chunk-XXIJBYNW.js";
19
+ } from "./chunk-GMHQYX3D.js";
20
20
  import {
21
21
  isAskUserResponse,
22
22
  isDecisionStopped,
23
23
  isWaitForAnswerResponse,
24
24
  withdrawQuestion,
25
25
  writeDegraded
26
- } from "./chunk-ZAZUDYSF.js";
26
+ } from "./chunk-D3U6CN7T.js";
27
27
  import {
28
28
  callMcpTool,
29
29
  isRetryable
30
- } from "./chunk-Q5RNYE2L.js";
30
+ } from "./chunk-KNUYUQBP.js";
31
31
  import {
32
32
  AGENT_QUESTION_DESCRIPTION_MAX,
33
33
  AGENT_QUESTION_HEADER_MAX,
@@ -48,7 +48,7 @@ import {
48
48
  parseCodexQuestions,
49
49
  planElicitationAsk,
50
50
  readElicitationFields
51
- } from "./chunk-EJR5JXMV.js";
51
+ } from "./chunk-RQOT6QL3.js";
52
52
 
53
53
  // src/codex-question-owner.ts
54
54
  import { createHash } from "crypto";
@@ -1,17 +1,17 @@
1
1
  import {
2
2
  keyCheckFromResponse
3
- } from "./chunk-QR2QWGQI.js";
3
+ } from "./chunk-3THDNNVL.js";
4
4
  import {
5
5
  installNetworkDefaults
6
- } from "./chunk-GECU7V44.js";
6
+ } from "./chunk-P4RXSZDT.js";
7
7
  import {
8
8
  getBaseUrl
9
- } from "./chunk-A47UKPC7.js";
9
+ } from "./chunk-32OSSYGZ.js";
10
10
  import {
11
11
  isRecord,
12
12
  isToolErrorResult,
13
13
  toolFailureCodeOfResult
14
- } from "./chunk-EJR5JXMV.js";
14
+ } from "./chunk-RQOT6QL3.js";
15
15
 
16
16
  // src/retry.ts
17
17
  var isRetryable = (err) => {
@@ -1,16 +1,19 @@
1
1
  import {
2
2
  notificationAnswerStep
3
- } from "./chunk-MNNQEUQC.js";
3
+ } from "./chunk-D7Z4USSB.js";
4
+ import {
5
+ canChangeApprovalSettings
6
+ } from "./chunk-5MOJCOCF.js";
4
7
  import {
5
8
  matchMacAccountStep,
6
9
  retryAgentCommand
7
- } from "./chunk-5FJDODOA.js";
10
+ } from "./chunk-JOD2325S.js";
8
11
  import {
9
12
  EXIT
10
13
  } from "./chunk-KZERVKTD.js";
11
14
  import {
12
15
  NPX_LATEST_COMMAND
13
- } from "./chunk-GO7YKPT3.js";
16
+ } from "./chunk-X2MTVD4W.js";
14
17
 
15
18
  // src/setup/closing.ts
16
19
  var ACTIVITY_URL = "pushary.com/dashboard/agent/activity";
@@ -37,16 +40,28 @@ var describeAnsweredHeadline = (answer) => {
37
40
  const seconds = answerSeconds(answer.latencyMs);
38
41
  return device ? `You're set. ${device} answered in ${seconds}s.` : `You're set. The test question was answered in ${seconds}s.`;
39
42
  };
40
- var COMMAND_SURFACE = [
41
- { command: "pushary status", summary: "what this machine is connected to" },
43
+ var CHANGEABLE_APPROVAL_COMMANDS = [
42
44
  { command: "pushary mode", summary: "choose where approval requests appear" },
43
- { command: "pushary wait", summary: "show or set how long approvals wait for your phone" },
45
+ { command: "pushary wait", summary: "show or set how long approvals wait for your phone" }
46
+ ];
47
+ var READABLE_APPROVAL_COMMANDS = [
48
+ { command: "pushary mode", summary: "show where approval requests appear" },
49
+ { command: "pushary wait", summary: "show how long approvals wait for your phone" }
50
+ ];
51
+ var approvalCommandSummaries = (canChange) => canChange ? CHANGEABLE_APPROVAL_COMMANDS : READABLE_APPROVAL_COMMANDS;
52
+ var commandSurfaceFor = (keyScope) => [
53
+ { command: "pushary status", summary: "what this machine is connected to" },
54
+ ...approvalCommandSummaries(canChangeApprovalSettings(keyScope)),
44
55
  { command: "pushary stats", summary: "what your agents have been asking" },
45
56
  { command: "pushary claude", summary: "run Claude Code with encrypted transcript support" },
46
57
  { command: "pushary doctor", summary: "check the install" }
47
58
  ];
48
- var SURFACE_COLUMN = Math.max(...COMMAND_SURFACE.map((entry) => entry.command.length)) + 2;
49
- var renderCommandSurface = () => COMMAND_SURFACE.map((entry) => `${entry.command.padEnd(SURFACE_COLUMN)}${entry.summary}`);
59
+ var surfaceColumnOf = (surface) => Math.max(...surface.map((entry) => entry.command.length)) + 2;
60
+ var renderCommandSurface = (keyScope) => {
61
+ const surface = commandSurfaceFor(keyScope);
62
+ const column = surfaceColumnOf(surface);
63
+ return surface.map((entry) => `${entry.command.padEnd(column)}${entry.summary}`);
64
+ };
50
65
  var PHONE_START_VERIFIED_LINE = "Phone-start and steering: local and server checks passed just now. Recheck after sleep or network changes.";
51
66
  var PHONE_START_UNVERIFIED_LINE = "Phone-start and steering: unverified. Run pushary doctor to check the provider, background service and server route.";
52
67
  var PHONE_START_FELL_SHORT_LINES = {
@@ -4,23 +4,23 @@ import {
4
4
  } from "./chunk-XHKBHWLX.js";
5
5
  import {
6
6
  readControlMode
7
- } from "./chunk-CNJ7SI5V.js";
7
+ } from "./chunk-JOBSKQ2Z.js";
8
8
  import {
9
9
  getMachineId
10
- } from "./chunk-IA5VWIHV.js";
10
+ } from "./chunk-PIBWX3EF.js";
11
11
  import {
12
12
  pusharyDir
13
- } from "./chunk-GDLT32I4.js";
13
+ } from "./chunk-TI4JYPGQ.js";
14
14
  import {
15
15
  readJsonSafe,
16
16
  resolveGlobalBinary,
17
17
  writeFileAtomic,
18
18
  writeJsonAtomic,
19
19
  writeJsonAtomicDurable
20
- } from "./chunk-KS3O6O7E.js";
20
+ } from "./chunk-WJLHZ6E6.js";
21
21
  import {
22
22
  getApiKey
23
- } from "./chunk-A47UKPC7.js";
23
+ } from "./chunk-32OSSYGZ.js";
24
24
  import {
25
25
  CLI_PACKAGE_NAMES,
26
26
  cmdShimTarget,
@@ -30,7 +30,7 @@ import {
30
30
  } from "./chunk-QTOLNRET.js";
31
31
  import {
32
32
  isRecord
33
- } from "./chunk-EJR5JXMV.js";
33
+ } from "./chunk-RQOT6QL3.js";
34
34
 
35
35
  // src/daemon-lifecycle.ts
36
36
  import { dirname, join, win32 as win32Path } from "path";
@@ -1,18 +1,19 @@
1
1
  import {
2
2
  macAppBridgeAvailable
3
- } from "./chunk-7LK3Y6ET.js";
3
+ } from "./chunk-NSS2AIGI.js";
4
4
  import {
5
5
  keyPrefix
6
- } from "./chunk-CNJ7SI5V.js";
6
+ } from "./chunk-JOBSKQ2Z.js";
7
7
  import {
8
8
  bridgeAgentKey
9
- } from "./chunk-GDLT32I4.js";
9
+ } from "./chunk-TI4JYPGQ.js";
10
10
  import {
11
11
  readJsonSafe
12
- } from "./chunk-KS3O6O7E.js";
12
+ } from "./chunk-WJLHZ6E6.js";
13
13
  import {
14
+ isRecord,
14
15
  isValidApiKey
15
- } from "./chunk-EJR5JXMV.js";
16
+ } from "./chunk-RQOT6QL3.js";
16
17
 
17
18
  // src/shared-mcp-key.ts
18
19
  var asRecord = (value) => value !== null && typeof value === "object" && !Array.isArray(value) ? value : void 0;
@@ -37,7 +38,13 @@ var readMacAppAgentKey = () => {
37
38
  };
38
39
  var macAppConnectionOf = (appKey, appInstalled) => appKey !== null && appInstalled() ? { kind: "connected", keyPrefix: keyPrefix(appKey) } : NOT_CONNECTED;
39
40
  var readMacAppConnection = () => macAppConnectionOf(readMacAppAgentKey(), macAppBridgeAvailable);
40
- var readMacAppConnectionWhenKeyless = (cliKey) => cliKey ? NOT_CONNECTED : readMacAppConnection();
41
+ var keyWrittenByMacApp = (configFileKey, macAppKey = readMacAppAgentKey()) => Boolean(configFileKey) && configFileKey === macAppKey;
42
+ var keyStoredIn = (configFile) => {
43
+ const stored = readJsonSafe(configFile);
44
+ return stored.kind === "ok" && isRecord(stored.value) ? pusharyKey(stored.value.apiKey) : null;
45
+ };
46
+ var configFileHoldsMacAppKey = (configFile, macAppKey = readMacAppAgentKey()) => keyWrittenByMacApp(keyStoredIn(configFile), macAppKey);
47
+ var readMacAppConnectionWhenKeyless = (cliKey, cliKeyIsTheMacAppsOwn = false) => cliKey && !cliKeyIsTheMacAppsOwn ? NOT_CONNECTED : readMacAppConnection();
41
48
 
42
49
  export {
43
50
  pusharyKey,
@@ -48,5 +55,7 @@ export {
48
55
  PAIR_FROM_MAC_APP,
49
56
  readMacAppAgentKey,
50
57
  readMacAppConnection,
58
+ keyWrittenByMacApp,
59
+ configFileHoldsMacAppKey,
51
60
  readMacAppConnectionWhenKeyless
52
61
  };
@@ -4,13 +4,13 @@ import {
4
4
  configFailureKind,
5
5
  retryAgentCommand,
6
6
  writeSetupConfigFile
7
- } from "./chunk-5FJDODOA.js";
7
+ } from "./chunk-JOD2325S.js";
8
8
  import {
9
9
  MCP_BRIDGE_BINARY
10
- } from "./chunk-HUGVJBDN.js";
10
+ } from "./chunk-JBRMIADM.js";
11
11
  import {
12
12
  KEY_FILE_MODE
13
- } from "./chunk-CNJ7SI5V.js";
13
+ } from "./chunk-JOBSKQ2Z.js";
14
14
  import {
15
15
  CLINE_SERVER_NAME_TAKEN,
16
16
  CLINE_SETTINGS_REFUSALS,
@@ -30,12 +30,12 @@ import {
30
30
  withClinePusharyServer,
31
31
  withRefreshedClineKey,
32
32
  withoutClinePusharyServer
33
- } from "./chunk-GDLT32I4.js";
33
+ } from "./chunk-TI4JYPGQ.js";
34
34
  import {
35
35
  readJsonSafe,
36
36
  writeFileAtomic,
37
37
  writeJsonAtomic
38
- } from "./chunk-KS3O6O7E.js";
38
+ } from "./chunk-WJLHZ6E6.js";
39
39
 
40
40
  // src/fx-config.ts
41
41
  var FX_SERVER_NAME = "pushary";
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  configFilePath
3
- } from "./chunk-A47UKPC7.js";
3
+ } from "./chunk-32OSSYGZ.js";
4
4
  import {
5
5
  normalizeInstallSource
6
- } from "./chunk-EJR5JXMV.js";
6
+ } from "./chunk-RQOT6QL3.js";
7
7
 
8
8
  // src/install-source.ts
9
9
  import { readFileSync } from "fs";
@@ -1,15 +1,15 @@
1
1
  import {
2
2
  compatibleConfigFile
3
- } from "./chunk-3EZP5ZPS.js";
3
+ } from "./chunk-ICQCQAUO.js";
4
4
  import {
5
5
  hookOwnerOf,
6
6
  hookOwnerOfCommands,
7
7
  liveBridgeProbe,
8
8
  resolveBridgeStub
9
- } from "./chunk-YQDCTID4.js";
9
+ } from "./chunk-BFF3ABFV.js";
10
10
  import {
11
11
  AGENT_CHOICES
12
- } from "./chunk-UTAARXYQ.js";
12
+ } from "./chunk-ZK5WYAMI.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-GDLT32I4.js";
21
+ } from "./chunk-TI4JYPGQ.js";
22
22
  import {
23
23
  readJsonSafe
24
- } from "./chunk-KS3O6O7E.js";
24
+ } from "./chunk-WJLHZ6E6.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-EJR5JXMV.js";
32
+ } from "./chunk-RQOT6QL3.js";
33
33
 
34
34
  // src/opencode-plugin.ts
35
35
  var OPENCODE_PLUGIN_MARKER = "pushary-opencode-plugin w1";
@@ -1,10 +1,10 @@
1
1
  import {
2
2
  getBaseUrl
3
- } from "./chunk-A47UKPC7.js";
3
+ } from "./chunk-32OSSYGZ.js";
4
4
  import {
5
5
  compressTranscriptRecord,
6
6
  redactSecretsFromContent
7
- } from "./chunk-EJR5JXMV.js";
7
+ } from "./chunk-RQOT6QL3.js";
8
8
 
9
9
  // src/transcript-api.ts
10
10
  var fetchTranscriptRecipients = async (apiKey, baseUrl = getBaseUrl()) => {
@@ -1,19 +1,19 @@
1
1
  import {
2
2
  readExistingMachineId
3
- } from "./chunk-IA5VWIHV.js";
3
+ } from "./chunk-PIBWX3EF.js";
4
4
  import {
5
5
  NetworkError
6
6
  } from "./chunk-PPY5N2E6.js";
7
7
  import {
8
8
  getBaseUrl
9
- } from "./chunk-A47UKPC7.js";
9
+ } from "./chunk-32OSSYGZ.js";
10
10
  import {
11
11
  getPackageVersion
12
12
  } from "./chunk-QTOLNRET.js";
13
13
  import {
14
14
  clientContextHeaders,
15
15
  redactSecretsFromContent
16
- } from "./chunk-EJR5JXMV.js";
16
+ } from "./chunk-RQOT6QL3.js";
17
17
 
18
18
  // src/cli/net.ts
19
19
  import { createRequire } from "module";
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  pusharyDir
3
- } from "./chunk-GDLT32I4.js";
3
+ } from "./chunk-TI4JYPGQ.js";
4
4
  import {
5
5
  writeFileAtomic
6
- } from "./chunk-KS3O6O7E.js";
6
+ } from "./chunk-WJLHZ6E6.js";
7
7
 
8
8
  // src/identity.ts
9
9
  import { randomUUID } from "crypto";
@@ -3,24 +3,24 @@ import {
3
3
  expectedLaunchCapabilities,
4
4
  hasSpawnProvider,
5
5
  resolveControlPolicy
6
- } from "./chunk-T6YLXO6N.js";
6
+ } from "./chunk-KE4TSJUD.js";
7
7
  import {
8
8
  daemonHasRemoteProof,
9
9
  daemonServiceManagerAvailable,
10
10
  hasDaemonServiceDefinition,
11
11
  readDaemonNeedsLogin,
12
12
  readDaemonStatus
13
- } from "./chunk-57NTMVMI.js";
13
+ } from "./chunk-LJHDUKBB.js";
14
14
  import {
15
15
  readControlMode,
16
16
  readKeySource
17
- } from "./chunk-CNJ7SI5V.js";
17
+ } from "./chunk-JOBSKQ2Z.js";
18
18
  import {
19
19
  getMachineId
20
- } from "./chunk-IA5VWIHV.js";
20
+ } from "./chunk-PIBWX3EF.js";
21
21
  import {
22
22
  getBaseUrl
23
- } from "./chunk-A47UKPC7.js";
23
+ } from "./chunk-32OSSYGZ.js";
24
24
  import {
25
25
  getPackageVersion
26
26
  } from "./chunk-QTOLNRET.js";
@@ -12,7 +12,7 @@ import {
12
12
  reachVerdict,
13
13
  reachesYou,
14
14
  verifyDelivery
15
- } from "./chunk-MNNQEUQC.js";
15
+ } from "./chunk-D7Z4USSB.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-XIJTXRWB.js";
27
+ } from "./chunk-METUT7V4.js";
28
28
  import {
29
29
  NPX_LATEST_COMMAND
30
- } from "./chunk-GO7YKPT3.js";
30
+ } from "./chunk-X2MTVD4W.js";
31
31
  import {
32
32
  NO_PAIRING_COMPUTER,
33
33
  PAIR_TTL_SECONDS
34
- } from "./chunk-EJR5JXMV.js";
34
+ } from "./chunk-RQOT6QL3.js";
35
35
 
36
36
  // src/onboarding.ts
37
37
  import qrcodeTerminal from "qrcode-terminal";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  readConfigFileKey
3
- } from "./chunk-CNJ7SI5V.js";
3
+ } from "./chunk-JOBSKQ2Z.js";
4
4
 
5
5
  // src/bell/fleet.ts
6
6
  import { closeSync, constants, futimesSync, lstatSync, mkdirSync, openSync, readdirSync, unlinkSync } from "fs";