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.
- package/README.md +16 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +10 -0
- package/dist/commands/init.js.map +1 -1
- package/dist/core/agents/__tests__/confidence-gate.test.d.ts +5 -0
- package/dist/core/agents/__tests__/confidence-gate.test.d.ts.map +1 -0
- package/dist/core/agents/__tests__/confidence-gate.test.js +329 -0
- package/dist/core/agents/__tests__/confidence-gate.test.js.map +1 -0
- package/dist/core/agents/__tests__/gap-detector.test.d.ts +5 -0
- package/dist/core/agents/__tests__/gap-detector.test.d.ts.map +1 -0
- package/dist/core/agents/__tests__/gap-detector.test.js +609 -0
- package/dist/core/agents/__tests__/gap-detector.test.js.map +1 -0
- package/dist/core/agents/__tests__/learning-loop.test.d.ts +5 -0
- package/dist/core/agents/__tests__/learning-loop.test.d.ts.map +1 -0
- package/dist/core/agents/__tests__/learning-loop.test.js +663 -0
- package/dist/core/agents/__tests__/learning-loop.test.js.map +1 -0
- package/dist/core/agents/__tests__/parallel-executor.test.d.ts +5 -0
- package/dist/core/agents/__tests__/parallel-executor.test.d.ts.map +1 -0
- package/dist/core/agents/__tests__/parallel-executor.test.js +610 -0
- package/dist/core/agents/__tests__/parallel-executor.test.js.map +1 -0
- package/dist/core/agents/__tests__/research-validator.test.js +5 -5
- package/dist/core/agents/__tests__/research-validator.test.js.map +1 -1
- package/dist/core/agents/__tests__/skill-creator.test.d.ts +5 -0
- package/dist/core/agents/__tests__/skill-creator.test.d.ts.map +1 -0
- package/dist/core/agents/__tests__/skill-creator.test.js +443 -0
- package/dist/core/agents/__tests__/skill-creator.test.js.map +1 -0
- package/dist/core/agents/__tests__/state-persistence.test.d.ts +2 -0
- package/dist/core/agents/__tests__/state-persistence.test.d.ts.map +1 -0
- package/dist/core/agents/__tests__/state-persistence.test.js +270 -0
- package/dist/core/agents/__tests__/state-persistence.test.js.map +1 -0
- package/dist/core/agents/__tests__/validation-cache.test.d.ts +2 -0
- package/dist/core/agents/__tests__/validation-cache.test.d.ts.map +1 -0
- package/dist/core/agents/__tests__/validation-cache.test.js +181 -0
- package/dist/core/agents/__tests__/validation-cache.test.js.map +1 -0
- package/dist/core/agents/ambiguity-resolver.d.ts +14 -1
- package/dist/core/agents/ambiguity-resolver.d.ts.map +1 -1
- package/dist/core/agents/ambiguity-resolver.js +24 -2
- package/dist/core/agents/ambiguity-resolver.js.map +1 -1
- package/dist/core/agents/blackboard.d.ts +22 -3
- package/dist/core/agents/blackboard.d.ts.map +1 -1
- package/dist/core/agents/blackboard.js +52 -2
- package/dist/core/agents/blackboard.js.map +1 -1
- package/dist/core/agents/circuit-breaker.d.ts +79 -1
- package/dist/core/agents/circuit-breaker.d.ts.map +1 -1
- package/dist/core/agents/circuit-breaker.js +175 -1
- package/dist/core/agents/circuit-breaker.js.map +1 -1
- package/dist/core/agents/clarification-phase.d.ts +128 -0
- package/dist/core/agents/clarification-phase.d.ts.map +1 -0
- package/dist/core/agents/clarification-phase.js +375 -0
- package/dist/core/agents/clarification-phase.js.map +1 -0
- package/dist/core/agents/confidence-gate.d.ts +133 -4
- package/dist/core/agents/confidence-gate.d.ts.map +1 -1
- package/dist/core/agents/confidence-gate.js +376 -9
- package/dist/core/agents/confidence-gate.js.map +1 -1
- package/dist/core/agents/correction-tracker.d.ts +197 -0
- package/dist/core/agents/correction-tracker.d.ts.map +1 -0
- package/dist/core/agents/correction-tracker.js +366 -0
- package/dist/core/agents/correction-tracker.js.map +1 -0
- package/dist/core/agents/dependency-graph.d.ts +193 -0
- package/dist/core/agents/dependency-graph.d.ts.map +1 -0
- package/dist/core/agents/dependency-graph.js +462 -0
- package/dist/core/agents/dependency-graph.js.map +1 -0
- package/dist/core/agents/gap-detector.d.ts +277 -0
- package/dist/core/agents/gap-detector.d.ts.map +1 -0
- package/dist/core/agents/gap-detector.js +540 -0
- package/dist/core/agents/gap-detector.js.map +1 -0
- package/dist/core/agents/index.d.ts +14 -1
- package/dist/core/agents/index.d.ts.map +1 -1
- package/dist/core/agents/index.js +26 -1
- package/dist/core/agents/index.js.map +1 -1
- package/dist/core/agents/message-protocol.d.ts +13 -2
- package/dist/core/agents/message-protocol.d.ts.map +1 -1
- package/dist/core/agents/message-protocol.js +20 -1
- package/dist/core/agents/message-protocol.js.map +1 -1
- package/dist/core/agents/parallel-executor.d.ts +182 -0
- package/dist/core/agents/parallel-executor.d.ts.map +1 -0
- package/dist/core/agents/parallel-executor.js +474 -0
- package/dist/core/agents/parallel-executor.js.map +1 -0
- package/dist/core/agents/pattern-detector.d.ts +157 -0
- package/dist/core/agents/pattern-detector.d.ts.map +1 -0
- package/dist/core/agents/pattern-detector.js +370 -0
- package/dist/core/agents/pattern-detector.js.map +1 -0
- package/dist/core/agents/registry-client.d.ts +6 -0
- package/dist/core/agents/registry-client.d.ts.map +1 -1
- package/dist/core/agents/registry-client.js +3 -0
- package/dist/core/agents/registry-client.js.map +1 -1
- package/dist/core/agents/research-phase.d.ts +114 -0
- package/dist/core/agents/research-phase.d.ts.map +1 -0
- package/dist/core/agents/research-phase.js +355 -0
- package/dist/core/agents/research-phase.js.map +1 -0
- package/dist/core/agents/research-validator.d.ts +13 -2
- package/dist/core/agents/research-validator.d.ts.map +1 -1
- package/dist/core/agents/research-validator.js +63 -31
- package/dist/core/agents/research-validator.js.map +1 -1
- package/dist/core/agents/skill-creator.d.ts +174 -0
- package/dist/core/agents/skill-creator.d.ts.map +1 -0
- package/dist/core/agents/skill-creator.js +570 -0
- package/dist/core/agents/skill-creator.js.map +1 -0
- package/dist/core/agents/state-persistence.d.ts +184 -0
- package/dist/core/agents/state-persistence.d.ts.map +1 -0
- package/dist/core/agents/state-persistence.js +394 -0
- package/dist/core/agents/state-persistence.js.map +1 -0
- package/dist/core/agents/validation-cache.d.ts +122 -0
- package/dist/core/agents/validation-cache.d.ts.map +1 -0
- package/dist/core/agents/validation-cache.js +280 -0
- package/dist/core/agents/validation-cache.js.map +1 -0
- package/dist/core/agents/validators/__tests__/validators.test.d.ts +5 -0
- package/dist/core/agents/validators/__tests__/validators.test.d.ts.map +1 -0
- package/dist/core/agents/validators/__tests__/validators.test.js +321 -0
- package/dist/core/agents/validators/__tests__/validators.test.js.map +1 -0
- package/dist/core/agents/validators/base-validator.d.ts +191 -0
- package/dist/core/agents/validators/base-validator.d.ts.map +1 -0
- package/dist/core/agents/validators/base-validator.js +192 -0
- package/dist/core/agents/validators/base-validator.js.map +1 -0
- package/dist/core/agents/validators/index.d.ts +7 -0
- package/dist/core/agents/validators/index.d.ts.map +1 -0
- package/dist/core/agents/validators/index.js +7 -0
- package/dist/core/agents/validators/index.js.map +1 -0
- package/dist/core/agents/validators/npm-validator.d.ts +50 -0
- package/dist/core/agents/validators/npm-validator.d.ts.map +1 -0
- package/dist/core/agents/validators/npm-validator.js +211 -0
- package/dist/core/agents/validators/npm-validator.js.map +1 -0
- package/dist/core/agents/validators/pip-validator.d.ts +49 -0
- package/dist/core/agents/validators/pip-validator.d.ts.map +1 -0
- package/dist/core/agents/validators/pip-validator.js +191 -0
- package/dist/core/agents/validators/pip-validator.js.map +1 -0
- package/dist/core/agents/validators/validator-registry.d.ts +122 -0
- package/dist/core/agents/validators/validator-registry.d.ts.map +1 -0
- package/dist/core/agents/validators/validator-registry.js +321 -0
- package/dist/core/agents/validators/validator-registry.js.map +1 -0
- package/dist/core/context/auto-injection-engine.d.ts +7 -1
- package/dist/core/context/auto-injection-engine.d.ts.map +1 -1
- package/dist/core/context/auto-injection-engine.js +46 -1
- package/dist/core/context/auto-injection-engine.js.map +1 -1
- package/dist/core/context-repl/types.d.ts +4 -4
- package/dist/core/memory/index.d.ts +1 -0
- package/dist/core/memory/index.d.ts.map +1 -1
- package/dist/core/memory/index.js +2 -0
- package/dist/core/memory/index.js.map +1 -1
- package/dist/core/memory/learning-store.d.ts +222 -0
- package/dist/core/memory/learning-store.d.ts.map +1 -0
- package/dist/core/memory/learning-store.js +477 -0
- package/dist/core/memory/learning-store.js.map +1 -0
- package/dist/core/ralph/__tests__/prd-generator-session-context.test.d.ts +7 -0
- package/dist/core/ralph/__tests__/prd-generator-session-context.test.d.ts.map +1 -0
- package/dist/core/ralph/__tests__/prd-generator-session-context.test.js +143 -0
- package/dist/core/ralph/__tests__/prd-generator-session-context.test.js.map +1 -0
- package/dist/core/ralph/index.d.ts +3 -3
- package/dist/core/ralph/index.d.ts.map +1 -1
- package/dist/core/ralph/index.js +2 -2
- package/dist/core/ralph/index.js.map +1 -1
- package/dist/core/ralph/prd-generator.d.ts +18 -3
- package/dist/core/ralph/prd-generator.d.ts.map +1 -1
- package/dist/core/ralph/prd-generator.js +33 -11
- package/dist/core/ralph/prd-generator.js.map +1 -1
- package/dist/core/ralph/progress-tracker.d.ts.map +1 -1
- package/dist/core/ralph/progress-tracker.js +2 -1
- package/dist/core/ralph/progress-tracker.js.map +1 -1
- package/dist/core/ralph/sub-agent-spawner.d.ts +4 -2
- package/dist/core/ralph/sub-agent-spawner.d.ts.map +1 -1
- package/dist/core/ralph/sub-agent-spawner.js +48 -3
- package/dist/core/ralph/sub-agent-spawner.js.map +1 -1
- package/dist/core/ralph/task-integration.d.ts.map +1 -1
- package/dist/core/ralph/task-integration.js +6 -3
- package/dist/core/ralph/task-integration.js.map +1 -1
- package/dist/core/ralph/types.d.ts +62 -3
- package/dist/core/ralph/types.d.ts.map +1 -1
- package/dist/core/ralph/types.js.map +1 -1
- package/dist/core/recommendations/recommendation-engine.d.ts +6 -0
- package/dist/core/recommendations/recommendation-engine.d.ts.map +1 -1
- package/dist/core/recommendations/recommendation-engine.js.map +1 -1
- package/dist/core/spec-analyzer/__tests__/ambiguity-detector.test.d.ts +5 -0
- package/dist/core/spec-analyzer/__tests__/ambiguity-detector.test.d.ts.map +1 -0
- package/dist/core/spec-analyzer/__tests__/ambiguity-detector.test.js +401 -0
- package/dist/core/spec-analyzer/__tests__/ambiguity-detector.test.js.map +1 -0
- package/dist/core/spec-analyzer/ambiguity-detector.d.ts +99 -0
- package/dist/core/spec-analyzer/ambiguity-detector.d.ts.map +1 -0
- package/dist/core/spec-analyzer/ambiguity-detector.js +250 -0
- package/dist/core/spec-analyzer/ambiguity-detector.js.map +1 -0
- package/dist/core/spec-analyzer/clarification-generator.d.ts +76 -0
- package/dist/core/spec-analyzer/clarification-generator.d.ts.map +1 -0
- package/dist/core/spec-analyzer/clarification-generator.js +257 -0
- package/dist/core/spec-analyzer/clarification-generator.js.map +1 -0
- package/dist/core/spec-analyzer/index.d.ts +22 -2
- package/dist/core/spec-analyzer/index.d.ts.map +1 -1
- package/dist/core/spec-analyzer/index.js +21 -3
- package/dist/core/spec-analyzer/index.js.map +1 -1
- package/dist/core/spec-analyzer/patterns.d.ts +73 -0
- package/dist/core/spec-analyzer/patterns.d.ts.map +1 -0
- package/dist/core/spec-analyzer/patterns.js +412 -0
- package/dist/core/spec-analyzer/patterns.js.map +1 -0
- package/dist/hooks/__tests__/dynamic-generator.test.d.ts +5 -0
- package/dist/hooks/__tests__/dynamic-generator.test.d.ts.map +1 -0
- package/dist/hooks/__tests__/dynamic-generator.test.js +425 -0
- package/dist/hooks/__tests__/dynamic-generator.test.js.map +1 -0
- package/dist/hooks/__tests__/hook-agent-bridge.test.d.ts +5 -0
- package/dist/hooks/__tests__/hook-agent-bridge.test.d.ts.map +1 -0
- package/dist/hooks/__tests__/hook-agent-bridge.test.js +315 -0
- package/dist/hooks/__tests__/hook-agent-bridge.test.js.map +1 -0
- package/dist/hooks/dynamic-generator.d.ts +158 -0
- package/dist/hooks/dynamic-generator.d.ts.map +1 -0
- package/dist/hooks/dynamic-generator.js +448 -0
- package/dist/hooks/dynamic-generator.js.map +1 -0
- package/dist/hooks/hook-agent-bridge.d.ts +252 -0
- package/dist/hooks/hook-agent-bridge.d.ts.map +1 -0
- package/dist/hooks/hook-agent-bridge.js +489 -0
- package/dist/hooks/hook-agent-bridge.js.map +1 -0
- package/dist/hooks/index.d.ts +3 -1
- package/dist/hooks/index.d.ts.map +1 -1
- package/dist/hooks/index.js +5 -1
- package/dist/hooks/index.js.map +1 -1
- package/dist/mcp/tool-catalog.d.ts.map +1 -1
- package/dist/mcp/tool-catalog.js +47 -0
- package/dist/mcp/tool-catalog.js.map +1 -1
- package/dist/mcp/tool-tiers.d.ts.map +1 -1
- package/dist/mcp/tool-tiers.js +4 -0
- package/dist/mcp/tool-tiers.js.map +1 -1
- package/dist/mcp/tools/auto-inject.d.ts +4 -0
- package/dist/mcp/tools/auto-inject.d.ts.map +1 -1
- package/dist/mcp/tools/auto-inject.js +13 -4
- package/dist/mcp/tools/auto-inject.js.map +1 -1
- package/dist/mcp/tools/chunking.d.ts +3 -0
- package/dist/mcp/tools/chunking.d.ts.map +1 -1
- package/dist/mcp/tools/chunking.js +10 -4
- package/dist/mcp/tools/chunking.js.map +1 -1
- package/dist/mcp/tools/embeddings.d.ts +4 -0
- package/dist/mcp/tools/embeddings.d.ts.map +1 -1
- package/dist/mcp/tools/embeddings.js +16 -6
- package/dist/mcp/tools/embeddings.js.map +1 -1
- package/dist/mcp/tools/index.d.ts +2 -1
- package/dist/mcp/tools/index.d.ts.map +1 -1
- package/dist/mcp/tools/index.js +15 -1
- package/dist/mcp/tools/index.js.map +1 -1
- package/dist/mcp/tools/knowledge-graph.d.ts +3 -0
- package/dist/mcp/tools/knowledge-graph.d.ts.map +1 -1
- package/dist/mcp/tools/knowledge-graph.js +19 -8
- package/dist/mcp/tools/knowledge-graph.js.map +1 -1
- package/dist/mcp/tools/lazy-context.d.ts +2 -0
- package/dist/mcp/tools/lazy-context.d.ts.map +1 -1
- package/dist/mcp/tools/lazy-context.js +10 -4
- package/dist/mcp/tools/lazy-context.js.map +1 -1
- package/dist/mcp/tools/learning-store.d.ts +30 -0
- package/dist/mcp/tools/learning-store.d.ts.map +1 -0
- package/dist/mcp/tools/learning-store.js +286 -0
- package/dist/mcp/tools/learning-store.js.map +1 -0
- package/dist/mcp/tools/memory-decay.d.ts.map +1 -1
- package/dist/mcp/tools/memory-decay.js +4 -2
- package/dist/mcp/tools/memory-decay.js.map +1 -1
- package/dist/mcp/tools/prefetch.d.ts +4 -1
- package/dist/mcp/tools/prefetch.d.ts.map +1 -1
- package/dist/mcp/tools/prefetch.js +18 -7
- package/dist/mcp/tools/prefetch.js.map +1 -1
- package/dist/mcp/tools/ralph.d.ts +2 -0
- package/dist/mcp/tools/ralph.d.ts.map +1 -1
- package/dist/mcp/tools/ralph.js +96 -6
- package/dist/mcp/tools/ralph.js.map +1 -1
- package/dist/mcp/tools/recommendations.d.ts +2 -0
- package/dist/mcp/tools/recommendations.d.ts.map +1 -1
- package/dist/mcp/tools/recommendations.js +13 -4
- package/dist/mcp/tools/recommendations.js.map +1 -1
- package/dist/mcp/tools/retrieval.d.ts +4 -0
- package/dist/mcp/tools/retrieval.d.ts.map +1 -1
- package/dist/mcp/tools/retrieval.js +25 -10
- package/dist/mcp/tools/retrieval.js.map +1 -1
- package/dist/mcp/tools/spec-feedback.d.ts +2 -0
- package/dist/mcp/tools/spec-feedback.d.ts.map +1 -1
- package/dist/mcp/tools/spec-feedback.js +33 -16
- package/dist/mcp/tools/spec-feedback.js.map +1 -1
- package/dist/mcp/utils/index.d.ts +1 -0
- package/dist/mcp/utils/index.d.ts.map +1 -1
- package/dist/mcp/utils/index.js +2 -0
- package/dist/mcp/utils/index.js.map +1 -1
- package/dist/mcp/utils/session-context.d.ts +108 -0
- package/dist/mcp/utils/session-context.d.ts.map +1 -0
- package/dist/mcp/utils/session-context.js +157 -0
- package/dist/mcp/utils/session-context.js.map +1 -0
- 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":"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"}
|