@wenathlan/saddle 1.8.17 → 2.0.2

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 (1005) hide show
  1. package/Dockerfile +1339 -0
  2. package/README.md +68 -22
  3. package/alternatives.ts +1218 -0
  4. package/biome.json +153 -0
  5. package/boards.json +1517 -0
  6. package/compute.ts +3144 -0
  7. package/cores.json +1801 -0
  8. package/dist/acquisition.d.ts +359 -0
  9. package/dist/acquisition.d.ts.map +1 -0
  10. package/dist/acquisition.js +629 -0
  11. package/dist/acquisition.js.map +1 -0
  12. package/dist/alternatives.d.ts +509 -0
  13. package/dist/alternatives.d.ts.map +1 -0
  14. package/dist/alternatives.js +951 -0
  15. package/dist/alternatives.js.map +1 -0
  16. package/dist/automation.d.ts +426 -0
  17. package/dist/automation.d.ts.map +1 -0
  18. package/dist/automation.js +561 -0
  19. package/dist/automation.js.map +1 -0
  20. package/dist/browser.d.ts +562 -0
  21. package/dist/browser.d.ts.map +1 -0
  22. package/dist/browser.js +1057 -0
  23. package/dist/browser.js.map +1 -0
  24. package/dist/capacitor.config.d.ts +13 -0
  25. package/dist/capacitor.config.d.ts.map +1 -0
  26. package/dist/capacitor.config.js +26 -0
  27. package/dist/capacitor.config.js.map +1 -0
  28. package/dist/cli.d.ts +17 -0
  29. package/dist/cli.d.ts.map +1 -0
  30. package/dist/cli.js +111 -0
  31. package/dist/cli.js.map +1 -0
  32. package/dist/communication.d.ts +192 -0
  33. package/dist/communication.d.ts.map +1 -0
  34. package/dist/communication.js +418 -0
  35. package/dist/communication.js.map +1 -0
  36. package/dist/compute.d.ts +1161 -0
  37. package/dist/compute.d.ts.map +1 -0
  38. package/dist/compute.js +2273 -0
  39. package/dist/compute.js.map +1 -0
  40. package/dist/distribution.d.ts +529 -0
  41. package/dist/distribution.d.ts.map +1 -0
  42. package/dist/distribution.js +811 -0
  43. package/dist/distribution.js.map +1 -0
  44. package/dist/execution.d.ts +530 -0
  45. package/dist/execution.d.ts.map +1 -0
  46. package/dist/execution.js +761 -0
  47. package/dist/execution.js.map +1 -0
  48. package/dist/format.d.ts +19 -0
  49. package/dist/format.d.ts.map +1 -0
  50. package/dist/format.js +60 -0
  51. package/dist/format.js.map +1 -0
  52. package/dist/foundation.d.ts +176 -0
  53. package/dist/foundation.d.ts.map +1 -0
  54. package/dist/foundation.js +309 -0
  55. package/dist/foundation.js.map +1 -0
  56. package/dist/index.d.ts +733 -122
  57. package/dist/index.d.ts.map +1 -1
  58. package/dist/index.js +1018 -122
  59. package/dist/index.js.map +1 -1
  60. package/dist/integration.d.ts +236 -0
  61. package/dist/integration.d.ts.map +1 -0
  62. package/dist/integration.js +236 -0
  63. package/dist/integration.js.map +1 -0
  64. package/dist/intelligence.d.ts +94 -0
  65. package/dist/intelligence.d.ts.map +1 -0
  66. package/dist/intelligence.js +145 -0
  67. package/dist/intelligence.js.map +1 -0
  68. package/dist/isolation.d.ts +129 -0
  69. package/dist/isolation.d.ts.map +1 -0
  70. package/dist/isolation.js +96 -0
  71. package/dist/isolation.js.map +1 -0
  72. package/dist/media.d.ts +344 -0
  73. package/dist/media.d.ts.map +1 -0
  74. package/dist/media.js +986 -0
  75. package/dist/media.js.map +1 -0
  76. package/dist/modes.d.ts +359 -0
  77. package/dist/modes.d.ts.map +1 -0
  78. package/dist/modes.js +134 -0
  79. package/dist/modes.js.map +1 -0
  80. package/dist/{library/public.d.ts → operations.d.ts} +15 -1
  81. package/dist/operations.d.ts.map +1 -0
  82. package/dist/{library/public.js → operations.js} +18 -7
  83. package/dist/operations.js.map +1 -0
  84. package/dist/orchestrator.d.ts +1339 -0
  85. package/dist/orchestrator.d.ts.map +1 -0
  86. package/dist/orchestrator.js +4308 -0
  87. package/dist/orchestrator.js.map +1 -0
  88. package/dist/performance.d.ts +416 -0
  89. package/dist/performance.d.ts.map +1 -0
  90. package/dist/performance.js +827 -0
  91. package/dist/performance.js.map +1 -0
  92. package/dist/quantum.d.ts +810 -0
  93. package/dist/quantum.d.ts.map +1 -0
  94. package/dist/quantum.js +2073 -0
  95. package/dist/quantum.js.map +1 -0
  96. package/dist/render.d.ts +381 -0
  97. package/dist/render.d.ts.map +1 -0
  98. package/dist/render.js +1073 -0
  99. package/dist/render.js.map +1 -0
  100. package/dist/scheduler.d.ts +596 -0
  101. package/dist/scheduler.d.ts.map +1 -0
  102. package/dist/scheduler.js +1259 -0
  103. package/dist/scheduler.js.map +1 -0
  104. package/dist/security.d.ts +501 -0
  105. package/dist/security.d.ts.map +1 -0
  106. package/dist/security.js +1170 -0
  107. package/dist/security.js.map +1 -0
  108. package/dist/server.d.ts +21 -0
  109. package/dist/server.d.ts.map +1 -0
  110. package/dist/{server/node.js → server.js} +16 -2
  111. package/dist/server.js.map +1 -0
  112. package/dist/tiers.d.ts +1002 -0
  113. package/dist/tiers.d.ts.map +1 -0
  114. package/dist/tiers.js +2165 -0
  115. package/dist/tiers.js.map +1 -0
  116. package/dist/virtual.d.ts +641 -0
  117. package/dist/virtual.d.ts.map +1 -0
  118. package/dist/virtual.js +1285 -0
  119. package/dist/virtual.js.map +1 -0
  120. package/dist/virtualcpu.d.ts +316 -0
  121. package/dist/virtualcpu.d.ts.map +1 -0
  122. package/dist/virtualcpu.js +1180 -0
  123. package/dist/virtualcpu.js.map +1 -0
  124. package/dist/virtualgpu.d.ts +345 -0
  125. package/dist/virtualgpu.d.ts.map +1 -0
  126. package/dist/virtualgpu.js +1000 -0
  127. package/dist/virtualgpu.js.map +1 -0
  128. package/dist/virtualization.d.ts +607 -0
  129. package/dist/virtualization.d.ts.map +1 -0
  130. package/dist/virtualization.js +1187 -0
  131. package/dist/virtualization.js.map +1 -0
  132. package/dist/virtualmemory.d.ts +818 -0
  133. package/dist/virtualmemory.d.ts.map +1 -0
  134. package/dist/virtualmemory.js +1796 -0
  135. package/dist/virtualmemory.js.map +1 -0
  136. package/dist/webscrape.d.ts +720 -0
  137. package/dist/webscrape.d.ts.map +1 -0
  138. package/dist/webscrape.js +2697 -0
  139. package/dist/webscrape.js.map +1 -0
  140. package/docker.config +769 -0
  141. package/docs/CONVERSA.txt +1523 -0
  142. package/docs/alternatives.md +499 -0
  143. package/docs/architecture-1.8.19.md +76 -0
  144. package/docs/architecture-1.8.19.mmd +33 -0
  145. package/docs/architecture-1.8.19.png +0 -0
  146. package/docs/architecture.md +355 -0
  147. package/docs/artifactavailability.md +6 -0
  148. package/docs/brancharchive-2026-08-18.md +18 -0
  149. package/docs/browser.md +7 -0
  150. package/docs/consolidation.md +70 -0
  151. package/docs/e2ugh-engine.md +528 -0
  152. package/{dist/examples/localjob.js → docs/example-localjob.ts} +3 -3
  153. package/{dist/examples/publicapi.js → docs/example-publicapi.ts} +2 -2
  154. package/docs/hardware.md +342 -0
  155. package/docs/optimization.md +126 -0
  156. package/docs/performance.md +499 -0
  157. package/docs/planning.1.8.18.md +94 -0
  158. package/docs/planning.1.8.19.md +49 -0
  159. package/docs/releasenotes-1.8.17.md +6 -0
  160. package/docs/releasenotes-1.8.18.md +32 -0
  161. package/docs/releasenotes-1.8.19.md +35 -0
  162. package/docs/research-1.8.18-isolation.md +43 -0
  163. package/docs/research-1.8.19-virtual-browser.md +27 -0
  164. package/docs/saddle.archive.1.8.17.tar.gz.gpg +0 -0
  165. package/docs/security.md +454 -0
  166. package/docs/todo-1.8.16.md +56 -1
  167. package/docs/todo-1.8.18.md +164 -0
  168. package/docs/todo-1.8.19.md +241 -0
  169. package/docs/viability.md +777 -0
  170. package/docs/virtualization.md +335 -0
  171. package/docs/web-duplicatecleanup.md +9 -0
  172. package/docs/web-ideas.md +106 -0
  173. package/docs/workflowimprovements-2026-08-19.md +70 -0
  174. package/gpumonitor.cpp +1543 -0
  175. package/gpus.json +2408 -0
  176. package/index.ts +1478 -0
  177. package/media.ts +1337 -0
  178. package/mttg.config +1549 -0
  179. package/orchestrator.ts +5462 -0
  180. package/package.json +304 -55
  181. package/passage.config +1331 -0
  182. package/performance.ts +1049 -0
  183. package/processors.json +2217 -0
  184. package/qemu.config +1062 -0
  185. package/qemubridge.py +1340 -0
  186. package/quantum.ts +2393 -0
  187. package/render.ts +1325 -0
  188. package/scheduler.ts +1600 -0
  189. package/security.ts +1449 -0
  190. package/tiers.ts +2871 -0
  191. package/tsconfig.json +29 -0
  192. package/virtualcpu.ts +1273 -0
  193. package/virtualgpu.ts +1181 -0
  194. package/virtualhardware.c +1011 -0
  195. package/virtualhardware.json +739 -0
  196. package/virtualization.ts +1628 -0
  197. package/virtualizationcore.cpp +4635 -0
  198. package/virtualmemory.ts +2303 -0
  199. package/vm.config.json +1910 -0
  200. package/{extension → web/extension}/manifest.json +1 -1
  201. package/web/readme.md +382 -0
  202. package/web/tsconfig.json +25 -0
  203. package/dist/adapters/forge.d.ts +0 -17
  204. package/dist/adapters/forge.d.ts.map +0 -1
  205. package/dist/adapters/forge.js +0 -19
  206. package/dist/adapters/forge.js.map +0 -1
  207. package/dist/adapters/forgejo.d.ts +0 -49
  208. package/dist/adapters/forgejo.d.ts.map +0 -1
  209. package/dist/adapters/forgejo.js +0 -8
  210. package/dist/adapters/forgejo.js.map +0 -1
  211. package/dist/adapters/github.d.ts +0 -12
  212. package/dist/adapters/github.d.ts.map +0 -1
  213. package/dist/adapters/github.js +0 -20
  214. package/dist/adapters/github.js.map +0 -1
  215. package/dist/adapters/gitlab.d.ts +0 -17
  216. package/dist/adapters/gitlab.d.ts.map +0 -1
  217. package/dist/adapters/gitlab.js +0 -10
  218. package/dist/adapters/gitlab.js.map +0 -1
  219. package/dist/adapters/huggingface.d.ts +0 -17
  220. package/dist/adapters/huggingface.d.ts.map +0 -1
  221. package/dist/adapters/huggingface.js +0 -6
  222. package/dist/adapters/huggingface.js.map +0 -1
  223. package/dist/adapters/socket.d.ts +0 -11
  224. package/dist/adapters/socket.d.ts.map +0 -1
  225. package/dist/adapters/socket.js +0 -17
  226. package/dist/adapters/socket.js.map +0 -1
  227. package/dist/adapters/transport.d.ts +0 -7
  228. package/dist/adapters/transport.d.ts.map +0 -1
  229. package/dist/adapters/transport.js +0 -36
  230. package/dist/adapters/transport.js.map +0 -1
  231. package/dist/ai/chunk.d.ts +0 -2
  232. package/dist/ai/chunk.d.ts.map +0 -1
  233. package/dist/ai/chunk.js +0 -36
  234. package/dist/ai/chunk.js.map +0 -1
  235. package/dist/ai/llmstxt.d.ts +0 -6
  236. package/dist/ai/llmstxt.d.ts.map +0 -1
  237. package/dist/ai/llmstxt.js +0 -12
  238. package/dist/ai/llmstxt.js.map +0 -1
  239. package/dist/ai/provenance.d.ts +0 -22
  240. package/dist/ai/provenance.d.ts.map +0 -1
  241. package/dist/ai/provenance.js +0 -25
  242. package/dist/ai/provenance.js.map +0 -1
  243. package/dist/ai/rag.d.ts +0 -26
  244. package/dist/ai/rag.d.ts.map +0 -1
  245. package/dist/ai/rag.js +0 -22
  246. package/dist/ai/rag.js.map +0 -1
  247. package/dist/ai/tokens.d.ts +0 -15
  248. package/dist/ai/tokens.d.ts.map +0 -1
  249. package/dist/ai/tokens.js +0 -9
  250. package/dist/ai/tokens.js.map +0 -1
  251. package/dist/api/auth.d.ts +0 -16
  252. package/dist/api/auth.d.ts.map +0 -1
  253. package/dist/api/auth.js +0 -19
  254. package/dist/api/auth.js.map +0 -1
  255. package/dist/api/contracts.d.ts +0 -28
  256. package/dist/api/contracts.d.ts.map +0 -1
  257. package/dist/api/contracts.js +0 -14
  258. package/dist/api/contracts.js.map +0 -1
  259. package/dist/api/control.d.ts +0 -10
  260. package/dist/api/control.d.ts.map +0 -1
  261. package/dist/api/control.js +0 -35
  262. package/dist/api/control.js.map +0 -1
  263. package/dist/api/http.d.ts +0 -7
  264. package/dist/api/http.d.ts.map +0 -1
  265. package/dist/api/http.js +0 -12
  266. package/dist/api/http.js.map +0 -1
  267. package/dist/api/rate.d.ts +0 -28
  268. package/dist/api/rate.d.ts.map +0 -1
  269. package/dist/api/rate.js +0 -36
  270. package/dist/api/rate.js.map +0 -1
  271. package/dist/api/security.d.ts +0 -12
  272. package/dist/api/security.d.ts.map +0 -1
  273. package/dist/api/security.js +0 -56
  274. package/dist/api/security.js.map +0 -1
  275. package/dist/api/service.d.ts +0 -5
  276. package/dist/api/service.d.ts.map +0 -1
  277. package/dist/api/service.js +0 -70
  278. package/dist/api/service.js.map +0 -1
  279. package/dist/apps/registry.d.ts +0 -33
  280. package/dist/apps/registry.d.ts.map +0 -1
  281. package/dist/apps/registry.js +0 -24
  282. package/dist/apps/registry.js.map +0 -1
  283. package/dist/binary/archive.d.ts +0 -27
  284. package/dist/binary/archive.d.ts.map +0 -1
  285. package/dist/binary/archive.js +0 -46
  286. package/dist/binary/archive.js.map +0 -1
  287. package/dist/binary/build.d.ts +0 -29
  288. package/dist/binary/build.d.ts.map +0 -1
  289. package/dist/binary/build.js +0 -17
  290. package/dist/binary/build.js.map +0 -1
  291. package/dist/binary/transform.d.ts +0 -70
  292. package/dist/binary/transform.d.ts.map +0 -1
  293. package/dist/binary/transform.js +0 -105
  294. package/dist/binary/transform.js.map +0 -1
  295. package/dist/bot/adapter.d.ts +0 -5
  296. package/dist/bot/adapter.d.ts.map +0 -1
  297. package/dist/bot/adapter.js +0 -11
  298. package/dist/bot/adapter.js.map +0 -1
  299. package/dist/bot/bot.d.ts +0 -28
  300. package/dist/bot/bot.d.ts.map +0 -1
  301. package/dist/bot/bot.js +0 -52
  302. package/dist/bot/bot.js.map +0 -1
  303. package/dist/bot/commands.d.ts +0 -8
  304. package/dist/bot/commands.d.ts.map +0 -1
  305. package/dist/bot/commands.js +0 -19
  306. package/dist/bot/commands.js.map +0 -1
  307. package/dist/bot/permissions.d.ts +0 -13
  308. package/dist/bot/permissions.d.ts.map +0 -1
  309. package/dist/bot/permissions.js +0 -16
  310. package/dist/bot/permissions.js.map +0 -1
  311. package/dist/browser/actions.d.ts +0 -33
  312. package/dist/browser/actions.d.ts.map +0 -1
  313. package/dist/browser/actions.js +0 -44
  314. package/dist/browser/actions.js.map +0 -1
  315. package/dist/browser/agent.d.ts +0 -21
  316. package/dist/browser/agent.d.ts.map +0 -1
  317. package/dist/browser/agent.js +0 -13
  318. package/dist/browser/agent.js.map +0 -1
  319. package/dist/browser/context.d.ts +0 -43
  320. package/dist/browser/context.d.ts.map +0 -1
  321. package/dist/browser/context.js +0 -54
  322. package/dist/browser/context.js.map +0 -1
  323. package/dist/browser/fingerprint.d.ts +0 -4
  324. package/dist/browser/fingerprint.d.ts.map +0 -1
  325. package/dist/browser/fingerprint.js +0 -12
  326. package/dist/browser/fingerprint.js.map +0 -1
  327. package/dist/browser/index.d.ts +0 -11
  328. package/dist/browser/index.d.ts.map +0 -1
  329. package/dist/browser/index.js +0 -11
  330. package/dist/browser/index.js.map +0 -1
  331. package/dist/browser/playwright.d.ts +0 -11
  332. package/dist/browser/playwright.d.ts.map +0 -1
  333. package/dist/browser/playwright.js +0 -24
  334. package/dist/browser/playwright.js.map +0 -1
  335. package/dist/browser/recorder.d.ts +0 -21
  336. package/dist/browser/recorder.d.ts.map +0 -1
  337. package/dist/browser/recorder.js +0 -58
  338. package/dist/browser/recorder.js.map +0 -1
  339. package/dist/browser/session.d.ts +0 -14
  340. package/dist/browser/session.d.ts.map +0 -1
  341. package/dist/browser/session.js +0 -21
  342. package/dist/browser/session.js.map +0 -1
  343. package/dist/browser/snapshot.d.ts +0 -69
  344. package/dist/browser/snapshot.d.ts.map +0 -1
  345. package/dist/browser/snapshot.js +0 -133
  346. package/dist/browser/snapshot.js.map +0 -1
  347. package/dist/captcha/contract.d.ts +0 -35
  348. package/dist/captcha/contract.d.ts.map +0 -1
  349. package/dist/captcha/contract.js +0 -17
  350. package/dist/captcha/contract.js.map +0 -1
  351. package/dist/captcha/evidence.d.ts +0 -10
  352. package/dist/captcha/evidence.d.ts.map +0 -1
  353. package/dist/captcha/evidence.js +0 -9
  354. package/dist/captcha/evidence.js.map +0 -1
  355. package/dist/captcha/guard.d.ts +0 -23
  356. package/dist/captcha/guard.d.ts.map +0 -1
  357. package/dist/captcha/guard.js +0 -12
  358. package/dist/captcha/guard.js.map +0 -1
  359. package/dist/cli/main.d.ts +0 -4
  360. package/dist/cli/main.d.ts.map +0 -1
  361. package/dist/cli/main.js +0 -46
  362. package/dist/cli/main.js.map +0 -1
  363. package/dist/core/errors.d.ts +0 -84
  364. package/dist/core/errors.d.ts.map +0 -1
  365. package/dist/core/errors.js +0 -54
  366. package/dist/core/errors.js.map +0 -1
  367. package/dist/core/events.d.ts +0 -9
  368. package/dist/core/events.d.ts.map +0 -1
  369. package/dist/core/events.js +0 -21
  370. package/dist/core/events.js.map +0 -1
  371. package/dist/core/hash.d.ts +0 -10
  372. package/dist/core/hash.d.ts.map +0 -1
  373. package/dist/core/hash.js +0 -82
  374. package/dist/core/hash.js.map +0 -1
  375. package/dist/core/ids.d.ts +0 -10
  376. package/dist/core/ids.d.ts.map +0 -1
  377. package/dist/core/ids.js +0 -15
  378. package/dist/core/ids.js.map +0 -1
  379. package/dist/delivery/manifest.d.ts +0 -35
  380. package/dist/delivery/manifest.d.ts.map +0 -1
  381. package/dist/delivery/manifest.js +0 -68
  382. package/dist/delivery/manifest.js.map +0 -1
  383. package/dist/deploy/index.d.ts +0 -6
  384. package/dist/deploy/index.d.ts.map +0 -1
  385. package/dist/deploy/index.js +0 -6
  386. package/dist/deploy/index.js.map +0 -1
  387. package/dist/dispatch/resumable.d.ts +0 -102
  388. package/dist/dispatch/resumable.d.ts.map +0 -1
  389. package/dist/dispatch/resumable.js +0 -64
  390. package/dist/dispatch/resumable.js.map +0 -1
  391. package/dist/dispatch/workflow.d.ts +0 -6
  392. package/dist/dispatch/workflow.d.ts.map +0 -1
  393. package/dist/dispatch/workflow.js +0 -37
  394. package/dist/dispatch/workflow.js.map +0 -1
  395. package/dist/domain/artifacts.d.ts +0 -12
  396. package/dist/domain/artifacts.d.ts.map +0 -1
  397. package/dist/domain/artifacts.js +0 -14
  398. package/dist/domain/artifacts.js.map +0 -1
  399. package/dist/domain/jobs.d.ts +0 -12
  400. package/dist/domain/jobs.d.ts.map +0 -1
  401. package/dist/domain/jobs.js +0 -20
  402. package/dist/domain/jobs.js.map +0 -1
  403. package/dist/domain/providers.d.ts +0 -10
  404. package/dist/domain/providers.d.ts.map +0 -1
  405. package/dist/domain/providers.js +0 -8
  406. package/dist/domain/providers.js.map +0 -1
  407. package/dist/domain/runtime.d.ts +0 -14
  408. package/dist/domain/runtime.d.ts.map +0 -1
  409. package/dist/domain/runtime.js +0 -10
  410. package/dist/domain/runtime.js.map +0 -1
  411. package/dist/domain/sessions.d.ts +0 -12
  412. package/dist/domain/sessions.d.ts.map +0 -1
  413. package/dist/domain/sessions.js +0 -57
  414. package/dist/domain/sessions.js.map +0 -1
  415. package/dist/examples/localjob.d.ts +0 -2
  416. package/dist/examples/localjob.d.ts.map +0 -1
  417. package/dist/examples/localjob.js.map +0 -1
  418. package/dist/examples/publicapi.d.ts +0 -2
  419. package/dist/examples/publicapi.d.ts.map +0 -1
  420. package/dist/examples/publicapi.js.map +0 -1
  421. package/dist/extension/build.d.ts +0 -9
  422. package/dist/extension/build.d.ts.map +0 -1
  423. package/dist/extension/build.js +0 -85
  424. package/dist/extension/build.js.map +0 -1
  425. package/dist/extension/content.d.ts +0 -6
  426. package/dist/extension/content.d.ts.map +0 -1
  427. package/dist/extension/content.js +0 -135
  428. package/dist/extension/content.js.map +0 -1
  429. package/dist/extension/index.d.ts +0 -7
  430. package/dist/extension/index.d.ts.map +0 -1
  431. package/dist/extension/index.js +0 -7
  432. package/dist/extension/index.js.map +0 -1
  433. package/dist/extension/pagebridge.d.ts +0 -6
  434. package/dist/extension/pagebridge.d.ts.map +0 -1
  435. package/dist/extension/pagebridge.js +0 -42
  436. package/dist/extension/pagebridge.js.map +0 -1
  437. package/dist/extension/permissions.d.ts +0 -26
  438. package/dist/extension/permissions.d.ts.map +0 -1
  439. package/dist/extension/permissions.js +0 -28
  440. package/dist/extension/permissions.js.map +0 -1
  441. package/dist/extension/popup.d.ts +0 -5
  442. package/dist/extension/popup.d.ts.map +0 -1
  443. package/dist/extension/popup.js +0 -26
  444. package/dist/extension/popup.js.map +0 -1
  445. package/dist/extension/protocol.d.ts +0 -58
  446. package/dist/extension/protocol.d.ts.map +0 -1
  447. package/dist/extension/protocol.js +0 -101
  448. package/dist/extension/protocol.js.map +0 -1
  449. package/dist/extension/serviceworker.d.ts +0 -25
  450. package/dist/extension/serviceworker.d.ts.map +0 -1
  451. package/dist/extension/serviceworker.js +0 -102
  452. package/dist/extension/serviceworker.js.map +0 -1
  453. package/dist/extension/worker.d.ts +0 -28
  454. package/dist/extension/worker.d.ts.map +0 -1
  455. package/dist/extension/worker.js +0 -22
  456. package/dist/extension/worker.js.map +0 -1
  457. package/dist/format/check.d.ts +0 -8
  458. package/dist/format/check.d.ts.map +0 -1
  459. package/dist/format/check.js +0 -38
  460. package/dist/format/check.js.map +0 -1
  461. package/dist/library/public.d.ts.map +0 -1
  462. package/dist/library/public.js.map +0 -1
  463. package/dist/mcp/browser.d.ts +0 -9
  464. package/dist/mcp/browser.d.ts.map +0 -1
  465. package/dist/mcp/browser.js +0 -13
  466. package/dist/mcp/browser.js.map +0 -1
  467. package/dist/mcp/server.d.ts +0 -35
  468. package/dist/mcp/server.d.ts.map +0 -1
  469. package/dist/mcp/server.js +0 -40
  470. package/dist/mcp/server.js.map +0 -1
  471. package/dist/mcp/transport.d.ts +0 -7
  472. package/dist/mcp/transport.d.ts.map +0 -1
  473. package/dist/mcp/transport.js +0 -17
  474. package/dist/mcp/transport.js.map +0 -1
  475. package/dist/memory/bridge.d.ts +0 -14
  476. package/dist/memory/bridge.d.ts.map +0 -1
  477. package/dist/memory/bridge.js +0 -16
  478. package/dist/memory/bridge.js.map +0 -1
  479. package/dist/memory/engine.d.ts +0 -38
  480. package/dist/memory/engine.d.ts.map +0 -1
  481. package/dist/memory/engine.js +0 -109
  482. package/dist/memory/engine.js.map +0 -1
  483. package/dist/memory/modes.d.ts +0 -43
  484. package/dist/memory/modes.d.ts.map +0 -1
  485. package/dist/memory/modes.js +0 -66
  486. package/dist/memory/modes.js.map +0 -1
  487. package/dist/memory/objects.d.ts +0 -21
  488. package/dist/memory/objects.d.ts.map +0 -1
  489. package/dist/memory/objects.js +0 -20
  490. package/dist/memory/objects.js.map +0 -1
  491. package/dist/memory/planner.d.ts +0 -66
  492. package/dist/memory/planner.d.ts.map +0 -1
  493. package/dist/memory/planner.js +0 -108
  494. package/dist/memory/planner.js.map +0 -1
  495. package/dist/memory/targets.d.ts +0 -78
  496. package/dist/memory/targets.d.ts.map +0 -1
  497. package/dist/memory/targets.js +0 -29
  498. package/dist/memory/targets.js.map +0 -1
  499. package/dist/memory/transforms.d.ts +0 -19
  500. package/dist/memory/transforms.d.ts.map +0 -1
  501. package/dist/memory/transforms.js +0 -14
  502. package/dist/memory/transforms.js.map +0 -1
  503. package/dist/modes/matrix.d.ts +0 -23
  504. package/dist/modes/matrix.d.ts.map +0 -1
  505. package/dist/modes/matrix.js +0 -18
  506. package/dist/modes/matrix.js.map +0 -1
  507. package/dist/modes/modes.d.ts +0 -33
  508. package/dist/modes/modes.d.ts.map +0 -1
  509. package/dist/modes/modes.js +0 -15
  510. package/dist/modes/modes.js.map +0 -1
  511. package/dist/modes/resolve.d.ts +0 -96
  512. package/dist/modes/resolve.d.ts.map +0 -1
  513. package/dist/modes/resolve.js +0 -48
  514. package/dist/modes/resolve.js.map +0 -1
  515. package/dist/observability/metrics.d.ts +0 -14
  516. package/dist/observability/metrics.d.ts.map +0 -1
  517. package/dist/observability/metrics.js +0 -18
  518. package/dist/observability/metrics.js.map +0 -1
  519. package/dist/packager/manifest.d.ts +0 -66
  520. package/dist/packager/manifest.d.ts.map +0 -1
  521. package/dist/packager/manifest.js +0 -94
  522. package/dist/packager/manifest.js.map +0 -1
  523. package/dist/packager/publish.d.ts +0 -51
  524. package/dist/packager/publish.d.ts.map +0 -1
  525. package/dist/packager/publish.js +0 -18
  526. package/dist/packager/publish.js.map +0 -1
  527. package/dist/packager/targetcli.d.ts +0 -7
  528. package/dist/packager/targetcli.d.ts.map +0 -1
  529. package/dist/packager/targetcli.js +0 -22
  530. package/dist/packager/targetcli.js.map +0 -1
  531. package/dist/persistence/adapter.d.ts +0 -5
  532. package/dist/persistence/adapter.d.ts.map +0 -1
  533. package/dist/persistence/adapter.js +0 -11
  534. package/dist/persistence/adapter.js.map +0 -1
  535. package/dist/persistence/drizzle.d.ts +0 -2
  536. package/dist/persistence/drizzle.d.ts.map +0 -1
  537. package/dist/persistence/drizzle.js +0 -12
  538. package/dist/persistence/drizzle.js.map +0 -1
  539. package/dist/persistence/memory.d.ts +0 -2
  540. package/dist/persistence/memory.d.ts.map +0 -1
  541. package/dist/persistence/memory.js +0 -27
  542. package/dist/persistence/memory.js.map +0 -1
  543. package/dist/persistence/migrations.d.ts +0 -19
  544. package/dist/persistence/migrations.d.ts.map +0 -1
  545. package/dist/persistence/migrations.js +0 -13
  546. package/dist/persistence/migrations.js.map +0 -1
  547. package/dist/persistence/prisma.d.ts +0 -2
  548. package/dist/persistence/prisma.d.ts.map +0 -1
  549. package/dist/persistence/prisma.js +0 -25
  550. package/dist/persistence/prisma.js.map +0 -1
  551. package/dist/persistence/schema.d.ts +0 -63
  552. package/dist/persistence/schema.d.ts.map +0 -1
  553. package/dist/persistence/schema.js +0 -28
  554. package/dist/persistence/schema.js.map +0 -1
  555. package/dist/persistence/sql.d.ts +0 -3
  556. package/dist/persistence/sql.d.ts.map +0 -1
  557. package/dist/persistence/sql.js +0 -37
  558. package/dist/persistence/sql.js.map +0 -1
  559. package/dist/protocol/blocks.d.ts +0 -10
  560. package/dist/protocol/blocks.d.ts.map +0 -1
  561. package/dist/protocol/blocks.js +0 -26
  562. package/dist/protocol/blocks.js.map +0 -1
  563. package/dist/protocol/json.d.ts +0 -6
  564. package/dist/protocol/json.d.ts.map +0 -1
  565. package/dist/protocol/json.js +0 -6
  566. package/dist/protocol/json.js.map +0 -1
  567. package/dist/protocol/ndjson.d.ts +0 -3
  568. package/dist/protocol/ndjson.d.ts.map +0 -1
  569. package/dist/protocol/ndjson.js +0 -20
  570. package/dist/protocol/ndjson.js.map +0 -1
  571. package/dist/protocol/sse.d.ts +0 -7
  572. package/dist/protocol/sse.d.ts.map +0 -1
  573. package/dist/protocol/sse.js +0 -25
  574. package/dist/protocol/sse.js.map +0 -1
  575. package/dist/proxy/pool.d.ts +0 -9
  576. package/dist/proxy/pool.d.ts.map +0 -1
  577. package/dist/proxy/pool.js +0 -27
  578. package/dist/proxy/pool.js.map +0 -1
  579. package/dist/queue/idempotency.d.ts +0 -10
  580. package/dist/queue/idempotency.d.ts.map +0 -1
  581. package/dist/queue/idempotency.js +0 -13
  582. package/dist/queue/idempotency.js.map +0 -1
  583. package/dist/queue/persistent.d.ts +0 -14
  584. package/dist/queue/persistent.d.ts.map +0 -1
  585. package/dist/queue/persistent.js +0 -66
  586. package/dist/queue/persistent.js.map +0 -1
  587. package/dist/queue/queue.d.ts +0 -7
  588. package/dist/queue/queue.d.ts.map +0 -1
  589. package/dist/queue/queue.js +0 -55
  590. package/dist/queue/queue.js.map +0 -1
  591. package/dist/queue/saga.d.ts +0 -5
  592. package/dist/queue/saga.d.ts.map +0 -1
  593. package/dist/queue/saga.js +0 -20
  594. package/dist/queue/saga.js.map +0 -1
  595. package/dist/release/assets.d.ts +0 -144
  596. package/dist/release/assets.d.ts.map +0 -1
  597. package/dist/release/assets.js +0 -157
  598. package/dist/release/assets.js.map +0 -1
  599. package/dist/release/evidence.d.ts +0 -92
  600. package/dist/release/evidence.d.ts.map +0 -1
  601. package/dist/release/evidence.js +0 -148
  602. package/dist/release/evidence.js.map +0 -1
  603. package/dist/release/verify.d.ts +0 -12
  604. package/dist/release/verify.d.ts.map +0 -1
  605. package/dist/release/verify.js +0 -112
  606. package/dist/release/verify.js.map +0 -1
  607. package/dist/runners/chain.d.ts +0 -125
  608. package/dist/runners/chain.d.ts.map +0 -1
  609. package/dist/runners/chain.js +0 -95
  610. package/dist/runners/chain.js.map +0 -1
  611. package/dist/runners/health.d.ts +0 -36
  612. package/dist/runners/health.d.ts.map +0 -1
  613. package/dist/runners/health.js +0 -26
  614. package/dist/runners/health.js.map +0 -1
  615. package/dist/runners/heartbeat.d.ts +0 -23
  616. package/dist/runners/heartbeat.d.ts.map +0 -1
  617. package/dist/runners/heartbeat.js +0 -29
  618. package/dist/runners/heartbeat.js.map +0 -1
  619. package/dist/runners/inprocess.d.ts +0 -17
  620. package/dist/runners/inprocess.d.ts.map +0 -1
  621. package/dist/runners/inprocess.js +0 -20
  622. package/dist/runners/inprocess.js.map +0 -1
  623. package/dist/runners/scheduler.d.ts +0 -5
  624. package/dist/runners/scheduler.d.ts.map +0 -1
  625. package/dist/runners/scheduler.js +0 -19
  626. package/dist/runners/scheduler.js.map +0 -1
  627. package/dist/runtime/abort.d.ts +0 -8
  628. package/dist/runtime/abort.d.ts.map +0 -1
  629. package/dist/runtime/abort.js +0 -13
  630. package/dist/runtime/abort.js.map +0 -1
  631. package/dist/runtime/compatibility.d.ts +0 -37
  632. package/dist/runtime/compatibility.d.ts.map +0 -1
  633. package/dist/runtime/compatibility.js +0 -10
  634. package/dist/runtime/compatibility.js.map +0 -1
  635. package/dist/runtime/detect.d.ts +0 -13
  636. package/dist/runtime/detect.d.ts.map +0 -1
  637. package/dist/runtime/detect.js +0 -18
  638. package/dist/runtime/detect.js.map +0 -1
  639. package/dist/runtime/engine.d.ts +0 -20
  640. package/dist/runtime/engine.d.ts.map +0 -1
  641. package/dist/runtime/engine.js +0 -61
  642. package/dist/runtime/engine.js.map +0 -1
  643. package/dist/runtime/retry.d.ts +0 -19
  644. package/dist/runtime/retry.d.ts.map +0 -1
  645. package/dist/runtime/retry.js +0 -54
  646. package/dist/runtime/retry.js.map +0 -1
  647. package/dist/runtime/worker.d.ts +0 -10
  648. package/dist/runtime/worker.d.ts.map +0 -1
  649. package/dist/runtime/worker.js +0 -25
  650. package/dist/runtime/worker.js.map +0 -1
  651. package/dist/scrape/cache.d.ts +0 -45
  652. package/dist/scrape/cache.d.ts.map +0 -1
  653. package/dist/scrape/cache.js +0 -45
  654. package/dist/scrape/cache.js.map +0 -1
  655. package/dist/scrape/crawl.d.ts +0 -47
  656. package/dist/scrape/crawl.d.ts.map +0 -1
  657. package/dist/scrape/crawl.js +0 -114
  658. package/dist/scrape/crawl.js.map +0 -1
  659. package/dist/scrape/extract.d.ts +0 -63
  660. package/dist/scrape/extract.d.ts.map +0 -1
  661. package/dist/scrape/extract.js +0 -47
  662. package/dist/scrape/extract.js.map +0 -1
  663. package/dist/scrape/normalize.d.ts +0 -52
  664. package/dist/scrape/normalize.d.ts.map +0 -1
  665. package/dist/scrape/normalize.js +0 -102
  666. package/dist/scrape/normalize.js.map +0 -1
  667. package/dist/scrape/robots.d.ts +0 -37
  668. package/dist/scrape/robots.d.ts.map +0 -1
  669. package/dist/scrape/robots.js +0 -71
  670. package/dist/scrape/robots.js.map +0 -1
  671. package/dist/scrape/schema.d.ts +0 -23
  672. package/dist/scrape/schema.d.ts.map +0 -1
  673. package/dist/scrape/schema.js +0 -92
  674. package/dist/scrape/schema.js.map +0 -1
  675. package/dist/scrape/scraper.d.ts +0 -6
  676. package/dist/scrape/scraper.d.ts.map +0 -1
  677. package/dist/scrape/scraper.js +0 -46
  678. package/dist/scrape/scraper.js.map +0 -1
  679. package/dist/scrape/semantic.d.ts +0 -25
  680. package/dist/scrape/semantic.d.ts.map +0 -1
  681. package/dist/scrape/semantic.js +0 -27
  682. package/dist/scrape/semantic.js.map +0 -1
  683. package/dist/server/node.d.ts +0 -7
  684. package/dist/server/node.d.ts.map +0 -1
  685. package/dist/server/node.js.map +0 -1
  686. package/dist/sessions/file.d.ts +0 -25
  687. package/dist/sessions/file.d.ts.map +0 -1
  688. package/dist/sessions/file.js +0 -13
  689. package/dist/sessions/file.js.map +0 -1
  690. package/dist/sessions/replay.d.ts +0 -9
  691. package/dist/sessions/replay.d.ts.map +0 -1
  692. package/dist/sessions/replay.js +0 -70
  693. package/dist/sessions/replay.js.map +0 -1
  694. package/dist/sessions/store.d.ts +0 -25
  695. package/dist/sessions/store.d.ts.map +0 -1
  696. package/dist/sessions/store.js +0 -13
  697. package/dist/sessions/store.js.map +0 -1
  698. package/dist/storage/adapter.d.ts +0 -5
  699. package/dist/storage/adapter.d.ts.map +0 -1
  700. package/dist/storage/adapter.js +0 -11
  701. package/dist/storage/adapter.js.map +0 -1
  702. package/dist/storage/cache.d.ts +0 -23
  703. package/dist/storage/cache.d.ts.map +0 -1
  704. package/dist/storage/cache.js +0 -79
  705. package/dist/storage/cache.js.map +0 -1
  706. package/dist/storage/checksum.d.ts +0 -3
  707. package/dist/storage/checksum.d.ts.map +0 -1
  708. package/dist/storage/checksum.js +0 -19
  709. package/dist/storage/checksum.js.map +0 -1
  710. package/dist/storage/chunked.d.ts +0 -21
  711. package/dist/storage/chunked.d.ts.map +0 -1
  712. package/dist/storage/chunked.js +0 -67
  713. package/dist/storage/chunked.js.map +0 -1
  714. package/dist/storage/content.d.ts +0 -24
  715. package/dist/storage/content.d.ts.map +0 -1
  716. package/dist/storage/content.js +0 -44
  717. package/dist/storage/content.js.map +0 -1
  718. package/dist/storage/filehosting.d.ts +0 -2
  719. package/dist/storage/filehosting.d.ts.map +0 -1
  720. package/dist/storage/filehosting.js +0 -24
  721. package/dist/storage/filehosting.js.map +0 -1
  722. package/dist/storage/githubcontents.d.ts +0 -2
  723. package/dist/storage/githubcontents.d.ts.map +0 -1
  724. package/dist/storage/githubcontents.js +0 -29
  725. package/dist/storage/githubcontents.js.map +0 -1
  726. package/dist/storage/index.d.ts +0 -12
  727. package/dist/storage/index.d.ts.map +0 -1
  728. package/dist/storage/index.js +0 -12
  729. package/dist/storage/index.js.map +0 -1
  730. package/dist/storage/local.d.ts +0 -2
  731. package/dist/storage/local.d.ts.map +0 -1
  732. package/dist/storage/local.js +0 -72
  733. package/dist/storage/local.js.map +0 -1
  734. package/dist/storage/memory.d.ts +0 -6
  735. package/dist/storage/memory.d.ts.map +0 -1
  736. package/dist/storage/memory.js +0 -36
  737. package/dist/storage/memory.js.map +0 -1
  738. package/dist/storage/pool.d.ts +0 -95
  739. package/dist/storage/pool.d.ts.map +0 -1
  740. package/dist/storage/pool.js +0 -202
  741. package/dist/storage/pool.js.map +0 -1
  742. package/dist/storage/s3compatible.d.ts +0 -3
  743. package/dist/storage/s3compatible.d.ts.map +0 -1
  744. package/dist/storage/s3compatible.js +0 -70
  745. package/dist/storage/s3compatible.js.map +0 -1
  746. package/dist/storage/sync.d.ts +0 -47
  747. package/dist/storage/sync.d.ts.map +0 -1
  748. package/dist/storage/sync.js +0 -75
  749. package/dist/storage/sync.js.map +0 -1
  750. package/dist/surfaces/adapters.d.ts +0 -97
  751. package/dist/surfaces/adapters.d.ts.map +0 -1
  752. package/dist/surfaces/adapters.js +0 -50
  753. package/dist/surfaces/adapters.js.map +0 -1
  754. package/dist/surfaces/controls.d.ts +0 -18
  755. package/dist/surfaces/controls.d.ts.map +0 -1
  756. package/dist/surfaces/controls.js +0 -45
  757. package/dist/surfaces/controls.js.map +0 -1
  758. package/dist/surfaces/manifest.d.ts +0 -68
  759. package/dist/surfaces/manifest.d.ts.map +0 -1
  760. package/dist/surfaces/manifest.js +0 -42
  761. package/dist/surfaces/manifest.js.map +0 -1
  762. package/dist/surfaces/n8n.d.ts +0 -25
  763. package/dist/surfaces/n8n.d.ts.map +0 -1
  764. package/dist/surfaces/n8n.js +0 -31
  765. package/dist/surfaces/n8n.js.map +0 -1
  766. package/dist/surfaces/operations.d.ts +0 -32
  767. package/dist/surfaces/operations.d.ts.map +0 -1
  768. package/dist/surfaces/operations.js +0 -53
  769. package/dist/surfaces/operations.js.map +0 -1
  770. package/dist/surfaces/requirements.d.ts +0 -29
  771. package/dist/surfaces/requirements.d.ts.map +0 -1
  772. package/dist/surfaces/requirements.js +0 -50
  773. package/dist/surfaces/requirements.js.map +0 -1
  774. package/dist/surfaces/targets.d.ts +0 -196
  775. package/dist/surfaces/targets.d.ts.map +0 -1
  776. package/dist/surfaces/targets.js +0 -27
  777. package/dist/surfaces/targets.js.map +0 -1
  778. package/dist/webhook/delivery.d.ts +0 -18
  779. package/dist/webhook/delivery.d.ts.map +0 -1
  780. package/dist/webhook/delivery.js +0 -36
  781. package/dist/webhook/delivery.js.map +0 -1
  782. package/dist/webhook/receiver.d.ts +0 -26
  783. package/dist/webhook/receiver.d.ts.map +0 -1
  784. package/dist/webhook/receiver.js +0 -24
  785. package/dist/webhook/receiver.js.map +0 -1
  786. package/dist/webhook/signature.d.ts +0 -3
  787. package/dist/webhook/signature.d.ts.map +0 -1
  788. package/dist/webhook/signature.js +0 -7
  789. package/dist/webhook/signature.js.map +0 -1
  790. package/dist/workflow/manifest.d.ts +0 -22
  791. package/dist/workflow/manifest.d.ts.map +0 -1
  792. package/dist/workflow/manifest.js +0 -21
  793. package/dist/workflow/manifest.js.map +0 -1
  794. package/dist/workflow/registry.d.ts +0 -7
  795. package/dist/workflow/registry.d.ts.map +0 -1
  796. package/dist/workflow/registry.js +0 -18
  797. package/dist/workflow/registry.js.map +0 -1
  798. package/dist/workflow/templates.d.ts +0 -6
  799. package/dist/workflow/templates.d.ts.map +0 -1
  800. package/dist/workflow/templates.js +0 -18
  801. package/dist/workflow/templates.js.map +0 -1
  802. package/dist/workflow/triggers.d.ts +0 -64
  803. package/dist/workflow/triggers.d.ts.map +0 -1
  804. package/dist/workflow/triggers.js +0 -99
  805. package/dist/workflow/triggers.js.map +0 -1
  806. package/docs/logs/.gitkeep +0 -0
  807. package/docs/plans/00.index.md +0 -50
  808. package/docs/plans/01.architecture.md +0 -86
  809. package/docs/plans/02.research.computer.use.md +0 -58
  810. package/docs/plans/03.research.captcha.bypass.md +0 -68
  811. package/docs/plans/04.research.sandbox.ai.md +0 -52
  812. package/docs/plans/05.capture.platform.md +0 -57
  813. package/docs/plans/06.dependencies.md +0 -97
  814. package/docs/plans/07.captcha.test.page.md +0 -41
  815. package/docs/plans/08.production.infra.md +0 -70
  816. package/docs/plans/09.database.schema.md +0 -121
  817. package/docs/plans/10.cloudinary.storage.md +0 -57
  818. package/docs/plans/11.movement.logs.json.md +0 -72
  819. package/docs/plans/12.research.atlas.agent.browser.md +0 -79
  820. package/docs/plans/13.research.anti.detection.md +0 -898
  821. package/docs/plans/14.research.proxy.md +0 -1495
  822. package/docs/plans/15.research.retry.rate.limit.md +0 -1958
  823. package/docs/plans/16.research.crawling.md +0 -1417
  824. package/docs/plans/17.research.caching.md +0 -1610
  825. package/docs/plans/18.research.content.extraction.md +0 -1952
  826. package/docs/plans/19.research.errors.events.md +0 -1523
  827. package/docs/plans/20.research.zod.validation.md +0 -1350
  828. package/docs/plans/21.research.batch.concurrency.md +0 -1888
  829. package/docs/plans/22.research.universal.runtime.md +0 -944
  830. package/docs/plans/23.research.ai.integration.md +0 -1465
  831. package/docs/plans/24.research.memory.persistence.md +0 -1979
  832. package/docs/plans/25.research.server.api.md +0 -342
  833. package/docs/plans/26.research.compilation.md +0 -249
  834. package/docs/plans/27.research.html.parsing.md +0 -251
  835. package/docs/plans/28.action.plan.md +0 -50
  836. package/docs/plans/29.api.reference.md +0 -174
  837. package/docs/plans/30.architecture.plan.md +0 -94
  838. package/docs/plans/31.auditoria.dados.md +0 -163
  839. package/docs/plans/32.bots.automacao.computacional.md +0 -214
  840. package/docs/plans/33.bots.codigo.revisao.md +0 -220
  841. package/docs/plans/34.bots.seguranca.cicd.md +0 -366
  842. package/docs/plans/35.comparativo.concorrencia.md +0 -464
  843. package/docs/plans/36.computational.memory.md +0 -340
  844. package/docs/plans/37.deploystrategy.md +0 -394
  845. package/docs/plans/38.flow.md +0 -155
  846. package/docs/plans/39.multi.platform.bot.md +0 -252
  847. package/docs/plans/40.npm.publish.md +0 -250
  848. package/docs/plans/41.o.que.falta.md +0 -407
  849. package/docs/plans/42.pesquisa.concorrencia.md +0 -721
  850. package/docs/plans/43.plan.universal.architecture.md +0 -496
  851. package/docs/plans/44.reference.md +0 -100
  852. package/docs/plans/45.robotarchitecture.md +0 -237
  853. package/docs/plans/46.scdnintegration.md +0 -284
  854. package/docs/plans/47.multiforge.readme.md +0 -129
  855. package/docs/plans/48.theory.v4.repo.os.md +0 -152
  856. package/docs/plans/49.third.party.infra.md +0 -12
  857. package/docs/plans/50.file.as.compute.md +0 -39
  858. package/docs/plans/51.architecture.virtual.processor.md +0 -80
  859. package/docs/plans/52.manifesto.v8.md +0 -11
  860. package/docs/plans/58.cdn.list.md +0 -23
  861. package/docs/plans/59.sql.frameworks.md +0 -33
  862. package/docs/plans/60.sql.thirdparty.md +0 -26
  863. package/docs/plans/61.objective.multiforge.md +0 -63
  864. package/docs/plans/62.huggingface.upload.md +0 -26
  865. package/docs/plans/63.kaggle.upload.md +0 -24
  866. package/docs/plans/64.npm.storage.md +0 -30
  867. package/docs/plans/65.rclone.terabox.md +0 -32
  868. package/docs/plans/66.buckets.and.models.todo.md +0 -14
  869. package/docs/plans/67.database.todo.md +0 -13
  870. package/docs/plans/68.deploy.packages.todo.md +0 -12
  871. package/docs/plans/69.report.human.operator.md +0 -133
  872. package/docs/plans/70.report.brain2qwerty.ems.md +0 -135
  873. package/docs/plans/71.report.hd.infinito.vram.md +0 -155
  874. package/docs/plans/72.plan.hd.infinito.node.md +0 -146
  875. package/docs/plans/73.plan.scifi.repos.md +0 -125
  876. package/docs/plans/74.000.manifesto.v8.flat.2..md +0 -11
  877. package/docs/plans/README.md +0 -489
  878. package/docs/plans/aggregate_platforms.mjs +0 -146
  879. package/docs/plans/examplesession.json +0 -36
  880. package/docs/plans/missing-facts.md +0 -192
  881. package/docs/plans/models.md +0 -64
  882. package/docs/plans/organize.cjs +0 -270
  883. package/docs/plans/platforms.md +0 -2887
  884. package/docs/plans/sites.md +0 -31322
  885. package/docs/sources/farm.py +0 -117
  886. package/docs/sources/html/saddle1.html +0 -132
  887. package/docs/sources/html/saddle2.html +0 -157
  888. package/docs/sources/html/saddle3.html +0 -119
  889. package/docs/sources/html/saddle4.html +0 -144
  890. package/docs/sources/html/saddle5.html +0 -72
  891. package/docs/sources/html/saddle6.html +0 -171
  892. package/docs/sources/html/saddle7.html +0 -236
  893. package/docs/sources/saddle.ts +0 -74
  894. package/docs/sources/schema.prisma +0 -88
  895. package/docs/sources/script.sh +0 -64
  896. package/docs/sources/workflows.yml +0 -458
  897. package/docs/talks1/_body.txt +0 -14
  898. package/docs/talks1/_index.md +0 -15
  899. package/docs/talks1/_screenshot.png +0 -0
  900. package/docs/talks1/assistant-01.md +0 -5
  901. package/docs/talks1/assistant-02.md +0 -5
  902. package/docs/talks1/assistant-03.md +0 -531
  903. package/docs/talks1/assistant-04.md +0 -26
  904. package/docs/talks1/assistant-05.md +0 -774
  905. package/docs/talks1/assistant-06.md +0 -1718
  906. package/docs/talks1/scrape-share.cjs +0 -185
  907. package/docs/talks1/scrape-share.ts +0 -183
  908. package/docs/talks1/user-01.md +0 -3
  909. package/docs/talks1/user-02.md +0 -3
  910. package/docs/talks1/user-03.md +0 -88
  911. package/docs/talks1/user-04.md +0 -3
  912. package/docs/talks1/user-05.md +0 -3
  913. package/docs/talks1/user-06.md +0 -88
  914. package/docs/talks1/user-07.md +0 -88
  915. package/docs/talks2/_body.txt +0 -14
  916. package/docs/talks2/_index.md +0 -16
  917. package/docs/talks2/_screenshot.png +0 -0
  918. package/docs/talks2/assistant-01.md +0 -5
  919. package/docs/talks2/assistant-02.md +0 -5
  920. package/docs/talks2/assistant-03.md +0 -424
  921. package/docs/talks2/assistant-04.md +0 -598
  922. package/docs/talks2/assistant-05.md +0 -1280
  923. package/docs/talks2/assistant-06.md +0 -1227
  924. package/docs/talks2/assistant-07.md +0 -1252
  925. package/docs/talks2/user-01.md +0 -3
  926. package/docs/talks2/user-02.md +0 -3
  927. package/docs/talks2/user-03.md +0 -88
  928. package/docs/talks2/user-04.md +0 -88
  929. package/docs/talks2/user-05.md +0 -88
  930. package/docs/talks2/user-06.md +0 -88
  931. package/docs/talks2/user-07.md +0 -3
  932. package/docs/talks3/_body.txt +0 -467
  933. package/docs/talks3/_index.md +0 -10
  934. package/docs/talks3/_screenshot.png +0 -0
  935. package/docs/talks3/assistant-01.md +0 -417
  936. package/docs/talks3/assistant-02.md +0 -417
  937. package/docs/talks3/assistant-03.md +0 -29
  938. package/docs/talks3/assistant-04.md +0 -727
  939. package/docs/talks3/user-01.md +0 -88
  940. package/docs/talks3/user-02.md +0 -88
  941. package/docs/talks3/user-03.md +0 -3
  942. package/docs/talks3/user-04.md +0 -3
  943. package/docs/talks4/_body.txt +0 -14
  944. package/docs/talks4/_index.md +0 -12
  945. package/docs/talks4/_screenshot.png +0 -0
  946. package/docs/talks4/assistant-01.md +0 -5
  947. package/docs/talks4/assistant-02.md +0 -5
  948. package/docs/talks4/assistant-03.md +0 -35
  949. package/docs/talks4/assistant-04.md +0 -512
  950. package/docs/talks4/assistant-05.md +0 -599
  951. package/docs/talks4/user-01.md +0 -3
  952. package/docs/talks4/user-02.md +0 -3
  953. package/docs/talks4/user-03.md +0 -88
  954. package/docs/talks4/user-04.md +0 -88
  955. package/docs/talks4/user-05.md +0 -7
  956. package/docs/talks5/_body.txt +0 -14
  957. package/docs/talks5/_index.md +0 -13
  958. package/docs/talks5/_screenshot.png +0 -0
  959. package/docs/talks5/assistant-01.md +0 -5
  960. package/docs/talks5/assistant-02.md +0 -5
  961. package/docs/talks5/assistant-03.md +0 -690
  962. package/docs/talks5/assistant-04.md +0 -758
  963. package/docs/talks5/assistant-05.md +0 -974
  964. package/docs/talks5/user-01.md +0 -3
  965. package/docs/talks5/user-02.md +0 -3
  966. package/docs/talks5/user-03.md +0 -105
  967. package/docs/talks5/user-04.md +0 -105
  968. package/docs/talks5/user-05.md +0 -63
  969. package/docs/talks5/user-06.md +0 -105
  970. package/docs/talks6/_body.txt +0 -14
  971. package/docs/talks6/_index.md +0 -9
  972. package/docs/talks6/_screenshot.png +0 -0
  973. package/docs/talks6/assistant-01.md +0 -5
  974. package/docs/talks6/assistant-02.md +0 -5
  975. package/docs/talks6/assistant-03.md +0 -1499
  976. package/docs/talks6/user-01.md +0 -3
  977. package/docs/talks6/user-02.md +0 -3
  978. package/docs/talks6/user-03.md +0 -88
  979. package/docs/talks6/user-04.md +0 -88
  980. package/docs/talks7/_body.txt +0 -14
  981. package/docs/talks7/_index.md +0 -10
  982. package/docs/talks7/_screenshot.png +0 -0
  983. package/docs/talks7/assistant-01.md +0 -5
  984. package/docs/talks7/assistant-02.md +0 -5
  985. package/docs/talks7/assistant-03.md +0 -523
  986. package/docs/talks7/assistant-04.md +0 -617
  987. package/docs/talks7/user-01.md +0 -3
  988. package/docs/talks7/user-02.md +0 -3
  989. package/docs/talks7/user-03.md +0 -105
  990. package/docs/talks7/user-04.md +0 -67
  991. package/docs/talks8/conversa1.txt +0 -1322
  992. package/docs/talks8/conversa2.txt +0 -237
  993. package/docs/talks9/Beyond the Obvious_ 50 Plataformas Auto-Hospedadas de Forja de C/303/263digo para Al/303/251m de Gitea e GitLab.md" +0 -174
  994. package/docs/talks9/De NPM a Multi-Linguagem_ Uma Arquitetura T/303/251cnica para a Execu/303/247/303/243o Integrada de C/303/263digo no Ecossistema Node.js.md" +0 -59
  995. package/docs/talks9/De NPM a VMs Virtuais_ Uma An/303/241lise Arquitet/303/264nica para a Realiza/303/247/303/243o do Ciclo de Vida do Projeto SADDLE.md" +0 -91
  996. package/docs/talks9/Mapeamento da Engrenagem Computacional_ Uma Arquitetura para Execu/303/247/303/243o Isolada e Persist/303/252ncia em Ambientes Distribu/303/255dos.md" +0 -116
  997. package/docs/talks9/O Cen/303/241rio Pr/303/241tico do SADDLE_ Uma An/303/241lise de Viabilidade e Modelo de Ciclo de Vida Integrado.md" +0 -128
  998. package/docs/talks9/README (2).md +0 -489
  999. package/docs/talks9/README.md +0 -198
  1000. package/docs/talks9/Viabilidade do Saddle_ Uma An/303/241lise T/303/251cnica da Transforma/303/247/303/243o de Armazenamento Remoto em Mem/303/263ria Computacional.md" +0 -80
  1001. package/docs/talks9/conversa.txt +0 -544
  1002. package/docs/talks9/other (2).md +0 -39
  1003. package/docs/talks9/other.md +0 -57
  1004. package/docs/talks9/outro.txt +0 -24
  1005. /package/{extension/README.md → docs/extension.md} +0 -0
