@toolplex/ai-engine 0.1.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/LICENSE +98 -0
- package/README.md +292 -0
- package/dist/adapters/index.d.ts +9 -0
- package/dist/adapters/index.d.ts.map +1 -0
- package/dist/adapters/index.js +9 -0
- package/dist/adapters/index.js.map +1 -0
- package/dist/adapters/types.d.ts +137 -0
- package/dist/adapters/types.d.ts.map +1 -0
- package/dist/adapters/types.js +14 -0
- package/dist/adapters/types.js.map +1 -0
- package/dist/core/ChatEngine.d.ts +47 -0
- package/dist/core/ChatEngine.d.ts.map +1 -0
- package/dist/core/ChatEngine.js +355 -0
- package/dist/core/ChatEngine.js.map +1 -0
- package/dist/core/ToolBuilder.d.ts +25 -0
- package/dist/core/ToolBuilder.d.ts.map +1 -0
- package/dist/core/ToolBuilder.js +215 -0
- package/dist/core/ToolBuilder.js.map +1 -0
- package/dist/core/index.d.ts +6 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +6 -0
- package/dist/core/index.js.map +1 -0
- package/dist/index.d.ts +41 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +49 -0
- package/dist/index.js.map +1 -0
- package/dist/mcp/DefaultStdioTransportFactory.d.ts +27 -0
- package/dist/mcp/DefaultStdioTransportFactory.d.ts.map +1 -0
- package/dist/mcp/DefaultStdioTransportFactory.js +60 -0
- package/dist/mcp/DefaultStdioTransportFactory.js.map +1 -0
- package/dist/mcp/MCPClient.d.ts +60 -0
- package/dist/mcp/MCPClient.d.ts.map +1 -0
- package/dist/mcp/MCPClient.js +164 -0
- package/dist/mcp/MCPClient.js.map +1 -0
- package/dist/mcp/index.d.ts +10 -0
- package/dist/mcp/index.d.ts.map +1 -0
- package/dist/mcp/index.js +11 -0
- package/dist/mcp/index.js.map +1 -0
- package/dist/mcp/paths.d.ts +16 -0
- package/dist/mcp/paths.d.ts.map +1 -0
- package/dist/mcp/paths.js +58 -0
- package/dist/mcp/paths.js.map +1 -0
- package/dist/mcp/types.d.ts +85 -0
- package/dist/mcp/types.d.ts.map +1 -0
- package/dist/mcp/types.js +7 -0
- package/dist/mcp/types.js.map +1 -0
- package/dist/providers/index.d.ts +40 -0
- package/dist/providers/index.d.ts.map +1 -0
- package/dist/providers/index.js +148 -0
- package/dist/providers/index.js.map +1 -0
- package/dist/providers/toolplex.d.ts +43 -0
- package/dist/providers/toolplex.d.ts.map +1 -0
- package/dist/providers/toolplex.js +168 -0
- package/dist/providers/toolplex.js.map +1 -0
- package/dist/types/index.d.ts +218 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +8 -0
- package/dist/types/index.js.map +1 -0
- package/dist/utils/index.d.ts +8 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +8 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/models.d.ts +30 -0
- package/dist/utils/models.d.ts.map +1 -0
- package/dist/utils/models.js +52 -0
- package/dist/utils/models.js.map +1 -0
- package/dist/utils/schema.d.ts +74 -0
- package/dist/utils/schema.d.ts.map +1 -0
- package/dist/utils/schema.js +253 -0
- package/dist/utils/schema.js.map +1 -0
- package/package.json +70 -0
- package/src/adapters/index.ts +9 -0
- package/src/adapters/types.ts +241 -0
- package/src/core/ChatEngine.ts +464 -0
- package/src/core/ToolBuilder.ts +323 -0
- package/src/core/index.ts +6 -0
- package/src/index.ts +86 -0
- package/src/mcp/DefaultStdioTransportFactory.ts +71 -0
- package/src/mcp/MCPClient.ts +209 -0
- package/src/mcp/index.ts +24 -0
- package/src/mcp/paths.ts +91 -0
- package/src/mcp/types.ts +93 -0
- package/src/providers/index.ts +177 -0
- package/src/providers/toolplex.ts +217 -0
- package/src/types/index.ts +290 -0
- package/src/utils/index.ts +8 -0
- package/src/utils/models.ts +59 -0
- package/src/utils/schema.ts +307 -0
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @toolplex/ai-engine - Provider Factory
|
|
3
|
+
*
|
|
4
|
+
* Central provider management for the AI engine.
|
|
5
|
+
* Handles instantiation of both built-in AI SDK providers and custom providers.
|
|
6
|
+
*/
|
|
7
|
+
import type { AIProvider, ProviderCredentials } from "../types/index.js";
|
|
8
|
+
import type { LoggerAdapter } from "../adapters/types.js";
|
|
9
|
+
export { toolplexUsageMap } from "./toolplex.js";
|
|
10
|
+
export interface GetProviderOptions {
|
|
11
|
+
logger?: LoggerAdapter;
|
|
12
|
+
clientVersion?: string;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Get provider instance by ID
|
|
16
|
+
*
|
|
17
|
+
* @param providerId - Provider identifier (e.g., 'toolplex', 'openai', 'anthropic')
|
|
18
|
+
* @param credentials - API keys and credentials
|
|
19
|
+
* @param options - Optional logger and client version
|
|
20
|
+
* @returns Provider instance
|
|
21
|
+
*/
|
|
22
|
+
export declare function getProvider(providerId: string, credentials: ProviderCredentials, options?: GetProviderOptions): AIProvider;
|
|
23
|
+
/**
|
|
24
|
+
* Get model instance for streaming
|
|
25
|
+
*
|
|
26
|
+
* @param modelId - Full model identifier (e.g., 'anthropic/claude-sonnet-4')
|
|
27
|
+
* @param credentials - API keys and credentials
|
|
28
|
+
* @param options - Optional logger and client version
|
|
29
|
+
* @returns Language model instance ready for streamText()
|
|
30
|
+
*/
|
|
31
|
+
export declare function getModel(modelId: string, credentials: ProviderCredentials, options?: GetProviderOptions): any;
|
|
32
|
+
/**
|
|
33
|
+
* Check if a provider is available (has required credentials)
|
|
34
|
+
*
|
|
35
|
+
* @param providerId - Provider identifier
|
|
36
|
+
* @param credentials - API keys and credentials
|
|
37
|
+
* @returns True if provider can be instantiated
|
|
38
|
+
*/
|
|
39
|
+
export declare function isProviderAvailable(providerId: string, credentials: ProviderCredentials): boolean;
|
|
40
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/providers/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAOH,OAAO,KAAK,EAAE,UAAU,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACzE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAE1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAEjD,MAAM,WAAW,kBAAkB;IACjC,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;;;;;;GAOG;AACH,wBAAgB,WAAW,CACzB,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,mBAAmB,EAChC,OAAO,CAAC,EAAE,kBAAkB,GAC3B,UAAU,CAqGZ;AAED;;;;;;;GAOG;AACH,wBAAgB,QAAQ,CACtB,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,mBAAmB,EAChC,OAAO,CAAC,EAAE,kBAAkB,OAS7B;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CACjC,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,mBAAmB,GAC/B,OAAO,CAOT"}
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @toolplex/ai-engine - Provider Factory
|
|
3
|
+
*
|
|
4
|
+
* Central provider management for the AI engine.
|
|
5
|
+
* Handles instantiation of both built-in AI SDK providers and custom providers.
|
|
6
|
+
*/
|
|
7
|
+
import { createOpenAI } from "@ai-sdk/openai";
|
|
8
|
+
import { createAnthropic } from "@ai-sdk/anthropic";
|
|
9
|
+
import { createGoogleGenerativeAI } from "@ai-sdk/google";
|
|
10
|
+
import { createOpenRouter } from "@openrouter/ai-sdk-provider";
|
|
11
|
+
import { createToolPlex } from "./toolplex.js";
|
|
12
|
+
export { toolplexUsageMap } from "./toolplex.js";
|
|
13
|
+
/**
|
|
14
|
+
* Get provider instance by ID
|
|
15
|
+
*
|
|
16
|
+
* @param providerId - Provider identifier (e.g., 'toolplex', 'openai', 'anthropic')
|
|
17
|
+
* @param credentials - API keys and credentials
|
|
18
|
+
* @param options - Optional logger and client version
|
|
19
|
+
* @returns Provider instance
|
|
20
|
+
*/
|
|
21
|
+
export function getProvider(providerId, credentials, options) {
|
|
22
|
+
switch (providerId.toLowerCase()) {
|
|
23
|
+
case "toolplex": {
|
|
24
|
+
if (!credentials.toolplexApiKey) {
|
|
25
|
+
throw new Error("ToolPlex API key is required");
|
|
26
|
+
}
|
|
27
|
+
const toolplexProvider = createToolPlex({
|
|
28
|
+
apiKey: credentials.toolplexApiKey,
|
|
29
|
+
baseURL: "https://api.toolplex.ai",
|
|
30
|
+
clientVersion: options?.clientVersion,
|
|
31
|
+
logger: options?.logger,
|
|
32
|
+
});
|
|
33
|
+
return {
|
|
34
|
+
id: "toolplex",
|
|
35
|
+
chat: (modelId) => toolplexProvider(modelId),
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
case "openai": {
|
|
39
|
+
if (!credentials.openaiKey) {
|
|
40
|
+
throw new Error("OpenAI API key is required");
|
|
41
|
+
}
|
|
42
|
+
const openaiProvider = createOpenAI({ apiKey: credentials.openaiKey });
|
|
43
|
+
return {
|
|
44
|
+
id: "openai",
|
|
45
|
+
chat: (modelId) => openaiProvider(modelId),
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
case "anthropic": {
|
|
49
|
+
if (!credentials.anthropicKey) {
|
|
50
|
+
throw new Error("Anthropic API key is required");
|
|
51
|
+
}
|
|
52
|
+
const anthropicProvider = createAnthropic({
|
|
53
|
+
apiKey: credentials.anthropicKey,
|
|
54
|
+
});
|
|
55
|
+
return {
|
|
56
|
+
id: "anthropic",
|
|
57
|
+
chat: (modelId) => anthropicProvider(modelId),
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
case "google": {
|
|
61
|
+
if (!credentials.googleKey) {
|
|
62
|
+
throw new Error("Google API key is required");
|
|
63
|
+
}
|
|
64
|
+
const googleProvider = createGoogleGenerativeAI({
|
|
65
|
+
apiKey: credentials.googleKey,
|
|
66
|
+
});
|
|
67
|
+
return {
|
|
68
|
+
id: "google",
|
|
69
|
+
chat: (modelId) => googleProvider(modelId),
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
case "openrouter": {
|
|
73
|
+
if (!credentials.openrouterKey) {
|
|
74
|
+
throw new Error("OpenRouter API key is required");
|
|
75
|
+
}
|
|
76
|
+
const openrouterProvider = createOpenRouter({
|
|
77
|
+
apiKey: credentials.openrouterKey,
|
|
78
|
+
});
|
|
79
|
+
return {
|
|
80
|
+
id: "openrouter",
|
|
81
|
+
chat: (modelId) => openrouterProvider(modelId),
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
case "deepseek": {
|
|
85
|
+
if (!credentials.deepseekKey) {
|
|
86
|
+
throw new Error("DeepSeek API key is required");
|
|
87
|
+
}
|
|
88
|
+
// DeepSeek uses OpenAI-compatible API
|
|
89
|
+
const deepseekProvider = createOpenAI({
|
|
90
|
+
apiKey: credentials.deepseekKey,
|
|
91
|
+
baseURL: "https://api.deepseek.com/v1",
|
|
92
|
+
});
|
|
93
|
+
return {
|
|
94
|
+
id: "deepseek",
|
|
95
|
+
chat: (modelId) => deepseekProvider(modelId),
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
case "moonshot": {
|
|
99
|
+
if (!credentials.moonshotKey) {
|
|
100
|
+
throw new Error("Moonshot API key is required");
|
|
101
|
+
}
|
|
102
|
+
// Moonshot uses OpenAI-compatible API
|
|
103
|
+
const moonshotProvider = createOpenAI({
|
|
104
|
+
apiKey: credentials.moonshotKey,
|
|
105
|
+
baseURL: "https://api.moonshot.cn/v1",
|
|
106
|
+
});
|
|
107
|
+
return {
|
|
108
|
+
id: "moonshot",
|
|
109
|
+
chat: (modelId) => moonshotProvider(modelId),
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
default:
|
|
113
|
+
throw new Error(`Unknown provider: ${providerId}`);
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Get model instance for streaming
|
|
118
|
+
*
|
|
119
|
+
* @param modelId - Full model identifier (e.g., 'anthropic/claude-sonnet-4')
|
|
120
|
+
* @param credentials - API keys and credentials
|
|
121
|
+
* @param options - Optional logger and client version
|
|
122
|
+
* @returns Language model instance ready for streamText()
|
|
123
|
+
*/
|
|
124
|
+
export function getModel(modelId, credentials, options) {
|
|
125
|
+
// Parse model ID format: "provider/model-name"
|
|
126
|
+
const parts = modelId.split("/");
|
|
127
|
+
const providerId = parts[0];
|
|
128
|
+
const actualModelId = parts.slice(1).join("/");
|
|
129
|
+
const provider = getProvider(providerId, credentials, options);
|
|
130
|
+
return provider.chat(actualModelId);
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Check if a provider is available (has required credentials)
|
|
134
|
+
*
|
|
135
|
+
* @param providerId - Provider identifier
|
|
136
|
+
* @param credentials - API keys and credentials
|
|
137
|
+
* @returns True if provider can be instantiated
|
|
138
|
+
*/
|
|
139
|
+
export function isProviderAvailable(providerId, credentials) {
|
|
140
|
+
try {
|
|
141
|
+
getProvider(providerId, credentials);
|
|
142
|
+
return true;
|
|
143
|
+
}
|
|
144
|
+
catch {
|
|
145
|
+
return false;
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/providers/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @toolplex/ai-engine - ToolPlex Provider
|
|
3
|
+
*
|
|
4
|
+
* Custom ToolPlex Provider for Vercel AI SDK.
|
|
5
|
+
* Wraps the ToolPlex AI API backend (api.toolplex.ai) which proxies OpenRouter
|
|
6
|
+
* and returns OpenRouter-format SSE streaming responses.
|
|
7
|
+
*
|
|
8
|
+
* The backend handles:
|
|
9
|
+
* - Authentication via ToolPlex API keys (x-api-key header)
|
|
10
|
+
* - Usage tracking and enforcement
|
|
11
|
+
* - OpenRouter model access
|
|
12
|
+
* - Tool call handling
|
|
13
|
+
*/
|
|
14
|
+
import type { LoggerAdapter } from "../adapters/types.js";
|
|
15
|
+
export interface ToolPlexConfig {
|
|
16
|
+
apiKey: string;
|
|
17
|
+
baseURL?: string;
|
|
18
|
+
clientVersion?: string;
|
|
19
|
+
logger?: LoggerAdapter;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Global map to store usage data from DONE events
|
|
23
|
+
* Key: sessionId, Value: Usage data from backend
|
|
24
|
+
* This is cleared after being read by the engine
|
|
25
|
+
*/
|
|
26
|
+
export declare const toolplexUsageMap: Map<string, {
|
|
27
|
+
prompt_tokens: number;
|
|
28
|
+
completion_tokens: number;
|
|
29
|
+
total_tokens: number;
|
|
30
|
+
cost?: number;
|
|
31
|
+
}>;
|
|
32
|
+
/**
|
|
33
|
+
* ToolPlex model factory function type
|
|
34
|
+
*/
|
|
35
|
+
export type ToolPlexModelFactory = (modelId: string) => any;
|
|
36
|
+
/**
|
|
37
|
+
* Create a ToolPlex provider instance
|
|
38
|
+
*
|
|
39
|
+
* Uses the specialized OpenRouter SDK provider with custom configuration to work with
|
|
40
|
+
* the ToolPlex backend API which proxies OpenRouter and returns OpenRouter's SSE format.
|
|
41
|
+
*/
|
|
42
|
+
export declare function createToolPlex(config: ToolPlexConfig): ToolPlexModelFactory;
|
|
43
|
+
//# sourceMappingURL=toolplex.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"toolplex.d.ts","sourceRoot":"","sources":["../../src/providers/toolplex.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAGH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAE1D,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE,aAAa,CAAC;CACxB;AAED;;;;GAIG;AACH,eAAO,MAAM,gBAAgB;mBAGV,MAAM;uBACF,MAAM;kBACX,MAAM;WACb,MAAM;EAEd,CAAC;AAEJ;;GAEG;AACH,MAAM,MAAM,oBAAoB,GAAG,CAAC,OAAO,EAAE,MAAM,KAAK,GAAG,CAAC;AAE5D;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,cAAc,GAAG,oBAAoB,CAsK3E"}
|
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @toolplex/ai-engine - ToolPlex Provider
|
|
3
|
+
*
|
|
4
|
+
* Custom ToolPlex Provider for Vercel AI SDK.
|
|
5
|
+
* Wraps the ToolPlex AI API backend (api.toolplex.ai) which proxies OpenRouter
|
|
6
|
+
* and returns OpenRouter-format SSE streaming responses.
|
|
7
|
+
*
|
|
8
|
+
* The backend handles:
|
|
9
|
+
* - Authentication via ToolPlex API keys (x-api-key header)
|
|
10
|
+
* - Usage tracking and enforcement
|
|
11
|
+
* - OpenRouter model access
|
|
12
|
+
* - Tool call handling
|
|
13
|
+
*/
|
|
14
|
+
import { createOpenRouter } from "@openrouter/ai-sdk-provider";
|
|
15
|
+
/**
|
|
16
|
+
* Global map to store usage data from DONE events
|
|
17
|
+
* Key: sessionId, Value: Usage data from backend
|
|
18
|
+
* This is cleared after being read by the engine
|
|
19
|
+
*/
|
|
20
|
+
export const toolplexUsageMap = new Map();
|
|
21
|
+
/**
|
|
22
|
+
* Create a ToolPlex provider instance
|
|
23
|
+
*
|
|
24
|
+
* Uses the specialized OpenRouter SDK provider with custom configuration to work with
|
|
25
|
+
* the ToolPlex backend API which proxies OpenRouter and returns OpenRouter's SSE format.
|
|
26
|
+
*/
|
|
27
|
+
export function createToolPlex(config) {
|
|
28
|
+
const baseURL = config.baseURL || "https://api.toolplex.ai";
|
|
29
|
+
const logger = config.logger;
|
|
30
|
+
// Build headers
|
|
31
|
+
const headers = {
|
|
32
|
+
"x-api-key": config.apiKey,
|
|
33
|
+
};
|
|
34
|
+
if (config.clientVersion) {
|
|
35
|
+
headers["X-Client-Version"] = config.clientVersion;
|
|
36
|
+
}
|
|
37
|
+
// Create OpenRouter provider with custom configuration for ToolPlex backend
|
|
38
|
+
const provider = createOpenRouter({
|
|
39
|
+
apiKey: config.apiKey,
|
|
40
|
+
baseURL: `${baseURL}/ai`,
|
|
41
|
+
headers,
|
|
42
|
+
// Custom fetch to transform requests and intercept DONE events for usage data
|
|
43
|
+
fetch: async (url, init) => {
|
|
44
|
+
// Add provider field and session_id to request body
|
|
45
|
+
if (init?.body && typeof init.body === "string") {
|
|
46
|
+
try {
|
|
47
|
+
const body = JSON.parse(init.body);
|
|
48
|
+
// Extract session ID from headers if present
|
|
49
|
+
let sessionId = null;
|
|
50
|
+
if (init?.headers) {
|
|
51
|
+
if (init.headers instanceof Headers) {
|
|
52
|
+
sessionId = init.headers.get("x-session-id");
|
|
53
|
+
}
|
|
54
|
+
else if (Array.isArray(init.headers)) {
|
|
55
|
+
const sessionHeader = init.headers.find(([key]) => key.toLowerCase() === "x-session-id");
|
|
56
|
+
sessionId = sessionHeader ? sessionHeader[1] : null;
|
|
57
|
+
}
|
|
58
|
+
else {
|
|
59
|
+
sessionId =
|
|
60
|
+
init.headers["x-session-id"] ||
|
|
61
|
+
null;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
logger?.debug("ToolPlex provider: Transforming request", {
|
|
65
|
+
hasSessionId: !!sessionId,
|
|
66
|
+
sessionId: sessionId ? sessionId.substring(0, 8) + "..." : null,
|
|
67
|
+
bodyKeys: Object.keys(body),
|
|
68
|
+
});
|
|
69
|
+
const toolplexBody = {
|
|
70
|
+
...body,
|
|
71
|
+
provider: "openrouter",
|
|
72
|
+
...(sessionId && { session_id: sessionId }),
|
|
73
|
+
};
|
|
74
|
+
init = {
|
|
75
|
+
...init,
|
|
76
|
+
body: JSON.stringify(toolplexBody),
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
catch (error) {
|
|
80
|
+
logger?.error("Failed to transform ToolPlex request", { error });
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
const response = await fetch(url, init);
|
|
84
|
+
// Intercept SSE stream to capture usage from DONE event
|
|
85
|
+
if (response.body &&
|
|
86
|
+
response.headers.get("content-type")?.includes("text/event-stream")) {
|
|
87
|
+
const originalBody = response.body;
|
|
88
|
+
const reader = originalBody.getReader();
|
|
89
|
+
const decoder = new TextDecoder();
|
|
90
|
+
// Create a new readable stream that intercepts SSE events
|
|
91
|
+
const transformedStream = new ReadableStream({
|
|
92
|
+
async start(controller) {
|
|
93
|
+
let buffer = "";
|
|
94
|
+
try {
|
|
95
|
+
while (true) {
|
|
96
|
+
const { done, value } = await reader.read();
|
|
97
|
+
if (done) {
|
|
98
|
+
controller.close();
|
|
99
|
+
break;
|
|
100
|
+
}
|
|
101
|
+
// Decode chunk and add to buffer
|
|
102
|
+
buffer += decoder.decode(value, { stream: true });
|
|
103
|
+
// Process complete SSE events (separated by \n\n)
|
|
104
|
+
const events = buffer.split("\n\n");
|
|
105
|
+
buffer = events.pop() || ""; // Keep incomplete event in buffer
|
|
106
|
+
// Filter out DONE events and track usage
|
|
107
|
+
const filteredEvents = [];
|
|
108
|
+
for (const event of events) {
|
|
109
|
+
if (event.trim()) {
|
|
110
|
+
// Parse SSE event (format: "data: {...}")
|
|
111
|
+
const match = event.match(/^data: (.+)$/m);
|
|
112
|
+
if (match) {
|
|
113
|
+
try {
|
|
114
|
+
const data = JSON.parse(match[1]);
|
|
115
|
+
// Check for DONE event with usage data
|
|
116
|
+
if (data.done === true && data.usage) {
|
|
117
|
+
const sessionId = init?.headers?.["x-session-id"];
|
|
118
|
+
if (sessionId) {
|
|
119
|
+
toolplexUsageMap.set(sessionId, {
|
|
120
|
+
prompt_tokens: data.usage.prompt_tokens || 0,
|
|
121
|
+
completion_tokens: data.usage.completion_tokens || 0,
|
|
122
|
+
total_tokens: data.usage.total_tokens || 0,
|
|
123
|
+
cost: data.usage.cost,
|
|
124
|
+
});
|
|
125
|
+
}
|
|
126
|
+
// Skip this event to prevent AI SDK from seeing invalid chunk format
|
|
127
|
+
continue;
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
catch {
|
|
131
|
+
// Not JSON or different format - keep the event
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
// Keep this event
|
|
136
|
+
filteredEvents.push(event);
|
|
137
|
+
}
|
|
138
|
+
// Reconstruct the filtered stream
|
|
139
|
+
if (filteredEvents.length > 0) {
|
|
140
|
+
const filteredBuffer = filteredEvents.join("\n\n") + "\n\n";
|
|
141
|
+
controller.enqueue(Buffer.from(filteredBuffer, "utf8"));
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
catch (error) {
|
|
146
|
+
logger?.error("Error intercepting ToolPlex SSE stream", {
|
|
147
|
+
error,
|
|
148
|
+
});
|
|
149
|
+
controller.error(error);
|
|
150
|
+
}
|
|
151
|
+
},
|
|
152
|
+
});
|
|
153
|
+
// Return a new response with the transformed stream
|
|
154
|
+
return new Response(transformedStream, {
|
|
155
|
+
status: response.status,
|
|
156
|
+
statusText: response.statusText,
|
|
157
|
+
headers: response.headers,
|
|
158
|
+
});
|
|
159
|
+
}
|
|
160
|
+
return response;
|
|
161
|
+
},
|
|
162
|
+
});
|
|
163
|
+
// Return a function that creates model instances
|
|
164
|
+
return function (modelId) {
|
|
165
|
+
return provider.chat(modelId);
|
|
166
|
+
};
|
|
167
|
+
}
|
|
168
|
+
//# sourceMappingURL=toolplex.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"toolplex.js","sourceRoot":"","sources":["../../src/providers/toolplex.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,218 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @toolplex/ai-engine - Core Type Definitions
|
|
3
|
+
*
|
|
4
|
+
* Platform-agnostic types for the AI chat engine.
|
|
5
|
+
* These types are used across desktop, cloud, and CLI environments.
|
|
6
|
+
*/
|
|
7
|
+
import type { CoreMessage } from "ai";
|
|
8
|
+
/**
|
|
9
|
+
* Provider configuration
|
|
10
|
+
*/
|
|
11
|
+
export interface ProviderConfig {
|
|
12
|
+
id: string;
|
|
13
|
+
apiKey?: string;
|
|
14
|
+
baseURL?: string;
|
|
15
|
+
timeout?: number;
|
|
16
|
+
maxRetries?: number;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Credentials passed to provider factory
|
|
20
|
+
*/
|
|
21
|
+
export interface ProviderCredentials {
|
|
22
|
+
openaiKey?: string;
|
|
23
|
+
anthropicKey?: string;
|
|
24
|
+
googleKey?: string;
|
|
25
|
+
openrouterKey?: string;
|
|
26
|
+
deepseekKey?: string;
|
|
27
|
+
moonshotKey?: string;
|
|
28
|
+
toolplexApiKey?: string;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Provider interface - wraps AI SDK providers
|
|
32
|
+
*/
|
|
33
|
+
export interface AIProvider {
|
|
34
|
+
id: string;
|
|
35
|
+
chat: (modelId: string) => any;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Model configuration flags (subset from server-side ModelConfig)
|
|
39
|
+
*/
|
|
40
|
+
export interface ModelConfigFlags {
|
|
41
|
+
preserveEmptyContentBlocks?: boolean;
|
|
42
|
+
enforceMaxTokens?: boolean;
|
|
43
|
+
maxOutputTokens?: number;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* File attachment structure
|
|
47
|
+
*/
|
|
48
|
+
export interface FileAttachment {
|
|
49
|
+
name: string;
|
|
50
|
+
mimeType: string;
|
|
51
|
+
data: string;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Streaming options for chat requests
|
|
55
|
+
*/
|
|
56
|
+
export interface StreamOptions {
|
|
57
|
+
streamId?: string;
|
|
58
|
+
sessionId: string;
|
|
59
|
+
modelId: string;
|
|
60
|
+
provider: string;
|
|
61
|
+
messages: CoreMessage[];
|
|
62
|
+
tools?: any;
|
|
63
|
+
temperature?: number;
|
|
64
|
+
maxTokens?: number;
|
|
65
|
+
topP?: number;
|
|
66
|
+
fileAttachments?: FileAttachment[];
|
|
67
|
+
streamingMessageId?: string;
|
|
68
|
+
modelConfig?: ModelConfigFlags;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Tool call data structure
|
|
72
|
+
*/
|
|
73
|
+
export interface ToolCallData {
|
|
74
|
+
id: string;
|
|
75
|
+
type: "function";
|
|
76
|
+
function: {
|
|
77
|
+
name: string;
|
|
78
|
+
arguments: string;
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Usage/token data structure
|
|
83
|
+
*/
|
|
84
|
+
export interface UsageData {
|
|
85
|
+
promptTokens: number;
|
|
86
|
+
completionTokens: number;
|
|
87
|
+
totalTokens: number;
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Stream event types
|
|
91
|
+
*/
|
|
92
|
+
export type StreamEvent = {
|
|
93
|
+
type: "chunk";
|
|
94
|
+
content: string;
|
|
95
|
+
} | {
|
|
96
|
+
type: "tool_call";
|
|
97
|
+
toolCall: ToolCallData;
|
|
98
|
+
} | {
|
|
99
|
+
type: "complete";
|
|
100
|
+
fullText: string;
|
|
101
|
+
usage?: UsageData;
|
|
102
|
+
} | {
|
|
103
|
+
type: "error";
|
|
104
|
+
error: string;
|
|
105
|
+
};
|
|
106
|
+
/**
|
|
107
|
+
* Stream result from the engine
|
|
108
|
+
*/
|
|
109
|
+
export interface StreamResult {
|
|
110
|
+
streamId: string;
|
|
111
|
+
textStream: AsyncIterable<string>;
|
|
112
|
+
fullStream: AsyncIterable<any>;
|
|
113
|
+
onFinishPromise: Promise<void>;
|
|
114
|
+
abort: () => Promise<void>;
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* MCP tool definition from server
|
|
118
|
+
*/
|
|
119
|
+
export interface MCPTool {
|
|
120
|
+
name: string;
|
|
121
|
+
description?: string;
|
|
122
|
+
inputSchema?: any;
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* MCP session information
|
|
126
|
+
*/
|
|
127
|
+
export interface MCPSessionInfo {
|
|
128
|
+
exists: boolean;
|
|
129
|
+
isConnected?: boolean;
|
|
130
|
+
serverPath?: string;
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Result from MCP operations
|
|
134
|
+
*/
|
|
135
|
+
export interface MCPResult {
|
|
136
|
+
success: boolean;
|
|
137
|
+
error?: string;
|
|
138
|
+
data?: any;
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* MCP tool call result
|
|
142
|
+
*/
|
|
143
|
+
export interface MCPToolResult {
|
|
144
|
+
content: Array<{
|
|
145
|
+
type: string;
|
|
146
|
+
text?: string;
|
|
147
|
+
data?: any;
|
|
148
|
+
}>;
|
|
149
|
+
isError?: boolean;
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* Types of tool confirmations
|
|
153
|
+
*/
|
|
154
|
+
export type ConfirmationType = "install" | "uninstall" | "missing-servers" | "save-playbook" | "submit-feedback" | "large-result";
|
|
155
|
+
/**
|
|
156
|
+
* Confirmation request from engine to adapter
|
|
157
|
+
*/
|
|
158
|
+
export interface ConfirmationRequest {
|
|
159
|
+
type: ConfirmationType;
|
|
160
|
+
data: any;
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* Confirmation result from adapter
|
|
164
|
+
*/
|
|
165
|
+
export interface ConfirmationResult {
|
|
166
|
+
allowed: boolean;
|
|
167
|
+
reason?: string;
|
|
168
|
+
action?: string;
|
|
169
|
+
editedConfig?: any;
|
|
170
|
+
wasEdited?: boolean;
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* Events emitted by the engine during streaming
|
|
174
|
+
*/
|
|
175
|
+
export interface EngineEvents {
|
|
176
|
+
onStreamChunk: (streamId: string, chunk: string) => void;
|
|
177
|
+
onStreamComplete: (streamId: string, fullText: string, usage?: UsageData) => void;
|
|
178
|
+
onStreamError: (streamId: string, error: string) => void;
|
|
179
|
+
onToolInputStart: (streamId: string, toolCallId: string, toolName: string) => void;
|
|
180
|
+
onToolInputDelta: (streamId: string, toolCallId: string, argsDelta: string) => void;
|
|
181
|
+
onToolResult: (streamId: string, toolCallId: string, result: MCPToolResult, toolName: string, args: any) => void;
|
|
182
|
+
}
|
|
183
|
+
/**
|
|
184
|
+
* Configuration for the AI engine
|
|
185
|
+
*/
|
|
186
|
+
export interface EngineConfig {
|
|
187
|
+
/** Maximum number of tool execution steps per request */
|
|
188
|
+
maxSteps?: number;
|
|
189
|
+
/** Whether to enable debug logging */
|
|
190
|
+
debug?: boolean;
|
|
191
|
+
/** Tools to hide from the AI agent */
|
|
192
|
+
hiddenTools?: string[];
|
|
193
|
+
/** Client version for API requests */
|
|
194
|
+
clientVersion?: string;
|
|
195
|
+
}
|
|
196
|
+
/**
|
|
197
|
+
* Chat session information
|
|
198
|
+
*/
|
|
199
|
+
export interface ChatSession {
|
|
200
|
+
id: string;
|
|
201
|
+
createdAt: Date;
|
|
202
|
+
updatedAt: Date;
|
|
203
|
+
metadata?: Record<string, any>;
|
|
204
|
+
}
|
|
205
|
+
/**
|
|
206
|
+
* Message in a chat session
|
|
207
|
+
*/
|
|
208
|
+
export interface ChatMessage {
|
|
209
|
+
id: string;
|
|
210
|
+
sessionId: string;
|
|
211
|
+
role: "user" | "assistant" | "system" | "tool";
|
|
212
|
+
content: string | any[];
|
|
213
|
+
toolCallId?: string;
|
|
214
|
+
toolCalls?: ToolCallData[];
|
|
215
|
+
createdAt: Date;
|
|
216
|
+
}
|
|
217
|
+
export type { CoreMessage };
|
|
218
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,IAAI,CAAC;AAMtC;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,GAAG,CAAC;CAChC;AAMD;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,0BAA0B,CAAC,EAAE,OAAO,CAAC;IACrC,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,KAAK,CAAC,EAAE,GAAG,CAAC;IACZ,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,eAAe,CAAC,EAAE,cAAc,EAAE,CAAC;IACnC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,WAAW,CAAC,EAAE,gBAAgB,CAAC;CAChC;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,UAAU,CAAC;IACjB,QAAQ,EAAE;QACR,IAAI,EAAE,MAAM,CAAC;QACb,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,MAAM,WAAW,GACnB;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAClC;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,QAAQ,EAAE,YAAY,CAAA;CAAE,GAC7C;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,SAAS,CAAA;CAAE,GACzD;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAErC;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IAClC,UAAU,EAAE,aAAa,CAAC,GAAG,CAAC,CAAC;IAC/B,eAAe,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/B,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5B;AAMD;;GAEG;AACH,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,GAAG,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,OAAO,CAAC;IAChB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,GAAG,CAAC;CACZ;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,KAAK,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,IAAI,CAAC,EAAE,GAAG,CAAC;KACZ,CAAC,CAAC;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAMD;;GAEG;AACH,MAAM,MAAM,gBAAgB,GACxB,SAAS,GACT,WAAW,GACX,iBAAiB,GACjB,eAAe,GACf,iBAAiB,GACjB,cAAc,CAAC;AAEnB;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,gBAAgB,CAAC;IACvB,IAAI,EAAE,GAAG,CAAC;CACX;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,GAAG,CAAC;IACnB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAMD;;GAEG;AACH,MAAM,WAAW,YAAY;IAE3B,aAAa,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACzD,gBAAgB,EAAE,CAChB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,KAAK,CAAC,EAAE,SAAS,KACd,IAAI,CAAC;IACV,aAAa,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAGzD,gBAAgB,EAAE,CAChB,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,KACb,IAAI,CAAC;IACV,gBAAgB,EAAE,CAChB,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,KACd,IAAI,CAAC;IACV,YAAY,EAAE,CACZ,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,aAAa,EACrB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,GAAG,KACN,IAAI,CAAC;CACX;AAMD;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,yDAAyD;IACzD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,sCAAsC;IACtC,KAAK,CAAC,EAAE,OAAO,CAAC;IAEhB,sCAAsC;IACtC,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IAEvB,sCAAsC;IACtC,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAMD;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,IAAI,CAAC;IAChB,SAAS,EAAE,IAAI,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAChC;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,QAAQ,GAAG,MAAM,CAAC;IAC/C,OAAO,EAAE,MAAM,GAAG,GAAG,EAAE,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,YAAY,EAAE,CAAC;IAC3B,SAAS,EAAE,IAAI,CAAC;CACjB;AAGD,YAAY,EAAE,WAAW,EAAE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
|