@lukeashford/aurelius 4.6.0 → 4.8.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/dist/index.d.ts CHANGED
@@ -1,5 +1,4 @@
1
1
  import React$1, { ReactNode } from 'react';
2
- import { Config } from 'dompurify';
3
2
  import ReactPlayer from 'react-player';
4
3
 
5
4
  type ButtonVariant = 'primary' | 'important' | 'elevated' | 'outlined' | 'featured' | 'ghost' | 'danger';
@@ -40,6 +39,21 @@ interface CardHeaderProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, '
40
39
  title?: React$1.ReactNode;
41
40
  subtitle?: React$1.ReactNode;
42
41
  action?: React$1.ReactNode;
42
+ /**
43
+ * Optional addressable handle (the artifact's `name` / `@-handle`). Renders
44
+ * as a tertiary monospace line below the subtitle, prefixed with `@`. Click
45
+ * copies `@<handle>` to the clipboard and pulses the handle once. Use to
46
+ * surface the typed identifier filmmakers reference in chat.
47
+ */
48
+ handle?: string;
49
+ }
50
+ /**
51
+ * Click-to-copy `@-handle` line. Rendered automatically by `Card.Header` when
52
+ * its `handle` prop is set; exposed standalone as `Card.Handle` for custom
53
+ * card layouts that don't use `Card.Header` (e.g. `DeliverableCard`).
54
+ */
55
+ interface CardHandleProps {
56
+ handle: string;
43
57
  }
44
58
  interface CardBodyProps extends React$1.HTMLAttributes<HTMLDivElement> {
45
59
  }
@@ -55,6 +69,7 @@ declare const Card: React$1.ForwardRefExoticComponent<CardProps & React$1.RefAtt
55
69
  Body: React$1.ForwardRefExoticComponent<CardBodyProps & React$1.RefAttributes<HTMLDivElement>>;
56
70
  Footer: React$1.ForwardRefExoticComponent<CardFooterProps & React$1.RefAttributes<HTMLDivElement>>;
57
71
  Media: React$1.ForwardRefExoticComponent<CardMediaProps & React$1.RefAttributes<HTMLDivElement>>;
72
+ Handle: React$1.FC<CardHandleProps>;
58
73
  };
59
74
 
60
75
  type ContainerSize = 'sm' | 'md' | 'lg' | 'xl' | 'fluid' | 'responsive';
@@ -243,6 +258,122 @@ interface FileChipProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, 'ch
243
258
  }
244
259
  declare const FileChip: React$1.ForwardRefExoticComponent<FileChipProps & React$1.RefAttributes<HTMLDivElement>>;
245
260
 
261
+ interface MentionChipProps extends Omit<React$1.HTMLAttributes<HTMLSpanElement>, 'children' | 'onClick'> {
262
+ /**
263
+ * The artifact name (the @-handle, without the leading @).
264
+ */
265
+ name: string;
266
+ /**
267
+ * Optional human-readable title; shown in the hover tooltip alongside the name.
268
+ */
269
+ title?: string;
270
+ /**
271
+ * Optional icon rendered before the name — typically a kind glyph (e.g. `FileImage`,
272
+ * `FileVideo`) or `HelpCircle` for unknown / stale references. Sized at `w-3 h-3` to
273
+ * match the chip's text scale.
274
+ */
275
+ leadingIcon?: React$1.ReactNode;
276
+ /**
277
+ * Called when the chip is clicked. When provided, the chip becomes keyboard-focusable
278
+ * and gains a hover affordance.
279
+ */
280
+ onClick?: () => void;
281
+ /**
282
+ * Called when the remove (×) button is clicked. When provided, an × appears on hover/focus.
283
+ * Use only on input-side previews; rendered messages should leave this unset.
284
+ */
285
+ onRemove?: () => void;
286
+ }
287
+ /**
288
+ * Inline chip representing an `@name` artifact mention. Use anywhere a stable reference to a
289
+ * project artifact appears — typed input previews, rendered chat messages, deliverable
290
+ * descriptions. Renders the name in monospace with a leading `@` glyph and a gold-tinted border,
291
+ * mirroring the addressable handle the user sees on the artifact card.
292
+ *
293
+ * Pair with the `Combobox` primitive for the typing surface, and with the
294
+ * `MarkdownContent` `mentionRenderer` prop to render mentions inline inside rendered chat
295
+ * messages — typically `mentionRenderer={(name) => <MentionChip name={name} … />}`.
296
+ */
297
+ declare const MentionChip: React$1.ForwardRefExoticComponent<MentionChipProps & React$1.RefAttributes<HTMLSpanElement>>;
298
+
299
+ interface ComboboxProps<T> extends Omit<React$1.HTMLAttributes<HTMLDivElement>, 'children'> {
300
+ /**
301
+ * Items to display in the panel. The caller is responsible for filtering before passing.
302
+ */
303
+ items: T[];
304
+ /**
305
+ * Index of the currently highlighted (focused, not yet picked) item. Drive this from
306
+ * `useComboboxNav` for the standard arrow-key behaviour, or manage it yourself.
307
+ */
308
+ selectedIndex: number;
309
+ /**
310
+ * Render one row. `isSelected` reflects the keyboard highlight; click and hover styling
311
+ * are applied by the panel.
312
+ */
313
+ renderItem: (item: T, isSelected: boolean) => React$1.ReactNode;
314
+ /**
315
+ * Called when the user clicks a row. Use the same handler you call from the keyboard's
316
+ * Enter key to keep mouse and keyboard paths consistent.
317
+ */
318
+ onSelectItem: (item: T) => void;
319
+ /**
320
+ * Stable key per item. Required because the panel re-mounts rows when `items` changes.
321
+ */
322
+ getItemKey: (item: T) => string;
323
+ /**
324
+ * Optional node rendered when `items` is empty. Skip the panel entirely if you'd rather
325
+ * hide it on no-match.
326
+ */
327
+ emptyState?: React$1.ReactNode;
328
+ /**
329
+ * Maximum pixel height of the scrollable list. The panel itself sizes to its content
330
+ * up to this cap; rows beyond it scroll within the panel.
331
+ * @default 256
332
+ */
333
+ maxHeight?: number;
334
+ }
335
+ /**
336
+ * Floating panel for inline autocompletes — `@`-mention pickers, slash-command menus, and
337
+ * the like. The panel is unstyled-positioned (`absolute`) so the caller controls placement
338
+ * via wrapper, `style`, or by mounting it inside their own positioned container; this keeps
339
+ * the component agnostic to how the trigger position is computed (caret coordinates, ref
340
+ * rect, popover anchor).
341
+ *
342
+ * Pair with `useComboboxNav` for the standard arrow-key + Enter/Escape behaviour.
343
+ */
344
+ declare function Combobox<T>({ items, selectedIndex, renderItem, onSelectItem, getItemKey, emptyState, maxHeight, className, ...rest }: ComboboxProps<T>): React$1.JSX.Element | null;
345
+ /**
346
+ * Result of `useComboboxNav`. Forward `handleKeyDown` from the input element that owns focus
347
+ * (typically a textarea); it returns true when it consumed the event so the caller knows to
348
+ * skip its own handling.
349
+ */
350
+ interface ComboboxNav {
351
+ selectedIndex: number;
352
+ setSelectedIndex: (index: number) => void;
353
+ /**
354
+ * Standard handler for ArrowUp / ArrowDown / Enter / Escape. Returns true when a key was
355
+ * consumed — the caller should skip its own handling for those events.
356
+ */
357
+ handleKeyDown: (e: React$1.KeyboardEvent) => boolean;
358
+ }
359
+ interface UseComboboxNavOptions<T> {
360
+ items: T[];
361
+ /**
362
+ * Called when the user presses Enter on the highlighted item.
363
+ */
364
+ onSelect: (item: T) => void;
365
+ /**
366
+ * Called when the user presses Escape.
367
+ */
368
+ onDismiss: () => void;
369
+ }
370
+ /**
371
+ * Standard keyboard nav for an inline autocomplete: ArrowUp / ArrowDown wrap through items,
372
+ * Enter selects the highlighted item, Escape dismisses. Resets the highlight to 0 whenever
373
+ * the items array changes (reference equality), so a fresh filter result starts at the top.
374
+ */
375
+ declare function useComboboxNav<T>({ items, onSelect, onDismiss }: UseComboboxNavOptions<T>): ComboboxNav;
376
+
246
377
  interface AttachmentItem {
247
378
  /**
248
379
  * Unique identifier
@@ -438,6 +569,51 @@ declare const Modal: {
438
569
  displayName: string;
439
570
  };
440
571
 
572
+ interface LightboxProps {
573
+ /**
574
+ * Called when the user dismisses the lightbox (ESC, backdrop click, X button).
575
+ * The caller owns the open/closed state — when `onClose` fires, unmount the
576
+ * lightbox.
577
+ */
578
+ onClose: () => void;
579
+ /**
580
+ * Optional kind-specific actions placed before the close button in the
581
+ * floating top-right cluster. Typically buttons like "Share" or "Download".
582
+ * The cluster always renders the close button; pass `undefined` if the only
583
+ * affordance is dismiss.
584
+ */
585
+ actions?: React$1.ReactNode;
586
+ /**
587
+ * Optional caption shown bottom-centre over the backdrop. Use for short
588
+ * metadata like a title and subtitle. Non-interactive — clicks pass through
589
+ * to the backdrop and dismiss.
590
+ */
591
+ caption?: React$1.ReactNode;
592
+ /**
593
+ * The artifact body. Sits directly on the backdrop with no inner frame —
594
+ * the body is responsible for its own layout (object-contain image, scrollable
595
+ * deliverable, readable text column, etc.). Click events whose target is the
596
+ * sized content wrapper (i.e. the empty area around the body) dismiss the
597
+ * lightbox; clicks on the body itself do not.
598
+ */
599
+ children: React$1.ReactNode;
600
+ className?: string;
601
+ }
602
+ /**
603
+ * Full-bleed modal canvas for one piece of content. Premium-haptic alternative
604
+ * to a bordered modal: deep void backdrop, scale-fade entrance, no inner frame,
605
+ * floating glass action cluster top-right.
606
+ *
607
+ * The component is content-agnostic — it ships chrome, not artifact knowledge.
608
+ * Compose it with kind-aware bodies and action sets to build the artifact
609
+ * viewer; reach for it directly any time a single piece of content needs the
610
+ * full screen.
611
+ *
612
+ * Dismiss surfaces: ESC, backdrop click (outside the sized content area),
613
+ * close button in the action cluster.
614
+ */
615
+ declare function Lightbox({ onClose, actions, caption, children, className, }: LightboxProps): React$1.JSX.Element;
616
+
441
617
  type DrawerPosition = 'left' | 'right' | 'top' | 'bottom';
