@ai-ecoverse/slicc-bios 1.44.5 → 1.44.6

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
@@ -372,7 +372,7 @@ Programs in the kernel drive a browser over the Chrome DevTools Protocol: `playw
372
372
  **Sign-in tabs are held for life (#754).** A sign-in popup shows its token or code in its URL and on the IdP's pages, and the guard can't scrub a page's own content. So the owner tab holds every sign-in tab from the moment it opens. A held tab is never listed, attached, auto-attached or reported to a program on any origin, until it closes. Its events, `urlFragment` included, never reach the program.
373
373
  - **Seven's own sign-in:** the popup opens on `about:blank#slicc-sign-in-<nonce>`. bios asks the owner over the `slicc-held` BroadcastChannel to hold it. The owner finds that target by its marker URL on each browser host, the extension and slicc-node, holds it, and only then is the popup sent to the IdP. The owner answers `held` once it has held the tab on every listed host, `none` when no host is listed, and `unheld` otherwise, including when a listed host can't be opened. On `unheld`, on `none` while bios sees a host, or on no answer within 6 s while a host is connected, the sign-in stops before the IdP and says so; it never goes on unheld. On `none`, the sign-in goes on, and the owner keeps it as in flight for 11 minutes (in `localStorage`, `slicc-os.sign-in-flight`, so a reload keeps it). Before any program gets a browser connection, the owner sweeps every host: it holds sign-in tabs still on `about:blank`, and while a sign-in is in flight, every page a protected page opened. So a host that connects in the middle of a sign-in never sees its tab.
374
374
  - **The guard decides by itself, too:** a page that a held tab opened is held, on any URL, and so are its own popups in turn, and so are the frames and workers of a held tab (`parentId`). A page seven (or another protected page) opened with opener access (`canAccessOpener`), or that is still on `about:blank`, is held the first time any guard sees it.
375
- - **Other sign-in tabs:** a watcher in the owner tab holds every page that a protected page (seven or the vault) opened and that is still on `about:blank`, and a popup that a held tab opens, such as the IdP's own. **Through slicc-node** it connects when the owner boots and takes target events, so it holds an unmarked popup from its creation, before any program has connected. **Through slicc-extension** it only polls every 250 ms once a program or a sign-in needs the browser, and the extension reports no opener access, so only marked popups are held reliably there: an unmarked popup that leaves `about:blank` before the next poll can be missed, and a program could then list it, URL and fragment included (a known gap). Seven's own Adobe sign-in carries the marker. The agent's MCP OAuth and device-code popups carry it only from the slicc-agent release with #550, which isn't pinned yet.
375
+ - **Other sign-in tabs:** a watcher in the owner tab holds every page that a protected page (seven or the vault) opened and that is still on `about:blank`, and a popup that a held tab opens, such as the IdP's own. **Through slicc-node** it connects when the owner boots and takes target events, so it holds an unmarked popup from its creation, before any program has connected. **Through slicc-extension** it only polls every 250 ms once a program or a sign-in needs the browser, and the extension reports no opener access, so only marked popups are held reliably there: an unmarked popup that leaves `about:blank` before the next poll can be missed, and a program could then list it, URL and fragment included (a known gap). Seven's own Adobe sign-in carries the marker. The agent's MCP OAuth and device-code popups carry it from slicc-agent 6.19.15 (#550), which seven pins: they ask on `slicc-held` and navigate only on `held` or `none`, so on both hosts they are held before they leave `about:blank`, and with no holder answering the agent's sign-in fails.
376
376
  - **Kept:** held tab ids are kept in `localStorage` (`slicc-os.held-targets`, the 32 most recently held or seen again), so a reload of the owner keeps them.
377
377
  - **The watcher's connections:** on slicc-extension it connects only once a program or a sign-in needs the browser. On slicc-node it connects when the owner boots, so an owner boot takes slicc-node's browser from another page driving it through the same slicc-node (a known, functional only). If another page then takes it back, the watcher doesn't fight it, and reconnects when the next program connects. Before any program gets a browser connection, the owner sweeps every host; if that listing fails, the program gets no connection, and no host connection is opened for it.
