popeye-cli 2.2.0 → 2.7.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 (323) hide show
  1. package/dist/adapters/gemini.d.ts +14 -0
  2. package/dist/adapters/gemini.d.ts.map +1 -1
  3. package/dist/adapters/gemini.js +41 -6
  4. package/dist/adapters/gemini.js.map +1 -1
  5. package/dist/adapters/grok.d.ts +14 -0
  6. package/dist/adapters/grok.d.ts.map +1 -1
  7. package/dist/adapters/grok.js +42 -6
  8. package/dist/adapters/grok.js.map +1 -1
  9. package/dist/adapters/openai.d.ts +10 -0
  10. package/dist/adapters/openai.d.ts.map +1 -1
  11. package/dist/adapters/openai.js +44 -5
  12. package/dist/adapters/openai.js.map +1 -1
  13. package/dist/cli/commands/create.js +1 -1
  14. package/dist/cli/commands/create.js.map +1 -1
  15. package/dist/cli/interactive.d.ts.map +1 -1
  16. package/dist/cli/interactive.js +324 -20
  17. package/dist/cli/interactive.js.map +1 -1
  18. package/dist/generators/all.d.ts.map +1 -1
  19. package/dist/generators/all.js +3 -2
  20. package/dist/generators/all.js.map +1 -1
  21. package/dist/generators/doc-parser.d.ts +21 -6
  22. package/dist/generators/doc-parser.d.ts.map +1 -1
  23. package/dist/generators/doc-parser.js +55 -4
  24. package/dist/generators/doc-parser.js.map +1 -1
  25. package/dist/generators/templates/fullstack.js +1 -1
  26. package/dist/generators/templates/website-components.js +1 -1
  27. package/dist/generators/templates/website-components.js.map +1 -1
  28. package/dist/generators/templates/website-config.d.ts +4 -1
  29. package/dist/generators/templates/website-config.d.ts.map +1 -1
  30. package/dist/generators/templates/website-config.js +17 -11
  31. package/dist/generators/templates/website-config.js.map +1 -1
  32. package/dist/generators/templates/website-conversion.js +1 -1
  33. package/dist/generators/templates/website-conversion.js.map +1 -1
  34. package/dist/generators/templates/website-landing.js +1 -1
  35. package/dist/generators/templates/website-landing.js.map +1 -1
  36. package/dist/generators/templates/website-layout.d.ts +36 -4
  37. package/dist/generators/templates/website-layout.d.ts.map +1 -1
  38. package/dist/generators/templates/website-layout.js +466 -23
  39. package/dist/generators/templates/website-layout.js.map +1 -1
  40. package/dist/generators/templates/website-pricing.js +1 -1
  41. package/dist/generators/templates/website-pricing.js.map +1 -1
  42. package/dist/generators/templates/website-sections.js +1 -1
  43. package/dist/generators/templates/website-sections.js.map +1 -1
  44. package/dist/generators/templates/website-seo.d.ts.map +1 -1
  45. package/dist/generators/templates/website-seo.js +4 -1
  46. package/dist/generators/templates/website-seo.js.map +1 -1
  47. package/dist/generators/templates/website.d.ts +1 -1
  48. package/dist/generators/templates/website.d.ts.map +1 -1
  49. package/dist/generators/templates/website.js +1 -1
  50. package/dist/generators/templates/website.js.map +1 -1
  51. package/dist/generators/website-content-ai.d.ts +52 -0
  52. package/dist/generators/website-content-ai.d.ts.map +1 -0
  53. package/dist/generators/website-content-ai.js +141 -0
  54. package/dist/generators/website-content-ai.js.map +1 -0
  55. package/dist/generators/website-content-scanner.d.ts +1 -1
  56. package/dist/generators/website-content-scanner.d.ts.map +1 -1
  57. package/dist/generators/website-content-scanner.js +98 -1
  58. package/dist/generators/website-content-scanner.js.map +1 -1
  59. package/dist/generators/website-context.d.ts +34 -1
  60. package/dist/generators/website-context.d.ts.map +1 -1
  61. package/dist/generators/website-context.js +131 -9
  62. package/dist/generators/website-context.js.map +1 -1
  63. package/dist/generators/website-debug.d.ts +12 -0
  64. package/dist/generators/website-debug.d.ts.map +1 -1
  65. package/dist/generators/website-debug.js +16 -0
  66. package/dist/generators/website-debug.js.map +1 -1
  67. package/dist/generators/website.d.ts.map +1 -1
  68. package/dist/generators/website.js +26 -4
  69. package/dist/generators/website.js.map +1 -1
  70. package/dist/pipeline/auto-recovery.d.ts +56 -0
  71. package/dist/pipeline/auto-recovery.d.ts.map +1 -0
  72. package/dist/pipeline/auto-recovery.js +185 -0
  73. package/dist/pipeline/auto-recovery.js.map +1 -0
  74. package/dist/pipeline/change-request.d.ts +39 -0
  75. package/dist/pipeline/change-request.d.ts.map +1 -1
  76. package/dist/pipeline/change-request.js +40 -1
  77. package/dist/pipeline/change-request.js.map +1 -1
  78. package/dist/pipeline/check-runner.d.ts +30 -1
  79. package/dist/pipeline/check-runner.d.ts.map +1 -1
  80. package/dist/pipeline/check-runner.js +122 -1
  81. package/dist/pipeline/check-runner.js.map +1 -1
  82. package/dist/pipeline/command-resolver.d.ts.map +1 -1
  83. package/dist/pipeline/command-resolver.js +33 -2
  84. package/dist/pipeline/command-resolver.js.map +1 -1
  85. package/dist/pipeline/consensus/arbitrator-query.d.ts +22 -0
  86. package/dist/pipeline/consensus/arbitrator-query.d.ts.map +1 -0
  87. package/dist/pipeline/consensus/arbitrator-query.js +70 -0
  88. package/dist/pipeline/consensus/arbitrator-query.js.map +1 -0
  89. package/dist/pipeline/consensus/consensus-runner.d.ts +131 -7
  90. package/dist/pipeline/consensus/consensus-runner.d.ts.map +1 -1
  91. package/dist/pipeline/consensus/consensus-runner.js +809 -35
  92. package/dist/pipeline/consensus/consensus-runner.js.map +1 -1
  93. package/dist/pipeline/cr-lifecycle.d.ts +42 -0
  94. package/dist/pipeline/cr-lifecycle.d.ts.map +1 -0
  95. package/dist/pipeline/cr-lifecycle.js +89 -0
  96. package/dist/pipeline/cr-lifecycle.js.map +1 -0
  97. package/dist/pipeline/gate-engine.d.ts +1 -0
  98. package/dist/pipeline/gate-engine.d.ts.map +1 -1
  99. package/dist/pipeline/gate-engine.js +26 -7
  100. package/dist/pipeline/gate-engine.js.map +1 -1
  101. package/dist/pipeline/orchestrator.d.ts +1 -1
  102. package/dist/pipeline/orchestrator.d.ts.map +1 -1
  103. package/dist/pipeline/orchestrator.js +306 -16
  104. package/dist/pipeline/orchestrator.js.map +1 -1
  105. package/dist/pipeline/packets/consensus-packet-builder.d.ts +15 -4
  106. package/dist/pipeline/packets/consensus-packet-builder.d.ts.map +1 -1
  107. package/dist/pipeline/packets/consensus-packet-builder.js +29 -17
  108. package/dist/pipeline/packets/consensus-packet-builder.js.map +1 -1
  109. package/dist/pipeline/phases/architecture.d.ts.map +1 -1
  110. package/dist/pipeline/phases/architecture.js +5 -3
  111. package/dist/pipeline/phases/architecture.js.map +1 -1
  112. package/dist/pipeline/phases/audit.d.ts.map +1 -1
  113. package/dist/pipeline/phases/audit.js +5 -3
  114. package/dist/pipeline/phases/audit.js.map +1 -1
  115. package/dist/pipeline/phases/consensus-architecture.d.ts.map +1 -1
  116. package/dist/pipeline/phases/consensus-architecture.js +10 -1
  117. package/dist/pipeline/phases/consensus-architecture.js.map +1 -1
  118. package/dist/pipeline/phases/consensus-master-plan.d.ts.map +1 -1
  119. package/dist/pipeline/phases/consensus-master-plan.js +10 -3
  120. package/dist/pipeline/phases/consensus-master-plan.js.map +1 -1
  121. package/dist/pipeline/phases/consensus-role-plans.d.ts.map +1 -1
  122. package/dist/pipeline/phases/consensus-role-plans.js +10 -1
  123. package/dist/pipeline/phases/consensus-role-plans.js.map +1 -1
  124. package/dist/pipeline/phases/done.d.ts.map +1 -1
  125. package/dist/pipeline/phases/done.js +9 -4
  126. package/dist/pipeline/phases/done.js.map +1 -1
  127. package/dist/pipeline/phases/intake.d.ts.map +1 -1
  128. package/dist/pipeline/phases/intake.js +7 -3
  129. package/dist/pipeline/phases/intake.js.map +1 -1
  130. package/dist/pipeline/phases/phase-context.d.ts +2 -0
  131. package/dist/pipeline/phases/phase-context.d.ts.map +1 -1
  132. package/dist/pipeline/phases/phase-context.js +3 -1
  133. package/dist/pipeline/phases/phase-context.js.map +1 -1
  134. package/dist/pipeline/phases/production-gate.d.ts.map +1 -1
  135. package/dist/pipeline/phases/production-gate.js +28 -3
  136. package/dist/pipeline/phases/production-gate.js.map +1 -1
  137. package/dist/pipeline/phases/qa-validation.d.ts.map +1 -1
  138. package/dist/pipeline/phases/qa-validation.js +38 -5
  139. package/dist/pipeline/phases/qa-validation.js.map +1 -1
  140. package/dist/pipeline/phases/recovery-loop.d.ts +2 -0
  141. package/dist/pipeline/phases/recovery-loop.d.ts.map +1 -1
  142. package/dist/pipeline/phases/recovery-loop.js +200 -6
  143. package/dist/pipeline/phases/recovery-loop.js.map +1 -1
  144. package/dist/pipeline/phases/review.d.ts.map +1 -1
  145. package/dist/pipeline/phases/review.js +58 -28
  146. package/dist/pipeline/phases/review.js.map +1 -1
  147. package/dist/pipeline/phases/role-planning.d.ts.map +1 -1
  148. package/dist/pipeline/phases/role-planning.js +18 -2
  149. package/dist/pipeline/phases/role-planning.js.map +1 -1
  150. package/dist/pipeline/phases/stuck.d.ts.map +1 -1
  151. package/dist/pipeline/phases/stuck.js +10 -0
  152. package/dist/pipeline/phases/stuck.js.map +1 -1
  153. package/dist/pipeline/repo-snapshot.d.ts.map +1 -1
  154. package/dist/pipeline/repo-snapshot.js +3 -0
  155. package/dist/pipeline/repo-snapshot.js.map +1 -1
  156. package/dist/pipeline/role-execution-adapter.d.ts +2 -1
  157. package/dist/pipeline/role-execution-adapter.d.ts.map +1 -1
  158. package/dist/pipeline/role-execution-adapter.js +22 -7
  159. package/dist/pipeline/role-execution-adapter.js.map +1 -1
  160. package/dist/pipeline/skill-loader.d.ts +19 -0
  161. package/dist/pipeline/skill-loader.d.ts.map +1 -1
  162. package/dist/pipeline/skill-loader.js +22 -0
  163. package/dist/pipeline/skill-loader.js.map +1 -1
  164. package/dist/pipeline/skills/coverage-gate.d.ts +44 -0
  165. package/dist/pipeline/skills/coverage-gate.d.ts.map +1 -0
  166. package/dist/pipeline/skills/coverage-gate.js +143 -0
  167. package/dist/pipeline/skills/coverage-gate.js.map +1 -0
  168. package/dist/pipeline/skills/usage-registry.d.ts +48 -0
  169. package/dist/pipeline/skills/usage-registry.d.ts.map +1 -0
  170. package/dist/pipeline/skills/usage-registry.js +55 -0
  171. package/dist/pipeline/skills/usage-registry.js.map +1 -0
  172. package/dist/pipeline/strategy-context.d.ts +20 -0
  173. package/dist/pipeline/strategy-context.d.ts.map +1 -0
  174. package/dist/pipeline/strategy-context.js +55 -0
  175. package/dist/pipeline/strategy-context.js.map +1 -0
  176. package/dist/pipeline/type-defs/artifacts.d.ts +25 -5
  177. package/dist/pipeline/type-defs/artifacts.d.ts.map +1 -1
  178. package/dist/pipeline/type-defs/artifacts.js +4 -0
  179. package/dist/pipeline/type-defs/artifacts.js.map +1 -1
  180. package/dist/pipeline/type-defs/audit.d.ts +25 -13
  181. package/dist/pipeline/type-defs/audit.d.ts.map +1 -1
  182. package/dist/pipeline/type-defs/checks.d.ts +18 -8
  183. package/dist/pipeline/type-defs/checks.d.ts.map +1 -1
  184. package/dist/pipeline/type-defs/checks.js +4 -0
  185. package/dist/pipeline/type-defs/checks.js.map +1 -1
  186. package/dist/pipeline/type-defs/packets.d.ts +104 -18
  187. package/dist/pipeline/type-defs/packets.d.ts.map +1 -1
  188. package/dist/pipeline/type-defs/packets.js +17 -1
  189. package/dist/pipeline/type-defs/packets.js.map +1 -1
  190. package/dist/pipeline/type-defs/state.d.ts +160 -16
  191. package/dist/pipeline/type-defs/state.d.ts.map +1 -1
  192. package/dist/pipeline/type-defs/state.js +26 -1
  193. package/dist/pipeline/type-defs/state.js.map +1 -1
  194. package/dist/shared/text-utils.d.ts +23 -0
  195. package/dist/shared/text-utils.d.ts.map +1 -0
  196. package/dist/shared/text-utils.js +66 -0
  197. package/dist/shared/text-utils.js.map +1 -0
  198. package/dist/shared/website-strategy-format.d.ts +18 -0
  199. package/dist/shared/website-strategy-format.d.ts.map +1 -0
  200. package/dist/shared/website-strategy-format.js +47 -0
  201. package/dist/shared/website-strategy-format.js.map +1 -0
  202. package/dist/state/index.d.ts +2 -0
  203. package/dist/state/index.d.ts.map +1 -1
  204. package/dist/state/index.js +57 -8
  205. package/dist/state/index.js.map +1 -1
  206. package/dist/types/consensus.d.ts +1 -0
  207. package/dist/types/consensus.d.ts.map +1 -1
  208. package/dist/types/consensus.js.map +1 -1
  209. package/dist/types/website-strategy.d.ts +1 -1
  210. package/dist/types/workflow.d.ts +447 -0
  211. package/dist/types/workflow.d.ts.map +1 -1
  212. package/dist/types/workflow.js +3 -0
  213. package/dist/types/workflow.js.map +1 -1
  214. package/dist/upgrade/handlers.d.ts.map +1 -1
  215. package/dist/upgrade/handlers.js +6 -3
  216. package/dist/upgrade/handlers.js.map +1 -1
  217. package/dist/workflow/consensus.d.ts.map +1 -1
  218. package/dist/workflow/consensus.js +1 -0
  219. package/dist/workflow/consensus.js.map +1 -1
  220. package/dist/workflow/website-strategy.d.ts.map +1 -1
  221. package/dist/workflow/website-strategy.js +2 -29
  222. package/dist/workflow/website-strategy.js.map +1 -1
  223. package/dist/workflow/website-updater.d.ts.map +1 -1
  224. package/dist/workflow/website-updater.js +3 -2
  225. package/dist/workflow/website-updater.js.map +1 -1
  226. package/package.json +1 -1
  227. package/src/adapters/gemini.ts +51 -6
  228. package/src/adapters/grok.ts +51 -6
  229. package/src/adapters/openai.ts +53 -5
  230. package/src/cli/commands/create.ts +1 -1
  231. package/src/cli/interactive.ts +333 -19
  232. package/src/generators/all.ts +3 -2
  233. package/src/generators/doc-parser.ts +75 -15
  234. package/src/generators/templates/fullstack.ts +1 -1
  235. package/src/generators/templates/website-components.ts +1 -1
  236. package/src/generators/templates/website-config.ts +23 -11
  237. package/src/generators/templates/website-conversion.ts +1 -1
  238. package/src/generators/templates/website-landing.ts +1 -1
  239. package/src/generators/templates/website-layout.ts +491 -23
  240. package/src/generators/templates/website-pricing.ts +1 -1
  241. package/src/generators/templates/website-sections.ts +1 -1
  242. package/src/generators/templates/website-seo.ts +4 -1
  243. package/src/generators/templates/website.ts +3 -0
  244. package/src/generators/website-content-ai.ts +186 -0
  245. package/src/generators/website-content-scanner.ts +113 -1
  246. package/src/generators/website-context.ts +151 -12
  247. package/src/generators/website-debug.ts +26 -0
  248. package/src/generators/website.ts +28 -3
  249. package/src/pipeline/auto-recovery.ts +283 -0
  250. package/src/pipeline/change-request.ts +63 -1
  251. package/src/pipeline/check-runner.ts +141 -2
  252. package/src/pipeline/command-resolver.ts +34 -2
  253. package/src/pipeline/consensus/arbitrator-query.ts +101 -0
  254. package/src/pipeline/consensus/consensus-runner.ts +1099 -42
  255. package/src/pipeline/cr-lifecycle.ts +103 -0
  256. package/src/pipeline/gate-engine.ts +35 -7
  257. package/src/pipeline/orchestrator.ts +361 -16
  258. package/src/pipeline/packets/consensus-packet-builder.ts +44 -18
  259. package/src/pipeline/phases/architecture.ts +6 -3
  260. package/src/pipeline/phases/audit.ts +6 -3
  261. package/src/pipeline/phases/consensus-architecture.ts +10 -1
  262. package/src/pipeline/phases/consensus-master-plan.ts +10 -3
  263. package/src/pipeline/phases/consensus-role-plans.ts +10 -1
  264. package/src/pipeline/phases/done.ts +15 -4
  265. package/src/pipeline/phases/intake.ts +7 -3
  266. package/src/pipeline/phases/phase-context.ts +6 -1
  267. package/src/pipeline/phases/production-gate.ts +41 -3
  268. package/src/pipeline/phases/qa-validation.ts +51 -5
  269. package/src/pipeline/phases/recovery-loop.ts +229 -7
  270. package/src/pipeline/phases/review.ts +73 -30
  271. package/src/pipeline/phases/role-planning.ts +21 -2
  272. package/src/pipeline/phases/stuck.ts +10 -0
  273. package/src/pipeline/repo-snapshot.ts +3 -0
  274. package/src/pipeline/role-execution-adapter.ts +30 -4
  275. package/src/pipeline/skill-loader.ts +33 -0
  276. package/src/pipeline/skills/coverage-gate.ts +199 -0
  277. package/src/pipeline/skills/usage-registry.ts +87 -0
  278. package/src/pipeline/strategy-context.ts +60 -0
  279. package/src/pipeline/type-defs/artifacts.ts +4 -0
  280. package/src/pipeline/type-defs/checks.ts +4 -0
  281. package/src/pipeline/type-defs/packets.ts +18 -1
  282. package/src/pipeline/type-defs/state.ts +26 -1
  283. package/src/shared/text-utils.ts +70 -0
  284. package/src/shared/website-strategy-format.ts +56 -0
  285. package/src/state/index.ts +60 -8
  286. package/src/types/consensus.ts +1 -0
  287. package/src/types/workflow.ts +6 -0
  288. package/src/upgrade/handlers.ts +9 -3
  289. package/src/workflow/consensus.ts +1 -0
  290. package/src/workflow/website-strategy.ts +2 -36
  291. package/src/workflow/website-updater.ts +4 -2
  292. package/tests/adapters/gemini.test.ts +165 -0
  293. package/tests/adapters/grok.test.ts +137 -0
  294. package/tests/adapters/openai.test.ts +128 -0
  295. package/tests/generators/doc-parser.test.ts +88 -9
  296. package/tests/generators/quality-gate.test.ts +19 -3
  297. package/tests/generators/website-components.test.ts +34 -0
  298. package/tests/generators/website-content-ai.test.ts +308 -0
  299. package/tests/generators/website-content-scanner.test.ts +86 -0
  300. package/tests/generators/website-context.test.ts +3 -2
  301. package/tests/integration/smokestack-scaffold.test.ts +385 -0
  302. package/tests/pipeline/auto-recovery.test.ts +337 -0
  303. package/tests/pipeline/change-request.test.ts +70 -0
  304. package/tests/pipeline/command-resolver.test.ts +42 -0
  305. package/tests/pipeline/consensus/arbitrator-query.test.ts +107 -0
  306. package/tests/pipeline/consensus-runner.test.ts +1333 -10
  307. package/tests/pipeline/consensus-scoring.test.ts +602 -18
  308. package/tests/pipeline/gate-engine.test.ts +34 -0
  309. package/tests/pipeline/install-check.test.ts +261 -0
  310. package/tests/pipeline/orchestrator.test.ts +1506 -15
  311. package/tests/pipeline/packets/builders.test.ts +29 -6
  312. package/tests/pipeline/phases/role-planning.strategy.test.ts +204 -0
  313. package/tests/pipeline/pipeline-persistence.test.ts +230 -0
  314. package/tests/pipeline/recovery-loop-guidance.test.ts +280 -0
  315. package/tests/pipeline/role-execution-adapter.test.ts +88 -0
  316. package/tests/pipeline/skills/coverage-gate.test.ts +370 -0
  317. package/tests/pipeline/skills/usage-registry.test.ts +114 -0
  318. package/tests/pipeline/strategy-context.test.ts +148 -0
  319. package/tests/shared/text-utils.test.ts +155 -0
  320. package/tests/state/progress-analysis.test.ts +375 -0
  321. package/tests/upgrade/handlers.test.ts +33 -2
  322. package/tests/workflow/consensus.test.ts +6 -0
  323. package/tsconfig.json +1 -1
