pushary 1.9.65 → 1.9.67

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (129) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/data/SKILL.md +1 -1
  3. package/data/cursor-plugin/skills/pushary/SKILL.md +1 -1
  4. package/data/vscode-plugin/skills/pushary/SKILL.md +1 -1
  5. package/dist/{api-32B3XLJR.js → api-3WIPD5GC.js} +12 -10
  6. package/dist/bin/pushary-bell-hook.js +25 -27
  7. package/dist/bin/pushary-bell.js +10 -10
  8. package/dist/bin/pushary-claude.js +26 -28
  9. package/dist/bin/pushary-clean.js +74 -77
  10. package/dist/bin/pushary-codex-bridge.js +21 -22
  11. package/dist/bin/pushary-codex-hook.js +30 -32
  12. package/dist/bin/pushary-codex-session.js +8 -8
  13. package/dist/bin/pushary-codex.js +13 -13
  14. package/dist/bin/pushary-connect.js +28 -28
  15. package/dist/bin/pushary-cowork.js +5 -5
  16. package/dist/bin/pushary-daemon.js +40 -41
  17. package/dist/bin/pushary-disconnect.js +25 -26
  18. package/dist/bin/pushary-doctor.js +118 -76
  19. package/dist/bin/pushary-elicitation-hook.js +25 -27
  20. package/dist/bin/pushary-gemini-bridge.js +15 -16
  21. package/dist/bin/pushary-gemini-hook.js +27 -29
  22. package/dist/bin/pushary-hook.js +29 -31
  23. package/dist/bin/pushary-login.js +20 -19
  24. package/dist/bin/pushary-logout.js +26 -28
  25. package/dist/bin/pushary-mcp.js +11 -11
  26. package/dist/bin/pushary-mode.js +16 -15
  27. package/dist/bin/pushary-notification-hook.js +24 -26
  28. package/dist/bin/pushary-opencode-hook.js +26 -28
  29. package/dist/bin/pushary-permission-denied-hook.js +29 -31
  30. package/dist/bin/pushary-permission-hook.js +32 -31
  31. package/dist/bin/pushary-post-hook.js +24 -26
  32. package/dist/bin/pushary-prompt-hook.js +24 -26
  33. package/dist/bin/pushary-session-end-hook.js +26 -28
  34. package/dist/bin/pushary-session-start-hook.js +34 -35
  35. package/dist/bin/pushary-setup.js +111 -99
  36. package/dist/bin/pushary-stats.js +5 -5
  37. package/dist/bin/pushary-status.js +37 -36
  38. package/dist/bin/pushary-stop-hook.js +24 -26
  39. package/dist/bin/pushary-stopfailure-hook.js +24 -26
  40. package/dist/bin/pushary-suggestions.js +15 -14
  41. package/dist/bin/pushary-transcript-register.js +16 -18
  42. package/dist/bin/pushary-transcripts.js +18 -17
  43. package/dist/bin/pushary-upgrade.js +45 -39
  44. package/dist/bin/pushary-wait.js +26 -20
  45. package/dist/bin/pushary.js +7 -7
  46. package/dist/{chunk-Y64JGYTB.js → chunk-32OSSYGZ.js} +1 -1
  47. package/dist/{chunk-UHS5MMAI.js → chunk-3THDNNVL.js} +3 -3
  48. package/dist/{chunk-OA6EADFT.js → chunk-564IPPBL.js} +3 -3
  49. package/dist/chunk-5MOJCOCF.js +25 -0
  50. package/dist/{chunk-RRHHWYPX.js → chunk-6H4E5UBA.js} +6 -6
  51. package/dist/{chunk-UM2X7HL6.js → chunk-6LXXKMV6.js} +42 -16
  52. package/dist/chunk-76SWHCAR.js +299 -0
  53. package/dist/{chunk-AN7C3CHH.js → chunk-77L2TNJW.js} +1 -1
  54. package/dist/{chunk-XJIIU36L.js → chunk-7YJSDXLM.js} +1 -1
  55. package/dist/{chunk-XZCJC3QO.js → chunk-B3V2WOJX.js} +285 -50
  56. package/dist/{chunk-RABLE5R6.js → chunk-BBFGDYYI.js} +1 -1
  57. package/dist/{chunk-GTBWWCCM.js → chunk-BFF3ABFV.js} +115 -9
  58. package/dist/{chunk-NOH3EJFH.js → chunk-C4EDAHXI.js} +1 -1
  59. package/dist/{chunk-ITYKN2K3.js → chunk-CHYBOTQN.js} +2 -2
  60. package/dist/{chunk-FFSIYBBU.js → chunk-CJZLIAJF.js} +27 -10
  61. package/dist/{chunk-UMTMFDL2.js → chunk-CPLQ5OHX.js} +1 -1
  62. package/dist/{chunk-DTVHZDYM.js → chunk-D3U6CN7T.js} +26 -12
  63. package/dist/{chunk-ICFHMJTW.js → chunk-D7Z4USSB.js} +27 -8
  64. package/dist/{chunk-DXMUJTYF.js → chunk-DP6LU6BB.js} +2 -2
  65. package/dist/{chunk-GA257T2E.js → chunk-DXCHIKAN.js} +8 -8
  66. package/dist/{chunk-PP7FC3Y7.js → chunk-EQR6JSFE.js} +9 -7
  67. package/dist/{chunk-Z3M627TQ.js → chunk-FONWVVDD.js} +1 -1
  68. package/dist/{chunk-3KXBRSL3.js → chunk-GMHQYX3D.js} +1 -1
  69. package/dist/{chunk-WY6YAMZW.js → chunk-ICQCQAUO.js} +5 -4
  70. package/dist/{chunk-CZ65D6Q5.js → chunk-IPG3RS23.js} +2 -2
  71. package/dist/{chunk-JCWHOB36.js → chunk-IRV2MNMA.js} +53 -3
  72. package/dist/{chunk-HIYLAC3C.js → chunk-IVB5O6NY.js} +3 -3
  73. package/dist/{chunk-DM24VZOI.js → chunk-IXTVUINH.js} +3 -3
  74. package/dist/{chunk-BEQ3MEE3.js → chunk-JBRMIADM.js} +2 -2
  75. package/dist/{chunk-CU2PXLZ6.js → chunk-JHB5SR5B.js} +4 -4
  76. package/dist/{chunk-ED2SWTPC.js → chunk-JOBSKQ2Z.js} +4 -4
  77. package/dist/{chunk-W5L2ZLHE.js → chunk-JOD2325S.js} +3 -3
  78. package/dist/{chunk-CSKABVSH.js → chunk-JSPCGPSH.js} +3 -3
  79. package/dist/{chunk-R4FL5JHK.js → chunk-KE4TSJUD.js} +4 -4
  80. package/dist/{chunk-3LF7T3NW.js → chunk-KIXRHNCW.js} +6 -6
  81. package/dist/{chunk-BKCI53W6.js → chunk-KNUYUQBP.js} +4 -4
  82. package/dist/{chunk-4LUWNBGD.js → chunk-KTLE7NIK.js} +23 -8
  83. package/dist/{chunk-ADXHPGBZ.js → chunk-LJHDUKBB.js} +6 -6
  84. package/dist/{chunk-U2P2LQ5B.js → chunk-LS42NV6E.js} +15 -6
  85. package/dist/{chunk-QNZ6G3LY.js → chunk-LYTWK5TF.js} +5 -5
  86. package/dist/{chunk-2VADJ6JH.js → chunk-METUT7V4.js} +2 -2
  87. package/dist/{chunk-P5HZEGT7.js → chunk-NSS2AIGI.js} +6 -6
  88. package/dist/{chunk-QSW3HAKI.js → chunk-NWN6GGJL.js} +61 -2
  89. package/dist/{chunk-7ILQX47W.js → chunk-P4RXSZDT.js} +3 -3
  90. package/dist/{chunk-FWS2KLV2.js → chunk-PIBWX3EF.js} +2 -2
  91. package/dist/{chunk-F56GTJFG.js → chunk-PO2P3XDC.js} +5 -5
  92. package/dist/{chunk-EEVE7H5Z.js → chunk-R2BZH2NK.js} +4 -4
  93. package/dist/{chunk-I2UBF2SS.js → chunk-RO2B4YBF.js} +1 -1
  94. package/dist/{chunk-MNKIR2ZB.js → chunk-RQOT6QL3.js} +67 -6
  95. package/dist/{chunk-Q2BD4IBX.js → chunk-SB6TYV4M.js} +11 -13
  96. package/dist/{chunk-ATPJGHUP.js → chunk-TI4JYPGQ.js} +7 -3
  97. package/dist/{chunk-LMC5UPL7.js → chunk-UC2J5RR4.js} +1 -1
  98. package/dist/{chunk-IZVEBBDH.js → chunk-UQIPWXBL.js} +3 -3
  99. package/dist/{chunk-VHKK3US3.js → chunk-UXN73YAE.js} +3 -3
  100. package/dist/{chunk-WOHP7EL6.js → chunk-VEYFXRZ6.js} +7 -6
  101. package/dist/{chunk-2Z7I7DHT.js → chunk-VHMZPN3N.js} +1 -1
  102. package/dist/{chunk-HVOQUPSO.js → chunk-VKZ3RJ5U.js} +1 -1
  103. package/dist/chunk-VVIQWGS7.js +2298 -0
  104. package/dist/{chunk-SCMEVDAR.js → chunk-WJLHZ6E6.js} +3 -3
  105. package/dist/{chunk-BAGBCSXA.js → chunk-X2MTVD4W.js} +1 -1
  106. package/dist/{chunk-3UNAPXED.js → chunk-XFDWLDHG.js} +9 -9
  107. package/dist/{chunk-6CZX6YOE.js → chunk-XNUWKKGS.js} +3 -3
  108. package/dist/{chunk-NUEPJ5W6.js → chunk-XZKSUJ55.js} +3 -5
  109. package/dist/{chunk-HDGB6SQ4.js → chunk-Y4MRHAE5.js} +2 -2
  110. package/dist/{chunk-SZBMTOUZ.js → chunk-Y6ZN454E.js} +1 -1
  111. package/dist/{chunk-TK4JU2F7.js → chunk-YSD4SMHE.js} +1 -1
  112. package/dist/{chunk-SROWUG5W.js → chunk-ZK5WYAMI.js} +1 -1
  113. package/dist/{chunk-JFKMPLNF.js → chunk-ZPIYJLQ3.js} +2 -2
  114. package/dist/{codex-app-cards-switch-HK4RMOBI.js → codex-app-cards-switch-25TDTMUZ.js} +11 -11
  115. package/dist/{codex-desktop-launch-OCO6N7SA.js → codex-desktop-launch-JDKUCD2Y.js} +1 -1
  116. package/dist/{codex-session-launch-ETZQTVFS.js → codex-session-launch-6N35AAEO.js} +18 -19
  117. package/dist/{config-YY54G3CC.js → config-OBGYURFX.js} +3 -3
  118. package/dist/{global-upgrade-5DN5G3ZQ.js → global-upgrade-2QNQD5OM.js} +10 -10
  119. package/dist/{identity-EGL6HAWG.js → identity-CUPX2U7Q.js} +4 -4
  120. package/dist/{live-capabilities-WU3FYJJG.js → live-capabilities-CUEIWMSM.js} +5 -5
  121. package/dist/{paths-ZG6KDM6Y.js → paths-BHLBZ6FY.js} +7 -3
  122. package/dist/{reapply-AQLNCCTE.js → reapply-4GXLWZ5M.js} +27 -27
  123. package/dist/src/index.js +30 -20
  124. package/dist/{upgrade-lock-BIRXIKHJ.js → upgrade-lock-RDKTAHWR.js} +4 -4
  125. package/dist/{usage-43C2DHDU.js → usage-KX2HN47E.js} +3 -3
  126. package/package.json +1 -1
  127. package/dist/chunk-ANP3DIST.js +0 -118
  128. package/dist/chunk-ONBL2GCU.js +0 -615
  129. package/dist/chunk-TJUJAK5L.js +0 -62
