dino-spec 17.4.3 → 17.6.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 (277) hide show
  1. package/README.md +16 -1
  2. package/dist/commands/init.d.ts.map +1 -1
  3. package/dist/commands/init.js +10 -0
  4. package/dist/commands/init.js.map +1 -1
  5. package/dist/core/agents/__tests__/confidence-gate.test.d.ts +5 -0
  6. package/dist/core/agents/__tests__/confidence-gate.test.d.ts.map +1 -0
  7. package/dist/core/agents/__tests__/confidence-gate.test.js +329 -0
  8. package/dist/core/agents/__tests__/confidence-gate.test.js.map +1 -0
  9. package/dist/core/agents/__tests__/gap-detector.test.d.ts +5 -0
  10. package/dist/core/agents/__tests__/gap-detector.test.d.ts.map +1 -0
  11. package/dist/core/agents/__tests__/gap-detector.test.js +609 -0
  12. package/dist/core/agents/__tests__/gap-detector.test.js.map +1 -0
  13. package/dist/core/agents/__tests__/learning-loop.test.d.ts +5 -0
  14. package/dist/core/agents/__tests__/learning-loop.test.d.ts.map +1 -0
  15. package/dist/core/agents/__tests__/learning-loop.test.js +663 -0
  16. package/dist/core/agents/__tests__/learning-loop.test.js.map +1 -0
  17. package/dist/core/agents/__tests__/parallel-executor.test.d.ts +5 -0
  18. package/dist/core/agents/__tests__/parallel-executor.test.d.ts.map +1 -0
  19. package/dist/core/agents/__tests__/parallel-executor.test.js +610 -0
  20. package/dist/core/agents/__tests__/parallel-executor.test.js.map +1 -0
  21. package/dist/core/agents/__tests__/research-validator.test.js +5 -5
  22. package/dist/core/agents/__tests__/research-validator.test.js.map +1 -1
  23. package/dist/core/agents/__tests__/skill-creator.test.d.ts +5 -0
  24. package/dist/core/agents/__tests__/skill-creator.test.d.ts.map +1 -0
  25. package/dist/core/agents/__tests__/skill-creator.test.js +443 -0
  26. package/dist/core/agents/__tests__/skill-creator.test.js.map +1 -0
  27. package/dist/core/agents/__tests__/state-persistence.test.d.ts +2 -0
  28. package/dist/core/agents/__tests__/state-persistence.test.d.ts.map +1 -0
  29. package/dist/core/agents/__tests__/state-persistence.test.js +270 -0
  30. package/dist/core/agents/__tests__/state-persistence.test.js.map +1 -0
  31. package/dist/core/agents/__tests__/validation-cache.test.d.ts +2 -0
  32. package/dist/core/agents/__tests__/validation-cache.test.d.ts.map +1 -0
  33. package/dist/core/agents/__tests__/validation-cache.test.js +181 -0
  34. package/dist/core/agents/__tests__/validation-cache.test.js.map +1 -0
  35. package/dist/core/agents/ambiguity-resolver.d.ts +14 -1
  36. package/dist/core/agents/ambiguity-resolver.d.ts.map +1 -1
  37. package/dist/core/agents/ambiguity-resolver.js +24 -2
  38. package/dist/core/agents/ambiguity-resolver.js.map +1 -1
  39. package/dist/core/agents/blackboard.d.ts +22 -3
  40. package/dist/core/agents/blackboard.d.ts.map +1 -1
  41. package/dist/core/agents/blackboard.js +52 -2
  42. package/dist/core/agents/blackboard.js.map +1 -1
  43. package/dist/core/agents/circuit-breaker.d.ts +79 -1
  44. package/dist/core/agents/circuit-breaker.d.ts.map +1 -1
  45. package/dist/core/agents/circuit-breaker.js +175 -1
  46. package/dist/core/agents/circuit-breaker.js.map +1 -1
  47. package/dist/core/agents/clarification-phase.d.ts +128 -0
  48. package/dist/core/agents/clarification-phase.d.ts.map +1 -0
  49. package/dist/core/agents/clarification-phase.js +375 -0
  50. package/dist/core/agents/clarification-phase.js.map +1 -0
  51. package/dist/core/agents/confidence-gate.d.ts +133 -4
  52. package/dist/core/agents/confidence-gate.d.ts.map +1 -1
  53. package/dist/core/agents/confidence-gate.js +376 -9
  54. package/dist/core/agents/confidence-gate.js.map +1 -1
  55. package/dist/core/agents/correction-tracker.d.ts +197 -0
  56. package/dist/core/agents/correction-tracker.d.ts.map +1 -0
  57. package/dist/core/agents/correction-tracker.js +366 -0
  58. package/dist/core/agents/correction-tracker.js.map +1 -0
  59. package/dist/core/agents/dependency-graph.d.ts +193 -0
  60. package/dist/core/agents/dependency-graph.d.ts.map +1 -0
  61. package/dist/core/agents/dependency-graph.js +462 -0
  62. package/dist/core/agents/dependency-graph.js.map +1 -0
  63. package/dist/core/agents/gap-detector.d.ts +277 -0
  64. package/dist/core/agents/gap-detector.d.ts.map +1 -0
  65. package/dist/core/agents/gap-detector.js +540 -0
  66. package/dist/core/agents/gap-detector.js.map +1 -0
  67. package/dist/core/agents/index.d.ts +14 -1
  68. package/dist/core/agents/index.d.ts.map +1 -1
  69. package/dist/core/agents/index.js +26 -1
  70. package/dist/core/agents/index.js.map +1 -1
  71. package/dist/core/agents/message-protocol.d.ts +13 -2
  72. package/dist/core/agents/message-protocol.d.ts.map +1 -1
  73. package/dist/core/agents/message-protocol.js +20 -1
  74. package/dist/core/agents/message-protocol.js.map +1 -1
  75. package/dist/core/agents/parallel-executor.d.ts +182 -0
  76. package/dist/core/agents/parallel-executor.d.ts.map +1 -0
  77. package/dist/core/agents/parallel-executor.js +474 -0
  78. package/dist/core/agents/parallel-executor.js.map +1 -0
  79. package/dist/core/agents/pattern-detector.d.ts +157 -0
  80. package/dist/core/agents/pattern-detector.d.ts.map +1 -0
  81. package/dist/core/agents/pattern-detector.js +370 -0
  82. package/dist/core/agents/pattern-detector.js.map +1 -0
  83. package/dist/core/agents/registry-client.d.ts +6 -0
  84. package/dist/core/agents/registry-client.d.ts.map +1 -1
  85. package/dist/core/agents/registry-client.js +3 -0
  86. package/dist/core/agents/registry-client.js.map +1 -1
  87. package/dist/core/agents/research-phase.d.ts +114 -0
  88. package/dist/core/agents/research-phase.d.ts.map +1 -0
  89. package/dist/core/agents/research-phase.js +355 -0
  90. package/dist/core/agents/research-phase.js.map +1 -0
  91. package/dist/core/agents/research-validator.d.ts +13 -2
  92. package/dist/core/agents/research-validator.d.ts.map +1 -1
  93. package/dist/core/agents/research-validator.js +63 -31
  94. package/dist/core/agents/research-validator.js.map +1 -1
  95. package/dist/core/agents/skill-creator.d.ts +174 -0
  96. package/dist/core/agents/skill-creator.d.ts.map +1 -0
  97. package/dist/core/agents/skill-creator.js +570 -0
  98. package/dist/core/agents/skill-creator.js.map +1 -0
  99. package/dist/core/agents/state-persistence.d.ts +184 -0
  100. package/dist/core/agents/state-persistence.d.ts.map +1 -0
  101. package/dist/core/agents/state-persistence.js +394 -0
  102. package/dist/core/agents/state-persistence.js.map +1 -0
  103. package/dist/core/agents/validation-cache.d.ts +122 -0
  104. package/dist/core/agents/validation-cache.d.ts.map +1 -0
  105. package/dist/core/agents/validation-cache.js +280 -0
  106. package/dist/core/agents/validation-cache.js.map +1 -0
  107. package/dist/core/agents/validators/__tests__/validators.test.d.ts +5 -0
  108. package/dist/core/agents/validators/__tests__/validators.test.d.ts.map +1 -0
  109. package/dist/core/agents/validators/__tests__/validators.test.js +321 -0
  110. package/dist/core/agents/validators/__tests__/validators.test.js.map +1 -0
  111. package/dist/core/agents/validators/base-validator.d.ts +191 -0
  112. package/dist/core/agents/validators/base-validator.d.ts.map +1 -0
  113. package/dist/core/agents/validators/base-validator.js +192 -0
  114. package/dist/core/agents/validators/base-validator.js.map +1 -0
  115. package/dist/core/agents/validators/index.d.ts +7 -0
  116. package/dist/core/agents/validators/index.d.ts.map +1 -0
  117. package/dist/core/agents/validators/index.js +7 -0
  118. package/dist/core/agents/validators/index.js.map +1 -0
  119. package/dist/core/agents/validators/npm-validator.d.ts +50 -0
  120. package/dist/core/agents/validators/npm-validator.d.ts.map +1 -0
  121. package/dist/core/agents/validators/npm-validator.js +211 -0
  122. package/dist/core/agents/validators/npm-validator.js.map +1 -0
  123. package/dist/core/agents/validators/pip-validator.d.ts +49 -0
  124. package/dist/core/agents/validators/pip-validator.d.ts.map +1 -0
  125. package/dist/core/agents/validators/pip-validator.js +191 -0
  126. package/dist/core/agents/validators/pip-validator.js.map +1 -0
  127. package/dist/core/agents/validators/validator-registry.d.ts +122 -0
  128. package/dist/core/agents/validators/validator-registry.d.ts.map +1 -0
  129. package/dist/core/agents/validators/validator-registry.js +321 -0
  130. package/dist/core/agents/validators/validator-registry.js.map +1 -0
  131. package/dist/core/context/auto-injection-engine.d.ts +7 -1
  132. package/dist/core/context/auto-injection-engine.d.ts.map +1 -1
  133. package/dist/core/context/auto-injection-engine.js +46 -1
  134. package/dist/core/context/auto-injection-engine.js.map +1 -1
  135. package/dist/core/context-repl/types.d.ts +4 -4
  136. package/dist/core/memory/index.d.ts +1 -0
  137. package/dist/core/memory/index.d.ts.map +1 -1
  138. package/dist/core/memory/index.js +2 -0
  139. package/dist/core/memory/index.js.map +1 -1
  140. package/dist/core/memory/learning-store.d.ts +222 -0
  141. package/dist/core/memory/learning-store.d.ts.map +1 -0
  142. package/dist/core/memory/learning-store.js +477 -0
  143. package/dist/core/memory/learning-store.js.map +1 -0
  144. package/dist/core/ralph/__tests__/prd-generator-session-context.test.d.ts +7 -0
  145. package/dist/core/ralph/__tests__/prd-generator-session-context.test.d.ts.map +1 -0
  146. package/dist/core/ralph/__tests__/prd-generator-session-context.test.js +143 -0
  147. package/dist/core/ralph/__tests__/prd-generator-session-context.test.js.map +1 -0
  148. package/dist/core/ralph/index.d.ts +3 -3
  149. package/dist/core/ralph/index.d.ts.map +1 -1
  150. package/dist/core/ralph/index.js +2 -2
  151. package/dist/core/ralph/index.js.map +1 -1
  152. package/dist/core/ralph/prd-generator.d.ts +18 -3
  153. package/dist/core/ralph/prd-generator.d.ts.map +1 -1
  154. package/dist/core/ralph/prd-generator.js +33 -11
  155. package/dist/core/ralph/prd-generator.js.map +1 -1
  156. package/dist/core/ralph/progress-tracker.d.ts.map +1 -1
  157. package/dist/core/ralph/progress-tracker.js +2 -1
  158. package/dist/core/ralph/progress-tracker.js.map +1 -1
  159. package/dist/core/ralph/sub-agent-spawner.d.ts +4 -2
  160. package/dist/core/ralph/sub-agent-spawner.d.ts.map +1 -1
  161. package/dist/core/ralph/sub-agent-spawner.js +48 -3
  162. package/dist/core/ralph/sub-agent-spawner.js.map +1 -1
  163. package/dist/core/ralph/task-integration.d.ts.map +1 -1
  164. package/dist/core/ralph/task-integration.js +6 -3
  165. package/dist/core/ralph/task-integration.js.map +1 -1
  166. package/dist/core/ralph/types.d.ts +62 -3
  167. package/dist/core/ralph/types.d.ts.map +1 -1
  168. package/dist/core/ralph/types.js.map +1 -1
  169. package/dist/core/recommendations/recommendation-engine.d.ts +6 -0
  170. package/dist/core/recommendations/recommendation-engine.d.ts.map +1 -1
  171. package/dist/core/recommendations/recommendation-engine.js.map +1 -1
  172. package/dist/core/spec-analyzer/__tests__/ambiguity-detector.test.d.ts +5 -0
  173. package/dist/core/spec-analyzer/__tests__/ambiguity-detector.test.d.ts.map +1 -0
  174. package/dist/core/spec-analyzer/__tests__/ambiguity-detector.test.js +401 -0
  175. package/dist/core/spec-analyzer/__tests__/ambiguity-detector.test.js.map +1 -0
  176. package/dist/core/spec-analyzer/ambiguity-detector.d.ts +99 -0
  177. package/dist/core/spec-analyzer/ambiguity-detector.d.ts.map +1 -0
  178. package/dist/core/spec-analyzer/ambiguity-detector.js +250 -0
  179. package/dist/core/spec-analyzer/ambiguity-detector.js.map +1 -0
  180. package/dist/core/spec-analyzer/clarification-generator.d.ts +76 -0
  181. package/dist/core/spec-analyzer/clarification-generator.d.ts.map +1 -0
  182. package/dist/core/spec-analyzer/clarification-generator.js +257 -0
  183. package/dist/core/spec-analyzer/clarification-generator.js.map +1 -0
  184. package/dist/core/spec-analyzer/index.d.ts +22 -2
  185. package/dist/core/spec-analyzer/index.d.ts.map +1 -1
  186. package/dist/core/spec-analyzer/index.js +21 -3
  187. package/dist/core/spec-analyzer/index.js.map +1 -1
  188. package/dist/core/spec-analyzer/patterns.d.ts +73 -0
  189. package/dist/core/spec-analyzer/patterns.d.ts.map +1 -0
  190. package/dist/core/spec-analyzer/patterns.js +412 -0
  191. package/dist/core/spec-analyzer/patterns.js.map +1 -0
  192. package/dist/hooks/__tests__/dynamic-generator.test.d.ts +5 -0
  193. package/dist/hooks/__tests__/dynamic-generator.test.d.ts.map +1 -0
  194. package/dist/hooks/__tests__/dynamic-generator.test.js +425 -0
  195. package/dist/hooks/__tests__/dynamic-generator.test.js.map +1 -0
  196. package/dist/hooks/__tests__/hook-agent-bridge.test.d.ts +5 -0
  197. package/dist/hooks/__tests__/hook-agent-bridge.test.d.ts.map +1 -0
  198. package/dist/hooks/__tests__/hook-agent-bridge.test.js +315 -0
  199. package/dist/hooks/__tests__/hook-agent-bridge.test.js.map +1 -0
  200. package/dist/hooks/dynamic-generator.d.ts +158 -0
  201. package/dist/hooks/dynamic-generator.d.ts.map +1 -0
  202. package/dist/hooks/dynamic-generator.js +448 -0
  203. package/dist/hooks/dynamic-generator.js.map +1 -0
  204. package/dist/hooks/hook-agent-bridge.d.ts +252 -0
  205. package/dist/hooks/hook-agent-bridge.d.ts.map +1 -0
  206. package/dist/hooks/hook-agent-bridge.js +489 -0
  207. package/dist/hooks/hook-agent-bridge.js.map +1 -0
  208. package/dist/hooks/index.d.ts +3 -1
  209. package/dist/hooks/index.d.ts.map +1 -1
  210. package/dist/hooks/index.js +5 -1
  211. package/dist/hooks/index.js.map +1 -1
  212. package/dist/mcp/tool-catalog.d.ts.map +1 -1
  213. package/dist/mcp/tool-catalog.js +47 -0
  214. package/dist/mcp/tool-catalog.js.map +1 -1
  215. package/dist/mcp/tool-tiers.d.ts.map +1 -1
  216. package/dist/mcp/tool-tiers.js +4 -0
  217. package/dist/mcp/tool-tiers.js.map +1 -1
  218. package/dist/mcp/tools/auto-inject.d.ts +4 -0
  219. package/dist/mcp/tools/auto-inject.d.ts.map +1 -1
  220. package/dist/mcp/tools/auto-inject.js +13 -4
  221. package/dist/mcp/tools/auto-inject.js.map +1 -1
  222. package/dist/mcp/tools/chunking.d.ts +3 -0
  223. package/dist/mcp/tools/chunking.d.ts.map +1 -1
  224. package/dist/mcp/tools/chunking.js +10 -4
  225. package/dist/mcp/tools/chunking.js.map +1 -1
  226. package/dist/mcp/tools/embeddings.d.ts +4 -0
  227. package/dist/mcp/tools/embeddings.d.ts.map +1 -1
  228. package/dist/mcp/tools/embeddings.js +16 -6
  229. package/dist/mcp/tools/embeddings.js.map +1 -1
  230. package/dist/mcp/tools/index.d.ts +2 -1
  231. package/dist/mcp/tools/index.d.ts.map +1 -1
  232. package/dist/mcp/tools/index.js +15 -1
  233. package/dist/mcp/tools/index.js.map +1 -1
  234. package/dist/mcp/tools/knowledge-graph.d.ts +3 -0
  235. package/dist/mcp/tools/knowledge-graph.d.ts.map +1 -1
  236. package/dist/mcp/tools/knowledge-graph.js +19 -8
  237. package/dist/mcp/tools/knowledge-graph.js.map +1 -1
  238. package/dist/mcp/tools/lazy-context.d.ts +2 -0
  239. package/dist/mcp/tools/lazy-context.d.ts.map +1 -1
  240. package/dist/mcp/tools/lazy-context.js +10 -4
  241. package/dist/mcp/tools/lazy-context.js.map +1 -1
  242. package/dist/mcp/tools/learning-store.d.ts +30 -0
  243. package/dist/mcp/tools/learning-store.d.ts.map +1 -0
  244. package/dist/mcp/tools/learning-store.js +286 -0
  245. package/dist/mcp/tools/learning-store.js.map +1 -0
  246. package/dist/mcp/tools/memory-decay.d.ts.map +1 -1
  247. package/dist/mcp/tools/memory-decay.js +4 -2
  248. package/dist/mcp/tools/memory-decay.js.map +1 -1
  249. package/dist/mcp/tools/prefetch.d.ts +4 -1
  250. package/dist/mcp/tools/prefetch.d.ts.map +1 -1
  251. package/dist/mcp/tools/prefetch.js +18 -7
  252. package/dist/mcp/tools/prefetch.js.map +1 -1
  253. package/dist/mcp/tools/ralph.d.ts +2 -0
  254. package/dist/mcp/tools/ralph.d.ts.map +1 -1
  255. package/dist/mcp/tools/ralph.js +96 -6
  256. package/dist/mcp/tools/ralph.js.map +1 -1
  257. package/dist/mcp/tools/recommendations.d.ts +2 -0
  258. package/dist/mcp/tools/recommendations.d.ts.map +1 -1
  259. package/dist/mcp/tools/recommendations.js +13 -4
  260. package/dist/mcp/tools/recommendations.js.map +1 -1
  261. package/dist/mcp/tools/retrieval.d.ts +4 -0
  262. package/dist/mcp/tools/retrieval.d.ts.map +1 -1
  263. package/dist/mcp/tools/retrieval.js +25 -10
  264. package/dist/mcp/tools/retrieval.js.map +1 -1
  265. package/dist/mcp/tools/spec-feedback.d.ts +2 -0
  266. package/dist/mcp/tools/spec-feedback.d.ts.map +1 -1
  267. package/dist/mcp/tools/spec-feedback.js +33 -16
  268. package/dist/mcp/tools/spec-feedback.js.map +1 -1
  269. package/dist/mcp/utils/index.d.ts +1 -0
  270. package/dist/mcp/utils/index.d.ts.map +1 -1
  271. package/dist/mcp/utils/index.js +2 -0
  272. package/dist/mcp/utils/index.js.map +1 -1
  273. package/dist/mcp/utils/session-context.d.ts +108 -0
  274. package/dist/mcp/utils/session-context.d.ts.map +1 -0
  275. package/dist/mcp/utils/session-context.js +157 -0
  276. package/dist/mcp/utils/session-context.js.map +1 -0
  277. package/package.json +1 -1
