@lukeashford/aurelius 4.1.0 → 4.3.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 CHANGED
@@ -195,8 +195,8 @@ interface ListSubheaderProps extends React$1.HTMLAttributes<HTMLLIElement> {
195
195
  }
196
196
  declare const ListSubheader: React$1.ForwardRefExoticComponent<ListSubheaderProps & React$1.RefAttributes<HTMLLIElement>>;
197
197
 
198
- type FileChipStatus = 'pending' | 'uploading' | 'complete' | 'error';
199
- interface FileChipProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, 'children'> {
198
+ type FileChipStatus = 'pending' | 'uploading' | 'uploaded' | 'analyzing' | 'analyzed' | 'upload_failed' | 'analysis_failed';
199
+ interface FileChipProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, 'children' | 'onClick'> {
200
200
  /**
201
201
  * File name to display
202
202
  */
@@ -226,9 +226,20 @@ interface FileChipProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, 'ch
226
226
  */
227
227
  removable?: boolean;
228
228
  /**
229
- * Error message to display (when status is 'error')
229
+ * Error message to display (when status is an error)
230
230
  */
231
231
  error?: string;
232
+ /**
233
+ * Backend artifact id, set once the upload has been integrated. When both
234
+ * `artifactId` and `onOpen` are present, the chip becomes clickable.
235
+ */
236
+ artifactId?: string;
237
+ /**
238
+ * Click handler invoked with `artifactId` when the chip is clicked.
239
+ * Compose-box (pre-integrate) chips should not pass this — the chip stays
240
+ * non-clickable except for its remove button.
241
+ */
242
+ onOpen?: (artifactId: string) => void;
232
243
  }
233
244
  declare const FileChip: React$1.ForwardRefExoticComponent<FileChipProps & React$1.RefAttributes<HTMLDivElement>>;
234
245
 
@@ -238,9 +249,12 @@ interface AttachmentItem {
238
249
  */
239
250
  id: string;
240
251
  /**
241
- * The File object
252
+ * The file's name, size and MIME type. A real `File` object satisfies this
253
+ * shape — compose-box callers pass File instances directly. Above-message
254
+ * (post-send) rendering supplies a synthetic record built from persisted
255
+ * attachment metadata.
242
256
  */
243
- file: File;
257
+ file: Pick<File, 'name' | 'size' | 'type'>;
244
258
  /**
245
259
  * Blob URL for image previews
246
260
  */
@@ -250,9 +264,14 @@ interface AttachmentItem {
250
264
  */
251
265
  status: FileChipStatus;
252
266
  /**
253
- * Error message if status is 'error'
267
+ * Error message if status is an error variant
254
268
  */
255
269
  error?: string;
270
+ /**
271
+ * Backend artifact id, set once the upload has been integrated. Required to
272
+ * make the chip clickable to open the artifact card modal.
273
+ */
274
+ artifactId?: string;
256
275
  }
257
276
  interface AttachmentPreviewProps extends React$1.HTMLAttributes<HTMLDivElement> {
258
277
  /**
@@ -272,6 +291,11 @@ interface AttachmentPreviewProps extends React$1.HTMLAttributes<HTMLDivElement>
272
291
  * Set to 0 or undefined to show all
273
292
  */
274
293
  maxVisible?: number;
294
+ /**
295
+ * Click handler for chips with an artifactId. When set, chips that carry an
296
+ * artifactId become clickable and forward the id to this handler.
297
+ */
298
+ onOpen?: (artifactId: string) => void;
275
299
  }
276
300
  declare const AttachmentPreview: React$1.ForwardRefExoticComponent<AttachmentPreviewProps & React$1.RefAttributes<HTMLDivElement>>;
277
301
 
@@ -708,6 +732,16 @@ interface MessageProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, 'con
708
732
  * Whether to hide actions (e.g., during streaming)
709
733
  */
710
734
  hideActions?: boolean;
735
+ /**
736
+ * Attachments to render above the bubble. Used by user messages to show the
737
+ * files that were attached to that turn. Empty/undefined renders nothing.
738
+ */
739
+ attachments?: AttachmentItem[];
740
+ /**
741
+ * Click handler invoked with an attachment's `artifactId`. Wire to open the
742
+ * artifact-card modal in the host app.
743
+ */
744
+ onAttachmentOpen?: (artifactId: string) => void;
711
745
  }
712
746
  declare const Message: React$1.ForwardRefExoticComponent<MessageProps & React$1.RefAttributes<HTMLDivElement>>;
713
747
 
@@ -738,20 +772,6 @@ interface MarkdownContentProps extends React$1.HTMLAttributes<HTMLDivElement> {
738
772
  }
739
773
  declare const MarkdownContent: React$1.ForwardRefExoticComponent<MarkdownContentProps & React$1.RefAttributes<HTMLDivElement>>;
740
774
 
741
- /**
742
- * Conversation tree types.
743
- *
744
- * The chat is rendered from a tree where every fork point — user-edits,
745
- * retries, parallel task attempts, rewinds — produces siblings under a shared
746
- * parent. The tree is generic over its node type so that the topology
747
- * algorithms in `./tree.ts` stay free of any kind-specific branching.
748
- *
749
- * Two concrete node kinds live here today: `MessageNode` (a user or assistant
750
- * turn) and `CheckpointNode` (a marker anchored to a hypocaust task execution
751
- * that the user can rewind to). New kinds plug in by extending `NodeTopology`
752
- * and joining the `ChatNode` union.
753
- */
754
-
755
775
  /**
756
776
  * The minimal contract every tree node must satisfy. The tree algorithms only
757
777
  * ever read these fields; everything else is opaque to them.
@@ -780,6 +800,39 @@ interface MessageNode extends NodeTopology {
780
800
  content: ReactNode;
781
801
  /** Whether this message is currently being streamed. */
782
802
  isStreaming?: boolean;
803
+ /**
804
+ * Files that were attached to this message turn. Rendered as a chip strip
805
+ * above the bubble. Empty/undefined renders nothing. The `artifactId` field
806
+ * on each item, paired with the host's `onAttachmentOpen`, drives
807
+ * click-through to the artifact-card modal.
808
+ */
809
+ attachments?: MessageAttachmentItem[];
810
+ }
811
+ /**
812
+ * One attachment row above a sent user message. Mirrors `AttachmentItem` but
813
+ * carries the persisted `artifactId` instead of an in-memory File reference,
814
+ * since these refer to artifacts that already live in the project tree.
815
+ */
816
+ interface MessageAttachmentItem {
817
+ /** Stable identifier for the chip (typically the upload or artifact id). */
818
+ id: string;
819
+ /** Display name (filename from the original upload). */
820
+ name: string;
821
+ /** MIME type — drives the chip icon and image-preview branch. */
822
+ type: string;
823
+ /** File size in bytes, optional. */
824
+ size?: number;
825
+ /** Pre-signed thumbnail URL for image previews, optional. */
826
+ previewUrl?: string;
827
+ /** Backend artifact id; required for click-through to work. */
828
+ artifactId?: string;
829
+ /**
830
+ * Lifecycle state captured at message-build time. Defaults to `analyzed`
831
+ * for the happy path. Set to `analysis_failed` to render a red chip on a
832
+ * successfully-integrated message, or to a pre-integrate state on a
833
+ * message whose integrate call failed.
834
+ */
835
+ status?: AttachmentStatus;
783
836
  }