@@ -3,20 +3,24 @@ import {
3
3
  readServiceExecPath,
4
4
  readSetupFailure,
5
5
  versionManagerOf
6
- } from "../chunk-CSKABVSH.js";
6
+ } from "../chunk-JSPCGPSH.js";
7
7
  import {
8
- CODEX_HOOK_REMEDY
9
- } from "../chunk-JCWHOB36.js";
8
+ CODEX_HOOK_REMEDY,
9
+ HERMES_RESTART_COMMAND,
10
+ describeHermesProblems,
11
+ describeHermesState,
12
+ hermesRepairStep
13
+ } from "../chunk-IRV2MNMA.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-2Z7I7DHT.js";
20
+ } from "../chunk-VHMZPN3N.js";
17
21
  import {
18
22
  fetchChannels
19
- } from "../chunk-EEVE7H5Z.js";
23
+ } from "../chunk-R2BZH2NK.js";
20
24
  import "../chunk-3EGEA4KH.js";
21
25
  import {
22
26
  describeAnswerTestPrompt,
@@ -26,51 +30,63 @@ import {
26
30
  reachVerdict,
27
31
  roundTripEvidence,
28
32
  verifyRoundTrip
29
- } from "../chunk-ICFHMJTW.js";
33
+ } from "../chunk-D7Z4USSB.js";
30
34
  import {
31
35
  readMachineReadiness,
32
36
  readManagedControlEvidence
33
- } from "../chunk-F56GTJFG.js";
37
+ } from "../chunk-PO2P3XDC.js";
34
38
  import {
35
39
  assessCodexHookTrust,
36
40
  readCodexTrustForPusharyHooks
37
- } from "../chunk-HDGB6SQ4.js";
41
+ } from "../chunk-Y4MRHAE5.js";
42
+ import {
43
+ SIGNED_OUT_ON_MAC_MESSAGE,
44
+ activeKeyVerdictOf,
45
+ describeSignedOutKey,
46
+ readSignedOutDiagnosis
47
+ } from "../chunk-CHYBOTQN.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-ONBL2GCU.js";
56
+ } from "../chunk-76SWHCAR.js";
52
57
  import {
53
58
  CONNECTED_THROUGH_MAC_APP,
59
+ keyWrittenByMacApp,
54
60
  readMacAppConnectionWhenKeyless
55
- } from "../chunk-U2P2LQ5B.js";
56
- import "../chunk-QCGNGEGE.js";
61
+ } from "../chunk-LS42NV6E.js";
57
62
  import {
58
- SIGNED_OUT_ON_MAC_MESSAGE,
59
- activeKeyVerdictOf,
60
- describeSignedOutKey,
61
- readSignedOutDiagnosis
62
- } from "../chunk-ITYKN2K3.js";
63
+ keyScopeOf,
64
+ pushWindowChangeStep
65
+ } from "../chunk-5MOJCOCF.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-VVIQWGS7.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,
67
83
  inspectClineInstallation,
