@copilotkit/markdown 2.0.0-rc.20 → 2.0.0-rc.21

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/dist/index.d.cts CHANGED
@@ -16,12 +16,17 @@ type StreamingMarkdownParserOptions = {
16
16
  segmenter: SegmenterOptions;
17
17
  enableTables: boolean;
18
18
  enableAutolinks: boolean;
19
+ /**
20
+ * Parses `$…$` inline math and `$$…$$` display math into `math` nodes.
21
+ * Off by default: without it, dollar signs stay plain text.
22
+ */
23
+ enableMath?: boolean;
19
24
  };
20
25
  /**
21
26
  * Supported streaming markdown AST node kinds.
22
27
  * @public
23
28
  */
24
- type StreamingMarkdownNodeType = "document" | "paragraph" | "heading" | "blockquote" | "list" | "list-item" | "code-block" | "table" | "table-row" | "table-cell" | "thematic-break" | "text" | "em" | "strong" | "strikethrough" | "inline-code" | "soft-break" | "hard-break" | "image" | "link" | "autolink" | "citation";
29
+ type StreamingMarkdownNodeType = "document" | "paragraph" | "heading" | "blockquote" | "list" | "list-item" | "code-block" | "table" | "table-row" | "table-cell" | "thematic-break" | "text" | "em" | "strong" | "strikethrough" | "inline-code" | "soft-break" | "hard-break" | "image" | "link" | "autolink" | "citation" | "math";
25
30
  /**
26
31
  * Parsing mode for block-level processing.
27
32
  * @public
@@ -129,6 +134,11 @@ type StreamingMarkdownListNode = StreamingMarkdownAstNodeBase & {
129
134
  */
130
135
  type StreamingMarkdownListItemNode = StreamingMarkdownAstNodeBase & {
131
136
  type: "list-item";
137
+ /**
138
+ * GFM task-list state: `true` for `[x]`, `false` for `[ ]`, absent for a
139
+ * plain list item.
140
+ */
141
+ checked?: boolean;
132
142
  children: number[];
133
143
  };
134
144
  /**
@@ -268,11 +278,21 @@ type StreamingMarkdownCitationNode = StreamingMarkdownAstNodeBase & {
268
278
  idRef: string;
269
279
  number?: number;
270
280
  };
281
+ /**
282
+ * AST node representing TeX math (only parsed when `enableMath` is set).
283
+ * `text` is the TeX source without its `$` delimiters.
284
+ * @public
285
+ */
286
+ type StreamingMarkdownMathNode = StreamingMarkdownAstNodeBase & {
287
+ type: "math";
288
+ text: string;
289
+ display: boolean;
290
+ };
271
291
  /**
272
292
  * Union of all AST node shapes.
273
293
  * @public
274
294
  */
275
- type StreamingMarkdownAstNode = StreamingMarkdownDocumentNode | StreamingMarkdownParagraphNode | StreamingMarkdownHeadingNode | StreamingMarkdownBlockquoteNode | StreamingMarkdownListNode | StreamingMarkdownListItemNode | StreamingMarkdownCodeBlockNode | StreamingMarkdownTableNode | StreamingMarkdownTableRowNode | StreamingMarkdownTableCellNode | StreamingMarkdownThematicBreakNode | StreamingMarkdownTextNode | StreamingMarkdownEmphasisNode | StreamingMarkdownStrongNode | StreamingMarkdownStrikethroughNode | StreamingMarkdownInlineCodeNode | StreamingMarkdownSoftBreakNode | StreamingMarkdownHardBreakNode | StreamingMarkdownImageNode | StreamingMarkdownLinkNode | StreamingMarkdownAutolinkNode | StreamingMarkdownCitationNode;
295
+ type StreamingMarkdownAstNode = StreamingMarkdownDocumentNode | StreamingMarkdownParagraphNode | StreamingMarkdownHeadingNode | StreamingMarkdownBlockquoteNode | StreamingMarkdownListNode | StreamingMarkdownListItemNode | StreamingMarkdownCodeBlockNode | StreamingMarkdownTableNode | StreamingMarkdownTableRowNode | StreamingMarkdownTableCellNode | StreamingMarkdownThematicBreakNode | StreamingMarkdownTextNode | StreamingMarkdownEmphasisNode | StreamingMarkdownStrongNode | StreamingMarkdownStrikethroughNode | StreamingMarkdownInlineCodeNode | StreamingMarkdownSoftBreakNode | StreamingMarkdownHardBreakNode | StreamingMarkdownImageNode | StreamingMarkdownLinkNode | StreamingMarkdownAutolinkNode | StreamingMarkdownCitationNode | StreamingMarkdownMathNode;
276
296
  /**
277
297
  * Citation definition captured during parsing.
278
298
  * @public
@@ -352,10 +372,257 @@ declare function finalizeStreamingMarkdown(state: StreamingMarkdownParserState):
352
372
  *
353
373
  * No-op in production and after the first warning. Only the built-in default
354
374
  * renderers call this — a custom `markdownRenderer` never triggers it.
375
+ * Pass `{ rendersMath: true }` from a default renderer that typesets math, so
376
+ * only code blocks are flagged.
355
377
  *
356
378
  * @internal
357
379
  */
