@pushary/agent-hooks 1.9.65 → 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 (129) hide show
  1. package/CHANGELOG.md +18 -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-32B3XLJR.js → api-3WIPD5GC.js} +12 -10
  6. package/dist/bin/pushary-bell-hook.js +25 -27
  7. package/dist/bin/pushary-bell.js +10 -10
  8. package/dist/bin/pushary-claude.js +26 -28
  9. package/dist/bin/pushary-clean.js +74 -77
  10. package/dist/bin/pushary-codex-bridge.js +21 -22
  11. package/dist/bin/pushary-codex-hook.js +30 -32
  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 -28
  15. package/dist/bin/pushary-cowork.js +5 -5
  16. package/dist/bin/pushary-daemon.js +40 -41
  17. package/dist/bin/pushary-disconnect.js +25 -26
  18. package/dist/bin/pushary-doctor.js +118 -76
  19. package/dist/bin/pushary-elicitation-hook.js +25 -27
  20. package/dist/bin/pushary-gemini-bridge.js +15 -16
  21. package/dist/bin/pushary-gemini-hook.js +27 -29
  22. package/dist/bin/pushary-hook.js +29 -31
  23. package/dist/bin/pushary-login.js +20 -19
  24. package/dist/bin/pushary-logout.js +26 -28
  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 -26
  28. package/dist/bin/pushary-opencode-hook.js +26 -28
  29. package/dist/bin/pushary-permission-denied-hook.js +29 -31
  30. package/dist/bin/pushary-permission-hook.js +32 -31
  31. package/dist/bin/pushary-post-hook.js +24 -26
  32. package/dist/bin/pushary-prompt-hook.js +24 -26
  33. package/dist/bin/pushary-session-end-hook.js +26 -28
  34. package/dist/bin/pushary-session-start-hook.js +34 -35
  35. package/dist/bin/pushary-setup.js +111 -99
  36. package/dist/bin/pushary-stats.js +5 -5
  37. package/dist/bin/pushary-status.js +37 -36
  38. package/dist/bin/pushary-stop-hook.js +24 -26
  39. package/dist/bin/pushary-stopfailure-hook.js +24 -26
  40. package/dist/bin/pushary-suggestions.js +15 -14
  41. package/dist/bin/pushary-transcript-register.js +16 -18
  42. package/dist/bin/pushary-transcripts.js +18 -17
  43. package/dist/bin/pushary-upgrade.js +45 -39
  44. package/dist/bin/pushary-wait.js +26 -20
  45. package/dist/bin/pushary.js +7 -7
  46. package/dist/{chunk-Y64JGYTB.js → chunk-32OSSYGZ.js} +1 -1
  47. package/dist/{chunk-UHS5MMAI.js → chunk-3THDNNVL.js} +3 -3
  48. package/dist/{chunk-OA6EADFT.js → chunk-564IPPBL.js} +3 -3
  49. package/dist/chunk-5MOJCOCF.js +25 -0
  50. package/dist/{chunk-RRHHWYPX.js → chunk-6H4E5UBA.js} +6 -6
  51. package/dist/{chunk-UM2X7HL6.js → chunk-6LXXKMV6.js} +42 -16
  52. package/dist/chunk-76SWHCAR.js +299 -0
  53. package/dist/{chunk-AN7C3CHH.js → chunk-77L2TNJW.js} +1 -1
  54. package/dist/{chunk-XJIIU36L.js → chunk-7YJSDXLM.js} +1 -1
  55. package/dist/{chunk-XZCJC3QO.js → chunk-B3V2WOJX.js} +285 -50
  56. package/dist/{chunk-RABLE5R6.js → chunk-BBFGDYYI.js} +1 -1
  57. package/dist/{chunk-GTBWWCCM.js → chunk-BFF3ABFV.js} +115 -9
  58. package/dist/{chunk-NOH3EJFH.js → chunk-C4EDAHXI.js} +1 -1
  59. package/dist/{chunk-ITYKN2K3.js → chunk-CHYBOTQN.js} +2 -2
  60. package/dist/{chunk-FFSIYBBU.js → chunk-CJZLIAJF.js} +27 -10
  61. package/dist/{chunk-UMTMFDL2.js → chunk-CPLQ5OHX.js} +1 -1
  62. package/dist/{chunk-DTVHZDYM.js → chunk-D3U6CN7T.js} +26 -12
  63. package/dist/{chunk-ICFHMJTW.js → chunk-D7Z4USSB.js} +27 -8
  64. package/dist/{chunk-DXMUJTYF.js → chunk-DP6LU6BB.js} +2 -2
  65. package/dist/{chunk-GA257T2E.js → chunk-DXCHIKAN.js} +8 -8
  66. package/dist/{chunk-PP7FC3Y7.js → chunk-EQR6JSFE.js} +9 -7
  67. package/dist/{chunk-Z3M627TQ.js → chunk-FONWVVDD.js} +1 -1
  68. package/dist/{chunk-3KXBRSL3.js → chunk-GMHQYX3D.js} +1 -1
  69. package/dist/{chunk-WY6YAMZW.js → chunk-ICQCQAUO.js} +5 -4
  70. package/dist/{chunk-CZ65D6Q5.js → chunk-IPG3RS23.js} +2 -2
  71. package/dist/{chunk-JCWHOB36.js → chunk-IRV2MNMA.js} +53 -3
  72. package/dist/{chunk-HIYLAC3C.js → chunk-IVB5O6NY.js} +3 -3
  73. package/dist/{chunk-DM24VZOI.js → chunk-IXTVUINH.js} +3 -3
  74. package/dist/{chunk-BEQ3MEE3.js → chunk-JBRMIADM.js} +2 -2
  75. package/dist/{chunk-CU2PXLZ6.js → chunk-JHB5SR5B.js} +4 -4
  76. package/dist/{chunk-ED2SWTPC.js → chunk-JOBSKQ2Z.js} +4 -4
  77. package/dist/{chunk-W5L2ZLHE.js → chunk-JOD2325S.js} +3 -3
  78. package/dist/{chunk-CSKABVSH.js → chunk-JSPCGPSH.js} +3 -3
  79. package/dist/{chunk-R4FL5JHK.js → chunk-KE4TSJUD.js} +4 -4
  80. package/dist/{chunk-3LF7T3NW.js → chunk-KIXRHNCW.js} +6 -6
  81. package/dist/{chunk-BKCI53W6.js → chunk-KNUYUQBP.js} +4 -4
  82. package/dist/{chunk-4LUWNBGD.js → chunk-KTLE7NIK.js} +23 -8
  83. package/dist/{chunk-ADXHPGBZ.js → chunk-LJHDUKBB.js} +6 -6
  84. package/dist/{chunk-U2P2LQ5B.js → chunk-LS42NV6E.js} +15 -6
  85. package/dist/{chunk-QNZ6G3LY.js → chunk-LYTWK5TF.js} +5 -5
  86. package/dist/{chunk-2VADJ6JH.js → chunk-METUT7V4.js} +2 -2
  87. package/dist/{chunk-P5HZEGT7.js → chunk-NSS2AIGI.js} +6 -6
  88. package/dist/{chunk-QSW3HAKI.js → chunk-NWN6GGJL.js} +61 -2
  89. package/dist/{chunk-7ILQX47W.js → chunk-P4RXSZDT.js} +3 -3
  90. package/dist/{chunk-FWS2KLV2.js → chunk-PIBWX3EF.js} +2 -2
  91. package/dist/{chunk-F56GTJFG.js → chunk-PO2P3XDC.js} +5 -5
  92. package/dist/{chunk-EEVE7H5Z.js → chunk-R2BZH2NK.js} +4 -4
  93. package/dist/{chunk-I2UBF2SS.js → chunk-RO2B4YBF.js} +1 -1
  94. package/dist/{chunk-MNKIR2ZB.js → chunk-RQOT6QL3.js} +67 -6
  95. package/dist/{chunk-Q2BD4IBX.js → chunk-SB6TYV4M.js} +11 -13
  96. package/dist/{chunk-ATPJGHUP.js → chunk-TI4JYPGQ.js} +7 -3
  97. package/dist/{chunk-LMC5UPL7.js → chunk-UC2J5RR4.js} +1 -1
  98. package/dist/{chunk-IZVEBBDH.js → chunk-UQIPWXBL.js} +3 -3
  99. package/dist/{chunk-VHKK3US3.js → chunk-UXN73YAE.js} +3 -3
  100. package/dist/{chunk-WOHP7EL6.js → chunk-VEYFXRZ6.js} +7 -6
  101. package/dist/{chunk-2Z7I7DHT.js → chunk-VHMZPN3N.js} +1 -1
  102. package/dist/{chunk-HVOQUPSO.js → chunk-VKZ3RJ5U.js} +1 -1
  103. package/dist/chunk-VVIQWGS7.js +2298 -0
  104. package/dist/{chunk-SCMEVDAR.js → chunk-WJLHZ6E6.js} +3 -3
  105. package/dist/{chunk-BAGBCSXA.js → chunk-X2MTVD4W.js} +1 -1
  106. package/dist/{chunk-3UNAPXED.js → chunk-XFDWLDHG.js} +9 -9
  107. package/dist/{chunk-6CZX6YOE.js → chunk-XNUWKKGS.js} +3 -3
  108. package/dist/{chunk-NUEPJ5W6.js → chunk-XZKSUJ55.js} +3 -5
  109. package/dist/{chunk-HDGB6SQ4.js → chunk-Y4MRHAE5.js} +2 -2
  110. package/dist/{chunk-SZBMTOUZ.js → chunk-Y6ZN454E.js} +1 -1
  111. package/dist/{chunk-TK4JU2F7.js → chunk-YSD4SMHE.js} +1 -1
  112. package/dist/{chunk-SROWUG5W.js → chunk-ZK5WYAMI.js} +1 -1
  113. package/dist/{chunk-JFKMPLNF.js → chunk-ZPIYJLQ3.js} +2 -2
  114. package/dist/{codex-app-cards-switch-HK4RMOBI.js → codex-app-cards-switch-25TDTMUZ.js} +11 -11
  115. package/dist/{codex-desktop-launch-OCO6N7SA.js → codex-desktop-launch-JDKUCD2Y.js} +1 -1
  116. package/dist/{codex-session-launch-ETZQTVFS.js → codex-session-launch-6N35AAEO.js} +18 -19
  117. package/dist/{config-YY54G3CC.js → config-OBGYURFX.js} +3 -3
  118. package/dist/{global-upgrade-5DN5G3ZQ.js → global-upgrade-2QNQD5OM.js} +10 -10
  119. package/dist/{identity-EGL6HAWG.js → identity-CUPX2U7Q.js} +4 -4
  120. package/dist/{live-capabilities-WU3FYJJG.js → live-capabilities-CUEIWMSM.js} +5 -5
  121. package/dist/{paths-ZG6KDM6Y.js → paths-BHLBZ6FY.js} +7 -3
  122. package/dist/{reapply-AQLNCCTE.js → reapply-4GXLWZ5M.js} +27 -27
  123. package/dist/src/index.js +30 -20
  124. package/dist/{upgrade-lock-BIRXIKHJ.js → upgrade-lock-RDKTAHWR.js} +4 -4
  125. package/dist/{usage-43C2DHDU.js → usage-KX2HN47E.js} +3 -3
  126. package/package.json +1 -1
  127. package/dist/chunk-ANP3DIST.js +0 -118
  128. package/dist/chunk-ONBL2GCU.js +0 -615
  129. package/dist/chunk-TJUJAK5L.js +0 -62
