@ai-ecoverse/slicc-spectrum 1.54.0 → 1.56.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 +4 -4
- package/dist/slicc-dummy.js +63 -3
- package/dist/slicc-dummy.js.map +3 -3
- package/dist/slicc-ui.js +73 -16
- package/dist/slicc-ui.js.map +3 -3
- package/dist/types/app/panels.d.ts +1 -0
- package/dist/types/dummy/extras.d.ts +1 -0
- package/dist/types/dummy/index.d.ts +2 -1
- package/dist/types/dummy/updates.d.ts +1 -1
- package/dist/types/model/types.d.ts +8 -1
- package/package.json +1 -1
package/dist/slicc-ui.js
CHANGED
|
@@ -13261,7 +13261,8 @@ function sprinkleSurface(sprinkle) {
|
|
|
13261
13261
|
tag: "slicc-sprinkle",
|
|
13262
13262
|
icon: sprinkle.icon,
|
|
13263
13263
|
side: "right",
|
|
13264
|
-
open: []
|
|
13264
|
+
open: [],
|
|
13265
|
+
cone: sprinkle.agentId
|
|
13265
13266
|
};
|
|
13266
13267
|
}
|
|
13267
13268
|
var directions = {
|
|
@@ -20884,8 +20885,20 @@ var packageActions = {
|
|
|
20884
20885
|
install: "Install",
|
|
20885
20886
|
update: "Update",
|
|
20886
20887
|
remove: "Remove",
|
|
20887
|
-
retry: "Retry"
|
|
20888
|
+
retry: "Retry",
|
|
20889
|
+
unpin: "Unpin"
|
|
20888
20890
|
};
|
|
20891
|
+
function packageLight(item2) {
|
|
20892
|
+
if (item2.pin && item2.state === "installed")
|
|
20893
|
+
return ["positive", item2.pin.base === null ? "Added" : "Pinned"];
|
|
20894
|
+
if (item2.pin?.base && item2.state === "removing") return ["info", "Unpinning"];
|
|
20895
|
+
return packageStates[item2.state];
|
|
20896
|
+
}
|
|
20897
|
+
function pinVersion(item2, pin) {
|
|
20898
|
+
const version2 = item2.version ?? pin.range;
|
|
20899
|
+
if (pin.base === null) return [pin.range === version2 ? version2 : `${pin.range} \u2192 ${version2}`];
|
|
20900
|
+
return [version2, pin.base === version2 ? "the version seven ships" : `seven ships ${pin.base}`];
|
|
20901
|
+
}
|
|
20889
20902
|
var packageRunning = /* @__PURE__ */ new Set(["installing", "updating", "removing"]);
|
|
20890
20903
|
var list3 = (names) => new Intl.ListFormat("en", { type: "conjunction" }).format(names);
|
|
20891
20904
|
function requiresText(item2, all2) {
|
|
@@ -21335,6 +21348,14 @@ var SliccUpdates = class extends ModelElement {
|
|
|
21335
21348
|
</article>`;
|
|
21336
21349
|
}
|
|
21337
21350
|
#packageMeta(item2, all2) {
|
|
21351
|
+
if (item2.pin) {
|
|
21352
|
+
const [version3, ...rest] = pinVersion(item2, item2.pin);
|
|
21353
|
+
return b`<p class="meta" data-pin=${item2.pin.base === null ? "added" : "pinned"}>
|
|
21354
|
+
<span class="version">${version3}</span>
|
|
21355
|
+
${rest.map((part2) => b`<span>${part2}</span>`)}
|
|
21356
|
+
<span>in ${item2.pin.project}</span>
|
|
21357
|
+
</p>`;
|
|
21358
|
+
}
|
|
21338
21359
|
const version2 = item2.version === null ? item2.offered : item2.offered && item2.offered !== item2.version ? `${item2.version} \u2192 ${item2.offered}` : item2.version;
|
|
21339
21360
|
const download = item2.size !== void 0 && (item2.version === null || item2.offered !== item2.version);
|
|
21340
21361
|
const requires = requiresText(item2, all2);
|
|
@@ -21360,11 +21381,11 @@ var SliccUpdates = class extends ModelElement {
|
|
|
21360
21381
|
return b`<swc-progress-bar
|
|
21361
21382
|
size="s"
|
|
21362
21383
|
indeterminate
|
|
21363
|
-
accessible-label=${`${item2.label}: ${
|
|
21384
|
+
accessible-label=${`${item2.label}: ${packageLight(item2)?.[1].toLowerCase()}`}
|
|
21364
21385
|
></swc-progress-bar>`;
|
|
21365
21386
|
}
|
|
21366
21387
|
#package(item2, all2, act) {
|
|
21367
|
-
const light =
|
|
21388
|
+
const light = packageLight(item2);
|
|
21368
21389
|
const busy = this.busy.get(item2.id);
|
|
21369
21390
|
const shown2 = busy ? [busy] : act ? item2.actions : [];
|
|
21370
21391
|
const error = this.problems.get(item2.id) ?? item2.error;
|
|
@@ -21400,21 +21421,32 @@ var SliccUpdates = class extends ModelElement {
|
|
|
21400
21421
|
${item2.log ? b`<details><summary>Install log</summary><pre><span class="package">${item2.package}</span>\n${item2.log}</pre></details>` : A}
|
|
21401
21422
|
</li>`;
|
|
21402
21423
|
}
|
|
21424
|
+
#list(items, all2, port) {
|
|
21425
|
+
return b`<ul>${c(
|
|
21426
|
+
items,
|
|
21427
|
+
(item2) => item2.id,
|
|
21428
|
+
(item2) => this.#package(item2, all2, Boolean(port.actPackage))
|
|
21429
|
+
)}</ul>`;
|
|
21430
|
+
}
|
|
21403
21431
|
#packages(port) {
|
|
21404
21432
|
if (!port?.packages) return A;
|
|
21405
21433
|
const all2 = port.packages();
|
|
21434
|
+
const offered = all2.filter((item2) => item2.origin !== "user");
|
|
21435
|
+
const yours = all2.filter((item2) => item2.origin === "user");
|
|
21406
21436
|
return b`<section data-section="packages" aria-labelledby="packages">
|
|
21407
21437
|
<swc-divider size="m"></swc-divider>
|
|
21408
21438
|
<h2 id="packages">Optional packages</h2>
|
|
21409
21439
|
<p class="hint">
|
|
21410
|
-
${
|
|
21440
|
+
${offered.length ? "Tools for the agent and the terminal. Install the ones you need; you can remove them later." : "No optional packages are offered right now."}
|
|
21411
21441
|
</p>
|
|
21412
|
-
${
|
|
21413
|
-
|
|
21414
|
-
|
|
21415
|
-
|
|
21416
|
-
|
|
21417
|
-
|
|
21442
|
+
${offered.length ? this.#list(offered, all2, port) : A}
|
|
21443
|
+
</section>
|
|
21444
|
+
${yours.length ? b`<section data-section="user-packages" aria-labelledby="user-packages">
|
|
21445
|
+
<swc-divider size="m"></swc-divider>
|
|
21446
|
+
<h2 id="user-packages">Your packages</h2>
|
|
21447
|
+
<p class="hint">Packages you added or pinned with pnpm in /opt/agent or /opt/grammars. Seven’s updates keep them until you unpin or remove them.</p>
|
|
21448
|
+
${this.#list(yours, all2, port)}
|
|
21449
|
+
</section>` : A}`;
|
|
21418
21450
|
}
|
|
21419
21451
|
render() {
|
|
21420
21452
|
const port = this.model?.updates;
|
|
@@ -21619,6 +21651,11 @@ var SliccApp = class extends ThemedElement {
|
|
|
21619
21651
|
.rail:empty {
|
|
21620
21652
|
display: none;
|
|
21621
21653
|
}
|
|
21654
|
+
.rail .cones {
|
|
21655
|
+
flex: none;
|
|
21656
|
+
inline-size: var(--swc-component-height-75);
|
|
21657
|
+
border-block-start: var(--swc-border-width-100) solid var(--swc-gray-300);
|
|
21658
|
+
}
|
|
21622
21659
|
.rail swc-action-button.selected {
|
|
21623
21660
|
--swc-action-button-background-color-default: var(--swc-neutral-background-color-selected-default);
|
|
21624
21661
|
--swc-action-button-background-color-hover: var(--swc-neutral-background-color-selected-hover);
|
|
@@ -21832,6 +21869,13 @@ var SliccApp = class extends ThemedElement {
|
|
|
21832
21869
|
if (layout) this.#start(this.model);
|
|
21833
21870
|
else if (changed.has("model")) this.#rebind(this.model);
|
|
21834
21871
|
this.#updates(layout);
|
|
21872
|
+
this.#retitle();
|
|
21873
|
+
}
|
|
21874
|
+
#retitle() {
|
|
21875
|
+
for (const sprinkle of this.#sprinkles()) {
|
|
21876
|
+
const panel = this.dock.api.getPanel(`sprinkle:${sprinkle.id}`);
|
|
21877
|
+
if (panel && panel.title !== sprinkle.title) panel.api.setTitle(sprinkle.title);
|
|
21878
|
+
}
|
|
21835
21879
|
}
|
|
21836
21880
|
#updates(layout) {
|
|
21837
21881
|
const port = this.model?.updates;
|
|
@@ -21967,7 +22011,7 @@ var SliccApp = class extends ThemedElement {
|
|
|
21967
22011
|
openChat(this.dock, agent, this.screen);
|
|
21968
22012
|
return;
|
|
21969
22013
|
}
|
|
21970
|
-
const sprinkle = this
|
|
22014
|
+
const sprinkle = this.#sprinkles().find((candidate) => `sprinkle:${candidate.id}` === id);
|
|
21971
22015
|
if (sprinkle) {
|
|
21972
22016
|
openSprinkle(this.dock, sprinkle, this.screen);
|
|
21973
22017
|
return;
|
|
@@ -21985,7 +22029,19 @@ var SliccApp = class extends ThemedElement {
|
|
|
21985
22029
|
this.dock.content(id)?.reveal?.(section);
|
|
21986
22030
|
}
|
|
21987
22031
|
#sprinkle(id) {
|
|
21988
|
-
return this
|
|
22032
|
+
return this.#sprinkles().find((candidate) => candidate.id === id);
|
|
22033
|
+
}
|
|
22034
|
+
#sprinkles() {
|
|
22035
|
+
const model = this.model;
|
|
22036
|
+
if (!model) return [];
|
|
22037
|
+
const selected = this.#cone();
|
|
22038
|
+
const cones = model.agent.list().filter((agent) => agent.kind === "cone");
|
|
22039
|
+
const list4 = model.sprinkles.list();
|
|
22040
|
+
const order = [selected, ...cones.map((cone) => cone.id), ...list4.map((item2) => item2.agentId)];
|
|
22041
|
+
return list4.map((sprinkle) => {
|
|
22042
|
+
const cone = cones.find((agent) => agent.id === sprinkle.agentId && agent.id !== selected);
|
|
22043
|
+
return cone ? { ...sprinkle, title: `${cone.name} / ${sprinkle.title}` } : sprinkle;
|
|
22044
|
+
}).sort((a22, b13) => order.indexOf(a22.agentId) - order.indexOf(b13.agentId));
|
|
21989
22045
|
}
|
|
21990
22046
|
#detach(id, place2, open) {
|
|
21991
22047
|
const sprinkle = this.#sprinkle(id);
|
|
@@ -22017,7 +22073,7 @@ var SliccApp = class extends ThemedElement {
|
|
|
22017
22073
|
const driven = item2.id === "browser" && !!this.model?.browser.list().some((tab) => tab.controlled);
|
|
22018
22074
|
const visible2 = shown(this.dock, item2.id);
|
|
22019
22075
|
const label = `${visible2 ? `${item2.title}, shown` : `Open ${item2.title}`}${changes ? `, ${changeCount(changes)}` : driven ? ", a tab is in use" : ""}`;
|
|
22020
|
-
const button = u16`<swc-action-button id=${`rail-${item2.id}`} class=${visible2 ? "selected" : ""} quiet size="m" accessible-label=${label} data-surface=${item2.id} ?data-visible=${visible2} @click=${() => this.show(item2.id)}>${railIcon(item2.icon)}</swc-action-button>`;
|
|
22076
|
+
const button = u16`<swc-action-button id=${`rail-${item2.id}`} class=${visible2 ? "selected" : ""} quiet size="m" accessible-label=${label} data-surface=${item2.id} data-cone=${o2(item2.cone)} ?data-visible=${visible2} @click=${() => this.show(item2.id)}>${railIcon(item2.icon)}</swc-action-button>`;
|
|
22021
22077
|
const tooltip = b`<swc-tooltip for=${`rail-${item2.id}`} placement=${{ left: "end", right: "start", bottom: "top" }[side]}>${item2.title}</swc-tooltip>`;
|
|
22022
22078
|
return changes ? b`<span class="badged">${button}<swc-badge size="s" variant="neutral" aria-hidden="true">${changes}</swc-badge></span>${tooltip}` : driven ? b`<span class="badged">${button}<span class="dot" data-driven aria-hidden="true"></span></span>${tooltip}` : b`${button}${tooltip}`;
|
|
22023
22079
|
}
|
|
@@ -22039,13 +22095,14 @@ var SliccApp = class extends ThemedElement {
|
|
|
22039
22095
|
const primary = side === "bottom" ? items.filter((item2) => phoneRail.includes(item2.id)) : items;
|
|
22040
22096
|
const fit = primary.length < items.length ? Math.min(primary.length, railCapacity(this.#width, Infinity)) : railCapacity(this.#width, items.length);
|
|
22041
22097
|
const shown2 = side === "bottom" ? primary.slice(0, fit) : items;
|
|
22098
|
+
const grouped = new Set(shown2.map((item2) => item2.cone).filter(Boolean)).size > 1;
|
|
22042
22099
|
return b`<nav class=${`rail ${side}`} aria-label=${`Panels, ${side}`} @dragover=${this.#railOver} @dragleave=${this.#railLeave} @drop=${this.#railDrop}>${shown2.map(
|
|
22043
|
-
(item2) => this.#railButton(item2, side)
|
|
22100
|
+
(item2, index) => b`${grouped && index && shown2[index - 1].cone !== item2.cone ? b`<span class="cones" aria-hidden="true"></span>` : A}${this.#railButton(item2, side)}`
|
|
22044
22101
|
)}${this.#more(items.filter((item2) => !shown2.includes(item2)))}</nav>`;
|
|
22045
22102
|
}
|
|
22046
22103
|
#rails() {
|
|
22047
22104
|
const dock = this.renderRoot.querySelector("slicc-dock");
|
|
22048
|
-
const sprinkles =
|
|
22105
|
+
const sprinkles = this.#sprinkles().filter((sprinkle) => !sprinkle.inline || this.dips.has(sprinkle.id)).map(sprinkleSurface);
|
|
22049
22106
|
const all2 = dock && this.#started ? [...sprinkles, ...this.#available()] : [];
|
|
22050
22107
|
const phone = this.screen === "phone";
|
|
22051
22108
|
return {
|