@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.mts +751 -427
- package/dist/index.d.ts +751 -427
- package/dist/index.js +2552 -2201
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +2497 -2152
- package/dist/index.mjs.map +1 -1
- package/dist/styles/deliverable.css +52 -0
- package/dist/styles/theme.css +72 -1
- package/llms.md +123 -24
- package/package.json +5 -5
package/dist/index.d.mts
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
|
|
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
|
|
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
|
-
*
|
|
1265
|
-
|
|
1266
|
-
|
|
1267
|
-
|
|
1268
|
-
|
|
1269
|
-
|
|
1270
|
-
|
|
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
|
-
*
|
|
1524
|
+
* Top-level deliverable. Holds metadata used on the cover and an ordered list
|
|
1525
|
+
* of sections to render.
|
|
1337
1526
|
*/
|
|
1338
|
-
|
|
1339
|
-
|
|
1340
|
-
|
|
1341
|
-
|
|
1342
|
-
|
|
1343
|
-
|
|
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
|
-
*
|
|
1346
|
-
*
|
|
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
|
-
|
|
1349
|
-
|
|
1350
|
-
|
|
1351
|
-
|
|
1352
|
-
|
|
1353
|
-
|
|
1354
|
-
|
|
1355
|
-
|
|
1356
|
-
type:
|
|
1357
|
-
|
|
1358
|
-
|
|
1359
|
-
|
|
1360
|
-
|
|
1361
|
-
|
|
1362
|
-
|
|
1363
|
-
|
|
1364
|
-
|
|
1365
|
-
|
|
1366
|
-
|
|
1367
|
-
|
|
1368
|
-
|
|
1369
|
-
|
|
1370
|
-
|
|
1371
|
-
|
|
1372
|
-
|
|
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
|
-
*
|
|
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
|
-
|
|
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
|
-
*
|
|
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
|
-
|
|
2528
|
+
activate?: boolean;
|
|
2104
2529
|
}
|
|
2105
2530
|
/**
|
|
2106
|
-
*
|
|
2107
|
-
*
|
|
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
|
|
2110
|
-
|
|
2111
|
-
|
|
2112
|
-
|
|
2113
|
-
|
|
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
|
-
*
|
|
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
|
-
|
|
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
|
-
*
|
|
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
|
-
|
|
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
|
-
*
|
|
2144
|
-
*
|
|
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
|
|
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
|
-
|
|
2334
|
-
|
|
2335
|
-
|
|
2336
|
-
|
|
2337
|
-
|
|
2338
|
-
|
|
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 };
|