@markbrutx/promptbook-cli 0.1.0 → 0.3.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 +5 -2
- package/dist/src/args.d.ts +2 -0
- package/dist/src/args.d.ts.map +1 -1
- package/dist/src/args.js +2 -0
- package/dist/src/args.js.map +1 -1
- package/dist/src/commands/annotations.d.ts.map +1 -1
- package/dist/src/commands/annotations.js +1 -1
- package/dist/src/commands/annotations.js.map +1 -1
- package/dist/src/commands/eval.d.ts.map +1 -1
- package/dist/src/commands/eval.js +1 -1
- package/dist/src/commands/eval.js.map +1 -1
- package/dist/src/commands/ls.d.ts +6 -5
- package/dist/src/commands/ls.d.ts.map +1 -1
- package/dist/src/commands/ls.js +90 -21
- package/dist/src/commands/ls.js.map +1 -1
- package/dist/src/commands/resolve.d.ts +6 -3
- package/dist/src/commands/resolve.d.ts.map +1 -1
- package/dist/src/commands/resolve.js +84 -11
- package/dist/src/commands/resolve.js.map +1 -1
- package/dist/src/config.d.ts +29 -12
- package/dist/src/config.d.ts.map +1 -1
- package/dist/src/config.js +52 -32
- package/dist/src/config.js.map +1 -1
- package/dist/src/run.d.ts.map +1 -1
- package/dist/src/run.js +7 -3
- package/dist/src/run.js.map +1 -1
- package/dist/src/workspace.d.ts +51 -0
- package/dist/src/workspace.d.ts.map +1 -0
- package/dist/src/workspace.js +103 -0
- package/dist/src/workspace.js.map +1 -0
- package/package.json +22 -5
- package/src/args.ts +4 -0
- package/src/commands/ls.ts +114 -21
- package/src/commands/resolve.ts +104 -12
- package/src/config.ts +59 -35
- package/src/run.ts +7 -3
- package/src/workspace.ts +144 -0
package/README.md
CHANGED
|
@@ -19,8 +19,11 @@ promptbook view # open the viewer (needs @markbrutx/prom
|
|
|
19
19
|
promptbook annotations list|resolve|clear
|
|
20
20
|
```
|
|
21
21
|
|
|
22
|
-
The prompts folder is resolved from `--dir`, then `promptbook.json
|
|
23
|
-
|
|
22
|
+
The prompts folder is resolved from `--dir`, then `promptbook.json` (the
|
|
23
|
+
nearest one found by walking up from the current directory — same model as
|
|
24
|
+
`git`/`biome`/`eslint`; the `promptsDir` value is taken relative to wherever
|
|
25
|
+
the config file lives, so one config at the repo root works from every
|
|
26
|
+
subfolder), then `./prompts`.
|
|
24
27
|
|
|
25
28
|
```
|
|
26
29
|
promptbook resolve assistant --ctx mode=terse --ctx locale=ru
|
package/dist/src/args.d.ts
CHANGED
|
@@ -18,6 +18,8 @@ export interface ParsedArgs {
|
|
|
18
18
|
contextFile?: string;
|
|
19
19
|
fragments: boolean;
|
|
20
20
|
compositions: boolean;
|
|
21
|
+
/** ls/resolve: operate across every book in the workspace. */
|
|
22
|
+
all: boolean;
|
|
21
23
|
/** lint: estimated token ceiling for the token-budget rule. */
|
|
22
24
|
maxTokens?: number;
|
|
23
25
|
/** lint: treat warnings as failures for the exit code. */
|
package/dist/src/args.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"args.d.ts","sourceRoot":"","sources":["../../src/args.ts"],"names":[],"mappings":"AAEA,6EAA6E;AAC7E,MAAM,WAAW,UAAU;IACzB,0EAA0E;IAC1E,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,+DAA+D;IAC/D,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;IACjB,yEAAyE;IACzE,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,2EAA2E;IAC3E,KAAK,EAAE,OAAO,CAAC;IACf,gEAAgE;IAChE,GAAG,EAAE,MAAM,EAAE,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,OAAO,CAAC;IACnB,YAAY,EAAE,OAAO,CAAC;IACtB,+DAA+D;IAC/D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,0DAA0D;IAC1D,MAAM,EAAE,OAAO,CAAC;IAChB,wEAAwE;IACxE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,oEAAoE;IACpE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,8DAA8D;IAC9D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,+DAA+D;IAC/D,IAAI,EAAE,OAAO,CAAC;IACd,wEAAwE;IACxE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,6DAA6D;IAC7D,MAAM,EAAE,OAAO,CAAC;CACjB;AAgCD;;;GAGG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,UAAU,
|
|
1
|
+
{"version":3,"file":"args.d.ts","sourceRoot":"","sources":["../../src/args.ts"],"names":[],"mappings":"AAEA,6EAA6E;AAC7E,MAAM,WAAW,UAAU;IACzB,0EAA0E;IAC1E,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,+DAA+D;IAC/D,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;IACjB,yEAAyE;IACzE,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,2EAA2E;IAC3E,KAAK,EAAE,OAAO,CAAC;IACf,gEAAgE;IAChE,GAAG,EAAE,MAAM,EAAE,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,OAAO,CAAC;IACnB,YAAY,EAAE,OAAO,CAAC;IACtB,8DAA8D;IAC9D,GAAG,EAAE,OAAO,CAAC;IACb,+DAA+D;IAC/D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,0DAA0D;IAC1D,MAAM,EAAE,OAAO,CAAC;IAChB,wEAAwE;IACxE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,oEAAoE;IACpE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,8DAA8D;IAC9D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,+DAA+D;IAC/D,IAAI,EAAE,OAAO,CAAC;IACd,wEAAwE;IACxE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,6DAA6D;IAC7D,MAAM,EAAE,OAAO,CAAC;CACjB;AAgCD;;;GAGG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,UAAU,CAwEvD"}
|
package/dist/src/args.js
CHANGED
|
@@ -38,6 +38,7 @@ export function parseCliArgs(argv) {
|
|
|
38
38
|
"context-file": { type: "string" },
|
|
39
39
|
fragments: { type: "boolean" },
|
|
40
40
|
compositions: { type: "boolean" },
|
|
41
|
+
all: { type: "boolean" },
|
|
41
42
|
"max-tokens": { type: "string" },
|
|
42
43
|
strict: { type: "boolean" },
|
|
43
44
|
model: { type: "string" },
|
|
@@ -83,6 +84,7 @@ export function parseCliArgs(argv) {
|
|
|
83
84
|
contextFile: values["context-file"],
|
|
84
85
|
fragments: values.fragments ?? false,
|
|
85
86
|
compositions: values.compositions ?? false,
|
|
87
|
+
all: values.all ?? false,
|
|
86
88
|
maxTokens,
|
|
87
89
|
strict: values.strict ?? false,
|
|
88
90
|
model: values.model,
|
package/dist/src/args.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"args.js","sourceRoot":"","sources":["../../src/args.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"args.js","sourceRoot":"","sources":["../../src/args.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"annotations.d.ts","sourceRoot":"","sources":["../../../src/commands/annotations.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"annotations.d.ts","sourceRoot":"","sources":["../../../src/commands/annotations.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,UAAU,CAAC;AAuEnC;;;;;GAKG;AACH,wBAAsB,cAAc,CAAC,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAmB9E"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { join } from "node:path";
|
|
2
|
-
import { ANNOTATION_QUEUE_DIR, ANNOTATION_QUEUE_FILE, parseInbox, serializeInbox } from "@markbrutx/promptbook-core";
|
|
2
|
+
import { ANNOTATION_QUEUE_DIR, ANNOTATION_QUEUE_FILE, parseInbox, serializeInbox, } from "@markbrutx/promptbook-core";
|
|
3
3
|
import { requirePromptsDir } from "../config.js";
|
|
4
4
|
import { formatContext, plural } from "../style.js";
|
|
5
5
|
function queueFile(promptsDir) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"annotations.js","sourceRoot":"","sources":["../../../src/commands/annotations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,
|
|
1
|
+
{"version":3,"file":"annotations.js","sourceRoot":"","sources":["../../../src/commands/annotations.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eval.d.ts","sourceRoot":"","sources":["../../../src/commands/eval.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"eval.d.ts","sourceRoot":"","sources":["../../../src/commands/eval.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C,OAAO,EAAqC,KAAK,EAAE,EAAE,MAAM,UAAU,CAAC;AAoCtE;;;;;;;;GAQG;AACH,wBAAsB,OAAO,CAAC,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAwEvE"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { defaultRules, evaluate, lint, loadFixtures, loadPrompts, resolveBook } from "@markbrutx/promptbook-core";
|
|
1
|
+
import { defaultRules, evaluate, lint, loadFixtures, loadPrompts, resolveBook, } from "@markbrutx/promptbook-core";
|
|
2
2
|
import { openRouterAdapter } from "@markbrutx/promptbook-openrouter";
|
|
3
3
|
import { evalConfigFrom, loadConfig, requirePromptsDir } from "../config.js";
|
|
4
4
|
import { colorEnabled } from "../io.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eval.js","sourceRoot":"","sources":["../../../src/commands/eval.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"eval.js","sourceRoot":"","sources":["../../../src/commands/eval.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import type { ParsedArgs } from "../args.js";
|
|
2
2
|
import { type IO } from "../io.js";
|
|
3
3
|
/**
|
|
4
|
-
* `ls`: list compositions (name, base length, rule count),
|
|
5
|
-
* (name, description, sample count) and fragments (id, kind, tags,
|
|
6
|
-
* the unified menu of every prompt in the book. `--fragments
|
|
7
|
-
* narrow the output (code-prompts ride with compositions, both
|
|
8
|
-
* `--json` emits a structured list
|
|
4
|
+
* `ls`: list compositions (name, base length, rule count, required context),
|
|
5
|
+
* code-prompts (name, description, sample count) and fragments (id, kind, tags,
|
|
6
|
+
* source) — the unified menu of every prompt in the book. `--fragments`/
|
|
7
|
+
* `--compositions` narrow the output (code-prompts ride with compositions, both
|
|
8
|
+
* being prompts); `--json` emits a structured list; `--all` spans every book in
|
|
9
|
+
* the workspace instead of one folder.
|
|
9
10
|
*/
|
|
10
11
|
export declare function cmdLs(args: ParsedArgs, io: IO): Promise<number>;
|
|
11
12
|
//# sourceMappingURL=ls.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ls.d.ts","sourceRoot":"","sources":["../../../src/commands/ls.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ls.d.ts","sourceRoot":"","sources":["../../../src/commands/ls.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C,OAAO,EAAgB,KAAK,EAAE,EAAE,MAAM,UAAU,CAAC;AAiGjD;;;;;;;GAOG;AACH,wBAAsB,KAAK,CAAC,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAwErE"}
|
package/dist/src/commands/ls.js
CHANGED
|
@@ -1,40 +1,109 @@
|
|
|
1
|
-
import { relative } from "node:path";
|
|
2
|
-
import { loadPrompts } from "@markbrutx/promptbook-core";
|
|
1
|
+
import { basename, relative } from "node:path";
|
|
2
|
+
import { loadPrompts, requiredContext } from "@markbrutx/promptbook-core";
|
|
3
3
|
import { requirePromptsDir } from "../config.js";
|
|
4
4
|
import { emitWarnings } from "../io.js";
|
|
5
|
+
import { bookDir, loadWorkspace } from "../workspace.js";
|
|
6
|
+
/** Composition rows for the menu: counts plus the statically-declared context. */
|
|
7
|
+
function compositionEntries(book) {
|
|
8
|
+
return [...book.compositions.values()]
|
|
9
|
+
.sort((a, b) => a.name.localeCompare(b.name))
|
|
10
|
+
.map((c) => ({
|
|
11
|
+
name: c.name,
|
|
12
|
+
base: c.base.length,
|
|
13
|
+
rules: c.rules.length,
|
|
14
|
+
requiredContext: requiredContext(book, c.name),
|
|
15
|
+
}));
|
|
16
|
+
}
|
|
17
|
+
/** Code-prompt rows: builder metadata only (opaque; no requiredContext). */
|
|
18
|
+
function codePromptEntries(book) {
|
|
19
|
+
return [...book.codePrompts.values()]
|
|
20
|
+
.sort((a, b) => a.name.localeCompare(b.name))
|
|
21
|
+
.map((c) => ({ name: c.name, description: c.description ?? null, samples: c.samples.length }));
|
|
22
|
+
}
|
|
23
|
+
/** Compact one-line context summary for the plain `--all` tree. */
|
|
24
|
+
function ctxSummary(rc) {
|
|
25
|
+
const vars = rc.vars.length > 0 ? rc.vars.join(",") : "-";
|
|
26
|
+
const axes = Object.entries(rc.axes)
|
|
27
|
+
.map(([key, values]) => `${key}=${values.join("|")}`)
|
|
28
|
+
.join(" ") || "-";
|
|
29
|
+
return `vars=${vars} axes=${axes}`;
|
|
30
|
+
}
|
|
5
31
|
/**
|
|
6
|
-
* `ls`:
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
32
|
+
* `ls --all`: a cross-book inventory of the whole workspace. Discovers every
|
|
33
|
+
* book under the root, loads each, and emits the menu (compositions with their
|
|
34
|
+
* required context + code-prompts) — `--json` as `{ workspace, books[] }`,
|
|
35
|
+
* plain as an indented book→composition tree. Order is deterministic (books and
|
|
36
|
+
* compositions sorted by name).
|
|
37
|
+
*/
|
|
38
|
+
async function cmdLsAll(io, root, json) {
|
|
39
|
+
const workspace = await loadWorkspace(io, root);
|
|
40
|
+
const books = await Promise.all(workspace.books.map(async (b) => {
|
|
41
|
+
const book = await loadPrompts(b.dir, io.fs);
|
|
42
|
+
return {
|
|
43
|
+
name: b.name,
|
|
44
|
+
dir: bookDir(workspace, b),
|
|
45
|
+
compositions: compositionEntries(book),
|
|
46
|
+
codePrompts: codePromptEntries(book),
|
|
47
|
+
warnings: book.warnings,
|
|
48
|
+
};
|
|
49
|
+
}));
|
|
50
|
+
if (json) {
|
|
51
|
+
io.stdout(`${JSON.stringify({ workspace: basename(workspace.root), books }, null, 2)}\n`);
|
|
52
|
+
return 0;
|
|
53
|
+
}
|
|
54
|
+
const lines = [`workspace: ${basename(workspace.root)}`];
|
|
55
|
+
if (books.length === 0) {
|
|
56
|
+
lines.push(" (no books found)");
|
|
57
|
+
}
|
|
58
|
+
for (const book of books) {
|
|
59
|
+
lines.push("", `${book.name} (${book.dir})`);
|
|
60
|
+
lines.push(" compositions:");
|
|
61
|
+
if (book.compositions.length === 0) {
|
|
62
|
+
lines.push(" (none)");
|
|
63
|
+
}
|
|
64
|
+
for (const c of book.compositions) {
|
|
65
|
+
lines.push(` ${c.name} base=${c.base} rules=${c.rules} ctx: ${ctxSummary(c.requiredContext)}`);
|
|
66
|
+
}
|
|
67
|
+
if (book.codePrompts.length > 0) {
|
|
68
|
+
lines.push(" code-prompts:");
|
|
69
|
+
for (const c of book.codePrompts) {
|
|
70
|
+
lines.push(` ${c.name} kind=code samples=${c.samples}`);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
emitWarnings(io, book.warnings);
|
|
74
|
+
}
|
|
75
|
+
io.stdout(`${lines.join("\n")}\n`);
|
|
76
|
+
return 0;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* `ls`: list compositions (name, base length, rule count, required context),
|
|
80
|
+
* code-prompts (name, description, sample count) and fragments (id, kind, tags,
|
|
81
|
+
* source) — the unified menu of every prompt in the book. `--fragments`/
|
|
82
|
+
* `--compositions` narrow the output (code-prompts ride with compositions, both
|
|
83
|
+
* being prompts); `--json` emits a structured list; `--all` spans every book in
|
|
84
|
+
* the workspace instead of one folder.
|
|
11
85
|
*/
|
|
12
86
|
export async function cmdLs(args, io) {
|
|
13
87
|
const promptsDir = await requirePromptsDir(io, args.dir);
|
|
14
88
|
if (promptsDir === null) {
|
|
15
89
|
return 1;
|
|
16
90
|
}
|
|
91
|
+
if (args.all) {
|
|
92
|
+
return cmdLsAll(io, promptsDir, args.json);
|
|
93
|
+
}
|
|
17
94
|
const book = await loadPrompts(promptsDir, io.fs);
|
|
18
95
|
emitWarnings(io, book.warnings);
|
|
19
96
|
const onlyOneSection = args.fragments || args.compositions;
|
|
20
97
|
const showCompositions = args.compositions || !onlyOneSection;
|
|
21
98
|
const showFragments = args.fragments || !onlyOneSection;
|
|
22
|
-
const compositions =
|
|
23
|
-
const codePrompts =
|
|
99
|
+
const compositions = compositionEntries(book);
|
|
100
|
+
const codePrompts = codePromptEntries(book);
|
|
24
101
|
const fragments = [...book.fragments.values()].sort((a, b) => a.id.localeCompare(b.id));
|
|
25
102
|
if (args.json) {
|
|
26
103
|
const out = {};
|
|
27
104
|
if (showCompositions) {
|
|
28
|
-
out.compositions = compositions
|
|
29
|
-
|
|
30
|
-
base: c.base.length,
|
|
31
|
-
rules: c.rules.length,
|
|
32
|
-
}));
|
|
33
|
-
out.codePrompts = codePrompts.map((c) => ({
|
|
34
|
-
name: c.name,
|
|
35
|
-
description: c.description ?? null,
|
|
36
|
-
samples: c.samples.length,
|
|
37
|
-
}));
|
|
105
|
+
out.compositions = compositions;
|
|
106
|
+
out.codePrompts = codePrompts;
|
|
38
107
|
}
|
|
39
108
|
if (showFragments) {
|
|
40
109
|
out.fragments = fragments.map((f) => ({
|
|
@@ -54,13 +123,13 @@ export async function cmdLs(args, io) {
|
|
|
54
123
|
lines.push(" (none)");
|
|
55
124
|
}
|
|
56
125
|
for (const c of compositions) {
|
|
57
|
-
lines.push(` ${c.name} base=${c.base
|
|
126
|
+
lines.push(` ${c.name} base=${c.base} rules=${c.rules}`);
|
|
58
127
|
}
|
|
59
128
|
if (codePrompts.length > 0) {
|
|
60
129
|
lines.push("");
|
|
61
130
|
lines.push("code-prompts:");
|
|
62
131
|
for (const c of codePrompts) {
|
|
63
|
-
lines.push(` ${c.name} kind=code samples=${c.samples
|
|
132
|
+
lines.push(` ${c.name} kind=code samples=${c.samples}`);
|
|
64
133
|
}
|
|
65
134
|
}
|
|
66
135
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ls.js","sourceRoot":"","sources":["../../../src/commands/ls.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"ls.js","sourceRoot":"","sources":["../../../src/commands/ls.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
import type { ParsedArgs } from "../args.js";
|
|
2
2
|
import { type IO } from "../io.js";
|
|
3
3
|
/**
|
|
4
|
-
* `resolve <prompt>`: assemble the prompt and print its text to stdout.
|
|
5
|
-
*
|
|
6
|
-
*
|
|
4
|
+
* `resolve [<book>/]<prompt>`: assemble the prompt and print its text to stdout.
|
|
5
|
+
* A `<book>/` prefix addresses a specific book; a bare name resolves by
|
|
6
|
+
* uniqueness across the workspace (and works as before in a single-book root).
|
|
7
|
+
* `--json` prints `{ text, trace }`; `--explain` adds the trace to stderr;
|
|
8
|
+
* `--all` assembles every composition of every book. Warnings always go to
|
|
9
|
+
* stderr so nothing is lost.
|
|
7
10
|
*/
|
|
8
11
|
export declare function cmdResolve(args: ParsedArgs, io: IO): Promise<number>;
|
|
9
12
|
//# sourceMappingURL=resolve.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolve.d.ts","sourceRoot":"","sources":["../../../src/commands/resolve.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C,OAAO,EAA8B,KAAK,EAAE,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"resolve.d.ts","sourceRoot":"","sources":["../../../src/commands/resolve.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C,OAAO,EAA8B,KAAK,EAAE,EAAE,MAAM,UAAU,CAAC;AA2E/D;;;;;;;GAOG;AACH,wBAAsB,UAAU,CAAC,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAmD1E"}
|
|
@@ -1,26 +1,99 @@
|
|
|
1
|
-
import { resolve } from "@markbrutx/promptbook-core";
|
|
1
|
+
import { loadPrompts, resolve, resolveBook } from "@markbrutx/promptbook-core";
|
|
2
2
|
import { buildContext, requirePromptsDir } from "../config.js";
|
|
3
3
|
import { colorEnabled, emitWarnings } from "../io.js";
|
|
4
4
|
import { renderExplain } from "../render-explain.js";
|
|
5
|
+
import { loadWorkspace, resolveAddress } from "../workspace.js";
|
|
5
6
|
/**
|
|
6
|
-
* `resolve
|
|
7
|
-
*
|
|
8
|
-
*
|
|
7
|
+
* `resolve --all`: assemble every composition of every book in the workspace.
|
|
8
|
+
* Missing variables become stderr warnings, never throws, so the run always
|
|
9
|
+
* completes. `--json` emits a `{ "book/comp": value }` map (compositions carry
|
|
10
|
+
* `text`+`trace`; code-prompts ride along as inventory `{kind, samples}` so
|
|
11
|
+
* builders are not silently dropped); plain prints each composition under a
|
|
12
|
+
* `=== book/comp ===` header and notes the skipped code-prompts. Order is by
|
|
13
|
+
* book then by node name.
|
|
9
14
|
*/
|
|
10
|
-
|
|
11
|
-
const
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
+
async function cmdResolveAll(io, root, context, json) {
|
|
16
|
+
const workspace = await loadWorkspace(io, root);
|
|
17
|
+
const blocks = [];
|
|
18
|
+
const skipped = [];
|
|
19
|
+
const map = {};
|
|
20
|
+
// Load every book up front (concurrently); iterate the sorted result for
|
|
21
|
+
// deterministic output, matching `ls --all`.
|
|
22
|
+
const loadedBooks = await Promise.all(workspace.books.map(async (book) => ({ book, loaded: await loadPrompts(book.dir, io.fs) })));
|
|
23
|
+
for (const { book, loaded } of loadedBooks) {
|
|
24
|
+
emitWarnings(io, loaded.warnings.map((w) => `${book.name}: ${w}`));
|
|
25
|
+
const nodes = [
|
|
26
|
+
...[...loaded.compositions.keys()].map((name) => ({ name, kind: "composition" })),
|
|
27
|
+
...[...loaded.codePrompts.keys()].map((name) => ({ name, kind: "code-prompt" })),
|
|
28
|
+
].sort((a, b) => a.name.localeCompare(b.name));
|
|
29
|
+
for (const node of nodes) {
|
|
30
|
+
const key = `${book.name}/${node.name}`;
|
|
31
|
+
if (node.kind === "code-prompt") {
|
|
32
|
+
const codePrompt = loaded.codePrompts.get(node.name);
|
|
33
|
+
skipped.push(key);
|
|
34
|
+
if (json) {
|
|
35
|
+
map[key] = { kind: "code-prompt", samples: codePrompt?.samples ?? [] };
|
|
36
|
+
}
|
|
37
|
+
continue;
|
|
38
|
+
}
|
|
39
|
+
const { text, trace } = resolveBook(loaded, node.name, context);
|
|
40
|
+
emitWarnings(io, trace.warnings.map((w) => `${key}: ${w}`));
|
|
41
|
+
if (json) {
|
|
42
|
+
map[key] = { kind: "composition", text, trace };
|
|
43
|
+
}
|
|
44
|
+
else {
|
|
45
|
+
blocks.push(`=== ${key} ===\n${text}`);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
if (json) {
|
|
50
|
+
io.stdout(`${JSON.stringify(map, null, 2)}\n`);
|
|
51
|
+
return 0;
|
|
52
|
+
}
|
|
53
|
+
io.stdout(`${blocks.join("\n\n")}\n`);
|
|
54
|
+
if (skipped.length > 0) {
|
|
55
|
+
io.stderr(`note: skipped ${skipped.length} code-prompt(s) (not resolvable): ${skipped.join(", ")}\n`);
|
|
15
56
|
}
|
|
57
|
+
return 0;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* `resolve [<book>/]<prompt>`: assemble the prompt and print its text to stdout.
|
|
61
|
+
* A `<book>/` prefix addresses a specific book; a bare name resolves by
|
|
62
|
+
* uniqueness across the workspace (and works as before in a single-book root).
|
|
63
|
+
* `--json` prints `{ text, trace }`; `--explain` adds the trace to stderr;
|
|
64
|
+
* `--all` assembles every composition of every book. Warnings always go to
|
|
65
|
+
* stderr so nothing is lost.
|
|
66
|
+
*/
|
|
67
|
+
export async function cmdResolve(args, io) {
|
|
16
68
|
const promptsDir = await requirePromptsDir(io, args.dir);
|
|
17
69
|
if (promptsDir === null) {
|
|
18
70
|
return 1;
|
|
19
71
|
}
|
|
72
|
+
let context;
|
|
73
|
+
try {
|
|
74
|
+
context = await buildContext(io, args.ctx, args.contextFile);
|
|
75
|
+
}
|
|
76
|
+
catch (error) {
|
|
77
|
+
io.stderr(`error: ${error.message}\n`);
|
|
78
|
+
return 1;
|
|
79
|
+
}
|
|
80
|
+
if (args.all) {
|
|
81
|
+
return cmdResolveAll(io, promptsDir, context, args.json);
|
|
82
|
+
}
|
|
83
|
+
const operand = args.operands[0];
|
|
84
|
+
if (operand === undefined) {
|
|
85
|
+
io.stderr('error: resolve requires a <prompt> name (or --all). Run "promptbook --help".\n');
|
|
86
|
+
return 1;
|
|
87
|
+
}
|
|
20
88
|
let result;
|
|
21
89
|
try {
|
|
22
|
-
const
|
|
23
|
-
|
|
90
|
+
const workspace = await loadWorkspace(io, promptsDir);
|
|
91
|
+
const { book, comp, loaded } = await resolveAddress(io, workspace, operand);
|
|
92
|
+
// Bare-name resolution already loaded the matched book — reuse it; otherwise load now.
|
|
93
|
+
result =
|
|
94
|
+
loaded !== undefined
|
|
95
|
+
? resolveBook(loaded, comp, context)
|
|
96
|
+
: await resolve({ promptsDir: book.dir, prompt: comp, context, fs: io.fs });
|
|
24
97
|
}
|
|
25
98
|
catch (error) {
|
|
26
99
|
io.stderr(`error: ${error.message}\n`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolve.js","sourceRoot":"","sources":["../../../src/commands/resolve.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"resolve.js","sourceRoot":"","sources":["../../../src/commands/resolve.ts"],"names":[],"mappings":"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"}
|
package/dist/src/config.d.ts
CHANGED
|
@@ -18,20 +18,32 @@ interface PromptbookConfig {
|
|
|
18
18
|
lint?: unknown;
|
|
19
19
|
eval?: unknown;
|
|
20
20
|
}
|
|
21
|
+
/** A loaded `promptbook.json`: parsed data plus the directory that held it. */
|
|
22
|
+
export interface LoadedConfig {
|
|
23
|
+
/** Parsed JSON object (or `{}` when no file was found or parsing failed). */
|
|
24
|
+
data: PromptbookConfig;
|
|
25
|
+
/** Absolute directory where the config was found; `undefined` if nothing matched up the tree. */
|
|
26
|
+
dir?: string;
|
|
27
|
+
}
|
|
21
28
|
/** lint options sourced from the `lint` section of `promptbook.json`. */
|
|
22
29
|
export interface LintConfig {
|
|
23
30
|
maxTokens?: number;
|
|
24
31
|
bannedTokens?: string[];
|
|
25
32
|
}
|
|
26
33
|
/**
|
|
27
|
-
*
|
|
28
|
-
*
|
|
29
|
-
*
|
|
30
|
-
*
|
|
34
|
+
* Walk up from `io.cwd()` to find the first `promptbook.json`, parse it, and
|
|
35
|
+
* return its data + the directory it lived in. Walking up (rather than only
|
|
36
|
+
* checking cwd) is what makes `promptbook` work like `git`/`biome`/`eslint`:
|
|
37
|
+
* one config at the repo root reaches every subfolder. Path-valued keys
|
|
38
|
+
* (currently just `promptsDir`) are resolved relative to {@link LoadedConfig.dir}
|
|
39
|
+
* by {@link resolvePromptsDir}, not relative to wherever the shell happens to
|
|
40
|
+
* be — so `pnpm exec` snapping cwd to a workspace package cannot break the
|
|
41
|
+
* lookup. Missing, unreadable or malformed files yield an empty config
|
|
42
|
+
* (best-effort), so callers can layer flags on top.
|
|
31
43
|
*/
|
|
32
|
-
export declare function loadConfig(io: IO): Promise<
|
|
44
|
+
export declare function loadConfig(io: IO): Promise<LoadedConfig>;
|
|
33
45
|
/** Extract the `lint` section from an already-loaded config. */
|
|
34
|
-
export declare function lintConfigFrom(
|
|
46
|
+
export declare function lintConfigFrom(loaded: LoadedConfig): LintConfig;
|
|
35
47
|
/** Convenience wrapper: load config and extract its `lint` section. */
|
|
36
48
|
export declare function loadLintConfig(io: IO): Promise<LintConfig>;
|
|
37
49
|
/** eval options sourced from the `eval` section of `promptbook.json`. */
|
|
@@ -40,17 +52,22 @@ export interface EvalConfig {
|
|
|
40
52
|
baseUrl?: string;
|
|
41
53
|
}
|
|
42
54
|
/** Extract the `eval` section from an already-loaded config. */
|
|
43
|
-
export declare function evalConfigFrom(
|
|
55
|
+
export declare function evalConfigFrom(loaded: LoadedConfig): EvalConfig;
|
|
44
56
|
/**
|
|
45
|
-
* Resolve the prompts folder by priority:
|
|
46
|
-
*
|
|
47
|
-
*
|
|
57
|
+
* Resolve the prompts folder by priority:
|
|
58
|
+
* 1. `--dir <path>` — relative to **cwd** (explicit per-invocation override).
|
|
59
|
+
* 2. `promptbook.json` `promptsDir` — relative to **the config file's directory**
|
|
60
|
+
* (so the value can stay stable while the user shells around in subfolders).
|
|
61
|
+
* 3. `./prompts` — relative to cwd (back-compat default when no config exists).
|
|
62
|
+
*
|
|
63
|
+
* All results are absolute. Pass a preloaded {@link LoadedConfig} to reuse a
|
|
64
|
+
* single read; otherwise it is loaded here.
|
|
48
65
|
*/
|
|
49
|
-
export declare function resolvePromptsDir(io: IO, dirFlag?: string,
|
|
66
|
+
export declare function resolvePromptsDir(io: IO, dirFlag?: string, loaded?: LoadedConfig): Promise<string>;
|
|
50
67
|
/**
|
|
51
68
|
* Resolve the prompts folder and confirm it exists. On a missing folder, write
|
|
52
69
|
* a clear error to stderr and return null so the caller can exit non-zero.
|
|
53
70
|
*/
|
|
54
|
-
export declare function requirePromptsDir(io: IO, dirFlag?: string,
|
|
71
|
+
export declare function requirePromptsDir(io: IO, dirFlag?: string, loaded?: LoadedConfig): Promise<string | null>;
|
|
55
72
|
export {};
|
|
56
73
|
//# sourceMappingURL=config.d.ts.map
|
package/dist/src/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AACxE,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;AASlC;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,YAAY,CAWtD;AAED,gFAAgF;AAChF,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CActD;AAuBD;;;GAGG;AACH,wBAAsB,YAAY,CAAC,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAalG;AAED,UAAU,gBAAgB;IACxB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,yEAAyE;AACzE,MAAM,WAAW,UAAU;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;CACzB;AAED
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AACxE,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;AASlC;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,YAAY,CAWtD;AAED,gFAAgF;AAChF,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CActD;AAuBD;;;GAGG;AACH,wBAAsB,YAAY,CAAC,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAalG;AAED,UAAU,gBAAgB;IACxB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,+EAA+E;AAC/E,MAAM,WAAW,YAAY;IAC3B,6EAA6E;IAC7E,IAAI,EAAE,gBAAgB,CAAC;IACvB,iGAAiG;IACjG,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,yEAAyE;AACzE,MAAM,WAAW,UAAU;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;CACzB;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,UAAU,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,YAAY,CAAC,CAwB9D;AAED,gEAAgE;AAChE,wBAAgB,cAAc,CAAC,MAAM,EAAE,YAAY,GAAG,UAAU,CAa/D;AAED,uEAAuE;AACvE,wBAAsB,cAAc,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,UAAU,CAAC,CAEhE;AAED,yEAAyE;AACzE,MAAM,WAAW,UAAU;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,gEAAgE;AAChE,wBAAgB,cAAc,CAAC,MAAM,EAAE,YAAY,GAAG,UAAU,CAa/D;AAED;;;;;;;;;GASG;AACH,wBAAsB,iBAAiB,CAAC,EAAE,EAAE,EAAE,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,CASxG;AAYD;;;GAGG;AACH,wBAAsB,iBAAiB,CACrC,EAAE,EAAE,EAAE,EACN,OAAO,CAAC,EAAE,MAAM,EAChB,MAAM,CAAC,EAAE,YAAY,GACpB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAOxB"}
|