mycontext-cli 0.4.8 → 0.4.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 (70) hide show
  1. package/README.md +113 -97
  2. package/dist/agents/communication/AgentCommunicationManager.d.ts +27 -0
  3. package/dist/agents/communication/AgentCommunicationManager.d.ts.map +1 -0
  4. package/dist/agents/communication/AgentCommunicationManager.js +293 -0
  5. package/dist/agents/communication/AgentCommunicationManager.js.map +1 -0
  6. package/dist/agents/evolution/CodeEvolutionEngine.d.ts +92 -0
  7. package/dist/agents/evolution/CodeEvolutionEngine.d.ts.map +1 -0
  8. package/dist/agents/evolution/CodeEvolutionEngine.js +639 -0
  9. package/dist/agents/evolution/CodeEvolutionEngine.js.map +1 -0
  10. package/dist/agents/implementations/ArchitectAgent.d.ts +39 -0
  11. package/dist/agents/implementations/ArchitectAgent.d.ts.map +1 -0
  12. package/dist/agents/implementations/ArchitectAgent.js +345 -0
  13. package/dist/agents/implementations/ArchitectAgent.js.map +1 -0
  14. package/dist/agents/implementations/CodeGenSubAgent.d.ts +12 -0
  15. package/dist/agents/implementations/CodeGenSubAgent.d.ts.map +1 -1
  16. package/dist/agents/implementations/CodeGenSubAgent.js +296 -43
  17. package/dist/agents/implementations/CodeGenSubAgent.js.map +1 -1
  18. package/dist/agents/implementations/PromptConstructorAgent.d.ts +50 -0
  19. package/dist/agents/implementations/PromptConstructorAgent.d.ts.map +1 -0
  20. package/dist/agents/implementations/PromptConstructorAgent.js +481 -0
  21. package/dist/agents/implementations/PromptConstructorAgent.js.map +1 -0
  22. package/dist/agents/implementations/SecurityAgent.d.ts +31 -0
  23. package/dist/agents/implementations/SecurityAgent.d.ts.map +1 -0
  24. package/dist/agents/implementations/SecurityAgent.js +453 -0
  25. package/dist/agents/implementations/SecurityAgent.js.map +1 -0
  26. package/dist/agents/intelligence/ProjectIntelligence.d.ts +127 -0
  27. package/dist/agents/intelligence/ProjectIntelligence.d.ts.map +1 -0
  28. package/dist/agents/intelligence/ProjectIntelligence.js +456 -0
  29. package/dist/agents/intelligence/ProjectIntelligence.js.map +1 -0
  30. package/dist/agents/interfaces/AgentCommunication.d.ts +65 -0
  31. package/dist/agents/interfaces/AgentCommunication.d.ts.map +1 -0
  32. package/dist/agents/interfaces/AgentCommunication.js +13 -0
  33. package/dist/agents/interfaces/AgentCommunication.js.map +1 -0
  34. package/dist/agents/learning/CrossProjectLearning.d.ts +99 -0
  35. package/dist/agents/learning/CrossProjectLearning.d.ts.map +1 -0
  36. package/dist/agents/learning/CrossProjectLearning.js +517 -0
  37. package/dist/agents/learning/CrossProjectLearning.js.map +1 -0
  38. package/dist/cli.js +47 -0
  39. package/dist/cli.js.map +1 -1
  40. package/dist/commands/agent-flow.d.ts +21 -0
  41. package/dist/commands/agent-flow.d.ts.map +1 -0
  42. package/dist/commands/agent-flow.js +225 -0
  43. package/dist/commands/agent-flow.js.map +1 -0
  44. package/dist/commands/generate-components.d.ts +0 -13
  45. package/dist/commands/generate-components.d.ts.map +1 -1
  46. package/dist/commands/generate-components.js +23 -385
  47. package/dist/commands/generate-components.js.map +1 -1
  48. package/dist/commands/generate.d.ts +4 -1
  49. package/dist/commands/generate.d.ts.map +1 -1
  50. package/dist/commands/generate.js +173 -1
  51. package/dist/commands/generate.js.map +1 -1
  52. package/dist/commands/predict.d.ts +36 -0
  53. package/dist/commands/predict.d.ts.map +1 -0
  54. package/dist/commands/predict.js +539 -0
  55. package/dist/commands/predict.js.map +1 -0
  56. package/dist/utils/clean.d.ts +6 -0
  57. package/dist/utils/clean.d.ts.map +1 -0
  58. package/dist/utils/clean.js +220 -0
  59. package/dist/utils/clean.js.map +1 -0
  60. package/dist/utils/githubModelsClient.d.ts.map +1 -1
  61. package/dist/utils/githubModelsClient.js +11 -12
  62. package/dist/utils/githubModelsClient.js.map +1 -1
  63. package/dist/utils/hybridAIClient.d.ts +1 -0
  64. package/dist/utils/hybridAIClient.d.ts.map +1 -1
  65. package/dist/utils/hybridAIClient.js +23 -9
  66. package/dist/utils/hybridAIClient.js.map +1 -1
  67. package/dist/utils/ollamaClient.d.ts.map +1 -1
  68. package/dist/utils/ollamaClient.js +6 -4
  69. package/dist/utils/ollamaClient.js.map +1 -1
  70. package/package.json +2 -1
