pushary 1.9.59 → 1.9.60

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 (126) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/data/cursor-plugin/.cursor-plugin/plugin.json +5 -1
  3. package/data/cursor-plugin/CHANGELOG.md +4 -0
  4. package/dist/{api-UVJGNZIF.js → api-ASQA5PZM.js} +11 -11
  5. package/dist/bin/pushary-bell-hook.js +29 -29
  6. package/dist/bin/pushary-bell.js +12 -12
  7. package/dist/bin/pushary-claude.js +31 -30
  8. package/dist/bin/pushary-clean.js +58 -53
  9. package/dist/bin/pushary-codex-bridge.js +22 -22
  10. package/dist/bin/pushary-codex-hook.js +34 -34
  11. package/dist/bin/pushary-codex-session.js +8 -8
  12. package/dist/bin/pushary-codex.js +15 -15
  13. package/dist/bin/pushary-connect.js +29 -29
  14. package/dist/bin/pushary-cowork.js +7 -7
  15. package/dist/bin/pushary-daemon.js +39 -39
  16. package/dist/bin/pushary-disconnect.js +42 -29
  17. package/dist/bin/pushary-doctor.js +51 -47
  18. package/dist/bin/pushary-elicitation-hook.js +29 -29
  19. package/dist/bin/pushary-gemini-bridge.js +15 -15
  20. package/dist/bin/pushary-gemini-hook.js +31 -31
  21. package/dist/bin/pushary-hook.js +33 -33
  22. package/dist/bin/pushary-login.js +22 -19
  23. package/dist/bin/pushary-logout.js +36 -31
  24. package/dist/bin/pushary-mcp.js +12 -12
  25. package/dist/bin/pushary-mode.js +41 -55
  26. package/dist/bin/pushary-notification-hook.js +28 -28
  27. package/dist/bin/pushary-opencode-hook.js +30 -30
  28. package/dist/bin/pushary-permission-denied-hook.js +33 -33
  29. package/dist/bin/pushary-permission-hook.js +32 -32
  30. package/dist/bin/pushary-post-hook.js +28 -28
  31. package/dist/bin/pushary-prompt-hook.js +28 -28
  32. package/dist/bin/pushary-session-end-hook.js +28 -28
  33. package/dist/bin/pushary-session-start-hook.js +35 -35
  34. package/dist/bin/pushary-setup.js +49 -46
  35. package/dist/bin/pushary-stats.js +5 -5
  36. package/dist/bin/pushary-status.js +41 -36
  37. package/dist/bin/pushary-stop-hook.js +28 -28
  38. package/dist/bin/pushary-stopfailure-hook.js +28 -28
  39. package/dist/bin/pushary-suggestions.js +33 -39
  40. package/dist/bin/pushary-transcript-register.js +20 -20
  41. package/dist/bin/pushary-transcripts.js +33 -20
  42. package/dist/bin/pushary-upgrade.js +71 -50
  43. package/dist/bin/pushary-wait.js +36 -42
  44. package/dist/bin/pushary.js +8 -8
  45. package/dist/{chunk-PVANKDWM.js → chunk-2AELPDMT.js} +1 -1
  46. package/dist/{chunk-US3IT6ZC.js → chunk-2QREHU4O.js} +11 -4
  47. package/dist/{chunk-W47WL6JY.js → chunk-33OOEVPG.js} +1 -1
  48. package/dist/{chunk-AS4Z6KS4.js → chunk-4MUFZU2G.js} +1 -1
  49. package/dist/{chunk-JAKBCKEB.js → chunk-4MWRR5IT.js} +8 -7
  50. package/dist/{chunk-TCH5UCPR.js → chunk-4PZXI7WU.js} +2 -2
  51. package/dist/{chunk-IBXHVYN2.js → chunk-56JCQQLS.js} +2 -2
  52. package/dist/{chunk-5BNXJTOZ.js → chunk-5RU35K57.js} +3 -12
  53. package/dist/{chunk-T65RIQK2.js → chunk-625DZLT5.js} +6 -6
  54. package/dist/{chunk-5PP4455M.js → chunk-6LOQE4J4.js} +3 -3
  55. package/dist/{chunk-KQHY6L3X.js → chunk-6MC2XXFD.js} +4 -4
  56. package/dist/{chunk-KZCYHWDF.js → chunk-6MJWYYAS.js} +62 -49
  57. package/dist/chunk-7BHI3PZN.js +41 -0
  58. package/dist/{chunk-D6CXQIXO.js → chunk-7JXJJNQ5.js} +1 -1
  59. package/dist/{chunk-MSU3VKGJ.js → chunk-7WFRY6OL.js} +2 -2
  60. package/dist/{chunk-AY32RSUC.js → chunk-ADR3KHOC.js} +2 -2
  61. package/dist/{chunk-MMLIQDTG.js → chunk-ATKN4BJT.js} +1 -1
  62. package/dist/{chunk-762CDAJJ.js → chunk-AXJLJJ3M.js} +7 -0
  63. package/dist/{chunk-4XXZUFWN.js → chunk-BG4Y64FW.js} +1 -1
  64. package/dist/{chunk-X4ES7QBT.js → chunk-CDQHQAS7.js} +9 -7
  65. package/dist/{chunk-2WMZDKPM.js → chunk-CEQ2AZH4.js} +13 -13
  66. package/dist/{chunk-DK35M4TH.js → chunk-CSOROFJY.js} +5 -5
  67. package/dist/{chunk-2FVP7WRP.js → chunk-DJ7EZIQA.js} +3 -3
  68. package/dist/{chunk-V3PDUDPB.js → chunk-ELLJPP6O.js} +2 -2
  69. package/dist/{chunk-BMPZ5HVJ.js → chunk-ERK24P76.js} +11 -1
  70. package/dist/{chunk-WW24SG27.js → chunk-EZHY65QA.js} +21 -11
  71. package/dist/{chunk-3NROUNIS.js → chunk-FDWMG6NY.js} +2 -2
  72. package/dist/{chunk-RQDP2SJY.js → chunk-FUZ5VYWD.js} +1 -1
  73. package/dist/{chunk-3N2ZTHZZ.js → chunk-GAMVAORR.js} +1 -1
  74. package/dist/{chunk-4QF2YLYK.js → chunk-HC3FHDKB.js} +6 -6
  75. package/dist/{chunk-TDOKDCFH.js → chunk-IF26ZGZ7.js} +3 -3
  76. package/dist/{chunk-KHDD74MK.js → chunk-J4KQL7YZ.js} +5 -5
  77. package/dist/{chunk-UVZK5LIK.js → chunk-K4MBKXAE.js} +1 -1
  78. package/dist/{chunk-5O6D4J2K.js → chunk-L3AFVFGQ.js} +2 -2
  79. package/dist/{chunk-MA37WNVS.js → chunk-METMK3L4.js} +4 -4
  80. package/dist/{chunk-SIU6OWA6.js → chunk-MUNL23WE.js} +6 -6
  81. package/dist/{chunk-WWAVHLGS.js → chunk-NKLNU577.js} +5 -5
  82. package/dist/{chunk-GMXKITVA.js → chunk-NMUI3ZWG.js} +1 -1
  83. package/dist/{chunk-M46WDK64.js → chunk-O6IUZGWV.js} +1 -1
  84. package/dist/chunk-PPY5N2E6.js +58 -0
  85. package/dist/{chunk-KQWN7C5C.js → chunk-PUHP4IBA.js} +4 -4
  86. package/dist/{chunk-JBCMXSBO.js → chunk-QGSHV3WO.js} +5 -5
  87. package/dist/{chunk-VAJHDTJX.js → chunk-QLMOU57V.js} +28 -17
  88. package/dist/{chunk-UFJS4RR7.js → chunk-QUBIEZXC.js} +3 -3
  89. package/dist/{chunk-EBQTWH5O.js → chunk-RLVJ6TVL.js} +23 -23
  90. package/dist/{chunk-LAEW5QQD.js → chunk-RPPXQNIA.js} +1 -1
  91. package/dist/{chunk-YQVKG5MC.js → chunk-S54C6TQC.js} +7 -6
  92. package/dist/{chunk-5EFNBL6V.js → chunk-SEILUNWB.js} +3 -3
  93. package/dist/{chunk-L3NVHPBU.js → chunk-SOCJ2N3E.js} +6 -6
  94. package/dist/{chunk-RAMQBSVZ.js → chunk-SVQWHV65.js} +1 -1
  95. package/dist/{chunk-EHCIQA5D.js → chunk-U7NR4JVD.js} +4 -4
  96. package/dist/{chunk-M6MOQBR5.js → chunk-USE5IEEW.js} +1 -1
  97. package/dist/{chunk-UTJ5465F.js → chunk-V57XLKZL.js} +2 -2
  98. package/dist/{chunk-BRUHVTFB.js → chunk-VIJIG5YL.js} +2 -2
  99. package/dist/{chunk-5JWCWALO.js → chunk-W2IVTHIG.js} +9 -9
  100. package/dist/{chunk-OZIXBN3O.js → chunk-WFSGCFXQ.js} +2 -2
  101. package/dist/{chunk-KAJDKYUM.js → chunk-WN3RACVD.js} +3 -3
  102. package/dist/{chunk-MYU5D5VH.js → chunk-WXPVVXBU.js} +4 -4
  103. package/dist/{chunk-6ONSTCDJ.js → chunk-WXZHQ3TT.js} +5 -5
  104. package/dist/chunk-X3YKQJCZ.js +36 -0
  105. package/dist/{chunk-BKVX53QR.js → chunk-XEJOPVCG.js} +1 -1
  106. package/dist/{chunk-75UYYIFJ.js → chunk-XV6S5PWW.js} +3 -3
  107. package/dist/{chunk-CPRA7IEK.js → chunk-Y5V4PA2Z.js} +2 -2
  108. package/dist/{chunk-3RKIJM26.js → chunk-Y5VKZNFN.js} +2 -2
  109. package/dist/{chunk-DS7X36Z3.js → chunk-YGE6ML3O.js} +4 -4
  110. package/dist/{chunk-XGP5VSQG.js → chunk-YPD3MTFU.js} +1 -1
  111. package/dist/{chunk-KW3DED2A.js → chunk-ZGOJLNKS.js} +4 -4
  112. package/dist/{codex-app-cards-switch-N77RWKCO.js → codex-app-cards-switch-ZO76D2NY.js} +11 -11
  113. package/dist/{codex-desktop-launch-KIX7OMTL.js → codex-desktop-launch-MJT5E3O3.js} +1 -1
  114. package/dist/{codex-session-launch-XV7SIIWP.js → codex-session-launch-PTFCVIC7.js} +19 -19
  115. package/dist/{config-HH4DYYNX.js → config-SXV6XNVU.js} +3 -3
  116. package/dist/{global-upgrade-YWIVJIUR.js → global-upgrade-ETDP32LO.js} +9 -9
  117. package/dist/{identity-4J7Y2MW3.js → identity-OOLIOSMR.js} +4 -4
  118. package/dist/{live-capabilities-LHZBCI5U.js → live-capabilities-2XIFA7YO.js} +4 -4
  119. package/dist/{paths-ES3V7BWQ.js → paths-IIOQZESZ.js} +3 -3
  120. package/dist/{reapply-KA5SIYWX.js → reapply-KFAJSKOQ.js} +28 -28
  121. package/dist/src/index.js +22 -22
  122. package/dist/{upgrade-lock-TJPKU5HL.js → upgrade-lock-T6ILR644.js} +4 -4
  123. package/dist/{usage-7ALXBJVJ.js → usage-6TN7FVWS.js} +3 -3
  124. package/package.json +1 -1
  125. package/dist/chunk-7QLSKOSU.js +0 -19
  126. package/dist/chunk-EO23EUOK.js +0 -14
