@su-record/vibe 3.2.19 → 3.2.21

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 (49) hide show
  1. package/dist/cli/setup/ProjectSetup.d.ts.map +1 -1
  2. package/dist/cli/setup/ProjectSetup.js +13 -1
  3. package/dist/cli/setup/ProjectSetup.js.map +1 -1
  4. package/dist/tools/dispatch/deterministicSignals.d.ts.map +1 -1
  5. package/dist/tools/dispatch/deterministicSignals.js +15 -10
  6. package/dist/tools/dispatch/deterministicSignals.js.map +1 -1
  7. package/dist/tools/dispatch/vibePaths.d.ts +7 -0
  8. package/dist/tools/dispatch/vibePaths.d.ts.map +1 -0
  9. package/dist/tools/dispatch/vibePaths.js +35 -0
  10. package/dist/tools/dispatch/vibePaths.js.map +1 -0
  11. package/dist/tools/spec/validateSpecDocument.d.ts.map +1 -1
  12. package/dist/tools/spec/validateSpecDocument.js +33 -6
  13. package/dist/tools/spec/validateSpecDocument.js.map +1 -1
  14. package/hooks/scripts/code-check.js +90 -16
  15. package/hooks/scripts/lib/anchor.js +15 -4
  16. package/hooks/scripts/lib/inbox.js +10 -2
  17. package/package.json +1 -1
  18. package/dist/infra/lib/DeepInit.d.ts +0 -60
  19. package/dist/infra/lib/DeepInit.d.ts.map +0 -1
  20. package/dist/infra/lib/DeepInit.js +0 -245
  21. package/dist/infra/lib/DeepInit.js.map +0 -1
  22. package/dist/infra/lib/FrameworkDetector.d.ts +0 -56
  23. package/dist/infra/lib/FrameworkDetector.d.ts.map +0 -1
  24. package/dist/infra/lib/FrameworkDetector.js +0 -287
  25. package/dist/infra/lib/FrameworkDetector.js.map +0 -1
  26. package/dist/infra/lib/ModelRouter.d.ts +0 -48
  27. package/dist/infra/lib/ModelRouter.d.ts.map +0 -1
  28. package/dist/infra/lib/ModelRouter.js +0 -216
  29. package/dist/infra/lib/ModelRouter.js.map +0 -1
  30. package/dist/infra/lib/ReviewRace.d.ts +0 -86
  31. package/dist/infra/lib/ReviewRace.d.ts.map +0 -1
  32. package/dist/infra/lib/ReviewRace.js +0 -454
  33. package/dist/infra/lib/ReviewRace.js.map +0 -1
  34. package/dist/infra/lib/RuleBuildSystem.d.ts +0 -157
  35. package/dist/infra/lib/RuleBuildSystem.d.ts.map +0 -1
  36. package/dist/infra/lib/RuleBuildSystem.js +0 -550
  37. package/dist/infra/lib/RuleBuildSystem.js.map +0 -1
  38. package/dist/infra/lib/SkillQualityGate.d.ts +0 -42
  39. package/dist/infra/lib/SkillQualityGate.d.ts.map +0 -1
  40. package/dist/infra/lib/SkillQualityGate.js +0 -220
  41. package/dist/infra/lib/SkillQualityGate.js.map +0 -1
  42. package/dist/infra/lib/SkillRepository.d.ts +0 -134
  43. package/dist/infra/lib/SkillRepository.d.ts.map +0 -1
  44. package/dist/infra/lib/SkillRepository.js +0 -500
  45. package/dist/infra/lib/SkillRepository.js.map +0 -1
  46. package/dist/infra/lib/UltraQA.d.ts +0 -89
  47. package/dist/infra/lib/UltraQA.d.ts.map +0 -1
  48. package/dist/infra/lib/UltraQA.js +0 -301
  49. package/dist/infra/lib/UltraQA.js.map +0 -1
