pushary 1.9.49 → 1.9.51

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 +16 -0
  2. package/README.md +0 -1
  3. package/dist/api-PPNFRSJC.js +55 -0
  4. package/dist/bin/pushary-bell-hook.js +28 -25
  5. package/dist/bin/pushary-bell.js +13 -11
  6. package/dist/bin/pushary-claude.js +36 -32
  7. package/dist/bin/pushary-clean.js +68 -42
  8. package/dist/bin/pushary-codex-bridge.js +23 -20
  9. package/dist/bin/pushary-codex-hook.js +35 -31
  10. package/dist/bin/pushary-codex-session.js +17 -616
  11. package/dist/bin/pushary-codex.js +15 -12
  12. package/dist/bin/pushary-connect.js +31 -28
  13. package/dist/bin/pushary-cowork.js +7 -6
  14. package/dist/bin/pushary-daemon.js +55 -52
  15. package/dist/bin/pushary-disconnect.js +29 -26
  16. package/dist/bin/pushary-doctor.js +57 -52
  17. package/dist/bin/pushary-elicitation-hook.js +28 -25
  18. package/dist/bin/pushary-gemini-bridge.js +17 -15
  19. package/dist/bin/pushary-gemini-hook.js +32 -28
  20. package/dist/bin/pushary-hook.js +34 -31
  21. package/dist/bin/pushary-login.js +19 -16
  22. package/dist/bin/pushary-logout.js +30 -27
  23. package/dist/bin/pushary-mcp.js +11 -9
  24. package/dist/bin/pushary-mode.js +16 -14
  25. package/dist/bin/pushary-notification-hook.js +27 -24
  26. package/dist/bin/pushary-opencode-hook.js +31 -27
  27. package/dist/bin/pushary-permission-denied-hook.js +32 -29
  28. package/dist/bin/pushary-permission-hook.js +31 -28
  29. package/dist/bin/pushary-post-hook.js +27 -24
  30. package/dist/bin/pushary-prompt-hook.js +27 -24
  31. package/dist/bin/pushary-session-end-hook.js +27 -24
  32. package/dist/bin/pushary-session-start-hook.js +32 -29
  33. package/dist/bin/pushary-setup.js +145 -82
  34. package/dist/bin/pushary-stats.js +8 -7
  35. package/dist/bin/pushary-status.js +35 -32
  36. package/dist/bin/pushary-stop-hook.js +27 -24
  37. package/dist/bin/pushary-stopfailure-hook.js +27 -24
  38. package/dist/bin/pushary-suggestions.js +16 -14
  39. package/dist/bin/pushary-transcript-register.js +19 -17
  40. package/dist/bin/pushary-transcripts.js +10 -9
  41. package/dist/bin/pushary-upgrade.js +46 -42
  42. package/dist/bin/pushary-wait.js +16 -14
  43. package/dist/bin/pushary.js +10 -8
  44. package/dist/{chunk-IF2UPWD2.js → chunk-26MUPAKS.js} +1 -1
  45. package/dist/{chunk-AWMMABVB.js → chunk-2QPHUCXU.js} +49 -135
  46. package/dist/{chunk-WEY5ZHDB.js → chunk-2YSCVT6Q.js} +5 -5
  47. package/dist/chunk-36NGFHE4.js +72 -0
  48. package/dist/{chunk-25SYEAW4.js → chunk-3ICRY72Q.js} +3 -3
  49. package/dist/{chunk-LZYJMSOY.js → chunk-3OLEGCMU.js} +3 -3
  50. package/dist/{chunk-B7LV6W7U.js → chunk-3RPN7AAT.js} +1 -1
  51. package/dist/{chunk-VCZN7NAB.js → chunk-3YAOJEHG.js} +7 -5
  52. package/dist/{chunk-TGCIFEDE.js → chunk-43NXSBNZ.js} +13 -11
  53. package/dist/{chunk-Y74IJ2IO.js → chunk-4JM2CK2A.js} +4 -4
  54. package/dist/{chunk-KEAIIVW3.js → chunk-4QQEUJL4.js} +2 -2
  55. package/dist/{chunk-XNZB274I.js → chunk-5463UUO2.js} +1 -1
  56. package/dist/{chunk-ZMYLVFXC.js → chunk-5CRQCIHR.js} +14 -9
  57. package/dist/{chunk-KIO2MZQC.js → chunk-6QPRQVQM.js} +5 -3
  58. package/dist/{chunk-4PCJ6DYK.js → chunk-6SWMKF5E.js} +2 -2
  59. package/dist/{chunk-Y7WD72J7.js → chunk-7CLLWDCP.js} +1 -1
  60. package/dist/{chunk-TYTIDEBW.js → chunk-7DBTOPOT.js} +5 -5
  61. package/dist/chunk-7YAVKENV.js +271 -0
  62. package/dist/{chunk-34AQAQKW.js → chunk-AA2K3H7Y.js} +4 -4
  63. package/dist/{chunk-DH4BWFU7.js → chunk-AZHTI5JX.js} +5 -5
  64. package/dist/{chunk-PA54A437.js → chunk-BUXDR6US.js} +1 -1
  65. package/dist/{chunk-VUS6QGND.js → chunk-CQ5JGRML.js} +5 -1
  66. package/dist/{chunk-YVO4HIHX.js → chunk-DT5CACWZ.js} +12 -10
  67. package/dist/{chunk-LLRYP5TR.js → chunk-DT5Y55FI.js} +5 -5
  68. package/dist/{chunk-ZTTCYHOM.js → chunk-DUMZORSL.js} +8 -6
  69. package/dist/{chunk-XTVEW2NG.js → chunk-EGKD4S5H.js} +1 -1
  70. package/dist/{chunk-FPKQGWAF.js → chunk-EJCPHLY2.js} +2 -2
  71. package/dist/{chunk-YTYXFA5M.js → chunk-FI73DGNB.js} +1 -1
  72. package/dist/{chunk-JGNYCRB2.js → chunk-FV34HT35.js} +1 -1
  73. package/dist/{chunk-KK2DIUVV.js → chunk-GCN73COS.js} +1 -1
  74. package/dist/{chunk-SE4JFMLW.js → chunk-GTSI6NG6.js} +8 -6
  75. package/dist/chunk-JBT3ZSJS.js +92 -0
  76. package/dist/chunk-JZDRR7BL.js +427 -0
  77. package/dist/{chunk-KBGKWB5T.js → chunk-K3BIMGP4.js} +4 -2
  78. package/dist/{chunk-LY3OJFBW.js → chunk-KQBXPGXO.js} +2 -1
  79. package/dist/{chunk-OR5F63C2.js → chunk-LF3TLC7B.js} +2 -168
  80. package/dist/{chunk-QYBL4EHD.js → chunk-LXRQLDGW.js} +11 -11
  81. package/dist/{chunk-ZOKMGBPR.js → chunk-MC4VY5LK.js} +16 -5
  82. package/dist/{chunk-OW4DNSQ6.js → chunk-NSY2V7XU.js} +1 -1
  83. package/dist/{chunk-X3RCIOIH.js → chunk-ONCWYACA.js} +1 -1
  84. package/dist/{chunk-EP6S6VY3.js → chunk-PMJEN6CX.js} +6 -6
  85. package/dist/{chunk-K73CBZKW.js → chunk-PTNSIGLB.js} +4 -4
  86. package/dist/chunk-PVDSN6TB.js +729 -0
  87. package/dist/chunk-QTOLNRET.js +169 -0
  88. package/dist/{chunk-APASKZ2I.js → chunk-RLADRNPV.js} +5 -3
  89. package/dist/{chunk-BOVSUH4N.js → chunk-S6RNS4UL.js} +2 -2
  90. package/dist/{chunk-34RXPM5U.js → chunk-SRXBOMSR.js} +3 -3
  91. package/dist/{chunk-HXRH7ZCK.js → chunk-TQ6AGJVH.js} +2 -2
  92. package/dist/{chunk-SALUTWPX.js → chunk-UKX5WIB5.js} +4 -4
  93. package/dist/{chunk-ABMEBN2R.js → chunk-UR7XX2DV.js} +6 -4
  94. package/dist/{chunk-BXK6ZJVJ.js → chunk-UVT6B6XN.js} +2 -2
  95. package/dist/{chunk-5Q2FRMPC.js → chunk-VD2OAF7Q.js} +4 -4
  96. package/dist/{chunk-XH3F66VD.js → chunk-VYBH6D4X.js} +3 -3
  97. package/dist/{chunk-UCF3EZZL.js → chunk-VZRCM362.js} +13 -13
  98. package/dist/{chunk-7RMSB4A2.js → chunk-W26Q2DTD.js} +14 -12
  99. package/dist/{chunk-OWQHE2VV.js → chunk-WVSM3G4C.js} +19 -4
  100. package/dist/{chunk-GDDXGBTM.js → chunk-X5GHIFST.js} +2 -2
  101. package/dist/chunk-XCEN33UP.js +7 -0
  102. package/dist/{chunk-UHVD7BSV.js → chunk-XQHPHJHR.js} +6 -6
  103. package/dist/{chunk-OZLGTMIY.js → chunk-XSUJ2PQY.js} +2 -2
  104. package/dist/{chunk-ZYYQJSIO.js → chunk-YQDZ7ZIL.js} +44 -462
  105. package/dist/{chunk-PXUNPXOX.js → chunk-ZOP3I2GQ.js} +3 -3
  106. package/dist/{chunk-WLT6J3SB.js → chunk-ZXGDBCIH.js} +2 -2
  107. package/dist/codex-app-cards-switch-ZQRT7MXB.js +52 -0
  108. package/dist/codex-desktop-launch-X7UKQ4VR.js +27 -0
  109. package/dist/codex-session-launch-IX33LOQZ.js +331 -0
  110. package/dist/config-HX6ZNOIL.js +14 -0
  111. package/dist/{global-upgrade-AIUSS2YH.js → global-upgrade-DGP2E2NE.js} +8 -6
  112. package/dist/identity-YISWVJ2A.js +15 -0
  113. package/dist/live-capabilities-44KFBOD4.js +53 -0
  114. package/dist/{paths-RO34TYNM.js → paths-VLGX4GJA.js} +4 -2
  115. package/dist/{reapply-KTNPP4XE.js → reapply-35F3WDTB.js} +24 -21
  116. package/dist/src/index.d.ts +3 -3
  117. package/dist/src/index.js +22 -19
  118. package/dist/{upgrade-lock-5UAGXIW7.js → upgrade-lock-LMO3DSSU.js} +5 -3
  119. package/dist/usage-ZC6BKIE3.js +10 -0
  120. package/package.json +1 -1
