openpaean 0.4.1 → 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.
Files changed (75) hide show
  1. package/README.md +16 -1
  2. package/dist/api/client.d.ts +13 -3
  3. package/dist/api/client.d.ts.map +1 -1
  4. package/dist/api/client.js +130 -24
  5. package/dist/api/client.js.map +1 -1
  6. package/dist/api/gateway-api.d.ts +46 -0
  7. package/dist/api/gateway-api.d.ts.map +1 -0
  8. package/dist/api/gateway-api.js +50 -0
  9. package/dist/api/gateway-api.js.map +1 -0
  10. package/dist/api/worker-api.d.ts +94 -0
  11. package/dist/api/worker-api.d.ts.map +1 -0
  12. package/dist/api/worker-api.js +85 -0
  13. package/dist/api/worker-api.js.map +1 -0
  14. package/dist/cli.js +15 -2
  15. package/dist/cli.js.map +1 -1
  16. package/dist/commands/agent.d.ts +4 -0
  17. package/dist/commands/agent.d.ts.map +1 -1
  18. package/dist/commands/agent.js +57 -5
  19. package/dist/commands/agent.js.map +1 -1
  20. package/dist/commands/gateway.d.ts +8 -0
  21. package/dist/commands/gateway.d.ts.map +1 -0
  22. package/dist/commands/gateway.js +86 -0
  23. package/dist/commands/gateway.js.map +1 -0
  24. package/dist/commands/update.d.ts +7 -0
  25. package/dist/commands/update.d.ts.map +1 -0
  26. package/dist/commands/update.js +92 -0
  27. package/dist/commands/update.js.map +1 -0
  28. package/dist/commands/worker.d.ts +7 -0
  29. package/dist/commands/worker.d.ts.map +1 -0
  30. package/dist/commands/worker.js +283 -0
  31. package/dist/commands/worker.js.map +1 -0
  32. package/dist/gateway/service.d.ts +94 -0
  33. package/dist/gateway/service.d.ts.map +1 -0
  34. package/dist/gateway/service.js +331 -0
  35. package/dist/gateway/service.js.map +1 -0
  36. package/dist/index.d.ts +5 -3
  37. package/dist/index.d.ts.map +1 -1
  38. package/dist/index.js +7 -3
  39. package/dist/index.js.map +1 -1
  40. package/dist/mcp/client.d.ts.map +1 -1
  41. package/dist/mcp/client.js +12 -1
  42. package/dist/mcp/client.js.map +1 -1
  43. package/dist/utils/config.d.ts +13 -0
  44. package/dist/utils/config.d.ts.map +1 -1
  45. package/dist/utils/config.js +24 -0
  46. package/dist/utils/config.js.map +1 -1
  47. package/dist/utils/output.d.ts +4 -0
  48. package/dist/utils/output.d.ts.map +1 -1
  49. package/dist/utils/output.js +17 -0
  50. package/dist/utils/output.js.map +1 -1
  51. package/dist/worker/executors/articulate.d.ts +19 -0
  52. package/dist/worker/executors/articulate.d.ts.map +1 -0
  53. package/dist/worker/executors/articulate.js +147 -0
  54. package/dist/worker/executors/articulate.js.map +1 -0
  55. package/dist/worker/executors/claude.d.ts +17 -0
  56. package/dist/worker/executors/claude.d.ts.map +1 -0
  57. package/dist/worker/executors/claude.js +102 -0
  58. package/dist/worker/executors/claude.js.map +1 -0
  59. package/dist/worker/executors/index.d.ts +26 -0
  60. package/dist/worker/executors/index.d.ts.map +1 -0
  61. package/dist/worker/executors/index.js +81 -0
  62. package/dist/worker/executors/index.js.map +1 -0
  63. package/dist/worker/index.d.ts +9 -0
  64. package/dist/worker/index.d.ts.map +1 -0
  65. package/dist/worker/index.js +9 -0
  66. package/dist/worker/index.js.map +1 -0
  67. package/dist/worker/service.d.ts +48 -0
  68. package/dist/worker/service.d.ts.map +1 -0
  69. package/dist/worker/service.js +551 -0
  70. package/dist/worker/service.js.map +1 -0
  71. package/dist/worker/types.d.ts +133 -0
  72. package/dist/worker/types.d.ts.map +1 -0
  73. package/dist/worker/types.js +70 -0
  74. package/dist/worker/types.js.map +1 -0
  75. package/package.json +8 -3
