@pushary/agent-hooks 1.9.64 → 1.9.66

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 (123) hide show
  1. package/CHANGELOG.md +18 -1
  2. package/dist/{api-HDLTZTVR.js → api-GDSVUTI2.js} +12 -10
  3. package/dist/bin/pushary-bell-hook.js +25 -27
  4. package/dist/bin/pushary-bell.js +10 -10
  5. package/dist/bin/pushary-claude.js +26 -28
  6. package/dist/bin/pushary-clean.js +39 -36
  7. package/dist/bin/pushary-codex-bridge.js +21 -22
  8. package/dist/bin/pushary-codex-hook.js +30 -32
  9. package/dist/bin/pushary-codex-session.js +8 -8
  10. package/dist/bin/pushary-codex.js +13 -13
  11. package/dist/bin/pushary-connect.js +25 -26
  12. package/dist/bin/pushary-cowork.js +5 -5
  13. package/dist/bin/pushary-daemon.js +37 -39
  14. package/dist/bin/pushary-disconnect.js +25 -26
  15. package/dist/bin/pushary-doctor.js +66 -44
  16. package/dist/bin/pushary-elicitation-hook.js +25 -27
  17. package/dist/bin/pushary-gemini-bridge.js +15 -16
  18. package/dist/bin/pushary-gemini-hook.js +27 -29
  19. package/dist/bin/pushary-hook.js +29 -31
  20. package/dist/bin/pushary-login.js +19 -19
  21. package/dist/bin/pushary-logout.js +25 -26
  22. package/dist/bin/pushary-mcp.js +11 -11
  23. package/dist/bin/pushary-mode.js +14 -14
  24. package/dist/bin/pushary-notification-hook.js +24 -26
  25. package/dist/bin/pushary-opencode-hook.js +26 -28
  26. package/dist/bin/pushary-permission-denied-hook.js +29 -31
  27. package/dist/bin/pushary-permission-hook.js +32 -31
  28. package/dist/bin/pushary-post-hook.js +24 -26
  29. package/dist/bin/pushary-prompt-hook.js +24 -26
  30. package/dist/bin/pushary-session-end-hook.js +26 -28
  31. package/dist/bin/pushary-session-start-hook.js +33 -35
  32. package/dist/bin/pushary-setup.js +68 -54
  33. package/dist/bin/pushary-stats.js +5 -5
  34. package/dist/bin/pushary-status.js +30 -31
  35. package/dist/bin/pushary-stop-hook.js +24 -26
  36. package/dist/bin/pushary-stopfailure-hook.js +24 -26
  37. package/dist/bin/pushary-suggestions.js +14 -14
  38. package/dist/bin/pushary-transcript-register.js +16 -18
  39. package/dist/bin/pushary-transcripts.js +17 -17
  40. package/dist/bin/pushary-upgrade.js +37 -38
  41. package/dist/bin/pushary-wait.js +14 -14
  42. package/dist/bin/pushary.js +7 -7
  43. package/dist/{chunk-7UBDBJTG.js → chunk-26W46E46.js} +4 -4
  44. package/dist/{chunk-MIPJ2VXP.js → chunk-2BL6KWN7.js} +9 -9
  45. package/dist/{chunk-42PD2MQH.js → chunk-32ZT2ATY.js} +5 -5
  46. package/dist/{chunk-2EY4HGLG.js → chunk-376TUN72.js} +3 -3
  47. package/dist/{chunk-A5KQXZR7.js → chunk-3ELJIG2R.js} +3 -3
  48. package/dist/{chunk-ML2Q6WWE.js → chunk-3EZP5ZPS.js} +5 -4
  49. package/dist/{chunk-66FRMK7V.js → chunk-3FQX74E4.js} +3 -3
  50. package/dist/{chunk-HVOQUPSO.js → chunk-45KMS76L.js} +1 -1
  51. package/dist/{chunk-LA7CKRZN.js → chunk-4APD2DPI.js} +2 -2
  52. package/dist/{chunk-5NP3OJ5P.js → chunk-57NTMVMI.js} +6 -6
  53. package/dist/{chunk-NYV45Q25.js → chunk-5FJDODOA.js} +3 -3
  54. package/dist/{chunk-RY4EPMZX.js → chunk-5J7OZBJ4.js} +2 -2
  55. package/dist/{chunk-XJIIU36L.js → chunk-6BGVSV2Q.js} +1 -1
  56. package/dist/{chunk-2YXBCZ3Z.js → chunk-6RJZSBPD.js} +1 -1
  57. package/dist/{chunk-MPPTIZ2G.js → chunk-6ZXCWK27.js} +5 -5
  58. package/dist/{chunk-VNRWQCGU.js → chunk-7LK3Y6ET.js} +63 -6
  59. package/dist/{chunk-Y64JGYTB.js → chunk-A47UKPC7.js} +1 -1
  60. package/dist/{chunk-5TNGBDIE.js → chunk-AVWECJSN.js} +2 -2
  61. package/dist/{chunk-CCNH4PJ2.js → chunk-AWGBL4P3.js} +211 -24
  62. package/dist/{chunk-LMC5UPL7.js → chunk-B6JC676X.js} +1 -1
  63. package/dist/{chunk-QPPBH5NY.js → chunk-CN6JFM62.js} +5 -5
  64. package/dist/{chunk-BLAIETMP.js → chunk-CNJ7SI5V.js} +4 -4
  65. package/dist/{chunk-DVYVGBPB.js → chunk-DBUHSUL7.js} +1 -1
  66. package/dist/{chunk-CJADXAJU.js → chunk-DIUTSF6I.js} +4 -4
  67. package/dist/{chunk-JX3DHGZX.js → chunk-DKMVVBXO.js} +30 -17
  68. package/dist/{chunk-2CEVEMJE.js → chunk-DPU6H4JY.js} +3 -3
  69. package/dist/{chunk-MNKIR2ZB.js → chunk-EJR5JXMV.js} +24 -1
  70. package/dist/{chunk-VHKK3US3.js → chunk-EU2ZOZC3.js} +3 -3
  71. package/dist/{chunk-AN7C3CHH.js → chunk-G6VJZ3RB.js} +1 -1
  72. package/dist/{chunk-H4BKC2GN.js → chunk-GDLT32I4.js} +3 -3
  73. package/dist/{chunk-EEM65CGJ.js → chunk-GECU7V44.js} +3 -3
  74. package/dist/{chunk-BAGBCSXA.js → chunk-GO7YKPT3.js} +1 -1
  75. package/dist/{chunk-QECRQWLV.js → chunk-GWYCKTXS.js} +5 -5
  76. package/dist/{chunk-2PKHGHMA.js → chunk-HUGVJBDN.js} +2 -2
  77. package/dist/{chunk-ADRPW7KU.js → chunk-IA5VWIHV.js} +2 -2
  78. package/dist/{chunk-6HPLEGUP.js → chunk-IGO3AGZK.js} +4 -4
  79. package/dist/{chunk-PMLQRB3D.js → chunk-IQ3GKPFM.js} +1 -1
  80. package/dist/{chunk-LV6DX4P6.js → chunk-JL3SZJJP.js} +2 -2
  81. package/dist/{chunk-BSZIPIFA.js → chunk-KS3O6O7E.js} +3 -3
  82. package/dist/{chunk-IZTDX2MX.js → chunk-MDIGG3Q7.js} +3 -3
  83. package/dist/{chunk-JTOBQUIL.js → chunk-MNNQEUQC.js} +3 -3
  84. package/dist/{chunk-2KID4FK4.js → chunk-Q5RNYE2L.js} +4 -4
  85. package/dist/{chunk-KX3RMF6T.js → chunk-QBNICXMC.js} +6 -6
  86. package/dist/{chunk-YUDZCJYC.js → chunk-QN25WBXL.js} +9 -7
  87. package/dist/{chunk-NUEPJ5W6.js → chunk-QOIPUYUD.js} +3 -5
  88. package/dist/{chunk-QNATBOUH.js → chunk-QR2QWGQI.js} +3 -3
  89. package/dist/{chunk-NOH3EJFH.js → chunk-R7C2FS33.js} +1 -1
  90. package/dist/{chunk-MXPOLQZH.js → chunk-RJ6JEHCP.js} +1 -1
  91. package/dist/{chunk-E2LB6JNV.js → chunk-RSZQEEEW.js} +7 -6
  92. package/dist/{chunk-57PU5OBL.js → chunk-SVKCYUYP.js} +11 -13
  93. package/dist/{chunk-DCMRNIDM.js → chunk-T6YLXO6N.js} +4 -4
  94. package/dist/{chunk-Q6ID23SU.js → chunk-TQNFDNJA.js} +6 -6
  95. package/dist/{chunk-SROWUG5W.js → chunk-UTAARXYQ.js} +1 -1
  96. package/dist/{chunk-OQKSF5ST.js → chunk-V3YBVOTZ.js} +2 -2
  97. package/dist/{chunk-XF3AWNMO.js → chunk-V4EOFOB2.js} +6 -6
  98. package/dist/{chunk-PLMX3IHG.js → chunk-VURDLVAQ.js} +3 -3
  99. package/dist/{chunk-AQAPPSDV.js → chunk-XDDSURY3.js} +3 -3
  100. package/dist/{chunk-QSW3HAKI.js → chunk-XEXF2OFZ.js} +61 -2
  101. package/dist/{chunk-2Z7I7DHT.js → chunk-XFQAK35L.js} +1 -1
  102. package/dist/{chunk-5TUDGSDC.js → chunk-XGFFNERF.js} +1 -1
  103. package/dist/{chunk-2VADJ6JH.js → chunk-XIJTXRWB.js} +2 -2
  104. package/dist/{chunk-3KXBRSL3.js → chunk-XXIJBYNW.js} +1 -1
  105. package/dist/{chunk-O7PCNYEY.js → chunk-YB3HMDKE.js} +2 -2
  106. package/dist/{chunk-KA7JIMTG.js → chunk-YQDCTID4.js} +115 -9
  107. package/dist/{chunk-E23RKH3T.js → chunk-ZAZUDYSF.js} +26 -12
  108. package/dist/{chunk-TR3GP5MH.js → chunk-ZJV7SFIJ.js} +1 -1
  109. package/dist/{codex-app-cards-switch-JQ6356VX.js → codex-app-cards-switch-W7OLKOMO.js} +11 -11
  110. package/dist/{codex-desktop-launch-YUB2LOAG.js → codex-desktop-launch-U6V3AXZF.js} +1 -1
  111. package/dist/{codex-session-launch-UKMAORXS.js → codex-session-launch-EFU46WBL.js} +18 -19
  112. package/dist/{config-YY54G3CC.js → config-UC4LMCNX.js} +3 -3
  113. package/dist/{global-upgrade-Y4USGPS2.js → global-upgrade-ABF5O3HU.js} +10 -10
  114. package/dist/{identity-W5CYL5RC.js → identity-3ZUZPHN6.js} +4 -4
  115. package/dist/{live-capabilities-JRNNA5EP.js → live-capabilities-BXWXJARK.js} +5 -5
  116. package/dist/{paths-4MEBINV3.js → paths-FO76CFRQ.js} +3 -3
  117. package/dist/{reapply-ZN7C3CB3.js → reapply-3T3DFUAI.js} +26 -27
  118. package/dist/src/index.js +30 -20
  119. package/dist/{upgrade-lock-QAWUV2DO.js → upgrade-lock-EZ5JIPJE.js} +4 -4
  120. package/dist/{usage-43C2DHDU.js → usage-Y6BL7RUD.js} +3 -3
  121. package/package.json +1 -1
  122. package/dist/chunk-6QPDBD7Q.js +0 -118
  123. package/dist/chunk-TJUJAK5L.js +0 -62