package/README.md CHANGED
@@ -1,139 +1,130 @@
1
1
  # mycontext CLI
2
2
 
3
- **AI-Powered Component Generation with shadcn/ui & Next.js** 🚀
3
+ **🧠 The AI That Actually Understands Your Project**
4
4
 
5
- mycontext CLI transforms your project ideas into production-ready components with a context-first approach. **Currently in BETA** - context file generation is fully ready, with component generation and advanced features coming soon.
5
+ AI-powered tool that generates production-ready React components by deeply understanding your project context.
6
6
 
7
7
  ## 🚀 Quick Start
8
8
 
9
- ### Install
10
-
11
9
  ```bash
10
+ # Install CLI
12
11
  npm install -g mycontext-cli
13
- # or
14
- pnpm add -g mycontext-cli
15
- ```
16
12
 
17
- Update CLI anytime:
13
+ # Initialize project
14
+ mycontext init my-app --description "Your project description"
15
+ cd my-app
18
16
 
19
- ```bash
20
- mycontext update
21
- # or
22
- mycontext --up
17
+ # Generate context and components
18
+ mycontext generate context
19
+ mycontext generate types
20
+ mycontext generate brand
21
+ mycontext generate components-list
22
+ mycontext generate-components all --local --with-tests
23
23
  ```
24
24
 
25
- ## 🧪 **BETA STATUS**
25
+ ## Core Workflow
26
26
 
27
- ### **Ready for Production Use**
27
+ ### 1. Context Generation
28
28
 
29
- - **Context File Generation** - PRD, types, branding, component planning
30
- - **Project Setup & Validation** - Complete project initialization
31
- - **Basic Component Generation** - Simple component scaffolding
32
- - **Preview System** - Live component previews
33
- - **Model Management** - GitHub Models integration
29
+ ```bash
30
+ mycontext generate context # PRD, user stories, technical specs
31
+ mycontext generate types # TypeScript interfaces
32
+ mycontext generate brand # Design system and branding
33
+ mycontext generate components-list # Component planning
34
+ ```
34
35
 
35
- ### 🔄 **In Development**
36
+ ### 2. Component Generation
36
37
 
37
- - **Rich Component Generation** - Advanced, production-ready components
38
- - **Refinement Loops** - AI-powered component improvement workflows
39
- - **Server Actions Integration** - Full-stack component generation
40
- - **Project Structure Generation** - Auto-generated app structure
41
- - **Component Enhancement** - Advanced enhancement workflows
38
+ ```bash
39
+ mycontext generate-components all --local --with-tests # Generate all components
40
+ mycontext generate-components <group> --local # Generate specific group
41
+ ```
42
42
 