@@ -1,68 +1,62 @@
1
1
  #!/usr/bin/env node
2
+ import {
3
+ suggestionsResponse
4
+ } from "../chunk-X3YKQJCZ.js";
2
5
  import {
3
6
  exitOnFailedSettingsRequest
4
- } from "../chunk-DS7X36Z3.js";
5
- import "../chunk-AY32RSUC.js";
7
+ } from "../chunk-YGE6ML3O.js";
8
+ import "../chunk-ADR3KHOC.js";
6
9
  import {
7
10
  createIo
8
11
  } from "../chunk-FO3MDD26.js";
9
12
  import {
10
13
  exitOnHelpFlag
11
- } from "../chunk-UVZK5LIK.js";
14
+ } from "../chunk-K4MBKXAE.js";
15
+ import {
16
+ parseFlags
17
+ } from "../chunk-NMUI3ZWG.js";
18
+ import "../chunk-WN3RACVD.js";
19
+ import "../chunk-METMK3L4.js";
12
20
  import {
13
- rejectUnknownFlags
14
- } from "../chunk-GMXKITVA.js";
15
- import "../chunk-KAJDKYUM.js";
16
- import "../chunk-MA37WNVS.js";
17
- import "../chunk-JAKBCKEB.js";
18
- import "../chunk-M46WDK64.js";
21
+ pusharyFetch
22
+ } from "../chunk-4MWRR5IT.js";
23
+ import "../chunk-O6IUZGWV.js";
19
24
  import {
20
- UsageError
21
- } from "../chunk-7QLSKOSU.js";
25
+ UsageError,
26
+ exitCodeFor
27
+ } from "../chunk-PPY5N2E6.js";
22
28
  import {
23
29
  EXIT
24
30
  } from "../chunk-KZERVKTD.js";
