@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.
- package/README.md +92 -1
- package/dist/blt +2 -0
- package/dist/blt.d.ts.map +1 -1
- package/dist/blt.js.map +1 -1
- package/dist/commands/template/init.d.ts +8 -0
- package/dist/commands/template/init.d.ts.map +1 -0
- package/dist/commands/template/init.js +20 -0
- package/dist/commands/template/init.js.map +1 -0
- package/dist/commands/template/inspect.d.ts +3 -0
- package/dist/commands/template/inspect.d.ts.map +1 -0
- package/dist/commands/template/inspect.js +20 -0
- package/dist/commands/template/inspect.js.map +1 -0
- package/dist/commands/template/list.d.ts +3 -0
- package/dist/commands/template/list.d.ts.map +1 -0
- package/dist/commands/template/list.js +13 -0
- package/dist/commands/template/list.js.map +1 -0
- package/dist/commands/template/render.d.ts +12 -0
- package/dist/commands/template/render.d.ts.map +1 -0
- package/dist/commands/template/render.js +49 -0
- package/dist/commands/template/render.js.map +1 -0
- package/dist/commands/template.d.ts +3 -0
- package/dist/commands/template.d.ts.map +1 -0
- package/dist/commands/template.js +92 -0
- package/dist/commands/template.js.map +1 -0
- package/dist/commands/wai/config-templates.d.ts +2 -2
- package/dist/commands/wai/config-templates.d.ts.map +1 -1
- package/dist/commands/wai/config-templates.js +4 -5
- package/dist/commands/wai/config-templates.js.map +1 -1
- package/dist/commands/wai/config.js +1 -1
- package/dist/commands/wai/config.js.map +1 -1
- package/dist/lib/template/data.d.ts +2 -0
- package/dist/lib/template/data.d.ts.map +1 -0
- package/dist/lib/template/data.js +14 -0
- package/dist/lib/template/data.js.map +1 -0
- package/dist/lib/template/engine.d.ts +4 -0
- package/dist/lib/template/engine.d.ts.map +1 -0
- package/dist/lib/template/engine.js +33 -0
- package/dist/lib/template/engine.js.map +1 -0
- package/dist/lib/template/files.d.ts +8 -0
- package/dist/lib/template/files.d.ts.map +1 -0
- package/dist/lib/template/files.js +24 -0
- package/dist/lib/template/files.js.map +1 -0
- package/dist/lib/template/manifest.d.ts +11 -0
- package/dist/lib/template/manifest.d.ts.map +1 -0
- package/dist/lib/template/manifest.js +15 -0
- package/dist/lib/template/manifest.js.map +1 -0
- package/dist/lib/template/registry.d.ts +5 -0
- package/dist/lib/template/registry.d.ts.map +1 -0
- package/dist/lib/template/registry.js +43 -0
- package/dist/lib/template/registry.js.map +1 -0
- package/dist/lib/template/types.d.ts +33 -0
- package/dist/lib/template/types.d.ts.map +1 -0
- package/dist/lib/template/types.js +2 -0
- package/dist/lib/template/types.js.map +1 -0
- package/dist/templates/index.d.ts +3 -0
- package/dist/templates/index.d.ts.map +1 -0
- package/dist/templates/index.js +3 -0
- package/dist/templates/index.js.map +1 -0
- package/dist/templates/legal/nda/mutual.d.ts +3 -0
- package/dist/templates/legal/nda/mutual.d.ts.map +1 -0
- package/dist/templates/legal/nda/mutual.js +183 -0
- package/dist/templates/legal/nda/mutual.js.map +1 -0
- package/package.json +1 -1
- package/dist/commands/init/config-templates.d.ts +0 -18
- package/dist/commands/init/config-templates.d.ts.map +0 -1
- package/dist/commands/init/config-templates.js +0 -74
- package/dist/commands/init/config-templates.js.map +0 -1
- package/dist/commands/init/config.d.ts +0 -9
- package/dist/commands/init/config.d.ts.map +0 -1
- package/dist/commands/init/config.js +0 -92
- package/dist/commands/init/config.js.map +0 -1
- package/dist/commands/show/info.d.ts +0 -7
- package/dist/commands/show/info.d.ts.map +0 -1
- package/dist/commands/show/info.js +0 -52
- 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":";
|
|
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;
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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
|
|
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,
|
|
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;
|
|
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
|
|
3
|
+
* Templates are fetched from bltcore-com.github.io/wai/ at runtime.
|
|
4
4
|
*/
|
|
5
|
-
const
|
|
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,
|
|
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
|
|
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":"AAAA;;;GAGG;AAEH,MAAM,
|
|
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
|
|
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":"AACA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAChD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EACL,aAAa,EACb,aAAa,EACb,cAAc,EACd,SAAS,GACV,MAAM,oBAAoB,CAAC;AAE5B,MAAM,cAAc,GAAG,MAAM,CAAC;AAE9B,6EAA6E;AAC7E,MAAM,kBAAkB,GAA2B;IACjD,WAAW,EAAE;;;;;;;;;;;CAWd;IACC,WAAW,EAAE;;;;;;;;;CASd;IACC,iBAAiB,EAAE;;;CAGpB;IACC,UAAU,EAAE;;;;;;;;CAQb;IACC,kBAAkB,EAAE;;;;;;;CAOrB;IACC,qBAAqB,EAAE;;;;;;;CAOxB;IACC,eAAe,EAAE;;;CAGlB;IACC,qBAAqB,EAAE;;;CAGxB;IACC,UAAU,EAAE;;;CAGb;IACC,oBAAoB;IACpB,oBAAoB,EAAE;;;;CAIvB;IACC,SAAS,EAAE;;;;;;;;;;CAUZ;IACC,cAAc,EAAE;;;;;;;;;CASjB;IACC,UAAU,EAAE;;;;CAIb;CACA,CAAC;AASF,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,IAAY,EACZ,IAAwB,EACxB,OAAyB,EACzB,MAAc;IAEd,MAAM,GAAG,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IAC5B,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,MAAM,CAAC,KAAK,CAAC,kBAAkB,IAAI,aAAa,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACrF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,GAAG,CAAC,SAAS,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC;QACnC,MAAM,CAAC,KAAK,CAAC,SAAS,IAAI,uCAAuC,IAAI,UAAU,CAAC,CAAC;QACjF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAC1B,MAAM,UAAU,GAAG,aAAa,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;IAE3D,IAAI,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;QACjD,MAAM,CAAC,IAAI,CAAC,wBAAwB,UAAU,EAAE,CAAC,CAAC;QAClD,MAAM,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC;QAC9C,OAAO;IACT,CAAC;IAED,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,cAAc,CAAC;IAChD,MAAM,UAAU,GAAG,GAAG,CAAC,UAAU,CAAC;IAElC,IAAI,OAAe,CAAC;IACpB,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;QAC/C,OAAO,GAAG,MAAM,aAAa,CAAC,GAAG,CAAC,CAAC;IACrC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,QAAQ,GAAG,kBAAkB,CAAC,UAAU,CAAC,CAAC;QAChD,IAAI,QAAQ,EAAE,CAAC;YACb,MAAM,CAAC,IAAI,CACT,
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/commands/wai/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -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 @@
|
|
|
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
|