@archetypeai/ds-cli 0.17.0 → 0.18.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "archetypeai-design-system",
3
- "version": "0.17.0",
3
+ "version": "0.18.0",
4
4
  "components": [
5
5
  {
6
6
  "name": "alert",
@@ -307,6 +307,7 @@
307
307
  "At least, for a list you cannot size: `Counter value={103} atLeast` renders `103+` when the caller has loaded 103 rows and knows only that more exist (keyset pagination, a capped query). The number is the caller's own, not a rounded threshold, and the accessible label reads \"at least 103\". Past 999 the abbreviation truncates instead of rounding, so `1250` shows `1.2K+` and never claims rows nobody loaded. `atLeast` is ignored on `value={0}`, where it would state nothing.",
308
308
  "Three axes, each one thing: `variant` is the treatment (`pill`, the default, or `bare`), `tone` is colour (`solid` or `muted`, and `muted` still reads as muted on a bare counter), and `size` is the box (`sm` for dense rows like tables and list items). Inside a tab strip use `Tabs.Count`, which re-colors it for the active/inactive trigger.",
309
309
  "A number anywhere, not just a pill: `variant=\"bare\" size=\"inherit\"` drops the pill and the mono face and takes the typography of whatever it sits in, so a headline figure, a table cell or a number in running text can roll. It sits on the surrounding baseline and reserves no width of its own, so it can be dropped mid-sentence: `Processed <Counter value={n} variant=\"bare\" size=\"inherit\" exact /> of 2,000 rows.` Size and weight come from the parent (`<span class=\"text-6xl\">`), and the digit row tracks the line height, so it works at any scale.",
310
+ "Decimals: `decimals={2}` keeps two places (`0.97`, `1.00`) instead of rounding to a whole number, rounding half up like `Math.round(v * 100) / 100`, and is never abbreviated. Use it for a score or a rate; a count stays a whole number.",
310
311
  "Exact digits: `exact` turns off the `1.2K` abbreviation and rolls the whole number. Use it where the reader is meant to read the figure rather than glance at it (a headline, a total in a sentence); leave it off in chrome, where a fifth column would reflow the layout."
311
312
  ],
312
313
  "variants": {
@@ -741,7 +742,7 @@
741
742
  "description": "Indeterminate loading bar for route/navigation transitions.",
742
743
  "usage": [
743
744
  "Mount once in the root layout and gate on navigation: `{#if navigating.to}<LoadingBar />{/if}` (SvelteKit `navigating` from `$app/state`). Presentational only — it does not read navigation state itself.",
744
- "`position=\"bottom\"` pins it to the viewport bottom; always fixed + full-width. Indeterminate only — for a determinate value bar use `progress`."
745
+ "`position=\"bottom\"` pins it to the viewport bottom; always fixed + full-width. For navigation only. Work inside a page uses `Progress`: a value when the total is known, `value={null}` when it is not."
745
746
  ],
746
747
  "variants": {
747
748
  "loadingBarVariants": {
@@ -800,11 +801,14 @@
800
801
  "name": "progress",
801
802
  "import": "@archetypeai/ds-ui-svelte-console/primitives/progress",
802
803
  "source": "https://design-system-console.archetypeai.workers.dev/r/progress.json",
803
- "description": "Determinate progress bar.",
804
+ "description": "Progress bar: fills to a known value, or sweeps while the total is unknown.",
804
805
  "usage": [
805
806
  "A rolling percentage above the bar is composed, not a prop: wrap a bare Counter and the bar in a `flex flex-col gap-2.5`, with the figure as `<span class=\"font-mono text-6xl\"><Counter value={pct} variant=\"bare\" size=\"inherit\" exact /></span>` and a `text-muted-foreground text-lg` unit beside it. Mark the whole figure row `aria-hidden`: the bar already announces the value through `aria-valuenow`, so the number drawn beside it is presentation, not a second thing to read out.",
806
807
  "Pair with a large mono readout: `<span class=\"font-mono text-4xl\">{value}</span><span class=\"text-muted-foreground text-sm\">%</span>` beside the bar.",
807
- "`size=\"sm\"` for compact/inline progress (upload rows); always aria-label."
808
+ "`size=\"sm\"` for compact/inline progress (upload rows); always aria-label.",
809
+ "Unknown total vs not started: `value={null}` is work whose total isn't known (a running eval that reports rows scored but no row count). The bar sweeps, drops `aria-valuenow`, sets `aria-busy` and marks `data-indeterminate`. Pass `value={0}` for work with a known total that hasn't moved yet. Show what is known beside the bar (`1,276 rows scored`), never a made-up percentage.",
810
+ "Reduced motion holds the sweep still in the centre of the track, so it can't be read as partly done.",
811
+ "`variant=\"running\"` paints the bar in `atai-neutral`, the colour the console uses for a running job (see Badge's status recipe). `success` and `critical` are for finished work."
808
812
  ],
809
813
  "variants": {
810
814
  "progressVariants": {
@@ -822,6 +826,7 @@
822
826
  "axes": {
823
827
  "variant": [
824
828
  "default",
829
+ "running",
825
830
  "success",
826
831
  "critical"
827
832
  ]
@@ -842,6 +847,70 @@
842
847
  "Streaming: append rows and set `maxPoints` for a sliding window."
843
848
  ]
844
849
  },
850
+ {
851
+ "name": "score-bento",
852
+ "import": "@archetypeai/ds-ui-svelte-console/primitives/score-bento",
853
+ "source": "https://design-system-console.archetypeai.workers.dev/r/score-bento.json",
854
+ "description": "Score hero: a 0..1 score as a field of one hundred cells that fills from the bottom-right corner, with the figure rolling up to its value.",
855
+ "usage": [
856
+ "`ScoreBento value={0.97} label=\"Macro F1\"` fills 97 cells and rolls the figure to `0.97` (a bare `Counter` with `decimals={2}`). The value is 0..1 and shown to two decimals; round the same way (`Math.round(v * 100) / 100`) anywhere else the page prints this score, so the hero and a list can't disagree on a digit.",
857
+ "Unscored vs in flight vs scored: `value={null}` renders the empty field and an em dash (no score yet, or a failed run). While the run is going, pass `status=\"running\"` with `value={null}`: a single diagonal sweeps the empty field back and forth without claiming a score, and `valueText` + `meta` carry what is known (`valueText=\"1,276\" meta=\"rows scored\"`). `status=\"completed\"` with a value fills from the corner on first paint and lands the `eyebrow` once the last cell does.",
858
+ "`status` takes the agent service's eval and optimization statuses as they come (`pending`, `running`, `completed`, `failed`, `cancelled`); only `running` and `completed` move, the rest are still. Reduced motion stills both.",
859
+ "`tone` picks the colour: `neutral` (the default) paints from the theme's foreground and works for any score; `babyblue` and `yellow` are brand fills; `warning` is the system's warning colour, for a score that needs attention. Which tone a score wears is the caller's decision, e.g. a band map kept beside the thresholds. Scored cells take the tone's token at full strength in both themes, and unscored cells show the bento's background. A new colour is a new tone in `scoreBentoFieldVariants` and `scoreBentoInkVariants`, not a call-site override.",
860
+ "Around the figure: `eyebrow` is a short line above it (a verdict such as \"Great\"), `meta` a line under it, `valueText` replaces the two-decimal figure with a caller-formatted string, and `trailing` is a top-right line such as a delta against the previous run. `help` is a plain-words explanation of the label, behind an info disc in the top-right corner. `help` renders a Tooltip, so the page needs a `Tooltip.Provider` above it; put one in the app layout rather than wrapping each bento.",
861
+ "`size=\"compact\"` fits a side panel or another narrow column (a shorter field, `text-7xl` figure); `default` is the page hero. The bento sets no width or grid placement of its own: lay it out with `class` (`md:col-span-7 md:row-span-2` beside two `StatBento`s at `md:col-span-2`)."
862
+ ],
863
+ "variants": {
864
+ "scoreBentoVariants": {
865
+ "axes": {
866
+ "size": [
867
+ "default",
868
+ "compact"
869
+ ]
870
+ },
871
+ "defaults": {
872
+ "size": "default"
873
+ }
874
+ },
875
+ "scoreBentoFieldVariants": {
876
+ "axes": {
877
+ "tone": [
878
+ "neutral",
879
+ "babyblue",
880
+ "yellow",
881
+ "warning"
882
+ ]
883
+ },
884
+ "defaults": {
885
+ "tone": "neutral"
886
+ }
887
+ },
888
+ "scoreBentoInkVariants": {
889
+ "axes": {
890
+ "tone": [
891
+ "neutral",
892
+ "babyblue",
893
+ "yellow",
894
+ "warning"
895
+ ]
896
+ },
897
+ "defaults": {
898
+ "tone": "neutral"
899
+ }
900
+ },
901
+ "scoreBentoValueVariants": {
902
+ "axes": {
903
+ "size": [
904
+ "default",
905
+ "compact"
906
+ ]
907
+ },
908
+ "defaults": {
909
+ "size": "default"
910
+ }
911
+ }
912
+ }
913
+ },
845
914
  {
846
915
  "name": "select",
847
916
  "import": "@archetypeai/ds-ui-svelte-console/primitives/select",
@@ -1012,6 +1081,19 @@
1012
1081
  }
1013
1082
  }
1014
1083
  },
1084
+ {
1085
+ "name": "stat-bento",
1086
+ "import": "@archetypeai/ds-ui-svelte-console/primitives/stat-bento",
1087
+ "source": "https://design-system-console.archetypeai.workers.dev/r/stat-bento.json",
1088
+ "description": "Small figure bento: a label top-left, the value bottom-right, one line of context bottom-left. ScoreBento's quiet sibling.",
1089
+ "usage": [
1090
+ "`StatBento label=\"Accuracy\" value=\"0.94\" meta=\"1,203 of 1,276\"`. `value` is a string the caller formats (`0.94`, `12%`, `3m 20s`), so the bento never guesses at precision or units.",
1091
+ "Missing vs pending: pass `value=\"—\"` when the figure does not exist, and say why in `meta` while it is still coming (`meta=\"when complete\"`). Omit `meta` when there is nothing to add; the value keeps its bottom-right place either way.",
1092
+ "Where the bento is too narrow for `meta` and the value side by side, the value wraps under the context line instead of widening the bento, so the bento can go in a two- or three-up grid of any width.",
1093
+ "It sits on the card surface, not a tone, so a coloured `ScoreBento` beside it stays the only coloured thing. It sets no height or grid placement: size and lay it out with `class` (`min-h-28` in a side panel, `md:col-span-2` beside a bento).",
1094
+ "`help` renders a Tooltip info disc in the top-right corner, so the page needs a `Tooltip.Provider` above it; put one in the app layout."
1095
+ ]
1096
+ },
1015
1097
  {
1016
1098
  "name": "switch",
1017
1099
  "import": "@archetypeai/ds-ui-svelte-labs/primitives/switch",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@archetypeai/ds-cli",
3
- "version": "0.17.0",
3
+ "version": "0.18.0",
4
4
  "description": "Archetype AI Design System CLI Tool",
5
5
  "type": "module",
6
6
  "bin": {