pushary 1.8.2 → 1.8.3

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 (69) hide show
  1. package/CHANGELOG.md +5 -0
  2. package/dist/bin/pushary-bell-hook.js +11 -11
  3. package/dist/bin/pushary-bell.js +2 -2
  4. package/dist/bin/pushary-claude.js +15 -15
  5. package/dist/bin/pushary-clean.js +18 -18
  6. package/dist/bin/pushary-codex-bridge.js +9 -9
  7. package/dist/bin/pushary-codex-hook.js +18 -18
  8. package/dist/bin/pushary-codex.js +8 -8
  9. package/dist/bin/pushary-connect.js +7 -7
  10. package/dist/bin/pushary-daemon.js +31 -28
  11. package/dist/bin/pushary-disconnect.js +11 -11
  12. package/dist/bin/pushary-doctor.js +20 -20
  13. package/dist/bin/pushary-elicitation-hook.js +14 -14
  14. package/dist/bin/pushary-gemini-bridge.js +4 -4
  15. package/dist/bin/pushary-gemini-hook.js +16 -16
  16. package/dist/bin/pushary-hook.js +19 -19
  17. package/dist/bin/pushary-login.js +5 -5
  18. package/dist/bin/pushary-logout.js +1 -1
  19. package/dist/bin/pushary-mcp.js +6 -6
  20. package/dist/bin/pushary-mode.js +5 -5
  21. package/dist/bin/pushary-notification-hook.js +17 -17
  22. package/dist/bin/pushary-opencode-hook.js +15 -15
  23. package/dist/bin/pushary-permission-denied-hook.js +19 -19
  24. package/dist/bin/pushary-permission-hook.js +19 -19
  25. package/dist/bin/pushary-post-hook.js +17 -17
  26. package/dist/bin/pushary-prompt-hook.js +17 -17
  27. package/dist/bin/pushary-session-end-hook.js +17 -17
  28. package/dist/bin/pushary-session-start-hook.js +20 -20
  29. package/dist/bin/pushary-setup.js +23 -23
  30. package/dist/bin/pushary-status.js +9 -9
  31. package/dist/bin/pushary-stop-hook.js +17 -17
  32. package/dist/bin/pushary-stopfailure-hook.js +17 -17
  33. package/dist/bin/pushary-transcript-register.js +8 -8
  34. package/dist/bin/pushary-upgrade.js +215 -139
  35. package/dist/bin/pushary-wait.js +5 -5
  36. package/dist/bin/pushary.js +3 -3
  37. package/dist/{chunk-W2LJ4O3A.js → chunk-27A7L4DA.js} +1 -1
  38. package/dist/{chunk-I4HKMUZQ.js → chunk-34EQOFMH.js} +2 -2
  39. package/dist/{chunk-2SLCHCVN.js → chunk-4CW5EAOI.js} +1 -1
  40. package/dist/{chunk-F6NTWZZC.js → chunk-4DYHBXX4.js} +5 -5
  41. package/dist/{chunk-INSMZNS7.js → chunk-4SJIPHR3.js} +1 -1
  42. package/dist/{chunk-ZJYJAD52.js → chunk-6SS74UHS.js} +1 -1
  43. package/dist/{chunk-DVW2MYCM.js → chunk-6UDK5TY6.js} +1 -1
  44. package/dist/{chunk-MMVCI6DT.js → chunk-AKCE6ZRF.js} +3 -3
  45. package/dist/{chunk-BDMC5H5L.js → chunk-APURTMSW.js} +2 -2
  46. package/dist/{chunk-MOTNSXC3.js → chunk-CTNLP4A5.js} +4 -4
  47. package/dist/{chunk-B3UVRGYP.js → chunk-CXYKQAL2.js} +5 -5
  48. package/dist/{chunk-4A3UQERT.js → chunk-DMU5E6HJ.js} +1 -1
  49. package/dist/{chunk-EESPY5DG.js → chunk-E5JGQGLD.js} +2 -2
  50. package/dist/{chunk-644AEX4T.js → chunk-EJXEHNB5.js} +2 -2
  51. package/dist/{chunk-5DGNEUXK.js → chunk-FBTUF2PH.js} +1 -1
  52. package/dist/{chunk-EIGJYCOE.js → chunk-IEXWWAJY.js} +2 -2
  53. package/dist/{chunk-NNWQ5VDB.js → chunk-MSMKCO4Y.js} +6 -6
  54. package/dist/{chunk-I3XLHSOC.js → chunk-OLYTGVCC.js} +3 -3
  55. package/dist/{chunk-DUA5O6X5.js → chunk-SD6OLZJX.js} +3 -3
  56. package/dist/{chunk-XQZEIWAV.js → chunk-SOUJG6UY.js} +53 -5
  57. package/dist/{chunk-KB2FTO4O.js → chunk-UXKXGRKG.js} +2 -2
  58. package/dist/{chunk-T55H6YEP.js → chunk-VF3X4MDB.js} +1 -1
  59. package/dist/{chunk-64H5IZZD.js → chunk-VI55VXDH.js} +1 -1
  60. package/dist/{chunk-NHCUXTEM.js → chunk-VUP5BMOD.js} +1 -1
  61. package/dist/{chunk-HOEB6AKG.js → chunk-XH7UNEHO.js} +1 -1
  62. package/dist/{chunk-LK2S5XIV.js → chunk-XNJ4MQF3.js} +2 -2
  63. package/dist/{chunk-S2UNQQQS.js → chunk-YLJ26RR2.js} +1 -1
  64. package/dist/{chunk-XEGVVU5H.js → chunk-YOYSXLUB.js} +2 -2
  65. package/dist/{chunk-YNCGXHM4.js → chunk-ZOKXZ3AS.js} +2 -2
  66. package/dist/{chunk-UPLV5AJF.js → chunk-ZR7LIQKO.js} +57 -5
  67. package/dist/{reapply-3UERAKQN.js → reapply-DYOQAVUP.js} +6 -6
  68. package/dist/src/index.js +13 -13
  69. package/package.json +1 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,10 @@