25
- import "../chunk-3RKIJM26.js";
26
- import "../chunk-KZCYHWDF.js";
27
- import "../chunk-US3IT6ZC.js";
31
+ import "../chunk-Y5VKZNFN.js";
32
+ import "../chunk-6MJWYYAS.js";
33
+ import "../chunk-2QREHU4O.js";
28
34
  import "../chunk-QENTGE75.js";
29
35
  import {
30
36
  getApiKey,
31
37
  getBaseUrl
32
- } from "../chunk-4XXZUFWN.js";
33
- import "../chunk-BMPZ5HVJ.js";
38
+ } from "../chunk-BG4Y64FW.js";
39
+ import "../chunk-ERK24P76.js";
34
40
  import "../chunk-QTOLNRET.js";
35
- import "../chunk-762CDAJJ.js";
41
+ import "../chunk-AXJLJJ3M.js";
36
42
 
37
43
  // bin/pushary-suggestions.ts
38
44
  exitOnHelpFlag("suggestions");
39
45
  var { dim, green, cyan } = createIo();
40
- {
46
+ var main = async () => {
41
47
  const raw = process.argv.slice(2);
42
- const positional = raw[0] === "suggestions" ? raw.slice(1) : raw;
43
- try {
44
- rejectUnknownFlags(positional, []);
45
- } catch (err) {
46
- process.stderr.write(` ! ${err instanceof Error ? err.message : String(err)}
47
- `);
48
- process.exit(EXIT.USAGE);
48
+ const flags = parseFlags(raw[0] === "suggestions" ? raw.slice(1) : raw, { bools: [], values: [] });
49
+ const sub = flags.command;
50
+ const id = flags.rest[0];
51
+ if (sub === "accept" ? flags.rest.length !== 1 : sub !== void 0 || flags.rest.length > 0) {
52
+ throw new UsageError("Usage: pushary suggestions [accept <id>]");
49
53
  }
50
- }
51
- var main = async () => {
52
54
  const apiKey = getApiKey();
53
55
  const baseUrl = getBaseUrl();
54
56
  const settings = { request: "suggestions", apiKey, baseUrl };
55
57
  const headers = { Authorization: `Bearer ${apiKey}`, "Content-Type": "application/json" };
56
- const rest = process.argv.slice(2);
57
- const args = rest[0] === "suggestions" ? rest.slice(1) : rest;
58
- const sub = args[0];
59
58
  if (sub === "accept") {
60
- const id = args[1];
61
- if (!id) {
62
- console.error("Usage: pushary suggestions accept <id>");
63
- process.exit(1);
64
- }
65
- const res2 = await fetch(`${baseUrl}/api/mcp/suggestions`, {
59
+ const res2 = await pusharyFetch(`${baseUrl}/api/mcp/suggestions`, {
66
60
  method: "POST",
67
61
  headers,
68
62
  body: JSON.stringify({ id })
@@ -71,9 +65,9 @@ var main = async () => {
71
65
  console.log(` ${green("\u2713")} Accepted. The rule is live now; your agents will pick it up on their next check.`);
72
66
  return;
73
67
  }
74
- const res = await fetch(`${baseUrl}/api/mcp/suggestions`, { headers });
68
+ const res = await pusharyFetch(`${baseUrl}/api/mcp/suggestions`, { headers });
75
69
  if (!res.ok) await exitOnFailedSettingsRequest(res, settings);
76
- const { suggestions } = await res.json();
70
+ const suggestions = suggestionsResponse(await res.json());
77
71
  if (suggestions.length === 0) {
78
72
  console.log(` ${dim("No pending suggestions. Keep approving; a rule is offered once a pattern is earned.")}`);
79
73
  return;
@@ -96,5 +90,5 @@ main().catch((err) => {
96
90
  process.exit(EXIT.USAGE);
97
91
  }
98
92
  console.error(err instanceof Error ? err.message : String(err));
99
- process.exit(1);
93
+ process.exit(exitCodeFor(err));
100
94
  });
@@ -1,32 +1,32 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  registerTranscript
4
- } from "../chunk-2WMZDKPM.js";
4
+ } from "../chunk-CEQ2AZH4.js";
5
5
  import "../chunk-QW3FRUFB.js";
6
- import "../chunk-4QF2YLYK.js";
7
- import "../chunk-X4ES7QBT.js";
8
- import "../chunk-TDOKDCFH.js";
9
- import "../chunk-75UYYIFJ.js";
10
- import "../chunk-AS4Z6KS4.js";
11
- import "../chunk-GMXKITVA.js";
12
- import "../chunk-PVANKDWM.js";
13
- import "../chunk-3N2ZTHZZ.js";
14
- import "../chunk-D6CXQIXO.js";
6
+ import "../chunk-HC3FHDKB.js";
7
+ import "../chunk-CDQHQAS7.js";
8
+ import "../chunk-IF26ZGZ7.js";
9
+ import "../chunk-XV6S5PWW.js";
10
+ import "../chunk-4MUFZU2G.js";
11
+ import "../chunk-NMUI3ZWG.js";
12
+ import "../chunk-2AELPDMT.js";
13
+ import "../chunk-GAMVAORR.js";
14
+ import "../chunk-7JXJJNQ5.js";
15
15
  import "../chunk-XHKBHWLX.js";
16
16
  import "../chunk-6ICPEJY5.js";
17
- import "../chunk-KAJDKYUM.js";
18
- import "../chunk-W47WL6JY.js";
19
- import "../chunk-M46WDK64.js";
20
- import "../chunk-7QLSKOSU.js";
17
+ import "../chunk-WN3RACVD.js";
18
+ import "../chunk-33OOEVPG.js";
19
+ import "../chunk-O6IUZGWV.js";
20
+ import "../chunk-PPY5N2E6.js";
21
21
  import "../chunk-KZERVKTD.js";
22
- import "../chunk-3RKIJM26.js";
23
- import "../chunk-KZCYHWDF.js";
24
- import "../chunk-US3IT6ZC.js";
22
+ import "../chunk-Y5VKZNFN.js";
23
+ import "../chunk-6MJWYYAS.js";
24
+ import "../chunk-2QREHU4O.js";
25
25
  import "../chunk-QENTGE75.js";
26
- import "../chunk-4XXZUFWN.js";
27
- import "../chunk-BMPZ5HVJ.js";
26
+ import "../chunk-BG4Y64FW.js";
27
+ import "../chunk-ERK24P76.js";
28
28
  import "../chunk-QTOLNRET.js";
29
- import "../chunk-762CDAJJ.js";
29
+ import "../chunk-AXJLJJ3M.js";
30
30
 
31
31
  // bin/pushary-transcript-register.ts
32
32
  var raw = "";
@@ -1,23 +1,32 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  exitOnHelpFlag
4
- } from "../chunk-UVZK5LIK.js";
4
+ } from "../chunk-K4MBKXAE.js";
5
5
  import {
6
6
  clearPin,
7
7
  fingerprint,
8
8
  loadPin
9
9
  } from "../chunk-QW3FRUFB.js";
10
+ import {
11
+ parseFlags
12
+ } from "../chunk-NMUI3ZWG.js";
10
13
  import {
11
14
  transcriptsEnabled
12
- } from "../chunk-D6CXQIXO.js";
13
- import "../chunk-KAJDKYUM.js";
15
+ } from "../chunk-7JXJJNQ5.js";
16
+ import "../chunk-WN3RACVD.js";
17
+ import {
18
+ UsageError,
19
+ exitCodeFor
20
+ } from "../chunk-PPY5N2E6.js";
14
21
  import "../chunk-KZERVKTD.js";
15
- import "../chunk-3RKIJM26.js";
22
+ import "../chunk-Y5VKZNFN.js";
16
23
  import "../chunk-QENTGE75.js";
17
- import "../chunk-4XXZUFWN.js";
18
- import "../chunk-BMPZ5HVJ.js";
24
+ import "../chunk-BG4Y64FW.js";
25
+ import {
26
+ isInvocationOf
27
+ } from "../chunk-ERK24P76.js";
19
28
  import "../chunk-QTOLNRET.js";
20
- import "../chunk-762CDAJJ.js";
29
+ import "../chunk-AXJLJJ3M.js";
21
30
 
22
31
  // bin/pushary-transcripts.ts
23
32
  exitOnHelpFlag("transcripts");
@@ -62,17 +71,21 @@ var rotate = () => {
62
71
  }
63
72
  console.log();
64
73
  };
65
- var args = process.argv.slice(2);
66
- var wantsRotate = args.includes("--rotate");
67
- var verb = args.find((arg) => !arg.startsWith("-"));
68
- if (verb === "trust" && wantsRotate) {
69
- rotate();
70
- } else if (verb === "trust") {
71
- console.error(`Run \`pushary transcripts trust --rotate\` to accept the keys the server is offering now.`);
72
- process.exit(1);
73
- } else if (verb === void 0 || verb === "status") {
74
- showStatus();
75
- } else {
76
- console.error(`Unknown: ${verb}. Try \`pushary transcripts status\` or \`pushary transcripts trust --rotate\`.`);
77
- process.exit(1);
74
+ try {
75
+ const raw = process.argv.slice(2);
76
+ const args = raw[0] !== void 0 && isInvocationOf(raw[0], "transcripts") ? raw.slice(1) : raw;
77
+ const flags = parseFlags(args, { bools: ["rotate"], values: [] });
78
+ if (flags.rest.length > 0) throw new UsageError("transcripts takes one subcommand");
79
+ if (flags.command === "trust") {
80
+ if (!flags.bools.has("rotate")) throw new UsageError("Run `pushary transcripts trust --rotate` to accept the keys the server is offering now.");
81
+ rotate();
82
+ } else if (flags.command === void 0 || flags.command === "status") {
83
+ if (flags.bools.has("rotate")) throw new UsageError("--rotate requires transcripts trust");
84
+ showStatus();
85
+ } else {
86
+ throw new UsageError(`Unknown: ${flags.command}. Try \`pushary transcripts status\` or \`pushary transcripts trust --rotate\`.`);
87
+ }
88
+ } catch (error) {
89
+ console.error(error instanceof Error ? error.message : String(error));
90
+ process.exit(exitCodeFor(error));
78
91
  }
@@ -18,57 +18,57 @@ import {
18
18
  upgradeInstalledPackage,
19
19
  wasRefreshed,
20
20
  withUpgradeLock
21
- } from "../chunk-L3NVHPBU.js";
21
+ } from "../chunk-SOCJ2N3E.js";
22
22
  import {
23
23
  installWithUpgradeLock
24
- } from "../chunk-BRUHVTFB.js";
24
+ } from "../chunk-VIJIG5YL.js";
25
25
  import {
26
26
  phoneStartFellShortLine
27
- } from "../chunk-UFJS4RR7.js";
27
+ } from "../chunk-QUBIEZXC.js";
28
28
  import {
29
29
  ensureCodexTrustAfterReapply,
30
30
  reapplyAllAgents
31
- } from "../chunk-EBQTWH5O.js";
31
+ } from "../chunk-RLVJ6TVL.js";
32
32
  import {
33
33
  describeCodexTrustConfirmation
34
- } from "../chunk-UTJ5465F.js";
35
- import "../chunk-2FVP7WRP.js";
34
+ } from "../chunk-V57XLKZL.js";
35
+ import "../chunk-DJ7EZIQA.js";
36
36
  import {
37
37
  waitForMachineReadiness
38
- } from "../chunk-KHDD74MK.js";
39
- import "../chunk-IBXHVYN2.js";
38
+ } from "../chunk-J4KQL7YZ.js";
39
+ import "../chunk-56JCQQLS.js";
40
40
  import {
41
41
  readMacAppAgentKey
42
- } from "../chunk-EHCIQA5D.js";
42
+ } from "../chunk-U7NR4JVD.js";
43
43
  import {
44
44
  fxServerHolder,
45
45
  macAppFxBridge,
46
46
  retryAgentCommand
47
- } from "../chunk-6ONSTCDJ.js";
48
- import "../chunk-3NROUNIS.js";
49
- import "../chunk-JBCMXSBO.js";
47
+ } from "../chunk-WXZHQ3TT.js";
48
+ import "../chunk-FDWMG6NY.js";
49
+ import "../chunk-QGSHV3WO.js";
50
50
  import {
51
51
  exitOnHelpFlag
52
- } from "../chunk-UVZK5LIK.js";
52
+ } from "../chunk-K4MBKXAE.js";
53
53
  import {
54
54
  detectProviderLiveCapabilities,
55
55
  expectedLaunchCapabilities,
56
56
  hasSpawnProvider,
57
57
  resolveControlPolicy
58
- } from "../chunk-5PP4455M.js";
59
- import "../chunk-M6MOQBR5.js";
58
+ } from "../chunk-6LOQE4J4.js";
59
+ import "../chunk-USE5IEEW.js";
60
60
  import "../chunk-VUFHYMSP.js";
