pushary 1.9.54 → 1.9.56

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 (120) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/dist/{api-K6ZROHYB.js → api-JHBUZ7CV.js} +11 -11
  3. package/dist/bin/pushary-bell-hook.js +29 -29
  4. package/dist/bin/pushary-bell.js +11 -11
  5. package/dist/bin/pushary-claude.js +31 -30
  6. package/dist/bin/pushary-clean.js +35 -34
  7. package/dist/bin/pushary-codex-bridge.js +23 -22
  8. package/dist/bin/pushary-codex-hook.js +34 -34
  9. package/dist/bin/pushary-codex-session.js +8 -8
  10. package/dist/bin/pushary-codex.js +15 -15
  11. package/dist/bin/pushary-connect.js +27 -27
  12. package/dist/bin/pushary-cowork.js +5 -5
  13. package/dist/bin/pushary-daemon.js +40 -39
  14. package/dist/bin/pushary-disconnect.js +27 -27
  15. package/dist/bin/pushary-doctor.js +47 -40
  16. package/dist/bin/pushary-elicitation-hook.js +29 -29
  17. package/dist/bin/pushary-gemini-bridge.js +17 -16
  18. package/dist/bin/pushary-gemini-hook.js +31 -31
  19. package/dist/bin/pushary-hook.js +33 -33
  20. package/dist/bin/pushary-login.js +14 -14
  21. package/dist/bin/pushary-logout.js +27 -27
  22. package/dist/bin/pushary-mcp.js +12 -12
  23. package/dist/bin/pushary-mode.js +14 -14
  24. package/dist/bin/pushary-notification-hook.js +28 -28
  25. package/dist/bin/pushary-opencode-hook.js +30 -30
  26. package/dist/bin/pushary-permission-denied-hook.js +33 -33
  27. package/dist/bin/pushary-permission-hook.js +32 -32
  28. package/dist/bin/pushary-post-hook.js +28 -28
  29. package/dist/bin/pushary-prompt-hook.js +28 -28
  30. package/dist/bin/pushary-session-end-hook.js +30 -29
  31. package/dist/bin/pushary-session-start-hook.js +36 -35
  32. package/dist/bin/pushary-setup.js +90 -60
  33. package/dist/bin/pushary-stats.js +5 -5
  34. package/dist/bin/pushary-status.js +31 -30
  35. package/dist/bin/pushary-stop-hook.js +28 -28
  36. package/dist/bin/pushary-stopfailure-hook.js +28 -28
  37. package/dist/bin/pushary-suggestions.js +14 -14
  38. package/dist/bin/pushary-transcript-register.js +20 -20
  39. package/dist/bin/pushary-transcripts.js +9 -9
  40. package/dist/bin/pushary-upgrade.js +37 -36
  41. package/dist/bin/pushary-wait.js +14 -14
  42. package/dist/bin/pushary.js +8 -8
  43. package/dist/{chunk-EK7SZJ4K.js → chunk-32MSOGMD.js} +3 -3
  44. package/dist/{chunk-LIESRXK5.js → chunk-4OXULVUA.js} +1 -1
  45. package/dist/{chunk-FV34HT35.js → chunk-4US3BCQJ.js} +1 -1
  46. package/dist/{chunk-OML4YFBN.js → chunk-57EOP757.js} +2 -2
  47. package/dist/{chunk-NSY2V7XU.js → chunk-5HMYW5W2.js} +1 -1
  48. package/dist/{chunk-L5YTS2BP.js → chunk-5HRXOANL.js} +3 -3
  49. package/dist/{chunk-IHUFRAHB.js → chunk-6PUHW2FP.js} +4 -4
  50. package/dist/{chunk-FCMWUYIE.js → chunk-6U3L4K57.js} +2 -2
  51. package/dist/{chunk-U2L42GVI.js → chunk-724266XT.js} +10 -10
  52. package/dist/{chunk-Q7OXI6VS.js → chunk-74DKFWU2.js} +5 -5
  53. package/dist/{chunk-RIVNNBEK.js → chunk-7QAL23TB.js} +27 -12
  54. package/dist/{chunk-RL7EOD6I.js → chunk-AKBFNTJF.js} +11 -11
  55. package/dist/{chunk-56ZTIY6D.js → chunk-AKFTQT7P.js} +3 -3
  56. package/dist/{chunk-JOWF4Y4P.js → chunk-DFZTZRKL.js} +4 -4
  57. package/dist/{chunk-BL3WAGIK.js → chunk-DUACX6E3.js} +7 -7
  58. package/dist/{chunk-2LEH5IGX.js → chunk-DWV3LTUH.js} +28 -14
  59. package/dist/{chunk-XZRLFBEA.js → chunk-ECQNBLPS.js} +51 -15
  60. package/dist/{chunk-H57DXSHR.js → chunk-FBFPQLJG.js} +3 -3
  61. package/dist/{chunk-VQPSWD3A.js → chunk-FFGW45DJ.js} +10 -10
  62. package/dist/{chunk-NECZKPJN.js → chunk-FJ7ZMR4N.js} +5 -5
  63. package/dist/{chunk-7CLLWDCP.js → chunk-FLUKEZMH.js} +1 -1
  64. package/dist/{chunk-PQ4K74WL.js → chunk-FVERRWDP.js} +15 -12
  65. package/dist/{chunk-5463UUO2.js → chunk-FXW3FW4A.js} +1 -1
  66. package/dist/{chunk-3RPN7AAT.js → chunk-G63LBV4Y.js} +1 -1
  67. package/dist/{chunk-MTKV4RUQ.js → chunk-GWQ6T6JV.js} +6 -6
  68. package/dist/{chunk-NHVEQLQC.js → chunk-HR3DJWP2.js} +2 -2
  69. package/dist/{chunk-ZWOWEXCV.js → chunk-HTN7SMKB.js} +10 -7
  70. package/dist/{chunk-RH6KR6EH.js → chunk-I6OGFHJT.js} +5 -5
  71. package/dist/{chunk-XDCXTDHH.js → chunk-ILQARYXK.js} +5 -5
  72. package/dist/{chunk-ZMPR436Z.js → chunk-J5HQNZXQ.js} +5 -5
  73. package/dist/{chunk-NELH25J7.js → chunk-JPTFFZWY.js} +11 -11
  74. package/dist/{chunk-XSUJ2PQY.js → chunk-JSS5RG65.js} +3 -3
  75. package/dist/{chunk-K23WMLPY.js → chunk-JTQHC3RV.js} +6 -6
  76. package/dist/{chunk-EPOD7QHT.js → chunk-KWAOOXSD.js} +12 -9
  77. package/dist/{chunk-S6RNS4UL.js → chunk-L66VPBS5.js} +1 -1
  78. package/dist/{chunk-46TC24ET.js → chunk-LTCNAIY2.js} +2 -2
  79. package/dist/{chunk-GCN73COS.js → chunk-LW4ZEC3A.js} +1 -1
  80. package/dist/{chunk-UVT6B6XN.js → chunk-M6DTXZQK.js} +2 -2
  81. package/dist/{chunk-FI73DGNB.js → chunk-M7ZXKMVX.js} +1 -1
  82. package/dist/{chunk-JPABKXK6.js → chunk-MVW5WS6F.js} +6 -6
  83. package/dist/{chunk-LD4MWJMD.js → chunk-MW3DD3S5.js} +6 -6
  84. package/dist/{chunk-CQ5JGRML.js → chunk-MWBFB7WA.js} +1 -1
  85. package/dist/{chunk-63IQRYVP.js → chunk-OCYOOGXW.js} +4 -4
  86. package/dist/{chunk-ONCWYACA.js → chunk-OX5EYBOC.js} +1 -1
  87. package/dist/{chunk-ALZZVC3E.js → chunk-PI2WWZQQ.js} +3 -3
  88. package/dist/{chunk-AQFEP65J.js → chunk-QENTGE75.js} +10 -1
  89. package/dist/{chunk-DWQYCOPI.js → chunk-QW3FRUFB.js} +1 -1
  90. package/dist/{chunk-QKU46TK5.js → chunk-QWUWQBIJ.js} +3 -3
  91. package/dist/{chunk-T5L5NWT3.js → chunk-RZF2GIPI.js} +2 -2
  92. package/dist/{chunk-JBT3ZSJS.js → chunk-S3CQBNUU.js} +1 -1
  93. package/dist/{chunk-DHJSBK63.js → chunk-SM2DT5KP.js} +1 -1
  94. package/dist/{chunk-T6RIKJUO.js → chunk-SMMDQXI2.js} +2 -2
  95. package/dist/{chunk-MC4VY5LK.js → chunk-T4IAMIX4.js} +1 -1
  96. package/dist/{chunk-XUW2DRAQ.js → chunk-T6GEEMVC.js} +3 -3
  97. package/dist/{chunk-6SWMKF5E.js → chunk-V2AMLVMD.js} +2 -2
  98. package/dist/{chunk-MHQB62K5.js → chunk-VRPDHJGB.js} +5 -5
  99. package/dist/chunk-VUFHYMSP.js +32 -0
  100. package/dist/{chunk-6C4S3QYD.js → chunk-VZ3YPEMG.js} +3 -3
  101. package/dist/{chunk-P2546BBI.js → chunk-WCPN3GVW.js} +3 -3
  102. package/dist/{chunk-N77BH7H2.js → chunk-WNVQPGLH.js} +4 -4
  103. package/dist/{chunk-4QQEUJL4.js → chunk-WW266XKU.js} +2 -2
  104. package/dist/{chunk-ZOP3I2GQ.js → chunk-X5FHQMUL.js} +3 -3
  105. package/dist/{chunk-VYBH6D4X.js → chunk-YBE2KH2U.js} +4 -4
  106. package/dist/{chunk-BUXDR6US.js → chunk-ZMRO6ESW.js} +1 -1
  107. package/dist/{codex-app-cards-switch-P4RVJNRV.js → codex-app-cards-switch-7UIGMEUE.js} +12 -12
  108. package/dist/{codex-desktop-launch-RIBIFXSF.js → codex-desktop-launch-66LZ6R4Y.js} +1 -1
  109. package/dist/{codex-session-launch-KLH2FSSJ.js → codex-session-launch-3TGHFR7R.js} +20 -19
  110. package/dist/{config-HX6ZNOIL.js → config-OBDZ2CL3.js} +3 -3
  111. package/dist/{global-upgrade-AZN3BPI3.js → global-upgrade-6M2UXUUL.js} +8 -8
  112. package/dist/{identity-AQIMUWYN.js → identity-WJUPU3AK.js} +5 -5
  113. package/dist/{live-capabilities-4IIFAMHU.js → live-capabilities-GACO2VB6.js} +8 -4
  114. package/dist/{paths-X4IPV2WJ.js → paths-5PWAQF63.js} +3 -3
  115. package/dist/{reapply-CXODG53B.js → reapply-EYPT5EP2.js} +28 -27
  116. package/dist/src/index.js +22 -22
  117. package/dist/{upgrade-lock-AHISGKER.js → upgrade-lock-G2ZPV7ZO.js} +5 -5
  118. package/dist/{usage-ZC6BKIE3.js → usage-PXBMEKSA.js} +3 -3
  119. package/package.json +1 -1
  120. /package/dist/{chunk-LF3TLC7B.js → chunk-WACFIQYA.js} +0 -0
