@dewtech/dare-cli 3.9.0 → 3.11.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 (254) hide show
  1. package/README.md +5 -0
  2. package/dist/__tests__/ci-pr-regression.test.d.ts +2 -0
  3. package/dist/__tests__/ci-pr-regression.test.d.ts.map +1 -0
  4. package/dist/__tests__/ci-pr-regression.test.js +76 -0
  5. package/dist/__tests__/ci-pr-regression.test.js.map +1 -0
  6. package/dist/__tests__/dashboard-front.test.d.ts +2 -0
  7. package/dist/__tests__/dashboard-front.test.d.ts.map +1 -0
  8. package/dist/__tests__/dashboard-front.test.js +37 -0
  9. package/dist/__tests__/dashboard-front.test.js.map +1 -0
  10. package/dist/__tests__/dashboard-regression.test.d.ts +2 -0
  11. package/dist/__tests__/dashboard-regression.test.d.ts.map +1 -0
  12. package/dist/__tests__/dashboard-regression.test.js +68 -0
  13. package/dist/__tests__/dashboard-regression.test.js.map +1 -0
  14. package/dist/__tests__/drift-regression.test.d.ts +2 -0
  15. package/dist/__tests__/drift-regression.test.d.ts.map +1 -0
  16. package/dist/__tests__/drift-regression.test.js +118 -0
  17. package/dist/__tests__/drift-regression.test.js.map +1 -0
  18. package/dist/__tests__/dynamic-dag-regression.test.d.ts +2 -0
  19. package/dist/__tests__/dynamic-dag-regression.test.d.ts.map +1 -0
  20. package/dist/__tests__/dynamic-dag-regression.test.js +464 -0
  21. package/dist/__tests__/dynamic-dag-regression.test.js.map +1 -0
  22. package/dist/__tests__/ide-command-parity.test.js +1 -0
  23. package/dist/__tests__/ide-command-parity.test.js.map +1 -1
  24. package/dist/__tests__/project-generator.test.js +10 -1
  25. package/dist/__tests__/project-generator.test.js.map +1 -1
  26. package/dist/__tests__/semantic-regression.test.d.ts +2 -0
  27. package/dist/__tests__/semantic-regression.test.d.ts.map +1 -0
  28. package/dist/__tests__/semantic-regression.test.js +248 -0
  29. package/dist/__tests__/semantic-regression.test.js.map +1 -0
  30. package/dist/bin/dare.js +2 -0
  31. package/dist/bin/dare.js.map +1 -1
  32. package/dist/commands/__tests__/dashboard-command.test.d.ts +2 -0
  33. package/dist/commands/__tests__/dashboard-command.test.d.ts.map +1 -0
  34. package/dist/commands/__tests__/dashboard-command.test.js +62 -0
  35. package/dist/commands/__tests__/dashboard-command.test.js.map +1 -0
  36. package/dist/commands/__tests__/execute.telemetry.spec.js +3 -0
  37. package/dist/commands/__tests__/execute.telemetry.spec.js.map +1 -1
  38. package/dist/commands/__tests__/gate-flags.test.d.ts +2 -0
  39. package/dist/commands/__tests__/gate-flags.test.d.ts.map +1 -0
  40. package/dist/commands/__tests__/gate-flags.test.js +58 -0
  41. package/dist/commands/__tests__/gate-flags.test.js.map +1 -0
  42. package/dist/commands/__tests__/graph-drift.test.d.ts +2 -0
  43. package/dist/commands/__tests__/graph-drift.test.d.ts.map +1 -0
  44. package/dist/commands/__tests__/graph-drift.test.js +169 -0
  45. package/dist/commands/__tests__/graph-drift.test.js.map +1 -0
  46. package/dist/commands/__tests__/persist-viz.test.d.ts +2 -0
  47. package/dist/commands/__tests__/persist-viz.test.d.ts.map +1 -0
  48. package/dist/commands/__tests__/persist-viz.test.js +178 -0
  49. package/dist/commands/__tests__/persist-viz.test.js.map +1 -0
  50. package/dist/commands/__tests__/refine-apply.test.d.ts +2 -0
  51. package/dist/commands/__tests__/refine-apply.test.d.ts.map +1 -0
  52. package/dist/commands/__tests__/refine-apply.test.js +118 -0
  53. package/dist/commands/__tests__/refine-apply.test.js.map +1 -0
  54. package/dist/commands/__tests__/replan-splice.test.d.ts +2 -0
  55. package/dist/commands/__tests__/replan-splice.test.d.ts.map +1 -0
  56. package/dist/commands/__tests__/replan-splice.test.js +295 -0
  57. package/dist/commands/__tests__/replan-splice.test.js.map +1 -0
  58. package/dist/commands/dag.d.ts.map +1 -1
  59. package/dist/commands/dag.js +2 -0
  60. package/dist/commands/dag.js.map +1 -1
  61. package/dist/commands/dashboard.d.ts +17 -0
  62. package/dist/commands/dashboard.d.ts.map +1 -0
  63. package/dist/commands/dashboard.js +77 -0
  64. package/dist/commands/dashboard.js.map +1 -0
  65. package/dist/commands/execute.d.ts.map +1 -1
  66. package/dist/commands/execute.js +117 -2
  67. package/dist/commands/execute.js.map +1 -1
  68. package/dist/commands/graph.d.ts.map +1 -1
  69. package/dist/commands/graph.js +232 -1
  70. package/dist/commands/graph.js.map +1 -1
  71. package/dist/commands/guard.d.ts.map +1 -1
  72. package/dist/commands/guard.js +27 -3
  73. package/dist/commands/guard.js.map +1 -1
  74. package/dist/commands/refine.d.ts +2 -0
  75. package/dist/commands/refine.d.ts.map +1 -1
  76. package/dist/commands/refine.js +71 -20
  77. package/dist/commands/refine.js.map +1 -1
  78. package/dist/commands/review.d.ts.map +1 -1
  79. package/dist/commands/review.js +36 -5
  80. package/dist/commands/review.js.map +1 -1
  81. package/dist/dag-runner/__tests__/maxdepth-config.test.d.ts +2 -0
  82. package/dist/dag-runner/__tests__/maxdepth-config.test.d.ts.map +1 -0
  83. package/dist/dag-runner/__tests__/maxdepth-config.test.js +28 -0
  84. package/dist/dag-runner/__tests__/maxdepth-config.test.js.map +1 -0
  85. package/dist/dag-runner/__tests__/sub-dag.test.d.ts +2 -0
  86. package/dist/dag-runner/__tests__/sub-dag.test.d.ts.map +1 -0
  87. package/dist/dag-runner/__tests__/sub-dag.test.js +127 -0
  88. package/dist/dag-runner/__tests__/sub-dag.test.js.map +1 -0
  89. package/dist/dag-runner/graph-ingest.d.ts.map +1 -1
  90. package/dist/dag-runner/graph-ingest.js +13 -7
  91. package/dist/dag-runner/graph-ingest.js.map +1 -1
  92. package/dist/dag-runner/run_dag.d.ts +2 -0
  93. package/dist/dag-runner/run_dag.d.ts.map +1 -1
  94. package/dist/dag-runner/run_dag.js.map +1 -1
  95. package/dist/dag-runner/state-store.d.ts +2 -0
  96. package/dist/dag-runner/state-store.d.ts.map +1 -1
  97. package/dist/dag-runner/state-store.js +44 -8
  98. package/dist/dag-runner/state-store.js.map +1 -1
  99. package/dist/dag-runner/sub-dag.d.ts +23 -0
  100. package/dist/dag-runner/sub-dag.d.ts.map +1 -0
  101. package/dist/dag-runner/sub-dag.js +117 -0
  102. package/dist/dag-runner/sub-dag.js.map +1 -0
  103. package/dist/dashboard/__tests__/dashboard-routes.test.d.ts +2 -0
  104. package/dist/dashboard/__tests__/dashboard-routes.test.d.ts.map +1 -0
  105. package/dist/dashboard/__tests__/dashboard-routes.test.js +102 -0
  106. package/dist/dashboard/__tests__/dashboard-routes.test.js.map +1 -0
  107. package/dist/dashboard/routes.d.ts +8 -0
  108. package/dist/dashboard/routes.d.ts.map +1 -0
  109. package/dist/dashboard/routes.js +70 -0
  110. package/dist/dashboard/routes.js.map +1 -0
  111. package/dist/graphrag/__tests__/drift-config.test.d.ts +2 -0
  112. package/dist/graphrag/__tests__/drift-config.test.d.ts.map +1 -0
  113. package/dist/graphrag/__tests__/drift-config.test.js +33 -0
  114. package/dist/graphrag/__tests__/drift-config.test.js.map +1 -0
  115. package/dist/graphrag/__tests__/drift.test.d.ts +2 -0
  116. package/dist/graphrag/__tests__/drift.test.d.ts.map +1 -0
  117. package/dist/graphrag/__tests__/drift.test.js +152 -0
  118. package/dist/graphrag/__tests__/drift.test.js.map +1 -0
  119. package/dist/graphrag/__tests__/hybrid-integration.test.d.ts +2 -0
  120. package/dist/graphrag/__tests__/hybrid-integration.test.d.ts.map +1 -0
  121. package/dist/graphrag/__tests__/hybrid-integration.test.js +158 -0
  122. package/dist/graphrag/__tests__/hybrid-integration.test.js.map +1 -0
  123. package/dist/graphrag/__tests__/hybrid.test.d.ts +2 -0
  124. package/dist/graphrag/__tests__/hybrid.test.d.ts.map +1 -0
  125. package/dist/graphrag/__tests__/hybrid.test.js +71 -0
  126. package/dist/graphrag/__tests__/hybrid.test.js.map +1 -0
  127. package/dist/graphrag/__tests__/incremental-index.test.d.ts +2 -0
  128. package/dist/graphrag/__tests__/incremental-index.test.d.ts.map +1 -0
  129. package/dist/graphrag/__tests__/incremental-index.test.js +135 -0
  130. package/dist/graphrag/__tests__/incremental-index.test.js.map +1 -0
  131. package/dist/graphrag/__tests__/no-heavy-dep-in-core.test.d.ts +2 -0
  132. package/dist/graphrag/__tests__/no-heavy-dep-in-core.test.d.ts.map +1 -0
  133. package/dist/graphrag/__tests__/no-heavy-dep-in-core.test.js +48 -0
  134. package/dist/graphrag/__tests__/no-heavy-dep-in-core.test.js.map +1 -0
  135. package/dist/graphrag/__tests__/requirement-hash.test.d.ts +2 -0
  136. package/dist/graphrag/__tests__/requirement-hash.test.d.ts.map +1 -0
  137. package/dist/graphrag/__tests__/requirement-hash.test.js +74 -0
  138. package/dist/graphrag/__tests__/requirement-hash.test.js.map +1 -0
  139. package/dist/graphrag/__tests__/semantic-config.test.d.ts +2 -0
  140. package/dist/graphrag/__tests__/semantic-config.test.d.ts.map +1 -0
  141. package/dist/graphrag/__tests__/semantic-config.test.js +39 -0
  142. package/dist/graphrag/__tests__/semantic-config.test.js.map +1 -0
  143. package/dist/graphrag/__tests__/vector-persistence.test.d.ts +2 -0
  144. package/dist/graphrag/__tests__/vector-persistence.test.d.ts.map +1 -0
  145. package/dist/graphrag/__tests__/vector-persistence.test.js +112 -0
  146. package/dist/graphrag/__tests__/vector-persistence.test.js.map +1 -0
  147. package/dist/graphrag/__tests__/vector-search.test.d.ts +2 -0
  148. package/dist/graphrag/__tests__/vector-search.test.d.ts.map +1 -0
  149. package/dist/graphrag/__tests__/vector-search.test.js +36 -0
  150. package/dist/graphrag/__tests__/vector-search.test.js.map +1 -0
  151. package/dist/graphrag/drift.d.ts +22 -0
  152. package/dist/graphrag/drift.d.ts.map +1 -0
  153. package/dist/graphrag/drift.js +204 -0
  154. package/dist/graphrag/drift.js.map +1 -0
  155. package/dist/graphrag/embeddings.d.ts +15 -0
  156. package/dist/graphrag/embeddings.d.ts.map +1 -0
  157. package/dist/graphrag/embeddings.js +107 -0
  158. package/dist/graphrag/embeddings.js.map +1 -0
  159. package/dist/graphrag/graph-rag.d.ts +17 -1
  160. package/dist/graphrag/graph-rag.d.ts.map +1 -1
  161. package/dist/graphrag/graph-rag.js +170 -2
  162. package/dist/graphrag/graph-rag.js.map +1 -1
  163. package/dist/graphrag/hybrid.d.ts +8 -0
  164. package/dist/graphrag/hybrid.d.ts.map +1 -0
  165. package/dist/graphrag/hybrid.js +203 -0
  166. package/dist/graphrag/hybrid.js.map +1 -0
  167. package/dist/graphrag/incremental-index.d.ts +18 -0
  168. package/dist/graphrag/incremental-index.d.ts.map +1 -0
  169. package/dist/graphrag/incremental-index.js +159 -0
  170. package/dist/graphrag/incremental-index.js.map +1 -0
  171. package/dist/graphrag/index.d.ts +1 -1
  172. package/dist/graphrag/index.d.ts.map +1 -1
  173. package/dist/graphrag/json-graph.d.ts +2 -1
  174. package/dist/graphrag/json-graph.d.ts.map +1 -1
  175. package/dist/graphrag/json-graph.js +14 -0
  176. package/dist/graphrag/json-graph.js.map +1 -1
  177. package/dist/graphrag/knowledge-graph.d.ts +5 -0
  178. package/dist/graphrag/knowledge-graph.d.ts.map +1 -1
  179. package/dist/graphrag/neo4j-graph.d.ts +2 -1
  180. package/dist/graphrag/neo4j-graph.d.ts.map +1 -1
  181. package/dist/graphrag/neo4j-graph.js +40 -5
  182. package/dist/graphrag/neo4j-graph.js.map +1 -1
  183. package/dist/graphrag/requirement-ingest.d.ts +4 -1
  184. package/dist/graphrag/requirement-ingest.d.ts.map +1 -1
  185. package/dist/graphrag/requirement-ingest.js +18 -8
  186. package/dist/graphrag/requirement-ingest.js.map +1 -1
  187. package/dist/graphrag/types.d.ts +1 -0
  188. package/dist/graphrag/types.d.ts.map +1 -1
  189. package/dist/graphrag/vector-search.d.ts +10 -0
  190. package/dist/graphrag/vector-search.d.ts.map +1 -0
  191. package/dist/graphrag/vector-search.js +38 -0
  192. package/dist/graphrag/vector-search.js.map +1 -0
  193. package/dist/http/__tests__/shared-app.test.d.ts +2 -0
  194. package/dist/http/__tests__/shared-app.test.d.ts.map +1 -0
  195. package/dist/http/__tests__/shared-app.test.js +57 -0
  196. package/dist/http/__tests__/shared-app.test.js.map +1 -0
  197. package/dist/http/app.d.ts +15 -0
  198. package/dist/http/app.d.ts.map +1 -0
  199. package/dist/http/app.js +32 -0
  200. package/dist/http/app.js.map +1 -0
  201. package/dist/mcp-server/server.d.ts.map +1 -1
  202. package/dist/mcp-server/server.js +13 -16
  203. package/dist/mcp-server/server.js.map +1 -1
  204. package/dist/reporters/__tests__/github-reporter.test.d.ts +2 -0
  205. package/dist/reporters/__tests__/github-reporter.test.d.ts.map +1 -0
  206. package/dist/reporters/__tests__/github-reporter.test.js +93 -0
  207. package/dist/reporters/__tests__/github-reporter.test.js.map +1 -0
  208. package/dist/reporters/ci-gate.d.ts +27 -0
  209. package/dist/reporters/ci-gate.d.ts.map +1 -0
  210. package/dist/reporters/ci-gate.js +100 -0
  211. package/dist/reporters/ci-gate.js.map +1 -0
  212. package/dist/reporters/github.d.ts +36 -0
  213. package/dist/reporters/github.d.ts.map +1 -0
  214. package/dist/reporters/github.js +142 -0
  215. package/dist/reporters/github.js.map +1 -0
  216. package/dist/telemetry/__tests__/aggregator.test.d.ts +2 -0
  217. package/dist/telemetry/__tests__/aggregator.test.d.ts.map +1 -0
  218. package/dist/telemetry/__tests__/aggregator.test.js +164 -0
  219. package/dist/telemetry/__tests__/aggregator.test.js.map +1 -0
  220. package/dist/telemetry/aggregator.d.ts +43 -0
  221. package/dist/telemetry/aggregator.d.ts.map +1 -0
  222. package/dist/telemetry/aggregator.js +282 -0
  223. package/dist/telemetry/aggregator.js.map +1 -0
  224. package/dist/utils/UpdateApplier.d.ts.map +1 -1
  225. package/dist/utils/UpdateApplier.js +3 -1
  226. package/dist/utils/UpdateApplier.js.map +1 -1
  227. package/dist/utils/excalidraw-renderer.d.ts.map +1 -1
  228. package/dist/utils/excalidraw-renderer.js +1 -0
  229. package/dist/utils/excalidraw-renderer.js.map +1 -1
  230. package/dist/utils/graph-renderer.d.ts +2 -0
  231. package/dist/utils/graph-renderer.d.ts.map +1 -1
  232. package/dist/utils/graph-renderer.js +188 -14
  233. package/dist/utils/graph-renderer.js.map +1 -1
  234. package/dist/utils/project-generator.d.ts.map +1 -1
  235. package/dist/utils/project-generator.js +34 -5
  236. package/dist/utils/project-generator.js.map +1 -1
  237. package/dist/verification/__tests__/decay-policy.test.js +1 -0
  238. package/dist/verification/__tests__/decay-policy.test.js.map +1 -1
  239. package/dist/verification/__tests__/telemetry.test.js +3 -0
  240. package/dist/verification/__tests__/telemetry.test.js.map +1 -1
  241. package/dist/verification/config.d.ts +82 -0
  242. package/dist/verification/config.d.ts.map +1 -1
  243. package/dist/verification/config.js +148 -0
  244. package/dist/verification/config.js.map +1 -1
  245. package/dist/verification/types.d.ts +2 -0
  246. package/dist/verification/types.d.ts.map +1 -1
  247. package/package.json +3 -2
  248. package/templates/.github/workflows/dare-pr.yml +26 -0
  249. package/templates/dashboard/app.js +184 -0
  250. package/templates/dashboard/index.html +63 -0
  251. package/templates/dashboard/style.css +134 -0
  252. package/templates/ide/antigravity/.agents/skills/dare-dashboard/SKILL.md +18 -0
  253. package/templates/ide/claude/.claude/commands/dare-dashboard.md +18 -0
  254. package/templates/ide/cursor/.cursor/commands/dare-dashboard.md +18 -0
