pushary 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
@@ -4,7 +4,7 @@ import {
4
4
  } from "../chunk-KEPESIIR.js";
5
5
  import {
6
6
  runBrowserLogin
7
- } from "../chunk-R7C2FS33.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-3FQX74E4.js";
20
+ } from "../chunk-KTLE7NIK.js";
21
21
  import {
22
22
  coworkOutput,
23
23
  coworkSelection
24
- } from "../chunk-EU2ZOZC3.js";
24
+ } from "../chunk-UXN73YAE.js";
25
25
  import "../chunk-PUZZELE6.js";
26
26
  import {
27
27
  clearDeclinedAgent,
28
28
  declinedAgentForSetupChoice
29
- } from "../chunk-XDDSURY3.js";
29
+ } from "../chunk-UQIPWXBL.js";
30
30
  import {
31
31
  describeVersionManagerPin,
32
32
  saveSetupFailure,
33
33
  versionManagerOf
34
- } from "../chunk-376TUN72.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-4APD2DPI.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-XFQAK35L.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-DIUTSF6I.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-MNNQEUQC.js";
66
+ } from "../chunk-D7Z4USSB.js";
64
67
  import {
65
68
  readManagedControlEvidence,
66
69
  waitForMachineReadiness
67
- } from "../chunk-GWYCKTXS.js";
70
+ } from "../chunk-PO2P3XDC.js";
68
71
  import {
69
72
  ensureCodexTrustsPusharyHooks
70
- } from "../chunk-JL3SZJJP.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-AVWECJSN.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-IGO3AGZK.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-QBNICXMC.js";
100
+ } from "../chunk-76SWHCAR.js";
102
101
  import {
103
102
  mcpServerBearer,
104
103
  readMacAppAgentKey
105
- } from "../chunk-CN6JFM62.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-6ZXCWK27.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-5FJDODOA.js";
150
+ } from "../chunk-JOD2325S.js";
136
151
  import {
137
152
  MCP_BRIDGE_BINARY
138
- } from "../chunk-HUGVJBDN.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-7LK3Y6ET.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-T6YLXO6N.js";
187
+ } from "../chunk-KE4TSJUD.js";
173
188
  import {
174
189
  detectClaudeVersion
175
- } from "../chunk-MDIGG3Q7.js";
176
- import "../chunk-RJ6JEHCP.js";
190
+ } from "../chunk-IVB5O6NY.js";
191
+ import "../chunk-BBFGDYYI.js";
177
192
  import {
178
193
  describeAutoUpdateAnnouncement,
179
194
  takeAutoUpdateAnnouncement
180
- } from "../chunk-VURDLVAQ.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-3EZP5ZPS.js";
209
+ } from "../chunk-ICQCQAUO.js";
195
210
  import {
196
211
  DAEMON_COLD_START_TIMEOUT_MS,
197
212
  clearDaemonNeedsLogin,
@@ -206,7 +221,7 @@ import {
206
221
  replaceDaemonService,
207
222
  stopDaemonService,
208
223
  waitForDaemonRemoteProof
209
- } from "../chunk-57NTMVMI.js";
224
+ } from "../chunk-LJHDUKBB.js";
210
225
  import {
211
226
  GEMINI_HOOK_BINARY,
212
227
  GEMINI_HOOK_EVENTS,
@@ -222,18 +237,18 @@ import {
222
237
  geminiWired,
223
238
  planHooks,
224
239
  pusharyHookExecutable
225
- } from "../chunk-YQDCTID4.js";
240
+ } from "../chunk-BFF3ABFV.js";
226
241
  import {
227
242
  AGENT_CHOICES,
228
243
  effectiveControlMode,
229
244
  effectiveVerify,
230
245
  parseSetupOptions
231
- } from "../chunk-UTAARXYQ.js";
232
- import "../chunk-IQ3GKPFM.js";
246
+ } from "../chunk-ZK5WYAMI.js";
247
+ import "../chunk-FONWVVDD.js";
233
248
  import "../chunk-NMUI3ZWG.js";
234
249
  import {
235
250
  transcriptPreferenceForSetup
236
- } from "../chunk-XGFFNERF.js";
251
+ } from "../chunk-YSD4SMHE.js";
237
252
  import "../chunk-XHKBHWLX.js";
