@pushary/agent-hooks 1.9.7 → 1.9.8

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 (110) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/README.md +3 -3
  3. package/data/cursor-plugin/README.md +3 -7
  4. package/data/vscode-plugin/README.md +1 -1
  5. package/dist/bin/pushary-bell-hook.js +22 -23
  6. package/dist/bin/pushary-bell.js +9 -9
  7. package/dist/bin/pushary-claude.js +27 -28
  8. package/dist/bin/pushary-clean.js +101 -79
  9. package/dist/bin/pushary-codex-bridge.js +18 -18
  10. package/dist/bin/pushary-codex-hook.js +32 -33
  11. package/dist/bin/pushary-codex.js +13 -13
  12. package/dist/bin/pushary-connect.js +24 -21
  13. package/dist/bin/pushary-cowork.js +5 -5
  14. package/dist/bin/pushary-daemon.js +51 -39
  15. package/dist/bin/pushary-disconnect.js +189 -54
  16. package/dist/bin/pushary-doctor.js +67 -58
  17. package/dist/bin/pushary-elicitation-hook.js +24 -25
  18. package/dist/bin/pushary-gemini-bridge.js +13 -13
  19. package/dist/bin/pushary-gemini-hook.js +29 -30
  20. package/dist/bin/pushary-hook.js +30 -32
  21. package/dist/bin/pushary-login.js +12 -12
  22. package/dist/bin/pushary-logout.js +105 -42
  23. package/dist/bin/pushary-mcp.js +9 -9
  24. package/dist/bin/pushary-mode.js +28 -31
  25. package/dist/bin/pushary-notification-hook.js +26 -28
  26. package/dist/bin/pushary-opencode-hook.js +28 -29
  27. package/dist/bin/pushary-permission-denied-hook.js +30 -32
  28. package/dist/bin/pushary-permission-hook.js +29 -31
  29. package/dist/bin/pushary-post-hook.js +26 -28
  30. package/dist/bin/pushary-prompt-hook.js +26 -28
  31. package/dist/bin/pushary-session-end-hook.js +26 -28
  32. package/dist/bin/pushary-session-start-hook.js +31 -32
  33. package/dist/bin/pushary-setup.js +91 -101
  34. package/dist/bin/pushary-stats.js +5 -5
  35. package/dist/bin/pushary-status.js +34 -18
  36. package/dist/bin/pushary-stop-hook.js +26 -28
  37. package/dist/bin/pushary-stopfailure-hook.js +26 -28
  38. package/dist/bin/pushary-suggestions.js +19 -21
  39. package/dist/bin/pushary-transcript-register.js +18 -19
  40. package/dist/bin/pushary-transcripts.js +7 -7
  41. package/dist/bin/pushary-upgrade.js +55 -25
  42. package/dist/bin/pushary-wait.js +23 -19
  43. package/dist/bin/pushary.js +15 -14
  44. package/dist/{chunk-R3YW55MY.js → chunk-2A53H4S6.js} +17 -15
  45. package/dist/{chunk-4YO4T5FV.js → chunk-2QGYMY7A.js} +83 -3
  46. package/dist/{chunk-MBK7N46B.js → chunk-2QTO5YIT.js} +6 -6
  47. package/dist/{chunk-D6S5EKXA.js → chunk-2VZAALEJ.js} +5 -9
  48. package/dist/chunk-2WXF3QJR.js +49 -0
  49. package/dist/{chunk-JCWZ23MJ.js → chunk-3I6IVOZV.js} +3 -3
  50. package/dist/chunk-3Z3A37WD.js +77 -0
  51. package/dist/{chunk-Z6HPS67T.js → chunk-5QUPKDI5.js} +1 -1
  52. package/dist/{chunk-JWKBDSPF.js → chunk-6TE27XZR.js} +2 -2
  53. package/dist/{chunk-STQRUH3S.js → chunk-7DVNSQWF.js} +59 -15
  54. package/dist/{chunk-QTO6HEZD.js → chunk-7PT35RY2.js} +2 -2
  55. package/dist/{chunk-7OIWWZAD.js → chunk-B64KHETR.js} +3 -3
  56. package/dist/chunk-BEJRK4DF.js +94 -0
  57. package/dist/chunk-BXET3ALR.js +46 -0
  58. package/dist/{chunk-6DJTDHBI.js → chunk-CD47ZFFZ.js} +1 -1
  59. package/dist/{chunk-UFVGSEWH.js → chunk-CKV3UPMU.js} +2 -2
  60. package/dist/{chunk-4FK6RZVJ.js → chunk-CLOSJ4ES.js} +1 -1
  61. package/dist/{chunk-AVNKVF7N.js → chunk-DKMD6AWR.js} +4 -4
  62. package/dist/{chunk-SBLPHUEB.js → chunk-DL7XWKYV.js} +7 -5
  63. package/dist/{chunk-BTQGAXZ3.js → chunk-DPGSLWOS.js} +8 -8
  64. package/dist/{chunk-KYO45G5L.js → chunk-DUZVXBBU.js} +1 -1
  65. package/dist/{chunk-EB4XGVBG.js → chunk-EUW7JL2K.js} +0 -32
  66. package/dist/{chunk-4D2AYNSE.js → chunk-FQ2GORVG.js} +2 -2
  67. package/dist/{chunk-W2KI5KPD.js → chunk-HRULIYDU.js} +2 -2
  68. package/dist/{chunk-QR6VE5ME.js → chunk-I5IJRMNV.js} +58 -8
  69. package/dist/{chunk-T7Y5EADL.js → chunk-I6MJXLMY.js} +2 -2
  70. package/dist/{chunk-N4EUSDKX.js → chunk-IAD2RT4L.js} +14 -14
  71. package/dist/{chunk-H37L7TT3.js → chunk-IHFDPV7C.js} +2 -2
  72. package/dist/{chunk-3GNUXXDZ.js → chunk-IHO3YQAN.js} +2 -2
  73. package/dist/{chunk-JWQZSYCK.js → chunk-KF3UZLYI.js} +1 -1
  74. package/dist/chunk-KFF7G225.js +599 -0
  75. package/dist/{chunk-MZPXVH4A.js → chunk-KHNFLYJO.js} +204 -28
  76. package/dist/{chunk-QFEM7R6T.js → chunk-KRCR2CRQ.js} +9 -9
  77. package/dist/{chunk-VXRXFU6Q.js → chunk-LKLVTG3V.js} +14 -7
  78. package/dist/{chunk-KFKL3FHS.js → chunk-LWOO567I.js} +4 -3
  79. package/dist/{chunk-HPRZJKRO.js → chunk-M6BZZFVQ.js} +1 -1
  80. package/dist/{chunk-X5NXPCIC.js → chunk-MFF3ONG5.js} +16 -2
  81. package/dist/{chunk-H7MMU64M.js → chunk-MGRFDGWU.js} +2 -2
  82. package/dist/{chunk-L76HTPU6.js → chunk-MKTJEXZ3.js} +3 -3
  83. package/dist/{chunk-NIBFSARF.js → chunk-MXHTGVFZ.js} +33 -9
  84. package/dist/{chunk-ADSQDYYG.js → chunk-N4QSPI3B.js} +54 -5
  85. package/dist/{chunk-AQ55ZSSS.js → chunk-NWDG3MSW.js} +1 -1
  86. package/dist/chunk-OP7IHC2I.js +24 -0
  87. package/dist/{chunk-KT5E2RLS.js → chunk-QOLITCIP.js} +1 -1
  88. package/dist/{chunk-JXISQ7DT.js → chunk-TCQ43LSG.js} +3 -3
  89. package/dist/chunk-TCWKTUAE.js +50 -0
  90. package/dist/{chunk-RQGODFQN.js → chunk-V5HPPF3E.js} +1 -1
  91. package/dist/{chunk-7264S5HZ.js → chunk-WG3K4TCH.js} +1 -1
  92. package/dist/{chunk-GKI6LFAV.js → chunk-WS4H76EP.js} +2 -2
  93. package/dist/{chunk-XWAYAO3V.js → chunk-WWOHTTVP.js} +2 -2
  94. package/dist/{chunk-SD3272LS.js → chunk-YIG2R3BJ.js} +9 -7
  95. package/dist/{chunk-ZUTU43FT.js → chunk-ZBHUHJG6.js} +4 -4
  96. package/dist/{chunk-AUUXS44H.js → chunk-ZBK6E2OR.js} +1 -1
  97. package/dist/{chunk-QQ4HBXZC.js → chunk-ZN3C6GBG.js} +84 -673
  98. package/dist/{chunk-CBQACHKY.js → chunk-ZSTSEBG7.js} +1 -1
  99. package/dist/{chunk-3PVDOCFI.js → chunk-ZW3XZLJC.js} +5 -5
  100. package/dist/{global-upgrade-E2HUEB4B.js → global-upgrade-I56HNM23.js} +6 -6
  101. package/dist/{paths-QVTEGNZV.js → paths-AGY43CXS.js} +2 -2
  102. package/dist/reapply-IA5XUKWW.js +57 -0
  103. package/dist/src/index.d.ts +1 -0
  104. package/dist/src/index.js +19 -20
  105. package/dist/{upgrade-lock-JCIDZMHF.js → upgrade-lock-B34TAUKV.js} +3 -3
  106. package/package.json +1 -1
  107. package/dist/chunk-ANEAA37E.js +0 -197
  108. package/dist/chunk-MNWRUGMH.js +0 -86
  109. package/dist/chunk-RQSOEB4S.js +0 -44
  110. package/dist/reapply-5QVKM6LA.js +0 -38
