pushary 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
@@ -3,20 +3,24 @@ import {
3
3
  readServiceExecPath,
4
4
  readSetupFailure,
5
5
  versionManagerOf
6
- } from "../chunk-376TUN72.js";
6
+ } from "../chunk-MMTA7UKA.js";
7
7
  import {
8
- CODEX_HOOK_REMEDY
9
- } from "../chunk-4APD2DPI.js";
8
+ CODEX_HOOK_REMEDY,
9
+ HERMES_RESTART_COMMAND,
10
+ describeHermesProblems,
11
+ describeHermesState,
12
+ hermesRepairStep
13
+ } from "../chunk-7SKGS7QN.js";
10
14
  import {
11
15
  describeWaitLadder
12
16
  } from "../chunk-CVWG2N3Y.js";
13
17
  import {
14
18
  writeJsonError,
15
19
  writeStdoutFully
16
- } from "../chunk-XFQAK35L.js";
20
+ } from "../chunk-VHMZPN3N.js";
17
21
  import {
18
22
  fetchChannels
19
- } from "../chunk-DIUTSF6I.js";
23
+ } from "../chunk-WPOXZPEH.js";
20
24
  import "../chunk-3EGEA4KH.js";
21
25
  import {
22
26
  describeAnswerTestPrompt,
@@ -26,51 +30,66 @@ import {
26
30
  reachVerdict,
27
31
  roundTripEvidence,
28
32
  verifyRoundTrip
29
- } from "../chunk-MNNQEUQC.js";
33
+ } from "../chunk-AJIT4SCL.js";
30
34
  import {
31
35
  readMachineReadiness,
32
36
  readManagedControlEvidence
33
- } from "../chunk-GWYCKTXS.js";
37
+ } from "../chunk-K4TSXWVX.js";
34
38
  import {
35
39
  assessCodexHookTrust,
36
40
  readCodexTrustForPusharyHooks
37
- } from "../chunk-JL3SZJJP.js";
41
+ } from "../chunk-53Q4LRBU.js";
42
+ import {
43
+ SIGNED_OUT_ON_MAC_MESSAGE,
44
+ activeKeyVerdictOf,
45
+ describeSignedOutKey,
46
+ readSignedOutDiagnosis
47
+ } from "../chunk-P4XZX7CL.js";
38
48
  import {
39
- HERMES_PIP_PACKAGE,
40
- HERMES_PLUGIN_NAME,
41
49
  agentProbes,
42
50
  detectAgent,
43
51
  detectAllAgents,
44
- hermesWiredByPushary,
45
52
  isDetected,
46
53
  isPluginRegistered,
47
- readHermesStatus,
48
- resolveHermesPython,
49
54
  shortenHome,
50
55
  vscodeSettingsTargets
51
- } from "../chunk-QBNICXMC.js";
56
+ } from "../chunk-LF2NSOAQ.js";
52
57
  import {
53
58
  CONNECTED_THROUGH_MAC_APP,
59
+ keyWrittenByMacApp,
54
60
  readMacAppConnectionWhenKeyless
55
- } from "../chunk-CN6JFM62.js";
56
- import "../chunk-QCGNGEGE.js";
61
+ } from "../chunk-PEPRUUGM.js";
57
62
  import {
58
- SIGNED_OUT_ON_MAC_MESSAGE,
59
- activeKeyVerdictOf,
60
- describeSignedOutKey,
61
- readSignedOutDiagnosis
62
- } from "../chunk-YB3HMDKE.js";
63
+ keyScopeOf,
64
+ pushWindowChangeStep
65
+ } from "../chunk-7V63A4AI.js";
66
+ import {
67
+ findHermesLauncher,
68
+ hasUpdateFrom,
69
+ hermesPluginDirectory,
70
+ hermesSetupWasRecorded,
71
+ hermesWiringOwner,
72
+ inspectHermesWiring,
73
+ routesHermesApprovals,
74
+ routesHermesQuestions,
75
+ runsAnOlderPlugin,
76
+ shippedHermesPlugin
77
+ } from "../chunk-D6W7QDQE.js";
78
+ import "../chunk-QCGNGEGE.js";
63
79
  import {
64
80
  FX_PROFILE_REFUSALS,
65
81
  FX_PUSHARY_TOOLS_RULE,
66
82
  FX_QUESTION_TOOL,
83
+ fxHttpEntryDoctorNote,
84
+ fxOtherHttpServersNote,
67
85
  inspectClineInstallation,
68
- inspectFxInstallation
69
- } from "../chunk-6ZXCWK27.js";
86
+ inspectFxInstallation,
87
+ inspectFxPusharyHttpWiring
88
+ } from "../chunk-SL7CIZCL.js";
70
89
  import {
71
90
  retryAgentCommand
72
- } from "../chunk-5FJDODOA.js";
73
- import "../chunk-HUGVJBDN.js";
91
+ } from "../chunk-ODAAK2RZ.js";
92
+ import "../chunk-53RH3ZIK.js";
74
93
  import {
75
94
  OPENCODE_PLUGIN_PLACEHOLDER,
76
95
  cliOwnsAnyAgentHooks,
@@ -80,25 +99,25 @@ import {
80
99
  openCodePluginDir,
81
100
  openCodePluginFile,
82
101
  openCodeWired
83
- } from "../chunk-7LK3Y6ET.js";
102
+ } from "../chunk-CB4U6WRP.js";
84
103
  import {
85
104
  createIo
86
105
  } from "../chunk-FO3MDD26.js";