238
253
  import {
239
254
  KEY_FILE_MODE,
@@ -247,7 +262,7 @@ import {
247
262
  recordMacAppKeyPrefix,
248
263
  resolveShellRc,
249
264
  writeKey
250
- } from "../chunk-CNJ7SI5V.js";
265
+ } from "../chunk-JOBSKQ2Z.js";
251
266
  import {
252
267
  CODEX_ENGINE_DIRECTORY,
253
268
  CODEX_ENGINE_ENTRYPOINT,
@@ -256,25 +271,25 @@ import {
256
271
  } from "../chunk-E46NE7FB.js";
257
272
  import {
258
273
  reportEvent
259
- } from "../chunk-2BL6KWN7.js";
260
- import "../chunk-XXIJBYNW.js";
261
- import "../chunk-ZAZUDYSF.js";
274
+ } from "../chunk-XFDWLDHG.js";
275
+ import "../chunk-GMHQYX3D.js";
276
+ import "../chunk-D3U6CN7T.js";
262
277
  import "../chunk-POFBE6ZY.js";
263
- import "../chunk-Q5RNYE2L.js";
278
+ import "../chunk-KNUYUQBP.js";
264
279
  import {
265
280
  checkApiKey,
266
281
  describeKeyCheck,
267
282
  samePusharyAccount
268
- } from "../chunk-QR2QWGQI.js";
269
- import "../chunk-GECU7V44.js";
270
- import "../chunk-IA5VWIHV.js";
283
+ } from "../chunk-3THDNNVL.js";
284
+ import "../chunk-P4RXSZDT.js";
285
+ import "../chunk-PIBWX3EF.js";
271
286
  import {
272
287
  UsageError
273
288
  } from "../chunk-PPY5N2E6.js";
274
289
  import {
275
290
  EXIT
276
291
  } from "../chunk-KZERVKTD.js";
277
- import "../chunk-XIJTXRWB.js";
292
+ import "../chunk-METUT7V4.js";
278
293
  import {
279
294
  CLINE_AUTO_APPROVE_STEP,
280
295
  CLINE_RELOAD_STEP,
@@ -322,7 +337,6 @@ import {
322
337
  guardCursorGate,
323
338
  guardNodeScript,
324
339
  guardedArgv,
325
- hermesConfigReceipt,
326
340
  hookTakeoverReceipt,
327
341
  isClaudeMcpSnapshot,
328
342
  pusharyConfigFile,
@@ -333,7 +347,7 @@ import {
333
347
  vscodePluginDir,
334
348
  vscodePluginMcp,
335
349
  writeInstructionBlock
336
- } from "../chunk-GDLT32I4.js";
350
+ } from "../chunk-TI4JYPGQ.js";
337
351
  import {
338
352
  NpmMissingError,
339
353
  backupFile,
@@ -346,14 +360,14 @@ import {
346
360
  readJsonSafe,
347
361
  resolveGlobalBinDir,
348
362
  resolveGlobalBinary
349
- } from "../chunk-KS3O6O7E.js";
363
+ } from "../chunk-WJLHZ6E6.js";
350
364
  import {
351
365
  getBaseUrl
352
- } from "../chunk-A47UKPC7.js";
366
+ } from "../chunk-32OSSYGZ.js";
353
367
  import {
354
368
  NPX_LATEST_COMMAND,
355
369
  renderCommandHelp
356
- } from "../chunk-GO7YKPT3.js";
370
+ } from "../chunk-X2MTVD4W.js";
357
371
  import {
358
372
  getPackageVersion,
359
373
  isNewerVersion,
@@ -372,7 +386,7 @@ import {
372
386
  isRecord,
373
387
  isTimeoutAction,
374
388
  isValidApiKey
375
- } from "../chunk-EJR5JXMV.js";
389
+ } from "../chunk-RQOT6QL3.js";
376
390
  import "../chunk-MLKGABMK.js";
377
391
 
378
392
  // bin/pushary-setup.ts
