@sowonai/crewx-sdk 0.5.0 → 0.6.0-rc.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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,9 @@
|
|
|
1
|
+
import type { FrameworkToolDefinition, ToolExecutionContext } from '../types/api-provider.types';
|
|
2
|
+
export declare class MastraToolAdapter {
|
|
3
|
+
static convertTools(crewxTools: any[], context: ToolExecutionContext): Record<string, any>;
|
|
4
|
+
static convertTool(crewxTool: FrameworkToolDefinition, context: ToolExecutionContext): any;
|
|
5
|
+
private static executeWithContext;
|
|
6
|
+
private static convertParameters;
|
|
7
|
+
static validateTool(tool: any): tool is FrameworkToolDefinition;
|
|
8
|
+
static createMinimalContext(agentId: string, provider: string, model: string): ToolExecutionContext;
|
|
9
|
+
}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MastraToolAdapter = void 0;
|
|
4
|
+
const zod_1 = require("zod");
|
|
5
|
+
class MastraToolAdapter {
|
|
6
|
+
static convertTools(crewxTools, context) {
|
|
7
|
+
const mastraTools = {};
|
|
8
|
+
for (const tool of crewxTools) {
|
|
9
|
+
const toolId = tool.id || tool.name;
|
|
10
|
+
mastraTools[toolId] = tool;
|
|
11
|
+
}
|
|
12
|
+
return mastraTools;
|
|
13
|
+
}
|
|
14
|
+
static convertTool(crewxTool, context) {
|
|
15
|
+
return {
|
|
16
|
+
description: crewxTool.description,
|
|
17
|
+
parameters: this.convertParameters(crewxTool.parameters),
|
|
18
|
+
execute: async (args) => {
|
|
19
|
+
return this.executeWithContext(crewxTool, args, context);
|
|
20
|
+
},
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
static async executeWithContext(crewxTool, args, context) {
|
|
24
|
+
try {
|
|
25
|
+
const result = await crewxTool.execute(args, context);
|
|
26
|
+
return result;
|
|
27
|
+
}
|
|
28
|
+
catch (error) {
|
|
29
|
+
const errorMessage = error.message || 'Unknown error during tool execution';
|
|
30
|
+
const toolName = crewxTool.name;
|
|
31
|
+
throw new Error(`Tool '${toolName}' execution failed: ${errorMessage}`);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
static convertParameters(params) {
|
|
35
|
+
if (params && typeof params.parse === 'function') {
|
|
36
|
+
return params;
|
|
37
|
+
}
|
|
38
|
+
return zod_1.z.object({});
|
|
39
|
+
}
|
|
40
|
+
static validateTool(tool) {
|
|
41
|
+
if (!tool)
|
|
42
|
+
return false;
|
|
43
|
+
if (typeof tool.name !== 'string' || tool.name.length === 0)
|
|
44
|
+
return false;
|
|
45
|
+
if (typeof tool.description !== 'string')
|
|
46
|
+
return false;
|
|
47
|
+
if (typeof tool.execute !== 'function')
|
|
48
|
+
return false;
|
|
49
|
+
return true;
|
|
50
|
+
}
|
|
51
|
+
static createMinimalContext(agentId, provider, model) {
|
|
52
|
+
return {
|
|
53
|
+
agent: {
|
|
54
|
+
id: agentId,
|
|
55
|
+
provider,
|
|
56
|
+
model,
|
|
57
|
+
},
|
|
58
|
+
env: {},
|
|
59
|
+
vars: {},
|
|
60
|
+
mode: 'query',
|
|
61
|
+
platform: 'api',
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
exports.MastraToolAdapter = MastraToolAdapter;
|
|
66
|
+
//# sourceMappingURL=MastraToolAdapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MastraToolAdapter.js","sourceRoot":"","sources":["../../src/adapters/MastraToolAdapter.ts"],"names":[],"mappings":";;;AAgBA,6BAAwB;AAuBxB,MAAa,iBAAiB;IAkB5B,MAAM,CAAC,YAAY,CACjB,UAAiB,EACjB,OAA6B;QAE7B,MAAM,WAAW,GAAwB,EAAE,CAAC;QAE5C,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;YAG9B,MAAM,MAAM,GAAG,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC;YACpC,WAAW,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;QAC7B,CAAC;QAED,OAAO,WAAW,CAAC;IACrB,CAAC;IA0BD,MAAM,CAAC,WAAW,CAChB,SAAkC,EAClC,OAA6B;QAE7B,OAAO;YACL,WAAW,EAAE,SAAS,CAAC,WAAW;YAClC,UAAU,EAAE,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,UAAU,CAAC;YACxD,OAAO,EAAE,KAAK,EAAE,IAAS,EAAE,EAAE;gBAC3B,OAAO,IAAI,CAAC,kBAAkB,CAAC,SAAS,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;YAC3D,CAAC;SACF,CAAC;IACJ,CAAC;IAyBO,MAAM,CAAC,KAAK,CAAC,kBAAkB,CACrC,SAAkC,EAClC,IAAS,EACT,OAA6B;QAE7B,IAAI,CAAC;YAEH,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YAGtD,OAAO,MAAM,CAAC;QAChB,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YAEpB,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,IAAI,qCAAqC,CAAC;YAC5E,MAAM,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC;YAGhC,MAAM,IAAI,KAAK,CACb,SAAS,QAAQ,uBAAuB,YAAY,EAAE,CACvD,CAAC;QACJ,CAAC;IACH,CAAC;IA0BO,MAAM,CAAC,iBAAiB,CAAC,MAAW;QAE1C,IAAI,MAAM,IAAI,OAAO,MAAM,CAAC,KAAK,KAAK,UAAU,EAAE,CAAC;YACjD,OAAO,MAAM,CAAC;QAChB,CAAC;QAKD,OAAO,OAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACtB,CAAC;IAqBD,MAAM,CAAC,YAAY,CAAC,IAAS;QAC3B,IAAI,CAAC,IAAI;YAAE,OAAO,KAAK,CAAC;QACxB,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,KAAK,CAAC;QAC1E,IAAI,OAAO,IAAI,CAAC,WAAW,KAAK,QAAQ;YAAE,OAAO,KAAK,CAAC;QACvD,IAAI,OAAO,IAAI,CAAC,OAAO,KAAK,UAAU;YAAE,OAAO,KAAK,CAAC;QAErD,OAAO,IAAI,CAAC;IACd,CAAC;IAsBD,MAAM,CAAC,oBAAoB,CACzB,OAAe,EACf,QAAgB,EAChB,KAAa;QAEb,OAAO;YACL,KAAK,EAAE;gBACL,EAAE,EAAE,OAAO;gBACX,QAAQ;gBACR,KAAK;aACN;YACD,GAAG,EAAE,EAAE;YACP,IAAI,EAAE,EAAE;YACR,IAAI,EAAE,OAAO;YACb,QAAQ,EAAE,KAAK;SAChB,CAAC;IACJ,CAAC;CACF;AA1ND,8CA0NC"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { APIProviderConfig, MCPServerConfig, ProviderOptions } from '../types/api-provider.types';
|
|
2
|
+
export declare class APIProviderParseError extends Error {
|
|
3
|
+
readonly cause?: Error | undefined;
|
|
4
|
+
constructor(message: string, cause?: Error | undefined);
|
|
5
|
+
}
|
|
6
|
+
export interface RawAgentConfig {
|
|
7
|
+
id?: string;
|
|
8
|
+
name?: string;
|
|
9
|
+
provider?: string;
|
|
10
|
+
url?: string;
|
|
11
|
+
apiKey?: string;
|
|
12
|
+
model?: string;
|
|
13
|
+
temperature?: number;
|
|
14
|
+
maxTokens?: number;
|
|
15
|
+
prompt?: string;
|
|
16
|
+
tools?: string[] | {
|
|
17
|
+
include?: string[];
|
|
18
|
+
exclude?: string[];
|
|
19
|
+
};
|
|
20
|
+
mcp?: string[] | {
|
|
21
|
+
include?: string[];
|
|
22
|
+
exclude?: string[];
|
|
23
|
+
};
|
|
24
|
+
inline?: {
|
|
25
|
+
provider?: string;
|
|
26
|
+
url?: string;
|
|
27
|
+
apiKey?: string;
|
|
28
|
+
model?: string;
|
|
29
|
+
temperature?: number;
|
|
30
|
+
maxTokens?: number;
|
|
31
|
+
prompt?: string;
|
|
32
|
+
tools?: string[];
|
|
33
|
+
mcp?: string[];
|
|
34
|
+
options?: ProviderOptions;
|
|
35
|
+
};
|
|
36
|
+
options?: ProviderOptions;
|
|
37
|
+
}
|
|
38
|
+
export interface RawYAMLConfig {
|
|
39
|
+
vars?: Record<string, any>;
|
|
40
|
+
mcp_servers?: Record<string, RawMCPServerConfig>;
|
|
41
|
+
agents?: RawAgentConfig[];
|
|
42
|
+
}
|
|
43
|
+
export interface RawMCPServerConfig {
|
|
44
|
+
command: string;
|
|
45
|
+
args: string[];
|
|
46
|
+
env?: Record<string, string>;
|
|
47
|
+
}
|
|
48
|
+
export declare function parseAPIProviderConfig(rawConfig: RawAgentConfig, globalEnv?: Record<string, string | undefined>): APIProviderConfig;
|
|
49
|
+
export declare function parseMCPServers(rawMCPServers: Record<string, RawMCPServerConfig>, globalEnv?: Record<string, string | undefined>): Record<string, MCPServerConfig>;
|
|
50
|
+
export declare function substituteEnvVars(str: string, env: Record<string, string | undefined>): string;
|
|
51
|
+
export declare function parseCrewXConfig(rawConfig: RawYAMLConfig, globalEnv?: Record<string, string | undefined>): {
|
|
52
|
+
vars: Record<string, any>;
|
|
53
|
+
mcpServers: Record<string, MCPServerConfig>;
|
|
54
|
+
agents: APIProviderConfig[];
|
|
55
|
+
};
|
|
56
|
+
export declare function validateAPIProviderConfig(config: APIProviderConfig): boolean;
|
|
@@ -0,0 +1,214 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.APIProviderParseError = void 0;
|
|
4
|
+
exports.parseAPIProviderConfig = parseAPIProviderConfig;
|
|
5
|
+
exports.parseMCPServers = parseMCPServers;
|
|
6
|
+
exports.substituteEnvVars = substituteEnvVars;
|
|
7
|
+
exports.parseCrewXConfig = parseCrewXConfig;
|
|
8
|
+
exports.validateAPIProviderConfig = validateAPIProviderConfig;
|
|
9
|
+
const api_provider_schema_1 = require("../schemas/api-provider.schema");
|
|
10
|
+
class APIProviderParseError extends Error {
|
|
11
|
+
constructor(message, cause) {
|
|
12
|
+
super(message);
|
|
13
|
+
this.cause = cause;
|
|
14
|
+
this.name = 'APIProviderParseError';
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
exports.APIProviderParseError = APIProviderParseError;
|
|
18
|
+
function parseAPIProviderConfig(rawConfig, globalEnv = process.env) {
|
|
19
|
+
const providerStr = rawConfig.inline?.provider || rawConfig.provider;
|
|
20
|
+
if (!providerStr) {
|
|
21
|
+
throw new APIProviderParseError('Provider is required for API provider configuration');
|
|
22
|
+
}
|
|
23
|
+
const substitutedProvider = substituteEnvVars(providerStr, globalEnv);
|
|
24
|
+
const validProviders = [
|
|
25
|
+
'api/openai',
|
|
26
|
+
'api/anthropic',
|
|
27
|
+
'api/google',
|
|
28
|
+
'api/bedrock',
|
|
29
|
+
'api/litellm',
|
|
30
|
+
'api/ollama',
|
|
31
|
+
'api/sowonai',
|
|
32
|
+
];
|
|
33
|
+
if (!validProviders.includes(substitutedProvider)) {
|
|
34
|
+
throw new APIProviderParseError(`Invalid API provider '${substitutedProvider}'. Valid providers: ${validProviders.join(', ')}`);
|
|
35
|
+
}
|
|
36
|
+
const model = rawConfig.inline?.model || rawConfig.model;
|
|
37
|
+
if (!model) {
|
|
38
|
+
throw new APIProviderParseError(`Model is required for API provider '${substitutedProvider}'`);
|
|
39
|
+
}
|
|
40
|
+
const config = {
|
|
41
|
+
provider: substitutedProvider,
|
|
42
|
+
model: substituteEnvVars(model, globalEnv),
|
|
43
|
+
};
|
|
44
|
+
if (rawConfig.id) {
|
|
45
|
+
config.id = rawConfig.id;
|
|
46
|
+
}
|
|
47
|
+
const url = rawConfig.inline?.url || rawConfig.url;
|
|
48
|
+
if (url) {
|
|
49
|
+
config.url = substituteEnvVars(url, globalEnv);
|
|
50
|
+
}
|
|
51
|
+
const apiKey = rawConfig.inline?.apiKey || rawConfig.apiKey;
|
|
52
|
+
if (apiKey) {
|
|
53
|
+
config.apiKey = substituteEnvVars(apiKey, globalEnv);
|
|
54
|
+
}
|
|
55
|
+
const temperature = rawConfig.inline?.temperature ?? rawConfig.temperature;
|
|
56
|
+
if (temperature !== undefined) {
|
|
57
|
+
if (typeof temperature !== 'number' || temperature < 0 || temperature > 2) {
|
|
58
|
+
throw new APIProviderParseError(`Temperature must be a number between 0 and 2, got: ${temperature}`);
|
|
59
|
+
}
|
|
60
|
+
config.temperature = temperature;
|
|
61
|
+
}
|
|
62
|
+
const maxTokens = rawConfig.inline?.maxTokens ?? rawConfig.maxTokens;
|
|
63
|
+
if (maxTokens !== undefined) {
|
|
64
|
+
if (typeof maxTokens !== 'number' || maxTokens < 1 || !Number.isInteger(maxTokens)) {
|
|
65
|
+
throw new APIProviderParseError(`maxTokens must be a positive integer, got: ${maxTokens}`);
|
|
66
|
+
}
|
|
67
|
+
config.maxTokens = maxTokens;
|
|
68
|
+
}
|
|
69
|
+
const tools = rawConfig.inline?.tools || rawConfig.tools;
|
|
70
|
+
if (tools) {
|
|
71
|
+
if (Array.isArray(tools)) {
|
|
72
|
+
config.tools = tools;
|
|
73
|
+
}
|
|
74
|
+
else {
|
|
75
|
+
throw new APIProviderParseError('API provider tools must be a simple array of strings (e.g., tools: [github, slack])');
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
const mcp = rawConfig.inline?.mcp || rawConfig.mcp;
|
|
79
|
+
if (mcp) {
|
|
80
|
+
if (Array.isArray(mcp)) {
|
|
81
|
+
config.mcp = mcp;
|
|
82
|
+
}
|
|
83
|
+
else {
|
|
84
|
+
throw new APIProviderParseError('API provider mcp must be a simple array of strings (e.g., mcp: [github, slack])');
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
const options = rawConfig.inline?.options || rawConfig.options;
|
|
88
|
+
if (options) {
|
|
89
|
+
const parsedOptions = parseProviderOptions(options);
|
|
90
|
+
if (parsedOptions) {
|
|
91
|
+
config.options = parsedOptions;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
return config;
|
|
95
|
+
}
|
|
96
|
+
function parseProviderOptions(rawOptions) {
|
|
97
|
+
const result = api_provider_schema_1.ProviderOptionsSchema.safeParse(rawOptions);
|
|
98
|
+
if (!result.success) {
|
|
99
|
+
throw new APIProviderParseError(`Invalid provider options configuration: ${result.error.message}`, result.error);
|
|
100
|
+
}
|
|
101
|
+
return result.data ?? undefined;
|
|
102
|
+
}
|
|
103
|
+
function parseMCPServers(rawMCPServers, globalEnv = process.env) {
|
|
104
|
+
const result = {};
|
|
105
|
+
for (const [name, rawConfig] of Object.entries(rawMCPServers)) {
|
|
106
|
+
if (!rawConfig.command) {
|
|
107
|
+
throw new APIProviderParseError(`MCP server '${name}' is missing 'command' field`);
|
|
108
|
+
}
|
|
109
|
+
if (!Array.isArray(rawConfig.args)) {
|
|
110
|
+
throw new APIProviderParseError(`MCP server '${name}' 'args' must be an array`);
|
|
111
|
+
}
|
|
112
|
+
const mcpConfig = {
|
|
113
|
+
command: substituteEnvVars(rawConfig.command, globalEnv),
|
|
114
|
+
args: rawConfig.args.map((arg) => substituteEnvVars(arg, globalEnv)),
|
|
115
|
+
};
|
|
116
|
+
if (rawConfig.env) {
|
|
117
|
+
mcpConfig.env = {};
|
|
118
|
+
for (const [key, value] of Object.entries(rawConfig.env)) {
|
|
119
|
+
mcpConfig.env[key] = substituteEnvVars(value, globalEnv);
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
result[name] = mcpConfig;
|
|
123
|
+
}
|
|
124
|
+
return result;
|
|
125
|
+
}
|
|
126
|
+
function substituteEnvVars(str, env) {
|
|
127
|
+
if (!str || typeof str !== 'string') {
|
|
128
|
+
return str;
|
|
129
|
+
}
|
|
130
|
+
return str.replace(/\{\{env\.([A-Z0-9_]+)\}\}/g, (match, varName) => {
|
|
131
|
+
const value = env[varName];
|
|
132
|
+
if (value === undefined) {
|
|
133
|
+
throw new APIProviderParseError(`Environment variable '${varName}' is not defined (referenced as ${match})`);
|
|
134
|
+
}
|
|
135
|
+
return value;
|
|
136
|
+
});
|
|
137
|
+
}
|
|
138
|
+
function parseCrewXConfig(rawConfig, globalEnv = process.env) {
|
|
139
|
+
const result = {
|
|
140
|
+
vars: rawConfig.vars || {},
|
|
141
|
+
mcpServers: {},
|
|
142
|
+
agents: [],
|
|
143
|
+
};
|
|
144
|
+
if (rawConfig.mcp_servers) {
|
|
145
|
+
result.mcpServers = parseMCPServers(rawConfig.mcp_servers, globalEnv);
|
|
146
|
+
}
|
|
147
|
+
if (rawConfig.agents && Array.isArray(rawConfig.agents)) {
|
|
148
|
+
for (const rawAgent of rawConfig.agents) {
|
|
149
|
+
const providerStr = rawAgent.provider || rawAgent.inline?.provider;
|
|
150
|
+
if (providerStr && providerStr.startsWith('api/')) {
|
|
151
|
+
try {
|
|
152
|
+
const agentConfig = parseAPIProviderConfig(rawAgent, globalEnv);
|
|
153
|
+
result.agents.push(agentConfig);
|
|
154
|
+
}
|
|
155
|
+
catch (error) {
|
|
156
|
+
throw new APIProviderParseError(`Failed to parse agent '${rawAgent.id || 'unknown'}': ${error instanceof Error ? error.message : 'Unknown error'}`, error instanceof Error ? error : undefined);
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
return result;
|
|
162
|
+
}
|
|
163
|
+
function validateAPIProviderConfig(config) {
|
|
164
|
+
if (!config || typeof config !== 'object') {
|
|
165
|
+
throw new APIProviderParseError('Configuration must be a valid object');
|
|
166
|
+
}
|
|
167
|
+
const validProviders = [
|
|
168
|
+
'api/openai',
|
|
169
|
+
'api/anthropic',
|
|
170
|
+
'api/google',
|
|
171
|
+
'api/bedrock',
|
|
172
|
+
'api/litellm',
|
|
173
|
+
'api/ollama',
|
|
174
|
+
'api/sowonai',
|
|
175
|
+
];
|
|
176
|
+
if (!validProviders.includes(config.provider)) {
|
|
177
|
+
throw new APIProviderParseError(`Invalid provider '${config.provider}'. Valid providers: ${validProviders.join(', ')}`);
|
|
178
|
+
}
|
|
179
|
+
if (!config.model || typeof config.model !== 'string') {
|
|
180
|
+
throw new APIProviderParseError('Model is required and must be a non-empty string');
|
|
181
|
+
}
|
|
182
|
+
if (config.temperature !== undefined) {
|
|
183
|
+
if (typeof config.temperature !== 'number' || config.temperature < 0 || config.temperature > 2) {
|
|
184
|
+
throw new APIProviderParseError(`Temperature must be a number between 0 and 2, got: ${config.temperature}`);
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
if (config.maxTokens !== undefined) {
|
|
188
|
+
if (typeof config.maxTokens !== 'number' || config.maxTokens < 1 || !Number.isInteger(config.maxTokens)) {
|
|
189
|
+
throw new APIProviderParseError(`maxTokens must be a positive integer, got: ${config.maxTokens}`);
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
if (config.tools !== undefined) {
|
|
193
|
+
if (!Array.isArray(config.tools)) {
|
|
194
|
+
throw new APIProviderParseError('tools must be an array of strings');
|
|
195
|
+
}
|
|
196
|
+
for (const tool of config.tools) {
|
|
197
|
+
if (typeof tool !== 'string') {
|
|
198
|
+
throw new APIProviderParseError('All tool names must be strings');
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
if (config.mcp !== undefined) {
|
|
203
|
+
if (!Array.isArray(config.mcp)) {
|
|
204
|
+
throw new APIProviderParseError('mcp must be an array of strings');
|
|
205
|
+
}
|
|
206
|
+
for (const mcpServer of config.mcp) {
|
|
207
|
+
if (typeof mcpServer !== 'string') {
|
|
208
|
+
throw new APIProviderParseError('All MCP server names must be strings');
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
return true;
|
|
213
|
+
}
|
|
214
|
+
//# sourceMappingURL=api-provider-parser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api-provider-parser.js","sourceRoot":"","sources":["../../src/config/api-provider-parser.ts"],"names":[],"mappings":";;;AA8FA,wDAmHC;AAoCD,0CAgCC;AAoBD,8CAkBC;AAgBD,4CAuCC;AASD,8DAsEC;AApbD,wEAAuE;AAKvE,MAAa,qBAAsB,SAAQ,KAAK;IAC9C,YAAY,OAAe,EAAkB,KAAa;QACxD,KAAK,CAAC,OAAO,CAAC,CAAC;QAD4B,UAAK,GAAL,KAAK,CAAQ;QAExD,IAAI,CAAC,IAAI,GAAG,uBAAuB,CAAC;IACtC,CAAC;CACF;AALD,sDAKC;AAuED,SAAgB,sBAAsB,CACpC,SAAyB,EACzB,YAAgD,OAAO,CAAC,GAAyC;IAGjG,MAAM,WAAW,GAAG,SAAS,CAAC,MAAM,EAAE,QAAQ,IAAI,SAAS,CAAC,QAAQ,CAAC;IACrE,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,MAAM,IAAI,qBAAqB,CAAC,qDAAqD,CAAC,CAAC;IACzF,CAAC;IAGD,MAAM,mBAAmB,GAAG,iBAAiB,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;IAGtE,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,mBAAsC,CAAC,EAAE,CAAC;QACrE,MAAM,IAAI,qBAAqB,CAC7B,yBAAyB,mBAAmB,uBAAuB,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAC/F,CAAC;IACJ,CAAC;IAGD,MAAM,KAAK,GAAG,SAAS,CAAC,MAAM,EAAE,KAAK,IAAI,SAAS,CAAC,KAAK,CAAC;IACzD,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,qBAAqB,CAAC,uCAAuC,mBAAmB,GAAG,CAAC,CAAC;IACjG,CAAC;IAGD,MAAM,MAAM,GAAsB;QAChC,QAAQ,EAAE,mBAAsC;QAChD,KAAK,EAAE,iBAAiB,CAAC,KAAK,EAAE,SAAS,CAAC;KAC3C,CAAC;IAGF,IAAI,SAAS,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,CAAC,EAAE,GAAG,SAAS,CAAC,EAAE,CAAC;IAC3B,CAAC;IAGD,MAAM,GAAG,GAAG,SAAS,CAAC,MAAM,EAAE,GAAG,IAAI,SAAS,CAAC,GAAG,CAAC;IACnD,IAAI,GAAG,EAAE,CAAC;QACR,MAAM,CAAC,GAAG,GAAG,iBAAiB,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;IACjD,CAAC;IAGD,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,EAAE,MAAM,IAAI,SAAS,CAAC,MAAM,CAAC;IAC5D,IAAI,MAAM,EAAE,CAAC;QACX,MAAM,CAAC,MAAM,GAAG,iBAAiB,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACvD,CAAC;IAGD,MAAM,WAAW,GAAG,SAAS,CAAC,MAAM,EAAE,WAAW,IAAI,SAAS,CAAC,WAAW,CAAC;IAC3E,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;QAC9B,IAAI,OAAO,WAAW,KAAK,QAAQ,IAAI,WAAW,GAAG,CAAC,IAAI,WAAW,GAAG,CAAC,EAAE,CAAC;YAC1E,MAAM,IAAI,qBAAqB,CAC7B,sDAAsD,WAAW,EAAE,CACpE,CAAC;QACJ,CAAC;QACD,MAAM,CAAC,WAAW,GAAG,WAAW,CAAC;IACnC,CAAC;IAGD,MAAM,SAAS,GAAG,SAAS,CAAC,MAAM,EAAE,SAAS,IAAI,SAAS,CAAC,SAAS,CAAC;IACrE,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;QAC5B,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,SAAS,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,CAAC;YACnF,MAAM,IAAI,qBAAqB,CAC7B,8CAA8C,SAAS,EAAE,CAC1D,CAAC;QACJ,CAAC;QACD,MAAM,CAAC,SAAS,GAAG,SAAS,CAAC;IAC/B,CAAC;IAGD,MAAM,KAAK,GAAG,SAAS,CAAC,MAAM,EAAE,KAAK,IAAI,SAAS,CAAC,KAAK,CAAC;IACzD,IAAI,KAAK,EAAE,CAAC;QACV,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACzB,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;QACvB,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,qBAAqB,CAC7B,qFAAqF,CACtF,CAAC;QACJ,CAAC;IACH,CAAC;IAGD,MAAM,GAAG,GAAG,SAAS,CAAC,MAAM,EAAE,GAAG,IAAI,SAAS,CAAC,GAAG,CAAC;IACnD,IAAI,GAAG,EAAE,CAAC;QACR,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;YACvB,MAAM,CAAC,GAAG,GAAG,GAAG,CAAC;QACnB,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,qBAAqB,CAC7B,iFAAiF,CAClF,CAAC;QACJ,CAAC;IACH,CAAC;IAGD,MAAM,OAAO,GAAG,SAAS,CAAC,MAAM,EAAE,OAAO,IAAI,SAAS,CAAC,OAAO,CAAC;IAC/D,IAAI,OAAO,EAAE,CAAC;QACZ,MAAM,aAAa,GAAG,oBAAoB,CAAC,OAAO,CAAC,CAAC;QACpD,IAAI,aAAa,EAAE,CAAC;YAClB,MAAM,CAAC,OAAO,GAAG,aAAa,CAAC;QACjC,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,oBAAoB,CAAC,UAA2B;IACvD,MAAM,MAAM,GAAG,2CAAqB,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;IAC3D,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,MAAM,IAAI,qBAAqB,CAC7B,2CAA2C,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,EACjE,MAAM,CAAC,KAAK,CACb,CAAC;IACJ,CAAC;IAED,OAAO,MAAM,CAAC,IAAI,IAAI,SAAS,CAAC;AAClC,CAAC;AAwBD,SAAgB,eAAe,CAC7B,aAAiD,EACjD,YAAgD,OAAO,CAAC,GAAyC;IAEjG,MAAM,MAAM,GAAoC,EAAE,CAAC;IAEnD,KAAK,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,CAAC;QAC9D,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;YACvB,MAAM,IAAI,qBAAqB,CAAC,eAAe,IAAI,8BAA8B,CAAC,CAAC;QACrF,CAAC;QAED,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;YACnC,MAAM,IAAI,qBAAqB,CAAC,eAAe,IAAI,2BAA2B,CAAC,CAAC;QAClF,CAAC;QAED,MAAM,SAAS,GAAoB;YACjC,OAAO,EAAE,iBAAiB,CAAC,SAAS,CAAC,OAAO,EAAE,SAAS,CAAC;YACxD,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,iBAAiB,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;SACrE,CAAC;QAGF,IAAI,SAAS,CAAC,GAAG,EAAE,CAAC;YAClB,SAAS,CAAC,GAAG,GAAG,EAAE,CAAC;YACnB,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC;gBACzD,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,iBAAiB,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;YAC3D,CAAC;QACH,CAAC;QAED,MAAM,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC;IAC3B,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAoBD,SAAgB,iBAAiB,CAC/B,GAAW,EACX,GAAuC;IAEvC,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QACpC,OAAO,GAAG,CAAC;IACb,CAAC;IAGD,OAAO,GAAG,CAAC,OAAO,CAAC,4BAA4B,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;QAClE,MAAM,KAAK,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC;QAC3B,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,MAAM,IAAI,qBAAqB,CAC7B,yBAAyB,OAAO,mCAAmC,KAAK,GAAG,CAC5E,CAAC;QACJ,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC,CAAC,CAAC;AACL,CAAC;AAgBD,SAAgB,gBAAgB,CAC9B,SAAwB,EACxB,YAAgD,OAAO,CAAC,GAAyC;IAMjG,MAAM,MAAM,GAAG;QACb,IAAI,EAAE,SAAS,CAAC,IAAI,IAAI,EAAE;QAC1B,UAAU,EAAE,EAAqC;QACjD,MAAM,EAAE,EAAyB;KAClC,CAAC;IAGF,IAAI,SAAS,CAAC,WAAW,EAAE,CAAC;QAC1B,MAAM,CAAC,UAAU,GAAG,eAAe,CAAC,SAAS,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;IACxE,CAAC;IAGD,IAAI,SAAS,CAAC,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;QACxD,KAAK,MAAM,QAAQ,IAAI,SAAS,CAAC,MAAM,EAAE,CAAC;YAExC,MAAM,WAAW,GAAG,QAAQ,CAAC,QAAQ,IAAI,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC;YACnE,IAAI,WAAW,IAAI,WAAW,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;gBAClD,IAAI,CAAC;oBACH,MAAM,WAAW,GAAG,sBAAsB,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;oBAChE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;gBAClC,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,MAAM,IAAI,qBAAqB,CAC7B,0BAA0B,QAAQ,CAAC,EAAE,IAAI,SAAS,MAAM,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE,EAClH,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAC3C,CAAC;gBACJ,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AASD,SAAgB,yBAAyB,CAAC,MAAyB;IACjE,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC1C,MAAM,IAAI,qBAAqB,CAAC,sCAAsC,CAAC,CAAC;IAC1E,CAAC;IAGD,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,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC9C,MAAM,IAAI,qBAAqB,CAC7B,qBAAqB,MAAM,CAAC,QAAQ,uBAAuB,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACvF,CAAC;IACJ,CAAC;IAGD,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,OAAO,MAAM,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;QACtD,MAAM,IAAI,qBAAqB,CAAC,kDAAkD,CAAC,CAAC;IACtF,CAAC;IAGD,IAAI,MAAM,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;QACrC,IAAI,OAAO,MAAM,CAAC,WAAW,KAAK,QAAQ,IAAI,MAAM,CAAC,WAAW,GAAG,CAAC,IAAI,MAAM,CAAC,WAAW,GAAG,CAAC,EAAE,CAAC;YAC/F,MAAM,IAAI,qBAAqB,CAC7B,sDAAsD,MAAM,CAAC,WAAW,EAAE,CAC3E,CAAC;QACJ,CAAC;IACH,CAAC;IAGD,IAAI,MAAM,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;QACnC,IAAI,OAAO,MAAM,CAAC,SAAS,KAAK,QAAQ,IAAI,MAAM,CAAC,SAAS,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC;YACxG,MAAM,IAAI,qBAAqB,CAC7B,8CAA8C,MAAM,CAAC,SAAS,EAAE,CACjE,CAAC;QACJ,CAAC;IACH,CAAC;IAGD,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;QAC/B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;YACjC,MAAM,IAAI,qBAAqB,CAAC,mCAAmC,CAAC,CAAC;QACvE,CAAC;QACD,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;YAChC,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAC7B,MAAM,IAAI,qBAAqB,CAAC,gCAAgC,CAAC,CAAC;YACpE,CAAC;QACH,CAAC;IACH,CAAC;IAGD,IAAI,MAAM,CAAC,GAAG,KAAK,SAAS,EAAE,CAAC;QAC7B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;YAC/B,MAAM,IAAI,qBAAqB,CAAC,iCAAiC,CAAC,CAAC;QACrE,CAAC;QACD,KAAK,MAAM,SAAS,IAAI,MAAM,CAAC,GAAG,EAAE,CAAC;YACnC,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE,CAAC;gBAClC,MAAM,IAAI,qBAAqB,CAAC,sCAAsC,CAAC,CAAC;YAC1E,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC"}
|
package/dist/config/index.d.ts
CHANGED
package/dist/config/index.js
CHANGED
|
@@ -15,4 +15,6 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
17
|
__exportStar(require("./timeout.config"), exports);
|
|
18
|
+
__exportStar(require("./api-provider-parser"), exports);
|
|
19
|
+
__exportStar(require("./yaml-loader"), exports);
|
|
18
20
|
//# sourceMappingURL=index.js.map
|
package/dist/config/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,mDAAiC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,mDAAiC;AACjC,wDAAsC;AACtC,gDAA8B"}
|
|
@@ -2,12 +2,13 @@ import { AgentRuntime } from './agent-runtime';
|
|
|
2
2
|
import { EventBus, EventListener } from './event-bus';
|
|
3
3
|
import type { AIProvider } from '../providers/ai-provider.interface';
|
|
4
4
|
import type { ProviderConfig, ProviderInput, ProviderResolutionResult } from '../../types/provider.types';
|
|
5
|
+
import type { APIProviderConfig } from '../../types/api-provider.types';
|
|
5
6
|
export interface KnowledgeBaseConfig {
|
|
6
7
|
path?: string;
|
|
7
8
|
sources?: string[];
|
|
8
9
|
}
|
|
9
10
|
export interface CrewxAgentConfig {
|
|
10
|
-
provider?: ProviderConfig | AIProvider;
|
|
11
|
+
provider?: ProviderConfig | APIProviderConfig | AIProvider;
|
|
11
12
|
knowledgeBase?: KnowledgeBaseConfig;
|
|
12
13
|
enableCallStack?: boolean;
|
|
13
14
|
defaultAgentId?: string;
|
|
@@ -23,7 +24,8 @@ export interface CrewxAgentResult {
|
|
|
23
24
|
onEvent: <T = any>(eventName: string, listener: EventListener<T>) => () => void;
|
|
24
25
|
eventBus: EventBus;
|
|
25
26
|
}
|
|
26
|
-
|
|
27
|
+
type ExtendedProviderInput = ProviderInput | APIProviderConfig;
|
|
28
|
+
declare function resolveProvider(config?: ExtendedProviderInput): Promise<ProviderResolutionResult>;
|
|
27
29
|
export declare function createCrewxAgent(config?: CrewxAgentConfig): Promise<CrewxAgentResult>;
|
|
28
30
|
export { loadAgentConfigFromYaml, loadAgentConfigFromFile } from '../../config/yaml-loader';
|
|
29
31
|
export { resolveProvider };
|
|
@@ -7,9 +7,13 @@ const agent_runtime_1 = require("./agent-runtime");
|
|
|
7
7
|
const event_bus_1 = require("./event-bus");
|
|
8
8
|
const mock_provider_1 = require("../providers/mock.provider");
|
|
9
9
|
const provider_factory_1 = require("../providers/provider-factory");
|
|
10
|
+
const MastraAPIProvider_1 = require("../providers/MastraAPIProvider");
|
|
10
11
|
function isAIProvider(candidate) {
|
|
11
12
|
return typeof candidate === 'object' && candidate !== null && 'query' in candidate;
|
|
12
13
|
}
|
|
14
|
+
function isAPIProviderConfig(candidate) {
|
|
15
|
+
return typeof candidate === 'object' && candidate !== null && 'provider' in candidate && typeof candidate.provider === 'string' && candidate.provider.startsWith('api/');
|
|
16
|
+
}
|
|
13
17
|
async function resolveProvider(config) {
|
|
14
18
|
if (!config) {
|
|
15
19
|
return { provider: new mock_provider_1.MockProvider() };
|
|
@@ -17,6 +21,13 @@ async function resolveProvider(config) {
|
|
|
17
21
|
if (isAIProvider(config)) {
|
|
18
22
|
return { provider: config };
|
|
19
23
|
}
|
|
24
|
+
if (isAPIProviderConfig(config)) {
|
|
25
|
+
const provider = new MastraAPIProvider_1.MastraAPIProvider(config);
|
|
26
|
+
return {
|
|
27
|
+
provider,
|
|
28
|
+
defaultModel: config.model,
|
|
29
|
+
};
|
|
30
|
+
}
|
|
20
31
|
const provider = await (0, provider_factory_1.createProviderFromConfig)(config);
|
|
21
32
|
return {
|
|
22
33
|
provider,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-factory.js","sourceRoot":"","sources":["../../../src/core/agent/agent-factory.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"agent-factory.js","sourceRoot":"","sources":["../../../src/core/agent/agent-factory.ts"],"names":[],"mappings":";;;AA4IA,4CAkCC;AASQ,0CAAe;AAlLxB,mDAAoE;AACpE,2CAAsD;AACtD,8DAA0D;AAC1D,oEAAyE;AACzE,sEAAmE;AA6DnE,SAAS,YAAY,CAAC,SAAgC;IACpD,OAAO,OAAO,SAAS,KAAK,QAAQ,IAAI,SAAS,KAAK,IAAI,IAAI,OAAO,IAAI,SAAS,CAAC;AACrF,CAAC;AAED,SAAS,mBAAmB,CAAC,SAAgC;IAC3D,OAAO,OAAO,SAAS,KAAK,QAAQ,IAAI,SAAS,KAAK,IAAI,IAAI,UAAU,IAAI,SAAS,IAAI,OAAO,SAAS,CAAC,QAAQ,KAAK,QAAQ,IAAI,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;AAC3K,CAAC;AAED,KAAK,UAAU,eAAe,CAAC,MAA8B;IAC3D,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,EAAE,QAAQ,EAAE,IAAI,4BAAY,EAAE,EAAE,CAAC;IAC1C,CAAC;IAED,IAAI,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC;QACzB,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;IAC9B,CAAC;IAGD,IAAI,mBAAmB,CAAC,MAAM,CAAC,EAAE,CAAC;QAChC,MAAM,QAAQ,GAAG,IAAI,qCAAiB,CAAC,MAAM,CAAC,CAAC;QAC/C,OAAO;YACL,QAAQ;YACR,YAAY,EAAE,MAAM,CAAC,KAAK;SAC3B,CAAC;IACJ,CAAC;IAGD,MAAM,QAAQ,GAAG,MAAM,IAAA,2CAAwB,EAAC,MAAwB,CAAC,CAAC;IAC1E,OAAO;QACL,QAAQ;QACR,YAAY,EAAG,MAAyB,CAAC,KAAK;KAC/C,CAAC;AACJ,CAAC;AAsCM,KAAK,UAAU,gBAAgB,CACpC,SAA2B,EAAE;IAG7B,MAAM,QAAQ,GAAG,IAAI,oBAAQ,EAAE,CAAC;IAEhC,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,GAAG,MAAM,eAAe,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAG1E,MAAM,cAAc,GAAwB;QAC1C,QAAQ;QACR,eAAe,EAAE,MAAM,CAAC,eAAe,IAAI,KAAK;QAChD,cAAc,EAAE,MAAM,CAAC,cAAc,IAAI,OAAO;QAChD,WAAW,EAAE,MAAM,CAAC,WAAW;QAC/B,QAAQ;QACR,YAAY;KACb,CAAC;IAGF,MAAM,OAAO,GAAG,IAAI,4BAAY,CAAC,cAAc,CAAC,CAAC;IAGjD,MAAM,KAAK,GAAe;QACxB,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC;QAClC,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC;QACtC,YAAY,EAAE,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC;KACjD,CAAC;IAGF,OAAO;QACL,KAAK;QACL,OAAO,EAAE,CAAC,SAAS,EAAE,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC;QAClE,QAAQ;KACT,CAAC;AACJ,CAAC;AAQD,wDAA4F;AAAnF,sHAAA,uBAAuB,OAAA;AAAE,sHAAA,uBAAuB,OAAA"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { AIProvider, AIQueryOptions, AIResponse } from './ai-provider.interface';
|
|
2
|
+
import type { APIProviderConfig, ToolExecutionContext, ProviderExecutionMode } from '../../types/api-provider.types';
|
|
3
|
+
export declare class MastraAPIProvider implements AIProvider {
|
|
4
|
+
readonly name: string;
|
|
5
|
+
private config;
|
|
6
|
+
private tools;
|
|
7
|
+
private toolContext?;
|
|
8
|
+
private filteredToolSets;
|
|
9
|
+
private readonly permissionsByMode;
|
|
10
|
+
private readonly defaultMode;
|
|
11
|
+
constructor(config: APIProviderConfig, mode?: ProviderExecutionMode);
|
|
12
|
+
private createModel;
|
|
13
|
+
setTools(tools: any[], context: ToolExecutionContext): void;
|
|
14
|
+
private applyDefaultModeToContext;
|
|
15
|
+
private buildModeAwareToolSets;
|
|
16
|
+
private getToolIdentifier;
|
|
17
|
+
private createMastraToolsForMode;
|
|
18
|
+
query(prompt: string, options?: AIQueryOptions): Promise<AIResponse>;
|
|
19
|
+
execute(prompt: string, options?: AIQueryOptions): Promise<AIResponse>;
|
|
20
|
+
private runWithMode;
|
|
21
|
+
private convertResponse;
|
|
22
|
+
isAvailable(): Promise<boolean>;
|
|
23
|
+
getToolPath(): Promise<string | null>;
|
|
24
|
+
}
|