87
106
  import {
88
107
  exitOnHelpFlag
89
- } from "../chunk-G6VJZ3RB.js";
108
+ } from "../chunk-77L2TNJW.js";
90
109
  import {
91
110
  describeMissingControlPrerequisite,
92
111
  detectProviderLiveCapabilities,
93
112
  expectedLaunchCapabilities,
94
113
  hasSpawnProvider,
95
114
  resolveControlPolicy
96
- } from "../chunk-T6YLXO6N.js";
97
- import "../chunk-MDIGG3Q7.js";
98
- import "../chunk-RJ6JEHCP.js";
115
+ } from "../chunk-VRFFMTIG.js";
116
+ import "../chunk-MFWHANKG.js";
117
+ import "../chunk-JAKWPQ2L.js";
99
118
  import {
100
119
  readLedgerSummary
101
- } from "../chunk-6BGVSV2Q.js";
120
+ } from "../chunk-7YJSDXLM.js";
102
121
  import {
103
122
  AUTO_UPDATE_DISABLE_ENV,
104
123
  autoUpdateOffReason,
@@ -106,7 +125,7 @@ import {
106
125
  describeAutoUpdateCheck,
107
126
  readAutoUpdateState,
108
127
  takeAutoUpdateAnnouncement
109
- } from "../chunk-VURDLVAQ.js";
128
+ } from "../chunk-7S7NTMDJ.js";
110
129
  import {
111
130
  compatibleConfigFile,
112
131
  compatibleInstructionsFile,
@@ -114,7 +133,7 @@ import {
114
133
  hasCompatibleHooks,
115
134
  hasCompatibleMcpServer,
116
135
  missingCompatibleHookEvents
117
- } from "../chunk-3EZP5ZPS.js";
136
+ } from "../chunk-TVVJ6OYG.js";
118
137
  import {
119
138
  daemonHasRemoteProof,
120
139
  daemonServiceManagerAvailable,
@@ -123,7 +142,7 @@ import {
123
142
  readDaemonNeedsLogin,
124
143
  readDaemonStatus,
125
144
  readInstalledDaemonService
126
- } from "../chunk-57NTMVMI.js";
145
+ } from "../chunk-EUU5PDUI.js";
127
146
  import {
128
147
  GEMINI_HOOK_BINARY,
129
148
  claudeOtherHolders,
@@ -147,9 +166,9 @@ import {
147
166
  missingGeminiHookEvents,
148
167
  pusharyHookExecutable,
149
168
  resolveBridgeStub
150
- } from "../chunk-YQDCTID4.js";
151
- import "../chunk-UTAARXYQ.js";
152
- import "../chunk-IQ3GKPFM.js";
169
+ } from "../chunk-73DHP3JX.js";
170
+ import "../chunk-ZK5WYAMI.js";
171
+ import "../chunk-77QP22FL.js";
153
172
  import {
154
173
  parseFlags
155
174
  } from "../chunk-NMUI3ZWG.js";