@@ -1,27 +1,27 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  runBrowserLogin
4
- } from "../chunk-YTYXFA5M.js";
4
+ } from "../chunk-FI73DGNB.js";
5
5
  import {
6
6
  coworkOutput,
7
7
  coworkSelection
8
- } from "../chunk-PXUNPXOX.js";
8
+ } from "../chunk-ZOP3I2GQ.js";
9
9
  import "../chunk-PUZZELE6.js";
10
10
  import {
11
11
  clearDeclinedAgent,
12
12
  declinedAgentForSetupChoice
13
- } from "../chunk-WLT6J3SB.js";
13
+ } from "../chunk-ZXGDBCIH.js";
14
14
  import {
15
15
  CURSOR_GATE_SCRIPT,
16
16
  describeVersionManagerPin,
17
17
  saveSetupFailure,
18
18
  versionManagerOf
19
- } from "../chunk-OZLGTMIY.js";
19
+ } from "../chunk-XSUJ2PQY.js";
20
20
  import {
21
21
  codexTrustOutcome,
22
22
  describeCodexTrustConfirmation,
23
23
  needsCodexTrustStep
24
- } from "../chunk-HXRH7ZCK.js";
24
+ } from "../chunk-TQ6AGJVH.js";
25
25
  import {
26
26
  describeWaitLadder
27
27
  } from "../chunk-CVWG2N3Y.js";
