pushary 1.9.60 → 1.9.62

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 (125) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/README.md +6 -0
  3. package/dist/{api-ASQA5PZM.js → api-7HLZRIUV.js} +15 -12
  4. package/dist/bin/pushary-bell-hook.js +28 -27
  5. package/dist/bin/pushary-bell.js +11 -10
  6. package/dist/bin/pushary-claude.js +34 -26
  7. package/dist/bin/pushary-clean.js +36 -34
  8. package/dist/bin/pushary-codex-bridge.js +22 -21
  9. package/dist/bin/pushary-codex-hook.js +49 -35
  10. package/dist/bin/pushary-codex-session.js +9 -8
  11. package/dist/bin/pushary-codex.js +15 -14
  12. package/dist/bin/pushary-connect.js +28 -27
  13. package/dist/bin/pushary-cowork.js +6 -5
  14. package/dist/bin/pushary-daemon.js +38 -37
  15. package/dist/bin/pushary-disconnect.js +27 -26
  16. package/dist/bin/pushary-doctor.js +41 -40
  17. package/dist/bin/pushary-elicitation-hook.js +30 -27
  18. package/dist/bin/pushary-gemini-bridge.js +16 -15
  19. package/dist/bin/pushary-gemini-hook.js +38 -29
  20. package/dist/bin/pushary-hook.js +33 -31
  21. package/dist/bin/pushary-login.js +15 -14
  22. package/dist/bin/pushary-logout.js +28 -27
  23. package/dist/bin/pushary-mcp.js +12 -11
  24. package/dist/bin/pushary-mode.js +15 -14
  25. package/dist/bin/pushary-notification-hook.js +27 -26
  26. package/dist/bin/pushary-opencode-hook.js +40 -30
  27. package/dist/bin/pushary-permission-denied-hook.js +32 -31
  28. package/dist/bin/pushary-permission-hook.js +31 -30
  29. package/dist/bin/pushary-post-hook.js +27 -26
  30. package/dist/bin/pushary-prompt-hook.js +27 -26
  31. package/dist/bin/pushary-session-end-hook.js +27 -26
  32. package/dist/bin/pushary-session-start-hook.js +34 -33
  33. package/dist/bin/pushary-setup.js +4195 -93
  34. package/dist/bin/pushary-stats.js +6 -5
  35. package/dist/bin/pushary-status.js +32 -31
  36. package/dist/bin/pushary-stop-hook.js +27 -26
  37. package/dist/bin/pushary-stopfailure-hook.js +27 -26
  38. package/dist/bin/pushary-suggestions.js +15 -14
  39. package/dist/bin/pushary-transcript-register.js +19 -18
  40. package/dist/bin/pushary-transcripts.js +8 -7
  41. package/dist/bin/pushary-upgrade.js +43 -37
  42. package/dist/bin/pushary-wait.js +15 -14
  43. package/dist/bin/pushary.js +8 -7
  44. package/dist/{chunk-RPPXQNIA.js → chunk-3IFCXMC6.js} +1 -1
  45. package/dist/{chunk-WXPVVXBU.js → chunk-3LBB7GVF.js} +4 -4
  46. package/dist/{chunk-WFSGCFXQ.js → chunk-3YGUWPNZ.js} +2 -6
  47. package/dist/{chunk-SVQWHV65.js → chunk-44FNEAXK.js} +1 -1
  48. package/dist/{chunk-YPD3MTFU.js → chunk-4K6YZPZ3.js} +1 -1
  49. package/dist/{chunk-PUHP4IBA.js → chunk-557ZE5EX.js} +4 -4
  50. package/dist/{chunk-HC3FHDKB.js → chunk-5R23J52J.js} +6 -6
  51. package/dist/{chunk-625DZLT5.js → chunk-67Q3Q5IO.js} +8 -6
  52. package/dist/{chunk-QGSHV3WO.js → chunk-6HIYOY6I.js} +77 -18
  53. package/dist/{chunk-L3AFVFGQ.js → chunk-6JAWNRDR.js} +2 -2
  54. package/dist/{chunk-6MJWYYAS.js → chunk-6YSEOXP5.js} +47 -3
  55. package/dist/{chunk-VIJIG5YL.js → chunk-7E2ZN7XA.js} +2 -2
  56. package/dist/{chunk-QLMOU57V.js → chunk-7EHZXZB2.js} +33 -20
  57. package/dist/{chunk-2AELPDMT.js → chunk-7ETELRQX.js} +1 -1
  58. package/dist/{chunk-7BHI3PZN.js → chunk-7GU4PXE5.js} +1 -1
  59. package/dist/{chunk-CDQHQAS7.js → chunk-7NJ4TDUH.js} +5 -5
  60. package/dist/{chunk-X3YKQJCZ.js → chunk-7NXB7OVX.js} +1 -1
  61. package/dist/{chunk-XEJOPVCG.js → chunk-A4CZPUQ6.js} +1 -1
  62. package/dist/{chunk-YGE6ML3O.js → chunk-AFV3FQNG.js} +4 -4
  63. package/dist/{chunk-V57XLKZL.js → chunk-BIUSODLS.js} +2 -2
  64. package/dist/{chunk-2QREHU4O.js → chunk-CFIQ3252.js} +3 -3
  65. package/dist/{chunk-BG4Y64FW.js → chunk-DFKEJARZ.js} +1 -1
  66. package/dist/{chunk-S54C6TQC.js → chunk-EA6574W2.js} +5 -5
  67. package/dist/{chunk-FDWMG6NY.js → chunk-EO6CL4PD.js} +2 -2
  68. package/dist/{chunk-SEILUNWB.js → chunk-ESXGCZDA.js} +26 -3
  69. package/dist/{chunk-CEQ2AZH4.js → chunk-EUNSJKJJ.js} +8 -8
  70. package/dist/{chunk-56JCQQLS.js → chunk-EVZDYG7L.js} +2 -2
  71. package/dist/{chunk-4MUFZU2G.js → chunk-F35YILEN.js} +1 -1
  72. package/dist/{chunk-ERK24P76.js → chunk-FG5HMJ7C.js} +1 -1
  73. package/dist/{chunk-NKLNU577.js → chunk-FX7KDF47.js} +3 -3
  74. package/dist/{chunk-AXJLJJ3M.js → chunk-FXECTHAG.js} +73 -2
  75. package/dist/chunk-FYS27SUS.js +216 -0
  76. package/dist/{chunk-O6IUZGWV.js → chunk-G3ZDCYMU.js} +1 -1
  77. package/dist/{chunk-ELLJPP6O.js → chunk-GFAG72LR.js} +2 -2
  78. package/dist/{chunk-ATKN4BJT.js → chunk-GV43RXR2.js} +1 -1
  79. package/dist/{chunk-4MWRR5IT.js → chunk-HSRNWCXJ.js} +3 -3
  80. package/dist/{chunk-IF26ZGZ7.js → chunk-LCNN7UOE.js} +3 -3
  81. package/dist/{chunk-WXZHQ3TT.js → chunk-LILS32LF.js} +5 -5
  82. package/dist/{chunk-33OOEVPG.js → chunk-LL2KHEJH.js} +1 -1
  83. package/dist/{chunk-W2IVTHIG.js → chunk-LWR5VKNC.js} +18 -10
  84. package/dist/{chunk-QUBIEZXC.js → chunk-M7MEVILL.js} +3 -3
  85. package/dist/chunk-MLKGABMK.js +9 -0
  86. package/dist/{chunk-XV6S5PWW.js → chunk-MURJ4WAL.js} +1 -1
  87. package/dist/{chunk-FUZ5VYWD.js → chunk-MYEALNW6.js} +1 -1
  88. package/dist/{chunk-ADR3KHOC.js → chunk-NAZRRXZM.js} +2 -2
  89. package/dist/{chunk-ZGOJLNKS.js → chunk-NZLQ6GMX.js} +4 -4
  90. package/dist/{chunk-K4MBKXAE.js → chunk-OZRT64BB.js} +1 -1
  91. package/dist/{chunk-Y5VKZNFN.js → chunk-PSCXEH42.js} +2 -2
  92. package/dist/{chunk-METMK3L4.js → chunk-Q4WTIKM6.js} +3 -3
  93. package/dist/{chunk-U7NR4JVD.js → chunk-QIPW7OVB.js} +4 -4
  94. package/dist/{chunk-USE5IEEW.js → chunk-R3CLBNST.js} +1 -1
  95. package/dist/{chunk-7WFRY6OL.js → chunk-RFCEVROB.js} +2 -2
  96. package/dist/{chunk-EZHY65QA.js → chunk-RSNN2TPE.js} +13 -8
  97. package/dist/{chunk-DJ7EZIQA.js → chunk-RU37NSZH.js} +3 -3
  98. package/dist/{chunk-J4KQL7YZ.js → chunk-SDOWT67G.js} +5 -5
  99. package/dist/{chunk-4PZXI7WU.js → chunk-SJCPIYWJ.js} +2 -2
  100. package/dist/{chunk-MUNL23WE.js → chunk-SJJYXMJP.js} +6 -6
  101. package/dist/{chunk-6LOQE4J4.js → chunk-TMHE5CVX.js} +3 -3
  102. package/dist/{chunk-GAMVAORR.js → chunk-UUAVYIWJ.js} +1 -1
  103. package/dist/{chunk-Y5V4PA2Z.js → chunk-UWCPY4RY.js} +2 -2
  104. package/dist/{chunk-5RU35K57.js → chunk-VF3IL56Q.js} +2 -2
  105. package/dist/{chunk-WN3RACVD.js → chunk-W3CBFLIX.js} +3 -3
  106. package/dist/{chunk-RLVJ6TVL.js → chunk-W6MYFAOK.js} +26 -18
  107. package/dist/{chunk-CSOROFJY.js → chunk-YQK72JGV.js} +5 -5
  108. package/dist/{chunk-7JXJJNQ5.js → chunk-ZEDGKCCM.js} +1 -1
  109. package/dist/{chunk-SOCJ2N3E.js → chunk-ZJFJUAHS.js} +6 -6
  110. package/dist/{codex-app-cards-switch-ZO76D2NY.js → codex-app-cards-switch-IIL7IPP6.js} +12 -11
  111. package/dist/{codex-desktop-launch-MJT5E3O3.js → codex-desktop-launch-XCLMYVBD.js} +2 -1
  112. package/dist/{codex-session-launch-PTFCVIC7.js → codex-session-launch-UMVALJ3A.js} +19 -18
  113. package/dist/{config-SXV6XNVU.js → config-5N3GUJD5.js} +4 -3
  114. package/dist/{global-upgrade-ETDP32LO.js → global-upgrade-5F4CSXED.js} +10 -9
  115. package/dist/{identity-OOLIOSMR.js → identity-7ULYW4RL.js} +5 -4
  116. package/dist/{live-capabilities-2XIFA7YO.js → live-capabilities-QTSFXA6T.js} +5 -4
  117. package/dist/{paths-IIOQZESZ.js → paths-HEMK2ALW.js} +4 -3
  118. package/dist/{reapply-KFAJSKOQ.js → reapply-AMFKVYZV.js} +27 -26
  119. package/dist/src/index.d.ts +1 -0
  120. package/dist/src/index.js +22 -21
  121. package/dist/{upgrade-lock-T6ILR644.js → upgrade-lock-IAZC5644.js} +5 -4
  122. package/dist/usage-NEFDYSRT.js +11 -0
  123. package/package.json +1 -1
  124. package/dist/chunk-6MC2XXFD.js +0 -126
  125. package/dist/usage-6TN7FVWS.js +0 -10
