@pushary/agent-hooks 0.95.6 → 0.95.7
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 +7 -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 +16 -16
- 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-C7BFOC35.js → chunk-4OSQZ5TB.js} +2 -2
- package/dist/{chunk-HKQ6CD32.js → chunk-54W7ELDQ.js} +1 -1
- package/dist/{chunk-32WFHA77.js → chunk-5GKNAQTG.js} +1 -1
- package/dist/{chunk-XJ6CXTSB.js → chunk-6W2WGNO5.js} +7 -7
- package/dist/{chunk-CDBTCEKE.js → chunk-7RNY3UHJ.js} +3 -3
- package/dist/{chunk-FBO5WS3D.js → chunk-BGX4QUQF.js} +1 -1
- package/dist/{chunk-6II5RBAS.js → chunk-BQL7UDIB.js} +1 -1
- package/dist/{chunk-HHODMHTH.js → chunk-CNUDZS4V.js} +3 -3
- package/dist/chunk-CVWG2N3Y.js +16 -0
- package/dist/{chunk-WZ63WTAZ.js → chunk-EMGGUO2Q.js} +1 -1
- package/dist/{chunk-KNIVXEW4.js → chunk-FRXZMCVA.js} +1 -1
- package/dist/{chunk-A2M6FGUF.js → chunk-GQRU4KJF.js} +3 -3
- package/dist/{chunk-XKIB2FQY.js → chunk-HAXZ6CBF.js} +8 -8
- package/dist/{chunk-R4MBUCPQ.js → chunk-IZVK6FKD.js} +1 -1
- package/dist/{chunk-KAWLZTRJ.js → chunk-L7NOG547.js} +1 -1
- package/dist/{chunk-RPHXG4HI.js → chunk-NKUE5SJB.js} +2 -2
- package/dist/{chunk-DSCGKZO5.js → chunk-PQGLDN4V.js} +2 -2
- package/dist/{chunk-FVTFSYKB.js → chunk-QJPYJVL3.js} +1 -1
- 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-OIZVYUED.js → chunk-USWT4PTR.js} +1 -1
- package/dist/{chunk-SRFA5BOO.js → chunk-VDI645ZX.js} +1 -1
- package/dist/{chunk-JZSWA3VT.js → chunk-VERXHIQF.js} +1 -1
- package/dist/{chunk-FHIVWF4B.js → chunk-VIUOGMT5.js} +14 -14
- package/dist/{chunk-6MRPTYYH.js → chunk-VMQU7YEJ.js} +1 -1
- package/dist/{chunk-7N3D4GN7.js → chunk-VMZ4SWQD.js} +4 -4
- package/dist/{chunk-WRK6RAA5.js → chunk-WAUAYRUQ.js} +4 -4
- package/dist/{chunk-BS5XR4J7.js → chunk-WPS5IM7B.js} +3 -3
- package/dist/{chunk-ZJ6QXXBC.js → chunk-XJQOVWBQ.js} +11 -11
- 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-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,43 +1,43 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
readHookInput
|
|
4
|
-
} from "../chunk-
|
|
4
|
+
} from "../chunk-IZVK6FKD.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-HAXZ6CBF.js";
|
|
9
|
+
import "../chunk-EMGGUO2Q.js";
|
|
10
|
+
import "../chunk-WPS5IM7B.js";
|
|
11
|
+
import "../chunk-XZWUOCJZ.js";
|
|
12
|
+
import "../chunk-QJPYJVL3.js";
|
|
13
|
+
import "../chunk-GQRU4KJF.js";
|
|
14
|
+
import "../chunk-VMZ4SWQD.js";
|
|
15
|
+
import "../chunk-7RNY3UHJ.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-4OSQZ5TB.js";
|
|
32
|
+
import "../chunk-BGX4QUQF.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-PQGLDN4V.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-4OSQZ5TB.js";
|
|
30
|
+
import "../chunk-BGX4QUQF.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-IZVK6FKD.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-HAXZ6CBF.js";
|
|
14
|
+
import "../chunk-EMGGUO2Q.js";
|
|
15
|
+
import "../chunk-WPS5IM7B.js";
|
|
16
|
+
import "../chunk-XZWUOCJZ.js";
|
|
17
|
+
import "../chunk-QJPYJVL3.js";
|
|
18
|
+
import "../chunk-GQRU4KJF.js";
|
|
19
|
+
import "../chunk-VMZ4SWQD.js";
|
|
20
|
+
import "../chunk-7RNY3UHJ.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-XJQOVWBQ.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-4OSQZ5TB.js";
|
|
62
|
+
import "../chunk-BGX4QUQF.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-VIUOGMT5.js";
|
|
5
|
+
import "../chunk-VDI645ZX.js";
|
|
6
|
+
import "../chunk-5GKNAQTG.js";
|
|
7
7
|
import {
|
|
8
8
|
readHookInput
|
|
9
|
-
} from "../chunk-
|
|
9
|
+
} from "../chunk-IZVK6FKD.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-HAXZ6CBF.js";
|
|
12
|
+
import "../chunk-EMGGUO2Q.js";
|
|
13
|
+
import "../chunk-WPS5IM7B.js";
|
|
14
|
+
import "../chunk-XZWUOCJZ.js";
|
|
15
|
+
import "../chunk-QJPYJVL3.js";
|
|
16
|
+
import "../chunk-GQRU4KJF.js";
|
|
17
|
+
import "../chunk-VMZ4SWQD.js";
|
|
18
|
+
import "../chunk-7RNY3UHJ.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-XJQOVWBQ.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-4OSQZ5TB.js";
|
|
31
|
+
import "../chunk-BGX4QUQF.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-VMZ4SWQD.js";
|
|
9
9
|
import "../chunk-XHKBHWLX.js";
|
|
10
10
|
import "../chunk-L4ZCFMWW.js";
|
|
11
|
-
import "../chunk-
|
|
12
|
-
import "../chunk-
|
|
11
|
+
import "../chunk-4OSQZ5TB.js";
|
|
12
|
+
import "../chunk-BGX4QUQF.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-BGX4QUQF.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) => {
|
|
@@ -1,40 +1,40 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
readHookInput
|
|
4
|
-
} from "../chunk-
|
|
5
|
-
import "../chunk-
|
|
6
|
-
import "../chunk-
|
|
7
|
-
import "../chunk-
|
|
8
|
-
import "../chunk-
|
|
9
|
-
import "../chunk-
|
|
10
|
-
import "../chunk-
|
|
11
|
-
import "../chunk-
|
|
12
|
-
import "../chunk-
|
|
4
|
+
} from "../chunk-IZVK6FKD.js";
|
|
5
|
+
import "../chunk-HAXZ6CBF.js";
|
|
6
|
+
import "../chunk-EMGGUO2Q.js";
|
|
7
|
+
import "../chunk-WPS5IM7B.js";
|
|
8
|
+
import "../chunk-XZWUOCJZ.js";
|
|
9
|
+
import "../chunk-QJPYJVL3.js";
|
|
10
|
+
import "../chunk-GQRU4KJF.js";
|
|
11
|
+
import "../chunk-VMZ4SWQD.js";
|
|
12
|
+
import "../chunk-7RNY3UHJ.js";
|
|
13
13
|
import "../chunk-GOPIMNVC.js";
|
|
14
14
|
import "../chunk-3AJIK5AO.js";
|
|
15
|
-
import "../chunk-
|
|
15
|
+
import "../chunk-SKPXQRKN.js";
|
|
16
16
|
import "../chunk-EQRS3SGM.js";
|
|
17
|
-
import "../chunk-
|
|
17
|
+
import "../chunk-VERXHIQF.js";
|
|
18
18
|
import "../chunk-XHKBHWLX.js";
|
|
19
19
|
import "../chunk-L4ZCFMWW.js";
|
|
20
20
|
import {
|
|
21
21
|
handleNotification
|
|
22
|
-
} from "../chunk-
|
|
22
|
+
} from "../chunk-XJQOVWBQ.js";
|
|
23
|
+
import "../chunk-Z4JVEL7R.js";
|
|
24
|
+
import "../chunk-XUTSZYYJ.js";
|
|
23
25
|
import "../chunk-XS33QBJA.js";
|
|
24
|
-
import "../chunk-
|
|
25
|
-
import "../chunk-
|
|
26
|
-
import "../chunk-C7BFOC35.js";
|
|
27
|
-
import "../chunk-FBO5WS3D.js";
|
|
26
|
+
import "../chunk-4OSQZ5TB.js";
|
|
27
|
+
import "../chunk-BGX4QUQF.js";
|
|
28
28
|
import "../chunk-GMXKITVA.js";
|
|
29
29
|
import "../chunk-DINDL2CF.js";
|
|
30
|
-
import "../chunk-
|
|
30
|
+
import "../chunk-VMQU7YEJ.js";
|
|
31
31
|
import "../chunk-EYRGBYZG.js";
|
|
32
32
|
import "../chunk-SAF6HGAA.js";
|
|
33
33
|
import "../chunk-7QLSKOSU.js";
|
|
34
34
|
import "../chunk-KZERVKTD.js";
|
|
35
|
-
import "../chunk-
|
|
35
|
+
import "../chunk-L7NOG547.js";
|
|
36
36
|
import "../chunk-2UMNXADU.js";
|
|
37
|
-
import "../chunk-
|
|
37
|
+
import "../chunk-MC5WUOJJ.js";
|
|
38
38
|
|
|
39
39
|
// bin/pushary-notification-hook.ts
|
|
40
40
|
var main = async () => {
|
|
@@ -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-IZVK6FKD.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-HAXZ6CBF.js";
|
|
14
|
+
import "../chunk-EMGGUO2Q.js";
|
|
15
|
+
import "../chunk-WPS5IM7B.js";
|
|
16
|
+
import "../chunk-XZWUOCJZ.js";
|
|
17
|
+
import "../chunk-QJPYJVL3.js";
|
|
18
|
+
import "../chunk-GQRU4KJF.js";
|
|
19
|
+
import "../chunk-VMZ4SWQD.js";
|
|
20
|
+
import "../chunk-7RNY3UHJ.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 {
|
|
@@ -35,16 +35,7 @@ import {
|
|
|
35
35
|
policyRequestFor,
|
|
36
36
|
readLastPrompt,
|
|
37
37
|
repoKeyFor
|
|
38
|
-
} from "../chunk-
|
|
39
|
-
import {
|
|
40
|
-
DECISION_STOP_REASON,
|
|
41
|
-
askUser,
|
|
42
|
-
cancelQuestion,
|
|
43
|
-
isDecisionStopped,
|
|
44
|
-
isLocalQuestionHandoff,
|
|
45
|
-
sendNotification,
|
|
46
|
-
waitForQuestion
|
|
47
|
-
} from "../chunk-XS33QBJA.js";
|
|
38
|
+
} from "../chunk-XJQOVWBQ.js";
|
|
48
39
|
import {
|
|
49
40
|
HOOK_FALLBACK_MAX,
|
|
50
41
|
OPENCODE_TOOL_NAMES,
|
|
@@ -54,20 +45,29 @@ import {
|
|
|
54
45
|
deriveToolTarget,
|
|
55
46
|
describeToolCall,
|
|
56
47
|
scopePathFor
|
|
57
|
-
} from "../chunk-
|
|
58
|
-
import "../chunk-
|
|
48
|
+
} from "../chunk-Z4JVEL7R.js";
|
|
49
|
+
import "../chunk-XUTSZYYJ.js";
|
|
50
|
+
import {
|
|
51
|
+
DECISION_STOP_REASON,
|
|
52
|
+
askUser,
|
|
53
|
+
cancelQuestion,
|
|
54
|
+
isDecisionStopped,
|
|
55
|
+
isLocalQuestionHandoff,
|
|
56
|
+
sendNotification,
|
|
57
|
+
waitForQuestion
|
|
58
|
+
} from "../chunk-XS33QBJA.js";
|
|
59
59
|
import {
|
|
60
60
|
getMachineId
|
|
61
|
-
} from "../chunk-
|
|
62
|
-
import "../chunk-
|
|
61
|
+
} from "../chunk-4OSQZ5TB.js";
|
|
62
|
+
import "../chunk-BGX4QUQF.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";
|
|
@@ -81,7 +81,7 @@ import {
|
|
|
81
81
|
hookWaitDeadline,
|
|
82
82
|
redactSecrets,
|
|
83
83
|
resolveGate
|
|
84
|
-
} from "../chunk-
|
|
84
|
+
} from "../chunk-MC5WUOJJ.js";
|
|
85
85
|
|
|
86
86
|
// bin/pushary-opencode-hook.ts
|
|
87
87
|
import { basename } from "path";
|