61
61
  import {
62
62
  AUTO_UPDATE_DISABLE_ENV,
63
+ AUTO_UPDATE_FLAG,
63
64
  describeAutoUpdateCheck,
64
65
  hasPendingUpgradeFinish,
65
66
  isAutoUpdateDisabledByEnv,
66
67
  isUnfinishedAutoUpdate,
67
- parseAutoUpdateFlag,
68
68
  readAutoUpdateState,
69
69
  updateAutoUpdateState
70
- } from "../chunk-5BNXJTOZ.js";
71
- import "../chunk-KQWN7C5C.js";
70
+ } from "../chunk-5RU35K57.js";
71
+ import "../chunk-PUHP4IBA.js";
72
72
  import {
73
73
  DAEMON_COLD_START_TIMEOUT_MS,
74
74
  daemonHasRemoteProof,
@@ -81,32 +81,34 @@ import {
81
81
  replaceDaemonService,
82
82
  stopDaemonService,
83
83
  waitForDaemonRemoteProof
84
- } from "../chunk-4QF2YLYK.js";
85
- import "../chunk-X4ES7QBT.js";
86
- import "../chunk-TDOKDCFH.js";
87
- import "../chunk-75UYYIFJ.js";
88
- import "../chunk-AS4Z6KS4.js";
89
- import "../chunk-GMXKITVA.js";
84
+ } from "../chunk-HC3FHDKB.js";
85
+ import "../chunk-CDQHQAS7.js";
86
+ import "../chunk-IF26ZGZ7.js";
87
+ import "../chunk-XV6S5PWW.js";
88
+ import "../chunk-4MUFZU2G.js";
89
+ import "../chunk-NMUI3ZWG.js";
90
90
  import "../chunk-XHKBHWLX.js";
