@codemarc/blt 1.4.8 → 1.5.0

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 (75) hide show
  1. package/README.md +92 -1
  2. package/dist/blt +2 -0
  3. package/dist/blt.d.ts.map +1 -1
  4. package/dist/blt.js.map +1 -1
  5. package/dist/commands/template/init.d.ts +8 -0
  6. package/dist/commands/template/init.d.ts.map +1 -0
  7. package/dist/commands/template/init.js +20 -0
  8. package/dist/commands/template/init.js.map +1 -0
  9. package/dist/commands/template/inspect.d.ts +3 -0
  10. package/dist/commands/template/inspect.d.ts.map +1 -0
  11. package/dist/commands/template/inspect.js +20 -0
  12. package/dist/commands/template/inspect.js.map +1 -0
  13. package/dist/commands/template/list.d.ts +3 -0
  14. package/dist/commands/template/list.d.ts.map +1 -0
  15. package/dist/commands/template/list.js +13 -0
  16. package/dist/commands/template/list.js.map +1 -0
  17. package/dist/commands/template/render.d.ts +12 -0
  18. package/dist/commands/template/render.d.ts.map +1 -0
  19. package/dist/commands/template/render.js +49 -0
  20. package/dist/commands/template/render.js.map +1 -0
  21. package/dist/commands/template.d.ts +3 -0
  22. package/dist/commands/template.d.ts.map +1 -0
  23. package/dist/commands/template.js +92 -0
  24. package/dist/commands/template.js.map +1 -0
  25. package/dist/commands/wai/config-templates.d.ts +2 -2
  26. package/dist/commands/wai/config-templates.d.ts.map +1 -1
  27. package/dist/commands/wai/config-templates.js +4 -5
  28. package/dist/commands/wai/config-templates.js.map +1 -1
  29. package/dist/commands/wai/config.js +1 -1
  30. package/dist/commands/wai/config.js.map +1 -1
  31. package/dist/lib/template/data.d.ts +2 -0
  32. package/dist/lib/template/data.d.ts.map +1 -0
  33. package/dist/lib/template/data.js +14 -0
  34. package/dist/lib/template/data.js.map +1 -0
  35. package/dist/lib/template/engine.d.ts +4 -0
  36. package/dist/lib/template/engine.d.ts.map +1 -0
  37. package/dist/lib/template/engine.js +33 -0
  38. package/dist/lib/template/engine.js.map +1 -0
  39. package/dist/lib/template/files.d.ts +8 -0
  40. package/dist/lib/template/files.d.ts.map +1 -0
  41. package/dist/lib/template/files.js +24 -0
  42. package/dist/lib/template/files.js.map +1 -0
  43. package/dist/lib/template/manifest.d.ts +11 -0
  44. package/dist/lib/template/manifest.d.ts.map +1 -0
  45. package/dist/lib/template/manifest.js +15 -0
  46. package/dist/lib/template/manifest.js.map +1 -0
  47. package/dist/lib/template/registry.d.ts +5 -0
  48. package/dist/lib/template/registry.d.ts.map +1 -0
  49. package/dist/lib/template/registry.js +43 -0
  50. package/dist/lib/template/registry.js.map +1 -0
  51. package/dist/lib/template/types.d.ts +33 -0
  52. package/dist/lib/template/types.d.ts.map +1 -0
  53. package/dist/lib/template/types.js +2 -0
  54. package/dist/lib/template/types.js.map +1 -0
  55. package/dist/templates/index.d.ts +3 -0
  56. package/dist/templates/index.d.ts.map +1 -0
  57. package/dist/templates/index.js +3 -0
  58. package/dist/templates/index.js.map +1 -0
  59. package/dist/templates/legal/nda/mutual.d.ts +3 -0
  60. package/dist/templates/legal/nda/mutual.d.ts.map +1 -0
  61. package/dist/templates/legal/nda/mutual.js +183 -0
  62. package/dist/templates/legal/nda/mutual.js.map +1 -0
  63. package/package.json +1 -1
  64. package/dist/commands/init/config-templates.d.ts +0 -18
  65. package/dist/commands/init/config-templates.d.ts.map +0 -1
  66. package/dist/commands/init/config-templates.js +0 -74
  67. package/dist/commands/init/config-templates.js.map +0 -1
  68. package/dist/commands/init/config.d.ts +0 -9
  69. package/dist/commands/init/config.d.ts.map +0 -1
  70. package/dist/commands/init/config.js +0 -92
  71. package/dist/commands/init/config.js.map +0 -1
  72. package/dist/commands/show/info.d.ts +0 -7
  73. package/dist/commands/show/info.d.ts.map +0 -1
  74. package/dist/commands/show/info.js +0 -52
  75. package/dist/commands/show/info.js.map +0 -1
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # @codemarc/blt
2
2
 
3
- > BLT CLI — Command-line tools for image processing, PDF manipulation, storage, schema/data build and deploy, and version management.
3
+ > BLT CLI — Command-line tools for image processing, PDF manipulation, template rendering, storage, schema/data build and deploy, and version management.
4
4
  >
