pushary 1.9.58 → 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 +14 -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-WVXBM4MR.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-JSQOHMNJ.js → chunk-2AELPDMT.js} +1 -1
  46. package/dist/{chunk-WVP6UQG3.js → chunk-2QREHU4O.js} +11 -4
  47. package/dist/{chunk-QTCFEKLJ.js → chunk-33OOEVPG.js} +1 -1
  48. package/dist/{chunk-QDFLBTUP.js → chunk-4MUFZU2G.js} +1 -1
  49. package/dist/{chunk-5DZHKNBU.js → chunk-4MWRR5IT.js} +8 -7
  50. package/dist/{chunk-XEJV3QSS.js → chunk-4PZXI7WU.js} +3 -3
  51. package/dist/{chunk-UMVVQXAC.js → chunk-56JCQQLS.js} +2 -2
  52. package/dist/{chunk-JZKEC4XJ.js → chunk-5RU35K57.js} +3 -12
  53. package/dist/{chunk-HRHAZ3GE.js → chunk-625DZLT5.js} +6 -6
  54. package/dist/{chunk-3KOPY2UQ.js → chunk-6LOQE4J4.js} +3 -3
  55. package/dist/{chunk-K5CAURU5.js → chunk-6MC2XXFD.js} +4 -4
  56. package/dist/{chunk-MYBCXDIL.js → chunk-6MJWYYAS.js} +62 -49
  57. package/dist/chunk-7BHI3PZN.js +41 -0
  58. package/dist/{chunk-C3IWX6KU.js → chunk-7JXJJNQ5.js} +1 -1
  59. package/dist/{chunk-CK5BCFQF.js → chunk-7WFRY6OL.js} +2 -2
  60. package/dist/{chunk-4YNNAF53.js → chunk-ADR3KHOC.js} +2 -2
  61. package/dist/{chunk-XTZHUIGJ.js → chunk-ATKN4BJT.js} +1 -1
  62. package/dist/{chunk-GZL3KEPC.js → chunk-AXJLJJ3M.js} +147 -136
  63. package/dist/{chunk-LVDC3RUE.js → chunk-BG4Y64FW.js} +1 -1
  64. package/dist/{chunk-KSVCCSAO.js → chunk-CDQHQAS7.js} +9 -7
  65. package/dist/{chunk-TN74MUMB.js → chunk-CEQ2AZH4.js} +13 -13
  66. package/dist/{chunk-X6F4BQEE.js → chunk-CSOROFJY.js} +5 -5
  67. package/dist/{chunk-CZULJ647.js → chunk-DJ7EZIQA.js} +3 -3
  68. package/dist/{chunk-IUOUNRLH.js → chunk-ELLJPP6O.js} +2 -2
  69. package/dist/{chunk-5SFM6XB4.js → chunk-ERK24P76.js} +12 -2
  70. package/dist/{chunk-DQ565WFA.js → chunk-EZHY65QA.js} +21 -11
  71. package/dist/{chunk-4LUPZ347.js → chunk-FDWMG6NY.js} +2 -2
  72. package/dist/{chunk-S5LX25XE.js → chunk-FUZ5VYWD.js} +1 -1
  73. package/dist/{chunk-N3NSWWNU.js → chunk-GAMVAORR.js} +1 -1
  74. package/dist/{chunk-QP3XPS5U.js → chunk-HC3FHDKB.js} +6 -6
  75. package/dist/{chunk-ATUZX4K7.js → chunk-IF26ZGZ7.js} +3 -3
  76. package/dist/{chunk-CSQJCXPX.js → chunk-J4KQL7YZ.js} +5 -5
  77. package/dist/{chunk-M7NX25ZA.js → chunk-K4MBKXAE.js} +1 -1
  78. package/dist/{chunk-PZOFPAPG.js → chunk-L3AFVFGQ.js} +2 -2
  79. package/dist/{chunk-S54YLXWW.js → chunk-METMK3L4.js} +4 -4
  80. package/dist/{chunk-ZEHUWE3X.js → chunk-MUNL23WE.js} +6 -6
  81. package/dist/{chunk-3TJLPABQ.js → chunk-NKLNU577.js} +5 -5
  82. package/dist/{chunk-GMXKITVA.js → chunk-NMUI3ZWG.js} +1 -1
  83. package/dist/{chunk-IJ6XKKQW.js → chunk-O6IUZGWV.js} +1 -1
  84. package/dist/chunk-PPY5N2E6.js +58 -0
  85. package/dist/{chunk-XWY4UW62.js → chunk-PUHP4IBA.js} +4 -4
  86. package/dist/{chunk-T2AC5VFQ.js → chunk-QGSHV3WO.js} +5 -5
  87. package/dist/{chunk-RGQEULXD.js → chunk-QLMOU57V.js} +28 -17
  88. package/dist/{chunk-FAGDOPQI.js → chunk-QUBIEZXC.js} +3 -3
  89. package/dist/{chunk-XFUKCBPU.js → chunk-RLVJ6TVL.js} +23 -23
  90. package/dist/{chunk-VPZ5K72D.js → chunk-RPPXQNIA.js} +1 -1
  91. package/dist/{chunk-MCHOBQHE.js → chunk-S54C6TQC.js} +7 -6
  92. package/dist/{chunk-ZL3UR6M5.js → chunk-SEILUNWB.js} +3 -3
  93. package/dist/{chunk-4JJ3T7IE.js → chunk-SOCJ2N3E.js} +6 -6
  94. package/dist/{chunk-JYXIARGW.js → chunk-SVQWHV65.js} +1 -1
  95. package/dist/{chunk-T2BEIPK2.js → chunk-U7NR4JVD.js} +4 -4
  96. package/dist/{chunk-LVWXRXT7.js → chunk-USE5IEEW.js} +1 -1
  97. package/dist/{chunk-OHD35NPC.js → chunk-V57XLKZL.js} +2 -2
  98. package/dist/{chunk-KIH5BDH5.js → chunk-VIJIG5YL.js} +2 -2
  99. package/dist/{chunk-RF74KBF5.js → chunk-W2IVTHIG.js} +9 -9
  100. package/dist/{chunk-WXZN5CS3.js → chunk-WFSGCFXQ.js} +2 -2
  101. package/dist/{chunk-IRZ5FVWG.js → chunk-WN3RACVD.js} +3 -3
  102. package/dist/{chunk-3WNOO7BM.js → chunk-WXPVVXBU.js} +4 -4
  103. package/dist/{chunk-HUWLEVL2.js → chunk-WXZHQ3TT.js} +5 -5
  104. package/dist/chunk-X3YKQJCZ.js +36 -0
  105. package/dist/{chunk-I43PY5G3.js → chunk-XEJOPVCG.js} +1 -1
  106. package/dist/{chunk-ECJJKDP7.js → chunk-XV6S5PWW.js} +3 -3
  107. package/dist/{chunk-ZJNU32VE.js → chunk-Y5V4PA2Z.js} +155 -37
  108. package/dist/{chunk-7RZO6VWD.js → chunk-Y5VKZNFN.js} +2 -2
  109. package/dist/{chunk-VLJ5C6IT.js → chunk-YGE6ML3O.js} +4 -4
  110. package/dist/{chunk-XXNT4FGA.js → chunk-YPD3MTFU.js} +1 -1
  111. package/dist/{chunk-KW6EYFZV.js → chunk-ZGOJLNKS.js} +4 -4
  112. package/dist/{codex-app-cards-switch-TVKXJWXE.js → codex-app-cards-switch-ZO76D2NY.js} +11 -11
  113. package/dist/{codex-desktop-launch-ROTJEEGF.js → codex-desktop-launch-MJT5E3O3.js} +1 -1
  114. package/dist/{codex-session-launch-VL6ZQA3N.js → codex-session-launch-PTFCVIC7.js} +19 -19
  115. package/dist/{config-SYLUYZQE.js → config-SXV6XNVU.js} +3 -3
  116. package/dist/{global-upgrade-IPWV5PTM.js → global-upgrade-ETDP32LO.js} +9 -9
  117. package/dist/{identity-ARPAUNGN.js → identity-OOLIOSMR.js} +4 -4
  118. package/dist/{live-capabilities-EWTRY2HA.js → live-capabilities-2XIFA7YO.js} +4 -4
  119. package/dist/{paths-IZTNMJAQ.js → paths-IIOQZESZ.js} +3 -3
  120. package/dist/{reapply-ILKOYYKA.js → reapply-KFAJSKOQ.js} +28 -28
  121. package/dist/src/index.js +22 -22
  122. package/dist/{upgrade-lock-ML73QXIG.js → upgrade-lock-T6ILR644.js} +4 -4
  123. package/dist/{usage-OUV76AIY.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
package/CHANGELOG.md CHANGED
@@ -1,5 +1,19 @@
1
1
  # Changelog
2
2
 
3
+ ## 1.9.60
4
+
5
+ - Ships the CLI audit fixes merged after 1.9.59. `pushary mode terminal_only --for=30m` now expires after 30 minutes, just like `--for 30m`, instead of making the mode permanent.
6
+ - Setup, repair and disconnect respect the active Claude configuration directory. Hook commands safely quote paths containing apostrophes, dollar signs or shell substitutions.
7
+ - Commands reject unsupported preview flags and conflicting or surplus arguments before changing configuration. Transcript recovery works through both command entrypoints, and settings requests have a 15-second deadline with validated responses.
8
+ - JSON failures carry the same exit code as the process. Unexpected hook failures report a stable error code while preserving native fallback, and transient error reports get one bounded retry. Network errors and support bundles redact proxy credentials.
9
+
10
+ ## 1.9.59
11
+
12
+ - Codex app cards now also carry three questions from Codex's browser: access to a site, a download and an upload. They used to show only in Codex, because the browser raises them itself and no hook sees them. With the switch on, each reaches Pushary as a yes or no question that names the site, and the first answer wins. A download or upload question carries the address up to the end of its path. Nothing after a `?` or `#` is in that question, and the address ends in … when something was left out; the path itself is sent.
13
+ - For a download or an upload, Yes allows that one transfer. For a site, Yes allows the site for the rest of the conversation, or for the turn if Codex is set to ask each turn, and No blocks it for the conversation, because that is what Codex does with the answer its own Allow button sends. The question's details say which. Pushary never sends "always", "for this site" or "for all sites"; those stay in Codex.
14
+ - `pushary codex --app-cards on`, `pushary codex --desktop` and the command's help now say that the browser's questions are carried too.
15
+ - Other Browser use questions stay in Codex for now: Developer Tools access, browsing history, verification codes and sign-in.
16
+
3
17
  ## 1.9.58
4
18
 
5
19
  - `pushary clean` no longer removes the Codex app cards launcher when it could not turn the switch off. It keeps the folder and prints the reason. Before, a failed turn-off could leave the Codex app starting through a launcher that was gone, and Codex would not start its engine until the next logout. The same now holds when the setting that starts the Codex app cannot be read while a launcher or login item is on disk: clean and `pushary codex --app-cards off` change nothing and say so, where they used to read it as not set.
@@ -2,7 +2,11 @@
2
2
  "name": "pushary",
3
3
  "displayName": "Pushary — Control Panel for AI Agents",
4
4
  "description": "Push notifications, human-in-the-loop questions, and permission gating for your AI coding agent. Get a push when a task finishes, answer the agent from your phone, and approve risky commands before they run.",
5
- "version": "0.2.7",
5
+ "version": "0.2.8",
6
+ "minClientVersions": {
7
+ "grokbot": "never",
8
+ "sand": "never"
9
+ },
6
10
  "author": { "name": "Pushary", "email": "business@pushary.com" },
7
11
  "homepage": "https://pushary.com",
8
12
  "repository": "https://github.com/Pushary/cursor-plugin",
@@ -1,5 +1,9 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.2.8
4
+
5
+ - Hidden from Grok Bot. This plugin needs an API key and command hooks on your own computer, which a Bot's cloud computer does not have. Grok Bot users install [Pushary for Grok Bot](https://github.com/Pushary/grok-bot-plugin) instead.
6
+
3
7
  ## 0.2.6
4
8
 
5
9
  - Under When I'm out, a file change nobody answers is refused, even when your rule approves on timeout. Cursor's file hooks have no prompt of their own, so the change used to run once the wait ended. Under Every time a rule that approves on timeout still runs the change, as before.
@@ -15,24 +15,24 @@ import {
15
15
  waitForQuestion,
16
16
  waitsForThePhone,
17
17
  withdrawQuestion
18
- } from "./chunk-DQ565WFA.js";
19
- import "./chunk-ZL3UR6M5.js";
18
+ } from "./chunk-EZHY65QA.js";
19
+ import "./chunk-SEILUNWB.js";
20
20
  import "./chunk-POFBE6ZY.js";