1
1
  # Changelog
2
2
 
3
+ ## 1.8.3
4
+
5
+ - Checking installed agents no longer blocks the daemon while npm or PATH lookups run. Concurrent refreshes share one lookup, and stopping the daemon cancels discovery.
6
+ - Automatic and manual upgrades share an operating-system lock. The finishing process keeps it if its parent exits, and a crash releases it without leaving a recovery file that blocks later upgrades. Unavailable locks stop the upgrade.
7
+
3
8
  ## 1.8.2
4
9
 
5
10
  - **Starting Codex from your phone no longer picks an old, broken Codex over the one you use.** The daemon looked for agents in npm's global folder before the ones your shell runs, so a broken npm copy of Codex won over a working one elsewhere on your PATH, and the session died at once with `spawn ... ENOENT`. On macOS and Linux the daemon and both session bridges now start the agent your shell finds first. Windows keeps npm's `.cmd` launcher first, because the first match on PATH there can be a script Windows cannot run.
@@ -4,32 +4,32 @@ import {
4
4
  } from "../chunk-HMNR7B2F.js";
5
5
  import {
6
6
  readHookInput
7
- } from "../chunk-EESPY5DG.js";
8
- import "../chunk-DUA5O6X5.js";
7
+ } from "../chunk-E5JGQGLD.js";
8
+ import "../chunk-SD6OLZJX.js";
9
9
  import "../chunk-SGZJ5LYH.js";
10
- import "../chunk-YNCGXHM4.js";
10
+ import "../chunk-ZOKXZ3AS.js";
11
11
  import "../chunk-DLEKCAQL.js";
12
12
  import "../chunk-MYHG7PX2.js";
13
- import "../chunk-XEGVVU5H.js";
14
- import "../chunk-EIGJYCOE.js";
15
- import "../chunk-S2UNQQQS.js";
16
- import "../chunk-HOEB6AKG.js";
13
+ import "../chunk-YOYSXLUB.js";
14
+ import "../chunk-IEXWWAJY.js";
15
+ import "../chunk-YLJ26RR2.js";
16
+ import "../chunk-XH7UNEHO.js";
17
17
  import "../chunk-URNXU3FO.js";
18
18
  import "../chunk-UMMCHS6P.js";
19
19
  import "../chunk-72WOCX22.js";
20
20
  import "../chunk-XHKBHWLX.js";
21
21
  import "../chunk-6ICPEJY5.js";
22
22
  import "../chunk-VFFHQC7W.js";
23
- import "../chunk-KB2FTO4O.js";
23
+ import "../chunk-UXKXGRKG.js";
24
24
  import "../chunk-POFBE6ZY.js";
25
25
  import "../chunk-GMXKITVA.js";
26
26
  import "../chunk-TJMAXQ5Q.js";
27
- import "../chunk-2SLCHCVN.js";
28
- import "../chunk-4A3UQERT.js";
27
+ import "../chunk-4CW5EAOI.js";
28
+ import "../chunk-DMU5E6HJ.js";
29
29
  import "../chunk-7QLSKOSU.js";
30
30
  import "../chunk-KZERVKTD.js";
31
31
  import "../chunk-5Y2DY6X4.js";
32
- import "../chunk-UPLV5AJF.js";
32
+ import "../chunk-ZR7LIQKO.js";
33
33
  import "../chunk-T7E75EKA.js";
34
34
  import "../chunk-ON5JW2HP.js";
35
35
  import "../chunk-35X5UDML.js";
@@ -10,7 +10,7 @@ import {
10
10
  addBellHooks,
11
11
  bellInstalled,
12
12
  removeBellHooks
13
- } from "../chunk-HOEB6AKG.js";
13
+ } from "../chunk-XH7UNEHO.js";
14
14
  import {
15
15
  createIo
16
16
  } from "../chunk-U4TMAANR.js";
