@ai-ecoverse/slicc-spectrum 1.37.0 → 1.37.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 +2 -2
- package/dist/slicc-ui.js +45 -12
- package/dist/slicc-ui.js.map +2 -2
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -138,12 +138,12 @@ Text is Adobe Clean Spectrum VF, falling back to Adobe Clean, and code is Spectr
|
|
|
138
138
|
| `<slicc-composer>` | The message box. <kbd>Enter</kbd> sends, or steers a running reply: the message joins after the current tool round, without interrupting; <kbd>Ctrl</kbd>/<kbd>⌘</kbd>+<kbd>Enter</kbd> queues a follow-up that runs after the reply and can be withdrawn; <kbd>Shift</kbd>+<kbd>Enter</kbd> adds a line; <kbd>Tab</kbd> takes the suggested follow-up; <kbd>↑</kbd>/<kbd>↓</kbd> at the start or end walk this agent's history; <kbd>Esc</kbd> stops. `/` completes commands (`/clear`, `/compact`, `/model`, `/thinking`, `/scoop`, `/stop`, `/freeze` when the port can freeze, `/theme`) and their arguments, `@` mentions agents and files. Attach from the computer, from SLICC's files, a browser screenshot or a shared secret, or paste and drop files (25 MB each). Queued messages wait above it, to send now or drop. Model and thinking pickers, and dictation where the browser has speech recognition. Drafts are kept per agent. |
|
|
139
139
|
| `<slicc-files>` | The file system as a `<slicc-file-tree>`, with pending changes as git status. Opening a file opens it in a tab. With `files.mountFolder`, **Mount a folder…** (`data-action="mount-folder"`) mounts a local folder, then selects and expands it in the tree; with `files.mounts`, a **Mounted** strip lists the mount points, each with **Eject** (`data-action="eject"`, `data-path` the mount point) when the port has `eject`. With `files.needsFolder`, a **Needs a folder** section lists the mount points waiting for a folder, each with **Insert folder…** (`data-action="insert-folder"`, `data-id` the mount point), which calls `mountFolder(path)`. A failed mount, insert or eject shows its message under the bar. |
|
|
140
140
|
| `<slicc-file-view>` | One file (`path`), highlighted, with its pending change and a link to the diff. |
|
|
141
|
-
| `<slicc-changes>` | Pending changes with their author. Opens the diff, accepts or reverts one change or all of them. Changes with a `repo` show their folder relative to it, and no author when `agentId` is `null`;
|
|
141
|
+
| `<slicc-changes>` | Pending changes with their author. Opens the diff, accepts or reverts one change or all of them. Changes with a `repo` show their folder relative to it, and no author when `agentId` is `null`; they group under a header per repository (its path and count), even when there is only one, in the order the port returns them. In a diff panel narrower than 480 px, Accept and Revert (`data-action="accept"`, `data-action="revert"`) show only their icons. Revert and Revert all ask with a destructive confirm that says the uncommitted (or, without a repo, pending) changes can't be undone; a failed revert shows its message under the bar. When the port's `unavailable()` returns a string, the panel shows it instead of the list, with each `backtick` span as inline code in the text's color and, below, each command once with a **Copy** button (`data-command`, `data-action="copy-command"`). |
|
|
142
142
|
| `<slicc-diff-panel>` | The diff of one pending change (`path`), unified or split, with accept and revert. A change with `before` and `after` both `null` (a binary file, or text over 1 MB) shows “No diff for this file” and Open the file instead, and keeps Accept and Revert. |
|
|
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. An account whose status is `signing-in` (or a non-API-key account while its `connect` is pending) reads “Signing in…”; when the port has `cancel(id)`, its row offers Cancel (`data-action="cancel-sign-in"`), and the rejected `connect` that follows shows no error. |
|
|
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 header's update status; new failures reopen the panel. Also available through View and the rails. |
|
|
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 header's update status; new failures reopen the panel, and after a reload into a boot that isn't ready yet such a panel closes once the agent is ready. Every automatic close is saved to the layout. Also available through View and the rails. |
|
|
147
147
|
| `<slicc-memory>` | What agents remember, per scope (everyone, a cone or a role), grouped by section: search, filter by tag, expand, edit, add and forget. Free text outside an entry shows “From MEMORY.md”. |
|
|
148
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). |
|
|
149
149
|
| `<slicc-freezer>` | Frozen cones, archived with their scoops, and the chats New chat put away: thaw to bring one back, delete, or freeze the active cone (also `/freeze`). |
|
package/dist/slicc-ui.js
CHANGED
|
@@ -15145,12 +15145,14 @@ var SliccApp = class extends ThemedElement {
|
|
|
15145
15145
|
const restored = this.dock.api.getPanel("updates");
|
|
15146
15146
|
if (restored) this.dock.reveal("updates");
|
|
15147
15147
|
else this.show("updates");
|
|
15148
|
-
|
|
15149
|
-
|
|
15150
|
-
|
|
15151
|
-
}
|
|
15148
|
+
const panel = this.dock.api.getPanel("updates");
|
|
15149
|
+
if (!port.ready() && restored?.params?.boot !== false)
|
|
15150
|
+
panel?.api.updateParameters({ boot: true });
|
|
15151
|
+
else if (!restored) panel?.api.updateParameters({ boot: void 0 });
|
|
15152
|
+
this.#save();
|
|
15152
15153
|
} else if (this.dock.api.getPanel("updates")?.params?.boot && port.ready() && !port.list().some((item2) => item2.state === "failed")) {
|
|
15153
15154
|
this.dock.close("updates");
|
|
15155
|
+
this.#save();
|
|
15154
15156
|
}
|
|
15155
15157
|
}
|
|
15156
15158
|
#factories(model) {
|
|
@@ -16874,6 +16876,20 @@ var SliccChanges = class extends ModelElement {
|
|
|
16874
16876
|
min-width: 0;
|
|
16875
16877
|
user-select: all;
|
|
16876
16878
|
}
|
|
16879
|
+
p code {
|
|
16880
|
+
display: inline-block;
|
|
16881
|
+
max-inline-size: 100%;
|
|
16882
|
+
font-size: var(--swc-font-size-50);
|
|
16883
|
+
color: inherit;
|
|
16884
|
+
}
|
|
16885
|
+
.summary {
|
|
16886
|
+
min-width: 0;
|
|
16887
|
+
overflow: hidden;
|
|
16888
|
+
text-overflow: ellipsis;
|
|
16889
|
+
}
|
|
16890
|
+
.bar swc-action-button {
|
|
16891
|
+
flex: none;
|
|
16892
|
+
}
|
|
16877
16893
|
.repo {
|
|
16878
16894
|
display: flex;
|
|
16879
16895
|
gap: var(--swc-spacing-100);
|
|
@@ -17022,7 +17038,7 @@ var SliccChanges = class extends ModelElement {
|
|
|
17022
17038
|
}
|
|
17023
17039
|
#list(changes) {
|
|
17024
17040
|
const grouped = groups(changes);
|
|
17025
|
-
if (grouped.length
|
|
17041
|
+
if (grouped.length === 1 && !grouped[0][0])
|
|
17026
17042
|
return b`<ul aria-label="Pending changes" @keydown=${this.#keydown}>${changes.map((change) => this.#row(change))}</ul>`;
|
|
17027
17043
|
return b`<ul aria-label="Pending changes" @keydown=${this.#keydown}>${grouped.map(
|
|
17028
17044
|
([repo, items]) => b`<li data-repo=${repo}>
|
|
@@ -17065,7 +17081,7 @@ var SliccChanges = class extends ModelElement {
|
|
|
17065
17081
|
if (unavailable) return this.#unavailable(unavailable);
|
|
17066
17082
|
const changes = port?.changes() ?? [];
|
|
17067
17083
|
return b`<div class="bar">
|
|
17068
|
-
<span>${changes.length} pending ${changes.length === 1 ? "change" : "changes"}</span>
|
|
17084
|
+
<span class="summary">${changes.length} pending ${changes.length === 1 ? "change" : "changes"}</span>
|
|
17069
17085
|
<span class="spacer"></span>
|
|
17070
17086
|
${changes.length ? b`<swc-action-button size="s" quiet @click=${() => this.#all("accept")}>Accept all</swc-action-button>
|
|
17071
17087
|
<swc-action-button size="s" quiet @click=${() => this.#all("revert")}>Revert all</swc-action-button>` : A}
|
|
@@ -17090,9 +17106,26 @@ var SliccDiffPanel = class extends ThemedElement {
|
|
|
17090
17106
|
flex: 1;
|
|
17091
17107
|
min-height: 0;
|
|
17092
17108
|
}
|
|
17093
|
-
|
|
17109
|
+
:host {
|
|
17110
|
+
container-type: inline-size;
|
|
17111
|
+
}
|
|
17112
|
+
swc-action-group,
|
|
17113
|
+
.bar swc-action-button {
|
|
17094
17114
|
flex: none;
|
|
17095
17115
|
}
|
|
17116
|
+
.bar .path {
|
|
17117
|
+
min-width: 0;
|
|
17118
|
+
}
|
|
17119
|
+
@container (width < 480px) {
|
|
17120
|
+
.bar .label {
|
|
17121
|
+
position: absolute;
|
|
17122
|
+
inline-size: 1px;
|
|
17123
|
+
block-size: 1px;
|
|
17124
|
+
overflow: hidden;
|
|
17125
|
+
clip-path: inset(50%);
|
|
17126
|
+
white-space: nowrap;
|
|
17127
|
+
}
|
|
17128
|
+
}
|
|
17096
17129
|
swc-action-button.selected {
|
|
17097
17130
|
--swc-action-button-background-color-default: var(--swc-neutral-background-color-selected-default);
|
|
17098
17131
|
--swc-action-button-background-color-hover: var(--swc-neutral-background-color-selected-hover);
|
|
@@ -17146,7 +17179,7 @@ var SliccDiffPanel = class extends ThemedElement {
|
|
|
17146
17179
|
return b`<div class="bar">
|
|
17147
17180
|
${statusMark(change.status, false)}
|
|
17148
17181
|
<span class="path" title=${this.path}>${this.path}</span>
|
|
17149
|
-
<span>${statusLabels[change.status]}${by ? ` by ${by}` : ""}</span>
|
|
17182
|
+
<span class="label">${statusLabels[change.status]}${by ? ` by ${by}` : ""}</span>
|
|
17150
17183
|
<span class="spacer"></span>
|
|
17151
17184
|
${change.before === null && change.after === null ? A : b`<swc-action-group size="s" compact accessible-label="Diff layout">
|
|
17152
17185
|
${layouts.map(
|
|
@@ -17159,11 +17192,11 @@ var SliccDiffPanel = class extends ThemedElement {
|
|
|
17159
17192
|
>`
|
|
17160
17193
|
)}
|
|
17161
17194
|
</swc-action-group>`}
|
|
17162
|
-
<swc-action-button size="s" quiet @click=${() => port?.accept(this.path)}>
|
|
17163
|
-
<swc-icon-checkmark slot="icon"></swc-icon-checkmark>Accept
|
|
17195
|
+
<swc-action-button size="s" quiet data-action="accept" accessible-label="Accept" title="Accept" @click=${() => port?.accept(this.path)}>
|
|
17196
|
+
<swc-icon-checkmark slot="icon"></swc-icon-checkmark><span class="label">Accept</span>
|
|
17164
17197
|
</swc-action-button>
|
|
17165
|
-
<swc-action-button size="s" quiet @click=${() => this.#revert(port, change)}>
|
|
17166
|
-
<swc-icon-revert slot="icon"></swc-icon-revert>Revert
|
|
17198
|
+
<swc-action-button size="s" quiet data-action="revert" accessible-label="Revert" title="Revert" @click=${() => this.#revert(port, change)}>
|
|
17199
|
+
<swc-icon-revert slot="icon"></swc-icon-revert><span class="label">Revert</span>
|
|
17167
17200
|
</swc-action-button>
|
|
17168
17201
|
</div>
|
|
17169
17202
|
${errorLine(this.error)}
|