pushary 1.9.66 → 1.9.67

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (127) hide show
  1. package/CHANGELOG.md +9 -0
  2. package/data/SKILL.md +1 -1
  3. package/data/cursor-plugin/skills/pushary/SKILL.md +1 -1
  4. package/data/vscode-plugin/skills/pushary/SKILL.md +1 -1
  5. package/dist/{api-GDSVUTI2.js → api-3WIPD5GC.js} +10 -10
  6. package/dist/bin/pushary-bell-hook.js +25 -25
  7. package/dist/bin/pushary-bell.js +10 -10
  8. package/dist/bin/pushary-claude.js +26 -26
  9. package/dist/bin/pushary-clean.js +73 -74
  10. package/dist/bin/pushary-codex-bridge.js +21 -21
  11. package/dist/bin/pushary-codex-hook.js +30 -30
  12. package/dist/bin/pushary-codex-session.js +8 -8
  13. package/dist/bin/pushary-codex.js +13 -13
  14. package/dist/bin/pushary-connect.js +28 -27
  15. package/dist/bin/pushary-cowork.js +5 -5
  16. package/dist/bin/pushary-daemon.js +40 -39
  17. package/dist/bin/pushary-disconnect.js +25 -25
  18. package/dist/bin/pushary-doctor.js +115 -71
  19. package/dist/bin/pushary-elicitation-hook.js +25 -25
  20. package/dist/bin/pushary-gemini-bridge.js +15 -15
  21. package/dist/bin/pushary-gemini-hook.js +27 -27
  22. package/dist/bin/pushary-hook.js +29 -29
  23. package/dist/bin/pushary-login.js +20 -19
  24. package/dist/bin/pushary-logout.js +26 -27
  25. package/dist/bin/pushary-mcp.js +11 -11
  26. package/dist/bin/pushary-mode.js +16 -15
  27. package/dist/bin/pushary-notification-hook.js +24 -24
  28. package/dist/bin/pushary-opencode-hook.js +26 -26
  29. package/dist/bin/pushary-permission-denied-hook.js +29 -29
  30. package/dist/bin/pushary-permission-hook.js +29 -29
  31. package/dist/bin/pushary-post-hook.js +24 -24
  32. package/dist/bin/pushary-prompt-hook.js +24 -24
  33. package/dist/bin/pushary-session-end-hook.js +26 -26
  34. package/dist/bin/pushary-session-start-hook.js +34 -33
  35. package/dist/bin/pushary-setup.js +107 -93
  36. package/dist/bin/pushary-stats.js +5 -5
  37. package/dist/bin/pushary-status.js +37 -35
  38. package/dist/bin/pushary-stop-hook.js +24 -24
  39. package/dist/bin/pushary-stopfailure-hook.js +24 -24
  40. package/dist/bin/pushary-suggestions.js +15 -14
  41. package/dist/bin/pushary-transcript-register.js +16 -16
  42. package/dist/bin/pushary-transcripts.js +18 -17
  43. package/dist/bin/pushary-upgrade.js +45 -38
  44. package/dist/bin/pushary-wait.js +26 -20
  45. package/dist/bin/pushary.js +7 -7
  46. package/dist/{chunk-A47UKPC7.js → chunk-32OSSYGZ.js} +1 -1
  47. package/dist/{chunk-QR2QWGQI.js → chunk-3THDNNVL.js} +3 -3
  48. package/dist/{chunk-DPU6H4JY.js → chunk-564IPPBL.js} +3 -3
  49. package/dist/chunk-5MOJCOCF.js +25 -0
  50. package/dist/{chunk-V4EOFOB2.js → chunk-6H4E5UBA.js} +6 -6
  51. package/dist/{chunk-DKMVVBXO.js → chunk-6LXXKMV6.js} +38 -10
  52. package/dist/chunk-76SWHCAR.js +299 -0
  53. package/dist/{chunk-G6VJZ3RB.js → chunk-77L2TNJW.js} +1 -1
  54. package/dist/{chunk-6BGVSV2Q.js → chunk-7YJSDXLM.js} +1 -1
  55. package/dist/{chunk-AWGBL4P3.js → chunk-B3V2WOJX.js} +89 -41
  56. package/dist/{chunk-RJ6JEHCP.js → chunk-BBFGDYYI.js} +1 -1
  57. package/dist/{chunk-YQDCTID4.js → chunk-BFF3ABFV.js} +4 -4
  58. package/dist/{chunk-R7C2FS33.js → chunk-C4EDAHXI.js} +1 -1
  59. package/dist/{chunk-YB3HMDKE.js → chunk-CHYBOTQN.js} +2 -2
  60. package/dist/{chunk-26W46E46.js → chunk-CJZLIAJF.js} +27 -10
  61. package/dist/{chunk-ZJV7SFIJ.js → chunk-CPLQ5OHX.js} +1 -1
  62. package/dist/{chunk-ZAZUDYSF.js → chunk-D3U6CN7T.js} +5 -5
  63. package/dist/{chunk-MNNQEUQC.js → chunk-D7Z4USSB.js} +27 -8
  64. package/dist/{chunk-V3YBVOTZ.js → chunk-DP6LU6BB.js} +2 -2
  65. package/dist/{chunk-32ZT2ATY.js → chunk-DXCHIKAN.js} +8 -8
  66. package/dist/{chunk-QN25WBXL.js → chunk-EQR6JSFE.js} +7 -7
  67. package/dist/{chunk-IQ3GKPFM.js → chunk-FONWVVDD.js} +1 -1
  68. package/dist/{chunk-XXIJBYNW.js → chunk-GMHQYX3D.js} +1 -1
  69. package/dist/{chunk-3EZP5ZPS.js → chunk-ICQCQAUO.js} +4 -4
  70. package/dist/{chunk-5J7OZBJ4.js → chunk-IPG3RS23.js} +2 -2
  71. package/dist/{chunk-4APD2DPI.js → chunk-IRV2MNMA.js} +53 -3
  72. package/dist/{chunk-MDIGG3Q7.js → chunk-IVB5O6NY.js} +3 -3
  73. package/dist/{chunk-VURDLVAQ.js → chunk-IXTVUINH.js} +3 -3
  74. package/dist/{chunk-HUGVJBDN.js → chunk-JBRMIADM.js} +2 -2
  75. package/dist/{chunk-IGO3AGZK.js → chunk-JHB5SR5B.js} +4 -4
  76. package/dist/{chunk-CNJ7SI5V.js → chunk-JOBSKQ2Z.js} +4 -4
  77. package/dist/{chunk-5FJDODOA.js → chunk-JOD2325S.js} +3 -3
  78. package/dist/{chunk-376TUN72.js → chunk-JSPCGPSH.js} +3 -3
  79. package/dist/{chunk-T6YLXO6N.js → chunk-KE4TSJUD.js} +4 -4
  80. package/dist/{chunk-TQNFDNJA.js → chunk-KIXRHNCW.js} +6 -6
  81. package/dist/{chunk-Q5RNYE2L.js → chunk-KNUYUQBP.js} +4 -4
  82. package/dist/{chunk-3FQX74E4.js → chunk-KTLE7NIK.js} +23 -8
  83. package/dist/{chunk-57NTMVMI.js → chunk-LJHDUKBB.js} +6 -6
  84. package/dist/{chunk-CN6JFM62.js → chunk-LS42NV6E.js} +15 -6
  85. package/dist/{chunk-6ZXCWK27.js → chunk-LYTWK5TF.js} +5 -5
  86. package/dist/{chunk-XIJTXRWB.js → chunk-METUT7V4.js} +2 -2
  87. package/dist/{chunk-7LK3Y6ET.js → chunk-NSS2AIGI.js} +6 -6
  88. package/dist/{chunk-XEXF2OFZ.js → chunk-NWN6GGJL.js} +2 -2
  89. package/dist/{chunk-GECU7V44.js → chunk-P4RXSZDT.js} +3 -3
  90. package/dist/{chunk-IA5VWIHV.js → chunk-PIBWX3EF.js} +2 -2
  91. package/dist/{chunk-GWYCKTXS.js → chunk-PO2P3XDC.js} +5 -5
  92. package/dist/{chunk-DIUTSF6I.js → chunk-R2BZH2NK.js} +4 -4
  93. package/dist/{chunk-6RJZSBPD.js → chunk-RO2B4YBF.js} +1 -1
  94. package/dist/{chunk-EJR5JXMV.js → chunk-RQOT6QL3.js} +43 -5
  95. package/dist/{chunk-SVKCYUYP.js → chunk-SB6TYV4M.js} +9 -9
  96. package/dist/{chunk-GDLT32I4.js → chunk-TI4JYPGQ.js} +6 -2
  97. package/dist/{chunk-B6JC676X.js → chunk-UC2J5RR4.js} +1 -1
  98. package/dist/{chunk-XDDSURY3.js → chunk-UQIPWXBL.js} +3 -3
  99. package/dist/{chunk-EU2ZOZC3.js → chunk-UXN73YAE.js} +3 -3
  100. package/dist/{chunk-RSZQEEEW.js → chunk-VEYFXRZ6.js} +7 -6
  101. package/dist/{chunk-XFQAK35L.js → chunk-VHMZPN3N.js} +1 -1
  102. package/dist/{chunk-45KMS76L.js → chunk-VKZ3RJ5U.js} +1 -1
  103. package/dist/chunk-VVIQWGS7.js +2298 -0
  104. package/dist/{chunk-KS3O6O7E.js → chunk-WJLHZ6E6.js} +3 -3
  105. package/dist/{chunk-GO7YKPT3.js → chunk-X2MTVD4W.js} +1 -1
  106. package/dist/{chunk-2BL6KWN7.js → chunk-XFDWLDHG.js} +9 -9
  107. package/dist/{chunk-3ELJIG2R.js → chunk-XNUWKKGS.js} +3 -3
  108. package/dist/{chunk-QOIPUYUD.js → chunk-XZKSUJ55.js} +1 -1
  109. package/dist/{chunk-JL3SZJJP.js → chunk-Y4MRHAE5.js} +2 -2
  110. package/dist/{chunk-DBUHSUL7.js → chunk-Y6ZN454E.js} +1 -1
  111. package/dist/{chunk-XGFFNERF.js → chunk-YSD4SMHE.js} +1 -1
  112. package/dist/{chunk-UTAARXYQ.js → chunk-ZK5WYAMI.js} +1 -1
  113. package/dist/{chunk-AVWECJSN.js → chunk-ZPIYJLQ3.js} +2 -2
  114. package/dist/{codex-app-cards-switch-W7OLKOMO.js → codex-app-cards-switch-25TDTMUZ.js} +11 -11
  115. package/dist/{codex-desktop-launch-U6V3AXZF.js → codex-desktop-launch-JDKUCD2Y.js} +1 -1
  116. package/dist/{codex-session-launch-EFU46WBL.js → codex-session-launch-6N35AAEO.js} +18 -18
  117. package/dist/{config-UC4LMCNX.js → config-OBGYURFX.js} +3 -3
  118. package/dist/{global-upgrade-ABF5O3HU.js → global-upgrade-2QNQD5OM.js} +10 -10
  119. package/dist/{identity-3ZUZPHN6.js → identity-CUPX2U7Q.js} +4 -4
  120. package/dist/{live-capabilities-BXWXJARK.js → live-capabilities-CUEIWMSM.js} +5 -5
  121. package/dist/{paths-FO76CFRQ.js → paths-BHLBZ6FY.js} +7 -3
  122. package/dist/{reapply-3T3DFUAI.js → reapply-4GXLWZ5M.js} +27 -26
  123. package/dist/src/index.js +28 -28
  124. package/dist/{upgrade-lock-EZ5JIPJE.js → upgrade-lock-RDKTAHWR.js} +4 -4
  125. package/dist/{usage-Y6BL7RUD.js → usage-KX2HN47E.js} +3 -3
  126. package/package.json +1 -1
  127. package/dist/chunk-QBNICXMC.js +0 -615
