@invana/ui 0.0.29 → 0.0.31

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.cts CHANGED
@@ -25,6 +25,24 @@ import * as TogglePrimitive from '@radix-ui/react-toggle';
25
25
  import * as ToggleGroupPrimitive from '@radix-ui/react-toggle-group';
26
26
  import { LucideIcon } from 'lucide-react';
27
27
 
28
+ /**
29
+ * `clsx` + `tailwind-merge`, and nothing else.
30
+ *
31
+ * This used to be an `extendTailwindMerge` that registered one class group.
32
+ * `text-*` is ambiguous — it is both the font-size scale and the text-colour
33
+ * scale — so tailwind-merge decides which group a class belongs to by matching
34
+ * its value against Tailwind's built-in size names. `meta` was not one of them,
35
+ * so `text-meta` was read as a *colour* and silently dropped whatever colour
36
+ * class came before it:
37
+ *
38
+ * cn("text-[var(--badge-ink)]", "text-meta") → "text-meta" // colour lost
39
+ *
40
+ * The type ladder is now `base · sm · xs` (`@invana/styling`), every one of
41
+ * them a Tailwind built-in, so there is nothing left to register and the
42
+ * footgun is gone with the token that caused it. If a future `--text-*` token
43
+ * invents a name Tailwind does not know, bring the `extend` back in the same
44
+ * breath — it will eat colours at a distance and the cause will not be obvious.
45
+ */
28
46
  declare function cn(...inputs: ClassValue[]): string;
29
47
 
30
48
  declare const Accordion: React$1.ForwardRefExoticComponent<(AccordionPrimitive.AccordionSingleProps | AccordionPrimitive.AccordionMultipleProps) & React$1.RefAttributes<HTMLDivElement>>;
@@ -302,6 +320,63 @@ declare function ItemFooter({ className, ...props }: React$1.ComponentProps<"div
302
320
  declare function Kbd({ className, ...props }: React.ComponentProps<"kbd">): React$1.JSX.Element;
303
321
  declare function KbdGroup({ className, ...props }: React.ComponentProps<"div">): React$1.JSX.Element;
304
322
 
323
+ /**
324
+ * `variant` is how loudly the link asks to be clicked.
325
+ *
326
+ * Three, because three is what the product actually uses and a fourth would be
327
+ * a decision nobody could state:
328
+ *
329
+ * - `default` — a link inside a sentence. Accent-coloured, underlined on hover.
330
+ * The colour is what marks it as a link while reading; the underline confirms
331
+ * it under the cursor.
332
+ * - `underlined` — always underlined, accent-coloured. For a link that has to
333
+ * read as a link **before** the cursor arrives: terms and conditions under a
334
+ * sign-in button, a citation, anything legal or referential.
335
+ * - `quiet` — muted, brightening to the foreground on hover. A footer link, a
336
+ * row that happens to be navigable. It is not shouting, and it is not
337
+ * pretending to be body copy either: the hover is the affordance.
338
+ *
339
+ * Deliberately **not** a `Button` variant. A button performs an act on this
340
+ * page; a link goes somewhere, which is a different promise, a different
341
+ * element and a different set of things a browser will do for you (middle
342
+ * click, copy address, open in a tab). A `<button>` styled as a link takes all
343
+ * of that away, and `Button asChild` around an `<a>` is the escape hatch for
344
+ * the genuinely button-shaped case.
345
+ *
346
+ * No size axis. A link takes the size of the text it sits in — that is what
347
+ * makes it a link *in a sentence* rather than a control dropped into one.
348
+ */
349
+ declare const linkVariants: (props?: ({
350
+ variant?: "default" | "underlined" | "quiet" | null | undefined;
351
+ } & class_variance_authority_types.ClassProp) | undefined) => string;
352
+ interface LinkProps extends React$1.AnchorHTMLAttributes<HTMLAnchorElement>, VariantProps<typeof linkVariants> {
353
+ /**
354
+ * The destination is outside this app: opens in a new tab, and carries
355
+ * `rel="noreferrer noopener"` so the opened page cannot reach back through
356
+ * `window.opener`.
357
+ *
358
+ * A flag rather than asking every call site to remember `target` and `rel`
359
+ * together — the pair is the thing that is correct, and half of it is a
360
+ * security bug nobody notices.
361
+ */
362
+ external?: boolean;
363
+ }
364
+ /**
365
+ * A link. An `<a>` with the kit's colours, and the two behaviours an external
366
+ * one needs.
367
+ *
368
+ * It exists because every surface was writing its own — `text-primary
369
+ * hover:underline` here, `text-muted-foreground hover:underline` there — which
370
+ * is four spellings of one object and a colour that drifts the day the accent
371
+ * moves.
372
+ *
373
+ * Routing is the consumer's: this renders an `<a>`, and a router's own `Link`
374
+ * wraps it (`<RouterLink asChild>`) or takes these classes. The kit does not
375
+ * depend on a router, because a component that did could only ever be used with
376
+ * that one.
377
+ */
378
+ declare const Link: React$1.ForwardRefExoticComponent<LinkProps & React$1.RefAttributes<HTMLAnchorElement>>;
379
+
305
380
  declare function MenubarMenu({ ...props }: React$1.ComponentProps<typeof MenubarPrimitive.Menu>): React$1.JSX.Element;
306
381
  declare function MenubarGroup({ ...props }: React$1.ComponentProps<typeof MenubarPrimitive.Group>): React$1.JSX.Element;
307
382
  declare function MenubarPortal({ ...props }: React$1.ComponentProps<typeof MenubarPrimitive.Portal>): React$1.JSX.Element;
@@ -387,13 +462,53 @@ declare const ResizableHandle: ({ withHandle, className, ...props }: React.Compo
387
462
  declare const ScrollArea: React$1.ForwardRefExoticComponent<Omit<ScrollAreaPrimitive.ScrollAreaProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
388
463
  declare const ScrollBar: React$1.ForwardRefExoticComponent<Omit<ScrollAreaPrimitive.ScrollAreaScrollbarProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
389
464
 
465
+ interface SegmentedOption {
466
+ /** What the caller gets back. */
467
+ value: string;
468
+ label: React$1.ReactNode;
469
+ disabled?: boolean;
470
+ }
471
+ interface SegmentedControlProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, "onChange" | "defaultValue"> {
472
+ options: SegmentedOption[];
473
+ /** Controlled. Pass it with {@link onValueChange}. */
474
+ value?: string;
475
+ /** Uncontrolled starting option. Defaults to the first. */
476
+ defaultValue?: string;
477
+ onValueChange?: (value: string) => void;
478
+ /** `xs` is 22px — a pagehead slot. `sm` is 26px, for a panel header. */
479
+ size?: "xs" | "sm";
480
+ /** Fill the width given, each option an equal share of it. */
481
+ stretch?: boolean;
482
+ }
483
+ /**
484
+ * One page, read another way.
485
+ *
486
+ * A run has four readings and a step has three — *In order · Layers · Flow ·
487
+ * Lens*, *Overview · Touched · Log* — and each of them is the **same record**
488
+ * drawn differently. That is what this control says and a tab strip does not:
489
+ * tabs own a panel and imply separate content underneath, so four tabs over one
490
+ * trace read as four pages that happen to share a header. A segmented control
491
+ * sits in the pagehead's action slot, beside the chips that describe the record,
492
+ * and says *this is a switch on what you are already looking at*.
493
+ *
494
+ * It is also not `ToggleGroup`. That is a set of independent toggles which may
495
+ * all be off; a reading is never off, so the control is a radio group and is
496
+ * announced as one. Arrow keys move between options, which is what a reader who
497
+ * never leaves the keyboard expects of a radio group.
498
+ *
499
+ * **The frame is the control.** One border around the whole thing, the active
500
+ * option filled with the primary tint and the rest plain — never a border per
501
+ * option, which draws three controls where there is one.
502
+ */
503
+ declare const SegmentedControl: React$1.ForwardRefExoticComponent<SegmentedControlProps & React$1.RefAttributes<HTMLDivElement>>;
504
+
390
505
  declare const Sheet: React$1.FC<DialogPrimitive.DialogProps>;
391
506
  declare const SheetTrigger: React$1.ForwardRefExoticComponent<DialogPrimitive.DialogTriggerProps & React$1.RefAttributes<HTMLButtonElement>>;
392
507
  declare const SheetClose: React$1.ForwardRefExoticComponent<DialogPrimitive.DialogCloseProps & React$1.RefAttributes<HTMLButtonElement>>;
393
508
  declare const SheetPortal: React$1.FC<DialogPrimitive.DialogPortalProps>;
394
509
  declare const SheetOverlay: React$1.ForwardRefExoticComponent<Omit<DialogPrimitive.DialogOverlayProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
395
510
  declare const sheetVariants: (props?: ({
396
- side?: "bottom" | "left" | "right" | "top" | null | undefined;
511
+ side?: "top" | "right" | "bottom" | "left" | null | undefined;
397
512
  } & class_variance_authority_types.ClassProp) | undefined) => string;
398
513
  interface SheetContentProps extends React$1.ComponentPropsWithoutRef<typeof DialogPrimitive.Content>, VariantProps<typeof sheetVariants> {
399
514
  }
@@ -564,6 +679,38 @@ declare const ToggleGroupItem: React$1.ForwardRefExoticComponent<Omit<ToggleGrou
564
679
  size?: "default" | "sm" | "lg" | null | undefined;
565
680
  } & class_variance_authority_types.ClassProp) | undefined) => string> & React$1.RefAttributes<HTMLButtonElement>>;
566
681
 
682
+ /**
683
+ * Why a band is not drawn — **and these are three different facts.**
684
+ *
685
+ * - `unrecorded` — nobody wrote this document. A step in flight has no
686
+ * `result.json` because the interpreter writes it when the row settles.
687
+ * - `purged` — it was written, and retention removed it. The counts and the
688
+ * outcome stay; the input, the output and the log do not.
689
+ * - `declared-none` — the step declares no such output at all: a `notify` step
690
+ * returns nothing, and a read under `read_only: true` writes nothing.
691
+ *
692
+ * Collapsing them into one *empty* is the thing this component exists to stop.
693
+ * An empty table claims a step returned an empty result; *purged* claims it
694
+ * returned nothing. Both are lies about a different record.
695
+ */
696
+ type AbsenceReason = "unrecorded" | "purged" | "declared-none";
697
+ interface AbsenceNoteProps extends React$1.HTMLAttributes<HTMLDivElement> {
698
+ reason: AbsenceReason;
699
+ /** Overrides the word. The engine's own term is better where there is one — `read_only: true`. */
700
+ label?: React$1.ReactNode;
701
+ /** Why, in the record's terms. One or two sentences, and it is not optional in spirit. */
702
+ children?: React$1.ReactNode;
703
+ }
704
+ /**
705
+ * A band with nothing in it, saying which kind of nothing.
706
+ *
707
+ * It is not `EmptyState`: that invites an action — *load a dataset*, *ask a
708
+ * question* — and there is no action here. A step that recorded nothing is a
709
+ * finished fact about a finished record, and the only thing owed to the reader
710
+ * is which fact it is.
711
+ */
712
+ declare const AbsenceNote: React$1.ForwardRefExoticComponent<AbsenceNoteProps & React$1.RefAttributes<HTMLDivElement>>;
713
+
567
714
  /**
568
715
  * How this address stood in the run, or in the rule being read.
569
716
  *
@@ -573,7 +720,12 @@ declare const ToggleGroupItem: React$1.ForwardRefExoticComponent<Omit<ToggleGrou
573
720
  * is an event, and collapsing them loses *the bound was there and nothing ever
574
721
  * tested it*.
575
722
  */
576
- type AddressTone = "allowed" | "denied" | "refused" | "untouched";
723
+ type KnownAddressTone = "allowed" | "denied" | "refused" | "untouched";
724
+ /**
725
+ * The values the kit draws specially — **suggestions, not a limit.** Anything
726
+ * else renders with the neutral token and its own name.
727
+ */
728
+ type AddressTone = KnownAddressTone | (string & {});
577
729
  /**
578
730
  * Split an address so the **participant survives truncation**.
579
731
  *
@@ -668,6 +820,88 @@ interface AppStatusBarProps extends React$1.HTMLAttributes<HTMLDivElement>, Vari
668
820
  */