@@ -2,52 +2,64 @@
2
2
  import {
3
3
  describeLastSeen,
4
4
  listMachines
5
- } from "../chunk-MBK7N46B.js";
6
- import "../chunk-T7Y5EADL.js";
5
+ } from "../chunk-2QTO5YIT.js";
6
+ import "../chunk-I6MJXLMY.js";
7
7
  import "../chunk-RIVNNBEK.js";
8
- import "../chunk-VXRXFU6Q.js";
8
+ import "../chunk-LKLVTG3V.js";
9
9
  import "../chunk-XHKBHWLX.js";
10
10
  import "../chunk-6ICPEJY5.js";
11
11
  import {
12
12
  describeReach,
13
13
  fetchChannels,
14
14
  reachVerdict
15
- } from "../chunk-N4EUSDKX.js";
15
+ } from "../chunk-IAD2RT4L.js";
16
16
  import "../chunk-3EGEA4KH.js";
17
17
  import "../chunk-QCGNGEGE.js";
18
+ import {
19
+ SIGNED_OUT_ON_MAC_MESSAGE,
20
+ activeKeyVerdictOf,
21
+ describeSignedOutKey,
22
+ readSignedOutDiagnosis
23
+ } from "../chunk-2WXF3QJR.js";
18
24
  import {
19
25
  createIo
20
26
  } from "../chunk-U4TMAANR.js";