21
- import "./chunk-S54YLXWW.js";
22
- import "./chunk-5DZHKNBU.js";
23
- import "./chunk-IJ6XKKQW.js";
24
- import "./chunk-7QLSKOSU.js";
21
+ import "./chunk-METMK3L4.js";
22
+ import "./chunk-4MWRR5IT.js";
23
+ import "./chunk-O6IUZGWV.js";
24
+ import "./chunk-PPY5N2E6.js";
25
25
  import "./chunk-KZERVKTD.js";
26
- import "./chunk-MYBCXDIL.js";
27
- import "./chunk-WVP6UQG3.js";
26
+ import "./chunk-6MJWYYAS.js";
27
+ import "./chunk-2QREHU4O.js";
28
28
  import "./chunk-QENTGE75.js";
29
- import "./chunk-LVDC3RUE.js";
30
- import "./chunk-5SFM6XB4.js";
29
+ import "./chunk-BG4Y64FW.js";
30
+ import "./chunk-ERK24P76.js";
31
31
  import "./chunk-QTOLNRET.js";
32
32
  import {
33
33
  DECISION_STOP_REASON,
34
34
  UNVERIFIABLE_APPROVAL_REASON
35
- } from "./chunk-GZL3KEPC.js";
35
+ } from "./chunk-AXJLJJ3M.js";
36
36
  export {
37
37
  DECISION_STOP_REASON,
38
38
  UNVERIFIABLE_APPROVAL_REASON,
@@ -1,44 +1,44 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  handleBell
4
- } from "../chunk-XTZHUIGJ.js";
4
+ } from "../chunk-ATKN4BJT.js";
5
5
  import {
6
6
  readHookInput
7
- } from "../chunk-K5CAURU5.js";
8
- import "../chunk-TN74MUMB.js";
7
+ } from "../chunk-6MC2XXFD.js";
8
+ import "../chunk-CEQ2AZH4.js";
9
9
  import "../chunk-QW3FRUFB.js";