@@ -393,7 +407,7 @@ var agentSetupTargets = (exists) => ({
393
407
  claude_code: [claudeJson(), claudeSettings(), join(claudeSkillDir(), "SKILL.md")],
394
408
  codex: [join(codexHome(), "config.toml"), codexHooksJson(), join(codexSkillDir(), "SKILL.md"), codexAgentsMd()],
395
409
  gemini_cli: [geminiSettings(), geminiMd()],
396
- hermes: [`the Hermes virtualenv (pip install ${HERMES_PIP_PACKAGE})`],
410
+ hermes: [hermesPluginDirectory(defaultHermesHome()), join(defaultHermesHome(), HERMES_CONFIG_FILE)],
397
411
  cursor: [join(cursorPluginDir(), "mcp.json"), cursorUserHooks()],
398
412
  vscode: [vscodePluginMcp(), ...vscodeSettingsTargets(exists)],
399
413
  opencode: [
@@ -962,7 +976,6 @@ var pairingComputerOf = (host, platform, detectedAgents) => ({
962
976
  var CLAUDE_SETTINGS = claudeSettings();
963
977
  var CLAUDE_JSON = claudeJson();
964
978
  var CLAUDE_MCP_RECEIPT = claudeMcpReceipt();
965
- var HERMES_CONFIG_RECEIPT = hermesConfigReceipt();
966
979
  var CURSOR_PLUGIN_DIR = cursorPluginDir();
967
980
  var CURSOR_USER_HOOKS = cursorUserHooks();
968
981
  var VSCODE_PLUGIN_DIR = vscodePluginDir();
@@ -1186,60 +1199,56 @@ var setupClaudeCode = async (apiKey) => {
1186
1199
  console.log(` ${dim("\u2022")} Auto-allowed tools: no permission prompts for Pushary MCP calls`);
1187
1200
  };
1188
1201
  var IS_WINDOWS = process.platform === "win32";
1189
- var ensurePip = (python) => {
1190
- try {
1191
- execSync(`"${python}" -m pip --version`, { stdio: "ignore", timeout: 15e3 });
1192
- return;
1193
- } catch {
1194
- }
1195
- try {
1196
- execSync(`"${python}" -m ensurepip --upgrade`, { stdio: "pipe", timeout: 6e4 });
1197
- } 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))}`);
1198
1222
  }
1199
1223
  };
1200
- var enablePusharyPlugin = (python) => {
1201
- return runHermesConfigScript(python, "setup", HERMES_CONFIG_RECEIPT) !== "failed";
1202
- };
1203
1224
  var setupHermes = async (_apiKey) => {
1204
1225
  console.log(`
1205
1226
  ${bold("Setting up Hermes Agent")}
1206
1227
  `);
1207
- if (!isInstalled("hermes")) {
1228
+ if (!findHermesLauncher()) {
1208
1229
  console.log(` ${yellow("!")} Hermes CLI not found. Skipping.`);
1209
1230
  console.log(` ${dim("Install Hermes and re-run setup to configure.")}`);
1210
1231
  return "skipped";
1211
1232
  }
1212
- const python = resolveHermesPython();
1213
- if (!python) {
1214
- console.log(` ${yellow("!")} Could not locate the Python that Hermes runs in. Skipping.`);
1215
- 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.`);
1216
1242
  return "skipped";
1217
1243
  }
1218
- const existingReceipt = readJsonSafe(HERMES_CONFIG_RECEIPT);
1219
- if (existingReceipt.kind !== "missing" && (existingReceipt.kind !== "ok" || !isHermesConfigReceipt(existingReceipt.value))) {
1220
- throw new Error(`Cannot safely configure Hermes: ${HERMES_CONFIG_RECEIPT} is unreadable or invalid.`);
1221
- }
1222
- await spinner(`Installing ${HERMES_PIP_PACKAGE} into Hermes\u2019 environment`, async () => {
1223
- ensurePip(python);
1224
- execSync(`"${python}" -m pip install --upgrade ${HERMES_PIP_PACKAGE}`, { stdio: "pipe", timeout: 18e4 });
1225
- });
1226
- let pluginEnabled = false;
1227
- await spinner("Enabling plugin + routing questions to push", async () => {
1228
- pluginEnabled = enablePusharyPlugin(python);
1229
- });
1230
- if (!pluginEnabled) {
1231
- console.log(` ${yellow("!")} Installed the plugin, but could not edit Hermes' config.`);
1232
- 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";
1233
1249
  }
1234
- console.log();
1235
- console.log(` ${dim("What this configured:")}`);
1236
- console.log(` ${dim("\u2022")} Native tools: pushary_notify, pushary_ask, pushary_wait, pushary_cancel, pushary_propose_scope`);
1237
- console.log(` ${dim("\u2022")} Approvals: Hermes' dangerous-command prompts go to your phone with allow once / this session / always / deny`);
1238
- console.log(` ${dim("\u2022")} Falls back to the terminal prompt when no device is connected, so work never blocks on us`);
1239
- console.log(` ${dim("\u2022")} Questions go to your phone: Hermes' terminal ${bold("clarify")} tool is disabled, so pushary_ask handles every question`);
1240
- console.log(` ${dim("\u2022")} Auto-notifications: push alert when tools return errors`);
1241
- console.log(` ${dim("To send approvals back to the terminal:")} remove ${bold("security.approval.transport")} from ~/.hermes/config.yaml`);
1242
- console.log(` ${dim("To re-enable terminal questions:")} remove ${bold("clarify")} from ${dim("agent.disabled_toolsets")}`);
1250
+ reportHermesInstall(outcome, plugin.version);
1251
+ return "configured";
1243
1252
  };