669
821
  declare const AppStatusBar: React$1.ForwardRefExoticComponent<AppStatusBarProps & React$1.RefAttributes<HTMLDivElement>>;
670
822
 
823
+ interface Artifact {
824
+ /** The file's name as the step wrote it — `rows-1284.csv`. */
825
+ name: React$1.ReactNode;
826
+ /** What produced it — `interpreter`, `export`, `rejects`, `input`. */
827
+ kind?: React$1.ReactNode;
828
+ size?: React$1.ReactNode;
829
+ /**
830
+ * **The address.** The same bytes produced twice are one artifact, so the
831
+ * digest — eight characters, mono — is what a reader quotes, not the name.
832
+ */
833
+ digest?: React$1.ReactNode;
834
+ /** When it landed, on the run's own clock — `+76.8s`. */
835
+ written?: React$1.ReactNode;
836
+ /**
837
+ * Retention has taken the bytes. The row stays and is struck: *this file
838
+ * existed and is gone* is a different fact from *no file was written*.
839
+ */
840
+ gone?: boolean;
841
+ }
842
+ interface ArtifactTableProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, "children"> {
843
+ files: Artifact[];
844
+ onOpen?: (file: Artifact, index: number) => void;
845
+ onDownload?: (file: Artifact, index: number) => void;
846
+ /** Anything else a row offers. Replaces the two defaults when given. */
847
+ renderActions?: (file: Artifact, index: number) => React$1.ReactNode;
848
+ }
849
+ /**
850
+ * The files a step left behind.
851
+ *
852
+ * A file is the one thing a step produces that outlives the reading of it, and
853
+ * it is **addressed by digest** — which is why the digest is drawn beside the
854
+ * name rather than hidden behind a tooltip: a file that outlives its run is
855
+ * still reachable, and two runs that produced the same bytes produced one
856
+ * artifact.
857
+ *
858
+ * Rejected records are a file like any other. That is what makes `18 rejected`
859
+ * something a person can open instead of a dead count.
860
+ *
861
+ * **A step that left nothing draws no table.** Absence is the caller's to
862
+ * render — see `AbsenceNote` — because an empty table here would claim the step
863
+ * wrote an empty file.
864
+ */
865
+ declare const ArtifactTable: React$1.ForwardRefExoticComponent<ArtifactTableProps & React$1.RefAttributes<HTMLDivElement>>;
866
+
867
+ interface AttemptRow {
868
+ /** `queued` · `attempt 1` · `attempt 2` · `settled`. */
869
+ label: React$1.ReactNode;
870
+ /** When it started, on the run's own clock — `+44.5s`. */
871
+ started?: React$1.ReactNode;
872
+ /** How long it took — `30.0s`, or `4.2s…` while it is still running. */
873
+ took?: React$1.ReactNode;
874
+ /** What happened, in one line. */
875
+ what?: React$1.ReactNode;
876
+ tone?: "muted" | "info" | "success" | "warning" | "destructive";
877
+ /** It ran and it did not stick. **Struck, never dropped.** */
878
+ struck?: boolean;
879
+ }
880
+ interface AttemptClockProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, "children"> {
881
+ rows: AttemptRow[];
882
+ /**
883
+ * What the two numbers are — `elapsed 32.4s · working 2.3s · the gap is the
884
+ * attempt that timed out`.
885
+ *
886
+ * **Stated, never left as arithmetic.** A reader who has to subtract two
887
+ * durations to find a 30-second timeout has been handed a sum instead of an
888
+ * answer.
889
+ */
890
+ summary?: React$1.ReactNode;
891
+ }
892
+ /**
893
+ * A step's clock, attempt by attempt.
894
+ *
895
+ * One duration cannot say what happened to a step that timed out once and then
896
+ * returned: `2.1s` is what it *did*, `32.4s` is what a reader waited, and the
897
+ * gap between them **is** the first attempt. So the clock is a row per attempt
898
+ * — queued, each try, settled — and the try that failed keeps its place, struck.
899
+ *
900
+ * Nothing new is recorded for this: it is the `timing` and `attempt` fields the
901
+ * interpreter already writes, read as a list instead of as a total.
902
+ */
903
+ declare const AttemptClock: React$1.ForwardRefExoticComponent<AttemptClockProps & React$1.RefAttributes<HTMLDivElement>>;
904
+
671
905
  /**
672
906
  * TODO — provisional. Built ahead of its design review.
673
907
  *
@@ -770,19 +1004,38 @@ interface BarChartVProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, "c
770
1004
  declare const BarChartV: React$1.ForwardRefExoticComponent<BarChartVProps & React$1.RefAttributes<HTMLDivElement>>;
771
1005
 
772
1006
  /**
773
- * The closed set of capabilities a callable may spend.
1007
+ * The capabilities Invana ships today — **suggestions, not a limit.**
1008
+ *
1009
+ * These are what {@link Bound} autocompletes to. They bind nothing: a product
1010
+ * that adds a `vector_write` bound as it grows passes `"vector_write"` and the
1011
+ * chip draws it. The catalogue groups by these and an envelope ceilings them,
1012
+ * but that is the *runtime's* vocabulary to police — a chip that refused to
1013
+ * render an unknown bound would make the design kit a release blocker for
1014
+ * every new capability.
1015
+ */
1016
+ type KnownBound = "none" | "network" | "graph_read" | "graph_write" | "schema_write" | "ingest" | "llm" | "plan_write" | "work_write";
1017
+ /**
1018
+ * What a callable may spend — any identifier at all.
774
1019
  *
775
- * Nine values, fixed. The catalogue is grouped by these and an envelope
776
- * ceilings them, so this is a vocabulary rather than a list that grows.
1020
+ * `(string & {})` keeps the known set autocompleting while accepting anything
1021
+ * else without a cast. See {@link KnownBound}.
777
1022
  */
778
- type Bound = "none" | "network" | "graph_read" | "graph_write" | "schema_write" | "ingest" | "llm" | "plan_write" | "work_write";
1023
+ type Bound = KnownBound | (string & {});
779
1024
  /**
780
- * One hue per bound, fixed — colour follows the bound, never its position in a
781
- * list. Five come from the status tokens because they already mean the right
782
- * thing; the other four take data-palette slots, which are chosen for being
783
- * distinguishable from each other rather than for meaning anything.
1025
+ * What each bound is painted with — **the kit ships no hues.**
1026
+ *
1027
+ * Which colour means `schema_write` is a product's decision. Four of the nine
1028
+ * were only ever data-palette slots picked for being distinguishable from one
1029
+ * another, which is exactly the kind of choice a component should not be
1030
+ * making on a consumer's behalf; and holding the map forced every consumer
1031
+ * onto a stylesheet that defines those slots, which is how `bg-data-*` came to
1032
+ * be dead in the precompiled `@invana/ui/styles.css` without anyone noticing.
1033
+ *
1034
+ * Values are class strings, so a surface spends whatever its own Tailwind
1035
+ * build has — a data-palette token, a status token, a brand colour. A bound
1036
+ * left out draws in the neutral.
784
1037
  */
785
- declare const SWATCH$1: Record<Bound, string>;
1038
+ type BoundPalette = Partial<Record<Bound, string>>;
786
1039
  interface BoundChipProps extends Omit<React$1.HTMLAttributes<HTMLSpanElement>, "children"> {
787
1040
  bound: Bound;
788
1041
  /**
@@ -790,6 +1043,19 @@ interface BoundChipProps extends Omit<React$1.HTMLAttributes<HTMLSpanElement>, "
790
1043
  * it. Use sparingly — see the note on colour below.
791
1044
  */
792
1045
  swatchOnly?: boolean;
1046
+ /** What to call it, when the identifier is not what this surface says. */
1047
+ label?: React$1.ReactNode;
1048
+ /**
1049
+ * This chip's swatch class, given directly — `bg-data-7`, `bg-violet-500`.
1050
+ * The shortest path when a call site draws one chip and knows its bound.
1051
+ * Wins over {@link BoundChipProps.palette}.
1052
+ */
1053
+ swatch?: string;
1054
+ /**
1055
+ * What the bounds are painted with, when a caller draws several and would
1056
+ * rather state the map once. Only this chip's own bound is read.
1057
+ */
1058
+ palette?: BoundPalette;
793
1059
  }
794
1060
  /**
795
1061
  * What a task is allowed to spend, as a swatch and a name.
@@ -841,30 +1107,87 @@ interface CannotAnswerCardProps extends React$1.HTMLAttributes<HTMLDivElement> {
841
1107
  declare const CannotAnswerCard: React$1.ForwardRefExoticComponent<CannotAnswerCardProps & React$1.RefAttributes<HTMLDivElement>>;
842
1108
 
843
1109
  /**
844
- * The five governed classes of participant, plus the spine.
1110
+ * The classes of participant Invana ships today — **suggestions, not a limit.**
845
1111
  *
846
- * Fixed — a Graph does not add a layer. `agent` is the **spine**: the runtime
847
- * itself, which does the participating rather than being a participant, and is
848
- * never governed. It is addressed and drawn like the rest so the ledger has one
849
- * shape.
1112
+ * These are what {@link Layer} autocompletes to. They bind nothing: a product
1113
+ * that grows a `vector_store` layer next week passes `"vector_store"` and every
1114
+ * component here draws it, because a component that had to be edited before a
1115
+ * developer could name a new layer is a component that owns the product's
1116
+ * vocabulary.
1117
+ *
1118
+ * `agent` is the **spine**: the runtime itself, which does the participating
1119
+ * rather than being a participant, and is never governed. Nothing in this file
1120
+ * knows that — a band says so with `spine`, see `LayerStrip`.
850
1121
  */
851
- type Layer = "graph_data" | "llm" | "third_party" | "cache" | "human" | "agent";
852
- /** What a reader calls the layer. The address segment is not the label. */
853
- declare const LABEL: Record<Layer, string>;
1122
+ type KnownLayer = "graph_data" | "llm" | "third_party" | "cache" | "human" | "agent";
854
1123
  /**
855
- * One hue per layer, fixed — colour follows the layer, never its position.
1124
+ * What a participant **is** — any identifier at all.
856
1125
  *
857
- * Four are the data-palette slots `BoundChip` left free, so the two can sit in
858
- * one row on A2 without sharing a hue between different vocabularies. Two are
859
- * deliberate:
1126
+ * `(string & {})` is what keeps both halves: the known set still autocompletes
1127
+ * and still documents itself, while an unknown string is accepted without a
1128
+ * cast. Widening this to plain `string` would silently drop the suggestions;
1129
+ * narrowing it back to the union would make the kit the gatekeeper of a
1130
+ * vocabulary it does not own.
1131
+ */
1132
+ type Layer = KnownLayer | (string & {});
1133
+ /**
1134
+ * What a reader calls the layer: the identifier with its underscores opened up.
860
1135
  *
861
- * - `llm` takes `data-7`, the slot `BoundChip` gives the `llm` **bound**. Same
862
- * concept, same hue; two hues for one idea is the confusion worth avoiding.
863
- * - `agent` is `muted-foreground`, because the spine is never governed and must
864
- * not read as a bound somebody could set. `BoundChip` spends the same token on
865
- * `none` for the same reason — *nothing to set here*.
1136
+ * Derived rather than looked up — a table would have to be edited for every
1137
+ * layer a product adds, and for all six Invana ships today the table said
1138
+ * exactly this anyway (`graph_data` → `graph data`). A layer that wants
1139
+ * something else passes `label`.
1140
+ */
1141
+ declare const layerLabel: (layer: Layer) => string;
1142
+ /**
1143
+ * How one layer is painted. **The kit ships no hues** — a consumer supplies
1144
+ * these, because which colour means `llm` is a product's decision and not a
1145
+ * component's.
1146
+ *
1147
+ * Both are class strings rather than colours, so a surface spends whatever
1148
+ * palette its own Tailwind build already has: `bg-data-7` from
1149
+ * `@invana/styling`, a brand token, a plain `bg-violet-500`. A component that
1150
+ * held the map would force every consumer onto the kit's palette *and* onto a
1151
+ * stylesheet that defines it — which is how `bg-data-*` came to be dead in the
1152
+ * precompiled `@invana/ui/styles.css` without anyone noticing.
1153
+ *
1154
+ * It is passed to the component that draws, as a prop, every time — never
1155
+ * installed once for a tree. A caller restating its palette at four call sites
1156
+ * is the honest cost: the alternative hides *which* colours a drawing is using
1157
+ * behind a provider somebody else mounted.
1158
+ *
1159
+ * - `swatch` is the **solid mark**: the dot beside a name, the rail down a bar.
1160
+ * - `tint` is the **wash**: a bar's ground and edge together. Keep it faint —
1161
+ * it sits *behind* text, so a hue dark enough to label in is a hue too dark
1162
+ * to wash with.
1163
+ * - `text` is the hue **as type**: a participant address written in its layer's
1164
+ * colour, so `model/Orders@v2` and the `graph data` dot above it are visibly
1165
+ * the same thing. This is the one that has to clear a contrast floor, which
1166
+ * is why it is yours to choose and separate from `swatch` — the token that
1167
+ * makes a legible 6px dot is often not the one that makes legible 13px mono.
866
1168
  */