10
- import "../chunk-XWY4UW62.js";
11
- import "../chunk-QP3XPS5U.js";
12
- import "../chunk-KSVCCSAO.js";
13
- import "../chunk-ATUZX4K7.js";
14
- import "../chunk-ECJJKDP7.js";
15
- import "../chunk-QDFLBTUP.js";
16
- import "../chunk-GMXKITVA.js";
17
- import "../chunk-JSQOHMNJ.js";
18
- import "../chunk-N3NSWWNU.js";
19
- import "../chunk-C3IWX6KU.js";
10
+ import "../chunk-PUHP4IBA.js";
11
+ import "../chunk-HC3FHDKB.js";
12
+ import "../chunk-CDQHQAS7.js";
13
+ import "../chunk-IF26ZGZ7.js";
14
+ import "../chunk-XV6S5PWW.js";
15
+ import "../chunk-4MUFZU2G.js";
16
+ import "../chunk-NMUI3ZWG.js";
17
+ import "../chunk-2AELPDMT.js";
18
+ import "../chunk-GAMVAORR.js";
19
+ import "../chunk-7JXJJNQ5.js";
20
20
  import "../chunk-XHKBHWLX.js";
21
21
  import "../chunk-6ICPEJY5.js";
22
- import "../chunk-IRZ5FVWG.js";
23
- import "../chunk-RF74KBF5.js";
24
- import "../chunk-QTCFEKLJ.js";
25
- import "../chunk-XXNT4FGA.js";
26
- import "../chunk-DQ565WFA.js";
27
- import "../chunk-ZL3UR6M5.js";
22
+ import "../chunk-WN3RACVD.js";
23
+ import "../chunk-W2IVTHIG.js";
24
+ import "../chunk-33OOEVPG.js";
25
+ import "../chunk-YPD3MTFU.js";
26
+ import "../chunk-EZHY65QA.js";
27
+ import "../chunk-SEILUNWB.js";
28
28
  import "../chunk-POFBE6ZY.js";
