@crewx/wi 0.1.10-rc.9 → 0.1.10-rc.90

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/SKILL.md CHANGED
@@ -23,6 +23,69 @@ metadata:
23
23
 
24
24
  ## Commands
25
25
 
26
+ ### create-batch — Materialize a gated WI plan
27
+
28
+ Creates multiple draft WIs in one atomic batch. Use this after a plan approval gate, not while brainstorming.
29
+
30
+ Input is JSON from `--file` or stdin:
31
+
32
+ ```json
33
+ {
34
+ "board": "brd_release",
35
+ "source": "manual",
36
+ "items": [
37
+ {
38
+ "title": "Implement SDK contract",
39
+ "assignee": "core_dev",
40
+ "depends_on": [],
41
+ "body": "Full WI body markdown"
42
+ }
43
+ ]
44
+ }
45
+ ```
46
+
47
+ ```bash
48
+ npx crewx wi create-batch --file .crewx/plan.json
49
+ cat .crewx/plan.json | npx crewx wi create-batch
50
+ ```
51
+
52
+ Output:
53
+
54
+ ```json
55
+ { "created": [{ "wi_id": "WI-20260730-001", "title": "Implement SDK contract" }] }
56
+ ```
57
+
58
+ All created WIs start as `draft` and include `board`, `source` (default `manual`), and `depends_on` frontmatter. ID allocation is locked across processes.
59
+
60
+ ### board tick / digest — Goal-board automatic chain
61
+
62
+ `tick` advances at most one WI from a board batch, after conservative gates:
63
+
64
+ ```bash
65
+ npx crewx wi board tick brd_release --json
66
+ ```
67
+
68
+ Cron registration must use command mode and a literal board id. Do not interpolate a
69
+ board name, WI title, or other free text into the scheduled command string.
70
+
71
+ ```bash
72
+ npx crewx cron add "0 * * * *" "npx crewx wi board tick brd_release --json" --mode command --name "Goal board tick"
73
+ ```
74
+
75
+ Tick behavior:
76
+
77
+ - Uses `.crewx/boards/<brd-id>/state.json` under a board file lock.
78
+ - Checks subscription usage limits through the CrewX server; if unavailable, skips the tick and increments `skippedTicks`.
79
+ - Runs only one workflow at a time.
80
+ - Never auto-approves `approval` nodes. Human-gated runs are marked `human_wait`.
81
+ - Stops the chain after three consecutive failures and sends a notification.
82
+
83
+ `digest` sends the overnight summary notification and includes `metadata.boardId`:
84
+
85
+ ```bash
86
+ npx crewx wi board digest brd_release --json
87
+ ```
88
+
26
89
  ### draft — Create a draft
27
90
 
28
91
  Takes the user's intent and drafts a Work Instruction.
@@ -107,7 +170,7 @@ npx crewx skill wi issue WI-20260312-001
107
170
  {entire WI file content}
108
171
 
109
172
  Report in the specified format when done." \
110
- --thread="WI-{ID}" --result="WI-{ID}-impl"
173
+ --thread="WI-{ID}" --out=".crewx/result/WI-{ID}-impl.txt"
111
174
  ```
112
175
 
113
176
  5. Update WI status → `in-progress`
@@ -154,7 +217,7 @@ $CREWX_CLI q "@{consultant} Review this Work Instruction.
154
217
  Check feasibility, missing items, and risks.
155
218
 
156
219
  {entire WI file content}" \
157
- --thread="WI-{ID}-review" --result="WI-{ID}-review"
220
+ --thread="WI-{ID}-review" --out=".crewx/result/WI-{ID}-review.txt"
158
221
  ```
159
222
 
160
223
  ---
package/dist/cli.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../cli.ts"],"names":[],"mappings":";AAqDA,wBAAsB,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA0B9D"}
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../cli.ts"],"names":[],"mappings":";AAqvBA,wBAAsB,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAmD9D"}
package/dist/cli.js CHANGED
@@ -37,6 +37,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
37
37
  exports.main = main;
38
38
  const fs = __importStar(require("fs"));
39
39
  const path = __importStar(require("path"));
40
+ const sdk_1 = require("@crewx/sdk");
41
+ const repository_1 = require("@crewx/sdk/repository");
42
+ const run_manager_1 = require("@crewx/workflow/run-manager");
40
43
  let PKG_VERSION = 'unknown';