@@ -4,7 +4,7 @@ import {
4
4
  } from "../chunk-KEPESIIR.js";
5
5
  import {
6
6
  runBrowserLogin
7
- } from "../chunk-NOH3EJFH.js";
7
+ } from "../chunk-C4EDAHXI.js";
8
8
  import {
9
9
  INSTALL_NODE_STEP,
10
10
  NPM_FILE_IN_USE_STEP,
@@ -17,33 +17,36 @@ import {
17
17
  phoneStartServiceState,
18
18
  renderCommandSurface,
19
19
  unverifiedKeyClosingReason
20
- } from "../chunk-4LUWNBGD.js";
20
+ } from "../chunk-KTLE7NIK.js";
21
21
  import {
22
22
  coworkOutput,
23
23
  coworkSelection
24
- } from "../chunk-VHKK3US3.js";
24
+ } from "../chunk-UXN73YAE.js";
25
25
  import "../chunk-PUZZELE6.js";
26
26
  import {
27
27
  clearDeclinedAgent,
28
28
  declinedAgentForSetupChoice
29
- } from "../chunk-IZVEBBDH.js";
29
+ } from "../chunk-UQIPWXBL.js";
30
30
  import {
31
31
  describeVersionManagerPin,
32
32
  saveSetupFailure,
33
33
  versionManagerOf
34
- } from "../chunk-CSKABVSH.js";
34
+ } from "../chunk-JSPCGPSH.js";
35
35
  import {
36
+ HERMES_RESTART_COMMAND,
36
37
  codexTrustOutcome,
37
38
  describeCodexTrustConfirmation,
39
+ describeHermesInstallFailure,
40
+ describeHermesState,
38
41
  needsCodexTrustStep
39
- } from "../chunk-JCWHOB36.js";
42
+ } from "../chunk-IRV2MNMA.js";
40
43
  import {
41
44
  describeWaitLadder
42
45
  } from "../chunk-CVWG2N3Y.js";
