@su-record/vibe 2.6.13 → 2.6.15
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/LICENSE +21 -21
- package/README.md +497 -497
- package/agents/architect-low.md +41 -41
- package/agents/architect-medium.md +59 -59
- package/agents/architect.md +80 -80
- package/agents/build-error-resolver.md +115 -115
- package/agents/compounder.md +261 -261
- package/agents/diagrammer.md +178 -178
- package/agents/e2e-tester.md +266 -266
- package/agents/explorer-low.md +42 -42
- package/agents/explorer-medium.md +59 -59
- package/agents/explorer.md +48 -48
- package/agents/implementer-low.md +43 -43
- package/agents/implementer-medium.md +52 -52
- package/agents/implementer.md +54 -54
- package/agents/refactor-cleaner.md +143 -143
- package/agents/research/best-practices-agent.md +199 -199
- package/agents/research/codebase-patterns-agent.md +157 -157
- package/agents/research/framework-docs-agent.md +188 -188
- package/agents/research/security-advisory-agent.md +213 -213
- package/agents/review/architecture-reviewer.md +107 -107
- package/agents/review/complexity-reviewer.md +116 -116
- package/agents/review/data-integrity-reviewer.md +88 -88
- package/agents/review/git-history-reviewer.md +103 -103
- package/agents/review/performance-reviewer.md +86 -86
- package/agents/review/python-reviewer.md +150 -150
- package/agents/review/rails-reviewer.md +139 -139
- package/agents/review/react-reviewer.md +144 -144
- package/agents/review/security-reviewer.md +80 -80
- package/agents/review/simplicity-reviewer.md +140 -140
- package/agents/review/test-coverage-reviewer.md +116 -116
- package/agents/review/typescript-reviewer.md +127 -127
- package/agents/searcher.md +54 -54
- package/agents/simplifier.md +120 -120
- package/agents/tester.md +49 -49
- package/agents/ui-previewer.md +268 -268
- package/commands/vibe.analyze.md +356 -356
- package/commands/vibe.reason.md +329 -329
- package/commands/vibe.review.md +412 -412
- package/commands/vibe.run.md +1266 -1266
- package/commands/vibe.spec.md +1054 -1054
- package/commands/vibe.spec.review.md +319 -319
- package/commands/vibe.trace.md +161 -161
- package/commands/vibe.utils.md +376 -376
- package/commands/vibe.verify.md +375 -375
- package/dist/cli/collaborator.js +52 -52
- package/dist/cli/detect.d.ts.map +1 -1
- package/dist/cli/detect.js +118 -44
- package/dist/cli/detect.js.map +1 -1
- package/dist/cli/hud.js +20 -20
- package/dist/cli/index.js +118 -118
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/llm.js +144 -144
- package/dist/cli/mcp.d.ts +49 -0
- package/dist/cli/mcp.d.ts.map +1 -0
- package/dist/cli/mcp.js +169 -0
- package/dist/cli/mcp.js.map +1 -0
- package/dist/cli/postinstall.js +858 -858
- package/dist/cli/setup/ProjectSetup.d.ts +3 -0
- package/dist/cli/setup/ProjectSetup.d.ts.map +1 -1
- package/dist/cli/setup/ProjectSetup.js +28 -6
- package/dist/cli/setup/ProjectSetup.js.map +1 -1
- package/dist/lib/DeepInit.js +24 -24
- package/dist/lib/IterationTracker.js +11 -11
- package/dist/lib/PythonParser.js +108 -108
- package/dist/lib/ReviewRace.js +96 -96
- package/dist/lib/SkillFrontmatter.js +28 -28
- package/dist/lib/SkillQualityGate.js +9 -9
- package/dist/lib/SkillRepository.js +159 -159
- package/dist/lib/UltraQA.js +77 -77
- package/dist/lib/gemini-api.js +5 -5
- package/dist/lib/gemini-mcp.d.ts +10 -0
- package/dist/lib/gemini-mcp.d.ts.map +1 -0
- package/dist/lib/gemini-mcp.js +353 -0
- package/dist/lib/gemini-mcp.js.map +1 -0
- package/dist/lib/gpt-api.js +4 -4
- package/dist/lib/gpt-mcp.d.ts +10 -0
- package/dist/lib/gpt-mcp.d.ts.map +1 -0
- package/dist/lib/gpt-mcp.js +352 -0
- package/dist/lib/gpt-mcp.js.map +1 -0
- package/dist/lib/memory/KnowledgeGraph.js +4 -4
- package/dist/lib/memory/MemorySearch.js +20 -20
- package/dist/lib/memory/MemoryStorage.js +64 -64
- package/dist/orchestrator/AgentManager.js +12 -12
- package/dist/orchestrator/MultiLlmResearch.js +8 -8
- package/dist/orchestrator/SmartRouter.js +11 -11
- package/dist/orchestrator/parallelResearch.js +24 -24
- package/dist/tools/analytics/getUsageAnalytics.d.ts +10 -0
- package/dist/tools/analytics/getUsageAnalytics.d.ts.map +1 -0
- package/dist/tools/analytics/getUsageAnalytics.js +246 -0
- package/dist/tools/analytics/getUsageAnalytics.js.map +1 -0
- package/dist/tools/analytics/index.d.ts +5 -0
- package/dist/tools/analytics/index.d.ts.map +1 -0
- package/dist/tools/analytics/index.js +5 -0
- package/dist/tools/analytics/index.js.map +1 -0
- package/dist/tools/convention/analyzeComplexity.test.js +115 -115
- package/dist/tools/convention/getCodingGuide.d.ts +7 -0
- package/dist/tools/convention/getCodingGuide.d.ts.map +1 -0
- package/dist/tools/convention/getCodingGuide.js +69 -0
- package/dist/tools/convention/getCodingGuide.js.map +1 -0
- package/dist/tools/convention/validateCodeQuality.test.js +104 -104
- package/dist/tools/planning/analyzeRequirements.d.ts +9 -0
- package/dist/tools/planning/analyzeRequirements.d.ts.map +1 -0
- package/dist/tools/planning/analyzeRequirements.js +171 -0
- package/dist/tools/planning/analyzeRequirements.js.map +1 -0
- package/dist/tools/planning/createUserStories.d.ts +9 -0
- package/dist/tools/planning/createUserStories.d.ts.map +1 -0
- package/dist/tools/planning/createUserStories.js +124 -0
- package/dist/tools/planning/createUserStories.js.map +1 -0
- package/dist/tools/planning/featureRoadmap.d.ts +10 -0
- package/dist/tools/planning/featureRoadmap.d.ts.map +1 -0
- package/dist/tools/planning/featureRoadmap.js +207 -0
- package/dist/tools/planning/featureRoadmap.js.map +1 -0
- package/dist/tools/planning/generatePrd.d.ts +11 -0
- package/dist/tools/planning/generatePrd.d.ts.map +1 -0
- package/dist/tools/planning/generatePrd.js +161 -0
- package/dist/tools/planning/generatePrd.js.map +1 -0
- package/dist/tools/planning/index.d.ts +8 -0
- package/dist/tools/planning/index.d.ts.map +1 -0
- package/dist/tools/planning/index.js +8 -0
- package/dist/tools/planning/index.js.map +1 -0
- package/dist/tools/prompt/analyzePrompt.d.ts +7 -0
- package/dist/tools/prompt/analyzePrompt.d.ts.map +1 -0
- package/dist/tools/prompt/analyzePrompt.js +150 -0
- package/dist/tools/prompt/analyzePrompt.js.map +1 -0
- package/dist/tools/prompt/enhancePrompt.d.ts +8 -0
- package/dist/tools/prompt/enhancePrompt.d.ts.map +1 -0
- package/dist/tools/prompt/enhancePrompt.js +110 -0
- package/dist/tools/prompt/enhancePrompt.js.map +1 -0
- package/dist/tools/prompt/enhancePromptGemini.d.ts +8 -0
- package/dist/tools/prompt/enhancePromptGemini.d.ts.map +1 -0
- package/dist/tools/prompt/enhancePromptGemini.js +332 -0
- package/dist/tools/prompt/enhancePromptGemini.js.map +1 -0
- package/dist/tools/prompt/index.d.ts +7 -0
- package/dist/tools/prompt/index.d.ts.map +1 -0
- package/dist/tools/prompt/index.js +7 -0
- package/dist/tools/prompt/index.js.map +1 -0
- package/dist/tools/reasoning/applyReasoningFramework.d.ts +8 -0
- package/dist/tools/reasoning/applyReasoningFramework.d.ts.map +1 -0
- package/dist/tools/reasoning/applyReasoningFramework.js +266 -0
- package/dist/tools/reasoning/applyReasoningFramework.js.map +1 -0
- package/dist/tools/reasoning/index.d.ts +5 -0
- package/dist/tools/reasoning/index.d.ts.map +1 -0
- package/dist/tools/reasoning/index.js +5 -0
- package/dist/tools/reasoning/index.js.map +1 -0
- package/dist/tools/spec/prdParser.test.js +171 -171
- package/dist/tools/spec/specGenerator.js +169 -169
- package/dist/tools/spec/traceabilityMatrix.js +64 -64
- package/dist/tools/spec/traceabilityMatrix.test.js +28 -28
- package/dist/tools/thinking/analyzeProblem.d.ts +7 -0
- package/dist/tools/thinking/analyzeProblem.d.ts.map +1 -0
- package/dist/tools/thinking/analyzeProblem.js +55 -0
- package/dist/tools/thinking/analyzeProblem.js.map +1 -0
- package/dist/tools/thinking/breakDownProblem.d.ts +8 -0
- package/dist/tools/thinking/breakDownProblem.d.ts.map +1 -0
- package/dist/tools/thinking/breakDownProblem.js +145 -0
- package/dist/tools/thinking/breakDownProblem.js.map +1 -0
- package/dist/tools/thinking/createThinkingChain.d.ts +7 -0
- package/dist/tools/thinking/createThinkingChain.d.ts.map +1 -0
- package/dist/tools/thinking/createThinkingChain.js +44 -0
- package/dist/tools/thinking/createThinkingChain.js.map +1 -0
- package/dist/tools/thinking/formatAsPlan.d.ts +9 -0
- package/dist/tools/thinking/formatAsPlan.d.ts.map +1 -0
- package/dist/tools/thinking/formatAsPlan.js +78 -0
- package/dist/tools/thinking/formatAsPlan.js.map +1 -0
- package/dist/tools/thinking/index.d.ts +10 -0
- package/dist/tools/thinking/index.d.ts.map +1 -0
- package/dist/tools/thinking/index.js +10 -0
- package/dist/tools/thinking/index.js.map +1 -0
- package/dist/tools/thinking/stepByStepAnalysis.d.ts +8 -0
- package/dist/tools/thinking/stepByStepAnalysis.d.ts.map +1 -0
- package/dist/tools/thinking/stepByStepAnalysis.js +63 -0
- package/dist/tools/thinking/stepByStepAnalysis.js.map +1 -0
- package/dist/tools/thinking/thinkAloudProcess.d.ts +8 -0
- package/dist/tools/thinking/thinkAloudProcess.d.ts.map +1 -0
- package/dist/tools/thinking/thinkAloudProcess.js +80 -0
- package/dist/tools/thinking/thinkAloudProcess.js.map +1 -0
- package/hooks/hooks.json +222 -222
- package/hooks/scripts/code-check.js +22 -22
- package/hooks/scripts/code-review.js +22 -22
- package/hooks/scripts/complexity.js +22 -22
- package/hooks/scripts/compound.js +23 -23
- package/hooks/scripts/context-save.js +33 -33
- package/hooks/scripts/gemini-ui-gen.js +281 -281
- package/hooks/scripts/generate-brand-assets.js +474 -474
- package/hooks/scripts/hud-multiline.js +262 -262
- package/hooks/scripts/hud-status.js +291 -291
- package/hooks/scripts/keyword-detector.js +214 -214
- package/hooks/scripts/llm-orchestrate.js +171 -171
- package/hooks/scripts/post-edit.js +97 -97
- package/hooks/scripts/post-tool-verify.js +210 -210
- package/hooks/scripts/pre-tool-guard.js +125 -125
- package/hooks/scripts/recall.js +22 -22
- package/hooks/scripts/session-start.js +30 -30
- package/hooks/scripts/skill-injector.js +191 -191
- package/hooks/scripts/utils.js +97 -97
- package/languages/csharp-unity.md +515 -515
- package/languages/gdscript-godot.md +470 -470
- package/languages/ruby-rails.md +489 -489
- package/languages/typescript-angular.md +433 -433
- package/languages/typescript-astro.md +416 -416
- package/languages/typescript-electron.md +406 -406
- package/languages/typescript-nestjs.md +524 -524
- package/languages/typescript-svelte.md +407 -407
- package/languages/typescript-tauri.md +365 -365
- package/package.json +84 -84
- package/skills/brand-assets.md +141 -141
- package/skills/commerce-patterns.md +361 -361
- package/skills/context7-usage.md +102 -102
- package/skills/e2e-commerce.md +304 -304
- package/skills/frontend-design.md +92 -92
- package/skills/git-worktree.md +181 -181
- package/skills/parallel-research.md +77 -77
- package/skills/priority-todos.md +239 -239
- package/skills/seo-checklist.md +244 -244
- package/skills/tool-fallback.md +190 -190
- package/skills/vibe-capabilities.md +161 -161
- package/vibe/constitution.md +227 -227
- package/vibe/rules/core/communication-guide.md +98 -98
- package/vibe/rules/core/development-philosophy.md +52 -52
- package/vibe/rules/core/quick-start.md +102 -102
- package/vibe/rules/quality/bdd-contract-testing.md +393 -393
- package/vibe/rules/quality/checklist.md +276 -276
- package/vibe/rules/quality/testing-strategy.md +440 -440
- package/vibe/rules/standards/anti-patterns.md +541 -541
- package/vibe/rules/standards/code-structure.md +291 -291
- package/vibe/rules/standards/complexity-metrics.md +313 -313
- package/vibe/rules/standards/naming-conventions.md +198 -198
- package/vibe/setup.sh +31 -31
- package/vibe/templates/constitution-template.md +252 -252
- package/vibe/templates/contract-backend-template.md +526 -526
- package/vibe/templates/contract-frontend-template.md +599 -599
- package/vibe/templates/feature-template.md +96 -96
- package/vibe/templates/spec-template.md +221 -221
|
@@ -72,45 +72,45 @@ function generateSplitSpec(prd, featureName, phases, options) {
|
|
|
72
72
|
function buildSpecContent(prd, featureName, phases, options) {
|
|
73
73
|
const { techStack = [], relatedCodePaths = [], designReference, additionalConstraints = [], additionalOutputs = [] } = options;
|
|
74
74
|
const now = new Date().toISOString();
|
|
75
|
-
let content = `---
|
|
76
|
-
status: pending
|
|
77
|
-
currentPhase: 0
|
|
78
|
-
totalPhases: ${phases.length}
|
|
79
|
-
createdAt: ${now}
|
|
80
|
-
lastUpdated: ${now}
|
|
81
|
-
---
|
|
82
|
-
|
|
83
|
-
# SPEC: ${featureName}
|
|
84
|
-
|
|
85
|
-
## Persona
|
|
86
|
-
<role>
|
|
87
|
-
Senior developer implementing ${featureName}.
|
|
88
|
-
- Follow existing code patterns and conventions
|
|
89
|
-
- Write testable, maintainable code
|
|
90
|
-
- Consider security and performance implications
|
|
91
|
-
</role>
|
|
92
|
-
|
|
93
|
-
## Context
|
|
94
|
-
<context>
|
|
95
|
-
### Background
|
|
96
|
-
${prd.description || `Implementation of ${prd.title}`}
|
|
97
|
-
|
|
98
|
-
### Tech Stack
|
|
99
|
-
${techStack.length > 0 ? techStack.map(t => `- ${t}`).join('\n') : '- (To be determined based on project)'}
|
|
100
|
-
|
|
101
|
-
### Related Code
|
|
102
|
-
${relatedCodePaths.length > 0 ? relatedCodePaths.map(p => `- \`${p}\``).join('\n') : '- (Analyze existing codebase for patterns)'}
|
|
103
|
-
|
|
104
|
-
### Design Reference
|
|
105
|
-
${designReference || '- (None specified)'}
|
|
106
|
-
|
|
107
|
-
### Requirements Source
|
|
108
|
-
- Parsed from PRD: ${prd.requirements.length} requirements
|
|
109
|
-
- Format: ${prd.metadata.format}
|
|
110
|
-
</context>
|
|
111
|
-
|
|
112
|
-
## Task
|
|
113
|
-
<task>
|
|
75
|
+
let content = `---
|
|
76
|
+
status: pending
|
|
77
|
+
currentPhase: 0
|
|
78
|
+
totalPhases: ${phases.length}
|
|
79
|
+
createdAt: ${now}
|
|
80
|
+
lastUpdated: ${now}
|
|
81
|
+
---
|
|
82
|
+
|
|
83
|
+
# SPEC: ${featureName}
|
|
84
|
+
|
|
85
|
+
## Persona
|
|
86
|
+
<role>
|
|
87
|
+
Senior developer implementing ${featureName}.
|
|
88
|
+
- Follow existing code patterns and conventions
|
|
89
|
+
- Write testable, maintainable code
|
|
90
|
+
- Consider security and performance implications
|
|
91
|
+
</role>
|
|
92
|
+
|
|
93
|
+
## Context
|
|
94
|
+
<context>
|
|
95
|
+
### Background
|
|
96
|
+
${prd.description || `Implementation of ${prd.title}`}
|
|
97
|
+
|
|
98
|
+
### Tech Stack
|
|
99
|
+
${techStack.length > 0 ? techStack.map(t => `- ${t}`).join('\n') : '- (To be determined based on project)'}
|
|
100
|
+
|
|
101
|
+
### Related Code
|
|
102
|
+
${relatedCodePaths.length > 0 ? relatedCodePaths.map(p => `- \`${p}\``).join('\n') : '- (Analyze existing codebase for patterns)'}
|
|
103
|
+
|
|
104
|
+
### Design Reference
|
|
105
|
+
${designReference || '- (None specified)'}
|
|
106
|
+
|
|
107
|
+
### Requirements Source
|
|
108
|
+
- Parsed from PRD: ${prd.requirements.length} requirements
|
|
109
|
+
- Format: ${prd.metadata.format}
|
|
110
|
+
</context>
|
|
111
|
+
|
|
112
|
+
## Task
|
|
113
|
+
<task>
|
|
114
114
|
`;
|
|
115
115
|
// Phase별 태스크 추가
|
|
116
116
|
for (let i = 0; i < phases.length; i++) {
|
|
@@ -122,47 +122,47 @@ ${designReference || '- (None specified)'}
|
|
|
122
122
|
}
|
|
123
123
|
content += '\n';
|
|
124
124
|
}
|
|
125
|
-
content += `</task>
|
|
126
|
-
|
|
127
|
-
## Constraints
|
|
128
|
-
<constraints>
|
|
129
|
-
### Must Follow
|
|
130
|
-
- Follow existing code patterns (ES Module, async/await)
|
|
131
|
-
- Maintain backward compatibility
|
|
132
|
-
- TypeScript strict mode compliance
|
|
133
|
-
- No \`any\` type → Use \`unknown\` + type guards
|
|
134
|
-
- Functions ≤30 lines recommended, ≤50 lines max
|
|
135
|
-
- Nesting ≤3 levels
|
|
136
|
-
|
|
137
|
-
### Error Handling
|
|
138
|
-
- Proper try-catch with meaningful error messages
|
|
139
|
-
- Loading state handling for async operations
|
|
140
|
-
- User-friendly error messages
|
|
141
|
-
|
|
142
|
-
### Security
|
|
143
|
-
- Input validation for all user inputs
|
|
144
|
-
- Authentication/authorization checks where needed
|
|
145
|
-
- No sensitive data in logs
|
|
146
|
-
${additionalConstraints.map(c => `\n- ${c}`).join('')}
|
|
147
|
-
</constraints>
|
|
148
|
-
|
|
149
|
-
## Output Format
|
|
150
|
-
<output_format>
|
|
151
|
-
### Files to Create
|
|
152
|
-
${generateFileList(phases, 'create')}
|
|
153
|
-
|
|
154
|
-
### Files to Modify
|
|
155
|
-
${generateFileList(phases, 'modify')}
|
|
156
|
-
|
|
157
|
-
### Verification Commands
|
|
158
|
-
- \`npm run build\` (build success)
|
|
159
|
-
- \`npm test\` (tests pass)
|
|
160
|
-
- \`tsc --noEmit\` (type check)
|
|
161
|
-
${additionalOutputs.map(o => `- ${o}`).join('\n')}
|
|
162
|
-
</output_format>
|
|
163
|
-
|
|
164
|
-
## Acceptance Criteria
|
|
165
|
-
<acceptance>
|
|
125
|
+
content += `</task>
|
|
126
|
+
|
|
127
|
+
## Constraints
|
|
128
|
+
<constraints>
|
|
129
|
+
### Must Follow
|
|
130
|
+
- Follow existing code patterns (ES Module, async/await)
|
|
131
|
+
- Maintain backward compatibility
|
|
132
|
+
- TypeScript strict mode compliance
|
|
133
|
+
- No \`any\` type → Use \`unknown\` + type guards
|
|
134
|
+
- Functions ≤30 lines recommended, ≤50 lines max
|
|
135
|
+
- Nesting ≤3 levels
|
|
136
|
+
|
|
137
|
+
### Error Handling
|
|
138
|
+
- Proper try-catch with meaningful error messages
|
|
139
|
+
- Loading state handling for async operations
|
|
140
|
+
- User-friendly error messages
|
|
141
|
+
|
|
142
|
+
### Security
|
|
143
|
+
- Input validation for all user inputs
|
|
144
|
+
- Authentication/authorization checks where needed
|
|
145
|
+
- No sensitive data in logs
|
|
146
|
+
${additionalConstraints.map(c => `\n- ${c}`).join('')}
|
|
147
|
+
</constraints>
|
|
148
|
+
|
|
149
|
+
## Output Format
|
|
150
|
+
<output_format>
|
|
151
|
+
### Files to Create
|
|
152
|
+
${generateFileList(phases, 'create')}
|
|
153
|
+
|
|
154
|
+
### Files to Modify
|
|
155
|
+
${generateFileList(phases, 'modify')}
|
|
156
|
+
|
|
157
|
+
### Verification Commands
|
|
158
|
+
- \`npm run build\` (build success)
|
|
159
|
+
- \`npm test\` (tests pass)
|
|
160
|
+
- \`tsc --noEmit\` (type check)
|
|
161
|
+
${additionalOutputs.map(o => `- ${o}`).join('\n')}
|
|
162
|
+
</output_format>
|
|
163
|
+
|
|
164
|
+
## Acceptance Criteria
|
|
165
|
+
<acceptance>
|
|
166
166
|
`;
|
|
167
167
|
// 요구사항별 AC 추가
|
|
168
168
|
for (const req of prd.requirements) {
|
|
@@ -177,11 +177,11 @@ ${additionalOutputs.map(o => `- ${o}`).join('\n')}
|
|
|
177
177
|
}
|
|
178
178
|
content += '\n';
|
|
179
179
|
}
|
|
180
|
-
content += `### Build & Test
|
|
181
|
-
- [ ] \`npm run build\` succeeds
|
|
182
|
-
- [ ] All tests pass
|
|
183
|
-
- [ ] No TypeScript errors
|
|
184
|
-
</acceptance>
|
|
180
|
+
content += `### Build & Test
|
|
181
|
+
- [ ] \`npm run build\` succeeds
|
|
182
|
+
- [ ] All tests pass
|
|
183
|
+
- [ ] No TypeScript errors
|
|
184
|
+
</acceptance>
|
|
185
185
|
`;
|
|
186
186
|
return content;
|
|
187
187
|
}
|
|
@@ -190,53 +190,53 @@ ${additionalOutputs.map(o => `- ${o}`).join('\n')}
|
|
|
190
190
|
*/
|
|
191
191
|
function buildMasterSpecContent(prd, featureName, phases, options) {
|
|
192
192
|
const now = new Date().toISOString();
|
|
193
|
-
let content = `---
|
|
194
|
-
status: pending
|
|
195
|
-
currentPhase: 0
|
|
196
|
-
totalPhases: ${phases.length}
|
|
197
|
-
createdAt: ${now}
|
|
198
|
-
lastUpdated: ${now}
|
|
199
|
-
isMaster: true
|
|
200
|
-
---
|
|
201
|
-
|
|
202
|
-
# SPEC: ${featureName} (Master)
|
|
203
|
-
|
|
204
|
-
## Overview
|
|
205
|
-
- **Feature**: ${prd.title}
|
|
206
|
-
- **Total Phases**: ${phases.length}
|
|
207
|
-
- **Total Requirements**: ${prd.requirements.length}
|
|
208
|
-
- **Format**: Split SPEC (large scope)
|
|
209
|
-
|
|
210
|
-
## Sub-SPECs
|
|
211
|
-
|
|
212
|
-
| Order | SPEC File | Description | Status |
|
|
213
|
-
|-------|-----------|-------------|--------|
|
|
193
|
+
let content = `---
|
|
194
|
+
status: pending
|
|
195
|
+
currentPhase: 0
|
|
196
|
+
totalPhases: ${phases.length}
|
|
197
|
+
createdAt: ${now}
|
|
198
|
+
lastUpdated: ${now}
|
|
199
|
+
isMaster: true
|
|
200
|
+
---
|
|
201
|
+
|
|
202
|
+
# SPEC: ${featureName} (Master)
|
|
203
|
+
|
|
204
|
+
## Overview
|
|
205
|
+
- **Feature**: ${prd.title}
|
|
206
|
+
- **Total Phases**: ${phases.length}
|
|
207
|
+
- **Total Requirements**: ${prd.requirements.length}
|
|
208
|
+
- **Format**: Split SPEC (large scope)
|
|
209
|
+
|
|
210
|
+
## Sub-SPECs
|
|
211
|
+
|
|
212
|
+
| Order | SPEC File | Description | Status |
|
|
213
|
+
|-------|-----------|-------------|--------|
|
|
214
214
|
`;
|
|
215
215
|
for (let i = 0; i < phases.length; i++) {
|
|
216
216
|
const phase = phases[i];
|
|
217
217
|
const fileName = `phase-${i + 1}-${normalizeFileName(phase.name)}.md`;
|
|
218
218
|
content += `| ${i + 1} | ${fileName} | ${phase.name} | ⬜ |\n`;
|
|
219
219
|
}
|
|
220
|
-
content += `
|
|
221
|
-
## Shared Context
|
|
222
|
-
|
|
223
|
-
### Tech Stack
|
|
224
|
-
${options.techStack?.map(t => `- ${t}`).join('\n') || '- (See project configuration)'}
|
|
225
|
-
|
|
226
|
-
### Constraints (Apply to All Phases)
|
|
227
|
-
- Follow existing code patterns
|
|
228
|
-
- TypeScript strict mode
|
|
229
|
-
- No \`any\` type
|
|
230
|
-
- Functions ≤50 lines max
|
|
231
|
-
${options.additionalConstraints?.map(c => `- ${c}`).join('\n') || ''}
|
|
232
|
-
|
|
233
|
-
## Execution Order
|
|
234
|
-
\`\`\`
|
|
235
|
-
${phases.map((p, i) => `Phase ${i + 1}: ${p.name}`).join(' → ')}
|
|
236
|
-
\`\`\`
|
|
237
|
-
|
|
238
|
-
## Dependencies
|
|
239
|
-
${generateDependencyList(phases)}
|
|
220
|
+
content += `
|
|
221
|
+
## Shared Context
|
|
222
|
+
|
|
223
|
+
### Tech Stack
|
|
224
|
+
${options.techStack?.map(t => `- ${t}`).join('\n') || '- (See project configuration)'}
|
|
225
|
+
|
|
226
|
+
### Constraints (Apply to All Phases)
|
|
227
|
+
- Follow existing code patterns
|
|
228
|
+
- TypeScript strict mode
|
|
229
|
+
- No \`any\` type
|
|
230
|
+
- Functions ≤50 lines max
|
|
231
|
+
${options.additionalConstraints?.map(c => `- ${c}`).join('\n') || ''}
|
|
232
|
+
|
|
233
|
+
## Execution Order
|
|
234
|
+
\`\`\`
|
|
235
|
+
${phases.map((p, i) => `Phase ${i + 1}: ${p.name}`).join(' → ')}
|
|
236
|
+
\`\`\`
|
|
237
|
+
|
|
238
|
+
## Dependencies
|
|
239
|
+
${generateDependencyList(phases)}
|
|
240
240
|
`;
|
|
241
241
|
return content;
|
|
242
242
|
}
|
|
@@ -245,54 +245,54 @@ ${generateDependencyList(phases)}
|
|
|
245
245
|
*/
|
|
246
246
|
function buildPhaseSpecContent(prd, featureName, phase, phaseNumber, totalPhases, options) {
|
|
247
247
|
const now = new Date().toISOString();
|
|
248
|
-
let content = `---
|
|
249
|
-
status: pending
|
|
250
|
-
phase: ${phaseNumber}
|
|
251
|
-
totalPhases: ${totalPhases}
|
|
252
|
-
masterSpec: _index.md
|
|
253
|
-
createdAt: ${now}
|
|
254
|
-
lastUpdated: ${now}
|
|
255
|
-
---
|
|
256
|
-
|
|
257
|
-
# SPEC: ${featureName} - Phase ${phaseNumber}: ${phase.name}
|
|
258
|
-
|
|
259
|
-
## Persona
|
|
260
|
-
<role>
|
|
261
|
-
Developer implementing Phase ${phaseNumber} of ${featureName}.
|
|
262
|
-
- Focus on ${phase.name}
|
|
263
|
-
- Follow project conventions
|
|
264
|
-
- Write testable code
|
|
265
|
-
</role>
|
|
266
|
-
|
|
267
|
-
## Context
|
|
268
|
-
<context>
|
|
269
|
-
### Phase Goal
|
|
270
|
-
${getPhaseGoal(phase)}
|
|
271
|
-
|
|
272
|
-
### Requirements (${phase.requirements.length})
|
|
273
|
-
${phase.requirements.map(r => `- ${r.id}: ${truncateText(r.description, 50)}`).join('\n')}
|
|
274
|
-
|
|
275
|
-
### Dependencies
|
|
276
|
-
${phaseNumber > 1 ? `- Requires Phase ${phaseNumber - 1} completion` : '- No dependencies (first phase)'}
|
|
277
|
-
</context>
|
|
278
|
-
|
|
279
|
-
## Task
|
|
280
|
-
<task>
|
|
248
|
+
let content = `---
|
|
249
|
+
status: pending
|
|
250
|
+
phase: ${phaseNumber}
|
|
251
|
+
totalPhases: ${totalPhases}
|
|
252
|
+
masterSpec: _index.md
|
|
253
|
+
createdAt: ${now}
|
|
254
|
+
lastUpdated: ${now}
|
|
255
|
+
---
|
|
256
|
+
|
|
257
|
+
# SPEC: ${featureName} - Phase ${phaseNumber}: ${phase.name}
|
|
258
|
+
|
|
259
|
+
## Persona
|
|
260
|
+
<role>
|
|
261
|
+
Developer implementing Phase ${phaseNumber} of ${featureName}.
|
|
262
|
+
- Focus on ${phase.name}
|
|
263
|
+
- Follow project conventions
|
|
264
|
+
- Write testable code
|
|
265
|
+
</role>
|
|
266
|
+
|
|
267
|
+
## Context
|
|
268
|
+
<context>
|
|
269
|
+
### Phase Goal
|
|
270
|
+
${getPhaseGoal(phase)}
|
|
271
|
+
|
|
272
|
+
### Requirements (${phase.requirements.length})
|
|
273
|
+
${phase.requirements.map(r => `- ${r.id}: ${truncateText(r.description, 50)}`).join('\n')}
|
|
274
|
+
|
|
275
|
+
### Dependencies
|
|
276
|
+
${phaseNumber > 1 ? `- Requires Phase ${phaseNumber - 1} completion` : '- No dependencies (first phase)'}
|
|
277
|
+
</context>
|
|
278
|
+
|
|
279
|
+
## Task
|
|
280
|
+
<task>
|
|
281
281
|
`;
|
|
282
282
|
for (const task of phase.tasks) {
|
|
283
283
|
content += `1. [ ] ${task}\n`;
|
|
284
284
|
}
|
|
285
|
-
content += `</task>
|
|
286
|
-
|
|
287
|
-
## Acceptance Criteria
|
|
288
|
-
<acceptance>
|
|
285
|
+
content += `</task>
|
|
286
|
+
|
|
287
|
+
## Acceptance Criteria
|
|
288
|
+
<acceptance>
|
|
289
289
|
`;
|
|
290
290
|
for (const req of phase.requirements) {
|
|
291
291
|
content += `- [ ] ${req.id}: ${truncateText(req.description, 60)}\n`;
|
|
292
292
|
}
|
|
293
|
-
content += `- [ ] Phase ${phaseNumber} build succeeds
|
|
294
|
-
- [ ] Phase ${phaseNumber} tests pass
|
|
295
|
-
</acceptance>
|
|
293
|
+
content += `- [ ] Phase ${phaseNumber} build succeeds
|
|
294
|
+
- [ ] Phase ${phaseNumber} tests pass
|
|
295
|
+
</acceptance>
|
|
296
296
|
`;
|
|
297
297
|
return content;
|
|
298
298
|
}
|
|
@@ -385,11 +385,11 @@ function getPhaseGoal(phase) {
|
|
|
385
385
|
function generateFileList(phases, type) {
|
|
386
386
|
// 실제로는 요구사항을 분석해서 추론해야 하지만, 기본 템플릿 제공
|
|
387
387
|
if (type === 'create') {
|
|
388
|
-
return `- (To be determined based on implementation)
|
|
389
|
-
- \`src/[feature]/index.ts\`
|
|
388
|
+
return `- (To be determined based on implementation)
|
|
389
|
+
- \`src/[feature]/index.ts\`
|
|
390
390
|
- \`src/[feature]/[feature].test.ts\``;
|
|
391
391
|
}
|
|
392
|
-
return `- (Analyze existing codebase)
|
|
392
|
+
return `- (Analyze existing codebase)
|
|
393
393
|
- Relevant existing files`;
|
|
394
394
|
}
|
|
395
395
|
/**
|
|
@@ -117,74 +117,74 @@ export function formatMatrixAsMarkdown(matrix) {
|
|
|
117
117
|
* 매트릭스를 HTML로 출력
|
|
118
118
|
*/
|
|
119
119
|
export function formatMatrixAsHtml(matrix) {
|
|
120
|
-
let html = `<!DOCTYPE html>
|
|
121
|
-
<html>
|
|
122
|
-
<head>
|
|
123
|
-
<title>RTM: ${matrix.featureName}</title>
|
|
124
|
-
<style>
|
|
125
|
-
body { font-family: -apple-system, BlinkMacSystemFont, sans-serif; margin: 2rem; }
|
|
126
|
-
table { border-collapse: collapse; width: 100%; }
|
|
127
|
-
th, td { border: 1px solid #ddd; padding: 8px; text-align: left; }
|
|
128
|
-
th { background: #f5f5f5; }
|
|
129
|
-
.full { background: #d4edda; }
|
|
130
|
-
.partial { background: #fff3cd; }
|
|
131
|
-
.none { background: #f8d7da; }
|
|
132
|
-
.summary { display: grid; grid-template-columns: repeat(4, 1fr); gap: 1rem; margin: 1rem 0; }
|
|
133
|
-
.summary-card { padding: 1rem; border-radius: 8px; background: #f5f5f5; }
|
|
134
|
-
.coverage-bar { height: 20px; background: #e0e0e0; border-radius: 4px; overflow: hidden; }
|
|
135
|
-
.coverage-fill { height: 100%; background: #4caf50; }
|
|
136
|
-
</style>
|
|
137
|
-
</head>
|
|
138
|
-
<body>
|
|
139
|
-
<h1>RTM: ${matrix.featureName}</h1>
|
|
140
|
-
<p>Generated: ${matrix.generatedAt}</p>
|
|
141
|
-
|
|
142
|
-
<div class="summary">
|
|
143
|
-
<div class="summary-card">
|
|
144
|
-
<strong>Requirements</strong><br>${matrix.summary.totalRequirements}
|
|
145
|
-
</div>
|
|
146
|
-
<div class="summary-card">
|
|
147
|
-
<strong>Feature Coverage</strong><br>${matrix.summary.featureCovered}/${matrix.summary.totalRequirements}
|
|
148
|
-
</div>
|
|
149
|
-
<div class="summary-card">
|
|
150
|
-
<strong>Test Coverage</strong><br>${matrix.summary.testCovered}/${matrix.summary.totalRequirements}
|
|
151
|
-
</div>
|
|
152
|
-
<div class="summary-card">
|
|
153
|
-
<strong>Overall</strong><br>
|
|
154
|
-
<div class="coverage-bar">
|
|
155
|
-
<div class="coverage-fill" style="width: ${matrix.summary.coveragePercent}%"></div>
|
|
156
|
-
</div>
|
|
157
|
-
${matrix.summary.coveragePercent}%
|
|
158
|
-
</div>
|
|
159
|
-
</div>
|
|
160
|
-
|
|
161
|
-
<table>
|
|
162
|
-
<thead>
|
|
163
|
-
<tr>
|
|
164
|
-
<th>Requirement</th>
|
|
165
|
-
<th>Description</th>
|
|
166
|
-
<th>SPEC</th>
|
|
167
|
-
<th>Feature</th>
|
|
168
|
-
<th>Test</th>
|
|
169
|
-
<th>Coverage</th>
|
|
170
|
-
</tr>
|
|
171
|
-
</thead>
|
|
172
|
-
<tbody>
|
|
120
|
+
let html = `<!DOCTYPE html>
|
|
121
|
+
<html>
|
|
122
|
+
<head>
|
|
123
|
+
<title>RTM: ${matrix.featureName}</title>
|
|
124
|
+
<style>
|
|
125
|
+
body { font-family: -apple-system, BlinkMacSystemFont, sans-serif; margin: 2rem; }
|
|
126
|
+
table { border-collapse: collapse; width: 100%; }
|
|
127
|
+
th, td { border: 1px solid #ddd; padding: 8px; text-align: left; }
|
|
128
|
+
th { background: #f5f5f5; }
|
|
129
|
+
.full { background: #d4edda; }
|
|
130
|
+
.partial { background: #fff3cd; }
|
|
131
|
+
.none { background: #f8d7da; }
|
|
132
|
+
.summary { display: grid; grid-template-columns: repeat(4, 1fr); gap: 1rem; margin: 1rem 0; }
|
|
133
|
+
.summary-card { padding: 1rem; border-radius: 8px; background: #f5f5f5; }
|
|
134
|
+
.coverage-bar { height: 20px; background: #e0e0e0; border-radius: 4px; overflow: hidden; }
|
|
135
|
+
.coverage-fill { height: 100%; background: #4caf50; }
|
|
136
|
+
</style>
|
|
137
|
+
</head>
|
|
138
|
+
<body>
|
|
139
|
+
<h1>RTM: ${matrix.featureName}</h1>
|
|
140
|
+
<p>Generated: ${matrix.generatedAt}</p>
|
|
141
|
+
|
|
142
|
+
<div class="summary">
|
|
143
|
+
<div class="summary-card">
|
|
144
|
+
<strong>Requirements</strong><br>${matrix.summary.totalRequirements}
|
|
145
|
+
</div>
|
|
146
|
+
<div class="summary-card">
|
|
147
|
+
<strong>Feature Coverage</strong><br>${matrix.summary.featureCovered}/${matrix.summary.totalRequirements}
|
|
148
|
+
</div>
|
|
149
|
+
<div class="summary-card">
|
|
150
|
+
<strong>Test Coverage</strong><br>${matrix.summary.testCovered}/${matrix.summary.totalRequirements}
|
|
151
|
+
</div>
|
|
152
|
+
<div class="summary-card">
|
|
153
|
+
<strong>Overall</strong><br>
|
|
154
|
+
<div class="coverage-bar">
|
|
155
|
+
<div class="coverage-fill" style="width: ${matrix.summary.coveragePercent}%"></div>
|
|
156
|
+
</div>
|
|
157
|
+
${matrix.summary.coveragePercent}%
|
|
158
|
+
</div>
|
|
159
|
+
</div>
|
|
160
|
+
|
|
161
|
+
<table>
|
|
162
|
+
<thead>
|
|
163
|
+
<tr>
|
|
164
|
+
<th>Requirement</th>
|
|
165
|
+
<th>Description</th>
|
|
166
|
+
<th>SPEC</th>
|
|
167
|
+
<th>Feature</th>
|
|
168
|
+
<th>Test</th>
|
|
169
|
+
<th>Coverage</th>
|
|
170
|
+
</tr>
|
|
171
|
+
</thead>
|
|
172
|
+
<tbody>
|
|
173
173
|
`;
|
|
174
174
|
for (const item of matrix.items) {
|
|
175
|
-
html += ` <tr class="${item.coverage}">
|
|
176
|
-
<td>${item.requirementId}</td>
|
|
177
|
-
<td>${escapeHtml(truncate(item.requirementDesc, 50))}</td>
|
|
178
|
-
<td>${item.specSection ? '✅' : '❌'}</td>
|
|
179
|
-
<td>${item.featureScenario ? '✅' : '❌'}</td>
|
|
180
|
-
<td>${item.testName ? '✅' : '❌'}</td>
|
|
181
|
-
<td>${getCoverageIcon(item.coverage)}</td>
|
|
182
|
-
</tr>
|
|
175
|
+
html += ` <tr class="${item.coverage}">
|
|
176
|
+
<td>${item.requirementId}</td>
|
|
177
|
+
<td>${escapeHtml(truncate(item.requirementDesc, 50))}</td>
|
|
178
|
+
<td>${item.specSection ? '✅' : '❌'}</td>
|
|
179
|
+
<td>${item.featureScenario ? '✅' : '❌'}</td>
|
|
180
|
+
<td>${item.testName ? '✅' : '❌'}</td>
|
|
181
|
+
<td>${getCoverageIcon(item.coverage)}</td>
|
|
182
|
+
</tr>
|
|
183
183
|
`;
|
|
184
184
|
}
|
|
185
|
-
html += ` </tbody>
|
|
186
|
-
</table>
|
|
187
|
-
</body>
|
|
185
|
+
html += ` </tbody>
|
|
186
|
+
</table>
|
|
187
|
+
</body>
|
|
188
188
|
</html>`;
|
|
189
189
|
return html;
|
|
190
190
|
}
|
|
@@ -8,37 +8,37 @@ import { generateTraceabilityMatrix, formatMatrixAsMarkdown, formatMatrixAsHtml,
|
|
|
8
8
|
vi.mock('fs', () => ({
|
|
9
9
|
readFileSync: vi.fn((path) => {
|
|
10
10
|
if (path.includes('test-feature.md')) {
|
|
11
|
-
return `# SPEC: test-feature
|
|
12
|
-
|
|
13
|
-
## Task
|
|
14
|
-
|
|
15
|
-
### Phase 1: Setup
|
|
16
|
-
|
|
17
|
-
1. [ ] REQ-test-001: Setup authentication
|
|
18
|
-
2. [ ] REQ-test-002: Create login form
|
|
19
|
-
3. [ ] REQ-test-003: Implement validation
|
|
11
|
+
return `# SPEC: test-feature
|
|
12
|
+
|
|
13
|
+
## Task
|
|
14
|
+
|
|
15
|
+
### Phase 1: Setup
|
|
16
|
+
|
|
17
|
+
1. [ ] REQ-test-001: Setup authentication
|
|
18
|
+
2. [ ] REQ-test-002: Create login form
|
|
19
|
+
3. [ ] REQ-test-003: Implement validation
|
|
20
20
|
`;
|
|
21
21
|
}
|
|
22
22
|
if (path.includes('test-feature.feature')) {
|
|
23
|
-
return `# Feature: test-feature
|
|
24
|
-
|
|
25
|
-
## Scenarios
|
|
26
|
-
|
|
27
|
-
### Scenario 1: User can login
|
|
28
|
-
\`\`\`gherkin
|
|
29
|
-
Given user is on login page
|
|
30
|
-
When user enters valid credentials
|
|
31
|
-
Then user is logged in
|
|
32
|
-
\`\`\`
|
|
33
|
-
**Verification**: REQ-test-001
|
|
34
|
-
|
|
35
|
-
### Scenario 2: Validation errors
|
|
36
|
-
\`\`\`gherkin
|
|
37
|
-
Given user is on login page
|
|
38
|
-
When user enters invalid email
|
|
39
|
-
Then error message is shown
|
|
40
|
-
\`\`\`
|
|
41
|
-
**Verification**: REQ-test-003
|
|
23
|
+
return `# Feature: test-feature
|
|
24
|
+
|
|
25
|
+
## Scenarios
|
|
26
|
+
|
|
27
|
+
### Scenario 1: User can login
|
|
28
|
+
\`\`\`gherkin
|
|
29
|
+
Given user is on login page
|
|
30
|
+
When user enters valid credentials
|
|
31
|
+
Then user is logged in
|
|
32
|
+
\`\`\`
|
|
33
|
+
**Verification**: REQ-test-001
|
|
34
|
+
|
|
35
|
+
### Scenario 2: Validation errors
|
|
36
|
+
\`\`\`gherkin
|
|
37
|
+
Given user is on login page
|
|
38
|
+
When user enters invalid email
|
|
39
|
+
Then error message is shown
|
|
40
|
+
\`\`\`
|
|
41
|
+
**Verification**: REQ-test-003
|
|
42
42
|
`;
|
|
43
43
|
}
|
|
44
44
|
throw new Error(`File not found: ${path}`);
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { ToolResult, ToolDefinition } from '../../types/tool.js';
|
|
2
|
+
export declare const analyzeProblemDefinition: ToolDefinition;
|
|
3
|
+
export declare function analyzeProblem(args: {
|
|
4
|
+
problem: string;
|
|
5
|
+
domain?: string;
|
|
6
|
+
}): Promise<ToolResult>;
|
|
7
|
+
//# sourceMappingURL=analyzeProblem.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"analyzeProblem.d.ts","sourceRoot":"","sources":["../../../src/tools/thinking/analyzeProblem.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAEjE,eAAO,MAAM,wBAAwB,EAAE,cAmBtC,CAAC;AAEF,wBAAsB,cAAc,CAAC,IAAI,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,UAAU,CAAC,CAkCpG"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
// Sequential thinking tool - completely independent
|
|
2
|
+
export const analyzeProblemDefinition = {
|
|
3
|
+
name: 'analyze_problem',
|
|
4
|
+
description: '문제 분석|어떻게 접근|분석해줘|analyze this|how to approach|break this down - Break down complex problem into structured steps',
|
|
5
|
+
inputSchema: {
|
|
6
|
+
type: 'object',
|
|
7
|
+
properties: {
|
|
8
|
+
problem: { type: 'string', description: 'Problem to analyze' },
|
|
9
|
+
domain: { type: 'string', description: 'Problem domain' }
|
|
10
|
+
},
|
|
11
|
+
required: ['problem']
|
|
12
|
+
},
|
|
13
|
+
annotations: {
|
|
14
|
+
title: 'Analyze Problem',
|
|
15
|
+
audience: ['user', 'assistant'],
|
|
16
|
+
readOnlyHint: true,
|
|
17
|
+
destructiveHint: false,
|
|
18
|
+
idempotentHint: true,
|
|
19
|
+
openWorldHint: false
|
|
20
|
+
}
|
|
21
|
+
};
|
|
22
|
+
export async function analyzeProblem(args) {
|
|
23
|
+
const { problem, domain = 'general' } = args;
|
|
24
|
+
const problemAnalysis = {
|
|
25
|
+
action: 'analyze_problem',
|
|
26
|
+
problem,
|
|
27
|
+
domain,
|
|
28
|
+
analysis: {
|
|
29
|
+
breakdown: [
|
|
30
|
+
'Define the problem clearly',
|
|
31
|
+
'Identify key constraints and requirements',
|
|
32
|
+
'Break down into smaller sub-problems',
|
|
33
|
+
'Determine solution approach',
|
|
34
|
+
'Plan implementation steps'
|
|
35
|
+
],
|
|
36
|
+
considerations: [
|
|
37
|
+
'What are the inputs and expected outputs?',
|
|
38
|
+
'Are there any edge cases to consider?',
|
|
39
|
+
'What are the performance requirements?',
|
|
40
|
+
'How will this integrate with existing systems?'
|
|
41
|
+
],
|
|
42
|
+
nextSteps: [
|
|
43
|
+
'Research existing solutions',
|
|
44
|
+
'Create detailed implementation plan',
|
|
45
|
+
'Identify potential risks and mitigation strategies',
|
|
46
|
+
'Define success criteria'
|
|
47
|
+
]
|
|
48
|
+
},
|
|
49
|
+
status: 'success'
|
|
50
|
+
};
|
|
51
|
+
return {
|
|
52
|
+
content: [{ type: 'text', text: `Problem: ${problem}\nDomain: ${domain}\n\nBreakdown:\n${problemAnalysis.analysis.breakdown.map((b, i) => `${i + 1}. ${b}`).join('\n')}\n\nConsiderations:\n${problemAnalysis.analysis.considerations.map(c => `- ${c}`).join('\n')}\n\nNext Steps:\n${problemAnalysis.analysis.nextSteps.map(n => `- ${n}`).join('\n')}` }]
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=analyzeProblem.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"analyzeProblem.js","sourceRoot":"","sources":["../../../src/tools/thinking/analyzeProblem.ts"],"names":[],"mappings":"AAAA,oDAAoD;AAIpD,MAAM,CAAC,MAAM,wBAAwB,GAAmB;IACtD,IAAI,EAAE,iBAAiB;IACvB,WAAW,EAAE,mHAAmH;IAChI,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,oBAAoB,EAAE;YAC9D,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,gBAAgB,EAAE;SAC1D;QACD,QAAQ,EAAE,CAAC,SAAS,CAAC;KACtB;IACD,WAAW,EAAE;QACX,KAAK,EAAE,iBAAiB;QACxB,QAAQ,EAAE,CAAC,MAAM,EAAE,WAAW,CAAC;QAC/B,YAAY,EAAE,IAAI;QAClB,eAAe,EAAE,KAAK;QACtB,cAAc,EAAE,IAAI;QACpB,aAAa,EAAE,KAAK;KACrB;CACF,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,IAA0C;IAC7E,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,SAAS,EAAE,GAAG,IAAI,CAAC;IAE7C,MAAM,eAAe,GAAG;QACtB,MAAM,EAAE,iBAAiB;QACzB,OAAO;QACP,MAAM;QACN,QAAQ,EAAE;YACR,SAAS,EAAE;gBACT,4BAA4B;gBAC5B,2CAA2C;gBAC3C,sCAAsC;gBACtC,6BAA6B;gBAC7B,2BAA2B;aAC5B;YACD,cAAc,EAAE;gBACd,2CAA2C;gBAC3C,uCAAuC;gBACvC,wCAAwC;gBACxC,gDAAgD;aACjD;YACD,SAAS,EAAE;gBACT,6BAA6B;gBAC7B,qCAAqC;gBACrC,oDAAoD;gBACpD,yBAAyB;aAC1B;SACF;QACD,MAAM,EAAE,SAAS;KAClB,CAAC;IAEF,OAAO;QACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,OAAO,aAAa,MAAM,mBAAmB,eAAe,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,wBAAwB,eAAe,CAAC,QAAQ,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,oBAAoB,eAAe,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;KAC3V,CAAC;AACJ,CAAC"}
|