mycontext-cli 1.0.95 → 2.0.1
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/README.md +268 -295
- package/dist/agents/implementations/ClaudeAgentWorkflow.d.ts.map +1 -1
- package/dist/agents/implementations/ClaudeAgentWorkflow.js +38 -3
- package/dist/agents/implementations/ClaudeAgentWorkflow.js.map +1 -1
- package/dist/agents/implementations/WorkflowAgent.d.ts +8 -0
- package/dist/agents/implementations/WorkflowAgent.d.ts.map +1 -1
- package/dist/agents/implementations/WorkflowAgent.js +105 -11
- package/dist/agents/implementations/WorkflowAgent.js.map +1 -1
- package/dist/agents/interfaces/SubAgent.d.ts +5 -0
- package/dist/agents/interfaces/SubAgent.d.ts.map +1 -1
- package/dist/commands/build-app.d.ts +5 -0
- package/dist/commands/build-app.d.ts.map +1 -1
- package/dist/commands/build-app.js +127 -4
- package/dist/commands/build-app.js.map +1 -1
- package/dist/commands/compile-prd.d.ts.map +1 -1
- package/dist/commands/compile-prd.js +18 -54
- package/dist/commands/compile-prd.js.map +1 -1
- package/dist/commands/enhance.d.ts +21 -0
- package/dist/commands/enhance.d.ts.map +1 -1
- package/dist/commands/enhance.js +155 -12
- package/dist/commands/enhance.js.map +1 -1
- package/dist/commands/generate-components.d.ts +43 -0
- package/dist/commands/generate-components.d.ts.map +1 -1
- package/dist/commands/generate-components.js +270 -0
- package/dist/commands/generate-components.js.map +1 -1
- package/dist/constants/fileNames.d.ts +68 -0
- package/dist/constants/fileNames.d.ts.map +1 -0
- package/dist/constants/fileNames.js +102 -0
- package/dist/constants/fileNames.js.map +1 -0
- package/dist/interfaces/AIClient.d.ts +198 -0
- package/dist/interfaces/AIClient.d.ts.map +1 -0
- package/dist/interfaces/AIClient.js +40 -0
- package/dist/interfaces/AIClient.js.map +1 -0
- package/dist/package.json +4 -3
- package/dist/types/index.d.ts +423 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/utils/agentDefinitions.d.ts +60 -0
- package/dist/utils/agentDefinitions.d.ts.map +1 -0
- package/dist/utils/agentDefinitions.js +344 -0
- package/dist/utils/agentDefinitions.js.map +1 -0
- package/dist/utils/aiClientFactory.d.ts +93 -0
- package/dist/utils/aiClientFactory.d.ts.map +1 -0
- package/dist/utils/aiClientFactory.js +290 -0
- package/dist/utils/aiClientFactory.js.map +1 -0
- package/dist/utils/aiClientRouter.d.ts +121 -0
- package/dist/utils/aiClientRouter.d.ts.map +1 -0
- package/dist/utils/aiClientRouter.js +401 -0
- package/dist/utils/aiClientRouter.js.map +1 -0
- package/dist/utils/buildValidator.d.ts +72 -0
- package/dist/utils/buildValidator.d.ts.map +1 -0
- package/dist/utils/buildValidator.js +338 -0
- package/dist/utils/buildValidator.js.map +1 -0
- package/dist/utils/claudeAgentClient.d.ts +79 -11
- package/dist/utils/claudeAgentClient.d.ts.map +1 -1
- package/dist/utils/claudeAgentClient.js +306 -1
- package/dist/utils/claudeAgentClient.js.map +1 -1
- package/dist/utils/claudeClient.d.ts +7 -3
- package/dist/utils/claudeClient.d.ts.map +1 -1
- package/dist/utils/claudeClient.js +28 -5
- package/dist/utils/claudeClient.js.map +1 -1
- package/dist/utils/completeArchitectureEngine.d.ts +67 -0
- package/dist/utils/completeArchitectureEngine.d.ts.map +1 -0
- package/dist/utils/completeArchitectureEngine.js +329 -0
- package/dist/utils/completeArchitectureEngine.js.map +1 -0
- package/dist/utils/contextLoader.d.ts +1 -12
- package/dist/utils/contextLoader.d.ts.map +1 -1
- package/dist/utils/contextLoader.js +29 -150
- package/dist/utils/contextLoader.js.map +1 -1
- package/dist/utils/contextManager.d.ts +2 -12
- package/dist/utils/contextManager.d.ts.map +1 -1
- package/dist/utils/contextManager.js +11 -6
- package/dist/utils/contextManager.js.map +1 -1
- package/dist/utils/mcpTools.d.ts +164 -0
- package/dist/utils/mcpTools.d.ts.map +1 -0
- package/dist/utils/mcpTools.js +385 -0
- package/dist/utils/mcpTools.js.map +1 -0
- package/dist/utils/progressTracker.d.ts +121 -0
- package/dist/utils/progressTracker.d.ts.map +1 -0
- package/dist/utils/progressTracker.js +334 -0
- package/dist/utils/progressTracker.js.map +1 -0
- package/dist/utils/routeGenerator.d.ts +56 -0
- package/dist/utils/routeGenerator.d.ts.map +1 -0
- package/dist/utils/routeGenerator.js +231 -0
- package/dist/utils/routeGenerator.js.map +1 -0
- package/dist/utils/serverActionGenerator.d.ts +56 -0
- package/dist/utils/serverActionGenerator.d.ts.map +1 -0
- package/dist/utils/serverActionGenerator.js +258 -0
- package/dist/utils/serverActionGenerator.js.map +1 -0
- package/dist/utils/streamingHandler.d.ts +98 -0
- package/dist/utils/streamingHandler.d.ts.map +1 -0
- package/dist/utils/streamingHandler.js +259 -0
- package/dist/utils/streamingHandler.js.map +1 -0
- package/dist/utils/validationGates.d.ts +58 -0
- package/dist/utils/validationGates.d.ts.map +1 -0
- package/dist/utils/validationGates.js +390 -0
- package/dist/utils/validationGates.js.map +1 -0
- package/package.json +4 -3
|
@@ -0,0 +1,259 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Streaming Handler for Claude Agent SDK
|
|
4
|
+
*
|
|
5
|
+
* Handles streaming messages, progress tracking, and user feedback
|
|
6
|
+
* for long-running agent operations.
|
|
7
|
+
*/
|
|
8
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
9
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.StreamingHandler = void 0;
|
|
13
|
+
exports.streamWithProgress = streamWithProgress;
|
|
14
|
+
exports.simpleStream = simpleStream;
|
|
15
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
16
|
+
const ora_1 = __importDefault(require("ora"));
|
|
17
|
+
/**
|
|
18
|
+
* Handles streaming from Claude Agent SDK with progress tracking
|
|
19
|
+
*/
|
|
20
|
+
class StreamingHandler {
|
|
21
|
+
constructor(options = {}) {
|
|
22
|
+
this.spinner = null;
|
|
23
|
+
this.stats = {
|
|
24
|
+
totalTokens: 0,
|
|
25
|
+
inputTokens: 0,
|
|
26
|
+
outputTokens: 0,
|
|
27
|
+
toolsUsed: [],
|
|
28
|
+
duration: 0,
|
|
29
|
+
messagesProcessed: 0,
|
|
30
|
+
};
|
|
31
|
+
this.startTime = 0;
|
|
32
|
+
this.options = {
|
|
33
|
+
showProgress: options.showProgress !== false,
|
|
34
|
+
showTokens: options.showTokens !== false,
|
|
35
|
+
showToolUsage: options.showToolUsage !== false,
|
|
36
|
+
...options,
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Start streaming handler
|
|
41
|
+
*/
|
|
42
|
+
start(message = 'Processing...') {
|
|
43
|
+
this.startTime = Date.now();
|
|
44
|
+
if (this.options.showProgress) {
|
|
45
|
+
this.spinner = (0, ora_1.default)(message).start();
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Process streaming messages from query
|
|
50
|
+
*/
|
|
51
|
+
async processStream(query) {
|
|
52
|
+
let fullResponse = '';
|
|
53
|
+
try {
|
|
54
|
+
for await (const message of query) {
|
|
55
|
+
this.stats.messagesProcessed++;
|
|
56
|
+
// Handle different message types
|
|
57
|
+
switch (message.type) {
|
|
58
|
+
case 'assistant':
|
|
59
|
+
const text = this.handleAssistantMessage(message);
|
|
60
|
+
fullResponse += text;
|
|
61
|
+
break;
|
|
62
|
+
case 'result':
|
|
63
|
+
this.handleToolResult(message);
|
|
64
|
+
break;
|
|
65
|
+
case 'system':
|
|
66
|
+
this.handleSystemMessage(message);
|
|
67
|
+
break;
|
|
68
|
+
default:
|
|
69
|
+
// Handle other message types
|
|
70
|
+
if (message.type === 'partial_assistant') {
|
|
71
|
+
this.handlePartialMessage(message);
|
|
72
|
+
}
|
|
73
|
+
else if (message.type === 'permission_denial') {
|
|
74
|
+
this.handlePermissionDenial(message);
|
|
75
|
+
}
|
|
76
|
+
break;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
this.stats.duration = Date.now() - this.startTime;
|
|
80
|
+
this.complete();
|
|
81
|
+
return fullResponse;
|
|
82
|
+
}
|
|
83
|
+
catch (error) {
|
|
84
|
+
this.error(error);
|
|
85
|
+
throw error;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Handle assistant message
|
|
90
|
+
*/
|
|
91
|
+
handleAssistantMessage(message) {
|
|
92
|
+
let text = '';
|
|
93
|
+
if (message.message && message.message.content) {
|
|
94
|
+
for (const content of message.message.content) {
|
|
95
|
+
if (content.type === 'text') {
|
|
96
|
+
text += content.text;
|
|
97
|
+
// Stream tokens if enabled
|
|
98
|
+
if (this.options.onToken) {
|
|
99
|
+
this.options.onToken(content.text);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
else if (content.type === 'tool_use') {
|
|
103
|
+
// Track tool usage
|
|
104
|
+
const toolName = content.name;
|
|
105
|
+
if (!this.stats.toolsUsed.includes(toolName)) {
|
|
106
|
+
this.stats.toolsUsed.push(toolName);
|
|
107
|
+
}
|
|
108
|
+
if (this.options.showToolUsage) {
|
|
109
|
+
this.updateSpinner(`🔧 Using tool: ${toolName}`);
|
|
110
|
+
}
|
|
111
|
+
if (this.options.onToolUse) {
|
|
112
|
+
this.options.onToolUse(toolName, content.input);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
// Update token stats if available
|
|
117
|
+
if (message.message.usage) {
|
|
118
|
+
this.stats.inputTokens += message.message.usage.input_tokens || 0;
|
|
119
|
+
this.stats.outputTokens += message.message.usage.output_tokens || 0;
|
|
120
|
+
this.stats.totalTokens = this.stats.inputTokens + this.stats.outputTokens;
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
return text;
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Handle partial assistant message (streaming)
|
|
127
|
+
*/
|
|
128
|
+
handlePartialMessage(message) {
|
|
129
|
+
if (message.message && message.message.content) {
|
|
130
|
+
for (const content of message.message.content) {
|
|
131
|
+
if (content.type === 'text') {
|
|
132
|
+
// Update progress with partial text
|
|
133
|
+
const preview = content.text.substring(0, 50);
|
|
134
|
+
if (this.options.showProgress) {
|
|
135
|
+
this.updateSpinner(`📝 ${preview}...`);
|
|
136
|
+
}
|
|
137
|
+
if (this.options.onProgress) {
|
|
138
|
+
this.options.onProgress(content.text);
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* Handle tool result message
|
|
146
|
+
*/
|
|
147
|
+
handleToolResult(message) {
|
|
148
|
+
if (this.options.showToolUsage && message.content) {
|
|
149
|
+
const preview = JSON.stringify(message.content).substring(0, 50);
|
|
150
|
+
this.updateSpinner(`✅ Tool result: ${preview}...`);
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* Handle system message
|
|
155
|
+
*/
|
|
156
|
+
handleSystemMessage(message) {
|
|
157
|
+
if (message.message) {
|
|
158
|
+
if (this.options.showProgress) {
|
|
159
|
+
this.updateSpinner(`ℹ️ ${message.message}`);
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* Handle permission denial
|
|
165
|
+
*/
|
|
166
|
+
handlePermissionDenial(message) {
|
|
167
|
+
if (this.spinner) {
|
|
168
|
+
this.spinner.warn(chalk_1.default.yellow(`⚠️ Permission denied: ${message.message || 'Unknown operation'}`));
|
|
169
|
+
this.spinner = (0, ora_1.default)().start();
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* Update spinner text
|
|
174
|
+
*/
|
|
175
|
+
updateSpinner(text) {
|
|
176
|
+
if (this.spinner) {
|
|
177
|
+
this.spinner.text = text;
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
/**
|
|
181
|
+
* Complete streaming successfully
|
|
182
|
+
*/
|
|
183
|
+
complete(message) {
|
|
184
|
+
if (this.spinner) {
|
|
185
|
+
this.spinner.succeed(message || chalk_1.default.green('✅ Completed'));
|
|
186
|
+
}
|
|
187
|
+
// Show stats if enabled
|
|
188
|
+
if (this.options.showTokens && this.stats.totalTokens > 0) {
|
|
189
|
+
console.log(chalk_1.default.gray(` Tokens: ${this.stats.totalTokens} (in: ${this.stats.inputTokens}, out: ${this.stats.outputTokens})`));
|
|
190
|
+
}
|
|
191
|
+
if (this.options.showToolUsage && this.stats.toolsUsed.length > 0) {
|
|
192
|
+
console.log(chalk_1.default.gray(` Tools used: ${this.stats.toolsUsed.join(', ')}`));
|
|
193
|
+
}
|
|
194
|
+
if (this.options.showProgress) {
|
|
195
|
+
console.log(chalk_1.default.gray(` Duration: ${(this.stats.duration / 1000).toFixed(2)}s`));
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
/**
|
|
199
|
+
* Handle error during streaming
|
|
200
|
+
*/
|
|
201
|
+
error(error) {
|
|
202
|
+
if (this.spinner) {
|
|
203
|
+
this.spinner.fail(chalk_1.default.red(`❌ Error: ${error.message}`));
|
|
204
|
+
}
|
|
205
|
+
if (this.options.onError) {
|
|
206
|
+
this.options.onError(error);
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
/**
|
|
210
|
+
* Stop spinner without completion
|
|
211
|
+
*/
|
|
212
|
+
stop() {
|
|
213
|
+
if (this.spinner) {
|
|
214
|
+
this.spinner.stop();
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
/**
|
|
218
|
+
* Get current statistics
|
|
219
|
+
*/
|
|
220
|
+
getStats() {
|
|
221
|
+
return { ...this.stats };
|
|
222
|
+
}
|
|
223
|
+
/**
|
|
224
|
+
* Reset statistics
|
|
225
|
+
*/
|
|
226
|
+
resetStats() {
|
|
227
|
+
this.stats = {
|
|
228
|
+
totalTokens: 0,
|
|
229
|
+
inputTokens: 0,
|
|
230
|
+
outputTokens: 0,
|
|
231
|
+
toolsUsed: [],
|
|
232
|
+
duration: 0,
|
|
233
|
+
messagesProcessed: 0,
|
|
234
|
+
};
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
exports.StreamingHandler = StreamingHandler;
|
|
238
|
+
/**
|
|
239
|
+
* Convenience function to create and use streaming handler
|
|
240
|
+
*/
|
|
241
|
+
async function streamWithProgress(query, options = {}) {
|
|
242
|
+
const handler = new StreamingHandler(options);
|
|
243
|
+
handler.start();
|
|
244
|
+
const content = await handler.processStream(query);
|
|
245
|
+
const stats = handler.getStats();
|
|
246
|
+
return { content, stats };
|
|
247
|
+
}
|
|
248
|
+
/**
|
|
249
|
+
* Simplified streaming with default options
|
|
250
|
+
*/
|
|
251
|
+
async function simpleStream(query) {
|
|
252
|
+
const { content } = await streamWithProgress(query, {
|
|
253
|
+
showProgress: true,
|
|
254
|
+
showTokens: true,
|
|
255
|
+
showToolUsage: true,
|
|
256
|
+
});
|
|
257
|
+
return content;
|
|
258
|
+
}
|
|
259
|
+
//# sourceMappingURL=streamingHandler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"streamingHandler.js","sourceRoot":"","sources":["../../src/utils/streamingHandler.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Validation Gates System
|
|
3
|
+
*
|
|
4
|
+
* Implements user approval checkpoints for PRD, context files, and other critical artifacts.
|
|
5
|
+
* Follows "LLM as Compiler" philosophy - user approves the "compiled output".
|
|
6
|
+
*/
|
|
7
|
+
export interface ValidationResult {
|
|
8
|
+
approved: boolean;
|
|
9
|
+
feedback?: string;
|
|
10
|
+
edited?: boolean;
|
|
11
|
+
}
|
|
12
|
+
export declare class ValidationGates {
|
|
13
|
+
/**
|
|
14
|
+
* Validate PRD - CRITICAL GATE
|
|
15
|
+
* User must read and approve the entire PRD before component generation.
|
|
16
|
+
*/
|
|
17
|
+
static validatePRD(prdPath: string, prdContent: string): Promise<ValidationResult>;
|
|
18
|
+
/**
|
|
19
|
+
* Validate Context File (Features, User Flows, Edge Cases, Tech Specs)
|
|
20
|
+
*/
|
|
21
|
+
static validateContextFile(fileName: string, content: string, filePath: string): Promise<ValidationResult>;
|
|
22
|
+
/**
|
|
23
|
+
* Validate Component List
|
|
24
|
+
*/
|
|
25
|
+
static validateComponentList(componentList: any[], filePath: string): Promise<ValidationResult>;
|
|
26
|
+
/**
|
|
27
|
+
* Validate Types
|
|
28
|
+
*/
|
|
29
|
+
static validateTypes(typesPath: string, typesContent: string): Promise<ValidationResult>;
|
|
30
|
+
/**
|
|
31
|
+
* Display PRD in sections
|
|
32
|
+
*/
|
|
33
|
+
private static displayPRDSections;
|
|
34
|
+
/**
|
|
35
|
+
* Open content in system pager (less/more)
|
|
36
|
+
*/
|
|
37
|
+
private static openInPager;
|
|
38
|
+
/**
|
|
39
|
+
* Open file in user's default editor
|
|
40
|
+
*/
|
|
41
|
+
private static openInEditor;
|
|
42
|
+
/**
|
|
43
|
+
* Group components by category
|
|
44
|
+
*/
|
|
45
|
+
private static groupComponents;
|
|
46
|
+
/**
|
|
47
|
+
* Validate Build Strategy Selection
|
|
48
|
+
*/
|
|
49
|
+
static validateBuildStrategy(strategies: any[], recommended: any): Promise<{
|
|
50
|
+
approved: boolean;
|
|
51
|
+
selectedStrategy?: string;
|
|
52
|
+
}>;
|
|
53
|
+
/**
|
|
54
|
+
* Final build validation - user tests the app
|
|
55
|
+
*/
|
|
56
|
+
static validateFinalBuild(): Promise<ValidationResult>;
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=validationGates.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validationGates.d.ts","sourceRoot":"","sources":["../../src/utils/validationGates.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAUH,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,qBAAa,eAAe;IAC1B;;;OAGG;WACU,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAyExF;;OAEG;WACU,mBAAmB,CAC9B,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,gBAAgB,CAAC;IA0D5B;;OAEG;WACU,qBAAqB,CAAC,aAAa,EAAE,GAAG,EAAE,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAqDrG;;OAEG;WACU,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;IA+C9F;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,kBAAkB;IAYjC;;OAEG;mBACkB,WAAW;IAoBhC;;OAEG;mBACkB,YAAY;IAoBjC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,eAAe;IAc9B;;OAEG;WACU,qBAAqB,CAChC,UAAU,EAAE,GAAG,EAAE,EACjB,WAAW,EAAE,GAAG,GACf,OAAO,CAAC;QAAE,QAAQ,EAAE,OAAO,CAAC;QAAC,gBAAgB,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IA4B5D;;OAEG;WACU,kBAAkB,IAAI,OAAO,CAAC,gBAAgB,CAAC;CAiC7D"}
|