@ai-ecoverse/slicc-spectrum 1.13.0 → 1.14.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 +121 -3
- package/dist/slicc-dummy.js.map +4 -4
- package/dist/slicc-ui.js +299 -8
- package/dist/slicc-ui.js.map +4 -4
- package/dist/types/app/updates.d.ts +31 -0
- package/dist/types/dummy/index.d.ts +6 -1
- package/dist/types/dummy/updates.d.ts +15 -0
- package/dist/types/dummy.d.ts +3 -1
- package/dist/types/model/types.d.ts +28 -0
- package/dist/types/ui.d.ts +2 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -143,6 +143,7 @@ Text is Adobe Clean and code Spectrum's Source Code Pro. Source Code Pro (OFL) i
|
|
|
143
143
|
| `<slicc-terminals>` | Terminal sessions in tabs, each a `<slicc-terminal>` on the session's `TerminalBackend`. Sessions stay alive while hidden; `exit` closes the tab. |
|
|
144
144
|
| `<slicc-browser>` | Browser tabs with the agent driving each, an address bar, reload, and the active tab's screenshot. |
|
|
145
145
|
| `<slicc-settings>` | Theme, the model and thinking level for new cones, composer and diff preferences, and accounts to connect, reconnect or disconnect. |
|
|
146
|
+
| `<slicc-updates>` | Install / Update: component states, version changes, last checks, download and link counts, action buttons, failures with Retry, and collapsible install logs. Opens at boot until the agent is ready without failures. Background updates stay in the status bar; new failures reopen the panel. Also available through View and the rails. |
|
|
146
147
|
| `<slicc-memory>` | What agents remember, globally or per cone, grouped by section: search, filter by tag, expand, edit, add and forget. |
|
|
147
148
|
| `<slicc-monitor>` | The live monitor: vitals with sparklines (active agents, spend, budget, fullest context), alerts, and the topology (cones and scoops, terminals, tabs, pending changes, sprinkles, tray followers). |
|
|
148
149
|
| `<slicc-freezer>` | Frozen cones, archived with their scoops: thaw to bring one back, delete, or freeze the active cone (also `/freeze`). |
|
|
@@ -171,6 +172,11 @@ Keys: <kbd>Alt</kbd>+<kbd>1</kbd>… opens and focuses a panel, <kbd>F6</kbd> an
|
|
|
171
172
|
| `monitor` | all of them | A snapshot of vitals, alerts and sections, re-emitted as the system changes, and `resync`. |
|
|
172
173
|
| `sprinkles` | `@ai-ecoverse/slicc-agent` | Sprinkles (`inline` ones show as dips in the chat, not in the rail) and `send`, which turns a sprinkle's lick into a lick on its cone. |
|
|
173
174
|
| `tray` | the tray protocol | Connection, role, float kind, followers, spend and budget; `reconnect` and `disconnect`. |
|
|
175
|
+
| `updates` (optional) | BIOS installers | `list()` returns `UpdateItem` rows for BIOS, kernel, agent, grammars, global pnpm packages, skills and UI. `ready()` explicitly reports agent readiness, independently of agent activity. Emit `items` whenever rows or readiness change. `act(id, action)` resolves when dispatched or rejects with a displayed error; actions are `retry`, `update-now`, `restart-agent` and `reload`. Missing ports preserve existing adapters and report disconnected information in the panel. Real installer wiring belongs to ai-ecoverse/slicc-bios#70. |
|
|
176
|
+
|
|
177
|
+
The dummy supports `createDummyModel({ updates: 'boot' | 'current' | 'available' | 'restart' | 'failure' })`, also selectable with `?updates=` on `/ui/`. Fixtures stay stable for inspection; `model.updates.setScenario('current')` completes boot. Dummy Update now and Retry simulate download and link progress; Restart agent and Reload only change fixture state, never restart a real process or reload the browser. `updateFixtures` and `DummyUpdates` are exported from `/dummy`.
|
|
178
|
+
|
|
179
|
+
On phones the tray uses a compact indicator (its full status remains available on activation), the agent picker shrinks to fit, and the bottom rail scrolls when needed. The update status comes first so progress and failures remain reachable on narrow screens.
|
|
174
180
|
|
|
175
181
|
### Kernel model
|
|
176
182
|
|
package/dist/slicc-dummy.js
CHANGED
|
@@ -3723,8 +3723,123 @@ var DummyTray = class extends Emitter {
|
|
|
3723
3723
|
}
|
|
3724
3724
|
};
|
|
3725
3725
|
|
|
3726
|
+
// src/dummy/updates.ts
|
|
3727
|
+
var checkedAt = Date.UTC(2026, 9, 8, 8, 42);
|
|
3728
|
+
function updateFixtures(scenario) {
|
|
3729
|
+
const components = [
|
|
3730
|
+
["bios", "BIOS packages", "0.8.2"],
|
|
3731
|
+
["kernel", "Kernel", "1.12.0"],
|
|
3732
|
+
["agent", "Agent (/opt/agent)", "0.24.0"],
|
|
3733
|
+
["grammars", "Syntax grammars", "4.5.0"],
|
|
3734
|
+
["global", "Global pnpm packages", "2.3.0"],
|
|
3735
|
+
["skills", "Skills", "1.6.0"]
|
|
3736
|
+
];
|
|
3737
|
+
const items = components.map(([kind, label, version]) => ({
|
|
3738
|
+
id: kind,
|
|
3739
|
+
label,
|
|
3740
|
+
kind,
|
|
3741
|
+
state: "current",
|
|
3742
|
+
progress: null,
|
|
3743
|
+
from: version,
|
|
3744
|
+
to: version,
|
|
3745
|
+
checkedAt,
|
|
3746
|
+
error: null,
|
|
3747
|
+
actions: []
|
|
3748
|
+
}));
|
|
3749
|
+
const agent = items[2];
|
|
3750
|
+
if (scenario === "boot") {
|
|
3751
|
+
Object.assign(agent, {
|
|
3752
|
+
state: "downloading",
|
|
3753
|
+
from: null,
|
|
3754
|
+
progress: { phase: "download", done: 63, total: 95 },
|
|
3755
|
+
log: "Packages: +95\nProgress: resolved 95, reused 0, downloaded 63, added 0\nDownloading @slicc/demo-agent..."
|
|
3756
|
+
});
|
|
3757
|
+
Object.assign(items[3], {
|
|
3758
|
+
state: "linking",
|
|
3759
|
+
progress: { phase: "link", done: 12, total: 15 },
|
|
3760
|
+
log: "Linking syntax grammars\nProgress: linked 12 of 15"
|
|
3761
|
+
});
|
|
3762
|
+
items[4].state = "checking";
|
|
3763
|
+
} else if (scenario === "available" || scenario === "restart") {
|
|
3764
|
+
Object.assign(agent, {
|
|
3765
|
+
state: scenario === "available" ? "available" : "ready",
|
|
3766
|
+
to: "0.25.0",
|
|
3767
|
+
actions: [scenario === "available" ? "update-now" : "restart-agent"],
|
|
3768
|
+
log: scenario === "restart" ? "Packages: +95\nProgress: resolved 95, downloaded 95, added 95\nDone in 48.2s" : void 0
|
|
3769
|
+
});
|
|
3770
|
+
Object.assign(items[1], { state: "ready", to: "1.13.0", actions: ["reload"] });
|
|
3771
|
+
} else if (scenario === "failure") {
|
|
3772
|
+
Object.assign(items[4], {
|
|
3773
|
+
state: "failed",
|
|
3774
|
+
to: "2.4.0",
|
|
3775
|
+
error: "The package registry did not respond. Installed commands are still available.",
|
|
3776
|
+
actions: ["retry"],
|
|
3777
|
+
log: "pnpm add -g @harbor/demo-cli@2.4.0\nERR_PNPM_FETCH_TIMEOUT Request timed out after 30000ms"
|
|
3778
|
+
});
|
|
3779
|
+
}
|
|
3780
|
+
return items;
|
|
3781
|
+
}
|
|
3782
|
+
var DummyUpdates = class extends Emitter {
|
|
3783
|
+
#items;
|
|
3784
|
+
#ready;
|
|
3785
|
+
#clock;
|
|
3786
|
+
constructor(scenario, clock2) {
|
|
3787
|
+
super();
|
|
3788
|
+
this.#items = updateFixtures(scenario);
|
|
3789
|
+
this.#ready = scenario !== "boot";
|
|
3790
|
+
this.#clock = clock2;
|
|
3791
|
+
}
|
|
3792
|
+
list() {
|
|
3793
|
+
return this.#items;
|
|
3794
|
+
}
|
|
3795
|
+
ready() {
|
|
3796
|
+
return this.#ready;
|
|
3797
|
+
}
|
|
3798
|
+
setScenario(scenario) {
|
|
3799
|
+
this.#items = updateFixtures(scenario);
|
|
3800
|
+
this.#ready = scenario !== "boot";
|
|
3801
|
+
this.emit("items", this.#items);
|
|
3802
|
+
}
|
|
3803
|
+
#patch(id, patch) {
|
|
3804
|
+
this.#items = this.#items.map((item) => item.id === id ? { ...item, ...patch } : item);
|
|
3805
|
+
this.emit("items", this.#items);
|
|
3806
|
+
}
|
|
3807
|
+
async act(id, action) {
|
|
3808
|
+
const item = this.#items.find((candidate) => candidate.id === id);
|
|
3809
|
+
if (!item?.actions.includes(action)) throw new Error(`Update action unavailable: ${id}`);
|
|
3810
|
+
if (action === "update-now" || action === "retry") {
|
|
3811
|
+
this.#patch(id, {
|
|
3812
|
+
state: "downloading",
|
|
3813
|
+
progress: { phase: "download", done: 0, total: 95 },
|
|
3814
|
+
error: null,
|
|
3815
|
+
actions: [],
|
|
3816
|
+
log: "Packages: +95\nProgress: resolved 95, downloaded 0, added 0"
|
|
3817
|
+
});
|
|
3818
|
+
await this.#clock.sleep(4);
|
|
3819
|
+
this.#patch(id, {
|
|
3820
|
+
state: "linking",
|
|
3821
|
+
progress: { phase: "link", done: 95, total: 95 },
|
|
3822
|
+
log: "Packages: +95\nProgress: resolved 95, downloaded 95, added 95"
|
|
3823
|
+
});
|
|
3824
|
+
await this.#clock.sleep(2);
|
|
3825
|
+
}
|
|
3826
|
+
const apply = action === "update-now" && ["agent", "bios", "kernel", "ui"].includes(item.kind);
|
|
3827
|
+
this.#patch(id, {
|
|
3828
|
+
state: apply ? "ready" : "installed",
|
|
3829
|
+
from: apply ? item.from : item.to,
|
|
3830
|
+
progress: null,
|
|
3831
|
+
checkedAt,
|
|
3832
|
+
actions: apply ? [item.kind === "agent" ? "restart-agent" : "reload"] : []
|
|
3833
|
+
});
|
|
3834
|
+
}
|
|
3835
|
+
};
|
|
3836
|
+
|
|
3726
3837
|
// src/dummy/index.ts
|
|
3727
|
-
function createDummyModel({
|
|
3838
|
+
function createDummyModel({
|
|
3839
|
+
delay = 30,
|
|
3840
|
+
storage = null,
|
|
3841
|
+
updates = "current"
|
|
3842
|
+
} = {}) {
|
|
3728
3843
|
const time = clock(delay);
|
|
3729
3844
|
const files3 = new DummyFiles(files2, directories, pending, time);
|
|
3730
3845
|
const browser = new DummyBrowser(tabs, time);
|
|
@@ -3750,11 +3865,14 @@ function createDummyModel({ delay = 30, storage = null } = {}) {
|
|
|
3750
3865
|
),
|
|
3751
3866
|
memory: new DummyMemory(memories),
|
|
3752
3867
|
sprinkles: new DummySprinkles(sprinkles, agent),
|
|
3753
|
-
tray: new DummyTray(tray, time)
|
|
3868
|
+
tray: new DummyTray(tray, time),
|
|
3869
|
+
updates: new DummyUpdates(updates, time)
|
|
3754
3870
|
};
|
|
3755
3871
|
return { ...base, monitor: new DummyMonitor(base) };
|
|
3756
3872
|
}
|
|
3757
3873
|
export {
|
|
3758
|
-
|
|
3874
|
+
DummyUpdates,
|
|
3875
|
+
createDummyModel,
|
|
3876
|
+
updateFixtures
|
|
3759
3877
|
};
|
|
3760
3878
|
//# sourceMappingURL=slicc-dummy.js.map
|