@@ -1,27 +1,27 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  runBrowserLogin
4
- } from "../chunk-FI73DGNB.js";
4
+ } from "../chunk-M7ZXKMVX.js";
5
5
  import {
6
6
  coworkOutput,
7
7
  coworkSelection
8
- } from "../chunk-ZOP3I2GQ.js";
8
+ } from "../chunk-X5FHQMUL.js";
9
9
  import "../chunk-PUZZELE6.js";
10
10
  import {
11
11
  clearDeclinedAgent,
12
12
  declinedAgentForSetupChoice
13
- } from "../chunk-ALZZVC3E.js";
13
+ } from "../chunk-PI2WWZQQ.js";
14
14
  import {
15
15
  CURSOR_GATE_SCRIPT,
16
16
  describeVersionManagerPin,
17
17
  saveSetupFailure,
18
18
  versionManagerOf
19
- } from "../chunk-XSUJ2PQY.js";
19
+ } from "../chunk-JSS5RG65.js";
20
20
  import {
21
21
  codexTrustOutcome,
22
22
  describeCodexTrustConfirmation,
23
23
  needsCodexTrustStep
24
- } from "../chunk-NHVEQLQC.js";
24
+ } from "../chunk-HR3DJWP2.js";
25
25
  import {
26
26
  describeWaitLadder
27
27
  } from "../chunk-CVWG2N3Y.js";
