paean 0.8.35 → 0.9.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/dist/api/apikey.d.ts +39 -0
- package/dist/api/apikey.d.ts.map +1 -0
- package/dist/api/apikey.js +58 -0
- package/dist/api/apikey.js.map +1 -0
- package/dist/cli.js +7 -1
- package/dist/cli.js.map +1 -1
- package/dist/commands/a8e.d.ts +7 -0
- package/dist/commands/a8e.d.ts.map +1 -0
- package/dist/commands/a8e.js +232 -0
- package/dist/commands/a8e.js.map +1 -0
- package/dist/commands/agent.d.ts +1 -0
- package/dist/commands/agent.d.ts.map +1 -1
- package/dist/commands/agent.js +18 -0
- package/dist/commands/agent.js.map +1 -1
- package/dist/commands/wechat.d.ts +13 -0
- package/dist/commands/wechat.d.ts.map +1 -0
- package/dist/commands/wechat.js +154 -0
- package/dist/commands/wechat.js.map +1 -0
- package/dist/mcp/cli-agent-tools.d.ts.map +1 -1
- package/dist/mcp/cli-agent-tools.js +97 -3
- package/dist/mcp/cli-agent-tools.js.map +1 -1
- package/dist/mcp/worker-tools.d.ts.map +1 -1
- package/dist/mcp/worker-tools.js +6 -3
- package/dist/mcp/worker-tools.js.map +1 -1
- package/dist/wechat/api.d.ts +52 -0
- package/dist/wechat/api.d.ts.map +1 -0
- package/dist/wechat/api.js +110 -0
- package/dist/wechat/api.js.map +1 -0
- package/dist/wechat/credentials.d.ts +7 -0
- package/dist/wechat/credentials.d.ts.map +1 -0
- package/dist/wechat/credentials.js +52 -0
- package/dist/wechat/credentials.js.map +1 -0
- package/dist/wechat/service.d.ts +42 -0
- package/dist/wechat/service.d.ts.map +1 -0
- package/dist/wechat/service.js +148 -0
- package/dist/wechat/service.js.map +1 -0
- package/dist/worker/executors/articulate.d.ts +36 -3
- package/dist/worker/executors/articulate.d.ts.map +1 -1
- package/dist/worker/executors/articulate.js +122 -8
- package/dist/worker/executors/articulate.js.map +1 -1
- package/dist/worker/supervisor.d.ts +4 -2
- package/dist/worker/supervisor.d.ts.map +1 -1
- package/dist/worker/supervisor.js +92 -52
- package/dist/worker/supervisor.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { AccountData } from './api.js';
|
|
2
|
+
export declare function loadCredentials(): AccountData | null;
|
|
3
|
+
export declare function saveCredentials(data: AccountData): void;
|
|
4
|
+
export declare function removeCredentials(): void;
|
|
5
|
+
export declare function loadSyncBuf(): string;
|
|
6
|
+
export declare function saveSyncBuf(buf: string): void;
|
|
7
|
+
//# sourceMappingURL=credentials.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"credentials.d.ts","sourceRoot":"","sources":["../../src/wechat/credentials.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAM5C,wBAAgB,eAAe,IAAI,WAAW,GAAG,IAAI,CAKpD;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI,CAIvD;AAED,wBAAgB,iBAAiB,IAAI,IAAI,CAGxC;AAED,wBAAgB,WAAW,IAAI,MAAM,CAGpC;AAED,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAE7C"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import fs from 'fs';
|
|
2
|
+
import { join } from 'path';
|
|
3
|
+
import { getConfigDir } from '../utils/config.js';
|
|
4
|
+
function wechatDir() { return join(getConfigDir(), 'wechat'); }
|
|
5
|
+
function credFile() { return join(wechatDir(), 'account.json'); }
|
|
6
|
+
function syncFile() { return join(wechatDir(), 'sync_buf.txt'); }
|
|
7
|
+
export function loadCredentials() {
|
|
8
|
+
try {
|
|
9
|
+
if (!fs.existsSync(credFile()))
|
|
10
|
+
return null;
|
|
11
|
+
return JSON.parse(fs.readFileSync(credFile(), 'utf-8'));
|
|
12
|
+
}
|
|
13
|
+
catch {
|
|
14
|
+
return null;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
export function saveCredentials(data) {
|
|
18
|
+
fs.mkdirSync(wechatDir(), { recursive: true });
|
|
19
|
+
fs.writeFileSync(credFile(), JSON.stringify(data, null, 2), 'utf-8');
|
|
20
|
+
try {
|
|
21
|
+
fs.chmodSync(credFile(), 0o600);
|
|
22
|
+
}
|
|
23
|
+
catch { /* best-effort */ }
|
|
24
|
+
}
|
|
25
|
+
export function removeCredentials() {
|
|
26
|
+
try {
|
|
27
|
+
if (fs.existsSync(credFile()))
|
|
28
|
+
fs.unlinkSync(credFile());
|
|
29
|
+
}
|
|
30
|
+
catch { /* ignore */ }
|
|
31
|
+
try {
|
|
32
|
+
if (fs.existsSync(syncFile()))
|
|
33
|
+
fs.unlinkSync(syncFile());
|
|
34
|
+
}
|
|
35
|
+
catch { /* ignore */ }
|
|
36
|
+
}
|
|
37
|
+
export function loadSyncBuf() {
|
|
38
|
+
try {
|
|
39
|
+
if (fs.existsSync(syncFile()))
|
|
40
|
+
return fs.readFileSync(syncFile(), 'utf-8');
|
|
41
|
+
}
|
|
42
|
+
catch { /* ignore */ }
|
|
43
|
+
return '';
|
|
44
|
+
}
|
|
45
|
+
export function saveSyncBuf(buf) {
|
|
46
|
+
try {
|
|
47
|
+
fs.mkdirSync(wechatDir(), { recursive: true });
|
|
48
|
+
fs.writeFileSync(syncFile(), buf, 'utf-8');
|
|
49
|
+
}
|
|
50
|
+
catch { /* ignore */ }
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=credentials.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"credentials.js","sourceRoot":"","sources":["../../src/wechat/credentials.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAGlD,SAAS,SAAS,KAAa,OAAO,IAAI,CAAC,YAAY,EAAE,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;AACvE,SAAS,QAAQ,KAAa,OAAO,IAAI,CAAC,SAAS,EAAE,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC;AACzE,SAAS,QAAQ,KAAa,OAAO,IAAI,CAAC,SAAS,EAAE,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC;AAEzE,MAAM,UAAU,eAAe;IAC3B,IAAI,CAAC;QACD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;YAAE,OAAO,IAAI,CAAC;QAC5C,OAAO,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC;IAC5D,CAAC;IAAC,MAAM,CAAC;QAAC,OAAO,IAAI,CAAC;IAAC,CAAC;AAC5B,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,IAAiB;IAC7C,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC/C,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;IACrE,IAAI,CAAC;QAAC,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,KAAK,CAAC,CAAC;IAAC,CAAC;IAAC,MAAM,CAAC,CAAC,iBAAiB,CAAC,CAAC;AACxE,CAAC;AAED,MAAM,UAAU,iBAAiB;IAC7B,IAAI,CAAC;QAAC,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;YAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAC;IAAC,CAAC;IAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;IACxF,IAAI,CAAC;QAAC,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;YAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAC;IAAC,CAAC;IAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;AAC5F,CAAC;AAED,MAAM,UAAU,WAAW;IACvB,IAAI,CAAC;QAAC,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;YAAE,OAAO,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,EAAE,OAAO,CAAC,CAAC;IAAC,CAAC;IAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;IAC1G,OAAO,EAAE,CAAC;AACd,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,GAAW;IACnC,IAAI,CAAC;QAAC,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAAC,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;IAAC,CAAC;IAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;AAC9H,CAAC"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* WeChat Gateway Service for Paean CLI
|
|
3
|
+
*
|
|
4
|
+
* Polls WeChat ilink API for incoming messages, routes them through
|
|
5
|
+
* the agent service, and sends replies back via WeChat.
|
|
6
|
+
*/
|
|
7
|
+
import { EventEmitter } from 'events';
|
|
8
|
+
export interface WechatGatewayConfig {
|
|
9
|
+
debug?: boolean;
|
|
10
|
+
}
|
|
11
|
+
export type WechatGatewayEvent = {
|
|
12
|
+
type: 'started';
|
|
13
|
+
} | {
|
|
14
|
+
type: 'stopped';
|
|
15
|
+
} | {
|
|
16
|
+
type: 'message_received';
|
|
17
|
+
sender: string;
|
|
18
|
+
text: string;
|
|
19
|
+
} | {
|
|
20
|
+
type: 'reply_sent';
|
|
21
|
+
sender: string;
|
|
22
|
+
} | {
|
|
23
|
+
type: 'error';
|
|
24
|
+
error: string;
|
|
25
|
+
};
|
|
26
|
+
export declare class WechatGatewayService extends EventEmitter {
|
|
27
|
+
private config;
|
|
28
|
+
private running;
|
|
29
|
+
private account;
|
|
30
|
+
private mcpState;
|
|
31
|
+
private onMcpToolCall;
|
|
32
|
+
private contextTokenCache;
|
|
33
|
+
constructor(config?: WechatGatewayConfig);
|
|
34
|
+
setMcpState(mcpState: unknown, onMcpToolCall: unknown): void;
|
|
35
|
+
start(): Promise<void>;
|
|
36
|
+
stop(): Promise<void>;
|
|
37
|
+
private pollLoop;
|
|
38
|
+
private processMessage;
|
|
39
|
+
private backoff;
|
|
40
|
+
private log;
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../src/wechat/service.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAWtC,MAAM,WAAW,mBAAmB;IAChC,KAAK,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,MAAM,kBAAkB,GACxB;IAAE,IAAI,EAAE,SAAS,CAAA;CAAE,GACnB;IAAE,IAAI,EAAE,SAAS,CAAA;CAAE,GACnB;IAAE,IAAI,EAAE,kBAAkB,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAC1D;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACtC;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAMvC,qBAAa,oBAAqB,SAAQ,YAAY;IAClD,OAAO,CAAC,MAAM,CAAsB;IACpC,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,OAAO,CAA4B;IAC3C,OAAO,CAAC,QAAQ,CAAiB;IACjC,OAAO,CAAC,aAAa,CAAiB;IACtC,OAAO,CAAC,iBAAiB,CAA6B;gBAE1C,MAAM,GAAE,mBAAwB;IAK5C,WAAW,CAAC,QAAQ,EAAE,OAAO,EAAE,aAAa,EAAE,OAAO,GAAG,IAAI;IAKtD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAYtB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;YAKb,QAAQ;YAmCR,cAAc;YA0Cd,OAAO;IAQrB,OAAO,CAAC,GAAG;CAGd"}
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* WeChat Gateway Service for Paean CLI
|
|
3
|
+
*
|
|
4
|
+
* Polls WeChat ilink API for incoming messages, routes them through
|
|
5
|
+
* the agent service, and sends replies back via WeChat.
|
|
6
|
+
*/
|
|
7
|
+
import { EventEmitter } from 'events';
|
|
8
|
+
import { agentService, extractErrorMessage } from '../agent/service.js';
|
|
9
|
+
import { executeSystemTool } from '../mcp/system.js';
|
|
10
|
+
import { getUpdates, sendTextMessage, extractText, MSG_TYPE_USER, } from './api.js';
|
|
11
|
+
import { loadCredentials, loadSyncBuf, saveSyncBuf } from './credentials.js';
|
|
12
|
+
const MAX_CONSECUTIVE_FAILURES = 3;
|
|
13
|
+
const BACKOFF_DELAY_MS = 30_000;
|
|
14
|
+
const RETRY_DELAY_MS = 2_000;
|
|
15
|
+
export class WechatGatewayService extends EventEmitter {
|
|
16
|
+
config;
|
|
17
|
+
running = false;
|
|
18
|
+
account = null;
|
|
19
|
+
mcpState = null;
|
|
20
|
+
onMcpToolCall = null;
|
|
21
|
+
contextTokenCache = new Map();
|
|
22
|
+
constructor(config = {}) {
|
|
23
|
+
super();
|
|
24
|
+
this.config = config;
|
|
25
|
+
}
|
|
26
|
+
setMcpState(mcpState, onMcpToolCall) {
|
|
27
|
+
this.mcpState = mcpState;
|
|
28
|
+
this.onMcpToolCall = onMcpToolCall;
|
|
29
|
+
}
|
|
30
|
+
async start() {
|
|
31
|
+
this.account = loadCredentials();
|
|
32
|
+
if (!this.account) {
|
|
33
|
+
this.emit('event', { type: 'error', error: 'No WeChat credentials. Run `paean wechat setup` first.' });
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
this.running = true;
|
|
37
|
+
this.emit('event', { type: 'started' });
|
|
38
|
+
this.log(`WeChat channel active (account: ${this.account.accountId})`);
|
|
39
|
+
await this.pollLoop();
|
|
40
|
+
}
|
|
41
|
+
async stop() {
|
|
42
|
+
this.running = false;
|
|
43
|
+
this.emit('event', { type: 'stopped' });
|
|
44
|
+
}
|
|
45
|
+
async pollLoop() {
|
|
46
|
+
if (!this.account)
|
|
47
|
+
return;
|
|
48
|
+
let buf = loadSyncBuf();
|
|
49
|
+
let failures = 0;
|
|
50
|
+
while (this.running) {
|
|
51
|
+
try {
|
|
52
|
+
const resp = await getUpdates(this.account.baseUrl, this.account.token, buf);
|
|
53
|
+
const isErr = (resp.ret !== undefined && resp.ret !== 0) || (resp.errcode !== undefined && resp.errcode !== 0);
|
|
54
|
+
if (isErr) {
|
|
55
|
+
failures++;
|
|
56
|
+
this.log(`getUpdates error: ret=${resp.ret} errcode=${resp.errcode}`);
|
|
57
|
+
await this.backoff(failures);
|
|
58
|
+
continue;
|
|
59
|
+
}
|
|
60
|
+
failures = 0;
|
|
61
|
+
if (resp.get_updates_buf) {
|
|
62
|
+
buf = resp.get_updates_buf;
|
|
63
|
+
saveSyncBuf(buf);
|
|
64
|
+
}
|
|
65
|
+
for (const msg of resp.msgs ?? []) {
|
|
66
|
+
if (msg.message_type !== MSG_TYPE_USER)
|
|
67
|
+
continue;
|
|
68
|
+
const text = extractText(msg);
|
|
69
|
+
if (!text)
|
|
70
|
+
continue;
|
|
71
|
+
const senderId = msg.from_user_id ?? 'unknown';
|
|
72
|
+
if (msg.context_token)
|
|
73
|
+
this.contextTokenCache.set(senderId, msg.context_token);
|
|
74
|
+
this.emit('event', { type: 'message_received', sender: senderId, text });
|
|
75
|
+
await this.processMessage(senderId, text);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
catch (err) {
|
|
79
|
+
failures++;
|
|
80
|
+
this.log(`Poll error: ${extractErrorMessage(err)}`);
|
|
81
|
+
await this.backoff(failures);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
async processMessage(senderId, text) {
|
|
86
|
+
if (!this.account)
|
|
87
|
+
return;
|
|
88
|
+
let responseText = '';
|
|
89
|
+
const callbacks = {
|
|
90
|
+
onContent: (t, partial) => {
|
|
91
|
+
if (partial)
|
|
92
|
+
responseText += t;
|
|
93
|
+
else
|
|
94
|
+
responseText = t;
|
|
95
|
+
},
|
|
96
|
+
onMcpToolCall: async (callId, serverName, toolName, args) => {
|
|
97
|
+
if (typeof this.onMcpToolCall === 'function') {
|
|
98
|
+
try {
|
|
99
|
+
return await this.onMcpToolCall(callId, serverName, toolName, args);
|
|
100
|
+
}
|
|
101
|
+
catch (e) {
|
|
102
|
+
return { content: [{ type: 'text', text: `Error: ${extractErrorMessage(e)}` }], isError: true };
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
if (toolName.startsWith('paean_execute') || toolName.startsWith('paean_check') || toolName.startsWith('paean_kill')) {
|
|
106
|
+
const result = await executeSystemTool(toolName, args, { autonomousMode: true });
|
|
107
|
+
return { content: [{ type: 'text', text: JSON.stringify(result) }], isError: !result.success };
|
|
108
|
+
}
|
|
109
|
+
return { content: [{ type: 'text', text: 'MCP not available' }], isError: true };
|
|
110
|
+
},
|
|
111
|
+
onError: (error) => { this.log(`Agent error: ${error}`); },
|
|
112
|
+
onDone: async () => {
|
|
113
|
+
if (responseText && this.account) {
|
|
114
|
+
const ctx = this.contextTokenCache.get(senderId);
|
|
115
|
+
if (ctx) {
|
|
116
|
+
const maxLen = 2048;
|
|
117
|
+
for (let i = 0; i < responseText.length; i += maxLen) {
|
|
118
|
+
try {
|
|
119
|
+
await sendTextMessage(this.account.baseUrl, this.account.token, senderId, responseText.slice(i, i + maxLen), ctx);
|
|
120
|
+
}
|
|
121
|
+
catch (e) {
|
|
122
|
+
this.log(`Send failed: ${extractErrorMessage(e)}`);
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
this.emit('event', { type: 'reply_sent', sender: senderId });
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
},
|
|
129
|
+
};
|
|
130
|
+
agentService.streamMessage(text, callbacks, {
|
|
131
|
+
mcpState: this.mcpState,
|
|
132
|
+
cliMode: { enabled: true },
|
|
133
|
+
});
|
|
134
|
+
}
|
|
135
|
+
async backoff(failures) {
|
|
136
|
+
if (failures >= MAX_CONSECUTIVE_FAILURES) {
|
|
137
|
+
await new Promise(r => setTimeout(r, BACKOFF_DELAY_MS));
|
|
138
|
+
}
|
|
139
|
+
else {
|
|
140
|
+
await new Promise(r => setTimeout(r, RETRY_DELAY_MS));
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
log(msg) {
|
|
144
|
+
if (this.config.debug)
|
|
145
|
+
console.error(`[WeChat] ${msg}`);
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
//# sourceMappingURL=service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"service.js","sourceRoot":"","sources":["../../src/wechat/service.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,16 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Articulate (a8e) CLI Executor
|
|
3
|
-
*
|
|
3
|
+
* High-priority local sub-agent for coding and local processing tasks.
|
|
4
|
+
* Integrates with the Articulate CLI for AI-assisted development.
|
|
4
5
|
* https://github.com/a8e-ai/a8e
|
|
5
6
|
*/
|
|
6
7
|
import type { ExecutorOptions, ExecutorResult, AvailabilityStatus } from '../types.js';
|
|
7
8
|
import type { AgentExecutor } from './index.js';
|
|
9
|
+
export interface A8eConfig {
|
|
10
|
+
provider?: string;
|
|
11
|
+
model?: string;
|
|
12
|
+
hasApiKey?: boolean;
|
|
13
|
+
}
|
|
8
14
|
export declare class ArticulateExecutor implements AgentExecutor {
|
|
9
15
|
readonly type: "articulate";
|
|
10
16
|
private process;
|
|
@@ -14,10 +20,37 @@ export declare class ArticulateExecutor implements AgentExecutor {
|
|
|
14
20
|
checkAvailability(): Promise<AvailabilityStatus>;
|
|
15
21
|
execute(prompt: string, options?: ExecutorOptions): Promise<ExecutorResult>;
|
|
16
22
|
/**
|
|
17
|
-
* Build a8e CLI arguments for headless execution
|
|
18
|
-
* Uses `a8e run --text <prompt>` for non-interactive mode
|
|
23
|
+
* Build a8e CLI arguments for headless execution.
|
|
24
|
+
* Uses `a8e run --text <prompt>` for non-interactive mode.
|
|
19
25
|
*/
|
|
20
26
|
private buildArgs;
|
|
27
|
+
/**
|
|
28
|
+
* Build environment variables for the a8e subprocess.
|
|
29
|
+
* Injects Paean AI provider config as env vars so a8e picks them up
|
|
30
|
+
* even if config.yaml hasn't been written yet.
|
|
31
|
+
*/
|
|
32
|
+
private buildA8eEnv;
|
|
33
|
+
/**
|
|
34
|
+
* Read a8e's current configuration from config.yaml + secrets.yaml
|
|
35
|
+
*/
|
|
36
|
+
readA8eConfig(): A8eConfig;
|
|
37
|
+
/**
|
|
38
|
+
* Configure a8e to use Paean AI as provider with the given API key.
|
|
39
|
+
* Writes to ~/.config/a8e/config.yaml and secrets.yaml.
|
|
40
|
+
*/
|
|
41
|
+
configureForPaean(apiKey: string, model?: string): void;
|
|
42
|
+
/**
|
|
43
|
+
* Upsert a key in a simple YAML document (key: value per line).
|
|
44
|
+
*/
|
|
45
|
+
private upsertYamlKey;
|
|
21
46
|
abort(): void;
|
|
22
47
|
}
|
|
48
|
+
/** Static helpers for the a8e config directory */
|
|
49
|
+
export declare const A8E_PATHS: {
|
|
50
|
+
configDir: string;
|
|
51
|
+
configFile: string;
|
|
52
|
+
secretsFile: string;
|
|
53
|
+
defaultProvider: string;
|
|
54
|
+
defaultModel: string;
|
|
55
|
+
};
|
|
23
56
|
//# sourceMappingURL=articulate.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"articulate.d.ts","sourceRoot":"","sources":["../../../src/worker/executors/articulate.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"articulate.d.ts","sourceRoot":"","sources":["../../../src/worker/executors/articulate.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAQH,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACvF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAWhD,MAAM,WAAW,SAAS;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,qBAAa,kBAAmB,YAAW,aAAa;IACpD,QAAQ,CAAC,IAAI,EAAG,YAAY,CAAU;IACtC,OAAO,CAAC,OAAO,CAA6B;IAC5C,OAAO,CAAC,UAAU,CAAS;gBAEf,UAAU,GAAE,MAAc;IAIhC,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAS/B,iBAAiB,IAAI,OAAO,CAAC,kBAAkB,CAAC;IAmChD,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,cAAc,CAAC;IA8EjF;;;OAGG;IACH,OAAO,CAAC,SAAS;IAoBjB;;;;OAIG;IACH,OAAO,CAAC,WAAW;IAmBnB;;OAEG;IACH,aAAa,IAAI,SAAS;IA2B1B;;;OAGG;IACH,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI;IAkCvD;;OAEG;IACH,OAAO,CAAC,aAAa;IAcrB,KAAK,IAAI,IAAI;CAMhB;AAED,kDAAkD;AAClD,eAAO,MAAM,SAAS;;;;;;CAMrB,CAAC"}
|
|
@@ -1,12 +1,21 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Articulate (a8e) CLI Executor
|
|
3
|
-
*
|
|
3
|
+
* High-priority local sub-agent for coding and local processing tasks.
|
|
4
|
+
* Integrates with the Articulate CLI for AI-assisted development.
|
|
4
5
|
* https://github.com/a8e-ai/a8e
|
|
5
6
|
*/
|
|
6
7
|
import { spawn } from 'child_process';
|
|
7
8
|
import { promisify } from 'util';
|
|
8
9
|
import { exec as execCallback } from 'child_process';
|
|
10
|
+
import { existsSync, readFileSync, writeFileSync, mkdirSync } from 'fs';
|
|
11
|
+
import { join } from 'path';
|
|
12
|
+
import { homedir } from 'os';
|
|
9
13
|
const exec = promisify(execCallback);
|
|
14
|
+
const A8E_CONFIG_DIR = join(homedir(), '.config', 'a8e');
|
|
15
|
+
const A8E_CONFIG_PATH = join(A8E_CONFIG_DIR, 'config.yaml');
|
|
16
|
+
const A8E_SECRETS_PATH = join(A8E_CONFIG_DIR, 'secrets.yaml');
|
|
17
|
+
const A8E_DEFAULT_PROVIDER = 'paean_ai';
|
|
18
|
+
const A8E_DEFAULT_MODEL = 'gemini-3.1-flash-preview';
|
|
10
19
|
export class ArticulateExecutor {
|
|
11
20
|
type = 'articulate';
|
|
12
21
|
process = null;
|
|
@@ -44,7 +53,7 @@ export class ArticulateExecutor {
|
|
|
44
53
|
binaryExists: true,
|
|
45
54
|
binaryPath,
|
|
46
55
|
authStatus: 'unknown',
|
|
47
|
-
authMessage: 'a8e uses BYOK
|
|
56
|
+
authMessage: 'a8e uses BYOK — ensure a provider is configured via `paean a8e configure`',
|
|
48
57
|
};
|
|
49
58
|
}
|
|
50
59
|
}
|
|
@@ -53,7 +62,7 @@ export class ArticulateExecutor {
|
|
|
53
62
|
available: false,
|
|
54
63
|
binaryExists: false,
|
|
55
64
|
authStatus: 'unknown',
|
|
56
|
-
error: `Binary '${this.binaryPath}' not found
|
|
65
|
+
error: `Binary '${this.binaryPath}' not found. Install with: paean a8e install`,
|
|
57
66
|
};
|
|
58
67
|
}
|
|
59
68
|
}
|
|
@@ -63,10 +72,11 @@ export class ArticulateExecutor {
|
|
|
63
72
|
return new Promise((resolve) => {
|
|
64
73
|
let stdout = '';
|
|
65
74
|
let stderr = '';
|
|
66
|
-
const timeout = options?.timeout ?? 1800000;
|
|
75
|
+
const timeout = options?.timeout ?? 1800000;
|
|
76
|
+
const a8eEnv = this.buildA8eEnv(options?.env);
|
|
67
77
|
this.process = spawn(this.binaryPath, args, {
|
|
68
78
|
cwd: options?.cwd,
|
|
69
|
-
env:
|
|
79
|
+
env: a8eEnv,
|
|
70
80
|
stdio: ['ignore', 'pipe', 'pipe'],
|
|
71
81
|
});
|
|
72
82
|
const timeoutId = setTimeout(() => {
|
|
@@ -124,8 +134,8 @@ export class ArticulateExecutor {
|
|
|
124
134
|
});
|
|
125
135
|
}
|
|
126
136
|
/**
|
|
127
|
-
* Build a8e CLI arguments for headless execution
|
|
128
|
-
* Uses `a8e run --text <prompt>` for non-interactive mode
|
|
137
|
+
* Build a8e CLI arguments for headless execution.
|
|
138
|
+
* Uses `a8e run --text <prompt>` for non-interactive mode.
|
|
129
139
|
*/
|
|
130
140
|
buildArgs(prompt, options) {
|
|
131
141
|
const args = ['run'];
|
|
@@ -134,13 +144,109 @@ export class ArticulateExecutor {
|
|
|
134
144
|
args.push('--output-format', 'json');
|
|
135
145
|
}
|
|
136
146
|
if (options?.skipPermissions) {
|
|
137
|
-
args.push('--
|
|
147
|
+
args.push('--dangerously-skip-permissions');
|
|
138
148
|
}
|
|
139
149
|
if (options?.args) {
|
|
140
150
|
args.push(...options.args);
|
|
141
151
|
}
|
|
142
152
|
return args;
|
|
143
153
|
}
|
|
154
|
+
/**
|
|
155
|
+
* Build environment variables for the a8e subprocess.
|
|
156
|
+
* Injects Paean AI provider config as env vars so a8e picks them up
|
|
157
|
+
* even if config.yaml hasn't been written yet.
|
|
158
|
+
*/
|
|
159
|
+
buildA8eEnv(extraEnv) {
|
|
160
|
+
const env = { ...process.env };
|
|
161
|
+
const config = this.readA8eConfig();
|
|
162
|
+
if (!env.A8E_PROVIDER && config.provider) {
|
|
163
|
+
env.A8E_PROVIDER = config.provider;
|
|
164
|
+
}
|
|
165
|
+
if (!env.A8E_MODEL && config.model) {
|
|
166
|
+
env.A8E_MODEL = config.model;
|
|
167
|
+
}
|
|
168
|
+
if (extraEnv) {
|
|
169
|
+
Object.assign(env, extraEnv);
|
|
170
|
+
}
|
|
171
|
+
return env;
|
|
172
|
+
}
|
|
173
|
+
/**
|
|
174
|
+
* Read a8e's current configuration from config.yaml + secrets.yaml
|
|
175
|
+
*/
|
|
176
|
+
readA8eConfig() {
|
|
177
|
+
const result = {};
|
|
178
|
+
try {
|
|
179
|
+
if (existsSync(A8E_CONFIG_PATH)) {
|
|
180
|
+
const content = readFileSync(A8E_CONFIG_PATH, 'utf-8');
|
|
181
|
+
const providerMatch = content.match(/^A8E_PROVIDER:\s*(.+)$/m);
|
|
182
|
+
const modelMatch = content.match(/^A8E_MODEL:\s*(.+)$/m);
|
|
183
|
+
if (providerMatch)
|
|
184
|
+
result.provider = providerMatch[1].trim();
|
|
185
|
+
if (modelMatch)
|
|
186
|
+
result.model = modelMatch[1].trim();
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
catch {
|
|
190
|
+
// Config not readable
|
|
191
|
+
}
|
|
192
|
+
try {
|
|
193
|
+
if (existsSync(A8E_SECRETS_PATH)) {
|
|
194
|
+
const content = readFileSync(A8E_SECRETS_PATH, 'utf-8');
|
|
195
|
+
result.hasApiKey = content.includes('PAEAN_AI_API_KEY');
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
catch {
|
|
199
|
+
// Secrets not readable
|
|
200
|
+
}
|
|
201
|
+
return result;
|
|
202
|
+
}
|
|
203
|
+
/**
|
|
204
|
+
* Configure a8e to use Paean AI as provider with the given API key.
|
|
205
|
+
* Writes to ~/.config/a8e/config.yaml and secrets.yaml.
|
|
206
|
+
*/
|
|
207
|
+
configureForPaean(apiKey, model) {
|
|
208
|
+
mkdirSync(A8E_CONFIG_DIR, { recursive: true });
|
|
209
|
+
const targetModel = model || A8E_DEFAULT_MODEL;
|
|
210
|
+
let existingConfig = '';
|
|
211
|
+
try {
|
|
212
|
+
if (existsSync(A8E_CONFIG_PATH)) {
|
|
213
|
+
existingConfig = readFileSync(A8E_CONFIG_PATH, 'utf-8');
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
catch {
|
|
217
|
+
// Fresh config
|
|
218
|
+
}
|
|
219
|
+
// Update or insert provider and model keys
|
|
220
|
+
existingConfig = this.upsertYamlKey(existingConfig, 'A8E_PROVIDER', A8E_DEFAULT_PROVIDER);
|
|
221
|
+
existingConfig = this.upsertYamlKey(existingConfig, 'A8E_MODEL', targetModel);
|
|
222
|
+
writeFileSync(A8E_CONFIG_PATH, existingConfig, 'utf-8');
|
|
223
|
+
// Write the API key to secrets.yaml
|
|
224
|
+
let existingSecrets = '';
|
|
225
|
+
try {
|
|
226
|
+
if (existsSync(A8E_SECRETS_PATH)) {
|
|
227
|
+
existingSecrets = readFileSync(A8E_SECRETS_PATH, 'utf-8');
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
catch {
|
|
231
|
+
// Fresh secrets
|
|
232
|
+
}
|
|
233
|
+
existingSecrets = this.upsertYamlKey(existingSecrets, 'PAEAN_AI_API_KEY', apiKey);
|
|
234
|
+
writeFileSync(A8E_SECRETS_PATH, existingSecrets, 'utf-8');
|
|
235
|
+
}
|
|
236
|
+
/**
|
|
237
|
+
* Upsert a key in a simple YAML document (key: value per line).
|
|
238
|
+
*/
|
|
239
|
+
upsertYamlKey(content, key, value) {
|
|
240
|
+
const regex = new RegExp(`^${key}:.*$`, 'm');
|
|
241
|
+
const line = `${key}: ${value}`;
|
|
242
|
+
if (regex.test(content)) {
|
|
243
|
+
return content.replace(regex, line);
|
|
244
|
+
}
|
|
245
|
+
if (content.length > 0 && !content.endsWith('\n')) {
|
|
246
|
+
content += '\n';
|
|
247
|
+
}
|
|
248
|
+
return content + line + '\n';
|
|
249
|
+
}
|
|
144
250
|
abort() {
|
|
145
251
|
if (this.process) {
|
|
146
252
|
this.process.kill('SIGTERM');
|
|
@@ -148,4 +254,12 @@ export class ArticulateExecutor {
|
|
|
148
254
|
}
|
|
149
255
|
}
|
|
150
256
|
}
|
|
257
|
+
/** Static helpers for the a8e config directory */
|
|
258
|
+
export const A8E_PATHS = {
|
|
259
|
+
configDir: A8E_CONFIG_DIR,
|
|
260
|
+
configFile: A8E_CONFIG_PATH,
|
|
261
|
+
secretsFile: A8E_SECRETS_PATH,
|
|
262
|
+
defaultProvider: A8E_DEFAULT_PROVIDER,
|
|
263
|
+
defaultModel: A8E_DEFAULT_MODEL,
|
|
264
|
+
};
|
|
151
265
|
//# sourceMappingURL=articulate.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"articulate.js","sourceRoot":"","sources":["../../../src/worker/executors/articulate.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"articulate.js","sourceRoot":"","sources":["../../../src/worker/executors/articulate.ts"],"names":[],"mappings":"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"}
|
|
@@ -38,7 +38,8 @@ export declare class SupervisorAgent {
|
|
|
38
38
|
*/
|
|
39
39
|
private parseGroomingResponse;
|
|
40
40
|
/**
|
|
41
|
-
* Local fallback grooming using heuristics
|
|
41
|
+
* Local fallback grooming using heuristics.
|
|
42
|
+
* Articulate (a8e) is the HIGH-PRIORITY executor for all coding/local tasks.
|
|
42
43
|
*/
|
|
43
44
|
private localGroomTask;
|
|
44
45
|
/**
|
|
@@ -46,7 +47,8 @@ export declare class SupervisorAgent {
|
|
|
46
47
|
*/
|
|
47
48
|
private structurePrompt;
|
|
48
49
|
/**
|
|
49
|
-
* Select executor based on task characteristics
|
|
50
|
+
* Select executor based on task characteristics.
|
|
51
|
+
* Articulate (a8e) is preferred for coding/local tasks when available.
|
|
50
52
|
*/
|
|
51
53
|
selectExecutor(task: TodoItem, availableExecutors: ExecutorType[]): ExecutorType;
|
|
52
54
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"supervisor.d.ts","sourceRoot":"","sources":["../../src/worker/supervisor.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAG/C,OAAO,KAAK,EACR,YAAY,EACZ,kBAAkB,EAClB,kBAAkB,EAClB,mBAAmB,EACnB,gBAAgB,EAChB,iBAAiB,EAEjB,kBAAkB,EAErB,MAAM,YAAY,CAAC;AA8CpB;;GAEG;AACH,qBAAa,eAAe;IACxB,OAAO,CAAC,KAAK,CAAU;IACvB,OAAO,CAAC,YAAY,CAAU;gBAElB,OAAO,GAAE;QACjB,KAAK,CAAC,EAAE,OAAO,CAAC;QAChB,YAAY,CAAC,EAAE,OAAO,CAAC;QACvB,KAAK,CAAC,EAAE,MAAM,CAAC;KACb;IAMN;;;OAGG;IACG,SAAS,CACX,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE;QACN,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,aAAa,CAAC,EAAE,QAAQ,EAAE,CAAC;QAC3B,aAAa,CAAC,EAAE,MAAM,CAAC;KAC1B,GACF,OAAO,CAAC,kBAAkB,CAAC;IAc9B;;OAEG;YACW,cAAc;IAoC5B;;OAEG;IACH,OAAO,CAAC,mBAAmB;
|
|
1
|
+
{"version":3,"file":"supervisor.d.ts","sourceRoot":"","sources":["../../src/worker/supervisor.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAG/C,OAAO,KAAK,EACR,YAAY,EACZ,kBAAkB,EAClB,kBAAkB,EAClB,mBAAmB,EACnB,gBAAgB,EAChB,iBAAiB,EAEjB,kBAAkB,EAErB,MAAM,YAAY,CAAC;AA8CpB;;GAEG;AACH,qBAAa,eAAe;IACxB,OAAO,CAAC,KAAK,CAAU;IACvB,OAAO,CAAC,YAAY,CAAU;gBAElB,OAAO,GAAE;QACjB,KAAK,CAAC,EAAE,OAAO,CAAC;QAChB,YAAY,CAAC,EAAE,OAAO,CAAC;QACvB,KAAK,CAAC,EAAE,MAAM,CAAC;KACb;IAMN;;;OAGG;IACG,SAAS,CACX,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE;QACN,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,aAAa,CAAC,EAAE,QAAQ,EAAE,CAAC;QAC3B,aAAa,CAAC,EAAE,MAAM,CAAC;KAC1B,GACF,OAAO,CAAC,kBAAkB,CAAC;IAc9B;;OAEG;YACW,cAAc;IAoC5B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAsC3B;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAwB7B;;;OAGG;IACH,OAAO,CAAC,cAAc;IAgGtB;;OAEG;IACH,OAAO,CAAC,eAAe;IAiBvB;;;OAGG;IACH,cAAc,CAAC,IAAI,EAAE,QAAQ,EAAE,kBAAkB,EAAE,YAAY,EAAE,GAAG,YAAY;IAuChF;;OAEG;IACG,gBAAgB,CAClB,IAAI,EAAE,QAAQ,EACd,IAAI,EAAE,MAAM,EACZ,MAAM,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC,kBAAkB,CAAC;IAa9B;;OAEG;YACW,qBAAqB;IAiEnC;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAmC7B;;OAEG;IACG,cAAc,CAChB,KAAK,EAAE,QAAQ,EACf,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,EACf,eAAe,EAAE,YAAY,GAC9B,OAAO,CAAC,gBAAgB,CAAC;IAgD5B;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAQ5B;;OAEG;IACG,2BAA2B,CAAC,GAAG,EAAE,mBAAmB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAaxF;;OAEG;YACW,sBAAsB;IAgGpC;;OAEG;IACH,OAAO,CAAC,sBAAsB;IA+B9B;;OAEG;IACG,mBAAmB,CACrB,IAAI,EAAE,QAAQ,EACd,KAAK,EAAE,MAAM,EACb,cAAc,EAAE,MAAM,EACtB,OAAO,EAAE,MAAM,EACf,eAAe,EAAE,YAAY,GAC9B,OAAO,CAAC,gBAAgB,CAAC;IA6F5B;;OAEG;IACG,aAAa,CACf,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,GACnC,OAAO,CAAC,iBAAiB,CAAC;IAmG7B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAiC1B;;OAEG;IACG,cAAc,CAChB,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,GACnC,OAAO,CAAC,kBAAkB,CAAC;IA6G9B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IA6B3B;;OAEG;IACH,OAAO,CAAC,GAAG;CAKd;AAKD,wBAAgB,aAAa,CAAC,OAAO,CAAC,EAAE;IACpC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB,GAAG,eAAe,CAKlB;AAED,wBAAgB,eAAe,IAAI,IAAI,CAEtC"}
|