@dewtech/dare-cli 2.0.1 → 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 (67) hide show
  1. package/README.md +33 -6
  2. package/dist/__tests__/dag-converter.test.js +114 -0
  3. package/dist/__tests__/dag-converter.test.js.map +1 -1
  4. package/dist/__tests__/dag-runner/adapters.test.d.ts +2 -0
  5. package/dist/__tests__/dag-runner/adapters.test.d.ts.map +1 -0
  6. package/dist/__tests__/dag-runner/adapters.test.js +134 -0
  7. package/dist/__tests__/dag-runner/adapters.test.js.map +1 -0
  8. package/dist/__tests__/dag-runner/utils.test.d.ts +2 -0
  9. package/dist/__tests__/dag-runner/utils.test.d.ts.map +1 -0
  10. package/dist/__tests__/dag-runner/utils.test.js +75 -0
  11. package/dist/__tests__/dag-runner/utils.test.js.map +1 -0
  12. package/dist/commands/blueprint.d.ts +14 -0
  13. package/dist/commands/blueprint.d.ts.map +1 -1
  14. package/dist/commands/blueprint.js +249 -116
  15. package/dist/commands/blueprint.js.map +1 -1
  16. package/dist/commands/execute.d.ts.map +1 -1
  17. package/dist/commands/execute.js +38 -30
  18. package/dist/commands/execute.js.map +1 -1
  19. package/dist/dag-runner/adapters/antigravity.d.ts +6 -0
  20. package/dist/dag-runner/adapters/antigravity.d.ts.map +1 -0
  21. package/dist/dag-runner/adapters/antigravity.js +54 -0
  22. package/dist/dag-runner/adapters/antigravity.js.map +1 -0
  23. package/dist/dag-runner/adapters/claude.d.ts +6 -0
  24. package/dist/dag-runner/adapters/claude.d.ts.map +1 -0
  25. package/dist/dag-runner/adapters/claude.js +48 -0
  26. package/dist/dag-runner/adapters/claude.js.map +1 -0
  27. package/dist/dag-runner/adapters/cursor.d.ts +6 -0
  28. package/dist/dag-runner/adapters/cursor.d.ts.map +1 -0
  29. package/dist/dag-runner/adapters/cursor.js +58 -0
  30. package/dist/dag-runner/adapters/cursor.js.map +1 -0
  31. package/dist/dag-runner/adapters/index.d.ts +46 -0
  32. package/dist/dag-runner/adapters/index.d.ts.map +1 -0
  33. package/dist/dag-runner/adapters/index.js +55 -0
  34. package/dist/dag-runner/adapters/index.js.map +1 -0
  35. package/dist/dag-runner/run_dag.d.ts +47 -8
  36. package/dist/dag-runner/run_dag.d.ts.map +1 -1
  37. package/dist/dag-runner/run_dag.js +205 -124
  38. package/dist/dag-runner/run_dag.js.map +1 -1
  39. package/dist/dag-runner/utils/cap-output.d.ts +14 -0
  40. package/dist/dag-runner/utils/cap-output.d.ts.map +1 -0
  41. package/dist/dag-runner/utils/cap-output.js +22 -0
  42. package/dist/dag-runner/utils/cap-output.js.map +1 -0
  43. package/dist/dag-runner/utils/stitch-context.d.ts +24 -0
  44. package/dist/dag-runner/utils/stitch-context.d.ts.map +1 -0
  45. package/dist/dag-runner/utils/stitch-context.js +36 -0
  46. package/dist/dag-runner/utils/stitch-context.js.map +1 -0
  47. package/dist/dag-runner/utils/timeout.d.ts +27 -0
  48. package/dist/dag-runner/utils/timeout.d.ts.map +1 -0
  49. package/dist/dag-runner/utils/timeout.js +55 -0
  50. package/dist/dag-runner/utils/timeout.js.map +1 -0
  51. package/dist/index.d.ts +4 -2
  52. package/dist/index.d.ts.map +1 -1
  53. package/dist/index.js +2 -1
  54. package/dist/index.js.map +1 -1
  55. package/dist/utils/dag-converter.d.ts +8 -2
  56. package/dist/utils/dag-converter.d.ts.map +1 -1
  57. package/dist/utils/dag-converter.js +116 -21
  58. package/dist/utils/dag-converter.js.map +1 -1
  59. package/package.json +4 -1
  60. package/templates/ide/antigravity/.agents/skills/dare-dag-runner/SKILL.md +172 -0
  61. package/templates/ide/antigravity/.agents/skills/dare-tasks/SKILL.md +210 -229
  62. package/templates/ide/claude/.claude/commands/dare-blueprint.md +126 -42
  63. package/templates/ide/claude/.claude/commands/dare-dag-build.md +110 -0
  64. package/templates/ide/claude/.claude/commands/dare-dag-run.md +110 -0
  65. package/templates/ide/cursor/.cursor/commands/generate-tasks.md +117 -20
  66. package/templates/ide/cursor/.cursor/commands/run-dag.md +87 -0
  67. package/templates/ide/cursor/.cursor/rules/skill-dag-runner.mdc +176 -0
