@sowonai/crewx-cli 0.4.0-dev.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (173) hide show
  1. package/README.md +529 -0
  2. package/dist/ai-provider.service.d.ts +36 -0
  3. package/dist/ai-provider.service.js +191 -0
  4. package/dist/ai-provider.service.js.map +1 -0
  5. package/dist/ai.service.d.ts +57 -0
  6. package/dist/ai.service.js +628 -0
  7. package/dist/ai.service.js.map +1 -0
  8. package/dist/app.module.d.ts +5 -0
  9. package/dist/app.module.js +103 -0
  10. package/dist/app.module.js.map +1 -0
  11. package/dist/cli/agent.handler.d.ts +2 -0
  12. package/dist/cli/agent.handler.js +140 -0
  13. package/dist/cli/agent.handler.js.map +1 -0
  14. package/dist/cli/chat.handler.d.ts +19 -0
  15. package/dist/cli/chat.handler.js +431 -0
  16. package/dist/cli/chat.handler.js.map +1 -0
  17. package/dist/cli/cli.handler.d.ts +4 -0
  18. package/dist/cli/cli.handler.js +97 -0
  19. package/dist/cli/cli.handler.js.map +1 -0
  20. package/dist/cli/doctor.handler.d.ts +36 -0
  21. package/dist/cli/doctor.handler.js +382 -0
  22. package/dist/cli/doctor.handler.js.map +1 -0
  23. package/dist/cli/execute.handler.d.ts +2 -0
  24. package/dist/cli/execute.handler.js +319 -0
  25. package/dist/cli/execute.handler.js.map +1 -0
  26. package/dist/cli/help.handler.d.ts +2 -0
  27. package/dist/cli/help.handler.js +10 -0
  28. package/dist/cli/help.handler.js.map +1 -0
  29. package/dist/cli/init.handler.d.ts +26 -0
  30. package/dist/cli/init.handler.js +450 -0
  31. package/dist/cli/init.handler.js.map +1 -0
  32. package/dist/cli/mcp.handler.d.ts +3 -0
  33. package/dist/cli/mcp.handler.js +121 -0
  34. package/dist/cli/mcp.handler.js.map +1 -0
  35. package/dist/cli/query.handler.d.ts +2 -0
  36. package/dist/cli/query.handler.js +380 -0
  37. package/dist/cli/query.handler.js.map +1 -0
  38. package/dist/cli/templates.handler.d.ts +2 -0
  39. package/dist/cli/templates.handler.js +100 -0
  40. package/dist/cli/templates.handler.js.map +1 -0
  41. package/dist/cli-options.d.ts +29 -0
  42. package/dist/cli-options.js +234 -0
  43. package/dist/cli-options.js.map +1 -0
  44. package/dist/config/timeout.config.d.ts +14 -0
  45. package/dist/config/timeout.config.js +34 -0
  46. package/dist/config/timeout.config.js.map +1 -0
  47. package/dist/conversation/base-conversation-history.provider.d.ts +12 -0
  48. package/dist/conversation/base-conversation-history.provider.js +45 -0
  49. package/dist/conversation/base-conversation-history.provider.js.map +1 -0
  50. package/dist/conversation/cli-conversation-history.provider.d.ts +16 -0
  51. package/dist/conversation/cli-conversation-history.provider.js +111 -0
  52. package/dist/conversation/cli-conversation-history.provider.js.map +1 -0
  53. package/dist/conversation/conversation-provider.factory.d.ts +10 -0
  54. package/dist/conversation/conversation-provider.factory.js +50 -0
  55. package/dist/conversation/conversation-provider.factory.js.map +1 -0
  56. package/dist/conversation/index.d.ts +6 -0
  57. package/dist/conversation/index.js +27 -0
  58. package/dist/conversation/index.js.map +1 -0
  59. package/dist/conversation/slack-conversation-history.provider.d.ts +28 -0
  60. package/dist/conversation/slack-conversation-history.provider.js +278 -0
  61. package/dist/conversation/slack-conversation-history.provider.js.map +1 -0
  62. package/dist/crewx.tool.d.ts +332 -0
  63. package/dist/crewx.tool.js +1461 -0
  64. package/dist/crewx.tool.js.map +1 -0
  65. package/dist/guards/bearer-auth.guard.d.ts +7 -0
  66. package/dist/guards/bearer-auth.guard.js +44 -0
  67. package/dist/guards/bearer-auth.guard.js.map +1 -0
  68. package/dist/health.controller.d.ts +6 -0
  69. package/dist/health.controller.js +32 -0
  70. package/dist/health.controller.js.map +1 -0
  71. package/dist/main.d.ts +1 -0
  72. package/dist/main.js +267 -0
  73. package/dist/main.js.map +1 -0
  74. package/dist/mcp.controller.d.ts +8 -0
  75. package/dist/mcp.controller.js +62 -0
  76. package/dist/mcp.controller.js.map +1 -0
  77. package/dist/project.service.d.ts +44 -0
  78. package/dist/project.service.js +299 -0
  79. package/dist/project.service.js.map +1 -0
  80. package/dist/providers/base-ai.provider.d.ts +50 -0
  81. package/dist/providers/base-ai.provider.js +624 -0
  82. package/dist/providers/base-ai.provider.js.map +1 -0
  83. package/dist/providers/claude.provider.d.ts +25 -0
  84. package/dist/providers/claude.provider.js +362 -0
  85. package/dist/providers/claude.provider.js.map +1 -0
  86. package/dist/providers/codex.provider.d.ts +17 -0
  87. package/dist/providers/codex.provider.js +99 -0
  88. package/dist/providers/codex.provider.js.map +1 -0
  89. package/dist/providers/copilot.provider.d.ts +25 -0
  90. package/dist/providers/copilot.provider.js +266 -0
  91. package/dist/providers/copilot.provider.js.map +1 -0
  92. package/dist/providers/dynamic-provider.factory.d.ts +55 -0
  93. package/dist/providers/dynamic-provider.factory.js +586 -0
  94. package/dist/providers/dynamic-provider.factory.js.map +1 -0
  95. package/dist/providers/gemini.provider.d.ts +22 -0
  96. package/dist/providers/gemini.provider.js +147 -0
  97. package/dist/providers/gemini.provider.js.map +1 -0
  98. package/dist/services/agent-loader.service.d.ts +29 -0
  99. package/dist/services/agent-loader.service.js +370 -0
  100. package/dist/services/agent-loader.service.js.map +1 -0
  101. package/dist/services/auth.service.d.ts +9 -0
  102. package/dist/services/auth.service.js +47 -0
  103. package/dist/services/auth.service.js.map +1 -0
  104. package/dist/services/config-validator.service.d.ts +28 -0
  105. package/dist/services/config-validator.service.js +467 -0
  106. package/dist/services/config-validator.service.js.map +1 -0
  107. package/dist/services/config.service.d.ts +45 -0
  108. package/dist/services/config.service.js +180 -0
  109. package/dist/services/config.service.js.map +1 -0
  110. package/dist/services/context-enhancement.service.d.ts +13 -0
  111. package/dist/services/context-enhancement.service.js +169 -0
  112. package/dist/services/context-enhancement.service.js.map +1 -0
  113. package/dist/services/document-loader.service.d.ts +16 -0
  114. package/dist/services/document-loader.service.js +137 -0
  115. package/dist/services/document-loader.service.js.map +1 -0
  116. package/dist/services/help.service.d.ts +5 -0
  117. package/dist/services/help.service.js +117 -0
  118. package/dist/services/help.service.js.map +1 -0
  119. package/dist/services/intelligent-compression.service.d.ts +20 -0
  120. package/dist/services/intelligent-compression.service.js +179 -0
  121. package/dist/services/intelligent-compression.service.js.map +1 -0
  122. package/dist/services/mcp-client.service.d.ts +26 -0
  123. package/dist/services/mcp-client.service.js +81 -0
  124. package/dist/services/mcp-client.service.js.map +1 -0
  125. package/dist/services/parallel-processing.service.d.ts +108 -0
  126. package/dist/services/parallel-processing.service.js +268 -0
  127. package/dist/services/parallel-processing.service.js.map +1 -0
  128. package/dist/services/remote-agent.service.d.ts +49 -0
  129. package/dist/services/remote-agent.service.js +215 -0
  130. package/dist/services/remote-agent.service.js.map +1 -0
  131. package/dist/services/result-formatter.service.d.ts +27 -0
  132. package/dist/services/result-formatter.service.js +126 -0
  133. package/dist/services/result-formatter.service.js.map +1 -0
  134. package/dist/services/task-management.service.d.ts +63 -0
  135. package/dist/services/task-management.service.js +272 -0
  136. package/dist/services/task-management.service.js.map +1 -0
  137. package/dist/services/template.service.d.ts +36 -0
  138. package/dist/services/template.service.js +195 -0
  139. package/dist/services/template.service.js.map +1 -0
  140. package/dist/services/tool-call.service.d.ts +53 -0
  141. package/dist/services/tool-call.service.js +1061 -0
  142. package/dist/services/tool-call.service.js.map +1 -0
  143. package/dist/slack/formatters/message.formatter.d.ts +25 -0
  144. package/dist/slack/formatters/message.formatter.js +246 -0
  145. package/dist/slack/formatters/message.formatter.js.map +1 -0
  146. package/dist/slack/slack-bot.d.ts +24 -0
  147. package/dist/slack/slack-bot.js +467 -0
  148. package/dist/slack/slack-bot.js.map +1 -0
  149. package/dist/stderr.logger.d.ts +8 -0
  150. package/dist/stderr.logger.js +26 -0
  151. package/dist/stderr.logger.js.map +1 -0
  152. package/dist/utils/config-utils.d.ts +15 -0
  153. package/dist/utils/config-utils.js +69 -0
  154. package/dist/utils/config-utils.js.map +1 -0
  155. package/dist/utils/mcp-installer.d.ts +20 -0
  156. package/dist/utils/mcp-installer.js +199 -0
  157. package/dist/utils/mcp-installer.js.map +1 -0
  158. package/dist/utils/mention-parser.d.ts +18 -0
  159. package/dist/utils/mention-parser.js +136 -0
  160. package/dist/utils/mention-parser.js.map +1 -0
  161. package/dist/utils/simple-security.d.ts +3 -0
  162. package/dist/utils/simple-security.js +20 -0
  163. package/dist/utils/simple-security.js.map +1 -0
  164. package/dist/utils/stdin-utils.d.ts +27 -0
  165. package/dist/utils/stdin-utils.js +130 -0
  166. package/dist/utils/stdin-utils.js.map +1 -0
  167. package/dist/utils/template-processor.d.ts +32 -0
  168. package/dist/utils/template-processor.js +202 -0
  169. package/dist/utils/template-processor.js.map +1 -0
  170. package/dist/version.d.ts +1 -0
  171. package/dist/version.js +17 -0
  172. package/dist/version.js.map +1 -0
  173. package/package.json +122 -0
