@pushary/agent-hooks 1.9.66 → 1.9.68

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 +15 -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-6Q7XIB67.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 +126 -72
  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 +115 -98
  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 +66 -38
  44. package/dist/bin/pushary-wait.js +26 -20
  45. package/dist/bin/pushary.js +7 -7
  46. package/dist/{chunk-ZJV7SFIJ.js → chunk-2HMKZYF5.js} +1 -1
  47. package/dist/{chunk-IA5VWIHV.js → chunk-2VYQG2HG.js} +2 -2
  48. package/dist/{chunk-A47UKPC7.js → chunk-32OSSYGZ.js} +1 -1
  49. package/dist/{chunk-DBUHSUL7.js → chunk-4TIN3T2A.js} +1 -1
  50. package/dist/{chunk-JL3SZJJP.js → chunk-53Q4LRBU.js} +2 -2
  51. package/dist/{chunk-HUGVJBDN.js → chunk-53RH3ZIK.js} +2 -2
  52. package/dist/{chunk-2BL6KWN7.js → chunk-6IFEYELN.js} +9 -9
  53. package/dist/{chunk-DKMVVBXO.js → chunk-6VFZVL65.js} +55 -13
  54. package/dist/{chunk-YQDCTID4.js → chunk-73DHP3JX.js} +4 -4
  55. package/dist/{chunk-G6VJZ3RB.js → chunk-77L2TNJW.js} +1 -1
  56. package/dist/{chunk-IQ3GKPFM.js → chunk-77QP22FL.js} +1 -1
  57. package/dist/{chunk-VURDLVAQ.js → chunk-7S7NTMDJ.js} +3 -3
  58. package/dist/{chunk-4APD2DPI.js → chunk-7SKGS7QN.js} +53 -3
  59. package/dist/chunk-7V63A4AI.js +25 -0
  60. package/dist/{chunk-6BGVSV2Q.js → chunk-7YJSDXLM.js} +1 -1
  61. package/dist/{chunk-MNNQEUQC.js → chunk-AJIT4SCL.js} +27 -8
  62. package/dist/{chunk-QR2QWGQI.js → chunk-BSMHSN3Y.js} +3 -3
  63. package/dist/{chunk-R7C2FS33.js → chunk-C4EDAHXI.js} +1 -1
  64. package/dist/{chunk-7LK3Y6ET.js → chunk-CB4U6WRP.js} +6 -6
  65. package/dist/chunk-D6W7QDQE.js +2298 -0
  66. package/dist/{chunk-V4EOFOB2.js → chunk-E5PEOVUJ.js} +6 -6
  67. package/dist/{chunk-32ZT2ATY.js → chunk-EOWHEZHD.js} +8 -8
  68. package/dist/{chunk-57NTMVMI.js → chunk-EUU5PDUI.js} +6 -6
  69. package/dist/{chunk-XXIJBYNW.js → chunk-GMHQYX3D.js} +1 -1
  70. package/dist/{chunk-V3YBVOTZ.js → chunk-I5FFSOCV.js} +2 -2
  71. package/dist/{chunk-RJ6JEHCP.js → chunk-JAKWPQ2L.js} +1 -1
  72. package/dist/{chunk-XDDSURY3.js → chunk-JPVV27O2.js} +3 -3
  73. package/dist/{chunk-GWYCKTXS.js → chunk-K4TSXWVX.js} +5 -5
  74. package/dist/chunk-LF2NSOAQ.js +299 -0
  75. package/dist/{chunk-6RJZSBPD.js → chunk-LGCVAE52.js} +1 -1
  76. package/dist/{chunk-GDLT32I4.js → chunk-LQAAOXYJ.js} +21 -13
  77. package/dist/{chunk-3ELJIG2R.js → chunk-MCNHNIRC.js} +3 -3
  78. package/dist/{chunk-XIJTXRWB.js → chunk-METUT7V4.js} +2 -2
  79. package/dist/{chunk-MDIGG3Q7.js → chunk-MFWHANKG.js} +3 -3
  80. package/dist/{chunk-GECU7V44.js → chunk-MHC34X5A.js} +3 -3
  81. package/dist/{chunk-376TUN72.js → chunk-MMTA7UKA.js} +3 -3
  82. package/dist/{chunk-XGFFNERF.js → chunk-MUDUWF74.js} +1 -1
  83. package/dist/{chunk-KS3O6O7E.js → chunk-NAQCWM4U.js} +3 -3
  84. package/dist/{chunk-TQNFDNJA.js → chunk-NKPSJOHJ.js} +6 -6
  85. package/dist/{chunk-DPU6H4JY.js → chunk-NLDEC4Y7.js} +3 -3
  86. package/dist/{chunk-XEXF2OFZ.js → chunk-NWN6GGJL.js} +2 -2
  87. package/dist/{chunk-IGO3AGZK.js → chunk-O655YCOG.js} +4 -4
  88. package/dist/{chunk-5FJDODOA.js → chunk-ODAAK2RZ.js} +3 -3
  89. package/dist/{chunk-AVWECJSN.js → chunk-ORHVVRVL.js} +2 -2
  90. package/dist/{chunk-YB3HMDKE.js → chunk-P4XZX7CL.js} +2 -2
  91. package/dist/{chunk-CNJ7SI5V.js → chunk-PBEW5CJK.js} +4 -4
  92. package/dist/{chunk-CN6JFM62.js → chunk-PEPRUUGM.js} +15 -6
  93. package/dist/{chunk-QN25WBXL.js → chunk-PGOPIIOQ.js} +7 -7
  94. package/dist/{chunk-Q5RNYE2L.js → chunk-PZZKXX6Q.js} +4 -4
  95. package/dist/{chunk-SVKCYUYP.js → chunk-Q6JXE3PD.js} +9 -9
  96. package/dist/{chunk-ZAZUDYSF.js → chunk-QYTOYNV2.js} +5 -5
  97. package/dist/{chunk-3FQX74E4.js → chunk-REQO3WWO.js} +23 -8
  98. package/dist/{chunk-EJR5JXMV.js → chunk-RQOT6QL3.js} +43 -5
  99. package/dist/{chunk-AWGBL4P3.js → chunk-RWXDWOQQ.js} +89 -41
  100. package/dist/{chunk-6ZXCWK27.js → chunk-SL7CIZCL.js} +60 -6
  101. package/dist/{chunk-3EZP5ZPS.js → chunk-TVVJ6OYG.js} +4 -4
  102. package/dist/{chunk-B6JC676X.js → chunk-UC2J5RR4.js} +1 -1
  103. package/dist/{chunk-26W46E46.js → chunk-UETS2WEA.js} +27 -10
  104. package/dist/{chunk-EU2ZOZC3.js → chunk-UXN73YAE.js} +3 -3
  105. package/dist/{chunk-XFQAK35L.js → chunk-VHMZPN3N.js} +1 -1
  106. package/dist/{chunk-45KMS76L.js → chunk-VKZ3RJ5U.js} +1 -1
  107. package/dist/{chunk-T6YLXO6N.js → chunk-VRFFMTIG.js} +4 -4
  108. package/dist/{chunk-DIUTSF6I.js → chunk-WPOXZPEH.js} +4 -4
  109. package/dist/{chunk-GO7YKPT3.js → chunk-X2MTVD4W.js} +1 -1
  110. package/dist/{chunk-5J7OZBJ4.js → chunk-XQKB4LEK.js} +2 -2
  111. package/dist/{chunk-QOIPUYUD.js → chunk-XZKSUJ55.js} +1 -1
  112. package/dist/{chunk-RSZQEEEW.js → chunk-YZHJQG6W.js} +8 -6
  113. package/dist/{chunk-UTAARXYQ.js → chunk-ZK5WYAMI.js} +1 -1
  114. package/dist/{codex-app-cards-switch-W7OLKOMO.js → codex-app-cards-switch-VZ4XIDJO.js} +11 -11
  115. package/dist/{codex-desktop-launch-U6V3AXZF.js → codex-desktop-launch-CX2IE5BI.js} +1 -1
  116. package/dist/{codex-session-launch-EFU46WBL.js → codex-session-launch-WUIM6ZGA.js} +18 -18
  117. package/dist/{config-UC4LMCNX.js → config-OBGYURFX.js} +3 -3
  118. package/dist/{global-upgrade-ABF5O3HU.js → global-upgrade-XZ5L7LDB.js} +10 -10
  119. package/dist/{identity-3ZUZPHN6.js → identity-TGQPFIE4.js} +4 -4
  120. package/dist/{live-capabilities-BXWXJARK.js → live-capabilities-JHESROAP.js} +5 -5
  121. package/dist/{paths-FO76CFRQ.js → paths-EOMNC4QM.js} +7 -3
  122. package/dist/{reapply-3T3DFUAI.js → reapply-J5HHUUBE.js} +27 -26
  123. package/dist/src/index.js +28 -28
  124. package/dist/{upgrade-lock-EZ5JIPJE.js → upgrade-lock-VQORI6G5.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-REQO3WWO.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-JPVV27O2.js";
30
30
  import {
31
31
  describeVersionManagerPin,
32
32
  saveSetupFailure,
33
33
  versionManagerOf
34
- } from "../chunk-376TUN72.js";
34
+ } from "../chunk-MMTA7UKA.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-7SKGS7QN.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-WPOXZPEH.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-AJIT4SCL.js";
64
67
  import {
65
68
  readManagedControlEvidence,
66
69
  waitForMachineReadiness
67
- } from "../chunk-GWYCKTXS.js";
70
+ } from "../chunk-K4TSXWVX.js";
68
71
  import {
69
72
  ensureCodexTrustsPusharyHooks
70
- } from "../chunk-JL3SZJJP.js";
73
+ } from "../chunk-53Q4LRBU.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-ORHVVRVL.js";
79
82
  import "../chunk-XCEN33UP.js";