442
618
  interface DrawerProps {
443
619
  isOpen: boolean;
@@ -766,24 +942,42 @@ declare const StreamingCursor: React$1.ForwardRefExoticComponent<StreamingCursor
766
942
 
767
943
  interface MarkdownContentProps extends React$1.HTMLAttributes<HTMLDivElement> {
768
944
  /**
769
- * Content to display (can be Markdown or HTML)
945
+ * Content to display. Markdown by default; pass `isMarkdown={false}` for literal display
946
+ * of plain text (preserves whitespace, no parsing).
770
947
  */
771
948
  content: string;
772
949
  /**
773
- * Whether the content should be treated as Markdown
950
+ * Whether the content should be parsed as Markdown. `false` renders the string verbatim
951
+ * inside a `whitespace-pre-wrap` block — useful for plain-text artifacts.
774
952
  * @default true
775
953
  */
776
954
  isMarkdown?: boolean;
777
- sanitizeConfig?: Config;
778
955
  /**
779
- * When true, injects a streaming cursor at the end of the content
956
+ * When true, injects a streaming cursor at the end of the rendered content.
780
957
  */
781
958
  isStreaming?: boolean;
782
959
  /**
783
- * Additional classes for the streaming cursor
960
+ * Additional classes for the streaming cursor.
784
961
  */
785
962
  cursorClassName?: string;
963
+ /**
964
+ * When set, the renderer recognises `@artifact_name` mentions in prose (anywhere except
965
+ * inside code spans / blocks) and replaces each with the React node returned by this
966
+ * callback. Typical wiring is `(name) => <MentionChip name={name} onClick={...} />`,
967
+ * giving each chip a real per-call-site click handler.
968
+ *
969
+ * Without this prop, mentions render as literal `@name` text.
970
+ */
971
+ mentionRenderer?: (name: string) => React$1.ReactNode;
786
972
  }
973
+ /**
974
+ * Renders Markdown content into a real React tree via `react-markdown`. Drop-in for prose
975
+ * surfaces (chat messages, artifact bodies, deliverable text). Optional `mentionRenderer`
976
+ * adds inline `@artifact_name` chip rendering — see prop docs.
977
+ *
978
+ * Raw HTML in the source is escaped (not rendered) by react-markdown's defaults; this is
979
+ * intentional and safer than the previous pipeline. Pass markdown.
980
+ */
787
981
  declare const MarkdownContent: React$1.ForwardRefExoticComponent<MarkdownContentProps & React$1.RefAttributes<HTMLDivElement>>;
788
982
 
789
983
  /**
@@ -1043,6 +1237,19 @@ interface ChatInputProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, 'o
1043
1237
  * Whether to automatically focus the input when it becomes enabled
1044
1238
  */
1045
1239
  autoFocus?: boolean;
1240
+ /**
1241
+ * Optional ref forwarded to the underlying `<textarea>`. Use this to drive an inline
1242
+ * autocomplete (e.g. an `@`-mention picker) — read selection/caret position, mirror the
1243
+ * textarea for caret coordinates, or imperatively update its value.
1244
+ */
1245
+ textareaRef?: React$1.Ref<HTMLTextAreaElement>;
1246
+ /**
1247
+ * Optional keydown hook that runs before the input's own handling. Call
1248
+ * `e.preventDefault()` to stop ChatInput from acting on the event — for example, to keep
1249
+ * Enter from submitting while an autocomplete is consuming it. The submit-on-Enter and
1250
+ * default newline behaviours both check `defaultPrevented` and skip when set.
1251
+ */
1252
+ onTextareaKeyDown?: (e: React$1.KeyboardEvent<HTMLTextAreaElement>) => void;
1046
1253
  }
1047
1254
  /**
1048
1255
  * ChatInput is a context-aware input component that can transition between
@@ -1187,6 +1394,48 @@ interface ToolSidebarProps extends React$1.HTMLAttributes<HTMLDivElement> {
1187
1394
  */
1188
1395
  declare const ToolSidebar: React$1.ForwardRefExoticComponent<ToolSidebarProps & React$1.RefAttributes<HTMLDivElement>>;
1189
1396
 
1397
+ interface UseScrollAnchorOptions {
1398
+ /**
1399
+ * Behavior for scrolling. Defaults to 'smooth'.
1400
+ */
1401
+ behavior?: ScrollBehavior;
1402
+ /**
1403
+ * Block alignment for scrollIntoView. Defaults to 'start'.
1404
+ */
1405
+ block?: ScrollLogicalPosition;
1406
+ }
1407
+ interface UseScrollAnchorReturn {
1408
+ /**
1409
+ * Ref to attach to the scrollable container
1410
+ */
1411
+ containerRef: React.RefObject<HTMLDivElement | null>;
1412
+ /**
1413
+ * Ref to attach to the anchor element (latest user message)
1414
+ */
1415
+ anchorRef: React.RefObject<HTMLDivElement | null>;
1416
+ /**
1417
+ * Scroll the anchor element into view. Call this on user message submission.
1418
+ */
1419
+ scrollToAnchor: () => void;
1420
+ /**
1421
+ * Scroll to the bottom of the container.
1422
+ */
1423
+ scrollToBottom: () => void;
1424
+ /**
1425
+ * Check if user has scrolled away from the bottom.
1426
+ */
1427
+ isScrolledToBottom: () => boolean;
1428
+ }
1429
+ /**
1430
+ * Hook for smart scroll behavior in chat interfaces.
1431
+ *
1432
+ * Key behaviors:
1433
+ * - Anchors user messages to the top of the viewport when they send a message
1434
+ * - Does NOT auto-scroll during streaming to respect user's reading position
1435
+ * - Allows manual scroll detection
1436
+ */
1437
+ declare function useScrollAnchor(options?: UseScrollAnchorOptions): UseScrollAnchorReturn;
1438
+
1190
1439
  /**
1191
1440
  * Script element types following standard screenplay format
1192
1441
  */