@@ -30,24 +30,27 @@ import {
30
30
  } from "../chunk-EO23EUOK.js";
31
31
  import {
32
32
  BROWSER_CONNECT_COMMAND,
33
+ SETUP_AGENT_NAME,
33
34
  confirmAppConnection,
34
35
  connectDevice,
35
36
  connectViaAppPairing,
37
+ describeAnswerTestPrompt,
36
38
  describeRoundTripOutcome,
39
+ notificationAnswerStep,
37
40
  pairingEscapeApplies,
38
41
  printConnectInstructions,
39
42
  roundTripEvidence,
40
43
  verifyRoundTrip,
41
44
  waitForYourPhone
42
- } from "../chunk-XZRLFBEA.js";
45
+ } from "../chunk-ECQNBLPS.js";
43
46
  import "../chunk-3EGEA4KH.js";
44
47
  import {
45
48
  readManagedControlEvidence,
46
49
  waitForMachineReadiness
47
- } from "../chunk-XDCXTDHH.js";
50
+ } from "../chunk-ILQARYXK.js";
48
51
  import {
49
52
  ensureCodexTrustsPusharyHooks
50
- } from "../chunk-FCMWUYIE.js";
53
+ } from "../chunk-6U3L4K57.js";
51
54
  import {
52
55
  describeSetupSideEffects,
53
56
  installAgentSkill,
@@ -55,7 +58,7 @@ import {
55
58
  } from "../chunk-EUW7JL2K.js";
56
59
  import {
57
60
  codexEngineBehindLauncher
58
- } from "../chunk-T5L5NWT3.js";
61
+ } from "../chunk-RZF2GIPI.js";
59
62
  import "../chunk-XCEN33UP.js";
60
63
  import {
61
64
  CURSOR_PLUGIN_BACKUP_INFIX,
@@ -65,7 +68,7 @@ import {
65
68
  soleGateFile,
66
69
  soleGateReceipt,
67
70
  soleGateReceiptFile
68
- } from "../chunk-63IQRYVP.js";
71
+ } from "../chunk-OCYOOGXW.js";
69
72
  import {
70
73
  HERMES_PIP_PACKAGE,
71
74
  describeDetection,
@@ -78,11 +81,11 @@ import {
78
81
  runHermesConfigScript,
79
82
  shortenHome,
80
83
  vscodeSettingsTargets
81
- } from "../chunk-EPOD7QHT.js";
84
+ } from "../chunk-KWAOOXSD.js";
82
85
  import {
83
86
  mcpServerBearer,
84
87
  readMacAppAgentKey
85
- } from "../chunk-MHQB62K5.js";
88
+ } from "../chunk-VRPDHJGB.js";
86
89
  import {
87
90
  setHumanStream
88
91
  } from "../chunk-QCGNGEGE.js";