784
837
  /**
785
838
  * A checkpoint that anchors a chat position to a hypocaust task execution.
@@ -799,8 +852,9 @@ interface CheckpointNode extends NodeTopology {
799
852
  * - `submit`: a merge of a working branch into the project head
800
853
  * - `rename`: a manual artifact rename via the artifacts panel (planned)
801
854
  * - `init`: the project head at session start (seeded into new chats)
855
+ * - `ingest`: a batch of user uploads committed to the project tree
802
856
  */
803
- executionKind: 'task' | 'submit' | 'rename' | 'init';
857
+ executionKind: 'task' | 'submit' | 'rename' | 'init' | 'ingest';
804
858
  /** Terminal status reported by hypocaust. */
805
859
  status: 'completed' | 'failed' | 'cancelled';
806
860
  }
@@ -834,9 +888,10 @@ interface ConversationTree<T extends NodeTopology = ChatNode> {
834
888
  lastLeafId: string | null;
835
889
  }
836
890
  /**
837
- * Attachment types for file uploads
891
+ * Attachment lifecycle, mirroring the per-file backend state machine:
892
+ * upload → analyze, with separate failure modes for each phase.
838
893
  */
839
- type AttachmentStatus = 'pending' | 'uploading' | 'complete' | 'error';
894
+ type AttachmentStatus = 'pending' | 'uploading' | 'uploaded' | 'analyzing' | 'analyzed' | 'upload_failed' | 'analysis_failed';
840
895
  interface Attachment {
841
896
  /**
842
897
  * Unique identifier for the attachment
@@ -855,13 +910,18 @@ interface Attachment {
855
910
  */
856
911
  status: AttachmentStatus;
857
912
  /**
858
- * Error message if status is 'error'
913
+ * Error message if status is an error variant
859
914
  */
860
915
  error?: string;
861
916
  /**
862
917
  * Upload progress (0-100)
863
918
  */
864
919
  progress?: number;
920
+ /**
921
+ * Backend artifact id, set once the batch is integrated. Drives chip
922
+ * click-through to the artifact-card modal in the host app.
923
+ */
924
+ artifactId?: string;
865
925
  }