package/CHANGELOG.md CHANGED
@@ -1,5 +1,22 @@
1
1
  # Changelog
2
2
 
3
+ ## 1.9.66
4
+
5
+ - In Claude Code, an approval stays answerable from your phone and from the terminal at the same time, and whichever answers first wins. Before, Pushary held the call for its window (60 seconds by default) while the terminal showed only a spinner, then withdrew the phone question and left only the terminal. Now Claude Code shows its own prompt straight away, Pushary sends the same question to your phone, and the phone keeps it for up to 10 minutes. Answer at the terminal and Pushary withdraws the phone question. This applies in an interactive Claude Code session in default or accept-edits mode, when only Pushary's defaults ask about the call. In bypass mode, and in `claude -p` and other headless runs, there is no prompt to answer, so Pushary still holds the call as before.
6
+ - Claude Code always shows its prompt for these calls, even where its own allow rules, a "don't ask again" choice or accept-edits would have run them without asking.
7
+ - A phone-only rule that approves or denies after a set time still does that when nobody answers in time. Other rules, including the built-in ones, never decide a call nobody answered: the prompt stays open. If Pushary cannot reach your phone, the terminal prompt stays and you answer there.
8
+ - A rule you wrote, a preset you picked or a mode you switched to for now keeps the old behaviour, as you set it up. So does a Team approval route, which its approver answers, not the terminal.
9
+ - Setup, upgrade and the daily update add a proof of the 10 minute hold to the Claude Code permission hook. Until then, an older registration keeps the window your rule had before, with the terminal answerable from the start.
10
+ - With Pushary for Mac, approvals work as before for now.
11
+
12
+ ## 1.9.65
13
+
14
+ - OpenCode now asks before shell commands, edits and web fetches, so those approvals reach Pushary. Out of the box OpenCode runs all three without asking anybody, and Pushary's plugin can only answer what OpenCode asks, so until now an OpenCode set up by Pushary approved nothing. Setup sets `bash`, `edit` and `webfetch` to `ask` under `permission` in `opencode.json`, but only for a tool no rule of yours names. A rule for every tool (`"*"`), another name for the same tool (`shell`, `write`, `patch`), a switch under `tools`, a list of patterns and a single `permission` value all count as yours and stay as they are. Pushary's rules go before yours, and OpenCode follows the last rule that matches, so yours still decide.
15
+ - `pushary upgrade` and the daily update add the same rules to an OpenCode Pushary already set up, again only where you have set nothing, and list them as approval rules. They create no `opencode.json` and leave one they cannot read untouched.
16
+ - Setup and `pushary doctor` say which of the three OpenCode would still run without asking, and whether that is because no rule names it or because a rule of yours allows it. Doctor reports this as a warning, so it does not fail `pushary doctor`.
17
+ - `pushary clean` and `pushary disconnect opencode` leave these rules in place, because a rule may be one you set yourself. OpenCode then keeps asking in its own prompt.
18
+ - Pushary for Mac does not add these rules yet, and setup and upgrade leave an OpenCode the app set up to the app. On such a Mac, add `"bash": "ask"`, `"edit": "ask"` and `"webfetch": "ask"` under `permission` in `opencode.json` yourself.
19
+
3
20
  ## 1.9.64
