@dewtech/dare-cli 3.8.2 → 3.10.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 (256) hide show
  1. package/README.md +19 -0
  2. package/dist/__tests__/drift-regression.test.d.ts +2 -0
  3. package/dist/__tests__/drift-regression.test.d.ts.map +1 -0
  4. package/dist/__tests__/drift-regression.test.js +118 -0
  5. package/dist/__tests__/drift-regression.test.js.map +1 -0
  6. package/dist/__tests__/ide-command-parity.test.js +1 -0
  7. package/dist/__tests__/ide-command-parity.test.js.map +1 -1
  8. package/dist/__tests__/project-generator.test.js +10 -1
  9. package/dist/__tests__/project-generator.test.js.map +1 -1
  10. package/dist/__tests__/secure-executor-regression.test.d.ts +2 -0
  11. package/dist/__tests__/secure-executor-regression.test.d.ts.map +1 -0
  12. package/dist/__tests__/secure-executor-regression.test.js +294 -0
  13. package/dist/__tests__/secure-executor-regression.test.js.map +1 -0
  14. package/dist/__tests__/semantic-regression.test.d.ts +2 -0
  15. package/dist/__tests__/semantic-regression.test.d.ts.map +1 -0
  16. package/dist/__tests__/semantic-regression.test.js +248 -0
  17. package/dist/__tests__/semantic-regression.test.js.map +1 -0
  18. package/dist/agent/__tests__/budget.test.d.ts +2 -0
  19. package/dist/agent/__tests__/budget.test.d.ts.map +1 -0
  20. package/dist/agent/__tests__/budget.test.js +36 -0
  21. package/dist/agent/__tests__/budget.test.js.map +1 -0
  22. package/dist/agent/__tests__/claude-driver.test.d.ts +2 -0
  23. package/dist/agent/__tests__/claude-driver.test.d.ts.map +1 -0
  24. package/dist/agent/__tests__/claude-driver.test.js +88 -0
  25. package/dist/agent/__tests__/claude-driver.test.js.map +1 -0
  26. package/dist/agent/__tests__/cost-telemetry.test.d.ts +2 -0
  27. package/dist/agent/__tests__/cost-telemetry.test.d.ts.map +1 -0
  28. package/dist/agent/__tests__/cost-telemetry.test.js +61 -0
  29. package/dist/agent/__tests__/cost-telemetry.test.js.map +1 -0
  30. package/dist/agent/__tests__/driver.types.test.d.ts +2 -0
  31. package/dist/agent/__tests__/driver.types.test.d.ts.map +1 -0
  32. package/dist/agent/__tests__/driver.types.test.js +33 -0
  33. package/dist/agent/__tests__/driver.types.test.js.map +1 -0
  34. package/dist/agent/__tests__/mock-driver.test.d.ts +2 -0
  35. package/dist/agent/__tests__/mock-driver.test.d.ts.map +1 -0
  36. package/dist/agent/__tests__/mock-driver.test.js +100 -0
  37. package/dist/agent/__tests__/mock-driver.test.js.map +1 -0
  38. package/dist/agent/__tests__/no-llm-in-core.test.d.ts +2 -0
  39. package/dist/agent/__tests__/no-llm-in-core.test.d.ts.map +1 -0
  40. package/dist/agent/__tests__/no-llm-in-core.test.js +46 -0
  41. package/dist/agent/__tests__/no-llm-in-core.test.js.map +1 -0
  42. package/dist/agent/budget.d.ts +15 -0
  43. package/dist/agent/budget.d.ts.map +1 -0
  44. package/dist/agent/budget.js +23 -0
  45. package/dist/agent/budget.js.map +1 -0
  46. package/dist/agent/driver.d.ts +46 -0
  47. package/dist/agent/driver.d.ts.map +1 -0
  48. package/dist/agent/driver.js +2 -0
  49. package/dist/agent/driver.js.map +1 -0
  50. package/dist/agent/drivers/claude.d.ts +43 -0
  51. package/dist/agent/drivers/claude.d.ts.map +1 -0
  52. package/dist/agent/drivers/claude.js +134 -0
  53. package/dist/agent/drivers/claude.js.map +1 -0
  54. package/dist/agent/drivers/mock.d.ts +3 -0
  55. package/dist/agent/drivers/mock.d.ts.map +1 -0
  56. package/dist/agent/drivers/mock.js +56 -0
  57. package/dist/agent/drivers/mock.js.map +1 -0
  58. package/dist/agent/drivers/noop.d.ts +3 -0
  59. package/dist/agent/drivers/noop.d.ts.map +1 -0
  60. package/dist/agent/drivers/noop.js +13 -0
  61. package/dist/agent/drivers/noop.js.map +1 -0
  62. package/dist/agent/telemetry.d.ts +4 -0
  63. package/dist/agent/telemetry.d.ts.map +1 -0
  64. package/dist/agent/telemetry.js +25 -0
  65. package/dist/agent/telemetry.js.map +1 -0
  66. package/dist/bin/dare.js +2 -0
  67. package/dist/bin/dare.js.map +1 -1
  68. package/dist/commands/__tests__/execute-agent.test.d.ts +2 -0
  69. package/dist/commands/__tests__/execute-agent.test.d.ts.map +1 -0
  70. package/dist/commands/__tests__/execute-agent.test.js +191 -0
  71. package/dist/commands/__tests__/execute-agent.test.js.map +1 -0
  72. package/dist/commands/__tests__/execute.telemetry.spec.js +3 -0
  73. package/dist/commands/__tests__/execute.telemetry.spec.js.map +1 -1
  74. package/dist/commands/__tests__/graph-drift.test.d.ts +2 -0
  75. package/dist/commands/__tests__/graph-drift.test.d.ts.map +1 -0
  76. package/dist/commands/__tests__/graph-drift.test.js +169 -0
  77. package/dist/commands/__tests__/graph-drift.test.js.map +1 -0
  78. package/dist/commands/__tests__/require-approval.test.d.ts +2 -0
  79. package/dist/commands/__tests__/require-approval.test.d.ts.map +1 -0
  80. package/dist/commands/__tests__/require-approval.test.js +158 -0
  81. package/dist/commands/__tests__/require-approval.test.js.map +1 -0
  82. package/dist/commands/execute.d.ts +68 -0
  83. package/dist/commands/execute.d.ts.map +1 -1
  84. package/dist/commands/execute.js +567 -2
  85. package/dist/commands/execute.js.map +1 -1
  86. package/dist/commands/graph.d.ts.map +1 -1
  87. package/dist/commands/graph.js +204 -1
  88. package/dist/commands/graph.js.map +1 -1
  89. package/dist/commands/guard.d.ts +13 -0
  90. package/dist/commands/guard.d.ts.map +1 -0
  91. package/dist/commands/guard.js +338 -0
  92. package/dist/commands/guard.js.map +1 -0
  93. package/dist/dag-runner/graph-ingest.d.ts.map +1 -1
  94. package/dist/dag-runner/graph-ingest.js +13 -7
  95. package/dist/dag-runner/graph-ingest.js.map +1 -1
  96. package/dist/graphrag/__tests__/drift-config.test.d.ts +2 -0
  97. package/dist/graphrag/__tests__/drift-config.test.d.ts.map +1 -0
  98. package/dist/graphrag/__tests__/drift-config.test.js +33 -0
  99. package/dist/graphrag/__tests__/drift-config.test.js.map +1 -0
  100. package/dist/graphrag/__tests__/drift.test.d.ts +2 -0
  101. package/dist/graphrag/__tests__/drift.test.d.ts.map +1 -0
  102. package/dist/graphrag/__tests__/drift.test.js +152 -0
  103. package/dist/graphrag/__tests__/drift.test.js.map +1 -0
  104. package/dist/graphrag/__tests__/hybrid-integration.test.d.ts +2 -0
  105. package/dist/graphrag/__tests__/hybrid-integration.test.d.ts.map +1 -0
  106. package/dist/graphrag/__tests__/hybrid-integration.test.js +158 -0
  107. package/dist/graphrag/__tests__/hybrid-integration.test.js.map +1 -0
  108. package/dist/graphrag/__tests__/hybrid.test.d.ts +2 -0
  109. package/dist/graphrag/__tests__/hybrid.test.d.ts.map +1 -0
  110. package/dist/graphrag/__tests__/hybrid.test.js +71 -0
  111. package/dist/graphrag/__tests__/hybrid.test.js.map +1 -0
  112. package/dist/graphrag/__tests__/incremental-index.test.d.ts +2 -0
  113. package/dist/graphrag/__tests__/incremental-index.test.d.ts.map +1 -0
  114. package/dist/graphrag/__tests__/incremental-index.test.js +135 -0
  115. package/dist/graphrag/__tests__/incremental-index.test.js.map +1 -0
  116. package/dist/graphrag/__tests__/no-heavy-dep-in-core.test.d.ts +2 -0
  117. package/dist/graphrag/__tests__/no-heavy-dep-in-core.test.d.ts.map +1 -0
  118. package/dist/graphrag/__tests__/no-heavy-dep-in-core.test.js +48 -0
  119. package/dist/graphrag/__tests__/no-heavy-dep-in-core.test.js.map +1 -0
  120. package/dist/graphrag/__tests__/requirement-hash.test.d.ts +2 -0
  121. package/dist/graphrag/__tests__/requirement-hash.test.d.ts.map +1 -0
  122. package/dist/graphrag/__tests__/requirement-hash.test.js +74 -0
  123. package/dist/graphrag/__tests__/requirement-hash.test.js.map +1 -0
  124. package/dist/graphrag/__tests__/semantic-config.test.d.ts +2 -0
  125. package/dist/graphrag/__tests__/semantic-config.test.d.ts.map +1 -0
  126. package/dist/graphrag/__tests__/semantic-config.test.js +39 -0
  127. package/dist/graphrag/__tests__/semantic-config.test.js.map +1 -0
  128. package/dist/graphrag/__tests__/vector-persistence.test.d.ts +2 -0
  129. package/dist/graphrag/__tests__/vector-persistence.test.d.ts.map +1 -0
  130. package/dist/graphrag/__tests__/vector-persistence.test.js +112 -0
  131. package/dist/graphrag/__tests__/vector-persistence.test.js.map +1 -0
  132. package/dist/graphrag/__tests__/vector-search.test.d.ts +2 -0
  133. package/dist/graphrag/__tests__/vector-search.test.d.ts.map +1 -0
  134. package/dist/graphrag/__tests__/vector-search.test.js +36 -0
  135. package/dist/graphrag/__tests__/vector-search.test.js.map +1 -0
  136. package/dist/graphrag/drift.d.ts +22 -0
  137. package/dist/graphrag/drift.d.ts.map +1 -0
  138. package/dist/graphrag/drift.js +204 -0
  139. package/dist/graphrag/drift.js.map +1 -0
  140. package/dist/graphrag/embeddings.d.ts +15 -0
  141. package/dist/graphrag/embeddings.d.ts.map +1 -0
  142. package/dist/graphrag/embeddings.js +107 -0
  143. package/dist/graphrag/embeddings.js.map +1 -0
  144. package/dist/graphrag/graph-rag.d.ts +17 -1
  145. package/dist/graphrag/graph-rag.d.ts.map +1 -1
  146. package/dist/graphrag/graph-rag.js +170 -2
  147. package/dist/graphrag/graph-rag.js.map +1 -1
  148. package/dist/graphrag/hybrid.d.ts +8 -0
  149. package/dist/graphrag/hybrid.d.ts.map +1 -0
  150. package/dist/graphrag/hybrid.js +203 -0
  151. package/dist/graphrag/hybrid.js.map +1 -0
  152. package/dist/graphrag/incremental-index.d.ts +18 -0
  153. package/dist/graphrag/incremental-index.d.ts.map +1 -0
  154. package/dist/graphrag/incremental-index.js +159 -0
  155. package/dist/graphrag/incremental-index.js.map +1 -0
  156. package/dist/graphrag/index.d.ts +1 -1
  157. package/dist/graphrag/index.d.ts.map +1 -1
  158. package/dist/graphrag/json-graph.d.ts +2 -1
  159. package/dist/graphrag/json-graph.d.ts.map +1 -1
  160. package/dist/graphrag/json-graph.js +14 -0
  161. package/dist/graphrag/json-graph.js.map +1 -1
  162. package/dist/graphrag/knowledge-graph.d.ts +5 -0
  163. package/dist/graphrag/knowledge-graph.d.ts.map +1 -1
  164. package/dist/graphrag/neo4j-graph.d.ts +2 -1
  165. package/dist/graphrag/neo4j-graph.d.ts.map +1 -1
  166. package/dist/graphrag/neo4j-graph.js +40 -5
  167. package/dist/graphrag/neo4j-graph.js.map +1 -1
  168. package/dist/graphrag/requirement-ingest.d.ts +4 -1
  169. package/dist/graphrag/requirement-ingest.d.ts.map +1 -1
  170. package/dist/graphrag/requirement-ingest.js +18 -8
  171. package/dist/graphrag/requirement-ingest.js.map +1 -1
  172. package/dist/graphrag/types.d.ts +1 -0
  173. package/dist/graphrag/types.d.ts.map +1 -1
  174. package/dist/graphrag/vector-search.d.ts +10 -0
  175. package/dist/graphrag/vector-search.d.ts.map +1 -0
  176. package/dist/graphrag/vector-search.js +38 -0
  177. package/dist/graphrag/vector-search.js.map +1 -0
  178. package/dist/guard/__tests__/boundary.test.d.ts +2 -0
  179. package/dist/guard/__tests__/boundary.test.d.ts.map +1 -0
  180. package/dist/guard/__tests__/boundary.test.js +37 -0
  181. package/dist/guard/__tests__/boundary.test.js.map +1 -0
  182. package/dist/guard/__tests__/guard-command.test.d.ts +2 -0
  183. package/dist/guard/__tests__/guard-command.test.d.ts.map +1 -0
  184. package/dist/guard/__tests__/guard-command.test.js +88 -0
  185. package/dist/guard/__tests__/guard-command.test.js.map +1 -0
  186. package/dist/guard/__tests__/guard-config.test.d.ts +2 -0
  187. package/dist/guard/__tests__/guard-config.test.d.ts.map +1 -0
  188. package/dist/guard/__tests__/guard-config.test.js +34 -0
  189. package/dist/guard/__tests__/guard-config.test.js.map +1 -0
  190. package/dist/guard/__tests__/guard-integration.test.d.ts +2 -0
  191. package/dist/guard/__tests__/guard-integration.test.d.ts.map +1 -0
  192. package/dist/guard/__tests__/guard-integration.test.js +218 -0
  193. package/dist/guard/__tests__/guard-integration.test.js.map +1 -0
  194. package/dist/guard/__tests__/guard-types.test.d.ts +2 -0
  195. package/dist/guard/__tests__/guard-types.test.d.ts.map +1 -0
  196. package/dist/guard/__tests__/guard-types.test.js +28 -0
  197. package/dist/guard/__tests__/guard-types.test.js.map +1 -0
  198. package/dist/guard/__tests__/provenance.test.d.ts +2 -0
  199. package/dist/guard/__tests__/provenance.test.d.ts.map +1 -0
  200. package/dist/guard/__tests__/provenance.test.js +80 -0
  201. package/dist/guard/__tests__/provenance.test.js.map +1 -0
  202. package/dist/guard/__tests__/scan.test.d.ts +2 -0
  203. package/dist/guard/__tests__/scan.test.d.ts.map +1 -0
  204. package/dist/guard/__tests__/scan.test.js +62 -0
  205. package/dist/guard/__tests__/scan.test.js.map +1 -0
  206. package/dist/guard/__tests__/unicode.test.d.ts +2 -0
  207. package/dist/guard/__tests__/unicode.test.d.ts.map +1 -0
  208. package/dist/guard/__tests__/unicode.test.js +75 -0
  209. package/dist/guard/__tests__/unicode.test.js.map +1 -0
  210. package/dist/guard/boundary.d.ts +9 -0
  211. package/dist/guard/boundary.d.ts.map +1 -0
  212. package/dist/guard/boundary.js +17 -0
  213. package/dist/guard/boundary.js.map +1 -0
  214. package/dist/guard/config.d.ts +60 -0
  215. package/dist/guard/config.d.ts.map +1 -0
  216. package/dist/guard/config.js +64 -0
  217. package/dist/guard/config.js.map +1 -0
  218. package/dist/guard/pipeline.d.ts +13 -0
  219. package/dist/guard/pipeline.d.ts.map +1 -0
  220. package/dist/guard/pipeline.js +120 -0
  221. package/dist/guard/pipeline.js.map +1 -0
  222. package/dist/guard/provenance.d.ts +18 -0
  223. package/dist/guard/provenance.d.ts.map +1 -0
  224. package/dist/guard/provenance.js +108 -0
  225. package/dist/guard/provenance.js.map +1 -0
  226. package/dist/guard/scan.d.ts +6 -0
  227. package/dist/guard/scan.d.ts.map +1 -0
  228. package/dist/guard/scan.js +84 -0
  229. package/dist/guard/scan.js.map +1 -0
  230. package/dist/guard/types.d.ts +28 -0
  231. package/dist/guard/types.d.ts.map +1 -0
  232. package/dist/guard/types.js +2 -0
  233. package/dist/guard/types.js.map +1 -0
  234. package/dist/guard/unicode.d.ts +8 -0
  235. package/dist/guard/unicode.d.ts.map +1 -0
  236. package/dist/guard/unicode.js +126 -0
  237. package/dist/guard/unicode.js.map +1 -0
  238. package/dist/mcp-server/server.d.ts.map +1 -1
  239. package/dist/mcp-server/server.js +8 -1
  240. package/dist/mcp-server/server.js.map +1 -1
  241. package/dist/utils/UpdateApplier.d.ts.map +1 -1
  242. package/dist/utils/UpdateApplier.js +3 -1
  243. package/dist/utils/UpdateApplier.js.map +1 -1
  244. package/dist/utils/project-generator.d.ts.map +1 -1
  245. package/dist/utils/project-generator.js +36 -5
  246. package/dist/utils/project-generator.js.map +1 -1
  247. package/dist/verification/__tests__/telemetry.test.js +3 -0
  248. package/dist/verification/__tests__/telemetry.test.js.map +1 -1
  249. package/dist/verification/config.d.ts +82 -0
  250. package/dist/verification/config.d.ts.map +1 -1
  251. package/dist/verification/config.js +146 -0
  252. package/dist/verification/config.js.map +1 -1
  253. package/package.json +5 -1
  254. package/templates/ide/antigravity/.agents/skills/dare-guard/SKILL.md +16 -0
  255. package/templates/ide/claude/.claude/commands/dare-guard.md +16 -0
  256. package/templates/ide/cursor/.cursor/commands/dare-guard.md +16 -0
