@wenathlan/saddle 2.0.5 → 2.0.150

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.
Files changed (282) hide show
  1. package/Dockerfile +47 -21
  2. package/LICENSE +0 -0
  3. package/README.md +19 -3
  4. package/alternatives.ts +0 -0
  5. package/boards.json +2 -2
  6. package/compute.ts +4 -4
  7. package/cores.json +2 -2
  8. package/docker.config +3 -3
  9. package/docs/.gitkeep +0 -0
  10. package/docs/CONVERSA.txt +0 -0
  11. package/docs/actionrecorder.md +0 -0
  12. package/docs/actionsincident.md +0 -0
  13. package/docs/alternatives.md +0 -0
  14. package/docs/architecture-1.8.19.md +0 -0
  15. package/docs/architecture-1.8.19.mmd +0 -0
  16. package/docs/architecture-1.8.19.png +0 -0
  17. package/docs/architecture.md +3 -3
  18. package/docs/artifactavailability.md +0 -0
  19. package/docs/artifactresearch-1.8.9.md +0 -0
  20. package/docs/assets/architecture.svg +0 -0
  21. package/docs/assets/saddle-browser-trace.webp +0 -0
  22. package/docs/assets/saddle-hero-bridge.webp +0 -0
  23. package/docs/assets/saddle-mark.webp +0 -0
  24. package/docs/assets/saddle-runtime-map.webp +0 -0
  25. package/docs/assets/saddlemark.svg +0 -0
  26. package/docs/batches-1816-1820.md +0 -0
  27. package/docs/brancharchive-2026-08-18.md +0 -0
  28. package/docs/branchaudit.md +0 -0
  29. package/docs/browser.md +0 -0
  30. package/docs/capabilityreport.md +0 -0
  31. package/docs/comparativeaudit.md +0 -0
  32. package/docs/consolidation.md +0 -0
  33. package/docs/containerplatforms-1.8.17.md +0 -0
  34. package/docs/containerplatforms-2.1.0.md +73 -0
  35. package/docs/documentmap-1.8.12.md +0 -0
  36. package/docs/e2ugh-engine.md +0 -0
  37. package/docs/ecosystemplan.md +0 -0
  38. package/docs/enginearchitecture.md +0 -0
  39. package/docs/example-localjob.ts +0 -0
  40. package/docs/example-publicapi.ts +0 -0
  41. package/docs/extension.md +0 -0
  42. package/docs/featureaudit.md +0 -0
  43. package/docs/flatbuildresearch-1.8.11.md +0 -0
  44. package/docs/gapmatrix.md +0 -0
  45. package/docs/hardware.md +0 -0
  46. package/docs/libraryapi.md +0 -0
  47. package/docs/licenseaudit-1.8.12.md +0 -0
  48. package/docs/logs/examplesession.json +54 -0
  49. package/docs/memoryengine.md +0 -0
  50. package/docs/mobileconversionresearch-1.8.10.md +0 -0
  51. package/docs/modes.md +0 -0
  52. package/docs/native-wrappers.md +38 -0
  53. package/docs/nativeidentityresearch-1.8.11.md +0 -0
  54. package/docs/optimization.md +0 -0
  55. package/docs/packageaudit185.md +0 -0
  56. package/docs/performance.md +0 -0
  57. package/docs/planning.1.8.18.md +0 -0
  58. package/docs/planning.1.8.19.md +0 -0
  59. package/docs/planning.engine.md +186 -0
  60. package/docs/platformpipelineaudit.md +0 -0
  61. package/docs/platformpipelines.md +0 -0
  62. package/docs/productindex.md +0 -0
  63. package/docs/registryresearch.md +0 -0
  64. package/docs/release.md +0 -0
  65. package/docs/release17notes.md +0 -0
  66. package/docs/release181notes.md +0 -0
  67. package/docs/release182notes.md +0 -0
  68. package/docs/release184notes.md +0 -0
  69. package/docs/release185notes.md +0 -0
  70. package/docs/release18notes.md +0 -0
  71. package/docs/releaseassets.md +0 -0
  72. package/docs/releasenotes-1.8.12.md +0 -0
  73. package/docs/releasenotes-1.8.13.md +0 -0
  74. package/docs/releasenotes-1.8.14.md +0 -0
  75. package/docs/releasenotes-1.8.15.md +0 -0
  76. package/docs/releasenotes-1.8.16.md +0 -0
  77. package/docs/releasenotes-1.8.17.md +0 -0
  78. package/docs/releasenotes-1.8.18.md +0 -0
  79. package/docs/releasenotes-1.8.19.md +0 -0
  80. package/docs/reorganization-1.8.8.md +0 -0
  81. package/docs/reorganization-1.8.9.md +0 -0
  82. package/docs/repo-analysis-1.8.21.json +0 -0
  83. package/docs/repo-candidates-1.8.21.jsonl +0 -0
  84. package/docs/repo-research-1.8.16.md +0 -0
  85. package/docs/repo-research-1.8.21.md +0 -0
  86. package/docs/repo-selected-1.8.21.json +0 -0
  87. package/docs/repo-synthesis-1.8.16.md +0 -0
  88. package/docs/repo-synthesis-1.8.21.md +0 -0
  89. package/docs/research-1.8.18-isolation.md +0 -0
  90. package/docs/research-1.8.19-virtual-browser.md +0 -0
  91. package/docs/roadmapp2p3.md +0 -0
  92. package/docs/s3compatible.md +0 -0
  93. package/docs/saddle.archive.1.8.17.tar.gz.gpg +0 -0
  94. package/docs/scanningresearch-1.8.11.md +0 -0
  95. package/docs/security.md +0 -0
  96. package/docs/securityaudit-1.8.7.md +0 -0
  97. package/docs/securityreferences-1.8.11.md +0 -0
  98. package/docs/securityresearch-1.8.11.md +0 -0
  99. package/docs/signingresearch-1.8.12.md +0 -0
  100. package/docs/signingwithoutcertificates.md +0 -0
  101. package/docs/signpathapplication.md +0 -0
  102. package/docs/sitemap.md +0 -0
  103. package/docs/tauri-glib-risk-1.8.11.md +0 -0
  104. package/docs/todo-1.8.15.md +0 -0
  105. package/docs/todo-1.8.16.md +0 -0
  106. package/docs/todo-1.8.18.md +0 -0
  107. package/docs/todo-1.8.19.md +0 -0
  108. package/docs/todo.md +0 -0
  109. package/docs/toolchainresearch-1.8.9.md +0 -0
  110. package/docs/toolchains.md +0 -0
  111. package/docs/usage.md +0 -0
  112. package/docs/viability.md +0 -0
  113. package/docs/virtualization.md +0 -0
  114. package/docs/web-duplicatecleanup.md +0 -0
  115. package/docs/web-ideas.md +0 -0
  116. package/docs/workflowimprovements-2026-08-19.md +0 -0
  117. package/docs/workflowinputs.md +0 -0
  118. package/docs/workflowoperations.md +0 -0
  119. package/gpumonitor.cpp +0 -0
  120. package/gpus.json +1 -1
  121. package/index.ts +14 -15
  122. package/manifest.json +20 -0
  123. package/media.ts +0 -0
  124. package/mttg.config +1 -1
  125. package/orchestrator.ts +5 -2
  126. package/package.json +142 -91
  127. package/passage.config +2 -2
  128. package/performance.ts +0 -0
  129. package/processors.json +1 -1
  130. package/qemu.config +2 -2
  131. package/qemubridge.py +0 -0
  132. package/quantum.ts +0 -0
  133. package/render.ts +0 -0
  134. package/scheduler.ts +0 -0
  135. package/security.ts +0 -0
  136. package/tiers.ts +9 -3
  137. package/tsconfig.json +22 -17
  138. package/virtualcpu.ts +1 -0
  139. package/virtualgpu.ts +1 -0
  140. package/virtualhardware.c +0 -0
  141. package/virtualhardware.json +2 -2
  142. package/virtualization.ts +0 -0
  143. package/virtualizationcore.cpp +0 -0
  144. package/virtualmemory.ts +0 -0
  145. package/vm.config.json +3 -3
  146. package/biome.json +0 -153
  147. package/dist/acquisition.d.ts +0 -359
  148. package/dist/acquisition.d.ts.map +0 -1
  149. package/dist/acquisition.js +0 -629
  150. package/dist/acquisition.js.map +0 -1
  151. package/dist/alternatives.d.ts +0 -509
  152. package/dist/alternatives.d.ts.map +0 -1
  153. package/dist/alternatives.js +0 -951
  154. package/dist/alternatives.js.map +0 -1
  155. package/dist/automation.d.ts +0 -426
  156. package/dist/automation.d.ts.map +0 -1
  157. package/dist/automation.js +0 -561
  158. package/dist/automation.js.map +0 -1
  159. package/dist/browser.d.ts +0 -562
  160. package/dist/browser.d.ts.map +0 -1
  161. package/dist/browser.js +0 -1057
  162. package/dist/browser.js.map +0 -1
  163. package/dist/capacitor.config.d.ts +0 -13
  164. package/dist/capacitor.config.d.ts.map +0 -1
  165. package/dist/capacitor.config.js +0 -26
  166. package/dist/capacitor.config.js.map +0 -1
  167. package/dist/cli.d.ts +0 -17
  168. package/dist/cli.d.ts.map +0 -1
  169. package/dist/cli.js +0 -111
  170. package/dist/cli.js.map +0 -1
  171. package/dist/communication.d.ts +0 -192
  172. package/dist/communication.d.ts.map +0 -1
  173. package/dist/communication.js +0 -418
  174. package/dist/communication.js.map +0 -1
  175. package/dist/compute.d.ts +0 -1161
  176. package/dist/compute.d.ts.map +0 -1
  177. package/dist/compute.js +0 -2273
  178. package/dist/compute.js.map +0 -1
  179. package/dist/distribution.d.ts +0 -529
  180. package/dist/distribution.d.ts.map +0 -1
  181. package/dist/distribution.js +0 -811
  182. package/dist/distribution.js.map +0 -1
  183. package/dist/execution.d.ts +0 -530
  184. package/dist/execution.d.ts.map +0 -1
  185. package/dist/execution.js +0 -761
  186. package/dist/execution.js.map +0 -1
  187. package/dist/format.d.ts +0 -19
  188. package/dist/format.d.ts.map +0 -1
  189. package/dist/format.js +0 -60
  190. package/dist/format.js.map +0 -1
  191. package/dist/foundation.d.ts +0 -176
  192. package/dist/foundation.d.ts.map +0 -1
  193. package/dist/foundation.js +0 -309
  194. package/dist/foundation.js.map +0 -1
  195. package/dist/index.d.ts +0 -735
  196. package/dist/index.d.ts.map +0 -1
  197. package/dist/index.js +0 -1020
  198. package/dist/index.js.map +0 -1
  199. package/dist/integration.d.ts +0 -236
  200. package/dist/integration.d.ts.map +0 -1
  201. package/dist/integration.js +0 -236
  202. package/dist/integration.js.map +0 -1
  203. package/dist/intelligence.d.ts +0 -94
  204. package/dist/intelligence.d.ts.map +0 -1
  205. package/dist/intelligence.js +0 -145
  206. package/dist/intelligence.js.map +0 -1
  207. package/dist/isolation.d.ts +0 -129
  208. package/dist/isolation.d.ts.map +0 -1
  209. package/dist/isolation.js +0 -96
  210. package/dist/isolation.js.map +0 -1
  211. package/dist/media.d.ts +0 -344
  212. package/dist/media.d.ts.map +0 -1
  213. package/dist/media.js +0 -986
  214. package/dist/media.js.map +0 -1
  215. package/dist/modes.d.ts +0 -359
  216. package/dist/modes.d.ts.map +0 -1
  217. package/dist/modes.js +0 -134
  218. package/dist/modes.js.map +0 -1
  219. package/dist/operations.d.ts +0 -67
  220. package/dist/operations.d.ts.map +0 -1
  221. package/dist/operations.js +0 -94
  222. package/dist/operations.js.map +0 -1
  223. package/dist/orchestrator.d.ts +0 -1339
  224. package/dist/orchestrator.d.ts.map +0 -1
  225. package/dist/orchestrator.js +0 -4308
  226. package/dist/orchestrator.js.map +0 -1
  227. package/dist/packager/targetcli.js +0 -4
  228. package/dist/performance.d.ts +0 -416
  229. package/dist/performance.d.ts.map +0 -1
  230. package/dist/performance.js +0 -827
  231. package/dist/performance.js.map +0 -1
  232. package/dist/quantum.d.ts +0 -810
  233. package/dist/quantum.d.ts.map +0 -1
  234. package/dist/quantum.js +0 -2073
  235. package/dist/quantum.js.map +0 -1
  236. package/dist/render.d.ts +0 -381
  237. package/dist/render.d.ts.map +0 -1
  238. package/dist/render.js +0 -1073
  239. package/dist/render.js.map +0 -1
  240. package/dist/scheduler.d.ts +0 -596
  241. package/dist/scheduler.d.ts.map +0 -1
  242. package/dist/scheduler.js +0 -1259
  243. package/dist/scheduler.js.map +0 -1
  244. package/dist/security.d.ts +0 -501
  245. package/dist/security.d.ts.map +0 -1
  246. package/dist/security.js +0 -1170
  247. package/dist/security.js.map +0 -1
  248. package/dist/server.d.ts +0 -21
  249. package/dist/server.d.ts.map +0 -1
  250. package/dist/server.js +0 -52
  251. package/dist/server.js.map +0 -1
  252. package/dist/tiers.d.ts +0 -1002
  253. package/dist/tiers.d.ts.map +0 -1
  254. package/dist/tiers.js +0 -2165
  255. package/dist/tiers.js.map +0 -1
  256. package/dist/virtual.d.ts +0 -641
  257. package/dist/virtual.d.ts.map +0 -1
  258. package/dist/virtual.js +0 -1285
  259. package/dist/virtual.js.map +0 -1
  260. package/dist/virtualcpu.d.ts +0 -316
  261. package/dist/virtualcpu.d.ts.map +0 -1
  262. package/dist/virtualcpu.js +0 -1180
  263. package/dist/virtualcpu.js.map +0 -1
  264. package/dist/virtualgpu.d.ts +0 -345
  265. package/dist/virtualgpu.d.ts.map +0 -1
  266. package/dist/virtualgpu.js +0 -1000
  267. package/dist/virtualgpu.js.map +0 -1
  268. package/dist/virtualization.d.ts +0 -607
  269. package/dist/virtualization.d.ts.map +0 -1
  270. package/dist/virtualization.js +0 -1187
  271. package/dist/virtualization.js.map +0 -1
  272. package/dist/virtualmemory.d.ts +0 -818
  273. package/dist/virtualmemory.d.ts.map +0 -1
  274. package/dist/virtualmemory.js +0 -1796
  275. package/dist/virtualmemory.js.map +0 -1
  276. package/dist/webscrape.d.ts +0 -720
  277. package/dist/webscrape.d.ts.map +0 -1
  278. package/dist/webscrape.js +0 -2697
  279. package/dist/webscrape.js.map +0 -1
  280. package/web/extension/manifest.json +0 -23
  281. package/web/readme.md +0 -382
  282. package/web/tsconfig.json +0 -25
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wenathlan/saddle",
3
- "version": "2.0.5",
3
+ "version": "2.0.150",
4
4
  "description": "binary computing engine that turns distributed storage into a publishable working set carrying the merged virtual-hardware engine (the saddle + e2ugh grand merge)",
