@loomwork/ui-renderer-terminal 0.0.0-stage → 0.1.1

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 (46) hide show
  1. package/LICENSE +202 -0
  2. package/NOTICE +8 -0
  3. package/README.md +369 -2
  4. package/dist/esm/index.js +6 -0
  5. package/dist/esm/index.js.map +1 -0
  6. package/dist/esm/inert.js +13 -0
  7. package/dist/esm/inert.js.map +1 -0
  8. package/dist/esm/interactive.js +677 -0
  9. package/dist/esm/interactive.js.map +1 -0
  10. package/dist/esm/registry.js +428 -0
  11. package/dist/esm/registry.js.map +1 -0
  12. package/dist/esm/status.js +64 -0
  13. package/dist/esm/status.js.map +1 -0
  14. package/dist/esm/watch.js +17 -0
  15. package/dist/esm/watch.js.map +1 -0
  16. package/dist/index.d.ts +9 -0
  17. package/dist/index.d.ts.map +1 -0
  18. package/dist/index.js +22 -0
  19. package/dist/index.js.map +1 -0
  20. package/dist/inert.d.ts +12 -0
  21. package/dist/inert.d.ts.map +1 -0
  22. package/dist/inert.js +17 -0
  23. package/dist/inert.js.map +1 -0
  24. package/dist/interactive.d.ts +142 -0
  25. package/dist/interactive.d.ts.map +1 -0
  26. package/dist/interactive.js +685 -0
  27. package/dist/interactive.js.map +1 -0
  28. package/dist/registry.d.ts +55 -0
  29. package/dist/registry.d.ts.map +1 -0
  30. package/dist/registry.js +434 -0
  31. package/dist/registry.js.map +1 -0
  32. package/dist/status.d.ts +49 -0
  33. package/dist/status.d.ts.map +1 -0
  34. package/dist/status.js +69 -0
  35. package/dist/status.js.map +1 -0
  36. package/dist/watch.d.ts +9 -0
  37. package/dist/watch.d.ts.map +1 -0
  38. package/dist/watch.js +20 -0
  39. package/dist/watch.js.map +1 -0
  40. package/package.json +60 -3
  41. package/src/index.ts +25 -0
  42. package/src/inert.ts +14 -0
  43. package/src/interactive.ts +868 -0
  44. package/src/registry.ts +630 -0
  45. package/src/status.ts +103 -0
  46. package/src/watch.ts +22 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interactive.js","sourceRoot":"","sources":["../../src/interactive.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,428 @@