@@ -158,30 +177,30 @@ import {
158
177
  keyPrefix,
159
178
  readControlMode,
160
179
  readKeySource
161
- } from "../chunk-CNJ7SI5V.js";
162
- import "../chunk-2BL6KWN7.js";
163
- import "../chunk-XXIJBYNW.js";
164
- import "../chunk-ZAZUDYSF.js";
180
+ } from "../chunk-PBEW5CJK.js";
181
+ import "../chunk-6IFEYELN.js";
182
+ import "../chunk-GMHQYX3D.js";
183
+ import "../chunk-QYTOYNV2.js";
165
184
  import "../chunk-POFBE6ZY.js";
166
185
  import {
167
186
  callMcpTool,
168
187
  sendMcpRequest
169
- } from "../chunk-Q5RNYE2L.js";
188
+ } from "../chunk-PZZKXX6Q.js";
170
189
  import {
171
190
  checkApiKey,
172
191
  describeKeyCheck
173
- } from "../chunk-QR2QWGQI.js";
174
- import "../chunk-GECU7V44.js";
192
+ } from "../chunk-BSMHSN3Y.js";
193
+ import "../chunk-MHC34X5A.js";
175
194
  import {
176
195
  getMachineId
177
- } from "../chunk-IA5VWIHV.js";
196
+ } from "../chunk-2VYQG2HG.js";
178
197
  import {
179
198
  UsageError
180
199
  } from "../chunk-PPY5N2E6.js";
181
200
  import {
182
201
  EXIT
183
202
  } from "../chunk-KZERVKTD.js";
184
- import "../chunk-XIJTXRWB.js";
203
+ import "../chunk-METUT7V4.js";
185
204
  import {
186
205
  CLINE_AUTO_APPROVE_STEP,
187
206
  CLINE_LABEL,
@@ -209,25 +228,24 @@ import {
209
228
  geminiSettings,
210
229
  hasCodexHooks,
211
230
  hasInstructionBlock,
212
- hermesConfig,
213
- hermesConfigReceipt,
231
+ hermesAppWiringRecord,
214
232
  missingCodexHookEvents,
215
233
  pusharyConfigFile,
216
234
  readCodexMcpAuth,
217
235
  vscodePluginDir
218
- } from "../chunk-GDLT32I4.js";
236
+ } from "../chunk-LQAAOXYJ.js";
219
237
  import {
220
238
  fetchLatestPublishedVersion,
221
239
  readGlobalCliInstall,
222
240
  readJsonSafe,
223
241
  resolvePathBinary
224
- } from "../chunk-KS3O6O7E.js";
242
+ } from "../chunk-NAQCWM4U.js";
225
243
  import {
226
244
  getBaseUrl
227
- } from "../chunk-A47UKPC7.js";
245
+ } from "../chunk-32OSSYGZ.js";
228
246
  import {
229
247
  NPX_LATEST_COMMAND
230
- } from "../chunk-GO7YKPT3.js";
248
+ } from "../chunk-X2MTVD4W.js";
231
249
  import {
232
250
  commandsPackage,
233
251
  getPackageVersion,
@@ -247,7 +265,7 @@ import {
247
265
  hookCompatibleProfile,
248
266
  isHookActivationReport,
249
267
  redactSecretsFromContent
250
- } from "../chunk-EJR5JXMV.js";
268
+ } from "../chunk-RQOT6QL3.js";
251
269
  import "../chunk-MLKGABMK.js";
252
270
 
253
271
  // bin/pushary-doctor.ts
@@ -575,14 +593,43 @@ var reportFxQuestionRouting = (routing) => {
575
593
  }
576
594
  console.log(` ${warn} fx: questions can still stop in the terminal ${dim(`(${FX_QUESTION_ROUTING_WARNINGS[routing]})`)}`);
577
595
  };
