@gea-ai/chat-ui 0.1.260820-alpha.5

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.
@@ -0,0 +1,399 @@
1
+ import { defineCatalog } from "@json-render/core";
2
+ import { schema } from "@json-render/react/schema";
3
+ import z from "zod";
4
+ import { pageEventSchema } from "@gea-ai/contract/page-events";
5
+ export const requestActionFieldOptionSchema = z
6
+ .object({
7
+ label: z.string().min(1),
8
+ value: z.string().min(1),
9
+ })
10
+ .strict();
11
+ const requestActionOptionSchema = z.union([
12
+ z.string().min(1),
13
+ requestActionFieldOptionSchema,
14
+ ]);
15
+ const validationCheckSchema = z
16
+ .array(z.object({
17
+ args: z.record(z.string(), z.unknown()).optional(),
18
+ message: z.string(),
19
+ type: z.string(),
20
+ }))
21
+ .nullable();
22
+ const validateOnSchema = z.enum(["change", "blur", "submit"]).nullable();
23
+ const baseComponentDefinitions = {
24
+ Button: {
25
+ description: "Clickable button. Bind on.press for handler.",
26
+ events: ["press"],
27
+ props: z.object({
28
+ disabled: z.boolean().nullable(),
29
+ label: z.string(),
30
+ variant: z.enum(["primary", "secondary", "danger"]).nullable(),
31
+ }),
32
+ },
33
+ Card: {
34
+ description: "Container card for content sections. Use for forms/content boxes, NOT for page headers.",
35
+ props: z.object({
36
+ centered: z.boolean().nullable(),
37
+ className: z.string().nullable().describe("Additional CSS classes"),
38
+ description: z.string().nullable(),
39
+ maxWidth: z.enum(["sm", "md", "lg", "full"]).nullable(),
40
+ title: z.string().nullable(),
41
+ }),
42
+ slots: ["default"],
43
+ },
44
+ Checkbox: {
45
+ description: "Checkbox input. Use { $bindState } on checked for binding. Use checks for validation. validateOn controls timing (default: change).",
46
+ events: ["change"],
47
+ props: z.object({
48
+ checked: z.boolean().nullable(),
49
+ checks: validationCheckSchema,
50
+ label: z.string(),
51
+ name: z.string(),
52
+ validateOn: validateOnSchema,
53
+ }),
54
+ },
55
+ Grid: {
56
+ description: "Grid layout (1-6 columns)",
57
+ props: z.object({
58
+ className: z.string().nullable().describe("Additional CSS classes"),
59
+ columns: z.number().nullable(),
60
+ gap: z.enum(["sm", "md", "lg", "xl"]).nullable(),
61
+ }),
62
+ slots: ["default"],
63
+ },
64
+ Heading: {
65
+ description: "Heading text (h1-h4)",
66
+ props: z.object({
67
+ level: z.enum(["h1", "h2", "h3", "h4"]).nullable(),
68
+ text: z.string(),
69
+ }),
70
+ },
71
+ Input: {
72
+ description: "Text input field. Use { $bindState } on value for two-way binding. Use checks for validation (e.g. required, email, minLength). validateOn controls timing (default: blur).",
73
+ events: ["submit", "focus", "blur"],
74
+ props: z.object({
75
+ checks: validationCheckSchema,
76
+ label: z.string(),
77
+ name: z.string(),
78
+ placeholder: z.string().nullable(),
79
+ type: z.enum(["text", "email", "password", "number"]).nullable(),
80
+ validateOn: validateOnSchema,
81
+ value: z.string().nullable(),
82
+ }),
83
+ },
84
+ Select: {
85
+ description: "Dropdown select input. Use { $bindState } on value for binding. Use checks for validation. validateOn controls timing (default: change).",
86
+ events: ["change"],
87
+ props: z.object({
88
+ checks: validationCheckSchema,
89
+ label: z.string(),
90
+ name: z.string(),
91
+ options: z.array(z.string()),
92
+ placeholder: z.string().nullable(),
93
+ validateOn: validateOnSchema,
94
+ value: z.string().nullable(),
95
+ }),
96
+ },
97
+ Stack: {
98
+ description: "Flex container for layouts",
99
+ props: z.object({
100
+ align: z.enum(["start", "center", "end", "stretch"]).nullable(),
101
+ className: z.string().nullable().describe("Additional CSS classes"),
102
+ direction: z.enum(["horizontal", "vertical"]).nullable(),
103
+ gap: z.enum(["none", "sm", "md", "lg", "xl"]).nullable(),
104
+ justify: z
105
+ .enum(["start", "center", "end", "between", "around"])
106
+ .nullable(),
107
+ }),
108
+ slots: ["default"],
109
+ },
110
+ Text: {
111
+ description: "Paragraph text",
112
+ props: z.object({
113
+ text: z.string(),
114
+ variant: z.enum(["body", "caption", "muted", "lead", "code"]).nullable(),
115
+ }),
116
+ },
117
+ Textarea: {
118
+ description: "Multi-line text input. Use { $bindState } on value for binding. Use checks for validation. validateOn controls timing (default: blur).",
119
+ props: z.object({
120
+ checks: validationCheckSchema,
121
+ label: z.string(),
122
+ name: z.string(),
123
+ placeholder: z.string().nullable(),
124
+ rows: z.number().nullable(),
125
+ validateOn: validateOnSchema,
126
+ value: z.string().nullable(),
127
+ }),
128
+ },
129
+ };
130
+ const blockedRequestStatePathSegments = new Set([
131
+ "__proto__",
132
+ "constructor",
133
+ "prototype",
134
+ ]);
135
+ function isSafeRequestStatePath(value) {
136
+ const segments = value
137
+ .trim()
138
+ .split("/")
139
+ .map((segment) => segment.trim())
140
+ .filter(Boolean);
141
+ return (segments.length > 0 &&
142
+ !segments.some((segment) => blockedRequestStatePathSegments.has(segment)));
143
+ }
144
+ export const requestActionStatePathSchema = z
145
+ .string()
146
+ .min(1)
147
+ .refine(isSafeRequestStatePath, {
148
+ message: "State paths cannot target object prototype keys.",
149
+ });
150
+ const requestActionChoiceGroupOptionSchema = z
151
+ .object({
152
+ description: z.string().min(1).nullish(),
153
+ disabled: z.boolean().nullish(),
154
+ icon: z.string().min(1).nullish(),
155
+ title: z.string().min(1),
156
+ value: z.string().min(1),
157
+ })
158
+ .strict();
159
+ const requestActionChoiceGroupCustomInputSchema = z.union([
160
+ z.boolean(),
161
+ z
162
+ .object({
163
+ label: z.string().min(1).nullish(),
164
+ placeholder: z.string().min(1).nullish(),
165
+ })
166
+ .strict(),
167
+ ]);
168
+ const requestActionCapabilityListItemSchema = z
169
+ .object({
170
+ description: z.string().min(1).nullish(),
171
+ icon: z.string().min(1).nullish(),
172
+ subtitle: z.string().min(1).nullish(),
173
+ title: z.string().min(1),
174
+ })
175
+ .strict();
176
+ const requestActionBindableStringSchema = z.union([
177
+ z.string(),
178
+ z
179
+ .object({
180
+ $bindState: requestActionStatePathSchema.nullish(),
181
+ $state: requestActionStatePathSchema.nullish(),
182
+ })
183
+ .strict(),
184
+ ]);
185
+ const requestActionBindableStringOrArraySchema = z.union([
186
+ z.string(),
187
+ z.array(z.string()),
188
+ z
189
+ .object({
190
+ $bindState: requestActionStatePathSchema.nullish(),
191
+ $state: requestActionStatePathSchema.nullish(),
192
+ })
193
+ .strict(),
194
+ ]);
195
+ const requestActionBindableNumberSchema = z.union([
196
+ z.number(),
197
+ z
198
+ .object({
199
+ $bindState: requestActionStatePathSchema.nullish(),
200
+ $state: requestActionStatePathSchema.nullish(),
201
+ })
202
+ .strict(),
203
+ ]);
204
+ const requestActionGuidedQuestionSchema = z
205
+ .object({
206
+ collapsible: z.boolean().nullish(),
207
+ customInput: requestActionChoiceGroupCustomInputSchema.nullish(),
208
+ defaultOpen: z.boolean().nullish(),
209
+ description: z.string().min(1).nullish(),
210
+ kind: z.enum(["text", "choice"]).nullish(),
211
+ layout: z.union([z.literal(1), z.literal(2), z.literal(3)]).nullish(),
212
+ name: z.string().min(1).nullish(),
213
+ options: z.array(requestActionChoiceGroupOptionSchema).nullish(),
214
+ placeholder: z.string().min(1).nullish(),
215
+ prompt: z.string().min(1).nullish(),
216
+ title: z.string().min(1),
217
+ value: requestActionBindableStringSchema.nullish(),
218
+ variant: z.enum(["card", "minimal", "pill"]).nullish(),
219
+ })
220
+ .strict();
221
+ export const requestActionSubmissionSchema = z
222
+ .object({
223
+ mode: z.enum(["none", "state"]).default("state"),
224
+ statePath: requestActionStatePathSchema.nullish(),
225
+ })
226
+ .strict();
227
+ export const requestActionToolInputSchema = z
228
+ .object({
229
+ data: z.record(z.string(), z.unknown()).nullish(),
230
+ initialState: z.record(z.string(), z.unknown()).nullish(),
231
+ requestKey: z.string().min(1),
232
+ submission: requestActionSubmissionSchema.default({
233
+ mode: "state",
234
+ }),
235
+ })
236
+ .strict();
237
+ const requestActionSelectComponentDefinition = {
238
+ ...baseComponentDefinitions.Select,
239
+ description: "Dropdown select input. Use { $bindState } on value for binding. Use string options when label and value are the same, or label/value objects when they differ.",
240
+ props: baseComponentDefinitions.Select.props.extend({
241
+ options: z.array(requestActionOptionSchema).nullish(),
242
+ }),
243
+ };
244
+ const requestActionChoiceGroupComponentDefinition = {
245
+ description: "Claude-style quick choice group for agent questions. Each option is a full-row selectable area. Use { $bindState } on value. Use options with title/value plus optional description, icon, and disabled. Use customInput when the user may type their own answer.",
246
+ props: z
247
+ .object({
248
+ className: z.string().nullish(),
249
+ customInput: requestActionChoiceGroupCustomInputSchema.nullish(),
250
+ label: z.string().nullish(),
251
+ layout: z.union([z.literal(1), z.literal(2), z.literal(3)]).nullish(),
252
+ name: z.string().nullish(),
253
+ options: z.array(requestActionChoiceGroupOptionSchema).nullish(),
254
+ placeholder: z.string().nullish(),
255
+ value: requestActionBindableStringSchema.nullish(),
256
+ variant: z.enum(["card", "minimal", "pill"]).nullish(),
257
+ })
258
+ .strict(),
259
+ };
260
+ const requestActionCapabilityListComponentDefinition = {
261
+ description: "Display-only capability recap for agent messages. Use this to show what the agent can do with title, optional subtitle, optional description, and optional emoji icon. It does not bind state and should not look like a selectable control.",
262
+ props: z
263
+ .object({
264
+ className: z.string().nullish(),
265
+ columns: z.union([z.literal(1), z.literal(2), z.literal(3)]).nullish(),
266
+ items: z.array(requestActionCapabilityListItemSchema),
267
+ variant: z.enum(["card", "list"]).nullish(),
268
+ })
269
+ .strict(),
270
+ };
271
+ const requestActionGuidedQuestionsComponentDefinition = {
272
+ description: "Guided question group for agent intake flows. Use this when the agent needs to ask several numbered questions before continuing. Text questions use value with { $bindState }; choice questions use options and render a ChoiceGroup, with optional customInput and collapsible/defaultOpen.",
273
+ props: z
274
+ .object({
275
+ className: z.string().nullish(),
276
+ questions: z.array(requestActionGuidedQuestionSchema),
277
+ })
278
+ .strict(),
279
+ };
280
+ const requestActionRadioCardComponentDefinition = {
281
+ description: "Single-select radio card group for 2-5 visible options with richer titles, descriptions, and optional emoji icons. Use { $bindState } on value. Use disabled on individual options when a card cannot be selected.",
282
+ props: z
283
+ .object({
284
+ className: z.string().nullish(),
285
+ label: z.string().nullish(),
286
+ layout: z.enum(["horizontal", "vertical"]).nullish(),
287
+ name: z.string().nullish(),
288
+ options: z.array(requestActionChoiceGroupOptionSchema).nullish(),
289
+ size: z.enum(["sm", "md", "lg"]).nullish(),
290
+ value: requestActionBindableStringSchema.nullish(),
291
+ })
292
+ .strict(),
293
+ };
294
+ const requestActionChipSelectOptionSchema = z
295
+ .object({
296
+ color: z
297
+ .enum(["red", "blue", "green", "yellow", "purple", "gray"])
298
+ .nullish(),
299
+ disabled: z.boolean().nullish(),
300
+ label: z.string().min(1),
301
+ value: z.string().min(1),
302
+ })
303
+ .strict();
304
+ const requestActionChipSelectComponentDefinition = {
305
+ description: "Compact chip selector for short labels. Use single mode for a string value and multi mode for a string array value. Use maxSelected in multi mode to cap selections.",
306
+ props: z
307
+ .object({
308
+ className: z.string().nullish(),
309
+ label: z.string().nullish(),
310
+ maxSelected: z.number().int().positive().nullish(),
311
+ mode: z.enum(["single", "multi"]).nullish(),
312
+ multiple: z.boolean().nullish(),
313
+ name: z.string().nullish(),
314
+ options: z.array(requestActionChipSelectOptionSchema).nullish(),
315
+ value: requestActionBindableStringOrArraySchema.nullish(),
316
+ })
317
+ .strict(),
318
+ };
319
+ const requestActionToggleButtonGroupOptionSchema = z
320
+ .object({
321
+ disabled: z.boolean().nullish(),
322
+ icon: z.string().min(1).nullish(),
323
+ label: z.string().min(1).nullish(),
324
+ value: z.string().min(1),
325
+ })
326
+ .strict();
327
+ const requestActionToggleButtonGroupComponentDefinition = {
328
+ description: "Segmented control for immediate mutually exclusive switching, such as view mode, time range, sort order, or theme. Use { $bindState } on value. Use fullWidth when each segment should share the available width.",
329
+ props: z
330
+ .object({
331
+ className: z.string().nullish(),
332
+ fullWidth: z.boolean().nullish(),
333
+ label: z.string().nullish(),
334
+ name: z.string().nullish(),
335
+ options: z.array(requestActionToggleButtonGroupOptionSchema).nullish(),
336
+ size: z.enum(["sm", "md", "lg"]).nullish(),
337
+ value: requestActionBindableStringSchema.nullish(),
338
+ })
339
+ .strict(),
340
+ };
341
+ const requestActionRatingInputComponentDefinition = {
342
+ description: "Visual rating input for satisfaction, quality, or score collection. Use { $bindState } on value to store a number. Configure max, icon, allowHalf, clearable, showValue, size, and optional labels by score.",
343
+ props: z
344
+ .object({
345
+ allowHalf: z.boolean().nullish(),
346
+ className: z.string().nullish(),
347
+ clearable: z.boolean().nullish(),
348
+ icon: z.enum(["star", "heart", "thumb"]).nullish(),
349
+ label: z.string().nullish(),
350
+ labels: z.record(z.string(), z.string()).nullish(),
351
+ max: z.number().int().positive().max(10).nullish(),
352
+ name: z.string().nullish(),
353
+ showValue: z.boolean().nullish(),
354
+ size: z.enum(["sm", "md", "lg"]).nullish(),
355
+ value: requestActionBindableNumberSchema.nullish(),
356
+ })
357
+ .strict(),
358
+ };
359
+ export const agentRenderUICatalog = defineCatalog(schema, {
360
+ actions: {
361
+ // `submitRequest` is declared in the shared catalog so the model can emit
362
+ // `on.press: { action: "submitRequest" }` in yaml-render output.
363
+ //
364
+ // The executable handler is defined in the web client's json-render
365
+ // provider. Only the client has access to the active request entry, the
366
+ // current json-render state store, and `addToolOutput(...)`.
367
+ //
368
+ // In short: this module defines the action name and params shape for
369
+ // generation, while the web runtime owns the action implementation.
370
+ submitRequest: {
371
+ description: "Submit the current request tool state back to the chat runtime.",
372
+ params: z.object({}),
373
+ },
374
+ emitPageEvent: {
375
+ description: "Emit a portable page event such as composing a prompt, opening a detail page, or navigating to another app resource. The host decides how to handle the event.",
376
+ params: pageEventSchema,
377
+ },
378
+ },
379
+ components: {
380
+ Button: baseComponentDefinitions.Button,
381
+ Card: baseComponentDefinitions.Card,
382
+ CapabilityList: requestActionCapabilityListComponentDefinition,
383
+ ChoiceGroup: requestActionChoiceGroupComponentDefinition,
384
+ ChipSelect: requestActionChipSelectComponentDefinition,
385
+ Checkbox: baseComponentDefinitions.Checkbox,
386
+ Grid: baseComponentDefinitions.Grid,
387
+ GuidedQuestions: requestActionGuidedQuestionsComponentDefinition,
388
+ Heading: baseComponentDefinitions.Heading,
389
+ Input: baseComponentDefinitions.Input,
390
+ RatingInput: requestActionRatingInputComponentDefinition,
391
+ RadioCard: requestActionRadioCardComponentDefinition,
392
+ Select: requestActionSelectComponentDefinition,
393
+ Stack: baseComponentDefinitions.Stack,
394
+ Text: baseComponentDefinitions.Text,
395
+ Textarea: baseComponentDefinitions.Textarea,
396
+ ToggleButtonGroup: requestActionToggleButtonGroupComponentDefinition,
397
+ },
398
+ });
399
+ //# sourceMappingURL=catalog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"catalog.js","sourceRoot":"","sources":["../src/catalog.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ export type { AgentChatMessage } from "@gea-ai/contract";
2
+ export { GeaMessage, GeaMessages } from "./message";
3
+ export { GeaMarkdown } from "./markdown";
4
+ export { GeaChatUIProvider, useGeaChatUI, type GeaAddToolOutputInput, type GeaAssistantAvatarProps, type GeaChatActions, type GeaChatComponents, type GeaChatLabels, type GeaChatStatus, type GeaChatTheme, type GeaMessageFrameProps, type GeaMessagePart, type GeaPartProps, type GeaTextPartProps, type GeaYamlComponentProps, type GeaYamlComponents, type GeaYamlElement, } from "./runtime";
5
+ export { GeaYamlRender, getGeaYamlRequest, parseGeaYamlRenderSpec, type GeaYamlRequest, } from "./yaml-render";
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EACL,iBAAiB,EACjB,YAAY,EACZ,KAAK,qBAAqB,EAC1B,KAAK,uBAAuB,EAC5B,KAAK,cAAc,EACnB,KAAK,iBAAiB,EACtB,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,YAAY,EACjB,KAAK,oBAAoB,EACzB,KAAK,cAAc,EACnB,KAAK,YAAY,EACjB,KAAK,gBAAgB,EACrB,KAAK,qBAAqB,EAC1B,KAAK,iBAAiB,EACtB,KAAK,cAAc,GACpB,MAAM,WAAW,CAAC;AACnB,OAAO,EACL,aAAa,EACb,iBAAiB,EACjB,sBAAsB,EACtB,KAAK,cAAc,GACpB,MAAM,eAAe,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,5 @@
1
+ export { GeaMessage, GeaMessages } from "./message.js";
2
+ export { GeaMarkdown } from "./markdown.js";
3
+ export { GeaChatUIProvider, useGeaChatUI, } from "./runtime.js";
4
+ export { GeaYamlRender, getGeaYamlRequest, parseGeaYamlRenderSpec, } from "./yaml-render.js";
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EACL,iBAAiB,EACjB,YAAY,GAeb,MAAM,WAAW,CAAC;AACnB,OAAO,EACL,aAAa,EACb,iBAAiB,EACjB,sBAAsB,GAEvB,MAAM,eAAe,CAAC"}
@@ -0,0 +1,8 @@
1
+ import type { AgentChatMessage } from "@gea-ai/contract";
2
+ export declare function GeaMarkdown({ active, markdown, message, streaming, }: {
3
+ active?: boolean;
4
+ markdown: string;
5
+ message: AgentChatMessage;
6
+ streaming?: boolean;
7
+ }): import("react/jsx-runtime").JSX.Element;
8
+ //# sourceMappingURL=markdown.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"markdown.d.ts","sourceRoot":"","sources":["../src/markdown.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AA6JzD,wBAAgB,WAAW,CAAC,EAC1B,MAAa,EACb,QAAQ,EACR,OAAO,EACP,SAAiB,GAClB,EAAE;IACD,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,gBAAgB,CAAC;IAC1B,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB,2CA0BA"}
@@ -0,0 +1,81 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { MarkdownDocument } from "@comark/react/components/MarkdownDocument";
3
+ import security from "@comark/react/plugins/security";
4
+ import { parseMarkdown } from "comark";
5
+ import { Children, Component, isValidElement, Suspense, use, useMemo, } from "react";
6
+ import { useGeaChatUI } from "./runtime.js";
7
+ import { resolveSafeUrl } from "./utils.js";
8
+ import { GeaYamlRender } from "./yaml-render.js";
9
+ function getReactNodeText(node) {
10
+ let text = "";
11
+ Children.forEach(node, (child) => {
12
+ if (typeof child === "string" || typeof child === "number") {
13
+ text += String(child);
14
+ return;
15
+ }
16
+ if (isValidElement(child)) {
17
+ text += getReactNodeText(child.props.children);
18
+ }
19
+ });
20
+ return text;
21
+ }
22
+ function stripYamlRenderSource(markdown) {
23
+ return markdown.replace(/```yaml-render\s*[\s\S]*?(?:```|$)/gu, "");
24
+ }
25
+ function MarkdownFallback({ markdown }) {
26
+ const visibleText = stripYamlRenderSource(markdown).trim();
27
+ return visibleText ? (_jsx("div", { "data-slot": "markdown-fallback", children: visibleText })) : null;
28
+ }
29
+ function MarkdownPre({ active, children, className, language, message, streaming, }) {
30
+ const source = getReactNodeText(children);
31
+ if (language === "yaml-render") {
32
+ return (_jsx(GeaYamlRender, { active: active, message: message, source: source, streaming: streaming }));
33
+ }
34
+ return (_jsx("pre", { className: className, "data-slot": "code-block", children: children }));
35
+ }
36
+ function MarkdownImage(props) {
37
+ const { actions } = useGeaChatUI();
38
+ const source = typeof props.src === "string" ? props.src : "";
39
+ const src = resolveSafeUrl(source, actions.resolveAssetUrl, true);
40
+ if (!src) {
41
+ return props.alt ? _jsx("span", { children: props.alt }) : null;
42
+ }
43
+ return _jsx("img", { ...props, "data-slot": "markdown-image", src: src });
44
+ }
45
+ function ParsedMarkdown({ active, markdownPromise, message, streaming, }) {
46
+ const tree = use(markdownPromise);
47
+ const components = useMemo(() => ({
48
+ img: MarkdownImage,
49
+ pre: (props) => (_jsx(MarkdownPre, { ...props, active: active, message: message, streaming: streaming })),
50
+ }), [active, message, streaming]);
51
+ return (_jsx(MarkdownDocument, { className: "gea-chat-markdown", components: components, streaming: streaming, value: tree }));
52
+ }
53
+ class MarkdownErrorBoundary extends Component {
54
+ state = { failed: false };
55
+ static getDerivedStateFromError() {
56
+ return { failed: true };
57
+ }
58
+ componentDidCatch(error) {
59
+ console.error("Failed to render GEA chat markdown", error);
60
+ }
61
+ componentDidUpdate(previousProps) {
62
+ if (this.state.failed && previousProps.markdown !== this.props.markdown) {
63
+ this.setState({ failed: false });
64
+ }
65
+ }
66
+ render() {
67
+ return this.state.failed ? this.props.fallback : this.props.children;
68
+ }
69
+ }
70
+ export function GeaMarkdown({ active = true, markdown, message, streaming = false, }) {
71
+ const markdownPromise = useMemo(() => parseMarkdown(markdown, {
72
+ plugins: [
73
+ security({
74
+ blockedTags: ["iframe", "object", "script", "style"],
75
+ }),
76
+ ],
77
+ }), [markdown]);
78
+ const fallback = _jsx(MarkdownFallback, { markdown: markdown });
79
+ return (_jsx(MarkdownErrorBoundary, { fallback: fallback, markdown: markdown, children: _jsx(Suspense, { fallback: fallback, children: _jsx(ParsedMarkdown, { active: active, markdownPromise: markdownPromise, message: message, streaming: streaming }) }) }));
80
+ }
81
+ //# sourceMappingURL=markdown.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"markdown.js","sourceRoot":"","sources":["../src/markdown.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import type { AgentChatMessage } from "@gea-ai/contract";
2
+ import { type GeaChatStatus } from "./runtime";
3
+ export declare function GeaMessage({ active, message, status, }: {
4
+ active?: boolean;
5
+ message: AgentChatMessage;
6
+ status?: GeaChatStatus;
7
+ }): import("react/jsx-runtime").JSX.Element;
8
+ export declare function GeaMessages({ activeMessageId, messages, status, }: {
9
+ activeMessageId?: string | null;
10
+ messages: AgentChatMessage[];
11
+ status?: GeaChatStatus;
12
+ }): import("react/jsx-runtime").JSX.Element;
13
+ //# sourceMappingURL=message.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"message.d.ts","sourceRoot":"","sources":["../src/message.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAGzD,OAAO,EAEL,KAAK,aAAa,EAMnB,MAAM,WAAW,CAAC;AA6XnB,wBAAgB,UAAU,CAAC,EACzB,MAAa,EACb,OAAO,EACP,MAAgB,GACjB,EAAE;IACD,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,gBAAgB,CAAC;IAC1B,MAAM,CAAC,EAAE,aAAa,CAAC;CACxB,2CAiCA;AAED,wBAAgB,WAAW,CAAC,EAC1B,eAAe,EACf,QAAQ,EACR,MAAgB,GACjB,EAAE;IACD,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,QAAQ,EAAE,gBAAgB,EAAE,CAAC;IAC7B,MAAM,CAAC,EAAE,aAAa,CAAC;CACxB,2CAeA"}