43
46
  import {
44
47
  writeJsonError,
45
48
  writeStdoutFully
46
- } from "../chunk-2Z7I7DHT.js";
49
+ } from "../chunk-VHMZPN3N.js";
47
50
  import {
48
51
  BROWSER_CONNECT_COMMAND,
49
52
  confirmAppConnection,
@@ -52,7 +55,7 @@ import {
52
55
  pairingEscapeApplies,
53
56
  printConnectInstructions,
54
57
  waitForYourPhone
55
- } from "../chunk-EEVE7H5Z.js";
58
+ } from "../chunk-R2BZH2NK.js";
56
59
  import "../chunk-3EGEA4KH.js";
57
60
  import {
58
61
  SETUP_AGENT_NAME,
@@ -60,14 +63,14 @@ import {
60
63
  describeRoundTripOutcome,
61
64
  roundTripEvidence,
62
65
  verifyRoundTrip
63
- } from "../chunk-ICFHMJTW.js";
66
+ } from "../chunk-D7Z4USSB.js";
64
67
  import {
65
68
  readManagedControlEvidence,
66
69
  waitForMachineReadiness
67
- } from "../chunk-F56GTJFG.js";
70
+ } from "../chunk-PO2P3XDC.js";
68
71
  import {
69
72
  ensureCodexTrustsPusharyHooks
70
- } from "../chunk-HDGB6SQ4.js";
73
+ } from "../chunk-Y4MRHAE5.js";
71
74
  import {
72
75
  describeSetupSideEffects,
73
76
  installAgentSkill,
@@ -75,7 +78,7 @@ import {
75
78
  } from "../chunk-EUW7JL2K.js";
76
79
  import {
77
80
  codexEngineBehindLauncher
78
- } from "../chunk-JFKMPLNF.js";
81
+ } from "../chunk-ZPIYJLQ3.js";
79
82
  import "../chunk-XCEN33UP.js";
80
83
  import {
81
84
  CURSOR_PLUGIN_BACKUP_INFIX,
@@ -85,24 +88,36 @@ import {
85
88
  soleGateFile,
86
89
  soleGateReceipt,
87
90
  soleGateReceiptFile
88
- } from "../chunk-CU2PXLZ6.js";
91
+ } from "../chunk-JHB5SR5B.js";
89
92
  import {
90
- HERMES_PIP_PACKAGE,
91
93
  describeDetection,
92
94
  detectAllAgents,
93
95
  isDetected,
94
- isHermesConfigReceipt,
95
96
  pluginLocationSnippet,
96
97
  registerPluginLocation,
97
- resolveHermesPython,
98
- runHermesConfigScript,
99
98
  shortenHome,
100
99
  vscodeSettingsTargets
101
- } from "../chunk-ONBL2GCU.js";
100
+ } from "../chunk-76SWHCAR.js";
102
101
  import {
103
102
  mcpServerBearer,
104
103
  readMacAppAgentKey
105
- } from "../chunk-U2P2LQ5B.js";
104
+ } from "../chunk-LS42NV6E.js";
105
+ import {
106
+ keyScopeOf
107
+ } from "../chunk-5MOJCOCF.js";
108
+ import {
109
+ HERMES_CONFIG_FILE,
110
+ defaultHermesHome,
111
+ findHermesLauncher,
112
+ hermesPluginDirectory,
113
+ hermesReceiptPaths,
114
+ inspectHermesWiring,
115
+ installHermesPlugin,
116
+ isHermesWired,
117
+ routesHermesQuestions,
118
+ runsAnOlderPlugin,
119
+ shippedHermesPlugin
120
+ } from "../chunk-VVIQWGS7.js";
106
121
  import {
107
122
  setHumanStream
108
123
  } from "../chunk-QCGNGEGE.js";