80
83
  import {
81
84
  CURSOR_PLUGIN_BACKUP_INFIX,
@@ -85,41 +88,55 @@ import {
85
88
  soleGateFile,
86
89
  soleGateReceipt,
87
90
  soleGateReceiptFile
88
- } from "../chunk-IGO3AGZK.js";
91
+ } from "../chunk-O655YCOG.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-LF2NSOAQ.js";
102
101
  import {
103
102
  mcpServerBearer,
104
103
  readMacAppAgentKey
105
- } from "../chunk-CN6JFM62.js";
104
+ } from "../chunk-PEPRUUGM.js";
105
+ import {
106
+ keyScopeOf
107
+ } from "../chunk-7V63A4AI.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-D6W7QDQE.js";
106
121
  import {
107
122
  setHumanStream
108
123
  } from "../chunk-QCGNGEGE.js";
109
124
  import {
110
125
  FX_PUSHARY_TOOLS_RULE,
111
126
  FX_QUESTION_TOOL,
127
+ cliFxBridgeEntry,
112
128
  configureClineServer,
113
129
  configureFxSettings,
114
130
  fxIgnoresInstructionsFile,
115
131
  fxInstructionsBody,
116
- fxPusharyEntry,
132
+ fxOtherHttpServersNote,
117
133
  inspectClineInstallation,
118
134
  inspectFxInstallation,
135
+ inspectFxPusharyHttpWiring,
119
136
  readFxProfileForSetup,
120
137
  withFxPusharyServer,
121
138
  writeFxProfile
122
- } from "../chunk-6ZXCWK27.js";
139
+ } from "../chunk-SL7CIZCL.js";
123
140
  import {
124
141
  AgentConfigError,
125
142
  afterAgentFailureNote,
@@ -132,10 +149,10 @@ import {
132
149
  retryAgentCommand,
133
150
  writeSetupConfigFile,
134
151
  writeSetupConfigJson
135
- } from "../chunk-5FJDODOA.js";
152
+ } from "../chunk-ODAAK2RZ.js";
136
153
  import {
137
154
  MCP_BRIDGE_BINARY
138
- } from "../chunk-HUGVJBDN.js";
155
+ } from "../chunk-53RH3ZIK.js";
139
156
  import {
140
157
  OPENCODE_HOOK_BINARY,
141
158
  addOpenCodeMcpServer,
@@ -153,7 +170,7 @@ import {
153
170
  openCodePluginFile,
154
171
  openCodeWired,
155
172
  withOpenCodeAskRules
156
- } from "../chunk-7LK3Y6ET.js";
173
+ } from "../chunk-CB4U6WRP.js";
157
174
  import {
158
175
  ansiPainter,
159
176
  createIo,
@@ -169,15 +186,15 @@ import {
169
186
  nodeCodexInstallProbe,
170
187
  phoneStartIsRequired,
171
188
  resolveControlPolicy
172
- } from "../chunk-T6YLXO6N.js";
189
+ } from "../chunk-VRFFMTIG.js";
173
190
  import {
174
191
  detectClaudeVersion
175
- } from "../chunk-MDIGG3Q7.js";
176
- import "../chunk-RJ6JEHCP.js";
192
+ } from "../chunk-MFWHANKG.js";
193
+ import "../chunk-JAKWPQ2L.js";
177
194
  import {
178
195
  describeAutoUpdateAnnouncement,
179
196
  takeAutoUpdateAnnouncement
180
- } from "../chunk-VURDLVAQ.js";
197
+ } from "../chunk-7S7NTMDJ.js";
181
198
  import {
182
199
  addCompatibleHooks,
183
200
  addCompatibleMcpServer,
@@ -191,7 +208,7 @@ import {
191
208
  compatibleRecord,
192
209
  compatibleTargetPaths,
193
210
  hasCompatibleHooks
194
- } from "../chunk-3EZP5ZPS.js";
211
+ } from "../chunk-TVVJ6OYG.js";
195
212
  import {
196
213
  DAEMON_COLD_START_TIMEOUT_MS,
197
214
  clearDaemonNeedsLogin,
@@ -206,7 +223,7 @@ import {
206
223
  replaceDaemonService,
207
224
  stopDaemonService,
208
225
  waitForDaemonRemoteProof
209
- } from "../chunk-57NTMVMI.js";
226
+ } from "../chunk-EUU5PDUI.js";
210
227
  import {
211
228
  GEMINI_HOOK_BINARY,
212
229
  GEMINI_HOOK_EVENTS,
@@ -222,18 +239,18 @@ import {
222
239
  geminiWired,
223
240
  planHooks,
224
241
  pusharyHookExecutable
225
- } from "../chunk-YQDCTID4.js";
242
+ } from "../chunk-73DHP3JX.js";
226
243
  import {
227
244
  AGENT_CHOICES,
228
245
  effectiveControlMode,
229
246
  effectiveVerify,
230
247
  parseSetupOptions
231
- } from "../chunk-UTAARXYQ.js";
232
- import "../chunk-IQ3GKPFM.js";
248
+ } from "../chunk-ZK5WYAMI.js";
249
+ import "../chunk-77QP22FL.js";
233
250
  import "../chunk-NMUI3ZWG.js";