@@ -0,0 +1,283 @@
1
+ /**
2
+ * Worker Command
3
+ * CLI commands for the OpenPaean Local Autonomous Worker
4
+ */
5
+ import { Command } from 'commander';
6
+ import chalk from 'chalk';
7
+ import { writeFileSync, readFileSync, existsSync, unlinkSync } from 'fs';
8
+ import { join } from 'path';
9
+ import { WorkerService, DEFAULT_WORKER_CONFIG, getExecutorRegistry, ArticulateExecutor, ClaudeExecutor, } from '../worker/index.js';
10
+ import { isAuthenticated, getConfigDir } from '../utils/config.js';
11
+ import * as output from '../utils/output.js';
12
+ function getWorkerPidFile() {
13
+ return join(getConfigDir(), 'worker.pid');
14
+ }
15
+ function writeWorkerPid(workspace) {
16
+ const info = {
17
+ pid: process.pid,
18
+ startedAt: new Date().toISOString(),
19
+ workspace,
20
+ };
21
+ try {
22
+ writeFileSync(getWorkerPidFile(), JSON.stringify(info, null, 2));
23
+ }
24
+ catch { /* best effort */ }
25
+ }
26
+ function readWorkerPid() {
27
+ try {
28
+ if (!existsSync(getWorkerPidFile()))
29
+ return null;
30
+ return JSON.parse(readFileSync(getWorkerPidFile(), 'utf-8'));
31
+ }
32
+ catch {
33
+ return null;
34
+ }
35
+ }
36
+ function removeWorkerPid() {
37
+ try {
38
+ unlinkSync(getWorkerPidFile());
39
+ }
40
+ catch { /* ignore */ }
41
+ }
42
+ function isWorkerRunning(pid) {
43
+ try {
44
+ process.kill(pid, 0);
45
+ return true;
46
+ }
47
+ catch {
48
+ return false;
49
+ }
50
+ }
51
+ function requireAuth() {
52
+ if (!isAuthenticated()) {
53
+ output.error('Not authenticated. Please run "openpaean login" first.');
54
+ process.exit(1);
55
+ }
56
+ }
57
+ export const workerCommand = new Command('worker')
58
+ .description('Autonomous worker mode for continuous task execution');
59
+ workerCommand
60
+ .command('start')
61
+ .description('Start the autonomous worker loop')
62
+ .option('-i, --interval <ms>', 'Poll interval in milliseconds', String(DEFAULT_WORKER_CONFIG.pollInterval))
63
+ .option('-r, --max-retries <n>', 'Maximum retries per task', String(DEFAULT_WORKER_CONFIG.maxRetries))
64
+ .option('-t, --timeout <ms>', 'Task timeout in milliseconds', String(DEFAULT_WORKER_CONFIG.taskTimeout))
65
+ .option('--no-verification', 'Disable verification step')
66
+ .option('-d, --debug', 'Enable debug logging')
67
+ .action(async (options) => {
68
+ console.log(chalk.yellow('\n [Deprecated] `openpaean worker start` will be removed in a future release.'));
69
+ console.log(chalk.yellow(' Use `openpaean --worker` to enable the worker within the interactive CLI.\n'));
70
+ requireAuth();
71
+ const parsedInterval = parseInt(options.interval, 10);
72
+ const parsedRetries = parseInt(options.maxRetries, 10);
73
+ const parsedTimeout = parseInt(options.timeout, 10);
74
+ const config = {
75
+ pollInterval: Math.max(1000, isNaN(parsedInterval) ? DEFAULT_WORKER_CONFIG.pollInterval : parsedInterval),
76
+ maxRetries: Math.max(1, Math.min(10, isNaN(parsedRetries) ? DEFAULT_WORKER_CONFIG.maxRetries : parsedRetries)),
77
+ taskTimeout: Math.max(10000, isNaN(parsedTimeout) ? DEFAULT_WORKER_CONFIG.taskTimeout : parsedTimeout),
78
+ verificationEnabled: options.verification !== false,
79
+ debug: options.debug ?? false,
80
+ autonomousMode: true,
81
+ };
82
+ console.log('');
83
+ console.log(chalk.bold.cyan(' ╔══════════════════════════════════════════════════╗'));
84
+ console.log(chalk.bold.cyan(' ║') + chalk.bold.white(' OPENPAEAN WORKER ') + chalk.green('●') + chalk.white(' Starting...') + chalk.bold.cyan(' ║'));
85
+ console.log(chalk.bold.cyan(' ╚══════════════════════════════════════════════════╝'));
86
+ console.log('');
87
+ output.tableRow('Poll Interval', `${config.pollInterval / 1000}s`, 20);
88
+ output.tableRow('Max Retries', String(config.maxRetries), 20);
89
+ output.tableRow('Task Timeout', `${config.taskTimeout / 60000}min`, 20);
90
+ output.tableRow('Verification', config.verificationEnabled ? 'Enabled' : 'Disabled', 20);
91
+ console.log('');
92
+ const worker = new WorkerService(config);
93
+ writeWorkerPid();
94
+ const startTime = Date.now();
95
+ worker.onEvent((event) => {
96
+ const elapsed = output.formatDuration(Date.now() - startTime);
97
+ switch (event.type) {
98
+ case 'started':
99
+ console.log(chalk.green('✓') + chalk.dim(' Worker started'));
100
+ console.log(chalk.dim(` Press Ctrl+C to stop\n`));
101
+ break;
102
+ case 'stopped':
103
+ console.log(chalk.yellow('●') + chalk.dim(' Worker stopped'));
104
+ break;
105
+ case 'task_claimed':
106
+ console.log(chalk.cyan('▶') + ` Task claimed: ${chalk.white(output.truncate(event.task.content, 50))}`);
107
+ console.log(chalk.dim(` ID: ${event.task.id} | Priority: ${event.task.priority}`));
108
+ break;
109
+ case 'task_started':
110
+ console.log(chalk.blue('◉') + ` Executing (attempt ${event.attempt}/${config.maxRetries})...`);
111
+ break;
112
+ case 'task_completed':
113
+ console.log(chalk.green('✓') + ` Task completed in ${output.formatDuration(event.duration)}`);
114
+ console.log('');
115
+ break;
116
+ case 'task_failed':
117
+ console.log(chalk.red('✗') + ` Task failed: ${chalk.dim(output.truncate(event.error, 60))}`);
118
+ if (event.willRetry) {
119
+ console.log(chalk.yellow('↻') + chalk.dim(' Will retry...'));
120
+ }
121
+ break;
122
+ case 'task_verification_failed':
123
+ console.log(chalk.yellow('⚠') + ' Verification failed, will retry...');
124
+ break;
125
+ case 'poll_empty':
126
+ if (config.debug) {
127
+ console.log(chalk.dim(` [${elapsed}] No pending tasks`));
128
+ }
129
+ break;
130
+ case 'error':
131
+ console.log(chalk.red('✗') + ` Error: ${event.error}`);
132
+ break;
133
+ }
134
+ });
135
+ let cleaningUp = false;
136
+ let lastSigintTime = 0;
137
+ const cleanup = async () => {
138
+ if (cleaningUp)
139
+ return;
140
+ cleaningUp = true;
141
+ process.off('SIGINT', handleSigint);
142
+ process.off('SIGTERM', cleanup);
143
+ console.log('');
144
+ console.log(chalk.yellow('Stopping worker...'));
145
+ try {
146
+ await worker.stop();
147
+ }
148
+ catch (err) {
149
+ if (config.debug) {
150
+ console.log(chalk.dim(` Warning: cleanup error: ${err.message}`));
151
+ }
152
+ }
153
+ removeWorkerPid();
154
+ const state = worker.getState();
155
+ console.log('');
156
+ console.log(chalk.bold('Session Summary:'));
157
+ output.tableRow('Completed', String(state.completedCount), 15);
158
+ output.tableRow('Failed', String(state.failedCount), 15);
159
+ output.tableRow('Uptime', output.formatDuration(Date.now() - startTime), 15);
160
+ console.log('');
161
+ process.exit(0);
162
+ };
163
+ const handleSigint = () => {
164
+ const now = Date.now();
165
+ if (now - lastSigintTime < 1000) {
166
+ cleanup();
167
+ }
168
+ else {
169
+ lastSigintTime = now;
170
+ console.log('');
171
+ console.log(chalk.dim(' Press Ctrl+C again to stop the worker'));
172
+ }
173
+ };
174
+ process.on('SIGINT', handleSigint);
175
+ process.on('SIGTERM', cleanup);
176
+ try {
177
+ await worker.start();
178
+ await new Promise(() => { });
179
+ }
180
+ catch (error) {
181
+ console.log(chalk.red('✗') + ` Failed to start worker: ${error.message}`);
182
+ process.exit(1);
183
+ }
184
+ });
185
+ workerCommand
186
+ .command('status')
187
+ .description('Check worker status')
188
+ .option('--json', 'Output as JSON')
189
+ .action((options) => {
190
+ const pidInfo = readWorkerPid();
191
+ if (!pidInfo) {
192
+ console.log(chalk.dim('No worker is currently running.'));
193
+ console.log(chalk.dim('Use `openpaean worker start` to start a worker.'));
194
+ return;
195
+ }
196
+ const running = isWorkerRunning(pidInfo.pid);
197
+ if (!running) {
198
+ removeWorkerPid();
199
+ console.log(chalk.dim('No worker is currently running (stale PID file cleaned up).'));
200
+ return;
201
+ }
202
+ if (options.json) {
203
+ console.log(JSON.stringify({ ...pidInfo, running }, null, 2));
204
+ return;
205
+ }
206
+ const uptime = output.formatDuration(Date.now() - new Date(pidInfo.startedAt).getTime());
207
+ console.log(chalk.bold.blue('\nWorker Status\n'));
208
+ output.tableRow('Status', chalk.green('Running'), 15);
209
+ output.tableRow('PID', String(pidInfo.pid), 15);
210
+ output.tableRow('Uptime', uptime, 15);
211
+ output.tableRow('Started', new Date(pidInfo.startedAt).toLocaleString(), 15);
212
+ if (pidInfo.workspace) {
213
+ output.tableRow('Workspace', pidInfo.workspace, 15);
214
+ }
215
+ console.log('');
216
+ });
217
+ workerCommand
218
+ .command('prompt')
219
+ .description('Execute a task with a specific executor')
220
+ .argument('[prompt...]', 'Natural language task prompt')
221
+ .option('-p, --prompt <text>', 'Prompt text (alternative to positional)')
222
+ .option('-e, --executor <type>', 'Force specific executor (claude|articulate)')
223
+ .option('--auto-approve', 'Skip confirmation prompts')
224
+ .option('-w, --workspace <path>', 'Working directory')
225
+ .option('-v, --verbose', 'Enable verbose logging')
226
+ .action(async (promptArgs, options) => {
227
+ requireAuth();
228
+ const promptText = options.prompt || promptArgs.join(' ');
229
+ if (!promptText.trim()) {
230
+ output.error('No prompt provided. Usage: openpaean worker prompt "Your task"');
231
+ process.exit(1);
232
+ }
233
+ const debug = options.verbose ?? false;
234
+ const cwd = options.workspace || process.cwd();
235
+ const registry = getExecutorRegistry();
236
+ registry.register(new ArticulateExecutor());
237
+ registry.register(new ClaudeExecutor());
238
+ const executorType = options.executor || 'articulate';
239
+ const available = await registry.getAvailable();
240
+ if (debug) {
241
+ console.log(chalk.dim(`Available executors: ${available.join(', ')}`));
242
+ }
243
+ const finalExecutor = available.includes(executorType) ? executorType : (available[0] || 'articulate');
244
+ if (!available.includes(executorType)) {
245
+ console.log(chalk.yellow('⚠') + ` Executor '${executorType}' not available, using '${finalExecutor}'`);
246
+ }
247
+ console.log(chalk.blue('◉') + ` Executing with ${chalk.bold(finalExecutor)} executor...`);
248
+ console.log(chalk.dim('─'.repeat(50)));
249
+ const startTime = Date.now();
250
+ const result = await registry.execute(finalExecutor, promptText, {
251
+ cwd,
252
+ skipPermissions: options.autoApprove,
253
+ timeout: 600000,
254
+ onOutput: (text, stream) => {
255
+ const lines = text.split('\n');
256
+ for (const line of lines) {
257
+ if (line.trim()) {
258
+ const prefix = stream === 'stderr' ? chalk.yellow('│') : chalk.dim('│');
259
+ console.log(prefix + ' ' + output.truncate(line, 70));
260
+ }
261
+ }
262
+ },
263
+ });
264
+ console.log(chalk.dim('─'.repeat(50)));
265
+ const totalDuration = Date.now() - startTime;
266
+ if (result.success) {
267
+ console.log(chalk.green('✓') + ` Execution completed`);
268
+ }
269
+ else {
270
+ console.log(chalk.red('✗') + ` Execution failed`);
271
+ if (result.error) {
272
+ console.log(chalk.dim(` Error: ${output.truncate(result.error, 60)}`));
273
+ }
274
+ }
275
+ console.log('');
276
+ console.log(chalk.bold('Summary:'));
277
+ output.tableRow('Status', result.success ? 'Success' : 'Failed', 15);
278
+ output.tableRow('Executor', finalExecutor, 15);
279
+ output.tableRow('Duration', output.formatDuration(totalDuration), 15);
280
+ console.log('');
281
+ process.exit(result.success ? 0 : 1);
282
+ });
283
+ //# sourceMappingURL=worker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worker.js","sourceRoot":"","sources":["../../src/commands/worker.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,94 @@
1
+ /**
2
+ * Gateway Service
3
+ *
4
+ * Runs the OpenPaean CLI as a gateway node that polls for remote messages
5
+ * from web/mobile clients, processes them locally with full MCP tool access,
6
+ * and relays streaming events back through the server.
7
+ */
8
+ import { EventEmitter } from 'events';
9
+ import { type GatewayRequest } from '../api/gateway-api.js';
10
+ export interface GatewayConfig {
11
+ pollInterval: number;
12
+ eventBatchInterval: number;
13
+ requestTimeout: number;
14
+ debug?: boolean;
15
+ }
16
+ export type GatewayStatus = 'idle' | 'running' | 'stopping';
17
+ export interface GatewayState {
18
+ status: GatewayStatus;
19
+ currentRequest?: GatewayRequest;
20
+ completedCount: number;
21
+ failedCount: number;
22
+ startedAt?: Date;
23
+ lastPollAt?: Date;
24
+ }
25
+ export type GatewayEvent = {
26
+ type: 'started';
27
+ } | {
28
+ type: 'stopped';
29
+ } | {
30
+ type: 'request_claimed';
31
+ request: GatewayRequest;
32
+ } | {
33
+ type: 'request_completed';
34
+ request: GatewayRequest;
35
+ durationMs: number;
36
+ } | {
37
+ type: 'request_failed';
38
+ request: GatewayRequest;
39
+ error: string;
40
+ } | {
41
+ type: 'poll_empty';
42
+ } | {
43
+ type: 'error';
44
+ error: string;
45
+ } | {
46
+ type: 'remote_content';
47
+ text: string;
48
+ partial: boolean;
49
+ } | {
50
+ type: 'remote_tool_call';
51
+ id: string;
52
+ name: string;
53
+ serverName?: string;
54
+ isMcp: boolean;
55
+ } | {
56
+ type: 'remote_tool_result';
57
+ id: string;
58
+ name: string;
59
+ status: 'completed' | 'error';
60
+ } | {
61
+ type: 'remote_done';
62
+ conversationId?: string;
63
+ } | {
64
+ type: 'remote_error';
65
+ error: string;
66
+ };
67
+ export declare class GatewayService extends EventEmitter {
68
+ private config;
69
+ private state;
70
+ private pollTimer;
71
+ private heartbeatTimer;
72
+ private abortController;
73
+ private mcpState;
74
+ private onMcpToolCall;
75
+ private mcpClient;
76
+ private sessionId?;
77
+ private deviceName;
78
+ constructor(config?: Partial<GatewayConfig>);
79
+ getState(): GatewayState;
80
+ isProcessingRemote(): boolean;
81
+ setMcpState(mcpState: unknown, onMcpToolCall: unknown, mcpClient: unknown): void;
82
+ start(): Promise<void>;
83
+ stop(): Promise<void>;
84
+ private startHeartbeat;
85
+ private sendHeartbeatUpdate;
86
+ private startPolling;
87
+ private pollAndProcess;
88
+ private processRequest;
89
+ private finishRequest;
90
+ private log;
91
+ }
92
+ export declare function getGateway(config?: Partial<GatewayConfig>): GatewayService;
93
+ export declare function resetGateway(): void;
94
+ //# sourceMappingURL=service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../src/gateway/service.ts"],"names":[],"mappings":"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"}