@@ -119,7 +134,7 @@ import {
119
134
  readFxProfileForSetup,
120
135
  withFxPusharyServer,
121
136
  writeFxProfile
122
- } from "../chunk-QNZ6G3LY.js";
137
+ } from "../chunk-LYTWK5TF.js";
123
138
  import {
124
139
  AgentConfigError,
125
140
  afterAgentFailureNote,
@@ -132,10 +147,10 @@ import {
132
147
  retryAgentCommand,
133
148
  writeSetupConfigFile,
134
149
  writeSetupConfigJson
135
- } from "../chunk-W5L2ZLHE.js";
150
+ } from "../chunk-JOD2325S.js";
136
151
  import {
137
152
  MCP_BRIDGE_BINARY
138
- } from "../chunk-BEQ3MEE3.js";
153
+ } from "../chunk-JBRMIADM.js";
139
154
  import {
140
155
  OPENCODE_HOOK_BINARY,
141
156
  addOpenCodeMcpServer,
@@ -153,7 +168,7 @@ import {
153
168
  openCodePluginFile,
154
169
  openCodeWired,
155
170
  withOpenCodeAskRules
156
- } from "../chunk-P5HZEGT7.js";
171
+ } from "../chunk-NSS2AIGI.js";
157
172
  import {
158
173
  ansiPainter,
159
174
  createIo,
@@ -169,15 +184,15 @@ import {
169
184
  nodeCodexInstallProbe,
170
185
  phoneStartIsRequired,
171
186
  resolveControlPolicy
172
- } from "../chunk-R4FL5JHK.js";
187
+ } from "../chunk-KE4TSJUD.js";
173
188
  import {
174
189
  detectClaudeVersion
175
- } from "../chunk-HIYLAC3C.js";
176
- import "../chunk-RABLE5R6.js";
190
+ } from "../chunk-IVB5O6NY.js";
191
+ import "../chunk-BBFGDYYI.js";
177
192
  import {
178
193
  describeAutoUpdateAnnouncement,
179
194
  takeAutoUpdateAnnouncement
180
- } from "../chunk-DM24VZOI.js";
195
+ } from "../chunk-IXTVUINH.js";
181
196
  import {
182
197
  addCompatibleHooks,
183
198
  addCompatibleMcpServer,
@@ -191,7 +206,7 @@ import {
191
206
  compatibleRecord,
192
207
  compatibleTargetPaths,
193
208
  hasCompatibleHooks
194
- } from "../chunk-WY6YAMZW.js";
209
+ } from "../chunk-ICQCQAUO.js";
195
210
  import {
196
211
  DAEMON_COLD_START_TIMEOUT_MS,
197
212
  clearDaemonNeedsLogin,
@@ -206,9 +221,13 @@ import {
206
221
  replaceDaemonService,
207
222
  stopDaemonService,
208
223
  waitForDaemonRemoteProof
209
- } from "../chunk-ADXHPGBZ.js";
224
+ } from "../chunk-LJHDUKBB.js";
210
225
  import {
226
+ GEMINI_HOOK_BINARY,
227
+ GEMINI_HOOK_EVENTS,
211
228
  KEEP_HINT,
229
+ addGeminiHooks,
230
+ addGeminiMcpServer,
212
231
  captureHookTakeover,
213
232
  captureMcpServer,
214
233
  claudeWired,
@@ -218,24 +237,18 @@ import {
218
237
  geminiWired,
219
238
  planHooks,
220
239
  pusharyHookExecutable
221
- } from "../chunk-GTBWWCCM.js";
222
- import {
223
- GEMINI_HOOK_BINARY,
224
- GEMINI_HOOK_EVENTS,
225
- addGeminiHooks,
226
- addGeminiMcpServer
227
- } from "../chunk-ANP3DIST.js";
240
+ } from "../chunk-BFF3ABFV.js";
228
241
  import {
229
242
  AGENT_CHOICES,
230
243
  effectiveControlMode,
231
244
  effectiveVerify,
232
245
  parseSetupOptions
233
- } from "../chunk-SROWUG5W.js";
234
- import "../chunk-Z3M627TQ.js";
246
+ } from "../chunk-ZK5WYAMI.js";
247
+ import "../chunk-FONWVVDD.js";
235
248
  import "../chunk-NMUI3ZWG.js";
236
249
  import {
237
250
  transcriptPreferenceForSetup
238
- } from "../chunk-TK4JU2F7.js";
251
+ } from "../chunk-YSD4SMHE.js";
239
252
  import "../chunk-XHKBHWLX.js";