4
21
 
5
22
  - Setup can connect Cline. Pick Cline, or run `npx pushary@latest setup --agents cline`. Setup adds the Pushary server, with your key, to `~/.cline/data/settings/cline_mcp_settings.json`, the file Cline 4 reads for both the VS Code extension and the Cline CLI. It honours `CLINE_DIR`, `CLINE_DATA_DIR` and `CLINE_MCP_SETTINGS_PATH` as Cline does, keeps every other server in the file, and waits for Cline's own lock on that file so it never writes over a change Cline is making. A file Cline cannot read either is left untouched.
@@ -22,7 +39,7 @@
22
39
 
23
40
  ## 1.9.62
24
41
 
25
- - In Cursor, each shell command and file change reaches your phone once. Cursor also runs Claude Code's hooks, so with Pushary's Cursor gate installed every gated call was asked about twice, once by each hook. The Claude Code hook now leaves a call from Cursor to the Cursor gate when `~/.cursor/hooks.json` registers that gate for that kind of call and the gate can answer it: its script is present and new enough to handle that kind of call, or the Pushary app is installed. Anything the Cursor gate does not cover is still asked about by the Claude Code hook. Commands the Cursor gate lets run without asking, such as ones that only read, no longer reach your phone through the Claude Code hook. This applies where this CLI runs Claude Code's hooks; while the Pushary Mac app runs them, calls from Cursor are still asked about twice until an app update.
42
+ - In Cursor, each shell command and file change reaches your phone once. Cursor also runs Claude Code's hooks, so with Pushary's Cursor gate installed every gated call was asked about twice, once by each hook. The Claude Code hook now leaves a call from Cursor to the Cursor gate when `~/.cursor/hooks.json` registers that gate for that kind of call and the gate can answer it: its script is present and new enough to handle that kind of call, or the Pushary app is installed. Anything the Cursor gate does not cover is still asked about by the Claude Code hook. Commands the Cursor gate lets run without asking, such as ones that only read, no longer reach your phone through the Claude Code hook. Pushary for Mac was never affected: it does not ask about the calls Cursor passes to Claude Code's hooks.
26
43
  - When a session already has as many open questions as Pushary allows, a new approval is never approved and nobody is asked again. Before, the hook stopped the agent and told it to retry, and every retry was refused again. Now the call goes to a prompt only where one is sure to follow: Claude Code's own prompt or permission dialog, the prompt of an agent that runs Claude Code's hooks and has one of its own, such as Grok, and Codex's own confirmation for a call Codex itself asked about. Everywhere else it is refused, with a message that says why: under a rule that refuses when nobody answers, in Codex before a tool runs, in Gemini CLI and OpenCode, in Antigravity CLI, in sessions started from your phone, and for a call from Cursor, because Cursor does not hold a call for a prompt. Gemini CLI under When I'm out hands the call to Gemini, as it did before. A question your agent asks you ends as an unanswered question, so its own picker, plan dialog or MCP form shows.
