@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,440 @@
1
+ "use strict";
2
+ /**
3
+ * File System Abstraction
4
+ *
5
+ * Provides an abstraction layer for file system operations in the compiler.
6
+ * This allows the compiler to work with in-memory file systems (for server-side
7
+ * compilation) or the actual file system (for CLI usage).
8
+ */
9
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ var desc = Object.getOwnPropertyDescriptor(m, k);
12
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
13
+ desc = { enumerable: true, get: function() { return m[k]; } };
14
+ }
15
+ Object.defineProperty(o, k2, desc);
16
+ }) : (function(o, m, k, k2) {
17
+ if (k2 === undefined) k2 = k;
18
+ o[k2] = m[k];
19
+ }));
20
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
21
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
22
+ }) : function(o, v) {
23
+ o["default"] = v;
24
+ });
25
+ var __importStar = (this && this.__importStar) || (function () {
26
+ var ownKeys = function(o) {
27
+ ownKeys = Object.getOwnPropertyNames || function (o) {
28
+ var ar = [];
29
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
30
+ return ar;
31
+ };
32
+ return ownKeys(o);
33
+ };
34
+ return function (mod) {
35
+ if (mod && mod.__esModule) return mod;
36
+ var result = {};
37
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
38
+ __setModuleDefault(result, mod);
39
+ return result;
40
+ };
41
+ })();
42
+ var __importDefault = (this && this.__importDefault) || function (mod) {
43
+ return (mod && mod.__esModule) ? mod : { "default": mod };
44
+ };
45
+ Object.defineProperty(exports, "__esModule", { value: true });
46
+ exports.MemoryFileSystem = exports.NodeFileSystem = void 0;
47
+ exports.getDefaultFileSystem = getDefaultFileSystem;
48
+ const fs = __importStar(require("fs-extra"));
49
+ const path = __importStar(require("path"));
50
+ const adm_zip_1 = __importDefault(require("adm-zip"));
51
+ /**
52
+ * Default file system implementation that uses Node.js fs module.
53
+ */
54
+ class NodeFileSystem {
55
+ exists(filePath) {
56
+ return fs.existsSync(filePath);
57
+ }
58
+ readFile(filePath) {
59
+ return fs.readFileSync(filePath, 'utf-8');
60
+ }
61
+ isDirectory(filePath) {
62
+ return this.exists(filePath) && fs.statSync(filePath).isDirectory();
63
+ }
64
+ readdir(dirPath) {
65
+ return fs.readdirSync(dirPath);
66
+ }
67
+ resolve(...pathSegments) {
68
+ return path.resolve(...pathSegments);
69
+ }
70
+ dirname(filePath) {
71
+ return path.dirname(filePath);
72
+ }
73
+ join(...pathSegments) {
74
+ return path.join(...pathSegments);
75
+ }
76
+ }
77
+ exports.NodeFileSystem = NodeFileSystem;
78
+ /**
79
+ * In-memory file system for server-side compilation.
80
+ * Files are provided as a map of path -> content.
81
+ */
82
+ class MemoryFileSystem {
83
+ constructor(files = {}) {
84
+ this.files = new Map();
85
+ // Normalize paths when adding initial files
86
+ for (const [path, content] of Object.entries(files)) {
87
+ this.addFile(path, content);
88
+ }
89
+ }
90
+ /**
91
+ * Add or update a file in the in-memory file system.
92
+ */
93
+ addFile(filePath, content) {
94
+ this.files.set(this.normalizePath(filePath), content);
95
+ }
96
+ /**
97
+ * Add multiple files at once.
98
+ */
99
+ addFiles(files) {
100
+ for (const [filePath, content] of Object.entries(files)) {
101
+ this.addFile(filePath, content);
102
+ }
103
+ }
104
+ exists(filePath) {
105
+ return this.files.has(this.normalizePath(filePath));
106
+ }
107
+ readFile(filePath) {
108
+ const normalizedPath = this.normalizePath(filePath);
109
+ const content = this.files.get(normalizedPath);
110
+ if (content === undefined) {
111
+ throw new Error(`File not found: ${filePath}`);
112
+ }
113
+ return content;
114
+ }
115
+ isDirectory(filePath) {
116
+ // In memory FS: treat as directory if any file starts with this path
117
+ const normalizedPath = this.normalizePath(filePath);
118
+ const dirPrefix = normalizedPath.endsWith('/') ? normalizedPath : normalizedPath + '/';
119
+ for (const file of this.files.keys()) {
120
+ if (file.startsWith(dirPrefix)) {
121
+ return true;
122
+ }
123
+ }
124
+ return false;
125
+ }
126
+ readdir(dirPath) {
127
+ const normalizedDir = this.normalizePath(dirPath);
128
+ const dirPrefix = normalizedDir.endsWith('/') ? normalizedDir : normalizedDir + '/';
129
+ const files = new Set();
130
+ for (const file of this.files.keys()) {
131
+ if (file.startsWith(dirPrefix)) {
132
+ // Get the relative path from the directory
133
+ const relativePath = file.substring(dirPrefix.length);
134
+ // Only include immediate children (not nested)
135
+ const slashIndex = relativePath.indexOf('/');
136
+ const fileName = slashIndex === -1 ? relativePath : relativePath.substring(0, slashIndex);
137
+ if (fileName) {
138
+ files.add(fileName);
139
+ }
140
+ }
141
+ }
142
+ return Array.from(files);
143
+ }
144
+ resolve(...pathSegments) {
145
+ return path.posix.join('/', ...pathSegments);
146
+ }
147
+ dirname(filePath) {
148
+ return path.posix.dirname(filePath);
149
+ }
150
+ join(...pathSegments) {
151
+ return path.posix.join(...pathSegments);
152
+ }
153
+ /**
154
+ * Validate package name against npm/semver standards.
155
+ * Prevents path traversal and injection attacks.
156
+ */
157
+ validatePackageName(name) {
158
+ // Allow dots, hyphens, and alphanumeric in npm-style scoped packages
159
+ const pattern = /^@[a-z0-9.-]+\/[a-z0-9.-]+$/;
160
+ if (!pattern.test(name)) {
161
+ throw new Error(`Invalid package name: ${name}. Must match @namespace/package format.`);
162
+ }
163
+ // Additional security checks
164
+ if (name.includes('..') || name.includes('/./') || name.includes('//')) {
165
+ throw new Error(`Security violation: Invalid characters in package name: ${name}`);
166
+ }
167
+ }
168
+ /**
169
+ * Validate semantic version format.
170
+ */
171
+ validateVersion(version) {
172
+ const semverPattern = /^\d+\.\d+\.\d+(-[a-zA-Z0-9.-]+)?(\+[a-zA-Z0-9.-]+)?$/;
173
+ if (!semverPattern.test(version)) {
174
+ throw new Error(`Invalid version format: ${version}. Must be semantic version (e.g., 1.0.0)`);
175
+ }
176
+ }
177
+ /**
178
+ * Validate ZIP package structure before extraction.
179
+ * Prevents: zip bombs, path traversal, symlink attacks.
180
+ */
181
+ validateZipStructure(zip) {
182
+ const entries = zip.getEntries();
183
+ let fileCount = 0;
184
+ let totalSize = 0;
185
+ for (const entry of entries) {
186
+ fileCount++;
187
+ totalSize += entry.header.size;
188
+ // Check file count limit
189
+ if (fileCount > MemoryFileSystem.MAX_FILE_COUNT) {
190
+ throw new Error(`Package contains too many files (max: ${MemoryFileSystem.MAX_FILE_COUNT})`);
191
+ }
192
+ // Check total size
193
+ if (totalSize > MemoryFileSystem.MAX_PACKAGE_SIZE) {
194
+ throw new Error(`Package too large (max: ${MemoryFileSystem.MAX_PACKAGE_SIZE} bytes)`);
195
+ }
196
+ // Validate entry path (security checks)
197
+ this.validateZipEntry(entry);
198
+ }
199
+ }
200
+ /**
201
+ * Validate a single ZIP entry for security issues.
202
+ */
203
+ validateZipEntry(entry) {
204
+ const entryPath = entry.entryName;
205
+ // 1. Path traversal prevention
206
+ if (entryPath.includes('..') || entryPath.startsWith('/') || entryPath.startsWith('\\')) {
207
+ throw new Error(`Security violation: Path traversal attempt (${entryPath})`);
208
+ }
209
+ // 2. Absolute path prevention
210
+ if (path.isAbsolute(entryPath)) {
211
+ throw new Error(`Security violation: Absolute path (${entryPath})`);
212
+ }
213
+ // 3. File size limit
214
+ if (entry.header.size > MemoryFileSystem.MAX_FILE_SIZE) {
215
+ throw new Error(`File too large: ${entryPath} (${entry.header.size} bytes, max: ${MemoryFileSystem.MAX_FILE_SIZE})`);
216
+ }
217
+ // 4. Prevent null bytes in paths
218
+ if (entryPath.includes('\0')) {
219
+ throw new Error(`Security violation: Null byte in path (${entryPath})`);
220
+ }
221
+ }
222
+ /**
223
+ * Add a package from a ZIP Buffer to the in-memory file system.
224
+ * Extracts the .pdpkg (ZIP) and stores all files with the package path prefix.
225
+ * SECURITY: Validates package name, version, and ZIP structure.
226
+ *
227
+ * @param packageName - Full package name (e.g., "@namespace/package-name")
228
+ * @param version - Package version (e.g., "1.0.0")
229
+ * @param packageBuffer - Buffer containing the .pdpkg (ZIP) file
230
+ */
231
+ async addPackage(packageName, version, packageBuffer) {
232
+ // 1. VALIDATE INPUTS
233
+ this.validatePackageName(packageName);
234
+ this.validateVersion(version);
235
+ // 2. CHECK BUFFER SIZE
236
+ if (packageBuffer.length > MemoryFileSystem.MAX_PACKAGE_SIZE) {
237
+ throw new Error(`Package too large: ${packageBuffer.length} bytes (max: ${MemoryFileSystem.MAX_PACKAGE_SIZE})`);
238
+ }
239
+ // 3. OPEN AND VALIDATE ZIP STRUCTURE
240
+ const zip = new adm_zip_1.default(packageBuffer);
241
+ this.validateZipStructure(zip);
242
+ // 4. EXTRACT TO MEMORY
243
+ const packagePath = this.getPackagePath(packageName, version);
244
+ const entries = zip.getEntries();
245
+ for (const entry of entries) {
246
+ // Skip directories
247
+ if (entry.isDirectory) {
248
+ continue;
249
+ }
250
+ // Get file content
251
+ const content = entry.getData().toString('utf8');
252
+ const entryPath = entry.entryName;
253
+ // Build virtual path: /packages/@namespace/package@version/path/to/file
254
+ const filePath = this.join(packagePath, entryPath);
255
+ this.addFile(filePath, content);
256
+ }
257
+ }
258
+ /**
259
+ * Recursively load a directory's contents into the in-memory file system.
260
+ *
261
+ * @param sourceDir - Directory to read from disk
262
+ * @param targetPath - Virtual path in memory file system
263
+ */
264
+ async loadDirectoryToMemory(sourceDir, targetPath) {
265
+ const entries = await fs.readdir(sourceDir);
266
+ for (const entry of entries) {
267
+ const sourcePath = path.join(sourceDir, entry);
268
+ const stat = await fs.stat(sourcePath);
269
+ if (stat.isDirectory()) {
270
+ // Recursively load subdirectories
271
+ const subTargetPath = this.join(targetPath, entry);
272
+ await this.loadDirectoryToMemory(sourcePath, subTargetPath);
273
+ }
274
+ else if (stat.isFile()) {
275
+ // Read file content and add to memory
276
+ const content = await fs.readFile(sourcePath, 'utf-8');
277
+ const filePath = this.join(targetPath, entry);
278
+ this.addFile(filePath, content);
279
+ }
280
+ }
281
+ }
282
+ /**
283
+ * Add a package from the registry to the in-memory file system.
284
+ * Downloads the package tarball and extracts it to memory.
285
+ *
286
+ * @param packageRef - Package reference (e.g., "@namespace/package@1.0.0")
287
+ * @param downloadFn - Optional function to download package, receives (packageName, version) and returns {tarball: Buffer, metadata: any}
288
+ */
289
+ async addPackageFromRegistry(packageRef, downloadFn) {
290
+ // Parse package reference
291
+ const { packageName, version } = this.parsePackageReference(packageRef);
292
+ if (!downloadFn) {
293
+ throw new Error('downloadFn is required to fetch packages from registry. Pass RegistryClient.downloadPackageBuffer');
294
+ }
295
+ // Download package
296
+ const packageData = await downloadFn(packageName, version);
297
+ // Extract to memory
298
+ await this.addPackage(packageName, version, packageData.tarball);
299
+ }
300
+ /**
301
+ * Get the virtual file system path for a package.
302
+ *
303
+ * @param packageName - Full package name (e.g., "@namespace/package-name")
304
+ * @param version - Package version (e.g., "1.0.0")
305
+ * @returns Virtual path (e.g., "/packages/@namespace/package-name@1.0.0")
306
+ */
307
+ getPackagePath(packageName, version) {
308
+ return `/packages/${packageName}@${version}`;
309
+ }
310
+ /**
311
+ * Parse a package reference into name and version.
312
+ *
313
+ * @param packageRef - Package reference (e.g., "@namespace/package@1.0.0")
314
+ * @returns Object with packageName and version
315
+ */
316
+ parsePackageReference(packageRef) {
317
+ // Handle scoped packages: @namespace/package@version
318
+ const match = packageRef.match(/^(@[^/]+\/[^@]+)@(.+)$/);
319
+ if (!match) {
320
+ throw new Error(`Invalid package reference: ${packageRef}. Expected format: @namespace/package@version`);
321
+ }
322
+ return {
323
+ packageName: match[1],
324
+ version: match[2]
325
+ };
326
+ }
327
+ /**
328
+ * Normalize path to use forward slashes and ensure consistency.
329
+ */
330
+ normalizePath(filePath) {
331
+ // Convert backslashes to forward slashes
332
+ let normalized = filePath.replace(/\\/g, '/');
333
+ // Remove leading ./ if present
334
+ if (normalized.startsWith('./')) {
335
+ normalized = normalized.substring(2);
336
+ }
337
+ // Remove leading / for consistency (treat all paths as relative)
338
+ if (normalized.startsWith('/')) {
339
+ normalized = normalized.substring(1);
340
+ }
341
+ // Ensure no trailing slash for files
342
+ if (normalized.endsWith('/') && normalized.length > 1) {
343
+ normalized = normalized.substring(0, normalized.length - 1);
344
+ }
345
+ return normalized;
346
+ }
347
+ /**
348
+ * Get all files under a base path.
349
+ *
350
+ * @param basePath - Optional base path to filter files
351
+ * @returns Map of file paths to content
352
+ */
353
+ getAllFiles(basePath) {
354
+ if (!basePath) {
355
+ return new Map(this.files);
356
+ }
357
+ const normalizedBase = this.normalizePath(basePath);
358
+ const prefix = normalizedBase.endsWith('/') ? normalizedBase : normalizedBase + '/';
359
+ const filtered = new Map();
360
+ for (const [filePath, content] of this.files.entries()) {
361
+ if (filePath.startsWith(prefix) || filePath === normalizedBase) {
362
+ filtered.set(filePath, content);
363
+ }
364
+ }
365
+ return filtered;
366
+ }
367
+ /**
368
+ * Calculate total size of files under base path.
369
+ *
370
+ * @param basePath - Base path to calculate size for
371
+ * @returns Object with size in bytes and file count
372
+ */
373
+ getTotalSize(basePath) {
374
+ const files = this.getAllFiles(basePath);
375
+ let totalSize = 0;
376
+ for (const content of files.values()) {
377
+ totalSize += Buffer.byteLength(content, 'utf-8');
378
+ }
379
+ return {
380
+ size: totalSize,
381
+ files: files.size
382
+ };
383
+ }
384
+ /**
385
+ * Create a .pdpkg tarball Buffer from in-memory files.
386
+ * Used for server-side package creation without disk writes.
387
+ * SECURITY: Scans for secrets before packing.
388
+ *
389
+ * @param basePath - Base path in memory filesystem (e.g., "/my-package")
390
+ * @param manifest - Package manifest.json content
391
+ * @param options - Optional filter for files
392
+ * @returns Buffer containing gzipped tarball
393
+ */
394
+ async createPackageBuffer(basePath, manifest, options) {
395
+ // 1. Validate manifest
396
+ if (!manifest.name || !manifest.version || !manifest.description) {
397
+ throw new Error('Invalid manifest: missing required fields (name, version, description)');
398
+ }
399
+ // 2. Get all files from memory
400
+ const files = this.getAllFiles(basePath);
401
+ // 3. Scan for secrets in all files
402
+ const { SecurityManager } = await Promise.resolve().then(() => __importStar(require('../security')));
403
+ for (const [filePath, content] of files.entries()) {
404
+ const secretScan = await SecurityManager.scanForSecrets(content);
405
+ if (secretScan.hasSecrets) {
406
+ const types = secretScan.secrets.map(s => s.type).join(', ');
407
+ throw new Error(`Secrets detected in ${filePath}: ${types}`);
408
+ }
409
+ }
410
+ // 4. Create ZIP package (consistent with .pdpkg format)
411
+ const zip = new adm_zip_1.default();
412
+ // Add files to ZIP
413
+ for (const [filePath, content] of files.entries()) {
414
+ if (options?.filter && !options.filter(filePath)) {
415
+ continue; // Skip filtered files
416
+ }
417
+ const relativePath = filePath.startsWith(basePath)
418
+ ? filePath.substring(basePath.length + 1)
419
+ : filePath;
420
+ // Add file to ZIP (AdmZip handles directory creation)
421
+ zip.addFile(relativePath, Buffer.from(content, 'utf-8'));
422
+ }
423
+ // Add manifest.json
424
+ zip.addFile('manifest.json', Buffer.from(JSON.stringify(manifest, null, 2), 'utf-8'));
425
+ // Return ZIP buffer
426
+ return zip.toBuffer();
427
+ }
428
+ }
429
+ exports.MemoryFileSystem = MemoryFileSystem;
430
+ // Security constants
431
+ MemoryFileSystem.MAX_PACKAGE_SIZE = 50 * 1024 * 1024; // 50MB
432
+ MemoryFileSystem.MAX_FILE_SIZE = 10 * 1024 * 1024; // 10MB per file
433
+ MemoryFileSystem.MAX_FILE_COUNT = 1000;
434
+ /**
435
+ * Get the default file system (Node.js fs).
436
+ */
437
+ function getDefaultFileSystem() {
438
+ return new NodeFileSystem();
439
+ }
440
+ //# sourceMappingURL=file-system.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-system.js","sourceRoot":"","sources":["../../../src/lib/compiler/file-system.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Anthropic Claude API JSON Formatter
3
+ *
4
+ * Formats compiled prompts for Anthropic Claude API with system field and messages.
5
+ */
6
+ import { OutputFormatter, CompiledPrompt } from '../types';
7
+ export declare class AnthropicFormatter implements OutputFormatter {
8
+ name: string;
9
+ fileExtension: string;
10
+ mimeType: string;
11
+ format(compiled: CompiledPrompt): Promise<string>;
12
+ /**
13
+ * Extract a specific section from markdown content.
14
+ */
15
+ private extractSection;
16
+ /**
17
+ * Remove a specific section from markdown content.
18
+ */
19
+ private removeSection;
20
+ }
21
+ //# sourceMappingURL=anthropic.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"anthropic.d.ts","sourceRoot":"","sources":["../../../../src/lib/compiler/formatters/anthropic.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAE3D,qBAAa,kBAAmB,YAAW,eAAe;IACxD,IAAI,SAA6B;IACjC,aAAa,SAAW;IACxB,QAAQ,SAAsB;IAExB,MAAM,CAAC,QAAQ,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC;IAqCvD;;OAEG;IACH,OAAO,CAAC,cAAc;IAyBtB;;OAEG;IACH,OAAO,CAAC,aAAa;CAsBtB"}
@@ -0,0 +1,95 @@
1
+ "use strict";
2
+ /**
3
+ * Anthropic Claude API JSON Formatter
4
+ *
5
+ * Formats compiled prompts for Anthropic Claude API with system field and messages.
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.AnthropicFormatter = void 0;
9
+ class AnthropicFormatter {
10
+ constructor() {
11
+ this.name = 'provider-json:anthropic';
12
+ this.fileExtension = '.json';
13
+ this.mimeType = 'application/json';
14
+ }
15
+ async format(compiled) {
16
+ let systemMessage;
17
+ let userMessage = compiled.content || '';
18
+ // Extract system message if present
19
+ if (compiled.content && compiled.content.includes('## System')) {
20
+ const systemContent = this.extractSection(compiled.content, 'System');
21
+ if (systemContent) {
22
+ systemMessage = systemContent;
23
+ userMessage = this.removeSection(compiled.content, 'System');
24
+ }
25
+ }
26
+ // Add extracted contexts to user message
27
+ if (compiled.contexts && compiled.contexts.length > 0) {
28
+ const contextContent = compiled.contexts.join('\n\n');
29
+ userMessage = `${contextContent}\n\n${userMessage}`;
30
+ }
31
+ const apiRequest = {
32
+ model: 'claude-3-sonnet-20240229',
33
+ messages: [
34
+ {
35
+ role: 'user',
36
+ content: userMessage.trim()
37
+ }
38
+ ]
39
+ };
40
+ // Only add system field if we have system content
41
+ if (systemMessage) {
42
+ apiRequest.system = systemMessage;
43
+ }
44
+ return JSON.stringify(apiRequest, null, 2);
45
+ }
46
+ /**
47
+ * Extract a specific section from markdown content.
48
+ */
49
+ extractSection(content, sectionName) {
50
+ const lines = content.split('\n');
51
+ let inSection = false;
52
+ const sectionContent = [];
53
+ for (const line of lines) {
54
+ const trimmed = line.trim();
55
+ if (trimmed === `## ${sectionName}`) {
56
+ inSection = true;
57
+ continue;
58
+ }
59
+ else if (trimmed.startsWith('## ') && inSection) {
60
+ break; // Reached next section
61
+ }
62
+ else if (inSection) {
63
+ sectionContent.push(line);
64
+ }
65
+ }
66
+ if (sectionContent.length === 0) {
67
+ return null;
68
+ }
69
+ return sectionContent.join('\n').trim();
70
+ }
71
+ /**
72
+ * Remove a specific section from markdown content.
73
+ */
74
+ removeSection(content, sectionName) {
75
+ const lines = content.split('\n');
76
+ let inSection = false;
77
+ const resultLines = [];
78
+ for (const line of lines) {
79
+ const trimmed = line.trim();
80
+ if (trimmed === `## ${sectionName}`) {
81
+ inSection = true;
82
+ continue;
83
+ }
84
+ else if (trimmed.startsWith('## ') && inSection) {
85
+ inSection = false;
86
+ }
87
+ if (!inSection) {
88
+ resultLines.push(line);
89
+ }
90
+ }
91
+ return resultLines.join('\n').trim();
92
+ }
93
+ }
94
+ exports.AnthropicFormatter = AnthropicFormatter;
95
+ //# sourceMappingURL=anthropic.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"anthropic.js","sourceRoot":"","sources":["../../../../src/lib/compiler/formatters/anthropic.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Markdown Output Formatter
3
+ *
4
+ * Formats compiled prompts as human-readable markdown with optional YAML frontmatter.
5
+ */
6
+ import { OutputFormatter, CompiledPrompt } from '../types';
7
+ export declare class MarkdownFormatter implements OutputFormatter {
8
+ name: string;
9
+ fileExtension: string;
10
+ mimeType: string;
11
+ format(compiled: CompiledPrompt): Promise<string>;
12
+ /**
13
+ * Clean metadata dictionary for YAML display, converting complex objects to strings.
14
+ */
15
+ private cleanMetadataForDisplay;
16
+ }
17
+ //# sourceMappingURL=markdown.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"markdown.d.ts","sourceRoot":"","sources":["../../../../src/lib/compiler/formatters/markdown.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAE3D,qBAAa,iBAAkB,YAAW,eAAe;IACvD,IAAI,SAAc;IAClB,aAAa,SAAS;IACtB,QAAQ,SAAmB;IAErB,MAAM,CAAC,QAAQ,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC;IAkCvD;;OAEG;IACH,OAAO,CAAC,uBAAuB;CAgChC"}