@ai-ecoverse/slicc-bios 1.41.3 → 1.41.4
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 +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -408,7 +408,7 @@ seven can also join a tailnet, with a patched build of Tailscale's wasm client (
|
|
|
408
408
|
|
|
409
409
|
The Network panel's status says the same: while a linked device carries the traffic, `route` is `'link'`, next to `exit: { kind: 'link', id }`, and that device's `mode` tells local from remote. A Tailscale exit node reads `'tailnet'`, as before.
|
|
410
410
|
|
|
411
|
-
`traits` is read fresh each time, and every change to the exits (a link coming up or going, the tray, Tailscale, a new choice) calls `kernel.updateTransportTraits()` (slicc-kernel ≥ 1.80.0), so connected clients such as the agent get the new value through `onTraits`. Routing never depends on it: every request still goes through the router. With `globalThis.sliccKernelDebug` set by an init script, `globalThis.sliccKernelClient()` attaches a kernel client, as the integration test does.
|
|
411
|
+
`traits` is read fresh each time, and every change to the exits (a link coming up or going, the tray, Tailscale, a new choice) calls `kernel.updateTransportTraits()` (slicc-kernel ≥ 1.80.0), so connected clients such as the agent get the new value through `onTraits`. Routing never depends on it: every request still goes through the router. With `globalThis.sliccKernelDebug` set by an init script, `globalThis.sliccKernelClient()` attaches a kernel client, as the integration test does. The same flag adds `globalThis.sliccLinkedBrowsers()`, which lists each linked CLI's browsers; an entry's `open()` returns a raw, unguarded browser-level CDP connection to that browser, so a caller wraps it in `guardProtected` itself, as the guard set's link route does. Neither exists without the flag.
|
|
412
412
|
- **The host machine:** the kernel sends `host.slicc.internal:<port>` to the transport as `127.0.0.1:<port>`, and that goes to the CLI linked on this computer (its `http` streams, under its policy), so a dev server on the host is reachable without CORS or Chrome's Local Network Access prompt. This holds even under Directly, since it isn't internet traffic. A remote device's loopback is never used for it, and without a local CLI it stays on the page's transport.
|
|
413
413
|
- **WebSockets (`ws`):** a program's WebSocket (the kernel proxy's `Upgrade: websocket`, or `ctx.websocket`) goes to the exit that would carry that host's HTTP. A linked CLI with cap `ws` carries it as `OPEN { kind: 'ws', url, protocols, headers }` (`os/link-ws.js`). The Tailscale exit carries it too, for tailnet names and addresses and, with an exit node in use, for public hosts: `os/tailscale.js` asks the worker for wasm-tailscale's `ipn.websocket()` (Go's WebSocket over the tailnet, so no browser cookies), over a `MessagePort` of its own per socket, and the transport's traits name `ws` in the tailnet exit's caps. The same limits, close codes and placeholder refusal apply. The handshake gets 30 s (the stored setting's `handshakeMs` changes it, for tests); after that, or when the program goes away first, the page aborts the worker's `AbortSignal` and the program sees `502`.
|
|
414
414
|
- **The handshake:** the CLI dials it under its policy, with the system's TLS roots. OPENED answers `{ protocol }` with the subprotocol the far end chose, and a refusal is a RESET, which the program sees as `502`.
|