@pushary/agent-hooks 0.89.2 → 0.89.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +9 -0
- package/README.md +40 -0
- package/dist/bin/pushary-bell-hook.js +3 -3
- package/dist/bin/pushary-bell.js +9 -10
- package/dist/bin/pushary-claude.js +106 -24
- package/dist/bin/pushary-clean.js +28 -7
- package/dist/bin/pushary-codex-bridge.js +17 -7
- package/dist/bin/pushary-codex-hook.js +8 -7
- package/dist/bin/pushary-codex.js +6 -4
- package/dist/bin/pushary-connect.js +4 -4
- package/dist/bin/pushary-daemon.js +141 -21
- package/dist/bin/pushary-disconnect.js +3 -4
- package/dist/bin/pushary-doctor.js +45 -29
- package/dist/bin/pushary-elicitation-hook.js +4 -2
- package/dist/bin/pushary-gemini-bridge.js +16 -6
- package/dist/bin/pushary-gemini-hook.js +6 -4
- package/dist/bin/pushary-hook.js +9 -7
- package/dist/bin/pushary-login.js +4 -4
- package/dist/bin/pushary-logout.js +5 -6
- package/dist/bin/pushary-mode.js +2 -2
- package/dist/bin/pushary-notification-hook.js +6 -4
- package/dist/bin/pushary-opencode-hook.js +14 -6
- package/dist/bin/pushary-permission-denied-hook.js +7 -5
- package/dist/bin/pushary-permission-hook.js +7 -5
- package/dist/bin/pushary-post-hook.js +6 -4
- package/dist/bin/pushary-prompt-hook.js +6 -4
- package/dist/bin/pushary-session-end-hook.js +6 -4
- package/dist/bin/pushary-session-start-hook.js +6 -4
- package/dist/bin/pushary-setup.js +49 -28
- package/dist/bin/pushary-stats.js +2 -2
- package/dist/bin/pushary-status.js +7 -6
- package/dist/bin/pushary-stop-hook.js +6 -4
- package/dist/bin/pushary-stopfailure-hook.js +6 -4
- package/dist/bin/pushary-suggestions.js +2 -2
- package/dist/bin/pushary-upgrade.js +63 -28
- package/dist/bin/pushary-wait.js +2 -2
- package/dist/bin/pushary.js +1 -1
- package/dist/chunk-2HYPZLYY.js +45 -0
- package/dist/{chunk-ZYPS2XMT.js → chunk-4ZHQNBDP.js} +1 -1
- package/dist/{chunk-B7JE4XHD.js → chunk-7IJYOBHL.js} +1 -1
- package/dist/{chunk-NRGRUOAR.js → chunk-FWUEYXSD.js} +4 -0
- package/dist/{chunk-J3YDT4HM.js → chunk-GKAKAOKC.js} +68 -2
- package/dist/{chunk-GOEXZ5QJ.js → chunk-GPNOHKFO.js} +9 -2
- package/dist/{chunk-SQOFGPNX.js → chunk-KJ57OPCC.js} +1 -1
- package/dist/{chunk-LGXTBUT4.js → chunk-KOPUTJQC.js} +1 -0
- package/dist/{chunk-HEQVIIBN.js → chunk-MZBT2LXW.js} +4 -4
- package/dist/{chunk-6XSC6Z2K.js → chunk-NFI2K2ZQ.js} +80 -23
- package/dist/{chunk-K42SZKYF.js → chunk-NLMSSKES.js} +251 -6
- package/dist/{chunk-4VYUMYWD.js → chunk-OBI4YMCT.js} +17 -2
- package/dist/{chunk-LUCFN47K.js → chunk-QH4AA7QV.js} +1 -1
- package/dist/{chunk-VKVHY5HD.js → chunk-V37ZXMH3.js} +11 -3
- package/dist/{chunk-MHBC2XUP.js → chunk-VP7SDXYG.js} +1 -1
- package/dist/src/index.d.ts +2 -0
- package/dist/src/index.js +7 -5
- package/package.json +1 -1
- package/dist/chunk-GIRT7677.js +0 -11
- package/dist/chunk-RN3NOEJF.js +0 -9
- package/dist/{chunk-LALHWDWL.js → chunk-W6NPWHBJ.js} +3 -3
|
@@ -4,15 +4,17 @@ import {
|
|
|
4
4
|
} from "../chunk-6CUUA7HO.js";
|
|
5
5
|
import {
|
|
6
6
|
handleNotification
|
|
7
|
-
} from "../chunk-
|
|
8
|
-
import "../chunk-
|
|
9
|
-
import "../chunk-
|
|
10
|
-
import "../chunk-
|
|
7
|
+
} from "../chunk-NFI2K2ZQ.js";
|
|
8
|
+
import "../chunk-GKAKAOKC.js";
|
|
9
|
+
import "../chunk-KOPUTJQC.js";
|
|
10
|
+
import "../chunk-2HYPZLYY.js";
|
|
11
|
+
import "../chunk-V37ZXMH3.js";
|
|
11
12
|
import "../chunk-BSZYIAZL.js";
|
|
12
13
|
import "../chunk-SAF6HGAA.js";
|
|
13
14
|
import "../chunk-OFRNZWC4.js";
|
|
14
15
|
import "../chunk-7QLSKOSU.js";
|
|
15
16
|
import "../chunk-KZERVKTD.js";
|
|
17
|
+
import "../chunk-6MTNS63X.js";
|
|
16
18
|
import "../chunk-2UMNXADU.js";
|
|
17
19
|
import "../chunk-L4C2JXJS.js";
|
|
18
20
|
|
|
@@ -19,7 +19,7 @@ import {
|
|
|
19
19
|
policyRequestFor,
|
|
20
20
|
readLastPrompt,
|
|
21
21
|
repoKeyFor
|
|
22
|
-
} from "../chunk-
|
|
22
|
+
} from "../chunk-NFI2K2ZQ.js";
|
|
23
23
|
import {
|
|
24
24
|
DEFAULT_SESSION,
|
|
25
25
|
askUser,
|
|
@@ -27,23 +27,26 @@ import {
|
|
|
27
27
|
savePendingQuestion,
|
|
28
28
|
sendNotification,
|
|
29
29
|
waitForAnswer
|
|
30
|
-
} from "../chunk-
|
|
30
|
+
} from "../chunk-GKAKAOKC.js";
|
|
31
31
|
import {
|
|
32
|
+
HOOK_FALLBACK_MAX,
|
|
32
33
|
OPENCODE_TOOL_NAMES,
|
|
33
34
|
deriveActionBody,
|
|
34
35
|
deriveBlocker,
|
|
35
36
|
deriveToolTarget,
|
|
36
37
|
describeToolCall,
|
|
37
38
|
scopePathFor
|
|
38
|
-
} from "../chunk-
|
|
39
|
+
} from "../chunk-KOPUTJQC.js";
|
|
39
40
|
import {
|
|
40
41
|
getMachineId
|
|
41
|
-
} from "../chunk-
|
|
42
|
+
} from "../chunk-2HYPZLYY.js";
|
|
43
|
+
import "../chunk-V37ZXMH3.js";
|
|
42
44
|
import "../chunk-BSZYIAZL.js";
|
|
43
45
|
import "../chunk-SAF6HGAA.js";
|
|
44
46
|
import "../chunk-OFRNZWC4.js";
|
|
45
47
|
import "../chunk-7QLSKOSU.js";
|
|
46
48
|
import "../chunk-KZERVKTD.js";
|
|
49
|
+
import "../chunk-6MTNS63X.js";
|
|
47
50
|
import {
|
|
48
51
|
getApiKey
|
|
49
52
|
} from "../chunk-2UMNXADU.js";
|
|
@@ -55,6 +58,7 @@ import {
|
|
|
55
58
|
gateOutputFor,
|
|
56
59
|
hookWaitClamped,
|
|
57
60
|
hookWaitDeadline,
|
|
61
|
+
redactSecrets,
|
|
58
62
|
resolveGate
|
|
59
63
|
} from "../chunk-L4C2JXJS.js";
|
|
60
64
|
|
|
@@ -108,9 +112,13 @@ var pollForAnswer = async (apiKey, correlationId, deadlineMs, pollInterval = 2e3
|
|
|
108
112
|
return { answered: false };
|
|
109
113
|
};
|
|
110
114
|
var agentNameFor = (input) => `${OPENCODE_AGENT.label} - ${basename(input.cwd ?? process.cwd())}`;
|
|
115
|
+
var describeFor = (input, lookup) => {
|
|
116
|
+
if (lookup.tool) return describeToolCall(lookup.tool, lookup.input, "hook");
|
|
117
|
+
return redactSecrets(input.title ?? "").trim().slice(0, HOOK_FALLBACK_MAX) || "this request";
|
|
118
|
+
};
|
|
111
119
|
var pushQuestion = async (apiKey, input, lookup, waitSeconds, mode, pollInterval = 2e3) => {
|
|
112
120
|
const projectName = basename(input.cwd ?? process.cwd());
|
|
113
|
-
const description =
|
|
121
|
+
const description = describeFor(input, lookup);
|
|
114
122
|
const result = await askUser(apiKey, {
|
|
115
123
|
question: `Allow ${description}?`,
|
|
116
124
|
type: "confirm",
|
|
@@ -147,7 +155,7 @@ var notifyApprovalNeeded = async (apiKey, input, lookup) => {
|
|
|
147
155
|
try {
|
|
148
156
|
await sendNotification(apiKey, {
|
|
149
157
|
title: "Agent needs approval",
|
|
150
|
-
body:
|
|
158
|
+
body: describeFor(input, lookup),
|
|
151
159
|
agentName: agentNameFor(input),
|
|
152
160
|
sessionId: input.session_id,
|
|
153
161
|
machineId: getMachineId()
|
|
@@ -1,22 +1,24 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
handlePermissionDenied
|
|
4
|
-
} from "../chunk-
|
|
4
|
+
} from "../chunk-MZBT2LXW.js";
|
|
5
5
|
import "../chunk-ATBKJNWS.js";
|
|
6
6
|
import "../chunk-VZKXBFUA.js";
|
|
7
7
|
import {
|
|
8
8
|
readHookInput
|
|
9
9
|
} from "../chunk-6CUUA7HO.js";
|
|
10
10
|
import "../chunk-YHG74UFF.js";
|
|
11
|
-
import "../chunk-
|
|
12
|
-
import "../chunk-
|
|
13
|
-
import "../chunk-
|
|
14
|
-
import "../chunk-
|
|
11
|
+
import "../chunk-NFI2K2ZQ.js";
|
|
12
|
+
import "../chunk-GKAKAOKC.js";
|
|
13
|
+
import "../chunk-KOPUTJQC.js";
|
|
14
|
+
import "../chunk-2HYPZLYY.js";
|
|
15
|
+
import "../chunk-V37ZXMH3.js";
|
|
15
16
|
import "../chunk-BSZYIAZL.js";
|
|
16
17
|
import "../chunk-SAF6HGAA.js";
|
|
17
18
|
import "../chunk-OFRNZWC4.js";
|
|
18
19
|
import "../chunk-7QLSKOSU.js";
|
|
19
20
|
import "../chunk-KZERVKTD.js";
|
|
21
|
+
import "../chunk-6MTNS63X.js";
|
|
20
22
|
import "../chunk-2UMNXADU.js";
|
|
21
23
|
import "../chunk-L4C2JXJS.js";
|
|
22
24
|
|
|
@@ -1,22 +1,24 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
handlePermissionRequest
|
|
4
|
-
} from "../chunk-
|
|
4
|
+
} from "../chunk-MZBT2LXW.js";
|
|
5
5
|
import "../chunk-ATBKJNWS.js";
|
|
6
6
|
import "../chunk-VZKXBFUA.js";
|
|
7
7
|
import {
|
|
8
8
|
readHookInput
|
|
9
9
|
} from "../chunk-6CUUA7HO.js";
|
|
10
10
|
import "../chunk-YHG74UFF.js";
|
|
11
|
-
import "../chunk-
|
|
12
|
-
import "../chunk-
|
|
13
|
-
import "../chunk-
|
|
14
|
-
import "../chunk-
|
|
11
|
+
import "../chunk-NFI2K2ZQ.js";
|
|
12
|
+
import "../chunk-GKAKAOKC.js";
|
|
13
|
+
import "../chunk-KOPUTJQC.js";
|
|
14
|
+
import "../chunk-2HYPZLYY.js";
|
|
15
|
+
import "../chunk-V37ZXMH3.js";
|
|
15
16
|
import "../chunk-BSZYIAZL.js";
|
|
16
17
|
import "../chunk-SAF6HGAA.js";
|
|
17
18
|
import "../chunk-OFRNZWC4.js";
|
|
18
19
|
import "../chunk-7QLSKOSU.js";
|
|
19
20
|
import "../chunk-KZERVKTD.js";
|
|
21
|
+
import "../chunk-6MTNS63X.js";
|
|
20
22
|
import "../chunk-2UMNXADU.js";
|
|
21
23
|
import "../chunk-L4C2JXJS.js";
|
|
22
24
|
|
|
@@ -4,15 +4,17 @@ import {
|
|
|
4
4
|
} from "../chunk-6CUUA7HO.js";
|
|
5
5
|
import {
|
|
6
6
|
handlePostToolUse
|
|
7
|
-
} from "../chunk-
|
|
8
|
-
import "../chunk-
|
|
9
|
-
import "../chunk-
|
|
10
|
-
import "../chunk-
|
|
7
|
+
} from "../chunk-NFI2K2ZQ.js";
|
|
8
|
+
import "../chunk-GKAKAOKC.js";
|
|
9
|
+
import "../chunk-KOPUTJQC.js";
|
|
10
|
+
import "../chunk-2HYPZLYY.js";
|
|
11
|
+
import "../chunk-V37ZXMH3.js";
|
|
11
12
|
import "../chunk-BSZYIAZL.js";
|
|
12
13
|
import "../chunk-SAF6HGAA.js";
|
|
13
14
|
import "../chunk-OFRNZWC4.js";
|
|
14
15
|
import "../chunk-7QLSKOSU.js";
|
|
15
16
|
import "../chunk-KZERVKTD.js";
|
|
17
|
+
import "../chunk-6MTNS63X.js";
|
|
16
18
|
import "../chunk-2UMNXADU.js";
|
|
17
19
|
import "../chunk-L4C2JXJS.js";
|
|
18
20
|
|
|
@@ -4,15 +4,17 @@ import {
|
|
|
4
4
|
} from "../chunk-6CUUA7HO.js";
|
|
5
5
|
import {
|
|
6
6
|
handleUserPrompt
|
|
7
|
-
} from "../chunk-
|
|
8
|
-
import "../chunk-
|
|
9
|
-
import "../chunk-
|
|
10
|
-
import "../chunk-
|
|
7
|
+
} from "../chunk-NFI2K2ZQ.js";
|
|
8
|
+
import "../chunk-GKAKAOKC.js";
|
|
9
|
+
import "../chunk-KOPUTJQC.js";
|
|
10
|
+
import "../chunk-2HYPZLYY.js";
|
|
11
|
+
import "../chunk-V37ZXMH3.js";
|
|
11
12
|
import "../chunk-BSZYIAZL.js";
|
|
12
13
|
import "../chunk-SAF6HGAA.js";
|
|
13
14
|
import "../chunk-OFRNZWC4.js";
|
|
14
15
|
import "../chunk-7QLSKOSU.js";
|
|
15
16
|
import "../chunk-KZERVKTD.js";
|
|
17
|
+
import "../chunk-6MTNS63X.js";
|
|
16
18
|
import "../chunk-2UMNXADU.js";
|
|
17
19
|
import "../chunk-L4C2JXJS.js";
|
|
18
20
|
|
|
@@ -4,15 +4,17 @@ import {
|
|
|
4
4
|
} from "../chunk-6CUUA7HO.js";
|
|
5
5
|
import {
|
|
6
6
|
handleSessionEnd
|
|
7
|
-
} from "../chunk-
|
|
8
|
-
import "../chunk-
|
|
9
|
-
import "../chunk-
|
|
10
|
-
import "../chunk-
|
|
7
|
+
} from "../chunk-NFI2K2ZQ.js";
|
|
8
|
+
import "../chunk-GKAKAOKC.js";
|
|
9
|
+
import "../chunk-KOPUTJQC.js";
|
|
10
|
+
import "../chunk-2HYPZLYY.js";
|
|
11
|
+
import "../chunk-V37ZXMH3.js";
|
|
11
12
|
import "../chunk-BSZYIAZL.js";
|
|
12
13
|
import "../chunk-SAF6HGAA.js";
|
|
13
14
|
import "../chunk-OFRNZWC4.js";
|
|
14
15
|
import "../chunk-7QLSKOSU.js";
|
|
15
16
|
import "../chunk-KZERVKTD.js";
|
|
17
|
+
import "../chunk-6MTNS63X.js";
|
|
16
18
|
import "../chunk-2UMNXADU.js";
|
|
17
19
|
import "../chunk-L4C2JXJS.js";
|
|
18
20
|
|
|
@@ -4,15 +4,17 @@ import {
|
|
|
4
4
|
} from "../chunk-6CUUA7HO.js";
|
|
5
5
|
import {
|
|
6
6
|
handleSessionStart
|
|
7
|
-
} from "../chunk-
|
|
8
|
-
import "../chunk-
|
|
9
|
-
import "../chunk-
|
|
10
|
-
import "../chunk-
|
|
7
|
+
} from "../chunk-NFI2K2ZQ.js";
|
|
8
|
+
import "../chunk-GKAKAOKC.js";
|
|
9
|
+
import "../chunk-KOPUTJQC.js";
|
|
10
|
+
import "../chunk-2HYPZLYY.js";
|
|
11
|
+
import "../chunk-V37ZXMH3.js";
|
|
11
12
|
import "../chunk-BSZYIAZL.js";
|
|
12
13
|
import "../chunk-SAF6HGAA.js";
|
|
13
14
|
import "../chunk-OFRNZWC4.js";
|
|
14
15
|
import "../chunk-7QLSKOSU.js";
|
|
15
16
|
import "../chunk-KZERVKTD.js";
|
|
17
|
+
import "../chunk-6MTNS63X.js";
|
|
16
18
|
import "../chunk-2UMNXADU.js";
|
|
17
19
|
import "../chunk-L4C2JXJS.js";
|
|
18
20
|
|
|
@@ -6,13 +6,10 @@ import {
|
|
|
6
6
|
claudeWired,
|
|
7
7
|
codexWired,
|
|
8
8
|
geminiWired
|
|
9
|
-
} from "../chunk-
|
|
9
|
+
} from "../chunk-OBI4YMCT.js";
|
|
10
10
|
import {
|
|
11
11
|
runBrowserLogin
|
|
12
12
|
} from "../chunk-Z3Z4VK5F.js";
|
|
13
|
-
import {
|
|
14
|
-
ensureDaemonRunning
|
|
15
|
-
} from "../chunk-K42SZKYF.js";
|
|
16
13
|
import {
|
|
17
14
|
describeDetection,
|
|
18
15
|
detectAllAgents,
|
|
@@ -24,7 +21,7 @@ import {
|
|
|
24
21
|
shortenHome,
|
|
25
22
|
vscodeSettingsTargets,
|
|
26
23
|
writeInstructionBlock
|
|
27
|
-
} from "../chunk-
|
|
24
|
+
} from "../chunk-QH4AA7QV.js";
|
|
28
25
|
import {
|
|
29
26
|
OPENCODE_HOOK_BINARY,
|
|
30
27
|
addOpenCodeMcpServer,
|
|
@@ -52,6 +49,10 @@ import {
|
|
|
52
49
|
guardNodeScript,
|
|
53
50
|
guardedArgv
|
|
54
51
|
} from "../chunk-AIGDBRIJ.js";
|
|
52
|
+
import {
|
|
53
|
+
ensureDaemonRunning,
|
|
54
|
+
replaceDaemonService
|
|
55
|
+
} from "../chunk-NLMSSKES.js";
|
|
55
56
|
import "../chunk-XHKBHWLX.js";
|
|
56
57
|
import {
|
|
57
58
|
installGlobally,
|
|
@@ -59,6 +60,12 @@ import {
|
|
|
59
60
|
resolveGlobalBinDir,
|
|
60
61
|
resolveGlobalBinary
|
|
61
62
|
} from "../chunk-PZA7G4CN.js";
|
|
63
|
+
import {
|
|
64
|
+
reportEvent
|
|
65
|
+
} from "../chunk-NFI2K2ZQ.js";
|
|
66
|
+
import "../chunk-GKAKAOKC.js";
|
|
67
|
+
import "../chunk-KOPUTJQC.js";
|
|
68
|
+
import "../chunk-2HYPZLYY.js";
|
|
62
69
|
import {
|
|
63
70
|
addCodexHookTrust,
|
|
64
71
|
addCodexHooks,
|
|
@@ -78,14 +85,7 @@ import {
|
|
|
78
85
|
geminiSettings,
|
|
79
86
|
pusharyConfigFile,
|
|
80
87
|
vscodePluginDir
|
|
81
|
-
} from "../chunk-
|
|
82
|
-
import "../chunk-GIRT7677.js";
|
|
83
|
-
import {
|
|
84
|
-
reportEvent
|
|
85
|
-
} from "../chunk-6XSC6Z2K.js";
|
|
86
|
-
import "../chunk-J3YDT4HM.js";
|
|
87
|
-
import "../chunk-LGXTBUT4.js";
|
|
88
|
-
import "../chunk-RN3NOEJF.js";
|
|
88
|
+
} from "../chunk-V37ZXMH3.js";
|
|
89
89
|
import {
|
|
90
90
|
confirmAppConnection,
|
|
91
91
|
connectDevice,
|
|
@@ -110,13 +110,13 @@ import {
|
|
|
110
110
|
readConfigFileKey,
|
|
111
111
|
readKeySource,
|
|
112
112
|
writeKey
|
|
113
|
-
} from "../chunk-
|
|
113
|
+
} from "../chunk-W6NPWHBJ.js";
|
|
114
114
|
import {
|
|
115
115
|
parseFlags
|
|
116
116
|
} from "../chunk-GMXKITVA.js";
|
|
117
117
|
import {
|
|
118
118
|
renderCommandHelp
|
|
119
|
-
} from "../chunk-
|
|
119
|
+
} from "../chunk-GPNOHKFO.js";
|
|
120
120
|
import {
|
|
121
121
|
installClaudeAlias,
|
|
122
122
|
resolveShellRc
|
|
@@ -125,12 +125,6 @@ import {
|
|
|
125
125
|
getPackageVersion,
|
|
126
126
|
isNewerVersion
|
|
127
127
|
} from "../chunk-DINDL2CF.js";
|
|
128
|
-
import {
|
|
129
|
-
backupFile,
|
|
130
|
-
readJsonSafe,
|
|
131
|
-
writeFileAtomic,
|
|
132
|
-
writeJsonAtomic
|
|
133
|
-
} from "../chunk-6MTNS63X.js";
|
|
134
128
|
import "../chunk-BSZYIAZL.js";
|
|
135
129
|
import "../chunk-SAF6HGAA.js";
|
|
136
130
|
import "../chunk-OFRNZWC4.js";
|
|
@@ -140,6 +134,12 @@ import {
|
|
|
140
134
|
import {
|
|
141
135
|
EXIT
|
|
142
136
|
} from "../chunk-KZERVKTD.js";
|
|
137
|
+
import {
|
|
138
|
+
backupFile,
|
|
139
|
+
readJsonSafe,
|
|
140
|
+
writeFileAtomic,
|
|
141
|
+
writeJsonAtomic
|
|
142
|
+
} from "../chunk-6MTNS63X.js";
|
|
143
143
|
import "../chunk-2UMNXADU.js";
|
|
144
144
|
import {
|
|
145
145
|
CURSOR_GATE_EVENTS,
|
|
@@ -204,6 +204,18 @@ var describeClosing = (facts) => {
|
|
|
204
204
|
exitCode: EXIT.PROBLEMS_FOUND
|
|
205
205
|
};
|
|
206
206
|
}
|
|
207
|
+
if (facts.daemonReady === false) {
|
|
208
|
+
return {
|
|
209
|
+
ok: false,
|
|
210
|
+
headline: "Setup finished with 1 problem.",
|
|
211
|
+
next: [
|
|
212
|
+
"Approvals are configured, but this machine cannot start an agent from your phone.",
|
|
213
|
+
"pushary daemon install install or repair the background service",
|
|
214
|
+
"pushary doctor verify it became reachable"
|
|
215
|
+
],
|
|
216
|
+
exitCode: EXIT.PROBLEMS_FOUND
|
|
217
|
+
};
|
|
218
|
+
}
|
|
207
219
|
if (facts.roundTripAnswered === true) {
|
|
208
220
|
return {
|
|
209
221
|
ok: true,
|
|
@@ -1133,14 +1145,17 @@ var installCursorUserHooks = (gateScript) => {
|
|
|
1133
1145
|
const bundled = readJson(join3(CURSOR_PLUGIN_DIR, "hooks", "hooks.json")).hooks ?? {};
|
|
1134
1146
|
let userHooks = {};
|
|
1135
1147
|
if (existsSync(CURSOR_USER_HOOKS)) {
|
|
1136
|
-
|
|
1137
|
-
|
|
1138
|
-
|
|
1148
|
+
const result = readJsonSafe(CURSOR_USER_HOOKS);
|
|
1149
|
+
if (result.kind === "ok") userHooks = result.value;
|
|
1150
|
+
else {
|
|
1151
|
+
let backup = "";
|
|
1139
1152
|
try {
|
|
1140
|
-
|
|
1153
|
+
backup = backupFile(CURSOR_USER_HOOKS);
|
|
1141
1154
|
} catch {
|
|
1142
1155
|
}
|
|
1143
|
-
|
|
1156
|
+
throw new Error(
|
|
1157
|
+
`Could not parse or read Cursor hooks.json; left it untouched${backup ? ` and backed it up at ${backup}` : ""}. Fix the file, then re-run setup.`
|
|
1158
|
+
);
|
|
1144
1159
|
}
|
|
1145
1160
|
}
|
|
1146
1161
|
const hooks = userHooks.hooks ?? {};
|
|
@@ -1796,6 +1811,7 @@ var main = async () => {
|
|
|
1796
1811
|
process.exit(EXIT.OK);
|
|
1797
1812
|
} else if (connectMode === "app" && canShowPairingQr() && !options.skipPhone) {
|
|
1798
1813
|
console.log(` ${dim("Pairing with your Pushary app.")}`);
|
|
1814
|
+
console.log(` ${dim("Agent control requires a paid plan after the trial. Current pricing:")} ${cyan("https://pushary.com/pricing")}`);
|
|
1799
1815
|
console.log(` ${dim("No app yet? Get it at")} ${cyan("https://pushary.com/download")}${dim(", this keeps waiting.")}`);
|
|
1800
1816
|
console.log(` ${dim("No phone? Ctrl-C, then:")} ${cyan("npx @pushary/agent-hooks setup --connect browser")}`);
|
|
1801
1817
|
markStep("pair");
|
|
@@ -2011,6 +2027,12 @@ var main = async () => {
|
|
|
2011
2027
|
const reachChecked = phone !== null;
|
|
2012
2028
|
const reachesYou = phone?.reachesYou ?? true;
|
|
2013
2029
|
markStep("closing");
|
|
2030
|
+
const keyIsTrusted = keyFromPairing || keyCheck?.kind === "ok";
|
|
2031
|
+
const daemon = keyIsTrusted && completed.length > 0 ? await (async () => {
|
|
2032
|
+
const service = await replaceDaemonService();
|
|
2033
|
+
return service.kind === "ok" ? ensureDaemonRunning({ spawnDaemon: () => {
|
|
2034
|
+
} }) : { kind: "unavailable", detail: service.detail };
|
|
2035
|
+
})() : null;
|
|
2014
2036
|
const closing = describeClosing({
|
|
2015
2037
|
agentsOk,
|
|
2016
2038
|
configuredNothing,
|
|
@@ -2018,12 +2040,11 @@ var main = async () => {
|
|
|
2018
2040
|
failed,
|
|
2019
2041
|
reachChecked,
|
|
2020
2042
|
reachesYou,
|
|
2043
|
+
daemonReady: daemon === null ? null : daemon.kind === "running" || daemon.kind === "started",
|
|
2021
2044
|
// null when the check did not run, so it changes nothing. Only an outright
|
|
2022
2045
|
// `false` is allowed to hold back "Setup complete.".
|
|
2023
2046
|
roundTripAnswered: roundTrip === null ? null : roundTrip.kind === "answered" ? true : roundTrip.kind === "unanswered" ? false : null
|
|
2024
2047
|
});
|
|
2025
|
-
const keyIsTrusted = keyFromPairing || keyCheck?.kind === "ok";
|
|
2026
|
-
const daemon = keyIsTrusted && completed.length > 0 ? await ensureDaemonRunning() : null;
|
|
2027
2048
|
console.log(` ${closing.ok ? green(bold(closing.headline)) : yellow(bold(closing.headline))}`);
|
|
2028
2049
|
if (failed.length > 0) {
|
|
2029
2050
|
console.log();
|
|
@@ -4,8 +4,8 @@ import {
|
|
|
4
4
|
} from "../chunk-VZKXBFUA.js";
|
|
5
5
|
import {
|
|
6
6
|
exitOnHelpFlag
|
|
7
|
-
} from "../chunk-
|
|
8
|
-
import "../chunk-
|
|
7
|
+
} from "../chunk-KJ57OPCC.js";
|
|
8
|
+
import "../chunk-GPNOHKFO.js";
|
|
9
9
|
import "../chunk-DINDL2CF.js";
|
|
10
10
|
import "../chunk-KZERVKTD.js";
|
|
11
11
|
import {
|
|
@@ -2,8 +2,9 @@
|
|
|
2
2
|
import {
|
|
3
3
|
describeLastSeen,
|
|
4
4
|
listMachines
|
|
5
|
-
} from "../chunk-
|
|
6
|
-
import "../chunk-
|
|
5
|
+
} from "../chunk-VP7SDXYG.js";
|
|
6
|
+
import "../chunk-2HYPZLYY.js";
|
|
7
|
+
import "../chunk-V37ZXMH3.js";
|
|
7
8
|
import {
|
|
8
9
|
describeReach,
|
|
9
10
|
fetchChannels,
|
|
@@ -19,17 +20,16 @@ import {
|
|
|
19
20
|
} from "../chunk-5RUIFDTP.js";
|
|
20
21
|
import {
|
|
21
22
|
readKeySource
|
|
22
|
-
} from "../chunk-
|
|
23
|
+
} from "../chunk-W6NPWHBJ.js";
|
|
23
24
|
import {
|
|
24
25
|
rejectUnknownFlags
|
|
25
26
|
} from "../chunk-GMXKITVA.js";
|
|
26
27
|
import {
|
|
27
28
|
exitOnHelpFlag
|
|
28
|
-
} from "../chunk-
|
|
29
|
-
import "../chunk-
|
|
29
|
+
} from "../chunk-KJ57OPCC.js";
|
|
30
|
+
import "../chunk-GPNOHKFO.js";
|
|
30
31
|
import "../chunk-BC3VCZ3E.js";
|
|
31
32
|
import "../chunk-DINDL2CF.js";
|
|
32
|
-
import "../chunk-6MTNS63X.js";
|
|
33
33
|
import "../chunk-BSZYIAZL.js";
|
|
34
34
|
import "../chunk-SAF6HGAA.js";
|
|
35
35
|
import "../chunk-OFRNZWC4.js";
|
|
@@ -39,6 +39,7 @@ import {
|
|
|
39
39
|
import {
|
|
40
40
|
EXIT
|
|
41
41
|
} from "../chunk-KZERVKTD.js";
|
|
42
|
+
import "../chunk-6MTNS63X.js";
|
|
42
43
|
import "../chunk-2UMNXADU.js";
|
|
43
44
|
import "../chunk-L4C2JXJS.js";
|
|
44
45
|
|
|
@@ -4,15 +4,17 @@ import {
|
|
|
4
4
|
} from "../chunk-6CUUA7HO.js";
|
|
5
5
|
import {
|
|
6
6
|
handleStop
|
|
7
|
-
} from "../chunk-
|
|
8
|
-
import "../chunk-
|
|
9
|
-
import "../chunk-
|
|
10
|
-
import "../chunk-
|
|
7
|
+
} from "../chunk-NFI2K2ZQ.js";
|
|
8
|
+
import "../chunk-GKAKAOKC.js";
|
|
9
|
+
import "../chunk-KOPUTJQC.js";
|
|
10
|
+
import "../chunk-2HYPZLYY.js";
|
|
11
|
+
import "../chunk-V37ZXMH3.js";
|
|
11
12
|
import "../chunk-BSZYIAZL.js";
|
|
12
13
|
import "../chunk-SAF6HGAA.js";
|
|
13
14
|
import "../chunk-OFRNZWC4.js";
|
|
14
15
|
import "../chunk-7QLSKOSU.js";
|
|
15
16
|
import "../chunk-KZERVKTD.js";
|
|
17
|
+
import "../chunk-6MTNS63X.js";
|
|
16
18
|
import "../chunk-2UMNXADU.js";
|
|
17
19
|
import "../chunk-L4C2JXJS.js";
|
|
18
20
|
|
|
@@ -4,15 +4,17 @@ import {
|
|
|
4
4
|
} from "../chunk-6CUUA7HO.js";
|
|
5
5
|
import {
|
|
6
6
|
handleStopFailure
|
|
7
|
-
} from "../chunk-
|
|
8
|
-
import "../chunk-
|
|
9
|
-
import "../chunk-
|
|
10
|
-
import "../chunk-
|
|
7
|
+
} from "../chunk-NFI2K2ZQ.js";
|
|
8
|
+
import "../chunk-GKAKAOKC.js";
|
|
9
|
+
import "../chunk-KOPUTJQC.js";
|
|
10
|
+
import "../chunk-2HYPZLYY.js";
|
|
11
|
+
import "../chunk-V37ZXMH3.js";
|
|
11
12
|
import "../chunk-BSZYIAZL.js";
|
|
12
13
|
import "../chunk-SAF6HGAA.js";
|
|
13
14
|
import "../chunk-OFRNZWC4.js";
|
|
14
15
|
import "../chunk-7QLSKOSU.js";
|
|
15
16
|
import "../chunk-KZERVKTD.js";
|
|
17
|
+
import "../chunk-6MTNS63X.js";
|
|
16
18
|
import "../chunk-2UMNXADU.js";
|
|
17
19
|
import "../chunk-L4C2JXJS.js";
|
|
18
20
|
|
|
@@ -7,8 +7,8 @@ import {
|
|
|
7
7
|
} from "../chunk-GMXKITVA.js";
|
|
8
8
|
import {
|
|
9
9
|
exitOnHelpFlag
|
|
10
|
-
} from "../chunk-
|
|
11
|
-
import "../chunk-
|
|
10
|
+
} from "../chunk-KJ57OPCC.js";
|
|
11
|
+
import "../chunk-GPNOHKFO.js";
|
|
12
12
|
import "../chunk-DINDL2CF.js";
|
|
13
13
|
import {
|
|
14
14
|
UsageError
|
|
@@ -15,12 +15,20 @@ import "../chunk-ATBKJNWS.js";
|
|
|
15
15
|
import {
|
|
16
16
|
guardBinary
|
|
17
17
|
} from "../chunk-AIGDBRIJ.js";
|
|
18
|
+
import {
|
|
19
|
+
ensureDaemonRunning,
|
|
20
|
+
replaceDaemonService
|
|
21
|
+
} from "../chunk-NLMSSKES.js";
|
|
22
|
+
import {
|
|
23
|
+
needsShell
|
|
24
|
+
} from "../chunk-XHKBHWLX.js";
|
|
18
25
|
import {
|
|
19
26
|
execNpm,
|
|
20
27
|
npmErrorMessage,
|
|
21
28
|
resolveGlobalBinDir,
|
|
22
29
|
resolveGlobalBinary
|
|
23
30
|
} from "../chunk-PZA7G4CN.js";
|
|
31
|
+
import "../chunk-2HYPZLYY.js";
|
|
24
32
|
import {
|
|
25
33
|
CODEX_HOOK_BINARY,
|
|
26
34
|
addCodexHookTrust,
|
|
@@ -35,19 +43,18 @@ import {
|
|
|
35
43
|
hasCodexHooks,
|
|
36
44
|
vscodePluginDir,
|
|
37
45
|
vscodePluginMcp
|
|
38
|
-
} from "../chunk-
|
|
39
|
-
import "../chunk-GIRT7677.js";
|
|
46
|
+
} from "../chunk-V37ZXMH3.js";
|
|
40
47
|
import {
|
|
41
48
|
exitOnHelpFlag
|
|
42
|
-
} from "../chunk-
|
|
43
|
-
import "../chunk-
|
|
49
|
+
} from "../chunk-KJ57OPCC.js";
|
|
50
|
+
import "../chunk-GPNOHKFO.js";
|
|
44
51
|
import {
|
|
45
52
|
isNewerVersion
|
|
46
53
|
} from "../chunk-DINDL2CF.js";
|
|
54
|
+
import "../chunk-KZERVKTD.js";
|
|
47
55
|
import {
|
|
48
56
|
readJsonSafe
|
|
49
57
|
} from "../chunk-6MTNS63X.js";
|
|
50
|
-
import "../chunk-KZERVKTD.js";
|
|
51
58
|
import {
|
|
52
59
|
getApiKey
|
|
53
60
|
} from "../chunk-2UMNXADU.js";
|
|
@@ -57,6 +64,7 @@ import "../chunk-L4C2JXJS.js";
|
|
|
57
64
|
import { existsSync as existsSync2 } from "fs";
|
|
58
65
|
import { homedir as homedir2 } from "os";
|
|
59
66
|
import { join as join2 } from "path";
|
|
67
|
+
import { execFileSync } from "child_process";
|
|
60
68
|
|
|
61
69
|
// src/reapply.ts
|
|
62
70
|
import { join, dirname } from "path";
|
|
@@ -263,7 +271,49 @@ var fetchLatestVersion = async () => {
|
|
|
263
271
|
return void 0;
|
|
264
272
|
}
|
|
265
273
|
};
|
|
274
|
+
var finishUpgrade = async () => {
|
|
275
|
+
let apiKey;
|
|
276
|
+
try {
|
|
277
|
+
apiKey = getApiKey();
|
|
278
|
+
} catch {
|
|
279
|
+
apiKey = void 0;
|
|
280
|
+
}
|
|
281
|
+
const refreshed = reapplyAllAgents(apiKey);
|
|
282
|
+
let daemonReady = true;
|
|
283
|
+
if (apiKey) {
|
|
284
|
+
const service = await replaceDaemonService();
|
|
285
|
+
const daemon = service.kind === "ok" ? await ensureDaemonRunning({ spawnDaemon: () => {
|
|
286
|
+
} }) : null;
|
|
287
|
+
daemonReady = service.kind === "ok" && (daemon?.kind === "running" || daemon?.kind === "started");
|
|
288
|
+
}
|
|
289
|
+
console.log();
|
|
290
|
+
if (refreshed.length > 0) {
|
|
291
|
+
console.log("Refreshed so the new hook set is active now:");
|
|
292
|
+
for (const agent of refreshed) {
|
|
293
|
+
const parts = [agent.result.hooks ? "hooks" : null, agent.result.mcp ? "MCP key" : null].filter(Boolean).join(" + ");
|
|
294
|
+
console.log(` ${agent.label.padEnd(14)} ${parts}`);
|
|
295
|
+
}
|
|
296
|
+
if (!apiKey) {
|
|
297
|
+
console.log();
|
|
298
|
+
console.log("No key was readable here, so MCP entries kept the key they already had.");
|
|
299
|
+
}
|
|
300
|
+
} else {
|
|
301
|
+
console.log("No agent config on this machine needed refreshing.");
|
|
302
|
+
}
|
|
303
|
+
console.log();
|
|
304
|
+
if (!daemonReady) {
|
|
305
|
+
console.error("Upgrade installed, but the background service did not start. Run: pushary daemon install");
|
|
306
|
+
process.exitCode = 1;
|
|
307
|
+
return;
|
|
308
|
+
}
|
|
309
|
+
console.log("Done. Your hooks and background service use the new global install.");
|
|
310
|
+
console.log("Verify with: pushary doctor");
|
|
311
|
+
};
|
|
266
312
|
var main = async () => {
|
|
313
|
+
if (process.argv.includes("--finish-upgrade")) {
|
|
314
|
+
await finishUpgrade();
|
|
315
|
+
return;
|
|
316
|
+
}
|
|
267
317
|
const installed = getInstalledVersion();
|
|
268
318
|
if (!installed) {
|
|
269
319
|
const found = detectInstallModes();
|
|
@@ -294,29 +344,14 @@ var main = async () => {
|
|
|
294
344
|
console.error(`Upgrade failed: ${npmErrorMessage(err)}`);
|
|
295
345
|
process.exit(1);
|
|
296
346
|
}
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
apiKey = void 0;
|
|
302
|
-
}
|
|
303
|
-
const refreshed = reapplyAllAgents(apiKey);
|
|
304
|
-
console.log();
|
|
305
|
-
if (refreshed.length > 0) {
|
|
306
|
-
console.log("Refreshed so the new hook set is active now:");
|
|
307
|
-
for (const agent of refreshed) {
|
|
308
|
-
const parts = [agent.result.hooks ? "hooks" : null, agent.result.mcp ? "MCP key" : null].filter(Boolean).join(" + ");
|
|
309
|
-
console.log(` ${agent.label.padEnd(14)} ${parts}`);
|
|
310
|
-
}
|
|
311
|
-
if (!apiKey) {
|
|
312
|
-
console.log();
|
|
313
|
-
console.log("No key was readable here, so MCP entries kept the key they already had.");
|
|
314
|
-
}
|
|
315
|
-
} else {
|
|
316
|
-
console.log("No agent config on this machine needed refreshing.");
|
|
347
|
+
const upgradedBinary = resolveGlobalBinary("pushary-upgrade");
|
|
348
|
+
if (!upgradedBinary) {
|
|
349
|
+
console.error("Upgrade installed, but the new pushary-upgrade binary could not be found on PATH.");
|
|
350
|
+
process.exit(1);
|
|
317
351
|
}
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
352
|
+
execFileSync(upgradedBinary, ["--finish-upgrade"], {
|
|
353
|
+
stdio: "inherit",
|
|
354
|
+
shell: needsShell(upgradedBinary)
|
|
355
|
+
});
|
|
321
356
|
};
|
|
322
357
|
main();
|