@@ -26,14 +26,22 @@ export function resolveCommands(snapshot, overrides) {
26
26
  case 'python':
27
27
  resolved = resolvePythonCommands(snapshot);
28
28
  break;
29
- case 'mixed':
29
+ case 'mixed': {
30
30
  // Prefer Node commands, augment with Python where Node is missing
31
31
  resolved = resolveNodeCommands(pm, scripts, snapshot);
32
+ const pyResolved = resolvePythonCommands(snapshot);
32
33
  if (!resolved.test) {
33
- const pyResolved = resolvePythonCommands(snapshot);
34
34
  resolved.test = pyResolved.test;
35
35
  }
36
+ // Chain both install commands for mixed projects
37
+ if (resolved.install && pyResolved.install) {
38
+ resolved.install = `${resolved.install} && ${pyResolved.install}`;
39
+ }
40
+ else if (!resolved.install) {
41
+ resolved.install = pyResolved.install;
42
+ }
36
43
  break;
44
+ }
37
45
  default:
38
46
  resolved = { resolved_from: 'none' };
39
47
  }
@@ -51,6 +59,10 @@ export function resolveCommands(snapshot, overrides) {
51
59
  resolved.migrations = overrides.migrations;
52
60
  if (overrides.start)
53
61
  resolved.start = overrides.start;
62
+ if (overrides.install)
63
+ resolved.install = overrides.install;
64
+ if (overrides.install_cwd)
65
+ resolved.install_cwd = overrides.install_cwd;
54
66
  }