866
926
  /**
867
927
  * Helper to check if a file is an image
@@ -1396,6 +1456,13 @@ interface ChatInterfaceProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>
1396
1456
  * Typically shown after a user message but before the first streaming token.
1397
1457
  */
1398
1458
  isThinking?: boolean;
1459
+ /**
1460
+ * Optional verbatim label for the thinking indicator. When set, the indicator
1461
+ * suppresses its rotating phrases and renders this string as-is. Use for
1462
+ * domain-specific waits like "Analyzing uploads..." — any animated suffix
1463
+ * (e.g. cycling dots) is the caller's responsibility.
1464
+ */
1465
+ thinkingLabel?: string;
1399
1466
  /**
1400
1467
  * Placeholder text for the main chat input.
1401
1468
  */
@@ -1429,6 +1496,12 @@ interface ChatInterfaceProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>
1429
1496
  * Called when an attachment is removed by the user (clicking the "x")
1430
1497
  */
1431
1498
  onAttachmentRemove?: (attachment: Attachment) => void;
1499
+ /**
1500
+ * Called when a chip above a sent message is clicked. Receives the
1501
+ * `artifactId` carried by the chip; wire to open the artifact-card modal.
1502
+ * Without this, above-message chips are not clickable.
1503
+ */
1504
+ onAttachmentOpen?: (artifactId: string) => void;
1432
1505
  /**
1433
1506
  * Top-level artifact tree nodes for the artifacts panel.
1434
1507
  */
@@ -1517,7 +1590,7 @@ declare const ChatInterface: React$1.ForwardRefExoticComponent<ChatInterfaceProp
1517
1590
  * What kind of project mutation produced this checkpoint. Drives the icon and
1518
1591
  * visual emphasis. The label and underlying state are unchanged.
1519
1592
  */
1520
- type CheckpointExecutionKind = 'task' | 'submit' | 'rename' | 'init';
1593
+ type CheckpointExecutionKind = 'task' | 'submit' | 'rename' | 'init' | 'ingest';
1521
1594
  /**
1522
1595
  * Terminal state of the underlying execution. `failed` and `cancelled` render
1523
1596
  * with status text and muted accents but stay clickable so the user can still
@@ -1639,6 +1712,12 @@ interface ChatViewProps extends React$1.HTMLAttributes<HTMLDivElement> {
1639
1712
  * Whether to show the thinking indicator (between user message and response).
1640
1713
  */
1641
1714
  isThinking?: boolean;