@@ -1 +1 @@
1
- {"version":3,"file":"dare.js","sourceRoot":"","sources":["../../src/bin/dare.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dare.js","sourceRoot":"","sources":["../../src/bin/dare.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=execute-agent.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"execute-agent.test.d.ts","sourceRoot":"","sources":["../../../src/commands/__tests__/execute-agent.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,191 @@
1
+ import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
2
+ import fs from 'fs-extra';
3
+ import os from 'node:os';
4
+ import path from 'node:path';
5
+ describe('dare execute --agent', () => {
6
+ let projectRoot;
7
+ let exitCode;
8
+ let stdout;
9
+ let stderr;
10
+ beforeEach(async () => {
11
+ vi.resetModules();
12
+ projectRoot = await fs.mkdtemp(path.join(os.tmpdir(), 'dare-exec-agent-'));
13
+ await fs.ensureDir(path.join(projectRoot, 'DARE'));
14
+ await fs.writeJson(path.join(projectRoot, 'dare.config.json'), {}, { spaces: 2 });
15
+ vi.spyOn(process, 'cwd').mockReturnValue(projectRoot);
16
+ exitCode = undefined;
17
+ stdout = '';
18
+ stderr = '';
19
+ vi.spyOn(process, 'exit').mockImplementation((code) => {
20
+ exitCode = code;
21
+ throw new Error(`exit:${code}`);
22
+ });
23
+ vi.spyOn(console, 'log').mockImplementation((...args) => {
24
+ stdout += args.map(String).join(' ') + '\n';
25
+ });
26
+ vi.spyOn(console, 'error').mockImplementation((...args) => {
27
+ stderr += args.map(String).join(' ') + '\n';
28
+ });
29
+ });
30
+ afterEach(async () => {
31
+ const execute = await import('../execute.js');
32
+ execute.setResolveDriverForTests(null);
33
+ execute.setPreflightGuardForTests(null);
34
+ execute.setRankApprovalForTests(null);
35
+ const claude = await import('../../agent/drivers/claude.js');
36
+ claude.setClaudeSdkImporterForTests(null);
37
+ vi.restoreAllMocks();
38
+ await fs.remove(projectRoot).catch(() => undefined);
39
+ });
40
+ async function loadExecute() {
41
+ return import('../execute.js');
42
+ }
43
+ async function run(execute, args) {
44
+ try {
45
+ await execute.executeCommand.parseAsync(args, { from: 'user' });
46
+ }
47
+ catch (err) {
48
+ if (!(err instanceof Error) || !err.message.startsWith('exit:'))
49
+ throw err;
50
+ }
51
+ }
52
+ async function writeDag(tasks) {
53
+ const lines = [
54
+ 'title: "Agent Fixture"',
55
+ 'version: "1.0.0"',
56
+ 'models:',
57
+ ' HIGH: claude-sonnet',
58
+ ' MED: claude-sonnet',
59
+ ' LOW: claude-sonnet',
60
+ 'tasks:',
61
+ ];
62
+ for (const task of tasks) {
63
+ const dependsOn = task.dependsOn ?? [];
64
+ lines.push(` - id: ${task.id}`);
65
+ lines.push(` title: "${task.id}"`);
66
+ lines.push(dependsOn.length === 0
67
+ ? ' depends_on: []'
68
+ : ` depends_on: [${dependsOn.join(', ')}]`);
69
+ lines.push(' complexity: LOW');
70
+ lines.push(' subtask_prompt: |');
71
+ lines.push(` ${task.prompt ?? `execute ${task.id}`}`);
72
+ }
73
+ await fs.writeFile(path.join(projectRoot, 'DARE', 'dare-dag.yaml'), `${lines.join('\n')}\n`);
74
+ }
75
+ it('dry_run_drives_dag_to_done', async () => {
76
+ await writeDag([
77
+ { id: 'task-a' },
78
+ { id: 'task-b', dependsOn: ['task-a'] },
79
+ ]);
80
+ const execute = await loadExecute();
81
+ await run(execute, ['--agent', '--dry-run', '--require-approval', 'none', '--no-graph']);
82
+ const state = (await fs.readJson(path.join(projectRoot, '.dare', 'state.json')));
83
+ expect(state.tasks['task-a']?.status).toBe('DONE');
84
+ expect(state.tasks['task-b']?.status).toBe('DONE');
85
+ expect(exitCode).toBeUndefined();
86
+ expect(stderr).toBe('');
87
+ });
88
+ it('reuses_decideNextAction', async () => {
89
+ await writeDag([{ id: 'task-fail' }]);
90
+ await fs.ensureDir(path.join(projectRoot, '.dare'));
91
+ await fs.writeJson(path.join(projectRoot, '.dare', 'state.json'), {
92
+ version: 1,
93
+ updatedAt: new Date().toISOString(),
94
+ tasks: {
95
+ 'task-fail': {
96
+ status: 'PENDING',
97
+ attempts: [
98
+ {
99
+ n: 1,
100
+ at: '2026-01-01T00:00:00.000Z',
101
+ passed: false,
102
+ failureSignature: 'deadbeef',
103
+ failedAspect: 'test',
104
+ },
105
+ {
106
+ n: 2,
107
+ at: '2026-01-01T00:01:00.000Z',
108
+ passed: false,
109
+ failureSignature: 'deadbeef',
110
+ failedAspect: 'test',
111
+ },
112
+ ],
113
+ },
114
+ },
115
+ }, { spaces: 2 });
116
+ const policy = await import('../../verification/decay/policy.js');
117
+ const decideSpy = vi.spyOn(policy, 'decideNextAction');
118
+ const execute = await loadExecute();
119
+ execute.setResolveDriverForTests(async () => ({
120
+ id: 'test-failing-driver',
121
+ requiresNetwork: false,
122
+ async run(input) {
123
+ return {
124
+ status: 'failed',
125
+ worktree: input.worktree,
126
+ summary: 'candidate failed',
127
+ usage: { inputTokens: 0, outputTokens: 0, costUsd: 0, model: 'test' },
128
+ failureSignature: 'deadbeef',
129
+ };
130
+ },
131
+ }));
132
+ await run(execute, ['--agent', '--dry-run', '--require-approval', 'none', '--no-graph']);
133
+ const state = (await fs.readJson(path.join(projectRoot, '.dare', 'state.json')));
134
+ expect(decideSpy).toHaveBeenCalled();
135
+ expect(state.tasks['task-fail']?.error).toContain('FRESH_START');
136
+ expect(exitCode).toBe(1);
137
+ });
138
+ it('best_of_n_counts_all_in_budget', async () => {
139
+ await writeDag([{ id: 'task-budget' }]);
140
+ const execute = await loadExecute();
141
+ execute.setResolveDriverForTests(async () => ({
142
+ id: 'budget-driver',
143
+ requiresNetwork: false,
144
+ async run(input) {
145
+ return {
146
+ status: 'implemented',
147
+ worktree: input.worktree,
148
+ summary: 'ok',
149
+ usage: { inputTokens: 10, outputTokens: 0, costUsd: 0.01, model: 'test' },
150
+ };
151
+ },
152
+ }));
153
+ await run(execute, [
154
+ '--agent',
155
+ '--dry-run',
156
+ '--best-of',
157
+ '3',
158
+ '--require-approval',
159
+ 'none',
160
+ '--no-graph',
161
+ ]);
162
+ const state = (await fs.readJson(path.join(projectRoot, '.dare', 'state.json')));
163
+ expect(state.tasks['task-budget']?.status).toBe('DONE');
164
+ expect(state.tasks['task-budget']?.tokens).toBe(30);
165
+ expect(exitCode).toBeUndefined();
166
+ });
167
+ it('missing_sdk_exits_1', async () => {
168
+ await writeDag([{ id: 'task-sdk' }]);
169
+ const claude = await import('../../agent/drivers/claude.js');
170
+ claude.setClaudeSdkImporterForTests(async () => {
171
+ throw new Error('sdk missing');
172
+ });
173
+ const execute = await loadExecute();
174
+ await run(execute, ['--agent', '--require-approval', 'none', '--no-graph']);
175
+ expect(exitCode).toBe(1);
176
+ expect(stderr).toContain("Optional dependency '@anthropic-ai/sdk' not installed");
177
+ });
178
+ it('guard_fail_blocks_task', async () => {
179
+ await writeDag([{ id: 'task-guard' }]);
180
+ const execute = await loadExecute();
181
+ execute.setPreflightGuardForTests(async () => ({
182
+ verdict: 'FAIL',
183
+ artifacts: [],
184
+ reason: 'blocked by guard stub',
185
+ }));
186
+ await run(execute, ['--agent', '--dry-run', '--require-approval', 'none', '--no-graph']);
187
+ expect(exitCode).toBe(6);
188
+ expect(stdout).not.toContain('DONE');
189
+ });
190
+ });
191
+ //# sourceMappingURL=execute-agent.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"execute-agent.test.js","sourceRoot":"","sources":["../../../src/commands/__tests__/execute-agent.test.ts"],"names":[],"mappings":"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"}
@@ -66,6 +66,9 @@ class RejectingGraph {
66
66
  findByQualifiedName(qn) {
67
67
  return this.inner.findByQualifiedName(qn);
68
68
  }
69
+ loadVectors() {
70
+ return this.inner.loadVectors();
71
+ }
69
72
  close() {
70
73
  this.inner.close();
71
74
  }
@@ -1 +1 @@
1
- {"version":3,"file":"execute.telemetry.spec.js","sourceRoot":"","sources":["../../../src/commands/__tests__/execute.telemetry.spec.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"execute.telemetry.spec.js","sourceRoot":"","sources":["../../../src/commands/__tests__/execute.telemetry.spec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=graph-drift.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graph-drift.test.d.ts","sourceRoot":"","sources":["../../../src/commands/__tests__/graph-drift.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,169 @@
1
+ import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
2
+ import fs from 'fs-extra';
3
+ import os from 'node:os';
4
+ import path from 'node:path';
5
+ import { JsonGraph } from '../../graphrag/json-graph.js';
6
+ describe('dare graph drift command', () => {
7
+ let projectRoot;
8
+ let stdout;
9
+ let stderr;
10
+ let exitCode;
11
+ beforeEach(async () => {
12
+ projectRoot = await fs.mkdtemp(path.join(os.tmpdir(), 'graph-drift-cmd-'));
13
+ await fs.ensureDir(path.join(projectRoot, 'DARE'));
14
+ await fs.writeFile(path.join(projectRoot, 'dare-graph.yml'), 'backend: json\njson:\n path: .dare/graph.json\n');
15
+ stdout = '';
16
+ stderr = '';
17
+ exitCode = undefined;
18
+ vi.spyOn(process, 'cwd').mockReturnValue(projectRoot);
19
+ vi.spyOn(process, 'exit').mockImplementation((code) => {
20
+ exitCode = code;
21
+ return undefined;
22
+ });
23
+ vi.spyOn(console, 'log').mockImplementation((...args) => {
24
+ stdout += args.map(String).join(' ') + '\n';
25
+ });
26
+ vi.spyOn(console, 'error').mockImplementation((...args) => {
27
+ stderr += args.map(String).join(' ') + '\n';
28
+ });
29
+ });
30
+ afterEach(async () => {
31
+ vi.restoreAllMocks();
32
+ await fs.remove(projectRoot).catch(() => undefined);
33
+ });
34
+ async function writeDriftConfig(overrides = {}) {
35
+ await fs.writeJson(path.join(projectRoot, 'dare.config.json'), {
36
+ drift: {
37
+ enabled: true,
38
+ maxOrphanReqs: 0,
39
+ maxOrphanCode: 0,
40
+ failOnStale: false,
41
+ ignore: [],
42
+ ...overrides,
43
+ },
44
+ });
45
+ }
46
+ async function seedGraph(seed) {
47
+ const graphPath = path.join(projectRoot, '.dare', 'graph.json');
48
+ const graph = new JsonGraph(graphPath);
49
+ await graph.init();
50
+ await seed(graph);
51
+ await Promise.resolve(graph.close());
52
+ }
53
+ async function run(args) {
54
+ vi.resetModules();
55
+ const { graphCommand } = await import('../graph.js');
56
+ await graphCommand.parseAsync(['node', 'graph', 'drift', ...args]);
57
+ }
58
+ it('reports_without_strict_exits_0', async () => {
59
+ await writeDriftConfig();
60
+ await seedGraph((graph) => {
61
+ graph.addNode({
62
+ id: 'code_symbol:src/auth/login.ts::authenticate',
63
+ type: 'code_symbol',
64
+ label: 'authenticate',
65
+ metadata: {
66
+ path: 'src/auth/login.ts',
67
+ qualifiedName: 'src/auth/login.ts::authenticate',
68
+ },
69
+ });
70
+ });
71
+ await run([]);
72
+ expect(exitCode).toBeUndefined();
73
+ expect(stdout).toContain('Graph Drift Report');
74
+ expect(stdout).toContain('orphan-code: 1');
75
+ expect(stderr).toBe('');
76
+ });
77
+ it('strict_above_threshold_exits_7', async () => {
78
+ await writeDriftConfig();
79
+ await seedGraph((graph) => {
80
+ graph.addNode({
81
+ id: 'code_symbol:src/billing/charge.ts::charge',
82
+ type: 'code_symbol',
83
+ label: 'charge',
84
+ metadata: {
85
+ path: 'src/billing/charge.ts',
86
+ qualifiedName: 'src/billing/charge.ts::charge',
87
+ },
88
+ });
89
+ });
90
+ await run(['--strict']);
91
+ expect(exitCode).toBe(7);
92
+ });
93
+ it('json_format_shape', async () => {
94
+ await writeDriftConfig();
95
+ await seedGraph((graph) => {
96
+ graph.addNode({
97
+ id: 'code_symbol:src/orders/create.ts::createOrder',
98
+ type: 'code_symbol',
99
+ label: 'createOrder',
100
+ metadata: {
101
+ path: 'src/orders/create.ts',
102
+ qualifiedName: 'src/orders/create.ts::createOrder',
103
+ },
104
+ });
105
+ });
106
+ await run(['--format', 'json']);
107
+ expect(exitCode).toBeUndefined();
108
+ const report = JSON.parse(stdout.trim());
109
+ expect(Array.isArray(report.findings)).toBe(true);
110
+ expect(report.counts['orphan-code']).toBe(1);
111
+ expect(report.counts['orphan-requirement']).toBe(0);
112
+ expect(typeof report.staleIndeterminate).toBe('number');
113
+ });
114
+ it('modules_filter', async () => {
115
+ await writeDriftConfig();
116
+ await seedGraph((graph) => {
117
+ graph.addNode({
118
+ id: 'requirement:RF-11',
119
+ type: 'requirement',
120
+ label: 'RF-11',
121
+ metadata: {
122
+ contentHash: 'rf-11-hash',
123
+ ingestedAt: '2026-06-10T00:00:00.000Z',
124
+ },
125
+ });
126
+ graph.addNode({
127
+ id: 'code_symbol:src/mod-a/service.ts::serve',
128
+ type: 'code_symbol',
129
+ label: 'serve',
130
+ metadata: {
131
+ path: 'src/mod-a/service.ts',
132
+ qualifiedName: 'src/mod-a/service.ts::serve',
133
+ requirementContentHash: 'rf-11-hash',
134
+ ingestedAt: '2026-06-10T00:00:00.000Z',
135
+ },
136
+ });
137
+ graph.addEdge({
138
+ id: 'implements:serve->rf11',
139
+ sourceId: 'code_symbol:src/mod-a/service.ts::serve',
140
+ targetId: 'requirement:RF-11',
141
+ type: 'implements',
142
+ });
143
+ graph.addNode({
144
+ id: 'code_symbol:src/mod-a/orphan.ts::orphanA',
145
+ type: 'code_symbol',
146
+ label: 'orphanA',
147
+ metadata: {
148
+ path: 'src/mod-a/orphan.ts',
149
+ qualifiedName: 'src/mod-a/orphan.ts::orphanA',
150
+ },
151
+ });
152
+ graph.addNode({
153
+ id: 'code_symbol:src/mod-b/orphan.ts::orphanB',
154
+ type: 'code_symbol',
155
+ label: 'orphanB',
156
+ metadata: {
157
+ path: 'src/mod-b/orphan.ts',
158
+ qualifiedName: 'src/mod-b/orphan.ts::orphanB',
159
+ },
160
+ });
161
+ });
162
+ await run(['--format', 'json', '--modules', 'src/mod-a']);
163
+ const report = JSON.parse(stdout.trim());
164
+ expect(report.counts['orphan-code']).toBe(1);
165
+ expect(report.findings.some((finding) => finding.nodeId.includes('src/mod-a/orphan.ts::orphanA'))).toBe(true);
166
+ expect(report.findings.some((finding) => finding.nodeId.includes('src/mod-b/orphan.ts::orphanB'))).toBe(false);
167
+ });
168
+ });
169
+ //# sourceMappingURL=graph-drift.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graph-drift.test.js","sourceRoot":"","sources":["../../../src/commands/__tests__/graph-drift.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=require-approval.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"require-approval.test.d.ts","sourceRoot":"","sources":["../../../src/commands/__tests__/require-approval.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,158 @@
1
+ import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
2
+ import fs from 'fs-extra';
3
+ import os from 'node:os';
4
+ import path from 'node:path';
5
+ describe('dare execute --agent --require-approval', () => {
6
+ let projectRoot;
7
+ let exitCode;
8
+ let stdout;
9
+ let stderr;
10
+ let originalStdoutIsTTY;
11
+ let originalStdinIsTTY;
12
+ beforeEach(async () => {
13
+ vi.resetModules();
14
+ projectRoot = await fs.mkdtemp(path.join(os.tmpdir(), 'dare-require-approval-'));
15
+ await fs.ensureDir(path.join(projectRoot, 'DARE'));
16
+ await fs.writeJson(path.join(projectRoot, 'dare.config.json'), {}, { spaces: 2 });
17
+ vi.spyOn(process, 'cwd').mockReturnValue(projectRoot);
18
+ originalStdoutIsTTY = process.stdout.isTTY;
19
+ originalStdinIsTTY = process.stdin.isTTY;
20
+ exitCode = undefined;
21
+ stdout = '';
22
+ stderr = '';
23
+ vi.spyOn(process, 'exit').mockImplementation((code) => {
24
+ exitCode = code;
25
+ throw new Error(`exit:${code}`);
26
+ });
27
+ vi.spyOn(console, 'log').mockImplementation((...args) => {
28
+ stdout += args.map(String).join(' ') + '\n';
29
+ });
30
+ vi.spyOn(console, 'error').mockImplementation((...args) => {
31
+ stderr += args.map(String).join(' ') + '\n';
32
+ });
33
+ });
34
+ afterEach(async () => {
35
+ const execute = await import('../execute.js');
36
+ execute.setResolveDriverForTests(null);
37
+ execute.setPreflightGuardForTests(null);
38
+ execute.setRankApprovalForTests(null);
39
+ Object.defineProperty(process.stdout, 'isTTY', {
40
+ value: originalStdoutIsTTY,
41
+ writable: true,
42
+ configurable: true,
43
+ });
44
+ Object.defineProperty(process.stdin, 'isTTY', {
45
+ value: originalStdinIsTTY,
46
+ writable: true,
47
+ configurable: true,
48
+ });
49
+ vi.restoreAllMocks();
50
+ await fs.remove(projectRoot).catch(() => undefined);
51
+ });
52
+ function setTty(stdin, stdout = stdin) {
53
+ Object.defineProperty(process.stdin, 'isTTY', {
54
+ value: stdin,
55
+ writable: true,
56
+ configurable: true,
57
+ });
58
+ Object.defineProperty(process.stdout, 'isTTY', {
59
+ value: stdout,
60
+ writable: true,
61
+ configurable: true,
62
+ });
63
+ }
64
+ async function loadExecute() {
65
+ return import('../execute.js');
66
+ }
67
+ async function run(execute, args) {
68
+ try {
69
+ await execute.executeCommand.parseAsync(args, { from: 'user' });
70
+ }
71
+ catch (err) {
72
+ if (!(err instanceof Error) || !err.message.startsWith('exit:'))
73
+ throw err;
74
+ }
75
+ }
76
+ async function writeDag(tasks) {
77
+ const lines = [
78
+ 'title: "Approval Fixture"',
79
+ 'version: "1.0.0"',
80
+ 'models:',
81
+ ' HIGH: claude-sonnet',
82
+ ' MED: claude-sonnet',
83
+ ' LOW: claude-sonnet',
84
+ 'tasks:',
85
+ ];
86
+ for (const task of tasks) {
87
+ const dependsOn = task.dependsOn ?? [];
88
+ lines.push(` - id: ${task.id}`);
89
+ lines.push(` title: "${task.id}"`);
90
+ lines.push(dependsOn.length === 0
91
+ ? ' depends_on: []'
92
+ : ` depends_on: [${dependsOn.join(', ')}]`);
93
+ lines.push(' complexity: LOW');
94
+ lines.push(' subtask_prompt: |');
95
+ lines.push(` execute ${task.id}`);
96
+ }
97
+ await fs.writeFile(path.join(projectRoot, 'DARE', 'dare-dag.yaml'), `${lines.join('\n')}\n`);
98
+ }
99
+ it('rank_pauses_between_ranks', async () => {
100
+ setTty(true);
101
+ await writeDag([
102
+ { id: 'task-a' },
103
+ { id: 'task-b', dependsOn: ['task-a'] },
104
+ ]);
105
+ const execute = await loadExecute();
106
+ const approvalCalls = [];
107
+ execute.setRankApprovalForTests(async (rank) => {
108
+ approvalCalls.push(rank);
109
+ return true;
110
+ });
111
+ await run(execute, ['--agent', '--dry-run', '--require-approval', 'rank', '--no-graph']);
112
+ expect(approvalCalls).toEqual([0, 1]);
113
+ expect(exitCode).toBeUndefined();
114
+ expect(stderr).toBe('');
115
+ });
116
+ it('none_does_not_prompt', async () => {
117
+ setTty(false);
118
+ await writeDag([
119
+ { id: 'task-a' },
120
+ { id: 'task-b', dependsOn: ['task-a'] },
121
+ ]);
122
+ const execute = await loadExecute();
123
+ const approvalSpy = vi.fn(async () => true);
124
+ execute.setRankApprovalForTests(approvalSpy);
125
+ await run(execute, ['--agent', '--dry-run', '--require-approval', 'none', '--no-graph']);
126
+ expect(approvalSpy).not.toHaveBeenCalled();
127
+ expect(exitCode).toBeUndefined();
128
+ expect(stderr).toBe('');
129
+ });
130
+ it('decline_preserves_pending', async () => {
131
+ setTty(true);
132
+ await writeDag([
133
+ { id: 'task-a' },
134
+ { id: 'task-b', dependsOn: ['task-a'] },
135
+ ]);
136
+ const execute = await loadExecute();
137
+ let approvalCount = 0;
138
+ execute.setRankApprovalForTests(async () => {
139
+ approvalCount += 1;
140
+ return approvalCount === 1;
141
+ });
142
+ await run(execute, ['--agent', '--dry-run', '--require-approval', 'rank', '--no-graph']);
143
+ const state = (await fs.readJson(path.join(projectRoot, '.dare', 'state.json')));
144
+ expect(state.tasks['task-a']?.status).toBe('DONE');
145
+ expect(state.tasks['task-b']?.status).toBe('PENDING');
146
+ expect(stdout).toContain('paused by approval policy');
147
+ expect(exitCode).toBeUndefined();
148
+ });
149
+ it('non_interactive_rank_requires_none', async () => {
150
+ setTty(false);
151
+ await writeDag([{ id: 'task-a' }]);
152
+ const execute = await loadExecute();
153
+ await run(execute, ['--agent', '--dry-run', '--require-approval', 'rank', '--no-graph']);
154
+ expect(exitCode).toBe(1);
155
+ expect(stderr).toContain("--require-approval none");
156
+ });
157
+ });
158
+ //# sourceMappingURL=require-approval.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"require-approval.test.js","sourceRoot":"","sources":["../../../src/commands/__tests__/require-approval.test.ts"],"names":[],"mappings":"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"}