29
- import "../chunk-S54YLXWW.js";
30
- import "../chunk-5DZHKNBU.js";
31
- import "../chunk-IJ6XKKQW.js";
32
- import "../chunk-7QLSKOSU.js";
29
+ import "../chunk-METMK3L4.js";
30
+ import "../chunk-4MWRR5IT.js";
31
+ import "../chunk-O6IUZGWV.js";
32
+ import "../chunk-PPY5N2E6.js";
33
33
  import "../chunk-KZERVKTD.js";
34
- import "../chunk-7RZO6VWD.js";
35
- import "../chunk-MYBCXDIL.js";
36
- import "../chunk-WVP6UQG3.js";
34
+ import "../chunk-Y5VKZNFN.js";
35
+ import "../chunk-6MJWYYAS.js";
36
+ import "../chunk-2QREHU4O.js";
37
37
  import "../chunk-QENTGE75.js";
38
- import "../chunk-LVDC3RUE.js";
39
- import "../chunk-5SFM6XB4.js";
38
+ import "../chunk-BG4Y64FW.js";
39
+ import "../chunk-ERK24P76.js";
40
40
  import "../chunk-QTOLNRET.js";
41
- import "../chunk-GZL3KEPC.js";
41
+ import "../chunk-AXJLJJ3M.js";
42
42
 
43
43
  // bin/pushary-bell-hook.ts
44
44
  var main = async () => {
@@ -5,41 +5,41 @@ import {
5
5
  liveAgentCount,
6
6
  ring,
7
7
  upgradeThreshold
8
- } from "../chunk-XTZHUIGJ.js";
8
+ } from "../chunk-ATKN4BJT.js";
9
9
  import {
10
10
  createIo
11
11
  } from "../chunk-FO3MDD26.js";
12
12
  import {
13
13
  exitOnHelpFlag
14
- } from "../chunk-M7NX25ZA.js";
14
+ } from "../chunk-K4MBKXAE.js";
15
15
  import {
16
16
  addBellHooks,
17
17
  bellInstalled,
18
18
  removeBellHooks
19
- } from "../chunk-QDFLBTUP.js";
19
+ } from "../chunk-4MUFZU2G.js";
20
20
  import {
21
21
  parseFlags
22
- } from "../chunk-GMXKITVA.js";
23
- import "../chunk-IRZ5FVWG.js";
24
- import "../chunk-7QLSKOSU.js";
22
+ } from "../chunk-NMUI3ZWG.js";
23
+ import "../chunk-WN3RACVD.js";
24
+ import "../chunk-PPY5N2E6.js";
25
25
  import {
26
26
  EXIT
27
27
  } from "../chunk-KZERVKTD.js";
28
- import "../chunk-7RZO6VWD.js";
28
+ import "../chunk-Y5VKZNFN.js";
29
29
  import {
30
30
  claudeSettings
31
- } from "../chunk-MYBCXDIL.js";
32
- import "../chunk-WVP6UQG3.js";
31
+ } from "../chunk-6MJWYYAS.js";
32
+ import "../chunk-2QREHU4O.js";
33
33
  import {
34
34
  readJsonSafe,
35
35
  writeJsonAtomic
36
36
  } from "../chunk-QENTGE75.js";
37
- import "../chunk-LVDC3RUE.js";
38
- import "../chunk-5SFM6XB4.js";
37
+ import "../chunk-BG4Y64FW.js";
38
+ import "../chunk-ERK24P76.js";
39
39
  import "../chunk-QTOLNRET.js";
40
40
  import {
41
41
  isRecord
42
- } from "../chunk-GZL3KEPC.js";
42
+ } from "../chunk-AXJLJJ3M.js";
43
43
 
44
44
  // bin/pushary-bell.ts
45
45
  exitOnHelpFlag("bell");
@@ -8,40 +8,40 @@ import {
8
8
  describeIdleWindow,
9
9
  startProcessOwnership,
10
10
  withSpawnProcessOwnership
11
- } from "../chunk-CK5BCFQF.js";
11
+ } from "../chunk-7WFRY6OL.js";
12
12
  import "../chunk-VUFHYMSP.js";
