@ai-ecoverse/slicc-spectrum 1.84.1 → 1.85.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 CHANGED
@@ -436,7 +436,7 @@ Opens at boot until the agent is ready without failures.
436
436
  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.
437
437
  Every automatic close is saved to the layout.
438
438
  When the port offers packages, an Optional packages section lists them below as compact rows, each with its state, version, download size, requirements, commands, progress, errors and Install log; packages never count in the header or keep the panel open at boot.
439
- Packages the user added or pinned with pnpm show up in their own Your packages section below it, with a neutral Pinned light (a hold, not a success) or a positive Added light, their version against seven's, and Unpin or Remove.
439
+ Packages the user added with pnpm in `/opt/user`, or pinned, show up in their own Your packages section below it, under "Packages you added with pnpm in /opt/user. Seven’s updates keep them until you remove them." (plus "Pinned versions stay until you unpin them." while a row offers `unpin`), with a neutral Pinned light (a hold, not a success) or a positive Added light, their version against seven's, and Unpin or Remove.
440
440
  Also available through View and the rails.
441
441
 
442
442
  #### `<slicc-memory>`
@@ -747,8 +747,8 @@ A `failed` row with an installed `from` version reads "Update failed".
747
747
  Missing ports preserve existing adapters and report disconnected information in the panel.