578
- var reportHermesStatus = (status) => {
579
- const config = hermesConfig();
580
- check(status.pluginInstalled, "Hermes: plugin installed", status.pluginInstalled ? HERMES_PIP_PACKAGE : `${HERMES_PIP_PACKAGE} is not installed in Hermes' Python \u2014 run ${retryAgentCommand("hermes")}`);
581
- check(status.pluginEnabled, "Hermes: plugin enabled", status.pluginEnabled ? config : `"${HERMES_PLUGIN_NAME}" is missing from plugins.enabled in ${config} \u2014 run ${retryAgentCommand("hermes")}`);
582
- if (status.approvalsRouted) check(true, "Hermes: approvals go through Pushary", `security.approval.transport in ${config}`);
583
- else console.log(` ${warn} Hermes: approvals stay in the terminal ${dim(`(security.approval.transport is not "pushary" in ${config})`)}`);
584
- if (status.questionsRouted) check(true, "Hermes: questions go through Pushary", `clarify is off in ${config}`);
585
- else console.log(` ${warn} Hermes: questions can stop in the terminal ${dim(`(clarify is not in agent.disabled_toolsets in ${config})`)}`);
596
+ var INSTALLER_LABELS = { cli: "the CLI", mac_app: "the Mac app" };
597
+ var hermesFolderDetail = (folder) => {
598
+ switch (folder.kind) {
599
+ case "absent":
600
+ return "missing";
601
+ case "pushary":
602
+ return `${folder.version ?? "unknown version"}, installed by ${INSTALLER_LABELS[folder.marker.installedBy]}`;
603
+ case "hermes_installer":
604
+ return `${folder.version ?? "unknown version"}, installed by hermes plugins install`;
605
+ case "unknown":
606
+ return `${folder.version ?? "unknown version"}, not installed by Pushary`;
607
+ }
608
+ };
609
+ var reportHermesWiring = (inspection) => {
610
+ const { folder, settings, state } = inspection;
611
+ const repair = hermesRepairStep(hermesWiringOwner(folder, existsSync(hermesAppWiringRecord())));
612
+ const directory = shortenHome(hermesPluginDirectory(inspection.home));
613
+ check(folder.kind !== "absent", "Hermes: plugin installed", folder.kind === "absent" ? `${directory} is missing \u2014 ${repair}` : `${directory} (${hermesFolderDetail(folder)})`);
614
+ const shipped = shippedHermesPlugin();
615
+ if (hasUpdateFrom(folder, "cli", shipped)) {
616
+ console.log(` ${warn} Hermes: plugin is older than this CLI's ${shipped.version} ${dim(`(run ${NPX_LATEST_COMMAND} upgrade)`)}`);
617
+ }
618
+ const enabled = settings.pluginEnabled && !settings.pluginDisabled;
619
+ check(enabled, "Hermes: plugin enabled", enabled ? "plugins.enabled" : `${describeHermesProblems(settings.pluginDisabled ? ["plugin_disabled"] : ["plugin_not_enabled"])} \u2014 ${repair}`);
620
+ if (routesHermesApprovals(settings)) check(true, "Hermes: approvals go through Pushary", "security.approval.transport");
621
+ else console.log(` ${warn} Hermes: approvals stay in the terminal ${dim('(security.approval.transport is not "pushary")')}`);
622
+ if (routesHermesQuestions(folder)) check(true, "Hermes: questions go through Pushary", "the plugin sends clarify questions to pushary_ask");
623
+ else console.log(` ${warn} Hermes: questions can stop in the terminal ${dim("(this plugin copy does not route clarify)")}`);
624
+ if (state.kind === "restart_needed") {
625
+ console.log(` ${warn} Hermes: ${describeHermesState(state)} ${dim(`(${HERMES_RESTART_COMMAND})`)}`);
626
+ } else if (runsAnOlderPlugin(state)) {
627
+ console.log(` ${warn} Hermes: ${describeHermesState(state)} ${dim(`(${HERMES_RESTART_COMMAND})`)}`);
628
+ } else if (state.kind === "connected" && state.live) {
629
+ check(true, "Hermes: loaded by the running Hermes", describeHermesState(state));
630
+ } else if (state.kind === "connected") {
631
+ console.log(` ${dim("\u2013")} Hermes: ${describeHermesState(state)}`);
632
+ }
586
633
  };
587
634
  var reportClineKey = (cline, apiKey) => {
588
635
  if (cline.runsCommand) {
@@ -768,7 +815,7 @@ var main = async () => {
768
815
  }
769
816
  }
770
817
  const maskKey = (k) => `pk_${k.split(".")[0]?.slice(3, 7)}...`;
771
- const macApp = readMacAppConnectionWhenKeyless(apiKey);
818
+ const macApp = readMacAppConnectionWhenKeyless(apiKey, keyWrittenByMacApp(keySource === "config-file" ? apiKey : null));
772
819
  if (keySource === "config-file") {
773
820
  console.log(` ${pass} API key in ${dim(source.origin ?? "the config file")} ${dim(`(${maskKey(apiKey)})`)}`);
774
821
  } else if (keySource === "profile") {
@@ -792,6 +839,7 @@ var main = async () => {
792
839
  }
793
840
  let keyVerdict = null;
794
841
  if (apiKey) keyVerdict = await checkApiKey(apiKey);
842
+ const keyScope = keyScopeOf(keyVerdict);
795
843
  const signedOut = readSignedOutDiagnosis(apiKey ?? null, activeKeyVerdictOf(keyVerdict));
796
844
  if (signedOut.kind === "signed_out_on_mac") {
797
845
  check(false, "Key still signed in", SIGNED_OUT_ON_MAC_MESSAGE);
@@ -1288,6 +1336,7 @@ var main = async () => {
1288
1336
  }
1289
1337
  const fx = inspectFxInstallation(fxMcpProfile(), fxSettings(), process.env);
1290
1338
  const fxProfile = fx.profile;
1339
+ const fxHttp = inspectFxPusharyHttpWiring(fxMcpProfile());
1291
1340
  if (fx.configured) {
1292
1341
  checking("fx");
1293
1342
  check(true, "fx: Pushary MCP server configured", fxMcpProfile());
@@ -1308,22 +1357,27 @@ var main = async () => {
1308
1357
  if (workspacesShowingQuestions.length > 0) {
1309
1358
  console.log(` ${warn} fx: ${workspacesShowingQuestions.length} workspace(s) replace the global rules and keep ${FX_QUESTION_TOOL} on ${dim(`(add "${FX_QUESTION_TOOL}": "deny" to their permission rules in ${fxSettings()})`)}`);
1310
1359
  }
1360
+ if (fxHttp.otherHttpServers.length > 0) {
1361
+ console.log(` ${warn} fx: ${fxOtherHttpServersNote(fxHttp.otherHttpServers, fxMcpProfile(), retryAgentCommand("fx"))}`);
1362
+ }
1363
+ } else if (fxHttp.pusharyOverHttp) {
1364
+ checking("fx");
1365
+ console.log(` ${warn} fx: Pushary connects over HTTP ${dim(`(${fxHttpEntryDoctorNote(fxMcpProfile(), `${NPX_LATEST_COMMAND} upgrade`)})`)}`);
1311
1366
  } else if (fxProfile.kind === "refused" && installed("fx")) {
1312
1367
  check(false, "fx: MCP profile", `${fxMcpProfile()} ${FX_PROFILE_REFUSALS[fxProfile.reason]} \u2014 fix it, then run ${retryAgentCommand("fx")}`);
1313
1368
  } else {
1314
1369
  skipped("fx", installed("fx") ? "installed, but Pushary is not set up for it" : "not installed");
1315
1370
  }
1316
1371
  reportCline(inspectClineInstallation(clineMcpSettings(), apiKey), apiKey);
1317
- const hermesPython = resolveHermesPython();
1318
- const hermesStatus = hermesPython ? readHermesStatus(hermesPython) : null;
1319
- const hermesSetupRecorded = existsSync(hermesConfigReceipt());
1320
- if (hermesStatus && hermesWiredByPushary(hermesStatus, hermesSetupRecorded)) {
1372
+ const hermes = inspectHermesWiring();
1373
+ const hermesSetupRecorded = hermesSetupWasRecorded();
1374
+ if (hermes.kind === "inspected" && (hermes.state.kind !== "not_wired" || hermesSetupRecorded)) {
1321
1375
  checking("Hermes");
1322
- reportHermesStatus(hermesStatus);
1323
- } else if (hermesPython && hermesStatus === null && hermesSetupRecorded) {
1324
- check(false, "Hermes: config readable", `${hermesConfig()} could not be read with Hermes' Python \u2014 run ${retryAgentCommand("hermes")}`);
1376
+ reportHermesWiring(hermes);
1377
+ } else if (hermes.kind === "unreadable" && hermesSetupRecorded) {
1378
+ check(false, "Hermes: settings readable", `Hermes would not report its settings through hermes config get \u2014 run hermes update, then ${hermesRepairStep(existsSync(hermesAppWiringRecord()) ? "mac_app" : "cli")}`);
1325
1379
  } else {
1326
- skipped("Hermes", installed("hermes") ? "installed, but Pushary is not set up for it" : "not installed");
1380
+ skipped("Hermes", findHermesLauncher() ? "installed, but Pushary is not set up for it" : "not installed");
1327
1381
  }
1328
1382
  if (bridgeStub) {
1329
1383
  const resolution = resolveBridgeStub(bridgeStub, liveBridgeProbe());
@@ -1500,7 +1554,7 @@ var main = async () => {
1500
1554
  if (answerStep !== null) console.log(` ${dim(answerStep)}`);
1501
1555
  const outcome = await verifyRoundTrip(apiKey, "Pushary Doctor");
1502
1556
  roundTrip = outcome;
1503
- const report = describeRoundTrip(outcome, appPlatforms);
1557
+ const report = describeRoundTrip(outcome, { appPlatforms, keyScope });
1504
1558
  check(report.ok, "Synthetic answer test", report.message);
1505
1559
  for (const line of report.next) console.log(` ${dim(line)}`);
1506
1560
  }
@@ -1526,7 +1580,7 @@ var main = async () => {
1526
1580
  for (const p of overrides) {
1527
1581
  console.log(` ${dim("\xB7")} ${p.tool}: ${describeWaitLadder(p)}`);
1528
1582
  }
1529
- console.log(` ${dim("Tune it:")} ${cyan("pushary wait <seconds>")} ${dim("\xB7 full ladder:")} ${cyan("pushary wait status")}`);
1583
+ console.log(` ${dim("Tune it:")} ${cyan(pushWindowChangeStep(keyScope, getBaseUrl()))} ${dim("\xB7 full ladder:")} ${cyan("pushary wait status")}`);
1530
1584
  }
1531
1585
  } catch {
1532
1586
  }
@@ -1,49 +1,49 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  readHookInput
4
- } from "../chunk-QN25WBXL.js";
4
+ } from "../chunk-PGOPIIOQ.js";
5
5
  import {
6
6
  announceSubscriptionRequired,
7
7
  isDeferAnswer
8
- } from "../chunk-ZJV7SFIJ.js";
9
- import "../chunk-SVKCYUYP.js";
10
- import "../chunk-DBUHSUL7.js";
11
- import "../chunk-3EZP5ZPS.js";
12
- import "../chunk-57NTMVMI.js";
13
- import "../chunk-YQDCTID4.js";
14
- import "../chunk-UTAARXYQ.js";
15
- import "../chunk-IQ3GKPFM.js";
8
+ } from "../chunk-2HMKZYF5.js";
9
+ import "../chunk-Q6JXE3PD.js";
10
+ import "../chunk-4TIN3T2A.js";
11
+ import "../chunk-TVVJ6OYG.js";
12
+ import "../chunk-EUU5PDUI.js";
13
+ import "../chunk-73DHP3JX.js";
14
+ import "../chunk-ZK5WYAMI.js";
15
+ import "../chunk-77QP22FL.js";
16
16
  import "../chunk-NMUI3ZWG.js";
17
- import "../chunk-XEXF2OFZ.js";
18
- import "../chunk-XGFFNERF.js";
17
+ import "../chunk-NWN6GGJL.js";
18
+ import "../chunk-MUDUWF74.js";
19
19
  import "../chunk-XHKBHWLX.js";
20
- import "../chunk-CNJ7SI5V.js";
21
- import "../chunk-2BL6KWN7.js";
22
- import "../chunk-XXIJBYNW.js";
20
+ import "../chunk-PBEW5CJK.js";
21
+ import "../chunk-6IFEYELN.js";
22
+ import "../chunk-GMHQYX3D.js";
23
23
  import {
24
24
  askUser,
25
25
  isDecisionStopped,
26
26
  isQuestionLimitRefusal,
27
27
  waitForQuestion
28
- } from "../chunk-ZAZUDYSF.js";
28
+ } from "../chunk-QYTOYNV2.js";
29
29
  import "../chunk-POFBE6ZY.js";
30
30
  import {
31
31
  SubscriptionRequiredError
32
- } from "../chunk-Q5RNYE2L.js";
33
- import "../chunk-QR2QWGQI.js";
34
- import "../chunk-GECU7V44.js";
32
+ } from "../chunk-PZZKXX6Q.js";
33
+ import "../chunk-BSMHSN3Y.js";
34
+ import "../chunk-MHC34X5A.js";
35
35
  import {
36
36
  getMachineId
37
- } from "../chunk-IA5VWIHV.js";
37
+ } from "../chunk-2VYQG2HG.js";
38
38
  import "../chunk-PPY5N2E6.js";