21
27
  import {
22
28
  exitOnHelpFlag
23
- } from "../chunk-UFVGSEWH.js";
29
+ } from "../chunk-CKV3UPMU.js";
24
30
  import {
25
31
  rejectUnknownFlags
26
32
  } from "../chunk-GMXKITVA.js";
27
33
  import {
28
34
  readKeySource
29
- } from "../chunk-ADSQDYYG.js";
30
- import "../chunk-L76HTPU6.js";
35
+ } from "../chunk-N4QSPI3B.js";
36
+ import "../chunk-MKTJEXZ3.js";
31
37
  import {
32
38
  checkApiKey,
33
39
  describeKeyCheck
34
- } from "../chunk-KFKL3FHS.js";
35
- import "../chunk-JXISQ7DT.js";
36
- import "../chunk-KYO45G5L.js";
40
+ } from "../chunk-LWOO567I.js";
41
+ import "../chunk-TCQ43LSG.js";
42
+ import "../chunk-DUZVXBBU.js";
37
43
  import {
38
44
  UsageError
39
45
  } from "../chunk-7QLSKOSU.js";
40
46
  import {
41
47
  EXIT
42
48
  } from "../chunk-KZERVKTD.js";
43
- import "../chunk-4D2AYNSE.js";
44
- import "../chunk-ZUTU43FT.js";
49
+ import "../chunk-FQ2GORVG.js";
50
+ import "../chunk-ZBHUHJG6.js";
45
51
  import "../chunk-T7E75EKA.js";
46
- import "../chunk-Z6HPS67T.js";
47
- import "../chunk-STQRUH3S.js";
48
- import "../chunk-QR6VE5ME.js";
52
+ import "../chunk-5QUPKDI5.js";
53
+ import "../chunk-7DVNSQWF.js";
54
+ import "../chunk-I5IJRMNV.js";
49
55
 
50
56
  // src/status.ts
57
+ var signedOutReport = (facts, lines) => {
58
+ const signedOut = facts.signedOut;
59
+ if (signedOut?.kind !== "signed_out_on_mac") return null;
60
+ lines.push({ label: "Server", value: "key signed out on this Mac", ok: false });
61
+ return { lines, headline: SIGNED_OUT_ON_MAC_MESSAGE, next: [...describeSignedOutKey(signedOut)], exitCode: EXIT.UNAUTHENTICATED };
62
+ };
51
63
  var keySourceLine = (source) => {
52
64
  if (source.kind === "none") {
53
65
  return { label: "Key", value: "none found", ok: false };
@@ -86,6 +98,8 @@ var buildStatusReport = (facts) => {
86
98
  });
87
99
  }