358
- declare function warnUnsupportedRichSyntaxOnce(content: string): void;
380
+ declare function warnUnsupportedRichSyntaxOnce(content: string, {
381
+ rendersMath
382
+ }?: {
383
+ rendersMath?: boolean;
384
+ }): void;
385
+ //#endregion
386
+ //#region src/render/parser-session.d.ts
387
+ /**
388
+ * Parser state plus the inputs that produced it, so the next update can parse
389
+ * only the appended text.
390
+ *
391
+ * @public
392
+ */
393
+ interface StreamingMarkdownParserSession {
394
+ parserState: StreamingMarkdownParserState;
395
+ text: string;
396
+ optionsKey: string;
397
+ isCompleteInput: boolean;
398
+ }
399
+ /**
400
+ * Returns the parser session for `text`, reusing `previous` when it can.
401
+ *
402
+ * - Same inputs: returns `previous` unchanged.
403
+ * - Text grew by a suffix: parses only the suffix, so unchanged AST nodes keep
404
+ * their identity (renderers rely on this to keep DOM and animations stable).
405
+ * - Text was replaced or options changed: parses from scratch.
406
+ * - `isComplete` toggled: finalizes (or re-opens) the current state.
407
+ *
408
+ * @param previous - The session from the last update, or `null` on first use.
409
+ * @param text - Full markdown source, which usually grows over time.
410
+ * @param options - Parser option overrides.
411
+ * @param isCompleteInput - `true` once the source is final.
412
+ * @public
413
+ */
414
+ declare function updateStreamingMarkdownParserSession(previous: StreamingMarkdownParserSession | null, text: string, options: Partial<StreamingMarkdownParserOptions> | undefined, isCompleteInput: boolean): StreamingMarkdownParserSession;
415
+ //#endregion
416
+ //#region src/render/render-tree.d.ts
417
+ /**
418
+ * Key names for per-node customization (`nodeRenderers`, `nodeClassNames`).
419
+ * camelCase versions of the AST node types, plus `node` as a catch-all.
420
+ *
421
+ * @public
422
+ */
423
+ type StreamingMarkdownNodeRendererKey = "node" | "document" | "paragraph" | "heading" | "blockquote" | "list" | "listItem" | "codeBlock" | "table" | "tableRow" | "tableCell" | "thematicBreak" | "text" | "em" | "strong" | "strikethrough" | "inlineCode" | "softBreak" | "hardBreak" | "image" | "link" | "autolink" | "citation" | "math";
424
+ /**
425
+ * Metadata available when a citation node is rendered.
426
+ *
427
+ * @public
428
+ */
429
+ interface StreamingMarkdownCitationRenderData {
430
+ id: string;
431
+ number: number | string;
432
+ definition?: CitationDefinition;
433
+ }
434
+ /**
435
+ * Extra class names for the outermost default element of a node type, for
436
+ * example `{ codeBlock: "cpk-markdown-code-block" }`. Ignored for node types
437
+ * that render no element of their own (`document`, `text`, `softBreak`).
438
+ *
439
+ * @public
440
+ */
441
+ type StreamingMarkdownNodeClassNames = Partial<Record<StreamingMarkdownNodeRendererKey, string>>;
442
+ /**
443
+ * Click behavior a backend attaches to a rendered element.
444
+ *
445
+ * @public
446
+ */
447
+ type StreamingMarkdownRenderAction = {
448
+ type: "link";
449
+ url: string;
450
+ node: StreamingMarkdownAstNode;
451
+ } | {
452
+ type: "citation";
453
+ citation: StreamingMarkdownCitationRenderData;
454
+ node: StreamingMarkdownAstNode;
455
+ };
456
+ /**
457
+ * A plain element. Attribute values are already sanitized; `true` marks a
458
+ * boolean attribute that is present.
459
+ *
460
+ * @public
461
+ */
462
+ interface StreamingMarkdownRenderElement {
463
+ kind: "element";
464
+ key: string;
465
+ tag: string;
466
+ attrs: Readonly<Record<string, string | true>>;
467
+ children: StreamingMarkdownRenderChild[];
468
+ action?: StreamingMarkdownRenderAction;
469
+ }
470
+ /**
471
+ * A text run.
472
+ *
473
+ * @public
474
+ */
475
+ interface StreamingMarkdownRenderText {
476
+ kind: "text";
477
+ key: string;
478
+ text: string;
479
+ }
480
+ /**
481
+ * Where the streaming caret goes. The backend decides what the caret looks like.
482
+ *
483
+ * @public
484
+ */
485
+ interface StreamingMarkdownRenderCaret {
486
+ kind: "caret";
487
+ key: string;
488
+ }
489
+ /**
490
+ * Placeholder inside a node's default `output` that stands for its `children`.
491
+ *
492
+ * @public
493
+ */
494
+ interface StreamingMarkdownRenderSlot {
495
+ kind: "slot";
496
+ key: string;
497
+ }
498
+ /**
499
+ * One AST node, ready to render. Backends render `children` once, render
500
+ * `output` with every `slot` replaced by those children, and pass both to a
501
+ * custom node renderer when one is registered for `rendererKey`.
502
+ *
503
+ * @public
504
+ */
505
+ interface StreamingMarkdownRenderNode {
506
+ kind: "node";
507
+ key: string;
508
+ node: StreamingMarkdownAstNode;
509
+ rendererKey: StreamingMarkdownNodeRendererKey;
510
+ /** Content a custom renderer receives as its children; `null` for leaves. */
511
+ children: StreamingMarkdownRenderChild[] | null;
512
+ /** The default rendering. */
513
+ output: StreamingMarkdownRenderChild[];
514
+ /** `true` when the caret renders somewhere inside this node. */
515
+ containsCaret: boolean;
516
+ citation?: StreamingMarkdownCitationRenderData;
517
+ }
518
+ /**
519
+ * Any entry in a render tree.
520
+ *
521
+ * @public
522
+ */
523
+ type StreamingMarkdownRenderChild = StreamingMarkdownRenderNode | StreamingMarkdownRenderElement | StreamingMarkdownRenderText | StreamingMarkdownRenderCaret | StreamingMarkdownRenderSlot;
524
+ /**
525
+ * Options for {@link buildStreamingMarkdownRenderTree}.
526
+ *
527
+ * @public
528
+ */
529
+ interface StreamingMarkdownRenderTreeOptions {
530
+ /** Render a caret inside the deepest open node while streaming. */
531
+ caret: boolean;
532
+ nodeClassNames?: StreamingMarkdownNodeClassNames;
533
+ }
534
+ /**
535
+ * Class on the root element every renderer emits.
536
+ * @public
537
+ */
538
+ declare const STREAMING_MARKDOWN_ROOT_CLASS = "cpk-streaming-markdown-root";
539
+ /**
540
+ * Node classes CopilotKit's built-in chat markdown renderers (React, Vue,
541
+ * Angular) apply, so all three emit the same themed markup.
542
+ * @public
543
+ */
544
+ declare const CHAT_MARKDOWN_NODE_CLASS_NAMES: {
545
+ readonly codeBlock: "cpk-markdown-code-block";
546
+ };
547
+ /**
548
+ * Attributes of the default caret element.
549
+ * @public
550
+ */
551
+ declare const STREAMING_MARKDOWN_CARET_ATTRS: {
552
+ readonly "aria-hidden": "true";
553
+ readonly class: "cpk-streaming-markdown-caret";
554
+ readonly "data-streaming-markdown-caret": "true";
555
+ };
556
+ /**
557
+ * Inline style of the default caret element (camelCase CSS properties).
558
+ * @public
559
+ */
560
+ declare const STREAMING_MARKDOWN_CARET_STYLE: {
561
+ readonly display: "inline-block";
562
+ readonly width: "0.48em";
563
+ readonly height: "0.48em";
564
+ readonly marginInlineStart: "0.08em";
565
+ readonly verticalAlign: "-0.08em";
566
+ readonly borderRadius: "999px";
567
+ readonly backgroundColor: "currentColor";
568
+ readonly opacity: "0.55";
569
+ };
570
+ /**
571
+ * Stylesheet every renderer injects next to its root: the per-token fade-in
572
+ * for text segments and the citation pill. Read at render time, so it is safe
573
+ * to call during server rendering.
574
+ *
575
+ * @public
576
+ */
577
+ declare function getStreamingMarkdownStyles(): string;
578
+ /**
579
+ * Returns `href` when its scheme is allowed for links, else `undefined`.
580
+ * @public
581
+ */
582
+ declare function sanitizeStreamingMarkdownHref(href: string | undefined): string | undefined;
583
+ /**
584
+ * Returns `src` when its scheme is allowed for images, else `undefined`.
585
+ * @public
586
+ */
587
+ declare function sanitizeStreamingMarkdownImageSrc(src: string | undefined): string | undefined;
588
+ type CitationNode = Extract<StreamingMarkdownAstNode, {
589
+ type: "citation";
590
+ }>;
591
+ /**
592
+ * The deepest open (still streaming) node other than the document, or `null`.
593
+ * This is where the caret goes.
594
+ *
595
+ * @public
596
+ */
597
+ declare function findStreamingMarkdownOpenNode(state: StreamingMarkdownParserState): StreamingMarkdownParagraphNode | StreamingMarkdownHeadingNode | StreamingMarkdownBlockquoteNode | StreamingMarkdownListNode | StreamingMarkdownListItemNode | StreamingMarkdownCodeBlockNode | StreamingMarkdownTableNode | StreamingMarkdownTableRowNode | StreamingMarkdownTableCellNode | StreamingMarkdownThematicBreakNode | StreamingMarkdownTextNode | StreamingMarkdownEmphasisNode | StreamingMarkdownStrongNode | StreamingMarkdownStrikethroughNode | StreamingMarkdownInlineCodeNode | StreamingMarkdownSoftBreakNode | StreamingMarkdownHardBreakNode | StreamingMarkdownImageNode | StreamingMarkdownLinkNode | StreamingMarkdownAutolinkNode | StreamingMarkdownCitationNode | StreamingMarkdownMathNode | null;
598
+ /**
599
+ * Citation number and definition for a citation node.
600
+ *
601
+ * @public
602
+ */
603
+ declare function getStreamingMarkdownCitationData(node: CitationNode, citations: CitationState): StreamingMarkdownCitationRenderData;
604
+ /**
605
+ * Turns parser state into a framework-neutral render tree: which elements to
606
+ * create, their sanitized attributes, click actions, text segments for the
607
+ * per-token animation, and where the caret goes. The React, Vue, and DOM
608
+ * renderers all render this tree, so markup and sanitization live here only.
609
+ *
610
+ * @param state - Parser state from the streaming markdown parser.
611
+ * @param options - Whether to place a caret, and optional per-node classes.
612
+ * @returns The root render node (`null` when the state has no root) and the
613
+ * open node the caret targets.
614
+ * @public
615
+ */
616
+ declare function buildStreamingMarkdownRenderTree(state: StreamingMarkdownParserState, options: StreamingMarkdownRenderTreeOptions): {
617
+ root: StreamingMarkdownRenderNode | null;
618
+ openNode: StreamingMarkdownParagraphNode | StreamingMarkdownHeadingNode | StreamingMarkdownBlockquoteNode | StreamingMarkdownListNode | StreamingMarkdownListItemNode | StreamingMarkdownCodeBlockNode | StreamingMarkdownTableNode | StreamingMarkdownTableRowNode | StreamingMarkdownTableCellNode | StreamingMarkdownThematicBreakNode | StreamingMarkdownTextNode | StreamingMarkdownEmphasisNode | StreamingMarkdownStrongNode | StreamingMarkdownStrikethroughNode | StreamingMarkdownInlineCodeNode | StreamingMarkdownSoftBreakNode | StreamingMarkdownHardBreakNode | StreamingMarkdownImageNode | StreamingMarkdownLinkNode | StreamingMarkdownAutolinkNode | StreamingMarkdownCitationNode | StreamingMarkdownMathNode | null;
619
+ isComplete: boolean;
620
+ };
621
+ /**
622
+ * The render tree produced by {@link buildStreamingMarkdownRenderTree}.
623
+ * @public
624
+ */
625
+ type StreamingMarkdownRenderTree = ReturnType<typeof buildStreamingMarkdownRenderTree>;
359
626
  //#endregion