@@ -39,23 +39,24 @@ import {
39
39
  roundTripEvidence,
40
40
  verifyRoundTrip,
41
41
  waitForYourPhone
42
- } from "../chunk-UHVD7BSV.js";
42
+ } from "../chunk-XQHPHJHR.js";
43
43
  import "../chunk-3EGEA4KH.js";
44
44
  import {
45
45
  readManagedControlEvidence,
46
46
  waitForMachineReadiness
47
- } from "../chunk-QYBL4EHD.js";
47
+ } from "../chunk-LXRQLDGW.js";
48
48
  import {
49
49
  ensureCodexTrustsPusharyHooks
50
- } from "../chunk-KIO2MZQC.js";
51
- import {
52
- setHumanStream
53
- } from "../chunk-QCGNGEGE.js";
50
+ } from "../chunk-6QPRQVQM.js";
54
51
  import {
55
52
  describeSetupSideEffects,
56
53
  installAgentSkill,
57
54
  installSkillViaSkillsCli
58
55
  } from "../chunk-EUW7JL2K.js";
56
+ import {
57
+ codexEngineBehindLauncher
58
+ } from "../chunk-PVDSN6TB.js";
59
+ import "../chunk-XCEN33UP.js";
59
60
  import {
60
61
  CURSOR_PLUGIN_BACKUP_INFIX,
61
62
  CURSOR_PLUGIN_STAGING_PREFIX,
@@ -64,7 +65,7 @@ import {
64
65
  soleGateFile,
65
66
  soleGateReceipt,
66
67
  soleGateReceiptFile
67
- } from "../chunk-34AQAQKW.js";
68
+ } from "../chunk-AA2K3H7Y.js";
68
69
  import {
69
70
  HERMES_PIP_PACKAGE,
70
71
  describeDetection,
@@ -77,11 +78,14 @@ import {
77
78
  runHermesConfigScript,
78
79
  shortenHome,
79
80
  vscodeSettingsTargets
80
- } from "../chunk-VCZN7NAB.js";
81
+ } from "../chunk-3YAOJEHG.js";
81
82
  import {
82
83
  mcpServerBearer,
83
84
  readMacAppAgentKey
84
- } from "../chunk-K73CBZKW.js";
85
+ } from "../chunk-PTNSIGLB.js";
86
+ import {
87
+ setHumanStream
88
+ } from "../chunk-QCGNGEGE.js";
85
89
  import {
86
90
  AgentConfigError,
87
91
  FX_PUSHARY_TOOLS_RULE,
@@ -109,10 +113,10 @@ import {
109
113
  writeInstructionBlock,
110
114
  writeSetupConfigFile,
111
115
  writeSetupConfigJson
112
- } from "../chunk-DH4BWFU7.js";
116
+ } from "../chunk-AZHTI5JX.js";
113
117
  import {
114
118
  MCP_BRIDGE_BINARY
115
- } from "../chunk-GDDXGBTM.js";
119
+ } from "../chunk-X5GHIFST.js";
116
120
  import {
117
121
  OPENCODE_HOOK_BINARY,
118
122
  addOpenCodeMcpServer,
@@ -128,16 +132,29 @@ import {
128
132
  openCodePluginDir,
129
133
  openCodePluginFile,
130
134
  openCodeWired
131
- } from "../chunk-LLRYP5TR.js";
135
+ } from "../chunk-DT5Y55FI.js";
132
136
  import {
133
137
  ansiPainter,
134
138
  createIo,
135
139
  useColor
136
140
  } from "../chunk-FO3MDD26.js";
