@wenathlan/saddle 2.0.153 → 2.0.155

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 (307) hide show
  1. package/Dockerfile +139 -55
  2. package/README.md +58 -59
  3. package/browser.ts +482 -0
  4. package/cli.ts +274 -0
  5. package/distribution.ts +731 -0
  6. package/docker.config +29 -8
  7. package/docs/artifactavailability.md +2 -2
  8. package/docs/browser.md +18 -1
  9. package/docs/{containerplatforms.2.1.0.md → containerplatforms210.md} +1 -1
  10. package/docs/{documentmap.1.8.12.md → documentmap1812.md} +1 -1
  11. package/docs/extension.md +13 -2
  12. package/docs/libraryapi.md +1 -1
  13. package/docs/{ninety.modalities.md → ninetymodalities.md} +87 -4
  14. package/docs/{planning.ninety.md → planningninety.md} +6 -6
  15. package/docs/{releasenotes.1.8.13.md → releasenotes1813.md} +2 -2
  16. package/docs/{releasenotes.1.8.14.md → releasenotes1814.md} +1 -1
  17. package/docs/{repo.synthesis.1.8.16.md → reposynthesis1816.md} +1 -1
  18. package/docs/todo.md +2 -2
  19. package/docs/{todo.1.8.15.md → todo1815.md} +1 -1
  20. package/docs/{todo.1.8.16.md → todo1816.md} +5 -5
  21. package/execution.ts +677 -0
  22. package/foundation.ts +314 -0
  23. package/index.ts +35 -27
  24. package/isolation.ts +84 -0
  25. package/modes.ts +170 -0
  26. package/mttg.config +1 -1
  27. package/orchestrator.ts +49 -15
  28. package/package.json +90 -75
  29. package/qemu.config +2 -2
  30. package/sandbox.ts +2094 -0
  31. package/scheduler.ts +1 -1
  32. package/server.ts +52 -0
  33. package/tsconfig.json +11 -12
  34. package/virtual.ts +1105 -0
  35. package/virtualgpu.ts +1 -1
  36. package/virtualization.ts +1 -1
  37. package/workloadlaw.ts +293 -0
  38. package/dist/App.d.ts +0 -5
  39. package/dist/App.js +0 -52
  40. package/dist/Sol/Sol.d.ts +0 -3
  41. package/dist/Sol/Sol.js +0 -46
  42. package/dist/Sol/agentbrowser/agentbrowser.d.ts +0 -9
  43. package/dist/Sol/agentbrowser/agentbrowser.js +0 -121
  44. package/dist/Sol/architecture/architecture.d.ts +0 -9
  45. package/dist/Sol/architecture/architecture.js +0 -93
  46. package/dist/Sol/compute/compute.d.ts +0 -9
  47. package/dist/Sol/compute/compute.js +0 -22
  48. package/dist/Sol/console/console.d.ts +0 -15
  49. package/dist/Sol/console/console.js +0 -292
  50. package/dist/Sol/dashboard/dashboard.d.ts +0 -10
  51. package/dist/Sol/dashboard/dashboard.js +0 -181
  52. package/dist/Sol/docs/docs.d.ts +0 -9
  53. package/dist/Sol/docs/docs.js +0 -28
  54. package/dist/Sol/home/home.d.ts +0 -35
  55. package/dist/Sol/home/home.js +0 -239
  56. package/dist/Sol/integrations/integrations.d.ts +0 -9
  57. package/dist/Sol/integrations/integrations.js +0 -83
  58. package/dist/Sol/intro/intro.d.ts +0 -7
  59. package/dist/Sol/intro/intro.js +0 -102
  60. package/dist/Sol/login/login.d.ts +0 -16
  61. package/dist/Sol/login/login.js +0 -49
  62. package/dist/Sol/notfound/notfound.d.ts +0 -9
  63. package/dist/Sol/notfound/notfound.js +0 -15
  64. package/dist/Sol/onboarding/onboarding.d.ts +0 -25
  65. package/dist/Sol/onboarding/onboarding.js +0 -60
  66. package/dist/Sol/playground/playground.d.ts +0 -9
  67. package/dist/Sol/playground/playground.js +0 -127
  68. package/dist/Sol/register/register.d.ts +0 -16
  69. package/dist/Sol/register/register.js +0 -193
  70. package/dist/Sol/shell/Shell.d.ts +0 -124
  71. package/dist/Sol/shell/Shell.js +0 -335
  72. package/dist/Sol/wingets/ComputeBootladder.d.ts +0 -6
  73. package/dist/Sol/wingets/ComputeBootladder.js +0 -71
  74. package/dist/Sol/wingets/ComputeModalitycatalog.d.ts +0 -7
  75. package/dist/Sol/wingets/ComputeModalitycatalog.js +0 -71
  76. package/dist/Sol/wingets/ConsoleApibadge.d.ts +0 -7
  77. package/dist/Sol/wingets/ConsoleApibadge.js +0 -5
  78. package/dist/Sol/wingets/ConsoleEdgelaw.d.ts +0 -6
  79. package/dist/Sol/wingets/ConsoleEdgelaw.js +0 -36
  80. package/dist/Sol/wingets/ConsoleEventstimeline.d.ts +0 -19
  81. package/dist/Sol/wingets/ConsoleEventstimeline.js +0 -12
  82. package/dist/Sol/wingets/ConsoleSnapshotcontrols.d.ts +0 -8
  83. package/dist/Sol/wingets/ConsoleSnapshotcontrols.js +0 -8
  84. package/dist/Sol/wingets/ConsoleSpecpanel.d.ts +0 -21
  85. package/dist/Sol/wingets/ConsoleSpecpanel.js +0 -75
  86. package/dist/Sol/wingets/ConsoleTerminal.d.ts +0 -22
  87. package/dist/Sol/wingets/ConsoleTerminal.js +0 -77
  88. package/dist/Sol/wingets/DashboardAccountpanel.d.ts +0 -18
  89. package/dist/Sol/wingets/DashboardAccountpanel.js +0 -65
  90. package/dist/Sol/wingets/DashboardAdminpanel.d.ts +0 -6
  91. package/dist/Sol/wingets/DashboardAdminpanel.js +0 -90
  92. package/dist/Sol/wingets/DashboardAuditlog.d.ts +0 -8
  93. package/dist/Sol/wingets/DashboardAuditlog.js +0 -50
  94. package/dist/Sol/wingets/DashboardCreatesandboxform.d.ts +0 -10
  95. package/dist/Sol/wingets/DashboardCreatesandboxform.js +0 -71
  96. package/dist/Sol/wingets/DashboardEventstimeline.d.ts +0 -8
  97. package/dist/Sol/wingets/DashboardEventstimeline.js +0 -83
  98. package/dist/Sol/wingets/DashboardGlobalsandboxestable.d.ts +0 -8
  99. package/dist/Sol/wingets/DashboardGlobalsandboxestable.js +0 -57
  100. package/dist/Sol/wingets/DashboardMeshnodestable.d.ts +0 -8
  101. package/dist/Sol/wingets/DashboardMeshnodestable.js +0 -103
  102. package/dist/Sol/wingets/DashboardSandboxlist.d.ts +0 -10
  103. package/dist/Sol/wingets/DashboardSandboxlist.js +0 -163
  104. package/dist/Sol/wingets/DashboardUserstable.d.ts +0 -8
  105. package/dist/Sol/wingets/DashboardUserstable.js +0 -78
  106. package/dist/Sol/wingets/HomeEntrygate.d.ts +0 -23
  107. package/dist/Sol/wingets/HomeEntrygate.js +0 -73
  108. package/dist/Sol/wingets/HomeMetricstrip.d.ts +0 -9
  109. package/dist/Sol/wingets/HomeMetricstrip.js +0 -4
  110. package/dist/Sol/wingets/HomeRuntimediagram.d.ts +0 -1
  111. package/dist/Sol/wingets/HomeRuntimediagram.js +0 -22
  112. package/dist/Sol/wingets/LoginForm.d.ts +0 -19
  113. package/dist/Sol/wingets/LoginForm.js +0 -141
  114. package/dist/Sol/wingets/RegisterPasswordconfirm.d.ts +0 -13
  115. package/dist/Sol/wingets/RegisterPasswordconfirm.js +0 -16
  116. package/dist/Sol/wingets/RegisterPasswordmeter.d.ts +0 -19
  117. package/dist/Sol/wingets/RegisterPasswordmeter.js +0 -65
  118. package/dist/Sol/wingets/RegisterUsernamerules.d.ts +0 -11
  119. package/dist/Sol/wingets/RegisterUsernamerules.js +0 -16
  120. package/dist/Sol/wingets/index.d.ts +0 -39
  121. package/dist/Sol/wingets/index.js +0 -39
  122. package/dist/alternatives.d.ts +0 -508
  123. package/dist/alternatives.js +0 -950
  124. package/dist/api.d.ts +0 -154
  125. package/dist/api.js +0 -174
  126. package/dist/auth.d.ts +0 -268
  127. package/dist/auth.js +0 -476
  128. package/dist/automation.d.ts +0 -425
  129. package/dist/automation.js +0 -566
  130. package/dist/browser.d.ts +0 -561
  131. package/dist/browser.js +0 -1058
  132. package/dist/capacitor.config.d.ts +0 -45
  133. package/dist/capacitor.config.js +0 -48
  134. package/dist/catalog.d.ts +0 -43
  135. package/dist/catalog.js +0 -44
  136. package/dist/cli.d.ts +0 -16
  137. package/dist/cli.js +0 -168
  138. package/dist/communication.d.ts +0 -181
  139. package/dist/communication.js +0 -376
  140. package/dist/compute.d.ts +0 -1160
  141. package/dist/compute.js +0 -2272
  142. package/dist/dashboardlib.d.ts +0 -58
  143. package/dist/dashboardlib.js +0 -161
  144. package/dist/db.d.ts +0 -569
  145. package/dist/db.js +0 -1080
  146. package/dist/distribution.d.ts +0 -528
  147. package/dist/distribution.js +0 -810
  148. package/dist/drizzle.config.d.ts +0 -20
  149. package/dist/drizzle.config.js +0 -18
  150. package/dist/edgelandes.d.ts +0 -70
  151. package/dist/edgelandes.host.d.ts +0 -26
  152. package/dist/edgelandes.host.js +0 -1089
  153. package/dist/edgelandes.inproc.d.ts +0 -27
  154. package/dist/edgelandes.inproc.js +0 -952
  155. package/dist/edgelandes.js +0 -1133
  156. package/dist/edgelandes.ninety.d.ts +0 -31
  157. package/dist/edgelandes.ninety.js +0 -174
  158. package/dist/edgelandes.virtual.d.ts +0 -25
  159. package/dist/edgelandes.virtual.js +0 -629
  160. package/dist/edgeplane.d.ts +0 -114
  161. package/dist/edgeplane.js +0 -305
  162. package/dist/examplelocaljob.d.ts +0 -1
  163. package/dist/examplelocaljob.js +0 -14
  164. package/dist/execution.d.ts +0 -529
  165. package/dist/execution.js +0 -760
  166. package/dist/family.d.ts +0 -16
  167. package/dist/family.js +0 -42
  168. package/dist/familyurl.d.ts +0 -21
  169. package/dist/familyurl.js +0 -24
  170. package/dist/format.d.ts +0 -18
  171. package/dist/format.js +0 -59
  172. package/dist/foundation.d.ts +0 -172
  173. package/dist/foundation.js +0 -312
  174. package/dist/index.d.ts +0 -735
  175. package/dist/index.js +0 -1020
  176. package/dist/integration.d.ts +0 -235
  177. package/dist/integration.js +0 -228
  178. package/dist/intelligence.d.ts +0 -93
  179. package/dist/intelligence.js +0 -144
  180. package/dist/isolation.d.ts +0 -128
  181. package/dist/isolation.js +0 -95
  182. package/dist/labels.d.ts +0 -665
  183. package/dist/labels.js +0 -751
  184. package/dist/localauth.d.ts +0 -127
  185. package/dist/localauth.js +0 -413
  186. package/dist/media.d.ts +0 -343
  187. package/dist/media.js +0 -985
  188. package/dist/mesh.d.ts +0 -177
  189. package/dist/mesh.js +0 -468
  190. package/dist/modalityregistry.d.ts +0 -109
  191. package/dist/modalityregistry.js +0 -1386
  192. package/dist/modes.d.ts +0 -358
  193. package/dist/modes.js +0 -133
  194. package/dist/onboardingstate.d.ts +0 -79
  195. package/dist/onboardingstate.js +0 -282
  196. package/dist/orchestrator.d.ts +0 -1338
  197. package/dist/orchestrator.js +0 -4310
  198. package/dist/packager/targetcli.js +0 -4
  199. package/dist/paths.d.ts +0 -2
  200. package/dist/paths.js +0 -14
  201. package/dist/performance.d.ts +0 -415
  202. package/dist/performance.js +0 -826
  203. package/dist/quantum.d.ts +0 -809
  204. package/dist/quantum.js +0 -2072
  205. package/dist/render.d.ts +0 -380
  206. package/dist/render.js +0 -1072
  207. package/dist/runall.d.ts +0 -2
  208. package/dist/runall.js +0 -39
  209. package/dist/runtimeprobe.d.ts +0 -4
  210. package/dist/runtimeprobe.js +0 -8
  211. package/dist/sandbox.d.ts +0 -355
  212. package/dist/sandbox.js +0 -1721
  213. package/dist/sandboxenvprofile.d.ts +0 -29
  214. package/dist/sandboxenvprofile.js +0 -89
  215. package/dist/sandboxprofile.d.ts +0 -137
  216. package/dist/sandboxprofile.js +0 -241
  217. package/dist/sandboxqueue.d.ts +0 -108
  218. package/dist/sandboxqueue.js +0 -201
  219. package/dist/sandboxquota.d.ts +0 -121
  220. package/dist/sandboxquota.js +0 -236
  221. package/dist/scheduler.d.ts +0 -595
  222. package/dist/scheduler.js +0 -1258
  223. package/dist/scriptlanes.d.ts +0 -182
  224. package/dist/scriptlanes.js +0 -660
  225. package/dist/scripts.buildengine.d.ts +0 -1
  226. package/dist/scripts.buildengine.js +0 -39
  227. package/dist/scripts.securitygate.d.ts +0 -1
  228. package/dist/scripts.securitygate.js +0 -68
  229. package/dist/scripts.validateflatnative.d.ts +0 -1
  230. package/dist/scripts.validateflatnative.js +0 -72
  231. package/dist/security.d.ts +0 -500
  232. package/dist/security.js +0 -1169
  233. package/dist/seedcatalog.d.ts +0 -13
  234. package/dist/seedcatalog.js +0 -46
  235. package/dist/server.d.ts +0 -20
  236. package/dist/server.js +0 -53
  237. package/dist/speccatalog.d.ts +0 -31
  238. package/dist/speccatalog.js +0 -163
  239. package/dist/tiers.d.ts +0 -1001
  240. package/dist/tiers.js +0 -2169
  241. package/dist/utils.d.ts +0 -2
  242. package/dist/utils.js +0 -5
  243. package/dist/vaulthandoff.d.ts +0 -141
  244. package/dist/vaulthandoff.js +0 -444
  245. package/dist/virtual.d.ts +0 -640
  246. package/dist/virtual.js +0 -1284
  247. package/dist/virtualcpu.d.ts +0 -315
  248. package/dist/virtualcpu.js +0 -1180
  249. package/dist/virtualgpu.d.ts +0 -344
  250. package/dist/virtualgpu.js +0 -1000
  251. package/dist/virtualization.d.ts +0 -606
  252. package/dist/virtualization.js +0 -1186
  253. package/dist/virtualmemory.d.ts +0 -817
  254. package/dist/virtualmemory.js +0 -1795
  255. package/dist/vite.config.d.ts +0 -3
  256. package/dist/vite.config.js +0 -43
  257. package/dist/vitest.config.d.ts +0 -2
  258. package/dist/vitest.config.js +0 -25
  259. package/dist/webserver.d.ts +0 -166
  260. package/dist/webserver.js +0 -2226
  261. package/dist/workloadlaw.d.ts +0 -133
  262. package/dist/workloadlaw.js +0 -193
  263. package/manifest.json +0 -20
  264. package/media.ts +0 -1337
  265. /package/docs/{architecture.1.8.19.md → architecture1819.md} +0 -0
  266. /package/docs/{architecture.1.8.19.mmd → architecture1819.mmd} +0 -0
  267. /package/docs/{artifactresearch.1.8.9.md → artifactresearch189.md} +0 -0
  268. /package/docs/{batches.1816.to.1820.md → batches1816to1820.md} +0 -0
  269. /package/docs/{brancharchive.2026.08.18.md → brancharchive20260818.md} +0 -0
  270. /package/docs/{containerplatforms.1.8.17.md → containerplatforms1817.md} +0 -0
  271. /package/docs/{e2ugh.engine.md → e2ughengine.md} +0 -0
  272. /package/docs/{flatbuildresearch.1.8.11.md → flatbuildresearch1811.md} +0 -0
  273. /package/docs/{licenseaudit.1.8.12.md → licenseaudit1812.md} +0 -0
  274. /package/docs/{mobileconversionresearch.1.8.10.md → mobileconversionresearch1810.md} +0 -0
  275. /package/docs/{nativeidentityresearch.1.8.11.md → nativeidentityresearch1811.md} +0 -0
  276. /package/docs/{native.wrappers.md → nativewrappers.md} +0 -0
  277. /package/docs/{planning.1.8.18.md → planning1818.md} +0 -0
  278. /package/docs/{planning.1.8.19.md → planning1819.md} +0 -0
  279. /package/docs/{planning.engine.md → planningengine.md} +0 -0
  280. /package/docs/{releasenotes.1.8.12.md → releasenotes1812.md} +0 -0
  281. /package/docs/{releasenotes.1.8.15.md → releasenotes1815.md} +0 -0
  282. /package/docs/{releasenotes.1.8.16.md → releasenotes1816.md} +0 -0
  283. /package/docs/{releasenotes.1.8.17.md → releasenotes1817.md} +0 -0
  284. /package/docs/{releasenotes.1.8.18.md → releasenotes1818.md} +0 -0
  285. /package/docs/{releasenotes.1.8.19.md → releasenotes1819.md} +0 -0
  286. /package/docs/{reorganization.1.8.8.md → reorganization188.md} +0 -0
  287. /package/docs/{reorganization.1.8.9.md → reorganization189.md} +0 -0
  288. /package/docs/{repo.analysis.1.8.21.json → repoanalysis1821.json} +0 -0
  289. /package/docs/{repo.candidates.1.8.21.jsonl → repocandidates1821.jsonl} +0 -0
  290. /package/docs/{repo.research.1.8.16.md → reporesearch1816.md} +0 -0
  291. /package/docs/{repo.research.1.8.21.md → reporesearch1821.md} +0 -0
  292. /package/docs/{repo.selected.1.8.21.json → reposelected1821.json} +0 -0
  293. /package/docs/{repo.synthesis.1.8.21.md → reposynthesis1821.md} +0 -0
  294. /package/docs/{research.1.8.18.isolation.md → research1818isolation.md} +0 -0
  295. /package/docs/{research.1.8.19.virtual.browser.md → research1819virtualbrowser.md} +0 -0
  296. /package/docs/{scanningresearch.1.8.11.md → scanningresearch1811.md} +0 -0
  297. /package/docs/{securityaudit.1.8.7.md → securityaudit187.md} +0 -0
  298. /package/docs/{securityreferences.1.8.11.md → securityreferences1811.md} +0 -0
  299. /package/docs/{securityresearch.1.8.11.md → securityresearch1811.md} +0 -0
  300. /package/docs/{signingresearch.1.8.12.md → signingresearch1812.md} +0 -0
  301. /package/docs/{tauri.glib.risk.1.8.11.md → tauriglibrisk1811.md} +0 -0
  302. /package/docs/{todo.1.8.18.md → todo1818.md} +0 -0
  303. /package/docs/{todo.1.8.19.md → todo1819.md} +0 -0
  304. /package/docs/{toolchainresearch.1.8.9.md → toolchainresearch189.md} +0 -0
  305. /package/docs/{web.duplicatecleanup.md → webduplicatecleanup.md} +0 -0
  306. /package/docs/{web.ideas.md → webideas.md} +0 -0
  307. /package/docs/{workflowimprovements.2026.08.19.md → workflowimprovements20260819.md} +0 -0