88
100
  if (facts.source.kind === "none") {
101
+ const signedOut = signedOutReport(facts, lines);
102
+ if (signedOut) return signedOut;
89
103
  return {
90
104
  lines,
91
105
  headline: "Not set up on this machine.",
@@ -95,6 +109,8 @@ var buildStatusReport = (facts) => {
95
109
  }
96
110
  const check = facts.keyCheck;
97
111
  if (check && check.kind !== "ok") {
112
+ const signedOut = check.kind === "rejected" ? signedOutReport(facts, lines) : null;
113
+ if (signedOut) return signedOut;
98
114
  const report = describeKeyCheck(check);
99
115
  lines.push({ label: "Server", value: report.message, ok: check.kind === "unreachable" ? null : false });
100
116
  return { lines, headline: report.message, next: [...report.next], exitCode: report.exitCode };
@@ -148,7 +164,7 @@ var buildStatusReport = (facts) => {
148
164
  return {
149
165
  lines,
150
166
  headline: verdict.kind === "nobody" ? "Configured, but no device can receive an approval." : verdict.kind === "others" ? "Configured, but the only devices here are your teammates'." : "Configured, and nothing proves an approval reaches you.",
151
- next: verdict.kind === "nobody" ? ["Run `pushary connect` to add your phone, or install the Pushary app."] : ["Run `pushary connect` to add your own phone.", "Or `pushary doctor --roundtrip` to prove one of these is yours."],
167
+ next: verdict.kind === "nobody" ? ["Run `pushary pair` to pair your phone, or install the Pushary app."] : ["Run `pushary pair` to pair your own phone.", "Or `pushary doctor --roundtrip` to prove one of these is yours."],
152
168
  exitCode: EXIT.NO_DEVICE
153
169
  };
154
170
  }
@@ -156,7 +172,7 @@ var buildStatusReport = (facts) => {
156
172
  return {
157
173
  lines,
158
174
  headline: "Configured, but nothing in your pocket can receive an approval.",
159
- next: ["Run `pushary connect` and connect your phone, or install the Pushary app."],
175
+ next: ["Run `pushary pair` to pair your phone, or install the Pushary app."],
160
176
  exitCode: EXIT.NO_DEVICE
161
177
  };
162
178
  }
@@ -208,7 +224,7 @@ var main = async () => {
208
224
  if (keyCheck.kind === "ok") channels = await fetchChannels(source.key);
209
225
  }
210
226
  const machines = devices && keyCheck?.kind === "ok" ? await listMachines(source.key) : null;
211
- const facts = { source, keyCheck, channels };
227
+ const facts = { source, keyCheck, channels, signedOut: readSignedOutDiagnosis(source.key, activeKeyVerdictOf(keyCheck)) };
212
228
  const report = buildStatusReport(facts);
213
229
  if (json) {
214
230
  const payload = statusJson(facts, report);
@@ -2,49 +2,47 @@
2
2
  import {
3
3
  activeHookSource,
4
4
  activeIdentity
5
- } from "../chunk-MZPXVH4A.js";
6
- import "../chunk-ANEAA37E.js";
5
+ } from "../chunk-KHNFLYJO.js";
7
6
  import {
8
7
  readHookInput
9
- } from "../chunk-XWAYAO3V.js";
10
- import "../chunk-BTQGAXZ3.js";
8
+ } from "../chunk-WWOHTTVP.js";
9
+ import "../chunk-DPGSLWOS.js";
11
10
  import "../chunk-SGZJ5LYH.js";
12
- import "../chunk-SD3272LS.js";
13
- import "../chunk-SBLPHUEB.js";
14
- import "../chunk-MNWRUGMH.js";
15
- import "../chunk-4YO4T5FV.js";
16
- import "../chunk-VXRXFU6Q.js";
17
- import "../chunk-JCWZ23MJ.js";
18
- import "../chunk-7264S5HZ.js";
19
- import "../chunk-AUUXS44H.js";
20
- import "../chunk-4FK6RZVJ.js";
21
- import "../chunk-HPRZJKRO.js";
11
+ import "../chunk-YIG2R3BJ.js";
12
+ import "../chunk-DL7XWKYV.js";
13
+ import "../chunk-LKLVTG3V.js";
14
+ import "../chunk-2QGYMY7A.js";
15
+ import "../chunk-3I6IVOZV.js";
16
+ import "../chunk-WG3K4TCH.js";
17
+ import "../chunk-ZBK6E2OR.js";
18
+ import "../chunk-CLOSJ4ES.js";
19
+ import "../chunk-M6BZZFVQ.js";
22
20
  import "../chunk-XHKBHWLX.js";
23
21
  import "../chunk-6ICPEJY5.js";
24
22
  import {
25
23
  handleStop,
26
24
  handleSubagentStop,
27
25
  isSubagentStop
28
- } from "../chunk-QFEM7R6T.js";
26
+ } from "../chunk-KRCR2CRQ.js";
29
27
  import "../chunk-N6IOSZOE.js";
30
- import "../chunk-6DJTDHBI.js";
31
- import "../chunk-D6S5EKXA.js";
32
- import "../chunk-AVNKVF7N.js";
28
+ import "../chunk-CD47ZFFZ.js";
29
+ import "../chunk-2VZAALEJ.js";
30
+ import "../chunk-DKMD6AWR.js";
33
31
  import "../chunk-POFBE6ZY.js";
34
32
  import "../chunk-GMXKITVA.js";
35
- import "../chunk-ADSQDYYG.js";
36
- import "../chunk-L76HTPU6.js";
37
- import "../chunk-KFKL3FHS.js";
38
- import "../chunk-JXISQ7DT.js";
39
- import "../chunk-KYO45G5L.js";
33
+ import "../chunk-N4QSPI3B.js";
34
+ import "../chunk-MKTJEXZ3.js";
35
+ import "../chunk-LWOO567I.js";
36
+ import "../chunk-TCQ43LSG.js";
37
+ import "../chunk-DUZVXBBU.js";
40
38
  import "../chunk-7QLSKOSU.js";
41
39
  import "../chunk-KZERVKTD.js";
42
- import "../chunk-4D2AYNSE.js";
43
- import "../chunk-ZUTU43FT.js";
40
+ import "../chunk-FQ2GORVG.js";
41
+ import "../chunk-ZBHUHJG6.js";
44
42
  import "../chunk-T7E75EKA.js";
45
- import "../chunk-Z6HPS67T.js";
46
- import "../chunk-STQRUH3S.js";
47
- import "../chunk-QR6VE5ME.js";
43
+ import "../chunk-5QUPKDI5.js";
44
+ import "../chunk-7DVNSQWF.js";
45
+ import "../chunk-I5IJRMNV.js";
48
46
 
49
47
  // bin/pushary-stop-hook.ts
50
48
  var AGENT = activeIdentity(process.argv);
@@ -2,47 +2,45 @@
2
2
  import {
3
3
  activeHookSource,
4
4
  activeIdentity
5
- } from "../chunk-MZPXVH4A.js";
6
- import "../chunk-ANEAA37E.js";
5
+ } from "../chunk-KHNFLYJO.js";
7
6
  import {
8
7
  readHookInput
9
- } from "../chunk-XWAYAO3V.js";
10
- import "../chunk-BTQGAXZ3.js";
8
+ } from "../chunk-WWOHTTVP.js";
9
+ import "../chunk-DPGSLWOS.js";
11
10
  import "../chunk-SGZJ5LYH.js";
