@prompd/cli 0.4.11 → 0.5.0-beta.2

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 (59) hide show
  1. package/README.md +1 -1
  2. package/dist/commands/compile.d.ts.map +1 -1
  3. package/dist/commands/compile.js +8 -1
  4. package/dist/commands/compile.js.map +1 -1
  5. package/dist/commands/package.d.ts.map +1 -1
  6. package/dist/commands/package.js +182 -9
  7. package/dist/commands/package.js.map +1 -1
  8. package/dist/commands/registry.d.ts.map +1 -1
  9. package/dist/commands/registry.js +58 -4
  10. package/dist/commands/registry.js.map +1 -1
  11. package/dist/commands/uninstall.d.ts.map +1 -1
  12. package/dist/commands/uninstall.js +52 -18
  13. package/dist/commands/uninstall.js.map +1 -1
  14. package/dist/lib/commandExecutor.d.ts +2 -2
  15. package/dist/lib/commandExecutor.d.ts.map +1 -1
  16. package/dist/lib/commandExecutor.js +2 -2
  17. package/dist/lib/commandExecutor.js.map +1 -1
  18. package/dist/lib/compiler/file-system.d.ts.map +1 -1
  19. package/dist/lib/compiler/file-system.js +10 -0
  20. package/dist/lib/compiler/file-system.js.map +1 -1
  21. package/dist/lib/compiler/index.d.ts +1 -0
  22. package/dist/lib/compiler/index.d.ts.map +1 -1
  23. package/dist/lib/compiler/index.js +9 -1
  24. package/dist/lib/compiler/index.js.map +1 -1
  25. package/dist/lib/compiler/package-resolver.d.ts +24 -3
  26. package/dist/lib/compiler/package-resolver.d.ts.map +1 -1
  27. package/dist/lib/compiler/package-resolver.js +112 -27
  28. package/dist/lib/compiler/package-resolver.js.map +1 -1
  29. package/dist/lib/compiler/stages/semantic.d.ts +7 -0
  30. package/dist/lib/compiler/stages/semantic.d.ts.map +1 -1
  31. package/dist/lib/compiler/stages/semantic.js +78 -2
  32. package/dist/lib/compiler/stages/semantic.js.map +1 -1
  33. package/dist/lib/compiler/stages/template.d.ts.map +1 -1
  34. package/dist/lib/compiler/stages/template.js +24 -12
  35. package/dist/lib/compiler/stages/template.js.map +1 -1
  36. package/dist/lib/config.d.ts.map +1 -1
  37. package/dist/lib/config.js +14 -2
  38. package/dist/lib/config.js.map +1 -1
  39. package/dist/lib/nodeTypeRegistry.d.ts +1 -1
  40. package/dist/lib/nodeTypeRegistry.d.ts.map +1 -1
  41. package/dist/lib/providers/types.d.ts +4 -0
  42. package/dist/lib/providers/types.d.ts.map +1 -1
  43. package/dist/lib/providers/types.js.map +1 -1
  44. package/dist/lib/registry.d.ts +42 -3
  45. package/dist/lib/registry.d.ts.map +1 -1
  46. package/dist/lib/registry.js +448 -84
  47. package/dist/lib/registry.js.map +1 -1
  48. package/dist/lib/validation.d.ts.map +1 -1
  49. package/dist/lib/validation.js +10 -2
  50. package/dist/lib/validation.js.map +1 -1
  51. package/dist/lib/workflowExecutor.d.ts +2 -0
  52. package/dist/lib/workflowExecutor.d.ts.map +1 -1
  53. package/dist/lib/workflowExecutor.js +75 -67
  54. package/dist/lib/workflowExecutor.js.map +1 -1
  55. package/dist/types/index.d.ts +48 -1
  56. package/dist/types/index.d.ts.map +1 -1
  57. package/dist/types/index.js +54 -1
  58. package/dist/types/index.js.map +1 -1
  59. package/package.json +127 -124
@@ -42,6 +42,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
42
42
  exports.resolvePackage = resolvePackage;
43
43
  exports.parsePackageReference = parsePackageReference;
44
44
  exports.isValidPackageReference = isValidPackageReference;