55
67
  return resolved;
56
68
  }
@@ -98,6 +110,15 @@ function resolveNodeCommands(pm, scripts, snapshot) {
98
110
  else if (scripts.dev) {
99
111
  resolved.start = `${run} dev`;
100
112
  }
113
+ // Install — always resolve based on package manager
114
+ resolved.install = pm === 'yarn' ? 'yarn install' : `${pm} install`;
115
+ // Workspace detection: install must run at the workspace root
116
+ const rootPkg = snapshot.config_files.find((c) => c.type === 'package.json');
117
+ const hasWorkspaces = rootPkg?.key_fields?.workspaces !== undefined;
118
+ const hasPnpmWorkspace = snapshot.config_files.some((c) => c.type === 'pnpm-workspace.yaml');
119
+ if (hasWorkspaces || hasPnpmWorkspace) {
120
+ resolved.install_cwd = '.';
121
+ }
101
122
  return resolved;
102
123
  }
103
124
  // ─── Python Resolution ───────────────────────────────────
@@ -135,6 +156,16 @@ function resolvePythonCommands(snapshot) {
135
156
  }
136
157
  // Start
137
158
  resolved.start = 'uvicorn main:app --host 0.0.0.0 --port 8000';
159
+ // Install — conservative: only well-known safe patterns
160
+ const hasPoetryLock = snapshot.config_files.some((c) => c.type === 'poetry.lock');
161
+ const hasReqs = snapshot.config_files.some((c) => c.type === 'requirements.txt');
162
+ if (hasPoetryLock) {
163
+ resolved.install = 'poetry install';
164
+ }
165
+ else if (hasReqs) {
166
+ resolved.install = 'pip install -r requirements.txt';
167
+ }
168
+ // No install for pyproject.toml-only (may need build backends, system deps)
138
169
  return resolved;