@@ -1,301 +0,0 @@
1
- /**
2
- * UltraQA - 5-Cycle Autonomous QA Loop
3
- * Test/Build/Lint → Fail → Architect Diagnosis → Executor Fix → Repeat
4
- *
5
- * @deprecated Not wired into the vibe runtime (no hook/skill/CLI consumer).
6
- * No consumer in the shipped pipeline.
7
- * Retained for API compatibility; may be removed in a future major.
8
- */
9
- // Default commands per goal
10
- const GOAL_COMMANDS = {
11
- tests: 'npm test',
12
- build: 'npm run build',
13
- lint: 'npm run lint',
14
- typecheck: 'npx tsc --noEmit',
15
- custom: '',
16
- all: 'npm run build && npm test && npm run lint',
17
- };
18
- /**
19
- * Create new QA session
20
- */
21
- export function createQASession(config = {}) {
22
- return {
23
- config: {
24
- goals: config.goals || ['build', 'tests'],
25
- maxCycles: config.maxCycles || 5,
26
- maxSameFailure: config.maxSameFailure || 3,
27
- customCommand: config.customCommand,
28
- interactive: config.interactive || false,
29
- },
30
- cycles: [],
31
- currentCycle: 0,
32
- consecutiveFailures: new Map(),
33
- status: 'running',
34
- evidenceCollected: false,
35
- startTime: new Date(),
36
- };
37
- }
38
- /**
39
- * Get command for goal
40
- */
41
- export function getCommandForGoal(goal, customCommand) {
42
- if (goal === 'custom' && customCommand) {
43
- return customCommand;
44
- }
45
- return GOAL_COMMANDS[goal] || GOAL_COMMANDS.all;
46
- }
47
- /**
48
- * Record cycle result
49
- */
50
- export function recordCycleResult(session, result) {
51
- const cycle = session.currentCycle + 1;
52
- const cycleResult = { ...result, cycle };
53
- session.cycles.push(cycleResult);
54
- session.currentCycle = cycle;
55
- // Track consecutive failures
56
- const failureKey = `${result.goal}:${result.output.slice(0, 100)}`;
57
- if (!result.passed) {
58
- const count = (session.consecutiveFailures.get(failureKey) || 0) + 1;
59
- session.consecutiveFailures.set(failureKey, count);
60
- // 3-Fix Rule: Same failure 3 times → Architecture Question
61
- if (count >= session.config.maxSameFailure) {
62
- session.status = 'architecture_question';
63
- session.endTime = new Date();
64
- }
65
- }
66
- else {
67
- session.consecutiveFailures.delete(failureKey);
68
- }
69
- // Check for max cycles
70
- if (cycle >= session.config.maxCycles && session.status === 'running') {
71
- session.status = 'max_cycles';
72
- session.endTime = new Date();
73
- }
74
- return session;
75
- }
76
- /**
77
- * Check if session should continue
78
- */
79
- export function shouldContinue(session) {
80
- if (session.status !== 'running')
81
- return false;
82
- if (session.currentCycle >= session.config.maxCycles)
83
- return false;
84
- // Check if all goals passed in last cycle
85
- const lastCycles = session.cycles.slice(-session.config.goals.length);
86
- const allPassed = lastCycles.length === session.config.goals.length &&
87
- lastCycles.every(c => c.passed);
88
- if (allPassed) {
89
- session.status = 'passed';
90
- session.endTime = new Date();
91
- return false;
92
- }
93
- return true;
94
- }
95
- /**
96
- * Generate architect diagnosis prompt
97
- */
98
- export function generateDiagnosisPrompt(result) {
99
- return `
100
- ## QA Failure Diagnosis Required
101
-
102
- **Cycle**: ${result.cycle}
103
- **Goal**: ${result.goal}
104
- **Command**: ${result.command}
105
- **Exit Code**: ${result.exitCode}
106
-
107
- ### Output:
108
- \`\`\`
109
- ${result.output.slice(0, 2000)}
110
- \`\`\`
111
-
112
- ### Task:
113
- 1. Identify the root cause of this failure
114
- 2. Determine if it's a code issue, config issue, or environment issue
115
- 3. Provide a specific fix recommendation
116
-
117
- Return JSON:
118
- \`\`\`json
119
- {
120
- "rootCause": "description of root cause",
121
- "category": "code|config|environment|dependency",
122
- "fix": "specific fix to apply",
123
- "files": ["list", "of", "files", "to", "modify"],
124
- "confidence": "high|medium|low"
125
- }
126
- \`\`\`
127
- `.trim();
128
- }
129
- /**
130
- * Generate executor fix prompt
131
- */
132
- export function generateFixPrompt(diagnosis, result) {
133
- return `
134
- ## Apply Fix for QA Failure
135
-
136
- **Previous Diagnosis**:
137
- ${diagnosis}
138
-
139
- **Failed Command**: ${result.command}
140
- **Cycle**: ${result.cycle}
141
-
142
- ### Task:
143
- Apply the fix identified in the diagnosis. Make minimal changes to resolve the issue.
144
-
145
- ### Rules:
146
- 1. Only modify files mentioned in the diagnosis
147
- 2. Make the smallest change that fixes the issue
148
- 3. Do not refactor or improve unrelated code
149
- 4. Run the verification command after fixing
150
-
151
- ### After fixing, run:
152
- \`${result.command}\`
153
- `.trim();
154
- }
155
- /**
156
- * 3-Fix Rule: Generate architecture escalation prompt
157
- * When same failure occurs 3+ times, stop fixing and question architecture
158
- */
159
- export function generateArchitectureEscalationPrompt(session) {
160
- const recentFailures = session.cycles.filter(c => !c.passed).slice(-3);
161
- const failureSummary = recentFailures
162
- .map((c, i) => ` Attempt ${i + 1}: ${c.goal} - ${c.output.slice(0, 150)}`)
163
- .join('\n');
164
- return `
165
- ## ⚠️ 3-Fix Rule Triggered - Architecture Question Required
166
-
167
- **Same issue failed ${session.config.maxSameFailure}+ times.** This suggests an architectural problem, not a failed hypothesis.
168
-
169
- ### Failure Pattern:
170
- ${failureSummary}
171
-
172
- ### Architecture Problem Indicators:
173
- - Each fix reveals new shared state/coupling issues in different places
174
- - Fixes require "massive refactoring" to implement
175
- - Each fix creates new symptoms elsewhere
176
-
177
- ### Required Action:
178
- **STOP attempting more fixes.** Discuss with user before proceeding.
179
-
180
- ### Questions for User:
181
- 1. Is the current approach fundamentally sound?
182
- 2. Are we persisting through sheer inertia?
183
- 3. Should we refactor architecture vs. continue fixing symptoms?
184
-
185
- **Do NOT attempt Fix #${session.config.maxSameFailure + 1} without architectural discussion.**
186
- `.trim();
187
- }
188
- /**
189
- * Evidence Gate: Check if session has verification evidence
190
- */
191
- export function requireEvidence(session) {
192
- const passedCycles = session.cycles.filter(c => c.passed);
193
- if (passedCycles.length === 0) {
194
- return {
195
- hasEvidence: false,
196
- message: 'No passing evidence found. Run verification commands before claiming completion.',
197
- };
198
- }
199
- const goalsCovered = new Set(passedCycles.map(c => c.goal));
200
- const goalsMissing = session.config.goals.filter(g => !goalsCovered.has(g));
201
- if (goalsMissing.length > 0) {
202
- return {
203
- hasEvidence: false,
204
- message: `Missing evidence for: ${goalsMissing.join(', ')}. Run verification for all goals.`,
205
- };
206
- }
207
- return { hasEvidence: true, message: 'All goals have passing evidence.' };
208
- }
209
- /**
210
- * Mark evidence as collected for the session
211
- */
212
- export function markEvidenceCollected(session) {
213
- session.evidenceCollected = true;
214
- }
215
- /**
216
- * Format QA session status
217
- */
218
- export function formatQAStatus(session) {
219
- const lines = [];
220
- const icon = session.status === 'passed' ? '✅' :
221
- session.status === 'running' ? '🔄' :
222
- session.status === 'architecture_question' ? '⚠️' : '❌';
223
- lines.push(`━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━`);
224
- lines.push(`${icon} ULTRAQA - Cycle ${session.currentCycle}/${session.config.maxCycles}`);
225
- lines.push(`━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━`);
226
- lines.push(`Status: ${session.status.toUpperCase()}`);
227
- if (session.status === 'architecture_question') {
228
- lines.push(`⚠️ 3-Fix Rule: Architecture Question Required`);
229
- }
230
- lines.push(`Goals: ${session.config.goals.join(', ')}`);
231
- if (session.cycles.length > 0) {
232
- lines.push(`\nRecent cycles:`);
233
- const recent = session.cycles.slice(-5);
234
- for (const cycle of recent) {
235
- const status = cycle.passed ? '✅' : '❌';
236
- lines.push(` ${status} Cycle ${cycle.cycle}: ${cycle.goal} (exit: ${cycle.exitCode})`);
237
- }
238
- }
239
- if (session.endTime) {
240
- const duration = Math.round((session.endTime.getTime() - session.startTime.getTime()) / 1000);
241
- lines.push(`\nDuration: ${duration}s`);
242
- }
243
- lines.push(`━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━`);
244
- return lines.join('\n');
245
- }
246
- /**
247
- * Parse QA goal from string
248
- */
249
- export function parseQAGoals(input) {
250
- const goals = [];
251
- if (input.includes('--tests') || input.includes('test'))
252
- goals.push('tests');
253
- if (input.includes('--build') || input.includes('build'))
254
- goals.push('build');
255
- if (input.includes('--lint') || input.includes('lint'))
256
- goals.push('lint');
257
- if (input.includes('--typecheck') || input.includes('type'))
258
- goals.push('typecheck');
259
- if (input.includes('--custom'))
260
- goals.push('custom');
261
- if (input.includes('--all') || goals.length === 0) {
262
- return ['build', 'tests', 'lint', 'typecheck'];
263
- }
264
- return goals;
265
- }
266
- /**
267
- * Create UltraQA workflow description
268
- */
269
- export function describeUltraQAWorkflow() {
270
- return `
271
- ## UltraQA Workflow
272
-
273
- 5-cycle autonomous QA loop:
274
-
275
- \`\`\`
276
- ┌─────────────────────────────────────────────┐
277
- │ ULTRAQA CYCLE │
278
- │ │
279
- │ 1. Run verification (test/build/lint) │
280
- │ ↓ │
281
- │ 2. Check result │
282
- │ ↓ │
283
- │ ┌───┴───┐ │
284
- │ PASS FAIL │
285
- │ ↓ ↓ │
286
- │ DONE 3. Architect diagnosis │
287
- │ ↓ │
288
- │ 4. Executor fix │
289
- │ ↓ │
290
- │ 5. Repeat (max 5 cycles) │
291
- └─────────────────────────────────────────────┘
292
- \`\`\`
293
-
294
- Exit conditions:
295
- - ✅ All goals pass (with evidence)
296
- - ⚠️ Same failure 3 times → Architecture Question (3-Fix Rule)
297
- - ❌ Max 5 cycles reached
298
- - ❌ Environment error
299
- `.trim();
300
- }
301
- //# sourceMappingURL=UltraQA.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"UltraQA.js","sourceRoot":"","sources":["../../../src/infra/lib/UltraQA.ts"],"names":[],"mappings":"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"}