openpaean 0.7.11 → 0.7.13

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 (45) hide show
  1. package/dist/api/worker-api.d.ts +6 -76
  2. package/dist/api/worker-api.d.ts.map +1 -1
  3. package/dist/api/worker-api.js +6 -63
  4. package/dist/api/worker-api.js.map +1 -1
  5. package/package.json +1 -1
  6. package/dist/commands/worker.d.ts +0 -7
  7. package/dist/commands/worker.d.ts.map +0 -1
  8. package/dist/commands/worker.js +0 -284
  9. package/dist/commands/worker.js.map +0 -1
  10. package/dist/ui/terminal/ErrorDisplay.d.ts +0 -63
  11. package/dist/ui/terminal/ErrorDisplay.d.ts.map +0 -1
  12. package/dist/ui/terminal/ErrorDisplay.js +0 -113
  13. package/dist/ui/terminal/ErrorDisplay.js.map +0 -1
  14. package/dist/ui/terminal/HelpDisplay.d.ts +0 -21
  15. package/dist/ui/terminal/HelpDisplay.d.ts.map +0 -1
  16. package/dist/ui/terminal/HelpDisplay.js +0 -89
  17. package/dist/ui/terminal/HelpDisplay.js.map +0 -1
  18. package/dist/worker/executors/articulate.d.ts +0 -19
  19. package/dist/worker/executors/articulate.d.ts.map +0 -1
  20. package/dist/worker/executors/articulate.js +0 -147
  21. package/dist/worker/executors/articulate.js.map +0 -1
  22. package/dist/worker/executors/claude.d.ts +0 -17
  23. package/dist/worker/executors/claude.d.ts.map +0 -1
  24. package/dist/worker/executors/claude.js +0 -102
  25. package/dist/worker/executors/claude.js.map +0 -1
  26. package/dist/worker/executors/index.d.ts +0 -26
  27. package/dist/worker/executors/index.d.ts.map +0 -1
  28. package/dist/worker/executors/index.js +0 -81
  29. package/dist/worker/executors/index.js.map +0 -1
  30. package/dist/worker/executors/paeanclaw.d.ts +0 -22
  31. package/dist/worker/executors/paeanclaw.d.ts.map +0 -1
  32. package/dist/worker/executors/paeanclaw.js +0 -182
  33. package/dist/worker/executors/paeanclaw.js.map +0 -1
  34. package/dist/worker/index.d.ts +0 -10
  35. package/dist/worker/index.d.ts.map +0 -1
  36. package/dist/worker/index.js +0 -10
  37. package/dist/worker/index.js.map +0 -1
  38. package/dist/worker/service.d.ts +0 -48
  39. package/dist/worker/service.d.ts.map +0 -1
  40. package/dist/worker/service.js +0 -559
  41. package/dist/worker/service.js.map +0 -1
  42. package/dist/worker/types.d.ts +0 -134
  43. package/dist/worker/types.d.ts.map +0 -1
  44. package/dist/worker/types.js +0 -71
  45. package/dist/worker/types.js.map +0 -1
@@ -1,26 +1,10 @@
1
1
  /**
2
2
  * Worker API
3
- * Specialized API client for OpenPaean CLI Worker operations.
3
+ * Heartbeat and status functions used by the Gateway service.
4
4
  *
5
- * All Worker API calls use a non-clearing API client so that
6
- * transient 401 errors don't invalidate the user's auth state.
5
+ * Task polling/claiming/completion functions were removed the autonomous
6
+ * WorkerService that consumed them has been replaced by loop + gateway.
7
7
  */
8
- import type { TodoItem } from './todo.js';
9
- export interface CliPayload {
10
- hint?: string;
11
- workingDirectory?: string;
12
- timeout?: number;
13
- requiresConfirmation?: boolean;
14
- context?: Record<string, unknown>;
15
- allowedPaths?: string[];
16
- }
17
- export interface WorkerTask extends TodoItem {
18
- taskType: 'remote-agent';
19
- cliPayload?: CliPayload;
20
- claimedBySessionId?: string;
21
- claimedByDeviceName?: string;
22
- claimedAt?: string;
23
- }
24
8
  export type WorkerStatus = 'idle' | 'running' | 'paused';