@@ -1223,6 +1472,8 @@ interface ScriptCardProps extends Omit<CardProps, 'title'> {
1223
1472
  * Subtitle/metadata (e.g., "30-second spot • Directed by AI Creative")
1224
1473
  */
1225
1474
  subtitle?: React$1.ReactNode;
1475
+ /** The artifact's `@-handle` — see `Card.Header.handle`. */
1476
+ handle?: string;
1226
1477
  /**
1227
1478
  * Array of script elements in order.
1228
1479
  * Available types: 'scene-heading', 'action', 'character', 'dialogue', 'parenthetical',
@@ -1261,116 +1512,351 @@ interface ScriptCardProps extends Omit<CardProps, 'title'> {
1261
1512
  declare const ScriptCard: React$1.ForwardRefExoticComponent<ScriptCardProps & React$1.RefAttributes<HTMLDivElement>>;
1262
1513
 
1263
1514
  /**
1264
- * Artifact types supported by the system
1265
- */
1266
- declare const ARTIFACT_TYPES: {
1267
- readonly TEXT: "TEXT";
1268
- readonly IMAGE: "IMAGE";
1269
- readonly VIDEO: "VIDEO";
1270
- readonly AUDIO: "AUDIO";
1271
- readonly SCRIPT: "SCRIPT";
1272
- readonly PDF: "PDF";
1273
- };
1274
- type ArtifactType = typeof ARTIFACT_TYPES[keyof typeof ARTIFACT_TYPES];
1275
- interface Artifact {
1276
- id: string;
1277
- type: ArtifactType;
1278
- /**
1279
- * For text artifacts - the content (markdown, HTML, or plain text)
1280
- */
1281
- inlineContent?: string;
1282
- /**
1283
- * For artifacts that source from a URL (image, video, audio, pdf, file)
1284
- */
1285
- url?: string;
1286
- /**
1287
- * The mime type of the content
1288
- */
1289
- mimeType?: string;
1290
- /**
1291
- * For image artifacts - alt text
1292
- */
1293
- alt?: string;
1294
- /**
1295
- * Display title shown below the artifact
1296
- */
1297
- title?: string;
1298
- /**
1299
- * Display subtitle shown below the title
1300
- */
1301
- subtitle?: string;
1302
- /**
1303
- * Whether this artifact is still loading (shows skeleton)
1304
- */
1305
- isPending?: boolean;
1306
- /**
1307
- * Whether the artifact should span full width in the grid
1308
- */
1309
- fullWidth?: boolean;
1310
- /**
1311
- * For html artifacts - structured script elements (used by ScriptCard)
1312
- */
1313
- scriptElements?: ScriptElement[];
1314
- }
1315
- interface ArtifactCardProps extends React$1.HTMLAttributes<HTMLDivElement> {
1316
- /**
1317
- * The artifact object to display
1318
- */
1319
- artifact: Artifact;
1320
- /**
1321
- * Callback when the artifact should be expanded/opened
1322
- */
1323
- onExpand?: (artifact: Artifact) => void;
1324
- /**
1325
- * Whether the artifact is still loading
1326
- */
1327
- loading?: CardSlotLoading;
1328
- }
1329
- /**
1330
- * A dispatcher component that renders the appropriate specialist card
1331
- * based on the artifact type.
1515
+ * Wire format for a presentable deliverable. The document is composed once by
1516
+ * the backend (or hand-authored) and rendered here — the renderer never reads
1517
+ * raw HTML from data, it dispatches on `type` to a typed component per section.
1518
+ *
1519
+ * The shape mirrors hypocaust's `ResolvedDeliverableDto`. When the OpenAPI
1520
+ * client is regenerated downstream of a hypocaust schema change, the types
1521
+ * here should be kept aligned.
1332
1522
  */
1333
- declare const ArtifactCard: React$1.ForwardRefExoticComponent<ArtifactCardProps & React$1.RefAttributes<HTMLDivElement>>;
1334
-
1335
1523
  /**
1336
- * Node types in the artifact tree
1524
+ * Top-level deliverable. Holds metadata used on the cover and an ordered list
1525
+ * of sections to render.
1337
1526
  */
1338
- declare const NODE_TYPES: {
1339
- readonly ARTIFACT: "ARTIFACT";
1340
- readonly GROUP: "GROUP";
1341
- readonly VARIANT_SET: "VARIANT_SET";
1342
- };
1343
- type NodeType = typeof NODE_TYPES[keyof typeof NODE_TYPES];
1527
+ interface Deliverable {
1528
+ /** Schema version. 1 today. */
1529
+ version: number;
1530
+ /** Document title — also used as the default cover title. */
1531
+ title: string;
1532
+ /** Optional one-line subtitle / tagline. */
1533
+ subtitle?: string | null;
1534
+ /** Optional client name shown as "Prepared for {clientName}" on the cover. */
1535
+ clientName?: string | null;
1536
+ /** Optional accent hex color (e.g. "#fecb6b"). Falls back to design-system gold. */
1537
+ accentColor?: string | null;
1538
+ /** Ordered sections. Render in array order. */
1539
+ sections: DeliverableSection[];
1540
+ }
1344
1541
  /**
1345
- * A node in the artifact tree. Mirrors the backend ArtifactNode shape.
1346
- * Groups and variant sets contain children; artifact nodes link to content.
1542
+ * Discriminated union of section types. Each variant has a matching renderer
1543
+ * in aurelius the agent fills the spec, never raw layout instructions.
1347
1544
  */
1348
- interface ArtifactNode {
1349
- /**
1350
- * Unique identifier
1351
- */
1352
- id: string;
1353
- /**
1354
- * The node type — ARTIFACT, GROUP, or VARIANT_SET
1355
- */
1356
- type: NodeType;
1357
- /**
1358
- * Semantic name (e.g. "storyboard", "protagonist_warm")
1359
- */
1360
- name: string;
1361
- /**
1362
- * Display label (e.g. "Storyboard", "Warm Analog")
1363
- */
1364
- label: string;
1365
- /**
1366
- * For ARTIFACT nodes — the actual content. Null for GROUP and VARIANT_SET.
1367
- */
1368
- artifact?: Artifact;
1369
- /**
1370
- * Child nodes (populated for GROUP and VARIANT_SET)
1371
- */
1372
- children: ArtifactNode[];
1373
- }
1545
+ type DeliverableSection = CoverSection$1 | ArtifactImageGridSection$1 | ArtifactSpotlightSection$1 | TextBlockSection$1 | ColorPaletteSection$1 | QuoteBlockSection$1;
1546
+ interface CoverSection$1 {
1547
+ type: 'COVER';
1548
+ eyebrow?: string | null;
1549
+ title: string;
1550
+ subtitle?: string | null;
1551
+ }
1552
+ interface ArtifactImageGridSection$1 {
1553
+ type: 'ARTIFACT_IMAGE_GRID';
1554
+ heading?: string | null;
1555
+ /** 1, 2 or 3. */
1556
+ columns: number;
1557
+ items: DeliverableImageItem[];
1558
+ }
1559
+ interface ArtifactSpotlightSection$1 {
1560
+ type: 'ARTIFACT_SPOTLIGHT';
1561
+ heading?: string | null;
1562
+ artifact: DeliverableArtifactRef;
1563
+ body?: string | null;
1564
+ }
1565
+ interface TextBlockSection$1 {
1566
+ type: 'TEXT_BLOCK';
1567
+ heading?: string | null;
1568
+ body: string;
1569
+ }
1570
+ interface ColorPaletteSection$1 {
1571
+ type: 'COLOR_PALETTE';
1572
+ heading?: string | null;
1573
+ swatches: DeliverableSwatch[];
1574
+ }
1575
+ interface QuoteBlockSection$1 {
1576
+ type: 'QUOTE_BLOCK';
1577
+ quote: string;
1578
+ attribution?: string | null;
1579
+ }
1580
+ interface DeliverableImageItem {
1581
+ artifact: DeliverableArtifactRef;
1582
+ caption?: string | null;
1583
+ }
1584
+ interface DeliverableSwatch {
1585
+ color: string;
1586
+ label: string;
1587
+ }
1588
+ /**
1589
+ * Minimal subset of the hypocaust ArtifactDto shape consumed by the renderer.
1590
+ * Only the fields needed to render a deliverable's referenced artifacts.
1591
+ */
1592
+ interface DeliverableArtifactRef {
1593
+ url?: string | null;
1594
+ title?: string | null;
1595
+ description?: string | null;
1596
+ }
1597
+
1598
+ interface DeliverableRendererProps {
1599
+ /** Resolved deliverable spec — every artifact reference already inflated. */
1600
+ deliverable: Deliverable;
1601
+ /**
1602
+ * Called when the viewer requests a PDF download. The host application is
1603
+ * responsible for fetching and triggering the file save (the URL knows
1604
+ * about share tokens and credentials we don't). When omitted, the download
1605
+ * affordance is hidden.
1606
+ */
1607
+ onDownloadPdf?: () => void | Promise<void>;
1608
+ /** Hide the floating action bar entirely. Used when rendering for print. */
1609
+ hideActions?: boolean;
1610
+ className?: string;
1611
+ }
1612
+ /**
1613
+ * Render a presentable deliverable (moodboard, pitch deck) from a structured
1614
+ * spec. The same component drives the on-screen view and the print/PDF
1615
+ * version — `@media print` styles in `aurelius/styles/base.css` keep them in
1616
+ * sync. To produce a PDF, drive the page with headless Chromium and let the
1617
+ * print stylesheet do the work.
1618
+ *
1619
+ * The renderer is purely presentational: it takes a fully resolved spec
1620
+ * (artifact URLs already inflated by the caller) and dispatches each section
1621
+ * to its typed sub-renderer. Unknown section types are skipped silently
1622
+ * forward-compat for new section variants added by the backend.
1623
+ */
1624
+ declare function DeliverableRenderer({ deliverable, onDownloadPdf, hideActions, className, }: DeliverableRendererProps): React$1.JSX.Element;
1625
+
1626
+ interface CoverSectionProps {
1627
+ data: CoverSection$1;
1628
+ /** Document-level client name from {@link Deliverable.clientName}, shown as "Prepared for {name}". */
1629
+ clientName?: string | null;
1630
+ }
1631
+ /**
1632
+ * Title page for a deliverable. Always rendered as the first section.
1633
+ */
1634
+ declare function CoverSection({ data, clientName }: CoverSectionProps): React$1.JSX.Element;
1635
+
1636
+ interface ArtifactImageGridSectionProps {
1637
+ data: ArtifactImageGridSection$1;
1638
+ }
1639
+ /**
1640
+ * Grid of project artifact images with optional captions. The number of
1641
+ * columns is fixed by the spec (1–3); the renderer enforces a sensible aspect
1642
+ * ratio per item and lets the browser flow rows.
1643
+ */
1644
+ declare function ArtifactImageGridSection({ data }: ArtifactImageGridSectionProps): React$1.JSX.Element;
1645
+
1646
+ interface ArtifactSpotlightSectionProps {
1647
+ data: ArtifactSpotlightSection$1;
1648
+ }
1649
+ /**
1650
+ * A single hero artifact image with optional prose alongside. Reads at full
1651
+ * page width on screen and prints to a single page.
1652
+ */
1653
+ declare function ArtifactSpotlightSection({ data }: ArtifactSpotlightSectionProps): React$1.JSX.Element;
1654
+
1655
+ interface TextBlockSectionProps {
1656
+ data: TextBlockSection$1;
1657
+ }
1658
+ /**
1659
+ * Prose section. Body is rendered as Markdown.
1660
+ */
1661
+ declare function TextBlockSection({ data }: TextBlockSectionProps): React$1.JSX.Element;
1662
+
1663
+ interface ColorPaletteSectionProps {
1664
+ data: ColorPaletteSection$1;
1665
+ }
1666
+ /**
1667
+ * Color palette presented as labelled swatches with hex values.
1668
+ */
1669
+ declare function ColorPaletteSection({ data }: ColorPaletteSectionProps): React$1.JSX.Element;
1670
+
1671
+ interface QuoteBlockSectionProps {
1672
+ data: QuoteBlockSection$1;
1673
+ }
1674
+ /**
1675
+ * Pulled quote with optional attribution. The renderer adds the surrounding
1676
+ * quotation marks.
1677
+ */
1678
+ declare function QuoteBlockSection({ data }: QuoteBlockSectionProps): React$1.JSX.Element;
1679
+
1680
+ /**
1681
+ * Artifact types supported by the system
1682
+ */
1683
+ declare const ARTIFACT_TYPES: {
1684
+ readonly TEXT: "TEXT";
1685
+ readonly IMAGE: "IMAGE";
1686
+ readonly VIDEO: "VIDEO";
1687
+ readonly AUDIO: "AUDIO";
1688
+ readonly SCRIPT: "SCRIPT";
1689
+ readonly PDF: "PDF";
1690
+ readonly DELIVERABLE: "DELIVERABLE";
1691
+ };
1692
+ type ArtifactType = typeof ARTIFACT_TYPES[keyof typeof ARTIFACT_TYPES];
1693
+ interface Artifact {
1694
+ id: string;
1695
+ type: ArtifactType;
1696
+ /**
1697
+ * For text artifacts - the content (markdown, HTML, or plain text)
1698
+ */
1699
+ inlineContent?: string;
1700
+ /**
1701
+ * For artifacts that source from a URL (image, video, audio, pdf, file)
1702
+ */
1703
+ url?: string;
1704
+ /**
1705
+ * The mime type of the content
1706
+ */
1707
+ mimeType?: string;
1708
+ /**
1709
+ * For image artifacts - alt text
1710
+ */
1711
+ alt?: string;
1712
+ /**
1713
+ * Display title shown below the artifact
1714
+ */
1715
+ title?: string;
1716
+ /**
1717
+ * Display subtitle shown below the title
1718
+ */
1719
+ subtitle?: string;
1720
+ /**
1721
+ * Whether this artifact is still loading (shows skeleton)
1722
+ */
1723
+ isPending?: boolean;
1724
+ /**
1725
+ * Whether the artifact should span full width in the grid
1726
+ */
1727
+ fullWidth?: boolean;
1728
+ /**
1729
+ * For html artifacts - structured script elements (used by ScriptCard)
1730
+ */
1731
+ scriptElements?: ScriptElement[];
1732
+ /**
1733
+ * For deliverable artifacts - the resolved presentation spec, every artifact
1734
+ * reference already inflated. Rendered as a compact card that links to the
1735
+ * full DeliverableRenderer; surfaces the cover info and section count.
1736
+ */
1737
+ deliverable?: Deliverable;
1738
+ }
1739
+ interface ArtifactCardProps extends React$1.HTMLAttributes<HTMLDivElement> {
1740
+ /**
1741
+ * The artifact object to display
1742
+ */
1743
+ artifact: Artifact;
1744
+ /**
1745
+ * Callback when the artifact should be expanded/opened
1746
+ */
1747
+ onExpand?: (artifact: Artifact) => void;
1748
+ /**
1749
+ * Whether the artifact is still loading
1750
+ */
1751
+ loading?: CardSlotLoading;
1752
+ }
1753
+ /**
1754
+ * A dispatcher component that renders the appropriate specialist card
1755
+ * based on the artifact type.
1756
+ */
1757
+ declare const ArtifactCard: React$1.ForwardRefExoticComponent<ArtifactCardProps & React$1.RefAttributes<HTMLDivElement>>;
1758
+
1759
+ interface UseResizableProps {
1760
+ /**
1761
+ * Initial width as percentage of viewport (0-100)
1762
+ */
1763
+ initialWidthPercent: number;
1764
+ /**
1765
+ * Minimum width as percentage of viewport (0-100)
1766
+ */
1767
+ minWidthPercent: number;
1768
+ /**
1769
+ * Maximum width as percentage of viewport (0-100)
1770
+ */
1771
+ maxWidthPercent: number;
1772
+ /**
1773
+ * Direction to resize from
1774
+ */
1775
+ direction: 'left' | 'right';
1776
+ }
1777
+ /**
1778
+ * Hook for resizable panels with percentage-based widths.
1779
+ * Returns width as a CSS percentage string (e.g., "50%").
1780
+ */
1781
+ declare function useResizable({ initialWidthPercent, minWidthPercent, maxWidthPercent, direction, }: UseResizableProps): {
1782
+ width: string;
1783
+ widthPercent: number;
1784
+ isResizing: boolean;
1785
+ startResizing: (e: React.MouseEvent) => void;
1786
+ };
1787
+
1788
+ /**
1789
+ * Node types in the artifact tree
1790
+ */
1791
+ declare const NODE_TYPES: {
1792
+ readonly ARTIFACT: "ARTIFACT";
1793
+ readonly GROUP: "GROUP";
1794
+ readonly VARIANT_SET: "VARIANT_SET";
1795
+ };
1796
+ type NodeType = typeof NODE_TYPES[keyof typeof NODE_TYPES];
1797
+ /**
1798
+ * A node in the artifact tree. Mirrors the backend ArtifactNode shape.
1799
+ * Groups and variant sets contain children; artifact nodes link to content.
1800
+ */
1801
+ interface ArtifactNode {
1802
+ /**
1803
+ * Unique identifier
1804
+ */
1805
+ id: string;
1806
+ /**
1807
+ * The node type — ARTIFACT, GROUP, or VARIANT_SET
1808
+ */
1809
+ type: NodeType;
1810
+ /**
1811
+ * Semantic name (e.g. "storyboard", "protagonist_warm")
1812
+ */
1813
+ name: string;
1814
+ /**
1815
+ * Display label (e.g. "Storyboard", "Warm Analog")
1816
+ */
1817
+ label: string;
1818
+ /**
1819
+ * For ARTIFACT nodes — the actual content. Null for GROUP and VARIANT_SET.
1820
+ */
1821
+ artifact?: Artifact;
1822
+ /**
1823
+ * Child nodes (populated for GROUP and VARIANT_SET)
1824
+ */
1825
+ children: ArtifactNode[];
1826
+ }
1827
+
1828
+ /**
1829
+ * A breadcrumb entry representing one level of navigation depth.
1830
+ */
1831
+ interface BreadcrumbEntry {
1832
+ /** Display label for this level */
1833
+ label: string;
1834
+ /** The group node at this level (null for root) */
1835
+ node: ArtifactNode | null;
1836
+ }
1837
+ /**
1838
+ * Return type for the useArtifactTreeNavigation hook.
1839
+ */
1840
+ interface UseArtifactTreeNavigationReturn {
1841
+ /** Nodes to display at the current navigation level */
1842
+ currentNodes: ArtifactNode[];
1843
+ /** Breadcrumb trail from root to current level */
1844
+ breadcrumbs: BreadcrumbEntry[];
1845
+ /** Whether the user is at the root level */
1846
+ isAtRoot: boolean;
1847
+ /** Navigate into a group node, pushing it onto the stack */
1848
+ navigateInto: (node: ArtifactNode) => void;
1849
+ /** Navigate to a specific breadcrumb level by index */
1850
+ navigateTo: (index: number) => void;
1851
+ /** Navigate back one level */
1852
+ navigateBack: () => void;
1853
+ }
1854
+ /**
1855
+ * Manages navigation state for an artifact tree panel.
1856
+ * Maintains a stack of group nodes the user has navigated into,
1857
+ * deriving children from the node references themselves.
1858
+ */
1859
+ declare function useArtifactTreeNavigation(rootNodes: ArtifactNode[]): UseArtifactTreeNavigationReturn;
1374
1860
 
1375
1861
  interface Conversation {
1376
1862
  /**
@@ -1529,6 +2015,17 @@ interface ChatInterfaceProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>
1529
2015
  * Called when the artifacts panel is opened or closed (controlled).
1530
2016
  */
1531
2017
  onArtifactsPanelOpenChange?: (open: boolean) => void;
2018
+ /**
2019
+ * Resolves the floating action cluster shown over the artifact lightbox.
2020
+ * The host switches on `artifact.type` and returns the right buttons for
2021
+ * that kind (e.g. Share + Download for deliverables, Download for images).
2022
+ * Aurelius ships the close affordance itself; return only the kind-specific
2023
+ * actions, or `null` when none. Use `ctx.onClose` to dismiss the lightbox
2024
+ * after a successful operation.
2025
+ */
2026
+ getArtifactActions?: (artifact: Artifact, ctx: {
2027
+ onClose: () => void;
2028
+ }) => React$1.ReactNode;
1532
2029
  /**
1533
2030
  * Tasks to display in the todos list tool panel.
1534
2031
  * Shows a list of tasks with status indicators.
@@ -1576,6 +2073,20 @@ interface ChatInterfaceProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>
1576
2073
  * Defaults to true.
1577
2074
  */
1578
2075
  autoFocus?: boolean;
2076
+ /**
2077
+ * Forwarded to the underlying chat-input `<textarea>`. Use to drive an
2078
+ * inline autocomplete (e.g. an `@`-mention picker) — read selection/caret
2079
+ * position, mirror the textarea for caret coordinates, or imperatively
2080
+ * update its value.
2081
+ */
2082
+ textareaRef?: React$1.Ref<HTMLTextAreaElement>;
2083
+ /**
2084
+ * Forwarded to the underlying chat-input. Runs before the input's own
2085
+ * keydown handling; calling `e.preventDefault()` opts that event out of
2086
+ * default behaviour (submit-on-Enter, newline) — typical use is to claim
2087
+ * Arrow / Enter / Escape while an autocomplete panel is open.
2088
+ */
2089
+ onTextareaKeyDown?: (e: React$1.KeyboardEvent<HTMLTextAreaElement>) => void;
1579
2090
  }
1580
2091
  /**
1581
2092
  * ChatInterface is the main orchestrator for a full-featured chat experience.
@@ -1729,13 +2240,11 @@ interface ChatViewProps extends React$1.HTMLAttributes<HTMLDivElement> {
1729
2240
  * last-found user message in `items`.
1730
2241
  */
1731
2242
  latestUserMessageIndex?: number;
1732
- /**
1733
- * Whether the assistant is currently streaming a response. Drives the
1734
- * streaming cursor on the last assistant message and the thinking indicator.
1735
- */
1736
- isStreaming?: boolean;
1737
2243
  /**
1738
2244
  * Whether to show the thinking indicator (between user message and response).
2245
+ * Renders only when the latest message is a user turn — i.e. the assistant
2246
+ * hasn't sent its first chunk yet. Streaming-cursor behavior is owned by
2247
+ * the per-node {@code isStreaming} flag on each message item.
1739
2248
  */
1740
2249
  isThinking?: boolean;
1741
2250
  /**
@@ -1782,6 +2291,17 @@ interface ArtifactsPanelProps extends React$1.HTMLAttributes<HTMLDivElement> {
1782
2291
  * `openArtifactId`.
1783
2292
  */
1784
2293
  onArtifactClosed?: () => void;
2294
+ /**
2295
+ * Resolves the floating action cluster shown over the lightbox when an
2296
+ * artifact is opened. Switch on `artifact.type` and return the host-owned
2297
+ * buttons for that kind (e.g. Share + Download for deliverables, Download
2298
+ * for images). Aurelius ships the close affordance itself; return only the
2299
+ * kind-specific actions, or `null` when there are none. The `ctx.onClose`
2300
+ * helper lets actions dismiss the lightbox after a successful operation.
2301
+ */
2302
+ getArtifactActions?: (artifact: Artifact, ctx: {
2303
+ onClose: () => void;
2304
+ }) => React$1.ReactNode;
1785
2305
  }
