@sowonai/crewx-cli 0.4.0-dev.5 → 0.4.0-dev.50

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 (94) hide show
  1. package/README.md +40 -6
  2. package/dist/ai-provider.service.d.ts +7 -12
  3. package/dist/ai-provider.service.js +42 -20
  4. package/dist/ai-provider.service.js.map +1 -1
  5. package/dist/ai.service.d.ts +5 -45
  6. package/dist/ai.service.js +10 -587
  7. package/dist/ai.service.js.map +1 -1
  8. package/dist/app.module.js +67 -9
  9. package/dist/app.module.js.map +1 -1
  10. package/dist/cli/chat.handler.d.ts +2 -1
  11. package/dist/cli/chat.handler.js +26 -11
  12. package/dist/cli/chat.handler.js.map +1 -1
  13. package/dist/cli/doctor.handler.js +8 -40
  14. package/dist/cli/doctor.handler.js.map +1 -1
  15. package/dist/cli/execute.handler.js +8 -6
  16. package/dist/cli/execute.handler.js.map +1 -1
  17. package/dist/cli/mcp.handler.js.map +1 -1
  18. package/dist/cli/query.handler.js +4 -2
  19. package/dist/cli/query.handler.js.map +1 -1
  20. package/dist/cli-options.d.ts +2 -0
  21. package/dist/cli-options.js +10 -0
  22. package/dist/cli-options.js.map +1 -1
  23. package/dist/crewx.tool.d.ts +18 -2
  24. package/dist/crewx.tool.js +542 -105
  25. package/dist/crewx.tool.js.map +1 -1
  26. package/dist/providers/dynamic-provider.factory.d.ts +9 -51
  27. package/dist/providers/dynamic-provider.factory.js +44 -506
  28. package/dist/providers/dynamic-provider.factory.js.map +1 -1
  29. package/dist/providers/logger.adapter.d.ts +4 -0
  30. package/dist/providers/logger.adapter.js +56 -0
  31. package/dist/providers/logger.adapter.js.map +1 -0
  32. package/dist/services/agent-loader.service.d.ts +6 -2
  33. package/dist/services/agent-loader.service.js +210 -26
  34. package/dist/services/agent-loader.service.js.map +1 -1
  35. package/dist/services/config.service.d.ts +7 -27
  36. package/dist/services/config.service.js +80 -38
  37. package/dist/services/config.service.js.map +1 -1
  38. package/dist/services/document-loader.service.d.ts +9 -4
  39. package/dist/services/document-loader.service.js +21 -7
  40. package/dist/services/document-loader.service.js.map +1 -1
  41. package/dist/services/parallel-processing.service.d.ts +17 -17
  42. package/dist/services/parallel-processing.service.js +261 -196
  43. package/dist/services/parallel-processing.service.js.map +1 -1
  44. package/dist/services/provider-bridge.service.d.ts +35 -0
  45. package/dist/services/provider-bridge.service.js +224 -0
  46. package/dist/services/provider-bridge.service.js.map +1 -0
  47. package/dist/services/remote-agent.service.d.ts +4 -7
  48. package/dist/services/remote-agent.service.js +41 -95
  49. package/dist/services/remote-agent.service.js.map +1 -1
  50. package/dist/services/task-management.service.d.ts +3 -3
  51. package/dist/services/task-management.service.js.map +1 -1
  52. package/dist/services/template.service.d.ts +2 -0
  53. package/dist/services/template.service.js +46 -1
  54. package/dist/services/template.service.js.map +1 -1
  55. package/dist/services/tool-call.service.d.ts +2 -36
  56. package/dist/services/tool-call.service.js.map +1 -1
  57. package/dist/slack/formatters/message.formatter.d.ts +5 -2
  58. package/dist/slack/formatters/message.formatter.js +55 -2
  59. package/dist/slack/formatters/message.formatter.js.map +1 -1
  60. package/dist/slack/slack-bot.js +1 -2
  61. package/dist/slack/slack-bot.js.map +1 -1
  62. package/dist/utils/stdin-utils.d.ts +4 -25
  63. package/dist/utils/stdin-utils.js +2 -23
  64. package/dist/utils/stdin-utils.js.map +1 -1
  65. package/dist/utils/template-processor.d.ts +2 -29
  66. package/dist/utils/template-processor.js +5 -2
  67. package/dist/utils/template-processor.js.map +1 -1
  68. package/dist/utils/terminal-message-formatter.d.ts +23 -0
  69. package/dist/utils/terminal-message-formatter.js +136 -0
  70. package/dist/utils/terminal-message-formatter.js.map +1 -0
  71. package/package.json +30 -32
  72. package/scripts/postbuild-cli.mjs +20 -1
  73. package/templates/agents/default.yaml +468 -0
  74. package/templates/agents/minimal.yaml +16 -0
  75. package/templates/documents/crewx-manual.md +387 -0
  76. package/templates/versions.json +19 -0
  77. package/dist/providers/base-ai.provider.d.ts +0 -50
  78. package/dist/providers/base-ai.provider.js +0 -624
  79. package/dist/providers/base-ai.provider.js.map +0 -1
  80. package/dist/providers/claude.provider.d.ts +0 -25
  81. package/dist/providers/claude.provider.js +0 -362
  82. package/dist/providers/claude.provider.js.map +0 -1
  83. package/dist/providers/codex.provider.d.ts +0 -17
  84. package/dist/providers/codex.provider.js +0 -99
  85. package/dist/providers/codex.provider.js.map +0 -1
  86. package/dist/providers/copilot.provider.d.ts +0 -25
  87. package/dist/providers/copilot.provider.js +0 -266
  88. package/dist/providers/copilot.provider.js.map +0 -1
  89. package/dist/providers/gemini.provider.d.ts +0 -22
  90. package/dist/providers/gemini.provider.js +0 -147
  91. package/dist/providers/gemini.provider.js.map +0 -1
  92. package/dist/utils/mention-parser.d.ts +0 -18
  93. package/dist/utils/mention-parser.js +0 -136
  94. package/dist/utils/mention-parser.js.map +0 -1