360
- export { type CitationDefinition, type CitationState, type ParseMode, type SegmenterOptions, type StreamingMarkdownAstNode, type StreamingMarkdownNodeType, type StreamingMarkdownParserOptions, type StreamingMarkdownParserState, type StreamingMarkdownWarning, type TextSegment, createStreamingMarkdownParserState, finalizeStreamingMarkdown, parseStreamingMarkdownChunk, warnUnsupportedRichSyntaxOnce };
627
+ export { CHAT_MARKDOWN_NODE_CLASS_NAMES, type CitationDefinition, type CitationState, type ParseMode, STREAMING_MARKDOWN_CARET_ATTRS, STREAMING_MARKDOWN_CARET_STYLE, STREAMING_MARKDOWN_ROOT_CLASS, type SegmenterOptions, type StreamingMarkdownAstNode, type StreamingMarkdownCitationRenderData, type StreamingMarkdownNodeClassNames, type StreamingMarkdownNodeRendererKey, type StreamingMarkdownNodeType, type StreamingMarkdownParserOptions, type StreamingMarkdownParserSession, type StreamingMarkdownParserState, type StreamingMarkdownRenderAction, type StreamingMarkdownRenderCaret, type StreamingMarkdownRenderChild, type StreamingMarkdownRenderElement, type StreamingMarkdownRenderNode, type StreamingMarkdownRenderSlot, type StreamingMarkdownRenderText, type StreamingMarkdownRenderTree, type StreamingMarkdownRenderTreeOptions, type StreamingMarkdownWarning, type TextSegment, buildStreamingMarkdownRenderTree, createStreamingMarkdownParserState, finalizeStreamingMarkdown, findStreamingMarkdownOpenNode, getStreamingMarkdownCitationData, getStreamingMarkdownStyles, parseStreamingMarkdownChunk, sanitizeStreamingMarkdownHref, sanitizeStreamingMarkdownImageSrc, updateStreamingMarkdownParserSession, warnUnsupportedRichSyntaxOnce };
361
628
  //# sourceMappingURL=index.d.cts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.cts","names":[],"sources":["../src/parser/types.ts","../src/parser/state.ts","../src/dev-warning.ts"],"mappings":"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"}