27
44
 
28
45
  ## 1.9.61
@@ -1,4 +1,5 @@
1
1
  import {
2
+ ABANDONED_WAIT,
2
3
  WAIT_RESPONSE_GRACE_MS,
3
4
  askUser,
4
5
  cancelQuestion,
@@ -16,25 +17,26 @@ import {
16
17
  waitForQuestion,
17
18
  waitsForThePhone,
18
19
  withdrawQuestion
19
- } from "./chunk-E23RKH3T.js";
20
+ } from "./chunk-ZAZUDYSF.js";
20
21
  import "./chunk-POFBE6ZY.js";
21
- import "./chunk-2KID4FK4.js";
22
- import "./chunk-QNATBOUH.js";
23
- import "./chunk-EEM65CGJ.js";
24
- import "./chunk-ADRPW7KU.js";
22
+ import "./chunk-Q5RNYE2L.js";
23
+ import "./chunk-QR2QWGQI.js";
24
+ import "./chunk-GECU7V44.js";
25
+ import "./chunk-IA5VWIHV.js";
25
26
  import "./chunk-PPY5N2E6.js";
26
27
  import "./chunk-KZERVKTD.js";
27
- import "./chunk-H4BKC2GN.js";
28
- import "./chunk-BSZIPIFA.js";
29
- import "./chunk-Y64JGYTB.js";
30
- import "./chunk-BAGBCSXA.js";
28
+ import "./chunk-GDLT32I4.js";
29
+ import "./chunk-KS3O6O7E.js";
30
+ import "./chunk-A47UKPC7.js";
31
+ import "./chunk-GO7YKPT3.js";
31
32
  import "./chunk-QTOLNRET.js";
32
33
  import {
33
34
  DECISION_STOP_REASON,
34
35
  UNVERIFIABLE_APPROVAL_REASON
35
- } from "./chunk-MNKIR2ZB.js";
36
+ } from "./chunk-EJR5JXMV.js";
36
37
  import "./chunk-MLKGABMK.js";
37
38
  export {
39
+ ABANDONED_WAIT,
38
40
  DECISION_STOP_REASON,
39
41
  UNVERIFIABLE_APPROVAL_REASON,
40
42
  WAIT_RESPONSE_GRACE_MS,
@@ -1,41 +1,39 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  handleBell
4
- } from "../chunk-2YXBCZ3Z.js";
4
+ } from "../chunk-6RJZSBPD.js";
5
5
  import {
6
6
  readHookInput
7
- } from "../chunk-YUDZCJYC.js";
8
- import "../chunk-57PU5OBL.js";
9
- import "../chunk-DVYVGBPB.js";
10
- import "../chunk-ML2Q6WWE.js";
11
- import "../chunk-5NP3OJ5P.js";
12
- import "../chunk-KA7JIMTG.js";
13
- import "../chunk-6QPDBD7Q.js";
14
- import "../chunk-SROWUG5W.js";
15
- import "../chunk-PMLQRB3D.js";
7
+ } from "../chunk-QN25WBXL.js";
8
+ import "../chunk-SVKCYUYP.js";
9
+ import "../chunk-DBUHSUL7.js";
10
+ import "../chunk-3EZP5ZPS.js";
11
+ import "../chunk-57NTMVMI.js";
12
+ import "../chunk-YQDCTID4.js";
13
+ import "../chunk-UTAARXYQ.js";
14
+ import "../chunk-IQ3GKPFM.js";
16
15
  import "../chunk-NMUI3ZWG.js";
17
- import "../chunk-QSW3HAKI.js";
18
- import "../chunk-TJUJAK5L.js";
19
- import "../chunk-5TUDGSDC.js";
16
+ import "../chunk-XEXF2OFZ.js";
17
+ import "../chunk-XGFFNERF.js";
20
18
  import "../chunk-XHKBHWLX.js";