@@ -0,0 +1,464 @@
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 { fileURLToPath } from 'node:url';
6
+ import { computeRanks } from '../dag-runner/run_dag.js';
7
+ import { spliceSubDag } from '../dag-runner/sub-dag.js';
8
+ const SRC_ROOT = path.join(path.dirname(fileURLToPath(import.meta.url)), '..');
9
+ const NO_LLM_PATTERN = /openai|anthropic|@google\/generative-ai|langchain/i;
10
+ describe('dynamic dag regression audit (task-906)', () => {
11
+ let projectRoot;
12
+ let exitCode;
13
+ let stdout;
14
+ let stderr;
15
+ beforeEach(async () => {
16
+ vi.resetModules();
17
+ projectRoot = await fs.mkdtemp(path.join(os.tmpdir(), 'dynamic-dag-regression-'));
18
+ await fs.ensureDir(path.join(projectRoot, 'DARE'));
19
+ await fs.writeJson(path.join(projectRoot, 'dare.config.json'), {}, { spaces: 2 });
20
+ vi.spyOn(process, 'cwd').mockReturnValue(projectRoot);
21
+ exitCode = undefined;
22
+ stdout = '';
23
+ stderr = '';
24
+ vi.spyOn(process, 'exit').mockImplementation((code) => {
25
+ exitCode = code;
26
+ throw new Error(`exit:${code}`);
27
+ });
28
+ vi.spyOn(console, 'log').mockImplementation((...args) => {
29
+ stdout += `${args.map(String).join(' ')}\n`;
30
+ });
31
+ vi.spyOn(console, 'error').mockImplementation((...args) => {
32
+ stderr += `${args.map(String).join(' ')}\n`;
33
+ });
34
+ });
35
+ afterEach(async () => {
36
+ const execute = await import('../commands/execute.js');
37
+ execute.setResolveDriverForTests(null);
38
+ execute.setPreflightGuardForTests(null);
39
+ execute.setRankApprovalForTests(null);
40
+ vi.restoreAllMocks();
41
+ await fs.remove(projectRoot).catch(() => undefined);
42
+ });
43
+ async function loadExecute() {
44
+ return import('../commands/execute.js');
45
+ }
46
+ async function runExecute(execute, args) {
47
+ try {
48
+ await execute.executeCommand.parseAsync(args, { from: 'user' });
49
+ }
50
+ catch (err) {
51
+ if (!(err instanceof Error) || !err.message.startsWith('exit:'))
52
+ throw err;
53
+ }
54
+ }
55
+ async function writeDag(tasks) {
56
+ const lines = [
57
+ 'title: "Dynamic DAG Regression Fixture"',
58
+ 'version: "1.0.0"',
59
+ 'models:',
60
+ ' HIGH: claude-sonnet',
61
+ ' MED: claude-sonnet',
62
+ ' LOW: claude-sonnet',
63
+ 'tasks:',
64
+ ];
65
+ for (const task of tasks) {
66
+ const dependsOn = task.dependsOn ?? [];
67
+ lines.push(` - id: ${task.id}`);
68
+ lines.push(` title: "${task.id}"`);
69
+ lines.push(dependsOn.length === 0
70
+ ? ' depends_on: []'
71
+ : ` depends_on: [${dependsOn.join(', ')}]`);
72
+ lines.push(' complexity: LOW');
73
+ lines.push(' subtask_prompt: |');
74
+ lines.push(` ${task.prompt ?? `execute ${task.id}`}`);
75
+ }
76
+ await fs.writeFile(path.join(projectRoot, 'DARE', 'dare-dag.yaml'), `${lines.join('\n')}\n`);
77
+ }
78
+ async function writeConfig(config) {
79
+ await fs.writeJson(path.join(projectRoot, 'dare.config.json'), config, { spaces: 2 });
80
+ }
81
+ async function writeState(tasks) {
82
+ const stateTasks = Object.fromEntries(tasks.map((task) => [
83
+ task.id,
84
+ {
85
+ status: task.status,
86
+ parentId: task.parentId,
87
+ dependsOn: task.dependsOn ? [...task.dependsOn] : undefined,
88
+ error: task.error,
89
+ },
90
+ ]));
91
+ await fs.ensureDir(path.join(projectRoot, '.dare'));
92
+ await fs.writeJson(path.join(projectRoot, '.dare', 'state.json'), {
93
+ version: 1,
94
+ updatedAt: new Date().toISOString(),
95
+ tasks: stateTasks,
96
+ }, { spaces: 2 });
97
+ }
98
+ async function readState() {
99
+ return (await fs.readJson(path.join(projectRoot, '.dare', 'state.json')));
100
+ }
101
+ it('replan_resolves_via_subdag', async () => {
102
+ await writeDag([{ id: 'task-parent' }]);
103
+ const policy = await import('../verification/decay/policy.js');
104
+ vi.spyOn(policy, 'decideNextAction')
105
+ .mockReturnValueOnce({
106
+ action: 'REPLAN',
107
+ attempt: 1,
108
+ saturated: true,
109
+ reason: 'signature saturation',
110
+ })
111
+ .mockReturnValue({
112
+ action: 'DONE',
113
+ attempt: 2,
114
+ saturated: false,
115
+ reason: 'verification passed',
116
+ });
117
+ const refine = await import('../commands/refine.js');
118
+ vi.spyOn(refine, 'buildSplitProposal').mockResolvedValue({
119
+ originalTaskId: 'task-parent',
120
+ notes: 'split parent',
121
+ subtasks: [
122
+ {
123
+ id: 'task-parent-a',
124
+ title: 'task-parent-a',
125
+ files: ['src/a.ts'],
126
+ rationale: 'slice a',
127
+ estimatedLevel: 'LOW',
128
+ },
129
+ {
130
+ id: 'task-parent-b',
131
+ title: 'task-parent-b',
132
+ files: ['src/b.ts'],
133
+ rationale: 'slice b',
134
+ estimatedLevel: 'LOW',
135
+ },
136
+ ],
137
+ });
138
+ let parentRuns = 0;
139
+ const execute = await loadExecute();
140
+ execute.setResolveDriverForTests(async () => ({
141
+ id: 'dynamic-dag-driver',
142
+ requiresNetwork: false,
143
+ async run(input) {
144
+ if (input.taskId === 'task-parent' && parentRuns === 0) {
145
+ parentRuns += 1;
146
+ return {
147
+ status: 'failed',
148
+ worktree: input.worktree,
149
+ summary: 'first parent attempt fails',
150
+ usage: { inputTokens: 0, outputTokens: 0, costUsd: 0, model: 'test-driver' },
151
+ failureSignature: 'same-sig',
152
+ };
153
+ }
154
+ return {
155
+ status: 'implemented',
156
+ worktree: input.worktree,
157
+ summary: `ok ${input.taskId}`,
158
+ usage: { inputTokens: 0, outputTokens: 0, costUsd: 0, model: 'test-driver' },
159
+ };
160
+ },
161
+ }));
162
+ await runExecute(execute, ['--agent', '--dry-run', '--require-approval', 'none', '--no-graph']);
163
+ const state = await readState();
164
+ expect(Object.keys(state.tasks).sort()).toEqual(['task-parent', 'task-parent-a', 'task-parent-b']);
165
+ expect(state.tasks['task-parent']?.status).toBe('DONE');
166
+ expect(state.tasks['task-parent-a']?.status).toBe('DONE');
167
+ expect(state.tasks['task-parent-b']?.status).toBe('DONE');
168
+ expect(exitCode).toBeUndefined();
169
+ expect(stderr).toBe('');
170
+ });
171
+ it('never_creates_cycle', async () => {
172
+ await writeDag([{ id: 'task-parent' }]);
173
+ const policy = await import('../verification/decay/policy.js');
174
+ vi.spyOn(policy, 'decideNextAction').mockReturnValue({
175
+ action: 'REPLAN',
176
+ attempt: 1,
177
+ saturated: true,
178
+ reason: 'replan on saturation',
179
+ });
180
+ const refine = await import('../commands/refine.js');
181
+ vi.spyOn(refine, 'buildSplitProposal').mockResolvedValue({
182
+ originalTaskId: 'task-parent',
183
+ notes: 'force cycle',
184
+ subtasks: [
185
+ {
186
+ id: 'task-parent-cyclic',
187
+ title: 'task-parent-cyclic',
188
+ files: ['src/cycle.ts'],
189
+ rationale: 'cycle candidate',
190
+ estimatedLevel: 'LOW',
191
+ },
192
+ ],
193
+ });
194
+ const subDag = await import('../dag-runner/sub-dag.js');
195
+ const realSplice = subDag.spliceSubDag;
196
+ vi.spyOn(subDag, 'spliceSubDag').mockImplementation((dag, parentId, _subTasks, maxDepth) => {
197
+ const cyclic = [
198
+ {
199
+ id: `${parentId}-cycle`,
200
+ parentId,
201
+ dependsOn: [parentId],
202
+ specPath: `DARE/EXECUTION/${parentId}-cycle.md`,
203
+ },
204
+ ];
205
+ return realSplice(dag, parentId, cyclic, maxDepth);
206
+ });
207
+ const execute = await loadExecute();
208
+ execute.setResolveDriverForTests(async () => ({
209
+ id: 'cycle-driver',
210
+ requiresNetwork: false,
211
+ async run(input) {
212
+ return {
213
+ status: 'failed',
214
+ worktree: input.worktree,
215
+ summary: 'still failing',
216
+ usage: { inputTokens: 0, outputTokens: 0, costUsd: 0, model: 'cycle-driver' },
217
+ failureSignature: 'cycle-sig',
218
+ };
219
+ },
220
+ }));
221
+ await runExecute(execute, ['--agent', '--dry-run', '--require-approval', 'none', '--no-graph']);
222
+ const state = await readState();
223
+ expect(Object.keys(state.tasks).sort()).toEqual(['task-parent']);
224
+ expect(state.tasks['task-parent']?.status).toBe('FAILED');
225
+ expect(state.tasks['task-parent']?.error).toContain('ESCALATE: replan would create a cycle');
226
+ expect(exitCode).toBe(1);
227
+ });
228
+ it('respects_maxDepth_escalates', async () => {
229
+ await writeDag([
230
+ { id: 'task-root' },
231
+ { id: 'task-nested', dependsOn: ['task-root'] },
232
+ ]);
233
+ await writeConfig({
234
+ verification: {
235
+ enabled: true,
236
+ loop: { maxDepth: 1 },
237
+ },
238
+ });
239
+ await writeState([
240
+ { id: 'task-root', status: 'DONE', dependsOn: [] },
241
+ {
242
+ id: 'task-nested',
243
+ status: 'PENDING',
244
+ parentId: 'task-root',
245
+ dependsOn: ['task-root'],
246
+ },
247
+ ]);
248
+ const policy = await import('../verification/decay/policy.js');
249
+ vi.spyOn(policy, 'decideNextAction').mockReturnValue({
250
+ action: 'REPLAN',
251
+ attempt: 1,
252
+ saturated: true,
253
+ reason: 'replan',
254
+ });
255
+ const refine = await import('../commands/refine.js');
256
+ vi.spyOn(refine, 'buildSplitProposal').mockResolvedValue({
257
+ originalTaskId: 'task-nested',
258
+ notes: 'split nested',
259
+ subtasks: [
260
+ {
261
+ id: 'task-nested-a',
262
+ title: 'task-nested-a',
263
+ files: ['src/nested.ts'],
264
+ rationale: 'nested split',
265
+ estimatedLevel: 'LOW',
266
+ },
267
+ ],
268
+ });
269
+ const execute = await loadExecute();
270
+ execute.setResolveDriverForTests(async () => ({
271
+ id: 'maxdepth-driver',
272
+ requiresNetwork: false,
273
+ async run(input) {
274
+ if (input.taskId === 'task-nested') {
275
+ return {
276
+ status: 'failed',
277
+ worktree: input.worktree,
278
+ summary: 'nested fails',
279
+ usage: { inputTokens: 0, outputTokens: 0, costUsd: 0, model: 'maxdepth-driver' },
280
+ failureSignature: 'nested-sig',
281
+ };
282
+ }
283
+ return {
284
+ status: 'implemented',
285
+ worktree: input.worktree,
286
+ summary: `ok ${input.taskId}`,
287
+ usage: { inputTokens: 0, outputTokens: 0, costUsd: 0, model: 'maxdepth-driver' },
288
+ };
289
+ },
290
+ }));
291
+ await runExecute(execute, ['--agent', '--dry-run', '--require-approval', 'none', '--no-graph']);
292
+ const state = await readState();
293
+ expect(Object.keys(state.tasks).sort()).toEqual(['task-nested', 'task-root']);
294
+ expect(state.tasks['task-nested']?.status).toBe('FAILED');
295
+ expect(state.tasks['task-nested']?.error).toContain('ESCALATE: max nesting depth');
296
+ expect(exitCode).toBe(1);
297
+ });
298
+ it('flat_dag_unchanged', async () => {
299
+ await writeDag([{ id: 'task-parent' }]);
300
+ const policy = await import('../verification/decay/policy.js');
301
+ vi.spyOn(policy, 'decideNextAction').mockReturnValue({
302
+ action: 'ESCALATE',
303
+ attempt: 1,
304
+ saturated: false,
305
+ reason: 'direct escalate',
306
+ });
307
+ const refine = await import('../commands/refine.js');
308
+ const splitSpy = vi.spyOn(refine, 'buildSplitProposal');
309
+ const execute = await loadExecute();
310
+ execute.setResolveDriverForTests(async () => ({
311
+ id: 'flat-driver',
312
+ requiresNetwork: false,
313
+ async run(input) {
314
+ return {
315
+ status: 'failed',
316
+ worktree: input.worktree,
317
+ summary: `fail ${input.taskId}`,
318
+ usage: { inputTokens: 0, outputTokens: 0, costUsd: 0, model: 'flat-driver' },
319
+ failureSignature: 'flat-sig',
320
+ };
321
+ },
322
+ }));
323
+ await runExecute(execute, ['--agent', '--dry-run', '--require-approval', 'none', '--no-graph']);
324
+ const state = await readState();
325
+ expect(Object.keys(state.tasks)).toEqual(['task-parent']);
326
+ expect(splitSpy).not.toHaveBeenCalled();
327
+ expect(state.tasks['task-parent']?.status).toBe('FAILED');
328
+ expect(state.tasks['task-parent']?.error).toContain('ESCALATE: direct escalate');
329
+ expect(exitCode).toBe(1);
330
+ });
331
+ it('resplice_idempotent', async () => {
332
+ await writeDag([{ id: 'task-parent' }]);
333
+ const policy = await import('../verification/decay/policy.js');
334
+ vi.spyOn(policy, 'decideNextAction').mockImplementation(({ result, current }) => {
335
+ if (result.passed) {
336
+ return {
337
+ action: 'DONE',
338
+ attempt: current.n,
339
+ saturated: false,
340
+ reason: 'passed',
341
+ };
342
+ }
343
+ if (current.n <= 2) {
344
+ return {
345
+ action: 'REPLAN',
346
+ attempt: current.n,
347
+ saturated: true,
348
+ reason: 'retry with same split',
349
+ };
350
+ }
351
+ return {
352
+ action: 'ESCALATE',
353
+ attempt: current.n,
354
+ saturated: false,
355
+ reason: 'unexpected third failure',
356
+ };
357
+ });
358
+ const refine = await import('../commands/refine.js');
359
+ const splitSpy = vi.spyOn(refine, 'buildSplitProposal').mockResolvedValue({
360
+ originalTaskId: 'task-parent',
361
+ notes: 'stable split',
362
+ subtasks: [
363
+ {
364
+ id: 'task-parent-a',
365
+ title: 'task-parent-a',
366
+ files: ['src/a.ts'],
367
+ rationale: 'slice a',
368
+ estimatedLevel: 'LOW',
369
+ },
370
+ {
371
+ id: 'task-parent-b',
372
+ title: 'task-parent-b',
373
+ files: ['src/b.ts'],
374
+ rationale: 'slice b',
375
+ estimatedLevel: 'LOW',
376
+ },
377
+ ],
378
+ });
379
+ let parentFailures = 0;
380
+ const execute = await loadExecute();
381
+ execute.setResolveDriverForTests(async () => ({
382
+ id: 'resplice-driver',
383
+ requiresNetwork: false,
384
+ async run(input) {
385
+ if (input.taskId === 'task-parent' && parentFailures < 2) {
386
+ parentFailures += 1;
387
+ return {
388
+ status: 'failed',
389
+ worktree: input.worktree,
390
+ summary: `parent fail #${parentFailures}`,
391
+ usage: { inputTokens: 0, outputTokens: 0, costUsd: 0, model: 'resplice-driver' },
392
+ failureSignature: 'same-parent-sig',
393
+ };
394
+ }
395
+ return {
396
+ status: 'implemented',
397
+ worktree: input.worktree,
398
+ summary: `ok ${input.taskId}`,
399
+ usage: { inputTokens: 0, outputTokens: 0, costUsd: 0, model: 'resplice-driver' },
400
+ };
401
+ },
402
+ }));
403
+ await runExecute(execute, ['--agent', '--dry-run', '--require-approval', 'none', '--no-graph']);
404
+ const state = await readState();
405
+ expect(Object.keys(state.tasks).sort()).toEqual(['task-parent', 'task-parent-a', 'task-parent-b']);
406
+ expect(state.tasks['task-parent']?.status).toBe('DONE');
407
+ expect(state.tasks['task-parent-a']?.status).toBe('DONE');
408
+ expect(state.tasks['task-parent-b']?.status).toBe('DONE');
409
+ expect(state.tasks['task-parent']?.dependsOn?.filter((id) => id === 'task-parent-a').length).toBe(1);
410
+ expect(state.tasks['task-parent']?.dependsOn?.filter((id) => id === 'task-parent-b').length).toBe(1);
411
+ expect(splitSpy).toHaveBeenCalledTimes(2);
412
+ expect(exitCode).toBeUndefined();
413
+ });
414
+ it('deterministic_no_llm_in_splice_toposort', async () => {
415
+ for (const rel of ['dag-runner/sub-dag.ts', 'dag-runner/run_dag.ts']) {
416
+ const content = await fs.readFile(path.join(SRC_ROOT, rel), 'utf8');
417
+ expect(content).not.toMatch(NO_LLM_PATTERN);
418
+ }
419
+ const dag = {
420
+ title: 'deterministic',
421
+ version: '1.0.0',
422
+ models: { cursor: { HIGH: 'h', MED: 'm', LOW: 'l' } },
423
+ tasks: [
424
+ {
425
+ id: 'task-root',
426
+ title: 'task-root',
427
+ depends_on: [],
428
+ complexity: 'LOW',
429
+ subtask_prompt: 'root',
430
+ status: 'PENDING',
431
+ },
432
+ {
433
+ id: 'task-parent',
434
+ title: 'task-parent',
435
+ depends_on: ['task-root'],
436
+ complexity: 'LOW',
437
+ subtask_prompt: 'parent',
438
+ status: 'PENDING',
439
+ },
440
+ ],
441
+ };
442
+ const subTasks = [
443
+ {
444
+ id: 'task-parent-a',
445
+ parentId: 'task-parent',
446
+ dependsOn: ['task-root'],
447
+ specPath: 'DARE/EXECUTION/task-parent-a.md',
448
+ },
449
+ {
450
+ id: 'task-parent-b',
451
+ parentId: 'task-parent',
452
+ dependsOn: ['task-parent-a'],
453
+ specPath: 'DARE/EXECUTION/task-parent-b.md',
454
+ },
455
+ ];
456
+ const first = spliceSubDag(dag, 'task-parent', subTasks, 3);
457
+ const second = spliceSubDag(dag, 'task-parent', subTasks, 3);
458
+ expect(first).toEqual(second);
459
+ const firstRanks = [...computeRanks(first.dag.tasks).entries()].sort(([a], [b]) => a.localeCompare(b));
460
+ const secondRanks = [...computeRanks(second.dag.tasks).entries()].sort(([a], [b]) => a.localeCompare(b));
461
+ expect(firstRanks).toEqual(secondRanks);
462
+ });
463
+ });
464
+ //# sourceMappingURL=dynamic-dag-regression.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dynamic-dag-regression.test.js","sourceRoot":"","sources":["../../src/__tests__/dynamic-dag-regression.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AACzE,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,YAAY,EAA+B,MAAM,0BAA0B,CAAC;AA6BrF,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;AAC/E,MAAM,cAAc,GAAG,oDAAoD,CAAC;AAE5E,QAAQ,CAAC,yCAAyC,EAAE,GAAG,EAAE;IACvD,IAAI,WAAmB,CAAC;IACxB,IAAI,QAA4B,CAAC;IACjC,IAAI,MAAc,CAAC;IACnB,IAAI,MAAc,CAAC;IAEnB,UAAU,CAAC,KAAK,IAAI,EAAE;QACpB,EAAE,CAAC,YAAY,EAAE,CAAC;QAClB,WAAW,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,yBAAyB,CAAC,CAAC,CAAC;QAClF,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC;QACnD,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,kBAAkB,CAAC,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;QAClF,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC;QAEtD,QAAQ,GAAG,SAAS,CAAC;QACrB,MAAM,GAAG,EAAE,CAAC;QACZ,MAAM,GAAG,EAAE,CAAC;QAEZ,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,kBAAkB,CAAC,CAAC,IAAI,EAAE,EAAE;YACpD,QAAQ,GAAG,IAAc,CAAC;YAC1B,MAAM,IAAI,KAAK,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC;QAClC,CAAC,CAAC,CAAC;QACH,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,kBAAkB,CAAC,CAAC,GAAG,IAAe,EAAE,EAAE;YACjE,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;QAC9C,CAAC,CAAC,CAAC;QACH,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,kBAAkB,CAAC,CAAC,GAAG,IAAe,EAAE,EAAE;YACnE,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;QAC9C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,KAAK,IAAI,EAAE;QACnB,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,wBAAwB,CAAC,CAAC;QACvD,OAAO,CAAC,wBAAwB,CAAC,IAAI,CAAC,CAAC;QACvC,OAAO,CAAC,yBAAyB,CAAC,IAAI,CAAC,CAAC;QACxC,OAAO,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC;QACtC,EAAE,CAAC,eAAe,EAAE,CAAC;QACrB,MAAM,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;IACtD,CAAC,CAAC,CAAC;IAEH,KAAK,UAAU,WAAW;QACxB,OAAO,MAAM,CAAC,wBAAwB,CAAC,CAAC;IAC1C,CAAC;IAED,KAAK,UAAU,UAAU,CAAC,OAAsB,EAAE,IAAc;QAC9D,IAAI,CAAC;YACH,MAAM,OAAO,CAAC,cAAc,CAAC,UAAU,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;QAClE,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,CAAC,GAAG,YAAY,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC;gBAAE,MAAM,GAAG,CAAC;QAC7E,CAAC;IACH,CAAC;IAED,KAAK,UAAU,QAAQ,CAAC,KAAoC;QAC1D,MAAM,KAAK,GAAa;YACtB,yCAAyC;YACzC,kBAAkB;YAClB,SAAS;YACT,uBAAuB;YACvB,sBAAsB;YACtB,sBAAsB;YACtB,QAAQ;SACT,CAAC;QAEF,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,EAAE,CAAC;YACvC,KAAK,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;YACjC,KAAK,CAAC,IAAI,CAAC,eAAe,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;YACtC,KAAK,CAAC,IAAI,CACR,SAAS,CAAC,MAAM,KAAK,CAAC;gBACpB,CAAC,CAAC,oBAAoB;gBACtB,CAAC,CAAC,oBAAoB,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAChD,CAAC;YACF,KAAK,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;YAClC,KAAK,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;YACpC,KAAK,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,MAAM,IAAI,WAAW,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;QAC7D,CAAC;QAED,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,EAAE,eAAe,CAAC,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC/F,CAAC;IAED,KAAK,UAAU,WAAW,CAAC,MAA+B;QACxD,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,kBAAkB,CAAC,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;IACxF,CAAC;IAED,KAAK,UAAU,UAAU,CAAC,KAAuC;QAC/D,MAAM,UAAU,GAAG,MAAM,CAAC,WAAW,CACnC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;YAClB,IAAI,CAAC,EAAE;YACP;gBACE,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS;gBAC3D,KAAK,EAAE,IAAI,CAAC,KAAK;aAClB;SACF,CAAC,CACH,CAAC;QAEF,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC;QACpD,MAAM,EAAE,CAAC,SAAS,CAChB,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,EAAE,YAAY,CAAC,EAC7C;YACE,OAAO,EAAE,CAAC;YACV,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,KAAK,EAAE,UAAU;SAClB,EACD,EAAE,MAAM,EAAE,CAAC,EAAE,CACd,CAAC;IACJ,CAAC;IAED,KAAK,UAAU,SAAS;QACtB,OAAO,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC,CAAmB,CAAC;IAC9F,CAAC;IAED,EAAE,CAAC,4BAA4B,EAAE,KAAK,IAAI,EAAE;QAC1C,MAAM,QAAQ,CAAC,CAAC,EAAE,EAAE,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC;QAExC,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,iCAAiC,CAAC,CAAC;QAC/D,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,kBAAkB,CAAC;aACjC,mBAAmB,CAAC;YACnB,MAAM,EAAE,QAAQ;YAChB,OAAO,EAAE,CAAC;YACV,SAAS,EAAE,IAAI;YACf,MAAM,EAAE,sBAAsB;SAC/B,CAAC;aACD,eAAe,CAAC;YACf,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,CAAC;YACV,SAAS,EAAE,KAAK;YAChB,MAAM,EAAE,qBAAqB;SAC9B,CAAC,CAAC;QAEL,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,uBAAuB,CAAC,CAAC;QACrD,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC,iBAAiB,CAAC;YACvD,cAAc,EAAE,aAAa;YAC7B,KAAK,EAAE,cAAc;YACrB,QAAQ,EAAE;gBACR;oBACE,EAAE,EAAE,eAAe;oBACnB,KAAK,EAAE,eAAe;oBACtB,KAAK,EAAE,CAAC,UAAU,CAAC;oBACnB,SAAS,EAAE,SAAS;oBACpB,cAAc,EAAE,KAAK;iBACtB;gBACD;oBACE,EAAE,EAAE,eAAe;oBACnB,KAAK,EAAE,eAAe;oBACtB,KAAK,EAAE,CAAC,UAAU,CAAC;oBACnB,SAAS,EAAE,SAAS;oBACpB,cAAc,EAAE,KAAK;iBACtB;aACF;SACF,CAAC,CAAC;QAEH,IAAI,UAAU,GAAG,CAAC,CAAC;QACnB,MAAM,OAAO,GAAG,MAAM,WAAW,EAAE,CAAC;QACpC,OAAO,CAAC,wBAAwB,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;YAC5C,EAAE,EAAE,oBAAoB;YACxB,eAAe,EAAE,KAAK;YACtB,KAAK,CAAC,GAAG,CAAC,KAAK;gBACb,IAAI,KAAK,CAAC,MAAM,KAAK,aAAa,IAAI,UAAU,KAAK,CAAC,EAAE,CAAC;oBACvD,UAAU,IAAI,CAAC,CAAC;oBAChB,OAAO;wBACL,MAAM,EAAE,QAAQ;wBAChB,QAAQ,EAAE,KAAK,CAAC,QAAQ;wBACxB,OAAO,EAAE,4BAA4B;wBACrC,KAAK,EAAE,EAAE,WAAW,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,aAAa,EAAE;wBAC5E,gBAAgB,EAAE,UAAU;qBAC7B,CAAC;gBACJ,CAAC;gBACD,OAAO;oBACL,MAAM,EAAE,aAAa;oBACrB,QAAQ,EAAE,KAAK,CAAC,QAAQ;oBACxB,OAAO,EAAE,MAAM,KAAK,CAAC,MAAM,EAAE;oBAC7B,KAAK,EAAE,EAAE,WAAW,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,aAAa,EAAE;iBAC7E,CAAC;YACJ,CAAC;SACF,CAAC,CAAC,CAAC;QAEJ,MAAM,UAAU,CAAC,OAAO,EAAE,CAAC,SAAS,EAAE,WAAW,EAAE,oBAAoB,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC;QAEhG,MAAM,KAAK,GAAG,MAAM,SAAS,EAAE,CAAC;QAChC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,aAAa,EAAE,eAAe,EAAE,eAAe,CAAC,CAAC,CAAC;QACnG,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACxD,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC1D,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC1D,MAAM,CAAC,QAAQ,CAAC,CAAC,aAAa,EAAE,CAAC;QACjC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC1B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qBAAqB,EAAE,KAAK,IAAI,EAAE;QACnC,MAAM,QAAQ,CAAC,CAAC,EAAE,EAAE,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC;QAExC,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,iCAAiC,CAAC,CAAC;QAC/D,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC,eAAe,CAAC;YACnD,MAAM,EAAE,QAAQ;YAChB,OAAO,EAAE,CAAC;YACV,SAAS,EAAE,IAAI;YACf,MAAM,EAAE,sBAAsB;SAC/B,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,uBAAuB,CAAC,CAAC;QACrD,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC,iBAAiB,CAAC;YACvD,cAAc,EAAE,aAAa;YAC7B,KAAK,EAAE,aAAa;YACpB,QAAQ,EAAE;gBACR;oBACE,EAAE,EAAE,oBAAoB;oBACxB,KAAK,EAAE,oBAAoB;oBAC3B,KAAK,EAAE,CAAC,cAAc,CAAC;oBACvB,SAAS,EAAE,iBAAiB;oBAC5B,cAAc,EAAE,KAAK;iBACtB;aACF;SACF,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,0BAA0B,CAAC,CAAC;QACxD,MAAM,UAAU,GAAG,MAAM,CAAC,YAAY,CAAC;QACvC,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC,kBAAkB,CAAC,CAAC,GAAG,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE;YACzF,MAAM,MAAM,GAA2B;gBACrC;oBACE,EAAE,EAAE,GAAG,QAAQ,QAAQ;oBACvB,QAAQ;oBACR,SAAS,EAAE,CAAC,QAAQ,CAAC;oBACrB,QAAQ,EAAE,kBAAkB,QAAQ,WAAW;iBAChD;aACF,CAAC;YACF,OAAO,UAAU,CAAC,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;QACrD,CAAC,CAAC,CAAC;QAEH,MAAM,OAAO,GAAG,MAAM,WAAW,EAAE,CAAC;QACpC,OAAO,CAAC,wBAAwB,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;YAC5C,EAAE,EAAE,cAAc;YAClB,eAAe,EAAE,KAAK;YACtB,KAAK,CAAC,GAAG,CAAC,KAAK;gBACb,OAAO;oBACL,MAAM,EAAE,QAAQ;oBAChB,QAAQ,EAAE,KAAK,CAAC,QAAQ;oBACxB,OAAO,EAAE,eAAe;oBACxB,KAAK,EAAE,EAAE,WAAW,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,cAAc,EAAE;oBAC7E,gBAAgB,EAAE,WAAW;iBAC9B,CAAC;YACJ,CAAC;SACF,CAAC,CAAC,CAAC;QAEJ,MAAM,UAAU,CAAC,OAAO,EAAE,CAAC,SAAS,EAAE,WAAW,EAAE,oBAAoB,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC;QAEhG,MAAM,KAAK,GAAG,MAAM,SAAS,EAAE,CAAC;QAChC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC;QACjE,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC1D,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE,KAAK,CAAC,CAAC,SAAS,CAAC,uCAAuC,CAAC,CAAC;QAC7F,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC3B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6BAA6B,EAAE,KAAK,IAAI,EAAE;QAC3C,MAAM,QAAQ,CAAC;YACb,EAAE,EAAE,EAAE,WAAW,EAAE;YACnB,EAAE,EAAE,EAAE,aAAa,EAAE,SAAS,EAAE,CAAC,WAAW,CAAC,EAAE;SAChD,CAAC,CAAC;QACH,MAAM,WAAW,CAAC;YAChB,YAAY,EAAE;gBACZ,OAAO,EAAE,IAAI;gBACb,IAAI,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE;aACtB;SACF,CAAC,CAAC;QACH,MAAM,UAAU,CAAC;YACf,EAAE,EAAE,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,EAAE;YAClD;gBACE,EAAE,EAAE,aAAa;gBACjB,MAAM,EAAE,SAAS;gBACjB,QAAQ,EAAE,WAAW;gBACrB,SAAS,EAAE,CAAC,WAAW,CAAC;aACzB;SACF,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,iCAAiC,CAAC,CAAC;QAC/D,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC,eAAe,CAAC;YACnD,MAAM,EAAE,QAAQ;YAChB,OAAO,EAAE,CAAC;YACV,SAAS,EAAE,IAAI;YACf,MAAM,EAAE,QAAQ;SACjB,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,uBAAuB,CAAC,CAAC;QACrD,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC,iBAAiB,CAAC;YACvD,cAAc,EAAE,aAAa;YAC7B,KAAK,EAAE,cAAc;YACrB,QAAQ,EAAE;gBACR;oBACE,EAAE,EAAE,eAAe;oBACnB,KAAK,EAAE,eAAe;oBACtB,KAAK,EAAE,CAAC,eAAe,CAAC;oBACxB,SAAS,EAAE,cAAc;oBACzB,cAAc,EAAE,KAAK;iBACtB;aACF;SACF,CAAC,CAAC;QAEH,MAAM,OAAO,GAAG,MAAM,WAAW,EAAE,CAAC;QACpC,OAAO,CAAC,wBAAwB,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;YAC5C,EAAE,EAAE,iBAAiB;YACrB,eAAe,EAAE,KAAK;YACtB,KAAK,CAAC,GAAG,CAAC,KAAK;gBACb,IAAI,KAAK,CAAC,MAAM,KAAK,aAAa,EAAE,CAAC;oBACnC,OAAO;wBACL,MAAM,EAAE,QAAQ;wBAChB,QAAQ,EAAE,KAAK,CAAC,QAAQ;wBACxB,OAAO,EAAE,cAAc;wBACvB,KAAK,EAAE,EAAE,WAAW,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,iBAAiB,EAAE;wBAChF,gBAAgB,EAAE,YAAY;qBAC/B,CAAC;gBACJ,CAAC;gBACD,OAAO;oBACL,MAAM,EAAE,aAAa;oBACrB,QAAQ,EAAE,KAAK,CAAC,QAAQ;oBACxB,OAAO,EAAE,MAAM,KAAK,CAAC,MAAM,EAAE;oBAC7B,KAAK,EAAE,EAAE,WAAW,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,iBAAiB,EAAE;iBACjF,CAAC;YACJ,CAAC;SACF,CAAC,CAAC,CAAC;QAEJ,MAAM,UAAU,CAAC,OAAO,EAAE,CAAC,SAAS,EAAE,WAAW,EAAE,oBAAoB,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC;QAEhG,MAAM,KAAK,GAAG,MAAM,SAAS,EAAE,CAAC;QAChC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC,CAAC;QAC9E,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC1D,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE,KAAK,CAAC,CAAC,SAAS,CAAC,6BAA6B,CAAC,CAAC;QACnF,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC3B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oBAAoB,EAAE,KAAK,IAAI,EAAE;QAClC,MAAM,QAAQ,CAAC,CAAC,EAAE,EAAE,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC;QAExC,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,iCAAiC,CAAC,CAAC;QAC/D,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC,eAAe,CAAC;YACnD,MAAM,EAAE,UAAU;YAClB,OAAO,EAAE,CAAC;YACV,SAAS,EAAE,KAAK;YAChB,MAAM,EAAE,iBAAiB;SAC1B,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,uBAAuB,CAAC,CAAC;QACrD,MAAM,QAAQ,GAAG,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC;QAExD,MAAM,OAAO,GAAG,MAAM,WAAW,EAAE,CAAC;QACpC,OAAO,CAAC,wBAAwB,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;YAC5C,EAAE,EAAE,aAAa;YACjB,eAAe,EAAE,KAAK;YACtB,KAAK,CAAC,GAAG,CAAC,KAAK;gBACb,OAAO;oBACL,MAAM,EAAE,QAAQ;oBAChB,QAAQ,EAAE,KAAK,CAAC,QAAQ;oBACxB,OAAO,EAAE,QAAQ,KAAK,CAAC,MAAM,EAAE;oBAC/B,KAAK,EAAE,EAAE,WAAW,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,aAAa,EAAE;oBAC5E,gBAAgB,EAAE,UAAU;iBAC7B,CAAC;YACJ,CAAC;SACF,CAAC,CAAC,CAAC;QAEJ,MAAM,UAAU,CAAC,OAAO,EAAE,CAAC,SAAS,EAAE,WAAW,EAAE,oBAAoB,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC;QAEhG,MAAM,KAAK,GAAG,MAAM,SAAS,EAAE,CAAC;QAChC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC;QAC1D,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QACxC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC1D,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE,KAAK,CAAC,CAAC,SAAS,CAAC,2BAA2B,CAAC,CAAC;QACjF,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC3B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qBAAqB,EAAE,KAAK,IAAI,EAAE;QACnC,MAAM,QAAQ,CAAC,CAAC,EAAE,EAAE,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC;QAExC,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,iCAAiC,CAAC,CAAC;QAC/D,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC,kBAAkB,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE;YAC9E,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;gBAClB,OAAO;oBACL,MAAM,EAAE,MAAM;oBACd,OAAO,EAAE,OAAO,CAAC,CAAC;oBAClB,SAAS,EAAE,KAAK;oBAChB,MAAM,EAAE,QAAQ;iBACjB,CAAC;YACJ,CAAC;YACD,IAAI,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;gBACnB,OAAO;oBACL,MAAM,EAAE,QAAQ;oBAChB,OAAO,EAAE,OAAO,CAAC,CAAC;oBAClB,SAAS,EAAE,IAAI;oBACf,MAAM,EAAE,uBAAuB;iBAChC,CAAC;YACJ,CAAC;YACD,OAAO;gBACL,MAAM,EAAE,UAAU;gBAClB,OAAO,EAAE,OAAO,CAAC,CAAC;gBAClB,SAAS,EAAE,KAAK;gBAChB,MAAM,EAAE,0BAA0B;aACnC,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,uBAAuB,CAAC,CAAC;QACrD,MAAM,QAAQ,GAAG,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC,iBAAiB,CAAC;YACxE,cAAc,EAAE,aAAa;YAC7B,KAAK,EAAE,cAAc;YACrB,QAAQ,EAAE;gBACR;oBACE,EAAE,EAAE,eAAe;oBACnB,KAAK,EAAE,eAAe;oBACtB,KAAK,EAAE,CAAC,UAAU,CAAC;oBACnB,SAAS,EAAE,SAAS;oBACpB,cAAc,EAAE,KAAK;iBACtB;gBACD;oBACE,EAAE,EAAE,eAAe;oBACnB,KAAK,EAAE,eAAe;oBACtB,KAAK,EAAE,CAAC,UAAU,CAAC;oBACnB,SAAS,EAAE,SAAS;oBACpB,cAAc,EAAE,KAAK;iBACtB;aACF;SACF,CAAC,CAAC;QAEH,IAAI,cAAc,GAAG,CAAC,CAAC;QACvB,MAAM,OAAO,GAAG,MAAM,WAAW,EAAE,CAAC;QACpC,OAAO,CAAC,wBAAwB,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;YAC5C,EAAE,EAAE,iBAAiB;YACrB,eAAe,EAAE,KAAK;YACtB,KAAK,CAAC,GAAG,CAAC,KAAK;gBACb,IAAI,KAAK,CAAC,MAAM,KAAK,aAAa,IAAI,cAAc,GAAG,CAAC,EAAE,CAAC;oBACzD,cAAc,IAAI,CAAC,CAAC;oBACpB,OAAO;wBACL,MAAM,EAAE,QAAQ;wBAChB,QAAQ,EAAE,KAAK,CAAC,QAAQ;wBACxB,OAAO,EAAE,gBAAgB,cAAc,EAAE;wBACzC,KAAK,EAAE,EAAE,WAAW,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,iBAAiB,EAAE;wBAChF,gBAAgB,EAAE,iBAAiB;qBACpC,CAAC;gBACJ,CAAC;gBACD,OAAO;oBACL,MAAM,EAAE,aAAa;oBACrB,QAAQ,EAAE,KAAK,CAAC,QAAQ;oBACxB,OAAO,EAAE,MAAM,KAAK,CAAC,MAAM,EAAE;oBAC7B,KAAK,EAAE,EAAE,WAAW,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,iBAAiB,EAAE;iBACjF,CAAC;YACJ,CAAC;SACF,CAAC,CAAC,CAAC;QAEJ,MAAM,UAAU,CAAC,OAAO,EAAE,CAAC,SAAS,EAAE,WAAW,EAAE,oBAAoB,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC;QAEhG,MAAM,KAAK,GAAG,MAAM,SAAS,EAAE,CAAC;QAChC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,aAAa,EAAE,eAAe,EAAE,eAAe,CAAC,CAAC,CAAC;QACnG,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACxD,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC1D,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC1D,MAAM,CACJ,KAAK,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,eAAe,CAAC,CAAC,MAAM,CACrF,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACV,MAAM,CACJ,KAAK,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,eAAe,CAAC,CAAC,MAAM,CACrF,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACV,MAAM,CAAC,QAAQ,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;QAC1C,MAAM,CAAC,QAAQ,CAAC,CAAC,aAAa,EAAE,CAAC;IACnC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yCAAyC,EAAE,KAAK,IAAI,EAAE;QACvD,KAAK,MAAM,GAAG,IAAI,CAAC,uBAAuB,EAAE,uBAAuB,CAAC,EAAE,CAAC;YACrE,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC;YACpE,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;QAC9C,CAAC;QAED,MAAM,GAAG,GAAa;YACpB,KAAK,EAAE,eAAe;YACtB,OAAO,EAAE,OAAO;YAChB,MAAM,EAAE,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;YACrD,KAAK,EAAE;gBACL;oBACE,EAAE,EAAE,WAAW;oBACf,KAAK,EAAE,WAAW;oBAClB,UAAU,EAAE,EAAE;oBACd,UAAU,EAAE,KAAK;oBACjB,cAAc,EAAE,MAAM;oBACtB,MAAM,EAAE,SAAS;iBAClB;gBACD;oBACE,EAAE,EAAE,aAAa;oBACjB,KAAK,EAAE,aAAa;oBACpB,UAAU,EAAE,CAAC,WAAW,CAAC;oBACzB,UAAU,EAAE,KAAK;oBACjB,cAAc,EAAE,QAAQ;oBACxB,MAAM,EAAE,SAAS;iBAClB;aACF;SACF,CAAC;QACF,MAAM,QAAQ,GAA2B;YACvC;gBACE,EAAE,EAAE,eAAe;gBACnB,QAAQ,EAAE,aAAa;gBACvB,SAAS,EAAE,CAAC,WAAW,CAAC;gBACxB,QAAQ,EAAE,iCAAiC;aAC5C;YACD;gBACE,EAAE,EAAE,eAAe;gBACnB,QAAQ,EAAE,aAAa;gBACvB,SAAS,EAAE,CAAC,eAAe,CAAC;gBAC5B,QAAQ,EAAE,iCAAiC;aAC5C;SACF,CAAC;QAEF,MAAM,KAAK,GAAG,YAAY,CAAC,GAAG,EAAE,aAAa,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;QAC5D,MAAM,MAAM,GAAG,YAAY,CAAC,GAAG,EAAE,aAAa,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;QAC7D,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAE9B,MAAM,UAAU,GAAG,CAAC,GAAG,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAChF,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CACnB,CAAC;QACF,MAAM,WAAW,GAAG,CAAC,GAAG,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAClF,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CACnB,CAAC;QACF,MAAM,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IAC1C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -37,6 +37,7 @@ const CLI_COMMANDS = {
37
37
  steering: 'dare-steering',