91
91
  import "../chunk-6ICPEJY5.js";
92
92
  import {
93
93
  readControlMode,
94
94
  recordMacAppKeyPrefix
95
- } from "../chunk-KAJDKYUM.js";
96
- import "../chunk-5JWCWALO.js";
97
- import "../chunk-W47WL6JY.js";
98
- import "../chunk-XGP5VSQG.js";
99
- import "../chunk-WW24SG27.js";
100
- import "../chunk-5EFNBL6V.js";
95
+ } from "../chunk-WN3RACVD.js";
96
+ import "../chunk-W2IVTHIG.js";
97
+ import "../chunk-33OOEVPG.js";
98
+ import "../chunk-YPD3MTFU.js";
99
+ import "../chunk-EZHY65QA.js";
100
+ import "../chunk-SEILUNWB.js";
101
101
  import "../chunk-POFBE6ZY.js";
102
- import "../chunk-MA37WNVS.js";
103
- import "../chunk-JAKBCKEB.js";
104
- import "../chunk-M46WDK64.js";
105
- import "../chunk-7QLSKOSU.js";
102
+ import "../chunk-METMK3L4.js";
103
+ import "../chunk-4MWRR5IT.js";
104
+ import "../chunk-O6IUZGWV.js";
105
+ import {
106
+ UsageError
107
+ } from "../chunk-PPY5N2E6.js";
106
108
  import {
107
109
  EXIT
108
110
  } from "../chunk-KZERVKTD.js";