@@ -3,20 +3,24 @@ import {
3
3
  readServiceExecPath,
4
4
  readSetupFailure,
5
5
  versionManagerOf
6
- } from "../chunk-376TUN72.js";
6
+ } from "../chunk-JSPCGPSH.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-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-XFQAK35L.js";
20
+ } from "../chunk-VHMZPN3N.js";
17
21
  import {
18
22
  fetchChannels
19
- } from "../chunk-DIUTSF6I.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-MNNQEUQC.js";
33
+ } from "../chunk-D7Z4USSB.js";
30
34
  import {
31
35
  readMachineReadiness,
32
36
  readManagedControlEvidence
33
- } from "../chunk-GWYCKTXS.js";
37
+ } from "../chunk-PO2P3XDC.js";
34
38
  import {
35
39
  assessCodexHookTrust,
36
40
  readCodexTrustForPusharyHooks
37
- } from "../chunk-JL3SZJJP.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-QBNICXMC.js";
56
+ } from "../chunk-76SWHCAR.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-LS42NV6E.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-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-6ZXCWK27.js";
85
+ } from "../chunk-LYTWK5TF.js";
70
86
  import {
71
87
  retryAgentCommand
72
- } from "../chunk-5FJDODOA.js";
73
- import "../chunk-HUGVJBDN.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-7LK3Y6ET.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-G6VJZ3RB.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-T6YLXO6N.js";
97
- import "../chunk-MDIGG3Q7.js";
98
- import "../chunk-RJ6JEHCP.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-6BGVSV2Q.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-VURDLVAQ.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-3EZP5ZPS.js";
133
+ } from "../chunk-ICQCQAUO.js";
118
134
  import {
119
135
  daemonHasRemoteProof,
120
136
  daemonServiceManagerAvailable,
@@ -123,7 +139,7 @@ import {
123
139
  readDaemonNeedsLogin,
124
140
  readDaemonStatus,
125
141
  readInstalledDaemonService
126
- } from "../chunk-57NTMVMI.js";
142
+ } from "../chunk-LJHDUKBB.js";
127
143
  import {
128
144
  GEMINI_HOOK_BINARY,
129
145
  claudeOtherHolders,
@@ -147,9 +163,9 @@ import {
147
163
  missingGeminiHookEvents,
148
164
  pusharyHookExecutable,
149
165
  resolveBridgeStub
150
- } from "../chunk-YQDCTID4.js";
151
- import "../chunk-UTAARXYQ.js";
152
- import "../chunk-IQ3GKPFM.js";
166
+ } from "../chunk-BFF3ABFV.js";
167
+ import "../chunk-ZK5WYAMI.js";
168
+ import "../chunk-FONWVVDD.js";
153
169
  import {
154
170
  parseFlags
155
171
  } from "../chunk-NMUI3ZWG.js";
