@wenathlan/saddle 1.8.18 → 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 (802) hide show
  1. package/Dockerfile +1339 -0
  2. package/README.md +33 -12
  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 -123
  57. package/dist/index.d.ts.map +1 -1
  58. package/dist/index.js +1018 -123
  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/contracts.d.ts → isolation.d.ts} +12 -1
  69. package/dist/isolation.d.ts.map +1 -0
  70. package/dist/{isolation/contracts.js → isolation.js} +13 -1
  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/brancharchive-2026-08-18.md +18 -0
  148. package/docs/browser.md +7 -0
  149. package/docs/consolidation.md +70 -0
  150. package/docs/e2ugh-engine.md +528 -0
  151. package/{dist/examples/localjob.js → docs/example-localjob.ts} +3 -3
  152. package/{dist/examples/publicapi.js → docs/example-publicapi.ts} +2 -2
  153. package/docs/hardware.md +342 -0
  154. package/docs/optimization.md +126 -0
  155. package/docs/performance.md +499 -0
  156. package/docs/planning.1.8.18.md +94 -0
  157. package/docs/planning.1.8.19.md +49 -0
  158. package/docs/releasenotes-1.8.19.md +35 -0
  159. package/docs/research-1.8.19-virtual-browser.md +27 -0
  160. package/docs/security.md +454 -0
  161. package/docs/todo-1.8.18.md +12 -0
  162. package/docs/todo-1.8.19.md +241 -0
  163. package/docs/viability.md +777 -0
  164. package/docs/virtualization.md +335 -0
  165. package/docs/web-duplicatecleanup.md +9 -0
  166. package/docs/web-ideas.md +106 -0
  167. package/docs/workflowimprovements-2026-08-19.md +70 -0
  168. package/gpumonitor.cpp +1543 -0
  169. package/gpus.json +2408 -0
  170. package/index.ts +1478 -0
  171. package/media.ts +1337 -0
  172. package/mttg.config +1549 -0
  173. package/orchestrator.ts +5462 -0
  174. package/package.json +304 -56
  175. package/passage.config +1331 -0
  176. package/performance.ts +1049 -0
  177. package/processors.json +2217 -0
  178. package/qemu.config +1062 -0
  179. package/qemubridge.py +1340 -0
  180. package/quantum.ts +2393 -0
  181. package/render.ts +1325 -0
  182. package/scheduler.ts +1600 -0
  183. package/security.ts +1449 -0
  184. package/tiers.ts +2871 -0
  185. package/tsconfig.json +29 -0
  186. package/virtualcpu.ts +1273 -0
  187. package/virtualgpu.ts +1181 -0
  188. package/virtualhardware.c +1011 -0
  189. package/virtualhardware.json +739 -0
  190. package/virtualization.ts +1628 -0
  191. package/virtualizationcore.cpp +4635 -0
  192. package/virtualmemory.ts +2303 -0
  193. package/vm.config.json +1910 -0
  194. package/{extension → web/extension}/manifest.json +1 -1
  195. package/web/readme.md +382 -0
  196. package/web/tsconfig.json +25 -0
  197. package/dist/adapters/forge.d.ts +0 -17
  198. package/dist/adapters/forge.d.ts.map +0 -1
  199. package/dist/adapters/forge.js +0 -19
  200. package/dist/adapters/forge.js.map +0 -1
  201. package/dist/adapters/forgejo.d.ts +0 -49
  202. package/dist/adapters/forgejo.d.ts.map +0 -1
  203. package/dist/adapters/forgejo.js +0 -8
  204. package/dist/adapters/forgejo.js.map +0 -1
  205. package/dist/adapters/github.d.ts +0 -12
  206. package/dist/adapters/github.d.ts.map +0 -1
  207. package/dist/adapters/github.js +0 -20
  208. package/dist/adapters/github.js.map +0 -1
  209. package/dist/adapters/gitlab.d.ts +0 -17
  210. package/dist/adapters/gitlab.d.ts.map +0 -1
  211. package/dist/adapters/gitlab.js +0 -10
  212. package/dist/adapters/gitlab.js.map +0 -1
  213. package/dist/adapters/huggingface.d.ts +0 -17
  214. package/dist/adapters/huggingface.d.ts.map +0 -1
  215. package/dist/adapters/huggingface.js +0 -6
  216. package/dist/adapters/huggingface.js.map +0 -1
  217. package/dist/adapters/socket.d.ts +0 -11
  218. package/dist/adapters/socket.d.ts.map +0 -1
  219. package/dist/adapters/socket.js +0 -17
  220. package/dist/adapters/socket.js.map +0 -1
  221. package/dist/adapters/transport.d.ts +0 -7
  222. package/dist/adapters/transport.d.ts.map +0 -1
  223. package/dist/adapters/transport.js +0 -36
  224. package/dist/adapters/transport.js.map +0 -1
  225. package/dist/ai/chunk.d.ts +0 -2
  226. package/dist/ai/chunk.d.ts.map +0 -1
  227. package/dist/ai/chunk.js +0 -36
  228. package/dist/ai/chunk.js.map +0 -1
  229. package/dist/ai/llmstxt.d.ts +0 -6
  230. package/dist/ai/llmstxt.d.ts.map +0 -1
  231. package/dist/ai/llmstxt.js +0 -12
  232. package/dist/ai/llmstxt.js.map +0 -1
  233. package/dist/ai/provenance.d.ts +0 -22
  234. package/dist/ai/provenance.d.ts.map +0 -1
  235. package/dist/ai/provenance.js +0 -25
  236. package/dist/ai/provenance.js.map +0 -1
  237. package/dist/ai/rag.d.ts +0 -26
  238. package/dist/ai/rag.d.ts.map +0 -1
  239. package/dist/ai/rag.js +0 -22
  240. package/dist/ai/rag.js.map +0 -1
  241. package/dist/ai/tokens.d.ts +0 -15
  242. package/dist/ai/tokens.d.ts.map +0 -1
  243. package/dist/ai/tokens.js +0 -9
  244. package/dist/ai/tokens.js.map +0 -1
  245. package/dist/api/auth.d.ts +0 -16
  246. package/dist/api/auth.d.ts.map +0 -1
  247. package/dist/api/auth.js +0 -19
  248. package/dist/api/auth.js.map +0 -1
  249. package/dist/api/contracts.d.ts +0 -28
  250. package/dist/api/contracts.d.ts.map +0 -1
  251. package/dist/api/contracts.js +0 -14
  252. package/dist/api/contracts.js.map +0 -1
  253. package/dist/api/control.d.ts +0 -10
  254. package/dist/api/control.d.ts.map +0 -1
  255. package/dist/api/control.js +0 -35
  256. package/dist/api/control.js.map +0 -1
  257. package/dist/api/http.d.ts +0 -7
  258. package/dist/api/http.d.ts.map +0 -1
  259. package/dist/api/http.js +0 -12
  260. package/dist/api/http.js.map +0 -1
  261. package/dist/api/rate.d.ts +0 -28
  262. package/dist/api/rate.d.ts.map +0 -1
  263. package/dist/api/rate.js +0 -36
  264. package/dist/api/rate.js.map +0 -1
  265. package/dist/api/security.d.ts +0 -12
  266. package/dist/api/security.d.ts.map +0 -1
  267. package/dist/api/security.js +0 -56
  268. package/dist/api/security.js.map +0 -1
  269. package/dist/api/service.d.ts +0 -5
  270. package/dist/api/service.d.ts.map +0 -1
  271. package/dist/api/service.js +0 -70
  272. package/dist/api/service.js.map +0 -1
  273. package/dist/apps/registry.d.ts +0 -33
  274. package/dist/apps/registry.d.ts.map +0 -1
  275. package/dist/apps/registry.js +0 -24
  276. package/dist/apps/registry.js.map +0 -1
  277. package/dist/binary/archive.d.ts +0 -27
  278. package/dist/binary/archive.d.ts.map +0 -1
  279. package/dist/binary/archive.js +0 -46
  280. package/dist/binary/archive.js.map +0 -1
  281. package/dist/binary/build.d.ts +0 -29
  282. package/dist/binary/build.d.ts.map +0 -1
  283. package/dist/binary/build.js +0 -17
  284. package/dist/binary/build.js.map +0 -1
  285. package/dist/binary/transform.d.ts +0 -70
  286. package/dist/binary/transform.d.ts.map +0 -1
  287. package/dist/binary/transform.js +0 -105
  288. package/dist/binary/transform.js.map +0 -1
  289. package/dist/bot/adapter.d.ts +0 -5
  290. package/dist/bot/adapter.d.ts.map +0 -1
  291. package/dist/bot/adapter.js +0 -11
  292. package/dist/bot/adapter.js.map +0 -1
  293. package/dist/bot/bot.d.ts +0 -28
  294. package/dist/bot/bot.d.ts.map +0 -1
  295. package/dist/bot/bot.js +0 -52
  296. package/dist/bot/bot.js.map +0 -1
  297. package/dist/bot/commands.d.ts +0 -8
  298. package/dist/bot/commands.d.ts.map +0 -1
  299. package/dist/bot/commands.js +0 -19
  300. package/dist/bot/commands.js.map +0 -1
  301. package/dist/bot/permissions.d.ts +0 -13
  302. package/dist/bot/permissions.d.ts.map +0 -1
  303. package/dist/bot/permissions.js +0 -16
  304. package/dist/bot/permissions.js.map +0 -1
  305. package/dist/browser/actions.d.ts +0 -33
  306. package/dist/browser/actions.d.ts.map +0 -1
  307. package/dist/browser/actions.js +0 -44
  308. package/dist/browser/actions.js.map +0 -1
  309. package/dist/browser/agent.d.ts +0 -21
  310. package/dist/browser/agent.d.ts.map +0 -1
  311. package/dist/browser/agent.js +0 -13
  312. package/dist/browser/agent.js.map +0 -1
  313. package/dist/browser/context.d.ts +0 -43
  314. package/dist/browser/context.d.ts.map +0 -1
  315. package/dist/browser/context.js +0 -54
  316. package/dist/browser/context.js.map +0 -1
  317. package/dist/browser/fingerprint.d.ts +0 -4
  318. package/dist/browser/fingerprint.d.ts.map +0 -1
  319. package/dist/browser/fingerprint.js +0 -12
  320. package/dist/browser/fingerprint.js.map +0 -1
  321. package/dist/browser/index.d.ts +0 -11
  322. package/dist/browser/index.d.ts.map +0 -1
  323. package/dist/browser/index.js +0 -11
  324. package/dist/browser/index.js.map +0 -1
  325. package/dist/browser/playwright.d.ts +0 -11
  326. package/dist/browser/playwright.d.ts.map +0 -1
  327. package/dist/browser/playwright.js +0 -24
  328. package/dist/browser/playwright.js.map +0 -1
  329. package/dist/browser/recorder.d.ts +0 -21
  330. package/dist/browser/recorder.d.ts.map +0 -1
  331. package/dist/browser/recorder.js +0 -58
  332. package/dist/browser/recorder.js.map +0 -1
  333. package/dist/browser/session.d.ts +0 -14
  334. package/dist/browser/session.d.ts.map +0 -1
  335. package/dist/browser/session.js +0 -21
  336. package/dist/browser/session.js.map +0 -1
  337. package/dist/browser/snapshot.d.ts +0 -69
  338. package/dist/browser/snapshot.d.ts.map +0 -1
  339. package/dist/browser/snapshot.js +0 -133
  340. package/dist/browser/snapshot.js.map +0 -1
  341. package/dist/captcha/contract.d.ts +0 -35
  342. package/dist/captcha/contract.d.ts.map +0 -1
  343. package/dist/captcha/contract.js +0 -17
  344. package/dist/captcha/contract.js.map +0 -1
  345. package/dist/captcha/evidence.d.ts +0 -10
  346. package/dist/captcha/evidence.d.ts.map +0 -1
  347. package/dist/captcha/evidence.js +0 -9
  348. package/dist/captcha/evidence.js.map +0 -1
  349. package/dist/captcha/guard.d.ts +0 -23
  350. package/dist/captcha/guard.d.ts.map +0 -1
  351. package/dist/captcha/guard.js +0 -12
  352. package/dist/captcha/guard.js.map +0 -1
  353. package/dist/cli/main.d.ts +0 -4
  354. package/dist/cli/main.d.ts.map +0 -1
  355. package/dist/cli/main.js +0 -46
  356. package/dist/cli/main.js.map +0 -1
  357. package/dist/core/errors.d.ts +0 -84
  358. package/dist/core/errors.d.ts.map +0 -1
  359. package/dist/core/errors.js +0 -54
  360. package/dist/core/errors.js.map +0 -1
  361. package/dist/core/events.d.ts +0 -9
  362. package/dist/core/events.d.ts.map +0 -1
  363. package/dist/core/events.js +0 -21
  364. package/dist/core/events.js.map +0 -1
  365. package/dist/core/hash.d.ts +0 -10
  366. package/dist/core/hash.d.ts.map +0 -1
  367. package/dist/core/hash.js +0 -82
  368. package/dist/core/hash.js.map +0 -1
  369. package/dist/core/ids.d.ts +0 -10
  370. package/dist/core/ids.d.ts.map +0 -1
  371. package/dist/core/ids.js +0 -15
  372. package/dist/core/ids.js.map +0 -1
  373. package/dist/delivery/manifest.d.ts +0 -35
  374. package/dist/delivery/manifest.d.ts.map +0 -1
  375. package/dist/delivery/manifest.js +0 -68
  376. package/dist/delivery/manifest.js.map +0 -1
  377. package/dist/deploy/index.d.ts +0 -6
  378. package/dist/deploy/index.d.ts.map +0 -1
  379. package/dist/deploy/index.js +0 -6
  380. package/dist/deploy/index.js.map +0 -1
  381. package/dist/dispatch/resumable.d.ts +0 -102
  382. package/dist/dispatch/resumable.d.ts.map +0 -1
  383. package/dist/dispatch/resumable.js +0 -64
  384. package/dist/dispatch/resumable.js.map +0 -1
  385. package/dist/dispatch/workflow.d.ts +0 -6
  386. package/dist/dispatch/workflow.d.ts.map +0 -1
  387. package/dist/dispatch/workflow.js +0 -37
  388. package/dist/dispatch/workflow.js.map +0 -1
  389. package/dist/domain/artifacts.d.ts +0 -12
  390. package/dist/domain/artifacts.d.ts.map +0 -1
  391. package/dist/domain/artifacts.js +0 -14
  392. package/dist/domain/artifacts.js.map +0 -1
  393. package/dist/domain/jobs.d.ts +0 -12
  394. package/dist/domain/jobs.d.ts.map +0 -1
  395. package/dist/domain/jobs.js +0 -20
  396. package/dist/domain/jobs.js.map +0 -1
  397. package/dist/domain/providers.d.ts +0 -10
  398. package/dist/domain/providers.d.ts.map +0 -1
  399. package/dist/domain/providers.js +0 -8
  400. package/dist/domain/providers.js.map +0 -1
  401. package/dist/domain/runtime.d.ts +0 -14
  402. package/dist/domain/runtime.d.ts.map +0 -1
  403. package/dist/domain/runtime.js +0 -10
  404. package/dist/domain/runtime.js.map +0 -1
  405. package/dist/domain/sessions.d.ts +0 -12
  406. package/dist/domain/sessions.d.ts.map +0 -1
  407. package/dist/domain/sessions.js +0 -57
  408. package/dist/domain/sessions.js.map +0 -1
  409. package/dist/examples/localjob.d.ts +0 -2
  410. package/dist/examples/localjob.d.ts.map +0 -1
  411. package/dist/examples/localjob.js.map +0 -1
  412. package/dist/examples/publicapi.d.ts +0 -2
  413. package/dist/examples/publicapi.d.ts.map +0 -1
  414. package/dist/examples/publicapi.js.map +0 -1
  415. package/dist/extension/build.d.ts +0 -9
  416. package/dist/extension/build.d.ts.map +0 -1
  417. package/dist/extension/build.js +0 -85
  418. package/dist/extension/build.js.map +0 -1
  419. package/dist/extension/content.d.ts +0 -6
  420. package/dist/extension/content.d.ts.map +0 -1
  421. package/dist/extension/content.js +0 -135
  422. package/dist/extension/content.js.map +0 -1
  423. package/dist/extension/index.d.ts +0 -7
  424. package/dist/extension/index.d.ts.map +0 -1
  425. package/dist/extension/index.js +0 -7
  426. package/dist/extension/index.js.map +0 -1
  427. package/dist/extension/pagebridge.d.ts +0 -6
  428. package/dist/extension/pagebridge.d.ts.map +0 -1
  429. package/dist/extension/pagebridge.js +0 -42
  430. package/dist/extension/pagebridge.js.map +0 -1
  431. package/dist/extension/permissions.d.ts +0 -26
  432. package/dist/extension/permissions.d.ts.map +0 -1
  433. package/dist/extension/permissions.js +0 -28
  434. package/dist/extension/permissions.js.map +0 -1
  435. package/dist/extension/popup.d.ts +0 -5
  436. package/dist/extension/popup.d.ts.map +0 -1
  437. package/dist/extension/popup.js +0 -26
  438. package/dist/extension/popup.js.map +0 -1
  439. package/dist/extension/protocol.d.ts +0 -58
  440. package/dist/extension/protocol.d.ts.map +0 -1
  441. package/dist/extension/protocol.js +0 -101
  442. package/dist/extension/protocol.js.map +0 -1
  443. package/dist/extension/serviceworker.d.ts +0 -25
  444. package/dist/extension/serviceworker.d.ts.map +0 -1
  445. package/dist/extension/serviceworker.js +0 -102
  446. package/dist/extension/serviceworker.js.map +0 -1
  447. package/dist/extension/worker.d.ts +0 -28
  448. package/dist/extension/worker.d.ts.map +0 -1
  449. package/dist/extension/worker.js +0 -22
  450. package/dist/extension/worker.js.map +0 -1
  451. package/dist/format/check.d.ts +0 -8
  452. package/dist/format/check.d.ts.map +0 -1
  453. package/dist/format/check.js +0 -38
  454. package/dist/format/check.js.map +0 -1
  455. package/dist/isolation/contracts.d.ts.map +0 -1
  456. package/dist/isolation/contracts.js.map +0 -1
  457. package/dist/library/public.d.ts.map +0 -1
  458. package/dist/library/public.js.map +0 -1
  459. package/dist/mcp/browser.d.ts +0 -9
  460. package/dist/mcp/browser.d.ts.map +0 -1
  461. package/dist/mcp/browser.js +0 -13
  462. package/dist/mcp/browser.js.map +0 -1
  463. package/dist/mcp/server.d.ts +0 -35
  464. package/dist/mcp/server.d.ts.map +0 -1
  465. package/dist/mcp/server.js +0 -40
  466. package/dist/mcp/server.js.map +0 -1
  467. package/dist/mcp/transport.d.ts +0 -7
  468. package/dist/mcp/transport.d.ts.map +0 -1
  469. package/dist/mcp/transport.js +0 -17
  470. package/dist/mcp/transport.js.map +0 -1
  471. package/dist/memory/bridge.d.ts +0 -14
  472. package/dist/memory/bridge.d.ts.map +0 -1
  473. package/dist/memory/bridge.js +0 -16
  474. package/dist/memory/bridge.js.map +0 -1
  475. package/dist/memory/engine.d.ts +0 -38
  476. package/dist/memory/engine.d.ts.map +0 -1
  477. package/dist/memory/engine.js +0 -109
  478. package/dist/memory/engine.js.map +0 -1
  479. package/dist/memory/modes.d.ts +0 -43
  480. package/dist/memory/modes.d.ts.map +0 -1
  481. package/dist/memory/modes.js +0 -66
  482. package/dist/memory/modes.js.map +0 -1
  483. package/dist/memory/objects.d.ts +0 -21
  484. package/dist/memory/objects.d.ts.map +0 -1
  485. package/dist/memory/objects.js +0 -20
  486. package/dist/memory/objects.js.map +0 -1
  487. package/dist/memory/planner.d.ts +0 -66
  488. package/dist/memory/planner.d.ts.map +0 -1
  489. package/dist/memory/planner.js +0 -108
  490. package/dist/memory/planner.js.map +0 -1
  491. package/dist/memory/targets.d.ts +0 -78
  492. package/dist/memory/targets.d.ts.map +0 -1
  493. package/dist/memory/targets.js +0 -29
  494. package/dist/memory/targets.js.map +0 -1
  495. package/dist/memory/transforms.d.ts +0 -19
  496. package/dist/memory/transforms.d.ts.map +0 -1
  497. package/dist/memory/transforms.js +0 -14
  498. package/dist/memory/transforms.js.map +0 -1
  499. package/dist/modes/matrix.d.ts +0 -23
  500. package/dist/modes/matrix.d.ts.map +0 -1
  501. package/dist/modes/matrix.js +0 -18
  502. package/dist/modes/matrix.js.map +0 -1
  503. package/dist/modes/modes.d.ts +0 -33
  504. package/dist/modes/modes.d.ts.map +0 -1
  505. package/dist/modes/modes.js +0 -15
  506. package/dist/modes/modes.js.map +0 -1
  507. package/dist/modes/resolve.d.ts +0 -96
  508. package/dist/modes/resolve.d.ts.map +0 -1
  509. package/dist/modes/resolve.js +0 -48
  510. package/dist/modes/resolve.js.map +0 -1
  511. package/dist/observability/metrics.d.ts +0 -14
  512. package/dist/observability/metrics.d.ts.map +0 -1
  513. package/dist/observability/metrics.js +0 -18
  514. package/dist/observability/metrics.js.map +0 -1
  515. package/dist/packager/manifest.d.ts +0 -66
  516. package/dist/packager/manifest.d.ts.map +0 -1
  517. package/dist/packager/manifest.js +0 -94
  518. package/dist/packager/manifest.js.map +0 -1
  519. package/dist/packager/publish.d.ts +0 -51
  520. package/dist/packager/publish.d.ts.map +0 -1
  521. package/dist/packager/publish.js +0 -18
  522. package/dist/packager/publish.js.map +0 -1
  523. package/dist/packager/targetcli.d.ts +0 -7
  524. package/dist/packager/targetcli.d.ts.map +0 -1
  525. package/dist/packager/targetcli.js +0 -22
  526. package/dist/packager/targetcli.js.map +0 -1
  527. package/dist/persistence/adapter.d.ts +0 -5
  528. package/dist/persistence/adapter.d.ts.map +0 -1
  529. package/dist/persistence/adapter.js +0 -11
  530. package/dist/persistence/adapter.js.map +0 -1
  531. package/dist/persistence/drizzle.d.ts +0 -2
  532. package/dist/persistence/drizzle.d.ts.map +0 -1
  533. package/dist/persistence/drizzle.js +0 -12
  534. package/dist/persistence/drizzle.js.map +0 -1
  535. package/dist/persistence/memory.d.ts +0 -2
  536. package/dist/persistence/memory.d.ts.map +0 -1
  537. package/dist/persistence/memory.js +0 -27
  538. package/dist/persistence/memory.js.map +0 -1
  539. package/dist/persistence/migrations.d.ts +0 -19
  540. package/dist/persistence/migrations.d.ts.map +0 -1
  541. package/dist/persistence/migrations.js +0 -13
  542. package/dist/persistence/migrations.js.map +0 -1
  543. package/dist/persistence/prisma.d.ts +0 -2
  544. package/dist/persistence/prisma.d.ts.map +0 -1
  545. package/dist/persistence/prisma.js +0 -25
  546. package/dist/persistence/prisma.js.map +0 -1
  547. package/dist/persistence/schema.d.ts +0 -63
  548. package/dist/persistence/schema.d.ts.map +0 -1
  549. package/dist/persistence/schema.js +0 -28
  550. package/dist/persistence/schema.js.map +0 -1
  551. package/dist/persistence/sql.d.ts +0 -3
  552. package/dist/persistence/sql.d.ts.map +0 -1
  553. package/dist/persistence/sql.js +0 -37
  554. package/dist/persistence/sql.js.map +0 -1
  555. package/dist/protocol/blocks.d.ts +0 -10
  556. package/dist/protocol/blocks.d.ts.map +0 -1
  557. package/dist/protocol/blocks.js +0 -26
  558. package/dist/protocol/blocks.js.map +0 -1
  559. package/dist/protocol/json.d.ts +0 -6
  560. package/dist/protocol/json.d.ts.map +0 -1
  561. package/dist/protocol/json.js +0 -6
  562. package/dist/protocol/json.js.map +0 -1
  563. package/dist/protocol/ndjson.d.ts +0 -3
  564. package/dist/protocol/ndjson.d.ts.map +0 -1
  565. package/dist/protocol/ndjson.js +0 -20
  566. package/dist/protocol/ndjson.js.map +0 -1
  567. package/dist/protocol/sse.d.ts +0 -7
  568. package/dist/protocol/sse.d.ts.map +0 -1
  569. package/dist/protocol/sse.js +0 -25
  570. package/dist/protocol/sse.js.map +0 -1
  571. package/dist/proxy/pool.d.ts +0 -9
  572. package/dist/proxy/pool.d.ts.map +0 -1
  573. package/dist/proxy/pool.js +0 -27
  574. package/dist/proxy/pool.js.map +0 -1
  575. package/dist/queue/idempotency.d.ts +0 -10
  576. package/dist/queue/idempotency.d.ts.map +0 -1
  577. package/dist/queue/idempotency.js +0 -13
  578. package/dist/queue/idempotency.js.map +0 -1
  579. package/dist/queue/persistent.d.ts +0 -14
  580. package/dist/queue/persistent.d.ts.map +0 -1
  581. package/dist/queue/persistent.js +0 -66
  582. package/dist/queue/persistent.js.map +0 -1
  583. package/dist/queue/queue.d.ts +0 -7
  584. package/dist/queue/queue.d.ts.map +0 -1
  585. package/dist/queue/queue.js +0 -55
  586. package/dist/queue/queue.js.map +0 -1
  587. package/dist/queue/saga.d.ts +0 -5
  588. package/dist/queue/saga.d.ts.map +0 -1
  589. package/dist/queue/saga.js +0 -20
  590. package/dist/queue/saga.js.map +0 -1
  591. package/dist/release/assets.d.ts +0 -144
  592. package/dist/release/assets.d.ts.map +0 -1
  593. package/dist/release/assets.js +0 -157
  594. package/dist/release/assets.js.map +0 -1
  595. package/dist/release/evidence.d.ts +0 -92
  596. package/dist/release/evidence.d.ts.map +0 -1
  597. package/dist/release/evidence.js +0 -148
  598. package/dist/release/evidence.js.map +0 -1
  599. package/dist/release/verify.d.ts +0 -12
  600. package/dist/release/verify.d.ts.map +0 -1
  601. package/dist/release/verify.js +0 -112
  602. package/dist/release/verify.js.map +0 -1
  603. package/dist/runners/chain.d.ts +0 -125
  604. package/dist/runners/chain.d.ts.map +0 -1
  605. package/dist/runners/chain.js +0 -95
  606. package/dist/runners/chain.js.map +0 -1
  607. package/dist/runners/health.d.ts +0 -36
  608. package/dist/runners/health.d.ts.map +0 -1
  609. package/dist/runners/health.js +0 -26
  610. package/dist/runners/health.js.map +0 -1
  611. package/dist/runners/heartbeat.d.ts +0 -23
  612. package/dist/runners/heartbeat.d.ts.map +0 -1
  613. package/dist/runners/heartbeat.js +0 -29
  614. package/dist/runners/heartbeat.js.map +0 -1
  615. package/dist/runners/inprocess.d.ts +0 -17
  616. package/dist/runners/inprocess.d.ts.map +0 -1
  617. package/dist/runners/inprocess.js +0 -20
  618. package/dist/runners/inprocess.js.map +0 -1
  619. package/dist/runners/scheduler.d.ts +0 -5
  620. package/dist/runners/scheduler.d.ts.map +0 -1
  621. package/dist/runners/scheduler.js +0 -19
  622. package/dist/runners/scheduler.js.map +0 -1
  623. package/dist/runtime/abort.d.ts +0 -8
  624. package/dist/runtime/abort.d.ts.map +0 -1
  625. package/dist/runtime/abort.js +0 -13
  626. package/dist/runtime/abort.js.map +0 -1
  627. package/dist/runtime/compatibility.d.ts +0 -37
  628. package/dist/runtime/compatibility.d.ts.map +0 -1
  629. package/dist/runtime/compatibility.js +0 -10
  630. package/dist/runtime/compatibility.js.map +0 -1
  631. package/dist/runtime/detect.d.ts +0 -13
  632. package/dist/runtime/detect.d.ts.map +0 -1
  633. package/dist/runtime/detect.js +0 -18
  634. package/dist/runtime/detect.js.map +0 -1
  635. package/dist/runtime/engine.d.ts +0 -20
  636. package/dist/runtime/engine.d.ts.map +0 -1
  637. package/dist/runtime/engine.js +0 -61
  638. package/dist/runtime/engine.js.map +0 -1
  639. package/dist/runtime/retry.d.ts +0 -19
  640. package/dist/runtime/retry.d.ts.map +0 -1
  641. package/dist/runtime/retry.js +0 -54
  642. package/dist/runtime/retry.js.map +0 -1
  643. package/dist/runtime/worker.d.ts +0 -10
  644. package/dist/runtime/worker.d.ts.map +0 -1
  645. package/dist/runtime/worker.js +0 -25
  646. package/dist/runtime/worker.js.map +0 -1
  647. package/dist/scrape/cache.d.ts +0 -45
  648. package/dist/scrape/cache.d.ts.map +0 -1
  649. package/dist/scrape/cache.js +0 -45
  650. package/dist/scrape/cache.js.map +0 -1
  651. package/dist/scrape/crawl.d.ts +0 -47
  652. package/dist/scrape/crawl.d.ts.map +0 -1
  653. package/dist/scrape/crawl.js +0 -114
  654. package/dist/scrape/crawl.js.map +0 -1
  655. package/dist/scrape/extract.d.ts +0 -63
  656. package/dist/scrape/extract.d.ts.map +0 -1
  657. package/dist/scrape/extract.js +0 -47
  658. package/dist/scrape/extract.js.map +0 -1
  659. package/dist/scrape/normalize.d.ts +0 -52
  660. package/dist/scrape/normalize.d.ts.map +0 -1
  661. package/dist/scrape/normalize.js +0 -102
  662. package/dist/scrape/normalize.js.map +0 -1
  663. package/dist/scrape/robots.d.ts +0 -37
  664. package/dist/scrape/robots.d.ts.map +0 -1
  665. package/dist/scrape/robots.js +0 -71
  666. package/dist/scrape/robots.js.map +0 -1
  667. package/dist/scrape/schema.d.ts +0 -23
  668. package/dist/scrape/schema.d.ts.map +0 -1
  669. package/dist/scrape/schema.js +0 -92
  670. package/dist/scrape/schema.js.map +0 -1
  671. package/dist/scrape/scraper.d.ts +0 -6
  672. package/dist/scrape/scraper.d.ts.map +0 -1
  673. package/dist/scrape/scraper.js +0 -46
  674. package/dist/scrape/scraper.js.map +0 -1
  675. package/dist/scrape/semantic.d.ts +0 -25
  676. package/dist/scrape/semantic.d.ts.map +0 -1
  677. package/dist/scrape/semantic.js +0 -27
  678. package/dist/scrape/semantic.js.map +0 -1
  679. package/dist/server/node.d.ts +0 -7
  680. package/dist/server/node.d.ts.map +0 -1
  681. package/dist/server/node.js.map +0 -1
  682. package/dist/sessions/file.d.ts +0 -25
  683. package/dist/sessions/file.d.ts.map +0 -1
  684. package/dist/sessions/file.js +0 -13
  685. package/dist/sessions/file.js.map +0 -1
  686. package/dist/sessions/replay.d.ts +0 -9
  687. package/dist/sessions/replay.d.ts.map +0 -1
  688. package/dist/sessions/replay.js +0 -70
  689. package/dist/sessions/replay.js.map +0 -1
  690. package/dist/sessions/store.d.ts +0 -25
  691. package/dist/sessions/store.d.ts.map +0 -1
  692. package/dist/sessions/store.js +0 -13
  693. package/dist/sessions/store.js.map +0 -1
  694. package/dist/storage/adapter.d.ts +0 -5
  695. package/dist/storage/adapter.d.ts.map +0 -1
  696. package/dist/storage/adapter.js +0 -11
  697. package/dist/storage/adapter.js.map +0 -1
  698. package/dist/storage/cache.d.ts +0 -23
  699. package/dist/storage/cache.d.ts.map +0 -1
  700. package/dist/storage/cache.js +0 -79
  701. package/dist/storage/cache.js.map +0 -1
  702. package/dist/storage/checksum.d.ts +0 -3
  703. package/dist/storage/checksum.d.ts.map +0 -1
  704. package/dist/storage/checksum.js +0 -19
  705. package/dist/storage/checksum.js.map +0 -1
  706. package/dist/storage/chunked.d.ts +0 -21
  707. package/dist/storage/chunked.d.ts.map +0 -1
  708. package/dist/storage/chunked.js +0 -67
  709. package/dist/storage/chunked.js.map +0 -1
  710. package/dist/storage/content.d.ts +0 -24
  711. package/dist/storage/content.d.ts.map +0 -1
  712. package/dist/storage/content.js +0 -44
  713. package/dist/storage/content.js.map +0 -1
  714. package/dist/storage/filehosting.d.ts +0 -2
  715. package/dist/storage/filehosting.d.ts.map +0 -1
  716. package/dist/storage/filehosting.js +0 -24
  717. package/dist/storage/filehosting.js.map +0 -1
  718. package/dist/storage/githubcontents.d.ts +0 -2
  719. package/dist/storage/githubcontents.d.ts.map +0 -1
  720. package/dist/storage/githubcontents.js +0 -29
  721. package/dist/storage/githubcontents.js.map +0 -1
  722. package/dist/storage/index.d.ts +0 -12
  723. package/dist/storage/index.d.ts.map +0 -1
  724. package/dist/storage/index.js +0 -12
  725. package/dist/storage/index.js.map +0 -1
  726. package/dist/storage/local.d.ts +0 -2
  727. package/dist/storage/local.d.ts.map +0 -1
  728. package/dist/storage/local.js +0 -72
  729. package/dist/storage/local.js.map +0 -1
  730. package/dist/storage/memory.d.ts +0 -6
  731. package/dist/storage/memory.d.ts.map +0 -1
  732. package/dist/storage/memory.js +0 -36
  733. package/dist/storage/memory.js.map +0 -1
  734. package/dist/storage/pool.d.ts +0 -95
  735. package/dist/storage/pool.d.ts.map +0 -1
  736. package/dist/storage/pool.js +0 -202
  737. package/dist/storage/pool.js.map +0 -1
  738. package/dist/storage/s3compatible.d.ts +0 -3
  739. package/dist/storage/s3compatible.d.ts.map +0 -1
  740. package/dist/storage/s3compatible.js +0 -70
  741. package/dist/storage/s3compatible.js.map +0 -1
  742. package/dist/storage/sync.d.ts +0 -47
  743. package/dist/storage/sync.d.ts.map +0 -1
  744. package/dist/storage/sync.js +0 -75
  745. package/dist/storage/sync.js.map +0 -1
  746. package/dist/surfaces/adapters.d.ts +0 -97
  747. package/dist/surfaces/adapters.d.ts.map +0 -1
  748. package/dist/surfaces/adapters.js +0 -50
  749. package/dist/surfaces/adapters.js.map +0 -1
  750. package/dist/surfaces/controls.d.ts +0 -18
  751. package/dist/surfaces/controls.d.ts.map +0 -1
  752. package/dist/surfaces/controls.js +0 -45
  753. package/dist/surfaces/controls.js.map +0 -1
  754. package/dist/surfaces/manifest.d.ts +0 -68
  755. package/dist/surfaces/manifest.d.ts.map +0 -1
  756. package/dist/surfaces/manifest.js +0 -42
  757. package/dist/surfaces/manifest.js.map +0 -1
  758. package/dist/surfaces/n8n.d.ts +0 -25
  759. package/dist/surfaces/n8n.d.ts.map +0 -1
  760. package/dist/surfaces/n8n.js +0 -31
  761. package/dist/surfaces/n8n.js.map +0 -1
  762. package/dist/surfaces/operations.d.ts +0 -32
  763. package/dist/surfaces/operations.d.ts.map +0 -1
  764. package/dist/surfaces/operations.js +0 -53
  765. package/dist/surfaces/operations.js.map +0 -1
  766. package/dist/surfaces/requirements.d.ts +0 -29
  767. package/dist/surfaces/requirements.d.ts.map +0 -1
  768. package/dist/surfaces/requirements.js +0 -50
  769. package/dist/surfaces/requirements.js.map +0 -1
  770. package/dist/surfaces/targets.d.ts +0 -196
  771. package/dist/surfaces/targets.d.ts.map +0 -1
  772. package/dist/surfaces/targets.js +0 -27
  773. package/dist/surfaces/targets.js.map +0 -1
  774. package/dist/webhook/delivery.d.ts +0 -18
  775. package/dist/webhook/delivery.d.ts.map +0 -1
  776. package/dist/webhook/delivery.js +0 -36
  777. package/dist/webhook/delivery.js.map +0 -1
  778. package/dist/webhook/receiver.d.ts +0 -26
  779. package/dist/webhook/receiver.d.ts.map +0 -1
  780. package/dist/webhook/receiver.js +0 -24
  781. package/dist/webhook/receiver.js.map +0 -1
  782. package/dist/webhook/signature.d.ts +0 -3
  783. package/dist/webhook/signature.d.ts.map +0 -1
  784. package/dist/webhook/signature.js +0 -7
  785. package/dist/webhook/signature.js.map +0 -1
  786. package/dist/workflow/manifest.d.ts +0 -22
  787. package/dist/workflow/manifest.d.ts.map +0 -1
  788. package/dist/workflow/manifest.js +0 -21
  789. package/dist/workflow/manifest.js.map +0 -1
  790. package/dist/workflow/registry.d.ts +0 -7
  791. package/dist/workflow/registry.d.ts.map +0 -1
  792. package/dist/workflow/registry.js +0 -18
  793. package/dist/workflow/registry.js.map +0 -1
  794. package/dist/workflow/templates.d.ts +0 -6
  795. package/dist/workflow/templates.d.ts.map +0 -1
  796. package/dist/workflow/templates.js +0 -18
  797. package/dist/workflow/templates.js.map +0 -1
  798. package/dist/workflow/triggers.d.ts +0 -64
  799. package/dist/workflow/triggers.d.ts.map +0 -1
  800. package/dist/workflow/triggers.js +0 -99
  801. package/dist/workflow/triggers.js.map +0 -1
  802. /package/{extension/README.md → docs/extension.md} +0 -0
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "manifest_version": 3,
3
3
  "name": "Saddle browser bridge",