13
13
  import {
14
14
  announceSubscriptionRequired,
15
15
  isDeferAnswer
16
- } from "../chunk-VPZ5K72D.js";
16
+ } from "../chunk-RPPXQNIA.js";
17
17
  import {
18
18
  claudeTranscriptPath,
19
19
  loadSessionKey,
20
20
  registerTranscript,
21
21
  registeredTranscriptEnabled
22
- } from "../chunk-TN74MUMB.js";
22
+ } from "../chunk-CEQ2AZH4.js";
23
23
  import "../chunk-QW3FRUFB.js";
24
24
  import {
25
25
  ensureDaemonRunning
26
- } from "../chunk-QP3XPS5U.js";
27
- import "../chunk-KSVCCSAO.js";
28
- import "../chunk-ATUZX4K7.js";
29
- import "../chunk-ECJJKDP7.js";
30
- import "../chunk-QDFLBTUP.js";
31
- import "../chunk-GMXKITVA.js";
26
+ } from "../chunk-HC3FHDKB.js";
27
+ import "../chunk-CDQHQAS7.js";
28
+ import "../chunk-IF26ZGZ7.js";
29
+ import "../chunk-XV6S5PWW.js";
30
+ import "../chunk-4MUFZU2G.js";
31
+ import "../chunk-NMUI3ZWG.js";
32
32
  import {
33
33
  encryptRecord
34
- } from "../chunk-JSQOHMNJ.js";
35
- import "../chunk-N3NSWWNU.js";
34
+ } from "../chunk-2AELPDMT.js";
35
+ import "../chunk-GAMVAORR.js";
36
36
  import {
37
37
  transcriptsEnabled
38
- } from "../chunk-C3IWX6KU.js";
38
+ } from "../chunk-7JXJJNQ5.js";
39
39
  import {
40
40
  needsShell,
41
41
  spawnClaude
42
42
  } from "../chunk-XHKBHWLX.js";
43
43
  import "../chunk-6ICPEJY5.js";
44
- import "../chunk-IRZ5FVWG.js";
44
+ import "../chunk-WN3RACVD.js";
45
45
  import {
46
46
  DEFAULT_SESSION,
47
47
  UNNAMED_ACTION,
@@ -58,11 +58,11 @@ import {
58
58
  reportEvent,
59
59
  savePendingCommand,
60
60
  scopePathFor
61
- } from "../chunk-RF74KBF5.js";
62
- import "../chunk-QTCFEKLJ.js";
61
+ } from "../chunk-W2IVTHIG.js";
62
+ import "../chunk-33OOEVPG.js";
63
63
  import {
64
64
  repoKeyFor
65
- } from "../chunk-XXNT4FGA.js";
65
+ } from "../chunk-YPD3MTFU.js";
66
66
  import {
67
67
  askUser,
68
68
  cancelQuestion,
@@ -73,29 +73,31 @@ import {
73
73
  waitForAnswer,
74
74
  waitsForThePhone,
75
75
  withdrawQuestion
76
- } from "../chunk-DQ565WFA.js";
76
+ } from "../chunk-EZHY65QA.js";
77
77
  import {
78
78
  SubscriptionRequiredError
79
- } from "../chunk-ZL3UR6M5.js";
79
+ } from "../chunk-SEILUNWB.js";
80
80
  import "../chunk-POFBE6ZY.js";
81
- import "../chunk-S54YLXWW.js";
82
- import "../chunk-5DZHKNBU.js";
81
+ import "../chunk-METMK3L4.js";
82
+ import "../chunk-4MWRR5IT.js";
83
83
  import {
84
84
  getMachineId
85
- } from "../chunk-IJ6XKKQW.js";
86
- import "../chunk-7QLSKOSU.js";
85
+ } from "../chunk-O6IUZGWV.js";
86
+ import "../chunk-PPY5N2E6.js";
87
87
  import "../chunk-KZERVKTD.js";
88
- import "../chunk-7RZO6VWD.js";
89
- import "../chunk-MYBCXDIL.js";
90
- import "../chunk-WVP6UQG3.js";
88
+ import "../chunk-Y5VKZNFN.js";
89
+ import {
90
+ claudeConfigDir
91
+ } from "../chunk-6MJWYYAS.js";
92
+ import "../chunk-2QREHU4O.js";
91
93
  import "../chunk-QENTGE75.js";
92
94
  import {
93
95
  getApiKey,
94
96
  getBaseUrl
95
- } from "../chunk-LVDC3RUE.js";
97
+ } from "../chunk-BG4Y64FW.js";
96
98
  import {
97
99
  NPX_LATEST_COMMAND
98
- } from "../chunk-5SFM6XB4.js";
100
+ } from "../chunk-ERK24P76.js";
99
101
  import "../chunk-QTOLNRET.js";
100
102
  import {
101
103
  DECISION_STOP_REASON,
@@ -106,7 +108,7 @@ import {
106
108
  redactSecretsFromContent,
107
109
  resolveGate,
108
110
  timeoutActionWithoutLocalPrompt
109
- } from "../chunk-GZL3KEPC.js";
111
+ } from "../chunk-AXJLJJ3M.js";
110
112
 
111
113
  // src/wrapper/localPassthrough.ts