@@ -28,7 +28,7 @@ import {
28
28
  import "../chunk-5Y2DY6X4.js";
29
29
  import {
30
30
  claudeSettings
31
- } from "../chunk-UPLV5AJF.js";
31
+ } from "../chunk-ZR7LIQKO.js";
32
32
  import {
33
33
  readJsonSafe,
34
34
  writeJsonAtomic
@@ -8,7 +8,7 @@ import {
8
8
  describeIdleWindow,
9
9
  startProcessOwnership,
10
10
  withSpawnProcessOwnership
11
- } from "../chunk-ZJYJAD52.js";
11
+ } from "../chunk-6SS74UHS.js";
12
12
  import {
13
13
  announceSubscriptionRequired,
14
14
  isDeferAnswer
@@ -18,17 +18,17 @@ import {
18
18
  loadSessionKey,
19
19
  registerTranscript,
20
20
  registeredTranscriptEnabled
21
- } from "../chunk-DUA5O6X5.js";
21
+ } from "../chunk-SD6OLZJX.js";
22
22
  import "../chunk-SGZJ5LYH.js";
23
- import "../chunk-YNCGXHM4.js";
23
+ import "../chunk-ZOKXZ3AS.js";
24
24
  import "../chunk-DLEKCAQL.js";
25
25
  import "../chunk-MYHG7PX2.js";
26
- import "../chunk-XEGVVU5H.js";
26
+ import "../chunk-YOYSXLUB.js";
27
27
  import {
28
28
  ensureDaemonRunning
29
- } from "../chunk-EIGJYCOE.js";
30
- import "../chunk-S2UNQQQS.js";
31
- import "../chunk-HOEB6AKG.js";
29
+ } from "../chunk-IEXWWAJY.js";
30
+ import "../chunk-YLJ26RR2.js";
31
+ import "../chunk-XH7UNEHO.js";
32
32
  import {
33
33
  encryptRecord
34
34
  } from "../chunk-URNXU3FO.js";
@@ -51,7 +51,7 @@ import {
51
51
  repoKeyFor,
52
52
  reportEvent,
53
53
  scopePathFor
54
- } from "../chunk-F6NTWZZC.js";
54
+ } from "../chunk-4DYHBXX4.js";
55
55
  import {
56
56
  DEFAULT_SESSION,
57
57
  markPendingCommandDelivered,
@@ -72,23 +72,23 @@ import {
72
72
  nextLongPollMs,
73
73
  waitForAnswer,
74
74
  withdrawQuestion
75
- } from "../chunk-MMVCI6DT.js";
76
- import "../chunk-KB2FTO4O.js";
75
+ } from "../chunk-AKCE6ZRF.js";
76
+ import "../chunk-UXKXGRKG.js";
77
77
  import "../chunk-POFBE6ZY.js";
78
78
  import "../chunk-GMXKITVA.js";
79
79
  import "../chunk-TJMAXQ5Q.js";
80
80
  import {
81
81
  SubscriptionRequiredError
82
- } from "../chunk-I4HKMUZQ.js";
83
- import "../chunk-DVW2MYCM.js";
84
- import "../chunk-2SLCHCVN.js";
82
+ } from "../chunk-34EQOFMH.js";
83
+ import "../chunk-6UDK5TY6.js";
84
+ import "../chunk-4CW5EAOI.js";
85
85
  import {
86
86
  getMachineId
87
- } from "../chunk-4A3UQERT.js";
87
+ } from "../chunk-DMU5E6HJ.js";
88
88
  import "../chunk-7QLSKOSU.js";
89
89
  import "../chunk-KZERVKTD.js";
90
90
  import "../chunk-5Y2DY6X4.js";
91
- import "../chunk-UPLV5AJF.js";
91
+ import "../chunk-ZR7LIQKO.js";
92
92
  import "../chunk-T7E75EKA.js";