1
+ {"version":3,"file":"index.d.cts","names":[],"sources":["../src/parser/types.ts","../src/parser/state.ts","../src/dev-warning.ts","../src/render/parser-session.ts","../src/render/render-tree.ts"],"mappings":"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"}
package/dist/index.d.mts CHANGED
@@ -16,12 +16,17 @@ type StreamingMarkdownParserOptions = {
16
16
  segmenter: SegmenterOptions;
17
17
  enableTables: boolean;
18
18
  enableAutolinks: boolean;
19
+ /**
20
+ * Parses `$…$` inline math and `$$…$$` display math into `math` nodes.
21
+ * Off by default: without it, dollar signs stay plain text.
22
+ */
23
+ enableMath?: boolean;
19
24
  };
20
25
  /**
21
26
  * Supported streaming markdown AST node kinds.
22
27
  * @public
23
28
  */
24
- type StreamingMarkdownNodeType = "document" | "paragraph" | "heading" | "blockquote" | "list" | "list-item" | "code-block" | "table" | "table-row" | "table-cell" | "thematic-break" | "text" | "em" | "strong" | "strikethrough" | "inline-code" | "soft-break" | "hard-break" | "image" | "link" | "autolink" | "citation";
29
+ type StreamingMarkdownNodeType = "document" | "paragraph" | "heading" | "blockquote" | "list" | "list-item" | "code-block" | "table" | "table-row" | "table-cell" | "thematic-break" | "text" | "em" | "strong" | "strikethrough" | "inline-code" | "soft-break" | "hard-break" | "image" | "link" | "autolink" | "citation" | "math";
25
30
  /**
26
31
  * Parsing mode for block-level processing.
27
32
  * @public
@@ -129,6 +134,11 @@ type StreamingMarkdownListNode = StreamingMarkdownAstNodeBase & {
129
134
  */