5
5
  > Part of the [bltcore-com/tools](https://github.com/bltcore-com/tools) repository (BLT Core tools monorepo).
6
6
 
@@ -8,6 +8,7 @@
8
8
 
9
9
  - **Image**: WebP conversion, sharpening, color manipulation, and enhancement
10
10
  - **PDF**: Combine PDFs (binder), create folios with page numbers and table of contents
11
+ - **Template**: Render built-in or local templates with YAML data; includes a built-in mutual NDA workflow
11
12
  - **Version**: Update and manage `version.json`, format version strings, generate version SQL
12
13
  - **Init**: Clone repo script for BLT repositories
13
14
  - **WAI**: AI config templates (Claude + Codex: AGENTS.md, skills, rules, commands, settings, MCP, PLAN, IMPLEMENT) — bltwai.com
@@ -39,6 +40,12 @@ blt image convert ./photo.jpg
39
40
  # Combine PDFs into one file
40
41
  blt pdf binder output.pdf file1.pdf file2.pdf
41
42
 
43
+ # Create an NDA starter YAML file
44
+ blt template init legal/nda/mutual otter
45
+
46
+ # Render the NDA markdown from YAML data
47
+ blt template render legal/nda/mutual --data ./doc/nda/mutual-nda-blt-otter.yaml
48
+
42
49
  # Update version.json in current directory
43
50
  blt version update
44
51
 
@@ -58,6 +65,7 @@ blt deploy schema
58
65
  |---------------|--------------------------------------|
59
66
  | `blt image` | Convert, sharpen, enhance, recolor |
60
67
  | `blt pdf` | Binder (combine), folio (TOC + pages)|
68
+ | `blt template`| List, inspect, init, render templates |
61
69
  | `blt version` | Update, string, sql |
62
70
  | `blt init` | Clone script for BLT repos |
63
71
  | `blt wai` | Claude Code config (claude, agents, skills, rules, commands, settings, mcp) |
@@ -215,6 +223,89 @@ blt pdf folio complete.pdf /docs/ /appendices/ -r
215
223
 
216
224
  ---
217
225
 
226
+ ## Template Commands
227
+
228
+ Template rendering uses the `blt template` namespace. It supports built-in template packs and local template files. Data files are YAML objects, and placeholders use the `[[token_name]]` format.
229
+
230
+ Current built-in template:
231
+
232
+ - `legal/nda/mutual` — Mutual non-disclosure agreement
233
+
234
+ ### `blt template list`
235
+
236
+ List built-in templates.
237
+
238
+ ```bash
239
+ blt template list
240
+ ```
241
+
242
+ ### `blt template inspect <template>`
243
+
244
+ Show manifest and token details for a built-in template.
245
+
246
+ ```bash
247
+ blt template inspect legal/nda/mutual
248
+ ```
249
+
250
+ ### `blt template init <template> <name>`
251
+
252
+ Create a starter YAML data file from template defaults.
253
+
254
+ ```bash
255
+ blt template init legal/nda/mutual otter
256
+ blt template init legal/nda/mutual otter --output ./nda/otter.yaml
257
+ ```
258
+
259
+ **Options:**
260
+
261
+ - `-o, --output <path>` — Override the default output path
262
+ - `--overwrite` — Overwrite existing output file
263
+
264
+ **Behavior:** For the built-in mutual NDA template, the default output path is `doc/nda/mutual-nda-blt-<name>.yaml`.
265
+
266
+ ### `blt template render <source>`
267
+
268
+ Render a built-in template id or a local template file path with YAML data.
269
+
270
+ ```bash
271
+ # Render the built-in NDA template
272
+ blt template render legal/nda/mutual --data ./doc/nda/mutual-nda-blt-otter.yaml
273
+
274
+ # Render to a specific file
275
+ blt template render legal/nda/mutual --data ./doc/nda/mutual-nda-blt-otter.yaml --out ./doc/generated/otter-nda.md
276
+
277
+ # Print to stdout
278
+ blt template render legal/nda/mutual --data ./doc/nda/mutual-nda-blt-otter.yaml --stdout
279
+
280
+ # Render a local template file
281
+ blt template render ./template.md --data ./values.yaml --out ./output.md
282
+ ```
283
+
284
+ **Options:**
285
+
286
+ - `-d, --data <path>` — YAML data file
287
+ - `-o, --out <path>` — Output file path
288
+ - `--name <name>` — Optional name for output pattern resolution
289
+ - `--stdout` — Print rendered content instead of writing a file
290
+ - `--strict` — Fail if any referenced or required token is missing
291
+ - `--overwrite` — Overwrite existing output file
292
+
293
+ **Behavior:** By default, unresolved tokens are preserved and logged as warnings. With `--strict`, render fails if any referenced or required token is missing. For the built-in mutual NDA template, the default render path is `doc/generated/<data-file-stem>.md`.
294
+
295
+ ### NDA Workflow Example
296
+
297
+ ```bash
298
+ # Create the starter YAML
299
+ blt template init legal/nda/mutual otter
300
+
301
+ # Edit the generated YAML with counterparty details
302
+
303
+ # Render the final markdown
304
+ blt template render legal/nda/mutual --data ./doc/nda/mutual-nda-blt-otter.yaml
305
+ ```
306
+
307
+ ---
308
+
218
309
  ## Version Commands
219
310
 
220
311
  ### `blt version update`
package/dist/blt CHANGED
@@ -11,6 +11,7 @@ import showCommand from "./commands/show";
11
11
  import cleanupCommand from "./commands/cleanup";
12
12
  import workflowCommand from "./commands/workflow";
13
13
  import waiCommand from "./commands/wai";
14
+ import templateCommand from "./commands/template";
14
15
  import { join, dirname } from "node:path";
15
16
  import { readFileSync } from "node:fs";
16
17
  import { fileURLToPath } from "node:url";
@@ -35,6 +36,7 @@ showCommand(program);
35
36
  cleanupCommand(program);
36
37
  workflowCommand(program);
37
38
  waiCommand(program);
39
+ templateCommand(program);
38
40
  // If no command is provided, show help
39
41
  const args = process.argv.slice(2);
40
42
  if (args.length === 0) {
package/dist/blt.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"blt.d.ts","sourceRoot":"","sources":["../src/blt.ts"],"names":[],"mappings":";AAsBA,wBAAgB,iBAAiB,IAAI,MAAM,CAG1C"}
1
+ {"version":3,"file":"blt.d.ts","sourceRoot":"","sources":["../src/blt.ts"],"names":[],"mappings":";AAuBA,wBAAgB,iBAAiB,IAAI,MAAM,CAG1C"}
package/dist/blt.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"blt.js","sourceRoot":"","sources":["../src/blt.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,aAAa,MAAM,mBAAmB,CAAC;AAC9C,OAAO,YAAY,MAAM,kBAAkB,CAAC;AAC5C,OAAO,aAAa,MAAM,mBAAmB,CAAC;AAC9C,OAAO,YAAY,MAAM,kBAAkB,CAAC;AAC5C,OAAO,WAAW,MAAM,iBAAiB,CAAC;AAC1C,OAAO,UAAU,MAAM,gBAAgB,CAAC;AACxC,OAAO,cAAc,MAAM,oBAAoB,CAAC;AAChD,OAAO,WAAW,MAAM,iBAAiB,CAAC;AAC1C,OAAO,cAAc,MAAM,oBAAoB,CAAC;AAChD,OAAO,eAAe,MAAM,qBAAqB,CAAC;AAClD,OAAO,UAAU,MAAM,gBAAgB,CAAC;AAExC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;AACtC,MAAM,eAAe,GAAG,IAAI,CAAC,SAAS,EAAG,IAAI,EAAE,cAAc,CAAC,CAAC;AAE/D,MAAM,UAAU,iBAAiB;IAC/B,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC,CAAC;IACtE,OAAO,WAAW,CAAC,OAAO,CAAC;AAC7B,CAAC;AAED,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;KACjB,OAAO,CAAC,iBAAiB,EAAE,CAAC;KAC5B,WAAW,CAAC,cAAc,CAAC,CAAC;AAE5B,YAAY,CAAC,OAAO,CAAC,CAAC;AACtB,WAAW,CAAC,OAAO,CAAC,CAAC;AACrB,UAAU,CAAC,OAAO,CAAC,CAAC;AACpB,cAAc,CAAC,OAAO,CAAC,CAAC;AACxB,YAAY,CAAC,OAAO,CAAC,CAAC;AACtB,aAAa,CAAC,OAAO,CAAC,CAAC;AACvB,aAAa,CAAC,OAAO,CAAC,CAAC;AACvB,WAAW,CAAC,OAAO,CAAC,CAAC;AACrB,cAAc,CAAC,OAAO,CAAC,CAAC;AACxB,eAAe,CAAC,OAAO,CAAC,CAAC;AACzB,UAAU,CAAC,OAAO,CAAC,CAAC;AAEtB,uCAAuC;AACvC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACnC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;IACtB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC9B,CAAC;AACD,OAAO,CAAC,GAAG,EAAE,CAAC"}
1
+ {"version":3,"file":"blt.js","sourceRoot":"","sources":["../src/blt.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,aAAa,MAAM,mBAAmB,CAAC;AAC9C,OAAO,YAAY,MAAM,kBAAkB,CAAC;AAC5C,OAAO,aAAa,MAAM,mBAAmB,CAAC;AAC9C,OAAO,YAAY,MAAM,kBAAkB,CAAC;AAC5C,OAAO,WAAW,MAAM,iBAAiB,CAAC;AAC1C,OAAO,UAAU,MAAM,gBAAgB,CAAC;AACxC,OAAO,cAAc,MAAM,oBAAoB,CAAC;AAChD,OAAO,WAAW,MAAM,iBAAiB,CAAC;AAC1C,OAAO,cAAc,MAAM,oBAAoB,CAAC;AAChD,OAAO,eAAe,MAAM,qBAAqB,CAAC;AAClD,OAAO,UAAU,MAAM,gBAAgB,CAAC;AACxC,OAAO,eAAe,MAAM,qBAAqB,CAAC;AAElD,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;AACtC,MAAM,eAAe,GAAG,IAAI,CAAC,SAAS,EAAG,IAAI,EAAE,cAAc,CAAC,CAAC;AAE/D,MAAM,UAAU,iBAAiB;IAC/B,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC,CAAC;IACtE,OAAO,WAAW,CAAC,OAAO,CAAC;AAC7B,CAAC;AAED,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;KACjB,OAAO,CAAC,iBAAiB,EAAE,CAAC;KAC5B,WAAW,CAAC,cAAc,CAAC,CAAC;AAE5B,YAAY,CAAC,OAAO,CAAC,CAAC;AACtB,WAAW,CAAC,OAAO,CAAC,CAAC;AACrB,UAAU,CAAC,OAAO,CAAC,CAAC;AACpB,cAAc,CAAC,OAAO,CAAC,CAAC;AACxB,YAAY,CAAC,OAAO,CAAC,CAAC;AACtB,aAAa,CAAC,OAAO,CAAC,CAAC;AACvB,aAAa,CAAC,OAAO,CAAC,CAAC;AACvB,WAAW,CAAC,OAAO,CAAC,CAAC;AACrB,cAAc,CAAC,OAAO,CAAC,CAAC;AACxB,eAAe,CAAC,OAAO,CAAC,CAAC;AACzB,UAAU,CAAC,OAAO,CAAC,CAAC;AACpB,eAAe,CAAC,OAAO,CAAC,CAAC;AAE3B,uCAAuC;AACvC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACnC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;IACtB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC9B,CAAC;AACD,OAAO,CAAC,GAAG,EAAE,CAAC"}
@@ -0,0 +1,8 @@
1
+ import type { Logger } from "@caporal/core";
2
+ type TemplateInitOptions = {
3
+ output?: string;
4
+ overwrite?: boolean;
5
+ };
6
+ export declare function templateInitCommand(templateId: string, name: string, options: TemplateInitOptions, logger: Logger): Promise<void>;
7
+ export {};
8
+ //# sourceMappingURL=init.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../src/commands/template/init.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAK5C,KAAK,mBAAmB,GAAG;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB,CAAC;AAEF,wBAAsB,mBAAmB,CACvC,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,mBAAmB,EAC5B,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,IAAI,CAAC,CAuBf"}
@@ -0,0 +1,20 @@
1
+ import { renderOutputPattern } from "../../lib/template/manifest";
2
+ import { getBuiltInTemplate } from "../../lib/template/registry";
3
+ import { writeTextFile } from "../../lib/template/files";
4
+ export async function templateInitCommand(templateId, name, options, logger) {
5
+ const template = getBuiltInTemplate(templateId);
6
+ if (!template.defaultsYaml) {
7
+ throw new Error(`Template "${templateId}" does not provide a starter YAML file`);
8
+ }
9
+ const outputPath = options.output ??
10
+ renderOutputPattern(template.manifest?.init?.outputPattern ?? "{{name}}.yaml", {
11
+ name,
12
+ templateId: template.id,
13
+ });
14
+ const content = template.defaultsYaml.endsWith("\n")
15
+ ? template.defaultsYaml
16
+ : `${template.defaultsYaml}\n`;
17
+ await writeTextFile(outputPath, content, { overwrite: options.overwrite });
18
+ logger.info(`Wrote ${outputPath}`);
19
+ }
20
+ //# sourceMappingURL=init.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/commands/template/init.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAOzD,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,UAAkB,EAClB,IAAY,EACZ,OAA4B,EAC5B,MAAc;IAEd,MAAM,QAAQ,GAAG,kBAAkB,CAAC,UAAU,CAAC,CAAC;IAEhD,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC;QAC3B,MAAM,IAAI,KAAK,CAAC,aAAa,UAAU,wCAAwC,CAAC,CAAC;IACnF,CAAC;IAED,MAAM,UAAU,GACd,OAAO,CAAC,MAAM;QACd,mBAAmB,CACjB,QAAQ,CAAC,QAAQ,EAAE,IAAI,EAAE,aAAa,IAAI,eAAe,EACzD;YACE,IAAI;YACJ,UAAU,EAAE,QAAQ,CAAC,EAAE;SACxB,CACF,CAAC;IAEJ,MAAM,OAAO,GAAG,QAAQ,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC;QAClD,CAAC,CAAC,QAAQ,CAAC,YAAY;QACvB,CAAC,CAAC,GAAG,QAAQ,CAAC,YAAY,IAAI,CAAC;IAEjC,MAAM,aAAa,CAAC,UAAU,EAAE,OAAO,EAAE,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;IAC3E,MAAM,CAAC,IAAI,CAAC,SAAS,UAAU,EAAE,CAAC,CAAC;AACrC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { Logger } from "@caporal/core";
2
+ export declare function templateInspectCommand(templateId: string, logger: Logger): Promise<void>;
3
+ //# sourceMappingURL=inspect.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inspect.d.ts","sourceRoot":"","sources":["../../../src/commands/template/inspect.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAI5C,wBAAsB,sBAAsB,CAC1C,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,IAAI,CAAC,CAkBf"}
@@ -0,0 +1,20 @@
1
+ import { findTokens } from "../../lib/template/engine";
2
+ import { getBuiltInTemplate } from "../../lib/template/registry";
3
+ export async function templateInspectCommand(templateId, logger) {
4
+ const template = getBuiltInTemplate(templateId);
5
+ const tokens = findTokens(template.templateContent);
6
+ const manifest = template.manifest;
7
+ if (!manifest) {
8
+ throw new Error(`Template "${templateId}" does not have manifest metadata`);
9
+ }
10
+ logger.info(`id: ${manifest.id}`);
11
+ logger.info(`name: ${manifest.name}`);
12
+ logger.info(`description: ${manifest.description}`);
13
+ logger.info(`outputExtension: ${manifest.outputExtension ?? ".txt"}`);
14
+ logger.info(`initOutput: ${manifest.init?.outputPattern ?? "(none)"}`);
15
+ logger.info(`renderOutput: ${manifest.render?.outputPattern ?? "(none)"}`);
16
+ logger.info(`defaults: ${template.defaultsYaml ? "yes" : "no"}`);
17
+ logger.info(`requiredTokens: ${(manifest.requiredTokens ?? []).join(", ") || "(none)"}`);
18
+ logger.info(`tokens: ${tokens.join(", ") || "(none)"}`);
19
+ }
20
+ //# sourceMappingURL=inspect.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inspect.js","sourceRoot":"","sources":["../../../src/commands/template/inspect.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AAEjE,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,UAAkB,EAClB,MAAc;IAEd,MAAM,QAAQ,GAAG,kBAAkB,CAAC,UAAU,CAAC,CAAC;IAChD,MAAM,MAAM,GAAG,UAAU,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;IACpD,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC;IAEnC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,IAAI,KAAK,CAAC,aAAa,UAAU,mCAAmC,CAAC,CAAC;IAC9E,CAAC;IAED,MAAM,CAAC,IAAI,CAAC,OAAO,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC;IAClC,MAAM,CAAC,IAAI,CAAC,SAAS,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;IACtC,MAAM,CAAC,IAAI,CAAC,gBAAgB,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC;IACpD,MAAM,CAAC,IAAI,CAAC,oBAAoB,QAAQ,CAAC,eAAe,IAAI,MAAM,EAAE,CAAC,CAAC;IACtE,MAAM,CAAC,IAAI,CAAC,eAAe,QAAQ,CAAC,IAAI,EAAE,aAAa,IAAI,QAAQ,EAAE,CAAC,CAAC;IACvE,MAAM,CAAC,IAAI,CAAC,iBAAiB,QAAQ,CAAC,MAAM,EAAE,aAAa,IAAI,QAAQ,EAAE,CAAC,CAAC;IAC3E,MAAM,CAAC,IAAI,CAAC,aAAa,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IACjE,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,cAAc,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,QAAQ,EAAE,CAAC,CAAC;IACzF,MAAM,CAAC,IAAI,CAAC,WAAW,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,QAAQ,EAAE,CAAC,CAAC;AAC1D,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { Logger } from "@caporal/core";
2
+ export declare function templateListCommand(logger: Logger): Promise<void>;
3
+ //# sourceMappingURL=list.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../../src/commands/template/list.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAG5C,wBAAsB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAavE"}
@@ -0,0 +1,13 @@
1
+ import { listBuiltInTemplates } from "../../lib/template/registry";
2
+ export async function templateListCommand(logger) {
3
+ const templates = listBuiltInTemplates();
4
+ if (templates.length === 0) {
5
+ logger.info("No built-in templates available.");
6
+ return;
7
+ }
8
+ const idWidth = Math.max(...templates.map((template) => template.id.length));
9
+ for (const template of templates) {
10
+ logger.info(`${template.id.padEnd(idWidth)} ${template.description}`);
11
+ }
12
+ }
13
+ //# sourceMappingURL=list.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list.js","sourceRoot":"","sources":["../../../src/commands/template/list.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAEnE,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,MAAc;IACtD,MAAM,SAAS,GAAG,oBAAoB,EAAE,CAAC;IAEzC,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3B,MAAM,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC;QAChD,OAAO;IACT,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IAE7E,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QACjC,MAAM,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC;IACzE,CAAC;AACH,CAAC"}
@@ -0,0 +1,12 @@
1
+ import type { Logger } from "@caporal/core";
2
+ type TemplateRenderOptions = {
3
+ data: string;
4
+ out?: string;
5
+ stdout?: boolean;
6
+ strict?: boolean;
7
+ overwrite?: boolean;
8
+ name?: string;
9
+ };
10
+ export declare function templateRenderCommand(source: string, options: TemplateRenderOptions, logger: Logger): Promise<void>;
11
+ export {};
12
+ //# sourceMappingURL=render.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../../../src/commands/template/render.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAQ5C,KAAK,qBAAqB,GAAG;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AASF,wBAAsB,qBAAqB,CACzC,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,qBAAqB,EAC9B,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,IAAI,CAAC,CA6Cf"}
@@ -0,0 +1,49 @@
1
+ import { basename, extname } from "node:path";
2
+ import { loadYamlData } from "../../lib/template/data";
3
+ import { renderTemplate } from "../../lib/template/engine";
4
+ import { writeTextFile } from "../../lib/template/files";
5
+ import { getFileStem, renderOutputPattern } from "../../lib/template/manifest";
6
+ import { resolveTemplateSource } from "../../lib/template/registry";
7
+ function isMissingValue(value) {
8
+ return (value == null ||
9
+ (typeof value === "string" && value.trim() === ""));
10
+ }
11
+ export async function templateRenderCommand(source, options, logger) {
12
+ const template = await resolveTemplateSource(source);
13
+ const data = await loadYamlData(options.data);
14
+ const result = renderTemplate(template.templateContent, data);
15
+ const requiredTokens = template.manifest?.requiredTokens ?? [];
16
+ const missingRequiredTokens = requiredTokens.filter((token) => isMissingValue(data[token]));
17
+ const unresolvedTokens = [...new Set([...result.missingTokens, ...missingRequiredTokens])];
18
+ if (unresolvedTokens.length > 0) {
19
+ const message = `Unresolved tokens: ${unresolvedTokens.join(", ")}`;
20
+ if (options.strict) {
21
+ throw new Error(message);
22
+ }
23
+ logger.warn(message);
24
+ }
25
+ if (options.stdout) {
26
+ console.log(result.content);
27
+ return;
28
+ }
29
+ const dataFileName = basename(options.data);
30
+ const dataFileStem = getFileStem(options.data);
31
+ const templateFileName = template.sourcePath ? basename(template.sourcePath) : undefined;
32
+ const templateFileStem = template.sourcePath ? getFileStem(template.sourcePath) : undefined;
33
+ const sourceExtension = template.sourcePath ? extname(template.sourcePath) : "";
34
+ const outputExtension = template.manifest?.outputExtension ?? (sourceExtension || ".txt");
35
+ const outputPath = options.out ??
36
+ (template.manifest?.render?.outputPattern
37
+ ? renderOutputPattern(template.manifest.render.outputPattern, {
38
+ name: options.name ?? dataFileStem,
39
+ templateId: template.id,
40
+ dataFileName,
41
+ dataFileStem,
42
+ templateFileName,
43
+ templateFileStem,
44
+ })
45
+ : `${dataFileStem}.rendered${outputExtension}`);
46
+ await writeTextFile(outputPath, result.content, { overwrite: options.overwrite });
47
+ logger.info(`Wrote ${outputPath}`);
48
+ }
49
+ //# sourceMappingURL=render.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"render.js","sourceRoot":"","sources":["../../../src/commands/template/render.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { Program } from "@caporal/core";
2
+ export default function templateCommand(program: Program): void;
3
+ //# sourceMappingURL=template.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"template.d.ts","sourceRoot":"","sources":["../../src/commands/template.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAM7C,MAAM,CAAC,OAAO,UAAU,eAAe,CAAC,OAAO,EAAE,OAAO,QAqGvD"}
@@ -0,0 +1,92 @@
1
+ import { templateInitCommand } from "./template/init";
2
+ import { templateInspectCommand } from "./template/inspect";
3
+ import { templateListCommand } from "./template/list";
4
+ import { templateRenderCommand } from "./template/render";
5
+ export default function templateCommand(program) {
6
+ const templateHelpText = `
7
+ template utilities
8
+
9
+ Usage:
10
+ blt template <operation>
11
+
12
+ Available operations:
13
+ list List built-in templates
14
+ inspect Show manifest and token details for a built-in template
15
+ init Create a starter YAML file from template defaults
16
+ render Render a built-in or local template with YAML data
17
+
18
+ Run 'blt template <operation> --help' for more information on a specific command.
19
+ `;
20
+ program
21
+ .command("template", "template rendering utilities")
22
+ .help(templateHelpText)
23
+ .action(() => {
24
+ console.log(templateHelpText);
25
+ });
26
+ program
27
+ .command("template list", "List built-in templates")
28
+ .hide()
29
+ .action(async ({ logger }) => {
30
+ await templateListCommand(logger);
31
+ });
32
+ program
33
+ .command("template inspect", "Inspect a built-in template")
34
+ .hide()
35
+ .argument("<template>", "Built-in template id")
36
+ .action(async ({ args, logger }) => {
37
+ await templateInspectCommand(args.template, logger);
38
+ });
39
+ program
40
+ .command("template init", "Create a starter YAML file from template defaults")
41
+ .hide()
42
+ .argument("<template>", "Built-in template id")
43
+ .argument("<name>", "Name used to resolve the output pattern")
44
+ .option("-o, --output <path>", "Override the default output path", {
45
+ default: "",
46
+ })
47
+ .option("--overwrite", "Overwrite existing output file", {
48
+ default: false,
49
+ })
50
+ .action(async ({ args, options, logger }) => {
51
+ await templateInitCommand(args.template, args.name, {
52
+ output: options.output || undefined,
53
+ overwrite: options.overwrite,
54
+ }, logger);
55
+ });
56
+ program
57
+ .command("template render", "Render a built-in or local template with YAML data")
58
+ .hide()
59
+ .argument("<source>", "Built-in template id or local template file path")
60
+ .option("-d, --data <path>", "YAML data file", {
61
+ default: "",
62
+ })
63
+ .option("-o, --out <path>", "Output file path", {
64
+ default: "",
65
+ })
66
+ .option("--name <name>", "Optional name used for output patterns", {
67
+ default: "",
68
+ })
69
+ .option("--stdout", "Print rendered content to stdout instead of writing a file", {
70
+ default: false,
71
+ })
72
+ .option("--strict", "Fail if any referenced or required token is missing", {
73
+ default: false,
74
+ })
75
+ .option("--overwrite", "Overwrite existing output file", {
76
+ default: false,
77
+ })
78
+ .action(async ({ args, options, logger }) => {
79
+ if (!options.data) {
80
+ throw new Error("template render requires --data <path>");
81
+ }
82
+ await templateRenderCommand(args.source, {
83
+ data: options.data,
84
+ out: options.out || undefined,
85
+ stdout: options.stdout,
86
+ strict: options.strict,
87
+ overwrite: options.overwrite,
88
+ name: options.name || undefined,
89
+ }, logger);
90
+ });
91
+ }
92
+ //# sourceMappingURL=template.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"template.js","sourceRoot":"","sources":["../../src/commands/template.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * Claude Code–aligned config template registry for blt wai.
3
- * Templates are fetched from the bltcore-com/tools repo at runtime.
3
+ * Templates are fetched from bltcore-com.github.io/wai/ at runtime.
4
4
  */
5
5
  export interface ConfigTypeDef {
6
6
  filename: string;
@@ -9,7 +9,7 @@ export interface ConfigTypeDef {
9
9
  description: string;
10
10
  }
11
11
  export declare const WAI_TYPES: Record<string, ConfigTypeDef>;
12
- export declare function getTemplateUrl(type: string, branch: string, name?: string): string;
12
+ export declare function getTemplateUrl(type: string, _branch?: string, _name?: string): string;
13
13
  export declare function getOutputPath(type: string, cwd: string, options: {
14
14
  output?: string;
15
15
  claudeDir?: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"config-templates.d.ts","sourceRoot":"","sources":["../../../src/commands/wai/config-templates.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,eAAO,MAAM,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAgFnD,CAAC;AAEF,wBAAgB,cAAc,CAC5B,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,IAAI,CAAC,EAAE,MAAM,GACZ,MAAM,CAMR;AAED,wBAAgB,aAAa,CAC3B,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,MAAM,EACX,OAAO,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,OAAO,CAAA;CAAE,EACjD,IAAI,CAAC,EAAE,MAAM,GACZ,MAAM,CAqCR;AAED,wBAAsB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAQhE"}
1
+ {"version":3,"file":"config-templates.d.ts","sourceRoot":"","sources":["../../../src/commands/wai/config-templates.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,eAAO,MAAM,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAgFnD,CAAC;AAEF,wBAAgB,cAAc,CAC5B,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,MAAM,EAChB,KAAK,CAAC,EAAE,MAAM,GACb,MAAM,CAMR;AAED,wBAAgB,aAAa,CAC3B,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,MAAM,EACX,OAAO,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,OAAO,CAAA;CAAE,EACjD,IAAI,CAAC,EAAE,MAAM,GACZ,MAAM,CAqCR;AAED,wBAAsB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAQhE"}
@@ -1,9 +1,8 @@
1
1
  /**
2
2
  * Claude Code–aligned config template registry for blt wai.
3
- * Templates are fetched from the bltcore-com/tools repo at runtime.
3
+ * Templates are fetched from bltcore-com.github.io/wai/ at runtime.
4
4
  */
5
- const TOOLS_REPO = "bltcore-com/tools";
6
- const TEMPLATE_BASE = "cli/.trailz";
5
+ const WAI_UPDATE_BASE = "https://bltcore-com.github.io/wai";
7
6
  export const WAI_TYPES = {
8
7
  claude: {
9
8
  filename: "CLAUDE.md",
@@ -85,12 +84,12 @@ export const WAI_TYPES = {
85
84
  description: "Legacy Codex repo instructions (superseded by AGENTS.md in 0.27+)",
86
85
  },
87
86
  };
88
- export function getTemplateUrl(type, branch, name) {
87
+ export function getTemplateUrl(type, _branch, _name) {
89
88
  const def = WAI_TYPES[type];
90
89
  if (!def)
91
90
  throw new Error(`Unknown type: ${type}`);
92
91
  const sourceFile = def.sourceFile;
93
- return `https://raw.githubusercontent.com/${TOOLS_REPO}/${branch}/${TEMPLATE_BASE}/${sourceFile}`;
92
+ return `${WAI_UPDATE_BASE}/${sourceFile}`;
94
93
  }
95
94
  export function getOutputPath(type, cwd, options, name) {
96
95
  if (options.output) {
@@ -1 +1 @@
1
- {"version":3,"file":"config-templates.js","sourceRoot":"","sources":["../../../src/commands/wai/config-templates.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config-templates.js","sourceRoot":"","sources":["../../../src/commands/wai/config-templates.ts"],"names":[],"mappings":"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"}
@@ -127,7 +127,7 @@ export async function runWaiConfig(type, name, options, logger) {
127
127
  catch (err) {
128
128
  const fallback = FALLBACK_TEMPLATES[sourceFile];
129
129
  if (fallback) {
130
- logger.warn("Could not fetch from GitHub, using built-in template. Push templates to the tools repo for the latest versions.");
130
+ logger.warn("Could not fetch from bltcore-com.github.io/wai/, using built-in template.");
131
131
  content = fallback;
132
132
  }
133
133
  else {
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/commands/wai/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/commands/wai/config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function loadYamlData(path: string): Promise<Record<string, unknown>>;
2
+ //# sourceMappingURL=data.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data.d.ts","sourceRoot":"","sources":["../../../src/lib/template/data.ts"],"names":[],"mappings":"AAGA,wBAAsB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAajF"}
@@ -0,0 +1,14 @@
1
+ import { readFile } from "node:fs/promises";
2
+ import yaml from "js-yaml";
3
+ export async function loadYamlData(path) {
4
+ const content = await readFile(path, "utf8");
5
+ const parsed = yaml.load(content);
6
+ if (parsed == null) {
7
+ return {};
8
+ }
9
+ if (typeof parsed !== "object" || Array.isArray(parsed)) {
10
+ throw new Error(`Expected YAML object in ${path}`);
11
+ }
12
+ return parsed;
13
+ }
14
+ //# sourceMappingURL=data.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data.js","sourceRoot":"","sources":["../../../src/lib/template/data.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,IAAI,MAAM,SAAS,CAAC;AAE3B,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,IAAY;IAC7C,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAC7C,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAElC,IAAI,MAAM,IAAI,IAAI,EAAE,CAAC;QACnB,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QACxD,MAAM,IAAI,KAAK,CAAC,2BAA2B,IAAI,EAAE,CAAC,CAAC;IACrD,CAAC;IAED,OAAO,MAAiC,CAAC;AAC3C,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { RenderResult } from "./types";
2
+ export declare function findTokens(content: string): string[];
3
+ export declare function renderTemplate(content: string, data: Record<string, unknown>): RenderResult;
4
+ //# sourceMappingURL=engine.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../../src/lib/template/engine.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAI5C,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAWpD;AAED,wBAAgB,cAAc,CAC5B,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,YAAY,CAwBd"}
@@ -0,0 +1,33 @@
1
+ const TOKEN_PATTERN = /\[\[([^[\]]+)\]\]/g;
2
+ export function findTokens(content) {
3
+ const tokens = new Set();
4
+ for (const match of content.matchAll(TOKEN_PATTERN)) {
5
+ const token = match[1]?.trim();
6
+ if (token) {
7
+ tokens.add(token);
8
+ }
9
+ }
10
+ return [...tokens];
11
+ }
12
+ export function renderTemplate(content, data) {
13
+ const tokens = findTokens(content);
14
+ const replacedTokens = new Set();
15
+ const missingTokens = new Set();
16
+ const rendered = content.replace(TOKEN_PATTERN, (match, rawTokenName) => {
17
+ const tokenName = rawTokenName.trim();
18
+ if (Object.prototype.hasOwnProperty.call(data, tokenName)) {
19
+ replacedTokens.add(tokenName);
20
+ const value = data[tokenName];
21
+ return value == null ? "" : String(value);
22
+ }
23
+ missingTokens.add(tokenName);
24
+ return match;
25
+ });
26
+ return {
27
+ content: rendered,
28
+ tokens,
29
+ replacedTokens: [...replacedTokens],
30
+ missingTokens: [...missingTokens],
31
+ };
32
+ }
33
+ //# sourceMappingURL=engine.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"engine.js","sourceRoot":"","sources":["../../../src/lib/template/engine.ts"],"names":[],"mappings":"AAEA,MAAM,aAAa,GAAG,oBAAoB,CAAC;AAE3C,MAAM,UAAU,UAAU,CAAC,OAAe;IACxC,MAAM,MAAM,GAAG,IAAI,GAAG,EAAU,CAAC;IAEjC,KAAK,MAAM,KAAK,IAAI,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;QACpD,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;QAC/B,IAAI,KAAK,EAAE,CAAC;YACV,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACpB,CAAC;IACH,CAAC;IAED,OAAO,CAAC,GAAG,MAAM,CAAC,CAAC;AACrB,CAAC;AAED,MAAM,UAAU,cAAc,CAC5B,OAAe,EACf,IAA6B;IAE7B,MAAM,MAAM,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC;IACnC,MAAM,cAAc,GAAG,IAAI,GAAG,EAAU,CAAC;IACzC,MAAM,aAAa,GAAG,IAAI,GAAG,EAAU,CAAC;IAExC,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC,KAAK,EAAE,YAAoB,EAAE,EAAE;QAC9E,MAAM,SAAS,GAAG,YAAY,CAAC,IAAI,EAAE,CAAC;QAEtC,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,EAAE,CAAC;YAC1D,cAAc,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YAC9B,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC;YAC9B,OAAO,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC5C,CAAC;QAED,aAAa,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC7B,OAAO,KAAK,CAAC;IACf,CAAC,CAAC,CAAC;IAEH,OAAO;QACL,OAAO,EAAE,QAAQ;QACjB,MAAM;QACN,cAAc,EAAE,CAAC,GAAG,cAAc,CAAC;QACnC,aAAa,EAAE,CAAC,GAAG,aAAa,CAAC;KAClC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,8 @@
1
+ type WriteTextFileOptions = {
2
+ overwrite?: boolean;
3
+ };
4
+ export declare function readTextFile(path: string): Promise<string>;
5
+ export declare function pathExists(path: string): Promise<boolean>;
6
+ export declare function writeTextFile(path: string, content: string, options?: WriteTextFileOptions): Promise<void>;
7
+ export {};
8
+ //# sourceMappingURL=files.d.ts.map