@pushary/agent-hooks 1.9.18 → 1.9.19
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.
- package/CHANGELOG.md +46 -18
- package/data/cursor-plugin/.cursor-plugin/plugin.json +1 -1
- package/data/cursor-plugin/CHANGELOG.md +5 -0
- package/dist/bin/pushary-bell-hook.js +25 -25
- package/dist/bin/pushary-bell.js +9 -9
- package/dist/bin/pushary-claude.js +26 -25
- package/dist/bin/pushary-clean.js +28 -28
- package/dist/bin/pushary-codex-bridge.js +17 -17
- package/dist/bin/pushary-codex-hook.js +30 -30
- package/dist/bin/pushary-codex.js +12 -12
- package/dist/bin/pushary-connect.js +24 -24
- package/dist/bin/pushary-cowork.js +5 -5
- package/dist/bin/pushary-daemon.js +31 -31
- package/dist/bin/pushary-disconnect.js +24 -24
- package/dist/bin/pushary-doctor.js +33 -33
- package/dist/bin/pushary-elicitation-hook.js +25 -25
- package/dist/bin/pushary-gemini-bridge.js +13 -13
- package/dist/bin/pushary-gemini-hook.js +27 -27
- package/dist/bin/pushary-hook.js +29 -29
- package/dist/bin/pushary-login.js +12 -12
- package/dist/bin/pushary-logout.js +10 -10
- package/dist/bin/pushary-mcp.js +9 -9
- package/dist/bin/pushary-mode.js +12 -12
- package/dist/bin/pushary-notification-hook.js +24 -24
- package/dist/bin/pushary-opencode-hook.js +26 -26
- package/dist/bin/pushary-permission-denied-hook.js +29 -29
- package/dist/bin/pushary-permission-hook.js +28 -28
- package/dist/bin/pushary-post-hook.js +24 -24
- package/dist/bin/pushary-prompt-hook.js +24 -24
- package/dist/bin/pushary-session-end-hook.js +24 -24
- package/dist/bin/pushary-session-start-hook.js +28 -28
- package/dist/bin/pushary-setup.js +35 -35
- package/dist/bin/pushary-stats.js +5 -5
- package/dist/bin/pushary-status.js +26 -26
- package/dist/bin/pushary-stop-hook.js +24 -24
- package/dist/bin/pushary-stopfailure-hook.js +24 -24
- package/dist/bin/pushary-suggestions.js +12 -12
- package/dist/bin/pushary-transcript-register.js +17 -17
- package/dist/bin/pushary-transcripts.js +7 -7
- package/dist/bin/pushary-upgrade.js +30 -30
- package/dist/bin/pushary-wait.js +12 -12
- package/dist/bin/pushary.js +6 -6
- package/dist/{chunk-XCOFZVQ3.js → chunk-23QKUOEV.js} +2 -2
- package/dist/{chunk-W3IBC4FG.js → chunk-2V2CCTGQ.js} +1 -1
- package/dist/{chunk-LDLMAGTK.js → chunk-2YAHQ763.js} +2 -2
- package/dist/{chunk-P34IFAIC.js → chunk-3FG2VCH3.js} +6 -6
- package/dist/{chunk-OD6ZMBFA.js → chunk-4ABHSCFJ.js} +2 -2
- package/dist/{chunk-EYQBTAC6.js → chunk-5C2GFTWE.js} +1 -1
- package/dist/{chunk-RN2HEOY2.js → chunk-5LQRUBFB.js} +1 -1
- package/dist/{chunk-7UTH3KQV.js → chunk-5PYLU6OS.js} +4 -4
- package/dist/{chunk-IDVBDHSX.js → chunk-5RMD75P2.js} +4 -4
- package/dist/{chunk-JCVGBUCZ.js → chunk-6GQDOO5P.js} +5 -5
- package/dist/{chunk-AYQREIJA.js → chunk-6TQLZP7F.js} +2 -2
- package/dist/{chunk-5SR5F4LH.js → chunk-736I6CBY.js} +1 -1
- package/dist/{chunk-IB3WIIFC.js → chunk-7TSL3JCX.js} +1 -1
- package/dist/{chunk-TE4M3E2M.js → chunk-A6U4RRFM.js} +2 -2
- package/dist/{chunk-U4X3GQR2.js → chunk-ATDOYZXC.js} +1 -1
- package/dist/{chunk-VPGJBKWU.js → chunk-AXG5QMRM.js} +3 -3
- package/dist/{chunk-6A6BXMNK.js → chunk-B4OS2OVD.js} +3 -3
- package/dist/{chunk-XLQAB5US.js → chunk-BIQF3C4H.js} +1 -1
- package/dist/{chunk-M3OVAMTR.js → chunk-CRW4P7JU.js} +1 -1
- package/dist/{chunk-5MCHXYBH.js → chunk-DKFAJHLI.js} +5 -5
- package/dist/{chunk-3E6SMCCH.js → chunk-DVLQ4TVD.js} +11 -8
- package/dist/{chunk-JN2PBSLX.js → chunk-E2RXTRM2.js} +4 -4
- package/dist/{chunk-HCCYXFX3.js → chunk-FEKP3NJR.js} +4 -4
- package/dist/{chunk-AELYA5BM.js → chunk-FRZS7XQF.js} +3 -3
- package/dist/{chunk-ERAUU54Q.js → chunk-HYPSYXP4.js} +4 -4
- package/dist/{chunk-BK2CBKUC.js → chunk-KRDQQL2X.js} +1 -1
- package/dist/{chunk-AFFFTDUS.js → chunk-KT36OCRW.js} +1 -1
- package/dist/{chunk-SFUVP6RK.js → chunk-LHGB64O2.js} +1 -1
- package/dist/{chunk-JCQURRHV.js → chunk-LXYNKZFP.js} +2 -2
- package/dist/{chunk-L6TIDQNU.js → chunk-MGW26CW7.js} +1 -1
- package/dist/{chunk-CPO4GI6S.js → chunk-MHYXM43K.js} +1 -1
- package/dist/{chunk-PZ2CZIP4.js → chunk-MID7BURF.js} +2 -2
- package/dist/{chunk-LM2IY7OH.js → chunk-NILVJ7HV.js} +8 -8
- package/dist/{chunk-KLMAOQR4.js → chunk-OWUDBHXW.js} +2 -2
- package/dist/{chunk-O43I5GBC.js → chunk-QDRDDVLH.js} +4 -4
- package/dist/{chunk-VM3WSNG4.js → chunk-QLG6UKIB.js} +5 -5
- package/dist/{chunk-TGEOVHWA.js → chunk-SEZUF33H.js} +5 -5
- package/dist/{chunk-I67Z6COJ.js → chunk-SIOYJRL4.js} +2 -2
- package/dist/{chunk-6JTEGLQY.js → chunk-SXVXANPI.js} +3 -3
- package/dist/{chunk-JRAQENMR.js → chunk-T27NT7LJ.js} +4 -4
- package/dist/{chunk-LF36VLSO.js → chunk-TBTCBAQC.js} +15 -14
- package/dist/{chunk-2YXGQINX.js → chunk-TNZYTGAJ.js} +6 -6
- package/dist/{chunk-ZS3JF5WZ.js → chunk-UAA4BEYM.js} +3 -3
- package/dist/{chunk-X5WZOZJY.js → chunk-VCLDXVR3.js} +2 -2
- package/dist/{chunk-BZH6SJAR.js → chunk-W4TZAKOD.js} +2 -2
- package/dist/{chunk-K4UPPZK4.js → chunk-XGHXQUDG.js} +1 -1
- package/dist/{chunk-PKMZSKF5.js → chunk-XQ4HTTBB.js} +1 -1
- package/dist/{chunk-EXHTATWA.js → chunk-XUUE6MYM.js} +8 -8
- package/dist/{chunk-IHBVOC2Q.js → chunk-YAU4JCYI.js} +3 -3
- package/dist/{chunk-JSD26D6B.js → chunk-YONHM5BQ.js} +1 -1
- package/dist/{chunk-LCRYCE5F.js → chunk-YXYSPMD3.js} +2 -2
- package/dist/{chunk-B3RNX2E7.js → chunk-Z4YQ7ZMO.js} +3 -3
- package/dist/{global-upgrade-WSUIPBIP.js → global-upgrade-XEMENBZA.js} +6 -6
- package/dist/{paths-PTDVSCCX.js → paths-VW5CI5KS.js} +2 -2
- package/dist/{reapply-Q3VLHRQS.js → reapply-7KPSIO4L.js} +20 -20
- package/dist/src/index.d.ts +1 -0
- package/dist/src/index.js +19 -19
- package/dist/{upgrade-lock-DJ3T5HPL.js → upgrade-lock-VT6XMQMB.js} +3 -3
- package/package.json +1 -1
- /package/dist/{chunk-VERKRKUN.js → chunk-6HMCOGKJ.js} +0 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,12 +1,27 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 1.9.19
|
|
4
|
+
|
|
5
|
+
- When nobody has answered the last 3 approvals in one agent session, Pushary stops sending that session's approvals to your phone. Each further call ends at once, exactly as it would have if nobody had answered it for the whole wait: under When I'm out Claude Code asks in its own prompt, a rule that refuses on timeout refuses it, a rule that approves on timeout runs it at once with nobody asked, and Codex set to never ask for approval refuses it. Nothing is sent, and the paused approval does not appear on your phone or in the Mac app. A command that deletes, rewrites history or reaches the network, such as `git push`, `rm` or `dropdb`, and any call Pushary flags as destructive, is still sent to your phone.
|
|
6
|
+
- Approvals go back to your phone as soon as you answer any approval in that session, send it a new prompt, or approve at your agent's own prompt a call Pushary handed there. That last one works for Claude Code and for Codex calls checked before they run, whose completion Pushary sees.
|
|
7
|
+
- An approval counts as unanswered only once its wait has ended with nobody answering, so several approvals open at the same time never pause the next one. Approvals you may have answered at your terminal without Pushary seeing it, in Gemini CLI, OpenCode, Cursor's shell and MCP approvals and Codex's own approval prompt, never count, so those sessions are never paused.
|
|
8
|
+
- Earlier CLI versions are paused only for Claude Code, and only where the call would have ended in Claude Code's prompt anyway. In a session started from your phone, CLI 1.9.6 to 1.9.12 refuse a paused call with their message that the remote session has no local approval UI. The Pushary Mac app keeps sending every approval to your phone for now.
|
|
9
|
+
|
|
3
10
|
## 1.9.18
|
|
4
11
|
|
|
5
|
-
|
|
12
|
+
_Notes corrected on October 4, 2026. The first version described only the Cursor case and left out the setup and skill text changes._
|
|
13
|
+
|
|
14
|
+
- `pushary disconnect` leaves a config file it cannot read exactly as it is and lists it as untouched, for every agent. For Cursor it also keeps the plugin folder when the hooks file that points into it cannot be read, so Cursor's gate never points at a script that was deleted.
|
|
15
|
+
- After setup, the line on how to test reads "Run a command that needs approval. Away from this computer, it reaches your phone." The bundled Pushary skill now says When I'm out waits 10 seconds for your phone by default, not 45.
|
|
6
16
|
|
|
7
17
|
## 1.9.17
|
|
8
18
|
|
|
9
|
-
|
|
19
|
+
_Notes corrected on October 4, 2026. The first version said a rule that approves on timeout lets the call run under When I'm out. It does not: the call is refused._
|
|
20
|
+
|
|
21
|
+
- When Codex runs with its approval policy set to never (full access), every call Pushary asks about goes to your phone, also while you are at the keyboard. Codex has no prompt of its own to ask you there. The wait is your policy's timeout, also under When I'm out.
|
|
22
|
+
- If nobody answers, the call is refused with "No response within timeout". Before, the command ran once the wait ended, a destructive one too, and at the keyboard it ran without anyone being asked. A wait cut short by Codex's hook time limit, and a question no phone could receive, are refused the same way.
|
|
23
|
+
- In Every time, a rule's timeout action still applies after its full wait: approve on timeout lets the call run, and deny on timeout refuses it. Under When I'm out, an unanswered call is refused whatever the rule's timeout action says.
|
|
24
|
+
- In Codex's other approval modes nothing changes. The call goes back to Codex, which asks in its own prompt when the call needs it.
|
|
10
25
|
|
|
11
26
|
## 1.9.16
|
|
12
27
|
|
|
@@ -27,14 +42,17 @@
|
|
|
27
42
|
|
|
28
43
|
## 1.9.15
|
|
29
44
|
|
|
45
|
+
_Notes corrected on October 4, 2026. "Allow for this session" for an MCP tool also reaches Claude Code questions; the first version said Codex only._
|
|
46
|
+
|
|
30
47
|
- Codex in Every time asks your phone only about the calls that matter. Codex raises its own approval when a command leaves its sandbox, a forced `rm` runs, an MCP tool is not marked read-only, or a patch lands outside the project, and Pushary answers that request in your mode as before. Before a call runs, Pushary now adds a question only when the call leaves the scope you agreed, a rule you wrote, a preset you picked or an approval route covers it, the command destroys, rewrites history or reaches the network, or a patch deletes a file. Commands that only build, test or read no longer reach your phone, and an MCP tool Codex asks about itself is asked once, through Codex's own request. The kill switch and your deny rules still apply to every call.
|
|
31
|
-
- In full access, where Codex asks nothing itself, every call your policy gates still comes to your phone, as before.
|
|
48
|
+
- In Every time with full access, where Codex asks nothing itself, every call your policy gates still comes to your phone, as before.
|
|
32
49
|
- When I'm out is unchanged for Codex, except for scope: Codex's own approval requests go to your phone first, and nothing else is asked before a call runs.
|
|
33
50
|
- A Codex edit outside the scope you agreed is now asked in Every time and When I'm out, also while you are at the keyboard, because Codex has no prompt for it there. Yes lets it run. No refuses it. No answer before your policy's wait ends refuses it with the path named. In Updates and Terminal, where nobody would be asked, it is refused. A patch that leaves the scope across several files is refused with a request to split it into single-file edits, as with Claude Code. Before this release Codex applied these edits without asking.
|
|
34
51
|
- In Updates, Pushary sends an update before a Codex call only for the calls above. Codex's own approval requests still send one each.
|
|
35
52
|
- A patch whose `*** Delete File:` or `*** Update File:` header is indented, which Codex applies, is now read as the delete or edit it is, so your path rules and the delete question apply to it.
|
|
36
53
|
- A command that deletes through a cloud CLI subcommand spelled as one word, such as `aws dynamodb delete-table`, `aws ec2 terminate-instances`, `heroku apps:destroy` or `firebase firestore:delete`, now counts as destructive for every agent. Pushary asks about it instead of leaving it to the agent's own allowlist, and an "allow Bash for this session" grant does not cover it.
|
|
37
|
-
- Codex questions can offer "Allow for this session"
|
|
54
|
+
- Codex questions can offer "Allow for this session" for Bash, where risky commands still ask, as Claude Code questions already did.
|
|
55
|
+
- After three approvals in a row for one exact MCP tool, the question can offer "Allow for this session" for that tool, in Claude Code and in Codex. It is never offered for Pushary's own tools or for a tool whose name says it runs code, sends, merges, publishes, deploys, writes, deletes or moves money.
|
|
38
56
|
|
|
39
57
|
## 1.9.14
|
|
40
58
|
|
|
@@ -42,17 +60,22 @@
|
|
|
42
60
|
|
|
43
61
|
## 1.9.13
|
|
44
62
|
|
|
45
|
-
|
|
63
|
+
_Notes corrected on October 4, 2026. The last two bullets, the setup receipt and the Windows exception were missing when 1.9.13 shipped._
|
|
64
|
+
|
|
65
|
+
- `pushary setup` makes Pushary the only gate for Antigravity CLI. When `~/.gemini/antigravity-cli/settings.json` has no `toolPermission`, setup sets it to `always-proceed`, so plain `agy` no longer asks in its own prompt and approvals from your phone take effect. A mode you chose yourself, such as `strict`, is left alone, and setup says agy will still ask in its own prompt. Setup records the change in `~/.pushary/setup/antigravity-tool-permission.json`.
|
|
46
66
|
- `pushary disconnect antigravity` and `pushary clean` put `toolPermission` back, but only if Pushary set it and only once no Pushary hook is left in `~/.gemini/config/hooks.json`. A value you set or changed is never touched.
|
|
47
67
|
- An Antigravity CLI call that Pushary cannot decide is now blocked with a reason instead of running unasked: when Pushary is signed out, cannot be reached, or cannot establish its policy. Other agents are unchanged and still fall back to their own prompts.
|
|
48
|
-
- If the Pushary CLI is uninstalled while agy is still connected, agy's approval hook blocks each call and says how to undo the setup, instead of exiting silently and letting the call run.
|
|
68
|
+
- If the Pushary CLI is uninstalled while agy is still connected, agy's approval hook blocks each call and says how to undo the setup, instead of exiting silently and letting the call run. On Windows the hook still exits silently in that case, and agy runs the call.
|
|
69
|
+
- A session started from your phone asks your phone every time under When I'm out, also when this computer looks attended, and waits for your policy's timeout. Before, when another session had prompted in the last five minutes or Pushary for Mac was attended, the phone was skipped and the call was denied with "no local approval UI". Nobody was asked.
|
|
70
|
+
- The Cursor plugin setup installs asks your phone about every file change under When I'm out, also while you are at the keyboard, and waits for your policy's timeout. Before, the edit was denied with "Switch to Every time" and nobody was asked, or it was denied after the 10 second push window when you were away. Shell commands and MCP calls in Cursor keep When I'm out as it was, because Cursor can prompt for those itself.
|
|
49
71
|
|
|
50
72
|
## 1.9.12
|
|
51
73
|
|
|
52
|
-
|
|
53
|
-
- `pushary disconnect fx` is recorded in `~/.pushary/declined-agents.json`, so Pushary.app versions that read that file leave fx off until you connect it again.
|
|
74
|
+
_Notes corrected on October 4, 2026. 1.9.12 shipped with no notes. The bullets below were added in the 1.9.13 and 1.9.15 packages, and the error text and the refused options in full were added on October 4._
|
|
54
75
|
|
|
55
|
-
-
|
|
76
|
+
- An Antigravity CLI tool call that failed is recorded as failed in the session, where it used to show as completed. The session now shows the call's error message: up to its first 500 characters, with secrets redacted, as for other agents.
|
|
77
|
+
- `pushary disconnect fx` is recorded in `~/.pushary/declined-agents.json`, so Pushary for Mac versions that read that file leave fx off until you connect it again.
|
|
78
|
+
- `rg`, `sort`, `uniq`, `sleep`, `pgrep` and `git branch --show-current` run without asking when they only read. This applies to every agent. `rg` still asks with an option that runs another program (`--pre`, `--pre-glob`, `--hostname-bin`, `--search-zip`, `-z`). `sort` still asks with an option that writes a file or runs a program (`-o`, `--output`, `-T`, `--temporary-directory`, `--compress-program`). `uniq` still asks with a second file, which it writes.
|
|
56
79
|
- Codex's `wait_threads` and `send_message_to_thread` run without asking, matched by exact name. The kill switch, a deny rule and a rule you wrote for the tool still win over them.
|
|
57
80
|
- A deny rule now blocks read-only commands too. A bare `Bash` deny, a `*` deny or a preset that never runs the shell used to let `ls` and other reads through.
|
|
58
81
|
|
|
@@ -66,25 +89,30 @@
|
|
|
66
89
|
|
|
67
90
|
## 1.9.10
|
|
68
91
|
|
|
69
|
-
- `pushary setup` no longer reports Qwen Code, CodeBuddy, Qoder, Droid and Devin as an account mismatch when
|
|
70
|
-
- `pushary doctor` no longer fails "Global package installed" on a computer
|
|
92
|
+
- `pushary setup` no longer reports Qwen Code, CodeBuddy, Qoder, Droid and Devin as an account mismatch when Pushary for Mac connected them and the CLI's key is in the same account. Setup compares the account of the key in their MCP entry for Qwen Code, CodeBuddy and Qoder, and the account of the Mac app's own key for Droid and Devin, whose hooks run through the app. They are kept and listed as kept for the Mac app. If the app is in a different account, setup reports it and changes nothing. The CLI does not copy or save the app's key.
|
|
93
|
+
- `pushary doctor` no longer fails "Global package installed" on a computer Pushary for Mac connects, for example when run with npx. The app runs the hooks there, so doctor prints that the global package is not installed and not needed. It still fails when the CLI has its own key or owns any agent's hooks, because those hooks run the global package.
|
|
71
94
|
- `pushary clean --everything` revokes the keys the CLI wrote on pushary.com before removing them: the key in `~/.pushary/config.json`, and a different key in the `export PUSHARY_API_KEY=...` line setup writes to your shell profile. It says whether each key was revoked. A key that is only in the `PUSHARY_API_KEY` environment variable is left alone and named, because Pushary did not write it and it may be a server key you use elsewhere. If pushary.com cannot be reached, the clean still finishes and tells you where to revoke the key. `--dry-run` revokes nothing and lists the keys it would revoke. The Mac app's key is never revoked, and a plain `clean`, `disconnect` and `sign-out` without `--revoke` behave as before.
|
|
72
|
-
- `pushary setup --take-over-hooks` takes over Droid's hooks from
|
|
95
|
+
- `pushary setup --take-over-hooks` takes over Droid's hooks from Pushary for Mac. It used to fail with "no Mac app wiring was found", because Droid keeps its hooks at the top of `~/.factory/hooks.json`.
|
|
73
96
|
|
|
74
97
|
## 1.9.9
|
|
75
98
|
|
|
76
99
|
- The VS Code hooks setup writes now run the gate through the same shell guard as every other agent. Before, a missing Node or a deleted plugin folder made the VS Code hooks fail on every tool call; now they stay silent and VS Code carries on as if Pushary were not installed. Run setup again for VS Code to get the guarded hooks.
|
|
77
|
-
- `pushary doctor`, `pushary status` and `pushary pair` recognise a computer
|
|
100
|
+
- `pushary doctor`, `pushary status` and `pushary pair` recognise a computer Pushary for Mac connects when the CLI has no key of its own. Doctor and status say the computer is connected through Pushary for Mac instead of reporting a missing key, and pair tells you to pair a phone from the app's Settings > Phone. The CLI does not use, copy or save the app's key.
|
|
78
101
|
- A default `pushary setup` turns on phone-start when `~/.pushary/config.json` exists but has no `controlMode`, as `pushary login` and the Mac app's Hermes connection leave it. Before, setup skipped phone-start on those machines. `--control off`, or a saved `controlMode` of `off`, still keeps it off, and upgrades still never add the background service on their own.
|
|
79
|
-
- `pushary setup` keeps an OpenCode plugin
|
|
102
|
+
- `pushary setup` keeps an OpenCode plugin Pushary for Mac installed, as it already did for the other agents, and lists it as kept. It used to overwrite the app's plugin, MCP key and instructions. Pass `--take-over-hooks` if you want the CLI to own it. If the app is signed into a different account, setup reports that for OpenCode and changes nothing.
|
|
80
103
|
|
|
81
104
|
## 1.9.8
|
|
82
105
|
|
|
83
|
-
|
|
106
|
+
_Notes corrected on October 4, 2026. The first three bullets were missing when 1.9.8 shipped._
|
|
107
|
+
|
|
108
|
+
- Phone pairing is now `pushary pair` and signing out is `pushary sign-out`. `pushary connect` and `pushary logout` still work as aliases, with the same flags. Setup, status, doctor and `pushary bell` say "pair a phone".
|
|
109
|
+
- `pushary disconnect fx` removes what setup added for fx: the Pushary server in `~/.fx/mcp.json`, the permission rules setup recorded, that record, and the Pushary block in `AGENTS.md`. Your own entries are left alone. With nothing connected it says fx was not connected and changes nothing.
|
|
110
|
+
- `pushary mode` accepts `updates-only` and `updates_only` for Updates (`notify_only`). Setup and disconnect accept both agent id forms, such as `claude_code` or `claude`, and reject an unknown id with the list of valid ones.
|
|
111
|
+
- `pushary upgrade` and automatic updates no longer take over agents Pushary for Mac connected. They used to replace the app's hooks with the CLI's and overwrite its MCP key for Claude Code, Codex, Gemini CLI, VS Code and OpenCode. An agent the app owns is now left exactly as the app wrote it and listed as kept for the Mac app, using the same rule setup uses. Pass `--take-over-hooks` to setup if you want the CLI to own it.
|
|
84
112
|
- `pushary clean` keeps the Mac app's wiring for Qwen Code, CodeBuddy, Qoder, Droid and Devin while the app is installed, as it already did for the other agents. `clean --everything` still removes it.
|
|
85
113
|
- `pushary disconnect cursor` removes the Cursor plugin setup installed in `~/.cursor/plugins/local/pushary`, including the `mcp.json` that held your API key, and setup's leftover copies of it. The plugin is kept, and the output says so, when the gate in `~/.cursor/hooks.json` that points into it could not be removed.
|
|
86
114
|
- `pushary disconnect` removes the Pushary block it wrote to `AGENTS.md` (Codex, OpenCode), `GEMINI.md`, `QWEN.md` and `CODEBUDDY.md`. Only the text between the Pushary markers is removed. Skills are left in place.
|
|
87
|
-
- `pushary disconnect <agent>` is no longer undone by the Mac app. It records the agent in `~/.pushary/declined-agents.json`, and Pushary
|
|
115
|
+
- `pushary disconnect <agent>` is no longer undone by the Mac app. It records the agent in `~/.pushary/declined-agents.json`, and Pushary for Mac versions that read that file leave the agent off until you connect it again from the app or with `pushary setup`.
|
|
88
116
|
- `pushary mode`, `mode clear`, `wait <seconds>` and `suggestions` no longer say "This key was rejected" when the key is fine. Keys from `pushary login`, phone pairing and the Mac app cannot change approval settings, and these commands now say so, point you to the Pushary app, your phone or the dashboard, and exit with code 2.
|
|
89
117
|
- `pushary sign-out --revoke` revokes those keys too, and then checks with pushary.com and tells you whether the key still works. Before, it could not revoke them and always said the key was still valid. `--json` adds `keyStillValid`.
|
|
90
118
|
- When the Mac app signs out of the key setup borrowed from it, the background service stops once instead of restarting every 10 seconds, and `pushary doctor`, `pushary status` and commands that report a rejected key say the key was signed out on this Mac, tell you to run `pushary login`, and name the shell profile line that still exports the old key. Pushary does not edit that line. A background service with no key at all also stops instead of restarting.
|
|
@@ -95,7 +123,7 @@
|
|
|
95
123
|
- An automatic update whose configuration refresh fails now retries after 5 minutes, then after an hour, then once a day, instead of every 5 minutes. On a Mac with phone-start on, each retry restarted the background service.
|
|
96
124
|
- A refresh that cannot succeed until you change something (a legacy phone-start service, phone-start turned on without a usable agent, or a config file Pushary cannot rewrite) is no longer retried automatically. `pushary doctor` shows it, and running `pushary upgrade` after the fix finishes it.
|
|
97
125
|
- When a Codex approval hook is turned off in Codex, setup and upgrade tell you to enable it in `/hooks` instead of asking you to trust it. A missing or background (asynchronous) approval hook points you to setup again, as doctor does.
|
|
98
|
-
- Upgrades, including automatic ones, regenerate the OpenCode plugin Pushary installed, so the
|
|
126
|
+
- Upgrades, including automatic ones, regenerate the OpenCode plugin Pushary installed, so the 1.9.4 fix, which makes OpenCode approvals use the directory OpenCode is working in, reaches existing installs without running setup again. A `pushary.js` you wrote yourself is never touched, and no plugin is added where there was none.
|
|
99
127
|
|
|
100
128
|
## 1.9.6
|
|
101
129
|
|
|
@@ -359,7 +387,7 @@ Requires the Codex auto-reviewer handling in `POST /api/agent/gate`, Codex bodie
|
|
|
359
387
|
|
|
360
388
|
- When Codex runs with `--approve-for-me`, stop asking you before its auto-reviewer. `PreToolUse` and `PermissionRequest` have no opinion under the reviewer, after the kill switch and a standing deny, so nothing the reviewer allows reaches your phone.
|
|
361
389
|
- When the auto-reviewer denies a shell command, hold the turn end and ask once whether to allow that exact command. A yes continues the turn, Codex runs the same command again, and the retry skips the reviewer once. A no, or no answer, lets the denial stand. Denials of `apply_patch` and MCP calls are not asked about yet. The request names the session's directory as well as the command's, so the card can say where the command runs.
|
|
362
|
-
- Hold a blocked call only when the hook can prove its host waits that long: the `--hold-budget=<seconds>` argument its registration now carries, or the budget the Mac app hands down in `PUSHARY_HOLD_BUDGET_SECONDS`. The hold never waits past that budget less its reserves. Without proof, which is an install registered before this release, the Claude plugin's older entry, an update that skipped `--finish-upgrade` or a Mac app built before it, a Claude block sends the
|
|
390
|
+
- Hold a blocked call only when the hook can prove its host waits that long: the `--hold-budget=<seconds>` argument its registration now carries, or the budget the Mac app hands down in `PUSHARY_HOLD_BUDGET_SECONDS`. The hold never waits past that budget less its reserves. Without proof, which is an install registered before this release, the Claude plugin's older entry, an update that skipped `--finish-upgrade` or a Mac app built before it, a Claude block sends the `Auto mode blocked <tool>` notification instead, and a Codex turn end reads no denial, so it is still asked about once the hook is upgraded.
|
|
363
391
|
- Build the `blocked-action/v2` identity for a Claude call, which includes its working directory, so the retry's hint and claim match the server's grant. A Claude call with no working directory is not asked about. Keep the retry hint for the grant's two minutes rather than ten.
|
|
364
392
|
- `pushary doctor` warns when a `PermissionDenied` or Codex `Stop` registration carries no hold budget.
|
|
365
393
|
|
|
@@ -2,7 +2,7 @@
|
|
|
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.
|
|
5
|
+
"version": "0.2.5",
|
|
6
6
|
"author": { "name": "Pushary", "email": "business@pushary.com" },
|
|
7
7
|
"homepage": "https://pushary.com",
|
|
8
8
|
"repository": "https://github.com/Pushary/cursor-plugin",
|
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.2.5
|
|
4
|
+
|
|
5
|
+
- Under When I'm out, a file change asks your phone every time, also while you are at the keyboard, and waits for your policy's timeout. Cursor's file hooks cannot show a prompt of their own. Before, the change was refused with "Switch to Every time" and nobody was asked, or it was refused after the 10 second push window when you were away. Shell commands and MCP calls keep When I'm out as it was, because Cursor prompts for those itself.
|
|
6
|
+
- The bundled Pushary skill says When I'm out waits 10 seconds for your phone by default, not 45.
|
|
7
|
+
|
|
3
8
|
## 0.2.4
|
|
4
9
|
|
|
5
10
|
- Stop the gated action when a question is missing after withdrawal, instead of treating it as a timeout that can approve the action.
|
|
@@ -1,41 +1,41 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
handleBell
|
|
4
|
-
} from "../chunk-
|
|
4
|
+
} from "../chunk-MGW26CW7.js";
|
|
5
5
|
import {
|
|
6
6
|
readHookInput
|
|
7
|
-
} from "../chunk-
|
|
8
|
-
import "../chunk-
|
|
7
|
+
} from "../chunk-T27NT7LJ.js";
|
|
8
|
+
import "../chunk-XUUE6MYM.js";
|
|
9
9
|
import "../chunk-6WEC3KZP.js";
|
|
10
|
-
import "../chunk-
|
|
11
|
-
import "../chunk-
|
|
12
|
-
import "../chunk-
|
|
13
|
-
import "../chunk-
|
|
10
|
+
import "../chunk-6GQDOO5P.js";
|
|
11
|
+
import "../chunk-XGHXQUDG.js";
|
|
12
|
+
import "../chunk-ATDOYZXC.js";
|
|
13
|
+
import "../chunk-2V2CCTGQ.js";
|
|
14
14
|
import "../chunk-XHKBHWLX.js";
|
|
15
|
-
import "../chunk-
|
|
16
|
-
import "../chunk-
|
|
17
|
-
import "../chunk-
|
|
18
|
-
import "../chunk-
|
|
19
|
-
import "../chunk-
|
|
15
|
+
import "../chunk-E2RXTRM2.js";
|
|
16
|
+
import "../chunk-SEZUF33H.js";
|
|
17
|
+
import "../chunk-YAU4JCYI.js";
|
|
18
|
+
import "../chunk-YONHM5BQ.js";
|
|
19
|
+
import "../chunk-7TSL3JCX.js";
|
|
20
20
|
import "../chunk-GMXKITVA.js";
|
|
21
21
|
import "../chunk-6ICPEJY5.js";
|
|
22
|
-
import "../chunk-
|
|
23
|
-
import "../chunk-
|
|
24
|
-
import "../chunk-
|
|
25
|
-
import "../chunk-
|
|
22
|
+
import "../chunk-4ABHSCFJ.js";
|
|
23
|
+
import "../chunk-NILVJ7HV.js";
|
|
24
|
+
import "../chunk-CRW4P7JU.js";
|
|
25
|
+
import "../chunk-DVLQ4TVD.js";
|
|
26
26
|
import "../chunk-POFBE6ZY.js";
|
|
27
|
-
import "../chunk-
|
|
28
|
-
import "../chunk-
|
|
29
|
-
import "../chunk-
|
|
30
|
-
import "../chunk-
|
|
27
|
+
import "../chunk-SXVXANPI.js";
|
|
28
|
+
import "../chunk-UAA4BEYM.js";
|
|
29
|
+
import "../chunk-B4OS2OVD.js";
|
|
30
|
+
import "../chunk-KRDQQL2X.js";
|
|
31
31
|
import "../chunk-7QLSKOSU.js";
|
|
32
32
|
import "../chunk-KZERVKTD.js";
|
|
33
|
-
import "../chunk-
|
|
34
|
-
import "../chunk-
|
|
33
|
+
import "../chunk-MID7BURF.js";
|
|
34
|
+
import "../chunk-FEKP3NJR.js";
|
|
35
35
|
import "../chunk-FT7UNIS3.js";
|
|
36
|
-
import "../chunk-
|
|
37
|
-
import "../chunk-
|
|
38
|
-
import "../chunk-
|
|
36
|
+
import "../chunk-XQ4HTTBB.js";
|
|
37
|
+
import "../chunk-LHGB64O2.js";
|
|
38
|
+
import "../chunk-6HMCOGKJ.js";
|
|
39
39
|
|
|
40
40
|
// bin/pushary-bell-hook.ts
|
|
41
41
|
var main = async () => {
|
package/dist/bin/pushary-bell.js
CHANGED
|
@@ -5,37 +5,37 @@ import {
|
|
|
5
5
|
liveAgentCount,
|
|
6
6
|
ring,
|
|
7
7
|
upgradeThreshold
|
|
8
|
-
} from "../chunk-
|
|
8
|
+
} from "../chunk-MGW26CW7.js";
|
|
9
9
|
import {
|
|
10
10
|
createIo
|
|
11
11
|
} from "../chunk-FO3MDD26.js";
|
|
12
12
|
import {
|
|
13
13
|
exitOnHelpFlag
|
|
14
|
-
} from "../chunk-
|
|
14
|
+
} from "../chunk-LXYNKZFP.js";
|
|
15
15
|
import {
|
|
16
16
|
addBellHooks,
|
|
17
17
|
bellInstalled,
|
|
18
18
|
removeBellHooks
|
|
19
|
-
} from "../chunk-
|
|
19
|
+
} from "../chunk-7TSL3JCX.js";
|
|
20
20
|
import {
|
|
21
21
|
parseFlags
|
|
22
22
|
} from "../chunk-GMXKITVA.js";
|
|
23
|
-
import "../chunk-
|
|
23
|
+
import "../chunk-4ABHSCFJ.js";
|
|
24
24
|
import "../chunk-7QLSKOSU.js";
|
|
25
25
|
import {
|
|
26
26
|
EXIT
|
|
27
27
|
} from "../chunk-KZERVKTD.js";
|
|
28
|
-
import "../chunk-
|
|
28
|
+
import "../chunk-MID7BURF.js";
|
|
29
29
|
import {
|
|
30
30
|
claudeSettings
|
|
31
|
-
} from "../chunk-
|
|
31
|
+
} from "../chunk-FEKP3NJR.js";
|
|
32
32
|
import {
|
|
33
33
|
readJsonSafe,
|
|
34
34
|
writeJsonAtomic
|
|
35
35
|
} from "../chunk-FT7UNIS3.js";
|
|
36
|
-
import "../chunk-
|
|
37
|
-
import "../chunk-
|
|
38
|
-
import "../chunk-
|
|
36
|
+
import "../chunk-XQ4HTTBB.js";
|
|
37
|
+
import "../chunk-LHGB64O2.js";
|
|
38
|
+
import "../chunk-6HMCOGKJ.js";
|
|
39
39
|
|
|
40
40
|
// bin/pushary-bell.ts
|
|
41
41
|
exitOnHelpFlag("bell");
|
|
@@ -8,39 +8,39 @@ import {
|
|
|
8
8
|
describeIdleWindow,
|
|
9
9
|
startProcessOwnership,
|
|
10
10
|
withSpawnProcessOwnership
|
|
11
|
-
} from "../chunk-
|
|
11
|
+
} from "../chunk-KT36OCRW.js";
|
|
12
12
|
import {
|
|
13
13
|
announceSubscriptionRequired,
|
|
14
14
|
isDeferAnswer
|
|
15
|
-
} from "../chunk-
|
|
15
|
+
} from "../chunk-5LQRUBFB.js";
|
|
16
16
|
import {
|
|
17
17
|
claudeTranscriptPath,
|
|
18
18
|
loadSessionKey,
|
|
19
19
|
registerTranscript,
|
|
20
20
|
registeredTranscriptEnabled
|
|
21
|
-
} from "../chunk-
|
|
21
|
+
} from "../chunk-XUUE6MYM.js";
|
|
22
22
|
import "../chunk-6WEC3KZP.js";
|
|
23
23
|
import {
|
|
24
24
|
ensureDaemonRunning
|
|
25
|
-
} from "../chunk-
|
|
25
|
+
} from "../chunk-6GQDOO5P.js";
|
|
26
26
|
import {
|
|
27
27
|
encryptRecord
|
|
28
|
-
} from "../chunk-
|
|
29
|
-
import "../chunk-
|
|
28
|
+
} from "../chunk-XGHXQUDG.js";
|
|
29
|
+
import "../chunk-ATDOYZXC.js";
|
|
30
30
|
import {
|
|
31
31
|
transcriptsEnabled
|
|
32
|
-
} from "../chunk-
|
|
32
|
+
} from "../chunk-2V2CCTGQ.js";
|
|
33
33
|
import {
|
|
34
34
|
needsShell,
|
|
35
35
|
spawnClaude
|
|
36
36
|
} from "../chunk-XHKBHWLX.js";
|
|
37
|
-
import "../chunk-
|
|
38
|
-
import "../chunk-
|
|
39
|
-
import "../chunk-
|
|
40
|
-
import "../chunk-
|
|
37
|
+
import "../chunk-SEZUF33H.js";
|
|
38
|
+
import "../chunk-YAU4JCYI.js";
|
|
39
|
+
import "../chunk-YONHM5BQ.js";
|
|
40
|
+
import "../chunk-7TSL3JCX.js";
|
|
41
41
|
import "../chunk-GMXKITVA.js";
|
|
42
42
|
import "../chunk-6ICPEJY5.js";
|
|
43
|
-
import "../chunk-
|
|
43
|
+
import "../chunk-4ABHSCFJ.js";
|
|
44
44
|
import {
|
|
45
45
|
DEFAULT_SESSION,
|
|
46
46
|
UNNAMED_ACTION,
|
|
@@ -58,8 +58,8 @@ import {
|
|
|
58
58
|
reportEvent,
|
|
59
59
|
savePendingCommand,
|
|
60
60
|
scopePathFor
|
|
61
|
-
} from "../chunk-
|
|
62
|
-
import "../chunk-
|
|
61
|
+
} from "../chunk-NILVJ7HV.js";
|
|
62
|
+
import "../chunk-CRW4P7JU.js";
|
|
63
63
|
import {
|
|
64
64
|
askUser,
|
|
65
65
|
cancelQuestion,
|
|
@@ -67,36 +67,37 @@ import {
|
|
|
67
67
|
isLocalQuestionHandoff,
|
|
68
68
|
nextLongPollMs,
|
|
69
69
|
waitForAnswer,
|
|
70
|
+
waitsForThePhone,
|
|
70
71
|
withdrawQuestion
|
|
71
|
-
} from "../chunk-
|
|
72
|
+
} from "../chunk-DVLQ4TVD.js";
|
|
72
73
|
import "../chunk-POFBE6ZY.js";
|
|
73
74
|
import {
|
|
74
75
|
SubscriptionRequiredError
|
|
75
|
-
} from "../chunk-
|
|
76
|
-
import "../chunk-
|
|
77
|
-
import "../chunk-
|
|
76
|
+
} from "../chunk-SXVXANPI.js";
|
|
77
|
+
import "../chunk-UAA4BEYM.js";
|
|
78
|
+
import "../chunk-B4OS2OVD.js";
|
|
78
79
|
import {
|
|
79
80
|
getMachineId
|
|
80
|
-
} from "../chunk-
|
|
81
|
+
} from "../chunk-KRDQQL2X.js";
|
|
81
82
|
import "../chunk-7QLSKOSU.js";
|
|
82
83
|
import "../chunk-KZERVKTD.js";
|
|
83
|
-
import "../chunk-
|
|
84
|
-
import "../chunk-
|
|
84
|
+
import "../chunk-MID7BURF.js";
|
|
85
|
+
import "../chunk-FEKP3NJR.js";
|
|
85
86
|
import "../chunk-FT7UNIS3.js";
|
|
86
87
|
import {
|
|
87
88
|
getApiKey,
|
|
88
89
|
getBaseUrl
|
|
89
|
-
} from "../chunk-
|
|
90
|
+
} from "../chunk-XQ4HTTBB.js";
|
|
90
91
|
import {
|
|
91
92
|
NPX_LATEST_COMMAND
|
|
92
|
-
} from "../chunk-
|
|
93
|
+
} from "../chunk-LHGB64O2.js";
|
|
93
94
|
import {
|
|
94
95
|
DECISION_STOP_REASON,
|
|
95
96
|
KILL_REASON,
|
|
96
97
|
UNVERIFIABLE_APPROVAL_REASON,
|
|
97
98
|
redactSecretsFromContent,
|
|
98
99
|
resolveGate
|
|
99
|
-
} from "../chunk-
|
|
100
|
+
} from "../chunk-6HMCOGKJ.js";
|
|
100
101
|
|
|
101
102
|
// src/wrapper/localPassthrough.ts
|
|
102
103
|
var SIGNAL_NUMBERS = {
|
|
@@ -542,7 +543,7 @@ var createRemoteApprover = (deps) => {
|
|
|
542
543
|
if (isDecisionStopped(question)) return deny(DECISION_STOP_REASON);
|
|
543
544
|
entry.correlationId = question.correlationId;
|
|
544
545
|
const localHandoff = isLocalQuestionHandoff(question);
|
|
545
|
-
let answer = question.answered ? { ...question, answered: true } :
|
|
546
|
+
let answer = question.answered ? { ...question, answered: true } : waitsForThePhone(question) ? await waitForPhone(entry, question.correlationId, windowFor(policy)) : { answered: false };
|
|
546
547
|
if (isDecisionStopped(answer) || entry.controller.signal.aborted) return deny(DECISION_STOP_REASON);
|
|
547
548
|
if (!answer.answered) {
|
|
548
549
|
answer = await withdrawQuestion(deps.apiKey, question.correlationId, { cancelQuestion: cancelQuestion2, waitForAnswer: waitForAnswer2 });
|
|
@@ -13,7 +13,7 @@ import {
|
|
|
13
13
|
isCursorPluginLeftover,
|
|
14
14
|
releaseSoleGate,
|
|
15
15
|
withoutPusharyCursorHooks
|
|
16
|
-
} from "../chunk-
|
|
16
|
+
} from "../chunk-FRZS7XQF.js";
|
|
17
17
|
import {
|
|
18
18
|
HERMES_PIP_PACKAGE,
|
|
19
19
|
readHermesStatus,
|
|
@@ -22,27 +22,27 @@ import {
|
|
|
22
22
|
shortenHome,
|
|
23
23
|
unregisterPluginLocation,
|
|
24
24
|
vscodeSettingsTargets
|
|
25
|
-
} from "../chunk-
|
|
25
|
+
} from "../chunk-AXG5QMRM.js";
|
|
26
26
|
import {
|
|
27
27
|
planFxRemoval,
|
|
28
28
|
removeInstructionBlock
|
|
29
|
-
} from "../chunk-
|
|
30
|
-
import "../chunk-
|
|
29
|
+
} from "../chunk-5RMD75P2.js";
|
|
30
|
+
import "../chunk-YXYSPMD3.js";
|
|
31
31
|
import {
|
|
32
32
|
disableDaemonService
|
|
33
|
-
} from "../chunk-
|
|
33
|
+
} from "../chunk-6GQDOO5P.js";
|
|
34
34
|
import "../chunk-XHKBHWLX.js";
|
|
35
35
|
import {
|
|
36
36
|
APPROVAL_SETTINGS_PATH
|
|
37
|
-
} from "../chunk-
|
|
37
|
+
} from "../chunk-QDRDDVLH.js";
|
|
38
38
|
import {
|
|
39
39
|
macAppKeepsMcpEntry,
|
|
40
40
|
mcpServerBearer,
|
|
41
41
|
pusharyKey,
|
|
42
42
|
readMacAppAgentKey,
|
|
43
43
|
setupReceiptKey
|
|
44
|
-
} from "../chunk-
|
|
45
|
-
import "../chunk-
|
|
44
|
+
} from "../chunk-HYPSYXP4.js";
|
|
45
|
+
import "../chunk-2YAHQ763.js";
|
|
46
46
|
import {
|
|
47
47
|
OPENCODE_PLUGIN_SIBLING,
|
|
48
48
|
OPENCODE_PLUGIN_SIBLING_CONTENTS,
|
|
@@ -54,14 +54,14 @@ import {
|
|
|
54
54
|
openCodePluginDir,
|
|
55
55
|
openCodePluginFile,
|
|
56
56
|
removeOpenCodeMcpServer
|
|
57
|
-
} from "../chunk-
|
|
57
|
+
} from "../chunk-DKFAJHLI.js";
|
|
58
58
|
import {
|
|
59
59
|
ansiPainter,
|
|
60
60
|
useColor
|
|
61
61
|
} from "../chunk-FO3MDD26.js";
|
|
62
62
|
import {
|
|
63
63
|
exitOnHelpFlag
|
|
64
|
-
} from "../chunk-
|
|
64
|
+
} from "../chunk-LXYNKZFP.js";
|
|
65
65
|
import {
|
|
66
66
|
compatibleConfigFile,
|
|
67
67
|
compatibleInstructionsFile,
|
|
@@ -74,7 +74,7 @@ import {
|
|
|
74
74
|
removePusharySettings,
|
|
75
75
|
removePusharyToolPermissions,
|
|
76
76
|
restoreClaudeMcpServer
|
|
77
|
-
} from "../chunk-
|
|
77
|
+
} from "../chunk-E2RXTRM2.js";
|
|
78
78
|
import {
|
|
79
79
|
hookOwnerOf,
|
|
80
80
|
isHookTakeoverReceipt,
|
|
@@ -82,12 +82,12 @@ import {
|
|
|
82
82
|
resolveBridgeStub,
|
|
83
83
|
restoreHookTakeover,
|
|
84
84
|
restoreMcpServer
|
|
85
|
-
} from "../chunk-
|
|
85
|
+
} from "../chunk-SEZUF33H.js";
|
|
86
86
|
import {
|
|
87
87
|
removeGeminiSettings
|
|
88
|
-
} from "../chunk-
|
|
89
|
-
import "../chunk-
|
|
90
|
-
import "../chunk-
|
|
88
|
+
} from "../chunk-YAU4JCYI.js";
|
|
89
|
+
import "../chunk-YONHM5BQ.js";
|
|
90
|
+
import "../chunk-7TSL3JCX.js";
|
|
91
91
|
import {
|
|
92
92
|
rejectUnknownFlags
|
|
93
93
|
} from "../chunk-GMXKITVA.js";
|
|
@@ -100,22 +100,22 @@ import {
|
|
|
100
100
|
readConfigFileKey,
|
|
101
101
|
readMacAppKeyPrefix,
|
|
102
102
|
removeClaudeAlias
|
|
103
|
-
} from "../chunk-
|
|
104
|
-
import "../chunk-
|
|
105
|
-
import "../chunk-
|
|
106
|
-
import "../chunk-
|
|
103
|
+
} from "../chunk-4ABHSCFJ.js";
|
|
104
|
+
import "../chunk-NILVJ7HV.js";
|
|
105
|
+
import "../chunk-CRW4P7JU.js";
|
|
106
|
+
import "../chunk-DVLQ4TVD.js";
|
|
107
107
|
import "../chunk-POFBE6ZY.js";
|
|
108
|
-
import "../chunk-
|
|
108
|
+
import "../chunk-SXVXANPI.js";
|
|
109
109
|
import {
|
|
110
110
|
absoluteUrl
|
|
111
|
-
} from "../chunk-
|
|
112
|
-
import "../chunk-
|
|
113
|
-
import "../chunk-
|
|
111
|
+
} from "../chunk-UAA4BEYM.js";
|
|
112
|
+
import "../chunk-B4OS2OVD.js";
|
|
113
|
+
import "../chunk-KRDQQL2X.js";
|
|
114
114
|
import "../chunk-7QLSKOSU.js";
|
|
115
115
|
import {
|
|
116
116
|
EXIT
|
|
117
117
|
} from "../chunk-KZERVKTD.js";
|
|
118
|
-
import "../chunk-
|
|
118
|
+
import "../chunk-MID7BURF.js";
|
|
119
119
|
import {
|
|
120
120
|
claudeJson,
|
|
121
121
|
claudeMcpReceipt,
|
|
@@ -152,14 +152,14 @@ import {
|
|
|
152
152
|
restoreCodexHookTrust,
|
|
153
153
|
vscodePluginDir,
|
|
154
154
|
vscodePluginMcp
|
|
155
|
-
} from "../chunk-
|
|
155
|
+
} from "../chunk-FEKP3NJR.js";
|
|
156
156
|
import "../chunk-FT7UNIS3.js";
|
|
157
157
|
import {
|
|
158
158
|
getBaseUrl
|
|
159
|
-
} from "../chunk-
|
|
159
|
+
} from "../chunk-XQ4HTTBB.js";
|
|
160
160
|
import {
|
|
161
161
|
NPX_LATEST_COMMAND
|
|
162
|
-
} from "../chunk-
|
|
162
|
+
} from "../chunk-LHGB64O2.js";
|
|
163
163
|
import {
|
|
164
164
|
CLI_PACKAGE_NAMES,
|
|
165
165
|
HOOK_COMPATIBLE_PROFILES,
|
|
@@ -171,7 +171,7 @@ import {
|
|
|
171
171
|
globalRootFor,
|
|
172
172
|
isValidApiKey,
|
|
173
173
|
redactSecrets
|
|
174
|
-
} from "../chunk-
|
|
174
|
+
} from "../chunk-6HMCOGKJ.js";
|
|
175
175
|
|
|
176
176
|
// bin/pushary-clean.ts
|
|
177
177
|
import { existsSync as existsSync6, readFileSync as readFileSync4, copyFileSync, readdirSync as readdirSync4 } from "fs";
|
|
@@ -5,10 +5,10 @@ import {
|
|
|
5
5
|
postLiveSession,
|
|
6
6
|
postLiveSessionUntilAccepted,
|
|
7
7
|
startLiveSessionHeartbeat
|
|
8
|
-
} from "../chunk-
|
|
8
|
+
} from "../chunk-A6U4RRFM.js";
|
|
9
9
|
import {
|
|
10
10
|
resolveProviderBinary
|
|
11
|
-
} from "../chunk-
|
|
11
|
+
} from "../chunk-OWUDBHXW.js";
|
|
12
12
|
import "../chunk-RIVNNBEK.js";
|
|
13
13
|
import {
|
|
14
14
|
SESSION_IDLE_TIMEOUT_MS,
|
|
@@ -16,50 +16,50 @@ import {
|
|
|
16
16
|
idleDeadlinePassed,
|
|
17
17
|
startProcessOwnership,
|
|
18
18
|
withSpawnProcessOwnership
|
|
19
|
-
} from "../chunk-
|
|
20
|
-
import "../chunk-
|
|
21
|
-
import "../chunk-
|
|
19
|
+
} from "../chunk-KT36OCRW.js";
|
|
20
|
+
import "../chunk-XGHXQUDG.js";
|
|
21
|
+
import "../chunk-ATDOYZXC.js";
|
|
22
22
|
import {
|
|
23
23
|
transcriptsEnabled
|
|
24
|
-
} from "../chunk-
|
|
24
|
+
} from "../chunk-2V2CCTGQ.js";
|
|
25
25
|
import {
|
|
26
26
|
spawnClaude
|
|
27
27
|
} from "../chunk-XHKBHWLX.js";
|
|
28
28
|
import "../chunk-6ICPEJY5.js";
|
|
29
|
-
import "../chunk-
|
|
29
|
+
import "../chunk-4ABHSCFJ.js";
|
|
30
30
|
import {
|
|
31
31
|
isAskUserResponse,
|
|
32
32
|
isDecisionStopped,
|
|
33
33
|
isWaitForAnswerResponse,
|
|
34
34
|
withdrawQuestion,
|
|
35
35
|
writeDegraded
|
|
36
|
-
} from "../chunk-
|
|
36
|
+
} from "../chunk-DVLQ4TVD.js";
|
|
37
37
|
import "../chunk-POFBE6ZY.js";
|
|
38
38
|
import {
|
|
39
39
|
callMcpTool
|
|
40
|
-
} from "../chunk-
|
|
41
|
-
import "../chunk-
|
|
42
|
-
import "../chunk-
|
|
40
|
+
} from "../chunk-SXVXANPI.js";
|
|
41
|
+
import "../chunk-UAA4BEYM.js";
|
|
42
|
+
import "../chunk-B4OS2OVD.js";
|
|
43
43
|
import {
|
|
44
44
|
getMachineId
|
|
45
|
-
} from "../chunk-
|
|
45
|
+
} from "../chunk-KRDQQL2X.js";
|
|
46
46
|
import "../chunk-7QLSKOSU.js";
|
|
47
47
|
import "../chunk-KZERVKTD.js";
|
|
48
|
-
import "../chunk-
|
|
49
|
-
import "../chunk-
|
|
48
|
+
import "../chunk-MID7BURF.js";
|
|
49
|
+
import "../chunk-FEKP3NJR.js";
|
|
50
50
|
import "../chunk-FT7UNIS3.js";
|
|
51
51
|
import {
|
|
52
52
|
getApiKey,
|
|
53
53
|
getBaseUrl
|
|
54
|
-
} from "../chunk-
|
|
55
|
-
import "../chunk-
|
|
54
|
+
} from "../chunk-XQ4HTTBB.js";
|
|
55
|
+
import "../chunk-LHGB64O2.js";
|
|
56
56
|
import {
|
|
57
57
|
elicitationContent,
|
|
58
58
|
parseAgentQuestion,
|
|
59
59
|
parseAgentQuestionAnswers,
|
|
60
60
|
planElicitationAsk,
|
|
61
61
|
readElicitationFields
|
|
62
|
-
} from "../chunk-
|
|
62
|
+
} from "../chunk-6HMCOGKJ.js";
|
|
63
63
|
|
|
64
64
|
// bin/pushary-codex-bridge.ts
|
|
65
65
|
import { existsSync } from "fs";
|