@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
@@ -1,1280 +0,0 @@
1
- # assistant
2
-
3
- [Thinking] The user wants me to continue researching and provide more detailed information about their platform concept. They're asking about:
4
-
5
- Using storage as RAM (virtual memory bridge)
6
- Libraries that convert storage to memory
7
- Combining projects, libraries, pipelines, repos together
8
- Creating a unified platform with all these components
9
- Both proprietary libraries and third-party/external solutions
10
- Publishing as npm package and open source repo
11
-
12
- Let me search for more specific information about these topics.
13
-
14
- [Thinking] Now let me search for more specific information about ModelScope and other platforms, plus more about virtual memory bridges and storage-to-RAM libraries.
15
-
16
- [Thinking] Now I have comprehensive information. Let me compile this into a detailed plan covering all the user's requirements. The user wants:
17
-
18
- A platform with container sandboxes
19
- Using free infrastructure from GitHub, GitLab, Forgejo, Gitea, Codeberg
20
- Also HuggingFace, Kaggle, ModelScope
21
- Memory conversion (storage → RAM)
22
- Libraries like Prisma, Drizzle, MySQL2
23
- Open source projects
24
- Publishing as npm package and open source repo
25
-
26
- Let me create a comprehensive plan.
27
-
28
- [Thinking] Now let me create the comprehensive plan. I need to be very thorough and detailed.
29
-
30
- [Thinking] I've provided a comprehensive plan. Let me now ask the user if they want me to implement any specific part.
31
-
32
- PLANO COMPLETO: Plataforma Sandbox com Memória Virtual Contínua
33
-
34
- PARTE 1: MAPA DE INFRAESTRUTURA GRATUITA
35
- 1.1 Repositórios + CI/CD (RAM + CPU)
36
-
37
-
38
-
39
- Plataforma
40
- RAM Gratuita
41
- CPU
42
- Storage
43
- GPU
44
- Minutos/mês
45
-
46
-
47
-
48
- GitHub Actions (público)
49
- 16 GB
50
- 4 vCPU
51
- 14 GB SSD
52
- Não
53
- Ilimitado
54
-
55
-
56
- GitHub Actions (privado)
57
- 16 GB
58
- 4 vCPU
59
- 14 GB SSD
60
- Não
61
- 2.000 min
62
-
63
-
64
- GitLab CI Free
65
- 8 GB
66
- 2 vCPU
67
- 30 GB
68
- Não
69
- 400 min
70
-
71
-
72
- Codeberg (Forgejo)
73
- 8 GB
74
- 4 vCPU
75
- -
76
- Não
77
- -
78
-
79
-
80
- Forgejo self-hosted
81
- Ilimitado
82
- Ilimitado
83
- Ilimitado
84
- Não
85
- Ilimitado
86
-
87
-
88
- 1.2 Plataformas de GPU Gratuita
89
-
90
-
91
-
92
- Plataforma
93
- RAM
94
- GPU
95
- GPU VRAM
96
- Disk
97
- Limite
98
-
99
-
100
-
101
- HuggingFace Spaces (free)
102
- 16 GB
103
- Não
104
- -
105
- 50 GB
106
- Suspensão após 2 dias inativo
107
-
108
-
109
- HuggingFace Spaces (T4 small)
110
- 15 GB
111
- Nvidia T4
112
- 16 GB
113
- 50 GB
114
- $0.40/hora
115
-
116
-
117
- Kaggle Notebooks
118
- 29 GB
119
- T4 x2 ou P100
120
- 16 GB
121
- 20 GB
122
- 30h/semana GPU
123
-
124
-
125
- ModelScope Studios
126
- Variável
127
- Variável
128
- Variável
129
- Ilimitado
130
- Free tier generoso
131
-
132
-
133
- 1.3 Bancos de Dados em Memória
134
-
135
-
136
-
137
- Tecnologia
138
- Tipo
139
- RAM Usage
140
- Uso
141
-
142
-
143
-
144
- SQLite in-memory
145
- Banco relacional
146
- Variável
147
- Sandboxes efêmeros
148
-
149
-
150
- Redis
151
- KV store
152
- Variável
153
- Cache + sessões
154
-
155
-
156
- Drizzle ORM + SQLite
157
- ORM TypeScript
158
- Zero-copy
159
- Desenvolvimento local
160
-
161
-
162
- Prisma + SQLite
163
- ORM TypeScript
164
- Variável
165
- Migrações + queries
166
-
167
-
168
- MySQL2 + memory
169
- Driver MySQL
170
- Variável
171
- Compatibilidade
172
-
173
-
174
-
175
- PARTE 2: BIBLIOTECAS DE MEMÓRIA VIRTUAL
176
- 2.1 Conversão Storage → RAM
177
-
178
-
179
-
180
- Projeto
181
- Linguagem
182
- O que faz
183
- npm/pip
184
-
185
-
186
-
187
- memfs
188
- Node.js
189
- Filesystem em RAM com API fs
190
- npm i memfs
191
-
192
-
193
- chuk-virtual-fs
194
- Python
195
- Virtual FS multi-backend (Memory, SQLite, S3, E2B)
196
- pip install chuk-virtual-fs
197
-
198
-
199
- mirage
200
- Python/Node
201
- Virtual FS unificado (50+ backends: RAM, Redis, S3, GDrive)
202
- pip install mirage-ai
203
-
204
-
205
- MAVFS
206
- Python
207
- /vram + /vdisk filesystem virtual
208
- GitHub repo
209
-
210
-
211
- ems
212
- Node.js/Python
213
- Memória compartilhada persistente cross-process
214
- npm i ems
215
-
216
-
217
- node-shared-mem
218
- Node.js
219
- Shared memory cross-process via N-API
220
- npm i node-shared-mem
221
-
222
-
223
- 2.2 Memória para AI Agents
224
-
225
-
226
-
227
- Projeto
228
- Linguagem
229
- Backend
230
- npm/pip
231
-
232
-
233
-
234
- @memos/sdk
235
- TypeScript
236
- SQLite + Graph memory
237
- npm i @memos/sdk
238
-
239
-
240
- @memstack/core
241
- TypeScript
242
- 21 storage adapters
243
- npm i @memstack/core
244
-
245
-
246
- memory-kernel
247
- TypeScript
248
- SQLite + markdown files
249
- npm i memory-kernel
250
-
251
-
252
- cavemem
253
- TypeScript
254
- SQLite + FTS5 + vectors
255
- npm i cavemem
256
-
257
-
258
- crossagentmemory
259
- Python
260
- SQLite/Postgres/Redis/Chroma
261
- pip install crossagentmemory
262
-
263
-
264
- pmb-ai
265
- Python
266
- SQLite + LanceDB vectors
267
- pip install pmb-ai
268
-
269
-
270
- 2.3 Bridges Node.js ↔ Python
271
-
272
-
273
-
274
- Projeto
275
- npm/pip
276
- O que faz
277
-
278
-
279
-
280
- pythonia
281
- npm i pythonia
282
- Chama Python de Node.js
283
-
284
-
285
- pymport
286
- npm i pymport
287
- Bibliotecas Python nativas em Node
288
-
289
-
290
- node-calls-python
291
- npm i node-calls-python
292
- Python in-process via N-API
293
-
294
-
295
- nodepyx
296
- npm i nodepyx
297
- CPython embutido no Node.js
298
-
299
-
300
-
301
- PARTE 3: PROJETOS DE SANDBOX/microVM
302
- 3.1 Sandboxes Leves (Containers)
303
-
304
-
305
-
306
- Projeto
307
- Linguagem
308
- Isolamento
309
- Velocidade
310
-
311
-
312
-
313
- kern
314
- Rust
315
- Namespaces + cgroups (rootless)
316
- ~1.9ms cold start
317
-
318
-
319
- Docker
320
- Go
321
- Namespaces + cgroups
322
- ~308ms
323
-
324
-
325
- Podman
326
- Go
327
- Rootless containers
328
- ~300ms
329
-
330
-
331
- 3.2 Sandboxes com microVMs (mais isolamento)
332
-
333
-
334
-
335
- Projeto
336
- Linguagem
337
- Isolamento
338
- Velocidade
339
-
340
-
341
-
342
- quicksand
343
- Python
344
- QEMU VMs
345
- ~100ms restore
346
-
347
-
348
- exec-sandbox
349
- Python/Rust
350
- QEMU microVMs
351
- ~12ms L1
352
-
353
-
354
- mitos
355
- Go
356
- Firecracker
357
- ~27ms warm-claim
358
-
359
-
360
- rust-nano-vm
361
- Rust
362
- KVM
363
- ~12ms cold start
364
-
365
-
366
- crucible
367
- Go
368
- Firecracker
369
- ~125ms
370
-
371
-
372
- boxlite
373
- Python/Node
374
- microVM embutível
375
- Rápido
376
-
377
-
378
- 3.3 Sandboxes para GitHub Actions
379
-
380
-
381
-
382
- Projeto
383
- Linguagem
384
- Backend
385
-
386
-
387
-
388
- outrunner
389
- Go
390
- Docker/libvirt/Tart
391
-
392
-
393
- ephemerd
394
- Go
395
- containerd embutido
396
-
397
-
398
- ez-gh-actions
399
- Rust
400
- Docker+sysbox
401
-
402
-
403
- createos-sandbox-ghar
404
- TypeScript
405
- Cloudflare Workers + KVM
406
-
407
-
408
-
409
- PARTE 4: ARQUITETURA DA PLATAFORMA
410
- ┌─────────────────────────────────────────────────────────────────────┐
411
- │ PLATAFORMA SANDBOX.IO │
412
- │ │
413
- │ ┌─────────────┐ ┌──────────────┐ ┌──────────────┐ │
414
- │ │ API REST │ │ Auth/JWT │ │ Cron/Scheduler│ │
415
- │ │ (Node.js) │ │ (OAuth2) │ │ (Bull Queue) │ │
416
- │ └──────┬──────┘ └──────┬───────┘ └──────┬───────┘ │
417
- │ └────────────────┴─────────────────┘ │
418
- │ │ │
419
- │ ┌───────────────────────┴───────────────────────────────────┐ │
420
- │ │ ORQUESTRADOR CENTRAL │ │
421
- │ │ ┌─────────┐ ┌──────────┐ ┌─────────┐ ┌───────────┐ │ │
422
- │ │ │ GitHub │ │ GitLab │ │ Forgejo │ │ HuggingFace│ │ │
423
- │ │ │ Actions │ │ CI │ │ Actions │ │ Spaces │ │ │
424
- │ │ │ API │ │ API │ │ API │ │ API │ │ │
425
- │ │ └────┬────┘ └────┬─────┘ └────┬────┘ └─────┬─────┘ │ │
426
- │ └───────┼────────────┼─────────────┼──────────────┼────────┘ │
427
- │ │ │ │ │ │
428
- │ ┌───────┴────────────┴─────────────┴──────────────┴────────┐ │
429
- │ │ MEMÓRIA VIRTUAL CONTÍNUA │ │
430
- │ │ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │ │
431
- │ │ │ zram │ │ tmpfs │ │ overlay │ │ SQLite │ │ │
432
- │ │ │ swap │ │ /tmp │ │ fs CoW │ │ in-memory│ │ │
433
- │ │ │ compr. │ │ em RAM │ │ │ │ │ │ │
434
- │ │ └──────────┘ └──────────┘ └──────────┘ └──────────┘ │ │
435
- │ └───────────────────────────────────────────────────────────┘ │
436
- │ │ │ │ │ │
437
- │ ┌───────┴────────────┴─────────────┴──────────────┴────────┐ │
438
- │ │ SANDBOX RUNNER │ │
439
- │ │ ┌─────────┐ ┌──────────┐ ┌─────────┐ ┌───────────┐ │ │
440
- │ │ │ Docker │ │ kern │ │ QEMU │ │ Firecracker│ │ │
441
- │ │ │ Engine │ │ rootless │ │ microVM │ │ microVM │ │ │
442
- │ │ └─────────┘ └──────────┘ └─────────┘ └───────────┘ │ │
443
- │ └───────────────────────────────────────────────────────────┘ │
444
- └─────────────────────────────────────────────────────────────────────┘
445
-
446
- PARTE 5: SCRIPTS DE IMPLEMENTAÇÃO
447
- 5.1 Setup do Orquestrador (Node.js + Drizzle)
448
- // src/db/schema.ts
449
- import { sqliteTable, text, integer } from 'drizzle-orm/sqlite-core';
450
-
451
- export const sandboxes = sqliteTable('sandboxes', {
452
- id: text('id').primaryKey(),
453
- userId: text('user_id').notNull(),
454
- platform: text('platform').notNull(), // github|gitlab|forgejo|huggingface
455
- status: text('status').notNull(), // creating|running|stopped|destroyed
456
- ramLimit: integer('ram_limit').notNull(), // MB
457
- cpuLimit: integer('cpu_limit').notNull(),
458
- gpuEnabled: integer('gpu_enabled', { mode: 'boolean' }).default(false),
459
- repoUrl: text('repo_url'),
460
- workflowId: text('workflow_id'),
461
- createdAt: text('created_at').notNull(),
462
- expiresAt: text('expires_at'),
463
- });
464
-
465
- export const memorySnapshots = sqliteTable('memory_snapshots', {
466
- id: text('id').primaryKey(),
467
- sandboxId: text('sandbox_id').references(() => sandboxes.id),
468
- type: text('type').notNull(), // zram|tmpfs|overlay|sqlite
469
- sizeBytes: integer('size_bytes').notNull(),
470
- compressedSize: integer('compressed_size'),
471
- data: text('data'), // JSON ou path para arquivo
472
- createdAt: text('created_at').notNull(),
473
- });
474
- // src/db/index.ts
475
- import { drizzle } from 'drizzle-orm/better-sqlite3';
476
- import Database from 'better-sqlite3';
477
- import * as schema from './schema';
478
-
479
- const sqlite = new Database(':memory:'); // SQLite em memória!
480
- export const db = drizzle(sqlite, { schema });
481
-
482
- // Criar tabelas
483
- sqlite.exec(`
484
- CREATE TABLE IF NOT EXISTS sandboxes (
485
- id TEXT PRIMARY KEY,
486
- user_id TEXT NOT NULL,
487
- platform TEXT NOT NULL,
488
- status TEXT NOT NULL,
489
- ram_limit INTEGER NOT NULL,
490
- cpu_limit INTEGER NOT NULL,
491
- gpu_enabled INTEGER DEFAULT 0,
492
- repo_url TEXT,
493
- workflow_id TEXT,
494
- created_at TEXT NOT NULL,
495
- expires_at TEXT
496
- );
497
-
498
- CREATE TABLE IF NOT EXISTS memory_snapshots (
499
- id TEXT PRIMARY KEY,
500
- sandbox_id TEXT REFERENCES sandboxes(id),
501
- type TEXT NOT NULL,
502
- size_bytes INTEGER NOT NULL,
503
- compressed_size INTEGER,
504
- data TEXT,
505
- created_at TEXT NOT NULL
506
- );
507
- `);
508
- 5.2 Orquestrador Multi-Plataforma
509
- // src/orchestrator/index.ts
510
- import { db } from '../db';
511
- import { sandboxes } from '../db/schema';
512
-
513
- interface SandboxConfig {
514
- userId: string;
515
- ramLimit: number; // MB
516
- cpuLimit: number;
517
- gpuEnabled?: boolean;
518
- packages?: string[];
519
- platform?: 'github' | 'gitlab' | 'forgejo' | 'huggingface';
520
- }
521
-
522
- export class SandboxOrchestrator {
523
-
524
- async createSandbox(config: SandboxConfig): Promise<string> {
525
- const sandboxId = `sbx-${Date.now()}-${Math.random().toString(36).slice(2, 8)}`;
526
-
527
- // Auto-escolher plataforma baseado nos requisitos
528
- const platform = config.platform || this.selectPlatform(config);
529
-
530
- // Criar registro no banco
531
- await db.insert(sandboxes).values({
532
- id: sandboxId,
533
- userId: config.userId,
534
- platform,
535
- status: 'creating',
536
- ramLimit: config.ramLimit,
537
- cpuLimit: config.cpuLimit,
538
- gpuEnabled: config.gpuEnabled || false,
539
- createdAt: new Date().toISOString(),
540
- });
541
-
542
- // Disparar workflow na plataforma escolhida
543
- switch (platform) {
544
- case 'github':
545
- await this.createGitHubSandbox(sandboxId, config);
546
- break;
547
- case 'gitlab':
548
- await this.createGitLabSandbox(sandboxId, config);
549
- break;
550
- case 'forgejo':
551
- await this.createForgejoSandbox(sandboxId, config);
552
- break;
553
- case 'huggingface':
554
- await this.createHuggingFaceSandbox(sandboxId, config);
555
- break;
556
- }
557
-
558
- return sandboxId;
559
- }
560
-
561
- private selectPlatform(config: SandboxConfig): string {
562
- // GPU requerida → HuggingFace ou Kaggle
563
- if (config.gpuEnabled) {
564
- return 'huggingface';
565
- }
566
-
567
- // RAM > 16GB → GitLab (até 128GB no premium)
568
- if (config.ramLimit > 16384) {
569
- return 'gitlab';
570
- }
571
-
572
- // Padrão → GitHub (ilimitado para públicos)
573
- return 'github';
574
- }
575
-
576
- private async createGitHubSandbox(id: string, config: SandboxConfig) {
577
- const workflow = this.generateGitHubWorkflow(id, config);
578
-
579
- // Criar repositório
580
- const repoResponse = await fetch(
581
- `https://api.github.com/orgs/${process.env.GITHUB_ORG}/repos`,
582
- {
583
- method: 'POST',
584
- headers: {
585
- 'Authorization': `token ${process.env.GITHUB_TOKEN}`,
586
- 'Content-Type': 'application/json',
587
- },
588
- body: JSON.stringify({
589
- name: `sandbox-${id}`,
590
- private: true,
591
- auto_init: true,
592
- }),
593
- }
594
- );
595
-
596
- const repo = await repoResponse.json();
597
-
598
- // Criar workflow file
599
- await fetch(
600
- `https://api.github.com/repos/${process.env.GITHUB_ORG}/sandbox-${id}/contents/.github/workflows/sandbox.yml`,
601
- {
602
- method: 'PUT',
603
- headers: {
604
- 'Authorization': `token ${process.env.GITHUB_TOKEN}`,
605
- 'Content-Type': 'application/json',
606
- },
607
- body: JSON.stringify({
608
- message: 'Create sandbox workflow',
609
- content: Buffer.from(workflow).toString('base64'),
610
- }),
611
- }
612
- );
613
-
614
- // Disparar workflow
615
- await fetch(
616
- `https://api.github.com/repos/${process.env.GITHUB_ORG}/sandbox-${id}/actions/workflows/sandbox.yml/dispatches`,
617
- {
618
- method: 'POST',
619
- headers: {
620
- 'Authorization': `token ${process.env.GITHUB_TOKEN}`,
621
- 'Content-Type': 'application/json',
622
- },
623
- body: JSON.stringify({
624
- ref: 'main',
625
- inputs: {
626
- ram_limit: `${config.ramLimit}M`,
627
- cpu_limit: config.cpuLimit.toString(),
628
- packages: config.packages?.join(' ') || '',
629
- },
630
- }),
631
- }
632
- );
633
- }
634
-
635
- private generateGitHubWorkflow(id: string, config: SandboxConfig): string {
636
- return `
637
- name: Sandbox ${id}
638
-
639
- on:
640
- workflow_dispatch:
641
- inputs:
642
- ram_limit:
643
- description: 'Memory limit'
644
- default: '${config.ramLimit}M'
645
- cpu_limit:
646
- description: 'CPU limit'
647
- default: '${config.cpuLimit}'
648
- packages:
649
- description: 'Packages to install'
650
- default: '${config.packages?.join(' ') || ''}'
651
-
652
- jobs:
653
- sandbox:
654
- runs-on: ubuntu-latest
655
-
656
- container:
657
- image: ubuntu:22.04
658
- options: >-
659
- --memory \${{ github.event.inputs.ram_limit }}
660
- --cpus \${{ github.event.inputs.cpu_limit }}
661
- --tmpfs /tmp:size=4G
662
- --tmpfs /run:size=2G
663
-
664
- steps:
665
- - name: Setup zram
666
- run: |
667
- modprobe zram
668
- echo lz4 > /sys/block/zram0/comp_algorithm
669
- echo 8G > /sys/block/zram0/disksize
670
- mkswap /dev/zram0
671
- swapon /dev/zram0
672
- echo "=== zram configurado ==="
673
- zramctl
674
-
675
- - name: Setup tmpfs workspace
676
- run: |
677
- mount -t tmpfs -o size=4G tmpfs /workspace
678
- echo "=== tmpfs configurado ==="
679
- df -h /workspace
680
-
681
- - name: Install packages
682
- run: |
683
- apt-get update
684
- apt-get install -y \${{ github.event.inputs.packages }}
685
-
686
- - name: Verify resources
687
- run: |
688
- echo "=== RAM ==="
689
- free -h
690
- echo "=== Disk ==="
691
- df -h
692
- echo "=== CPU ==="
693
- nproc
694
-
695
- - name: Run sandbox
696
- working-directory: /workspace
697
- run: |
698
- echo "Sandbox ${id} is running!"
699
- echo "RAM: \$(free -h | grep Mem | awk '{print \$2}')"
700
- echo "Disk: \$(df -h / | tail -1 | awk '{print \$2}')"
701
- # Manter sandbox vivo por 1 hora
702
- sleep 3600
703
- `;
704
- }
705
-
706
- private async createGitLabSandbox(id: string, config: SandboxConfig) {
707
- const pipeline = this.generateGitLabPipeline(id, config);
708
-
709
- // Criar projeto
710
- const projectResponse = await fetch(
711
- 'https://gitlab.com/api/v4/projects',
712
- {
713
- method: 'POST',
714
- headers: {
715
- 'PRIVATE-TOKEN': process.env.GITLAB_TOKEN!,
716
- 'Content-Type': 'application/json',
717
- },
718
- body: JSON.stringify({
719
- name: `sandbox-${id}`,
720
- visibility: 'private',
721
- }),
722
- }
723
- );
724
-
725
- const project = await projectResponse.json();
726
-
727
- // Criar pipeline
728
- await fetch(
729
- `https://gitlab.com/api/v4/projects/${project.id}/repository/files/.gitlab-ci.yml`,
730
- {
731
- method: 'POST',
732
- headers: {
733
- 'PRIVATE-TOKEN': process.env.GITLAB_TOKEN!,
734
- 'Content-Type': 'application/json',
735
- },
736
- body: JSON.stringify({
737
- branch: 'main',
738
- content: pipeline,
739
- commit_message: 'Create sandbox pipeline',
740
- }),
741
- }
742
- );
743
- }
744
-
745
- private generateGitLabPipeline(id: string, config: SandboxConfig): string {
746
- const tag = config.ramLimit > 8192 ? 'saas-linux-medium-amd64' : 'saas-linux-small-amd64';
747
-
748
- return `
749
- sandbox:
750
- tags:
751
- - ${tag}
752
- image: ubuntu:22.04
753
- variables:
754
- MEMORY_LIMIT: "${config.ramLimit}M"
755
- before_script:
756
- - apt-get update && apt-get install -y zram-tools
757
- - zramctl /dev/zram0 --algorithm lz4 --size 4G --type swap
758
- script:
759
- - free -h
760
- - df -h
761
- - echo "Sandbox ${id} is running!"
762
- - sleep 3600
763
- rules:
764
- - if: $CI_PIPELINE_SOURCE == "web"
765
- - if: $CI_PIPELINE_SOURCE == "api"
766
- `;
767
- }
768
-
769
- private async createForgejoSandbox(id: string, config: SandboxConfig) {
770
- // Forgejo/Gitea Actions - mesmo formato do GitHub
771
- const workflow = this.generateGitHubWorkflow(id, config); // Reutilizar!
772
-
773
- const forgejoUrl = process.env.FORGEJO_URL || 'https://codeberg.org';
774
-
775
- // Criar repositório
776
- await fetch(`${forgejoUrl}/api/v1/user/repos`, {
777
- method: 'POST',
778
- headers: {
779
- 'Authorization': `token ${process.env.FORGEJO_TOKEN}`,
780
- 'Content-Type': 'application/json',
781
- },
782
- body: JSON.stringify({
783
- name: `sandbox-${id}`,
784
- private: true,
785
- auto_init: true,
786
- }),
787
- });
788
-
789
- // Criar workflow
790
- await fetch(
791
- `${forgejoUrl}/api/v1/repos/${process.env.FORGEJO_USER}/sandbox-${id}/contents/.forgejo/workflows/sandbox.yml`,
792
- {
793
- method: 'PUT',
794
- headers: {
795
- 'Authorization': `token ${process.env.FORGEJO_TOKEN}`,
796
- 'Content-Type': 'application/json',
797
- },
798
- body: JSON.stringify({
799
- message: 'Create sandbox workflow',
800
- content: Buffer.from(workflow).toString('base64'),
801
- }),
802
- }
803
- );
804
- }
805
-
806
- private async createHuggingFaceSandbox(id: string, config: SandboxConfig) {
807
- // HuggingFace Spaces - Dockerfile
808
- const dockerfile = this.generateHuggingFaceDockerfile(id, config);
809
-
810
- const hfToken = process.env.HF_TOKEN;
811
-
812
- // Criar Space
813
- await fetch(`https://huggingface.co/api/repos/create`, {
814
- method: 'POST',
815
- headers: {
816
- 'Authorization': `Bearer ${hfToken}`,
817
- 'Content-Type': 'application/json',
818
- },
819
- body: JSON.stringify({
820
- name: `sandbox-${id}`,
821
- type: 'space',
822
- sdk: 'docker',
823
- license: 'mit',
824
- hardware: config.gpuEnabled ? 't4-small' : 'cpu-basic',
825
- }),
826
- });
827
-
828
- // Criar Dockerfile
829
- await fetch(
830
- `https://huggingface.co/api/repos/${process.env.HF_USER}/sandbox-${id}/contents/Dockerfile`,
831
- {
832
- method: 'POST',
833
- headers: {
834
- 'Authorization': `Bearer ${hfToken}`,
835
- 'Content-Type': 'application/json',
836
- },
837
- body: JSON.stringify({
838
- content: Buffer.from(dockerfile).toString('base64'),
839
- message: 'Create sandbox Dockerfile',
840
- }),
841
- }
842
- );
843
- }
844
-
845
- private generateHuggingFaceDockerfile(id: string, config: SandboxConfig): string {
846
- return `
847
- FROM python:3.11-slim
848
-
849
- RUN useradd -m -u 1000 user
850
- WORKDIR /app
851
-
852
- # Instalar dependências
853
- RUN apt-get update && apt-get install -y \\
854
- zram-tools \\
855
- ${config.packages?.join(' ') || ''} \\
856
- && rm -rf /var/lib/apt/lists/*
857
-
858
- # Setup zram
859
- RUN echo "lz4" > /sys/block/zram0/comp_algorithm || true
860
-
861
- # Copiar código
862
- COPY --chown=user . /app
863
-
864
- CMD ["python", "-m", "http.server", "7860"]
865
- `;
866
- }
867
- }
868
- 5.3 Memória Virtual Contínua
869
- // src/memory/virtual-memory.ts
870
- import { fs, Volume } from 'memfs';
871
-
872
- export class VirtualMemory {
873
- private volumes: Map<string, ReturnType<typeof Volume.create>> = new Map();
874
-
875
- constructor() {
876
- // Criar volume em RAM para cada sandbox
877
- this.createVolume('system', 8 * 1024 * 1024 * 1024); // 8 GB
878
- this.createVolume('workspace', 4 * 1024 * 1024 * 1024); // 4 GB
879
- this.createVolume('tmp', 2 * 1024 * 1024 * 1024); // 2 GB
880
- }
881
-
882
- private createVolume(name: string, sizeBytes: number) {
883
- const vol = Volume.create({ size: sizeBytes });
884
- this.volumes.set(name, vol);
885
-
886
- // Montar no filesystem virtual
887
- fs.mountVol(`/${name}`, vol);
888
- }
889
-
890
- // Ler arquivo da memória virtual
891
- async read(path: string): Promise<Buffer> {
892
- return new Promise((resolve, reject) => {
893
- fs.readFile(path, (err, data) => {
894
- if (err) reject(err);
895
- else resolve(data);
896
- });
897
- });
898
- }
899
-
900
- // Escrever arquivo na memória virtual
901
- async write(path: string, data: Buffer): Promise<void> {
902
- return new Promise((resolve, reject) => {
903
- fs.writeFile(path, data, (err) => {
904
- if (err) reject(err);
905
- else resolve();
906
- });
907
- });
908
- }
909
-
910
- // Migrar dados entre volumes (storage → RAM)
911
- async migrate(srcPath: string, dstPath: string): Promise<void> {
912
- const data = await this.read(srcPath);
913
- await this.write(dstPath, data);
914
- }
915
-
916
- // Snapshot do estado atual
917
- async snapshot(): Promise<Map<string, Buffer>> {
918
- const snapshot = new Map<string, Buffer>();
919
-
920
- const readdirRecursive = async (dir: string) => {
921
- const entries = await new Promise<any[]>((resolve, reject) => {
922
- fs.readdir(dir, { withFileTypes: true }, (err, entries) => {
923
- if (err) reject(err);
924
- else resolve(entries);
925
- });
926
- });
927
-
928
- for (const entry of entries) {
929
- const fullPath = `${dir}/${entry.name}`;
930
- if (entry.isDirectory()) {
931
- await readdirRecursive(fullPath);
932
- } else {
933
- const data = await this.read(fullPath);
934
- snapshot.set(fullPath, data);
935
- }
936
- }
937
- };
938
-
939
- await readdirRecursive('/');
940
- return snapshot;
941
- }
942
-
943
- // Restaurar de snapshot
944
- async restore(snapshot: Map<string, Buffer>): Promise<void> {
945
- for (const [path, data] of snapshot) {
946
- const dir = path.substring(0, path.lastIndexOf('/'));
947
- await new Promise<void>((resolve, reject) => {
948
- fs.mkdir(dir, { recursive: true }, (err) => {
949
- if (err) reject(err);
950
- else resolve();
951
- });
952
- });
953
- await this.write(path, data);
954
- }
955
- }
956
- }
957
- 5.4 Bridge de Memória (Storage → RAM)
958
- // src/memory/memory-bridge.ts
959
- export class MemoryBridge {
960
- private zramEnabled = false;
961
- private tmpfsMounts: Map<string, string> = new Map();
962
-
963
- // Configurar zram (converte storage em RAM comprimida)
964
- async setupZram(sizeGB: number = 8): Promise<void> {
965
- const commands = [
966
- 'modprobe zram',
967
- `echo lz4 > /sys/block/zram0/comp_algorithm`,
968
- `echo ${sizeGB}G > /sys/block/zram0/disksize`,
969
- 'mkswap /dev/zram0',
970
- 'swapon /dev/zram0',
971
- ];
972
-
973
- for (const cmd of commands) {
974
- await this.exec(cmd);
975
- }
976
-
977
- this.zramEnabled = true;
978
- }
979
-
980
- // Configurar tmpfs (storage em RAM puro)
981
- async setupTmpfs(mountPoint: string, sizeGB: number = 4): Promise<void> {
982
- await this.exec(`mkdir -p ${mountPoint}`);
983
- await this.exec(`mount -t tmpfs -o size=${sizeGB}G tmpfs ${mountPoint}`);
984
- this.tmpfsMounts.set(mountPoint, `${sizeGB}G`);
985
- }
986
-
987
- // Configurar overlay (CoW em RAM)
988
- async setupOverlay(
989
- lowerDir: string,
990
- upperDir: string,
991
- mergedDir: string
992
- ): Promise<void> {
993
- await this.exec(`mkdir -p ${upperDir} ${mergedDir}`);
994
- await this.exec(
995
- `mount -t overlay overlay ` +
996
- `-o lowerdir=${lowerDir},upperdir=${upperDir},workdir=/tmp/work ` +
997
- mergedDir
998
- );
999
- }
1000
-
1001
- // Bridge: converter arquivo de storage para RAM
1002
- async storageToRam(
1003
- storagePath: string,
1004
- ramPath: string
1005
- ): Promise<{ originalSize: number; compressedSize: number }> {
1006
- const data = await this.readFile(storagePath);
1007
- const originalSize = data.length;
1008
-
1009
- // Comprimir com lz4 antes de escrever na RAM
1010
- const compressed = await this.compressLz4(data);
1011
- const compressedSize = compressed.length;
1012
-
1013
- // Escrever no tmpfs
1014
- await this.writeFile(ramPath, compressed);
1015
-
1016
- return { originalSize, compressedSize };
1017
- }
1018
-
1019
- // Bridge: converter RAM para storage
1020
- async ramToStorage(
1021
- ramPath: string,
1022
- storagePath: string
1023
- ): Promise<void> {
1024
- const compressed = await this.readFile(ramPath);
1025
-
1026
- // Descomprimir
1027
- const data = await this.decompressLz4(compressed);
1028
-
1029
- // Escrever em storage persistente
1030
- await this.writeFile(storagePath, data);
1031
- }
1032
-
1033
- // Obter estatísticas de memória
1034
- async getStats(): Promise<{
1035
- zram: { total: number; used: number; free: number; compressed: number };
1036
- tmpfs: { mount: string; size: string }[];
1037
- totalRam: number;
1038
- usedRam: number;
1039
- }> {
1040
- const meminfo = await this.exec('cat /proc/meminfo');
1041
- const zramctl = this.zramEnabled
1042
- ? await this.exec('zramctl')
1043
- : '';
1044
-
1045
- return {
1046
- zram: this.parseZramStats(zramctl),
1047
- tmpfs: Array.from(this.tmpfsMounts.entries()).map(([mount, size]) => ({
1048
- mount,
1049
- size,
1050
- })),
1051
- totalRam: this.parseMemInfo(meminfo, 'MemTotal'),
1052
- usedRam: this.parseMemInfo(meminfo, 'MemAvailable'),
1053
- };
1054
- }
1055
-
1056
- private async exec(cmd: string): Promise<string> {
1057
- // Implementar execução de comandos
1058
- return '';
1059
- }
1060
-
1061
- private async readFile(path: string): Promise<Buffer> {
1062
- return Buffer.alloc(0);
1063
- }
1064
-
1065
- private async writeFile(path: string, data: Buffer): Promise<void> {}
1066
-
1067
- private async compressLz4(data: Buffer): Promise<Buffer> {
1068
- return data; // Implementar com lz4-native
1069
- }
1070
-
1071
- private async decompressLz4(data: Buffer): Promise<Buffer> {
1072
- return data; // Implementar com lz4-native
1073
- }
1074
-
1075
- private parseZramStats(output: string): any {
1076
- return { total: 0, used: 0, free: 0, compressed: 0 };
1077
- }
1078
-
1079
- private parseMemInfo(output: string, key: string): number {
1080
- const match = output.match(new RegExp(`${key}:\\s+(\\d+)`));
1081
- return match ? parseInt(match[1]) : 0;
1082
- }
1083
- }
1084
-
1085
- PARTE 5: PACKAGEM NPM + REPO ABERTO
1086
- 5.1 Estrutura do Projeto
1087
- sandbox-platform/
1088
- ├── package.json
1089
- ├── tsconfig.json
1090
- ├── src/
1091
- │ ├── index.ts # Entry point
1092
- │ ├── orchestrator/
1093
- │ │ ├── index.ts # Orquestrador principal
1094
- │ │ ├── github.ts # GitHub Actions
1095
- │ │ ├── gitlab.ts # GitLab CI
1096
- │ │ ├── forgejo.ts # Forgejo/Gitea
1097
- │ │ └── huggingface.ts # HuggingFace Spaces
1098
- │ ├── memory/
1099
- │ │ ├── virtual-memory.ts # Memória virtual (memfs)
1100
- │ │ ├── memory-bridge.ts # Bridge storage→RAM
1101
- │ │ ├── zram.ts # zram manager
1102
- │ │ └── tmpfs.ts # tmpfs manager
1103
- │ ├── db/
1104
- │ │ ├── schema.ts # Drizzle schema
1105
- │ │ └── index.ts # Database connection
1106
- │ ├── api/
1107
- │ │ ├── routes.ts # API routes
1108
- │ │ └── middleware.ts # Auth middleware
1109
- │ └── utils/
1110
- │ ├── crypto.ts # Utilitários
1111
- │ └── logger.ts # Logger
1112
- ├── workflows/ # Templates de workflow
1113
- │ ├── github-sandbox.yml
1114
- │ ├── gitlab-sandbox.yml
1115
- │ ├── forgejo-sandbox.yml
1116
- │ └── huggingface-dockerfile
1117
- ├── tests/
1118
- │ ├── orchestrator.test.ts
1119
- │ ├── memory.test.ts
1120
- │ └── api.test.ts
1121
- ├── README.md
1122
- ├── LICENSE
1123
- └── .github/
1124
- └── workflows/
1125
- └── ci.yml # CI do próprio projeto
1126
- 5.2 package.json
1127
- {
1128
- "name": "@sandbox-platform/core",
1129
- "version": "1.0.0",
1130
- "description": "Plataforma de sandbox com memória virtual contínua usando infraestrutura gratuita",
1131
- "main": "dist/index.js",
1132
- "types": "dist/index.d.ts",
1133
- "scripts": {
1134
- "build": "tsc",
1135
- "dev": "tsx watch src/index.ts",
1136
- "test": "vitest",
1137
- "lint": "eslint src/",
1138
- "prepare": "npm run build"
1139
- },
1140
- "dependencies": {
1141
- "drizzle-orm": "^0.30.0",
1142
- "better-sqlite3": "^11.0.0",
1143
- "memfs": "^4.6.0",
1144
- "hono": "^4.0.0",
1145
- "@hono/node-server": "^1.0.0",
1146
- "bullmq": "^5.0.0",
1147
- "ioredis": "^5.0.0",
1148
- "zod": "^3.23.0"
1149
- },
1150
- "devDependencies": {
1151
- "typescript": "^5.4.0",
1152
- "tsx": "^4.0.0",
1153
- "vitest": "^1.0.0",
1154
- "drizzle-kit": "^0.21.0",
1155
- "@types/better-sqlite3": "^7.0.0",
1156
- "@types/node": "^20.0.0"
1157
- },
1158
- "keywords": [
1159
- "sandbox",
1160
- "virtual-memory",
1161
- "github-actions",
1162
- "gitlab-ci",
1163
- "forgejo",
1164
- "huggingface",
1165
- "zram",
1166
- "tmpfs"
1167
- ],
1168
- "license": "MIT",
1169
- "repository": {
1170
- "type": "git",
1171
- "url": "https://github.com/your-org/sandbox-platform"
1172
- }
1173
- }
1174
- 5.3 README.md
1175
- # @sandbox-platform/core
1176
-
1177
- Plataforma de sandbox com memória virtual contínua usando infraestrutura gratuita de repositórios.
1178
-
1179
- ## Funcionalidades
1180
-
1181
- - **Multi-plataforma**: GitHub Actions, GitLab CI, Forgejo/Gitea, HuggingFace Spaces
1182
- - **Memória virtual**: zram, tmpfs, overlayfs para converter storage em RAM
1183
- - **Isolamento**: Docker containers com limits de RAM/CPU
1184
- - **GPU gratuito**: HuggingFace Spaces com T4 GPU
1185
- - **ORM**: Drizzle ORM com SQLite em memória
1186
-
1187
- ## Instalação
1188
-
1189
- ```bash
1190
- npm install @sandbox-platform/core
1191
- Uso Rápido
1192
- import { SandboxOrchestrator } from '@sandbox-platform/core';
1193
-
1194
- const orchestrator = new SandboxOrchestrator();
1195
-
1196
- // Criar sandbox com 8GB RAM
1197
- const sandbox = await orchestrator.createSandbox({
1198
- userId: 'user123',
1199
- ramLimit: 8192, // 8GB em MB
1200
- cpuLimit: 4,
1201
- packages: ['nodejs', 'python3'],
1202
- });
1203
-
1204
- console.log(`Sandbox criada: ${sandbox.id}`);
1205
- Recursos Gratuitos
1206
-
1207
-
1208
-
1209
- Plataforma
1210
- RAM
1211
- CPU
1212
- GPU
1213
-
1214
-
1215
-
1216
- GitHub (público)
1217
- 16 GB
1218
- 4 vCPU
1219
- -
1220
-
1221
-
1222
- GitLab Free
1223
- 8 GB
1224
- 2 vCPU
1225
- -
1226
-
1227
-
1228
- HuggingFace (free)
1229
- 16 GB
1230
- 2 vCPU
1231
- -
1232
-
1233
-
1234
- HuggingFace (T4)
1235
- 15 GB
1236
- 4 vCPU
1237
- 16 GB
1238
-
1239
-
1240
- Kaggle
1241
- 29 GB
1242
- 4 vCPU
1243
- 16 GB
1244
-
1245
-
1246
- Licença
1247
- MIT
1248
-
1249
- ---
1250
-
1251
- RESUMO FINAL
1252
- Duas Frentes Principais:
1253
- FREnte 1: Biblioteca Própria (@sandbox-platform/core)
1254
-
1255
- Orquestrador multi-plataforma (GitHub, GitLab, Forgejo, HuggingFace)
1256
- Memória virtual contínua (memfs + zram + tmpfs)
1257
- Drizzle ORM com SQLite em memória
1258
- Bridge de conversão storage→RAM
1259
-
1260
- Frente 2: Projetos de Terceiros (já prontos)
1261
-
1262
- kern (Rust): sandbox rootless ~1.9ms
1263
- exec-sandbox (Python): QEMU microVMs ~12ms
1264
- mirage (Python/Node): 50+ backends de storage
1265
- @memstack/core (Node): 21 storage adapters
1266
- chuk-virtual-fs (Python): Virtual FS multi-backend
1267
-
1268
- Publicação:
1269
-
1270
- npm: @sandbox-platform/core
1271
- GitHub: Repo público com MIT license
1272
- HuggingFace: Spaces para demo
1273
- PyPI: sandbox-platform (port Python)
1274
-
1275
- Quer que eu implemente alguma parte específica? Posso:
1276
-
1277
- Criar o projeto completo no seu diretório
1278
- Configurar os workflows de CI/CD
1279
- Implementar a memória virtual
1280
- Configurar o Forgejo self-hosted