1244
1253
  var CODEX_HOOKS_JSON = join4(CODEX_HOME, "hooks.json");
1245
1254
  var CODEX_HOOKS_MIN_VERSION = [0, 122, 0];
@@ -2092,6 +2101,10 @@ var agentIsWired = (agent) => {
2092
2101
  return fxWired();
2093
2102
  case "cline":
2094
2103
  return clineWired();
2104
+ case "hermes": {
2105
+ const inspection = inspectHermesWiring();
2106
+ return inspection.kind === "inspected" && isHermesWired(inspection.state);
2107
+ }
2095
2108
  default: {
2096
2109
  const profile = hookCompatibleProfile(agent);
2097
2110
  if (!profile) return true;
@@ -2650,6 +2663,7 @@ var main = async () => {
2650
2663
  if (!options.dryRun) recordSetupKey(trimmedKey);
2651
2664
  markStep("verify-key");
2652
2665
  const keyCheck = await verifyKeyOrExit(trimmedKey, options, storedKeyCheck ?? void 0);
2666
+ const keyScope = keyScopeOf(keyCheck);
2653
2667
  const wrongAccountHint = wrongAccountHintPlacement({
2654
2668
  canPairWithApp,
2655
2669
  reusedWithoutAsking: reuseAccepted && keyReuse === "announce",
@@ -2869,7 +2883,7 @@ var main = async () => {
2869
2883
  await spinner(prompt.waiting, async () => roundTripSpinnerEnd(await answer));
2870
2884
  roundTrip = await answer;
2871
2885
  markStep(CONNECT_PHONE_STEP);
2872
- const report = describeRoundTripOutcome(roundTrip, appPlatforms);
2886
+ const report = describeRoundTripOutcome(roundTrip, { appPlatforms, keyScope });
2873
2887
  if (!report.ok) console.log(` ${yellow("!")} ${report.message}`);
2874
2888
  for (const line of report.next) console.log(` ${dim(line)}`);
2875
2889
  } else if (verifyMode === "roundtrip" && keyCheck.kind === "ok") {
@@ -3064,7 +3078,7 @@ var main = async () => {
3064
3078
  for (const line of closing.next) console.log(` ${line}`);
3065
3079
  console.log();
3066
3080
  console.log(` ${dim("Useful:")}`);
3067
- for (const line of renderCommandSurface()) console.log(` ${dim(line)}`);
3081
+ for (const line of renderCommandSurface(keyScope)) console.log(` ${dim(line)}`);
3068
3082
  console.log();
3069
3083
  const exitCode = closing.exitCode;
3070
3084
  await reportSetupOutcome({
@@ -1,17 +1,17 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  exitOnHelpFlag
4
- } from "../chunk-G6VJZ3RB.js";
4
+ } from "../chunk-77L2TNJW.js";
5
5
  import {
6
6
  readLedgerSummary
7
- } from "../chunk-6BGVSV2Q.js";
7
+ } from "../chunk-7YJSDXLM.js";
8
8
  import "../chunk-KZERVKTD.js";
9
9
  import {
10
10
  getApiKey
11
- } from "../chunk-A47UKPC7.js";
12
- import "../chunk-GO7YKPT3.js";
11
+ } from "../chunk-32OSSYGZ.js";
12
+ import "../chunk-X2MTVD4W.js";
13
13
  import "../chunk-QTOLNRET.js";
14
- import "../chunk-EJR5JXMV.js";
14
+ import "../chunk-RQOT6QL3.js";
15
15
  import "../chunk-MLKGABMK.js";
16
16
 
17
17
  // bin/pushary-stats.ts
@@ -1,76 +1,78 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  writeJsonError
4
- } from "../chunk-XFQAK35L.js";
4
+ } from "../chunk-VHMZPN3N.js";
5
5
  import {
6
6
  fetchChannels
7
- } from "../chunk-DIUTSF6I.js";
7
+ } from "../chunk-R2BZH2NK.js";
8
8
  import "../chunk-3EGEA4KH.js";
9
9
  import {
10
10
  describeReach,
11
11
  reachVerdict
12
- } from "../chunk-MNNQEUQC.js";
12
+ } from "../chunk-D7Z4USSB.js";
13
13
  import {
14
14
  describeLastSeen,
15
15
  listMachines
16
- } from "../chunk-GWYCKTXS.js";
17
- import {
18
- CONNECTED_THROUGH_MAC_APP,
19
- readMacAppConnectionWhenKeyless
20
- } from "../chunk-CN6JFM62.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-YB3HMDKE.js";
28
- import "../chunk-7LK3Y6ET.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-G6VJZ3RB.js";
35
- import "../chunk-T6YLXO6N.js";
36
- import "../chunk-MDIGG3Q7.js";
37
- import "../chunk-RJ6JEHCP.js";
38
- import "../chunk-3EZP5ZPS.js";
39
- import "../chunk-57NTMVMI.js";
40
- import "../chunk-YQDCTID4.js";
41
- import "../chunk-UTAARXYQ.js";
42
- import "../chunk-IQ3GKPFM.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";
43
45
  import {
44
46
  rejectUnknownFlags
45
47
  } from "../chunk-NMUI3ZWG.js";
46
48
  import "../chunk-XHKBHWLX.js";
47
49
  import {
48
50
  readKeySource
49
- } from "../chunk-CNJ7SI5V.js";
50
- import "../chunk-2BL6KWN7.js";
51
- import "../chunk-XXIJBYNW.js";
52
- import "../chunk-ZAZUDYSF.js";
51
+ } from "../chunk-JOBSKQ2Z.js";
52
+ import "../chunk-XFDWLDHG.js";
53
+ import "../chunk-GMHQYX3D.js";
54
+ import "../chunk-D3U6CN7T.js";
53
55
  import "../chunk-POFBE6ZY.js";