@@ -0,0 +1,128 @@
1
+ /**
2
+ * Clarification Phase - v17.5.0
3
+ *
4
+ * Handles the clarification phase of the progressive confidence gate.
5
+ * Generates targeted questions and processes user responses.
6
+ *
7
+ * Features:
8
+ * - Targeted question generation from signals
9
+ * - Priority-based question ordering
10
+ * - User response processing
11
+ * - Confidence improvement from answers
12
+ * - Max rounds tracking with user validation
13
+ *
14
+ * @module clarification-phase
15
+ */
16
+ import type { ClarificationQuestion } from '../spec-analyzer/clarification-generator.js';
17
+ import type { SpecAnalysis } from '../spec-analyzer/index.js';
18
+ export interface ClarificationPhaseConfig {
19
+ /** Maximum clarification rounds */
20
+ maxRounds: number;
21
+ /** Require user validation after max rounds */
22
+ requireValidationAfterMax: boolean;
23
+ /** Maximum questions per round */
24
+ maxQuestionsPerRound: number;
25
+ /** Confidence boost per blocking answer */
26
+ blockingAnswerBoost: number;
27
+ /** Confidence boost per important answer */
28
+ importantAnswerBoost: number;
29
+ /** Confidence boost per nice-to-know answer */
30
+ niceToKnowAnswerBoost: number;
31
+ }
32
+ export interface ClarificationRound {
33
+ /** Round number (1-based) */
34
+ roundNumber: number;
35
+ /** Questions asked this round */
36
+ questions: ClarificationQuestion[];
37
+ /** Answers received (question ID -> answer) */
38
+ answers: Map<string, string>;
39
+ /** Confidence before this round */
40
+ confidenceBefore: number;
41
+ /** Confidence after this round */
42
+ confidenceAfter: number;
43
+ /** Timestamp */
44
+ timestamp: Date;
45
+ }
46
+ export interface ClarificationPhaseState {
47
+ /** All rounds so far */
48
+ rounds: ClarificationRound[];
49
+ /** Questions still pending */
50
+ pendingQuestions: ClarificationQuestion[];
51
+ /** Current round number */
52
+ currentRound: number;
53
+ /** Whether max rounds reached */
54
+ maxRoundsReached: boolean;
55
+ /** Whether user validation received */
56
+ userValidated: boolean;
57
+ /** Current status */
58
+ status: 'pending' | 'asking' | 'validated' | 'blocked';
59
+ }
60
+ export interface ClarificationPhaseResult {
61
+ /** Whether clarification was needed */
62
+ needed: boolean;
63
+ /** State of clarification phase */
64
+ state: ClarificationPhaseState;
65
+ /** Confidence improvement from clarification */
66
+ confidenceImprovement: number;
67
+ /** New confidence after clarification */
68
+ newConfidence: number;
69
+ /** Whether more clarification could help */
70
+ canImproveMore: boolean;
71
+ /** Whether user validation is required */
72
+ requiresUserValidation: boolean;
73
+ /** Summary */
74
+ summary: string;
75
+ }
76
+ export interface UserAnswer {
77
+ /** Question ID */
78
+ questionId: string;
79
+ /** Answer text */
80
+ answer: string;
81
+ }
82
+ export declare const DEFAULT_CLARIFICATION_CONFIG: ClarificationPhaseConfig;
83
+ /**
84
+ * Initialize clarification phase
85
+ */
86
+ export declare function initializeClarificationPhase(prompt: string, _analysis: SpecAnalysis, _currentConfidence: number): ClarificationPhaseState;
87
+ /**
88
+ * Get next batch of questions
89
+ */
90
+ export declare function getNextQuestions(state: ClarificationPhaseState, config?: ClarificationPhaseConfig): ClarificationQuestion[];
91
+ /**
92
+ * Process user answers and update state
93
+ */
94
+ export declare function processAnswers(state: ClarificationPhaseState, answers: UserAnswer[], confidenceBefore: number, config?: ClarificationPhaseConfig): {
95
+ state: ClarificationPhaseState;
96
+ confidenceAfter: number;
97
+ };
98
+ /**
99
+ * Mark user as having validated assumptions
100
+ */
101
+ export declare function markUserValidated(state: ClarificationPhaseState): ClarificationPhaseState;
102
+ /**
103
+ * Execute clarification phase
104
+ */
105
+ export declare function executeClarificationPhase(prompt: string, currentConfidence: number, analysis: SpecAnalysis, config?: ClarificationPhaseConfig): ClarificationPhaseResult;
106
+ /**
107
+ * Generate additional questions from analysis signals
108
+ */
109
+ export declare function generateAdditionalQuestions(analysis: SpecAnalysis): ClarificationQuestion[];
110
+ /**
111
+ * Format clarification state for session.md
112
+ */
113
+ export declare function formatClarificationForSession(result: ClarificationPhaseResult): string;
114
+ /**
115
+ * Format questions for AskUserQuestion tool
116
+ */
117
+ export declare function formatQuestionsForAskUser(questions: ClarificationQuestion[]): {
118
+ questions: Array<{
119
+ question: string;
120
+ header: string;
121
+ options: Array<{
122
+ label: string;
123
+ description: string;
124
+ }>;
125
+ multiSelect: boolean;
126
+ }>;
127
+ };
128
+ //# sourceMappingURL=clarification-phase.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clarification-phase.d.ts","sourceRoot":"","sources":["../../../src/core/agents/clarification-phase.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,375 @@
1
+ /**
2
+ * Clarification Phase - v17.5.0
3
+ *
4
+ * Handles the clarification phase of the progressive confidence gate.
5
+ * Generates targeted questions and processes user responses.
6
+ *
7
+ * Features:
8
+ * - Targeted question generation from signals
9
+ * - Priority-based question ordering
10
+ * - User response processing
11
+ * - Confidence improvement from answers
12
+ * - Max rounds tracking with user validation
13
+ *
14
+ * @module clarification-phase
15
+ */
16
+ import { detectAmbiguity } from '../spec-analyzer/ambiguity-detector.js';
17
+ // =============================================================================
18
+ // Constants
19
+ // =============================================================================
20
+ export const DEFAULT_CLARIFICATION_CONFIG = {
21
+ maxRounds: 5,
22
+ requireValidationAfterMax: true,
23
+ maxQuestionsPerRound: 4,
24
+ blockingAnswerBoost: 0.15,
25
+ importantAnswerBoost: 0.1,
26
+ niceToKnowAnswerBoost: 0.05,
27
+ };
28
+ // =============================================================================
29
+ // Main Functions
30
+ // =============================================================================
31
+ /**
32
+ * Initialize clarification phase
33
+ */
34
+ export function initializeClarificationPhase(prompt, _analysis, _currentConfidence) {
35
+ // Get ambiguity analysis and generate questions
36
+ const ambiguity = detectAmbiguity(prompt);
37
+ const clarification = ambiguity.clarification;
38
+ return {
39
+ rounds: [],
40
+ pendingQuestions: [...clarification.questions],
41
+ currentRound: 0,
42
+ maxRoundsReached: false,
43
+ userValidated: false,
44
+ status: clarification.questions.length > 0 ? 'pending' : 'validated',
45
+ };
46
+ }
47
+ /**
48
+ * Get next batch of questions
49
+ */
50
+ export function getNextQuestions(state, config = DEFAULT_CLARIFICATION_CONFIG) {
51
+ if (state.pendingQuestions.length === 0) {
52
+ return [];
53
+ }
54
+ // Prioritize blocking questions
55
+ const blocking = state.pendingQuestions.filter((q) => q.priority === 'blocking');
56
+ const important = state.pendingQuestions.filter((q) => q.priority === 'important');
57
+ const niceToKnow = state.pendingQuestions.filter((q) => q.priority === 'nice-to-know');
58
+ // Build batch prioritizing blocking first
59
+ const batch = [];
60
+ const maxQuestions = config.maxQuestionsPerRound;
61
+ // Add blocking first
62
+ for (const q of blocking) {
63
+ if (batch.length >= maxQuestions)
64
+ break;
65
+ batch.push(q);
66
+ }
67
+ // Add important if room
68
+ for (const q of important) {
69
+ if (batch.length >= maxQuestions)
70
+ break;
71
+ batch.push(q);
72
+ }
73
+ // Add nice-to-know if room
74
+ for (const q of niceToKnow) {
75
+ if (batch.length >= maxQuestions)
76
+ break;
77
+ batch.push(q);
78
+ }
79
+ return batch;
80
+ }
81
+ /**
82
+ * Process user answers and update state
83
+ */
84
+ export function processAnswers(state, answers, confidenceBefore, config = DEFAULT_CLARIFICATION_CONFIG) {
85
+ const answeredIds = new Set(answers.map((a) => a.questionId));
86
+ const answerMap = new Map(answers.map((a) => [a.questionId, a.answer]));
87
+ // Calculate confidence boost
88
+ let boost = 0;
89
+ for (const answer of answers) {
90
+ const question = state.pendingQuestions.find((q) => q.id === answer.questionId);
91
+ if (question) {
92
+ switch (question.priority) {
93
+ case 'blocking':
94
+ boost += config.blockingAnswerBoost;
95
+ break;
96
+ case 'important':
97
+ boost += config.importantAnswerBoost;
98
+ break;
99
+ case 'nice-to-know':
100
+ boost += config.niceToKnowAnswerBoost;
101
+ break;
102
+ }
103
+ }
104
+ }
105
+ const confidenceAfter = Math.min(1, confidenceBefore + boost);
106
+ // Create round record
107
+ const questionsThisRound = state.pendingQuestions.filter((q) => answeredIds.has(q.id));
108
+ const round = {
109
+ roundNumber: state.currentRound + 1,
110
+ questions: questionsThisRound,
111
+ answers: answerMap,
112
+ confidenceBefore,
113
+ confidenceAfter,
114
+ timestamp: new Date(),
115
+ };
116
+ // Update pending questions
117
+ const remainingQuestions = state.pendingQuestions.filter((q) => !answeredIds.has(q.id));
118
+ // Check if max rounds reached
119
+ const newRoundNumber = state.currentRound + 1;
120
+ const maxRoundsReached = newRoundNumber >= config.maxRounds;
121
+ // Determine new status
122
+ let status = 'asking';
123
+ if (remainingQuestions.length === 0) {
124
+ status = 'validated';
125
+ }
126
+ else if (maxRoundsReached && config.requireValidationAfterMax) {
127
+ status = 'blocked';
128
+ }
129
+ return {
130
+ state: {
131
+ rounds: [...state.rounds, round],
132
+ pendingQuestions: remainingQuestions,
133
+ currentRound: newRoundNumber,
134
+ maxRoundsReached,
135
+ userValidated: status === 'validated',
136
+ status,
137
+ },
138
+ confidenceAfter,
139
+ };
140
+ }
141
+ /**
142
+ * Mark user as having validated assumptions
143
+ */
144
+ export function markUserValidated(state) {
145
+ return {
146
+ ...state,
147
+ userValidated: true,
148
+ status: 'validated',
149
+ };
150
+ }
151
+ /**
152
+ * Execute clarification phase
153
+ */
154
+ export function executeClarificationPhase(prompt, currentConfidence, analysis, config = DEFAULT_CLARIFICATION_CONFIG) {
155
+ // Initialize state
156
+ const state = initializeClarificationPhase(prompt, analysis, currentConfidence);
157
+ // Check if clarification needed
158
+ if (state.pendingQuestions.length === 0) {
159
+ return {
160
+ needed: false,
161
+ state,
162
+ confidenceImprovement: 0,
163
+ newConfidence: currentConfidence,
164
+ canImproveMore: false,
165
+ requiresUserValidation: false,
166
+ summary: 'No clarification needed - requirements are clear',
167
+ };
168
+ }
169
+ // Get first batch of questions
170
+ const questions = getNextQuestions(state, config);
171
+ const hasBlocking = questions.some((q) => q.priority === 'blocking');
172
+ return {
173
+ needed: true,
174
+ state: {
175
+ ...state,
176
+ status: 'asking',
177
+ },
178
+ confidenceImprovement: 0, // Not yet improved
179
+ newConfidence: currentConfidence,
180
+ canImproveMore: true,
181
+ requiresUserValidation: hasBlocking,
182
+ summary: generateClarificationSummary(state, questions),
183
+ };
184
+ }
185
+ /**
186
+ * Generate summary of clarification phase
187
+ */
188
+ function generateClarificationSummary(state, currentQuestions) {
189
+ const parts = [];
190
+ const blocking = currentQuestions.filter((q) => q.priority === 'blocking').length;
191
+ const important = currentQuestions.filter((q) => q.priority === 'important').length;
192
+ const niceToKnow = currentQuestions.filter((q) => q.priority === 'nice-to-know').length;
193
+ if (blocking > 0) {
194
+ parts.push(`${blocking} blocking question(s)`);
195
+ }
196
+ if (important > 0) {
197
+ parts.push(`${important} important question(s)`);
198
+ }
199
+ if (niceToKnow > 0) {
200
+ parts.push(`${niceToKnow} optional question(s)`);
201
+ }
202
+ const total = state.pendingQuestions.length;
203
+ if (total > currentQuestions.length) {
204
+ parts.push(`${total - currentQuestions.length} more pending`);
205
+ }
206
+ return `Clarification needed: ${parts.join(', ')}.`;
207
+ }
208
+ // =============================================================================
209
+ // Question Generation Helpers
210
+ // =============================================================================
211
+ /**
212
+ * Generate additional questions from analysis signals
213
+ */
214
+ export function generateAdditionalQuestions(analysis) {
215
+ const questions = [];
216
+ // Missing target
217
+ if (analysis.signals.missingTarget) {
218
+ questions.push({
219
+ id: 'cq-target',
220
+ question: 'Which specific file, component, or feature should this change apply to?',
221
+ priority: 'blocking',
222
+ category: 'missing_specific',
223
+ triggerSignal: 'missing_target',
224
+ matchedText: 'missing target',
225
+ context: '',
226
+ patternId: 'manual-target',
227
+ confidenceImpact: 15,
228
+ });
229
+ }
230
+ // Vague verbs
231
+ for (const verb of analysis.signals.vagueVerbs.slice(0, 2)) {
232
+ questions.push({
233
+ id: `cq-verb-${verb}`,
234
+ question: `What specifically should be "${verb}ed"? Please provide concrete details.`,
235
+ priority: 'blocking',
236
+ category: 'vague_verb',
237
+ triggerSignal: 'vague_verb',
238
+ matchedText: verb,
239
+ context: '',
240
+ patternId: `manual-verb-${verb}`,
241
+ confidenceImpact: 10,
242
+ });
243
+ }
244
+ // Unclear success
245
+ if (analysis.signals.unclearSuccess) {
246
+ questions.push({
247
+ id: 'cq-success',
248
+ question: 'How will we know when this is working correctly? What should we test?',
249
+ priority: 'important',
250
+ category: 'missing_specific',
251
+ triggerSignal: 'unclear_success',
252
+ matchedText: 'unclear success criteria',
253
+ context: '',
254
+ patternId: 'manual-success',
255
+ confidenceImpact: 10,
256
+ });
257
+ }
258
+ // Security related
259
+ if (analysis.signals.securityRelated) {
260
+ questions.push({
261
+ id: 'cq-security',
262
+ question: 'What security requirements or constraints should this follow?',
263
+ priority: 'blocking',
264
+ category: 'missing_specific',
265
+ triggerSignal: 'missing_target',
266
+ matchedText: 'security requirement',
267
+ context: '',
268
+ patternId: 'manual-security',
269
+ confidenceImpact: 15,
270
+ });
271
+ }
272
+ // Data related
273
+ if (analysis.signals.dataRelated) {
274
+ questions.push({
275
+ id: 'cq-data',
276
+ question: 'What data migration, backup, or rollback requirements exist?',
277
+ priority: 'important',
278
+ category: 'missing_specific',
279
+ triggerSignal: 'missing_target',
280
+ matchedText: 'data handling',
281
+ context: '',
282
+ patternId: 'manual-data',
283
+ confidenceImpact: 10,
284
+ });
285
+ }
286
+ // Breaking change
287
+ if (analysis.signals.breakingChange) {
288
+ questions.push({
289
+ id: 'cq-breaking',
290
+ question: 'What backwards compatibility requirements should be maintained?',
291
+ priority: 'blocking',
292
+ category: 'missing_specific',
293
+ triggerSignal: 'breaking_change',
294
+ matchedText: 'breaking change',
295
+ context: '',
296
+ patternId: 'manual-breaking',
297
+ confidenceImpact: 15,
298
+ });
299
+ }
300
+ return questions;
301
+ }
302
+ // =============================================================================
303
+ // Formatting
304
+ // =============================================================================
305
+ /**
306
+ * Format clarification state for session.md
307
+ */
308
+ export function formatClarificationForSession(result) {
309
+ const lines = [];
310
+ lines.push('### Clarification Phase');
311
+ lines.push('');
312
+ if (!result.needed) {
313
+ lines.push('No clarification needed - requirements are clear.');
314
+ return lines.join('\n');
315
+ }
316
+ const { state } = result;
317
+ lines.push(`**Status:** ${state.status}`);
318
+ lines.push(`**Round:** ${state.currentRound}/${DEFAULT_CLARIFICATION_CONFIG.maxRounds}`);
319
+ lines.push(`**Pending Questions:** ${state.pendingQuestions.length}`);
320
+ lines.push('');
321
+ if (state.pendingQuestions.length > 0) {
322
+ const blocking = state.pendingQuestions.filter((q) => q.priority === 'blocking');
323
+ const important = state.pendingQuestions.filter((q) => q.priority === 'important');
324
+ if (blocking.length > 0) {
325
+ lines.push('**Blocking Questions:**');
326
+ for (const q of blocking.slice(0, 3)) {
327
+ lines.push(`- ${q.question}`);
328
+ }
329
+ lines.push('');
330
+ }
331
+ if (important.length > 0) {
332
+ lines.push('**Important Questions:**');
333
+ for (const q of important.slice(0, 3)) {
334
+ lines.push(`- ${q.question}`);
335
+ }
336
+ lines.push('');
337
+ }
338
+ }
339
+ if (state.rounds.length > 0) {
340
+ lines.push('**History:**');
341
+ for (const round of state.rounds) {
342
+ const change = round.confidenceAfter - round.confidenceBefore;
343
+ lines.push(`- Round ${round.roundNumber}: ${round.answers.size} answered, +${Math.round(change * 100)}% confidence`);
344
+ }
345
+ lines.push('');
346
+ }
347
+ if (state.maxRoundsReached && !state.userValidated) {
348
+ lines.push('**Action Required:** User validation needed to proceed.');
349
+ lines.push('');
350
+ }
351
+ lines.push(`**Summary:** ${result.summary}`);
352
+ return lines.join('\n');
353
+ }
354
+ /**
355
+ * Format questions for AskUserQuestion tool
356
+ */
357
+ export function formatQuestionsForAskUser(questions) {
358
+ return {
359
+ questions: questions.slice(0, 4).map((q) => ({
360
+ question: q.question,
361
+ header: q.priority === 'blocking'
362
+ ? 'Required'
363
+ : q.priority === 'important'
364
+ ? 'Important'
365
+ : 'Optional',
366
+ options: [
367
+ { label: 'Provide details', description: 'I will provide specific details' },
368
+ { label: 'Skip for now', description: 'Proceed without this information' },
369
+ { label: 'Use default', description: 'Use reasonable defaults' },
370
+ ],
371
+ multiSelect: false,
372
+ })),
373
+ };
374
+ }
375
+ //# sourceMappingURL=clarification-phase.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clarification-phase.js","sourceRoot":"","sources":["../../../src/core/agents/clarification-phase.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,wCAAwC,CAAA;AA6ExE,gFAAgF;AAChF,YAAY;AACZ,gFAAgF;AAEhF,MAAM,CAAC,MAAM,4BAA4B,GAA6B;IACpE,SAAS,EAAE,CAAC;IACZ,yBAAyB,EAAE,IAAI;IAC/B,oBAAoB,EAAE,CAAC;IACvB,mBAAmB,EAAE,IAAI;IACzB,oBAAoB,EAAE,GAAG;IACzB,qBAAqB,EAAE,IAAI;CAC5B,CAAA;AAED,gFAAgF;AAChF,iBAAiB;AACjB,gFAAgF;AAEhF;;GAEG;AACH,MAAM,UAAU,4BAA4B,CAC1C,MAAc,EACd,SAAuB,EACvB,kBAA0B;IAE1B,gDAAgD;IAChD,MAAM,SAAS,GAAG,eAAe,CAAC,MAAM,CAAC,CAAA;IACzC,MAAM,aAAa,GAAG,SAAS,CAAC,aAAa,CAAA;IAE7C,OAAO;QACL,MAAM,EAAE,EAAE;QACV,gBAAgB,EAAE,CAAC,GAAG,aAAa,CAAC,SAAS,CAAC;QAC9C,YAAY,EAAE,CAAC;QACf,gBAAgB,EAAE,KAAK;QACvB,aAAa,EAAE,KAAK;QACpB,MAAM,EAAE,aAAa,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW;KACrE,CAAA;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAC9B,KAA8B,EAC9B,SAAmC,4BAA4B;IAE/D,IAAI,KAAK,CAAC,gBAAgB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxC,OAAO,EAAE,CAAA;IACX,CAAC;IAED,gCAAgC;IAChC,MAAM,QAAQ,GAAG,KAAK,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,UAAU,CAAC,CAAA;IAChF,MAAM,SAAS,GAAG,KAAK,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,WAAW,CAAC,CAAA;IAClF,MAAM,UAAU,GAAG,KAAK,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,cAAc,CAAC,CAAA;IAEtF,0CAA0C;IAC1C,MAAM,KAAK,GAA4B,EAAE,CAAA;IACzC,MAAM,YAAY,GAAG,MAAM,CAAC,oBAAoB,CAAA;IAEhD,qBAAqB;IACrB,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;QACzB,IAAI,KAAK,CAAC,MAAM,IAAI,YAAY;YAAE,MAAK;QACvC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACf,CAAC;IAED,wBAAwB;IACxB,KAAK,MAAM,CAAC,IAAI,SAAS,EAAE,CAAC;QAC1B,IAAI,KAAK,CAAC,MAAM,IAAI,YAAY;YAAE,MAAK;QACvC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACf,CAAC;IAED,2BAA2B;IAC3B,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE,CAAC;QAC3B,IAAI,KAAK,CAAC,MAAM,IAAI,YAAY;YAAE,MAAK;QACvC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACf,CAAC;IAED,OAAO,KAAK,CAAA;AACd,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAC5B,KAA8B,EAC9B,OAAqB,EACrB,gBAAwB,EACxB,SAAmC,4BAA4B;IAE/D,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAA;IAC7D,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;IAEvE,6BAA6B;IAC7B,IAAI,KAAK,GAAG,CAAC,CAAA;IACb,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,MAAM,QAAQ,GAAG,KAAK,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,UAAU,CAAC,CAAA;QAC/E,IAAI,QAAQ,EAAE,CAAC;YACb,QAAQ,QAAQ,CAAC,QAAQ,EAAE,CAAC;gBAC1B,KAAK,UAAU;oBACb,KAAK,IAAI,MAAM,CAAC,mBAAmB,CAAA;oBACnC,MAAK;gBACP,KAAK,WAAW;oBACd,KAAK,IAAI,MAAM,CAAC,oBAAoB,CAAA;oBACpC,MAAK;gBACP,KAAK,cAAc;oBACjB,KAAK,IAAI,MAAM,CAAC,qBAAqB,CAAA;oBACrC,MAAK;YACT,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,gBAAgB,GAAG,KAAK,CAAC,CAAA;IAE7D,sBAAsB;IACtB,MAAM,kBAAkB,GAAG,KAAK,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IACtF,MAAM,KAAK,GAAuB;QAChC,WAAW,EAAE,KAAK,CAAC,YAAY,GAAG,CAAC;QACnC,SAAS,EAAE,kBAAkB;QAC7B,OAAO,EAAE,SAAS;QAClB,gBAAgB;QAChB,eAAe;QACf,SAAS,EAAE,IAAI,IAAI,EAAE;KACtB,CAAA;IAED,2BAA2B;IAC3B,MAAM,kBAAkB,GAAG,KAAK,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IAEvF,8BAA8B;IAC9B,MAAM,cAAc,GAAG,KAAK,CAAC,YAAY,GAAG,CAAC,CAAA;IAC7C,MAAM,gBAAgB,GAAG,cAAc,IAAI,MAAM,CAAC,SAAS,CAAA;IAE3D,uBAAuB;IACvB,IAAI,MAAM,GAAsC,QAAQ,CAAA;IACxD,IAAI,kBAAkB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACpC,MAAM,GAAG,WAAW,CAAA;IACtB,CAAC;SAAM,IAAI,gBAAgB,IAAI,MAAM,CAAC,yBAAyB,EAAE,CAAC;QAChE,MAAM,GAAG,SAAS,CAAA;IACpB,CAAC;IAED,OAAO;QACL,KAAK,EAAE;YACL,MAAM,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC;YAChC,gBAAgB,EAAE,kBAAkB;YACpC,YAAY,EAAE,cAAc;YAC5B,gBAAgB;YAChB,aAAa,EAAE,MAAM,KAAK,WAAW;YACrC,MAAM;SACP;QACD,eAAe;KAChB,CAAA;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,KAA8B;IAC9D,OAAO;QACL,GAAG,KAAK;QACR,aAAa,EAAE,IAAI;QACnB,MAAM,EAAE,WAAW;KACpB,CAAA;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,yBAAyB,CACvC,MAAc,EACd,iBAAyB,EACzB,QAAsB,EACtB,SAAmC,4BAA4B;IAE/D,mBAAmB;IACnB,MAAM,KAAK,GAAG,4BAA4B,CAAC,MAAM,EAAE,QAAQ,EAAE,iBAAiB,CAAC,CAAA;IAE/E,gCAAgC;IAChC,IAAI,KAAK,CAAC,gBAAgB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxC,OAAO;YACL,MAAM,EAAE,KAAK;YACb,KAAK;YACL,qBAAqB,EAAE,CAAC;YACxB,aAAa,EAAE,iBAAiB;YAChC,cAAc,EAAE,KAAK;YACrB,sBAAsB,EAAE,KAAK;YAC7B,OAAO,EAAE,kDAAkD;SAC5D,CAAA;IACH,CAAC;IAED,+BAA+B;IAC/B,MAAM,SAAS,GAAG,gBAAgB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;IACjD,MAAM,WAAW,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,UAAU,CAAC,CAAA;IAEpE,OAAO;QACL,MAAM,EAAE,IAAI;QACZ,KAAK,EAAE;YACL,GAAG,KAAK;YACR,MAAM,EAAE,QAAQ;SACjB;QACD,qBAAqB,EAAE,CAAC,EAAE,mBAAmB;QAC7C,aAAa,EAAE,iBAAiB;QAChC,cAAc,EAAE,IAAI;QACpB,sBAAsB,EAAE,WAAW;QACnC,OAAO,EAAE,4BAA4B,CAAC,KAAK,EAAE,SAAS,CAAC;KACxD,CAAA;AACH,CAAC;AAED;;GAEG;AACH,SAAS,4BAA4B,CACnC,KAA8B,EAC9B,gBAAyC;IAEzC,MAAM,KAAK,GAAa,EAAE,CAAA;IAE1B,MAAM,QAAQ,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,UAAU,CAAC,CAAC,MAAM,CAAA;IACjF,MAAM,SAAS,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,WAAW,CAAC,CAAC,MAAM,CAAA;IACnF,MAAM,UAAU,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,cAAc,CAAC,CAAC,MAAM,CAAA;IAEvF,IAAI,QAAQ,GAAG,CAAC,EAAE,CAAC;QACjB,KAAK,CAAC,IAAI,CAAC,GAAG,QAAQ,uBAAuB,CAAC,CAAA;IAChD,CAAC;IACD,IAAI,SAAS,GAAG,CAAC,EAAE,CAAC;QAClB,KAAK,CAAC,IAAI,CAAC,GAAG,SAAS,wBAAwB,CAAC,CAAA;IAClD,CAAC;IACD,IAAI,UAAU,GAAG,CAAC,EAAE,CAAC;QACnB,KAAK,CAAC,IAAI,CAAC,GAAG,UAAU,uBAAuB,CAAC,CAAA;IAClD,CAAC;IAED,MAAM,KAAK,GAAG,KAAK,CAAC,gBAAgB,CAAC,MAAM,CAAA;IAC3C,IAAI,KAAK,GAAG,gBAAgB,CAAC,MAAM,EAAE,CAAC;QACpC,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,GAAG,gBAAgB,CAAC,MAAM,eAAe,CAAC,CAAA;IAC/D,CAAC;IAED,OAAO,yBAAyB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAA;AACrD,CAAC;AAED,gFAAgF;AAChF,8BAA8B;AAC9B,gFAAgF;AAEhF;;GAEG;AACH,MAAM,UAAU,2BAA2B,CAAC,QAAsB;IAChE,MAAM,SAAS,GAA4B,EAAE,CAAA;IAE7C,iBAAiB;IACjB,IAAI,QAAQ,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC;QACnC,SAAS,CAAC,IAAI,CAAC;YACb,EAAE,EAAE,WAAW;YACf,QAAQ,EAAE,yEAAyE;YACnF,QAAQ,EAAE,UAAU;YACpB,QAAQ,EAAE,kBAAkB;YAC5B,aAAa,EAAE,gBAAgB;YAC/B,WAAW,EAAE,gBAAgB;YAC7B,OAAO,EAAE,EAAE;YACX,SAAS,EAAE,eAAe;YAC1B,gBAAgB,EAAE,EAAE;SACrB,CAAC,CAAA;IACJ,CAAC;IAED,cAAc;IACd,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;QAC3D,SAAS,CAAC,IAAI,CAAC;YACb,EAAE,EAAE,WAAW,IAAI,EAAE;YACrB,QAAQ,EAAE,gCAAgC,IAAI,uCAAuC;YACrF,QAAQ,EAAE,UAAU;YACpB,QAAQ,EAAE,YAAY;YACtB,aAAa,EAAE,YAAY;YAC3B,WAAW,EAAE,IAAI;YACjB,OAAO,EAAE,EAAE;YACX,SAAS,EAAE,eAAe,IAAI,EAAE;YAChC,gBAAgB,EAAE,EAAE;SACrB,CAAC,CAAA;IACJ,CAAC;IAED,kBAAkB;IAClB,IAAI,QAAQ,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC;QACpC,SAAS,CAAC,IAAI,CAAC;YACb,EAAE,EAAE,YAAY;YAChB,QAAQ,EAAE,uEAAuE;YACjF,QAAQ,EAAE,WAAW;YACrB,QAAQ,EAAE,kBAAkB;YAC5B,aAAa,EAAE,iBAAiB;YAChC,WAAW,EAAE,0BAA0B;YACvC,OAAO,EAAE,EAAE;YACX,SAAS,EAAE,gBAAgB;YAC3B,gBAAgB,EAAE,EAAE;SACrB,CAAC,CAAA;IACJ,CAAC;IAED,mBAAmB;IACnB,IAAI,QAAQ,CAAC,OAAO,CAAC,eAAe,EAAE,CAAC;QACrC,SAAS,CAAC,IAAI,CAAC;YACb,EAAE,EAAE,aAAa;YACjB,QAAQ,EAAE,+DAA+D;YACzE,QAAQ,EAAE,UAAU;YACpB,QAAQ,EAAE,kBAAkB;YAC5B,aAAa,EAAE,gBAAgB;YAC/B,WAAW,EAAE,sBAAsB;YACnC,OAAO,EAAE,EAAE;YACX,SAAS,EAAE,iBAAiB;YAC5B,gBAAgB,EAAE,EAAE;SACrB,CAAC,CAAA;IACJ,CAAC;IAED,eAAe;IACf,IAAI,QAAQ,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;QACjC,SAAS,CAAC,IAAI,CAAC;YACb,EAAE,EAAE,SAAS;YACb,QAAQ,EAAE,8DAA8D;YACxE,QAAQ,EAAE,WAAW;YACrB,QAAQ,EAAE,kBAAkB;YAC5B,aAAa,EAAE,gBAAgB;YAC/B,WAAW,EAAE,eAAe;YAC5B,OAAO,EAAE,EAAE;YACX,SAAS,EAAE,aAAa;YACxB,gBAAgB,EAAE,EAAE;SACrB,CAAC,CAAA;IACJ,CAAC;IAED,kBAAkB;IAClB,IAAI,QAAQ,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC;QACpC,SAAS,CAAC,IAAI,CAAC;YACb,EAAE,EAAE,aAAa;YACjB,QAAQ,EAAE,iEAAiE;YAC3E,QAAQ,EAAE,UAAU;YACpB,QAAQ,EAAE,kBAAkB;YAC5B,aAAa,EAAE,iBAAiB;YAChC,WAAW,EAAE,iBAAiB;YAC9B,OAAO,EAAE,EAAE;YACX,SAAS,EAAE,iBAAiB;YAC5B,gBAAgB,EAAE,EAAE;SACrB,CAAC,CAAA;IACJ,CAAC;IAED,OAAO,SAAS,CAAA;AAClB,CAAC;AAED,gFAAgF;AAChF,aAAa;AACb,gFAAgF;AAEhF;;GAEG;AACH,MAAM,UAAU,6BAA6B,CAAC,MAAgC;IAC5E,MAAM,KAAK,GAAa,EAAE,CAAA;IAE1B,KAAK,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAA;IACrC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IAEd,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QACnB,KAAK,CAAC,IAAI,CAAC,mDAAmD,CAAC,CAAA;QAC/D,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACzB,CAAC;IAED,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,CAAA;IACxB,KAAK,CAAC,IAAI,CAAC,eAAe,KAAK,CAAC,MAAM,EAAE,CAAC,CAAA;IACzC,KAAK,CAAC,IAAI,CAAC,cAAc,KAAK,CAAC,YAAY,IAAI,4BAA4B,CAAC,SAAS,EAAE,CAAC,CAAA;IACxF,KAAK,CAAC,IAAI,CAAC,0BAA0B,KAAK,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC,CAAA;IACrE,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IAEd,IAAI,KAAK,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtC,MAAM,QAAQ,GAAG,KAAK,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,UAAU,CAAC,CAAA;QAChF,MAAM,SAAS,GAAG,KAAK,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,WAAW,CAAC,CAAA;QAElF,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxB,KAAK,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAA;YACrC,KAAK,MAAM,CAAC,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;gBACrC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAA;YAC/B,CAAC;YACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QAChB,CAAC;QAED,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACzB,KAAK,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAA;YACtC,KAAK,MAAM,CAAC,IAAI,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;gBACtC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAA;YAC/B,CAAC;YACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QAChB,CAAC;IACH,CAAC;IAED,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5B,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAA;QAC1B,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;YACjC,MAAM,MAAM,GAAG,KAAK,CAAC,eAAe,GAAG,KAAK,CAAC,gBAAgB,CAAA;YAC7D,KAAK,CAAC,IAAI,CACR,WAAW,KAAK,CAAC,WAAW,KAAK,KAAK,CAAC,OAAO,CAAC,IAAI,eAAe,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC,cAAc,CACzG,CAAA;QACH,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IAChB,CAAC;IAED,IAAI,KAAK,CAAC,gBAAgB,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC;QACnD,KAAK,CAAC,IAAI,CAAC,yDAAyD,CAAC,CAAA;QACrE,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IAChB,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,gBAAgB,MAAM,CAAC,OAAO,EAAE,CAAC,CAAA;IAE5C,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACzB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,yBAAyB,CAAC,SAAkC;IAQ1E,OAAO;QACL,SAAS,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC3C,QAAQ,EAAE,CAAC,CAAC,QAAQ;YACpB,MAAM,EACJ,CAAC,CAAC,QAAQ,KAAK,UAAU;gBACvB,CAAC,CAAC,UAAU;gBACZ,CAAC,CAAC,CAAC,CAAC,QAAQ,KAAK,WAAW;oBAC1B,CAAC,CAAC,WAAW;oBACb,CAAC,CAAC,UAAU;YAClB,OAAO,EAAE;gBACP,EAAE,KAAK,EAAE,iBAAiB,EAAE,WAAW,EAAE,iCAAiC,EAAE;gBAC5E,EAAE,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,kCAAkC,EAAE;gBAC1E,EAAE,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,yBAAyB,EAAE;aACjE;YACD,WAAW,EAAE,KAAK;SACnB,CAAC,CAAC;KACJ,CAAA;AACH,CAAC"}