@flyingrobots/bijou 4.0.0 → 4.1.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 +8 -8
- package/dist/adapters/test/io.d.ts +3 -1
- package/dist/adapters/test/io.d.ts.map +1 -1
- package/dist/adapters/test/io.js +27 -0
- package/dist/adapters/test/io.js.map +1 -1
- package/dist/core/bg-fill.d.ts.map +1 -1
- package/dist/core/bg-fill.js +24 -1
- package/dist/core/bg-fill.js.map +1 -1
- package/dist/core/components/explainability.d.ts +51 -0
- package/dist/core/components/explainability.d.ts.map +1 -0
- package/dist/core/components/explainability.js +134 -0
- package/dist/core/components/explainability.js.map +1 -0
- package/dist/core/components/index.d.ts +6 -0
- package/dist/core/components/index.d.ts.map +1 -1
- package/dist/core/components/index.js +3 -0
- package/dist/core/components/index.js.map +1 -1
- package/dist/core/components/inspector.d.ts +49 -0
- package/dist/core/components/inspector.d.ts.map +1 -0
- package/dist/core/components/inspector.js +107 -0
- package/dist/core/components/inspector.js.map +1 -0
- package/dist/core/components/preference-list.d.ts +61 -0
- package/dist/core/components/preference-list.d.ts.map +1 -0
- package/dist/core/components/preference-list.js +215 -0
- package/dist/core/components/preference-list.js.map +1 -0
- package/dist/core/components/progress.d.ts +9 -1
- package/dist/core/components/progress.d.ts.map +1 -1
- package/dist/core/components/progress.js +20 -6
- package/dist/core/components/progress.js.map +1 -1
- package/dist/core/forms/filter-interactive.d.ts.map +1 -1
- package/dist/core/forms/filter-interactive.js +16 -16
- package/dist/core/forms/filter-interactive.js.map +1 -1
- package/dist/core/forms/form-utils.d.ts +33 -2
- package/dist/core/forms/form-utils.d.ts.map +1 -1
- package/dist/core/forms/form-utils.js +53 -3
- package/dist/core/forms/form-utils.js.map +1 -1
- package/dist/core/forms/multiselect.d.ts.map +1 -1
- package/dist/core/forms/multiselect.js +5 -5
- package/dist/core/forms/multiselect.js.map +1 -1
- package/dist/core/forms/select.d.ts.map +1 -1
- package/dist/core/forms/select.js +4 -4
- package/dist/core/forms/select.js.map +1 -1
- package/dist/core/forms/textarea-editor.d.ts.map +1 -1
- package/dist/core/forms/textarea-editor.js +12 -12
- package/dist/core/forms/textarea-editor.js.map +1 -1
- package/dist/core/key-input.d.ts +17 -0
- package/dist/core/key-input.d.ts.map +1 -0
- package/dist/core/key-input.js +92 -0
- package/dist/core/key-input.js.map +1 -0
- package/dist/core/render/differ.d.ts.map +1 -1
- package/dist/core/render/differ.js +89 -39
- package/dist/core/render/differ.js.map +1 -1
- package/dist/core/text/grapheme.d.ts +7 -0
- package/dist/core/text/grapheme.d.ts.map +1 -1
- package/dist/core/text/grapheme.js +11 -1
- package/dist/core/text/grapheme.js.map +1 -1
- package/dist/core/text/index.d.ts +3 -2
- package/dist/core/text/index.d.ts.map +1 -1
- package/dist/core/text/index.js +2 -2
- package/dist/core/text/index.js.map +1 -1
- package/dist/core/text/wrap.d.ts +18 -0
- package/dist/core/text/wrap.d.ts.map +1 -1
- package/dist/core/text/wrap.js +92 -23
- package/dist/core/text/wrap.js.map +1 -1
- package/dist/index.d.ts +7 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -2
- package/dist/index.js.map +1 -1
- package/dist/ports/index.d.ts +1 -1
- package/dist/ports/index.d.ts.map +1 -1
- package/dist/ports/io.d.ts +30 -0
- package/dist/ports/io.d.ts.map +1 -1
- package/dist/ports/surface.d.ts.map +1 -1
- package/dist/ports/surface.js +40 -18
- package/dist/ports/surface.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -2,14 +2,14 @@
|
|
|
2
2
|
|
|
3
3
|
The pure, zero-dependency core of Bijou.
|
|
4
4
|
|
|
5
|
-
`@flyingrobots/bijou` is the degradation-first terminal toolkit in the Bijou stack. It contains components, prompts, themes, environment detection, test adapters, and the foundational `Surface` and `LayoutNode` primitives that the
|
|
5
|
+
`@flyingrobots/bijou` is the degradation-first terminal toolkit in the Bijou stack. It contains components, prompts, themes, environment detection, test adapters, and the foundational `Surface` and `LayoutNode` primitives that the interactive runtime builds on.
|
|
6
6
|
|
|
7
|
-
##
|
|
7
|
+
## Package Role in v4.0.0
|
|
8
8
|
|
|
9
|
-
- **
|
|
10
|
-
- **Surface primitives without abandoning strings** —
|
|
11
|
-
- **Surface-first companions for common
|
|
12
|
-
- **Explicit
|
|
9
|
+
- **Core/runtime split stays explicit** — the core package remains the right place for CLIs, prompts, logs, and portable terminal output, while `@flyingrobots/bijou-tui` owns the fullscreen runtime.
|
|
10
|
+
- **Surface primitives without abandoning strings** — the package is intentionally mixed-mode. String-oriented helpers remain first-class where they fit the toolkit identity, and runtime-friendly surface helpers exist where they actually help.
|
|
11
|
+
- **Surface-first companions for common runtime chrome** — `boxSurface`, `headerBoxSurface`, `separatorSurface`, `alertSurface`, and `tableSurface` let runtime apps stay on the `Surface` path for common layout and status primitives.
|
|
12
|
+
- **Explicit seam crossing** — when you move `Surface` output back into string-first APIs, you do it deliberately with `surfaceToString(surface, ctx.style)`.
|
|
13
13
|
- **Same hexagonal core** — ports, themes, output-mode detection, and test adapters remain pure and dependency-free.
|
|
14
14
|
|
|
15
15
|
## Install
|
|
@@ -36,7 +36,7 @@ const panel = boxSurface(
|
|
|
36
36
|
{ title: 'Runtime', padding: { top: 1, bottom: 1, left: 2, right: 2 }, ctx },
|
|
37
37
|
);
|
|
38
38
|
|
|
39
|
-
// Return `panel` from a
|
|
39
|
+
// Return `panel` from a runtime `view()` function or framed pane renderer.
|
|
40
40
|
```
|
|
41
41
|
|
|
42
42
|
## Features Breakdown
|
|
@@ -84,7 +84,7 @@ Those docs answer the questions the API reference cannot:
|
|
|
84
84
|
### Tables and inspection
|
|
85
85
|
|
|
86
86
|
- Use `table()` when row/column comparison is the main job and string output is still the right endpoint.
|
|
87
|
-
- Use `tableSurface()` when the job is still passive comparison, but your
|
|
87
|
+
- Use `tableSurface()` when the job is still passive comparison, but your runtime app is already composing `Surface` output.
|
|
88
88
|
- Use `navigableTable()` from `@flyingrobots/bijou-tui` when the user needs keyboard-owned row or cell inspection instead of passive reading.
|
|
89
89
|
|
|
90
90
|
### Hierarchy and chronology
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { ClockPort } from '../../ports/clock.js';
|
|
2
|
-
import type { IOPort } from '../../ports/io.js';
|
|
2
|
+
import type { IOPort, KeyInputMsg } from '../../ports/io.js';
|
|
3
3
|
/**
|
|
4
4
|
* Configuration for {@link mockIO}.
|
|
5
5
|
*/
|
|
@@ -8,6 +8,8 @@ export interface MockIOOptions {
|
|
|
8
8
|
answers?: string[];
|
|
9
9
|
/** Pre-loaded keypress strings delivered by {@link MockIO.rawInput} via microtasks. */
|
|
10
10
|
keys?: string[];
|
|
11
|
+
/** Pre-loaded semantic keys delivered by {@link MockIO.keyInput} via microtasks. */
|
|
12
|
+
keyMsgs?: KeyInputMsg[];
|
|
11
13
|
/** Clock override for deterministic timer and microtask scheduling in tests. */
|
|
12
14
|
clock?: ClockPort;
|
|
13
15
|
/** Virtual filesystem entries (path to content) for {@link MockIO.readFile}. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"io.d.ts","sourceRoot":"","sources":["../../../src/adapters/test/io.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,KAAK,EAAE,MAAM,EAA+B,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"io.d.ts","sourceRoot":"","sources":["../../../src/adapters/test/io.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,KAAK,EAAE,MAAM,EAAE,WAAW,EAA+B,MAAM,mBAAmB,CAAC;AAK1F;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,4EAA4E;IAC5E,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,uFAAuF;IACvF,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,oFAAoF;IACpF,OAAO,CAAC,EAAE,WAAW,EAAE,CAAC;IACxB,gFAAgF;IAChF,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,gFAAgF;IAChF,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,+EAA+E;IAC/E,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;CACjC;AAED;;;;;GAKG;AACH,MAAM,WAAW,MAAO,SAAQ,MAAM;IACpC,yFAAyF;IACzF,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,gDAAgD;IAChD,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,mEAAmE;IACnE,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,2DAA2D;IAC3D,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9B,iEAAiE;IACjE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;CAChC;AAED;;;;;;;;;GASG;AACH,wBAAgB,MAAM,CAAC,OAAO,GAAE,aAAkB,GAAG,MAAM,CA0I1D"}
|
package/dist/adapters/test/io.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { resolveClock } from '../../core/clock.js';
|
|
2
|
+
import { decodeRawKeySequence } from '../../core/key-input.js';
|
|
2
3
|
import { join } from 'path';
|
|
3
4
|
/**
|
|
4
5
|
* Create an in-memory {@link IOPort} for tests.
|
|
@@ -70,6 +71,32 @@ export function mockIO(options = {}) {
|
|
|
70
71
|
clock.queueMicrotask(deliver);
|
|
71
72
|
return { dispose() { disposed = true; } };
|
|
72
73
|
},
|
|
74
|
+
/**
|
|
75
|
+
* Deliver pre-loaded semantic keys to the callback via microtasks.
|
|
76
|
+
*
|
|
77
|
+
* Falls back to decoding `options.keys` so existing tests can keep
|
|
78
|
+
* expressing scripted input in raw terminal strings while semantic-input
|
|
79
|
+
* consumers still exercise the higher-level port.
|
|
80
|
+
*
|
|
81
|
+
* @param onKey - Callback invoked for each semantic keypress.
|
|
82
|
+
* @returns A handle whose `dispose()` stops further key delivery.
|
|
83
|
+
*/
|
|
84
|
+
keyInput(onKey) {
|
|
85
|
+
const keyQueue = options.keyMsgs !== undefined
|
|
86
|
+
? [...options.keyMsgs]
|
|
87
|
+
: (options.keys ?? []).flatMap((key) => decodeRawKeySequence(key));
|
|
88
|
+
let disposed = false;
|
|
89
|
+
function deliver() {
|
|
90
|
+
if (disposed || keyQueue.length === 0)
|
|
91
|
+
return;
|
|
92
|
+
const key = keyQueue.shift();
|
|
93
|
+
onKey(key);
|
|
94
|
+
if (keyQueue.length > 0)
|
|
95
|
+
clock.queueMicrotask(deliver);
|
|
96
|
+
}
|
|
97
|
+
clock.queueMicrotask(deliver);
|
|
98
|
+
return { dispose() { disposed = true; } };
|
|
99
|
+
},
|
|
73
100
|
/**
|
|
74
101
|
* Register a resize callback (no-op in tests).
|
|
75
102
|
* @param _callback - Ignored; resize events are not simulated.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"io.js","sourceRoot":"","sources":["../../../src/adapters/test/io.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"io.js","sourceRoot":"","sources":["../../../src/adapters/test/io.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bg-fill.d.ts","sourceRoot":"","sources":["../../src/core/bg-fill.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"bg-fill.d.ts","sourceRoot":"","sources":["../../src/core/bg-fill.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAExD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAKpD;;;;;;;;GAQG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,YAAY,GAAG,SAAS,GAAG,OAAO,CAKpE;AAED;;;;;;;;;GASG;AACH,wBAAgB,UAAU,CACxB,KAAK,EAAE,UAAU,GAAG,SAAS,EAC7B,GAAG,EAAE,YAAY,GAAG,SAAS,GAC5B,CAAC,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC,GAAG,SAAS,CAkBxC"}
|
package/dist/core/bg-fill.js
CHANGED
|
@@ -6,6 +6,9 @@
|
|
|
6
6
|
*
|
|
7
7
|
* @module
|
|
8
8
|
*/
|
|
9
|
+
import { ANSI_SGR_RE } from './text/index.js';
|
|
10
|
+
const ANSI_SGR_GLOBAL_RE = new RegExp(ANSI_SGR_RE.source, 'g');
|
|
11
|
+
const MARKER = '\u0000';
|
|
9
12
|
/**
|
|
10
13
|
* Determine whether background color should be applied in the current context.
|
|
11
14
|
*
|
|
@@ -37,6 +40,26 @@ export function shouldApplyBg(ctx) {
|
|
|
37
40
|
export function makeBgFill(token, ctx) {
|
|
38
41
|
if (!token?.bg || !shouldApplyBg(ctx))
|
|
39
42
|
return undefined;
|
|
40
|
-
|
|
43
|
+
const wrappedMarker = ctx.style.bgHex(token.bg, MARKER);
|
|
44
|
+
const markerIndex = wrappedMarker.indexOf(MARKER);
|
|
45
|
+
if (markerIndex < 0 || wrappedMarker === MARKER) {
|
|
46
|
+
return (text) => ctx.style.bgHex(token.bg, text);
|
|
47
|
+
}
|
|
48
|
+
const prefix = wrappedMarker.slice(0, markerIndex);
|
|
49
|
+
const suffix = wrappedMarker.slice(markerIndex + MARKER.length);
|
|
50
|
+
if (prefix.length === 0 || suffix.length === 0) {
|
|
51
|
+
return (text) => ctx.style.bgHex(token.bg, text);
|
|
52
|
+
}
|
|
53
|
+
return (text) => wrapPreservingBackground(text, prefix, suffix);
|
|
54
|
+
}
|
|
55
|
+
function wrapPreservingBackground(text, prefix, suffix) {
|
|
56
|
+
const reapplied = text.replace(ANSI_SGR_GLOBAL_RE, (match) => {
|
|
57
|
+
const codes = match.slice(2, -1);
|
|
58
|
+
const parts = codes === '' ? ['0'] : codes.split(';');
|
|
59
|
+
return parts.includes('0') || parts.includes('49')
|
|
60
|
+
? match + prefix
|
|
61
|
+
: match;
|
|
62
|
+
});
|
|
63
|
+
return prefix + reapplied + suffix;
|
|
41
64
|
}
|
|
42
65
|
//# sourceMappingURL=bg-fill.js.map
|
package/dist/core/bg-fill.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bg-fill.js","sourceRoot":"","sources":["../../src/core/bg-fill.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;
|
|
1
|
+
{"version":3,"file":"bg-fill.js","sourceRoot":"","sources":["../../src/core/bg-fill.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAG9C,MAAM,kBAAkB,GAAG,IAAI,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAC/D,MAAM,MAAM,GAAG,QAAQ,CAAC;AAExB;;;;;;;;GAQG;AACH,MAAM,UAAU,aAAa,CAAC,GAA6B;IACzD,IAAI,CAAC,GAAG;QAAE,OAAO,KAAK,CAAC;IACvB,IAAI,GAAG,CAAC,KAAK,CAAC,OAAO;QAAE,OAAO,KAAK,CAAC;IACpC,IAAI,GAAG,CAAC,IAAI,KAAK,MAAM,IAAI,GAAG,CAAC,IAAI,KAAK,YAAY;QAAE,OAAO,KAAK,CAAC;IACnE,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,UAAU,CACxB,KAA6B,EAC7B,GAA6B;IAE7B,IAAI,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC;QAAE,OAAO,SAAS,CAAC;IAExD,MAAM,aAAa,GAAG,GAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,EAAG,EAAE,MAAM,CAAC,CAAC;IAC1D,MAAM,WAAW,GAAG,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAElD,IAAI,WAAW,GAAG,CAAC,IAAI,aAAa,KAAK,MAAM,EAAE,CAAC;QAChD,OAAO,CAAC,IAAY,EAAE,EAAE,CAAC,GAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,EAAG,EAAE,IAAI,CAAC,CAAC;IAC7D,CAAC;IAED,MAAM,MAAM,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC;IACnD,MAAM,MAAM,GAAG,aAAa,CAAC,KAAK,CAAC,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;IAEhE,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC/C,OAAO,CAAC,IAAY,EAAE,EAAE,CAAC,GAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,EAAG,EAAE,IAAI,CAAC,CAAC;IAC7D,CAAC;IAED,OAAO,CAAC,IAAY,EAAE,EAAE,CAAC,wBAAwB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AAC1E,CAAC;AAED,SAAS,wBAAwB,CAC/B,IAAY,EACZ,MAAc,EACd,MAAc;IAEd,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,kBAAkB,EAAE,CAAC,KAAK,EAAE,EAAE;QAC3D,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACjC,MAAM,KAAK,GAAG,KAAK,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACtD,OAAO,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC;YAChD,CAAC,CAAC,KAAK,GAAG,MAAM;YAChB,CAAC,CAAC,KAAK,CAAC;IACZ,CAAC,CAAC,CAAC;IACH,OAAO,MAAM,GAAG,SAAS,GAAG,MAAM,CAAC;AACrC,CAAC"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import type { BijouContext } from '../../ports/context.js';
|
|
2
|
+
import type { TokenValue } from '../theme/tokens.js';
|
|
3
|
+
import type { BijouNodeOptions } from './types.js';
|
|
4
|
+
/** A single evidence item supporting an explainability recommendation. */
|
|
5
|
+
export interface ExplainabilityEvidenceItem {
|
|
6
|
+
/** Primary evidence statement. */
|
|
7
|
+
readonly label: string;
|
|
8
|
+
/** Optional supporting detail for the evidence item. */
|
|
9
|
+
readonly detail?: string;
|
|
10
|
+
}
|
|
11
|
+
/** Options for rendering a canonical explainability surface. */
|
|
12
|
+
export interface ExplainabilityOptions extends BijouNodeOptions {
|
|
13
|
+
/** Primary recommendation or explanation title. */
|
|
14
|
+
readonly title: string;
|
|
15
|
+
/** Visible provenance label. Defaults to `[AI]`. */
|
|
16
|
+
readonly label?: string;
|
|
17
|
+
/** Optional artifact kind, such as `Suggestion` or `Summary`. */
|
|
18
|
+
readonly artifactKind?: string;
|
|
19
|
+
/** Optional source or actor responsible for the recommendation. */
|
|
20
|
+
readonly source?: string;
|
|
21
|
+
/** Optional source mode, such as `advisory` or `draft`. */
|
|
22
|
+
readonly sourceMode?: string;
|
|
23
|
+
/** Optional rationale describing why the recommendation is present. */
|
|
24
|
+
readonly rationale?: string;
|
|
25
|
+
/** Optional evidence items supporting the recommendation. */
|
|
26
|
+
readonly evidence?: readonly ExplainabilityEvidenceItem[];
|
|
27
|
+
/** Optional clear next action for the user. */
|
|
28
|
+
readonly nextAction?: string;
|
|
29
|
+
/** Optional governance or review note. */
|
|
30
|
+
readonly governance?: string;
|
|
31
|
+
/** Optional confidence. Numbers are formatted as percentages. */
|
|
32
|
+
readonly confidence?: number | string;
|
|
33
|
+
/** Optional border token for the visual surface. */
|
|
34
|
+
readonly borderToken?: TokenValue;
|
|
35
|
+
/** Optional background token for the visual surface. */
|
|
36
|
+
readonly bgToken?: TokenValue;
|
|
37
|
+
/** Optional fixed width for the visual surface. */
|
|
38
|
+
readonly width?: number;
|
|
39
|
+
/** Bijou context for rendering mode and theme resolution. */
|
|
40
|
+
readonly ctx?: BijouContext;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Render a canonical explainability surface for AI-mediated recommendations.
|
|
44
|
+
*
|
|
45
|
+
* Output adapts by mode:
|
|
46
|
+
* - `interactive` / `static`: boxed, sectioned explainability surface with a visible `[AI]` label.
|
|
47
|
+
* - `pipe`: plain, newline-separated labeled sections.
|
|
48
|
+
* - `accessible`: explicit linearized explanation with the same meaning.
|
|
49
|
+
*/
|
|
50
|
+
export declare function explainability(options: ExplainabilityOptions): string;
|
|
51
|
+
//# sourceMappingURL=explainability.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"explainability.d.ts","sourceRoot":"","sources":["../../../src/core/components/explainability.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAKrD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAEnD,0EAA0E;AAC1E,MAAM,WAAW,0BAA0B;IACzC,kCAAkC;IAClC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,wDAAwD;IACxD,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,gEAAgE;AAChE,MAAM,WAAW,qBAAsB,SAAQ,gBAAgB;IAC7D,mDAAmD;IACnD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,oDAAoD;IACpD,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,iEAAiE;IACjE,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,mEAAmE;IACnE,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,2DAA2D;IAC3D,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,uEAAuE;IACvE,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,6DAA6D;IAC7D,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,0BAA0B,EAAE,CAAC;IAC1D,+CAA+C;IAC/C,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,0CAA0C;IAC1C,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,iEAAiE;IACjE,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACtC,oDAAoD;IACpD,QAAQ,CAAC,WAAW,CAAC,EAAE,UAAU,CAAC;IAClC,wDAAwD;IACxD,QAAQ,CAAC,OAAO,CAAC,EAAE,UAAU,CAAC;IAC9B,mDAAmD;IACnD,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,6DAA6D;IAC7D,QAAQ,CAAC,GAAG,CAAC,EAAE,YAAY,CAAC;CAC7B;AAiID;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,qBAAqB,GAAG,MAAM,CAcrE"}
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
import { renderByMode } from '../mode-render.js';
|
|
2
|
+
import { resolveCtx } from '../resolve-ctx.js';
|
|
3
|
+
import { box } from './box.js';
|
|
4
|
+
import { enumeratedList } from './enumerated-list.js';
|
|
5
|
+
function emphasizeToken(token) {
|
|
6
|
+
return {
|
|
7
|
+
...token,
|
|
8
|
+
modifiers: [...(token.modifiers ?? []), 'bold'],
|
|
9
|
+
};
|
|
10
|
+
}
|
|
11
|
+
function formatConfidence(confidence) {
|
|
12
|
+
if (confidence == null)
|
|
13
|
+
return undefined;
|
|
14
|
+
if (typeof confidence === 'string')
|
|
15
|
+
return confidence;
|
|
16
|
+
if (Number.isNaN(confidence))
|
|
17
|
+
return undefined;
|
|
18
|
+
const percentage = confidence >= 0 && confidence <= 1 ? confidence * 100 : confidence;
|
|
19
|
+
return `${Math.round(percentage)}%`;
|
|
20
|
+
}
|
|
21
|
+
function formatEvidenceItem(item) {
|
|
22
|
+
return item.detail ? `${item.label} — ${item.detail}` : item.label;
|
|
23
|
+
}
|
|
24
|
+
function buildMetadataLines(options) {
|
|
25
|
+
const lines = [];
|
|
26
|
+
if (options.artifactKind)
|
|
27
|
+
lines.push(`Artifact kind: ${options.artifactKind}`);
|
|
28
|
+
if (options.source)
|
|
29
|
+
lines.push(`Source: ${options.source}`);
|
|
30
|
+
if (options.sourceMode)
|
|
31
|
+
lines.push(`Source mode: ${options.sourceMode}`);
|
|
32
|
+
const confidence = formatConfidence(options.confidence);
|
|
33
|
+
if (confidence)
|
|
34
|
+
lines.push(`Confidence: ${confidence}`);
|
|
35
|
+
return lines;
|
|
36
|
+
}
|
|
37
|
+
function buildPipeSections(options) {
|
|
38
|
+
const lines = [];
|
|
39
|
+
lines.push(`${options.label ?? '[AI]'} ${options.title}`);
|
|
40
|
+
lines.push(...buildMetadataLines(options));
|
|
41
|
+
if (options.rationale) {
|
|
42
|
+
if (lines.length > 0)
|
|
43
|
+
lines.push('');
|
|
44
|
+
lines.push('Why:');
|
|
45
|
+
lines.push(` ${options.rationale}`);
|
|
46
|
+
}
|
|
47
|
+
if (options.evidence && options.evidence.length > 0) {
|
|
48
|
+
if (lines.length > 0)
|
|
49
|
+
lines.push('');
|
|
50
|
+
lines.push('Evidence:');
|
|
51
|
+
lines.push(...options.evidence.map((item) => `- ${formatEvidenceItem(item)}`));
|
|
52
|
+
}
|
|
53
|
+
if (options.nextAction) {
|
|
54
|
+
if (lines.length > 0)
|
|
55
|
+
lines.push('');
|
|
56
|
+
lines.push('Next action:');
|
|
57
|
+
lines.push(` ${options.nextAction}`);
|
|
58
|
+
}
|
|
59
|
+
if (options.governance) {
|
|
60
|
+
if (lines.length > 0)
|
|
61
|
+
lines.push('');
|
|
62
|
+
lines.push('Governance:');
|
|
63
|
+
lines.push(` ${options.governance}`);
|
|
64
|
+
}
|
|
65
|
+
return lines;
|
|
66
|
+
}
|
|
67
|
+
function buildAccessibleSections(options) {
|
|
68
|
+
const lines = [`AI explanation: ${options.title}`];
|
|
69
|
+
lines.push(...buildMetadataLines(options));
|
|
70
|
+
if (options.rationale) {
|
|
71
|
+
lines.push(`Why: ${options.rationale}`);
|
|
72
|
+
}
|
|
73
|
+
if (options.evidence && options.evidence.length > 0) {
|
|
74
|
+
lines.push('Evidence:');
|
|
75
|
+
lines.push(enumeratedList(options.evidence.map((item) => formatEvidenceItem(item)), { style: 'arabic', indent: 0 }));
|
|
76
|
+
}
|
|
77
|
+
if (options.nextAction) {
|
|
78
|
+
lines.push(`Next action: ${options.nextAction}`);
|
|
79
|
+
}
|
|
80
|
+
if (options.governance) {
|
|
81
|
+
lines.push(`Governance: ${options.governance}`);
|
|
82
|
+
}
|
|
83
|
+
return lines;
|
|
84
|
+
}
|
|
85
|
+
function buildInteractiveContent(options, ctx) {
|
|
86
|
+
const primary = ctx.semantic('primary');
|
|
87
|
+
const strong = emphasizeToken(primary);
|
|
88
|
+
const muted = ctx.semantic('muted');
|
|
89
|
+
const info = emphasizeToken(ctx.status('info'));
|
|
90
|
+
const label = options.label ?? '[AI]';
|
|
91
|
+
const sections = [
|
|
92
|
+
`${ctx.style.styled(info, label)} ${ctx.style.styled(strong, options.title)}`,
|
|
93
|
+
];
|
|
94
|
+
const metadata = buildMetadataLines(options);
|
|
95
|
+
if (metadata.length > 0) {
|
|
96
|
+
sections.push(metadata.map((line) => ctx.style.styled(muted, line)).join('\n'));
|
|
97
|
+
}
|
|
98
|
+
if (options.rationale) {
|
|
99
|
+
sections.push(`${ctx.style.styled(strong, 'Why')}\n${options.rationale}`);
|
|
100
|
+
}
|
|
101
|
+
if (options.evidence && options.evidence.length > 0) {
|
|
102
|
+
sections.push(`${ctx.style.styled(strong, 'Evidence')}\n${enumeratedList(options.evidence.map((item) => formatEvidenceItem(item)), { style: 'bullet', indent: 2, ctx })}`);
|
|
103
|
+
}
|
|
104
|
+
if (options.nextAction) {
|
|
105
|
+
sections.push(`${ctx.style.styled(strong, 'Next action')}\n${options.nextAction}`);
|
|
106
|
+
}
|
|
107
|
+
if (options.governance) {
|
|
108
|
+
sections.push(`${ctx.style.styled(strong, 'Governance')}\n${ctx.style.styled(muted, options.governance)}`);
|
|
109
|
+
}
|
|
110
|
+
return sections.join('\n\n');
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Render a canonical explainability surface for AI-mediated recommendations.
|
|
114
|
+
*
|
|
115
|
+
* Output adapts by mode:
|
|
116
|
+
* - `interactive` / `static`: boxed, sectioned explainability surface with a visible `[AI]` label.
|
|
117
|
+
* - `pipe`: plain, newline-separated labeled sections.
|
|
118
|
+
* - `accessible`: explicit linearized explanation with the same meaning.
|
|
119
|
+
*/
|
|
120
|
+
export function explainability(options) {
|
|
121
|
+
const ctx = resolveCtx(options.ctx);
|
|
122
|
+
return renderByMode(ctx.mode, {
|
|
123
|
+
pipe: () => buildPipeSections(options).join('\n'),
|
|
124
|
+
accessible: () => buildAccessibleSections(options).join('\n'),
|
|
125
|
+
interactive: () => box(buildInteractiveContent(options, ctx), {
|
|
126
|
+
borderToken: options.borderToken ?? ctx.border('primary'),
|
|
127
|
+
bgToken: options.bgToken ?? ctx.surface('elevated'),
|
|
128
|
+
padding: { left: 1, right: 1 },
|
|
129
|
+
width: options.width,
|
|
130
|
+
ctx,
|
|
131
|
+
}),
|
|
132
|
+
}, options);
|
|
133
|
+
}
|
|
134
|
+
//# sourceMappingURL=explainability.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"explainability.js","sourceRoot":"","sources":["../../../src/core/components/explainability.ts"],"names":[],"mappings":"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"}
|
|
@@ -45,6 +45,12 @@ export { paginator } from './paginator.js';
|
|
|
45
45
|
export type { PaginatorOptions } from './paginator.js';
|
|
46
46
|
export { stepper } from './stepper.js';
|
|
47
47
|
export type { StepperStep, StepperOptions } from './stepper.js';
|
|
48
|
+
export { explainability } from './explainability.js';
|
|
49
|
+
export type { ExplainabilityEvidenceItem, ExplainabilityOptions } from './explainability.js';
|
|
50
|
+
export { inspector } from './inspector.js';
|
|
51
|
+
export type { InspectorChrome, InspectorSectionTone, InspectorSection, InspectorOptions } from './inspector.js';
|
|
52
|
+
export { preferenceListSurface, preferenceRowSurface, resolvePreferenceRowLayout, preparePreferenceRow, preparePreferenceSections, } from './preference-list.js';
|
|
53
|
+
export type { PreferenceListTheme, PreferenceRowKind, PreferenceRow, PreparedPreferenceRow, PreferenceSection, PreparedPreferenceSection, PreferenceRowLayout, PreferenceRowSurfaceOptions, PreferenceListSurfaceOptions, } from './preference-list.js';
|
|
48
54
|
export { dag, dagSlice, dagLayout } from './dag.js';
|
|
49
55
|
export type { DagNode, DagOptions, DagNodePosition, DagLayout } from './dag.js';
|
|
50
56
|
export { arraySource, isDagSource, isSlicedDagSource } from './dag-source.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/components/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/components/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -26,6 +26,9 @@ export { tabs } from './tabs.js';
|
|
|
26
26
|
export { breadcrumb } from './breadcrumb.js';
|
|
27
27
|
export { paginator } from './paginator.js';
|
|
28
28
|
export { stepper } from './stepper.js';
|
|
29
|
+
export { explainability } from './explainability.js';
|
|
30
|
+
export { inspector } from './inspector.js';
|
|
31
|
+
export { preferenceListSurface, preferenceRowSurface, resolvePreferenceRowLayout, preparePreferenceRow, preparePreferenceSections, } from './preference-list.js';
|
|
29
32
|
export { dag, dagSlice, dagLayout } from './dag.js';
|
|
30
33
|
export { arraySource, isDagSource, isSlicedDagSource } from './dag-source.js';
|
|
31
34
|
export { dagStats } from './dag-stats.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/components/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAI3D,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,yBAAyB,EAAE,MAAM,eAAe,CAAC;AAG1F,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAEnC,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAG7C,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAE1C,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAE3D,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAG3D,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAErD,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAGnC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAEnC,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAE7C,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAGzC,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAG/B,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAGjC,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAG3C,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAGzC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAGjC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAG7C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAG3C,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAGvC,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAGpD,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAG9E,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAG1C,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAGtD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAG3C,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAG/B,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAGzC,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAG3C,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAGjE,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/components/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAI3D,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,yBAAyB,EAAE,MAAM,eAAe,CAAC;AAG1F,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAEnC,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAG7C,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAE1C,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAE3D,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAG3D,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAErD,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAGnC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAEnC,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAE7C,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAGzC,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAG/B,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAGjC,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAG3C,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAGzC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAGjC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAG7C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAG3C,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAGvC,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAG3C,OAAO,EACL,qBAAqB,EACrB,oBAAoB,EACpB,0BAA0B,EAC1B,oBAAoB,EACpB,yBAAyB,GAC1B,MAAM,sBAAsB,CAAC;AAa9B,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAGpD,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAG9E,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAG1C,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAGtD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAG3C,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAG/B,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAGzC,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAG3C,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAGjE,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import type { BijouContext } from '../../ports/context.js';
|
|
2
|
+
import type { TokenValue } from '../theme/tokens.js';
|
|
3
|
+
import type { BijouNodeOptions } from './types.js';
|
|
4
|
+
export type InspectorSectionTone = 'default' | 'muted';
|
|
5
|
+
export type InspectorChrome = 'boxed' | 'none';
|
|
6
|
+
/** A compact titled section within an inspector surface. */
|
|
7
|
+
export interface InspectorSection {
|
|
8
|
+
/** Section heading shown above the content. */
|
|
9
|
+
readonly title: string;
|
|
10
|
+
/** Section body content. */
|
|
11
|
+
readonly content: string;
|
|
12
|
+
/** Optional tone for the section body. */
|
|
13
|
+
readonly tone?: InspectorSectionTone;
|
|
14
|
+
}
|
|
15
|
+
/** Options for rendering a canonical inspector surface. */
|
|
16
|
+
export interface InspectorOptions extends BijouNodeOptions {
|
|
17
|
+
/** Title shown in the box chrome or as the first plain-text line. */
|
|
18
|
+
readonly title: string;
|
|
19
|
+
/** Optional current selection or active value to emphasize. */
|
|
20
|
+
readonly currentValue?: string;
|
|
21
|
+
/** Visible label for the current value. Defaults to `Current selection`. */
|
|
22
|
+
readonly currentValueLabel?: string;
|
|
23
|
+
/** Optional supporting text immediately beneath the current value. */
|
|
24
|
+
readonly supportingText?: string;
|
|
25
|
+
/** Optional explicit label for supporting text in non-visual modes. Defaults to `Context`. */
|
|
26
|
+
readonly supportingTextLabel?: string;
|
|
27
|
+
/** Compact titled sections shown below the active value. */
|
|
28
|
+
readonly sections?: readonly InspectorSection[];
|
|
29
|
+
/** Visual chrome for rich/static rendering. Defaults to `boxed`. */
|
|
30
|
+
readonly chrome?: InspectorChrome;
|
|
31
|
+
/** Optional border token for the visual surface. */
|
|
32
|
+
readonly borderToken?: TokenValue;
|
|
33
|
+
/** Optional background token for the visual surface. */
|
|
34
|
+
readonly bgToken?: TokenValue;
|
|
35
|
+
/** Optional fixed width for the visual surface. */
|
|
36
|
+
readonly width?: number;
|
|
37
|
+
/** Bijou context for rendering mode and theme resolution. */
|
|
38
|
+
readonly ctx?: BijouContext;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Render a canonical inspector surface for compact side-panel context.
|
|
42
|
+
*
|
|
43
|
+
* Output adapts by mode:
|
|
44
|
+
* - `interactive` / `static`: boxed current-selection panel with compact titled sections by default, or plain sectioned content when `chrome: 'none'`.
|
|
45
|
+
* - `pipe`: plain grouped text with explicit field labels.
|
|
46
|
+
* - `accessible`: explicit linearized field/value output with the same meaning.
|
|
47
|
+
*/
|
|
48
|
+
export declare function inspector(options: InspectorOptions): string;
|
|
49
|
+
//# sourceMappingURL=inspector.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inspector.d.ts","sourceRoot":"","sources":["../../../src/core/components/inspector.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAIrD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAEnD,MAAM,MAAM,oBAAoB,GAAG,SAAS,GAAG,OAAO,CAAC;AACvD,MAAM,MAAM,eAAe,GAAG,OAAO,GAAG,MAAM,CAAC;AAE/C,4DAA4D;AAC5D,MAAM,WAAW,gBAAgB;IAC/B,+CAA+C;IAC/C,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,4BAA4B;IAC5B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,0CAA0C;IAC1C,QAAQ,CAAC,IAAI,CAAC,EAAE,oBAAoB,CAAC;CACtC;AAED,2DAA2D;AAC3D,MAAM,WAAW,gBAAiB,SAAQ,gBAAgB;IACxD,qEAAqE;IACrE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,+DAA+D;IAC/D,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,4EAA4E;IAC5E,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IACpC,sEAAsE;IACtE,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IACjC,8FAA8F;IAC9F,QAAQ,CAAC,mBAAmB,CAAC,EAAE,MAAM,CAAC;IACtC,4DAA4D;IAC5D,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,gBAAgB,EAAE,CAAC;IAChD,oEAAoE;IACpE,QAAQ,CAAC,MAAM,CAAC,EAAE,eAAe,CAAC;IAClC,oDAAoD;IACpD,QAAQ,CAAC,WAAW,CAAC,EAAE,UAAU,CAAC;IAClC,wDAAwD;IACxD,QAAQ,CAAC,OAAO,CAAC,EAAE,UAAU,CAAC;IAC9B,mDAAmD;IACnD,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,6DAA6D;IAC7D,QAAQ,CAAC,GAAG,CAAC,EAAE,YAAY,CAAC;CAC7B;AAgGD;;;;;;;GAOG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE,gBAAgB,GAAG,MAAM,CAmB3D"}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
import { renderByMode } from '../mode-render.js';
|
|
2
|
+
import { resolveCtx } from '../resolve-ctx.js';
|
|
3
|
+
import { box } from './box.js';
|
|
4
|
+
function emphasizeToken(token) {
|
|
5
|
+
return {
|
|
6
|
+
...token,
|
|
7
|
+
modifiers: [...(token.modifiers ?? []), 'bold'],
|
|
8
|
+
};
|
|
9
|
+
}
|
|
10
|
+
function nonEmptySections(options) {
|
|
11
|
+
return (options.sections ?? []).filter((section) => section.content.trim().length > 0);
|
|
12
|
+
}
|
|
13
|
+
function indentLines(content, spaces = 2) {
|
|
14
|
+
const indent = ' '.repeat(Math.max(0, spaces));
|
|
15
|
+
return content
|
|
16
|
+
.split('\n')
|
|
17
|
+
.map((line) => `${indent}${line}`)
|
|
18
|
+
.join('\n');
|
|
19
|
+
}
|
|
20
|
+
function formatInlineOrBlock(title, content) {
|
|
21
|
+
if (!content.includes('\n')) {
|
|
22
|
+
return [`${title}: ${content}`];
|
|
23
|
+
}
|
|
24
|
+
return [`${title}:`, indentLines(content)];
|
|
25
|
+
}
|
|
26
|
+
function buildPipeSections(options) {
|
|
27
|
+
const lines = [options.title];
|
|
28
|
+
const currentValueLabel = options.currentValueLabel ?? 'Current selection';
|
|
29
|
+
const supportingTextLabel = options.supportingTextLabel ?? 'Context';
|
|
30
|
+
if (options.currentValue) {
|
|
31
|
+
lines.push('');
|
|
32
|
+
lines.push(`${currentValueLabel}: ${options.currentValue}`);
|
|
33
|
+
}
|
|
34
|
+
if (options.supportingText) {
|
|
35
|
+
lines.push('');
|
|
36
|
+
lines.push(...formatInlineOrBlock(supportingTextLabel, options.supportingText));
|
|
37
|
+
}
|
|
38
|
+
for (const section of nonEmptySections(options)) {
|
|
39
|
+
lines.push('');
|
|
40
|
+
lines.push(`${section.title}:`);
|
|
41
|
+
lines.push(indentLines(section.content));
|
|
42
|
+
}
|
|
43
|
+
return lines;
|
|
44
|
+
}
|
|
45
|
+
function buildAccessibleSections(options) {
|
|
46
|
+
const lines = [`Inspector: ${options.title}`];
|
|
47
|
+
const currentValueLabel = options.currentValueLabel ?? 'Current selection';
|
|
48
|
+
const supportingTextLabel = options.supportingTextLabel ?? 'Context';
|
|
49
|
+
if (options.currentValue) {
|
|
50
|
+
lines.push(`${currentValueLabel}: ${options.currentValue}`);
|
|
51
|
+
}
|
|
52
|
+
if (options.supportingText) {
|
|
53
|
+
lines.push(...formatInlineOrBlock(supportingTextLabel, options.supportingText));
|
|
54
|
+
}
|
|
55
|
+
for (const section of nonEmptySections(options)) {
|
|
56
|
+
lines.push(...formatInlineOrBlock(section.title, section.content));
|
|
57
|
+
}
|
|
58
|
+
return lines;
|
|
59
|
+
}
|
|
60
|
+
function buildInteractiveContent(options, ctx) {
|
|
61
|
+
const primary = emphasizeToken(ctx.semantic('primary'));
|
|
62
|
+
const muted = ctx.semantic('muted');
|
|
63
|
+
const currentValueLabel = options.currentValueLabel ?? 'Current selection';
|
|
64
|
+
const contentSections = [];
|
|
65
|
+
if (options.currentValue) {
|
|
66
|
+
contentSections.push(`${ctx.style.styled(muted, currentValueLabel)}\n${ctx.style.styled(primary, options.currentValue)}`);
|
|
67
|
+
}
|
|
68
|
+
if (options.supportingText) {
|
|
69
|
+
contentSections.push(ctx.style.styled(muted, options.supportingText));
|
|
70
|
+
}
|
|
71
|
+
for (const section of nonEmptySections(options)) {
|
|
72
|
+
const body = section.tone === 'muted'
|
|
73
|
+
? ctx.style.styled(muted, section.content)
|
|
74
|
+
: section.content;
|
|
75
|
+
contentSections.push(`${ctx.style.styled(primary, section.title)}\n${body}`);
|
|
76
|
+
}
|
|
77
|
+
return contentSections.join('\n\n');
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Render a canonical inspector surface for compact side-panel context.
|
|
81
|
+
*
|
|
82
|
+
* Output adapts by mode:
|
|
83
|
+
* - `interactive` / `static`: boxed current-selection panel with compact titled sections by default, or plain sectioned content when `chrome: 'none'`.
|
|
84
|
+
* - `pipe`: plain grouped text with explicit field labels.
|
|
85
|
+
* - `accessible`: explicit linearized field/value output with the same meaning.
|
|
86
|
+
*/
|
|
87
|
+
export function inspector(options) {
|
|
88
|
+
const ctx = resolveCtx(options.ctx);
|
|
89
|
+
return renderByMode(ctx.mode, {
|
|
90
|
+
pipe: () => buildPipeSections(options).join('\n'),
|
|
91
|
+
accessible: () => buildAccessibleSections(options).join('\n'),
|
|
92
|
+
interactive: () => {
|
|
93
|
+
const content = buildInteractiveContent(options, ctx);
|
|
94
|
+
if (options.chrome === 'none')
|
|
95
|
+
return content;
|
|
96
|
+
return box(content, {
|
|
97
|
+
title: options.title,
|
|
98
|
+
borderToken: options.borderToken ?? ctx.border('muted'),
|
|
99
|
+
bgToken: options.bgToken ?? ctx.surface('elevated'),
|
|
100
|
+
padding: { left: 1, right: 1 },
|
|
101
|
+
width: options.width,
|
|
102
|
+
ctx,
|
|
103
|
+
});
|
|
104
|
+
},
|
|
105
|
+
}, options);
|
|
106
|
+
}
|
|
107
|
+
//# sourceMappingURL=inspector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inspector.js","sourceRoot":"","sources":["../../../src/core/components/inspector.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AA0C/B,SAAS,cAAc,CAAC,KAAiB;IACvC,OAAO;QACL,GAAG,KAAK;QACR,SAAS,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,IAAI,EAAE,CAAC,EAAE,MAAe,CAAC;KACzD,CAAC;AACJ,CAAC;AAED,SAAS,gBAAgB,CAAC,OAAyB;IACjD,OAAO,CAAC,OAAO,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACzF,CAAC;AAED,SAAS,WAAW,CAAC,OAAe,EAAE,MAAM,GAAG,CAAC;IAC9C,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;IAC/C,OAAO,OAAO;SACX,KAAK,CAAC,IAAI,CAAC;SACX,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,MAAM,GAAG,IAAI,EAAE,CAAC;SACjC,IAAI,CAAC,IAAI,CAAC,CAAC;AAChB,CAAC;AAED,SAAS,mBAAmB,CAAC,KAAa,EAAE,OAAe;IACzD,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QAC5B,OAAO,CAAC,GAAG,KAAK,KAAK,OAAO,EAAE,CAAC,CAAC;IAClC,CAAC;IACD,OAAO,CAAC,GAAG,KAAK,GAAG,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC;AAC7C,CAAC;AAED,SAAS,iBAAiB,CAAC,OAAyB;IAClD,MAAM,KAAK,GAAa,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACxC,MAAM,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,IAAI,mBAAmB,CAAC;IAC3E,MAAM,mBAAmB,GAAG,OAAO,CAAC,mBAAmB,IAAI,SAAS,CAAC;IAErE,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;QACzB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,GAAG,iBAAiB,KAAK,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;IAC9D,CAAC;IAED,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;QAC3B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,GAAG,mBAAmB,CAAC,mBAAmB,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC;IAClF,CAAC;IAED,KAAK,MAAM,OAAO,IAAI,gBAAgB,CAAC,OAAO,CAAC,EAAE,CAAC;QAChD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC;QAChC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;IAC3C,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,uBAAuB,CAAC,OAAyB;IACxD,MAAM,KAAK,GAAa,CAAC,cAAc,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;IACxD,MAAM,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,IAAI,mBAAmB,CAAC;IAC3E,MAAM,mBAAmB,GAAG,OAAO,CAAC,mBAAmB,IAAI,SAAS,CAAC;IAErE,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;QACzB,KAAK,CAAC,IAAI,CAAC,GAAG,iBAAiB,KAAK,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;IAC9D,CAAC;IAED,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;QAC3B,KAAK,CAAC,IAAI,CAAC,GAAG,mBAAmB,CAAC,mBAAmB,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC;IAClF,CAAC;IAED,KAAK,MAAM,OAAO,IAAI,gBAAgB,CAAC,OAAO,CAAC,EAAE,CAAC;QAChD,KAAK,CAAC,IAAI,CAAC,GAAG,mBAAmB,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;IACrE,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,uBAAuB,CAAC,OAAyB,EAAE,GAAiB;IAC3E,MAAM,OAAO,GAAG,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;IACxD,MAAM,KAAK,GAAG,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IACpC,MAAM,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,IAAI,mBAAmB,CAAC;IAC3E,MAAM,eAAe,GAAa,EAAE,CAAC;IAErC,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;QACzB,eAAe,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,iBAAiB,CAAC,KAAK,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;IAC5H,CAAC;IAED,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;QAC3B,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC;IACxE,CAAC;IAED,KAAK,MAAM,OAAO,IAAI,gBAAgB,CAAC,OAAO,CAAC,EAAE,CAAC;QAChD,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,KAAK,OAAO;YACnC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,OAAO,CAAC;YAC1C,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC;QACpB,eAAe,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;IAC/E,CAAC;IAED,OAAO,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACtC,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,SAAS,CAAC,OAAyB;IACjD,MAAM,GAAG,GAAG,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAEpC,OAAO,YAAY,CAAC,GAAG,CAAC,IAAI,EAAE;QAC5B,IAAI,EAAE,GAAG,EAAE,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;QACjD,UAAU,EAAE,GAAG,EAAE,CAAC,uBAAuB,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;QAC7D,WAAW,EAAE,GAAG,EAAE;YAChB,MAAM,OAAO,GAAG,uBAAuB,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;YACtD,IAAI,OAAO,CAAC,MAAM,KAAK,MAAM;gBAAE,OAAO,OAAO,CAAC;YAC9C,OAAO,GAAG,CAAC,OAAO,EAAE;gBAClB,KAAK,EAAE,OAAO,CAAC,KAAK;gBACpB,WAAW,EAAE,OAAO,CAAC,WAAW,IAAI,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC;gBACvD,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC;gBACnD,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE;gBAC9B,KAAK,EAAE,OAAO,CAAC,KAAK;gBACpB,GAAG;aACJ,CAAC,CAAC;QACL,CAAC;KACF,EAAE,OAAO,CAAC,CAAC;AACd,CAAC"}
|