yet-another-agentic-workflow 0.2.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 (61) hide show
  1. package/README.md +125 -0
  2. package/dist/adapters.d.ts +43 -0
  3. package/dist/adapters.js +191 -0
  4. package/dist/adapters.js.map +1 -0
  5. package/dist/architect.d.ts +38 -0
  6. package/dist/architect.js +275 -0
  7. package/dist/architect.js.map +1 -0
  8. package/dist/cli.d.ts +2 -0
  9. package/dist/cli.js +580 -0
  10. package/dist/cli.js.map +1 -0
  11. package/dist/feature.d.ts +30 -0
  12. package/dist/feature.js +344 -0
  13. package/dist/feature.js.map +1 -0
  14. package/dist/index.d.ts +22 -0
  15. package/dist/index.js +12 -0
  16. package/dist/index.js.map +1 -0
  17. package/dist/init.d.ts +26 -0
  18. package/dist/init.js +255 -0
  19. package/dist/init.js.map +1 -0
  20. package/dist/installer.d.ts +64 -0
  21. package/dist/installer.js +365 -0
  22. package/dist/installer.js.map +1 -0
  23. package/dist/observability.d.ts +37 -0
  24. package/dist/observability.js +200 -0
  25. package/dist/observability.js.map +1 -0
  26. package/dist/parser.d.ts +6 -0
  27. package/dist/parser.js +166 -0
  28. package/dist/parser.js.map +1 -0
  29. package/dist/persistence.d.ts +83 -0
  30. package/dist/persistence.js +279 -0
  31. package/dist/persistence.js.map +1 -0
  32. package/dist/providers.d.ts +14 -0
  33. package/dist/providers.js +27 -0
  34. package/dist/providers.js.map +1 -0
  35. package/dist/review.d.ts +29 -0
  36. package/dist/review.js +66 -0
  37. package/dist/review.js.map +1 -0
  38. package/dist/schema.d.ts +2 -0
  39. package/dist/schema.js +44 -0
  40. package/dist/schema.js.map +1 -0
  41. package/dist/skills.d.ts +24 -0
  42. package/dist/skills.js +210 -0
  43. package/dist/skills.js.map +1 -0
  44. package/dist/types.d.ts +86 -0
  45. package/dist/types.js +2 -0
  46. package/dist/types.js.map +1 -0
  47. package/package.json +48 -0
  48. package/schemas/agent.schema.json +37 -0
  49. package/schemas/context.schema.json +13 -0
  50. package/schemas/eval.schema.json +26 -0
  51. package/schemas/hook.schema.json +29 -0
  52. package/schemas/skill.schema.json +23 -0
  53. package/schemas/state.schema.json +14 -0
  54. package/schemas/workflow.schema.json +34 -0
  55. package/schemas/yaaw.schema.json +58 -0
  56. package/skills/clarify/SKILL.md +14 -0
  57. package/skills/code-review/SKILL.md +29 -0
  58. package/skills/slice-work/SKILL.md +15 -0
  59. package/skills/spec/SKILL.md +21 -0
  60. package/skills/tdd/SKILL.md +25 -0
  61. package/templates/instructions/managed-block.md +17 -0