867
- declare const SWATCH: Record<Layer, string>;
1169
+ interface LayerPaint {
1170
+ /** The solid mark — `bg-data-7`. */
1171
+ swatch?: string;
1172
+ /** The wash, ground and edge — `border-data-7/35 bg-data-7/10`. */
1173
+ tint?: string;
1174
+ /** The hue as type, for an address that should read as its layer — `text-data-7`. */
1175
+ text?: string;
1176
+ }
1177
+ /**
1178
+ * What each layer is painted with. Partial on purpose: a layer left out falls
1179
+ * back to the neutral, which is a legible answer rather than a blank one.
1180
+ */
1181
+ type LayerPalette = Partial<Record<Layer, LayerPaint>>;
1182
+ /**
1183
+ * One layer's paint, with the neutral filled in for anything unsaid — so a
1184
+ * caller never branches on `undefined` to draw a dot.
1185
+ *
1186
+ * There is no provider and no context. Colour arrives as the `palette` prop on
1187
+ * the component that draws, every time: a chip painted from somewhere up the
1188
+ * tree is a chip whose colour you cannot find by reading its call site.
1189
+ */
1190
+ declare const layerPaint: (palette: LayerPalette | undefined, layer: Layer) => Required<LayerPaint>;
868
1191
  interface LayerChipProps extends Omit<React$1.HTMLAttributes<HTMLSpanElement>, "children"> {
869
1192
  layer: Layer;
870
1193
  /**
@@ -873,12 +1196,25 @@ interface LayerChipProps extends Omit<React$1.HTMLAttributes<HTMLSpanElement>, "
873
1196
  * *nothing is configured* reads differently from *nothing matched*.
874
1197
  */
875
1198
  count?: number;
1199
+ /** What to call it, when {@link layerLabel} is not what this surface says. */
1200
+ label?: React$1.ReactNode;
876
1201
  /**
877
1202
  * The layer is closed, empty or out of view: the swatch drops to the muted
878
1203
  * token and the label goes with it. The chip stays legible — this is *not
879
1204
  * in play*, never *not there*.
880
1205
  */
881
1206
  dim?: boolean;
1207
+ /**
1208
+ * This chip's swatch class, given directly — `bg-data-7`, `bg-violet-500`.
1209
+ * The shortest path when a call site draws one chip and knows its layer.
1210
+ * Wins over {@link LayerChipProps.palette}.
1211
+ */
1212
+ swatch?: string;
1213
+ /**
1214
+ * What the layers are painted with, when a caller draws several and would
1215
+ * rather state the map once. Only this chip's own layer is read.
1216
+ */
1217
+ palette?: LayerPalette;
882
1218
  }
883
1219
  /**
884
1220
  * One class of participant, as a swatch and a name.
@@ -938,6 +1274,11 @@ interface LensRowProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, "chi
938
1274
  usage?: LensUsage;
939
1275
  selected?: boolean;
940
1276
  onSelect?: (name: string) => void;
1277
+ /**
1278
+ * What the layers of a `closes` narrowing are painted with. Omitted, those
1279
+ * chips draw in the neutral.
1280
+ */
1281
+ palette?: LayerPalette;
941
1282
  }
942
1283
  /**
943
1284
  * One world in the Worlds drawer: its name, what it narrows, and how used it is.
@@ -1488,7 +1829,12 @@ interface DiagnosisCardProps extends React$1.HTMLAttributes<HTMLDivElement> {
1488
1829
  */
1489
1830
  declare const DiagnosisCard: React$1.ForwardRefExoticComponent<DiagnosisCardProps & React$1.RefAttributes<HTMLDivElement>>;
1490
1831
 
