@wenathlan/saddle 2.1.7 → 2.1.8
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/Dockerfile +15 -9
- package/README.md +6 -6
- package/browser.ts +482 -0
- package/cli.ts +274 -0
- package/distribution.ts +731 -0
- package/docs/browser.md +18 -1
- package/docs/extension.md +13 -2
- package/docs/libraryapi.md +1 -1
- package/execution.ts +677 -0
- package/foundation.ts +314 -0
- package/index.ts +21 -21
- package/isolation.ts +84 -0
- package/modes.ts +151 -0
- package/orchestrator.ts +2 -2
- package/package.json +74 -68
- package/sandbox.ts +2035 -0
- package/scheduler.ts +1 -1
- package/server.ts +52 -0
- package/tsconfig.json +11 -12
- package/virtual.ts +1105 -0
- package/virtualgpu.ts +1 -1
- package/virtualization.ts +1 -1
- package/workloadlaw.ts +293 -0
- package/manifest.json +0 -20
package/docs/browser.md
CHANGED
|
@@ -1,7 +1,24 @@
|
|
|
1
1
|
# Saddle browser surface
|
|
2
2
|
|
|
3
|
-
The root `browser
|
|
3
|
+
The root `browser.ts` carries the transport-neutral browser-agent contracts of the engine: session state, context, snapshots, fingerprints, the virtual-browser request/decision/handoff/receipt family, the optional Playwright adapter, recording and agent orchestration (sections 1-9 of the grand merge). It is library logic and is shared by callers; it is not a second copy of the desktop UI.
|
|
4
4
|
|
|
5
5
|
The user-facing browser application is the existing Tauri shell in `desktop/`, which wraps the compiled `web/dist/public` surface on Windows, Linux and macOS. Android and iOS convert the same web output through Capacitor. This boundary keeps browser behavior in the library and keeps presentation and native packaging in their target surfaces.
|
|
6
6
|
|
|
7
|
+
## The Manifest V3 extension migrated to devthink (wave 2 regrouping)
|
|
8
|
+
|
|
9
|
+
The Chrome Manifest V3 extension surface — the former sections 10-17 of `browser.ts` (`extension/permissions`, `extension/protocol`, `extension/content`, `extension/popup`, `extension/pagebridge`, `extension/worker`, `extension/serviceworker`, `extension/build`) — now lives in **`devthink/browserextension.ts`** with every export under the same name and signature. The family rule that drove the move: the saddle is exclusively the virtualization engine (VM / sandbox / microVM / the ninety modalities / vGPU / vCPU) and never touches the browser, GPU, CPU or storage of the user — every feature that runs in the user's browser is not a VM modality and belongs to devthink, the owner of the family extension product (which already packages its own extension through `packageextension.ts` and `crossbrowser.ts`).
|
|
10
|
+
|
|
11
|
+
What moved with the surface:
|
|
12
|
+
|
|
13
|
+
| former saddle root file | devthink root file |
|
|
14
|
+
| --- | --- |
|
|
15
|
+
| `browser.ts` sections 10-17 | `devthink/browserextension.ts` |
|
|
16
|
+
| `manifest.json` (MV3 bridge manifest) | `devthink/extensionmanifest.json` |
|
|
17
|
+
| `popup.html` | `devthink/extensionpopup.html` |
|
|
18
|
+
| `popup.css` | `devthink/extensionpopup.css` |
|
|
19
|
+
| `icon32.png` / `icon64.png` / `icon128.png` | `devthink/extensionicon32.png` / `extensionicon64.png` / `extensionicon128.png` |
|
|
20
|
+
| `tests/extension.test.ts` | `devthink/tests/browserextension.test.ts` |
|
|
21
|
+
|
|
22
|
+
The tracked assets carry the `extension` prefix at the devthink root because devthink already owns its own extension surface (`manifest.json` of record, `popup.ts`, `design.html`) — no root name collides. The build adapter (section 17 of the migrated module) is self-referential: it extracts the seven script sections from `devthink/browserextension.ts` itself, reads `extensionmanifest.json` for the versioned manifest and copies the extension-prefixed assets into an isolated unpacked artifact (default output `build/browserextension`, so it never touches the `build/extension` directory owned by the devthink extension build). The `@wenathlan/saddle/extension` package export and the `extension:build` script retired with the migration — consumers import the surface from the devthink app.
|
|
23
|
+
|
|
7
24
|
Release filenames identify the user-facing desktop browser with the dotted lowercase pattern `saddle.browser.1.8.14.<format>`. Internal module filenames remain API-compatible unless a deliberate public compatibility migration is documented.
|
package/docs/extension.md
CHANGED
|
@@ -1,5 +1,16 @@
|
|
|
1
1
|
# saddle browser bridge
|
|
2
2
|
|
|
3
|
+
> **Migration note (wave 2 regrouping):** the extension surface moved to
|
|
4
|
+
> `devthink/browserextension.ts` (sections 10-17 of the former
|
|
5
|
+
> `saddle/browser.ts`), with its tracked assets at the devthink root
|
|
6
|
+
> (`extensionmanifest.json`, `extensionpopup.html`, `extensionpopup.css`,
|
|
7
|
+
> `extensionicon32.png`, `extensionicon64.png`, `extensionicon128.png`)
|
|
8
|
+
> and its test battery at `devthink/tests/browserextension.test.ts`. The
|
|
9
|
+
> saddle is exclusively the virtualization engine; everything that runs
|
|
10
|
+
> in the user's browser belongs to devthink, the owner of the family
|
|
11
|
+
> extension product. The notes below describe the bridge design and stay
|
|
12
|
+
> accurate for the migrated surface.
|
|
13
|
+
|
|
3
14
|
This directory contains the first Manifest V3 surface for Saddle. It is a user initiated bridge, not a hidden automation service.
|
|
4
15
|
|
|
5
16
|
## load unpacked
|
|
@@ -7,7 +18,7 @@ This directory contains the first Manifest V3 surface for Saddle. It is a user i
|
|
|
7
18
|
1. Open `chrome://extensions`.
|
|
8
19
|
2. Enable developer mode.
|
|
9
20
|
3. Choose **Load unpacked**.
|
|
10
|
-
4. Select
|
|
21
|
+
4. Select the built artifact directory (the unpacked output of the build adapter below).
|
|
11
22
|
5. Open a page, invoke Saddle from the extension action and choose `Snapshot` or `Read page`.
|
|
12
23
|
|
|
13
24
|
The manifest requests only `activeTab`, `scripting` and `storage`. It does not request broad host permissions, cookies, tabs, webRequest or debugger access. `activeTab` gives temporary access after the user invokes the action for the current tab.
|
|
@@ -20,7 +31,7 @@ The content bridge runs in Chrome's isolated world. It exposes bounded page meta
|
|
|
20
31
|
|
|
21
32
|
## deterministic release artifact
|
|
22
33
|
|
|
23
|
-
The Node-only build adapter creates an isolated unpacked artifact with the release version in its manifest. A caller can run `
|
|
34
|
+
The Node-only build adapter creates an isolated unpacked artifact with the release version in its manifest. A caller can run `node --import tsx ./browserextension.ts --version 1.8.14 --output build/browserextension` from the devthink app root (the retired saddle `extension:build` script went with the migration) and package that directory with the archive tool available in the host environment. The release workflow derives the version from the published tag and attaches `saddle.extension.<version>.zip` without changing the source manifest.
|
|
24
35
|
|
|
25
36
|
## next slices
|
|
26
37
|
|
package/docs/libraryapi.md
CHANGED
|
@@ -60,7 +60,7 @@ The `fetcher`, browser adapter, persistence adapter, proxy pool, captcha solver,
|
|
|
60
60
|
|
|
61
61
|
The package exposes explicit subpaths for `./browser`, `./bot`, `./captcha`, `./memory-engine`, `./deploy`, and `./release-evidence`. Desktop, mobile, target-plan and n8n contracts are exported from the root entry; the root entry remains the complete compiled JavaScript API with generated TypeScript declarations for consumers that prefer one import.
|
|
62
62
|
|
|
63
|
-
The `./extension` subpath
|
|
63
|
+
The former `./extension` subpath retired with the wave 2 regrouping: the Chrome Manifest V3 surface (message, snapshot and service-worker routing contracts, the content and page bridges, the popup and the build adapter) runs in the user's browser, so it is not a VM modality of the engine and migrated to `devthink/browserextension.ts` with every export under the same name. The browser surface keeps exposing snapshots, tab/frame context, action results, bounded action batches and recording through `./browser`.
|
|
64
64
|
|
|
65
65
|
The current release exposes `desktopmanifest`, `mobilemanifest`, `desktopadapter`, `mobileadapter`, `n8nnode`, `n8nmatch`, `n8nexecute`, `controlsurface`, `controlservice`, and `workerbridge`. These factories describe surface boundaries and invoke caller-owned handlers; they do not install a native toolkit, start an n8n server, create a dashboard, or store credentials.
|
|
66
66
|
|