68
84
  inspectFxInstallation
69
- } from "../chunk-QNZ6G3LY.js";
85
+ } from "../chunk-LYTWK5TF.js";
70
86
  import {
71
87
  retryAgentCommand
72
- } from "../chunk-W5L2ZLHE.js";
73
- import "../chunk-BEQ3MEE3.js";
88
+ } from "../chunk-JOD2325S.js";
89
+ import "../chunk-JBRMIADM.js";
74
90
  import {
75
91
  OPENCODE_PLUGIN_PLACEHOLDER,
76
92
  cliOwnsAnyAgentHooks,
@@ -80,25 +96,25 @@ import {
80
96
  openCodePluginDir,
81
97
  openCodePluginFile,
82
98
  openCodeWired
83
- } from "../chunk-P5HZEGT7.js";
99
+ } from "../chunk-NSS2AIGI.js";
84
100
  import {
85
101
  createIo
86
102
  } from "../chunk-FO3MDD26.js";
87
103
  import {
88
104
  exitOnHelpFlag
89
- } from "../chunk-AN7C3CHH.js";
105
+ } from "../chunk-77L2TNJW.js";
90
106
  import {
91
107
  describeMissingControlPrerequisite,
92
108
  detectProviderLiveCapabilities,
93
109
  expectedLaunchCapabilities,
94
110
  hasSpawnProvider,
95
111
  resolveControlPolicy
96
- } from "../chunk-R4FL5JHK.js";
97
- import "../chunk-HIYLAC3C.js";
98
- import "../chunk-RABLE5R6.js";
112
+ } from "../chunk-KE4TSJUD.js";
113
+ import "../chunk-IVB5O6NY.js";
114
+ import "../chunk-BBFGDYYI.js";
99
115
  import {
100
116
  readLedgerSummary
101
- } from "../chunk-XJIIU36L.js";
117
+ } from "../chunk-7YJSDXLM.js";
102
118
  import {
103
119
  AUTO_UPDATE_DISABLE_ENV,
104
120
  autoUpdateOffReason,
@@ -106,7 +122,7 @@ import {
106
122
  describeAutoUpdateCheck,
107
123
  readAutoUpdateState,
108
124
  takeAutoUpdateAnnouncement
109
- } from "../chunk-DM24VZOI.js";
125
+ } from "../chunk-IXTVUINH.js";
110
126
  import {
111
127
  compatibleConfigFile,
112
128
  compatibleInstructionsFile,
@@ -114,7 +130,7 @@ import {
114
130
  hasCompatibleHooks,
115
131
  hasCompatibleMcpServer,
116
132
  missingCompatibleHookEvents
117
- } from "../chunk-WY6YAMZW.js";
133
+ } from "../chunk-ICQCQAUO.js";
118
134
  import {
119
135
  daemonHasRemoteProof,
120
136
  daemonServiceManagerAvailable,
@@ -123,8 +139,9 @@ import {
123
139
  readDaemonNeedsLogin,
124
140
  readDaemonStatus,
125
141
  readInstalledDaemonService
126
- } from "../chunk-ADXHPGBZ.js";
142
+ } from "../chunk-LJHDUKBB.js";
127
143
  import {
144
+ GEMINI_HOOK_BINARY,
128
145
  claudeOtherHolders,
129
146
  claudeUnprovenHolds,
130
147
  claudeWired,
@@ -139,19 +156,16 @@ import {
139
156
  describeOtherHolder,
140
157
  geminiOtherHolders,
141
158
  geminiWired,
159
+ hasGeminiHooks,
142
160
  holdsLong,
143
161
  isBridgeLocator,
144
162
  liveBridgeProbe,
163
+ missingGeminiHookEvents,
145
164
  pusharyHookExecutable,
146
165
  resolveBridgeStub
147
- } from "../chunk-GTBWWCCM.js";
148
- import {
149
- GEMINI_HOOK_BINARY,
150
- hasGeminiHooks,
151
- missingGeminiHookEvents
152
- } from "../chunk-ANP3DIST.js";
153
- import "../chunk-SROWUG5W.js";
154
- import "../chunk-Z3M627TQ.js";
166
+ } from "../chunk-BFF3ABFV.js";
167
+ import "../chunk-ZK5WYAMI.js";
168
+ import "../chunk-FONWVVDD.js";
155
169
  import {
156
170
  parseFlags
157
171
  } from "../chunk-NMUI3ZWG.js";