@@ -116,10 +119,10 @@ import {
116
119
  writeInstructionBlock,
117
120
  writeSetupConfigFile,
118
121
  writeSetupConfigJson
119
- } from "../chunk-MTKV4RUQ.js";
122
+ } from "../chunk-GWQ6T6JV.js";
120
123
  import {
121
124
  MCP_BRIDGE_BINARY
122
- } from "../chunk-46TC24ET.js";
125
+ } from "../chunk-LTCNAIY2.js";
123
126
  import {
124
127
  OPENCODE_HOOK_BINARY,
125
128
  addOpenCodeMcpServer,
@@ -135,7 +138,7 @@ import {
135
138
  openCodePluginDir,
136
139
  openCodePluginFile,
137
140
  openCodeWired
138
- } from "../chunk-K23WMLPY.js";
141
+ } from "../chunk-JTQHC3RV.js";
139
142
  import {
140
143
  ansiPainter,
141
144
  createIo,
@@ -143,6 +146,7 @@ import {
143
146
  } from "../chunk-FO3MDD26.js";
144
147
  import {
145
148
  checkCodexInstall,
149
+ describeMissingControlPrerequisite,
146
150
  detectProviderLiveCapabilities,
147
151
  expectedLaunchCapabilities,
148
152
  hasSpawnProvider,
@@ -150,14 +154,15 @@ import {
150
154
  nodeCodexInstallProbe,
151
155
  phoneStartIsRequired,
152
156
  resolveControlPolicy
153
- } from "../chunk-2LEH5IGX.js";
157
+ } from "../chunk-DWV3LTUH.js";
154
158
  import {
155
159
  detectClaudeVersion
156
- } from "../chunk-RIVNNBEK.js";
160
+ } from "../chunk-7QAL23TB.js";
161
+ import "../chunk-VUFHYMSP.js";
157
162
  import {
158
163
  describeAutoUpdateAnnouncement,
159
164
  takeAutoUpdateAnnouncement
160
- } from "../chunk-QKU46TK5.js";
165
+ } from "../chunk-QWUWQBIJ.js";
161
166
  import {
162
167
  addClaudeMcpServer,
163
168
  addCompatibleHooks,
@@ -177,7 +182,7 @@ import {
177
182
  hasCompatibleHooks,
178
183
  isClaudeMcpSnapshot,
179
184
  updateClaudeMcpSnapshot
180
- } from "../chunk-N77BH7H2.js";
185
+ } from "../chunk-WNVQPGLH.js";
181
186
  import {
182
187
  DAEMON_COLD_START_TIMEOUT_MS,
183
188
  clearDaemonNeedsLogin,
@@ -191,7 +196,7 @@ import {
191
196
  replaceDaemonService,
192
197
  stopDaemonService,
193
198
  waitForDaemonRemoteProof
194
- } from "../chunk-BL3WAGIK.js";
199
+ } from "../chunk-DUACX6E3.js";
195
200
  import {
196
201
  KEEP_HINT,
197
202
  captureHookTakeover,
@@ -203,24 +208,24 @@ import {
203
208
  geminiWired,
204
209
  planHooks,
205
210
  pusharyHookExecutable
206
- } from "../chunk-Q7OXI6VS.js";
211
+ } from "../chunk-74DKFWU2.js";
207
212
  import {
208
213
  GEMINI_HOOK_BINARY,
209
214
  GEMINI_HOOK_EVENTS,
210
215
  addGeminiHooks,
211
216
  addGeminiMcpServer
212
- } from "../chunk-6C4S3QYD.js";
217
+ } from "../chunk-VZ3YPEMG.js";
213
218
  import {
214
219
  AGENT_CHOICES,
215
220
  effectiveControlMode,
216
221
  effectiveVerify,
217
222
  parseSetupOptions
218
- } from "../chunk-BUXDR6US.js";
219
- import "../chunk-LIESRXK5.js";
223
+ } from "../chunk-ZMRO6ESW.js";
224
+ import "../chunk-4OXULVUA.js";
220
225
  import "../chunk-GMXKITVA.js";
221
226
  import {
222
227
  transcriptPreferenceForSetup
223
- } from "../chunk-FV34HT35.js";
228
+ } from "../chunk-4US3BCQJ.js";
224
229
  import "../chunk-XHKBHWLX.js";
225
230
  import {
226
231
  compareVersion,
@@ -238,7 +243,7 @@ import {
238
243
  recordMacAppKeyPrefix,
239
244
  resolveShellRc,
240
245
  writeKey
241
- } from "../chunk-VYBH6D4X.js";
246
+ } from "../chunk-YBE2KH2U.js";
242
247
  import {
243
248
  CODEX_ENGINE_DIRECTORY,
244
249
  CODEX_ENGINE_ENTRYPOINT,
@@ -247,26 +252,26 @@ import {
247
252
  } from "../chunk-E46NE7FB.js";
248
253
  import {
249
254
  reportEvent
250
- } from "../chunk-U2L42GVI.js";
251
- import "../chunk-3RPN7AAT.js";
252
- import "../chunk-JBT3ZSJS.js";
253
- import "../chunk-ZMPR436Z.js";
254
- import "../chunk-P2546BBI.js";
255
+ } from "../chunk-724266XT.js";
256
+ import "../chunk-G63LBV4Y.js";
257
+ import "../chunk-S3CQBNUU.js";
258
+ import "../chunk-J5HQNZXQ.js";
259
+ import "../chunk-WCPN3GVW.js";
255
260
  import "../chunk-POFBE6ZY.js";
256
261
  import {
257
262
  checkApiKey,
258
263
  describeKeyCheck,
259
264
  samePusharyAccount
260
- } from "../chunk-L5YTS2BP.js";
261
- import "../chunk-EK7SZJ4K.js";
262
- import "../chunk-T6RIKJUO.js";
265
+ } from "../chunk-5HRXOANL.js";
266
+ import "../chunk-32MSOGMD.js";
267
+ import "../chunk-SMMDQXI2.js";
263
268
  import {
264
269
  UsageError
265
270
  } from "../chunk-7QLSKOSU.js";
266
271
  import {
267
272
  EXIT
268
273
  } from "../chunk-KZERVKTD.js";
269
- import "../chunk-4QQEUJL4.js";
274
+ import "../chunk-WW266XKU.js";
270
275
  import {
271
276
  addCodexHookTrust,
272
277
  addCodexHooks,
@@ -305,7 +310,7 @@ import {
305
310
  readCodexMcpAuth,
306
311
  vscodePluginDir,
307
312
  vscodePluginMcp
308
- } from "../chunk-OML4YFBN.js";
313
+ } from "../chunk-57EOP757.js";
309
314
  import {
310
315
  NpmMissingError,
311
316
  fetchLatestPublishedVersion,
@@ -314,18 +319,18 @@ import {
314
319
  plannedGlobalPackage,
315
320
  resolveGlobalBinDir,
316
321
  resolveGlobalBinary
317
- } from "../chunk-XUW2DRAQ.js";
322
+ } from "../chunk-T6GEEMVC.js";
318
323
  import {
319
324
  backupFile,
320
325
  readJsonSafe
321
- } from "../chunk-AQFEP65J.js";
326
+ } from "../chunk-QENTGE75.js";
322
327
  import {
323
328
  getBaseUrl
324
- } from "../chunk-CQ5JGRML.js";
329
+ } from "../chunk-MWBFB7WA.js";
325
330
  import {
326
331
  NPX_LATEST_COMMAND,
327
332
  renderCommandHelp
328
- } from "../chunk-MC4VY5LK.js";
333
+ } from "../chunk-T4IAMIX4.js";
329
334
  import {
330
335
  getPackageVersion,
331
336
  isNewerVersion,
@@ -343,7 +348,7 @@ import {
343
348
  isRecord,
344
349
  isTimeoutAction,
345
350
  isValidApiKey
346
- } from "../chunk-LF3TLC7B.js";
351
+ } from "../chunk-WACFIQYA.js";
347
352
 
