@sowonai/crewx-sdk 0.5.0 → 0.6.0-rc.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.
- package/dist/adapters/MastraToolAdapter.d.ts +9 -0
- package/dist/adapters/MastraToolAdapter.js +66 -0
- package/dist/adapters/MastraToolAdapter.js.map +1 -0
- package/dist/config/api-provider-parser.d.ts +56 -0
- package/dist/config/api-provider-parser.js +214 -0
- package/dist/config/api-provider-parser.js.map +1 -0
- package/dist/config/index.d.ts +2 -0
- package/dist/config/index.js +2 -0
- package/dist/config/index.js.map +1 -1
- package/dist/core/agent/agent-factory.d.ts +4 -2
- package/dist/core/agent/agent-factory.js +11 -0
- package/dist/core/agent/agent-factory.js.map +1 -1
- package/dist/core/providers/MastraAPIProvider.d.ts +24 -0
- package/dist/core/providers/MastraAPIProvider.js +264 -0
- package/dist/core/providers/MastraAPIProvider.js.map +1 -0
- package/dist/core/providers/ai-provider.interface.d.ts +1 -0
- package/dist/core/providers/ai-provider.interface.js.map +1 -1
- package/dist/core/providers/provider-factory.js +38 -0
- package/dist/core/providers/provider-factory.js.map +1 -1
- package/dist/index.d.ts +10 -0
- package/dist/index.js +37 -2
- package/dist/index.js.map +1 -1
- package/dist/schemas/api-provider.schema.d.ts +429 -0
- package/dist/schemas/api-provider.schema.js +48 -0
- package/dist/schemas/api-provider.schema.js.map +1 -0
- package/dist/tools/file-system.service.d.ts +10 -0
- package/dist/tools/file-system.service.js +33 -0
- package/dist/tools/file-system.service.js.map +1 -0
- package/dist/tools/find.tool.d.ts +85 -0
- package/dist/tools/find.tool.js +140 -0
- package/dist/tools/find.tool.js.map +1 -0
- package/dist/tools/glob.tool.d.ts +100 -0
- package/dist/tools/glob.tool.js +153 -0
- package/dist/tools/glob.tool.js.map +1 -0
- package/dist/tools/grep.tool.d.ts +54 -0
- package/dist/tools/grep.tool.js +137 -0
- package/dist/tools/grep.tool.js.map +1 -0
- package/dist/tools/index.d.ts +12 -0
- package/dist/tools/index.js +40 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/ls.tool.d.ts +42 -0
- package/dist/tools/ls.tool.js +94 -0
- package/dist/tools/ls.tool.js.map +1 -0
- package/dist/tools/read-file.tool.d.ts +54 -0
- package/dist/tools/read-file.tool.js +69 -0
- package/dist/tools/read-file.tool.js.map +1 -0
- package/dist/tools/replace.tool.d.ts +66 -0
- package/dist/tools/replace.tool.js +68 -0
- package/dist/tools/replace.tool.js.map +1 -0
- package/dist/tools/run-shell-command.tool.d.ts +42 -0
- package/dist/tools/run-shell-command.tool.js +64 -0
- package/dist/tools/run-shell-command.tool.js.map +1 -0
- package/dist/tools/tree.tool.d.ts +42 -0
- package/dist/tools/tree.tool.js +109 -0
- package/dist/tools/tree.tool.js.map +1 -0
- package/dist/tools/types.d.ts +42 -0
- package/dist/tools/types.js +13 -0
- package/dist/tools/types.js.map +1 -0
- package/dist/tools/utils/file-utils.d.ts +5 -0
- package/dist/tools/utils/file-utils.js +221 -0
- package/dist/tools/utils/file-utils.js.map +1 -0
- package/dist/tools/write-file.tool.d.ts +42 -0
- package/dist/tools/write-file.tool.js +55 -0
- package/dist/tools/write-file.tool.js.map +1 -0
- package/dist/types/agent.types.d.ts +2 -2
- package/dist/types/api-provider.types.d.ts +80 -0
- package/dist/types/api-provider.types.js +53 -0
- package/dist/types/api-provider.types.js.map +1 -0
- package/dist/types/index.d.ts +1 -0
- package/dist/types/index.js +1 -0
- package/dist/types/index.js.map +1 -1
- package/dist/utils/api-provider-normalizer.d.ts +16 -0
- package/dist/utils/api-provider-normalizer.js +135 -0
- package/dist/utils/api-provider-normalizer.js.map +1 -0
- package/package.json +5 -1
|
@@ -0,0 +1,264 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MastraAPIProvider = void 0;
|
|
4
|
+
const core_1 = require("@mastra/core");
|
|
5
|
+
const openai_1 = require("@ai-sdk/openai");
|
|
6
|
+
const anthropic_1 = require("@ai-sdk/anthropic");
|
|
7
|
+
const google_1 = require("@ai-sdk/google");
|
|
8
|
+
const ai_sdk_provider_1 = require("@openrouter/ai-sdk-provider");
|
|
9
|
+
const MastraToolAdapter_1 = require("../../adapters/MastraToolAdapter");
|
|
10
|
+
const api_provider_normalizer_1 = require("../../utils/api-provider-normalizer");
|
|
11
|
+
class MastraAPIProvider {
|
|
12
|
+
constructor(config, mode = 'query') {
|
|
13
|
+
this.tools = [];
|
|
14
|
+
this.filteredToolSets = {};
|
|
15
|
+
const normalizedConfig = (0, api_provider_normalizer_1.normalizeAPIProviderConfig)(config);
|
|
16
|
+
this.config = normalizedConfig.config;
|
|
17
|
+
this.permissionsByMode = normalizedConfig.permissionsByMode;
|
|
18
|
+
this.defaultMode = mode;
|
|
19
|
+
this.name = this.config.provider;
|
|
20
|
+
}
|
|
21
|
+
createModel(config) {
|
|
22
|
+
const { provider, model, apiKey, url } = config;
|
|
23
|
+
switch (provider) {
|
|
24
|
+
case 'api/openai': {
|
|
25
|
+
if (url && url.includes('openrouter.ai')) {
|
|
26
|
+
console.log('[MastraAPIProvider] Detected OpenRouter, using @openrouter/ai-sdk-provider');
|
|
27
|
+
const openrouter = (0, ai_sdk_provider_1.createOpenRouter)({
|
|
28
|
+
apiKey: apiKey || '',
|
|
29
|
+
});
|
|
30
|
+
return openrouter(model);
|
|
31
|
+
}
|
|
32
|
+
if (apiKey && url) {
|
|
33
|
+
const customOpenAI = (0, openai_1.createOpenAI)({ apiKey, baseURL: url });
|
|
34
|
+
return customOpenAI(model);
|
|
35
|
+
}
|
|
36
|
+
else if (apiKey) {
|
|
37
|
+
const customOpenAI = (0, openai_1.createOpenAI)({ apiKey });
|
|
38
|
+
return customOpenAI(model);
|
|
39
|
+
}
|
|
40
|
+
return (0, openai_1.openai)(model);
|
|
41
|
+
}
|
|
42
|
+
case 'api/litellm':
|
|
43
|
+
case 'api/ollama':
|
|
44
|
+
case 'api/sowonai': {
|
|
45
|
+
let defaultURL = 'http://localhost:4000';
|
|
46
|
+
let defaultKey = 'dummy';
|
|
47
|
+
if (provider === 'api/ollama') {
|
|
48
|
+
defaultURL = 'http://localhost:11434/v1';
|
|
49
|
+
defaultKey = 'ollama';
|
|
50
|
+
}
|
|
51
|
+
else if (provider === 'api/sowonai') {
|
|
52
|
+
defaultURL = 'https://api.sowon.ai/v1';
|
|
53
|
+
}
|
|
54
|
+
const customOpenAI = (0, openai_1.createOpenAI)({
|
|
55
|
+
apiKey: apiKey || defaultKey,
|
|
56
|
+
baseURL: url || defaultURL,
|
|
57
|
+
});
|
|
58
|
+
return customOpenAI.chat(model);
|
|
59
|
+
}
|
|
60
|
+
case 'api/anthropic': {
|
|
61
|
+
if (apiKey && url) {
|
|
62
|
+
const customAnthropic = (0, anthropic_1.createAnthropic)({ apiKey, baseURL: url });
|
|
63
|
+
return customAnthropic(model);
|
|
64
|
+
}
|
|
65
|
+
else if (apiKey) {
|
|
66
|
+
const customAnthropic = (0, anthropic_1.createAnthropic)({ apiKey });
|
|
67
|
+
return customAnthropic(model);
|
|
68
|
+
}
|
|
69
|
+
return (0, anthropic_1.anthropic)(model);
|
|
70
|
+
}
|
|
71
|
+
case 'api/bedrock': {
|
|
72
|
+
const customAnthropic = (0, anthropic_1.createAnthropic)({
|
|
73
|
+
apiKey: apiKey || '',
|
|
74
|
+
baseURL: url || 'https://bedrock-runtime.us-east-1.amazonaws.com',
|
|
75
|
+
});
|
|
76
|
+
return customAnthropic(model);
|
|
77
|
+
}
|
|
78
|
+
case 'api/google': {
|
|
79
|
+
if (apiKey) {
|
|
80
|
+
const customGoogle = (0, google_1.createGoogleGenerativeAI)({ apiKey });
|
|
81
|
+
return customGoogle(model);
|
|
82
|
+
}
|
|
83
|
+
return (0, google_1.google)(model);
|
|
84
|
+
}
|
|
85
|
+
default:
|
|
86
|
+
throw new Error(`Unsupported provider: ${provider}`);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
setTools(tools, context) {
|
|
90
|
+
this.tools = tools;
|
|
91
|
+
this.toolContext = this.applyDefaultModeToContext(context);
|
|
92
|
+
this.filteredToolSets = this.buildModeAwareToolSets(tools);
|
|
93
|
+
}
|
|
94
|
+
applyDefaultModeToContext(context) {
|
|
95
|
+
if (!context) {
|
|
96
|
+
return undefined;
|
|
97
|
+
}
|
|
98
|
+
if (context.mode) {
|
|
99
|
+
return context;
|
|
100
|
+
}
|
|
101
|
+
return { ...context, mode: this.defaultMode };
|
|
102
|
+
}
|
|
103
|
+
buildModeAwareToolSets(tools) {
|
|
104
|
+
const lookup = new Map();
|
|
105
|
+
for (const tool of tools) {
|
|
106
|
+
const identifier = this.getToolIdentifier(tool);
|
|
107
|
+
if (identifier) {
|
|
108
|
+
lookup.set(identifier, tool);
|
|
109
|
+
}
|
|
110
|
+
else {
|
|
111
|
+
console.warn('[MastraAPIProvider] Ignoring tool without name/id during registration');
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
const filtered = {};
|
|
115
|
+
for (const [mode, permissions] of Object.entries(this.permissionsByMode)) {
|
|
116
|
+
if (!permissions.tools.length) {
|
|
117
|
+
filtered[mode] = [];
|
|
118
|
+
continue;
|
|
119
|
+
}
|
|
120
|
+
filtered[mode] = permissions.tools
|
|
121
|
+
.map((toolName) => {
|
|
122
|
+
if (!lookup.has(toolName)) {
|
|
123
|
+
console.warn(`[MastraAPIProvider] Tool '${toolName}' referenced in ${mode} mode but not registered`);
|
|
124
|
+
}
|
|
125
|
+
return lookup.get(toolName);
|
|
126
|
+
})
|
|
127
|
+
.filter(Boolean);
|
|
128
|
+
}
|
|
129
|
+
return filtered;
|
|
130
|
+
}
|
|
131
|
+
getToolIdentifier(tool) {
|
|
132
|
+
if (tool && typeof tool.id === 'string') {
|
|
133
|
+
return tool.id;
|
|
134
|
+
}
|
|
135
|
+
if (tool && typeof tool.name === 'string') {
|
|
136
|
+
return tool.name;
|
|
137
|
+
}
|
|
138
|
+
return undefined;
|
|
139
|
+
}
|
|
140
|
+
createMastraToolsForMode(mode) {
|
|
141
|
+
if (!this.toolContext) {
|
|
142
|
+
return {};
|
|
143
|
+
}
|
|
144
|
+
const registeredTools = this.filteredToolSets[mode] ?? [];
|
|
145
|
+
if (registeredTools.length === 0) {
|
|
146
|
+
return {};
|
|
147
|
+
}
|
|
148
|
+
const contextWithMode = { ...this.toolContext, mode };
|
|
149
|
+
return MastraToolAdapter_1.MastraToolAdapter.convertTools(registeredTools, contextWithMode);
|
|
150
|
+
}
|
|
151
|
+
async query(prompt, options = {}) {
|
|
152
|
+
return this.runWithMode('query', prompt, options);
|
|
153
|
+
}
|
|
154
|
+
async execute(prompt, options = {}) {
|
|
155
|
+
return this.runWithMode('execute', prompt, options);
|
|
156
|
+
}
|
|
157
|
+
async runWithMode(mode, prompt, options) {
|
|
158
|
+
const taskId = options.taskId || `${this.name}_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`;
|
|
159
|
+
try {
|
|
160
|
+
const mastraTools = this.createMastraToolsForMode(mode);
|
|
161
|
+
const toolCount = Object.keys(mastraTools).length;
|
|
162
|
+
if (toolCount > 0) {
|
|
163
|
+
console.log(`[INFO] Registered ${toolCount} tools for ${mode} mode: ${Object.keys(mastraTools).join(', ')}`);
|
|
164
|
+
}
|
|
165
|
+
else {
|
|
166
|
+
console.log(`[INFO] No tools registered for ${mode} mode`);
|
|
167
|
+
}
|
|
168
|
+
const configToUse = options.model
|
|
169
|
+
? { ...this.config, model: options.model }
|
|
170
|
+
: this.config;
|
|
171
|
+
console.log(`[INFO] Using model: ${configToUse.model}`);
|
|
172
|
+
const modelInstance = this.createModel(configToUse);
|
|
173
|
+
const agent = new core_1.Agent({
|
|
174
|
+
name: this.config.provider,
|
|
175
|
+
model: modelInstance,
|
|
176
|
+
instructions: prompt,
|
|
177
|
+
tools: mastraTools,
|
|
178
|
+
});
|
|
179
|
+
const generateOptions = Object.keys(mastraTools).length > 0
|
|
180
|
+
? { toolChoice: 'required' }
|
|
181
|
+
: {};
|
|
182
|
+
console.log(`[INFO] Sending request to AI model...`);
|
|
183
|
+
const fullOutput = await agent.generate(prompt, generateOptions);
|
|
184
|
+
console.log(`[INFO] Received response from AI model`);
|
|
185
|
+
return this.convertResponse(fullOutput, taskId);
|
|
186
|
+
}
|
|
187
|
+
catch (error) {
|
|
188
|
+
return {
|
|
189
|
+
content: '',
|
|
190
|
+
provider: this.name,
|
|
191
|
+
command: `${this.name} ${mode}`,
|
|
192
|
+
success: false,
|
|
193
|
+
error: error.message || 'Unknown error',
|
|
194
|
+
taskId,
|
|
195
|
+
};
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
convertResponse(fullOutput, taskId) {
|
|
199
|
+
let content = fullOutput.text || '';
|
|
200
|
+
const response = {
|
|
201
|
+
content,
|
|
202
|
+
provider: this.name,
|
|
203
|
+
command: `${this.name} (Mastra)`,
|
|
204
|
+
success: true,
|
|
205
|
+
taskId,
|
|
206
|
+
model: this.config.model,
|
|
207
|
+
};
|
|
208
|
+
if (fullOutput.toolCalls && fullOutput.toolCalls.length > 0) {
|
|
209
|
+
const firstToolCall = fullOutput.toolCalls[0];
|
|
210
|
+
const toolName = firstToolCall.payload?.toolName || firstToolCall.toolName;
|
|
211
|
+
const toolArgs = firstToolCall.payload?.args || firstToolCall.args;
|
|
212
|
+
console.log(`[INFO] Tool called: ${toolName}`);
|
|
213
|
+
console.log(`[INFO] Tool arguments: ${JSON.stringify(toolArgs)}`);
|
|
214
|
+
const firstResult = fullOutput.toolResults?.[0];
|
|
215
|
+
const toolResultValue = firstResult?.payload?.result || firstResult?.result;
|
|
216
|
+
if (toolResultValue) {
|
|
217
|
+
const resultPreview = typeof toolResultValue === 'string'
|
|
218
|
+
? toolResultValue.substring(0, 200)
|
|
219
|
+
: JSON.stringify(toolResultValue).substring(0, 200);
|
|
220
|
+
console.log(`[INFO] Tool result preview: ${resultPreview}${(typeof toolResultValue === 'string' ? toolResultValue.length : JSON.stringify(toolResultValue).length) > 200 ? '...' : ''}`);
|
|
221
|
+
}
|
|
222
|
+
response.toolCall = {
|
|
223
|
+
toolName,
|
|
224
|
+
toolInput: toolArgs,
|
|
225
|
+
toolResult: toolResultValue,
|
|
226
|
+
};
|
|
227
|
+
if (!content && toolResultValue) {
|
|
228
|
+
content = `Tool '${toolName}' executed successfully:\n\n${toolResultValue}`;
|
|
229
|
+
response.content = content;
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
return response;
|
|
233
|
+
}
|
|
234
|
+
async isAvailable() {
|
|
235
|
+
const { provider, apiKey } = this.config;
|
|
236
|
+
if (provider === 'api/ollama') {
|
|
237
|
+
return true;
|
|
238
|
+
}
|
|
239
|
+
if (apiKey) {
|
|
240
|
+
return true;
|
|
241
|
+
}
|
|
242
|
+
switch (provider) {
|
|
243
|
+
case 'api/openai':
|
|
244
|
+
return !!process.env.OPENAI_API_KEY;
|
|
245
|
+
case 'api/anthropic':
|
|
246
|
+
return !!process.env.ANTHROPIC_API_KEY;
|
|
247
|
+
case 'api/google':
|
|
248
|
+
return !!process.env.GOOGLE_API_KEY;
|
|
249
|
+
case 'api/bedrock':
|
|
250
|
+
return !!process.env.AWS_ACCESS_KEY_ID;
|
|
251
|
+
case 'api/litellm':
|
|
252
|
+
return !!process.env.LITELLM_API_KEY;
|
|
253
|
+
case 'api/sowonai':
|
|
254
|
+
return !!process.env.SOWONAI_API_KEY;
|
|
255
|
+
default:
|
|
256
|
+
return false;
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
async getToolPath() {
|
|
260
|
+
return null;
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
exports.MastraAPIProvider = MastraAPIProvider;
|
|
264
|
+
//# sourceMappingURL=MastraAPIProvider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MastraAPIProvider.js","sourceRoot":"","sources":["../../../src/core/providers/MastraAPIProvider.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ai-provider.interface.js","sourceRoot":"","sources":["../../../src/core/providers/ai-provider.interface.ts"],"names":[],"mappings":";;;AAGa,QAAA,iBAAiB,GAAG;IAC/B,GAAG,EAAE,KAAK;IACV,MAAM,EAAE,QAAQ;IAChB,GAAG,EAAE,KAAK;IACV,MAAM,EAAE,QAAQ;CACR,CAAC;AAIE,QAAA,gBAAgB,GAAG;IAC9B,MAAM,EAAE,YAAY;IACpB,MAAM,EAAE,YAAY;IACpB,OAAO,EAAE,aAAa;IACtB,KAAK,EAAE,WAAW;CACV,CAAC;
|
|
1
|
+
{"version":3,"file":"ai-provider.interface.js","sourceRoot":"","sources":["../../../src/core/providers/ai-provider.interface.ts"],"names":[],"mappings":";;;AAGa,QAAA,iBAAiB,GAAG;IAC/B,GAAG,EAAE,KAAK;IACV,MAAM,EAAE,QAAQ;IAChB,GAAG,EAAE,KAAK;IACV,MAAM,EAAE,QAAQ;CACR,CAAC;AAIE,QAAA,gBAAgB,GAAG;IAC9B,MAAM,EAAE,YAAY;IACpB,MAAM,EAAE,YAAY;IACpB,OAAO,EAAE,aAAa;IACtB,KAAK,EAAE,WAAW;CACV,CAAC;AAqCX,MAAa,yBAA0B,SAAQ,KAAK;IAClD,YAAY,YAAoB;QAC9B,KAAK,CAAC,gBAAgB,YAAY,qCAAqC,CAAC,CAAC;QACzE,IAAI,CAAC,IAAI,GAAG,2BAA2B,CAAC;IAC1C,CAAC;CACF;AALD,8DAKC"}
|
|
@@ -6,14 +6,52 @@ const claude_provider_1 = require("./claude.provider");
|
|
|
6
6
|
const gemini_provider_1 = require("./gemini.provider");
|
|
7
7
|
const copilot_provider_1 = require("./copilot.provider");
|
|
8
8
|
const codex_provider_1 = require("./codex.provider");
|
|
9
|
+
const MastraAPIProvider_1 = require("./MastraAPIProvider");
|
|
9
10
|
const BUILTIN_PROVIDER_MAP = {
|
|
10
11
|
[ai_provider_interface_1.BuiltInProviders.CLAUDE]: () => new claude_provider_1.ClaudeProvider(),
|
|
11
12
|
[ai_provider_interface_1.BuiltInProviders.GEMINI]: () => new gemini_provider_1.GeminiProvider(),
|
|
12
13
|
[ai_provider_interface_1.BuiltInProviders.COPILOT]: () => new copilot_provider_1.CopilotProvider(),
|
|
13
14
|
[ai_provider_interface_1.BuiltInProviders.CODEX]: () => new codex_provider_1.CodexProvider(),
|
|
14
15
|
};
|
|
16
|
+
function validateAPIProviderConfig(config) {
|
|
17
|
+
const providerType = `${config.namespace}/${config.id}`;
|
|
18
|
+
const validProviders = [
|
|
19
|
+
'api/openai',
|
|
20
|
+
'api/anthropic',
|
|
21
|
+
'api/google',
|
|
22
|
+
'api/bedrock',
|
|
23
|
+
'api/litellm',
|
|
24
|
+
'api/ollama',
|
|
25
|
+
'api/sowonai',
|
|
26
|
+
];
|
|
27
|
+
if (!validProviders.includes(providerType)) {
|
|
28
|
+
throw new Error(`Invalid API provider type '${providerType}'. ` +
|
|
29
|
+
`Valid providers: ${validProviders.join(', ')}`);
|
|
30
|
+
}
|
|
31
|
+
if (!config.model) {
|
|
32
|
+
throw new Error(`Model is required for API provider '${providerType}'. ` +
|
|
33
|
+
`Please specify 'model' in provider configuration.`);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
function createAPIProvider(config) {
|
|
37
|
+
validateAPIProviderConfig(config);
|
|
38
|
+
const apiConfig = {
|
|
39
|
+
provider: `${config.namespace}/${config.id}`,
|
|
40
|
+
model: config.model,
|
|
41
|
+
apiKey: config.apiKey,
|
|
42
|
+
url: config.url,
|
|
43
|
+
temperature: config.temperature,
|
|
44
|
+
maxTokens: config.maxTokens,
|
|
45
|
+
tools: config.tools,
|
|
46
|
+
mcp: config.mcp,
|
|
47
|
+
};
|
|
48
|
+
return new MastraAPIProvider_1.MastraAPIProvider(apiConfig);
|
|
49
|
+
}
|
|
15
50
|
async function createProviderFromConfig(config) {
|
|
16
51
|
const key = `${config.namespace}/${config.id}`.toLowerCase();
|
|
52
|
+
if (config.namespace === 'api') {
|
|
53
|
+
return createAPIProvider(config);
|
|
54
|
+
}
|
|
17
55
|
const factory = BUILTIN_PROVIDER_MAP[key];
|
|
18
56
|
if (factory) {
|
|
19
57
|
return factory();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider-factory.js","sourceRoot":"","sources":["../../../src/core/providers/provider-factory.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"provider-factory.js","sourceRoot":"","sources":["../../../src/core/providers/provider-factory.ts"],"names":[],"mappings":";;AA4EA,4DAwBC;AApGD,mEAA4E;AAC5E,uDAAmD;AACnD,uDAAmD;AACnD,yDAAqD;AACrD,qDAAiD;AACjD,2DAAwD;AAIxD,MAAM,oBAAoB,GAAqC;IAC7D,CAAC,wCAAgB,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC,IAAI,gCAAc,EAAE;IACrD,CAAC,wCAAgB,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC,IAAI,gCAAc,EAAE;IACrD,CAAC,wCAAgB,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC,IAAI,kCAAe,EAAE;IACvD,CAAC,wCAAgB,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,CAAC,IAAI,8BAAa,EAAE;CACpD,CAAC;AAKF,SAAS,yBAAyB,CAAC,MAAsB;IACvD,MAAM,YAAY,GAAG,GAAG,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,EAAE,EAAqB,CAAC;IAG3E,MAAM,cAAc,GAAsB;QACxC,YAAY;QACZ,eAAe;QACf,YAAY;QACZ,aAAa;QACb,aAAa;QACb,YAAY;QACZ,aAAa;KACd,CAAC;IAEF,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;QAC3C,MAAM,IAAI,KAAK,CACb,8BAA8B,YAAY,KAAK;YAC/C,oBAAoB,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAChD,CAAC;IACJ,CAAC;IAGD,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QAClB,MAAM,IAAI,KAAK,CACb,uCAAuC,YAAY,KAAK;YACxD,mDAAmD,CACpD,CAAC;IACJ,CAAC;AACH,CAAC;AAKD,SAAS,iBAAiB,CAAC,MAAsB;IAC/C,yBAAyB,CAAC,MAAM,CAAC,CAAC;IAElC,MAAM,SAAS,GAAsB;QACnC,QAAQ,EAAE,GAAG,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,EAAE,EAAqB;QAC/D,KAAK,EAAE,MAAM,CAAC,KAAM;QACpB,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,GAAG,EAAG,MAAc,CAAC,GAAG;QACxB,WAAW,EAAG,MAAc,CAAC,WAAW;QACxC,SAAS,EAAG,MAAc,CAAC,SAAS;QACpC,KAAK,EAAG,MAAc,CAAC,KAAK;QAC5B,GAAG,EAAG,MAAc,CAAC,GAAG;KACzB,CAAC;IAEF,OAAO,IAAI,qCAAiB,CAAC,SAAS,CAAC,CAAC;AAC1C,CAAC;AASM,KAAK,UAAU,wBAAwB,CAAC,MAAsB;IACnE,MAAM,GAAG,GAAG,GAAG,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,EAAE,EAAE,CAAC,WAAW,EAAE,CAAC;IAG7D,IAAI,MAAM,CAAC,SAAS,KAAK,KAAK,EAAE,CAAC;QAC/B,OAAO,iBAAiB,CAAC,MAAM,CAAC,CAAC;IACnC,CAAC;IAGD,MAAM,OAAO,GAAG,oBAAoB,CAAC,GAAG,CAAC,CAAC;IAC1C,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,OAAO,EAAE,CAAC;IACnB,CAAC;IAED,IAAI,MAAM,CAAC,SAAS,KAAK,QAAQ,IAAI,MAAM,CAAC,SAAS,KAAK,QAAQ,EAAE,CAAC;QACnE,MAAM,IAAI,KAAK,CACb,qBAAqB,GAAG,0BAA0B;YAChD,sEAAsE,CACzE,CAAC;IACJ,CAAC;IAED,MAAM,IAAI,KAAK,CACb,qBAAqB,GAAG,2BAA2B,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAClG,CAAC;AACJ,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,18 +1,28 @@
|
|
|
1
1
|
export { SERVER_NAME, PREFIX_TOOL_NAME, DEFAULT_MAX_FILE_SIZE, DEFAULT_MAX_FILES, } from './constants';
|
|
2
2
|
export type { TimeoutConfig } from './config/timeout.config';
|
|
3
3
|
export { getTimeoutConfig, getDefaultTimeoutConfig } from './config/timeout.config';
|
|
4
|
+
export { parseAPIProviderConfig, parseMCPServers, parseCrewXConfig, validateAPIProviderConfig, substituteEnvVars, APIProviderParseError, type RawAgentConfig, type RawYAMLConfig, type RawMCPServerConfig, } from './config/api-provider-parser';
|
|
4
5
|
export type { BaseMessage, ConversationMessage, ConversationThread, FetchHistoryOptions, IConversationHistoryProvider, } from './conversation/conversation-history.interface';
|
|
5
6
|
export type { ConversationConfig } from './conversation/conversation-config';
|
|
6
7
|
export { DEFAULT_CONVERSATION_CONFIG, getConversationConfig, } from './conversation/conversation-config';
|
|
7
8
|
export { DocumentManager } from './knowledge/DocumentManager';
|
|
9
|
+
export { readFileTool, writeFileTool, replaceTool, lsTool, grepTool, runShellCommandTool, treeTool, findTool, globTool, } from './tools';
|
|
10
|
+
export type { FileSystemService, ProcessedFileReadResult, ToolErrorType, } from './tools';
|
|
8
11
|
export { ProviderNamespace, BuiltInProviders, ProviderNotAvailableError, } from './core/providers/ai-provider.interface';
|
|
9
12
|
export type { ProviderNamespaceType, AIProvider, AIQueryOptions, AIResponse, } from './core/providers/ai-provider.interface';
|
|
10
13
|
export { BaseAIProvider } from './core/providers/base-ai.provider';
|
|
14
|
+
export { MastraAPIProvider } from './core/providers/MastraAPIProvider';
|
|
15
|
+
export { MastraToolAdapter } from './adapters/MastraToolAdapter';
|
|
11
16
|
export { ClaudeProvider, GeminiProvider, CopilotProvider, CodexProvider, BaseDynamicProviderFactory, MockProvider, createProviderFromConfig, } from './core/providers';
|
|
12
17
|
export type { BaseAIProviderOptions, LoggerLike, AIProviderConfig, } from './core/providers/base-ai.types';
|
|
13
18
|
export type { PluginProviderConfig, RemoteProviderConfig, DynamicProviderConfig, DynamicProviderFactoryOptions, } from './core/providers/dynamic-provider.factory';
|
|
14
19
|
export type { ProviderConfig, ProviderInput, ProviderResolutionResult, } from './types/provider.types';
|
|
20
|
+
export type { APIProviderConfig, APIProviderType, ProviderExecutionMode, ProviderModeOptions, ProviderOptions, LegacyProviderPermissionConfig, CrewXInstance, FrameworkToolDefinition, MCPServerConfig, ToolExecutionContext as APIToolExecutionContext, } from './types/api-provider.types';
|
|
21
|
+
export { isLegacyProviderPermissionConfig, isProviderModeOptions, isProviderOptions, convertLegacyPermissionsToProviderOptions, } from './types/api-provider.types';
|
|
22
|
+
export { APIProviderConfigSchema, MCPServerConfigSchema, APIProviderConfigJsonSchema, } from './schemas/api-provider.schema';
|
|
15
23
|
export type { Tool, ToolExecutionContext, ToolExecutionResult, ToolCallHandler, } from './core/providers/tool-call.types';
|
|
24
|
+
export { normalizeAPIProviderConfig, getModePermissions, isAPIProviderConfig, assertAPIProviderConfig, } from './utils/api-provider-normalizer';
|
|
25
|
+
export type { NormalizedAPIProviderConfigResult, ModePermissionBuckets, } from './utils/api-provider-normalizer';
|
|
16
26
|
export type { AgentAction, AgentConfig, AgentsConfig, AgentInfo, AgentQueryOptions, AgentResponse, RemoteAgentConfigInput, RemoteAgentInfo, } from './types/agent.types';
|
|
17
27
|
export { ExecutionMode, SecurityLevel } from './types/agent.types';
|
|
18
28
|
export { getErrorMessage, getErrorStack, isError } from './utils/error-utils';
|
package/dist/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
4
|
-
exports.MockRuntimeValidator = exports.SystemRuntimeValidator = exports.ClaudeSkillAdapter = exports.ProgressiveSkillLoader = exports.clearSkillCache = exports.loadSkillContent = exports.validateSkillMetadata = exports.parseSkillManifestFromFile = exports.parseSkillManifest = exports.parseCrewxConfigFromFile = exports.parseCrewxConfig = exports.SkillVersionMismatchError = exports.SkillDependencyError = void 0;
|
|
3
|
+
exports.SecurityLevel = exports.ExecutionMode = exports.assertAPIProviderConfig = exports.isAPIProviderConfig = exports.getModePermissions = exports.normalizeAPIProviderConfig = exports.APIProviderConfigJsonSchema = exports.MCPServerConfigSchema = exports.APIProviderConfigSchema = exports.convertLegacyPermissionsToProviderOptions = exports.isProviderOptions = exports.isProviderModeOptions = exports.isLegacyProviderPermissionConfig = exports.createProviderFromConfig = exports.MockProvider = exports.BaseDynamicProviderFactory = exports.CodexProvider = exports.CopilotProvider = exports.GeminiProvider = exports.ClaudeProvider = exports.MastraToolAdapter = exports.MastraAPIProvider = exports.BaseAIProvider = exports.ProviderNotAvailableError = exports.BuiltInProviders = exports.ProviderNamespace = exports.globTool = exports.findTool = exports.treeTool = exports.runShellCommandTool = exports.grepTool = exports.lsTool = exports.replaceTool = exports.writeFileTool = exports.readFileTool = exports.DocumentManager = exports.getConversationConfig = exports.DEFAULT_CONVERSATION_CONFIG = exports.APIProviderParseError = exports.substituteEnvVars = exports.validateAPIProviderConfig = exports.parseCrewXConfig = exports.parseMCPServers = exports.parseAPIProviderConfig = exports.getDefaultTimeoutConfig = exports.getTimeoutConfig = exports.DEFAULT_MAX_FILES = exports.DEFAULT_MAX_FILE_SIZE = exports.PREFIX_TOOL_NAME = exports.SERVER_NAME = void 0;
|
|
4
|
+
exports.MockRuntimeValidator = exports.SystemRuntimeValidator = exports.ClaudeSkillAdapter = exports.ProgressiveSkillLoader = exports.clearSkillCache = exports.loadSkillContent = exports.validateSkillMetadata = exports.parseSkillManifestFromFile = exports.parseSkillManifest = exports.parseCrewxConfigFromFile = exports.parseCrewxConfig = exports.SkillVersionMismatchError = exports.SkillDependencyError = exports.SkillNotFoundError = exports.SkillLoadError = exports.PropsValidationError = exports.LayoutRenderer = exports.LayoutLoader = exports.PropsValidator = exports.runExecutesParallel = exports.runQueriesParallel = exports.createDefaultParallelRunner = exports.ParallelRunnerTimeoutError = exports.ParallelRunner = exports.MockRemoteTransport = exports.FetchRemoteTransport = exports.RemoteAgentManager = exports.resolveProvider = exports.loadAgentConfigFromFile = exports.loadAgentConfigFromYaml = exports.createCrewxAgent = exports.createStructuredPayload = exports.parseStructuredPayload = exports.isStructuredPayload = exports.DefaultMessageFormatter = exports.BaseMessageFormatter = exports.loadAvailableAgents = exports.MentionParser = exports.isError = exports.getErrorStack = exports.getErrorMessage = void 0;
|
|
5
5
|
var constants_1 = require("./constants");
|
|
6
6
|
Object.defineProperty(exports, "SERVER_NAME", { enumerable: true, get: function () { return constants_1.SERVER_NAME; } });
|
|
7
7
|
Object.defineProperty(exports, "PREFIX_TOOL_NAME", { enumerable: true, get: function () { return constants_1.PREFIX_TOOL_NAME; } });
|
|
@@ -10,17 +10,38 @@ Object.defineProperty(exports, "DEFAULT_MAX_FILES", { enumerable: true, get: fun
|
|
|
10
10
|
var timeout_config_1 = require("./config/timeout.config");
|
|
11
11
|
Object.defineProperty(exports, "getTimeoutConfig", { enumerable: true, get: function () { return timeout_config_1.getTimeoutConfig; } });
|
|
12
12
|
Object.defineProperty(exports, "getDefaultTimeoutConfig", { enumerable: true, get: function () { return timeout_config_1.getDefaultTimeoutConfig; } });
|
|
13
|
+
var api_provider_parser_1 = require("./config/api-provider-parser");
|
|
14
|
+
Object.defineProperty(exports, "parseAPIProviderConfig", { enumerable: true, get: function () { return api_provider_parser_1.parseAPIProviderConfig; } });
|
|
15
|
+
Object.defineProperty(exports, "parseMCPServers", { enumerable: true, get: function () { return api_provider_parser_1.parseMCPServers; } });
|
|
16
|
+
Object.defineProperty(exports, "parseCrewXConfig", { enumerable: true, get: function () { return api_provider_parser_1.parseCrewXConfig; } });
|
|
17
|
+
Object.defineProperty(exports, "validateAPIProviderConfig", { enumerable: true, get: function () { return api_provider_parser_1.validateAPIProviderConfig; } });
|
|
18
|
+
Object.defineProperty(exports, "substituteEnvVars", { enumerable: true, get: function () { return api_provider_parser_1.substituteEnvVars; } });
|
|
19
|
+
Object.defineProperty(exports, "APIProviderParseError", { enumerable: true, get: function () { return api_provider_parser_1.APIProviderParseError; } });
|
|
13
20
|
var conversation_config_1 = require("./conversation/conversation-config");
|
|
14
21
|
Object.defineProperty(exports, "DEFAULT_CONVERSATION_CONFIG", { enumerable: true, get: function () { return conversation_config_1.DEFAULT_CONVERSATION_CONFIG; } });
|
|
15
22
|
Object.defineProperty(exports, "getConversationConfig", { enumerable: true, get: function () { return conversation_config_1.getConversationConfig; } });
|
|
16
23
|
var DocumentManager_1 = require("./knowledge/DocumentManager");
|
|
17
24
|
Object.defineProperty(exports, "DocumentManager", { enumerable: true, get: function () { return DocumentManager_1.DocumentManager; } });
|
|
25
|
+
var tools_1 = require("./tools");
|
|
26
|
+
Object.defineProperty(exports, "readFileTool", { enumerable: true, get: function () { return tools_1.readFileTool; } });
|
|
27
|
+
Object.defineProperty(exports, "writeFileTool", { enumerable: true, get: function () { return tools_1.writeFileTool; } });
|
|
28
|
+
Object.defineProperty(exports, "replaceTool", { enumerable: true, get: function () { return tools_1.replaceTool; } });
|
|
29
|
+
Object.defineProperty(exports, "lsTool", { enumerable: true, get: function () { return tools_1.lsTool; } });
|
|
30
|
+
Object.defineProperty(exports, "grepTool", { enumerable: true, get: function () { return tools_1.grepTool; } });
|
|
31
|
+
Object.defineProperty(exports, "runShellCommandTool", { enumerable: true, get: function () { return tools_1.runShellCommandTool; } });
|
|
32
|
+
Object.defineProperty(exports, "treeTool", { enumerable: true, get: function () { return tools_1.treeTool; } });
|
|
33
|
+
Object.defineProperty(exports, "findTool", { enumerable: true, get: function () { return tools_1.findTool; } });
|
|
34
|
+
Object.defineProperty(exports, "globTool", { enumerable: true, get: function () { return tools_1.globTool; } });
|
|
18
35
|
var ai_provider_interface_1 = require("./core/providers/ai-provider.interface");
|
|
19
36
|
Object.defineProperty(exports, "ProviderNamespace", { enumerable: true, get: function () { return ai_provider_interface_1.ProviderNamespace; } });
|
|
20
37
|
Object.defineProperty(exports, "BuiltInProviders", { enumerable: true, get: function () { return ai_provider_interface_1.BuiltInProviders; } });
|
|
21
38
|
Object.defineProperty(exports, "ProviderNotAvailableError", { enumerable: true, get: function () { return ai_provider_interface_1.ProviderNotAvailableError; } });
|
|
22
39
|
var base_ai_provider_1 = require("./core/providers/base-ai.provider");
|
|
23
40
|
Object.defineProperty(exports, "BaseAIProvider", { enumerable: true, get: function () { return base_ai_provider_1.BaseAIProvider; } });
|
|
41
|
+
var MastraAPIProvider_1 = require("./core/providers/MastraAPIProvider");
|
|
42
|
+
Object.defineProperty(exports, "MastraAPIProvider", { enumerable: true, get: function () { return MastraAPIProvider_1.MastraAPIProvider; } });
|
|
43
|
+
var MastraToolAdapter_1 = require("./adapters/MastraToolAdapter");
|
|
44
|
+
Object.defineProperty(exports, "MastraToolAdapter", { enumerable: true, get: function () { return MastraToolAdapter_1.MastraToolAdapter; } });
|
|
24
45
|
var providers_1 = require("./core/providers");
|
|
25
46
|
Object.defineProperty(exports, "ClaudeProvider", { enumerable: true, get: function () { return providers_1.ClaudeProvider; } });
|
|
26
47
|
Object.defineProperty(exports, "GeminiProvider", { enumerable: true, get: function () { return providers_1.GeminiProvider; } });
|
|
@@ -29,6 +50,20 @@ Object.defineProperty(exports, "CodexProvider", { enumerable: true, get: functio
|
|
|
29
50
|
Object.defineProperty(exports, "BaseDynamicProviderFactory", { enumerable: true, get: function () { return providers_1.BaseDynamicProviderFactory; } });
|
|
30
51
|
Object.defineProperty(exports, "MockProvider", { enumerable: true, get: function () { return providers_1.MockProvider; } });
|
|
31
52
|
Object.defineProperty(exports, "createProviderFromConfig", { enumerable: true, get: function () { return providers_1.createProviderFromConfig; } });
|
|
53
|
+
var api_provider_types_1 = require("./types/api-provider.types");
|
|
54
|
+
Object.defineProperty(exports, "isLegacyProviderPermissionConfig", { enumerable: true, get: function () { return api_provider_types_1.isLegacyProviderPermissionConfig; } });
|
|
55
|
+
Object.defineProperty(exports, "isProviderModeOptions", { enumerable: true, get: function () { return api_provider_types_1.isProviderModeOptions; } });
|
|
56
|
+
Object.defineProperty(exports, "isProviderOptions", { enumerable: true, get: function () { return api_provider_types_1.isProviderOptions; } });
|
|
57
|
+
Object.defineProperty(exports, "convertLegacyPermissionsToProviderOptions", { enumerable: true, get: function () { return api_provider_types_1.convertLegacyPermissionsToProviderOptions; } });
|
|
58
|
+
var api_provider_schema_1 = require("./schemas/api-provider.schema");
|
|
59
|
+
Object.defineProperty(exports, "APIProviderConfigSchema", { enumerable: true, get: function () { return api_provider_schema_1.APIProviderConfigSchema; } });
|
|
60
|
+
Object.defineProperty(exports, "MCPServerConfigSchema", { enumerable: true, get: function () { return api_provider_schema_1.MCPServerConfigSchema; } });
|
|
61
|
+
Object.defineProperty(exports, "APIProviderConfigJsonSchema", { enumerable: true, get: function () { return api_provider_schema_1.APIProviderConfigJsonSchema; } });
|
|
62
|
+
var api_provider_normalizer_1 = require("./utils/api-provider-normalizer");
|
|
63
|
+
Object.defineProperty(exports, "normalizeAPIProviderConfig", { enumerable: true, get: function () { return api_provider_normalizer_1.normalizeAPIProviderConfig; } });
|
|
64
|
+
Object.defineProperty(exports, "getModePermissions", { enumerable: true, get: function () { return api_provider_normalizer_1.getModePermissions; } });
|
|
65
|
+
Object.defineProperty(exports, "isAPIProviderConfig", { enumerable: true, get: function () { return api_provider_normalizer_1.isAPIProviderConfig; } });
|
|
66
|
+
Object.defineProperty(exports, "assertAPIProviderConfig", { enumerable: true, get: function () { return api_provider_normalizer_1.assertAPIProviderConfig; } });
|
|
32
67
|
var agent_types_1 = require("./types/agent.types");
|
|
33
68
|
Object.defineProperty(exports, "ExecutionMode", { enumerable: true, get: function () { return agent_types_1.ExecutionMode; } });
|
|
34
69
|
Object.defineProperty(exports, "SecurityLevel", { enumerable: true, get: function () { return agent_types_1.SecurityLevel; } });
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;AAMA,yCAKqB;AAJnB,wGAAA,WAAW,OAAA;AACX,6GAAA,gBAAgB,OAAA;AAChB,kHAAA,qBAAqB,OAAA;AACrB,8GAAA,iBAAiB,OAAA;AAKnB,0DAAoF;AAA3E,kHAAA,gBAAgB,OAAA;AAAE,yHAAA,uBAAuB,OAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|