@@ -160,30 +174,30 @@ import {
160
174
  keyPrefix,
161
175
  readControlMode,
162
176
  readKeySource
163
- } from "../chunk-ED2SWTPC.js";
164
- import "../chunk-3UNAPXED.js";
165
- import "../chunk-3KXBRSL3.js";
166
- import "../chunk-DTVHZDYM.js";
177
+ } from "../chunk-JOBSKQ2Z.js";
178
+ import "../chunk-XFDWLDHG.js";
179
+ import "../chunk-GMHQYX3D.js";
180
+ import "../chunk-D3U6CN7T.js";
167
181
  import "../chunk-POFBE6ZY.js";
168
182
  import {
169
183
  callMcpTool,
170
184
  sendMcpRequest
171
- } from "../chunk-BKCI53W6.js";
185
+ } from "../chunk-KNUYUQBP.js";
172
186
  import {
173
187
  checkApiKey,
174
188
  describeKeyCheck
175
- } from "../chunk-UHS5MMAI.js";
176
- import "../chunk-7ILQX47W.js";
189
+ } from "../chunk-3THDNNVL.js";
190
+ import "../chunk-P4RXSZDT.js";
177
191
  import {
178
192
  getMachineId
179
- } from "../chunk-FWS2KLV2.js";
193
+ } from "../chunk-PIBWX3EF.js";
180
194
  import {
181
195
  UsageError
182
196
  } from "../chunk-PPY5N2E6.js";
183
197
  import {
184
198
  EXIT
185
199
  } from "../chunk-KZERVKTD.js";
