@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,147 @@
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 __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.GeminiProvider = void 0;
13
+ const common_1 = require("@nestjs/common");
14
+ const base_ai_provider_1 = require("./base-ai.provider");
15
+ const crewx_sdk_1 = require("@sowonai/crewx-sdk");
16
+ const tool_call_service_1 = require("../services/tool-call.service");
17
+ let GeminiProvider = class GeminiProvider extends base_ai_provider_1.BaseAIProvider {
18
+ constructor(toolCallService) {
19
+ super('GeminiProvider');
20
+ this.name = crewx_sdk_1.BuiltInProviders.GEMINI;
21
+ if (toolCallService) {
22
+ this.setToolCallService(toolCallService);
23
+ }
24
+ }
25
+ getCliCommand() {
26
+ return 'gemini';
27
+ }
28
+ getDefaultArgs() {
29
+ return [];
30
+ }
31
+ getExecuteArgs() {
32
+ return [];
33
+ }
34
+ getPromptInArgs() {
35
+ return false;
36
+ }
37
+ getNotInstalledMessage() {
38
+ return 'Gemini CLI is not installed.';
39
+ }
40
+ buildPromptWithTools(prompt, tools) {
41
+ if (!tools || tools.length === 0) {
42
+ return prompt;
43
+ }
44
+ return prompt;
45
+ }
46
+ async query(prompt, options = {}) {
47
+ if (!this.toolCallService) {
48
+ this.logger.warn('ToolCallService not available, falling back to regular query');
49
+ return super.query(prompt, options);
50
+ }
51
+ return this.queryWithTools(prompt, options);
52
+ }
53
+ async execute(prompt, options = {}) {
54
+ if (this.toolCallService) {
55
+ this.logger.log('GeminiProvider: Using queryWithTools in execute mode');
56
+ return this.queryWithTools(prompt, options);
57
+ }
58
+ this.logger.warn('GeminiProvider: ToolCallService not available, falling back to base execute');
59
+ return super.execute(prompt, options);
60
+ }
61
+ parseToolUseProviderSpecific(parsed) {
62
+ if (parsed.response && typeof parsed.response === 'string') {
63
+ const responseXml = parsed.response.match(/<crew(?:code|x)_tool_call>\s*([\s\S]*?)\s*<\/crew(?:code|x)_tool_call>/);
64
+ if (responseXml && responseXml[1]) {
65
+ try {
66
+ const jsonContent = responseXml[1].trim();
67
+ const toolParsed = JSON.parse(jsonContent);
68
+ if (toolParsed.type === 'tool_use' && toolParsed.name && toolParsed.input !== undefined) {
69
+ this.logger.log(`Tool use detected from Gemini JSON response field: ${toolParsed.name}`);
70
+ return {
71
+ isToolUse: true,
72
+ toolName: toolParsed.name,
73
+ toolInput: toolParsed.input,
74
+ };
75
+ }
76
+ }
77
+ catch (e) {
78
+ }
79
+ }
80
+ }
81
+ return { isToolUse: false };
82
+ }
83
+ async queryWithTools(prompt, options = {}, maxTurns = 5) {
84
+ if (!this.toolCallService) {
85
+ this.logger.warn('ToolCallService not available, falling back to regular query');
86
+ return super.query(prompt, options);
87
+ }
88
+ let turn = 0;
89
+ let currentPrompt = prompt;
90
+ const tools = this.toolCallService.list();
91
+ currentPrompt = this.buildPromptWithTools(currentPrompt, tools);
92
+ while (turn < maxTurns) {
93
+ this.logger.log(`Tool call turn ${turn + 1}/${maxTurns}`);
94
+ if (options.taskId) {
95
+ this['appendTaskLog'](options.taskId, 'INFO', `--- Tool Call Turn ${turn + 1}/${maxTurns} ---`);
96
+ }
97
+ const response = await super.query(currentPrompt, options);
98
+ if (!response.success) {
99
+ return response;
100
+ }
101
+ const toolUse = this.parseToolUse(response.content);
102
+ if (!toolUse.isToolUse) {
103
+ if (options.taskId) {
104
+ this['appendTaskLog'](options.taskId, 'INFO', `No tool use detected, returning final response`);
105
+ }
106
+ return response;
107
+ }
108
+ this.logger.log(`Executing tool: ${toolUse.toolName} with input ${JSON.stringify(toolUse.toolInput)}`);
109
+ if (options.taskId) {
110
+ this['appendTaskLog'](options.taskId, 'INFO', `🔧 Gemini requested tool: ${toolUse.toolName}`);
111
+ this['appendTaskLog'](options.taskId, 'INFO', `Tool input: ${JSON.stringify(toolUse.toolInput, null, 2)}`);
112
+ }
113
+ const toolResult = await this.toolCallService.execute(toolUse.toolName, toolUse.toolInput);
114
+ this.logger.log(`Tool result: ${JSON.stringify(toolResult)}`);
115
+ if (options.taskId) {
116
+ this['appendTaskLog'](options.taskId, 'INFO', `✅ Tool executed successfully`);
117
+ this['appendTaskLog'](options.taskId, 'INFO', `Tool result preview: ${JSON.stringify(toolResult).substring(0, 500)}...`);
118
+ }
119
+ currentPrompt = this.buildToolResultPrompt(toolUse.toolName, toolUse.toolInput, toolResult);
120
+ turn++;
121
+ }
122
+ this.logger.warn('Max turns reached without final response');
123
+ return {
124
+ content: 'Maximum conversation turns reached without completing the task.',
125
+ provider: this.name,
126
+ command: '',
127
+ success: false,
128
+ taskId: options.taskId,
129
+ };
130
+ }
131
+ buildToolResultPrompt(toolName, toolInput, toolResult) {
132
+ const resultData = toolResult.success && toolResult.data ? toolResult.data : toolResult;
133
+ return `The ${toolName} tool has been executed successfully.
134
+
135
+ <tool_result>
136
+ ${JSON.stringify(resultData, null, 2)}
137
+ </tool_result>
138
+
139
+ Based on the tool execution result above, please provide a clear, detailed, and user-friendly response to the user's original request. Present the information in an organized and easy-to-read format.`;
140
+ }
141
+ };
142
+ exports.GeminiProvider = GeminiProvider;
143
+ exports.GeminiProvider = GeminiProvider = __decorate([
144
+ (0, common_1.Injectable)(),
145
+ __metadata("design:paramtypes", [tool_call_service_1.ToolCallService])
146
+ ], GeminiProvider);
147
+ //# sourceMappingURL=gemini.provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gemini.provider.js","sourceRoot":"","sources":["../../src/providers/gemini.provider.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ import { AgentInfo } from '@sowonai/crewx-sdk';
2
+ import { DocumentLoaderService } from './document-loader.service';
3
+ import { TemplateService } from './template.service';
4
+ import { ConfigValidatorService } from './config-validator.service';
5
+ import { AIProviderService } from '../ai-provider.service';
6
+ import { ConfigService } from './config.service';
7
+ export declare class AgentLoaderService {
8
+ private readonly documentLoaderService?;
9
+ private readonly templateService?;
10
+ private readonly configValidatorService?;
11
+ private readonly aiProviderService?;
12
+ private readonly configService?;
13
+ private readonly logger;
14
+ constructor(documentLoaderService?: DocumentLoaderService | undefined, templateService?: TemplateService | undefined, configValidatorService?: ConfigValidatorService | undefined, aiProviderService?: AIProviderService | undefined, configService?: ConfigService | undefined);
15
+ private readonly defaultCliAgents;
16
+ getAllAgents(): Promise<AgentInfo[]>;
17
+ getDefaultCliAgents(): AgentInfo[];
18
+ getConfigSource(): {
19
+ source: string;
20
+ path?: string;
21
+ };
22
+ loadAvailableAgents(): Promise<AgentInfo[]>;
23
+ private loadBuiltInAgents;
24
+ loadAgentsFromConfig(configPath: string): Promise<AgentInfo[]>;
25
+ private parseProviderConfig;
26
+ private parseRemoteConfig;
27
+ private normalizeRemoteUrl;
28
+ private extractDescription;
29
+ }
@@ -0,0 +1,370 @@
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 __param = (this && this.__param) || function (paramIndex, decorator) {
45
+ return function (target, key) { decorator(target, key, paramIndex); }
46
+ };
47
+ Object.defineProperty(exports, "__esModule", { value: true });
48
+ exports.AgentLoaderService = void 0;
49
+ const common_1 = require("@nestjs/common");
50
+ const crewx_sdk_1 = require("@sowonai/crewx-sdk");
51
+ const yaml = __importStar(require("js-yaml"));
52
+ const promises_1 = require("fs/promises");
53
+ const document_loader_service_1 = require("./document-loader.service");
54
+ const template_service_1 = require("./template.service");
55
+ const config_validator_service_1 = require("./config-validator.service");
56
+ const ai_provider_service_1 = require("../ai-provider.service");
57
+ const config_service_1 = require("./config.service");
58
+ let AgentLoaderService = class AgentLoaderService {
59
+ constructor(documentLoaderService, templateService, configValidatorService, aiProviderService, configService) {
60
+ this.documentLoaderService = documentLoaderService;
61
+ this.templateService = templateService;
62
+ this.configValidatorService = configValidatorService;
63
+ this.aiProviderService = aiProviderService;
64
+ this.configService = configService;
65
+ this.logger = new common_1.Logger('AgentLoaderService');
66
+ this.defaultCliAgents = [
67
+ {
68
+ id: 'claude',
69
+ name: 'Claude AI',
70
+ role: 'AI Assistant',
71
+ team: 'AI Team',
72
+ provider: 'claude',
73
+ workingDirectory: './',
74
+ capabilities: ['general_assistance', 'code_analysis', 'writing'],
75
+ description: 'Claude AI assistant for general tasks, code analysis, and writing assistance.',
76
+ specialties: ['General AI', 'Code Analysis', 'Writing', 'Problem Solving'],
77
+ },
78
+ {
79
+ id: 'gemini',
80
+ name: 'Gemini AI',
81
+ role: 'AI Assistant',
82
+ team: 'AI Team',
83
+ provider: 'gemini',
84
+ workingDirectory: './',
85
+ capabilities: ['general_assistance', 'code_analysis', 'research'],
86
+ description: 'Gemini AI assistant for general tasks, code analysis, and research assistance.',
87
+ specialties: ['General AI', 'Code Analysis', 'Research', 'Data Analysis'],
88
+ },
89
+ {
90
+ id: 'copilot',
91
+ name: 'GitHub Copilot',
92
+ role: 'AI Assistant',
93
+ team: 'AI Team',
94
+ provider: 'copilot',
95
+ workingDirectory: './',
96
+ capabilities: ['code_generation', 'code_completion', 'debugging'],
97
+ description: 'GitHub Copilot AI assistant for code generation, completion, and debugging.',
98
+ specialties: ['Code Generation', 'Code Completion', 'Debugging', 'GitHub Integration'],
99
+ },
100
+ ];
101
+ }
102
+ async getAllAgents() {
103
+ return this.loadAvailableAgents();
104
+ }
105
+ getDefaultCliAgents() {
106
+ return [...this.defaultCliAgents];
107
+ }
108
+ getConfigSource() {
109
+ const agentsConfigPath = process.env.AGENTS_CONFIG;
110
+ return {
111
+ source: agentsConfigPath ? 'External YAML file' : 'Default hardcoded values',
112
+ path: agentsConfigPath,
113
+ };
114
+ }
115
+ async loadAvailableAgents() {
116
+ try {
117
+ let allAgents = [];
118
+ this.logger.log('Loading built-in agents from template...');
119
+ try {
120
+ const builtInAgents = await this.loadBuiltInAgents();
121
+ allAgents = [...builtInAgents];
122
+ this.logger.log(`Loaded ${builtInAgents.length} built-in agents`);
123
+ }
124
+ catch (error) {
125
+ this.logger.warn('Failed to load built-in agents, using fallback defaults');
126
+ allAgents = [...this.defaultCliAgents];
127
+ }
128
+ const path = await Promise.resolve().then(() => __importStar(require('path')));
129
+ const fs = await Promise.resolve().then(() => __importStar(require('fs')));
130
+ let agentsConfigPath = null;
131
+ if (this.configService) {
132
+ agentsConfigPath = this.configService.getCurrentConfigPath();
133
+ }
134
+ if (!agentsConfigPath) {
135
+ if (process.env.CREWX_CONFIG) {
136
+ agentsConfigPath = process.env.CREWX_CONFIG;
137
+ }
138
+ else {
139
+ const crewConfigPath = path.join(process.cwd(), 'crewx.yaml');
140
+ const agentsYamlPath = path.join(process.cwd(), 'agents.yaml');
141
+ if (fs.existsSync(crewConfigPath)) {
142
+ agentsConfigPath = crewConfigPath;
143
+ }
144
+ else if (fs.existsSync(agentsYamlPath)) {
145
+ agentsConfigPath = agentsYamlPath;
146
+ }
147
+ else {
148
+ agentsConfigPath = crewConfigPath;
149
+ }
150
+ }
151
+ }
152
+ this.logger.log(`Loading agents from config: ${agentsConfigPath}`);
153
+ try {
154
+ const userAgents = await this.loadAgentsFromConfig(agentsConfigPath);
155
+ this.logger.log(`Loaded ${userAgents.length} user-defined agents`);
156
+ const builtInIds = new Set(allAgents.map((a) => a.id));
157
+ const newUserAgents = userAgents.filter((a) => !builtInIds.has(a.id));
158
+ const overrideUserAgents = userAgents.filter((a) => builtInIds.has(a.id));
159
+ for (const userAgent of overrideUserAgents) {
160
+ const index = allAgents.findIndex((a) => a.id === userAgent.id);
161
+ if (index >= 0) {
162
+ this.logger.log(`User config overrides built-in agent: ${userAgent.id}`);
163
+ allAgents[index] = userAgent;
164
+ }
165
+ }
166
+ allAgents = [...allAgents, ...newUserAgents];
167
+ }
168
+ catch (error) {
169
+ this.logger.log('No user agents.yaml found or failed to load, using built-in agents only');
170
+ }
171
+ this.logger.log(`Total agents loaded: ${allAgents.length}`);
172
+ return allAgents;
173
+ }
174
+ catch (error) {
175
+ this.logger.error('Failed to load agents:', (0, crewx_sdk_1.getErrorMessage)(error));
176
+ return [...this.defaultCliAgents];
177
+ }
178
+ }
179
+ async loadBuiltInAgents() {
180
+ try {
181
+ let templateContent;
182
+ try {
183
+ const path = await Promise.resolve().then(() => __importStar(require('path')));
184
+ const fs = await Promise.resolve().then(() => __importStar(require('fs/promises')));
185
+ const templatePath = path.join(__dirname, '..', '..', 'templates', 'agents', 'default.yaml');
186
+ templateContent = await fs.readFile(templatePath, 'utf-8');
187
+ this.logger.log('Loaded built-in agents from local template');
188
+ }
189
+ catch (localError) {
190
+ if (!this.templateService) {
191
+ throw new Error('TemplateService not available for GitHub download');
192
+ }
193
+ this.logger.log('Local template not found, trying GitHub...');
194
+ templateContent = await this.templateService.downloadTemplate('default', 'main');
195
+ this.logger.log('Loaded built-in agents from GitHub template');
196
+ }
197
+ const config = yaml.load(templateContent);
198
+ if (!config.agents || !Array.isArray(config.agents)) {
199
+ throw new Error('Invalid template: missing agents array');
200
+ }
201
+ if (this.documentLoaderService) {
202
+ await this.documentLoaderService.initialize(config.documents);
203
+ }
204
+ const processedAgents = await Promise.all(config.agents.map(async (agent) => {
205
+ let systemPrompt = agent.inline?.system_prompt;
206
+ return {
207
+ id: agent.id,
208
+ name: agent.name || agent.id,
209
+ role: agent.role || 'AI Agent',
210
+ team: agent.team,
211
+ provider: this.parseProviderConfig(agent),
212
+ workingDirectory: agent.working_directory || './',
213
+ capabilities: agent.capabilities || [],
214
+ description: systemPrompt ? this.extractDescription(systemPrompt) : `${agent.name || agent.id} agent`,
215
+ specialties: agent.specialties || [],
216
+ systemPrompt: systemPrompt,
217
+ options: agent.options || [],
218
+ inline: agent.inline,
219
+ remote: this.parseRemoteConfig(agent),
220
+ };
221
+ }));
222
+ return processedAgents;
223
+ }
224
+ catch (error) {
225
+ this.logger.error('Failed to load built-in agents from template:', (0, crewx_sdk_1.getErrorMessage)(error));
226
+ throw error;
227
+ }
228
+ }
229
+ async loadAgentsFromConfig(configPath) {
230
+ try {
231
+ const path = await Promise.resolve().then(() => __importStar(require('path')));
232
+ this.logger.log(`Loading agents from config: ${configPath}`);
233
+ const configContent = await (0, promises_1.readFile)(configPath, 'utf-8');
234
+ let config;
235
+ if (configPath.endsWith('.yaml') || configPath.endsWith('.yml')) {
236
+ config = yaml.load(configContent);
237
+ }
238
+ else {
239
+ config = JSON.parse(configContent);
240
+ }
241
+ if (!config.agents || !Array.isArray(config.agents)) {
242
+ throw new Error('Invalid config: missing agents array');
243
+ }
244
+ if (this.configValidatorService) {
245
+ const validationResult = this.configValidatorService.validateConfig(config, configPath);
246
+ if (!validationResult.valid) {
247
+ const errorMessage = this.configValidatorService.formatErrorMessage(validationResult.errors);
248
+ this.logger.error(errorMessage);
249
+ throw new Error(`Configuration validation failed:\n${errorMessage}`);
250
+ }
251
+ this.logger.log('Configuration validation passed');
252
+ }
253
+ if (this.documentLoaderService) {
254
+ const projectPath = path.dirname(configPath);
255
+ this.logger.log(`Initializing DocumentLoaderService, has documents: ${!!config.documents}`);
256
+ await this.documentLoaderService.initialize(config.documents, projectPath);
257
+ }
258
+ else {
259
+ this.logger.warn('DocumentLoaderService not injected - documents will not be loaded');
260
+ }
261
+ const agents = await Promise.all(config.agents.map(async (agent) => {
262
+ let systemPrompt = agent.inline?.system_prompt;
263
+ return {
264
+ id: agent.id,
265
+ name: agent.name || agent.id,
266
+ role: agent.role || 'AI Agent',
267
+ team: agent.team,
268
+ provider: this.parseProviderConfig(agent),
269
+ workingDirectory: agent.working_directory || './',
270
+ capabilities: agent.capabilities || [],
271
+ description: systemPrompt ? this.extractDescription(systemPrompt) : `${agent.name || agent.id} agent`,
272
+ specialties: agent.specialties || [],
273
+ systemPrompt: systemPrompt,
274
+ options: agent.options || [],
275
+ inline: agent.inline ? {
276
+ ...agent.inline,
277
+ system_prompt: systemPrompt,
278
+ } : undefined,
279
+ remote: this.parseRemoteConfig(agent),
280
+ };
281
+ }));
282
+ return agents;
283
+ }
284
+ catch (error) {
285
+ this.logger.error(`Failed to load agents config from ${configPath}:`, (0, crewx_sdk_1.getErrorMessage)(error));
286
+ return [];
287
+ }
288
+ }
289
+ parseProviderConfig(agent) {
290
+ if (this.parseRemoteConfig(agent)) {
291
+ return 'remote';
292
+ }
293
+ const configProvider = agent.provider || agent.inline?.provider;
294
+ if (Array.isArray(configProvider)) {
295
+ return configProvider;
296
+ }
297
+ else if (typeof configProvider === 'string') {
298
+ return configProvider;
299
+ }
300
+ else {
301
+ return 'claude';
302
+ }
303
+ }
304
+ parseRemoteConfig(agent) {
305
+ const remoteConfig = agent.remote;
306
+ if (!remoteConfig || typeof remoteConfig !== 'object') {
307
+ return undefined;
308
+ }
309
+ if (remoteConfig.type !== 'mcp-http') {
310
+ this.logger.warn(`Unsupported remote agent type for ${agent.id}: ${remoteConfig.type}`);
311
+ return undefined;
312
+ }
313
+ const url = remoteConfig.url;
314
+ if (!url || typeof url !== 'string') {
315
+ this.logger.error(`Remote agent ${agent.id} is missing a valid url property`);
316
+ return undefined;
317
+ }
318
+ const tools = remoteConfig.tools && typeof remoteConfig.tools === 'object'
319
+ ? {
320
+ query: remoteConfig.tools.query,
321
+ execute: remoteConfig.tools.execute,
322
+ }
323
+ : undefined;
324
+ return {
325
+ type: 'mcp-http',
326
+ url: this.normalizeRemoteUrl(url),
327
+ apiKey: remoteConfig.apiKey ?? remoteConfig.api_key,
328
+ agentId: remoteConfig.agentId ?? remoteConfig.agent_id,
329
+ timeoutMs: remoteConfig.timeoutMs ?? remoteConfig.timeout_ms,
330
+ tools,
331
+ };
332
+ }
333
+ normalizeRemoteUrl(url) {
334
+ const trimmed = url.trim();
335
+ if (!trimmed) {
336
+ return trimmed;
337
+ }
338
+ const lower = trimmed.toLowerCase();
339
+ if (lower.endsWith('/mcp')) {
340
+ return trimmed.slice(0, -4);
341
+ }
342
+ return trimmed.replace(/\/+$/, '');
343
+ }
344
+ extractDescription(systemPrompt) {
345
+ if (!systemPrompt)
346
+ return 'AI Agent';
347
+ const lines = systemPrompt.split('\n');
348
+ const firstLine = lines[0]?.trim();
349
+ if (firstLine && firstLine.length > 10) {
350
+ return firstLine.length > 150 ? firstLine.substring(0, 150) + '...' : firstLine;
351
+ }
352
+ return 'AI Agent';
353
+ }
354
+ };
355
+ exports.AgentLoaderService = AgentLoaderService;
356
+ exports.AgentLoaderService = AgentLoaderService = __decorate([
357
+ (0, common_1.Injectable)(),
358
+ __param(0, (0, common_1.Optional)()),
359
+ __param(1, (0, common_1.Optional)()),
360
+ __param(2, (0, common_1.Optional)()),
361
+ __param(3, (0, common_1.Optional)()),
362
+ __param(3, (0, common_1.Inject)((0, common_1.forwardRef)(() => ai_provider_service_1.AIProviderService))),
363
+ __param(4, (0, common_1.Optional)()),
364
+ __metadata("design:paramtypes", [document_loader_service_1.DocumentLoaderService,
365
+ template_service_1.TemplateService,
366
+ config_validator_service_1.ConfigValidatorService,
367
+ ai_provider_service_1.AIProviderService,
368
+ config_service_1.ConfigService])
369
+ ], AgentLoaderService);
370
+ //# sourceMappingURL=agent-loader.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-loader.service.js","sourceRoot":"","sources":["../../src/services/agent-loader.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import { CliOptions } from '../cli-options';
2
+ export declare class AuthService {
3
+ private readonly cliOptions;
4
+ private readonly logger;
5
+ constructor(cliOptions: CliOptions);
6
+ getServerKey(): string | null;
7
+ isKeyConfigured(): boolean;
8
+ validateKey(token?: string | null): boolean;
9
+ }
@@ -0,0 +1,47 @@
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 __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
12
+ return function (target, key) { decorator(target, key, paramIndex); }
13
+ };
14
+ var AuthService_1;
15
+ Object.defineProperty(exports, "__esModule", { value: true });
16
+ exports.AuthService = void 0;
17
+ const common_1 = require("@nestjs/common");
18
+ let AuthService = AuthService_1 = class AuthService {
19
+ constructor(cliOptions) {
20
+ this.cliOptions = cliOptions;
21
+ this.logger = new common_1.Logger(AuthService_1.name);
22
+ }
23
+ getServerKey() {
24
+ return this.cliOptions.key || null;
25
+ }
26
+ isKeyConfigured() {
27
+ return Boolean(this.getServerKey());
28
+ }
29
+ validateKey(token) {
30
+ const expected = this.getServerKey();
31
+ if (!expected) {
32
+ return true;
33
+ }
34
+ if (!token) {
35
+ this.logger.warn('Authorization attempt without token while key is configured.');
36
+ return false;
37
+ }
38
+ return token === expected;
39
+ }
40
+ };
41
+ exports.AuthService = AuthService;
42
+ exports.AuthService = AuthService = AuthService_1 = __decorate([
43
+ (0, common_1.Injectable)(),
44
+ __param(0, (0, common_1.Inject)('CLI_OPTIONS')),
45
+ __metadata("design:paramtypes", [Object])
46
+ ], AuthService);
47
+ //# sourceMappingURL=auth.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.service.js","sourceRoot":"","sources":["../../src/services/auth.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAA4D;AAIrD,IAAM,WAAW,mBAAjB,MAAM,WAAW;IAGtB,YAEE,UAAuC;QAAtB,eAAU,GAAV,UAAU,CAAY;QAJxB,WAAM,GAAG,IAAI,eAAM,CAAC,aAAW,CAAC,IAAI,CAAC,CAAC;IAKpD,CAAC;IAEJ,YAAY;QACV,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,IAAI,IAAI,CAAC;IACrC,CAAC;IAED,eAAe;QACb,OAAO,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;IACtC,CAAC;IAED,WAAW,CAAC,KAAqB;QAC/B,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QACrC,IAAI,CAAC,QAAQ,EAAE,CAAC;YAGd,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,8DAA8D,CAAC,CAAC;YACjF,OAAO,KAAK,CAAC;QACf,CAAC;QAED,OAAO,KAAK,KAAK,QAAQ,CAAC;IAC5B,CAAC;CACF,CAAA;AA/BY,kCAAW;sBAAX,WAAW;IADvB,IAAA,mBAAU,GAAE;IAKR,WAAA,IAAA,eAAM,EAAC,aAAa,CAAC,CAAA;;GAJb,WAAW,CA+BvB"}