43
- ### 🚀 **Coming Soon**
43
+ ### 3. Preview & Iterate
44
44
 
45
- - **VS Code Extension** - Visual component management
46
- - **Community Marketplace** - Share and discover components
47
- - **Team Collaboration** - Multi-user project workflows
48
- - **Advanced Branding** - Dynamic brand system generation
45
+ ```bash
46
+ mycontext preview components # Preview generated components
47
+ mycontext list components --local # List generated components
48
+ ```
49
49
 
50
- ### **Current Workflow (BETA)**
50
+ ## Advanced Commands
51
51
 
52
52
  ```bash
53
- # 1) Initialize project
54
- mycontext init my-app
55
- cd my-app
53
+ # AI predictions and insights
54
+ mycontext predict next # Next development steps
55
+ mycontext predict dependencies # Package suggestions
56
+ mycontext predict patterns # Architecture patterns
57
+ mycontext predict issues # Potential problems
58
+
59
+ # Component management
60
+ mycontext enhance <component> --prompt "improvements"
61
+ mycontext refine <component> --prompt "changes"
62
+ mycontext status --detailed # Project analysis
63
+
64
+ # Model management
65
+ mycontext model list # Available models
66
+ mycontext model test # Test generation
67
+ ```
56
68
 
57
- # Enable GitHub Models (recommended)
58
- echo 'MYCONTEXT_GITHUB_TOKEN=ghp_xxx' > .mycontext/.env
69
+ ## 📦 What You Get
59
70
 
60
- # 2) Generate comprehensive context (READY NOW)
61
- mycontext generate context --description "Your project description"
62
- mycontext generate types
63
- mycontext generate brand
64
- mycontext generate components-list
71
+ - **`.mycontext/prd.md`** Product Requirements Document
72
+ - **`.mycontext/types.ts`** TypeScript type definitions
73
+ - **`.mycontext/branding.md`** Design system specifications
74
+ - **`.mycontext/component-list.json`** Component architecture plan
75
+ - **`components/.mycontext/`** Generated React components with shadcn/ui
65
76
 
66
- # 3) Basic component generation (BETA)
67
- mycontext generate-components all --local --with-tests
77
+ ## Environment Setup
78
+
79
+ ### Optional: GitHub Models (Faster Generation)
68
80
 
69
- # 4) Preview and iterate
70
- mycontext preview components
71
- mycontext list components --local
81
+ ```bash
82
+ echo 'MYCONTEXT_GITHUB_TOKEN=ghp_xxx' > .mycontext/.env
72
83
  ```
73
84
 
74
- ### **Advanced Workflow (Coming Soon)**
85
+ ### Local AI Setup (Unlimited Generation)
75
86
 
76
87
  ```bash
77
- # Rich component generation with refinement loops
78
- mycontext core generate BrandComp
79
- mycontext core refine --desc "Improve spacing and colors"
80
- mycontext core ready
88
+ # Install Ollama (one-time setup)
89
+ curl -fsSL https://ollama.ai/install.sh | sh
90
+ ollama pull llama3.2:3b
81
91
 
82
- # Generate production-ready components
83
- mycontext generate-components all --rich --with-server-actions
84
-
85
- # AI-powered enhancement
86
- mycontext enhance Button.tsx --prompt "Add loading states"
87
- mycontext refine Card.tsx --interactive
92
+ # Verify setup
93
+ mycontext model status
88
94
  ```
89
95
 
90
- ## 📦 Outputs
91
-
92
- - `.mycontext/prd.md` — PRD
93
- - `.mycontext/types.ts` — TypeScript types
94
- - `.mycontext/branding.md` — Brand guidelines
95
- - `.mycontext/component-list.json` — Component plan (merged by name when re-generated)
96
- - `components/.mycontext/` — Generated components (safe default to avoid overriding user code)
97
- - Group directories: kebab-case (e.g., `user-interface/`)
98
- - Component files: PascalCase (e.g., `GameBoard.tsx`)
96
+ ## Key Features
99
97
 