186
- import "../chunk-2VADJ6JH.js";
200
+ import "../chunk-METUT7V4.js";
187
201
  import {
188
202
  CLINE_AUTO_APPROVE_STEP,
189
203
  CLINE_LABEL,
@@ -211,25 +225,24 @@ import {
211
225
  geminiSettings,
212
226
  hasCodexHooks,
213
227
  hasInstructionBlock,
214
- hermesConfig,
215
- hermesConfigReceipt,
228
+ hermesAppWiringRecord,
216
229
  missingCodexHookEvents,
217
230
  pusharyConfigFile,
218
231
  readCodexMcpAuth,
219
232
  vscodePluginDir
220
- } from "../chunk-ATPJGHUP.js";
233
+ } from "../chunk-TI4JYPGQ.js";
221
234
  import {
222
235
  fetchLatestPublishedVersion,
223
236
  readGlobalCliInstall,
224
237
  readJsonSafe,
225
238
  resolvePathBinary
226
- } from "../chunk-SCMEVDAR.js";
239
+ } from "../chunk-WJLHZ6E6.js";
227
240
  import {
228
241
  getBaseUrl
229
- } from "../chunk-Y64JGYTB.js";
242
+ } from "../chunk-32OSSYGZ.js";
230
243
  import {
231
244
  NPX_LATEST_COMMAND
232
- } from "../chunk-BAGBCSXA.js";
245
+ } from "../chunk-X2MTVD4W.js";
233
246
  import {
234
247
  commandsPackage,
235
248
  getPackageVersion,
@@ -249,7 +262,7 @@ import {
249
262
  hookCompatibleProfile,
250
263
  isHookActivationReport,
251
264
  redactSecretsFromContent
252
- } from "../chunk-MNKIR2ZB.js";
265
+ } from "../chunk-RQOT6QL3.js";
253
266
  import "../chunk-MLKGABMK.js";
254
267
 
255
268
  // bin/pushary-doctor.ts
@@ -577,14 +590,43 @@ var reportFxQuestionRouting = (routing) => {
577
590
  }
578
591
  console.log(` ${warn} fx: questions can still stop in the terminal ${dim(`(${FX_QUESTION_ROUTING_WARNINGS[routing]})`)}`);
579
592
  };