39
39
  import "../chunk-KZERVKTD.js";
40
- import "../chunk-XIJTXRWB.js";
41
- import "../chunk-GDLT32I4.js";
42
- import "../chunk-KS3O6O7E.js";
40
+ import "../chunk-METUT7V4.js";
41
+ import "../chunk-LQAAOXYJ.js";
42
+ import "../chunk-NAQCWM4U.js";
43
43
  import {
44
44
  getApiKey
45
- } from "../chunk-A47UKPC7.js";
46
- import "../chunk-GO7YKPT3.js";
45
+ } from "../chunk-32OSSYGZ.js";
46
+ import "../chunk-X2MTVD4W.js";
47
47
  import "../chunk-QTOLNRET.js";
48
48
  import {
49
49
  ELICITATION_ANSWERABLE_MODE,
@@ -55,7 +55,7 @@ import {
55
55
  planElicitationAsk,
56
56
  readElicitationFields,
57
57
  renderElicitationOutput
58
- } from "../chunk-EJR5JXMV.js";
58
+ } from "../chunk-RQOT6QL3.js";
59
59
  import "../chunk-MLKGABMK.js";
60
60
 
61
61
  // bin/pushary-elicitation-hook.ts
@@ -5,40 +5,40 @@ import {
5
5
  postLiveSession,
6
6
  postLiveSessionUntilAccepted,
7
7
  startLiveSessionHeartbeat
8
- } from "../chunk-QOIPUYUD.js";
8
+ } from "../chunk-XZKSUJ55.js";
9
9
  import {
10
10
  resolveProviderBinary
11
- } from "../chunk-T6YLXO6N.js";
12
- import "../chunk-MDIGG3Q7.js";
11
+ } from "../chunk-VRFFMTIG.js";
12
+ import "../chunk-MFWHANKG.js";
13
13
  import {
14
14
  SESSION_IDLE_TIMEOUT_MS,
15
15
  describeIdleWindow,
16
16
  idleDeadlinePassed,
17
17
  startProcessOwnership,
18
18
  withSpawnProcessOwnership
19
- } from "../chunk-3ELJIG2R.js";
20
- import "../chunk-RJ6JEHCP.js";
21
- import "../chunk-XEXF2OFZ.js";
19
+ } from "../chunk-MCNHNIRC.js";
20
+ import "../chunk-JAKWPQ2L.js";
21
+ import "../chunk-NWN6GGJL.js";
22
22
  import {
23
23
  transcriptsEnabled
24
- } from "../chunk-XGFFNERF.js";
24
+ } from "../chunk-MUDUWF74.js";
25
25
  import {
26
26
  spawnClaude
27
27
  } from "../chunk-XHKBHWLX.js";
