@ai-ecoverse/slicc-cdp 1.41.23 → 1.42.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
@@ -57,7 +57,7 @@ Saved sessions never contain cookie values or value hashes. They retain only coo
57
57
 
58
58
  The web storage commands, `localstorage-list`, `-get`, `-set`, `-delete` and `-clear` and the same five `sessionstorage-` commands, work like Microsoft's and print ordinary values as they are, with terminal control characters escaped. They run in a fresh isolated world of the tab's main frame through the guarded client, so a tab whose current document is protected, unverified, an error page or opaque is refused. Seven's and the vault's localStorage and sessionStorage are never read or written. `--tab` picks the tab; otherwise the current tab is used.
59
59
 
60
- `state-save [filename]` writes Microsoft's storageState JSON: `cookies` in Playwright's cookie shape and `origins` with each origin's `localStorage`. Without a filename it writes `.playwright-cli/storage-state-<timestamp>.json`. **The file is a credential.** It holds live cookie values, including HttpOnly session cookies, and localStorage, where sites often keep login tokens, so anyone who reads it can sign in as you on those sites. On Unix it is created owner-only (0600). Keep it out of version control, chat transcripts and shared directories, and delete it when you're done. It never holds seven's or the vault's cookies (parent-domain and partitioned ones included) or their origins, and like Microsoft's it never holds sessionStorage. Deviations: the origins are those of the open ordinary tabs, read in place, not every origin the browser context has visited; a tab the guard can't verify is skipped. An absolute filename prints as given.
60
+ `state-save [filename]` writes Microsoft's storageState JSON: `cookies` in Playwright's cookie shape and `origins` with each origin's `localStorage`. Without a filename it writes `.playwright-cli/storage-state-<timestamp>.json`. **The file is a credential.** It holds live cookie values, including HttpOnly session cookies, and localStorage, where sites often keep login tokens, so anyone who reads it can sign in as you on those sites. On Unix it is created owner-only (0600). Save to a regular file in a writable directory, not a device such as `/dev/stdout`. Atomic publication replaces a destination symlink with a regular file rather than writing through the link. Keep it out of version control, chat transcripts and shared directories, and delete it when you're done. It never holds seven's or the vault's cookies (parent-domain and partitioned ones included) or their origins, and like Microsoft's it never holds sessionStorage. Deviations: the origins are those of the open ordinary tabs, read in place, not every origin the browser context has visited; a tab the guard can't verify is skipped. An absolute filename prints as given.
61
61
 
62
62
  `state-load <filename>` checks the whole file before it changes anything. A protected, malformed or non-http(s) cookie scope or origin refuses the file, and so do IndexedDB, OPFS and credential entries, which are not restored. It then clears the ordinary cookies (protected ones stay) and sets the file's cookies. For each origin in the file it opens one temporary background tab, answers the tab's requests to those origins with an empty page through guarded interception, and, as Microsoft does, unregisters that origin's service workers, deletes its IndexedDB databases, clears its localStorage and writes the file's localStorage. The tab is then closed. Deviations: the HTTP cache is not cleared, because that would clear seven's, and origins that are not in the file keep their storage. Errors from these commands go to stderr as `Error: ...` and exit 1.
63
63
 
@@ -325,4 +325,16 @@ curlwright --cdp http://127.0.0.1:9333 -I https://example.com/
325
325
 
326
326
  Without `--tab` it uses the tab `playwright-cli` last selected, else the one open tab on the URL's origin.
327
327
 
328
+ #### Web Bot Auth signing
329
+
330
+ `--sign-key <file>` signs every request curlwright sends in that run, redirect hops included, with [Web Bot Auth](https://datatracker.ietf.org/doc/draft-ietf-webbotauth-httpsig-protocol/) (RFC 9421 HTTP Message Signatures). The file is an Ed25519 private JWK (`kty` `OKP`, `crv` `Ed25519`, `d`, and `x` if you like); any other key exits 2 without printing it. Each hop gets `Signature-Input` and `Signature` under the label `sig1`, covering that hop's `@authority`, with `created`, `expires` 60 seconds later, `keyid` (the key's RFC 7638 JWK thumbprint), `alg="ed25519"`, a random `nonce` and `tag="web-bot-auth"`.
331
+
332
+ ```
333
+ curlwright --sign-key bot.jwk --signature-agent https://bot.example https://example.com/
334
+ ```
335
+
336
+ `--signature-agent <https URL>` names your key directory: it sends `Signature-Agent: sig1="<url>"`, the dictionary form of draft -00, and covers it as `"signature-agent";key="sig1"`. Cloudflare's verifier still expects the older bare string, so `--signature-agent-legacy` sends `Signature-Agent: "<url>"` and covers `"signature-agent"`. The draft wants Signature-Agent on every signed request; leave it out only for a verifier that already holds your key. Serving the directory is up to you.
337
+
338
+ Nothing is signed without `--sign-key`, and `playwright-cli` never signs: its navigations, `fetch` and `discover` probes are the user's own browser traffic. The headers ride on the page's `fetch()`, so a cross-origin server has to allow them in a CORS preflight, which the browser sends unsigned. Signing needs an absolute http(s) URL. The signer is tested against Cloudflare's published Ed25519 test vectors, the draft's Appendix E.2.
339
+
328
340
  Prebuilt binaries: `curl -fsSL https://get.sliccy.ai/curlwright | sh`. See [slicc-cdp](https://github.com/ai-ecoverse/slicc-cdp).
Binary file
Binary file
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ai-ecoverse/slicc-cdp",
3
- "version": "1.41.23",
3
+ "version": "1.42.0",
4
4
  "description": "SLICC's CDP layer: client, browser API, transports, HAR, and ARIA snapshot",
5
5
  "type": "module",
6
6
  "license": "Apache-2.0",
@@ -70,7 +70,7 @@
70
70
  "devDependencies": {
71
71
  "@ai-ecoverse/slicc-browsers": "1.18.15",
72
72
  "@ai-ecoverse/slicc-kernel": "1.167.2",
73
- "@ai-ecoverse/slicc-shared-web": "2.12.4",
73
+ "@ai-ecoverse/slicc-shared-web": "2.13.0",
74
74
  "@ai-ecoverse/wasm-bash": "5.3.0-23",
75
75
  "@ai-ecoverse/wasm-coreutils": "9.12.0-15",
76
76
  "@biomejs/biome": "2.5.15",