@@ -1,266 +0,0 @@
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.CopilotProvider = 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 CopilotProvider = class CopilotProvider extends base_ai_provider_1.BaseAIProvider {
18
- constructor(toolCallService) {
19
- super('CopilotProvider');
20
- this.name = crewx_sdk_1.BuiltInProviders.COPILOT;
21
- if (toolCallService) {
22
- this.setToolCallService(toolCallService);
23
- }
24
- }
25
- getCliCommand() {
26
- return 'copilot';
27
- }
28
- getDefaultArgs() {
29
- return [];
30
- }
31
- getExecuteArgs() {
32
- return [];
33
- }
34
- getPromptInArgs() {
35
- return false;
36
- }
37
- getNotInstalledMessage() {
38
- return 'GitHub Copilot CLI is not installed. Please refer to https://docs.github.com/copilot/how-tos/set-up/install-copilot-cli to install it.';
39
- }
40
- async execute(prompt, options = {}) {
41
- if (this.toolCallService) {
42
- this.logger.log('CopilotProvider: Using queryWithTools in execute mode');
43
- return this.queryWithTools(prompt, options);
44
- }
45
- this.logger.warn('CopilotProvider: ToolCallService not available, falling back to base execute');
46
- return super.execute(prompt, options);
47
- }
48
- parseProviderError(stderr, stdout) {
49
- const combinedOutput = stderr || stdout;
50
- if (combinedOutput.includes('quota') && combinedOutput.includes('exceed')) {
51
- return {
52
- error: true,
53
- message: 'Copilot quota exceeded. Please check your plan at https://github.com/features/copilot/plans or try again later.',
54
- };
55
- }
56
- if (combinedOutput.includes('quota_exceeded')) {
57
- return {
58
- error: true,
59
- message: 'Copilot quota exceeded. Please check your plan at https://github.com/features/copilot/plans.',
60
- };
61
- }
62
- if (combinedOutput.toLowerCase().includes('auth') ||
63
- combinedOutput.toLowerCase().includes('login')) {
64
- return {
65
- error: true,
66
- message: 'Copilot CLI authentication is required. Please authenticate using the `copilot login` command.',
67
- };
68
- }
69
- if (stderr && (stderr.toLowerCase().includes('unknown option') ||
70
- stderr.toLowerCase().includes('invalid option'))) {
71
- return {
72
- error: true,
73
- message: stderr.split('\n')[0]?.trim() || 'Invalid CLI option',
74
- };
75
- }
76
- if (stderr && (stderr.toLowerCase().includes('network') ||
77
- stderr.toLowerCase().includes('connection'))) {
78
- return {
79
- error: true,
80
- message: 'Network connection error. Please check your internet connection and try again.',
81
- };
82
- }
83
- if (stderr && !stdout) {
84
- return { error: true, message: stderr };
85
- }
86
- return { error: false, message: '' };
87
- }
88
- buildPromptWithTools(prompt, tools) {
89
- if (!tools || tools.length === 0) {
90
- return prompt;
91
- }
92
- return prompt;
93
- }
94
- buildFollowUpPrompt(toolName, toolInput, toolResult) {
95
- return `Tool execution result:
96
- Tool: ${toolName}
97
- Input: ${JSON.stringify(toolInput)}
98
- Result: ${JSON.stringify(toolResult)}
99
-
100
- Please continue with your response based on this tool result.`;
101
- }
102
- parseToolUse(content) {
103
- const xmlMatch = content.match(/<crew(?:code|x)_tool_call>\s*([\s\S]*?)\s*<\/crew(?:code|x)_tool_call>/);
104
- if (xmlMatch && xmlMatch[1]) {
105
- try {
106
- const jsonContent = xmlMatch[1].trim();
107
- const parsed = JSON.parse(jsonContent);
108
- if (parsed.type === 'tool_use' && parsed.name && parsed.input) {
109
- this.logger.log(`Tool use detected: ${parsed.name} with input ${JSON.stringify(parsed.input)}`);
110
- return {
111
- isToolUse: true,
112
- toolName: parsed.name,
113
- toolInput: parsed.input,
114
- };
115
- }
116
- }
117
- catch (e) {
118
- }
119
- }
120
- try {
121
- const parsed = JSON.parse(content);
122
- if (parsed.type === 'tool_use' && parsed.name && parsed.input) {
123
- return {
124
- isToolUse: true,
125
- toolName: parsed.name,
126
- toolInput: parsed.input,
127
- };
128
- }
129
- if (parsed.content && Array.isArray(parsed.content)) {
130
- const toolUse = parsed.content.find((c) => c.type === 'tool_use');
131
- if (toolUse) {
132
- return {
133
- isToolUse: true,
134
- toolName: toolUse.name,
135
- toolInput: toolUse.input,
136
- };
137
- }
138
- }
139
- }
140
- catch (error) {
141
- const codeBlockMatch = content.match(/```(?:json)?\s*\n?([\s\S]*?)\n?```/);
142
- if (codeBlockMatch && codeBlockMatch[1]) {
143
- try {
144
- const jsonContent = codeBlockMatch[1].trim();
145
- const parsed = JSON.parse(jsonContent);
146
- if (parsed.type === 'tool_use' && parsed.name && parsed.input) {
147
- this.logger.log(`Tool use detected: ${parsed.name} with input ${JSON.stringify(parsed.input)}`);
148
- return {
149
- isToolUse: true,
150
- toolName: parsed.name,
151
- toolInput: parsed.input,
152
- };
153
- }
154
- }
155
- catch (e) {
156
- }
157
- }
158
- const cleanedContent = content
159
- .split('\n')
160
- .map(line => line.replace(/^[●\-\*\s]+/, ''))
161
- .join('\n');
162
- const startMatch = cleanedContent.match(/\{\s*"type"\s*:\s*"tool_use"/);
163
- if (startMatch && startMatch.index !== undefined) {
164
- let braceCount = 0;
165
- let inString = false;
166
- let escapeNext = false;
167
- let jsonStr = '';
168
- for (let i = startMatch.index; i < cleanedContent.length; i++) {
169
- const char = cleanedContent[i];
170
- jsonStr += char;
171
- if (escapeNext) {
172
- escapeNext = false;
173
- continue;
174
- }
175
- if (char === '\\') {
176
- escapeNext = true;
177
- continue;
178
- }
179
- if (char === '"') {
180
- inString = !inString;
181
- continue;
182
- }
183
- if (!inString) {
184
- if (char === '{')
185
- braceCount++;
186
- if (char === '}') {
187
- braceCount--;
188
- if (braceCount === 0) {
189
- try {
190
- const parsed = JSON.parse(jsonStr);
191
- if (parsed.type === 'tool_use' && parsed.name && parsed.input) {
192
- this.logger.log(`Tool use detected: ${parsed.name} with input ${JSON.stringify(parsed.input)}`);
193
- return {
194
- isToolUse: true,
195
- toolName: parsed.name,
196
- toolInput: parsed.input,
197
- };
198
- }
199
- }
200
- catch (e) {
201
- this.logger.warn(`Failed to parse extracted JSON: ${e}`);
202
- }
203
- break;
204
- }
205
- }
206
- }
207
- }
208
- }
209
- }
210
- return { isToolUse: false };
211
- }
212
- async queryWithTools(prompt, options = {}, maxTurns = 5) {
213
- if (!this.toolCallService) {
214
- this.logger.warn('ToolCallService not available, falling back to regular query');
215
- return this.query(prompt, options);
216
- }
217
- let turn = 0;
218
- let currentPrompt = prompt;
219
- const tools = this.toolCallService.list();
220
- currentPrompt = this.buildPromptWithTools(currentPrompt, tools);
221
- while (turn < maxTurns) {
222
- this.logger.log(`Tool call turn ${turn + 1}/${maxTurns}`);
223
- const response = await this.query(currentPrompt, options);
224
- if (!response.success) {
225
- return response;
226
- }
227
- const toolUse = this.parseToolUse(response.content);
228
- if (!toolUse.isToolUse) {
229
- this.logger.log('No tool use detected, returning response');
230
- return response;
231
- }
232
- this.logger.log(`Executing tool: ${toolUse.toolName}`);
233
- try {
234
- const toolResult = await this.toolCallService.execute(toolUse.toolName, toolUse.toolInput);
235
- currentPrompt = this.buildFollowUpPrompt(toolUse.toolName, toolUse.toolInput, toolResult);
236
- turn++;
237
- }
238
- catch (error) {
239
- this.logger.error(`Tool execution failed: ${error.message}`);
240
- return {
241
- content: '',
242
- provider: this.name,
243
- command: response.command,
244
- success: false,
245
- error: `Tool execution failed: ${error.message}`,
246
- taskId: response.taskId,
247
- };
248
- }
249
- }
250
- this.logger.error(`Max tool call turns (${maxTurns}) exceeded`);
251
- return {
252
- content: '',
253
- provider: this.name,
254
- command: `${this.getCliCommand()} (max turns exceeded)`,
255
- success: false,
256
- error: `Maximum tool call iterations (${maxTurns}) exceeded`,
257
- taskId: options.taskId,
258
- };
259
- }
260
- };
261
- exports.CopilotProvider = CopilotProvider;
262
- exports.CopilotProvider = CopilotProvider = __decorate([
263
- (0, common_1.Injectable)(),
264
- __metadata("design:paramtypes", [tool_call_service_1.ToolCallService])
265
- ], CopilotProvider);
266
- //# sourceMappingURL=copilot.provider.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"copilot.provider.js","sourceRoot":"","sources":["../../src/providers/copilot.provider.ts"],"names":[],"mappings":"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"}
@@ -1,22 +0,0 @@
1
- import { BaseAIProvider } from './base-ai.provider';
2
- import { AIQueryOptions, AIResponse } from '@sowonai/crewx-sdk';
3
- import { ToolCallService } from '../services/tool-call.service';
4
- export declare class GeminiProvider extends BaseAIProvider {
5
- readonly name: "cli/gemini";
6
- constructor(toolCallService?: ToolCallService);
7
- protected getCliCommand(): string;
8
- protected getDefaultArgs(): string[];
9
- protected getExecuteArgs(): string[];
10
- protected getPromptInArgs(): boolean;
11
- protected getNotInstalledMessage(): string;
12
- private buildPromptWithTools;
13
- query(prompt: string, options?: AIQueryOptions): Promise<AIResponse>;
14
- execute(prompt: string, options?: AIQueryOptions): Promise<AIResponse>;
15
- protected parseToolUseProviderSpecific(parsed: any): {
16
- isToolUse: boolean;
17
- toolName?: string;
18
- toolInput?: any;
19
- };
20
- queryWithTools(prompt: string, options?: AIQueryOptions, maxTurns?: number): Promise<AIResponse>;
21
- private buildToolResultPrompt;
22
- }
@@ -1,147 +0,0 @@
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
@@ -1 +0,0 @@
1
- {"version":3,"file":"gemini.provider.js","sourceRoot":"","sources":["../../src/providers/gemini.provider.ts"],"names":[],"mappings":"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"}
@@ -1,18 +0,0 @@
1
- export interface MentionTask {
2
- agents: string[];
3
- task: string;
4
- type: 'shared' | 'individual';
5
- models?: Map<string, string>;
6
- }
7
- export interface ParsedMentions {
8
- tasks: MentionTask[];
9
- unmatchedText: string[];
10
- errors: string[];
11
- }
12
- export declare class MentionParser {
13
- private readonly agentPattern;
14
- private readonly validAgents;
15
- constructor(validAgents: string[]);
16
- parse(text: string): ParsedMentions;
17
- }
18
- export declare function loadAvailableAgents(configPath?: string): Promise<string[]>;
@@ -1,136 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
- Object.defineProperty(exports, "__esModule", { value: true });
36
- exports.MentionParser = void 0;
37
- exports.loadAvailableAgents = loadAvailableAgents;
38
- const fs = __importStar(require("fs"));
39
- const yaml = __importStar(require("js-yaml"));
40
- class MentionParser {
41
- constructor(validAgents) {
42
- this.agentPattern = /(@[a-zA-Z0-9_]+(?::[a-zA-Z0-9._-]+)?)/g;
43
- this.validAgents = new Set(validAgents);
44
- }
45
- parse(text) {
46
- const tasks = [];
47
- const errors = [];
48
- const unmatchedText = [];
49
- const parts = text.split(this.agentPattern);
50
- let agentGroup = [];
51
- let modelMap = new Map();
52
- let taskText = '';
53
- let leadingText = '';
54
- if (parts.length > 0 && parts[0] && !parts[0].startsWith('@')) {
55
- leadingText = parts.shift()?.trim() || '';
56
- }
57
- for (const part of parts) {
58
- if (!part)
59
- continue;
60
- if (part.startsWith('@')) {
61
- const mentionPart = part.substring(1);
62
- const [agentId, model] = mentionPart.split(':');
63
- if (!agentId)
64
- continue;
65
- if (this.validAgents.has(agentId)) {
66
- if (taskText.trim() && agentGroup.length > 0) {
67
- tasks.push({
68
- agents: agentGroup,
69
- task: taskText.trim(),
70
- type: agentGroup.length > 1 ? 'shared' : 'individual',
71
- models: modelMap.size > 0 ? modelMap : undefined,
72
- });
73
- agentGroup = [agentId];
74
- modelMap = new Map();
75
- if (model) {
76
- modelMap.set(agentId, model);
77
- }
78
- taskText = '';
79
- }
80
- else {
81
- agentGroup.push(agentId);
82
- if (model) {
83
- modelMap.set(agentId, model);
84
- }
85
- }
86
- }
87
- else {
88
- errors.push(`Unknown agent: @${agentId}`);
89
- }
90
- }
91
- else {
92
- taskText += part;
93
- }
94
- }
95
- if (agentGroup.length > 0) {
96
- const trimmedTask = taskText.trim();
97
- if (trimmedTask) {
98
- tasks.push({
99
- agents: agentGroup,
100
- task: trimmedTask,
101
- type: agentGroup.length > 1 ? 'shared' : 'individual',
102
- models: modelMap.size > 0 ? modelMap : undefined,
103
- });
104
- }
105
- }
106
- else if (taskText.trim()) {
107
- unmatchedText.push(taskText.trim());
108
- }
109
- if (leadingText) {
110
- if (tasks.length > 0 && tasks[0]) {
111
- tasks[0].task = leadingText + ' ' + (tasks[0].task || '');
112
- }
113
- else {
114
- unmatchedText.push(leadingText);
115
- }
116
- }
117
- return { tasks, unmatchedText, errors };
118
- }
119
- }
120
- exports.MentionParser = MentionParser;
121
- async function loadAvailableAgents(configPath = 'agents.yaml') {
122
- try {
123
- const fileContents = await fs.promises.readFile(configPath, 'utf8');
124
- const config = yaml.load(fileContents);
125
- if (config && Array.isArray(config.agents)) {
126
- return config.agents.map((agent) => agent.id);
127
- }
128
- console.warn(`Warning: Could not find agents in ${configPath}.`);
129
- return [];
130
- }
131
- catch (error) {
132
- console.error(`Error loading or parsing ${configPath}:`, error);
133
- return [];
134
- }
135
- }
136
- //# sourceMappingURL=mention-parser.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"mention-parser.js","sourceRoot":"","sources":["../../src/utils/mention-parser.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkIA,kDAeC;AAjJD,uCAAyB;AACzB,8CAAgC;AA+BhC,MAAa,aAAa;IAIxB,YAAY,WAAqB;QAHhB,iBAAY,GAAG,wCAAwC,CAAC;QAIvE,IAAI,CAAC,WAAW,GAAG,IAAI,GAAG,CAAC,WAAW,CAAC,CAAC;IAC1C,CAAC;IAOD,KAAK,CAAC,IAAY;QAChB,MAAM,KAAK,GAAkB,EAAE,CAAC;QAChC,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,MAAM,aAAa,GAAa,EAAE,CAAC;QAEnC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAE5C,IAAI,UAAU,GAAa,EAAE,CAAC;QAC9B,IAAI,QAAQ,GAAG,IAAI,GAAG,EAAkB,CAAC;QACzC,IAAI,QAAQ,GAAG,EAAE,CAAC;QAClB,IAAI,WAAW,GAAG,EAAE,CAAC;QAErB,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YAC5D,WAAW,GAAG,KAAK,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;QAC9C,CAAC;QAED,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACvB,IAAI,CAAC,IAAI;gBAAE,SAAS;YAEpB,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;gBAEvB,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;gBACtC,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBAEhD,IAAI,CAAC,OAAO;oBAAE,SAAS;gBAEvB,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;oBAChC,IAAI,QAAQ,CAAC,IAAI,EAAE,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;wBAC3C,KAAK,CAAC,IAAI,CAAC;4BACP,MAAM,EAAE,UAAU;4BAClB,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE;4BACrB,IAAI,EAAE,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY;4BACrD,MAAM,EAAE,QAAQ,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS;yBACnD,CAAC,CAAC;wBACH,UAAU,GAAG,CAAC,OAAO,CAAC,CAAC;wBACvB,QAAQ,GAAG,IAAI,GAAG,EAAkB,CAAC;wBACrC,IAAI,KAAK,EAAE,CAAC;4BACR,QAAQ,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;wBACjC,CAAC;wBACD,QAAQ,GAAG,EAAE,CAAC;oBAClB,CAAC;yBAAM,CAAC;wBACJ,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;wBACzB,IAAI,KAAK,EAAE,CAAC;4BACR,QAAQ,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;wBACjC,CAAC;oBACL,CAAC;gBACL,CAAC;qBAAM,CAAC;oBACJ,MAAM,CAAC,IAAI,CAAC,mBAAmB,OAAO,EAAE,CAAC,CAAC;gBAC9C,CAAC;YACL,CAAC;iBAAM,CAAC;gBACJ,QAAQ,IAAI,IAAI,CAAC;YACrB,CAAC;QACL,CAAC;QAED,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxB,MAAM,WAAW,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC;YACpC,IAAI,WAAW,EAAE,CAAC;gBACd,KAAK,CAAC,IAAI,CAAC;oBACP,MAAM,EAAE,UAAU;oBAClB,IAAI,EAAE,WAAW;oBACjB,IAAI,EAAE,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY;oBACrD,MAAM,EAAE,QAAQ,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS;iBACnD,CAAC,CAAC;YACP,CAAC;QACL,CAAC;aAAM,IAAI,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC;YACzB,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;QACxC,CAAC;QAED,IAAI,WAAW,EAAE,CAAC;YACd,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC/B,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,WAAW,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;YAC9D,CAAC;iBAAM,CAAC;gBACJ,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YACpC,CAAC;QACL,CAAC;QAED,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,EAAE,CAAC;IAC1C,CAAC;CACF;AA3FD,sCA2FC;AAOM,KAAK,UAAU,mBAAmB,CAAC,aAAqB,aAAa;IAC1E,IAAI,CAAC;QACH,MAAM,YAAY,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;QACpE,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,CAAiB,CAAC;QAEvD,IAAI,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;YAC3C,OAAO,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAkB,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC7D,CAAC;QAED,OAAO,CAAC,IAAI,CAAC,qCAAqC,UAAU,GAAG,CAAC,CAAC;QACjE,OAAO,EAAE,CAAC;IACZ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,4BAA4B,UAAU,GAAG,EAAE,KAAK,CAAC,CAAC;QAChE,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC"}