package/CHANGELOG.md CHANGED
@@ -1,5 +1,16 @@
1
1
  # Changelog
2
2
 
3
+ ## 1.9.62
4
+
5
+ - 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.
6
+ - 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.
7
+
8
+ ## 1.9.61
9
+
10
+ - Pushary for Mac can connect Codex through its own helper, so Codex follows the account signed in to the app instead of a copied key that sign-out revokes. Setup, upgrade and doctor now recognize that entry. When setup or upgrade handles Codex's hooks itself, with `--take-over-hooks` or because the app is gone, it moves Codex's MCP to this CLI's account too, instead of leaving Codex on the Mac's account or on a helper that cannot start.
11
+ - That move also replaces a Codex configuration an older CLI could leave behind, where the Pushary entry held both the Mac helper's `command` and a `url`. Codex refuses to load any configuration with that mix, so Codex would not start at all. Any other Pushary entry with a `command`, including the helper with `args`, `env` or extra settings, is now left unchanged instead of getting a `url` beside it. An upgrade that has a key to write then leaves Codex's hooks unchanged too.
12
+ - When setup or a manual `pushary upgrade` moves an enabled Codex entry off the Mac helper, it asks you to fully quit and reopen Codex, because a running Codex keeps the connection it started with.
13
+
3
14
  ## 1.9.60