1
+ import { createHash } from "node:crypto";
2
+ import { RendererRegistry } from "@loomwork/blueprint-runtime";
3
+ import { defaultTerminalRegistry, } from "@loomwork/plugin-renderer-terminal";
4
+ import { DELTA_FORMAT, LocalizedText, MD_MAX_LINES, chatMarkdownLines, chatTranscriptLines, checkKindValue, checkMediaUrl, cleanMediaText, createSay, deltaDirection, describeMedia, diagramOutline, effectiveFormat, fieldsProblem, formatSemanticNumber, isActiveMediaType, isSameOriginMediaUrl, lookupMessage, maxBytesFor, oneLineChatText, optionsProblem, pluralForms, selectPlural, tableCellText, tableColumnFormat, tableColumnLabel, unitSuffix, widgetRefsOf, } from "@loomwork/ui-core";
5
+ import { multiSelectValueIssues } from "@loomwork/ui-core/chat-ui";
6
+ import { MD_DOC_MAX_TEXT, parseMarkdownDocument, parseOrgDocument, } from "@loomwork/ui-core/document";
7
+ import { inert } from "./inert";
8
+ const LEVEL_KEY = {
9
+ ok: "lu.level.ok",
10
+ warning: "lu.level.warning",
11
+ critical: "lu.level.critical",
12
+ };
13
+ const SPARK = "▁▂▃▄▅▆▇█";
14
+ /** A non-empty string is a title; `""` (or a stray non-string) is none, so the kind stands in. */
15
+ const titleText = (w) => typeof w.title === "string" && w.title !== "" ? w.title : undefined;
16
+ const title = (w) => titleText(w) ?? w.kind;
17
+ const pad = (s, n) => (s.length >= n ? s.slice(0, n) : s.padEnd(n));
18
+ /**
19
+ * The terminal's default locale for every number and plural: one fixed, deterministic tag, so the
20
+ * same value prints the same bytes on every machine (logs, snapshots, CI) instead of varying with the
21
+ * host's own locale. A host that wants another passes `i18n: { locale }`.
22
+ */
23
+ export const DEFAULT_TERMINAL_LOCALE = "en-US";
24
+ function envOf(i18n) {
25
+ const locale = i18n?.locale ?? DEFAULT_TERMINAL_LOCALE;
26
+ return {
27
+ locale,
28
+ say: createSay(i18n),
29
+ plural: (base, n) => selectPlural(locale, base, n, pluralForms(base), (k, f) => lookupMessage(i18n, k, f)),
30
+ };
31
+ }
32
+ /**
33
+ * A number exactly as the web's `measure()` would print it for the same value, format and unit —
34
+ * full numeric parity, not merely the same shape: an explicit `format` (or, absent one, a legacy
35
+ * `unit` read as semantics via `effectiveFormat`, the same "$"/"€"/"%"/ISO-4217 lookup the DOM
36
+ * renderer uses) goes through `@loomwork/ui-core`'s `formatSemanticNumber`, so a `currency` prints
37
+ * the web's own symbol ("€1,234,567.89"), never an ISO-code suffix, and a plain number groups and
38
+ * rounds exactly as `Intl.NumberFormat` does for the DOM renderer. The raw `unit` shows as a
39
+ * literal suffix unless the format draws its own symbol (currency, percentage) — core's
40
+ * `unitSuffix`, the same rule by which the DOM renderer shows it as a separate span. (renderer-lit is an ESM/lit-DOM package this CommonJS one
41
+ * cannot import, so this DOM-free part of its formatting logic lives in core instead of being
42
+ * re-derived here.)
43
+ */
44
+ function formatted(x, v, format, unit) {
45
+ const fmt = effectiveFormat(format, unit);
46
+ const text = formatSemanticNumber(v, fmt, x.locale);
47
+ const suffix = unitSuffix(fmt, unit);
48
+ return suffix === undefined ? text : `${text} ${suffix}`;
49
+ }
50
+ /**
51
+ * Min and max of the finite values, in one pass — never `Math.min(...values)` /
52
+ * `Math.max(...values)`, which spreads the whole array into call arguments and hits V8's
53
+ * argument-count ceiling on a long series. `undefined` iff no value is finite.
54
+ */
55
+ function finiteMinMax(values) {
56
+ let min = Number.POSITIVE_INFINITY;
57
+ let max = Number.NEGATIVE_INFINITY;
58
+ let seen = false;
59
+ for (const v of values) {
60
+ if (!Number.isFinite(v))
61
+ continue;
62
+ seen = true;
63
+ if (v < min)
64
+ min = v;
65
+ if (v > max)
66
+ max = v;
67
+ }
68
+ return seen ? { min, max } : undefined;
69
+ }
70
+ export function sparkline(values) {
71
+ const range = finiteMinMax(values);
72
+ if (range === undefined)
73
+ return "";
74
+ const { min, max } = range;
75
+ return values
76
+ .map((v) => Number.isFinite(v)
77
+ ? SPARK[max === min ? 0 : Math.round(((v - min) / (max - min)) * (SPARK.length - 1))]
78
+ : " ")
79
+ .join("");
80
+ }
81
+ const lead = (host) => (w, rest) => host ? rest : `${title(w)}: ${rest}`;
82
+ /**
83
+ * The hanging indent that sets a multi-line body's rows under its `Title:` lead. Host chrome has no
84
+ * lead to hang under, so it gets none (G18) — one helper, so every multi-line kind agrees.
85
+ */
86
+ const HANG = " ";
87
+ const hang = (host) => (host ? "" : HANG);
88
+ const guarded = (host, kind, body) => (w, v) => {
89
+ const l = lead(host);
90
+ const check = checkKindValue(kind, v);
91
+ if (!check.ok)
92
+ return `✗ ${l(w, check.finding.message)}`;
93
+ if (v === undefined)
94
+ return l(w, "—");
95
+ const out = body(w, v, l, host);
96
+ const notes = refFootnotes(kind, v, host);
97
+ return notes === "" ? out : `${out}\n${notes}`;
98
+ };
99
+ /**
100
+ * `[1] label` per source the value cites, one line each under the widget (`[1]` alone without a label). The label is
101
+ * data, so it is cut to one clean line like any untrusted text; the numbering is the web's (array order from 1).
102
+ */
103
+ function refFootnotes(kind, v, host) {
104
+ return widgetRefsOf(kind, v)
105
+ .map((r, i) => {
106
+ const label = r.label === undefined ? "" : oneLineChatText(r.label, 80);
107
+ return `${hang(host)}[${i + 1}]${label === "" ? "" : ` ${label}`}`;
108
+ })
109
+ .join("\n");
110
+ }
111
+ // The right-axis marker is semantic information (which axis a series reads against), so it must
112
+ // never be lost to the label column's fixed width. `pad(`${label}${marker}`, width)` — padding
113
+ // the already-concatenated string — truncates whichever part lands past the width, so a label
114
+ // alone at or beyond `width` swallows the marker whole. Truncate the LABEL alone to leave room
115
+ // for the marker, then append the marker after, so it always survives; a short label+marker
116
+ // still pads to `width` exactly as before, so every row's sparkline column stays aligned.
117
+ const RIGHT_AXIS_MARKER = " (R)";
118
+ function padLabelWithMarker(label, marker, width) {
119
+ const combined = `${label}${marker}`;
120
+ if (combined.length <= width)
121
+ return combined.padEnd(width);
122
+ if (marker === "")
123
+ return combined.slice(0, width);
124
+ const truncatedLabel = label.slice(0, Math.max(width - marker.length, 0));
125
+ return `${truncatedLabel}${marker}`;
126
+ }
127
+ const timeSeries = (host, x) => guarded(host, "TimeSeries", (w, v, l) => {
128
+ const { series } = v;
129
+ const props = w.props;
130
+ // Same rule as the web's lu-timeseries: a right axis exists only when some series is on the
131
+ // left to contrast it with; all-right falls back to one shared axis, so nothing is marked.
132
+ const splitAxes = series.some((s) => s.axis !== "right") && series.some((s) => s.axis === "right");
133
+ const lines = series.map((s) => {
134
+ const values = s.points.map((p) => p.value);
135
+ const last = values.length > 0 ? values[values.length - 1] : Number.NaN;
136
+ // Same precedence as the web's `formatOf` (lu-timeseries.ts): this series' own format, else
137
+ // the widget's; a unit resolves only when neither format does.
138
+ const text = formatted(x, last, s.format ?? props.format, s.unit ?? props.unit);
139
+ const marker = splitAxes && s.axis === "right" ? RIGHT_AXIS_MARKER : "";
140
+ return `${hang(host)}${padLabelWithMarker(s.label, marker, 12)} ${sparkline(values)} ${text}`;
141
+ });
142
+ return (host ? lines : [`${title(w)}:`, ...lines]).join("\n");
143
+ });
144
+ const barChart = (host, x) => guarded(host, "BarChart", (w, v, l) => {
145
+ const { bars, format, unit } = v;
146
+ const props = w.props;
147
+ // Same precedence as the web's lu-bar-chart.ts: the chart's own value-level format, else the
148
+ // widget's props.format; a unit resolves only when neither format does. One format for every
149
+ // bar, exactly as the web computes it once and reuses it for every bar's `measure()` call.
150
+ const chartFormat = format ?? props.format;
151
+ const chartUnit = unit ?? props.unit;
152
+ // Single-pass max (never Math.max(...spread) — same argument-count hazard as sparkline's
153
+ // min/max), floored at 1 so an all-non-finite/zero series never divides by zero below.
154
+ let max = 1;
155
+ for (const b of bars) {
156
+ const abs = Math.abs(b.value);
157
+ if (Number.isFinite(abs) && abs > max)
158
+ max = abs;
159
+ }
160
+ const lines = bars.map((b) => {
161
+ const filled = Number.isFinite(b.value) ? Math.round((Math.abs(b.value) / max) * 20) : 0;
162
+ const text = formatted(x, b.value, chartFormat, chartUnit);
163
+ return `${hang(host)}${pad(b.label, 12)} ${"█".repeat(filled)}${"·".repeat(20 - filled)} ${text}`;
164
+ });
165
+ return (host ? lines : [`${title(w)}:`, ...lines]).join("\n");
166
+ });
167
+ const kpi = (host, x) => guarded(host, "Kpi", (w, v, l) => {
168
+ const k = v;
169
+ const props = w.props;
170
+ const delta = k.deltaPct ?? null;
171
+ const direction = delta === null ? undefined : deltaDirection(delta);
172
+ const arrow = direction === "up" ? "▲ " : direction === "down" ? "▼ " : "";
173
+ const change = delta === null
174
+ ? ""
175
+ : ` ${arrow}${formatSemanticNumber(Math.abs(delta), DELTA_FORMAT, x.locale)}`;
176
+ // The label is a caption beside the title, as on the web — the title stays.
177
+ const text = `${formatted(x, k.value, k.format ?? props.format, k.unit ?? props.unit)}${change}`;
178
+ // Host-owned title: the caption (still information) trails the figure instead.
179
+ if (host)
180
+ return k.label ? `${text} (${k.label})` : text;
181
+ return `${k.label ? `${title(w)} (${k.label})` : title(w)}: ${text}`;
182
+ });
183
+ /** Rows printed before the "… N more rows" line. */
184
+ const TABLE_ROWS = 20;
185
+ /** Widest a terminal column grows before its cells are cut. */
186
+ const TABLE_COL_MAX = 24;
187
+ const table = (host, x) => guarded(host, "Table", (w, v, l) => {
188
+ const t = v;
189
+ // Widths are computed over the text that will be PRINTED: loom's traversal strips controls
190
+ // from the whole frame afterwards, which would otherwise misalign a hostile cell.
191
+ const labels = t.columns.map((c) => inert(tableColumnLabel(c)));
192
+ const formats = t.columns.map(tableColumnFormat);
193
+ const cellText = (c) => c === null
194
+ ? "—"
195
+ : typeof c === "number"
196
+ ? formatted(x, c, undefined, undefined)
197
+ : inert(tableCellText(c));
198
+ const body = t.rows.slice(0, TABLE_ROWS).map((row) => labels.map((_, i) => {
199
+ const c = row[i] ?? null;
200
+ const f = formats[i];
201
+ return typeof c === "number" && f !== undefined
202
+ ? formatted(x, c, f, undefined)
203
+ : cellText(c);
204
+ }));
205
+ // Single pass per column (never Math.max(...spread)); capped so one long cell cannot push
206
+ // every other column off the screen.
207
+ const widths = labels.map((label, i) => {
208
+ let width = label.length;
209
+ for (const row of body)
210
+ width = Math.max(width, (row[i] ?? "").length);
211
+ return Math.min(width, TABLE_COL_MAX);
212
+ });
213
+ const line = (cells) => `${hang(host)}${cells.map((c, i) => pad(c, widths[i] ?? 0)).join(" ")}`.trimEnd();
214
+ const out = [...(host ? [] : [`${title(w)}:`]), line(labels), ...body.map(line)];
215
+ if (t.rows.length > TABLE_ROWS) {
216
+ const more = t.rows.length - TABLE_ROWS;
217
+ // The terminal's locale (see DEFAULT_TERMINAL_LOCALE) decides the plural, like its numbers.
218
+ out.push(`${hang(host)}${x.say("lu.terminal.table.moreRows", { n: more, noun: x.plural("lu.plural.row", more) })}`);
219
+ }
220
+ return out.join("\n");
221
+ });
222
+ const statusCard = (host, x) => guarded(host, "StatusCard", (w, v, l) => {
223
+ const s = v;
224
+ return l(w, `[${x.say(LEVEL_KEY[s.level])}] ${s.headline}${s.detail ? ` — ${s.detail}` : ""}`);
225
+ });
226
+ // A document laid out as text: markdown and org through core's document parsers and `chatMarkdownLines` (which
227
+ // cleans every line and caps the total), plain text as its first lines. Hung under the title like Chat.
228
+ const prose = (host, x) => guarded(host, "Prose", (w, v) => {
229
+ const p = v;
230
+ // Plain text over the document cap is cut (before it is split) and says so.
231
+ const over = p.format === "plain" && p.text.length > MD_DOC_MAX_TEXT;
232
+ const body = p.text === ""
233
+ ? [x.say("lu.prose.empty")]
234
+ : p.format === "plain"
235
+ ? (over ? p.text.slice(0, MD_DOC_MAX_TEXT) : p.text)
236
+ .split("\n")
237
+ .slice(0, MD_MAX_LINES)
238
+ .map((l) => oneLineChatText(l, 200))
239
+ : chatMarkdownLines(p.format === "org" ? parseOrgDocument(p.text) : parseMarkdownDocument(p.text));
240
+ const out = [
241
+ ...(p.note ? [oneLineChatText(p.note)] : []),
242
+ ...body,
243
+ ...(p.truncated || over ? [x.say("lu.prose.cut")] : []),
244
+ ];
245
+ const indent = hang(host);
246
+ return [...(host ? [] : [`${title(w)}:`]), ...out.map((l) => `${indent}${l}`)].join("\n");
247
+ });
248
+ // A diagram as text: core's shared outline (the same lines the web's hidden outline holds), one per
249
+ // line, hung under the title. Every label is untrusted data: cut to one clean line BEFORE the outline
250
+ // joins them, so no control or bidi character, and no newline, reaches the frame.
251
+ const diagram = (host, x) => guarded(host, "Diagram", (w, v) => {
252
+ const d = v;
253
+ const clean = (t) => oneLineChatText(t, 200);
254
+ const checked = {
255
+ ...d,
256
+ nodes: d.nodes.map((n) => ({
257
+ ...n,
258
+ label: clean(n.label),
259
+ ...(n.at === undefined ? {} : { at: n.at }),
260
+ })),
261
+ edges: d.edges.map((e) => ({
262
+ ...e,
263
+ ...(e.label === undefined ? {} : { label: clean(e.label) }),
264
+ })),
265
+ };
266
+ const indent = hang(host);
267
+ const body = diagramOutline(checked, x.locale, x.say).map((l) => `${indent}${" ".repeat(l.depth)}${l.text}`);
268
+ return [
269
+ ...(host ? [] : [`${title(w)}:`]),
270
+ ...(d.title ? [`${indent}${clean(d.title)}`] : []),
271
+ ...body,
272
+ ].join("\n");
273
+ });
274
+ // Never bound, so never `guarded`: loom calls a channel-less widget's renderer directly, with
275
+ // `value === undefined`, and the text lives in props (a string after compile; an uncompiled
276
+ // LocalizedText shows its fallback, never its key).
277
+ const note = (host, x) => (w) => {
278
+ const raw = w.props.text;
279
+ const parsed = LocalizedText.safeParse(raw);
280
+ const text = typeof raw === "string" ? raw : parsed.success ? parsed.data.fallback : "";
281
+ // Only a non-empty string is a title — `""` and a stray `0` are none, as for every kind.
282
+ const t = titleText(w);
283
+ return t !== undefined && !host ? `${t}: ${text}` : text;
284
+ };
285
+ // The A2UI tree and the sandboxed component are web surfaces: an interpreter this CommonJS
286
+ // package cannot import, and code that cannot run in a terminal. Say so, don't fake it.
287
+ const a2uiView = (host, x) => guarded(host, "A2UIView", (w, _v, l) => l(w, x.say("lu.terminal.a2ui")));
288
+ const sandboxView = (host, x) => guarded(host, "SandboxView", (w, _v, l) => l(w, x.say("lu.terminal.sandbox")));
289
+ // ── Media (U9) ─────────────────────────────────────────────────────────────────
290
+ // `Image 'chart.png' (image/png, 1 KiB) [untrusted] ref#1a2b3c4d` — the SAME one-line
291
+ // description the web surface speaks (`describeMedia`), a trust marker, and a link or a non-reversible tag.
292
+ const mediaLine = (host, x, kind, media) => guarded(host, kind, (w, v, l) => {
293
+ const ref = v;
294
+ const policy = media?.policy;
295
+ const tooLarge = ref.size !== undefined && ref.size > maxBytesFor(kind, policy);
296
+ const trusted = ref.origin !== "user" && media?.trusted?.(ref, kind) === true;
297
+ // Untrusted active content (HTML, SVG, XML, script types) is never offered: no link, no handle.
298
+ const active = !trusted && isActiveMediaType(ref.mediaType);
299
+ const sameOrigin = (u) => !trusted && isSameOriginMediaUrl(u, policy?.appOrigin);
300
+ const link = tooLarge || active ? undefined : media?.link?.(ref, kind);
301
+ const checked = checkMediaUrl(link, policy);
302
+ const offered = checked.ok && !(sameOrigin(checked.url) && policy?.allowSameOriginUntrusted !== true)
303
+ ? checked.url
304
+ : undefined;
305
+ // A NON-REVERSIBLE tag, never any part of the address (a prefix of a capability is a partial
306
+ // capability, and terminal output is copied and logged). A usable link is the host's `media.link`.
307
+ const tag = `ref#${createHash("sha256").update(ref.address).digest("hex").slice(0, 8)}`;
308
+ const where = tooLarge
309
+ ? x.say("lu.terminal.media.tooLarge")
310
+ : active
311
+ ? x.say("lu.terminal.media.blocked")
312
+ : (offered ?? tag);
313
+ const alt = kind === "Image" ? cleanMediaText(ref.alt, 200) : "";
314
+ return l(w, `${describeMedia(kind, ref, x.say)}${alt === "" ? "" : ` — ${alt}`}${trusted ? "" : ` ${x.say("lu.terminal.untrusted")}`} ${where}`);
315
+ });
316
+ // A media input is a web control (a file picker): say so, don't fake it. Static, so never `guarded`.
317
+ const mediaInput = (host, x) => (w) => {
318
+ const t = titleText(w);
319
+ const body = x.say("lu.terminal.fileUpload");
320
+ return t !== undefined && !host ? `${t}: ${body}` : body;
321
+ };
322
+ // ── Chat and inputs (U8) ───────────────────────────────────────────────────────
323
+ // The transcript prints as the SAME lines the web surface speaks (`chatTranscriptLines`: speaker,
324
+ // status note, fixed failure sentence + reference id, restricted entries as bare placeholders, media
325
+ // described without an address), under the title. Untrusted text is cleaned and bounded: a plain part is one
326
+ // line of at most `maxText` characters, a markdown part is up to 200 plain lines of at most 4 x `maxText`
327
+ // characters in all (`chatMarkdownLines`). A terminal escape (ESC), a C1 control or a bidi override in a turn
328
+ // cannot reach the screen.
329
+ const chatTranscript = (host, x) => guarded(host, "Chat", (w, v) => {
330
+ const chat = v;
331
+ const lines = chatTranscriptLines(chat, { say: x.say });
332
+ const out = [];
333
+ if (chat.older !== undefined)
334
+ out.push(x.say("lu.terminal.chat.earlier"));
335
+ out.push(...(lines.length === 0 ? [x.say("lu.terminal.chat.empty")] : lines));
336
+ if (chat.running === true && !chat.entries.some((e) => e.status === "streaming"))
337
+ out.push(x.say("lu.terminal.chat.replying"));
338
+ if (chat.state === "closed")
339
+ out.push(x.say("lu.terminal.chat.closed"));
340
+ const indent = hang(host);
341
+ return [...(host ? [] : [`${title(w)}:`]), ...out.map((l) => `${indent}${l}`)].join("\n");
342
+ });
343
+ /** A prop that is text: a string, or an uncompiled LocalizedText's fallback; cleaned to one line. */
344
+ const propText = (raw) => {
345
+ const parsed = LocalizedText.safeParse(raw);
346
+ const text = typeof raw === "string" ? raw : parsed.success ? parsed.data.fallback : "";
347
+ return oneLineChatText(text, 120);
348
+ };
349
+ // An input is a prompt in a terminal: say what it asks, so an interactive host can collect the answer
350
+ // (and send it through the same write-back as the web). Static, so never `guarded`.
351
+ const textPrompt = (host, x) => (w) => {
352
+ const label = propText(w.props.label) || x.say("lu.input.message");
353
+ const multi = w.props.multiline === true ? x.say("lu.terminal.multiline") : "";
354
+ const body = `> ${label}${multi} ${x.say("lu.terminal.textInput")}`;
355
+ return host ? body : `${title(w)}: ${body}`;
356
+ };
357
+ const formPrompt = (host, x) => (w) => {
358
+ const label = propText(w.props.label) || x.say("lu.input.form");
359
+ const fields = fieldsProblem(w.props.fields) === undefined
360
+ ? w.props.fields
361
+ : [];
362
+ const rows = fields.map((f) => `${hang(host)} ${oneLineChatText(f.label, 60)}${f.required === true ? "*" : ""} (${f.type})`);
363
+ const head = `> ${label} ${x.say("lu.terminal.formInput")}`;
364
+ return [host ? head : `${title(w)}: ${head}`, ...rows].join("\n");
365
+ };
366
+ const selectPrompt = (host, x) => (w, v) => {
367
+ const label = propText(w.props.label) || x.say("lu.input.choose");
368
+ const options = optionsProblem(w.props.options) === undefined
369
+ ? w.props.options
370
+ : [];
371
+ // The bound current choice marks its option; a value that is not declared marks none and is never printed.
372
+ const rows = options.map((o, i) => `${hang(host)} ${i + 1}) ${oneLineChatText(o.label, 60)}${o.value === v ? ` ${x.say("lu.terminal.current")}` : ""}`);
373
+ const head = `> ${label} ${x.say("lu.terminal.selectInput")}`;
374
+ return [host ? head : `${title(w)}: ${head}`, ...rows].join("\n");
375
+ };
376
+ const multiPrompt = (host, x) => (w, v) => {
377
+ const label = propText(w.props.label) || x.say("lu.input.choose");
378
+ const m = multiSelectValueIssues(v).length === 0 ? v : undefined;
379
+ const byValue = new Map((m?.options ?? []).map((o) => [o.value, o]));
380
+ const chosen = (m?.selected ?? []).map((s) => byValue.get(s)).filter((o) => o !== undefined);
381
+ const text = (o) => `${oneLineChatText(o.label, 60)}${o.hint === undefined ? "" : ` (${oneLineChatText(o.hint, 40)})`}`;
382
+ const rows = chosen.length === 0
383
+ ? [`${hang(host)} ${propText(w.props.emptyLabel) || x.say("lu.input.none")}`]
384
+ : chosen.map((o, i) => `${hang(host)} ${i + 1}) ${text(o)} ${x.say("lu.terminal.current")}`);
385
+ const rest = (m?.options.length ?? 0) - chosen.length;
386
+ if (rest > 0)
387
+ rows.push(`${hang(host)} + ${rest} ${x.say("lu.terminal.moreOptions")}`);
388
+ if (m?.note !== undefined)
389
+ rows.push(`${hang(host)} ${oneLineChatText(m.note, 200)}`);
390
+ const head = `> ${label} ${x.say("lu.terminal.multiSelectInput")}`;
391
+ return [host ? head : `${title(w)}: ${head}`, ...rows].join("\n");
392
+ };
393
+ /** The framework kinds' renderers. A NEW registry each call — never mutate a shared one. */
394
+ export function createLoomUiTerminalRegistry(opts = {}) {
395
+ const host = opts.chrome === "host";
396
+ const x = envOf(opts.i18n);
397
+ return new RendererRegistry()
398
+ .register("TimeSeries", timeSeries(host, x))
399
+ .register("BarChart", barChart(host, x))
400
+ .register("Kpi", kpi(host, x))
401
+ .register("Table", table(host, x))
402
+ .register("StatusCard", statusCard(host, x))
403
+ .register("Note", note(host, x))
404
+ .register("Prose", prose(host, x))
405
+ .register("Diagram", diagram(host, x))
406
+ .register("A2UIView", a2uiView(host, x))
407
+ .register("SandboxView", sandboxView(host, x))
408
+ .register("Image", mediaLine(host, x, "Image", opts.media))
409
+ .register("Audio", mediaLine(host, x, "Audio", opts.media))
410
+ .register("Video", mediaLine(host, x, "Video", opts.media))
411
+ .register("File", mediaLine(host, x, "File", opts.media))
412
+ .register("MediaInput", mediaInput(host, x))
413
+ .register("Chat", chatTranscript(host, x))
414
+ .register("TextInput", textPrompt(host, x))
415
+ .register("FormInput", formPrompt(host, x))
416
+ .register("SelectInput", selectPrompt(host, x))
417
+ .register("MultiSelectInput", multiPrompt(host, x));
418
+ }
419
+ export const loomUiTerminalRegistry = createLoomUiTerminalRegistry();
420
+ /**
421
+ * loom's eight built-ins plus the framework's kinds. A NEW registry each call — never mutate a shared one.
422
+ * With `chrome: "host"` the framework kinds print no title; loom's own eight built-ins are loom's
423
+ * renderers and keep theirs (the framework does not rewrite them).
424
+ */
425
+ export function terminalRegistry(opts = {}) {
426
+ return defaultTerminalRegistry.merge(createLoomUiTerminalRegistry(opts));
427
+ }
428
+ //# sourceMappingURL=registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/registry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,64 @@
1
+ import { renderBlueprintToString, } from "@loomwork/plugin-renderer-terminal";
2
+ import { checkKindValue } from "@loomwork/ui-core";
3
+ import { HYDRATION_PROJECTION_ID } from "@loomwork/ui-hydration/client";
4
+ import { inert } from "./inert";
5
+ import { terminalRegistry } from "./registry";
6
+ // ── The status matrix is loom's ───────────────────────────────────────────────
7
+ // Since Blueprint IR 2.0.0 (ADR 0097 D2) the eight-row decision table lives in loom's own
8
+ // traversal: each binding DECLARES its status channel (`status.<handle>`, beside the value's
9
+ // `values.<handle>` in the same projection state), and `renderBlueprintToString` applies the
10
+ // matrix. The framework contributes exactly one thing to it — what a bound VALUE must look
11
+ // like, which is catalogue vocabulary loom deliberately knows nothing about — through the
12
+ // `check` seam loom leaves open between `error` and `stale`.
13
+ /** The framework's per-kind value contract, in loom's `check` seam (between `error` and `stale`). */
14
+ export const kindValueCheck = kindValueCheckFor();
15
+ /**
16
+ * {@link kindValueCheck} that also checks the host's own kinds against `contracts` (a catalogue's
17
+ * `valueContracts`). The framework's contract wins for a framework kind. Absent = framework only.
18
+ */
19
+ export function kindValueCheckFor(contracts) {
20
+ return (widget, value) => {
21
+ const c = checkKindValue(widget.kind, value, contracts);
22
+ return c.ok ? undefined : { code: c.finding.code, message: c.finding.message };
23
+ };
24
+ }
25
+ /**
26
+ * Render the store's projection through loom's terminal renderer: loom's matrix, the framework's
27
+ * contract check.
28
+ *
29
+ * The state map is keyed by `HYDRATION_PROJECTION_ID` — the one id a `HydrationStore` publishes
30
+ * under. A blueprint compiled with any OTHER `hydrationProjectionId` therefore matches no state
31
+ * here: every binding resolves to an undefined value and an undefined status, so the surface
32
+ * renders as loading rows. That is the honest rendering of "this store holds nothing for that
33
+ * projection", not an error — pass the store's own id to `compile` and the rows fill.
34
+ */
35
+ export function renderExperience(blueprint, store, opts = {}) {
36
+ if (opts.registry !== undefined && opts.chrome !== undefined)
37
+ throw new Error("renderExperience: `chrome` configures the default registry and would be ignored next to `registry` — pass one, or build your registry with terminalRegistry({ chrome })");
38
+ const state = store.state();
39
+ const stateMap = new Map();
40
+ // `HydrationStore` publishes under one well-known projection id; every other projection the
41
+ // blueprint declares is somebody else's, and has state here only if the host supplies it. A
42
+ // throwing supplier is "no state yet" (a loading row), never a throw out of a render.
43
+ for (const id of blueprint.projections) {
44
+ if (id === HYDRATION_PROJECTION_ID)
45
+ stateMap.set(id, state);
46
+ else
47
+ stateMap.set(id, readProjection(opts.projectionState, id));
48
+ }
49
+ return inert(renderBlueprintToString(blueprint, stateMap, {
50
+ registry: opts.registry ?? terminalRegistry(opts),
51
+ check: opts.contracts === undefined ? kindValueCheck : kindValueCheckFor(opts.contracts),
52
+ }));
53
+ }
54
+ function readProjection(read, id) {
55
+ if (read === undefined)
56
+ return undefined;
57
+ try {
58
+ return read(id);
59
+ }
60
+ catch {
61
+ return undefined;
62
+ }
63
+ }
64
+ //# sourceMappingURL=status.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/status.ts"],"names":[],"mappings":"AACA,OAAO,EAGL,uBAAuB,GACxB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAyB,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAC1E,OAAO,EAAE,uBAAuB,EAAuB,MAAM,+BAA+B,CAAC;AAC7F,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAgC,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAE5E,iFAAiF;AACjF,0FAA0F;AAC1F,6FAA6F;AAC7F,6FAA6F;AAC7F,2FAA2F;AAC3F,0FAA0F;AAC1F,6DAA6D;AAE7D,qGAAqG;AACrG,MAAM,CAAC,MAAM,cAAc,GAAqB,iBAAiB,EAAE,CAAC;AAEpE;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAAC,SAA4B;IAC5D,OAAO,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;QACvB,MAAM,CAAC,GAAG,cAAc,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;QACxD,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;IACjF,CAAC,CAAC;AACJ,CAAC;AA4BD;;;;;;;;;GASG;AACH,MAAM,UAAU,gBAAgB,CAC9B,SAAoB,EACpB,KAAqB,EACrB,OAAgC,EAAE;IAElC,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS;QAC1D,MAAM,IAAI,KAAK,CACb,yKAAyK,CAC1K,CAAC;IACJ,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC;IAC5B,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAmB,CAAC;IAC5C,4FAA4F;IAC5F,4FAA4F;IAC5F,sFAAsF;IACtF,KAAK,MAAM,EAAE,IAAI,SAAS,CAAC,WAAW,EAAE,CAAC;QACvC,IAAI,EAAE,KAAK,uBAAuB;YAAE,QAAQ,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;;YACvD,QAAQ,CAAC,GAAG,CAAC,EAAE,EAAE,cAAc,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC,CAAC;IAClE,CAAC;IACD,OAAO,KAAK,CACV,uBAAuB,CAAC,SAAS,EAAE,QAAQ,EAAE;QAC3C,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,gBAAgB,CAAC,IAAI,CAAC;QACjD,KAAK,EAAE,IAAI,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,iBAAiB,CAAC,IAAI,CAAC,SAAS,CAAC;KACzF,CAAC,CACH,CAAC;AACJ,CAAC;AAED,SAAS,cAAc,CAAC,IAAgD,EAAE,EAAU;IAClF,IAAI,IAAI,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IACzC,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC"}
@@ -0,0 +1,17 @@
1
+ import { renderExperience } from "./status";
2
+ /**
3
+ * Render now and on every change to the store's projection (and, with `projectionSubscribe`, to
4
+ * any other projection the blueprint binds). Returns an unsubscribe.
5
+ */
6
+ export function watch(blueprint, store, onFrame, opts = {}) {
7
+ onFrame(renderExperience(blueprint, store, opts));
8
+ const frame = () => onFrame(renderExperience(blueprint, store, opts));
9
+ const stops = [store.runtimeSubscribe(frame)];
10
+ if (opts.projectionSubscribe !== undefined)
11
+ stops.push(opts.projectionSubscribe(frame));
12
+ return () => {
13
+ for (const stop of stops)
14
+ stop();
15
+ };
16
+ }
17
+ //# sourceMappingURL=watch.js.map