@dewtech/dare-cli 2.1.0 → 2.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 (49) hide show
  1. package/README.md +33 -6
  2. package/dist/__tests__/dag-runner/adapters.test.d.ts +2 -0
  3. package/dist/__tests__/dag-runner/adapters.test.d.ts.map +1 -0
  4. package/dist/__tests__/dag-runner/adapters.test.js +134 -0
  5. package/dist/__tests__/dag-runner/adapters.test.js.map +1 -0
  6. package/dist/__tests__/dag-runner/utils.test.d.ts +2 -0
  7. package/dist/__tests__/dag-runner/utils.test.d.ts.map +1 -0
  8. package/dist/__tests__/dag-runner/utils.test.js +75 -0
  9. package/dist/__tests__/dag-runner/utils.test.js.map +1 -0
  10. package/dist/commands/execute.d.ts.map +1 -1
  11. package/dist/commands/execute.js +38 -30
  12. package/dist/commands/execute.js.map +1 -1
  13. package/dist/dag-runner/adapters/antigravity.d.ts +6 -0
  14. package/dist/dag-runner/adapters/antigravity.d.ts.map +1 -0
  15. package/dist/dag-runner/adapters/antigravity.js +54 -0
  16. package/dist/dag-runner/adapters/antigravity.js.map +1 -0
  17. package/dist/dag-runner/adapters/claude.d.ts +6 -0
  18. package/dist/dag-runner/adapters/claude.d.ts.map +1 -0
  19. package/dist/dag-runner/adapters/claude.js +48 -0
  20. package/dist/dag-runner/adapters/claude.js.map +1 -0
  21. package/dist/dag-runner/adapters/cursor.d.ts +6 -0
  22. package/dist/dag-runner/adapters/cursor.d.ts.map +1 -0
  23. package/dist/dag-runner/adapters/cursor.js +58 -0
  24. package/dist/dag-runner/adapters/cursor.js.map +1 -0
  25. package/dist/dag-runner/adapters/index.d.ts +46 -0
  26. package/dist/dag-runner/adapters/index.d.ts.map +1 -0
  27. package/dist/dag-runner/adapters/index.js +55 -0
  28. package/dist/dag-runner/adapters/index.js.map +1 -0
  29. package/dist/dag-runner/run_dag.d.ts +21 -11
  30. package/dist/dag-runner/run_dag.d.ts.map +1 -1
  31. package/dist/dag-runner/run_dag.js +199 -124
  32. package/dist/dag-runner/run_dag.js.map +1 -1
  33. package/dist/dag-runner/utils/cap-output.d.ts +14 -0
  34. package/dist/dag-runner/utils/cap-output.d.ts.map +1 -0
  35. package/dist/dag-runner/utils/cap-output.js +22 -0
  36. package/dist/dag-runner/utils/cap-output.js.map +1 -0
  37. package/dist/dag-runner/utils/stitch-context.d.ts +24 -0
  38. package/dist/dag-runner/utils/stitch-context.d.ts.map +1 -0
  39. package/dist/dag-runner/utils/stitch-context.js +36 -0
  40. package/dist/dag-runner/utils/stitch-context.js.map +1 -0
  41. package/dist/dag-runner/utils/timeout.d.ts +27 -0
  42. package/dist/dag-runner/utils/timeout.d.ts.map +1 -0
  43. package/dist/dag-runner/utils/timeout.js +55 -0
  44. package/dist/dag-runner/utils/timeout.js.map +1 -0
  45. package/dist/index.d.ts +4 -2
  46. package/dist/index.d.ts.map +1 -1
  47. package/dist/index.js +2 -1
  48. package/dist/index.js.map +1 -1
  49. package/package.json +4 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cursor.js","sourceRoot":"","sources":["../../../src/dag-runner/adapters/cursor.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EACL,gBAAgB,EAChB,kBAAkB,EAClB,SAAS,GAIV,MAAM,YAAY,CAAC;AAEpB,MAAM,OAAO,aAAa;IAA1B;QACW,SAAI,GAAG,QAAiB,CAAC;IAsCpC,CAAC;IApCC,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAoB;QACjE,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC;QAC1C,IAAI,CAAC,MAAM;YAAE,MAAM,IAAI,kBAAkB,CAAC,QAAQ,EAAE,gBAAgB,CAAC,CAAC;QAEtE,MAAM,KAAK,GAAG,SAAS,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;QAE5C,IAAI,KAA2D,CAAC;QAChE,IAAI,CAAC;YACH,KAAK,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC;gBACzB,MAAM;gBACN,KAAK,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE;gBACpB,IAAI,EAAE,mBAAmB;aAC1B,CAAC,CAAC;YAEH,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAErC,MAAM,OAAO,GAAG,GAAS,EAAE;gBACzB,uCAAuC;gBACvC,GAAG,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;YACtC,CAAC,CAAC;YACF,IAAI,MAAM,CAAC,OAAO;gBAAE,OAAO,EAAE,CAAC;;gBACzB,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;YAE/D,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;YAChC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,EAAE,EAAE,CAAC;QACzC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,GAAG,YAAY,kBAAkB;gBAAE,MAAM,GAAG,CAAC;YACjD,MAAM,IAAI,gBAAgB,CAAC,QAAQ,EAAE,mBAAmB,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;QACtE,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC;gBACH,MAAM,KAAK,EAAE,KAAK,EAAE,CAAC;YACvB,CAAC;YAAC,MAAM,CAAC;gBACP,wDAAwD;YAC1D,CAAC;QACH,CAAC;IACH,CAAC;CACF;AAED,SAAS,mBAAmB,CAAC,GAAY;IACvC,IAAI,GAAG,YAAY,KAAK;QAAE,OAAO,GAAG,CAAC,OAAO,CAAC;IAC7C,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;AACrB,CAAC"}
