@ai-ecoverse/slicc-bios 1.52.2 → 1.53.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
|
@@ -399,7 +399,15 @@ Programs in the kernel drive a browser over the Chrome DevTools Protocol: `playw
|
|
|
399
399
|
|
|
400
400
|
1. **[slicc-extension](https://github.com/ai-ecoverse/slicc-extension):** browser automation through the extension requires **7.10.0 or later**. When a supported extension defines `sliccExtension.cdp`, its `chrome.debugger` bridge drives the Chrome that seven runs in. Every program connection shares the page's one extension port. The hook gives each connection only the answers to its own commands and the events of the sessions it attached, and on close it detaches every session the connection attached.
|
|
401
401
|
|
|
402
|
-
2. **The browser's own DevTools port:** a browser can offer a page of an origin it allows a CDP endpoint, as `crestDevTools.webSocketDebuggerUrl` (Crest does, on iOS and the Mac), and announce it with the `crestdevtools` event when it arrives after the page started. Seven reads the endpoint each time it connects, because it changes when the port reopens, and opens one socket per program connection, with flat sessions. It says `Slicc.action` first, which tells the browser this client dispatches its own input when none lands, so nothing is delivered twice. A port whose pages can't report child frames answers `Target.setAutoAttach` with *not found*. Seven passes that to the guard as the extension's refusal, so a page whose iframe the port reports stays locked for paint, DOM and input, and a page without one works.
|
|
402
|
+
2. **The browser's own DevTools port:** a browser can offer a page of an origin it allows a CDP endpoint, as `crestDevTools.webSocketDebuggerUrl` (Crest does, on iOS and the Mac), and announce it with the `crestdevtools` event when it arrives after the page started. Seven reads the endpoint each time it connects, because it changes when the port reopens, and opens one socket per program connection, with flat sessions. It says `Slicc.action` first, which tells the browser this client dispatches its own input when none lands, so nothing is delivered twice. A port whose pages can't report child frames answers `Target.setAutoAttach` with *not found*. Seven passes that to the guard as the extension's refusal, so a page whose iframe the port reports stays locked for paint, DOM and input, and a page without one works.
|
|
403
|
+
|
|
404
|
+
A browser can vouch for more. When `Fetch.enable` answers `holdsDocuments: true`, it promises that every document in any frame waits for an answer, and that nothing reaches into a child frame (Crest lists the promises in `DevToolsPort.md`). Then a child frame doesn't lock a page by being there, as long as every frame listed, one in a closed shadow root included, has an `http:` or `https:` address the guard doesn't protect, or is `about:blank` or `about:srcdoc`, same-origin or not. The guard reads the frame tree again at each paint, DOM or input command, so a frame that moved can't slip through, and a tree it can't read refuses the command. A protected frame refuses the tab. `blob:`, `data:` and a frame with no address keep the lock, because their origin isn't known. Without that answer nothing changes, so Chrome's path is the same.
|
|
405
|
+
|
|
406
|
+
**Known limits on such a browser:**
|
|
407
|
+
- A screenshot or PDF gives the program what the page renders, including third-party iframes and what a page wrote into a blank frame. Crest answers `Page.printToPDF` with a native WebKit PDF, so that can include text and links, not only an image. This is accepted.
|
|
408
|
+
- **A frame the browser doesn't list is invisible to the guard.** Crest records a frame's address from when its port opens, so a page already loaded by then can hide a frame nested inside a cross-origin frame until it reloads. A protected document nested that way, if it can be framed, can be captured as rendered screenshot and PDF content, potentially with PDF text and links. Its DOM, cookies, storage and vault keys stay out of reach. Protected origins include `sliccy.ai` and every subdomain, so the `www.sliccy.ai` homepage, `sliccy.ai`, `www.sliccy.ai/auth/callback`, a guarded sign-in page and a signed-in SLICC 6 page that can be framed are all in scope. Seven and the vault are out of scope only because they send `frame-ancestors`, which refuses ordinary sites: the hosting holds that line, not the guard. This is accepted.
|
|
409
|
+
|
|
410
|
+
Such a browser also leaves seven's own pages out of its listing and refuses navigation into them. The guard still runs on every connection, so the rules below hold whatever the browser does.
|
|
403
411
|
|
|
404
412
|
An older extension, or one that cannot report a supported release version, refuses browser automation with `slicc: refused: Update slicc-extension to use browser automation in seven. Reload this tab after updating.` Fetch and sign-in remain available.
|
|
405
413
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ai-ecoverse/slicc-bios",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.53.0",
|
|
4
4
|
"description": "Slim loader that boots SLICC into OPFS and serves the UI from there",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -49,12 +49,12 @@
|
|
|
49
49
|
"format": "biome check --write ."
|
|
50
50
|
},
|
|
51
51
|
"devDependencies": {
|
|
52
|
-
"@ai-ecoverse/slicc": "1.
|
|
52
|
+
"@ai-ecoverse/slicc": "1.50.2",
|
|
53
53
|
"@ai-ecoverse/slicc-browsers": "1.18.21",
|
|
54
54
|
"@ai-ecoverse/slicc-cdp": "1.44.1",
|
|
55
55
|
"@ai-ecoverse/slicc-kernel": "1.172.2",
|
|
56
56
|
"@ai-ecoverse/slicc-shared-web": "2.13.7",
|
|
57
|
-
"@ai-ecoverse/slicc-spectrum": "1.108.
|
|
57
|
+
"@ai-ecoverse/slicc-spectrum": "1.108.3",
|
|
58
58
|
"@ai-ecoverse/slicc-vault": "1.20.0",
|
|
59
59
|
"@biomejs/biome": "2.6.3",
|
|
60
60
|
"aws4fetch": "1.0.20",
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
"@ai-ecoverse/slicc-browsers": "1.18.21",
|
|
11
11
|
"@ai-ecoverse/slicc-capture": "1.4.1",
|
|
12
12
|
"@ai-ecoverse/slicc-kernel": "1.172.2",
|
|
13
|
-
"@ai-ecoverse/slicc-spectrum": "1.108.
|
|
13
|
+
"@ai-ecoverse/slicc-spectrum": "1.108.3",
|
|
14
14
|
"@ai-ecoverse/wasi-fnox": "1.42.0-1",
|
|
15
15
|
"@ai-ecoverse/wasi-pnpm": "12.9.1-21",
|
|
16
16
|
"@ai-ecoverse/wasm-bash": "5.3.0-23",
|
|
@@ -146,9 +146,9 @@
|
|
|
146
146
|
}
|
|
147
147
|
},
|
|
148
148
|
"node_modules/@ai-ecoverse/slicc-spectrum": {
|
|
149
|
-
"version": "1.108.
|
|
150
|
-
"resolved": "https://registry.npmjs.org/@ai-ecoverse/slicc-spectrum/-/slicc-spectrum-1.108.
|
|
151
|
-
"integrity": "sha512-
|
|
149
|
+
"version": "1.108.3",
|
|
150
|
+
"resolved": "https://registry.npmjs.org/@ai-ecoverse/slicc-spectrum/-/slicc-spectrum-1.108.3.tgz",
|
|
151
|
+
"integrity": "sha512-djAMfBFCbb2d6UcRa4jwDDdq6ZQ7HWWw3aAFoak6OSDeu6C+eAdzbXAAzfOOkWw21REHdjVv2MMoIEdYTJDwCA==",
|
|
152
152
|
"license": "Apache-2.0",
|
|
153
153
|
"engines": {
|
|
154
154
|
"node": ">=24"
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
"@ai-ecoverse/slicc-browsers": "1.18.21",
|
|
8
8
|
"@ai-ecoverse/slicc-capture": "1.4.1",
|
|
9
9
|
"@ai-ecoverse/slicc-kernel": "1.172.2",
|
|
10
|
-
"@ai-ecoverse/slicc-spectrum": "1.108.
|
|
10
|
+
"@ai-ecoverse/slicc-spectrum": "1.108.3",
|
|
11
11
|
"@ai-ecoverse/wasi-fnox": "1.42.0-1",
|
|
12
12
|
"@ai-ecoverse/wasi-pnpm": "12.9.1-21",
|
|
13
13
|
"@ai-ecoverse/wasm-bash": "5.3.0-23",
|
|
@@ -21,8 +21,8 @@ importers:
|
|
|
21
21
|
specifier: 1.172.2
|
|
22
22
|
version: 1.172.2
|
|
23
23
|
'@ai-ecoverse/slicc-spectrum':
|
|
24
|
-
specifier: 1.108.
|
|
25
|
-
version: 1.108.
|
|
24
|
+
specifier: 1.108.3
|
|
25
|
+
version: 1.108.3
|
|
26
26
|
'@ai-ecoverse/wasi-fnox':
|
|
27
27
|
specifier: 1.42.0-1
|
|
28
28
|
version: 1.42.0-1
|
|
@@ -105,8 +105,8 @@ packages:
|
|
|
105
105
|
webgpu:
|
|
106
106
|
optional: true
|
|
107
107
|
|
|
108
|
-
'@ai-ecoverse/slicc-spectrum@1.108.
|
|
109
|
-
resolution: {integrity: sha512-
|
|
108
|
+
'@ai-ecoverse/slicc-spectrum@1.108.3':
|
|
109
|
+
resolution: {integrity: sha512-djAMfBFCbb2d6UcRa4jwDDdq6ZQ7HWWw3aAFoak6OSDeu6C+eAdzbXAAzfOOkWw21REHdjVv2MMoIEdYTJDwCA==}
|
|
110
110
|
engines: {node: '>=24'}
|
|
111
111
|
|
|
112
112
|
'@ai-ecoverse/wasi-fnox@1.42.0-1':
|
|
@@ -270,7 +270,7 @@ snapshots:
|
|
|
270
270
|
- utf-8-validate
|
|
271
271
|
optional: true
|
|
272
272
|
|
|
273
|
-
'@ai-ecoverse/slicc-spectrum@1.108.
|
|
273
|
+
'@ai-ecoverse/slicc-spectrum@1.108.3': {}
|
|
274
274
|
|
|
275
275
|
'@ai-ecoverse/wasi-fnox@1.42.0-1': {}
|
|
276
276
|
|