234
251
  import {
235
252
  transcriptPreferenceForSetup
236
- } from "../chunk-XGFFNERF.js";
253
+ } from "../chunk-MUDUWF74.js";
237
254
  import "../chunk-XHKBHWLX.js";
238
255
  import {
239
256
  KEY_FILE_MODE,
@@ -247,7 +264,7 @@ import {
247
264
  recordMacAppKeyPrefix,
248
265
  resolveShellRc,
249
266
  writeKey
250
- } from "../chunk-CNJ7SI5V.js";
267
+ } from "../chunk-PBEW5CJK.js";
251
268
  import {
252
269
  CODEX_ENGINE_DIRECTORY,
253
270
  CODEX_ENGINE_ENTRYPOINT,
@@ -256,25 +273,25 @@ import {
256
273
  } from "../chunk-E46NE7FB.js";
257
274
  import {
258
275
  reportEvent
259
- } from "../chunk-2BL6KWN7.js";
260
- import "../chunk-XXIJBYNW.js";
261
- import "../chunk-ZAZUDYSF.js";
276
+ } from "../chunk-6IFEYELN.js";
277
+ import "../chunk-GMHQYX3D.js";
278
+ import "../chunk-QYTOYNV2.js";
262
279
  import "../chunk-POFBE6ZY.js";