139
170
  }
140
171
  //# sourceMappingURL=command-resolver.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"command-resolver.js","sourceRoot":"","sources":["../../src/pipeline/command-resolver.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"command-resolver.js","sourceRoot":"","sources":["../../src/pipeline/command-resolver.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Generic AI provider query — shared between consensus arbitration
3
+ * and auto-recovery guidance (v2.6.0).
4
+ *
5
+ * Single source of truth for adapter wiring + timeout logic.
6
+ */
7
+ export interface ProviderConfig {
8
+ provider: string;
9
+ model: string;
10
+ temperature: number;
11
+ }
12
+ /**
13
+ * Call any configured AI provider with an arbitrary prompt.
14
+ * Returns raw text response or null on timeout/error.
15
+ *
16
+ * @param prompt - The full prompt to send to the provider
17
+ * @param config - Provider configuration (provider name, model, temperature)
18
+ * @param timeoutMs - Maximum time to wait for a response (default: 120s)
19
+ * @returns Raw text response or null on timeout/error/empty
20
+ */
21
+ export declare function queryProvider(prompt: string, config: ProviderConfig, timeoutMs?: number): Promise<string | null>;
22
+ //# sourceMappingURL=arbitrator-query.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"arbitrator-query.d.ts","sourceRoot":"","sources":["../../../src/pipeline/consensus/arbitrator-query.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAUH,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;CACrB;AAID;;;;;;;;GAQG;AACH,wBAAsB,aAAa,CACjC,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,cAAc,EACtB,SAAS,SAAU,GAClB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CA2BxB"}
@@ -0,0 +1,70 @@
1
+ /**
2
+ * Generic AI provider query — shared between consensus arbitration
3
+ * and auto-recovery guidance (v2.6.0).
4
+ *
5
+ * Single source of truth for adapter wiring + timeout logic.
6
+ */
7
+ import logging from 'node:console';
8
+ const logger = logging;
9
+ // ─── Provider Query ──────────────────────────────────────
10
+ /**
11
+ * Call any configured AI provider with an arbitrary prompt.
12
+ * Returns raw text response or null on timeout/error.
13
+ *
14
+ * @param prompt - The full prompt to send to the provider
15
+ * @param config - Provider configuration (provider name, model, temperature)
16
+ * @param timeoutMs - Maximum time to wait for a response (default: 120s)
17
+ * @returns Raw text response or null on timeout/error/empty
18
+ */
19
+ export async function queryProvider(prompt, config, timeoutMs = 120_000) {
20
+ try {
21
+ const resultPromise = callProviderAdapter(prompt, config);
22
+ const timeoutPromise = new Promise((resolve) => {
23
+ setTimeout(() => resolve(null), timeoutMs);
24
+ });
25
+ const raw = await Promise.race([resultPromise, timeoutPromise]);
26
+ if (!raw || raw.trim().length === 0) {
27
+ logger.warn(`[arbitrator-query] Empty response from ${config.provider}/${config.model}`);
28
+ return null;
29
+ }
30
+ logger.log(`[arbitrator-query] ${config.provider}/${config.model}: ${raw.length} chars`);
31
+ return raw;
32
+ }
33
+ catch (err) {
34
+ logger.warn(`[arbitrator-query] ${config.provider}/${config.model} failed: ${err instanceof Error ? err.message : 'unknown'}`);
35
+ return null;
36
+ }
37
+ }
38
+ // ─── Adapter Wiring ──────────────────────────────────────
39
+ /**
40
+ * Route to the correct adapter based on provider name.
41
+ * Uses dynamic imports to avoid loading unused adapters.
42
+ */
43
+ async function callProviderAdapter(prompt, config) {
44
+ switch (config.provider) {
45
+ case 'openai': {
46
+ const { requestRawReview } = await import('../../adapters/openai.js');
47
+ return requestRawReview(prompt, {
48
+ openaiModel: config.model,
49
+ temperature: config.temperature,
50
+ });
51
+ }
52
+ case 'gemini': {
53
+ const { requestRawReview } = await import('../../adapters/gemini.js');
54
+ return requestRawReview(prompt, {
55
+ model: config.model,
56
+ temperature: config.temperature,
57
+ });
58
+ }
59
+ case 'grok': {
60
+ const { requestRawReview } = await import('../../adapters/grok.js');
61
+ return requestRawReview(prompt, {
62
+ model: config.model,
63
+ temperature: config.temperature,
64
+ });
65
+ }
66
+ default:
67
+ throw new Error(`Unknown provider: ${config.provider}`);
68
+ }
69
+ }
70
+ //# sourceMappingURL=arbitrator-query.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"arbitrator-query.js","sourceRoot":"","sources":["../../../src/pipeline/consensus/arbitrator-query.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,OAAO,MAAM,cAAc,CAAC;AAInC,MAAM,MAAM,GAAG,OAAO,CAAC;AAUvB,4DAA4D;AAE5D;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,MAAc,EACd,MAAsB,EACtB,SAAS,GAAG,OAAO;IAEnB,IAAI,CAAC;QACH,MAAM,aAAa,GAAG,mBAAmB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAE1D,MAAM,cAAc,GAAG,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;YACnD,UAAU,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC,CAAC;QAC7C,CAAC,CAAC,CAAC;QAEH,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,aAAa,EAAE,cAAc,CAAC,CAAC,CAAC;QAEhE,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACpC,MAAM,CAAC,IAAI,CAAC,0CAA0C,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;YACzF,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,CAAC,GAAG,CACR,sBAAsB,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,KAAK,KAAK,GAAG,CAAC,MAAM,QAAQ,CAC7E,CAAC;QACF,OAAO,GAAG,CAAC;IACb,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,CAAC,IAAI,CACT,sBAAsB,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,KAAK,YACnD,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,SACvC,EAAE,CACH,CAAC;QACF,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,4DAA4D;AAE5D;;;GAGG;AACH,KAAK,UAAU,mBAAmB,CAChC,MAAc,EACd,MAAsB;IAEtB,QAAQ,MAAM,CAAC,QAAQ,EAAE,CAAC;QACxB,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,MAAM,EAAE,gBAAgB,EAAE,GAAG,MAAM,MAAM,CAAC,0BAA0B,CAAC,CAAC;YACtE,OAAO,gBAAgB,CAAC,MAAM,EAAE;gBAC9B,WAAW,EAAE,MAAM,CAAC,KAAK;gBACzB,WAAW,EAAE,MAAM,CAAC,WAAW;aACJ,CAAC,CAAC;QACjC,CAAC;QACD,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,MAAM,EAAE,gBAAgB,EAAE,GAAG,MAAM,MAAM,CAAC,0BAA0B,CAAC,CAAC;YACtE,OAAO,gBAAgB,CAAC,MAAM,EAAE;gBAC9B,KAAK,EAAE,MAAM,CAAC,KAAK;gBACnB,WAAW,EAAE,MAAM,CAAC,WAAW;aAChC,CAAC,CAAC;QACL,CAAC;QACD,KAAK,MAAM,CAAC,CAAC,CAAC;YACZ,MAAM,EAAE,gBAAgB,EAAE,GAAG,MAAM,MAAM,CAAC,wBAAwB,CAAC,CAAC;YACpE,OAAO,gBAAgB,CAAC,MAAM,EAAE;gBAC9B,KAAK,EAAE,MAAM,CAAC,KAAK;gBACnB,WAAW,EAAE,MAAM,CAAC,WAAW;aAChC,CAAC,CAAC;QACL,CAAC;QACD;YACE,MAAM,IAAI,KAAK,CAAC,qBAAqB,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC5D,CAAC;AACH,CAAC"}
@@ -6,10 +6,37 @@
6
6
  * 1. Independent Review (DEFAULT): N reviewers review simultaneously,
