@pushary/agent-hooks 0.95.6 → 0.95.8
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 +12 -0
- package/data/cursor-plugin/.cursor-plugin/plugin.json +1 -1
- package/data/cursor-plugin/CHANGELOG.md +7 -0
- package/data/cursor-plugin/scripts/pushary-gate.mjs +72 -17
- package/data/vscode-plugin/.claude-plugin/plugin.json +1 -1
- package/data/vscode-plugin/CHANGELOG.md +6 -0
- package/data/vscode-plugin/scripts/pushary-gate.mjs +76 -24
- package/dist/bin/pushary-bell-hook.js +18 -18
- package/dist/bin/pushary-bell.js +5 -5
- package/dist/bin/pushary-claude.js +24 -24
- package/dist/bin/pushary-clean.js +64 -26
- package/dist/bin/pushary-codex-bridge.js +29 -12
- package/dist/bin/pushary-codex-hook.js +29 -29
- package/dist/bin/pushary-codex.js +7 -7
- package/dist/bin/pushary-connect.js +6 -6
- package/dist/bin/pushary-cowork.js +3 -3
- package/dist/bin/pushary-daemon.js +22 -22
- package/dist/bin/pushary-disconnect.js +6 -6
- package/dist/bin/pushary-doctor.js +22 -21
- package/dist/bin/pushary-elicitation-hook.js +17 -17
- package/dist/bin/pushary-gemini-bridge.js +9 -9
- package/dist/bin/pushary-gemini-hook.js +65 -50
- package/dist/bin/pushary-hook.js +22 -22
- package/dist/bin/pushary-login.js +7 -7
- package/dist/bin/pushary-logout.js +4 -4
- package/dist/bin/pushary-mode.js +3 -3
- package/dist/bin/pushary-notification-hook.js +19 -19
- package/dist/bin/pushary-opencode-hook.js +29 -29
- package/dist/bin/pushary-permission-denied-hook.js +22 -22
- package/dist/bin/pushary-permission-hook.js +22 -22
- package/dist/bin/pushary-post-hook.js +19 -19
- package/dist/bin/pushary-prompt-hook.js +19 -19
- package/dist/bin/pushary-session-end-hook.js +19 -19
- package/dist/bin/pushary-session-start-hook.js +22 -22
- package/dist/bin/pushary-setup.js +24 -24
- package/dist/bin/pushary-stats.js +2 -2
- package/dist/bin/pushary-status.js +10 -10
- package/dist/bin/pushary-stop-hook.js +19 -19
- package/dist/bin/pushary-stopfailure-hook.js +19 -19
- package/dist/bin/pushary-transcript-register.js +16 -16
- package/dist/bin/pushary-transcripts.js +5 -5
- package/dist/bin/pushary-upgrade.js +14 -14
- package/dist/bin/pushary-wait.js +6 -5
- package/dist/{chunk-XKIB2FQY.js → chunk-3YFJGKJQ.js} +8 -8
- package/dist/{chunk-OIZVYUED.js → chunk-4DUEIUUO.js} +1 -1
- package/dist/{chunk-HKQ6CD32.js → chunk-54W7ELDQ.js} +1 -1
- package/dist/{chunk-32WFHA77.js → chunk-5GKNAQTG.js} +1 -1
- package/dist/{chunk-FHIVWF4B.js → chunk-A22VQ5ZL.js} +14 -14
- package/dist/{chunk-HHODMHTH.js → chunk-ATKGKAP6.js} +3 -3
- package/dist/{chunk-6II5RBAS.js → chunk-BQL7UDIB.js} +1 -1
- package/dist/chunk-CVWG2N3Y.js +16 -0
- package/dist/{chunk-C7BFOC35.js → chunk-E47WV7BJ.js} +2 -2
- package/dist/{chunk-WZ63WTAZ.js → chunk-EMGGUO2Q.js} +1 -1
- package/dist/{chunk-RPHXG4HI.js → chunk-F4TMY6XI.js} +2 -2
- package/dist/{chunk-KNIVXEW4.js → chunk-FRXZMCVA.js} +1 -1
- package/dist/{chunk-ZJ6QXXBC.js → chunk-HUGIKB5O.js} +11 -11
- package/dist/{chunk-7N3D4GN7.js → chunk-I7LKI4WO.js} +4 -4
- package/dist/{chunk-KAWLZTRJ.js → chunk-L7NOG547.js} +1 -1
- package/dist/{chunk-FBO5WS3D.js → chunk-NOVA7KZ2.js} +3 -1
- package/dist/{chunk-A2M6FGUF.js → chunk-QD73WATQ.js} +3 -3
- package/dist/{chunk-FVTFSYKB.js → chunk-QJPYJVL3.js} +1 -1
- package/dist/{chunk-CDBTCEKE.js → chunk-QV266EGS.js} +3 -3
- package/dist/{chunk-BS5XR4J7.js → chunk-R3OZ5ISU.js} +3 -3
- package/dist/{chunk-XJ6CXTSB.js → chunk-R6LBGKWQ.js} +7 -7
- package/dist/{chunk-WRK6RAA5.js → chunk-RE25RJ5A.js} +4 -4
- package/dist/{chunk-ZQREURP6.js → chunk-SDNTRS76.js} +1 -1
- package/dist/{chunk-DH4INZW3.js → chunk-SKPXQRKN.js} +1 -1
- package/dist/{chunk-SLVXQOYU.js → chunk-TY6IJY6I.js} +1 -1
- package/dist/{chunk-43TFQOAT.js → chunk-U5RIXR7I.js} +1 -1
- package/dist/{chunk-AXECWTTZ.js → chunk-UKMLSQXA.js} +2 -2
- package/dist/{chunk-SRFA5BOO.js → chunk-VDI645ZX.js} +1 -1
- package/dist/{chunk-JZSWA3VT.js → chunk-VERXHIQF.js} +1 -1
- package/dist/{chunk-6MRPTYYH.js → chunk-VMQU7YEJ.js} +1 -1
- package/dist/{chunk-R4MBUCPQ.js → chunk-XEVOPOKT.js} +1 -1
- package/dist/{chunk-O5RQ7RYJ.js → chunk-XO3JR3OP.js} +2 -2
- package/dist/{chunk-32WWVRXN.js → chunk-XUTSZYYJ.js} +1 -1
- package/dist/{chunk-4XFBO3GW.js → chunk-XZWUOCJZ.js} +1 -1
- package/dist/{chunk-DSCGKZO5.js → chunk-Y6SCMXR6.js} +2 -2
- package/dist/{chunk-HBBQO77U.js → chunk-Z4JVEL7R.js} +1 -1
- package/dist/src/index.js +10 -10
- package/package.json +1 -1
- package/dist/chunk-IIENZE2J.js +0 -15
- /package/dist/{chunk-VZADMT7R.js → chunk-MC5WUOJJ.js} +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
describeWaitLadder
|
|
4
|
-
} from "../chunk-
|
|
4
|
+
} from "../chunk-CVWG2N3Y.js";
|
|
5
5
|
import {
|
|
6
6
|
readServiceExecPath,
|
|
7
7
|
versionManagerOf
|
|
@@ -9,7 +9,7 @@ import {
|
|
|
9
9
|
import {
|
|
10
10
|
readMachineReadiness,
|
|
11
11
|
readManagedControlEvidence
|
|
12
|
-
} from "../chunk-
|
|
12
|
+
} from "../chunk-RE25RJ5A.js";
|
|
13
13
|
import {
|
|
14
14
|
CURSOR_GATE_SCRIPT
|
|
15
15
|
} from "../chunk-KBITFQST.js";
|
|
@@ -21,28 +21,28 @@ import {
|
|
|
21
21
|
isDetected,
|
|
22
22
|
isPluginRegistered,
|
|
23
23
|
vscodeSettingsTargets
|
|
24
|
-
} from "../chunk-
|
|
24
|
+
} from "../chunk-F4TMY6XI.js";
|
|
25
25
|
import {
|
|
26
26
|
OPENCODE_PLUGIN_PLACEHOLDER,
|
|
27
27
|
openCodePluginDir,
|
|
28
28
|
openCodePluginFile,
|
|
29
29
|
openCodeWired
|
|
30
|
-
} from "../chunk-
|
|
31
|
-
import "../chunk-
|
|
30
|
+
} from "../chunk-U5RIXR7I.js";
|
|
31
|
+
import "../chunk-ATKGKAP6.js";
|
|
32
32
|
import {
|
|
33
33
|
detectProviderLiveCapabilities,
|
|
34
34
|
hasSpawnProvider,
|
|
35
35
|
resolveControlPolicy
|
|
36
|
-
} from "../chunk-
|
|
36
|
+
} from "../chunk-54W7ELDQ.js";
|
|
37
37
|
import {
|
|
38
38
|
readLedgerSummary
|
|
39
|
-
} from "../chunk-
|
|
39
|
+
} from "../chunk-5GKNAQTG.js";
|
|
40
40
|
import {
|
|
41
41
|
describeBridgeResolution,
|
|
42
42
|
isBridgeLocator,
|
|
43
43
|
liveBridgeProbe,
|
|
44
44
|
resolveBridgeStub
|
|
45
|
-
} from "../chunk-
|
|
45
|
+
} from "../chunk-QJPYJVL3.js";
|
|
46
46
|
import {
|
|
47
47
|
claudeOtherHolders,
|
|
48
48
|
claudeWired,
|
|
@@ -57,7 +57,7 @@ import {
|
|
|
57
57
|
geminiWired,
|
|
58
58
|
holdsLong,
|
|
59
59
|
pusharyHookExecutable
|
|
60
|
-
} from "../chunk-
|
|
60
|
+
} from "../chunk-QD73WATQ.js";
|
|
61
61
|
import {
|
|
62
62
|
daemonHasRemoteProof,
|
|
63
63
|
daemonServiceManagerAvailable,
|
|
@@ -66,22 +66,22 @@ import {
|
|
|
66
66
|
readDaemonNeedsLogin,
|
|
67
67
|
readDaemonStatus,
|
|
68
68
|
readInstalledDaemonService
|
|
69
|
-
} from "../chunk-
|
|
69
|
+
} from "../chunk-I7LKI4WO.js";
|
|
70
70
|
import {
|
|
71
71
|
GEMINI_HOOK_BINARY,
|
|
72
72
|
hasGeminiHooks,
|
|
73
73
|
missingGeminiHookEvents
|
|
74
|
-
} from "../chunk-
|
|
74
|
+
} from "../chunk-QV266EGS.js";
|
|
75
75
|
import "../chunk-3AJIK5AO.js";
|
|
76
76
|
import "../chunk-XHKBHWLX.js";
|
|
77
77
|
import {
|
|
78
78
|
execNpm
|
|
79
79
|
} from "../chunk-L4ZCFMWW.js";
|
|
80
|
-
import "../chunk-
|
|
81
|
-
import "../chunk-
|
|
80
|
+
import "../chunk-Z4JVEL7R.js";
|
|
81
|
+
import "../chunk-XUTSZYYJ.js";
|
|
82
82
|
import {
|
|
83
83
|
getMachineId
|
|
84
|
-
} from "../chunk-
|
|
84
|
+
} from "../chunk-E47WV7BJ.js";
|
|
85
85
|
import {
|
|
86
86
|
CODEX_HOOK_EVENTS,
|
|
87
87
|
claudeJson,
|
|
@@ -103,7 +103,7 @@ import {
|
|
|
103
103
|
pusharyConfigFile,
|
|
104
104
|
readCodexMcpAuth,
|
|
105
105
|
vscodePluginDir
|
|
106
|
-
} from "../chunk-
|
|
106
|
+
} from "../chunk-NOVA7KZ2.js";
|
|
107
107
|
import {
|
|
108
108
|
describeReach,
|
|
109
109
|
describeRoundTrip,
|
|
@@ -111,12 +111,12 @@ import {
|
|
|
111
111
|
reachVerdict,
|
|
112
112
|
roundTripEvidence,
|
|
113
113
|
verifyRoundTrip
|
|
114
|
-
} from "../chunk-
|
|
114
|
+
} from "../chunk-XO3JR3OP.js";
|
|
115
115
|
import "../chunk-3EGEA4KH.js";
|
|
116
116
|
import {
|
|
117
117
|
checkApiKey,
|
|
118
118
|
describeKeyCheck
|
|
119
|
-
} from "../chunk-
|
|
119
|
+
} from "../chunk-BQL7UDIB.js";
|
|
120
120
|
import "../chunk-QCGNGEGE.js";
|
|
121
121
|
import {
|
|
122
122
|
createIo
|
|
@@ -135,7 +135,7 @@ import {
|
|
|
135
135
|
keyPrefix,
|
|
136
136
|
readControlMode,
|
|
137
137
|
readKeySource
|
|
138
|
-
} from "../chunk-
|
|
138
|
+
} from "../chunk-VMQU7YEJ.js";
|
|
139
139
|
import {
|
|
140
140
|
callMcpTool,
|
|
141
141
|
sendMcpRequest
|
|
@@ -147,7 +147,7 @@ import {
|
|
|
147
147
|
import {
|
|
148
148
|
EXIT
|
|
149
149
|
} from "../chunk-KZERVKTD.js";
|
|
150
|
-
import "../chunk-
|
|
150
|
+
import "../chunk-L7NOG547.js";
|
|
151
151
|
import {
|
|
152
152
|
getBaseUrl
|
|
153
153
|
} from "../chunk-2UMNXADU.js";
|
|
@@ -157,7 +157,7 @@ import {
|
|
|
157
157
|
HOOK_LOCATOR_BINARY,
|
|
158
158
|
hookActivationResult,
|
|
159
159
|
isHookActivationReport
|
|
160
|
-
} from "../chunk-
|
|
160
|
+
} from "../chunk-MC5WUOJJ.js";
|
|
161
161
|
|
|
162
162
|
// bin/pushary-doctor.ts
|
|
163
163
|
import { existsSync, readFileSync, writeFileSync } from "fs";
|
|
@@ -1038,7 +1038,8 @@ var main = async () => {
|
|
|
1038
1038
|
console.log(` ${dim("Wait Ladder")} ${dim("(what happens when you don't answer)")}`);
|
|
1039
1039
|
const wildcard = policy.policies?.find((p) => p.tool === "*");
|
|
1040
1040
|
const defaultWindow = policy.defaultPushFirstSeconds ?? 20;
|
|
1041
|
-
|
|
1041
|
+
const defaultLadder = describeWaitLadder(wildcard ?? { tool: "*", mode: "push_first", pushFirstSeconds: defaultWindow, timeoutSeconds: 0, timeoutAction: "escalate" });
|
|
1042
|
+
console.log(` ${dim("\xB7")} default: ${cyan(`${defaultWindow}s`)} ${dim("\xB7")} ${defaultLadder}`);
|
|
1042
1043
|
if (policy.modeOverride) {
|
|
1043
1044
|
console.log(` ${warn} mode override active: ${cyan(policy.modeOverride)} ${dim("(pushary mode status)")}`);
|
|
1044
1045
|
}
|
|
@@ -1,43 +1,43 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
readHookInput
|
|
4
|
-
} from "../chunk-
|
|
4
|
+
} from "../chunk-XEVOPOKT.js";
|
|
5
5
|
import {
|
|
6
6
|
isDeferAnswer
|
|
7
7
|
} from "../chunk-YHG74UFF.js";
|
|
8
|
-
import "../chunk-
|
|
9
|
-
import "../chunk-
|
|
10
|
-
import "../chunk-
|
|
11
|
-
import "../chunk-
|
|
12
|
-
import "../chunk-
|
|
13
|
-
import "../chunk-
|
|
14
|
-
import "../chunk-
|
|
15
|
-
import "../chunk-
|
|
8
|
+
import "../chunk-3YFJGKJQ.js";
|
|
9
|
+
import "../chunk-EMGGUO2Q.js";
|
|
10
|
+
import "../chunk-R3OZ5ISU.js";
|
|
11
|
+
import "../chunk-XZWUOCJZ.js";
|
|
12
|
+
import "../chunk-QJPYJVL3.js";
|
|
13
|
+
import "../chunk-QD73WATQ.js";
|
|
14
|
+
import "../chunk-I7LKI4WO.js";
|
|
15
|
+
import "../chunk-QV266EGS.js";
|
|
16
16
|
import "../chunk-GOPIMNVC.js";
|
|
17
17
|
import "../chunk-3AJIK5AO.js";
|
|
18
|
-
import "../chunk-
|
|
18
|
+
import "../chunk-SKPXQRKN.js";
|
|
19
19
|
import "../chunk-EQRS3SGM.js";
|
|
20
|
-
import "../chunk-
|
|
20
|
+
import "../chunk-VERXHIQF.js";
|
|
21
21
|
import "../chunk-XHKBHWLX.js";
|
|
22
22
|
import "../chunk-L4ZCFMWW.js";
|
|
23
|
+
import "../chunk-XUTSZYYJ.js";
|
|
23
24
|
import {
|
|
24
25
|
askUser,
|
|
25
26
|
isDecisionStopped,
|
|
26
27
|
waitForQuestion
|
|
27
28
|
} from "../chunk-XS33QBJA.js";
|
|
28
|
-
import "../chunk-32WWVRXN.js";
|
|
29
29
|
import {
|
|
30
30
|
getMachineId
|
|
31
|
-
} from "../chunk-
|
|
32
|
-
import "../chunk-
|
|
31
|
+
} from "../chunk-E47WV7BJ.js";
|
|
32
|
+
import "../chunk-NOVA7KZ2.js";
|
|
33
33
|
import "../chunk-GMXKITVA.js";
|
|
34
34
|
import "../chunk-DINDL2CF.js";
|
|
35
|
-
import "../chunk-
|
|
35
|
+
import "../chunk-VMQU7YEJ.js";
|
|
36
36
|
import "../chunk-EYRGBYZG.js";
|
|
37
37
|
import "../chunk-SAF6HGAA.js";
|
|
38
38
|
import "../chunk-7QLSKOSU.js";
|
|
39
39
|
import "../chunk-KZERVKTD.js";
|
|
40
|
-
import "../chunk-
|
|
40
|
+
import "../chunk-L7NOG547.js";
|
|
41
41
|
import {
|
|
42
42
|
getApiKey
|
|
43
43
|
} from "../chunk-2UMNXADU.js";
|
|
@@ -51,7 +51,7 @@ import {
|
|
|
51
51
|
planElicitationAsk,
|
|
52
52
|
readElicitationFields,
|
|
53
53
|
renderElicitationOutput
|
|
54
|
-
} from "../chunk-
|
|
54
|
+
} from "../chunk-MC5WUOJJ.js";
|
|
55
55
|
|
|
56
56
|
// bin/pushary-elicitation-hook.ts
|
|
57
57
|
import { basename } from "path";
|
|
@@ -5,19 +5,19 @@ import {
|
|
|
5
5
|
postLiveSession,
|
|
6
6
|
postLiveSessionUntilAccepted,
|
|
7
7
|
startLiveSessionHeartbeat
|
|
8
|
-
} from "../chunk-
|
|
8
|
+
} from "../chunk-FRXZMCVA.js";
|
|
9
9
|
import {
|
|
10
10
|
SESSION_IDLE_TIMEOUT_MS,
|
|
11
11
|
describeIdleWindow,
|
|
12
12
|
idleDeadlinePassed,
|
|
13
13
|
startProcessOwnership,
|
|
14
14
|
withSpawnProcessOwnership
|
|
15
|
-
} from "../chunk-
|
|
16
|
-
import "../chunk-
|
|
15
|
+
} from "../chunk-Y6SCMXR6.js";
|
|
16
|
+
import "../chunk-SKPXQRKN.js";
|
|
17
17
|
import "../chunk-EQRS3SGM.js";
|
|
18
18
|
import {
|
|
19
19
|
transcriptsEnabled
|
|
20
|
-
} from "../chunk-
|
|
20
|
+
} from "../chunk-VERXHIQF.js";
|
|
21
21
|
import {
|
|
22
22
|
spawnClaude
|
|
23
23
|
} from "../chunk-XHKBHWLX.js";
|
|
@@ -26,15 +26,15 @@ import {
|
|
|
26
26
|
} from "../chunk-L4ZCFMWW.js";
|
|
27
27
|
import {
|
|
28
28
|
getMachineId
|
|
29
|
-
} from "../chunk-
|
|
30
|
-
import "../chunk-
|
|
31
|
-
import "../chunk-
|
|
32
|
-
import "../chunk-
|
|
29
|
+
} from "../chunk-E47WV7BJ.js";
|
|
30
|
+
import "../chunk-NOVA7KZ2.js";
|
|
31
|
+
import "../chunk-VMQU7YEJ.js";
|
|
32
|
+
import "../chunk-L7NOG547.js";
|
|
33
33
|
import {
|
|
34
34
|
getApiKey,
|
|
35
35
|
getBaseUrl
|
|
36
36
|
} from "../chunk-2UMNXADU.js";
|
|
37
|
-
import "../chunk-
|
|
37
|
+
import "../chunk-MC5WUOJJ.js";
|
|
38
38
|
|
|
39
39
|
// bin/pushary-gemini-bridge.ts
|
|
40
40
|
import { existsSync } from "fs";
|
|
@@ -2,27 +2,27 @@
|
|
|
2
2
|
import {
|
|
3
3
|
isGatingMoment,
|
|
4
4
|
recordKeylessMoment
|
|
5
|
-
} from "../chunk-
|
|
5
|
+
} from "../chunk-5GKNAQTG.js";
|
|
6
6
|
import {
|
|
7
7
|
readHookInput
|
|
8
|
-
} from "../chunk-
|
|
8
|
+
} from "../chunk-XEVOPOKT.js";
|
|
9
9
|
import {
|
|
10
10
|
denyReasonFrom,
|
|
11
11
|
isDeferAnswer
|
|
12
12
|
} from "../chunk-YHG74UFF.js";
|
|
13
|
-
import "../chunk-
|
|
14
|
-
import "../chunk-
|
|
15
|
-
import "../chunk-
|
|
16
|
-
import "../chunk-
|
|
17
|
-
import "../chunk-
|
|
18
|
-
import "../chunk-
|
|
19
|
-
import "../chunk-
|
|
20
|
-
import "../chunk-
|
|
13
|
+
import "../chunk-3YFJGKJQ.js";
|
|
14
|
+
import "../chunk-EMGGUO2Q.js";
|
|
15
|
+
import "../chunk-R3OZ5ISU.js";
|
|
16
|
+
import "../chunk-XZWUOCJZ.js";
|
|
17
|
+
import "../chunk-QJPYJVL3.js";
|
|
18
|
+
import "../chunk-QD73WATQ.js";
|
|
19
|
+
import "../chunk-I7LKI4WO.js";
|
|
20
|
+
import "../chunk-QV266EGS.js";
|
|
21
21
|
import "../chunk-GOPIMNVC.js";
|
|
22
22
|
import "../chunk-3AJIK5AO.js";
|
|
23
|
-
import "../chunk-
|
|
23
|
+
import "../chunk-SKPXQRKN.js";
|
|
24
24
|
import "../chunk-EQRS3SGM.js";
|
|
25
|
-
import "../chunk-
|
|
25
|
+
import "../chunk-VERXHIQF.js";
|
|
26
26
|
import "../chunk-XHKBHWLX.js";
|
|
27
27
|
import "../chunk-L4ZCFMWW.js";
|
|
28
28
|
import {
|
|
@@ -38,7 +38,16 @@ import {
|
|
|
38
38
|
readLastUserPrompt,
|
|
39
39
|
repoKeyFor,
|
|
40
40
|
reportEvent
|
|
41
|
-
} from "../chunk-
|
|
41
|
+
} from "../chunk-HUGIKB5O.js";
|
|
42
|
+
import {
|
|
43
|
+
UNNAMED_ACTION,
|
|
44
|
+
deriveActionBody,
|
|
45
|
+
deriveBlocker,
|
|
46
|
+
deriveToolTarget,
|
|
47
|
+
describeToolCall,
|
|
48
|
+
scopePathFor
|
|
49
|
+
} from "../chunk-Z4JVEL7R.js";
|
|
50
|
+
import "../chunk-XUTSZYYJ.js";
|
|
42
51
|
import {
|
|
43
52
|
DECISION_STOP_REASON,
|
|
44
53
|
askUser,
|
|
@@ -47,27 +56,18 @@ import {
|
|
|
47
56
|
sendNotification,
|
|
48
57
|
waitForQuestion
|
|
49
58
|
} from "../chunk-XS33QBJA.js";
|
|
50
|
-
import {
|
|
51
|
-
UNNAMED_ACTION,
|
|
52
|
-
deriveActionBody,
|
|
53
|
-
deriveBlocker,
|
|
54
|
-
deriveToolTarget,
|
|
55
|
-
describeToolCall,
|
|
56
|
-
scopePathFor
|
|
57
|
-
} from "../chunk-HBBQO77U.js";
|
|
58
|
-
import "../chunk-32WWVRXN.js";
|
|
59
59
|
import {
|
|
60
60
|
getMachineId
|
|
61
|
-
} from "../chunk-
|
|
62
|
-
import "../chunk-
|
|
61
|
+
} from "../chunk-E47WV7BJ.js";
|
|
62
|
+
import "../chunk-NOVA7KZ2.js";
|
|
63
63
|
import "../chunk-GMXKITVA.js";
|
|
64
64
|
import "../chunk-DINDL2CF.js";
|
|
65
|
-
import "../chunk-
|
|
65
|
+
import "../chunk-VMQU7YEJ.js";
|
|
66
66
|
import "../chunk-EYRGBYZG.js";
|
|
67
67
|
import "../chunk-SAF6HGAA.js";
|
|
68
68
|
import "../chunk-7QLSKOSU.js";
|
|
69
69
|
import "../chunk-KZERVKTD.js";
|
|
70
|
-
import "../chunk-
|
|
70
|
+
import "../chunk-L7NOG547.js";
|
|
71
71
|
import {
|
|
72
72
|
getApiKey
|
|
73
73
|
} from "../chunk-2UMNXADU.js";
|
|
@@ -79,7 +79,7 @@ import {
|
|
|
79
79
|
hookWaitClamped,
|
|
80
80
|
hookWaitDeadline,
|
|
81
81
|
resolveGate
|
|
82
|
-
} from "../chunk-
|
|
82
|
+
} from "../chunk-MC5WUOJJ.js";
|
|
83
83
|
|
|
84
84
|
// bin/pushary-gemini-hook.ts
|
|
85
85
|
import { basename } from "path";
|
|
@@ -115,6 +115,30 @@ var toGeminiPolicyLookup = (toolName, toolInput, cwd, mcpContext) => {
|
|
|
115
115
|
var geminiAllow = () => ({ kind: "allow" });
|
|
116
116
|
var geminiDeny = (reason) => ({ kind: "deny", reason });
|
|
117
117
|
var geminiPass = () => ({ kind: "pass" });
|
|
118
|
+
var NO_LOCAL_INPUT = "This unattended Gemini session has no local approval input. Use an interactive session or Every time.";
|
|
119
|
+
var NO_ANSWER_IN_TIME = "No answer from your phone in time, and this unattended Gemini session has no local approval input. Retry when you can answer on your phone.";
|
|
120
|
+
var HANDLED_ON_MACHINE = "You chose to handle this on your machine, but this unattended Gemini session has no local approval input. Use an interactive session.";
|
|
121
|
+
var NO_DEVICE = "No phone or other notification channel is connected to Pushary, and this unattended Gemini session has no local approval input. Connect one in Pushary, then retry.";
|
|
122
|
+
var geminiLocalHandoff = (bridge, reason = NO_LOCAL_INPUT) => geminiOwnsLifecycle(bridge) ? geminiPass() : geminiDeny(reason);
|
|
123
|
+
var geminiPushOnlyHandoff = (askStatus, bridge) => askStatus === "notified" || askStatus === "terminal" ? geminiLocalHandoff(bridge) : geminiPass();
|
|
124
|
+
var fromPhoneAnswer = (answer) => answer.value === "yes" ? geminiAllow() : geminiDeny(denyReasonFrom(answer.value, answer.note));
|
|
125
|
+
var geminiPushFirstDecision = (pushed, bridge) => {
|
|
126
|
+
if (!pushed) return geminiPass();
|
|
127
|
+
const { answer, localHandoff } = pushed;
|
|
128
|
+
if (isDecisionStopped(answer)) return geminiDeny(DECISION_STOP_REASON);
|
|
129
|
+
if (localHandoff) return geminiLocalHandoff(bridge, pushed.noDevices ? NO_DEVICE : NO_LOCAL_INPUT);
|
|
130
|
+
if (answer.answered) return isDeferAnswer(answer.value) ? geminiLocalHandoff(bridge, HANDLED_ON_MACHINE) : fromPhoneAnswer(answer);
|
|
131
|
+
return geminiLocalHandoff(bridge, NO_ANSWER_IN_TIME);
|
|
132
|
+
};
|
|
133
|
+
var geminiPushOnlyDecision = (pushed, timeoutAction, bridge) => {
|
|
134
|
+
if (!pushed) return geminiDeny("Pushary could not create a verifiable approval. Retry the action.");
|
|
135
|
+
const { answer, localHandoff, clampCut, askStatus } = pushed;
|
|
136
|
+
if (isDecisionStopped(answer)) return geminiDeny(DECISION_STOP_REASON);
|
|
137
|
+
if (localHandoff) return geminiPushOnlyHandoff(askStatus, bridge);
|
|
138
|
+
if (answer.answered) return isDeferAnswer(answer.value) ? geminiPass() : fromPhoneAnswer(answer);
|
|
139
|
+
if (clampCut) return geminiPass();
|
|
140
|
+
return geminiTimeoutDecision(timeoutAction);
|
|
141
|
+
};
|
|
118
142
|
var toGeminiWire = (decision) => {
|
|
119
143
|
if (decision.kind === "pass") return null;
|
|
120
144
|
return gateOutputFor(
|
|
@@ -150,12 +174,18 @@ var pushQuestion = async (apiKey, input, lookup, waitSeconds, mode, pollInterval
|
|
|
150
174
|
blocker: deriveBlocker(mode),
|
|
151
175
|
actionBody: deriveActionBody(input.tool_name ?? "", input.tool_input ?? {}),
|
|
152
176
|
repoKey: repoKeyFor(input.cwd)
|
|
153
|
-
})
|
|
177
|
+
});
|
|
154
178
|
const now = Date.now();
|
|
155
179
|
const deadline = hookWaitDeadline(START_MS, waitSeconds, "gemini", now);
|
|
156
180
|
const clampCut = hookWaitClamped(START_MS, waitSeconds, "gemini", now);
|
|
157
181
|
const answer = await waitForQuestion(apiKey, result, deadline, pollInterval);
|
|
158
|
-
return {
|
|
182
|
+
return {
|
|
183
|
+
answer,
|
|
184
|
+
localHandoff: !answer.answered && isLocalQuestionHandoff(result),
|
|
185
|
+
clampCut,
|
|
186
|
+
askStatus: result.status,
|
|
187
|
+
noDevices: result.noDevices === true
|
|
188
|
+
};
|
|
159
189
|
};
|
|
160
190
|
var notifyApprovalNeeded = async (apiKey, input, lookup) => {
|
|
161
191
|
try {
|
|
@@ -174,33 +204,18 @@ var handlePushOnly = async (apiKey, input, lookup, timeoutSeconds, timeoutAction
|
|
|
174
204
|
try {
|
|
175
205
|
pushed = await pushQuestion(apiKey, input, lookup, effectiveWaitSeconds(timeoutAction, timeoutSeconds, "gemini"), "push_only");
|
|
176
206
|
} catch {
|
|
177
|
-
|
|
178
|
-
}
|
|
179
|
-
const { answer, localHandoff, clampCut } = pushed;
|
|
180
|
-
if (isDecisionStopped(answer)) return geminiDeny(DECISION_STOP_REASON);
|
|
181
|
-
if (localHandoff) return geminiPass();
|
|
182
|
-
if (answer.answered) {
|
|
183
|
-
if (isDeferAnswer(answer.value)) return geminiPass();
|
|
184
|
-
return answer.value === "yes" ? geminiAllow() : geminiDeny(denyReasonFrom(answer.value, answer.note));
|
|
207
|
+
pushed = void 0;
|
|
185
208
|
}
|
|
186
|
-
|
|
187
|
-
return geminiTimeoutDecision(timeoutAction);
|
|
209
|
+
return geminiPushOnlyDecision(pushed, timeoutAction, process.env.PUSHARY_GEMINI_BRIDGE);
|
|
188
210
|
};
|
|
189
211
|
var handlePushFirst = async (apiKey, input, lookup, pushFirstSeconds) => {
|
|
190
212
|
let pushed;
|
|
191
213
|
try {
|
|
192
214
|
pushed = await pushQuestion(apiKey, input, lookup, pushFirstSeconds, "push_first", 1500);
|
|
193
215
|
} catch {
|
|
194
|
-
|
|
216
|
+
pushed = void 0;
|
|
195
217
|
}
|
|
196
|
-
|
|
197
|
-
if (isDecisionStopped(answer)) return geminiDeny(DECISION_STOP_REASON);
|
|
198
|
-
if (localHandoff) return geminiPass();
|
|
199
|
-
if (answer.answered) {
|
|
200
|
-
if (isDeferAnswer(answer.value)) return geminiPass();
|
|
201
|
-
return answer.value === "yes" ? geminiAllow() : geminiDeny(denyReasonFrom(answer.value, answer.note));
|
|
202
|
-
}
|
|
203
|
-
return geminiPass();
|
|
218
|
+
return geminiPushFirstDecision(pushed, process.env.PUSHARY_GEMINI_BRIDGE);
|
|
204
219
|
};
|
|
205
220
|
var decideBeforeTool = async (input) => {
|
|
206
221
|
let apiKey;
|
|
@@ -246,12 +261,12 @@ var decideBeforeTool = async (input) => {
|
|
|
246
261
|
case "push_only":
|
|
247
262
|
return handlePushOnly(apiKey, input, lookup, toolPolicy.timeoutSeconds, toolPolicy.timeoutAction);
|
|
248
263
|
case "terminal_only":
|
|
249
|
-
return
|
|
264
|
+
return geminiLocalHandoff(process.env.PUSHARY_GEMINI_BRIDGE);
|
|
250
265
|
case "push_first":
|
|
251
266
|
return handlePushFirst(apiKey, input, lookup, toolPolicy.pushFirstSeconds);
|
|
252
267
|
case "notify_only":
|
|
253
268
|
await notifyApprovalNeeded(apiKey, input, lookup);
|
|
254
|
-
return
|
|
269
|
+
return geminiLocalHandoff(process.env.PUSHARY_GEMINI_BRIDGE);
|
|
255
270
|
default:
|
|
256
271
|
return handlePushFirst(apiKey, input, lookup, toolPolicy.pushFirstSeconds);
|
|
257
272
|
}
|
package/dist/bin/pushary-hook.js
CHANGED
|
@@ -1,48 +1,48 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
handlePreToolUse
|
|
4
|
-
} from "../chunk-
|
|
5
|
-
import "../chunk-
|
|
6
|
-
import "../chunk-
|
|
4
|
+
} from "../chunk-A22VQ5ZL.js";
|
|
5
|
+
import "../chunk-VDI645ZX.js";
|
|
6
|
+
import "../chunk-5GKNAQTG.js";
|
|
7
7
|
import {
|
|
8
8
|
readHookInput
|
|
9
|
-
} from "../chunk-
|
|
9
|
+
} from "../chunk-XEVOPOKT.js";
|
|
10
10
|
import "../chunk-YHG74UFF.js";
|
|
11
|
-
import "../chunk-
|
|
12
|
-
import "../chunk-
|
|
13
|
-
import "../chunk-
|
|
14
|
-
import "../chunk-
|
|
15
|
-
import "../chunk-
|
|
16
|
-
import "../chunk-
|
|
17
|
-
import "../chunk-
|
|
18
|
-
import "../chunk-
|
|
11
|
+
import "../chunk-3YFJGKJQ.js";
|
|
12
|
+
import "../chunk-EMGGUO2Q.js";
|
|
13
|
+
import "../chunk-R3OZ5ISU.js";
|
|
14
|
+
import "../chunk-XZWUOCJZ.js";
|
|
15
|
+
import "../chunk-QJPYJVL3.js";
|
|
16
|
+
import "../chunk-QD73WATQ.js";
|
|
17
|
+
import "../chunk-I7LKI4WO.js";
|
|
18
|
+
import "../chunk-QV266EGS.js";
|
|
19
19
|
import "../chunk-GOPIMNVC.js";
|
|
20
20
|
import "../chunk-3AJIK5AO.js";
|
|
21
|
-
import "../chunk-
|
|
21
|
+
import "../chunk-SKPXQRKN.js";
|
|
22
22
|
import "../chunk-EQRS3SGM.js";
|
|
23
|
-
import "../chunk-
|
|
23
|
+
import "../chunk-VERXHIQF.js";
|
|
24
24
|
import "../chunk-XHKBHWLX.js";
|
|
25
25
|
import "../chunk-L4ZCFMWW.js";
|
|
26
|
-
import "../chunk-
|
|
26
|
+
import "../chunk-HUGIKB5O.js";
|
|
27
|
+
import "../chunk-Z4JVEL7R.js";
|
|
28
|
+
import "../chunk-XUTSZYYJ.js";
|
|
27
29
|
import "../chunk-XS33QBJA.js";
|
|
28
|
-
import "../chunk-
|
|
29
|
-
import "../chunk-
|
|
30
|
-
import "../chunk-C7BFOC35.js";
|
|
31
|
-
import "../chunk-FBO5WS3D.js";
|
|
30
|
+
import "../chunk-E47WV7BJ.js";
|
|
31
|
+
import "../chunk-NOVA7KZ2.js";
|
|
32
32
|
import {
|
|
33
33
|
exitOnHelpFlag
|
|
34
34
|
} from "../chunk-GOQHN2UH.js";
|
|
35
35
|
import "../chunk-LZQVAEWP.js";
|
|
36
36
|
import "../chunk-GMXKITVA.js";
|
|
37
37
|
import "../chunk-DINDL2CF.js";
|
|
38
|
-
import "../chunk-
|
|
38
|
+
import "../chunk-VMQU7YEJ.js";
|
|
39
39
|
import "../chunk-EYRGBYZG.js";
|
|
40
40
|
import "../chunk-SAF6HGAA.js";
|
|
41
41
|
import "../chunk-7QLSKOSU.js";
|
|
42
42
|
import "../chunk-KZERVKTD.js";
|
|
43
|
-
import "../chunk-
|
|
43
|
+
import "../chunk-L7NOG547.js";
|
|
44
44
|
import "../chunk-2UMNXADU.js";
|
|
45
|
-
import "../chunk-
|
|
45
|
+
import "../chunk-MC5WUOJJ.js";
|
|
46
46
|
|
|
47
47
|
// bin/pushary-hook.ts
|
|
48
48
|
exitOnHelpFlag("hook");
|
|
@@ -5,16 +5,16 @@ import {
|
|
|
5
5
|
import "../chunk-PUZZELE6.js";
|
|
6
6
|
import {
|
|
7
7
|
recoverDaemonAfterLogin
|
|
8
|
-
} from "../chunk-
|
|
8
|
+
} from "../chunk-I7LKI4WO.js";
|
|
9
9
|
import "../chunk-XHKBHWLX.js";
|
|
10
10
|
import "../chunk-L4ZCFMWW.js";
|
|
11
|
-
import "../chunk-
|
|
12
|
-
import "../chunk-
|
|
11
|
+
import "../chunk-E47WV7BJ.js";
|
|
12
|
+
import "../chunk-NOVA7KZ2.js";
|
|
13
13
|
import "../chunk-3EGEA4KH.js";
|
|
14
14
|
import {
|
|
15
15
|
checkApiKey,
|
|
16
16
|
describeKeyCheck
|
|
17
|
-
} from "../chunk-
|
|
17
|
+
} from "../chunk-BQL7UDIB.js";
|
|
18
18
|
import {
|
|
19
19
|
createIo
|
|
20
20
|
} from "../chunk-5RUIFDTP.js";
|
|
@@ -33,7 +33,7 @@ import {
|
|
|
33
33
|
readControlMode,
|
|
34
34
|
readKeySource,
|
|
35
35
|
writeKey
|
|
36
|
-
} from "../chunk-
|
|
36
|
+
} from "../chunk-VMQU7YEJ.js";
|
|
37
37
|
import "../chunk-SAF6HGAA.js";
|
|
38
38
|
import {
|
|
39
39
|
UsageError
|
|
@@ -41,11 +41,11 @@ import {
|
|
|
41
41
|
import {
|
|
42
42
|
EXIT
|
|
43
43
|
} from "../chunk-KZERVKTD.js";
|
|
44
|
-
import "../chunk-
|
|
44
|
+
import "../chunk-L7NOG547.js";
|
|
45
45
|
import "../chunk-2UMNXADU.js";
|
|
46
46
|
import {
|
|
47
47
|
isValidApiKey
|
|
48
|
-
} from "../chunk-
|
|
48
|
+
} from "../chunk-MC5WUOJJ.js";
|
|
49
49
|
|
|
50
50
|
// bin/pushary-login.ts
|
|
51
51
|
exitOnHelpFlag("login");
|
|
@@ -4,7 +4,7 @@ import {
|
|
|
4
4
|
codexConfigToml,
|
|
5
5
|
cursorUserMcp,
|
|
6
6
|
geminiSettings
|
|
7
|
-
} from "../chunk-
|
|
7
|
+
} from "../chunk-NOVA7KZ2.js";
|
|
8
8
|
import {
|
|
9
9
|
createIo
|
|
10
10
|
} from "../chunk-5RUIFDTP.js";
|
|
@@ -19,18 +19,18 @@ import "../chunk-DINDL2CF.js";
|
|
|
19
19
|
import {
|
|
20
20
|
clearKey,
|
|
21
21
|
readKeySource
|
|
22
|
-
} from "../chunk-
|
|
22
|
+
} from "../chunk-VMQU7YEJ.js";
|
|
23
23
|
import {
|
|
24
24
|
UsageError
|
|
25
25
|
} from "../chunk-7QLSKOSU.js";
|
|
26
26
|
import {
|
|
27
27
|
EXIT
|
|
28
28
|
} from "../chunk-KZERVKTD.js";
|
|
29
|
-
import "../chunk-
|
|
29
|
+
import "../chunk-L7NOG547.js";
|
|
30
30
|
import {
|
|
31
31
|
getBaseUrl
|
|
32
32
|
} from "../chunk-2UMNXADU.js";
|
|
33
|
-
import "../chunk-
|
|
33
|
+
import "../chunk-MC5WUOJJ.js";
|
|
34
34
|
|
|
35
35
|
// bin/pushary-logout.ts
|
|
36
36
|
import { existsSync } from "fs";
|
package/dist/bin/pushary-mode.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
exitOnFailedResponse
|
|
4
|
-
} from "../chunk-
|
|
5
|
-
import "../chunk-
|
|
4
|
+
} from "../chunk-SDNTRS76.js";
|
|
5
|
+
import "../chunk-BQL7UDIB.js";
|
|
6
6
|
import {
|
|
7
7
|
createIo
|
|
8
8
|
} from "../chunk-5RUIFDTP.js";
|
|
@@ -25,7 +25,7 @@ import {
|
|
|
25
25
|
getApiKey,
|
|
26
26
|
getBaseUrl
|
|
27
27
|
} from "../chunk-2UMNXADU.js";
|
|
28
|
-
import "../chunk-
|
|
28
|
+
import "../chunk-MC5WUOJJ.js";
|
|
29
29
|
|
|
30
30
|
// src/cli/mode-request.ts
|
|
31
31
|
var parseDuration = (value) => {
|