348
353
  // bin/pushary-setup.ts
349
354
  import { existsSync, readFileSync, writeFileSync, mkdirSync, cpSync, rmSync, renameSync, realpathSync, statSync, openSync, readSync, closeSync } from "fs";
@@ -707,6 +712,12 @@ var fetchSetupWaitGuidance = async (apiKey) => {
707
712
 
708
713
  // src/setup/closing.ts
709
714
  var ACTIVITY_URL = "pushary.com/dashboard/agent/activity";
715
+ var CHECK_THE_NOTIFICATION_OPENED = "Check the notification opened something you could tap, then:";
716
+ var SEND_ANOTHER_TEST = "pushary doctor --roundtrip send another one";
717
+ var sendAnotherTestLines = (appPlatforms) => {
718
+ const step = notificationAnswerStep(appPlatforms);
719
+ return step === null ? [CHECK_THE_NOTIFICATION_OPENED, SEND_ANOTHER_TEST] : [SEND_ANOTHER_TEST, step];
720
+ };
710
721
  var TRANSCRIPT_SYNC_NOTICE = `Transcripts sync redacted and encrypted. Your phone can decrypt them; authorized Pushary compliance admins can recover them for documented legal obligations. Turn off: ${NPX_LATEST_COMMAND} setup --transcripts off`;
711
722
  var PAIR_PHONE_APP_HINT = `${NPX_LATEST_COMMAND} setup --connect app pair the Pushary app on your phone`;
712
723
  var RESTART_AGENTS_LINE = "Restart any open agent sessions so they pick up Pushary.";
@@ -752,7 +763,8 @@ var PHONE_START_CANNOT_RUN_LINE = "Agent configuration and managed control are s
752
763
  var STOP_REQUIRING_PHONE_START_STEP = `${NPX_LATEST_COMMAND} setup --control off stop requiring phone-start on this computer`;
753
764
  var WHAT_PHONE_START_NEEDS = {
754
765
  provider: [
755
- "It needs the claude, codex or gemini command on PATH, and this terminal found none.",
766
+ "It needs Claude Code, Codex or Gemini CLI set up here with a command it can start, and setup found none.",
767
+ "It looks for claude, codex and gemini on PATH and in npm's global folder, and for claude in Claude Code's own install folder too.",
756
768
  "Install one, or open a terminal where it runs, then run setup again."
757
769
  ],
758
770
  "service-manager": [
@@ -856,8 +868,7 @@ var describeClosing = (facts) => {
856
868
  next: [
857
869
  "No answer returned from the synthetic test. Delivery acceptance does not prove a visible notification.",
858
870
  "",
859
- "Check the notification opened something you could tap, then:",
860
- "pushary doctor --roundtrip send another one",
871
+ ...sendAnotherTestLines(facts.appPlatforms ?? []),
861
872
  "",
862
873
  "If you simply were not looking, re-run setup or pass --verify push to skip this check."
863
874
  ],
@@ -1019,6 +1030,12 @@ var roundTripOutcome = (outcome) => {
1019
1030
  return null;
1020
1031
  }
1021
1032
  };
1033
+ var connectOutcomeOf = (roundTrip, phone) => {
1034
+ const fromRoundTrip = roundTripOutcome(roundTrip);
1035
+ if (fromRoundTrip !== null) return fromRoundTrip;
1036
+ if (phone === null) return "skipped";
1037
+ return phone.reachesYou ? "delivered" : "unreachable";
1038
+ };
1022
1039
  var currentStep = "start";
1023
1040
  var markStep = (step) => {
1024
1041
  currentStep = step;
@@ -1086,23 +1103,24 @@ var reportSetupOutcomeWith = async (deps, outcome) => emit(deps, {
1086
1103
  abortReason: null
1087
1104
  });
1088
1105
  var reportSetupOutcome = (outcome) => reportSetupOutcomeWith(defaultDeps, outcome);
1089
- var reportSetupAbortWith = async (deps, reason, exitCode, keyCheck = "unknown") => emit(deps, {
1090
- agents: [],
1106
+ var NOTHING_CONFIGURED = { completed: [], skipped: [], failures: [], connectOutcome: "skipped" };
1107
+ var reportSetupAbortWith = async (deps, reason, exitCode, keyCheck = "unknown", progress = NOTHING_CONFIGURED) => emit(deps, {
1108
+ agents: progress.completed,
1091
1109
  connectMode: recordedOptions?.connectMode ?? null,
1092
- connectOutcome: "skipped",
1093
- failedAgents: 0,
1094
- agentFailures: [],
1110
+ connectOutcome: progress.connectOutcome,
1111
+ failedAgents: progress.failures.length,
1112
+ agentFailures: agentFailureWire(progress.failures),
1095
1113
  closingReason: null,
1096
1114
  controlFailureStage: null,
1097
1115
  controlMissingPrerequisite: null,
1098
- skippedAgents: [],
1116
+ skippedAgents: progress.skipped,
1099
1117
  nonInteractive: recordedOptions?.nonInteractive ?? null,
1100
1118
  keyCheck,
1101
1119
  exitCode,
1102
1120
  abandonedAt: currentStep,
1103
1121
  abortReason: reason
1104
1122
  });
1105
- var reportSetupAbort = (reason, exitCode, keyCheck) => reportSetupAbortWith(defaultDeps, reason, exitCode, keyCheck);
1123
+ var reportSetupAbort = (reason, exitCode, keyCheck, progress) => reportSetupAbortWith(defaultDeps, reason, exitCode, keyCheck, progress);
1106
1124
 
1107
1125
  // src/setup/app-key.ts
1108
1126
  var pickAppKey = (candidates) => candidates.fromAgents.find(
@@ -1167,8 +1185,8 @@ var green = paint("\x1B[32m");
1167
1185
  var cyan = paint("\x1B[36m");
1168
1186
  var yellow = paint("\x1B[33m");
1169
1187
  var check = green("\u2713");
1170
- var abortWith = async (reason, code, keyCheck) => {
1171
- await reportSetupAbort(reason, code, keyCheck);
1188
+ var abortWith = async (reason, code, keyCheck, progress) => {
1189
+ await reportSetupAbort(reason, code, keyCheck, progress);
1172
1190
  if (jsonMode) {
1173
1191
  await writeStdoutFully(`${JSON.stringify({ ok: false, reason, exitCode: code, ...keyCheck ? { keyCheck } : {} }, null, 2)}
1174
1192
  `);
@@ -2474,6 +2492,8 @@ var AGENT_CAPABILITIES = {
2474
2492
  var failedAgentNames = (failures) => failures.map((failure) => AGENT_NAMES[failure.agent]);
2475
2493
  var agentFailureNextLine = (next) => next.kind === "retry-agent" ? `${dim(RETRY_AGENT_LABEL)} ${cyan(next.command)}` : next.instruction;
2476
2494
  var NO_ANSWER_YET = "No answer yet";
2495
+ var CONNECT_PHONE_STEP = "connect-phone";
2496
+ var ANSWER_TEST_STEP = "answer-test";
2477
2497
  var roundTripAnswerOf = (outcome) => outcome?.kind === "answered" ? { latencyMs: outcome.latencyMs, answerSource: outcome.answerSource } : null;
2478
2498
  var roundTripSpinnerEnd = (outcome) => {
2479
2499
  const report = describeRoundTripOutcome(outcome);
@@ -2914,7 +2934,7 @@ var main = async () => {
2914
2934
  console.log(` ${check} Phone-start background service disabled.`);
2915
2935
  }
2916
2936
  }
2917
- markStep("connect-phone");
2937
+ markStep(CONNECT_PHONE_STEP);
2918
2938
  if (keyCheck.kind === "ok") console.log(` ${dim(await fetchSetupWaitGuidance(trimmedKey))}`);
2919
2939
  const skipPhone = options.skipPhone;
2920
2940
  let phone = null;
@@ -2977,11 +2997,20 @@ var main = async () => {
2977
2997
  // being a thing they have to know to run.
2978
2998
  (phone?.reachesYou || phone?.outcome?.kind === "unattributable")) {
2979
2999
  console.log();
3000
+ const appPlatforms = phone?.appPlatforms ?? [];
3001
+ const prompt = describeAnswerTestPrompt(appPlatforms);
2980
3002
  console.log(` ${dim("Answer the test question on your phone.")}`);
2981
- const answer = verifyRoundTrip(trimmedKey);
2982
- await spinner("Waiting for you to tap the notification", async () => roundTripSpinnerEnd(await answer));
3003
+ if (prompt.step !== null) console.log(` ${dim(prompt.step)}`);
3004
+ markStep(ANSWER_TEST_STEP);
3005
+ const answer = verifyRoundTrip(trimmedKey, SETUP_AGENT_NAME, {
3006
+ interrupted: async (exitCode2) => {
3007
+ await abortWith("interrupted", exitCode2, keyCheck.kind, { completed, skipped, failures, connectOutcome: connectOutcomeOf(null, phone) });
3008
+ }
3009
+ });
3010
+ await spinner(prompt.waiting, async () => roundTripSpinnerEnd(await answer));
2983
3011
  roundTrip = await answer;
2984
- const report = describeRoundTripOutcome(roundTrip);
3012
+ markStep(CONNECT_PHONE_STEP);
3013
+ const report = describeRoundTripOutcome(roundTrip, appPlatforms);
2985
3014
  if (!report.ok) console.log(` ${yellow("!")} ${report.message}`);
2986
3015
  for (const line of report.next) console.log(` ${dim(line)}`);
2987
3016
  } else if (verifyMode === "roundtrip" && keyCheck.kind === "ok") {
@@ -3090,7 +3119,7 @@ var main = async () => {
3090
3119
  if (!retired && stopped.kind === "ok") warnVersionManagerPin(process.execPath);
3091
3120
  }
3092
3121
  if (controlMode === "on" && controlPolicy !== "enabled") {
3093
- console.log(` ${yellow("!")} Phone-start was required: ${!providerAvailable ? "install a supported Claude Code, Codex or Gemini provider" : "no native background-service manager is available in this OS session"}.`);
3122
+ console.log(` ${yellow("!")} Phone-start was required: ${describeMissingControlPrerequisite(providerAvailable ? "service-manager" : "provider")}.`);
3094
3123
  } else if (controlPolicy === "legacy") {
3095
3124
  console.log(` ${yellow("!")} A legacy phone-start service cannot be safely adopted in this session. Disable it with --control off or restore its provider and native service manager.`);
3096
3125
  }
@@ -3157,7 +3186,8 @@ var main = async () => {
3157
3186
  // null when the check did not run, so it changes nothing. Only an outright
3158
3187
  // `false` is allowed to hold back "Setup complete.".
3159
3188
  roundTripAnswered: roundTrip === null ? null : roundTrip.kind === "answered" ? true : roundTrip.kind === "unanswered" ? false : null,
3160
- roundTripAnswer: roundTripAnswerOf(roundTrip)
3189
+ roundTripAnswer: roundTripAnswerOf(roundTrip),
3190
+ appPlatforms: phone?.appPlatforms
3161
3191
  });
3162
3192
  console.log(` ${closing.ok ? green(bold(closing.headline)) : yellow(bold(closing.headline))}`);
3163
3193
  if (failures.length > 0) {
@@ -3186,7 +3216,7 @@ var main = async () => {
3186
3216
  // nothing produced it, because setup stopped at a delivered notification, so
3187
3217
  // the one value meaning "a human tapped" was never emitted by the command
3188
3218
  // whose job is to prove a human can.
3189
- connectOutcome: roundTripOutcome(roundTrip) ?? (phone === null ? "skipped" : phone.reachesYou ? "delivered" : "unreachable"),
3219
+ connectOutcome: connectOutcomeOf(roundTrip, phone),
3190
3220
  keyCheck: keyCheck?.kind ?? "skipped",
3191
3221
  exitCode
3192
3222
  });
@@ -1,17 +1,17 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  exitOnHelpFlag
4
- } from "../chunk-S6RNS4UL.js";
4
+ } from "../chunk-L66VPBS5.js";
5
5
  import {
6
6
  readLedgerSummary
7
- } from "../chunk-7CLLWDCP.js";
7
+ } from "../chunk-FLUKEZMH.js";
8
8
  import "../chunk-KZERVKTD.js";
9
9
  import {
10
10
  getApiKey
11
- } from "../chunk-CQ5JGRML.js";
12
- import "../chunk-MC4VY5LK.js";
11
+ } from "../chunk-MWBFB7WA.js";
12
+ import "../chunk-T4IAMIX4.js";
13
13
  import "../chunk-QTOLNRET.js";
14
- import "../chunk-LF3TLC7B.js";
14
+ import "../chunk-WACFIQYA.js";
15
15
 
16
16
  // bin/pushary-stats.ts
17
17
  exitOnHelpFlag("stats");
@@ -3,38 +3,39 @@ import {
3
3
  describeReach,
4
4
  fetchChannels,
5
5
  reachVerdict
6
- } from "../chunk-XZRLFBEA.js";
6
+ } from "../chunk-ECQNBLPS.js";
7
7
  import "../chunk-3EGEA4KH.js";
8
8
  import {
9
9
  describeLastSeen,
10
10
  listMachines
11
- } from "../chunk-XDCXTDHH.js";
11
+ } from "../chunk-ILQARYXK.js";
12
12
  import {
13
13
  CONNECTED_THROUGH_MAC_APP,
14
14
  readMacAppConnectionWhenKeyless
15
- } from "../chunk-MHQB62K5.js";
15
+ } from "../chunk-VRPDHJGB.js";
16
16
  import "../chunk-QCGNGEGE.js";
17
17
  import {
18
18
  SIGNED_OUT_ON_MAC_MESSAGE,
19
19
  activeKeyVerdictOf,
20
20
  describeSignedOutKey,
21
21
  readSignedOutDiagnosis
22
- } from "../chunk-6SWMKF5E.js";
23
- import "../chunk-K23WMLPY.js";
22
+ } from "../chunk-V2AMLVMD.js";
23
+ import "../chunk-JTQHC3RV.js";
24
24
  import {
25
25
  createIo
26
26
  } from "../chunk-FO3MDD26.js";
27
27
  import {
28
28
  exitOnHelpFlag
29
- } from "../chunk-S6RNS4UL.js";
30
- import "../chunk-2LEH5IGX.js";
31
- import "../chunk-RIVNNBEK.js";
32
- import "../chunk-N77BH7H2.js";
33
- import "../chunk-BL3WAGIK.js";
34
- import "../chunk-Q7OXI6VS.js";
35
- import "../chunk-6C4S3QYD.js";
36
- import "../chunk-BUXDR6US.js";
37
- import "../chunk-LIESRXK5.js";
29
+ } from "../chunk-L66VPBS5.js";
30
+ import "../chunk-DWV3LTUH.js";
31
+ import "../chunk-7QAL23TB.js";
32
+ import "../chunk-VUFHYMSP.js";
33
+ import "../chunk-WNVQPGLH.js";
34
+ import "../chunk-DUACX6E3.js";
35
+ import "../chunk-74DKFWU2.js";
36
+ import "../chunk-VZ3YPEMG.js";
37
+ import "../chunk-ZMRO6ESW.js";
38
+ import "../chunk-4OXULVUA.js";
38
39
  import {
39
40
  rejectUnknownFlags
40
41
  } from "../chunk-GMXKITVA.js";
@@ -42,33 +43,33 @@ import "../chunk-XHKBHWLX.js";
42
43
  import "../chunk-6ICPEJY5.js";
43
44
  import {
44
45
  readKeySource
45
- } from "../chunk-VYBH6D4X.js";
46
- import "../chunk-U2L42GVI.js";
47
- import "../chunk-3RPN7AAT.js";
48
- import "../chunk-JBT3ZSJS.js";
49
- import "../chunk-ZMPR436Z.js";
50
- import "../chunk-P2546BBI.js";
46
+ } from "../chunk-YBE2KH2U.js";
47
+ import "../chunk-724266XT.js";
48
+ import "../chunk-G63LBV4Y.js";
49
+ import "../chunk-S3CQBNUU.js";
50
+ import "../chunk-J5HQNZXQ.js";
51
+ import "../chunk-WCPN3GVW.js";
51
52
  import "../chunk-POFBE6ZY.js";
52
53
  import {
53
54
  checkApiKey,
54
55
  describeKeyCheck
55
- } from "../chunk-L5YTS2BP.js";
56
- import "../chunk-EK7SZJ4K.js";
57
- import "../chunk-T6RIKJUO.js";
56
+ } from "../chunk-5HRXOANL.js";
57
+ import "../chunk-32MSOGMD.js";
58
+ import "../chunk-SMMDQXI2.js";
58
59
  import {
59
60
  UsageError
60
61
  } from "../chunk-7QLSKOSU.js";