112
114
  var SIGNAL_NUMBERS = {
@@ -1228,7 +1230,6 @@ var remoteCompatibilityIssue = (args2) => {
1228
1230
 
1229
1231
  // src/wrapper/localLeg.ts
1230
1232
  import { readFileSync } from "fs";
1231
- import { homedir as homedir2 } from "os";
1232
1233
  import { join as join2 } from "path";
1233
1234
  var SIGNAL_EXIT_BASE = 128;
1234
1235
  var SIGNAL_NUMBERS2 = { SIGHUP: 1, SIGINT: 2, SIGTERM: 15 };
@@ -1299,7 +1300,7 @@ var runLocalLeg = (session, deps = {}) => {
1299
1300
  const readIdentity = () => {
1300
1301
  if (!child.pid) return;
1301
1302
  try {
1302
- const root = process.env.CLAUDE_CONFIG_DIR || join2(homedir2(), ".claude");
1303
+ const root = claudeConfigDir();
1303
1304
  const record = JSON.parse(readFileSync(join2(root, "sessions", `${child.pid}.json`), "utf8"));
1304
1305
  if (record.pid !== child.pid || record.cwd !== process.cwd() || record.startedAt < spawnedAt - 5e3 || typeof record.startedAt !== "number" || !/^[a-f0-9-]{36}$/i.test(record.sessionId)) return;
1305
1306
  if (record.sessionId !== session.getSessionId()) session.setSessionId(record.sessionId);
@@ -15,26 +15,26 @@ import {
15
15
  storedMacAppState,
16
16
  storedPusharyKeychainServices,
17
17
  waitForMacAppExit
18
- } from "../chunk-XEJV3QSS.js";
18
+ } from "../chunk-4PZXI7WU.js";
19
19
  import {
20
20
  PUSHARY_SKILL_NAME,
21
21
  PUSHARY_SKILL_SOURCE,
22
22
  createGuards
23
23
  } from "../chunk-EUW7JL2K.js";
24
- import "../chunk-ZJNU32VE.js";
24
+ import "../chunk-Y5V4PA2Z.js";
25
25
  import "../chunk-XCEN33UP.js";
26
26
  import {
27
27
  describeCliKeyRevocation,
28
28
  planCliKeyRevocations,
29
29
  readCliHeldKeys,
30
30
  revokeCliKeys
31
- } from "../chunk-X6F4BQEE.js";
32
- import "../chunk-VLJ5C6IT.js";
31
+ } from "../chunk-CSOROFJY.js";
32
+ import "../chunk-YGE6ML3O.js";
33
33
  import {
34
34
  isCursorPluginLeftover,
35
35
  releaseSoleGate,
36
36
  withoutPusharyCursorHooks
37
- } from "../chunk-3WNOO7BM.js";
37
+ } from "../chunk-WXPVVXBU.js";
38
38
  import {
39
39
  HERMES_PIP_PACKAGE,
40
40
  readHermesStatus,
@@ -43,21 +43,21 @@ import {
43
43
  shortenHome,
44
44
  unregisterPluginLocation,
45
45
  vscodeSettingsTargets
46
- } from "../chunk-MCHOBQHE.js";
46
+ } from "../chunk-S54C6TQC.js";
47
47
  import {
48
48
  macAppKeepsMcpEntry,
49
49
  mcpServerBearer,
50
50
  pusharyKey,
51
51
  readMacAppAgentKey,
52
52
  setupReceiptKey
53
- } from "../chunk-T2BEIPK2.js";
53
+ } from "../chunk-U7NR4JVD.js";
54
54
  import "../chunk-QCGNGEGE.js";
55
- import "../chunk-4YNNAF53.js";
55
+ import "../chunk-ADR3KHOC.js";
56
56
  import {
57
57
  planFxRemoval,
58
58
  removeInstructionBlock
59
- } from "../chunk-HUWLEVL2.js";
60
- import "../chunk-4LUPZ347.js";
59
+ } from "../chunk-WXZHQ3TT.js";
60
+ import "../chunk-FDWMG6NY.js";
61
61
  import {
62
62
  OPENCODE_PLUGIN_SIBLING,
63
63
  OPENCODE_PLUGIN_SIBLING_CONTENTS,
@@ -69,14 +69,14 @@ import {
69
69
  openCodePluginDir,
70
70
  openCodePluginFile,
71
71
  removeOpenCodeMcpServer
72
- } from "../chunk-T2AC5VFQ.js";
72
+ } from "../chunk-QGSHV3WO.js";
73
73
  import {
74
74
  ansiPainter,
75
75
  useColor
76
76
  } from "../chunk-FO3MDD26.js";
77
77
  import {
78
78
  exitOnHelpFlag
79
- } from "../chunk-M7NX25ZA.js";
79
+ } from "../chunk-K4MBKXAE.js";
80
80
  import "../chunk-VUFHYMSP.js";
