@lukeashford/aurelius 4.6.0 → 4.7.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
@@ -438,6 +438,51 @@ declare const Modal: {
438
438
  displayName: string;
439
439
  };
440
440
 
441
+ interface LightboxProps {
442
+ /**
443
+ * Called when the user dismisses the lightbox (ESC, backdrop click, X button).
444
+ * The caller owns the open/closed state — when `onClose` fires, unmount the
445
+ * lightbox.
446
+ */
447
+ onClose: () => void;
448
+ /**
449
+ * Optional kind-specific actions placed before the close button in the
450
+ * floating top-right cluster. Typically buttons like "Share" or "Download".
451
+ * The cluster always renders the close button; pass `undefined` if the only
452
+ * affordance is dismiss.
453
+ */
454
+ actions?: React$1.ReactNode;
455
+ /**
456
+ * Optional caption shown bottom-centre over the backdrop. Use for short
457
+ * metadata like a title and subtitle. Non-interactive — clicks pass through
458
+ * to the backdrop and dismiss.
459
+ */
460
+ caption?: React$1.ReactNode;
461
+ /**
462
+ * The artifact body. Sits directly on the backdrop with no inner frame —
463
+ * the body is responsible for its own layout (object-contain image, scrollable
464
+ * deliverable, readable text column, etc.). Click events whose target is the
465
+ * sized content wrapper (i.e. the empty area around the body) dismiss the
466
+ * lightbox; clicks on the body itself do not.
467
+ */
468
+ children: React$1.ReactNode;
469
+ className?: string;
470
+ }
471
+ /**
472
+ * Full-bleed modal canvas for one piece of content. Premium-haptic alternative
473
+ * to a bordered modal: deep void backdrop, scale-fade entrance, no inner frame,
474
+ * floating glass action cluster top-right.
475
+ *
476
+ * The component is content-agnostic — it ships chrome, not artifact knowledge.
477
+ * Compose it with kind-aware bodies and action sets to build the artifact
478
+ * viewer; reach for it directly any time a single piece of content needs the
479
+ * full screen.
480
+ *
481
+ * Dismiss surfaces: ESC, backdrop click (outside the sized content area),
482
+ * close button in the action cluster.
483
+ */
484
+ declare function Lightbox({ onClose, actions, caption, children, className, }: LightboxProps): React$1.JSX.Element;
485
+
441
486
  type DrawerPosition = 'left' | 'right' | 'top' | 'bottom';