@@ -1,3 +0,0 @@
1
- /** Style: saddle Sol — the absorbed console surface on the family theme machinery: static-first vite build that emits the hashed bundles straight at the app root, with a repository-scoped base path and preview-safe host handling. */
2
- declare const _default: import("vite").UserConfig;
3
- export default _default;
@@ -1,43 +0,0 @@
1
- /** Style: saddle Sol — the absorbed console surface on the family theme machinery: static-first vite build that emits the hashed bundles straight at the app root, with a repository-scoped base path and preview-safe host handling. */
2
- import path from 'node:path';
3
- import tailwindcss from '@tailwindcss/vite';
4
- import react from '@vitejs/plugin-react';
5
- import { defineConfig } from 'vite';
6
- function themeBasePath(value) {
7
- const candidate = value?.trim() || '/';
8
- if (candidate === '.' || candidate === './')
9
- return './';
10
- return candidate === '/' ? candidate : `/${candidate.replace(/^\/+|\/+$/g, '')}/`;
11
- }
12
- export default defineConfig({
13
- base: themeBasePath(process.env.VITE_BASE_PATH),
14
- plugins: [react(), tailwindcss()],
15
- resolve: {
16
- alias: {
17
- // the theme sources live in the Sol folder of this app root.
18
- '@': path.resolve(import.meta.dirname, 'Sol'),
19
- // The playground consumes the engine source here so the build never
20
- // depends on a prebuilt dist directory.
21
- '@saddle/isolation': path.resolve(import.meta.dirname, 'isolation.ts'),
22
- },
23
- },
24
- root: import.meta.dirname,
25
- envDir: import.meta.dirname,
26
- build: {
27
- outDir: path.resolve(import.meta.dirname, '.'),
28
- emptyOutDir: false,
29
- assetsDir: '',
30
- },
31
- /** the theme sources live in the Sol folder of this app root: the pages import
32
- * the root engine logics (api, auth, db, mesh, sandbox) across the theme
33
- * boundary, and the playground consumes the root isolation module, so the
34
- * dev server allows this single root. */
35
- server: {
36
- fs: {
37
- allow: [import.meta.dirname],
38
- },
39
- host: true,
40
- strictPort: false,
41
- allowedHosts: true,
42
- },
43
- });
@@ -1,2 +0,0 @@
1
- declare const _default: import("vite").UserConfig;
2
- export default _default;
@@ -1,25 +0,0 @@
1
- import { defineConfig } from "vitest/config";
2
- export default defineConfig({
3
- test: {
4
- environment: "node",
5
- include: ["tests/*.test.ts"],
6
- globals: true,
7
- testTimeout: 15000,
8
- coverage: {
9
- provider: "v8",
10
- reporter: ["text", "json", "html"],
11
- include: ["src/**/*.ts"],
12
- exclude: [
13
- "tests/*.test.ts",
14
- "scripts/**",
15
- "web/**",
16
- "production/**",
17
- "docs/**",
18
- "node_modules/**",
19
- "dist/**",
20
- "coverage/**",
21
- ],
22
- thresholds: { lines: 60, functions: 50, branches: 50, statements: 60 },
23
- },
24
- },
25
- });
@@ -1,166 +0,0 @@
1
- #!/usr/bin/env node
2
- /**
3
- * webserver.ts — self-hosted node api for the saddle web console (the merged e2ugh sandbox surface, v7-BACK).
4
- *
5
- * pure node:http, zero dependencies, esm. the server serves the react
6
- * spa build (the hashed bundles vite emits straight at the app root,
7
- * produced once by "npm run web:build";
8
- * content types parsed from web/mime.types at boot) with the index.html
9
- * fallback for client routes, and it exposes the /api/v1 contract:
10
- * health, spec catalogs read from the repository json files, in-memory
11
- * sandboxes with the created ->
12
- * running state machine persisted to sqlite, exec through the very
13
- * same browser-pure dispatcher (sandbox.ts) with the persistent
14
- * per-sandbox workspace filesystem (sandboxfiles table, quota capped,
15
- * data stays with the sandbox id across restarts), the auth surface
16
- * (register/login/logout/me backed by scrypt and sessions in db.ts),
17
- * the edge execution plane (the modality catalog census, the probed
18
- * lane report and the server-side edge runs riding the modality
19
- * lanes), the signed mesh surface (register/heartbeat/nodes verified by
20
- * mesh.ts), the admin surface (overview/users/nodes/sandboxes/audit)
21
- * and the events poll for the dashboard. per the project rules there
22
- * is no serverless function anywhere: this file is the whole backend
23
- * and runs on any plain node host (docker, vps, caddy reverse proxy).
24
- * the backend sources (server.ts, db.ts, auth.ts, mesh.ts, sandbox.ts)
25
- * stay at the app root beside the served root, so the extension denylist
26
- * keeps them unreachable by the static resolver.
27
- *
28
- * contexts (28): types, httpserver, portselection, noderole,
29
- * staticfiles, mimetypes, contenttypes, cacheheaders, securityheaders,
30
- * cors, jsonio, apierrors, health, speccatalogs, specscache, edgeplane,
31
- * authroutes, sandboxes, sandboxfs, statemachine, ttlreaper,
32
- * execendpoint, filesroutes, meshroutes, adminroutes, eventsroute,
33
- * requestlogging, gracefulshutdown.
34
- *
35
- * rules: lowercase identifiers, english jsdoc in third person, no emoji,
36
- * try/catch on every fallible path, standardized {error:{code,message}}
37
- * json failures, no hardcoded localhost address, host and port resolved
38
- * once at boot from argv/env with a random 30000-59999 default.
39
- */
40
- import type { IncomingMessage, ServerResponse } from 'node:http';
41
- import type { SandboxFs, SandboxState } from './sandbox.ts';
42
- import type { WorkspaceUsage } from './db.ts';
43
- import type { SessionUser } from './auth.ts';
44
- /** sandbox creation request carried by POST /api/v1/sandboxes; the cpu
45
- * model, gpu and mig values come from the reviewed catalogs. the
46
- * declaration fields (base, os, arch, form, networking, vgpu, diskgb,
47
- * timeoutseconds) ride the sandboxprofile.ts plane: any of them present
48
- * switches the request to the resolved spec path, none keeps the exact
49
- * legacy behavior. */
50
- export type SandboxCreateBody = {
51
- model?: string;
52
- vcpus?: number;
53
- ramgb?: number;
54
- gpu?: string;
55
- mig?: string;
56
- quotamb?: number;
57
- base?: string;
58
- os?: string;
59
- arch?: string;
60
- form?: string;
61
- networking?: string;
62
- vgpu?: boolean;
63
- diskgb?: number;
64
- timeoutseconds?: number;
65
- };
66
- /** the resolved sandbox spec stored on the record and echoed by the views.
67
- * the declaration fields stay optional so legacy rows (and legacy
68
- * callers) keep their shape untouched. */
69
- export type SandboxSpecView = {
70
- model: string;
71
- vcpus: number;
72
- ramgb: number;
73
- gpu: string;
74
- mig: string;
75
- os?: string;
76
- arch?: string;
77
- form?: string;
78
- networking?: string;
79
- vgpu?: boolean;
80
- diskgb?: number | null;
81
- timeoutseconds?: number;
82
- };
83
- /** the in-memory sandbox record: the api lifecycle fields plus the
84
- * private engine state consumed by dispatch and the dispatcher
85
- * filesystem context bound to the sqlite workspace table. */
86
- export type SandboxRecord = {
87
- id: string;
88
- userid: string;
89
- state: 'created' | 'running' | 'destroyed' | 'expired';
90
- spec: SandboxSpecView;
91
- createdat: number;
92
- startedat: number | null;
93
- expiresat: number;
94
- execcount: number;
95
- lastcommand: string | null;
96
- usage: WorkspaceUsage;
97
- engine: SandboxState;
98
- fscontext: {
99
- quota: number;
100
- fs: SandboxFs;
101
- };
102
- };
103
- /** the json-safe status document answered by the sandbox routes. */
104
- export type SandboxPublicView = {
105
- id: string;
106
- state: string;
107
- model: string;
108
- vcpus: number;
109
- ramgb: number;
110
- gpu: string;
111
- mig: string;
112
- spec: SandboxSpecView;
113
- createdAt: string;
114
- startedAt: string | null;
115
- expiresAt: string;
116
- ttlSeconds: number;
117
- execCount: number;
118
- lastCommand: string | null;
119
- usage: WorkspaceUsage;
120
- };
121
- /** one shelf row answered by GET /api/v1/sandboxes. */
122
- export type SandboxShelfRow = {
123
- id: string;
124
- state: string;
125
- model: string;
126
- vcpus: number;
127
- ramgb: number;
128
- gpu: string;
129
- createdAt: string;
130
- expiresAt: string | null;
131
- files: number;
132
- bytes: number;
133
- resumable: boolean;
134
- };
135
- /**
136
- * in-memory sandbox store: id -> record. the record carries the api
137
- * lifecycle fields plus the private engine state consumed by dispatch
138
- * and the owning userid persisted in the sandboxes table.
139
- */
140
- declare const sandboxes: Map<string, SandboxRecord>;
141
- /**
142
- * creates a sandbox record: id, the created -> running state machine with
143
- * the 125 ms firecracker ramp, the resolved spec, the owning user and
144
- * the dispatcher state built by createsandboxstate. the row is mirrored
145
- * into the sqlite sandboxes table. malformed requests throw errors
146
- * carrying status and code fields consumed by the route handler.
147
- *
148
- * @param body the creation request; the cpu
149
- * model comes from the reviewed catalog, quotamb picks the persistent
150
- * workspace quota (4-256 MiB).
151
- * @param user the authenticated owner.
152
- * @returns the stored sandbox record.
153
- */
154
- declare function createsandbox(body: SandboxCreateBody, user: SessionUser): SandboxRecord;
155
- /**
156
- * handles one /api/v1 request.
157
- *
158
- * @param req the incoming request.
159
- * @param res the outgoing response.
160
- * @param url the parsed request url.
161
- * @returns resolves when the response is written.
162
- */
163
- declare function handleapi(req: IncomingMessage, res: ServerResponse, url: URL): Promise<void>;
164
- /** the http server: static files plus the /api/v1 router. */
165
- declare const server: import("node:http").Server<typeof IncomingMessage, typeof ServerResponse>;
166
- export { server, sandboxes, createsandbox, handleapi };