@pushary/agent-hooks 0.62.0 → 0.62.2
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 +62 -0
- package/dist/bin/pushary-claude.js +5 -2
- package/dist/bin/pushary-clean.js +24 -6
- package/dist/bin/pushary-codex-hook.js +5 -2
- package/dist/bin/pushary-codex.js +5 -2
- package/dist/bin/pushary-connect.js +16 -13
- package/dist/bin/pushary-daemon.js +5 -4
- package/dist/bin/pushary-doctor.js +20 -14
- package/dist/bin/pushary-gemini-hook.js +5 -2
- package/dist/bin/pushary-hook.js +8 -5
- package/dist/bin/pushary-login.js +15 -11
- package/dist/bin/pushary-logout.js +11 -9
- package/dist/bin/pushary-mode.js +29 -6
- package/dist/bin/pushary-notification-hook.js +5 -2
- package/dist/bin/pushary-permission-denied-hook.js +6 -3
- package/dist/bin/pushary-permission-hook.js +6 -3
- package/dist/bin/pushary-post-hook.js +5 -2
- package/dist/bin/pushary-prompt-hook.js +5 -2
- package/dist/bin/pushary-session-end-hook.js +5 -2
- package/dist/bin/pushary-session-start-hook.js +5 -2
- package/dist/bin/pushary-setup.js +21 -16
- package/dist/bin/pushary-stats.js +3 -2
- package/dist/bin/pushary-status.js +22 -8
- package/dist/bin/pushary-stop-hook.js +5 -2
- package/dist/bin/pushary-stopfailure-hook.js +5 -2
- package/dist/bin/pushary-suggestions.js +27 -2
- package/dist/bin/pushary-upgrade.js +16 -9
- package/dist/bin/pushary-wait.js +29 -6
- package/dist/bin/pushary.js +9 -2
- package/dist/{chunk-HIIBSYFJ.js → chunk-5ZDYDU2Q.js} +5 -1
- package/dist/chunk-6MTNS63X.js +55 -0
- package/dist/{chunk-SP7OZXCQ.js → chunk-7OXIC7E3.js} +1 -15
- package/dist/{chunk-HNTKTK5B.js → chunk-BSZYIAZL.js} +4 -0
- package/dist/{chunk-247C4RE5.js → chunk-COC6NPWG.js} +12 -59
- package/dist/{chunk-YJ7YZRVV.js → chunk-G4TARJAY.js} +8 -54
- package/dist/{chunk-N4DA4CJB.js → chunk-GMXKITVA.js} +13 -0
- package/dist/chunk-KZERVKTD.js +16 -0
- package/dist/{chunk-3O27ZSRE.js → chunk-NGZMVCXN.js} +1 -1
- package/dist/chunk-SAF6HGAA.js +57 -0
- package/dist/{chunk-5SO3CEGJ.js → chunk-SDXF5I46.js} +1 -1
- package/dist/{chunk-ONVEYEVR.js → chunk-SR52774M.js} +2 -2
- package/dist/{chunk-IIZZYUWK.js → chunk-WXFEK7KD.js} +4 -2
- package/dist/{chunk-QHOVJXOT.js → chunk-Z3Z4VK5F.js} +2 -1
- package/dist/src/index.js +6 -3
- package/package.json +1 -1
|
@@ -1,11 +1,14 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
handleUserPrompt
|
|
4
|
-
} from "../chunk-
|
|
5
|
-
import "../chunk-
|
|
4
|
+
} from "../chunk-5ZDYDU2Q.js";
|
|
5
|
+
import "../chunk-BSZYIAZL.js";
|
|
6
|
+
import "../chunk-SAF6HGAA.js";
|
|
7
|
+
import "../chunk-7QLSKOSU.js";
|
|
6
8
|
import "../chunk-DQAN3JQP.js";
|
|
7
9
|
import "../chunk-RN3NOEJF.js";
|
|
8
10
|
import "../chunk-2UMNXADU.js";
|
|
11
|
+
import "../chunk-KZERVKTD.js";
|
|
9
12
|
|
|
10
13
|
// bin/pushary-prompt-hook.ts
|
|
11
14
|
var main = async () => {
|
|
@@ -1,11 +1,14 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
handleSessionEnd
|
|
4
|
-
} from "../chunk-
|
|
5
|
-
import "../chunk-
|
|
4
|
+
} from "../chunk-5ZDYDU2Q.js";
|
|
5
|
+
import "../chunk-BSZYIAZL.js";
|
|
6
|
+
import "../chunk-SAF6HGAA.js";
|
|
7
|
+
import "../chunk-7QLSKOSU.js";
|
|
6
8
|
import "../chunk-DQAN3JQP.js";
|
|
7
9
|
import "../chunk-RN3NOEJF.js";
|
|
8
10
|
import "../chunk-2UMNXADU.js";
|
|
11
|
+
import "../chunk-KZERVKTD.js";
|
|
9
12
|
|
|
10
13
|
// bin/pushary-session-end-hook.ts
|
|
11
14
|
var main = async () => {
|
|
@@ -1,11 +1,14 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
handleSessionStart
|
|
4
|
-
} from "../chunk-
|
|
5
|
-
import "../chunk-
|
|
4
|
+
} from "../chunk-5ZDYDU2Q.js";
|
|
5
|
+
import "../chunk-BSZYIAZL.js";
|
|
6
|
+
import "../chunk-SAF6HGAA.js";
|
|
7
|
+
import "../chunk-7QLSKOSU.js";
|
|
6
8
|
import "../chunk-DQAN3JQP.js";
|
|
7
9
|
import "../chunk-RN3NOEJF.js";
|
|
8
10
|
import "../chunk-2UMNXADU.js";
|
|
11
|
+
import "../chunk-KZERVKTD.js";
|
|
9
12
|
|
|
10
13
|
// bin/pushary-session-start-hook.ts
|
|
11
14
|
var main = async () => {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
runBrowserLogin
|
|
4
|
-
} from "../chunk-
|
|
4
|
+
} from "../chunk-Z3Z4VK5F.js";
|
|
5
5
|
import {
|
|
6
6
|
addClaudeMcpServer,
|
|
7
7
|
addPusharyHooks,
|
|
@@ -35,27 +35,26 @@ import {
|
|
|
35
35
|
connectViaAppPairing,
|
|
36
36
|
printConnectInstructions,
|
|
37
37
|
setHumanStream
|
|
38
|
-
} from "../chunk-
|
|
38
|
+
} from "../chunk-NGZMVCXN.js";
|
|
39
39
|
import "../chunk-3EGEA4KH.js";
|
|
40
|
-
import {
|
|
41
|
-
parseFlags
|
|
42
|
-
} from "../chunk-N4DA4CJB.js";
|
|
43
40
|
import {
|
|
44
41
|
KEY_FILE_MODE,
|
|
45
|
-
backupFile,
|
|
46
42
|
exportLine,
|
|
43
|
+
writeKey
|
|
44
|
+
} from "../chunk-COC6NPWG.js";
|
|
45
|
+
import {
|
|
46
|
+
backupFile,
|
|
47
47
|
readJsonSafe,
|
|
48
48
|
writeFileAtomic,
|
|
49
|
-
writeJsonAtomic
|
|
50
|
-
|
|
51
|
-
} from "../chunk-247C4RE5.js";
|
|
49
|
+
writeJsonAtomic
|
|
50
|
+
} from "../chunk-6MTNS63X.js";
|
|
52
51
|
import {
|
|
53
52
|
checkApiKey,
|
|
54
53
|
describeKeyCheck
|
|
55
|
-
} from "../chunk-
|
|
54
|
+
} from "../chunk-G4TARJAY.js";
|
|
56
55
|
import {
|
|
57
|
-
|
|
58
|
-
} from "../chunk-
|
|
56
|
+
parseFlags
|
|
57
|
+
} from "../chunk-GMXKITVA.js";
|
|
59
58
|
import {
|
|
60
59
|
installClaudeAlias,
|
|
61
60
|
resolveShellRc
|
|
@@ -68,19 +67,25 @@ import {
|
|
|
68
67
|
resolveGlobalBinary
|
|
69
68
|
} from "../chunk-MUEW424A.js";
|
|
70
69
|
import {
|
|
71
|
-
EXIT,
|
|
72
70
|
getPackageVersion,
|
|
73
71
|
renderCommandHelp
|
|
74
|
-
} from "../chunk-
|
|
72
|
+
} from "../chunk-7OXIC7E3.js";
|
|
75
73
|
import {
|
|
76
74
|
reportEvent
|
|
77
|
-
} from "../chunk-
|
|
78
|
-
import "../chunk-
|
|
75
|
+
} from "../chunk-5ZDYDU2Q.js";
|
|
76
|
+
import "../chunk-BSZYIAZL.js";
|
|
77
|
+
import "../chunk-SAF6HGAA.js";
|
|
78
|
+
import {
|
|
79
|
+
UsageError
|
|
80
|
+
} from "../chunk-7QLSKOSU.js";
|
|
79
81
|
import {
|
|
80
82
|
isValidApiKey
|
|
81
83
|
} from "../chunk-DQAN3JQP.js";
|
|
82
84
|
import "../chunk-RN3NOEJF.js";
|
|
83
85
|
import "../chunk-2UMNXADU.js";
|
|
86
|
+
import {
|
|
87
|
+
EXIT
|
|
88
|
+
} from "../chunk-KZERVKTD.js";
|
|
84
89
|
|
|
85
90
|
// bin/pushary-setup.ts
|
|
86
91
|
import { existsSync, readFileSync, writeFileSync, mkdirSync, cpSync, rmSync, renameSync } from "fs";
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
exitOnHelpFlag
|
|
4
|
-
} from "../chunk-
|
|
5
|
-
import "../chunk-
|
|
4
|
+
} from "../chunk-WXFEK7KD.js";
|
|
5
|
+
import "../chunk-7OXIC7E3.js";
|
|
6
6
|
import {
|
|
7
7
|
readLedgerSummary
|
|
8
8
|
} from "../chunk-WLGEY4UX.js";
|
|
@@ -10,6 +10,7 @@ import "../chunk-DQAN3JQP.js";
|
|
|
10
10
|
import {
|
|
11
11
|
getApiKey
|
|
12
12
|
} from "../chunk-2UMNXADU.js";
|
|
13
|
+
import "../chunk-KZERVKTD.js";
|
|
13
14
|
|
|
14
15
|
// bin/pushary-stats.ts
|
|
15
16
|
exitOnHelpFlag("stats");
|
|
@@ -3,29 +3,37 @@ import {
|
|
|
3
3
|
describeReach,
|
|
4
4
|
fetchChannels,
|
|
5
5
|
reachVerdict
|
|
6
|
-
} from "../chunk-
|
|
6
|
+
} from "../chunk-NGZMVCXN.js";
|
|
7
7
|
import "../chunk-3EGEA4KH.js";
|
|
8
8
|
import {
|
|
9
9
|
readKeySource
|
|
10
|
-
} from "../chunk-
|
|
10
|
+
} from "../chunk-COC6NPWG.js";
|
|
11
|
+
import "../chunk-6MTNS63X.js";
|
|
11
12
|
import {
|
|
12
13
|
checkApiKey,
|
|
13
14
|
describeKeyCheck
|
|
14
|
-
} from "../chunk-
|
|
15
|
+
} from "../chunk-G4TARJAY.js";
|
|
15
16
|
import {
|
|
16
17
|
createIo
|
|
17
18
|
} from "../chunk-TX7KBKT7.js";
|
|
18
|
-
import
|
|
19
|
+
import {
|
|
20
|
+
rejectUnknownFlags
|
|
21
|
+
} from "../chunk-GMXKITVA.js";
|
|
19
22
|
import "../chunk-BC3VCZ3E.js";
|
|
20
23
|
import {
|
|
21
24
|
exitOnHelpFlag
|
|
22
|
-
} from "../chunk-
|
|
25
|
+
} from "../chunk-WXFEK7KD.js";
|
|
26
|
+
import "../chunk-7OXIC7E3.js";
|
|
27
|
+
import "../chunk-BSZYIAZL.js";
|
|
28
|
+
import "../chunk-SAF6HGAA.js";
|
|
23
29
|
import {
|
|
24
|
-
|
|
25
|
-
} from "../chunk-
|
|
26
|
-
import "../chunk-HNTKTK5B.js";
|
|
30
|
+
UsageError
|
|
31
|
+
} from "../chunk-7QLSKOSU.js";
|
|
27
32
|
import "../chunk-DQAN3JQP.js";
|
|
28
33
|
import "../chunk-2UMNXADU.js";
|
|
34
|
+
import {
|
|
35
|
+
EXIT
|
|
36
|
+
} from "../chunk-KZERVKTD.js";
|
|
29
37
|
|
|
30
38
|
// src/status.ts
|
|
31
39
|
var keySourceLine = (source) => {
|
|
@@ -170,6 +178,7 @@ var statusJson = (facts, report) => ({
|
|
|
170
178
|
exitOnHelpFlag("status");
|
|
171
179
|
var { bold, dim, green, red, yellow } = createIo();
|
|
172
180
|
var args = process.argv.slice(2);
|
|
181
|
+
rejectUnknownFlags(args.filter((a) => a !== "status"), ["--json"]);
|
|
173
182
|
var json = args.includes("--json");
|
|
174
183
|
var main = async () => {
|
|
175
184
|
const source = readKeySource();
|
|
@@ -201,6 +210,11 @@ var main = async () => {
|
|
|
201
210
|
process.exit(report.exitCode);
|
|
202
211
|
};
|
|
203
212
|
main().catch((err) => {
|
|
213
|
+
if (err instanceof UsageError) {
|
|
214
|
+
process.stderr.write(` ! ${err.message}
|
|
215
|
+
`);
|
|
216
|
+
process.exit(EXIT.USAGE);
|
|
217
|
+
}
|
|
204
218
|
console.error(` ${yellow("!")} status failed: ${err instanceof Error ? err.message : String(err)}`);
|
|
205
219
|
process.exit(1);
|
|
206
220
|
});
|
|
@@ -1,11 +1,14 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
handleStop
|
|
4
|
-
} from "../chunk-
|
|
5
|
-
import "../chunk-
|
|
4
|
+
} from "../chunk-5ZDYDU2Q.js";
|
|
5
|
+
import "../chunk-BSZYIAZL.js";
|
|
6
|
+
import "../chunk-SAF6HGAA.js";
|
|
7
|
+
import "../chunk-7QLSKOSU.js";
|
|
6
8
|
import "../chunk-DQAN3JQP.js";
|
|
7
9
|
import "../chunk-RN3NOEJF.js";
|
|
8
10
|
import "../chunk-2UMNXADU.js";
|
|
11
|
+
import "../chunk-KZERVKTD.js";
|
|
9
12
|
|
|
10
13
|
// bin/pushary-stop-hook.ts
|
|
11
14
|
var main = async () => {
|
|
@@ -1,11 +1,14 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
handleStopFailure
|
|
4
|
-
} from "../chunk-
|
|
5
|
-
import "../chunk-
|
|
4
|
+
} from "../chunk-5ZDYDU2Q.js";
|
|
5
|
+
import "../chunk-BSZYIAZL.js";
|
|
6
|
+
import "../chunk-SAF6HGAA.js";
|
|
7
|
+
import "../chunk-7QLSKOSU.js";
|
|
6
8
|
import "../chunk-DQAN3JQP.js";
|
|
7
9
|
import "../chunk-RN3NOEJF.js";
|
|
8
10
|
import "../chunk-2UMNXADU.js";
|
|
11
|
+
import "../chunk-KZERVKTD.js";
|
|
9
12
|
|
|
10
13
|
// bin/pushary-stopfailure-hook.ts
|
|
11
14
|
var main = async () => {
|
|
@@ -2,14 +2,23 @@
|
|
|
2
2
|
import {
|
|
3
3
|
createIo
|
|
4
4
|
} from "../chunk-TX7KBKT7.js";
|
|
5
|
+
import {
|
|
6
|
+
rejectUnknownFlags
|
|
7
|
+
} from "../chunk-GMXKITVA.js";
|
|
5
8
|
import {
|
|
6
9
|
exitOnHelpFlag
|
|
7
|
-
} from "../chunk-
|
|
8
|
-
import "../chunk-
|
|
10
|
+
} from "../chunk-WXFEK7KD.js";
|
|
11
|
+
import "../chunk-7OXIC7E3.js";
|
|
12
|
+
import {
|
|
13
|
+
UsageError
|
|
14
|
+
} from "../chunk-7QLSKOSU.js";
|
|
9
15
|
import {
|
|
10
16
|
getApiKey,
|
|
11
17
|
getBaseUrl
|
|
12
18
|
} from "../chunk-2UMNXADU.js";
|
|
19
|
+
import {
|
|
20
|
+
EXIT
|
|
21
|
+
} from "../chunk-KZERVKTD.js";
|
|
13
22
|
|
|
14
23
|
// bin/pushary-suggestions.ts
|
|
15
24
|
exitOnHelpFlag("suggestions");
|
|
@@ -22,6 +31,17 @@ var errorMessage = async (res) => {
|
|
|
22
31
|
return `HTTP ${res.status}`;
|
|
23
32
|
}
|
|
24
33
|
};
|
|
34
|
+
{
|
|
35
|
+
const raw = process.argv.slice(2);
|
|
36
|
+
const positional = raw[0] === "suggestions" ? raw.slice(1) : raw;
|
|
37
|
+
try {
|
|
38
|
+
rejectUnknownFlags(positional, []);
|
|
39
|
+
} catch (err) {
|
|
40
|
+
process.stderr.write(` ! ${err instanceof Error ? err.message : String(err)}
|
|
41
|
+
`);
|
|
42
|
+
process.exit(EXIT.USAGE);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
25
45
|
var main = async () => {
|
|
26
46
|
const apiKey = getApiKey();
|
|
27
47
|
const baseUrl = getBaseUrl();
|
|
@@ -69,6 +89,11 @@ var main = async () => {
|
|
|
69
89
|
}
|
|
70
90
|
};
|
|
71
91
|
main().catch((err) => {
|
|
92
|
+
if (err instanceof UsageError) {
|
|
93
|
+
process.stderr.write(` ! ${err.message}
|
|
94
|
+
`);
|
|
95
|
+
process.exit(EXIT.USAGE);
|
|
96
|
+
}
|
|
72
97
|
console.error(err instanceof Error ? err.message : String(err));
|
|
73
98
|
process.exit(1);
|
|
74
99
|
});
|
|
@@ -19,6 +19,9 @@ import {
|
|
|
19
19
|
codexHooksJson,
|
|
20
20
|
hasCodexHooks
|
|
21
21
|
} from "../chunk-ER657KRJ.js";
|
|
22
|
+
import {
|
|
23
|
+
readJsonSafe
|
|
24
|
+
} from "../chunk-6MTNS63X.js";
|
|
22
25
|
import {
|
|
23
26
|
execNpm,
|
|
24
27
|
npmErrorMessage,
|
|
@@ -28,12 +31,13 @@ import {
|
|
|
28
31
|
} from "../chunk-MUEW424A.js";
|
|
29
32
|
import {
|
|
30
33
|
exitOnHelpFlag
|
|
31
|
-
} from "../chunk-
|
|
32
|
-
import "../chunk-
|
|
34
|
+
} from "../chunk-WXFEK7KD.js";
|
|
35
|
+
import "../chunk-7OXIC7E3.js";
|
|
33
36
|
import "../chunk-DQAN3JQP.js";
|
|
34
37
|
import {
|
|
35
38
|
getApiKey
|
|
36
39
|
} from "../chunk-2UMNXADU.js";
|
|
40
|
+
import "../chunk-KZERVKTD.js";
|
|
37
41
|
|
|
38
42
|
// bin/pushary-upgrade.ts
|
|
39
43
|
import { existsSync as existsSync2 } from "fs";
|
|
@@ -48,11 +52,10 @@ import { parse as parseTOML, stringify as stringifyTOML } from "smol-toml";
|
|
|
48
52
|
var CLAUDE_SETTINGS = join(homedir(), ".claude", "settings.json");
|
|
49
53
|
var CLAUDE_JSON = join(homedir(), ".claude.json");
|
|
50
54
|
var readJson = (filePath) => {
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
}
|
|
55
|
+
const result = readJsonSafe(filePath);
|
|
56
|
+
if (result.kind === "ok") return result.value;
|
|
57
|
+
if (result.kind === "missing") return {};
|
|
58
|
+
return null;
|
|
56
59
|
};
|
|
57
60
|
var writeJson = (filePath, data) => {
|
|
58
61
|
const dir = dirname(filePath);
|
|
@@ -68,10 +71,13 @@ var reapplyClaudeSettings = (apiKey, paths = {}) => {
|
|
|
68
71
|
const claudeJson = readJson(claudeJsonPath);
|
|
69
72
|
const configured = settings != null && hasPusharyClaudeHooks(settings) || claudeJson != null && hasPusharyMcp(claudeJson);
|
|
70
73
|
if (!configured) return { reapplied: false, hooks: false, mcp: false };
|
|
74
|
+
const settingsWritable = settings != null;
|
|
75
|
+
const claudeJsonWritable = claudeJson != null;
|
|
71
76
|
let hooks = false;
|
|
72
77
|
let mcp = false;
|
|
73
78
|
try {
|
|
74
|
-
|
|
79
|
+
if (!settingsWritable) throw new Error("settings.json could not be parsed");
|
|
80
|
+
const s = settings;
|
|
75
81
|
addPusharyToolPermissions(s);
|
|
76
82
|
addPusharyHooks(s, resolveGlobalBinDir("pushary-hook"));
|
|
77
83
|
writeJson(settingsPath, s);
|
|
@@ -80,7 +86,8 @@ var reapplyClaudeSettings = (apiKey, paths = {}) => {
|
|
|
80
86
|
}
|
|
81
87
|
if (apiKey) {
|
|
82
88
|
try {
|
|
83
|
-
|
|
89
|
+
if (!claudeJsonWritable) throw new Error(".claude.json could not be parsed");
|
|
90
|
+
const cj = claudeJson;
|
|
84
91
|
addClaudeMcpServer(cj, apiKey);
|
|
85
92
|
writeJson(claudeJsonPath, cj);
|
|
86
93
|
mcp = true;
|
package/dist/bin/pushary-wait.js
CHANGED
|
@@ -1,26 +1,33 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
exitOnFailedResponse
|
|
4
|
-
} from "../chunk-
|
|
4
|
+
} from "../chunk-SR52774M.js";
|
|
5
5
|
import {
|
|
6
6
|
describeWaitLadder
|
|
7
7
|
} from "../chunk-IIENZE2J.js";
|
|
8
|
-
import "../chunk-
|
|
8
|
+
import "../chunk-G4TARJAY.js";
|
|
9
9
|
import {
|
|
10
10
|
createIo
|
|
11
11
|
} from "../chunk-TX7KBKT7.js";
|
|
12
|
-
import
|
|
12
|
+
import {
|
|
13
|
+
rejectUnknownFlags
|
|
14
|
+
} from "../chunk-GMXKITVA.js";
|
|
13
15
|
import {
|
|
14
16
|
exitOnHelpFlag
|
|
15
|
-
} from "../chunk-
|
|
17
|
+
} from "../chunk-WXFEK7KD.js";
|
|
18
|
+
import "../chunk-7OXIC7E3.js";
|
|
19
|
+
import "../chunk-SAF6HGAA.js";
|
|
16
20
|
import {
|
|
17
|
-
|
|
18
|
-
} from "../chunk-
|
|
21
|
+
UsageError
|
|
22
|
+
} from "../chunk-7QLSKOSU.js";
|
|
19
23
|
import "../chunk-DQAN3JQP.js";
|
|
20
24
|
import {
|
|
21
25
|
getApiKey,
|
|
22
26
|
getBaseUrl
|
|
23
27
|
} from "../chunk-2UMNXADU.js";
|
|
28
|
+
import {
|
|
29
|
+
EXIT
|
|
30
|
+
} from "../chunk-KZERVKTD.js";
|
|
24
31
|
|
|
25
32
|
// bin/pushary-wait.ts
|
|
26
33
|
exitOnHelpFlag("wait");
|
|
@@ -61,6 +68,17 @@ var setWindow = async (baseUrl, headers, seconds) => {
|
|
|
61
68
|
const data = await res.json();
|
|
62
69
|
return data.defaultPushFirstSeconds;
|
|
63
70
|
};
|
|
71
|
+
{
|
|
72
|
+
const raw = process.argv.slice(2);
|
|
73
|
+
const positional = raw[0] === "wait" ? raw.slice(1) : raw;
|
|
74
|
+
try {
|
|
75
|
+
rejectUnknownFlags(positional, []);
|
|
76
|
+
} catch (err) {
|
|
77
|
+
process.stderr.write(` ! ${err instanceof Error ? err.message : String(err)}
|
|
78
|
+
`);
|
|
79
|
+
process.exit(EXIT.USAGE);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
64
82
|
var main = async () => {
|
|
65
83
|
const apiKey = getApiKey();
|
|
66
84
|
const baseUrl = getBaseUrl();
|
|
@@ -90,6 +108,11 @@ var main = async () => {
|
|
|
90
108
|
console.log(` ${green("\u2713")} Default push window set to ${cyan(`${value}s`)} ${dim("\u2014 ping your phone that long, then the terminal takes over")}`);
|
|
91
109
|
};
|
|
92
110
|
main().catch((err) => {
|
|
111
|
+
if (err instanceof UsageError) {
|
|
112
|
+
process.stderr.write(` ! ${err.message}
|
|
113
|
+
`);
|
|
114
|
+
process.exit(EXIT.USAGE);
|
|
115
|
+
}
|
|
93
116
|
console.error(` ${yellow("!")} ${err instanceof Error ? err.message : err}`);
|
|
94
117
|
process.exit(1);
|
|
95
118
|
});
|
package/dist/bin/pushary.js
CHANGED
|
@@ -1,11 +1,17 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
COMMANDS,
|
|
4
|
-
EXIT,
|
|
5
4
|
getPackageVersion,
|
|
6
5
|
isCommandName,
|
|
7
6
|
renderHelp
|
|
8
|
-
} from "../chunk-
|
|
7
|
+
} from "../chunk-7OXIC7E3.js";
|
|
8
|
+
import {
|
|
9
|
+
installProxyDispatcher
|
|
10
|
+
} from "../chunk-SAF6HGAA.js";
|
|
11
|
+
import "../chunk-7QLSKOSU.js";
|
|
12
|
+
import {
|
|
13
|
+
EXIT
|
|
14
|
+
} from "../chunk-KZERVKTD.js";
|
|
9
15
|
|
|
10
16
|
// bin/pushary.ts
|
|
11
17
|
var LOADERS = {
|
|
@@ -25,6 +31,7 @@ var LOADERS = {
|
|
|
25
31
|
upgrade: () => import("./pushary-upgrade.js"),
|
|
26
32
|
hook: () => import("./pushary-hook.js")
|
|
27
33
|
};
|
|
34
|
+
installProxyDispatcher();
|
|
28
35
|
var argv = process.argv.slice(2);
|
|
29
36
|
var command = argv[0] ?? "";
|
|
30
37
|
var wants = (...names) => argv.some((arg) => names.includes(arg));
|
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
import {
|
|
2
2
|
callMcpTool,
|
|
3
3
|
withRetry
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-BSZYIAZL.js";
|
|
5
|
+
import {
|
|
6
|
+
installProxyDispatcher
|
|
7
|
+
} from "./chunk-SAF6HGAA.js";
|
|
5
8
|
import {
|
|
6
9
|
ACTION_BODY_MAX,
|
|
7
10
|
DECISION_LINE_MAX,
|
|
@@ -204,6 +207,7 @@ var fetchModeState = async (apiKey, sessionId) => {
|
|
|
204
207
|
var fetchModeOverride = async (apiKey) => (await fetchModeState(apiKey)).mode;
|
|
205
208
|
|
|
206
209
|
// src/api.ts
|
|
210
|
+
installProxyDispatcher();
|
|
207
211
|
var askUser = async (apiKey, params, timeoutMs = 15e3) => {
|
|
208
212
|
const result = await callMcpTool(apiKey, "ask_user", { ...params, wait: false }, { maxRetries: 3, timeoutMs });
|
|
209
213
|
if (!isAskUserResponse(result)) throw new Error("Invalid ask_user response");
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
// src/cli/fsx.ts
|
|
2
|
+
import { copyFileSync, existsSync, fsyncSync, mkdirSync, openSync, closeSync, readFileSync, renameSync, unlinkSync, writeFileSync } from "fs";
|
|
3
|
+
import { dirname, join } from "path";
|
|
4
|
+
var readJsonSafe = (filePath) => {
|
|
5
|
+
let raw;
|
|
6
|
+
try {
|
|
7
|
+
raw = readFileSync(filePath, "utf-8");
|
|
8
|
+
} catch (err) {
|
|
9
|
+
const error = err;
|
|
10
|
+
if (error.code === "ENOENT") return { kind: "missing" };
|
|
11
|
+
return { kind: "unreadable", error };
|
|
12
|
+
}
|
|
13
|
+
if (raw.trim() === "") return { kind: "ok", value: {} };
|
|
14
|
+
try {
|
|
15
|
+
return { kind: "ok", value: JSON.parse(raw) };
|
|
16
|
+
} catch (err) {
|
|
17
|
+
return { kind: "unparseable", error: err, raw };
|
|
18
|
+
}
|
|
19
|
+
};
|
|
20
|
+
var stamp = () => (/* @__PURE__ */ new Date()).toISOString().replace(/[:.]/g, "-");
|
|
21
|
+
var backupFile = (filePath) => {
|
|
22
|
+
const target = `${filePath}.pushary-backup-${stamp()}`;
|
|
23
|
+
copyFileSync(filePath, target);
|
|
24
|
+
return target;
|
|
25
|
+
};
|
|
26
|
+
var writeFileAtomic = (filePath, contents, mode) => {
|
|
27
|
+
const dir = dirname(filePath);
|
|
28
|
+
if (!existsSync(dir)) mkdirSync(dir, { recursive: true });
|
|
29
|
+
const temp = join(dir, `.${process.pid}-${stamp()}.pushary-tmp`);
|
|
30
|
+
try {
|
|
31
|
+
writeFileSync(temp, contents, mode === void 0 ? "utf-8" : { encoding: "utf-8", mode });
|
|
32
|
+
const handle = openSync(temp, "r+");
|
|
33
|
+
try {
|
|
34
|
+
fsyncSync(handle);
|
|
35
|
+
} finally {
|
|
36
|
+
closeSync(handle);
|
|
37
|
+
}
|
|
38
|
+
renameSync(temp, filePath);
|
|
39
|
+
} catch (err) {
|
|
40
|
+
try {
|
|
41
|
+
if (existsSync(temp)) unlinkSync(temp);
|
|
42
|
+
} catch {
|
|
43
|
+
}
|
|
44
|
+
throw err;
|
|
45
|
+
}
|
|
46
|
+
};
|
|
47
|
+
var writeJsonAtomic = (filePath, data, mode) => writeFileAtomic(filePath, `${JSON.stringify(data, null, 2)}
|
|
48
|
+
`, mode);
|
|
49
|
+
|
|
50
|
+
export {
|
|
51
|
+
readJsonSafe,
|
|
52
|
+
backupFile,
|
|
53
|
+
writeFileAtomic,
|
|
54
|
+
writeJsonAtomic
|
|
55
|
+
};
|
|
@@ -201,24 +201,10 @@ var getPackageVersion = () => {
|
|
|
201
201
|
}
|
|
202
202
|
};
|
|
203
203
|
|
|
204
|
-
// src/exit.ts
|
|
205
|
-
var EXIT = {
|
|
206
|
-
OK: 0,
|
|
207
|
-
FAILED: 1,
|
|
208
|
-
USAGE: 2,
|
|
209
|
-
NOT_CONFIGURED: 3,
|
|
210
|
-
UNAUTHENTICATED: 4,
|
|
211
|
-
PROBLEMS_FOUND: 5,
|
|
212
|
-
NO_DEVICE: 6,
|
|
213
|
-
INPUT_REQUIRED: 7,
|
|
214
|
-
UNREACHABLE: 8
|
|
215
|
-
};
|
|
216
|
-
|
|
217
204
|
export {
|
|
218
205
|
COMMANDS,
|
|
219
206
|
isCommandName,
|
|
220
207
|
renderHelp,
|
|
221
208
|
renderCommandHelp,
|
|
222
|
-
getPackageVersion
|
|
223
|
-
EXIT
|
|
209
|
+
getPackageVersion
|
|
224
210
|
};
|
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
import {
|
|
2
|
+
installProxyDispatcher
|
|
3
|
+
} from "./chunk-SAF6HGAA.js";
|
|
1
4
|
import {
|
|
2
5
|
getBaseUrl
|
|
3
6
|
} from "./chunk-2UMNXADU.js";
|
|
@@ -31,6 +34,7 @@ var withRetry = async (fn, options = {}) => {
|
|
|
31
34
|
};
|
|
32
35
|
|
|
33
36
|
// src/mcp-http.ts
|
|
37
|
+
installProxyDispatcher();
|
|
34
38
|
var parseSseJson = (body) => {
|
|
35
39
|
const messages = [];
|
|
36
40
|
for (const event of body.split(/\r?\n\r?\n/)) {
|