45
+ exports.findProjectRoot = findProjectRoot;
46
+ exports.getGlobalBaseDir = getGlobalBaseDir;
47
+ exports.getLocalBaseDir = getLocalBaseDir;
45
48
  exports.getGlobalCacheDir = getGlobalCacheDir;
46
49
  exports.getLocalCacheDir = getLocalCacheDir;
47
50
  exports.getPackageCacheDir = getPackageCacheDir;
@@ -53,6 +56,7 @@ const os = __importStar(require("os"));
53
56
  const registry_1 = require("../registry");
54
57
  const errors_1 = require("../errors");
55
58
  const file_system_1 = require("./file-system");
59
+ const types_1 = require("../../types");
56
60
  /**
57
61
  * Resolve a package reference to a local file path or in-memory path.
58
62
  *
@@ -107,26 +111,39 @@ async function resolvePackage(packageRef, fileSystemOrOptions, registryUrl) {
107
111
  }
108
112
  }
109
113
  // Default: disk-based resolution
110
- // Resolution order (matches Python CLI):
111
- // 1. Check local project cache (./.prompd/cache/)
112
- // 2. Check global cache (~/.prompd/cache/)
113
- // 3. Download from registry
114
- // Package path follows Python CLI structure: @namespace/package-name/version
115
- // e.g., @prompd/public-examples -> cache/@prompd/public-examples/1.1.0/
116
- // Also check legacy format: @namespace/package-name@version (frontend packageCache)
114
+ // Resolution order:
115
+ // 1. Check local type directories (.prompd/packages/, .prompd/workflows/, etc.)
116
+ // 2. Check global type directories (~/.prompd/packages/, ~/.prompd/workflows/, etc.)
117
+ // 3. Check legacy cache dirs (.prompd/cache/) for backward compatibility
118
+ // 4. Download from registry
119
+ const localBase = getLocalBaseDir(workspaceRoot);
120
+ const globalBase = getGlobalBaseDir();
121
+ const typeDirs = Object.values(types_1.PACKAGE_TYPE_DIRS);
122
+ // Check all type directories locally first
123
+ for (const typeDir of typeDirs) {
124
+ const dir = path.join(localBase, typeDir, name, version);
125
+ if (await fs.pathExists(dir)) {
126
+ return dir;
127
+ }
128
+ }
129
+ // Check all type directories globally
130
+ for (const typeDir of typeDirs) {
131
+ const dir = path.join(globalBase, typeDir, name, version);
132
+ if (await fs.pathExists(dir)) {
133
+ return dir;
134
+ }
135
+ }
136
+ // Legacy: check old flat cache directories
117
137
  const localCacheDir = getLocalCacheDir(workspaceRoot);
118
138
  const globalCacheDir = getGlobalCacheDir();
119
- // Check local project cache first (both formats)
120
139
  const localPackageDir = path.join(localCacheDir, name, version);
121
140
  if (await fs.pathExists(localPackageDir)) {
122
141
  return localPackageDir;
123
142
  }
124
- // Legacy format: name@version as single directory (frontend packageCache.ts format)
125
143
  const localPackageDirLegacy = path.join(localCacheDir, `${name}@${version}`);
126
144
  if (await fs.pathExists(localPackageDirLegacy)) {
127
145
  return localPackageDirLegacy;
128
146
  }
129
- // Check global cache (both formats)
130
147
  const globalPackageDir = path.join(globalCacheDir, name, version);
131
148
  if (await fs.pathExists(globalPackageDir)) {
132
149
  return globalPackageDir;
@@ -140,14 +157,18 @@ async function resolvePackage(packageRef, fileSystemOrOptions, registryUrl) {
140
157
  // Create registry client with optional URL override
141
158
  const registry = new registry_1.RegistryClient(resolvedRegistryUrl ? { registryUrl: resolvedRegistryUrl } : undefined);
142
159
  await registry.install(packageRef, { skipCache: false, workspaceRoot });
143
- // After installation, check both caches again
144
- if (await fs.pathExists(localPackageDir)) {
145
- return localPackageDir;
146
- }
147
- if (await fs.pathExists(globalPackageDir)) {
148
- return globalPackageDir;
160
+ // After installation, check type directories again (new install location)
161
+ for (const typeDir of typeDirs) {
162
+ const localDir = path.join(localBase, typeDir, name, version);
163
+ if (await fs.pathExists(localDir)) {
164
+ return localDir;
165
+ }
166
+ const globalDir = path.join(globalBase, typeDir, name, version);
167
+ if (await fs.pathExists(globalDir)) {
168
+ return globalDir;
169
+ }
149
170
  }
150
- throw new Error(`Package installation succeeded but package not found in cache: ${packageRef}`);
171
+ throw new Error(`Package installation succeeded but package not found: ${packageRef}`);
151
172
  }
152
173
  catch (error) {
153
174
  throw new Error(`Failed to resolve package ${packageRef}: ${error instanceof Error ? error.message : String(error)}`);
@@ -189,23 +210,72 @@ function isValidPackageReference(packageRef) {
189
210
  }
190
211
  return true;
191
212
  }
213
+ /**
214
+ * Find the project root by walking up the directory tree looking for a
215
+ * prompd.json with both 'name' and 'version' fields (a real project manifest,
216
+ * not a dependency-only fragment).
217
+ *
218
+ * Falls back to startDir (or process.cwd()) if no project root is found.
219
+ *
220
+ * @param startDir - Directory to start searching from. Defaults to process.cwd().
221
+ */
222
+ function findProjectRoot(startDir) {
223
+ let dir = path.resolve(startDir || process.cwd());
224
+ const root = path.parse(dir).root;
225
+ while (true) {
226
+ const candidate = path.join(dir, 'prompd.json');
227
+ if (fs.pathExistsSync(candidate)) {
228
+ try {
229
+ const content = fs.readJsonSync(candidate);
230
+ if (content.name && content.version) {
231
+ return dir;
232
+ }
233
+ }
234
+ catch {
235
+ // Invalid JSON, skip and keep walking
236
+ }
237
+ }
238
+ const parent = path.dirname(dir);
239
+ if (parent === dir || dir === root) {
240
+ break;
241
+ }
242
+ dir = parent;
243
+ }
244
+ return path.resolve(startDir || process.cwd());
245
+ }
246
+ /**
247
+ * Get the global .prompd base directory (~/.prompd/).
248
+ */
249
+ function getGlobalBaseDir() {
250
+ return path.join(os.homedir(), '.prompd');
251
+ }
252
+ /**
253
+ * Get the local project .prompd base directory (./.prompd/).
254
+ * @param workspaceRoot - Optional workspace root directory. If not provided, auto-detects project root.
255
+ */
256
+ function getLocalBaseDir(workspaceRoot) {
257
+ const basePath = workspaceRoot || findProjectRoot();
258
+ return path.join(basePath, '.prompd');
259
+ }
192
260
  /**
193
261
  * Get the global package cache directory (~/.prompd/cache/).
262
+ * @deprecated Legacy path. New installs use type-specific dirs (packages/, workflows/, etc.)
194
263
  */