81
81
  import {
82
82
  compatibleConfigFile,
@@ -94,10 +94,10 @@ import {
94
94
  removePusharyToolPermissions,
95
95
  restoreClaudeMcpServer,
96
96
  serializeConfigDocument
97
- } from "../chunk-XWY4UW62.js";
97
+ } from "../chunk-PUHP4IBA.js";
98
98
  import {
99
99
  disableDaemonService
100
- } from "../chunk-QP3XPS5U.js";
100
+ } from "../chunk-HC3FHDKB.js";
101
101
  import {
102
102
  hookOwnerOf,
103
103
  isHookTakeoverReceipt,
@@ -105,15 +105,15 @@ import {
105
105
  resolveBridgeStub,
106
106
  restoreHookTakeover,
107
107
  restoreMcpServer
108
- } from "../chunk-KSVCCSAO.js";
108
+ } from "../chunk-CDQHQAS7.js";
109
109
  import {
110
110
  removeGeminiSettings
111
- } from "../chunk-ATUZX4K7.js";
112
- import "../chunk-ECJJKDP7.js";
113
- import "../chunk-QDFLBTUP.js";
111
+ } from "../chunk-IF26ZGZ7.js";
112
+ import "../chunk-XV6S5PWW.js";
113
+ import "../chunk-4MUFZU2G.js";
114
114
  import {
115
- rejectUnknownFlags
116
- } from "../chunk-GMXKITVA.js";
115
+ parseFlags
116
+ } from "../chunk-NMUI3ZWG.js";
117
117
  import "../chunk-XHKBHWLX.js";
118
118
  import "../chunk-6ICPEJY5.js";
119
119
  import {
@@ -121,28 +121,30 @@ import {
121
121
  isDisabledExport,
122
122
  removeClaudeAlias,
123
123
  shellProfileCandidates
124
- } from "../chunk-IRZ5FVWG.js";
124
+ } from "../chunk-WN3RACVD.js";
125
125
  import "../chunk-E46NE7FB.js";
126
- import "../chunk-RF74KBF5.js";
127
- import "../chunk-QTCFEKLJ.js";
128
- import "../chunk-XXNT4FGA.js";
129
- import "../chunk-DQ565WFA.js";
130
- import "../chunk-ZL3UR6M5.js";
126
+ import "../chunk-W2IVTHIG.js";
127
+ import "../chunk-33OOEVPG.js";
128
+ import "../chunk-YPD3MTFU.js";
129
+ import "../chunk-EZHY65QA.js";
130
+ import "../chunk-SEILUNWB.js";
131
131
  import "../chunk-POFBE6ZY.js";
132
- import "../chunk-S54YLXWW.js";
133
- import "../chunk-5DZHKNBU.js";
134
- import "../chunk-IJ6XKKQW.js";
135
- import "../chunk-7QLSKOSU.js";
132
+ import "../chunk-METMK3L4.js";
133
+ import "../chunk-4MWRR5IT.js";
134
+ import "../chunk-O6IUZGWV.js";
135
+ import "../chunk-PPY5N2E6.js";
136
136
  import {
137
137
  EXIT
138
138
  } from "../chunk-KZERVKTD.js";
139
- import "../chunk-7RZO6VWD.js";
139
+ import "../chunk-Y5VKZNFN.js";
140
140
  import {
141
+ claudeConfigDir,
141
142
  claudeJson,
142
143
  claudeMcpReceipt,
143
144
  claudeSettings,
144
145
  claudeSettingsLocal,
145
146
  claudeSkillDir,
147
+ claudeUserConfigFile,
146
148
  codexAgentsMd,
147
149
  codexConfigToml,
148
150
  codexHookPositions,
@@ -168,21 +170,21 @@ import {
168
170
  restoreCodexHookTrust,
169
171
  vscodePluginDir,
170
172
  vscodePluginMcp
171
- } from "../chunk-MYBCXDIL.js";
173
+ } from "../chunk-6MJWYYAS.js";
172
174
  import {
173
175
  cleanNpmEnv,
174
176
  globalPackageState,
175
177
  npmIsOnPath,
176
178
  readGlobalFolder,
177
179
  readGlobalPrefix
178
- } from "../chunk-WVP6UQG3.js";
180
+ } from "../chunk-2QREHU4O.js";
179
181
  import "../chunk-QENTGE75.js";
180
182
  import {
181
183
  getBaseUrl
182
- } from "../chunk-LVDC3RUE.js";
184
+ } from "../chunk-BG4Y64FW.js";
183
185
  import {
184
186
  NPX_LATEST_COMMAND
185
- } from "../chunk-5SFM6XB4.js";
187
+ } from "../chunk-ERK24P76.js";
186
188
  import {
187
189
  CLI_PACKAGE_NAMES,
188
190
  globalPackageFolder,
@@ -196,11 +198,11 @@ import {
196
198
  SUPPORT_EMAIL,
197
199
  isValidApiKey,
198
200
  redactSecrets
199
- } from "../chunk-GZL3KEPC.js";
201
+ } from "../chunk-AXJLJJ3M.js";
200
202
 
201
203
  // bin/pushary-clean.ts
202
204
  import { existsSync as existsSync5, readFileSync as readFileSync4, copyFileSync, readdirSync as readdirSync4 } from "fs";
203
- import { dirname, join as join5 } from "path";
205
+ import { dirname as dirname2, join as join5 } from "path";
204
206
  import { homedir as homedir4, tmpdir } from "os";
205
207
  import { confirm } from "@inquirer/prompts";
206
208
  import { parse as parseTOML, stringify as stringifyTOML } from "smol-toml";