61
62
  import {
62
63
  EXIT
63
64
  } from "../chunk-KZERVKTD.js";
64
- import "../chunk-4QQEUJL4.js";
65
- import "../chunk-OML4YFBN.js";
66
- import "../chunk-XUW2DRAQ.js";
67
- import "../chunk-AQFEP65J.js";
68
- import "../chunk-CQ5JGRML.js";
69
- import "../chunk-MC4VY5LK.js";
65
+ import "../chunk-WW266XKU.js";
66
+ import "../chunk-57EOP757.js";
67
+ import "../chunk-T6GEEMVC.js";
68
+ import "../chunk-QENTGE75.js";
69
+ import "../chunk-MWBFB7WA.js";
70
+ import "../chunk-T4IAMIX4.js";
70
71
  import "../chunk-QTOLNRET.js";
71
- import "../chunk-LF3TLC7B.js";
72
+ import "../chunk-WACFIQYA.js";
72
73
 
73
74
  // src/status.ts
74
75
  var SIGNED_OUT_LINE = { label: "Server", value: "key signed out on this Mac", ok: false };
@@ -1,48 +1,48 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  readHookInput
4
- } from "../chunk-IHUFRAHB.js";
5
- import "../chunk-VQPSWD3A.js";
6
- import "../chunk-DWQYCOPI.js";
4
+ } from "../chunk-6PUHW2FP.js";
5
+ import "../chunk-FFGW45DJ.js";
6
+ import "../chunk-QW3FRUFB.js";
7
7
  import {
8
8
  activeHookSource,
9
9
  activeIdentity
10
- } from "../chunk-N77BH7H2.js";
11
- import "../chunk-BL3WAGIK.js";
12
- import "../chunk-Q7OXI6VS.js";
13
- import "../chunk-6C4S3QYD.js";
14
- import "../chunk-BUXDR6US.js";
15
- import "../chunk-LIESRXK5.js";
10
+ } from "../chunk-WNVQPGLH.js";
11
+ import "../chunk-DUACX6E3.js";
12
+ import "../chunk-74DKFWU2.js";
13
+ import "../chunk-VZ3YPEMG.js";
14
+ import "../chunk-ZMRO6ESW.js";
15
+ import "../chunk-4OXULVUA.js";
16
16
  import "../chunk-GMXKITVA.js";
