@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,307 @@
1
+ "use strict";
2
+ /**
3
+ * Dependency Resolution Stage
4
+ *
5
+ * Resolves 'using:' imports and 'inherits:' chains, handling both local file
6
+ * paths and package references with alias resolution.
7
+ *
8
+ * This is a direct port of the Python CLI's DependencyResolutionStage.
9
+ */
10
+ Object.defineProperty(exports, "__esModule", { value: true });
11
+ exports.DependencyResolutionStage = void 0;
12
+ const package_resolver_1 = require("../package-resolver");
13
+ class DependencyResolutionStage {
14
+ async process(context) {
15
+ if (!context.metadata) {
16
+ return;
17
+ }
18
+ // Initialize resolved packages
19
+ const resolvedPackages = {};
20
+ // Process 'using' field (package imports with optional prefixes)
21
+ if (context.metadata.using) {
22
+ await this.processUsingField(context, context.metadata.using, resolvedPackages);
23
+ }
24
+ // Store resolved imports
25
+ context.dependencies.imports = resolvedPackages;
26
+ // Process 'inherits' field (can be package reference or direct file path)
27
+ if (context.metadata.inherits) {
28
+ await this.processInheritsField(context, context.metadata.inherits, resolvedPackages);
29
+ }
30
+ // Process content reference fields for alias resolution
31
+ await this.processContentFieldAliases(context, resolvedPackages);
32
+ }
33
+ /**
34
+ * Process the 'using' field for package imports.
35
+ */
36
+ async processUsingField(context, usingImports, resolvedPackages) {
37
+ if (typeof usingImports === 'string') {
38
+ // Simple string: using: "@package@version"
39
+ await this.resolvePackageImport(context, usingImports, null, resolvedPackages);
40
+ }
41
+ else if (Array.isArray(usingImports)) {
42
+ // List of packages (can be strings, dicts, or objects)
43
+ for (const item of usingImports) {
44
+ if (typeof item === 'string') {
45
+ // Simple string in list
46
+ await this.resolvePackageImport(context, item, null, resolvedPackages);
47
+ }
48
+ else if (typeof item === 'object' && item !== null) {
49
+ // Object with name and REQUIRED prefix
50
+ const packageRef = item.name || item.package || '';
51
+ const prefix = item.prefix;
52
+ if (packageRef) {
53
+ // Prefix is required for 'using' - the whole point is to create a shorthand
54
+ if (!prefix) {
55
+ context.addError(`Package '${packageRef}' in 'using' field must have a prefix for shorthand access`);
56
+ continue;
57
+ }
58
+ await this.resolvePackageImport(context, packageRef, prefix, resolvedPackages);
59
+ }
60
+ }
61
+ }
62
+ }
63
+ else if (typeof usingImports === 'object' && usingImports !== null) {
64
+ // Dict format: {package: prefix} or structured format
65
+ for (const [key, value] of Object.entries(usingImports)) {
66
+ if (typeof value === 'string') {
67
+ // Format: {"@package@version": "prefix"}
68
+ await this.resolvePackageImport(context, key, value, resolvedPackages);
69
+ }
70
+ else if (typeof value === 'object' && value !== null && 'prefix' in value) {
71
+ // Format: {"@package@version": {"prefix": "alias"}}
72
+ const prefix = value.prefix;
73
+ await this.resolvePackageImport(context, key, prefix, resolvedPackages);
74
+ }
75
+ }
76
+ }
77
+ }
78
+ /**
79
+ * Resolve a single package import.
80
+ */
81
+ async resolvePackageImport(context, packageRef, prefix, resolvedPackages) {
82
+ try {
83
+ // Pass fileSystem, registryUrl, and workspaceRoot to enable proper package resolution
84
+ const packagePath = await (0, package_resolver_1.resolvePackage)(packageRef, {
85
+ fileSystem: context.fileSystem,
86
+ registryUrl: context.registryUrl,
87
+ workspaceRoot: context.workspaceRoot
88
+ });
89
+ resolvedPackages[packageRef] = {
90
+ path: packagePath,
91
+ prefix: prefix || undefined
92
+ };
93
+ if (context.verbose) {
94
+ if (prefix) {
95
+ console.log(`✓ Resolved package: ${packageRef} -> ${packagePath} (prefix: ${prefix})`);
96
+ }
97
+ else {
98
+ console.log(`✓ Resolved package: ${packageRef} -> ${packagePath}`);
99
+ }
100
+ }
101
+ }
102
+ catch (error) {
103
+ const errorMessage = error instanceof Error ? error.message : String(error);
104
+ // Find location of 'using:' in source
105
+ const location = context.findLocation(/using:/);
106
+ context.addDiagnostic({
107
+ message: `Failed to resolve package ${packageRef}: ${errorMessage}`,
108
+ severity: 'warning',
109
+ source: 'dependency',
110
+ code: 'PACKAGE_NOT_FOUND',
111
+ ...location
112
+ });
113
+ }
114
+ }
115
+ /**
116
+ * Process the 'inherits' field.
117
+ */
118
+ async processInheritsField(context, inheritsRef, resolvedPackages) {
119
+ // Resolve aliases in inherits field
120
+ const resolvedInheritsRef = this.resolveAliasInPath(inheritsRef, resolvedPackages);
121
+ if (resolvedInheritsRef !== inheritsRef) {
122
+ // Update the metadata with the resolved reference
123
+ if (context.metadata) {
124
+ context.metadata.inherits = resolvedInheritsRef;
125
+ }
126
+ if (context.verbose) {
127
+ console.log(`✓ Resolved alias in inherits: ${resolvedInheritsRef}`);
128
+ }
129
+ }
130
+ // Check if it's a local file path (starts with . or / or doesn't start with @)
131
+ if (resolvedInheritsRef.startsWith('./') ||
132
+ resolvedInheritsRef.startsWith('../') ||
133
+ resolvedInheritsRef.startsWith('/') ||
134
+ (!resolvedInheritsRef.startsWith('@') && resolvedInheritsRef.includes('.prmd'))) {
135
+ // Direct file path - resolve relative to source file
136
+ const sourceDir = context.fileSystem.dirname(context.sourceFile);
137
+ const parentPath = context.fileSystem.resolve(sourceDir, resolvedInheritsRef);
138
+ // Verify the inherited file exists
139
+ const fileExists = await context.fileSystem.exists(parentPath);
140
+ if (!fileExists) {
141
+ const location = context.findLocation(/inherits:/);
142
+ context.addDiagnostic({
143
+ message: `Inherited file not found: "${resolvedInheritsRef}" (resolved to: ${parentPath})`,
144
+ severity: 'error',
145
+ source: 'dependency',
146
+ code: 'INHERITS_FILE_NOT_FOUND',
147
+ ...location
148
+ });
149
+ return; // Don't set dependencies.inherits if file doesn't exist
150
+ }
151
+ context.dependencies.inherits = parentPath;
152
+ if (context.verbose) {
153
+ console.log(`✓ Resolved inheritance file: ${resolvedInheritsRef} -> ${parentPath}`);
154
+ }
155
+ }
156
+ else {
157
+ // Package reference with file path - resolve through package system
158
+ try {
159
+ // Parse package reference and file path
160
+ // Format: @namespace/package@version/path/to/file.prmd
161
+ const pattern = /^(@[\w.-]+\/[\w.-]+@[\w.-]+)\/(.+)$/;
162
+ const match = resolvedInheritsRef.match(pattern);
163
+ if (match) {
164
+ const packageRef = match[1]; // @namespace/package@version
165
+ const filePathInPackage = match[2]; // path/to/file.prmd
166
+ if (context.verbose) {
167
+ console.log(`Parsing package inheritance: ${packageRef} / ${filePathInPackage}`);
168
+ }
169
+ // Resolve the package to its local path (pass fileSystem, registryUrl, and workspaceRoot)
170
+ const packagePath = await (0, package_resolver_1.resolvePackage)(packageRef, {
171
+ fileSystem: context.fileSystem,
172
+ registryUrl: context.registryUrl,
173
+ workspaceRoot: context.workspaceRoot
174
+ });
175
+ // Construct full path to the inherited file
176
+ const fullFilePath = (0, package_resolver_1.resolvePackageFile)(packagePath, filePathInPackage);
177
+ // Verify the file exists within the package
178
+ const fileExists = await context.fileSystem.exists(fullFilePath);
179
+ if (!fileExists) {
180
+ const location = context.findLocation(/inherits:/);
181
+ context.addDiagnostic({
182
+ message: `Inherited file not found in package: "${filePathInPackage}" (package: ${packageRef})`,
183
+ severity: 'error',
184
+ source: 'dependency',
185
+ code: 'INHERITS_FILE_NOT_FOUND',
186
+ ...location
187
+ });
188
+ return;
189
+ }
190
+ context.dependencies.inherits = fullFilePath;
191
+ if (context.verbose) {
192
+ console.log(`✓ Resolved inheritance package: ${resolvedInheritsRef} -> ${fullFilePath}`);
193
+ }
194
+ }
195
+ else {
196
+ // Fallback: try as direct package reference (pass fileSystem, registryUrl, and workspaceRoot)
197
+ const parentPath = await (0, package_resolver_1.resolvePackage)(resolvedInheritsRef, {
198
+ fileSystem: context.fileSystem,
199
+ registryUrl: context.registryUrl,
200
+ workspaceRoot: context.workspaceRoot
201
+ });
202
+ // Verify the package directory exists
203
+ const dirExists = await context.fileSystem.exists(parentPath);
204
+ if (!dirExists) {
205
+ const location = context.findLocation(/inherits:/);
206
+ context.addDiagnostic({
207
+ message: `Inherited package not found: "${resolvedInheritsRef}"`,
208
+ severity: 'error',
209
+ source: 'dependency',
210
+ code: 'INHERITS_PACKAGE_NOT_FOUND',
211
+ ...location
212
+ });
213
+ return;
214
+ }
215
+ context.dependencies.inherits = parentPath;
216
+ if (context.verbose) {
217
+ console.log(`✓ Resolved inheritance package (direct): ${resolvedInheritsRef} -> ${parentPath}`);
218
+ }
219
+ }
220
+ }
221
+ catch (error) {
222
+ const errorMessage = error instanceof Error ? error.message : String(error);
223
+ // Find location of 'inherits:' in source
224
+ const location = context.findLocation(/inherits:/);
225
+ context.addDiagnostic({
226
+ message: `Failed to resolve inheritance "${resolvedInheritsRef}": ${errorMessage}`,
227
+ severity: 'error',
228
+ source: 'dependency',
229
+ code: 'INHERITS_NOT_FOUND',
230
+ ...location
231
+ });
232
+ }
233
+ }
234
+ }
235
+ /**
236
+ * Process content reference fields (system, context, user, assistant, response) for alias resolution.
237
+ */
238
+ async processContentFieldAliases(context, resolvedPackages) {
239
+ if (!context.metadata) {
240
+ return;
241
+ }
242
+ const contentFields = ['system', 'assistant', 'context', 'user', 'response'];
243
+ for (const fieldName of contentFields) {
244
+ const fieldValue = context.metadata[fieldName];
245
+ if (fieldValue) {
246
+ // Handle both single strings and lists of strings
247
+ if (typeof fieldValue === 'string') {
248
+ const resolvedValue = this.resolveAliasInPath(fieldValue, resolvedPackages);
249
+ if (resolvedValue !== fieldValue) {
250
+ context.metadata[fieldName] = resolvedValue;
251
+ if (context.verbose) {
252
+ console.log(`✓ Resolved alias in ${fieldName}: ${fieldValue} -> ${resolvedValue}`);
253
+ }
254
+ }
255
+ }
256
+ else if (Array.isArray(fieldValue)) {
257
+ const resolvedList = [];
258
+ for (const item of fieldValue) {
259
+ if (typeof item === 'string') {
260
+ const resolvedItem = this.resolveAliasInPath(item, resolvedPackages);
261
+ resolvedList.push(resolvedItem);
262
+ if (resolvedItem !== item && context.verbose) {
263
+ console.log(`✓ Resolved alias in ${fieldName}: ${item} -> ${resolvedItem}`);
264
+ }
265
+ }
266
+ else {
267
+ resolvedList.push(item);
268
+ }
269
+ }
270
+ context.metadata[fieldName] = resolvedList;
271
+ }
272
+ }
273
+ }
274
+ }
275
+ /**
276
+ * Resolve alias prefixes in file paths.
277
+ *
278
+ * Examples:
279
+ * - "@pkg/templates/file.prmd" with "@pkg" aliased to "@scope/package@version"
280
+ * becomes "@scope/package@version/templates/file.prmd"
281
+ */
282
+ resolveAliasInPath(pathStr, resolvedPackages) {
283
+ if (!pathStr.startsWith('@') || !pathStr.includes('/')) {
284
+ return pathStr;
285
+ }
286
+ // Extract the potential alias (everything before the first '/')
287
+ // Use indexOf to preserve the full remaining path (split with limit truncates)
288
+ const firstSlashIndex = pathStr.indexOf('/');
289
+ const potentialAlias = pathStr.substring(0, firstSlashIndex); // e.g., "@pkg"
290
+ const remainingPath = pathStr.substring(firstSlashIndex + 1); // e.g., "templates/file.prmd"
291
+ // Look for this alias in resolved packages
292
+ for (const [packageName, packageInfo] of Object.entries(resolvedPackages)) {
293
+ if (packageInfo.prefix === potentialAlias) {
294
+ // Found the alias! Replace it with the full package name
295
+ const resolvedPath = `${packageName}/${remainingPath}`;
296
+ return resolvedPath;
297
+ }
298
+ }
299
+ // No alias found, return original path
300
+ return pathStr;
301
+ }
302
+ getName() {
303
+ return 'Dependency Resolution';
304
+ }
305
+ }
306
+ exports.DependencyResolutionStage = DependencyResolutionStage;
307
+ //# sourceMappingURL=dependency.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dependency.js","sourceRoot":"","sources":["../../../../src/lib/compiler/stages/dependency.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Lexical Analysis Stage - Parse YAML frontmatter + Markdown content.
3
+ *
4
+ * This stage parses the .prmd file into structured metadata and content,
5
+ * populating the compilation context for subsequent stages.
6
+ */
7
+ import { CompilerStage, CompilationContext } from '../types';
8
+ export declare class LexicalAnalysisStage implements CompilerStage {
9
+ private parser;
10
+ constructor();
11
+ process(context: CompilationContext): Promise<void>;
12
+ /**
13
+ * Convert YAML-defined sections (system, user, assistant, etc.) to markdown sections.
14
+ * These are appended to the content after any markdown-defined sections.
15
+ */
16
+ private injectYamlSections;
17
+ getName(): string;
18
+ }
19
+ //# sourceMappingURL=lexical.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lexical.d.ts","sourceRoot":"","sources":["../../../../src/lib/compiler/stages/lexical.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAG7D,qBAAa,oBAAqB,YAAW,aAAa;IACxD,OAAO,CAAC,MAAM,CAAe;;IAMvB,OAAO,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IA+CzD;;;OAGG;IACH,OAAO,CAAC,kBAAkB;IAkC1B,OAAO,IAAI,MAAM;CAGlB"}
@@ -0,0 +1,92 @@
1
+ "use strict";
2
+ /**
3
+ * Lexical Analysis Stage - Parse YAML frontmatter + Markdown content.
4
+ *
5
+ * This stage parses the .prmd file into structured metadata and content,
6
+ * populating the compilation context for subsequent stages.
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.LexicalAnalysisStage = void 0;
10
+ const parser_1 = require("../../parser");
11
+ class LexicalAnalysisStage {
12
+ constructor() {
13
+ this.parser = new parser_1.PrompdParser();
14
+ }
15
+ async process(context) {
16
+ try {
17
+ // Read file content from file system
18
+ const fileContent = await context.fileSystem.readFile(context.sourceFile);
19
+ // Store raw source for line number calculation in later stages
20
+ context.rawSource = fileContent;
21
+ // Parse the .prmd file content
22
+ const prompd = this.parser.parseContent(fileContent, context.sourceFile);
23
+ // Populate compilation context
24
+ context.metadata = prompd.metadata;
25
+ context.content = prompd.content;
26
+ // Convert YAML-defined sections to markdown sections
27
+ context.content = this.injectYamlSections(prompd.metadata, context.content);
28
+ if (context.verbose) {
29
+ console.log(`✓ Parsed file: ${context.sourceFile}`);
30
+ console.log(` - Name: ${prompd.metadata.name}`);
31
+ console.log(` - Version: ${prompd.metadata.version || 'N/A'}`);
32
+ console.log(` - Parameters: ${prompd.metadata.parameters?.length || 0}`);
33
+ }
34
+ }
35
+ catch (error) {
36
+ const errorMessage = error instanceof Error ? error.message : String(error);
37
+ // Try to extract line number from YAML parser errors
38
+ let line;
39
+ let column;
40
+ const lineMatch = errorMessage.match(/at line (\d+)(?:,? column (\d+))?/i);
41
+ if (lineMatch) {
42
+ line = parseInt(lineMatch[1], 10) + 1; // Add 1 for opening ---
43
+ column = lineMatch[2] ? parseInt(lineMatch[2], 10) : 1;
44
+ }
45
+ context.addDiagnostic({
46
+ message: `Lexical analysis failed: ${errorMessage}`,
47
+ severity: 'error',
48
+ source: 'lexical',
49
+ line,
50
+ column,
51
+ code: 'PARSE_ERROR'
52
+ });
53
+ }
54
+ }
55
+ /**
56
+ * Convert YAML-defined sections (system, user, assistant, etc.) to markdown sections.
57
+ * These are appended to the content after any markdown-defined sections.
58
+ */
59
+ injectYamlSections(metadata, content) {
60
+ const yamlSections = [];
61
+ // Standard section order: system → context → task → user → assistant → response → output
62
+ const sectionOrder = ['system', 'context', 'task', 'user', 'assistant', 'response', 'output'];
63
+ for (const sectionName of sectionOrder) {
64
+ const sectionValue = metadata[sectionName];
65
+ if (sectionValue) {
66
+ // Capitalize first letter for markdown heading
67
+ const headingName = sectionName.charAt(0).toUpperCase() + sectionName.slice(1);
68
+ if (Array.isArray(sectionValue)) {
69
+ // Array of file paths - will be processed by asset extraction stage
70
+ yamlSections.push(`# ${headingName}`);
71
+ yamlSections.push(`[YAML section with ${sectionValue.length} file reference(s) - will be processed by asset extraction]`);
72
+ }
73
+ else if (typeof sectionValue === 'string') {
74
+ // Direct string content or single file path
75
+ yamlSections.push(`# ${headingName}`);
76
+ yamlSections.push(sectionValue);
77
+ }
78
+ }
79
+ }
80
+ // Append YAML sections to existing content
81
+ if (yamlSections.length > 0) {
82
+ const yamlContent = yamlSections.join('\n\n');
83
+ return content ? `${content}\n\n${yamlContent}` : yamlContent;
84
+ }
85
+ return content;
86
+ }
87
+ getName() {
88
+ return 'Lexical Analysis';
89
+ }
90
+ }
91
+ exports.LexicalAnalysisStage = LexicalAnalysisStage;
92
+ //# sourceMappingURL=lexical.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lexical.js","sourceRoot":"","sources":["../../../../src/lib/compiler/stages/lexical.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Semantic Analysis Stage - Validate parameters and references.
3
+ *
4
+ * This stage validates the semantic correctness of the prompt, checks required
5
+ * parameters, applies default values, and validates parameter types.
6
+ */
7
+ import { CompilerStage, CompilationContext } from '../types';
8
+ export declare class SemanticAnalysisStage implements CompilerStage {
9
+ process(context: CompilationContext): Promise<void>;
10
+ /**
11
+ * Validate parameter type.
12
+ */
13
+ private validateParameterType;
14
+ /**
15
+ * Validate required metadata fields (id, name, version).
16
+ */
17
+ private validateRequiredMetadata;
18
+ getName(): string;
19
+ }
20
+ //# sourceMappingURL=semantic.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"semantic.d.ts","sourceRoot":"","sources":["../../../../src/lib/compiler/stages/semantic.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAE7D,qBAAa,qBAAsB,YAAW,aAAa;IACnD,OAAO,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IAiFzD;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAmB7B;;OAEG;IACH,OAAO,CAAC,wBAAwB;IAoEhC,OAAO,IAAI,MAAM;CAGlB"}
@@ -0,0 +1,166 @@
1
+ "use strict";
2
+ /**
3
+ * Semantic Analysis Stage - Validate parameters and references.
4
+ *
5
+ * This stage validates the semantic correctness of the prompt, checks required
6
+ * parameters, applies default values, and validates parameter types.
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.SemanticAnalysisStage = void 0;
10
+ class SemanticAnalysisStage {
11
+ async process(context) {
12
+ if (!context.metadata) {
13
+ return;
14
+ }
15
+ // Validate required metadata fields
16
+ this.validateRequiredMetadata(context);
17
+ // Merge default parameter values and validate required parameters
18
+ if (context.metadata.parameters) {
19
+ // Only validate required parameters if we're in execution mode (parameters were explicitly provided).
20
+ // When editing/validating a file (no parameters passed), we shouldn't warn about
21
+ // required parameters since they'll be provided at execution time.
22
+ // A prompt definition file declaring required parameters is perfectly valid.
23
+ const isExecutionMode = Object.keys(context.parameters).length > 0;
24
+ for (const param of context.metadata.parameters) {
25
+ // Add default value if parameter not provided
26
+ if (!(param.name in context.parameters) && param.default !== undefined) {
27
+ context.parameters[param.name] = param.default;
28
+ if (context.verbose) {
29
+ console.log(`✓ Using default value for '${param.name}': ${param.default}`);
30
+ }
31
+ }
32
+ // Validate required parameters - only when executing (parameters were provided)
33
+ // Skip this check when just validating a definition file
34
+ if (isExecutionMode && param.required && !(param.name in context.parameters)) {
35
+ context.addWarning(`Required parameter '${param.name}' not provided`);
36
+ }
37
+ // Type validation for provided parameters
38
+ if (param.name in context.parameters) {
39
+ const value = context.parameters[param.name];
40
+ const isValid = this.validateParameterType(value, param.type);
41
+ if (!isValid) {
42
+ context.addWarning(`Parameter '${param.name}' has incorrect type. Expected: ${param.type}, got: ${typeof value}`);
43
+ }
44
+ }
45
+ // Pattern validation for string parameters
46
+ if (param.pattern && param.name in context.parameters) {
47
+ const value = String(context.parameters[param.name]);
48
+ const regex = new RegExp(param.pattern);
49
+ if (!regex.test(value)) {
50
+ context.addWarning(`Parameter '${param.name}' does not match pattern: ${param.pattern}`);
51
+ }
52
+ }
53
+ // Range validation for number parameters
54
+ if (param.type === 'number' && param.name in context.parameters) {
55
+ const value = Number(context.parameters[param.name]);
56
+ if (param.minimum !== undefined && value < param.minimum) {
57
+ context.addWarning(`Parameter '${param.name}' is below minimum value: ${param.minimum}`);
58
+ }
59
+ if (param.maximum !== undefined && value > param.maximum) {
60
+ context.addWarning(`Parameter '${param.name}' exceeds maximum value: ${param.maximum}`);
61
+ }
62
+ }
63
+ }
64
+ }
65
+ if (context.verbose && context.parameters) {
66
+ const paramCount = Object.keys(context.parameters).length;
67
+ console.log(`✓ Validated ${paramCount} parameter(s)`);
68
+ }
69
+ }
70
+ /**
71
+ * Validate parameter type.
72
+ */
73
+ validateParameterType(value, expectedType) {
74
+ switch (expectedType) {
75
+ case 'string':
76
+ return typeof value === 'string';
77
+ case 'number':
78
+ case 'integer':
79
+ case 'float':
80
+ return typeof value === 'number' && !isNaN(value);
81
+ case 'boolean':
82
+ return typeof value === 'boolean';
83
+ case 'array':
84
+ return Array.isArray(value);
85
+ case 'object':
86
+ return typeof value === 'object' && value !== null && !Array.isArray(value);
87
+ default:
88
+ return true; // Unknown type, allow it
89
+ }
90
+ }
91
+ /**
92
+ * Validate required metadata fields (id, name, version).
93
+ */
94
+ validateRequiredMetadata(context) {
95
+ const metadata = context.metadata;
96
+ if (!metadata)
97
+ return;
98
+ // Validate 'id' field
99
+ if (!metadata.id) {
100
+ const location = context.findLocation(/^---/m);
101
+ context.addDiagnostic({
102
+ message: "Required field 'id' is missing. Add a unique identifier for this prompt.",
103
+ severity: 'error',
104
+ source: 'semantic',
105
+ code: 'MISSING_ID',
106
+ line: location?.line ? location.line + 1 : 2,
107
+ column: 1
108
+ });
109
+ }
110
+ else if (typeof metadata.id === 'string') {
111
+ // Validate kebab-case format
112
+ if (!/^[a-z0-9-]+$/.test(metadata.id)) {
113
+ const location = context.findLocation(/^\s*id:/m);
114
+ context.addDiagnostic({
115
+ message: `ID '${metadata.id}' should use kebab-case format (lowercase letters, numbers, hyphens only).`,
116
+ severity: 'warning',
117
+ source: 'semantic',
118
+ code: 'INVALID_ID_FORMAT',
119
+ ...location
120
+ });
121
+ }
122
+ }
123
+ // Validate 'name' field
124
+ if (!metadata.name) {
125
+ const location = context.findLocation(/^---/m);
126
+ context.addDiagnostic({
127
+ message: "Required field 'name' is missing. Add a display name for this prompt.",
128
+ severity: 'error',
129
+ source: 'semantic',
130
+ code: 'MISSING_NAME',
131
+ line: location?.line ? location.line + 1 : 2,
132
+ column: 1
133
+ });
134
+ }
135
+ // Validate 'version' field
136
+ if (!metadata.version) {
137
+ const location = context.findLocation(/^---/m);
138
+ context.addDiagnostic({
139
+ message: "Required field 'version' is missing. Add a semantic version (e.g., 1.0.0).",
140
+ severity: 'error',
141
+ source: 'semantic',
142
+ code: 'MISSING_VERSION',
143
+ line: location?.line ? location.line + 1 : 2,
144
+ column: 1
145
+ });
146
+ }
147
+ else if (typeof metadata.version === 'string') {
148
+ // Validate semantic version format
149
+ if (!/^\d+\.\d+\.\d+(-[\w.]+)?(\+[\w.]+)?$/.test(metadata.version)) {
150
+ const location = context.findLocation(/^\s*version:/m);
151
+ context.addDiagnostic({
152
+ message: `Invalid semantic version '${metadata.version}'. Use format: MAJOR.MINOR.PATCH (e.g., 1.0.0)`,
153
+ severity: 'error',
154
+ source: 'semantic',
155
+ code: 'INVALID_VERSION',
156
+ ...location
157
+ });
158
+ }
159
+ }
160
+ }
161
+ getName() {
162
+ return 'Semantic Analysis';
163
+ }
164
+ }
165
+ exports.SemanticAnalysisStage = SemanticAnalysisStage;
166
+ //# sourceMappingURL=semantic.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"semantic.js","sourceRoot":"","sources":["../../../../src/lib/compiler/stages/semantic.ts"],"names":[],"mappings":"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"}