109
- import "../chunk-3RKIJM26.js";
111
+ import "../chunk-Y5VKZNFN.js";
110
112
  import {
111
113
  autoUpdateState,
112
114
  claudeJson,
@@ -117,32 +119,47 @@ import {
117
119
  pusharyDir,
118
120
  serviceOwedBackMark,
119
121
  vscodePluginDir
120
- } from "../chunk-KZCYHWDF.js";
122
+ } from "../chunk-6MJWYYAS.js";
121
123
  import {
122
124
  LATEST_TAG,
123
125
  fetchLatestPublishedVersion
124
- } from "../chunk-US3IT6ZC.js";
126
+ } from "../chunk-2QREHU4O.js";
125
127
  import {
126
128
  writeFileAtomic
127
129
  } from "../chunk-QENTGE75.js";
128
130
  import {
129
131
  getApiKey
130
- } from "../chunk-4XXZUFWN.js";
132
+ } from "../chunk-BG4Y64FW.js";
131
133
  import {
132
134
  NPX_LATEST_COMMAND
133
- } from "../chunk-BMPZ5HVJ.js";
135
+ } from "../chunk-ERK24P76.js";
134
136
  import {
135
137
  CANONICAL_PACKAGE,
136
138
  LEGACY_PACKAGE,
137
139
  getPackageVersion
138
140
  } from "../chunk-QTOLNRET.js";
139
- import "../chunk-762CDAJJ.js";
141
+ import "../chunk-AXJLJJ3M.js";
140
142
 
141
143
  // bin/pushary-upgrade.ts
142
144
  import { existsSync as existsSync2 } from "fs";
143
145
  import { homedir } from "os";
144
146
  import { join } from "path";
145
147
 
148
+ // src/cli/upgrade-options.ts
149
+ var parseUpgradeAction = (argv) => {
150
+ const end = argv.indexOf("--");
151
+ if (end >= 0 && end !== argv.length - 1) throw new UsageError("upgrade takes no positional arguments");
152
+ const args = end >= 0 ? argv.slice(0, end) : argv;
153
+ if (args.length > 1) throw new UsageError("Pass only one upgrade action: --auto, --auto=on, --auto=off, or --finish-upgrade");
154
+ const token = args[0];
155
+ if (token === void 0) return { kind: "upgrade" };
156
+ if (token === FINISH_UPGRADE_FLAG || token === FINISH_UPGRADE_FLAG.slice(1)) return { kind: "finish" };
157
+ if (token === AUTO_UPDATE_FLAG) return { kind: "automatic" };
158
+ if (token === `${AUTO_UPDATE_FLAG}=on`) return { kind: "setAutomatic", enabled: true };
159
+ if (token === `${AUTO_UPDATE_FLAG}=off`) return { kind: "setAutomatic", enabled: false };
160
+ throw new UsageError(`Invalid upgrade argument: ${token}. Use --auto, --auto=on, or --auto=off.`);
161
+ };
162
+
146
163
  // src/service-owed-back.ts