28
- import "../chunk-CNJ7SI5V.js";
28
+ import "../chunk-PBEW5CJK.js";
29
29
  import {
30
30
  getMachineId
31
- } from "../chunk-IA5VWIHV.js";
32
- import "../chunk-XIJTXRWB.js";
33
- import "../chunk-GDLT32I4.js";
34
- import "../chunk-KS3O6O7E.js";
31
+ } from "../chunk-2VYQG2HG.js";
32
+ import "../chunk-METUT7V4.js";
33
+ import "../chunk-LQAAOXYJ.js";
34
+ import "../chunk-NAQCWM4U.js";
35
35
  import {
36
36
  getApiKey,
37
37
  getBaseUrl
38
- } from "../chunk-A47UKPC7.js";
39
- import "../chunk-GO7YKPT3.js";
38
+ } from "../chunk-32OSSYGZ.js";
39
+ import "../chunk-X2MTVD4W.js";
40
40
  import "../chunk-QTOLNRET.js";
41
- import "../chunk-EJR5JXMV.js";
41
+ import "../chunk-RQOT6QL3.js";
42
42
  import "../chunk-MLKGABMK.js";
43
43
 
44
44
  // bin/pushary-gemini-bridge.ts
@@ -2,29 +2,29 @@
2
2
  import {
3
3
  isGatingMoment,
4
4
  recordKeylessMoment
5
- } from "../chunk-6BGVSV2Q.js";
5
+ } from "../chunk-7YJSDXLM.js";
6
6
  import {
7
7
  triggerAutoUpdate
8
- } from "../chunk-VURDLVAQ.js";
8
+ } from "../chunk-7S7NTMDJ.js";
9
9
  import {
10
10
  readHookInput
11
- } from "../chunk-QN25WBXL.js";
11
+ } from "../chunk-PGOPIIOQ.js";
12
12
  import {
13
13
  announceSubscriptionRequired,
14
14
  isDeferAnswer
15
- } from "../chunk-ZJV7SFIJ.js";
16
- import "../chunk-SVKCYUYP.js";
17
- import "../chunk-DBUHSUL7.js";
18
- import "../chunk-3EZP5ZPS.js";
19
- import "../chunk-57NTMVMI.js";
20
- import "../chunk-YQDCTID4.js";
21
- import "../chunk-UTAARXYQ.js";
22
- import "../chunk-IQ3GKPFM.js";
15
+ } from "../chunk-2HMKZYF5.js";
16
+ import "../chunk-Q6JXE3PD.js";
17
+ import "../chunk-4TIN3T2A.js";
18
+ import "../chunk-TVVJ6OYG.js";
19
+ import "../chunk-EUU5PDUI.js";
20
+ import "../chunk-73DHP3JX.js";
21
+ import "../chunk-ZK5WYAMI.js";
22
+ import "../chunk-77QP22FL.js";
23
23
  import "../chunk-NMUI3ZWG.js";
