dino-spec 17.4.3 → 17.5.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 (189) hide show
  1. package/dist/commands/init.d.ts.map +1 -1
  2. package/dist/commands/init.js +10 -0
  3. package/dist/commands/init.js.map +1 -1
  4. package/dist/core/agents/__tests__/confidence-gate.test.d.ts +5 -0
  5. package/dist/core/agents/__tests__/confidence-gate.test.d.ts.map +1 -0
  6. package/dist/core/agents/__tests__/confidence-gate.test.js +329 -0
  7. package/dist/core/agents/__tests__/confidence-gate.test.js.map +1 -0
  8. package/dist/core/agents/__tests__/gap-detector.test.d.ts +5 -0
  9. package/dist/core/agents/__tests__/gap-detector.test.d.ts.map +1 -0
  10. package/dist/core/agents/__tests__/gap-detector.test.js +609 -0
  11. package/dist/core/agents/__tests__/gap-detector.test.js.map +1 -0
  12. package/dist/core/agents/__tests__/learning-loop.test.d.ts +5 -0
  13. package/dist/core/agents/__tests__/learning-loop.test.d.ts.map +1 -0
  14. package/dist/core/agents/__tests__/learning-loop.test.js +663 -0
  15. package/dist/core/agents/__tests__/learning-loop.test.js.map +1 -0
  16. package/dist/core/agents/__tests__/parallel-executor.test.d.ts +5 -0
  17. package/dist/core/agents/__tests__/parallel-executor.test.d.ts.map +1 -0
  18. package/dist/core/agents/__tests__/parallel-executor.test.js +610 -0
  19. package/dist/core/agents/__tests__/parallel-executor.test.js.map +1 -0
  20. package/dist/core/agents/__tests__/research-validator.test.js +5 -5
  21. package/dist/core/agents/__tests__/research-validator.test.js.map +1 -1
  22. package/dist/core/agents/__tests__/skill-creator.test.d.ts +5 -0
  23. package/dist/core/agents/__tests__/skill-creator.test.d.ts.map +1 -0
  24. package/dist/core/agents/__tests__/skill-creator.test.js +443 -0
  25. package/dist/core/agents/__tests__/skill-creator.test.js.map +1 -0
  26. package/dist/core/agents/__tests__/state-persistence.test.d.ts +2 -0
  27. package/dist/core/agents/__tests__/state-persistence.test.d.ts.map +1 -0
  28. package/dist/core/agents/__tests__/state-persistence.test.js +270 -0
  29. package/dist/core/agents/__tests__/state-persistence.test.js.map +1 -0
  30. package/dist/core/agents/__tests__/validation-cache.test.d.ts +2 -0
  31. package/dist/core/agents/__tests__/validation-cache.test.d.ts.map +1 -0
  32. package/dist/core/agents/__tests__/validation-cache.test.js +181 -0
  33. package/dist/core/agents/__tests__/validation-cache.test.js.map +1 -0
  34. package/dist/core/agents/blackboard.d.ts +22 -3
  35. package/dist/core/agents/blackboard.d.ts.map +1 -1
  36. package/dist/core/agents/blackboard.js +52 -2
  37. package/dist/core/agents/blackboard.js.map +1 -1
  38. package/dist/core/agents/circuit-breaker.d.ts +79 -1
  39. package/dist/core/agents/circuit-breaker.d.ts.map +1 -1
  40. package/dist/core/agents/circuit-breaker.js +175 -1
  41. package/dist/core/agents/circuit-breaker.js.map +1 -1
  42. package/dist/core/agents/clarification-phase.d.ts +128 -0
  43. package/dist/core/agents/clarification-phase.d.ts.map +1 -0
  44. package/dist/core/agents/clarification-phase.js +375 -0
  45. package/dist/core/agents/clarification-phase.js.map +1 -0
  46. package/dist/core/agents/confidence-gate.d.ts +116 -3
  47. package/dist/core/agents/confidence-gate.d.ts.map +1 -1
  48. package/dist/core/agents/confidence-gate.js +363 -3
  49. package/dist/core/agents/confidence-gate.js.map +1 -1
  50. package/dist/core/agents/correction-tracker.d.ts +197 -0
  51. package/dist/core/agents/correction-tracker.d.ts.map +1 -0
  52. package/dist/core/agents/correction-tracker.js +366 -0
  53. package/dist/core/agents/correction-tracker.js.map +1 -0
  54. package/dist/core/agents/dependency-graph.d.ts +193 -0
  55. package/dist/core/agents/dependency-graph.d.ts.map +1 -0
  56. package/dist/core/agents/dependency-graph.js +462 -0
  57. package/dist/core/agents/dependency-graph.js.map +1 -0
  58. package/dist/core/agents/gap-detector.d.ts +277 -0
  59. package/dist/core/agents/gap-detector.d.ts.map +1 -0
  60. package/dist/core/agents/gap-detector.js +540 -0
  61. package/dist/core/agents/gap-detector.js.map +1 -0
  62. package/dist/core/agents/index.d.ts +14 -1
  63. package/dist/core/agents/index.d.ts.map +1 -1
  64. package/dist/core/agents/index.js +26 -1
  65. package/dist/core/agents/index.js.map +1 -1
  66. package/dist/core/agents/message-protocol.d.ts +13 -2
  67. package/dist/core/agents/message-protocol.d.ts.map +1 -1
  68. package/dist/core/agents/message-protocol.js +20 -1
  69. package/dist/core/agents/message-protocol.js.map +1 -1
  70. package/dist/core/agents/parallel-executor.d.ts +182 -0
  71. package/dist/core/agents/parallel-executor.d.ts.map +1 -0
  72. package/dist/core/agents/parallel-executor.js +474 -0
  73. package/dist/core/agents/parallel-executor.js.map +1 -0
  74. package/dist/core/agents/pattern-detector.d.ts +157 -0
  75. package/dist/core/agents/pattern-detector.d.ts.map +1 -0
  76. package/dist/core/agents/pattern-detector.js +370 -0
  77. package/dist/core/agents/pattern-detector.js.map +1 -0
  78. package/dist/core/agents/registry-client.d.ts +6 -0
  79. package/dist/core/agents/registry-client.d.ts.map +1 -1
  80. package/dist/core/agents/registry-client.js +3 -0
  81. package/dist/core/agents/registry-client.js.map +1 -1
  82. package/dist/core/agents/research-phase.d.ts +114 -0
  83. package/dist/core/agents/research-phase.d.ts.map +1 -0
  84. package/dist/core/agents/research-phase.js +355 -0
  85. package/dist/core/agents/research-phase.js.map +1 -0
  86. package/dist/core/agents/research-validator.d.ts +13 -2
  87. package/dist/core/agents/research-validator.d.ts.map +1 -1
  88. package/dist/core/agents/research-validator.js +63 -31
  89. package/dist/core/agents/research-validator.js.map +1 -1
  90. package/dist/core/agents/skill-creator.d.ts +174 -0
  91. package/dist/core/agents/skill-creator.d.ts.map +1 -0
  92. package/dist/core/agents/skill-creator.js +570 -0
  93. package/dist/core/agents/skill-creator.js.map +1 -0
  94. package/dist/core/agents/state-persistence.d.ts +184 -0
  95. package/dist/core/agents/state-persistence.d.ts.map +1 -0
  96. package/dist/core/agents/state-persistence.js +394 -0
  97. package/dist/core/agents/state-persistence.js.map +1 -0
  98. package/dist/core/agents/validation-cache.d.ts +122 -0
  99. package/dist/core/agents/validation-cache.d.ts.map +1 -0
  100. package/dist/core/agents/validation-cache.js +280 -0
  101. package/dist/core/agents/validation-cache.js.map +1 -0
  102. package/dist/core/agents/validators/__tests__/validators.test.d.ts +5 -0
  103. package/dist/core/agents/validators/__tests__/validators.test.d.ts.map +1 -0
  104. package/dist/core/agents/validators/__tests__/validators.test.js +321 -0
  105. package/dist/core/agents/validators/__tests__/validators.test.js.map +1 -0
  106. package/dist/core/agents/validators/base-validator.d.ts +191 -0
  107. package/dist/core/agents/validators/base-validator.d.ts.map +1 -0
  108. package/dist/core/agents/validators/base-validator.js +192 -0
  109. package/dist/core/agents/validators/base-validator.js.map +1 -0
  110. package/dist/core/agents/validators/index.d.ts +7 -0
  111. package/dist/core/agents/validators/index.d.ts.map +1 -0
  112. package/dist/core/agents/validators/index.js +7 -0
  113. package/dist/core/agents/validators/index.js.map +1 -0
  114. package/dist/core/agents/validators/npm-validator.d.ts +50 -0
  115. package/dist/core/agents/validators/npm-validator.d.ts.map +1 -0
  116. package/dist/core/agents/validators/npm-validator.js +211 -0
  117. package/dist/core/agents/validators/npm-validator.js.map +1 -0
  118. package/dist/core/agents/validators/pip-validator.d.ts +49 -0
  119. package/dist/core/agents/validators/pip-validator.d.ts.map +1 -0
  120. package/dist/core/agents/validators/pip-validator.js +191 -0
  121. package/dist/core/agents/validators/pip-validator.js.map +1 -0
  122. package/dist/core/agents/validators/validator-registry.d.ts +122 -0
  123. package/dist/core/agents/validators/validator-registry.d.ts.map +1 -0
  124. package/dist/core/agents/validators/validator-registry.js +321 -0
  125. package/dist/core/agents/validators/validator-registry.js.map +1 -0
  126. package/dist/core/context-repl/types.d.ts +4 -4
  127. package/dist/core/memory/index.d.ts +1 -0
  128. package/dist/core/memory/index.d.ts.map +1 -1
  129. package/dist/core/memory/index.js +2 -0
  130. package/dist/core/memory/index.js.map +1 -1
  131. package/dist/core/memory/learning-store.d.ts +222 -0
  132. package/dist/core/memory/learning-store.d.ts.map +1 -0
  133. package/dist/core/memory/learning-store.js +477 -0
  134. package/dist/core/memory/learning-store.js.map +1 -0
  135. package/dist/core/spec-analyzer/__tests__/ambiguity-detector.test.d.ts +5 -0
  136. package/dist/core/spec-analyzer/__tests__/ambiguity-detector.test.d.ts.map +1 -0
  137. package/dist/core/spec-analyzer/__tests__/ambiguity-detector.test.js +401 -0
  138. package/dist/core/spec-analyzer/__tests__/ambiguity-detector.test.js.map +1 -0
  139. package/dist/core/spec-analyzer/ambiguity-detector.d.ts +99 -0
  140. package/dist/core/spec-analyzer/ambiguity-detector.d.ts.map +1 -0
  141. package/dist/core/spec-analyzer/ambiguity-detector.js +250 -0
  142. package/dist/core/spec-analyzer/ambiguity-detector.js.map +1 -0
  143. package/dist/core/spec-analyzer/clarification-generator.d.ts +76 -0
  144. package/dist/core/spec-analyzer/clarification-generator.d.ts.map +1 -0
  145. package/dist/core/spec-analyzer/clarification-generator.js +257 -0
  146. package/dist/core/spec-analyzer/clarification-generator.js.map +1 -0
  147. package/dist/core/spec-analyzer/index.d.ts +10 -1
  148. package/dist/core/spec-analyzer/index.d.ts.map +1 -1
  149. package/dist/core/spec-analyzer/index.js +13 -1
  150. package/dist/core/spec-analyzer/index.js.map +1 -1
  151. package/dist/core/spec-analyzer/patterns.d.ts +73 -0
  152. package/dist/core/spec-analyzer/patterns.d.ts.map +1 -0
  153. package/dist/core/spec-analyzer/patterns.js +412 -0
  154. package/dist/core/spec-analyzer/patterns.js.map +1 -0
  155. package/dist/hooks/__tests__/dynamic-generator.test.d.ts +5 -0
  156. package/dist/hooks/__tests__/dynamic-generator.test.d.ts.map +1 -0
  157. package/dist/hooks/__tests__/dynamic-generator.test.js +425 -0
  158. package/dist/hooks/__tests__/dynamic-generator.test.js.map +1 -0
  159. package/dist/hooks/__tests__/hook-agent-bridge.test.d.ts +5 -0
  160. package/dist/hooks/__tests__/hook-agent-bridge.test.d.ts.map +1 -0
  161. package/dist/hooks/__tests__/hook-agent-bridge.test.js +315 -0
  162. package/dist/hooks/__tests__/hook-agent-bridge.test.js.map +1 -0
  163. package/dist/hooks/dynamic-generator.d.ts +158 -0
  164. package/dist/hooks/dynamic-generator.d.ts.map +1 -0
  165. package/dist/hooks/dynamic-generator.js +448 -0
  166. package/dist/hooks/dynamic-generator.js.map +1 -0
  167. package/dist/hooks/hook-agent-bridge.d.ts +252 -0
  168. package/dist/hooks/hook-agent-bridge.d.ts.map +1 -0
  169. package/dist/hooks/hook-agent-bridge.js +489 -0
  170. package/dist/hooks/hook-agent-bridge.js.map +1 -0
  171. package/dist/hooks/index.d.ts +3 -1
  172. package/dist/hooks/index.d.ts.map +1 -1
  173. package/dist/hooks/index.js +5 -1
  174. package/dist/hooks/index.js.map +1 -1
  175. package/dist/mcp/tool-catalog.d.ts.map +1 -1
  176. package/dist/mcp/tool-catalog.js +47 -0
  177. package/dist/mcp/tool-catalog.js.map +1 -1
  178. package/dist/mcp/tool-tiers.d.ts.map +1 -1
  179. package/dist/mcp/tool-tiers.js +4 -0
  180. package/dist/mcp/tool-tiers.js.map +1 -1
  181. package/dist/mcp/tools/index.d.ts +2 -1
  182. package/dist/mcp/tools/index.d.ts.map +1 -1
  183. package/dist/mcp/tools/index.js +15 -1
  184. package/dist/mcp/tools/index.js.map +1 -1
  185. package/dist/mcp/tools/learning-store.d.ts +30 -0
  186. package/dist/mcp/tools/learning-store.d.ts.map +1 -0
  187. package/dist/mcp/tools/learning-store.js +286 -0
  188. package/dist/mcp/tools/learning-store.js.map +1 -0
  189. package/package.json +1 -1