580
- var reportHermesStatus = (status) => {
581
- const config = hermesConfig();
582
- check(status.pluginInstalled, "Hermes: plugin installed", status.pluginInstalled ? HERMES_PIP_PACKAGE : `${HERMES_PIP_PACKAGE} is not installed in Hermes' Python \u2014 run ${retryAgentCommand("hermes")}`);
583
- check(status.pluginEnabled, "Hermes: plugin enabled", status.pluginEnabled ? config : `"${HERMES_PLUGIN_NAME}" is missing from plugins.enabled in ${config} \u2014 run ${retryAgentCommand("hermes")}`);
584
- if (status.approvalsRouted) check(true, "Hermes: approvals go through Pushary", `security.approval.transport in ${config}`);
585
- else console.log(` ${warn} Hermes: approvals stay in the terminal ${dim(`(security.approval.transport is not "pushary" in ${config})`)}`);
586
- if (status.questionsRouted) check(true, "Hermes: questions go through Pushary", `clarify is off in ${config}`);
587
- else console.log(` ${warn} Hermes: questions can stop in the terminal ${dim(`(clarify is not in agent.disabled_toolsets in ${config})`)}`);
593
+ var INSTALLER_LABELS = { cli: "the CLI", mac_app: "the Mac app" };
594
+ var hermesFolderDetail = (folder) => {
595
+ switch (folder.kind) {
596
+ case "absent":
597
+ return "missing";
598
+ case "pushary":
599
+ return `${folder.version ?? "unknown version"}, installed by ${INSTALLER_LABELS[folder.marker.installedBy]}`;
600
+ case "hermes_installer":
601
+ return `${folder.version ?? "unknown version"}, installed by hermes plugins install`;
602
+ case "unknown":
603
+ return `${folder.version ?? "unknown version"}, not installed by Pushary`;
604
+ }
605
+ };
606
+ var reportHermesWiring = (inspection) => {
607
+ const { folder, settings, state } = inspection;
608
+ const repair = hermesRepairStep(hermesWiringOwner(folder, existsSync(hermesAppWiringRecord())));
609
+ const directory = shortenHome(hermesPluginDirectory(inspection.home));
610
+ check(folder.kind !== "absent", "Hermes: plugin installed", folder.kind === "absent" ? `${directory} is missing \u2014 ${repair}` : `${directory} (${hermesFolderDetail(folder)})`);
611
+ const shipped = shippedHermesPlugin();
612
+ if (hasUpdateFrom(folder, "cli", shipped)) {
613
+ console.log(` ${warn} Hermes: plugin is older than this CLI's ${shipped.version} ${dim(`(run ${NPX_LATEST_COMMAND} upgrade)`)}`);
614
+ }
615
+ const enabled = settings.pluginEnabled && !settings.pluginDisabled;
616
+ check(enabled, "Hermes: plugin enabled", enabled ? "plugins.enabled" : `${describeHermesProblems(settings.pluginDisabled ? ["plugin_disabled"] : ["plugin_not_enabled"])} \u2014 ${repair}`);
617
+ if (routesHermesApprovals(settings)) check(true, "Hermes: approvals go through Pushary", "security.approval.transport");
618
+ else console.log(` ${warn} Hermes: approvals stay in the terminal ${dim('(security.approval.transport is not "pushary")')}`);
619
+ if (routesHermesQuestions(folder)) check(true, "Hermes: questions go through Pushary", "the plugin sends clarify questions to pushary_ask");
620
+ else console.log(` ${warn} Hermes: questions can stop in the terminal ${dim("(this plugin copy does not route clarify)")}`);
621
+ if (state.kind === "restart_needed") {
622
+ console.log(` ${warn} Hermes: ${describeHermesState(state)} ${dim(`(${HERMES_RESTART_COMMAND})`)}`);
623
+ } else if (runsAnOlderPlugin(state)) {
624
+ console.log(` ${warn} Hermes: ${describeHermesState(state)} ${dim(`(${HERMES_RESTART_COMMAND})`)}`);
625
+ } else if (state.kind === "connected" && state.live) {
626
+ check(true, "Hermes: loaded by the running Hermes", describeHermesState(state));
627
+ } else if (state.kind === "connected") {
628
+ console.log(` ${dim("\u2013")} Hermes: ${describeHermesState(state)}`);
629
+ }
588
630
  };
589
631
  var reportClineKey = (cline, apiKey) => {
590
632
  if (cline.runsCommand) {
@@ -770,7 +812,7 @@ var main = async () => {
770
812
  }
771
813
  }
772
814
  const maskKey = (k) => `pk_${k.split(".")[0]?.slice(3, 7)}...`;
773
- const macApp = readMacAppConnectionWhenKeyless(apiKey);
815
+ const macApp = readMacAppConnectionWhenKeyless(apiKey, keyWrittenByMacApp(keySource === "config-file" ? apiKey : null));
774
816
  if (keySource === "config-file") {
775
817
  console.log(` ${pass} API key in ${dim(source.origin ?? "the config file")} ${dim(`(${maskKey(apiKey)})`)}`);
776
818
  } else if (keySource === "profile") {
@@ -794,6 +836,7 @@ var main = async () => {
794
836
  }
795
837
  let keyVerdict = null;
796
838
  if (apiKey) keyVerdict = await checkApiKey(apiKey);
839
+ const keyScope = keyScopeOf(keyVerdict);
797
840
  const signedOut = readSignedOutDiagnosis(apiKey ?? null, activeKeyVerdictOf(keyVerdict));
798
841
  if (signedOut.kind === "signed_out_on_mac") {
799
842
  check(false, "Key still signed in", SIGNED_OUT_ON_MAC_MESSAGE);
@@ -1316,16 +1359,15 @@ var main = async () => {
1316
1359
  skipped("fx", installed("fx") ? "installed, but Pushary is not set up for it" : "not installed");
1317
1360
  }
1318
1361
  reportCline(inspectClineInstallation(clineMcpSettings(), apiKey), apiKey);
1319
- const hermesPython = resolveHermesPython();
1320
- const hermesStatus = hermesPython ? readHermesStatus(hermesPython) : null;
1321
- const hermesSetupRecorded = existsSync(hermesConfigReceipt());
1322
- if (hermesStatus && hermesWiredByPushary(hermesStatus, hermesSetupRecorded)) {
1362
+ const hermes = inspectHermesWiring();
1363
+ const hermesSetupRecorded = hermesSetupWasRecorded();
1364
+ if (hermes.kind === "inspected" && (hermes.state.kind !== "not_wired" || hermesSetupRecorded)) {
1323
1365
  checking("Hermes");
1324
- reportHermesStatus(hermesStatus);
1325
- } else if (hermesPython && hermesStatus === null && hermesSetupRecorded) {
1326
- check(false, "Hermes: config readable", `${hermesConfig()} could not be read with Hermes' Python \u2014 run ${retryAgentCommand("hermes")}`);
1366
+ reportHermesWiring(hermes);
1367
+ } else if (hermes.kind === "unreadable" && hermesSetupRecorded) {
1368
+ 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")}`);
1327
1369
  } else {
1328
- skipped("Hermes", installed("hermes") ? "installed, but Pushary is not set up for it" : "not installed");
1370
+ skipped("Hermes", findHermesLauncher() ? "installed, but Pushary is not set up for it" : "not installed");
1329
1371
  }
1330
1372
  if (bridgeStub) {
1331
1373
  const resolution = resolveBridgeStub(bridgeStub, liveBridgeProbe());
@@ -1502,7 +1544,7 @@ var main = async () => {
1502
1544
  if (answerStep !== null) console.log(` ${dim(answerStep)}`);
1503
1545
  const outcome = await verifyRoundTrip(apiKey, "Pushary Doctor");
1504
1546
  roundTrip = outcome;
1505
- const report = describeRoundTrip(outcome, appPlatforms);
1547
+ const report = describeRoundTrip(outcome, { appPlatforms, keyScope });
1506
1548
  check(report.ok, "Synthetic answer test", report.message);
1507
1549
  for (const line of report.next) console.log(` ${dim(line)}`);
1508
1550
  }
@@ -1528,7 +1570,7 @@ var main = async () => {
1528
1570
  for (const p of overrides) {
1529
1571
  console.log(` ${dim("\xB7")} ${p.tool}: ${describeWaitLadder(p)}`);
1530
1572
  }
1531
- console.log(` ${dim("Tune it:")} ${cyan("pushary wait <seconds>")} ${dim("\xB7 full ladder:")} ${cyan("pushary wait status")}`);
1573
+ console.log(` ${dim("Tune it:")} ${cyan(pushWindowChangeStep(keyScope, getBaseUrl()))} ${dim("\xB7 full ladder:")} ${cyan("pushary wait status")}`);
1532
1574
  }
1533
1575
  } catch {
1534
1576
  }
@@ -1,51 +1,49 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  readHookInput
4
- } from "../chunk-PP7FC3Y7.js";
4
+ } from "../chunk-EQR6JSFE.js";
5
5
  import {
6
6
  announceSubscriptionRequired,
7
7
  isDeferAnswer
8
- } from "../chunk-UMTMFDL2.js";
9
- import "../chunk-Q2BD4IBX.js";
10
- import "../chunk-SZBMTOUZ.js";
11
- import "../chunk-WY6YAMZW.js";
12
- import "../chunk-ADXHPGBZ.js";
13
- import "../chunk-GTBWWCCM.js";
14
- import "../chunk-ANP3DIST.js";
15
- import "../chunk-SROWUG5W.js";
16
- import "../chunk-Z3M627TQ.js";
8
+ } from "../chunk-CPLQ5OHX.js";
9
+ import "../chunk-SB6TYV4M.js";
10
+ import "../chunk-Y6ZN454E.js";
11
+ import "../chunk-ICQCQAUO.js";
12
+ import "../chunk-LJHDUKBB.js";
13
+ import "../chunk-BFF3ABFV.js";
14
+ import "../chunk-ZK5WYAMI.js";
15
+ import "../chunk-FONWVVDD.js";
17
16
  import "../chunk-NMUI3ZWG.js";
18
- import "../chunk-QSW3HAKI.js";
19
- import "../chunk-TJUJAK5L.js";
20
- import "../chunk-TK4JU2F7.js";
17
+ import "../chunk-NWN6GGJL.js";
18
+ import "../chunk-YSD4SMHE.js";
21
19
  import "../chunk-XHKBHWLX.js";
22
- import "../chunk-ED2SWTPC.js";
23
- import "../chunk-3UNAPXED.js";
24
- import "../chunk-3KXBRSL3.js";
20
+ import "../chunk-JOBSKQ2Z.js";
21
+ import "../chunk-XFDWLDHG.js";
22
+ import "../chunk-GMHQYX3D.js";
25
23
  import {
26
24
  askUser,
27
25
  isDecisionStopped,
28
26
  isQuestionLimitRefusal,
29
27
  waitForQuestion
30
- } from "../chunk-DTVHZDYM.js";
28
+ } from "../chunk-D3U6CN7T.js";
31
29
  import "../chunk-POFBE6ZY.js";
32
30
  import {
33
31
  SubscriptionRequiredError
34
- } from "../chunk-BKCI53W6.js";
35
- import "../chunk-UHS5MMAI.js";
36
- import "../chunk-7ILQX47W.js";
32
+ } from "../chunk-KNUYUQBP.js";
33
+ import "../chunk-3THDNNVL.js";
34
+ import "../chunk-P4RXSZDT.js";
37
35
  import {
38
36
  getMachineId
39
- } from "../chunk-FWS2KLV2.js";
37
+ } from "../chunk-PIBWX3EF.js";
40
38
  import "../chunk-PPY5N2E6.js";