package/README.md CHANGED
@@ -88,19 +88,46 @@ dare blueprint
88
88
 
89
89
  ### `dare execute`
90
90
 
91
- Execute tasks from the DAG with optional parallel execution.
91
+ Execute the DAG using a real SDK adapter (Claude / Cursor / Antigravity).
92
+ The runner orders tasks topologically (Kahn's algorithm), runs each rank in
93
+ parallel, applies per-task `parent_context_chars` / `task_output_chars` /
94
+ `timeout_seconds` limits, and writes a live canvas to `DARE/.canvas.md`.
92
95
 
93
96
  ```bash
94
- # Execute all tasks in parallel (75% faster)
97
+ # Parallel execution (recommended, default runner = cursor)
95
98
  dare execute --parallel --runner cursor
99
+ dare execute --parallel --runner claude
100
+ dare execute --parallel --runner antigravity
96
101
 
97
- # Execute a specific task
98
- dare execute task-001
102
+ # Sequential (debug)
103
+ dare execute --runner claude
99
104
 
100
- # Sequential execution
101
- dare execute
105
+ # Single task
106
+ dare execute --task task-003 --runner claude
107
+
108
+ # Resume — only run PENDING/FAILED, keep DONE/SKIPPED
109
+ dare execute --parallel --resume
110
+ ```
111
+
112
+ #### Required environment variables
113
+
114
+ | Runner | Env var | Where to get it |
115
+ |--------|---------|-----------------|
116
+ | `claude` | `ANTHROPIC_API_KEY` | https://console.anthropic.com/settings/keys |
117
+ | `cursor` | `CURSOR_API_KEY` | Cursor Settings → API Keys |
118
+ | `antigravity` | `ANTIGRAVITY_API_KEY` (or `GOOGLE_API_KEY`) | https://aistudio.google.com/app/apikey |
119
+
120
+ ```bash
121
+ # Windows (PowerShell)
122
+ $env:ANTHROPIC_API_KEY = "sk-ant-..."
123
+
124
+ # bash
125
+ export ANTHROPIC_API_KEY="sk-ant-..."
102
126
  ```
103
127
 
128
+ The runner honors `SIGINT` / `SIGTERM` — Ctrl+C cancels every in-flight task
129
+ cleanly via AbortController.
130
+
104
131
  ---
105
132
 
106
133
  ## Full Workflow
@@ -1,4 +1,6 @@
1
1
  import { describe, it, expect } from 'vitest';
2
+ import { convertYamlToDag, convertDagToYaml } from '../utils/dag-converter.js';
3
+ import { DEFAULT_DAG_LIMITS } from '../dag-runner/run_dag.js';
2
4
  // Inline DAG validation logic
3
5
  function validateDAG(dag) {
4
6
  const errors = [];
@@ -131,4 +133,116 @@ describe('DAG Converter', () => {
131
133
  });
132
134
  });
133
135
  });
