osagent-cli 0.1.37 → 0.1.39

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.
@@ -37,128 +37,171 @@ export function useConsultationGenerator({ streamingState, currentPrompt, }) {
37
37
  }
38
38
  }, [streamingState, currentPrompt, isActive, consultationMode, addQuestion, clearContext]);
39
39
  }
40
+ const QUESTION_PATTERNS = [
41
+ // API/Backend patterns
42
+ {
43
+ patterns: [/\b(api|endpoint|route|rest|graphql|server)\b/i],
44
+ questions: [
45
+ { question: 'Should this API be public or internal-only?', priority: 'high', category: 'scope' },
46
+ { question: 'What error handling approach should be used?', priority: 'medium', category: 'requirements' },
47
+ { question: 'Should rate limiting be implemented?', priority: 'low', category: 'requirements' },
48
+ ],
49
+ },
50
+ // Authentication/Security patterns
51
+ {
52
+ patterns: [/\b(auth|login|session|token|jwt|oauth|password|credential)\b/i],
53
+ questions: [
54
+ { question: 'What should happen on authentication failure?', priority: 'high', category: 'requirements' },
55
+ { question: 'Should there be password strength requirements?', priority: 'medium', category: 'requirements' },
56
+ { question: 'How long should sessions last?', priority: 'low', category: 'preference' },
57
+ ],
58
+ },
59
+ // Database/Storage patterns
60
+ {
61
+ patterns: [/\b(database|db|sql|mongo|redis|cache|storage|persist)\b/i],
62
+ questions: [
63
+ { question: 'Should data be indexed for specific queries?', priority: 'medium', category: 'architecture' },
64
+ { question: 'What happens when storage limits are reached?', priority: 'low', category: 'requirements' },
65
+ ],
66
+ },
67
+ // UI/Component patterns
68
+ {
69
+ patterns: [/\b(component|button|form|modal|dialog|input|ui|widget)\b/i],
70
+ antiPatterns: [/\b(fix|bug|error)\b/i], // Don't ask UI questions for bug fixes
71
+ questions: [
72
+ { question: 'Should this be accessible (ARIA labels, keyboard nav)?', priority: 'high', category: 'requirements' },
73
+ { question: 'Should loading and error states be shown?', priority: 'medium', category: 'requirements' },
74
+ { question: 'Should animations/transitions be used?', priority: 'low', category: 'preference' },
75
+ ],
76
+ },
77
+ // Bug fix patterns
78
+ {
79
+ patterns: [/\b(fix|bug|broken|crash|fail|error|not working|doesn't work)\b/i],
80
+ questions: [
81
+ { question: 'Can you reproduce this consistently?', priority: 'high', category: 'clarification' },
82
+ { question: 'When did this start happening?', priority: 'medium', category: 'clarification' },
83
+ { question: 'Does this affect all users or specific cases?', priority: 'medium', category: 'scope' },
84
+ ],
85
+ },
86
+ // Performance patterns
87
+ {
88
+ patterns: [/\b(slow|performance|optimize|fast|speed|latency|lag)\b/i],
89
+ questions: [
90
+ { question: 'What is the target performance metric?', priority: 'high', category: 'requirements' },
91
+ { question: 'Should this trade off memory for speed?', priority: 'medium', category: 'architecture' },
92
+ { question: 'Are there specific operations that are slow?', priority: 'medium', category: 'clarification' },
93
+ ],
94
+ },
95
+ // Refactoring patterns
96
+ {
97
+ patterns: [/\b(refactor|clean|reorganize|restructure|rewrite)\b/i],
98
+ questions: [
99
+ { question: 'Can existing tests verify the refactor works?', priority: 'high', category: 'requirements' },
100
+ { question: 'Should the external API remain unchanged?', priority: 'high', category: 'requirements' },
101
+ ],
102
+ },
103
+ // Testing patterns
104
+ {
105
+ patterns: [/\b(test|spec|coverage|mock|stub|unit|integration)\b/i],
106
+ questions: [
107
+ { question: 'Should edge cases and error scenarios be tested?', priority: 'medium', category: 'requirements' },
108
+ { question: 'Should mocks be used for external dependencies?', priority: 'medium', category: 'architecture' },
109
+ ],
110
+ },
111
+ // Migration/Update patterns
112
+ {
113
+ patterns: [/\b(migrate|upgrade|update|version|deprecate|breaking)\b/i],
114
+ questions: [
115
+ { question: 'Is backward compatibility required?', priority: 'high', category: 'requirements' },
116
+ { question: 'Should a migration script be provided?', priority: 'medium', category: 'requirements' },
117
+ ],
118
+ },
119
+ // File/Data processing patterns
120
+ {
121
+ patterns: [/\b(file|upload|download|import|export|csv|json|xml|parse)\b/i],
122
+ questions: [
123
+ { question: 'What is the maximum file size expected?', priority: 'medium', category: 'requirements' },
124
+ { question: 'How should malformed data be handled?', priority: 'medium', category: 'requirements' },
125
+ ],
126
+ },
127
+ // Queue/Async patterns
128
+ {
129
+ patterns: [/\b(queue|async|background|job|worker|cron|schedule)\b/i],
130
+ questions: [
131
+ { question: 'What should happen if a job fails?', priority: 'high', category: 'requirements' },
132
+ { question: 'Should failed jobs be retried automatically?', priority: 'medium', category: 'requirements' },
133
+ ],
134
+ },
135
+ // Email/Notification patterns
136
+ {
137
+ patterns: [/\b(email|notification|alert|message|sms|push)\b/i],
138
+ questions: [
139
+ { question: 'Should users be able to opt out?', priority: 'medium', category: 'requirements' },
140
+ { question: 'What templates or formatting should be used?', priority: 'low', category: 'preference' },
141
+ ],
142
+ },
143
+ ];
40
144
  /**
41
145
  * Analyzes the user's prompt and generates relevant consultation questions.
42
- * In a production system, this would use NLP or the AI to generate questions.
146
+ * Uses pattern matching to detect context and generate appropriate questions.
43
147
  */
44
148
  function analyzePromptForQuestions(prompt) {
45
149
  const questions = [];
46
- const lowerPrompt = prompt.toLowerCase();
47
- // Detect different types of requests and generate appropriate questions
48
- // Code creation/feature requests
49
- if (lowerPrompt.includes('create') ||
50
- lowerPrompt.includes('build') ||
51
- lowerPrompt.includes('implement') ||
52
- lowerPrompt.includes('add')) {
53
- // Check for specific patterns
54
- if (lowerPrompt.includes('api') || lowerPrompt.includes('endpoint')) {
55
- questions.push({
56
- question: 'Should the API follow REST conventions or use GraphQL?',
57
- priority: 'high',
58
- category: 'architecture',
59
- });
60
- questions.push({
61
- question: 'What authentication method should be used?',
62
- context: 'JWT, API keys, OAuth, or none',
63
- priority: 'medium',
64
- category: 'requirements',
65
- });
150
+ const matchedCategories = new Set();
151
+ // Extract file paths mentioned in the prompt
152
+ const filePathMatch = prompt.match(/[\/\\][\w\-\/\\]+\.\w+/g);
153
+ const hasFilePaths = filePathMatch && filePathMatch.length > 0;
154
+ // Check each pattern
155
+ for (const matcher of QUESTION_PATTERNS) {
156
+ // Check anti-patterns first
157
+ if (matcher.antiPatterns?.some(p => p.test(prompt))) {
158
+ continue;
66
159
  }
67
- if (lowerPrompt.includes('component') || lowerPrompt.includes('ui')) {
160
+ // Check if any pattern matches
161
+ if (matcher.patterns.some(p => p.test(prompt))) {
162
+ for (const q of matcher.questions) {
163
+ // Avoid duplicate categories for variety
164
+ if (!matchedCategories.has(q.category) || questions.length < 2) {
165
+ questions.push(q);
166
+ matchedCategories.add(q.category);
167
+ }
168
+ if (questions.length >= 4)
169
+ break;
170
+ }
171
+ }
172
+ if (questions.length >= 4)
173
+ break;
174
+ }
175
+ // Add contextual questions based on prompt characteristics
176
+ if (questions.length < 2) {
177
+ // Multi-file operation detected
178
+ if (hasFilePaths && filePathMatch.length > 1) {
68
179
  questions.push({
69
- question: 'Should this component be reusable/generic?',
180
+ question: 'Should changes be atomic (all or nothing)?',
70
181
  priority: 'medium',
71
- category: 'architecture',
182
+ category: 'requirements',
72
183
  });
73
184
  }
74
- if (lowerPrompt.includes('database') || lowerPrompt.includes('data')) {
185
+ // Long prompt suggests complex request
186
+ if (prompt.length > 200) {
75
187
  questions.push({
76
- question: 'What database or storage solution should be used?',
77
- priority: 'high',
78
- category: 'architecture',
188
+ question: 'Should I break this into smaller steps?',
189
+ priority: 'low',
190
+ category: 'scope',
79
191
  });
80
192
  }
81
- // Generic creation questions
82
- if (questions.length === 0) {
193
+ // Question marks in prompt suggest uncertainty
194
+ if (prompt.includes('?')) {
83
195
  questions.push({
84
- question: 'Are there existing patterns in this project I should follow?',
85
- priority: 'medium',
86
- category: 'architecture',
196
+ question: 'Would you like me to explain my approach first?',
197
+ priority: 'low',
198
+ category: 'clarification',
87
199
  });
88
200
  }
89
201
  }
90
- // Bug fix requests
91
- if (lowerPrompt.includes('fix') ||
92
- lowerPrompt.includes('bug') ||
93
- lowerPrompt.includes('error') ||
94
- lowerPrompt.includes('issue')) {
95
- questions.push({
96
- question: 'Can you describe the expected behavior vs actual behavior?',
97
- priority: 'high',
98
- category: 'clarification',
99
- });
100
- questions.push({
101
- question: 'Are there any error messages or logs available?',
102
- priority: 'medium',
103
- category: 'clarification',
104
- });
105
- }
106
- // Refactoring requests
107
- if (lowerPrompt.includes('refactor') ||
108
- lowerPrompt.includes('improve') ||
109
- lowerPrompt.includes('optimize')) {
110
- questions.push({
111
- question: 'What specific aspects need improvement?',
112
- context: 'Performance, readability, maintainability',
113
- priority: 'high',
114
- category: 'requirements',
115
- });
116
- questions.push({
117
- question: 'Should backward compatibility be maintained?',
118
- priority: 'medium',
119
- category: 'requirements',
120
- });
121
- }
122
- // Testing requests
123
- if (lowerPrompt.includes('test') ||
124
- lowerPrompt.includes('testing')) {
125
- questions.push({
126
- question: 'What testing framework should be used?',
127
- priority: 'medium',
128
- category: 'preference',
129
- });
130
- questions.push({
131
- question: 'Should tests include edge cases and error scenarios?',
132
- priority: 'low',
133
- category: 'requirements',
134
- });
135
- }
136
- // Design/style requests
137
- if (lowerPrompt.includes('style') ||
138
- lowerPrompt.includes('design') ||
139
- lowerPrompt.includes('beautiful') ||
140
- lowerPrompt.includes('sexy') ||
141
- lowerPrompt.includes('ui') ||
142
- lowerPrompt.includes('ux')) {
143
- questions.push({
144
- question: 'Are there brand guidelines or color schemes to follow?',
145
- priority: 'medium',
146
- category: 'preference',
147
- });
148
- questions.push({
149
- question: 'Should the design be mobile-responsive?',
150
- priority: 'medium',
151
- category: 'requirements',
152
- });
153
- }
154
- // If no specific questions, add generic ones for longer prompts
155
- if (questions.length === 0 && prompt.length > 50) {
156
- questions.push({
157
- question: 'Are there any constraints or preferences I should know about?',
158
- priority: 'low',
159
- category: 'clarification',
160
- });
161
- }
202
+ // Sort by priority and limit
203
+ const priorityOrder = { high: 0, medium: 1, low: 2 };
204
+ questions.sort((a, b) => priorityOrder[a.priority] - priorityOrder[b.priority]);
162
205
  return questions.slice(0, 3); // Max 3 questions
163
206
  }
164
207
  //# sourceMappingURL=useConsultationGenerator.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useConsultationGenerator.js","sourceRoot":"","sources":["../../../../src/ui/hooks/useConsultationGenerator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useConsultationGenerator.js","sourceRoot":"","sources":["../../../../src/ui/hooks/useConsultationGenerator.ts"],"names":[],"mappings":"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"}