263
- import "../chunk-Q5RNYE2L.js";
280
+ import "../chunk-PZZKXX6Q.js";
264
281
  import {
265
282
  checkApiKey,
266
283
  describeKeyCheck,
267
284
  samePusharyAccount
268
- } from "../chunk-QR2QWGQI.js";
269
- import "../chunk-GECU7V44.js";
270
- import "../chunk-IA5VWIHV.js";
285
+ } from "../chunk-BSMHSN3Y.js";
286
+ import "../chunk-MHC34X5A.js";
287
+ import "../chunk-2VYQG2HG.js";
271
288
  import {
272
289
  UsageError
273
290
  } from "../chunk-PPY5N2E6.js";
274
291
  import {
275
292
  EXIT
276
293
  } from "../chunk-KZERVKTD.js";
277
- import "../chunk-XIJTXRWB.js";
294
+ import "../chunk-METUT7V4.js";
278
295
  import {
279
296
  CLINE_AUTO_APPROVE_STEP,
280
297
  CLINE_RELOAD_STEP,
@@ -321,8 +338,6 @@ import {
321
338
  guardBinary,
322
339
  guardCursorGate,
323
340
  guardNodeScript,
324
- guardedArgv,
325
- hermesConfigReceipt,
326
341
  hookTakeoverReceipt,
327
342
  isClaudeMcpSnapshot,
328
343
  pusharyConfigFile,
@@ -333,7 +348,7 @@ import {
333
348
  vscodePluginDir,
334
349
  vscodePluginMcp,
335
350
  writeInstructionBlock
336
- } from "../chunk-GDLT32I4.js";
351
+ } from "../chunk-LQAAOXYJ.js";
337
352
  import {
338
353
  NpmMissingError,
339
354
  backupFile,
@@ -346,14 +361,14 @@ import {
346
361
  readJsonSafe,
347
362
  resolveGlobalBinDir,
348
363
  resolveGlobalBinary
349
- } from "../chunk-KS3O6O7E.js";
364
+ } from "../chunk-NAQCWM4U.js";
350
365
  import {
351
366
  getBaseUrl
352
- } from "../chunk-A47UKPC7.js";
367
+ } from "../chunk-32OSSYGZ.js";
353
368
  import {
354
369
  NPX_LATEST_COMMAND,
355
370
  renderCommandHelp
356
- } from "../chunk-GO7YKPT3.js";
371
+ } from "../chunk-X2MTVD4W.js";
357
372
  import {
358
373
  getPackageVersion,
359
374
  isNewerVersion,
@@ -372,7 +387,7 @@ import {
372
387
  isRecord,
373
388
  isTimeoutAction,
374
389
  isValidApiKey
375
- } from "../chunk-EJR5JXMV.js";
390
+ } from "../chunk-RQOT6QL3.js";
376
391
  import "../chunk-MLKGABMK.js";