141
+ import {
142
+ checkCodexInstall,
143
+ detectProviderLiveCapabilities,
144
+ expectedLaunchCapabilities,
145
+ hasSpawnProvider,
146
+ missingControlPrerequisite,
147
+ nodeCodexInstallProbe,
148
+ phoneStartIsRequired,
149
+ resolveControlPolicy
150
+ } from "../chunk-WVSM3G4C.js";
151
+ import {
152
+ detectClaudeVersion
153
+ } from "../chunk-RIVNNBEK.js";
137
154
  import {
138
155
  describeAutoUpdateAnnouncement,
139
156
  takeAutoUpdateAnnouncement
140
- } from "../chunk-APASKZ2I.js";
157
+ } from "../chunk-RLADRNPV.js";
141
158
  import {
142
159
  addClaudeMcpServer,
143
160
  addCompatibleHooks,
@@ -156,7 +173,7 @@ import {
156
173
  hasCompatibleHooks,
157
174
  isClaudeMcpSnapshot,
158
175
  updateClaudeMcpSnapshot
159
- } from "../chunk-Y74IJ2IO.js";
176
+ } from "../chunk-4JM2CK2A.js";
160
177
  import {
161
178
  DAEMON_COLD_START_TIMEOUT_MS,
162
179
  clearDaemonNeedsLogin,
@@ -170,7 +187,7 @@ import {
170
187
  replaceDaemonService,
171
188
  stopDaemonService,
172
189
  waitForDaemonRemoteProof
173
- } from "../chunk-ZMYLVFXC.js";
190
+ } from "../chunk-5CRQCIHR.js";
174
191
  import {
175
192
  KEEP_HINT,
176
193
  captureHookTakeover,
@@ -182,24 +199,29 @@ import {
182
199
  geminiWired,
183
200
  planHooks,
184
201
  pusharyHookExecutable
185
- } from "../chunk-WEY5ZHDB.js";
202
+ } from "../chunk-2YSCVT6Q.js";
186
203
  import {
187
204
  GEMINI_HOOK_BINARY,
188
205
  GEMINI_HOOK_EVENTS,
189
206
  addGeminiHooks,
190
207
  addGeminiMcpServer
191
- } from "../chunk-25SYEAW4.js";
208
+ } from "../chunk-3ICRY72Q.js";
192
209
  import {
193
210
  AGENT_CHOICES,
194
211
  effectiveControlMode,
195
212
  effectiveVerify,
196
213
  parseSetupOptions
197
- } from "../chunk-PA54A437.js";
198
- import "../chunk-XTVEW2NG.js";
214
+ } from "../chunk-BUXDR6US.js";
215
+ import "../chunk-EGKD4S5H.js";
199
216
  import "../chunk-GMXKITVA.js";
200
217
  import {
201
218
  transcriptPreferenceForSetup
202
- } from "../chunk-JGNYCRB2.js";
219
+ } from "../chunk-FV34HT35.js";
220
+ import "../chunk-XHKBHWLX.js";
221
+ import {
222
+ compareVersion,
223
+ parseVersion
224
+ } from "../chunk-6ICPEJY5.js";
203
225
  import {
204
226
  KEY_FILE_MODE,
205
227
  exportLine,
@@ -212,47 +234,36 @@ import {
212
234
  recordMacAppKeyPrefix,
213
235
  resolveShellRc,
214
236
  writeKey
215
- } from "../chunk-XH3F66VD.js";
237
+ } from "../chunk-VYBH6D4X.js";
216
238
  import {
217
- checkCodexInstall,
218
- detectProviderLiveCapabilities,
219
- expectedLaunchCapabilities,
220
- hasSpawnProvider,
221
- missingControlPrerequisite,
222
- nodeCodexInstallProbe,
223
- resolveControlPolicy
224
- } from "../chunk-OWQHE2VV.js";
225
- import {
226
- detectClaudeVersion
227
- } from "../chunk-RIVNNBEK.js";
228
- import "../chunk-XHKBHWLX.js";
229
- import {
230
- compareVersion,
231
- parseVersion
232
- } from "../chunk-6ICPEJY5.js";
239
+ CODEX_ENGINE_DIRECTORY,
240
+ CODEX_ENGINE_ENTRYPOINT,
241
+ CODEX_ENGINE_MANIFEST,
242
+ codexEngineInside
243
+ } from "../chunk-36NGFHE4.js";
233
244
  import {
234
245
  reportEvent
235
- } from "../chunk-YVO4HIHX.js";
236
- import "../chunk-B7LV6W7U.js";
237
- import "../chunk-KEAIIVW3.js";
238
- import "../chunk-AWMMABVB.js";
246
+ } from "../chunk-DT5CACWZ.js";
247
+ import "../chunk-3RPN7AAT.js";
248
+ import "../chunk-JBT3ZSJS.js";
249
+ import "../chunk-2QPHUCXU.js";
239
250
  import "../chunk-POFBE6ZY.js";
240
- import "../chunk-LZYJMSOY.js";
251
+ import "../chunk-3OLEGCMU.js";
241
252
  import {
242
253
  checkApiKey,
243
254
  describeKeyCheck,
244
255
  samePusharyAccount
245
- } from "../chunk-34RXPM5U.js";
246
- import "../chunk-ABMEBN2R.js";
247
- import "../chunk-LY3OJFBW.js";
256
+ } from "../chunk-SRXBOMSR.js";
257
+ import "../chunk-UR7XX2DV.js";
258
+ import "../chunk-KQBXPGXO.js";
248
259
  import {
249
260
  UsageError
250
261
  } from "../chunk-7QLSKOSU.js";
251
262
  import {
252
263
  EXIT
253
264
  } from "../chunk-KZERVKTD.js";