54
- import "../chunk-Q5RNYE2L.js";
56
+ import "../chunk-KNUYUQBP.js";
55
57
  import {
56
58
  checkApiKey,
57
59
  describeKeyCheck
58
- } from "../chunk-QR2QWGQI.js";
59
- import "../chunk-GECU7V44.js";
60
- import "../chunk-IA5VWIHV.js";
60
+ } from "../chunk-3THDNNVL.js";
61
+ import "../chunk-P4RXSZDT.js";
62
+ import "../chunk-PIBWX3EF.js";
61
63
  import {
62
64
  UsageError
63
65
  } from "../chunk-PPY5N2E6.js";
64
66
  import {
65
67
  EXIT
66
68
  } from "../chunk-KZERVKTD.js";
67
- import "../chunk-XIJTXRWB.js";
68
- import "../chunk-GDLT32I4.js";
69
- import "../chunk-KS3O6O7E.js";
70
- import "../chunk-A47UKPC7.js";
71
- import "../chunk-GO7YKPT3.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";
72
74
  import "../chunk-QTOLNRET.js";
73
- import "../chunk-EJR5JXMV.js";
75
+ import "../chunk-RQOT6QL3.js";
74
76
  import "../chunk-MLKGABMK.js";
75
77
 
76
78
  // src/status.ts