24
- import "../chunk-XEXF2OFZ.js";
25
- import "../chunk-XGFFNERF.js";
24
+ import "../chunk-NWN6GGJL.js";
25
+ import "../chunk-MUDUWF74.js";
26
26
  import "../chunk-XHKBHWLX.js";
27
- import "../chunk-CNJ7SI5V.js";
27
+ import "../chunk-PBEW5CJK.js";
28
28
  import {
29
29
  DEFAULT_SESSION,
30
30
  UNNAMED_ACTION,
@@ -43,10 +43,10 @@ import {
43
43
  readLastUserPrompt,
44
44
  reportEvent,
45
45
  scopePathFor
46
- } from "../chunk-2BL6KWN7.js";
46
+ } from "../chunk-6IFEYELN.js";
47
47
  import {
48
48
  repoKeyFor
49
- } from "../chunk-XXIJBYNW.js";
49
+ } from "../chunk-GMHQYX3D.js";
50
50
  import {
51
51
  askUser,
52
52
  exitAfterClientReports,
@@ -55,27 +55,27 @@ import {
55
55
  isQuestionLimitRefusal,
56
56
  sendNotification,
57
57
  waitForQuestion
58
- } from "../chunk-ZAZUDYSF.js";
58
+ } from "../chunk-QYTOYNV2.js";
59
59
  import "../chunk-POFBE6ZY.js";