1715
+ /**
1716
+ * When set, the thinking indicator renders this label verbatim instead of
1717
+ * its rotating phrases. Use for domain-specific waits like
1718
+ * "Analyzing uploads..." (any animated suffix is the caller's responsibility).
1719
+ */
1720
+ thinkingLabel?: string;
1642
1721
  /**
1643
1722
  * Callback when the user scrolls manually.
1644
1723
  */
@@ -1664,6 +1743,19 @@ interface ArtifactsPanelProps extends React$1.HTMLAttributes<HTMLDivElement> {
1664
1743
  * Whether artifacts are still loading (show skeletons)
1665
1744
  */
1666
1745
  loading?: CardSlotLoading;
1746
+ /**
1747
+ * When set to a non-null id, surfaces the same expanded artifact card the
1748
+ * panel grid would. Drives chip click-through from outside the panel.
1749
+ * Pair with `onArtifactClosed` so the parent can clear its controller
1750
+ * state when the user dismisses the modal.
1751
+ */
1752
+ openArtifactId?: string | null;
1753
+ /**
1754
+ * Called when the user closes the expanded card (X button or backdrop).
1755
+ * The parent owns whether subsequent renders re-open by re-supplying
1756
+ * `openArtifactId`.
1757
+ */
1758
+ onArtifactClosed?: () => void;
1667
1759
  }
1668
1760
  /**
1669
1761
  * ArtifactsPanel displays artifacts in a navigable tree panel.
@@ -1807,6 +1899,13 @@ interface ThinkingIndicatorProps extends React$1.HTMLAttributes<HTMLDivElement>
1807
1899
  * Custom phrases to cycle through (defaults to built-in phrases)
1808
1900
  */
1809
1901
  phrases?: string[];
1902
+ /**
1903
+ * When set, suppresses internal phrase rotation and renders this label
1904
+ * verbatim. Used by the host to express domain-specific waiting states
1905
+ * (e.g. "Analyzing uploads..."). Any animated suffix (cycling dots) is the
1906
+ * caller's responsibility — Aurelius renders the string as-is.
1907
+ */
1908
+ manualLabel?: string;
1810
1909
  }
1811
1910
  /**
1812
1911
  * ThinkingIndicator shows an animated state when the assistant is processing a request
package/dist/index.d.ts CHANGED
@@ -195,8 +195,8 @@ interface ListSubheaderProps extends React$1.HTMLAttributes<HTMLLIElement> {
195
195
  }
196
196
  declare const ListSubheader: React$1.ForwardRefExoticComponent<ListSubheaderProps & React$1.RefAttributes<HTMLLIElement>>;
197
197
 
198
- type FileChipStatus = 'pending' | 'uploading' | 'complete' | 'error';
199
- interface FileChipProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, 'children'> {
198
+ type FileChipStatus = 'pending' | 'uploading' | 'uploaded' | 'analyzing' | 'analyzed' | 'upload_failed' | 'analysis_failed';
199
+ interface FileChipProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, 'children' | 'onClick'> {
200
200
  /**
201
201
  * File name to display
202
202
  */
@@ -226,9 +226,20 @@ interface FileChipProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, 'ch
226
226
  */
227
227
  removable?: boolean;
228
228
  /**
229
- * Error message to display (when status is 'error')
229
+ * Error message to display (when status is an error)
230
230
  */
231
231
  error?: string;
232
+ /**
233
+ * Backend artifact id, set once the upload has been integrated. When both
234
+ * `artifactId` and `onOpen` are present, the chip becomes clickable.
235
+ */
236
+ artifactId?: string;
237
+ /**
238
+ * Click handler invoked with `artifactId` when the chip is clicked.
239
+ * Compose-box (pre-integrate) chips should not pass this — the chip stays
240
+ * non-clickable except for its remove button.
241
+ */
242
+ onOpen?: (artifactId: string) => void;
232
243
  }
233
244
  declare const FileChip: React$1.ForwardRefExoticComponent<FileChipProps & React$1.RefAttributes<HTMLDivElement>>;
234
245
 