17
- import "../chunk-5463UUO2.js";
18
- import "../chunk-GCN73COS.js";
19
- import "../chunk-FV34HT35.js";
17
+ import "../chunk-FXW3FW4A.js";
18
+ import "../chunk-LW4ZEC3A.js";
19
+ import "../chunk-4US3BCQJ.js";
20
20
  import "../chunk-XHKBHWLX.js";
21
21
  import "../chunk-6ICPEJY5.js";
22
- import "../chunk-VYBH6D4X.js";
22
+ import "../chunk-YBE2KH2U.js";
23
23
  import {
24
24
  handleStop,
25
25
  handleSubagentStop,
26
26
  isSubagentStop
27
- } from "../chunk-U2L42GVI.js";
28
- import "../chunk-3RPN7AAT.js";
29
- import "../chunk-JBT3ZSJS.js";
30
- import "../chunk-ZMPR436Z.js";
31
- import "../chunk-P2546BBI.js";
27
+ } from "../chunk-724266XT.js";
28
+ import "../chunk-G63LBV4Y.js";
29
+ import "../chunk-S3CQBNUU.js";
30
+ import "../chunk-J5HQNZXQ.js";
31
+ import "../chunk-WCPN3GVW.js";
32
32
  import "../chunk-POFBE6ZY.js";