265
+ import "../chunk-4QQEUJL4.js";
254
266
  import {
255
- NpmMissingError,
256
267
  addCodexHookTrust,
257
268
  addCodexHooks,
258
269
  addCodexMcpServer,
@@ -272,7 +283,6 @@ import {
272
283
  cursorUserHooks,
273
284
  cursorUserMcp,
274
285
  dropVacatedCodexHookTrust,
275
- fetchLatestPublishedVersion,
276
286
  fxAgentsMd,
277
287
  fxConfigDir,
278
288
  fxMcpProfile,
@@ -286,47 +296,53 @@ import {
286
296
  guardedArgv,
287
297
  hermesConfigReceipt,
288
298
  hookTakeoverReceipt,
289
- installGlobally,
290
- npmInstallFailure,
291
- plannedGlobalPackage,
292
299
  pusharyConfigFile,
293
300
  readCodexMcpAuth,
294
- resolveGlobalBinDir,
295
- resolveGlobalBinary,
296
301
  vscodePluginDir,
297
302
  vscodePluginMcp
298
- } from "../chunk-ZYYQJSIO.js";
303
+ } from "../chunk-YQDZ7ZIL.js";
304
+ import {
305
+ NpmMissingError,
306
+ fetchLatestPublishedVersion,
307
+ installGlobally,
308
+ npmInstallFailure,
309
+ plannedGlobalPackage,
310
+ resolveGlobalBinDir,
311
+ resolveGlobalBinary
312
+ } from "../chunk-JZDRR7BL.js";
299
313
  import {
300
314
  backupFile,
301
315
  readJsonSafe
302
316
  } from "../chunk-AQFEP65J.js";
303
317
  import {
304
318
  getBaseUrl
305
- } from "../chunk-VUS6QGND.js";
319
+ } from "../chunk-CQ5JGRML.js";
306
320
  import {
307
321
  NPX_LATEST_COMMAND,
308
322
  renderCommandHelp
309
- } from "../chunk-ZOKMGBPR.js";
323
+ } from "../chunk-MC4VY5LK.js";
324
+ import {
325
+ getPackageVersion,
326
+ isNewerVersion,
327
+ launchedPackage,
328
+ ownPackageName
329
+ } from "../chunk-QTOLNRET.js";
310
330
  import {
311
331
  HOOK_COMPATIBLE_PROFILES,
312
332
  PRETOOLUSE_GATED_TOOLS,
313
333
  SUPPORT_EMAIL,
314
334
  computerOsOfPlatform,
315
- getPackageVersion,
316
335
  hookCompatibleProfile,
317
336
  isApprovalMode,
318
337
  isComputerAgent,
319
- isNewerVersion,
320
338
  isRecord,
321
339
  isTimeoutAction,
322
- isValidApiKey,
323
- launchedPackage,
324
- ownPackageName
325
- } from "../chunk-OR5F63C2.js";
340
+ isValidApiKey
341
+ } from "../chunk-LF3TLC7B.js";
326
342
 
327
343
  // bin/pushary-setup.ts
328
344
  import { existsSync, readFileSync, writeFileSync, mkdirSync, cpSync, rmSync, renameSync, realpathSync, statSync, openSync, readSync, closeSync } from "fs";
329
- import { join as join3, dirname as dirname2, basename } from "path";
345
+ import { join as join3, dirname as dirname3, basename } from "path";
330
346
  import { homedir, hostname } from "os";
331
347
  import { execSync } from "child_process";
332
348
  import { checkbox, input, confirm } from "@inquirer/prompts";
@@ -693,6 +709,15 @@ var COMMAND_SURFACE = [
693
709
  ];
694
710
  var SURFACE_COLUMN = Math.max(...COMMAND_SURFACE.map((entry) => entry.command.length)) + 2;
695
711
  var renderCommandSurface = () => COMMAND_SURFACE.map((entry) => `${entry.command.padEnd(SURFACE_COLUMN)}${entry.summary}`);