@@ -238,9 +249,12 @@ interface AttachmentItem {
238
249
  */
239
250
  id: string;
240
251
  /**
241
- * The File object
252
+ * The file's name, size and MIME type. A real `File` object satisfies this
253
+ * shape — compose-box callers pass File instances directly. Above-message
254
+ * (post-send) rendering supplies a synthetic record built from persisted
255
+ * attachment metadata.
242
256
  */
243
- file: File;
257
+ file: Pick<File, 'name' | 'size' | 'type'>;
244
258
  /**
245
259
  * Blob URL for image previews
246
260
  */
@@ -250,9 +264,14 @@ interface AttachmentItem {
250
264
  */
251
265
  status: FileChipStatus;
252
266
  /**
253
- * Error message if status is 'error'
267
+ * Error message if status is an error variant
254
268
  */
255
269
  error?: string;
270
+ /**
271
+ * Backend artifact id, set once the upload has been integrated. Required to
272
+ * make the chip clickable to open the artifact card modal.
273
+ */
274
+ artifactId?: string;
256
275
  }
257
276
  interface AttachmentPreviewProps extends React$1.HTMLAttributes<HTMLDivElement> {
258
277
  /**
@@ -272,6 +291,11 @@ interface AttachmentPreviewProps extends React$1.HTMLAttributes<HTMLDivElement>
272
291
  * Set to 0 or undefined to show all
273
292
  */
274
293
  maxVisible?: number;
294
+ /**
295
+ * Click handler for chips with an artifactId. When set, chips that carry an
296
+ * artifactId become clickable and forward the id to this handler.
297
+ */
298
+ onOpen?: (artifactId: string) => void;
275
299
  }
276
300
  declare const AttachmentPreview: React$1.ForwardRefExoticComponent<AttachmentPreviewProps & React$1.RefAttributes<HTMLDivElement>>;
277
301
 
@@ -708,6 +732,16 @@ interface MessageProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, 'con
708
732
  * Whether to hide actions (e.g., during streaming)
709
733
  */
710
734
  hideActions?: boolean;
735
+ /**
736
+ * Attachments to render above the bubble. Used by user messages to show the
737
+ * files that were attached to that turn. Empty/undefined renders nothing.
738
+ */
739
+ attachments?: AttachmentItem[];
740
+ /**
741
+ * Click handler invoked with an attachment's `artifactId`. Wire to open the
742
+ * artifact-card modal in the host app.
743
+ */
744
+ onAttachmentOpen?: (artifactId: string) => void;
711
745
  }
712
746
  declare const Message: React$1.ForwardRefExoticComponent<MessageProps & React$1.RefAttributes<HTMLDivElement>>;
713
747
 
@@ -738,20 +772,6 @@ interface MarkdownContentProps extends React$1.HTMLAttributes<HTMLDivElement> {
738
772
  }
739
773
  declare const MarkdownContent: React$1.ForwardRefExoticComponent<MarkdownContentProps & React$1.RefAttributes<HTMLDivElement>>;
740
774
 
741
- /**
742
- * Conversation tree types.
743
- *
744
- * The chat is rendered from a tree where every fork point — user-edits,
745
- * retries, parallel task attempts, rewinds — produces siblings under a shared
746
- * parent. The tree is generic over its node type so that the topology
747
- * algorithms in `./tree.ts` stay free of any kind-specific branching.
748
- *
749
- * Two concrete node kinds live here today: `MessageNode` (a user or assistant
750
- * turn) and `CheckpointNode` (a marker anchored to a hypocaust task execution
751
- * that the user can rewind to). New kinds plug in by extending `NodeTopology`
752
- * and joining the `ChatNode` union.
753
- */
754
-
755
775
  /**
756
776
  * The minimal contract every tree node must satisfy. The tree algorithms only
757
777
  * ever read these fields; everything else is opaque to them.
@@ -780,6 +800,39 @@ interface MessageNode extends NodeTopology {
780
800
  content: ReactNode;
781
801
  /** Whether this message is currently being streamed. */
782
802
  isStreaming?: boolean;