442
487
  interface DrawerProps {
443
488
  isOpen: boolean;
@@ -1187,6 +1232,48 @@ interface ToolSidebarProps extends React$1.HTMLAttributes<HTMLDivElement> {
1187
1232
  */
1188
1233
  declare const ToolSidebar: React$1.ForwardRefExoticComponent<ToolSidebarProps & React$1.RefAttributes<HTMLDivElement>>;
1189
1234
 
1235
+ interface UseScrollAnchorOptions {
1236
+ /**
1237
+ * Behavior for scrolling. Defaults to 'smooth'.
1238
+ */
1239
+ behavior?: ScrollBehavior;
1240
+ /**
1241
+ * Block alignment for scrollIntoView. Defaults to 'start'.
1242
+ */
1243
+ block?: ScrollLogicalPosition;
1244
+ }
1245
+ interface UseScrollAnchorReturn {
1246
+ /**
1247
+ * Ref to attach to the scrollable container
1248
+ */
1249
+ containerRef: React.RefObject<HTMLDivElement | null>;
1250
+ /**
1251
+ * Ref to attach to the anchor element (latest user message)
1252
+ */
1253
+ anchorRef: React.RefObject<HTMLDivElement | null>;
1254
+ /**
1255
+ * Scroll the anchor element into view. Call this on user message submission.
1256
+ */
1257
+ scrollToAnchor: () => void;
1258
+ /**
1259
+ * Scroll to the bottom of the container.
1260
+ */
1261
+ scrollToBottom: () => void;
1262
+ /**
1263
+ * Check if user has scrolled away from the bottom.
1264
+ */
1265
+ isScrolledToBottom: () => boolean;
1266
+ }
1267
+ /**
1268
+ * Hook for smart scroll behavior in chat interfaces.
1269
+ *
1270
+ * Key behaviors:
1271
+ * - Anchors user messages to the top of the viewport when they send a message
1272
+ * - Does NOT auto-scroll during streaming to respect user's reading position
1273
+ * - Allows manual scroll detection
1274
+ */
1275
+ declare function useScrollAnchor(options?: UseScrollAnchorOptions): UseScrollAnchorReturn;
1276
+
1190
1277
  /**
1191
1278
  * Script element types following standard screenplay format
1192
1279
  */
@@ -1260,6 +1347,90 @@ interface ScriptCardProps extends Omit<CardProps, 'title'> {
1260
1347
  */
1261
1348
  declare const ScriptCard: React$1.ForwardRefExoticComponent<ScriptCardProps & React$1.RefAttributes<HTMLDivElement>>;
1262
1349
 
1350
+ /**
1351
+ * Wire format for a presentable deliverable. The document is composed once by
1352
+ * the backend (or hand-authored) and rendered here — the renderer never reads
1353
+ * raw HTML from data, it dispatches on `type` to a typed component per section.
1354
+ *
1355
+ * The shape mirrors hypocaust's `ResolvedDeliverableDto`. When the OpenAPI
1356
+ * client is regenerated downstream of a hypocaust schema change, the types
1357
+ * here should be kept aligned.
1358
+ */
1359
+ /**
1360
+ * Top-level deliverable. Holds metadata used on the cover and an ordered list
1361
+ * of sections to render.
1362
+ */
1363
+ interface Deliverable {
1364
+ /** Schema version. 1 today. */
1365
+ version: number;
1366
+ /** Document title — also used as the default cover title. */
1367
+ title: string;
1368
+ /** Optional one-line subtitle / tagline. */
1369
+ subtitle?: string | null;
1370
+ /** Optional client name shown as "Prepared for {clientName}" on the cover. */
1371
+ clientName?: string | null;
1372
+ /** Optional accent hex color (e.g. "#fecb6b"). Falls back to design-system gold. */
1373
+ accentColor?: string | null;
1374
+ /** Ordered sections. Render in array order. */
1375
+ sections: DeliverableSection[];
1376
+ }
1377
+ /**
1378
+ * Discriminated union of section types. Each variant has a matching renderer
1379
+ * in aurelius — the agent fills the spec, never raw layout instructions.
1380
+ */
1381
+ type DeliverableSection = CoverSection$1 | ArtifactImageGridSection$1 | ArtifactSpotlightSection$1 | TextBlockSection$1 | ColorPaletteSection$1 | QuoteBlockSection$1;
1382
+ interface CoverSection$1 {
1383
+ type: 'COVER';
1384
+ eyebrow?: string | null;
1385
+ title: string;
1386
+ subtitle?: string | null;
1387
+ }
1388
+ interface ArtifactImageGridSection$1 {
1389
+ type: 'ARTIFACT_IMAGE_GRID';
1390
+ heading?: string | null;
1391
+ /** 1, 2 or 3. */
1392
+ columns: number;
1393
+ items: DeliverableImageItem[];
1394
+ }
1395
+ interface ArtifactSpotlightSection$1 {
1396
+ type: 'ARTIFACT_SPOTLIGHT';
1397
+ heading?: string | null;
1398
+ artifact: DeliverableArtifactRef;
1399
+ body?: string | null;
1400
+ }
1401
+ interface TextBlockSection$1 {
1402
+ type: 'TEXT_BLOCK';
1403
+ heading?: string | null;
1404
+ body: string;
1405
+ }
1406
+ interface ColorPaletteSection$1 {
1407
+ type: 'COLOR_PALETTE';
1408
+ heading?: string | null;
1409
+ swatches: DeliverableSwatch[];
1410
+ }
1411
+ interface QuoteBlockSection$1 {
1412
+ type: 'QUOTE_BLOCK';
1413
+ quote: string;
1414
+ attribution?: string | null;
1415
+ }
1416
+ interface DeliverableImageItem {
1417
+ artifact: DeliverableArtifactRef;
1418
+ caption?: string | null;
1419
+ }
1420
+ interface DeliverableSwatch {
1421
+ color: string;
1422
+ label: string;
1423
+ }
1424
+ /**
1425
+ * Minimal subset of the hypocaust ArtifactDto shape consumed by the renderer.
1426
+ * Only the fields needed to render a deliverable's referenced artifacts.
1427
+ */
1428
+ interface DeliverableArtifactRef {
1429
+ url?: string | null;
1430
+ title?: string | null;
1431
+ description?: string | null;
1432
+ }
1433
+
1263
1434
  /**
1264
1435
  * Artifact types supported by the system
1265
1436
  */
@@ -1270,6 +1441,7 @@ declare const ARTIFACT_TYPES: {
1270
1441
  readonly AUDIO: "AUDIO";
1271
1442
  readonly SCRIPT: "SCRIPT";
1272
1443
  readonly PDF: "PDF";
1444
+ readonly DELIVERABLE: "DELIVERABLE";
1273
1445
  };
1274
1446
  type ArtifactType = typeof ARTIFACT_TYPES[keyof typeof ARTIFACT_TYPES];
1275
1447
  interface Artifact {
@@ -1311,6 +1483,12 @@ interface Artifact {
1311
1483
  * For html artifacts - structured script elements (used by ScriptCard)
1312
1484
  */
1313
1485
  scriptElements?: ScriptElement[];
1486
+ /**
1487
+ * For deliverable artifacts - the resolved presentation spec, every artifact
1488
+ * reference already inflated. Rendered as a compact card that links to the
1489
+ * full DeliverableRenderer; surfaces the cover info and section count.
1490
+ */
1491
+ deliverable?: Deliverable;
1314
1492
  }
1315
1493
  interface ArtifactCardProps extends React$1.HTMLAttributes<HTMLDivElement> {
1316
1494
  /**
@@ -1332,6 +1510,35 @@ interface ArtifactCardProps extends React$1.HTMLAttributes<HTMLDivElement> {
1332
1510
  */
1333
1511
  declare const ArtifactCard: React$1.ForwardRefExoticComponent<ArtifactCardProps & React$1.RefAttributes<HTMLDivElement>>;
1334
1512
 
1513
+ interface UseResizableProps {
1514
+ /**
1515
+ * Initial width as percentage of viewport (0-100)
1516
+ */
1517
+ initialWidthPercent: number;
1518
+ /**
1519
+ * Minimum width as percentage of viewport (0-100)
1520
+ */
1521
+ minWidthPercent: number;
1522
+ /**
1523
+ * Maximum width as percentage of viewport (0-100)
1524
+ */
1525
+ maxWidthPercent: number;
1526
+ /**
1527
+ * Direction to resize from
1528
+ */
1529
+ direction: 'left' | 'right';
1530
+ }
1531
+ /**
1532
+ * Hook for resizable panels with percentage-based widths.
1533
+ * Returns width as a CSS percentage string (e.g., "50%").
1534
+ */
1535
+ declare function useResizable({ initialWidthPercent, minWidthPercent, maxWidthPercent, direction, }: UseResizableProps): {
1536
+ width: string;
1537
+ widthPercent: number;
1538
+ isResizing: boolean;
1539
+ startResizing: (e: React.MouseEvent) => void;
1540
+ };
1541
+
1335
1542
  /**
1336
1543
  * Node types in the artifact tree
1337
1544
  */
@@ -1372,6 +1579,39 @@ interface ArtifactNode {
1372
1579
  children: ArtifactNode[];
1373
1580
  }
1374
1581
 
1582
+ /**
1583
+ * A breadcrumb entry representing one level of navigation depth.
1584
+ */
1585
+ interface BreadcrumbEntry {
1586
+ /** Display label for this level */
1587
+ label: string;
1588
+ /** The group node at this level (null for root) */
1589
+ node: ArtifactNode | null;
1590
+ }
1591
+ /**
1592
+ * Return type for the useArtifactTreeNavigation hook.
1593
+ */
1594
+ interface UseArtifactTreeNavigationReturn {
1595
+ /** Nodes to display at the current navigation level */
1596
+ currentNodes: ArtifactNode[];
1597
+ /** Breadcrumb trail from root to current level */
1598
+ breadcrumbs: BreadcrumbEntry[];
1599
+ /** Whether the user is at the root level */
1600
+ isAtRoot: boolean;
1601
+ /** Navigate into a group node, pushing it onto the stack */
1602
+ navigateInto: (node: ArtifactNode) => void;
1603
+ /** Navigate to a specific breadcrumb level by index */
1604
+ navigateTo: (index: number) => void;
1605
+ /** Navigate back one level */
1606
+ navigateBack: () => void;
1607
+ }
1608
+ /**
1609
+ * Manages navigation state for an artifact tree panel.
1610
+ * Maintains a stack of group nodes the user has navigated into,
1611
+ * deriving children from the node references themselves.
1612
+ */
1613
+ declare function useArtifactTreeNavigation(rootNodes: ArtifactNode[]): UseArtifactTreeNavigationReturn;
1614
+
1375
1615
  interface Conversation {
1376
1616
  /**
1377
1617
  * Unique identifier for the conversation
@@ -1529,6 +1769,17 @@ interface ChatInterfaceProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>
1529
1769
  * Called when the artifacts panel is opened or closed (controlled).
1530
1770
  */
1531
1771
  onArtifactsPanelOpenChange?: (open: boolean) => void;
1772
+ /**
1773
+ * Resolves the floating action cluster shown over the artifact lightbox.
1774
+ * The host switches on `artifact.type` and returns the right buttons for
1775
+ * that kind (e.g. Share + Download for deliverables, Download for images).
1776
+ * Aurelius ships the close affordance itself; return only the kind-specific
1777
+ * actions, or `null` when none. Use `ctx.onClose` to dismiss the lightbox
1778
+ * after a successful operation.
1779
+ */
1780
+ getArtifactActions?: (artifact: Artifact, ctx: {
1781
+ onClose: () => void;
1782
+ }) => React$1.ReactNode;
1532
1783
  /**
1533
1784
  * Tasks to display in the todos list tool panel.
1534
1785
  * Shows a list of tasks with status indicators.
@@ -1729,13 +1980,11 @@ interface ChatViewProps extends React$1.HTMLAttributes<HTMLDivElement> {
1729
1980
  * last-found user message in `items`.
1730
1981
  */
1731
1982
  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
1983
  /**
1738
1984
  * Whether to show the thinking indicator (between user message and response).
1985
+ * Renders only when the latest message is a user turn — i.e. the assistant
1986
+ * hasn't sent its first chunk yet. Streaming-cursor behavior is owned by
1987
+ * the per-node {@code isStreaming} flag on each message item.
1739
1988
  */
1740
1989
  isThinking?: boolean;
1741
1990
  /**
@@ -1782,6 +2031,17 @@ interface ArtifactsPanelProps extends React$1.HTMLAttributes<HTMLDivElement> {
1782
2031
  * `openArtifactId`.
1783
2032
  */
1784
2033
  onArtifactClosed?: () => void;
2034
+ /**
2035
+ * Resolves the floating action cluster shown over the lightbox when an
2036
+ * artifact is opened. Switch on `artifact.type` and return the host-owned
2037
+ * buttons for that kind (e.g. Share + Download for deliverables, Download
2038
+ * for images). Aurelius ships the close affordance itself; return only the
2039
+ * kind-specific actions, or `null` when there are none. The `ctx.onClose`
2040
+ * helper lets actions dismiss the lightbox after a successful operation.
2041
+ */
2042
+ getArtifactActions?: (artifact: Artifact, ctx: {
2043
+ onClose: () => void;
2044
+ }) => React$1.ReactNode;
1785
2045
  }
1786
2046
  /**
1787
2047
  * ArtifactsPanel displays artifacts in a navigable tree panel.
@@ -1986,12 +2246,34 @@ declare const BranchNavigator: React$1.ForwardRefExoticComponent<BranchNavigator
1986
2246
 
1987
2247
  declare function createEmptyTree<T extends NodeTopology = ChatNode>(): ConversationTree<T>;
1988
2248
  /**
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.
2249
+ * Options for {@link addNodeToTree}.
2250
+ */
2251
+ interface AddNodeOptions {
2252
+ /**
2253
+ * Whether the new node should become the active leaf. Defaults to `true`,
2254
+ * matching the historical "create-and-focus" behaviour: a freshly added
2255
+ * node almost always represents the latest user-visible state.
2256
+ *
2257
+ * Pass `false` when focus is decided by a separate signal — e.g. an SSE
2258
+ * stream that emits `active_leaf_set` only when the new node *should*
2259
+ * pull focus (the previous active leaf was its parent), and otherwise
2260
+ * leaves the user wherever they navigated to.
2261
+ *
2262
+ * `lastLeafId` follows the same rule: it only advances to the new node
2263
+ * when the node is activated, since "deepest leaf the user has reached"
2264
+ * does not include nodes the system added off-screen.
2265
+ *
2266
+ * @default true
2267
+ */
2268
+ activate?: boolean;
2269
+ }
2270
+ /**
2271
+ * Append a node under `parentId` (or as a root when null). By default the new
2272
+ * node also becomes the active leaf — sending a message, retrying, editing,
2273
+ * and submitting all rely on that. Pass `{activate: false}` to insert without
2274
+ * pulling focus, e.g. for off-branch updates from a stream.
1993
2275
  */
1994
- declare function addNodeToTree<T extends NodeTopology>(tree: ConversationTree<T>, node: T, parentId?: string | null): ConversationTree<T>;
2276
+ declare function addNodeToTree<T extends NodeTopology>(tree: ConversationTree<T>, node: T, parentId?: string | null, options?: AddNodeOptions): ConversationTree<T>;
1995
2277
  /**
1996
2278
  * Walk root → activeLeaf, returning the nodes on the active path in order.
1997
2279
  */
@@ -2020,6 +2302,15 @@ declare function switchBranch<T extends NodeTopology>(tree: ConversationTree<T>,
2020
2302
  * Preserves `lastLeafId` when the new leaf is an ancestor of it (i.e. the user
2021
2303
  * rewound, or moved within the rewound region). Otherwise resets `lastLeafId`
2022
2304
  * to the new leaf — the greyed future doesn't carry over to unrelated paths.
2305
+ *
2306
+ * `null` clears the active leaf (empty session). An id that doesn't exist in
2307
+ * the tree is treated as a no-op rather than written through — the previous
2308
+ * behaviour silently set `activeLeafId` to a non-existent id, which made
2309
+ * `getActivePath` walk from a missing node and return an empty path. That
2310
+ * presented as "the chat just cleared" for callers that accidentally passed
2311
+ * a foreign id (a hypocaust execution id, a stale optimistic temp id, etc.).
2312
+ * A no-op turns those caller bugs into visible "nothing happened" instead of
2313
+ * an invisible empty-render.
2023
2314
  */
2024
2315
  declare function setActiveLeaf<T extends NodeTopology>(tree: ConversationTree<T>, leafId: string | null): ConversationTree<T>;
2025
2316
  /**
@@ -2042,110 +2333,6 @@ declare function messagesToTree(messages: Array<Omit<MessageNode, 'kind' | 'pare
2042
2333
  */
2043
2334
  declare function updateMessageContent<T extends NodeTopology>(tree: ConversationTree<T>, nodeId: string, content: ReactNode, isStreaming?: boolean): ConversationTree<T>;
2044
2335
 
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
2084
- */
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;
2100
- /**
2101
- * Direction to resize from
2102
- */
2103
- direction: 'left' | 'right';
2104
- }
2105
- /**
2106
- * Hook for resizable panels with percentage-based widths.
2107
- * Returns width as a CSS percentage string (e.g., "50%").
2108
- */
2109
- declare function useResizable({ initialWidthPercent, minWidthPercent, maxWidthPercent, direction, }: UseResizableProps): {
2110
- width: string;
2111
- widthPercent: number;
2112
- isResizing: boolean;
2113
- startResizing: (e: React.MouseEvent) => void;
2114
- };
2115
-
2116
- /**
2117
- * A breadcrumb entry representing one level of navigation depth.
2118
- */
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
- }
2125
- /**
2126
- * Return type for the useArtifactTreeNavigation hook.
2127
- */
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
- }
2142
- /**
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.
2146
- */
2147
- declare function useArtifactTreeNavigation(rootNodes: ArtifactNode[]): UseArtifactTreeNavigationReturn;
2148
-
2149
2336
  type BrandIconSize = 'sm' | 'md' | 'lg';
2150
2337
  type BrandIconVariant = 'solid' | 'outline';
2151
2338
  interface BrandIconProps extends React$1.HTMLAttributes<HTMLDivElement> {
@@ -2283,6 +2470,27 @@ interface TextCardProps extends Omit<CardProps, 'title'> {
2283
2470
  */
2284
2471
  declare const TextCard: React$1.ForwardRefExoticComponent<TextCardProps & React$1.RefAttributes<HTMLDivElement>>;
2285
2472
 
2473
+ interface DeliverableCardProps extends Omit<CardProps, 'title'> {
2474
+ /**
2475
+ * Resolved deliverable spec — every artifact reference already inflated.
2476
+ * Same shape the full DeliverableRenderer accepts.
2477
+ */
2478
+ deliverable?: Deliverable;
2479
+ /** Optional override for the cover title (otherwise derived from the spec). */
2480
+ title?: React$1.ReactNode;
2481
+ /** Optional subtitle shown below the title. */
2482
+ subtitle?: React$1.ReactNode;
2483
+ loading?: CardSlotLoading;
2484
+ }
2485
+ /**
2486
+ * Compact preview of a deliverable for surfaces that can't host the full
2487
+ * multi-page renderer (chat tree, artifact lists). Surfaces the deliverable's
2488
+ * cover info plus its section count. The whole card is clickable — the
2489
+ * affordance is the same expand-icon overlay that {@link ArtifactCard} shows
2490
+ * for every artifact kind, so we don't add a "Open preview" lure here.
2491
+ */
2492
+ declare const DeliverableCard: React$1.ForwardRefExoticComponent<DeliverableCardProps & React$1.RefAttributes<HTMLDivElement>>;
2493
+
2286
2494
  type SectionHeadingLevel = 'h2' | 'h3';
2287
2495
  interface SectionHeadingProps extends React$1.HTMLAttributes<HTMLHeadingElement> {
2288
2496
  level?: SectionHeadingLevel;
@@ -2329,90 +2537,6 @@ interface ArtifactVariantStackProps extends React$1.HTMLAttributes<HTMLDivElemen
2329
2537
  */
2330
2538
  declare const ArtifactVariantStack: React$1.ForwardRefExoticComponent<ArtifactVariantStackProps & React$1.RefAttributes<HTMLDivElement>>;
2331
2539
 
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
2540
  interface DeliverableRendererProps {
2417
2541
  /** Resolved deliverable spec — every artifact reference already inflated. */
2418
2542
  deliverable: Deliverable;
@@ -2507,4 +2631,4 @@ declare function QuoteBlockSection({ data }: QuoteBlockSectionProps): React$1.JS
2507
2631
 
2508
2632
  declare const version = "2.0.0";
2509
2633
 
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 };
2634
+ 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, 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, 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 };