5
5
  "type": "module",
6
6
  "private": false,
@@ -19,11 +19,23 @@
19
19
  "xcode": {
20
20
  "uuid": "11.1.1"
21
21
  },
22
- "uuid": "^11.1.1"
22
+ "uuid": "^11.1.1",
23
+ "@grpc/grpc-js": "1.14.5",
24
+ "deepmerge-ts": "^8.0.0",
25
+ "esbuild": "^0.28.2",
26
+ "follow-redirects": "^1.16.1",
27
+ "mysql2": "^3.24.6",
28
+ "postcss-selector-parser": "^7.1.6",
29
+ "source-map-js": "1.2.2",
30
+ "proxy-addr": "2.0.8",
31
+ "body-parser": "^2.4.0",
32
+ "fast-uri": "^3.1.9",
33
+ "zod": "^4.6.7",
34
+ "undici": "^7.30.1"
23
35
  },
24
36
  "repository": {
25
37
  "type": "git",
26
- "url": "https://github.com/wenathlan/saddle.git"
38
+ "url": "https://github.com/wenathlan/devthink"
27
39
  },
28
40
  "bugs": {
29
41
  "url": "https://github.com/wenathlan/saddle/issues"
@@ -32,16 +44,40 @@
32
44
  "keywords": [
33
45
  "distributed computing",
34
46
  "virtual memory",
47
+ "virtual machine",
48
+ "virtual cpu",
49
+ "virtual gpu",
35
50
  "runner",
36
51
  "storage",
37
- "automation"
52
+ "automation",
53
+ "llvmpipe",
54
+ "lavapipe",
55
+ "rusticl",
56
+ "qemu",
57
+ "firecracker",
58
+ "mesa",
59
+ "ghcr"
38
60
  ],
39
61
  "engines": {
40
- "node": ">=26.7.0",
41
- "npm": ">=10.9.2"
62
+ "bare": "^1.18.0",
63
+ "bun": "^1.4.2",
64
+ "chrome": "^16.0.912",
65
+ "cnpm": "^9.4.0",
66
+ "corepack": "^0.35.0",
67
+ "deno": "^2.9.5",
68
+ "ecmascript": "^5.0.0",
69
+ "firefox": ">=0.8.0",
70
+ "iojs": "^1.0.0",
71
+ "node": ">=26.12.1 <27",
72
+ "npm": "^12.1.0",
73
+ "pnpm": "^12.6.0",
74
+ "teleport": ">=0.2.0",
75
+ "typescript": "^5.8.0",
76
+ "vscode": "^1.118.0",
77
+ "yarn": "^4.17.1"
42
78
  },
43
79
  "peerDependencies": {
44
- "playwright": "^1.62.1"
80
+ "playwright": "^1.63.0"
45
81
  },
46
82
  "peerDependenciesMeta": {
47
83
  "playwright": {
@@ -65,6 +101,7 @@
65
101
  "./sessions": "./dist/foundation.js",
66
102
  "./modes": "./dist/modes.js",
67
103
  "./mode": "./dist/modes.js",
104
+ "./sandbox": "./dist/sandbox.js",
68
105
  "./browser": "./dist/browser.js",
69
106
  "./browser-playwright": "./dist/browser.js",
70
107
  "./bot": "./dist/automation.js",
@@ -114,7 +151,7 @@
114
151
  },
115
152
  "files": [
116
153
  "dist",
117
- "web/extension/manifest.json",
154
+ "manifest.json",
118
155
  "docs",
119
156
  "README.md",
120
157
  "LICENSE",
@@ -155,7 +192,7 @@
155
192
  "build:engine": "node tests/scripts/buildengine.mjs",
156
193
  "check": "npm run build:engine && node --check dist/index.js && node --check dist/execution.js && node --check dist/cli.js && node --check dist/browser.js && node --check dist/distribution.js",
157
194
  "formatcheck": "node --import tsx format.ts",
158
- "test": "npm run build:engine && node --import tsx --test tests/engine.test.ts tests/extension.test.ts tests/package.test.ts tests/release.test.ts tests/virtualengine.test.ts tests/features.test.ts tests/media.test.ts tests/render.test.ts tests/simulation.test.ts tests/specs.test.ts tests/virtualcpu.test.ts tests/virtualgpu.test.ts tests/virtualmemory.test.ts tests/web.test.ts tests/workflow.test.ts",
195
+ "test": "vitest run",
159
196
  "test:legacy": "vitest run tests/agent-utils.test.ts tests/cache.test.ts tests/chunking.test.ts tests/core.test.ts tests/errors.test.ts tests/llms-txt.test.ts tests/middleware.test.ts tests/proxy.test.ts tests/tokens.test.ts",
160
197
  "run": "npm run build:engine && node dist/cli.js",
161
198
  "extension:build": "npm run build:engine && node dist/browser.js",
@@ -166,18 +203,18 @@
166
203
  "prepublishOnly": "npm run pack:check",
167
204
  "tauri": "npx --yes @tauri-apps/cli@2.11.4",
168
205
  "capacitor:sync:android": "npm run web:build:pages && cap sync android",
169
- "capacitor:flatten:android": "node tests/scripts/flattenandroid.mjs",
170
206
  "capacitor:sync:ios": "npm run web:build:pages && cap sync ios",
171
207
  "native:check:flat": "node tests/scripts/validateflatnative.mjs",
172
- "web:dev": "vite --config web/vite.config.ts --host",
173
- "web:check": "npm run build:engine && tsc --project web/tsconfig.json --noEmit",
174
- "web:build": "vite build --config web/vite.config.ts",
175
- "web:build:pages": "vite build --config web/vite.config.ts",
208
+ "web:dev": "vite --host",
209
+ "web:check": "npm run build:engine && tsc --project tsconfig.json --noEmit",
210
+ "web:build": "vite build",
211
+ "web:build:pages": "vite build",
212
+ "web:preview": "vite preview --host",
176
213
  "build": "npm run build:engine",
177
214
  "build:tsc": "tsc -p tsconfig.json --noEmitOnError false",
178
215
  "start": "node --import tsx ./cli.ts plan",
179
216
  "dev": "node --import tsx --watch ./cli.ts",
180
- "web": "node web/server.js",
217
+ "web": "node webserver.ts",
181
218
  "qemu:bridge": "node ./orchestrator.ts --qemu-bridge",
182
219
  "toolchain:verify": "node --version && npx tsc --version && python3 --version && qemu-system-x86_64 --version || true && docker --version",
183
220
  "dev:tsx": "node --import tsx --watch ./cli.ts",
@@ -194,100 +231,114 @@
194
231
  "test:unit": "node --test tests/*.test.ts",
195
232
  "test:e2e": "node --test tests/*.test.ts",
196
233
  "qemu:version": "qemu-system-x86_64 --version || echo 'qemu 11.1.0 expected 2026-08-22'",
197
- "vm:create": "node ./index.ts --create-vm",
198
- "vm:validate": "node ./index.ts --validate-vm",
199
- "gpu:list": "node ./index.ts --list-gpus",
200
- "docker:build": "docker build -f Dockerfile -t saddle:2.0.5 .",
201
- "docker:run": "docker run --rm --memory-swap=-1 --shm-size=2g saddle:2.0.5",
202
- "docker:health": "docker run --rm saddle:2.0.5 qemu-system-x86_64 --version && curl -fsS http://localhost:8080/health || true",
234
+ "vm:create": "node --import tsx ./cli.ts vm",
235
+ "vm:validate": "node --import tsx ./cli.ts vmlint",
236
+ "gpu:list": "node --import tsx ./cli.ts gpus",
237
+ "docker:build": "docker build -f Dockerfile -t saddle:2.0.150 .",
238
+ "docker:run": "docker run --rm --memory-swap=-1 --shm-size=2g saddle:2.0.150",
239
+ "docker:health": "docker run --rm saddle:2.0.150 qemu-system-x86_64 --version && curl -fsS http://localhost:8080/health || true",
203
240
  "firecracker:boot": "firecracker --api-sock /tmp/fc-saddle.sock --config-file vmconfig.json 2>/dev/null || echo 'firecracker 1.16.1 warm-pool boot 125ms target'",
204
241
  "py:bridge": "python3 qemubridge.py",
205
242
  "py:test": "python3 -m pytest -q || python3 qemubridge.py",
206
243
  "clean": "rm -rf dist coverage .biome __pycache__",
207
- "prepare": "echo 'saddle grand-merge toolchain 2026-08-23: Node 26.7.0 Current / 24.19.0 LTS, npm 12.0.2, TS 7.0.2, Python 3.14.7, Docker 29.7.2, QEMU 11.1.0, Mesa 26.2.1, LLVM 22.1.8, Firecracker 1.16.1'",
244
+ "prepare": "echo 'saddle grand-merge toolchain 2026-08-23: Node 26.12.0 Current / 24.19.0 LTS, npm 12.0.2, TS 7.0.2, Python 3.14.7, Docker 29.7.2, QEMU 11.1.0, Mesa 26.2.1, LLVM 22.1.8, Firecracker 1.16.1'",
208
245
  "start:engine": "node --import tsx ./cli.ts plan"
209
246
  },
210
247
  "devDependencies": {
211
- "@biomejs/biome": "^2.5.11",
212
- "@capacitor/android": "^8.5.0",
213
- "@capacitor/cli": "^8.5.1",
214
- "@capacitor/core": "^8.5.0",
215
- "@capacitor/ios": "^8.5.0",
216
- "@hookform/resolvers": "^5.2.2",
217
- "@radix-ui/react-accordion": "^1.2.12",
218
- "@radix-ui/react-alert-dialog": "^1.1.15",
219
- "@radix-ui/react-aspect-ratio": "^1.1.7",
220
- "@radix-ui/react-avatar": "^1.1.10",
221
- "@radix-ui/react-checkbox": "^1.3.3",
222
- "@radix-ui/react-collapsible": "^1.1.12",
223
- "@radix-ui/react-context-menu": "^2.2.16",
224
- "@radix-ui/react-dialog": "^1.1.15",
225
- "@radix-ui/react-dropdown-menu": "^2.1.16",
226
- "@radix-ui/react-hover-card": "^1.1.15",
227
- "@radix-ui/react-label": "^2.1.7",
228
- "@radix-ui/react-menubar": "^1.1.16",
229
- "@radix-ui/react-navigation-menu": "^1.2.14",
230
- "@radix-ui/react-popover": "^1.1.15",
231
- "@radix-ui/react-progress": "^1.1.7",
232
- "@radix-ui/react-radio-group": "^1.3.8",
233
- "@radix-ui/react-scroll-area": "^1.2.10",
234
- "@radix-ui/react-select": "^2.2.6",
235
- "@radix-ui/react-separator": "^1.1.7",
236
- "@radix-ui/react-slider": "^1.3.6",
237
- "@radix-ui/react-slot": "^1.2.3",
238
- "@radix-ui/react-switch": "^1.2.6",
239
- "@radix-ui/react-tabs": "^1.1.13",
240
- "@radix-ui/react-toggle": "^1.1.10",
241
- "@radix-ui/react-toggle-group": "^1.1.11",
242
- "@radix-ui/react-tooltip": "^1.2.8",
243
- "@tailwindcss/typography": "^0.5.15",
244
- "@tailwindcss/vite": "^4.1.3",
245
- "@types/google.maps": "^3.58.1",
246
- "@types/node": "^26.4.0",
247
- "@types/react": "^19.2.1",
248
- "@types/react-dom": "^19.2.1",
249
- "@vitejs/plugin-react": "^6.1.1",
250
- "add": "^2.0.6",
251
- "autoprefixer": "^10.4.20",
252
- "axios": "^1.12.0",
248
+ "@biomejs/biome": "^2.6.2",
249
+ "@capacitor/android": "^8.5.3",
250
+ "@capacitor/cli": "^8.5.3",
251
+ "@capacitor/core": "^8.5.3",
252
+ "@capacitor/ios": "^8.5.3",
253
+ "@fluentui/react-icons": "^2.0.344",
254
+ "@hookform/resolvers": "^5.9.2",
255
+ "@libsql/client": "^0.18.0",
256
+ "@prisma/client": "^7.10.1",
257
+ "@radix-ui/react-accordion": "^1.3.1",
258
+ "@radix-ui/react-alert-dialog": "^1.2.1",
259
+ "@radix-ui/react-aspect-ratio": "^1.2.0",
260
+ "@radix-ui/react-avatar": "^1.3.1",
261
+ "@radix-ui/react-checkbox": "^1.4.1",
262
+ "@radix-ui/react-collapsible": "^1.2.1",
263
+ "@radix-ui/react-context-menu": "^2.4.1",
264
+ "@radix-ui/react-dialog": "^1.3.1",
265
+ "@radix-ui/react-dropdown-menu": "^2.2.1",
266
+ "@radix-ui/react-hover-card": "^1.2.1",
267
+ "@radix-ui/react-label": "^2.1.17",
268
+ "@radix-ui/react-menubar": "^1.2.1",
269
+ "@radix-ui/react-navigation-menu": "^1.4.1",
270
+ "@radix-ui/react-popover": "^1.3.1",
271
+ "@radix-ui/react-progress": "^1.2.1",
272
+ "@radix-ui/react-radio-group": "^1.5.1",
273
+ "@radix-ui/react-scroll-area": "^1.4.0",
274
+ "@radix-ui/react-select": "^2.4.1",
275
+ "@radix-ui/react-separator": "^1.2.0",
276
+ "@radix-ui/react-slider": "^1.6.1",
277
+ "@radix-ui/react-slot": "^1.5.0",
278
+ "@radix-ui/react-switch": "^1.4.1",
279
+ "@radix-ui/react-tabs": "^1.2.1",
280
+ "@radix-ui/react-toggle": "^1.2.1",
281
+ "@radix-ui/react-toggle-group": "^1.2.1",
282
+ "@radix-ui/react-tooltip": "^1.4.1",
283
+ "@tailwindcss/typography": "^0.5.20",
284
+ "@tailwindcss/vite": "^4.3.3",
285
+ "@types/google.maps": "^3.66.7",
286
+ "@types/node": "^26.6.5",
287
+ "@types/react": "^19.3.0",
288
+ "@types/react-dom": "^19.3.0",
289
+ "@vitejs/plugin-react": "^6.1.2",
290
+ "add": "^2.0.9",
291
+ "autoprefixer": "^10.6.1",
292
+ "axios": "^1.20.0",
293
+ "better-sqlite3": "^13.0.3",
294
+ "cheerio": "^1.2.0",
253
295
  "class-variance-authority": "^0.7.1",
254
296
  "clsx": "^2.1.1",
255
297
  "cmdk": "^1.1.1",
298
+ "drizzle-kit": "^0.31.11",
299
+ "drizzle-orm": "^0.45.4",
256
300
  "embla-carousel-react": "^8.6.0",
257
- "esbuild": "^0.25.0",
258
- "framer-motion": "^13.1.1",
259
- "input-otp": "^1.4.2",
301
+ "emittery": "^2.2.0",
302
+ "esbuild": "^0.28.2",
303
+ "framer-motion": "^13.5.1",
304
+ "hono": "^4.13.13",
305
+ "input-otp": "^1.5.0",
260
306
  "jsdom": "26.1.0",
261
- "lucide-react": "^0.453.0",
262
- "nanoid": "^5.1.5",
307
+ "lucide-react": "^1.61.0",
308
+ "mysql2": "^3.24.6",
309
+ "nanoid": "^6.0.2",
263
310
  "next-themes": "^0.4.6",
264
- "postcss": "^8.4.47",
265
- "prettier": "^3.6.2",
266
- "react": "^19.2.1",
267
- "react-day-picker": "^9.11.1",
268
- "react-dom": "^19.2.1",
269
- "react-hook-form": "^7.64.0",
270
- "react-resizable-panels": "^3.0.6",
271
- "recharts": "^2.15.2",
272
- "sonner": "^2.0.7",
273
- "streamdown": "^2.6.0",
274
- "tailwind-merge": "^3.3.1",
275
- "tailwindcss": "^4.1.14",
311
+ "p-limit": "^7.3.3",
312
+ "playwright": "^1.64.1",
313
+ "p-retry": "^8.0.1",
314
+ "postcss": "^8.5.31",
315
+ "prettier": "^3.9.10",
316
+ "prisma": "^7.10.1",
317
+ "react": "^19.3.1",
318
+ "react-day-picker": "^10.0.2",
319
+ "react-dom": "^19.3.1",
320
+ "react-hook-form": "^7.91.0",
321
+ "react-resizable-panels": "^4.14.8",
322
+ "recharts": "^3.10.1",
323
+ "sonner": "^2.0.8",
324
+ "streamdown": "^2.7.1",
325
+ "tailwind-merge": "^3.7.0",
326
+ "tailwindcss": "^4.3.3",
276
327
  "tailwindcss-animate": "^1.0.7",
277
- "tsx": "^4.19.1",
328
+ "tsx": "^4.23.15",
278
329
  "tw-animate-css": "^1.4.0",
279
330
  "typescript": "7.0.2",
280
331
  "vaul": "^1.1.2",
281
- "vite": "^8.2.2",
282
- "vite-plugin-manus-runtime": "^0.0.58",
283
- "vitest": "^4.1.10",
284
- "wouter": "^3.3.5",
285
- "zod": "^4.1.12"
332
+ "vite": "^8.3.5",
333
+ "vite-plugin-manus-runtime": "^0.0.59",
334
+ "vitest": "^5.0.5",
335
+ "wouter": "^3.13.0",
336
+ "zod": "^4.6.7"
286
337
  },
287
338
  "optionalDependencies": {
288
- "commander": "^13.1.0",
339
+ "commander": "^15.0.0",
289
340
  "dockerode": "^5.0.1",
290
- "express": "^5.1.0"
341
+ "express": "^5.3.0"
291
342
  },
292
343
  "systemLibraries": {
293
344
  "note": "system libraries, not npm packages (declared by nested_package.json v3 as dependencies; kept here as build-time system requirements only)",
@@ -301,9 +352,9 @@
301
352
  "saddle": {
302
353
  "date": "2026-08-23",
303
354
  "toolchain": {
304
- "node": "26.7.0",
355
+ "node": "26.12.0",
305
356
  "nodeLts": "24.19.0",
306
- "nodeCurrent": "26.7.0",
357
+ "nodeCurrent": "26.12.0",
307
358
  "npm": "12.0.2",
308
359
  "typescript": "7.0.2",
309
360
  "python": "3.14.7",
package/passage.config CHANGED
@@ -2,7 +2,7 @@
2
2
  "meta": {
3
3
  "name": "passage.config",
4
4
  "title": "saddle - Passage Configuration (3 homonym domains kept separate + host playbook)",
5
- "version": "2.0.0",
5
+ "version": "2.1.6",
6
6
  "date": "2026-08-22",
7
7
  "language": "en",
8
8
  "conceptSeparation": "'passage' has 3 distinct domains in the pool: (1) gateway - L7 Pingora reverse proxy (routes/upstreams/TLS 1.3); (2) passthrough - PCI device passthrough modes (VFIO/MDEV/MIG/vGPU/SR-IOV/vfio-user/hotplug/KVM/none); (3) network_binding - VM network bridge modes + host port binding (never localhost). A 4th section carries the AetherForge host-side VFIO playbook. Sections are NEVER merged.",
@@ -56,7 +56,7 @@
56
56
  "gateway": {
57
57
  "meta": {
58
58
  "project": "saddle (grand merge)",
59
- "version": "2.0.0",
59
+ "version": "2.1.6",
60
60
  "schema": "passage.config",
61
61
  "schemaversion": "2026.08.22",
62
62
  "engine": "passage gateway v6",
package/performance.ts CHANGED
File without changes
package/processors.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "meta": {
4
4
  "name": "processors.json",
5
5
  "title": "saddle - Unified Virtual Processor Database",
6
- "version": "2.0.0",
6
+ "version": "2.0.127",
7
7
  "date": "2026-08-22",
8
8
  "language": "en",
9
9
  "description": "Union of the v5 canonical CPU database (6 x86_64 identities), the e2ugh processor catalog (55 SKUs incl. ARM/Apple/Xeon; lineage kept), Zen5/X3D microarchitecture specs and pool minis. Field conflicts resolved V5-first (model_name/max_boost_ghz/tdp_watts canonical); OMNI complementary fields (arch, core_type, topology, memory_support, release_date) merged in place. Versions re-pinned date-first 2026-08-22.",
package/qemu.config CHANGED
@@ -2,7 +2,7 @@
2
2
  "meta": {
3
3
  "name": "qemu.config",
4
4
  "title": "saddle - QEMU Configuration (canonical JSON; sources: S6 TOML + v5 spec 11.1.0 + libvirt overlay)",
5
- "version": "2.0.0",
5
+ "version": "2.0.127",
6
6
  "date": "2026-08-22",
7
7
  "language": "en",
8
8
  "format": "JSON (canonical v2 schema; sources were S6 TOML + V5 JSON schema + libvirt conf overlay)",
@@ -90,7 +90,7 @@
90
90
  "githubSetupPython": "actions/setup-python@v5.4.0",
91
91
  "platformKernel": "6.11.0+"
92
92
  },
93
- "version": "2.0.0",
93
+ "version": "2.0.127",
94
94
  "title": "saddle - QEMU Configuration (canonical JSON; sources: S6 TOML + v5 spec 11.1.0 + libvirt overlay)",
95
95
  "project": "e2ugh v6",
96
96
  "toolchainV5": {
package/qemubridge.py CHANGED
File without changes
package/quantum.ts CHANGED
File without changes
package/render.ts CHANGED
File without changes
package/scheduler.ts CHANGED
File without changes
package/security.ts CHANGED
File without changes
package/tiers.ts CHANGED
@@ -337,6 +337,10 @@ export class sqlitekv implements Disposable {
337
337
  /** Absolute path of the database file. */
338
338
  readonly path: string;
339
339
 
340
+ /** the shared sqlite now cast (one literal, every statement reuses it) */
341
+ // biome-ignore lint/security/noSecrets: a sqlite strftime cast literal, not a credential
342
+ #nowsql = "CAST(strftime('%s','now') AS INTEGER)";
343
+
340
344
  #db: DatabaseSync;
341
345
  #closed = false;
342
346
  #getstmt: StatementSync | null = null;
@@ -373,8 +377,7 @@ export class sqlitekv implements Disposable {
373
377
  throw new tierserror(`invalid kvstore key length ${key?.length ?? 0}`);
374
378
  }
375
379
  this.#getstmt ??= this.#db.prepare(
376
- "UPDATE kvstore SET accessedat = CAST(strftime('%s','now') AS INTEGER) " +
377
- 'WHERE key = ? RETURNING value',
380
+ `UPDATE kvstore SET accessedat = ${this.#nowsql} WHERE key = ? RETURNING value`,
378
381
  );
379
382
  const row = this.#getstmt.get(key) as { value: Uint8Array } | undefined;
380
383
  return row === undefined ? null : Buffer.from(row.value);
@@ -393,7 +396,10 @@ export class sqlitekv implements Disposable {
393
396
  }
394
397
  this.#setstmt ??= this.#db.prepare(
395
398
  'INSERT INTO kvstore (key, value, createdat, accessedat) VALUES (?, ?, ' +
396
- "CAST(strftime('%s','now') AS INTEGER), CAST(strftime('%s','now') AS INTEGER)) " +
399
+ this.#nowsql +
400
+ ', ' +
401
+ this.#nowsql +
402
+ ') ' +
397
403
  'ON CONFLICT(key) DO UPDATE SET value = excluded.value, accessedat = excluded.accessedat',
398
404
  );
399
405
  this.#setstmt.run(key, value);
package/tsconfig.json CHANGED
@@ -1,29 +1,34 @@
1
+ // the saddle typescript baseline (the engine emission contract over the
2
+ // app root and the Sol theme: one project covers both).
3
+ // the grand-merge engine sources carry the loose typing baseline the
4
+ // upstream saddle authored them under (strict: false with noCheck: true),
5
+ // and the build engine emits the dist tree through this project — the
6
+ // upstream options answer verbatim (outDir dist, NodeNext, declaration),
7
+ // with the theme options (jsx, the vite client types) riding beside them
8
+ // so the one project keeps covering the Sol surface.
1
9
  {
2
10
  "compilerOptions": {
3
- "target": "ES2024",
4
11
  "module": "NodeNext",
5
12
  "moduleResolution": "NodeNext",
6
- "rootDir": ".",
13
+ "target": "ES2024",
14
+ "lib": ["ES2024", "dom", "dom.iterable"],
15
+ "jsx": "react-jsx",
7
16
  "outDir": "dist",
17
+ "rootDir": ".",
8
18
  "declaration": true,
9
- "declarationMap": true,
10
- "sourceMap": true,
11
19
  "strict": false,
12
20
  "noCheck": true,
13
- "noEmitOnError": true,
21
+ "esModuleInterop": true,
22
+ "skipLibCheck": true,
14
23
  "isolatedModules": true,
15
- "verbatimModuleSyntax": false,
16
24
  "allowSyntheticDefaultImports": true,
17
25
  "forceConsistentCasingInFileNames": true,
18
- "skipLibCheck": true,
19
- "lib": ["ES2024", "DOM", "DOM.Iterable"],
20
- "types": ["node"]
26
+ "types": ["node", "vite/client"],
27
+ "paths": {
28
+ "@/*": ["./Sol/*", "./*"],
29
+ "@saddle/isolation": ["./isolation.ts"]
30
+ }
21
31
  },
22
- "include": [
23
- "index.ts",
24
- "*.ts",
25
- "examples/**/*.ts",
26
- "jsdom.d.ts"
27
- ],
28
- "exclude": ["node_modules", "dist", "coverage", "docs", "web", "tests", "android", "ios", "desktop"]
29
- }
32
+ "include": ["*.ts", "*.tsx", "Sol/**/*.ts", "Sol/**/*.tsx", "docs/example-*.ts", "jsdom.d.ts"],
33
+ "exclude": ["node_modules", "dist", "**/*.test.ts", "coverage", "web", "tests", "build"]
34
+ }
package/virtualcpu.ts CHANGED
@@ -192,6 +192,7 @@ export const ZEN5FLAGS: readonly string[] = [
192
192
  'avx512vbmi',
193
193
  'avx512vbmi2',
194
194
  'avx512ifma',
195
+ // biome-ignore lint/security/noSecrets: a cpu capability flag list, not a credential
195
196
  'avx512vp2intersect',
196
197
  'sha_ni',
197
198
  'gfni',
package/virtualgpu.ts CHANGED
@@ -462,6 +462,7 @@ export function nvidiaVgpuProfiles(): {
462
462
  return { profileSize, fbReservation, fb: profileSize - fbReservation };
463
463
  };
464
464
  return {
465
+ // biome-ignore lint/security/noSecrets: a memory layout formula string, not a credential
465
466
  formula: 'profileSize=X*0x40000000, fbReservation=0x8000000+(profileSize-0x40000000)/0x10',
466
467
  min: '384 MiB',
467
468
  example: calc(2),
package/virtualhardware.c CHANGED
File without changes
@@ -3,7 +3,7 @@
3
3
  "meta": {
4
4
  "name": "e2ugh",
5
5
  "title": "e2ugh v6 - Master Schema, Cross-References and Compatibility Matrix",
6
- "version": "2.0.0",
6
+ "version": "2.0.127",
7
7
  "date": "2026-08-22",
8
8
  "language": "en",
9
9
  "description": "Master schema of the e2ugh v6 virtual hardware engine: binds the 10 specification files (cpu, cores, boards, gpu, vm.config, passage, docker, qemu, mttcg, mesa), defines the modularity ranges (vCPU 1-192, RAM 1-1024 GB, vRAM 8-96 GB via MIG), defaults, validation rules and the pinned 2026-08-22 compatibility matrix.",
@@ -41,7 +41,7 @@
41
41
  "llvm": "19.1.7",
42
42
  "dockerode": "4.0.8",
43
43
  "express": "5.1.0",
44
- "commander": "13.1.0",
44
+ "commander": "15.0.0",
45
45
  "zod": "4.0.5",
46
46
  "ws": "8.18.1"
47
47
  },
package/virtualization.ts CHANGED
File without changes
File without changes
package/virtualmemory.ts CHANGED
File without changes
package/vm.config.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "meta": {
4
4
  "name": "vm.config.json",
5
5
  "title": "e2ugh v6 - VM Profiles and Orchestrator Configuration (canonical schema)",
6
- "version": "2.0.0",
6
+ "version": "2.1.6",
7
7
  "date": "2026-08-22",
8
8
  "language": "en",
9
9
  "description": "22 VM profiles consumed by the VHE orchestrator. Each profile binds a CPU identity (cpu.json), core count (cores.json), board (boards.json), GPU profile (gpu.json) and runtime (qemu.json, docker.json, mesa.json). Accel policy: KVM preferred when /dev/kvm exists, TCG multi-thread fallback on GitHub-hosted runners (see passage.json).",
@@ -1218,7 +1218,7 @@
1218
1218
  "kernelLts": "6.18.45",
1219
1219
  "libvirtVersion": "12.5.0",
1220
1220
  "nodeLts": "24.19.0",
1221
- "nodeCurrent": "26.7.0",
1221
+ "nodeCurrent": "26.12.0",
1222
1222
  "typescript": "7.0.2",
1223
1223
  "runnerVersion": "2.336.0",
1224
1224
  "checkoutAction": "v6",
@@ -1613,7 +1613,7 @@
1613
1613
  },
1614
1614
  "toolchain": {
1615
1615
  "nodeLts": "24.19.0",
1616
- "nodeCurrent": "26.7.0",
1616
+ "nodeCurrent": "26.12.0",
1617
1617
  "typescript": "7.0.2",
1618
1618
  "checkout": "v6",
1619
1619
  "setupNode": "v6",