@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,275 @@
1
+ "use strict";
2
+ /**
3
+ * Model List Updater - Fetches latest model lists from providers
4
+ * Keeps our hardcoded model lists current with provider APIs
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.CURRENT_MODELS = void 0;
8
+ exports.getModelsForProvider = getModelsForProvider;
9
+ exports.getAllModels = getAllModels;
10
+ exports.getRecommendedModels = getRecommendedModels;
11
+ exports.isValidModel = isValidModel;
12
+ exports.getModelInfo = getModelInfo;
13
+ /**
14
+ * Current model lists based on latest provider APIs
15
+ * Updated: January 2025
16
+ */
17
+ exports.CURRENT_MODELS = {
18
+ openai: {
19
+ provider: 'openai',
20
+ lastUpdated: '2025-01-25',
21
+ models: [
22
+ // GPT-4 Models (Latest)
23
+ {
24
+ id: 'gpt-4o',
25
+ name: 'GPT-4o',
26
+ provider: 'openai',
27
+ contextLength: 128000,
28
+ inputCost: 2.50,
29
+ outputCost: 10.00,
30
+ description: 'Latest GPT-4 with vision and optimized performance'
31
+ },
32
+ {
33
+ id: 'gpt-4o-mini',
34
+ name: 'GPT-4o Mini',
35
+ provider: 'openai',
36
+ contextLength: 128000,
37
+ inputCost: 0.15,
38
+ outputCost: 0.60,
39
+ description: 'Faster, cost-effective GPT-4 variant'
40
+ },
41
+ {
42
+ id: 'gpt-4-turbo',
43
+ name: 'GPT-4 Turbo',
44
+ provider: 'openai',
45
+ contextLength: 128000,
46
+ inputCost: 10.00,
47
+ outputCost: 30.00,
48
+ description: 'Enhanced GPT-4 with improved reasoning'
49
+ },
50
+ {
51
+ id: 'gpt-4',
52
+ name: 'GPT-4',
53
+ provider: 'openai',
54
+ contextLength: 8192,
55
+ inputCost: 30.00,
56
+ outputCost: 60.00,
57
+ description: 'Original GPT-4 model'
58
+ },
59
+ // GPT-3.5 Models
60
+ {
61
+ id: 'gpt-3.5-turbo',
62
+ name: 'GPT-3.5 Turbo',
63
+ provider: 'openai',
64
+ contextLength: 16384,
65
+ inputCost: 0.50,
66
+ outputCost: 1.50,
67
+ description: 'Fast and efficient model for most tasks'
68
+ },
69
+ // Embedding Models
70
+ {
71
+ id: 'text-embedding-3-large',
72
+ name: 'Text Embedding 3 Large',
73
+ provider: 'openai',
74
+ contextLength: 8192,
75
+ inputCost: 0.13,
76
+ outputCost: 0,
77
+ description: 'Most capable embedding model'
78
+ },
79
+ {
80
+ id: 'text-embedding-3-small',
81
+ name: 'Text Embedding 3 Small',
82
+ provider: 'openai',
83
+ contextLength: 8192,
84
+ inputCost: 0.02,
85
+ outputCost: 0,
86
+ description: 'Efficient embedding model'
87
+ }
88
+ ]
89
+ },
90
+ anthropic: {
91
+ provider: 'anthropic',
92
+ lastUpdated: '2025-01-25',
93
+ models: [
94
+ // Claude 3.5 Models (Latest)
95
+ {
96
+ id: 'claude-3-5-sonnet-20241022',
97
+ name: 'Claude 3.5 Sonnet',
98
+ provider: 'anthropic',
99
+ contextLength: 200000,
100
+ inputCost: 3.00,
101
+ outputCost: 15.00,
102
+ description: 'Most intelligent model with improved coding and reasoning'
103
+ },
104
+ {
105
+ id: 'claude-3-5-haiku-20241022',
106
+ name: 'Claude 3.5 Haiku',
107
+ provider: 'anthropic',
108
+ contextLength: 200000,
109
+ inputCost: 0.80,
110
+ outputCost: 4.00,
111
+ description: 'Fast and cost-effective for everyday tasks'
112
+ },
113
+ // Claude 3 Models
114
+ {
115
+ id: 'claude-3-opus-20240229',
116
+ name: 'Claude 3 Opus',
117
+ provider: 'anthropic',
118
+ contextLength: 200000,
119
+ inputCost: 15.00,
120
+ outputCost: 75.00,
121
+ description: 'Most powerful model for complex tasks'
122
+ },
123
+ {
124
+ id: 'claude-3-sonnet-20240229',
125
+ name: 'Claude 3 Sonnet',
126
+ provider: 'anthropic',
127
+ contextLength: 200000,
128
+ inputCost: 3.00,
129
+ outputCost: 15.00,
130
+ description: 'Balanced performance and cost'
131
+ },
132
+ {
133
+ id: 'claude-3-haiku-20240307',
134
+ name: 'Claude 3 Haiku',
135
+ provider: 'anthropic',
136
+ contextLength: 200000,
137
+ inputCost: 0.25,
138
+ outputCost: 1.25,
139
+ description: 'Fastest model for simple tasks'
140
+ }
141
+ ]
142
+ },
143
+ google: {
144
+ provider: 'google',
145
+ lastUpdated: '2025-01-25',
146
+ models: [
147
+ {
148
+ id: 'gemini-1.5-pro',
149
+ name: 'Gemini 1.5 Pro',
150
+ provider: 'google',
151
+ contextLength: 2000000,
152
+ inputCost: 1.25,
153
+ outputCost: 5.00,
154
+ description: 'Latest Gemini with massive context window'
155
+ },
156
+ {
157
+ id: 'gemini-1.5-flash',
158
+ name: 'Gemini 1.5 Flash',
159
+ provider: 'google',
160
+ contextLength: 1000000,
161
+ inputCost: 0.075,
162
+ outputCost: 0.30,
163
+ description: 'Fast and efficient multimodal model'
164
+ },
165
+ {
166
+ id: 'gemini-pro',
167
+ name: 'Gemini Pro',
168
+ provider: 'google',
169
+ contextLength: 32000,
170
+ inputCost: 0.50,
171
+ outputCost: 1.50,
172
+ description: 'General purpose model'
173
+ }
174
+ ]
175
+ },
176
+ ollama: {
177
+ provider: 'ollama',
178
+ lastUpdated: '2025-01-25',
179
+ models: [
180
+ {
181
+ id: 'llama3.2',
182
+ name: 'Llama 3.2',
183
+ provider: 'ollama',
184
+ description: 'Latest Llama model from Meta'
185
+ },
186
+ {
187
+ id: 'llama3.1',
188
+ name: 'Llama 3.1',
189
+ provider: 'ollama',
190
+ description: 'Llama 3.1 with improved capabilities'
191
+ },
192
+ {
193
+ id: 'mistral',
194
+ name: 'Mistral 7B',
195
+ provider: 'ollama',
196
+ description: 'Efficient open-source model'
197
+ },
198
+ {
199
+ id: 'codellama',
200
+ name: 'Code Llama',
201
+ provider: 'ollama',
202
+ description: 'Specialized for code generation'
203
+ },
204
+ {
205
+ id: 'phi3',
206
+ name: 'Phi-3',
207
+ provider: 'ollama',
208
+ description: 'Microsoft\'s small but capable model'
209
+ }
210
+ ]
211
+ }
212
+ };
213
+ /**
214
+ * Get models for a specific provider
215
+ */
216
+ function getModelsForProvider(provider) {
217
+ const providerData = exports.CURRENT_MODELS[provider.toLowerCase()];
218
+ return providerData ? providerData.models : [];
219
+ }
220
+ /**
221
+ * Get all available models across providers
222
+ */
223
+ function getAllModels() {
224
+ return Object.values(exports.CURRENT_MODELS).flatMap(p => p.models);
225
+ }
226
+ /**
227
+ * Get recommended models for different use cases
228
+ */
229
+ function getRecommendedModels() {
230
+ return {
231
+ 'fastest': [
232
+ 'gpt-4o-mini',
233
+ 'claude-3-5-haiku-20241022',
234
+ 'gemini-1.5-flash'
235
+ ],
236
+ 'balanced': [
237
+ 'gpt-4o',
238
+ 'claude-3-5-sonnet-20241022',
239
+ 'gemini-1.5-pro'
240
+ ],
241
+ 'most-capable': [
242
+ 'gpt-4-turbo',
243
+ 'claude-3-opus-20240229',
244
+ 'gemini-1.5-pro'
245
+ ],
246
+ 'cost-effective': [
247
+ 'gpt-3.5-turbo',
248
+ 'claude-3-haiku-20240307',
249
+ 'gemini-1.5-flash'
250
+ ],
251
+ 'coding': [
252
+ 'gpt-4o',
253
+ 'claude-3-5-sonnet-20241022',
254
+ 'codellama'
255
+ ]
256
+ };
257
+ }
258
+ /**
259
+ * Validate if a model ID is currently supported
260
+ */
261
+ function isValidModel(modelId, provider) {
262
+ const allModels = getAllModels();
263
+ if (provider) {
264
+ return allModels.some(m => m.id === modelId && m.provider === provider.toLowerCase());
265
+ }
266
+ return allModels.some(m => m.id === modelId);
267
+ }
268
+ /**
269
+ * Get model information by ID
270
+ */
271
+ function getModelInfo(modelId) {
272
+ const allModels = getAllModels();
273
+ return allModels.find(m => m.id === modelId) || null;
274
+ }
275
+ //# sourceMappingURL=model-updater.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model-updater.js","sourceRoot":"","sources":["../../src/lib/model-updater.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import { PrompdFile, ValidationIssue } from '../types';
2
+ export declare class PrompdParser {
3
+ parseFile(filePath: string): Promise<PrompdFile>;
4
+ parseContent(content: string, _filePath?: string): PrompdFile;
5
+ validateFile(filePath: string): Promise<ValidationIssue[]>;
6
+ private validatePrompdFile;
7
+ private isValidSemver;
8
+ }
9
+ //# sourceMappingURL=parser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../src/lib/parser.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAkB,eAAe,EAAE,MAAM,UAAU,CAAC;AAEvE,qBAAa,YAAY;IACjB,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAatD,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,UAAU;IAoEvD,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAYhE,OAAO,CAAC,kBAAkB;IAiF1B,OAAO,CAAC,aAAa;CAItB"}
@@ -0,0 +1,197 @@
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.PrompdParser = void 0;
37
+ const fs = __importStar(require("fs-extra"));
38
+ const yaml = __importStar(require("yaml"));
39
+ class PrompdParser {
40
+ async parseFile(filePath) {
41
+ if (!filePath.endsWith('.prmd')) {
42
+ throw new Error('File must have .prmd extension');
43
+ }
44
+ if (!await fs.pathExists(filePath)) {
45
+ throw new Error(`File not found: ${filePath}`);
46
+ }
47
+ const content = await fs.readFile(filePath, 'utf-8');
48
+ return this.parseContent(content, filePath);
49
+ }
50
+ parseContent(content, _filePath) {
51
+ // Remove BOM if present and normalize line endings (CRLF -> LF)
52
+ const cleanContent = content
53
+ .replace(/^\ufeff/, '')
54
+ .replace(/\r\n/g, '\n')
55
+ .replace(/\r/g, '\n');
56
+ if (!cleanContent.startsWith('---\n')) {
57
+ throw new Error('File must start with YAML frontmatter (---)');
58
+ }
59
+ // Find the closing --- delimiter (must be on its own line)
60
+ // We search after the opening --- to find the first \n---\n or \n--- at end
61
+ const afterOpening = cleanContent.slice(4); // Skip opening "---\n"
62
+ const closingIndex = afterOpening.indexOf('\n---\n');
63
+ const closingAtEnd = afterOpening.indexOf('\n---');
64
+ // Determine the actual closing delimiter position
65
+ let delimiterIndex = -1;
66
+ if (closingIndex !== -1) {
67
+ delimiterIndex = closingIndex;
68
+ }
69
+ else if (closingAtEnd !== -1 && afterOpening.substring(closingAtEnd) === '\n---') {
70
+ // Handle case where --- is at the very end with no trailing newline
71
+ delimiterIndex = closingAtEnd;
72
+ }
73
+ if (delimiterIndex === -1) {
74
+ throw new Error('Invalid frontmatter format');
75
+ }
76
+ const yamlContent = afterOpening.substring(0, delimiterIndex);
77
+ // +4 to skip past "\n---\n" or +4 to skip past "\n---" if at end
78
+ const bodyStart = delimiterIndex + 4;
79
+ const markdownContent = bodyStart < afterOpening.length ? afterOpening.substring(bodyStart) : '';
80
+ let metadata;
81
+ try {
82
+ metadata = yaml.parse(yamlContent);
83
+ }
84
+ catch (error) {
85
+ throw new Error(`Failed to parse YAML frontmatter: ${error instanceof Error ? error.message : 'Unknown error'}`);
86
+ }
87
+ // Validate required fields
88
+ if (!metadata.id) {
89
+ throw new Error('id field is required');
90
+ }
91
+ // Validate ID follows kebab-case
92
+ const kebabCaseRegex = /^[a-z0-9-]+$/;
93
+ if (!kebabCaseRegex.test(metadata.id)) {
94
+ throw new Error(`id '${metadata.id}' must use kebab-case (lowercase letters, numbers, hyphens only)`);
95
+ }
96
+ // Extract sections from markdown content
97
+ const sections = {};
98
+ const sectionRegex = /^## (.+)$/gm;
99
+ let match;
100
+ while ((match = sectionRegex.exec(markdownContent)) !== null) {
101
+ sections[match[1].toLowerCase()] = match[1];
102
+ }
103
+ return {
104
+ metadata,
105
+ content: markdownContent.trim(),
106
+ sections
107
+ };
108
+ }
109
+ async validateFile(filePath) {
110
+ try {
111
+ const prompd = await this.parseFile(filePath);
112
+ return this.validatePrompdFile(prompd);
113
+ }
114
+ catch (error) {
115
+ return [{
116
+ level: 'error',
117
+ message: error instanceof Error ? error.message : 'Unknown parsing error'
118
+ }];
119
+ }
120
+ }
121
+ validatePrompdFile(prompd) {
122
+ const issues = [];
123
+ // Validate required fields
124
+ if (!prompd.metadata.name) {
125
+ issues.push({
126
+ level: 'error',
127
+ message: 'name field is required'
128
+ });
129
+ }
130
+ // Validate semantic version if present
131
+ if (prompd.metadata.version && !this.isValidSemver(prompd.metadata.version)) {
132
+ issues.push({
133
+ level: 'error',
134
+ message: `invalid semantic version: ${prompd.metadata.version}`
135
+ });
136
+ }
137
+ // Validate parameter references
138
+ const variables = new Set();
139
+ // Check both parameters and variables fields for backward compatibility
140
+ const allParams = [
141
+ ...(prompd.metadata.parameters || []),
142
+ ...(prompd.metadata.variables || [])
143
+ ];
144
+ for (const param of allParams) {
145
+ if (!param.name) {
146
+ issues.push({
147
+ level: 'error',
148
+ message: 'parameter name cannot be empty'
149
+ });
150
+ continue;
151
+ }
152
+ variables.add(param.name);
153
+ // Validate parameter type
154
+ const validTypes = ['string', 'number', 'boolean', 'array', 'object'];
155
+ if (!validTypes.includes(param.type)) {
156
+ issues.push({
157
+ level: 'error',
158
+ message: `invalid parameter type: ${param.type}. Must be one of: ${validTypes.join(', ')}`
159
+ });
160
+ }
161
+ // Validate pattern for string parameters
162
+ if (param.pattern && param.type !== 'string') {
163
+ issues.push({
164
+ level: 'warning',
165
+ message: `pattern validation only applies to string parameters: ${param.name}`
166
+ });
167
+ }
168
+ // Validate minimum/maximum for number parameters
169
+ if ((param.minimum !== undefined || param.maximum !== undefined) && param.type !== 'number') {
170
+ issues.push({
171
+ level: 'warning',
172
+ message: `minimum/maximum validation only applies to number parameters: ${param.name}`
173
+ });
174
+ }
175
+ }
176
+ // Check for variable references in content
177
+ const variableReferences = prompd.content.match(/\{([a-zA-Z_][a-zA-Z0-9_]*)\}/g);
178
+ if (variableReferences) {
179
+ for (const ref of variableReferences) {
180
+ const varName = ref.slice(1, -1); // Remove { and }
181
+ if (!variables.has(varName) && varName !== 'inputs') {
182
+ issues.push({
183
+ level: 'error',
184
+ message: `undefined variable referenced: ${varName}`
185
+ });
186
+ }
187
+ }
188
+ }
189
+ return issues;
190
+ }
191
+ isValidSemver(version) {
192
+ const semverRegex = /^(\d+)\.(\d+)\.(\d+)$/;
193
+ return semverRegex.test(version);
194
+ }
195
+ }
196
+ exports.PrompdParser = PrompdParser;
197
+ //# sourceMappingURL=parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parser.js","sourceRoot":"","sources":["../../src/lib/parser.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,183 @@
1
+ /**
2
+ * Prompd Package Registry System (Multi-Registry Architecture)
3
+ * Core registry infrastructure for publishing and installing packages with scope-based resolution
4
+ */
5
+ import { EventEmitter } from 'events';
6
+ import { IFileSystem } from './compiler/file-system';
7
+ export interface LegacyRegistryConfig {
8
+ registryUrl: string;
9
+ authToken?: string;
10
+ cacheDir: string;
11
+ timeout: number;
12
+ maxPackageSize: number;
13
+ }
14
+ export interface PackageMetadata {
15
+ name: string;
16
+ version: string;
17
+ description: string;
18
+ author: string;
19
+ license: string;
20
+ keywords: string[];
21
+ repository?: {
22
+ type: string;
23
+ url: string;
24
+ };
25
+ dependencies: Record<string, string>;
26
+ prompdVersion: string;
27
+ files: string[];
28
+ main?: string;
29
+ type: 'prompt' | 'workflow' | 'collection';
30
+ category: string;
31
+ tags: string[];
32
+ createdAt: string;
33
+ updatedAt: string;
34
+ }
35
+ export interface PublishOptions {
36
+ access: 'public' | 'private';
37
+ tag: string;
38
+ dryRun: boolean;
39
+ force: boolean;
40
+ fileSystem?: IFileSystem;
41
+ }
42
+ export interface SearchQuery {
43
+ query?: string;
44
+ category?: string;
45
+ type?: 'prompt' | 'workflow' | 'collection';
46
+ tags?: string[];
47
+ author?: string;
48
+ limit?: number;
49
+ offset?: number;
50
+ sort?: 'relevance' | 'downloads' | 'updated' | 'created';
51
+ }
52
+ export interface SearchResult {
53
+ packages: Array<{
54
+ name: string;
55
+ version: string;
56
+ description: string;
57
+ author: string;
58
+ downloads: number;
59
+ updatedAt: string;
60
+ tags: string[];
61
+ category: string;
62
+ }>;
63
+ total: number;
64
+ hasMore: boolean;
65
+ }
66
+ export interface InstallOptions {
67
+ version?: string;
68
+ saveDev?: boolean;
69
+ global?: boolean;
70
+ force?: boolean;
71
+ skipCache?: boolean;
72
+ workspaceRoot?: string;
73
+ }
74
+ /**
75
+ * Options for creating a RegistryClient.
76
+ */
77
+ export interface RegistryClientOptions {
78
+ /** Registry name from config (e.g., 'prompdhub') */
79
+ registryName?: string;
80
+ /** Direct registry URL - overrides config lookup */
81
+ registryUrl?: string;
82
+ }
83
+ /**
84
+ * Package Registry Client
85
+ */
86
+ export declare class RegistryClient extends EventEmitter {
87
+ private config;
88
+ private registryName;
89
+ private registryConfig;
90
+ private cache;
91
+ constructor(options?: string | RegistryClientOptions);
92
+ get registryUrl(): string;
93
+ get authToken(): string | undefined;
94
+ get cacheDir(): string;
95
+ get maxPackageSize(): number;
96
+ /**
97
+ * Load config synchronously - required for constructor
98
+ */
99
+ private loadConfigSync;
100
+ /**
101
+ * Authenticate with registry using token
102
+ */
103
+ loginWithToken(token: string): Promise<{
104
+ username: string;
105
+ }>;
106
+ /**
107
+ * Clear authentication credentials
108
+ */
109
+ logout(): Promise<void>;
110
+ /**
111
+ * Publish a package to the registry
112
+ */
113
+ publish(packagePath: string, options?: PublishOptions): Promise<void>;
114
+ /**
115
+ * Install a package from the registry
116
+ * Accepts both formats:
117
+ * - @namespace/package (with options.version)
118
+ * - @namespace/package@version (embedded version)
119
+ */
120
+ install(packageName: string, options?: InstallOptions): Promise<void>;
121
+ /**
122
+ * Search packages in the registry
123
+ */
124
+ search(query: SearchQuery): Promise<SearchResult>;
125
+ /**
126
+ * Get package information
127
+ */
128
+ getPackageInfo(packageName: string, version?: string): Promise<PackageMetadata>;
129
+ /**
130
+ * Get available versions for a package
131
+ */
132
+ getPackageVersions(packageName: string): Promise<string[]>;
133
+ private loadPackageMetadata;
134
+ private validatePackageForPublish;
135
+ private createPackageTarball;
136
+ private uploadPackage;
137
+ private resolveVersion;
138
+ /**
139
+ * Download a package without installing it to disk.
140
+ * Useful for in-memory package loading.
141
+ *
142
+ * @param packageName - Package name (e.g., "@namespace/package-name")
143
+ * @param version - Package version (e.g., "1.0.0")
144
+ * @returns Object with tarball Buffer and package metadata
145
+ */
146
+ downloadPackageBuffer(packageName: string, version: string): Promise<{
147
+ tarball: Buffer;
148
+ metadata: PackageMetadata;
149
+ }>;
150
+ private downloadPackage;
151
+ private installDependencies;
152
+ private extractAndInstallPackage;
153
+ private getAuthHeaders;
154
+ private ensureCacheDir;
155
+ private getDirectorySize;
156
+ private matchesFilePatterns;
157
+ private getCachedPackage;
158
+ private installFromCache;
159
+ private cachePackage;
160
+ /**
161
+ * Load manifest.json from file system abstraction.
162
+ * Supports both disk-based and in-memory file systems.
163
+ */
164
+ private loadManifestFromFS;
165
+ /**
166
+ * Validate package for publish using file system abstraction.
167
+ */
168
+ private validatePackageForPublishFS;
169
+ /**
170
+ * Create package tarball Buffer using file system abstraction.
171
+ * Supports both in-memory and disk-based package creation.
172
+ */
173
+ private createPackageTarballBuffer;
174
+ /**
175
+ * Upload package Buffer to registry.
176
+ */
177
+ private uploadPackageBuffer;
178
+ }
179
+ /**
180
+ * Default registry configuration
181
+ */
182
+ export declare const createDefaultRegistryConfig: () => LegacyRegistryConfig;
183
+ //# sourceMappingURL=registry.d.ts.map