@@ -0,0 +1,180 @@
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 __metadata = (this && this.__metadata) || function (k, v) {
42
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
43
+ };
44
+ var ConfigService_1;
45
+ Object.defineProperty(exports, "__esModule", { value: true });
46
+ exports.ConfigService = void 0;
47
+ const common_1 = require("@nestjs/common");
48
+ const fs_1 = require("fs");
49
+ const yaml = __importStar(require("js-yaml"));
50
+ const path = __importStar(require("path"));
51
+ let ConfigService = ConfigService_1 = class ConfigService {
52
+ constructor() {
53
+ this.logger = new common_1.Logger(ConfigService_1.name);
54
+ this.agents = new Map();
55
+ this.providerConfigs = [];
56
+ this.customConfigPath = null;
57
+ this.slackSettings = {
58
+ logConversations: false,
59
+ };
60
+ this.loadAgentConfigs();
61
+ }
62
+ setConfigPath(configPath) {
63
+ this.customConfigPath = configPath;
64
+ }
65
+ onModuleInit() {
66
+ }
67
+ loadAgentConfigs() {
68
+ this.agents.clear();
69
+ this.providerConfigs = [];
70
+ this.slackSettings = { logConversations: false };
71
+ let configPath = null;
72
+ let configName = null;
73
+ if (this.customConfigPath) {
74
+ const customPath = path.isAbsolute(this.customConfigPath)
75
+ ? this.customConfigPath
76
+ : path.join(process.cwd(), this.customConfigPath);
77
+ if ((0, fs_1.existsSync)(customPath)) {
78
+ configPath = customPath;
79
+ configName = path.basename(customPath);
80
+ }
81
+ else {
82
+ this.logger.error(`Custom config file not found: ${customPath}`);
83
+ return;
84
+ }
85
+ }
86
+ else {
87
+ const configPaths = [
88
+ { path: path.join(process.cwd(), 'crewx.yaml'), name: 'crewx.yaml' },
89
+ { path: path.join(process.cwd(), 'agents.yaml'), name: 'agents.yaml' },
90
+ ];
91
+ for (const config of configPaths) {
92
+ if ((0, fs_1.existsSync)(config.path)) {
93
+ configPath = config.path;
94
+ configName = config.name;
95
+ break;
96
+ }
97
+ }
98
+ }
99
+ if (!configPath) {
100
+ this.logger.warn('No configuration file found (crewx.yaml or agents.yaml). No agent configurations loaded.');
101
+ return;
102
+ }
103
+ this.logger.log(`Loading agent configurations from: ${configPath}`);
104
+ try {
105
+ const configContent = (0, fs_1.readFileSync)(configPath, 'utf8');
106
+ const config = yaml.load(configContent);
107
+ if (config.agents && Array.isArray(config.agents)) {
108
+ for (const agent of config.agents) {
109
+ if (agent.id) {
110
+ this.agents.set(agent.id, agent);
111
+ }
112
+ }
113
+ this.logger.log(`Loaded ${this.agents.size} agent configurations from ${configName}.`);
114
+ }
115
+ if (config.providers && Array.isArray(config.providers)) {
116
+ this.providerConfigs = config.providers.filter((p) => p && (p.type === 'plugin' || p.type === 'remote'));
117
+ const pluginCount = this.providerConfigs.filter((p) => p.type === 'plugin').length;
118
+ const remoteCount = this.providerConfigs.filter((p) => p.type === 'remote').length;
119
+ this.logger.log(`Loaded ${pluginCount} plugin provider configurations.`);
120
+ if (remoteCount > 0) {
121
+ this.logger.log(`Loaded ${remoteCount} remote provider configurations.`);
122
+ }
123
+ }
124
+ if (config.settings?.slack?.log_conversations !== undefined) {
125
+ this.slackSettings.logConversations = Boolean(config.settings.slack.log_conversations);
126
+ if (this.slackSettings.logConversations) {
127
+ this.logger.log('Slack conversation logging enabled via configuration.');
128
+ }
129
+ }
130
+ const envSlackLogging = process.env.CREWX_SLACK_LOG_CONVERSATIONS;
131
+ if (envSlackLogging !== undefined) {
132
+ this.slackSettings.logConversations = ['1', 'true', 'yes', 'on'].includes(envSlackLogging.toLowerCase());
133
+ this.logger.log(`Slack conversation logging ${this.slackSettings.logConversations ? 'enabled' : 'disabled'} via CREWX_SLACK_LOG_CONVERSATIONS.`);
134
+ }
135
+ }
136
+ catch (error) {
137
+ this.logger.error(`Failed to load or parse ${configName}`, error);
138
+ }
139
+ }
140
+ getAgentConfig(agentId) {
141
+ return this.agents.get(agentId);
142
+ }
143
+ getAllAgentIds() {
144
+ return Array.from(this.agents.keys());
145
+ }
146
+ getPluginProviders() {
147
+ return this.providerConfigs.filter((provider) => provider.type === 'plugin');
148
+ }
149
+ getRemoteProviders() {
150
+ return this.providerConfigs.filter((provider) => provider.type === 'remote');
151
+ }
152
+ getDynamicProviders() {
153
+ return [...this.providerConfigs];
154
+ }
155
+ shouldLogSlackConversations() {
156
+ return this.slackSettings.logConversations;
157
+ }
158
+ getCurrentConfigPath() {
159
+ if (this.customConfigPath) {
160
+ return path.isAbsolute(this.customConfigPath)
161
+ ? this.customConfigPath
162
+ : path.join(process.cwd(), this.customConfigPath);
163
+ }
164
+ const crewxPath = path.join(process.cwd(), 'crewx.yaml');
165
+ const agentsPath = path.join(process.cwd(), 'agents.yaml');
166
+ if ((0, fs_1.existsSync)(crewxPath)) {
167
+ return crewxPath;
168
+ }
169
+ else if ((0, fs_1.existsSync)(agentsPath)) {
170
+ return agentsPath;
171
+ }
172
+ return null;
173
+ }
174
+ };
175
+ exports.ConfigService = ConfigService;
176
+ exports.ConfigService = ConfigService = ConfigService_1 = __decorate([
177
+ (0, common_1.Injectable)(),
178
+ __metadata("design:paramtypes", [])
179
+ ], ConfigService);
180
+ //# sourceMappingURL=config.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.service.js","sourceRoot":"","sources":["../../src/services/config.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ export declare class ContextEnhancementService {
2
+ private readonly logger;
3
+ private readonly projectContextCache;
4
+ private readonly CACHE_TTL;
5
+ loadProjectContext(workingDir: string): Promise<string>;
6
+ enhancePromptWithProjectContext(prompt: string, workingDir: string, options?: {
7
+ includeProjectContext?: boolean;
8
+ maxProjectContextLength?: number;
9
+ }): Promise<string>;
10
+ hasProjectContext(workingDir: string): Promise<boolean>;
11
+ createSampleClaudeMd(workingDir: string, projectName?: string): Promise<string>;
12
+ clearCache(): void;
13
+ }
@@ -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 CrewX 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,5 @@
1
+ export declare class HelpService {
2
+ private getPackageInfo;
3
+ showHelp(): void;
4
+ private showCommandHelp;
5
+ }