@ai-ecoverse/slicc-spectrum 1.106.0 → 1.107.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +6 -0
- package/dist/slicc-dummy.js +10 -4
- package/dist/slicc-dummy.js.map +2 -2
- package/dist/slicc-ui.js +174 -140
- package/dist/slicc-ui.js.map +4 -4
- package/dist/types/app/tray.d.ts +2 -0
- package/dist/types/dummy/extras.d.ts +2 -0
- package/dist/types/dummy/index.d.ts +3 -1
- package/dist/types/model/types.d.ts +3 -0
- package/package.json +5 -5
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,8 @@ 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
|
+
With `narrow` (the app sets it on tablets) the chip leaves out the window, "Adobe 32%", and its label and tooltip keep it.
|
|
591
594
|
Without the panel an item is a plain status with its label.
|
|
592
595
|
|
|
593
596
|
#### `<slicc-confirm>`
|
|
@@ -827,6 +830,7 @@ The dummy keeps state in memory and maps `/shared/x` to `/home/x` in its files,
|
|
|
827
830
|
Later backed by: the tray protocol.
|
|
828
831
|
Connection, role, float kind, followers, spend and budget; `reconnect` and `disconnect`.
|
|
829
832
|
`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.
|
|
833
|
+
`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
834
|
|
|
831
835
|
#### `updates` (optional)
|
|
832
836
|
|
|
@@ -1070,6 +1074,7 @@ The dummy records a `connect`'s `options` in `settings.connects`, and `{ method:
|
|
|
1070
1074
|
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
1075
|
|
|
1072
1076
|
`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.
|
|
1077
|
+
`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
1078
|
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
1079
|
|
|
1075
1080
|
`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 +1092,7 @@ Its buttons are plain Spectrum buttons that answer at once: Unlock unlocks, and
|
|
|
1087
1092
|
`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
1093
|
|
|
1089
1094
|
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.
|
|
1095
|
+
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 down to 640 px, and the tray's budget chip leaves out its window.
|
|
1090
1096
|
The update status comes first so progress and failures remain reachable on narrow screens.
|
|
1091
1097
|
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
1098
|
|
package/dist/slicc-dummy.js
CHANGED
|
@@ -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:
|
|
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(
|
|
6909
|
+
tray: new DummyTray(trayWith(budget), time),
|
|
6904
6910
|
updates: new DummyUpdates(updates, time, {
|
|
6905
6911
|
...packages === "off" ? {} : { packages },
|
|
6906
6912
|
...beta === "off" ? {} : { beta },
|