@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
|
@@ -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
|