240
253
  import {
241
254
  KEY_FILE_MODE,
@@ -249,7 +262,7 @@ import {
249
262
  recordMacAppKeyPrefix,
250
263
  resolveShellRc,
251
264
  writeKey
252
- } from "../chunk-ED2SWTPC.js";
265
+ } from "../chunk-JOBSKQ2Z.js";
253
266
  import {
254
267
  CODEX_ENGINE_DIRECTORY,
255
268
  CODEX_ENGINE_ENTRYPOINT,
@@ -258,25 +271,25 @@ import {
258
271
  } from "../chunk-E46NE7FB.js";
259
272
  import {
260
273
  reportEvent
261
- } from "../chunk-3UNAPXED.js";
262
- import "../chunk-3KXBRSL3.js";
263
- import "../chunk-DTVHZDYM.js";
274
+ } from "../chunk-XFDWLDHG.js";
275
+ import "../chunk-GMHQYX3D.js";
276
+ import "../chunk-D3U6CN7T.js";
264
277
  import "../chunk-POFBE6ZY.js";
265
- import "../chunk-BKCI53W6.js";
278
+ import "../chunk-KNUYUQBP.js";
266
279
  import {
267
280
  checkApiKey,
268
281
  describeKeyCheck,
269
282
  samePusharyAccount
270
- } from "../chunk-UHS5MMAI.js";
271
- import "../chunk-7ILQX47W.js";
272
- import "../chunk-FWS2KLV2.js";
283
+ } from "../chunk-3THDNNVL.js";
284
+ import "../chunk-P4RXSZDT.js";
285
+ import "../chunk-PIBWX3EF.js";
273
286
  import {
274
287
  UsageError
275
288
  } from "../chunk-PPY5N2E6.js";
276
289
  import {
277
290
  EXIT
278
291
  } from "../chunk-KZERVKTD.js";
279
- import "../chunk-2VADJ6JH.js";
292
+ import "../chunk-METUT7V4.js";
280
293
  import {
281
294
  CLINE_AUTO_APPROVE_STEP,
282
295
  CLINE_RELOAD_STEP,
@@ -324,7 +337,6 @@ import {
324
337
  guardCursorGate,
325
338
  guardNodeScript,
326
339
  guardedArgv,
327
- hermesConfigReceipt,
328
340
  hookTakeoverReceipt,
329
341
  isClaudeMcpSnapshot,
330
342
  pusharyConfigFile,
@@ -335,7 +347,7 @@ import {
335
347
  vscodePluginDir,
336
348
  vscodePluginMcp,
337
349
  writeInstructionBlock
338
- } from "../chunk-ATPJGHUP.js";
350
+ } from "../chunk-TI4JYPGQ.js";
339
351
  import {
340
352
  NpmMissingError,
341
353
  backupFile,
@@ -348,14 +360,14 @@ import {
348
360
  readJsonSafe,
349
361
  resolveGlobalBinDir,
350
362
  resolveGlobalBinary
351
- } from "../chunk-SCMEVDAR.js";
363
+ } from "../chunk-WJLHZ6E6.js";
352
364
  import {
353
365
  getBaseUrl
354
- } from "../chunk-Y64JGYTB.js";
366
+ } from "../chunk-32OSSYGZ.js";
355
367
  import {
356
368
  NPX_LATEST_COMMAND,
357
369
  renderCommandHelp
358
- } from "../chunk-BAGBCSXA.js";
370
+ } from "../chunk-X2MTVD4W.js";
359
371
  import {
360
372
  getPackageVersion,
361
373
  isNewerVersion,
@@ -374,7 +386,7 @@ import {
374
386
  isRecord,
375
387
  isTimeoutAction,
376
388
  isValidApiKey
377
- } from "../chunk-MNKIR2ZB.js";
389
+ } from "../chunk-RQOT6QL3.js";
378
390
  import "../chunk-MLKGABMK.js";
379
391
 
380
392
  // bin/pushary-setup.ts