4
- "version": "1.8.18",
4
+ "version": "2.0.0",
5
5
  "description": "User initiated page snapshots through the Saddle browser contract.",
6
6
  "minimum_chrome_version": "110",
7
7
  "permissions": ["activeTab", "scripting", "storage"],
package/web/readme.md ADDED
@@ -0,0 +1,382 @@
1
+ # saddle web — the sandbox in your browser
2
+
3
+ the web edition of the saddle virtual hardware engine: one page that boots a
4
+ virtual container — cpu, ram, gpu, mesa software graphics — entirely in the
5
+ browser, plus one self-hosted node api exposing the exact same sandbox over
6
+ http for automation. no framework, no build step, no serverless functions.
7
+
8
+ version 2.0.2 — reported by `/api/v1/health` and kept in lockstep with
9
+ `package.json` and the `meta.version` envelope of the ten data documents
10
+ (v6-SYNC worklog task).
11
+
12
+ ## run it
13
+
14
+ ```bash
15
+ # the whole thing: static console + self-hosted api (zero dependencies)
16
+ node web/server.js
17
+ # it prints the endpoint once, e.g. listening on 0.0.0.0:48213
18
+ # override with --port 8080 or PORT=8080 / SADDLE_HOST
19
+
20
+ # the static console alone also opens from any static host:
21
+ # the browser port (sandbox.js) runs 100% client-side; the api badge stays
22
+ # in "engine: local" mode when /api/v1 is absent.
23
+ ```
24
+
25
+ inside the console: pick the cpu model (epyc 9965 192c, ryzen 9950x3d,
26
+ threadripper pro 9995wx, threadripper 7980x, core ultra 9 285k, epyc 9955,
27
+ xeon 6980p, m3 ultra), the vcpu count (1-192), ram (1-1024 gb), the gpu
28
+ (rtx 5090, rtx pro 6000, b200, h100, a100, rx 9070 xt, mi350x) and the mig
29
+ profile, press **start sandbox** and type in the terminal:
30
+
31
+ ```
32
+ help lscpu cat /proc/cpuinfo
33
+ cat /proc/meminfo free -h nvidia-smi
34
+ nvidia-smi -L clinfo vulkaninfo --summary
35
+ glxinfo uname -a ls /etc/virtual
36
+ env docker --version qemu-system-x86_64 --version
37
+ uptime whoami neofetch
38
+ clear echo <text>
39
+ ```
40
+
41
+ arrow keys browse history, tab completes commands, the side panel streams
42
+ the bus events (vm:created, vm:started, snapshot:created, exec:completed,
43
+ vm:stopped, vm:deleted).
44
+
45
+ ## files
46
+
47
+ | file | role |
48
+ |---------------|------|
49
+ | `console.html` | vanilla spa: spec panel, boot sequence, terminal, bus event timeline |
50
+ | `login.html` | sign in page: username + password, `?next=` redirect, generic errors |
51
+ | `register.html` | account creation: 3-32 `[a-z0-9.-]` username, password strength meter, no e-mail by policy |
52
+ | `dashboard.html` | user dashboard (my sandboxes, bus events, account) + admin dashboard (overview, mesh nodes, users, audit) |
53
+ | `console.js` | console page controller: terminal driver, spec form, api-backed sandbox mode |
54
+ | `login.js` / `register.js` / `dashboard.js` | page controllers of the three account pages (api base resolution, static-edge fallbacks) |
55
+ | `sandbox.js` | browser-pure port of the engine generators (zero imports, runs in node too) |
56
+ | `localauth.js` | static-edge account fallback: when no api answers (github pages / netlify / vercel clones), login/register/dashboard switch to browser-local accounts (pbkdf2-sha256 via webcrypto, never synced). persistence: accounts are mirrored to IndexedDB and repaired in both directions on load (a partial storage clear never loses them), the CODEOWNERS admins (iakadion, inathlan, aasblor and nasblor, shared bootstrap password `cdw782FG7pjxQVw`, kept in lockstep with the server seed in `auth.js`) are re-seeded whenever missing, and the dashboard ships explicit backup/restore keyfile buttons for a full wipe; only the CODEOWNERS accounts are admins |
57
+ | `server.js` | self-hosted node:http api: static serving + `/api/v1` |
58
+ | `db.js` | node:sqlite data layer: users, sessions, nodes, sandboxes, sandboxfiles, events, audit |
59
+ | `auth.js` | security layer: scrypt hashing, saddlesession cookies, rate limiter, request guards, CODEOWNERS admin seed |
60
+ | `mesh.js` | signed node-to-node mesh: hmac requests, aes-gcm payloads, clone heartbeat |
61
+ | `schema.prisma` / `init.sql` / `drizzle.config.ts` | the three schema mirrors of the db.js migrations (prisma, raw sql, drizzle kit) |
62
+ | `mime.types` | the extension to content-type table parsed by server.js at boot |
63
+ | `index.html` + `main.tsx` + `App.tsx` | the React app entry (vite build; the Pages-published surface) |
64
+ | `pages/` + `components/` + `hooks/` + `lib/` + `contexts/` | the React app folders that sit beside the console files at the web root |
65
+ | `package.json` | deploy manifest only (`@wenathlan/saddle-web`, private, never published): vercel/netlify require it at the deploy root; the published npm package is the central `@wenathlan/saddle` without web |
66
+ | `Dockerfile` (repo root) | container image for ghcr.io/wenathlan/saddle (the main image; web/ ships inside) |
67
+ | `vercel.json` | static hosting config, **no functions** |
68
+ | `netlify.toml`| static hosting config, **no functions** |
69
+ | `caddyfile` | self-host reverse proxy for the node api (devthink.pro + www) |
70
+ | `readme.md` | this document |
71
+
72
+ ## architecture
73
+
74
+ - **browser sandbox = engine port, pure.** `sandbox.js` rewrites the
75
+ engine generators for the web platform: `cpudata` (the
76
+ `best_virtual_processors` bank plus the showcase additions), `gpudata`
77
+ (the verified `gpu_bank`), `cpuinfo`/`lscpu` (byte-realistic procfs with
78
+ the zen 5 avx-512 flag set), `meminfo`/`freeh` (the 47-field payload with
79
+ the memoized snapshot so `cat /proc/meminfo` and `free -h` agree),
80
+ `nvidiaSmiTable` (the exact 89-character adapter table, driver 575.57.08,
81
+ cuda 12.9), `clinfoSummary` (rusticl opencl 3.1), `vulkanSummary`
82
+ (lavapipe vulkan 1.4), `glxinfoSummary` (llvmpipe gl 4.6), `mesaenv`
83
+ (`lp_native_vector_width=512` and friends), `bootSequence` (firecracker
84
+ 125 ms dmesg) and `dispatch` (the command parser).
85
+ - **self-hosted api = same contracts.** `server.js` imports that very same
86
+ `sandbox.js` module (it is plain esm, no dom, no node builtin) so the
87
+ browser terminal and the http api can never drift apart.
88
+
89
+ ### api surface (`/api/v1`)
90
+
91
+ | method | route | payload |
92
+ |--------|-------|---------|
93
+ | get | `/health` | `{ok, version, uptime}` |
94
+ | get | `/specs/cpus` `/specs/gpus` `/specs/memory` | the repository json catalogs (processors.json, gpus.json, cores.json), cached in a map |
95
+ | post | `/sandboxes` | `{model, vcpus, ramgb, gpu, mig}` -> `201` sandbox record (uuid, state `created -> running` after the 125 ms ramp) |
96
+ | get | `/sandboxes/:id` | status + specs + remaining ttl |
97
+ | post | `/sandboxes/:id/exec` | `{command}` -> `{output, exitCode, durationMs}` through the shared dispatcher |
98
+ | delete | `/sandboxes/:id` | destroys the sandbox |
99
+
100
+ sandboxes live in an in-memory map with a 15 minute ttl and a 60 s sweeper.
101
+ errors are standardized `{error:{code,message}}`; cors is open
102
+ (`access-control-allow-origin: *` plus the options preflight handler);
103
+ every response carries `x-content-type-options: nosniff`; the listen port
104
+ defaults once at boot to a random 30000-59999 value and is overridable by
105
+ `--port`, `PORT` or `SADDLE_PORT`; no address is hardcoded to localhost.
106
+
107
+ ## mesh architecture
108
+
109
+ the web tier ships as one directory that deploys in three shapes:
110
+
111
+ - **main node** (devthink.pro): the full container — static pages plus the
112
+ authoritative api (auth, users, admin, mesh registry, audit) and the
113
+ sqlite database on `/data`.
114
+ - **clone** (vercel, netlify, any static mirror): the same bytes served as
115
+ pure static files. the pages detect the missing `/api/v1` and fall back
116
+ to the local browser engine; for auth-backed features the visitor points
117
+ the page at the main node with `?api=https://devthink.pro` (persisted in
118
+ `localStorage` as `saddle_api`; cross-origin requests switch to
119
+ `credentials: "include"` so the `saddlesession` cookie flows).
120
+ - **standalone**: `console.html` opened from any static host or disk — the
121
+ terminal runs 100% client-side, no account, no api.
122
+
123
+ auth flow (identical on main and clones): `login.html`/`register.html`
124
+ post to `/api/v1/auth/{login,register}`; the backend validates, hashes
125
+ with scrypt, creates the session server-side and answers with the
126
+ httponly `saddlesession` cookie; `dashboard.html` calls
127
+ `/api/v1/auth/me`, renders the user view, and unlocks the admin view when
128
+ the role is `admin` (overview cards, mesh node table with ping through
129
+ `/api/v1/mesh/*`, users, global sandboxes, audit log). logout posts
130
+ `/api/v1/auth/logout` and the cookie is revoked server-side.
131
+
132
+ ```
133
+ vercel clone netlify clone
134
+ (static bytes) (static bytes)
135
+ \ / ?api=https://devthink.pro
136
+ \ local engine / credentials: include
137
+ +------- + ------+
138
+ |
139
+ v https (caddy, auto tls, gzip)
140
+ www.devthink.pro ---> devthink.pro
141
+ | reverse_proxy /api/* -> 127.0.0.1:39721
142
+ v
143
+ [ ghcr.io/wenathlan/saddle (the main image; web/ ships inside) ]
144
+ node 26 slim - server.js
145
+ /api/v1/auth - /api/v1/admin - /api/v1/sandboxes
146
+ mesh: HMAC-signed gossip + AES-GCM payloads
147
+ sqlite /data/saddle.db (0600)
148
+ |
149
+ +-- future mesh peers (other nodes,
150
+ same image, same contract)
151
+ ```
152
+
153
+ ## security
154
+
155
+ - **passwords**: scrypt (server-side, per-user salt); the wire carries
156
+ username + password only over https; hashes and salts never appear in
157
+ any api response — the admin users table renders account fields only.
158
+ - **sessions**: opaque `saddlesession` httponly cookie; the session store
159
+ keeps only hashes of the token, never the token itself. no password or
160
+ token is ever written to `localStorage` — the only client-side key is
161
+ the optional cross-origin api base (`saddle_api`), which is not a
162
+ credential.
163
+ - **rate limiting**: login, register and auth-protected routes are rate
164
+ limited per ip + username on the api; the login page answers failures
165
+ with one generic message (no user enumeration).
166
+ - **headers**: `x-content-type-options: nosniff`, `x-frame-options: deny`,
167
+ `referrer-policy: strict-origin-when-cross-origin` and a restrictive
168
+ `permissions-policy` — identical on server.js, caddy and netlify.
169
+ - **mesh**: node-to-node traffic is hmac-signed (replay-windowed
170
+ timestamps) with aes-gcm encrypted payloads; mesh keys live only in the
171
+ main-node environment, never in the browser.
172
+ - **database**: sqlite at `$SADDLE_DB` (container default
173
+ `/data/saddle.db`), volume-mounted, file mode 0600, never baked into the
174
+ image.
175
+
176
+ ## deploy matrix
177
+
178
+ | target | method | what runs |
179
+ |--------|--------|-----------|
180
+ | vercel (clone) | `web/vercel.json`, static output | bytes only: local engine, `?api=` pointing at the main node for auth |
181
+ | netlify (clone) | `web/netlify.toml`, `publish = "."` (file lives inside `web/`), node 26.7.0 | bytes only: same behavior as vercel |
182
+ | self-host (main, devthink.pro) | `docker build .` (the repo-root Dockerfile) -> `ghcr.io/wenathlan/saddle` (the main image; web/ ships inside), caddyfile in front | static pages + full `/api/v1` (auth, admin, mesh) + sqlite on `/data` |
183
+
184
+ ## why the static + node split
185
+
186
+ static hosts cannot run docker or sqlite and the project forbids
187
+ serverless functions, so the split is the only shape that satisfies every
188
+ rule at once: the sandbox compute is the visitor's own browser (the
189
+ `sandbox.js` engine port runs client-side on every clone), and the
190
+ authoritative api is one plain node container an operator runs anywhere —
191
+ devthink.pro today, any other node tomorrow, joined to the mesh. the same
192
+ directory serves both worlds without a build step, a framework or a
193
+ single dependency.
194
+
195
+ ## deploy options
196
+
197
+ - **vercel static** — `web/vercel.json` sets `outputDirectory: web` with
198
+ cache headers. static edge only: the page runs the local engine in the
199
+ browser; there are no functions.
200
+ - **netlify static** — `web/netlify.toml` sits inside `web/` and sets
201
+ `publish = "."` on node 26.7.0 with security headers. same rule:
202
+ static edge only, no functions.
203
+ - **self-host (devthink.pro pattern)** — run `node web/server.js` (or the
204
+ `ghcr.io/wenathlan/saddle (the main image; web/ ships inside)` container behind `web/caddyfile`):
205
+ caddy serves the static files on devthink.pro (+ www redirect, gzip,
206
+ security headers, auto tls) and reverse-proxies `/api/*` to the node
207
+ process on the documented port. this is the only mode where the
208
+ api-backed badge lights up and the dashboard unlocks the admin view.
209
+
210
+ ## relation to @wenathlan/saddle
211
+
212
+ saddle is the "vm published as a package" surface family
213
+ (package/extension/workflow/native/web) that the sedal runtime consumes.
214
+ this web edition is the **web surface of that family for saddle**: the
215
+ browser page is the zero-install demo of the virtual container, and the
216
+ node api is the self-hostable control plane with the same lifecycle and
217
+ exec contracts saddle exposes natively. because the api is plain node:http
218
+ with zero dependencies, it embeds inside any saddle native host without
219
+ adding a single package to the tree.
220
+
221
+ ## anti-serverless policy
222
+
223
+ no vercel functions, no netlify functions, no paid frameworks, no docker
224
+ cloud wrappers. the static hosts above serve bytes only; the compute
225
+ surface (the sandbox dispatcher) is either the visitor's own browser or a
226
+ node process the operator runs — nothing in between.
227
+
228
+ ## worklog
229
+
230
+ ### task v7-FRONT — auth pages, dashboard, deploy matrix (2026-08-23)
231
+
232
+ frontend-web pass over `web/` while v7-BACK lands the api in parallel.
233
+ created `login.html` (username + password, generic inline errors,
234
+ sanitized `?next=` redirect, configurable api base via `?api=` /
235
+ `window.SADDLE_API` / `localStorage`, `credentials: "include"` on
236
+ cross-origin clones), `register.html` (3-32 `[a-z0-9.-]` username with
237
+ auto-lowercase, min-8 password with a length+class strength meter,
238
+ confirmation match, rule checklist, no e-mail per project policy) and
239
+ `dashboard.html` (tabbed user/admin panel: my sandboxes with create/open
240
+ through `/api/v1/sandboxes`, bus event timeline polling
241
+ `/api/v1/events?since=`, account info from `/api/v1/auth/me`, admin
242
+ overview cards, mesh node table with `/api/v1/mesh` ping, users table
243
+ without hash/salt columns, global sandboxes, audit log, username filter,
244
+ skeleton loaders, empty states, 401 gate to the login link). added
245
+ `package.json` (deploy manifest only, never published; zero dependencies, engines
246
+ `>=26.7.0`, honored by the root `.nvmrc`), `web/Dockerfile` (node:26-slim image for
247
+ ghcr.io/wenathlan/saddle (the main image; web/ ships inside), `/data` volume for `$SADDLE_DB`, unprivileged
248
+ user, fetch-based healthcheck on 127.0.0.1 justified in-file); updated
249
+ `netlify.toml` (publish `.` from inside `web/`, node 26.7.0, security
250
+ headers, still zero functions), `caddyfile` (devthink.pro + www redirect,
251
+ gzip, security headers, commented tls), `index.html` (sign-in link in the
252
+ header only) and this readme (mesh architecture diagram, security,
253
+ deploy matrix, static+node split rationale). contexts (22): loginform,
254
+ registerform, strengthmeter, apibase, credentials, safenext, tabs,
255
+ userpanel, sandboxlist, sandboxcreate, eventspoll, adminoverview, meshping,
256
+ nodestable, userstable, auditlog, emptystates, skeletons, fatalgate,
257
+ dockerhealthcheck, deploymatrix, worklog.
258
+
259
+ validated live against the real v7 `server.js` (register -> login ->
260
+ me -> sandbox create/exec -> events poll -> admin overview/users/nodes/
261
+ sandboxes/audit -> 401 gates -> logout, all green) plus static checks
262
+ (tag balance, `node --check` on every inline script, id cross-reference,
263
+ json/toml contracts). contract notes for v7-BACK: `/auth/me` currently
264
+ returns `{id, username, role, expiresat}` — the dashboard already picks
265
+ `createdAt`/`lastLoginAt` defensively and lights them up when present;
266
+ `GET /api/v1/sandboxes` (my list) is not live yet — the panel shows a
267
+ rollout note on 404 and creation still works; `/api/v1/mesh/ping` does
268
+ not exist yet — the ping button tries it first (mesh-signed) and falls
269
+ back to a browser-side `/api/v1/health` latency probe.
270
+
271
+ ### task v16-CHECK — repo-wide consistency audit (2026-08-23)
272
+
273
+ auditoria total de metadados, versões, sincronização e testes pelo repositório
274
+ inteiro (82 arquivos reais no `find`). resultado: **112 checks OK / 19 DIVERGE**
275
+ (detalhado no relatório da task; nenhum arquivo corrigido — auditoria somente).
276
+ testes: `node --test tests/*.test.ts` = **153/153 pass** (o readme principal
277
+ ainda alega 148 em três lugares). principais divergências para corrigir:
278
+
279
+ 1. `cores.json:4` metadata.version **6.0.0** (esperado 1.2.12; único dos dez
280
+ data documents fora de lockstep, e usa envelope `metadata` em vez de `meta`)
281
+ 2. `Dockerfile:589` label `org.opencontainers.image.version="6.0.0"` e título
282
+ "e2ugh v6" (esperado 1.2.12)
283
+ 3. `docker-compose.yml` image `e2ugh/engine:6.0.0` (linhas 100/273/320),
284
+ `com.e2ugh.version: "6.0.0"` (:172) e cinco títulos "e2ugh v6 (...)"
285
+ 4. `docker.config:621/633` labels OCI saddle **6.0.0** dentro do doc v9
286
+ 5. `engineversions` (index.ts) não tem as chaves **npm 12.0.2** e
287
+ **python 3.14.7** que o readme documenta no ledger
288
+ 6. readme principal alega **148 testes** (linhas 278, 343 e linha 46 da
289
+ tabela) — real: 153
290
+ 7. `docs/architecture.md` inventário desatualizado: compute.ts 2992→3141,
291
+ sandbox.js 1433→1786, server.js 640→1942, index.html 646→343,
292
+ web readme 120→311, tests 3.674→4.311, total "62.200 linhas / 65
293
+ arquivos"→71.399/82
294
+ 8. readme principal, tabela de arquivos: faltam as linhas de `media.ts` e
295
+ `.github/workflows/pages.yml` (the merged web pipeline); a linha 47 cita `web/Dockerfile` que
296
+ **não existe em disco**
297
+ 9. `web/Dockerfile` também é listado na tabela files deste readme (e no
298
+ architecture.md) — arquivo ausente; a tabela não cobre db.js/auth.js/
299
+ index.js/login.js/register.js/dashboard.js/drizzle.config.ts/init.sql/
300
+ schema.prisma/mime.types
301
+ 10. `/api/v1/mesh/ping` consumido pelo dashboard.js (com fallback) e citado
302
+ aqui, mas não implementado no server.js
303
+ 11. `GET /api/v1/sandboxes` (shelf) e `POST /api/v1/sandboxes/:id/resume`
304
+ implementados mas ausentes da api table e do banner do server.js; o
305
+ worklog v7-FRONT acima ainda diz "not live yet" (stale)
306
+ 12. pages.yml: o pipeline web mesclado (validação, testes, bundle estático e Pages) documenta
307
+ cinco actions docker/* — o job não existe (jobs reais: validate, test,
308
+ staticbundle, release); readme principal :282 repete a alegação
309
+ 13. comando `streaming` implementado no dispatcher mas ausente do array
310
+ `commands`, do help e das manualpages (`man streaming` falha)
311
+ 14. `ci.yml:28` trigger `branches: ain]` corrompido (deveria ser main) — o
312
+ yaml valida como escalar, então o push CI nunca dispara no branch certo
313
+ 15. package.json `exports` expõe cinco subpaths `./web/*` mas `files` não
314
+ embarca web/ — exports quebrados no tarball npm publicado
315
+
316
+ sincronizado e confirmado OK: as versões 1.2.12 nos demais dez configs +
317
+ package.json + server.js + sandbox.js + ambos readmes; as 17 chaves de
318
+ `engineversions` batem com o ledger do readme e com os ARGs do Dockerfile;
319
+ os 8 cpus e 7 gpus de cpudata/gpudata batem com processors.json/gpus.json
320
+ (cores/threads/vram/pci id); os 22 pins de actions do package.json batem
321
+ com os `uses:` reais dos cinco workflows; todos os alvos de exports/files
322
+ existem no disco; todos os COPYs do Dockerfile apontam para arquivos
323
+ existentes; bibliografia = 145 entradas reais; SADDLE_MAX_SANDBOXES
324
+ documentado (server.js:516 + fim deste readme).
325
+
326
+ ## api surface additions
327
+
328
+ - `GET /api/v1/sandboxes` - the user shelf: every sandbox row of the account (live and expired) with files/bytes/resumable
329
+ - `POST /api/v1/sandboxes/:id/resume` - take the container back: rebuilds the engine from the stored spec, rebinds the persistent workspace, renews the ttl
330
+ - `streaming` terminal command + `planmodelstreaming` (npm api) - the streaming memory plan: any workload size inside a small hot window
331
+ - sandbox creation is uncapped by default (`SADDLE_MAX_SANDBOXES=0`)
332
+
333
+ ## bottleneck analysis: where each layer really lives
334
+
335
+ The project rule is absolute: no physical hardware is touched, probed or
336
+ required anywhere. every layer below is software; the table states, per
337
+ layer, where the bytes actually live and what the real ceiling is - so the
338
+ "sensation" of an auto-contained vm with unlimited resources maps to
339
+ engineering truth, not marketing.
340
+
341
+ | layer | where data lives | reported identity | real ceiling | verdict |
342
+ |---|---|---|---|---|
343
+ | browser terminal (clones) | tab memory (ram of the visitor device, sandboxed by the browser itself) | EPYC 9965, 1 TiB, B200 | tab memory budget of the browser (~2-4 GiB typical); zero disk writes | no physical server touched; ceiling is the visitor browser, not any host |
344
+ | sandbox id workspace | `sandboxfiles` table inside the container sqlite (`/data/saddle.db`), quota 16 MiB per id | `df -h` shows the quota as a filesystem | the container volume size; survives process restart, dies with `docker rm` unless the volume persists | auto-contained: the id, the files and the quota travel with the container |
345
+ | container memory plan | `/etc/virtual/meminfo` snapshot (1 TiB) + LD_PRELOAD overlay | `free -h` reports 1 TiB | host ram + swap with `--memory-swap=-1`; the kernel OOM killer is the only real wall | unlimited is virtual identity; physical OOM never happens in the browser path because nothing heavy runs there |
346
+ | vCPU / threads | cpuinfo spoof (192c/384t) + llvmpipe `LP_NUM_THREADS=0` | `lscpu` reports 192c/384t | host cores; llvmpipe caps at 32 threads (MR 31551) | virtual topology is free; compute-bound work is bounded by host cores |
347
+ | vGPU | software adapters (llvmpipe/lavapipe/rusticl + smi tables) | `nvidia-smi` lists 8x B200 | cpu rasterization throughput; no cuda kernels run | identity is unlimited; throughput is cpu-bound by design |
348
+ | mesh/auth state | sqlite of the main container (devthink.pro) | - | single main node db; clones forward | the main db is the management plane, sandboxes stay in their own container |
349
+
350
+ Three honest bottlenecks worth knowing: (1) the browser tab memory bounds
351
+ the clone terminal experience - by design, since the whole point is running
352
+ the container in the visitor browser without any server round trip;
353
+ (2) llvmpipe caps its own thread pool at 32 regardless of the spoofed
354
+ topology, so rendering throughput follows that cap; (3) the main db grows
355
+ with users and sandbox rows - the quota (16 MiB per sandbox id) and the
356
+ sweep jobs bound it, and the db file is the single artifact to back up.
357
+ None of these touch physical hardware of any visitor: the heaviest object
358
+ that ever reaches a clone visitor is static javascript.
359
+
360
+ ## the unlimited path: how "any size" actually runs
361
+
362
+ The project rejects hardware limits by design; the two techniques that
363
+ make unbounded workloads real in software, both implemented:
364
+
365
+ 1. **streaming memory** (`compute.ts planmodelstreaming`, terminal command
366
+ `streaming`): any workload decomposes into layers that load on demand
367
+ (mmap + page cache) and evict after the last consumer, so a 1.5 tb
368
+ model runs on a 4 gb window - proven: 3072 layers, 384 batches, peak
369
+ 4.0 GiB resident. The workload size is unbounded; only the window is
370
+ fixed. This is the exact technique production inference engines use
371
+ for models larger than ram.
372
+ 2. **federation of free nodes** (`compute.ts planfederatedquota`, the mesh
373
+ in `mesh.js`): every clone/main node contributes its window to the
374
+ pool; quotas sum across nodes, so capacity grows with each free host
375
+ that joins (github runners, free vps tiers, contributor machines) -
376
+ no hardware purchase anywhere.
377
+
378
+ Combined: the identity layer reports unlimited (18 tb, 384 threads), the
379
+ streaming layer makes any workload size executable inside a small window,
380
+ and federation multiplies the window across free hosts. That is the
381
+ no-limits architecture; the sandbox shelf itself is uncapped by default
382
+ (SADDLE_MAX_SANDBOXES=0).
@@ -0,0 +1,25 @@
1
+ {
2
+ "include": ["**/*.ts", "**/*.tsx"],
3
+ "exclude": ["node_modules", "build", "dist", "**/*.test.ts"],
4
+ "compilerOptions": {
5
+ "incremental": true,
6
+ "tsBuildInfoFile": "./node_modules/typescript/tsbuildinfo",
7
+ "noEmit": true,
8
+ "target": "ESNext",
9
+ "module": "ESNext",
10
+ "strict": true,
11
+ "lib": ["esnext", "dom", "dom.iterable"],
12
+ "jsx": "preserve",
13
+ "esModuleInterop": true,
14
+ "skipLibCheck": true,
15
+ "allowImportingTsExtensions": true,
16
+ "moduleResolution": "bundler",
17
+ "forceConsistentCasingInFileNames": true,
18
+ "resolveJsonModule": true,
19
+ "types": ["node", "vite/client"],
20
+ "paths": {
21
+ "@/*": ["./*"],
22
+ "@saddle/isolation": ["../isolation.ts"]
23
+ }
24
+ }
25
+ }
@@ -1,17 +0,0 @@
1
- export declare function forgeadapter(options?: {}): {
2
- kind: any;
3
- health(path?: string): Promise<{
4
- ok: any;
5
- status: any;
6
- }>;
7
- dispatch(spec: any): Promise<{
8
- accepted: any;
9
- status: any;
10
- body: any;
11
- }>;
12
- upload(spec: any): Promise<{
13
- accepted: any;
14
- status: any;
15
- }>;
16
- };
17
- //# sourceMappingURL=forge.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"forge.d.ts","sourceRoot":"","sources":["../../adapters/forge.ts"],"names":[],"mappings":"AAKA,wBAAgB,YAAY,CAAC,OAAO,KAAK;;;;;;;;;;;;;;;EAUxC"}
@@ -1,19 +0,0 @@
1
- /**
2
- * forge adapter defines the common dispatch and artifact surface for compatible forges.
3
- */
4
- import { transport } from "./transport.js";
5
- export function forgeadapter(options = {}) {
6
- if (!options.baseurl || typeof options.token !== "function")
7
- throw new TypeError("forge adapter requires baseurl and token function");
8
- const client = transport({ fetcher: options.fetcher, attempts: options.attempts, timeout: options.timeout });
9
- async function call(path, init = {}) { const token = await options.token(); return client.request(new URL(path, options.baseurl), { ...init, headers: { authorization: `Bearer ${token}`, accept: "application/json", ...(init.headers ?? {}) } }); }
10
- return {
11
- kind: options.kind ?? "forge",
12
- async health(path = "/") { const response = await call(path); return { ok: response.ok, status: response.status }; },
13
- async dispatch(spec) { if (!spec?.path || !spec.ref)
14
- throw new TypeError("forge dispatch requires path and ref"); const response = await call(spec.path, { method: "POST", headers: { "content-type": "application/json" }, body: JSON.stringify({ ref: spec.ref, inputs: spec.inputs ?? {} }) }); return { accepted: response.ok, status: response.status, body: response.json ? await response.json() : undefined }; },
15
- async upload(spec) { if (!spec?.path || !spec.data)
16
- throw new TypeError("forge upload requires path and data"); const response = await call(spec.path, { method: "PUT", headers: { "content-type": spec.contenttype ?? "application/octet-stream" }, body: spec.data }); return { accepted: response.ok, status: response.status }; }
17
- };
18
- }
19
- //# sourceMappingURL=forge.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"forge.js","sourceRoot":"","sources":["../../adapters/forge.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C,MAAM,UAAU,YAAY,CAAC,OAAO,GAAG,EAAE;IACvC,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,OAAO,OAAO,CAAC,KAAK,KAAK,UAAU;QAAE,MAAM,IAAI,SAAS,CAAC,mDAAmD,CAAC,CAAC;IACtI,MAAM,MAAM,GAAG,SAAS,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;IAC7G,KAAK,UAAU,IAAI,CAAC,IAAI,EAAE,IAAI,GAAG,EAAE,IAAI,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,EAAE,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,EAAE,aAAa,EAAE,UAAU,KAAK,EAAE,EAAE,MAAM,EAAE,kBAAkB,EAAE,GAAG,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;IACrP,OAAO;QACL,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,OAAO;QAC7B,KAAK,CAAC,MAAM,CAAC,IAAI,GAAG,GAAG,IAAI,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,EAAE,EAAE,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QACpH,KAAK,CAAC,QAAQ,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG;YAAE,MAAM,IAAI,SAAS,CAAC,sCAAsC,CAAC,CAAC,CAAC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;QACxZ,KAAK,CAAC,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,SAAS,CAAC,qCAAqC,CAAC,CAAC,CAAC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,cAAc,EAAE,IAAI,CAAC,WAAW,IAAI,0BAA0B,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;KACtU,CAAC;AACJ,CAAC"}
@@ -1,49 +0,0 @@
1
- export declare function forgejoadapter(options?: {}): {
2
- kind: any;
3
- health(path?: string): Promise<{
4
- ok: any;
5
- status: any;
6
- }>;
7
- dispatch(spec: any): Promise<{
8
- accepted: any;
9
- status: any;
10
- body: any;
11
- }>;
12
- upload(spec: any): Promise<{
13
- accepted: any;
14
- status: any;
15
- }>;
16
- };
17
- export declare function giteaadapter(options?: {}): {
18
- kind: any;
19
- health(path?: string): Promise<{
20
- ok: any;
21
- status: any;
22
- }>;
23
- dispatch(spec: any): Promise<{
24
- accepted: any;
25
- status: any;
26
- body: any;
27
- }>;
28
- upload(spec: any): Promise<{
29
- accepted: any;
30
- status: any;
31
- }>;
32
- };
33
- export declare function codebergadapter(options?: {}): {
34
- kind: any;
35
- health(path?: string): Promise<{
36
- ok: any;
37
- status: any;
38
- }>;
39
- dispatch(spec: any): Promise<{
40
- accepted: any;
41
- status: any;
42
- body: any;
43
- }>;
44
- upload(spec: any): Promise<{
45
- accepted: any;
46
- status: any;
47
- }>;
48
- };
49
- //# sourceMappingURL=forgejo.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"forgejo.d.ts","sourceRoot":"","sources":["../../adapters/forgejo.ts"],"names":[],"mappings":"AAKA,wBAAgB,cAAc,CAAC,OAAO,KAAK;;;;;;;;;;;;;;;EAA2D;AACtG,wBAAgB,YAAY,CAAC,OAAO,KAAK;;;;;;;;;;;;;;;EAAyD;AAClG,wBAAgB,eAAe,CAAC,OAAO,KAAK;;;;;;;;;;;;;;;EAA4D"}
@@ -1,8 +0,0 @@
1
- /**
2
- * forgejo and gitea can reuse the open forge contract with a caller supplied base url.
3
- */
4
- import { forgeadapter } from "./forge.js";
5
- export function forgejoadapter(options = {}) { return forgeadapter({ ...options, kind: "forgejo" }); }
6
- export function giteaadapter(options = {}) { return forgeadapter({ ...options, kind: "gitea" }); }
7
- export function codebergadapter(options = {}) { return forgeadapter({ ...options, kind: "codeberg" }); }
8
- //# sourceMappingURL=forgejo.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"forgejo.js","sourceRoot":"","sources":["../../adapters/forgejo.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE1C,MAAM,UAAU,cAAc,CAAC,OAAO,GAAG,EAAE,IAAI,OAAO,YAAY,CAAC,EAAE,GAAG,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC;AACtG,MAAM,UAAU,YAAY,CAAC,OAAO,GAAG,EAAE,IAAI,OAAO,YAAY,CAAC,EAAE,GAAG,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;AAClG,MAAM,UAAU,eAAe,CAAC,OAAO,GAAG,EAAE,IAAI,OAAO,YAAY,CAAC,EAAE,GAAG,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC"}
@@ -1,12 +0,0 @@
1
- export declare function githubadapter(options?: {}): {
2
- health(): Promise<{
3
- ok: any;
4
- status: any;
5
- }>;
6
- dispatch(owner: any, repository: any, workflow: any, input?: {}): Promise<{
7
- accepted: boolean;
8
- status: any;
9
- }>;
10
- run(owner: any, repository: any, runid: any): Promise<any>;
11
- };
12
- //# sourceMappingURL=github.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"github.d.ts","sourceRoot":"","sources":["../../adapters/github.ts"],"names":[],"mappings":"AAKA,wBAAgB,aAAa,CAAC,OAAO,KAAK;;;;;;;;;;EAazC"}
@@ -1,20 +0,0 @@
1
- /**
2
- * github adapter uses caller supplied credentials and base url configuration.
3
- */
4
- import { transport } from "./transport.js";
5
- export function githubadapter(options = {}) {
6
- if (!options.baseurl || typeof options.token !== "function")
7
- throw new TypeError("github adapter requires baseurl and token function");
8
- const client = transport({ fetcher: options.fetcher, attempts: options.attempts, timeout: options.timeout });
9
- async function call(path, init = {}) {
10
- const token = await options.token();
11
- const headers = { accept: "application/vnd.github+json", authorization: `Bearer ${token}`, "x-github-api-version": options.apiversion ?? "2022-11-28", ...(init.headers ?? {}) };
12
- return client.request(new URL(path, options.baseurl), { ...init, headers });
13
- }
14
- return {
15
- async health() { const response = await call("/rate_limit"); return { ok: response.ok, status: response.status }; },
16
- async dispatch(owner, repository, workflow, input = {}) { const response = await call(`/repos/${owner}/${repository}/actions/workflows/${workflow}/dispatches`, { method: "POST", headers: { "content-type": "application/json" }, body: JSON.stringify({ ref: input.ref ?? "main", inputs: input.inputs ?? {} }) }); return { accepted: response.status === 204, status: response.status }; },
17
- async run(owner, repository, runid) { const response = await call(`/repos/${owner}/${repository}/actions/runs/${runid}`); return response.json(); }
18
- };
19
- }
20
- //# sourceMappingURL=github.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"github.js","sourceRoot":"","sources":["../../adapters/github.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C,MAAM,UAAU,aAAa,CAAC,OAAO,GAAG,EAAE;IACxC,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,OAAO,OAAO,CAAC,KAAK,KAAK,UAAU;QAAE,MAAM,IAAI,SAAS,CAAC,oDAAoD,CAAC,CAAC;IACvI,MAAM,MAAM,GAAG,SAAS,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;IAC7G,KAAK,UAAU,IAAI,CAAC,IAAI,EAAE,IAAI,GAAG,EAAE;QACjC,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;QACpC,MAAM,OAAO,GAAG,EAAE,MAAM,EAAE,6BAA6B,EAAE,aAAa,EAAE,UAAU,KAAK,EAAE,EAAE,sBAAsB,EAAE,OAAO,CAAC,UAAU,IAAI,YAAY,EAAE,GAAG,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,EAAE,CAAC;QACjL,OAAO,MAAM,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,EAAE,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;IAC9E,CAAC;IACD,OAAO;QACL,KAAK,CAAC,MAAM,KAAK,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,EAAE,EAAE,EAAE,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QACnH,KAAK,CAAC,QAAQ,CAAC,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,KAAK,GAAG,EAAE,IAAI,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,UAAU,KAAK,IAAI,UAAU,sBAAsB,QAAQ,aAAa,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,IAAI,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QAC9X,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,UAAU,EAAE,KAAK,IAAI,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,UAAU,KAAK,IAAI,UAAU,iBAAiB,KAAK,EAAE,CAAC,CAAC,CAAC,OAAO,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;KACpJ,CAAC;AACJ,CAAC"}
@@ -1,17 +0,0 @@
1
- export declare function gitlabadapter(options?: {}): {
2
- kind: any;
3
- health(path?: string): Promise<{
4
- ok: any;
5
- status: any;
6
- }>;
7
- upload(spec: any): Promise<{
8
- accepted: any;
9
- status: any;
10
- }>;
11
- dispatch(spec: any): Promise<{
12
- accepted: any;
13
- status: any;
14
- body: any;
15
- }>;
16
- };
17
- //# sourceMappingURL=gitlab.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"gitlab.d.ts","sourceRoot":"","sources":["../../adapters/gitlab.ts"],"names":[],"mappings":"AAKA,wBAAgB,aAAa,CAAC,OAAO,KAAK;;;;;;;;;;;;;;;EAIzC"}
@@ -1,10 +0,0 @@
1
- /**
2
- * gitlab adapter keeps project addressing and token ownership outside the package.
3
- */
4
- import { forgeadapter } from "./forge.js";
5
- export function gitlabadapter(options = {}) {
6
- const project = encodeURIComponent(options.project ?? "");
7
- const base = forgeadapter({ ...options, kind: "gitlab" });
8
- return { ...base, async dispatch(spec) { return base.dispatch({ ...spec, path: spec.path ?? `/api/v4/projects/${project}/pipeline` }); } };
9
- }
10
- //# sourceMappingURL=gitlab.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"gitlab.js","sourceRoot":"","sources":["../../adapters/gitlab.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE1C,MAAM,UAAU,aAAa,CAAC,OAAO,GAAG,EAAE;IACxC,MAAM,OAAO,GAAG,kBAAkB,CAAC,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;IAC1D,MAAM,IAAI,GAAG,YAAY,CAAC,EAAE,GAAG,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;IAC1D,OAAO,EAAE,GAAG,IAAI,EAAE,KAAK,CAAC,QAAQ,CAAC,IAAI,IAAI,OAAO,IAAI,CAAC,QAAQ,CAAC,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,oBAAoB,OAAO,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AAC7I,CAAC"}
@@ -1,17 +0,0 @@
1
- export declare function huggingfaceadapter(options?: {}): {
2
- kind: any;
3
- health(path?: string): Promise<{
4
- ok: any;
5
- status: any;
6
- }>;
7
- dispatch(spec: any): Promise<{
8
- accepted: any;
9
- status: any;
10
- body: any;
11
- }>;
12
- upload(spec: any): Promise<{
13
- accepted: any;
14
- status: any;
15
- }>;
16
- };
17
- //# sourceMappingURL=huggingface.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"huggingface.d.ts","sourceRoot":"","sources":["../../adapters/huggingface.ts"],"names":[],"mappings":"AAKA,wBAAgB,kBAAkB,CAAC,OAAO,KAAK;;;;;;;;;;;;;;;EAA+D"}