@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.
Files changed (223) hide show
  1. package/README.md +162 -0
  2. package/bin/prompd.js +23 -0
  3. package/dist/commands/cache.d.ts +3 -0
  4. package/dist/commands/cache.d.ts.map +1 -0
  5. package/dist/commands/cache.js +199 -0
  6. package/dist/commands/cache.js.map +1 -0
  7. package/dist/commands/compile.d.ts +9 -0
  8. package/dist/commands/compile.d.ts.map +1 -0
  9. package/dist/commands/compile.js +104 -0
  10. package/dist/commands/compile.js.map +1 -0
  11. package/dist/commands/config.d.ts +7 -0
  12. package/dist/commands/config.d.ts.map +1 -0
  13. package/dist/commands/config.js +212 -0
  14. package/dist/commands/config.js.map +1 -0
  15. package/dist/commands/create.d.ts +3 -0
  16. package/dist/commands/create.d.ts.map +1 -0
  17. package/dist/commands/create.js +183 -0
  18. package/dist/commands/create.js.map +1 -0
  19. package/dist/commands/deps.d.ts +3 -0
  20. package/dist/commands/deps.d.ts.map +1 -0
  21. package/dist/commands/deps.js +192 -0
  22. package/dist/commands/deps.js.map +1 -0
  23. package/dist/commands/explain.d.ts +3 -0
  24. package/dist/commands/explain.d.ts.map +1 -0
  25. package/dist/commands/explain.js +227 -0
  26. package/dist/commands/explain.js.map +1 -0
  27. package/dist/commands/git.d.ts +3 -0
  28. package/dist/commands/git.d.ts.map +1 -0
  29. package/dist/commands/git.js +306 -0
  30. package/dist/commands/git.js.map +1 -0
  31. package/dist/commands/init.d.ts +3 -0
  32. package/dist/commands/init.d.ts.map +1 -0
  33. package/dist/commands/init.js +177 -0
  34. package/dist/commands/init.js.map +1 -0
  35. package/dist/commands/list.d.ts +3 -0
  36. package/dist/commands/list.d.ts.map +1 -0
  37. package/dist/commands/list.js +126 -0
  38. package/dist/commands/list.js.map +1 -0
  39. package/dist/commands/mcp.d.ts +3 -0
  40. package/dist/commands/mcp.d.ts.map +1 -0
  41. package/dist/commands/mcp.js +326 -0
  42. package/dist/commands/mcp.js.map +1 -0
  43. package/dist/commands/namespace.d.ts +3 -0
  44. package/dist/commands/namespace.d.ts.map +1 -0
  45. package/dist/commands/namespace.js +113 -0
  46. package/dist/commands/namespace.js.map +1 -0
  47. package/dist/commands/package.d.ts +23 -0
  48. package/dist/commands/package.d.ts.map +1 -0
  49. package/dist/commands/package.js +746 -0
  50. package/dist/commands/package.js.map +1 -0
  51. package/dist/commands/provider.d.ts +3 -0
  52. package/dist/commands/provider.d.ts.map +1 -0
  53. package/dist/commands/provider.js +285 -0
  54. package/dist/commands/provider.js.map +1 -0
  55. package/dist/commands/registry.d.ts +9 -0
  56. package/dist/commands/registry.d.ts.map +1 -0
  57. package/dist/commands/registry.js +361 -0
  58. package/dist/commands/registry.js.map +1 -0
  59. package/dist/commands/run.d.ts +3 -0
  60. package/dist/commands/run.d.ts.map +1 -0
  61. package/dist/commands/run.js +157 -0
  62. package/dist/commands/run.js.map +1 -0
  63. package/dist/commands/show.d.ts +3 -0
  64. package/dist/commands/show.d.ts.map +1 -0
  65. package/dist/commands/show.js +90 -0
  66. package/dist/commands/show.js.map +1 -0
  67. package/dist/commands/uninstall.d.ts +3 -0
  68. package/dist/commands/uninstall.d.ts.map +1 -0
  69. package/dist/commands/uninstall.js +95 -0
  70. package/dist/commands/uninstall.js.map +1 -0
  71. package/dist/commands/validate.d.ts +3 -0
  72. package/dist/commands/validate.d.ts.map +1 -0
  73. package/dist/commands/validate.js +57 -0
  74. package/dist/commands/validate.js.map +1 -0
  75. package/dist/commands/version.d.ts +3 -0
  76. package/dist/commands/version.d.ts.map +1 -0
  77. package/dist/commands/version.js +166 -0
  78. package/dist/commands/version.js.map +1 -0
  79. package/dist/index.d.ts +5 -0
  80. package/dist/index.d.ts.map +1 -0
  81. package/dist/index.js +388 -0
  82. package/dist/index.js.map +1 -0
  83. package/dist/lib/auth.d.ts +164 -0
  84. package/dist/lib/auth.d.ts.map +1 -0
  85. package/dist/lib/auth.js +388 -0
  86. package/dist/lib/auth.js.map +1 -0
  87. package/dist/lib/compiler/file-system.d.ts +178 -0
  88. package/dist/lib/compiler/file-system.d.ts.map +1 -0
  89. package/dist/lib/compiler/file-system.js +440 -0
  90. package/dist/lib/compiler/file-system.js.map +1 -0
  91. package/dist/lib/compiler/formatters/anthropic.d.ts +21 -0
  92. package/dist/lib/compiler/formatters/anthropic.d.ts.map +1 -0
  93. package/dist/lib/compiler/formatters/anthropic.js +95 -0
  94. package/dist/lib/compiler/formatters/anthropic.js.map +1 -0
  95. package/dist/lib/compiler/formatters/markdown.d.ts +17 -0
  96. package/dist/lib/compiler/formatters/markdown.d.ts.map +1 -0
  97. package/dist/lib/compiler/formatters/markdown.js +114 -0
  98. package/dist/lib/compiler/formatters/markdown.js.map +1 -0
  99. package/dist/lib/compiler/formatters/openai.d.ts +21 -0
  100. package/dist/lib/compiler/formatters/openai.d.ts.map +1 -0
  101. package/dist/lib/compiler/formatters/openai.js +98 -0
  102. package/dist/lib/compiler/formatters/openai.js.map +1 -0
  103. package/dist/lib/compiler/index.d.ts +56 -0
  104. package/dist/lib/compiler/index.d.ts.map +1 -0
  105. package/dist/lib/compiler/index.js +165 -0
  106. package/dist/lib/compiler/index.js.map +1 -0
  107. package/dist/lib/compiler/language-map.d.ts +31 -0
  108. package/dist/lib/compiler/language-map.d.ts.map +1 -0
  109. package/dist/lib/compiler/language-map.js +156 -0
  110. package/dist/lib/compiler/language-map.js.map +1 -0
  111. package/dist/lib/compiler/package-resolver.d.ts +68 -0
  112. package/dist/lib/compiler/package-resolver.d.ts.map +1 -0
  113. package/dist/lib/compiler/package-resolver.js +254 -0
  114. package/dist/lib/compiler/package-resolver.js.map +1 -0
  115. package/dist/lib/compiler/pipeline.d.ts +53 -0
  116. package/dist/lib/compiler/pipeline.d.ts.map +1 -0
  117. package/dist/lib/compiler/pipeline.js +209 -0
  118. package/dist/lib/compiler/pipeline.js.map +1 -0
  119. package/dist/lib/compiler/prompd-loader.d.ts +108 -0
  120. package/dist/lib/compiler/prompd-loader.d.ts.map +1 -0
  121. package/dist/lib/compiler/prompd-loader.js +270 -0
  122. package/dist/lib/compiler/prompd-loader.js.map +1 -0
  123. package/dist/lib/compiler/section-override.d.ts +40 -0
  124. package/dist/lib/compiler/section-override.d.ts.map +1 -0
  125. package/dist/lib/compiler/section-override.js +296 -0
  126. package/dist/lib/compiler/section-override.js.map +1 -0
  127. package/dist/lib/compiler/stages/assets.d.ts +71 -0
  128. package/dist/lib/compiler/stages/assets.d.ts.map +1 -0
  129. package/dist/lib/compiler/stages/assets.js +456 -0
  130. package/dist/lib/compiler/stages/assets.js.map +1 -0
  131. package/dist/lib/compiler/stages/codegen.d.ts +17 -0
  132. package/dist/lib/compiler/stages/codegen.d.ts.map +1 -0
  133. package/dist/lib/compiler/stages/codegen.js +64 -0
  134. package/dist/lib/compiler/stages/codegen.js.map +1 -0
  135. package/dist/lib/compiler/stages/dependency.d.ts +38 -0
  136. package/dist/lib/compiler/stages/dependency.d.ts.map +1 -0
  137. package/dist/lib/compiler/stages/dependency.js +307 -0
  138. package/dist/lib/compiler/stages/dependency.js.map +1 -0
  139. package/dist/lib/compiler/stages/lexical.d.ts +19 -0
  140. package/dist/lib/compiler/stages/lexical.d.ts.map +1 -0
  141. package/dist/lib/compiler/stages/lexical.js +92 -0
  142. package/dist/lib/compiler/stages/lexical.js.map +1 -0
  143. package/dist/lib/compiler/stages/semantic.d.ts +20 -0
  144. package/dist/lib/compiler/stages/semantic.d.ts.map +1 -0
  145. package/dist/lib/compiler/stages/semantic.js +166 -0
  146. package/dist/lib/compiler/stages/semantic.js.map +1 -0
  147. package/dist/lib/compiler/stages/template.d.ts +94 -0
  148. package/dist/lib/compiler/stages/template.d.ts.map +1 -0
  149. package/dist/lib/compiler/stages/template.js +1044 -0
  150. package/dist/lib/compiler/stages/template.js.map +1 -0
  151. package/dist/lib/compiler/types.d.ts +200 -0
  152. package/dist/lib/compiler/types.d.ts.map +1 -0
  153. package/dist/lib/compiler/types.js +137 -0
  154. package/dist/lib/compiler/types.js.map +1 -0
  155. package/dist/lib/config.d.ts +29 -0
  156. package/dist/lib/config.d.ts.map +1 -0
  157. package/dist/lib/config.js +375 -0
  158. package/dist/lib/config.js.map +1 -0
  159. package/dist/lib/errors.d.ts +19 -0
  160. package/dist/lib/errors.d.ts.map +1 -0
  161. package/dist/lib/errors.js +47 -0
  162. package/dist/lib/errors.js.map +1 -0
  163. package/dist/lib/executor.d.ts +18 -0
  164. package/dist/lib/executor.d.ts.map +1 -0
  165. package/dist/lib/executor.js +372 -0
  166. package/dist/lib/executor.js.map +1 -0
  167. package/dist/lib/git.d.ts +74 -0
  168. package/dist/lib/git.d.ts.map +1 -0
  169. package/dist/lib/git.js +254 -0
  170. package/dist/lib/git.js.map +1 -0
  171. package/dist/lib/index.d.ts +43 -0
  172. package/dist/lib/index.d.ts.map +1 -0
  173. package/dist/lib/index.js +108 -0
  174. package/dist/lib/index.js.map +1 -0
  175. package/dist/lib/mcp.d.ts +42 -0
  176. package/dist/lib/mcp.d.ts.map +1 -0
  177. package/dist/lib/mcp.js +477 -0
  178. package/dist/lib/mcp.js.map +1 -0
  179. package/dist/lib/model-updater.d.ts +51 -0
  180. package/dist/lib/model-updater.d.ts.map +1 -0
  181. package/dist/lib/model-updater.js +275 -0
  182. package/dist/lib/model-updater.js.map +1 -0
  183. package/dist/lib/parser.d.ts +9 -0
  184. package/dist/lib/parser.d.ts.map +1 -0
  185. package/dist/lib/parser.js +197 -0
  186. package/dist/lib/parser.js.map +1 -0
  187. package/dist/lib/registry.d.ts +183 -0
  188. package/dist/lib/registry.d.ts.map +1 -0
  189. package/dist/lib/registry.js +786 -0
  190. package/dist/lib/registry.js.map +1 -0
  191. package/dist/lib/rpc-server.d.ts +78 -0
  192. package/dist/lib/rpc-server.d.ts.map +1 -0
  193. package/dist/lib/rpc-server.js +404 -0
  194. package/dist/lib/rpc-server.js.map +1 -0
  195. package/dist/lib/security.d.ts +120 -0
  196. package/dist/lib/security.d.ts.map +1 -0
  197. package/dist/lib/security.js +478 -0
  198. package/dist/lib/security.js.map +1 -0
  199. package/dist/lib/validation.d.ts +106 -0
  200. package/dist/lib/validation.d.ts.map +1 -0
  201. package/dist/lib/validation.js +398 -0
  202. package/dist/lib/validation.js.map +1 -0
  203. package/dist/lib/version.d.ts +29 -0
  204. package/dist/lib/version.d.ts.map +1 -0
  205. package/dist/lib/version.js +202 -0
  206. package/dist/lib/version.js.map +1 -0
  207. package/dist/lib/workflow-engine.d.ts +161 -0
  208. package/dist/lib/workflow-engine.d.ts.map +1 -0
  209. package/dist/lib/workflow-engine.js +422 -0
  210. package/dist/lib/workflow-engine.js.map +1 -0
  211. package/dist/lib/workflow.d.ts +102 -0
  212. package/dist/lib/workflow.d.ts.map +1 -0
  213. package/dist/lib/workflow.js +228 -0
  214. package/dist/lib/workflow.js.map +1 -0
  215. package/dist/server.d.ts +8 -0
  216. package/dist/server.d.ts.map +1 -0
  217. package/dist/server.js +134 -0
  218. package/dist/server.js.map +1 -0
  219. package/dist/types/index.d.ts +116 -0
  220. package/dist/types/index.d.ts.map +1 -0
  221. package/dist/types/index.js +144 -0
  222. package/dist/types/index.js.map +1 -0
  223. package/package.json +104 -0
@@ -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":"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"}
@@ -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"}