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.
- package/dist/package.json +1 -1
- package/dist/src/generated/git-commit.d.ts +2 -2
- package/dist/src/generated/git-commit.js +2 -2
- package/dist/src/ui/components/ConsultationDisplay.d.ts +1 -1
- package/dist/src/ui/components/ConsultationDisplay.js +1 -0
- package/dist/src/ui/components/ConsultationDisplay.js.map +1 -1
- package/dist/src/ui/components/ConsultationPanel.js +1 -0
- package/dist/src/ui/components/ConsultationPanel.js.map +1 -1
- package/dist/src/ui/components/DialogManager.js +33 -33
- package/dist/src/ui/components/DialogManager.js.map +1 -1
- package/dist/src/ui/components/QueueStatusBar.d.ts +17 -0
- package/dist/src/ui/components/QueueStatusBar.js +25 -0
- package/dist/src/ui/components/QueueStatusBar.js.map +1 -0
- package/dist/src/ui/components/TaskMasterPanel.js +3 -2
- package/dist/src/ui/components/TaskMasterPanel.js.map +1 -1
- package/dist/src/ui/components/messages/CompressionMessage.d.ts +3 -1
- package/dist/src/ui/components/messages/CompressionMessage.js +14 -2
- package/dist/src/ui/components/messages/CompressionMessage.js.map +1 -1
- package/dist/src/ui/contexts/ConsultationContext.d.ts +1 -1
- package/dist/src/ui/hooks/useConsultationGenerator.js +148 -105
- package/dist/src/ui/hooks/useConsultationGenerator.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
|
@@ -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
|
-
*
|
|
146
|
+
* Uses pattern matching to detect context and generate appropriate questions.
|
|
43
147
|
*/
|
|
44
148
|
function analyzePromptForQuestions(prompt) {
|
|
45
149
|
const questions = [];
|
|
46
|
-
const
|
|
47
|
-
//
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
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
|
|
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
|
|
180
|
+
question: 'Should changes be atomic (all or nothing)?',
|
|
70
181
|
priority: 'medium',
|
|
71
|
-
category: '
|
|
182
|
+
category: 'requirements',
|
|
72
183
|
});
|
|
73
184
|
}
|
|
74
|
-
|
|
185
|
+
// Long prompt suggests complex request
|
|
186
|
+
if (prompt.length > 200) {
|
|
75
187
|
questions.push({
|
|
76
|
-
question: '
|
|
77
|
-
priority: '
|
|
78
|
-
category: '
|
|
188
|
+
question: 'Should I break this into smaller steps?',
|
|
189
|
+
priority: 'low',
|
|
190
|
+
category: 'scope',
|
|
79
191
|
});
|
|
80
192
|
}
|
|
81
|
-
//
|
|
82
|
-
if (
|
|
193
|
+
// Question marks in prompt suggest uncertainty
|
|
194
|
+
if (prompt.includes('?')) {
|
|
83
195
|
questions.push({
|
|
84
|
-
question: '
|
|
85
|
-
priority: '
|
|
86
|
-
category: '
|
|
196
|
+
question: 'Would you like me to explain my approach first?',
|
|
197
|
+
priority: 'low',
|
|
198
|
+
category: 'clarification',
|
|
87
199
|
});
|
|
88
200
|
}
|
|
89
201
|
}
|
|
90
|
-
//
|
|
91
|
-
|
|
92
|
-
|
|
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":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AAOrE;;;;GAIG;AACH,MAAM,UAAU,wBAAwB,CAAC,EACvC,cAAc,EACd,aAAa,GACgB;IAC7B,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,gBAAgB,EAAE,YAAY,EAAE,GAAG,eAAe,EAAE,CAAC;IACpF,MAAM,aAAa,GAAG,MAAM,CAAqB,SAAS,CAAC,CAAC;IAC5D,MAAM,qBAAqB,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAE5C,SAAS,CAAC,GAAG,EAAE;QACb,iEAAiE;QACjE,sDAAsD;QAEtD,8DAA8D;QAC9D,IACE,cAAc,KAAK,cAAc,CAAC,UAAU;YAC5C,aAAa;YACb,aAAa,KAAK,aAAa,CAAC,OAAO;YACvC,CAAC,qBAAqB,CAAC,OAAO,EAC9B,CAAC;YACD,aAAa,CAAC,OAAO,GAAG,aAAa,CAAC;YACtC,qBAAqB,CAAC,OAAO,GAAG,IAAI,CAAC;YAErC,qDAAqD;YACrD,MAAM,SAAS,GAAG,yBAAyB,CAAC,aAAa,CAAC,CAAC;YAE3D,4CAA4C;YAC5C,YAAY,EAAE,CAAC;YACf,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3C,CAAC;QAED,wBAAwB;QACxB,IAAI,cAAc,KAAK,cAAc,CAAC,IAAI,EAAE,CAAC;YAC3C,qBAAqB,CAAC,OAAO,GAAG,KAAK,CAAC;QACxC,CAAC;IACH,CAAC,EAAE,CAAC,cAAc,EAAE,aAAa,EAAE,QAAQ,EAAE,gBAAgB,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC,CAAC;AAC7F,CAAC;
|
|
1
|
+
{"version":3,"file":"useConsultationGenerator.js","sourceRoot":"","sources":["../../../../src/ui/hooks/useConsultationGenerator.ts"],"names":[],"mappings":"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"}
|