712
+ var PHONE_START_VERIFIED_LINE = "Phone-start and steering: local and server checks passed just now. Recheck after sleep or network changes.";
713
+ var PHONE_START_NOT_RUNNING_LINE = "Phone-start and steering: not running on this computer. Approvals do not depend on it. Run pushary doctor to see what is missing.";
714
+ var PHONE_START_UNVERIFIED_LINE = "Phone-start and steering: unverified. Run pushary doctor to check the provider, background service and server route.";
715
+ var phoneStartStatusLine = (facts) => {
716
+ if (facts.managedControlReady === true) return PHONE_START_VERIFIED_LINE;
717
+ if (facts.daemonReady === false) return PHONE_START_NOT_RUNNING_LINE;
718
+ return PHONE_START_UNVERIFIED_LINE;
719
+ };
720
+ var phoneStartFailedTheRun = (facts) => facts.daemonReady === false && facts.phoneStartRequired !== false;
696
721
  var PHONE_START_UNVERIFIED_STEPS = [
697
722
  "Agent configuration and managed control are separate. Phone-start and steering could not be verified.",
698
723
  "pushary daemon install install or repair the background service",
@@ -712,7 +737,7 @@ var WHAT_PHONE_START_NEEDS = {
712
737
  };
713
738
  var phoneStartProblemSteps = (missing) => missing ? [PHONE_START_CANNOT_RUN_LINE, ...WHAT_PHONE_START_NEEDS[missing], STOP_REQUIRING_PHONE_START_STEP] : PHONE_START_UNVERIFIED_STEPS;
714
739
  var nextSteps = (facts, reachable) => {
715
- const lines = ["Delivery follows the current approval mode, recipient rules and presence. pushary mode status shows the workspace setting.", facts.managedControlReady === true ? "Phone-start and steering: local and server checks passed just now. Recheck after sleep or network changes." : "Phone-start and steering: unverified. Run pushary doctor to check the provider, background service and server route."];
740
+ const lines = ["Delivery follows the current approval mode, recipient rules and presence. pushary mode status shows the workspace setting.", phoneStartStatusLine(facts)];
716
741
  lines.push("Before stepping away, run pushary wait to see how long phone approvals wait and what happens if you do not answer.");
717
742
  if (facts.staleEnvironmentKey) {
718
743
  lines.push("Open a new terminal or unset PUSHARY_API_KEY, then run pushary doctor before starting an agent.");
@@ -767,7 +792,7 @@ var describeClosing = (facts) => {
767
792
  reason: "stale-environment-key"
768
793
  };
769
794
  }
770
- if (facts.daemonReady === false) {
795
+ if (phoneStartFailedTheRun(facts)) {
771
796
  return {
772
797
  ok: false,
773
798
  headline: "Setup finished with 1 problem.",
@@ -913,7 +938,7 @@ var readCodexVersion = (probe) => {
913
938
  };
914
939
 
915
940
  // src/setup/codex-bundled.ts
916
- import { join as join2 } from "path";
941
+ import { dirname as dirname2, join as join2 } from "path";
917
942
  var asRecord = (value) => value && typeof value === "object" && !Array.isArray(value) ? value : void 0;
918
943
  var codexCliPathFromConfig = (config) => {
919
944
  const servers = asRecord(config.mcp_servers);
@@ -924,16 +949,34 @@ var codexCliPathFromConfig = (config) => {
924
949
  }
925
950
  return null;
926
951
  };
952
+ var SYSTEM_CHATGPT_APP = "/Applications/ChatGPT.app";
953
+ var userChatGptApp = (home) => join2(home, "Applications", "ChatGPT.app");
927
954
  var bundledCodexCandidates = (home, platform) => platform === "darwin" ? [
928
- "/Applications/ChatGPT.app/Contents/Resources/codex",
929
- join2(home, "Applications", "ChatGPT.app", "Contents", "Resources", "codex")
955
+ codexEngineInside(SYSTEM_CHATGPT_APP),
956
+ codexEngineInside(userChatGptApp(home)),
957
+ join2(SYSTEM_CHATGPT_APP, "Contents", "Resources", "codex"),
958
+ join2(userChatGptApp(home), "Contents", "Resources", "codex")
930
959
  ] : [];
931
960
  var findBundledCodex = (probe) => {
932
961
  const config = probe.config();
933
962
  const declared = config ? codexCliPathFromConfig(config) : null;
934
- if (declared && probe.exists(declared)) return declared;
963
+ const codex = declared ? probe.engineBehindPusharyLauncher(declared) ?? declared : null;
964
+ if (codex && probe.exists(codex)) return codex;
935
965
  return bundledCodexCandidates(probe.home, probe.platform).find(probe.exists) ?? null;
936
966
  };
967
+ var ENGINE_ENTRYPOINT_INSIDE_THE_APP = `/${CODEX_ENGINE_DIRECTORY}/${CODEX_ENGINE_ENTRYPOINT}`;
968
+ var MANIFEST_VERSION = /^\d+\.\d+\.\d+/;
969
+ var codexEngineManifestBeside = (codex) => codex.endsWith(ENGINE_ENTRYPOINT_INSIDE_THE_APP) ? join2(dirname2(dirname2(codex)), CODEX_ENGINE_MANIFEST) : null;
970
+ var parseCodexEngineManifestVersion = (contents) => {
971
+ let manifest;
972
+ try {
973
+ manifest = JSON.parse(contents);
974
+ } catch {
975
+ return null;
976
+ }
977
+ const version = asRecord(manifest)?.version;
978
+ return typeof version === "string" ? version.match(MANIFEST_VERSION)?.[0] ?? null : null;
979
+ };
937
980
  var parseEmbeddedCodexVersion = (haystack) => haystack.match(/cli_version(\d+\.\d+\.\d+)/)?.[1] ?? null;
938
981
 
939
982
  // src/setup/telemetry.ts
@@ -1226,7 +1269,7 @@ var installGlobally2 = async () => {
1226
1269
  var _cachedSkillContent = null;
1227
1270
  var fetchSkillContent = async () => {
1228
1271
  if (_cachedSkillContent) return _cachedSkillContent;
1229
- const __dirname = dirname2(fileURLToPath(import.meta.url));
1272
+ const __dirname = dirname3(fileURLToPath(import.meta.url));
1230
1273
  const candidates = [
1231
1274
  join3(__dirname, "..", "..", "data", "SKILL.md"),
1232
1275
  join3(__dirname, "..", "data", "SKILL.md")
@@ -1399,6 +1442,24 @@ var readEmbeddedCodexVersion = (path) => {
1399
1442
  }
1400
1443
  }
1401
1444
  };
1445
+ var LARGEST_LAUNCHER_BYTES = 64 * 1024;
1446
+ var engineBehindPusharyLauncher = (path) => {
1447
+ try {
1448
+ if (statSync(path).size > LARGEST_LAUNCHER_BYTES) return null;
1449
+ return codexEngineBehindLauncher(readFileSync(path, "utf-8"));
1450
+ } catch {
1451
+ return null;
1452
+ }
1453
+ };
1454
+ var codexEngineManifestVersion = (codex) => {
1455
+ const manifest = codexEngineManifestBeside(codex);
1456
+ if (!manifest) return null;
1457
+ try {
1458
+ return parseCodexEngineManifestVersion(readFileSync(manifest, "utf-8"));
1459
+ } catch {
1460
+ return null;
1461
+ }
1462
+ };
1402
1463
  var bundledCodex = () => findBundledCodex({
1403
1464
  config: () => {
1404
1465
  try {
@@ -1408,6 +1469,7 @@ var bundledCodex = () => findBundledCodex({
1408
1469
  }
1409
1470
  },
1410
1471
  exists: existsSync,
1472
+ engineBehindPusharyLauncher,
1411
1473
  home: homedir(),
1412
1474
  platform: process.platform
1413
1475
  });
@@ -1423,7 +1485,7 @@ var detectCodexVersion = () => readCodexVersion({
1423
1485
  },
1424
1486
  bundledVersion: () => {
1425
1487
  const path = bundledCodex();
1426
- return path ? readEmbeddedCodexVersion(path) : null;
1488
+ return path ? codexEngineManifestVersion(path) ?? readEmbeddedCodexVersion(path) : null;
1427
1489
  },
1428
1490
  brewVersions: () => {
1429
1491
  try {
@@ -1607,7 +1669,7 @@ var setupCodex = async (apiKey) => {
1607
1669
  }
1608
1670
  };
1609
1671
  var resolveBundledPlugin = () => {
1610
- const dir = dirname2(fileURLToPath(import.meta.url));
1672
+ const dir = dirname3(fileURLToPath(import.meta.url));
1611
1673
  const candidates = [
1612
1674
  join3(dir, "..", "..", "data", "cursor-plugin"),
1613
1675
  join3(dir, "..", "data", "cursor-plugin"),
@@ -1668,7 +1730,7 @@ var setupCursor = async (apiKey) => {
1668
1730
  const source = resolveBundledPlugin();
1669
1731
  if (!source) throw new Error("bundled Cursor plugin not found in this package");
1670
1732
  await spinner("Installing Pushary plugin", async () => {
1671
- const staging = join3(dirname2(CURSOR_PLUGIN_DIR), `${CURSOR_PLUGIN_STAGING_PREFIX}${process.pid}`);
1733
+ const staging = join3(dirname3(CURSOR_PLUGIN_DIR), `${CURSOR_PLUGIN_STAGING_PREFIX}${process.pid}`);
1672
1734
  const backup = `${CURSOR_PLUGIN_DIR}${CURSOR_PLUGIN_BACKUP_INFIX}${(/* @__PURE__ */ new Date()).toISOString().replace(/[:.]/g, "-")}`;
1673
1735
  rmSync(staging, { recursive: true, force: true });
1674
1736
  try {
@@ -1716,7 +1778,7 @@ var setupCursor = async (apiKey) => {
1716
1778
  noteManual("Fully quit and reopen Cursor. A Reload Window may not be enough.");
1717
1779
  };
1718
1780
  var resolveBundledVsCodePlugin = () => {
1719
- const dir = dirname2(fileURLToPath(import.meta.url));
1781
+ const dir = dirname3(fileURLToPath(import.meta.url));
1720
1782
  const candidates = [
1721
1783
  join3(dir, "..", "..", "data", "vscode-plugin"),
1722
1784
  join3(dir, "..", "data", "vscode-plugin"),
@@ -1743,7 +1805,7 @@ var registerVsCodePlugin = (pluginDir) => {
1743
1805
  continue;
1744
1806
  }
1745
1807
  if (current !== null) backupFile(settingsPath);
1746
- mkdirSync(dirname2(settingsPath), { recursive: true });
1808
+ mkdirSync(dirname3(settingsPath), { recursive: true });
1747
1809
  writeSetupConfigFile(settingsPath, result.content);
1748
1810
  written.push(settingsPath);
1749
1811
  }
@@ -1756,9 +1818,9 @@ var setupVsCode = async (apiKey) => {
1756
1818
  const source = resolveBundledVsCodePlugin();
1757
1819
  if (!source) throw new Error("bundled VS Code plugin not found in this package");
1758
1820
  await spinner("Installing Pushary plugin", async () => {
1759
- const staging = join3(dirname2(VSCODE_PLUGIN_DIR), `.pushary-staging-vscode-${process.pid}`);
1821
+ const staging = join3(dirname3(VSCODE_PLUGIN_DIR), `.pushary-staging-vscode-${process.pid}`);
1760
1822
  const backup = `${VSCODE_PLUGIN_DIR}.pushary-backup-${(/* @__PURE__ */ new Date()).toISOString().replace(/[:.]/g, "-")}`;
1761
- mkdirSync(dirname2(VSCODE_PLUGIN_DIR), { recursive: true });
1823
+ mkdirSync(dirname3(VSCODE_PLUGIN_DIR), { recursive: true });
1762
1824
  rmSync(staging, { recursive: true, force: true });
1763
1825
  try {
1764
1826
  cpSync(source, staging, {
@@ -2173,7 +2235,7 @@ var setupCompatibleAgent = (profile) => async (apiKey) => {
2173
2235
  console.log(`
2174
2236
  ${bold(`Setting up ${profile.label}`)}
2175
2237
  `);
2176
- if (!isInstalled(profile.binary) && (profile.configDirIsShared || !existsSync(dirname2(configFile)))) {
2238
+ if (!isInstalled(profile.binary) && (profile.configDirIsShared || !existsSync(dirname3(configFile)))) {
2177
2239
  console.log(` ${yellow("!")} ${profile.label} not found. Skipping.`);
2178
2240
  console.log(` ${dim(`Install ${profile.label} and re-run setup to configure.`)}`);
2179
2241
  return "skipped";
@@ -3084,6 +3146,7 @@ var main = async () => {
3084
3146
  reachesYou,
3085
3147
  managedControlReady: !controlLifecycleFailure && managedControl.ready,
3086
3148
  daemonReady: controlLifecycleFailure ? false : daemonReady,
3149
+ phoneStartRequired: phoneStartIsRequired({ mode: controlMode, policy: controlPolicy, lifecycleFailed: controlLifecycleFailure !== null }),
3087
3150
  phoneStartMissingPrerequisite: controlMissingPrerequisite,
3088
3151
  transcriptSync,
3089
3152
  // null when the check did not run, so it changes nothing. Only an outright
@@ -1,16 +1,17 @@
1
1
  #!/usr/bin/env node
2
- import {
3
- readLedgerSummary
4
- } from "../chunk-Y7WD72J7.js";
5
2
  import {
6
3
  exitOnHelpFlag
7
- } from "../chunk-BOVSUH4N.js";
4
+ } from "../chunk-S6RNS4UL.js";
5
+ import {
6
+ readLedgerSummary
7
+ } from "../chunk-7CLLWDCP.js";
8
8
  import "../chunk-KZERVKTD.js";
9
9
  import {
10
10
  getApiKey
11
- } from "../chunk-VUS6QGND.js";
12
- import "../chunk-ZOKMGBPR.js";
13
- import "../chunk-OR5F63C2.js";
11
+ } from "../chunk-CQ5JGRML.js";
12
+ import "../chunk-MC4VY5LK.js";
13
+ import "../chunk-QTOLNRET.js";
14
+ import "../chunk-LF3TLC7B.js";
14
15
 
15
16
  // bin/pushary-stats.ts
16
17
  exitOnHelpFlag("stats");
@@ -3,69 +3,72 @@ import {
3
3
  describeReach,
4
4
  fetchChannels,
5
5
  reachVerdict
6
- } from "../chunk-UHVD7BSV.js";
6
+ } from "../chunk-XQHPHJHR.js";
7
7
  import "../chunk-3EGEA4KH.js";
8
8
  import {
9
9
  describeLastSeen,
10
10
  listMachines
11
- } from "../chunk-QYBL4EHD.js";
12
- import "../chunk-QCGNGEGE.js";
11
+ } from "../chunk-LXRQLDGW.js";
13
12
  import {
14
13
  CONNECTED_THROUGH_MAC_APP,
15
14
  readMacAppConnectionWhenKeyless
16
- } from "../chunk-K73CBZKW.js";
15
+ } from "../chunk-PTNSIGLB.js";
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-4PCJ6DYK.js";
23
- import "../chunk-LLRYP5TR.js";
22
+ } from "../chunk-6SWMKF5E.js";
23
+ import "../chunk-DT5Y55FI.js";
24
24
  import {
25
25
  createIo
26
26
  } from "../chunk-FO3MDD26.js";
27
- import "../chunk-Y74IJ2IO.js";
28
- import "../chunk-ZMYLVFXC.js";
29
- import "../chunk-WEY5ZHDB.js";
30
- import "../chunk-25SYEAW4.js";
31
- import "../chunk-PA54A437.js";
32
- import "../chunk-XTVEW2NG.js";
33
- import {
34
- rejectUnknownFlags
35
- } from "../chunk-GMXKITVA.js";
36
- import {
37
- readKeySource
38
- } from "../chunk-XH3F66VD.js";
39
27
  import {
40
28
  exitOnHelpFlag
41
- } from "../chunk-BOVSUH4N.js";
42
- import "../chunk-OWQHE2VV.js";
29
+ } from "../chunk-S6RNS4UL.js";
30
+ import "../chunk-WVSM3G4C.js";
43
31
  import "../chunk-RIVNNBEK.js";
32
+ import "../chunk-4JM2CK2A.js";
33
+ import "../chunk-5CRQCIHR.js";
34
+ import "../chunk-2YSCVT6Q.js";
35
+ import "../chunk-3ICRY72Q.js";
36
+ import "../chunk-BUXDR6US.js";
37
+ import "../chunk-EGKD4S5H.js";
38
+ import {
39
+ rejectUnknownFlags
40
+ } from "../chunk-GMXKITVA.js";
44
41
  import "../chunk-XHKBHWLX.js";
45
42
  import "../chunk-6ICPEJY5.js";
46
- import "../chunk-YVO4HIHX.js";
47
- import "../chunk-B7LV6W7U.js";
48
- import "../chunk-KEAIIVW3.js";
49
- import "../chunk-AWMMABVB.js";
43
+ import {
44
+ readKeySource
45
+ } from "../chunk-VYBH6D4X.js";
46
+ import "../chunk-DT5CACWZ.js";
47
+ import "../chunk-3RPN7AAT.js";
48
+ import "../chunk-JBT3ZSJS.js";
49
+ import "../chunk-2QPHUCXU.js";
50
50
  import "../chunk-POFBE6ZY.js";
51
- import "../chunk-LZYJMSOY.js";
51
+ import "../chunk-3OLEGCMU.js";
52
52
  import {
53
53
  checkApiKey,
54
54
  describeKeyCheck
55
- } from "../chunk-34RXPM5U.js";
56
- import "../chunk-ABMEBN2R.js";
57
- import "../chunk-LY3OJFBW.js";
55
+ } from "../chunk-SRXBOMSR.js";
56
+ import "../chunk-UR7XX2DV.js";
57
+ import "../chunk-KQBXPGXO.js";
58
58
  import {
59
59
  UsageError
60
60
  } from "../chunk-7QLSKOSU.js";
61
61
  import {
62
62
  EXIT
63
63
  } from "../chunk-KZERVKTD.js";
64
- import "../chunk-ZYYQJSIO.js";
64
+ import "../chunk-4QQEUJL4.js";
65
+ import "../chunk-YQDZ7ZIL.js";
66
+ import "../chunk-JZDRR7BL.js";
65
67
  import "../chunk-AQFEP65J.js";
66
- import "../chunk-VUS6QGND.js";
67
- import "../chunk-ZOKMGBPR.js";
68
- import "../chunk-OR5F63C2.js";
68
+ import "../chunk-CQ5JGRML.js";
69
+ import "../chunk-MC4VY5LK.js";
70
+ import "../chunk-QTOLNRET.js";
71
+ import "../chunk-LF3TLC7B.js";
69
72
 
70
73
  // src/status.ts
71
74
  var SIGNED_OUT_LINE = { label: "Server", value: "key signed out on this Mac", ok: false };