136
+ // ─────────────────────────────────────────────────────────────────────────────
137
+ // Real converter tests (v2.1 schema with limits + per-runner models)
138
+ // ─────────────────────────────────────────────────────────────────────────────
139
+ describe('convertYamlToDag (v2.1 schema)', () => {
140
+ const v21Yaml = `title: "Sample"
141
+ version: "1.0.0"
142
+
143
+ limits:
144
+ parent_context_chars: 1500
145
+ task_output_chars: 3000
146
+ timeout_seconds: 300
147
+
148
+ models:
149
+ cursor: { HIGH: gpt-5.3-codex, MED: composer-2, LOW: auto-low }
150
+ claude: { HIGH: claude-sonnet-4-5, MED: claude-haiku-4, LOW: claude-haiku-4 }
151
+ antigravity: { HIGH: gemini-2.5-pro, MED: gemini-2.5-flash, LOW: gemini-2.5-flash }
152
+
153
+ tasks:
154
+ - id: task-001
155
+ title: "Setup"
156
+ depends_on: []
157
+ complexity: LOW
158
+ spec_file: EXECUTION/task-001.md
159
+ subtask_prompt: |
160
+ Do the setup.
161
+ - id: task-002
162
+ title: "Implement"
163
+ depends_on: [task-001]
164
+ complexity: HIGH
165
+ subtask_prompt: |
166
+ Build the thing.
167
+ `;
168
+ it('parses limits block', () => {
169
+ const dag = convertYamlToDag(v21Yaml);
170
+ expect(dag.limits).toEqual({
171
+ parent_context_chars: 1500,
172
+ task_output_chars: 3000,
173
+ timeout_seconds: 300,
174
+ });
175
+ });
176
+ it('parses per-runner models', () => {
177
+ const dag = convertYamlToDag(v21Yaml);
178
+ expect(dag.models.cursor?.HIGH).toBe('gpt-5.3-codex');
179
+ expect(dag.models.claude?.MED).toBe('claude-haiku-4');
180
+ expect(dag.models.antigravity?.LOW).toBe('gemini-2.5-flash');
181
+ });
182
+ it('parses spec_file when present', () => {
183
+ const dag = convertYamlToDag(v21Yaml);
184
+ expect(dag.tasks[0].spec_file).toBe('EXECUTION/task-001.md');
185
+ expect(dag.tasks[1].spec_file).toBeUndefined();
186
+ });
187
+ it('initializes status as PENDING for every task', () => {
188
+ const dag = convertYamlToDag(v21Yaml);
189
+ for (const t of dag.tasks) {
190
+ expect(t.status).toBe('PENDING');
191
+ }
192
+ });
193
+ });
194
+ describe('convertYamlToDag (legacy flat models)', () => {
195
+ const legacyYaml = `title: "Old"
196
+ version: "1.0.0"
197
+ models:
198
+ HIGH: "gpt-4"
199
+ MED: "gpt-4o-mini"
200
+ LOW: "gpt-4o-mini"
201
+ tasks:
202
+ - id: task-1
203
+ depends_on: []
204
+ complexity: MED
205
+ subtask_prompt: "noop"
206
+ `;
207
+ it('replicates flat models under each known runner', () => {
208
+ const dag = convertYamlToDag(legacyYaml);
209
+ expect(dag.models.cursor?.HIGH).toBe('gpt-4');
210
+ expect(dag.models.claude?.MED).toBe('gpt-4o-mini');
211
+ expect(dag.models.antigravity?.LOW).toBe('gpt-4o-mini');
212
+ });
213
+ it('falls back to default limits when block is absent', () => {
214
+ const dag = convertYamlToDag(legacyYaml);
215
+ expect(dag.limits).toEqual(DEFAULT_DAG_LIMITS);
216
+ });
217
+ });
218
+ describe('convertDagToYaml round-trip', () => {
219
+ it('preserves limits, models and spec_file across YAML → Dag → YAML → Dag', () => {
220
+ const original = `title: "RT"
221
+ version: "1.0.0"
222
+ limits:
223
+ parent_context_chars: 1234
224
+ task_output_chars: 5678
225
+ timeout_seconds: 90
226
+ models:
227
+ cursor: { HIGH: a, MED: b, LOW: c }
228
+ claude: { HIGH: d, MED: e, LOW: f }
229
+ antigravity: { HIGH: g, MED: h, LOW: i }
230
+ tasks:
231
+ - id: t1
232
+ title: "First"
233
+ depends_on: []
234
+ complexity: HIGH
235
+ spec_file: EXECUTION/t1.md
236
+ subtask_prompt: |
237
+ go.
238
+ `;
239
+ const dag1 = convertYamlToDag(original);
240
+ const yaml2 = convertDagToYaml(dag1);
241
+ const dag2 = convertYamlToDag(yaml2);
242
+ expect(dag2.limits).toEqual(dag1.limits);
243
+ expect(dag2.models).toEqual(dag1.models);
244
+ expect(dag2.tasks[0].spec_file).toBe('EXECUTION/t1.md');
245
+ expect(dag2.tasks[0].complexity).toBe('HIGH');
246
+ });
247
+ });
134
248
  //# sourceMappingURL=dag-converter.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"dag-converter.test.js","sourceRoot":"","sources":["../../src/__tests__/dag-converter.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAgB9C,8BAA8B;AAC9B,SAAS,WAAW,CAAC,GAAc;IACjC,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAElD,0BAA0B;IAC1B,IAAI,OAAO,CAAC,IAAI,KAAK,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;QACtC,MAAM,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;IAC1C,CAAC;IAED,2BAA2B;IAC3B,KAAK,MAAM,IAAI,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC;QAC7B,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YAClC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;gBACtB,MAAM,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,EAAE,8BAA8B,GAAG,GAAG,CAAC,CAAC;YACpE,CAAC;QACH,CAAC;IACH,CAAC;IAED,gCAAgC;IAChC,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAClC,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAElC,SAAS,QAAQ,CAAC,MAAc;QAC9B,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACpB,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAEpB,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,CAAC;QAClD,IAAI,IAAI,EAAE,CAAC;YACT,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;gBAClC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;oBACtB,IAAI,QAAQ,CAAC,GAAG,CAAC;wBAAE,OAAO,IAAI,CAAC;gBACjC,CAAC;qBAAM,IAAI,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;oBAC5B,OAAO,IAAI,CAAC;gBACd,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACvB,OAAO,KAAK,CAAC;IACf,CAAC;IAED,KAAK,MAAM,IAAI,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC;QAC7B,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;YAC1B,IAAI,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;gBACtB,MAAM,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC;gBACnD,MAAM;YACR,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;AAChD,CAAC;AAED,qEAAqE;AACrE,SAAS,YAAY,CAAC,GAAc;IAClC,MAAM,KAAK,GAAG,IAAI,GAAG,EAAkB,CAAC;IAExC,SAAS,OAAO,CAAC,MAAc;QAC7B,IAAI,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC;YAAE,OAAO,KAAK,CAAC,GAAG,CAAC,MAAM,CAAE,CAAC;QAEjD,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,CAAC;QAClD,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1C,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;YACrB,OAAO,CAAC,CAAC;QACX,CAAC;QAED,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACzE,MAAM,IAAI,GAAG,UAAU,GAAG,CAAC,CAAC;QAC5B,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QACxB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,MAAM,IAAI,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC;QAC7B,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACnB,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;IAC7B,MAAM,QAAQ,GAAc;QAC1B,KAAK,EAAE,cAAc;QACrB,MAAM,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,eAAe,EAAE,GAAG,EAAE,eAAe,EAAE;QACrE,KAAK,EAAE;YACL,EAAE,EAAE,EAAE,UAAU,EAAE,UAAU,EAAE,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,cAAc,EAAE,eAAe,EAAE;YACvF,EAAE,EAAE,EAAE,UAAU,EAAE,UAAU,EAAE,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,cAAc,EAAE,gBAAgB,EAAE;YACvF,EAAE,EAAE,EAAE,UAAU,EAAE,UAAU,EAAE,CAAC,UAAU,EAAE,UAAU,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,cAAc,EAAE,gBAAgB,EAAE;YAC9G,EAAE,EAAE,EAAE,UAAU,EAAE,UAAU,EAAE,CAAC,UAAU,CAAC,EAAE,UAAU,EAAE,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE;SAC/F;KACF,CAAC;IAEF,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;QAC3B,EAAE,CAAC,+BAA+B,EAAE,GAAG,EAAE;YACvC,MAAM,MAAM,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC;YACrC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAChC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QACxC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,oCAAoC,EAAE,GAAG,EAAE;YAC5C,MAAM,UAAU,GAAc;gBAC5B,GAAG,QAAQ;gBACX,KAAK,EAAE;oBACL,EAAE,EAAE,EAAE,UAAU,EAAE,UAAU,EAAE,CAAC,UAAU,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE;iBACzF;aACF,CAAC;YACF,MAAM,MAAM,GAAG,WAAW,CAAC,UAAU,CAAC,CAAC;YACvC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACjC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QACjD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,qCAAqC,EAAE,GAAG,EAAE;YAC7C,MAAM,SAAS,GAAc;gBAC3B,GAAG,QAAQ;gBACX,KAAK,EAAE;oBACL,EAAE,EAAE,EAAE,UAAU,EAAE,UAAU,EAAE,CAAC,UAAU,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,cAAc,EAAE,GAAG,EAAE;oBACrF,EAAE,EAAE,EAAE,UAAU,EAAE,UAAU,EAAE,CAAC,UAAU,CAAC,EAAE,UAAU,EAAE,KAAK,EAAE,cAAc,EAAE,GAAG,EAAE;iBACrF;aACF,CAAC;YACF,MAAM,MAAM,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC;YACtC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACjC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrE,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;QAC5B,EAAE,CAAC,oDAAoD,EAAE,GAAG,EAAE;YAC5D,MAAM,KAAK,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC;YACrC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACtC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACxC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,2DAA2D,EAAE,GAAG,EAAE;YACnE,MAAM,KAAK,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC;YACrC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACxC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,2DAA2D,EAAE,GAAG,EAAE;YACnE,MAAM,KAAK,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC;YACrC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACxC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,kDAAkD,EAAE,GAAG,EAAE;YAC1D,MAAM,KAAK,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC;YACrC,MAAM,UAAU,GAAG,CAAC,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;YACrF,MAAM,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;YACzC,MAAM,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;YACzC,MAAM,CAAC,UAAU,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QACrC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"dag-converter.test.js","sourceRoot":"","sources":["../../src/__tests__/dag-converter.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=adapters.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adapters.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/dag-runner/adapters.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,134 @@