@@ -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":"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"}
@@ -1,8 +1,19 @@
1
1
  /**
2
- * Confidence Gate - v14.1.0
2
+ * Confidence Gate - v17.5.0
3
3
  *
4
- * Gates tasks based on confidence level, requiring research or clarification
5
- * before allowing implementation to proceed.
4
+ * Progressive confidence gate with tiered thresholds:
5
+ * - 0-30%: Block (too risky to proceed)
6
+ * - 30-50%: Research phase first
7
+ * - 50-70%: Clarification phase first
8
+ * - 70%+: Proceed with implementation
9
+ *
10
+ * Features:
11
+ * - Tiered confidence thresholds
12
+ * - Auto-research phase integration
13
+ * - Clarification phase integration
14
+ * - Max rounds tracking (2 research, 5 clarification)
15
+ * - User validation after max rounds
16
+ * - Session history tracking
6
17
  *
7
18
  * @see .claude/rules/dino/confidence-handling.md
8
19
  */
@@ -61,6 +72,44 @@ export interface ConfidenceRound {
61
72
  details: string;
62
73
  timestamp: Date;
63
74
  }
75
+ /**
76
+ * v17.5.0: Tiered confidence thresholds
77
+ *
78
+ * These thresholds determine the action at each confidence level:
79
+ * - Below BLOCK: Too risky, cannot proceed without explicit validation
80
+ * - BLOCK to RESEARCH: Research phase needed first
81
+ * - RESEARCH to CLARIFY: Clarification questions needed
82
+ * - Above CLARIFY: Can proceed with implementation
83
+ */
84
+ export declare const CONFIDENCE_TIERS: {
85
+ /** Below this: block until user validates */
86
+ readonly BLOCK: 0.3;
87
+ /** Below this: trigger research phase */
88
+ readonly RESEARCH: 0.5;
89
+ /** Below this: trigger clarification phase */
90
+ readonly CLARIFY: 0.7;
91
+ /** Standard threshold for proceeding */
92
+ readonly PROCEED: 0.8;
93
+ /** Ralph-eligible tasks require higher threshold */
94
+ readonly RALPH: 0.9;
95
+ };
96
+ export type ConfidenceTier = 'blocked' | 'research' | 'clarify' | 'proceed';
97
+ /**
98
+ * Determine which tier a confidence level falls into
99
+ *
100
+ * Tiers (per PRD):
101
+ * - 0-30%: blocked (need user validation)
102
+ * - 30-50%: research (need to gather context)
103
+ * - 50-70%: clarify (need targeted questions)
104
+ * - 70%+: proceed (can implement)
105
+ *
106
+ * For Ralph-eligible tasks, use higher thresholds.
107
+ */
108
+ export declare function getConfidenceTier(confidence: number, isRalphEligible?: boolean): ConfidenceTier;
109
+ /**
110
+ * Get recommended action based on tiered thresholds
111
+ */
112
+ export declare function getTieredAction(confidence: number, isRalphEligible?: boolean): 'proceed' | 'research' | 'clarify' | 'block';
64
113
  /**
65
114
  * Check if task can proceed based on confidence level
66
115
  *
@@ -96,4 +145,68 @@ export declare function formatConfidenceForSession(tracking: ConfidenceTracking)
96
145
  * Format gate result for display
97
146
  */
