@bitbaum/chatkit 0.14.2 → 0.15.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 +48 -0
- package/dist/chart.d.ts +115 -0
- package/dist/chart.d.ts.map +1 -0
- package/dist/chart.js +203 -0
- package/dist/chart.js.map +1 -0
- package/dist/react/Markdown.d.ts +4 -1
- package/dist/react/Markdown.d.ts.map +1 -1
- package/dist/react/Markdown.js +8 -3
- package/dist/react/Markdown.js.map +1 -1
- package/dist/react/RichBlock.d.ts +15 -1
- package/dist/react/RichBlock.d.ts.map +1 -1
- package/dist/react/RichBlock.js +22 -1
- package/dist/react/RichBlock.js.map +1 -1
- package/dist/react/Screen.d.ts +9 -1
- package/dist/react/Screen.d.ts.map +1 -1
- package/dist/react/Screen.js +3 -2
- package/dist/react/Screen.js.map +1 -1
- package/dist/react/Thread.d.ts +11 -2
- package/dist/react/Thread.d.ts.map +1 -1
- package/dist/react/Thread.js +4 -4
- package/dist/react/Thread.js.map +1 -1
- package/dist/react/index.d.ts +3 -1
- package/dist/react/index.d.ts.map +1 -1
- package/dist/react/index.js +2 -1
- package/dist/react/index.js.map +1 -1
- package/dist/react/renderers.d.ts +20 -0
- package/dist/react/renderers.d.ts.map +1 -0
- package/dist/react/renderers.js +14 -0
- package/dist/react/renderers.js.map +1 -0
- package/dist/rich.d.ts +5 -1
- package/dist/rich.d.ts.map +1 -1
- package/dist/rich.js +19 -3
- package/dist/rich.js.map +1 -1
- package/package.json +1 -1
- package/styles.css +35 -0
package/README.md
CHANGED
|
@@ -151,6 +151,54 @@ answer's prose (or what you pass), only where one exists. A button that does
|
|
|
151
151
|
nothing is never shown. `ChatThread` renders it under every answer; pass
|
|
152
152
|
`speaker` and `share` through.
|
|
153
153
|
|
|
154
|
+
### Charts in answers (0.15)
|
|
155
|
+
|
|
156
|
+
"Who produces gallium?" is answered with a ranked bar chart, not a list.
|
|
157
|
+
chatkit stays dependency-free: it defines the **data contract** and a
|
|
158
|
+
**renderer slot**; the drawing is the app's. Substrata injects
|
|
159
|
+
[`@bitbaum/chartkit`](https://github.com/bitbaum/chartkit), whose components
|
|
160
|
+
take exactly the block's fields, so a block spreads into the matching one:
|
|
161
|
+
|
|
162
|
+
```tsx
|
|
163
|
+
import { BarChart, LineChart, ShareBars, Timeline, StatTiles } from "@bitbaum/chartkit";
|
|
164
|
+
const renderers = {
|
|
165
|
+
chart: (b) =>
|
|
166
|
+
b.chart === "bars" ? <BarChart {...b} /> : b.chart === "line" ? <LineChart {...b} /> : b.chart === "share" ? <ShareBars {...b} /> : b.chart === "timeline" ? <Timeline {...b} /> : <StatTiles {...b} />,
|
|
167
|
+
};
|
|
168
|
+
<ChatScreen renderers={renderers} …> // every answer on the screen
|
|
169
|
+
<ChatThread renderers={renderers} …> // or one thread; Markdown and RichAnswerBlock take it too
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
Without a renderer, or when one returns `null` for a kind it does not draw,
|
|
173
|
+
chatkit draws the **fallback itself**: the caption and a `.ck-table` of the
|
|
174
|
+
data, so a chart is never a blank. A malformed block (a share of 140, a link
|
|
175
|
+
with a script in it) is rejected by the parser and degrades to the same table
|
|
176
|
+
of whatever rows were safe — the renderer never sees it. Copy and Listen read
|
|
177
|
+
the figures as lines.
|
|
178
|
+
|
|
179
|
+
The model writes a chart in the same fenced `chat_ui` JSON as every other
|
|
180
|
+
block. `RICH_ANSWERS_INSTRUCTION` now says when to draw one — ranked
|
|
181
|
+
quantities with 3+ rows → `bars`; shares of one whole → `share`; a quantity
|
|
182
|
+
over time with 3+ points → `line`; 3+ dated events → `timeline`; 2–4 headline
|
|
183
|
+
figures → `tiles` — that every number comes from a tool result, and that each
|
|
184
|
+
row's `href` is copied from the result's page or link.
|
|
185
|
+
|
|
186
|
+
The contract (`ChartBlock`, exported; limits are the parser's):
|
|
187
|
+
|
|
188
|
+
```ts
|
|
189
|
+
{ type: "chart", chart: "bars", caption, unit?, highlight?, rows: [{ label, value, href?, share?, note?, estimated? }] } // ≤ 24 rows
|
|
190
|
+
{ type: "chart", chart: "share", caption, other?, rows: [{ label, share, href? }] } // share 0–100
|
|
191
|
+
{ type: "chart", chart: "line", caption, unit?, series: [{ id, label, points: [{ x, y, href?, note? }] }] } // ≤ 6 series, ≤ 120 points
|
|
192
|
+
{ type: "chart", chart: "timeline", caption, events: [{ date, label, href?, tone?: "up" | "down" | "neutral", kind? }] } // ≤ 24 events
|
|
193
|
+
{ type: "chart", chart: "tiles", caption, tiles: [{ label, value, href?, note? }] } // ≤ 6 tiles
|
|
194
|
+
```
|
|
195
|
+
|
|
196
|
+
An `href` is a same-site path or a web URL, never anything else. The block
|
|
197
|
+
sits in the answer column with the stack figure's margins (`.ck-rich
|
|
198
|
+
.ck-chart`); `test/browser.mjs` renders one through a stub renderer and one
|
|
199
|
+
through the fallback at 320, 390 and 1280px, runs the broken-word scan over
|
|
200
|
+
them and asserts no horizontal overflow.
|
|
201
|
+
|
|
154
202
|
### Words are never cut (0.14.1)
|
|
155
203
|
|
|
156
204
|
A word may wrap onto the next line; it may never be cut in two. `.ck-md` sets
|
package/dist/chart.d.ts
ADDED
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Charts in answers (0.15). chatkit defines the DATA contract and a renderer
|
|
3
|
+
* slot; the drawing is injected by the app (`renderers={{ chart }}` on
|
|
4
|
+
* `ChatThread`, `ChatScreen`, `ChatMessage`, `Markdown` or `RichAnswerBlock`).
|
|
5
|
+
* Substrata hands the block to `@bitbaum/chartkit`; the shapes here mirror
|
|
6
|
+
* chartkit's props exactly, so a block spreads into the matching component:
|
|
7
|
+
*
|
|
8
|
+
* chart: (b) => b.chart === "bars" ? <BarChart {...b} /> : …
|
|
9
|
+
*
|
|
10
|
+
* Without a renderer, or when one returns null, chatkit draws the caption and
|
|
11
|
+
* a table of the data itself — a chart is never a blank.
|
|
12
|
+
*/
|
|
13
|
+
export type ChartPoint = {
|
|
14
|
+
/** A year, a date or a number along the x axis. */
|
|
15
|
+
x: string | number;
|
|
16
|
+
y: number;
|
|
17
|
+
href?: string;
|
|
18
|
+
note?: string;
|
|
19
|
+
};
|
|
20
|
+
export type ChartSeries = {
|
|
21
|
+
id: string;
|
|
22
|
+
label: string;
|
|
23
|
+
points: ChartPoint[];
|
|
24
|
+
};
|
|
25
|
+
export type ChartRow = {
|
|
26
|
+
label: string;
|
|
27
|
+
value: number;
|
|
28
|
+
href?: string;
|
|
29
|
+
/** Percent of the whole, 0–100. */
|
|
30
|
+
share?: number;
|
|
31
|
+
note?: string;
|
|
32
|
+
estimated?: boolean;
|
|
33
|
+
};
|
|
34
|
+
export type ShareRow = {
|
|
35
|
+
label: string;
|
|
36
|
+
share: number;
|
|
37
|
+
href?: string;
|
|
38
|
+
};
|
|
39
|
+
export type ChartEvent = {
|
|
40
|
+
date: string;
|
|
41
|
+
label: string;
|
|
42
|
+
href?: string;
|
|
43
|
+
tone?: "up" | "down" | "neutral";
|
|
44
|
+
kind?: string;
|
|
45
|
+
};
|
|
46
|
+
export type ChartTile = {
|
|
47
|
+
label: string;
|
|
48
|
+
value: string | number;
|
|
49
|
+
href?: string;
|
|
50
|
+
note?: string;
|
|
51
|
+
};
|
|
52
|
+
/** One of chartkit's five figures, as data. */
|
|
53
|
+
export type ChartBlock = {
|
|
54
|
+
type: "chart";
|
|
55
|
+
chart: "line";
|
|
56
|
+
caption: string;
|
|
57
|
+
unit?: string;
|
|
58
|
+
series: ChartSeries[];
|
|
59
|
+
} | {
|
|
60
|
+
type: "chart";
|
|
61
|
+
chart: "bars";
|
|
62
|
+
caption: string;
|
|
63
|
+
unit?: string;
|
|
64
|
+
rows: ChartRow[];
|
|
65
|
+
/** The label of the row to draw in the accent (the reader's country, the answer). */
|
|
66
|
+
highlight?: string;
|
|
67
|
+
} | {
|
|
68
|
+
type: "chart";
|
|
69
|
+
chart: "share";
|
|
70
|
+
caption: string;
|
|
71
|
+
rows: ShareRow[];
|
|
72
|
+
/** The share left over, 0–100, drawn as "Other". */
|
|
73
|
+
other?: number;
|
|
74
|
+
} | {
|
|
75
|
+
type: "chart";
|
|
76
|
+
chart: "timeline";
|
|
77
|
+
caption: string;
|
|
78
|
+
events: ChartEvent[];
|
|
79
|
+
} | {
|
|
80
|
+
type: "chart";
|
|
81
|
+
chart: "tiles";
|
|
82
|
+
caption: string;
|
|
83
|
+
tiles: ChartTile[];
|
|
84
|
+
};
|
|
85
|
+
export type ChartKind = ChartBlock["chart"];
|
|
86
|
+
export declare const CHART_KINDS: readonly ["line", "bars", "share", "timeline", "tiles"];
|
|
87
|
+
/** Same-origin paths and web URLs only; a link in a chart is a link, never markup. */
|
|
88
|
+
export declare function safeChartHref(value: unknown): value is string;
|
|
89
|
+
/**
|
|
90
|
+
* A chart block, validated field by field against chartkit's shapes: bounded
|
|
91
|
+
* lists, finite numbers, safe links. Anything else is null — the caller then
|
|
92
|
+
* degrades it with `chartFallback` rather than dropping it.
|
|
93
|
+
*/
|
|
94
|
+
export declare function parseChartBlock(b: unknown): ChartBlock | null;
|
|
95
|
+
/** The data of a chart as a table: what chatkit draws without a renderer,
|
|
96
|
+
* and what Copy and Listen read. */
|
|
97
|
+
export type ChartTable = {
|
|
98
|
+
caption: string;
|
|
99
|
+
head: string[];
|
|
100
|
+
rows: {
|
|
101
|
+
cells: string[];
|
|
102
|
+
href?: string;
|
|
103
|
+
}[];
|
|
104
|
+
};
|
|
105
|
+
/**
|
|
106
|
+
* A table of whatever a chart block holds — valid or not. A malformed block
|
|
107
|
+
* (a share of 140, a link with a script in it, forty rows) still has a caption
|
|
108
|
+
* and some rows a reader can use, so the answer shows those instead of a hole.
|
|
109
|
+
* Only the safe parts travel: string labels, finite numbers, safe links.
|
|
110
|
+
* Partial JSON, or anything that is not a chart with a caption, is null.
|
|
111
|
+
*/
|
|
112
|
+
export declare function chartFallback(raw: string | unknown): ChartTable | null;
|
|
113
|
+
/** Copy, share and voice get the figures as lines, never the wire JSON. */
|
|
114
|
+
export declare function chartText(block: ChartBlock): string;
|
|
115
|
+
//# sourceMappingURL=chart.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chart.d.ts","sourceRoot":"","sources":["../src/chart.ts"],"names":[],"mappings":"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"}
|
package/dist/chart.js
ADDED
|
@@ -0,0 +1,203 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Charts in answers (0.15). chatkit defines the DATA contract and a renderer
|
|
3
|
+
* slot; the drawing is injected by the app (`renderers={{ chart }}` on
|
|
4
|
+
* `ChatThread`, `ChatScreen`, `ChatMessage`, `Markdown` or `RichAnswerBlock`).
|
|
5
|
+
* Substrata hands the block to `@bitbaum/chartkit`; the shapes here mirror
|
|
6
|
+
* chartkit's props exactly, so a block spreads into the matching component:
|
|
7
|
+
*
|
|
8
|
+
* chart: (b) => b.chart === "bars" ? <BarChart {...b} /> : …
|
|
9
|
+
*
|
|
10
|
+
* Without a renderer, or when one returns null, chatkit draws the caption and
|
|
11
|
+
* a table of the data itself — a chart is never a blank.
|
|
12
|
+
*/
|
|
13
|
+
export const CHART_KINDS = ["line", "bars", "share", "timeline", "tiles"];
|
|
14
|
+
const record = (v) => !!v && typeof v === "object" && !Array.isArray(v);
|
|
15
|
+
const str = (v, max) => typeof v === "string" && !!v.trim() && v.length <= max;
|
|
16
|
+
const num = (v) => typeof v === "number" && Number.isFinite(v);
|
|
17
|
+
const list = (v, max) => Array.isArray(v) && v.length > 0 && v.length <= max;
|
|
18
|
+
const opt = (v, ok) => v === undefined || ok(v);
|
|
19
|
+
const label = (v) => str(v, 120);
|
|
20
|
+
const note = (v) => opt(v, (x) => str(x, 300));
|
|
21
|
+
/** Same-origin paths and web URLs only; a link in a chart is a link, never markup. */
|
|
22
|
+
export function safeChartHref(value) {
|
|
23
|
+
if (!str(value, 2048) || /[\s\\]/.test(value) || [...value].some((c) => c.charCodeAt(0) < 32))
|
|
24
|
+
return false;
|
|
25
|
+
if (/^\/(?!\/)/.test(value))
|
|
26
|
+
return true;
|
|
27
|
+
try {
|
|
28
|
+
const url = new URL(value);
|
|
29
|
+
return ["https:", "http:"].includes(url.protocol) && !url.username && !url.password;
|
|
30
|
+
}
|
|
31
|
+
catch {
|
|
32
|
+
return false;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
const href = (v) => opt(v, safeChartHref);
|
|
36
|
+
/**
|
|
37
|
+
* A chart block, validated field by field against chartkit's shapes: bounded
|
|
38
|
+
* lists, finite numbers, safe links. Anything else is null — the caller then
|
|
39
|
+
* degrades it with `chartFallback` rather than dropping it.
|
|
40
|
+
*/
|
|
41
|
+
export function parseChartBlock(b) {
|
|
42
|
+
if (!record(b) || b.type !== "chart" || !str(b.caption, 300))
|
|
43
|
+
return null;
|
|
44
|
+
if (!opt(b.unit, (v) => str(v, 20)))
|
|
45
|
+
return null;
|
|
46
|
+
switch (b.chart) {
|
|
47
|
+
case "bars":
|
|
48
|
+
return list(b.rows, 24) &&
|
|
49
|
+
b.rows.every((r) => record(r) &&
|
|
50
|
+
label(r.label) &&
|
|
51
|
+
num(r.value) &&
|
|
52
|
+
href(r.href) &&
|
|
53
|
+
opt(r.share, (v) => num(v) && v >= 0 && v <= 100) &&
|
|
54
|
+
note(r.note) &&
|
|
55
|
+
opt(r.estimated, (v) => typeof v === "boolean")) &&
|
|
56
|
+
opt(b.highlight, label)
|
|
57
|
+
? b
|
|
58
|
+
: null;
|
|
59
|
+
case "share":
|
|
60
|
+
return list(b.rows, 24) &&
|
|
61
|
+
b.rows.every((r) => record(r) &&
|
|
62
|
+
label(r.label) &&
|
|
63
|
+
num(r.share) &&
|
|
64
|
+
r.share >= 0 &&
|
|
65
|
+
r.share <= 100 &&
|
|
66
|
+
href(r.href)) &&
|
|
67
|
+
opt(b.other, (v) => num(v) && v >= 0 && v <= 100)
|
|
68
|
+
? b
|
|
69
|
+
: null;
|
|
70
|
+
case "line": {
|
|
71
|
+
if (!list(b.series, 6) ||
|
|
72
|
+
!b.series.every((s) => record(s) &&
|
|
73
|
+
str(s.id, 50) &&
|
|
74
|
+
label(s.label) &&
|
|
75
|
+
list(s.points, 120) &&
|
|
76
|
+
s.points.every((p) => record(p) && (num(p.x) || str(p.x, 40)) && num(p.y) && href(p.href) && note(p.note))))
|
|
77
|
+
return null;
|
|
78
|
+
const ids = new Set(b.series.map((s) => s.id));
|
|
79
|
+
return ids.size === b.series.length ? b : null;
|
|
80
|
+
}
|
|
81
|
+
case "timeline":
|
|
82
|
+
return list(b.events, 24) &&
|
|
83
|
+
b.events.every((e) => record(e) &&
|
|
84
|
+
str(e.date, 40) &&
|
|
85
|
+
label(e.label) &&
|
|
86
|
+
href(e.href) &&
|
|
87
|
+
opt(e.tone, (v) => v === "up" || v === "down" || v === "neutral") &&
|
|
88
|
+
opt(e.kind, (v) => str(v, 40)))
|
|
89
|
+
? b
|
|
90
|
+
: null;
|
|
91
|
+
case "tiles":
|
|
92
|
+
return list(b.tiles, 6) &&
|
|
93
|
+
b.tiles.every((t) => record(t) &&
|
|
94
|
+
label(t.label) &&
|
|
95
|
+
(num(t.value) || str(t.value, 40)) &&
|
|
96
|
+
href(t.href) &&
|
|
97
|
+
note(t.note))
|
|
98
|
+
? b
|
|
99
|
+
: null;
|
|
100
|
+
default:
|
|
101
|
+
return null;
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
const fmt = (v, unit) => typeof v === "number"
|
|
105
|
+
? `${Number.isInteger(v) ? v.toLocaleString("en-US") : v.toLocaleString("en-US", { maximumFractionDigits: 2 })}${unit ? ` ${unit}` : ""}`
|
|
106
|
+
: typeof v === "string"
|
|
107
|
+
? v
|
|
108
|
+
: "";
|
|
109
|
+
/**
|
|
110
|
+
* A table of whatever a chart block holds — valid or not. A malformed block
|
|
111
|
+
* (a share of 140, a link with a script in it, forty rows) still has a caption
|
|
112
|
+
* and some rows a reader can use, so the answer shows those instead of a hole.
|
|
113
|
+
* Only the safe parts travel: string labels, finite numbers, safe links.
|
|
114
|
+
* Partial JSON, or anything that is not a chart with a caption, is null.
|
|
115
|
+
*/
|
|
116
|
+
export function chartFallback(raw) {
|
|
117
|
+
let b = raw;
|
|
118
|
+
if (typeof raw === "string") {
|
|
119
|
+
if (raw.length > 40000)
|
|
120
|
+
return null;
|
|
121
|
+
try {
|
|
122
|
+
b = JSON.parse(raw);
|
|
123
|
+
}
|
|
124
|
+
catch {
|
|
125
|
+
return null;
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
if (!record(b) || b.type !== "chart" || !str(b.caption, 300))
|
|
129
|
+
return null;
|
|
130
|
+
const unit = str(b.unit, 20) ? b.unit : undefined;
|
|
131
|
+
const caption = b.caption;
|
|
132
|
+
const rows = [];
|
|
133
|
+
const link = (r) => (safeChartHref(r.href) ? r.href : undefined);
|
|
134
|
+
const take = (v, max) => (Array.isArray(v) ? v : []).slice(0, max).filter(record);
|
|
135
|
+
if (b.chart === "line") {
|
|
136
|
+
// x is a label, never a grouped number: 2014 is a year, not "2,014".
|
|
137
|
+
let years = true;
|
|
138
|
+
for (const s of take(b.series, 6)) {
|
|
139
|
+
if (!label(s.label))
|
|
140
|
+
continue;
|
|
141
|
+
for (const p of take(s.points, 120)) {
|
|
142
|
+
if (!(num(p.x) || str(p.x, 40)) || !num(p.y))
|
|
143
|
+
continue;
|
|
144
|
+
years &&= num(p.x) && Number.isInteger(p.x) && p.x >= 1000 && p.x <= 2999;
|
|
145
|
+
rows.push({ cells: [s.label, String(p.x), fmt(p.y, unit)], href: link(p) });
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
const x = years && rows.length > 0 ? "Year" : "x";
|
|
149
|
+
return { caption, head: ["Series", x, unit ? `Value (${unit})` : "Value"], rows };
|
|
150
|
+
}
|
|
151
|
+
if (b.chart === "timeline") {
|
|
152
|
+
for (const e of take(b.events, 24)) {
|
|
153
|
+
if (!str(e.date, 40) || !label(e.label))
|
|
154
|
+
continue;
|
|
155
|
+
rows.push({ cells: [e.date, e.label], href: link(e) });
|
|
156
|
+
}
|
|
157
|
+
return { caption, head: ["Date", "Event"], rows };
|
|
158
|
+
}
|
|
159
|
+
if (b.chart === "tiles") {
|
|
160
|
+
for (const t of take(b.tiles, 6)) {
|
|
161
|
+
if (!label(t.label) || !(num(t.value) || str(t.value, 40)))
|
|
162
|
+
continue;
|
|
163
|
+
rows.push({ cells: [t.label, fmt(t.value), str(t.note, 300) ? t.note : ""], href: link(t) });
|
|
164
|
+
}
|
|
165
|
+
const noted = rows.some((r) => r.cells[2]);
|
|
166
|
+
if (!noted)
|
|
167
|
+
for (const r of rows)
|
|
168
|
+
r.cells.pop();
|
|
169
|
+
return { caption, head: noted ? ["", "Value", "Note"] : ["", "Value"], rows };
|
|
170
|
+
}
|
|
171
|
+
if (b.chart === "share") {
|
|
172
|
+
for (const r of take(b.rows, 24)) {
|
|
173
|
+
if (!label(r.label) || !num(r.share))
|
|
174
|
+
continue;
|
|
175
|
+
rows.push({ cells: [r.label, `${fmt(r.share)} %`], href: link(r) });
|
|
176
|
+
}
|
|
177
|
+
if (num(b.other))
|
|
178
|
+
rows.push({ cells: ["Other", `${fmt(b.other)} %`] });
|
|
179
|
+
return { caption, head: ["", "Share"], rows };
|
|
180
|
+
}
|
|
181
|
+
// bars, and any chart kind chatkit does not know: label, value, share.
|
|
182
|
+
const shared = take(b.rows, 24).some((r) => num(r.share));
|
|
183
|
+
for (const r of take(b.rows, 24)) {
|
|
184
|
+
if (!label(r.label) || !num(r.value))
|
|
185
|
+
continue;
|
|
186
|
+
const cells = [r.label, `${fmt(r.value, unit)}${r.estimated === true ? " (est.)" : ""}`];
|
|
187
|
+
if (shared)
|
|
188
|
+
cells.push(num(r.share) ? `${fmt(r.share)} %` : "");
|
|
189
|
+
rows.push({ cells, href: link(r) });
|
|
190
|
+
}
|
|
191
|
+
const head = ["", unit ? `Value (${unit})` : "Value"];
|
|
192
|
+
if (shared)
|
|
193
|
+
head.push("Share");
|
|
194
|
+
return { caption, head, rows };
|
|
195
|
+
}
|
|
196
|
+
/** Copy, share and voice get the figures as lines, never the wire JSON. */
|
|
197
|
+
export function chartText(block) {
|
|
198
|
+
const t = chartFallback(block);
|
|
199
|
+
if (!t)
|
|
200
|
+
return "";
|
|
201
|
+
return `${t.caption}\n${t.rows.map((r) => r.cells.filter(Boolean).join(" — ")).join("\n")}`;
|
|
202
|
+
}
|
|
203
|
+
//# sourceMappingURL=chart.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chart.js","sourceRoot":"","sources":["../src/chart.ts"],"names":[],"mappings":"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"}
|
package/dist/react/Markdown.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { type ReactNode } from "react";
|
|
2
|
+
import type { RichRenderers } from "./renderers.js";
|
|
2
3
|
/** What a grounded answer's `[F8]` / `[D1]` handle refers to. Unknown handles
|
|
3
4
|
* are dropped rather than shown bare: a dangling `[F8]` implies a source the
|
|
4
5
|
* reader cannot reach. */
|
|
@@ -64,10 +65,12 @@ export declare const defaultRenderCitation: RenderCitation;
|
|
|
64
65
|
* instead of breaking the page; the sources an answer cites are listed once
|
|
65
66
|
* under it as chips.
|
|
66
67
|
*/
|
|
67
|
-
export declare function Markdown({ text, citations, renderLink, renderCitation, renderSources, sources, sourcesLabel, className, onReply, }: {
|
|
68
|
+
export declare function Markdown({ text, citations, renderLink, renderCitation, renderSources, sources, sourcesLabel, className, onReply, renderers, }: {
|
|
68
69
|
text: string;
|
|
69
70
|
/** A visual choice sends a normal conversation message. Omit while streaming. */
|
|
70
71
|
onReply?: (text: string) => void;
|
|
72
|
+
/** The app's drawing for a chart block; without it, the caption and a table. */
|
|
73
|
+
renderers?: RichRenderers;
|
|
71
74
|
citations?: CitationMap;
|
|
72
75
|
renderLink?: RenderLink;
|
|
73
76
|
renderCitation?: RenderCitation;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Markdown.d.ts","sourceRoot":"","sources":["../../src/react/Markdown.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAY,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"Markdown.d.ts","sourceRoot":"","sources":["../../src/react/Markdown.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAY,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAIjD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAcpD;;2BAE2B;AAC3B,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC;AAE3F,MAAM,MAAM,UAAU,GAAG,CAAC,IAAI,EAAE;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,OAAO,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,SAAS,CAAC;CACrB,KAAK,SAAS,CAAC;AAEhB;;yBAEyB;AACzB,MAAM,MAAM,cAAc,GAAG,CAAC,IAAI,EAAE;IAClC,GAAG,EAAE,MAAM,EAAE,CAAC;IACd,SAAS,EAAE,WAAW,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;CACnB,KAAK,SAAS,CAAC;AAEhB;uEACuE;AACvE,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,EAAE;IACpC,OAAO,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACxE,KAAK,EAAE,MAAM,CAAC;CACf,KAAK,SAAS,CAAC;AAEhB,8EAA8E;AAC9E,eAAO,MAAM,iBAAiB,EAAE,UAmB7B,CAAC;AAEJ;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,EACzB,OAAO,EACP,KAAK,EACL,UAA8B,GAC/B,EAAE;IACD,OAAO,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACxE,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,UAAU,CAAC;CACzB,sCA+EA;AAED;;2DAE2D;AAC3D,eAAO,MAAM,qBAAqB,EAAE,cA0BnC,CAAC;AAwEF;;;;;;;;;GASG;AACH,wBAAgB,QAAQ,CAAC,EACvB,IAAI,EACJ,SAAS,EACT,UAA8B,EAC9B,cAAsC,EACtC,aAAa,EACb,OAAc,EACd,YAAwB,EACxB,SAAS,EACT,OAAO,EACP,SAAS,GACV,EAAE;IACD,IAAI,EAAE,MAAM,CAAC;IACb,iFAAiF;IACjF,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACjC,gFAAgF;IAChF,SAAS,CAAC,EAAE,aAAa,CAAC;IAC1B,SAAS,CAAC,EAAE,WAAW,CAAC;IACxB,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,gFAAgF;IAChF,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,qEAAqE;IACrE,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,+BAkJA"}
|
package/dist/react/Markdown.js
CHANGED
|
@@ -2,7 +2,8 @@
|
|
|
2
2
|
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
3
3
|
import { useState } from "react";
|
|
4
4
|
import { parseRichBlock } from "../rich.js";
|
|
5
|
-
import {
|
|
5
|
+
import { chartFallback } from "../chart.js";
|
|
6
|
+
import { ChartTableFigure, RichAnswerBlock } from "./RichBlock.js";
|
|
6
7
|
import { IconBook } from "./icons.js";
|
|
7
8
|
import { Sheet, prefersSheet } from "./Sheet.js";
|
|
8
9
|
import { citedIds, isCardList, isInternalHref, listLead, parseBlocks, parseInline, } from "../markdown.js";
|
|
@@ -94,7 +95,7 @@ function Inline({ spans, citations, renderLink, renderCitation, }) {
|
|
|
94
95
|
* instead of breaking the page; the sources an answer cites are listed once
|
|
95
96
|
* under it as chips.
|
|
96
97
|
*/
|
|
97
|
-
export function Markdown({ text, citations, renderLink = defaultRenderLink, renderCitation = defaultRenderCitation, renderSources, sources = true, sourcesLabel = "Sources", className, onReply, }) {
|
|
98
|
+
export function Markdown({ text, citations, renderLink = defaultRenderLink, renderCitation = defaultRenderCitation, renderSources, sources = true, sourcesLabel = "Sources", className, onReply, renderers, }) {
|
|
98
99
|
const inline = (t) => (_jsx(Inline, { spans: parseInline(t), citations: citations, renderLink: renderLink, renderCitation: renderCitation }));
|
|
99
100
|
const items = (list, ordered, start = 1) => {
|
|
100
101
|
const List = ordered ? "ol" : "ul";
|
|
@@ -111,7 +112,11 @@ export function Markdown({ text, citations, renderLink = defaultRenderLink, rend
|
|
|
111
112
|
if (b.lang === "chat_ui") {
|
|
112
113
|
const block = parseRichBlock(b.code);
|
|
113
114
|
if (block)
|
|
114
|
-
return _jsx(RichAnswerBlock, { block: block, onReply: onReply }, i);
|
|
115
|
+
return (_jsx(RichAnswerBlock, { block: block, onReply: onReply, renderers: renderers }, i));
|
|
116
|
+
// A malformed chart still has a caption and rows: show those.
|
|
117
|
+
const table = chartFallback(b.code);
|
|
118
|
+
if (table)
|
|
119
|
+
return _jsx(ChartTableFigure, { table: table }, i);
|
|
115
120
|
// A partial JSON block must not flash in the conversation.
|
|
116
121
|
return null;
|
|
117
122
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Markdown.js","sourceRoot":"","sources":["../../src/react/Markdown.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Markdown.js","sourceRoot":"","sources":["../../src/react/Markdown.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,20 @@
|
|
|
1
1
|
import type { RichBlock } from "../rich.js";
|
|
2
|
-
|
|
2
|
+
import { type ChartTable } from "../chart.js";
|
|
3
|
+
import { type RichRenderers } from "./renderers.js";
|
|
4
|
+
/**
|
|
5
|
+
* The chart chatkit draws itself: the caption and a table of the data. It is
|
|
6
|
+
* what a reader gets without an injected renderer, when the renderer returns
|
|
7
|
+
* null for a kind it does not draw, and when the block is malformed — a chart
|
|
8
|
+
* is never a blank. Numbers sit right-aligned in tabular figures; a row with a
|
|
9
|
+
* link is a link.
|
|
10
|
+
*/
|
|
11
|
+
export declare function ChartTableFigure({ table }: {
|
|
12
|
+
table: ChartTable;
|
|
13
|
+
}): import("react").JSX.Element;
|
|
14
|
+
export declare function RichAnswerBlock({ block, onReply, renderers: own, }: {
|
|
3
15
|
block: RichBlock;
|
|
4
16
|
onReply?: (text: string) => void;
|
|
17
|
+
/** The app's drawing for a chart; without it, the caption and a table. */
|
|
18
|
+
renderers?: RichRenderers;
|
|
5
19
|
}): import("react").JSX.Element;
|
|
6
20
|
//# sourceMappingURL=RichBlock.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RichBlock.d.ts","sourceRoot":"","sources":["../../src/react/RichBlock.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"RichBlock.d.ts","sourceRoot":"","sources":["../../src/react/RichBlock.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAkC,KAAK,UAAU,EAAE,MAAM,aAAa,CAAC;AAG9E,OAAO,EAAoB,KAAK,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAEtE;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,EAAE,KAAK,EAAE,EAAE;IAAE,KAAK,EAAE,UAAU,CAAA;CAAE,+BAoChE;AAaD,wBAAgB,eAAe,CAAC,EAC9B,KAAK,EACL,OAAO,EACP,SAAS,EAAE,GAAG,GACf,EAAE;IACD,KAAK,EAAE,SAAS,CAAC;IACjB,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACjC,0EAA0E;IAC1E,SAAS,CAAC,EAAE,aAAa,CAAC;CAC3B,+BAiLA"}
|
package/dist/react/RichBlock.js
CHANGED
|
@@ -1,13 +1,34 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
3
|
import { useId, useState } from "react";
|
|
4
|
+
import { chartFallback } from "../chart.js";
|
|
4
5
|
import { Sheet } from "./Sheet.js";
|
|
5
6
|
import { StackIconSvg } from "./icons.js";
|
|
6
|
-
|
|
7
|
+
import { useRichRenderers } from "./renderers.js";
|
|
8
|
+
/**
|
|
9
|
+
* The chart chatkit draws itself: the caption and a table of the data. It is
|
|
10
|
+
* what a reader gets without an injected renderer, when the renderer returns
|
|
11
|
+
* null for a kind it does not draw, and when the block is malformed — a chart
|
|
12
|
+
* is never a blank. Numbers sit right-aligned in tabular figures; a row with a
|
|
13
|
+
* link is a link.
|
|
14
|
+
*/
|
|
15
|
+
export function ChartTableFigure({ table }) {
|
|
16
|
+
return (_jsxs("figure", { className: "ck-rich ck-chart ck-chart-table", children: [_jsx("div", { className: "ck-table-wrap", children: _jsxs("table", { className: "ck-table", children: [_jsx("thead", { children: _jsx("tr", { children: table.head.map((cell, j) => (_jsx("th", { className: j > 0 ? "ck-chart-num" : undefined, children: cell }, j))) }) }), _jsx("tbody", { children: table.rows.map((row, i) => (_jsx("tr", { children: table.head.map((_, j) => (_jsx("td", { className: j > 0 ? "ck-chart-num" : undefined, children: j === 0 && row.href ? (_jsx("a", { href: row.href, className: "ck-chart-link", children: row.cells[0] })) : ((row.cells[j] ?? "")) }, j))) }, i))) })] }) }), _jsx("figcaption", { className: "ck-chart-caption", children: table.caption })] }));
|
|
17
|
+
}
|
|
18
|
+
function ChartFigure({ block, renderers }) {
|
|
19
|
+
const drawn = renderers?.chart?.(block);
|
|
20
|
+
if (drawn !== null && drawn !== undefined && drawn !== false)
|
|
21
|
+
return (_jsx("figure", { className: "ck-rich ck-chart", "data-chart": block.chart, children: drawn }));
|
|
22
|
+
return _jsx(ChartTableFigure, { table: chartFallback(block) });
|
|
23
|
+
}
|
|
24
|
+
export function RichAnswerBlock({ block, onReply, renderers: own, }) {
|
|
7
25
|
const id = useId();
|
|
8
26
|
const [selected, setSelected] = useState(null);
|
|
9
27
|
const [sent, setSent] = useState(false);
|
|
10
28
|
const [photo, setPhoto] = useState(null);
|
|
29
|
+
const renderers = useRichRenderers(own);
|
|
30
|
+
if (block.type === "chart")
|
|
31
|
+
return _jsx(ChartFigure, { block: block, renderers: renderers });
|
|
11
32
|
if (block.type === "audio")
|
|
12
33
|
return (_jsxs("figure", { className: "ck-rich ck-audio", children: [_jsx("figcaption", { className: "ck-rich-title", children: block.title }), block.creator && _jsx("p", { children: block.creator }), _jsx("audio", { controls: true, preload: "none", src: block.src, "aria-label": block.title }), block.caption && _jsx("p", { children: block.caption }), _jsxs("a", { href: block.src, target: "_blank", rel: "noopener noreferrer", children: [block.title, " \u2197"] })] }));
|
|
13
34
|
if (block.type === "gallery") {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RichBlock.js","sourceRoot":"","sources":["../../src/react/RichBlock.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAsB,MAAM,OAAO,CAAC;AAE5D,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"RichBlock.js","sourceRoot":"","sources":["../../src/react/RichBlock.tsx"],"names":[],"mappings":"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"}
|
package/dist/react/Screen.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { type ReactNode } from "react";
|
|
2
|
+
import { type RichRenderers } from "./renderers.js";
|
|
2
3
|
/**
|
|
3
4
|
* The chat as the whole screen, the way the ChatGPT and Claude apps lay it
|
|
4
5
|
* out: the conversation runs edge to edge and top to bottom, and the controls
|
|
@@ -17,7 +18,14 @@ import { type ReactNode } from "react";
|
|
|
17
18
|
*
|
|
18
19
|
* chatkit's own `ChatThread` does that already.
|
|
19
20
|
*/
|
|
20
|
-
export declare function ChatScreen({ header, composer, footnote, children, fill, className, }: {
|
|
21
|
+
export declare function ChatScreen({ header, composer, footnote, children, fill, className, renderers, }: {
|
|
22
|
+
/**
|
|
23
|
+
* The app's drawing for chart blocks in every answer on this screen:
|
|
24
|
+
* `{ chart: (block) => <Chart … /> }`. Reaches chatkit's thread and
|
|
25
|
+
* `Markdown` wherever they render under it; a `renderers` prop on one of
|
|
26
|
+
* them overrides it there.
|
|
27
|
+
*/
|
|
28
|
+
renderers?: RichRenderers;
|
|
21
29
|
/** Floats over the top of the conversation. Give its buttons `ck-glass`. */
|
|
22
30
|
header?: ReactNode;
|
|
23
31
|
/** The composer (and anything that belongs with it: an error, a queue). */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Screen.d.ts","sourceRoot":"","sources":["../../src/react/Screen.tsx"],"names":[],"mappings":"AAEA,OAAO,EAA2B,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"Screen.d.ts","sourceRoot":"","sources":["../../src/react/Screen.tsx"],"names":[],"mappings":"AAEA,OAAO,EAA2B,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAEhE,OAAO,EAAwB,KAAK,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAE1E;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,UAAU,CAAC,EACzB,MAAM,EACN,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,IAAe,EACf,SAAS,EACT,SAAS,GACV,EAAE;IACD;;;;;OAKG;IACH,SAAS,CAAC,EAAE,aAAa,CAAC;IAC1B,4EAA4E;IAC5E,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,2EAA2E;IAC3E,QAAQ,EAAE,SAAS,CAAC;IACpB,kEAAkE;IAClE,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,kEAAkE;IAClE,QAAQ,EAAE,SAAS,CAAC;IACpB;;;;OAIG;IACH,IAAI,CAAC,EAAE,QAAQ,GAAG,UAAU,CAAC;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,+BAmDA"}
|
package/dist/react/Screen.js
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
3
|
import { useLayoutEffect, useRef } from "react";
|
|
4
4
|
import { useViewportHeight } from "./hooks.js";
|
|
5
|
+
import { RichRenderersContext } from "./renderers.js";
|
|
5
6
|
/**
|
|
6
7
|
* The chat as the whole screen, the way the ChatGPT and Claude apps lay it
|
|
7
8
|
* out: the conversation runs edge to edge and top to bottom, and the controls
|
|
@@ -20,7 +21,7 @@ import { useViewportHeight } from "./hooks.js";
|
|
|
20
21
|
*
|
|
21
22
|
* chatkit's own `ChatThread` does that already.
|
|
22
23
|
*/
|
|
23
|
-
export function ChatScreen({ header, composer, footnote, children, fill = "parent", className, }) {
|
|
24
|
+
export function ChatScreen({ header, composer, footnote, children, fill = "parent", className, renderers, }) {
|
|
24
25
|
const rootRef = useRef(null);
|
|
25
26
|
const headerRef = useRef(null);
|
|
26
27
|
const dockRef = useRef(null);
|
|
@@ -51,6 +52,6 @@ export function ChatScreen({ header, composer, footnote, children, fill = "paren
|
|
|
51
52
|
cls.push("ck-screen-viewport");
|
|
52
53
|
if (className)
|
|
53
54
|
cls.push(className);
|
|
54
|
-
return (_jsxs("div", { ref: rootRef, className: cls.join(" "), children: [_jsx("div", { className: "ck-screen-body", children: children }), hasHeader && (_jsx("div", { ref: headerRef, className: "ck-screen-header", children: _jsx("div", { className: "ck-screen-header-row", children: header }) })), _jsx("div", { ref: dockRef, className: "ck-screen-dock", children: _jsxs("div", { className: "ck-screen-column", children: [composer, footnote != null && _jsx("p", { className: "ck-screen-footnote", children: footnote })] }) })] }));
|
|
55
|
+
return (_jsxs("div", { ref: rootRef, className: cls.join(" "), children: [_jsx("div", { className: "ck-screen-body", children: renderers ? (_jsx(RichRenderersContext.Provider, { value: renderers, children: children })) : (children) }), hasHeader && (_jsx("div", { ref: headerRef, className: "ck-screen-header", children: _jsx("div", { className: "ck-screen-header-row", children: header }) })), _jsx("div", { ref: dockRef, className: "ck-screen-dock", children: _jsxs("div", { className: "ck-screen-column", children: [composer, footnote != null && _jsx("p", { className: "ck-screen-footnote", children: footnote })] }) })] }));
|
|
55
56
|
}
|
|
56
57
|
//# sourceMappingURL=Screen.js.map
|
package/dist/react/Screen.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Screen.js","sourceRoot":"","sources":["../../src/react/Screen.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAAE,eAAe,EAAE,MAAM,EAAkB,MAAM,OAAO,CAAC;AAChE,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"Screen.js","sourceRoot":"","sources":["../../src/react/Screen.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAAE,eAAe,EAAE,MAAM,EAAkB,MAAM,OAAO,CAAC;AAChE,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,EAAE,oBAAoB,EAAsB,MAAM,gBAAgB,CAAC;AAE1E;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,UAAU,CAAC,EACzB,MAAM,EACN,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,IAAI,GAAG,QAAQ,EACf,SAAS,EACT,SAAS,GAwBV;IACC,MAAM,OAAO,GAAG,MAAM,CAAwB,IAAI,CAAC,CAAC;IACpD,MAAM,SAAS,GAAG,MAAM,CAAwB,IAAI,CAAC,CAAC;IACtD,MAAM,OAAO,GAAG,MAAM,CAAwB,IAAI,CAAC,CAAC;IACpD,iBAAiB,CAAC,OAAO,EAAE,IAAI,KAAK,UAAU,CAAC,CAAC;IAChD,MAAM,SAAS,GAAG,MAAM,IAAI,IAAI,IAAI,MAAM,KAAK,KAAK,CAAC;IAErD,wEAAwE;IACxE,0EAA0E;IAC1E,eAAe,CAAC,GAAG,EAAE;QACnB,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC;QAC7B,IAAI,CAAC,IAAI;YAAE,OAAO;QAClB,MAAM,IAAI,GAAG,GAAG,EAAE;YAChB,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,gBAAgB,EAAE,GAAG,SAAS,CAAC,OAAO,EAAE,YAAY,IAAI,CAAC,IAAI,CAAC,CAAC;YACtF,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,mBAAmB,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,YAAY,IAAI,CAAC,IAAI,CAAC,CAAC;QACzF,CAAC,CAAC;QACF,IAAI,EAAE,CAAC;QACP,IAAI,OAAO,cAAc,KAAK,WAAW;YAAE,OAAO;QAClD,MAAM,QAAQ,GAAG,IAAI,cAAc,CAAC,IAAI,CAAC,CAAC;QAC1C,IAAI,SAAS,CAAC,OAAO;YAAE,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QAC3D,IAAI,OAAO,CAAC,OAAO;YAAE,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACvD,OAAO,GAAG,EAAE,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC;IACrC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;IAEhB,MAAM,GAAG,GAAG,CAAC,WAAW,CAAC,CAAC;IAC1B,IAAI,IAAI,KAAK,UAAU;QAAE,GAAG,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;IACxD,IAAI,SAAS;QAAE,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACnC,OAAO,CACL,eAAK,GAAG,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,aACzC,cAAK,SAAS,EAAC,gBAAgB,YAC5B,SAAS,CAAC,CAAC,CAAC,CACX,KAAC,oBAAoB,CAAC,QAAQ,IAAC,KAAK,EAAE,SAAS,YAC5C,QAAQ,GACqB,CACjC,CAAC,CAAC,CAAC,CACF,QAAQ,CACT,GACG,EACL,SAAS,IAAI,CACZ,cAAK,GAAG,EAAE,SAAS,EAAE,SAAS,EAAC,kBAAkB,YAC/C,cAAK,SAAS,EAAC,sBAAsB,YAAE,MAAM,GAAO,GAChD,CACP,EACD,cAAK,GAAG,EAAE,OAAO,EAAE,SAAS,EAAC,gBAAgB,YAC3C,eAAK,SAAS,EAAC,kBAAkB,aAC9B,QAAQ,EACR,QAAQ,IAAI,IAAI,IAAI,YAAG,SAAS,EAAC,oBAAoB,YAAE,QAAQ,GAAK,IACjE,GACF,IACF,CACP,CAAC;AACJ,CAAC"}
|
package/dist/react/Thread.d.ts
CHANGED
|
@@ -3,6 +3,7 @@ import { type CitationMap, type RenderLink } from "./Markdown.js";
|
|
|
3
3
|
import type { Speaker } from "../speech.js";
|
|
4
4
|
import { type AnswerActionsLabels } from "./AnswerActions.js";
|
|
5
5
|
import type { AnswerFeedback } from "../review.js";
|
|
6
|
+
import type { RichRenderers } from "./renderers.js";
|
|
6
7
|
export type ChatSpeaker = {
|
|
7
8
|
/** Shown above the message when more than one agent can answer. */
|
|
8
9
|
name: string;
|
|
@@ -64,10 +65,12 @@ export declare const DEFAULT_THREAD_LABELS: ThreadLabels;
|
|
|
64
65
|
* no box, because it is the thing being READ. Copy is on every answer; Retry
|
|
65
66
|
* only on the last one (retrying an older turn would fork the thread).
|
|
66
67
|
*/
|
|
67
|
-
export declare function ChatMessage({ message, onRetry, renderLink, showSpeaker, footer, last, onReply, speaker, share, onFeedback, labels, }: {
|
|
68
|
+
export declare function ChatMessage({ message, onRetry, renderLink, showSpeaker, footer, last, onReply, speaker, share, onFeedback, renderers, labels, }: {
|
|
68
69
|
message: ChatMessageData;
|
|
69
70
|
/** Thumbs under the answer; the product keeps and exports what it learns. */
|
|
70
71
|
onFeedback?: (feedback: AnswerFeedback) => void;
|
|
72
|
+
/** The app's drawing for chart blocks (`{ chart }`); without it, a table. */
|
|
73
|
+
renderers?: RichRenderers;
|
|
71
74
|
/** The app's voice for Listen (the browser's without it). */
|
|
72
75
|
speaker?: Speaker | null;
|
|
73
76
|
/** What Share hands to the system sheet. `false` hides Share. */
|
|
@@ -120,10 +123,16 @@ export declare function ThinkingRow({ thinking, live, labels, }: {
|
|
|
120
123
|
* bottom, with a button back down once they are not; a turn in flight can be
|
|
121
124
|
* stopped from where it is being written.
|
|
122
125
|
*/
|
|
123
|
-
export declare function ChatThread({ messages, live, loading, stopped, onStop, onRetry, onReply, renderLink, renderFooter, showSpeakers, speaker, share, onFeedback, empty, children, labels: labelOverrides, }: {
|
|
126
|
+
export declare function ChatThread({ messages, live, loading, stopped, onStop, onRetry, onReply, renderLink, renderFooter, showSpeakers, speaker, share, onFeedback, renderers, empty, children, labels: labelOverrides, }: {
|
|
124
127
|
messages: ChatMessageData[];
|
|
125
128
|
/** Thumbs under every answer (chatkit's feedback loop, README). */
|
|
126
129
|
onFeedback?: (feedback: AnswerFeedback) => void;
|
|
130
|
+
/**
|
|
131
|
+
* The app's drawing for chart blocks: `{ chart: (block) => <Chart … /> }`.
|
|
132
|
+
* Without it (or when it returns null) chatkit shows the caption and a
|
|
133
|
+
* table of the data. `ChatScreen renderers` sets the same for every answer.
|
|
134
|
+
*/
|
|
135
|
+
renderers?: RichRenderers;
|
|
127
136
|
/** The app's voice for Listen under every answer (the browser's without it). */
|
|
128
137
|
speaker?: Speaker | null;
|
|
129
138
|
/** What Share hands to the system sheet. `false` hides Share. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Thread.d.ts","sourceRoot":"","sources":["../../src/react/Thread.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,EAA+B,KAAK,WAAW,EAAE,KAAK,UAAU,EAAE,MAAM,eAAe,CAAC;AAG/F,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAGL,KAAK,mBAAmB,EACzB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"Thread.d.ts","sourceRoot":"","sources":["../../src/react/Thread.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,EAA+B,KAAK,WAAW,EAAE,KAAK,UAAU,EAAE,MAAM,eAAe,CAAC;AAG/F,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAGL,KAAK,mBAAmB,EACzB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAGpD,MAAM,MAAM,WAAW,GAAG;IACxB,mEAAmE;IACnE,IAAI,EAAE,MAAM,CAAC;IACb,oEAAoE;IACpE,EAAE,CAAC,EAAE,MAAM,CAAC;CACb,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,GAAG,WAAW,CAAC;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,SAAS,CAAC,EAAE,WAAW,CAAC;IACxB,wEAAwE;IACxE,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB;;;;OAIG;IACH,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5B;;;;OAIG;IACH,QAAQ,CAAC,EAAE,QAAQ,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AACF,MAAM,MAAM,QAAQ,GAAG;IACrB,yCAAyC;IACzC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,6EAA6E;IAC7E,KAAK,CAAC,EAAE,SAAS,YAAY,EAAE,CAAC;IAChC,gEAAgE;IAChE,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF;mDACmD;AACnD,wBAAgB,sBAAsB,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAMzD;AAED,MAAM,MAAM,YAAY,GAAG,mBAAmB,GAAG;IAC/C,kFAAkF;IAClF,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,eAAO,MAAM,qBAAqB,EAAE,YAWnC,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,EAC1B,OAAO,EACP,OAAO,EACP,UAA8B,EAC9B,WAAkB,EAClB,MAAM,EACN,IAAY,EACZ,OAAO,EACP,OAAO,EACP,KAAK,EACL,UAAU,EACV,SAAS,EACT,MAA8B,GAC/B,EAAE;IACD,OAAO,EAAE,eAAe,CAAC;IACzB,6EAA6E;IAC7E,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,cAAc,KAAK,IAAI,CAAC;IAChD,6EAA6E;IAC7E,SAAS,CAAC,EAAE,aAAa,CAAC;IAC1B,6DAA6D;IAC7D,OAAO,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IACzB,iEAAiE;IACjE,KAAK,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,KAAK,CAAC;IACjD,qEAAqE;IACrE,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACjC,iFAAiF;IACjF,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,qDAAqD;IACrD,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,6DAA6D;IAC7D,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,MAAM,CAAC,EAAE,YAAY,CAAC;CACvB,+BA4DA;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,EAC1B,OAAO,EACP,MAAM,EACN,KAAqC,EACrC,QAAgB,GACjB,EAAE;IACD,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3B,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,sCAoBA;AAED,MAAM,MAAM,QAAQ,GAAG;IACrB,mCAAmC;IACnC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,wEAAwE;IACxE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,qEAAqE;IACrE,KAAK,CAAC,EAAE,SAAS,YAAY,EAAE,CAAC;IAChC,OAAO,CAAC,EAAE,WAAW,CAAC;CACvB,CAAC;AAEF;;;GAGG;AACH,wBAAgB,WAAW,CAAC,EAC1B,QAAQ,EACR,IAAY,EACZ,MAA8B,GAC/B,EAAE;IACD,QAAQ,EAAE,QAAQ,CAAC;IACnB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,YAAY,CAAC;CACvB,sCAyDA;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,EACzB,QAAQ,EACR,IAAW,EACX,OAAe,EACf,OAAe,EACf,MAAM,EACN,OAAO,EACP,OAAO,EACP,UAA8B,EAC9B,YAAY,EACZ,YAAY,EACZ,OAAO,EACP,KAAK,EACL,UAAU,EACV,SAAS,EACT,KAAK,EACL,QAAQ,EACR,MAAM,EAAE,cAAc,GACvB,EAAE;IACD,QAAQ,EAAE,eAAe,EAAE,CAAC;IAC5B,mEAAmE;IACnE,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,cAAc,KAAK,IAAI,CAAC;IAChD;;;;OAIG;IACH,SAAS,CAAC,EAAE,aAAa,CAAC;IAC1B,gFAAgF;IAChF,OAAO,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IACzB,iEAAiE;IACjE,KAAK,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,KAAK,CAAC;IACjD,IAAI,CAAC,EAAE,QAAQ,GAAG,IAAI,CAAC;IACvB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,mDAAmD;IACnD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,kEAAkE;IAClE,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB;;;;OAIG;IACH,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACjC,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,sEAAsE;IACtE,YAAY,CAAC,EAAE,CAAC,CAAC,EAAE,eAAe,KAAK,SAAS,CAAC;IACjD,uEAAuE;IACvE,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,uEAAuE;IACvE,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,8CAA8C;IAC9C,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,MAAM,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;CAChC,+BA+FA;AAED,MAAM,MAAM,OAAO,GAAG,MAAM,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAElE,8EAA8E;AAC9E,wBAAgB,YAAY,CAAC,EAC3B,QAAQ,EACR,MAAM,EACN,KAAK,GACN,EAAE;IACD,QAAQ,EAAE,SAAS,OAAO,EAAE,CAAC;IAC7B,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACjC,KAAK,CAAC,EAAE,SAAS,CAAC;CACnB,+BAiBA"}
|
package/dist/react/Thread.js
CHANGED
|
@@ -34,7 +34,7 @@ export const DEFAULT_THREAD_LABELS = {
|
|
|
34
34
|
* no box, because it is the thing being READ. Copy is on every answer; Retry
|
|
35
35
|
* only on the last one (retrying an older turn would fork the thread).
|
|
36
36
|
*/
|
|
37
|
-
export function ChatMessage({ message, onRetry, renderLink = defaultRenderLink, showSpeaker = true, footer, last = false, onReply, speaker, share, onFeedback, labels = DEFAULT_THREAD_LABELS, }) {
|
|
37
|
+
export function ChatMessage({ message, onRetry, renderLink = defaultRenderLink, showSpeaker = true, footer, last = false, onReply, speaker, share, onFeedback, renderers, labels = DEFAULT_THREAD_LABELS, }) {
|
|
38
38
|
if (message.role === "user") {
|
|
39
39
|
return (_jsx("div", { className: "ck-turn ck-turn-user", children: _jsx("div", { className: "ck-bubble", children: message.content }) }));
|
|
40
40
|
}
|
|
@@ -48,7 +48,7 @@ export function ChatMessage({ message, onRetry, renderLink = defaultRenderLink,
|
|
|
48
48
|
// a phone must not stand between them.
|
|
49
49
|
if (last || message.failed)
|
|
50
50
|
cls.push("ck-turn-pinned");
|
|
51
|
-
return (_jsxs("div", { className: cls.join(" "), children: [showSpeaker && message.speaker && _jsx("span", { className: "ck-speaker", children: message.speaker.name }), message.thinking && _jsx(ThinkingRow, { thinking: message.thinking, labels: labels }), message.failed ? (_jsx("p", { className: "ck-failed", role: "status", children: message.content || labels.failed })) : (_jsx(Markdown, { text: parsed.text, citations: message.citations, renderLink: renderLink, onReply: last ? onReply : undefined })), footer, message.failed ? (onRetry && (_jsx("div", { className: "ck-turn-actions", children: _jsxs("button", { type: "button", className: "ck-action", onClick: onRetry, children: [_jsx(IconRetry, {}), _jsx("span", { children: labels.retry })] }) }))) : (_jsx(AnswerActions, { text: parsed.text, onRetry: onRetry, speaker: speaker, share: share, labels: labels, messageId: message.id, onFeedback: onFeedback })), last && onReply && !message.failed && replies.length > 0 && (_jsx(ChatReplies, { replies: replies, onPick: onReply, label: labels.replies }))] }));
|
|
51
|
+
return (_jsxs("div", { className: cls.join(" "), children: [showSpeaker && message.speaker && _jsx("span", { className: "ck-speaker", children: message.speaker.name }), message.thinking && _jsx(ThinkingRow, { thinking: message.thinking, labels: labels }), message.failed ? (_jsx("p", { className: "ck-failed", role: "status", children: message.content || labels.failed })) : (_jsx(Markdown, { text: parsed.text, citations: message.citations, renderLink: renderLink, onReply: last ? onReply : undefined, renderers: renderers })), footer, message.failed ? (onRetry && (_jsx("div", { className: "ck-turn-actions", children: _jsxs("button", { type: "button", className: "ck-action", onClick: onRetry, children: [_jsx(IconRetry, {}), _jsx("span", { children: labels.retry })] }) }))) : (_jsx(AnswerActions, { text: parsed.text, onRetry: onRetry, speaker: speaker, share: share, labels: labels, messageId: message.id, onFeedback: onFeedback })), last && onReply && !message.failed && replies.length > 0 && (_jsx(ChatReplies, { replies: replies, onPick: onReply, label: labels.replies }))] }));
|
|
52
52
|
}
|
|
53
53
|
/**
|
|
54
54
|
* The replies under an answer. Exported for apps that render their own
|
|
@@ -84,7 +84,7 @@ export function ThinkingRow({ thinking, live = false, labels = DEFAULT_THREAD_LA
|
|
|
84
84
|
* bottom, with a button back down once they are not; a turn in flight can be
|
|
85
85
|
* stopped from where it is being written.
|
|
86
86
|
*/
|
|
87
|
-
export function ChatThread({ messages, live = null, loading = false, stopped = false, onStop, onRetry, onReply, renderLink = defaultRenderLink, renderFooter, showSpeakers, speaker, share, onFeedback, empty, children, labels: labelOverrides, }) {
|
|
87
|
+
export function ChatThread({ messages, live = null, loading = false, stopped = false, onStop, onRetry, onReply, renderLink = defaultRenderLink, renderFooter, showSpeakers, speaker, share, onFeedback, renderers, empty, children, labels: labelOverrides, }) {
|
|
88
88
|
const labels = { ...DEFAULT_THREAD_LABELS, ...labelOverrides };
|
|
89
89
|
const { scrollRef, endRef, following, onScroll, jumpToBottom } = useStickToBottom([messages.length, live?.text, live?.status, live?.steps?.length, stopped], messages.length);
|
|
90
90
|
if (loading) {
|
|
@@ -95,7 +95,7 @@ export function ChatThread({ messages, live = null, loading = false, stopped = f
|
|
|
95
95
|
const speakers = new Set([...messages.map((m) => m.speaker?.name), live?.speaker?.name].filter(Boolean));
|
|
96
96
|
const named = showSpeakers ?? speakers.size > 1;
|
|
97
97
|
const lastAnswer = [...messages].reverse().find((m) => m.role === "assistant");
|
|
98
|
-
return (_jsxs("div", { className: "ck-thread-wrap", children: [_jsx("div", { ref: scrollRef, className: "ck-thread", onScroll: onScroll, children: _jsxs("div", { className: "ck-thread-inner", children: [messages.map((m) => (_jsx(ChatMessage, { message: m, onRetry: onRetry && m.id === lastAnswer?.id && !live ? onRetry : undefined, renderLink: renderLink, showSpeaker: named, footer: renderFooter?.(m), last: m.id === lastAnswer?.id, onReply: live || stopped ? undefined : onReply, speaker: speaker, share: share, onFeedback: onFeedback, labels: labels }, m.id))), live && (_jsxs("div", { className: "ck-turn ck-turn-answer", children: [named && live.speaker && _jsx("span", { className: "ck-speaker", children: live.speaker.name }), live.steps && live.steps.length > 0 && (_jsx(ThinkingRow, { thinking: { steps: live.steps }, live: true, labels: labels })), live.text ? (_jsx(Markdown, { text: extractReplies(live.text).text, renderLink: renderLink })) : live.steps && live.steps.length > 0 ? null : (_jsxs("p", { className: "ck-live", role: "status", "aria-live": "polite", children: [_jsxs("span", { className: "ck-dots", "aria-hidden": true, children: [_jsx("span", {}), _jsx("span", {}), _jsx("span", {})] }), live.status ?? labels.working] })), onStop && (_jsxs("button", { type: "button", className: "ck-stop", onClick: onStop, children: [_jsx(IconStop, {}), labels.stop] }))] })), stopped && !live && (_jsx("p", { className: "ck-stopped", role: "status", children: labels.stopped })), children, _jsx("div", { ref: endRef })] }) }), !following && (_jsx("button", { type: "button", className: "ck-jump", onClick: jumpToBottom, "aria-label": labels.jump, title: labels.jump, children: _jsx(IconArrowDown, {}) }))] }));
|
|
98
|
+
return (_jsxs("div", { className: "ck-thread-wrap", children: [_jsx("div", { ref: scrollRef, className: "ck-thread", onScroll: onScroll, children: _jsxs("div", { className: "ck-thread-inner", children: [messages.map((m) => (_jsx(ChatMessage, { message: m, onRetry: onRetry && m.id === lastAnswer?.id && !live ? onRetry : undefined, renderLink: renderLink, showSpeaker: named, footer: renderFooter?.(m), last: m.id === lastAnswer?.id, onReply: live || stopped ? undefined : onReply, speaker: speaker, share: share, onFeedback: onFeedback, renderers: renderers, labels: labels }, m.id))), live && (_jsxs("div", { className: "ck-turn ck-turn-answer", children: [named && live.speaker && _jsx("span", { className: "ck-speaker", children: live.speaker.name }), live.steps && live.steps.length > 0 && (_jsx(ThinkingRow, { thinking: { steps: live.steps }, live: true, labels: labels })), live.text ? (_jsx(Markdown, { text: extractReplies(live.text).text, renderLink: renderLink, renderers: renderers })) : live.steps && live.steps.length > 0 ? null : (_jsxs("p", { className: "ck-live", role: "status", "aria-live": "polite", children: [_jsxs("span", { className: "ck-dots", "aria-hidden": true, children: [_jsx("span", {}), _jsx("span", {}), _jsx("span", {})] }), live.status ?? labels.working] })), onStop && (_jsxs("button", { type: "button", className: "ck-stop", onClick: onStop, children: [_jsx(IconStop, {}), labels.stop] }))] })), stopped && !live && (_jsx("p", { className: "ck-stopped", role: "status", children: labels.stopped })), children, _jsx("div", { ref: endRef })] }) }), !following && (_jsx("button", { type: "button", className: "ck-jump", onClick: jumpToBottom, "aria-label": labels.jump, title: labels.jump, children: _jsx(IconArrowDown, {}) }))] }));
|
|
99
99
|
}
|
|
100
100
|
/** The empty state that starts a conversation. It disappears once one has. */
|
|
101
101
|
export function ChatStarters({ starters, onPick, title, }) {
|
package/dist/react/Thread.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Thread.js","sourceRoot":"","sources":["../../src/react/Thread.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAGb,OAAO,EAAE,QAAQ,EAAE,iBAAiB,EAAqC,MAAM,eAAe,CAAC;AAC/F,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAE/C,OAAO,EACL,aAAa,EACb,6BAA6B,GAE9B,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"Thread.js","sourceRoot":"","sources":["../../src/react/Thread.tsx"],"names":[],"mappings":"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"}
|
package/dist/react/index.d.ts
CHANGED
|
@@ -26,5 +26,7 @@ export type { AttachMenuLabels } from "./AttachMenu.js";
|
|
|
26
26
|
export { useAttachments } from "./use-attachments.js";
|
|
27
27
|
export type { AttachmentsController } from "./use-attachments.js";
|
|
28
28
|
export { useClipboard, useStickToBottom, useViewportHeight, useAutoGrow } from "./hooks.js";
|
|
29
|
-
export { RichAnswerBlock } from "./RichBlock.js";
|
|
29
|
+
export { RichAnswerBlock, ChartTableFigure } from "./RichBlock.js";
|
|
30
|
+
export { RichRenderersContext, useRichRenderers } from "./renderers.js";
|
|
31
|
+
export type { RichRenderers } from "./renderers.js";
|
|
30
32
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/react/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,EAAE,QAAQ,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AAClE,YAAY,EACV,aAAa,EACb,cAAc,EACd,sBAAsB,EACtB,aAAa,GACd,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,UAAU,EACV,WAAW,EACX,WAAW,EACX,YAAY,EACZ,WAAW,EACX,sBAAsB,EACtB,qBAAqB,GACtB,MAAM,aAAa,CAAC;AACrB,YAAY,EACV,eAAe,EACf,WAAW,EACX,QAAQ,EACR,OAAO,EACP,QAAQ,EACR,YAAY,EACZ,YAAY,GACb,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAC/F,OAAO,EAAE,aAAa,EAAE,6BAA6B,EAAE,MAAM,oBAAoB,CAAC;AAClF,YAAY,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,YAAY,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AACjD,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC5F,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,YAAY,EAAE,mBAAmB,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACpG,OAAO,EAAE,UAAU,EAAE,0BAA0B,EAAE,MAAM,iBAAiB,CAAC;AACzE,YAAY,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,YAAY,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAClE,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC5F,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/react/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,EAAE,QAAQ,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AAClE,YAAY,EACV,aAAa,EACb,cAAc,EACd,sBAAsB,EACtB,aAAa,GACd,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,UAAU,EACV,WAAW,EACX,WAAW,EACX,YAAY,EACZ,WAAW,EACX,sBAAsB,EACtB,qBAAqB,GACtB,MAAM,aAAa,CAAC;AACrB,YAAY,EACV,eAAe,EACf,WAAW,EACX,QAAQ,EACR,OAAO,EACP,QAAQ,EACR,YAAY,EACZ,YAAY,GACb,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAC/F,OAAO,EAAE,aAAa,EAAE,6BAA6B,EAAE,MAAM,oBAAoB,CAAC;AAClF,YAAY,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,YAAY,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AACjD,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC5F,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,YAAY,EAAE,mBAAmB,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACpG,OAAO,EAAE,UAAU,EAAE,0BAA0B,EAAE,MAAM,iBAAiB,CAAC;AACzE,YAAY,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,YAAY,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAClE,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC5F,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AACxE,YAAY,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC"}
|
package/dist/react/index.js
CHANGED
|
@@ -18,5 +18,6 @@ export { useDictation } from "./use-dictation.js";
|
|
|
18
18
|
export { AttachMenu, DEFAULT_ATTACH_MENU_LABELS } from "./AttachMenu.js";
|
|
19
19
|
export { useAttachments } from "./use-attachments.js";
|
|
20
20
|
export { useClipboard, useStickToBottom, useViewportHeight, useAutoGrow } from "./hooks.js";
|
|
21
|
-
export { RichAnswerBlock } from "./RichBlock.js";
|
|
21
|
+
export { RichAnswerBlock, ChartTableFigure } from "./RichBlock.js";
|
|
22
|
+
export { RichRenderersContext, useRichRenderers } from "./renderers.js";
|
|
22
23
|
//# sourceMappingURL=index.js.map
|
package/dist/react/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/react/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,EAAE,QAAQ,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AAOlE,OAAO,EACL,UAAU,EACV,WAAW,EACX,WAAW,EACX,YAAY,EACZ,WAAW,EACX,sBAAsB,EACtB,qBAAqB,GACtB,MAAM,aAAa,CAAC;AAUrB,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAC/F,OAAO,EAAE,aAAa,EAAE,6BAA6B,EAAE,MAAM,oBAAoB,CAAC;AAElF,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAEjD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,OAAO,EAAE,UAAU,EAAE,0BAA0B,EAAE,MAAM,iBAAiB,CAAC;AAEzE,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC5F,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/react/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,EAAE,QAAQ,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AAOlE,OAAO,EACL,UAAU,EACV,WAAW,EACX,WAAW,EACX,YAAY,EACZ,WAAW,EACX,sBAAsB,EACtB,qBAAqB,GACtB,MAAM,aAAa,CAAC;AAUrB,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAC/F,OAAO,EAAE,aAAa,EAAE,6BAA6B,EAAE,MAAM,oBAAoB,CAAC;AAElF,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAEjD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,OAAO,EAAE,UAAU,EAAE,0BAA0B,EAAE,MAAM,iBAAiB,CAAC;AAEzE,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC5F,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { type ReactNode } from "react";
|
|
2
|
+
import type { ChartBlock } from "../chart.js";
|
|
3
|
+
/**
|
|
4
|
+
* The drawing an app injects into answers. chatkit stays dependency-free:
|
|
5
|
+
* it validates the data and leaves the slot; the app fills it.
|
|
6
|
+
*
|
|
7
|
+
* <ChatThread renderers={{ chart: (b) => <Chart {...b} /> }} … />
|
|
8
|
+
*
|
|
9
|
+
* A renderer that returns `null` hands the block back to chatkit's own
|
|
10
|
+
* fallback (the caption and a table of the data), so an app can draw the
|
|
11
|
+
* kinds it has a component for and leave the rest readable.
|
|
12
|
+
*/
|
|
13
|
+
export type RichRenderers = {
|
|
14
|
+
chart?: (block: ChartBlock) => ReactNode;
|
|
15
|
+
};
|
|
16
|
+
/** Set once at the screen (`ChatScreen renderers`), read by every answer in it. */
|
|
17
|
+
export declare const RichRenderersContext: import("react").Context<RichRenderers | undefined>;
|
|
18
|
+
/** The renderers in force: the prop, over what the screen provided. */
|
|
19
|
+
export declare function useRichRenderers(own?: RichRenderers): RichRenderers | undefined;
|
|
20
|
+
//# sourceMappingURL=renderers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"renderers.d.ts","sourceRoot":"","sources":["../../src/react/renderers.ts"],"names":[],"mappings":"AAEA,OAAO,EAA6B,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAClE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9C;;;;;;;;;GASG;AACH,MAAM,MAAM,aAAa,GAAG;IAC1B,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,SAAS,CAAC;CAC1C,CAAC;AAEF,mFAAmF;AACnF,eAAO,MAAM,oBAAoB,oDAAsD,CAAC;AAExF,uEAAuE;AACvE,wBAAgB,gBAAgB,CAAC,GAAG,CAAC,EAAE,aAAa,GAAG,aAAa,GAAG,SAAS,CAK/E"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { createContext, useContext } from "react";
|
|
3
|
+
/** Set once at the screen (`ChatScreen renderers`), read by every answer in it. */
|
|
4
|
+
export const RichRenderersContext = createContext(undefined);
|
|
5
|
+
/** The renderers in force: the prop, over what the screen provided. */
|
|
6
|
+
export function useRichRenderers(own) {
|
|
7
|
+
const inherited = useContext(RichRenderersContext);
|
|
8
|
+
if (!own)
|
|
9
|
+
return inherited;
|
|
10
|
+
if (!inherited)
|
|
11
|
+
return own;
|
|
12
|
+
return { ...inherited, ...own };
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=renderers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"renderers.js","sourceRoot":"","sources":["../../src/react/renderers.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,EAAE,aAAa,EAAE,UAAU,EAAkB,MAAM,OAAO,CAAC;AAiBlE,mFAAmF;AACnF,MAAM,CAAC,MAAM,oBAAoB,GAAG,aAAa,CAA4B,SAAS,CAAC,CAAC;AAExF,uEAAuE;AACvE,MAAM,UAAU,gBAAgB,CAAC,GAAmB;IAClD,MAAM,SAAS,GAAG,UAAU,CAAC,oBAAoB,CAAC,CAAC;IACnD,IAAI,CAAC,GAAG;QAAE,OAAO,SAAS,CAAC;IAC3B,IAAI,CAAC,SAAS;QAAE,OAAO,GAAG,CAAC;IAC3B,OAAO,EAAE,GAAG,SAAS,EAAE,GAAG,GAAG,EAAE,CAAC;AAClC,CAAC"}
|
package/dist/rich.d.ts
CHANGED
|
@@ -1,5 +1,9 @@
|
|
|
1
|
+
import { type ChartBlock } from "./chart.js";
|
|
2
|
+
export * from "./chart.js";
|
|
1
3
|
/** Declarative answer blocks. Model output is data, never HTML or executable SVG. */
|
|
2
|
-
export type RichBlock =
|
|
4
|
+
export type RichBlock =
|
|
5
|
+
/** A figure drawn by the app's injected renderer (see chart.ts). */
|
|
6
|
+
ChartBlock | {
|
|
3
7
|
type: "audio";
|
|
4
8
|
title: string;
|
|
5
9
|
src: string;
|
package/dist/rich.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rich.d.ts","sourceRoot":"","sources":["../src/rich.ts"],"names":[],"mappings":"AAAA,qFAAqF;AACrF,MAAM,MAAM,SAAS,
|
|
1
|
+
{"version":3,"file":"rich.d.ts","sourceRoot":"","sources":["../src/rich.ts"],"names":[],"mappings":"AAAA,OAAO,EAA6C,KAAK,UAAU,EAAE,MAAM,YAAY,CAAC;AAExF,cAAc,YAAY,CAAC;AAE3B,qFAAqF;AACrF,MAAM,MAAM,SAAS;AACnB,oEAAoE;AAClE,UAAU,GACV;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,GACjF;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;CAAE,GAC5F;IACE,IAAI,EAAE,SAAS,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACxD,KAAK,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CACvD,GACD;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAChD;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAC/F;IACE;;;;;OAKG;IACH,IAAI,EAAE,OAAO,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,UAAU,EAAE,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAEN,MAAM,MAAM,SAAS,GAAG;IACtB,+DAA+D;IAC/D,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,gFAAgF;IAChF,IAAI,CAAC,EAAE,SAAS,GAAG,QAAQ,CAAC;IAC5B,2DAA2D;IAC3D,IAAI,CAAC,EAAE,SAAS,CAAC;CAClB,CAAC;AACF,MAAM,MAAM,UAAU,GAAG;IACvB,KAAK,EAAE,SAAS,EAAE,CAAC;IACnB,0EAA0E;IAC1E,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,gCAAgC;IAChC,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB,CAAC;AACF,kFAAkF;AAClF,eAAO,MAAM,WAAW,6IAed,CAAC;AACX,MAAM,MAAM,SAAS,GAAG,CAAC,OAAO,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC;AASrD,2FAA2F;AAC3F,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAY1D;AAED,4EAA4E;AAC5E,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAiG5D;AAED,eAAO,MAAM,wBAAwB,QAczB,CAAC;AAEb,+EAA+E;AAC/E,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAqCnD"}
|
package/dist/rich.js
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { chartFallback, chartText, parseChartBlock } from "./chart.js";
|
|
2
|
+
export * from "./chart.js";
|
|
1
3
|
/** The icons a stack tile may carry — a closed set, so a name is never markup. */
|
|
2
4
|
export const STACK_ICONS = [
|
|
3
5
|
"agent",
|
|
@@ -45,7 +47,11 @@ export function parseRichBlock(raw) {
|
|
|
45
47
|
catch {
|
|
46
48
|
return null;
|
|
47
49
|
}
|
|
48
|
-
if (!record(b)
|
|
50
|
+
if (!record(b))
|
|
51
|
+
return null;
|
|
52
|
+
if (b.type === "chart")
|
|
53
|
+
return parseChartBlock(b);
|
|
54
|
+
if (!str(b.title, 200))
|
|
49
55
|
return null;
|
|
50
56
|
switch (b.type) {
|
|
51
57
|
case "audio":
|
|
@@ -119,15 +125,25 @@ export const RICH_ANSWERS_INSTRUCTION = [
|
|
|
119
125
|
'{"type":"stack","title":"The complete architecture","layers":[{"nodes":[{"kicker":"USER","label":"Build this","detail":"One conversation, one goal"}],"link":"the goal"},{"nodes":[{"kicker":"CONTROL PLANE","label":"Plan · Dispatch · Verify","tone":"accent"}],"link":"work orders","both":true},{"nodes":[{"icon":"agent","label":"AI agents","detail":"Code, research"},{"icon":"people","label":"People","detail":"Specialists"},{"icon":"robot","label":"Robots","detail":"Move, inspect"}]}],"caption":"Proposed logical architecture — not a claim that every connection exists today."}',
|
|
120
126
|
'{"type":"callout","title":"Recommendation","body":"The useful takeaway."}',
|
|
121
127
|
'{"type":"choices","title":"What would you like next?","options":[{"label":"Explain the first option","reply":"Explain the first option"},{"label":"Compare the alternatives","reply":"Compare the alternatives"}],"submit":"Continue"}',
|
|
128
|
+
'{"type":"chart","chart":"bars","caption":"Gallium production, 2024","unit":"t","highlight":"China","rows":[{"label":"China","value":750,"share":98,"href":"/atlas/china"},{"label":"Japan","value":10,"estimated":true,"note":"Optional"}]}',
|
|
129
|
+
'Other charts, same envelope: "share" with "rows":[{"label","share"(0–100),"href"?}] and "other"?; "line" with "series":[{"id","label","points":[{"x","y","href"?,"note"?}]}]; "timeline" with "events":[{"date","label","href"?,"tone":"up|down|neutral"?}]; "tiles" with "tiles":[{"label","value","href"?,"note"?}].',
|
|
130
|
+
"Draw a chart instead of a list when the figures are there: ranked quantities with 3 or more rows → bars; shares of one whole → share; a quantity over time with 3 or more points → line; 3 or more dated events → timeline; 2–4 headline figures → tiles. Every number comes from a tool result in this conversation — never from memory, and never a chart for a figure the tools did not return. Copy each row's href from the result's page or link, and leave it out when there is none. Say the takeaway in prose too; a reader without the figure still gets the answer.",
|
|
122
131
|
"Use a stack for an architecture, a pipeline or layers of responsibility (top to bottom, at most 8 layers of at most 4 tiles; icons only from: agent, people, robot, person, building, money, document, code, check, globe, wrench, box, chat, flag); use a diagram for an arbitrary graph. When you lay out a few approaches to choose from, write them as a numbered list whose items open with a bold name, and mark the one you recommend with [Recommended] right after the name. Use at most 6 images, 8 diagram nodes, 16 edges, or 6 choices per block. Translate titles, labels and submit into the reader's language. A choice sends its reply as a normal message; it never performs an action directly. Audio uses explicit playback, never autoplay. Include audio only for URLs actually provided by a person, context or a completed tool result; a track title or a planned generation is not a playable file. Preserve creator attribution and distinguish previews, generated drafts and finished recordings. Never invent media URLs, numbers, sources, tool results or product capabilities. Use only image URLs provided by the person, context or tools; otherwise use a diagram or plain text. Always explain the takeaway in prose too. No HTML, scripts, raw SVG, or decorative images. Preserve domain-specific evidence and authority rules. Put suggested replies last, outside chat_ui blocks.",
|
|
123
132
|
].join("\n");
|
|
124
133
|
/** Copy, share and voice keep the content of a visual, never its wire JSON. */
|
|
125
134
|
export function richAnswerText(text) {
|
|
126
135
|
return text.replace(/```chat_ui\s*([\s\S]*?)(?:```|$)/g, (_, raw) => {
|
|
127
136
|
const b = parseRichBlock(raw);
|
|
128
|
-
if (!b)
|
|
129
|
-
|
|
137
|
+
if (!b) {
|
|
138
|
+
// A malformed chart reads as its caption and rows, the way it renders.
|
|
139
|
+
const t = chartFallback(raw);
|
|
140
|
+
return t
|
|
141
|
+
? `${t.caption}\n${t.rows.map((r) => r.cells.filter(Boolean).join(" — ")).join("\n")}`
|
|
142
|
+
: "";
|
|
143
|
+
}
|
|
130
144
|
switch (b.type) {
|
|
145
|
+
case "chart":
|
|
146
|
+
return chartText(b);
|
|
131
147
|
case "audio":
|
|
132
148
|
return `${b.title}${b.creator ? ` — ${b.creator}` : ""}${b.caption ? `\n${b.caption}` : ""}\n${b.src}`;
|
|
133
149
|
case "callout":
|
package/dist/rich.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rich.js","sourceRoot":"","sources":["../src/rich.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"rich.js","sourceRoot":"","sources":["../src/rich.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bitbaum/chatkit",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.15.0",
|
|
4
4
|
"description": "One chat for every product: a composer with a microphone that always works, a thread that does not fight the reader, messages with copy and retry, and LLM markdown \u2014 the fleet's chat standard as a package.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "Cato",
|
package/styles.css
CHANGED
|
@@ -1728,6 +1728,41 @@ a.ck-source-row:hover .ck-source-title {
|
|
|
1728
1728
|
text-align: center;
|
|
1729
1729
|
}
|
|
1730
1730
|
|
|
1731
|
+
/* A chart in an answer (0.15). The drawing is the app's (an injected
|
|
1732
|
+
renderer); chatkit gives it the same place in the column as the stack
|
|
1733
|
+
figure, and draws the fallback — the caption and a table of the data —
|
|
1734
|
+
itself. Numbers are right-aligned tabular figures that never wrap. */
|
|
1735
|
+
.ck-chart {
|
|
1736
|
+
max-width: 100%;
|
|
1737
|
+
}
|
|
1738
|
+
.ck-chart > * {
|
|
1739
|
+
max-width: 100%;
|
|
1740
|
+
}
|
|
1741
|
+
.ck-chart-table .ck-table-wrap {
|
|
1742
|
+
margin: 0;
|
|
1743
|
+
}
|
|
1744
|
+
.ck-chart-num {
|
|
1745
|
+
text-align: right;
|
|
1746
|
+
font-variant-numeric: tabular-nums;
|
|
1747
|
+
white-space: nowrap;
|
|
1748
|
+
}
|
|
1749
|
+
.ck-chart-table .ck-table th:last-child,
|
|
1750
|
+
.ck-chart-table .ck-table td:last-child {
|
|
1751
|
+
padding-right: 0;
|
|
1752
|
+
}
|
|
1753
|
+
.ck-chart-link {
|
|
1754
|
+
color: inherit;
|
|
1755
|
+
text-decoration: underline;
|
|
1756
|
+
text-decoration-color: color-mix(in srgb, var(--ck-accent) 60%, transparent);
|
|
1757
|
+
text-underline-offset: 0.15em;
|
|
1758
|
+
}
|
|
1759
|
+
.ck-chart-caption {
|
|
1760
|
+
margin: 0.875rem 0 0;
|
|
1761
|
+
color: var(--ck-fg-2);
|
|
1762
|
+
font-size: 0.875em;
|
|
1763
|
+
text-align: center;
|
|
1764
|
+
}
|
|
1765
|
+
|
|
1731
1766
|
/* Thumbs under an answer, and the sheet that asks why. */
|
|
1732
1767
|
.ck-action-on {
|
|
1733
1768
|
color: var(--ck-fg);
|