130
135
  type StreamingMarkdownListItemNode = StreamingMarkdownAstNodeBase & {
131
136
  type: "list-item";
137
+ /**
138
+ * GFM task-list state: `true` for `[x]`, `false` for `[ ]`, absent for a
139
+ * plain list item.
140
+ */
141
+ checked?: boolean;
132
142
  children: number[];
133
143
  };
134
144
  /**
@@ -268,11 +278,21 @@ type StreamingMarkdownCitationNode = StreamingMarkdownAstNodeBase & {
268
278
  idRef: string;
269
279
  number?: number;
270
280
  };
281
+ /**
282
+ * AST node representing TeX math (only parsed when `enableMath` is set).
283
+ * `text` is the TeX source without its `$` delimiters.
284
+ * @public
285
+ */
286
+ type StreamingMarkdownMathNode = StreamingMarkdownAstNodeBase & {
287
+ type: "math";
288
+ text: string;
289
+ display: boolean;
290
+ };
271
291
  /**
272
292
  * Union of all AST node shapes.
273
293
  * @public
274
294
  */
275
- type StreamingMarkdownAstNode = StreamingMarkdownDocumentNode | StreamingMarkdownParagraphNode | StreamingMarkdownHeadingNode | StreamingMarkdownBlockquoteNode | StreamingMarkdownListNode | StreamingMarkdownListItemNode | StreamingMarkdownCodeBlockNode | StreamingMarkdownTableNode | StreamingMarkdownTableRowNode | StreamingMarkdownTableCellNode | StreamingMarkdownThematicBreakNode | StreamingMarkdownTextNode | StreamingMarkdownEmphasisNode | StreamingMarkdownStrongNode | StreamingMarkdownStrikethroughNode | StreamingMarkdownInlineCodeNode | StreamingMarkdownSoftBreakNode | StreamingMarkdownHardBreakNode | StreamingMarkdownImageNode | StreamingMarkdownLinkNode | StreamingMarkdownAutolinkNode | StreamingMarkdownCitationNode;
295
+ type StreamingMarkdownAstNode = StreamingMarkdownDocumentNode | StreamingMarkdownParagraphNode | StreamingMarkdownHeadingNode | StreamingMarkdownBlockquoteNode | StreamingMarkdownListNode | StreamingMarkdownListItemNode | StreamingMarkdownCodeBlockNode | StreamingMarkdownTableNode | StreamingMarkdownTableRowNode | StreamingMarkdownTableCellNode | StreamingMarkdownThematicBreakNode | StreamingMarkdownTextNode | StreamingMarkdownEmphasisNode | StreamingMarkdownStrongNode | StreamingMarkdownStrikethroughNode | StreamingMarkdownInlineCodeNode | StreamingMarkdownSoftBreakNode | StreamingMarkdownHardBreakNode | StreamingMarkdownImageNode | StreamingMarkdownLinkNode | StreamingMarkdownAutolinkNode | StreamingMarkdownCitationNode | StreamingMarkdownMathNode;
276
296
  /**
277
297
  * Citation definition captured during parsing.
278
298
  * @public
@@ -352,10 +372,257 @@ declare function finalizeStreamingMarkdown(state: StreamingMarkdownParserState):
352
372
  *
353
373
  * No-op in production and after the first warning. Only the built-in default
354
374
  * renderers call this — a custom `markdownRenderer` never triggers it.
375
+ * Pass `{ rendersMath: true }` from a default renderer that typesets math, so
376
+ * only code blocks are flagged.
355
377
  *
356
378
  * @internal
357
379
  */
