@sowonai/crewx-sdk 0.1.0-dev.0

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 (102) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +558 -0
  3. package/dist/config/index.d.ts +1 -0
  4. package/dist/config/index.js +18 -0
  5. package/dist/config/index.js.map +1 -0
  6. package/dist/config/timeout.config.d.ts +14 -0
  7. package/dist/config/timeout.config.js +34 -0
  8. package/dist/config/timeout.config.js.map +1 -0
  9. package/dist/constants/index.d.ts +4 -0
  10. package/dist/constants/index.js +8 -0
  11. package/dist/constants/index.js.map +1 -0
  12. package/dist/constants.d.ts +1 -0
  13. package/dist/constants.js +18 -0
  14. package/dist/constants.js.map +1 -0
  15. package/dist/conversation/conversation-config.d.ts +9 -0
  16. package/dist/conversation/conversation-config.js +22 -0
  17. package/dist/conversation/conversation-config.js.map +1 -0
  18. package/dist/conversation/conversation-history.interface.d.ts +25 -0
  19. package/dist/conversation/conversation-history.interface.js +3 -0
  20. package/dist/conversation/conversation-history.interface.js.map +1 -0
  21. package/dist/conversation/conversation-storage.service.d.ts +16 -0
  22. package/dist/conversation/conversation-storage.service.js +213 -0
  23. package/dist/conversation/conversation-storage.service.js.map +1 -0
  24. package/dist/conversation/index.d.ts +3 -0
  25. package/dist/conversation/index.js +20 -0
  26. package/dist/conversation/index.js.map +1 -0
  27. package/dist/core/agent/agent-factory.d.ts +30 -0
  28. package/dist/core/agent/agent-factory.js +31 -0
  29. package/dist/core/agent/agent-factory.js.map +1 -0
  30. package/dist/core/agent/agent-runtime.d.ts +36 -0
  31. package/dist/core/agent/agent-runtime.js +96 -0
  32. package/dist/core/agent/agent-runtime.js.map +1 -0
  33. package/dist/core/agent/event-bus.d.ts +44 -0
  34. package/dist/core/agent/event-bus.js +43 -0
  35. package/dist/core/agent/event-bus.js.map +1 -0
  36. package/dist/core/agent/index.d.ts +3 -0
  37. package/dist/core/agent/index.js +11 -0
  38. package/dist/core/agent/index.js.map +1 -0
  39. package/dist/core/providers/ai-provider.interface.d.ts +50 -0
  40. package/dist/core/providers/ai-provider.interface.js +23 -0
  41. package/dist/core/providers/ai-provider.interface.js.map +1 -0
  42. package/dist/core/providers/base-ai.provider.d.ts +67 -0
  43. package/dist/core/providers/base-ai.provider.js +624 -0
  44. package/dist/core/providers/base-ai.provider.js.map +1 -0
  45. package/dist/core/providers/claude.provider.d.ts +24 -0
  46. package/dist/core/providers/claude.provider.js +361 -0
  47. package/dist/core/providers/claude.provider.js.map +1 -0
  48. package/dist/core/providers/codex.provider.d.ts +17 -0
  49. package/dist/core/providers/codex.provider.js +99 -0
  50. package/dist/core/providers/codex.provider.js.map +1 -0
  51. package/dist/core/providers/copilot.provider.d.ts +24 -0
  52. package/dist/core/providers/copilot.provider.js +266 -0
  53. package/dist/core/providers/copilot.provider.js.map +1 -0
  54. package/dist/core/providers/dynamic-provider.factory.d.ts +55 -0
  55. package/dist/core/providers/dynamic-provider.factory.js +587 -0
  56. package/dist/core/providers/dynamic-provider.factory.js.map +1 -0
  57. package/dist/core/providers/gemini.provider.d.ts +21 -0
  58. package/dist/core/providers/gemini.provider.js +147 -0
  59. package/dist/core/providers/gemini.provider.js.map +1 -0
  60. package/dist/index.d.ts +15 -0
  61. package/dist/index.js +34 -0
  62. package/dist/index.js.map +1 -0
  63. package/dist/internal/index.d.ts +1 -0
  64. package/dist/internal/index.js +6 -0
  65. package/dist/internal/index.js.map +1 -0
  66. package/dist/knowledge/DocumentManager.d.ts +4 -0
  67. package/dist/knowledge/DocumentManager.js +119 -0
  68. package/dist/knowledge/DocumentManager.js.map +1 -0
  69. package/dist/knowledge/index.d.ts +1 -0
  70. package/dist/knowledge/index.js +18 -0
  71. package/dist/knowledge/index.js.map +1 -0
  72. package/dist/types/agent.types.d.ts +117 -0
  73. package/dist/types/agent.types.js +16 -0
  74. package/dist/types/agent.types.js.map +1 -0
  75. package/dist/types/index.d.ts +1 -0
  76. package/dist/types/index.js +18 -0
  77. package/dist/types/index.js.map +1 -0
  78. package/dist/types.d.ts +1 -0
  79. package/dist/types.js +18 -0
  80. package/dist/types.js.map +1 -0
  81. package/dist/utils/error-utils.d.ts +3 -0
  82. package/dist/utils/error-utils.js +27 -0
  83. package/dist/utils/error-utils.js.map +1 -0
  84. package/dist/utils/index.d.ts +4 -0
  85. package/dist/utils/index.js +21 -0
  86. package/dist/utils/index.js.map +1 -0
  87. package/dist/utils/math-utils.d.ts +3 -0
  88. package/dist/utils/math-utils.js +10 -0
  89. package/dist/utils/math-utils.js.map +1 -0
  90. package/dist/utils/mention-parser.d.ts +18 -0
  91. package/dist/utils/mention-parser.js +136 -0
  92. package/dist/utils/mention-parser.js.map +1 -0
  93. package/dist/utils/string-utils.d.ts +1 -0
  94. package/dist/utils/string-utils.js +10 -0
  95. package/dist/utils/string-utils.js.map +1 -0
  96. package/dist/utils.d.ts +3 -0
  97. package/dist/utils.js +20 -0
  98. package/dist/utils.js.map +1 -0
  99. package/dist/version.d.ts +1 -0
  100. package/dist/version.js +17 -0
  101. package/dist/version.js.map +1 -0
  102. package/package.json +54 -0