1
+ import { describe, it, expect, vi, beforeEach } from 'vitest';
2
+ import { getAdapter, MissingApiKeyError, pickModel, } from '../../dag-runner/adapters/index.js';
3
+ const sampleModels = { HIGH: 'big', MED: 'mid', LOW: 'small' };
4
+ // ─── Anthropic SDK mock ──────────────────────────────────────────────────────
5
+ vi.mock('@anthropic-ai/sdk', () => {
6
+ var _a;
7
+ const create = vi.fn(async () => ({
8
+ content: [{ type: 'text', text: 'mocked claude response' }],
9
+ usage: { input_tokens: 10, output_tokens: 20 },
10
+ }));
11
+ // Default export is the client class.
12
+ return {
13
+ default: (_a = class MockAnthropic {
14
+ constructor() {
15
+ this.messages = { create };
16
+ }
17
+ },
18
+ _a.__spy = create,
19
+ _a),
20
+ };
21
+ });
22
+ // ─── Cursor SDK mock ─────────────────────────────────────────────────────────
23
+ vi.mock('@cursor/sdk', () => ({
24
+ Agent: {
25
+ create: vi.fn(async () => ({
26
+ send: vi.fn(async () => ({
27
+ cancel: vi.fn(async () => undefined),
28
+ wait: vi.fn(async () => ({ result: 'mocked cursor response' })),
29
+ })),
30
+ close: vi.fn(async () => undefined),
31
+ })),
32
+ },
33
+ }));
34
+ // ─── Google Generative AI mock ───────────────────────────────────────────────
35
+ vi.mock('@google/generative-ai', () => ({
36
+ GoogleGenerativeAI: class {
37
+ getGenerativeModel() {
38
+ return {
39
+ generateContent: async () => ({
40
+ response: {
41
+ text: () => 'mocked antigravity response',
42
+ usageMetadata: { promptTokenCount: 5, candidatesTokenCount: 7 },
43
+ },
44
+ }),
45
+ };
46
+ }
47
+ },
48
+ }));
49
+ describe('pickModel', () => {
50
+ it('returns the model id for the given complexity', () => {
51
+ expect(pickModel(sampleModels, 'HIGH')).toBe('big');
52
+ expect(pickModel(sampleModels, 'MED')).toBe('mid');
53
+ expect(pickModel(sampleModels, 'LOW')).toBe('small');
54
+ });
55
+ it('throws when models block is missing', () => {
56
+ expect(() => pickModel(undefined, 'HIGH')).toThrow();
57
+ });
58
+ });
59
+ describe('Adapters — happy path with mocked SDKs', () => {
60
+ beforeEach(() => {
61
+ process.env.ANTHROPIC_API_KEY = 'test-key';
62
+ process.env.CURSOR_API_KEY = 'test-key';
63
+ process.env.ANTIGRAVITY_API_KEY = 'test-key';
64
+ });
65
+ it('claude adapter calls SDK and returns text + tokens', async () => {
66
+ const adapter = await getAdapter('claude');
67
+ const ctrl = new AbortController();
68
+ const res = await adapter.call({
69
+ prompt: 'hi',
70
+ complexity: 'MED',
71
+ models: sampleModels,
72
+ signal: ctrl.signal,
73
+ });
74
+ expect(res.output).toBe('mocked claude response');
75
+ expect(res.tokens).toBe(30);
76
+ });
77
+ it('cursor adapter calls SDK and returns result', async () => {
78
+ const adapter = await getAdapter('cursor');
79
+ const ctrl = new AbortController();
80
+ const res = await adapter.call({
81
+ prompt: 'hi',
82
+ complexity: 'LOW',
83
+ models: sampleModels,
84
+ signal: ctrl.signal,
85
+ });
86
+ expect(res.output).toBe('mocked cursor response');
87
+ });
88
+ it('antigravity adapter calls SDK and returns text + tokens', async () => {
89
+ const adapter = await getAdapter('antigravity');
90
+ const ctrl = new AbortController();
91
+ const res = await adapter.call({
92
+ prompt: 'hi',
93
+ complexity: 'HIGH',
94
+ models: sampleModels,
95
+ signal: ctrl.signal,
96
+ });
97
+ expect(res.output).toBe('mocked antigravity response');
98
+ expect(res.tokens).toBe(12);
99
+ });
100
+ });
101
+ describe('Adapters — missing API keys', () => {
102
+ it('claude adapter throws MissingApiKeyError when ANTHROPIC_API_KEY is unset', async () => {
103
+ delete process.env.ANTHROPIC_API_KEY;
104
+ const adapter = await getAdapter('claude');
105
+ await expect(adapter.call({
106
+ prompt: 'hi',
107
+ complexity: 'MED',
108
+ models: sampleModels,
109
+ signal: new AbortController().signal,
110
+ })).rejects.toBeInstanceOf(MissingApiKeyError);
111
+ });
112
+ it('cursor adapter throws MissingApiKeyError when CURSOR_API_KEY is unset', async () => {
113
+ delete process.env.CURSOR_API_KEY;
114
+ const adapter = await getAdapter('cursor');
115
+ await expect(adapter.call({
116
+ prompt: 'hi',
117
+ complexity: 'MED',
118
+ models: sampleModels,
119
+ signal: new AbortController().signal,
120
+ })).rejects.toBeInstanceOf(MissingApiKeyError);
121
+ });
122
+ it('antigravity adapter throws MissingApiKeyError when both env vars are unset', async () => {
123
+ delete process.env.ANTIGRAVITY_API_KEY;
124
+ delete process.env.GOOGLE_API_KEY;
125
+ const adapter = await getAdapter('antigravity');
126
+ await expect(adapter.call({
127
+ prompt: 'hi',
128
+ complexity: 'MED',
129
+ models: sampleModels,
130
+ signal: new AbortController().signal,
131
+ })).rejects.toBeInstanceOf(MissingApiKeyError);
132
+ });
133
+ });
134
+ //# sourceMappingURL=adapters.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adapters.test.js","sourceRoot":"","sources":["../../../src/__tests__/dag-runner/adapters.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=utils.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/dag-runner/utils.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,75 @@
1
+ import { describe, it, expect } from 'vitest';
2
+ import { capOutput } from '../../dag-runner/utils/cap-output.js';
3
+ import { composePrompt, stitchParentContext, } from '../../dag-runner/utils/stitch-context.js';
4
+ import { TaskAbortedError, TaskTimeoutError, withTimeout, } from '../../dag-runner/utils/timeout.js';
5
+ const makeTask = (over) => ({
6
+ id: 't',
7
+ title: 't',
8
+ depends_on: [],
9
+ complexity: 'MED',
10
+ subtask_prompt: '',
11
+ ...over,
12
+ });
13
+ describe('capOutput', () => {
14
+ it('passes through when below the cap', () => {
15
+ expect(capOutput('hello', 100)).toBe('hello');
16
+ });
17
+ it('truncates with notice when above the cap', () => {
18
+ const out = capOutput('a'.repeat(200), 50);
19
+ expect(out.length).toBe(50);
20
+ expect(out).toMatch(/truncated by DARE/);
21
+ });
22
+ it('returns empty when cap is 0', () => {
23
+ expect(capOutput('anything', 0)).toBe('');
24
+ });
25
+ });
26
+ describe('stitchParentContext / composePrompt', () => {
27
+ it('returns empty string when no parents', () => {
28
+ const task = makeTask({ id: 'child', subtask_prompt: 'do x' });
29
+ expect(stitchParentContext({ task, parents: [], parentContextChars: 2000 })).toBe('');
30
+ });
31
+ it('appends a tail snippet for each parent capped to N chars', () => {
32
+ const parent = makeTask({ id: 'p1', output: 'A'.repeat(5000) });
33
+ const task = makeTask({ id: 'c', subtask_prompt: 'work' });
34
+ const ctx = stitchParentContext({ task, parents: [parent], parentContextChars: 100 });
35
+ expect(ctx).toMatch(/From parent: p1/);
36
+ // Tail-of-output strategy: ellipsis + 99 chars = 100
37
+ expect(ctx).toMatch(/A{50,}/); // contains a long run of As
38
+ const snippetLine = ctx.split('\n').find((l) => l.startsWith('…')) ?? '';
39
+ expect(snippetLine.length).toBe(100);
40
+ });
41
+ it('composePrompt prepends prompt and appends context', () => {
42
+ const parent = makeTask({ id: 'p', output: 'parent says hi' });
43
+ const task = makeTask({ subtask_prompt: 'go' });
44
+ const out = composePrompt({ task, parents: [parent], parentContextChars: 2000 });
45
+ expect(out.startsWith('go')).toBe(true);
46
+ expect(out).toMatch(/Upstream context/);
47
+ expect(out).toMatch(/parent says hi/);
48
+ });
49
+ });
50
+ describe('withTimeout', () => {
51
+ it('resolves when the operation finishes in time', async () => {
52
+ const result = await withTimeout(async () => 42, { timeoutSeconds: 5 });
53
+ expect(result).toBe(42);
54
+ });
55
+ it('rejects with TaskTimeoutError when the operation exceeds the budget', async () => {
56
+ await expect(withTimeout(async ({ signal }) => new Promise((resolve, reject) => {
57
+ const t = setTimeout(() => resolve(1), 500);
58
+ signal.addEventListener('abort', () => {
59
+ clearTimeout(t);
60
+ reject(new Error('ignored — outer rejects first'));
61
+ });
62
+ }),
63
+ // 50ms timeout — way before the 500ms operation finishes
64
+ { timeoutSeconds: 0.05 })).rejects.toBeInstanceOf(TaskTimeoutError);
65
+ });
66
+ it('rejects with TaskAbortedError when the external signal aborts', async () => {
67
+ const ctrl = new AbortController();
68
+ setTimeout(() => ctrl.abort('user'), 20);
69
+ await expect(withTimeout(async ({ signal }) => new Promise((resolve) => {
70
+ const t = setTimeout(() => resolve(1), 500);
71
+ signal.addEventListener('abort', () => clearTimeout(t));
72
+ }), { timeoutSeconds: 5, externalSignal: ctrl.signal })).rejects.toBeInstanceOf(TaskAbortedError);
73
+ });
74
+ });
75
+ //# sourceMappingURL=utils.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.test.js","sourceRoot":"","sources":["../../../src/__tests__/dag-runner/utils.test.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,17 @@
1
1
  import { Command } from 'commander';
2
+ /**
3
+ * `dare blueprint` — gera o esqueleto dos 4 artefatos da fase de Architect:
4
+ *
5
+ * DARE/BLUEPRINT.md
6
+ * DARE/TASKS.md
7
+ * DARE/dare-dag.yaml
8
+ * DARE/EXECUTION/task-<id>.md (uma por task)
9
+ *
10
+ * O preenchimento real é responsabilidade do agente IA (via `/dare-blueprint`,
11
+ * `/generate-blueprint` ou skill `dare-blueprint`). Este comando apenas
12
+ * inicializa a estrutura com placeholders consistentes — alinhada com o
13
+ * schema canônico definido em `skill-dag-runner` (com `limits`, `models` per
14
+ * runner e `spec_file`). Arquivos já existentes são preservados.
15
+ */
2
16
  export declare const blueprintCommand: Command;
3
17
  //# sourceMappingURL=blueprint.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"blueprint.d.ts","sourceRoot":"","sources":["../../src/commands/blueprint.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC,eAAO,MAAM,gBAAgB,SAwIzB,CAAC"}
1
+ {"version":3,"file":"blueprint.d.ts","sourceRoot":"","sources":["../../src/commands/blueprint.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,gBAAgB,SA8FzB,CAAC"}