edsger 0.41.2 → 0.42.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 (139) hide show
  1. package/.claude/settings.local.json +3 -23
  2. package/dist/commands/pr-resolve/index.d.ts +1 -0
  3. package/dist/commands/pr-resolve/index.js +1 -0
  4. package/dist/commands/workflow/executors/phase-executor.js +1 -3
  5. package/dist/commands/workflow/phase-orchestrator.js +1 -3
  6. package/dist/index.js +3 -2
  7. package/dist/phases/app-store-generation/index.js +1 -3
  8. package/dist/phases/branch-planning/index.js +1 -3
  9. package/dist/phases/bug-fixing/analyzer.js +1 -3
  10. package/dist/phases/code-implementation/index.js +1 -3
  11. package/dist/phases/code-refine/index.js +1 -3
  12. package/dist/phases/code-review/index.js +1 -3
  13. package/dist/phases/code-testing/analyzer.js +1 -3
  14. package/dist/phases/feature-analysis/index.js +1 -3
  15. package/dist/phases/functional-testing/analyzer.js +1 -3
  16. package/dist/phases/growth-analysis/index.js +1 -3
  17. package/dist/phases/pr-execution/index.js +59 -1
  18. package/dist/phases/pr-resolve/__tests__/checklist-learner.test.d.ts +1 -0
  19. package/dist/phases/pr-resolve/__tests__/checklist-learner.test.js +157 -0
  20. package/dist/phases/pr-resolve/__tests__/types.test.d.ts +1 -0
  21. package/dist/phases/pr-resolve/__tests__/types.test.js +43 -0
  22. package/dist/phases/pr-resolve/checklist-learner.d.ts +28 -0
  23. package/dist/phases/pr-resolve/checklist-learner.js +128 -0
  24. package/dist/phases/pr-resolve/index.d.ts +4 -0
  25. package/dist/phases/pr-resolve/index.js +23 -5
  26. package/dist/phases/pr-resolve/prompts.js +2 -1
  27. package/dist/phases/pr-resolve/types.d.ts +18 -0
  28. package/dist/phases/pr-resolve/types.js +14 -0
  29. package/dist/phases/pr-resolve/workspace.d.ts +1 -1
  30. package/dist/phases/pr-resolve/workspace.js +1 -1
  31. package/dist/phases/pr-review/__tests__/review-comments.test.js +4 -2
  32. package/dist/phases/pr-review/index.js +1 -3
  33. package/dist/phases/pr-shared/agent-utils.js +0 -1
  34. package/dist/phases/pr-shared/context.d.ts +1 -1
  35. package/dist/phases/pr-splitting/context.js +20 -15
  36. package/dist/phases/pr-splitting/index.js +1 -3
  37. package/dist/phases/technical-design/index.js +1 -3
  38. package/dist/phases/test-cases-analysis/index.js +1 -3
  39. package/dist/phases/user-stories-analysis/index.js +1 -3
  40. package/dist/services/lifecycle-agent/__tests__/phase-criteria.test.d.ts +4 -0
  41. package/dist/services/lifecycle-agent/__tests__/phase-criteria.test.js +133 -0
  42. package/dist/services/lifecycle-agent/__tests__/transition-rules.test.d.ts +4 -0
  43. package/dist/services/lifecycle-agent/__tests__/transition-rules.test.js +336 -0
  44. package/dist/services/lifecycle-agent/index.d.ts +24 -0
  45. package/dist/services/lifecycle-agent/index.js +25 -0
  46. package/dist/services/lifecycle-agent/phase-criteria.d.ts +57 -0
  47. package/dist/services/lifecycle-agent/phase-criteria.js +335 -0
  48. package/dist/services/lifecycle-agent/transition-rules.d.ts +60 -0
  49. package/dist/services/lifecycle-agent/transition-rules.js +184 -0
  50. package/dist/services/lifecycle-agent/types.d.ts +190 -0
  51. package/dist/services/lifecycle-agent/types.js +12 -0
  52. package/package.json +1 -1
  53. package/.env.local +0 -12
  54. package/dist/api/features/__tests__/regression-prevention.test.d.ts +0 -5
  55. package/dist/api/features/__tests__/regression-prevention.test.js +0 -338
  56. package/dist/api/features/__tests__/status-updater.integration.test.d.ts +0 -5
  57. package/dist/api/features/__tests__/status-updater.integration.test.js +0 -497
  58. package/dist/commands/workflow/pipeline-runner.d.ts +0 -17
  59. package/dist/commands/workflow/pipeline-runner.js +0 -393
  60. package/dist/commands/workflow/runner.d.ts +0 -26
  61. package/dist/commands/workflow/runner.js +0 -119
  62. package/dist/commands/workflow/workflow-runner.d.ts +0 -26
  63. package/dist/commands/workflow/workflow-runner.js +0 -119
  64. package/dist/phases/code-implementation/analyzer-helpers.d.ts +0 -28
  65. package/dist/phases/code-implementation/analyzer-helpers.js +0 -177
  66. package/dist/phases/code-implementation/analyzer.d.ts +0 -32
  67. package/dist/phases/code-implementation/analyzer.js +0 -629
  68. package/dist/phases/code-implementation/context-fetcher.d.ts +0 -17
  69. package/dist/phases/code-implementation/context-fetcher.js +0 -86
  70. package/dist/phases/code-implementation/mcp-server.d.ts +0 -1
  71. package/dist/phases/code-implementation/mcp-server.js +0 -93
  72. package/dist/phases/code-implementation/prompts-improvement.d.ts +0 -5
  73. package/dist/phases/code-implementation/prompts-improvement.js +0 -108
  74. package/dist/phases/code-implementation-verification/verifier.d.ts +0 -31
  75. package/dist/phases/code-implementation-verification/verifier.js +0 -196
  76. package/dist/phases/code-refine/analyzer.d.ts +0 -41
  77. package/dist/phases/code-refine/analyzer.js +0 -561
  78. package/dist/phases/code-refine/context-fetcher.d.ts +0 -94
  79. package/dist/phases/code-refine/context-fetcher.js +0 -423
  80. package/dist/phases/code-refine-verification/analysis/llm-analyzer.d.ts +0 -22
  81. package/dist/phases/code-refine-verification/analysis/llm-analyzer.js +0 -134
  82. package/dist/phases/code-refine-verification/verifier.d.ts +0 -47
  83. package/dist/phases/code-refine-verification/verifier.js +0 -597
  84. package/dist/phases/code-review/analyzer.d.ts +0 -29
  85. package/dist/phases/code-review/analyzer.js +0 -363
  86. package/dist/phases/code-review/context-fetcher.d.ts +0 -92
  87. package/dist/phases/code-review/context-fetcher.js +0 -296
  88. package/dist/phases/feature-analysis/analyzer-helpers.d.ts +0 -10
  89. package/dist/phases/feature-analysis/analyzer-helpers.js +0 -47
  90. package/dist/phases/feature-analysis/analyzer.d.ts +0 -11
  91. package/dist/phases/feature-analysis/analyzer.js +0 -208
  92. package/dist/phases/feature-analysis/context-fetcher.d.ts +0 -26
  93. package/dist/phases/feature-analysis/context-fetcher.js +0 -134
  94. package/dist/phases/feature-analysis/http-fallback.d.ts +0 -20
  95. package/dist/phases/feature-analysis/http-fallback.js +0 -95
  96. package/dist/phases/feature-analysis/mcp-server.d.ts +0 -1
  97. package/dist/phases/feature-analysis/mcp-server.js +0 -144
  98. package/dist/phases/feature-analysis/prompts-improvement.d.ts +0 -8
  99. package/dist/phases/feature-analysis/prompts-improvement.js +0 -109
  100. package/dist/phases/feature-analysis-verification/verifier.d.ts +0 -37
  101. package/dist/phases/feature-analysis-verification/verifier.js +0 -147
  102. package/dist/phases/technical-design/analyzer-helpers.d.ts +0 -25
  103. package/dist/phases/technical-design/analyzer-helpers.js +0 -39
  104. package/dist/phases/technical-design/analyzer.d.ts +0 -21
  105. package/dist/phases/technical-design/analyzer.js +0 -461
  106. package/dist/phases/technical-design/context-fetcher.d.ts +0 -12
  107. package/dist/phases/technical-design/context-fetcher.js +0 -39
  108. package/dist/phases/technical-design/http-fallback.d.ts +0 -17
  109. package/dist/phases/technical-design/http-fallback.js +0 -151
  110. package/dist/phases/technical-design/mcp-server.d.ts +0 -1
  111. package/dist/phases/technical-design/mcp-server.js +0 -157
  112. package/dist/phases/technical-design/prompts-improvement.d.ts +0 -5
  113. package/dist/phases/technical-design/prompts-improvement.js +0 -93
  114. package/dist/phases/technical-design-verification/verifier.d.ts +0 -53
  115. package/dist/phases/technical-design-verification/verifier.js +0 -170
  116. package/dist/services/feature-branches.d.ts +0 -77
  117. package/dist/services/feature-branches.js +0 -205
  118. package/dist/workflow-runner/config/phase-configs.d.ts +0 -5
  119. package/dist/workflow-runner/config/phase-configs.js +0 -120
  120. package/dist/workflow-runner/core/feature-filter.d.ts +0 -16
  121. package/dist/workflow-runner/core/feature-filter.js +0 -46
  122. package/dist/workflow-runner/core/index.d.ts +0 -8
  123. package/dist/workflow-runner/core/index.js +0 -12
  124. package/dist/workflow-runner/core/pipeline-evaluator.d.ts +0 -24
  125. package/dist/workflow-runner/core/pipeline-evaluator.js +0 -32
  126. package/dist/workflow-runner/core/state-manager.d.ts +0 -24
  127. package/dist/workflow-runner/core/state-manager.js +0 -42
  128. package/dist/workflow-runner/core/workflow-logger.d.ts +0 -20
  129. package/dist/workflow-runner/core/workflow-logger.js +0 -65
  130. package/dist/workflow-runner/executors/phase-executor.d.ts +0 -8
  131. package/dist/workflow-runner/executors/phase-executor.js +0 -248
  132. package/dist/workflow-runner/feature-workflow-runner.d.ts +0 -26
  133. package/dist/workflow-runner/feature-workflow-runner.js +0 -119
  134. package/dist/workflow-runner/index.d.ts +0 -2
  135. package/dist/workflow-runner/index.js +0 -2
  136. package/dist/workflow-runner/pipeline-runner.d.ts +0 -17
  137. package/dist/workflow-runner/pipeline-runner.js +0 -393
  138. package/dist/workflow-runner/workflow-processor.d.ts +0 -54
  139. package/dist/workflow-runner/workflow-processor.js +0 -170