377
392
 
378
393
  // bin/pushary-setup.ts
@@ -393,7 +408,7 @@ var agentSetupTargets = (exists) => ({
393
408
  claude_code: [claudeJson(), claudeSettings(), join(claudeSkillDir(), "SKILL.md")],
394
409
  codex: [join(codexHome(), "config.toml"), codexHooksJson(), join(codexSkillDir(), "SKILL.md"), codexAgentsMd()],
395
410
  gemini_cli: [geminiSettings(), geminiMd()],
396
- hermes: [`the Hermes virtualenv (pip install ${HERMES_PIP_PACKAGE})`],
411
+ hermes: [hermesPluginDirectory(defaultHermesHome()), join(defaultHermesHome(), HERMES_CONFIG_FILE)],
397
412
  cursor: [join(cursorPluginDir(), "mcp.json"), cursorUserHooks()],
398
413
  vscode: [vscodePluginMcp(), ...vscodeSettingsTargets(exists)],
399
414
  opencode: [
@@ -962,7 +977,6 @@ var pairingComputerOf = (host, platform, detectedAgents) => ({
962
977
  var CLAUDE_SETTINGS = claudeSettings();
963
978
  var CLAUDE_JSON = claudeJson();
964
979
  var CLAUDE_MCP_RECEIPT = claudeMcpReceipt();
965
- var HERMES_CONFIG_RECEIPT = hermesConfigReceipt();
966
980
  var CURSOR_PLUGIN_DIR = cursorPluginDir();
967
981
  var CURSOR_USER_HOOKS = cursorUserHooks();
968
982
  var VSCODE_PLUGIN_DIR = vscodePluginDir();
@@ -1186,60 +1200,56 @@ var setupClaudeCode = async (apiKey) => {
1186
1200
  console.log(` ${dim("\u2022")} Auto-allowed tools: no permission prompts for Pushary MCP calls`);
1187
1201
  };
1188
1202
  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 {
1203
+ 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)}`;
1204
+ var reportHermesInstall = (outcome, version) => {
1205
+ const inspection = outcome.inspection;
1206
+ const folder = inspection.kind === "inspected" ? inspection.folder : null;
1207
+ const pluginDirectory = inspection.kind === "inspected" ? hermesPluginDirectory(inspection.home) : "the Hermes plugins folder";
1208
+ console.log(outcome.folderWritten ? ` ${check} Plugin ${version} written to ${shortenHome(pluginDirectory)}` : keptHermesPluginLine(folder, pluginDirectory));
1209
+ if (outcome.legacyCopyRemoved) console.log(` ${check} Removed the old pip copy that Hermes would have loaded instead`);
1210
+ console.log();
1211
+ console.log(` ${dim("What this configured:")}`);
1212
+ console.log(` ${dim("\u2022")} Native tools: pushary_ask, pushary_notify, pushary_wait, pushary_cancel, pushary_remind, pushary_propose_scope`);
1213
+ console.log(` ${dim("\u2022")} Approvals: Hermes' dangerous-command prompts go to your phone with allow once / this session / always / deny`);
1214
+ console.log(` ${dim("\u2022")} Falls back to the terminal prompt when no device is connected, so work never blocks on us`);
1215
+ 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`);
1216
+ console.log(` ${dim("To send approvals back to the terminal:")} ${bold("hermes config unset security.approval.transport")}`);
1217
+ if (inspection.kind !== "inspected") return;
1218
+ if (inspection.state.kind === "restart_needed" || runsAnOlderPlugin(inspection.state)) {
1219
+ console.log(` ${yellow("!")} ${describeHermesState(inspection.state)}: ${bold(HERMES_RESTART_COMMAND)}`);
1220
+ noteManual(`Restart Hermes to load the Pushary plugin: ${HERMES_RESTART_COMMAND}`);
1221
+ } else {
1222
+ console.log(` ${dim(describeHermesState(inspection.state))}`);
1198
1223
  }
1199
1224
  };
1200
- var enablePusharyPlugin = (python) => {
1201
- return runHermesConfigScript(python, "setup", HERMES_CONFIG_RECEIPT) !== "failed";
1202
- };
1203
1225
  var setupHermes = async (_apiKey) => {
1204
1226
  console.log(`
1205
1227
  ${bold("Setting up Hermes Agent")}
1206
1228
  `);
1207
- if (!isInstalled("hermes")) {
1229
+ if (!findHermesLauncher()) {
1208
1230
  console.log(` ${yellow("!")} Hermes CLI not found. Skipping.`);
1209
1231
  console.log(` ${dim("Install Hermes and re-run setup to configure.")}`);
1210
1232
  return "skipped";
1211
1233
  }
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}`);
1234
+ const plugin = shippedHermesPlugin();
1235
+ const receipts = hermesReceiptPaths();
1236
+ const outcomes = [];
1237
+ await spinner("Installing the Pushary plugin into Hermes", async () => {
1238
+ outcomes.push(installHermesPlugin({ installedBy: "cli", plugin, receipts }));
1239
+ });
1240
+ const outcome = outcomes[0] ?? { kind: "no_launcher" };
1241
+ if (outcome.kind === "no_launcher") {
1242
+ console.log(` ${yellow("!")} Hermes CLI not found. Skipping.`);
1216
1243
  return "skipped";
1217
1244
  }
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');
1245
+ if (outcome.kind === "failed") {
1246
+ const message = describeHermesInstallFailure(outcome.reason, shortenHome(hermesPluginDirectory(defaultHermesHome())), shortenHome(receipts.receiptPath));
1247
+ console.log(` ${yellow("!")} ${message}`);
1248
+ noteManual(message);
1249
+ return "skipped";
1233
1250
  }
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")}`);
1251
+ reportHermesInstall(outcome, plugin.version);
1252
+ return "configured";
1243
1253
  };
1244
1254
  var CODEX_HOOKS_JSON = join4(CODEX_HOME, "hooks.json");
1245
1255
  var CODEX_HOOKS_MIN_VERSION = [0, 122, 0];
@@ -1840,10 +1850,12 @@ var setupFx = async () => {
1840
1850
  await installGlobally2();
1841
1851
  await spinner(`Adding the Pushary MCP server (${fxMcpProfile()})`, async () => {
1842
1852
  const profile = readFxProfileForSetup(fxMcpProfile());
1843
- const bridge = resolveGlobalBinary(MCP_BRIDGE_BINARY) ?? MCP_BRIDGE_BINARY;
1844
- const entry = fxPusharyEntry(guardedArgv({ kind: "binary", path: bridge, runtime: "node" }));
1845
- writeFxProfile(fxMcpProfile(), withFxPusharyServer(profile, entry));
1853
+ writeFxProfile(fxMcpProfile(), withFxPusharyServer(profile, cliFxBridgeEntry()));
1846
1854
  });
1855
+ const otherHttpServers = inspectFxPusharyHttpWiring(fxMcpProfile()).otherHttpServers;
1856
+ if (otherHttpServers.length > 0) {
1857
+ console.log(` ${yellow("!")} ${fxOtherHttpServersNote(otherHttpServers, fxMcpProfile(), retryAgentCommand("fx"))}`);
1858
+ }
1847
1859
  const settingsOutcome = configureFxSettings(fxSettings(), fxQuestionRuleReceipt(), process.env);
1848
1860
  reportFxSettings(settingsOutcome);
1849
1861
  if (teachFxToAskViaPush()) {
@@ -2092,6 +2104,10 @@ var agentIsWired = (agent) => {
2092
2104
  return fxWired();
2093
2105
  case "cline":
2094
2106
  return clineWired();
2107
+ case "hermes": {
2108
+ const inspection = inspectHermesWiring();
2109
+ return inspection.kind === "inspected" && isHermesWired(inspection.state);
2110
+ }
2095
2111
  default: {
2096
2112
  const profile = hookCompatibleProfile(agent);
2097
2113
  if (!profile) return true;
@@ -2650,6 +2666,7 @@ var main = async () => {
2650
2666
  if (!options.dryRun) recordSetupKey(trimmedKey);
2651
2667
  markStep("verify-key");
2652
2668
  const keyCheck = await verifyKeyOrExit(trimmedKey, options, storedKeyCheck ?? void 0);
2669
+ const keyScope = keyScopeOf(keyCheck);
2653
2670
  const wrongAccountHint = wrongAccountHintPlacement({
2654
2671
  canPairWithApp,
2655
2672
  reusedWithoutAsking: reuseAccepted && keyReuse === "announce",
@@ -2869,7 +2886,7 @@ var main = async () => {
2869
2886
  await spinner(prompt.waiting, async () => roundTripSpinnerEnd(await answer));
2870
2887
  roundTrip = await answer;
2871
2888
  markStep(CONNECT_PHONE_STEP);
2872
- const report = describeRoundTripOutcome(roundTrip, appPlatforms);
2889
+ const report = describeRoundTripOutcome(roundTrip, { appPlatforms, keyScope });
2873
2890
  if (!report.ok) console.log(` ${yellow("!")} ${report.message}`);
2874
2891
  for (const line of report.next) console.log(` ${dim(line)}`);
2875
2892
  } else if (verifyMode === "roundtrip" && keyCheck.kind === "ok") {
@@ -3064,7 +3081,7 @@ var main = async () => {
3064
3081
  for (const line of closing.next) console.log(` ${line}`);
3065
3082
  console.log();
3066
3083
  console.log(` ${dim("Useful:")}`);
3067
- for (const line of renderCommandSurface()) console.log(` ${dim(line)}`);
3084
+ for (const line of renderCommandSurface(keyScope)) console.log(` ${dim(line)}`);
3068
3085
  console.log();
3069
3086
  const exitCode = closing.exitCode;
3070
3087
  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-WPOXZPEH.js";
8
8
  import "../chunk-3EGEA4KH.js";
9
9
  import {
10
10
  describeReach,
11
11
  reachVerdict
12
- } from "../chunk-MNNQEUQC.js";
12
+ } from "../chunk-AJIT4SCL.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-K4TSXWVX.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-P4XZX7CL.js";
23
+ import {
24
+ CONNECTED_THROUGH_MAC_APP,
25
+ keyWrittenByMacApp,
26
+ readMacAppConnectionWhenKeyless
27
+ } from "../chunk-PEPRUUGM.js";
28
+ import "../chunk-7V63A4AI.js";
29
+ import "../chunk-QCGNGEGE.js";
30
+ import "../chunk-CB4U6WRP.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-VRFFMTIG.js";
38
+ import "../chunk-MFWHANKG.js";
39
+ import "../chunk-JAKWPQ2L.js";
40
+ import "../chunk-TVVJ6OYG.js";
41
+ import "../chunk-EUU5PDUI.js";
42
+ import "../chunk-73DHP3JX.js";
43
+ import "../chunk-ZK5WYAMI.js";
44
+ import "../chunk-77QP22FL.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-PBEW5CJK.js";
52
+ import "../chunk-6IFEYELN.js";
53
+ import "../chunk-GMHQYX3D.js";
54
+ import "../chunk-QYTOYNV2.js";
53
55
  import "../chunk-POFBE6ZY.js";
54
- import "../chunk-Q5RNYE2L.js";
56
+ import "../chunk-PZZKXX6Q.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-BSMHSN3Y.js";
61
+ import "../chunk-MHC34X5A.js";
62
+ import "../chunk-2VYQG2HG.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-LQAAOXYJ.js";
71
+ import "../chunk-NAQCWM4U.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) {