21
- import "../chunk-BLAIETMP.js";
22
- import "../chunk-MIPJ2VXP.js";
23
- import "../chunk-3KXBRSL3.js";
24
- import "../chunk-E23RKH3T.js";
19
+ import "../chunk-CNJ7SI5V.js";
20
+ import "../chunk-2BL6KWN7.js";
21
+ import "../chunk-XXIJBYNW.js";
22
+ import "../chunk-ZAZUDYSF.js";
25
23
  import "../chunk-POFBE6ZY.js";
26
- import "../chunk-2KID4FK4.js";
27
- import "../chunk-QNATBOUH.js";
28
- import "../chunk-EEM65CGJ.js";
29
- import "../chunk-ADRPW7KU.js";
24
+ import "../chunk-Q5RNYE2L.js";
25
+ import "../chunk-QR2QWGQI.js";
26
+ import "../chunk-GECU7V44.js";
27
+ import "../chunk-IA5VWIHV.js";
30
28
  import "../chunk-PPY5N2E6.js";
31
29
  import "../chunk-KZERVKTD.js";
32
- import "../chunk-2VADJ6JH.js";
33
- import "../chunk-H4BKC2GN.js";
34
- import "../chunk-BSZIPIFA.js";
35
- import "../chunk-Y64JGYTB.js";
36
- import "../chunk-BAGBCSXA.js";
30
+ import "../chunk-XIJTXRWB.js";
31
+ import "../chunk-GDLT32I4.js";
32
+ import "../chunk-KS3O6O7E.js";
33
+ import "../chunk-A47UKPC7.js";
34
+ import "../chunk-GO7YKPT3.js";
37
35
  import "../chunk-QTOLNRET.js";
38
- import "../chunk-MNKIR2ZB.js";
36
+ import "../chunk-EJR5JXMV.js";
39
37
  import "../chunk-MLKGABMK.js";
40
38
 
41
39
  // bin/pushary-bell-hook.ts
@@ -5,40 +5,40 @@ import {
5
5
  liveAgentCount,
6
6
  ring,
7
7
  upgradeThreshold
8
- } from "../chunk-2YXBCZ3Z.js";
8
+ } from "../chunk-6RJZSBPD.js";
9
9
  import {
10
10
  createIo
11
11
  } from "../chunk-FO3MDD26.js";
12
12
  import {
13
13
  exitOnHelpFlag
14
- } from "../chunk-AN7C3CHH.js";
14
+ } from "../chunk-G6VJZ3RB.js";
15
15
  import {
16
16
  addBellHooks,
17
17
  bellInstalled,
18
18
  removeBellHooks
19
- } from "../chunk-PMLQRB3D.js";
19
+ } from "../chunk-IQ3GKPFM.js";
20
20
  import {
21
21
  parseFlags
22
22
  } from "../chunk-NMUI3ZWG.js";
23
- import "../chunk-BLAIETMP.js";
23
+ import "../chunk-CNJ7SI5V.js";
24
24
  import "../chunk-PPY5N2E6.js";
25
25
  import {
26
26
  EXIT
27
27
  } from "../chunk-KZERVKTD.js";
28
- import "../chunk-2VADJ6JH.js";
28
+ import "../chunk-XIJTXRWB.js";
29
29
  import {
30
30
  claudeSettings
31
- } from "../chunk-H4BKC2GN.js";
31
+ } from "../chunk-GDLT32I4.js";
32
32
  import {
33
33
  readJsonSafe,
34
34
  writeJsonAtomic
35
- } from "../chunk-BSZIPIFA.js";
36
- import "../chunk-Y64JGYTB.js";
37
- import "../chunk-BAGBCSXA.js";
35
+ } from "../chunk-KS3O6O7E.js";
36
+ import "../chunk-A47UKPC7.js";
37
+ import "../chunk-GO7YKPT3.js";
38
38
  import "../chunk-QTOLNRET.js";
39
39
  import {
40
40
  isRecord
41
- } from "../chunk-MNKIR2ZB.js";
41
+ } from "../chunk-EJR5JXMV.js";
42
42
  import "../chunk-MLKGABMK.js";
43
43
 
44
44
  // bin/pushary-bell.ts
@@ -2,45 +2,43 @@
2
2
  import {
3
3
  WRAPPER_ACTIVE_ENV,
4
4
  findClaudeBinary
5
- } from "../chunk-RY4EPMZX.js";
5
+ } from "../chunk-5J7OZBJ4.js";
6
6
  import {
7
7
  SESSION_IDLE_TIMEOUT_MS,
8
8
  describeIdleWindow,
9
9
  startProcessOwnership,
10
10
  withSpawnProcessOwnership
11
- } from "../chunk-A5KQXZR7.js";
12
- import "../chunk-MXPOLQZH.js";
11
+ } from "../chunk-3ELJIG2R.js";
12
+ import "../chunk-RJ6JEHCP.js";
13
13
  import {
14
14
  announceSubscriptionRequired,
15
15
  isDeferAnswer
16
- } from "../chunk-TR3GP5MH.js";
16
+ } from "../chunk-ZJV7SFIJ.js";
17
17
  import {
18
18
  claudeTranscriptPath,
19
19
  loadSessionKey,
20
20
  registerTranscript,
21
21
  registeredTranscriptEnabled
22
- } from "../chunk-57PU5OBL.js";
23
- import "../chunk-DVYVGBPB.js";
22
+ } from "../chunk-SVKCYUYP.js";
23
+ import "../chunk-DBUHSUL7.js";
24
24
  import {
25
25
  ensureDaemonRunning
26
- } from "../chunk-5NP3OJ5P.js";
27
- import "../chunk-KA7JIMTG.js";
28
- import "../chunk-6QPDBD7Q.js";
29
- import "../chunk-SROWUG5W.js";
30
- import "../chunk-PMLQRB3D.js";
26
+ } from "../chunk-57NTMVMI.js";
27
+ import "../chunk-YQDCTID4.js";
28
+ import "../chunk-UTAARXYQ.js";
29
+ import "../chunk-IQ3GKPFM.js";
31
30
  import "../chunk-NMUI3ZWG.js";