@@ -1,147 +0,0 @@
1
- /**
2
- * Checklist verification agent for feature analysis
3
- * This agent independently reviews checklist compliance to ensure objectivity
4
- */
5
- import { query } from '@anthropic-ai/claude-code';
6
- import { logInfo, logError } from '../../utils/logger.js';
7
- import { createChecklistVerificationPrompt, createChecklistVerificationSystemPrompt, } from './prompts.js';
8
- function userMessage(content) {
9
- return {
10
- type: 'user',
11
- message: { role: 'user', content: content },
12
- };
13
- }
14
- async function* prompt(verificationPrompt) {
15
- yield userMessage(verificationPrompt);
16
- }
17
- /**
18
- * Verify checklist compliance using an independent AI agent
19
- * This agent acts as a "challenger" to validate the claims made by the analysis agent
20
- */
21
- export async function verifyChecklistCompliance(options, config) {
22
- const { checklistContext, analysisContext, createdUserStories, createdTestCases, verbose, } = options;
23
- const totalChecklistItems = checklistContext.checklists.reduce((sum, checklist) => sum + checklist.items.length, 0);
24
- if (verbose) {
25
- logInfo('🔍 Starting checklist verification...');
26
- logInfo(` Verifying ${totalChecklistItems} checklist items`);
27
- }
28
- try {
29
- const systemPrompt = createChecklistVerificationSystemPrompt(config);
30
- const verificationPrompt = createChecklistVerificationPrompt({
31
- checklistContext,
32
- analysisContext,
33
- createdUserStories,
34
- createdTestCases,
35
- });
36
- let lastAssistantResponse = '';
37
- let verificationResult = null;
38
- if (verbose) {
39
- logInfo('🤖 Starting verification agent query...');
40
- }
41
- // Use Claude Code SDK for verification
42
- for await (const message of query({
43
- prompt: prompt(verificationPrompt),
44
- options: {
45
- appendSystemPrompt: systemPrompt,
46
- model: config.claude.model || 'sonnet',
47
- maxTurns: 100,
48
- permissionMode: 'bypassPermissions',
49
- },
50
- })) {
51
- if (verbose) {
52
- logInfo(` Received message type: ${message.type}`);
53
- }
54
- // Capture assistant responses
55
- if (message.type === 'assistant' && message.message?.content) {
56
- for (const content of message.message.content) {
57
- if (content.type === 'text') {
58
- lastAssistantResponse += content.text + '\n';
59
- if (verbose) {
60
- console.log(`\n🔍 ${content.text}`);
61
- }
62
- }
63
- }
64
- }
65
- if (message.type === 'result') {
66
- if (message.subtype === 'success') {
67
- logInfo('\n✅ Verification completed, parsing results...');
68
- try {
69
- const responseText = message.result || lastAssistantResponse;
70
- // Try to extract JSON from markdown code block
71
- const jsonBlockMatch = responseText.match(/```json\s*\n([\s\S]*?)\n\s*```/);
72
- let jsonResult = null;
73
- if (jsonBlockMatch) {
74
- jsonResult = JSON.parse(jsonBlockMatch[1]);
75
- }
76
- else {
77
- jsonResult = JSON.parse(responseText);
78
- }
79
- if (jsonResult && jsonResult.verification) {
80
- verificationResult = jsonResult.verification;
81
- }
82
- else {
83
- throw new Error('Invalid verification JSON structure');
84
- }
85
- }
86
- catch (error) {
87
- logError(`Failed to parse verification result: ${error}`);
88
- // Return default "uncertain" result
89
- verificationResult = createUncertainVerificationResult(checklistContext, 'Failed to parse verification response');
90
- }
91
- }
92
- else {
93
- logError(`\n⚠️ Verification incomplete: ${message.subtype}`);
94
- verificationResult = createUncertainVerificationResult(checklistContext, `Verification incomplete: ${message.subtype}`);
95
- }
96
- }
97
- }
98
- if (!verificationResult) {
99
- verificationResult = createUncertainVerificationResult(checklistContext, 'No verification result received');
100
- }
101
- if (verbose) {
102
- logInfo('\n📊 Verification Summary:');
103
- logInfo(` Total items: ${verificationResult.total_items}`);
104
- logInfo(` ✅ Confirmed: ${verificationResult.confirmed_count}`);
105
- logInfo(` ❌ Rejected: ${verificationResult.rejected_count}`);
106
- logInfo(` ⚠️ Uncertain: ${verificationResult.uncertain_count}`);
107
- logInfo(` Summary: ${verificationResult.summary}`);
108
- if (verificationResult.rejected_count > 0) {
109
- logInfo('\n❌ Rejected items:');
110
- verificationResult.item_verifications
111
- .filter((v) => v.verification_status === 'rejected')
112
- .forEach((v) => {
113
- logInfo(` - ${v.checklist_item_id}`);
114
- logInfo(` Reason: ${v.verification_reason}`);
115
- });
116
- }
117
- }
118
- return verificationResult;
119
- }
120
- catch (error) {
121
- logError(`Checklist verification failed: ${error instanceof Error ? error.message : String(error)}`);
122
- return createUncertainVerificationResult(checklistContext, `Verification error: ${error instanceof Error ? error.message : String(error)}`);
123
- }
124
- }
125
- /**
126
- * Create a default "uncertain" verification result when verification fails
127
- */
128
- function createUncertainVerificationResult(checklistContext, reason) {
129
- // Get all checklist items
130
- const allItems = checklistContext.checklists.flatMap((checklist) => checklist.items.map((item) => ({
131
- checklist_item_id: item.id,
132
- })));
133
- return {
134
- all_verified: false,
135
- total_items: allItems.length,
136
- confirmed_count: 0,
137
- rejected_count: 0,
138
- uncertain_count: allItems.length,
139
- item_verifications: allItems.map((item) => ({
140
- checklist_item_id: item.checklist_item_id,
141
- is_satisfied: false,
142
- verification_status: 'uncertain',
143
- verification_reason: reason,
144
- })),
145
- summary: `Verification could not be completed: ${reason}`,
146
- };
147
- }
@@ -1,25 +0,0 @@
1
- import { type ChecklistVerificationResult } from '../technical-design-verification/agent.js';
2
- export interface TechnicalDesignResult {
3
- featureId: string;
4
- technicalDesign: string | null;
5
- status: 'success' | 'error';
6
- summary: string;
7
- verificationResult?: ChecklistVerificationResult;
8
- iterations?: number;
9
- data?: {
10
- checklist_item_results?: any[];
11
- [key: string]: any;
12
- };
13
- }
14
- /**
15
- * Build successful design result
16
- */
17
- export declare function buildDesignResult(featureId: string, technicalDesign: string, summary: string, iterations: number, checklistItemResults?: any[]): TechnicalDesignResult;
18
- /**
19
- * Build verification failure result
20
- */
21
- export declare function buildVerificationFailureResult(featureId: string, technicalDesign: string, verificationResult: ChecklistVerificationResult, iterations: number): TechnicalDesignResult;
22
- /**
23
- * Build error result when no design was generated
24
- */
25
- export declare function buildNoResultsError(featureId: string): TechnicalDesignResult;
@@ -1,39 +0,0 @@
1
- /**
2
- * Build successful design result
3
- */
4
- export function buildDesignResult(featureId, technicalDesign, summary, iterations, checklistItemResults) {
5
- return {
6
- featureId,
7
- technicalDesign,
8
- status: 'success',
9
- summary,
10
- iterations,
11
- data: checklistItemResults
12
- ? { checklist_item_results: checklistItemResults }
13
- : undefined,
14
- };
15
- }
16
- /**
17
- * Build verification failure result
18
- */
19
- export function buildVerificationFailureResult(featureId, technicalDesign, verificationResult, iterations) {
20
- return {
21
- featureId,
22
- technicalDesign,
23
- status: 'error',
24
- summary: `Checklist verification failed after ${iterations} iterations: ${verificationResult.summary}`,
25
- verificationResult,
26
- iterations,
27
- };
28
- }
29
- /**
30
- * Build error result when no design was generated
31
- */
32
- export function buildNoResultsError(featureId) {
33
- return {
34
- featureId,
35
- technicalDesign: null,
36
- status: 'error',
37
- summary: 'Failed to generate technical design - no valid result received',
38
- };
39
- }
@@ -1,21 +0,0 @@
1
- import { EdsgerConfig } from '../../types/index.js';
2
- import { ChecklistPhaseContext } from '../../services/checklist.js';
3
- export interface TechnicalDesignOptions {
4
- featureId: string;
5
- verbose?: boolean;
6
- maxVerificationIterations?: number;
7
- }
8
- export interface TechnicalDesignResult {
9
- featureId: string;
10
- technicalDesign: string | null;
11
- status: 'success' | 'error';
12
- summary: string;
13
- verificationResult?: any;
14
- iterations?: number;
15
- savedViaHttp?: boolean;
16
- data?: {
17
- checklist_item_results?: any[];
18
- [key: string]: any;
19
- };
20
- }
21
- export declare const generateTechnicalDesign: (options: TechnicalDesignOptions, config: EdsgerConfig, checklistContext?: ChecklistPhaseContext | null) => Promise<TechnicalDesignResult>;