7
7
  * no reviewer sees other reviewers' output.
8
8
  * 2. Iterative Consensus (optional): for recovery plan iteration.
9
+ *
10
+ * v2.1: Vote normalization pipeline, tag reclassification, hard-blocker
11
+ * detection, config-driven arbitration, reviewer rubric.
9
12
  */
10
13
  import type { PlanPacket, ConsensusPacket, ReviewerVote } from '../types.js';
11
14
  import type { GateDefinition } from '../gate-engine.js';
15
+ import type { NormalizationSummary } from '../packets/consensus-packet-builder.js';
12
16
  import type { ConsensusConfig } from '../../types/consensus.js';
17
+ /**
18
+ * Normalize votes: pool → classify by tag → detect hard blockers → route by vote → dedup.
19
+ * Called after collecting votes, before buildConsensusPacket().
20
+ * Idempotent: running twice produces the same result.
21
+ */
22
+ export declare function normalizeVoteBlockers(votes: ReviewerVote[]): {
23
+ votes: ReviewerVote[];
24
+ summary: NormalizationSummary;
25
+ };
26
+ /**
27
+ * Floor confidence score for CONDITIONAL votes.
28
+ * Matches adapter rubric: 80-94% = "minor revisions needed".
29
+ */
30
+ export declare const DEFAULT_CONDITIONAL_FLOOR = 0.8;
31
+ /**
32
+ * Map a reviewer's confidence score (0-1) to a structured vote.
33
+ * Threshold-aware: APPROVE = meets gate bar, CONDITIONAL = iterate, REJECT = major rework.
34
+ */
35
+ export declare function mapVote(confidence: number, threshold: number, conditionalFloor?: number): 'APPROVE' | 'CONDITIONAL' | 'REJECT';
36
+ /**
37
+ * Check if votes have meaningful disagreement (not unanimous).
38
+ */
39
+ export declare function hasVoteDisagreement(votes: ReviewerVote[]): boolean;
13
40
  export interface ConsensusRunnerConfig {
14
41
  mode: 'independent' | 'iterative';
15
42
  minReviewers: number;
@@ -19,26 +46,123 @@ export interface ConsensusRunnerConfig {
19
46
  consensusConfig?: Partial<ConsensusConfig>;
20
47
  /** Provider configurations for multi-LLM review */
21
48
  reviewerProviders?: ReviewerProviderConfig[];
49
+ /** Arbitrator provider configuration (v2.1) */
50
+ arbitratorProvider?: ReviewerProviderConfig;
51
+ /** Enable arbitration for deadlocked votes (v2.1) */
52
+ enableArbitration?: boolean;
53
+ /** Skill loader for injecting reviewer/arbitrator skills (v2.2.1) */
54
+ skillLoader?: import('../skill-loader.js').SkillLoader;
55
+ /** Skill usage registry for recording usage events (v2.2.1) */
56
+ skillUsageRegistry?: import('../skills/usage-registry.js').SkillUsageRegistry;
22
57
  }
23
58
  export interface ReviewerProviderConfig {
24
59
  provider: string;
25
60
  model: string;
26
61
  temperature: number;
27
62
  }
63
+ /**
64
+ * Safely load plan content from disk.
65
+ * - Path traversal guard: resolved path must start with projectDir.
66
+ * - Size cap: truncates with marker if content exceeds MAX_PLAN_CONTENT_CHARS.
67
+ */
68
+ export declare function loadPlanContent(projectDir: string, artifactPath: string | undefined): {
69
+ content: string;
70
+ truncated: boolean;
71
+ };
72
+ export type ArbitrationTrigger = 'DISAGREEMENT' | 'BORDERLINE_SCORE' | 'ALL_CONDITIONAL' | 'NONE';
73
+ /**
74
+ * Determine whether arbitration should be triggered and why.
75
+ * Pure function — no side effects, easily unit-testable.
76
+ */
77
+ export declare function getArbitrationTrigger(votes: ReviewerVote[], weightedScore: number, threshold: number): ArbitrationTrigger;
28
78
  export declare class ConsensusRunner {
29
79
  private readonly config;
80
+ private arbitrationAttempted;
30
81
  constructor(config: ConsensusRunnerConfig);
31
82
  /** Run structured consensus on a plan packet */
32
- runStructuredConsensus(planPacket: PlanPacket, gateDefinition: GateDefinition): Promise<ConsensusPacket>;
83
+ runStructuredConsensus(planPacket: PlanPacket, gateDefinition: GateDefinition, options?: {
84
+ revisionDirective?: string;
85
+ }): Promise<ConsensusPacket>;
33
86
  /** Independent review: spawn N reviewers, each reviews independently */
34
- runIndependentReview(planPacket: PlanPacket): Promise<ReviewerVote[]>;
87
+ runIndependentReview(planPacket: PlanPacket, planContent: string, revisionDirective?: string): Promise<ReviewerVote[]>;
35
88
  /** Iterative review: wraps existing iterateUntilConsensus */
36
- runIterativeReview(planPacket: PlanPacket): Promise<ReviewerVote[]>;
37
- /** Spawn a single independent reviewer */
89
+ runIterativeReview(planPacket: PlanPacket, planContent: string, revisionDirective?: string): Promise<ReviewerVote[]>;
90
+ /**
91
+ * Spawn a single independent reviewer.
92
+ * Governance rule: vote is ALWAYS derived from confidence via mapVote().
93
+ * The LLM's explicit vote is advisory only — logged for debugging.
94
+ */
38
95
  private spawnSingleReviewer;
39
- /** Call the appropriate provider adapter for a review */
96
+ /**
97
+ * Call the appropriate provider adapter for a review.
98
+ * Uses requestRawReview() to bypass adapter prompt wrapping/parsing —
99
+ * the runner owns the prompt and parses the raw LLM response itself.
100
+ */
40
101
  private callProviderForReview;
102
+ /**
103
+ * Call arbitrator provider for tie-breaking (v2.1).
104
+ * v2.4.2: Rotates arbitrator away from dissenting reviewers to prevent
105
+ * systematic failure (e.g., Gemini rejects as reviewer + as arbitrator).
106
+ */
107
+ private callArbitrator;
108
+ }
109
+ export interface ProviderReviewResult {
110
+ confidence: number;
111
+ blockingIssues: string[];
112
+ suggestions: string[];
113
+ requiredChanges?: string[];
114
+ /** LLM's explicit vote — advisory only, never used for gate decisions */
115
+ modelVote?: 'APPROVE' | 'REJECT' | 'CONDITIONAL' | null;
41
116
  }
42
- export declare function buildReviewPrompt(planPacket: PlanPacket): string;
43
- export declare function createConsensusRunner(projectDir: string, consensusConfig?: Partial<ConsensusConfig>): ConsensusRunner;
117
+ /**
118
+ * Parse raw LLM response text into a ProviderReviewResult.
119
+ * Strategy 1: Try JSON parse first (expected format).
120
+ * Strategy 2: Regex fallback for free-form text responses.
121
+ *
122
+ * @param raw - Raw text from the LLM
123
+ * @returns Parsed review result with confidence, issues, and advisory vote
124
+ */
125
+ export declare function parseRawReviewResponse(raw: string): ProviderReviewResult;
126
+ /**
127
+ * Correct confidence when it contradicts the model's explicit vote.
128
+ *
129
+ * The prompt defines confidence as "plan quality score" (0-1) and
130
+ * assigns ranges: REJECT < 0.80, CONDITIONAL 0.80-0.94, APPROVE >= 0.95.
131
+ * Some models confuse this with "assessment certainty" and return e.g.
132
+ * REJECT + 0.99 ("99% sure it's bad"). This function inverts such
133
+ * contradictions so mapVote() receives a semantically correct input.
134
+ *
135
+ * Correction is SYMMETRIC across all three bands:
136
+ * - REJECT + conf >= 0.80 -> invert: min(0.79, 1 - conf)
137
+ * - CONDITIONAL + conf >= 0.95 -> snap to midpoint 0.87
138
+ * - CONDITIONAL + conf < 0.80 -> snap to midpoint 0.87
139
+ * - APPROVE + conf < 0.80 -> invert: max(0.95, 1 - conf)
140
+ * - APPROVE + conf in [0.80, 0.95) -> snap to 0.95
141
+ *
142
+ * If modelVote is null (regex fallback couldn't find a vote), no correction.
143
+ */
144
+ export declare function correctConfidenceContradiction(modelVote: 'APPROVE' | 'REJECT' | 'CONDITIONAL' | null, rawConfidence: number): {
145
+ confidence: number;
146
+ wasContradiction: boolean;
147
+ original: number;
148
+ };
149
+ /**
150
+ * Parse raw arbitrator response into a structured result.
151
+ * Strategy 1: JSON parse (optionally wrapped in code fences).
152
+ * Strategy 2: Regex fallback for free-form text.
153
+ *
154
+ * @param raw - Raw text from the arbitrator LLM
155
+ * @returns Parsed result with approved boolean, reasoning, and suggested changes
156
+ */
157
+ export declare function parseArbitratorResponse(raw: string): {
158
+ approved: boolean;
159
+ reasoning: string;
160
+ suggestedChanges: string[];
161
+ };
162
+ export declare function buildReviewPrompt(planPacket: PlanPacket, planContent?: string, revisionDirective?: string): string;
163
+ /**
164
+ * Helper to resolve model string for a given provider from consensus config.
165
+ */
166
+ export declare function getModelForProvider(config: Partial<ConsensusConfig> | undefined, provider: string): string;
167
+ export declare function createConsensusRunner(projectDir: string, consensusConfig?: Partial<ConsensusConfig>, skillLoader?: import('../skill-loader.js').SkillLoader, skillUsageRegistry?: import('../skills/usage-registry.js').SkillUsageRegistry): ConsensusRunner;
44
168
  //# sourceMappingURL=consensus-runner.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"consensus-runner.d.ts","sourceRoot":"","sources":["../../../src/pipeline/consensus/consensus-runner.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,KAAK,EACV,UAAU,EACV,eAAe,EACf,YAAY,EACb,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAMxD,OAAO,KAAK,EAAE,eAAe,EAAmB,MAAM,0BAA0B,CAAC;AAIjF,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,aAAa,GAAG,WAAW,CAAC;IAClC,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC;IAC3C,mDAAmD;IACnD,iBAAiB,CAAC,EAAE,sBAAsB,EAAE,CAAC;CAC9C;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;CACrB;AASD,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAwB;gBAEnC,MAAM,EAAE,qBAAqB;IAIzC,gDAAgD;IAC1C,sBAAsB,CAC1B,UAAU,EAAE,UAAU,EACtB,cAAc,EAAE,cAAc,GAC7B,OAAO,CAAC,eAAe,CAAC;IA+B3B,wEAAwE;IAClE,oBAAoB,CAAC,UAAU,EAAE,UAAU,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IA4B3E,6DAA6D;IACvD,kBAAkB,CAAC,UAAU,EAAE,UAAU,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IA4CzE,0CAA0C;YAC5B,mBAAmB;IAqCjC,yDAAyD;YAC3C,qBAAqB;CAiCpC;AAsBD,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,UAAU,GAAG,MAAM,CAuChE;AAID,wBAAgB,qBAAqB,CACnC,UAAU,EAAE,MAAM,EAClB,eAAe,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,GACzC,eAAe,CASjB"}
1
+ {"version":3,"file":"consensus-runner.d.ts","sourceRoot":"","sources":["../../../src/pipeline/consensus/consensus-runner.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAQH,OAAO,KAAK,EACV,UAAU,EACV,eAAe,EACf,YAAY,EACb,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAExD,OAAO,KAAK,EAAkB,oBAAoB,EAAE,MAAM,wCAAwC,CAAC;AAMnG,OAAO,KAAK,EAAE,eAAe,EAAqB,MAAM,0BAA0B,CAAC;AAmFnF;;;;GAIG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,YAAY,EAAE,GACpB;IAAE,KAAK,EAAE,YAAY,EAAE,CAAC;IAAC,OAAO,EAAE,oBAAoB,CAAA;CAAE,CAuI1D;AAID;;;GAGG;AACH,eAAO,MAAM,yBAAyB,MAAO,CAAC;AAE9C;;;GAGG;AACH,wBAAgB,OAAO,CACrB,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,EACjB,gBAAgB,GAAE,MAAkC,GACnD,SAAS,GAAG,aAAa,GAAG,QAAQ,CAQtC;AAID;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,YAAY,EAAE,GAAG,OAAO,CAIlE;AAID,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,aAAa,GAAG,WAAW,CAAC;IAClC,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC;IAC3C,mDAAmD;IACnD,iBAAiB,CAAC,EAAE,sBAAsB,EAAE,CAAC;IAC7C,+CAA+C;IAC/C,kBAAkB,CAAC,EAAE,sBAAsB,CAAC;IAC5C,qDAAqD;IACrD,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,qEAAqE;IACrE,WAAW,CAAC,EAAE,OAAO,oBAAoB,EAAE,WAAW,CAAC;IACvD,+DAA+D;IAC/D,kBAAkB,CAAC,EAAE,OAAO,6BAA6B,EAAE,kBAAkB,CAAC;CAC/E;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;CACrB;AAYD;;;;GAIG;AACH,wBAAgB,eAAe,CAC7B,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,MAAM,GAAG,SAAS,GAC/B;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,OAAO,CAAA;CAAE,CAgCzC;AAID,MAAM,MAAM,kBAAkB,GAAG,cAAc,GAAG,kBAAkB,GAAG,iBAAiB,GAAG,MAAM,CAAC;AAElG;;;GAGG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,YAAY,EAAE,EACrB,aAAa,EAAE,MAAM,EACrB,SAAS,EAAE,MAAM,GAChB,kBAAkB,CAWpB;AAID,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAwB;IAC/C,OAAO,CAAC,oBAAoB,CAAqB;gBAErC,MAAM,EAAE,qBAAqB;IAIzC,gDAAgD;IAC1C,sBAAsB,CAC1B,UAAU,EAAE,UAAU,EACtB,cAAc,EAAE,cAAc,EAC9B,OAAO,CAAC,EAAE;QAAE,iBAAiB,CAAC,EAAE,MAAM,CAAA;KAAE,GACvC,OAAO,CAAC,eAAe,CAAC;IAwJ3B,wEAAwE;IAClE,oBAAoB,CAAC,UAAU,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,EAAE,iBAAiB,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAwD5H,6DAA6D;IACvD,kBAAkB,CAAC,UAAU,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,EAAE,iBAAiB,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IA4C1H;;;;OAIG;YACW,mBAAmB;IAsDjC;;;;OAIG;YACW,qBAAqB;IAuCnC;;;;OAIG;YACW,cAAc;CAqE7B;AAID,MAAM,WAAW,oBAAoB;IACnC,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,yEAAyE;IACzE,SAAS,CAAC,EAAE,SAAS,GAAG,QAAQ,GAAG,aAAa,GAAG,IAAI,CAAC;CACzD;AAgBD;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,MAAM,GAAG,oBAAoB,CAkBxE;AA6HD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,8BAA8B,CAC5C,SAAS,EAAE,SAAS,GAAG,QAAQ,GAAG,aAAa,GAAG,IAAI,EACtD,aAAa,EAAE,MAAM,GACpB;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,gBAAgB,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CA+BrE;AAeD;;;;;;;GAOG;AACH,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,MAAM,GAAG;IACpD,QAAQ,EAAE,OAAO,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,EAAE,MAAM,EAAE,CAAC;CAC5B,CAqCA;AAID,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,UAAU,EAAE,WAAW,CAAC,EAAE,MAAM,EAAE,iBAAiB,CAAC,EAAE,MAAM,GAAG,MAAM,CAuIlH;AAkDD;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,OAAO,CAAC,eAAe,CAAC,GAAG,SAAS,EAC5C,QAAQ,EAAE,MAAM,GACf,MAAM,CAQR;AAED,wBAAgB,qBAAqB,CACnC,UAAU,EAAE,MAAM,EAClB,eAAe,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,EAC1C,WAAW,CAAC,EAAE,OAAO,oBAAoB,EAAE,WAAW,EACtD,kBAAkB,CAAC,EAAE,OAAO,6BAA6B,EAAE,kBAAkB,GAC5E,eAAe,CAuBjB"}