41
44
  try {
42
45
  const _pkgPath = fs.existsSync(path.join(__dirname, 'package.json'))
@@ -73,6 +76,9 @@ Usage:
73
76
 
74
77
  Commands:
75
78
  wi usage Show detailed guide (SKILL.md)
79
+ wi create-batch [--file <path>] Create draft WIs from batch JSON
80
+ wi board tick <brd-id> [--json] Advance one approved board WI if gates pass
81
+ wi board digest <brd-id> [--json] Send and print the overnight board summary
76
82
  wi draft <description> Draft a new Work Instruction (planned)
77
83
  wi issue <WI-ID> Issue WI to assigned agent (planned)
78
84
  wi list [--status=...] List Work Instructions (planned)
@@ -82,21 +88,631 @@ Options:
82
88
  --version Show version
83
89
  --help, -h Show this help
84
90
 
85
- Note:
86
- Phase 1 — only 'usage' is available. Other subcommands are planned.
87
-
88
91
  Template: docs/wi/WI-TEMPLATE.md
89
92
  For detailed usage guide: wi usage
90
93
  `);
91
94
  }
95
+ const BOOLEAN_FLAGS = new Set(['help', 'version', 'json']);
96
+ function parseArgs(args) {
97
+ const result = { positional: [], options: {} };
98
+ for (let i = 0; i < args.length; i++) {
99
+ const arg = args[i];
100
+ if (arg === '-h') {
101
+ result.options['help'] = true;
102
+ }
103
+ else if (arg.startsWith('--')) {
104
+ const eqIdx = arg.indexOf('=');
105
+ if (eqIdx !== -1) {
106
+ result.options[arg.slice(2, eqIdx)] = arg.slice(eqIdx + 1);
107
+ }
108
+ else {
109
+ const key = arg.slice(2);
110
+ if (BOOLEAN_FLAGS.has(key)) {
111
+ result.options[key] = true;
112
+ }
113
+ else {
114
+ const next = args[i + 1];
115
+ if (next !== undefined && !next.startsWith('--')) {
116
+ result.options[key] = next;
117
+ i++;
118
+ }
119
+ else {
120
+ result.options[key] = true;
121
+ }
122
+ }
123
+ }
124
+ }
125
+ else {
126
+ result.positional.push(arg);
127
+ }
128
+ }
129
+ return result;
130
+ }
131
+ async function readStdin() {
132
+ const chunks = [];
133
+ for await (const chunk of process.stdin)
134
+ chunks.push(chunk);
135
+ return Buffer.concat(chunks).toString('utf-8');
136
+ }
137
+ function workspaceRoot() {
138
+ return path.resolve(process.env['CREWX_WORKSPACE'] || process.cwd());
139
+ }
140
+ function parseJsonObject(raw) {
141
+ const parsed = JSON.parse(raw);
142
+ if (!parsed || typeof parsed !== 'object' || Array.isArray(parsed)) {
143
+ throw new Error('Input must be a JSON object');
144
+ }
145
+ return parsed;
146
+ }
147
+ async function handleCreateBatch(options) {
148
+ const fileOpt = options['file'];
149
+ const raw = typeof fileOpt === 'string'
150
+ ? fs.readFileSync(path.resolve(fileOpt), 'utf-8')
151
+ : await readStdin();
152
+ const input = parseJsonObject(raw);
153
+ const result = await (0, sdk_1.createWorkInstructionBatch)(workspaceRoot(), input);
154
+ process.stdout.write(JSON.stringify({
155
+ created: result.created.map((created) => ({
156
+ wi_id: created.summary.wi_id,
157
+ title: created.summary.title,
158
+ })),
159
+ }) + '\n');
160
+ }
161
+ function defaultBoardState() {
162
+ return {
163
+ batch: { wiIds: [], approvedAt: null },
164
+ chain: {
165
+ state: 'idle',
166
+ currentWiId: null,
167
+ nextWiId: null,
168
+ nextTickAt: null,
169
+ pauseReason: null,
170
+ resumeAt: null,
171
+ consecutiveFailures: 0,
172
+ queue: [],
173
+ budget: { usedPercent: 0, capPercent: 70, resetsAt: null },
174
+ sessionSummary: { completed: 0, needsFeedback: 0, failed: 0, skippedTicks: 0 },
175
+ },
176
+ updatedAt: new Date().toISOString(),
177
+ };
178
+ }
179
+ function mergeBoardState(raw) {
180
+ const base = defaultBoardState();
181
+ if (!raw || typeof raw !== 'object')
182
+ return base;
183
+ const input = raw;
184
+ return {
185
+ ...base,
186
+ ...input,
187
+ batch: { ...base.batch, ...(input.batch ?? {}) },
188
+ chain: {
189
+ ...base.chain,
190
+ ...(input.chain ?? {}),
191
+ budget: { ...base.chain.budget, ...(input.chain?.budget ?? {}) },
192
+ sessionSummary: { ...base.chain.sessionSummary, ...(input.chain?.sessionSummary ?? {}) },
193
+ queue: Array.isArray(input.chain?.queue) ? input.chain.queue : base.chain.queue,
194
+ },
195
+ };
196
+ }
197
+ function boardStatePath(boardId) {
198
+ return path.join(workspaceRoot(), '.crewx', 'boards', boardId, 'state.json');
199
+ }
200
+ function validateBoardId(boardId) {
201
+ if (!sdk_1.WI_BOARD_ID_PATTERN.test(boardId)) {
202
+ throw new Error('board id must match ^[a-zA-Z0-9_-]{1,64}$');
203
+ }
204
+ }
205
+ function readBoardState(boardId) {
206
+ const statePath = boardStatePath(boardId);
207
+ if (!fs.existsSync(statePath))
208
+ return defaultBoardState();
209
+ return mergeBoardState(JSON.parse(fs.readFileSync(statePath, 'utf-8')));
210
+ }
211
+ function writeBoardState(boardId, state) {
212
+ state.updatedAt = new Date().toISOString();
213
+ const statePath = boardStatePath(boardId);
214
+ fs.mkdirSync(path.dirname(statePath), { recursive: true });
215
+ fs.writeFileSync(statePath, JSON.stringify(state, null, 2) + '\n', 'utf-8');
216
+ }
217
+ function splitFrontmatter(raw) {
218
+ if (!raw.startsWith('---'))
219
+ return null;
220
+ const end = raw.indexOf('\n---', 3);
221
+ if (end === -1)
222
+ return null;
223
+ const bodyStart = raw.indexOf('\n', end + 4);
224
+ return {
225
+ frontmatter: raw.slice(3, end).trim(),
226
+ body: bodyStart === -1 ? '' : raw.slice(bodyStart + 1).trim(),
227
+ };
228
+ }
229
+ function parseScalar(raw) {
230
+ const trimmed = raw.trim();
231
+ if ((trimmed.startsWith('"') && trimmed.endsWith('"')) ||
232
+ (trimmed.startsWith("'") && trimmed.endsWith("'"))) {
233
+ try {
234
+ return JSON.parse(trimmed);
235
+ }
236
+ catch {
237
+ return trimmed.slice(1, -1);
238
+ }
239
+ }
240
+ return trimmed;
241
+ }
242
+ function parseWiFrontmatter(frontmatter) {
243
+ const out = {};
244
+ const lines = frontmatter.split(/\r?\n/);
245
+ for (let i = 0; i < lines.length; i++) {
246
+ const line = lines[i];
247
+ const match = line.match(/^([A-Za-z_][\w-]*):\s*(.*)$/);
248
+ if (!match)
249
+ continue;
250
+ const key = match[1];
251
+ const value = match[2];
252
+ if (value === '') {
253
+ const arr = [];
254
+ while (i + 1 < lines.length && /^\s+-\s+/.test(lines[i + 1])) {
255
+ i++;
256
+ arr.push(parseScalar(lines[i].replace(/^\s+-\s+/, '')));
257
+ }
258
+ out[key] = arr;
259
+ }
260
+ else if (value === '[]') {
261
+ out[key] = [];
262
+ }
263
+ else {
264
+ out[key] = parseScalar(value);
265
+ }
266
+ }
267
+ return out;
268
+ }
269
+ function toArray(value) {
270
+ if (Array.isArray(value))
271
+ return value.map(String);
272
+ if (value === undefined || value === null || value === '')
273
+ return [];
274
+ return [String(value)];
275
+ }
276
+ function loadWiDocs() {
277
+ const dir = path.join(workspaceRoot(), 'docs', 'wi');
278
+ if (!fs.existsSync(dir))
279
+ return [];
280
+ const entries = fs.readdirSync(dir).filter((file) => file.endsWith('.md') && /^WI-\d{8}-\d+/.test(file));
281
+ const out = [];
282
+ for (const file of entries) {
283
+ const fullPath = path.join(dir, file);
284
+ const stat = fs.lstatSync(fullPath);
285
+ if (!stat.isFile())
286
+ continue;
287
+ const raw = fs.readFileSync(fullPath, 'utf-8');
288
+ const split = splitFrontmatter(raw);
289
+ if (!split)
290
+ continue;
291
+ const fm = parseWiFrontmatter(split.frontmatter);
292
+ const wiId = typeof fm['wi_id'] === 'string' ? fm['wi_id'] : '';
293
+ const status = typeof fm['status'] === 'string' ? fm['status'] : 'draft';
294
+ if (!/^WI-\d{8}-\d+$/.test(wiId))
295
+ continue;
296
+ if (!['draft', 'approved', 'in-progress', 'done', 'cancelled'].includes(status))
297
+ continue;
298
+ out.push({
299
+ wi_id: wiId,
300
+ title: typeof fm['title'] === 'string' ? fm['title'] : '',
301
+ status: status,
302
+ depends_on: toArray(fm['depends_on']),
303
+ assignee: typeof fm['assignee'] === 'string' ? fm['assignee'] : undefined,
304
+ board: typeof fm['board'] === 'string' ? fm['board'] : undefined,
305
+ source: typeof fm['source'] === 'string' ? fm['source'] : 'manual',
306
+ path: path.join('docs', 'wi', file),
307
+ body: split.body,
308
+ });
309
+ }
310
+ return out;
311
+ }
312
+ function workflowPath() {
313
+ return path.join(workspaceRoot(), 'workflows', 'wi-default-flow.yaml');
314
+ }
315
+ function isTerminalRun(run) {
316
+ return run.status === 'completed' || run.status === 'failed' || run.status === 'cancelled';
317
+ }
318
+ function loadRunsForBatch(batch) {
319
+ const runsDir = path.join(workspaceRoot(), '.crewx', 'workflow-runs');
320
+ if (!fs.existsSync(runsDir))
321
+ return [];
322
+ const batchSet = new Set(batch);
323
+ return fs.readdirSync(runsDir)
324
+ .filter((file) => file.endsWith('.json'))
325
+ .flatMap((file) => {
326
+ try {
327
+ const run = JSON.parse(fs.readFileSync(path.join(runsDir, file), 'utf-8'));
328
+ const wiId = typeof run.initial_state?.['wi_id'] === 'string'
329
+ ? run.initial_state['wi_id']
330
+ : typeof run.state?.['wi_id'] === 'string'
331
+ ? run.state['wi_id']
332
+ : '';
333
+ return batchSet.has(wiId) ? [run] : [];
334
+ }
335
+ catch {
336
+ return [];
337
+ }
338
+ });
339
+ }
340
+ function isApprovalWait(run, manager) {
341
+ if (!run.current_node || isTerminalRun(run))
342
+ return false;
343
+ return manager.getNodeType(run.workflow_file, run.workflow_id, run.current_node) === 'approval';
344
+ }
345
+ function nightWindow() {
346
+ const startRaw = process.env['CREWX_WI_NIGHT_START'];
347
+ const endRaw = process.env['CREWX_WI_NIGHT_END'];
348
+ if (startRaw === undefined || endRaw === undefined)
349
+ return null;
350
+ const start = Number(startRaw);
351
+ const end = Number(endRaw);
352
+ if (!Number.isInteger(start) || !Number.isInteger(end))
353
+ return null;
354
+ if (start < 0 || start > 23 || end < 0 || end > 23)
355
+ return null;
356
+ return { start, end };
357
+ }
358
+ function isWithinNightWindow(window, now) {
359
+ if (window.start === window.end)
360
+ return true;
361
+ const hour = now.getHours();
362
+ return window.start < window.end
363
+ ? hour >= window.start && hour < window.end
364
+ : hour >= window.start || hour < window.end;
365
+ }
366
+ function nextNightWindowOpen(window, from) {
367
+ const next = new Date(from);
368
+ next.setHours(window.start, 0, 0, 0);
369
+ if (next.getTime() <= from.getTime())
370
+ next.setDate(next.getDate() + 1);
371
+ return next;
372
+ }
373
+ function resolveTimeGate(state, now) {
374
+ if (state.chain.nextTickAt) {
375
+ const nextTick = Date.parse(state.chain.nextTickAt);
376
+ if (!Number.isNaN(nextTick) && nextTick > now.getTime()) {
377
+ return { paused: true, resumeAt: state.chain.nextTickAt };
378
+ }
379
+ }
380
+ const window = nightWindow();
381
+ if (window && !isWithinNightWindow(window, now)) {
382
+ return { paused: true, resumeAt: nextNightWindowOpen(window, now).toISOString() };
383
+ }
384
+ return { paused: false };
385
+ }
386
+ function updateQueue(state, wis, blocked = new Map()) {
387
+ state.chain.queue = state.batch.wiIds.map((wiId, index) => {
388
+ const exists = wis.some((wi) => wi.wi_id === wiId);
389
+ return {
390
+ wiId,
391
+ queuePosition: index + 1,
392
+ blockReason: blocked.get(wiId) ?? (exists ? null : 'missing'),
393
+ };
394
+ });
395
+ }
396
+ function collectLimitWindows(value) {
397
+ if (!value || typeof value !== 'object')
398
+ return [];
399
+ const out = [];
400
+ for (const item of Object.values(value)) {
401
+ if (!item || typeof item !== 'object')
402
+ continue;
403
+ const record = item;
404
+ if (typeof record['usedPercent'] === 'number') {
405
+ out.push({
406
+ usedPercent: record['usedPercent'],
407
+ resetsAt: typeof record['resetsAt'] === 'string' ? record['resetsAt'] : null,
408
+ });
409
+ }
410
+ else {
411
+ out.push(...collectLimitWindows(record));
412
+ }
413
+ }
414
+ return out;
415
+ }
416
+ function fallbackWorkspaceSlug(workspacePath) {
417
+ const base = path.basename(workspacePath)
418
+ .toLowerCase()
419
+ .replace(/[^a-z0-9-]/g, '-')
420
+ .replace(/-{2,}/g, '-')
421
+ .replace(/^-+|-+$/g, '');
422
+ return base || 'default';
423
+ }
424
+ function resolveWorkspaceSlug() {
425
+ const wsPath = workspaceRoot();
426
+ try {
427
+ const repo = new repository_1.WorkspaceRepository();
428
+ const id = (0, sdk_1.hashWorkspaceId)(wsPath);
429
+ const existing = repo.findById(id);
430
+ if (existing?.slug)
431
+ return existing.slug;
432
+ const registered = repo.registerWorkspace(wsPath);
433
+ if (registered?.slug)
434
+ return registered.slug;
435
+ }
436
+ catch {
437
+ }
438
+ return fallbackWorkspaceSlug(wsPath);
439
+ }
440
+ async function checkBudget(capPercent) {
441
+ const endpoint = process.env['CREWX_ENDPOINT'] ?? 'http://localhost:8150';
442
+ const slug = resolveWorkspaceSlug();
443
+ let response;
444
+ try {
445
+ response = await fetch(`${endpoint}/api/v1/ws/${encodeURIComponent(slug)}/usage/limits`, {
446
+ signal: AbortSignal.timeout(5000),
447
+ });
448
+ }
449
+ catch (err) {
450
+ return { ok: false, usedPercent: 0, resetsAt: null, reason: `usage limits unavailable: ${err instanceof Error ? err.message : String(err)}` };
451
+ }
452
+ if (!response.ok) {
453
+ return { ok: false, usedPercent: 0, resetsAt: null, reason: `usage limits unavailable: HTTP ${response.status}` };
454
+ }
455
+ const payload = await response.json().catch(() => null);
456
+ const windows = collectLimitWindows(payload?.data);
457
+ if (windows.length === 0) {
458
+ return { ok: false, usedPercent: 0, resetsAt: null, reason: 'usage limits unavailable: empty response' };
459
+ }
460
+ const maxWindow = windows.reduce((max, item) => item.usedPercent > max.usedPercent ? item : max, windows[0]);
461
+ return {
462
+ ok: maxWindow.usedPercent < capPercent,
463
+ usedPercent: maxWindow.usedPercent,
464
+ resetsAt: maxWindow.resetsAt,
465
+ ...(maxWindow.usedPercent >= capPercent ? { reason: `budget cap reached (${maxWindow.usedPercent}% >= ${capPercent}%)` } : {}),
466
+ };
467
+ }
468
+ async function sendNotification(title, opts) {
469
+ const workspace = process.env['CREWX_WORKSPACE'] || workspaceRoot();
470
+ const endpoint = process.env['CREWX_ENDPOINT'] ?? 'http://localhost:8150';
471
+ const headers = { 'Content-Type': 'application/json' };
472
+ const token = process.env['CREWX_API_TOKEN'];
473
+ if (token)
474
+ headers['Authorization'] = `Bearer ${token}`;
475
+ try {
476
+ const response = await fetch(`${endpoint}/api/v1/notifications`, {
477
+ method: 'POST',
478
+ headers,
479
+ body: JSON.stringify({
480
+ workspace,
481
+ title,
482
+ level: opts.level ?? 'info',
483
+ body: opts.body,
484
+ source: 'system',
485
+ metadata: opts.metadata,
486
+ }),
487
+ signal: AbortSignal.timeout(5000),
488
+ });
489
+ if (!response.ok) {
490
+ const text = await response.text().catch(() => '');
491
+ console.error(`[wi] notification failed: HTTP ${response.status}${text ? ` ${text}` : ''}`);
492
+ }
493
+ }
494
+ catch (err) {
495
+ console.error(`[wi] notification failed: ${err instanceof Error ? err.message : String(err)}`);
496
+ }
497
+ }
498
+ async function handleBoardTick(boardId, options) {
499
+ validateBoardId(boardId);
500
+ const lock = new run_manager_1.FileLock(boardStatePath(boardId));
501
+ try {
502
+ lock.acquire(100);
503
+ }
504
+ catch {
505
+ const result = { skipped: true, reason: 'lock_contended' };
506
+ process.stdout.write(JSON.stringify(result) + '\n');
507
+ return;
508
+ }
509
+ const manager = new run_manager_1.RunManager('.crewx/workflow-runs', workspaceRoot());
510
+ let pickedRun = null;
511
+ try {
512
+ const state = readBoardState(boardId);
513
+ const now = new Date();
514
+ const timeGate = resolveTimeGate(state, now);
515
+ if (timeGate.paused) {
516
+ state.chain.pauseReason = 'time_gate';
517
+ state.chain.nextTickAt = timeGate.resumeAt;
518
+ state.chain.resumeAt = timeGate.resumeAt;
519
+ state.chain.sessionSummary.skippedTicks += 1;
520
+ writeBoardState(boardId, state);
521
+ process.stdout.write(JSON.stringify({ skipped: true, reason: 'time_gate', state }) + '\n');
522
+ return;
523
+ }
524
+ const budget = await checkBudget(state.chain.budget.capPercent);
525
+ state.chain.budget.usedPercent = budget.usedPercent;
526
+ state.chain.budget.resetsAt = budget.resetsAt;
527
+ if (!budget.ok) {
528
+ state.chain.state = 'limit_wait';
529
+ state.chain.pauseReason = budget.reason ?? 'budget_limit';
530
+ state.chain.resumeAt = budget.resetsAt;
531
+ state.chain.sessionSummary.skippedTicks += 1;
532
+ writeBoardState(boardId, state);
533
+ process.stdout.write(JSON.stringify({ skipped: true, reason: state.chain.pauseReason, state }) + '\n');
534
+ return;
535
+ }
536
+ const wis = loadWiDocs().filter((wi) => state.batch.wiIds.includes(wi.wi_id));
537
+ updateQueue(state, wis);
538
+ const activeRuns = loadRunsForBatch(state.batch.wiIds).filter((run) => !isTerminalRun(run));
539
+ const nonApprovalRun = activeRuns.find((run) => !isApprovalWait(run, manager));
540
+ if (nonApprovalRun) {
541
+ state.chain.state = 'running';
542
+ state.chain.currentWiId = String(nonApprovalRun.state?.['wi_id'] ?? nonApprovalRun.initial_state?.['wi_id'] ?? '');
543
+ state.chain.pauseReason = 'run_in_progress';
544
+ writeBoardState(boardId, state);
545
+ process.stdout.write(JSON.stringify({ skipped: true, reason: 'run_in_progress', state }) + '\n');
546
+ return;
547
+ }
548
+ const humanWaitIds = new Set(activeRuns.filter((run) => isApprovalWait(run, manager)).map((run) => String(run.state?.['wi_id'] ?? run.initial_state?.['wi_id'] ?? '')));
549
+ const selection = (0, sdk_1.selectNextWi)(wis, { batch: state.batch.wiIds, exclude: [...humanWaitIds] });
550
+ if ('blocked' in selection) {
551
+ state.chain.state = 'failed_stop';
552
+ state.chain.pauseReason = selection.reason;
553
+ updateQueue(state, wis);
554
+ writeBoardState(boardId, state);
555
+ await sendNotification('Board auto-run stopped', {
556
+ level: 'warning',
557
+ body: selection.reason,
558
+ metadata: { boardId },
559
+ });
560
+ process.stdout.write(JSON.stringify({ blocked: true, reason: selection.reason, state }) + '\n');
561
+ return;
562
+ }
563
+ if ('cycle' in selection) {
564
+ state.chain.state = 'failed_stop';
565
+ state.chain.pauseReason = `cycle: ${selection.cycle.join(', ')}`;
566
+ updateQueue(state, wis);
567
+ writeBoardState(boardId, state);
568
+ await sendNotification('Board auto-run stopped', {
569
+ level: 'warning',
570
+ body: state.chain.pauseReason,
571
+ metadata: { boardId },
572
+ });
573
+ process.stdout.write(JSON.stringify({ cycle: selection.cycle, state }) + '\n');
574
+ return;
575
+ }
576
+ if ('done' in selection) {
577
+ state.chain.state = humanWaitIds.size > 0 ? 'human_wait' : 'done';
578
+ state.chain.currentWiId = null;
579
+ state.chain.nextWiId = null;
580
+ state.chain.pauseReason = humanWaitIds.size > 0 ? 'approval_wait' : null;
581
+ updateQueue(state, wis, new Map([...humanWaitIds].map((wiId) => [wiId, 'approval_wait'])));
582
+ writeBoardState(boardId, state);
583
+ process.stdout.write(JSON.stringify({ done: humanWaitIds.size === 0, state }) + '\n');
584
+ return;
585
+ }
586
+ const picked = wis.find((wi) => wi.wi_id === selection.pick);
587
+ if (!picked)
588
+ throw new Error(`Selected WI not found: ${selection.pick}`);
589
+ const run = manager.start(workflowPath(), 'wi-default-flow', {
590
+ wi_id: picked.wi_id,
591
+ wi_content: picked.body,
592
+ assignee: picked.assignee ?? 'crewx',
593
+ board_id: boardId,
594
+ });
595
+ state.chain.state = 'running';
596
+ state.chain.currentWiId = picked.wi_id;
597
+ state.chain.nextWiId = null;
598
+ state.chain.pauseReason = null;
599
+ writeBoardState(boardId, state);
600
+ pickedRun = { wiId: picked.wi_id, runId: run.id };
601
+ }
602
+ catch (err) {
603
+ const state = readBoardState(boardId);
604
+ state.chain.consecutiveFailures += 1;
605
+ state.chain.sessionSummary.failed += 1;
606
+ state.chain.pauseReason = err instanceof Error ? err.message : String(err);
607
+ state.chain.state = state.chain.consecutiveFailures >= 3 ? 'failed_stop' : 'idle';
608
+ writeBoardState(boardId, state);
609
+ if (state.chain.state === 'failed_stop') {
610
+ await sendNotification('Board auto-run stopped', {
611
+ level: 'warning',
612
+ body: state.chain.pauseReason ?? 'run_failed',
613
+ metadata: { boardId },
614
+ });
615
+ }
616
+ throw err;
617
+ }
618
+ finally {
619
+ lock.release();
620
+ }
621
+ if (!pickedRun)
622
+ return;
623
+ let auto;
624
+ try {
625
+ auto = await manager.runAuto(pickedRun.runId);
626
+ }
627
+ catch (err) {
628
+ auto = {
629
+ run: manager.loadRun(pickedRun.runId),
630
+ outcome: 'failed',
631
+ reason: err instanceof Error ? err.message : String(err),
632
+ executed: [],
633
+ };
634
+ }
635
+ lock.acquire();
636
+ try {
637
+ const state = readBoardState(boardId);
638
+ const wis = loadWiDocs().filter((wi) => state.batch.wiIds.includes(wi.wi_id));
639
+ if (auto.outcome === 'completed') {
640
+ state.chain.state = 'idle';
641
+ state.chain.currentWiId = null;
642
+ state.chain.consecutiveFailures = 0;
643
+ state.chain.sessionSummary.completed += 1;
644
+ }
645
+ else if (auto.outcome === 'paused') {
646
+ state.chain.state = auto.reason?.includes('approval node') ? 'human_wait' : 'idle';
647
+ state.chain.pauseReason = auto.reason ?? null;
648
+ }
649
+ else if (auto.outcome === 'failed') {
650
+ state.chain.consecutiveFailures += 1;
651
+ state.chain.sessionSummary.failed += 1;
652
+ state.chain.state = state.chain.consecutiveFailures >= 3 ? 'failed_stop' : 'idle';
653
+ state.chain.pauseReason = auto.reason ?? 'run_failed';
654
+ if (state.chain.state === 'failed_stop') {
655
+ await sendNotification('Board auto-run stopped', {
656
+ level: 'warning',
657
+ body: state.chain.pauseReason,
658
+ metadata: { boardId },
659
+ });
660
+ }
661
+ }
662
+ updateQueue(state, wis);
663
+ writeBoardState(boardId, state);
664
+ process.stdout.write(JSON.stringify({ started: pickedRun.wiId, runId: pickedRun.runId, outcome: auto.outcome, state }) + '\n');
665
+ }
666
+ catch (err) {
667
+ const state = readBoardState(boardId);
668
+ state.chain.consecutiveFailures += 1;
669
+ state.chain.sessionSummary.failed += 1;
670
+ state.chain.pauseReason = err instanceof Error ? err.message : String(err);
671
+ state.chain.state = state.chain.consecutiveFailures >= 3 ? 'failed_stop' : 'idle';
672
+ writeBoardState(boardId, state);
673
+ if (state.chain.state === 'failed_stop') {
674
+ await sendNotification('Board auto-run stopped', {
675
+ level: 'warning',
676
+ body: state.chain.pauseReason ?? 'run_failed',
677
+ metadata: { boardId },
678
+ });
679
+ }
680
+ throw err;
681
+ }
682
+ finally {
683
+ lock.release();
684
+ }
685
+ }
686
+ async function handleBoardDigest(boardId, options) {
687
+ validateBoardId(boardId);
688
+ const lock = new run_manager_1.FileLock(boardStatePath(boardId));
689
+ lock.acquire();
690
+ try {
691
+ const state = readBoardState(boardId);
692
+ const manager = new run_manager_1.RunManager('.crewx/workflow-runs', workspaceRoot());
693
+ const activeRuns = loadRunsForBatch(state.batch.wiIds).filter((run) => !isTerminalRun(run));
694
+ state.chain.sessionSummary.needsFeedback = activeRuns.filter((run) => isApprovalWait(run, manager)).length;
695
+ writeBoardState(boardId, state);
696
+ await sendNotification('Overnight auto-run summary', {
697
+ level: 'info',
698
+ body: JSON.stringify(state.chain.sessionSummary),
699
+ metadata: { boardId },
700
+ });
701
+ process.stdout.write(JSON.stringify({ boardId, sessionSummary: state.chain.sessionSummary, metadata: { boardId } }) + '\n');
702
+ }
703
+ finally {
704
+ lock.release();
705
+ }
706
+ }
92
707
  async function main(inputArgs) {
93
708
  const args = inputArgs ?? process.argv.slice(2);
94
- const command = args[0];
95
- if (args.includes('--version')) {
709
+ const { positional, options } = parseArgs(args);
710
+ const command = positional[0];
711
+ if (options['version']) {
96
712
  console.log(PKG_VERSION);
97
713
  return;
98
714
  }
99
- if (args.includes('--help') || args.includes('-h')) {
715
+ if (options['help'] || command === 'help') {
100
716
  printUsage();
101
717
  return;
102
718
  }
@@ -104,14 +720,39 @@ async function main(inputArgs) {
104
720
  showDetailedUsage();
105
721
  return;
106
722
  }
723
+ try {
724
+ if (command === 'create-batch') {
725
+ await handleCreateBatch(options);
726
+ return;
727
+ }
728
+ if (command === 'board') {
729
+ const subcommand = positional[1];
730
+ const boardId = positional[2];
731
+ if (!boardId || (subcommand !== 'tick' && subcommand !== 'digest')) {
732
+ throw new Error('Usage: wi board <tick|digest> <brd-id>');
733
+ }
734
+ if (subcommand === 'tick') {
735
+ await handleBoardTick(boardId, options);
736
+ }
737
+ else {
738
+ await handleBoardDigest(boardId, options);
739
+ }
740
+ return;
741
+ }
742
+ }
743
+ catch (err) {
744
+ if (err instanceof sdk_1.WiCreateError)
745
+ throw new Error(err.message);
746
+ throw err;
747
+ }
107
748
  if (command === 'draft' || command === 'issue' || command === 'list' || command === 'review') {
108
- console.log(`\n '${command}' is not yet implemented (Phase 1).\n`);
109
- console.log(` Run 'wi usage' for the full guide.\n`);
749
+ console.log(`\n '${command}' is not yet implemented.\n`);
750
+ console.log(' Run \'wi usage\' for the full guide.\n');
110
751
  return;
111
752
  }
112
753
  printUsage();
113
754
  }
114
- if (require.main === module) {
755
+ if (typeof require !== 'undefined' && require.main === module) {
115
756
  loadTracer().then(tracer => {
116
757
  const opts = tracer ? { skillVersion: tracer.getOwnSkillVersion(__dirname) } : {};
117
758
  return tracer ? tracer.run('crewx/wi', () => main(), opts) : main();
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../cli.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@crewx/wi",
3
- "version": "0.1.10-rc.9",
3
+ "version": "0.1.10-rc.90",
4
4
  "description": "Work Instruction engine for CrewX - structured task delegation",
5
5
  "type": "commonjs",
6
6
  "main": "dist/cli.js",
@@ -25,9 +25,21 @@
25
25
  "templates/"
26
26
  ],
27
27
  "dependencies": {
28
- "@crewx/shared": "0.0.5"
28
+ "@crewx/sdk": "0.9.0-rc.70",
29
+ "@crewx/shared": "0.0.6",
30
+ "@crewx/workflow": "0.3.22-rc.116"
31
+ },
32
+ "peerDependencies": {
33
+ "better-sqlite3": ">=12.0.0"
34
+ },
35
+ "peerDependenciesMeta": {
36
+ "better-sqlite3": {
37
+ "optional": true
38
+ }
29
39
  },
30
40
  "devDependencies": {
41
+ "@types/better-sqlite3": "*",
42
+ "better-sqlite3": "12.8.0",
31
43
  "@types/node": "^20.0.0",
32
44
  "typescript": "^5.0.0"
33
45
  },