@@ -0,0 +1,1000 @@
1
+ /**
2
+ * virtualgpu - physical gpu virtualization: passthrough, vgpu slicing, MIG
3
+ * layouts and the verified gpu identity bank.
4
+ *
5
+ * This module owns the physical side of gpu virtualization. It absorbs the
6
+ * gpu-passthrough module in full (vfio bind/unbind through driverctl with
7
+ * the new_id fallback, vbios rom dumping from sysfs, the Looking Glass B7
8
+ * IVshmem recipe, the NVIDIA vGPU profile-size formula, the vendor-reset
9
+ * family list and the Intel SR-IOV DKMS parameters), the v2 stub
10
+ * (nvmlMockEnv and the pciIds table, corrected against the v5 sources) and
11
+ * a TS mirror of the C++ virtualization core data: the vgpu slice profile
12
+ * table (B100-1Q through RX9070XT-4Q), the Blackwell MIG layout catalog
13
+ * with the 7c/192GB density validator, the static spec database (GB100,
14
+ * GB202, GB203, Navi48, Navi44) and the NVENC dual-engine throughput table.
15
+ *
16
+ * The verified bank embeds seven real identities confirmed on 2026-08-22
17
+ * against vendor pages, TechPowerUp and the PCI id databases: RTX 5090
18
+ * (10DE:2B85, 32 GB GDDR7), RTX PRO 6000 Blackwell (10DE:26B5, 96 GB GDDR7
19
+ * ECC, 24064 CUDA cores), B200 (10DE:2665, 192 GB HBM3e at 8 TB/s), H100
20
+ * (10DE:2330, 80 GB HBM3), A100 (10DE:20B0, 40 GB HBM2e), RX 9070 XT
21
+ * (1002:748E, 16 GB GDDR6) and Instinct MI350X (1002:75A0, 288 GB HBM3e).
22
+ * The legacy 10DE:2BB5 spelling for the RTX PRO 6000 found in the v4
23
+ * sources is wrong; the verified id is 26B5 and the divergence is recorded
24
+ * here for traceability.
25
+ *
26
+ * Data for the extra identities discovered in the Meta jsons (B100
27
+ * 10DE:2664, GB200 superchip, RTX 5070, RX 8900 XTX, Arc B770 and the RDNA
28
+ * APU family) stays in the json data files (gpus.json, processors.json);
29
+ * this module only ships the logic: the registry, the fluent builder, the
30
+ * factory and the registergpudata normalizer that turns a json record into
31
+ * a bank entry.
32
+ *
33
+ * Domain split: render.ts keeps the software identity stack (Mesa, the
34
+ * nvidia-smi); virtualmemory.ts keeps the guest MIG slicing profiles
35
+ * (1g.24gb, 2g.48gb, 4g.96gb) which this module imports to compose the
36
+ * complete catalog; virtualization.ts re-exports the passthrough helpers
37
+ * for the QEMU command line.
38
+ *
39
+ * Contexts (25): gpuerror, pciids, nvmlmockenv, virtualgpuspec, gpubank,
40
+ * smidriveranchor, bindvfio, unbindvfio, romdump, lookingglassb7,
41
+ * nvidiavgpuprofiles, vendorresetfamilies, intelsriovdkms, vgpuprofiles,
42
+ * miglayoutblackwell, validatedensity, composemigcatalog, gpustaticspecs,
43
+ * nvencdualengine, nvencsessiontable, nvencCanFit, gpuregistry,
44
+ * virtualgpubuilder, registergpudata, createvirtualgpu.
45
+ *
46
+ * Patterns: registry (gpuregistry), builder (virtualgpubuilder), factory
47
+ * (createvirtualgpu), normalizer (registergpudata).
48
+ * Rules: lowercase identifiers, english jsdoc, third person, no emoji,
49
+ * try/catch catcher on every fallible path, node:* built-ins only, and no
50
+ * hardcoded localhost address anywhere.
51
+ */
52
+ import { execFileSync } from 'node:child_process';
53
+ import { mkdirSync, readFileSync, writeFileSync } from 'node:fs';
54
+ import { dirname } from 'node:path';
55
+ import { MIGPROFILES } from './virtualmemory.js';
56
+ /** pci bdf (bus:device.function) validator: strict hex format only.
57
+ * blocks any shell metacharacter or path traversal. */
58
+ function issafebdf(value) {
59
+ return (typeof value === 'string' && /^[0-9a-fA-F]{4}:[0-9a-fA-F]{2}:[0-9a-fA-F]{2}\.[0-7]$/.test(value));
60
+ }
61
+ /** pci vendor:device id validator: strict hex format only. */
62
+ function issafevendordevice(value) {
63
+ return typeof value === 'string' && /^[0-9A-Fa-f]{4}:[0-9A-Fa-f]{4}$/.test(value);
64
+ }
65
+ /* ------------------------------------------------------------------ */
66
+ /* Section 1: errors */
67
+ /* ------------------------------------------------------------------ */
68
+ /** Error thrown by every virtualgpu subsystem with an optional cause chain. */
69
+ export class gpuerror extends Error {
70
+ /** Machine readable subsystem tag. */
71
+ subsystem;
72
+ constructor(message, options) {
73
+ super(message, options);
74
+ this.name = 'gpuerror';
75
+ this.subsystem = options?.subsystem ?? 'virtualgpu';
76
+ }
77
+ }
78
+ /* ------------------------------------------------------------------ */
79
+ /* Section 2: pci ids and nvml adapter (stub absorbed, data corrected) */
80
+ /* ------------------------------------------------------------------ */
81
+ /**
82
+ * Canonical PCI ids of the verified bank, keyed by registry name. The
83
+ * RTX PRO 6000 entry uses 26B5 as confirmed in the v5 research; the 2BB5
84
+ * value found in the v4 nested_gpu.json is a transcription error and is
85
+ * intentionally not reproduced.
86
+ */
87
+ export const pciIds = {
88
+ rtx5090: '10DE:2B85',
89
+ rtxpro6000: '10DE:26B5',
90
+ b200: '10DE:2665',
91
+ h100: '10DE:2330',
92
+ a100: '10DE:20B0',
93
+ rx9070xt: '1002:748E',
94
+ mi350x: '1002:75A0',
95
+ };
96
+ /**
97
+ * NVIDIA driver and CUDA anchor shared by the smi-adapter header and the nvenc
98
+ * engine description (v2 anchor; supersedes the 560.35.03 and 580.82.07
99
+ * strings found in the older sources).
100
+ */
101
+ export const smidriveranchor = {
102
+ driver: '575.57.08',
103
+ cuda: '12.9',
104
+ };
105
+ /**
106
+ * Builds the NVML mock environment consumed by the virtual nvidia-smi adapter
107
+ * emulator and the nvml-unified-shim (their documented interface): FAKE_VRAM pins the reported memory in
108
+ * MiB and FAKE_MODEL pins the reported device name.
109
+ */
110
+ export function nvmlMockEnv(vrammib, model) {
111
+ try {
112
+ if (!Number.isFinite(vrammib) || vrammib <= 0) {
113
+ throw new gpuerror(`vrammib must be a positive number, received ${vrammib}`);
114
+ }
115
+ if (model.trim().length === 0) {
116
+ throw new gpuerror('model must not be empty');
117
+ }
118
+ return { FAKE_VRAM: String(Math.round(vrammib)), FAKE_MODEL: model };
119
+ }
120
+ catch (cause) {
121
+ if (cause instanceof gpuerror) {
122
+ throw cause;
123
+ }
124
+ throw new gpuerror('nvmlMockEnv failed', { cause: cause });
125
+ }
126
+ }
127
+ /**
128
+ * The verified bank: seven real identities with every field cross-checked
129
+ * on 2026-08-22. vrammib is the physical capacity and smireportedmib is the
130
+ * value nvidia-smi and rocm-smi print after the firmware carveout.
131
+ */
132
+ export const GPU_BANK = [
133
+ {
134
+ id: 'rtx5090',
135
+ name: 'NVIDIA GeForce RTX 5090',
136
+ vendor: 'nvidia',
137
+ pcivendor: '10DE',
138
+ pcidevice: '2B85',
139
+ vrammib: 32768,
140
+ smireportedmib: 32607,
141
+ memtype: 'GDDR7',
142
+ busbits: 512,
143
+ bandwidthgbs: 1792,
144
+ tdpwatts: 575,
145
+ arch: 'GB202 Blackwell',
146
+ smarch: 'sm_120',
147
+ computeunits: 21760,
148
+ smcount: 170,
149
+ mig: false,
150
+ sriov: true,
151
+ launch: '2025-01-30',
152
+ },
153
+ {
154
+ id: 'rtxpro6000',
155
+ name: 'NVIDIA RTX PRO 6000 Blackwell Workstation Edition',
156
+ vendor: 'nvidia',
157
+ pcivendor: '10DE',
158
+ pcidevice: '26B5',
159
+ vrammib: 98304,
160
+ smireportedmib: 98304,
161
+ memtype: 'GDDR7 ECC',
162
+ busbits: 512,
163
+ bandwidthgbs: 1792,
164
+ tdpwatts: 600,
165
+ arch: 'GB202 Blackwell workstation',
166
+ smarch: 'sm_120',
167
+ computeunits: 24064,
168
+ smcount: 188,
169
+ mig: true,
170
+ sriov: true,
171
+ launch: '2025-04',
172
+ },
173
+ {
174
+ id: 'b200',
175
+ name: 'NVIDIA B200',
176
+ vendor: 'nvidia',
177
+ pcivendor: '10DE',
178
+ pcidevice: '2665',
179
+ vrammib: 196608,
180
+ smireportedmib: 184320,
181
+ memtype: 'HBM3e',
182
+ busbits: 8192,
183
+ bandwidthgbs: 8000,
184
+ tdpwatts: 1000,
185
+ arch: 'GB100 Blackwell dual-die (NV-HBI 10 TB/s)',
186
+ smarch: 'sm_100',
187
+ computeunits: 0,
188
+ smcount: 208,
189
+ mig: true,
190
+ sriov: true,
191
+ launch: '2024-03',
192
+ },
193
+ {
194
+ id: 'h100',
195
+ name: 'NVIDIA H100 80GB HBM3',
196
+ vendor: 'nvidia',
197
+ pcivendor: '10DE',
198
+ pcidevice: '2330',
199
+ vrammib: 81920,
200
+ smireportedmib: 81559,
201
+ memtype: 'HBM3',
202
+ busbits: 6144,
203
+ bandwidthgbs: 3350,
204
+ tdpwatts: 700,
205
+ arch: 'GH100 Hopper SXM5',
206
+ smarch: 'sm_90',
207
+ computeunits: 16896,
208
+ smcount: 132,
209
+ mig: true,
210
+ sriov: false,
211
+ launch: '2022-09',
212
+ },
213
+ {
214
+ id: 'a100',
215
+ name: 'NVIDIA A100-SXM4-40GB',
216
+ vendor: 'nvidia',
217
+ pcivendor: '10DE',
218
+ pcidevice: '20B0',
219
+ vrammib: 40960,
220
+ smireportedmib: 40536,
221
+ memtype: 'HBM2e',
222
+ busbits: 5120,
223
+ bandwidthgbs: 1555,
224
+ tdpwatts: 400,
225
+ arch: 'GA100 Ampere SXM4',
226
+ smarch: 'sm_80',
227
+ computeunits: 6912,
228
+ smcount: 108,
229
+ mig: true,
230
+ sriov: false,
231
+ launch: '2020-05',
232
+ },
233
+ {
234
+ id: 'rx9070xt',
235
+ name: 'AMD Radeon RX 9070 XT',
236
+ vendor: 'amd',
237
+ pcivendor: '1002',
238
+ pcidevice: '748E',
239
+ vrammib: 16384,
240
+ smireportedmib: 16384,
241
+ memtype: 'GDDR6',
242
+ busbits: 256,
243
+ bandwidthgbs: 640,
244
+ tdpwatts: 304,
245
+ arch: 'Navi 48 RDNA 4',
246
+ smarch: 'gfx1201',
247
+ computeunits: 4096,
248
+ smcount: 64,
249
+ mig: false,
250
+ sriov: false,
251
+ launch: '2025-03-06',
252
+ },
253
+ {
254
+ id: 'mi350x',
255
+ name: 'AMD Instinct MI350X',
256
+ vendor: 'amd',
257
+ pcivendor: '1002',
258
+ pcidevice: '75A0',
259
+ vrammib: 294912,
260
+ smireportedmib: 294912,
261
+ memtype: 'HBM3e',
262
+ busbits: 8192,
263
+ bandwidthgbs: 8000,
264
+ tdpwatts: 1000,
265
+ arch: 'CDNA 4 Aqua Vanjaram',
266
+ smarch: 'gfx950',
267
+ computeunits: 19456,
268
+ smcount: 304,
269
+ mig: false,
270
+ sriov: true,
271
+ launch: '2025-06',
272
+ },
273
+ ];
274
+ /** Renders the canonical "vendor:device" pci id of a bank entry. */
275
+ export function fullpciid(spec) {
276
+ return `${spec.pcivendor}:${spec.pcidevice}`;
277
+ }
278
+ /* ------------------------------------------------------------------ */
279
+ /* Section 4: vfio passthrough (gpu-passthrough absorbed in full) */
280
+ /* ------------------------------------------------------------------ */
281
+ /**
282
+ * Binds a gpu to vfio-pci for passthrough. driverctl set-override is the
283
+ * primary path; when it is unavailable the function falls back to the
284
+ * vfio-pci new_id sysfs write. The returned plan carries the quirks the
285
+ * passthrough research mandates: disable_idle_d3, pcie_port_pm off and the
286
+ * lspci alive check that verifies the config header is not 0xFF.
287
+ */
288
+ export function bindVfio(bdf, vendorDevice) {
289
+ try {
290
+ if (!issafebdf(bdf)) {
291
+ throw new gpuerror(`bdf "${bdf}" must look like 0000:01:00.0`);
292
+ }
293
+ if (!issafevendordevice(vendorDevice)) {
294
+ throw new gpuerror(`vendor:device "${vendorDevice}" must look like 10DE:2B85`);
295
+ }
296
+ // validated above; execFileSync passes argv directly, no shell.
297
+ try {
298
+ execFileSync('driverctl', ['set-override', bdf, 'vfio-pci']);
299
+ }
300
+ catch {
301
+ // fallback: write vendor:device to the vfio-pci new_id sysfs file.
302
+ try {
303
+ writeFileSync('/sys/bus/pci/drivers/vfio-pci/new_id', vendorDevice);
304
+ }
305
+ catch {
306
+ /* catcher: new_id write may fail if the driver is not loaded */
307
+ }
308
+ }
309
+ return {
310
+ bdf,
311
+ driver: 'vfio-pci',
312
+ disable_idle_d3: 1,
313
+ pcie_port_pm: 'off',
314
+ aliveCheck: `lspci -s ${bdf} -xxx | verify config header != 0xFF`,
315
+ };
316
+ }
317
+ catch (cause) {
318
+ if (cause instanceof gpuerror) {
319
+ throw cause;
320
+ }
321
+ throw new gpuerror('bindVfio failed', { cause: cause });
322
+ }
323
+ }
324
+ /** Releases a gpu from vfio-pci back to its native driver. */
325
+ export function unbindVfio(bdf) {
326
+ if (!issafebdf(bdf)) {
327
+ throw new gpuerror(`unbindVfio: invalid bdf "${bdf}"`);
328
+ }
329
+ // execFileSync: argv array, no shell -> no injection from bdf.
330
+ // failures are swallowed to match the original `|| true` behavior.
331
+ try {
332
+ execFileSync('driverctl', ['unset-override', bdf]);
333
+ }
334
+ catch {
335
+ /* not bound to vfio-pci or already released */
336
+ }
337
+ }
338
+ /**
339
+ * Dumps the gpu vbios from sysfs for romfile passthrough. The rom is
340
+ * enabled with echo 1, copied to the output path and disabled again; the
341
+ * returned path feeds the QEMU romfile= option.
342
+ */
343
+ export function romDump(bdf, out = '/usr/share/kvm/vbios/gpu.rom') {
344
+ if (!issafebdf(bdf)) {
345
+ throw new gpuerror(`romDump: invalid bdf "${bdf}"`);
346
+ }
347
+ if (typeof out !== 'string' || out.length === 0 || out.includes('..')) {
348
+ throw new gpuerror('romDump: invalid output path');
349
+ }
350
+ const rompath = `/sys/bus/pci/devices/${bdf}/rom`;
351
+ try {
352
+ // enable rom read, dump, disable: pure fs api, no shell, no injection.
353
+ writeFileSync(rompath, '1');
354
+ const rom = readFileSync(rompath);
355
+ mkdirSync(dirname(out), { recursive: true });
356
+ writeFileSync(out, rom);
357
+ try {
358
+ writeFileSync(rompath, '0');
359
+ }
360
+ catch {
361
+ /* rom disable may fail harmlessly */
362
+ }
363
+ return out;
364
+ }
365
+ catch (cause) {
366
+ try {
367
+ writeFileSync(rompath, '0');
368
+ }
369
+ catch {
370
+ /* best-effort cleanup */
371
+ }
372
+ throw new gpuerror('romDump failed', { cause: cause });
373
+ }
374
+ }
375
+ /**
376
+ * Looking Glass B7 guest display recipe: the kvmfr 0.0.12-7 module backs a
377
+ * 128 MB ivshmem-plain device so the D12 host renderer can DMA frames with
378
+ * zero CPU copies (300 UPS class latency), including the libvirt shmem xml.
379
+ */
380
+ export function lookingGlassB7() {
381
+ return {
382
+ version: 'B7',
383
+ kvmfr: '0.0.12-7',
384
+ ivshmem: '128M',
385
+ backend: 'd12',
386
+ dma: 'GPU hardware copy engine, zero CPU',
387
+ indirectCopy: true,
388
+ xml: "<shmem name='looking-glass'><model type='ivshmem-plain'/><size unit='M'>128</size></shmem>",
389
+ };
390
+ }
391
+ /**
392
+ * NVIDIA vGPU profile-size formula as documented by the vgpu-unlock
393
+ * research: profileSize equals X times 0x40000000 (1 GB units), the
394
+ * framebuffer reservation is 0x8000000 plus one sixteenth of the excess
395
+ * over the first gigabyte, and the usable framebuffer never drops below
396
+ * 384 MiB. The example computes the X=2 (2 GB) profile.
397
+ */
398
+ export function nvidiaVgpuProfiles() {
399
+ try {
400
+ const calc = (x) => {
401
+ const profileSize = x * 0x40000000;
402
+ const fbReservation = 0x8000000 + (profileSize - 0x40000000) / 0x10;
403
+ return { profileSize, fbReservation, fb: profileSize - fbReservation };
404
+ };
405
+ return {
406
+ formula: 'profileSize=X*0x40000000, fbReservation=0x8000000+(profileSize-0x40000000)/0x10',
407
+ min: '384 MiB',
408
+ example: calc(2),
409
+ };
410
+ }
411
+ catch (cause) {
412
+ throw new gpuerror('nvidiaVgpuProfiles failed', { cause: cause });
413
+ }
414
+ }
415
+ /**
416
+ * GPU families supported by the vendor-reset module: the reset quirk list
417
+ * covering Polaris through Navi 48 plus the Rembrandt iGPU and the 5600 XT
418
+ * exception, required to recover amdgpu devices stuck in a bad state
419
+ * before rebinding them to vfio-pci.
420
+ */
421
+ export function vendorResetFamilies() {
422
+ return [
423
+ 'polaris10',
424
+ 'polaris11',
425
+ 'polaris12',
426
+ 'vega10',
427
+ 'vega20',
428
+ 'navi10',
429
+ 'navi12',
430
+ 'navi14',
431
+ 'navi48',
432
+ '680M Rembrandt',
433
+ '5600XT',
434
+ ];
435
+ }
436
+ /**
437
+ * Intel SR-IOV DKMS package and kernel parameters for the Xe and i915
438
+ * stacks: i915-sriov-dkms 2026.02.09 with i915.enable_guc=3 and up to 7
439
+ * VFs, or the xe driver with xe.force_probe=0xa7a0 for Battlemage.
440
+ */
441
+ export function intelSriovDkms() {
442
+ return {
443
+ pkg: 'i915-sriov-dkms_2026.02.09',
444
+ kernel: 'intel_iommu=on i915.enable_guc=3 i915.max_vfs=7',
445
+ xe: 'intel_iommu=on xe.max_vfs=7 xe.force_probe=0xa7a0',
446
+ maxVfs: 7,
447
+ };
448
+ }
449
+ /**
450
+ * vgpu slice catalog: NVIDIA B100 quarter profiles (1Q through 8Q), the
451
+ * GB202 consumer slices for RTX 5090 class boards and the AMD MxGPU
452
+ * SR-IOV slices for RX 9070 XT (Navi 48). Instances attach through the
453
+ * mdev_supported_types sysfs interface.
454
+ */
455
+ export const VGPUPROFILES = [
456
+ {
457
+ id: 'B100-1Q',
458
+ vrammb: 4096,
459
+ maxinstances: 24,
460
+ encodersessions: 1,
461
+ decodersessions: 2,
462
+ weight: 30,
463
+ flavor: 'vgpu',
464
+ },
465
+ {
466
+ id: 'B100-4Q',
467
+ vrammb: 16384,
468
+ maxinstances: 6,
469
+ encodersessions: 2,
470
+ decodersessions: 4,
471
+ weight: 50,
472
+ flavor: 'vgpu',
473
+ },
474
+ {
475
+ id: 'B100-8Q',
476
+ vrammb: 32768,
477
+ maxinstances: 3,
478
+ encodersessions: 3,
479
+ decodersessions: 6,
480
+ weight: 70,
481
+ flavor: 'vgpu',
482
+ },
483
+ {
484
+ id: 'GB202-4Q',
485
+ vrammb: 8192,
486
+ maxinstances: 4,
487
+ encodersessions: 2,
488
+ decodersessions: 4,
489
+ weight: 60,
490
+ flavor: 'vgpu',
491
+ },
492
+ {
493
+ id: 'GB202-8Q',
494
+ vrammb: 16384,
495
+ maxinstances: 2,
496
+ encodersessions: 2,
497
+ decodersessions: 4,
498
+ weight: 80,
499
+ flavor: 'vgpu',
500
+ },
501
+ {
502
+ id: 'RX9070XT-2Q',
503
+ vrammb: 4096,
504
+ maxinstances: 4,
505
+ encodersessions: 1,
506
+ decodersessions: 2,
507
+ weight: 40,
508
+ flavor: 'sriov',
509
+ },
510
+ {
511
+ id: 'RX9070XT-4Q',
512
+ vrammb: 8192,
513
+ maxinstances: 2,
514
+ encodersessions: 2,
515
+ decodersessions: 4,
516
+ weight: 70,
517
+ flavor: 'sriov',
518
+ },
519
+ ];
520
+ /** Resolves a vgpu slice profile by id, throwing for unknown names. */
521
+ export function getvgpuprofile(id) {
522
+ const found = VGPUPROFILES.find((profile) => profile.id === id);
523
+ if (found === undefined) {
524
+ throw new gpuerror(`unknown vgpu profile "${id}"; known profiles: ${VGPUPROFILES.map((profile) => profile.id).join(', ')}`);
525
+ }
526
+ return found;
527
+ }
528
+ /**
529
+ * Blackwell B100 MIG layout catalog (192 GB HBM3e, 8 TB/s): eight profiles
530
+ * from 1g.12gb (14 SMs, 7 instances) to the monolithic 7g.192gb (192 SMs),
531
+ * each mapped to its compatible mdev type so vgpu and MIG compose.
532
+ */
533
+ export const MIGLAYOUTBLACKWELL = [
534
+ {
535
+ profile: '1g.12gb',
536
+ computeslices: 1,
537
+ memorymb: 12288,
538
+ hbmgb: 12,
539
+ smcount: 14,
540
+ decoders: 1,
541
+ encoders: 1,
542
+ maxinstances: 7,
543
+ mdev: 'nvidia-b100-mig-1g-12gb',
544
+ c2ccoherent: true,
545
+ },
546
+ {
547
+ profile: '1g.24gb',
548
+ computeslices: 1,
549
+ memorymb: 24576,
550
+ hbmgb: 24,
551
+ smcount: 28,
552
+ decoders: 1,
553
+ encoders: 1,
554
+ maxinstances: 7,
555
+ mdev: 'nvidia-b100-mig-1g-24gb',
556
+ c2ccoherent: true,
557
+ },
558
+ {
559
+ profile: '2g.24gb',
560
+ computeslices: 2,
561
+ memorymb: 24576,
562
+ hbmgb: 24,
563
+ smcount: 28,
564
+ decoders: 2,
565
+ encoders: 1,
566
+ maxinstances: 3,
567
+ mdev: 'nvidia-b100-mig-2g-24gb',
568
+ c2ccoherent: true,
569
+ },
570
+ {
571
+ profile: '2g.48gb',
572
+ computeslices: 2,
573
+ memorymb: 49152,
574
+ hbmgb: 48,
575
+ smcount: 56,
576
+ decoders: 2,
577
+ encoders: 2,
578
+ maxinstances: 3,
579
+ mdev: 'nvidia-b100-mig-2g-48gb',
580
+ c2ccoherent: true,
581
+ },
582
+ {
583
+ profile: '3g.48gb',
584
+ computeslices: 3,
585
+ memorymb: 49152,
586
+ hbmgb: 48,
587
+ smcount: 56,
588
+ decoders: 2,
589
+ encoders: 2,
590
+ maxinstances: 2,
591
+ mdev: 'nvidia-b100-mig-3g-48gb',
592
+ c2ccoherent: true,
593
+ },
594
+ {
595
+ profile: '3g.96gb',
596
+ computeslices: 3,
597
+ memorymb: 98304,
598
+ hbmgb: 96,
599
+ smcount: 84,
600
+ decoders: 3,
601
+ encoders: 2,
602
+ maxinstances: 2,
603
+ mdev: 'nvidia-b100-mig-3g-96gb',
604
+ c2ccoherent: true,
605
+ },
606
+ {
607
+ profile: '4g.96gb',
608
+ computeslices: 4,
609
+ memorymb: 98304,
610
+ hbmgb: 96,
611
+ smcount: 112,
612
+ decoders: 4,
613
+ encoders: 3,
614
+ maxinstances: 1,
615
+ mdev: 'nvidia-b100-mig-4g-96gb',
616
+ c2ccoherent: true,
617
+ },
618
+ {
619
+ profile: '7g.192gb',
620
+ computeslices: 7,
621
+ memorymb: 196608,
622
+ hbmgb: 192,
623
+ smcount: 192,
624
+ decoders: 7,
625
+ encoders: 4,
626
+ maxinstances: 1,
627
+ mdev: 'nvidia-b100-mig-7g-192gb',
628
+ c2ccoherent: true,
629
+ },
630
+ ];
631
+ /**
632
+ * Validates that a requested MIG instance set does not oversubscribe the
633
+ * Blackwell physical limits: at most 7 compute slices and at most 192 GB of
634
+ * HBM3e in aggregate.
635
+ */
636
+ export function validatedensity(requested) {
637
+ try {
638
+ let slices = 0;
639
+ let gb = 0;
640
+ for (const layout of requested) {
641
+ slices += layout.computeslices;
642
+ gb += layout.hbmgb;
643
+ }
644
+ return slices <= 7 && gb <= 192;
645
+ }
646
+ catch (cause) {
647
+ throw new gpuerror('validatedensity failed', { cause: cause });
648
+ }
649
+ }
650
+ /**
651
+ * Composes the complete MIG catalog visible to planners: the guest-side
652
+ * VRAM slicing profiles owned by virtualmemory.ts (1g.24gb, 2g.48gb and
653
+ * 4g.96gb on the 96 GB virtual device) plus the host-side Blackwell
654
+ * layouts mirrored above.
655
+ */
656
+ export function composemigcatalog() {
657
+ try {
658
+ return [
659
+ ...MIGPROFILES.map((profile) => profile.id),
660
+ ...MIGLAYOUTBLACKWELL.map((row) => row.profile),
661
+ ];
662
+ }
663
+ catch (cause) {
664
+ throw new gpuerror('composemigcatalog failed', { cause: cause });
665
+ }
666
+ }
667
+ /**
668
+ * Static spec database mirrored from the C++ virtualization core. GB100 is
669
+ * the 168 SM datacenter die with 8192-bit HBM3e at 8 TB/s; GB202 is the
670
+ * 170 SM consumer die with 512-bit GDDR7 at 1792 GB/s; Navi 48 carries 64
671
+ * CUs organized as 32 WGPs with 128 AI accelerators on VCN 5.0.
672
+ */
673
+ export const GPUSTATICSPECS = [
674
+ {
675
+ arch: 'gb100',
676
+ vendor: 'nvidia',
677
+ marketingname: 'NVIDIA B100 Tensor Core 192GB HBM3e SXM',
678
+ smorcu: 168,
679
+ busbits: 8192,
680
+ bandwidthgbps: 8000,
681
+ tdpwatts: 700,
682
+ encoders: 2,
683
+ decoders: 4,
684
+ mig: true,
685
+ sriov: false,
686
+ maxvgpuinstances: 24,
687
+ mediaengine: 'NVENC 9th Gen dual',
688
+ },
689
+ {
690
+ arch: 'gb202',
691
+ vendor: 'nvidia',
692
+ marketingname: 'NVIDIA GeForce RTX 5090 32GB GDDR7 GB202-300',
693
+ smorcu: 170,
694
+ busbits: 512,
695
+ bandwidthgbps: 1792,
696
+ tdpwatts: 575,
697
+ encoders: 2,
698
+ decoders: 2,
699
+ mig: false,
700
+ sriov: true,
701
+ maxvgpuinstances: 4,
702
+ mediaengine: 'NVENC 9th Gen',
703
+ },
704
+ {
705
+ arch: 'gb203',
706
+ vendor: 'nvidia',
707
+ marketingname: 'NVIDIA GeForce RTX 5080 16GB GDDR7 GB203-400',
708
+ smorcu: 84,
709
+ busbits: 256,
710
+ bandwidthgbps: 960,
711
+ tdpwatts: 360,
712
+ encoders: 1,
713
+ decoders: 1,
714
+ mig: false,
715
+ sriov: true,
716
+ maxvgpuinstances: 4,
717
+ mediaengine: 'NVENC 9th Gen',
718
+ },
719
+ {
720
+ arch: 'navi48',
721
+ vendor: 'amd',
722
+ marketingname: 'AMD Radeon RX 9070 XT Navi48 16GB GDDR6',
723
+ smorcu: 64,
724
+ busbits: 256,
725
+ bandwidthgbps: 640,
726
+ tdpwatts: 304,
727
+ encoders: 2,
728
+ decoders: 2,
729
+ mig: false,
730
+ sriov: true,
731
+ maxvgpuinstances: 4,
732
+ wgps: 32,
733
+ aiaccelerators: 128,
734
+ mediaengine: 'VCN 5.0 / VPE 1.1',
735
+ },
736
+ {
737
+ arch: 'navi44',
738
+ vendor: 'amd',
739
+ marketingname: 'AMD Radeon RX 9060 XT Navi44 16GB GDDR6',
740
+ smorcu: 32,
741
+ busbits: 128,
742
+ bandwidthgbps: 322,
743
+ tdpwatts: 160,
744
+ encoders: 1,
745
+ decoders: 1,
746
+ mig: false,
747
+ sriov: true,
748
+ maxvgpuinstances: 2,
749
+ wgps: 16,
750
+ aiaccelerators: 64,
751
+ mediaengine: 'VCN 5.0',
752
+ },
753
+ ];
754
+ /* ------------------------------------------------------------------ */
755
+ /* Section 8: nvenc dual engine mirror */
756
+ /* ------------------------------------------------------------------ */
757
+ /** Throughput contract of the B100 dual NVENC engines (SDK 13.0 data). */
758
+ export const NVENCDUALENGINE = {
759
+ totalmpixpersec: 1600,
760
+ perenginempix: 800,
761
+ engines: 2,
762
+ };
763
+ /** Session table: 8K60 ceilings per codec with HDR10 and split-frame. */
764
+ export function nvencsessiontable() {
765
+ return [
766
+ {
767
+ codec: 'h264',
768
+ maxwidth: 8192,
769
+ maxheight: 8192,
770
+ maxfps: 60,
771
+ mpixpersec: 480,
772
+ hdr10: false,
773
+ splitframe: true,
774
+ },
775
+ {
776
+ codec: 'hevc',
777
+ maxwidth: 8192,
778
+ maxheight: 8192,
779
+ maxfps: 60,
780
+ mpixpersec: 800,
781
+ hdr10: true,
782
+ splitframe: true,
783
+ },
784
+ {
785
+ codec: 'av1',
786
+ maxwidth: 8192,
787
+ maxheight: 8192,
788
+ maxfps: 60,
789
+ mpixpersec: 800,
790
+ hdr10: true,
791
+ splitframe: true,
792
+ },
793
+ ];
794
+ }
795
+ /**
796
+ * Checks whether a resolution at a frame rate (and session count) fits
797
+ * within the 1600 MPix/s aggregate budget of the dual engines.
798
+ */
799
+ export function nvencCanFit(w, h, fps, sessions = 1) {
800
+ try {
801
+ const mpix = ((w * h * fps) / 1_000_000) * sessions;
802
+ return mpix <= NVENCDUALENGINE.totalmpixpersec;
803
+ }
804
+ catch (cause) {
805
+ throw new gpuerror('nvencCanFit failed', { cause: cause });
806
+ }
807
+ }
808
+ /** Human readable engine description pinned to the v2 driver anchor. */
809
+ export function nvencdescribe() {
810
+ return (`NVENC Blackwell B100 dual-engine ${NVENCDUALENGINE.totalmpixpersec} MPix/s total ` +
811
+ `(${NVENCDUALENGINE.perenginempix} per engine), AV1/HEVC 8K HDR60, split-frame, ` +
812
+ `SDK 13.0, driver ${smidriveranchor.driver}`);
813
+ }
814
+ /* ------------------------------------------------------------------ */
815
+ /* Section 9: registry, builder and factory */
816
+ /* ------------------------------------------------------------------ */
817
+ /**
818
+ * Registry of gpu identities. Seeded with the verified GPU_BANK and
819
+ * extensible at runtime; the Meta json identities (B100, GB200, RTX 5070,
820
+ * RX 8900 XTX, Arc B770, RDNA APUs) register here after being loaded from
821
+ * their json data files.
822
+ */
823
+ export const gpuregistry = new Map(GPU_BANK.map((spec) => [spec.id, spec]));
824
+ /** Lists every registered gpu identity id in registry order. */
825
+ export function listgpus() {
826
+ return [...gpuregistry.keys()];
827
+ }
828
+ /** Resolves a gpu identity by id, throwing with the known ids on miss. */
829
+ export function getgpu(id) {
830
+ const found = gpuregistry.get(id.toLowerCase());
831
+ if (found === undefined) {
832
+ throw new gpuerror(`unknown gpu identity "${id}"; known ids: ${listgpus().join(', ')}`);
833
+ }
834
+ return found;
835
+ }
836
+ /** Resolves a capability flag that may arrive as a boolean or as an object
837
+ * carrying a nested "supported" key (both json schemas appear in the pool). */
838
+ function resolveflag(value, key) {
839
+ if (typeof value === 'object' && value !== null) {
840
+ const nested = value[key];
841
+ return nested === undefined ? false : Boolean(nested);
842
+ }
843
+ return Boolean(value);
844
+ }
845
+ /**
846
+ * Normalizes a loose json record from the data files (gpus.json,
847
+ * processors.json) into a bank-grade virtualgpuspec and registers it. This
848
+ * is the logic half of the Meta identities: the numbers live in the jsons,
849
+ * this function only maps shapes. Accepted key spellings cover both the
850
+ * v5 schema (pciId as "vendor:device", memoryGB, vramGb, memoryBandwidthGBs,
851
+ * tdpW, cudaCores) and the Meta schema (vram_gb, bandwidth_gbs, tdp_w,
852
+ * cuCount, streamProcessors).
853
+ */
854
+ export function registergpudata(record) {
855
+ try {
856
+ const id = String(record.id ?? record.sku ?? '').toLowerCase();
857
+ if (id.length === 0) {
858
+ throw new gpuerror('gpu record requires an id');
859
+ }
860
+ const name = String(record.name ?? record.model ?? id);
861
+ const vendorraw = String(record.vendor ?? '').toLowerCase();
862
+ const vendor = vendorraw.includes('amd')
863
+ ? 'amd'
864
+ : vendorraw.includes('intel')
865
+ ? 'intel'
866
+ : 'nvidia';
867
+ const pciRaw = record.pciId ?? record.pci_id;
868
+ const pcifull = typeof pciRaw === 'string'
869
+ ? pciRaw
870
+ : typeof pciRaw === 'object' && pciRaw !== null
871
+ ? String(pciRaw.full ?? '')
872
+ : String(record.pci ?? '');
873
+ const [pcivendor, pcidevice] = pcifull.length === 9 ? pcifull.split(':') : ['0000', '0000'];
874
+ const vramgb = Number(record.memoryGB ?? record.vramGb ?? record.vram_gb ?? record.vramgb ?? 0);
875
+ if (vramgb <= 0) {
876
+ throw new gpuerror(`gpu record "${id}" requires a positive memory size`);
877
+ }
878
+ const spec = {
879
+ id,
880
+ name,
881
+ vendor,
882
+ pcivendor: pcivendor.toUpperCase(),
883
+ pcidevice: pcidevice.toUpperCase(),
884
+ vrammib: Math.round(vramgb * 1024),
885
+ smireportedmib: Math.round(Number(record.reportedMib ?? record.reported_mib ?? vramgb * 1024)),
886
+ memtype: String(record.memoryType ?? record.vramType ?? record.vram_type ?? 'GDDR6').toUpperCase(),
887
+ busbits: Number(record.busBits ?? record.bus_bits ?? record.memoryBusBit ?? 0),
888
+ bandwidthgbs: Number(record.bandwidthGBs ?? record.bandwidth_gbs ?? record.memoryBandwidthGBs ?? 0),
889
+ tdpwatts: Number(record.tdpW ?? record.tdp_w ?? 0),
890
+ arch: String(record.architecture ?? record.arch ?? record.codename ?? 'virtual'),
891
+ smarch: String(record.smarch ?? record.gfxTarget ?? record.gfx_target ?? ''),
892
+ computeunits: Number(record.cudaCores ?? record.cuda_cores ?? record.cuCount ?? record.streamProcessors ?? 0),
893
+ smcount: Number(record.sms ?? record.smCount ?? record.sm_count ?? 0),
894
+ mig: resolveflag(record.mig, 'supported'),
895
+ sriov: resolveflag(record.sriov, 'supported'),
896
+ launch: String(record.releaseDate ?? record.launch ?? '2026-08-22'),
897
+ };
898
+ gpuregistry.set(id, spec);
899
+ return spec;
900
+ }
901
+ catch (cause) {
902
+ if (cause instanceof gpuerror) {
903
+ throw cause;
904
+ }
905
+ throw new gpuerror('registergpudata failed', { cause: cause });
906
+ }
907
+ }
908
+ /**
909
+ * Fluent builder for custom gpu identities. The builder starts from the
910
+ * RTX 5090 baseline, collects overrides through chainable with* methods
911
+ * and freezes the result into the registry.
912
+ */
913
+ export class virtualgpubuilder {
914
+ #spec;
915
+ constructor() {
916
+ this.#spec = GPU_BANK[0];
917
+ }
918
+ /** Sets the registry id and display name. */
919
+ withid(id, name) {
920
+ this.#spec = { ...this.#spec, id: id.toLowerCase(), name };
921
+ return this;
922
+ }
923
+ /** Sets the vendor and the pci vendor id that matches it. */
924
+ withvendor(vendor) {
925
+ this.#spec = {
926
+ ...this.#spec,
927
+ vendor,
928
+ pcivendor: vendor === 'nvidia' ? '10DE' : vendor === 'amd' ? '1002' : '8086',
929
+ };
930
+ return this;
931
+ }
932
+ /** Sets the pci device id; must be exactly 4 hex digits. */
933
+ withpcidevice(device) {
934
+ if (!/^[0-9A-Fa-f]{4}$/.test(device)) {
935
+ throw new gpuerror(`pci device "${device}" must be 4 hex digits`);
936
+ }
937
+ this.#spec = { ...this.#spec, pcidevice: device.toUpperCase() };
938
+ return this;
939
+ }
940
+ /** Sets the memory geometry: capacity, type, bus width and bandwidth. */
941
+ withmemory(vrammib, memtype, busbits, bandwidthgbs) {
942
+ this.#spec = { ...this.#spec, vrammib, memtype, busbits, bandwidthgbs };
943
+ return this;
944
+ }
945
+ /** Sets power and architecture strings. */
946
+ withpower(tdpwatts, arch) {
947
+ this.#spec = { ...this.#spec, tdpwatts, arch };
948
+ return this;
949
+ }
950
+ /** Sets compute topology and the virtualization capabilities. */
951
+ withcompute(computeunits, smcount, smarch, mig, sriov) {
952
+ this.#spec = { ...this.#spec, computeunits, smcount, smarch, mig, sriov };
953
+ return this;
954
+ }
955
+ /** Validates the accumulated fields and freezes the identity. */
956
+ build() {
957
+ try {
958
+ const spec = Object.freeze(this.#spec);
959
+ if (spec.id.length === 0 || spec.name.length === 0) {
960
+ throw new gpuerror('gpu identity requires an id and a name');
961
+ }
962
+ if (!/^[0-9A-Fa-f]{4}$/.test(spec.pcidevice)) {
963
+ throw new gpuerror(`pci device "${spec.pcidevice}" must be 4 hex digits`);
964
+ }
965
+ if (spec.vrammib <= 0 || spec.bandwidthgbs < 0 || spec.tdpwatts < 0) {
966
+ throw new gpuerror('gpu identity requires positive vram, bandwidth and tdp values');
967
+ }
968
+ gpuregistry.set(spec.id, spec);
969
+ return spec;
970
+ }
971
+ catch (cause) {
972
+ if (cause instanceof gpuerror) {
973
+ throw cause;
974
+ }
975
+ throw new gpuerror('virtualgpubuilder.build failed', { cause: cause });
976
+ }
977
+ }
978
+ }
979
+ /**
980
+ * Factory that materializes a bank identity together with its NVML mock
981
+ * environment: one call resolves the registry entry and pins the FAKE_VRAM
982
+ * and FAKE_MODEL variables the smi adapter emulators read.
983
+ */
984
+ export function createvirtualgpu(id) {
985
+ try {
986
+ const spec = getgpu(id);
987
+ return {
988
+ spec,
989
+ pciid: fullpciid(spec),
990
+ nvmlenv: nvmlMockEnv(spec.smireportedmib, spec.name),
991
+ };
992
+ }
993
+ catch (cause) {
994
+ if (cause instanceof gpuerror) {
995
+ throw cause;
996
+ }
997
+ throw new gpuerror('createvirtualgpu failed', { cause: cause });
998
+ }
999
+ }
1000
+ //# sourceMappingURL=virtualgpu.js.map