100
- Numbered aliases for easy sorting (display-only):
98
+ - **Context-Aware Generation**: Components that match your existing codebase patterns
99
+ - **Brand Consistency**: Automatic adherence to your design system
100
+ - **Type Safety**: Full TypeScript integration with generated interfaces
101
+ - **Production Ready**: Includes tests, documentation, and best practices
102
+ - **Local AI Support**: Ollama fallback for unlimited generation without API costs
101
103
 
102
- - `.mycontext/01-prd.md`
103
- - `.mycontext/01a-brief.md` — Project overview and brief
104
- - `.mycontext/01b-requirements.md` — Technical requirements
105
- - `.mycontext/01c-flows.md` — User flows and workflows
106
- - `.mycontext/02-types.ts`
107
- - `.mycontext/03-branding.md`
108
- - `.mycontext/04-component-list.json`
104
+ ## Support
109
105
 
110
- ## 🔧 Complete Command Reference
106
+ - **GitHub Issues**: Report bugs and request features
107
+ - **Documentation**: Full CLI reference and guides
108
+ - **Community**: Share components and patterns
111
109
 
112
- ### **Core Workflow Commands**
110
+ ---
113
111
 
114
- ```bash
115
- # Project Setup
116
- mycontext init <project-name> [--description "text"] [--framework nextjs]
117
- mycontext setup [--local] [--force] # Local AI setup
118
-
119
- # Context Generation
120
- mycontext generate context [--description "text"] # PRD + user stories
121
- mycontext generate types # TypeScript interfaces
122
- mycontext generate brand # Design system
123
- mycontext generate components-list # Component planning
124
- mycontext validate prd [--interactive] # PRD validation
112
+ **Built for developers who want AI that understands their project context.**
125
113
 
126
114
  # Core Component (Brand Anchor)
127
- mycontext core generate [name] [--group core] # Generate BrandComp
128
- mycontext core refine [--desc "improvements"] # Record refinements
129
- mycontext core ready # Mark ready for use
130
- mycontext core status # Check core status
115
+
116
+ mycontext core generate [name] [--group core] # Generate BrandComp
117
+ mycontext core refine [--desc "improvements"] # Record refinements
118
+ mycontext core ready # Mark ready for use
119
+ mycontext core status # Check core status
131
120
 
132
121
  # Component Generation
122
+
133
123
  mycontext generate-components all [--local] [--with-tests] [--check]
134
- mycontext generate-components <group> [--local] # Single group
135
- mycontext generate-components all --core-first # Core only, then stop
136
- ```
124
+ mycontext generate-components <group> [--local] # Single group
125
+ mycontext generate-components all --core-first # Core only, then stop
126
+
127
+ ````
137
128
 
138
129
  ### **AI Enhancement Commands**
139
130
 
@@ -149,7 +140,7 @@ mycontext refine <component.tsx> --rollback # Rollback changes
149
140
  --show-changes # Show detailed change breakdown
150
141
  --preserve-history # Keep refinement history
151
142
  --interactive # VS Code extension mode
152
- ```
143
+ ````
153
144
 
154
145
  ### **Project Management**
155
146
 
@@ -180,6 +171,27 @@ mycontext model reset [--force] # Reset to clean state
180
171
  mycontext model stats [--detailed] [--last 30d] # Usage statistics
181
172
  ```
182
173
 