98
147
  export declare function formatGateResult(result: GateResult): string;
148
+ /**
149
+ * Extended gate result for progressive gating
150
+ */
151
+ export interface ProgressiveGateResult extends GateResult {
152
+ /** Which tier the confidence falls into */
153
+ tier: ConfidenceTier;
154
+ /** Whether user validation is required */
155
+ requiresUserValidation: boolean;
156
+ /** Research rounds used */
157
+ researchRoundsUsed: number;
158
+ /** Clarification rounds used */
159
+ clarificationRoundsUsed: number;
160
+ /** Whether max rounds have been reached */
161
+ maxRoundsReached: boolean;
162
+ }
163
+ /**
164
+ * Progressive confidence gate state
165
+ */
166
+ export interface ProgressiveGateState {
167
+ /** Current confidence */
168
+ confidence: number;
169
+ /** Required confidence to proceed */
170
+ requiredConfidence: number;
171
+ /** Current tier */
172
+ tier: ConfidenceTier;
173
+ /** Research rounds completed */
174
+ researchRounds: number;
175
+ /** Clarification rounds completed */
176
+ clarificationRounds: number;
177
+ /** Whether user has validated assumptions */
178
+ userValidated: boolean;
179
+ /** History of confidence changes */
180
+ history: ConfidenceRound[];
181
+ }
182
+ /**
183
+ * Check confidence with progressive tiered thresholds
184
+ *
185
+ * v17.5.0: Implements tiered confidence gating:
186
+ * - 0-30%: Block until user validates
187
+ * - 30-50%: Research phase first
188
+ * - 50-70%: Clarification phase first
189
+ * - 70%+: Proceed (80% standard, 90% for Ralph)
190
+ */
191
+ export declare function checkProgressiveConfidence(prompt: string, state?: ProgressiveGateState, config?: ConfidenceGateConfig): Promise<ProgressiveGateResult>;
192
+ /**
193
+ * Create initial progressive gate state
194
+ */
195
+ export declare function createProgressiveGateState(prompt: string, config?: ConfidenceGateConfig): ProgressiveGateState;
196
+ /**
197
+ * Update state after research round
198
+ */
199
+ export declare function updateStateAfterResearch(state: ProgressiveGateState, newConfidence: number, details: string): ProgressiveGateState;
200
+ /**
201
+ * Update state after clarification round
202
+ */
203
+ export declare function updateStateAfterClarification(state: ProgressiveGateState, newConfidence: number, details: string): ProgressiveGateState;
204
+ /**
205
+ * Mark state as user validated
206
+ */
207
+ export declare function markStateUserValidated(state: ProgressiveGateState): ProgressiveGateState;
208
+ /**
209
+ * Format progressive gate state for session.md
210
+ */
211
+ export declare function formatProgressiveGateForSession(state: ProgressiveGateState): string;
99
212
  //# sourceMappingURL=confidence-gate.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"confidence-gate.d.ts","sourceRoot":"","sources":["../../../src/core/agents/confidence-gate.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAkC,KAAK,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAC7F,OAAO,EAAE,KAAK,cAAc,EAAoB,MAAM,yBAAyB,CAAA;AAM/E;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,OAAO,CAAA;IAChB,UAAU,EAAE,MAAM,CAAA;IAClB,kBAAkB,EAAE,MAAM,CAAA;IAC1B,MAAM,EAAE,SAAS,GAAG,UAAU,GAAG,SAAS,CAAA;IAC1C,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,YAAY,CAAA;IACvB,QAAQ,CAAC,EAAE,cAAc,CAAA;IACzB,SAAS,CAAC,EAAE,qBAAqB,EAAE,CAAA;CACpC;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,EAAE,EAAE,MAAM,CAAA;IACV,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,EAAE,UAAU,GAAG,WAAW,GAAG,cAAc,CAAA;IACnD,IAAI,EAAE,OAAO,GAAG,SAAS,GAAG,SAAS,GAAG,MAAM,CAAA;IAC9C,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,SAAS,EAAE,MAAM,CAAA;IACjB,cAAc,EAAE,MAAM,CAAA;IACtB,iBAAiB,EAAE,MAAM,CAAA;IACzB,sBAAsB,EAAE,MAAM,CAAA;IAC9B,kBAAkB,EAAE,OAAO,CAAA;CAC5B;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,iBAAiB,EAAE,MAAM,CAAA;IACzB,gBAAgB,EAAE,MAAM,CAAA;IACxB,MAAM,EAAE,eAAe,EAAE,CAAA;IACzB,MAAM,EAAE,SAAS,GAAG,aAAa,GAAG,YAAY,GAAG,OAAO,GAAG,SAAS,CAAA;CACvE;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,WAAW,EAAE,MAAM,CAAA;IACnB,MAAM,EAAE,UAAU,GAAG,eAAe,GAAG,YAAY,CAAA;IACnD,gBAAgB,EAAE,MAAM,CAAA;IACxB,eAAe,EAAE,MAAM,CAAA;IACvB,OAAO,EAAE,MAAM,CAAA;IACf,SAAS,EAAE,IAAI,CAAA;CAChB;AAkBD;;;;;GAKG;AACH,wBAAsB,eAAe,CACnC,MAAM,EAAE,MAAM,EACd,MAAM,uBAAiB,GACtB,OAAO,CAAC,UAAU,CAAC,CA8ErB;AA6BD;;GAEG;AACH,wBAAgB,8BAA8B,CAAC,QAAQ,EAAE,YAAY,GAAG,qBAAqB,EAAE,CAgE9F;AAED;;GAEG;AACH,wBAAgB,2BAA2B,CACzC,iBAAiB,EAAE,MAAM,EACzB,SAAS,EAAE,qBAAqB,EAAE,EAClC,aAAa,EAAE,MAAM,GACpB,MAAM,CAeR;AAMD;;GAEG;AACH,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,MAAM,EACd,MAAM,uBAAiB,GACtB,kBAAkB,CAUpB;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,kBAAkB,EAC5B,MAAM,EAAE,UAAU,GAAG,eAAe,GAAG,YAAY,EACnD,eAAe,EAAE,MAAM,EACvB,OAAO,EAAE,MAAM,GACd,kBAAkB,CAuBpB;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,kBAAkB,EAC5B,MAAM,uBAAiB,GACtB,OAAO,CAUT;AAMD;;GAEG;AACH,wBAAgB,0BAA0B,CAAC,QAAQ,EAAE,kBAAkB,GAAG,MAAM,CAwB/E;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,CA4B3D"}
1
+ {"version":3,"file":"confidence-gate.d.ts","sourceRoot":"","sources":["../../../src/core/agents/confidence-gate.ts"],"names":[],"mappings":"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"}