358
- declare function warnUnsupportedRichSyntaxOnce(content: string): void;
380
+ declare function warnUnsupportedRichSyntaxOnce(content: string, {
381
+ rendersMath
382
+ }?: {
383
+ rendersMath?: boolean;
384
+ }): void;
385
+ //#endregion
386
+ //#region src/render/parser-session.d.ts
387
+ /**
388
+ * Parser state plus the inputs that produced it, so the next update can parse
389
+ * only the appended text.
390
+ *
391
+ * @public
392
+ */
393
+ interface StreamingMarkdownParserSession {
394
+ parserState: StreamingMarkdownParserState;
395
+ text: string;
396
+ optionsKey: string;
397
+ isCompleteInput: boolean;
398
+ }
399
+ /**
400
+ * Returns the parser session for `text`, reusing `previous` when it can.
401
+ *
402
+ * - Same inputs: returns `previous` unchanged.
403
+ * - Text grew by a suffix: parses only the suffix, so unchanged AST nodes keep
404
+ * their identity (renderers rely on this to keep DOM and animations stable).
405
+ * - Text was replaced or options changed: parses from scratch.
406
+ * - `isComplete` toggled: finalizes (or re-opens) the current state.
407
+ *
408
+ * @param previous - The session from the last update, or `null` on first use.
409
+ * @param text - Full markdown source, which usually grows over time.
410
+ * @param options - Parser option overrides.
411
+ * @param isCompleteInput - `true` once the source is final.
412
+ * @public
413
+ */
414
+ declare function updateStreamingMarkdownParserSession(previous: StreamingMarkdownParserSession | null, text: string, options: Partial<StreamingMarkdownParserOptions> | undefined, isCompleteInput: boolean): StreamingMarkdownParserSession;
415
+ //#endregion
416
+ //#region src/render/render-tree.d.ts
417
+ /**
418
+ * Key names for per-node customization (`nodeRenderers`, `nodeClassNames`).
419
+ * camelCase versions of the AST node types, plus `node` as a catch-all.
420
+ *
421
+ * @public
422
+ */
423
+ type StreamingMarkdownNodeRendererKey = "node" | "document" | "paragraph" | "heading" | "blockquote" | "list" | "listItem" | "codeBlock" | "table" | "tableRow" | "tableCell" | "thematicBreak" | "text" | "em" | "strong" | "strikethrough" | "inlineCode" | "softBreak" | "hardBreak" | "image" | "link" | "autolink" | "citation" | "math";
424
+ /**
425
+ * Metadata available when a citation node is rendered.
426
+ *
427
+ * @public
428
+ */
429
+ interface StreamingMarkdownCitationRenderData {
430
+ id: string;
431
+ number: number | string;
432
+ definition?: CitationDefinition;
433
+ }
434
+ /**
435
+ * Extra class names for the outermost default element of a node type, for
436
+ * example `{ codeBlock: "cpk-markdown-code-block" }`. Ignored for node types
437
+ * that render no element of their own (`document`, `text`, `softBreak`).
438
+ *
439
+ * @public
440
+ */
441
+ type StreamingMarkdownNodeClassNames = Partial<Record<StreamingMarkdownNodeRendererKey, string>>;
442
+ /**
443
+ * Click behavior a backend attaches to a rendered element.
444
+ *
445
+ * @public
446
+ */
447
+ type StreamingMarkdownRenderAction = {
448
+ type: "link";
449
+ url: string;
450
+ node: StreamingMarkdownAstNode;
451
+ } | {
452
+ type: "citation";
453
+ citation: StreamingMarkdownCitationRenderData;
454
+ node: StreamingMarkdownAstNode;
455
+ };
456
+ /**
457
+ * A plain element. Attribute values are already sanitized; `true` marks a
458
+ * boolean attribute that is present.
459
+ *
460
+ * @public
461
+ */
462
+ interface StreamingMarkdownRenderElement {
463
+ kind: "element";
464
+ key: string;
465
+ tag: string;
466
+ attrs: Readonly<Record<string, string | true>>;
467
+ children: StreamingMarkdownRenderChild[];
468
+ action?: StreamingMarkdownRenderAction;
469
+ }
470
+ /**
471
+ * A text run.
472
+ *
473
+ * @public
474
+ */
475
+ interface StreamingMarkdownRenderText {
476
+ kind: "text";
477
+ key: string;
478
+ text: string;
479
+ }
480
+ /**
481
+ * Where the streaming caret goes. The backend decides what the caret looks like.
482
+ *
483
+ * @public
484
+ */
485
+ interface StreamingMarkdownRenderCaret {
486
+ kind: "caret";
487
+ key: string;
488
+ }
489
+ /**
490
+ * Placeholder inside a node's default `output` that stands for its `children`.
491
+ *
492
+ * @public
493
+ */
494
+ interface StreamingMarkdownRenderSlot {
495
+ kind: "slot";
496
+ key: string;
497
+ }
498
+ /**
499
+ * One AST node, ready to render. Backends render `children` once, render
500
+ * `output` with every `slot` replaced by those children, and pass both to a
501
+ * custom node renderer when one is registered for `rendererKey`.
502
+ *
503
+ * @public
504
+ */
505
+ interface StreamingMarkdownRenderNode {
506
+ kind: "node";
507
+ key: string;
508
+ node: StreamingMarkdownAstNode;
509
+ rendererKey: StreamingMarkdownNodeRendererKey;
510
+ /** Content a custom renderer receives as its children; `null` for leaves. */
511
+ children: StreamingMarkdownRenderChild[] | null;
512
+ /** The default rendering. */
513
+ output: StreamingMarkdownRenderChild[];
514
+ /** `true` when the caret renders somewhere inside this node. */
515
+ containsCaret: boolean;
516
+ citation?: StreamingMarkdownCitationRenderData;
517
+ }
518
+ /**
519
+ * Any entry in a render tree.
520
+ *
521
+ * @public
522
+ */
523
+ type StreamingMarkdownRenderChild = StreamingMarkdownRenderNode | StreamingMarkdownRenderElement | StreamingMarkdownRenderText | StreamingMarkdownRenderCaret | StreamingMarkdownRenderSlot;
524
+ /**
525
+ * Options for {@link buildStreamingMarkdownRenderTree}.
526
+ *
527
+ * @public
528
+ */
529
+ interface StreamingMarkdownRenderTreeOptions {
530
+ /** Render a caret inside the deepest open node while streaming. */
531
+ caret: boolean;
532
+ nodeClassNames?: StreamingMarkdownNodeClassNames;
533
+ }
534
+ /**
535
+ * Class on the root element every renderer emits.
536
+ * @public
537
+ */
538
+ declare const STREAMING_MARKDOWN_ROOT_CLASS = "cpk-streaming-markdown-root";
539
+ /**
540
+ * Node classes CopilotKit's built-in chat markdown renderers (React, Vue,
541
+ * Angular) apply, so all three emit the same themed markup.
542
+ * @public
543
+ */
544
+ declare const CHAT_MARKDOWN_NODE_CLASS_NAMES: {
545
+ readonly codeBlock: "cpk-markdown-code-block";
546
+ };
547
+ /**
548
+ * Attributes of the default caret element.
549
+ * @public
550
+ */
551
+ declare const STREAMING_MARKDOWN_CARET_ATTRS: {
552
+ readonly "aria-hidden": "true";
553
+ readonly class: "cpk-streaming-markdown-caret";
554
+ readonly "data-streaming-markdown-caret": "true";
555
+ };
556
+ /**
557
+ * Inline style of the default caret element (camelCase CSS properties).
558
+ * @public
559
+ */
560
+ declare const STREAMING_MARKDOWN_CARET_STYLE: {
561
+ readonly display: "inline-block";
562
+ readonly width: "0.48em";
563
+ readonly height: "0.48em";
564
+ readonly marginInlineStart: "0.08em";
565
+ readonly verticalAlign: "-0.08em";
566
+ readonly borderRadius: "999px";
567
+ readonly backgroundColor: "currentColor";
568
+ readonly opacity: "0.55";
569
+ };
570
+ /**
571
+ * Stylesheet every renderer injects next to its root: the per-token fade-in
572
+ * for text segments and the citation pill. Read at render time, so it is safe
573
+ * to call during server rendering.
574
+ *
575
+ * @public
576
+ */
577
+ declare function getStreamingMarkdownStyles(): string;
578
+ /**
579
+ * Returns `href` when its scheme is allowed for links, else `undefined`.
580
+ * @public
581
+ */
582
+ declare function sanitizeStreamingMarkdownHref(href: string | undefined): string | undefined;
583
+ /**
584
+ * Returns `src` when its scheme is allowed for images, else `undefined`.
585
+ * @public
586
+ */
587
+ declare function sanitizeStreamingMarkdownImageSrc(src: string | undefined): string | undefined;
588
+ type CitationNode = Extract<StreamingMarkdownAstNode, {
589
+ type: "citation";
590
+ }>;
591
+ /**
592
+ * The deepest open (still streaming) node other than the document, or `null`.
593
+ * This is where the caret goes.
594
+ *
595
+ * @public
596
+ */
597
+ declare function findStreamingMarkdownOpenNode(state: StreamingMarkdownParserState): StreamingMarkdownParagraphNode | StreamingMarkdownHeadingNode | StreamingMarkdownBlockquoteNode | StreamingMarkdownListNode | StreamingMarkdownListItemNode | StreamingMarkdownCodeBlockNode | StreamingMarkdownTableNode | StreamingMarkdownTableRowNode | StreamingMarkdownTableCellNode | StreamingMarkdownThematicBreakNode | StreamingMarkdownTextNode | StreamingMarkdownEmphasisNode | StreamingMarkdownStrongNode | StreamingMarkdownStrikethroughNode | StreamingMarkdownInlineCodeNode | StreamingMarkdownSoftBreakNode | StreamingMarkdownHardBreakNode | StreamingMarkdownImageNode | StreamingMarkdownLinkNode | StreamingMarkdownAutolinkNode | StreamingMarkdownCitationNode | StreamingMarkdownMathNode | null;
598
+ /**
599
+ * Citation number and definition for a citation node.
600
+ *
601
+ * @public
602
+ */
603
+ declare function getStreamingMarkdownCitationData(node: CitationNode, citations: CitationState): StreamingMarkdownCitationRenderData;
604
+ /**
605
+ * Turns parser state into a framework-neutral render tree: which elements to
606
+ * create, their sanitized attributes, click actions, text segments for the
607
+ * per-token animation, and where the caret goes. The React, Vue, and DOM
608
+ * renderers all render this tree, so markup and sanitization live here only.
609
+ *
610
+ * @param state - Parser state from the streaming markdown parser.
611
+ * @param options - Whether to place a caret, and optional per-node classes.
612
+ * @returns The root render node (`null` when the state has no root) and the
613
+ * open node the caret targets.
614
+ * @public
615
+ */
616
+ declare function buildStreamingMarkdownRenderTree(state: StreamingMarkdownParserState, options: StreamingMarkdownRenderTreeOptions): {
617
+ root: StreamingMarkdownRenderNode | null;
618
+ openNode: StreamingMarkdownParagraphNode | StreamingMarkdownHeadingNode | StreamingMarkdownBlockquoteNode | StreamingMarkdownListNode | StreamingMarkdownListItemNode | StreamingMarkdownCodeBlockNode | StreamingMarkdownTableNode | StreamingMarkdownTableRowNode | StreamingMarkdownTableCellNode | StreamingMarkdownThematicBreakNode | StreamingMarkdownTextNode | StreamingMarkdownEmphasisNode | StreamingMarkdownStrongNode | StreamingMarkdownStrikethroughNode | StreamingMarkdownInlineCodeNode | StreamingMarkdownSoftBreakNode | StreamingMarkdownHardBreakNode | StreamingMarkdownImageNode | StreamingMarkdownLinkNode | StreamingMarkdownAutolinkNode | StreamingMarkdownCitationNode | StreamingMarkdownMathNode | null;
619
+ isComplete: boolean;
620
+ };
621
+ /**
622
+ * The render tree produced by {@link buildStreamingMarkdownRenderTree}.
623
+ * @public
624
+ */
625
+ type StreamingMarkdownRenderTree = ReturnType<typeof buildStreamingMarkdownRenderTree>;
359
626
  //#endregion
