mycontext-cli 1.0.7 → 1.0.10

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 (65) hide show
  1. package/dist/agents/implementations/ArchitectAgent.d.ts +4 -0
  2. package/dist/agents/implementations/ArchitectAgent.d.ts.map +1 -1
  3. package/dist/agents/implementations/ArchitectAgent.js +27 -3
  4. package/dist/agents/implementations/ArchitectAgent.js.map +1 -1
  5. package/dist/agents/implementations/BackendDevAgent.d.ts +3 -0
  6. package/dist/agents/implementations/BackendDevAgent.d.ts.map +1 -1
  7. package/dist/agents/implementations/BackendDevAgent.js +45 -3
  8. package/dist/agents/implementations/BackendDevAgent.js.map +1 -1
  9. package/dist/agents/implementations/DocsSubAgent.d.ts +1 -0
  10. package/dist/agents/implementations/DocsSubAgent.d.ts.map +1 -1
  11. package/dist/agents/implementations/DocsSubAgent.js +4 -1
  12. package/dist/agents/implementations/DocsSubAgent.js.map +1 -1
  13. package/dist/agents/implementations/InteractiveAgent.d.ts +35 -0
  14. package/dist/agents/implementations/InteractiveAgent.d.ts.map +1 -0
  15. package/dist/agents/implementations/InteractiveAgent.js +309 -0
  16. package/dist/agents/implementations/InteractiveAgent.js.map +1 -0
  17. package/dist/agents/implementations/ProjectSetupAgent.d.ts +23 -0
  18. package/dist/agents/implementations/ProjectSetupAgent.d.ts.map +1 -0
  19. package/dist/agents/implementations/ProjectSetupAgent.js +231 -0
  20. package/dist/agents/implementations/ProjectSetupAgent.js.map +1 -0
  21. package/dist/agents/implementations/SecurityAgent.d.ts +4 -0
  22. package/dist/agents/implementations/SecurityAgent.d.ts.map +1 -1
  23. package/dist/agents/implementations/SecurityAgent.js +27 -3
  24. package/dist/agents/implementations/SecurityAgent.js.map +1 -1
  25. package/dist/agents/implementations/WorkflowAgent.d.ts +31 -0
  26. package/dist/agents/implementations/WorkflowAgent.d.ts.map +1 -0
  27. package/dist/agents/implementations/WorkflowAgent.js +381 -0
  28. package/dist/agents/implementations/WorkflowAgent.js.map +1 -0
  29. package/dist/agents/interfaces/SubAgent.d.ts +66 -0
  30. package/dist/agents/interfaces/SubAgent.d.ts.map +1 -1
  31. package/dist/agents/personalities/definitions.d.ts.map +1 -1
  32. package/dist/agents/personalities/definitions.js +52 -0
  33. package/dist/agents/personalities/definitions.js.map +1 -1
  34. package/dist/cli.js +65 -2
  35. package/dist/cli.js.map +1 -1
  36. package/dist/commands/analyze.d.ts.map +1 -1
  37. package/dist/commands/analyze.js +7 -4
  38. package/dist/commands/analyze.js.map +1 -1
  39. package/dist/commands/build-app.d.ts +4 -18
  40. package/dist/commands/build-app.d.ts.map +1 -1
  41. package/dist/commands/build-app.js +52 -478
  42. package/dist/commands/build-app.js.map +1 -1
  43. package/dist/commands/compile-prd.d.ts +18 -0
  44. package/dist/commands/compile-prd.d.ts.map +1 -0
  45. package/dist/commands/compile-prd.js +217 -0
  46. package/dist/commands/compile-prd.js.map +1 -0
  47. package/dist/commands/generate-context-files.d.ts +26 -0
  48. package/dist/commands/generate-context-files.d.ts.map +1 -0
  49. package/dist/commands/generate-context-files.js +320 -0
  50. package/dist/commands/generate-context-files.js.map +1 -0
  51. package/dist/commands/generate.d.ts +1 -0
  52. package/dist/commands/generate.d.ts.map +1 -1
  53. package/dist/commands/generate.js +156 -14
  54. package/dist/commands/generate.js.map +1 -1
  55. package/dist/config/api.js +1 -1
  56. package/dist/config/api.js.map +1 -1
  57. package/dist/config/api.ts +1 -1
  58. package/dist/utils/hybridAIClient.d.ts.map +1 -1
  59. package/dist/utils/hybridAIClient.js +4 -1
  60. package/dist/utils/hybridAIClient.js.map +1 -1
  61. package/package.json +4 -2
  62. package/dist/utils/ollamaClient.d.ts +0 -30
  63. package/dist/utils/ollamaClient.d.ts.map +0 -1
  64. package/dist/utils/ollamaClient.js +0 -226
  65. package/dist/utils/ollamaClient.js.map +0 -1