12
- import "../chunk-SD3272LS.js";
13
- import "../chunk-SBLPHUEB.js";
14
- import "../chunk-MNWRUGMH.js";
15
- import "../chunk-4YO4T5FV.js";
16
- import "../chunk-VXRXFU6Q.js";
17
- import "../chunk-JCWZ23MJ.js";
18
- import "../chunk-7264S5HZ.js";
19
- import "../chunk-AUUXS44H.js";
20
- import "../chunk-4FK6RZVJ.js";
21
- import "../chunk-HPRZJKRO.js";
11
+ import "../chunk-YIG2R3BJ.js";
12
+ import "../chunk-DL7XWKYV.js";
13
+ import "../chunk-LKLVTG3V.js";
14
+ import "../chunk-2QGYMY7A.js";
15
+ import "../chunk-3I6IVOZV.js";
16
+ import "../chunk-WG3K4TCH.js";
17
+ import "../chunk-ZBK6E2OR.js";
18
+ import "../chunk-CLOSJ4ES.js";
19
+ import "../chunk-M6BZZFVQ.js";
22
20
  import "../chunk-XHKBHWLX.js";
23
21
  import "../chunk-6ICPEJY5.js";
24
22
  import {
25
23
  handleStopFailure
26
- } from "../chunk-QFEM7R6T.js";
24
+ } from "../chunk-KRCR2CRQ.js";
27
25
  import "../chunk-N6IOSZOE.js";
28
- import "../chunk-6DJTDHBI.js";
29
- import "../chunk-D6S5EKXA.js";
30
- import "../chunk-AVNKVF7N.js";
26
+ import "../chunk-CD47ZFFZ.js";
27
+ import "../chunk-2VZAALEJ.js";
28
+ import "../chunk-DKMD6AWR.js";
31
29
  import "../chunk-POFBE6ZY.js";
32
30
  import "../chunk-GMXKITVA.js";
33
- import "../chunk-ADSQDYYG.js";
34
- import "../chunk-L76HTPU6.js";
35
- import "../chunk-KFKL3FHS.js";
36
- import "../chunk-JXISQ7DT.js";
37
- import "../chunk-KYO45G5L.js";
31
+ import "../chunk-N4QSPI3B.js";
32
+ import "../chunk-MKTJEXZ3.js";
33
+ import "../chunk-LWOO567I.js";
34
+ import "../chunk-TCQ43LSG.js";
35
+ import "../chunk-DUZVXBBU.js";
38
36
  import "../chunk-7QLSKOSU.js";
39
37
  import "../chunk-KZERVKTD.js";
40
- import "../chunk-4D2AYNSE.js";
41
- import "../chunk-ZUTU43FT.js";
38
+ import "../chunk-FQ2GORVG.js";
39
+ import "../chunk-ZBHUHJG6.js";
42
40
  import "../chunk-T7E75EKA.js";
43
- import "../chunk-Z6HPS67T.js";
44
- import "../chunk-STQRUH3S.js";
45
- import "../chunk-QR6VE5ME.js";
41
+ import "../chunk-5QUPKDI5.js";
42
+ import "../chunk-7DVNSQWF.js";
43
+ import "../chunk-I5IJRMNV.js";
46
44
 
47
45
  // bin/pushary-stopfailure-hook.ts
48
46
  var AGENT = activeIdentity(process.argv);
@@ -1,37 +1,40 @@
1
1
  #!/usr/bin/env node
2
+ import {
3
+ exitOnFailedSettingsRequest
4
+ } from "../chunk-BEJRK4DF.js";
5
+ import "../chunk-2WXF3QJR.js";
2
6
  import {
3
7
  createIo
4
8
  } from "../chunk-U4TMAANR.js";
5
9
  import {
6
10
  exitOnHelpFlag
7
- } from "../chunk-UFVGSEWH.js";
11
+ } from "../chunk-CKV3UPMU.js";
8
12
  import {
9
13
  rejectUnknownFlags
10
14
  } from "../chunk-GMXKITVA.js";
15
+ import "../chunk-N4QSPI3B.js";
16
+ import "../chunk-LWOO567I.js";
17
+ import "../chunk-TCQ43LSG.js";
18
+ import "../chunk-DUZVXBBU.js";
11
19
  import {
12
20
  UsageError
13
21
  } from "../chunk-7QLSKOSU.js";
14
22
  import {
15
23
  EXIT
16
24
  } from "../chunk-KZERVKTD.js";
