@ai-ecoverse/slicc-spectrum 1.106.0 → 1.107.1

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/README.md CHANGED
@@ -527,6 +527,7 @@ The search field is the shared one from `search.ts` (`sp-search[data-action=sear
527
527
 
528
528
  The live monitor: vitals (`.vital[data-id]`), each a meter when it has a `ratio` (budget, fullest context) and otherwise a value, its unit and delta on one line and a sparkline from its `series` (spend, active agents, processes, process memory).
529
529
  Each card keeps its place whatever it shows: the value line never wraps (a unit or delta that doesn't fit is left out whole rather than cut, and stays in the line's `title` and its text; a vital's optional `hint` replaces that tooltip, such as the exact reset time behind "resets in 4 days"), a card without a `series` keeps the sparkline's room, a meter keeps its description's line, and a card left alone on the last row spans it, so short and long values, 0% and 100%, and missing data move nothing below them.
530
+ A vital with a `provider` (the budget) is headed by that provider and its `window`, "Adobe weekly" or "SuperGrok weekly", instead of its `label`, with the provider's name as in the tray; a card too narrow for the window (under 119 px of content, a 420 phone, or under 126 px for "monthly") shows only the provider, "SuperGrok", and its `title` names both, "SuperGrok weekly, resets in 4 days".
530
531
  Then alerts (an alert's optional `command` shows after its detail, led by its `commandLabel` or "Run", as unwrapped code with **Copy**, `[data-command]` and `data-action="copy-command"`), and the sections (the agent's Tasks, Processes and Recent problems, then terminals, tabs, pending changes and tray followers; cones and sprinkles have their own panels; any other section an agent sends, such as an older agent's `agents` or `sprinkles`, renders the same way).
531
532
  Each section (`li.section[data-id]`) shows its count and an attention badge, and opens its surface with **Open** where one exists; the counts line up in one column whether or not a section has **Open**, and a section without rows keeps its name in line with the others (`agents`, `terminals` and `processes` → terminal, `tabs`, `changes`).
532
533
  A section with rows expands into them with its toggle (`.toggle`, `aria-expanded`; `data-open` on the section): collapsed by default, expanded while a row is `warn` or `error`, until the user toggles it; that choice holds for every view of the monitor on the same model, so a layout switch keeps it.
@@ -588,6 +589,9 @@ With `guests` and no `network`, it shows only the Guests section (no connection,
588
589
  #### `<slicc-tray>`
589
590
 
590
591
  The tray items in the header, each opening a panel when that panel is in `panels`: the connection (`#chip`, a status light with the float's name and followers, `data-surface="network"`, neutral and labelled "…, can’t follow" while the follow is `refused` and `connected`, exactly when the follow light reads "Can’t follow") opens Network at its **Sync** section, and the budget (`#usage`, `data-surface="monitor"`) opens the Monitor.
592
+ The budget chip reads "Budget 32%", or with the budget's `provider` that provider and the window, "Adobe weekly 32%" (`adobe` is Adobe, `xai` is SuperGrok and any other id shows as it is); its label and tooltip lead with the same words.
593
+ Both chips keep their text on one line.
594
+ With `narrow` (the app sets it on tablets) the budget chip leaves out the window, "Adobe 32%", and its label and tooltip keep it; a connection that isn't live shows only its state, "Reconnecting", without the float's name and followers, which its label keeps.
591
595
  Without the panel an item is a plain status with its label.
592
596
 
593
597
  #### `<slicc-confirm>`
@@ -827,6 +831,7 @@ The dummy keeps state in memory and maps `/shared/x` to `/home/x` in its files,
827
831
  Later backed by: the tray protocol.
828
832
  Connection, role, float kind, followers, spend and budget; `reconnect` and `disconnect`.
829
833
  `spent`, `rate` and `budget` are optional: the budget chip's tooltip and label leave out the spend while `spent` is 0 or missing, and the rate while `rate` is, and the chip itself hides without `budget`, or while it's at 0% with nothing spent.
834
+ `budget.provider` is optional: the agent sends the selected model's provider's budget and names it here, and without it the chip reads as before.
830
835
 
831
836
  #### `updates` (optional)
832
837
 
@@ -1070,6 +1075,7 @@ The dummy records a `connect`'s `options` in `settings.connects`, and `{ method:
1070
1075
  The dummy's `docs` and `tickets` MCP accounts have a `url`, the dummy vault records each `endpoints` change and drops a record's pin once the page registers its server, and `createDummyModel({ mcp: 'moved' })` (`?mcp=moved` on `/ui/`) pins the vault's `MCP_DOCS_TOKEN` to docs' URL and moves `docs` to `movedDocs` (from `/dummy`).
1071
1076
 
1072
1077
  `createDummyModel({ monitor: 'agent' })` (`?monitor=agent` on `/ui/`) adds the agent's Tasks (a tree by `depth`), Processes and Recent problems sections to the monitor, and its Running vital.
1078
+ `createDummyModel({ budget: 'plain' | 'adobe' | 'xai' })` (`?budget=` on `/ui/`, `plain` by default) sets the tray budget's `provider`: none, so it reads "Budget 32%", or Adobe or SuperGrok, which the tray and the monitor's budget vital name.
1073
1079
  Like slicc-agent's snapshot, the dummy's vitals are the budget, Spend, Active agents, Processes and Process memory (both with a `series`) and Fullest context.
1074
1080
 
1075
1081
  `createDummyModel({ approvals: 'agent' | 'user' | 'many' | 'follower' | 'fail' | 'soon' | 'elsewhere' | 'withdrawn' | 'secrets' | 'guest' | 'guest-follower' | 'guest-always' | 'long' | 'guest-args' | 'guest-empty' | 'guest-truncated' | 'tray' | 'tray-url' | 'tray-rotate' | 'tray-unlink' | 'tray-expired' })` (`?approvals=` on `/ui/`) adds waiting sudo requests: one from an agent, one from a terminal user, three in a row (the last as `www-data`), one without `decide`, one whose `decide` fails, one that expires in 24 seconds, or two whose first is answered in another tab or withdrawn after a few seconds, or one from an agent that copies a file over `/etc/fnox/config.toml`, or (`guest`) three guest requests: a message from Seat 2 (Mara) with attachments and an allow verdict, a tool call with a deny verdict, and a message whose `decide` rejects with "Someone else already answered this."
@@ -1087,6 +1093,7 @@ Its buttons are plain Spectrum buttons that answer at once: Unlock unlocks, and
1087
1093
  `createDummyModel({ hold: 'waiting' | 'locked' | 'off' })` (`?hold=` on `/ui/`) makes the agent hold two tool results; a `locked` hold clears when the dummy vault unlocks, and `model.agent.setHold(hold)` changes it.
1088
1094
 
1089
1095
  On phones the update status and the tray connection show only their status light (the tray's budget is hidden) and the network indicator a cloud icon, with the text in their labels and tooltips; the agent picker keeps room for the cone's name, cut with an ellipsis when long, and the bottom rail scrolls when needed.
1096
+ On tablets the agent picker gives up room before the View menu does, so the header keeps the View menu and its last button in view from 640 to 1199 px, the tray's chips stay on one line each, the budget chip leaves out its window and a tray that isn't live shows only its state.
1090
1097
  The update status comes first so progress and failures remain reachable on narrow screens.
1091
1098
  While a row has `beta`, the update status shows a notice **Beta** badge (`[data-updates] [data-beta]`) after its light, or alone when nothing else applies, at every size; its tooltip and label add "{label} runs beta {version}, not certified", with the label's folder left out ("Agent runs beta 6.13.5, not certified").
1092
1099
 
@@ -3644,6 +3644,7 @@ var coneSprinkles = [
3644
3644
  coneSprinkle("cone-tides", "board", "Board", "kanban", "Tide table tasks this week: 5."),
3645
3645
  coneSprinkle("cone-release", "changelog", "Changelog", "scroll-text", "Draft notes for 2.4.0.")
3646
3646
  ];
3647
+ var weekly = { percent: 32, window: "weekly", resets: "resets in 4 days" };
3647
3648
  var tray = {
3648
3649
  name: "sliccstart",
3649
3650
  kind: "sliccstart",
@@ -3655,9 +3656,12 @@ var tray = {
3655
3656
  ],
3656
3657
  spent: 23.67,
3657
3658
  rate: 0.59,
3658
- budget: { percent: 32, window: "weekly", resets: "resets in 4 days" },
3659
+ budget: weekly,
3659
3660
  joinUrl: "https://www.example.com/join/7Q4D-K9TX"
3660
3661
  };
3662
+ function trayWith(budget) {
3663
+ return budget === "plain" ? tray : { ...tray, budget: { ...weekly, provider: budget } };
3664
+ }
3661
3665
 
3662
3666
  // src/dummy/files.ts
3663
3667
  function parents(path) {
@@ -4003,7 +4007,8 @@ var DummyMonitor = class extends Emitter {
4003
4007
  label: `Budget (${status2.budget.window})`,
4004
4008
  value: `${status2.budget.percent}%`,
4005
4009
  unit: status2.budget.resets,
4006
- ratio: status2.budget.percent / 100
4010
+ ratio: status2.budget.percent / 100,
4011
+ ...status2.budget.provider ? { provider: status2.budget.provider, window: status2.budget.window } : {}
4007
4012
  }
4008
4013
  ] : [],
4009
4014
  {
@@ -6842,7 +6847,8 @@ function createDummyModel({
6842
6847
  sprinkles: sprinkles2 = "builtin",
6843
6848
  monitor = "dummy",
6844
6849
  import: imports = "off",
6845
- login
6850
+ login,
6851
+ budget = "plain"
6846
6852
  } = {}) {
6847
6853
  const time = clock(delay);
6848
6854
  const mount = mounts === "off" ? null : { scenario: mounts, point: mountPoint, files: mounted };
@@ -6900,7 +6906,7 @@ function createDummyModel({
6900
6906
  agent,
6901
6907
  files3
6902
6908
  ),
6903
- tray: new DummyTray(tray, time),
6909
+ tray: new DummyTray(trayWith(budget), time),
6904
6910
  updates: new DummyUpdates(updates, time, {
6905
6911
  ...packages === "off" ? {} : { packages },
6906
6912
  ...beta === "off" ? {} : { beta },