4
15
 
5
16
  - 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.
package/README.md CHANGED
@@ -345,3 +345,9 @@ Run `pushary cowork` (or `npx pushary@latest cowork`) for connector setup. `push
345
345
  Use `pushary cowork --instructions` for standing instructions or `pushary cowork --skill > SKILL.md` to export the bundled skill for upload. `--json` reports `manual_setup_required`; printing a link does not prove a connection. Ask a test question in Claude, answer it in Pushary, and verify Claude receives it.
346
346
 
347
347
  This connector is cooperative. Cowork supports plugin hooks on supported versions, but this setup does not install or verify native permission hooks. Use the normal setup command for Claude Code CLI hooks.
348
+
349
+ ### OpenCode versions
350
+
351
+ The generated plugin supports OpenCode V2 and V1 from 1.18.29. Run setup again after updating Pushary to replace the plugin. V2 still reads the earlier MCP configuration format.
352
+
353
+ In V2, Pushary answers native permission requests for shell commands in the active directory, single-file reads/writes/edits, and web fetches. Outside-directory access, another shell working directory, multi-file edits, renames with two paths, custom permissions and native questions stay in OpenCode. An approval applies once to the matching request.
@@ -6,33 +6,35 @@ import {
6
6
  isAwayPaused,
7
7
  isDecisionStopped,
8
8
  isLocalQuestionHandoff,
9
+ isQuestionLimitRefusal,
9
10
  nextLongPollMs,
10
11
  pollForAnswer,
11
12
  requestGate,
12
13
  sendNotification,
13
- unavailableQuestionUnlessSubscriptionRequired,
14
+ unavailableQuestionUnlessRefused,
14
15
  waitForAnswer,
15
16
  waitForQuestion,
16
17
  waitsForThePhone,
17
18
  withdrawQuestion
18
- } from "./chunk-EZHY65QA.js";
19
- import "./chunk-SEILUNWB.js";
19
+ } from "./chunk-RSNN2TPE.js";
20
+ import "./chunk-ESXGCZDA.js";
20
21
  import "./chunk-POFBE6ZY.js";
21
- import "./chunk-METMK3L4.js";
22
- import "./chunk-4MWRR5IT.js";
23
- import "./chunk-O6IUZGWV.js";
22
+ import "./chunk-Q4WTIKM6.js";
23
+ import "./chunk-HSRNWCXJ.js";
24
+ import "./chunk-G3ZDCYMU.js";
24
25
  import "./chunk-PPY5N2E6.js";
25
26
  import "./chunk-KZERVKTD.js";
26
- import "./chunk-6MJWYYAS.js";
27
- import "./chunk-2QREHU4O.js";
27
+ import "./chunk-6YSEOXP5.js";
28
+ import "./chunk-CFIQ3252.js";
28
29
  import "./chunk-QENTGE75.js";
29
- import "./chunk-BG4Y64FW.js";
30
- import "./chunk-ERK24P76.js";
30
+ import "./chunk-DFKEJARZ.js";
31
+ import "./chunk-FG5HMJ7C.js";
31
32
  import "./chunk-QTOLNRET.js";
32
33
  import {
33
34
  DECISION_STOP_REASON,
34
35
  UNVERIFIABLE_APPROVAL_REASON
35
- } from "./chunk-AXJLJJ3M.js";
36
+ } from "./chunk-FXECTHAG.js";
37
+ import "./chunk-MLKGABMK.js";
36
38
  export {
37
39
  DECISION_STOP_REASON,
38
40
  UNVERIFIABLE_APPROVAL_REASON,
@@ -43,11 +45,12 @@ export {
43
45
  isAwayPaused,
44
46
  isDecisionStopped,
45
47
  isLocalQuestionHandoff,
48
+ isQuestionLimitRefusal,
46
49
  nextLongPollMs,
47
50
  pollForAnswer,
48
51
  requestGate,
49
52
  sendNotification,
50
- unavailableQuestionUnlessSubscriptionRequired,
53
+ unavailableQuestionUnlessRefused,
51
54
  waitForAnswer,
52
55
  waitForQuestion,
53
56
  waitsForThePhone,
@@ -1,44 +1,45 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  handleBell
4
- } from "../chunk-ATKN4BJT.js";
4
+ } from "../chunk-GV43RXR2.js";
5
5
  import {
6
6
  readHookInput
7
- } from "../chunk-6MC2XXFD.js";
8
- import "../chunk-CEQ2AZH4.js";
7
+ } from "../chunk-FYS27SUS.js";
8
+ import "../chunk-EUNSJKJJ.js";
9
9
  import "../chunk-QW3FRUFB.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";
10
+ import "../chunk-557ZE5EX.js";
11
+ import "../chunk-5R23J52J.js";
12
+ import "../chunk-7NJ4TDUH.js";
13
+ import "../chunk-LCNN7UOE.js";
14
+ import "../chunk-MURJ4WAL.js";
15
+ import "../chunk-F35YILEN.js";
16
16
  import "../chunk-NMUI3ZWG.js";
17
- import "../chunk-2AELPDMT.js";
18
- import "../chunk-GAMVAORR.js";
19
- import "../chunk-7JXJJNQ5.js";
17
+ import "../chunk-7ETELRQX.js";
18
+ import "../chunk-UUAVYIWJ.js";
19
+ import "../chunk-ZEDGKCCM.js";
20
20
  import "../chunk-XHKBHWLX.js";
21
21
  import "../chunk-6ICPEJY5.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";
22
+ import "../chunk-W3CBFLIX.js";
23
+ import "../chunk-LWR5VKNC.js";
24
+ import "../chunk-LL2KHEJH.js";
25
+ import "../chunk-4K6YZPZ3.js";
26
+ import "../chunk-RSNN2TPE.js";
27
+ import "../chunk-ESXGCZDA.js";
28
28
  import "../chunk-POFBE6ZY.js";
29
- import "../chunk-METMK3L4.js";
30
- import "../chunk-4MWRR5IT.js";
31
- import "../chunk-O6IUZGWV.js";
29
+ import "../chunk-Q4WTIKM6.js";
30
+ import "../chunk-HSRNWCXJ.js";
31
+ import "../chunk-G3ZDCYMU.js";
32
32
  import "../chunk-PPY5N2E6.js";
33
33
  import "../chunk-KZERVKTD.js";
34
- import "../chunk-Y5VKZNFN.js";
35
- import "../chunk-6MJWYYAS.js";
36
- import "../chunk-2QREHU4O.js";
34
+ import "../chunk-PSCXEH42.js";
35
+ import "../chunk-6YSEOXP5.js";
36
+ import "../chunk-CFIQ3252.js";
37
37
  import "../chunk-QENTGE75.js";
38
- import "../chunk-BG4Y64FW.js";
39
- import "../chunk-ERK24P76.js";
38
+ import "../chunk-DFKEJARZ.js";
39
+ import "../chunk-FG5HMJ7C.js";
40
40
  import "../chunk-QTOLNRET.js";
41
- import "../chunk-AXJLJJ3M.js";
41
+ import "../chunk-FXECTHAG.js";
42
+ import "../chunk-MLKGABMK.js";
42
43
 
43
44
  // bin/pushary-bell-hook.ts
44
45
  var main = async () => {
@@ -5,41 +5,42 @@ import {
5
5
  liveAgentCount,
6
6
  ring,
7
7
  upgradeThreshold
8
- } from "../chunk-ATKN4BJT.js";
8
+ } from "../chunk-GV43RXR2.js";
9
9
  import {
10
10
  createIo
11
11
  } from "../chunk-FO3MDD26.js";
12
12
  import {
13
13
  exitOnHelpFlag
14
- } from "../chunk-K4MBKXAE.js";
14
+ } from "../chunk-OZRT64BB.js";
15
15
  import {
16
16
  addBellHooks,
17
17
  bellInstalled,
18
18
  removeBellHooks
19
- } from "../chunk-4MUFZU2G.js";
19
+ } from "../chunk-F35YILEN.js";
20
20
  import {
21
21
  parseFlags
22
22
  } from "../chunk-NMUI3ZWG.js";
23
- import "../chunk-WN3RACVD.js";
23
+ import "../chunk-W3CBFLIX.js";
24
24
  import "../chunk-PPY5N2E6.js";
25
25
  import {
26
26
  EXIT
27
27
  } from "../chunk-KZERVKTD.js";
28
- import "../chunk-Y5VKZNFN.js";
28
+ import "../chunk-PSCXEH42.js";
29
29
  import {
30
30
  claudeSettings
31
- } from "../chunk-6MJWYYAS.js";
32
- import "../chunk-2QREHU4O.js";
31
+ } from "../chunk-6YSEOXP5.js";
32
+ import "../chunk-CFIQ3252.js";
33
33
  import {
34
34
  readJsonSafe,
35
35
  writeJsonAtomic
36
36
  } from "../chunk-QENTGE75.js";
37
- import "../chunk-BG4Y64FW.js";
38
- import "../chunk-ERK24P76.js";
37
+ import "../chunk-DFKEJARZ.js";
38
+ import "../chunk-FG5HMJ7C.js";
39
39
  import "../chunk-QTOLNRET.js";
40
40
  import {
41
41
  isRecord
42
- } from "../chunk-AXJLJJ3M.js";
42
+ } from "../chunk-FXECTHAG.js";
43
+ import "../chunk-MLKGABMK.js";
43
44
 
44
45
  // bin/pushary-bell.ts
45
46
  exitOnHelpFlag("bell");
@@ -8,40 +8,40 @@ import {
8
8
  describeIdleWindow,
9
9
  startProcessOwnership,
10
10
  withSpawnProcessOwnership
11
- } from "../chunk-7WFRY6OL.js";
11
+ } from "../chunk-RFCEVROB.js";
12
12
  import "../chunk-VUFHYMSP.js";
13
13
  import {
14
14
  announceSubscriptionRequired,
15
15
  isDeferAnswer
16
- } from "../chunk-RPPXQNIA.js";
16
+ } from "../chunk-3IFCXMC6.js";
17
17
  import {
18
18
  claudeTranscriptPath,
19
19
  loadSessionKey,
20
20
  registerTranscript,
21
21
  registeredTranscriptEnabled
22
- } from "../chunk-CEQ2AZH4.js";
22
+ } from "../chunk-EUNSJKJJ.js";
23
23
  import "../chunk-QW3FRUFB.js";
24
24
  import {
25
25
  ensureDaemonRunning
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";
26
+ } from "../chunk-5R23J52J.js";
27
+ import "../chunk-7NJ4TDUH.js";
28
+ import "../chunk-LCNN7UOE.js";
29
+ import "../chunk-MURJ4WAL.js";
30
+ import "../chunk-F35YILEN.js";
31
31
  import "../chunk-NMUI3ZWG.js";
32
32
  import {
33
33
  encryptRecord
34
- } from "../chunk-2AELPDMT.js";
35
- import "../chunk-GAMVAORR.js";
34
+ } from "../chunk-7ETELRQX.js";
35
+ import "../chunk-UUAVYIWJ.js";
36
36
  import {
37
37
  transcriptsEnabled
38
- } from "../chunk-7JXJJNQ5.js";
38
+ } from "../chunk-ZEDGKCCM.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-WN3RACVD.js";
44
+ import "../chunk-W3CBFLIX.js";
45
45
  import {
46
46
  DEFAULT_SESSION,
47
47
  UNNAMED_ACTION,
@@ -58,46 +58,47 @@ import {
58
58
  reportEvent,
59
59
  savePendingCommand,
60
60
  scopePathFor
61
- } from "../chunk-W2IVTHIG.js";
62
- import "../chunk-33OOEVPG.js";
61
+ } from "../chunk-LWR5VKNC.js";
62
+ import "../chunk-LL2KHEJH.js";
63
63
  import {
64
64
  repoKeyFor
65
- } from "../chunk-YPD3MTFU.js";
65
+ } from "../chunk-4K6YZPZ3.js";
66
66
  import {
67
67
  askUser,
68
68
  cancelQuestion,
69
69
  isAwayPaused,
70
70
  isDecisionStopped,
71
71
  isLocalQuestionHandoff,
72
+ isQuestionLimitRefusal,
72
73
  nextLongPollMs,
73
74
  waitForAnswer,
74
75
  waitsForThePhone,
75
76
  withdrawQuestion
76
- } from "../chunk-EZHY65QA.js";
77
+ } from "../chunk-RSNN2TPE.js";
77
78
  import {
78
79
  SubscriptionRequiredError
79
- } from "../chunk-SEILUNWB.js";
80
+ } from "../chunk-ESXGCZDA.js";
80
81
  import "../chunk-POFBE6ZY.js";
81
- import "../chunk-METMK3L4.js";
82
- import "../chunk-4MWRR5IT.js";
82
+ import "../chunk-Q4WTIKM6.js";
83
+ import "../chunk-HSRNWCXJ.js";
83
84
  import {
84
85
  getMachineId
85
- } from "../chunk-O6IUZGWV.js";
86
+ } from "../chunk-G3ZDCYMU.js";
86
87
  import "../chunk-PPY5N2E6.js";
87
88
  import "../chunk-KZERVKTD.js";
88
- import "../chunk-Y5VKZNFN.js";
89
+ import "../chunk-PSCXEH42.js";
89
90
  import {
90
91
  claudeConfigDir
91
- } from "../chunk-6MJWYYAS.js";
92
- import "../chunk-2QREHU4O.js";
92
+ } from "../chunk-6YSEOXP5.js";
93
+ import "../chunk-CFIQ3252.js";
93
94
  import "../chunk-QENTGE75.js";
94
95
  import {
95
96
  getApiKey,
96
97
  getBaseUrl
97
- } from "../chunk-BG4Y64FW.js";
98
+ } from "../chunk-DFKEJARZ.js";
98
99
  import {
99
100
  NPX_LATEST_COMMAND
100
- } from "../chunk-ERK24P76.js";
101
+ } from "../chunk-FG5HMJ7C.js";
101
102
  import "../chunk-QTOLNRET.js";
102
103
  import {
103
104
  DECISION_STOP_REASON,
@@ -105,10 +106,13 @@ import {
105
106
  KILL_REASON,
106
107
  SESSION_PAUSED_REASON,
107
108
  UNVERIFIABLE_APPROVAL_REASON,
109
+ questionLimitHandBack,
108
110
  redactSecretsFromContent,
111
+ refusesWhenUnanswered,
109
112
  resolveGate,
110
113
  timeoutActionWithoutLocalPrompt
111
- } from "../chunk-AXJLJJ3M.js";
114
+ } from "../chunk-FXECTHAG.js";
115
+ import "../chunk-MLKGABMK.js";
112
116
 
113
117
  // src/wrapper/localPassthrough.ts
114
118
  var SIGNAL_NUMBERS = {
@@ -450,6 +454,7 @@ var allow = (input) => ({
450
454
  updatedInput: input
451
455
  });
452
456
  var deny = (message) => ({ behavior: "deny", message });
457
+ var resultOfHandBack = (handBack) => deny(handBack.kind === "refuse" ? handBack.reason : HAND_BACK_WITHOUT_A_PROMPT.reason);
453
458
  var createRemoteApprover = (deps) => {
454
459
  const fetchModeState2 = deps.fetchModeState ?? fetchModeState;
455
460
  const getPolicy2 = deps.getPolicy ?? getPolicy;
@@ -548,6 +553,9 @@ var createRemoteApprover = (deps) => {
548
553
  localSurfaceAvailable: false
549
554
  });
550
555
  } catch (error) {
556
+ if (isQuestionLimitRefusal(error)) {
557
+ return resultOfHandBack(questionLimitHandBack({ refusesUnanswered: refusesWhenUnanswered(policy), agentPromptFollows: false }));
558
+ }
551
559
  if (!(error instanceof SubscriptionRequiredError)) return deny(UNVERIFIABLE_APPROVAL_REASON);
552
560
  announceSubscriptionRequired(error.upgradeUrl, sessionId);
553
561
  return deny(SUBSCRIPTION_REQUIRED_NO_LOCAL_APPROVAL_UI);
@@ -15,26 +15,26 @@ import {
15
15
  storedMacAppState,
16
16
  storedPusharyKeychainServices,
17
17
  waitForMacAppExit
18
- } from "../chunk-4PZXI7WU.js";
18
+ } from "../chunk-SJCPIYWJ.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-Y5V4PA2Z.js";
24
+ import "../chunk-UWCPY4RY.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-CSOROFJY.js";
32
- import "../chunk-YGE6ML3O.js";
31
+ } from "../chunk-YQK72JGV.js";
32
+ import "../chunk-AFV3FQNG.js";
33
33
  import {
34
34
  isCursorPluginLeftover,
35
35
  releaseSoleGate,
36
36
  withoutPusharyCursorHooks
37
- } from "../chunk-WXPVVXBU.js";
37
+ } from "../chunk-3LBB7GVF.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-S54C6TQC.js";
46
+ } from "../chunk-EA6574W2.js";
47
47
  import {
48
48
  macAppKeepsMcpEntry,
49
49
  mcpServerBearer,
50
50
  pusharyKey,
51
51
  readMacAppAgentKey,
52
52
  setupReceiptKey
53
- } from "../chunk-U7NR4JVD.js";
53
+ } from "../chunk-QIPW7OVB.js";
54
54
  import "../chunk-QCGNGEGE.js";
55
- import "../chunk-ADR3KHOC.js";
55
+ import "../chunk-NAZRRXZM.js";
56
56
  import {
57
57
  planFxRemoval,
58
58
  removeInstructionBlock
59
- } from "../chunk-WXZHQ3TT.js";
60
- import "../chunk-FDWMG6NY.js";
59
+ } from "../chunk-LILS32LF.js";
60
+ import "../chunk-EO6CL4PD.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-QGSHV3WO.js";
72
+ } from "../chunk-6HIYOY6I.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-K4MBKXAE.js";
79
+ } from "../chunk-OZRT64BB.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-PUHP4IBA.js";
97
+ } from "../chunk-557ZE5EX.js";
98
98
  import {
99
99
  disableDaemonService
100
- } from "../chunk-HC3FHDKB.js";
100
+ } from "../chunk-5R23J52J.js";
101
101
  import {
102
102
  hookOwnerOf,
103
103
  isHookTakeoverReceipt,
@@ -105,12 +105,12 @@ import {
105
105
  resolveBridgeStub,
106
106
  restoreHookTakeover,
107
107
  restoreMcpServer
108
- } from "../chunk-CDQHQAS7.js";
108
+ } from "../chunk-7NJ4TDUH.js";
109
109
  import {
110
110
  removeGeminiSettings
111
- } from "../chunk-IF26ZGZ7.js";
112
- import "../chunk-XV6S5PWW.js";
113
- import "../chunk-4MUFZU2G.js";
111
+ } from "../chunk-LCNN7UOE.js";
112
+ import "../chunk-MURJ4WAL.js";
113
+ import "../chunk-F35YILEN.js";
114
114
  import {
115
115
  parseFlags
116
116
  } from "../chunk-NMUI3ZWG.js";
@@ -121,22 +121,22 @@ import {
121
121
  isDisabledExport,
122
122
  removeClaudeAlias,
123
123
  shellProfileCandidates
124
- } from "../chunk-WN3RACVD.js";
124
+ } from "../chunk-W3CBFLIX.js";
125
125
  import "../chunk-E46NE7FB.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";
126
+ import "../chunk-LWR5VKNC.js";
127
+ import "../chunk-LL2KHEJH.js";
128
+ import "../chunk-4K6YZPZ3.js";
129
+ import "../chunk-RSNN2TPE.js";
130
+ import "../chunk-ESXGCZDA.js";
131
131
  import "../chunk-POFBE6ZY.js";
132
- import "../chunk-METMK3L4.js";
133
- import "../chunk-4MWRR5IT.js";
134
- import "../chunk-O6IUZGWV.js";
132
+ import "../chunk-Q4WTIKM6.js";
133
+ import "../chunk-HSRNWCXJ.js";
134
+ import "../chunk-G3ZDCYMU.js";
135
135
  import "../chunk-PPY5N2E6.js";
136
136
  import {
137
137
  EXIT
138
138
  } from "../chunk-KZERVKTD.js";
139
- import "../chunk-Y5VKZNFN.js";
139
+ import "../chunk-PSCXEH42.js";
140
140
  import {
141
141
  claudeConfigDir,
142
142
  claudeJson,
@@ -149,6 +149,7 @@ import {
149
149
  codexConfigToml,
150
150
  codexHookPositions,
151
151
  codexHooksJson,
152
+ codexMcpMixesCommandWithHttp,
152
153
  codexSkillDir,
153
154
  cursorPluginDir,
154
155
  cursorUserHooks,
@@ -170,21 +171,21 @@ import {
170
171
  restoreCodexHookTrust,
171
172
  vscodePluginDir,
172
173
  vscodePluginMcp
173
- } from "../chunk-6MJWYYAS.js";
174
+ } from "../chunk-6YSEOXP5.js";
174
175
  import {
175
176
  cleanNpmEnv,
176
177
  globalPackageState,
177
178
  npmIsOnPath,
178
179
  readGlobalFolder,
179
180
  readGlobalPrefix
180
- } from "../chunk-2QREHU4O.js";
181
+ } from "../chunk-CFIQ3252.js";
181
182
  import "../chunk-QENTGE75.js";
182
183
  import {
183
184
  getBaseUrl
184
- } from "../chunk-BG4Y64FW.js";
185
+ } from "../chunk-DFKEJARZ.js";
185
186
  import {
186
187
  NPX_LATEST_COMMAND
187
- } from "../chunk-ERK24P76.js";
188
+ } from "../chunk-FG5HMJ7C.js";
188
189
  import {
189
190
  CLI_PACKAGE_NAMES,
190
191
  globalPackageFolder,
@@ -198,7 +199,8 @@ import {
198
199
  SUPPORT_EMAIL,
199
200
  isValidApiKey,
200
201
  redactSecrets
201
- } from "../chunk-AXJLJJ3M.js";
202
+ } from "../chunk-FXECTHAG.js";
203
+ import "../chunk-MLKGABMK.js";
202
204
 
203
205
  // bin/pushary-clean.ts
204
206
  import { existsSync as existsSync5, readFileSync as readFileSync4, copyFileSync, readdirSync as readdirSync4 } from "fs";
@@ -980,7 +982,7 @@ var main = async () => {
980
982
  const trustRemoved = hookOwnerOf(codexHooksData) === "app" && keepShared ? false : removeCodexHookTrust(parsed2, codexHooksJson2, codexPositions);
981
983
  const hadPushary = config.includes("pushary");
982
984
  if (hadPushary || trustRemoved) {
983
- const macAppKeepsCodexMcp = macAppKeeps("codex", codexMcpKey(parsed2));
985
+ const macAppKeepsCodexMcp = !codexMcpMixesCommandWithHttp(parsed2.mcp_servers?.pushary) && macAppKeeps("codex", codexMcpKey(parsed2));
984
986
  if (!macAppKeepsCodexMcp) {
985
987
  const mcpServers = parsed2.mcp_servers ?? {};
986
988
  delete mcpServers.pushary;
@@ -1,46 +1,47 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  runCodexBridge
4
- } from "../chunk-MUNL23WE.js";
5
- import "../chunk-ELLJPP6O.js";
4
+ } from "../chunk-SJJYXMJP.js";
5
+ import "../chunk-GFAG72LR.js";
6
6
  import {
7
7
  resolveProviderBinary
8
- } from "../chunk-6LOQE4J4.js";
9
- import "../chunk-USE5IEEW.js";
8
+ } from "../chunk-TMHE5CVX.js";
9
+ import "../chunk-R3CLBNST.js";
10
10
  import {
11
11
  withSpawnProcessOwnership
12
- } from "../chunk-7WFRY6OL.js";
12
+ } from "../chunk-RFCEVROB.js";
13
13
  import "../chunk-VUFHYMSP.js";
14
- import "../chunk-2AELPDMT.js";
15
- import "../chunk-GAMVAORR.js";
14
+ import "../chunk-7ETELRQX.js";
15
+ import "../chunk-UUAVYIWJ.js";
16
16
  import {
17
17
  transcriptsEnabled
18
- } from "../chunk-7JXJJNQ5.js";
18
+ } from "../chunk-ZEDGKCCM.js";
19
19
  import "../chunk-XHKBHWLX.js";
20
20
  import "../chunk-6ICPEJY5.js";
21
- import "../chunk-WN3RACVD.js";
22
- import "../chunk-YPD3MTFU.js";
23
- import "../chunk-EZHY65QA.js";
24
- import "../chunk-SEILUNWB.js";
21
+ import "../chunk-W3CBFLIX.js";
22
+ import "../chunk-4K6YZPZ3.js";
23
+ import "../chunk-RSNN2TPE.js";
24
+ import "../chunk-ESXGCZDA.js";
25
25
  import "../chunk-POFBE6ZY.js";
26
- import "../chunk-METMK3L4.js";
27
- import "../chunk-4MWRR5IT.js";
26
+ import "../chunk-Q4WTIKM6.js";
27
+ import "../chunk-HSRNWCXJ.js";
28
28
  import {
29
29
  getMachineId
30
- } from "../chunk-O6IUZGWV.js";
30
+ } from "../chunk-G3ZDCYMU.js";
31
31
  import "../chunk-PPY5N2E6.js";
32
32
  import "../chunk-KZERVKTD.js";
33
- import "../chunk-Y5VKZNFN.js";
34
- import "../chunk-6MJWYYAS.js";
35
- import "../chunk-2QREHU4O.js";
33
+ import "../chunk-PSCXEH42.js";
34
+ import "../chunk-6YSEOXP5.js";
35
+ import "../chunk-CFIQ3252.js";
36
36
  import "../chunk-QENTGE75.js";
37
37
  import {
38
38
  getApiKey,
39
39
  getBaseUrl
40
- } from "../chunk-BG4Y64FW.js";
41
- import "../chunk-ERK24P76.js";
40
+ } from "../chunk-DFKEJARZ.js";
41
+ import "../chunk-FG5HMJ7C.js";
42
42
  import "../chunk-QTOLNRET.js";
43
- import "../chunk-AXJLJJ3M.js";
43
+ import "../chunk-FXECTHAG.js";
44
+ import "../chunk-MLKGABMK.js";
44
45
 
45
46
  // bin/pushary-codex-bridge.ts
46
47
  import { existsSync } from "fs";