25
+ import "../chunk-FQ2GORVG.js";
26
+ import "../chunk-ZBHUHJG6.js";
27
+ import "../chunk-T7E75EKA.js";
17
28
  import {
18
29
  getApiKey,
19
30
  getBaseUrl
20
- } from "../chunk-Z6HPS67T.js";
21
- import "../chunk-STQRUH3S.js";
22
- import "../chunk-QR6VE5ME.js";
31
+ } from "../chunk-5QUPKDI5.js";
32
+ import "../chunk-7DVNSQWF.js";
33
+ import "../chunk-I5IJRMNV.js";
23
34
 
24
35
  // bin/pushary-suggestions.ts
25
36
  exitOnHelpFlag("suggestions");
26
- var { dim, green, cyan, red } = createIo();
27
- var errorMessage = async (res) => {
28
- try {
29
- const body = await res.json();
30
- return body.error ?? `HTTP ${res.status}`;
31
- } catch {
32
- return `HTTP ${res.status}`;
33
- }
34
- };
37
+ var { dim, green, cyan } = createIo();
35
38
  {
36
39
  const raw = process.argv.slice(2);
37
40
  const positional = raw[0] === "suggestions" ? raw.slice(1) : raw;
@@ -46,6 +49,7 @@ var errorMessage = async (res) => {
46
49
  var main = async () => {
47
50
  const apiKey = getApiKey();
48
51
  const baseUrl = getBaseUrl();
52
+ const settings = { request: "suggestions", apiKey, baseUrl };
49
53
  const headers = { Authorization: `Bearer ${apiKey}`, "Content-Type": "application/json" };
50
54
  const rest = process.argv.slice(2);
51
55
  const args = rest[0] === "suggestions" ? rest.slice(1) : rest;
@@ -61,18 +65,12 @@ var main = async () => {
61
65
  headers,
62
66
  body: JSON.stringify({ id })
63
67
  });
64
- if (!res2.ok) {
65
- console.error(` ${red("\u2717")} ${await errorMessage(res2)}`);
66
- process.exit(1);
67
- }
68
+ if (!res2.ok) await exitOnFailedSettingsRequest(res2, settings);
68
69
  console.log(` ${green("\u2713")} Accepted. The rule is live now; your agents will pick it up on their next check.`);
69
70
  return;
70
71
  }
71
72
  const res = await fetch(`${baseUrl}/api/mcp/suggestions`, { headers });
72
- if (!res.ok) {
73
- console.error(` ${red("\u2717")} ${await errorMessage(res)}`);
74
- process.exit(1);
75
- }
73
+ if (!res.ok) await exitOnFailedSettingsRequest(res, settings);
76
74
  const { suggestions } = await res.json();
77
75
  if (suggestions.length === 0) {
78
76
  console.log(` ${dim("No pending suggestions. Keep approving; a rule is offered once a pattern is earned.")}`);
@@ -1,32 +1,31 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  registerTranscript
4
- } from "../chunk-BTQGAXZ3.js";
4
+ } from "../chunk-DPGSLWOS.js";
5
5
  import "../chunk-SGZJ5LYH.js";
6
- import "../chunk-SD3272LS.js";
7
- import "../chunk-SBLPHUEB.js";
8
- import "../chunk-MNWRUGMH.js";
9
- import "../chunk-4YO4T5FV.js";
10
- import "../chunk-VXRXFU6Q.js";
11
- import "../chunk-JCWZ23MJ.js";
12
- import "../chunk-7264S5HZ.js";
13
- import "../chunk-AUUXS44H.js";
14
- import "../chunk-4FK6RZVJ.js";
15
- import "../chunk-HPRZJKRO.js";
6
+ import "../chunk-YIG2R3BJ.js";
7
+ import "../chunk-DL7XWKYV.js";
8
+ import "../chunk-LKLVTG3V.js";
9
+ import "../chunk-2QGYMY7A.js";
10
+ import "../chunk-3I6IVOZV.js";
11
+ import "../chunk-WG3K4TCH.js";
12
+ import "../chunk-ZBK6E2OR.js";
13
+ import "../chunk-CLOSJ4ES.js";
14
+ import "../chunk-M6BZZFVQ.js";
16
15
  import "../chunk-XHKBHWLX.js";
17
16
  import "../chunk-6ICPEJY5.js";
18
- import "../chunk-6DJTDHBI.js";
17
+ import "../chunk-CD47ZFFZ.js";
19
18
  import "../chunk-GMXKITVA.js";
20
- import "../chunk-ADSQDYYG.js";
21
- import "../chunk-KYO45G5L.js";
19
+ import "../chunk-N4QSPI3B.js";
20
+ import "../chunk-DUZVXBBU.js";
22
21
  import "../chunk-7QLSKOSU.js";
23
22
  import "../chunk-KZERVKTD.js";
24
- import "../chunk-4D2AYNSE.js";
25
- import "../chunk-ZUTU43FT.js";
23
+ import "../chunk-FQ2GORVG.js";
24
+ import "../chunk-ZBHUHJG6.js";
26
25
  import "../chunk-T7E75EKA.js";
27
- import "../chunk-Z6HPS67T.js";
28
- import "../chunk-STQRUH3S.js";
29
- import "../chunk-QR6VE5ME.js";
26
+ import "../chunk-5QUPKDI5.js";
27
+ import "../chunk-7DVNSQWF.js";
28
+ import "../chunk-I5IJRMNV.js";
30
29
 