803
+ /**
804
+ * Files that were attached to this message turn. Rendered as a chip strip
805
+ * above the bubble. Empty/undefined renders nothing. The `artifactId` field
806
+ * on each item, paired with the host's `onAttachmentOpen`, drives
807
+ * click-through to the artifact-card modal.
808
+ */
809
+ attachments?: MessageAttachmentItem[];
810
+ }
811
+ /**
812
+ * One attachment row above a sent user message. Mirrors `AttachmentItem` but
813
+ * carries the persisted `artifactId` instead of an in-memory File reference,
814
+ * since these refer to artifacts that already live in the project tree.
815
+ */
816
+ interface MessageAttachmentItem {
817
+ /** Stable identifier for the chip (typically the upload or artifact id). */
818
+ id: string;
819
+ /** Display name (filename from the original upload). */
820
+ name: string;
821
+ /** MIME type — drives the chip icon and image-preview branch. */
822
+ type: string;
823
+ /** File size in bytes, optional. */
824
+ size?: number;
825
+ /** Pre-signed thumbnail URL for image previews, optional. */
826
+ previewUrl?: string;
827
+ /** Backend artifact id; required for click-through to work. */
828
+ artifactId?: string;
829
+ /**
830
+ * Lifecycle state captured at message-build time. Defaults to `analyzed`
831
+ * for the happy path. Set to `analysis_failed` to render a red chip on a
832
+ * successfully-integrated message, or to a pre-integrate state on a
833
+ * message whose integrate call failed.
834
+ */
835
+ status?: AttachmentStatus;
783
836
  }
784
837
  /**
785
838
  * A checkpoint that anchors a chat position to a hypocaust task execution.
@@ -799,8 +852,9 @@ interface CheckpointNode extends NodeTopology {
799
852
  * - `submit`: a merge of a working branch into the project head
800
853
  * - `rename`: a manual artifact rename via the artifacts panel (planned)
801
854
  * - `init`: the project head at session start (seeded into new chats)
855
+ * - `ingest`: a batch of user uploads committed to the project tree
802
856
  */
803
- executionKind: 'task' | 'submit' | 'rename' | 'init';
857
+ executionKind: 'task' | 'submit' | 'rename' | 'init' | 'ingest';
804
858
  /** Terminal status reported by hypocaust. */
805
859
  status: 'completed' | 'failed' | 'cancelled';
806
860
  }
@@ -834,9 +888,10 @@ interface ConversationTree<T extends NodeTopology = ChatNode> {
834
888
  lastLeafId: string | null;
835
889
  }
836
890
  /**
837
- * Attachment types for file uploads
891
+ * Attachment lifecycle, mirroring the per-file backend state machine:
892
+ * upload → analyze, with separate failure modes for each phase.
838
893
  */
839
- type AttachmentStatus = 'pending' | 'uploading' | 'complete' | 'error';
894
+ type AttachmentStatus = 'pending' | 'uploading' | 'uploaded' | 'analyzing' | 'analyzed' | 'upload_failed' | 'analysis_failed';
840
895
  interface Attachment {
841
896
  /**
842
897
  * Unique identifier for the attachment
@@ -855,13 +910,18 @@ interface Attachment {
855
910
  */
856
911
  status: AttachmentStatus;
857
912
  /**
858
- * Error message if status is 'error'
913
+ * Error message if status is an error variant
859
914
  */
860
915
  error?: string;
861
916
  /**
862
917
  * Upload progress (0-100)
863
918
  */
864
919
  progress?: number;
920
+ /**
921
+ * Backend artifact id, set once the batch is integrated. Drives chip
922
+ * click-through to the artifact-card modal in the host app.
923
+ */
924
+ artifactId?: string;
865
925
  }
866
926
  /**
867
927
  * Helper to check if a file is an image
@@ -1396,6 +1456,13 @@ interface ChatInterfaceProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>
1396
1456
  * Typically shown after a user message but before the first streaming token.
1397
1457
  */
1398
1458
  isThinking?: boolean;
1459
+ /**
1460
+ * Optional verbatim label for the thinking indicator. When set, the indicator
1461
+ * suppresses its rotating phrases and renders this string as-is. Use for
1462
+ * domain-specific waits like "Analyzing uploads..." — any animated suffix
1463
+ * (e.g. cycling dots) is the caller's responsibility.
1464
+ */
1465
+ thinkingLabel?: string;
1399
1466
  /**
1400
1467
  * Placeholder text for the main chat input.
1401
1468
  */