360
- export { type CitationDefinition, type CitationState, type ParseMode, type SegmenterOptions, type StreamingMarkdownAstNode, type StreamingMarkdownNodeType, type StreamingMarkdownParserOptions, type StreamingMarkdownParserState, type StreamingMarkdownWarning, type TextSegment, createStreamingMarkdownParserState, finalizeStreamingMarkdown, parseStreamingMarkdownChunk, warnUnsupportedRichSyntaxOnce };
627
+ export { CHAT_MARKDOWN_NODE_CLASS_NAMES, type CitationDefinition, type CitationState, type ParseMode, STREAMING_MARKDOWN_CARET_ATTRS, STREAMING_MARKDOWN_CARET_STYLE, STREAMING_MARKDOWN_ROOT_CLASS, type SegmenterOptions, type StreamingMarkdownAstNode, type StreamingMarkdownCitationRenderData, type StreamingMarkdownNodeClassNames, type StreamingMarkdownNodeRendererKey, type StreamingMarkdownNodeType, type StreamingMarkdownParserOptions, type StreamingMarkdownParserSession, type StreamingMarkdownParserState, type StreamingMarkdownRenderAction, type StreamingMarkdownRenderCaret, type StreamingMarkdownRenderChild, type StreamingMarkdownRenderElement, type StreamingMarkdownRenderNode, type StreamingMarkdownRenderSlot, type StreamingMarkdownRenderText, type StreamingMarkdownRenderTree, type StreamingMarkdownRenderTreeOptions, type StreamingMarkdownWarning, type TextSegment, buildStreamingMarkdownRenderTree, createStreamingMarkdownParserState, finalizeStreamingMarkdown, findStreamingMarkdownOpenNode, getStreamingMarkdownCitationData, getStreamingMarkdownStyles, parseStreamingMarkdownChunk, sanitizeStreamingMarkdownHref, sanitizeStreamingMarkdownImageSrc, updateStreamingMarkdownParserSession, warnUnsupportedRichSyntaxOnce };
361
628
  //# sourceMappingURL=index.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.mts","names":[],"sources":["../src/parser/types.ts","../src/parser/state.ts","../src/dev-warning.ts"],"mappings":"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"}
1
+ {"version":3,"file":"index.d.mts","names":[],"sources":["../src/parser/types.ts","../src/parser/state.ts","../src/dev-warning.ts","../src/render/parser-session.ts","../src/render/render-tree.ts"],"mappings":"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"}