147
164
  import { existsSync, mkdirSync, rmSync } from "fs";
148
165
  import { dirname } from "path";
@@ -407,24 +424,28 @@ var reportUpgradeLock = (locked) => {
407
424
  process.exitCode = locked.exitCode;
408
425
  };
409
426
  var main = async () => {
410
- if (process.argv.includes(FINISH_UPGRADE_FLAG)) {
427
+ const raw = process.argv.slice(2);
428
+ const args = raw[0] === "upgrade" ? raw.slice(1) : raw;
429
+ let action;
430
+ try {
431
+ action = parseUpgradeAction(args);
432
+ } catch (err) {
433
+ console.error(err instanceof Error ? err.message : String(err));
434
+ process.exitCode = EXIT.USAGE;
435
+ return;
436
+ }
437
+ if (action.kind === "finish") {
411
438
  reportUpgradeLock(await finishUpgradeWithLock(finishUpgrade, {
412
439
  installedVersion: getPackageVersion(),
413
440
  statePath: autoUpdateState()
414
441
  }));
415
442
  return;
416
443
  }
417
- const autoFlag = parseAutoUpdateFlag(process.argv.slice(2));
418
- if (autoFlag.kind === "invalid") {
419
- console.error(`--auto takes on or off (got ${autoFlag.value || "nothing"}).`);
420
- process.exitCode = EXIT.USAGE;
421
- return;
422
- }
423
- if (autoFlag.kind === "set") {
424
- setAutomaticUpdates(autoFlag.enabled);
444
+ if (action.kind === "setAutomatic") {
445
+ setAutomaticUpdates(action.enabled);
425
446
  return;
426
447
  }
427
- if (autoFlag.kind === "run") {
448
+ if (action.kind === "automatic") {
428
449
  await runAutomaticUpdate();
429
450
  return;
430
451
  }
@@ -1,41 +1,48 @@
1
1
  #!/usr/bin/env node
2
+ import {
3
+ waitResponse,
4
+ waitWindowResponse
5
+ } from "../chunk-X3YKQJCZ.js";
2
6
  import {
3
7
  describeWaitLadder
4
8
  } from "../chunk-CVWG2N3Y.js";
5
9
  import {
6
10
  exitOnFailedSettingsRequest
7
- } from "../chunk-DS7X36Z3.js";
8
- import "../chunk-AY32RSUC.js";
11
+ } from "../chunk-YGE6ML3O.js";
12
+ import "../chunk-ADR3KHOC.js";
9
13
  import {
10
14
  createIo
11
15
  } from "../chunk-FO3MDD26.js";
12
16
  import {
13
17
  exitOnHelpFlag
14
- } from "../chunk-UVZK5LIK.js";
18
+ } from "../chunk-K4MBKXAE.js";
19
+ import {
20
+ parseFlags
21
+ } from "../chunk-NMUI3ZWG.js";
22
+ import "../chunk-WN3RACVD.js";
23
+ import "../chunk-METMK3L4.js";
15
24
  import {
16
- rejectUnknownFlags
17
- } from "../chunk-GMXKITVA.js";
18
- import "../chunk-KAJDKYUM.js";
19
- import "../chunk-MA37WNVS.js";
20
- import "../chunk-JAKBCKEB.js";
21
- import "../chunk-M46WDK64.js";
25
+ pusharyFetch
26
+ } from "../chunk-4MWRR5IT.js";
27
+ import "../chunk-O6IUZGWV.js";
22
28
  import {
23
- UsageError
24
- } from "../chunk-7QLSKOSU.js";
29
+ UsageError,
30
+ exitCodeFor
31
+ } from "../chunk-PPY5N2E6.js";
25
32
  import {
26
33
  EXIT
27
34
  } from "../chunk-KZERVKTD.js";
28
- import "../chunk-3RKIJM26.js";
29
- import "../chunk-KZCYHWDF.js";
30
- import "../chunk-US3IT6ZC.js";
35
+ import "../chunk-Y5VKZNFN.js";
36
+ import "../chunk-6MJWYYAS.js";
37
+ import "../chunk-2QREHU4O.js";
31
38
  import "../chunk-QENTGE75.js";
32
39
  import {
33
40
  getApiKey,
34
41
  getBaseUrl
35
- } from "../chunk-4XXZUFWN.js";
36
- import "../chunk-BMPZ5HVJ.js";
42
+ } from "../chunk-BG4Y64FW.js";
43
+ import "../chunk-ERK24P76.js";
37
44
  import "../chunk-QTOLNRET.js";
38
- import "../chunk-762CDAJJ.js";
45
+ import "../chunk-AXJLJJ3M.js";
39
46
 
40
47
  // bin/pushary-wait.ts
41
48
  exitOnHelpFlag("wait");
@@ -62,32 +69,28 @@ var printLadder = (data) => {
62
69
  console.log(` ${dim("Per-tool rules live in the dashboard under Agent \u2192 Policies.")}`);
63
70
  };
64
71
  var fetchPolicy = async (settings, headers) => {
65
- const res = await fetch(`${settings.baseUrl}/api/mcp/policy`, { headers });
72
+ const res = await pusharyFetch(`${settings.baseUrl}/api/mcp/policy`, { headers });
66
73
  if (!res.ok) await exitOnFailedSettingsRequest(res, settings);
67
- return res.json();
74
+ return waitResponse(await res.json());
68
75
  };