1786
2306
  /**
1787
2307
  * ArtifactsPanel displays artifacts in a navigable tree panel.
@@ -1986,165 +2506,92 @@ declare const BranchNavigator: React$1.ForwardRefExoticComponent<BranchNavigator
1986
2506
 
1987
2507
  declare function createEmptyTree<T extends NodeTopology = ChatNode>(): ConversationTree<T>;
1988
2508
  /**
1989
- * Append a node under `parentId` (or as a root when null) and make it the new
1990
- * active leaf. Sending a message, retrying, editing, and submitting all go
1991
- * through here — the tree doesn't care which one. `lastLeafId` is reset to the
1992
- * new node since by definition the user is now at a fresh deepest leaf.
1993
- */
1994
- declare function addNodeToTree<T extends NodeTopology>(tree: ConversationTree<T>, node: T, parentId?: string | null): ConversationTree<T>;
1995
- /**
1996
- * Walk root → activeLeaf, returning the nodes on the active path in order.
1997
- */
1998
- declare function getActivePath<T extends NodeTopology>(tree: ConversationTree<T>): TreeNode<T>[];
1999
- /**
2000
- * Walk from `fromId` upward and return the first ancestor (inclusive) that
2001
- * matches the predicate. Domain helpers compose on top — e.g. finding the
2002
- * closest checkpoint is `findAncestor(t, id, n => n.kind === 'checkpoint')`.
2003
- */
2004
- declare function findAncestor<T extends NodeTopology>(tree: ConversationTree<T>, fromId: string | null, predicate: (node: TreeNode<T>) => boolean): TreeNode<T> | null;
2005
- declare function getSiblingInfo<T extends NodeTopology>(tree: ConversationTree<T>, nodeId: string): {
2006
- total: number;
2007
- current: number;
2008
- };
2009
- declare function isBranchPoint<T extends NodeTopology>(tree: ConversationTree<T>, nodeId: string): boolean;
2010
- /**
2011
- * Switch to a sibling branch at `nodeId` and follow first-children down to a
2012
- * leaf. Used by the BranchNavigator chevrons. Resets `lastLeafId` to the new
2013
- * leaf because the previous greyed-future, if any, lives on a different branch.
2014
- */
2015
- declare function switchBranch<T extends NodeTopology>(tree: ConversationTree<T>, nodeId: string, direction: 'prev' | 'next'): ConversationTree<T>;
2016
- /**
2017
- * Set the active leaf without forking. Use for rewinds (clicking a checkpoint),
2018
- * jumping forward into the greyed future, and "jump to latest".
2019
- *
2020
- * Preserves `lastLeafId` when the new leaf is an ancestor of it (i.e. the user
2021
- * rewound, or moved within the rewound region). Otherwise resets `lastLeafId`
2022
- * to the new leaf — the greyed future doesn't carry over to unrelated paths.
2023
- */
2024
- declare function setActiveLeaf<T extends NodeTopology>(tree: ConversationTree<T>, leafId: string | null): ConversationTree<T>;
2025
- /**
2026
- * Nodes between `activeLeafId` (exclusive) and `lastLeafId` (inclusive) — the
2027
- * timeline the user rewound away from. Empty whenever no rewind is in effect.
2028
- */
2029
- declare function getGreyedFuture<T extends NodeTopology>(tree: ConversationTree<T>): TreeNode<T>[];
2030
- /**
2031
- * Convenience: build a strictly linear message-only tree from a flat array.
2032
- * Useful for tests, fixtures, and consumers that don't care about branching.
2033
- */
2034
- declare function messagesToTree(messages: Array<Omit<MessageNode, 'kind' | 'parentId'>>): ConversationTree<MessageNode>;
2035
- /**
2036
- * Update a streaming message's content. Generic over the tree's node type so
2037
- * the function works equally on message-only trees (`ConversationTree<MessageNode>`)
2038
- * and mixed trees (`ConversationTree<ChatNode>`). At runtime it narrows to
2039
- * `MessageNode` via the `kind` discriminator and silently no-ops on any other
2040
- * kind. The single cast below is the cost of bridging a generic-T tree to the
2041
- * concrete `MessageNode` shape it operates on.
2042
- */
2043
- declare function updateMessageContent<T extends NodeTopology>(tree: ConversationTree<T>, nodeId: string, content: ReactNode, isStreaming?: boolean): ConversationTree<T>;
2044
-
2045
- interface UseScrollAnchorOptions {
2046
- /**
2047
- * Behavior for scrolling. Defaults to 'smooth'.
2048
- */
2049
- behavior?: ScrollBehavior;
2050
- /**
2051
- * Block alignment for scrollIntoView. Defaults to 'start'.
2052
- */
2053
- block?: ScrollLogicalPosition;
2054
- }
2055
- interface UseScrollAnchorReturn {
2056
- /**
2057
- * Ref to attach to the scrollable container
2058
- */
2059
- containerRef: React.RefObject<HTMLDivElement | null>;
2060
- /**
2061
- * Ref to attach to the anchor element (latest user message)
2062
- */
2063
- anchorRef: React.RefObject<HTMLDivElement | null>;
2064
- /**
2065
- * Scroll the anchor element into view. Call this on user message submission.
2066
- */
2067
- scrollToAnchor: () => void;
2068
- /**
2069
- * Scroll to the bottom of the container.
2070
- */
2071
- scrollToBottom: () => void;
2072
- /**
2073
- * Check if user has scrolled away from the bottom.
2074
- */
2075
- isScrolledToBottom: () => boolean;
2076
- }
2077
- /**
2078
- * Hook for smart scroll behavior in chat interfaces.
2079
- *
2080
- * Key behaviors:
2081
- * - Anchors user messages to the top of the viewport when they send a message
2082
- * - Does NOT auto-scroll during streaming to respect user's reading position
2083
- * - Allows manual scroll detection
2509
+ * Options for {@link addNodeToTree}.
2084
2510
  */