41
39
  import "../chunk-KZERVKTD.js";
42
- import "../chunk-2VADJ6JH.js";
43
- import "../chunk-ATPJGHUP.js";
44
- import "../chunk-SCMEVDAR.js";
40
+ import "../chunk-METUT7V4.js";
41
+ import "../chunk-TI4JYPGQ.js";
42
+ import "../chunk-WJLHZ6E6.js";
45
43
  import {
46
44
  getApiKey
47
- } from "../chunk-Y64JGYTB.js";
48
- import "../chunk-BAGBCSXA.js";
45
+ } from "../chunk-32OSSYGZ.js";
46
+ import "../chunk-X2MTVD4W.js";
49
47
  import "../chunk-QTOLNRET.js";
50
48
  import {
51
49
  ELICITATION_ANSWERABLE_MODE,
@@ -57,7 +55,7 @@ import {
57
55
  planElicitationAsk,
58
56
  readElicitationFields,
59
57
  renderElicitationOutput
60
- } from "../chunk-MNKIR2ZB.js";
58
+ } from "../chunk-RQOT6QL3.js";
61
59
  import "../chunk-MLKGABMK.js";
62
60
 
63
61
  // bin/pushary-elicitation-hook.ts
@@ -5,41 +5,40 @@ import {
5
5
  postLiveSession,
6
6
  postLiveSessionUntilAccepted,
7
7
  startLiveSessionHeartbeat
8
- } from "../chunk-NUEPJ5W6.js";
8
+ } from "../chunk-XZKSUJ55.js";
9
9
  import {
10
10
  resolveProviderBinary
11
- } from "../chunk-R4FL5JHK.js";
12
- import "../chunk-HIYLAC3C.js";
11
+ } from "../chunk-KE4TSJUD.js";
12
+ import "../chunk-IVB5O6NY.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-6CZX6YOE.js";
20
- import "../chunk-RABLE5R6.js";
21
- import "../chunk-QSW3HAKI.js";
22
- import "../chunk-TJUJAK5L.js";
19
+ } from "../chunk-XNUWKKGS.js";
20
+ import "../chunk-BBFGDYYI.js";
21
+ import "../chunk-NWN6GGJL.js";
23
22
  import {
24
23
  transcriptsEnabled
25
- } from "../chunk-TK4JU2F7.js";
24
+ } from "../chunk-YSD4SMHE.js";
26
25
  import {
27
26
  spawnClaude
28
27
  } from "../chunk-XHKBHWLX.js";
29
- import "../chunk-ED2SWTPC.js";
28
+ import "../chunk-JOBSKQ2Z.js";
30
29
  import {
31
30
  getMachineId
32
- } from "../chunk-FWS2KLV2.js";
33
- import "../chunk-2VADJ6JH.js";
34
- import "../chunk-ATPJGHUP.js";
35
- import "../chunk-SCMEVDAR.js";
31
+ } from "../chunk-PIBWX3EF.js";
32
+ import "../chunk-METUT7V4.js";
33
+ import "../chunk-TI4JYPGQ.js";
34
+ import "../chunk-WJLHZ6E6.js";
36
35
  import {
37
36
  getApiKey,
38
37
  getBaseUrl
39
- } from "../chunk-Y64JGYTB.js";
40
- import "../chunk-BAGBCSXA.js";
38
+ } from "../chunk-32OSSYGZ.js";
39
+ import "../chunk-X2MTVD4W.js";
41
40
  import "../chunk-QTOLNRET.js";