38
38
  hooks: 'dare-hooks',
39
39
  guard: 'dare-guard',
40
+ dashboard: 'dare-dashboard',
40
41
  patterns: 'dare-patterns',
41
42
  skill: 'dare-skill',
42
43
  welcome: 'dare-welcome',
@@ -1 +1 @@
1
- {"version":3,"file":"ide-command-parity.test.js","sourceRoot":"","sources":["../../src/__tests__/ide-command-parity.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ide-command-parity.test.js","sourceRoot":"","sources":["../../src/__tests__/ide-command-parity.test.ts"],"names":[],"mappings":"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"}
@@ -2,7 +2,7 @@ import { describe, it, expect, beforeEach, afterEach } from 'vitest';
2
2
  import path from 'node:path';
3
3
  import fs from 'fs-extra';
4
4
  import { generateProjectStructure } from '../utils/project-generator.js';
5
- import { DEFAULTS, seedVerificationDefaultsIfAbsent, } from '../verification/config.js';
5
+ import { DEFAULTS, DRIFT_DEFAULTS, SEMANTIC_DEFAULTS, seedDriftDefaultsIfAbsent, seedSemanticDefaultsIfAbsent, seedVerificationDefaultsIfAbsent, } from '../verification/config.js';
6
6
  describe('project-generator — verification block', () => {
7
7
  let tmpRoot;
8
8
  beforeEach(async () => {
@@ -35,6 +35,9 @@ describe('project-generator — verification block', () => {
35
35
  expect(cfg.verification.mutation.minScore).toBe(0.7);
36
36
  expect(cfg.verification.loop.policy).toBe('decay');
37
37
  expect(cfg.verification.prerank.enabled).toBe(false);
38
+ expect(cfg.drift).toEqual(DRIFT_DEFAULTS);
39
+ expect(cfg.graphrag.backend).toBe('sqlite');
40
+ expect(cfg.graphrag.semantic).toEqual(SEMANTIC_DEFAULTS);
38
41
  });
39
42
  it('should_match_config_defaults', async () => {
40
43
  const appDir = await initProject();
@@ -46,11 +49,17 @@ describe('project-generator — verification block', () => {
46
49
  await fs.writeJSON(cfgPath, { name: 'legacy', version: '3.2.0', review: { onComplete: false, strict: false } }, { spaces: 2 });
47
50
  const cfg = await fs.readJSON(cfgPath);
48
51
  expect(seedVerificationDefaultsIfAbsent(cfg)).toBe(true);
52
+ expect(seedDriftDefaultsIfAbsent(cfg)).toBe(true);
53
+ expect(seedSemanticDefaultsIfAbsent(cfg)).toBe(true);
49
54
  expect(cfg.verification).toEqual(DEFAULTS);
55
+ expect(cfg.drift).toEqual(DRIFT_DEFAULTS);
56
+ expect(cfg.graphrag.semantic).toEqual(SEMANTIC_DEFAULTS);
50
57
  await fs.writeJSON(cfgPath, cfg, { spaces: 2 });
51
58
  const reloaded = await fs.readJSON(cfgPath);
52
59
  expect(reloaded.verification.enabled).toBe(false);
53
60
  expect(seedVerificationDefaultsIfAbsent(reloaded)).toBe(false);
61
+ expect(seedDriftDefaultsIfAbsent(reloaded)).toBe(false);
62
+ expect(seedSemanticDefaultsIfAbsent(reloaded)).toBe(false);
54
63
  });
55
64
  });
56
65
  //# sourceMappingURL=project-generator.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"project-generator.test.js","sourceRoot":"","sources":["../../src/__tests__/project-generator.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"project-generator.test.js","sourceRoot":"","sources":["../../src/__tests__/project-generator.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=semantic-regression.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"semantic-regression.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/semantic-regression.test.ts"],"names":[],"mappings":""}