174
+ ### **🧠 Enhanced Intelligence Commands**
175
+
176
+ ```bash
177
+ # Predictive Development (Production Ready)
178
+ mycontext predict next # Predict next development steps
179
+ mycontext predict dependencies # Suggest optimal packages and tools
180
+ mycontext predict patterns # Identify architectural patterns
181
+ mycontext predict issues # Forecast potential problems
182
+ mycontext predict optimization # Recommend performance improvements
183
+
184
+ # Agent Communication & Auto-Generation
185
+ mycontext agent-flow generate-context # Multi-agent context generation
186
+ mycontext agent-flow validate-workflow # Test agent communication system
187
+ mycontext clean # Auto-fix malformed files and issues
188
+
189
+ # Intelligence Options
190
+ --detailed # Show comprehensive analysis
191
+ --format json|table # Output format
192
+ --scope next|dependencies|patterns|issues|optimization # Prediction scope
193
+ ```
194
+
183
195
  ### **Utilities & Maintenance**
184
196
 
185
197
  ```bash
@@ -219,8 +231,12 @@ mycontext help # Detailed help
219
231
  ### **Authentication & Models**
220
232
 
221
233
  ```bash
222
- # GitHub Models (recommended - requires models:read permission)
223
- MYCONTEXT_GITHUB_TOKEN=ghp_xxx # Set in .mycontext/.env
234
+ # GitHub Models (optional - provides faster generation when available)
235
+ MYCONTEXT_GITHUB_TOKEN=ghp_xxx # Set in .mycontext/.env for faster generation
236
+
237
+ # Ollama (automatic fallback - works without API keys)
238
+ # Install Ollama locally for unlimited component generation
239
+ # No API keys required - works offline when GitHub Models is rate-limited
224
240
 
225
241
  # Alternative providers (optional)
226
242
  HUGGINGFACE_API_KEY=hf_xxx # Hugging Face fallback
