@crewx/wbs 0.1.4 → 0.1.6

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/cli.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../cli.ts"],"names":[],"mappings":"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"}
@@ -1,54 +0,0 @@
1
- import type { WbsProject, Job, Execution, StatusResult, RunResult } from './types';
2
- export declare const DAEMON_INTERVAL_MS: number;
3
- export declare const ZOMBIE_TIMEOUT_MS: number;
4
- export declare function getJobSlug(job: Job): string;
5
- export declare function resolveJobId(idOrSlug: string): Job | null;
6
- export declare function generateDetailFile(wbsId: string): void;
7
- export declare const engine: {
8
- create(title: string, detailPath?: string | null, sourceBranch?: string, targetBranch?: string): string;
9
- list(): WbsProject[];
10
- getProject(wbsId: string): WbsProject | null;
11
- status(wbsId: string): StatusResult;
12
- delete(wbsId: string): void;
13
- getActiveProjects(): WbsProject[];
14
- setStatus(wbsId: string, status: string): void;
15
- updateDetailPath(wbsId: string, detailPath: string): void;
16
- addJob(wbsId: string, opts: {
17
- title: string;
18
- description?: string | null;
19
- agent: string;
20
- seq?: number;
21
- issue_number?: number | null;
22
- no_git?: boolean;
23
- }): string;
24
- getJob(jobId: string): Job | null;
25
- listJobs(wbsId: string): Job[];
26
- getJobsBySeq(wbsId: string, seq: number, status?: Job["status"]): Job[];
27
- getNextSeq(wbsId: string): number | null;
28
- getNextJob(wbsId: string): Job | null;
29
- updateJob(jobId: string, fields: Partial<Job>): void;
30
- createExecution(jobId: string, pid: number | null): string;
31
- getExecution(execId: string): Execution | null;
32
- listExecutions(jobId: string): Execution[];
33
- getRunningExecutions(): Execution[];
34
- updateExecution(execId: string, status: string, opts?: {
35
- exitCode?: number | null;
36
- error?: string;
37
- taskId?: string;
38
- }): void;
39
- killExecution(execId: string): boolean;
40
- runWorker(job: Job): Promise<RunResult>;
41
- run(wbsId: string, opts?: {
42
- parallel?: boolean;
43
- }): Promise<void>;
44
- daemonPidFile: string;
45
- daemonLogFile: string;
46
- isProcessAlive(pid: number): boolean;
47
- checkAndFixZombies(): {
48
- execId: string;
49
- jobId: string;
50
- pid: number | null;
51
- reason: string;
52
- }[];
53
- };
54
- //# sourceMappingURL=engine.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../src/engine.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,GAAG,EAAE,SAAS,EAAW,YAAY,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAU5F,eAAO,MAAM,kBAAkB,QAAgB,CAAC;AAChD,eAAO,MAAM,iBAAiB,QAAiB,CAAC;AAmHhD,wBAAgB,UAAU,CAAC,GAAG,EAAE,GAAG,GAAG,MAAM,CAG3C;AAGD,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,GAAG,GAAG,IAAI,CAiBzD;AAGD,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAsDtD;AAED,eAAO,MAAM,MAAM;kBAKH,MAAM,eAAc,MAAM,GAAG,IAAI,iBAAwB,MAAM,iBAAiB,MAAM,GAAG,MAAM;YAOrG,UAAU,EAAE;sBAIF,MAAM,GAAG,UAAU,GAAG,IAAI;kBAK9B,MAAM,GAAG,YAAY;kBAMrB,MAAM,GAAG,IAAI;yBAQN,UAAU,EAAE;qBAIhB,MAAM,UAAU,MAAM,GAAG,IAAI;4BAKtB,MAAM,cAAc,MAAM,GAAG,IAAI;kBAS3C,MAAM,QAAQ;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,MAAM,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,MAAM;kBAQlJ,MAAM,GAAG,GAAG,GAAG,IAAI;oBAKjB,MAAM,GAAG,GAAG,EAAE;wBAIV,MAAM,OAAO,MAAM,WAAW,GAAG,CAAC,QAAQ,CAAC,GAAG,GAAG,EAAE;sBAOrD,MAAM,GAAG,MAAM,GAAG,IAAI;sBAKtB,MAAM,GAAG,GAAG,GAAG,IAAI;qBAKpB,MAAM,UAAU,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI;2BA6B7B,MAAM,OAAO,MAAM,GAAG,IAAI,GAAG,MAAM;yBAQrC,MAAM,GAAG,SAAS,GAAG,IAAI;0BAKxB,MAAM,GAAG,SAAS,EAAE;4BAIlB,SAAS,EAAE;4BAIX,MAAM,UAAU,MAAM,SAAQ;QAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,GAAQ,IAAI;0BAUzG,MAAM,GAAG,OAAO;mBAwBjB,GAAG,GAAG,OAAO,CAAC,SAAS,CAAC;eAsH5B,MAAM,SAAQ;QAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;KAAE,GAAQ,OAAO,CAAC,IAAI,CAAC;;;wBAkDtD,MAAM,GAAG,OAAO;0BAId;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,EAAE;CAqB9F,CAAC"}
@@ -1,551 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
- Object.defineProperty(exports, "__esModule", { value: true });
36
- exports.engine = exports.ZOMBIE_TIMEOUT_MS = exports.DAEMON_INTERVAL_MS = void 0;
37
- exports.getJobSlug = getJobSlug;
38
- exports.resolveJobId = resolveJobId;
39
- exports.generateDetailFile = generateDetailFile;
40
- const child_process_1 = require("child_process");
41
- const path = __importStar(require("path"));
42
- const fs = __importStar(require("fs"));
43
- const yaml = __importStar(require("js-yaml"));
44
- const alasql = require('alasql');
45
- const CREWX_DIR = path.join(process.cwd(), '.crewx');
46
- const DATA_FILE = path.join(CREWX_DIR, '.wbs-data.json');
47
- const DAEMON_PID_FILE = path.join(CREWX_DIR, '.wbs-daemon.pid');
48
- const DAEMON_LOG_FILE = path.join(CREWX_DIR, '.wbs-daemon.log');
49
- exports.DAEMON_INTERVAL_MS = 5 * 60 * 1000;
50
- exports.ZOMBIE_TIMEOUT_MS = 30 * 60 * 1000;
51
- const runningProcesses = new Map();
52
- function getProjectRoot() {
53
- try {
54
- return (0, child_process_1.execSync)('git rev-parse --show-toplevel', { encoding: 'utf8' }).trim();
55
- }
56
- catch {
57
- return process.cwd();
58
- }
59
- }
60
- function getWbsConfig() {
61
- try {
62
- const configPath = process.env.CREWX_CONFIG ?? path.join(getProjectRoot(), 'crewx.yaml');
63
- const raw = fs.readFileSync(configPath, 'utf8');
64
- const config = yaml.load(raw);
65
- const settings = config?.settings;
66
- return settings?.wbs ?? {};
67
- }
68
- catch {
69
- return {};
70
- }
71
- }
72
- function getCurrentBranch() {
73
- try {
74
- return (0, child_process_1.execSync)('git branch --show-current', { encoding: 'utf8' }).trim();
75
- }
76
- catch {
77
- return 'main';
78
- }
79
- }
80
- function getSourceBranch() {
81
- const wbs = getWbsConfig();
82
- const legacyBase = wbs.base_branch;
83
- const setting = wbs.source_branch ?? legacyBase;
84
- if (!setting || setting === 'auto')
85
- return getCurrentBranch();
86
- return setting;
87
- }
88
- function getTargetBranch() {
89
- const wbs = getWbsConfig();
90
- const legacyBase = wbs.base_branch;
91
- const setting = wbs.target_branch ?? legacyBase;
92
- if (!setting || setting === 'auto')
93
- return getCurrentBranch();
94
- return setting;
95
- }
96
- function getMergeStrategy() {
97
- const wbs = getWbsConfig();
98
- if (wbs.merge_strategy === 'pr')
99
- return 'pr';
100
- return 'local';
101
- }
102
- function getNextId(table, prefix) {
103
- const prefixLen = prefix.length;
104
- const result = alasql(`SELECT MAX(CAST(SUBSTR(id, ${prefixLen + 1}) AS INT)) as max FROM ${table}`)[0];
105
- return `${prefix}${(result.max || 0) + 1}`;
106
- }
107
- function saveData() {
108
- if (!fs.existsSync(CREWX_DIR)) {
109
- fs.mkdirSync(CREWX_DIR, { recursive: true });
110
- }
111
- const data = {
112
- wbs: alasql('SELECT * FROM wbs'),
113
- jobs: alasql('SELECT * FROM jobs'),
114
- executions: alasql('SELECT * FROM executions'),
115
- };
116
- fs.writeFileSync(DATA_FILE, JSON.stringify(data, null, 2));
117
- }
118
- function initDB() {
119
- alasql('CREATE TABLE IF NOT EXISTS wbs (id STRING PRIMARY KEY, title STRING, detail_path STRING, status STRING, created_at STRING, source_branch STRING, target_branch STRING)');
120
- alasql('CREATE TABLE IF NOT EXISTS jobs (id STRING PRIMARY KEY, wbs_id STRING, title STRING, description STRING, agent STRING, status STRING, seq INT, created_at STRING, completed_at STRING, issue_number INT, no_git BOOLEAN)');
121
- alasql('CREATE TABLE IF NOT EXISTS executions (id STRING PRIMARY KEY, job_id STRING, pid INT, status STRING, started_at STRING, ended_at STRING, exit_code INT, error STRING, task_id STRING)');
122
- if (fs.existsSync(DATA_FILE)) {
123
- try {
124
- const data = JSON.parse(fs.readFileSync(DATA_FILE, 'utf8'));
125
- (data.wbs || []).forEach(w => {
126
- alasql('INSERT INTO wbs VALUES (?, ?, ?, ?, ?, ?, ?)', [w.id, w.title, w.detail_path ?? null, w.status, w.created_at, w.source_branch ?? null, w.target_branch ?? null]);
127
- });
128
- (data.jobs || []).forEach(j => {
129
- alasql('INSERT INTO jobs VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)', [j.id, j.wbs_id, j.title, j.description ?? null, j.agent, j.status, j.seq, j.created_at, j.completed_at, j.issue_number ?? null, j.no_git ?? false]);
130
- });
131
- (data.executions || []).forEach(e => {
132
- alasql('INSERT INTO executions VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)', [e.id, e.job_id, e.pid, e.status, e.started_at, e.ended_at, e.exit_code, e.error, e.task_id ?? null]);
133
- });
134
- }
135
- catch (e) {
136
- const err = e;
137
- console.error('Warning: Could not load persisted data:', err.message);
138
- }
139
- }
140
- }
141
- initDB();
142
- function getJobSlug(job) {
143
- const wbsNum = job.wbs_id.replace('wbs-', '');
144
- return `wbs-${wbsNum}-${job.seq}`;
145
- }
146
- function resolveJobId(idOrSlug) {
147
- if (idOrSlug.startsWith('job-')) {
148
- const rows = alasql('SELECT * FROM jobs WHERE id = ?', [idOrSlug]);
149
- return rows[0] ?? null;
150
- }
151
- const slugMatch = idOrSlug.match(/^wbs-(\d+)-(\d+)$/);
152
- if (slugMatch) {
153
- const wbsId = `wbs-${slugMatch[1]}`;
154
- const seq = parseInt(slugMatch[2], 10);
155
- const rows = alasql('SELECT * FROM jobs WHERE wbs_id = ? AND seq = ? ORDER BY created_at ASC', [wbsId, seq]);
156
- return rows[0] ?? null;
157
- }
158
- const rows = alasql('SELECT * FROM jobs WHERE id = ?', [idOrSlug]);
159
- return rows[0] ?? null;
160
- }
161
- function generateDetailFile(wbsId) {
162
- const project = alasql('SELECT * FROM wbs WHERE id = ?', [wbsId]);
163
- if (!project[0])
164
- return;
165
- const wbs = project[0];
166
- const jobs = alasql('SELECT * FROM jobs WHERE wbs_id = ? ORDER BY seq, created_at', [wbsId]);
167
- const lines = [];
168
- lines.push(`# ${wbs.title}`);
169
- lines.push('');
170
- lines.push(`> WBS ID: ${wbs.id} | Status: ${wbs.status} | Jobs: ${jobs.length}`);
171
- lines.push('');
172
- lines.push('## Jobs');
173
- lines.push('');
174
- if (jobs.length === 0) {
175
- lines.push('(아직 등록된 Job이 없습니다)');
176
- }
177
- else {
178
- for (const job of jobs) {
179
- const slug = getJobSlug(job);
180
- lines.push(`### ${slug}: ${job.title}`);
181
- lines.push('');
182
- lines.push(`- **Agent**: ${job.agent}`);
183
- lines.push(`- **Seq**: ${job.seq}`);
184
- lines.push(`- **Status**: ${job.status}`);
185
- lines.push(`- **ID**: ${job.id}`);
186
- if (job.description) {
187
- lines.push('');
188
- lines.push('**AC / Description:**');
189
- lines.push('');
190
- lines.push(job.description);
191
- }
192
- lines.push('');
193
- }
194
- }
195
- let detailPath = wbs.detail_path;
196
- if (!detailPath) {
197
- const detailsDir = path.join(process.cwd(), 'wbs-details');
198
- if (!fs.existsSync(detailsDir))
199
- fs.mkdirSync(detailsDir, { recursive: true });
200
- detailPath = `wbs-details/${wbsId}-detail.md`;
201
- alasql('UPDATE wbs SET detail_path = ? WHERE id = ?', [detailPath, wbsId]);
202
- saveData();
203
- }
204
- const fullPath = path.isAbsolute(detailPath)
205
- ? detailPath
206
- : path.join(process.cwd(), detailPath);
207
- const dir = path.dirname(fullPath);
208
- if (!fs.existsSync(dir))
209
- fs.mkdirSync(dir, { recursive: true });
210
- fs.writeFileSync(fullPath, lines.join('\n'));
211
- }
212
- exports.engine = {
213
- create(title, detailPath = null, sourceBranch, targetBranch) {
214
- const id = getNextId('wbs', 'wbs-');
215
- alasql('INSERT INTO wbs VALUES (?, ?, ?, ?, ?, ?, ?)', [id, title, detailPath, 'planning', new Date().toISOString(), sourceBranch ?? null, targetBranch ?? null]);
216
- saveData();
217
- return id;
218
- },
219
- list() {
220
- return alasql('SELECT * FROM wbs ORDER BY created_at DESC');
221
- },
222
- getProject(wbsId) {
223
- const rows = alasql('SELECT * FROM wbs WHERE id = ?', [wbsId]);
224
- return rows[0] ?? null;
225
- },
226
- status(wbsId) {
227
- const project = this.getProject(wbsId);
228
- const jobs = alasql('SELECT * FROM jobs WHERE wbs_id = ? ORDER BY seq', [wbsId]);
229
- return { project, jobs };
230
- },
231
- delete(wbsId) {
232
- const jobs = alasql('SELECT id FROM jobs WHERE wbs_id = ?', [wbsId]);
233
- jobs.forEach(j => alasql('DELETE FROM executions WHERE job_id = ?', [j.id]));
234
- alasql('DELETE FROM jobs WHERE wbs_id = ?', [wbsId]);
235
- alasql('DELETE FROM wbs WHERE id = ?', [wbsId]);
236
- saveData();
237
- },
238
- getActiveProjects() {
239
- return alasql("SELECT * FROM wbs WHERE status = 'running'");
240
- },
241
- setStatus(wbsId, status) {
242
- alasql('UPDATE wbs SET status = ? WHERE id = ?', [status, wbsId]);
243
- saveData();
244
- },
245
- updateDetailPath(wbsId, detailPath) {
246
- alasql('UPDATE wbs SET detail_path = ? WHERE id = ?', [detailPath, wbsId]);
247
- saveData();
248
- },
249
- addJob(wbsId, opts) {
250
- const id = getNextId('jobs', 'job-');
251
- alasql('INSERT INTO jobs VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)', [id, wbsId, opts.title, opts.description ?? null, opts.agent, 'pending', opts.seq ?? 0, new Date().toISOString(), null, opts.issue_number ?? null, opts.no_git ?? false]);
252
- saveData();
253
- return id;
254
- },
255
- getJob(jobId) {
256
- const rows = alasql('SELECT * FROM jobs WHERE id = ?', [jobId]);
257
- return rows[0] ?? null;
258
- },
259
- listJobs(wbsId) {
260
- return alasql('SELECT * FROM jobs WHERE wbs_id = ? ORDER BY seq', [wbsId]);
261
- },
262
- getJobsBySeq(wbsId, seq, status) {
263
- if (status) {
264
- return alasql('SELECT * FROM jobs WHERE wbs_id = ? AND seq = ? AND status = ? ORDER BY created_at ASC', [wbsId, seq, status]);
265
- }
266
- return alasql('SELECT * FROM jobs WHERE wbs_id = ? AND seq = ? ORDER BY created_at ASC', [wbsId, seq]);
267
- },
268
- getNextSeq(wbsId) {
269
- const rows = alasql('SELECT MIN(seq) as nextSeq FROM jobs WHERE wbs_id = ? AND status = ?', [wbsId, 'pending']);
270
- return rows[0]?.nextSeq ?? null;
271
- },
272
- getNextJob(wbsId) {
273
- const jobs = alasql('SELECT * FROM jobs WHERE wbs_id = ? AND status = ? ORDER BY seq', [wbsId, 'pending']);
274
- return jobs[0] ?? null;
275
- },
276
- updateJob(jobId, fields) {
277
- const updates = [];
278
- const values = [];
279
- if (fields.status !== undefined) {
280
- updates.push('status = ?');
281
- values.push(fields.status);
282
- if (fields.status === 'completed' || fields.status === 'failed') {
283
- updates.push('completed_at = ?');
284
- values.push(new Date().toISOString());
285
- }
286
- }
287
- if (fields.title !== undefined) {
288
- updates.push('title = ?');
289
- values.push(fields.title);
290
- }
291
- if (fields.agent !== undefined) {
292
- updates.push('agent = ?');
293
- values.push(fields.agent);
294
- }
295
- if (fields.seq !== undefined) {
296
- updates.push('seq = ?');
297
- values.push(fields.seq);
298
- }
299
- if (fields.description !== undefined) {
300
- updates.push('description = ?');
301
- values.push(fields.description);
302
- }
303
- if (fields.issue_number !== undefined) {
304
- updates.push('issue_number = ?');
305
- values.push(fields.issue_number);
306
- }
307
- if (fields.no_git !== undefined) {
308
- updates.push('no_git = ?');
309
- values.push(fields.no_git);
310
- }
311
- if (updates.length === 0)
312
- return;
313
- values.push(jobId);
314
- alasql(`UPDATE jobs SET ${updates.join(', ')} WHERE id = ?`, values);
315
- saveData();
316
- },
317
- createExecution(jobId, pid) {
318
- const id = getNextId('executions', 'exec-');
319
- alasql('INSERT INTO executions VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)', [id, jobId, pid, 'running', new Date().toISOString(), null, null, null, null]);
320
- saveData();
321
- return id;
322
- },
323
- getExecution(execId) {
324
- const rows = alasql('SELECT * FROM executions WHERE id = ?', [execId]);
325
- return rows[0] ?? null;
326
- },
327
- listExecutions(jobId) {
328
- return alasql('SELECT * FROM executions WHERE job_id = ? ORDER BY started_at DESC', [jobId]);
329
- },
330
- getRunningExecutions() {
331
- return alasql("SELECT * FROM executions WHERE status = 'running'");
332
- },
333
- updateExecution(execId, status, opts = {}) {
334
- if (status !== 'running') {
335
- alasql('UPDATE executions SET status = ?, ended_at = ?, exit_code = ?, error = ?, task_id = ? WHERE id = ?', [status, new Date().toISOString(), opts.exitCode ?? null, opts.error ?? null, opts.taskId ?? null, execId]);
336
- }
337
- else {
338
- alasql('UPDATE executions SET status = ? WHERE id = ?', [status, execId]);
339
- }
340
- saveData();
341
- },
342
- killExecution(execId) {
343
- const exec = this.getExecution(execId);
344
- if (!exec || exec.status !== 'running')
345
- return false;
346
- const proc = runningProcesses.get(execId);
347
- if (proc) {
348
- try {
349
- proc.kill('SIGTERM');
350
- }
351
- catch { }
352
- runningProcesses.delete(execId);
353
- }
354
- else if (exec.pid) {
355
- try {
356
- process.kill(exec.pid, 'SIGTERM');
357
- }
358
- catch { }
359
- }
360
- this.updateExecution(execId, 'killed');
361
- const job = this.getJob(exec.job_id);
362
- if (job && job.status === 'running') {
363
- this.updateJob(exec.job_id, { status: 'failed' });
364
- }
365
- return true;
366
- },
367
- async runWorker(job) {
368
- this.updateJob(job.id, { status: 'running' });
369
- console.log(`[WBS] Running job: ${job.title}`);
370
- console.log(`[WBS] Agent: ${job.agent}`);
371
- if (job.description) {
372
- console.log(`[WBS] Description: ${job.description.substring(0, 100)}${job.description.length > 100 ? '...' : ''}`);
373
- }
374
- const project = this.getProject(job.wbs_id);
375
- let detailContent = null;
376
- if (project?.detail_path) {
377
- const fullPath = path.isAbsolute(project.detail_path)
378
- ? project.detail_path
379
- : path.join(process.cwd(), project.detail_path);
380
- if (fs.existsSync(fullPath)) {
381
- try {
382
- detailContent = fs.readFileSync(fullPath, 'utf8');
383
- }
384
- catch { }
385
- }
386
- }
387
- console.log('[WBS] Timeout: 30 minutes');
388
- console.log('─'.repeat(50));
389
- let prompt = job.title;
390
- if (detailContent)
391
- prompt = `[프로젝트 상세]\n${detailContent}\n\n[작업]\n${prompt}`;
392
- if (job.description)
393
- prompt += `\n\n상세 지시:\n${job.description}`;
394
- if (job.issue_number) {
395
- prompt += `\n\n## 작업 지시\nGitHub Issue #${job.issue_number}를 처리하세요.\n\n**당신의 기존 개발 프로세스를 따르세요:**\n1. \`gh issue view ${job.issue_number}\`로 이슈 확인\n2. 브랜치 생성 및 작업\n3. PR 생성\n4. 이슈에 결과 코멘트\n\nWBS 추적 정보:\n- WBS: ${job.wbs_id}\n- Job: ${job.id}\n`;
396
- }
397
- else if (!job.no_git) {
398
- const branch = `feature/${getJobSlug(job)}`;
399
- const sourceBranch = project?.source_branch || getSourceBranch();
400
- const targetBranch = project?.target_branch || getTargetBranch();
401
- const mergeStrategy = getMergeStrategy();
402
- if (mergeStrategy === 'pr') {
403
- prompt += `\n\n## 작업 지시 (WBS 독립 작업)\n\n이 작업은 GitHub Issue 없이 WBS에서 직접 생성된 작업입니다.\n\n### Git 워크플로우\n\`\`\`bash\ngit worktree add worktree/${branch} -b ${branch} ${sourceBranch}\ncd worktree/${branch}\ngh pr create --base ${targetBranch} --title "[WBS-${job.wbs_id}] ${job.title}" --body "WBS Job: ${job.id}"\n\`\`\`\n\n### 주의사항\n- main/develop에서 직접 작업 금지\n- 반드시 worktree에서 작업\n- PR 생성 후 링크 출력\n\nWBS 추적 정보:\n- WBS: ${job.wbs_id}\n- Job: ${job.id}\n- 브랜치: ${branch}\n- Source 브랜치: ${sourceBranch}\n- Target 브랜치: ${targetBranch}\n`;
404
- }
405
- else {
406
- prompt += `\n\n## 작업 지시 (WBS 독립 작업)\n\n이 작업은 GitHub Issue 없이 WBS에서 직접 생성된 작업입니다.\n\n### Git 워크플로우 (로컬 머지)\n\`\`\`bash\ngit worktree add worktree/${branch} -b ${branch} ${sourceBranch}\ncd worktree/${branch}\n# ... 작업 후 커밋 ...\ngit checkout ${targetBranch}\ngit merge ${branch} --no-ff -m 'merge: [WBS-${job.wbs_id}] ${job.title}'\ngit worktree remove worktree/${branch}\ngit branch -d ${branch}\n\`\`\`\n\n### 주의사항\n- main/develop에서 직접 작업 금지\n- 반드시 worktree에서 작업 후 로컬 머지\n- 머지 완료 후 worktree 및 브랜치 정리\n\nWBS 추적 정보:\n- WBS: ${job.wbs_id}\n- Job: ${job.id}\n- 브랜치: ${branch}\n- Source 브랜치: ${sourceBranch}\n- Target 브랜치: ${targetBranch}\n`;
407
- }
408
- }
409
- else {
410
- prompt += `\n\n## 작업 지시 (WBS 독립 작업)\n\n이 작업은 GitHub Issue 없이 WBS에서 직접 생성된 작업입니다.\n\n### 주의사항\n- 이 작업은 \`--no-git\`로 생성되어 Git worktree/PR 템플릿을 생략합니다.\n- 작업 성격에 맞는 절차(예: 디자인/리서치/문서 작업)를 따르세요.\n\nWBS 추적 정보:\n- WBS: ${job.wbs_id}\n- Job: ${job.id}\n- no_git: true\n`;
411
- }
412
- return new Promise((resolve) => {
413
- const env = { ...process.env };
414
- delete env.CLAUDECODE;
415
- const child = (0, child_process_1.spawn)('crewx', ['x', `${job.agent} ${prompt}`], {
416
- stdio: ['inherit', 'pipe', 'inherit'],
417
- cwd: getProjectRoot(),
418
- env,
419
- });
420
- let stdoutBuffer = '';
421
- child.stdout?.on('data', (chunk) => {
422
- const text = chunk.toString();
423
- process.stdout.write(chunk);
424
- stdoutBuffer += text;
425
- });
426
- const execId = this.createExecution(job.id, child.pid ?? null);
427
- runningProcesses.set(execId, child);
428
- console.log(`[WBS] Execution ID: ${execId}`);
429
- console.log(`[WBS] PID: ${child.pid}`);
430
- const extractTaskId = () => {
431
- const match = stdoutBuffer.match(/Task ID:\s*(\S+)/);
432
- return match?.[1];
433
- };
434
- const timeout = setTimeout(() => {
435
- console.error('[WBS] Timeout reached, killing process...');
436
- child.kill('SIGTERM');
437
- this.updateExecution(execId, 'failed', { error: 'Timeout (30 minutes)', taskId: extractTaskId() });
438
- this.updateJob(job.id, { status: 'failed' });
439
- runningProcesses.delete(execId);
440
- resolve({ success: false, error: 'Timeout', execId });
441
- }, 30 * 60 * 1000);
442
- child.on('close', (code) => {
443
- clearTimeout(timeout);
444
- runningProcesses.delete(execId);
445
- const taskId = extractTaskId();
446
- console.log('─'.repeat(50));
447
- if (taskId) {
448
- console.log(`[WBS] Traced Task ID: ${taskId}`);
449
- }
450
- if (code === 0) {
451
- this.updateExecution(execId, 'completed', { exitCode: code, taskId });
452
- this.updateJob(job.id, { status: 'completed' });
453
- console.log(`[WBS] Job completed: ${job.title}`);
454
- resolve({ success: true, execId });
455
- }
456
- else {
457
- this.updateExecution(execId, 'failed', { exitCode: code ?? undefined, error: `Exit code: ${code}`, taskId });
458
- this.updateJob(job.id, { status: 'failed' });
459
- console.error(`[WBS] Job failed: ${job.title} (exit: ${code})`);
460
- resolve({ success: false, error: `Exit code: ${code}`, execId });
461
- }
462
- });
463
- child.on('error', (err) => {
464
- clearTimeout(timeout);
465
- runningProcesses.delete(execId);
466
- this.updateExecution(execId, 'failed', { error: err.message, taskId: extractTaskId() });
467
- this.updateJob(job.id, { status: 'failed' });
468
- console.error('─'.repeat(50));
469
- console.error(`[WBS] Job failed: ${job.title}`);
470
- console.error(`[WBS] Error: ${err.message}`);
471
- resolve({ success: false, error: err.message, execId });
472
- });
473
- });
474
- },
475
- async run(wbsId, opts = {}) {
476
- const project = this.getProject(wbsId);
477
- if (!project) {
478
- console.error(`[WBS] Project not found: ${wbsId}`);
479
- return;
480
- }
481
- const parallel = opts.parallel ?? false;
482
- console.log(`\n${'═'.repeat(50)}`);
483
- console.log(`[WBS] Starting project: ${project.title}`);
484
- console.log(`[WBS] Mode: ${parallel ? 'parallel-by-seq' : 'sequential'}`);
485
- console.log(`${'═'.repeat(50)}\n`);
486
- this.setStatus(wbsId, 'running');
487
- let completed = 0;
488
- let failed = 0;
489
- if (!parallel) {
490
- let job;
491
- while ((job = this.getNextJob(wbsId)) !== null) {
492
- const result = await this.runWorker(job);
493
- if (result.success)
494
- completed++;
495
- else
496
- failed++;
497
- }
498
- }
499
- else {
500
- let nextSeq;
501
- while ((nextSeq = this.getNextSeq(wbsId)) !== null) {
502
- const jobs = this.getJobsBySeq(wbsId, nextSeq, 'pending');
503
- if (jobs.length === 0)
504
- continue;
505
- console.log(`[WBS] Running seq group ${nextSeq} (${jobs.length} job(s)) in parallel`);
506
- const results = await Promise.all(jobs.map(job => this.runWorker(job)));
507
- for (const result of results) {
508
- if (result.success)
509
- completed++;
510
- else
511
- failed++;
512
- }
513
- }
514
- }
515
- this.setStatus(wbsId, failed === 0 ? 'completed' : 'partial');
516
- console.log(`\n${'═'.repeat(50)}`);
517
- console.log(`[WBS] Project ${failed === 0 ? 'completed' : 'partial'}: ${project.title}`);
518
- console.log(`[WBS] Completed: ${completed}, Failed: ${failed}`);
519
- console.log(`${'═'.repeat(50)}\n`);
520
- },
521
- daemonPidFile: DAEMON_PID_FILE,
522
- daemonLogFile: DAEMON_LOG_FILE,
523
- isProcessAlive(pid) {
524
- try {
525
- process.kill(pid, 0);
526
- return true;
527
- }
528
- catch {
529
- return false;
530
- }
531
- },
532
- checkAndFixZombies() {
533
- const running = this.getRunningExecutions();
534
- const zombies = [];
535
- const now = Date.now();
536
- for (const exec of running) {
537
- const elapsed = now - new Date(exec.started_at).getTime();
538
- const alive = exec.pid ? this.isProcessAlive(exec.pid) : false;
539
- if (!alive || elapsed > exports.ZOMBIE_TIMEOUT_MS) {
540
- const reason = !alive ? 'Process dead' : 'Timeout (30min)';
541
- alasql('UPDATE executions SET status = ?, ended_at = ?, error = ? WHERE id = ?', ['failed', new Date().toISOString(), `Zombie: ${reason}`, exec.id]);
542
- alasql('UPDATE jobs SET status = ?, completed_at = ? WHERE id = ?', ['failed', new Date().toISOString(), exec.job_id]);
543
- zombies.push({ execId: exec.id, jobId: exec.job_id, pid: exec.pid, reason });
544
- }
545
- }
546
- if (zombies.length > 0)
547
- saveData();
548
- return zombies;
549
- },
550
- };
551
- //# sourceMappingURL=engine.js.map