1491
- type DiffOp = "add" | "remove" | "change";
1832
+ type KnownDiffOp = "add" | "remove" | "change";
1833
+ /**
1834
+ * The values the kit draws specially — **suggestions, not a limit.** Anything
1835
+ * else renders with the neutral token and its own name.
1836
+ */
1837
+ type DiffOp = KnownDiffOp | (string & {});
1492
1838
  interface DiffRowProps extends Omit<React$1.HTMLAttributes<HTMLLIElement>, "children"> {
1493
1839
  op?: DiffOp;
1494
1840
  /** What kind of thing changed — `node`, `edge`, `property`. */
@@ -1698,6 +2044,44 @@ declare class ErrorBoundary extends Component<{
1698
2044
  render(): string | number | bigint | boolean | Iterable<ReactNode> | Promise<string | number | bigint | boolean | React$1.ReactPortal | React$1.ReactElement<unknown, string | React$1.JSXElementConstructor<any>> | Iterable<ReactNode> | null | undefined> | React$1.JSX.Element | null | undefined;
1699
2045
  }
1700
2046
 
2047
+ interface ExchangeOption {
2048
+ label: React$1.ReactNode;
2049
+ /** The one that was taken. */
2050
+ chosen?: boolean;
2051
+ }
2052
+ interface ExchangeRecordProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, "children"> {
2053
+ /** Who asked — `the agent asks`. */
2054
+ asker?: React$1.ReactNode;
2055
+ question: React$1.ReactNode;
2056
+ /** Why it had to ask — `parse_intent found two readings and was told not to guess`. */
2057
+ why?: React$1.ReactNode;
2058
+ /** What it offered. Every option, with the taken one marked. */
2059
+ options?: ExchangeOption[];
2060
+ /** Who answered — `ravi answers`. */
2061
+ answerer?: React$1.ReactNode;
2062
+ answer?: React$1.ReactNode;
2063
+ /** What the answer cost and what happened next — `after 41.2s · the run resumed on round 2`. */
2064
+ answerNote?: React$1.ReactNode;
2065
+ }
2066
+ /**
2067
+ * A question a run asked a person, after it was answered.
2068
+ *
2069
+ * `ClarifyCard` is the **live** ask — it has controls, and the run is waiting on
2070
+ * them. This is the same exchange once it is a record: the question, every
2071
+ * option it offered with the one taken marked, who answered and how long the
2072
+ * run stood still. Nothing here is pickable, because the choice was made and a
2073
+ * trace is never rewritten.
2074
+ *
2075
+ * **The options that were not taken stay.** *It chose by promise date* is a
2076
+ * different fact from *it was offered two readings and chose by promise date* —
2077
+ * the second is the one that explains the round that follows.
2078
+ *
2079
+ * The rails mark the **act**, not the participant: asking is an interruption,
2080
+ * answering is what let the run continue. Which colour means `human` is a
2081
+ * palette decision and belongs to the layer components.
2082
+ */
2083
+ declare const ExchangeRecord: React$1.ForwardRefExoticComponent<ExchangeRecordProps & React$1.RefAttributes<HTMLDivElement>>;
2084
+
1701
2085
  interface EyebrowProps extends React$1.HTMLAttributes<HTMLDivElement> {
1702
2086
  /**
1703
2087
  * Right-aligned trailing text — a count, a position, a state. Kept separate
@@ -1721,7 +2105,7 @@ interface EyebrowProps extends React$1.HTMLAttributes<HTMLDivElement> {
1721
2105
  * a {@link SectionHeader}, so several can sit in one scrolling column and still
1722
2106
  * read as subordinate to the panel's own title.
1723
2107
  *
1724
- * Uppercase at `text-meta` with tracking, because at this size caps are what
2108
+ * Uppercase at `text-sm` with tracking, because at this size caps are what
1725
2109
  * separate a label from the sentence under it; lowercase at 11px reads as body
1726
2110
  * copy set small. That is also why it is a component rather than four utility
1727
2111
  * classes: the treatment was being retyped, and a label that drifts a weight or
@@ -1751,6 +2135,18 @@ interface FilterChipProps extends Omit<React$1.ButtonHTMLAttributes<HTMLButtonEl
1751
2135
  value?: React$1.ReactNode;
1752
2136
  /** Marks the chip as narrowing the list, so an active filter is visible while scrolling. */
1753
2137
  active?: boolean;
2138
+ /**
2139
+ * Clear this one filter, without opening its menu.
2140
+ *
2141
+ * Only for a chip that **is** set: an unset chip has nothing to clear, and an
2142
+ * × on it would offer to undo something nobody did. With it, the chip is a
2143
+ * pair of controls rather than one — the label opens the picker, the × drops
2144
+ * the value — so both are reachable by keyboard and the × carries its own
2145
+ * name.
2146
+ */
2147
+ onRemove?: () => void;
2148
+ /** What the × is called, for a screen reader. Defaults to `Clear <label>`. */
2149
+ removeLabel?: string;
1754
2150
  }
1755
2151
  /**
1756
2152
  * The row above a list that narrows it.
@@ -1822,6 +2218,36 @@ interface HeatStripProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, "c
1822
2218
  */
1823
2219
  declare const HeatStrip: React$1.ForwardRefExoticComponent<HeatStripProps & React$1.RefAttributes<HTMLDivElement>>;
1824
2220
 
2221
+ /**
2222
+ * The kinds of run Invana opens today — **suggestions, not a limit.**
2223
+ *
2224
+ * A product that grows a `simulate` kind passes `"simulate"` and the chip draws
2225
+ * it. The journal is one list with one filter over it ([SR7]), so the kind is a
2226
+ * *column value*, never a panel of its own — and a component that refused an
2227
+ * unknown value would make the kit a release blocker for every new one.
2228
+ */
2229
+ type KnownRunKind = "ask" | "import" | "bulk" | "stitch" | "enrich" | "schedule";
2230
+ /** What a run is, as an identifier — any string at all. See {@link KnownRunKind}. */
2231
+ type RunKind = KnownRunKind | (string & {});
2232
+ interface KindChipProps extends Omit<React$1.HTMLAttributes<HTMLSpanElement>, "children"> {
2233
+ kind: RunKind;
2234
+ /** Not in play — a kind the current filter excludes. */
2235
+ dim?: boolean;
2236
+ }
2237
+ /**
2238
+ * What kind of run this row is: `ask` · `import` · `bulk` · `stitch` · `enrich`.
2239
+ *
2240
+ * **Neutral on purpose.** A kind is not a status and not a layer: it says which
2241
+ * shape of work opened the run, and every kind is equally ordinary. Painting
2242
+ * them would put five more hues on a row that already carries a status dot and
2243
+ * a layer, and would invite a reader to think `import` is worse than `ask`.
2244
+ *
2245
+ * Mono, because the value is the engine's own (`kind in (import, bulk)` is a
2246
+ * filter a person types), and small, because it sits inside a row that is
2247
+ * already carrying an address and a summary.
2248
+ */
2249
+ declare const KindChip: React$1.ForwardRefExoticComponent<KindChipProps & React$1.RefAttributes<HTMLSpanElement>>;
2250
+
1825
2251
  interface LayerSectionProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, "children" | "title"> {
1826
2252
  layer: Layer;
1827
2253
  /**
@@ -1838,6 +2264,11 @@ interface LayerSectionProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>,
1838
2264
  children?: React$1.ReactNode;
1839
2265
  /** How many participants the layer holds, shown on the chip. */
1840
2266
  count?: number;
2267
+ /**
2268
+ * What the layer is painted with — only this band's own layer is read.
2269
+ * Omitted, the chip draws in the neutral.
2270
+ */
2271
+ palette?: LayerPalette;
1841
2272
  /** The layer is out of view for this lens: the whole band dims. */
1842
2273
  dim?: boolean;
1843
2274
  }
@@ -1863,72 +2294,311 @@ interface LayerSectionProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>,
1863
2294
  declare const LayerSection: React$1.ForwardRefExoticComponent<LayerSectionProps & React$1.RefAttributes<HTMLDivElement>>;
1864
2295
 
1865
2296
  /**
1866
- * What a run did at one participant, in one step.
2297
+ * What an item is doing where it sits — the two tenses in one vocabulary.
2298
+ *
2299
+ * `declared` is the plan tense: this is what the playbook **will** engage.
2300
+ * `out` · `in` · `refused` · `skipped` are the run tense: what it did engage,
2301
+ * what a bound stopped, and what it never reached for. Refused and skipped stay
2302
+ * two different facts, and both are drawn — a drawing that showed only what
2303
+ * happened would answer *what did this run do* and not *what was it stopped
2304
+ * from doing*, and the second is the question the strip exists for.
2305
+ */
2306
+ type KnownLayerItemState = "declared" | "out" | "in" | "refused" | "skipped";
2307
+ /**
2308
+ * What an item is doing — **suggestions, not a limit.** A run that grows a
2309
+ * `deferred` or a `retried` passes it and the bar draws: the neutral edge, and
2310
+ * the state's own name under the label. Only the states above carry special
2311
+ * drawing, because only they have a meaning defined here to draw.
2312
+ */
2313
+ type LayerItemState = KnownLayerItemState | (string & {});
2314
+ /** The run half of {@link LayerItemState}, as the ledger's `direction` column. */
2315
+ type TouchDirection = Exclude<KnownLayerItemState, "declared"> | (string & {});
2316
+ /**
2317
+ * One participant under a band — the row a task actually lands on.
1867
2318
  *
1868
- * `refused` and `skipped` are two different facts and both are drawn: refused
1869
- * means a bound stopped it, skipped means the plan never reached for it. A
1870
- * drawing that showed only what happened would answer *what did this run do*
1871
- * and not *what was it stopped from doing*, and the second is the question the
1872
- * strip exists for.
2319
+ * A band says *llm*; a part says **which** llm, or which role a caller may
2320
+ * re-cast: `role: decide`, `model/Orders@v2`, `third_party/app/email`. Reading
2321
+ * a plan is reading its parts, because that is the list a world is checked
2322
+ * against.
1873
2323
  */
1874
- type TouchDirection = "out" | "in" | "refused" | "skipped";
1875
- interface Band {
2324
+ interface LayerPart {
2325
+ id: string;
2326
+ /** The participant address, or the role — `model/Orders@v2`, `role: decide`. */
2327
+ label: string;
2328
+ /** What the caller still owes, or what the crossing is — `egress: the note`. */
2329
+ note?: string;
2330
+ }
2331
+ interface LayerBand {
1876
2332
  layer: Layer;
1877
- /** Overrides the layer's own name — `graph data · 4 models`. */
2333
+ /** Overrides the layer's own name. */
1878
2334
  label?: React$1.ReactNode;
2335
+ /** Right of the name — `declared · 1`, `nothing declared`, `2 roles`. */
2336
+ note?: string;
2337
+ /** The participants under it, each its own row. */
2338
+ parts?: LayerPart[];
2339
+ /**
2340
+ * This band is the **spine** — the runtime's own dispatches, which the other
2341
+ * bands are timed against and which is never governed. Its wire runs the
2342
+ * whole axis and it is never drawn as unspent.
2343
+ *
2344
+ * The band says so rather than the component recognising a layer by name:
2345
+ * `agent` is Invana's spine, but the layer vocabulary is a product's to grow
2346
+ * and a strip that hard-coded one of its values would be a strip that had to
2347
+ * be edited before anyone could rename it.
2348
+ */
2349
+ spine?: boolean;
1879
2350
  }
1880
- interface StepTouch {
2351
+ /**
2352
+ * One task, where it sits and how long it takes.
2353
+ *
2354
+ * `start` and `end` are in the axis's own unit — a step ordinal under `seq`, a
2355
+ * millisecond under `elapsed`. A task with no `end` is an instant and is drawn
2356
+ * at the minimum width.
2357
+ */
2358
+ interface LayerItem {
2359
+ id: string;
2360
+ /** The task. This is the only place a task name is written. */
2361
+ label: string;
1881
2362
  layer: Layer;
1882
- direction: TouchDirection;
1883
- /** The participant engaged, for the title and the drill-in. */
1884
- address?: string;
2363
+ /** The {@link LayerPart} it lands on. Omitted, it sits on the band itself. */
2364
+ part?: string;
2365
+ start: number;
2366
+ end?: number;
2367
+ state?: LayerItemState;
2368
+ /** Under the name — `decide`, `${supplier_id}`, `form: human`. */
2369
+ note?: string;
1885
2370
  /** The rule that refused it, when one did. */
1886
2371
  ruleMatched?: string;
2372
+ /** What this task usually takes — see {@link LayerForecast}. */
2373
+ forecast?: LayerForecast;
2374
+ }
2375
+ /**
2376
+ * What this task usually costs, drawn **on** the bar that says what it cost
2377
+ * this time.
2378
+ *
2379
+ * `p50` is a **duration in the axis's own unit**, not a position: the median is
2380
+ * a length of time a step takes, and placing it as an absolute moment would
2381
+ * make the same forecast wrong for every run that started the step a second
2382
+ * later. The strip turns it into a mark at `start + p50`, so the overrun is the
2383
+ * gap between the mark and the bar's end — visible, rather than two numbers a
2384
+ * reader has to subtract.
2385
+ *
2386
+ * Drawn for a task that came in **under** its median too. *Faster than usual*
2387
+ * is a finding, and a forecast that only ever showed overruns would be a
2388
+ * warning light rather than a comparison.
2389
+ */
2390
+ interface LayerForecast {
2391
+ /** The median, as a duration in the axis's unit. */
2392
+ p50: number;
2393
+ /** The gap in the caller's words — `+11%`, `−33%`, `inside p95`. */
2394
+ note?: React$1.ReactNode;
2395
+ }
2396
+ /** A bounded repetition over a stretch of the axis — `loop · max 3`. */
2397
+ interface LayerBracket {
2398
+ id: string;
2399
+ start: number;
2400
+ end: number;
2401
+ label: string;
1887
2402
  }
1888
- interface Step {
2403
+ /**
2404
+ * A **seam** — a moment on the axis where everything stops at once.
2405
+ *
2406
+ * A gate belongs to no band. It is not dispatched, it holds no slot and it has
2407
+ * no participant, so it cannot be a bar: it is a condition on the way into a
2408
+ * step, and it stops every layer together. That makes it a **position on the
2409
+ * axis**, drawn as a rule the bands are crossed by — which is also the only
2410
+ * drawing left once task names stop being the axis, because there are no
2411
+ * columns for it to sit between.
2412
+ *
2413
+ * **Which side of the line the label sits on is the price of saying no.**
2414
+ * `before` means nothing has been spent yet; `after` means the work up to here
2415
+ * is already paid for. A reader gets what declining costs from where the mark
2416
+ * sits, before reading a word of it.
2417
+ */
2418
+ interface LayerSeam {
1889
2419
  id: string;
1890
- /** What the step is — short, it heads a column. */
2420
+ /**
2421
+ * Where it sits, in the axis's own unit. **Omitted, it has no position** —
2422
+ * it can be raised at any dispatch, and it is drawn across the whole axis
2423
+ * rather than at a point. Placing such a gate on one moment would be a guess.
2424
+ */
2425
+ at?: number;
2426
+ /** What it is — `approval · before dispatch`, `verdict · after the pass`. */
1891
2427
  label: string;
1892
- /** The ledger's own `seq`, so the drawing and the stream agree. */
1893
- seq?: number;
1894
- touches: StepTouch[];
2428
+ /** Which side of the line the cost falls on. Defaults to `before`. */
2429
+ edge?: "before" | "after";
2430
+ /**
2431
+ * It is not on the plan: it resolves at dispatch, so the same plan is gated
2432
+ * for one caller and not another. Drawn dashed — *this may appear*.
2433
+ */
2434
+ conditional?: boolean;
2435
+ /**
2436
+ * **Nothing can forecast this one.** How long a person takes to say yes is
2437
+ * not in the record, so a gate marked this way is drawn dashed like a
2438
+ * conditional one and its note carries the actual instead of a comparison.
2439
+ *
2440
+ * It exists as its own flag rather than as a caller's choice of words because
2441
+ * *there is no estimate* and *the estimate was met* must not look alike on a
2442
+ * drawing whose whole subject is forecast against actual. Drawing a guess
2443
+ * here would be the one dishonest mark on the strip.
2444
+ */
2445
+ noEstimate?: boolean;
2446
+ /** Under the label — `nothing spent · finance-approvers · 4h`. */
2447
+ note?: string;
1895
2448
  }
2449
+ /** What the axis counts. */
2450
+ type LayerScale = "seq" | "elapsed";
1896
2451
  interface LayerStripProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, "children" | "onSelect"> {
1897
- bands: Band[];
1898
- steps: Step[];
1899
- onSelectStep?: (stepId: string) => void;
1900
- selectedStep?: string;
2452
+ bands: LayerBand[];
2453
+ items: LayerItem[];
2454
+ /**
2455
+ * `seq` is a plan's time — what happens before what, one unit per step.
2456
+ * `elapsed` is a run's, in milliseconds from the run opening.
2457
+ */
2458
+ scale?: LayerScale;
2459
+ /** The axis extent. Defaults to the items' own. */
2460
+ domain?: [number, number];
2461
+ /** Tick positions in axis units. Defaults to integers (`seq`) or five (`elapsed`). */
2462
+ ticks?: number[];
2463
+ formatTick?: (value: number) => string;
2464
+ brackets?: LayerBracket[];
2465
+ /**
2466
+ * The gates — the moments the whole drawing stops at. They get a row of their
2467
+ * own above the bands *and* a rule down the track, because a gate has to read
2468
+ * both as a thing with a name and as something every band is stopped by.
2469
+ */
2470
+ seams?: LayerSeam[];
2471
+ onSelectItem?: (itemId: string) => void;
2472
+ selectedItem?: string;
2473
+ /**
2474
+ * The bands whose participants are folded away, uncontrolled. Their tasks do
2475
+ * not disappear with them: they drop onto the band's own line, which is the
2476
+ * whole point of shutting one.
2477
+ */
2478
+ defaultCollapsed?: Layer[];
2479
+ /** The same, controlled. Pass it with `onCollapsedChange`. */
2480
+ collapsed?: Layer[];
2481
+ onCollapsedChange?: (layers: Layer[]) => void;
1901
2482
  /**
1902
- * Keep the band labels in place while the steps scroll. On by default: a run
1903
- * with forty steps scrolls, and a band you cannot name is a row of marks.
2483
+ * Offer the disclosures at all. Off, the bands render as given and a caller
2484
+ * that wants an overview passes the bands it wants shut in `collapsed`.
2485
+ */
2486
+ collapsible?: boolean;
2487
+ /**
2488
+ * A hover card on each task, saying what the bar cannot fit: the participant
2489
+ * it spends, when it runs and for how long, and the rule that refused it. On
2490
+ * by default; off falls back to the native `title`.
2491
+ */
2492
+ hoverDetail?: boolean;
2493
+ /** What that card says, when the default is not what this surface owes. */
2494
+ itemDetail?: (item: LayerItem) => React$1.ReactNode;
2495
+ /**
2496
+ * Keep the band labels in place while time scrolls. On by default: a run with
2497
+ * forty steps scrolls, and a band you cannot name is a row of marks.
1904
2498
  */
1905
2499
  frozenLabels?: boolean;
2500
+ /**
2501
+ * The label column, in `rem`. The default fits a layer name at the root size
2502
+ * beside its note — `human` and `3 rounds · 6m 01s` on one line.
2503
+ */
2504
+ labelWidth?: number;
2505
+ /** The narrowest the track is drawn before it scrolls, in `rem`. */
2506
+ minTrackWidth?: number;
2507
+ /**
2508
+ * The narrowest one tick may be squeezed to, in `rem`. Past that the strip
2509
+ * scrolls rather than shrinking: a bar too narrow to carry its task's name
2510
+ * has stopped being a drawing of that task.
2511
+ */
2512
+ minSlotWidth?: number;
2513
+ /**
2514
+ * What the layers are painted with. The same map reaches the band chips and
2515
+ * the bars, so a strip never disagrees with its own labels; a layer left out
2516
+ * draws in the neutral.
2517
+ */
2518
+ palette?: LayerPalette;
1906
2519
  }
1907
- declare const MARK_LABEL: Record<TouchDirection, string>;
2520
+ /** An unknown state is still a state: it says its own name. */
2521
+ declare const stateLabel: (state: LayerItemState) => string;
1908
2522
  /**
1909
- * A run as six bands and one column per step — what it engaged, in `seq` order.
1910
- *
1911
- * Layers are the bands and steps are the columns, so a reader answers *what did
1912
- * this run touch, and when* by scanning across one band, and *what did this
1913
- * step do* by scanning down one column. The two questions the run dashboard is
1914
- * asked, in one drawing.
2523
+ * A plan or a run as layer bands over a time axis — a gantt, not a matrix.
2524
+ *
2525
+ * **Time is the x axis, in whichever tense the drawing is in.** A plan's time
2526
+ * is its order (`seq` — what happens before what); a run's is the wall clock
2527
+ * (`elapsed`). Task names are not an axis: a task is a bar, written once where
2528
+ * it sits, so a reader answers *what does this engage, and for how long* by
2529
+ * scanning across, and *what spends this participant* by scanning down.
2530
+ *
2531
+ * **A band opens into its participants.** `llm` is a band; `role: decide` and
2532
+ * `role: extract` are the rows under it, and the task sits on the row it
2533
+ * actually spends. The band alone cannot say which model a step will reach, and
2534
+ * that is the list a world is checked against.
2535
+ *
2536
+ * **A band folds its participants away without losing its tasks.** Shut, the
2537
+ * rows go and every task the layer spends drops onto the band's own line —
2538
+ * which is the overview: six lines, every task placed in time, *what was this
2539
+ * layer busy with* answered without reading twelve rows. Open, the same tasks
2540
+ * sit on the participant that spends them. `collapse all` in the header does it
2541
+ * to every band that has participants to fold, and nothing is hidden either
2542
+ * way: folding moves a task up a row, it never drops it.
2543
+ *
2544
+ * **A bar says what it is; hovering it says what it cannot fit.** The card
2545
+ * carries the participant the row truncates or folding took away, when the task
2546
+ * runs and for how long, and the rule that refused it — so a bar can stay a bar
2547
+ * rather than growing a second line for every fact somebody might want.
1915
2548
  *
1916
2549
  * **Refusals are struck in place, not removed.** A refused engagement keeps its
1917
- * cell and takes a struck mark, because the empty cell it would otherwise leave
1918
- * is indistinguishable from a step that never reached for that layer. *The
1919
- * bound bit here* is the most important thing the drawing can say, and removing
1920
- * the mark is the one edit that makes it unsayable.
1921
- *
1922
- * **The spine band is always drawn**, even when a lens governs nothing in it:
1923
- * the runtime's own dispatches are what the other bands are timed against.
1924
- *
1925
- * DOM over a fixed grid, not canvas: it binds to no canvas store, it lives in
2550
+ * bar and takes a struck label, because the gap it would otherwise leave is
2551
+ * indistinguishable from a stretch of time that never reached for that layer.
2552
+ *
2553
+ * **A row nothing spent is drawn muted, never dropped.** A band no task
2554
+ * touched takes the muted ground **across its whole width** — label column and
2555
+ * track together — and so does a participant row under an open band:
2556
+ * `role: extract` declared and never reached reads as *this run did not get
2557
+ * that far*, not as an ordinary empty row. A dropped row would say nothing at
2558
+ * all, and *this plan never reaches for a cache* is a finding.
2559
+ *
2560
+ * The ground is the carrier, not the type colour. A row is unspent because it
2561
+ * is *empty*, and an empty row has no text to mute past its own name — greying
2562
+ * the chip while the row keeps the card ground says *this label is quiet* when
2563
+ * the fact is *nothing spends this layer*.
2564
+ *
2565
+ * **A bar wears its layer, and its state is the edge.** The hue tints the bar's
2566
+ * ground and border and runs down its rail; dashed says the task never ran, and
2567
+ * the destructive token says a rule refused it — the one fact that outranks
2568
+ * whose bar it is. The label itself stays on a text token: the data palette is
2569
+ * a surface palette here, which keeps `cache` as legible as `human`.
2570
+ *
2571
+ * **Refused is not unspent.** A row whose only task was refused keeps its full
2572
+ * weight: being stopped from reaching a participant and never reaching for one
2573
+ * are the two facts this drawing exists to separate.
2574
+ *
2575
+ * **A gate is a seam, not a row.** Nothing is dispatched at a gate, so it has
2576
+ * no participant and cannot be a bar; it stops every band at once, so it is a
2577
+ * position on the axis and the bands are crossed by it. Which side of the line
2578
+ * its label hangs on is what saying no costs — `before` and nothing is spent,
2579
+ * `after` and the pass is already paid for. A gate that can be raised at any
2580
+ * dispatch has no position and draws across the whole axis instead.
2581
+ *
2582
+ * **The spine band is always drawn**, with its wire running the whole axis: the
2583
+ * runtime's own dispatches are what the other bands are timed against, and it
2584
+ * is never governed. A band declares itself the spine with `spine` — the strip
2585
+ * recognises no layer by name. A spine that has dispatched nothing recedes like
2586
+ * any other empty row: the wire still says *this is the clock*, and the muted
2587
+ * ground says *it has not run yet*, which are two different facts.
2588
+ *
2589
+ * DOM over a fixed track, not canvas: it binds to no canvas store, it lives in
1926
2590
  * `mainSection` where no canvas exists, and frozen row labels plus text
1927
2591
  * selection are free here and expensive there.
1928
2592
  */
1929
2593
  declare const LayerStrip: React$1.ForwardRefExoticComponent<LayerStripProps & React$1.RefAttributes<HTMLDivElement>>;
1930
2594
 
1931
- type LegendSwatchKind = "dot" | "line" | "dashed" | "arrow" | "ring";
2595
+ type LegendSwatchKind = "dot" | "line" | "dashed" | "arrow" | "ring"
2596
+ /** The rail down a row — how a trace says which layer a step spent. */
2597
+ | "stripe"
2598
+ /** A box around what it holds — a bounded repetition, drawn by containment. */
2599
+ | "bracket"
2600
+ /** A line the drawing is crossed by, with the mark that names it — a gate. */
2601
+ | "rule";
1932
2602
  interface LegendItemProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, "color"> {
1933
2603
  /**
1934
2604
  * What the mark looks like on the canvas. A legend that draws a dot for
@@ -1994,6 +2664,34 @@ interface LensChipProps extends Omit<React$1.HTMLAttributes<HTMLSpanElement>, "c
1994
2664
  */
1995
2665
  declare const LensChip: React$1.ForwardRefExoticComponent<LensChipProps & React$1.RefAttributes<HTMLSpanElement>>;
1996
2666
 
2667
+ /** What the mark means, as a tone. The same seven `StatusDot` uses, less the dot. */
2668
+ type MarkTone = "muted" | "info" | "success" | "warning" | "destructive";
2669
+ interface MarkChipProps extends React$1.HTMLAttributes<HTMLSpanElement> {
2670
+ tone?: MarkTone;
2671
+ /** `↺ 2 of 3`, `⏸ 1 of 3`, `live`, `↳ delegates`. */
2672
+ children?: React$1.ReactNode;
2673
+ }
2674
+ /**
2675
+ * What happened to this row that its own columns cannot say.
2676
+ *
2677
+ * A run's trace row already carries a name, a description, a layer, a role and
2678
+ * a duration. What it does *not* carry is the exception: this step took two
2679
+ * attempts, this one is painting right now, this one asked a person, this one
2680
+ * delegated a run of its own. Those are marks — they appear on a handful of
2681
+ * rows and they are the rows a reader is looking for.
2682
+ *
2683
+ * **Outlined, never filled.** A filled chip competes with the row's own name at
2684
+ * the same size; an outline reads as an annotation on the name, which is what it
2685
+ * is. Mono, because most marks are counts against a bound (`2 of 3`) and the
2686
+ * bound is the engine's number.
2687
+ *
2688
+ * Distinct from `BoundChip`, and the distinction is the point: a bound is what a
2689
+ * callable **may** spend, declared before anything ran. A mark is what a run
2690
+ * **did** — it exists only in the record, and it is usually the reason a reader
2691
+ * opened the trace at all.
2692
+ */
2693
+ declare const MarkChip: React$1.ForwardRefExoticComponent<MarkChipProps & React$1.RefAttributes<HTMLSpanElement>>;
2694
+
1997
2695
  interface MatchCandidate {
1998
2696
  address: string;
1999
2697
  matched: boolean;
@@ -2055,7 +2753,12 @@ declare const MenuItem: React$1.FC<MenuItemProps>;
2055
2753
  * Omit it for an ordinary measurement. A grid where every tile is coloured
2056
2754
  * carries no signal, and a number that is merely large is not a warning.
2057
2755
  */
2058
- type MetricTone = "running" | "success" | "warning" | "error" | "info";
2756
+ type KnownMetricTone = "running" | "success" | "warning" | "error" | "info";
2757
+ /**
2758
+ * The values the kit draws specially — **suggestions, not a limit.** Anything
2759
+ * else renders with the neutral token and its own name.
2760
+ */
2761
+ type MetricTone = KnownMetricTone | (string & {});
2059
2762
  interface MetricTileProps extends React$1.HTMLAttributes<HTMLDivElement> {
2060
2763
  /** What is being measured — `accepted`, `served (plan.verified)`, `hit rate`. */
2061
2764
  label: React$1.ReactNode;
@@ -2724,6 +3427,52 @@ interface PanelStackProps {
2724
3427
  */
2725
3428
  declare function PanelStack({ sections, stackRef, onCollapsedChange, headerHeight, withHandle, className, headerClassName, bodyClassName, }: PanelStackProps): React$1.JSX.Element;
2726
3429
 
3430
+ /**
3431
+ * What a run did with a participant it was allowed — **suggestions, not a
3432
+ * limit.** A product with a seventh verdict passes it and the row draws it in
3433
+ * the neutral.
3434
+ */
3435
+ type KnownParticipantVerdict = "touched" | "never touched" | "refused" | "miss" | "denied";
3436
+ type ParticipantVerdict = KnownParticipantVerdict | (string & {});
3437
+ interface ParticipantRowProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, "children"> {
3438
+ /** The participant, as the world addresses it — `model/Routes@v4`. */
3439
+ address: string;
3440
+ verdict: ParticipantVerdict;
3441
+ /** What happened — `1,284 rows · step 7`, `allowed, and nothing asked for it`. */
3442
+ note?: React$1.ReactNode;
3443
+ /**
3444
+ * The tone the verdict is read in. Defaults: `touched` succeeds, `refused`
3445
+ * and `denied` are destructive, everything else is muted — *allowed and never
3446
+ * reached for* is not a failure, it is an invitation to narrow.
3447
+ */
3448
+ tone?: "success" | "muted" | "warning" | "destructive";
3449
+ /**
3450
+ * How the **address** is drawn. Derived from the verdict — `refused` strikes
3451
+ * it in place, `never touched` mutes it — and overridable for a vocabulary
3452
+ * the kit has not seen.
3453
+ *
3454
+ * Striking is `AddressChip`'s job and not this row's: the address is struck
3455
+ * everywhere a refusal is shown, and two components deciding that
3456
+ * independently is how one surface comes to strike and another to hide.
3457
+ */
3458
+ addressTone?: AddressTone;
3459
+ }
3460
+ /**
3461
+ * One participant a run could have spent, and what it actually did with it.
3462
+ *
3463
+ * The Lens reading of a run is a list of these under their layers: every
3464
+ * address the world allowed, each marked `touched` · `never touched` ·
3465
+ * `refused`. **Nothing is filtered out**, because the list is not an inventory
3466
+ * of what ran — it is the gap between *declared* and *did*, and each kind of
3467
+ * gap names a different act. Three allowed and never touched is an invitation
3468
+ * to narrow the world; a refusal is an invitation to widen it, or to accept
3469
+ * that the graph cannot answer inside it.
3470
+ *
3471
+ * It is not `RuleRow`: a rule is a sentence about what *may* happen, written
3472
+ * before anything ran. This is a fact about one execution.
3473
+ */
3474
+ declare const ParticipantRow: React$1.ForwardRefExoticComponent<ParticipantRowProps & React$1.RefAttributes<HTMLDivElement>>;
3475
+
2727
3476
  interface PropertyListProps extends React$1.HTMLAttributes<HTMLDListElement> {
2728
3477
  /**
2729
3478
  * Width of the label column. One value for the whole list, so every value
@@ -2866,6 +3615,32 @@ interface RecordHeaderProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>,
2866
3615
  */
2867
3616
  declare const RecordHeader: React$1.ForwardRefExoticComponent<RecordHeaderProps & React$1.RefAttributes<HTMLDivElement>>;
2868
3617
 
3618
+ interface RecordPagerProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, "children"> {
3619
+ /** Where the reader is — `step 7 of 9`. */
3620
+ position?: React$1.ReactNode;
3621
+ onPrevious?: () => void;
3622
+ onNext?: () => void;
3623
+ /** What the two controls are called. The defaults name the *record*, not the direction. */
3624
+ previousLabel?: string;
3625
+ nextLabel?: string;
3626
+ }
3627
+ /**
3628
+ * The record before this one, and the one after.
3629
+ *
3630
+ * A step opened from a run's trace is one of nine, and the reader almost always
3631
+ * wants the next one — so walking the run costs two keystrokes rather than a
3632
+ * return to the list and a second drill-in.
3633
+ *
3634
+ * **Both controls carry a name.** An icon-only button with no accessible name
3635
+ * is a control a screen reader announces as "button", which is the one thing a
3636
+ * pager must not be; `previousLabel` and `nextLabel` name the record, so it
3637
+ * reads *previous step* rather than *left*.
3638
+ *
3639
+ * At either end the control is **disabled, not hidden**: a pager that loses a
3640
+ * button at the edges moves the other one under the reader's cursor.
3641
+ */
3642
+ declare const RecordPager: React$1.ForwardRefExoticComponent<RecordPagerProps & React$1.RefAttributes<HTMLDivElement>>;
3643
+
2869
3644
  interface RepairNoteProps extends React$1.HTMLAttributes<HTMLDivElement> {
2870
3645
  /** What was wrong — `unknown property Theme.velocity5d`. */
2871
3646
  from: React$1.ReactNode;
@@ -3091,6 +3866,93 @@ interface RuleRowProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, "chi
3091
3866
  */
3092
3867
  declare const RuleRow: React$1.ForwardRefExoticComponent<RuleRowProps & React$1.RefAttributes<HTMLDivElement>>;
3093
3868
 
3869
+ /**
3870
+ * How a run or a step ended, as the engine writes it — **suggestions, not a
3871
+ * limit.** An unknown status still renders: it says its own name, in the
3872
+ * neutral.
3873
+ */
3874
+ type KnownRunStatus = "queued" | "running" | "succeeded" | "failed" | "cancelled" | "cannot_answer" | "awaiting_approval" | "skipped" | "held" | "purged";
3875
+ type RunStatus = KnownRunStatus | (string & {});
3876
+ /**
3877
+ * Which tone each status is read in.
3878
+ *
3879
+ * The kit owns this map where it does **not** own a layer's or a bound's
3880
+ * colour, and the difference is real: a layer is a product's vocabulary, while
3881
+ * *finished · finished but look at it · failed · not started* is the same small
3882
+ * set of states every surface in the system already draws with `StatusDot`. Two
3883
+ * maps for one idea is how a journal row and its own pagehead come to disagree.
3884
+ *
3885
+ * **`succeeded` and `cannot_answer` are deliberately different tones.** The
3886
+ * machinery succeeded; the reading is that the graph cannot answer inside this
3887
+ * world. A run that says both in one green word would be hiding the only fact
3888
+ * the reader needs ([SR53]).
3889
+ */
3890
+ declare const TONE: Record<string, StatusDotProps["tone"]>;
3891
+ interface RunStatusTextProps extends Omit<React$1.HTMLAttributes<HTMLSpanElement>, "children"> {
3892
+ status: RunStatus;
3893
+ /** Overrides the tone {@link RunStatus} resolves to. */
3894
+ tone?: StatusDotProps["tone"];
3895
+ /** Draw the dot before the word. Off in a table cell, on in a row. */
3896
+ dot?: boolean;
3897
+ /** What to call it, when the engine's own word is not what this surface says. */
3898
+ label?: React$1.ReactNode;
3899
+ }
3900
+ /**
3901
+ * A run's outcome, in its tone and in the engine's own word.
3902
+ *
3903
+ * `succeeded` · `running` · `cannot_answer` · `awaiting_approval` — written as
3904
+ * the record writes them, underscores and all, because these are the values a
3905
+ * reader filters on and quotes into a support thread. Prettifying them here
3906
+ * would mean the word on screen is not the word in the API.
3907
+ *
3908
+ * The word is always present, so colour is never the only carrier of the state.
3909
+ */
3910
+ declare const RunStatusText: React$1.ForwardRefExoticComponent<RunStatusTextProps & React$1.RefAttributes<HTMLSpanElement>>;
3911
+
3912
+ interface RunRowProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, "title" | "onSelect"> {
3913
+ status: RunStatus;
3914
+ /** Overrides the tone the status resolves to. */
3915
+ tone?: StatusDotProps["tone"];
3916
+ kind?: RunKind;
3917
+ /**
3918
+ * The run's address — the last eight characters of its uuid, mono.
3919
+ *
3920
+ * **First on the row, before anything measured.** A row a reader cannot
3921
+ * quote into a log line, a support thread or `GET …/runs/{id}` has made them
3922
+ * drill in to find out what they are looking at.
3923
+ */
3924
+ address?: React$1.ReactNode;
3925
+ /** What it was about — the question asked, the dataset loaded, the stitch run. */
3926
+ title: React$1.ReactNode;
3927
+ /** Under it — `2m 51s · 21.4k · 9/9 · 4 mins ago`. */
3928
+ meta?: React$1.ReactNode;
3929
+ /** Hard right — a badge, a count, an outcome. */
3930
+ aside?: React$1.ReactNode;
3931
+ /** A child run sits under the step that spawned it, indented — never a sibling. */
3932
+ depth?: number;
3933
+ selected?: boolean;
3934
+ onSelect?: () => void;
3935
+ }
3936
+ /**
3937
+ * One run in the journal.
3938
+ *
3939
+ * Every execution in a Graph is one of these — a question answered, a dataset
3940
+ * loaded, a stitch committed, an enrichment gated on a person — because they
3941
+ * are one record walked by one interpreter. **There is no row type per kind**
3942
+ * and no panel per kind: the kind is a chip and a filter value, which is what
3943
+ * keeps one journal from becoming four lists that drift apart.
3944
+ *
3945
+ * The order on the row is addressed, then described, then measured: the id, the
3946
+ * kind, what it was about, and the numbers underneath. A reader scanning for
3947
+ * *the run I was just looking at* finds it by id; a reader scanning for *what
3948
+ * has this system been doing* reads the line under it.
3949
+ *
3950
+ * With `onSelect` the whole row is one button, so the accessible name is the
3951
+ * whole row — the id, the kind and the summary in one string, which is exactly
3952
+ * what a reader driving this from the keyboard needs to hear.
3953
+ */
3954
+ declare const RunRow: React$1.ForwardRefExoticComponent<RunRowProps & React$1.RefAttributes<HTMLDivElement>>;
3955
+
3094
3956
  /**
3095
3957
  * `sm` (26px) is the application field — a search box docked in a panel header,
3096
3958
  * beside a 30px tab strip. `default` (40px) stays the page size.
@@ -3421,6 +4283,10 @@ interface TaskNodeProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, "ch
3421
4283
  taskKey: React$1.ReactNode;
3422
4284
  /** What it may spend. */
3423
4285
  bound: Bound;
4286
+ /** The bound's swatch class, given directly — `bg-data-7`. */
4287
+ boundSwatch?: string;
4288
+ /** The bounds' palette, when a caller would rather state the map once. */
4289
+ boundPalette?: BoundPalette;
3424
4290
  /**
3425
4291
  * How it went, when this node is painting a **run**. Omit when the node is
3426
4292
  * painting a plan or a draft, which have no status of their own.
@@ -3434,6 +4300,15 @@ interface TaskNodeProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, "ch
3434
4300
  * (`p50 3.4s · 14/14`). One rendering, three readings.
3435
4301
  */
3436
4302
  meta?: React$1.ReactNode;
4303
+ /**
4304
+ * The drawing is a **record**, not a draft: a picked node gets the ring and
4305
+ * **no handles**.
4306
+ *
4307
+ * Handles are an offer to move something. A run paints status onto the plan
4308
+ * it ran and nothing on it is editable, so a handle there is a control that
4309
+ * does nothing — the one thing worse on a trace than a missing affordance.
4310
+ */
4311
+ readOnly?: boolean;
3437
4312
  /** Picked — draws the ring and four corner handles. */
3438
4313
  selected?: boolean;
3439
4314
  /** Needs an approval before it writes. Rings it in `warning`. */
@@ -3503,7 +4378,12 @@ type TerminalLineKind = "prompt" | "output" | "comment";
3503
4378
  * command you typed, what it printed, a comment. A run's log has no prompts and
3504
4379
  * no comments; every line is output, and what varies is how loud it is.
3505
4380
  */
3506
- type TerminalLevel = "info" | "warn" | "error" | "debug";
4381
+ type KnownTerminalLevel = "info" | "warn" | "error" | "debug";
4382
+ /**
4383
+ * The values the kit draws specially — **suggestions, not a limit.** Anything
4384
+ * else renders with the neutral token and its own name.
4385
+ */
4386
+ type TerminalLevel = KnownTerminalLevel | (string & {});
3507
4387
  interface TerminalLineProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, "children"> {
3508
4388
  kind?: TerminalLineKind;
3509
4389
  /**
@@ -3611,6 +4491,37 @@ declare const TimelineFooter: React$1.ForwardRefExoticComponent<TimelineFooterPr
3611
4491
 
3612
4492
  declare const Toolbar: React__default.FC;
3613
4493
 
4494
+ interface TouchItem {
4495
+ layer: Layer;
4496
+ /** What it amounts to — `3 calls`, `1,284 rows`, `miss`, `asked + approved`. */
4497
+ note?: React$1.ReactNode;
4498
+ /** What to call it, when {@link layerLabel} is not what this surface says. */
4499
+ label?: React$1.ReactNode;
4500
+ /** A guardrail said no. Struck in place, never dropped. */
4501
+ refused?: boolean;
4502
+ /** Allowed, and nothing reached for it. Present, and visibly not in play. */
4503
+ dim?: boolean;
4504
+ }
4505
+ interface TouchStripProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, "children"> {
4506
+ items: TouchItem[];
4507
+ palette?: LayerPalette;
4508
+ }
4509
+ /**
4510
+ * What a run touched at all — one cell per layer, on one line.
4511
+ *
4512
+ * This is a **summary**, and the whole reason it is a strip and not an axis.
4513
+ * *What did this touch* is answered once for the whole run, so it costs one
4514
+ * line above the list; drawn as a band per layer down a trace it would be a
4515
+ * matrix one sixth full, because a step spends exactly one layer.
4516
+ *
4517
+ * **Refused is struck in place and never touched is dimmed, and neither is
4518
+ * hidden.** The gap between what a world allowed and what the run reached for
4519
+ * is the finding: three layers allowed and never touched is an invitation to
4520
+ * narrow, and a refusal is an invitation to widen or to accept that the graph
4521
+ * cannot answer. A strip that showed only what was spent could say neither.
4522
+ */
4523
+ declare const TouchStrip: React$1.ForwardRefExoticComponent<TouchStripProps & React$1.RefAttributes<HTMLDivElement>>;
4524
+
3614
4525
  /**
3615
4526
  * A single clickable/displayed reference shown in a step's
3616
4527
  * "REFERENCED COMPONENTS" row.
@@ -3714,6 +4625,106 @@ interface TourProps {
3714
4625
  */
3715
4626
  declare function Tour({ controller, steps, onExit, onComplete, badgeLabel, prevLabel, nextLabel, finishLabel, exitLabel, showExit, showCounter, showProgressBar, position, className, }: TourProps): React$1.JSX.Element | null;
3716
4627
 
4628
+ interface TraceListProps extends React$1.HTMLAttributes<HTMLDivElement> {
4629
+ children?: React$1.ReactNode;
4630
+ }
4631
+ /**
4632
+ * A run, in the order it happened.
4633
+ *
4634
+ * The default reading of a trace, because *what happened, and then what* is the
4635
+ * cheapest honest answer to a reader opening a run. Its rows are
4636
+ * {@link TraceStep}s; a bounded repetition **contains** its rounds
4637
+ * ({@link TraceLoop}) and a gate lies **between** rows ({@link TraceGate}).
4638
+ *
4639
+ * Nothing here is an axis. The layer a step spent is a column on its row, so a
4640
+ * list nests for free and a second round is simply another row inside the box
4641
+ * that holds it. The clock reading of the same trace is `LayerStrip`.
4642
+ */
4643
+ declare const TraceList: React$1.ForwardRefExoticComponent<TraceListProps & React$1.RefAttributes<HTMLDivElement>>;
4644
+ interface TraceStepProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, "onSelect" | "role"> {
4645
+ /** Where it sits in the run — the sequence number. */
4646
+ seq?: React$1.ReactNode;
4647
+ /** The step's key — `execute_query`. Mono, because it is the plan's own word. */
4648
+ name: React$1.ReactNode;
4649
+ /** One line: what it did, in the graph's terms. */
4650
+ description?: React$1.ReactNode;
4651
+ /** The participant class it spent. A step spends exactly one. */
4652
+ layer?: Layer;
4653
+ /** What it spent it on — `extract`, `decide`, `read_only`, `schema`. */
4654
+ role?: React$1.ReactNode;
4655
+ /** How long it took, or `—` when it never ran. */
4656
+ duration?: React$1.ReactNode;
4657
+ /** Under the duration — `ok`, `round 2`, `1,284 rows`, `skipped`. */
4658
+ note?: React$1.ReactNode;
4659
+ /** The exception this row carries — a `MarkChip`. */
4660
+ mark?: React$1.ReactNode;
4661
+ palette?: LayerPalette;
4662
+ /** A delegated run's steps sit under the step that spawned them. */
4663
+ depth?: number;
4664
+ /** Dispatched to nobody: queued, held, or never reached. Present, not in play. */
4665
+ dim?: boolean;
4666
+ /** It ran and it failed, or it was refused. The name is struck, in the destructive tone. */
4667
+ struck?: boolean;
4668
+ selected?: boolean;
4669
+ onSelect?: () => void;
4670
+ }
4671
+ /**
4672
+ * One event of a run: a step, and everything that is true of it.
4673
+ *
4674
+ * **The stripe is the layer.** A step touches exactly one participant class, so
4675
+ * the layer is a 3px rail down the row rather than a column of its own — which
4676
+ * leaves the row's width for the two things a reader is actually scanning, the
4677
+ * step's key and what it did.
4678
+ *
4679
+ * A row keeps its place in every state. A step that is painting right now, one
4680
+ * that was skipped because the step above it failed, one that was refused: all
4681
+ * three stay where they sit in the order, dimmed or struck. A list that dropped
4682
+ * them would be a list that cannot say *nothing below the failure was
4683
+ * dispatched*.
4684
+ */
4685
+ declare const TraceStep: React$1.ForwardRefExoticComponent<TraceStepProps & React$1.RefAttributes<HTMLDivElement>>;
4686
+ interface TraceLoopProps extends React$1.HTMLAttributes<HTMLDivElement> {
4687
+ /** What bounded it — `↻ 2 of 3 rounds — understood on round 2`. */
4688
+ label: React$1.ReactNode;
4689
+ /** Hard right — `3 events · 42.8s`. */
4690
+ summary?: React$1.ReactNode;
4691
+ /** The rail and wash it is drawn in. Defaults to the warning token. */
4692
+ tone?: "warning" | "info" | "muted";
4693
+ children?: React$1.ReactNode;
4694
+ }
4695
+ /**
4696
+ * A bounded repetition, drawn by containment.
4697
+ *
4698
+ * The rounds are **inside** it, so a second round is one more row in the box
4699
+ * and a list nests for free. Drawing a loop as a marker beside its rows would
4700
+ * make a reader reconstruct which rows it held; drawing it as a bracket down the
4701
+ * side is the clock reading's job, where the axis is time and rows are bands.
4702
+ */
4703
+ declare const TraceLoop: React$1.ForwardRefExoticComponent<TraceLoopProps & React$1.RefAttributes<HTMLDivElement>>;
4704
+ interface TraceGateProps extends React$1.HTMLAttributes<HTMLDivElement> {
4705
+ /** What it is — `approval — approved by ravi`. */
4706
+ label: React$1.ReactNode;
4707
+ /** What it cost — `waited 2m 04s · nothing was spent while it waited`. */
4708
+ note?: React$1.ReactNode;
4709
+ /** Defaults to the destructive token, which is what a stop is drawn in. */
4710
+ tone?: "destructive" | "warning" | "muted";
4711
+ /**
4712
+ * Which side of the line the cost falls on. `before` — nothing has been spent
4713
+ * yet; `after` — the work up to here is already paid for.
4714
+ */
4715
+ edge?: "before" | "after";
4716
+ }
4717
+ /**
4718
+ * A gate — a rule across the list, never a row in it.
4719
+ *
4720
+ * It is dispatched by nobody, holds no slot and spends no participant, so it is
4721
+ * not a step: it is a **condition on the way into one**. Drawn as a full-width
4722
+ * rule with its chip hung off the side the cost falls on, *above this, nothing
4723
+ * has been spent* becomes something the drawing says rather than something a
4724
+ * legend has to claim.
4725
+ */
4726
+ declare const TraceGate: React$1.ForwardRefExoticComponent<TraceGateProps & React$1.RefAttributes<HTMLDivElement>>;
4727
+
3717
4728
  interface TreeViewProps {
3718
4729
  style?: React$1.CSSProperties;
3719
4730
  className?: string;
@@ -3895,4 +4906,4 @@ interface UseOverflowItemsResult {
3895
4906
  */
3896
4907
  declare function useOverflowItems({ count, enabled, pinnedIndex, reserve, }: UseOverflowItemsOptions): UseOverflowItemsResult;
3897
4908
 
3898
- export { Accordion, AccordionContent, AccordionItem, AccordionTrigger, AddressChip, type AddressChipProps, type AddressTone, AgentChip, type AgentChipProps, Alert, AlertDescription, AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, AlertTitle, AppStatusBar, type AppStatusBarProps, Avatar, AvatarFallback, AvatarImage, Badge, type BadgeProps, type Band, BarChartH, type BarChartHProps, BarChartV, type BarChartVProps, type BarDatum, type BaseNavProps, type Bound, BoundChip, type BoundChipProps, Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, Button, ButtonGroup, ButtonGroupSeparator, ButtonGroupText, type ButtonProps, ButtonWithTooltip, type ButtonWithTooltipProps, CAST_ROLES, CannotAnswerCard, type CannotAnswerCardProps, Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, CardWithHeader, Carousel, type CarouselApi, CarouselContent, CarouselItem, CarouselNext, CarouselPrevious, type CastResolution, type CastRole, type CastSource, CastTable, type CastTableProps, ChatSession, ChatSessionActivityRow, type ChatSessionActivityRowProps, type ChatSessionActivityStatus, ChatSessionActivitySubLine, type ChatSessionActivitySubLineProps, ChatSessionComposer, type ChatSessionComposerProps, ChatSessionContextChip, type ChatSessionContextChipProps, ChatSessionDisclosure, type ChatSessionDisclosureProps, ChatSessionMessage, type ChatSessionMessageAction, ChatSessionMessageOptions, type ChatSessionMessageOptionsProps, type ChatSessionMessageProps, type ChatSessionMessageRole, type ChatSessionMessageStatus, ChatSessionProgressLine, type ChatSessionProgressLineProps, ChatSessionPromptRow, type ChatSessionPromptRowProps, type ChatSessionProps, ChatSessionStatusBar, type ChatSessionStatusBarProps, ChatSessionTaskGroup, type ChatSessionTaskGroupProps, ChatSessionTaskRow, type ChatSessionTaskRowProps, type ChatSessionTaskStatus, CitationList, type CitationListProps, CitationMarker, CitationRow, type CitationRowProps, ClampedText, type ClampedTextProps, ClarifyCard, type ClarifyCardProps, type ClarifyOption, type ColumnDatum, Command, CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandSeparator, CommandShortcut, ContextBar, type ContextBarProps, type DeclaredAxes, DiagnosisCard, type DiagnosisCardProps, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, DiffList, type DiffListProps, type DiffOp, DiffRow, type DiffRowProps, DivergingBar, type DivergingBarProps, type DivergingDatum, DotRating, type DotRatingProps, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, type EgressClass, EgressList, type EgressListProps, EmissionCard, type EmissionCardProps, EmissionHeader, type EmissionHeaderProps, type EmissionKind, EmptyState, EmptyStateLock, type EmptyStateLockProps, type EmptyStateProps, ErrorBoundary, Eyebrow, type EyebrowProps, FilterBar, type FilterBarProps, FilterChip, type FilterChipProps, type HeatCell, type HeatState, HeatStrip, type HeatStripProps, HoverCard, HoverCardContent, HoverCardTrigger, Item, ItemActions, ItemContent, ItemDescription, ItemFooter, ItemGroup, ItemHeader, ItemMedia, ItemSeparator, ItemTitle, Kbd, KbdGroup, type Layer, LayerChip, type LayerChipProps, LayerSection, type LayerSectionProps, LayerStrip, type LayerStripProps, Legend, LegendItem, type LegendItemProps, type LegendProps, type LegendSwatchKind, LensChip, type LensChipProps, LensRow, type LensRowProps, type LensUsage, type MatchCandidate, MatchPreview, type MatchPreviewProps, MenuItem, type MenuItemProps, Menubar, MenubarCheckboxItem, MenubarContent, MenubarGroup, MenubarItem, MenubarLabel, MenubarMenu, MenubarPortal, MenubarRadioGroup, MenubarRadioItem, MenubarSeparator, MenubarShortcut, MenubarSub, MenubarSubContent, MenubarSubTrigger, MenubarTrigger, MetricGrid, type MetricGridProps, MetricTile, type MetricTileProps, type MetricTone, type Narrowing, NavBase, NavHorizontal, type NavHorizontalItem, NavHorizontalItems, type NavHorizontalItemsProps, type NavHorizontalProps, type NavItemConfig, NavItems, type NavItemsProps, type NavItemsVariant, type NavMenuItem, type NavSection, NavVertical, type NavVerticalItem, NavVerticalItems, type NavVerticalItemsProps, type NavVerticalProps, NavigationMenu, NavigationMenuContent, NavigationMenuIndicator, NavigationMenuItem, NavigationMenuLink, NavigationMenuList, NavigationMenuTrigger, NavigationMenuViewport, NestedMenu, type NestedMenuProps, Pagination, PaginationContent, PaginationEllipsis, PaginationItem, PaginationLink, PaginationNext, PaginationPrevious, PanelBox, type PanelBoxProps, PanelContent, type PanelContentProps, PanelStack, type PanelStackHandle, type PanelStackProps, type PanelStackSection, Popover, PopoverContent, PopoverTrigger, Progress, PropertyList, type PropertyListProps, PropertyRow, type PropertyRowProps, ProposalCard, type ProposalCardProps, RatingControl, type RatingControlProps, RecordHeader, type RecordHeaderProps, RepairNote, type RepairNoteProps, ResizableHandle, ResizablePanel, ResizablePanelGroup, RetryNote, type RetryNoteProps, RichSelect, type RichSelectOption, type RichSelectProps, type RuleEgress, type RuleProperties, RuleRow, type RuleRowProps, type RuleSelect, ScrollArea, ScrollBar, SearchInput, type SearchInputProps, type SearchInputSize, SectionHeader, type SectionHeaderProps, Separator, Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetOverlay, SheetPortal, SheetTitle, SheetTrigger, Sidebar, SidebarContent, SidebarFooter, SidebarGroup, SidebarGroupAction, SidebarGroupContent, SidebarGroupLabel, SidebarHeader, SidebarInput, SidebarInset, SidebarMenu, SidebarMenuAction, SidebarMenuBadge, SidebarMenuButton, SidebarMenuItem, SidebarMenuSkeleton, SidebarMenuSub, SidebarMenuSubButton, SidebarMenuSubItem, SidebarProvider, SidebarRail, SidebarSeparator, SidebarTrigger, Skeleton, type SliceLine, SliceSummary, type SliceSummaryProps, Sparkline, type SparklineProps, Spinner, StatusDot, type StatusDotProps, type Step, type StepTouch, type TabConfig, TabbedPanel, type TabbedPanelProps, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, Tabs, TabsContent, TabsList, TabsTrigger, TaskGantt, TaskGanttDetailCard, type TaskGanttDetailCardProps, type TaskGanttDetailProps, type TaskGanttInstant, type TaskGanttProps, type TaskGanttSegment, type TaskGanttStatus, type TaskGanttTask, TaskNode, type TaskNodeProps, type TaskNodeTag, type TemplateOption, TemplatePicker, type TemplatePickerProps, Terminal, type TerminalLevel, TerminalLine, type TerminalLineKind, type TerminalLineProps, type TerminalProps, TimelineEntry, type TimelineEntryProps, TimelineFooter, type TimelineFooterProps, TimelineList, type TimelineListProps, type TimelineVariant, Toaster, Toggle, ToggleGroup, ToggleGroupItem, Toolbar, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, type TouchDirection, Tour, type TourController, type TourProps, type TourReference, type TourStep, TreeItem, TreeView, type TreeViewProps, Typography, TypographyBlockquote, type TypographyBlockquoteProps, TypographyH1, type TypographyH1Props, TypographyH2, type TypographyH2Props, TypographyH3, type TypographyH3Props, TypographyH4, type TypographyH4Props, TypographyH5, type TypographyH5Props, TypographyH6, type TypographyH6Props, TypographyInlineCode, type TypographyInlineCodeProps, TypographyLarge, type TypographyLargeProps, TypographyLead, type TypographyLeadProps, TypographyList, type TypographyListProps, TypographyMuted, type TypographyMutedProps, TypographyP, type TypographyPProps, TypographyPre, type TypographyPreProps, TypographySmall, type TypographySmallProps, UnderDevelopment, type UnderDevelopmentProps, type UseOverflowItemsOptions, type UseOverflowItemsResult, type UseTourOptions, type Verdict, agentChipVariants, badgeVariants, SWATCH$1 as boundSwatch, buttonGroupVariants, buttonVariants, chatSessionGutterClass, cn, describeSlice, LABEL as layerLabel, SWATCH as layerSwatch, navigationMenuTriggerStyle, split as splitAddress, statusDotVariants, toggleVariants, MARK_LABEL as touchLabel, useOverflowItems, useSidebar, useTour };
4909
+ export { AbsenceNote, type AbsenceNoteProps, type AbsenceReason, Accordion, AccordionContent, AccordionItem, AccordionTrigger, AddressChip, type AddressChipProps, type AddressTone, AgentChip, type AgentChipProps, Alert, AlertDescription, AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, AlertTitle, AppStatusBar, type AppStatusBarProps, type Artifact, ArtifactTable, type ArtifactTableProps, AttemptClock, type AttemptClockProps, type AttemptRow, Avatar, AvatarFallback, AvatarImage, Badge, type BadgeProps, BarChartH, type BarChartHProps, BarChartV, type BarChartVProps, type BarDatum, type BaseNavProps, type Bound, BoundChip, type BoundChipProps, type BoundPalette, Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, Button, ButtonGroup, ButtonGroupSeparator, ButtonGroupText, type ButtonProps, ButtonWithTooltip, type ButtonWithTooltipProps, CAST_ROLES, CannotAnswerCard, type CannotAnswerCardProps, Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, CardWithHeader, Carousel, type CarouselApi, CarouselContent, CarouselItem, CarouselNext, CarouselPrevious, type CastResolution, type CastRole, type CastSource, CastTable, type CastTableProps, ChatSession, ChatSessionActivityRow, type ChatSessionActivityRowProps, type ChatSessionActivityStatus, ChatSessionActivitySubLine, type ChatSessionActivitySubLineProps, ChatSessionComposer, type ChatSessionComposerProps, ChatSessionContextChip, type ChatSessionContextChipProps, ChatSessionDisclosure, type ChatSessionDisclosureProps, ChatSessionMessage, type ChatSessionMessageAction, ChatSessionMessageOptions, type ChatSessionMessageOptionsProps, type ChatSessionMessageProps, type ChatSessionMessageRole, type ChatSessionMessageStatus, ChatSessionProgressLine, type ChatSessionProgressLineProps, ChatSessionPromptRow, type ChatSessionPromptRowProps, type ChatSessionProps, ChatSessionStatusBar, type ChatSessionStatusBarProps, ChatSessionTaskGroup, type ChatSessionTaskGroupProps, ChatSessionTaskRow, type ChatSessionTaskRowProps, type ChatSessionTaskStatus, CitationList, type CitationListProps, CitationMarker, CitationRow, type CitationRowProps, ClampedText, type ClampedTextProps, ClarifyCard, type ClarifyCardProps, type ClarifyOption, type ColumnDatum, Command, CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandSeparator, CommandShortcut, ContextBar, type ContextBarProps, type DeclaredAxes, DiagnosisCard, type DiagnosisCardProps, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, DiffList, type DiffListProps, type DiffOp, DiffRow, type DiffRowProps, DivergingBar, type DivergingBarProps, type DivergingDatum, DotRating, type DotRatingProps, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, type EgressClass, EgressList, type EgressListProps, EmissionCard, type EmissionCardProps, EmissionHeader, type EmissionHeaderProps, type EmissionKind, EmptyState, EmptyStateLock, type EmptyStateLockProps, type EmptyStateProps, ErrorBoundary, type ExchangeOption, ExchangeRecord, type ExchangeRecordProps, Eyebrow, type EyebrowProps, FilterBar, type FilterBarProps, FilterChip, type FilterChipProps, type HeatCell, type HeatState, HeatStrip, type HeatStripProps, HoverCard, HoverCardContent, HoverCardTrigger, Item, ItemActions, ItemContent, ItemDescription, ItemFooter, ItemGroup, ItemHeader, ItemMedia, ItemSeparator, ItemTitle, Kbd, KbdGroup, KindChip, type KindChipProps, type KnownAddressTone, type KnownBound, type KnownDiffOp, type KnownLayer, type KnownLayerItemState, type KnownMetricTone, type KnownParticipantVerdict, type KnownRunKind, type KnownRunStatus, type KnownTerminalLevel, type Layer, type LayerBand, type LayerBracket, LayerChip, type LayerChipProps, type LayerForecast, type LayerItem, type LayerItemState, type LayerPaint, type LayerPalette, type LayerPart, type LayerScale, type LayerSeam, LayerSection, type LayerSectionProps, LayerStrip, type LayerStripProps, Legend, LegendItem, type LegendItemProps, type LegendProps, type LegendSwatchKind, LensChip, type LensChipProps, LensRow, type LensRowProps, type LensUsage, Link, type LinkProps, MarkChip, type MarkChipProps, type MarkTone, type MatchCandidate, MatchPreview, type MatchPreviewProps, MenuItem, type MenuItemProps, Menubar, MenubarCheckboxItem, MenubarContent, MenubarGroup, MenubarItem, MenubarLabel, MenubarMenu, MenubarPortal, MenubarRadioGroup, MenubarRadioItem, MenubarSeparator, MenubarShortcut, MenubarSub, MenubarSubContent, MenubarSubTrigger, MenubarTrigger, MetricGrid, type MetricGridProps, MetricTile, type MetricTileProps, type MetricTone, type Narrowing, NavBase, NavHorizontal, type NavHorizontalItem, NavHorizontalItems, type NavHorizontalItemsProps, type NavHorizontalProps, type NavItemConfig, NavItems, type NavItemsProps, type NavItemsVariant, type NavMenuItem, type NavSection, NavVertical, type NavVerticalItem, NavVerticalItems, type NavVerticalItemsProps, type NavVerticalProps, NavigationMenu, NavigationMenuContent, NavigationMenuIndicator, NavigationMenuItem, NavigationMenuLink, NavigationMenuList, NavigationMenuTrigger, NavigationMenuViewport, NestedMenu, type NestedMenuProps, Pagination, PaginationContent, PaginationEllipsis, PaginationItem, PaginationLink, PaginationNext, PaginationPrevious, PanelBox, type PanelBoxProps, PanelContent, type PanelContentProps, PanelStack, type PanelStackHandle, type PanelStackProps, type PanelStackSection, ParticipantRow, type ParticipantRowProps, type ParticipantVerdict, Popover, PopoverContent, PopoverTrigger, Progress, PropertyList, type PropertyListProps, PropertyRow, type PropertyRowProps, ProposalCard, type ProposalCardProps, RatingControl, type RatingControlProps, RecordHeader, type RecordHeaderProps, RecordPager, type RecordPagerProps, RepairNote, type RepairNoteProps, ResizableHandle, ResizablePanel, ResizablePanelGroup, RetryNote, type RetryNoteProps, RichSelect, type RichSelectOption, type RichSelectProps, type RuleEgress, type RuleProperties, RuleRow, type RuleRowProps, type RuleSelect, type RunKind, RunRow, type RunRowProps, type RunStatus, RunStatusText, type RunStatusTextProps, ScrollArea, ScrollBar, SearchInput, type SearchInputProps, type SearchInputSize, SectionHeader, type SectionHeaderProps, SegmentedControl, type SegmentedControlProps, type SegmentedOption, Separator, Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetOverlay, SheetPortal, SheetTitle, SheetTrigger, Sidebar, SidebarContent, SidebarFooter, SidebarGroup, SidebarGroupAction, SidebarGroupContent, SidebarGroupLabel, SidebarHeader, SidebarInput, SidebarInset, SidebarMenu, SidebarMenuAction, SidebarMenuBadge, SidebarMenuButton, SidebarMenuItem, SidebarMenuSkeleton, SidebarMenuSub, SidebarMenuSubButton, SidebarMenuSubItem, SidebarProvider, SidebarRail, SidebarSeparator, SidebarTrigger, Skeleton, type SliceLine, SliceSummary, type SliceSummaryProps, Sparkline, type SparklineProps, Spinner, StatusDot, type StatusDotProps, type TabConfig, TabbedPanel, type TabbedPanelProps, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, Tabs, TabsContent, TabsList, TabsTrigger, TaskGantt, TaskGanttDetailCard, type TaskGanttDetailCardProps, type TaskGanttDetailProps, type TaskGanttInstant, type TaskGanttProps, type TaskGanttSegment, type TaskGanttStatus, type TaskGanttTask, TaskNode, type TaskNodeProps, type TaskNodeTag, type TemplateOption, TemplatePicker, type TemplatePickerProps, Terminal, type TerminalLevel, TerminalLine, type TerminalLineKind, type TerminalLineProps, type TerminalProps, TimelineEntry, type TimelineEntryProps, TimelineFooter, type TimelineFooterProps, TimelineList, type TimelineListProps, type TimelineVariant, Toaster, Toggle, ToggleGroup, ToggleGroupItem, Toolbar, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, type TouchDirection, type TouchItem, TouchStrip, type TouchStripProps, Tour, type TourController, type TourProps, type TourReference, type TourStep, TraceGate, type TraceGateProps, TraceList, type TraceListProps, TraceLoop, type TraceLoopProps, TraceStep, type TraceStepProps, TreeItem, TreeView, type TreeViewProps, Typography, TypographyBlockquote, type TypographyBlockquoteProps, TypographyH1, type TypographyH1Props, TypographyH2, type TypographyH2Props, TypographyH3, type TypographyH3Props, TypographyH4, type TypographyH4Props, TypographyH5, type TypographyH5Props, TypographyH6, type TypographyH6Props, TypographyInlineCode, type TypographyInlineCodeProps, TypographyLarge, type TypographyLargeProps, TypographyLead, type TypographyLeadProps, TypographyList, type TypographyListProps, TypographyMuted, type TypographyMutedProps, TypographyP, type TypographyPProps, TypographyPre, type TypographyPreProps, TypographySmall, type TypographySmallProps, UnderDevelopment, type UnderDevelopmentProps, type UseOverflowItemsOptions, type UseOverflowItemsResult, type UseTourOptions, type Verdict, agentChipVariants, badgeVariants, buttonGroupVariants, buttonVariants, chatSessionGutterClass, cn, describeSlice, stateLabel as layerItemLabel, layerLabel, layerPaint, linkVariants, navigationMenuTriggerStyle, TONE as runStatusTones, split as splitAddress, statusDotVariants, toggleVariants, useOverflowItems, useSidebar, useTour };