pushary 1.9.42 → 1.9.44
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 +9 -0
- package/README.md +1 -0
- package/data/SKILL.md +7 -1
- package/data/cowork/SKILL.md +3 -1
- package/data/cursor-plugin/.cursor-plugin/plugin.json +1 -1
- package/data/cursor-plugin/skills/pushary/SKILL.md +6 -0
- package/data/vscode-plugin/skills/pushary/SKILL.md +6 -0
- package/dist/bin/pushary-bell-hook.js +27 -26
- package/dist/bin/pushary-bell.js +11 -11
- package/dist/bin/pushary-claude.js +30 -28
- package/dist/bin/pushary-clean.js +39 -38
- package/dist/bin/pushary-codex-bridge.js +38 -28
- package/dist/bin/pushary-codex-hook.js +35 -33
- package/dist/bin/pushary-codex-session.d.ts +1 -0
- package/dist/bin/pushary-codex-session.js +253 -0
- package/dist/bin/pushary-codex.js +13 -12
- package/dist/bin/pushary-connect.js +28 -27
- package/dist/bin/pushary-cowork.js +6 -6
- package/dist/bin/pushary-daemon.js +48 -47
- package/dist/bin/pushary-disconnect.js +27 -26
- package/dist/bin/pushary-doctor.js +85 -82
- package/dist/bin/pushary-elicitation-hook.js +27 -26
- package/dist/bin/pushary-gemini-bridge.js +22 -22
- package/dist/bin/pushary-gemini-hook.js +32 -30
- package/dist/bin/pushary-hook.js +33 -32
- package/dist/bin/pushary-login.js +16 -16
- package/dist/bin/pushary-logout.js +28 -27
- package/dist/bin/pushary-mcp.js +9 -9
- package/dist/bin/pushary-mode.js +14 -14
- package/dist/bin/pushary-notification-hook.js +26 -25
- package/dist/bin/pushary-opencode-hook.js +31 -29
- package/dist/bin/pushary-permission-denied-hook.js +31 -30
- package/dist/bin/pushary-permission-hook.js +30 -29
- package/dist/bin/pushary-post-hook.js +26 -25
- package/dist/bin/pushary-prompt-hook.js +26 -25
- package/dist/bin/pushary-session-end-hook.js +26 -25
- package/dist/bin/pushary-session-start-hook.js +31 -30
- package/dist/bin/pushary-setup.js +165 -112
- package/dist/bin/pushary-stats.js +5 -5
- package/dist/bin/pushary-status.js +35 -34
- package/dist/bin/pushary-stop-hook.js +26 -25
- package/dist/bin/pushary-stopfailure-hook.js +26 -25
- package/dist/bin/pushary-suggestions.js +14 -14
- package/dist/bin/pushary-transcript-register.js +18 -18
- package/dist/bin/pushary-transcripts.js +7 -7
- package/dist/bin/pushary-upgrade.js +41 -40
- package/dist/bin/pushary-wait.js +14 -14
- package/dist/bin/pushary.js +7 -6
- package/dist/{chunk-ZX3PFROQ.js → chunk-2NVXFWQY.js} +1 -1
- package/dist/{chunk-7L6YSHZO.js → chunk-3IRC3XFG.js} +2 -2
- package/dist/{chunk-IXNVIWNN.js → chunk-42CVAOC5.js} +2 -2
- package/dist/{chunk-EBZK2SJ2.js → chunk-4JHEZ2PV.js} +12 -5
- package/dist/{chunk-JBK47Y2M.js → chunk-4WBAHVBK.js} +11 -11
- package/dist/{chunk-AW4TDBUJ.js → chunk-53UZN7JW.js} +3 -3
- package/dist/{chunk-I7EZMNKI.js → chunk-5ZSBQHCM.js} +12 -173
- package/dist/{chunk-KYFWYPHN.js → chunk-6EV3B5CD.js} +1 -1
- package/dist/{chunk-X7TNLYNZ.js → chunk-75M7NFFC.js} +1 -1
- package/dist/{chunk-AUDM6HU6.js → chunk-7UM4NCUI.js} +2 -2
- package/dist/{chunk-5INZFKHL.js → chunk-ALY7ZBNB.js} +1 -1
- package/dist/{chunk-CGRVIUKE.js → chunk-BKK3JCTD.js} +80 -164
- package/dist/{chunk-K2SSNAUW.js → chunk-CAJCCQ7N.js} +1 -1
- package/dist/{chunk-B7PZBWBU.js → chunk-CESLE4UN.js} +10 -10
- package/dist/{chunk-MI67QQEQ.js → chunk-CEZTYTBN.js} +13 -11
- package/dist/{chunk-6PABNQVH.js → chunk-DD6IBKEJ.js} +4 -4
- package/dist/{chunk-Z4RM54LU.js → chunk-E76QCZIA.js} +2 -2
- package/dist/{chunk-RBUCXUT7.js → chunk-FI2F5KZJ.js} +4 -4
- package/dist/{chunk-IVUP2EE4.js → chunk-FKDZU6YX.js} +4 -4
- package/dist/{chunk-EA5NWDK7.js → chunk-FYNMFSIZ.js} +29 -0
- package/dist/{chunk-M2YE3OEC.js → chunk-GBCR2FH2.js} +3 -3
- package/dist/chunk-GOEIW2VH.js +266 -0
- package/dist/{chunk-JQX2L3ES.js → chunk-GRAPJKDK.js} +1 -1
- package/dist/{chunk-DPISXMLL.js → chunk-HV4TEKNP.js} +4 -4
- package/dist/{chunk-FMYXPJYS.js → chunk-IWHDNMM3.js} +5 -5
- package/dist/{chunk-ORLTWJ2O.js → chunk-JNU3LV47.js} +355 -138
- package/dist/{chunk-ZJY4KON3.js → chunk-KILK6SWZ.js} +7 -7
- package/dist/{chunk-J7OBJZ5S.js → chunk-KYLY6UMN.js} +1 -1
- package/dist/{chunk-T3Q4B6WV.js → chunk-L2ZM7LXN.js} +2 -2
- package/dist/{chunk-PJ3C6IID.js → chunk-LEHBWBCG.js} +4 -4
- package/dist/{chunk-ODPULZZG.js → chunk-M2L7625S.js} +2 -2
- package/dist/{chunk-BDSIE2MT.js → chunk-MIBCRQWK.js} +2 -2
- package/dist/{chunk-MAB6CGL5.js → chunk-MRQJCIFO.js} +1 -1
- package/dist/{chunk-F43LAKAK.js → chunk-OR6KJOHE.js} +2 -2
- package/dist/{chunk-Y3HTWB5S.js → chunk-OSMNLNPF.js} +1 -1
- package/dist/{chunk-CHD6IUNM.js → chunk-OWQOMGBF.js} +1 -1
- package/dist/{chunk-RTM5GVRZ.js → chunk-OZ7MLVDM.js} +15 -15
- package/dist/{chunk-4WM7IVVQ.js → chunk-PGHN5D4N.js} +2 -2
- package/dist/{chunk-OLLWYLQX.js → chunk-PQAFH4DF.js} +3 -11
- package/dist/{chunk-E47JEBUR.js → chunk-RGBTKOCC.js} +45 -8
- package/dist/{chunk-4UCTKLHY.js → chunk-S2ALW446.js} +3 -3
- package/dist/{chunk-3U3FU6ZX.js → chunk-SI2NC6UU.js} +3 -3
- package/dist/chunk-SVCT5D7K.js +196 -0
- package/dist/{chunk-ZVMFRUBD.js → chunk-SWDPCDLT.js} +4 -4
- package/dist/{chunk-DIJ532S7.js → chunk-T3KMJI4W.js} +2 -1
- package/dist/{chunk-NRSTNZYJ.js → chunk-T4CKP47U.js} +5 -5
- package/dist/{chunk-M7VKFAAK.js → chunk-TJZUQRMH.js} +3 -3
- package/dist/{chunk-ZV56INA6.js → chunk-TKTS3SIM.js} +3 -3
- package/dist/{chunk-RETRVO47.js → chunk-TWATOPHK.js} +2 -2
- package/dist/{chunk-WZNRDDC4.js → chunk-UC4PNLMK.js} +6 -6
- package/dist/{chunk-ASXBYX2N.js → chunk-UJXLVH66.js} +1 -1
- package/dist/{chunk-Q3QRD67J.js → chunk-UY5E2UUW.js} +5 -5
- package/dist/{chunk-FP2ZJK3T.js → chunk-UZVF6MP2.js} +5 -5
- package/dist/{chunk-STETTN4K.js → chunk-W2TA4EVZ.js} +5 -5
- package/dist/{chunk-QRNNIDGY.js → chunk-WBD7HZEZ.js} +1 -1
- package/dist/{chunk-QPT4PTUG.js → chunk-WMO2XVG4.js} +1 -1
- package/dist/{chunk-BZIXDIIT.js → chunk-XPQDBTW4.js} +1 -1
- package/dist/{global-upgrade-YEAGJG4G.js → global-upgrade-QSSDYZCZ.js} +6 -6
- package/dist/{paths-HQAICWAF.js → paths-55DDFLY4.js} +2 -2
- package/dist/{reapply-XBEB2B5A.js → reapply-MEU66ALO.js} +23 -22
- package/dist/src/index.js +20 -19
- package/dist/{upgrade-lock-GIO5QZ7E.js → upgrade-lock-YLXAU4AD.js} +3 -3
- package/package.json +5 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,14 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 1.9.44
|
|
4
|
+
|
|
5
|
+
- Start a managed Codex terminal session with `pushary codex` and route supported command, file-change, and MCP permissions through Pushary. The native terminal remains available for unsupported requests.
|
|
6
|
+
- Preserve repository-specific deny and routing rules, cancel stale questions across delayed or lost responses, and stop owned session processes on shutdown. Existing Codex desktop chats are not attached by this feature.
|
|
7
|
+
|
|
8
|
+
## 1.9.43
|
|
9
|
+
|
|
10
|
+
- Agent and fx setup guidance uses Pushary’s durable personal reminders, which persist after the agent exits and deliver privately to their creator.
|
|
11
|
+
|
|
3
12
|
## 1.9.42
|
|
4
13
|
|
|
5
14
|
- Complete Mac cleanup removes the Partner enrollment and device-key slots introduced by the native Partner flow, alongside existing session state.
|
package/README.md
CHANGED
|
@@ -205,6 +205,7 @@ failing closed would let one malformed download silence every hook on the machin
|
|
|
205
205
|
|
|
206
206
|
```
|
|
207
207
|
cowork Set up Claude Desktop and Cowork with the Pushary connector
|
|
208
|
+
codex Start a managed Codex terminal session with Pushary native approvals
|
|
208
209
|
setup Configure Claude Code, Codex, Gemini CLI, Hermes, Cursor, VS Code, OpenCode, or fx with Pushary
|
|
209
210
|
claude Run Claude Code through Pushary, reachable from your phone even when idle
|
|
210
211
|
daemon Keep this machine reachable so your phone can START a new session
|
package/data/SKILL.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: pushary
|
|
3
|
-
version: 0.
|
|
3
|
+
version: 0.12.0
|
|
4
4
|
description: Push notifications and human-in-the-loop for AI agents. Use this whenever a running agent needs a human and nobody is at the terminal, such as before an irreversible or destructive action, before spending money, deploying, force-pushing or deleting, when blocked on a decision outside your authority, when running unattended and you hit a genuine ambiguity, when another skill's workflow says to confirm with the user, and when a long task finishes or fails with nobody watching. Also use it when the user says things like keep going and ping me on my phone if you need anything, notify me when my agent needs me, approve from my phone, ask me questions while I am away from the terminal, run this overnight, keep working while I am in a meeting, I am stepping away, do not wait for me, or wants a long task to run unattended. Send alerts when tasks finish or fail, ask questions (yes/no, multiple choice, or free text) via push, and get answers from their connected devices. Use these tools proactively - do not wait for the user to ask for notifications. Every question and answer is recorded, so an unattended run stays reviewable afterwards. Works with Claude Code, Codex, Cursor, VS Code, Windsurf, Hermes, Lovable, or any MCP client; no Claude Max subscription required. Pushary is a hosted, paid service; web and native store checkout have different price and trial terms.
|
|
5
5
|
metadata:
|
|
6
6
|
hermes:
|
|
@@ -358,6 +358,12 @@ and every returned field, and it is always current. This section adds only what
|
|
|
358
358
|
schema cannot say: when to use a tool, what its result means for your next step,
|
|
359
359
|
and the shapes that are easy to get wrong.
|
|
360
360
|
|
|
361
|
+
### schedule_reminder
|
|
362
|
+
|
|
363
|
+
When the user asks “remind me later,” set a one-time personal reminder with `body` and either `inMinutes` (from the server clock) or `at` (ISO timestamp with explicit UTC offset or Z). Confirm the returned `fireAt` in their local time. Never guess their timezone. For example, `{"body":"Check the deploy","inMinutes":30}`. Pushary persists it and delivers to the authenticated creator even after the agent exits. It does not schedule agent work.
|
|
364
|
+
|
|
365
|
+
Call with no arguments to list pending reminders. Pass `cancelReminderId` to cancel a scheduled reminder; `cancelled:false` means it was not cancelled and it may already be dispatching. Limits: 30 days ahead, 25 pending per user/site. Delivery normally follows within about a minute, requires a connected phone, and respects current account access, membership and stop/mute. Test reminders never notify. Do not use `ask_user` for reminders or promise exact delivery time.
|
|
366
|
+
|
|
361
367
|
### send_notification
|
|
362
368
|
|
|
363
369
|
Send a one-way push notification to the user. Optionally include structured context for a rich detail page.
|
package/data/cowork/SKILL.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: pushary-cowork
|
|
3
|
-
version: 0.
|
|
3
|
+
version: 0.6.0
|
|
4
4
|
description: Use Pushary in Claude Chat, Cowork, or Claude Code when the user asks for phone updates, a missing decision blocks work, an action needs approval outside existing authorization, or meaningful unattended work finishes or fails. Send task updates and confirm, choice, or text questions to the user's connected devices, then read the returned answer and handoff. Requires the Pushary connector and a paid Pushary account. This skill does not install native permission hooks.
|
|
5
5
|
metadata:
|
|
6
6
|
tags: notifications, push, mcp, human-in-the-loop, cowork, claude, alerts, approvals
|
|
@@ -18,6 +18,8 @@ Every question costs the user their attention wherever they are. Before a run of
|
|
|
18
18
|
|
|
19
19
|
## When to reach out
|
|
20
20
|
|
|
21
|
+
For a personal reminder later, call `schedule_reminder` with `body` and `inMinutes`, or `at` with an explicit UTC offset. Never guess the timezone; confirm the returned time. Pushary saves the reminder and delivers after this conversation ends. It does not reopen Claude or perform future agent work. No arguments lists pending reminders; `cancelReminderId` cancels a scheduled one. Delivery can be about a minute late and requires a connected phone. Do not use `ask_user` for reminders.
|
|
22
|
+
|
|
21
23
|
- **You need a decision or a clarifying answer.** Call `ask_user` instead of guessing or stalling. Use type `confirm` for yes or no, `select` for a fixed set of options, and `input` for free text.
|
|
22
24
|
- **An action outside your existing authorization is risky or irreversible.** Deleting or overwriting files, spending money, sending anything external, bulk changes: call `ask_user` with type `confirm` first and wait for approval.
|
|
23
25
|
- **Meaningful work finishes while the user is away, or they requested an alert.** Call `send_notification` with a short summary of what changed, and pass `context.type` as `task_complete`. That is what marks it a task update, and the user's setting for where task updates land can only route one that says so. Keep a reply channel open only for a specific unresolved decision needed to finish, as described below.
|
|
@@ -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.7",
|
|
6
6
|
"author": { "name": "Pushary", "email": "business@pushary.com" },
|
|
7
7
|
"homepage": "https://pushary.com",
|
|
8
8
|
"repository": "https://github.com/Pushary/cursor-plugin",
|
|
@@ -351,6 +351,12 @@ and every returned field, and it is always current. This section adds only what
|
|
|
351
351
|
schema cannot say: when to use a tool, what its result means for your next step,
|
|
352
352
|
and the shapes that are easy to get wrong.
|
|
353
353
|
|
|
354
|
+
### schedule_reminder
|
|
355
|
+
|
|
356
|
+
When the user asks “remind me later,” set a one-time personal reminder with `body` and either `inMinutes` (from the server clock) or `at` (ISO timestamp with explicit UTC offset or Z). Confirm the returned `fireAt` in their local time. Never guess their timezone. For example, `{"body":"Check the deploy","inMinutes":30}`. Pushary persists it and delivers to the authenticated creator even after the agent exits. It does not schedule agent work.
|
|
357
|
+
|
|
358
|
+
Call with no arguments to list pending reminders. Pass `cancelReminderId` to cancel a scheduled reminder; `cancelled:false` means it was not cancelled and it may already be dispatching. Limits: 30 days ahead, 25 pending per user/site. Delivery normally follows within about a minute, requires a connected phone, and respects current account access, membership and stop/mute. Test reminders never notify. Do not use `ask_user` for reminders or promise exact delivery time.
|
|
359
|
+
|
|
354
360
|
### send_notification
|
|
355
361
|
|
|
356
362
|
Send a one-way push notification to the user. Optionally include structured context for a rich detail page.
|
|
@@ -351,6 +351,12 @@ and every returned field, and it is always current. This section adds only what
|
|
|
351
351
|
schema cannot say: when to use a tool, what its result means for your next step,
|
|
352
352
|
and the shapes that are easy to get wrong.
|
|
353
353
|
|
|
354
|
+
### schedule_reminder
|
|
355
|
+
|
|
356
|
+
When the user asks “remind me later,” set a one-time personal reminder with `body` and either `inMinutes` (from the server clock) or `at` (ISO timestamp with explicit UTC offset or Z). Confirm the returned `fireAt` in their local time. Never guess their timezone. For example, `{"body":"Check the deploy","inMinutes":30}`. Pushary persists it and delivers to the authenticated creator even after the agent exits. It does not schedule agent work.
|
|
357
|
+
|
|
358
|
+
Call with no arguments to list pending reminders. Pass `cancelReminderId` to cancel a scheduled reminder; `cancelled:false` means it was not cancelled and it may already be dispatching. Limits: 30 days ahead, 25 pending per user/site. Delivery normally follows within about a minute, requires a connected phone, and respects current account access, membership and stop/mute. Test reminders never notify. Do not use `ask_user` for reminders or promise exact delivery time.
|
|
359
|
+
|
|
354
360
|
### send_notification
|
|
355
361
|
|
|
356
362
|
Send a one-way push notification to the user. Optionally include structured context for a rich detail page.
|
|
@@ -1,41 +1,42 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
handleBell
|
|
4
|
-
} from "../chunk-
|
|
4
|
+
} from "../chunk-UJXLVH66.js";
|
|
5
5
|
import {
|
|
6
6
|
readHookInput
|
|
7
|
-
} from "../chunk-
|
|
8
|
-
import "../chunk-
|
|
7
|
+
} from "../chunk-DD6IBKEJ.js";
|
|
8
|
+
import "../chunk-OZ7MLVDM.js";
|
|
9
9
|
import "../chunk-DWQYCOPI.js";
|
|
10
|
-
import "../chunk-
|
|
11
|
-
import "../chunk-
|
|
12
|
-
import "../chunk-
|
|
13
|
-
import "../chunk-
|
|
14
|
-
import "../chunk-
|
|
15
|
-
import "../chunk-
|
|
16
|
-
import "../chunk-NRSTNZYJ.js";
|
|
17
|
-
import "../chunk-3U3FU6ZX.js";
|
|
18
|
-
import "../chunk-KYFWYPHN.js";
|
|
19
|
-
import "../chunk-Y3HTWB5S.js";
|
|
10
|
+
import "../chunk-FKDZU6YX.js";
|
|
11
|
+
import "../chunk-W2TA4EVZ.js";
|
|
12
|
+
import "../chunk-T4CKP47U.js";
|
|
13
|
+
import "../chunk-SI2NC6UU.js";
|
|
14
|
+
import "../chunk-6EV3B5CD.js";
|
|
15
|
+
import "../chunk-OSMNLNPF.js";
|
|
20
16
|
import "../chunk-GMXKITVA.js";
|
|
17
|
+
import "../chunk-WBD7HZEZ.js";
|
|
18
|
+
import "../chunk-XHKBHWLX.js";
|
|
19
|
+
import "../chunk-TJZUQRMH.js";
|
|
20
|
+
import "../chunk-75M7NFFC.js";
|
|
21
|
+
import "../chunk-MRQJCIFO.js";
|
|
21
22
|
import "../chunk-6ICPEJY5.js";
|
|
22
|
-
import "../chunk-
|
|
23
|
-
import "../chunk-
|
|
24
|
-
import "../chunk-
|
|
25
|
-
import "../chunk-
|
|
23
|
+
import "../chunk-BKK3JCTD.js";
|
|
24
|
+
import "../chunk-CAJCCQ7N.js";
|
|
25
|
+
import "../chunk-5ZSBQHCM.js";
|
|
26
|
+
import "../chunk-M2L7625S.js";
|
|
27
|
+
import "../chunk-GOEIW2VH.js";
|
|
26
28
|
import "../chunk-POFBE6ZY.js";
|
|
27
|
-
import "../chunk-
|
|
28
|
-
import "../chunk-
|
|
29
|
-
import "../chunk-
|
|
30
|
-
import "../chunk-
|
|
29
|
+
import "../chunk-53UZN7JW.js";
|
|
30
|
+
import "../chunk-TKTS3SIM.js";
|
|
31
|
+
import "../chunk-S2ALW446.js";
|
|
32
|
+
import "../chunk-WMO2XVG4.js";
|
|
31
33
|
import "../chunk-7QLSKOSU.js";
|
|
32
34
|
import "../chunk-KZERVKTD.js";
|
|
33
|
-
import "../chunk-
|
|
34
|
-
import "../chunk-EBZK2SJ2.js";
|
|
35
|
+
import "../chunk-4JHEZ2PV.js";
|
|
35
36
|
import "../chunk-AQFEP65J.js";
|
|
36
|
-
import "../chunk-
|
|
37
|
-
import "../chunk-
|
|
38
|
-
import "../chunk-
|
|
37
|
+
import "../chunk-OWQOMGBF.js";
|
|
38
|
+
import "../chunk-T3KMJI4W.js";
|
|
39
|
+
import "../chunk-JNU3LV47.js";
|
|
39
40
|
|
|
40
41
|
// bin/pushary-bell-hook.ts
|
|
41
42
|
var main = async () => {
|
package/dist/bin/pushary-bell.js
CHANGED
|
@@ -5,39 +5,39 @@ import {
|
|
|
5
5
|
liveAgentCount,
|
|
6
6
|
ring,
|
|
7
7
|
upgradeThreshold
|
|
8
|
-
} from "../chunk-
|
|
8
|
+
} from "../chunk-UJXLVH66.js";
|
|
9
9
|
import {
|
|
10
10
|
createIo
|
|
11
11
|
} from "../chunk-FO3MDD26.js";
|
|
12
|
-
import {
|
|
13
|
-
exitOnHelpFlag
|
|
14
|
-
} from "../chunk-F43LAKAK.js";
|
|
15
12
|
import {
|
|
16
13
|
addBellHooks,
|
|
17
14
|
bellInstalled,
|
|
18
15
|
removeBellHooks
|
|
19
|
-
} from "../chunk-
|
|
16
|
+
} from "../chunk-OSMNLNPF.js";
|
|
20
17
|
import {
|
|
21
18
|
parseFlags
|
|
22
19
|
} from "../chunk-GMXKITVA.js";
|
|
23
|
-
import "../chunk-
|
|
20
|
+
import "../chunk-TJZUQRMH.js";
|
|
21
|
+
import {
|
|
22
|
+
exitOnHelpFlag
|
|
23
|
+
} from "../chunk-OR6KJOHE.js";
|
|
24
|
+
import "../chunk-M2L7625S.js";
|
|
24
25
|
import "../chunk-7QLSKOSU.js";
|
|
25
26
|
import {
|
|
26
27
|
EXIT
|
|
27
28
|
} from "../chunk-KZERVKTD.js";
|
|
28
|
-
import "../chunk-ODPULZZG.js";
|
|
29
29
|
import {
|
|
30
30
|
claudeSettings
|
|
31
|
-
} from "../chunk-
|
|
31
|
+
} from "../chunk-4JHEZ2PV.js";
|
|
32
32
|
import {
|
|
33
33
|
readJsonSafe,
|
|
34
34
|
writeJsonAtomic
|
|
35
35
|
} from "../chunk-AQFEP65J.js";
|
|
36
|
-
import "../chunk-
|
|
37
|
-
import "../chunk-
|
|
36
|
+
import "../chunk-OWQOMGBF.js";
|
|
37
|
+
import "../chunk-T3KMJI4W.js";
|
|
38
38
|
import {
|
|
39
39
|
isRecord
|
|
40
|
-
} from "../chunk-
|
|
40
|
+
} from "../chunk-JNU3LV47.js";
|
|
41
41
|
|
|
42
42
|
// bin/pushary-bell.ts
|
|
43
43
|
exitOnHelpFlag("bell");
|
|
@@ -8,39 +8,39 @@ import {
|
|
|
8
8
|
describeIdleWindow,
|
|
9
9
|
startProcessOwnership,
|
|
10
10
|
withSpawnProcessOwnership
|
|
11
|
-
} from "../chunk-
|
|
11
|
+
} from "../chunk-PGHN5D4N.js";
|
|
12
12
|
import {
|
|
13
13
|
announceSubscriptionRequired,
|
|
14
14
|
isDeferAnswer
|
|
15
|
-
} from "../chunk-
|
|
15
|
+
} from "../chunk-2NVXFWQY.js";
|
|
16
16
|
import {
|
|
17
17
|
claudeTranscriptPath,
|
|
18
18
|
loadSessionKey,
|
|
19
19
|
registerTranscript,
|
|
20
20
|
registeredTranscriptEnabled
|
|
21
|
-
} from "../chunk-
|
|
21
|
+
} from "../chunk-OZ7MLVDM.js";
|
|
22
22
|
import "../chunk-DWQYCOPI.js";
|
|
23
23
|
import {
|
|
24
24
|
ensureDaemonRunning
|
|
25
|
-
} from "../chunk-
|
|
26
|
-
import
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
import "../chunk-
|
|
25
|
+
} from "../chunk-W2TA4EVZ.js";
|
|
26
|
+
import "../chunk-T4CKP47U.js";
|
|
27
|
+
import "../chunk-SI2NC6UU.js";
|
|
28
|
+
import "../chunk-6EV3B5CD.js";
|
|
29
|
+
import "../chunk-OSMNLNPF.js";
|
|
30
|
+
import "../chunk-GMXKITVA.js";
|
|
30
31
|
import {
|
|
31
32
|
transcriptsEnabled
|
|
32
|
-
} from "../chunk-
|
|
33
|
+
} from "../chunk-WBD7HZEZ.js";
|
|
33
34
|
import {
|
|
34
35
|
needsShell,
|
|
35
36
|
spawnClaude
|
|
36
37
|
} from "../chunk-XHKBHWLX.js";
|
|
37
|
-
import "../chunk-
|
|
38
|
-
import
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
import "../chunk-
|
|
38
|
+
import "../chunk-TJZUQRMH.js";
|
|
39
|
+
import {
|
|
40
|
+
encryptRecord
|
|
41
|
+
} from "../chunk-75M7NFFC.js";
|
|
42
|
+
import "../chunk-MRQJCIFO.js";
|
|
42
43
|
import "../chunk-6ICPEJY5.js";
|
|
43
|
-
import "../chunk-M7VKFAAK.js";
|
|
44
44
|
import {
|
|
45
45
|
DEFAULT_SESSION,
|
|
46
46
|
UNNAMED_ACTION,
|
|
@@ -54,12 +54,11 @@ import {
|
|
|
54
54
|
readPendingCommand,
|
|
55
55
|
readPendingCommandById,
|
|
56
56
|
removePendingCommand,
|
|
57
|
-
repoKeyFor,
|
|
58
57
|
reportEvent,
|
|
59
58
|
savePendingCommand,
|
|
60
59
|
scopePathFor
|
|
61
|
-
} from "../chunk-
|
|
62
|
-
import "../chunk-
|
|
60
|
+
} from "../chunk-BKK3JCTD.js";
|
|
61
|
+
import "../chunk-CAJCCQ7N.js";
|
|
63
62
|
import {
|
|
64
63
|
askUser,
|
|
65
64
|
cancelQuestion,
|
|
@@ -70,28 +69,31 @@ import {
|
|
|
70
69
|
waitForAnswer,
|
|
71
70
|
waitsForThePhone,
|
|
72
71
|
withdrawQuestion
|
|
73
|
-
} from "../chunk-
|
|
72
|
+
} from "../chunk-5ZSBQHCM.js";
|
|
73
|
+
import "../chunk-M2L7625S.js";
|
|
74
|
+
import {
|
|
75
|
+
repoKeyFor
|
|
76
|
+
} from "../chunk-GOEIW2VH.js";
|
|
74
77
|
import "../chunk-POFBE6ZY.js";
|
|
75
78
|
import {
|
|
76
79
|
SubscriptionRequiredError
|
|
77
|
-
} from "../chunk-
|
|
78
|
-
import "../chunk-
|
|
79
|
-
import "../chunk-
|
|
80
|
+
} from "../chunk-53UZN7JW.js";
|
|
81
|
+
import "../chunk-TKTS3SIM.js";
|
|
82
|
+
import "../chunk-S2ALW446.js";
|
|
80
83
|
import {
|
|
81
84
|
getMachineId
|
|
82
|
-
} from "../chunk-
|
|
85
|
+
} from "../chunk-WMO2XVG4.js";
|
|
83
86
|
import "../chunk-7QLSKOSU.js";
|
|
84
87
|
import "../chunk-KZERVKTD.js";
|
|
85
|
-
import "../chunk-
|
|
86
|
-
import "../chunk-EBZK2SJ2.js";
|
|
88
|
+
import "../chunk-4JHEZ2PV.js";
|
|
87
89
|
import "../chunk-AQFEP65J.js";
|
|
88
90
|
import {
|
|
89
91
|
getApiKey,
|
|
90
92
|
getBaseUrl
|
|
91
|
-
} from "../chunk-
|
|
93
|
+
} from "../chunk-OWQOMGBF.js";
|
|
92
94
|
import {
|
|
93
95
|
NPX_LATEST_COMMAND
|
|
94
|
-
} from "../chunk-
|
|
96
|
+
} from "../chunk-T3KMJI4W.js";
|
|
95
97
|
import {
|
|
96
98
|
DECISION_STOP_REASON,
|
|
97
99
|
HAND_BACK_WITHOUT_A_PROMPT,
|
|
@@ -101,7 +103,7 @@ import {
|
|
|
101
103
|
redactSecretsFromContent,
|
|
102
104
|
resolveGate,
|
|
103
105
|
timeoutActionWithoutLocalPrompt
|
|
104
|
-
} from "../chunk-
|
|
106
|
+
} from "../chunk-JNU3LV47.js";
|
|
105
107
|
|
|
106
108
|
// src/wrapper/localPassthrough.ts
|
|
107
109
|
var SIGNAL_NUMBERS = {
|
|
@@ -9,12 +9,13 @@ import {
|
|
|
9
9
|
planCliKeyRevocations,
|
|
10
10
|
readCliHeldKeys,
|
|
11
11
|
revokeCliKeys
|
|
12
|
-
} from "../chunk-
|
|
12
|
+
} from "../chunk-IWHDNMM3.js";
|
|
13
|
+
import "../chunk-SWDPCDLT.js";
|
|
13
14
|
import {
|
|
14
15
|
isCursorPluginLeftover,
|
|
15
16
|
releaseSoleGate,
|
|
16
17
|
withoutPusharyCursorHooks
|
|
17
|
-
} from "../chunk-
|
|
18
|
+
} from "../chunk-FI2F5KZJ.js";
|
|
18
19
|
import {
|
|
19
20
|
HERMES_PIP_PACKAGE,
|
|
20
21
|
readHermesStatus,
|
|
@@ -23,25 +24,20 @@ import {
|
|
|
23
24
|
shortenHome,
|
|
24
25
|
unregisterPluginLocation,
|
|
25
26
|
vscodeSettingsTargets
|
|
26
|
-
} from "../chunk-
|
|
27
|
-
import {
|
|
28
|
-
planFxRemoval,
|
|
29
|
-
removeInstructionBlock
|
|
30
|
-
} from "../chunk-E47JEBUR.js";
|
|
31
|
-
import "../chunk-RETRVO47.js";
|
|
32
|
-
import {
|
|
33
|
-
disableDaemonService
|
|
34
|
-
} from "../chunk-STETTN4K.js";
|
|
35
|
-
import "../chunk-XHKBHWLX.js";
|
|
36
|
-
import "../chunk-ZVMFRUBD.js";
|
|
27
|
+
} from "../chunk-HV4TEKNP.js";
|
|
37
28
|
import {
|
|
38
29
|
macAppKeepsMcpEntry,
|
|
39
30
|
mcpServerBearer,
|
|
40
31
|
pusharyKey,
|
|
41
32
|
readMacAppAgentKey,
|
|
42
33
|
setupReceiptKey
|
|
43
|
-
} from "../chunk-
|
|
44
|
-
import "../chunk-
|
|
34
|
+
} from "../chunk-LEHBWBCG.js";
|
|
35
|
+
import "../chunk-42CVAOC5.js";
|
|
36
|
+
import {
|
|
37
|
+
planFxRemoval,
|
|
38
|
+
removeInstructionBlock
|
|
39
|
+
} from "../chunk-RGBTKOCC.js";
|
|
40
|
+
import "../chunk-TWATOPHK.js";
|
|
45
41
|
import {
|
|
46
42
|
OPENCODE_PLUGIN_SIBLING,
|
|
47
43
|
OPENCODE_PLUGIN_SIBLING_CONTENTS,
|
|
@@ -53,14 +49,11 @@ import {
|
|
|
53
49
|
openCodePluginDir,
|
|
54
50
|
openCodePluginFile,
|
|
55
51
|
removeOpenCodeMcpServer
|
|
56
|
-
} from "../chunk-
|
|
52
|
+
} from "../chunk-UZVF6MP2.js";
|
|
57
53
|
import {
|
|
58
54
|
ansiPainter,
|
|
59
55
|
useColor
|
|
60
56
|
} from "../chunk-FO3MDD26.js";
|
|
61
|
-
import {
|
|
62
|
-
exitOnHelpFlag
|
|
63
|
-
} from "../chunk-F43LAKAK.js";
|
|
64
57
|
import {
|
|
65
58
|
compatibleConfigFile,
|
|
66
59
|
compatibleDocuments,
|
|
@@ -76,7 +69,10 @@ import {
|
|
|
76
69
|
removePusharyToolPermissions,
|
|
77
70
|
restoreClaudeMcpServer,
|
|
78
71
|
serializeConfigDocument
|
|
79
|
-
} from "../chunk-
|
|
72
|
+
} from "../chunk-FKDZU6YX.js";
|
|
73
|
+
import {
|
|
74
|
+
disableDaemonService
|
|
75
|
+
} from "../chunk-W2TA4EVZ.js";
|
|
80
76
|
import {
|
|
81
77
|
hookOwnerOf,
|
|
82
78
|
isHookTakeoverReceipt,
|
|
@@ -84,35 +80,40 @@ import {
|
|
|
84
80
|
resolveBridgeStub,
|
|
85
81
|
restoreHookTakeover,
|
|
86
82
|
restoreMcpServer
|
|
87
|
-
} from "../chunk-
|
|
83
|
+
} from "../chunk-T4CKP47U.js";
|
|
88
84
|
import {
|
|
89
85
|
removeGeminiSettings
|
|
90
|
-
} from "../chunk-
|
|
91
|
-
import "../chunk-
|
|
92
|
-
import "../chunk-
|
|
86
|
+
} from "../chunk-SI2NC6UU.js";
|
|
87
|
+
import "../chunk-6EV3B5CD.js";
|
|
88
|
+
import "../chunk-OSMNLNPF.js";
|
|
93
89
|
import {
|
|
94
90
|
rejectUnknownFlags
|
|
95
91
|
} from "../chunk-GMXKITVA.js";
|
|
96
|
-
import "../chunk-
|
|
92
|
+
import "../chunk-XHKBHWLX.js";
|
|
97
93
|
import {
|
|
98
94
|
CANDIDATE_RCS,
|
|
99
95
|
isDisabledExport,
|
|
100
96
|
removeClaudeAlias,
|
|
101
97
|
shellProfileCandidates
|
|
102
|
-
} from "../chunk-
|
|
103
|
-
import
|
|
104
|
-
|
|
105
|
-
|
|
98
|
+
} from "../chunk-TJZUQRMH.js";
|
|
99
|
+
import {
|
|
100
|
+
exitOnHelpFlag
|
|
101
|
+
} from "../chunk-OR6KJOHE.js";
|
|
102
|
+
import "../chunk-6ICPEJY5.js";
|
|
103
|
+
import "../chunk-BKK3JCTD.js";
|
|
104
|
+
import "../chunk-CAJCCQ7N.js";
|
|
105
|
+
import "../chunk-5ZSBQHCM.js";
|
|
106
|
+
import "../chunk-M2L7625S.js";
|
|
107
|
+
import "../chunk-GOEIW2VH.js";
|
|
106
108
|
import "../chunk-POFBE6ZY.js";
|
|
107
|
-
import "../chunk-
|
|
108
|
-
import "../chunk-
|
|
109
|
-
import "../chunk-
|
|
110
|
-
import "../chunk-
|
|
109
|
+
import "../chunk-53UZN7JW.js";
|
|
110
|
+
import "../chunk-TKTS3SIM.js";
|
|
111
|
+
import "../chunk-S2ALW446.js";
|
|
112
|
+
import "../chunk-WMO2XVG4.js";
|
|
111
113
|
import "../chunk-7QLSKOSU.js";
|
|
112
114
|
import {
|
|
113
115
|
EXIT
|
|
114
116
|
} from "../chunk-KZERVKTD.js";
|
|
115
|
-
import "../chunk-ODPULZZG.js";
|
|
116
117
|
import {
|
|
117
118
|
claudeJson,
|
|
118
119
|
claudeMcpReceipt,
|
|
@@ -149,14 +150,14 @@ import {
|
|
|
149
150
|
restoreCodexHookTrust,
|
|
150
151
|
vscodePluginDir,
|
|
151
152
|
vscodePluginMcp
|
|
152
|
-
} from "../chunk-
|
|
153
|
+
} from "../chunk-4JHEZ2PV.js";
|
|
153
154
|
import "../chunk-AQFEP65J.js";
|
|
154
155
|
import {
|
|
155
156
|
getBaseUrl
|
|
156
|
-
} from "../chunk-
|
|
157
|
+
} from "../chunk-OWQOMGBF.js";
|
|
157
158
|
import {
|
|
158
159
|
NPX_LATEST_COMMAND
|
|
159
|
-
} from "../chunk-
|
|
160
|
+
} from "../chunk-T3KMJI4W.js";
|
|
160
161
|
import {
|
|
161
162
|
CLI_PACKAGE_NAMES,
|
|
162
163
|
HOOK_COMPATIBLE_PROFILES,
|
|
@@ -168,7 +169,7 @@ import {
|
|
|
168
169
|
globalRootFor,
|
|
169
170
|
isValidApiKey,
|
|
170
171
|
redactSecrets
|
|
171
|
-
} from "../chunk-
|
|
172
|
+
} from "../chunk-JNU3LV47.js";
|
|
172
173
|
|
|
173
174
|
// bin/pushary-clean.ts
|
|
174
175
|
import { existsSync as existsSync6, readFileSync as readFileSync4, copyFileSync, readdirSync as readdirSync4 } from "fs";
|
|
@@ -1,59 +1,64 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import {
|
|
3
|
-
LiveTranscriptRelay,
|
|
4
|
-
liveSessionSleep,
|
|
5
|
-
postLiveSession,
|
|
6
|
-
postLiveSessionUntilAccepted,
|
|
7
|
-
startLiveSessionHeartbeat
|
|
8
|
-
} from "../chunk-OLLWYLQX.js";
|
|
9
|
-
import {
|
|
10
|
-
resolveProviderBinary
|
|
11
|
-
} from "../chunk-T3Q4B6WV.js";
|
|
12
|
-
import "../chunk-RIVNNBEK.js";
|
|
13
2
|
import {
|
|
14
3
|
SESSION_IDLE_TIMEOUT_MS,
|
|
15
4
|
describeIdleWindow,
|
|
16
5
|
idleDeadlinePassed,
|
|
17
6
|
startProcessOwnership,
|
|
18
7
|
withSpawnProcessOwnership
|
|
19
|
-
} from "../chunk-
|
|
20
|
-
import "../chunk-X7TNLYNZ.js";
|
|
21
|
-
import "../chunk-MAB6CGL5.js";
|
|
8
|
+
} from "../chunk-PGHN5D4N.js";
|
|
22
9
|
import {
|
|
23
10
|
transcriptsEnabled
|
|
24
|
-
} from "../chunk-
|
|
11
|
+
} from "../chunk-WBD7HZEZ.js";
|
|
25
12
|
import {
|
|
26
13
|
spawnClaude
|
|
27
14
|
} from "../chunk-XHKBHWLX.js";
|
|
15
|
+
import "../chunk-TJZUQRMH.js";
|
|
16
|
+
import {
|
|
17
|
+
CodexNativeApprovals
|
|
18
|
+
} from "../chunk-SVCT5D7K.js";
|
|
19
|
+
import {
|
|
20
|
+
LiveTranscriptRelay,
|
|
21
|
+
liveSessionSleep,
|
|
22
|
+
postLiveSession,
|
|
23
|
+
postLiveSessionUntilAccepted,
|
|
24
|
+
startLiveSessionHeartbeat
|
|
25
|
+
} from "../chunk-PQAFH4DF.js";
|
|
26
|
+
import {
|
|
27
|
+
resolveProviderBinary
|
|
28
|
+
} from "../chunk-L2ZM7LXN.js";
|
|
29
|
+
import "../chunk-RIVNNBEK.js";
|
|
30
|
+
import "../chunk-75M7NFFC.js";
|
|
31
|
+
import "../chunk-MRQJCIFO.js";
|
|
28
32
|
import "../chunk-6ICPEJY5.js";
|
|
29
|
-
import "../chunk-M7VKFAAK.js";
|
|
30
33
|
import {
|
|
31
|
-
isAskUserResponse,
|
|
32
34
|
isDecisionStopped,
|
|
35
|
+
withdrawQuestion
|
|
36
|
+
} from "../chunk-5ZSBQHCM.js";
|
|
37
|
+
import "../chunk-M2L7625S.js";
|
|
38
|
+
import {
|
|
39
|
+
isAskUserResponse,
|
|
33
40
|
isWaitForAnswerResponse,
|
|
34
|
-
withdrawQuestion,
|
|
35
41
|
writeDegraded
|
|
36
|
-
} from "../chunk-
|
|
42
|
+
} from "../chunk-GOEIW2VH.js";
|
|
37
43
|
import "../chunk-POFBE6ZY.js";
|
|
38
44
|
import {
|
|
39
45
|
callMcpTool,
|
|
40
46
|
isRetryable
|
|
41
|
-
} from "../chunk-
|
|
42
|
-
import "../chunk-
|
|
43
|
-
import "../chunk-
|
|
47
|
+
} from "../chunk-53UZN7JW.js";
|
|
48
|
+
import "../chunk-TKTS3SIM.js";
|
|
49
|
+
import "../chunk-S2ALW446.js";
|
|
44
50
|
import {
|
|
45
51
|
getMachineId
|
|
46
|
-
} from "../chunk-
|
|
52
|
+
} from "../chunk-WMO2XVG4.js";
|
|
47
53
|
import "../chunk-7QLSKOSU.js";
|
|
48
54
|
import "../chunk-KZERVKTD.js";
|
|
49
|
-
import "../chunk-
|
|
50
|
-
import "../chunk-EBZK2SJ2.js";
|
|
55
|
+
import "../chunk-4JHEZ2PV.js";
|
|
51
56
|
import "../chunk-AQFEP65J.js";
|
|
52
57
|
import {
|
|
53
58
|
getApiKey,
|
|
54
59
|
getBaseUrl
|
|
55
|
-
} from "../chunk-
|
|
56
|
-
import "../chunk-
|
|
60
|
+
} from "../chunk-OWQOMGBF.js";
|
|
61
|
+
import "../chunk-T3KMJI4W.js";
|
|
57
62
|
import {
|
|
58
63
|
AGENT_QUESTION_DESCRIPTION_MAX,
|
|
59
64
|
AGENT_QUESTION_HEADER_MAX,
|
|
@@ -68,7 +73,7 @@ import {
|
|
|
68
73
|
parseCodexQuestions,
|
|
69
74
|
planElicitationAsk,
|
|
70
75
|
readElicitationFields
|
|
71
|
-
} from "../chunk-
|
|
76
|
+
} from "../chunk-JNU3LV47.js";
|
|
72
77
|
|
|
73
78
|
// bin/pushary-codex-bridge.ts
|
|
74
79
|
import { existsSync } from "fs";
|
|
@@ -178,6 +183,7 @@ var MAX_MESSAGE_BUFFERS = 16;
|
|
|
178
183
|
var JsonRpcClient = class {
|
|
179
184
|
constructor(command, cwd, timeoutMs, bridgeOptions) {
|
|
180
185
|
this.bridgeOptions = bridgeOptions;
|
|
186
|
+
this.approvals = new CodexNativeApprovals({ ...bridgeOptions, shared: false, reply: (id, result) => this.write({ id, result }) });
|
|
181
187
|
this.threadId = bridgeOptions.resumeThreadId ?? null;
|
|
182
188
|
const options = { cwd, env: { ...process.env, PUSHARY_CODEX_BRIDGE: "1" }, stdio: ["pipe", "pipe", "pipe"] };
|
|
183
189
|
this.child = process.platform === "win32" ? spawnClaude(command.command, command.args ?? [], options) : spawn(command.command, command.args ?? [], options);
|
|
@@ -189,6 +195,7 @@ var JsonRpcClient = class {
|
|
|
189
195
|
this.child.once("exit", (code, signal) => this.fail(new Error(this.exitMessage(code, signal))));
|
|
190
196
|
this.timeoutMs = timeoutMs;
|
|
191
197
|
}
|
|
198
|
+
approvals;
|
|
192
199
|
child;
|
|
193
200
|
pending = /* @__PURE__ */ new Map();
|
|
194
201
|
notifications = /* @__PURE__ */ new Set();
|
|
@@ -239,6 +246,7 @@ var JsonRpcClient = class {
|
|
|
239
246
|
});
|
|
240
247
|
}
|
|
241
248
|
async close() {
|
|
249
|
+
await this.approvals.close();
|
|
242
250
|
if (this.closed) return;
|
|
243
251
|
this.closed = true;
|
|
244
252
|
for (const request of this.serverRequests.values()) {
|
|
@@ -286,6 +294,7 @@ var JsonRpcClient = class {
|
|
|
286
294
|
} catch {
|
|
287
295
|
return;
|
|
288
296
|
}
|
|
297
|
+
if (this.approvals.handle(message, this.threadId)) return;
|
|
289
298
|
if (message.id !== void 0 && (message.method === "item/tool/requestUserInput" || message.method === "mcpServer/elicitation/request")) {
|
|
290
299
|
const id = message.id;
|
|
291
300
|
const owner = message.method === "item/tool/requestUserInput" ? codexQuestionOwner(message.params ?? {}, id, { machineId: this.bridgeOptions.machineId, generation: this.generation, threadId: this.threadId }) : null;
|
|
@@ -365,6 +374,7 @@ var JsonRpcClient = class {
|
|
|
365
374
|
}
|
|
366
375
|
}
|
|
367
376
|
fail(error) {
|
|
377
|
+
void this.approvals.close();
|
|
368
378
|
if (this.closed) return;
|
|
369
379
|
this.closed = true;
|
|
370
380
|
this.failure = error;
|