@dewtech/dare-cli 3.11.0 → 3.13.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 (316) hide show
  1. package/README.md +2 -0
  2. package/dist/__tests__/cli-only-invariants.test.d.ts +2 -0
  3. package/dist/__tests__/cli-only-invariants.test.d.ts.map +1 -0
  4. package/dist/__tests__/cli-only-invariants.test.js +100 -0
  5. package/dist/__tests__/cli-only-invariants.test.js.map +1 -0
  6. package/dist/__tests__/cli-only-regression.test.d.ts +2 -0
  7. package/dist/__tests__/cli-only-regression.test.d.ts.map +1 -0
  8. package/dist/__tests__/cli-only-regression.test.js +29 -0
  9. package/dist/__tests__/cli-only-regression.test.js.map +1 -0
  10. package/dist/__tests__/ensure-skills.test.js +5 -0
  11. package/dist/__tests__/ensure-skills.test.js.map +1 -1
  12. package/dist/__tests__/ide-command-parity.test.js +1 -0
  13. package/dist/__tests__/ide-command-parity.test.js.map +1 -1
  14. package/dist/__tests__/project-generator.test.js +17 -0
  15. package/dist/__tests__/project-generator.test.js.map +1 -1
  16. package/dist/__tests__/reverse-facts.test.js +1 -0
  17. package/dist/__tests__/reverse-facts.test.js.map +1 -1
  18. package/dist/__tests__/terminal-parity-regression.test.d.ts +2 -0
  19. package/dist/__tests__/terminal-parity-regression.test.d.ts.map +1 -0
  20. package/dist/__tests__/terminal-parity-regression.test.js +116 -0
  21. package/dist/__tests__/terminal-parity-regression.test.js.map +1 -0
  22. package/dist/__tests__/terminal-parity.test.d.ts +2 -0
  23. package/dist/__tests__/terminal-parity.test.d.ts.map +1 -0
  24. package/dist/__tests__/terminal-parity.test.js +81 -0
  25. package/dist/__tests__/terminal-parity.test.js.map +1 -0
  26. package/dist/agent/__tests__/antigravity-driver.test.d.ts +2 -0
  27. package/dist/agent/__tests__/antigravity-driver.test.d.ts.map +1 -0
  28. package/dist/agent/__tests__/antigravity-driver.test.js +52 -0
  29. package/dist/agent/__tests__/antigravity-driver.test.js.map +1 -0
  30. package/dist/agent/__tests__/codex-driver.test.d.ts +2 -0
  31. package/dist/agent/__tests__/codex-driver.test.d.ts.map +1 -0
  32. package/dist/agent/__tests__/codex-driver.test.js +68 -0
  33. package/dist/agent/__tests__/codex-driver.test.js.map +1 -0
  34. package/dist/agent/__tests__/cursor-driver.test.d.ts +2 -0
  35. package/dist/agent/__tests__/cursor-driver.test.d.ts.map +1 -0
  36. package/dist/agent/__tests__/cursor-driver.test.js +52 -0
  37. package/dist/agent/__tests__/cursor-driver.test.js.map +1 -0
  38. package/dist/agent/driver.d.ts +1 -1
  39. package/dist/agent/driver.d.ts.map +1 -1
  40. package/dist/agent/drivers/antigravity.d.ts +8 -0
  41. package/dist/agent/drivers/antigravity.d.ts.map +1 -0
  42. package/dist/agent/drivers/antigravity.js +99 -0
  43. package/dist/agent/drivers/antigravity.js.map +1 -0
  44. package/dist/agent/drivers/codex.d.ts +12 -0
  45. package/dist/agent/drivers/codex.d.ts.map +1 -0
  46. package/dist/agent/drivers/codex.js +137 -0
  47. package/dist/agent/drivers/codex.js.map +1 -0
  48. package/dist/agent/drivers/cursor.d.ts +8 -0
  49. package/dist/agent/drivers/cursor.d.ts.map +1 -0
  50. package/dist/agent/drivers/cursor.js +99 -0
  51. package/dist/agent/drivers/cursor.js.map +1 -0
  52. package/dist/ai/__tests__/ai-core.test.d.ts +2 -0
  53. package/dist/ai/__tests__/ai-core.test.d.ts.map +1 -0
  54. package/dist/ai/__tests__/ai-core.test.js +41 -0
  55. package/dist/ai/__tests__/ai-core.test.js.map +1 -0
  56. package/dist/ai/__tests__/parity.test.d.ts +2 -0
  57. package/dist/ai/__tests__/parity.test.d.ts.map +1 -0
  58. package/dist/ai/__tests__/parity.test.js +36 -0
  59. package/dist/ai/__tests__/parity.test.js.map +1 -0
  60. package/dist/ai/__tests__/pipeline.test.d.ts +2 -0
  61. package/dist/ai/__tests__/pipeline.test.d.ts.map +1 -0
  62. package/dist/ai/__tests__/pipeline.test.js +147 -0
  63. package/dist/ai/__tests__/pipeline.test.js.map +1 -0
  64. package/dist/ai/__tests__/refine-bridge.test.d.ts +2 -0
  65. package/dist/ai/__tests__/refine-bridge.test.d.ts.map +1 -0
  66. package/dist/ai/__tests__/refine-bridge.test.js +17 -0
  67. package/dist/ai/__tests__/refine-bridge.test.js.map +1 -0
  68. package/dist/ai/__tests__/resolve.test.d.ts +2 -0
  69. package/dist/ai/__tests__/resolve.test.d.ts.map +1 -0
  70. package/dist/ai/__tests__/resolve.test.js +42 -0
  71. package/dist/ai/__tests__/resolve.test.js.map +1 -0
  72. package/dist/ai/capabilities.d.ts +3 -0
  73. package/dist/ai/capabilities.d.ts.map +1 -0
  74. package/dist/ai/capabilities.js +11 -0
  75. package/dist/ai/capabilities.js.map +1 -0
  76. package/dist/ai/command-options.d.ts +10 -0
  77. package/dist/ai/command-options.d.ts.map +1 -0
  78. package/dist/ai/command-options.js +15 -0
  79. package/dist/ai/command-options.js.map +1 -0
  80. package/dist/ai/config.d.ts +27 -0
  81. package/dist/ai/config.d.ts.map +1 -0
  82. package/dist/ai/config.js +89 -0
  83. package/dist/ai/config.js.map +1 -0
  84. package/dist/ai/parity.d.ts +13 -0
  85. package/dist/ai/parity.d.ts.map +1 -0
  86. package/dist/ai/parity.js +87 -0
  87. package/dist/ai/parity.js.map +1 -0
  88. package/dist/ai/parse-json-output.d.ts +5 -0
  89. package/dist/ai/parse-json-output.d.ts.map +1 -0
  90. package/dist/ai/parse-json-output.js +25 -0
  91. package/dist/ai/parse-json-output.js.map +1 -0
  92. package/dist/ai/pipeline.d.ts +20 -0
  93. package/dist/ai/pipeline.d.ts.map +1 -0
  94. package/dist/ai/pipeline.js +303 -0
  95. package/dist/ai/pipeline.js.map +1 -0
  96. package/dist/ai/prompts.d.ts +6 -0
  97. package/dist/ai/prompts.d.ts.map +1 -0
  98. package/dist/ai/prompts.js +49 -0
  99. package/dist/ai/prompts.js.map +1 -0
  100. package/dist/ai/providers.d.ts +63 -0
  101. package/dist/ai/providers.d.ts.map +1 -0
  102. package/dist/ai/providers.js +297 -0
  103. package/dist/ai/providers.js.map +1 -0
  104. package/dist/ai/refine-bridge.d.ts +5 -0
  105. package/dist/ai/refine-bridge.d.ts.map +1 -0
  106. package/dist/ai/refine-bridge.js +14 -0
  107. package/dist/ai/refine-bridge.js.map +1 -0
  108. package/dist/ai/registry.d.ts +12 -0
  109. package/dist/ai/registry.d.ts.map +1 -0
  110. package/dist/ai/registry.js +43 -0
  111. package/dist/ai/registry.js.map +1 -0
  112. package/dist/ai/resolve.d.ts +28 -0
  113. package/dist/ai/resolve.d.ts.map +1 -0
  114. package/dist/ai/resolve.js +83 -0
  115. package/dist/ai/resolve.js.map +1 -0
  116. package/dist/ai/schemas.d.ts +175 -0
  117. package/dist/ai/schemas.d.ts.map +1 -0
  118. package/dist/ai/schemas.js +199 -0
  119. package/dist/ai/schemas.js.map +1 -0
  120. package/dist/ai/types.d.ts +52 -0
  121. package/dist/ai/types.d.ts.map +1 -0
  122. package/dist/ai/types.js +8 -0
  123. package/dist/ai/types.js.map +1 -0
  124. package/dist/bin/dare.js +2 -0
  125. package/dist/bin/dare.js.map +1 -1
  126. package/dist/commands/__tests__/ai-command.test.d.ts +2 -0
  127. package/dist/commands/__tests__/ai-command.test.d.ts.map +1 -0
  128. package/dist/commands/__tests__/ai-command.test.js +68 -0
  129. package/dist/commands/__tests__/ai-command.test.js.map +1 -0
  130. package/dist/commands/__tests__/execute-agent.test.js +82 -0
  131. package/dist/commands/__tests__/execute-agent.test.js.map +1 -1
  132. package/dist/commands/ai.d.ts +3 -0
  133. package/dist/commands/ai.d.ts.map +1 -0
  134. package/dist/commands/ai.js +141 -0
  135. package/dist/commands/ai.js.map +1 -0
  136. package/dist/commands/blueprint.d.ts.map +1 -1
  137. package/dist/commands/blueprint.js +17 -3
  138. package/dist/commands/blueprint.js.map +1 -1
  139. package/dist/commands/design.d.ts.map +1 -1
  140. package/dist/commands/design.js +21 -2
  141. package/dist/commands/design.js.map +1 -1
  142. package/dist/commands/discover.d.ts.map +1 -1
  143. package/dist/commands/discover.js +9 -1
  144. package/dist/commands/discover.js.map +1 -1
  145. package/dist/commands/dna.d.ts.map +1 -1
  146. package/dist/commands/dna.js +23 -3
  147. package/dist/commands/dna.js.map +1 -1
  148. package/dist/commands/execute.d.ts +11 -0
  149. package/dist/commands/execute.d.ts.map +1 -1
  150. package/dist/commands/execute.js +111 -4
  151. package/dist/commands/execute.js.map +1 -1
  152. package/dist/commands/init.d.ts.map +1 -1
  153. package/dist/commands/init.js +1 -0
  154. package/dist/commands/init.js.map +1 -1
  155. package/dist/commands/migrate.d.ts.map +1 -1
  156. package/dist/commands/migrate.js +14 -2
  157. package/dist/commands/migrate.js.map +1 -1
  158. package/dist/commands/patterns.d.ts.map +1 -1
  159. package/dist/commands/patterns.js +14 -2
  160. package/dist/commands/patterns.js.map +1 -1
  161. package/dist/commands/refine.d.ts.map +1 -1
  162. package/dist/commands/refine.js +23 -2
  163. package/dist/commands/refine.js.map +1 -1
  164. package/dist/commands/reverse.d.ts.map +1 -1
  165. package/dist/commands/reverse.js +28 -3
  166. package/dist/commands/reverse.js.map +1 -1
  167. package/dist/commands/review.d.ts.map +1 -1
  168. package/dist/commands/review.js +25 -3
  169. package/dist/commands/review.js.map +1 -1
  170. package/dist/core/types/project.d.ts +1 -1
  171. package/dist/core/types/project.d.ts.map +1 -1
  172. package/dist/dag-runner/run_dag.d.ts +1 -1
  173. package/dist/dag-runner/run_dag.d.ts.map +1 -1
  174. package/dist/exec/safe-spawn.d.ts.map +1 -1
  175. package/dist/exec/safe-spawn.js +6 -1
  176. package/dist/exec/safe-spawn.js.map +1 -1
  177. package/dist/skills/bundled.d.ts +5 -0
  178. package/dist/skills/bundled.d.ts.map +1 -0
  179. package/dist/skills/bundled.js +34 -0
  180. package/dist/skills/bundled.js.map +1 -0
  181. package/dist/skills/commands/add.d.ts +1 -3
  182. package/dist/skills/commands/add.d.ts.map +1 -1
  183. package/dist/skills/commands/add.js +20 -3
  184. package/dist/skills/commands/add.js.map +1 -1
  185. package/dist/skills/tests/bundled.spec.d.ts +2 -0
  186. package/dist/skills/tests/bundled.spec.d.ts.map +1 -0
  187. package/dist/skills/tests/bundled.spec.js +24 -0
  188. package/dist/skills/tests/bundled.spec.js.map +1 -0
  189. package/dist/types/UpdateManifest.types.d.ts +1 -1
  190. package/dist/types/UpdateManifest.types.d.ts.map +1 -1
  191. package/dist/utils/dag-converter.js +1 -1
  192. package/dist/utils/dag-converter.js.map +1 -1
  193. package/dist/utils/project-detector.d.ts +1 -0
  194. package/dist/utils/project-detector.d.ts.map +1 -1
  195. package/dist/utils/project-detector.js +8 -0
  196. package/dist/utils/project-detector.js.map +1 -1
  197. package/dist/utils/project-generator.d.ts +1 -1
  198. package/dist/utils/project-generator.d.ts.map +1 -1
  199. package/dist/utils/project-generator.js +23 -2
  200. package/dist/utils/project-generator.js.map +1 -1
  201. package/dist/utils/templates.d.ts +2 -0
  202. package/dist/utils/templates.d.ts.map +1 -1
  203. package/dist/utils/templates.js +74 -0
  204. package/dist/utils/templates.js.map +1 -1
  205. package/dist/verification/__tests__/safe-spawn.test.js +12 -0
  206. package/dist/verification/__tests__/safe-spawn.test.js.map +1 -1
  207. package/package.json +2 -1
  208. package/skills/dare-ax/generator.ts +325 -0
  209. package/skills/dare-ax/index.ts +19 -0
  210. package/skills/dare-ax/metrics.ts +352 -0
  211. package/skills/dare-ax/package-lock.json +1855 -0
  212. package/skills/dare-ax/package.json +50 -0
  213. package/skills/dare-ax/secret-detector.ts +123 -0
  214. package/skills/dare-ax/skill.yml +19 -0
  215. package/skills/dare-ax/templates/llms.txt.jinja2 +80 -0
  216. package/skills/dare-ax/tests/generator.spec.ts +193 -0
  217. package/skills/dare-ax/tests/metrics.spec.ts +394 -0
  218. package/skills/dare-ax/tests/validator.spec.ts +298 -0
  219. package/skills/dare-ax/tsconfig.json +18 -0
  220. package/skills/dare-ax/types.ts +79 -0
  221. package/skills/dare-ax/validator.ts +238 -0
  222. package/skills/dare-frontend-design/generator.ts +616 -0
  223. package/skills/dare-frontend-design/index.ts +25 -0
  224. package/skills/dare-frontend-design/linter.ts +227 -0
  225. package/skills/dare-frontend-design/metrics.ts +82 -0
  226. package/skills/dare-frontend-design/package-lock.json +1855 -0
  227. package/skills/dare-frontend-design/package.json +43 -0
  228. package/skills/dare-frontend-design/skill.yml +20 -0
  229. package/skills/dare-frontend-design/tests/frontend_design.spec.ts +435 -0
  230. package/skills/dare-frontend-design/tsconfig.json +18 -0
  231. package/skills/dare-frontend-design/types.ts +62 -0
  232. package/skills/dare-layered-design/generator.ts +740 -0
  233. package/skills/dare-layered-design/index.ts +17 -0
  234. package/skills/dare-layered-design/linter.ts +462 -0
  235. package/skills/dare-layered-design/metrics.ts +409 -0
  236. package/skills/dare-layered-design/package-lock.json +1855 -0
  237. package/skills/dare-layered-design/package.json +50 -0
  238. package/skills/dare-layered-design/skill.yml +35 -0
  239. package/skills/dare-layered-design/tests/generator.spec.ts +156 -0
  240. package/skills/dare-layered-design/tests/linter.spec.ts +255 -0
  241. package/skills/dare-layered-design/tests/metrics.spec.ts +286 -0
  242. package/skills/dare-layered-design/tsconfig.json +18 -0
  243. package/skills/dare-layered-design/types.ts +48 -0
  244. package/skills/dare-llm-integration/cache/llm_cache.ts +122 -0
  245. package/skills/dare-llm-integration/index.ts +49 -0
  246. package/skills/dare-llm-integration/metrics.ts +107 -0
  247. package/skills/dare-llm-integration/package-lock.json +1855 -0
  248. package/skills/dare-llm-integration/package.json +49 -0
  249. package/skills/dare-llm-integration/prompts/prompt_loader.ts +258 -0
  250. package/skills/dare-llm-integration/providers/anthropic_provider.ts +159 -0
  251. package/skills/dare-llm-integration/providers/dummy_provider.ts +113 -0
  252. package/skills/dare-llm-integration/providers/llm_provider.ts +6 -0
  253. package/skills/dare-llm-integration/providers/openai_provider.ts +215 -0
  254. package/skills/dare-llm-integration/rate_limit/token_bucket.ts +86 -0
  255. package/skills/dare-llm-integration/skill.yml +23 -0
  256. package/skills/dare-llm-integration/tests/fixtures/greet_v1.jinja2 +1 -0
  257. package/skills/dare-llm-integration/tests/fixtures/summarize_v1.jinja2 +1 -0
  258. package/skills/dare-llm-integration/tests/fixtures/summarize_v2.jinja2 +3 -0
  259. package/skills/dare-llm-integration/tests/llm_integration.spec.ts +657 -0
  260. package/skills/dare-llm-integration/tsconfig.json +23 -0
  261. package/skills/dare-llm-integration/types.ts +91 -0
  262. package/skills/dare-llm-integration/validators/output_validator.ts +200 -0
  263. package/skills/dare-quality-telemetry/collect.ts +134 -0
  264. package/skills/dare-quality-telemetry/collectors/dare_ax_collector.ts +301 -0
  265. package/skills/dare-quality-telemetry/collectors/dare_layered_design_collector.ts +406 -0
  266. package/skills/dare-quality-telemetry/collectors/index.ts +24 -0
  267. package/skills/dare-quality-telemetry/github_actions_template.ts +25 -0
  268. package/skills/dare-quality-telemetry/index.ts +18 -0
  269. package/skills/dare-quality-telemetry/metrics.ts +137 -0
  270. package/skills/dare-quality-telemetry/package-lock.json +1855 -0
  271. package/skills/dare-quality-telemetry/package.json +48 -0
  272. package/skills/dare-quality-telemetry/regression.ts +60 -0
  273. package/skills/dare-quality-telemetry/reporter.ts +132 -0
  274. package/skills/dare-quality-telemetry/skill.yml +18 -0
  275. package/skills/dare-quality-telemetry/tests/quality_telemetry.spec.ts +885 -0
  276. package/skills/dare-quality-telemetry/tsconfig.json +19 -0
  277. package/skills/dare-quality-telemetry/types.ts +41 -0
  278. package/skills/dare-realtime/event_registry.ts +101 -0
  279. package/skills/dare-realtime/index.ts +30 -0
  280. package/skills/dare-realtime/metrics.ts +84 -0
  281. package/skills/dare-realtime/package-lock.json +1855 -0
  282. package/skills/dare-realtime/package.json +43 -0
  283. package/skills/dare-realtime/reconnect_strategy.ts +85 -0
  284. package/skills/dare-realtime/schema_validator.ts +80 -0
  285. package/skills/dare-realtime/skill.yml +21 -0
  286. package/skills/dare-realtime/subscription_manager.ts +106 -0
  287. package/skills/dare-realtime/tests/realtime.spec.ts +482 -0
  288. package/skills/dare-realtime/tsconfig.json +18 -0
  289. package/skills/dare-realtime/types.ts +51 -0
  290. package/templates/ide/antigravity/.agents/skills/dare-ai/SKILL.md +17 -0
  291. package/templates/ide/antigravity/.agents/skills/dare-blueprint/SKILL.md +2 -0
  292. package/templates/ide/antigravity/.agents/skills/dare-design/SKILL.md +2 -0
  293. package/templates/ide/antigravity/.agents/skills/dare-dna/SKILL.md +3 -0
  294. package/templates/ide/antigravity/.agents/skills/dare-migrate/SKILL.md +3 -0
  295. package/templates/ide/antigravity/.agents/skills/dare-patterns/SKILL.md +3 -0
  296. package/templates/ide/antigravity/.agents/skills/dare-refine/SKILL.md +3 -0
  297. package/templates/ide/antigravity/.agents/skills/dare-reverse/SKILL.md +3 -0
  298. package/templates/ide/antigravity/.agents/skills/dare-review/SKILL.md +3 -0
  299. package/templates/ide/claude/.claude/commands/dare-ai.md +17 -0
  300. package/templates/ide/claude/.claude/commands/dare-blueprint.md +2 -0
  301. package/templates/ide/claude/.claude/commands/dare-design.md +2 -0
  302. package/templates/ide/claude/.claude/commands/dare-dna.md +2 -0
  303. package/templates/ide/claude/.claude/commands/dare-migrate.md +2 -0
  304. package/templates/ide/claude/.claude/commands/dare-patterns.md +3 -0
  305. package/templates/ide/claude/.claude/commands/dare-refine.md +3 -0
  306. package/templates/ide/claude/.claude/commands/dare-reverse.md +2 -0
  307. package/templates/ide/claude/.claude/commands/dare-review.md +3 -0
  308. package/templates/ide/cursor/.cursor/commands/dare-ai.md +17 -0
  309. package/templates/ide/cursor/.cursor/commands/dare-blueprint.md +3 -0
  310. package/templates/ide/cursor/.cursor/commands/dare-design.md +3 -0
  311. package/templates/ide/cursor/.cursor/commands/dare-dna.md +2 -0
  312. package/templates/ide/cursor/.cursor/commands/dare-migrate.md +2 -0
  313. package/templates/ide/cursor/.cursor/commands/dare-patterns.md +3 -0
  314. package/templates/ide/cursor/.cursor/commands/dare-refine.md +3 -0
  315. package/templates/ide/cursor/.cursor/commands/dare-reverse.md +2 -0
  316. package/templates/ide/cursor/.cursor/commands/dare-review.md +3 -0
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Extract JSON object from provider stdout (raw JSON or fenced code block).
3
+ */
4
+ export function extractJsonObject(raw) {
5
+ const trimmed = raw.trim();
6
+ if (!trimmed)
7
+ throw new Error('empty provider output');
8
+ try {
9
+ return JSON.parse(trimmed);
10
+ }
11
+ catch {
12
+ // fall through
13
+ }
14
+ const fenceMatch = trimmed.match(/```(?:json)?\s*([\s\S]*?)```/i);
15
+ if (fenceMatch?.[1]) {
16
+ return JSON.parse(fenceMatch[1].trim());
17
+ }
18
+ const firstBrace = trimmed.indexOf('{');
19
+ const lastBrace = trimmed.lastIndexOf('}');
20
+ if (firstBrace >= 0 && lastBrace > firstBrace) {
21
+ return JSON.parse(trimmed.slice(firstBrace, lastBrace + 1));
22
+ }
23
+ throw new Error('provider output is not valid JSON');
24
+ }
25
+ //# sourceMappingURL=parse-json-output.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parse-json-output.js","sourceRoot":"","sources":["../../src/ai/parse-json-output.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,GAAW;IAC3C,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;IAC3B,IAAI,CAAC,OAAO;QAAE,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;IAEvD,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC7B,CAAC;IAAC,MAAM,CAAC;QACP,eAAe;IACjB,CAAC;IAED,MAAM,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC,+BAA+B,CAAC,CAAC;IAClE,IAAI,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACpB,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IAC1C,CAAC;IAED,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACxC,MAAM,SAAS,GAAG,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IAC3C,IAAI,UAAU,IAAI,CAAC,IAAI,SAAS,GAAG,UAAU,EAAE,CAAC;QAC9C,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,UAAU,EAAE,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC;IAC9D,CAAC;IAED,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;AACvD,CAAC"}
@@ -0,0 +1,20 @@
1
+ import type { AiCommandName, EnrichmentResult } from './types.js';
2
+ export declare function runCommandEnrichment(args: {
3
+ command: AiCommandName;
4
+ cwd: string;
5
+ facts: unknown;
6
+ provider?: string;
7
+ deep?: boolean;
8
+ extra?: string;
9
+ }): Promise<EnrichmentResult>;
10
+ export declare function maybeRunAiEnrichment(args: {
11
+ enabled: boolean;
12
+ provider?: string;
13
+ command: AiCommandName;
14
+ cwd: string;
15
+ facts: unknown;
16
+ deep?: boolean;
17
+ extra?: string;
18
+ json?: boolean;
19
+ }): Promise<EnrichmentResult | null>;
20
+ //# sourceMappingURL=pipeline.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pipeline.d.ts","sourceRoot":"","sources":["../../src/ai/pipeline.ts"],"names":[],"mappings":"AAoBA,OAAO,KAAK,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAqBlE,wBAAsB,oBAAoB,CAAC,IAAI,EAAE;IAC/C,OAAO,EAAE,aAAa,CAAC;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,OAAO,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CA4C5B;AAgTD,wBAAsB,oBAAoB,CAAC,IAAI,EAAE;IAC/C,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,aAAa,CAAC;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,OAAO,CAAC;IACf,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB,GAAG,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,CA0BnC"}
@@ -0,0 +1,303 @@
1
+ import ora from 'ora';
2
+ import chalk from 'chalk';
3
+ import fs from 'fs-extra';
4
+ import path from 'path';
5
+ import { loadAiConfig } from './config.js';
6
+ import { buildEnrichmentPrompt } from './prompts.js';
7
+ import { resolveProvider } from './registry.js';
8
+ import { jsonSchemaForCommand, validateCommandOutput, } from './schemas.js';
9
+ function replaceAgentComment(content, needle, value) {
10
+ const lines = content.split(/\r?\n/);
11
+ const idx = lines.findIndex((line) => line.includes('<!-- AGENT') && line.includes(needle));
12
+ if (idx >= 0) {
13
+ lines[idx] = value;
14
+ return lines.join('\n');
15
+ }
16
+ const genericIdx = lines.findIndex((line) => line.includes('<!-- AGENT'));
17
+ if (genericIdx >= 0) {
18
+ lines[genericIdx] = value;
19
+ return lines.join('\n');
20
+ }
21
+ return content;
22
+ }
23
+ function replaceFirstAgentBlock(content, value) {
24
+ return content.replace(/<!-- AGENT[^>]* -->/, value);
25
+ }
26
+ export async function runCommandEnrichment(args) {
27
+ const config = await loadAiConfig(args.cwd);
28
+ const { name, provider } = resolveProvider(config, args.provider);
29
+ const schema = jsonSchemaForCommand(args.command);
30
+ const prompt = buildEnrichmentPrompt(args.command, args.facts, {
31
+ deep: args.deep,
32
+ extra: args.extra,
33
+ });
34
+ const result = await provider.run({
35
+ prompt,
36
+ cwd: args.cwd,
37
+ schema,
38
+ });
39
+ if (!result.ok || result.data === undefined) {
40
+ return {
41
+ ok: false,
42
+ command: args.command,
43
+ provider: name,
44
+ error: result.error ?? 'provider returned no data',
45
+ };
46
+ }
47
+ try {
48
+ const validated = validateCommandOutput(args.command, result.data);
49
+ const artifactPath = await applyEnrichment(args.command, args.cwd, validated, {
50
+ deep: args.deep,
51
+ });
52
+ return {
53
+ ok: true,
54
+ command: args.command,
55
+ provider: name,
56
+ data: validated,
57
+ artifactPath,
58
+ };
59
+ }
60
+ catch (err) {
61
+ return {
62
+ ok: false,
63
+ command: args.command,
64
+ provider: name,
65
+ error: err instanceof Error ? err.message : String(err),
66
+ };
67
+ }
68
+ }
69
+ async function applyEnrichment(command, cwd, data, opts) {
70
+ switch (command) {
71
+ case 'reverse':
72
+ return applyReverseEnrichment(cwd, data, opts.deep);
73
+ case 'dna':
74
+ return applyDnaEnrichment(cwd, data);
75
+ case 'migrate':
76
+ return applyMigrateEnrichment(cwd, data);
77
+ case 'design':
78
+ return applyDesignEnrichment(cwd, data);
79
+ case 'patterns':
80
+ return applyPatternsEnrichment(cwd, data);
81
+ case 'blueprint':
82
+ return applyBlueprintEnrichment(cwd, data);
83
+ case 'review':
84
+ return applyReviewEnrichment(cwd, data);
85
+ case 'refine':
86
+ return applyRefineEnrichment(cwd, data);
87
+ default:
88
+ return writeGenericEnrichment(cwd, command, data);
89
+ }
90
+ }
91
+ async function writeGenericEnrichment(cwd, command, data) {
92
+ const dareDir = path.join(cwd, 'DARE');
93
+ await fs.ensureDir(dareDir);
94
+ const artifactPath = path.join(dareDir, `${command}-semantic.json`);
95
+ await fs.writeJSON(artifactPath, data, { spaces: 2 });
96
+ return artifactPath;
97
+ }
98
+ async function applyReverseEnrichment(cwd, semantic, deep) {
99
+ const reverseDir = path.join(cwd, 'DARE', 'REVERSE');
100
+ await fs.ensureDir(reverseDir);
101
+ const artifactPath = path.join(reverseDir, 'semantic-enrichment.json');
102
+ await fs.writeJSON(artifactPath, semantic, { spaces: 2 });
103
+ const ideiaPath = path.join(cwd, 'DARE', 'IDEIA.md');
104
+ if (await fs.pathExists(ideiaPath)) {
105
+ let ideia = await fs.readFile(ideiaPath, 'utf-8');
106
+ ideia = replaceFirstAgentBlock(ideia, semantic.purpose);
107
+ ideia = replaceAgentComment(ideia, 'entidades', semantic.domainGlossary);
108
+ if (semantic.mainFlowMermaid) {
109
+ ideia = ideia.replace(/```mermaid[\s\S]*?```/, '```mermaid\n' + semantic.mainFlowMermaid.trim() + '\n```');
110
+ }
111
+ if (semantic.openQuestions?.length) {
112
+ ideia = replaceAgentComment(ideia, 'NÃO foi possível', semantic.openQuestions.map((q) => `- ${q}`).join('\n'));
113
+ }
114
+ await fs.writeFile(ideiaPath, ideia);
115
+ }
116
+ if (deep) {
117
+ if (semantic.domainRules?.length && (await fs.pathExists(path.join(reverseDir, 'domain-rules.md')))) {
118
+ const rules = semantic.domainRules.map((r) => `- ${r}`).join('\n');
119
+ await fs.writeFile(path.join(reverseDir, 'domain-rules.md'), `# Domain Rules\n\n${rules}\n`);
120
+ }
121
+ if (semantic.permissionsMarkdown && (await fs.pathExists(path.join(reverseDir, 'permissions.md')))) {
122
+ await fs.writeFile(path.join(reverseDir, 'permissions.md'), semantic.permissionsMarkdown);
123
+ }
124
+ const c4Dir = path.join(reverseDir, 'c4');
125
+ if (semantic.c4ContextMermaid && (await fs.pathExists(path.join(c4Dir, 'c4-context.md')))) {
126
+ await fs.writeFile(path.join(c4Dir, 'c4-context.md'), `# C4 Context\n\n\`\`\`mermaid\n${semantic.c4ContextMermaid.trim()}\n\`\`\`\n`);
127
+ }
128
+ if (semantic.c4ContainerMermaid && (await fs.pathExists(path.join(c4Dir, 'c4-container.md')))) {
129
+ await fs.writeFile(path.join(c4Dir, 'c4-container.md'), `# C4 Container\n\n\`\`\`mermaid\n${semantic.c4ContainerMermaid.trim()}\n\`\`\`\n`);
130
+ }
131
+ }
132
+ if (semantic.modulePurposes) {
133
+ const files = (await fs.readdir(reverseDir)).filter((f) => f.startsWith('module-') && f.endsWith('.md'));
134
+ for (const file of files) {
135
+ const full = path.join(reverseDir, file);
136
+ let content = await fs.readFile(full, 'utf-8');
137
+ for (const [modId, purpose] of Object.entries(semantic.modulePurposes)) {
138
+ if (content.includes(modId)) {
139
+ content = replaceFirstAgentBlock(content, purpose);
140
+ }
141
+ }
142
+ await fs.writeFile(full, content);
143
+ }
144
+ }
145
+ return artifactPath;
146
+ }
147
+ async function applyDnaEnrichment(cwd, semantic) {
148
+ const dareDir = path.join(cwd, 'DARE');
149
+ const artifactPath = path.join(dareDir, 'dna-semantic.json');
150
+ await fs.writeJSON(artifactPath, semantic, { spaces: 2 });
151
+ const dnaPath = path.join(dareDir, 'PROJECT-DNA.md');
152
+ if (!(await fs.pathExists(dnaPath)))
153
+ return artifactPath;
154
+ let content = await fs.readFile(dnaPath, 'utf-8');
155
+ content = replaceFirstAgentBlock(content, semantic.namingNotes);
156
+ content = replaceAgentComment(content, 'padrão arquitetural', `**${semantic.architecturePattern}**\n\n${semantic.layerRules}`);
157
+ content = replaceAgentComment(content, 'estilo de teste', semantic.testingStyle);
158
+ content = replaceAgentComment(content, 'erros são tratados', semantic.errorHandling);
159
+ content = replaceAgentComment(content, 'SEMPRE', semantic.goldenRules.map((r) => `- ${r}`).join('\n'));
160
+ if (semantic.ambiguities?.length) {
161
+ content = replaceAgentComment(content, 'ambíguas', semantic.ambiguities.map((a) => `- ${a}`).join('\n'));
162
+ }
163
+ await fs.writeFile(dnaPath, content);
164
+ return artifactPath;
165
+ }
166
+ async function applyMigrateEnrichment(cwd, semantic) {
167
+ const dareDir = path.join(cwd, 'DARE');
168
+ const migrationDir = path.join(dareDir, 'MIGRATION');
169
+ await fs.ensureDir(migrationDir);
170
+ const artifactPath = path.join(dareDir, 'migrate-semantic.json');
171
+ await fs.writeJSON(artifactPath, semantic, { spaces: 2 });
172
+ const migrationPath = path.join(migrationDir, 'MIGRATION.md');
173
+ if (!(await fs.pathExists(migrationPath))) {
174
+ const body = `# MIGRATION
175
+
176
+ ## Estratégia de Migração
177
+ ${semantic.strategySummary}
178
+
179
+ ## Registro de Risco
180
+ ${semantic.riskAreas.map((r) => `- ${r}`).join('\n')}
181
+
182
+ ## Notas de Paridade
183
+ ${semantic.parityNotes}
184
+ ${semantic.blockingGaps?.length ? `\n## Blocking Gaps\n${semantic.blockingGaps.map((g) => `- ${g}`).join('\n')}` : ''}
185
+ `;
186
+ await fs.writeFile(migrationPath, body);
187
+ return artifactPath;
188
+ }
189
+ let content = await fs.readFile(migrationPath, 'utf-8');
190
+ content = replaceAgentComment(content, 'big-bang', semantic.strategySummary);
191
+ content = replaceAgentComment(content, 'riscos', semantic.riskAreas.map((r) => `- ${r}`).join('\n'));
192
+ content = replaceAgentComment(content, 'paridade', semantic.parityNotes);
193
+ if (semantic.blockingGaps?.length) {
194
+ content = replaceAgentComment(content, 'tratamento', semantic.blockingGaps.map((g) => `- ${g}`).join('\n'));
195
+ }
196
+ await fs.writeFile(migrationPath, content);
197
+ return artifactPath;
198
+ }
199
+ async function applyReviewEnrichment(cwd, semantic) {
200
+ const dareDir = path.join(cwd, 'DARE');
201
+ await fs.ensureDir(dareDir);
202
+ const artifactPath = path.join(dareDir, 'review-semantic.json');
203
+ const verdict = {
204
+ passed: semantic.passed,
205
+ unmetCriteria: semantic.unmetCriteria,
206
+ ...(semantic.notes ? { notes: semantic.notes } : {}),
207
+ };
208
+ await fs.writeJSON(artifactPath, verdict, { spaces: 2 });
209
+ return artifactPath;
210
+ }
211
+ async function applyRefineEnrichment(cwd, semantic) {
212
+ return writeGenericEnrichment(cwd, 'refine', semantic);
213
+ }
214
+ async function applyDesignEnrichment(cwd, semantic) {
215
+ const dareDir = path.join(cwd, 'DARE');
216
+ const artifactPath = path.join(dareDir, 'design-semantic.json');
217
+ await fs.writeJSON(artifactPath, semantic, { spaces: 2 });
218
+ const designPath = path.join(dareDir, 'DESIGN.md');
219
+ const goals = semantic.goals.map((g) => `- [ ] ${g}`).join('\n');
220
+ const constraints = semantic.constraints.map((c) => `- [ ] ${c}`).join('\n');
221
+ const success = semantic.successCriteria.map((s) => `- [ ] ${s}`).join('\n');
222
+ const journeys = semantic.userJourneys?.map((j) => `- ${j}`).join('\n') ?? '';
223
+ const body = `# DESIGN
224
+
225
+ ## Goals
226
+ ${goals}
227
+
228
+ ## Constraints
229
+ ${constraints}
230
+
231
+ ## Success Criteria
232
+ ${success}
233
+
234
+ ${journeys ? `## User Journeys\n${journeys}\n` : ''}
235
+ ---
236
+ *Enriched by DARE AI — ${new Date().toISOString()}*
237
+ `;
238
+ await fs.writeFile(designPath, body);
239
+ return artifactPath;
240
+ }
241
+ async function applyPatternsEnrichment(cwd, semantic) {
242
+ const dareDir = path.join(cwd, 'DARE');
243
+ const artifactPath = path.join(dareDir, 'patterns-semantic.json');
244
+ await fs.writeJSON(artifactPath, semantic, { spaces: 2 });
245
+ const patternsPath = path.join(dareDir, 'PATTERNS.md');
246
+ if (await fs.pathExists(patternsPath)) {
247
+ let content = await fs.readFile(patternsPath, 'utf-8');
248
+ content = replaceFirstAgentBlock(content, semantic.summary);
249
+ content = replaceAgentComment(content, 'recomenda', semantic.recommendations.map((r) => `- ${r}`).join('\n'));
250
+ await fs.writeFile(patternsPath, content);
251
+ }
252
+ return artifactPath;
253
+ }
254
+ async function applyBlueprintEnrichment(cwd, semantic) {
255
+ const dareDir = path.join(cwd, 'DARE');
256
+ const artifactPath = path.join(dareDir, 'blueprint-semantic.json');
257
+ await fs.writeJSON(artifactPath, semantic, { spaces: 2 });
258
+ const blueprintPath = path.join(dareDir, 'BLUEPRINT.md');
259
+ const decisions = semantic.keyDecisions.map((d) => `- ${d}`).join('\n');
260
+ const risks = semantic.risks && semantic.risks.length > 0
261
+ ? `\n## Risks\n${semantic.risks.map((r) => `- ${r}`).join('\n')}\n`
262
+ : '';
263
+ const taskNotes = semantic.taskNotes ? `\n## Task Notes\n${semantic.taskNotes}\n` : '';
264
+ const body = `# BLUEPRINT
265
+
266
+ ## Architecture Overview
267
+ ${semantic.architectureSummary}
268
+
269
+ ## Key Decisions
270
+ ${decisions}
271
+ ${risks}${taskNotes}
272
+ ---
273
+ *Enriched by DARE AI — ${new Date().toISOString()}*
274
+ `;
275
+ await fs.writeFile(blueprintPath, body);
276
+ return artifactPath;
277
+ }
278
+ export async function maybeRunAiEnrichment(args) {
279
+ if (!args.enabled)
280
+ return null;
281
+ const result = await runCommandEnrichment({
282
+ command: args.command,
283
+ cwd: args.cwd,
284
+ facts: args.facts,
285
+ provider: args.provider,
286
+ deep: args.deep,
287
+ extra: args.extra,
288
+ });
289
+ if (args.json) {
290
+ console.log(JSON.stringify(result, null, 2));
291
+ if (!result.ok)
292
+ process.exit(1);
293
+ return result;
294
+ }
295
+ const spinner = ora(`AI enrichment (${args.command})...`).start();
296
+ if (result.ok) {
297
+ spinner.succeed(chalk.green(`AI enrichment OK (${result.provider}) → ${result.artifactPath}`));
298
+ return result;
299
+ }
300
+ spinner.fail(chalk.red(`AI enrichment failed (${result.provider}): ${result.error}`));
301
+ process.exit(1);
302
+ }
303
+ //# sourceMappingURL=pipeline.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pipeline.js","sourceRoot":"","sources":["../../src/ai/pipeline.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EACL,oBAAoB,EACpB,qBAAqB,GAStB,MAAM,cAAc,CAAC;AAGtB,SAAS,mBAAmB,CAAC,OAAe,EAAE,MAAc,EAAE,KAAa;IACzE,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACrC,MAAM,GAAG,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;IAC5F,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC;QACb,KAAK,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QACnB,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IACD,MAAM,UAAU,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC;IAC1E,IAAI,UAAU,IAAI,CAAC,EAAE,CAAC;QACpB,KAAK,CAAC,UAAU,CAAC,GAAG,KAAK,CAAC;QAC1B,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,sBAAsB,CAAC,OAAe,EAAE,KAAa;IAC5D,OAAO,OAAO,CAAC,OAAO,CAAC,qBAAqB,EAAE,KAAK,CAAC,CAAC;AACvD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,IAO1C;IACC,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC5C,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,eAAe,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;IAClE,MAAM,MAAM,GAAG,oBAAoB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAClD,MAAM,MAAM,GAAG,qBAAqB,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,EAAE;QAC7D,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,KAAK,EAAE,IAAI,CAAC,KAAK;KAClB,CAAC,CAAC;IAEH,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,GAAG,CAAC;QAChC,MAAM;QACN,GAAG,EAAE,IAAI,CAAC,GAAG;QACb,MAAM;KACP,CAAC,CAAC;IAEH,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC5C,OAAO;YACL,EAAE,EAAE,KAAK;YACT,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,QAAQ,EAAE,IAAI;YACd,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,2BAA2B;SACnD,CAAC;IACJ,CAAC;IAED,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,qBAAqB,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;QACnE,MAAM,YAAY,GAAG,MAAM,eAAe,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,EAAE,SAAS,EAAE;YAC5E,IAAI,EAAE,IAAI,CAAC,IAAI;SAChB,CAAC,CAAC;QACH,OAAO;YACL,EAAE,EAAE,IAAI;YACR,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,QAAQ,EAAE,IAAI;YACd,IAAI,EAAE,SAAS;YACf,YAAY;SACb,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO;YACL,EAAE,EAAE,KAAK;YACT,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,QAAQ,EAAE,IAAI;YACd,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;SACxD,CAAC;IACJ,CAAC;AACH,CAAC;AAED,KAAK,UAAU,eAAe,CAC5B,OAAsB,EACtB,GAAW,EACX,IAAa,EACb,IAAwB;IAExB,QAAQ,OAAO,EAAE,CAAC;QAChB,KAAK,SAAS;YACZ,OAAO,sBAAsB,CAAC,GAAG,EAAE,IAA6C,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/F,KAAK,KAAK;YACR,OAAO,kBAAkB,CAAC,GAAG,EAAE,IAAyC,CAAC,CAAC;QAC5E,KAAK,SAAS;YACZ,OAAO,sBAAsB,CAAC,GAAG,EAAE,IAA6C,CAAC,CAAC;QACpF,KAAK,QAAQ;YACX,OAAO,qBAAqB,CAAC,GAAG,EAAE,IAA4C,CAAC,CAAC;QAClF,KAAK,UAAU;YACb,OAAO,uBAAuB,CAAC,GAAG,EAAE,IAA8C,CAAC,CAAC;QACtF,KAAK,WAAW;YACd,OAAO,wBAAwB,CAAC,GAAG,EAAE,IAA+C,CAAC,CAAC;QACxF,KAAK,QAAQ;YACX,OAAO,qBAAqB,CAAC,GAAG,EAAE,IAA4C,CAAC,CAAC;QAClF,KAAK,QAAQ;YACX,OAAO,qBAAqB,CAAC,GAAG,EAAE,IAA4C,CAAC,CAAC;QAClF;YACE,OAAO,sBAAsB,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;IACtD,CAAC;AACH,CAAC;AAED,KAAK,UAAU,sBAAsB,CACnC,GAAW,EACX,OAAsB,EACtB,IAAa;IAEb,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IACvC,MAAM,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IAC5B,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,OAAO,gBAAgB,CAAC,CAAC;IACpE,MAAM,EAAE,CAAC,SAAS,CAAC,YAAY,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;IACtD,OAAO,YAAY,CAAC;AACtB,CAAC;AAED,KAAK,UAAU,sBAAsB,CACnC,GAAW,EACX,QAA+C,EAC/C,IAAc;IAEd,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;IACrD,MAAM,EAAE,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;IAC/B,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,0BAA0B,CAAC,CAAC;IACvE,MAAM,EAAE,CAAC,SAAS,CAAC,YAAY,EAAE,QAAQ,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;IAE1D,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;IACrD,IAAI,MAAM,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QACnC,IAAI,KAAK,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAClD,KAAK,GAAG,sBAAsB,CAC5B,KAAK,EACL,QAAQ,CAAC,OAAO,CACjB,CAAC;QACF,KAAK,GAAG,mBAAmB,CAAC,KAAK,EAAE,WAAW,EAAE,QAAQ,CAAC,cAAc,CAAC,CAAC;QACzE,IAAI,QAAQ,CAAC,eAAe,EAAE,CAAC;YAC7B,KAAK,GAAG,KAAK,CAAC,OAAO,CACnB,uBAAuB,EACvB,cAAc,GAAG,QAAQ,CAAC,eAAe,CAAC,IAAI,EAAE,GAAG,OAAO,CAC3D,CAAC;QACJ,CAAC;QACD,IAAI,QAAQ,CAAC,aAAa,EAAE,MAAM,EAAE,CAAC;YACnC,KAAK,GAAG,mBAAmB,CACzB,KAAK,EACL,kBAAkB,EAClB,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CACvD,CAAC;QACJ,CAAC;QACD,MAAM,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IACvC,CAAC;IAED,IAAI,IAAI,EAAE,CAAC;QACT,IAAI,QAAQ,CAAC,WAAW,EAAE,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,iBAAiB,CAAC,CAAC,CAAC,EAAE,CAAC;YACpG,MAAM,KAAK,GAAG,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACnE,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,iBAAiB,CAAC,EAAE,qBAAqB,KAAK,IAAI,CAAC,CAAC;QAC/F,CAAC;QACD,IAAI,QAAQ,CAAC,mBAAmB,IAAI,CAAC,MAAM,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAAC;YACnG,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,gBAAgB,CAAC,EAAE,QAAQ,CAAC,mBAAmB,CAAC,CAAC;QAC5F,CAAC;QACD,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QAC1C,IAAI,QAAQ,CAAC,gBAAgB,IAAI,CAAC,MAAM,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,eAAe,CAAC,CAAC,CAAC,EAAE,CAAC;YAC1F,MAAM,EAAE,CAAC,SAAS,CAChB,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,eAAe,CAAC,EACjC,kCAAkC,QAAQ,CAAC,gBAAgB,CAAC,IAAI,EAAE,YAAY,CAC/E,CAAC;QACJ,CAAC;QACD,IAAI,QAAQ,CAAC,kBAAkB,IAAI,CAAC,MAAM,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,iBAAiB,CAAC,CAAC,CAAC,EAAE,CAAC;YAC9F,MAAM,EAAE,CAAC,SAAS,CAChB,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,iBAAiB,CAAC,EACnC,oCAAoC,QAAQ,CAAC,kBAAkB,CAAC,IAAI,EAAE,YAAY,CACnF,CAAC;QACJ,CAAC;IACH,CAAC;IAED,IAAI,QAAQ,CAAC,cAAc,EAAE,CAAC;QAC5B,MAAM,KAAK,GAAG,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;QACzG,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;YACzC,IAAI,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YAC/C,KAAK,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;gBACvE,IAAI,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;oBAC5B,OAAO,GAAG,sBAAsB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;gBACrD,CAAC;YACH,CAAC;YACD,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACpC,CAAC;IACH,CAAC;IAED,OAAO,YAAY,CAAC;AACtB,CAAC;AAED,KAAK,UAAU,kBAAkB,CAC/B,GAAW,EACX,QAA2C;IAE3C,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IACvC,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,mBAAmB,CAAC,CAAC;IAC7D,MAAM,EAAE,CAAC,SAAS,CAAC,YAAY,EAAE,QAAQ,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;IAE1D,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC;IACrD,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QAAE,OAAO,YAAY,CAAC;IAEzD,IAAI,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAClD,OAAO,GAAG,sBAAsB,CAAC,OAAO,EAAE,QAAQ,CAAC,WAAW,CAAC,CAAC;IAChE,OAAO,GAAG,mBAAmB,CAAC,OAAO,EAAE,qBAAqB,EAAE,KAAK,QAAQ,CAAC,mBAAmB,SAAS,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;IAC/H,OAAO,GAAG,mBAAmB,CAAC,OAAO,EAAE,iBAAiB,EAAE,QAAQ,CAAC,YAAY,CAAC,CAAC;IACjF,OAAO,GAAG,mBAAmB,CAAC,OAAO,EAAE,oBAAoB,EAAE,QAAQ,CAAC,aAAa,CAAC,CAAC;IACrF,OAAO,GAAG,mBAAmB,CAC3B,OAAO,EACP,QAAQ,EACR,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CACrD,CAAC;IACF,IAAI,QAAQ,CAAC,WAAW,EAAE,MAAM,EAAE,CAAC;QACjC,OAAO,GAAG,mBAAmB,CAC3B,OAAO,EACP,UAAU,EACV,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CACrD,CAAC;IACJ,CAAC;IACD,MAAM,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACrC,OAAO,YAAY,CAAC;AACtB,CAAC;AAED,KAAK,UAAU,sBAAsB,CACnC,GAAW,EACX,QAA+C;IAE/C,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IACvC,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;IACrD,MAAM,EAAE,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;IACjC,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,uBAAuB,CAAC,CAAC;IACjE,MAAM,EAAE,CAAC,SAAS,CAAC,YAAY,EAAE,QAAQ,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;IAE1D,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,cAAc,CAAC,CAAC;IAC9D,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC;QAC1C,MAAM,IAAI,GAAG;;;EAGf,QAAQ,CAAC,eAAe;;;EAGxB,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;;;EAGlD,QAAQ,CAAC,WAAW;EACpB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC,CAAC,uBAAuB,QAAQ,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;CACpH,CAAC;QACE,MAAM,EAAE,CAAC,SAAS,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;QACxC,OAAO,YAAY,CAAC;IACtB,CAAC;IAED,IAAI,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;IACxD,OAAO,GAAG,mBAAmB,CAAC,OAAO,EAAE,UAAU,EAAE,QAAQ,CAAC,eAAe,CAAC,CAAC;IAC7E,OAAO,GAAG,mBAAmB,CAC3B,OAAO,EACP,QAAQ,EACR,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CACnD,CAAC;IACF,OAAO,GAAG,mBAAmB,CAAC,OAAO,EAAE,UAAU,EAAE,QAAQ,CAAC,WAAW,CAAC,CAAC;IACzE,IAAI,QAAQ,CAAC,YAAY,EAAE,MAAM,EAAE,CAAC;QAClC,OAAO,GAAG,mBAAmB,CAC3B,OAAO,EACP,YAAY,EACZ,QAAQ,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CACtD,CAAC;IACJ,CAAC;IACD,MAAM,EAAE,CAAC,SAAS,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;IAC3C,OAAO,YAAY,CAAC;AACtB,CAAC;AAED,KAAK,UAAU,qBAAqB,CAClC,GAAW,EACX,QAA8C;IAE9C,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IACvC,MAAM,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IAC5B,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,sBAAsB,CAAC,CAAC;IAChE,MAAM,OAAO,GAAG;QACd,MAAM,EAAE,QAAQ,CAAC,MAAM;QACvB,aAAa,EAAE,QAAQ,CAAC,aAAa;QACrC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACrD,CAAC;IACF,MAAM,EAAE,CAAC,SAAS,CAAC,YAAY,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;IACzD,OAAO,YAAY,CAAC;AACtB,CAAC;AAED,KAAK,UAAU,qBAAqB,CAClC,GAAW,EACX,QAA8C;IAE9C,OAAO,sBAAsB,CAAC,GAAG,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;AACzD,CAAC;AAED,KAAK,UAAU,qBAAqB,CAClC,GAAW,EACX,QAA8C;IAE9C,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IACvC,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,sBAAsB,CAAC,CAAC;IAChE,MAAM,EAAE,CAAC,SAAS,CAAC,YAAY,EAAE,QAAQ,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;IAE1D,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;IACnD,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACjE,MAAM,WAAW,GAAG,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7E,MAAM,OAAO,GAAG,QAAQ,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7E,MAAM,QAAQ,GAAG,QAAQ,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;IAE9E,MAAM,IAAI,GAAG;;;EAGb,KAAK;;;EAGL,WAAW;;;EAGX,OAAO;;EAEP,QAAQ,CAAC,CAAC,CAAC,qBAAqB,QAAQ,IAAI,CAAC,CAAC,CAAC,EAAE;;yBAE1B,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;CAChD,CAAC;IACA,MAAM,EAAE,CAAC,SAAS,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;IACrC,OAAO,YAAY,CAAC;AACtB,CAAC;AAED,KAAK,UAAU,uBAAuB,CACpC,GAAW,EACX,QAAgD;IAEhD,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IACvC,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,wBAAwB,CAAC,CAAC;IAClE,MAAM,EAAE,CAAC,SAAS,CAAC,YAAY,EAAE,QAAQ,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;IAE1D,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;IACvD,IAAI,MAAM,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QACtC,IAAI,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;QACvD,OAAO,GAAG,sBAAsB,CAAC,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;QAC5D,OAAO,GAAG,mBAAmB,CAC3B,OAAO,EACP,WAAW,EACX,QAAQ,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CACzD,CAAC;QACF,MAAM,EAAE,CAAC,SAAS,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;IAC5C,CAAC;IACD,OAAO,YAAY,CAAC;AACtB,CAAC;AAED,KAAK,UAAU,wBAAwB,CACrC,GAAW,EACX,QAAiD;IAEjD,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IACvC,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,yBAAyB,CAAC,CAAC;IACnE,MAAM,EAAE,CAAC,SAAS,CAAC,YAAY,EAAE,QAAQ,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;IAE1D,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;IACzD,MAAM,SAAS,GAAG,QAAQ,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACxE,MAAM,KAAK,GACT,QAAQ,CAAC,KAAK,IAAI,QAAQ,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC;QACzC,CAAC,CAAC,eAAe,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;QACnE,CAAC,CAAC,EAAE,CAAC;IACT,MAAM,SAAS,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,oBAAoB,QAAQ,CAAC,SAAS,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;IAEvF,MAAM,IAAI,GAAG;;;EAGb,QAAQ,CAAC,mBAAmB;;;EAG5B,SAAS;EACT,KAAK,GAAG,SAAS;;yBAEM,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;CAChD,CAAC;IACA,MAAM,EAAE,CAAC,SAAS,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;IACxC,OAAO,YAAY,CAAC;AACtB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,IAS1C;IACC,IAAI,CAAC,IAAI,CAAC,OAAO;QAAE,OAAO,IAAI,CAAC;IAE/B,MAAM,MAAM,GAAG,MAAM,oBAAoB,CAAC;QACxC,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,GAAG,EAAE,IAAI,CAAC,GAAG;QACb,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,KAAK,EAAE,IAAI,CAAC,KAAK;KAClB,CAAC,CAAC;IAEH,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAC7C,IAAI,CAAC,MAAM,CAAC,EAAE;YAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAChC,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,MAAM,OAAO,GAAG,GAAG,CAAC,kBAAkB,IAAI,CAAC,OAAO,MAAM,CAAC,CAAC,KAAK,EAAE,CAAC;IAClE,IAAI,MAAM,CAAC,EAAE,EAAE,CAAC;QACd,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,qBAAqB,MAAM,CAAC,QAAQ,OAAO,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;QAC/F,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,yBAAyB,MAAM,CAAC,QAAQ,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IACtF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC"}
@@ -0,0 +1,6 @@
1
+ import type { AiCommandName } from './types.js';
2
+ export declare function buildEnrichmentPrompt(command: AiCommandName, facts: unknown, opts?: {
3
+ deep?: boolean;
4
+ extra?: string;
5
+ }): string;
6
+ //# sourceMappingURL=prompts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../../src/ai/prompts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhD,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,aAAa,EACtB,KAAK,EAAE,OAAO,EACd,IAAI,CAAC,EAAE;IAAE,IAAI,CAAC,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GACxC,MAAM,CAgER"}
@@ -0,0 +1,49 @@
1
+ export function buildEnrichmentPrompt(command, facts, opts) {
2
+ const factsJson = JSON.stringify(facts, null, 2);
3
+ const header = [
4
+ 'You are enriching DARE CLI artifacts from deterministic facts.',
5
+ 'Return ONLY a single JSON object matching the requested schema.',
6
+ 'Do not fabricate files or endpoints that are absent from the facts.',
7
+ 'If uncertain, state assumptions in openQuestions/ambiguities fields.',
8
+ '',
9
+ `Command: dare ${command}`,
10
+ opts?.deep ? 'Mode: deep (include extended semantic sections when applicable).' : '',
11
+ opts?.extra ? `Context: ${opts.extra}` : '',
12
+ '',
13
+ 'Deterministic facts:',
14
+ factsJson,
15
+ '',
16
+ ]
17
+ .filter(Boolean)
18
+ .join('\n');
19
+ switch (command) {
20
+ case 'reverse':
21
+ return (header +
22
+ 'Fill semantic reverse-engineering fields: purpose, domainGlossary, optional mermaid diagrams, ' +
23
+ 'modulePurposes map (module id -> responsibility), and deep sections when in deep mode.');
24
+ case 'dna':
25
+ return (header +
26
+ 'Infer house-style conventions: architecturePattern, layerRules, testingStyle, errorHandling, goldenRules.');
27
+ case 'migrate':
28
+ return (header +
29
+ 'Propose migration strategySummary, riskAreas, parityNotes, and blockingGaps for the target stack.');
30
+ case 'design':
31
+ return (header +
32
+ 'Turn the description and facts into goals, constraints, successCriteria, and optional userJourneys.');
33
+ case 'patterns':
34
+ return (header +
35
+ 'Summarize recurring patterns, recommendations, antiPatterns, and optional injectionNotes.');
36
+ case 'blueprint':
37
+ return (header +
38
+ 'Produce architectureSummary, keyDecisions, risks, and optional taskNotes for the blueprint phase.');
39
+ case 'review':
40
+ return (header +
41
+ 'Audit the task spec against implementation hints in facts; return passed, unmetCriteria, notes.');
42
+ case 'refine':
43
+ return (header +
44
+ 'Propose subtasks with id, title, optional files, and rationale for splitting the parent task.');
45
+ default:
46
+ return header;
47
+ }
48
+ }
49
+ //# sourceMappingURL=prompts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompts.js","sourceRoot":"","sources":["../../src/ai/prompts.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,qBAAqB,CACnC,OAAsB,EACtB,KAAc,EACd,IAAyC;IAEzC,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IACjD,MAAM,MAAM,GAAG;QACb,gEAAgE;QAChE,iEAAiE;QACjE,qEAAqE;QACrE,sEAAsE;QACtE,EAAE;QACF,iBAAiB,OAAO,EAAE;QAC1B,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,kEAAkE,CAAC,CAAC,CAAC,EAAE;QACpF,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,YAAY,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE;QAC3C,EAAE;QACF,sBAAsB;QACtB,SAAS;QACT,EAAE;KACH;SACE,MAAM,CAAC,OAAO,CAAC;SACf,IAAI,CAAC,IAAI,CAAC,CAAC;IAEd,QAAQ,OAAO,EAAE,CAAC;QAChB,KAAK,SAAS;YACZ,OAAO,CACL,MAAM;gBACN,gGAAgG;gBAChG,wFAAwF,CACzF,CAAC;QACJ,KAAK,KAAK;YACR,OAAO,CACL,MAAM;gBACN,2GAA2G,CAC5G,CAAC;QACJ,KAAK,SAAS;YACZ,OAAO,CACL,MAAM;gBACN,mGAAmG,CACpG,CAAC;QACJ,KAAK,QAAQ;YACX,OAAO,CACL,MAAM;gBACN,qGAAqG,CACtG,CAAC;QACJ,KAAK,UAAU;YACb,OAAO,CACL,MAAM;gBACN,2FAA2F,CAC5F,CAAC;QACJ,KAAK,WAAW;YACd,OAAO,CACL,MAAM;gBACN,mGAAmG,CACpG,CAAC;QACJ,KAAK,QAAQ;YACX,OAAO,CACL,MAAM;gBACN,iGAAiG,CAClG,CAAC;QACJ,KAAK,QAAQ;YACX,OAAO,CACL,MAAM;gBACN,+FAA+F,CAChG,CAAC;QACJ;YACE,OAAO,MAAM,CAAC;IAClB,CAAC;AACH,CAAC"}
@@ -0,0 +1,63 @@
1
+ import type { AgentRequest, AgentResult, AiProviderName, ProviderStatus } from './types.js';
2
+ import type { AiConfig } from './config.js';
3
+ export interface AiProvider {
4
+ readonly name: AiProviderName;
5
+ readonly requiresNetwork: boolean;
6
+ probe(): Promise<ProviderStatus>;
7
+ run(request: AgentRequest): Promise<AgentResult>;
8
+ }
9
+ export declare class MockAiProvider implements AiProvider {
10
+ readonly name: "mock";
11
+ readonly requiresNetwork = false;
12
+ private readonly responder;
13
+ constructor(responder?: (request: AgentRequest) => AgentResult);
14
+ probe(): Promise<ProviderStatus>;
15
+ run(request: AgentRequest): Promise<AgentResult>;
16
+ }
17
+ export declare class CodexAiProvider implements AiProvider {
18
+ readonly name: "codex";
19
+ readonly requiresNetwork = true;
20
+ private readonly config;
21
+ constructor(config: AiConfig);
22
+ private settings;
23
+ command(): string;
24
+ probe(): Promise<ProviderStatus>;
25
+ run(request: AgentRequest): Promise<AgentResult>;
26
+ }
27
+ export declare class ClaudeCodeAiProvider implements AiProvider {
28
+ readonly name: "claude-code";
29
+ readonly requiresNetwork = true;
30
+ private readonly config;
31
+ constructor(config: AiConfig);
32
+ private settings;
33
+ command(): string;
34
+ probe(): Promise<ProviderStatus>;
35
+ run(request: AgentRequest): Promise<AgentResult>;
36
+ }
37
+ declare abstract class GenericCliAiProvider implements AiProvider {
38
+ abstract readonly name: AiProviderName;
39
+ readonly requiresNetwork = true;
40
+ protected readonly config: AiConfig;
41
+ protected abstract configKey: 'cursor-cli' | 'antigravity-cli';
42
+ protected abstract defaultCommand: string;
43
+ protected abstract envKeys: readonly string[];
44
+ constructor(config: AiConfig);
45
+ command(): string;
46
+ probe(): Promise<ProviderStatus>;
47
+ run(request: AgentRequest): Promise<AgentResult>;
48
+ }
49
+ export declare class CursorCliAiProvider extends GenericCliAiProvider {
50
+ readonly name: "cursor-cli";
51
+ protected configKey: "cursor-cli";
52
+ protected defaultCommand: string;
53
+ protected envKeys: readonly ["DARE_CURSOR_COMMAND", "DARE_AI_CURSOR_COMMAND"];
54
+ }
55
+ export declare class AntigravityCliAiProvider extends GenericCliAiProvider {
56
+ readonly name: "antigravity-cli";
57
+ protected configKey: "antigravity-cli";
58
+ protected defaultCommand: string;
59
+ protected envKeys: readonly ["DARE_ANTIGRAVITY_COMMAND", "DARE_AI_ANTIGRAVITY_COMMAND"];
60
+ }
61
+ export declare function createCodexDriverFromAiConfig(config: AiConfig): import("../agent/driver.js").AgentDriver;
62
+ export {};
63
+ //# sourceMappingURL=providers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"providers.d.ts","sourceRoot":"","sources":["../../src/ai/providers.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5F,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAS5C,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;IAC9B,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAC;IAClC,KAAK,IAAI,OAAO,CAAC,cAAc,CAAC,CAAC;IACjC,GAAG,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;CAClD;AAiCD,qBAAa,cAAe,YAAW,UAAU;IAC/C,QAAQ,CAAC,IAAI,EAAG,MAAM,CAAU;IAChC,QAAQ,CAAC,eAAe,SAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAyC;gBAEvD,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,YAAY,KAAK,WAAW;IAWxD,KAAK,IAAI,OAAO,CAAC,cAAc,CAAC;IAUhC,GAAG,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC;CAMvD;AAED,qBAAa,eAAgB,YAAW,UAAU;IAChD,QAAQ,CAAC,IAAI,EAAG,OAAO,CAAU;IACjC,QAAQ,CAAC,eAAe,QAAQ;IAChC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAW;gBAEtB,MAAM,EAAE,QAAQ;IAI5B,OAAO,CAAC,QAAQ;IAUhB,OAAO,IAAI,MAAM;IASX,KAAK,IAAI,OAAO,CAAC,cAAc,CAAC;IAKhC,GAAG,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC;CAoFvD;AAED,qBAAa,oBAAqB,YAAW,UAAU;IACrD,QAAQ,CAAC,IAAI,EAAG,aAAa,CAAU;IACvC,QAAQ,CAAC,eAAe,QAAQ;IAChC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAW;gBAEtB,MAAM,EAAE,QAAQ;IAI5B,OAAO,CAAC,QAAQ;IAQhB,OAAO,IAAI,MAAM;IASX,KAAK,IAAI,OAAO,CAAC,cAAc,CAAC;IAKhC,GAAG,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC;CA4CvD;AAED,uBAAe,oBAAqB,YAAW,UAAU;IACvD,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;IACvC,QAAQ,CAAC,eAAe,QAAQ;IAChC,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC;IACpC,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,YAAY,GAAG,iBAAiB,CAAC;IAC/D,SAAS,CAAC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAC1C,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;gBAElC,MAAM,EAAE,QAAQ;IAI5B,OAAO,IAAI,MAAM;IAUX,KAAK,IAAI,OAAO,CAAC,cAAc,CAAC;IAKhC,GAAG,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC;CAmCvD;AAED,qBAAa,mBAAoB,SAAQ,oBAAoB;IAC3D,QAAQ,CAAC,IAAI,EAAG,YAAY,CAAU;IACtC,SAAS,CAAC,SAAS,EAAG,YAAY,CAAU;IAC5C,SAAS,CAAC,cAAc,SAAkB;IAC1C,SAAS,CAAC,OAAO,6DAA8D;CAChF;AAED,qBAAa,wBAAyB,SAAQ,oBAAoB;IAChE,QAAQ,CAAC,IAAI,EAAG,iBAAiB,CAAU;IAC3C,SAAS,CAAC,SAAS,EAAG,iBAAiB,CAAU;IACjD,SAAS,CAAC,cAAc,SAAiB;IACzC,SAAS,CAAC,OAAO,uEAAwE;CAC1F;AAED,wBAAgB,6BAA6B,CAAC,MAAM,EAAE,QAAQ,4CAS7D"}