32
31
  import {
33
32
  encryptRecord
34
- } from "../chunk-QSW3HAKI.js";
35
- import "../chunk-TJUJAK5L.js";
33
+ } from "../chunk-XEXF2OFZ.js";
36
34
  import {
37
35
  transcriptsEnabled
38
- } from "../chunk-5TUDGSDC.js";
36
+ } from "../chunk-XGFFNERF.js";
39
37
  import {
40
38
  needsShell,
41
39
  spawnClaude
42
40
  } from "../chunk-XHKBHWLX.js";
43
- import "../chunk-BLAIETMP.js";
41
+ import "../chunk-CNJ7SI5V.js";
44
42
  import {
45
43
  DEFAULT_SESSION,
46
44
  UNNAMED_ACTION,
@@ -57,10 +55,10 @@ import {
57
55
  reportEvent,
58
56
  savePendingCommand,
59
57
  scopePathFor
60
- } from "../chunk-MIPJ2VXP.js";
58
+ } from "../chunk-2BL6KWN7.js";
61
59
  import {
62
60
  repoKeyFor
63
- } from "../chunk-3KXBRSL3.js";
61
+ } from "../chunk-XXIJBYNW.js";
64
62
  import {
65
63
  askUser,
66
64
  cancelQuestion,
@@ -72,30 +70,30 @@ import {
72
70
  waitForAnswer,
73
71
  waitsForThePhone,
74
72
  withdrawQuestion
75
- } from "../chunk-E23RKH3T.js";
73
+ } from "../chunk-ZAZUDYSF.js";
76
74
  import "../chunk-POFBE6ZY.js";
77
75
  import {
78
76
  SubscriptionRequiredError
79
- } from "../chunk-2KID4FK4.js";
80
- import "../chunk-QNATBOUH.js";
81
- import "../chunk-EEM65CGJ.js";
77
+ } from "../chunk-Q5RNYE2L.js";
78
+ import "../chunk-QR2QWGQI.js";
79
+ import "../chunk-GECU7V44.js";
82
80
  import {
83
81
  getMachineId
84
- } from "../chunk-ADRPW7KU.js";
82
+ } from "../chunk-IA5VWIHV.js";
85
83
  import "../chunk-PPY5N2E6.js";
86
84
  import "../chunk-KZERVKTD.js";
87
- import "../chunk-2VADJ6JH.js";
85
+ import "../chunk-XIJTXRWB.js";
88
86
  import {
89
87
  claudeConfigDir
90
- } from "../chunk-H4BKC2GN.js";
91
- import "../chunk-BSZIPIFA.js";
88
+ } from "../chunk-GDLT32I4.js";
89
+ import "../chunk-KS3O6O7E.js";
92
90
  import {
93
91
  getApiKey,
94
92
  getBaseUrl
95
- } from "../chunk-Y64JGYTB.js";
93
+ } from "../chunk-A47UKPC7.js";
96
94
  import {
97
95
  NPX_LATEST_COMMAND
98
- } from "../chunk-BAGBCSXA.js";
96
+ } from "../chunk-GO7YKPT3.js";
99
97
  import "../chunk-QTOLNRET.js";
100
98
  import {
101
99
  DECISION_STOP_REASON,
@@ -108,7 +106,7 @@ import {
108
106
  refusesWhenUnanswered,
109
107
  resolveGate,
110
108
  timeoutActionWithoutLocalPrompt
111
- } from "../chunk-MNKIR2ZB.js";
109
+ } from "../chunk-EJR5JXMV.js";
112
110
  import "../chunk-MLKGABMK.js";
113
111
 
114
112
  // src/wrapper/localPassthrough.ts
@@ -15,26 +15,26 @@ import {
15
15
  storedMacAppState,
16
16
  storedPusharyKeychainServices,
17
17
  waitForMacAppExit
18
- } from "../chunk-2CEVEMJE.js";
18
+ } from "../chunk-DPU6H4JY.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-5TNGBDIE.js";
24
+ import "../chunk-AVWECJSN.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-42PD2MQH.js";
32
- import "../chunk-7UBDBJTG.js";
31
+ } from "../chunk-32ZT2ATY.js";
32
+ import "../chunk-26W46E46.js";
33
33
  import {
34
34
  isCursorPluginLeftover,
35
35
  releaseSoleGate,
36
36
  withoutPusharyCursorHooks
37
- } from "../chunk-6HPLEGUP.js";
37
+ } from "../chunk-IGO3AGZK.js";
38
38
  import {
39
39
  HERMES_PIP_PACKAGE,
40
40
  readHermesStatus,
@@ -43,24 +43,25 @@ import {
43
43
  shortenHome,
44
44
  unregisterPluginLocation,
45
45
  vscodeSettingsTargets
46
- } from "../chunk-KX3RMF6T.js";
46
+ } from "../chunk-QBNICXMC.js";
47
47
  import {
48
48
  macAppKeepsMcpEntry,
49
49
  mcpServerBearer,
50
50
  pusharyKey,
51
51
  readMacAppAgentKey,
52
52
  setupReceiptKey
53
- } from "../chunk-QPPBH5NY.js";
53
+ } from "../chunk-CN6JFM62.js";
54
54
  import "../chunk-QCGNGEGE.js";