31
30
  // bin/pushary-transcript-register.ts
32
31
  var raw = "";
@@ -6,17 +6,17 @@ import {
6
6
  } from "../chunk-SGZJ5LYH.js";
7
7
  import {
8
8
  transcriptsEnabled
9
- } from "../chunk-HPRZJKRO.js";
9
+ } from "../chunk-M6BZZFVQ.js";
10
10
  import {
11
11
  exitOnHelpFlag
12
- } from "../chunk-UFVGSEWH.js";
13
- import "../chunk-ADSQDYYG.js";
12
+ } from "../chunk-CKV3UPMU.js";
13
+ import "../chunk-N4QSPI3B.js";
14
14
  import "../chunk-KZERVKTD.js";
15
- import "../chunk-4D2AYNSE.js";
15
+ import "../chunk-FQ2GORVG.js";
16
16
  import "../chunk-T7E75EKA.js";
17
- import "../chunk-Z6HPS67T.js";
18
- import "../chunk-STQRUH3S.js";
19
- import "../chunk-QR6VE5ME.js";
17
+ import "../chunk-5QUPKDI5.js";
18
+ import "../chunk-7DVNSQWF.js";
19
+ import "../chunk-I5IJRMNV.js";
20
20
 
21
21
  // bin/pushary-transcripts.ts
22
22
  exitOnHelpFlag("transcripts");
@@ -9,29 +9,33 @@ import {
9
9
  upgradeFinishOutcome,
10
10
  upgradeInstalledPackage,
11
11
  withUpgradeLock
12
- } from "../chunk-3PVDOCFI.js";
12
+ } from "../chunk-ZW3XZLJC.js";
13
13
  import {
14
14
  installWithUpgradeLock
15
- } from "../chunk-RQGODFQN.js";
15
+ } from "../chunk-V5HPPF3E.js";
16
16
  import {
17
17
  ensureCodexTrustAfterReapply,
18
18
  reapplyAllAgents
19
- } from "../chunk-NIBFSARF.js";
19
+ } from "../chunk-MXHTGVFZ.js";
20
+ import "../chunk-3Z3A37WD.js";
20
21
  import {
21
22
  describeCodexTrustConfirmation
22
- } from "../chunk-JWKBDSPF.js";
23
- import "../chunk-H7MMU64M.js";
23
+ } from "../chunk-6TE27XZR.js";
24
+ import "../chunk-MGRFDGWU.js";
24
25
  import {
25
26
  waitForMachineReadiness
26
- } from "../chunk-MBK7N46B.js";
27
- import "../chunk-X5NXPCIC.js";
28
- import "../chunk-ANEAA37E.js";
27
+ } from "../chunk-2QTO5YIT.js";
28
+ import {
29
+ appAgentKey
30
+ } from "../chunk-OP7IHC2I.js";
31
+ import "../chunk-MFF3ONG5.js";
32
+ import "../chunk-KHNFLYJO.js";
29
33
  import {
30
34
  detectProviderLiveCapabilities,
31
35
  expectedLaunchCapabilities,
32
36
  hasSpawnProvider,
33
37
  resolveControlPolicy
34
- } from "../chunk-T7Y5EADL.js";
38
+ } from "../chunk-I6MJXLMY.js";
35
39
  import "../chunk-RIVNNBEK.js";
36
40
  import {
37
41
  AUTO_UPDATE_DISABLE_ENV,
@@ -42,8 +46,9 @@ import {
42
46
  parseAutoUpdateFlag,
43
47
  readAutoUpdateState,
44
48
  updateAutoUpdateState
45
- } from "../chunk-QTO6HEZD.js";
46
- import "../chunk-4YO4T5FV.js";
49
+ } from "../chunk-7PT35RY2.js";
50
+ import "../chunk-YIG2R3BJ.js";
51
+ import "../chunk-DL7XWKYV.js";
47
52
  import {
48
53
  DAEMON_COLD_START_TIMEOUT_MS,
49
54
  daemonHasRemoteProof,
@@ -55,45 +60,60 @@ import {
55
60
  replaceDaemonService,
56
61
  stopDaemonService,
57
62
  waitForDaemonRemoteProof
58
- } from "../chunk-VXRXFU6Q.js";
59
- import "../chunk-JCWZ23MJ.js";
63
+ } from "../chunk-LKLVTG3V.js";
64
+ import "../chunk-2QGYMY7A.js";
65
+ import "../chunk-3I6IVOZV.js";
66
+ import "../chunk-WG3K4TCH.js";
60
67
  import "../chunk-XHKBHWLX.js";
61
68
  import "../chunk-6ICPEJY5.js";
62
- import "../chunk-6DJTDHBI.js";
69
+ import "../chunk-KRCR2CRQ.js";
70
+ import "../chunk-N6IOSZOE.js";
71
+ import "../chunk-CD47ZFFZ.js";
72
+ import "../chunk-2VZAALEJ.js";
73
+ import "../chunk-DKMD6AWR.js";
63
74
  import "../chunk-POFBE6ZY.js";