195
264
  function getGlobalCacheDir() {
196
265
  return path.join(os.homedir(), '.prompd', 'cache');
197
266
  }
198
267
  /**
199
268
  * Get the local project package cache directory (./.prompd/cache/).
200
- * @param workspaceRoot - Optional workspace root directory. If not provided, uses process.cwd()
269
+ * @deprecated Legacy path. New installs use type-specific dirs (packages/, workflows/, etc.)
270
+ * @param workspaceRoot - Optional workspace root directory. If not provided, auto-detects project root.
201
271
  */
202
272
  function getLocalCacheDir(workspaceRoot) {
203
- const basePath = workspaceRoot || process.cwd();
273
+ const basePath = workspaceRoot || findProjectRoot();
204
274
  return path.join(basePath, '.prompd', 'cache');
205
275
  }
206
276
  /**
207
277
  * Get the package cache directory (for backward compatibility).
208
- * @deprecated Use getGlobalCacheDir() or getLocalCacheDir() instead
278
+ * @deprecated Use getGlobalBaseDir() or getLocalBaseDir() instead
209
279
  */
210
280
  function getPackageCacheDir() {
211
281
  return getGlobalCacheDir();
@@ -235,21 +305,36 @@ function resolvePackageFile(packagePath, filePath) {
235
305
  return resolvedPath;
236
306
  }
237
307
  /**
238
- * Check if a package is installed (in local or global cache).
308
+ * Check if a package is installed (in any type directory, local or global).
239
309
  * @param packageRef - Package reference to check
240
310
  * @param workspaceRoot - Optional workspace root directory for local cache
241
311
  */
242
312
  async function isPackageInstalled(packageRef, workspaceRoot) {
243
313
  try {
244
314
  const { name, version } = parsePackageReference(packageRef);
245
- // Check local cache first
246
- const localPackageDir = path.join(getLocalCacheDir(workspaceRoot), name, version);
247
- if (await fs.pathExists(localPackageDir)) {
315
+ const localBase = getLocalBaseDir(workspaceRoot);
316
+ const globalBase = getGlobalBaseDir();
317
+ const typeDirs = Object.values(types_1.PACKAGE_TYPE_DIRS);
318
+ // Check all type directories locally
319
+ for (const typeDir of typeDirs) {
320
+ if (await fs.pathExists(path.join(localBase, typeDir, name, version))) {
321
+ return true;
322
+ }
323
+ }
324
+ // Check all type directories globally
325
+ for (const typeDir of typeDirs) {
326
+ if (await fs.pathExists(path.join(globalBase, typeDir, name, version))) {
327
+ return true;
328
+ }
329
+ }
330
+ // Legacy: check flat cache directories
331
+ if (await fs.pathExists(path.join(getLocalCacheDir(workspaceRoot), name, version))) {
248
332
  return true;
249
333
  }
250
- // Check global cache
251
- const globalPackageDir = path.join(getGlobalCacheDir(), name, version);
252
- return await fs.pathExists(globalPackageDir);
334
+ if (await fs.pathExists(path.join(getGlobalCacheDir(), name, version))) {
335
+ return true;
336
+ }
337
+ return false;
253
338
  }
254
339
  catch {
255
340
  return false;
@@ -1 +1 @@
1
- {"version":3,"file":"package-resolver.js","sourceRoot":"","sources":["../../../src/lib/compiler/package-resolver.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"package-resolver.js","sourceRoot":"","sources":["../../../src/lib/compiler/package-resolver.ts"],"names":[],"mappings":"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"}
@@ -11,6 +11,13 @@ export declare class SemanticAnalysisStage implements CompilerStage {
11
11
  * Validate parameter type.
12
12
  */
13
13
  private validateParameterType;
14
+ /**
15
+ * Coerce a parameter value to its declared type.
16
+ * CLI args always arrive as strings; this converts them to the correct runtime type
17
+ * before the value is handed to the template engine.
18
+ * Already-correct types (e.g. from a JSON params file) are passed through unchanged.
19
+ */
20
+ private coerceParameterValue;
14
21
  /**
15
22
  * Validate required metadata fields (id, name, version).
16
23
  */
@@ -1 +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"}
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;IA0FzD;;OAEG;IACH,OAAO,CAAC,qBAAqB;IA4B7B;;;;;OAKG;IACH,OAAO,CAAC,oBAAoB;IAwC5B;;OAEG;IACH,OAAO,CAAC,wBAAwB;IAoEhC,OAAO,IAAI,MAAM;CAGlB"}
@@ -34,6 +34,11 @@ class SemanticAnalysisStage {
34
34
  if (isExecutionMode && param.required && !(param.name in context.parameters)) {
35
35
  context.addWarning(`Required parameter '${param.name}' not provided`);
36
36
  }
37
+ // Type coercion for provided parameters.
38
+ // CLI args always arrive as strings; coerce to the declared type before validation.
39
+ if (param.name in context.parameters) {
40
+ context.parameters[param.name] = this.coerceParameterValue(context.parameters[param.name], param.type);
41
+ }
37
42
  // Type validation for provided parameters
38
43
  if (param.name in context.parameters) {
39
44
  const value = context.parameters[param.name];
@@ -73,19 +78,90 @@ class SemanticAnalysisStage {
73
78
  validateParameterType(value, expectedType) {
74
79
  switch (expectedType) {
75
80
  case 'string':
81
+ case 'file': // file path provided as a string
82
+ case 'base64': // base64-encoded binary provided as a string
76
83
  return typeof value === 'string';
77
84
  case 'number':
78
- case 'integer':
79
85
  case 'float':
80
86
  return typeof value === 'number' && !isNaN(value);
87
+ case 'integer':
88
+ return typeof value === 'number' && !isNaN(value) && Number.isInteger(value);
81
89
  case 'boolean':
82
90
  return typeof value === 'boolean';
83
91
  case 'array':
84
92
  return Array.isArray(value);
85
93
  case 'object':
86
94
  return typeof value === 'object' && value !== null && !Array.isArray(value);
95
+ case 'json':
96
+ // Accepts any JSON-compatible value: already-parsed object/array, primitives,
97
+ // or a string that is valid JSON.
98
+ if (value === null || value === undefined)
99
+ return false;
100
+ if (typeof value !== 'string')
101
+ return true; // already parsed
102
+ try {
103
+ JSON.parse(value);
104
+ return true;
105
+ }
106
+ catch {
107
+ return false;
108
+ }
109
+ default:
110
+ return true; // Unknown type — allow it
111
+ }
112
+ }
113
+ /**
114
+ * Coerce a parameter value to its declared type.
115
+ * CLI args always arrive as strings; this converts them to the correct runtime type
116
+ * before the value is handed to the template engine.
117
+ * Already-correct types (e.g. from a JSON params file) are passed through unchanged.
118
+ */
119
+ coerceParameterValue(value, type) {
120
+ if (value === null || value === undefined)
121
+ return value;
122
+ switch (type) {
123
+ case 'boolean':
124
+ if (typeof value === 'boolean')
125
+ return value;
126
+ if (typeof value === 'string') {
127
+ if (value.toLowerCase() === 'true')
128
+ return true;
129
+ if (value.toLowerCase() === 'false')
130
+ return false;
131
+ }
132
+ return value;
133
+ case 'integer':
134
+ if (typeof value === 'number')
135
+ return value;
136
+ if (typeof value === 'string') {
137
+ const n = Number(value);
138
+ if (!isNaN(n))
139
+ return n;
140
+ }
141
+ return value;
142
+ case 'number':
143
+ case 'float':
144
+ if (typeof value === 'number')
145
+ return value;
146
+ if (typeof value === 'string') {
147
+ const n = parseFloat(value);
148
+ if (!isNaN(n))
149
+ return n;
150
+ }
151
+ return value;
152
+ case 'json':
153
+ case 'array':
154
+ case 'object':
155
+ if (typeof value !== 'string')
156
+ return value; // already parsed
157
+ try {
158
+ return JSON.parse(value);
159
+ }
160
+ catch {
161
+ return value;
162
+ }
87
163
  default:
88
- return true; // Unknown type, allow it
164
+ return value;
89
165
  }
90
166
  }
91
167
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"semantic.js","sourceRoot":"","sources":["../../../../src/lib/compiler/stages/semantic.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"semantic.js","sourceRoot":"","sources":["../../../../src/lib/compiler/stages/semantic.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"template.d.ts","sourceRoot":"","sources":["../../../../src/lib/compiler/stages/template.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAO7D,qBAAa,uBAAwB,YAAW,aAAa;IAC3D,OAAO,CAAC,gBAAgB,CAA2B;IACnD,OAAO,CAAC,WAAW,CAAuB;;IAyB1C;;OAEG;IACH,OAAO,CAAC,eAAe;IAgLvB;;OAEG;IACH,OAAO,CAAC,QAAQ;IA8BhB;;OAEG;IACH,OAAO,CAAC,YAAY;IA6Bd,OAAO,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IAkCzD;;OAEG;YACW,wBAAwB;IAuCtC;;OAEG;YACW,mBAAmB;IAgDjC;;OAEG;YACW,kBAAkB;IAyHhC;;OAEG;YACW,0BAA0B;IA8ExC;;;;;;;;;;;;;OAaG;IACH,OAAO,CAAC,yBAAyB;IAmCjC;;;OAGG;IACH,OAAO,CAAC,wBAAwB;IAsBhC;;;;;;;OAOG;IACH,OAAO,CAAC,gBAAgB;IAuCxB;;;OAGG;YACW,eAAe;IAgF7B;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAgP5B;;;OAGG;IACH,OAAO,CAAC,0BAA0B;IAiDlC;;OAEG;IACH,OAAO,CAAC,WAAW;IAInB,OAAO,IAAI,MAAM;CAGlB"}
1
+ {"version":3,"file":"template.d.ts","sourceRoot":"","sources":["../../../../src/lib/compiler/stages/template.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAO7D,qBAAa,uBAAwB,YAAW,aAAa;IAC3D,OAAO,CAAC,gBAAgB,CAA2B;IACnD,OAAO,CAAC,WAAW,CAAuB;;IAyB1C;;OAEG;IACH,OAAO,CAAC,eAAe;IAiLvB;;OAEG;IACH,OAAO,CAAC,QAAQ;IA8BhB;;OAEG;IACH,OAAO,CAAC,YAAY;IA6Bd,OAAO,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IAkCzD;;OAEG;YACW,wBAAwB;IAuCtC;;OAEG;YACW,mBAAmB;IAgDjC;;OAEG;YACW,kBAAkB;IAyHhC;;OAEG;YACW,0BAA0B;IA8ExC;;;;;;;;;;;;;OAaG;IACH,OAAO,CAAC,yBAAyB;IAmCjC;;;OAGG;IACH,OAAO,CAAC,wBAAwB;IAsBhC;;;;;;;OAOG;IACH,OAAO,CAAC,gBAAgB;IAuCxB;;;OAGG;YACW,eAAe;IAqF7B;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAiP5B;;;OAGG;IACH,OAAO,CAAC,0BAA0B;IAiDlC;;OAEG;IACH,OAAO,CAAC,WAAW;IAInB,OAAO,IAAI,MAAM;CAGlB"}
@@ -83,13 +83,16 @@ class TemplateProcessingStage {
83
83
  }
84
84
  return this.parseCsv(csvString);
85
85
  });
86
- // fromjson - Parse JSON string into object/array
87
- this.nunjucksEnv.addFilter('fromjson', (jsonString) => {
88
- if (!jsonString || typeof jsonString !== 'string') {
86
+ // fromjson - Parse JSON string into object/array.
87
+ // If the value is already a parsed object or array (e.g. from a JSON params file),
88
+ // pass it through unchanged instead of returning null.
89
+ this.nunjucksEnv.addFilter('fromjson', (value) => {
90
+ if (value === null || value === undefined)
89
91
  return null;
90
- }
92
+ if (typeof value !== 'string')
93
+ return value; // already parsed
91
94
  try {
92
- return JSON.parse(jsonString);
95
+ return JSON.parse(value);
93
96
  }
94
97
  catch {
95
98
  return null;
@@ -719,10 +722,16 @@ class TemplateProcessingStage {
719
722
  reject(error);
720
723
  }
721
724
  });
725
+ let timeoutId;
722
726
  const timeoutPromise = new Promise((_, reject) => {
723
- setTimeout(() => reject(new Error('Template rendering timeout')), renderTimeout);
727
+ timeoutId = setTimeout(() => reject(new Error('Template rendering timeout')), renderTimeout);
724
728
  });
725
- content = await Promise.race([renderPromise, timeoutPromise]);
729
+ try {
730
+ content = await Promise.race([renderPromise, timeoutPromise]);
731
+ }
732
+ finally {
733
+ clearTimeout(timeoutId);
734
+ }
726
735
  }
727
736
  catch (error) {
728
737
  // Report template syntax errors properly
@@ -825,13 +834,16 @@ class TemplateProcessingStage {
825
834
  }
826
835
  return this.parseCsv(csvString);
827
836
  });
828
- // fromjson - Parse JSON string into object/array
829
- env.addFilter('fromjson', (jsonString) => {
830
- if (!jsonString || typeof jsonString !== 'string') {
837
+ // fromjson - Parse JSON string into object/array.
838
+ // If the value is already a parsed object or array (e.g. from a JSON params file),
839
+ // pass it through unchanged instead of returning null.
840
+ env.addFilter('fromjson', (value) => {
841
+ if (value === null || value === undefined)
831
842
  return null;
832
- }
843
+ if (typeof value !== 'string')
844
+ return value; // already parsed
833
845
  try {
834
- return JSON.parse(jsonString);
846
+ return JSON.parse(value);
835
847
  }
836
848
  catch {
837
849
  return null;