378
378
  - **A tab only lent seven's protection** is one that seven opened with no opener access, or that inherited it only from about:blank. It becomes drivable once it commits an ordinary `http:`, `https:` or `data:` page, whether the program saw it at creation or later. Real protected origins stay protected for life, a `blob:` of seven's origin included.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ai-ecoverse/slicc-bios",
3
- "version": "1.44.5",
3
+ "version": "1.44.6",
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",
@@ -3,7 +3,7 @@
3
3
  "private": true,
4
4
  "description": "SLICC's agent, which the UI installs with pnpm in the background into /opt/agent in OPFS",
5
5
  "dependencies": {
6
- "@ai-ecoverse/slicc-agent": "6.18.3",
6
+ "@ai-ecoverse/slicc-agent": "6.19.15",
7
7
  "@ai-ecoverse/slicc-kernel": "1.160.3"
8
8
  }
9
9
  }
@@ -14,16 +14,19 @@ importers:
14
14
  .:
15
15
  dependencies:
16
16
  '@ai-ecoverse/slicc-agent':
17
- specifier: 6.18.3
18
- version: 6.18.3(@ai-ecoverse/slicc-kernel@1.160.3)(@aws-sdk/credential-provider-node@3.972.84)(@smithy/signature-v4@5.7.4)(ws@8.22.0)
17
+ specifier: 6.19.15
18
+ version: 6.19.15(@ai-ecoverse/slicc-kernel@1.160.3)(@aws-sdk/credential-provider-node@3.972.84)(@smithy/signature-v4@5.7.4)(ws@8.22.0)
19
19
  '@ai-ecoverse/slicc-kernel':
20
20
  specifier: 1.160.3
21
21
  version: 1.160.3
22
22
 
23
23
  packages:
24
24
 
25
- '@ai-ecoverse/slicc-agent@6.18.3':
26
- resolution: {integrity: sha512-CeWbIv/Ysf62MapzUlUyPGVRL/1+2fgaE0icotkF85Nqbap4PFPApbowG953r+MapsxfC9i/FUa4+3tMlJUXGA==}
25
+ '@ai-ecoverse/jerk-oauth@1.2.2':
26
+ resolution: {integrity: sha512-Sen/HPtSrvwUG4qJ72/x3QOuX0oVkYM/0PgpPkmaQhMaiXmOsKTnSzNyNWhbcsMgoCS5QTD0mkh8POOAaj2dXg==}
27
+
28
+ '@ai-ecoverse/slicc-agent@6.19.15':
29
+ resolution: {integrity: sha512-kGBEcUqrqcf/KMKZre7myhHWMFIER9iVm25kHxS1/gZ2e5SmMrjqUZWoSXnhw+/5g/Myjb0LncCe+1WoQe0U3A==}
27
30
  engines: {node: '>=24'}
28
31
  peerDependencies:
29
32
  '@ai-ecoverse/slicc-kernel': '>=1.110.0 <2'
@@ -32,16 +35,20 @@ packages:
32
35
  '@ai-ecoverse/slicc-spectrum':
33
36
  optional: true
34
37
 
35
- '@ai-ecoverse/slicc-browsers@1.9.2':
36
- resolution: {integrity: sha512-WVaDUiZbd5nwG03+2WoQ8YA8ATC2mkx1DRCWpLuMFBNnyN0cd5IRoGF6KYNjMkXvBQCvZZxP+gwffrpmHYJ/cQ==}
38
+ '@ai-ecoverse/slicc-browsers@1.18.7':
39
+ resolution: {integrity: sha512-rStBLMAR6a/WkvVr12auMtZ4ofEqIa/PARv8QvHucLBYH+Ubgoj1BPChwRfSwWC537kv+3cc1YwaMSEm3fhPFg==}
37
40
  engines: {node: '>=24'}