64
75
  import {
65
76
  exitOnHelpFlag
66
- } from "../chunk-UFVGSEWH.js";
77
+ } from "../chunk-CKV3UPMU.js";
78
+ import "../chunk-GMXKITVA.js";
67
79
  import {
68
- readControlMode
69
- } from "../chunk-ADSQDYYG.js";
70
- import "../chunk-KYO45G5L.js";
80
+ readControlMode,
81
+ recordMacAppKeyPrefix
82
+ } from "../chunk-N4QSPI3B.js";
83
+ import "../chunk-MKTJEXZ3.js";
84
+ import "../chunk-LWOO567I.js";
85
+ import "../chunk-TCQ43LSG.js";
86
+ import "../chunk-DUZVXBBU.js";
87
+ import "../chunk-7QLSKOSU.js";
71
88
  import {
72
89
  EXIT
73
90
  } from "../chunk-KZERVKTD.js";
74
- import "../chunk-4D2AYNSE.js";
91
+ import "../chunk-FQ2GORVG.js";
75
92
  import {
76
93
  LATEST_TAG,
77
94
  autoUpdateState,
95
+ bridgeAgentKey,
78
96
  claudeJson,
79
97
  codexConfigToml,
80
98
  cursorPluginDir,
81
99
  fetchLatestPublishedVersion,
82
100
  geminiSettings,
83
101
  vscodePluginDir
84
- } from "../chunk-ZUTU43FT.js";
85
- import "../chunk-T7E75EKA.js";
102
+ } from "../chunk-ZBHUHJG6.js";
103
+ import {
104
+ readJsonSafe
105
+ } from "../chunk-T7E75EKA.js";
86
106
  import {
87
107
  getApiKey
88
- } from "../chunk-Z6HPS67T.js";
108
+ } from "../chunk-5QUPKDI5.js";
89
109
  import {
90
110
  NPX_LATEST_COMMAND
91
- } from "../chunk-STQRUH3S.js";
111
+ } from "../chunk-7DVNSQWF.js";
92
112
  import {
93
113
  CANONICAL_PACKAGE,
94
114
  LEGACY_PACKAGE,
95
115
  getPackageVersion
96
- } from "../chunk-QR6VE5ME.js";
116
+ } from "../chunk-I5IJRMNV.js";
97
117
 
98
118
  // bin/pushary-upgrade.ts
99
119
  import { existsSync } from "fs";
@@ -142,9 +162,13 @@ var finishUpgrade = async () => {
142
162
  } catch {
143
163
  apiKey = void 0;
144
164
  }
165
+ const bridgeAgentKey2 = readJsonSafe(bridgeAgentKey());
166
+ const macAppKey = bridgeAgentKey2.kind === "ok" ? appAgentKey(bridgeAgentKey2.value) : null;
167
+ if (macAppKey) recordMacAppKeyPrefix(macAppKey);
145
168
  const inspectedAgents = reapplyAllAgents(apiKey);
146
169
  const codexTrust = await ensureCodexTrustAfterReapply(inspectedAgents);
147
170
  const refreshed = inspectedAgents.filter((agent) => agent.result.reapplied);
171
+ const keptForApp = inspectedAgents.filter((agent) => agent.heldBy === "app");
148
172
  const failedRefreshes = inspectedAgents.filter((agent) => agent.result.failed);
149
173
  const configuredControlProviders = inspectedAgents.filter((agent) => agent.result.configured && (agent.id === "claude" || agent.id === "codex" || agent.id === "gemini")).map((agent) => agent.id);
150
174
  const controlMode = readControlMode();
@@ -191,9 +215,14 @@ var finishUpgrade = async () => {
191
215
  console.log();
192
216
  console.log("No key was readable here, so MCP entries kept the key they already had.");
193
217
  }
194
- } else if (failedRefreshes.length === 0) {
218
+ } else if (failedRefreshes.length === 0 && keptForApp.length === 0) {
195
219
  console.log("No agent config on this machine needed refreshing.");
196
220
  }
221
+ if (keptForApp.length > 0) {
222
+ if (refreshed.length > 0) console.log();
223
+ console.log(KEPT_FOR_APP_HEADING);
224
+ for (const agent of keptForApp) console.log(` ${agent.label}`);
225
+ }
197
226
  if (codexTrust) {
198
227
  console.log();
199
228
  console.log(describeCodexTrustConfirmation(codexTrust));
@@ -212,6 +241,7 @@ var finishUpgrade = async () => {
212
241
  console.log(controlPolicy === "disabled" ? "Done. Your hooks use the new global install; phone-start remains disabled." : controlPolicy === "unsupported" || controlPolicy === "preserve-absent" ? "Done. Your hooks use the new global install; no background service was added." : "Done. Your hooks and background service use the new global install.");
213
242
  console.log("Verify with: pushary doctor");
214
243
  };
244
+ var KEPT_FOR_APP_HEADING = "Kept for the Pushary Mac app, which owns these agents. Nothing in their config was changed:";
215
245
  var AUTO_UPDATE_ON_MESSAGE = "Automatic updates are on. Pushary checks for a new version once a day, when an agent session starts.";
216
246
  var AUTO_UPDATE_OFF_MESSAGE = "Automatic updates are off. Turn them back on with: pushary upgrade --auto=on";
217
247
  var AUTO_UPDATE_RUN_MESSAGES = {