package/dist/cli.js ADDED
@@ -0,0 +1,580 @@
1
+ #!/usr/bin/env node
2
+ import { resolve } from "node:path";
3
+ import { readFile } from "node:fs/promises";
4
+ import { createInterface } from "node:readline/promises";
5
+ import { ArchitectError, architectWorkflow } from "./architect.js";
6
+ import { AdapterError, syncAdapterSkills } from "./adapters.js";
7
+ import { FeatureWorkflowError } from "./feature.js";
8
+ import { loadAndValidateProjectDefinition } from "./parser.js";
9
+ import { ObservabilityError, readWorkflowRun, recordWorkflowRunEvent } from "./observability.js";
10
+ import { discoverSkills, displaySkillPath, invokeSkill, SkillSystemError } from "./skills.js";
11
+ import { checkpointFeatureWorkflow, loadWorkflowState, PersistenceError, resumeFeatureWorkflow, startFeatureWorkflow, submitIndependentReview } from "./persistence.js";
12
+ import { ReviewError } from "./review.js";
13
+ import { applyInstallation, detectLegacyProviders, doctorRepository, planInstallation, providerNames, readInstallManifest } from "./installer.js";
14
+ import { listProviders } from "./providers.js";
15
+ function usage() {
16
+ console.log(`Usage:
17
+ yaaw init [directory] [--provider <claude|codex>] [--yes] [--force] [--json]
18
+ yaaw doctor [directory] [--json]
19
+ yaaw version [directory]
20
+ yaaw --help
21
+ yaaw --version`);
22
+ }
23
+ function parseInitArgs(args) {
24
+ let directory;
25
+ const providers = [];
26
+ let yes = false;
27
+ let force = false;
28
+ let json = false;
29
+ for (let index = 0; index < args.length; index += 1) {
30
+ const argument = args[index];
31
+ if (argument === "--provider") {
32
+ const provider = args[index + 1];
33
+ if (provider !== "claude" && provider !== "codex")
34
+ return undefined;
35
+ providers.push(provider);
36
+ index += 1;
37
+ }
38
+ else if (argument === "--yes" || argument === "-y")
39
+ yes = true;
40
+ else if (argument === "--force")
41
+ force = true;
42
+ else if (argument === "--json")
43
+ json = true;
44
+ else if (argument === "--directory" || argument === "-d") {
45
+ const value = args[index + 1];
46
+ if (!value || value.startsWith("-"))
47
+ return undefined;
48
+ directory = value;
49
+ index += 1;
50
+ }
51
+ else if (argument.startsWith("-") || directory)
52
+ return undefined;
53
+ else
54
+ directory = argument;
55
+ }
56
+ return { ...(directory ? { directory } : {}), providers, yes, force, json };
57
+ }
58
+ async function currentVersion() {
59
+ const value = JSON.parse(await readFile(new URL("../package.json", import.meta.url), "utf8"));
60
+ return value.version;
61
+ }
62
+ function printPlan(plan) {
63
+ console.log("\nInstallation plan");
64
+ for (const operation of plan.operations.filter(({ status }) => status !== "unchanged")) {
65
+ const marker = operation.status === "conflicted" ? "!" : operation.status === "removed" ? "-" : "+";
66
+ console.log(`${marker} ${operation.status.padEnd(10)} ${operation.path}`);
67
+ }
68
+ const unchanged = plan.operations.filter(({ status }) => status === "unchanged").length;
69
+ if (unchanged)
70
+ console.log(`= unchanged ${unchanged} managed item(s)`);
71
+ }
72
+ async function configureInit(parsed) {
73
+ let directory = parsed.directory ?? ".";
74
+ let providers = [...new Set(parsed.providers)];
75
+ if (!process.stdin.isTTY || parsed.yes || parsed.json) {
76
+ if (providers.length === 0) {
77
+ const installed = await readInstallManifest(directory);
78
+ const legacy = installed ? [] : await detectLegacyProviders(directory);
79
+ providers = installed?.providers ?? (legacy.length ? legacy : listProviders().map(({ id }) => id));
80
+ }
81
+ return { directory, providers, confirmed: true };
82
+ }
83
+ const prompt = createInterface({ input: process.stdin, output: process.stdout });
84
+ try {
85
+ console.log("┌ Yet Another Agentic Workflow");
86
+ if (!parsed.directory)
87
+ directory = (await prompt.question("◇ Where should YAAW be installed? [.] ")).trim() || ".";
88
+ const existing = await readInstallManifest(directory);
89
+ if (existing)
90
+ console.log(`◇ Existing YAAW installation ${existing.installedVersion} detected`);
91
+ if (providers.length === 0) {
92
+ const legacy = existing ? [] : await detectLegacyProviders(directory);
93
+ const defaults = existing?.providers ?? (legacy.length ? legacy : listProviders().map(({ id }) => id));
94
+ console.log("◇ Which coding agents do you use?");
95
+ for (const provider of listProviders())
96
+ console.log(` ${provider.id}: ${provider.displayName}`);
97
+ const answer = (await prompt.question(` Comma-separated [${defaults.join(",")}]: `)).trim();
98
+ providers = answer ? [...new Set(answer.split(",").map((id) => id.trim()))] : defaults;
99
+ for (const provider of providers)
100
+ if (!listProviders().some(({ id }) => id === provider))
101
+ throw new Error(`Unsupported provider: ${provider}`);
102
+ }
103
+ return { directory, providers, confirmed: false };
104
+ }
105
+ finally {
106
+ prompt.close();
107
+ }
108
+ }
109
+ function parseCheckpointArgs(args) {
110
+ const stage = args[0];
111
+ if (!stage || stage.startsWith("-"))
112
+ return undefined;
113
+ let directory = ".";
114
+ let data;
115
+ let json = false;
116
+ for (let index = 1; index < args.length; index += 1) {
117
+ const argument = args[index];
118
+ if (argument === "--directory" || argument === "-d" || argument === "--data") {
119
+ const value = args[index + 1];
120
+ if (!value || value.startsWith("-"))
121
+ return undefined;
122
+ if (argument === "--data")
123
+ data = value;
124
+ else
125
+ directory = value;
126
+ index += 1;
127
+ }
128
+ else if (argument === "--json")
129
+ json = true;
130
+ else
131
+ return undefined;
132
+ }
133
+ return { stage, directory, ...(data ? { data } : {}), json };
134
+ }
135
+ function parseFeatureArgs(args) {
136
+ const requestParts = [];
137
+ let directory = ".";
138
+ let json = false;
139
+ for (let index = 0; index < args.length; index += 1) {
140
+ const argument = args[index];
141
+ if (argument === "--directory" || argument === "-d") {
142
+ const value = args[index + 1];
143
+ if (!value || value.startsWith("-"))
144
+ return undefined;
145
+ directory = value;
146
+ index += 1;
147
+ }
148
+ else if (argument === "--json")
149
+ json = true;
150
+ else if (argument.startsWith("-"))
151
+ return undefined;
152
+ else
153
+ requestParts.push(argument);
154
+ }
155
+ const request = requestParts.join(" ").trim();
156
+ return request ? { request, directory, json } : undefined;
157
+ }
158
+ function parseArchitectArgs(args) {
159
+ const problemParts = [];
160
+ let directory = ".";
161
+ let name;
162
+ let dryRun = false;
163
+ let force = false;
164
+ let json = false;
165
+ for (let index = 0; index < args.length; index += 1) {
166
+ const argument = args[index];
167
+ if (argument === "--directory" || argument === "-d" || argument === "--name") {
168
+ const value = args[index + 1];
169
+ if (!value || value.startsWith("-"))
170
+ return undefined;
171
+ if (argument === "--name")
172
+ name = value;
173
+ else
174
+ directory = value;
175
+ index += 1;
176
+ }
177
+ else if (argument === "--dry-run")
178
+ dryRun = true;
179
+ else if (argument === "--force")
180
+ force = true;
181
+ else if (argument === "--json")
182
+ json = true;
183
+ else if (argument.startsWith("-"))
184
+ return undefined;
185
+ else
186
+ problemParts.push(argument);
187
+ }
188
+ const problem = problemParts.join(" ").trim();
189
+ if (!problem)
190
+ return undefined;
191
+ return { problem, directory, ...(name ? { name } : {}), dryRun, force, json };
192
+ }
193
+ function parseDirectoryArgs(args) {
194
+ const json = args.includes("--json");
195
+ const positional = args.filter((argument) => argument !== "--json");
196
+ if (positional.length > 1 || args.some((argument) => argument.startsWith("-") && argument !== "--json")) {
197
+ return undefined;
198
+ }
199
+ return { directory: positional[0] ?? ".", json };
200
+ }
201
+ function parseRunArgs(args) {
202
+ let runId;
203
+ let directory = ".";
204
+ let json = false;
205
+ for (let index = 0; index < args.length; index += 1) {
206
+ const argument = args[index];
207
+ if (argument === "--directory" || argument === "-d") {
208
+ const value = args[index + 1];
209
+ if (!value || value.startsWith("-"))
210
+ return undefined;
211
+ directory = value;
212
+ index += 1;
213
+ }
214
+ else if (argument === "--json")
215
+ json = true;
216
+ else if (argument.startsWith("-") || runId)
217
+ return undefined;
218
+ else
219
+ runId = argument;
220
+ }
221
+ return { ...(runId ? { runId } : {}), directory, json };
222
+ }
223
+ function parseSyncArgs(args) {
224
+ const [name, ...rest] = args;
225
+ if (name !== "claude" && name !== "codex" && name !== "all")
226
+ return undefined;
227
+ const check = rest.includes("--check");
228
+ const force = rest.includes("--force");
229
+ const json = rest.includes("--json");
230
+ if (check && force)
231
+ return undefined;
232
+ const positional = rest.filter((argument) => argument !== "--check" && argument !== "--force" && argument !== "--json");
233
+ if (positional.length > 1 || rest.some((argument) => argument.startsWith("-") && !["--check", "--force", "--json"].includes(argument)))
234
+ return undefined;
235
+ return {
236
+ adapters: name === "all" ? ["claude", "codex"] : [name],
237
+ directory: positional[0] ?? ".",
238
+ check,
239
+ force,
240
+ json
241
+ };
242
+ }
243
+ async function main() {
244
+ const [command, ...args] = process.argv.slice(2);
245
+ if (!command || command === "--help" || command === "-h") {
246
+ usage();
247
+ return 0;
248
+ }
249
+ if (command === "--version" || command === "-v") {
250
+ console.log(await currentVersion());
251
+ return 0;
252
+ }
253
+ if (command === "init") {
254
+ const parsed = parseInitArgs(args);
255
+ if (!parsed) {
256
+ usage();
257
+ return 2;
258
+ }
259
+ try {
260
+ const configured = await configureInit(parsed);
261
+ const plan = await planInstallation(configured.directory, { providers: configured.providers, overwriteModified: parsed.force });
262
+ if (!parsed.json) {
263
+ console.log(`\nRepository: ${plan.discovery.root}`);
264
+ console.log(`Detected: ${plan.discovery.languages.join(", ") || "unknown"}; ${plan.discovery.packageManager ?? "no package manager"}; Git ${plan.discovery.git ? "repository" : "not detected"}`);
265
+ console.log(`Providers: ${providerNames(plan.providers).join(", ")}`);
266
+ printPlan(plan);
267
+ }
268
+ if (process.stdin.isTTY && !parsed.yes && !parsed.json) {
269
+ const prompt = createInterface({ input: process.stdin, output: process.stdout });
270
+ const answer = (await prompt.question("\n◇ Ready to install? [Y/n] ")).trim().toLowerCase();
271
+ prompt.close();
272
+ if (answer === "n" || answer === "no")
273
+ return 0;
274
+ }
275
+ const result = await applyInstallation(plan);
276
+ const conflicts = plan.operations.filter(({ status }) => status === "conflicted");
277
+ if (parsed.json)
278
+ console.log(JSON.stringify({ manifest: result.manifest, operations: plan.operations }, null, 2));
279
+ else {
280
+ for (const provider of providerNames(result.manifest.providers))
281
+ console.log(`✓ Installed ${provider} integration`);
282
+ console.log("✓ Wrote .yaaw/install.json");
283
+ console.log(conflicts.length ? `YAAW installed with ${conflicts.length} preserved conflict(s).` : "YAAW installed.");
284
+ }
285
+ return conflicts.length ? 1 : 0;
286
+ }
287
+ catch (error) {
288
+ console.error(error instanceof Error ? error.message : String(error));
289
+ return 1;
290
+ }
291
+ }
292
+ if (command === "doctor") {
293
+ const parsed = parseDirectoryArgs(args);
294
+ if (!parsed) {
295
+ usage();
296
+ return 2;
297
+ }
298
+ const result = await doctorRepository(parsed.directory);
299
+ if (parsed.json)
300
+ console.log(JSON.stringify(result, null, 2));
301
+ else {
302
+ console.log("YAAW Doctor\n");
303
+ for (const check of result.checks) {
304
+ const marker = check.status === "ok" ? "✓" : check.status === "warning" ? "!" : "✗";
305
+ console.log(`${marker} ${check.message}${check.path ? ` (${check.path})` : ""}`);
306
+ }
307
+ console.log(result.healthy ? "\nYAAW installation is healthy." : "\nRun: npx yet-another-agentic-workflow@latest init");
308
+ }
309
+ return result.healthy ? 0 : 1;
310
+ }
311
+ if (command === "version") {
312
+ const parsed = parseDirectoryArgs(args);
313
+ if (!parsed) {
314
+ usage();
315
+ return 2;
316
+ }
317
+ const manifest = await readInstallManifest(parsed.directory);
318
+ console.log(`YAAW CLI: ${await currentVersion()}`);
319
+ console.log(`Project YAAW: ${manifest?.installedVersion ?? "not installed"}`);
320
+ return 0;
321
+ }
322
+ if (command === "skills") {
323
+ const parsed = parseDirectoryArgs(args);
324
+ if (!parsed) {
325
+ usage();
326
+ return 2;
327
+ }
328
+ try {
329
+ const skills = await discoverSkills(parsed.directory);
330
+ if (parsed.json) {
331
+ console.log(JSON.stringify(skills.map(({ path: _path, ...skill }) => skill), null, 2));
332
+ }
333
+ else if (skills.length === 0) {
334
+ console.log("No skills discovered.");
335
+ }
336
+ else {
337
+ for (const skill of skills) {
338
+ const dependencies = skill.dependencies.length ? ` [requires: ${skill.dependencies.join(", ")}]` : "";
339
+ console.log(`${skill.name}: ${skill.purpose}${dependencies}`);
340
+ console.log(` ${displaySkillPath(skill, parsed.directory)}`);
341
+ }
342
+ }
343
+ return 0;
344
+ }
345
+ catch (error) {
346
+ console.error(error instanceof Error ? error.message : String(error));
347
+ return error instanceof SkillSystemError ? 1 : 2;
348
+ }
349
+ }
350
+ if (command === "skill") {
351
+ const [name, ...rest] = args;
352
+ if (!name || name.startsWith("-")) {
353
+ usage();
354
+ return 2;
355
+ }
356
+ const parsed = parseDirectoryArgs(rest);
357
+ if (!parsed) {
358
+ usage();
359
+ return 2;
360
+ }
361
+ try {
362
+ const invocation = await invokeSkill(name, parsed.directory);
363
+ console.log(parsed.json ? JSON.stringify(invocation, null, 2) : invocation.prompt);
364
+ return 0;
365
+ }
366
+ catch (error) {
367
+ console.error(error instanceof Error ? error.message : String(error));
368
+ return error instanceof SkillSystemError ? 1 : 2;
369
+ }
370
+ }
371
+ if (command === "architect") {
372
+ const parsed = parseArchitectArgs(args);
373
+ if (!parsed) {
374
+ usage();
375
+ return 2;
376
+ }
377
+ try {
378
+ const result = await architectWorkflow(parsed.problem, parsed.directory, {
379
+ ...(parsed.name ? { name: parsed.name } : {}),
380
+ dryRun: parsed.dryRun,
381
+ force: parsed.force
382
+ });
383
+ if (parsed.json) {
384
+ console.log(JSON.stringify(result, null, 2));
385
+ }
386
+ else {
387
+ console.log(`Diagnosis: ${result.diagnosis.kind.toUpperCase()} (${result.diagnosis.reasons.join("; ")})`);
388
+ console.log(`Name: ${result.name}`);
389
+ console.log(`Config: ${result.configPath}`);
390
+ for (const path of result.artifactPaths)
391
+ console.log(`${result.changed ? "created" : "would create"} ${path}`);
392
+ console.log(result.changed ? "Project definition updated and validated." : "Dry run; no files changed.");
393
+ }
394
+ return 0;
395
+ }
396
+ catch (error) {
397
+ console.error(error instanceof Error ? error.message : String(error));
398
+ return error instanceof ArchitectError ? 1 : 2;
399
+ }
400
+ }
401
+ if (command === "sync") {
402
+ const parsed = parseSyncArgs(args);
403
+ if (!parsed) {
404
+ usage();
405
+ return 2;
406
+ }
407
+ try {
408
+ const results = [];
409
+ for (const adapter of parsed.adapters) {
410
+ results.push(await syncAdapterSkills(adapter, parsed.directory, { check: parsed.check, force: parsed.force }));
411
+ }
412
+ if (parsed.json) {
413
+ console.log(JSON.stringify(results.length === 1 ? results[0] : results, null, 2));
414
+ }
415
+ else {
416
+ for (const result of results) {
417
+ const status = result.check ? (result.ok ? "in sync" : "drift detected") : (result.changed ? "synchronized" : "unchanged");
418
+ console.log(`${result.adapter}: ${status}; written=${result.written.length}, removed=${result.removed.length}, unchanged=${result.unchanged.length}`);
419
+ for (const difference of result.differences)
420
+ console.log(` ${difference.kind}: ${difference.target}`);
421
+ }
422
+ }
423
+ return parsed.check && results.some(({ ok }) => !ok) ? 1 : 0;
424
+ }
425
+ catch (error) {
426
+ console.error(error instanceof Error ? error.message : String(error));
427
+ return error instanceof AdapterError || error instanceof SkillSystemError ? 1 : 2;
428
+ }
429
+ }
430
+ if (command === "feature") {
431
+ const parsed = parseFeatureArgs(args);
432
+ if (!parsed) {
433
+ usage();
434
+ return 2;
435
+ }
436
+ try {
437
+ const invocation = await startFeatureWorkflow(parsed.request, parsed.directory);
438
+ console.log(parsed.json ? JSON.stringify(invocation, null, 2) : invocation.prompt);
439
+ return 0;
440
+ }
441
+ catch (error) {
442
+ console.error(error instanceof Error ? error.message : String(error));
443
+ return error instanceof FeatureWorkflowError ? 1 : 2;
444
+ }
445
+ }
446
+ if (command === "checkpoint") {
447
+ const parsed = parseCheckpointArgs(args);
448
+ if (!parsed) {
449
+ usage();
450
+ return 2;
451
+ }
452
+ try {
453
+ const update = parsed.data
454
+ ? JSON.parse(await (await import("node:fs/promises")).readFile(resolve(parsed.data), "utf8"))
455
+ : {};
456
+ const state = await checkpointFeatureWorkflow(parsed.stage, update, parsed.directory);
457
+ console.log(parsed.json ? JSON.stringify(state, null, 2) : `Checkpointed ${parsed.stage}; next=${state.progress.current ?? "complete"}`);
458
+ return 0;
459
+ }
460
+ catch (error) {
461
+ console.error(error instanceof Error ? error.message : String(error));
462
+ return error instanceof PersistenceError || error instanceof SyntaxError ? 1 : 2;
463
+ }
464
+ }
465
+ if (command === "review") {
466
+ const parsed = parseCheckpointArgs(args);
467
+ if (!parsed || (parsed.stage !== "spec" && parsed.stage !== "standards") || !parsed.data) {
468
+ usage();
469
+ return 2;
470
+ }
471
+ try {
472
+ const report = JSON.parse(await (await import("node:fs/promises")).readFile(resolve(parsed.data), "utf8"));
473
+ const state = await submitIndependentReview(parsed.stage, report, parsed.directory);
474
+ const recorded = state.reviews[parsed.stage];
475
+ console.log(parsed.json ? JSON.stringify(recorded, null, 2) : `${recorded.reviewer}: ${recorded.verdict} - ${recorded.summary}`);
476
+ return 0;
477
+ }
478
+ catch (error) {
479
+ console.error(error instanceof Error ? error.message : String(error));
480
+ return error instanceof PersistenceError || error instanceof ReviewError || error instanceof SyntaxError ? 1 : 2;
481
+ }
482
+ }
483
+ if (command === "observe") {
484
+ const parsed = parseCheckpointArgs(args);
485
+ const allowed = new Set([
486
+ "agent_invocation",
487
+ "tool_call",
488
+ "verification_failure",
489
+ "retry",
490
+ "token_usage",
491
+ "human_intervention"
492
+ ]);
493
+ if (!parsed || !parsed.data || !allowed.has(parsed.stage)) {
494
+ usage();
495
+ return 2;
496
+ }
497
+ try {
498
+ const data = JSON.parse(await (await import("node:fs/promises")).readFile(resolve(parsed.data), "utf8"));
499
+ const { state } = await loadWorkflowState(parsed.directory);
500
+ if (!state.runId)
501
+ throw new ObservabilityError("the active workflow predates run telemetry; start a new feature workflow");
502
+ const event = await recordWorkflowRunEvent(state.runId, parsed.stage, data, parsed.directory);
503
+ console.log(parsed.json ? JSON.stringify(event, null, 2) : `Recorded ${event.type} in run ${event.runId} (#${event.sequence})`);
504
+ return 0;
505
+ }
506
+ catch (error) {
507
+ console.error(error instanceof Error ? error.message : String(error));
508
+ return error instanceof PersistenceError || error instanceof ObservabilityError || error instanceof SyntaxError ? 1 : 2;
509
+ }
510
+ }
511
+ if (command === "runs") {
512
+ const parsed = parseRunArgs(args);
513
+ if (!parsed) {
514
+ usage();
515
+ return 2;
516
+ }
517
+ try {
518
+ let runId = parsed.runId;
519
+ if (!runId) {
520
+ const { state } = await loadWorkflowState(parsed.directory);
521
+ if (!state.runId)
522
+ throw new ObservabilityError("the active workflow has no run telemetry");
523
+ runId = state.runId;
524
+ }
525
+ const run = await readWorkflowRun(runId, parsed.directory);
526
+ if (parsed.json)
527
+ console.log(JSON.stringify(run, null, 2));
528
+ else {
529
+ console.log(`Run ${run.runId}: ${run.path}`);
530
+ for (const event of run.events) {
531
+ console.log(`${event.sequence}. ${event.timestamp} ${event.type} ${JSON.stringify(event.data)}`);
532
+ }
533
+ }
534
+ return 0;
535
+ }
536
+ catch (error) {
537
+ console.error(error instanceof Error ? error.message : String(error));
538
+ return error instanceof PersistenceError || error instanceof ObservabilityError ? 1 : 2;
539
+ }
540
+ }
541
+ if (command === "resume") {
542
+ const parsed = parseDirectoryArgs(args);
543
+ if (!parsed) {
544
+ usage();
545
+ return 2;
546
+ }
547
+ try {
548
+ const invocation = await resumeFeatureWorkflow(parsed.directory);
549
+ console.log(parsed.json ? JSON.stringify(invocation, null, 2) : invocation.prompt);
550
+ return 0;
551
+ }
552
+ catch (error) {
553
+ console.error(error instanceof Error ? error.message : String(error));
554
+ return error instanceof PersistenceError || error instanceof FeatureWorkflowError ? 1 : 2;
555
+ }
556
+ }
557
+ if (command !== "validate" || args.length > 1) {
558
+ usage();
559
+ return 2;
560
+ }
561
+ const suppliedPath = args[0] ?? ".yaaw/yaaw.yaml";
562
+ const filePath = resolve(suppliedPath);
563
+ const result = await loadAndValidateProjectDefinition(filePath);
564
+ if (!result.ok) {
565
+ console.error(`${suppliedPath}: invalid`);
566
+ for (const issue of result.issues) {
567
+ console.error(`- [${issue.keyword}] ${issue.path}: ${issue.message}`);
568
+ }
569
+ return 1;
570
+ }
571
+ const definition = result.value;
572
+ console.log(`${suppliedPath}: valid ` +
573
+ `(skills=${definition.skills.length}, agents=${definition.agents.length}, ` +
574
+ `hooks=${definition.hooks.length}, evals=${definition.evals.length}, ` +
575
+ `workflows=${definition.workflows.length}, context=${definition.context.length}, ` +
576
+ `state=${definition.state.length})`);
577
+ return 0;
578
+ }
579
+ process.exitCode = await main();
580
+ //# sourceMappingURL=cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ import type { AgentDefinition, ContextDefinition, EvalDefinition, HookDefinition, SkillDefinition, WorkflowDefinition } from "./types.js";
2
+ export interface OfficialFeaturePrimitives {
3
+ skills: SkillDefinition[];
4
+ agents: AgentDefinition[];
5
+ hook: HookDefinition;
6
+ evaluation: EvalDefinition;
7
+ workflow: WorkflowDefinition;
8
+ skillDocuments: Record<string, string>;
9
+ }
10
+ export interface FeatureStage {
11
+ id: string;
12
+ uses: string;
13
+ needs: string[];
14
+ instructions: string;
15
+ }
16
+ export interface FeatureInvocation {
17
+ request: string;
18
+ workflow: string;
19
+ order: string[];
20
+ parallelGroups: string[][];
21
+ stages: FeatureStage[];
22
+ prompt: string;
23
+ }
24
+ export declare class FeatureWorkflowError extends Error {
25
+ constructor(message: string);
26
+ }
27
+ /** Return the official Phase 4 feature workflow and all primitives it requires. */
28
+ export declare function createOfficialFeaturePrimitives(verificationCommands: string[], context?: ContextDefinition[]): OfficialFeaturePrimitives;
29
+ /** Compile the official feature DAG into one executable agent invocation packet. */
30
+ export declare function createFeatureInvocation(request: string, projectDirectory?: string): Promise<FeatureInvocation>;