@ai-ecoverse/slicc-spectrum 1.47.4 → 1.48.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/dist/slicc-ui.js CHANGED
@@ -10862,11 +10862,25 @@ var routes = {
10862
10862
  var automation = {
10863
10863
  extension: "Browser automation: through the SLICC extension.",
10864
10864
  proxy: "Browser automation: through slicc-node.",
10865
+ link: "Browser automation: through a linked device.",
10865
10866
  none: "Browser automation: not available. Install the extension or run slicc-node."
10866
10867
  };
10867
10868
  function automationOf(browser) {
10868
10869
  return browser.via ?? "none";
10869
10870
  }
10871
+ function browserLine(browser, links) {
10872
+ const via = automationOf(browser);
10873
+ if (via !== "link") return automation[via];
10874
+ const connected = (links?.devices ?? []).filter((device) => device.state === "connected");
10875
+ const found = connected.flatMap(
10876
+ (device) => (device.browsers ?? []).map((item2) => ({ name: item2.name, device: device.name }))
10877
+ );
10878
+ if (found.length === 1)
10879
+ return `Browser automation: through ${found[0].name} on the linked device ${found[0].device}.`;
10880
+ if (found.length > 1)
10881
+ return `Browser automation: through ${found.length} browsers on linked devices.`;
10882
+ return automation.link;
10883
+ }
10870
10884
  var tailnetStates = {
10871
10885
  off: ["neutral", "Off"],
10872
10886
  loading: ["info", "Loading"],
@@ -11139,7 +11153,8 @@ var SliccNetwork = class extends ModelElement {
11139
11153
  color: var(--swc-neutral-subdued-content-color-default);
11140
11154
  overflow-wrap: anywhere;
11141
11155
  }
11142
- .where code {
11156
+ .where code,
11157
+ [data-browsers] code {
11143
11158
  font-family: var(--swc-code-font-family-stack);
11144
11159
  }
11145
11160
  .key {
@@ -11423,6 +11438,7 @@ var SliccNetwork = class extends ModelElement {
11423
11438
  ${port.unlink ? b`<swc-button size="s" variant="secondary" fill-style="outline" data-action="unlink" ?pending=${this.busy === action} ?disabled=${this.#waiting(action)} @click=${() => this.#unlink(port, status2, device)}>Unlink</swc-button>` : A}
11424
11439
  <span class="where"><code>${device.host}</code><span><code>${device.address}</code> · ${device.mode === "local" ? "This computer" : "Remote"}</span></span>
11425
11440
  ${device.policy ? b`<span class="muted" data-policy>Reaches ${device.policy}.</span>` : A}
11441
+ ${device.browsers?.length ? b`<span class="muted" data-browsers>${device.browsers.length === 1 ? "Browser" : "Browsers"}: ${device.browsers.map((item2, index) => b`${index ? ", " : ""}${item2.name} (<code>${item2.runtime}</code>)`)}</span>` : A}
11426
11442
  ${device.offers.includes("ssh") ? b`<div class="command" data-copy="ssh"><code>ssh ${device.host}</code>${this.#copyButton(`ssh:${device.id}`, "ssh", "ssh command", `ssh ${device.host}`, "linksError")}</div>` : A}
11427
11443
  </li>`;
11428
11444
  }
@@ -11506,7 +11522,7 @@ var SliccNetwork = class extends ModelElement {
11506
11522
  <p data-route=${routeOf(status2) ?? "none"}>${routeLine(status2)}</p>
11507
11523
  ${status2.detail ? b`<p class="detail">${status2.detail}</p>` : A}
11508
11524
  ${this.#exitPicker(port, status2)}
11509
- ${status2.browser ? b`<p data-browser=${automationOf(status2.browser)}>${automation[automationOf(status2.browser)]}${status2.browser.detail ? b` <span class="detail">${status2.browser.detail}</span>` : A}</p>` : A}
11525
+ ${status2.browser ? b`<p data-browser=${automationOf(status2.browser)}>${browserLine(status2.browser, status2.links)}${status2.browser.detail ? b` <span class="detail">${status2.browser.detail}</span>` : A}</p>` : A}
11510
11526
  ${port.check ? b`<div class="actions"><swc-button size="m" variant="secondary" data-action="check" ?pending=${this.checking} @click=${() => this.check()}>Check again</swc-button></div>` : A}
11511
11527
  ${this.error ? b`<div class="error" role="alert"><swc-icon-alert-triangle size="s" aria-hidden="true"></swc-icon-alert-triangle><span>${this.error}</span></div>` : A}
11512
11528
  </section>`;