@@ -0,0 +1,46 @@
1
+ /**
2
+ * Runner adapters — execute a single DAG task by calling the underlying
3
+ * provider SDK (Anthropic, Cursor, Google).
4
+ *
5
+ * Each adapter must:
6
+ * - read its API key from the documented env var (or throw a clear error)
7
+ * - honor the AbortSignal forwarded by `withTimeout`
8
+ * - return raw text output (capping is the runner's responsibility)
9
+ * - report token usage when the SDK exposes it
10
+ */
11
+ import type { Complexity, DagModelMap, RunnerName } from '../run_dag.js';
12
+ export interface AdapterCallInput {
13
+ prompt: string;
14
+ complexity: Complexity;
15
+ models: DagModelMap;
16
+ signal: AbortSignal;
17
+ }
18
+ export interface AdapterCallResult {
19
+ output: string;
20
+ tokens?: number;
21
+ }
22
+ export interface RunnerAdapter {
23
+ readonly name: RunnerName;
24
+ call(input: AdapterCallInput): Promise<AdapterCallResult>;
25
+ }
26
+ export declare class MissingApiKeyError extends Error {
27
+ readonly runner: RunnerName;
28
+ readonly envVar: string;
29
+ constructor(runner: RunnerName, envVar: string);
30
+ }
31
+ export declare class AdapterCallError extends Error {
32
+ readonly runner: RunnerName;
33
+ readonly cause?: unknown | undefined;
34
+ constructor(runner: RunnerName, message: string, cause?: unknown | undefined);
35
+ }
36
+ /**
37
+ * Resolve a model id from complexity → model map, with a soft fallback.
38
+ */
39
+ export declare function pickModel(models: DagModelMap | undefined, complexity: Complexity): string;
40
+ /**
41
+ * Lazy factory — keeps SDK imports out of the require graph until the
42
+ * specific adapter is actually invoked. Avoids loading three SDKs when only
43
+ * one is in use.
44
+ */
45
+ export declare function getAdapter(name: RunnerName): Promise<RunnerAdapter>;
46
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/dag-runner/adapters/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAEzE,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,UAAU,CAAC;IACvB,MAAM,EAAE,WAAW,CAAC;IACpB,MAAM,EAAE,WAAW,CAAC;CACrB;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B,IAAI,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;CAC3D;AAED,qBAAa,kBAAmB,SAAQ,KAAK;aACf,MAAM,EAAE,UAAU;aAAkB,MAAM,EAAE,MAAM;gBAAlD,MAAM,EAAE,UAAU,EAAkB,MAAM,EAAE,MAAM;CAO/E;AAED,qBAAa,gBAAiB,SAAQ,KAAK;aACb,MAAM,EAAE,UAAU;aAAmC,KAAK,CAAC,EAAE,OAAO;gBAApE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,EAAkB,KAAK,CAAC,EAAE,OAAO,YAAA;CAIjG;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,MAAM,EAAE,WAAW,GAAG,SAAS,EAAE,UAAU,EAAE,UAAU,GAAG,MAAM,CASzF;AAED;;;;GAIG;AACH,wBAAsB,UAAU,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,aAAa,CAAC,CAkBzE"}
@@ -0,0 +1,55 @@
1
+ export class MissingApiKeyError extends Error {
2
+ constructor(runner, envVar) {
3
+ super(`${runner} runner requires ${envVar} to be set. ` +
4
+ `Export it before running: setx ${envVar} <your-key> (Windows) or export ${envVar}=<your-key> (bash).`);
5
+ this.runner = runner;
6
+ this.envVar = envVar;
7
+ this.name = 'MissingApiKeyError';
8
+ }
9
+ }
10
+ export class AdapterCallError extends Error {
11
+ constructor(runner, message, cause) {
12
+ super(`${runner} adapter: ${message}`);
13
+ this.runner = runner;
14
+ this.cause = cause;
15
+ this.name = 'AdapterCallError';
16
+ }
17
+ }
18
+ /**
19
+ * Resolve a model id from complexity → model map, with a soft fallback.
20
+ */
21
+ export function pickModel(models, complexity) {
22
+ if (!models) {
23
+ throw new Error(`No model mapping configured for complexity=${complexity}`);
24
+ }
25
+ const id = models[complexity];
26
+ if (!id) {
27
+ throw new Error(`Missing model for complexity=${complexity} in dare-dag.yaml`);
28
+ }
29
+ return id;
30
+ }
31
+ /**
32
+ * Lazy factory — keeps SDK imports out of the require graph until the
33
+ * specific adapter is actually invoked. Avoids loading three SDKs when only
34
+ * one is in use.
35
+ */
36
+ export async function getAdapter(name) {
37
+ switch (name) {
38
+ case 'claude': {
39
+ const { ClaudeAdapter } = await import('./claude.js');
40
+ return new ClaudeAdapter();
41
+ }
42
+ case 'cursor': {
43
+ const { CursorAdapter } = await import('./cursor.js');
44
+ return new CursorAdapter();
45
+ }
46
+ case 'antigravity': {
47
+ const { AntigravityAdapter } = await import('./antigravity.js');
48
+ return new AntigravityAdapter();
49
+ }
50
+ default: {
51
+ throw new Error(`Unknown runner: ${name}`);
52
+ }
53
+ }
54
+ }
55
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/dag-runner/adapters/index.ts"],"names":[],"mappings":"AA6BA,MAAM,OAAO,kBAAmB,SAAQ,KAAK;IAC3C,YAA4B,MAAkB,EAAkB,MAAc;QAC5E,KAAK,CACH,GAAG,MAAM,oBAAoB,MAAM,cAAc;YAC/C,kCAAkC,MAAM,sCAAsC,MAAM,sBAAsB,CAC7G,CAAC;QAJwB,WAAM,GAAN,MAAM,CAAY;QAAkB,WAAM,GAAN,MAAM,CAAQ;QAK5E,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;IACnC,CAAC;CACF;AAED,MAAM,OAAO,gBAAiB,SAAQ,KAAK;IACzC,YAA4B,MAAkB,EAAE,OAAe,EAAkB,KAAe;QAC9F,KAAK,CAAC,GAAG,MAAM,aAAa,OAAO,EAAE,CAAC,CAAC;QADb,WAAM,GAAN,MAAM,CAAY;QAAmC,UAAK,GAAL,KAAK,CAAU;QAE9F,IAAI,CAAC,IAAI,GAAG,kBAAkB,CAAC;IACjC,CAAC;CACF;AAED;;GAEG;AACH,MAAM,UAAU,SAAS,CAAC,MAA+B,EAAE,UAAsB;IAC/E,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,8CAA8C,UAAU,EAAE,CAAC,CAAC;IAC9E,CAAC;IACD,MAAM,EAAE,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;IAC9B,IAAI,CAAC,EAAE,EAAE,CAAC;QACR,MAAM,IAAI,KAAK,CAAC,gCAAgC,UAAU,mBAAmB,CAAC,CAAC;IACjF,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,IAAgB;IAC/C,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC;YACtD,OAAO,IAAI,aAAa,EAAE,CAAC;QAC7B,CAAC;QACD,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC;YACtD,OAAO,IAAI,aAAa,EAAE,CAAC;QAC7B,CAAC;QACD,KAAK,aAAa,CAAC,CAAC,CAAC;YACnB,MAAM,EAAE,kBAAkB,EAAE,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,CAAC;YAChE,OAAO,IAAI,kBAAkB,EAAE,CAAC;QAClC,CAAC;QACD,OAAO,CAAC,CAAC,CAAC;YACR,MAAM,IAAI,KAAK,CAAC,mBAAmB,IAAc,EAAE,CAAC,CAAC;QACvD,CAAC;IACH,CAAC;AACH,CAAC"}
@@ -1,7 +1,9 @@
1
1
  /**
2
- * DARE Framework - DAG Task Runner
3
- * Adapted from Cursor Cookbook DAG Task Runner pattern
4
- * Executes tasks in parallel based on dependency graph
2
+ * DARE Framework DAG Task Runner
3
+ *
4
+ * Executes tasks in parallel based on a dependency graph (Kahn's ranks),
5
+ * delegating actual execution to a per-runner adapter (Claude / Cursor /
6
+ * Antigravity). Adapted from the Cursor Cookbook DAG Task Runner pattern.
5
7
  */
