@pushary/agent-hooks 0.81.0 → 0.83.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 +32 -0
- package/data/SKILL.md +14 -5
- package/data/cursor-plugin/skills/pushary/SKILL.md +13 -4
- package/data/vscode-plugin/skills/pushary/SKILL.md +13 -4
- package/dist/bin/pushary-bell-hook.js +4 -4
- package/dist/bin/pushary-bell.js +6 -6
- package/dist/bin/pushary-claude.js +4 -4
- package/dist/bin/pushary-clean.js +5 -5
- package/dist/bin/pushary-codex-hook.js +10 -6
- package/dist/bin/pushary-codex.js +3 -3
- package/dist/bin/pushary-connect.js +7 -7
- package/dist/bin/pushary-doctor.js +11 -11
- package/dist/bin/pushary-gemini-hook.js +5 -5
- package/dist/bin/pushary-hook.js +7 -7
- package/dist/bin/pushary-login.js +5 -5
- package/dist/bin/pushary-logout.js +5 -5
- package/dist/bin/pushary-mode.js +4 -4
- package/dist/bin/pushary-notification-hook.js +3 -3
- package/dist/bin/pushary-permission-denied-hook.js +7 -7
- package/dist/bin/pushary-permission-hook.js +7 -7
- package/dist/bin/pushary-post-hook.js +3 -3
- package/dist/bin/pushary-prompt-hook.js +3 -3
- package/dist/bin/pushary-session-end-hook.js +3 -3
- package/dist/bin/pushary-session-start-hook.js +3 -3
- package/dist/bin/pushary-setup.js +22 -17
- package/dist/bin/pushary-stats.js +2 -2
- package/dist/bin/pushary-status.js +6 -6
- package/dist/bin/pushary-stop-hook.js +3 -3
- package/dist/bin/pushary-stopfailure-hook.js +3 -3
- package/dist/bin/pushary-suggestions.js +1 -1
- package/dist/bin/pushary-upgrade.js +4 -4
- package/dist/bin/pushary-wait.js +4 -4
- package/dist/{chunk-MHA2WB7S.js → chunk-2R63XKLG.js} +1 -1
- package/dist/{chunk-U2PZKYZM.js → chunk-3JDIGKPV.js} +2 -2
- package/dist/{chunk-TX7KBKT7.js → chunk-5RUIFDTP.js} +1 -0
- package/dist/{chunk-PPD3HHNJ.js → chunk-BT7NTTIW.js} +1 -1
- package/dist/{chunk-FVVJ3FOW.js → chunk-C4SQY777.js} +2 -2
- package/dist/{chunk-EBP4YG75.js → chunk-CXGJTN74.js} +1 -1
- package/dist/{chunk-7DYFAM32.js → chunk-DMKSHZKF.js} +1 -1
- package/dist/{chunk-JU72KNUB.js → chunk-E7YX7CTM.js} +20 -8
- package/dist/{chunk-PVSCRRPA.js → chunk-FFT7L2VE.js} +2 -2
- package/dist/{chunk-WYVKPLVT.js → chunk-HKKERYZP.js} +1 -1
- package/dist/{chunk-Q4QULGAV.js → chunk-O55DONTG.js} +1 -1
- package/dist/{chunk-BOMF4C2Q.js → chunk-R3AEWBAZ.js} +23 -12
- package/dist/{chunk-E6I3DBJW.js → chunk-RZP3Z2WR.js} +1 -1
- package/dist/{chunk-R6AYBATA.js → chunk-U752S5RE.js} +1 -1
- package/dist/{chunk-DNFYUBRP.js → chunk-UAWTJMXA.js} +1 -1
- package/dist/{chunk-UBUPETEQ.js → chunk-V6MCBCUC.js} +2 -2
- package/dist/src/index.d.ts +2 -0
- package/dist/src/index.js +7 -7
- package/package.json +1 -1
- /package/dist/{chunk-T6BNEQ2A.js → chunk-QA5HP7CR.js} +0 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,37 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.82.0
|
|
4
|
+
|
|
5
|
+
### Setup reads properly when an agent is the one running it
|
|
6
|
+
|
|
7
|
+
An agent that runs `setup` relays its output to you, and two things in
|
|
8
|
+
that output were written for a terminal that was not there.
|
|
9
|
+
|
|
10
|
+
Colour was unconditional. Piped into an agent's transcript, ten raw
|
|
11
|
+
escape sequences arrived as literal text around the parts you needed to
|
|
12
|
+
read. Colour now follows the same rule the rest of the CLI already used,
|
|
13
|
+
so it is on at a terminal and off everywhere else.
|
|
14
|
+
|
|
15
|
+
The app download was unreachable until you gave up. "No app?" was
|
|
16
|
+
answered with the command for approving in a browser, which sends you
|
|
17
|
+
away from the phone at the moment you were being asked to install it,
|
|
18
|
+
and the download link appeared only after the fifteen minute wait
|
|
19
|
+
expired. The header now names https://pushary.com/download first and
|
|
20
|
+
says the wait continues while you install.
|
|
21
|
+
|
|
22
|
+
### The pairing QR is smaller
|
|
23
|
+
|
|
24
|
+
The QR encodes a link, and the link's length decides the QR's size. It
|
|
25
|
+
carried the pairing id and the public key, 114 characters, which drew 22
|
|
26
|
+
rows of blocks. Against a server that offers one, the CLI now uses a
|
|
27
|
+
short link instead: 33 characters, 16 rows, and small enough to survive
|
|
28
|
+
being relayed through something that truncates.
|
|
29
|
+
|
|
30
|
+
Nothing depends on it. Against an older server, or if the short link
|
|
31
|
+
cannot be issued, setup uses the long one exactly as before, and the
|
|
32
|
+
`pushary://` link is never shortened at all.
|
|
33
|
+
|
|
34
|
+
|
|
3
35
|
## 0.81.0
|
|
4
36
|
|
|
5
37
|
### The idle ping now honours a Terminal mode set in the dashboard
|
package/data/SKILL.md
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: pushary
|
|
3
|
-
version: 0.9.
|
|
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
|
|
3
|
+
version: 0.9.2
|
|
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 the user's lock screen. 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 service, $9.99/mo after a 3-day card-first trial.
|
|
5
5
|
metadata:
|
|
6
6
|
hermes:
|
|
7
7
|
tags: [notifications, push, human-in-the-loop, alerts, permissions, mcp]
|
|
@@ -92,11 +92,20 @@ Just run it. No account, no API key, and nothing to paste first:
|
|
|
92
92
|
npx @pushary/agent-hooks@latest setup
|
|
93
93
|
```
|
|
94
94
|
|
|
95
|
-
|
|
95
|
+
Setup pairs first and configures MCP, hooks, permissions and the skill only once pairing succeeds. Until someone completes the steps below, nothing is written and this machine has no Pushary. Treat pairing as the task, not as a prompt to wait out.
|
|
96
96
|
|
|
97
|
-
|
|
97
|
+
It prints a QR, a short link under it, a fingerprint, and then waits about 15 minutes.
|
|
98
98
|
|
|
99
|
-
|
|
99
|
+
**Do not summarise that output. Show it, and walk the user through all four steps:**
|
|
100
|
+
|
|
101
|
+
1. **Show them the QR and the short link.** Both point at the same pairing. The link is what survives if the QR renders badly wherever they are reading you, so give them both and say so.
|
|
102
|
+
2. **They need the Pushary app.** It is the thing that receives approvals. If they do not have it: https://pushary.com/download. Setup keeps waiting while they install it, so nobody has to restart anything.
|
|
103
|
+
3. **They scan the QR, or open the link on the phone.** The app shows a fingerprint. Tell them it must match the one in your output before they approve. On a first install the app will also ask them to sign in and start a plan: $9.99/mo after a 3-day trial, card up front, all inside the app. Say this before they scan rather than letting them discover it mid-flow.
|
|
104
|
+
4. **They approve.** Setup finishes on its own, and from then on your `ask_user` and `send_notification` calls arrive on their lock screen with answer buttons.
|
|
105
|
+
|
|
106
|
+
Never ask the user for an API key, and never send them to a signup page first. Both are the old flow and both are worse.
|
|
107
|
+
|
|
108
|
+
If setup exits without pairing, nothing was configured. Say that plainly and offer the two fallbacks below rather than pretending the tools are available.
|
|
100
109
|
|
|
101
110
|
If `PUSHARY_API_KEY` is already in the environment or in an existing MCP config, setup uses it and skips pairing entirely.
|
|
102
111
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: pushary
|
|
3
|
-
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
|
|
3
|
+
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 the user's lock screen. 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 service, $9.99/mo after a 3-day card-first trial.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Pushary - Push Notifications for AI Agents
|
|
@@ -85,11 +85,20 @@ Just run it. No account, no API key, and nothing to paste first:
|
|
|
85
85
|
npx @pushary/agent-hooks@latest setup
|
|
86
86
|
```
|
|
87
87
|
|
|
88
|
-
|
|
88
|
+
Setup pairs first and configures MCP, hooks, permissions and the skill only once pairing succeeds. Until someone completes the steps below, nothing is written and this machine has no Pushary. Treat pairing as the task, not as a prompt to wait out.
|
|
89
89
|
|
|
90
|
-
|
|
90
|
+
It prints a QR, a short link under it, a fingerprint, and then waits about 15 minutes.
|
|
91
91
|
|
|
92
|
-
|
|
92
|
+
**Do not summarise that output. Show it, and walk the user through all four steps:**
|
|
93
|
+
|
|
94
|
+
1. **Show them the QR and the short link.** Both point at the same pairing. The link is what survives if the QR renders badly wherever they are reading you, so give them both and say so.
|
|
95
|
+
2. **They need the Pushary app.** It is the thing that receives approvals. If they do not have it: https://pushary.com/download. Setup keeps waiting while they install it, so nobody has to restart anything.
|
|
96
|
+
3. **They scan the QR, or open the link on the phone.** The app shows a fingerprint. Tell them it must match the one in your output before they approve. On a first install the app will also ask them to sign in and start a plan: $9.99/mo after a 3-day trial, card up front, all inside the app. Say this before they scan rather than letting them discover it mid-flow.
|
|
97
|
+
4. **They approve.** Setup finishes on its own, and from then on your `ask_user` and `send_notification` calls arrive on their lock screen with answer buttons.
|
|
98
|
+
|
|
99
|
+
Never ask the user for an API key, and never send them to a signup page first. Both are the old flow and both are worse.
|
|
100
|
+
|
|
101
|
+
If setup exits without pairing, nothing was configured. Say that plainly and offer the two fallbacks below rather than pretending the tools are available.
|
|
93
102
|
|
|
94
103
|
If `PUSHARY_API_KEY` is already in the environment or in an existing MCP config, setup uses it and skips pairing entirely.
|
|
95
104
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: pushary
|
|
3
|
-
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
|
|
3
|
+
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 the user's lock screen. 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 service, $9.99/mo after a 3-day card-first trial.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Pushary - Push Notifications for AI Agents
|
|
@@ -85,11 +85,20 @@ Just run it. No account, no API key, and nothing to paste first:
|
|
|
85
85
|
npx @pushary/agent-hooks@latest setup
|
|
86
86
|
```
|
|
87
87
|
|
|
88
|
-
|
|
88
|
+
Setup pairs first and configures MCP, hooks, permissions and the skill only once pairing succeeds. Until someone completes the steps below, nothing is written and this machine has no Pushary. Treat pairing as the task, not as a prompt to wait out.
|
|
89
89
|
|
|
90
|
-
|
|
90
|
+
It prints a QR, a short link under it, a fingerprint, and then waits about 15 minutes.
|
|
91
91
|
|
|
92
|
-
|
|
92
|
+
**Do not summarise that output. Show it, and walk the user through all four steps:**
|
|
93
|
+
|
|
94
|
+
1. **Show them the QR and the short link.** Both point at the same pairing. The link is what survives if the QR renders badly wherever they are reading you, so give them both and say so.
|
|
95
|
+
2. **They need the Pushary app.** It is the thing that receives approvals. If they do not have it: https://pushary.com/download. Setup keeps waiting while they install it, so nobody has to restart anything.
|
|
96
|
+
3. **They scan the QR, or open the link on the phone.** The app shows a fingerprint. Tell them it must match the one in your output before they approve. On a first install the app will also ask them to sign in and start a plan: $9.99/mo after a 3-day trial, card up front, all inside the app. Say this before they scan rather than letting them discover it mid-flow.
|
|
97
|
+
4. **They approve.** Setup finishes on its own, and from then on your `ask_user` and `send_notification` calls arrive on their lock screen with answer buttons.
|
|
98
|
+
|
|
99
|
+
Never ask the user for an API key, and never send them to a signup page first. Both are the old flow and both are worse.
|
|
100
|
+
|
|
101
|
+
If setup exits without pairing, nothing was configured. Say that plainly and offer the two fallbacks below rather than pretending the tools are available.
|
|
93
102
|
|
|
94
103
|
If `PUSHARY_API_KEY` is already in the environment or in an existing MCP config, setup uses it and skips pairing entirely.
|
|
95
104
|
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
handleBell
|
|
4
|
-
} from "../chunk-
|
|
5
|
-
import "../chunk-
|
|
4
|
+
} from "../chunk-UAWTJMXA.js";
|
|
5
|
+
import "../chunk-RZP3Z2WR.js";
|
|
6
6
|
import "../chunk-6MTNS63X.js";
|
|
7
7
|
import "../chunk-BC3VCZ3E.js";
|
|
8
|
-
import "../chunk-
|
|
9
|
-
import "../chunk-
|
|
8
|
+
import "../chunk-BT7NTTIW.js";
|
|
9
|
+
import "../chunk-QA5HP7CR.js";
|
|
10
10
|
import "../chunk-2UMNXADU.js";
|
|
11
11
|
|
|
12
12
|
// bin/pushary-bell-hook.ts
|
package/dist/bin/pushary-bell.js
CHANGED
|
@@ -5,14 +5,14 @@ import {
|
|
|
5
5
|
liveAgentCount,
|
|
6
6
|
ring,
|
|
7
7
|
upgradeThreshold
|
|
8
|
-
} from "../chunk-
|
|
8
|
+
} from "../chunk-UAWTJMXA.js";
|
|
9
9
|
import {
|
|
10
10
|
claudeSettings
|
|
11
|
-
} from "../chunk-
|
|
11
|
+
} from "../chunk-O55DONTG.js";
|
|
12
12
|
import {
|
|
13
13
|
createIo
|
|
14
|
-
} from "../chunk-
|
|
15
|
-
import "../chunk-
|
|
14
|
+
} from "../chunk-5RUIFDTP.js";
|
|
15
|
+
import "../chunk-RZP3Z2WR.js";
|
|
16
16
|
import {
|
|
17
17
|
readJsonSafe,
|
|
18
18
|
writeJsonAtomic
|
|
@@ -21,9 +21,9 @@ import {
|
|
|
21
21
|
parseFlags
|
|
22
22
|
} from "../chunk-GMXKITVA.js";
|
|
23
23
|
import "../chunk-BC3VCZ3E.js";
|
|
24
|
-
import "../chunk-
|
|
24
|
+
import "../chunk-BT7NTTIW.js";
|
|
25
25
|
import "../chunk-7QLSKOSU.js";
|
|
26
|
-
import "../chunk-
|
|
26
|
+
import "../chunk-QA5HP7CR.js";
|
|
27
27
|
import {
|
|
28
28
|
exitOnHelpFlag
|
|
29
29
|
} from "../chunk-RRZZ7TFJ.js";
|
|
@@ -3,7 +3,7 @@ import {
|
|
|
3
3
|
KILL_REASON,
|
|
4
4
|
isDeferAnswer,
|
|
5
5
|
resolveGate
|
|
6
|
-
} from "../chunk-
|
|
6
|
+
} from "../chunk-FFT7L2VE.js";
|
|
7
7
|
import {
|
|
8
8
|
askUser,
|
|
9
9
|
cancelQuestion,
|
|
@@ -15,14 +15,14 @@ import {
|
|
|
15
15
|
reportEvent,
|
|
16
16
|
scopePathFor,
|
|
17
17
|
waitForAnswer
|
|
18
|
-
} from "../chunk-
|
|
18
|
+
} from "../chunk-C4SQY777.js";
|
|
19
19
|
import "../chunk-BSZYIAZL.js";
|
|
20
20
|
import "../chunk-SAF6HGAA.js";
|
|
21
|
-
import "../chunk-
|
|
21
|
+
import "../chunk-BT7NTTIW.js";
|
|
22
22
|
import "../chunk-7QLSKOSU.js";
|
|
23
23
|
import {
|
|
24
24
|
redactSecrets
|
|
25
|
-
} from "../chunk-
|
|
25
|
+
} from "../chunk-QA5HP7CR.js";
|
|
26
26
|
import {
|
|
27
27
|
needsShell,
|
|
28
28
|
spawnClaude
|
|
@@ -4,14 +4,14 @@ import {
|
|
|
4
4
|
shortenHome,
|
|
5
5
|
unregisterPluginLocation,
|
|
6
6
|
vscodeSettingsTargets
|
|
7
|
-
} from "../chunk-
|
|
7
|
+
} from "../chunk-HKKERYZP.js";
|
|
8
8
|
import {
|
|
9
9
|
removeGeminiSettings
|
|
10
|
-
} from "../chunk-
|
|
10
|
+
} from "../chunk-DMKSHZKF.js";
|
|
11
11
|
import {
|
|
12
12
|
removeClaudeMcpServers,
|
|
13
13
|
removePusharySettings
|
|
14
|
-
} from "../chunk-
|
|
14
|
+
} from "../chunk-U752S5RE.js";
|
|
15
15
|
import {
|
|
16
16
|
claudeJson,
|
|
17
17
|
claudeSettings,
|
|
@@ -29,7 +29,7 @@ import {
|
|
|
29
29
|
pusharyDir,
|
|
30
30
|
removeCodexHooks,
|
|
31
31
|
vscodePluginDir
|
|
32
|
-
} from "../chunk-
|
|
32
|
+
} from "../chunk-O55DONTG.js";
|
|
33
33
|
import {
|
|
34
34
|
rejectUnknownFlags
|
|
35
35
|
} from "../chunk-GMXKITVA.js";
|
|
@@ -37,7 +37,7 @@ import {
|
|
|
37
37
|
removeClaudeAlias
|
|
38
38
|
} from "../chunk-BC3VCZ3E.js";
|
|
39
39
|
import "../chunk-7QLSKOSU.js";
|
|
40
|
-
import "../chunk-
|
|
40
|
+
import "../chunk-QA5HP7CR.js";
|
|
41
41
|
import {
|
|
42
42
|
execNpm
|
|
43
43
|
} from "../chunk-MUEW424A.js";
|
|
@@ -2,13 +2,13 @@
|
|
|
2
2
|
import {
|
|
3
3
|
isGatingMoment,
|
|
4
4
|
recordKeylessMoment
|
|
5
|
-
} from "../chunk-
|
|
5
|
+
} from "../chunk-2R63XKLG.js";
|
|
6
6
|
import {
|
|
7
7
|
KILL_REASON,
|
|
8
8
|
denyReasonFrom,
|
|
9
9
|
isDeferAnswer,
|
|
10
10
|
resolveGate
|
|
11
|
-
} from "../chunk-
|
|
11
|
+
} from "../chunk-FFT7L2VE.js";
|
|
12
12
|
import {
|
|
13
13
|
CODEX_AGENT,
|
|
14
14
|
DEFAULT_SESSION,
|
|
@@ -39,17 +39,17 @@ import {
|
|
|
39
39
|
toPolicyLookup,
|
|
40
40
|
toPolicyLookups,
|
|
41
41
|
waitForAnswer
|
|
42
|
-
} from "../chunk-
|
|
42
|
+
} from "../chunk-C4SQY777.js";
|
|
43
43
|
import "../chunk-BSZYIAZL.js";
|
|
44
44
|
import "../chunk-SAF6HGAA.js";
|
|
45
|
-
import "../chunk-
|
|
45
|
+
import "../chunk-BT7NTTIW.js";
|
|
46
46
|
import "../chunk-7QLSKOSU.js";
|
|
47
47
|
import {
|
|
48
48
|
DECISION_LINE_MAX,
|
|
49
49
|
effectiveWaitSeconds,
|
|
50
50
|
hookWaitClamped,
|
|
51
51
|
hookWaitDeadline
|
|
52
|
-
} from "../chunk-
|
|
52
|
+
} from "../chunk-QA5HP7CR.js";
|
|
53
53
|
import {
|
|
54
54
|
getMachineId
|
|
55
55
|
} from "../chunk-RN3NOEJF.js";
|
|
@@ -142,7 +142,11 @@ var pushQuestion = async (apiKey, input, lookup, waitSeconds, mode) => {
|
|
|
142
142
|
intent: readLastPrompt(input.session_id || DEFAULT_SESSION),
|
|
143
143
|
action: description.slice(0, DECISION_LINE_MAX),
|
|
144
144
|
blocker: deriveBlocker(mode),
|
|
145
|
-
actionBody: deriveActionBody(input.tool_name ?? "", input.tool_input ?? {})
|
|
145
|
+
actionBody: deriveActionBody(input.tool_name ?? "", input.tool_input ?? {}),
|
|
146
|
+
// Codex has always sent this; it is what claimNotify and markApproved already
|
|
147
|
+
// key on locally. Passing it through lets the server collapse a retried create
|
|
148
|
+
// the same way, instead of putting the same approval on the phone twice.
|
|
149
|
+
toolUseId: input.tool_use_id
|
|
146
150
|
});
|
|
147
151
|
if (result.suppressed || result.noDevices) {
|
|
148
152
|
return {
|
|
@@ -3,12 +3,12 @@ import {
|
|
|
3
3
|
askUser,
|
|
4
4
|
reportEvent,
|
|
5
5
|
waitForAnswer
|
|
6
|
-
} from "../chunk-
|
|
6
|
+
} from "../chunk-C4SQY777.js";
|
|
7
7
|
import "../chunk-BSZYIAZL.js";
|
|
8
8
|
import "../chunk-SAF6HGAA.js";
|
|
9
|
-
import "../chunk-
|
|
9
|
+
import "../chunk-BT7NTTIW.js";
|
|
10
10
|
import "../chunk-7QLSKOSU.js";
|
|
11
|
-
import "../chunk-
|
|
11
|
+
import "../chunk-QA5HP7CR.js";
|
|
12
12
|
import {
|
|
13
13
|
getMachineId
|
|
14
14
|
} from "../chunk-RN3NOEJF.js";
|
|
@@ -3,20 +3,20 @@ import {
|
|
|
3
3
|
confirmAppConnection,
|
|
4
4
|
connectDevice,
|
|
5
5
|
printConnectInstructions
|
|
6
|
-
} from "../chunk-
|
|
6
|
+
} from "../chunk-R3AEWBAZ.js";
|
|
7
7
|
import "../chunk-3EGEA4KH.js";
|
|
8
8
|
import {
|
|
9
9
|
printKeyCheck
|
|
10
|
-
} from "../chunk-
|
|
10
|
+
} from "../chunk-3JDIGKPV.js";
|
|
11
11
|
import {
|
|
12
12
|
checkApiKey
|
|
13
|
-
} from "../chunk-
|
|
13
|
+
} from "../chunk-CXGJTN74.js";
|
|
14
14
|
import {
|
|
15
15
|
createIo
|
|
16
|
-
} from "../chunk-
|
|
16
|
+
} from "../chunk-5RUIFDTP.js";
|
|
17
17
|
import {
|
|
18
18
|
readKeySource
|
|
19
|
-
} from "../chunk-
|
|
19
|
+
} from "../chunk-RZP3Z2WR.js";
|
|
20
20
|
import "../chunk-6MTNS63X.js";
|
|
21
21
|
import {
|
|
22
22
|
parseFlags
|
|
@@ -24,11 +24,11 @@ import {
|
|
|
24
24
|
import "../chunk-BC3VCZ3E.js";
|
|
25
25
|
import "../chunk-BSZYIAZL.js";
|
|
26
26
|
import "../chunk-SAF6HGAA.js";
|
|
27
|
-
import "../chunk-
|
|
27
|
+
import "../chunk-BT7NTTIW.js";
|
|
28
28
|
import {
|
|
29
29
|
UsageError
|
|
30
30
|
} from "../chunk-7QLSKOSU.js";
|
|
31
|
-
import "../chunk-
|
|
31
|
+
import "../chunk-QA5HP7CR.js";
|
|
32
32
|
import {
|
|
33
33
|
exitOnHelpFlag
|
|
34
34
|
} from "../chunk-RRZZ7TFJ.js";
|
|
@@ -6,7 +6,7 @@ import {
|
|
|
6
6
|
claudeWired,
|
|
7
7
|
codexWired,
|
|
8
8
|
geminiWired
|
|
9
|
-
} from "../chunk-
|
|
9
|
+
} from "../chunk-V6MCBCUC.js";
|
|
10
10
|
import {
|
|
11
11
|
agentProbes,
|
|
12
12
|
detectAgent,
|
|
@@ -15,12 +15,12 @@ import {
|
|
|
15
15
|
isDetected,
|
|
16
16
|
isPluginRegistered,
|
|
17
17
|
vscodeSettingsTargets
|
|
18
|
-
} from "../chunk-
|
|
18
|
+
} from "../chunk-HKKERYZP.js";
|
|
19
19
|
import {
|
|
20
20
|
GEMINI_HOOK_BINARY,
|
|
21
21
|
hasGeminiHooks,
|
|
22
22
|
missingGeminiHookEvents
|
|
23
|
-
} from "../chunk-
|
|
23
|
+
} from "../chunk-DMKSHZKF.js";
|
|
24
24
|
import {
|
|
25
25
|
claudeJson,
|
|
26
26
|
claudeSettings,
|
|
@@ -39,29 +39,29 @@ import {
|
|
|
39
39
|
readCodexMcpAuth,
|
|
40
40
|
untrustedCodexHookEvents,
|
|
41
41
|
vscodePluginDir
|
|
42
|
-
} from "../chunk-
|
|
42
|
+
} from "../chunk-O55DONTG.js";
|
|
43
43
|
import {
|
|
44
44
|
readLedgerSummary
|
|
45
|
-
} from "../chunk-
|
|
45
|
+
} from "../chunk-2R63XKLG.js";
|
|
46
46
|
import {
|
|
47
47
|
describeReach,
|
|
48
48
|
describeRoundTrip,
|
|
49
49
|
fetchChannels,
|
|
50
50
|
reachVerdict,
|
|
51
51
|
verifyRoundTrip
|
|
52
|
-
} from "../chunk-
|
|
52
|
+
} from "../chunk-R3AEWBAZ.js";
|
|
53
53
|
import "../chunk-3EGEA4KH.js";
|
|
54
54
|
import {
|
|
55
55
|
checkApiKey,
|
|
56
56
|
describeKeyCheck
|
|
57
|
-
} from "../chunk-
|
|
57
|
+
} from "../chunk-CXGJTN74.js";
|
|
58
58
|
import {
|
|
59
59
|
createIo
|
|
60
|
-
} from "../chunk-
|
|
60
|
+
} from "../chunk-5RUIFDTP.js";
|
|
61
61
|
import {
|
|
62
62
|
keyPrefix,
|
|
63
63
|
readKeySource
|
|
64
|
-
} from "../chunk-
|
|
64
|
+
} from "../chunk-RZP3Z2WR.js";
|
|
65
65
|
import "../chunk-6MTNS63X.js";
|
|
66
66
|
import {
|
|
67
67
|
parseFlags
|
|
@@ -72,11 +72,11 @@ import {
|
|
|
72
72
|
sendMcpRequest
|
|
73
73
|
} from "../chunk-BSZYIAZL.js";
|
|
74
74
|
import "../chunk-SAF6HGAA.js";
|
|
75
|
-
import "../chunk-
|
|
75
|
+
import "../chunk-BT7NTTIW.js";
|
|
76
76
|
import {
|
|
77
77
|
UsageError
|
|
78
78
|
} from "../chunk-7QLSKOSU.js";
|
|
79
|
-
import "../chunk-
|
|
79
|
+
import "../chunk-QA5HP7CR.js";
|
|
80
80
|
import {
|
|
81
81
|
execNpm
|
|
82
82
|
} from "../chunk-MUEW424A.js";
|
|
@@ -2,13 +2,13 @@
|
|
|
2
2
|
import {
|
|
3
3
|
isGatingMoment,
|
|
4
4
|
recordKeylessMoment
|
|
5
|
-
} from "../chunk-
|
|
5
|
+
} from "../chunk-2R63XKLG.js";
|
|
6
6
|
import {
|
|
7
7
|
KILL_REASON,
|
|
8
8
|
denyReasonFrom,
|
|
9
9
|
isDeferAnswer,
|
|
10
10
|
resolveGate
|
|
11
|
-
} from "../chunk-
|
|
11
|
+
} from "../chunk-FFT7L2VE.js";
|
|
12
12
|
import {
|
|
13
13
|
DEFAULT_SESSION,
|
|
14
14
|
askUser,
|
|
@@ -30,17 +30,17 @@ import {
|
|
|
30
30
|
scopePathFor,
|
|
31
31
|
sendNotification,
|
|
32
32
|
waitForAnswer
|
|
33
|
-
} from "../chunk-
|
|
33
|
+
} from "../chunk-C4SQY777.js";
|
|
34
34
|
import "../chunk-BSZYIAZL.js";
|
|
35
35
|
import "../chunk-SAF6HGAA.js";
|
|
36
|
-
import "../chunk-
|
|
36
|
+
import "../chunk-BT7NTTIW.js";
|
|
37
37
|
import "../chunk-7QLSKOSU.js";
|
|
38
38
|
import {
|
|
39
39
|
DECISION_LINE_MAX,
|
|
40
40
|
effectiveWaitSeconds,
|
|
41
41
|
hookWaitClamped,
|
|
42
42
|
hookWaitDeadline
|
|
43
|
-
} from "../chunk-
|
|
43
|
+
} from "../chunk-QA5HP7CR.js";
|
|
44
44
|
import {
|
|
45
45
|
getMachineId
|
|
46
46
|
} from "../chunk-RN3NOEJF.js";
|
package/dist/bin/pushary-hook.js
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
handlePreToolUse
|
|
4
|
-
} from "../chunk-
|
|
5
|
-
import "../chunk-
|
|
6
|
-
import "../chunk-
|
|
7
|
-
import "../chunk-
|
|
8
|
-
import "../chunk-
|
|
4
|
+
} from "../chunk-E7YX7CTM.js";
|
|
5
|
+
import "../chunk-U752S5RE.js";
|
|
6
|
+
import "../chunk-2R63XKLG.js";
|
|
7
|
+
import "../chunk-FFT7L2VE.js";
|
|
8
|
+
import "../chunk-C4SQY777.js";
|
|
9
9
|
import "../chunk-BSZYIAZL.js";
|
|
10
10
|
import "../chunk-SAF6HGAA.js";
|
|
11
|
-
import "../chunk-
|
|
11
|
+
import "../chunk-BT7NTTIW.js";
|
|
12
12
|
import "../chunk-7QLSKOSU.js";
|
|
13
|
-
import "../chunk-
|
|
13
|
+
import "../chunk-QA5HP7CR.js";
|
|
14
14
|
import "../chunk-RN3NOEJF.js";
|
|
15
15
|
import {
|
|
16
16
|
exitOnHelpFlag
|
|
@@ -6,27 +6,27 @@ import "../chunk-3EGEA4KH.js";
|
|
|
6
6
|
import {
|
|
7
7
|
checkApiKey,
|
|
8
8
|
describeKeyCheck
|
|
9
|
-
} from "../chunk-
|
|
9
|
+
} from "../chunk-CXGJTN74.js";
|
|
10
10
|
import {
|
|
11
11
|
createIo
|
|
12
|
-
} from "../chunk-
|
|
12
|
+
} from "../chunk-5RUIFDTP.js";
|
|
13
13
|
import {
|
|
14
14
|
readKeySource,
|
|
15
15
|
writeKey
|
|
16
|
-
} from "../chunk-
|
|
16
|
+
} from "../chunk-RZP3Z2WR.js";
|
|
17
17
|
import "../chunk-6MTNS63X.js";
|
|
18
18
|
import {
|
|
19
19
|
parseFlags
|
|
20
20
|
} from "../chunk-GMXKITVA.js";
|
|
21
21
|
import "../chunk-BC3VCZ3E.js";
|
|
22
22
|
import "../chunk-SAF6HGAA.js";
|
|
23
|
-
import "../chunk-
|
|
23
|
+
import "../chunk-BT7NTTIW.js";
|
|
24
24
|
import {
|
|
25
25
|
UsageError
|
|
26
26
|
} from "../chunk-7QLSKOSU.js";
|
|
27
27
|
import {
|
|
28
28
|
isValidApiKey
|
|
29
|
-
} from "../chunk-
|
|
29
|
+
} from "../chunk-QA5HP7CR.js";
|
|
30
30
|
import {
|
|
31
31
|
exitOnHelpFlag
|
|
32
32
|
} from "../chunk-RRZZ7TFJ.js";
|
|
@@ -4,24 +4,24 @@ import {
|
|
|
4
4
|
codexConfigToml,
|
|
5
5
|
cursorUserMcp,
|
|
6
6
|
geminiSettings
|
|
7
|
-
} from "../chunk-
|
|
7
|
+
} from "../chunk-O55DONTG.js";
|
|
8
8
|
import {
|
|
9
9
|
createIo
|
|
10
|
-
} from "../chunk-
|
|
10
|
+
} from "../chunk-5RUIFDTP.js";
|
|
11
11
|
import {
|
|
12
12
|
clearKey,
|
|
13
13
|
readKeySource
|
|
14
|
-
} from "../chunk-
|
|
14
|
+
} from "../chunk-RZP3Z2WR.js";
|
|
15
15
|
import "../chunk-6MTNS63X.js";
|
|
16
16
|
import {
|
|
17
17
|
parseFlags
|
|
18
18
|
} from "../chunk-GMXKITVA.js";
|
|
19
19
|
import "../chunk-BC3VCZ3E.js";
|
|
20
|
-
import "../chunk-
|
|
20
|
+
import "../chunk-BT7NTTIW.js";
|
|
21
21
|
import {
|
|
22
22
|
UsageError
|
|
23
23
|
} from "../chunk-7QLSKOSU.js";
|
|
24
|
-
import "../chunk-
|
|
24
|
+
import "../chunk-QA5HP7CR.js";
|
|
25
25
|
import {
|
|
26
26
|
exitOnHelpFlag
|
|
27
27
|
} from "../chunk-RRZZ7TFJ.js";
|
package/dist/bin/pushary-mode.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
exitOnFailedResponse
|
|
4
|
-
} from "../chunk-
|
|
5
|
-
import "../chunk-
|
|
4
|
+
} from "../chunk-3JDIGKPV.js";
|
|
5
|
+
import "../chunk-CXGJTN74.js";
|
|
6
6
|
import {
|
|
7
7
|
createIo
|
|
8
|
-
} from "../chunk-
|
|
8
|
+
} from "../chunk-5RUIFDTP.js";
|
|
9
9
|
import {
|
|
10
10
|
rejectUnknownFlags
|
|
11
11
|
} from "../chunk-GMXKITVA.js";
|
|
@@ -13,7 +13,7 @@ import "../chunk-SAF6HGAA.js";
|
|
|
13
13
|
import {
|
|
14
14
|
UsageError
|
|
15
15
|
} from "../chunk-7QLSKOSU.js";
|
|
16
|
-
import "../chunk-
|
|
16
|
+
import "../chunk-QA5HP7CR.js";
|
|
17
17
|
import {
|
|
18
18
|
exitOnHelpFlag
|
|
19
19
|
} from "../chunk-RRZZ7TFJ.js";
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
handleNotification
|
|
4
|
-
} from "../chunk-
|
|
4
|
+
} from "../chunk-C4SQY777.js";
|
|
5
5
|
import "../chunk-BSZYIAZL.js";
|
|
6
6
|
import "../chunk-SAF6HGAA.js";
|
|
7
|
-
import "../chunk-
|
|
7
|
+
import "../chunk-BT7NTTIW.js";
|
|
8
8
|
import "../chunk-7QLSKOSU.js";
|
|
9
|
-
import "../chunk-
|
|
9
|
+
import "../chunk-QA5HP7CR.js";
|
|
10
10
|
import "../chunk-RN3NOEJF.js";
|
|
11
11
|
import "../chunk-2UMNXADU.js";
|
|
12
12
|
import "../chunk-KZERVKTD.js";
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
handlePermissionDenied
|
|
4
|
-
} from "../chunk-
|
|
5
|
-
import "../chunk-
|
|
6
|
-
import "../chunk-
|
|
7
|
-
import "../chunk-
|
|
8
|
-
import "../chunk-
|
|
4
|
+
} from "../chunk-E7YX7CTM.js";
|
|
5
|
+
import "../chunk-U752S5RE.js";
|
|
6
|
+
import "../chunk-2R63XKLG.js";
|
|
7
|
+
import "../chunk-FFT7L2VE.js";
|
|
8
|
+
import "../chunk-C4SQY777.js";
|
|
9
9
|
import "../chunk-BSZYIAZL.js";
|
|
10
10
|
import "../chunk-SAF6HGAA.js";
|
|
11
|
-
import "../chunk-
|
|
11
|
+
import "../chunk-BT7NTTIW.js";
|
|
12
12
|
import "../chunk-7QLSKOSU.js";
|
|
13
|
-
import "../chunk-
|
|
13
|
+
import "../chunk-QA5HP7CR.js";
|
|
14
14
|
import "../chunk-RN3NOEJF.js";
|
|
15
15
|
import "../chunk-2UMNXADU.js";
|
|
16
16
|
import "../chunk-KZERVKTD.js";
|