93
93
  import {
94
94
  getApiKey,
@@ -4,7 +4,7 @@ import {
4
4
  PUSHARY_SKILL_SOURCE,
5
5
  createGuards,
6
6
  withoutPusharyCursorHooks
7
- } from "../chunk-BDMC5H5L.js";
7
+ } from "../chunk-APURTMSW.js";
8
8
  import {
9
9
  HERMES_PIP_PACKAGE,
10
10
  planFxRemoval,
@@ -15,8 +15,8 @@ import {
15
15
  shortenHome,
16
16
  unregisterPluginLocation,
17
17
  vscodeSettingsTargets
18
- } from "../chunk-LK2S5XIV.js";
19
- import "../chunk-T55H6YEP.js";
18
+ } from "../chunk-XNJ4MQF3.js";
19
+ import "../chunk-VF3X4MDB.js";
20
20
  import {
21
21
  OPENCODE_PLUGIN_SIBLING,
22
22
  OPENCODE_PLUGIN_SIBLING_CONTENTS,
@@ -36,40 +36,40 @@ import {
36
36
  compatiblePermissionRuleFile,
37
37
  removeCompatibleHooks,
38
38
  removeCompatibleMcpServer
39
- } from "../chunk-MOTNSXC3.js";
39
+ } from "../chunk-CTNLP4A5.js";
40
40
  import {
41
41
  isClaudeMcpSnapshot,
42
42
  removeClaudeMcpServers,
43
43
  removePusharySettings,
44
44
  removePusharyToolPermissions,
45
45
  restoreClaudeMcpServer
46
- } from "../chunk-644AEX4T.js";
46
+ } from "../chunk-EJXEHNB5.js";
47
47
  import {
48
48
  hookOwnerOf,
49
49
  isHookTakeoverReceipt,
50
50
  restoreHookTakeover,
51
51
  restoreMcpServer
52
- } from "../chunk-YNCGXHM4.js";
52
+ } from "../chunk-ZOKXZ3AS.js";
53
53
  import "../chunk-DLEKCAQL.js";
54
54
  import {
55
55
  liveBridgeProbe,
56
56
  resolveBridgeStub
57
57
  } from "../chunk-MYHG7PX2.js";
58
- import "../chunk-XEGVVU5H.js";
58
+ import "../chunk-YOYSXLUB.js";
59
59
  import {
60
60
  disableDaemonService
61
- } from "../chunk-EIGJYCOE.js";
61
+ } from "../chunk-IEXWWAJY.js";
62
62
  import {
63
63
  removeGeminiSettings
64
- } from "../chunk-S2UNQQQS.js";
65
- import "../chunk-HOEB6AKG.js";
64
+ } from "../chunk-YLJ26RR2.js";
65
+ import "../chunk-XH7UNEHO.js";
66
66
  import "../chunk-XHKBHWLX.js";
67
67
  import "../chunk-6ICPEJY5.js";
68
- import "../chunk-F6NTWZZC.js";
68
+ import "../chunk-4DYHBXX4.js";
69
69
  import "../chunk-N6IOSZOE.js";
70
70
  import "../chunk-VFFHQC7W.js";
71
- import "../chunk-MMVCI6DT.js";
72
- import "../chunk-KB2FTO4O.js";
71
+ import "../chunk-AKCE6ZRF.js";
72
+ import "../chunk-UXKXGRKG.js";
73
73
  import "../chunk-POFBE6ZY.js";
74
74
  import {
75
75
  ansiPainter,
@@ -86,10 +86,10 @@ import {
86
86
  isDisabledExport,
87
87
  removeClaudeAlias
88
88
  } from "../chunk-TJMAXQ5Q.js";
89
- import "../chunk-I4HKMUZQ.js";
90
- import "../chunk-DVW2MYCM.js";
91
- import "../chunk-2SLCHCVN.js";
92
- import "../chunk-4A3UQERT.js";
89
+ import "../chunk-34EQOFMH.js";
90
+ import "../chunk-6UDK5TY6.js";
91
+ import "../chunk-4CW5EAOI.js";
92
+ import "../chunk-DMU5E6HJ.js";
93
93
  import "../chunk-7QLSKOSU.js";
94
94
  import {
95
95
  EXIT
@@ -132,7 +132,7 @@ import {
132
132
  restoreCodexHookTrust,
133
133
  vscodePluginDir,
134
134
  vscodePluginMcp
135
- } from "../chunk-UPLV5AJF.js";
135
+ } from "../chunk-ZR7LIQKO.js";
136
136
  import "../chunk-T7E75EKA.js";
137
137
  import "../chunk-ON5JW2HP.js";
138
138
  import {
@@ -8,7 +8,7 @@ import {
8
8
  } from "../chunk-HVDMGDYV.js";
9
9
  import {
10
10
  resolveProviderBinary
11
- } from "../chunk-XQZEIWAV.js";
11
+ } from "../chunk-SOUJG6UY.js";
12
12
  import "../chunk-RIVNNBEK.js";
13
13
  import {
14
14
  SESSION_IDLE_TIMEOUT_MS,
@@ -16,7 +16,7 @@ import {
16
16
  idleDeadlinePassed,
17
17
  startProcessOwnership,
18
18
  withSpawnProcessOwnership
19
- } from "../chunk-ZJYJAD52.js";
19
+ } from "../chunk-6SS74UHS.js";
20
20
  import "../chunk-URNXU3FO.js";
21
21
  import "../chunk-UMMCHS6P.js";
22
22
  import {
@@ -31,24 +31,24 @@ import {
31
31
  isDecisionStopped,
32
32
  isWaitForAnswerResponse,
33
33
  withdrawQuestion
34
- } from "../chunk-MMVCI6DT.js";
34
+ } from "../chunk-AKCE6ZRF.js";
35
35
  import {
36
36
  writeDegraded
37
- } from "../chunk-KB2FTO4O.js";
37
+ } from "../chunk-UXKXGRKG.js";
38
38
  import "../chunk-POFBE6ZY.js";