69
76
  var setWindow = async (settings, headers, seconds) => {
70
- const res = await fetch(`${settings.baseUrl}/api/mcp/policy`, {
77
+ const res = await pusharyFetch(`${settings.baseUrl}/api/mcp/policy`, {
71
78
  method: "PATCH",
72
79
  headers,
73
80
  body: JSON.stringify({ defaultPushFirstSeconds: seconds })
74
81
  });
75
82
  if (!res.ok) await exitOnFailedSettingsRequest(res, settings);
76
- const data = await res.json();
77
- return data.defaultPushFirstSeconds;
83
+ return waitWindowResponse(await res.json());
78
84
  };
79
- {
85
+ var main = async () => {
80
86
  const raw = process.argv.slice(2);
81
- const positional = raw[0] === "wait" ? raw.slice(1) : raw;
82
- try {
83
- rejectUnknownFlags(positional, []);
84
- } catch (err) {
85
- process.stderr.write(` ! ${err instanceof Error ? err.message : String(err)}
86
- `);
87
- process.exit(EXIT.USAGE);
87
+ const flags = parseFlags(raw[0] === "wait" ? raw.slice(1) : raw, { bools: [], values: [] });
88
+ if (flags.rest.length > 0) throw new UsageError("Expected one wait window");
89
+ const arg = flags.command;
90
+ const seconds = Number(arg);
91
+ if (arg !== void 0 && !["status", "clear", "reset"].includes(arg) && (!Number.isFinite(seconds) || seconds < 0 || seconds > MAX_WINDOW)) {
92
+ throw new UsageError(`Invalid window: ${arg} (use 0-${MAX_WINDOW} seconds, or "status" / "clear")`);
88
93
  }
89
- }
90
- var main = async () => {
91
94
  const apiKey = getApiKey();
92
95
  const baseUrl = getBaseUrl();
93
96
  const settings = { request: "wait", apiKey, baseUrl };
@@ -95,9 +98,6 @@ var main = async () => {
95
98
  "Authorization": `Bearer ${apiKey}`,
96
99
  "Content-Type": "application/json"
97
100
  };
98
- const rest = process.argv.slice(2);
99
- const args = rest[0] === "wait" ? rest.slice(1) : rest;
100
- const arg = args[0];
101
101
  if (!arg || arg === "status") {
102
102
  printLadder(await fetchPolicy(settings, headers));
103
103
  return;
@@ -107,12 +107,6 @@ var main = async () => {
107
107
  console.log(` ${green("\u2713")} Default push window reset to ${cyan(`${value2}s`)}`);
108
108
  return;
109
109
  }
110
- const seconds = Number(arg);
111
- if (!Number.isFinite(seconds) || seconds < 0 || seconds > MAX_WINDOW) {
112
- console.log(` ${yellow("!")} Invalid window: ${arg} ${dim(`(use 0-${MAX_WINDOW} seconds, or "status" / "clear")`)}`);
113
- console.log(` ${dim("Usage: pushary wait <seconds> | status | clear")}`);
114
- process.exit(EXIT.USAGE);
115
- }
116
110
  const value = await setWindow(settings, headers, Math.trunc(seconds));
117
111
  const ladder = describeWaitLadder({ tool: "*", mode: "push_first", pushFirstSeconds: value, timeoutSeconds: 0, timeoutAction: "escalate" });
118
112
  console.log(` ${green("\u2713")} Default push window set to ${cyan(`${value}s`)} ${dim(`(${ladder})`)}`);
@@ -124,5 +118,5 @@ main().catch((err) => {
124
118
  process.exit(EXIT.USAGE);
125
119
  }
126
120
  console.error(` ${yellow("!")} ${err instanceof Error ? err.message : err}`);
127
- process.exit(1);
121
+ process.exit(exitCodeFor(err));
128
122
  });
@@ -1,25 +1,25 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  installNetworkDefaults
4
- } from "../chunk-JAKBCKEB.js";
5
- import "../chunk-M46WDK64.js";
6
- import "../chunk-7QLSKOSU.js";
4
+ } from "../chunk-4MWRR5IT.js";
5
+ import "../chunk-O6IUZGWV.js";
6
+ import "../chunk-PPY5N2E6.js";
7
7
  import {
8
8
  EXIT
9
9
  } from "../chunk-KZERVKTD.js";
10
- import "../chunk-KZCYHWDF.js";
11
- import "../chunk-US3IT6ZC.js";
10
+ import "../chunk-6MJWYYAS.js";
11
+ import "../chunk-2QREHU4O.js";
12
12
  import "../chunk-QENTGE75.js";
13
- import "../chunk-4XXZUFWN.js";
13
+ import "../chunk-BG4Y64FW.js";
14
14
  import {
15
15
  LISTED_COMMANDS,
16
16
  renderHelp,
17
17
  resolveCommandName
18
- } from "../chunk-BMPZ5HVJ.js";
18
+ } from "../chunk-ERK24P76.js";
19
19
  import {
20
20
  getPackageVersion
21
21
  } from "../chunk-QTOLNRET.js";
22
- import "../chunk-762CDAJJ.js";
22
+ import "../chunk-AXJLJJ3M.js";
23
23
 
24
24
  // src/cli/runtime.ts
25
25
  var supportsRuntime = (version) => {
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  redactSecretsFromContent
3
- } from "./chunk-762CDAJJ.js";
3
+ } from "./chunk-AXJLJJ3M.js";
4
4
 
5
5
  // src/crypto.ts
6
6
  import nacl from "tweetnacl";