42
- import "../chunk-MNKIR2ZB.js";
41
+ import "../chunk-RQOT6QL3.js";
43
42
  import "../chunk-MLKGABMK.js";
44
43
 
45
44
  // bin/pushary-gemini-bridge.ts
@@ -2,31 +2,29 @@
2
2
  import {
3
3
  isGatingMoment,
4
4
  recordKeylessMoment
5
- } from "../chunk-XJIIU36L.js";
5
+ } from "../chunk-7YJSDXLM.js";
6
6
  import {
7
7
  triggerAutoUpdate
8
- } from "../chunk-DM24VZOI.js";
8
+ } from "../chunk-IXTVUINH.js";
9
9
  import {
10
10
  readHookInput
11
- } from "../chunk-PP7FC3Y7.js";
11
+ } from "../chunk-EQR6JSFE.js";
12
12
  import {
13
13
  announceSubscriptionRequired,
14
14
  isDeferAnswer
15
- } from "../chunk-UMTMFDL2.js";
16
- import "../chunk-Q2BD4IBX.js";
17
- import "../chunk-SZBMTOUZ.js";
18
- import "../chunk-WY6YAMZW.js";
19
- import "../chunk-ADXHPGBZ.js";
20
- import "../chunk-GTBWWCCM.js";
21
- import "../chunk-ANP3DIST.js";
22
- import "../chunk-SROWUG5W.js";
23
- import "../chunk-Z3M627TQ.js";
15
+ } from "../chunk-CPLQ5OHX.js";
16
+ import "../chunk-SB6TYV4M.js";
17
+ import "../chunk-Y6ZN454E.js";
18
+ import "../chunk-ICQCQAUO.js";
19
+ import "../chunk-LJHDUKBB.js";
20
+ import "../chunk-BFF3ABFV.js";
21
+ import "../chunk-ZK5WYAMI.js";
22
+ import "../chunk-FONWVVDD.js";
24
23
  import "../chunk-NMUI3ZWG.js";
25
- import "../chunk-QSW3HAKI.js";
26
- import "../chunk-TJUJAK5L.js";
27
- import "../chunk-TK4JU2F7.js";
24
+ import "../chunk-NWN6GGJL.js";
25
+ import "../chunk-YSD4SMHE.js";
28
26
  import "../chunk-XHKBHWLX.js";
29
- import "../chunk-ED2SWTPC.js";
27
+ import "../chunk-JOBSKQ2Z.js";
30
28
  import {
31
29
  DEFAULT_SESSION,
32
30
  UNNAMED_ACTION,
@@ -45,10 +43,10 @@ import {
45
43
  readLastUserPrompt,
46
44
  reportEvent,
47
45
  scopePathFor
48
- } from "../chunk-3UNAPXED.js";
46
+ } from "../chunk-XFDWLDHG.js";
49
47
  import {
50
48
  repoKeyFor
51
- } from "../chunk-3KXBRSL3.js";
49
+ } from "../chunk-GMHQYX3D.js";
52
50
  import {
53
51
  askUser,
54
52
  exitAfterClientReports,
@@ -57,27 +55,27 @@ import {
57
55
  isQuestionLimitRefusal,
58
56
  sendNotification,
59
57
  waitForQuestion
60
- } from "../chunk-DTVHZDYM.js";
58
+ } from "../chunk-D3U6CN7T.js";
61
59
  import "../chunk-POFBE6ZY.js";
62
60
  import {
63
61
  SubscriptionRequiredError
64
- } from "../chunk-BKCI53W6.js";
65
- import "../chunk-UHS5MMAI.js";
66
- import "../chunk-7ILQX47W.js";
62
+ } from "../chunk-KNUYUQBP.js";
63
+ import "../chunk-3THDNNVL.js";
64
+ import "../chunk-P4RXSZDT.js";
67
65
  import {
68
66
  getMachineId
69
- } from "../chunk-FWS2KLV2.js";
67
+ } from "../chunk-PIBWX3EF.js";
70
68
  import "../chunk-PPY5N2E6.js";
71
69
  import {
72
70
  EXIT
73
71
  } from "../chunk-KZERVKTD.js";
74
- import "../chunk-2VADJ6JH.js";
75
- import "../chunk-ATPJGHUP.js";
76
- import "../chunk-SCMEVDAR.js";
72
+ import "../chunk-METUT7V4.js";
73
+ import "../chunk-TI4JYPGQ.js";
74
+ import "../chunk-WJLHZ6E6.js";
77
75
  import {
78
76
  getApiKey
79
- } from "../chunk-Y64JGYTB.js";
80
- import "../chunk-BAGBCSXA.js";
77
+ } from "../chunk-32OSSYGZ.js";
78
+ import "../chunk-X2MTVD4W.js";
81
79
  import "../chunk-QTOLNRET.js";
82
80
  import {
83
81
  DECISION_STOP_REASON,
@@ -91,7 +89,7 @@ import {
91
89
  questionLimitHandBack,
92
90
  refusesWhenUnanswered,
93
91
  resolveGate
94
- } from "../chunk-MNKIR2ZB.js";
92
+ } from "../chunk-RQOT6QL3.js";
95
93
  import "../chunk-MLKGABMK.js";
96
94
 
97
95
  // bin/pushary-gemini-hook.ts