@prompd/cli 0.3.3
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/README.md +162 -0
- package/bin/prompd.js +23 -0
- package/dist/commands/cache.d.ts +3 -0
- package/dist/commands/cache.d.ts.map +1 -0
- package/dist/commands/cache.js +199 -0
- package/dist/commands/cache.js.map +1 -0
- package/dist/commands/compile.d.ts +9 -0
- package/dist/commands/compile.d.ts.map +1 -0
- package/dist/commands/compile.js +104 -0
- package/dist/commands/compile.js.map +1 -0
- package/dist/commands/config.d.ts +7 -0
- package/dist/commands/config.d.ts.map +1 -0
- package/dist/commands/config.js +212 -0
- package/dist/commands/config.js.map +1 -0
- package/dist/commands/create.d.ts +3 -0
- package/dist/commands/create.d.ts.map +1 -0
- package/dist/commands/create.js +183 -0
- package/dist/commands/create.js.map +1 -0
- package/dist/commands/deps.d.ts +3 -0
- package/dist/commands/deps.d.ts.map +1 -0
- package/dist/commands/deps.js +192 -0
- package/dist/commands/deps.js.map +1 -0
- package/dist/commands/explain.d.ts +3 -0
- package/dist/commands/explain.d.ts.map +1 -0
- package/dist/commands/explain.js +227 -0
- package/dist/commands/explain.js.map +1 -0
- package/dist/commands/git.d.ts +3 -0
- package/dist/commands/git.d.ts.map +1 -0
- package/dist/commands/git.js +306 -0
- package/dist/commands/git.js.map +1 -0
- package/dist/commands/init.d.ts +3 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +177 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/list.d.ts +3 -0
- package/dist/commands/list.d.ts.map +1 -0
- package/dist/commands/list.js +126 -0
- package/dist/commands/list.js.map +1 -0
- package/dist/commands/mcp.d.ts +3 -0
- package/dist/commands/mcp.d.ts.map +1 -0
- package/dist/commands/mcp.js +326 -0
- package/dist/commands/mcp.js.map +1 -0
- package/dist/commands/namespace.d.ts +3 -0
- package/dist/commands/namespace.d.ts.map +1 -0
- package/dist/commands/namespace.js +113 -0
- package/dist/commands/namespace.js.map +1 -0
- package/dist/commands/package.d.ts +23 -0
- package/dist/commands/package.d.ts.map +1 -0
- package/dist/commands/package.js +746 -0
- package/dist/commands/package.js.map +1 -0
- package/dist/commands/provider.d.ts +3 -0
- package/dist/commands/provider.d.ts.map +1 -0
- package/dist/commands/provider.js +285 -0
- package/dist/commands/provider.js.map +1 -0
- package/dist/commands/registry.d.ts +9 -0
- package/dist/commands/registry.d.ts.map +1 -0
- package/dist/commands/registry.js +361 -0
- package/dist/commands/registry.js.map +1 -0
- package/dist/commands/run.d.ts +3 -0
- package/dist/commands/run.d.ts.map +1 -0
- package/dist/commands/run.js +157 -0
- package/dist/commands/run.js.map +1 -0
- package/dist/commands/show.d.ts +3 -0
- package/dist/commands/show.d.ts.map +1 -0
- package/dist/commands/show.js +90 -0
- package/dist/commands/show.js.map +1 -0
- package/dist/commands/uninstall.d.ts +3 -0
- package/dist/commands/uninstall.d.ts.map +1 -0
- package/dist/commands/uninstall.js +95 -0
- package/dist/commands/uninstall.js.map +1 -0
- package/dist/commands/validate.d.ts +3 -0
- package/dist/commands/validate.d.ts.map +1 -0
- package/dist/commands/validate.js +57 -0
- package/dist/commands/validate.js.map +1 -0
- package/dist/commands/version.d.ts +3 -0
- package/dist/commands/version.d.ts.map +1 -0
- package/dist/commands/version.js +166 -0
- package/dist/commands/version.js.map +1 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +388 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/auth.d.ts +164 -0
- package/dist/lib/auth.d.ts.map +1 -0
- package/dist/lib/auth.js +388 -0
- package/dist/lib/auth.js.map +1 -0
- package/dist/lib/compiler/file-system.d.ts +178 -0
- package/dist/lib/compiler/file-system.d.ts.map +1 -0
- package/dist/lib/compiler/file-system.js +440 -0
- package/dist/lib/compiler/file-system.js.map +1 -0
- package/dist/lib/compiler/formatters/anthropic.d.ts +21 -0
- package/dist/lib/compiler/formatters/anthropic.d.ts.map +1 -0
- package/dist/lib/compiler/formatters/anthropic.js +95 -0
- package/dist/lib/compiler/formatters/anthropic.js.map +1 -0
- package/dist/lib/compiler/formatters/markdown.d.ts +17 -0
- package/dist/lib/compiler/formatters/markdown.d.ts.map +1 -0
- package/dist/lib/compiler/formatters/markdown.js +114 -0
- package/dist/lib/compiler/formatters/markdown.js.map +1 -0
- package/dist/lib/compiler/formatters/openai.d.ts +21 -0
- package/dist/lib/compiler/formatters/openai.d.ts.map +1 -0
- package/dist/lib/compiler/formatters/openai.js +98 -0
- package/dist/lib/compiler/formatters/openai.js.map +1 -0
- package/dist/lib/compiler/index.d.ts +56 -0
- package/dist/lib/compiler/index.d.ts.map +1 -0
- package/dist/lib/compiler/index.js +165 -0
- package/dist/lib/compiler/index.js.map +1 -0
- package/dist/lib/compiler/language-map.d.ts +31 -0
- package/dist/lib/compiler/language-map.d.ts.map +1 -0
- package/dist/lib/compiler/language-map.js +156 -0
- package/dist/lib/compiler/language-map.js.map +1 -0
- package/dist/lib/compiler/package-resolver.d.ts +68 -0
- package/dist/lib/compiler/package-resolver.d.ts.map +1 -0
- package/dist/lib/compiler/package-resolver.js +254 -0
- package/dist/lib/compiler/package-resolver.js.map +1 -0
- package/dist/lib/compiler/pipeline.d.ts +53 -0
- package/dist/lib/compiler/pipeline.d.ts.map +1 -0
- package/dist/lib/compiler/pipeline.js +209 -0
- package/dist/lib/compiler/pipeline.js.map +1 -0
- package/dist/lib/compiler/prompd-loader.d.ts +108 -0
- package/dist/lib/compiler/prompd-loader.d.ts.map +1 -0
- package/dist/lib/compiler/prompd-loader.js +270 -0
- package/dist/lib/compiler/prompd-loader.js.map +1 -0
- package/dist/lib/compiler/section-override.d.ts +40 -0
- package/dist/lib/compiler/section-override.d.ts.map +1 -0
- package/dist/lib/compiler/section-override.js +296 -0
- package/dist/lib/compiler/section-override.js.map +1 -0
- package/dist/lib/compiler/stages/assets.d.ts +71 -0
- package/dist/lib/compiler/stages/assets.d.ts.map +1 -0
- package/dist/lib/compiler/stages/assets.js +456 -0
- package/dist/lib/compiler/stages/assets.js.map +1 -0
- package/dist/lib/compiler/stages/codegen.d.ts +17 -0
- package/dist/lib/compiler/stages/codegen.d.ts.map +1 -0
- package/dist/lib/compiler/stages/codegen.js +64 -0
- package/dist/lib/compiler/stages/codegen.js.map +1 -0
- package/dist/lib/compiler/stages/dependency.d.ts +38 -0
- package/dist/lib/compiler/stages/dependency.d.ts.map +1 -0
- package/dist/lib/compiler/stages/dependency.js +307 -0
- package/dist/lib/compiler/stages/dependency.js.map +1 -0
- package/dist/lib/compiler/stages/lexical.d.ts +19 -0
- package/dist/lib/compiler/stages/lexical.d.ts.map +1 -0
- package/dist/lib/compiler/stages/lexical.js +92 -0
- package/dist/lib/compiler/stages/lexical.js.map +1 -0
- package/dist/lib/compiler/stages/semantic.d.ts +20 -0
- package/dist/lib/compiler/stages/semantic.d.ts.map +1 -0
- package/dist/lib/compiler/stages/semantic.js +166 -0
- package/dist/lib/compiler/stages/semantic.js.map +1 -0
- package/dist/lib/compiler/stages/template.d.ts +94 -0
- package/dist/lib/compiler/stages/template.d.ts.map +1 -0
- package/dist/lib/compiler/stages/template.js +1044 -0
- package/dist/lib/compiler/stages/template.js.map +1 -0
- package/dist/lib/compiler/types.d.ts +200 -0
- package/dist/lib/compiler/types.d.ts.map +1 -0
- package/dist/lib/compiler/types.js +137 -0
- package/dist/lib/compiler/types.js.map +1 -0
- package/dist/lib/config.d.ts +29 -0
- package/dist/lib/config.d.ts.map +1 -0
- package/dist/lib/config.js +375 -0
- package/dist/lib/config.js.map +1 -0
- package/dist/lib/errors.d.ts +19 -0
- package/dist/lib/errors.d.ts.map +1 -0
- package/dist/lib/errors.js +47 -0
- package/dist/lib/errors.js.map +1 -0
- package/dist/lib/executor.d.ts +18 -0
- package/dist/lib/executor.d.ts.map +1 -0
- package/dist/lib/executor.js +372 -0
- package/dist/lib/executor.js.map +1 -0
- package/dist/lib/git.d.ts +74 -0
- package/dist/lib/git.d.ts.map +1 -0
- package/dist/lib/git.js +254 -0
- package/dist/lib/git.js.map +1 -0
- package/dist/lib/index.d.ts +43 -0
- package/dist/lib/index.d.ts.map +1 -0
- package/dist/lib/index.js +108 -0
- package/dist/lib/index.js.map +1 -0
- package/dist/lib/mcp.d.ts +42 -0
- package/dist/lib/mcp.d.ts.map +1 -0
- package/dist/lib/mcp.js +477 -0
- package/dist/lib/mcp.js.map +1 -0
- package/dist/lib/model-updater.d.ts +51 -0
- package/dist/lib/model-updater.d.ts.map +1 -0
- package/dist/lib/model-updater.js +275 -0
- package/dist/lib/model-updater.js.map +1 -0
- package/dist/lib/parser.d.ts +9 -0
- package/dist/lib/parser.d.ts.map +1 -0
- package/dist/lib/parser.js +197 -0
- package/dist/lib/parser.js.map +1 -0
- package/dist/lib/registry.d.ts +183 -0
- package/dist/lib/registry.d.ts.map +1 -0
- package/dist/lib/registry.js +786 -0
- package/dist/lib/registry.js.map +1 -0
- package/dist/lib/rpc-server.d.ts +78 -0
- package/dist/lib/rpc-server.d.ts.map +1 -0
- package/dist/lib/rpc-server.js +404 -0
- package/dist/lib/rpc-server.js.map +1 -0
- package/dist/lib/security.d.ts +120 -0
- package/dist/lib/security.d.ts.map +1 -0
- package/dist/lib/security.js +478 -0
- package/dist/lib/security.js.map +1 -0
- package/dist/lib/validation.d.ts +106 -0
- package/dist/lib/validation.d.ts.map +1 -0
- package/dist/lib/validation.js +398 -0
- package/dist/lib/validation.js.map +1 -0
- package/dist/lib/version.d.ts +29 -0
- package/dist/lib/version.d.ts.map +1 -0
- package/dist/lib/version.js +202 -0
- package/dist/lib/version.js.map +1 -0
- package/dist/lib/workflow-engine.d.ts +161 -0
- package/dist/lib/workflow-engine.d.ts.map +1 -0
- package/dist/lib/workflow-engine.js +422 -0
- package/dist/lib/workflow-engine.js.map +1 -0
- package/dist/lib/workflow.d.ts +102 -0
- package/dist/lib/workflow.d.ts.map +1 -0
- package/dist/lib/workflow.js +228 -0
- package/dist/lib/workflow.js.map +1 -0
- package/dist/server.d.ts +8 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +134 -0
- package/dist/server.js.map +1 -0
- package/dist/types/index.d.ts +116 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +144 -0
- package/dist/types/index.js.map +1 -0
- package/package.json +104 -0
package/dist/lib/mcp.js
ADDED
|
@@ -0,0 +1,477 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.PrompdMCPServer = void 0;
|
|
37
|
+
const fs = __importStar(require("fs-extra"));
|
|
38
|
+
const path = __importStar(require("path"));
|
|
39
|
+
const glob = __importStar(require("glob"));
|
|
40
|
+
const parser_1 = require("./parser");
|
|
41
|
+
const executor_1 = require("./executor");
|
|
42
|
+
const workflow_1 = require("./workflow");
|
|
43
|
+
const security_1 = require("./security");
|
|
44
|
+
class PrompdMCPServer {
|
|
45
|
+
constructor(config) {
|
|
46
|
+
this.config = config;
|
|
47
|
+
this.parser = new parser_1.PrompdParser();
|
|
48
|
+
this.workflowExecutor = new workflow_1.WorkflowExecutor();
|
|
49
|
+
this.registeredTools = new Map();
|
|
50
|
+
this.registeredWorkflows = new Map();
|
|
51
|
+
this.securityMiddleware = new security_1.MCPSecurityMiddleware();
|
|
52
|
+
// Initialize executor if execution is enabled
|
|
53
|
+
if (config.execute) {
|
|
54
|
+
this.executor = new executor_1.PrompdExecutor();
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
async initializeMCP() {
|
|
58
|
+
// Dynamic import of MCP SDK
|
|
59
|
+
const serverModule = await Promise.resolve().then(() => __importStar(require('@modelcontextprotocol/sdk/server/index.js')));
|
|
60
|
+
// Initialize MCP server
|
|
61
|
+
this.server = new serverModule.Server({
|
|
62
|
+
name: this.config.name || 'prompd-mcp-server',
|
|
63
|
+
version: this.config.version || '0.2.3',
|
|
64
|
+
}, {
|
|
65
|
+
capabilities: {
|
|
66
|
+
tools: {}
|
|
67
|
+
}
|
|
68
|
+
});
|
|
69
|
+
await this.setupHandlers();
|
|
70
|
+
}
|
|
71
|
+
async setupHandlers() {
|
|
72
|
+
// Dynamic import for schemas
|
|
73
|
+
const typesModule = await Promise.resolve().then(() => __importStar(require('@modelcontextprotocol/sdk/types.js')));
|
|
74
|
+
// List available tools
|
|
75
|
+
this.server.setRequestHandler(typesModule.ListToolsRequestSchema, async () => {
|
|
76
|
+
const tools = [];
|
|
77
|
+
// Add prompt tools
|
|
78
|
+
for (const [name, prompd] of this.registeredTools.entries()) {
|
|
79
|
+
tools.push({
|
|
80
|
+
name,
|
|
81
|
+
description: prompd.metadata.description || `Execute ${name} prompt`,
|
|
82
|
+
inputSchema: this.createInputSchema(prompd)
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
// Add workflow tools
|
|
86
|
+
for (const [name, workflow] of this.registeredWorkflows.entries()) {
|
|
87
|
+
tools.push({
|
|
88
|
+
name,
|
|
89
|
+
description: workflow.metadata.description || `Execute ${name} workflow`,
|
|
90
|
+
inputSchema: this.createWorkflowInputSchema(workflow)
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
return { tools };
|
|
94
|
+
});
|
|
95
|
+
// Execute tool
|
|
96
|
+
this.server.setRequestHandler(typesModule.CallToolRequestSchema, async (request) => {
|
|
97
|
+
// Security validation
|
|
98
|
+
try {
|
|
99
|
+
this.securityMiddleware.validateRequest(request);
|
|
100
|
+
}
|
|
101
|
+
catch (error) {
|
|
102
|
+
throw new Error(`Security validation failed: ${error instanceof Error ? error.message : 'Unknown error'}`);
|
|
103
|
+
}
|
|
104
|
+
const { name, arguments: args } = request.params;
|
|
105
|
+
// Sanitize and validate tool name
|
|
106
|
+
let sanitizedName;
|
|
107
|
+
try {
|
|
108
|
+
sanitizedName = security_1.SecurityManager.sanitizeToolName(name);
|
|
109
|
+
}
|
|
110
|
+
catch (error) {
|
|
111
|
+
throw new Error(`Invalid tool name: ${error instanceof Error ? error.message : 'Unknown error'}`);
|
|
112
|
+
}
|
|
113
|
+
// Check if it's a prompt or workflow
|
|
114
|
+
const isWorkflow = this.registeredWorkflows.has(sanitizedName);
|
|
115
|
+
const isPrompt = this.registeredTools.has(sanitizedName);
|
|
116
|
+
if (!isWorkflow && !isPrompt) {
|
|
117
|
+
throw new Error(`Tool '${sanitizedName}' not found`);
|
|
118
|
+
}
|
|
119
|
+
// Security: Check allowed tools
|
|
120
|
+
if (this.config.allowedTools && !this.config.allowedTools.includes(sanitizedName)) {
|
|
121
|
+
throw new Error(`Tool '${sanitizedName}' not allowed`);
|
|
122
|
+
}
|
|
123
|
+
// Security: Check request size
|
|
124
|
+
const requestSize = JSON.stringify(args).length;
|
|
125
|
+
if (this.config.maxRequestSize && requestSize > this.config.maxRequestSize) {
|
|
126
|
+
throw new Error('Request too large');
|
|
127
|
+
}
|
|
128
|
+
try {
|
|
129
|
+
if (isWorkflow) {
|
|
130
|
+
// Execute workflow
|
|
131
|
+
const workflow = this.registeredWorkflows.get(sanitizedName);
|
|
132
|
+
this.validateWorkflowParameters(workflow, args || {});
|
|
133
|
+
const result = await this.workflowExecutor.executeWorkflow(workflow, args || {});
|
|
134
|
+
if (result.success) {
|
|
135
|
+
return {
|
|
136
|
+
content: [
|
|
137
|
+
{
|
|
138
|
+
type: 'text',
|
|
139
|
+
text: result.result || 'Workflow completed successfully'
|
|
140
|
+
}
|
|
141
|
+
]
|
|
142
|
+
};
|
|
143
|
+
}
|
|
144
|
+
else {
|
|
145
|
+
return {
|
|
146
|
+
content: [
|
|
147
|
+
{
|
|
148
|
+
type: 'text',
|
|
149
|
+
text: `Workflow failed: ${result.error || 'Unknown error'}\nErrors: ${result.errors.map(e => `${e.nodeId}: ${e.message}`).join(', ')}`
|
|
150
|
+
}
|
|
151
|
+
]
|
|
152
|
+
};
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
else {
|
|
156
|
+
// Execute prompt
|
|
157
|
+
const prompd = this.registeredTools.get(sanitizedName);
|
|
158
|
+
this.validateParameters(prompd, args || {});
|
|
159
|
+
if (this.config.execute && this.executor) {
|
|
160
|
+
// Execute with LLM and return response
|
|
161
|
+
const result = await this.executeWithLLM(prompd, args || {});
|
|
162
|
+
return {
|
|
163
|
+
content: [
|
|
164
|
+
{
|
|
165
|
+
type: 'text',
|
|
166
|
+
text: result.response || result.error || 'No response'
|
|
167
|
+
}
|
|
168
|
+
]
|
|
169
|
+
};
|
|
170
|
+
}
|
|
171
|
+
else {
|
|
172
|
+
// Return rendered prompt template
|
|
173
|
+
const renderedPrompt = this.renderPrompt(prompd, args || {});
|
|
174
|
+
return {
|
|
175
|
+
content: [
|
|
176
|
+
{
|
|
177
|
+
type: 'text',
|
|
178
|
+
text: renderedPrompt
|
|
179
|
+
}
|
|
180
|
+
]
|
|
181
|
+
};
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
catch (error) {
|
|
186
|
+
throw new Error(`Tool execution failed: ${error instanceof Error ? error.message : 'Unknown error'}`);
|
|
187
|
+
}
|
|
188
|
+
});
|
|
189
|
+
}
|
|
190
|
+
createInputSchema(prompd) {
|
|
191
|
+
const properties = {};
|
|
192
|
+
const required = [];
|
|
193
|
+
// Add prompt parameters
|
|
194
|
+
const allParams = [
|
|
195
|
+
...(prompd.metadata.parameters || []),
|
|
196
|
+
...(prompd.metadata.variables || []) // Backward compatibility
|
|
197
|
+
];
|
|
198
|
+
for (const param of allParams) {
|
|
199
|
+
properties[param.name] = {
|
|
200
|
+
type: this.mapParameterType(param.type),
|
|
201
|
+
description: param.description
|
|
202
|
+
};
|
|
203
|
+
if (param.required) {
|
|
204
|
+
required.push(param.name);
|
|
205
|
+
}
|
|
206
|
+
// Add constraints
|
|
207
|
+
if (param.minimum !== undefined)
|
|
208
|
+
properties[param.name].minimum = param.minimum;
|
|
209
|
+
if (param.maximum !== undefined)
|
|
210
|
+
properties[param.name].maximum = param.maximum;
|
|
211
|
+
if (param.pattern)
|
|
212
|
+
properties[param.name].pattern = param.pattern;
|
|
213
|
+
if (param.enum)
|
|
214
|
+
properties[param.name].enum = param.enum;
|
|
215
|
+
}
|
|
216
|
+
// Add execution options if in hybrid mode
|
|
217
|
+
if (this.config.execute) {
|
|
218
|
+
properties.provider = {
|
|
219
|
+
type: 'string',
|
|
220
|
+
description: 'LLM provider to use',
|
|
221
|
+
enum: ['openai', 'anthropic', 'ollama']
|
|
222
|
+
};
|
|
223
|
+
properties.model = {
|
|
224
|
+
type: 'string',
|
|
225
|
+
description: 'Model to use for execution'
|
|
226
|
+
};
|
|
227
|
+
properties.execute = {
|
|
228
|
+
type: 'boolean',
|
|
229
|
+
description: 'Whether to execute with LLM or return template',
|
|
230
|
+
default: false
|
|
231
|
+
};
|
|
232
|
+
}
|
|
233
|
+
return {
|
|
234
|
+
type: 'object',
|
|
235
|
+
properties,
|
|
236
|
+
required,
|
|
237
|
+
additionalProperties: false
|
|
238
|
+
};
|
|
239
|
+
}
|
|
240
|
+
mapParameterType(type) {
|
|
241
|
+
switch (type) {
|
|
242
|
+
case 'string': return 'string';
|
|
243
|
+
case 'number': return 'number';
|
|
244
|
+
case 'boolean': return 'boolean';
|
|
245
|
+
case 'array': return 'array';
|
|
246
|
+
case 'object': return 'object';
|
|
247
|
+
default: return 'string';
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
validateParameters(prompd, args) {
|
|
251
|
+
const allParams = [
|
|
252
|
+
...(prompd.metadata.parameters || []),
|
|
253
|
+
...(prompd.metadata.variables || [])
|
|
254
|
+
];
|
|
255
|
+
for (const param of allParams) {
|
|
256
|
+
const value = args[param.name];
|
|
257
|
+
// Check required parameters
|
|
258
|
+
if (param.required && (value === undefined || value === null)) {
|
|
259
|
+
throw new Error(`Required parameter missing: ${param.name}`);
|
|
260
|
+
}
|
|
261
|
+
if (value !== undefined) {
|
|
262
|
+
// Type validation
|
|
263
|
+
if (!this.validateParameterType(value, param.type)) {
|
|
264
|
+
throw new Error(`Invalid type for parameter '${param.name}': expected ${param.type}`);
|
|
265
|
+
}
|
|
266
|
+
// Pattern validation for strings
|
|
267
|
+
if (param.pattern && typeof value === 'string') {
|
|
268
|
+
if (!new RegExp(param.pattern).test(value)) {
|
|
269
|
+
throw new Error(`Parameter '${param.name}' does not match pattern: ${param.pattern}`);
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
// Range validation for numbers
|
|
273
|
+
if (typeof value === 'number') {
|
|
274
|
+
if (param.minimum !== undefined && value < param.minimum) {
|
|
275
|
+
throw new Error(`Parameter '${param.name}' below minimum: ${param.minimum}`);
|
|
276
|
+
}
|
|
277
|
+
if (param.maximum !== undefined && value > param.maximum) {
|
|
278
|
+
throw new Error(`Parameter '${param.name}' above maximum: ${param.maximum}`);
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
// Enum validation
|
|
282
|
+
if (param.enum && !param.enum.includes(value)) {
|
|
283
|
+
throw new Error(`Parameter '${param.name}' not in allowed values: ${param.enum.join(', ')}`);
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
validateParameterType(value, expectedType) {
|
|
289
|
+
switch (expectedType) {
|
|
290
|
+
case 'string': return typeof value === 'string';
|
|
291
|
+
case 'number': return typeof value === 'number';
|
|
292
|
+
case 'boolean': return typeof value === 'boolean';
|
|
293
|
+
case 'array': return Array.isArray(value);
|
|
294
|
+
case 'object': return typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
295
|
+
default: return true;
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
renderPrompt(prompd, args) {
|
|
299
|
+
let rendered = prompd.content;
|
|
300
|
+
// Apply defaults for missing parameters
|
|
301
|
+
const allParams = [
|
|
302
|
+
...(prompd.metadata.parameters || []),
|
|
303
|
+
...(prompd.metadata.variables || [])
|
|
304
|
+
];
|
|
305
|
+
const finalArgs = { ...args };
|
|
306
|
+
for (const param of allParams) {
|
|
307
|
+
if (finalArgs[param.name] === undefined && param.default !== undefined) {
|
|
308
|
+
finalArgs[param.name] = param.default;
|
|
309
|
+
}
|
|
310
|
+
}
|
|
311
|
+
// Simple parameter substitution
|
|
312
|
+
for (const [key, value] of Object.entries(finalArgs)) {
|
|
313
|
+
const placeholder = `{${key}}`;
|
|
314
|
+
rendered = rendered.replace(new RegExp(placeholder, 'g'), String(value));
|
|
315
|
+
}
|
|
316
|
+
return rendered;
|
|
317
|
+
}
|
|
318
|
+
async executeWithLLM(prompd, args) {
|
|
319
|
+
if (!this.executor) {
|
|
320
|
+
throw new Error('Executor not initialized');
|
|
321
|
+
}
|
|
322
|
+
// Create secure temporary file for execution
|
|
323
|
+
const tempFile = security_1.SecurityManager.createSecureTempPath('prompd-exec', '.prmd');
|
|
324
|
+
const prompdContent = this.reconstructPrompdFile(prompd);
|
|
325
|
+
// Create secure execution context
|
|
326
|
+
const { tempDir, cleanup } = await security_1.SecurityManager.createSecureExecutionContext();
|
|
327
|
+
try {
|
|
328
|
+
// Ensure temp directory exists
|
|
329
|
+
await fs.ensureDir(path.dirname(tempFile));
|
|
330
|
+
// Write with restrictive permissions
|
|
331
|
+
await fs.writeFile(tempFile, prompdContent, { mode: 0o600 });
|
|
332
|
+
const executeOptions = {
|
|
333
|
+
provider: this.config.provider || 'openai',
|
|
334
|
+
model: this.config.model || 'gpt-4',
|
|
335
|
+
apiKey: this.config.apiKey,
|
|
336
|
+
params: security_1.SecurityManager.sanitizeParameters(args)
|
|
337
|
+
};
|
|
338
|
+
const result = await this.executor.execute(tempFile, executeOptions);
|
|
339
|
+
return result;
|
|
340
|
+
}
|
|
341
|
+
finally {
|
|
342
|
+
// Clean up temp files and directory
|
|
343
|
+
try {
|
|
344
|
+
await fs.remove(tempFile);
|
|
345
|
+
await cleanup();
|
|
346
|
+
}
|
|
347
|
+
catch (error) {
|
|
348
|
+
console.warn('Failed to cleanup temporary files:', error);
|
|
349
|
+
}
|
|
350
|
+
}
|
|
351
|
+
}
|
|
352
|
+
reconstructPrompdFile(prompd) {
|
|
353
|
+
const yaml = require('yaml');
|
|
354
|
+
const frontmatter = yaml.stringify(prompd.metadata);
|
|
355
|
+
return `---\n${frontmatter}---\n\n${prompd.content}`;
|
|
356
|
+
}
|
|
357
|
+
async registerTool(name, prompdFile) {
|
|
358
|
+
try {
|
|
359
|
+
// Security validation
|
|
360
|
+
const sanitizedName = security_1.SecurityManager.sanitizeToolName(name);
|
|
361
|
+
const validatedPath = security_1.SecurityManager.validateFilePath(prompdFile, ['.prmd']);
|
|
362
|
+
// Validate file size
|
|
363
|
+
await security_1.SecurityManager.validateFileSize(validatedPath);
|
|
364
|
+
const prompd = await this.parser.parseFile(validatedPath);
|
|
365
|
+
this.registeredTools.set(sanitizedName, prompd);
|
|
366
|
+
}
|
|
367
|
+
catch (error) {
|
|
368
|
+
throw new Error(`Failed to register tool '${name}': ${error instanceof Error ? error.message : 'Unknown error'}`);
|
|
369
|
+
}
|
|
370
|
+
}
|
|
371
|
+
async registerDirectory(directory) {
|
|
372
|
+
// Register .prmd files
|
|
373
|
+
const prompdPattern = path.join(directory, '**/*.prmd');
|
|
374
|
+
const prompdFiles = glob.sync(prompdPattern);
|
|
375
|
+
for (const file of prompdFiles) {
|
|
376
|
+
try {
|
|
377
|
+
const prompd = await this.parser.parseFile(file);
|
|
378
|
+
const toolName = prompd.metadata.name || path.basename(file, '.prmd');
|
|
379
|
+
this.registeredTools.set(toolName, prompd);
|
|
380
|
+
}
|
|
381
|
+
catch (error) {
|
|
382
|
+
console.warn(`Skipping invalid prompd file ${file}: ${error instanceof Error ? error.message : 'Unknown error'}`);
|
|
383
|
+
}
|
|
384
|
+
}
|
|
385
|
+
// Register .prmdflow files
|
|
386
|
+
const workflowPattern = path.join(directory, '**/*.prmdflow');
|
|
387
|
+
const workflowFiles = glob.sync(workflowPattern);
|
|
388
|
+
for (const file of workflowFiles) {
|
|
389
|
+
try {
|
|
390
|
+
const workflow = await this.workflowExecutor.loadWorkflow(file);
|
|
391
|
+
const toolName = workflow.metadata.name || path.basename(file, '.prmdflow');
|
|
392
|
+
this.registeredWorkflows.set(toolName, workflow);
|
|
393
|
+
}
|
|
394
|
+
catch (error) {
|
|
395
|
+
console.warn(`Skipping invalid workflow file ${file}: ${error instanceof Error ? error.message : 'Unknown error'}`);
|
|
396
|
+
}
|
|
397
|
+
}
|
|
398
|
+
}
|
|
399
|
+
async start() {
|
|
400
|
+
// Initialize MCP components first
|
|
401
|
+
await this.initializeMCP();
|
|
402
|
+
// Dynamic import for transport
|
|
403
|
+
const stdioModule = await Promise.resolve().then(() => __importStar(require('@modelcontextprotocol/sdk/server/stdio.js')));
|
|
404
|
+
const transport = new stdioModule.StdioServerTransport();
|
|
405
|
+
await this.server.connect(transport);
|
|
406
|
+
}
|
|
407
|
+
async stop() {
|
|
408
|
+
// Close the server connection
|
|
409
|
+
process.exit(0);
|
|
410
|
+
}
|
|
411
|
+
getRegisteredTools() {
|
|
412
|
+
const tools = Array.from(this.registeredTools.keys());
|
|
413
|
+
const workflows = Array.from(this.registeredWorkflows.keys());
|
|
414
|
+
return [...tools, ...workflows];
|
|
415
|
+
}
|
|
416
|
+
getRegisteredPrompts() {
|
|
417
|
+
return Array.from(this.registeredTools.keys());
|
|
418
|
+
}
|
|
419
|
+
getRegisteredWorkflows() {
|
|
420
|
+
return Array.from(this.registeredWorkflows.keys());
|
|
421
|
+
}
|
|
422
|
+
async registerWorkflow(name, workflowFile) {
|
|
423
|
+
try {
|
|
424
|
+
// Security validation
|
|
425
|
+
const sanitizedName = security_1.SecurityManager.sanitizeToolName(name);
|
|
426
|
+
const validatedPath = security_1.SecurityManager.validateFilePath(workflowFile, ['.prmdflow', '.json', '.yaml', '.yml']);
|
|
427
|
+
// Validate file size
|
|
428
|
+
await security_1.SecurityManager.validateFileSize(validatedPath);
|
|
429
|
+
const workflow = await this.workflowExecutor.loadWorkflow(validatedPath);
|
|
430
|
+
// Validate workflow complexity and security
|
|
431
|
+
security_1.SecurityManager.validateWorkflowComplexity(workflow);
|
|
432
|
+
this.registeredWorkflows.set(sanitizedName, workflow);
|
|
433
|
+
}
|
|
434
|
+
catch (error) {
|
|
435
|
+
throw new Error(`Failed to register workflow '${name}': ${error instanceof Error ? error.message : 'Unknown error'}`);
|
|
436
|
+
}
|
|
437
|
+
}
|
|
438
|
+
createWorkflowInputSchema(workflow) {
|
|
439
|
+
const properties = {};
|
|
440
|
+
const required = [];
|
|
441
|
+
// Get workflow parameters
|
|
442
|
+
const parameters = this.workflowExecutor.getWorkflowParameters(workflow);
|
|
443
|
+
for (const param of parameters) {
|
|
444
|
+
properties[param.name] = {
|
|
445
|
+
type: this.mapParameterType(param.type),
|
|
446
|
+
description: param.description
|
|
447
|
+
};
|
|
448
|
+
if (param.required) {
|
|
449
|
+
required.push(param.name);
|
|
450
|
+
}
|
|
451
|
+
}
|
|
452
|
+
return {
|
|
453
|
+
type: 'object',
|
|
454
|
+
properties,
|
|
455
|
+
required,
|
|
456
|
+
additionalProperties: false
|
|
457
|
+
};
|
|
458
|
+
}
|
|
459
|
+
validateWorkflowParameters(workflow, args) {
|
|
460
|
+
const parameters = this.workflowExecutor.getWorkflowParameters(workflow);
|
|
461
|
+
for (const param of parameters) {
|
|
462
|
+
const value = args[param.name];
|
|
463
|
+
// Check required parameters
|
|
464
|
+
if (param.required && (value === undefined || value === null)) {
|
|
465
|
+
throw new Error(`Required parameter missing: ${param.name}`);
|
|
466
|
+
}
|
|
467
|
+
if (value !== undefined) {
|
|
468
|
+
// Type validation
|
|
469
|
+
if (!this.validateParameterType(value, param.type)) {
|
|
470
|
+
throw new Error(`Invalid type for parameter '${param.name}': expected ${param.type}`);
|
|
471
|
+
}
|
|
472
|
+
}
|
|
473
|
+
}
|
|
474
|
+
}
|
|
475
|
+
}
|
|
476
|
+
exports.PrompdMCPServer = PrompdMCPServer;
|
|
477
|
+
//# sourceMappingURL=mcp.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp.js","sourceRoot":"","sources":["../../src/lib/mcp.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,6CAA+B;AAC/B,2CAA6B;AAC7B,2CAA6B;AAC7B,qCAAwC;AACxC,yCAA4C;AAE5C,yCAAiF;AACjF,yCAAoE;AAcpE,MAAa,eAAe;IAW1B,YAAY,MAAuB;QACjC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,MAAM,GAAG,IAAI,qBAAY,EAAE,CAAC;QACjC,IAAI,CAAC,gBAAgB,GAAG,IAAI,2BAAgB,EAAE,CAAC;QAC/C,IAAI,CAAC,eAAe,GAAG,IAAI,GAAG,EAAE,CAAC;QACjC,IAAI,CAAC,mBAAmB,GAAG,IAAI,GAAG,EAAE,CAAC;QACrC,IAAI,CAAC,kBAAkB,GAAG,IAAI,gCAAqB,EAAE,CAAC;QAEtD,8CAA8C;QAC9C,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACnB,IAAI,CAAC,QAAQ,GAAG,IAAI,yBAAc,EAAE,CAAC;QACvC,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,aAAa;QACzB,4BAA4B;QAC5B,MAAM,YAAY,GAAG,wDAAa,2CAA2C,GAAC,CAAC;QAE/E,wBAAwB;QACxB,IAAI,CAAC,MAAM,GAAG,IAAI,YAAY,CAAC,MAAM,CAAC;YACpC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,mBAAmB;YAC7C,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,OAAO;SACxC,EAAE;YACD,YAAY,EAAE;gBACZ,KAAK,EAAE,EAAE;aACV;SACF,CAAC,CAAC;QAEH,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;IAC7B,CAAC;IAEO,KAAK,CAAC,aAAa;QACzB,6BAA6B;QAC7B,MAAM,WAAW,GAAG,wDAAa,oCAAoC,GAAC,CAAC;QAEvE,uBAAuB;QACvB,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,WAAW,CAAC,sBAAsB,EAAE,KAAK,IAAI,EAAE;YAC3E,MAAM,KAAK,GAAG,EAAE,CAAC;YAEjB,mBAAmB;YACnB,KAAK,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,EAAE,CAAC;gBAC5D,KAAK,CAAC,IAAI,CAAC;oBACT,IAAI;oBACJ,WAAW,EAAE,MAAM,CAAC,QAAQ,CAAC,WAAW,IAAI,WAAW,IAAI,SAAS;oBACpE,WAAW,EAAE,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC;iBAC5C,CAAC,CAAC;YACL,CAAC;YAED,qBAAqB;YACrB,KAAK,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE,EAAE,CAAC;gBAClE,KAAK,CAAC,IAAI,CAAC;oBACT,IAAI;oBACJ,WAAW,EAAE,QAAQ,CAAC,QAAQ,CAAC,WAAW,IAAI,WAAW,IAAI,WAAW;oBACxE,WAAW,EAAE,IAAI,CAAC,yBAAyB,CAAC,QAAQ,CAAC;iBACtD,CAAC,CAAC;YACL,CAAC;YAED,OAAO,EAAE,KAAK,EAAE,CAAC;QACnB,CAAC,CAAC,CAAC;QAEH,eAAe;QACf,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,WAAW,CAAC,qBAAqB,EAAE,KAAK,EAAE,OAAY,EAAE,EAAE;YACtF,sBAAsB;YACtB,IAAI,CAAC;gBACH,IAAI,CAAC,kBAAkB,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;YACnD,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,IAAI,KAAK,CAAC,+BAA+B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC;YAC7G,CAAC;YAED,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;YAEjD,kCAAkC;YAClC,IAAI,aAAqB,CAAC;YAC1B,IAAI,CAAC;gBACH,aAAa,GAAG,0BAAe,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;YACzD,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,IAAI,KAAK,CAAC,sBAAsB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC;YACpG,CAAC;YAED,qCAAqC;YACrC,MAAM,UAAU,GAAG,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;YAC/D,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;YAEzD,IAAI,CAAC,UAAU,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAC7B,MAAM,IAAI,KAAK,CAAC,SAAS,aAAa,aAAa,CAAC,CAAC;YACvD,CAAC;YAED,gCAAgC;YAChC,IAAI,IAAI,CAAC,MAAM,CAAC,YAAY,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;gBAClF,MAAM,IAAI,KAAK,CAAC,SAAS,aAAa,eAAe,CAAC,CAAC;YACzD,CAAC;YAED,+BAA+B;YAC/B,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;YAChD,IAAI,IAAI,CAAC,MAAM,CAAC,cAAc,IAAI,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;gBAC3E,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;YACvC,CAAC;YAED,IAAI,CAAC;gBACH,IAAI,UAAU,EAAE,CAAC;oBACf,mBAAmB;oBACnB,MAAM,QAAQ,GAAG,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,aAAa,CAAE,CAAC;oBAC9D,IAAI,CAAC,0BAA0B,CAAC,QAAQ,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC;oBAEtD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,eAAe,CAAC,QAAQ,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC;oBAEjF,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;wBACnB,OAAO;4BACL,OAAO,EAAE;gCACP;oCACE,IAAI,EAAE,MAAM;oCACZ,IAAI,EAAE,MAAM,CAAC,MAAM,IAAI,iCAAiC;iCACzD;6BACF;yBACF,CAAC;oBACJ,CAAC;yBAAM,CAAC;wBACN,OAAO;4BACL,OAAO,EAAE;gCACP;oCACE,IAAI,EAAE,MAAM;oCACZ,IAAI,EAAE,oBAAoB,MAAM,CAAC,KAAK,IAAI,eAAe,aAAa,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;iCACvI;6BACF;yBACF,CAAC;oBACJ,CAAC;gBACH,CAAC;qBAAM,CAAC;oBACN,iBAAiB;oBACjB,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,aAAa,CAAE,CAAC;oBACxD,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC;oBAE5C,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;wBACzC,uCAAuC;wBACvC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC;wBAC7D,OAAO;4BACL,OAAO,EAAE;gCACP;oCACE,IAAI,EAAE,MAAM;oCACZ,IAAI,EAAE,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,KAAK,IAAI,aAAa;iCACvD;6BACF;yBACF,CAAC;oBACJ,CAAC;yBAAM,CAAC;wBACN,kCAAkC;wBAClC,MAAM,cAAc,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC;wBAC7D,OAAO;4BACL,OAAO,EAAE;gCACP;oCACE,IAAI,EAAE,MAAM;oCACZ,IAAI,EAAE,cAAc;iCACrB;6BACF;yBACF,CAAC;oBACJ,CAAC;gBACH,CAAC;YACH,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,IAAI,KAAK,CAAC,0BAA0B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC;YACxG,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,iBAAiB,CAAC,MAAkB;QAC1C,MAAM,UAAU,GAAwB,EAAE,CAAC;QAC3C,MAAM,QAAQ,GAAa,EAAE,CAAC;QAE9B,wBAAwB;QACxB,MAAM,SAAS,GAAG;YAChB,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,IAAI,EAAE,CAAC;YACrC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,yBAAyB;SAC/D,CAAC;QAEF,KAAK,MAAM,KAAK,IAAI,SAAS,EAAE,CAAC;YAC9B,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG;gBACvB,IAAI,EAAE,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,IAAI,CAAC;gBACvC,WAAW,EAAE,KAAK,CAAC,WAAW;aAC/B,CAAC;YAEF,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;gBACnB,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC5B,CAAC;YAED,kBAAkB;YAClB,IAAI,KAAK,CAAC,OAAO,KAAK,SAAS;gBAAE,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;YAChF,IAAI,KAAK,CAAC,OAAO,KAAK,SAAS;gBAAE,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;YAChF,IAAI,KAAK,CAAC,OAAO;gBAAE,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;YAClE,IAAI,KAAK,CAAC,IAAI;gBAAE,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;QAC3D,CAAC;QAED,0CAA0C;QAC1C,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACxB,UAAU,CAAC,QAAQ,GAAG;gBACpB,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,qBAAqB;gBAClC,IAAI,EAAE,CAAC,QAAQ,EAAE,WAAW,EAAE,QAAQ,CAAC;aACxC,CAAC;YACF,UAAU,CAAC,KAAK,GAAG;gBACjB,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,4BAA4B;aAC1C,CAAC;YACF,UAAU,CAAC,OAAO,GAAG;gBACnB,IAAI,EAAE,SAAS;gBACf,WAAW,EAAE,gDAAgD;gBAC7D,OAAO,EAAE,KAAK;aACf,CAAC;QACJ,CAAC;QAED,OAAO;YACL,IAAI,EAAE,QAAQ;YACd,UAAU;YACV,QAAQ;YACR,oBAAoB,EAAE,KAAK;SAC5B,CAAC;IACJ,CAAC;IAEO,gBAAgB,CAAC,IAAY;QACnC,QAAQ,IAAI,EAAE,CAAC;YACb,KAAK,QAAQ,CAAC,CAAC,OAAO,QAAQ,CAAC;YAC/B,KAAK,QAAQ,CAAC,CAAC,OAAO,QAAQ,CAAC;YAC/B,KAAK,SAAS,CAAC,CAAC,OAAO,SAAS,CAAC;YACjC,KAAK,OAAO,CAAC,CAAC,OAAO,OAAO,CAAC;YAC7B,KAAK,QAAQ,CAAC,CAAC,OAAO,QAAQ,CAAC;YAC/B,OAAO,CAAC,CAAC,OAAO,QAAQ,CAAC;QAC3B,CAAC;IACH,CAAC;IAEO,kBAAkB,CAAC,MAAkB,EAAE,IAAyB;QACtE,MAAM,SAAS,GAAG;YAChB,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,IAAI,EAAE,CAAC;YACrC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,IAAI,EAAE,CAAC;SACrC,CAAC;QAEF,KAAK,MAAM,KAAK,IAAI,SAAS,EAAE,CAAC;YAC9B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAE/B,4BAA4B;YAC5B,IAAI,KAAK,CAAC,QAAQ,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC;gBAC9D,MAAM,IAAI,KAAK,CAAC,+BAA+B,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;YAC/D,CAAC;YAED,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;gBACxB,kBAAkB;gBAClB,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;oBACnD,MAAM,IAAI,KAAK,CAAC,+BAA+B,KAAK,CAAC,IAAI,eAAe,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;gBACxF,CAAC;gBAED,iCAAiC;gBACjC,IAAI,KAAK,CAAC,OAAO,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;oBAC/C,IAAI,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;wBAC3C,MAAM,IAAI,KAAK,CAAC,cAAc,KAAK,CAAC,IAAI,6BAA6B,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;oBACxF,CAAC;gBACH,CAAC;gBAED,+BAA+B;gBAC/B,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;oBAC9B,IAAI,KAAK,CAAC,OAAO,KAAK,SAAS,IAAI,KAAK,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC;wBACzD,MAAM,IAAI,KAAK,CAAC,cAAc,KAAK,CAAC,IAAI,oBAAoB,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;oBAC/E,CAAC;oBACD,IAAI,KAAK,CAAC,OAAO,KAAK,SAAS,IAAI,KAAK,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC;wBACzD,MAAM,IAAI,KAAK,CAAC,cAAc,KAAK,CAAC,IAAI,oBAAoB,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;oBAC/E,CAAC;gBACH,CAAC;gBAED,kBAAkB;gBAClB,IAAI,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;oBAC9C,MAAM,IAAI,KAAK,CAAC,cAAc,KAAK,CAAC,IAAI,4BAA4B,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBAC/F,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAEO,qBAAqB,CAAC,KAAU,EAAE,YAAoB;QAC5D,QAAQ,YAAY,EAAE,CAAC;YACrB,KAAK,QAAQ,CAAC,CAAC,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC;YAChD,KAAK,QAAQ,CAAC,CAAC,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC;YAChD,KAAK,SAAS,CAAC,CAAC,OAAO,OAAO,KAAK,KAAK,SAAS,CAAC;YAClD,KAAK,OAAO,CAAC,CAAC,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YAC1C,KAAK,QAAQ,CAAC,CAAC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YAC3F,OAAO,CAAC,CAAC,OAAO,IAAI,CAAC;QACvB,CAAC;IACH,CAAC;IAEO,YAAY,CAAC,MAAkB,EAAE,IAAyB;QAChE,IAAI,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC;QAE9B,wCAAwC;QACxC,MAAM,SAAS,GAAG;YAChB,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,IAAI,EAAE,CAAC;YACrC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,IAAI,EAAE,CAAC;SACrC,CAAC;QAEF,MAAM,SAAS,GAAG,EAAE,GAAG,IAAI,EAAE,CAAC;QAC9B,KAAK,MAAM,KAAK,IAAI,SAAS,EAAE,CAAC;YAC9B,IAAI,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,SAAS,IAAI,KAAK,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;gBACvE,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC;YACxC,CAAC;QACH,CAAC;QAED,gCAAgC;QAChC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;YACrD,MAAM,WAAW,GAAG,IAAI,GAAG,GAAG,CAAC;YAC/B,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,WAAW,EAAE,GAAG,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QAC3E,CAAC;QAED,OAAO,QAAQ,CAAC;IAClB,CAAC;IAEO,KAAK,CAAC,cAAc,CAAC,MAAkB,EAAE,IAAyB;QACxE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnB,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;QAC9C,CAAC;QAED,6CAA6C;QAC7C,MAAM,QAAQ,GAAG,0BAAe,CAAC,oBAAoB,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;QAC9E,MAAM,aAAa,GAAG,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC;QAEzD,kCAAkC;QAClC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,MAAM,0BAAe,CAAC,4BAA4B,EAAE,CAAC;QAElF,IAAI,CAAC;YACH,+BAA+B;YAC/B,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;YAE3C,qCAAqC;YACrC,MAAM,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,aAAa,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;YAE7D,MAAM,cAAc,GAAG;gBACrB,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,QAAQ;gBAC1C,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,OAAO;gBACnC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM;gBAC1B,MAAM,EAAE,0BAAe,CAAC,kBAAkB,CAAC,IAAI,CAAC;aACjD,CAAC;YACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;YAErE,OAAO,MAAM,CAAC;QAChB,CAAC;gBAAS,CAAC;YACT,oCAAoC;YACpC,IAAI,CAAC;gBACH,MAAM,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;gBAC1B,MAAM,OAAO,EAAE,CAAC;YAClB,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,IAAI,CAAC,oCAAoC,EAAE,KAAK,CAAC,CAAC;YAC5D,CAAC;QACH,CAAC;IACH,CAAC;IAEO,qBAAqB,CAAC,MAAkB;QAC9C,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;QAC7B,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QACpD,OAAO,QAAQ,WAAW,UAAU,MAAM,CAAC,OAAO,EAAE,CAAC;IACvD,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,IAAY,EAAE,UAAkB;QACjD,IAAI,CAAC;YACH,sBAAsB;YACtB,MAAM,aAAa,GAAG,0BAAe,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;YAC7D,MAAM,aAAa,GAAG,0BAAe,CAAC,gBAAgB,CAAC,UAAU,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;YAE9E,qBAAqB;YACrB,MAAM,0BAAe,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC;YAEtD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;YAC1D,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;QAClD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,4BAA4B,IAAI,MAAM,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC;QACpH,CAAC;IACH,CAAC;IAED,KAAK,CAAC,iBAAiB,CAAC,SAAiB;QACvC,uBAAuB;QACvB,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;QACxD,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAE7C,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;YAC/B,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;gBACjD,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;gBACtE,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;YAC7C,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,IAAI,CAAC,gCAAgC,IAAI,KAAK,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC;YACpH,CAAC;QACH,CAAC;QAED,2BAA2B;QAC3B,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC;QAC9D,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAEjD,KAAK,MAAM,IAAI,IAAI,aAAa,EAAE,CAAC;YACjC,IAAI,CAAC;gBACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;gBAChE,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;gBAC5E,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;YACnD,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,IAAI,CAAC,kCAAkC,IAAI,KAAK,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC;YACtH,CAAC;QACH,CAAC;IACH,CAAC;IAED,KAAK,CAAC,KAAK;QACT,kCAAkC;QAClC,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;QAE3B,+BAA+B;QAC/B,MAAM,WAAW,GAAG,wDAAa,2CAA2C,GAAC,CAAC;QAC9E,MAAM,SAAS,GAAG,IAAI,WAAW,CAAC,oBAAoB,EAAE,CAAC;QACzD,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACvC,CAAC;IAED,KAAK,CAAC,IAAI;QACR,8BAA8B;QAC9B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,kBAAkB;QAChB,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC,CAAC;QACtD,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE,CAAC,CAAC;QAC9D,OAAO,CAAC,GAAG,KAAK,EAAE,GAAG,SAAS,CAAC,CAAC;IAClC,CAAC;IAED,oBAAoB;QAClB,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC,CAAC;IACjD,CAAC;IAED,sBAAsB;QACpB,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE,CAAC,CAAC;IACrD,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,IAAY,EAAE,YAAoB;QACvD,IAAI,CAAC;YACH,sBAAsB;YACtB,MAAM,aAAa,GAAG,0BAAe,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;YAC7D,MAAM,aAAa,GAAG,0BAAe,CAAC,gBAAgB,CAAC,YAAY,EAAE,CAAC,WAAW,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;YAE9G,qBAAqB;YACrB,MAAM,0BAAe,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC;YAEtD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC;YAEzE,4CAA4C;YAC5C,0BAAe,CAAC,0BAA0B,CAAC,QAAQ,CAAC,CAAC;YAErD,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;QACxD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,gCAAgC,IAAI,MAAM,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC;QACxH,CAAC;IACH,CAAC;IAEO,yBAAyB,CAAC,QAA4B;QAC5D,MAAM,UAAU,GAAwB,EAAE,CAAC;QAC3C,MAAM,QAAQ,GAAa,EAAE,CAAC;QAE9B,0BAA0B;QAC1B,MAAM,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAC;QAEzE,KAAK,MAAM,KAAK,IAAI,UAAU,EAAE,CAAC;YAC/B,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG;gBACvB,IAAI,EAAE,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,IAAI,CAAC;gBACvC,WAAW,EAAE,KAAK,CAAC,WAAW;aAC/B,CAAC;YAEF,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;gBACnB,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC5B,CAAC;QACH,CAAC;QAED,OAAO;YACL,IAAI,EAAE,QAAQ;YACd,UAAU;YACV,QAAQ;YACR,oBAAoB,EAAE,KAAK;SAC5B,CAAC;IACJ,CAAC;IAEO,0BAA0B,CAAC,QAA4B,EAAE,IAAyB;QACxF,MAAM,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAC;QAEzE,KAAK,MAAM,KAAK,IAAI,UAAU,EAAE,CAAC;YAC/B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAE/B,4BAA4B;YAC5B,IAAI,KAAK,CAAC,QAAQ,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC;gBAC9D,MAAM,IAAI,KAAK,CAAC,+BAA+B,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;YAC/D,CAAC;YAED,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;gBACxB,kBAAkB;gBAClB,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;oBACnD,MAAM,IAAI,KAAK,CAAC,+BAA+B,KAAK,CAAC,IAAI,eAAe,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;gBACxF,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;CACF;AArfD,0CAqfC"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Model List Updater - Fetches latest model lists from providers
|
|
3
|
+
* Keeps our hardcoded model lists current with provider APIs
|
|
4
|
+
*/
|
|
5
|
+
export interface ModelInfo {
|
|
6
|
+
id: string;
|
|
7
|
+
name: string;
|
|
8
|
+
provider: string;
|
|
9
|
+
contextLength?: number;
|
|
10
|
+
inputCost?: number;
|
|
11
|
+
outputCost?: number;
|
|
12
|
+
deprecated?: boolean;
|
|
13
|
+
description?: string;
|
|
14
|
+
}
|
|
15
|
+
export interface ProviderModels {
|
|
16
|
+
provider: string;
|
|
17
|
+
models: ModelInfo[];
|
|
18
|
+
lastUpdated: string;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Current model lists based on latest provider APIs
|
|
22
|
+
* Updated: January 2025
|
|
23
|
+
*/
|
|
24
|
+
export declare const CURRENT_MODELS: Record<string, ProviderModels>;
|
|
25
|
+
/**
|
|
26
|
+
* Get models for a specific provider
|
|
27
|
+
*/
|
|
28
|
+
export declare function getModelsForProvider(provider: string): ModelInfo[];
|
|
29
|
+
/**
|
|
30
|
+
* Get all available models across providers
|
|
31
|
+
*/
|
|
32
|
+
export declare function getAllModels(): ModelInfo[];
|
|
33
|
+
/**
|
|
34
|
+
* Get recommended models for different use cases
|
|
35
|
+
*/
|
|
36
|
+
export declare function getRecommendedModels(): {
|
|
37
|
+
fastest: string[];
|
|
38
|
+
balanced: string[];
|
|
39
|
+
'most-capable': string[];
|
|
40
|
+
'cost-effective': string[];
|
|
41
|
+
coding: string[];
|
|
42
|
+
};
|
|
43
|
+
/**
|
|
44
|
+
* Validate if a model ID is currently supported
|
|
45
|
+
*/
|
|
46
|
+
export declare function isValidModel(modelId: string, provider?: string): boolean;
|
|
47
|
+
/**
|
|
48
|
+
* Get model information by ID
|
|
49
|
+
*/
|
|
50
|
+
export declare function getModelInfo(modelId: string): ModelInfo | null;
|
|
51
|
+
//# sourceMappingURL=model-updater.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model-updater.d.ts","sourceRoot":"","sources":["../../src/lib/model-updater.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,SAAS,EAAE,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;;GAGG;AACH,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAyMzD,CAAC;AAEF;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,EAAE,CAGlE;AAED;;GAEG;AACH,wBAAgB,YAAY,IAAI,SAAS,EAAE,CAE1C;AAED;;GAEG;AACH,wBAAgB,oBAAoB;;;;;;EA4BnC;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAQxE;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAG9D"}
|