pilot-ai 0.4.0 → 0.5.0
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/README.md +75 -5
- package/dist/agent/claude.d.ts +7 -0
- package/dist/agent/claude.d.ts.map +1 -1
- package/dist/agent/claude.js +30 -2
- package/dist/agent/claude.js.map +1 -1
- package/dist/agent/core.d.ts +3 -0
- package/dist/agent/core.d.ts.map +1 -1
- package/dist/agent/core.js +87 -6
- package/dist/agent/core.js.map +1 -1
- package/dist/agent/queue.d.ts +12 -7
- package/dist/agent/queue.d.ts.map +1 -1
- package/dist/agent/queue.js +89 -0
- package/dist/agent/queue.js.map +1 -1
- package/dist/agent/session.d.ts +44 -0
- package/dist/agent/session.d.ts.map +1 -0
- package/dist/agent/session.js +131 -0
- package/dist/agent/session.js.map +1 -0
- package/dist/api/server.d.ts.map +1 -1
- package/dist/api/server.js +17 -2
- package/dist/api/server.js.map +1 -1
- package/dist/cli/doctor.d.ts +2 -0
- package/dist/cli/doctor.d.ts.map +1 -0
- package/dist/cli/doctor.js +198 -0
- package/dist/cli/doctor.js.map +1 -0
- package/dist/cli/init.d.ts.map +1 -1
- package/dist/cli/init.js +51 -1
- package/dist/cli/init.js.map +1 -1
- package/dist/config/schema.d.ts +6 -0
- package/dist/config/schema.d.ts.map +1 -1
- package/dist/config/schema.js +9 -0
- package/dist/config/schema.js.map +1 -1
- package/dist/index.js +7 -0
- package/dist/index.js.map +1 -1
- package/dist/messenger/slack.d.ts +1 -0
- package/dist/messenger/slack.d.ts.map +1 -1
- package/dist/messenger/slack.js +15 -6
- package/dist/messenger/slack.js.map +1 -1
- package/dist/messenger/split.d.ts +16 -0
- package/dist/messenger/split.d.ts.map +1 -0
- package/dist/messenger/split.js +66 -0
- package/dist/messenger/split.js.map +1 -0
- package/dist/messenger/telegram.d.ts +1 -0
- package/dist/messenger/telegram.d.ts.map +1 -1
- package/dist/messenger/telegram.js +14 -5
- package/dist/messenger/telegram.js.map +1 -1
- package/dist/security/permissions.d.ts +7 -0
- package/dist/security/permissions.d.ts.map +1 -1
- package/dist/security/permissions.js +57 -1
- package/dist/security/permissions.js.map +1 -1
- package/dist/security/sandbox.d.ts +1 -0
- package/dist/security/sandbox.d.ts.map +1 -1
- package/dist/security/sandbox.js +61 -4
- package/dist/security/sandbox.js.map +1 -1
- package/dist/tools/calendar.d.ts.map +1 -1
- package/dist/tools/calendar.js +9 -14
- package/dist/tools/calendar.js.map +1 -1
- package/dist/tools/clipboard.d.ts.map +1 -1
- package/dist/tools/clipboard.js +2 -2
- package/dist/tools/clipboard.js.map +1 -1
- package/dist/tools/email.d.ts +1 -0
- package/dist/tools/email.d.ts.map +1 -1
- package/dist/tools/email.js +26 -4
- package/dist/tools/email.js.map +1 -1
- package/dist/tools/filesystem.d.ts.map +1 -1
- package/dist/tools/filesystem.js +22 -6
- package/dist/tools/filesystem.js.map +1 -1
- package/dist/tools/github.d.ts.map +1 -1
- package/dist/tools/github.js +20 -0
- package/dist/tools/github.js.map +1 -1
- package/dist/tools/google-auth.d.ts +1 -0
- package/dist/tools/google-auth.d.ts.map +1 -1
- package/dist/tools/google-auth.js +26 -4
- package/dist/tools/google-auth.js.map +1 -1
- package/dist/tools/notification.d.ts.map +1 -1
- package/dist/tools/notification.js +2 -7
- package/dist/tools/notification.js.map +1 -1
- package/dist/tools/obsidian.d.ts.map +1 -1
- package/dist/tools/obsidian.js +23 -3
- package/dist/tools/obsidian.js.map +1 -1
- package/dist/utils/circuit-breaker.d.ts +30 -0
- package/dist/utils/circuit-breaker.d.ts.map +1 -0
- package/dist/utils/circuit-breaker.js +69 -0
- package/dist/utils/circuit-breaker.js.map +1 -0
- package/dist/utils/errors.d.ts +55 -0
- package/dist/utils/errors.d.ts.map +1 -0
- package/dist/utils/errors.js +79 -0
- package/dist/utils/errors.js.map +1 -0
- package/dist/utils/escape.d.ts +15 -0
- package/dist/utils/escape.d.ts.map +1 -0
- package/dist/utils/escape.js +23 -0
- package/dist/utils/escape.js.map +1 -0
- package/dist/utils/logger.d.ts +39 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +119 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/oauth-manager.d.ts +49 -0
- package/dist/utils/oauth-manager.d.ts.map +1 -0
- package/dist/utils/oauth-manager.js +112 -0
- package/dist/utils/oauth-manager.js.map +1 -0
- package/dist/utils/rate-limiter.d.ts +24 -0
- package/dist/utils/rate-limiter.d.ts.map +1 -0
- package/dist/utils/rate-limiter.js +52 -0
- package/dist/utils/rate-limiter.js.map +1 -0
- package/dist/utils/retry.d.ts +20 -0
- package/dist/utils/retry.d.ts.map +1 -0
- package/dist/utils/retry.js +45 -0
- package/dist/utils/retry.js.map +1 -0
- package/package.json +1 -1
package/dist/security/sandbox.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import fs from 'node:fs';
|
|
1
2
|
import path from 'node:path';
|
|
2
3
|
import os from 'node:os';
|
|
3
4
|
/**
|
|
@@ -9,25 +10,45 @@ function expandHome(p) {
|
|
|
9
10
|
}
|
|
10
11
|
return p;
|
|
11
12
|
}
|
|
13
|
+
/**
|
|
14
|
+
* Resolves a path following symlinks where possible.
|
|
15
|
+
* If the full path doesn't exist, resolves the deepest existing ancestor
|
|
16
|
+
* and appends the remaining segments. This prevents symlink-based bypasses
|
|
17
|
+
* while still working for paths that don't yet exist.
|
|
18
|
+
*/
|
|
19
|
+
function resolveRealPath(p) {
|
|
20
|
+
try {
|
|
21
|
+
return fs.realpathSync(p);
|
|
22
|
+
}
|
|
23
|
+
catch {
|
|
24
|
+
// Path doesn't exist — resolve the parent and append the basename
|
|
25
|
+
const parent = path.dirname(p);
|
|
26
|
+
const base = path.basename(p);
|
|
27
|
+
if (parent === p)
|
|
28
|
+
return p; // root reached
|
|
29
|
+
return path.join(resolveRealPath(parent), base);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
12
32
|
/**
|
|
13
33
|
* Validates whether a given path is within the sandbox scope.
|
|
34
|
+
* - Resolves symlinks to prevent symlink-based bypass attacks
|
|
14
35
|
* - Normalizes the path to prevent path traversal attacks
|
|
15
36
|
* - Checks against the allowed paths whitelist
|
|
16
37
|
* - Checks against the blocked paths blacklist
|
|
17
38
|
*/
|
|
18
39
|
export function isPathAllowed(targetPath, config) {
|
|
19
|
-
const resolved = path.resolve(expandHome(targetPath));
|
|
40
|
+
const resolved = resolveRealPath(path.resolve(expandHome(targetPath)));
|
|
20
41
|
const { allowedPaths, blockedPaths } = config.security.filesystemSandbox;
|
|
21
42
|
// Check blocked paths (takes priority)
|
|
22
43
|
for (const blocked of blockedPaths) {
|
|
23
|
-
const resolvedBlocked = path.resolve(expandHome(blocked));
|
|
44
|
+
const resolvedBlocked = resolveRealPath(path.resolve(expandHome(blocked)));
|
|
24
45
|
if (resolved === resolvedBlocked || resolved.startsWith(resolvedBlocked + path.sep)) {
|
|
25
46
|
return false;
|
|
26
47
|
}
|
|
27
48
|
}
|
|
28
49
|
// Check allowed paths
|
|
29
50
|
for (const allowed of allowedPaths) {
|
|
30
|
-
const resolvedAllowed = path.resolve(expandHome(allowed));
|
|
51
|
+
const resolvedAllowed = resolveRealPath(path.resolve(expandHome(allowed)));
|
|
31
52
|
if (resolved === resolvedAllowed || resolved.startsWith(resolvedAllowed + path.sep)) {
|
|
32
53
|
return true;
|
|
33
54
|
}
|
|
@@ -36,6 +57,7 @@ export function isPathAllowed(targetPath, config) {
|
|
|
36
57
|
}
|
|
37
58
|
/**
|
|
38
59
|
* Checks whether a shell command matches the blocklist.
|
|
60
|
+
* Also splits chained commands (&&, ||, ;, |) and checks each part individually.
|
|
39
61
|
*/
|
|
40
62
|
const BLOCKED_PATTERNS = [
|
|
41
63
|
/rm\s+(-[a-zA-Z]*f[a-zA-Z]*\s+|.*-rf\s+)[\/~]/, // rm -rf / or rm -rf ~
|
|
@@ -47,8 +69,43 @@ const BLOCKED_PATTERNS = [
|
|
|
47
69
|
/dd\s+.*of=\/dev\//, // dd of=/dev/
|
|
48
70
|
/:(){ :\|:& };:/, // fork bomb
|
|
49
71
|
];
|
|
72
|
+
/** Max command length to prevent DoS via extremely long commands */
|
|
73
|
+
const MAX_COMMAND_LENGTH = 10_000;
|
|
50
74
|
export function isCommandBlocked(command) {
|
|
51
|
-
|
|
75
|
+
// Length limit
|
|
76
|
+
if (command.length > MAX_COMMAND_LENGTH)
|
|
77
|
+
return true;
|
|
78
|
+
// Check the full command first
|
|
79
|
+
if (BLOCKED_PATTERNS.some((pattern) => pattern.test(command)))
|
|
80
|
+
return true;
|
|
81
|
+
// Split on shell operators and check each sub-command
|
|
82
|
+
const subCommands = command.split(/\s*(?:&&|\|\||;)\s*/);
|
|
83
|
+
for (const sub of subCommands) {
|
|
84
|
+
const trimmed = sub.trim();
|
|
85
|
+
if (trimmed && BLOCKED_PATTERNS.some((pattern) => pattern.test(trimmed))) {
|
|
86
|
+
return true;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
// Check inside subshell expressions $(...) and backticks
|
|
90
|
+
const subshellMatches = command.match(/\$\(([^)]+)\)/g);
|
|
91
|
+
if (subshellMatches) {
|
|
92
|
+
for (const match of subshellMatches) {
|
|
93
|
+
const inner = match.slice(2, -1);
|
|
94
|
+
if (BLOCKED_PATTERNS.some((pattern) => pattern.test(inner))) {
|
|
95
|
+
return true;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
const backtickMatches = command.match(/`([^`]+)`/g);
|
|
100
|
+
if (backtickMatches) {
|
|
101
|
+
for (const match of backtickMatches) {
|
|
102
|
+
const inner = match.slice(1, -1);
|
|
103
|
+
if (BLOCKED_PATTERNS.some((pattern) => pattern.test(inner))) {
|
|
104
|
+
return true;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
return false;
|
|
52
109
|
}
|
|
53
110
|
/**
|
|
54
111
|
* Creates an isolated environment variable set for subprocess execution.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sandbox.js","sourceRoot":"","sources":["../../src/security/sandbox.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,MAAM,SAAS,CAAC;AAGzB;;GAEG;AACH,SAAS,UAAU,CAAC,CAAS;IAC3B,IAAI,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;QACpC,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7C,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,aAAa,CAAC,UAAkB,EAAE,MAAmB;IACnE,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"sandbox.js","sourceRoot":"","sources":["../../src/security/sandbox.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"calendar.d.ts","sourceRoot":"","sources":["../../src/tools/calendar.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"calendar.d.ts","sourceRoot":"","sources":["../../src/tools/calendar.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,wBAAsB,UAAU,CAAC,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC,CAmCzF;AAED;;GAEG;AACH,wBAAsB,cAAc,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC,CAK/D;AAED;;GAEG;AACH,wBAAsB,aAAa,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC,CAU9D;AAED;;GAEG;AACH,wBAAsB,WAAW,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAarE;AAED;;GAEG;AACH,wBAAsB,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,CAoB7E;AAED;;GAEG;AACH,wBAAsB,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,UAAU,GAAE,MAAW,GAAG,OAAO,CAAC,KAAK,CAAC;IAAE,KAAK,EAAE,IAAI,CAAC;IAAC,GAAG,EAAE,IAAI,CAAA;CAAE,CAAC,CAAC,CA2BlH"}
|
package/dist/tools/calendar.js
CHANGED
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
* Primary: Apple Calendar via osascript (no OAuth needed)
|
|
4
4
|
*/
|
|
5
5
|
import { executeShell } from './shell.js';
|
|
6
|
+
import { escapeAppleScript, escapeShellArg } from '../utils/escape.js';
|
|
6
7
|
/**
|
|
7
8
|
* Lists events for a date range using AppleScript.
|
|
8
9
|
*/
|
|
@@ -23,7 +24,7 @@ tell application "Calendar"
|
|
|
23
24
|
end repeat
|
|
24
25
|
return output
|
|
25
26
|
end tell`;
|
|
26
|
-
const result = await executeShell(`osascript -e
|
|
27
|
+
const result = await executeShell(`osascript -e ${escapeShellArg(script)}`);
|
|
27
28
|
if (result.exitCode !== 0)
|
|
28
29
|
return [];
|
|
29
30
|
return result.stdout
|
|
@@ -70,13 +71,13 @@ export async function createEvent(event) {
|
|
|
70
71
|
const cal = event.calendar ?? 'Calendar';
|
|
71
72
|
const script = `
|
|
72
73
|
tell application "Calendar"
|
|
73
|
-
tell calendar "${
|
|
74
|
-
set newEvent to make new event with properties {summary:"${
|
|
75
|
-
${event.location ? `set location of newEvent to "${
|
|
76
|
-
${event.notes ? `set description of newEvent to "${
|
|
74
|
+
tell calendar "${escapeAppleScript(cal)}"
|
|
75
|
+
set newEvent to make new event with properties {summary:"${escapeAppleScript(event.title)}", start date:date "${event.startDate}", end date:date "${event.endDate}"}
|
|
76
|
+
${event.location ? `set location of newEvent to "${escapeAppleScript(event.location)}"` : ''}
|
|
77
|
+
${event.notes ? `set description of newEvent to "${escapeAppleScript(event.notes)}"` : ''}
|
|
77
78
|
end tell
|
|
78
79
|
end tell`;
|
|
79
|
-
const result = await executeShell(`osascript -e
|
|
80
|
+
const result = await executeShell(`osascript -e ${escapeShellArg(script)}`);
|
|
80
81
|
if (result.exitCode !== 0)
|
|
81
82
|
throw new Error(`Failed to create event: ${result.stderr}`);
|
|
82
83
|
}
|
|
@@ -91,7 +92,7 @@ export async function deleteEvent(title, date) {
|
|
|
91
92
|
const script = `
|
|
92
93
|
tell application "Calendar"
|
|
93
94
|
repeat with cal in calendars
|
|
94
|
-
set evts to (every event of cal whose summary is "${
|
|
95
|
+
set evts to (every event of cal whose summary is "${escapeAppleScript(title)}" and start date >= date "${dateStr}" and start date < date "${nextStr}")
|
|
95
96
|
repeat with e in evts
|
|
96
97
|
delete e
|
|
97
98
|
return "deleted"
|
|
@@ -99,7 +100,7 @@ tell application "Calendar"
|
|
|
99
100
|
end repeat
|
|
100
101
|
return "not found"
|
|
101
102
|
end tell`;
|
|
102
|
-
const result = await executeShell(`osascript -e
|
|
103
|
+
const result = await executeShell(`osascript -e ${escapeShellArg(script)}`);
|
|
103
104
|
return result.stdout.includes('deleted');
|
|
104
105
|
}
|
|
105
106
|
/**
|
|
@@ -137,10 +138,4 @@ function formatAppleScriptDate(d) {
|
|
|
137
138
|
day: 'numeric',
|
|
138
139
|
}) + ` ${d.toLocaleTimeString('en-US', { hour12: true })}`;
|
|
139
140
|
}
|
|
140
|
-
function escapeAS(str) {
|
|
141
|
-
return str.replace(/\\/g, '\\\\').replace(/"/g, '\\"');
|
|
142
|
-
}
|
|
143
|
-
function escapeAppleScript(script) {
|
|
144
|
-
return script.replace(/'/g, "'\\''");
|
|
145
|
-
}
|
|
146
141
|
//# sourceMappingURL=calendar.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"calendar.js","sourceRoot":"","sources":["../../src/tools/calendar.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"calendar.js","sourceRoot":"","sources":["../../src/tools/calendar.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clipboard.d.ts","sourceRoot":"","sources":["../../src/tools/clipboard.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"clipboard.d.ts","sourceRoot":"","sources":["../../src/tools/clipboard.ts"],"names":[],"mappings":"AAMA,wBAAsB,aAAa,IAAI,OAAO,CAAC,MAAM,CAAC,CAIrD;AAED,wBAAsB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAIhE;AAED,wBAAsB,cAAc,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAKzE;AAED,wBAAsB,oBAAoB,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAM/E;AAED;;GAEG;AACH,wBAAsB,sBAAsB,IAAI,OAAO,CAAC,MAAM,CAAC,CAG9D;AAED;;GAEG;AACH,wBAAsB,sBAAsB,IAAI,OAAO,CAAC,MAAM,CAAC,CAG9D"}
|
package/dist/tools/clipboard.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { executeShell } from './shell.js';
|
|
2
|
+
import { escapeShellArg } from '../utils/escape.js';
|
|
2
3
|
import { imageToDataUrl } from './image.js';
|
|
3
4
|
import path from 'node:path';
|
|
4
5
|
import os from 'node:os';
|
|
@@ -10,8 +11,7 @@ export async function readClipboard() {
|
|
|
10
11
|
}
|
|
11
12
|
export async function writeClipboard(text) {
|
|
12
13
|
// Use printf to avoid echo adding newline issues with special chars
|
|
13
|
-
const
|
|
14
|
-
const result = await executeShell(`printf '%s' '${escaped}' | pbcopy`);
|
|
14
|
+
const result = await executeShell(`printf '%s' ${escapeShellArg(text)} | pbcopy`);
|
|
15
15
|
if (result.exitCode !== 0)
|
|
16
16
|
throw new Error(`Failed to write clipboard: ${result.stderr}`);
|
|
17
17
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clipboard.js","sourceRoot":"","sources":["../../src/tools/clipboard.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,MAAM,SAAS,CAAC;AAEzB,MAAM,CAAC,KAAK,UAAU,aAAa;IACjC,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,SAAS,CAAC,CAAC;IAC7C,IAAI,MAAM,CAAC,QAAQ,KAAK,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,6BAA6B,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;IACzF,OAAO,MAAM,CAAC,MAAM,CAAC;AACvB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,IAAY;IAC/C,oEAAoE;IACpE,MAAM,
|
|
1
|
+
{"version":3,"file":"clipboard.js","sourceRoot":"","sources":["../../src/tools/clipboard.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,MAAM,SAAS,CAAC;AAEzB,MAAM,CAAC,KAAK,UAAU,aAAa;IACjC,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,SAAS,CAAC,CAAC;IAC7C,IAAI,MAAM,CAAC,QAAQ,KAAK,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,6BAA6B,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;IACzF,OAAO,MAAM,CAAC,MAAM,CAAC;AACvB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,IAAY;IAC/C,oEAAoE;IACpE,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,eAAe,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAClF,IAAI,MAAM,CAAC,QAAQ,KAAK,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,8BAA8B,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;AAC5F,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,UAAmB;IACtD,MAAM,QAAQ,GAAG,UAAU,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,oBAAoB,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IAC5F,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,oBAAoB,QAAQ,EAAE,CAAC,CAAC;IAClE,IAAI,MAAM,CAAC,QAAQ,KAAK,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,8BAA8B,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;IAC1F,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,UAAmB;IAC5D,MAAM,QAAQ,GAAG,UAAU,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,gBAAgB,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IACxF,wCAAwC;IACxC,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,uBAAuB,QAAQ,EAAE,CAAC,CAAC;IACrE,IAAI,MAAM,CAAC,QAAQ,KAAK,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,qCAAqC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;IACjG,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB;IAC1C,MAAM,QAAQ,GAAG,MAAM,cAAc,EAAE,CAAC;IACxC,OAAO,cAAc,CAAC,QAAQ,CAAC,CAAC;AAClC,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB;IAC1C,MAAM,QAAQ,GAAG,MAAM,oBAAoB,EAAE,CAAC;IAC9C,OAAO,cAAc,CAAC,QAAQ,CAAC,CAAC;AAClC,CAAC"}
|
package/dist/tools/email.d.ts
CHANGED
|
@@ -27,6 +27,7 @@ export interface EmailDraft {
|
|
|
27
27
|
export declare function configureEmail(cfg: EmailConfig): void;
|
|
28
28
|
export declare function loadTokens(): Promise<OAuthTokens | null>;
|
|
29
29
|
export declare function saveTokens(t: OAuthTokens): Promise<void>;
|
|
30
|
+
export declare function deleteTokens(): Promise<void>;
|
|
30
31
|
/**
|
|
31
32
|
* Returns the OAuth2 authorization URL for user consent.
|
|
32
33
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"email.d.ts","sourceRoot":"","sources":["../../src/tools/email.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"email.d.ts","sourceRoot":"","sources":["../../src/tools/email.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,WAAW;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,CAAC,EAAE,MAAM,CAAC;CACb;AAaD,wBAAgB,cAAc,CAAC,GAAG,EAAE,WAAW,GAAG,IAAI,CAErD;AAID,wBAAsB,UAAU,IAAI,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAwB9D;AAED,wBAAsB,UAAU,CAAC,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAG9D;AAED,wBAAsB,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CAGlD;AAED;;GAEG;AACH,wBAAgB,UAAU,IAAI,MAAM,CAKnC;AAED;;GAEG;AACH,wBAAsB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CA0BrE;AAED;;GAEG;AACH,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,MAAM,CAAC,CA8B1D;AAaD,wBAAsB,YAAY,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,UAAU,GAAE,MAAW,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAgBnG;AAED,wBAAsB,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAmChF;AAED;;GAEG;AACH,wBAAsB,SAAS,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAyBlE;AAED;;GAEG;AACH,wBAAsB,WAAW,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAyBpE"}
|
package/dist/tools/email.js
CHANGED
|
@@ -5,9 +5,11 @@
|
|
|
5
5
|
import fs from 'node:fs/promises';
|
|
6
6
|
import path from 'node:path';
|
|
7
7
|
import { getPilotDir } from '../config/store.js';
|
|
8
|
+
import { getSecret, setSecret, deleteSecret } from '../config/keychain.js';
|
|
8
9
|
const GMAIL_API = 'https://gmail.googleapis.com/gmail/v1';
|
|
9
10
|
const TOKEN_URL = 'https://oauth2.googleapis.com/token';
|
|
10
|
-
|
|
11
|
+
const KEYCHAIN_KEY = 'gmail-oauth-tokens';
|
|
12
|
+
function getLegacyTokenPath() {
|
|
11
13
|
return path.join(getPilotDir(), 'gmail-tokens.json');
|
|
12
14
|
}
|
|
13
15
|
let config = null;
|
|
@@ -17,9 +19,25 @@ export function configureEmail(cfg) {
|
|
|
17
19
|
}
|
|
18
20
|
// --- Token management ---
|
|
19
21
|
export async function loadTokens() {
|
|
22
|
+
// Try Keychain first
|
|
23
|
+
const secret = await getSecret(KEYCHAIN_KEY);
|
|
24
|
+
if (secret) {
|
|
25
|
+
try {
|
|
26
|
+
tokens = JSON.parse(secret);
|
|
27
|
+
return tokens;
|
|
28
|
+
}
|
|
29
|
+
catch {
|
|
30
|
+
// Corrupted keychain entry, fall through to legacy
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
// Try legacy JSON file and migrate if found
|
|
20
34
|
try {
|
|
21
|
-
const data = await fs.readFile(
|
|
22
|
-
|
|
35
|
+
const data = await fs.readFile(getLegacyTokenPath(), 'utf-8');
|
|
36
|
+
const parsed = JSON.parse(data);
|
|
37
|
+
// Migrate to Keychain
|
|
38
|
+
await saveTokens(parsed);
|
|
39
|
+
// Remove legacy file
|
|
40
|
+
await fs.unlink(getLegacyTokenPath()).catch(() => { });
|
|
23
41
|
return tokens;
|
|
24
42
|
}
|
|
25
43
|
catch {
|
|
@@ -28,7 +46,11 @@ export async function loadTokens() {
|
|
|
28
46
|
}
|
|
29
47
|
export async function saveTokens(t) {
|
|
30
48
|
tokens = t;
|
|
31
|
-
await
|
|
49
|
+
await setSecret(KEYCHAIN_KEY, JSON.stringify(t));
|
|
50
|
+
}
|
|
51
|
+
export async function deleteTokens() {
|
|
52
|
+
tokens = null;
|
|
53
|
+
await deleteSecret(KEYCHAIN_KEY);
|
|
32
54
|
}
|
|
33
55
|
/**
|
|
34
56
|
* Returns the OAuth2 authorization URL for user consent.
|
package/dist/tools/email.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"email.js","sourceRoot":"","sources":["../../src/tools/email.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"email.js","sourceRoot":"","sources":["../../src/tools/email.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filesystem.d.ts","sourceRoot":"","sources":["../../src/tools/filesystem.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"filesystem.d.ts","sourceRoot":"","sources":["../../src/tools/filesystem.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAqBvD,wBAAsB,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,CAGrF;AAED,wBAAsB,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAIrG;AAED,wBAAsB,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAGrF;AAED,wBAAsB,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAK5F;AAED,wBAAsB,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAK5F;AAED,wBAAsB,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAIrF;AAID,wBAAsB,WAAW,CAC/B,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,WAAW,GAClB,OAAO,CAAC,MAAM,EAAE,CAAC,CAqBnB"}
|
package/dist/tools/filesystem.js
CHANGED
|
@@ -1,12 +1,25 @@
|
|
|
1
|
+
import fsSync from 'node:fs';
|
|
1
2
|
import fs from 'node:fs/promises';
|
|
2
3
|
import path from 'node:path';
|
|
3
4
|
import { isPathAllowed } from '../security/sandbox.js';
|
|
5
|
+
/**
|
|
6
|
+
* Resolves the real path (following symlinks) and checks sandbox permissions.
|
|
7
|
+
* Throws if the resolved path is not allowed.
|
|
8
|
+
*/
|
|
4
9
|
function assertAllowed(targetPath, config) {
|
|
5
10
|
const resolved = path.resolve(targetPath);
|
|
6
|
-
|
|
7
|
-
|
|
11
|
+
// Resolve symlinks for existing paths
|
|
12
|
+
let realResolved;
|
|
13
|
+
try {
|
|
14
|
+
realResolved = fsSync.realpathSync(resolved);
|
|
8
15
|
}
|
|
9
|
-
|
|
16
|
+
catch {
|
|
17
|
+
realResolved = resolved;
|
|
18
|
+
}
|
|
19
|
+
if (!isPathAllowed(realResolved, config)) {
|
|
20
|
+
throw new Error(`Access denied: blocked path: ${realResolved}`);
|
|
21
|
+
}
|
|
22
|
+
return realResolved;
|
|
10
23
|
}
|
|
11
24
|
export async function readFile(filePath, config) {
|
|
12
25
|
const resolved = assertAllowed(filePath, config);
|
|
@@ -38,25 +51,28 @@ export async function listDir(dirPath, config) {
|
|
|
38
51
|
const entries = await fs.readdir(resolved, { withFileTypes: true });
|
|
39
52
|
return entries.map((e) => (e.isDirectory() ? `${e.name}/` : e.name));
|
|
40
53
|
}
|
|
54
|
+
const MAX_SEARCH_DEPTH = 20;
|
|
41
55
|
export async function searchFiles(dirPath, pattern, config) {
|
|
42
56
|
const resolved = assertAllowed(dirPath, config);
|
|
43
57
|
const results = [];
|
|
44
58
|
const regex = new RegExp(pattern, 'i');
|
|
45
|
-
async function walk(dir) {
|
|
59
|
+
async function walk(dir, depth) {
|
|
60
|
+
if (depth > MAX_SEARCH_DEPTH)
|
|
61
|
+
return;
|
|
46
62
|
const entries = await fs.readdir(dir, { withFileTypes: true });
|
|
47
63
|
for (const entry of entries) {
|
|
48
64
|
const fullPath = path.join(dir, entry.name);
|
|
49
65
|
if (entry.name === 'node_modules' || entry.name === '.git')
|
|
50
66
|
continue;
|
|
51
67
|
if (entry.isDirectory()) {
|
|
52
|
-
await walk(fullPath);
|
|
68
|
+
await walk(fullPath, depth + 1);
|
|
53
69
|
}
|
|
54
70
|
else if (regex.test(entry.name)) {
|
|
55
71
|
results.push(path.relative(resolved, fullPath));
|
|
56
72
|
}
|
|
57
73
|
}
|
|
58
74
|
}
|
|
59
|
-
await walk(resolved);
|
|
75
|
+
await walk(resolved, 0);
|
|
60
76
|
return results;
|
|
61
77
|
}
|
|
62
78
|
//# sourceMappingURL=filesystem.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filesystem.js","sourceRoot":"","sources":["../../src/tools/filesystem.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAGvD,SAAS,aAAa,CAAC,UAAkB,EAAE,MAAmB;IAC5D,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAC1C,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"filesystem.js","sourceRoot":"","sources":["../../src/tools/filesystem.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"github.d.ts","sourceRoot":"","sources":["../../src/tools/github.ts"],"names":[],"mappings":"AAQA,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,OAAO,CAAC,CAG1D;
|
|
1
|
+
{"version":3,"file":"github.d.ts","sourceRoot":"","sources":["../../src/tools/github.ts"],"names":[],"mappings":"AAQA,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,OAAO,CAAC,CAG1D;AAiBD,wBAAsB,QAAQ,CAAC,MAAM,EAAE;IACrC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,GAAG,OAAO,CAAC,MAAM,CAAC,CASlB;AAED,wBAAsB,OAAO,CAAC,IAAI,CAAC,EAAE;IACnC,KAAK,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,QAAQ,GAAG,KAAK,CAAC;IAC7C,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,GAAG,OAAO,CAAC,MAAM,CAAC,CAMlB;AAED,wBAAsB,KAAK,CAAC,cAAc,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAKjF;AAED,wBAAsB,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE;IACnD,MAAM,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,QAAQ,CAAC;IACvC,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,GAAG,OAAO,CAAC,MAAM,CAAC,CAMlB;AAED,wBAAsB,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAK7E;AAID,wBAAsB,WAAW,CAAC,MAAM,EAAE;IACxC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,GAAG,OAAO,CAAC,MAAM,CAAC,CAQlB;AAED,wBAAsB,UAAU,CAAC,IAAI,CAAC,EAAE;IACtC,KAAK,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;IAClC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,GAAG,OAAO,CAAC,MAAM,CAAC,CAQlB;AAED,wBAAsB,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE;IACtD,MAAM,CAAC,EAAE,WAAW,GAAG,aAAa,CAAC;IACrC,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,GAAG,OAAO,CAAC,MAAM,CAAC,CAMlB;AAID,wBAAsB,SAAS,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAM3E;AAED,wBAAsB,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAK5E"}
|
package/dist/tools/github.js
CHANGED
|
@@ -7,8 +7,19 @@ export async function isGhAuthenticated() {
|
|
|
7
7
|
const result = await gh('auth status');
|
|
8
8
|
return result.exitCode === 0;
|
|
9
9
|
}
|
|
10
|
+
/**
|
|
11
|
+
* Ensure gh CLI is authenticated before running a command.
|
|
12
|
+
* Throws a user-friendly error if not authenticated.
|
|
13
|
+
*/
|
|
14
|
+
async function ensureGhAuth() {
|
|
15
|
+
const authed = await isGhAuthenticated();
|
|
16
|
+
if (!authed) {
|
|
17
|
+
throw new Error('GitHub CLI is not authenticated. Run "gh auth login" in your terminal to connect your GitHub account.');
|
|
18
|
+
}
|
|
19
|
+
}
|
|
10
20
|
// --- Pull Requests ---
|
|
11
21
|
export async function createPr(params) {
|
|
22
|
+
await ensureGhAuth();
|
|
12
23
|
const args = ['pr', 'create', '--title', JSON.stringify(params.title)];
|
|
13
24
|
if (params.body)
|
|
14
25
|
args.push('--body', JSON.stringify(params.body));
|
|
@@ -22,6 +33,7 @@ export async function createPr(params) {
|
|
|
22
33
|
return result.stdout.trim();
|
|
23
34
|
}
|
|
24
35
|
export async function listPrs(opts) {
|
|
36
|
+
await ensureGhAuth();
|
|
25
37
|
const state = opts?.state ?? 'open';
|
|
26
38
|
const result = await gh(`pr list --state ${state} --json number,title,state,author --limit 20`, opts?.cwd);
|
|
27
39
|
if (result.exitCode !== 0)
|
|
@@ -29,12 +41,14 @@ export async function listPrs(opts) {
|
|
|
29
41
|
return result.stdout;
|
|
30
42
|
}
|
|
31
43
|
export async function getPr(numberOrBranch, cwd) {
|
|
44
|
+
await ensureGhAuth();
|
|
32
45
|
const result = await gh(`pr view ${numberOrBranch} --json number,title,state,body,reviews,statusCheckRollup`, cwd);
|
|
33
46
|
if (result.exitCode !== 0)
|
|
34
47
|
throw new Error(`Failed to get PR: ${result.stderr}`);
|
|
35
48
|
return result.stdout;
|
|
36
49
|
}
|
|
37
50
|
export async function mergePr(number, opts) {
|
|
51
|
+
await ensureGhAuth();
|
|
38
52
|
const method = opts?.method ?? 'squash';
|
|
39
53
|
const result = await gh(`pr merge ${number} --${method} --delete-branch`, opts?.cwd);
|
|
40
54
|
if (result.exitCode !== 0)
|
|
@@ -42,6 +56,7 @@ export async function mergePr(number, opts) {
|
|
|
42
56
|
return result.stdout.trim();
|
|
43
57
|
}
|
|
44
58
|
export async function getPrDiff(number, cwd) {
|
|
59
|
+
await ensureGhAuth();
|
|
45
60
|
const result = await gh(`pr diff ${number}`, cwd);
|
|
46
61
|
if (result.exitCode !== 0)
|
|
47
62
|
throw new Error(`Failed to get PR diff: ${result.stderr}`);
|
|
@@ -49,6 +64,7 @@ export async function getPrDiff(number, cwd) {
|
|
|
49
64
|
}
|
|
50
65
|
// --- Issues ---
|
|
51
66
|
export async function createIssue(params) {
|
|
67
|
+
await ensureGhAuth();
|
|
52
68
|
const args = ['issue', 'create', '--title', JSON.stringify(params.title)];
|
|
53
69
|
if (params.body)
|
|
54
70
|
args.push('--body', JSON.stringify(params.body));
|
|
@@ -60,6 +76,7 @@ export async function createIssue(params) {
|
|
|
60
76
|
return result.stdout.trim();
|
|
61
77
|
}
|
|
62
78
|
export async function listIssues(opts) {
|
|
79
|
+
await ensureGhAuth();
|
|
63
80
|
const state = opts?.state ?? 'open';
|
|
64
81
|
const args = [`issue list --state ${state} --json number,title,state,labels --limit 20`];
|
|
65
82
|
if (opts?.labels?.length)
|
|
@@ -70,6 +87,7 @@ export async function listIssues(opts) {
|
|
|
70
87
|
return result.stdout;
|
|
71
88
|
}
|
|
72
89
|
export async function closeIssue(number, opts) {
|
|
90
|
+
await ensureGhAuth();
|
|
73
91
|
const reason = opts?.reason ?? 'completed';
|
|
74
92
|
const result = await gh(`issue close ${number} --reason ${reason}`, opts?.cwd);
|
|
75
93
|
if (result.exitCode !== 0)
|
|
@@ -78,6 +96,7 @@ export async function closeIssue(number, opts) {
|
|
|
78
96
|
}
|
|
79
97
|
// --- CI / Checks ---
|
|
80
98
|
export async function getChecks(ref, cwd) {
|
|
99
|
+
await ensureGhAuth();
|
|
81
100
|
const target = ref ?? 'HEAD';
|
|
82
101
|
const result = await gh(`run list --commit ${target} --json status,conclusion,name,databaseId --limit 10`, cwd);
|
|
83
102
|
if (result.exitCode !== 0)
|
|
@@ -85,6 +104,7 @@ export async function getChecks(ref, cwd) {
|
|
|
85
104
|
return result.stdout;
|
|
86
105
|
}
|
|
87
106
|
export async function getRunLog(runId, cwd) {
|
|
107
|
+
await ensureGhAuth();
|
|
88
108
|
const result = await gh(`run view ${runId} --log-failed`, cwd);
|
|
89
109
|
if (result.exitCode !== 0)
|
|
90
110
|
throw new Error(`Failed to get run log: ${result.stderr}`);
|
package/dist/tools/github.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"github.js","sourceRoot":"","sources":["../../src/tools/github.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"github.js","sourceRoot":"","sources":["../../src/tools/github.ts"],"names":[],"mappings":"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"}
|
|
@@ -18,6 +18,7 @@ export declare function configureGoogle(cfg: GoogleOAuthConfig): void;
|
|
|
18
18
|
export declare function getGoogleConfig(): GoogleOAuthConfig | null;
|
|
19
19
|
export declare function loadGoogleTokens(): Promise<GoogleTokens | null>;
|
|
20
20
|
export declare function saveGoogleTokens(t: GoogleTokens): Promise<void>;
|
|
21
|
+
export declare function deleteGoogleTokens(): Promise<void>;
|
|
21
22
|
/**
|
|
22
23
|
* Returns the OAuth2 authorization URL for user consent.
|
|
23
24
|
* Requests all enabled scopes at once.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"google-auth.d.ts","sourceRoot":"","sources":["../../src/tools/google-auth.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"google-auth.d.ts","sourceRoot":"","sources":["../../src/tools/google-auth.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,YAAY;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAID,eAAO,MAAM,aAAa;;;;CAczB,CAAC;AAWF,wBAAgB,eAAe,CAAC,GAAG,EAAE,iBAAiB,GAAG,IAAI,CAE5D;AAED,wBAAgB,eAAe,IAAI,iBAAiB,GAAG,IAAI,CAE1D;AAED,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAwBrE;AAED,wBAAsB,gBAAgB,CAAC,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAGrE;AAED,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC,CAGxD;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,KAAK,CAAC,MAAM,OAAO,aAAa,CAAC,GAAG,MAAM,CAKpF;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,KAAK,CAAC,MAAM,OAAO,aAAa,CAAC,GAC1C,OAAO,CAAC,YAAY,CAAC,CAgCvB;AAED;;GAEG;AACH,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,MAAM,CAAC,CAkC5D"}
|