33
- import "../chunk-L5YTS2BP.js";
34
- import "../chunk-EK7SZJ4K.js";
35
- import "../chunk-T6RIKJUO.js";
33
+ import "../chunk-5HRXOANL.js";
34
+ import "../chunk-32MSOGMD.js";
35
+ import "../chunk-SMMDQXI2.js";
36
36
  import "../chunk-7QLSKOSU.js";
37
37
  import "../chunk-KZERVKTD.js";
38
- import "../chunk-4QQEUJL4.js";
39
- import "../chunk-OML4YFBN.js";
40
- import "../chunk-XUW2DRAQ.js";
41
- import "../chunk-AQFEP65J.js";
42
- import "../chunk-CQ5JGRML.js";
43
- import "../chunk-MC4VY5LK.js";
38
+ import "../chunk-WW266XKU.js";
39
+ import "../chunk-57EOP757.js";
40
+ import "../chunk-T6GEEMVC.js";
41
+ import "../chunk-QENTGE75.js";
42
+ import "../chunk-MWBFB7WA.js";
43
+ import "../chunk-T4IAMIX4.js";
44
44
  import "../chunk-QTOLNRET.js";
45
- import "../chunk-LF3TLC7B.js";
45
+ import "../chunk-WACFIQYA.js";
46
46
 
47
47
  // bin/pushary-stop-hook.ts
48
48
  var AGENT = activeIdentity(process.argv);