25
9
  export interface WorkerHeartbeatInput {
26
10
  status: WorkerStatus;
@@ -30,65 +14,11 @@ export interface WorkerHeartbeatInput {
30
14
  workingDirectory?: string;
31
15
  capabilities?: string[];
32
16
  }
33
- export type ProgressStage = 'started' | 'executing' | 'verifying' | 'waiting_confirmation';
34
- export interface TaskProgressInput {
35
- stage: ProgressStage;
36
- message?: string;
37
- percentage?: number;
38
- }
39
- export interface TaskExecutionResult {
40
- success: boolean;
41
- output?: string;
42
- artifacts?: Array<{
43
- type: 'file' | 'text';
44
- name: string;
45
- content: string;
46
- }>;
47
- durationMs?: number;
48
- }
49
- export interface ActiveWorker {
50
- sessionId: string;
51
- deviceName: string;
52
- deviceType: string;
53
- status: WorkerStatus;
54
- capabilities: string[];
55
- currentTaskId?: string;
56
- lastHeartbeat?: string;
57
- }
58
- export declare function pollWorkerTasks(options?: {
59
- sessionId: string;
60
- taskTypes?: Array<'remote-agent'>;
61
- tags?: string[];
62
- limit?: number;
63
- }): Promise<{
64
- tasks: WorkerTask[];
65
- count: number;
66
- }>;
67
- export declare function claimTask(taskId: string, sessionId: string, deviceName?: string): Promise<{
68
- success: boolean;
69
- task?: WorkerTask;
70
- error?: string;
71
- }>;
72
- export declare function releaseTask(taskId: string, sessionId: string, reason?: string): Promise<{
73
- success: boolean;
74
- error?: string;
75
- }>;
17
+ /**
18
+ * Send Worker heartbeat
19
+ */
76
20
  export declare function sendHeartbeat(sessionId: string, input: WorkerHeartbeatInput): Promise<{
77
21
  success: boolean;
78
22
  error?: string;
79
23
  }>;
80
- export declare function reportProgress(taskId: string, sessionId: string, progress: TaskProgressInput): Promise<{
81
- success: boolean;
82
- subtaskId?: string;
83
- error?: string;
84
- }>;
85
- export declare function completeWorkerTask(taskId: string, sessionId: string, result: TaskExecutionResult): Promise<{
86
- success: boolean;
87
- error?: string;
88
- }>;
89
- export declare function checkConfirmation(taskId: string, subtaskId: string): Promise<{
90
- approved: boolean;
91
- error?: string;
92
- }>;
93
- export declare function getActiveWorkers(): Promise<ActiveWorker[]>;
94
24
  //# sourceMappingURL=worker-api.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"worker-api.d.ts","sourceRoot":"","sources":["../../src/api/worker-api.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"worker-api.d.ts","sourceRoot":"","sources":["../../src/api/worker-api.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAkBH,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,SAAS,GAAG,QAAQ,CAAC;AAEzD,MAAM,WAAW,oBAAoB;IACjC,MAAM,EAAE,YAAY,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;CAC3B;AAMD;;GAEG;AACH,wBAAsB,aAAa,CAC/B,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,oBAAoB,GAC5B,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAW/C"}
@@ -1,9 +1,9 @@
1
1
  /**
2
2
  * Worker API
3
- * Specialized API client for OpenPaean CLI Worker operations.
3
+ * Heartbeat and status functions used by the Gateway service.
4
4
  *
5
- * All Worker API calls use a non-clearing API client so that
6
- * transient 401 errors don't invalidate the user's auth state.
5
+ * Task polling/claiming/completion functions were removed the autonomous
6
+ * WorkerService that consumed them has been replaced by loop + gateway.
7
7
  */
8
8
  import { createNonClearingApiClient } from './client.js';
9
9
  let cachedClient = null;
@@ -16,26 +16,9 @@ function getWorkerApiClient() {
16
16
  // ============================================
17
17
  // API Functions
18
18
  // ============================================
19
- export async function pollWorkerTasks(options) {
20
- const client = getWorkerApiClient();
21
- const response = await client.post('/sdk/worker/poll', options);
22
- return response.data.data;
23
- }
24
- export async function claimTask(taskId, sessionId, deviceName) {
25
- const client = getWorkerApiClient();
26
- const response = await client.post(`/sdk/worker/claim/${taskId}`, { sessionId, deviceName });
27
- return response.data;
28
- }
29
- export async function releaseTask(taskId, sessionId, reason) {
30
- const client = getWorkerApiClient();
31
- try {
32
- const response = await client.post(`/sdk/worker/release/${taskId}`, { sessionId, reason });
33
- return response.data;
34
- }
35
- catch (error) {
36
- return { success: false, error: error instanceof Error ? error.message : 'Unknown error' };
37
- }
38
- }
19
+ /**
20
+ * Send Worker heartbeat
21
+ */
39
22
  export async function sendHeartbeat(sessionId, input) {
40
23
  const client = getWorkerApiClient();
41
24
  try {
@@ -46,44 +29,4 @@ export async function sendHeartbeat(sessionId, input) {
46
29
  return { success: false, error: error instanceof Error ? error.message : 'Unknown error' };
47
30
  }
48
31
  }
49
- export async function reportProgress(taskId, sessionId, progress) {
50
- const client = getWorkerApiClient();
51
- try {
52
- const response = await client.post(`/sdk/worker/progress/${taskId}`, { sessionId, ...progress });
53
- return response.data;
54
- }
55
- catch (error) {
56
- return { success: false, error: error instanceof Error ? error.message : 'Unknown error' };
57
- }
58
- }
59
- export async function completeWorkerTask(taskId, sessionId, result) {
60
- const client = getWorkerApiClient();
61
- try {
62
- const response = await client.post(`/sdk/worker/complete/${taskId}`, { sessionId, result });
63
- return response.data;
64
- }
65
- catch (error) {
66
- return { success: false, error: error instanceof Error ? error.message : 'Unknown error' };
67
- }
68
- }
69
- export async function checkConfirmation(taskId, subtaskId) {
70
- const client = getWorkerApiClient();
71
- try {
72
- const response = await client.get(`/sdk/worker/confirmation/${taskId}/${subtaskId}`);
73
- return { approved: response.data.approved };
74
- }
75
- catch (error) {
76
- return { approved: false, error: error instanceof Error ? error.message : 'Unknown error' };
77
- }
78
- }
79
- export async function getActiveWorkers() {
80
- const client = getWorkerApiClient();
81
- try {
82
- const response = await client.get('/sdk/worker/active');
83
- return response.data.data;
84
- }
85
- catch {
86
- return [];
87
- }
88
- }
89
32
  //# sourceMappingURL=worker-api.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"worker-api.js","sourceRoot":"","sources":["../../src/api/worker-api.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"worker-api.js","sourceRoot":"","sources":["../../src/api/worker-api.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EAAE,0BAA0B,EAAE,MAAM,aAAa,CAAC;AAEzD,IAAI,YAAY,GAAyB,IAAI,CAAC;AAE9C,SAAS,kBAAkB;IACvB,IAAI,CAAC,YAAY,EAAE,CAAC;QAChB,YAAY,GAAG,0BAA0B,EAAE,CAAC;IAChD,CAAC;IACD,OAAO,YAAY,CAAC;AACxB,CAAC;AAiBD,+CAA+C;AAC/C,gBAAgB;AAChB,+CAA+C;AAE/C;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAC/B,SAAiB,EACjB,KAA2B;IAE3B,MAAM,MAAM,GAAG,kBAAkB,EAAE,CAAC;IACpC,IAAI,CAAC;QACD,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,IAAI,CAC9B,uBAAuB,EACvB,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,CAC1B,CAAC;QACF,OAAO,QAAQ,CAAC,IAAI,CAAC;IACzB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC;IAC/F,CAAC;AACL,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "openpaean",
3
- "version": "0.7.11",
3
+ "version": "0.7.13",
4
4
  "description": "Open source AI agent CLI with executor framework (a8e, Claude Code), gateway relay, MCP support, and scrolling TUI",
5
5
  "author": "Paean AI <dev@paean.ai>",
6
6
  "license": "MIT",
@@ -1,7 +0,0 @@
1
- /**
2
- * Worker Command
3
- * CLI commands for the OpenPaean Local Autonomous Worker
4
- */
5
- import { Command } from 'commander';
6
- export declare const workerCommand: Command;
7
- //# sourceMappingURL=worker.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"worker.d.ts","sourceRoot":"","sources":["../../src/commands/worker.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA8DpC,eAAO,MAAM,aAAa,SAC8C,CAAC"}
@@ -1,284 +0,0 @@
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, PaeanclawExecutor, } 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
- registry.register(new PaeanclawExecutor());
239
- const executorType = options.executor || 'articulate';
240
- const available = await registry.getAvailable();
241
- if (debug) {
242
- console.log(chalk.dim(`Available executors: ${available.join(', ')}`));
243
- }
244
- const finalExecutor = available.includes(executorType) ? executorType : (available[0] || 'articulate');
245
- if (!available.includes(executorType)) {
246
- console.log(chalk.yellow('⚠') + ` Executor '${executorType}' not available, using '${finalExecutor}'`);
247
- }
248
- console.log(chalk.blue('◉') + ` Executing with ${chalk.bold(finalExecutor)} executor...`);
249
- console.log(chalk.dim('─'.repeat(50)));
250
- const startTime = Date.now();
251
- const result = await registry.execute(finalExecutor, promptText, {
252
- cwd,
253
- skipPermissions: options.autoApprove,
254
- timeout: 600000,
255
- onOutput: (text, stream) => {
256
- const lines = text.split('\n');
257
- for (const line of lines) {
258
- if (line.trim()) {
259
- const prefix = stream === 'stderr' ? chalk.yellow('│') : chalk.dim('│');
260
- console.log(prefix + ' ' + output.truncate(line, 70));
261
- }
262
- }
263
- },
264
- });
265
- console.log(chalk.dim('─'.repeat(50)));
266
- const totalDuration = Date.now() - startTime;
267
- if (result.success) {
268
- console.log(chalk.green('✓') + ` Execution completed`);
269
- }
270
- else {
271
- console.log(chalk.red('✗') + ` Execution failed`);
272
- if (result.error) {
273
- console.log(chalk.dim(` Error: ${output.truncate(result.error, 60)}`));
274
- }
275
- }
276
- console.log('');
277
- console.log(chalk.bold('Summary:'));
278
- output.tableRow('Status', result.success ? 'Success' : 'Failed', 15);
279
- output.tableRow('Executor', finalExecutor, 15);
280
- output.tableRow('Duration', output.formatDuration(totalDuration), 15);
281
- console.log('');
282
- process.exit(result.success ? 0 : 1);
283
- });
284
- //# sourceMappingURL=worker.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"worker.js","sourceRoot":"","sources":["../../src/commands/worker.ts"],"names":[],"mappings":"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"}
@@ -1,63 +0,0 @@
1
- /**
2
- * Error Display
3
- * Structured error messages with cause and suggestions
4
- */
5
- /**
6
- * Error detail structure
7
- */
8
- export interface ErrorDetail {
9
- message: string;
10
- cause?: string;
11
- suggestion?: string;
12
- code?: string;
13
- }
14
- /**
15
- * Format an error for display
16
- */
17
- export declare function formatError(detail: ErrorDetail): string;
18
- /**
19
- * Display an error and return the formatted string
20
- */
21
- export declare function displayError(detail: ErrorDetail): string;
22
- /**
23
- * Common error templates
24
- */
25
- export declare const Errors: {
26
- /**
27
- * Network error
28
- */
29
- network: (cause?: string) => ErrorDetail;
30
- /**
31
- * Authentication error
32
- */
33
- auth: () => ErrorDetail;
34
- /**
35
- * MCP connection error
36
- */
37
- mcpConnection: (serverName: string, cause?: string) => ErrorDetail;
38
- /**
39
- * MCP tool error
40
- */
41
- mcpTool: (toolName: string, cause?: string) => ErrorDetail;
42
- /**
43
- * File not found
44
- */
45
- fileNotFound: (path: string) => ErrorDetail;
46
- /**
47
- * Invalid input
48
- */
49
- invalidInput: (field?: string) => ErrorDetail;
50
- /**
51
- * Generic error
52
- */
53
- generic: (message: string, suggestion?: string) => ErrorDetail;
54
- };
55
- /**
56
- * Parse an Error object into ErrorDetail
57
- */
58
- export declare function parseError(err: unknown): ErrorDetail;
59
- /**
60
- * Display error from caught exception
61
- */
62
- export declare function showError(err: unknown): string;
63
- //# sourceMappingURL=ErrorDisplay.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ErrorDisplay.d.ts","sourceRoot":"","sources":["../../../src/ui/terminal/ErrorDisplay.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH;;GAEG;AACH,MAAM,WAAW,WAAW;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,CAsBvD;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,CAExD;AAED;;GAEG;AACH,eAAO,MAAM,MAAM;IACf;;OAEG;sBACe,MAAM,KAAG,WAAW;IAMtC;;OAEG;gBACO,WAAW;IAMrB;;OAEG;gCACyB,MAAM,UAAU,MAAM,KAAG,WAAW;IAMhE;;OAEG;wBACiB,MAAM,UAAU,MAAM,KAAG,WAAW;IAMxD;;OAEG;yBACkB,MAAM,KAAG,WAAW;IAKzC;;OAEG;2BACoB,MAAM,KAAG,WAAW;IAK3C;;OAEG;uBACgB,MAAM,eAAe,MAAM,KAAG,WAAW;CAI/D,CAAC;AAEF;;GAEG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,OAAO,GAAG,WAAW,CAapD;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,CAG9C"}