@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,456 @@
1
+ "use strict";
2
+ /**
3
+ * Asset Extraction Stage
4
+ *
5
+ * Extracts content from binary files (Excel, Word, PDF, Images) with
6
+ * comprehensive security validation.
7
+ *
8
+ * Supported formats:
9
+ * - Excel: .xlsx, .xls
10
+ * - Word: .docx
11
+ * - PDF: .pdf
12
+ * - Images: .png, .jpg, .jpeg, .gif (metadata only)
13
+ * - Text: .txt, .md, .json, .yaml, .yml
14
+ */
15
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
16
+ if (k2 === undefined) k2 = k;
17
+ var desc = Object.getOwnPropertyDescriptor(m, k);
18
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
19
+ desc = { enumerable: true, get: function() { return m[k]; } };
20
+ }
21
+ Object.defineProperty(o, k2, desc);
22
+ }) : (function(o, m, k, k2) {
23
+ if (k2 === undefined) k2 = k;
24
+ o[k2] = m[k];
25
+ }));
26
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
27
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
28
+ }) : function(o, v) {
29
+ o["default"] = v;
30
+ });
31
+ var __importStar = (this && this.__importStar) || (function () {
32
+ var ownKeys = function(o) {
33
+ ownKeys = Object.getOwnPropertyNames || function (o) {
34
+ var ar = [];
35
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
36
+ return ar;
37
+ };
38
+ return ownKeys(o);
39
+ };
40
+ return function (mod) {
41
+ if (mod && mod.__esModule) return mod;
42
+ var result = {};
43
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
44
+ __setModuleDefault(result, mod);
45
+ return result;
46
+ };
47
+ })();
48
+ var __importDefault = (this && this.__importDefault) || function (mod) {
49
+ return (mod && mod.__esModule) ? mod : { "default": mod };
50
+ };
51
+ Object.defineProperty(exports, "__esModule", { value: true });
52
+ exports.AssetExtractionStage = void 0;
53
+ const path = __importStar(require("path"));
54
+ const fs = __importStar(require("fs-extra"));
55
+ const xlsx = __importStar(require("xlsx"));
56
+ const mammoth_1 = __importDefault(require("mammoth"));
57
+ const errors_1 = require("../../errors");
58
+ const language_map_1 = require("../language-map");
59
+ // Dynamic imports for libraries with platform-specific builds
60
+ let pdfParse = null;
61
+ const loadPdfParse = async () => {
62
+ if (!pdfParse) {
63
+ pdfParse = (await Promise.resolve().then(() => __importStar(require('pdf-parse')))).default || (await Promise.resolve().then(() => __importStar(require('pdf-parse'))));
64
+ }
65
+ return pdfParse;
66
+ };
67
+ let sharp = null;
68
+ const loadSharp = async () => {
69
+ if (!sharp) {
70
+ try {
71
+ sharp = (await Promise.resolve().then(() => __importStar(require('sharp')))).default || (await Promise.resolve().then(() => __importStar(require('sharp'))));
72
+ }
73
+ catch (error) {
74
+ // Sharp not available (Node.js version issue)
75
+ console.warn('Sharp library not available - image metadata extraction disabled');
76
+ return null;
77
+ }
78
+ }
79
+ return sharp;
80
+ };
81
+ class AssetExtractionStage {
82
+ constructor() {
83
+ this.maxFileSize = 10 * 1024 * 1024; // 10MB
84
+ this.allowedExtensions = new Set([
85
+ '.xlsx', '.xls', // Excel
86
+ '.docx', // Word
87
+ '.pdf', // PDF
88
+ '.png', '.jpg', '.jpeg', '.gif', // Images
89
+ '.txt', '.md', '.markdown', // Text
90
+ '.json', '.yaml', '.yml', '.csv', // Data
91
+ '.sh', '.bash', '.zsh', '.fish', // Shell scripts (text extraction)
92
+ '.py', '.js', '.ts', '.go', '.rs', '.java', '.c', '.cpp', '.h', '.hpp', // Code files
93
+ '.html', '.xml', '.svg', '.css', '.scss' // Markup
94
+ ]);
95
+ }
96
+ async process(context) {
97
+ // Process YAML-defined section file references (system, user, assistant, etc.)
98
+ // Note: 'context' is handled separately to match Python CLI behavior
99
+ if (context.metadata) {
100
+ await this.processYamlSectionFiles(context);
101
+ }
102
+ // Process context files from metadata - adds to context.contexts array
103
+ // This is output at the TOP of the compiled result (matching Python CLI)
104
+ if (context.metadata?.context) {
105
+ await this.processContextFiles(context);
106
+ }
107
+ // Process inline file references in content: [file:./path/to/file.ext]
108
+ if (context.content) {
109
+ await this.processInlineFileReferences(context);
110
+ }
111
+ }
112
+ /**
113
+ * Process context files from metadata.
114
+ * Extracts file content and adds to context.contexts array.
115
+ * This matches the Python CLI behavior where context is output at the top.
116
+ */
117
+ async processContextFiles(context) {
118
+ if (!context.metadata?.context) {
119
+ return;
120
+ }
121
+ // Normalize to array
122
+ const contextFiles = Array.isArray(context.metadata.context)
123
+ ? context.metadata.context.map(f => String(f))
124
+ : [String(context.metadata.context)];
125
+ // Extract content from each context file and add to contexts array
126
+ for (const ctxFileStr of contextFiles) {
127
+ try {
128
+ const extractedContent = await this.extractFile(context, ctxFileStr);
129
+ if (extractedContent) {
130
+ const fileName = path.basename(ctxFileStr);
131
+ context.contexts.push(`## Context from ${fileName}\n\n${extractedContent}`);
132
+ if (context.verbose) {
133
+ console.log(`✓ Extracted context from: ${fileName}`);
134
+ }
135
+ }
136
+ }
137
+ catch (error) {
138
+ const errorMessage = error instanceof Error ? error.message : String(error);
139
+ context.addError(`Failed to extract context from ${ctxFileStr}: ${errorMessage}`);
140
+ return; // Stop processing on extraction failure
141
+ }
142
+ }
143
+ // Remove the # Context section from content since we've added to context.contexts
144
+ if (context.content && contextFiles.length > 0) {
145
+ if (Array.isArray(context.metadata.context)) {
146
+ const placeholder = `[YAML section with ${context.metadata.context.length} file reference(s) - will be processed by asset extraction]`;
147
+ context.content = context.content.replace(placeholder, '');
148
+ }
149
+ else {
150
+ context.content = context.content.replace(String(context.metadata.context), '');
151
+ }
152
+ // Remove the empty # Context heading
153
+ context.content = context.content.replace(/# Context\s*\n+/g, '');
154
+ context.content = context.content.trim();
155
+ }
156
+ }
157
+ /**
158
+ * Process YAML-defined section file references.
159
+ * Replaces placeholder content with extracted file content.
160
+ */
161
+ async processYamlSectionFiles(context) {
162
+ if (!context.content || !context.metadata) {
163
+ return;
164
+ }
165
+ const sectionNames = ['system', 'task', 'user', 'assistant', 'response', 'output'];
166
+ for (const sectionName of sectionNames) {
167
+ const sectionValue = context.metadata[sectionName];
168
+ if (Array.isArray(sectionValue)) {
169
+ // Array of file paths
170
+ const extractedContents = [];
171
+ for (const filePath of sectionValue) {
172
+ try {
173
+ const content = await this.extractFile(context, String(filePath));
174
+ if (content) {
175
+ extractedContents.push(content);
176
+ if (context.verbose) {
177
+ console.log(`✓ Extracted ${sectionName} content from: ${path.basename(String(filePath))}`);
178
+ }
179
+ }
180
+ }
181
+ catch (error) {
182
+ const errorMessage = error instanceof Error ? error.message : String(error);
183
+ context.addError(`Failed to extract ${sectionName} file ${filePath}: ${errorMessage}`);
184
+ return;
185
+ }
186
+ }
187
+ // Replace placeholder in content
188
+ if (extractedContents.length > 0) {
189
+ const placeholder = `[YAML section with ${sectionValue.length} file reference(s) - will be processed by asset extraction]`;
190
+ const replacement = extractedContents.join('\n\n');
191
+ context.content = context.content.replace(placeholder, replacement);
192
+ }
193
+ }
194
+ else if (typeof sectionValue === 'string' && (sectionValue.startsWith('./') || sectionValue.startsWith('../'))) {
195
+ // Single file path (starts with relative path indicators)
196
+ try {
197
+ const content = await this.extractFile(context, sectionValue);
198
+ if (content) {
199
+ // Replace the file path with extracted content
200
+ context.content = context.content.replace(sectionValue, content);
201
+ if (context.verbose) {
202
+ console.log(`✓ Extracted ${sectionName} content from: ${path.basename(sectionValue)}`);
203
+ }
204
+ }
205
+ }
206
+ catch (error) {
207
+ const errorMessage = error instanceof Error ? error.message : String(error);
208
+ context.addError(`Failed to extract ${sectionName} file ${sectionValue}: ${errorMessage}`);
209
+ return;
210
+ }
211
+ }
212
+ }
213
+ }
214
+ /**
215
+ * Process inline file references in content.
216
+ * Replaces [file:./path] placeholders with extracted content.
217
+ */
218
+ async processInlineFileReferences(context) {
219
+ if (!context.content) {
220
+ return;
221
+ }
222
+ // Find all [file:...] references
223
+ const fileRefRegex = /\[file:([^\]]+)\]/g;
224
+ const matches = [...context.content.matchAll(fileRefRegex)];
225
+ if (matches.length === 0) {
226
+ return; // No file references to process
227
+ }
228
+ let processedContent = context.content;
229
+ for (const match of matches) {
230
+ const fullMatch = match[0];
231
+ const filePath = match[1];
232
+ try {
233
+ const extractedContent = await this.extractFile(context, filePath);
234
+ if (extractedContent) {
235
+ // Replace the placeholder with extracted content
236
+ processedContent = processedContent.replace(fullMatch, extractedContent);
237
+ if (context.verbose) {
238
+ console.log(`✓ Extracted inline file: ${filePath}`);
239
+ }
240
+ }
241
+ }
242
+ catch (error) {
243
+ const errorMessage = error instanceof Error ? error.message : String(error);
244
+ context.addError(`Failed to extract inline file ${filePath}: ${errorMessage}`);
245
+ return; // Stop processing on extraction failure
246
+ }
247
+ }
248
+ context.content = processedContent;
249
+ }
250
+ /**
251
+ * Extract content from a file with security validation.
252
+ */
253
+ async extractFile(context, filePathStr) {
254
+ // Resolve relative paths relative to source file
255
+ const sourceDir = context.fileSystem.dirname(context.sourceFile);
256
+ let filePath;
257
+ // Use fileSystem's resolve method for path resolution
258
+ if (filePathStr.startsWith('./') || filePathStr.startsWith('../')) {
259
+ // Relative path - resolve from source directory
260
+ filePath = context.fileSystem.resolve(sourceDir, filePathStr);
261
+ }
262
+ else if (path.isAbsolute(filePathStr)) {
263
+ // Absolute path
264
+ filePath = filePathStr;
265
+ }
266
+ else {
267
+ // Relative to source directory
268
+ filePath = context.fileSystem.join(sourceDir, filePathStr);
269
+ }
270
+ // Security: Check file exists using fileSystem abstraction
271
+ const exists = await Promise.resolve(context.fileSystem.exists(filePath));
272
+ if (!exists) {
273
+ throw new Error(`Context file not found: ${filePath}`);
274
+ }
275
+ // Extract based on file type
276
+ const ext = path.extname(filePath).toLowerCase();
277
+ try {
278
+ switch (ext) {
279
+ case '.xlsx':
280
+ case '.xls':
281
+ return await this.extractExcel(filePath);
282
+ case '.docx':
283
+ return await this.extractWord(filePath);
284
+ case '.pdf':
285
+ return await this.extractPdf(filePath);
286
+ case '.png':
287
+ case '.jpg':
288
+ case '.jpeg':
289
+ case '.gif':
290
+ return await this.extractImageMetadata(filePath);
291
+ default:
292
+ // All other allowed extensions are treated as text
293
+ return await this.extractText(context, filePath);
294
+ }
295
+ }
296
+ catch (error) {
297
+ throw new Error(`Extraction failed for ${path.basename(filePath)}: ${error instanceof Error ? error.message : String(error)}`);
298
+ }
299
+ }
300
+ /**
301
+ * Security: Validate file path for path traversal and other attacks.
302
+ */
303
+ async validateFilePath(filePath, sourceDir) {
304
+ // Normalize path
305
+ const normalized = path.normalize(filePath);
306
+ // Check for null bytes (directory traversal attack)
307
+ if (normalized.includes('\0')) {
308
+ throw new errors_1.SecurityError('Null byte detected in file path');
309
+ }
310
+ // Ensure resolved path doesn't escape project boundaries
311
+ const projectRoot = process.cwd();
312
+ if (!normalized.startsWith(sourceDir) && !normalized.startsWith(projectRoot)) {
313
+ throw new errors_1.SecurityError(`File path outside allowed directories: ${filePath}`);
314
+ }
315
+ }
316
+ /**
317
+ * Security: Validate file properties.
318
+ */
319
+ async validateFile(filePath) {
320
+ const stats = await fs.stat(filePath);
321
+ // Security: Must be a regular file (not symlink, device, etc.)
322
+ if (!stats.isFile()) {
323
+ throw new errors_1.SecurityError(`Path must be a regular file: ${filePath}`);
324
+ }
325
+ // Security: Check file size
326
+ if (stats.size > this.maxFileSize) {
327
+ throw new errors_1.SecurityError(`File too large: ${stats.size} bytes (max: ${this.maxFileSize})`);
328
+ }
329
+ // Security: Check file extension
330
+ const ext = path.extname(filePath).toLowerCase();
331
+ if (!this.allowedExtensions.has(ext)) {
332
+ throw new errors_1.SecurityError(`File extension not allowed: ${ext}`);
333
+ }
334
+ }
335
+ /**
336
+ * Extract content from Excel files.
337
+ */
338
+ async extractExcel(filePath) {
339
+ try {
340
+ const workbook = xlsx.readFile(filePath);
341
+ const sheets = [];
342
+ for (const sheetName of workbook.SheetNames) {
343
+ const sheet = workbook.Sheets[sheetName];
344
+ // Convert sheet to CSV format
345
+ const csv = xlsx.utils.sheet_to_csv(sheet);
346
+ if (csv.trim()) {
347
+ sheets.push(`### Sheet: ${sheetName}\n\n\`\`\`csv\n${csv}\n\`\`\``);
348
+ }
349
+ }
350
+ return sheets.join('\n\n');
351
+ }
352
+ catch (error) {
353
+ throw new Error(`Excel extraction failed: ${error instanceof Error ? error.message : String(error)}`);
354
+ }
355
+ }
356
+ /**
357
+ * Extract content from Word documents.
358
+ */
359
+ async extractWord(filePath) {
360
+ try {
361
+ const buffer = await fs.readFile(filePath);
362
+ const result = await mammoth_1.default.extractRawText({ buffer });
363
+ // Security: Limit output size
364
+ const maxOutputSize = 1024 * 1024; // 1MB
365
+ if (result.value.length > maxOutputSize) {
366
+ return result.value.substring(0, maxOutputSize) + '\n\n[Content truncated...]';
367
+ }
368
+ return result.value;
369
+ }
370
+ catch (error) {
371
+ throw new Error(`Word extraction failed: ${error instanceof Error ? error.message : String(error)}`);
372
+ }
373
+ }
374
+ /**
375
+ * Extract content from PDF files.
376
+ */
377
+ async extractPdf(filePath) {
378
+ try {
379
+ const buffer = await fs.readFile(filePath);
380
+ // Load pdf-parse dynamically
381
+ const pdf = await loadPdfParse();
382
+ // Security: Set max pages to prevent DoS
383
+ const data = await pdf(buffer, {
384
+ max: 100 // Maximum 100 pages
385
+ });
386
+ // Security: Limit output size
387
+ const maxOutputSize = 1024 * 1024; // 1MB
388
+ if (data.text.length > maxOutputSize) {
389
+ return data.text.substring(0, maxOutputSize) + '\n\n[Content truncated...]';
390
+ }
391
+ return data.text;
392
+ }
393
+ catch (error) {
394
+ throw new Error(`PDF extraction failed: ${error instanceof Error ? error.message : String(error)}`);
395
+ }
396
+ }
397
+ /**
398
+ * Extract metadata from images (OCR not implemented).
399
+ */
400
+ async extractImageMetadata(filePath) {
401
+ try {
402
+ // Load sharp dynamically
403
+ const sharpLib = await loadSharp();
404
+ if (!sharpLib) {
405
+ return `Image: ${path.basename(filePath)}\n\n*Note: Image metadata extraction requires Node.js >=20.3.0 or >=21.0.0*`;
406
+ }
407
+ const metadata = await sharpLib(filePath).metadata();
408
+ const info = [
409
+ `Image: ${path.basename(filePath)}`,
410
+ `Format: ${metadata.format}`,
411
+ `Dimensions: ${metadata.width}x${metadata.height}`,
412
+ `Color Space: ${metadata.space}`,
413
+ metadata.density ? `DPI: ${metadata.density}` : null
414
+ ].filter(Boolean).join('\n');
415
+ return `\`\`\`\n${info}\n\`\`\`\n\n*Note: OCR not implemented. Only metadata extracted.*`;
416
+ }
417
+ catch (error) {
418
+ throw new Error(`Image metadata extraction failed: ${error instanceof Error ? error.message : String(error)}`);
419
+ }
420
+ }
421
+ /**
422
+ * Extract plain text content.
423
+ * For code files, wraps content in markdown code blocks with appropriate language identifier.
424
+ */
425
+ async extractText(context, filePath) {
426
+ try {
427
+ // Use fileSystem abstraction for text file reading (supports MemoryFileSystem)
428
+ let content = await Promise.resolve(context.fileSystem.readFile(filePath));
429
+ // Security: Limit output size
430
+ const maxOutputSize = 1024 * 1024; // 1MB
431
+ if (content.length > maxOutputSize) {
432
+ content = content.substring(0, maxOutputSize) + '\n\n[Content truncated...]';
433
+ }
434
+ // Security: Remove any null bytes
435
+ content = content.replace(/\0/g, '');
436
+ // Get file extension and check if it's a code file that should be wrapped
437
+ const ext = path.extname(filePath).toLowerCase();
438
+ const language = (0, language_map_1.getLanguageForExtension)(ext);
439
+ if (language) {
440
+ // Wrap code files in markdown code blocks with language identifier
441
+ // This enables code block filtering based on context file types
442
+ return '```' + language + '\n' + content + '\n```';
443
+ }
444
+ // Return plain text for non-code files (.txt, etc.)
445
+ return content;
446
+ }
447
+ catch (error) {
448
+ throw new Error(`Text extraction failed: ${error instanceof Error ? error.message : String(error)}`);
449
+ }
450
+ }
451
+ getName() {
452
+ return 'Asset Extraction';
453
+ }
454
+ }
455
+ exports.AssetExtractionStage = AssetExtractionStage;
456
+ //# sourceMappingURL=assets.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"assets.js","sourceRoot":"","sources":["../../../../src/lib/compiler/stages/assets.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Code Generation Stage
3
+ *
4
+ * Generates output in the target format using registered formatters.
5
+ */
6
+ import { CompilerStage, CompilationContext, OutputFormatter } from '../types';
7
+ export declare class CodeGenerationStage implements CompilerStage {
8
+ private formatters;
9
+ constructor(formatters?: Map<string, OutputFormatter>);
10
+ /**
11
+ * Register a new output formatter.
12
+ */
13
+ registerFormatter(formatter: OutputFormatter): void;
14
+ process(context: CompilationContext): Promise<void>;
15
+ getName(): string;
16
+ }
17
+ //# sourceMappingURL=codegen.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codegen.d.ts","sourceRoot":"","sources":["../../../../src/lib/compiler/stages/codegen.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,eAAe,EAAkB,MAAM,UAAU,CAAC;AAK9F,qBAAa,mBAAoB,YAAW,aAAa;IACvD,OAAO,CAAC,UAAU,CAA+B;gBAErC,UAAU,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC;IASrD;;OAEG;IACH,iBAAiB,CAAC,SAAS,EAAE,eAAe,GAAG,IAAI;IAI7C,OAAO,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IAuCzD,OAAO,IAAI,MAAM;CAGlB"}
@@ -0,0 +1,64 @@
1
+ "use strict";
2
+ /**
3
+ * Code Generation Stage
4
+ *
5
+ * Generates output in the target format using registered formatters.
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.CodeGenerationStage = void 0;
9
+ const markdown_1 = require("../formatters/markdown");
10
+ const openai_1 = require("../formatters/openai");
11
+ const anthropic_1 = require("../formatters/anthropic");
12
+ class CodeGenerationStage {
13
+ constructor(formatters) {
14
+ this.formatters = formatters || new Map();
15
+ // Register default formatters
16
+ this.registerFormatter(new markdown_1.MarkdownFormatter());
17
+ this.registerFormatter(new openai_1.OpenAIFormatter());
18
+ this.registerFormatter(new anthropic_1.AnthropicFormatter());
19
+ }
20
+ /**
21
+ * Register a new output formatter.
22
+ */
23
+ registerFormatter(formatter) {
24
+ this.formatters.set(formatter.name, formatter);
25
+ }
26
+ async process(context) {
27
+ let formatName = context.outputFormat;
28
+ // Handle legacy format names
29
+ if (formatName.startsWith('to-')) {
30
+ formatName = formatName.substring(3);
31
+ }
32
+ // Handle provider-json shorthand
33
+ if (formatName === 'provider-json') {
34
+ formatName = 'provider-json:openai'; // Default to OpenAI
35
+ }
36
+ const formatter = this.formatters.get(formatName);
37
+ if (!formatter) {
38
+ context.addError(`Unknown output format: ${formatName}`);
39
+ return;
40
+ }
41
+ try {
42
+ const compiled = {
43
+ metadata: context.metadata,
44
+ content: context.content,
45
+ contexts: context.contexts,
46
+ parameters: context.parameters,
47
+ verbose: context.verbose
48
+ };
49
+ context.compiledResult = await formatter.format(compiled);
50
+ if (context.verbose) {
51
+ console.log(`✓ Generated output in format: ${formatName}`);
52
+ }
53
+ }
54
+ catch (error) {
55
+ const errorMessage = error instanceof Error ? error.message : String(error);
56
+ context.addError(`Code generation failed: ${errorMessage}`);
57
+ }
58
+ }
59
+ getName() {
60
+ return 'Code Generation';
61
+ }
62
+ }
63
+ exports.CodeGenerationStage = CodeGenerationStage;
64
+ //# sourceMappingURL=codegen.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codegen.js","sourceRoot":"","sources":["../../../../src/lib/compiler/stages/codegen.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAGH,qDAA2D;AAC3D,iDAAuD;AACvD,uDAA6D;AAE7D,MAAa,mBAAmB;IAG9B,YAAY,UAAyC;QACnD,IAAI,CAAC,UAAU,GAAG,UAAU,IAAI,IAAI,GAAG,EAAE,CAAC;QAE1C,8BAA8B;QAC9B,IAAI,CAAC,iBAAiB,CAAC,IAAI,4BAAiB,EAAE,CAAC,CAAC;QAChD,IAAI,CAAC,iBAAiB,CAAC,IAAI,wBAAe,EAAE,CAAC,CAAC;QAC9C,IAAI,CAAC,iBAAiB,CAAC,IAAI,8BAAkB,EAAE,CAAC,CAAC;IACnD,CAAC;IAED;;OAEG;IACH,iBAAiB,CAAC,SAA0B;QAC1C,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IACjD,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,OAA2B;QACvC,IAAI,UAAU,GAAG,OAAO,CAAC,YAAY,CAAC;QAEtC,6BAA6B;QAC7B,IAAI,UAAU,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;YACjC,UAAU,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QACvC,CAAC;QAED,iCAAiC;QACjC,IAAI,UAAU,KAAK,eAAe,EAAE,CAAC;YACnC,UAAU,GAAG,sBAAsB,CAAC,CAAC,oBAAoB;QAC3D,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAClD,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,OAAO,CAAC,QAAQ,CAAC,0BAA0B,UAAU,EAAE,CAAC,CAAC;YACzD,OAAO;QACT,CAAC;QAED,IAAI,CAAC;YACH,MAAM,QAAQ,GAAmB;gBAC/B,QAAQ,EAAE,OAAO,CAAC,QAAQ;gBAC1B,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,QAAQ,EAAE,OAAO,CAAC,QAAQ;gBAC1B,UAAU,EAAE,OAAO,CAAC,UAAU;gBAC9B,OAAO,EAAE,OAAO,CAAC,OAAO;aACzB,CAAC;YAEF,OAAO,CAAC,cAAc,GAAG,MAAM,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YAE1D,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;gBACpB,OAAO,CAAC,GAAG,CAAC,iCAAiC,UAAU,EAAE,CAAC,CAAC;YAC7D,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC5E,OAAO,CAAC,QAAQ,CAAC,2BAA2B,YAAY,EAAE,CAAC,CAAC;QAC9D,CAAC;IACH,CAAC;IAED,OAAO;QACL,OAAO,iBAAiB,CAAC;IAC3B,CAAC;CACF;AA7DD,kDA6DC"}
@@ -0,0 +1,38 @@
1
+ /**
2
+ * Dependency Resolution Stage
3
+ *
4
+ * Resolves 'using:' imports and 'inherits:' chains, handling both local file
5
+ * paths and package references with alias resolution.
6
+ *
7
+ * This is a direct port of the Python CLI's DependencyResolutionStage.
8
+ */
9
+ import { CompilerStage, CompilationContext } from '../types';
10
+ export declare class DependencyResolutionStage implements CompilerStage {
11
+ process(context: CompilationContext): Promise<void>;
12
+ /**
13
+ * Process the 'using' field for package imports.
14
+ */
15
+ private processUsingField;
16
+ /**
17
+ * Resolve a single package import.
18
+ */
19
+ private resolvePackageImport;
20
+ /**
21
+ * Process the 'inherits' field.
22
+ */
23
+ private processInheritsField;
24
+ /**
25
+ * Process content reference fields (system, context, user, assistant, response) for alias resolution.
26
+ */
27
+ private processContentFieldAliases;
28
+ /**
29
+ * Resolve alias prefixes in file paths.
30
+ *
31
+ * Examples:
32
+ * - "@pkg/templates/file.prmd" with "@pkg" aliased to "@scope/package@version"
33
+ * becomes "@scope/package@version/templates/file.prmd"
34
+ */
35
+ private resolveAliasInPath;
36
+ getName(): string;
37
+ }
38
+ //# sourceMappingURL=dependency.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dependency.d.ts","sourceRoot":"","sources":["../../../../src/lib/compiler/stages/dependency.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAmB,MAAM,UAAU,CAAC;AAG9E,qBAAa,yBAA0B,YAAW,aAAa;IACvD,OAAO,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IAyBzD;;OAEG;YACW,iBAAiB;IA+C/B;;OAEG;YACW,oBAAoB;IAuClC;;OAEG;YACW,oBAAoB;IAwIlC;;OAEG;YACW,0BAA0B;IA0CxC;;;;;;OAMG;IACH,OAAO,CAAC,kBAAkB;IA2B1B,OAAO,IAAI,MAAM;CAGlB"}