crewx 0.1.0 → 0.1.2
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/LICENSE +197 -9
- package/README.md +120 -28
- package/crewx.yaml +1273 -0
- package/dist/agent.types.d.ts +92 -0
- package/dist/agent.types.js +16 -0
- package/dist/agent.types.js.map +1 -0
- package/dist/ai-provider.service.d.ts +25 -0
- package/dist/ai-provider.service.js +138 -0
- package/dist/ai-provider.service.js.map +1 -0
- package/dist/ai.service.d.ts +50 -0
- package/dist/ai.service.js +625 -0
- package/dist/ai.service.js.map +1 -0
- package/dist/app.module.d.ts +5 -0
- package/dist/app.module.js +88 -0
- package/dist/app.module.js.map +1 -0
- package/dist/cli/chat.handler.d.ts +19 -0
- package/dist/cli/chat.handler.js +429 -0
- package/dist/cli/chat.handler.js.map +1 -0
- package/dist/cli/cli.handler.d.ts +4 -0
- package/dist/cli/cli.handler.js +93 -0
- package/dist/cli/cli.handler.js.map +1 -0
- package/dist/cli/doctor.handler.d.ts +36 -0
- package/dist/cli/doctor.handler.js +382 -0
- package/dist/cli/doctor.handler.js.map +1 -0
- package/dist/cli/execute.handler.d.ts +2 -0
- package/dist/cli/execute.handler.js +269 -0
- package/dist/cli/execute.handler.js.map +1 -0
- package/dist/cli/help.handler.d.ts +2 -0
- package/dist/cli/help.handler.js +10 -0
- package/dist/cli/help.handler.js.map +1 -0
- package/dist/cli/init.handler.d.ts +25 -0
- package/dist/cli/init.handler.js +355 -0
- package/dist/cli/init.handler.js.map +1 -0
- package/dist/cli/query.handler.d.ts +2 -0
- package/dist/cli/query.handler.js +351 -0
- package/dist/cli/query.handler.js.map +1 -0
- package/dist/cli/templates.handler.d.ts +2 -0
- package/dist/cli/templates.handler.js +100 -0
- package/dist/cli/templates.handler.js.map +1 -0
- package/dist/cli-options.d.ts +22 -0
- package/dist/cli-options.js +195 -0
- package/dist/cli-options.js.map +1 -0
- package/dist/config/timeout.config.d.ts +14 -0
- package/dist/config/timeout.config.js +34 -0
- package/dist/config/timeout.config.js.map +1 -0
- package/dist/constants.d.ts +4 -0
- package/dist/constants.js +8 -0
- package/dist/constants.js.map +1 -0
- package/dist/conversation/base-conversation-history.provider.d.ts +12 -0
- package/dist/conversation/base-conversation-history.provider.js +45 -0
- package/dist/conversation/base-conversation-history.provider.js.map +1 -0
- package/dist/conversation/cli-conversation-history.provider.d.ts +16 -0
- package/dist/conversation/cli-conversation-history.provider.js +104 -0
- package/dist/conversation/cli-conversation-history.provider.js.map +1 -0
- package/dist/conversation/conversation-config.d.ts +9 -0
- package/dist/conversation/conversation-config.js +25 -0
- package/dist/conversation/conversation-config.js.map +1 -0
- package/dist/conversation/conversation-history.interface.d.ts +25 -0
- package/dist/conversation/conversation-history.interface.js +3 -0
- package/dist/conversation/conversation-history.interface.js.map +1 -0
- package/dist/conversation/conversation-provider.factory.d.ts +10 -0
- package/dist/conversation/conversation-provider.factory.js +50 -0
- package/dist/conversation/conversation-provider.factory.js.map +1 -0
- package/dist/conversation/conversation-storage.service.d.ts +15 -0
- package/dist/conversation/conversation-storage.service.js +182 -0
- package/dist/conversation/conversation-storage.service.js.map +1 -0
- package/dist/conversation/index.d.ts +7 -0
- package/dist/conversation/index.js +24 -0
- package/dist/conversation/index.js.map +1 -0
- package/dist/conversation/slack-conversation-history.provider.d.ts +22 -0
- package/dist/conversation/slack-conversation-history.provider.js +239 -0
- package/dist/conversation/slack-conversation-history.provider.js.map +1 -0
- package/dist/crewx.tool.d.ts +421 -0
- package/dist/crewx.tool.js +1240 -0
- package/dist/crewx.tool.js.map +1 -0
- package/dist/knowledge/DocumentManager.d.ts +4 -0
- package/dist/knowledge/DocumentManager.js +119 -0
- package/dist/knowledge/DocumentManager.js.map +1 -0
- package/dist/main.d.ts +1 -0
- package/dist/main.js +230 -0
- package/dist/main.js.map +1 -0
- package/dist/mcp.controller.d.ts +8 -0
- package/dist/mcp.controller.js +60 -0
- package/dist/mcp.controller.js.map +1 -0
- package/dist/project.service.d.ts +44 -0
- package/dist/project.service.js +299 -0
- package/dist/project.service.js.map +1 -0
- package/dist/providers/ai-provider.interface.d.ts +30 -0
- package/dist/providers/ai-provider.interface.js +11 -0
- package/dist/providers/ai-provider.interface.js.map +1 -0
- package/dist/providers/base-ai.provider.d.ts +42 -0
- package/dist/providers/base-ai.provider.js +515 -0
- package/dist/providers/base-ai.provider.js.map +1 -0
- package/dist/providers/claude.provider.d.ts +25 -0
- package/dist/providers/claude.provider.js +376 -0
- package/dist/providers/claude.provider.js.map +1 -0
- package/dist/providers/copilot.provider.d.ts +25 -0
- package/dist/providers/copilot.provider.js +280 -0
- package/dist/providers/copilot.provider.js.map +1 -0
- package/dist/providers/gemini.provider.d.ts +22 -0
- package/dist/providers/gemini.provider.js +163 -0
- package/dist/providers/gemini.provider.js.map +1 -0
- package/dist/services/agent-loader.service.d.ts +23 -0
- package/dist/services/agent-loader.service.js +313 -0
- package/dist/services/agent-loader.service.js.map +1 -0
- package/dist/services/config-validator.service.d.ts +28 -0
- package/dist/services/config-validator.service.js +427 -0
- package/dist/services/config-validator.service.js.map +1 -0
- package/dist/services/config.service.d.ts +25 -0
- package/dist/services/config.service.js +102 -0
- package/dist/services/config.service.js.map +1 -0
- package/dist/services/context-enhancement.service.d.ts +13 -0
- package/dist/services/context-enhancement.service.js +169 -0
- package/dist/services/context-enhancement.service.js.map +1 -0
- package/dist/services/document-loader.service.d.ts +16 -0
- package/dist/services/document-loader.service.js +137 -0
- package/dist/services/document-loader.service.js.map +1 -0
- package/dist/services/help.service.d.ts +5 -0
- package/dist/services/help.service.js +112 -0
- package/dist/services/help.service.js.map +1 -0
- package/dist/services/intelligent-compression.service.d.ts +20 -0
- package/dist/services/intelligent-compression.service.js +179 -0
- package/dist/services/intelligent-compression.service.js.map +1 -0
- package/dist/services/parallel-processing.service.d.ts +108 -0
- package/dist/services/parallel-processing.service.js +266 -0
- package/dist/services/parallel-processing.service.js.map +1 -0
- package/dist/services/result-formatter.service.d.ts +27 -0
- package/dist/services/result-formatter.service.js +126 -0
- package/dist/services/result-formatter.service.js.map +1 -0
- package/dist/services/task-management.service.d.ts +63 -0
- package/dist/services/task-management.service.js +270 -0
- package/dist/services/task-management.service.js.map +1 -0
- package/dist/services/template.service.d.ts +36 -0
- package/dist/services/template.service.js +195 -0
- package/dist/services/template.service.js.map +1 -0
- package/dist/services/tool-call.service.d.ts +53 -0
- package/dist/services/tool-call.service.js +819 -0
- package/dist/services/tool-call.service.js.map +1 -0
- package/dist/slack/formatters/message.formatter.d.ts +25 -0
- package/dist/slack/formatters/message.formatter.js +246 -0
- package/dist/slack/formatters/message.formatter.js.map +1 -0
- package/dist/slack/slack-bot.d.ts +23 -0
- package/dist/slack/slack-bot.js +435 -0
- package/dist/slack/slack-bot.js.map +1 -0
- package/dist/stderr.logger.d.ts +8 -0
- package/dist/stderr.logger.js +26 -0
- package/dist/stderr.logger.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/dist/utils/config-utils.d.ts +15 -0
- package/dist/utils/config-utils.js +69 -0
- package/dist/utils/config-utils.js.map +1 -0
- package/dist/utils/error-utils.d.ts +3 -0
- package/dist/utils/error-utils.js +27 -0
- package/dist/utils/error-utils.js.map +1 -0
- package/dist/utils/math-utils.d.ts +3 -0
- package/dist/utils/math-utils.js +10 -0
- package/dist/utils/math-utils.js.map +1 -0
- package/dist/utils/mcp-installer.d.ts +20 -0
- package/dist/utils/mcp-installer.js +199 -0
- package/dist/utils/mcp-installer.js.map +1 -0
- package/dist/utils/mention-parser.d.ts +18 -0
- package/dist/utils/mention-parser.js +136 -0
- package/dist/utils/mention-parser.js.map +1 -0
- package/dist/utils/simple-security.d.ts +3 -0
- package/dist/utils/simple-security.js +20 -0
- package/dist/utils/simple-security.js.map +1 -0
- package/dist/utils/stdin-utils.d.ts +2 -0
- package/dist/utils/stdin-utils.js +87 -0
- package/dist/utils/stdin-utils.js.map +1 -0
- package/dist/utils/string-utils.d.ts +1 -0
- package/dist/utils/string-utils.js +10 -0
- package/dist/utils/string-utils.js.map +1 -0
- package/dist/utils/template-processor.d.ts +32 -0
- package/dist/utils/template-processor.js +188 -0
- package/dist/utils/template-processor.js.map +1 -0
- package/docs/agent-configuration.md +373 -0
- package/docs/agent-registry-strategy.md +348 -0
- package/docs/branding-decision-crewx.md +395 -0
- package/docs/claude-code-docker-guide.md +264 -0
- package/docs/cli-guide.md +295 -0
- package/docs/development.md +595 -0
- package/docs/guides/agent-best-practices.md +97 -0
- package/docs/guides/bug-management.md +600 -0
- package/docs/guides/git-bug-reference.md +366 -0
- package/docs/mcp-integration.md +187 -0
- package/docs/process/development-workflow.md +84 -0
- package/docs/roadmap.md +528 -0
- package/docs/rules/branch-protection.md +40 -0
- package/docs/standards/rc-versioning.md +60 -0
- package/docs/standards/report-structure.md +67 -0
- package/docs/templates.md +517 -0
- package/docs/tools.md +583 -0
- package/docs/troubleshooting.md +585 -0
- package/package.json +106 -21
- package/bin/crewx.js +0 -20
|
@@ -0,0 +1,169 @@
|
|
|
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 __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
19
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
20
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
21
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
22
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
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 ContextEnhancementService_1;
|
|
42
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
43
|
+
exports.ContextEnhancementService = void 0;
|
|
44
|
+
const common_1 = require("@nestjs/common");
|
|
45
|
+
const fs = __importStar(require("fs"));
|
|
46
|
+
const path = __importStar(require("path"));
|
|
47
|
+
const os = __importStar(require("os"));
|
|
48
|
+
let ContextEnhancementService = ContextEnhancementService_1 = class ContextEnhancementService {
|
|
49
|
+
constructor() {
|
|
50
|
+
this.logger = new common_1.Logger(ContextEnhancementService_1.name);
|
|
51
|
+
this.projectContextCache = new Map();
|
|
52
|
+
this.CACHE_TTL = 30000;
|
|
53
|
+
}
|
|
54
|
+
async loadProjectContext(workingDir) {
|
|
55
|
+
const cacheKey = workingDir;
|
|
56
|
+
const cached = this.projectContextCache.get(cacheKey);
|
|
57
|
+
if (cached && Date.now() - cached.timestamp < this.CACHE_TTL) {
|
|
58
|
+
this.logger.debug(`Using cached project context for ${workingDir}`);
|
|
59
|
+
return cached.content;
|
|
60
|
+
}
|
|
61
|
+
const claudeMdPaths = [
|
|
62
|
+
path.join(workingDir, 'CLAUDE.md'),
|
|
63
|
+
path.join(workingDir, '.claude/CLAUDE.md'),
|
|
64
|
+
path.join(os.homedir(), '.claude/CLAUDE.md')
|
|
65
|
+
];
|
|
66
|
+
let projectContext = '';
|
|
67
|
+
for (const claudeMdPath of claudeMdPaths) {
|
|
68
|
+
try {
|
|
69
|
+
if (fs.existsSync(claudeMdPath)) {
|
|
70
|
+
const content = fs.readFileSync(claudeMdPath, 'utf-8');
|
|
71
|
+
projectContext += `\n# Project Context from ${path.basename(claudeMdPath)}\n${content}`;
|
|
72
|
+
this.logger.debug(`Loaded project context from ${claudeMdPath}`);
|
|
73
|
+
break;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
catch (error) {
|
|
77
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
78
|
+
this.logger.warn(`Failed to read ${claudeMdPath}: ${errorMessage}`);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
if (projectContext) {
|
|
82
|
+
this.projectContextCache.set(cacheKey, {
|
|
83
|
+
content: projectContext,
|
|
84
|
+
timestamp: Date.now()
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
return projectContext;
|
|
88
|
+
}
|
|
89
|
+
async enhancePromptWithProjectContext(prompt, workingDir, options) {
|
|
90
|
+
const includeProjectContext = options?.includeProjectContext ?? true;
|
|
91
|
+
const maxLength = options?.maxProjectContextLength ?? 2000;
|
|
92
|
+
if (!includeProjectContext) {
|
|
93
|
+
return prompt;
|
|
94
|
+
}
|
|
95
|
+
const projectContext = await this.loadProjectContext(workingDir);
|
|
96
|
+
if (!projectContext) {
|
|
97
|
+
return prompt;
|
|
98
|
+
}
|
|
99
|
+
const truncatedContext = projectContext.length > maxLength
|
|
100
|
+
? projectContext.substring(0, maxLength) + '\n... (truncated)'
|
|
101
|
+
: projectContext;
|
|
102
|
+
return `${truncatedContext}\n\n---\n\n${prompt}`;
|
|
103
|
+
}
|
|
104
|
+
async hasProjectContext(workingDir) {
|
|
105
|
+
const claudeMdPaths = [
|
|
106
|
+
path.join(workingDir, 'CLAUDE.md'),
|
|
107
|
+
path.join(workingDir, '.claude/CLAUDE.md'),
|
|
108
|
+
path.join(os.homedir(), '.claude/CLAUDE.md')
|
|
109
|
+
];
|
|
110
|
+
return claudeMdPaths.some(filePath => fs.existsSync(filePath));
|
|
111
|
+
}
|
|
112
|
+
async createSampleClaudeMd(workingDir, projectName) {
|
|
113
|
+
const claudeDir = path.join(workingDir, '.claude');
|
|
114
|
+
const claudeMdPath = path.join(claudeDir, 'CLAUDE.md');
|
|
115
|
+
if (!fs.existsSync(claudeDir)) {
|
|
116
|
+
fs.mkdirSync(claudeDir, { recursive: true });
|
|
117
|
+
}
|
|
118
|
+
const sampleContent = `# ${projectName || 'Project'} Context
|
|
119
|
+
|
|
120
|
+
## Project Overview
|
|
121
|
+
This project uses CodeCrew for multi-AI agent collaboration.
|
|
122
|
+
|
|
123
|
+
## Key Architecture Points
|
|
124
|
+
- NestJS-based MCP server architecture
|
|
125
|
+
- Multiple AI provider integration (Claude, Gemini, Copilot)
|
|
126
|
+
- Conversation history management with pluggable providers
|
|
127
|
+
- Slack and CLI interfaces
|
|
128
|
+
|
|
129
|
+
## Coding Conventions
|
|
130
|
+
- Use NestJS dependency injection patterns
|
|
131
|
+
- Follow SOLID principles
|
|
132
|
+
- Implement comprehensive error handling
|
|
133
|
+
- Write unit and integration tests
|
|
134
|
+
|
|
135
|
+
## Current Focus
|
|
136
|
+
Implementing enhanced context management with Claude Agent SDK integration.
|
|
137
|
+
|
|
138
|
+
## Important Files
|
|
139
|
+
- \`src/services/\`: Core business logic services
|
|
140
|
+
- \`src/providers/\`: AI provider implementations
|
|
141
|
+
- \`src/conversation/\`: Conversation history management
|
|
142
|
+
- \`agents.yaml\`: Agent configuration
|
|
143
|
+
|
|
144
|
+
## Development Notes
|
|
145
|
+
- Use TypeScript strict mode
|
|
146
|
+
- Follow the existing provider pattern for new integrations
|
|
147
|
+
- Maintain backward compatibility with existing CLI interfaces
|
|
148
|
+
`;
|
|
149
|
+
try {
|
|
150
|
+
fs.writeFileSync(claudeMdPath, sampleContent, 'utf-8');
|
|
151
|
+
this.logger.log(`Created sample CLAUDE.md at ${claudeMdPath}`);
|
|
152
|
+
return claudeMdPath;
|
|
153
|
+
}
|
|
154
|
+
catch (error) {
|
|
155
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
156
|
+
this.logger.error(`Failed to create CLAUDE.md: ${errorMessage}`);
|
|
157
|
+
throw error;
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
clearCache() {
|
|
161
|
+
this.projectContextCache.clear();
|
|
162
|
+
this.logger.debug('Project context cache cleared');
|
|
163
|
+
}
|
|
164
|
+
};
|
|
165
|
+
exports.ContextEnhancementService = ContextEnhancementService;
|
|
166
|
+
exports.ContextEnhancementService = ContextEnhancementService = ContextEnhancementService_1 = __decorate([
|
|
167
|
+
(0, common_1.Injectable)()
|
|
168
|
+
], ContextEnhancementService);
|
|
169
|
+
//# sourceMappingURL=context-enhancement.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context-enhancement.service.js","sourceRoot":"","sources":["../../src/services/context-enhancement.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export declare class DocumentLoaderService {
|
|
2
|
+
private readonly logger;
|
|
3
|
+
private documents;
|
|
4
|
+
private initialized;
|
|
5
|
+
initialize(agentsYamlDocuments?: Record<string, string | {
|
|
6
|
+
path: string;
|
|
7
|
+
name?: string;
|
|
8
|
+
}>, projectPath?: string): Promise<void>;
|
|
9
|
+
private loadFileContent;
|
|
10
|
+
reset(): void;
|
|
11
|
+
isInitialized(): boolean;
|
|
12
|
+
getDocumentContent(docName: string): Promise<string | undefined>;
|
|
13
|
+
getDocumentToc(docName: string): Promise<string | undefined>;
|
|
14
|
+
getDocumentSummary(_docName: string): Promise<string | undefined>;
|
|
15
|
+
getDocumentNames(): string[];
|
|
16
|
+
}
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
9
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
10
|
+
};
|
|
11
|
+
var DocumentLoaderService_1;
|
|
12
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
+
exports.DocumentLoaderService = void 0;
|
|
14
|
+
const common_1 = require("@nestjs/common");
|
|
15
|
+
const promises_1 = require("fs/promises");
|
|
16
|
+
const path_1 = require("path");
|
|
17
|
+
const unified_1 = require("unified");
|
|
18
|
+
const remark_parse_1 = __importDefault(require("remark-parse"));
|
|
19
|
+
const unist_util_visit_1 = require("unist-util-visit");
|
|
20
|
+
let DocumentLoaderService = DocumentLoaderService_1 = class DocumentLoaderService {
|
|
21
|
+
constructor() {
|
|
22
|
+
this.logger = new common_1.Logger(DocumentLoaderService_1.name);
|
|
23
|
+
this.documents = new Map();
|
|
24
|
+
this.initialized = false;
|
|
25
|
+
}
|
|
26
|
+
async initialize(agentsYamlDocuments, projectPath) {
|
|
27
|
+
if (this.initialized) {
|
|
28
|
+
this.logger.debug('DocumentLoaderService re-initializing to merge additional documents');
|
|
29
|
+
}
|
|
30
|
+
else {
|
|
31
|
+
this.documents.clear();
|
|
32
|
+
}
|
|
33
|
+
if (!agentsYamlDocuments) {
|
|
34
|
+
this.logger.log('No documents provided in agents.yaml');
|
|
35
|
+
this.initialized = true;
|
|
36
|
+
return;
|
|
37
|
+
}
|
|
38
|
+
for (const [docName, config] of Object.entries(agentsYamlDocuments)) {
|
|
39
|
+
if (typeof config === 'string') {
|
|
40
|
+
this.documents.set(docName, config);
|
|
41
|
+
this.logger.debug(`Loaded inline document: ${docName} (${config.length} chars)`);
|
|
42
|
+
}
|
|
43
|
+
else if (config && typeof config === 'object' && 'path' in config) {
|
|
44
|
+
try {
|
|
45
|
+
const content = await this.loadFileContent(config.path, projectPath);
|
|
46
|
+
this.documents.set(docName, content);
|
|
47
|
+
this.logger.debug(`Loaded file document: ${docName} from ${config.path} (${content.length} chars)`);
|
|
48
|
+
}
|
|
49
|
+
catch (error) {
|
|
50
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
51
|
+
this.logger.warn(`Failed to load document '${docName}' from ${config.path}: ${errorMessage}`);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
else {
|
|
55
|
+
this.logger.warn(`Skipping document '${docName}': unsupported format (must be string or {path: "..."})`);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
this.logger.log(`Loaded ${this.documents.size} documents from agents.yaml`);
|
|
59
|
+
this.initialized = true;
|
|
60
|
+
}
|
|
61
|
+
async loadFileContent(filePath, basePath) {
|
|
62
|
+
const absolutePath = (0, path_1.isAbsolute)(filePath)
|
|
63
|
+
? filePath
|
|
64
|
+
: basePath
|
|
65
|
+
? (0, path_1.join)(basePath, filePath)
|
|
66
|
+
: filePath;
|
|
67
|
+
await (0, promises_1.access)(absolutePath);
|
|
68
|
+
return await (0, promises_1.readFile)(absolutePath, 'utf-8');
|
|
69
|
+
}
|
|
70
|
+
reset() {
|
|
71
|
+
this.documents.clear();
|
|
72
|
+
this.initialized = false;
|
|
73
|
+
}
|
|
74
|
+
isInitialized() {
|
|
75
|
+
return this.initialized;
|
|
76
|
+
}
|
|
77
|
+
async getDocumentContent(docName) {
|
|
78
|
+
return this.documents.get(docName);
|
|
79
|
+
}
|
|
80
|
+
async getDocumentToc(docName) {
|
|
81
|
+
const content = this.documents.get(docName);
|
|
82
|
+
if (!content) {
|
|
83
|
+
return undefined;
|
|
84
|
+
}
|
|
85
|
+
try {
|
|
86
|
+
const tree = (0, unified_1.unified)().use(remark_parse_1.default).parse(content);
|
|
87
|
+
const headings = [];
|
|
88
|
+
(0, unist_util_visit_1.visit)(tree, 'heading', (node) => {
|
|
89
|
+
const text = node.children
|
|
90
|
+
.map(child => {
|
|
91
|
+
if (child.type === 'text') {
|
|
92
|
+
return child.value;
|
|
93
|
+
}
|
|
94
|
+
if (child.type === 'inlineCode') {
|
|
95
|
+
return child.value;
|
|
96
|
+
}
|
|
97
|
+
if (child.type === 'strong' && 'children' in child) {
|
|
98
|
+
return child.children.map(c => c.value || '').join('');
|
|
99
|
+
}
|
|
100
|
+
if (child.type === 'emphasis' && 'children' in child) {
|
|
101
|
+
return child.children.map(c => c.value || '').join('');
|
|
102
|
+
}
|
|
103
|
+
return '';
|
|
104
|
+
})
|
|
105
|
+
.join('');
|
|
106
|
+
headings.push({
|
|
107
|
+
depth: node.depth,
|
|
108
|
+
text: text.trim()
|
|
109
|
+
});
|
|
110
|
+
});
|
|
111
|
+
if (headings.length === 0) {
|
|
112
|
+
return undefined;
|
|
113
|
+
}
|
|
114
|
+
return headings
|
|
115
|
+
.map(({ depth, text }) => {
|
|
116
|
+
const indent = ' '.repeat(depth - 1);
|
|
117
|
+
return `${indent}- ${text}`;
|
|
118
|
+
})
|
|
119
|
+
.join('\n');
|
|
120
|
+
}
|
|
121
|
+
catch (error) {
|
|
122
|
+
this.logger.warn(`Failed to extract TOC from document '${docName}': ${error instanceof Error ? error.message : String(error)}`);
|
|
123
|
+
return undefined;
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
async getDocumentSummary(_docName) {
|
|
127
|
+
return undefined;
|
|
128
|
+
}
|
|
129
|
+
getDocumentNames() {
|
|
130
|
+
return Array.from(this.documents.keys());
|
|
131
|
+
}
|
|
132
|
+
};
|
|
133
|
+
exports.DocumentLoaderService = DocumentLoaderService;
|
|
134
|
+
exports.DocumentLoaderService = DocumentLoaderService = DocumentLoaderService_1 = __decorate([
|
|
135
|
+
(0, common_1.Injectable)()
|
|
136
|
+
], DocumentLoaderService);
|
|
137
|
+
//# sourceMappingURL=document-loader.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"document-loader.service.js","sourceRoot":"","sources":["../../src/services/document-loader.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
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.HelpService = void 0;
|
|
13
|
+
const common_1 = require("@nestjs/common");
|
|
14
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
15
|
+
const fs_1 = require("fs");
|
|
16
|
+
const path_1 = require("path");
|
|
17
|
+
let HelpService = class HelpService {
|
|
18
|
+
getPackageInfo() {
|
|
19
|
+
try {
|
|
20
|
+
const packagePath = (0, path_1.join)(process.cwd(), 'package.json');
|
|
21
|
+
const packageContent = (0, fs_1.readFileSync)(packagePath, 'utf8');
|
|
22
|
+
const packageJson = JSON.parse(packageContent);
|
|
23
|
+
return {
|
|
24
|
+
version: packageJson.version || '0.1.1',
|
|
25
|
+
repository: packageJson.repository?.url || 'https://github.com/sowonlabs/crewx'
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
catch (error) {
|
|
29
|
+
return {
|
|
30
|
+
version: '0.1.1',
|
|
31
|
+
repository: 'https://github.com/sowonlabs/crewx'
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
showHelp() {
|
|
36
|
+
const { version, repository } = this.getPackageInfo();
|
|
37
|
+
console.log(chalk_1.default.bold.cyan(`
|
|
38
|
+
CrewX CLI v${version} - AI-Powered Development Team at Your Fingertips
|
|
39
|
+
`));
|
|
40
|
+
console.log(chalk_1.default.bold('========================================================='));
|
|
41
|
+
console.log(chalk_1.default.yellow(`
|
|
42
|
+
Welcome to CrewX!
|
|
43
|
+
|
|
44
|
+
CrewX is a multi-AI agent collaboration platform designed to streamline your
|
|
45
|
+
development workflow. You can assign tasks to different AI agents, each with
|
|
46
|
+
their own specialization, and get results in parallel.
|
|
47
|
+
`));
|
|
48
|
+
console.log(chalk_1.default.bold.white('USAGE:'));
|
|
49
|
+
console.log(chalk_1.default.white(` $ crewx <command> [options] "[prompt] [@agent1 @agent2 ...]"
|
|
50
|
+
`));
|
|
51
|
+
console.log(chalk_1.default.bold.white('COMMANDS:'));
|
|
52
|
+
this.showCommandHelp('query, q', 'Ask a question or assign a high-level task. Ideal for analysis, design, and complex problem-solving.', [
|
|
53
|
+
'crewx query "@claude Analyze our authentication flow for potential security vulnerabilities."',
|
|
54
|
+
'crewx q "@claude:opus Design a database schema for a simple e-commerce site."',
|
|
55
|
+
'crewx q "@copilot What are the best practices for building a scalable REST API in Node.js?"',
|
|
56
|
+
]);
|
|
57
|
+
this.showCommandHelp('execute, x', 'Give a direct order to write or modify code. Best for implementation-focused tasks.', [
|
|
58
|
+
'crewx execute "@gemini Implement a function that calculates the factorial of a number in TypeScript."',
|
|
59
|
+
'crewx x "@copilot:gpt-5 Refactor the \'userService.ts\' file to use async/await instead of promises."',
|
|
60
|
+
'crewx x "@copilot Create a new React component called \'UserProfile\' with a form to update user details."',
|
|
61
|
+
]);
|
|
62
|
+
this.showCommandHelp('init', 'Initializes a new CrewX project, creating a default `crewx.yaml` configuration file.', ['crewx init']);
|
|
63
|
+
this.showCommandHelp('doctor', 'Checks the health and status of your configured AI providers (e.g., Gemini, Claude, Copilot).', ['crewx doctor']);
|
|
64
|
+
this.showCommandHelp('mcp', 'Starts the Model Context Protocol (MCP) server for integration with IDEs like VS Code.', ['crewx mcp']);
|
|
65
|
+
this.showCommandHelp('chat', 'Start an interactive chat session with conversation history. Maintains context across messages.', [
|
|
66
|
+
'crewx chat',
|
|
67
|
+
'crewx chat --thread my-session',
|
|
68
|
+
'crewx chat --list',
|
|
69
|
+
'crewx chat --delete my-session',
|
|
70
|
+
]);
|
|
71
|
+
this.showCommandHelp('slack', 'Starts the Slack bot integration for team collaboration.', [
|
|
72
|
+
'crewx slack',
|
|
73
|
+
'crewx slack --agent gemini',
|
|
74
|
+
'crewx slack --agent copilot'
|
|
75
|
+
]);
|
|
76
|
+
this.showCommandHelp('help', 'Shows this help message.', ['crewx help']);
|
|
77
|
+
console.log(chalk_1.default.bold.white('\nAGENT SPECIALIZATIONS:'));
|
|
78
|
+
console.log(chalk_1.default.white(`
|
|
79
|
+
You can direct tasks to agents by mentioning them with '@'. Each agent has a
|
|
80
|
+
unique strength:
|
|
81
|
+
|
|
82
|
+
- ${chalk_1.default.bold('@claude')} : Excels at complex reasoning, system design, and architectural decisions.
|
|
83
|
+
- ${chalk_1.default.bold('@copilot')} : Your go-to for implementation, best practices, and generating code.
|
|
84
|
+
- ${chalk_1.default.bold('@gemini')} : Specialized in performance analysis, data structures, and algorithms.
|
|
85
|
+
|
|
86
|
+
You can query multiple agents at once for a collaborative effort:
|
|
87
|
+
${chalk_1.default.gray('$ crewx query "@claude @gemini Review this code for bugs and suggest performance improvements"')}
|
|
88
|
+
`));
|
|
89
|
+
console.log(chalk_1.default.bold.white('\nOPTIONS:'));
|
|
90
|
+
console.log(chalk_1.default.white(` -c, --config <file> Path to the agent configuration file (default: "crewx.yaml")`));
|
|
91
|
+
console.log(chalk_1.default.white(` --log Enable detailed logging for debugging.`));
|
|
92
|
+
console.log(chalk_1.default.white(` -h, --help Show this help message.`));
|
|
93
|
+
console.log(chalk_1.default.bold.cyan(`
|
|
94
|
+
For more information, visit: ${repository}`));
|
|
95
|
+
}
|
|
96
|
+
showCommandHelp(name, description, examples) {
|
|
97
|
+
console.log(chalk_1.default.bold.green(`
|
|
98
|
+
${name}`));
|
|
99
|
+
console.log(chalk_1.default.white(` ${description}`));
|
|
100
|
+
if (examples.length > 0) {
|
|
101
|
+
console.log(chalk_1.default.gray(' Examples:'));
|
|
102
|
+
examples.forEach(example => {
|
|
103
|
+
console.log(chalk_1.default.gray(` $ ${example}`));
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
};
|
|
108
|
+
exports.HelpService = HelpService;
|
|
109
|
+
exports.HelpService = HelpService = __decorate([
|
|
110
|
+
(0, common_1.Injectable)()
|
|
111
|
+
], HelpService);
|
|
112
|
+
//# sourceMappingURL=help.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"help.service.js","sourceRoot":"","sources":["../../src/services/help.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { ConversationThread } from '../conversation/conversation-history.interface';
|
|
2
|
+
export declare class IntelligentCompressionService {
|
|
3
|
+
private readonly logger;
|
|
4
|
+
compressConversationHistory(thread: ConversationThread, options?: {
|
|
5
|
+
maxTokens?: number;
|
|
6
|
+
maxMessages?: number;
|
|
7
|
+
preserveRecentCount?: number;
|
|
8
|
+
preserveImportant?: boolean;
|
|
9
|
+
}): Promise<string>;
|
|
10
|
+
private identifyImportantMessages;
|
|
11
|
+
private isImportantMessage;
|
|
12
|
+
private applyCompressionStrategy;
|
|
13
|
+
private summarizeImportantMessages;
|
|
14
|
+
private summarizeMessage;
|
|
15
|
+
private generateContextSummary;
|
|
16
|
+
private extractTopics;
|
|
17
|
+
private identifyPatterns;
|
|
18
|
+
private estimateTokens;
|
|
19
|
+
private applyFinalCompression;
|
|
20
|
+
}
|