@@ -395,7 +407,7 @@ var agentSetupTargets = (exists) => ({
395
407
  claude_code: [claudeJson(), claudeSettings(), join(claudeSkillDir(), "SKILL.md")],
396
408
  codex: [join(codexHome(), "config.toml"), codexHooksJson(), join(codexSkillDir(), "SKILL.md"), codexAgentsMd()],
397
409
  gemini_cli: [geminiSettings(), geminiMd()],
398
- hermes: [`the Hermes virtualenv (pip install ${HERMES_PIP_PACKAGE})`],
410
+ hermes: [hermesPluginDirectory(defaultHermesHome()), join(defaultHermesHome(), HERMES_CONFIG_FILE)],
399
411
  cursor: [join(cursorPluginDir(), "mcp.json"), cursorUserHooks()],
400
412
  vscode: [vscodePluginMcp(), ...vscodeSettingsTargets(exists)],
401
413
  opencode: [
@@ -964,7 +976,6 @@ var pairingComputerOf = (host, platform, detectedAgents) => ({
964
976
  var CLAUDE_SETTINGS = claudeSettings();
965
977
  var CLAUDE_JSON = claudeJson();
966
978
  var CLAUDE_MCP_RECEIPT = claudeMcpReceipt();
967
- var HERMES_CONFIG_RECEIPT = hermesConfigReceipt();
968
979
  var CURSOR_PLUGIN_DIR = cursorPluginDir();
969
980
  var CURSOR_USER_HOOKS = cursorUserHooks();
970
981
  var VSCODE_PLUGIN_DIR = vscodePluginDir();
@@ -1188,60 +1199,56 @@ var setupClaudeCode = async (apiKey) => {
1188
1199
  console.log(` ${dim("\u2022")} Auto-allowed tools: no permission prompts for Pushary MCP calls`);
1189
1200
  };
1190
1201
  var IS_WINDOWS = process.platform === "win32";
1191
- var ensurePip = (python) => {
1192
- try {
1193
- execSync(`"${python}" -m pip --version`, { stdio: "ignore", timeout: 15e3 });
1194
- return;
1195
- } catch {
1196
- }
1197
- try {
1198
- execSync(`"${python}" -m ensurepip --upgrade`, { stdio: "pipe", timeout: 6e4 });
1199
- } catch {
1202
+ var keptHermesPluginLine = (folder, pluginDirectory) => folder?.kind === "pushary" ? ` ${check} Plugin ${folder.marker.version} already in ${shortenHome(pluginDirectory)}` : ` ${check} Kept the pushary plugin Hermes installed in ${shortenHome(pluginDirectory)}`;
1203
+ var reportHermesInstall = (outcome, version) => {
1204
+ const inspection = outcome.inspection;
1205
+ const folder = inspection.kind === "inspected" ? inspection.folder : null;
1206
+ const pluginDirectory = inspection.kind === "inspected" ? hermesPluginDirectory(inspection.home) : "the Hermes plugins folder";
1207
+ console.log(outcome.folderWritten ? ` ${check} Plugin ${version} written to ${shortenHome(pluginDirectory)}` : keptHermesPluginLine(folder, pluginDirectory));
1208
+ if (outcome.legacyCopyRemoved) console.log(` ${check} Removed the old pip copy that Hermes would have loaded instead`);
1209
+ console.log();
1210
+ console.log(` ${dim("What this configured:")}`);
1211
+ console.log(` ${dim("\u2022")} Native tools: pushary_ask, pushary_notify, pushary_wait, pushary_cancel, pushary_remind, pushary_propose_scope`);
1212
+ console.log(` ${dim("\u2022")} Approvals: Hermes' dangerous-command prompts go to your phone with allow once / this session / always / deny`);
1213
+ console.log(` ${dim("\u2022")} Falls back to the terminal prompt when no device is connected, so work never blocks on us`);
1214
+ console.log(folder !== null && routesHermesQuestions(folder) ? ` ${dim("\u2022")} Questions: the plugin sends Hermes' ${bold("clarify")} questions through pushary_ask while it is loaded` : ` ${dim("\u2022")} Questions: this plugin copy leaves Hermes' ${bold("clarify")} questions in the terminal`);
1215
+ console.log(` ${dim("To send approvals back to the terminal:")} ${bold("hermes config unset security.approval.transport")}`);
1216
+ if (inspection.kind !== "inspected") return;
1217
+ if (inspection.state.kind === "restart_needed" || runsAnOlderPlugin(inspection.state)) {
1218
+ console.log(` ${yellow("!")} ${describeHermesState(inspection.state)}: ${bold(HERMES_RESTART_COMMAND)}`);
1219
+ noteManual(`Restart Hermes to load the Pushary plugin: ${HERMES_RESTART_COMMAND}`);
1220
+ } else {
1221
+ console.log(` ${dim(describeHermesState(inspection.state))}`);
1200
1222
  }
1201
1223
  };
1202
- var enablePusharyPlugin = (python) => {
1203
- return runHermesConfigScript(python, "setup", HERMES_CONFIG_RECEIPT) !== "failed";
1204
- };
1205
1224
  var setupHermes = async (_apiKey) => {
1206
1225
  console.log(`
1207
1226
  ${bold("Setting up Hermes Agent")}
1208
1227
  `);
1209
- if (!isInstalled("hermes")) {
1228
+ if (!findHermesLauncher()) {
1210
1229
  console.log(` ${yellow("!")} Hermes CLI not found. Skipping.`);
1211
1230
  console.log(` ${dim("Install Hermes and re-run setup to configure.")}`);
1212
1231
  return "skipped";
1213
1232
  }
1214
- const python = resolveHermesPython();
1215
- if (!python) {
1216
- console.log(` ${yellow("!")} Could not locate the Python that Hermes runs in. Skipping.`);
1217
- noteManual(`Install the Hermes plugin by hand: <hermes-python> -m pip install ${HERMES_PIP_PACKAGE}`);
1233
+ const plugin = shippedHermesPlugin();
1234
+ const receipts = hermesReceiptPaths();
1235
+ const outcomes = [];
1236
+ await spinner("Installing the Pushary plugin into Hermes", async () => {
1237
+ outcomes.push(installHermesPlugin({ installedBy: "cli", plugin, receipts }));
1238
+ });
1239
+ const outcome = outcomes[0] ?? { kind: "no_launcher" };
1240
+ if (outcome.kind === "no_launcher") {
1241
+ console.log(` ${yellow("!")} Hermes CLI not found. Skipping.`);
1218
1242
  return "skipped";
1219
1243
  }
1220
- const existingReceipt = readJsonSafe(HERMES_CONFIG_RECEIPT);
1221
- if (existingReceipt.kind !== "missing" && (existingReceipt.kind !== "ok" || !isHermesConfigReceipt(existingReceipt.value))) {
1222
- throw new Error(`Cannot safely configure Hermes: ${HERMES_CONFIG_RECEIPT} is unreadable or invalid.`);
1223
- }
1224
- await spinner(`Installing ${HERMES_PIP_PACKAGE} into Hermes\u2019 environment`, async () => {
1225
- ensurePip(python);
1226
- execSync(`"${python}" -m pip install --upgrade ${HERMES_PIP_PACKAGE}`, { stdio: "pipe", timeout: 18e4 });
1227
- });
1228
- let pluginEnabled = false;
1229
- await spinner("Enabling plugin + routing questions to push", async () => {
1230
- pluginEnabled = enablePusharyPlugin(python);
1231
- });
1232
- if (!pluginEnabled) {
1233
- console.log(` ${yellow("!")} Installed the plugin, but could not edit Hermes' config.`);
1234
- noteManual('Add "pushary" to plugins.enabled and set security.approval.transport to "pushary" (with transport_fallback "builtin") in ~/.hermes/config.yaml, plus "clarify" in agent.disabled_toolsets');
1244
+ if (outcome.kind === "failed") {
1245
+ const message = describeHermesInstallFailure(outcome.reason, shortenHome(hermesPluginDirectory(defaultHermesHome())), shortenHome(receipts.receiptPath));
1246
+ console.log(` ${yellow("!")} ${message}`);
1247
+ noteManual(message);
1248
+ return "skipped";
1235
1249
  }
1236
- console.log();
1237
- console.log(` ${dim("What this configured:")}`);
1238
- console.log(` ${dim("\u2022")} Native tools: pushary_notify, pushary_ask, pushary_wait, pushary_cancel, pushary_propose_scope`);
1239
- console.log(` ${dim("\u2022")} Approvals: Hermes' dangerous-command prompts go to your phone with allow once / this session / always / deny`);
1240
- console.log(` ${dim("\u2022")} Falls back to the terminal prompt when no device is connected, so work never blocks on us`);
1241
- console.log(` ${dim("\u2022")} Questions go to your phone: Hermes' terminal ${bold("clarify")} tool is disabled, so pushary_ask handles every question`);
1242
- console.log(` ${dim("\u2022")} Auto-notifications: push alert when tools return errors`);
1243
- console.log(` ${dim("To send approvals back to the terminal:")} remove ${bold("security.approval.transport")} from ~/.hermes/config.yaml`);
1244
- console.log(` ${dim("To re-enable terminal questions:")} remove ${bold("clarify")} from ${dim("agent.disabled_toolsets")}`);
1250
+ reportHermesInstall(outcome, plugin.version);
1251
+ return "configured";
1245
1252
  };
1246
1253
  var CODEX_HOOKS_JSON = join4(CODEX_HOME, "hooks.json");
1247
1254
  var CODEX_HOOKS_MIN_VERSION = [0, 122, 0];
@@ -2094,6 +2101,10 @@ var agentIsWired = (agent) => {
2094
2101
  return fxWired();
2095
2102
  case "cline":
2096
2103
  return clineWired();
2104
+ case "hermes": {
2105
+ const inspection = inspectHermesWiring();
2106
+ return inspection.kind === "inspected" && isHermesWired(inspection.state);
2107
+ }
2097
2108
  default: {
2098
2109
  const profile = hookCompatibleProfile(agent);
2099
2110
  if (!profile) return true;
@@ -2652,6 +2663,7 @@ var main = async () => {
2652
2663
  if (!options.dryRun) recordSetupKey(trimmedKey);
2653
2664
  markStep("verify-key");
2654
2665
  const keyCheck = await verifyKeyOrExit(trimmedKey, options, storedKeyCheck ?? void 0);
2666
+ const keyScope = keyScopeOf(keyCheck);
2655
2667
  const wrongAccountHint = wrongAccountHintPlacement({
2656
2668
  canPairWithApp,
2657
2669
  reusedWithoutAsking: reuseAccepted && keyReuse === "announce",
@@ -2871,7 +2883,7 @@ var main = async () => {
2871
2883
  await spinner(prompt.waiting, async () => roundTripSpinnerEnd(await answer));
2872
2884
  roundTrip = await answer;
2873
2885
  markStep(CONNECT_PHONE_STEP);
2874
- const report = describeRoundTripOutcome(roundTrip, appPlatforms);
2886
+ const report = describeRoundTripOutcome(roundTrip, { appPlatforms, keyScope });
2875
2887
  if (!report.ok) console.log(` ${yellow("!")} ${report.message}`);
2876
2888
  for (const line of report.next) console.log(` ${dim(line)}`);
2877
2889
  } else if (verifyMode === "roundtrip" && keyCheck.kind === "ok") {
@@ -3066,7 +3078,7 @@ var main = async () => {
3066
3078
  for (const line of closing.next) console.log(` ${line}`);
3067
3079
  console.log();
3068
3080
  console.log(` ${dim("Useful:")}`);
3069
- for (const line of renderCommandSurface()) console.log(` ${dim(line)}`);
3081
+ for (const line of renderCommandSurface(keyScope)) console.log(` ${dim(line)}`);
3070
3082
  console.log();
3071
3083
  const exitCode = closing.exitCode;
3072
3084
  await reportSetupOutcome({
@@ -1,17 +1,17 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  exitOnHelpFlag
4
- } from "../chunk-AN7C3CHH.js";
4
+ } from "../chunk-77L2TNJW.js";
5
5
  import {
6
6
  readLedgerSummary
7
- } from "../chunk-XJIIU36L.js";
7
+ } from "../chunk-7YJSDXLM.js";
8
8
  import "../chunk-KZERVKTD.js";
9
9
  import {
10
10
  getApiKey
11
- } from "../chunk-Y64JGYTB.js";
12
- import "../chunk-BAGBCSXA.js";
11
+ } from "../chunk-32OSSYGZ.js";
12
+ import "../chunk-X2MTVD4W.js";
13
13
  import "../chunk-QTOLNRET.js";
14
- import "../chunk-MNKIR2ZB.js";
14
+ import "../chunk-RQOT6QL3.js";
15
15
  import "../chunk-MLKGABMK.js";
16
16
 
17
17
  // bin/pushary-stats.ts
@@ -1,77 +1,78 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  writeJsonError
4
- } from "../chunk-2Z7I7DHT.js";
4
+ } from "../chunk-VHMZPN3N.js";
5
5
  import {
6
6
  fetchChannels
7
- } from "../chunk-EEVE7H5Z.js";
7
+ } from "../chunk-R2BZH2NK.js";
8
8
  import "../chunk-3EGEA4KH.js";
9
9
  import {
10
10
  describeReach,
11
11
  reachVerdict
12
- } from "../chunk-ICFHMJTW.js";
12
+ } from "../chunk-D7Z4USSB.js";
13
13
  import {
14
14
  describeLastSeen,
15
15
  listMachines
16
- } from "../chunk-F56GTJFG.js";
17
- import {
18
- CONNECTED_THROUGH_MAC_APP,
19
- readMacAppConnectionWhenKeyless
20
- } from "../chunk-U2P2LQ5B.js";
21
- import "../chunk-QCGNGEGE.js";
16
+ } from "../chunk-PO2P3XDC.js";
22
17
  import {
23
18
  SIGNED_OUT_ON_MAC_MESSAGE,
24
19
  activeKeyVerdictOf,
25
20
  describeSignedOutKey,
26
21
  readSignedOutDiagnosis
27
- } from "../chunk-ITYKN2K3.js";
28
- import "../chunk-P5HZEGT7.js";
22
+ } from "../chunk-CHYBOTQN.js";
23
+ import {
24
+ CONNECTED_THROUGH_MAC_APP,
25
+ keyWrittenByMacApp,
26
+ readMacAppConnectionWhenKeyless
27
+ } from "../chunk-LS42NV6E.js";
28
+ import "../chunk-5MOJCOCF.js";
29
+ import "../chunk-QCGNGEGE.js";
30
+ import "../chunk-NSS2AIGI.js";
29
31
  import {
30
32
  createIo
31
33
  } from "../chunk-FO3MDD26.js";
32
34
  import {
33
35
  exitOnHelpFlag
34
- } from "../chunk-AN7C3CHH.js";
35
- import "../chunk-R4FL5JHK.js";
36
- import "../chunk-HIYLAC3C.js";
37
- import "../chunk-RABLE5R6.js";
38
- import "../chunk-WY6YAMZW.js";
39
- import "../chunk-ADXHPGBZ.js";
40
- import "../chunk-GTBWWCCM.js";
41
- import "../chunk-ANP3DIST.js";
42
- import "../chunk-SROWUG5W.js";
43
- import "../chunk-Z3M627TQ.js";
36
+ } from "../chunk-77L2TNJW.js";
37
+ import "../chunk-KE4TSJUD.js";
38
+ import "../chunk-IVB5O6NY.js";
39
+ import "../chunk-BBFGDYYI.js";
40
+ import "../chunk-ICQCQAUO.js";
41
+ import "../chunk-LJHDUKBB.js";
42
+ import "../chunk-BFF3ABFV.js";
43
+ import "../chunk-ZK5WYAMI.js";
44
+ import "../chunk-FONWVVDD.js";
44
45
  import {
45
46
  rejectUnknownFlags
46
47
  } from "../chunk-NMUI3ZWG.js";
47
48
  import "../chunk-XHKBHWLX.js";
48
49
  import {
49
50
  readKeySource
50
- } from "../chunk-ED2SWTPC.js";
51
- import "../chunk-3UNAPXED.js";
52
- import "../chunk-3KXBRSL3.js";
53
- import "../chunk-DTVHZDYM.js";
51
+ } from "../chunk-JOBSKQ2Z.js";
52
+ import "../chunk-XFDWLDHG.js";
53
+ import "../chunk-GMHQYX3D.js";
54
+ import "../chunk-D3U6CN7T.js";
54
55
  import "../chunk-POFBE6ZY.js";
55
- import "../chunk-BKCI53W6.js";
56
+ import "../chunk-KNUYUQBP.js";
56
57
  import {
57
58
  checkApiKey,
58
59
  describeKeyCheck
59
- } from "../chunk-UHS5MMAI.js";
60
- import "../chunk-7ILQX47W.js";
61
- import "../chunk-FWS2KLV2.js";
60
+ } from "../chunk-3THDNNVL.js";
61
+ import "../chunk-P4RXSZDT.js";
62
+ import "../chunk-PIBWX3EF.js";
62
63
  import {
63
64
  UsageError
64
65
  } from "../chunk-PPY5N2E6.js";
65
66
  import {
66
67
  EXIT
67
68
  } from "../chunk-KZERVKTD.js";
68
- import "../chunk-2VADJ6JH.js";
69
- import "../chunk-ATPJGHUP.js";
70
- import "../chunk-SCMEVDAR.js";
71
- import "../chunk-Y64JGYTB.js";
72
- import "../chunk-BAGBCSXA.js";
69
+ import "../chunk-METUT7V4.js";
70
+ import "../chunk-TI4JYPGQ.js";
71
+ import "../chunk-WJLHZ6E6.js";
72
+ import "../chunk-32OSSYGZ.js";
73
+ import "../chunk-X2MTVD4W.js";
73
74
  import "../chunk-QTOLNRET.js";
74
- import "../chunk-MNKIR2ZB.js";
75
+ import "../chunk-RQOT6QL3.js";
75
76
  import "../chunk-MLKGABMK.js";
76
77
 
77
78
  // src/status.ts
@@ -264,7 +265,7 @@ var main = async () => {
264
265
  keyCheck,
265
266
  channels,
266
267
  signedOut: readSignedOutDiagnosis(source.key, activeKeyVerdictOf(keyCheck)),
267
- macApp: readMacAppConnectionWhenKeyless(source.key)
268
+ macApp: readMacAppConnectionWhenKeyless(source.key, keyWrittenByMacApp(source.kind === "config" ? source.key : null))
268
269
  };
269
270
  const report = buildStatusReport(facts);
270
271
  if (json) {