@@ -158,30 +174,30 @@ import {
158
174
  keyPrefix,
159
175
  readControlMode,
160
176
  readKeySource
161
- } from "../chunk-CNJ7SI5V.js";
162
- import "../chunk-2BL6KWN7.js";
163
- import "../chunk-XXIJBYNW.js";
164
- import "../chunk-ZAZUDYSF.js";
177
+ } from "../chunk-JOBSKQ2Z.js";
178
+ import "../chunk-XFDWLDHG.js";
179
+ import "../chunk-GMHQYX3D.js";
180
+ import "../chunk-D3U6CN7T.js";
165
181
  import "../chunk-POFBE6ZY.js";
166
182
  import {
167
183
  callMcpTool,
168
184
  sendMcpRequest
169
- } from "../chunk-Q5RNYE2L.js";
185
+ } from "../chunk-KNUYUQBP.js";
170
186
  import {
171
187
  checkApiKey,
172
188
  describeKeyCheck
173
- } from "../chunk-QR2QWGQI.js";
174
- import "../chunk-GECU7V44.js";
189
+ } from "../chunk-3THDNNVL.js";
190
+ import "../chunk-P4RXSZDT.js";
175
191
  import {
176
192
  getMachineId
177
- } from "../chunk-IA5VWIHV.js";
193
+ } from "../chunk-PIBWX3EF.js";
178
194
  import {
179
195
  UsageError
180
196
  } from "../chunk-PPY5N2E6.js";