60
60
  import {
61
61
  SubscriptionRequiredError
62
- } from "../chunk-Q5RNYE2L.js";
63
- import "../chunk-QR2QWGQI.js";
64
- import "../chunk-GECU7V44.js";
62
+ } from "../chunk-PZZKXX6Q.js";
63
+ import "../chunk-BSMHSN3Y.js";
64
+ import "../chunk-MHC34X5A.js";
65
65
  import {
66
66
  getMachineId
67
- } from "../chunk-IA5VWIHV.js";
67
+ } from "../chunk-2VYQG2HG.js";
68
68
  import "../chunk-PPY5N2E6.js";
69
69
  import {
70
70
  EXIT
71
71
  } from "../chunk-KZERVKTD.js";
72
- import "../chunk-XIJTXRWB.js";
73
- import "../chunk-GDLT32I4.js";
74
- import "../chunk-KS3O6O7E.js";
72
+ import "../chunk-METUT7V4.js";
73
+ import "../chunk-LQAAOXYJ.js";
74
+ import "../chunk-NAQCWM4U.js";
75
75
  import {
76
76
  getApiKey
77
- } from "../chunk-A47UKPC7.js";
78
- import "../chunk-GO7YKPT3.js";
77
+ } from "../chunk-32OSSYGZ.js";
78
+ import "../chunk-X2MTVD4W.js";
79
79
  import "../chunk-QTOLNRET.js";
80
80
  import {
81
81
  DECISION_STOP_REASON,
@@ -89,7 +89,7 @@ import {
89
89
  questionLimitHandBack,
90
90
  refusesWhenUnanswered,
91
91
  resolveGate
92
- } from "../chunk-EJR5JXMV.js";
92
+ } from "../chunk-RQOT6QL3.js";
93
93
  import "../chunk-MLKGABMK.js";
94
94
 
95
95
  // bin/pushary-gemini-hook.ts