55
- import "../chunk-O7PCNYEY.js";
55
+ import "../chunk-YB3HMDKE.js";
56
56
  import {
57
57
  planClineRemoval,
58
58
  planFxRemoval,
59
59
  removeClineServer
60
- } from "../chunk-MPPTIZ2G.js";
61
- import "../chunk-NYV45Q25.js";
62
- import "../chunk-2PKHGHMA.js";
60
+ } from "../chunk-6ZXCWK27.js";
61
+ import "../chunk-5FJDODOA.js";
62
+ import "../chunk-HUGVJBDN.js";
63
63
  import {
64
+ OPENCODE_ASKED_PERMISSIONS,
64
65
  OPENCODE_PLUGIN_SIBLING,
65
66
  OPENCODE_PLUGIN_SIBLING_CONTENTS,
66
67
  hasForeignPlugins,
@@ -68,18 +69,19 @@ import {
68
69
  openCodeConfigDir,
69
70
  openCodeConfigFile,
70
71
  openCodeInstructionsFile,
72
+ openCodePermissionsLeftOpen,
71
73
  openCodePluginDir,
72
74
  openCodePluginFile,
73
75
  removeOpenCodeMcpServer
74
- } from "../chunk-VNRWQCGU.js";
76
+ } from "../chunk-7LK3Y6ET.js";
75
77
  import {
76
78
  ansiPainter,
77
79
  useColor
78
80
  } from "../chunk-FO3MDD26.js";
79
81
  import {
80
82
  exitOnHelpFlag
81
- } from "../chunk-AN7C3CHH.js";
82
- import "../chunk-MXPOLQZH.js";
83
+ } from "../chunk-G6VJZ3RB.js";
84
+ import "../chunk-RJ6JEHCP.js";
83
85
  import {
84
86
  compatibleConfigFile,
85
87
  compatibleDocuments,
@@ -91,23 +93,21 @@ import {
91
93
  removeCompatibleHooks,
92
94
  removeCompatibleMcpServer,
93
95
  serializeConfigDocument
94
- } from "../chunk-ML2Q6WWE.js";
96
+ } from "../chunk-3EZP5ZPS.js";
95
97
  import {
96
98
  disableDaemonService
97
- } from "../chunk-5NP3OJ5P.js";
99
+ } from "../chunk-57NTMVMI.js";
98
100
  import {
99
101
  hookOwnerOf,
100
102
  isHookTakeoverReceipt,
101
103
  liveBridgeProbe,
104
+ removeGeminiSettings,
102
105
  resolveBridgeStub,
103
106
  restoreHookTakeover,
104
107
  restoreMcpServer
105
- } from "../chunk-KA7JIMTG.js";
106
- import {
107
- removeGeminiSettings
108
- } from "../chunk-6QPDBD7Q.js";
109
- import "../chunk-SROWUG5W.js";
110
- import "../chunk-PMLQRB3D.js";
108
+ } from "../chunk-YQDCTID4.js";
109
+ import "../chunk-UTAARXYQ.js";
110
+ import "../chunk-IQ3GKPFM.js";
111
111
  import {
112
112
  parseFlags
113
113
  } from "../chunk-NMUI3ZWG.js";
@@ -117,21 +117,21 @@ import {
117
117
  isDisabledExport,
118
118
  removeClaudeAlias,
119
119
  shellProfileCandidates
120
- } from "../chunk-BLAIETMP.js";
120
+ } from "../chunk-CNJ7SI5V.js";
121
121
  import "../chunk-E46NE7FB.js";
122
- import "../chunk-MIPJ2VXP.js";
123
- import "../chunk-3KXBRSL3.js";
124
- import "../chunk-E23RKH3T.js";
122
+ import "../chunk-2BL6KWN7.js";
123
+ import "../chunk-XXIJBYNW.js";
124
+ import "../chunk-ZAZUDYSF.js";
125
125
  import "../chunk-POFBE6ZY.js";
126
- import "../chunk-2KID4FK4.js";
127
- import "../chunk-QNATBOUH.js";
128
- import "../chunk-EEM65CGJ.js";
129
- import "../chunk-ADRPW7KU.js";
126
+ import "../chunk-Q5RNYE2L.js";
127
+ import "../chunk-QR2QWGQI.js";
128
+ import "../chunk-GECU7V44.js";
129
+ import "../chunk-IA5VWIHV.js";
130
130
  import "../chunk-PPY5N2E6.js";
131
131
  import {
132
132
  EXIT
133
133
  } from "../chunk-KZERVKTD.js";