@@ -0,0 +1,309 @@
1
+ "use strict";
2
+ /**
3
+ * InteractiveAgent Implementation
4
+ *
5
+ * Handles human-computer interaction in the terminal, providing prompts,
6
+ * confirmations, and user input handling for the MyContext CLI workflow.
7
+ * Supports looping capabilities and iterative refinement.
8
+ */
9
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ var desc = Object.getOwnPropertyDescriptor(m, k);
12
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
13
+ desc = { enumerable: true, get: function() { return m[k]; } };
14
+ }
15
+ Object.defineProperty(o, k2, desc);
16
+ }) : (function(o, m, k, k2) {
17
+ if (k2 === undefined) k2 = k;
18
+ o[k2] = m[k];
19
+ }));
20
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
21
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
22
+ }) : function(o, v) {
23
+ o["default"] = v;
24
+ });
25
+ var __importStar = (this && this.__importStar) || (function () {
26
+ var ownKeys = function(o) {
27
+ ownKeys = Object.getOwnPropertyNames || function (o) {
28
+ var ar = [];
29
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
30
+ return ar;
31
+ };
32
+ return ownKeys(o);
33
+ };
34
+ return function (mod) {
35
+ if (mod && mod.__esModule) return mod;
36
+ var result = {};
37
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
38
+ __setModuleDefault(result, mod);
39
+ return result;
40
+ };
41
+ })();
42
+ var __importDefault = (this && this.__importDefault) || function (mod) {
43
+ return (mod && mod.__esModule) ? mod : { "default": mod };
44
+ };
45
+ Object.defineProperty(exports, "__esModule", { value: true });
46
+ exports.InteractiveAgent = void 0;
47
+ const readline = __importStar(require("readline"));
48
+ const chalk_1 = __importDefault(require("chalk"));
49
+ class InteractiveAgent {
50
+ constructor() {
51
+ this.name = "InteractiveAgent";
52
+ this.description = "Handles human-computer interaction in the terminal for prompts, confirmations, and user input";
53
+ this.personality = "Friendly and patient terminal assistant that guides users through interactive workflows";
54
+ this.llmProvider = "terminal"; // Uses terminal interface, not AI
55
+ this.expertise = [
56
+ "user-interaction",
57
+ "terminal-ui",
58
+ "input-validation",
59
+ "workflow-guidance",
60
+ ];
61
+ this.rl = null;
62
+ this.timeoutHandle = null;
63
+ }
64
+ async run(input) {
65
+ const startTime = Date.now();
66
+ let retries = 0;
67
+ try {
68
+ this.initializeReadline();
69
+ let response = "";
70
+ let isValid = false;
71
+ do {
72
+ try {
73
+ response = await this.handleInteraction(input);
74
+ isValid = this.validateInput(response, input);
75
+ if (!isValid && input.retryOnError !== false) {
76
+ retries++;
77
+ console.log(chalk_1.default.yellow("❌ Invalid input. Please try again."));
78
+ }
79
+ }
80
+ catch (error) {
81
+ if (error instanceof Error && error.message === "TIMEOUT") {
82
+ if (input.retryOnError !== false) {
83
+ retries++;
84
+ console.log(chalk_1.default.yellow("⏰ Timeout reached. Please respond:"));
85
+ }
86
+ else {
87
+ throw error;
88
+ }
89
+ }
90
+ else {
91
+ throw error;
92
+ }
93
+ }
94
+ } while (!isValid && retries < 3);
95
+ if (!isValid) {
96
+ throw new Error("Maximum retries exceeded for user input");
97
+ }
98
+ return {
99
+ success: true,
100
+ response,
101
+ metadata: {
102
+ inputType: input.type,
103
+ responseTime: Date.now() - startTime,
104
+ retries,
105
+ context: input.context,
106
+ },
107
+ };
108
+ }
109
+ finally {
110
+ this.performCleanup();
111
+ }
112
+ }
113
+ initializeReadline() {
114
+ if (!this.rl) {
115
+ this.rl = readline.createInterface({
116
+ input: process.stdin,
117
+ output: process.stdout,
118
+ });
119
+ }
120
+ }
121
+ performCleanup() {
122
+ if (this.timeoutHandle) {
123
+ clearTimeout(this.timeoutHandle);
124
+ this.timeoutHandle = null;
125
+ }
126
+ if (this.rl) {
127
+ this.rl.close();
128
+ this.rl = null;
129
+ }
130
+ }
131
+ async handleInteraction(input) {
132
+ return new Promise((resolve, reject) => {
133
+ const timeout = input.timeout || 30000; // 30 second default timeout
134
+ // Set up timeout
135
+ if (timeout > 0) {
136
+ this.timeoutHandle = setTimeout(() => {
137
+ reject(new Error("TIMEOUT"));
138
+ }, timeout);
139
+ }
140
+ switch (input.type) {
141
+ case "prompt":
142
+ this.handlePrompt(input, resolve);
143
+ break;
144
+ case "confirm":
145
+ this.handleConfirm(input, resolve);
146
+ break;
147
+ case "select":
148
+ this.handleSelect(input, resolve);
149
+ break;
150
+ case "multiline":
151
+ this.handleMultiline(input, resolve);
152
+ break;
153
+ default:
154
+ reject(new Error(`Unknown input type: ${input.type}`));
155
+ }
156
+ });
157
+ }
158
+ handlePrompt(input, resolve) {
159
+ if (!this.rl)
160
+ return;
161
+ const prompt = this.formatPrompt(input.message, input.defaultValue);
162
+ this.rl.question(prompt, (answer) => {
163
+ const response = answer.trim() || input.defaultValue || "";
164
+ resolve(response);
165
+ });
166
+ }
167
+ handleConfirm(input, resolve) {
168
+ if (!this.rl)
169
+ return;
170
+ const prompt = `${input.message} ${chalk_1.default.gray("(y/n)")}: `;
171
+ this.rl.question(prompt, (answer) => {
172
+ const response = answer.toLowerCase().trim();
173
+ if (response === "y" || response === "yes") {
174
+ resolve("yes");
175
+ }
176
+ else if (response === "n" || response === "no") {
177
+ resolve("no");
178
+ }
179
+ else {
180
+ // Default to no for invalid responses
181
+ resolve("no");
182
+ }
183
+ });
184
+ }
185
+ handleSelect(input, resolve) {
186
+ if (!this.rl)
187
+ return;
188
+ const options = input.options || [];
189
+ if (options.length === 0) {
190
+ resolve("");
191
+ return;
192
+ }
193
+ console.log(chalk_1.default.cyan(input.message));
194
+ options.forEach((option, index) => {
195
+ console.log(chalk_1.default.gray(` ${index + 1}. ${option}`));
196
+ });
197
+ const prompt = `Select an option (1-${options.length}): `;
198
+ this.rl.question(prompt, (answer) => {
199
+ const index = parseInt(answer.trim()) - 1;
200
+ if (index >= 0 && index < options.length) {
201
+ resolve(options[index]);
202
+ }
203
+ else {
204
+ console.log(chalk_1.default.red("Invalid selection. Please try again."));
205
+ this.handleSelect(input, resolve);
206
+ }
207
+ });
208
+ }
209
+ async handleMultiline(input, resolve) {
210
+ if (!this.rl)
211
+ return;
212
+ console.log(chalk_1.default.cyan(input.message));
213
+ console.log(chalk_1.default.gray("Enter your response (press Ctrl+D or type 'EOF' to finish):"));
214
+ let lines = [];
215
+ let isReading = true;
216
+ const onLine = (line) => {
217
+ if (line.trim().toLowerCase() === "eof") {
218
+ isReading = false;
219
+ this.rl?.removeListener("line", onLine);
220
+ this.rl?.removeListener("close", onClose);
221
+ resolve(lines.join("\n"));
222
+ return;
223
+ }
224
+ lines.push(line);
225
+ };
226
+ const onClose = () => {
227
+ isReading = false;
228
+ this.rl?.removeListener("line", onLine);
229
+ this.rl?.removeListener("close", onClose);
230
+ resolve(lines.join("\n"));
231
+ };
232
+ this.rl?.on("line", onLine);
233
+ this.rl?.on("close", onClose);
234
+ }
235
+ formatPrompt(message, defaultValue) {
236
+ if (defaultValue) {
237
+ return `${message} ${chalk_1.default.gray(`(${defaultValue})`)}: `;
238
+ }
239
+ return `${message}: `;
240
+ }
241
+ validateInput(input, config) {
242
+ if (!config.validate)
243
+ return true;
244
+ const result = config.validate(input);
245
+ if (typeof result === "boolean") {
246
+ return result;
247
+ }
248
+ else {
249
+ console.log(chalk_1.default.red(`❌ ${result}`));
250
+ return false;
251
+ }
252
+ }
253
+ validate(input) {
254
+ // Validate that the input has required fields
255
+ if (!input.message || !input.type) {
256
+ return false;
257
+ }
258
+ if (input.type === "select" &&
259
+ (!input.options || input.options.length === 0)) {
260
+ return false;
261
+ }
262
+ return true;
263
+ }
264
+ async cleanup() {
265
+ this.performCleanup();
266
+ }
267
+ async getStatus() {
268
+ return {
269
+ name: this.name,
270
+ status: "idle",
271
+ activeInteractions: this.rl ? 1 : 0,
272
+ lastCleanup: new Date(),
273
+ errorCount: 0,
274
+ successCount: 0,
275
+ };
276
+ }
277
+ // Helper methods for common interactions
278
+ async promptUser(message, defaultValue) {
279
+ return this.run({
280
+ type: "prompt",
281
+ message,
282
+ defaultValue,
283
+ }).then((result) => result.response);
284
+ }
285
+ async confirmAction(message) {
286
+ const result = await this.run({
287
+ type: "confirm",
288
+ message,
289
+ });
290
+ return result.response === "yes";
291
+ }
292
+ async selectOption(message, options) {
293
+ const result = await this.run({
294
+ type: "select",
295
+ message,
296
+ options,
297
+ });
298
+ return result.response;
299
+ }
300
+ async getMultilineInput(message) {
301
+ const result = await this.run({
302
+ type: "multiline",
303
+ message,
304
+ });
305
+ return result.response;
306
+ }
307
+ }
308
+ exports.InteractiveAgent = InteractiveAgent;
309
+ //# sourceMappingURL=InteractiveAgent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InteractiveAgent.js","sourceRoot":"","sources":["../../../src/agents/implementations/InteractiveAgent.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * ProjectSetupAgent Implementation
3
+ *
4
+ * Handles project initialization and setup tasks in the build workflow.
5
+ * Manages project structure creation, dependency installation, and basic configuration.
6
+ */
7
+ import { SubAgent, ProjectSetupInput, ProjectSetupOutput } from "../interfaces/SubAgent";
8
+ export declare class ProjectSetupAgent implements SubAgent<ProjectSetupInput, ProjectSetupOutput> {
9
+ name: string;
10
+ description: string;
11
+ personality: string;
12
+ llmProvider: string;
13
+ expertise: string[];
14
+ run(input: ProjectSetupInput): Promise<ProjectSetupOutput>;
15
+ private initializeNewProject;
16
+ private migrateExistingProject;
17
+ private createMyContextStructure;
18
+ private getPlaceholderContent;
19
+ validate?(input: ProjectSetupInput): boolean | Promise<boolean>;
20
+ cleanup?(): Promise<void>;
21
+ getStatus?(): Promise<any>;
22
+ }
23
+ //# sourceMappingURL=ProjectSetupAgent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProjectSetupAgent.d.ts","sourceRoot":"","sources":["../../../src/agents/implementations/ProjectSetupAgent.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACL,QAAQ,EACR,iBAAiB,EACjB,kBAAkB,EACnB,MAAM,wBAAwB,CAAC;AAOhC,qBAAa,iBACX,YAAW,QAAQ,CAAC,iBAAiB,EAAE,kBAAkB,CAAC;IAE1D,IAAI,SAAuB;IAC3B,WAAW,SAC8E;IACzF,WAAW,SACuE;IAClF,WAAW,SAAY;IACvB,SAAS,WAKP;IAEI,GAAG,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,kBAAkB,CAAC;YAyFlD,oBAAoB;YAqBpB,sBAAsB;YA8BtB,wBAAwB;IA6BtC,OAAO,CAAC,qBAAqB;IAyB7B,QAAQ,CAAC,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAazD,OAAO,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC;IAIzB,SAAS,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC;CASjC"}
@@ -0,0 +1,231 @@
1
+ "use strict";
2
+ /**
3
+ * ProjectSetupAgent Implementation
4
+ *
5
+ * Handles project initialization and setup tasks in the build workflow.
6
+ * Manages project structure creation, dependency installation, and basic configuration.
7
+ */
8
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
9
+ if (k2 === undefined) k2 = k;
10
+ var desc = Object.getOwnPropertyDescriptor(m, k);
11
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
12
+ desc = { enumerable: true, get: function() { return m[k]; } };
13
+ }
14
+ Object.defineProperty(o, k2, desc);
15
+ }) : (function(o, m, k, k2) {
16
+ if (k2 === undefined) k2 = k;
17
+ o[k2] = m[k];
18
+ }));
19
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
20
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
21
+ }) : function(o, v) {
22
+ o["default"] = v;
23
+ });
24
+ var __importStar = (this && this.__importStar) || (function () {
25
+ var ownKeys = function(o) {
26
+ ownKeys = Object.getOwnPropertyNames || function (o) {
27
+ var ar = [];
28
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
29
+ return ar;
30
+ };
31
+ return ownKeys(o);
32
+ };
33
+ return function (mod) {
34
+ if (mod && mod.__esModule) return mod;
35
+ var result = {};
36
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
37
+ __setModuleDefault(result, mod);
38
+ return result;
39
+ };
40
+ })();
41
+ var __importDefault = (this && this.__importDefault) || function (mod) {
42
+ return (mod && mod.__esModule) ? mod : { "default": mod };
43
+ };
44
+ Object.defineProperty(exports, "__esModule", { value: true });
45
+ exports.ProjectSetupAgent = void 0;
46
+ const init_1 = require("../../commands/init");
47
+ const fs = __importStar(require("fs"));
48
+ const path = __importStar(require("path"));
49
+ const child_process_1 = require("child_process");
50
+ const chalk_1 = __importDefault(require("chalk"));
51
+ class ProjectSetupAgent {
52
+ constructor() {
53
+ this.name = "ProjectSetupAgent";
54
+ this.description = "Handles project initialization, dependency management, and basic configuration setup";
55
+ this.personality = "Methodical project architect that ensures proper foundation and configuration";
56
+ this.llmProvider = "system"; // Uses system commands, not AI
57
+ this.expertise = [
58
+ "project-setup",
59
+ "dependency-management",
60
+ "configuration",
61
+ "framework-setup",
62
+ ];
63
+ }
64
+ async run(input) {
65
+ const errors = [];
66
+ const dependencies = [];
67
+ const configFiles = [];
68
+ try {
69
+ let projectPath;
70
+ if (input.existing) {
71
+ // Handle existing project
72
+ projectPath = path.resolve(input.projectName);
73
+ if (!fs.existsSync(projectPath)) {
74
+ throw new Error(`Existing project directory not found: ${projectPath}`);
75
+ }
76
+ console.log(chalk_1.default.blue(`📁 Working with existing project: ${projectPath}`));
77
+ // Check if it's already a MyContext project
78
+ const mycontextDir = path.join(projectPath, ".mycontext");
79
+ const isMyContextProject = fs.existsSync(mycontextDir);
80
+ if (isMyContextProject && !input.migrate) {
81
+ console.log(chalk_1.default.yellow("⚠️ Project is already initialized with MyContext"));
82
+ return {
83
+ success: true,
84
+ projectPath,
85
+ initialized: false,
86
+ dependencies,
87
+ configFiles,
88
+ };
89
+ }
90
+ if (input.migrate) {
91
+ await this.migrateExistingProject(projectPath);
92
+ }
93
+ }
94
+ else {
95
+ // Create new project
96
+ projectPath = await this.initializeNewProject(input);
97
+ configFiles.push("package.json", "tsconfig.json", "tailwind.config.js");
98
+ }
99
+ // Install dependencies if not skipped
100
+ if (!input.skipDependencies) {
101
+ console.log(chalk_1.default.blue("📦 Installing dependencies..."));
102
+ try {
103
+ (0, child_process_1.execSync)("pnpm install", { cwd: projectPath, stdio: "inherit" });
104
+ dependencies.push("next", "react", "react-dom", "typescript", "tailwindcss", "shadcn/ui");
105
+ }
106
+ catch (error) {
107
+ errors.push(`Failed to install dependencies: ${error}`);
108
+ }
109
+ }
110
+ // Create MyContext directory structure
111
+ await this.createMyContextStructure(projectPath);
112
+ return {
113
+ success: true,
114
+ projectPath,
115
+ initialized: true,
116
+ dependencies,
117
+ configFiles,
118
+ errors: errors.length > 0 ? errors : undefined,
119
+ };
120
+ }
121
+ catch (error) {
122
+ return {
123
+ success: false,
124
+ projectPath: path.resolve(input.projectName),
125
+ initialized: false,
126
+ dependencies,
127
+ configFiles,
128
+ errors: [error instanceof Error ? error.message : "Unknown error"],
129
+ };
130
+ }
131
+ }
132
+ async initializeNewProject(input) {
133
+ const initCommand = new init_1.InitCommand();
134
+ const projectPath = path.resolve(input.projectName);
135
+ console.log(chalk_1.default.blue(`🚀 Initializing new ${input.framework} project: ${input.projectName}`));
136
+ await initCommand.execute(input.projectName, {
137
+ framework: input.framework,
138
+ yes: true,
139
+ verbose: false,
140
+ });
141
+ return projectPath;
142
+ }
143
+ async migrateExistingProject(projectPath) {
144
+ console.log(chalk_1.default.blue("🔄 Migrating existing project to MyContext..."));
145
+ // Create .mycontext directory
146
+ const mycontextDir = path.join(projectPath, ".mycontext");
147
+ if (!fs.existsSync(mycontextDir)) {
148
+ fs.mkdirSync(mycontextDir, { recursive: true });
149
+ }
150
+ // Create basic MyContext structure
151
+ const basicFiles = [
152
+ "01-prd.md",
153
+ "02-types.ts",
154
+ "03-branding.md",
155
+ "04-component-list.json",
156
+ "06-env.example",
157
+ ];
158
+ for (const file of basicFiles) {
159
+ const filePath = path.join(mycontextDir, file);
160
+ if (!fs.existsSync(filePath)) {
161
+ // Create placeholder files
162
+ const content = this.getPlaceholderContent(file);
163
+ fs.writeFileSync(filePath, content);
164
+ }
165
+ }
166
+ console.log(chalk_1.default.green("✅ Project migrated successfully"));
167
+ }
168
+ async createMyContextStructure(projectPath) {
169
+ const mycontextDir = path.join(projectPath, ".mycontext");
170
+ if (!fs.existsSync(mycontextDir)) {
171
+ fs.mkdirSync(mycontextDir, { recursive: true });
172
+ }
173
+ // Create context files structure
174
+ const contextFiles = [
175
+ "01a-features.md",
176
+ "01b-user-flows.md",
177
+ "01c-edge-cases.md",
178
+ "01d-technical-specs.md",
179
+ "01-prd.md",
180
+ "02-types.ts",
181
+ "03-branding.md",
182
+ "04-component-list.json",
183
+ "06-env.example",
184
+ ];
185
+ for (const file of contextFiles) {
186
+ const filePath = path.join(mycontextDir, file);
187
+ if (!fs.existsSync(filePath)) {
188
+ const content = this.getPlaceholderContent(file);
189
+ fs.writeFileSync(filePath, content);
190
+ }
191
+ }
192
+ }
193
+ getPlaceholderContent(filename) {
194
+ const placeholders = {
195
+ "01a-features.md": "# Product Features\n\nThis file will contain the detailed feature specifications.\n\n## Next Steps\n1. Run `mycontext generate-context-files` to populate this file\n2. Review and refine the generated content\n3. Run `mycontext compile-prd` to create the PRD\n",
196
+ "01b-user-flows.md": "# User Flows\n\nThis file will contain user journey mappings.\n",
197
+ "01c-edge-cases.md": "# Edge Cases\n\nThis file will contain error scenarios and edge conditions.\n",
198
+ "01d-technical-specs.md": "# Technical Specifications\n\nThis file will contain technical requirements and architecture decisions.\n",
199
+ "01-prd.md": "# Product Requirements Document\n\nThis file will be compiled from the context files.\n",
200
+ "02-types.ts": "// TypeScript type definitions\nexport interface User {\n id: string;\n name: string;\n email: string;\n}\n",
201
+ "03-branding.md": "# Brand Guidelines\n\nThis file will contain brand specifications and design tokens.\n",
202
+ "04-component-list.json": '{"groups": {}, "metadata": {"version": "1.0.0"}}',
203
+ "06-env.example": "# MyContext Environment Variables\n# Copy this file to .env and add your API keys\n\nMYCONTEXT_QWEN_API_KEY=your_qwen_api_key_here\nMYCONTEXT_GITHUB_TOKEN=your_github_token_here\n",
204
+ };
205
+ return placeholders[filename] || "# Placeholder content\n";
206
+ }
207
+ validate(input) {
208
+ if (!input.projectName || !input.framework) {
209
+ return false;
210
+ }
211
+ const validFrameworks = ["nextjs", "react", "vue", "angular"];
212
+ if (!validFrameworks.includes(input.framework)) {
213
+ return false;
214
+ }
215
+ return true;
216
+ }
217
+ async cleanup() {
218
+ // No cleanup needed for this agent
219
+ }
220
+ async getStatus() {
221
+ return {
222
+ name: this.name,
223
+ status: "idle",
224
+ lastRun: new Date(),
225
+ errorCount: 0,
226
+ successCount: 0,
227
+ };
228
+ }
229
+ }
230
+ exports.ProjectSetupAgent = ProjectSetupAgent;
231
+ //# sourceMappingURL=ProjectSetupAgent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProjectSetupAgent.js","sourceRoot":"","sources":["../../../src/agents/implementations/ProjectSetupAgent.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAOH,8CAAkD;AAClD,uCAAyB;AACzB,2CAA6B;AAC7B,iDAAyC;AACzC,kDAA0B;AAE1B,MAAa,iBAAiB;IAA9B;QAGE,SAAI,GAAG,mBAAmB,CAAC;QAC3B,gBAAW,GACT,sFAAsF,CAAC;QACzF,gBAAW,GACT,+EAA+E,CAAC;QAClF,gBAAW,GAAG,QAAQ,CAAC,CAAC,+BAA+B;QACvD,cAAS,GAAG;YACV,eAAe;YACf,uBAAuB;YACvB,eAAe;YACf,iBAAiB;SAClB,CAAC;IA8NJ,CAAC;IA5NC,KAAK,CAAC,GAAG,CAAC,KAAwB;QAChC,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,MAAM,YAAY,GAAa,EAAE,CAAC;QAClC,MAAM,WAAW,GAAa,EAAE,CAAC;QAEjC,IAAI,CAAC;YACH,IAAI,WAAmB,CAAC;YAExB,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;gBACnB,0BAA0B;gBAC1B,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;gBAE9C,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;oBAChC,MAAM,IAAI,KAAK,CACb,yCAAyC,WAAW,EAAE,CACvD,CAAC;gBACJ,CAAC;gBAED,OAAO,CAAC,GAAG,CACT,eAAK,CAAC,IAAI,CAAC,qCAAqC,WAAW,EAAE,CAAC,CAC/D,CAAC;gBAEF,4CAA4C;gBAC5C,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;gBAC1D,MAAM,kBAAkB,GAAG,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;gBAEvD,IAAI,kBAAkB,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;oBACzC,OAAO,CAAC,GAAG,CACT,eAAK,CAAC,MAAM,CAAC,mDAAmD,CAAC,CAClE,CAAC;oBACF,OAAO;wBACL,OAAO,EAAE,IAAI;wBACb,WAAW;wBACX,WAAW,EAAE,KAAK;wBAClB,YAAY;wBACZ,WAAW;qBACZ,CAAC;gBACJ,CAAC;gBAED,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;oBAClB,MAAM,IAAI,CAAC,sBAAsB,CAAC,WAAW,CAAC,CAAC;gBACjD,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,qBAAqB;gBACrB,WAAW,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;gBACrD,WAAW,CAAC,IAAI,CAAC,cAAc,EAAE,eAAe,EAAE,oBAAoB,CAAC,CAAC;YAC1E,CAAC;YAED,sCAAsC;YACtC,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE,CAAC;gBAC5B,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC,CAAC;gBACzD,IAAI,CAAC;oBACH,IAAA,wBAAQ,EAAC,cAAc,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;oBACjE,YAAY,CAAC,IAAI,CACf,MAAM,EACN,OAAO,EACP,WAAW,EACX,YAAY,EACZ,aAAa,EACb,WAAW,CACZ,CAAC;gBACJ,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,MAAM,CAAC,IAAI,CAAC,mCAAmC,KAAK,EAAE,CAAC,CAAC;gBAC1D,CAAC;YACH,CAAC;YAED,uCAAuC;YACvC,MAAM,IAAI,CAAC,wBAAwB,CAAC,WAAW,CAAC,CAAC;YAEjD,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,WAAW;gBACX,WAAW,EAAE,IAAI;gBACjB,YAAY;gBACZ,WAAW;gBACX,MAAM,EAAE,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;aAC/C,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC;gBAC5C,WAAW,EAAE,KAAK;gBAClB,YAAY;gBACZ,WAAW;gBACX,MAAM,EAAE,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC;aACnE,CAAC;QACJ,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,oBAAoB,CAChC,KAAwB;QAExB,MAAM,WAAW,GAAG,IAAI,kBAAW,EAAE,CAAC;QACtC,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QAEpD,OAAO,CAAC,GAAG,CACT,eAAK,CAAC,IAAI,CACR,uBAAuB,KAAK,CAAC,SAAS,aAAa,KAAK,CAAC,WAAW,EAAE,CACvE,CACF,CAAC;QAEF,MAAM,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,EAAE;YAC3C,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,GAAG,EAAE,IAAI;YACT,OAAO,EAAE,KAAK;SACf,CAAC,CAAC;QAEH,OAAO,WAAW,CAAC;IACrB,CAAC;IAEO,KAAK,CAAC,sBAAsB,CAAC,WAAmB;QACtD,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,+CAA+C,CAAC,CAAC,CAAC;QAEzE,8BAA8B;QAC9B,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;QAC1D,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;YACjC,EAAE,CAAC,SAAS,CAAC,YAAY,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAClD,CAAC;QAED,mCAAmC;QACnC,MAAM,UAAU,GAAG;YACjB,WAAW;YACX,aAAa;YACb,gBAAgB;YAChB,wBAAwB;YACxB,gBAAgB;SACjB,CAAC;QAEF,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;YAC9B,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;YAC/C,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC7B,2BAA2B;gBAC3B,MAAM,OAAO,GAAG,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC;gBACjD,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YACtC,CAAC;QACH,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,iCAAiC,CAAC,CAAC,CAAC;IAC9D,CAAC;IAEO,KAAK,CAAC,wBAAwB,CAAC,WAAmB;QACxD,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;QAE1D,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;YACjC,EAAE,CAAC,SAAS,CAAC,YAAY,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAClD,CAAC;QAED,iCAAiC;QACjC,MAAM,YAAY,GAAG;YACnB,iBAAiB;YACjB,mBAAmB;YACnB,mBAAmB;YACnB,wBAAwB;YACxB,WAAW;YACX,aAAa;YACb,gBAAgB;YAChB,wBAAwB;YACxB,gBAAgB;SACjB,CAAC;QAEF,KAAK,MAAM,IAAI,IAAI,YAAY,EAAE,CAAC;YAChC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;YAC/C,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC7B,MAAM,OAAO,GAAG,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC;gBACjD,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YACtC,CAAC;QACH,CAAC;IACH,CAAC;IAEO,qBAAqB,CAAC,QAAgB;QAC5C,MAAM,YAAY,GAA2B;YAC3C,iBAAiB,EACf,qQAAqQ;YACvQ,mBAAmB,EACjB,iEAAiE;YACnE,mBAAmB,EACjB,+EAA+E;YACjF,wBAAwB,EACtB,2GAA2G;YAC7G,WAAW,EACT,yFAAyF;YAC3F,aAAa,EACX,gHAAgH;YAClH,gBAAgB,EACd,wFAAwF;YAC1F,wBAAwB,EACtB,kDAAkD;YACpD,gBAAgB,EACd,qLAAqL;SACxL,CAAC;QAEF,OAAO,YAAY,CAAC,QAAQ,CAAC,IAAI,yBAAyB,CAAC;IAC7D,CAAC;IAED,QAAQ,CAAE,KAAwB;QAChC,IAAI,CAAC,KAAK,CAAC,WAAW,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC;YAC3C,OAAO,KAAK,CAAC;QACf,CAAC;QAED,MAAM,eAAe,GAAG,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;QAC9D,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC;YAC/C,OAAO,KAAK,CAAC;QACf,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,OAAO;QACX,mCAAmC;IACrC,CAAC;IAED,KAAK,CAAC,SAAS;QACb,OAAO;YACL,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,IAAI,IAAI,EAAE;YACnB,UAAU,EAAE,CAAC;YACb,YAAY,EAAE,CAAC;SAChB,CAAC;IACJ,CAAC;CACF;AA5OD,8CA4OC"}
@@ -5,7 +5,11 @@ export declare class SecurityAgent implements SubAgent {
5
5
  personality: string;
6
6
  llmProvider: string;
7
7
  expertise: string[];
8
+ constructor();
8
9
  run(input: any): Promise<any>;
10
+ validate?(input: any): boolean | Promise<boolean>;
11
+ cleanup?(): Promise<void>;
12
+ getStatus?(): Promise<any>;
9
13
  execute(input: any): Promise<any>;
10
14
  private scanVulnerabilities;
11
15
  private detectXSS;
@@ -1 +1 @@
1
- {"version":3,"file":"SecurityAgent.d.ts","sourceRoot":"","sources":["../../../src/agents/implementations/SecurityAgent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAElD,qBAAa,aAAc,YAAW,QAAQ;IAC5C,IAAI,SAAmB;IACvB,WAAW,SACgE;IAC3E,WAAW,SAAc;IACzB,WAAW,SAAY;IACvB,SAAS,WAA0D;IAE7D,GAAG,CAAC,KAAK,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;IAI7B,OAAO,CAAC,KAAK,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;YAwBzB,mBAAmB;IA6BjC,OAAO,CAAC,SAAS;IA4CjB,OAAO,CAAC,UAAU;IA0ClB,OAAO,CAAC,eAAe;IA8CvB,OAAO,CAAC,0BAA0B;IAuDlC,OAAO,CAAC,kBAAkB;YAoDZ,qBAAqB;IAcnC,OAAO,CAAC,oBAAoB;IA6B5B,OAAO,CAAC,mBAAmB;IAU3B,OAAO,CAAC,kBAAkB;IAS1B,OAAO,CAAC,mBAAmB;IAS3B,OAAO,CAAC,0BAA0B;IAUlC,OAAO,CAAC,kBAAkB;YAWZ,+BAA+B;IAmD7C,OAAO,CAAC,sBAAsB;IAmC9B,OAAO,CAAC,eAAe;IASvB,OAAO,CAAC,oBAAoB;IAoB5B,OAAO,CAAC,mBAAmB;IAc3B,OAAO,CAAC,kBAAkB;IAc1B,OAAO,CAAC,oBAAoB;CAa7B"}
1
+ {"version":3,"file":"SecurityAgent.d.ts","sourceRoot":"","sources":["../../../src/agents/implementations/SecurityAgent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAGlD,qBAAa,aAAc,YAAW,QAAQ;IAC5C,IAAI,SAAmB;IACvB,WAAW,SACgE;IAC3E,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,EAAE,CAAC;;IAgBd,GAAG,CAAC,KAAK,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;IAInC,QAAQ,CAAC,CAAC,KAAK,EAAE,GAAG,GAAG,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAI3C,OAAO,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC;IAIzB,SAAS,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC;IAS1B,OAAO,CAAC,KAAK,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;YAwBzB,mBAAmB;IA6BjC,OAAO,CAAC,SAAS;IA4CjB,OAAO,CAAC,UAAU;IA0ClB,OAAO,CAAC,eAAe;IA8CvB,OAAO,CAAC,0BAA0B;IAuDlC,OAAO,CAAC,kBAAkB;YAoDZ,qBAAqB;IAcnC,OAAO,CAAC,oBAAoB;IA6B5B,OAAO,CAAC,mBAAmB;IAU3B,OAAO,CAAC,kBAAkB;IAS1B,OAAO,CAAC,mBAAmB;IAS3B,OAAO,CAAC,0BAA0B;IAUlC,OAAO,CAAC,kBAAkB;YAWZ,+BAA+B;IAmD7C,OAAO,CAAC,sBAAsB;IAmC9B,OAAO,CAAC,eAAe;IASvB,OAAO,CAAC,oBAAoB;IAoB5B,OAAO,CAAC,mBAAmB;IAc3B,OAAO,CAAC,kBAAkB;IAc1B,OAAO,CAAC,oBAAoB;CAa7B"}
@@ -1,17 +1,41 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.SecurityAgent = void 0;
4
+ const definitions_1 = require("../personalities/definitions");
4
5
  class SecurityAgent {
5
6
  constructor() {
6
7
  this.name = "SecurityAgent";
7
8
  this.description = "Security analysis, vulnerability scanning, and secure coding practices";
8
- this.personality = "vigilant";
9
- this.llmProvider = "github";
10
- this.expertise = ["security", "compliance", "vulnerability-assessment"];
9
+ const personality = (0, definitions_1.getSubAgentPersonality)("SecuritySubAgent");
10
+ if (!personality) {
11
+ // Fallback if no personality defined
12
+ this.personality = "vigilant";
13
+ this.llmProvider = "github";
14
+ this.expertise = ["security", "compliance", "vulnerability-assessment"];
15
+ }
16
+ else {
17
+ this.personality = personality.systemPrompt;
18
+ this.llmProvider = personality.llmProvider;
19
+ this.expertise = personality.expertise;
20
+ }
11
21
  }
12
22
  async run(input) {
13
23
  return this.execute(input);
14
24
  }
25
+ validate(input) {
26
+ return !!(input && input.code);
27
+ }
28
+ async cleanup() {
29
+ // No cleanup needed for this agent
30
+ }
31
+ async getStatus() {
32
+ return {
33
+ name: this.name,
34
+ status: "idle",
35
+ errorCount: 0,
36
+ successCount: 0,
37
+ };
38
+ }
15
39
  async execute(input) {
16
40
  const { code, component, context } = input;
17
41
  try {