@@ -0,0 +1,266 @@
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 _a;
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ exports.CopilotProvider = void 0;
14
+ const common_1 = require("@nestjs/common");
15
+ const base_ai_provider_1 = require("./base-ai.provider");
16
+ const ai_provider_interface_1 = require("./ai-provider.interface");
17
+ let CopilotProvider = class CopilotProvider extends base_ai_provider_1.BaseAIProvider {
18
+ constructor(toolCallService) {
19
+ super('CopilotProvider');
20
+ this.name = ai_provider_interface_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", [typeof (_a = typeof base_ai_provider_1.ToolCallService !== "undefined" && base_ai_provider_1.ToolCallService) === "function" ? _a : Object])
265
+ ], CopilotProvider);
266
+ //# sourceMappingURL=copilot.provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"copilot.provider.js","sourceRoot":"","sources":["../../../src/core/providers/copilot.provider.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,2CAA4C;AAC5C,yDAA2E;AAC3E,mEAAuF;AAGhF,IAAM,eAAe,GAArB,MAAM,eAAgB,SAAQ,iCAAc;IAGjD,YAAY,eAAiC;QAC3C,KAAK,CAAC,iBAAiB,CAAC,CAAC;QAHlB,SAAI,GAAG,wCAAgB,CAAC,OAAO,CAAC;QAIvC,IAAI,eAAe,EAAE,CAAC;YACpB,IAAI,CAAC,kBAAkB,CAAC,eAAe,CAAC,CAAC;QAC3C,CAAC;IACH,CAAC;IAES,aAAa;QACrB,OAAO,SAAS,CAAC;IACnB,CAAC;IAES,cAAc;QACtB,OAAO,EAAE,CAAC;IACZ,CAAC;IAES,cAAc;QAGtB,OAAO,EAAE,CAAC;IACZ,CAAC;IAES,eAAe;QAEvB,OAAO,KAAK,CAAC;IACf,CAAC;IAES,sBAAsB;QAC9B,OAAO,wIAAwI,CAAC;IAClJ,CAAC;IAKD,KAAK,CAAC,OAAO,CAAC,MAAc,EAAE,UAA0B,EAAE;QACxD,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;YACzB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,uDAAuD,CAAC,CAAC;YACzE,OAAO,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC9C,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,8EAA8E,CAAC,CAAC;QACjG,OAAO,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACxC,CAAC;IAKM,kBAAkB,CACvB,MAAc,EACd,MAAc;QAGd,MAAM,cAAc,GAAG,MAAM,IAAI,MAAM,CAAC;QAExC,IAAI,cAAc,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,cAAc,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC1E,OAAO;gBACL,KAAK,EAAE,IAAI;gBACX,OAAO,EACL,iHAAiH;aACpH,CAAC;QACJ,CAAC;QACD,IAAI,cAAc,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAC;YAC9C,OAAO;gBACL,KAAK,EAAE,IAAI;gBACX,OAAO,EACL,8FAA8F;aACjG,CAAC;QACJ,CAAC;QACD,IACE,cAAc,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC;YAC7C,cAAc,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,EAC9C,CAAC;YACD,OAAO;gBACL,KAAK,EAAE,IAAI;gBACX,OAAO,EACL,gGAAgG;aACnG,CAAC;QACJ,CAAC;QAED,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC;YAC/C,MAAM,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC,EAAE,CAAC;YAChE,OAAO;gBACL,KAAK,EAAE,IAAI;gBACX,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,oBAAoB;aAC/D,CAAC;QACJ,CAAC;QAID,IACE,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC;YACnD,MAAM,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,EAC5C,CAAC;YACD,OAAO;gBACL,KAAK,EAAE,IAAI;gBACX,OAAO,EAAE,gFAAgF;aAC1F,CAAC;QACJ,CAAC;QAGD,IAAI,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC;YACtB,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;QAC1C,CAAC;QAED,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;IACvC,CAAC;IAKO,oBAAoB,CAAC,MAAc,EAAE,KAAa;QACxD,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACjC,OAAO,MAAM,CAAC;QAChB,CAAC;QAGD,OAAO,MAAM,CAAC;IAChB,CAAC;IAKO,mBAAmB,CAAC,QAAgB,EAAE,SAAc,EAAE,UAAe;QAC3E,OAAO;QACH,QAAQ;SACP,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC;UACxB,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC;;8DAE0B,CAAC;IAC7D,CAAC;IASS,YAAY,CAAC,OAAe;QAEpC,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,wEAAwE,CAAC,CAAC;QACzG,IAAI,QAAQ,IAAI,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;YAC5B,IAAI,CAAC;gBACH,MAAM,WAAW,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;gBACvC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;gBACvC,IAAI,MAAM,CAAC,IAAI,KAAK,UAAU,IAAI,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;oBAC9D,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,sBAAsB,MAAM,CAAC,IAAI,eAAe,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;oBAChG,OAAO;wBACL,SAAS,EAAE,IAAI;wBACf,QAAQ,EAAE,MAAM,CAAC,IAAI;wBACrB,SAAS,EAAE,MAAM,CAAC,KAAK;qBACxB,CAAC;gBACJ,CAAC;YACH,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;YAEb,CAAC;QACH,CAAC;QAED,IAAI,CAAC;YAEH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAGnC,IAAI,MAAM,CAAC,IAAI,KAAK,UAAU,IAAI,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;gBAC9D,OAAO;oBACL,SAAS,EAAE,IAAI;oBACf,QAAQ,EAAE,MAAM,CAAC,IAAI;oBACrB,SAAS,EAAE,MAAM,CAAC,KAAK;iBACxB,CAAC;YACJ,CAAC;YAGD,IAAI,MAAM,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;gBACpD,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC;gBACvE,IAAI,OAAO,EAAE,CAAC;oBACZ,OAAO;wBACL,SAAS,EAAE,IAAI;wBACf,QAAQ,EAAE,OAAO,CAAC,IAAI;wBACtB,SAAS,EAAE,OAAO,CAAC,KAAK;qBACzB,CAAC;gBACJ,CAAC;YACH,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAGf,MAAM,cAAc,GAAG,OAAO,CAAC,KAAK,CAAC,oCAAoC,CAAC,CAAC;YAC3E,IAAI,cAAc,IAAI,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC;gBACxC,IAAI,CAAC;oBACH,MAAM,WAAW,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;oBAC7C,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;oBACvC,IAAI,MAAM,CAAC,IAAI,KAAK,UAAU,IAAI,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;wBAC9D,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,sBAAsB,MAAM,CAAC,IAAI,eAAe,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;wBAChG,OAAO;4BACL,SAAS,EAAE,IAAI;4BACf,QAAQ,EAAE,MAAM,CAAC,IAAI;4BACrB,SAAS,EAAE,MAAM,CAAC,KAAK;yBACxB,CAAC;oBACJ,CAAC;gBACH,CAAC;gBAAC,OAAO,CAAC,EAAE,CAAC;gBAEb,CAAC;YACH,CAAC;YAID,MAAM,cAAc,GAAG,OAAO;iBAC3B,KAAK,CAAC,IAAI,CAAC;iBACX,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;iBAC5C,IAAI,CAAC,IAAI,CAAC,CAAC;YAGd,MAAM,UAAU,GAAG,cAAc,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAC;YACxE,IAAI,UAAU,IAAI,UAAU,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;gBAEjD,IAAI,UAAU,GAAG,CAAC,CAAC;gBACnB,IAAI,QAAQ,GAAG,KAAK,CAAC;gBACrB,IAAI,UAAU,GAAG,KAAK,CAAC;gBACvB,IAAI,OAAO,GAAG,EAAE,CAAC;gBAEjB,KAAK,IAAI,CAAC,GAAG,UAAU,CAAC,KAAK,EAAE,CAAC,GAAG,cAAc,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;oBAC9D,MAAM,IAAI,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC;oBAC/B,OAAO,IAAI,IAAI,CAAC;oBAEhB,IAAI,UAAU,EAAE,CAAC;wBACf,UAAU,GAAG,KAAK,CAAC;wBACnB,SAAS;oBACX,CAAC;oBAED,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;wBAClB,UAAU,GAAG,IAAI,CAAC;wBAClB,SAAS;oBACX,CAAC;oBAED,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;wBACjB,QAAQ,GAAG,CAAC,QAAQ,CAAC;wBACrB,SAAS;oBACX,CAAC;oBAED,IAAI,CAAC,QAAQ,EAAE,CAAC;wBACd,IAAI,IAAI,KAAK,GAAG;4BAAE,UAAU,EAAE,CAAC;wBAC/B,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;4BACjB,UAAU,EAAE,CAAC;4BACb,IAAI,UAAU,KAAK,CAAC,EAAE,CAAC;gCAErB,IAAI,CAAC;oCACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;oCACnC,IAAI,MAAM,CAAC,IAAI,KAAK,UAAU,IAAI,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;wCAC9D,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,sBAAsB,MAAM,CAAC,IAAI,eAAe,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;wCAChG,OAAO;4CACL,SAAS,EAAE,IAAI;4CACf,QAAQ,EAAE,MAAM,CAAC,IAAI;4CACrB,SAAS,EAAE,MAAM,CAAC,KAAK;yCACxB,CAAC;oCACJ,CAAC;gCACH,CAAC;gCAAC,OAAO,CAAC,EAAE,CAAC;oCACX,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,mCAAmC,CAAC,EAAE,CAAC,CAAC;gCAC3D,CAAC;gCACD,MAAM;4BACR,CAAC;wBACH,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;IAC9B,CAAC;IAKD,KAAK,CAAC,cAAc,CAAC,MAAc,EAAE,UAA0B,EAAE,EAAE,WAAmB,CAAC;QACrF,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;YAC1B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,8DAA8D,CAAC,CAAC;YACjF,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACrC,CAAC;QAED,IAAI,IAAI,GAAG,CAAC,CAAC;QACb,IAAI,aAAa,GAAG,MAAM,CAAC;QAC3B,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC;QAG1C,aAAa,GAAG,IAAI,CAAC,oBAAoB,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;QAEhE,OAAO,IAAI,GAAG,QAAQ,EAAE,CAAC;YACvB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,kBAAkB,IAAI,GAAG,CAAC,IAAI,QAAQ,EAAE,CAAC,CAAC;YAG1D,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;YAE1D,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;gBACtB,OAAO,QAAQ,CAAC;YAClB,CAAC;YAGD,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YAEpD,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;gBAEvB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAC;gBAC5D,OAAO,QAAQ,CAAC;YAClB,CAAC;YAGD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,mBAAmB,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;YAEvD,IAAI,CAAC;gBACH,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,OAAO,CACnD,OAAO,CAAC,QAAS,EACjB,OAAO,CAAC,SAAU,CACnB,CAAC;gBAGF,aAAa,GAAG,IAAI,CAAC,mBAAmB,CACtC,OAAO,CAAC,QAAS,EACjB,OAAO,CAAC,SAAU,EAClB,UAAU,CACX,CAAC;gBAEF,IAAI,EAAE,CAAC;YACT,CAAC;YAAC,OAAO,KAAU,EAAE,CAAC;gBACpB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,0BAA0B,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;gBAG7D,OAAO;oBACL,OAAO,EAAE,EAAE;oBACX,QAAQ,EAAE,IAAI,CAAC,IAAI;oBACnB,OAAO,EAAE,QAAQ,CAAC,OAAO;oBACzB,OAAO,EAAE,KAAK;oBACd,KAAK,EAAE,0BAA0B,KAAK,CAAC,OAAO,EAAE;oBAChD,MAAM,EAAE,QAAQ,CAAC,MAAM;iBACxB,CAAC;YACJ,CAAC;QACH,CAAC;QAGD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,wBAAwB,QAAQ,YAAY,CAAC,CAAC;QAChE,OAAO;YACL,OAAO,EAAE,EAAE;YACX,QAAQ,EAAE,IAAI,CAAC,IAAI;YACnB,OAAO,EAAE,GAAG,IAAI,CAAC,aAAa,EAAE,uBAAuB;YACvD,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,iCAAiC,QAAQ,YAAY;YAC5D,MAAM,EAAE,OAAO,CAAC,MAAM;SACvB,CAAC;IACJ,CAAC;CACF,CAAA;AA3VY,0CAAe;0BAAf,eAAe;IAD3B,IAAA,mBAAU,GAAE;yDAImB,kCAAe,oBAAf,kCAAe;GAHlC,eAAe,CA2V3B"}
@@ -0,0 +1,55 @@
1
+ import { BaseAIProvider } from './base-ai.provider';
2
+ export interface PluginProviderConfig {
3
+ id: string;
4
+ type: 'plugin';
5
+ cli_command: string;
6
+ display_name?: string;
7
+ description?: string;
8
+ default_model?: string;
9
+ query_args: string[];
10
+ execute_args: string[];
11
+ prompt_in_args: boolean;
12
+ timeout?: {
13
+ query: number;
14
+ execute: number;
15
+ };
16
+ error_patterns?: Array<{
17
+ pattern: string;
18
+ type: string;
19
+ message: string;
20
+ }>;
21
+ not_installed_message?: string;
22
+ env?: Record<string, string>;
23
+ }
24
+ export interface RemoteProviderConfig {
25
+ id: string;
26
+ type: 'remote';
27
+ location: string;
28
+ external_agent_id: string;
29
+ display_name?: string;
30
+ description?: string;
31
+ default_model?: string;
32
+ auth?: {
33
+ type: 'bearer' | 'api_key' | 'none';
34
+ token?: string;
35
+ };
36
+ timeout?: {
37
+ query: number;
38
+ execute: number;
39
+ };
40
+ headers?: Record<string, string>;
41
+ }
42
+ export declare class DynamicProviderFactory {
43
+ private logger;
44
+ private readonly timeoutConfig;
45
+ private readonly BLOCKED_CLI_COMMANDS;
46
+ createProvider(config: PluginProviderConfig | RemoteProviderConfig): BaseAIProvider;
47
+ private createPluginProvider;
48
+ private createRemoteProvider;
49
+ private validateCliCommand;
50
+ private validateCliArgs;
51
+ private validateErrorPatterns;
52
+ private validateEnv;
53
+ private validateRemoteConfig;
54
+ validateConfig(config: any): config is PluginProviderConfig | RemoteProviderConfig;
55
+ }