181
197
  import {
182
198
  EXIT
183
199
  } from "../chunk-KZERVKTD.js";
184
- import "../chunk-XIJTXRWB.js";
200
+ import "../chunk-METUT7V4.js";
185
201
  import {
186
202
  CLINE_AUTO_APPROVE_STEP,
187
203
  CLINE_LABEL,
@@ -209,25 +225,24 @@ import {
209
225
  geminiSettings,
210
226
  hasCodexHooks,
211
227
  hasInstructionBlock,
212
- hermesConfig,
213
- hermesConfigReceipt,
228
+ hermesAppWiringRecord,
214
229
  missingCodexHookEvents,
215
230
  pusharyConfigFile,
216
231
  readCodexMcpAuth,
217
232
  vscodePluginDir
218
- } from "../chunk-GDLT32I4.js";
233
+ } from "../chunk-TI4JYPGQ.js";
219
234
  import {
220
235
  fetchLatestPublishedVersion,
221
236
  readGlobalCliInstall,
222
237
  readJsonSafe,
223
238
  resolvePathBinary
224
- } from "../chunk-KS3O6O7E.js";
239
+ } from "../chunk-WJLHZ6E6.js";
225
240
  import {
226
241
  getBaseUrl
227
- } from "../chunk-A47UKPC7.js";
242
+ } from "../chunk-32OSSYGZ.js";
228
243
  import {
229
244
  NPX_LATEST_COMMAND
230
- } from "../chunk-GO7YKPT3.js";
245
+ } from "../chunk-X2MTVD4W.js";
231
246
  import {
232
247
  commandsPackage,
233
248
  getPackageVersion,
@@ -247,7 +262,7 @@ import {
247
262
  hookCompatibleProfile,
248
263
  isHookActivationReport,
249
264
  redactSecretsFromContent
250
- } from "../chunk-EJR5JXMV.js";
265
+ } from "../chunk-RQOT6QL3.js";
251
266
  import "../chunk-MLKGABMK.js";