134
- import "../chunk-2VADJ6JH.js";
134
+ import "../chunk-XIJTXRWB.js";
135
135
  import {
136
136
  claudeConfigDir,
137
137
  claudeJson,
@@ -174,20 +174,20 @@ import {
174
174
  restoreCodexHookTrust,
175
175
  vscodePluginDir,
176
176
  vscodePluginMcp
177
- } from "../chunk-H4BKC2GN.js";
177
+ } from "../chunk-GDLT32I4.js";
178
178
  import {
179
179
  cleanNpmEnv,
180
180
  globalPackageState,
181
181
  npmIsOnPath,
182
182
  readGlobalFolder,
183
183
  readGlobalPrefix
184
- } from "../chunk-BSZIPIFA.js";
184
+ } from "../chunk-KS3O6O7E.js";
185
185
  import {
186
186
  getBaseUrl
187
- } from "../chunk-Y64JGYTB.js";
187
+ } from "../chunk-A47UKPC7.js";
188
188
  import {
189
189
  NPX_LATEST_COMMAND
190
- } from "../chunk-BAGBCSXA.js";
190
+ } from "../chunk-GO7YKPT3.js";
191
191
  import {
192
192
  CLI_PACKAGE_NAMES,
193
193
  globalPackageFolder,
@@ -201,7 +201,7 @@ import {
201
201
  SUPPORT_EMAIL,
202
202
  isValidApiKey,
203
203
  redactSecrets
204
- } from "../chunk-MNKIR2ZB.js";
204
+ } from "../chunk-EJR5JXMV.js";
205
205
  import "../chunk-MLKGABMK.js";
206
206
 
207
207
  // bin/pushary-clean.ts
@@ -1136,6 +1136,9 @@ var main = async () => {
1136
1136
  } else {
1137
1137
  console.log(` ${skip} OpenCode MCP ${dim("(not found)")}`);
1138
1138
  }
1139
+ if (openCodeConfig && openCodePermissionsLeftOpen(openCodeConfig).length < OPENCODE_ASKED_PERMISSIONS.length) {
1140
+ console.log(` ${skip} OpenCode permission rules ${dim("(kept: they may be yours, and OpenCode keeps asking in its own prompt)")}`);
1141
+ }
1139
1142
  if (keepShared) {
1140
1143
  console.log(` ${skip} OpenCode AGENTS.md ${dim("(kept: the Mac app uses it)")}`);
1141
1144
  } else if (guardedInstructionBlockRemoval(openCodeInstructionsFile())) {
@@ -1,44 +1,43 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  runCodexBridge
4
- } from "../chunk-Q6ID23SU.js";
5
- import "../chunk-NUEPJ5W6.js";
4
+ } from "../chunk-TQNFDNJA.js";
5
+ import "../chunk-QOIPUYUD.js";
6
6
  import {
7
7
  resolveProviderBinary
8
- } from "../chunk-DCMRNIDM.js";
9
- import "../chunk-IZTDX2MX.js";
8
+ } from "../chunk-T6YLXO6N.js";
9
+ import "../chunk-MDIGG3Q7.js";
10
10
  import {
11
11
  withSpawnProcessOwnership
12
- } from "../chunk-A5KQXZR7.js";
13
- import "../chunk-MXPOLQZH.js";
14
- import "../chunk-QSW3HAKI.js";
15
- import "../chunk-TJUJAK5L.js";
12
+ } from "../chunk-3ELJIG2R.js";
13
+ import "../chunk-RJ6JEHCP.js";
14
+ import "../chunk-XEXF2OFZ.js";
16
15
  import {
17
16
  transcriptsEnabled
18
- } from "../chunk-5TUDGSDC.js";
17
+ } from "../chunk-XGFFNERF.js";
19
18
  import "../chunk-XHKBHWLX.js";
20
- import "../chunk-BLAIETMP.js";
21
- import "../chunk-3KXBRSL3.js";
22
- import "../chunk-E23RKH3T.js";
19
+ import "../chunk-CNJ7SI5V.js";
20
+ import "../chunk-XXIJBYNW.js";
21
+ import "../chunk-ZAZUDYSF.js";
23
22
  import "../chunk-POFBE6ZY.js";
24
- import "../chunk-2KID4FK4.js";
25
- import "../chunk-QNATBOUH.js";
26
- import "../chunk-EEM65CGJ.js";
23
+ import "../chunk-Q5RNYE2L.js";
24
+ import "../chunk-QR2QWGQI.js";
25
+ import "../chunk-GECU7V44.js";
27
26
  import {
28
27
  getMachineId
29
- } from "../chunk-ADRPW7KU.js";
28
+ } from "../chunk-IA5VWIHV.js";
30
29
  import "../chunk-PPY5N2E6.js";
31
30
  import "../chunk-KZERVKTD.js";
32
- import "../chunk-2VADJ6JH.js";
33
- import "../chunk-H4BKC2GN.js";
34
- import "../chunk-BSZIPIFA.js";
31
+ import "../chunk-XIJTXRWB.js";
32
+ import "../chunk-GDLT32I4.js";
33
+ import "../chunk-KS3O6O7E.js";
35
34
  import {
36
35
  getApiKey,
37
36
  getBaseUrl
38
- } from "../chunk-Y64JGYTB.js";
39
- import "../chunk-BAGBCSXA.js";
37
+ } from "../chunk-A47UKPC7.js";
38
+ import "../chunk-GO7YKPT3.js";
40
39
  import "../chunk-QTOLNRET.js";
41
- import "../chunk-MNKIR2ZB.js";
40
+ import "../chunk-EJR5JXMV.js";
42
41
  import "../chunk-MLKGABMK.js";
43
42
 
44
43
  // bin/pushary-codex-bridge.ts