2085
- declare function useScrollAnchor(options?: UseScrollAnchorOptions): UseScrollAnchorReturn;
2086
-
2087
- interface UseResizableProps {
2088
- /**
2089
- * Initial width as percentage of viewport (0-100)
2090
- */
2091
- initialWidthPercent: number;
2092
- /**
2093
- * Minimum width as percentage of viewport (0-100)
2094
- */
2095
- minWidthPercent: number;
2096
- /**
2097
- * Maximum width as percentage of viewport (0-100)
2098
- */
2099
- maxWidthPercent: number;
2511
+ interface AddNodeOptions {
2100
2512
  /**
2101
- * Direction to resize from
2513
+ * Whether the new node should become the active leaf. Defaults to `true`,
2514
+ * matching the historical "create-and-focus" behaviour: a freshly added
2515
+ * node almost always represents the latest user-visible state.
2516
+ *
2517
+ * Pass `false` when focus is decided by a separate signal — e.g. an SSE
2518
+ * stream that emits `active_leaf_set` only when the new node *should*
2519
+ * pull focus (the previous active leaf was its parent), and otherwise
2520
+ * leaves the user wherever they navigated to.
2521
+ *
2522
+ * `lastLeafId` follows the same rule: it only advances to the new node
2523
+ * when the node is activated, since "deepest leaf the user has reached"
2524
+ * does not include nodes the system added off-screen.
2525
+ *
2526
+ * @default true
2102
2527
  */
2103
- direction: 'left' | 'right';
2528
+ activate?: boolean;
2104
2529
  }
2105
2530
  /**
2106
- * Hook for resizable panels with percentage-based widths.
2107
- * Returns width as a CSS percentage string (e.g., "50%").
2531
+ * Append a node under `parentId` (or as a root when null). By default the new
2532
+ * node also becomes the active leaf sending a message, retrying, editing,
2533
+ * and submitting all rely on that. Pass `{activate: false}` to insert without
2534
+ * pulling focus, e.g. for off-branch updates from a stream.
2108
2535
  */
2109
- declare function useResizable({ initialWidthPercent, minWidthPercent, maxWidthPercent, direction, }: UseResizableProps): {
2110
- width: string;
2111
- widthPercent: number;
2112
- isResizing: boolean;
2113
- startResizing: (e: React.MouseEvent) => void;
2536
+ declare function addNodeToTree<T extends NodeTopology>(tree: ConversationTree<T>, node: T, parentId?: string | null, options?: AddNodeOptions): ConversationTree<T>;
2537
+ /**
2538
+ * Walk root → activeLeaf, returning the nodes on the active path in order.
2539
+ */
2540
+ declare function getActivePath<T extends NodeTopology>(tree: ConversationTree<T>): TreeNode<T>[];
2541
+ /**
2542
+ * Walk from `fromId` upward and return the first ancestor (inclusive) that
2543
+ * matches the predicate. Domain helpers compose on top — e.g. finding the
2544
+ * closest checkpoint is `findAncestor(t, id, n => n.kind === 'checkpoint')`.
2545
+ */
2546
+ declare function findAncestor<T extends NodeTopology>(tree: ConversationTree<T>, fromId: string | null, predicate: (node: TreeNode<T>) => boolean): TreeNode<T> | null;
2547
+ declare function getSiblingInfo<T extends NodeTopology>(tree: ConversationTree<T>, nodeId: string): {
2548
+ total: number;
2549
+ current: number;
2114
2550
  };
2115
-
2551
+ declare function isBranchPoint<T extends NodeTopology>(tree: ConversationTree<T>, nodeId: string): boolean;
2116
2552
  /**
2117
- * A breadcrumb entry representing one level of navigation depth.
2553
+ * Switch to a sibling branch at `nodeId` and follow first-children down to a
2554
+ * leaf. Used by the BranchNavigator chevrons. Resets `lastLeafId` to the new
2555
+ * leaf because the previous greyed-future, if any, lives on a different branch.
2118
2556
  */
2119
- interface BreadcrumbEntry {
2120
- /** Display label for this level */
2121
- label: string;
2122
- /** The group node at this level (null for root) */
2123
- node: ArtifactNode | null;
2124
- }
2557
+ declare function switchBranch<T extends NodeTopology>(tree: ConversationTree<T>, nodeId: string, direction: 'prev' | 'next'): ConversationTree<T>;
2125
2558
  /**
2126
- * Return type for the useArtifactTreeNavigation hook.
2559
+ * Set the active leaf without forking. Use for rewinds (clicking a checkpoint),
2560
+ * jumping forward into the greyed future, and "jump to latest".
2561
+ *
2562
+ * Preserves `lastLeafId` when the new leaf is an ancestor of it (i.e. the user
2563
+ * rewound, or moved within the rewound region). Otherwise resets `lastLeafId`
2564
+ * to the new leaf — the greyed future doesn't carry over to unrelated paths.
2565
+ *
2566
+ * `null` clears the active leaf (empty session). An id that doesn't exist in
2567
+ * the tree is treated as a no-op rather than written through — the previous
2568
+ * behaviour silently set `activeLeafId` to a non-existent id, which made
2569
+ * `getActivePath` walk from a missing node and return an empty path. That
2570
+ * presented as "the chat just cleared" for callers that accidentally passed
2571
+ * a foreign id (a hypocaust execution id, a stale optimistic temp id, etc.).
2572
+ * A no-op turns those caller bugs into visible "nothing happened" instead of
2573
+ * an invisible empty-render.
2127
2574
  */
2128
- interface UseArtifactTreeNavigationReturn {
2129
- /** Nodes to display at the current navigation level */
2130
- currentNodes: ArtifactNode[];
2131
- /** Breadcrumb trail from root to current level */
2132
- breadcrumbs: BreadcrumbEntry[];
2133
- /** Whether the user is at the root level */
2134
- isAtRoot: boolean;
2135
- /** Navigate into a group node, pushing it onto the stack */
2136
- navigateInto: (node: ArtifactNode) => void;
2137
- /** Navigate to a specific breadcrumb level by index */
2138
- navigateTo: (index: number) => void;
2139
- /** Navigate back one level */
2140
- navigateBack: () => void;
2141
- }
2575
+ declare function setActiveLeaf<T extends NodeTopology>(tree: ConversationTree<T>, leafId: string | null): ConversationTree<T>;
2142
2576
  /**
2143
- * Manages navigation state for an artifact tree panel.
2144
- * Maintains a stack of group nodes the user has navigated into,
2145
- * deriving children from the node references themselves.
2577
+ * Nodes between `activeLeafId` (exclusive) and `lastLeafId` (inclusive) — the
2578
+ * timeline the user rewound away from. Empty whenever no rewind is in effect.
2146
2579
  */
2147
- declare function useArtifactTreeNavigation(rootNodes: ArtifactNode[]): UseArtifactTreeNavigationReturn;
2580
+ declare function getGreyedFuture<T extends NodeTopology>(tree: ConversationTree<T>): TreeNode<T>[];
2581
+ /**
2582
+ * Convenience: build a strictly linear message-only tree from a flat array.
2583
+ * Useful for tests, fixtures, and consumers that don't care about branching.
2584
+ */
2585
+ declare function messagesToTree(messages: Array<Omit<MessageNode, 'kind' | 'parentId'>>): ConversationTree<MessageNode>;
2586
+ /**
2587
+ * Update a streaming message's content. Generic over the tree's node type so
2588
+ * the function works equally on message-only trees (`ConversationTree<MessageNode>`)
2589
+ * and mixed trees (`ConversationTree<ChatNode>`). At runtime it narrows to
2590
+ * `MessageNode` via the `kind` discriminator and silently no-ops on any other
2591
+ * kind. The single cast below is the cost of bridging a generic-T tree to the
2592
+ * concrete `MessageNode` shape it operates on.
2593
+ */
2594
+ declare function updateMessageContent<T extends NodeTopology>(tree: ConversationTree<T>, nodeId: string, content: ReactNode, isStreaming?: boolean): ConversationTree<T>;
2148
2595
 
2149
2596
  type BrandIconSize = 'sm' | 'md' | 'lg';
2150
2597
  type BrandIconVariant = 'solid' | 'outline';
@@ -2167,6 +2614,8 @@ interface ImageCardProps extends Omit<CardProps, 'title'> {
2167
2614
  alt?: string;
2168
2615
  title?: React$1.ReactNode;
2169
2616
  subtitle?: React$1.ReactNode;
2617
+ /** The artifact's `@-handle` — see `Card.Header.handle`. */
2618
+ handle?: string;
2170
2619
  aspectRatio?: AspectRatio;
2171
2620
  objectFit?: 'cover' | 'contain';
2172
2621
  overlay?: React$1.ReactNode;
@@ -2183,6 +2632,8 @@ interface VideoCardProps extends Omit<CardProps, 'title'> {
2183
2632
  src?: string;
2184
2633
  title?: React$1.ReactNode;
2185
2634
  subtitle?: React$1.ReactNode;
2635
+ /** The artifact's `@-handle` — see `Card.Header.handle`. */
2636
+ handle?: string;
2186
2637
  aspectRatio?: VideoAspectRatio;
2187
2638
  playing?: boolean;
2188
2639
  controls?: boolean;
@@ -2203,6 +2654,8 @@ interface AudioCardProps extends Omit<CardProps, 'title'> {
2203
2654
  src?: string;
2204
2655
  title?: React$1.ReactNode;
2205
2656
  subtitle?: React$1.ReactNode;
2657
+ /** The artifact's `@-handle` — see `Card.Header.handle`. */
2658
+ handle?: string;
2206
2659
  playing?: boolean;
2207
2660
  controls?: boolean;
2208
2661
  volume?: number;
@@ -2230,6 +2683,8 @@ interface PdfCardProps extends Omit<CardProps, 'title'> {
2230
2683
  * Subtitle or document metadata
2231
2684
  */
2232
2685
  subtitle?: React$1.ReactNode;
2686
+ /** The artifact's `@-handle` — see `Card.Header.handle`. */
2687
+ handle?: string;
2233
2688
  /**
2234
2689
  * Height of the PDF viewer
2235
2690
  */
@@ -2262,6 +2717,8 @@ interface TextCardProps extends Omit<CardProps, 'title'> {
2262
2717
  * Optional subtitle or metadata
2263
2718
  */
2264
2719
  subtitle?: React$1.ReactNode;
2720
+ /** The artifact's `@-handle` — see `Card.Header.handle`. */
2721
+ handle?: string;
2265
2722
  /**
2266
2723
  * Whether the content should be treated as Markdown
2267
2724
  * @default true
@@ -2283,6 +2740,29 @@ interface TextCardProps extends Omit<CardProps, 'title'> {
2283
2740
  */
2284
2741
  declare const TextCard: React$1.ForwardRefExoticComponent<TextCardProps & React$1.RefAttributes<HTMLDivElement>>;
2285
2742
 
2743
+ interface DeliverableCardProps extends Omit<CardProps, 'title'> {
2744
+ /**
2745
+ * Resolved deliverable spec — every artifact reference already inflated.
2746
+ * Same shape the full DeliverableRenderer accepts.
2747
+ */
2748
+ deliverable?: Deliverable;
2749
+ /** Optional override for the cover title (otherwise derived from the spec). */
2750
+ title?: React$1.ReactNode;
2751
+ /** Optional subtitle shown below the title. */
2752
+ subtitle?: React$1.ReactNode;
2753
+ /** The artifact's `@-handle` — see `Card.Header.handle`. */
2754
+ handle?: string;
2755
+ loading?: CardSlotLoading;
2756
+ }
2757
+ /**
2758
+ * Compact preview of a deliverable for surfaces that can't host the full
2759
+ * multi-page renderer (chat tree, artifact lists). Surfaces the deliverable's
2760
+ * cover info plus its section count. The whole card is clickable — the
2761
+ * affordance is the same expand-icon overlay that {@link ArtifactCard} shows
2762
+ * for every artifact kind, so we don't add a "Open preview" lure here.
2763
+ */
2764
+ declare const DeliverableCard: React$1.ForwardRefExoticComponent<DeliverableCardProps & React$1.RefAttributes<HTMLDivElement>>;
2765
+
2286
2766
  type SectionHeadingLevel = 'h2' | 'h3';
2287
2767
  interface SectionHeadingProps extends React$1.HTMLAttributes<HTMLHeadingElement> {
2288
2768
  level?: SectionHeadingLevel;
@@ -2329,171 +2809,15 @@ interface ArtifactVariantStackProps extends React$1.HTMLAttributes<HTMLDivElemen
2329
2809
  */
2330
2810
  declare const ArtifactVariantStack: React$1.ForwardRefExoticComponent<ArtifactVariantStackProps & React$1.RefAttributes<HTMLDivElement>>;
2331
2811
 
2332
- /**
2333
- * Wire format for a presentable deliverable. The document is composed once by
2334
- * the backend (or hand-authored) and rendered here — the renderer never reads
2335
- * raw HTML from data, it dispatches on `type` to a typed component per section.
2336
- *
2337
- * The shape mirrors hypocaust's `ResolvedDeliverableDto`. When the OpenAPI
2338
- * client is regenerated downstream of a hypocaust schema change, the types
2339
- * here should be kept aligned.
2340
- */
2341
- /**
2342
- * Top-level deliverable. Holds metadata used on the cover and an ordered list
2343
- * of sections to render.
2344
- */
2345
- interface Deliverable {
2346
- /** Schema version. 1 today. */
2347
- version: number;
2348
- /** Document title — also used as the default cover title. */
2349
- title: string;
2350
- /** Optional one-line subtitle / tagline. */
2351
- subtitle?: string | null;
2352
- /** Optional client name shown as "Prepared for {clientName}" on the cover. */
2353
- clientName?: string | null;
2354
- /** Optional accent hex color (e.g. "#fecb6b"). Falls back to design-system gold. */
2355
- accentColor?: string | null;
2356
- /** Ordered sections. Render in array order. */
2357
- sections: DeliverableSection[];
2358
- }
2359
- /**
2360
- * Discriminated union of section types. Each variant has a matching renderer
2361
- * in aurelius — the agent fills the spec, never raw layout instructions.
2362
- */
2363
- type DeliverableSection = CoverSection$1 | ArtifactImageGridSection$1 | ArtifactSpotlightSection$1 | TextBlockSection$1 | ColorPaletteSection$1 | QuoteBlockSection$1;
2364
- interface CoverSection$1 {
2365
- type: 'COVER';
2366
- eyebrow?: string | null;
2367
- title: string;
2368
- subtitle?: string | null;
2369
- }
2370
- interface ArtifactImageGridSection$1 {
2371
- type: 'ARTIFACT_IMAGE_GRID';
2372
- heading?: string | null;
2373
- /** 1, 2 or 3. */
2374
- columns: number;
2375
- items: DeliverableImageItem[];
2376
- }
2377
- interface ArtifactSpotlightSection$1 {
2378
- type: 'ARTIFACT_SPOTLIGHT';
2379
- heading?: string | null;
2380
- artifact: DeliverableArtifactRef;
2381
- body?: string | null;
2382
- }
2383
- interface TextBlockSection$1 {
2384
- type: 'TEXT_BLOCK';
2385
- heading?: string | null;
2386
- body: string;
2387
- }
2388
- interface ColorPaletteSection$1 {
2389
- type: 'COLOR_PALETTE';
2390
- heading?: string | null;
2391
- swatches: DeliverableSwatch[];
2392
- }
2393
- interface QuoteBlockSection$1 {
2394
- type: 'QUOTE_BLOCK';
2395
- quote: string;
2396
- attribution?: string | null;
2397
- }
2398
- interface DeliverableImageItem {
2399
- artifact: DeliverableArtifactRef;
2400
- caption?: string | null;
2401
- }
2402
- interface DeliverableSwatch {
2403
- color: string;
2404
- label: string;
2405
- }
2406
- /**
2407
- * Minimal subset of the hypocaust ArtifactDto shape consumed by the renderer.
2408
- * Only the fields needed to render a deliverable's referenced artifacts.
2409
- */
2410
- interface DeliverableArtifactRef {
2411
- url?: string | null;
2412
- title?: string | null;
2413
- description?: string | null;
2414
- }
2415
-
2416
- interface DeliverableRendererProps {
2417
- /** Resolved deliverable spec — every artifact reference already inflated. */
2418
- deliverable: Deliverable;
2419
- /**
2420
- * Called when the viewer requests a PDF download. The host application is
2421
- * responsible for fetching and triggering the file save (the URL knows
2422
- * about share tokens and credentials we don't). When omitted, the download
2423
- * affordance is hidden.
2424
- */
2425
- onDownloadPdf?: () => void | Promise<void>;
2426
- /** Hide the floating action bar entirely. Used when rendering for print. */
2427
- hideActions?: boolean;
2428
- className?: string;
2429
- }
2430
- /**
2431
- * Render a presentable deliverable (moodboard, pitch deck) from a structured
2432
- * spec. The same component drives the on-screen view and the print/PDF
2433
- * version — `@media print` styles in `aurelius/styles/base.css` keep them in
2434
- * sync. To produce a PDF, drive the page with headless Chromium and let the
2435
- * print stylesheet do the work.
2436
- *
2437
- * The renderer is purely presentational: it takes a fully resolved spec
2438
- * (artifact URLs already inflated by the caller) and dispatches each section
2439
- * to its typed sub-renderer. Unknown section types are skipped silently
2440
- * forward-compat for new section variants added by the backend.
2441
- */
2442
- declare function DeliverableRenderer({ deliverable, onDownloadPdf, hideActions, className, }: DeliverableRendererProps): React$1.JSX.Element;
2443
-
2444
- interface CoverSectionProps {
2445
- data: CoverSection$1;
2446
- /** Document-level client name from {@link Deliverable.clientName}, shown as "Prepared for {name}". */
2447
- clientName?: string | null;
2448
- }
2449
- /**
2450
- * Title page for a deliverable. Always rendered as the first section.
2451
- */
2452
- declare function CoverSection({ data, clientName }: CoverSectionProps): React$1.JSX.Element;
2453
-
2454
- interface ArtifactImageGridSectionProps {
2455
- data: ArtifactImageGridSection$1;
2456
- }
2457
- /**
2458
- * Grid of project artifact images with optional captions. The number of
2459
- * columns is fixed by the spec (1–3); the renderer enforces a sensible aspect
2460
- * ratio per item and lets the browser flow rows.
2461
- */
2462
- declare function ArtifactImageGridSection({ data }: ArtifactImageGridSectionProps): React$1.JSX.Element;
2463
-
2464
- interface ArtifactSpotlightSectionProps {
2465
- data: ArtifactSpotlightSection$1;
2466
- }
2467
- /**
2468
- * A single hero artifact image with optional prose alongside. Reads at full
2469
- * page width on screen and prints to a single page.
2470
- */
2471
- declare function ArtifactSpotlightSection({ data }: ArtifactSpotlightSectionProps): React$1.JSX.Element;
2472
-
2473
- interface TextBlockSectionProps {
2474
- data: TextBlockSection$1;
2475
- }
2476
- /**
2477
- * Prose section. Body is rendered as Markdown.
2478
- */
2479
- declare function TextBlockSection({ data }: TextBlockSectionProps): React$1.JSX.Element;
2480
-
2481
- interface ColorPaletteSectionProps {
2482
- data: ColorPaletteSection$1;
2483
- }
2484
- /**
2485
- * Color palette presented as labelled swatches with hex values.
2486
- */
2487
- declare function ColorPaletteSection({ data }: ColorPaletteSectionProps): React$1.JSX.Element;
2488
-
2489
- interface QuoteBlockSectionProps {
2490
- data: QuoteBlockSection$1;
2812
+ interface TextareaCaretCoords {
2813
+ /** Top of the caret, in pixels relative to the textarea's top-left. */
2814
+ top: number;
2815
+ /** Left of the caret, in pixels relative to the textarea's top-left. */
2816
+ left: number;
2817
+ /** Caret line height in pixels useful when positioning a popover just above/below. */
2818
+ height: number;
2491
2819
  }
2492
- /**
2493
- * Pulled quote with optional attribution. The renderer adds the surrounding
2494
- * quotation marks.
2495
- */
2496
- declare function QuoteBlockSection({ data }: QuoteBlockSectionProps): React$1.JSX.Element;
2820
+ declare function getTextareaCaretCoords(textarea: HTMLTextAreaElement): TextareaCaretCoords;
2497
2821
 
2498
2822
  /**
2499
2823
  * Aurelius Design System
@@ -2507,4 +2831,4 @@ declare function QuoteBlockSection({ data }: QuoteBlockSectionProps): React$1.JS
2507
2831
 
2508
2832
  declare const version = "2.0.0";
2509
2833
 
2510
- export { ARTIFACT_TYPES, Accordion, AccordionContent, type AccordionContentProps, AccordionItem, type AccordionItemProps, type AccordionProps, AccordionTrigger, type AccordionTriggerProps, Alert, AlertDialog, type AlertDialogProps, type AlertProps, type AlertVariant, type Artifact, ArtifactCard, type ArtifactCardProps, ArtifactGroup, type ArtifactGroupProps, ArtifactImageGridSection, type ArtifactImageGridSectionProps, type ArtifactNode, ArtifactSpotlightSection, type ArtifactSpotlightSectionProps, type ArtifactType, ArtifactVariantStack, type ArtifactVariantStackProps, ArtifactsPanel, type ArtifactsPanelProps, ArtifactsPanelToggle, type ArtifactsPanelToggleProps, type AspectRatio, type AspectRatioPreset, type Attachment, type AttachmentItem, AttachmentPreview, type AttachmentPreviewProps, type AttachmentStatus, AudioCard, type AudioCardProps, Avatar, type AvatarProps, type AvatarSize, Badge, type BadgeProps, type BadgeVariant, BranchNavigator, type BranchNavigatorProps, BrandIcon, type BrandIconProps, type BrandIconSize, type BrandIconVariant, Breadcrumb, type BreadcrumbEntry, BreadcrumbItem, type BreadcrumbItemProps, BreadcrumbLink, type BreadcrumbLinkProps, type BreadcrumbProps, Button, type ButtonProps, type ButtonSize, type ButtonVariant, Card, type CardBodyProps, type CardFooterProps, type CardHeaderProps, type CardMediaProps, type CardProps, type CardVariant, ChatBubbleIcon, ChatInput, type ChatInputNotice, type ChatInputPosition, type ChatInputProps, ChatInterface, type ChatInterfaceProps, type ChatNode, ChatView, type ChatViewCheckpointItem, type ChatViewDividerItem, type ChatViewItem, type ChatViewMessageItem, type ChatViewProps, CheckSquareIcon, Checkbox, type CheckboxProps, Checkpoint, type CheckpointBranchInfo, type CheckpointExecutionKind, type CheckpointNode, type CheckpointProps, type CheckpointStatus, ChevronLeftIcon, ChevronRightIcon, CloseIcon, Col, type ColOffset, type ColOrder, type ColProps, type ColSpan, ColorPaletteSection, type ColorPaletteSectionProps, ColorSwatch, type ColorSwatchProps, ConfirmDialog, type ConfirmDialogProps, Container, type ContainerProps, type ContainerSize, type Conversation, type ConversationTree, CoverSection, type CoverSectionProps, CrossSquareIcon, type Deliverable, type DeliverableArtifactRef, type DeliverableImageItem, DeliverableRenderer, type DeliverableRendererProps, type DeliverableSection, type DeliverableSwatch, Divider, type DividerProps, Drawer, type DrawerPosition, type DrawerProps, EmptySquareIcon, ExpandIcon, type ExternalToolDefinition, FileChip, type FileChipProps, type FileChipStatus, GreyedDivider, type GreyedDividerProps, HelperText, type HelperTextProps, HistoryIcon, HistoryPanel, type HistoryPanelProps, type IconProps, ImageCard, type ImageCardProps, Input, type InputAddonProps, type InputElementProps, InputGroup, type InputGroupProps, InputLeftAddon, InputLeftElement, type InputProps, InputRightAddon, InputRightElement, InputWrapper, type InputWrapperProps, Label, type LabelProps, LayersIcon, List, ListItem, type ListItemProps, ListItemText, type ListItemTextProps, type ListProps, ListSubheader, type ListSubheaderProps, MarkdownContent, type MarkdownContentProps, MediaIcon, Menu, MenuContent, type MenuContentProps, MenuItem, type MenuItemProps, MenuLabel, type MenuProps, MenuSeparator, MenuTrigger, type MenuTriggerProps, Message, MessageActions, type MessageActionsConfig, type MessageActionsProps, type MessageActionsVariant, type MessageBranchInfo, type MessageNode, type MessageProps, type MessageVariant, Modal, type ModalProps, NODE_TYPES, Navbar, NavbarBrand, type NavbarBrandProps, NavbarContent, type NavbarContentProps, NavbarDivider, NavbarItem, type NavbarItemProps, NavbarLink, type NavbarLinkProps, type NavbarProps, type NodeTopology, type NodeType, Pagination, type PaginationProps, PdfCard, type PdfCardProps, PlusIcon, Popover, type PopoverAlign, type PopoverPosition, type PopoverProps, Progress, type ProgressProps, PromptDialog, type PromptDialogProps, QuoteBlockSection, type QuoteBlockSectionProps, Radio, type RadioProps, Row, type RowAlign, type RowGutter, type RowJustify, type RowProps, SCRIPT_ELEMENT_TYPES, ScriptCard, type ScriptCardProps, type ScriptElement, type ScriptElementType, SectionHeading, type SectionHeadingLevel, type SectionHeadingProps, Select, type SelectOption, type SelectProps, Skeleton, type SkeletonProps, Slider, type SliderProps, Spinner, type SpinnerProps, SquareLoaderIcon, Stack, type StackDirection, type StackGap, type StackProps, type Step, type StepStatus, Stepper, type StepperProps, StreamingCursor, type StreamingCursorProps, Switch, type SwitchProps, TASK_STATUSES, Tab, TabList, type TabListProps, TabPanel, type TabPanelProps, type TabProps, Table, TableBody, type TableBodyProps, TableCaption, type TableCaptionProps, TableCell, type TableCellProps, TableFooter, type TableFooterProps, TableHead, type TableHeadProps, TableHeader, type TableHeaderProps, type TableProps, TableRow, type TableRowProps, Tabs, type TabsProps, type Task, type TaskStatus, TextBlockSection, type TextBlockSectionProps, TextCard, type TextCardProps, Textarea, type TextareaProps, ThinkingIndicator, type ThinkingIndicatorProps, type ToastData, type ToastPosition, ToastProvider, type ToastProviderProps, type ToastVariant, TodosList, type TodosListProps, type ToolDefinition, type ToolGroup, ToolPanelContainer, type ToolPanelContainerProps, type ToolPanelState, ToolSidebar, type ToolSidebarProps, Tooltip, type TooltipProps, type TreeNode, type UseArtifactTreeNavigationReturn, type UseScrollAnchorOptions, type UseScrollAnchorReturn, type VideoAspectRatio, type VideoAspectRatioPreset, VideoCard, type VideoCardProps, addNodeToTree, areAllTasksSettled, createEmptyTree, createPreviewUrl, findAncestor, generateId, getActivePath, getGreyedFuture, getSiblingInfo, isBranchPoint, isImageFile, messagesToTree, revokePreviewUrl, setActiveLeaf, switchBranch, updateMessageContent, useArtifactTreeNavigation, useResizable, useScrollAnchor, useToast, version };
2834
+ export { ARTIFACT_TYPES, Accordion, AccordionContent, type AccordionContentProps, AccordionItem, type AccordionItemProps, type AccordionProps, AccordionTrigger, type AccordionTriggerProps, type AddNodeOptions, Alert, AlertDialog, type AlertDialogProps, type AlertProps, type AlertVariant, type Artifact, ArtifactCard, type ArtifactCardProps, ArtifactGroup, type ArtifactGroupProps, ArtifactImageGridSection, type ArtifactImageGridSectionProps, type ArtifactNode, ArtifactSpotlightSection, type ArtifactSpotlightSectionProps, type ArtifactType, ArtifactVariantStack, type ArtifactVariantStackProps, ArtifactsPanel, type ArtifactsPanelProps, ArtifactsPanelToggle, type ArtifactsPanelToggleProps, type AspectRatio, type AspectRatioPreset, type Attachment, type AttachmentItem, AttachmentPreview, type AttachmentPreviewProps, type AttachmentStatus, AudioCard, type AudioCardProps, Avatar, type AvatarProps, type AvatarSize, Badge, type BadgeProps, type BadgeVariant, BranchNavigator, type BranchNavigatorProps, BrandIcon, type BrandIconProps, type BrandIconSize, type BrandIconVariant, Breadcrumb, type BreadcrumbEntry, BreadcrumbItem, type BreadcrumbItemProps, BreadcrumbLink, type BreadcrumbLinkProps, type BreadcrumbProps, Button, type ButtonProps, type ButtonSize, type ButtonVariant, Card, type CardBodyProps, type CardFooterProps, type CardHeaderProps, type CardMediaProps, type CardProps, type CardVariant, ChatBubbleIcon, ChatInput, type ChatInputNotice, type ChatInputPosition, type ChatInputProps, ChatInterface, type ChatInterfaceProps, type ChatNode, ChatView, type ChatViewCheckpointItem, type ChatViewDividerItem, type ChatViewItem, type ChatViewMessageItem, type ChatViewProps, CheckSquareIcon, Checkbox, type CheckboxProps, Checkpoint, type CheckpointBranchInfo, type CheckpointExecutionKind, type CheckpointNode, type CheckpointProps, type CheckpointStatus, ChevronLeftIcon, ChevronRightIcon, CloseIcon, Col, type ColOffset, type ColOrder, type ColProps, type ColSpan, ColorPaletteSection, type ColorPaletteSectionProps, ColorSwatch, type ColorSwatchProps, Combobox, type ComboboxNav, type ComboboxProps, ConfirmDialog, type ConfirmDialogProps, Container, type ContainerProps, type ContainerSize, type Conversation, type ConversationTree, CoverSection, type CoverSectionProps, CrossSquareIcon, type Deliverable, type DeliverableArtifactRef, DeliverableCard, type DeliverableCardProps, type DeliverableImageItem, DeliverableRenderer, type DeliverableRendererProps, type DeliverableSection, type DeliverableSwatch, Divider, type DividerProps, Drawer, type DrawerPosition, type DrawerProps, EmptySquareIcon, ExpandIcon, type ExternalToolDefinition, FileChip, type FileChipProps, type FileChipStatus, GreyedDivider, type GreyedDividerProps, HelperText, type HelperTextProps, HistoryIcon, HistoryPanel, type HistoryPanelProps, type IconProps, ImageCard, type ImageCardProps, Input, type InputAddonProps, type InputElementProps, InputGroup, type InputGroupProps, InputLeftAddon, InputLeftElement, type InputProps, InputRightAddon, InputRightElement, InputWrapper, type InputWrapperProps, Label, type LabelProps, LayersIcon, Lightbox, type LightboxProps, List, ListItem, type ListItemProps, ListItemText, type ListItemTextProps, type ListProps, ListSubheader, type ListSubheaderProps, MarkdownContent, type MarkdownContentProps, MediaIcon, MentionChip, type MentionChipProps, Menu, MenuContent, type MenuContentProps, MenuItem, type MenuItemProps, MenuLabel, type MenuProps, MenuSeparator, MenuTrigger, type MenuTriggerProps, Message, MessageActions, type MessageActionsConfig, type MessageActionsProps, type MessageActionsVariant, type MessageBranchInfo, type MessageNode, type MessageProps, type MessageVariant, Modal, type ModalProps, NODE_TYPES, Navbar, NavbarBrand, type NavbarBrandProps, NavbarContent, type NavbarContentProps, NavbarDivider, NavbarItem, type NavbarItemProps, NavbarLink, type NavbarLinkProps, type NavbarProps, type NodeTopology, type NodeType, Pagination, type PaginationProps, PdfCard, type PdfCardProps, PlusIcon, Popover, type PopoverAlign, type PopoverPosition, type PopoverProps, Progress, type ProgressProps, PromptDialog, type PromptDialogProps, QuoteBlockSection, type QuoteBlockSectionProps, Radio, type RadioProps, Row, type RowAlign, type RowGutter, type RowJustify, type RowProps, SCRIPT_ELEMENT_TYPES, ScriptCard, type ScriptCardProps, type ScriptElement, type ScriptElementType, SectionHeading, type SectionHeadingLevel, type SectionHeadingProps, Select, type SelectOption, type SelectProps, Skeleton, type SkeletonProps, Slider, type SliderProps, Spinner, type SpinnerProps, SquareLoaderIcon, Stack, type StackDirection, type StackGap, type StackProps, type Step, type StepStatus, Stepper, type StepperProps, StreamingCursor, type StreamingCursorProps, Switch, type SwitchProps, TASK_STATUSES, Tab, TabList, type TabListProps, TabPanel, type TabPanelProps, type TabProps, Table, TableBody, type TableBodyProps, TableCaption, type TableCaptionProps, TableCell, type TableCellProps, TableFooter, type TableFooterProps, TableHead, type TableHeadProps, TableHeader, type TableHeaderProps, type TableProps, TableRow, type TableRowProps, Tabs, type TabsProps, type Task, type TaskStatus, TextBlockSection, type TextBlockSectionProps, TextCard, type TextCardProps, Textarea, type TextareaCaretCoords, type TextareaProps, ThinkingIndicator, type ThinkingIndicatorProps, type ToastData, type ToastPosition, ToastProvider, type ToastProviderProps, type ToastVariant, TodosList, type TodosListProps, type ToolDefinition, type ToolGroup, ToolPanelContainer, type ToolPanelContainerProps, type ToolPanelState, ToolSidebar, type ToolSidebarProps, Tooltip, type TooltipProps, type TreeNode, type UseArtifactTreeNavigationReturn, type UseComboboxNavOptions, type UseScrollAnchorOptions, type UseScrollAnchorReturn, type VideoAspectRatio, type VideoAspectRatioPreset, VideoCard, type VideoCardProps, addNodeToTree, areAllTasksSettled, createEmptyTree, createPreviewUrl, findAncestor, generateId, getActivePath, getGreyedFuture, getSiblingInfo, getTextareaCaretCoords, isBranchPoint, isImageFile, messagesToTree, revokePreviewUrl, setActiveLeaf, switchBranch, updateMessageContent, useArtifactTreeNavigation, useComboboxNav, useResizable, useScrollAnchor, useToast, version };