39
39
  import "../chunk-TJMAXQ5Q.js";
40
40
  import {
41
41
  callMcpTool
42
- } from "../chunk-I4HKMUZQ.js";
43
- import "../chunk-DVW2MYCM.js";
44
- import "../chunk-2SLCHCVN.js";
42
+ } from "../chunk-34EQOFMH.js";
43
+ import "../chunk-6UDK5TY6.js";
44
+ import "../chunk-4CW5EAOI.js";
45
45
  import {
46
46
  getMachineId
47
- } from "../chunk-4A3UQERT.js";
47
+ } from "../chunk-DMU5E6HJ.js";
48
48
  import "../chunk-7QLSKOSU.js";
49
49
  import "../chunk-KZERVKTD.js";
50
50
  import "../chunk-5Y2DY6X4.js";
51
- import "../chunk-UPLV5AJF.js";
51
+ import "../chunk-ZR7LIQKO.js";
52
52
  import "../chunk-T7E75EKA.js";
53
53
  import {
54
54
  getApiKey,
@@ -5,31 +5,31 @@ import {
5
5
  import {
6
6
  defersToNativeMode,
7
7
  reportMachineDenial
8
- } from "../chunk-5DGNEUXK.js";
8
+ } from "../chunk-FBTUF2PH.js";
9
9
  import {
10
10
  triggerAutoUpdate
11
- } from "../chunk-64H5IZZD.js";
11
+ } from "../chunk-VI55VXDH.js";
12
12
  import {
13
13
  isGatingMoment,
14
14
  recordKeylessMoment
15
15
  } from "../chunk-7ITOAMCD.js";
16
16
  import {
17
17
  readHookInput
18
- } from "../chunk-EESPY5DG.js";
18
+ } from "../chunk-E5JGQGLD.js";
19
19
  import {
20
20
  announceSubscriptionRequired,
21
21
  denyReasonFrom,
22
22
  isDeferAnswer
23
23
  } from "../chunk-5OP5MQI7.js";
24
- import "../chunk-DUA5O6X5.js";
24
+ import "../chunk-SD6OLZJX.js";
25
25
  import "../chunk-SGZJ5LYH.js";
26
- import "../chunk-YNCGXHM4.js";
26
+ import "../chunk-ZOKXZ3AS.js";
27
27
  import "../chunk-DLEKCAQL.js";
28
28
  import "../chunk-MYHG7PX2.js";
29
- import "../chunk-XEGVVU5H.js";
30
- import "../chunk-EIGJYCOE.js";
31
- import "../chunk-S2UNQQQS.js";
32
- import "../chunk-HOEB6AKG.js";
29
+ import "../chunk-YOYSXLUB.js";
30
+ import "../chunk-IEXWWAJY.js";
31
+ import "../chunk-YLJ26RR2.js";
32
+ import "../chunk-XH7UNEHO.js";
33
33
  import "../chunk-URNXU3FO.js";
34
34
  import "../chunk-UMMCHS6P.js";
35
35
  import "../chunk-72WOCX22.js";
@@ -77,7 +77,7 @@ import {
77
77
  toPolicyLookup,
78
78
  toPolicyLookups,
79
79
  userScope
80
- } from "../chunk-F6NTWZZC.js";
80
+ } from "../chunk-4DYHBXX4.js";
81
81
  import {
82
82
  DEFAULT_SESSION
83
83
  } from "../chunk-N6IOSZOE.js";
@@ -95,21 +95,21 @@ import {
95
95
  sendNotification,
96
96
  unavailableQuestionUnlessSubscriptionRequired,
97
97
  waitForQuestion
98
- } from "../chunk-MMVCI6DT.js";
98
+ } from "../chunk-AKCE6ZRF.js";
99
99
  import {
100
100
  exitAfterClientReports
101
- } from "../chunk-KB2FTO4O.js";
101
+ } from "../chunk-UXKXGRKG.js";
102
102
  import "../chunk-POFBE6ZY.js";
103
103
  import "../chunk-GMXKITVA.js";
104
104
  import "../chunk-TJMAXQ5Q.js";
105
105
  import {
106
106
  SubscriptionRequiredError
107
- } from "../chunk-I4HKMUZQ.js";
108
- import "../chunk-DVW2MYCM.js";
109
- import "../chunk-2SLCHCVN.js";
107
+ } from "../chunk-34EQOFMH.js";
108
+ import "../chunk-6UDK5TY6.js";
109
+ import "../chunk-4CW5EAOI.js";
110
110
  import {
111
111
  getMachineId
112
- } from "../chunk-4A3UQERT.js";
112
+ } from "../chunk-DMU5E6HJ.js";
113
113
  import "../chunk-7QLSKOSU.js";