@@ -1429,6 +1496,12 @@ interface ChatInterfaceProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>
1429
1496
  * Called when an attachment is removed by the user (clicking the "x")
1430
1497
  */
1431
1498
  onAttachmentRemove?: (attachment: Attachment) => void;
1499
+ /**
1500
+ * Called when a chip above a sent message is clicked. Receives the
1501
+ * `artifactId` carried by the chip; wire to open the artifact-card modal.
1502
+ * Without this, above-message chips are not clickable.
1503
+ */
1504
+ onAttachmentOpen?: (artifactId: string) => void;
1432
1505
  /**
1433
1506
  * Top-level artifact tree nodes for the artifacts panel.
1434
1507
  */
@@ -1517,7 +1590,7 @@ declare const ChatInterface: React$1.ForwardRefExoticComponent<ChatInterfaceProp
1517
1590
  * What kind of project mutation produced this checkpoint. Drives the icon and
1518
1591
  * visual emphasis. The label and underlying state are unchanged.
1519
1592
  */
1520
- type CheckpointExecutionKind = 'task' | 'submit' | 'rename' | 'init';
1593
+ type CheckpointExecutionKind = 'task' | 'submit' | 'rename' | 'init' | 'ingest';
1521
1594
  /**
1522
1595
  * Terminal state of the underlying execution. `failed` and `cancelled` render
1523
1596
  * with status text and muted accents but stay clickable so the user can still
@@ -1639,6 +1712,12 @@ interface ChatViewProps extends React$1.HTMLAttributes<HTMLDivElement> {
1639
1712
  * Whether to show the thinking indicator (between user message and response).
1640
1713
  */
1641
1714
  isThinking?: boolean;
1715
+ /**
1716
+ * When set, the thinking indicator renders this label verbatim instead of
1717
+ * its rotating phrases. Use for domain-specific waits like
1718
+ * "Analyzing uploads..." (any animated suffix is the caller's responsibility).
1719
+ */
1720
+ thinkingLabel?: string;
1642
1721
  /**
1643
1722
  * Callback when the user scrolls manually.
1644
1723
  */
@@ -1664,6 +1743,19 @@ interface ArtifactsPanelProps extends React$1.HTMLAttributes<HTMLDivElement> {
1664
1743
  * Whether artifacts are still loading (show skeletons)
1665
1744
  */
1666
1745
  loading?: CardSlotLoading;
1746
+ /**
1747
+ * When set to a non-null id, surfaces the same expanded artifact card the
1748
+ * panel grid would. Drives chip click-through from outside the panel.
1749
+ * Pair with `onArtifactClosed` so the parent can clear its controller
1750
+ * state when the user dismisses the modal.
1751
+ */
1752
+ openArtifactId?: string | null;
1753
+ /**
1754
+ * Called when the user closes the expanded card (X button or backdrop).
1755
+ * The parent owns whether subsequent renders re-open by re-supplying
1756
+ * `openArtifactId`.
1757
+ */
1758
+ onArtifactClosed?: () => void;
1667
1759
  }
1668
1760
  /**
1669
1761
  * ArtifactsPanel displays artifacts in a navigable tree panel.
@@ -1807,6 +1899,13 @@ interface ThinkingIndicatorProps extends React$1.HTMLAttributes<HTMLDivElement>
1807
1899
  * Custom phrases to cycle through (defaults to built-in phrases)
1808
1900
  */
1809
1901
  phrases?: string[];
1902
+ /**
1903
+ * When set, suppresses internal phrase rotation and renders this label
1904
+ * verbatim. Used by the host to express domain-specific waiting states
1905
+ * (e.g. "Analyzing uploads..."). Any animated suffix (cycling dots) is the
1906
+ * caller's responsibility — Aurelius renders the string as-is.
1907
+ */
1908
+ manualLabel?: string;
1810
1909
  }
1811
1910
  /**
1812
1911
  * ThinkingIndicator shows an animated state when the assistant is processing a request