@pushary/agent-hooks 1.7.2 → 1.7.3
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 +4 -0
- package/data/cursor-plugin/CHANGELOG.md +1 -0
- package/data/cursor-plugin/scripts/pushary-gate.mjs +3 -3
- package/data/cursor-plugin/scripts/pushary-gate.test.mjs +23 -1
- package/data/vscode-plugin/CHANGELOG.md +1 -0
- package/data/vscode-plugin/scripts/pushary-gate.mjs +3 -3
- package/dist/bin/pushary-bell-hook.js +23 -23
- package/dist/bin/pushary-bell.js +9 -9
- package/dist/bin/pushary-claude.js +28 -28
- package/dist/bin/pushary-clean.js +28 -28
- package/dist/bin/pushary-codex-bridge.js +18 -18
- package/dist/bin/pushary-codex-hook.js +31 -31
- package/dist/bin/pushary-codex.js +13 -13
- package/dist/bin/pushary-connect.js +13 -13
- package/dist/bin/pushary-cowork.js +5 -5
- package/dist/bin/pushary-daemon.js +27 -27
- package/dist/bin/pushary-disconnect.js +18 -18
- package/dist/bin/pushary-doctor.js +31 -31
- package/dist/bin/pushary-elicitation-hook.js +25 -25
- package/dist/bin/pushary-gemini-bridge.js +12 -12
- package/dist/bin/pushary-gemini-hook.js +28 -28
- package/dist/bin/pushary-hook.js +32 -32
- package/dist/bin/pushary-login.js +12 -12
- package/dist/bin/pushary-logout.js +7 -7
- package/dist/bin/pushary-mcp.js +9 -9
- package/dist/bin/pushary-mode.js +9 -9
- package/dist/bin/pushary-notification-hook.js +28 -28
- package/dist/bin/pushary-opencode-hook.js +27 -27
- package/dist/bin/pushary-permission-denied-hook.js +32 -32
- package/dist/bin/pushary-permission-hook.js +31 -31
- package/dist/bin/pushary-post-hook.js +28 -28
- package/dist/bin/pushary-prompt-hook.js +28 -28
- package/dist/bin/pushary-session-end-hook.js +28 -28
- package/dist/bin/pushary-session-start-hook.js +32 -32
- package/dist/bin/pushary-setup.js +38 -38
- package/dist/bin/pushary-stats.js +5 -5
- package/dist/bin/pushary-status.js +15 -15
- package/dist/bin/pushary-stop-hook.js +28 -28
- package/dist/bin/pushary-stopfailure-hook.js +28 -28
- package/dist/bin/pushary-suggestions.js +4 -4
- package/dist/bin/pushary-transcript-register.js +19 -19
- package/dist/bin/pushary-transcripts.js +7 -7
- package/dist/bin/pushary-upgrade.js +20 -20
- package/dist/bin/pushary-wait.js +9 -9
- package/dist/bin/pushary.js +6 -6
- package/dist/{chunk-JMSB6CJT.js → chunk-3EUBQARL.js} +1 -1
- package/dist/{chunk-IZVAVXHQ.js → chunk-5GB22QYL.js} +3 -3
- package/dist/{chunk-6NHXKTQU.js → chunk-5S2VBSJI.js} +2 -2
- package/dist/{chunk-LI3C2IQY.js → chunk-62CVUUNU.js} +2 -2
- package/dist/{chunk-UUTWHVSV.js → chunk-62VT3BPH.js} +9 -9
- package/dist/{chunk-MY3UZO5U.js → chunk-6JQFIHZC.js} +2 -2
- package/dist/{chunk-TVJYGZXB.js → chunk-7OA34PNW.js} +2 -2
- package/dist/{chunk-3RO2UWJQ.js → chunk-7RUJKCR4.js} +2 -2
- package/dist/{chunk-M2JGLFFS.js → chunk-AWVNAYGD.js} +1 -1
- package/dist/{chunk-I7B2DNVU.js → chunk-BGBLLHZ4.js} +1 -1
- package/dist/{chunk-WXIVUIXA.js → chunk-BIH2Y2HP.js} +2 -2
- package/dist/{chunk-VSGKQ3HI.js → chunk-D6OODZCM.js} +2 -2
- package/dist/{chunk-UFNBKYWT.js → chunk-DUQO4C4I.js} +3 -3
- package/dist/{chunk-3NSRL5E7.js → chunk-EADXTSHE.js} +2 -2
- package/dist/{chunk-VQDJ6KB3.js → chunk-EEEJ2JIL.js} +3 -3
- package/dist/{chunk-RLRDPZG4.js → chunk-EUGNVLMG.js} +1 -1
- package/dist/{chunk-KAJT6HPI.js → chunk-G3OMOTJ4.js} +3 -3
- package/dist/{chunk-WWTLAZQA.js → chunk-G4GLCLKK.js} +41 -23
- package/dist/{chunk-AWZNDM3B.js → chunk-G62JL2NT.js} +1 -1
- package/dist/{chunk-OJRB5QKN.js → chunk-G6RRVJOG.js} +6 -6
- package/dist/{chunk-U3MS6D5X.js → chunk-IPSRMLCJ.js} +1 -1
- package/dist/{chunk-F6BMJOSW.js → chunk-IRZG3HEU.js} +1 -1
- package/dist/{chunk-ZUKZJQGR.js → chunk-IWJKSIB4.js} +1 -1
- package/dist/{chunk-SKEW3TQX.js → chunk-KEL5MXRL.js} +1 -1
- package/dist/{chunk-YU4222G2.js → chunk-KJXUIPS4.js} +2 -2
- package/dist/{chunk-PWNQGITG.js → chunk-LHC45YUC.js} +1 -1
- package/dist/{chunk-Q7CDBJXU.js → chunk-LPNJLKBQ.js} +1 -1
- package/dist/{chunk-A6WQF7FQ.js → chunk-MIXWMA73.js} +3 -3
- package/dist/{chunk-NYBZJ44G.js → chunk-MZBRL5H5.js} +1 -1
- package/dist/{chunk-6QZK4O36.js → chunk-N5MZH5A6.js} +4 -4
- package/dist/{chunk-KLXYMPTM.js → chunk-NOI3XTCY.js} +1 -1
- package/dist/{chunk-SKMWPXGV.js → chunk-O3JDWNLU.js} +4 -4
- package/dist/{chunk-ZMWX5SDA.js → chunk-OTNOANMX.js} +8 -8
- package/dist/{chunk-HOIGXMI7.js → chunk-OVC5QXN5.js} +1 -1
- package/dist/{chunk-R7ZETVNR.js → chunk-P2VIBGXA.js} +3 -3
- package/dist/{chunk-OXEF6JHD.js → chunk-PRNFSORD.js} +1 -1
- package/dist/{chunk-SJN64NJX.js → chunk-R6OYCUNK.js} +1 -1
- package/dist/{chunk-5GIBNUBD.js → chunk-RLW3JWDY.js} +2 -2
- package/dist/{chunk-E3PLF7YB.js → chunk-TCVMK6GI.js} +4 -4
- package/dist/{chunk-2B4XCMH6.js → chunk-U6RVDUJ5.js} +8 -8
- package/dist/{chunk-T3PRPFDY.js → chunk-UOQRM7JQ.js} +5 -5
- package/dist/{chunk-D4OGEWLH.js → chunk-VE7TXLR4.js} +3 -3
- package/dist/{chunk-SEIZQZEE.js → chunk-VKVSRCBO.js} +1 -1
- package/dist/{chunk-INR3RVQ3.js → chunk-VYPJHGG6.js} +2 -2
- package/dist/{chunk-YU54LNC6.js → chunk-WGMW7OXW.js} +6 -6
- package/dist/{chunk-QSZ37ROP.js → chunk-WPX67AKT.js} +1 -1
- package/dist/{chunk-L6IF4JOF.js → chunk-WTJM7PSL.js} +3 -3
- package/dist/{chunk-YNJ2H2FD.js → chunk-Y4ZH64UK.js} +2 -2
- package/dist/{chunk-2XOHXZRC.js → chunk-YC27PROF.js} +4 -4
- package/dist/{chunk-YLCSKVQQ.js → chunk-YPUBA2FL.js} +4 -4
- package/dist/{chunk-65RN6ZCO.js → chunk-YYCTF4Q5.js} +1 -1
- package/dist/{chunk-4S7CCOXB.js → chunk-ZKJ34T2F.js} +5 -5
- package/dist/{reapply-D6RSDYCK.js → reapply-PH5T4BGR.js} +9 -9
- package/dist/src/index.js +20 -20
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 1.7.3
|
|
4
|
+
|
|
5
|
+
- **Approval text never hides part of a command.** The value after a credential name is now hidden only up to the first space, quote or piece of shell syntax. 1.7.2 could still hide a command: `eval TOKEN="x; rm -rf ~"` read `eval TOKEN="[redacted]"`, `password= reboot` read `password= [redacted]`, and `rm -rf {password=x,/}` hid the `,/` that also deletes `/`. A private key block is hidden only when it holds nothing but the key. Tokens, keys and quoted values without spaces are hidden as before. A quoted value with spaces now shows what follows its first word, as in `--password='[redacted] pass'`. Logs and error reports still hide the whole value.
|
|
6
|
+
|
|
3
7
|
## 1.7.2
|
|
4
8
|
|
|
5
9
|
- **Approval text shows the whole command again.** A credential name that closes a quoted string, as in `grep -rl "password=" . | xargs rm -f`, made 1.7.1 redact everything after it, so the approval read `grep -rl "password="[redacted]"` and hid the `rm`. The value after a credential name is still redacted, and the rest of the command is shown.
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
## 0.2.3
|
|
4
4
|
|
|
5
|
+
- Approval text never hides part of a command. The value after a credential name is hidden only up to the first space, quote or piece of shell syntax, so `echo "password=" && rm -rf ~` and `eval TOKEN="x; rm -rf ~"` both show the `rm`. A private key block is hidden only when it holds nothing but the key.
|
|
5
6
|
- Updates and Terminal hand an approval back to Cursor promptly. The gate no longer waits for a phone answer that Updates never asks for, and it withdraws the phone question before Cursor decides. An answer that arrives in that moment still counts.
|
|
6
7
|
- A file change that goes back to the agent's own permissions is refused with the reason, because Cursor file hooks cannot show a local approval. Choose Every time for file changes you want to approve from your phone.
|
|
7
8
|
- With no phone or other notification channel connected, a file change is refused with a message that says so. Shell commands and MCP calls still open Cursor's own prompt with "No device connected, approve here."
|
|
@@ -295,7 +295,7 @@ export const describeNetworkFailure = (error, env = process.env) => {
|
|
|
295
295
|
const ACTION_BODY_MAX = 4000
|
|
296
296
|
const ACTION_BODY_TRUNCATION_MARKER = '\n… [truncated]'
|
|
297
297
|
const REDACTION_RULES = [
|
|
298
|
-
[/-----BEGIN[A-Z0-9 ]*PRIVATE KEY-----[\
|
|
298
|
+
[/-----BEGIN[A-Z0-9 ]*PRIVATE KEY-----(?:\r?\n|(?:\\r)?\\n)?(?:(?:Proc-Type|DEK-Info): [A-Za-z0-9,-]+(?:\r?\n|(?:\\r)?\\n))*(?:[A-Za-z0-9+/=\r\n]|\\[rn])*?-----END[A-Z0-9 ]*PRIVATE KEY-----/g, '[redacted key]'],
|
|
299
299
|
[/\bsk-[A-Za-z0-9_-]{16,}\b/g, '[redacted]'],
|
|
300
300
|
[/\b[spr]k_(?:live|test)_[A-Za-z0-9]{8,}\b/g, '[redacted]'],
|
|
301
301
|
[/\bwhsec_[A-Za-z0-9]{16,}\b/g, '[redacted]'],
|
|
@@ -309,8 +309,8 @@ const REDACTION_RULES = [
|
|
|
309
309
|
[/\bxai-[A-Za-z0-9]{16,}\b/g, '[redacted]'],
|
|
310
310
|
[/\beyJ[A-Za-z0-9_-]{8,}\.[A-Za-z0-9_-]{8,}\.[A-Za-z0-9_-]{8,}\b/g, '[redacted]'],
|
|
311
311
|
[/\bbearer\s+[A-Za-z0-9._~+/=-]+/gi, 'bearer [redacted]'],
|
|
312
|
-
[/\bauthorization:\s
|
|
313
|
-
[/((?:secret|token|password|passwd|api[_-]?key|access[_-]?key|client[_-]?secret|private[_-]?key)\
|
|
312
|
+
[/\bauthorization:\s*(?:[A-Za-z0-9_\-./+=:@%^!#]|\\[^\s'"])+/gi, 'authorization: [redacted]'],
|
|
313
|
+
[/((?:secret|token|password|passwd|api[_-]?key|access[_-]?key|client[_-]?secret|private[_-]?key)["']?(?:[ \t]*:[ \t]*|[ \t]+=[ \t]*|=))(?:(")(?:[A-Za-z0-9_\-./+=:@%^!#]|\\[^\s'"])*"|(')[A-Za-z0-9_\-./+=:@%^!#\\]*'|(["']?)(?:[A-Za-z0-9_\-./+=:@%^!#]|\\[^\s'"])+)/gi, '$1$2$3$4[redacted]$2$3'],
|
|
314
314
|
]
|
|
315
315
|
const HIGH_ENTROPY_RULE = [/[A-Za-z0-9+/]{40,}={0,2}/g, '[redacted]']
|
|
316
316
|
export const redactSecrets = (text) => REDACTION_RULES.reduce((acc, [pattern, replacement]) => acc.replace(pattern, replacement), text)
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
|
|
15
15
|
import assert from 'node:assert/strict'
|
|
16
16
|
import { describe, it } from 'node:test'
|
|
17
|
-
import { describeRequest, normalizeRepoRemote } from './pushary-gate.mjs'
|
|
17
|
+
import { describeRequest, normalizeRepoRemote, redactSecrets } from './pushary-gate.mjs'
|
|
18
18
|
|
|
19
19
|
describe('repo identity', () => {
|
|
20
20
|
it('collapses the forms of one remote', () => {
|
|
@@ -113,3 +113,25 @@ describe('what the gate was asked about', () => {
|
|
|
113
113
|
assert.equal(describeRequest({}), null)
|
|
114
114
|
})
|
|
115
115
|
})
|
|
116
|
+
|
|
117
|
+
describe('approval text redaction', () => {
|
|
118
|
+
it('shows a command whole when a credential name only sits next to shell syntax', () => {
|
|
119
|
+
for (const command of [
|
|
120
|
+
'echo "password=" && rm -rf ~ && echo "x"',
|
|
121
|
+
'find / -name "token:" -o -delete -o -name "x"',
|
|
122
|
+
"grep -rl foo'password=' . | xargs rm -f 'important file'",
|
|
123
|
+
'grep "authorization:";rm important-file',
|
|
124
|
+
'echo "-----BEGIN PRIVATE KEY-----" && rm -rf ~ && echo "-----END PRIVATE KEY-----"',
|
|
125
|
+
'password= reboot',
|
|
126
|
+
]) {
|
|
127
|
+
assert.equal(redactSecrets(command), command)
|
|
128
|
+
}
|
|
129
|
+
})
|
|
130
|
+
|
|
131
|
+
it('stops a hidden value at the first space, quote or piece of shell syntax', () => {
|
|
132
|
+
assert.equal(redactSecrets('eval TOKEN="x; rm -rf ~"'), 'eval TOKEN="[redacted]; rm -rf ~"')
|
|
133
|
+
assert.equal(redactSecrets('TOKEN=abc;rm file'), 'TOKEN=[redacted];rm file')
|
|
134
|
+
assert.equal(redactSecrets('rm -rf {password=x,/}'), 'rm -rf {password=[redacted],/}')
|
|
135
|
+
assert.equal(redactSecrets('export API_KEY="abc123" && rm -rf build'), 'export API_KEY="[redacted]" && rm -rf build')
|
|
136
|
+
})
|
|
137
|
+
})
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
## 0.2.3
|
|
4
4
|
|
|
5
|
+
- Approval text never hides part of a command. The value after a credential name is hidden only up to the first space, quote or piece of shell syntax, so `echo "password=" && rm -rf ~` and `eval TOKEN="x; rm -rf ~"` both show the `rm`. A private key block is hidden only when it holds nothing but the key.
|
|
5
6
|
- Updates hands an approval back to VS Code promptly. The gate no longer waits for a phone answer that Updates never asks for, and it withdraws the phone question before VS Code asks. An answer that arrives in that moment still counts.
|
|
6
7
|
- With no phone or other notification channel connected, VS Code's prompt says "No device connected, approve here." instead of naming a delivery mode.
|
|
7
8
|
- Approval questions carry the repository and the tool name the gate judged, so routing and repository rules apply to the question as they did to the gate. A file edit is asked about with its full path, so path rules and routing match it. A path longer than 80 characters falls back to the file type instead of making the question fail.
|
|
@@ -338,7 +338,7 @@ const ACTION_BODY_TRUNCATION_MARKER = '\n… [truncated]'
|
|
|
338
338
|
// scrubbed was the action body. The question and the notification body carried
|
|
339
339
|
// the raw command.
|
|
340
340
|
const REDACTION_RULES = [
|
|
341
|
-
[/-----BEGIN[A-Z0-9 ]*PRIVATE KEY-----[\
|
|
341
|
+
[/-----BEGIN[A-Z0-9 ]*PRIVATE KEY-----(?:\r?\n|(?:\\r)?\\n)?(?:(?:Proc-Type|DEK-Info): [A-Za-z0-9,-]+(?:\r?\n|(?:\\r)?\\n))*(?:[A-Za-z0-9+/=\r\n]|\\[rn])*?-----END[A-Z0-9 ]*PRIVATE KEY-----/g, '[redacted key]'],
|
|
342
342
|
[/\bsk-[A-Za-z0-9_-]{16,}\b/g, '[redacted]'],
|
|
343
343
|
[/\b[spr]k_(?:live|test)_[A-Za-z0-9]{8,}\b/g, '[redacted]'],
|
|
344
344
|
[/\bwhsec_[A-Za-z0-9]{16,}\b/g, '[redacted]'],
|
|
@@ -352,8 +352,8 @@ const REDACTION_RULES = [
|
|
|
352
352
|
[/\bxai-[A-Za-z0-9]{16,}\b/g, '[redacted]'],
|
|
353
353
|
[/\beyJ[A-Za-z0-9_-]{8,}\.[A-Za-z0-9_-]{8,}\.[A-Za-z0-9_-]{8,}\b/g, '[redacted]'],
|
|
354
354
|
[/\bbearer\s+[A-Za-z0-9._~+/=-]+/gi, 'bearer [redacted]'],
|
|
355
|
-
[/\bauthorization:\s
|
|
356
|
-
[/((?:secret|token|password|passwd|api[_-]?key|access[_-]?key|client[_-]?secret|private[_-]?key)\
|
|
355
|
+
[/\bauthorization:\s*(?:[A-Za-z0-9_\-./+=:@%^!#]|\\[^\s'"])+/gi, 'authorization: [redacted]'],
|
|
356
|
+
[/((?:secret|token|password|passwd|api[_-]?key|access[_-]?key|client[_-]?secret|private[_-]?key)["']?(?:[ \t]*:[ \t]*|[ \t]+=[ \t]*|=))(?:(")(?:[A-Za-z0-9_\-./+=:@%^!#]|\\[^\s'"])*"|(')[A-Za-z0-9_\-./+=:@%^!#\\]*'|(["']?)(?:[A-Za-z0-9_\-./+=:@%^!#]|\\[^\s'"])+)/gi, '$1$2$3$4[redacted]$2$3'],
|
|
357
357
|
]
|
|
358
358
|
const HIGH_ENTROPY_RULE = [/[A-Za-z0-9+/]{40,}={0,2}/g, '[redacted]']
|
|
359
359
|
const redactSecrets = (text) => REDACTION_RULES.reduce((acc, [pattern, replacement]) => acc.replace(pattern, replacement), text)
|
|
@@ -1,38 +1,38 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
handleBell
|
|
4
|
-
} from "../chunk-
|
|
4
|
+
} from "../chunk-IWJKSIB4.js";
|
|
5
5
|
import {
|
|
6
6
|
readHookInput
|
|
7
|
-
} from "../chunk-
|
|
8
|
-
import "../chunk-
|
|
7
|
+
} from "../chunk-7RUJKCR4.js";
|
|
8
|
+
import "../chunk-OTNOANMX.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-TCVMK6GI.js";
|
|
11
|
+
import "../chunk-BGBLLHZ4.js";
|
|
12
|
+
import "../chunk-3EUBQARL.js";
|
|
13
|
+
import "../chunk-WTJM7PSL.js";
|
|
14
|
+
import "../chunk-ZKJ34T2F.js";
|
|
15
|
+
import "../chunk-MIXWMA73.js";
|
|
16
|
+
import "../chunk-NOI3XTCY.js";
|
|
17
|
+
import "../chunk-P2VIBGXA.js";
|
|
18
|
+
import "../chunk-WPX67AKT.js";
|
|
19
|
+
import "../chunk-LPNJLKBQ.js";
|
|
20
20
|
import "../chunk-XHKBHWLX.js";
|
|
21
|
-
import "../chunk-
|
|
22
|
-
import "../chunk-
|
|
21
|
+
import "../chunk-EUGNVLMG.js";
|
|
22
|
+
import "../chunk-N5MZH5A6.js";
|
|
23
23
|
import "../chunk-POFBE6ZY.js";
|
|
24
24
|
import "../chunk-GMXKITVA.js";
|
|
25
|
-
import "../chunk-
|
|
26
|
-
import "../chunk-
|
|
27
|
-
import "../chunk-
|
|
25
|
+
import "../chunk-D6OODZCM.js";
|
|
26
|
+
import "../chunk-DUQO4C4I.js";
|
|
27
|
+
import "../chunk-OVC5QXN5.js";
|
|
28
28
|
import "../chunk-7QLSKOSU.js";
|
|
29
29
|
import "../chunk-KZERVKTD.js";
|
|
30
|
-
import "../chunk-
|
|
31
|
-
import "../chunk-
|
|
30
|
+
import "../chunk-62CVUUNU.js";
|
|
31
|
+
import "../chunk-MZBRL5H5.js";
|
|
32
32
|
import "../chunk-T7E75EKA.js";
|
|
33
|
-
import "../chunk-
|
|
34
|
-
import "../chunk-
|
|
35
|
-
import "../chunk-
|
|
33
|
+
import "../chunk-R6OYCUNK.js";
|
|
34
|
+
import "../chunk-YYCTF4Q5.js";
|
|
35
|
+
import "../chunk-G4GLCLKK.js";
|
|
36
36
|
|
|
37
37
|
// bin/pushary-bell-hook.ts
|
|
38
38
|
var main = async () => {
|
package/dist/bin/pushary-bell.js
CHANGED
|
@@ -5,37 +5,37 @@ import {
|
|
|
5
5
|
liveAgentCount,
|
|
6
6
|
ring,
|
|
7
7
|
upgradeThreshold
|
|
8
|
-
} from "../chunk-
|
|
8
|
+
} from "../chunk-IWJKSIB4.js";
|
|
9
9
|
import {
|
|
10
10
|
addBellHooks,
|
|
11
11
|
bellInstalled,
|
|
12
12
|
removeBellHooks
|
|
13
|
-
} from "../chunk-
|
|
13
|
+
} from "../chunk-NOI3XTCY.js";
|
|
14
14
|
import {
|
|
15
15
|
createIo
|
|
16
16
|
} from "../chunk-U4TMAANR.js";
|
|
17
17
|
import {
|
|
18
18
|
exitOnHelpFlag
|
|
19
|
-
} from "../chunk-
|
|
19
|
+
} from "../chunk-5S2VBSJI.js";
|
|
20
20
|
import {
|
|
21
21
|
parseFlags
|
|
22
22
|
} from "../chunk-GMXKITVA.js";
|
|
23
|
-
import "../chunk-
|
|
23
|
+
import "../chunk-D6OODZCM.js";
|
|
24
24
|
import "../chunk-7QLSKOSU.js";
|
|
25
25
|
import {
|
|
26
26
|
EXIT
|
|
27
27
|
} from "../chunk-KZERVKTD.js";
|
|
28
|
-
import "../chunk-
|
|
28
|
+
import "../chunk-62CVUUNU.js";
|
|
29
29
|
import {
|
|
30
30
|
claudeSettings
|
|
31
|
-
} from "../chunk-
|
|
31
|
+
} from "../chunk-MZBRL5H5.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-
|
|
36
|
+
import "../chunk-R6OYCUNK.js";
|
|
37
|
+
import "../chunk-YYCTF4Q5.js";
|
|
38
|
+
import "../chunk-G4GLCLKK.js";
|
|
39
39
|
|
|
40
40
|
// bin/pushary-bell.ts
|
|
41
41
|
exitOnHelpFlag("bell");
|
|
@@ -8,7 +8,7 @@ import {
|
|
|
8
8
|
describeIdleWindow,
|
|
9
9
|
startProcessOwnership,
|
|
10
10
|
withSpawnProcessOwnership
|
|
11
|
-
} from "../chunk-
|
|
11
|
+
} from "../chunk-LHC45YUC.js";
|
|
12
12
|
import {
|
|
13
13
|
announceSubscriptionRequired,
|
|
14
14
|
isDeferAnswer
|
|
@@ -18,24 +18,24 @@ import {
|
|
|
18
18
|
loadSessionKey,
|
|
19
19
|
registerTranscript,
|
|
20
20
|
registeredTranscriptEnabled
|
|
21
|
-
} from "../chunk-
|
|
21
|
+
} from "../chunk-OTNOANMX.js";
|
|
22
22
|
import "../chunk-SGZJ5LYH.js";
|
|
23
|
-
import "../chunk-
|
|
24
|
-
import "../chunk-
|
|
25
|
-
import "../chunk-
|
|
26
|
-
import "../chunk-
|
|
23
|
+
import "../chunk-TCVMK6GI.js";
|
|
24
|
+
import "../chunk-BGBLLHZ4.js";
|
|
25
|
+
import "../chunk-3EUBQARL.js";
|
|
26
|
+
import "../chunk-WTJM7PSL.js";
|
|
27
27
|
import {
|
|
28
28
|
ensureDaemonRunning
|
|
29
|
-
} from "../chunk-
|
|
30
|
-
import "../chunk-
|
|
31
|
-
import "../chunk-
|
|
29
|
+
} from "../chunk-ZKJ34T2F.js";
|
|
30
|
+
import "../chunk-MIXWMA73.js";
|
|
31
|
+
import "../chunk-NOI3XTCY.js";
|
|
32
32
|
import {
|
|
33
33
|
encryptRecord
|
|
34
|
-
} from "../chunk-
|
|
35
|
-
import "../chunk-
|
|
34
|
+
} from "../chunk-P2VIBGXA.js";
|
|
35
|
+
import "../chunk-WPX67AKT.js";
|
|
36
36
|
import {
|
|
37
37
|
transcriptsEnabled
|
|
38
|
-
} from "../chunk-
|
|
38
|
+
} from "../chunk-LPNJLKBQ.js";
|
|
39
39
|
import {
|
|
40
40
|
needsShell,
|
|
41
41
|
spawnClaude
|
|
@@ -50,7 +50,7 @@ import {
|
|
|
50
50
|
repoKeyFor,
|
|
51
51
|
reportEvent,
|
|
52
52
|
scopePathFor
|
|
53
|
-
} from "../chunk-
|
|
53
|
+
} from "../chunk-U6RVDUJ5.js";
|
|
54
54
|
import {
|
|
55
55
|
DEFAULT_SESSION,
|
|
56
56
|
markPendingCommandDelivered,
|
|
@@ -60,7 +60,7 @@ import {
|
|
|
60
60
|
removePendingCommand,
|
|
61
61
|
savePendingCommand
|
|
62
62
|
} from "../chunk-N6IOSZOE.js";
|
|
63
|
-
import "../chunk-
|
|
63
|
+
import "../chunk-EUGNVLMG.js";
|
|
64
64
|
import {
|
|
65
65
|
DECISION_STOP_REASON,
|
|
66
66
|
UNVERIFIABLE_APPROVAL_REASON,
|
|
@@ -71,36 +71,36 @@ import {
|
|
|
71
71
|
nextLongPollMs,
|
|
72
72
|
waitForAnswer,
|
|
73
73
|
withdrawQuestion
|
|
74
|
-
} from "../chunk-
|
|
75
|
-
import "../chunk-
|
|
74
|
+
} from "../chunk-YC27PROF.js";
|
|
75
|
+
import "../chunk-N5MZH5A6.js";
|
|
76
76
|
import "../chunk-POFBE6ZY.js";
|
|
77
77
|
import "../chunk-GMXKITVA.js";
|
|
78
|
-
import "../chunk-
|
|
78
|
+
import "../chunk-D6OODZCM.js";
|
|
79
79
|
import {
|
|
80
80
|
SubscriptionRequiredError
|
|
81
|
-
} from "../chunk-
|
|
82
|
-
import "../chunk-
|
|
83
|
-
import "../chunk-
|
|
81
|
+
} from "../chunk-VE7TXLR4.js";
|
|
82
|
+
import "../chunk-EEEJ2JIL.js";
|
|
83
|
+
import "../chunk-DUQO4C4I.js";
|
|
84
84
|
import {
|
|
85
85
|
getMachineId
|
|
86
|
-
} from "../chunk-
|
|
86
|
+
} from "../chunk-OVC5QXN5.js";
|
|
87
87
|
import "../chunk-7QLSKOSU.js";
|
|
88
88
|
import "../chunk-KZERVKTD.js";
|
|
89
|
-
import "../chunk-
|
|
90
|
-
import "../chunk-
|
|
89
|
+
import "../chunk-62CVUUNU.js";
|
|
90
|
+
import "../chunk-MZBRL5H5.js";
|
|
91
91
|
import "../chunk-T7E75EKA.js";
|
|
92
92
|
import {
|
|
93
93
|
getApiKey,
|
|
94
94
|
getBaseUrl
|
|
95
|
-
} from "../chunk-
|
|
95
|
+
} from "../chunk-R6OYCUNK.js";
|
|
96
96
|
import {
|
|
97
97
|
NPX_LATEST_COMMAND
|
|
98
|
-
} from "../chunk-
|
|
98
|
+
} from "../chunk-YYCTF4Q5.js";
|
|
99
99
|
import {
|
|
100
100
|
KILL_REASON,
|
|
101
|
-
|
|
101
|
+
redactSecretsFromContent,
|
|
102
102
|
resolveGate
|
|
103
|
-
} from "../chunk-
|
|
103
|
+
} from "../chunk-G4GLCLKK.js";
|
|
104
104
|
|
|
105
105
|
// src/wrapper/localPassthrough.ts
|
|
106
106
|
var SIGNAL_NUMBERS = {
|
|
@@ -161,7 +161,7 @@ var redactDraft = (text, complete = false) => {
|
|
|
161
161
|
const close = text.indexOf(match[1], match.index + match[0].length);
|
|
162
162
|
if (close < 0 || close >= end) end = Math.min(end, match.index);
|
|
163
163
|
}
|
|
164
|
-
return
|
|
164
|
+
return redactSecretsFromContent(text.slice(0, end));
|
|
165
165
|
};
|
|
166
166
|
var DraftText = class {
|
|
167
167
|
messageId = "";
|
|
@@ -4,7 +4,7 @@ import {
|
|
|
4
4
|
PUSHARY_SKILL_SOURCE,
|
|
5
5
|
createGuards,
|
|
6
6
|
withoutPusharyCursorHooks
|
|
7
|
-
} from "../chunk-
|
|
7
|
+
} from "../chunk-6JQFIHZC.js";
|
|
8
8
|
import {
|
|
9
9
|
FX_PROFILE_REFUSALS,
|
|
10
10
|
FX_QUESTION_TOOL,
|
|
@@ -26,8 +26,8 @@ import {
|
|
|
26
26
|
withoutFxPusharyServer,
|
|
27
27
|
withoutPusharyToolsAllowed,
|
|
28
28
|
withoutQuestionsRoutedToPushary
|
|
29
|
-
} from "../chunk-
|
|
30
|
-
import "../chunk-
|
|
29
|
+
} from "../chunk-O3JDWNLU.js";
|
|
30
|
+
import "../chunk-7OA34PNW.js";
|
|
31
31
|
import {
|
|
32
32
|
OPENCODE_PLUGIN_SIBLING,
|
|
33
33
|
OPENCODE_PLUGIN_SIBLING_CONTENTS,
|
|
@@ -39,7 +39,7 @@ import {
|
|
|
39
39
|
openCodePluginDir,
|
|
40
40
|
openCodePluginFile,
|
|
41
41
|
removeOpenCodeMcpServer
|
|
42
|
-
} from "../chunk-
|
|
42
|
+
} from "../chunk-KEL5MXRL.js";
|
|
43
43
|
import {
|
|
44
44
|
compatibleConfigFile,
|
|
45
45
|
compatibleInstructionsFile,
|
|
@@ -47,39 +47,39 @@ import {
|
|
|
47
47
|
compatiblePermissionRuleFile,
|
|
48
48
|
removeCompatibleHooks,
|
|
49
49
|
removeCompatibleMcpServer
|
|
50
|
-
} from "../chunk-
|
|
50
|
+
} from "../chunk-UOQRM7JQ.js";
|
|
51
51
|
import {
|
|
52
52
|
isClaudeMcpSnapshot,
|
|
53
53
|
removeClaudeMcpServers,
|
|
54
54
|
removePusharySettings,
|
|
55
55
|
removePusharyToolPermissions,
|
|
56
56
|
restoreClaudeMcpServer
|
|
57
|
-
} from "../chunk-
|
|
57
|
+
} from "../chunk-G3OMOTJ4.js";
|
|
58
58
|
import {
|
|
59
59
|
hookOwnerOf,
|
|
60
60
|
isHookTakeoverReceipt,
|
|
61
61
|
restoreHookTakeover,
|
|
62
62
|
restoreMcpServer
|
|
63
|
-
} from "../chunk-
|
|
64
|
-
import "../chunk-
|
|
63
|
+
} from "../chunk-TCVMK6GI.js";
|
|
64
|
+
import "../chunk-BGBLLHZ4.js";
|
|
65
65
|
import {
|
|
66
66
|
liveBridgeProbe,
|
|
67
67
|
resolveBridgeStub
|
|
68
|
-
} from "../chunk-
|
|
69
|
-
import "../chunk-
|
|
68
|
+
} from "../chunk-3EUBQARL.js";
|
|
69
|
+
import "../chunk-WTJM7PSL.js";
|
|
70
70
|
import {
|
|
71
71
|
disableDaemonService
|
|
72
|
-
} from "../chunk-
|
|
72
|
+
} from "../chunk-ZKJ34T2F.js";
|
|
73
73
|
import {
|
|
74
74
|
removeGeminiSettings
|
|
75
|
-
} from "../chunk-
|
|
76
|
-
import "../chunk-
|
|
75
|
+
} from "../chunk-MIXWMA73.js";
|
|
76
|
+
import "../chunk-NOI3XTCY.js";
|
|
77
77
|
import "../chunk-XHKBHWLX.js";
|
|
78
|
-
import "../chunk-
|
|
78
|
+
import "../chunk-U6RVDUJ5.js";
|
|
79
79
|
import "../chunk-N6IOSZOE.js";
|
|
80
|
-
import "../chunk-
|
|
81
|
-
import "../chunk-
|
|
82
|
-
import "../chunk-
|
|
80
|
+
import "../chunk-EUGNVLMG.js";
|
|
81
|
+
import "../chunk-YC27PROF.js";
|
|
82
|
+
import "../chunk-N5MZH5A6.js";
|
|
83
83
|
import "../chunk-POFBE6ZY.js";
|
|
84
84
|
import {
|
|
85
85
|
ansiPainter,
|
|
@@ -87,7 +87,7 @@ import {
|
|
|
87
87
|
} from "../chunk-U4TMAANR.js";
|
|
88
88
|
import {
|
|
89
89
|
exitOnHelpFlag
|
|
90
|
-
} from "../chunk-
|
|
90
|
+
} from "../chunk-5S2VBSJI.js";
|
|
91
91
|
import {
|
|
92
92
|
rejectUnknownFlags
|
|
93
93
|
} from "../chunk-GMXKITVA.js";
|
|
@@ -95,16 +95,16 @@ import {
|
|
|
95
95
|
CANDIDATE_RCS,
|
|
96
96
|
isDisabledExport,
|
|
97
97
|
removeClaudeAlias
|
|
98
|
-
} from "../chunk-
|
|
99
|
-
import "../chunk-
|
|
100
|
-
import "../chunk-
|
|
101
|
-
import "../chunk-
|
|
102
|
-
import "../chunk-
|
|
98
|
+
} from "../chunk-D6OODZCM.js";
|
|
99
|
+
import "../chunk-VE7TXLR4.js";
|
|
100
|
+
import "../chunk-EEEJ2JIL.js";
|
|
101
|
+
import "../chunk-DUQO4C4I.js";
|
|
102
|
+
import "../chunk-OVC5QXN5.js";
|
|
103
103
|
import "../chunk-7QLSKOSU.js";
|
|
104
104
|
import {
|
|
105
105
|
EXIT
|
|
106
106
|
} from "../chunk-KZERVKTD.js";
|
|
107
|
-
import "../chunk-
|
|
107
|
+
import "../chunk-62CVUUNU.js";
|
|
108
108
|
import {
|
|
109
109
|
AGENT_HOOKS_PACKAGE,
|
|
110
110
|
bridgeAgentKey,
|
|
@@ -141,10 +141,10 @@ import {
|
|
|
141
141
|
restoreCodexHookTrust,
|
|
142
142
|
vscodePluginDir,
|
|
143
143
|
vscodePluginMcp
|
|
144
|
-
} from "../chunk-
|
|
144
|
+
} from "../chunk-MZBRL5H5.js";
|
|
145
145
|
import "../chunk-T7E75EKA.js";
|
|
146
|
-
import "../chunk-
|
|
147
|
-
import "../chunk-
|
|
146
|
+
import "../chunk-R6OYCUNK.js";
|
|
147
|
+
import "../chunk-YYCTF4Q5.js";
|
|
148
148
|
import {
|
|
149
149
|
HOOK_COMPATIBLE_PROFILES,
|
|
150
150
|
HOOK_LOCATOR_BINARY,
|
|
@@ -152,7 +152,7 @@ import {
|
|
|
152
152
|
SUPPORT_EMAIL,
|
|
153
153
|
isValidApiKey,
|
|
154
154
|
redactSecrets
|
|
155
|
-
} from "../chunk-
|
|
155
|
+
} from "../chunk-G4GLCLKK.js";
|
|
156
156
|
|
|
157
157
|
// bin/pushary-clean.ts
|
|
158
158
|
import { existsSync as existsSync6, readFileSync as readFileSync4, copyFileSync, readdirSync as readdirSync4 } from "fs";
|
|
@@ -1,24 +1,24 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import "../chunk-
|
|
2
|
+
import "../chunk-Y4ZH64UK.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-BIH2Y2HP.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-LHC45YUC.js";
|
|
17
|
+
import "../chunk-P2VIBGXA.js";
|
|
18
|
+
import "../chunk-WPX67AKT.js";
|
|
19
19
|
import {
|
|
20
20
|
transcriptsEnabled
|
|
21
|
-
} from "../chunk-
|
|
21
|
+
} from "../chunk-LPNJLKBQ.js";
|
|
22
22
|
import {
|
|
23
23
|
spawnClaude
|
|
24
24
|
} from "../chunk-XHKBHWLX.js";
|
|
@@ -27,39 +27,39 @@ import {
|
|
|
27
27
|
isDecisionStopped,
|
|
28
28
|
isWaitForAnswerResponse,
|
|
29
29
|
withdrawQuestion
|
|
30
|
-
} from "../chunk-
|
|
30
|
+
} from "../chunk-YC27PROF.js";
|
|
31
31
|
import {
|
|
32
32
|
writeDegraded
|
|
33
|
-
} from "../chunk-
|
|
33
|
+
} from "../chunk-N5MZH5A6.js";
|
|
34
34
|
import "../chunk-POFBE6ZY.js";
|
|
35
|
-
import "../chunk-
|
|
35
|
+
import "../chunk-D6OODZCM.js";
|
|
36
36
|
import {
|
|
37
37
|
callMcpTool
|
|
38
|
-
} from "../chunk-
|
|
39
|
-
import "../chunk-
|
|
40
|
-
import "../chunk-
|
|
38
|
+
} from "../chunk-VE7TXLR4.js";
|
|
39
|
+
import "../chunk-EEEJ2JIL.js";
|
|
40
|
+
import "../chunk-DUQO4C4I.js";
|
|
41
41
|
import {
|
|
42
42
|
getMachineId
|
|
43
|
-
} from "../chunk-
|
|
43
|
+
} from "../chunk-OVC5QXN5.js";
|
|
44
44
|
import "../chunk-7QLSKOSU.js";
|
|
45
45
|
import "../chunk-KZERVKTD.js";
|
|
46
|
-
import "../chunk-
|
|
46
|
+
import "../chunk-62CVUUNU.js";
|
|
47
47
|
import {
|
|
48
48
|
resolveBinary
|
|
49
|
-
} from "../chunk-
|
|
49
|
+
} from "../chunk-MZBRL5H5.js";
|
|
50
50
|
import "../chunk-T7E75EKA.js";
|
|
51
51
|
import {
|
|
52
52
|
getApiKey,
|
|
53
53
|
getBaseUrl
|
|
54
|
-
} from "../chunk-
|
|
55
|
-
import "../chunk-
|
|
54
|
+
} from "../chunk-R6OYCUNK.js";
|
|
55
|
+
import "../chunk-YYCTF4Q5.js";
|
|
56
56
|
import {
|
|
57
57
|
elicitationContent,
|
|
58
58
|
parseAgentQuestion,
|
|
59
59
|
parseAgentQuestionAnswers,
|
|
60
60
|
planElicitationAsk,
|
|
61
61
|
readElicitationFields
|
|
62
|
-
} from "../chunk-
|
|
62
|
+
} from "../chunk-G4GLCLKK.js";
|
|
63
63
|
|
|
64
64
|
// bin/pushary-codex-bridge.ts
|
|
65
65
|
import { existsSync } from "fs";
|