@pushary/agent-hooks 1.6.4 → 1.7.0
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 +8 -0
- package/README.md +3 -2
- package/dist/bin/pushary-bell-hook.js +23 -24
- package/dist/bin/pushary-bell.js +9 -10
- package/dist/bin/pushary-claude.js +27 -28
- package/dist/bin/pushary-clean.js +85 -28
- package/dist/bin/pushary-codex-bridge.js +17 -18
- package/dist/bin/pushary-codex-hook.js +30 -31
- package/dist/bin/pushary-codex.js +12 -13
- package/dist/bin/pushary-connect.js +13 -14
- package/dist/bin/pushary-cowork.js +5 -6
- package/dist/bin/pushary-daemon.js +27 -28
- package/dist/bin/pushary-disconnect.js +17 -18
- package/dist/bin/pushary-doctor.js +71 -36
- package/dist/bin/pushary-elicitation-hook.js +24 -25
- package/dist/bin/pushary-gemini-bridge.js +12 -13
- package/dist/bin/pushary-gemini-hook.js +27 -28
- package/dist/bin/pushary-hook.js +31 -32
- package/dist/bin/pushary-login.js +13 -15
- package/dist/bin/pushary-logout.js +7 -8
- package/dist/bin/pushary-mcp.d.ts +1 -0
- package/dist/bin/pushary-mcp.js +56 -0
- package/dist/bin/pushary-mode.js +9 -10
- package/dist/bin/pushary-notification-hook.js +27 -28
- package/dist/bin/pushary-opencode-hook.js +26 -27
- package/dist/bin/pushary-permission-denied-hook.js +31 -32
- package/dist/bin/pushary-permission-hook.js +30 -31
- package/dist/bin/pushary-post-hook.js +27 -28
- package/dist/bin/pushary-prompt-hook.js +27 -28
- package/dist/bin/pushary-session-end-hook.js +27 -28
- package/dist/bin/pushary-session-start-hook.js +31 -32
- package/dist/bin/pushary-setup.js +183 -73
- package/dist/bin/pushary-stats.js +5 -6
- package/dist/bin/pushary-status.js +15 -16
- package/dist/bin/pushary-stop-hook.js +27 -28
- package/dist/bin/pushary-stopfailure-hook.js +27 -28
- package/dist/bin/pushary-suggestions.js +4 -4
- package/dist/bin/pushary-transcript-register.js +19 -20
- package/dist/bin/pushary-transcripts.js +7 -8
- package/dist/bin/pushary-upgrade.js +20 -21
- package/dist/bin/pushary-wait.js +9 -10
- package/dist/bin/pushary.js +6 -7
- package/dist/{chunk-5UWV5GHM.js → chunk-2C7CCWVX.js} +1 -1
- package/dist/{chunk-P4BNYJ5Q.js → chunk-2PS6QWDW.js} +2 -2
- package/dist/{chunk-JOGA3TL2.js → chunk-4F46VIEE.js} +6 -6
- package/dist/{chunk-NYMPLNV3.js → chunk-52NVBNJT.js} +3 -3
- package/dist/{chunk-I3XJATMR.js → chunk-5HLTWFJ6.js} +1 -1
- package/dist/{chunk-HUB4Q35G.js → chunk-6ADZQFVW.js} +1 -1
- package/dist/{chunk-OZE2TQX5.js → chunk-73T6MSU5.js} +5 -5
- package/dist/{chunk-53DN77WB.js → chunk-7OS4IHGI.js} +2 -2
- package/dist/{chunk-BY2CRWBO.js → chunk-B234346F.js} +1 -1
- package/dist/{chunk-EA3IELHP.js → chunk-B3UXMSMW.js} +6 -2
- package/dist/{chunk-3VZX4NSP.js → chunk-B3YQANFN.js} +1 -1
- package/dist/{chunk-VA2R64I7.js → chunk-B76WVEDX.js} +1 -1
- package/dist/{chunk-YPONELWS.js → chunk-BBKNJJVX.js} +6 -6
- package/dist/{chunk-XOMH53NB.js → chunk-BH2SKSSK.js} +1 -1
- package/dist/{chunk-P4UYILQK.js → chunk-BWYJ6AAF.js} +2 -2
- package/dist/{chunk-I2YUMZLE.js → chunk-CVALVGA7.js} +1 -1
- package/dist/{chunk-6NLWK6ZV.js → chunk-D6BULEJW.js} +2 -2
- package/dist/{chunk-N62KAMMY.js → chunk-DANOZVZK.js} +1 -1
- package/dist/{chunk-K32C2RGK.js → chunk-DNJUSFBL.js} +11 -5
- package/dist/{chunk-5U3FJ6YF.js → chunk-DVQDPI3T.js} +8 -8
- package/dist/{chunk-YUGGNZSF.js → chunk-DZURML2D.js} +1 -1
- package/dist/{chunk-D3K2FPPJ.js → chunk-EAQMWJPG.js} +8 -8
- package/dist/{chunk-EREBZHN2.js → chunk-EGKXSQCY.js} +4 -4
- package/dist/{chunk-XJG2FUWS.js → chunk-HDRNWNVP.js} +6 -6
- package/dist/{chunk-H6XU22TN.js → chunk-IJ6ECPA6.js} +8 -8
- package/dist/{chunk-3LU74H52.js → chunk-J2355HR7.js} +1 -1
- package/dist/{chunk-BJENQBMH.js → chunk-JNXVOU6Y.js} +8 -4
- package/dist/{chunk-GBL4BTG3.js → chunk-JXUAXO74.js} +2 -2
- package/dist/{chunk-DESAUCH2.js → chunk-KW2RRR7D.js} +4 -6
- package/dist/{chunk-66H2QQAK.js → chunk-KXMZMZD3.js} +1 -1
- package/dist/{chunk-ZA5UXRNE.js → chunk-KYQXUGH7.js} +3 -3
- package/dist/{chunk-NFH73H5B.js → chunk-L4H2Q2S4.js} +276 -19
- package/dist/{chunk-LDRGVXLR.js → chunk-LEZFOTMI.js} +1 -1
- package/dist/{chunk-PBKEYMAO.js → chunk-O2LEPIU6.js} +1 -1
- package/dist/{chunk-YXPGFRRW.js → chunk-PQ4F64M2.js} +3 -3
- package/dist/{chunk-LFMOYHPY.js → chunk-PUDBG3GM.js} +1 -1
- package/dist/{chunk-YQMFGWBD.js → chunk-QXAK5RFU.js} +1 -1
- package/dist/{chunk-5SWQZ6HY.js → chunk-R2XCLT6I.js} +4 -4
- package/dist/{chunk-VHNDE3ZD.js → chunk-ROQK7IN3.js} +2 -2
- package/dist/{chunk-GU3EJCVV.js → chunk-S3UD4V6W.js} +39 -0
- package/dist/{chunk-PJF7L7AA.js → chunk-SQRWHALT.js} +2 -2
- package/dist/{chunk-UAP556WK.js → chunk-UC65FJJT.js} +2 -2
- package/dist/{chunk-R4HVHTNA.js → chunk-UOAQ6QMP.js} +2 -2
- package/dist/{chunk-OSJEMXSR.js → chunk-V4AQBAVG.js} +1 -1
- package/dist/{chunk-VOCZHOXV.js → chunk-V6QRSU2G.js} +4 -4
- package/dist/{chunk-LQI7W4RG.js → chunk-VKVIAZQO.js} +1 -1
- package/dist/{chunk-LJEL7IB5.js → chunk-WUNZAE7I.js} +5 -5
- package/dist/{chunk-UGKDBJJX.js → chunk-X6KDKOV5.js} +3 -3
- package/dist/{chunk-DZTKLE7Q.js → chunk-XNCMT7YY.js} +1 -1
- package/dist/{chunk-CAS7GFWI.js → chunk-YROGUPOZ.js} +75 -5
- package/dist/chunk-YYINL576.js +120 -0
- package/dist/{chunk-7CLTSZOL.js → chunk-ZQ7IDOKY.js} +3 -3
- package/dist/{reapply-4DAJKNVP.js → reapply-6PH3FMPX.js} +9 -10
- package/dist/src/index.js +19 -20
- package/package.json +2 -1
- package/dist/chunk-HWJW3CPO.js +0 -65
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,13 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 1.7.0
|
|
4
|
+
|
|
5
|
+
- **fx.** `npx @pushary/agent-hooks@latest setup --agents fx`, or ticking fx in the picker, connects Vercel Labs' fx coding agent. Setup adds a `pushary` server to `~/.fx/mcp.json` that runs the new `pushary-mcp` command, a local bridge that signs in with the key setup saved in `~/.pushary`. No key is written to fx's files, and a rotated key is used without running setup again. fx has no hooks other tools can register, so Pushary cannot answer fx's own approval prompts; fx's agent asks through Pushary's tools when it chooses to, guided by a managed block setup writes to `~/.fx/AGENTS.md`.
|
|
6
|
+
- Setup adds `"mcp_pushary_*": "allow"` to the `permission` rules in `~/.fx/settings.json`, after your own rules, so fx runs Pushary's tools without reviewing or prompting for each call, the same as the other agents' auto-allowed Pushary tools. A rule you already set for `mcp_pushary_*` is kept. fx workspaces that set their own permission rules replace the global ones, and setup names how many there are.
|
|
7
|
+
- Setup leaves `~/.fx/mcp.json` and `~/.fx/settings.json` untouched when fx itself would reject or refuse to edit them (comments, a trailing comma, a repeated key, or servers under a key fx ignores) and prints the command that retries only fx. It writes both files as compact JSON, the way fx does, and leaves a file alone rather than grow it past the size fx reads. It skips fx on a machine with no `~/.fx`, and on Windows, which fx does not support. fx is ticked automatically only when fx's own files are there, since other tools use `~/.fx` too.
|
|
8
|
+
- `pushary doctor` checks the fx entry and that its bridge is installed, and warns when Pushary's tools are not auto-allowed. `pushary clean` removes only the Pushary server, the allow rule it added, and the instructions block.
|
|
9
|
+
- `pushary setup --help` lists every agent id setup accepts.
|
|
10
|
+
|
|
3
11
|
## 1.6.4
|
|
4
12
|
|
|
5
13
|
- Requests to Pushary now say which client made them: the CLI version, the platform, a per-process run id, and the machine id this machine already has. They go only to Pushary's own address, never to npm or any other host, and never include file paths, keys or content. Support can then find a problem from your account instead of asking for terminal output.
|
package/README.md
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
[](https://www.npmjs.com/package/@pushary/agent-hooks)
|
|
5
5
|
[](./LICENSE)
|
|
6
6
|
|
|
7
|
-
Push notifications, questions, and permission approvals for AI agents. Get a push when your agent finishes work, answer its questions from your phone, and approve risky commands before they run. Works with Claude Code, Codex, Cursor, VS Code, OpenCode, Gemini CLI, and
|
|
7
|
+
Push notifications, questions, and permission approvals for AI agents. Get a push when your agent finishes work, answer its questions from your phone, and approve risky commands before they run. Works with Claude Code, Codex, Cursor, VS Code, OpenCode, Gemini CLI, Hermes, and fx.
|
|
8
8
|
|
|
9
9
|
Your agent froze waiting for a yes. This is how it reaches you.
|
|
10
10
|
|
|
@@ -111,6 +111,7 @@ npx @pushary/agent-hooks@latest doctor
|
|
|
111
111
|
| Hermes | yes | yes | yes |
|
|
112
112
|
| VS Code | yes | yes | yes |
|
|
113
113
|
| OpenCode | yes | yes | yes |
|
|
114
|
+
| fx | yes | yes | no |
|
|
114
115
|
|
|
115
116
|
Any other MCP client can use notify and ask by pointing at the Pushary MCP endpoint directly.
|
|
116
117
|
|
|
@@ -184,7 +185,7 @@ failing closed would let one malformed download silence every hook on the machin
|
|
|
184
185
|
|
|
185
186
|
```
|
|
186
187
|
cowork Set up Claude Desktop and Cowork with the Pushary connector
|
|
187
|
-
setup Configure Claude Code, Codex, Gemini CLI, Hermes, Cursor, VS Code, or
|
|
188
|
+
setup Configure Claude Code, Codex, Gemini CLI, Hermes, Cursor, VS Code, OpenCode, or fx with Pushary
|
|
188
189
|
claude Run Claude Code through Pushary, reachable from your phone even when idle
|
|
189
190
|
daemon Keep this machine reachable so your phone can START a new session
|
|
190
191
|
status One screen: which key is in force, whether the server accepts it, what can receive an approval
|
|
@@ -1,39 +1,38 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
handleBell
|
|
4
|
-
} from "../chunk-
|
|
4
|
+
} from "../chunk-6ADZQFVW.js";
|
|
5
5
|
import {
|
|
6
6
|
readHookInput
|
|
7
|
-
} from "../chunk-
|
|
8
|
-
import "../chunk-
|
|
7
|
+
} from "../chunk-UC65FJJT.js";
|
|
8
|
+
import "../chunk-EAQMWJPG.js";
|
|
9
9
|
import "../chunk-SGZJ5LYH.js";
|
|
10
|
-
import "../chunk-
|
|
11
|
-
import "../chunk-
|
|
12
|
-
import "../chunk-
|
|
13
|
-
import "../chunk-
|
|
14
|
-
import "../chunk-
|
|
15
|
-
import "../chunk-
|
|
16
|
-
import "../chunk-
|
|
17
|
-
import "../chunk-
|
|
18
|
-
import "../chunk-
|
|
19
|
-
import "../chunk-
|
|
10
|
+
import "../chunk-R2XCLT6I.js";
|
|
11
|
+
import "../chunk-CVALVGA7.js";
|
|
12
|
+
import "../chunk-5HLTWFJ6.js";
|
|
13
|
+
import "../chunk-PQ4F64M2.js";
|
|
14
|
+
import "../chunk-73T6MSU5.js";
|
|
15
|
+
import "../chunk-ZQ7IDOKY.js";
|
|
16
|
+
import "../chunk-VKVIAZQO.js";
|
|
17
|
+
import "../chunk-BH2SKSSK.js";
|
|
18
|
+
import "../chunk-KXMZMZD3.js";
|
|
19
|
+
import "../chunk-B76WVEDX.js";
|
|
20
20
|
import "../chunk-XHKBHWLX.js";
|
|
21
|
-
import "../chunk-
|
|
22
|
-
import "../chunk-
|
|
21
|
+
import "../chunk-DZURML2D.js";
|
|
22
|
+
import "../chunk-V6QRSU2G.js";
|
|
23
23
|
import "../chunk-POFBE6ZY.js";
|
|
24
24
|
import "../chunk-GMXKITVA.js";
|
|
25
|
-
import "../chunk-
|
|
26
|
-
import "../chunk-
|
|
27
|
-
import "../chunk-
|
|
25
|
+
import "../chunk-UOAQ6QMP.js";
|
|
26
|
+
import "../chunk-KW2RRR7D.js";
|
|
27
|
+
import "../chunk-XNCMT7YY.js";
|
|
28
28
|
import "../chunk-7QLSKOSU.js";
|
|
29
29
|
import "../chunk-KZERVKTD.js";
|
|
30
|
-
import "../chunk-
|
|
31
|
-
import "../chunk-
|
|
30
|
+
import "../chunk-ROQK7IN3.js";
|
|
31
|
+
import "../chunk-DNJUSFBL.js";
|
|
32
32
|
import "../chunk-T7E75EKA.js";
|
|
33
|
-
import "../chunk-
|
|
34
|
-
import "../chunk-
|
|
35
|
-
import "../chunk-
|
|
36
|
-
import "../chunk-HWJW3CPO.js";
|
|
33
|
+
import "../chunk-V4AQBAVG.js";
|
|
34
|
+
import "../chunk-B3UXMSMW.js";
|
|
35
|
+
import "../chunk-YROGUPOZ.js";
|
|
37
36
|
|
|
38
37
|
// bin/pushary-bell-hook.ts
|
|
39
38
|
var main = async () => {
|
package/dist/bin/pushary-bell.js
CHANGED
|
@@ -5,38 +5,37 @@ import {
|
|
|
5
5
|
liveAgentCount,
|
|
6
6
|
ring,
|
|
7
7
|
upgradeThreshold
|
|
8
|
-
} from "../chunk-
|
|
8
|
+
} from "../chunk-6ADZQFVW.js";
|
|
9
9
|
import {
|
|
10
10
|
addBellHooks,
|
|
11
11
|
bellInstalled,
|
|
12
12
|
removeBellHooks
|
|
13
|
-
} from "../chunk-
|
|
13
|
+
} from "../chunk-VKVIAZQO.js";
|
|
14
14
|
import {
|
|
15
15
|
createIo
|
|
16
16
|
} from "../chunk-5RUIFDTP.js";
|
|
17
17
|
import {
|
|
18
18
|
exitOnHelpFlag
|
|
19
|
-
} from "../chunk-
|
|
19
|
+
} from "../chunk-2PS6QWDW.js";
|
|
20
20
|
import {
|
|
21
21
|
parseFlags
|
|
22
22
|
} from "../chunk-GMXKITVA.js";
|
|
23
|
-
import "../chunk-
|
|
23
|
+
import "../chunk-UOAQ6QMP.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-ROQK7IN3.js";
|
|
29
29
|
import {
|
|
30
30
|
claudeSettings
|
|
31
|
-
} from "../chunk-
|
|
31
|
+
} from "../chunk-DNJUSFBL.js";
|
|
32
32
|
import {
|
|
33
33
|
readJsonSafe,
|
|
34
34
|
writeJsonAtomic
|
|
35
35
|
} from "../chunk-T7E75EKA.js";
|
|
36
|
-
import "../chunk-
|
|
37
|
-
import "../chunk-
|
|
38
|
-
import "../chunk-
|
|
39
|
-
import "../chunk-HWJW3CPO.js";
|
|
36
|
+
import "../chunk-V4AQBAVG.js";
|
|
37
|
+
import "../chunk-B3UXMSMW.js";
|
|
38
|
+
import "../chunk-YROGUPOZ.js";
|
|
40
39
|
|
|
41
40
|
// bin/pushary-bell.ts
|
|
42
41
|
exitOnHelpFlag("bell");
|
|
@@ -8,7 +8,7 @@ import {
|
|
|
8
8
|
describeIdleWindow,
|
|
9
9
|
startProcessOwnership,
|
|
10
10
|
withSpawnProcessOwnership
|
|
11
|
-
} from "../chunk-
|
|
11
|
+
} from "../chunk-LEZFOTMI.js";
|
|
12
12
|
import {
|
|
13
13
|
isDeferAnswer
|
|
14
14
|
} from "../chunk-YHG74UFF.js";
|
|
@@ -17,24 +17,24 @@ import {
|
|
|
17
17
|
loadSessionKey,
|
|
18
18
|
registerTranscript,
|
|
19
19
|
registeredTranscriptEnabled
|
|
20
|
-
} from "../chunk-
|
|
20
|
+
} from "../chunk-EAQMWJPG.js";
|
|
21
21
|
import "../chunk-SGZJ5LYH.js";
|
|
22
|
-
import "../chunk-
|
|
23
|
-
import "../chunk-
|
|
24
|
-
import "../chunk-
|
|
25
|
-
import "../chunk-
|
|
22
|
+
import "../chunk-R2XCLT6I.js";
|
|
23
|
+
import "../chunk-CVALVGA7.js";
|
|
24
|
+
import "../chunk-5HLTWFJ6.js";
|
|
25
|
+
import "../chunk-PQ4F64M2.js";
|
|
26
26
|
import {
|
|
27
27
|
ensureDaemonRunning
|
|
28
|
-
} from "../chunk-
|
|
29
|
-
import "../chunk-
|
|
30
|
-
import "../chunk-
|
|
28
|
+
} from "../chunk-73T6MSU5.js";
|
|
29
|
+
import "../chunk-ZQ7IDOKY.js";
|
|
30
|
+
import "../chunk-VKVIAZQO.js";
|
|
31
31
|
import {
|
|
32
32
|
encryptRecord
|
|
33
|
-
} from "../chunk-
|
|
34
|
-
import "../chunk-
|
|
33
|
+
} from "../chunk-BH2SKSSK.js";
|
|
34
|
+
import "../chunk-KXMZMZD3.js";
|
|
35
35
|
import {
|
|
36
36
|
transcriptsEnabled
|
|
37
|
-
} from "../chunk-
|
|
37
|
+
} from "../chunk-B76WVEDX.js";
|
|
38
38
|
import {
|
|
39
39
|
needsShell,
|
|
40
40
|
spawnClaude
|
|
@@ -56,8 +56,8 @@ import {
|
|
|
56
56
|
reportEvent,
|
|
57
57
|
savePendingCommand,
|
|
58
58
|
scopePathFor
|
|
59
|
-
} from "../chunk-
|
|
60
|
-
import "../chunk-
|
|
59
|
+
} from "../chunk-IJ6ECPA6.js";
|
|
60
|
+
import "../chunk-DZURML2D.js";
|
|
61
61
|
import {
|
|
62
62
|
DECISION_STOP_REASON,
|
|
63
63
|
askUser,
|
|
@@ -67,34 +67,33 @@ import {
|
|
|
67
67
|
nextLongPollMs,
|
|
68
68
|
waitForAnswer,
|
|
69
69
|
withdrawQuestion
|
|
70
|
-
} from "../chunk-
|
|
71
|
-
import "../chunk-
|
|
70
|
+
} from "../chunk-EGKXSQCY.js";
|
|
71
|
+
import "../chunk-V6QRSU2G.js";
|
|
72
72
|
import "../chunk-POFBE6ZY.js";
|
|
73
73
|
import "../chunk-GMXKITVA.js";
|
|
74
|
-
import "../chunk-
|
|
75
|
-
import "../chunk-
|
|
76
|
-
import "../chunk-
|
|
74
|
+
import "../chunk-UOAQ6QMP.js";
|
|
75
|
+
import "../chunk-JNXVOU6Y.js";
|
|
76
|
+
import "../chunk-KW2RRR7D.js";
|
|
77
77
|
import {
|
|
78
78
|
getMachineId
|
|
79
|
-
} from "../chunk-
|
|
79
|
+
} from "../chunk-XNCMT7YY.js";
|
|
80
80
|
import "../chunk-7QLSKOSU.js";
|
|
81
81
|
import "../chunk-KZERVKTD.js";
|
|
82
|
-
import "../chunk-
|
|
83
|
-
import "../chunk-
|
|
82
|
+
import "../chunk-ROQK7IN3.js";
|
|
83
|
+
import "../chunk-DNJUSFBL.js";
|
|
84
84
|
import "../chunk-T7E75EKA.js";
|
|
85
85
|
import {
|
|
86
86
|
getApiKey,
|
|
87
87
|
getBaseUrl
|
|
88
|
-
} from "../chunk-
|
|
88
|
+
} from "../chunk-V4AQBAVG.js";
|
|
89
|
+
import {
|
|
90
|
+
NPX_LATEST_COMMAND
|
|
91
|
+
} from "../chunk-B3UXMSMW.js";
|
|
89
92
|
import {
|
|
90
93
|
KILL_REASON,
|
|
91
94
|
redactSecrets,
|
|
92
95
|
resolveGate
|
|
93
|
-
} from "../chunk-
|
|
94
|
-
import {
|
|
95
|
-
NPX_LATEST_COMMAND
|
|
96
|
-
} from "../chunk-EA3IELHP.js";
|
|
97
|
-
import "../chunk-HWJW3CPO.js";
|
|
96
|
+
} from "../chunk-YROGUPOZ.js";
|
|
98
97
|
|
|
99
98
|
// src/wrapper/localPassthrough.ts
|
|
100
99
|
var SIGNAL_NUMBERS = {
|
|
@@ -7,14 +7,24 @@ import {
|
|
|
7
7
|
createGuards,
|
|
8
8
|
resolveHermesPython,
|
|
9
9
|
runHermesPythonScript
|
|
10
|
-
} from "../chunk-
|
|
10
|
+
} from "../chunk-DANOZVZK.js";
|
|
11
11
|
import "../chunk-P32LPT2L.js";
|
|
12
12
|
import {
|
|
13
|
+
FX_PROFILE_REFUSALS,
|
|
14
|
+
FX_SETTINGS_REFUSALS,
|
|
15
|
+
fxProfileText,
|
|
16
|
+
fxSettingsText,
|
|
17
|
+
readFxFile,
|
|
18
|
+
readFxProfile,
|
|
19
|
+
readFxSettings,
|
|
13
20
|
removeInstructionBlock,
|
|
14
21
|
shortenHome,
|
|
15
22
|
unregisterPluginLocation,
|
|
16
|
-
vscodeSettingsTargets
|
|
17
|
-
|
|
23
|
+
vscodeSettingsTargets,
|
|
24
|
+
withoutFxPusharyServer,
|
|
25
|
+
withoutPusharyToolsAllowed
|
|
26
|
+
} from "../chunk-L4H2Q2S4.js";
|
|
27
|
+
import "../chunk-YYINL576.js";
|
|
18
28
|
import {
|
|
19
29
|
OPENCODE_PLUGIN_SIBLING,
|
|
20
30
|
OPENCODE_PLUGIN_SIBLING_CONTENTS,
|
|
@@ -24,7 +34,7 @@ import {
|
|
|
24
34
|
openCodePluginDir,
|
|
25
35
|
openCodePluginFile,
|
|
26
36
|
removeOpenCodeMcpServer
|
|
27
|
-
} from "../chunk-
|
|
37
|
+
} from "../chunk-B3YQANFN.js";
|
|
28
38
|
import {
|
|
29
39
|
compatibleConfigFile,
|
|
30
40
|
compatibleInstructionsFile,
|
|
@@ -32,44 +42,44 @@ import {
|
|
|
32
42
|
compatiblePermissionRuleFile,
|
|
33
43
|
removeCompatibleHooks,
|
|
34
44
|
removeCompatibleMcpServer
|
|
35
|
-
} from "../chunk-
|
|
45
|
+
} from "../chunk-WUNZAE7I.js";
|
|
36
46
|
import {
|
|
37
47
|
isClaudeMcpSnapshot,
|
|
38
48
|
removeClaudeMcpServers,
|
|
39
49
|
removePusharySettings,
|
|
40
50
|
removePusharyToolPermissions,
|
|
41
51
|
restoreClaudeMcpServer
|
|
42
|
-
} from "../chunk-
|
|
52
|
+
} from "../chunk-KYQXUGH7.js";
|
|
43
53
|
import {
|
|
44
54
|
hookOwnerOf,
|
|
45
55
|
isHookTakeoverReceipt,
|
|
46
56
|
restoreHookTakeover,
|
|
47
57
|
restoreMcpServer
|
|
48
|
-
} from "../chunk-
|
|
49
|
-
import "../chunk-
|
|
58
|
+
} from "../chunk-R2XCLT6I.js";
|
|
59
|
+
import "../chunk-CVALVGA7.js";
|
|
50
60
|
import {
|
|
51
61
|
liveBridgeProbe,
|
|
52
62
|
resolveBridgeStub
|
|
53
|
-
} from "../chunk-
|
|
63
|
+
} from "../chunk-5HLTWFJ6.js";
|
|
54
64
|
import {
|
|
55
65
|
pusharyHookExecutable
|
|
56
|
-
} from "../chunk-
|
|
66
|
+
} from "../chunk-PQ4F64M2.js";
|
|
57
67
|
import {
|
|
58
68
|
disableDaemonService
|
|
59
|
-
} from "../chunk-
|
|
69
|
+
} from "../chunk-73T6MSU5.js";
|
|
60
70
|
import {
|
|
61
71
|
removeGeminiSettings
|
|
62
|
-
} from "../chunk-
|
|
63
|
-
import "../chunk-
|
|
72
|
+
} from "../chunk-ZQ7IDOKY.js";
|
|
73
|
+
import "../chunk-VKVIAZQO.js";
|
|
64
74
|
import "../chunk-XHKBHWLX.js";
|
|
65
|
-
import "../chunk-
|
|
66
|
-
import "../chunk-
|
|
67
|
-
import "../chunk-
|
|
68
|
-
import "../chunk-
|
|
75
|
+
import "../chunk-IJ6ECPA6.js";
|
|
76
|
+
import "../chunk-DZURML2D.js";
|
|
77
|
+
import "../chunk-EGKXSQCY.js";
|
|
78
|
+
import "../chunk-V6QRSU2G.js";
|
|
69
79
|
import "../chunk-POFBE6ZY.js";
|
|
70
80
|
import {
|
|
71
81
|
exitOnHelpFlag
|
|
72
|
-
} from "../chunk-
|
|
82
|
+
} from "../chunk-2PS6QWDW.js";
|
|
73
83
|
import {
|
|
74
84
|
rejectUnknownFlags
|
|
75
85
|
} from "../chunk-GMXKITVA.js";
|
|
@@ -77,15 +87,15 @@ import {
|
|
|
77
87
|
CANDIDATE_RCS,
|
|
78
88
|
isDisabledExport,
|
|
79
89
|
removeClaudeAlias
|
|
80
|
-
} from "../chunk-
|
|
81
|
-
import "../chunk-
|
|
82
|
-
import "../chunk-
|
|
83
|
-
import "../chunk-
|
|
90
|
+
} from "../chunk-UOAQ6QMP.js";
|
|
91
|
+
import "../chunk-JNXVOU6Y.js";
|
|
92
|
+
import "../chunk-KW2RRR7D.js";
|
|
93
|
+
import "../chunk-XNCMT7YY.js";
|
|
84
94
|
import "../chunk-7QLSKOSU.js";
|
|
85
95
|
import {
|
|
86
96
|
EXIT
|
|
87
97
|
} from "../chunk-KZERVKTD.js";
|
|
88
|
-
import "../chunk-
|
|
98
|
+
import "../chunk-ROQK7IN3.js";
|
|
89
99
|
import {
|
|
90
100
|
bridgeAgentKey,
|
|
91
101
|
claudeJson,
|
|
@@ -102,6 +112,9 @@ import {
|
|
|
102
112
|
cursorUserHooks,
|
|
103
113
|
cursorUserMcp,
|
|
104
114
|
execNpm,
|
|
115
|
+
fxAgentsMd,
|
|
116
|
+
fxMcpProfile,
|
|
117
|
+
fxSettings,
|
|
105
118
|
geminiMd,
|
|
106
119
|
geminiSettings,
|
|
107
120
|
hermesConfigReceipt,
|
|
@@ -114,9 +127,10 @@ import {
|
|
|
114
127
|
restoreCodexHookTrust,
|
|
115
128
|
vscodePluginDir,
|
|
116
129
|
vscodePluginMcp
|
|
117
|
-
} from "../chunk-
|
|
130
|
+
} from "../chunk-DNJUSFBL.js";
|
|
118
131
|
import "../chunk-T7E75EKA.js";
|
|
119
|
-
import "../chunk-
|
|
132
|
+
import "../chunk-V4AQBAVG.js";
|
|
133
|
+
import "../chunk-B3UXMSMW.js";
|
|
120
134
|
import {
|
|
121
135
|
CURSOR_GATE_EVENTS,
|
|
122
136
|
HOOK_COMPATIBLE_PROFILES,
|
|
@@ -125,9 +139,7 @@ import {
|
|
|
125
139
|
SUPPORT_EMAIL,
|
|
126
140
|
isValidApiKey,
|
|
127
141
|
redactSecrets
|
|
128
|
-
} from "../chunk-
|
|
129
|
-
import "../chunk-EA3IELHP.js";
|
|
130
|
-
import "../chunk-HWJW3CPO.js";
|
|
142
|
+
} from "../chunk-YROGUPOZ.js";
|
|
131
143
|
|
|
132
144
|
// bin/pushary-clean.ts
|
|
133
145
|
import { existsSync as existsSync6, readFileSync as readFileSync4, copyFileSync, readdirSync as readdirSync3 } from "fs";
|
|
@@ -528,6 +540,48 @@ var guardedAliasRemoval = () => {
|
|
|
528
540
|
var writeJson = (path, data) => {
|
|
529
541
|
guardedWrite(path, JSON.stringify(data, null, 2) + "\n");
|
|
530
542
|
};
|
|
543
|
+
var writeFxText = (path, rendered, label) => {
|
|
544
|
+
if (rendered.kind === "refused") {
|
|
545
|
+
console.log(` ${skip} ${label} ${dim(`(${path} would grow past the size fx reads; left untouched)`)}`);
|
|
546
|
+
return;
|
|
547
|
+
}
|
|
548
|
+
guardedWrite(path, rendered.text);
|
|
549
|
+
console.log(` ${check} ${label} ${dim(did("removed"))}`);
|
|
550
|
+
};
|
|
551
|
+
var removeFxMcpServer = () => {
|
|
552
|
+
const path = fxMcpProfile();
|
|
553
|
+
const read = readFxFile(path, readFxProfile);
|
|
554
|
+
if (read.kind === "missing") {
|
|
555
|
+
console.log(` ${skip} fx MCP ${dim("(not found)")}`);
|
|
556
|
+
} else if (read.kind === "unreadable") {
|
|
557
|
+
console.log(` ${skip} fx MCP ${dim(`(${path} could not be read; left untouched)`)}`);
|
|
558
|
+
} else if (read.kind === "refused") {
|
|
559
|
+
console.log(` ${skip} fx MCP ${dim(`(${path} ${FX_PROFILE_REFUSALS[read.reason]}; left untouched)`)}`);
|
|
560
|
+
} else {
|
|
561
|
+
const { profile, removed } = withoutFxPusharyServer(read.profile);
|
|
562
|
+
if (removed) {
|
|
563
|
+
writeFxText(path, fxProfileText(profile), "fx MCP");
|
|
564
|
+
} else {
|
|
565
|
+
console.log(` ${skip} fx MCP ${dim("(no pushary entry)")}`);
|
|
566
|
+
}
|
|
567
|
+
}
|
|
568
|
+
};
|
|
569
|
+
var removeFxToolsRule = () => {
|
|
570
|
+
const path = fxSettings();
|
|
571
|
+
const read = readFxFile(path, readFxSettings);
|
|
572
|
+
if (read.kind === "refused") {
|
|
573
|
+
console.log(` ${skip} fx settings ${dim(`(${path} ${FX_SETTINGS_REFUSALS[read.reason]}; left untouched)`)}`);
|
|
574
|
+
return;
|
|
575
|
+
}
|
|
576
|
+
if (read.kind !== "settings") return;
|
|
577
|
+
const { settings, removed } = withoutPusharyToolsAllowed(read.settings);
|
|
578
|
+
if (removed) writeFxText(path, fxSettingsText(settings), "fx auto-allowed Pushary tools");
|
|
579
|
+
};
|
|
580
|
+
var removeFxInstructions = () => {
|
|
581
|
+
if (guardedInstructionBlockRemoval(fxAgentsMd())) {
|
|
582
|
+
console.log(` ${check} fx instructions ${dim(did("removed"))}`);
|
|
583
|
+
}
|
|
584
|
+
};
|
|
531
585
|
var removeCursorUserHook = (scope) => {
|
|
532
586
|
if (!existsSync6(CURSOR_USER_HOOKS)) return "absent";
|
|
533
587
|
let parsed2;
|
|
@@ -1000,6 +1054,9 @@ var main = async () => {
|
|
|
1000
1054
|
} else {
|
|
1001
1055
|
console.log(` ${skip} OpenCode MCP ${dim("(not found)")}`);
|
|
1002
1056
|
}
|
|
1057
|
+
removeFxMcpServer();
|
|
1058
|
+
removeFxToolsRule();
|
|
1059
|
+
removeFxInstructions();
|
|
1003
1060
|
const hermesPython = resolveHermesPython();
|
|
1004
1061
|
if (hermesPython) {
|
|
1005
1062
|
const configUpdated = dryRun ? (wouldNote("run ", "hermes plugin config restore"), true) : runHermesPythonScript(hermesPython, HERMES_CONFIG_SCRIPT, "clean", HERMES_CONFIG_RECEIPT);
|
|
@@ -1,24 +1,24 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import "../chunk-
|
|
2
|
+
import "../chunk-JXUAXO74.js";
|
|
3
3
|
import {
|
|
4
4
|
LiveTranscriptRelay,
|
|
5
5
|
liveSessionSleep,
|
|
6
6
|
postLiveSession,
|
|
7
7
|
postLiveSessionUntilAccepted,
|
|
8
8
|
startLiveSessionHeartbeat
|
|
9
|
-
} from "../chunk-
|
|
9
|
+
} from "../chunk-SQRWHALT.js";
|
|
10
10
|
import {
|
|
11
11
|
SESSION_IDLE_TIMEOUT_MS,
|
|
12
12
|
describeIdleWindow,
|
|
13
13
|
idleDeadlinePassed,
|
|
14
14
|
startProcessOwnership,
|
|
15
15
|
withSpawnProcessOwnership
|
|
16
|
-
} from "../chunk-
|
|
17
|
-
import "../chunk-
|
|
18
|
-
import "../chunk-
|
|
16
|
+
} from "../chunk-LEZFOTMI.js";
|
|
17
|
+
import "../chunk-BH2SKSSK.js";
|
|
18
|
+
import "../chunk-KXMZMZD3.js";
|
|
19
19
|
import {
|
|
20
20
|
transcriptsEnabled
|
|
21
|
-
} from "../chunk-
|
|
21
|
+
} from "../chunk-B76WVEDX.js";
|
|
22
22
|
import {
|
|
23
23
|
spawnClaude
|
|
24
24
|
} from "../chunk-XHKBHWLX.js";
|
|
@@ -27,39 +27,38 @@ import {
|
|
|
27
27
|
isDecisionStopped,
|
|
28
28
|
isWaitForAnswerResponse,
|
|
29
29
|
withdrawQuestion
|
|
30
|
-
} from "../chunk-
|
|
30
|
+
} from "../chunk-EGKXSQCY.js";
|
|
31
31
|
import {
|
|
32
32
|
writeDegraded
|
|
33
|
-
} from "../chunk-
|
|
33
|
+
} from "../chunk-V6QRSU2G.js";
|
|
34
34
|
import "../chunk-POFBE6ZY.js";
|
|
35
|
-
import "../chunk-
|
|
35
|
+
import "../chunk-UOAQ6QMP.js";
|
|
36
36
|
import {
|
|
37
37
|
callMcpTool
|
|
38
|
-
} from "../chunk-
|
|
39
|
-
import "../chunk-
|
|
38
|
+
} from "../chunk-JNXVOU6Y.js";
|
|
39
|
+
import "../chunk-KW2RRR7D.js";
|
|
40
40
|
import {
|
|
41
41
|
getMachineId
|
|
42
|
-
} from "../chunk-
|
|
42
|
+
} from "../chunk-XNCMT7YY.js";
|
|
43
43
|
import "../chunk-7QLSKOSU.js";
|
|
44
44
|
import "../chunk-KZERVKTD.js";
|
|
45
|
-
import "../chunk-
|
|
45
|
+
import "../chunk-ROQK7IN3.js";
|
|
46
46
|
import {
|
|
47
47
|
resolveBinary
|
|
48
|
-
} from "../chunk-
|
|
48
|
+
} from "../chunk-DNJUSFBL.js";
|
|
49
49
|
import "../chunk-T7E75EKA.js";
|
|
50
50
|
import {
|
|
51
51
|
getApiKey,
|
|
52
52
|
getBaseUrl
|
|
53
|
-
} from "../chunk-
|
|
53
|
+
} from "../chunk-V4AQBAVG.js";
|
|
54
|
+
import "../chunk-B3UXMSMW.js";
|
|
54
55
|
import {
|
|
55
56
|
elicitationContent,
|
|
56
57
|
parseAgentQuestion,
|
|
57
58
|
parseAgentQuestionAnswers,
|
|
58
59
|
planElicitationAsk,
|
|
59
60
|
readElicitationFields
|
|
60
|
-
} from "../chunk-
|
|
61
|
-
import "../chunk-EA3IELHP.js";
|
|
62
|
-
import "../chunk-HWJW3CPO.js";
|
|
61
|
+
} from "../chunk-YROGUPOZ.js";
|
|
63
62
|
|
|
64
63
|
// bin/pushary-codex-bridge.ts
|
|
65
64
|
import { existsSync } from "fs";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
takeHookHoldBudget
|
|
4
|
-
} from "../chunk-
|
|
4
|
+
} from "../chunk-J2355HR7.js";
|
|
5
5
|
import {
|
|
6
6
|
blockedActionFingerprint,
|
|
7
7
|
codexCallKey,
|
|
@@ -13,33 +13,33 @@ import {
|
|
|
13
13
|
recordCodexCallDecision,
|
|
14
14
|
reportMachineDenial,
|
|
15
15
|
userScope
|
|
16
|
-
} from "../chunk-
|
|
16
|
+
} from "../chunk-52NVBNJT.js";
|
|
17
17
|
import {
|
|
18
18
|
triggerAutoUpdate
|
|
19
|
-
} from "../chunk-
|
|
19
|
+
} from "../chunk-BWYJ6AAF.js";
|
|
20
20
|
import {
|
|
21
21
|
isGatingMoment,
|
|
22
22
|
recordKeylessMoment
|
|
23
|
-
} from "../chunk-
|
|
23
|
+
} from "../chunk-2C7CCWVX.js";
|
|
24
24
|
import {
|
|
25
25
|
readHookInput
|
|
26
|
-
} from "../chunk-
|
|
26
|
+
} from "../chunk-UC65FJJT.js";
|
|
27
27
|
import {
|
|
28
28
|
denyReasonFrom,
|
|
29
29
|
isDeferAnswer
|
|
30
30
|
} from "../chunk-YHG74UFF.js";
|
|
31
|
-
import "../chunk-
|
|
31
|
+
import "../chunk-EAQMWJPG.js";
|
|
32
32
|
import "../chunk-SGZJ5LYH.js";
|
|
33
|
-
import "../chunk-
|
|
34
|
-
import "../chunk-
|
|
35
|
-
import "../chunk-
|
|
36
|
-
import "../chunk-
|
|
37
|
-
import "../chunk-
|
|
38
|
-
import "../chunk-
|
|
39
|
-
import "../chunk-
|
|
40
|
-
import "../chunk-
|
|
41
|
-
import "../chunk-
|
|
42
|
-
import "../chunk-
|
|
33
|
+
import "../chunk-R2XCLT6I.js";
|
|
34
|
+
import "../chunk-CVALVGA7.js";
|
|
35
|
+
import "../chunk-5HLTWFJ6.js";
|
|
36
|
+
import "../chunk-PQ4F64M2.js";
|
|
37
|
+
import "../chunk-73T6MSU5.js";
|
|
38
|
+
import "../chunk-ZQ7IDOKY.js";
|
|
39
|
+
import "../chunk-VKVIAZQO.js";
|
|
40
|
+
import "../chunk-BH2SKSSK.js";
|
|
41
|
+
import "../chunk-KXMZMZD3.js";
|
|
42
|
+
import "../chunk-B76WVEDX.js";
|
|
43
43
|
import "../chunk-XHKBHWLX.js";
|
|
44
44
|
import {
|
|
45
45
|
CODEX_AGENT,
|
|
@@ -76,8 +76,8 @@ import {
|
|
|
76
76
|
toCodexWire,
|
|
77
77
|
toPolicyLookup,
|
|
78
78
|
toPolicyLookups
|
|
79
|
-
} from "../chunk-
|
|
80
|
-
import "../chunk-
|
|
79
|
+
} from "../chunk-IJ6ECPA6.js";
|
|
80
|
+
import "../chunk-DZURML2D.js";
|
|
81
81
|
import {
|
|
82
82
|
DECISION_STOP_REASON,
|
|
83
83
|
askUser,
|
|
@@ -89,32 +89,33 @@ import {
|
|
|
89
89
|
requestGate,
|
|
90
90
|
sendNotification,
|
|
91
91
|
waitForQuestion
|
|
92
|
-
} from "../chunk-
|
|
92
|
+
} from "../chunk-EGKXSQCY.js";
|
|
93
93
|
import {
|
|
94
94
|
exitAfterClientReports
|
|
95
|
-
} from "../chunk-
|
|
95
|
+
} from "../chunk-V6QRSU2G.js";
|
|
96
96
|
import "../chunk-POFBE6ZY.js";
|
|
97
97
|
import "../chunk-GMXKITVA.js";
|
|
98
|
-
import "../chunk-
|
|
99
|
-
import "../chunk-
|
|
100
|
-
import "../chunk-
|
|
98
|
+
import "../chunk-UOAQ6QMP.js";
|
|
99
|
+
import "../chunk-JNXVOU6Y.js";
|
|
100
|
+
import "../chunk-KW2RRR7D.js";
|
|
101
101
|
import {
|
|
102
102
|
getMachineId
|
|
103
|
-
} from "../chunk-
|
|
103
|
+
} from "../chunk-XNCMT7YY.js";
|
|
104
104
|
import "../chunk-7QLSKOSU.js";
|
|
105
105
|
import {
|
|
106
106
|
EXIT
|
|
107
107
|
} from "../chunk-KZERVKTD.js";
|
|
108
|
-
import "../chunk-
|
|
108
|
+
import "../chunk-ROQK7IN3.js";
|
|
109
109
|
import {
|
|
110
110
|
canonicalJson
|
|
111
|
-
} from "../chunk-
|
|
111
|
+
} from "../chunk-DNJUSFBL.js";
|
|
112
112
|
import {
|
|
113
113
|
writeFileAtomic
|
|
114
114
|
} from "../chunk-T7E75EKA.js";
|
|
115
115
|
import {
|
|
116
116
|
getApiKey
|
|
117
|
-
} from "../chunk-
|
|
117
|
+
} from "../chunk-V4AQBAVG.js";
|
|
118
|
+
import "../chunk-B3UXMSMW.js";
|
|
118
119
|
import {
|
|
119
120
|
CODEX_RESCUE_TOOL_NAME,
|
|
120
121
|
DECISION_LINE_MAX,
|
|
@@ -128,9 +129,7 @@ import {
|
|
|
128
129
|
hookWaitClamped,
|
|
129
130
|
hookWaitDeadline,
|
|
130
131
|
resolveGate
|
|
131
|
-
} from "../chunk-
|
|
132
|
-
import "../chunk-EA3IELHP.js";
|
|
133
|
-
import "../chunk-HWJW3CPO.js";
|
|
132
|
+
} from "../chunk-YROGUPOZ.js";
|
|
134
133
|
|
|
135
134
|
// bin/pushary-codex-hook.ts
|
|
136
135
|
import { basename } from "path";
|
|
@@ -751,7 +750,7 @@ var decidePreToolUse = async (input) => {
|
|
|
751
750
|
};
|
|
752
751
|
var repairCodexHoldsQuietly = async () => {
|
|
753
752
|
try {
|
|
754
|
-
const { repairCodexHolds } = await import("../reapply-
|
|
753
|
+
const { repairCodexHolds } = await import("../reapply-6PH3FMPX.js");
|
|
755
754
|
repairCodexHolds();
|
|
756
755
|
} catch {
|
|
757
756
|
return;
|