114
114
  import {
115
115
  EXIT
@@ -117,7 +117,7 @@ import {
117
117
  import "../chunk-5Y2DY6X4.js";
118
118
  import {
119
119
  canonicalJson
120
- } from "../chunk-UPLV5AJF.js";
120
+ } from "../chunk-ZR7LIQKO.js";
121
121
  import {
122
122
  writeFileAtomic
123
123
  } from "../chunk-T7E75EKA.js";
@@ -764,7 +764,7 @@ var decidePreToolUse = async (input) => {
764
764
  };
765
765
  var repairCodexHoldsQuietly = async () => {
766
766
  try {
767
- const { repairCodexHolds } = await import("../reapply-3UERAKQN.js");
767
+ const { repairCodexHolds } = await import("../reapply-DYOQAVUP.js");
768
768
  repairCodexHolds();
769
769
  } catch {
770
770
  return;
@@ -1,26 +1,26 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  reportEvent
4
- } from "../chunk-F6NTWZZC.js";
4
+ } from "../chunk-4DYHBXX4.js";
5
5
  import "../chunk-N6IOSZOE.js";
6
6
  import "../chunk-VFFHQC7W.js";
7
7
  import {
8
8
  askUser,
9
9
  isDecisionStopped,
10
10
  waitForAnswer
11
- } from "../chunk-MMVCI6DT.js";
12
- import "../chunk-KB2FTO4O.js";
11
+ } from "../chunk-AKCE6ZRF.js";
12
+ import "../chunk-UXKXGRKG.js";
13
13
  import "../chunk-POFBE6ZY.js";
14
- import "../chunk-I4HKMUZQ.js";
15
- import "../chunk-DVW2MYCM.js";
16
- import "../chunk-2SLCHCVN.js";
14
+ import "../chunk-34EQOFMH.js";
15
+ import "../chunk-6UDK5TY6.js";
16
+ import "../chunk-4CW5EAOI.js";
17
17
  import {
18
18
  getMachineId
19
- } from "../chunk-4A3UQERT.js";
19
+ } from "../chunk-DMU5E6HJ.js";
20
20
  import "../chunk-7QLSKOSU.js";
21
21
  import "../chunk-KZERVKTD.js";
22
22
  import "../chunk-5Y2DY6X4.js";
23
- import "../chunk-UPLV5AJF.js";
23
+ import "../chunk-ZR7LIQKO.js";
24
24
  import "../chunk-T7E75EKA.js";
25
25
  import {
26
26
  getApiKey
@@ -1,12 +1,12 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  printKeyCheck
4
- } from "../chunk-NHCUXTEM.js";
4
+ } from "../chunk-VUP5BMOD.js";
5
5
  import {
6
6
  connectDevice,
7
7
  connectExistingApp,
8
8
  printConnectInstructions
9
- } from "../chunk-INSMZNS7.js";
9
+ } from "../chunk-4SJIPHR3.js";
10
10
  import "../chunk-3EGEA4KH.js";
11
11
  import "../chunk-QCGNGEGE.js";
12
12
  import {
@@ -21,12 +21,12 @@ import {
21
21
  import {
22
22
  readKeySource
23
23
  } from "../chunk-TJMAXQ5Q.js";
24
- import "../chunk-I4HKMUZQ.js";
24
+ import "../chunk-34EQOFMH.js";
25
25
  import {
26
26
  checkApiKey
27
- } from "../chunk-DVW2MYCM.js";
28
- import "../chunk-2SLCHCVN.js";
29
- import "../chunk-4A3UQERT.js";
27
+ } from "../chunk-6UDK5TY6.js";
28
+ import "../chunk-4CW5EAOI.js";
29
+ import "../chunk-DMU5E6HJ.js";
30
30
  import {
31
31
  UsageError
32
32
  } from "../chunk-7QLSKOSU.js";
@@ -34,7 +34,7 @@ import {
34
34
  EXIT
35
35
  } from "../chunk-KZERVKTD.js";
36
36
  import "../chunk-5Y2DY6X4.js";
37
- import "../chunk-UPLV5AJF.js";
37
+ import "../chunk-ZR7LIQKO.js";
38
38
  import "../chunk-T7E75EKA.js";
39
39
  import "../chunk-ON5JW2HP.js";
40
40
  import "../chunk-35X5UDML.js";
@@ -1,23 +1,22 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  inspectConfiguredManagedProviders
4
- } from "../chunk-B3UVRGYP.js";
5
- import "../chunk-W2LJ4O3A.js";
4
+ } from "../chunk-CXYKQAL2.js";
5
+ import "../chunk-27A7L4DA.js";
6
6
  import {
7
7
  HEARTBEAT_INTERVAL_MS,
8
8
  sendHeartbeat
9
- } from "../chunk-I3XLHSOC.js";
10
- import "../chunk-644AEX4T.js";
9
+ } from "../chunk-OLYTGVCC.js";
10
+ import "../chunk-EJXEHNB5.js";
11
11
  import {
12
12
  codexBinaryIsBroken,
13
- detectLaunchableProviderCapabilities,
14
13
  detectProviderLiveCapabilities,
15
14
  hasSpawnProvider,
16
15
  launchAdvertisement,
17
16
  launchableProviders,
18
17
  resolveControlPolicy,
19
- resolveProviderBinary
20
- } from "../chunk-XQZEIWAV.js";
18
+ trackProviderInventory
19
+ } from "../chunk-SOUJG6UY.js";
21
20
  import "../chunk-RIVNNBEK.js";