@@ -263,7 +265,7 @@ var main = async () => {
263
265
  keyCheck,
264
266
  channels,
265
267
  signedOut: readSignedOutDiagnosis(source.key, activeKeyVerdictOf(keyCheck)),
266
- macApp: readMacAppConnectionWhenKeyless(source.key)
268
+ macApp: readMacAppConnectionWhenKeyless(source.key, keyWrittenByMacApp(source.kind === "config" ? source.key : null))
267
269
  };
268
270
  const report = buildStatusReport(facts);
269
271
  if (json) {
@@ -1,43 +1,43 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  readHookInput
4
- } from "../chunk-QN25WBXL.js";
5
- import "../chunk-SVKCYUYP.js";
6
- import "../chunk-DBUHSUL7.js";
4
+ } from "../chunk-EQR6JSFE.js";
5
+ import "../chunk-SB6TYV4M.js";
6
+ import "../chunk-Y6ZN454E.js";
7
7
  import {
8
8
  activeHookSource,
9
9
  activeIdentity
10
- } from "../chunk-3EZP5ZPS.js";
11
- import "../chunk-57NTMVMI.js";
12
- import "../chunk-YQDCTID4.js";
13
- import "../chunk-UTAARXYQ.js";
14
- import "../chunk-IQ3GKPFM.js";
10
+ } from "../chunk-ICQCQAUO.js";
11
+ import "../chunk-LJHDUKBB.js";
12
+ import "../chunk-BFF3ABFV.js";
13
+ import "../chunk-ZK5WYAMI.js";
14
+ import "../chunk-FONWVVDD.js";
15
15
  import "../chunk-NMUI3ZWG.js";
16
- import "../chunk-XEXF2OFZ.js";
17
- import "../chunk-XGFFNERF.js";
16
+ import "../chunk-NWN6GGJL.js";
17
+ import "../chunk-YSD4SMHE.js";
18
18
  import "../chunk-XHKBHWLX.js";
19
- import "../chunk-CNJ7SI5V.js";
19
+ import "../chunk-JOBSKQ2Z.js";
20
20
  import {
21
21
  handleStop,
22
22
  handleSubagentStop,
23
23
  isSubagentStop
24
- } from "../chunk-2BL6KWN7.js";
25
- import "../chunk-XXIJBYNW.js";
26
- import "../chunk-ZAZUDYSF.js";
24
+ } from "../chunk-XFDWLDHG.js";
25
+ import "../chunk-GMHQYX3D.js";
26
+ import "../chunk-D3U6CN7T.js";
27
27
  import "../chunk-POFBE6ZY.js";
28
- import "../chunk-Q5RNYE2L.js";
29
- import "../chunk-QR2QWGQI.js";
30
- import "../chunk-GECU7V44.js";
31
- import "../chunk-IA5VWIHV.js";
28
+ import "../chunk-KNUYUQBP.js";
29
+ import "../chunk-3THDNNVL.js";
30
+ import "../chunk-P4RXSZDT.js";
31
+ import "../chunk-PIBWX3EF.js";
32
32
  import "../chunk-PPY5N2E6.js";
33
33
  import "../chunk-KZERVKTD.js";
34
- import "../chunk-XIJTXRWB.js";
35
- import "../chunk-GDLT32I4.js";
36
- import "../chunk-KS3O6O7E.js";
37
- import "../chunk-A47UKPC7.js";
38
- import "../chunk-GO7YKPT3.js";
34
+ import "../chunk-METUT7V4.js";
35
+ import "../chunk-TI4JYPGQ.js";
36
+ import "../chunk-WJLHZ6E6.js";
37
+ import "../chunk-32OSSYGZ.js";
38
+ import "../chunk-X2MTVD4W.js";
39
39
  import "../chunk-QTOLNRET.js";
40
- import "../chunk-EJR5JXMV.js";
40
+ import "../chunk-RQOT6QL3.js";
41
41
  import "../chunk-MLKGABMK.js";
42
42
 
43
43
  // bin/pushary-stop-hook.ts