252
267
 
253
268
  // bin/pushary-doctor.ts
@@ -575,14 +590,43 @@ var reportFxQuestionRouting = (routing) => {
575
590
  }
576
591
  console.log(` ${warn} fx: questions can still stop in the terminal ${dim(`(${FX_QUESTION_ROUTING_WARNINGS[routing]})`)}`);
577
592
  };
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})`)}`);
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
+ }
586
630
  };
587
631
  var reportClineKey = (cline, apiKey) => {
588
632
  if (cline.runsCommand) {
@@ -768,7 +812,7 @@ var main = async () => {
768
812
  }
769
813
  }
770
814
  const maskKey = (k) => `pk_${k.split(".")[0]?.slice(3, 7)}...`;
771
- const macApp = readMacAppConnectionWhenKeyless(apiKey);
815
+ const macApp = readMacAppConnectionWhenKeyless(apiKey, keyWrittenByMacApp(keySource === "config-file" ? apiKey : null));
772
816
  if (keySource === "config-file") {
773
817
  console.log(` ${pass} API key in ${dim(source.origin ?? "the config file")} ${dim(`(${maskKey(apiKey)})`)}`);
774
818
  } else if (keySource === "profile") {
@@ -792,6 +836,7 @@ var main = async () => {
792
836
  }
793
837
  let keyVerdict = null;
794
838
  if (apiKey) keyVerdict = await checkApiKey(apiKey);
839
+ const keyScope = keyScopeOf(keyVerdict);
795
840
  const signedOut = readSignedOutDiagnosis(apiKey ?? null, activeKeyVerdictOf(keyVerdict));
796
841
  if (signedOut.kind === "signed_out_on_mac") {
797
842
  check(false, "Key still signed in", SIGNED_OUT_ON_MAC_MESSAGE);
@@ -1314,16 +1359,15 @@ var main = async () => {
1314
1359
  skipped("fx", installed("fx") ? "installed, but Pushary is not set up for it" : "not installed");
1315
1360
  }
1316
1361
  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)) {
1362
+ const hermes = inspectHermesWiring();
1363
+ const hermesSetupRecorded = hermesSetupWasRecorded();
1364
+ if (hermes.kind === "inspected" && (hermes.state.kind !== "not_wired" || hermesSetupRecorded)) {
1321
1365
  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")}`);
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")}`);
1325
1369
  } else {
1326
- 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");
1327
1371
  }
1328
1372
  if (bridgeStub) {
1329
1373
  const resolution = resolveBridgeStub(bridgeStub, liveBridgeProbe());
@@ -1500,7 +1544,7 @@ var main = async () => {
1500
1544
  if (answerStep !== null) console.log(` ${dim(answerStep)}`);
1501
1545
  const outcome = await verifyRoundTrip(apiKey, "Pushary Doctor");
1502
1546
  roundTrip = outcome;
1503
- const report = describeRoundTrip(outcome, appPlatforms);
1547
+ const report = describeRoundTrip(outcome, { appPlatforms, keyScope });
1504
1548
  check(report.ok, "Synthetic answer test", report.message);
1505
1549
  for (const line of report.next) console.log(` ${dim(line)}`);
1506
1550
  }
@@ -1526,7 +1570,7 @@ var main = async () => {
1526
1570
  for (const p of overrides) {
1527
1571
  console.log(` ${dim("\xB7")} ${p.tool}: ${describeWaitLadder(p)}`);
1528
1572
  }
1529
- 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")}`);
1530
1574
  }
1531
1575
  } catch {
1532
1576
  }
@@ -1,49 +1,49 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  readHookInput
4
- } from "../chunk-QN25WBXL.js";
4
+ } from "../chunk-EQR6JSFE.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-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";
16
16
  import "../chunk-NMUI3ZWG.js";