22
21
  import {
23
22
  SESSION_REAP_SILENCE_MS,
@@ -26,15 +25,15 @@ import {
26
25
  listProcessProofs,
27
26
  ownsLiveProcess,
28
27
  silentSpawnedProofs
29
- } from "../chunk-ZJYJAD52.js";
28
+ } from "../chunk-6SS74UHS.js";
30
29
  import {
31
30
  startRegisteredTranscripts
32
- } from "../chunk-DUA5O6X5.js";
31
+ } from "../chunk-SD6OLZJX.js";
33
32
  import "../chunk-SGZJ5LYH.js";
34
- import "../chunk-YNCGXHM4.js";
33
+ import "../chunk-ZOKXZ3AS.js";
35
34
  import "../chunk-DLEKCAQL.js";
36
35
  import "../chunk-MYHG7PX2.js";
37
- import "../chunk-XEGVVU5H.js";
36
+ import "../chunk-YOYSXLUB.js";
38
37
  import {
39
38
  DAEMON_LEASE_RENEW_INTERVAL_MS,
40
39
  acquireDaemonLease,
@@ -51,9 +50,9 @@ import {
51
50
  requestDaemonHandoff,
52
51
  stopDaemonRunning,
53
52
  writeDaemonNeedsLogin
54
- } from "../chunk-EIGJYCOE.js";
55
- import "../chunk-S2UNQQQS.js";
56
- import "../chunk-HOEB6AKG.js";
53
+ } from "../chunk-IEXWWAJY.js";
54
+ import "../chunk-YLJ26RR2.js";
55
+ import "../chunk-XH7UNEHO.js";
57
56
  import "../chunk-URNXU3FO.js";
58
57
  import "../chunk-UMMCHS6P.js";
59
58
  import "../chunk-72WOCX22.js";
@@ -74,7 +73,7 @@ import {
74
73
  } from "../chunk-TJMAXQ5Q.js";
75
74
  import {
76
75
  getMachineId
77
- } from "../chunk-4A3UQERT.js";
76
+ } from "../chunk-DMU5E6HJ.js";
78
77
  import "../chunk-7QLSKOSU.js";