@@ -0,0 +1,27 @@
1
+ import { AgentMessage, AgentIntent, AgentContext, AgentCommunicationHandler, IntentResolver, WorkflowConfig } from "../interfaces/AgentCommunication";
2
+ import { SubAgentOrchestrator } from "../orchestrator/SubAgentOrchestrator";
3
+ export declare class AgentCommunicationManager implements AgentCommunicationHandler {
4
+ private messageHistory;
5
+ private orchestrator;
6
+ private intentResolver;
7
+ constructor(orchestrator: SubAgentOrchestrator, intentResolver?: IntentResolver);
8
+ sendMessage(message: AgentMessage): Promise<void>;
9
+ receiveMessage(agentName: string): Promise<AgentMessage | null>;
10
+ broadcastMessage(message: Omit<AgentMessage, "to">): Promise<void>;
11
+ getMessageHistory(agentName?: string): Promise<AgentMessage[]>;
12
+ clearHistory(): Promise<void>;
13
+ private saveMessageLog;
14
+ runAutoWorkflow(initialAgent: string, context: AgentContext, config: WorkflowConfig): Promise<{
15
+ success: boolean;
16
+ outputs: Record<string, any>;
17
+ messages: AgentMessage[];
18
+ }>;
19
+ }
20
+ export declare class DefaultIntentResolver implements IntentResolver {
21
+ analyzeOutput(output: any, context: AgentContext): Promise<AgentIntent>;
22
+ shouldTriggerNextAgent(intent: AgentIntent, context: AgentContext): Promise<boolean>;
23
+ getNextAgent(intent: AgentIntent, context: AgentContext): Promise<string | null>;
24
+ createStarterPrompt(intent: AgentIntent, context: AgentContext): Promise<string>;
25
+ private calculateConfidence;
26
+ }
27
+ //# sourceMappingURL=AgentCommunicationManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AgentCommunicationManager.d.ts","sourceRoot":"","sources":["../../../src/agents/communication/AgentCommunicationManager.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EACZ,WAAW,EACX,YAAY,EAEZ,yBAAyB,EACzB,cAAc,EAEd,cAAc,EACf,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAAE,oBAAoB,EAAE,MAAM,sCAAsC,CAAC;AAI5E,qBAAa,yBAA0B,YAAW,yBAAyB;IACzE,OAAO,CAAC,cAAc,CAAsB;IAC5C,OAAO,CAAC,YAAY,CAAuB;IAC3C,OAAO,CAAC,cAAc,CAAiB;gBAGrC,YAAY,EAAE,oBAAoB,EAClC,cAAc,CAAC,EAAE,cAAc;IAM3B,WAAW,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAUjD,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;IAM/D,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAWlE,iBAAiB,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAO9D,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;YAIrB,cAAc;IAuBtB,eAAe,CACnB,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,YAAY,EACrB,MAAM,EAAE,cAAc,GACrB,OAAO,CAAC;QACT,OAAO,EAAE,OAAO,CAAC;QACjB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAC7B,QAAQ,EAAE,YAAY,EAAE,CAAC;KAC1B,CAAC;CAwHH;AAGD,qBAAa,qBAAsB,YAAW,cAAc;IACpD,aAAa,CACjB,MAAM,EAAE,GAAG,EACX,OAAO,EAAE,YAAY,GACpB,OAAO,CAAC,WAAW,CAAC;IA8BjB,sBAAsB,CAC1B,MAAM,EAAE,WAAW,EACnB,OAAO,EAAE,YAAY,GACpB,OAAO,CAAC,OAAO,CAAC;IAOb,YAAY,CAChB,MAAM,EAAE,WAAW,EACnB,OAAO,EAAE,YAAY,GACpB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAiBnB,mBAAmB,CACvB,MAAM,EAAE,WAAW,EACnB,OAAO,EAAE,YAAY,GACpB,OAAO,CAAC,MAAM,CAAC;IA8BlB,OAAO,CAAC,mBAAmB;CAiC5B"}
@@ -0,0 +1,293 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.DefaultIntentResolver = exports.AgentCommunicationManager = void 0;
40
+ const fs = __importStar(require("fs-extra"));
41
+ const path_1 = __importDefault(require("path"));
42
+ class AgentCommunicationManager {
43
+ constructor(orchestrator, intentResolver) {
44
+ this.messageHistory = [];
45
+ this.orchestrator = orchestrator;
46
+ this.intentResolver = intentResolver || new DefaultIntentResolver();
47
+ }
48
+ async sendMessage(message) {
49
+ this.messageHistory.push({
50
+ ...message,
51
+ timestamp: new Date().toISOString(),
52
+ });
53
+ // Save communication log for debugging
54
+ await this.saveMessageLog(message);
55
+ }
56
+ async receiveMessage(agentName) {
57
+ // Get the latest message for this agent
58
+ const messages = this.messageHistory.filter((m) => m.to === agentName);
59
+ return messages.length > 0 ? messages[messages.length - 1] : null;
60
+ }
61
+ async broadcastMessage(message) {
62
+ const agentNames = this.orchestrator.listAgents();
63
+ for (const agentName of agentNames) {
64
+ await this.sendMessage({
65
+ ...message,
66
+ to: agentName,
67
+ });
68
+ }
69
+ }
70
+ async getMessageHistory(agentName) {
71
+ if (!agentName)
72
+ return this.messageHistory;
73
+ return this.messageHistory.filter((m) => m.from === agentName || m.to === agentName);
74
+ }
75
+ async clearHistory() {
76
+ this.messageHistory = [];
77
+ }
78
+ async saveMessageLog(message) {
79
+ try {
80
+ const logDir = path_1.default.join(process.cwd(), ".mycontext", "agent-logs");
81
+ await fs.ensureDir(logDir);
82
+ const logFile = path_1.default.join(logDir, `communication-${new Date().toISOString().split("T")[0]}.json`);
83
+ let logs = [];
84
+ if (await fs.pathExists(logFile)) {
85
+ logs = await fs.readJson(logFile);
86
+ }
87
+ logs.push(message);
88
+ await fs.writeJson(logFile, logs, { spaces: 2 });
89
+ }
90
+ catch (error) {
91
+ // Silent fail - logging shouldn't break the workflow
92
+ }
93
+ }
94
+ // Auto workflow orchestration
95
+ async runAutoWorkflow(initialAgent, context, config) {
96
+ let currentAgent = initialAgent;
97
+ let outputs = {};
98
+ let retryCount = 0;
99
+ let attempts = 0;
100
+ const maxAttempts = config.agents.length * 2; // Safety limit
101
+ while (currentAgent && attempts < maxAttempts) {
102
+ attempts++;
103
+ try {
104
+ // Execute current agent
105
+ const agentOutput = await this.orchestrator.executeAgent(currentAgent, {
106
+ context,
107
+ previousOutputs: outputs,
108
+ retryCount,
109
+ });
110
+ outputs[currentAgent] = agentOutput;
111
+ // Analyze output and determine next action
112
+ const intent = await this.intentResolver.analyzeOutput(agentOutput, context);
113
+ // Send completion message
114
+ await this.sendMessage({
115
+ id: `${currentAgent}-${Date.now()}`,
116
+ from: currentAgent,
117
+ to: "coordinator",
118
+ type: "completion",
119
+ payload: { output: agentOutput, intent },
120
+ timestamp: new Date().toISOString(),
121
+ });
122
+ // Check if we should trigger next agent
123
+ if (config.enableAutoTransition &&
124
+ (await this.intentResolver.shouldTriggerNextAgent(intent, context))) {
125
+ const nextAgent = await this.intentResolver.getNextAgent(intent, context);
126
+ if (nextAgent) {
127
+ // Create starter prompt for next agent
128
+ const starterPrompt = await this.intentResolver.createStarterPrompt(intent, context);
129
+ // Update context with new starter prompt
130
+ context = {
131
+ ...context,
132
+ userPrompt: starterPrompt,
133
+ previousOutputs: outputs,
134
+ };
135
+ // Send request to next agent
136
+ await this.sendMessage({
137
+ id: `transition-${Date.now()}`,
138
+ from: currentAgent,
139
+ to: nextAgent,
140
+ type: "request",
141
+ payload: {
142
+ starterPrompt,
143
+ context: context,
144
+ intent,
145
+ },
146
+ timestamp: new Date().toISOString(),
147
+ });
148
+ currentAgent = nextAgent;
149
+ retryCount = 0;
150
+ }
151
+ else {
152
+ // No next agent, workflow complete
153
+ break;
154
+ }
155
+ }
156
+ else if (intent.action === "refine" &&
157
+ retryCount < config.retryLimit) {
158
+ // Same agent needs to retry/refine
159
+ retryCount++;
160
+ context = {
161
+ ...context,
162
+ userPrompt: intent.nextSteps?.join(" ") || "Please refine the output",
163
+ previousOutputs: outputs,
164
+ };
165
+ }
166
+ else {
167
+ // Workflow complete or max retries reached
168
+ break;
169
+ }
170
+ }
171
+ catch (error) {
172
+ await this.sendMessage({
173
+ id: `error-${Date.now()}`,
174
+ from: currentAgent,
175
+ to: "coordinator",
176
+ type: "error",
177
+ payload: { error: error.message, retryCount },
178
+ timestamp: new Date().toISOString(),
179
+ });
180
+ if (retryCount < config.retryLimit) {
181
+ retryCount++;
182
+ }
183
+ else {
184
+ break;
185
+ }
186
+ }
187
+ }
188
+ return {
189
+ success: Object.keys(outputs).length > 0,
190
+ outputs,
191
+ messages: this.messageHistory,
192
+ };
193
+ }
194
+ }
195
+ exports.AgentCommunicationManager = AgentCommunicationManager;
196
+ // Default intent resolver implementation
197
+ class DefaultIntentResolver {
198
+ async analyzeOutput(output, context) {
199
+ // Simple heuristic-based analysis
200
+ const confidence = this.calculateConfidence(output);
201
+ if (confidence < 0.3) {
202
+ return {
203
+ action: "refine",
204
+ reason: "Output quality below threshold",
205
+ confidence,
206
+ nextSteps: ["Improve output quality", "Add missing details"],
207
+ };
208
+ }
209
+ if (confidence > 0.8) {
210
+ return {
211
+ action: "complete",
212
+ reason: "High quality output achieved",
213
+ confidence,
214
+ nextSteps: ["Proceed to next stage"],
215
+ };
216
+ }
217
+ return {
218
+ action: "generate",
219
+ reason: "Acceptable output, continue workflow",
220
+ confidence,
221
+ nextSteps: ["Continue to next agent"],
222
+ };
223
+ }
224
+ async shouldTriggerNextAgent(intent, context) {
225
+ return (intent.action === "complete" ||
226
+ (intent.action === "generate" && intent.confidence > 0.6));
227
+ }
228
+ async getNextAgent(intent, context) {
229
+ // Simple sequential flow for now
230
+ const sequence = ["CodeGenSubAgent", "QASubAgent", "DocsSubAgent"];
231
+ // Find current agent in sequence (based on context)
232
+ if (context.previousOutputs) {
233
+ const completed = Object.keys(context.previousOutputs);
234
+ for (let i = 0; i < sequence.length; i++) {
235
+ if (!completed.includes(sequence[i])) {
236
+ return sequence[i];
237
+ }
238
+ }
239
+ }
240
+ return sequence[0]; // Default to first agent
241
+ }
242
+ async createStarterPrompt(intent, context) {
243
+ const basePrompt = context.userPrompt || "Generate high-quality output";
244
+ if (intent.action === "refine") {
245
+ return `${basePrompt}\n\nPlease refine the previous output with these improvements:\n${intent.nextSteps?.join("\n") || ""}`;
246
+ }
247
+ if (context.previousOutputs &&
248
+ Object.keys(context.previousOutputs).length > 0) {
249
+ const previousContext = Object.entries(context.previousOutputs)
250
+ .map(([agent, output]) => `${agent}: ${typeof output === "string"
251
+ ? output.substring(0, 200) + "..."
252
+ : "Generated output"}`)
253
+ .join("\n");
254
+ return `${basePrompt}\n\nBuild upon previous agent outputs:\n${previousContext}`;
255
+ }
256
+ return basePrompt;
257
+ }
258
+ calculateConfidence(output) {
259
+ if (!output)
260
+ return 0;
261
+ if (typeof output === "string") {
262
+ // Simple heuristics for string output
263
+ const length = output.length;
264
+ const hasStructure = output.includes("\n") || output.includes("```");
265
+ const hasDetails = length > 100;
266
+ let score = 0.5;
267
+ if (hasStructure)
268
+ score += 0.2;
269
+ if (hasDetails)
270
+ score += 0.2;
271
+ if (length > 500)
272
+ score += 0.1;
273
+ return Math.min(score, 1.0);
274
+ }
275
+ if (typeof output === "object") {
276
+ // Object-based output confidence
277
+ const keys = Object.keys(output);
278
+ const hasCode = "code" in output;
279
+ const hasMetadata = "metadata" in output;
280
+ let score = 0.6;
281
+ if (hasCode)
282
+ score += 0.2;
283
+ if (hasMetadata)
284
+ score += 0.1;
285
+ if (keys.length > 3)
286
+ score += 0.1;
287
+ return Math.min(score, 1.0);
288
+ }
289
+ return 0.5; // Default confidence
290
+ }
291
+ }
292
+ exports.DefaultIntentResolver = DefaultIntentResolver;
293
+ //# sourceMappingURL=AgentCommunicationManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AgentCommunicationManager.js","sourceRoot":"","sources":["../../../src/agents/communication/AgentCommunicationManager.ts"],"names":[],"mappings":"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"}