@@ -357,11 +359,11 @@ var skillsStoreRemoval = (home = homedir2()) => {
357
359
  // src/cli/claude-backups.ts
358
360
  import { existsSync as existsSync4, readFileSync as readFileSync3, readdirSync as readdirSync2 } from "fs";
359
361
  import { homedir as homedir3 } from "os";
360
- import { join as join3 } from "path";
362
+ import { dirname, join as join3 } from "path";
361
363
  var BACKUP_PREFIX = ".claude.json.backup";
362
364
  var claudeJsonBackups = (home = homedir3()) => {
363
- const rollingDir = join3(home, ".claude", "backups");
364
- const legacy = join3(home, BACKUP_PREFIX);
365
+ const rollingDir = join3(claudeConfigDir(home), "backups");
366
+ const legacy = join3(dirname(claudeUserConfigFile(home)), BACKUP_PREFIX);
365
367
  const rolling = existsSync4(rollingDir) ? readdirSync2(rollingDir).filter((name) => name.startsWith(BACKUP_PREFIX)).sort().map((name) => join3(rollingDir, name)) : [];
366
368
  return existsSync4(legacy) ? [...rolling, legacy] : rolling;
367
369
  };
@@ -572,7 +574,7 @@ var guards = createGuards(() => dryRun, wouldNote);
572
574
  var guardedWrite = (path, contents) => guards.write(path, contents);
573
575
  var guardedRemove = (path, options) => guards.remove(path, options);
574
576
  var cursorPluginLeftovers = () => {
575
- const parent = dirname(CURSOR_PLUGIN_DIR);
577
+ const parent = dirname2(CURSOR_PLUGIN_DIR);
576
578
  try {
577
579
  return readdirSync4(parent).filter(isCursorPluginLeftover).map((name) => join5(parent, name));
578
580
  } catch {
@@ -666,13 +668,13 @@ var cleanSettingsFile = (path, label, scope) => {
666
668
  };
667
669
  var agentConfigDirectories = () => [
668
670
  homedir4(),
669
- dirname(CLAUDE_SETTINGS),
670
- dirname(codexConfigToml()),
671
- dirname(geminiSettings()),
672
- dirname(CURSOR_USER_HOOKS),
671
+ dirname2(CLAUDE_SETTINGS),
672
+ dirname2(codexConfigToml()),
673
+ dirname2(geminiSettings()),
674
+ dirname2(CURSOR_USER_HOOKS),
673
675
  openCodeConfigDir(),
674
676
  fxConfigDir(),
675
- ...vscodeSettingsTargets(existsSync5).map((settings) => dirname(settings))
677
+ ...vscodeSettingsTargets(existsSync5).map((settings) => dirname2(settings))
676
678
  ];
677
679
  var restoreTakeoverReceipts = () => {
678
680
  const targets = [
@@ -754,23 +756,26 @@ var main = async () => {
754
756
  console.log(` ${bold("Pushary Clean")}`);
755
757
  console.log(` ${dim("Removes all Pushary configuration")}`);
756
758
  console.log();
759
+ let flags;
757
760
  try {
758
- rejectUnknownFlags(
759
- process.argv.slice(2).filter((a) => a !== "clean"),
760
- ["--dry-run", "--everything", "--yes", "-y", "--help", "-h"]
761
+ const args = process.argv.slice(2);
762
+ flags = parseFlags(
763
+ args[0] === "clean" ? args.slice(1) : args,
764
+ { bools: ["dry-run", "everything", "yes", "y"], values: [] }
761
765
  );
766
+ if (flags.command !== void 0 || flags.rest.length > 0) throw new Error("clean takes no positional arguments");
762
767
  } catch (err) {
763
768
  process.stderr.write(` ! ${err instanceof Error ? err.message : String(err)}
764
769
  `);
765
770
  process.exit(EXIT.USAGE);
766
771
  }
767
- dryRun = process.argv.includes("--dry-run");
768
- const everything = process.argv.includes("--everything");
772
+ dryRun = flags.bools.has("dry-run");
773
+ const everything = flags.bools.has("everything");
769
774
  if (dryRun) {
770
775
  console.log(` ${bold("Dry run")} ${dim("- nothing will be changed")}`);
771
776
  console.log();
772
777
  }
773
- const assumeYes = dryRun || process.argv.includes("--yes") || process.argv.includes("-y");
778
+ const assumeYes = dryRun || flags.bools.has("yes") || flags.bools.has("y");
774
779
  if (!assumeYes && !process.stdin.isTTY) {
775
780
  console.log(` ${yellow("!")} Non-interactive shell. Re-run with --yes to confirm removal.`);
776
781
  process.exit(1);
@@ -858,7 +863,7 @@ var main = async () => {
858
863
  console.log(` ${skip} Claude Code MCP servers ${dim("(setup receipt is unreadable; left unchanged)")}`);
859
864
  } else if (receipt && restoreClaudeMcpServer(claudeJson2, receipt) || !receipt && removeClaudeMcpServers(claudeJson2)) {
860
865
  writeJson(CLAUDE_JSON, claudeJson2);
861
- console.log(` ${check} Claude Code MCP servers ${dim(receipt ? "(previous entry restored)" : "(removed from ~/.claude.json)")}`);
866
+ console.log(` ${check} Claude Code MCP servers ${dim(receipt ? "(previous entry restored)" : `(removed from ${shortenHome(CLAUDE_JSON)})`)}`);
862
867
  if (keepShared && receipt) guardedRemove(CLAUDE_MCP_RECEIPT, { force: true });
863
868
  } else {
864
869
  if (receipt && !keepShared) incompleteClean = true;