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/agent/queue.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"queue.js","sourceRoot":"","sources":["../../src/agent/queue.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,cAAc,EAAqB,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"queue.js","sourceRoot":"","sources":["../../src/agent/queue.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
export interface SessionEntry {
|
|
2
|
+
/** Claude CLI session ID (UUID) */
|
|
3
|
+
sessionId: string;
|
|
4
|
+
/** Messenger thread ID */
|
|
5
|
+
threadId: string;
|
|
6
|
+
/** Channel ID */
|
|
7
|
+
channelId: string;
|
|
8
|
+
/** Platform */
|
|
9
|
+
platform: 'slack' | 'telegram';
|
|
10
|
+
/** Project path (if resolved) */
|
|
11
|
+
projectPath?: string;
|
|
12
|
+
/** When this session was created */
|
|
13
|
+
createdAt: string;
|
|
14
|
+
/** When this session was last used */
|
|
15
|
+
lastUsedAt: string;
|
|
16
|
+
/** Number of turns in this session */
|
|
17
|
+
turnCount: number;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Gets an existing session for a thread, or null if none exists.
|
|
21
|
+
* Expired sessions (older than TTL) are automatically cleaned up.
|
|
22
|
+
*/
|
|
23
|
+
export declare function getSession(platform: string, channelId: string, threadId: string): Promise<SessionEntry | null>;
|
|
24
|
+
/**
|
|
25
|
+
* Creates a new session for a thread.
|
|
26
|
+
*/
|
|
27
|
+
export declare function createSession(platform: 'slack' | 'telegram', channelId: string, threadId: string, projectPath?: string): Promise<SessionEntry>;
|
|
28
|
+
/**
|
|
29
|
+
* Updates a session's lastUsedAt and increments turn count.
|
|
30
|
+
*/
|
|
31
|
+
export declare function touchSession(platform: string, channelId: string, threadId: string): Promise<void>;
|
|
32
|
+
/**
|
|
33
|
+
* Removes expired sessions. Called periodically.
|
|
34
|
+
*/
|
|
35
|
+
export declare function cleanupSessions(): Promise<number>;
|
|
36
|
+
/**
|
|
37
|
+
* Gets session count (for monitoring).
|
|
38
|
+
*/
|
|
39
|
+
export declare function getSessionCount(): Promise<number>;
|
|
40
|
+
/**
|
|
41
|
+
* Resets loaded state (for testing).
|
|
42
|
+
*/
|
|
43
|
+
export declare function resetSessionStore(): void;
|
|
44
|
+
//# sourceMappingURL=session.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../src/agent/session.ts"],"names":[],"mappings":"AAUA,MAAM,WAAW,YAAY;IAC3B,mCAAmC;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,0BAA0B;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,iBAAiB;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe;IACf,QAAQ,EAAE,OAAO,GAAG,UAAU,CAAC;IAC/B,iCAAiC;IACjC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,oCAAoC;IACpC,SAAS,EAAE,MAAM,CAAC;IAClB,sCAAsC;IACtC,UAAU,EAAE,MAAM,CAAC;IACnB,sCAAsC;IACtC,SAAS,EAAE,MAAM,CAAC;CACnB;AA2CD;;;GAGG;AACH,wBAAsB,UAAU,CAC9B,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAgB9B;AAED;;GAEG;AACH,wBAAsB,aAAa,CACjC,QAAQ,EAAE,OAAO,GAAG,UAAU,EAC9B,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,YAAY,CAAC,CAkBvB;AAED;;GAEG;AACH,wBAAsB,YAAY,CAChC,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,IAAI,CAAC,CASf;AAED;;GAEG;AACH,wBAAsB,eAAe,IAAI,OAAO,CAAC,MAAM,CAAC,CAevD;AAED;;GAEG;AACH,wBAAsB,eAAe,IAAI,OAAO,CAAC,MAAM,CAAC,CAGvD;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,IAAI,CAGxC"}
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Session store for mapping messenger threads to Claude CLI sessions.
|
|
3
|
+
* Enables multi-turn conversations where each Slack/Telegram thread
|
|
4
|
+
* maintains a continuous Claude session with full context.
|
|
5
|
+
*/
|
|
6
|
+
import fs from 'node:fs/promises';
|
|
7
|
+
import path from 'node:path';
|
|
8
|
+
import crypto from 'node:crypto';
|
|
9
|
+
import { getPilotDir } from '../config/store.js';
|
|
10
|
+
const SESSION_TTL_MS = 24 * 60 * 60 * 1000; // 24 hours
|
|
11
|
+
function getSessionStorePath() {
|
|
12
|
+
return path.join(getPilotDir(), 'sessions.json');
|
|
13
|
+
}
|
|
14
|
+
let sessions = new Map();
|
|
15
|
+
let loadPromise = null;
|
|
16
|
+
/**
|
|
17
|
+
* Builds a unique key for thread identification.
|
|
18
|
+
*/
|
|
19
|
+
function threadKey(platform, channelId, threadId) {
|
|
20
|
+
return `${platform}:${channelId}:${threadId}`;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Loads sessions from disk. Serialized via Promise to prevent race conditions.
|
|
24
|
+
*/
|
|
25
|
+
async function ensureLoaded() {
|
|
26
|
+
if (loadPromise)
|
|
27
|
+
return loadPromise;
|
|
28
|
+
loadPromise = (async () => {
|
|
29
|
+
try {
|
|
30
|
+
const data = await fs.readFile(getSessionStorePath(), 'utf-8');
|
|
31
|
+
const entries = JSON.parse(data);
|
|
32
|
+
sessions = new Map(entries.map((e) => [threadKey(e.platform, e.channelId, e.threadId), e]));
|
|
33
|
+
}
|
|
34
|
+
catch {
|
|
35
|
+
sessions = new Map();
|
|
36
|
+
}
|
|
37
|
+
})();
|
|
38
|
+
return loadPromise;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Persists sessions to disk.
|
|
42
|
+
*/
|
|
43
|
+
async function save() {
|
|
44
|
+
const entries = Array.from(sessions.values());
|
|
45
|
+
await fs.writeFile(getSessionStorePath(), JSON.stringify(entries, null, 2), { mode: 0o600 });
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Gets an existing session for a thread, or null if none exists.
|
|
49
|
+
* Expired sessions (older than TTL) are automatically cleaned up.
|
|
50
|
+
*/
|
|
51
|
+
export async function getSession(platform, channelId, threadId) {
|
|
52
|
+
await ensureLoaded();
|
|
53
|
+
const key = threadKey(platform, channelId, threadId);
|
|
54
|
+
const entry = sessions.get(key);
|
|
55
|
+
if (!entry)
|
|
56
|
+
return null;
|
|
57
|
+
// Check TTL
|
|
58
|
+
const age = Date.now() - new Date(entry.lastUsedAt).getTime();
|
|
59
|
+
if (age > SESSION_TTL_MS) {
|
|
60
|
+
sessions.delete(key);
|
|
61
|
+
await save();
|
|
62
|
+
return null;
|
|
63
|
+
}
|
|
64
|
+
return entry;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Creates a new session for a thread.
|
|
68
|
+
*/
|
|
69
|
+
export async function createSession(platform, channelId, threadId, projectPath) {
|
|
70
|
+
await ensureLoaded();
|
|
71
|
+
const entry = {
|
|
72
|
+
sessionId: crypto.randomUUID(),
|
|
73
|
+
threadId,
|
|
74
|
+
channelId,
|
|
75
|
+
platform,
|
|
76
|
+
projectPath,
|
|
77
|
+
createdAt: new Date().toISOString(),
|
|
78
|
+
lastUsedAt: new Date().toISOString(),
|
|
79
|
+
turnCount: 1,
|
|
80
|
+
};
|
|
81
|
+
const key = threadKey(platform, channelId, threadId);
|
|
82
|
+
sessions.set(key, entry);
|
|
83
|
+
await save();
|
|
84
|
+
return entry;
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Updates a session's lastUsedAt and increments turn count.
|
|
88
|
+
*/
|
|
89
|
+
export async function touchSession(platform, channelId, threadId) {
|
|
90
|
+
await ensureLoaded();
|
|
91
|
+
const key = threadKey(platform, channelId, threadId);
|
|
92
|
+
const entry = sessions.get(key);
|
|
93
|
+
if (entry) {
|
|
94
|
+
entry.lastUsedAt = new Date().toISOString();
|
|
95
|
+
entry.turnCount++;
|
|
96
|
+
await save();
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Removes expired sessions. Called periodically.
|
|
101
|
+
*/
|
|
102
|
+
export async function cleanupSessions() {
|
|
103
|
+
await ensureLoaded();
|
|
104
|
+
const now = Date.now();
|
|
105
|
+
let removed = 0;
|
|
106
|
+
for (const [key, entry] of sessions) {
|
|
107
|
+
const age = now - new Date(entry.lastUsedAt).getTime();
|
|
108
|
+
if (age > SESSION_TTL_MS) {
|
|
109
|
+
sessions.delete(key);
|
|
110
|
+
removed++;
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
if (removed > 0)
|
|
114
|
+
await save();
|
|
115
|
+
return removed;
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Gets session count (for monitoring).
|
|
119
|
+
*/
|
|
120
|
+
export async function getSessionCount() {
|
|
121
|
+
await ensureLoaded();
|
|
122
|
+
return sessions.size;
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Resets loaded state (for testing).
|
|
126
|
+
*/
|
|
127
|
+
export function resetSessionStore() {
|
|
128
|
+
sessions = new Map();
|
|
129
|
+
loadPromise = null;
|
|
130
|
+
}
|
|
131
|
+
//# sourceMappingURL=session.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/agent/session.ts"],"names":[],"mappings":"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"}
|
package/dist/api/server.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/api/server.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/api/server.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,OAAO,CAAC;IACZ,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,MAAM,cAAc,GAAG,CAAC,GAAG,EAAE,cAAc,KAAK,OAAO,CAAC,eAAe,CAAC,CAAC;AAW/E,qBAAa,SAAS;IACpB,OAAO,CAAC,MAAM,CAA4B;IAC1C,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,OAAO,CAA+B;IAC9C,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,YAAY,CAA0C;gBAElD,KAAK,EAAE,MAAM,EAAE,IAAI,GAAE,MAAqB;IAKtD,SAAS,CAAC,OAAO,EAAE,cAAc,GAAG,IAAI;IAIlC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IActB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAQ3B,SAAS,IAAI,OAAO;IAIpB,OAAO,IAAI,MAAM;IAIjB,MAAM,CAAC,aAAa,IAAI,MAAM;YAIhB,aAAa;YAyCb,aAAa;IAwC3B,OAAO,CAAC,aAAa;IAarB,OAAO,CAAC,QAAQ;IAgBhB,OAAO,CAAC,QAAQ;CAIjB"}
|
package/dist/api/server.js
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import http from 'node:http';
|
|
2
2
|
import crypto from 'node:crypto';
|
|
3
|
+
import { getMetrics } from '../utils/logger.js';
|
|
4
|
+
import { getClaudeCircuitState } from '../agent/claude.js';
|
|
3
5
|
const DEFAULT_PORT = 3847;
|
|
4
6
|
const RATE_LIMIT_WINDOW_MS = 60_000;
|
|
5
7
|
const RATE_LIMIT_MAX = 30;
|
|
@@ -56,9 +58,22 @@ export class ApiServer {
|
|
|
56
58
|
res.end();
|
|
57
59
|
return;
|
|
58
60
|
}
|
|
59
|
-
// Health check
|
|
61
|
+
// Health check with component statuses
|
|
60
62
|
if (req.method === 'GET' && req.url === '/health') {
|
|
61
|
-
|
|
63
|
+
const claudeState = getClaudeCircuitState();
|
|
64
|
+
const metrics = getMetrics();
|
|
65
|
+
const components = {
|
|
66
|
+
claude: claudeState === 'CLOSED' ? 'healthy' : claudeState === 'HALF_OPEN' ? 'degraded' : 'unhealthy',
|
|
67
|
+
api: 'healthy',
|
|
68
|
+
};
|
|
69
|
+
const overallStatus = Object.values(components).includes('unhealthy') ? 'degraded' : 'running';
|
|
70
|
+
this.sendJson(res, 200, {
|
|
71
|
+
ok: overallStatus !== 'degraded',
|
|
72
|
+
status: overallStatus,
|
|
73
|
+
components,
|
|
74
|
+
metrics,
|
|
75
|
+
uptime: Math.floor(process.uptime()),
|
|
76
|
+
});
|
|
62
77
|
return;
|
|
63
78
|
}
|
|
64
79
|
// Command endpoint
|
package/dist/api/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/api/server.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,MAAM,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/api/server.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/cli/doctor.ts"],"names":[],"mappings":"AAeA,wBAAsB,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,CA6C/C"}
|
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
import { execFile } from 'node:child_process';
|
|
2
|
+
import { promisify } from 'node:util';
|
|
3
|
+
import { accessSync, constants as fsConstants } from 'node:fs';
|
|
4
|
+
import { checkClaudeCli, checkClaudeCliAuth } from '../agent/claude.js';
|
|
5
|
+
import { isGhAuthenticated } from '../tools/github.js';
|
|
6
|
+
const execFileAsync = promisify(execFile);
|
|
7
|
+
export async function runDoctor() {
|
|
8
|
+
console.log('\n── Pilot-AI Doctor ──\n');
|
|
9
|
+
const results = [];
|
|
10
|
+
// Run all checks
|
|
11
|
+
results.push(await checkNode());
|
|
12
|
+
results.push(await checkClaudeCliStatus());
|
|
13
|
+
results.push(await checkGhCli());
|
|
14
|
+
results.push(await checkPlaywright());
|
|
15
|
+
results.push(await checkAutomationPermission());
|
|
16
|
+
results.push(await checkScreenRecordingPermission());
|
|
17
|
+
results.push(await checkAccessibilityPermission());
|
|
18
|
+
results.push(await checkFullDiskAccessPermission());
|
|
19
|
+
// Print results
|
|
20
|
+
console.log('\n Results:\n');
|
|
21
|
+
for (const r of results) {
|
|
22
|
+
const icon = r.ok ? ' [ok]' : ' [!!]';
|
|
23
|
+
console.log(`${icon} ${r.name}: ${r.detail}`);
|
|
24
|
+
if (!r.ok && r.fix) {
|
|
25
|
+
console.log(` Fix: ${r.fix}`);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
const failed = results.filter(r => !r.ok);
|
|
29
|
+
if (failed.length === 0) {
|
|
30
|
+
console.log('\n All checks passed!\n');
|
|
31
|
+
}
|
|
32
|
+
else {
|
|
33
|
+
console.log(`\n ${failed.length} issue(s) found. Follow the fix instructions above.\n`);
|
|
34
|
+
// Node binary path for permission settings
|
|
35
|
+
try {
|
|
36
|
+
const { stdout } = await execFileAsync('which', ['node']);
|
|
37
|
+
console.log(` Tip: Your node binary is at: ${stdout.trim()}`);
|
|
38
|
+
console.log(' Use this path when adding "node" to System Settings permissions.\n');
|
|
39
|
+
}
|
|
40
|
+
catch {
|
|
41
|
+
// ignore
|
|
42
|
+
}
|
|
43
|
+
// TCC reset hint
|
|
44
|
+
console.log(' If you previously clicked "Don\'t Allow" on a permission popup:');
|
|
45
|
+
console.log(' tccutil reset AppleEvents # Reset all Automation permissions');
|
|
46
|
+
console.log(' npx pilot-ai init # Re-run setup to re-trigger popups\n');
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
async function checkNode() {
|
|
50
|
+
try {
|
|
51
|
+
const { stdout } = await execFileAsync('node', ['--version']);
|
|
52
|
+
const version = stdout.trim();
|
|
53
|
+
return { name: 'Node.js', ok: true, detail: version };
|
|
54
|
+
}
|
|
55
|
+
catch {
|
|
56
|
+
return { name: 'Node.js', ok: false, detail: 'not found', fix: 'Install Node.js from https://nodejs.org' };
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
async function checkClaudeCliStatus() {
|
|
60
|
+
const installed = await checkClaudeCli();
|
|
61
|
+
if (!installed) {
|
|
62
|
+
return {
|
|
63
|
+
name: 'Claude CLI',
|
|
64
|
+
ok: false,
|
|
65
|
+
detail: 'not installed',
|
|
66
|
+
fix: 'npm install -g @anthropic-ai/claude-code',
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
const authed = await checkClaudeCliAuth();
|
|
70
|
+
if (!authed) {
|
|
71
|
+
return {
|
|
72
|
+
name: 'Claude CLI',
|
|
73
|
+
ok: false,
|
|
74
|
+
detail: 'installed but not authenticated',
|
|
75
|
+
fix: 'Run "claude" in terminal to log in',
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
return { name: 'Claude CLI', ok: true, detail: 'installed and authenticated' };
|
|
79
|
+
}
|
|
80
|
+
async function checkGhCli() {
|
|
81
|
+
try {
|
|
82
|
+
await execFileAsync('which', ['gh']);
|
|
83
|
+
}
|
|
84
|
+
catch {
|
|
85
|
+
return {
|
|
86
|
+
name: 'GitHub CLI (gh)',
|
|
87
|
+
ok: false,
|
|
88
|
+
detail: 'not installed',
|
|
89
|
+
fix: 'brew install gh',
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
const authed = await isGhAuthenticated();
|
|
93
|
+
if (!authed) {
|
|
94
|
+
return {
|
|
95
|
+
name: 'GitHub CLI (gh)',
|
|
96
|
+
ok: false,
|
|
97
|
+
detail: 'installed but not authenticated',
|
|
98
|
+
fix: 'gh auth login --scopes repo,read:org,workflow',
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
return { name: 'GitHub CLI (gh)', ok: true, detail: 'installed and authenticated' };
|
|
102
|
+
}
|
|
103
|
+
async function checkPlaywright() {
|
|
104
|
+
try {
|
|
105
|
+
await execFileAsync('npx', ['playwright', '--version'], { timeout: 15_000 });
|
|
106
|
+
return { name: 'Playwright', ok: true, detail: 'installed' };
|
|
107
|
+
}
|
|
108
|
+
catch {
|
|
109
|
+
return {
|
|
110
|
+
name: 'Playwright',
|
|
111
|
+
ok: false,
|
|
112
|
+
detail: 'not installed',
|
|
113
|
+
fix: 'npx playwright install chromium',
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
async function checkAutomationPermission() {
|
|
118
|
+
try {
|
|
119
|
+
await execFileAsync('osascript', [
|
|
120
|
+
'-e', 'tell application "System Events" to get name of first process',
|
|
121
|
+
], { timeout: 10_000 });
|
|
122
|
+
return { name: 'Automation (AppleEvents)', ok: true, detail: 'granted' };
|
|
123
|
+
}
|
|
124
|
+
catch (err) {
|
|
125
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
126
|
+
if (msg.includes('not allowed') || msg.includes('1743') || msg.includes('not permitted')) {
|
|
127
|
+
return {
|
|
128
|
+
name: 'Automation (AppleEvents)',
|
|
129
|
+
ok: false,
|
|
130
|
+
detail: 'denied',
|
|
131
|
+
fix: 'System Settings > Privacy & Security > Automation — add your terminal or node',
|
|
132
|
+
};
|
|
133
|
+
}
|
|
134
|
+
return { name: 'Automation (AppleEvents)', ok: true, detail: 'granted' };
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
async function checkScreenRecordingPermission() {
|
|
138
|
+
try {
|
|
139
|
+
await execFileAsync('screencapture', ['-x', '-t', 'png', '/tmp/pilot-ai-doctor.png'], {
|
|
140
|
+
timeout: 10_000,
|
|
141
|
+
});
|
|
142
|
+
const { stdout } = await execFileAsync('wc', ['-c', '/tmp/pilot-ai-doctor.png']);
|
|
143
|
+
const size = parseInt(stdout.trim().split(/\s+/)[0], 10);
|
|
144
|
+
await execFileAsync('rm', ['-f', '/tmp/pilot-ai-doctor.png']);
|
|
145
|
+
if (size > 100) {
|
|
146
|
+
return { name: 'Screen Recording', ok: true, detail: 'granted' };
|
|
147
|
+
}
|
|
148
|
+
return {
|
|
149
|
+
name: 'Screen Recording',
|
|
150
|
+
ok: false,
|
|
151
|
+
detail: 'denied',
|
|
152
|
+
fix: 'System Settings > Privacy & Security > Screen Recording — add your terminal or node',
|
|
153
|
+
};
|
|
154
|
+
}
|
|
155
|
+
catch {
|
|
156
|
+
return {
|
|
157
|
+
name: 'Screen Recording',
|
|
158
|
+
ok: false,
|
|
159
|
+
detail: 'unable to verify',
|
|
160
|
+
fix: 'System Settings > Privacy & Security > Screen Recording — add your terminal or node',
|
|
161
|
+
};
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
async function checkAccessibilityPermission() {
|
|
165
|
+
try {
|
|
166
|
+
await execFileAsync('osascript', [
|
|
167
|
+
'-e', 'tell application "System Events" to keystroke ""',
|
|
168
|
+
], { timeout: 10_000 });
|
|
169
|
+
return { name: 'Accessibility', ok: true, detail: 'granted' };
|
|
170
|
+
}
|
|
171
|
+
catch (err) {
|
|
172
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
173
|
+
if (msg.includes('not allowed') || msg.includes('1743') || msg.includes('assistive')) {
|
|
174
|
+
return {
|
|
175
|
+
name: 'Accessibility',
|
|
176
|
+
ok: false,
|
|
177
|
+
detail: 'denied',
|
|
178
|
+
fix: 'System Settings > Privacy & Security > Accessibility — add your terminal or node',
|
|
179
|
+
};
|
|
180
|
+
}
|
|
181
|
+
return { name: 'Accessibility', ok: true, detail: 'granted' };
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
function checkFullDiskAccessPermission() {
|
|
185
|
+
try {
|
|
186
|
+
accessSync(`${process.env.HOME}/Library/Mail`, fsConstants.R_OK);
|
|
187
|
+
return { name: 'Full Disk Access', ok: true, detail: 'granted' };
|
|
188
|
+
}
|
|
189
|
+
catch {
|
|
190
|
+
return {
|
|
191
|
+
name: 'Full Disk Access',
|
|
192
|
+
ok: false,
|
|
193
|
+
detail: 'not granted (optional)',
|
|
194
|
+
fix: 'System Settings > Privacy & Security > Full Disk Access — add node binary. This resolves most "access data from other apps" popups.',
|
|
195
|
+
};
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
//# sourceMappingURL=doctor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/cli/doctor.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/init.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/cli/init.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/cli/init.ts"],"names":[],"mappings":"AAeA,wBAAsB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAwC7C"}
|
package/dist/cli/init.js
CHANGED
|
@@ -7,7 +7,8 @@ import { setSecret } from '../config/keychain.js';
|
|
|
7
7
|
import { defaultConfig } from '../config/schema.js';
|
|
8
8
|
import { testSlackConnection, testTelegramConnection } from './connection-test.js';
|
|
9
9
|
import { registerFigmaMcp } from '../tools/figma-mcp.js';
|
|
10
|
-
import { requestPermissions } from '../security/permissions.js';
|
|
10
|
+
import { requestPermissions, triggerBulkAutomationPermissions } from '../security/permissions.js';
|
|
11
|
+
import { isGhAuthenticated } from '../tools/github.js';
|
|
11
12
|
const execFileAsync = promisify(execFile);
|
|
12
13
|
export async function runInit() {
|
|
13
14
|
console.log('\nStarting Pilot-AI setup.\n');
|
|
@@ -22,6 +23,7 @@ export async function runInit() {
|
|
|
22
23
|
await installPlaywright();
|
|
23
24
|
// 5. macOS permissions
|
|
24
25
|
await requestPermissions();
|
|
26
|
+
await triggerBulkAutomationPermissions();
|
|
25
27
|
// 6. Save config with allowedUsers
|
|
26
28
|
const config = {
|
|
27
29
|
...defaultConfig,
|
|
@@ -224,6 +226,11 @@ async function setupTelegram() {
|
|
|
224
226
|
async function setupIntegrations() {
|
|
225
227
|
console.log('\n── Integration Setup (optional) ──\n');
|
|
226
228
|
const result = {};
|
|
229
|
+
// GitHub
|
|
230
|
+
const githubConfig = await setupGithub();
|
|
231
|
+
if (githubConfig) {
|
|
232
|
+
result.github = githubConfig;
|
|
233
|
+
}
|
|
227
234
|
// Notion
|
|
228
235
|
const { setupNotion } = await inquirer.prompt([
|
|
229
236
|
{ type: 'confirm', name: 'setupNotion', message: 'Set up Notion Integration?', default: false },
|
|
@@ -360,6 +367,49 @@ async function setupIntegrations() {
|
|
|
360
367
|
}
|
|
361
368
|
return result;
|
|
362
369
|
}
|
|
370
|
+
async function setupGithub() {
|
|
371
|
+
const { setupGh } = await inquirer.prompt([
|
|
372
|
+
{ type: 'confirm', name: 'setupGh', message: 'Set up GitHub Integration?', default: true },
|
|
373
|
+
]);
|
|
374
|
+
if (!setupGh)
|
|
375
|
+
return null;
|
|
376
|
+
// Check if gh CLI is installed
|
|
377
|
+
try {
|
|
378
|
+
await execFileAsync('which', ['gh']);
|
|
379
|
+
}
|
|
380
|
+
catch {
|
|
381
|
+
console.log('\n GitHub CLI (gh) is not installed.');
|
|
382
|
+
console.log(' Install it with: brew install gh');
|
|
383
|
+
console.log(' Skipping GitHub setup.\n');
|
|
384
|
+
return null;
|
|
385
|
+
}
|
|
386
|
+
console.log(' GitHub CLI detected.');
|
|
387
|
+
// Check if already authenticated
|
|
388
|
+
const authed = await isGhAuthenticated();
|
|
389
|
+
if (authed) {
|
|
390
|
+
console.log(' Already authenticated!\n');
|
|
391
|
+
return { enabled: true };
|
|
392
|
+
}
|
|
393
|
+
// Guide user to authenticate
|
|
394
|
+
console.log('\n GitHub CLI is not authenticated. Please run:\n');
|
|
395
|
+
console.log(' gh auth login --scopes repo,read:org,workflow\n');
|
|
396
|
+
console.log(' Complete the login in your browser, then press Enter to continue.\n');
|
|
397
|
+
await inquirer.prompt([
|
|
398
|
+
{
|
|
399
|
+
type: 'input',
|
|
400
|
+
name: 'continue',
|
|
401
|
+
message: 'Press Enter after completing gh auth login...',
|
|
402
|
+
},
|
|
403
|
+
]);
|
|
404
|
+
// Verify authentication
|
|
405
|
+
const authedNow = await isGhAuthenticated();
|
|
406
|
+
if (authedNow) {
|
|
407
|
+
console.log(' GitHub authenticated successfully!\n');
|
|
408
|
+
return { enabled: true };
|
|
409
|
+
}
|
|
410
|
+
console.log(' Warning: GitHub authentication not detected. You can run "gh auth login" later.\n');
|
|
411
|
+
return { enabled: false };
|
|
412
|
+
}
|
|
363
413
|
async function installPlaywright() {
|
|
364
414
|
const { install } = await inquirer.prompt([
|
|
365
415
|
{
|