79
78
  import {
80
79
  EXIT
@@ -82,7 +81,7 @@ import {
82
81
  import "../chunk-5Y2DY6X4.js";
83
82
  import {
84
83
  resolveBinary
85
- } from "../chunk-UPLV5AJF.js";
84
+ } from "../chunk-ZR7LIQKO.js";
86
85
  import "../chunk-T7E75EKA.js";
87
86
  import {
88
87
  getApiKey,
@@ -360,7 +359,13 @@ var runSpawnDaemon = async () => {
360
359
  const baseUrl = getBaseUrl();
361
360
  const pusharyBin = resolveBinary("pushary") ?? "pushary";
362
361
  const configuredProviders = inspectConfiguredManagedProviders();
363
- let providerCapabilities = detectLaunchableProviderCapabilities(configuredProviders);
362
+ let describedProviders;
363
+ const inventory = await trackProviderInventory(configuredProviders, (next) => {
364
+ const description = describeLaunchableProviders(next.capabilities);
365
+ if (description !== describedProviders) log(`agents changed: ${description}`);
366
+ describedProviders = description;
367
+ });
368
+ describedProviders = describeLaunchableProviders(inventory.current.capabilities);
364
369
  const siblingEntry = process.argv[1] ? join(dirname(process.argv[1]), "pushary.js") : "";
365
370
  const codexBridgeEntry = process.argv[1] ? join(dirname(process.argv[1]), "pushary-codex-bridge.js") : "pushary-codex-bridge";
366
371
  const geminiBridgeEntry = process.argv[1] ? join(dirname(process.argv[1]), "pushary-gemini-bridge.js") : "pushary-gemini-bridge";
@@ -370,21 +375,25 @@ var runSpawnDaemon = async () => {
370
375
  try {
371
376
  handoff = await requestDaemonHandoff(existing);
372
377
  } catch (err) {
378
+ inventory.stop();
373
379
  stderr(`[pushary] daemon could not request a handoff: ${err instanceof Error ? err.message : String(err)}
374
380
  `);
375
381
  return 1;
376
382
  }
377
383
  if (existing.pid !== null && handoff.pid === existing.pid && handoff.processAlive === true) {
384
+ inventory.stop();
378
385
  stderr("[pushary] daemon could not replace the existing process; run `pushary doctor` for details\n");
379
386
  return 1;
380
387
  }
381
388
  const lifecycle = acquireDaemonLease({ machineId });
382
389
  if (lifecycle.kind === "already-running") {
390
+ inventory.stop();
383
391
  writeHuman(`[pushary] daemon already online as pid ${lifecycle.status.pid ?? "unknown"}
384
392
  `);
385
393
  return 0;
386
394
  }
387
395
  if (lifecycle.kind === "unavailable") {
396
+ inventory.stop();
388
397
  stderr(`[pushary] daemon could not acquire its local lease: ${lifecycle.detail}
389
398
  `);
390
399
  return 1;
@@ -419,7 +428,7 @@ var runSpawnDaemon = async () => {
419
428
  if (!directory.ok) return Promise.reject(new Error(directory.message));
420
429
  const agent = normalizeLaunchAgent(req.agent);
421
430
  if (!agent) return Promise.reject(new Error(`Unsupported agent provider: ${req.agent}`));
422
- const providerBin = resolveProviderBinary(agent);
431
+ const providerBin = inventory.current.binaries[agent];
423
432
  const unavailable = providerLaunchError(req.agent, {
424
433
  claude: agent === "claude" ? providerBin ?? null : null,
425
434
  codex: agent === "codex" ? providerBin ?? null : null,
@@ -723,19 +732,13 @@ var runSpawnDaemon = async () => {
723
732
  if (leaseRenewal) clearInterval(leaseRenewal);
724
733
  if (sessionReaper) clearInterval(sessionReaper);
725
734
  inflight?.abort();
735
+ inventory.stop();
726
736
  try {
727
737
  daemonLease.release();
728
738
  } catch (err) {
729
739
  log(`daemon could not release its local lease: ${errMsg(err)}`);
730
740
  }
731
741
  };
732
- const refreshProviderCapabilities = () => {
733
- const detected = detectLaunchableProviderCapabilities(configuredProviders);
734
- const before = describeLaunchableProviders(providerCapabilities);
735
- const after = describeLaunchableProviders(detected);
736
- providerCapabilities = detected;
737
- if (after !== before) log(`agents changed: ${after}`);
738
- };
739
742
  const beat = async () => {
740
743
  if (stopped) return;
741
744
  if (!daemonLease.isOwner()) {
@@ -745,7 +748,7 @@ var runSpawnDaemon = async () => {
745
748
  const result = await sendHeartbeat(apiKey, {
746
749
  repoKey: basename(process.cwd()),
747
750
  capabilities: [
748
- ...launchAdvertisement(providerCapabilities),
751
+ ...launchAdvertisement(inventory.current.capabilities),
749
752
  STOP_CAPABILITY,
750
753
  STOP_ACK_CAPABILITY
751
754
  ]
@@ -763,7 +766,7 @@ var runSpawnDaemon = async () => {
763
766
  };
764
767
  void beat();
765
768
  heartbeat = setInterval(() => {
766
- refreshProviderCapabilities();
769
+ void inventory.refresh().catch((err) => log(`agent discovery failed: ${errMsg(err)}`));
767
770
  void beat();
768
771
  }, HEARTBEAT_INTERVAL_MS);
769
772
  leaseRenewal = setInterval(() => daemonLease.renew(), DAEMON_LEASE_RENEW_INTERVAL_MS);
@@ -771,7 +774,7 @@ var runSpawnDaemon = async () => {
771
774
  if (daemonLease.shouldYield()) finish();
772
775
  }, VERSION_CHECK_INTERVAL_MS);
773
776
  sessionReaper = setInterval(() => void reapSilentSessions(), SESSION_REAP_INTERVAL_MS);
774
- log(hasSpawnProvider(providerCapabilities) ? `daemon online (pid ${process.pid}): this machine (${machineId}) can now be sent a new session from your phone. Ctrl-C to stop.` : `daemon online (pid ${process.pid}): no supported Claude, Codex, or Gemini CLI was found, so phone-start is unavailable. Ctrl-C to stop.`);
777
+ log(hasSpawnProvider(inventory.current.capabilities) ? `daemon online (pid ${process.pid}): this machine (${machineId}) can now be sent a new session from your phone. Ctrl-C to stop.` : `daemon online (pid ${process.pid}): no supported Claude, Codex, or Gemini CLI was found, so phone-start is unavailable. Ctrl-C to stop.`);
775
778
  timer = setTimeout(tick, 0);
776
779
  const signals = daemonSignals();
777
780
  await new Promise((resolve) => {