@pushary/agent-hooks 1.6.3 → 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 +13 -0
- package/README.md +3 -2
- package/dist/bin/pushary-bell-hook.js +24 -22
- package/dist/bin/pushary-bell.js +11 -12
- package/dist/bin/pushary-claude.js +29 -28
- package/dist/bin/pushary-clean.js +99 -40
- package/dist/bin/pushary-codex-bridge.js +25 -25
- package/dist/bin/pushary-codex-hook.js +39 -34
- package/dist/bin/pushary-codex.js +13 -12
- package/dist/bin/pushary-connect.js +13 -12
- package/dist/bin/pushary-cowork.js +5 -6
- package/dist/bin/pushary-daemon.js +31 -32
- package/dist/bin/pushary-disconnect.js +22 -21
- package/dist/bin/pushary-doctor.js +98 -61
- package/dist/bin/pushary-elicitation-hook.js +26 -25
- package/dist/bin/pushary-gemini-bridge.js +12 -13
- package/dist/bin/pushary-gemini-hook.js +35 -30
- package/dist/bin/pushary-hook.js +38 -33
- package/dist/bin/pushary-login.js +13 -15
- package/dist/bin/pushary-logout.js +12 -13
- package/dist/bin/pushary-mcp.d.ts +1 -0
- package/dist/bin/pushary-mcp.js +56 -0
- package/dist/bin/pushary-mode.js +10 -8
- package/dist/bin/pushary-notification-hook.js +28 -27
- package/dist/bin/pushary-opencode-hook.js +34 -29
- package/dist/bin/pushary-permission-denied-hook.js +32 -31
- package/dist/bin/pushary-permission-hook.js +31 -30
- package/dist/bin/pushary-post-hook.js +28 -27
- package/dist/bin/pushary-prompt-hook.js +28 -27
- package/dist/bin/pushary-session-end-hook.js +28 -27
- package/dist/bin/pushary-session-start-hook.js +32 -31
- package/dist/bin/pushary-setup.js +222 -110
- package/dist/bin/pushary-stats.js +5 -6
- package/dist/bin/pushary-status.js +15 -16
- package/dist/bin/pushary-stop-hook.js +28 -27
- package/dist/bin/pushary-stopfailure-hook.js +28 -27
- 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 +28 -28
- package/dist/bin/pushary-wait.js +10 -8
- package/dist/bin/pushary.js +9 -5
- package/dist/{chunk-4KSTLHWY.js → chunk-2C7CCWVX.js} +1 -1
- package/dist/{chunk-P4BNYJ5Q.js → chunk-2PS6QWDW.js} +2 -2
- package/dist/{chunk-ILGL4L3J.js → chunk-4F46VIEE.js} +8 -8
- package/dist/{chunk-UAV5MNKY.js → chunk-52NVBNJT.js} +3 -3
- package/dist/{chunk-GQPCPEG2.js → chunk-5HLTWFJ6.js} +1 -1
- package/dist/{chunk-EJ7ADMNM.js → chunk-6ADZQFVW.js} +1 -1
- package/dist/{chunk-QKOVVL7I.js → chunk-73T6MSU5.js} +7 -7
- package/dist/{chunk-YOCXPNQ5.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-STOMNX4S.js → chunk-B3YQANFN.js} +1 -1
- package/dist/{chunk-JBU7XKY2.js → chunk-B76WVEDX.js} +1 -1
- package/dist/{chunk-WA7SQX6S.js → chunk-BBKNJJVX.js} +6 -6
- package/dist/{chunk-KNIIFNNQ.js → chunk-BH2SKSSK.js} +1 -1
- package/dist/{chunk-CTOK3AYA.js → chunk-BWYJ6AAF.js} +6 -7
- package/dist/{chunk-HCVAMXHT.js → chunk-CVALVGA7.js} +1 -1
- package/dist/{chunk-DX5FOQSO.js → chunk-D6BULEJW.js} +2 -2
- package/dist/{chunk-RJUHSFYE.js → chunk-DANOZVZK.js} +1 -1
- package/dist/{chunk-3BJQYXTL.js → chunk-DNJUSFBL.js} +13 -5
- package/dist/{chunk-57YDFAPP.js → chunk-DVQDPI3T.js} +8 -8
- package/dist/{chunk-BEHGVU4W.js → chunk-DZURML2D.js} +1 -1
- package/dist/{chunk-LDS4ERW4.js → chunk-EAQMWJPG.js} +10 -10
- package/dist/{chunk-LVHGSD5E.js → chunk-EGKXSQCY.js} +13 -7
- package/dist/{chunk-HHYVBHHC.js → chunk-HDRNWNVP.js} +6 -6
- package/dist/{chunk-JBXUKGZS.js → chunk-IJ6ECPA6.js} +15 -9
- package/dist/{chunk-NMRH3VX4.js → chunk-J2355HR7.js} +1 -1
- package/dist/{chunk-HETOKNIL.js → chunk-JNXVOU6Y.js} +10 -6
- package/dist/{chunk-COGHCL6K.js → chunk-JXUAXO74.js} +2 -2
- package/dist/chunk-KW2RRR7D.js +124 -0
- package/dist/{chunk-66H2QQAK.js → chunk-KXMZMZD3.js} +1 -1
- package/dist/{chunk-H3FEVIQD.js → chunk-KYQXUGH7.js} +3 -3
- package/dist/{chunk-P35IUFFR.js → chunk-L4H2Q2S4.js} +276 -19
- package/dist/{chunk-NKR4YDRP.js → chunk-LEZFOTMI.js} +1 -1
- package/dist/{chunk-WD6W7QDI.js → chunk-O2LEPIU6.js} +1 -1
- package/dist/chunk-POFBE6ZY.js +12 -0
- package/dist/{chunk-SND3C2AV.js → chunk-PQ4F64M2.js} +3 -3
- package/dist/{chunk-3UOC3GRO.js → chunk-PUDBG3GM.js} +1 -1
- package/dist/{chunk-YQMFGWBD.js → chunk-QXAK5RFU.js} +1 -1
- package/dist/{chunk-REYWOCQJ.js → chunk-R2XCLT6I.js} +4 -4
- package/dist/{chunk-NPGOQQCV.js → chunk-ROQK7IN3.js} +2 -2
- package/dist/{chunk-GU3EJCVV.js → chunk-S3UD4V6W.js} +39 -0
- package/dist/{chunk-ICGAIM2R.js → chunk-SQRWHALT.js} +2 -2
- package/dist/{chunk-JX67DVMY.js → chunk-UC65FJJT.js} +5 -6
- package/dist/{chunk-CWIARY6F.js → chunk-UOAQ6QMP.js} +2 -2
- package/dist/{chunk-OSJEMXSR.js → chunk-V4AQBAVG.js} +1 -1
- package/dist/chunk-V6QRSU2G.js +142 -0
- package/dist/{chunk-VDMX5EMU.js → chunk-VKVIAZQO.js} +1 -1
- package/dist/{chunk-BG6OCZ4N.js → chunk-WUNZAE7I.js} +5 -5
- package/dist/{chunk-TZ4KUNZG.js → chunk-X6KDKOV5.js} +3 -3
- package/dist/{chunk-LM2IOEDK.js → chunk-XNCMT7YY.js} +3 -1
- package/dist/{chunk-GHOB245Q.js → chunk-YROGUPOZ.js} +132 -30
- package/dist/chunk-YYINL576.js +120 -0
- package/dist/{chunk-57DDP4TB.js → chunk-ZQ7IDOKY.js} +3 -3
- package/dist/{reapply-IB7YE7BU.js → reapply-6PH3FMPX.js} +9 -10
- package/dist/src/index.js +20 -19
- package/package.json +2 -1
- package/dist/chunk-HWJW3CPO.js +0 -65
- package/dist/chunk-SAF6HGAA.js +0 -57
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,18 @@
|
|
|
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
|
+
|
|
11
|
+
## 1.6.4
|
|
12
|
+
|
|
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.
|
|
14
|
+
- When setup, a hook or the bridge cannot reach Pushary, cannot claim a blocked action, or stands aside for an agent it does not recognise, it now tells Pushary with a short code such as `mode_fetch_failed`. Each code is sent at most once per clock minute per machine, not per hook, even when several hooks fail at the same moment, so an outage does not add a request to every tool call. `~/.pushary/client-reports/` holds one small claim file per code per minute. A report gives up after one second. Set `PUSHARY_DISABLE_CLIENT_REPORTS=1` to send none.
|
|
15
|
+
|
|
3
16
|
## 1.6.3
|
|
4
17
|
|
|
5
18
|
- When setup cannot configure one of the agents you picked, the final summary now names that agent, says why, and prints the one command that retries only it, such as `npx @pushary/agent-hooks@latest setup --agents cursor`. Before, the reason was printed once in the middle of the run and the summary only said "Setup finished with 1 problem".
|
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,36 +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-
|
|
23
|
-
import "../chunk-
|
|
21
|
+
import "../chunk-DZURML2D.js";
|
|
22
|
+
import "../chunk-V6QRSU2G.js";
|
|
23
|
+
import "../chunk-POFBE6ZY.js";
|
|
24
24
|
import "../chunk-GMXKITVA.js";
|
|
25
|
-
import "../chunk-
|
|
25
|
+
import "../chunk-UOAQ6QMP.js";
|
|
26
|
+
import "../chunk-KW2RRR7D.js";
|
|
27
|
+
import "../chunk-XNCMT7YY.js";
|
|
26
28
|
import "../chunk-7QLSKOSU.js";
|
|
27
29
|
import "../chunk-KZERVKTD.js";
|
|
28
|
-
import "../chunk-
|
|
30
|
+
import "../chunk-ROQK7IN3.js";
|
|
31
|
+
import "../chunk-DNJUSFBL.js";
|
|
29
32
|
import "../chunk-T7E75EKA.js";
|
|
30
|
-
import "../chunk-
|
|
31
|
-
import "../chunk-
|
|
32
|
-
import "../chunk-
|
|
33
|
-
import "../chunk-HWJW3CPO.js";
|
|
33
|
+
import "../chunk-V4AQBAVG.js";
|
|
34
|
+
import "../chunk-B3UXMSMW.js";
|
|
35
|
+
import "../chunk-YROGUPOZ.js";
|
|
34
36
|
|
|
35
37
|
// bin/pushary-bell-hook.ts
|
|
36
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-
|
|
14
|
-
import {
|
|
15
|
-
claudeSettings
|
|
16
|
-
} from "../chunk-3BJQYXTL.js";
|
|
13
|
+
} from "../chunk-VKVIAZQO.js";
|
|
17
14
|
import {
|
|
18
15
|
createIo
|
|
19
16
|
} from "../chunk-5RUIFDTP.js";
|
|
20
17
|
import {
|
|
21
18
|
exitOnHelpFlag
|
|
22
|
-
} from "../chunk-
|
|
19
|
+
} from "../chunk-2PS6QWDW.js";
|
|
23
20
|
import {
|
|
24
21
|
parseFlags
|
|
25
22
|
} from "../chunk-GMXKITVA.js";
|
|
26
|
-
import "../chunk-
|
|
23
|
+
import "../chunk-UOAQ6QMP.js";
|
|
27
24
|
import "../chunk-7QLSKOSU.js";
|
|
28
25
|
import {
|
|
29
26
|
EXIT
|
|
30
27
|
} from "../chunk-KZERVKTD.js";
|
|
31
|
-
import "../chunk-
|
|
28
|
+
import "../chunk-ROQK7IN3.js";
|
|
29
|
+
import {
|
|
30
|
+
claudeSettings
|
|
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,32 +67,33 @@ import {
|
|
|
67
67
|
nextLongPollMs,
|
|
68
68
|
waitForAnswer,
|
|
69
69
|
withdrawQuestion
|
|
70
|
-
} from "../chunk-
|
|
70
|
+
} from "../chunk-EGKXSQCY.js";
|
|
71
|
+
import "../chunk-V6QRSU2G.js";
|
|
72
|
+
import "../chunk-POFBE6ZY.js";
|
|
73
|
+
import "../chunk-GMXKITVA.js";
|
|
74
|
+
import "../chunk-UOAQ6QMP.js";
|
|
75
|
+
import "../chunk-JNXVOU6Y.js";
|
|
76
|
+
import "../chunk-KW2RRR7D.js";
|
|
71
77
|
import {
|
|
72
78
|
getMachineId
|
|
73
|
-
} from "../chunk-
|
|
74
|
-
import "../chunk-3BJQYXTL.js";
|
|
75
|
-
import "../chunk-GMXKITVA.js";
|
|
76
|
-
import "../chunk-CWIARY6F.js";
|
|
77
|
-
import "../chunk-HETOKNIL.js";
|
|
78
|
-
import "../chunk-SAF6HGAA.js";
|
|
79
|
+
} from "../chunk-XNCMT7YY.js";
|
|
79
80
|
import "../chunk-7QLSKOSU.js";
|
|
80
81
|
import "../chunk-KZERVKTD.js";
|
|
81
|
-
import "../chunk-
|
|
82
|
+
import "../chunk-ROQK7IN3.js";
|
|
83
|
+
import "../chunk-DNJUSFBL.js";
|
|
82
84
|
import "../chunk-T7E75EKA.js";
|
|
83
85
|
import {
|
|
84
86
|
getApiKey,
|
|
85
87
|
getBaseUrl
|
|
86
|
-
} from "../chunk-
|
|
88
|
+
} from "../chunk-V4AQBAVG.js";
|
|
89
|
+
import {
|
|
90
|
+
NPX_LATEST_COMMAND
|
|
91
|
+
} from "../chunk-B3UXMSMW.js";
|
|
87
92
|
import {
|
|
88
93
|
KILL_REASON,
|
|
89
94
|
redactSecrets,
|
|
90
95
|
resolveGate
|
|
91
|
-
} from "../chunk-
|
|
92
|
-
import {
|
|
93
|
-
NPX_LATEST_COMMAND
|
|
94
|
-
} from "../chunk-EA3IELHP.js";
|
|
95
|
-
import "../chunk-HWJW3CPO.js";
|
|
96
|
+
} from "../chunk-YROGUPOZ.js";
|
|
96
97
|
|
|
97
98
|
// src/wrapper/localPassthrough.ts
|
|
98
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,40 +42,60 @@ 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";
|
|
79
|
+
import "../chunk-POFBE6ZY.js";
|
|
80
|
+
import {
|
|
81
|
+
exitOnHelpFlag
|
|
82
|
+
} from "../chunk-2PS6QWDW.js";
|
|
83
|
+
import {
|
|
84
|
+
rejectUnknownFlags
|
|
85
|
+
} from "../chunk-GMXKITVA.js";
|
|
86
|
+
import {
|
|
87
|
+
CANDIDATE_RCS,
|
|
88
|
+
isDisabledExport,
|
|
89
|
+
removeClaudeAlias
|
|
90
|
+
} from "../chunk-UOAQ6QMP.js";
|
|
91
|
+
import "../chunk-JNXVOU6Y.js";
|
|
92
|
+
import "../chunk-KW2RRR7D.js";
|
|
93
|
+
import "../chunk-XNCMT7YY.js";
|
|
94
|
+
import "../chunk-7QLSKOSU.js";
|
|
95
|
+
import {
|
|
96
|
+
EXIT
|
|
97
|
+
} from "../chunk-KZERVKTD.js";
|
|
98
|
+
import "../chunk-ROQK7IN3.js";
|
|
69
99
|
import {
|
|
70
100
|
bridgeAgentKey,
|
|
71
101
|
claudeJson,
|
|
@@ -82,6 +112,9 @@ import {
|
|
|
82
112
|
cursorUserHooks,
|
|
83
113
|
cursorUserMcp,
|
|
84
114
|
execNpm,
|
|
115
|
+
fxAgentsMd,
|
|
116
|
+
fxMcpProfile,
|
|
117
|
+
fxSettings,
|
|
85
118
|
geminiMd,
|
|
86
119
|
geminiSettings,
|
|
87
120
|
hermesConfigReceipt,
|
|
@@ -94,27 +127,10 @@ import {
|
|
|
94
127
|
restoreCodexHookTrust,
|
|
95
128
|
vscodePluginDir,
|
|
96
129
|
vscodePluginMcp
|
|
97
|
-
} from "../chunk-
|
|
98
|
-
import {
|
|
99
|
-
exitOnHelpFlag
|
|
100
|
-
} from "../chunk-P4BNYJ5Q.js";
|
|
101
|
-
import {
|
|
102
|
-
rejectUnknownFlags
|
|
103
|
-
} from "../chunk-GMXKITVA.js";
|
|
104
|
-
import {
|
|
105
|
-
CANDIDATE_RCS,
|
|
106
|
-
isDisabledExport,
|
|
107
|
-
removeClaudeAlias
|
|
108
|
-
} from "../chunk-CWIARY6F.js";
|
|
109
|
-
import "../chunk-HETOKNIL.js";
|
|
110
|
-
import "../chunk-SAF6HGAA.js";
|
|
111
|
-
import "../chunk-7QLSKOSU.js";
|
|
112
|
-
import {
|
|
113
|
-
EXIT
|
|
114
|
-
} from "../chunk-KZERVKTD.js";
|
|
115
|
-
import "../chunk-NPGOQQCV.js";
|
|
130
|
+
} from "../chunk-DNJUSFBL.js";
|
|
116
131
|
import "../chunk-T7E75EKA.js";
|
|
117
|
-
import "../chunk-
|
|
132
|
+
import "../chunk-V4AQBAVG.js";
|
|
133
|
+
import "../chunk-B3UXMSMW.js";
|
|
118
134
|
import {
|
|
119
135
|
CURSOR_GATE_EVENTS,
|
|
120
136
|
HOOK_COMPATIBLE_PROFILES,
|
|
@@ -123,9 +139,7 @@ import {
|
|
|
123
139
|
SUPPORT_EMAIL,
|
|
124
140
|
isValidApiKey,
|
|
125
141
|
redactSecrets
|
|
126
|
-
} from "../chunk-
|
|
127
|
-
import "../chunk-EA3IELHP.js";
|
|
128
|
-
import "../chunk-HWJW3CPO.js";
|
|
142
|
+
} from "../chunk-YROGUPOZ.js";
|
|
129
143
|
|
|
130
144
|
// bin/pushary-clean.ts
|
|
131
145
|
import { existsSync as existsSync6, readFileSync as readFileSync4, copyFileSync, readdirSync as readdirSync3 } from "fs";
|
|
@@ -526,6 +540,48 @@ var guardedAliasRemoval = () => {
|
|
|
526
540
|
var writeJson = (path, data) => {
|
|
527
541
|
guardedWrite(path, JSON.stringify(data, null, 2) + "\n");
|
|
528
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
|
+
};
|
|
529
585
|
var removeCursorUserHook = (scope) => {
|
|
530
586
|
if (!existsSync6(CURSOR_USER_HOOKS)) return "absent";
|
|
531
587
|
let parsed2;
|
|
@@ -998,6 +1054,9 @@ var main = async () => {
|
|
|
998
1054
|
} else {
|
|
999
1055
|
console.log(` ${skip} OpenCode MCP ${dim("(not found)")}`);
|
|
1000
1056
|
}
|
|
1057
|
+
removeFxMcpServer();
|
|
1058
|
+
removeFxToolsRule();
|
|
1059
|
+
removeFxInstructions();
|
|
1001
1060
|
const hermesPython = resolveHermesPython();
|
|
1002
1061
|
if (hermesPython) {
|
|
1003
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,36 +27,38 @@ import {
|
|
|
27
27
|
isDecisionStopped,
|
|
28
28
|
isWaitForAnswerResponse,
|
|
29
29
|
withdrawQuestion
|
|
30
|
-
} from "../chunk-
|
|
30
|
+
} from "../chunk-EGKXSQCY.js";
|
|
31
31
|
import {
|
|
32
|
-
|
|
33
|
-
} from "../chunk-
|
|
34
|
-
import
|
|
35
|
-
|
|
36
|
-
} from "../chunk-3BJQYXTL.js";
|
|
37
|
-
import "../chunk-CWIARY6F.js";
|
|
32
|
+
writeDegraded
|
|
33
|
+
} from "../chunk-V6QRSU2G.js";
|
|
34
|
+
import "../chunk-POFBE6ZY.js";
|
|
35
|
+
import "../chunk-UOAQ6QMP.js";
|
|
38
36
|
import {
|
|
39
37
|
callMcpTool
|
|
40
|
-
} from "../chunk-
|
|
41
|
-
import "../chunk-
|
|
38
|
+
} from "../chunk-JNXVOU6Y.js";
|
|
39
|
+
import "../chunk-KW2RRR7D.js";
|
|
40
|
+
import {
|
|
41
|
+
getMachineId
|
|
42
|
+
} from "../chunk-XNCMT7YY.js";
|
|
42
43
|
import "../chunk-7QLSKOSU.js";
|
|
43
44
|
import "../chunk-KZERVKTD.js";
|
|
44
|
-
import "../chunk-
|
|
45
|
+
import "../chunk-ROQK7IN3.js";
|
|
46
|
+
import {
|
|
47
|
+
resolveBinary
|
|
48
|
+
} from "../chunk-DNJUSFBL.js";
|
|
45
49
|
import "../chunk-T7E75EKA.js";
|
|
46
50
|
import {
|
|
47
51
|
getApiKey,
|
|
48
52
|
getBaseUrl
|
|
49
|
-
} from "../chunk-
|
|
53
|
+
} from "../chunk-V4AQBAVG.js";
|
|
54
|
+
import "../chunk-B3UXMSMW.js";
|
|
50
55
|
import {
|
|
51
|
-
degradedLine,
|
|
52
56
|
elicitationContent,
|
|
53
57
|
parseAgentQuestion,
|
|
54
58
|
parseAgentQuestionAnswers,
|
|
55
59
|
planElicitationAsk,
|
|
56
60
|
readElicitationFields
|
|
57
|
-
} from "../chunk-
|
|
58
|
-
import "../chunk-EA3IELHP.js";
|
|
59
|
-
import "../chunk-HWJW3CPO.js";
|
|
61
|
+
} from "../chunk-YROGUPOZ.js";
|
|
60
62
|
|
|
61
63
|
// bin/pushary-codex-bridge.ts
|
|
62
64
|
import { existsSync } from "fs";
|
|
@@ -358,8 +360,7 @@ var answerCodexQuestions = async (options, params, signal, toolName = "request_u
|
|
|
358
360
|
var answerCodexElicitation = async (options, params, threadId, signal) => {
|
|
359
361
|
const plan = planCodexElicitation(params, threadId);
|
|
360
362
|
if (!plan) {
|
|
361
|
-
|
|
362
|
-
`);
|
|
363
|
+
writeDegraded("questions", { reason: "unsupported_codex_elicitation", fallback: "no form answer submitted", event: "mcpServer/elicitation/request" });
|
|
363
364
|
return { action: "cancel", content: null };
|
|
364
365
|
}
|
|
365
366
|
try {
|
|
@@ -371,8 +372,7 @@ var answerCodexElicitation = async (options, params, threadId, signal) => {
|
|
|
371
372
|
if (!content) throw new Error("Invalid elicitation answer");
|
|
372
373
|
return { action: "accept", content };
|
|
373
374
|
} catch {
|
|
374
|
-
|
|
375
|
-
`);
|
|
375
|
+
writeDegraded("questions", { reason: "codex_elicitation_unanswered", fallback: "no form answer submitted", event: "mcpServer/elicitation/request" });
|
|
376
376
|
return { action: "cancel", content: null };
|
|
377
377
|
}
|
|
378
378
|
};
|