6
8
  export type Complexity = 'LOW' | 'MED' | 'HIGH';
7
9
  export type RunnerName = 'cursor' | 'claude' | 'antigravity';
@@ -16,6 +18,8 @@ export interface DagTask {
16
18
  spec_file?: string;
17
19
  status?: TaskStatus;
18
20
  output?: string;
21
+ /** Last error message when status is FAILED. */
22
+ error?: string;
19
23
  tokens?: number;
20
24
  duration?: number;
21
25
  }
@@ -31,19 +35,15 @@ export interface DagLimits {
31
35
  /** complexity → model mapping. */
32
36
  export type DagModelMap = Record<Complexity, string>;
33
37
  /**
34
- * Full models block. New schema is per-runner (cursor / claude / antigravity).
35
- * Legacy flat schema (HIGH/MED/LOW directly) is also accepted by the parser
36
- * and normalized to the runner-keyed form on read.
38
+ * Per-runner model mapping. Legacy flat schema is normalized into this form
39
+ * by the YAML parser.
37
40
  */
38
41
  export type DagModels = Partial<Record<RunnerName, DagModelMap>>;
39
42
  export interface Dag {
40
43
  title: string;
41
44
  version: string;
42
- /** Optional ISO timestamp set when the YAML was generated. */
43
45
  generated?: string;
44
- /** Optional execution limits (defaults applied if missing). */
45
46
  limits?: DagLimits;
46
- /** Per-runner model mapping. */
47
47
  models: DagModels;
48
48
  tasks: DagTask[];
49
49
  }
@@ -51,11 +51,21 @@ export interface Dag {
51
51
  export declare const DEFAULT_DAG_LIMITS: DagLimits;
52
52
  export interface RunDagOptions {
53
53
  parallel: boolean;
54
- runner: string;
54
+ runner: RunnerName | string;
55
55
  canvasPath: string;
56
+ /** When true, only PENDING/FAILED tasks run (DONE/SKIPPED are kept). */
57
+ resume?: boolean;
58
+ /** Restrict execution to a single task id. */
59
+ onlyTaskId?: string;
56
60
  }
57
61
  /**
58
- * Main DAG runner - executes tasks in parallel based on dependency ranks
62
+ * Execute the DAG. Tasks are statefully mutated in place: status, output,
63
+ * error, tokens and duration get filled in as execution progresses.
59
64
  */
60
65
  export declare function runDag(dag: Dag, options: RunDagOptions): Promise<void>;
66
+ /**
67
+ * Compute execution ranks for tasks based on dependencies.
68
+ * Tasks in the same rank can run in parallel (Kahn's algorithm).
69
+ */
70
+ export declare function computeRanks(tasks: DagTask[]): Map<string, number>;
61
71
  //# sourceMappingURL=run_dag.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"run_dag.d.ts","sourceRoot":"","sources":["../../src/dag-runner/run_dag.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,MAAM,MAAM,UAAU,GAAG,KAAK,GAAG,KAAK,GAAG,MAAM,CAAC;AAChD,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,QAAQ,GAAG,aAAa,CAAC;AAC7D,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,SAAS,GAAG,MAAM,GAAG,QAAQ,GAAG,SAAS,CAAC;AAE/E,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,UAAU,EAAE,UAAU,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,0FAA0F;IAC1F,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,qDAAqD;AACrD,MAAM,WAAW,SAAS;IACxB,kFAAkF;IAClF,oBAAoB,EAAE,MAAM,CAAC;IAC7B,8DAA8D;IAC9D,iBAAiB,EAAE,MAAM,CAAC;IAC1B,iDAAiD;IACjD,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,kCAAkC;AAClC,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;AAErD;;;;GAIG;AACH,MAAM,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC,CAAC;AAEjE,MAAM,WAAW,GAAG;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,8DAA8D;IAC9D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,+DAA+D;IAC/D,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,gCAAgC;IAChC,MAAM,EAAE,SAAS,CAAC;IAClB,KAAK,EAAE,OAAO,EAAE,CAAC;CAClB;AAED,0DAA0D;AAC1D,eAAO,MAAM,kBAAkB,EAAE,SAIhC,CAAC;AAEF,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;CACpB;AA2FD;;GAEG;AACH,wBAAsB,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CA4F5E"}
1
+ {"version":3,"file":"run_dag.d.ts","sourceRoot":"","sources":["../../src/dag-runner/run_dag.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAcH,MAAM,MAAM,UAAU,GAAG,KAAK,GAAG,KAAK,GAAG,MAAM,CAAC;AAChD,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,QAAQ,GAAG,aAAa,CAAC;AAC7D,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,SAAS,GAAG,MAAM,GAAG,QAAQ,GAAG,SAAS,CAAC;AAE/E,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,UAAU,EAAE,UAAU,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,0FAA0F;IAC1F,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,gDAAgD;IAChD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,qDAAqD;AACrD,MAAM,WAAW,SAAS;IACxB,kFAAkF;IAClF,oBAAoB,EAAE,MAAM,CAAC;IAC7B,8DAA8D;IAC9D,iBAAiB,EAAE,MAAM,CAAC;IAC1B,iDAAiD;IACjD,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,kCAAkC;AAClC,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;AAErD;;;GAGG;AACH,MAAM,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC,CAAC;AAEjE,MAAM,WAAW,GAAG;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,MAAM,EAAE,SAAS,CAAC;IAClB,KAAK,EAAE,OAAO,EAAE,CAAC;CAClB;AAED,0DAA0D;AAC1D,eAAO,MAAM,kBAAkB,EAAE,SAIhC,CAAC;AAEF,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,EAAE,UAAU,GAAG,MAAM,CAAC;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,wEAAwE;IACxE,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,8CAA8C;IAC9C,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAMD;;;GAGG;AACH,wBAAsB,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAkD5E;AAiMD;;;GAGG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CA2BlE"}
@@ -1,57 +1,172 @@
1
1
  /**
2
- * DARE Framework - DAG Task Runner
3
- * Adapted from Cursor Cookbook DAG Task Runner pattern
4
- * Executes tasks in parallel based on dependency graph
2
+ * DARE Framework DAG Task Runner
3
+ *
4
+ * Executes tasks in parallel based on a dependency graph (Kahn's ranks),
5
+ * delegating actual execution to a per-runner adapter (Claude / Cursor /
6
+ * Antigravity). Adapted from the Cursor Cookbook DAG Task Runner pattern.
5
7
  */
6
8
  import fs from 'fs-extra';
9
+ import path from 'path';
7
10
  import chalk from 'chalk';
11
+ import { getAdapter, MissingApiKeyError } from './adapters/index.js';
12
+ import { capOutput } from './utils/cap-output.js';
13
+ import { composePrompt } from './utils/stitch-context.js';
14
+ import { TaskAbortedError, TaskTimeoutError, withTimeout, } from './utils/timeout.js';
8
15
  /** Defaults used when a YAML omits the `limits` block. */
9
16
  export const DEFAULT_DAG_LIMITS = {
10
17
  parent_context_chars: 2000,
11
18
  task_output_chars: 4000,
12
19
  timeout_seconds: 600,
13
20
  };
21
+ // ─────────────────────────────────────────────────────────────────────────────
22
+ // Public entry point
23
+ // ─────────────────────────────────────────────────────────────────────────────
14
24
  /**
15
- * Compute execution ranks for tasks based on dependencies.
16
- * Tasks in the same rank can run in parallel.
25
+ * Execute the DAG. Tasks are statefully mutated in place: status, output,
26
+ * error, tokens and duration get filled in as execution progresses.
17
27
  */
18
- function computeRanks(tasks) {
19
- const ranks = new Map();
20
- const taskMap = new Map(tasks.map((t) => [t.id, t]));
21
- function getRank(taskId, visited = new Set()) {
22
- if (ranks.has(taskId))
23
- return ranks.get(taskId);
24
- if (visited.has(taskId))
25
- throw new Error(`Circular dependency detected: ${taskId}`);
26
- visited.add(taskId);
27
- const task = taskMap.get(taskId);
28
- if (!task)
29
- throw new Error(`Task not found: ${taskId}`);
30
- if (task.depends_on.length === 0) {
31
- ranks.set(taskId, 0);
32
- return 0;
28
+ export async function runDag(dag, options) {
29
+ const { parallel, runner, canvasPath, resume = false, onlyTaskId } = options;
30
+ if (!isKnownRunner(runner)) {
31
+ throw new Error(`Unknown runner "${runner}". Expected one of: cursor | claude | antigravity.`);
32
+ }
33
+ const adapter = await getAdapter(runner);
34
+ const limits = dag.limits ?? DEFAULT_DAG_LIMITS;
35
+ const models = dag.models[runner];
36
+ if (!models) {
37
+ throw new Error(`dare-dag.yaml has no \`models.${runner}\` block. Define HIGH/MED/LOW for the chosen runner.`);
38
+ }
39
+ // Reset status only for tasks we plan to execute.
40
+ for (const task of dag.tasks) {
41
+ if (resume && (task.status === 'DONE' || task.status === 'SKIPPED'))
42
+ continue;
43
+ task.status = 'PENDING';
44
+ task.error = undefined;
45
+ }
46
+ // Honor SIGINT / SIGTERM — abort all in-flight tasks.
47
+ const cancellation = new AbortController();
48
+ const onSignal = (sig) => {
49
+ console.log(chalk.yellow(`\n ⚠ Received ${sig}. Cancelling in-flight tasks…`));
50
+ cancellation.abort('signal');
51
+ };
52
+ process.once('SIGINT', () => onSignal('SIGINT'));
53
+ process.once('SIGTERM', () => onSignal('SIGTERM'));
54
+ await renderCanvas(dag, canvasPath);
55
+ try {
56
+ if (onlyTaskId) {
57
+ const task = dag.tasks.find((t) => t.id === onlyTaskId);
58
+ if (!task)
59
+ throw new Error(`Task "${onlyTaskId}" not found in DAG.`);
60
+ await executeOne(task, dag, adapter, models, limits, cancellation.signal, canvasPath);
61
+ }
62
+ else if (parallel) {
63
+ await executeParallel(dag, adapter, models, limits, cancellation.signal, canvasPath);
64
+ }
65
+ else {
66
+ await executeSequential(dag, adapter, models, limits, cancellation.signal, canvasPath);
33
67
  }
34
- const maxDepRank = Math.max(...task.depends_on.map((dep) => getRank(dep, new Set(visited))));
35
- const rank = maxDepRank + 1;
36
- ranks.set(taskId, rank);
37
- return rank;
38
68
  }
39
- tasks.forEach((t) => getRank(t.id));
40
- return ranks;
69
+ finally {
70
+ await renderCanvas(dag, canvasPath);
71
+ printSummary(dag, canvasPath);
72
+ }
41
73
  }
42
- /**
43
- * Render real-time canvas with task status
44
- */
74
+ // ─────────────────────────────────────────────────────────────────────────────
75
+ // Execution strategies
76
+ // ─────────────────────────────────────────────────────────────────────────────
77
+ async function executeSequential(dag, adapter, models, limits, externalSignal, canvasPath) {
78
+ for (const task of dag.tasks) {
79
+ if (task.status === 'DONE' || task.status === 'SKIPPED')
80
+ continue;
81
+ await executeOne(task, dag, adapter, models, limits, externalSignal, canvasPath);
82
+ }
83
+ }
84
+ async function executeParallel(dag, adapter, models, limits, externalSignal, canvasPath) {
85
+ const ranks = computeRanks(dag.tasks);
86
+ const maxRank = Math.max(0, ...ranks.values());
87
+ for (let rank = 0; rank <= maxRank; rank++) {
88
+ const rankTasks = dag.tasks.filter((t) => ranks.get(t.id) === rank && t.status === 'PENDING');
89
+ if (rankTasks.length === 0)
90
+ continue;
91
+ console.log(chalk.yellow(`\n 📦 Rank ${rank}: ${rankTasks.length} task(s) in parallel`));
92
+ // Skip tasks whose dependencies failed/skipped — cascading skip.
93
+ const skippable = rankTasks.filter((t) => t.depends_on.some((dep) => {
94
+ const parent = dag.tasks.find((d) => d.id === dep);
95
+ return parent?.status === 'FAILED' || parent?.status === 'SKIPPED';
96
+ }));
97
+ for (const t of skippable) {
98
+ t.status = 'SKIPPED';
99
+ console.log(chalk.gray(` ⏭️ Skipping ${t.id} (dependency failed)`));
100
+ }
101
+ const executable = rankTasks.filter((t) => t.status === 'PENDING');
102
+ if (executable.length === 0) {
103
+ await renderCanvas(dag, canvasPath);
104
+ continue;
105
+ }
106
+ await Promise.all(executable.map((task) => executeOne(task, dag, adapter, models, limits, externalSignal, canvasPath)));
107
+ }
108
+ }
109
+ async function executeOne(task, dag, adapter, models, limits, externalSignal, canvasPath) {
110
+ const start = Date.now();
111
+ task.status = 'RUNNING';
112
+ task.error = undefined;
113
+ await renderCanvas(dag, canvasPath);
114
+ console.log(chalk.cyan(` 🔄 ${task.id}: ${task.title}`));
115
+ const parents = task.depends_on
116
+ .map((id) => dag.tasks.find((t) => t.id === id))
117
+ .filter((t) => Boolean(t));
118
+ const prompt = composePrompt({
119
+ task,
120
+ parents,
121
+ parentContextChars: limits.parent_context_chars,
122
+ });
123
+ try {
124
+ const { output, tokens } = await withTimeout(({ signal }) => adapter.call({
125
+ prompt,
126
+ complexity: task.complexity,
127
+ models,
128
+ signal,
129
+ }), { timeoutSeconds: limits.timeout_seconds, externalSignal });
130
+ task.output = capOutput(output, limits.task_output_chars);
131
+ task.tokens = tokens;
132
+ task.duration = Date.now() - start;
133
+ task.status = 'DONE';
134
+ console.log(chalk.green(` ✅ ${task.id} done (${task.duration}ms${tokens ? `, ${tokens} tokens` : ''})`));
135
+ }
136
+ catch (err) {
137
+ task.duration = Date.now() - start;
138
+ task.status = 'FAILED';
139
+ task.error = formatError(err);
140
+ if (err instanceof MissingApiKeyError) {
141
+ console.log(chalk.red(` ❌ ${task.id} failed: ${err.message}`));
142
+ }
143
+ else if (err instanceof TaskTimeoutError) {
144
+ console.log(chalk.red(` ❌ ${task.id} timed out after ${err.timeoutSeconds}s`));
145
+ }
146
+ else if (err instanceof TaskAbortedError) {
147
+ console.log(chalk.yellow(` ⚠ ${task.id} aborted: ${err.message}`));
148
+ }
149
+ else {
150
+ console.log(chalk.red(` ❌ ${task.id} failed: ${task.error}`));
151
+ }
152
+ }
153
+ finally {
154
+ await renderCanvas(dag, canvasPath);
155
+ }
156
+ }
157
+ // ─────────────────────────────────────────────────────────────────────────────
158
+ // Canvas + helpers
159
+ // ─────────────────────────────────────────────────────────────────────────────
160
+ const STATUS_ICON = {
161
+ PENDING: '⏳',
162
+ RUNNING: '🔄',
163
+ DONE: '✅',
164
+ FAILED: '❌',
165
+ SKIPPED: '⏭️',
166
+ };
45
167
  async function renderCanvas(dag, canvasPath) {
46
- const statusIcon = {
47
- PENDING: '⏳',
48
- RUNNING: '🔄',
49
- DONE: '✅',
50
- FAILED: '❌',
51
- SKIPPED: '⏭️',
52
- };
53
168
  const lines = [
54
- `# DARE DAG Execution - ${dag.title}`,
169
+ `# DARE DAG Execution ${dag.title}`,
55
170
  ``,
56
171
  `**Updated:** ${new Date().toISOString()}`,
57
172
  ``,
@@ -61,106 +176,66 @@ async function renderCanvas(dag, canvasPath) {
61
176
  `|----|-------|--------|----------|--------|`,
62
177
  ];
63
178
  for (const task of dag.tasks) {
64
- const icon = statusIcon[task.status || 'PENDING'];
179
+ const status = task.status ?? 'PENDING';
180
+ const icon = STATUS_ICON[status];
65
181
  const duration = task.duration ? `${task.duration}ms` : '-';
66
182
  const tokens = task.tokens ? `${task.tokens}` : '-';
67
- lines.push(`| ${task.id} | ${task.title} | ${icon} ${task.status || 'PENDING'} | ${duration} | ${tokens} |`);
183
+ lines.push(`| ${task.id} | ${task.title} | ${icon} ${status} | ${duration} | ${tokens} |`);
68
184
  }
69
- const done = dag.tasks.filter((t) => t.status === 'DONE').length;
70
185
  const total = dag.tasks.length;
71
- const pct = Math.round((done / total) * 100);
186
+ const done = dag.tasks.filter((t) => t.status === 'DONE').length;
187
+ const pct = total === 0 ? 0 : Math.round((done / total) * 100);
188
+ const filled = Math.round(pct / 5);
72
189
  lines.push('');
73
190
  lines.push(`## Progress: ${done}/${total} tasks (${pct}%)`);
74
191
  lines.push('');
75
- lines.push(`${'█'.repeat(Math.round(pct / 5))}${'░'.repeat(20 - Math.round(pct / 5))} ${pct}%`);
76
- await fs.ensureDir(canvasPath.replace(/\/[^/]+$/, ''));
192
+ lines.push(`${'█'.repeat(filled)}${'░'.repeat(20 - filled)} ${pct}%`);
193
+ await fs.ensureDir(path.dirname(canvasPath));
77
194
  await fs.writeFile(canvasPath, lines.join('\n'));
78
195
  }
79
- /**
80
- * Execute a single task (placeholder - AI agent executes in real use)
81
- */
82
- async function executeTask(task, context, runner) {
83
- // In real usage, this calls the AI agent (Cursor/Antigravity) with the task prompt
84
- // For now, we simulate execution
85
- const delay = task.complexity === 'HIGH' ? 2000 : task.complexity === 'MED' ? 1000 : 500;
86
- await new Promise((resolve) => setTimeout(resolve, delay));
87
- return {
88
- output: `Task ${task.id} completed by ${runner}`,
89
- tokens: Math.floor(Math.random() * 2000) + 500,
90
- };
91
- }
92
- /**
93
- * Main DAG runner - executes tasks in parallel based on dependency ranks
94
- */
95
- export async function runDag(dag, options) {
96
- const { parallel, runner, canvasPath } = options;
97
- // Initialize all tasks as PENDING
98
- dag.tasks.forEach((t) => (t.status = 'PENDING'));
99
- await renderCanvas(dag, canvasPath);
100
- if (!parallel) {
101
- // Sequential execution
102
- for (const task of dag.tasks) {
103
- task.status = 'RUNNING';
104
- await renderCanvas(dag, canvasPath);
105
- console.log(chalk.cyan(` 🔄 Running ${task.id}: ${task.title}`));
106
- const start = Date.now();
107
- const result = await executeTask(task, '', runner);
108
- task.status = 'DONE';
109
- task.output = result.output;
110
- task.tokens = result.tokens;
111
- task.duration = Date.now() - start;
112
- console.log(chalk.green(` ✅ ${task.id} done (${task.duration}ms, ${task.tokens} tokens)`));
113
- await renderCanvas(dag, canvasPath);
114
- }
115
- return;
116
- }
117
- // Parallel execution using ranks
118
- const ranks = computeRanks(dag.tasks);
119
- const maxRank = Math.max(...ranks.values());
120
- for (let rank = 0; rank <= maxRank; rank++) {
121
- const rankTasks = dag.tasks.filter((t) => ranks.get(t.id) === rank && t.status === 'PENDING');
122
- if (rankTasks.length === 0)
123
- continue;
124
- console.log(chalk.yellow(`\n 📦 Rank ${rank}: Executing ${rankTasks.length} task(s) in parallel`));
125
- // Check if any dependency failed
126
- const failedDeps = rankTasks.filter((t) => t.depends_on.some((dep) => dag.tasks.find((d) => d.id === dep)?.status === 'FAILED'));
127
- failedDeps.forEach((t) => {
128
- t.status = 'SKIPPED';
129
- console.log(chalk.gray(` ⏭️ Skipping ${t.id} (dependency failed)`));
130
- });
131
- const executableTasks = rankTasks.filter((t) => t.status === 'PENDING');
132
- // Build context from parent outputs
133
- const parentOutputs = executableTasks.map((t) => t.depends_on
134
- .map((dep) => dag.tasks.find((d) => d.id === dep)?.output || '')
135
- .filter(Boolean)
136
- .join('\n'));
137
- // Mark all as RUNNING
138
- executableTasks.forEach((t) => (t.status = 'RUNNING'));
139
- await renderCanvas(dag, canvasPath);
140
- // Execute in parallel
141
- await Promise.all(executableTasks.map(async (task, i) => {
142
- const start = Date.now();
143
- console.log(chalk.cyan(` 🔄 ${task.id}: ${task.title}`));
144
- try {
145
- const result = await executeTask(task, parentOutputs[i], runner);
146
- task.status = 'DONE';
147
- task.output = result.output;
148
- task.tokens = result.tokens;
149
- task.duration = Date.now() - start;
150
- console.log(chalk.green(` ✅ ${task.id} done (${task.duration}ms, ${task.tokens} tokens)`));
151
- }
152
- catch (err) {
153
- task.status = 'FAILED';
154
- task.duration = Date.now() - start;
155
- console.log(chalk.red(` ❌ ${task.id} failed: ${err}`));
156
- }
157
- await renderCanvas(dag, canvasPath);
158
- }));
159
- }
196
+ function printSummary(dag, canvasPath) {
160
197
  const done = dag.tasks.filter((t) => t.status === 'DONE').length;
161
198
  const failed = dag.tasks.filter((t) => t.status === 'FAILED').length;
162
199
  const skipped = dag.tasks.filter((t) => t.status === 'SKIPPED').length;
163
200
  console.log(chalk.bold(`\n 📊 Summary: ${done} done, ${failed} failed, ${skipped} skipped`));
164
201
  console.log(chalk.cyan(` 📄 Canvas: ${canvasPath}\n`));
165
202
  }
203
+ /**
204
+ * Compute execution ranks for tasks based on dependencies.
205
+ * Tasks in the same rank can run in parallel (Kahn's algorithm).
206
+ */
207
+ export function computeRanks(tasks) {
208
+ const ranks = new Map();
209
+ const taskMap = new Map(tasks.map((t) => [t.id, t]));
210
+ function getRank(taskId, visited = new Set()) {
211
+ if (ranks.has(taskId))
212
+ return ranks.get(taskId);
213
+ if (visited.has(taskId)) {
214
+ throw new Error(`Circular dependency detected: ${taskId}`);
215
+ }
216
+ visited.add(taskId);
217
+ const task = taskMap.get(taskId);
218
+ if (!task)
219
+ throw new Error(`Task not found: ${taskId}`);
220
+ if (task.depends_on.length === 0) {
221
+ ranks.set(taskId, 0);
222
+ return 0;
223
+ }
224
+ const maxDepRank = Math.max(...task.depends_on.map((dep) => getRank(dep, new Set(visited))));
225
+ const rank = maxDepRank + 1;
226
+ ranks.set(taskId, rank);
227
+ return rank;
228
+ }
229
+ for (const t of tasks)
230
+ getRank(t.id);
231
+ return ranks;
232
+ }
233
+ function isKnownRunner(runner) {
234
+ return runner === 'cursor' || runner === 'claude' || runner === 'antigravity';
235
+ }
236
+ function formatError(err) {
237
+ if (err instanceof Error)
238
+ return err.message;
239
+ return String(err);
240
+ }
166
241
  //# sourceMappingURL=run_dag.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"run_dag.js","sourceRoot":"","sources":["../../src/dag-runner/run_dag.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"run_dag.js","sourceRoot":"","sources":["../../src/dag-runner/run_dag.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Cap a task's captured output at `task_output_chars` chars (per the
3
+ * canonical `dare-dag.yaml` `limits` block).
4
+ *
5
+ * Capping applies to the in-memory `output` that gets:
6
+ * 1. stitched as upstream context for downstream tasks
7
+ * 2. shown on the canvas / logs
8
+ *
9
+ * The full output (if larger) is returned as-is to the caller so it can
10
+ * decide whether to persist the original elsewhere — capping is for the
11
+ * runner's bookkeeping, not for the underlying API call.
12
+ */
13
+ export declare function capOutput(text: string, maxChars: number): string;
14
+ //# sourceMappingURL=cap-output.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cap-output.d.ts","sourceRoot":"","sources":["../../../src/dag-runner/utils/cap-output.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAIH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAMhE"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Cap a task's captured output at `task_output_chars` chars (per the
3
+ * canonical `dare-dag.yaml` `limits` block).
4
+ *
5
+ * Capping applies to the in-memory `output` that gets:
6
+ * 1. stitched as upstream context for downstream tasks
7
+ * 2. shown on the canvas / logs
8
+ *
9
+ * The full output (if larger) is returned as-is to the caller so it can
10
+ * decide whether to persist the original elsewhere — capping is for the
11
+ * runner's bookkeeping, not for the underlying API call.
12
+ */
13
+ const TRUNCATION_NOTICE = '…[truncated by DARE — output_cap reached]';
14
+ export function capOutput(text, maxChars) {
15
+ if (maxChars <= 0)
16
+ return '';
17
+ if (text.length <= maxChars)
18
+ return text;
19
+ const room = Math.max(0, maxChars - TRUNCATION_NOTICE.length);
20
+ return text.slice(0, room) + TRUNCATION_NOTICE;
21
+ }
22
+ //# sourceMappingURL=cap-output.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cap-output.js","sourceRoot":"","sources":["../../../src/dag-runner/utils/cap-output.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,MAAM,iBAAiB,GAAG,2CAA2C,CAAC;AAEtE,MAAM,UAAU,SAAS,CAAC,IAAY,EAAE,QAAgB;IACtD,IAAI,QAAQ,IAAI,CAAC;QAAE,OAAO,EAAE,CAAC;IAC7B,IAAI,IAAI,CAAC,MAAM,IAAI,QAAQ;QAAE,OAAO,IAAI,CAAC;IAEzC,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC;IAC9D,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,iBAAiB,CAAC;AACjD,CAAC"}