748
748
  Optional `packages()` returns `PackageItem` rows for optional tools, each with a short catalog `id`, its npm `package` (shown in the name's tooltip and at the top of its Install log), `label`, a one-sentence `description`, the `commands` it provides, `requires` (other package ids, read as "Uses Python" while it's installed, or "Installs Python too" on a row that isn't installed yet; an installed row leaves out a requirement that isn't installed, since its warning says so), optional `notes` (short plain-text lines shown muted under the row, such as "1 untested dependency: …"; leave it out when there's nothing to say), optional `warnings` (lines with an alert icon, `data-warnings`, such as "Needs Python, which isn't installed.
749
749
  Install Python again to use it."; the dummy adds that one when a required package is removed), `state` (`available`, `queued`, `installing`, `installed`, `outdated`, `updating`, `removing` or `failed`), the installed `version`, the `offered` version and its `size` in bytes, `progress` counted in packages (or `null` for an indeterminate bar), `error`, `actions` (`install`, `update`, `remove`, `retry`, `unpin`) and an optional `log`.
750
- A row with `origin: 'user'` (ids such as `user:agent:<name>`) goes into Your packages, `section[data-section="user-packages"]`, which only shows when there is one; its `pin` holds `base` (the version seven ships, or `null` for a package seven doesn't ship), the user's `range` and the `project` folder, such as `/opt/agent`.
751
- An installed pin reads "Pinned" with `0.24.0 · seven ships 0.25.0 · in /opt/agent` ("the version seven ships" when they match), and an addition reads "Added" with `^1.2.0 → 1.2.4 · in /opt/agent`; `.meta[data-pin]` is `pinned` or `added`.
750
+ A row with `origin: 'user'` (ids such as `user:user:<name>`) goes into Your packages, `section[data-section="user-packages"]`, which only shows when there is one; its `pin` holds `base` (the version seven ships, or `null` for a package seven doesn't ship), the user's `range` and the `project` folder, such as `/opt/user`.
751
+ An installed pin reads "Pinned" with `0.24.0 · seven ships 0.25.0 · in /opt/agent` ("the version seven ships" when they match), and an addition reads "Added" with `^1.2.0 → 1.2.4 · in /opt/user`; `.meta[data-pin]` is `pinned` or `added`.
752
752
  A pin that is `removing` reads "Unpinning"; other states keep their usual lights.
753
753
  Offer `unpin` for pins and `remove` for additions.
754
754
  Emit `packages` whenever they change.
@@ -877,7 +877,9 @@ The guest's model lists only the cone, its `messages()` are the cone's transcrip
877
877
 
878
878
  Later backed by: BIOS.
879
879
  Only on a follower page, a SLICC that shows another SLICC's agent over a link.
880
- `state()` returns the `FollowState`: `owner` (its display name), `link` (`connecting` for the first connection, `connected`, `reconnecting` after a connection dropped, `unlinked` when the owner unlinked this device, or `failed`), `access` (`{ view, control, terminal }`, what the owner allows this device), an optional `name` (this device's name on the owner, for the waiting page) and an optional `error` (shown when `failed`).
880
+ `state()` returns the `FollowState`: `owner` (its display name), `link` (`connecting` for the first connection, `connected`, `reconnecting` after a connection dropped, `unlinked` when the owner unlinked this device, or `failed`), `access` (`{ view, control, terminal }`, what the owner allows this device), an optional `name` (this device's name on the owner, for the waiting page), an optional `error` (shown when `failed`) and an optional `refused`.
881
+ `refused` is the agent's sentence while the owner's agent won't take this device, such as another agent version; clear it once a follow session connects.
882
+ While it's set and `link` is `connected`, the follow light is neutral and reads "Can’t follow {owner}", its popover shows `refused`, the chat has no watch-only note for it (the embedder shows the warning; an agent port's own `readOnly` sentence still shows), and the page stays read-only with terminals off, even with Control.
881
883
  Emit `follow` when it changes.
882
884
  Connected without `view` means waiting to be allowed.
883
885
  `leave()` forgets the link and the optional `retry()` tries again from `failed`.
@@ -912,7 +914,7 @@ Like bios, `actions()` keeps the latest 500 per tab from the last 24 hours, 5,00
912
914
  `createDummyModel({ tabs: 'owner' | 'follower' | 'connecting' | 'stalled' | 'newer' | 'older' | 'alone' | 'off' })` (or `?tabs=` on `/ui/`, off by default) adds a tabs port in that state; `model.tabs.setScenario()` switches it, and Reload connects again and becomes a follower after a short wait.
913
915
  `tabsFixtures` and `DummyTabs` are exported from `/dummy`.
914
916
 
915
- `createDummyModel({ follow: 'connecting' | 'waiting' | 'watch' | 'control' | 'full' | 'reconnecting' | 'unlinked' | 'failed' })` (`?follow=` on `/ui/`, which then leaves out the network port and offers only agents, chat, terminal and settings) makes the page a follower of SLICC on quay-studio: connecting, waiting to be allowed, View only, View and Control, everything, reconnecting, unlinked, or failed, where Try again connects with everything allowed.
917
+ `createDummyModel({ follow: 'connecting' | 'waiting' | 'watch' | 'control' | 'full' | 'reconnecting' | 'unlinked' | 'failed' | 'refused' })` (`?follow=` on `/ui/`, which then leaves out the network port and offers only agents, chat, terminal and settings) makes the page a follower of SLICC on quay-studio: connecting, waiting to be allowed, View only, View and Control, everything, reconnecting, unlinked, failed, where Try again connects with everything allowed, or refused, with everything allowed but another agent version.
916
918
  Leave counts in `model.follow.left` (the `/ui/` page then drops `?follow=`), and `model.follow.setScenario()` switches it.
917
919
  `followFixtures` and `DummyFollow` are exported from `/dummy`.
918
920
  `?links=followers` lists quay-studio (a CLI on this computer, Control always allowed), pier-nuc (a remote CLI, prompting), bay-laptop (a follower with everything allowed, watching, a terminal open), reef-phone (View only, watching) and tide-tablet (asking to follow); every links scenario has a follow link.
@@ -477,6 +477,13 @@ function followFixtures(scenario) {
477
477
  access: none,
478
478
  error: `Couldn\u2019t reach ${owner}. It may be closed or offline.`
479
479
  };
480
+ if (scenario === "refused")
481
+ return {
482
+ ...base,
483
+ link: "connected",
484
+ access: full,
485
+ refused: "That SLICC runs another version of the agent, so this tab can\u2019t follow it. Update both SLICCs, then reload this page."
486
+ };
480
487
  return { ...base, link: "connected", access: full };
481
488
  }
482
489
  var DummyFollow = class extends Emitter {
@@ -6225,7 +6232,7 @@ var userPackages = () => [
6225
6232
  range: "0.24.0"
6226
6233
  }),
6227
6234
  yours(
6228
- "agent",
6235
+ "user",
6229
6236
  "@harbor/tide-math",
6230
6237
  "Tide tables and harmonic constants.",
6231
6238
  "1.2.4",