17
- import "../chunk-XEXF2OFZ.js";
18
- import "../chunk-XGFFNERF.js";
17
+ import "../chunk-NWN6GGJL.js";
18
+ import "../chunk-YSD4SMHE.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-JOBSKQ2Z.js";
21
+ import "../chunk-XFDWLDHG.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-D3U6CN7T.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-KNUYUQBP.js";
33
+ import "../chunk-3THDNNVL.js";
34
+ import "../chunk-P4RXSZDT.js";
35
35
  import {
36
36
  getMachineId
37
- } from "../chunk-IA5VWIHV.js";
37
+ } from "../chunk-PIBWX3EF.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-TI4JYPGQ.js";
42
+ import "../chunk-WJLHZ6E6.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-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-3ELJIG2R.js";
20
- import "../chunk-RJ6JEHCP.js";
21
- import "../chunk-XEXF2OFZ.js";
19
+ } from "../chunk-XNUWKKGS.js";
20
+ import "../chunk-BBFGDYYI.js";
21
+ import "../chunk-NWN6GGJL.js";
22
22
  import {
23
23
  transcriptsEnabled
24
- } from "../chunk-XGFFNERF.js";
24
+ } from "../chunk-YSD4SMHE.js";
25
25
  import {
26
26
  spawnClaude
27
27
  } from "../chunk-XHKBHWLX.js";
28
- import "../chunk-CNJ7SI5V.js";
28
+ import "../chunk-JOBSKQ2Z.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-PIBWX3EF.js";
32
+ import "../chunk-METUT7V4.js";
33
+ import "../chunk-TI4JYPGQ.js";
34
+ import "../chunk-WJLHZ6E6.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-IXTVUINH.js";
9
9
  import {
10
10
  readHookInput
11
- } from "../chunk-QN25WBXL.js";
11
+ } from "../chunk-EQR6JSFE.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-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";
23
23
  import "../chunk-NMUI3ZWG.js";
24
- import "../chunk-XEXF2OFZ.js";
25
- import "../chunk-XGFFNERF.js";
24
+ import "../chunk-NWN6GGJL.js";
25
+ import "../chunk-YSD4SMHE.js";
26
26
  import "../chunk-XHKBHWLX.js";
27
- import "../chunk-CNJ7SI5V.js";
27
+ import "../chunk-JOBSKQ2Z.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-XFDWLDHG.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-D3U6CN7T.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-KNUYUQBP.js";
63
+ import "../chunk-3THDNNVL.js";
64
+ import "../chunk-P4RXSZDT.js";
65
65
  import {
66
66
  getMachineId
67
- } from "../chunk-IA5VWIHV.js";
67
+ } from "../chunk-PIBWX3EF.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-TI4JYPGQ.js";
74
+ import "../chunk-WJLHZ6E6.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