38
41
 
39
42
  '@ai-ecoverse/slicc-kernel@1.160.3':
40
43
  resolution: {integrity: sha512-PC9VCRpT68N8CNwbvhEAI7ypiQQ7a53c6u+CZ+ppWvC9dmyjDIRk4CCMkqpoeW8jVMMRBkOsPrDrW4Vp9xkK+g==}
41
44
  engines: {node: '>=26'}
42
45
 
43
- '@ai-ecoverse/slicc-vault@1.15.1':
44
- resolution: {integrity: sha512-qr1Pmw7lodtjiQgWkKgGcfbG63H61eHba4XBKXPlGYrRkYJ0vLTts1x82wYS6H6V4FaqAtLfdunwNvT0riz2CQ==}
46
+ '@ai-ecoverse/slicc-scrub@1.0.0':
47
+ resolution: {integrity: sha512-Z7maJhs0YmsbdcnVdLZocZrzA2x/iGp1in/+sZ4NBHy8BCZim0nvky3jRCcpCPoqceAreQt7ynfezCqkkeR/VQ==}
48
+ engines: {node: '>=24'}
49
+
50
+ '@ai-ecoverse/slicc-vault@1.15.4':
51
+ resolution: {integrity: sha512-XH41wPIotEir4VGjmwHiKawr/PoJB15NOTKn46Hdv4vgkvHk3Xj77e5/VJVUf99TIOMLEyLYKx1PbTG3KfR9NQ==}
45
52
  engines: {node: '>=24'}
46
53
 
47
54
  '@anthropic-ai/sdk@0.129.0':
@@ -346,11 +353,13 @@ packages:
346
353
 
347
354
  snapshots:
348
355
 
349
- '@ai-ecoverse/slicc-agent@6.18.3(@ai-ecoverse/slicc-kernel@1.160.3)(@aws-sdk/credential-provider-node@3.972.84)(@smithy/signature-v4@5.7.4)(ws@8.22.0)':
356
+ '@ai-ecoverse/jerk-oauth@1.2.2': {}
357
+
358
+ '@ai-ecoverse/slicc-agent@6.19.15(@ai-ecoverse/slicc-kernel@1.160.3)(@aws-sdk/credential-provider-node@3.972.84)(@smithy/signature-v4@5.7.4)(ws@8.22.0)':
350
359
  dependencies:
351
- '@ai-ecoverse/slicc-browsers': 1.9.2
360
+ '@ai-ecoverse/slicc-browsers': 1.18.7
352
361
  '@ai-ecoverse/slicc-kernel': 1.160.3
353
- '@ai-ecoverse/slicc-vault': 1.15.1
362
+ '@ai-ecoverse/slicc-vault': 1.15.4
354
363
  '@aws-sdk/middleware-websocket': 3.972.54
355
364
  '@earendil-works/chord': 1.3.0
356
365
  '@earendil-works/pi-ai': 1.3.0(@aws-sdk/credential-provider-node@3.972.84)(@smithy/signature-v4@5.7.4)(ws@8.22.0)
@@ -370,11 +379,16 @@ snapshots:
370
379
  - ws
371
380
  - zod
372
381
 
373
- '@ai-ecoverse/slicc-browsers@1.9.2': {}
382
+ '@ai-ecoverse/slicc-browsers@1.18.7': {}
374
383
 
375
384
  '@ai-ecoverse/slicc-kernel@1.160.3': {}
376
385
 
377
- '@ai-ecoverse/slicc-vault@1.15.1': {}
386
+ '@ai-ecoverse/slicc-scrub@1.0.0': {}
387
+
388
+ '@ai-ecoverse/slicc-vault@1.15.4':
389
+ dependencies:
390
+ '@ai-ecoverse/jerk-oauth': 1.2.2
391
+ '@ai-ecoverse/slicc-scrub': 1.0.0
378
392
 
379
393
  '@anthropic-ai/sdk@0.129.0':
380
394
  dependencies: