@wenathlan/saddle 2.0.154 → 2.0.159

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 (314) hide show
  1. package/Dockerfile +167 -1334
  2. package/README.md +59 -60
  3. package/biome.jsonc +3 -3
  4. package/browser.ts +482 -0
  5. package/cli.ts +274 -0
  6. package/distribution.ts +731 -0
  7. package/docker.config +29 -8
  8. package/docs/{architecture.1.8.19.mmd → architecture1819.md} +6 -0
  9. package/docs/artifactavailability.md +2 -2
  10. package/docs/browser.md +18 -1
  11. package/docs/{containerplatforms.2.1.0.md → containerplatforms210.md} +1 -1
  12. package/docs/{documentmap.1.8.12.md → documentmap1812.md} +1 -1
  13. package/docs/extension.md +13 -2
  14. package/docs/features.md +5 -0
  15. package/docs/libraryapi.md +1 -1
  16. package/docs/{ninety.modalities.md → ninetymodalities.md} +87 -4
  17. package/docs/{planning.ninety.md → planningninety.md} +6 -6
  18. package/docs/{releasenotes.1.8.13.md → releasenotes1813.md} +2 -2
  19. package/docs/{releasenotes.1.8.14.md → releasenotes1814.md} +1 -1
  20. package/docs/{repo.synthesis.1.8.16.md → reposynthesis1816.md} +1 -1
  21. package/docs/todo.md +2 -2
  22. package/docs/{todo.1.8.15.md → todo1815.md} +1 -1
  23. package/docs/{todo.1.8.16.md → todo1816.md} +5 -5
  24. package/execution.ts +677 -0
  25. package/foundation.ts +314 -0
  26. package/index.ts +36 -34
  27. package/isolation.ts +84 -0
  28. package/modalityregistry.ts +189 -145
  29. package/modes.ts +170 -0
  30. package/mttg.config +1 -1
  31. package/orchestrator.ts +49 -15
  32. package/package.json +105 -89
  33. package/qemu.config +2 -2
  34. package/sandbox.ts +3279 -0
  35. package/scheduler.ts +1 -1
  36. package/server.ts +52 -0
  37. package/tsconfig.json +12 -13
  38. package/virtual.ts +7528 -0
  39. package/workloadlaw.ts +293 -0
  40. package/dist/App.d.ts +0 -5
  41. package/dist/App.js +0 -52
  42. package/dist/Sol/Sol.d.ts +0 -3
  43. package/dist/Sol/Sol.js +0 -46
  44. package/dist/Sol/agentbrowser/agentbrowser.d.ts +0 -9
  45. package/dist/Sol/agentbrowser/agentbrowser.js +0 -121
  46. package/dist/Sol/architecture/architecture.d.ts +0 -9
  47. package/dist/Sol/architecture/architecture.js +0 -93
  48. package/dist/Sol/compute/compute.d.ts +0 -9
  49. package/dist/Sol/compute/compute.js +0 -22
  50. package/dist/Sol/console/console.d.ts +0 -15
  51. package/dist/Sol/console/console.js +0 -292
  52. package/dist/Sol/dashboard/dashboard.d.ts +0 -10
  53. package/dist/Sol/dashboard/dashboard.js +0 -181
  54. package/dist/Sol/docs/docs.d.ts +0 -9
  55. package/dist/Sol/docs/docs.js +0 -28
  56. package/dist/Sol/home/home.d.ts +0 -35
  57. package/dist/Sol/home/home.js +0 -239
  58. package/dist/Sol/integrations/integrations.d.ts +0 -9
  59. package/dist/Sol/integrations/integrations.js +0 -83
  60. package/dist/Sol/intro/intro.d.ts +0 -7
  61. package/dist/Sol/intro/intro.js +0 -102
  62. package/dist/Sol/login/login.d.ts +0 -16
  63. package/dist/Sol/login/login.js +0 -49
  64. package/dist/Sol/notfound/notfound.d.ts +0 -9
  65. package/dist/Sol/notfound/notfound.js +0 -15
  66. package/dist/Sol/onboarding/onboarding.d.ts +0 -25
  67. package/dist/Sol/onboarding/onboarding.js +0 -60
  68. package/dist/Sol/playground/playground.d.ts +0 -9
  69. package/dist/Sol/playground/playground.js +0 -127
  70. package/dist/Sol/register/register.d.ts +0 -16
  71. package/dist/Sol/register/register.js +0 -193
  72. package/dist/Sol/shell/Shell.d.ts +0 -124
  73. package/dist/Sol/shell/Shell.js +0 -335
  74. package/dist/Sol/wingets/ComputeBootladder.d.ts +0 -6
  75. package/dist/Sol/wingets/ComputeBootladder.js +0 -71
  76. package/dist/Sol/wingets/ComputeModalitycatalog.d.ts +0 -7
  77. package/dist/Sol/wingets/ComputeModalitycatalog.js +0 -71
  78. package/dist/Sol/wingets/ConsoleApibadge.d.ts +0 -7
  79. package/dist/Sol/wingets/ConsoleApibadge.js +0 -5
  80. package/dist/Sol/wingets/ConsoleEdgelaw.d.ts +0 -6
  81. package/dist/Sol/wingets/ConsoleEdgelaw.js +0 -36
  82. package/dist/Sol/wingets/ConsoleEventstimeline.d.ts +0 -19
  83. package/dist/Sol/wingets/ConsoleEventstimeline.js +0 -12
  84. package/dist/Sol/wingets/ConsoleSnapshotcontrols.d.ts +0 -8
  85. package/dist/Sol/wingets/ConsoleSnapshotcontrols.js +0 -8
  86. package/dist/Sol/wingets/ConsoleSpecpanel.d.ts +0 -21
  87. package/dist/Sol/wingets/ConsoleSpecpanel.js +0 -75
  88. package/dist/Sol/wingets/ConsoleTerminal.d.ts +0 -22
  89. package/dist/Sol/wingets/ConsoleTerminal.js +0 -77
  90. package/dist/Sol/wingets/DashboardAccountpanel.d.ts +0 -18
  91. package/dist/Sol/wingets/DashboardAccountpanel.js +0 -65
  92. package/dist/Sol/wingets/DashboardAdminpanel.d.ts +0 -6
  93. package/dist/Sol/wingets/DashboardAdminpanel.js +0 -90
  94. package/dist/Sol/wingets/DashboardAuditlog.d.ts +0 -8
  95. package/dist/Sol/wingets/DashboardAuditlog.js +0 -50
  96. package/dist/Sol/wingets/DashboardCreatesandboxform.d.ts +0 -10
  97. package/dist/Sol/wingets/DashboardCreatesandboxform.js +0 -71
  98. package/dist/Sol/wingets/DashboardEventstimeline.d.ts +0 -8
  99. package/dist/Sol/wingets/DashboardEventstimeline.js +0 -83
  100. package/dist/Sol/wingets/DashboardGlobalsandboxestable.d.ts +0 -8
  101. package/dist/Sol/wingets/DashboardGlobalsandboxestable.js +0 -57
  102. package/dist/Sol/wingets/DashboardMeshnodestable.d.ts +0 -8
  103. package/dist/Sol/wingets/DashboardMeshnodestable.js +0 -103
  104. package/dist/Sol/wingets/DashboardSandboxlist.d.ts +0 -10
  105. package/dist/Sol/wingets/DashboardSandboxlist.js +0 -163
  106. package/dist/Sol/wingets/DashboardUserstable.d.ts +0 -8
  107. package/dist/Sol/wingets/DashboardUserstable.js +0 -78
  108. package/dist/Sol/wingets/HomeEntrygate.d.ts +0 -23
  109. package/dist/Sol/wingets/HomeEntrygate.js +0 -73
  110. package/dist/Sol/wingets/HomeMetricstrip.d.ts +0 -9
  111. package/dist/Sol/wingets/HomeMetricstrip.js +0 -4
  112. package/dist/Sol/wingets/HomeRuntimediagram.d.ts +0 -1
  113. package/dist/Sol/wingets/HomeRuntimediagram.js +0 -22
  114. package/dist/Sol/wingets/LoginForm.d.ts +0 -19
  115. package/dist/Sol/wingets/LoginForm.js +0 -141
  116. package/dist/Sol/wingets/RegisterPasswordconfirm.d.ts +0 -13
  117. package/dist/Sol/wingets/RegisterPasswordconfirm.js +0 -16
  118. package/dist/Sol/wingets/RegisterPasswordmeter.d.ts +0 -19
  119. package/dist/Sol/wingets/RegisterPasswordmeter.js +0 -65
  120. package/dist/Sol/wingets/RegisterUsernamerules.d.ts +0 -11
  121. package/dist/Sol/wingets/RegisterUsernamerules.js +0 -16
  122. package/dist/Sol/wingets/index.d.ts +0 -39
  123. package/dist/Sol/wingets/index.js +0 -39
  124. package/dist/alternatives.d.ts +0 -508
  125. package/dist/alternatives.js +0 -950
  126. package/dist/api.d.ts +0 -154
  127. package/dist/api.js +0 -174
  128. package/dist/auth.d.ts +0 -268
  129. package/dist/auth.js +0 -476
  130. package/dist/automation.d.ts +0 -425
  131. package/dist/automation.js +0 -566
  132. package/dist/browser.d.ts +0 -561
  133. package/dist/browser.js +0 -1058
  134. package/dist/capacitor.config.d.ts +0 -45
  135. package/dist/capacitor.config.js +0 -48
  136. package/dist/catalog.d.ts +0 -43
  137. package/dist/catalog.js +0 -44
  138. package/dist/cli.d.ts +0 -16
  139. package/dist/cli.js +0 -168
  140. package/dist/communication.d.ts +0 -181
  141. package/dist/communication.js +0 -376
  142. package/dist/compute.d.ts +0 -1160
  143. package/dist/compute.js +0 -2272
  144. package/dist/dashboardlib.d.ts +0 -58
  145. package/dist/dashboardlib.js +0 -161
  146. package/dist/db.d.ts +0 -569
  147. package/dist/db.js +0 -1080
  148. package/dist/distribution.d.ts +0 -528
  149. package/dist/distribution.js +0 -810
  150. package/dist/drizzle.config.d.ts +0 -20
  151. package/dist/drizzle.config.js +0 -18
  152. package/dist/edgelandes.d.ts +0 -70
  153. package/dist/edgelandes.host.d.ts +0 -26
  154. package/dist/edgelandes.host.js +0 -1089
  155. package/dist/edgelandes.inproc.d.ts +0 -27
  156. package/dist/edgelandes.inproc.js +0 -952
  157. package/dist/edgelandes.js +0 -1133
  158. package/dist/edgelandes.ninety.d.ts +0 -31
  159. package/dist/edgelandes.ninety.js +0 -174
  160. package/dist/edgelandes.virtual.d.ts +0 -25
  161. package/dist/edgelandes.virtual.js +0 -629
  162. package/dist/edgeplane.d.ts +0 -121
  163. package/dist/edgeplane.js +0 -341
  164. package/dist/examplelocaljob.d.ts +0 -1
  165. package/dist/examplelocaljob.js +0 -14
  166. package/dist/execution.d.ts +0 -529
  167. package/dist/execution.js +0 -760
  168. package/dist/family.d.ts +0 -16
  169. package/dist/family.js +0 -42
  170. package/dist/familyurl.d.ts +0 -21
  171. package/dist/familyurl.js +0 -24
  172. package/dist/format.d.ts +0 -18
  173. package/dist/format.js +0 -59
  174. package/dist/foundation.d.ts +0 -172
  175. package/dist/foundation.js +0 -312
  176. package/dist/index.d.ts +0 -735
  177. package/dist/index.js +0 -1020
  178. package/dist/integration.d.ts +0 -235
  179. package/dist/integration.js +0 -228
  180. package/dist/intelligence.d.ts +0 -93
  181. package/dist/intelligence.js +0 -144
  182. package/dist/isolation.d.ts +0 -128
  183. package/dist/isolation.js +0 -95
  184. package/dist/labels.d.ts +0 -665
  185. package/dist/labels.js +0 -707
  186. package/dist/localauth.d.ts +0 -127
  187. package/dist/localauth.js +0 -413
  188. package/dist/media.d.ts +0 -343
  189. package/dist/media.js +0 -985
  190. package/dist/mesh.d.ts +0 -177
  191. package/dist/mesh.js +0 -468
  192. package/dist/modalityregistry.d.ts +0 -109
  193. package/dist/modalityregistry.js +0 -1386
  194. package/dist/modes.d.ts +0 -358
  195. package/dist/modes.js +0 -133
  196. package/dist/onboardingstate.d.ts +0 -79
  197. package/dist/onboardingstate.js +0 -282
  198. package/dist/orchestrator.d.ts +0 -1338
  199. package/dist/orchestrator.js +0 -4310
  200. package/dist/packager/targetcli.js +0 -4
  201. package/dist/paths.d.ts +0 -2
  202. package/dist/paths.js +0 -14
  203. package/dist/performance.d.ts +0 -415
  204. package/dist/performance.js +0 -826
  205. package/dist/quantum.d.ts +0 -809
  206. package/dist/quantum.js +0 -2072
  207. package/dist/render.d.ts +0 -380
  208. package/dist/render.js +0 -1072
  209. package/dist/runall.d.ts +0 -2
  210. package/dist/runall.js +0 -39
  211. package/dist/runtimeprobe.d.ts +0 -4
  212. package/dist/runtimeprobe.js +0 -8
  213. package/dist/sandbox.d.ts +0 -355
  214. package/dist/sandbox.js +0 -1721
  215. package/dist/sandboxenvprofile.d.ts +0 -29
  216. package/dist/sandboxenvprofile.js +0 -89
  217. package/dist/sandboxprofile.d.ts +0 -137
  218. package/dist/sandboxprofile.js +0 -241
  219. package/dist/sandboxqueue.d.ts +0 -108
  220. package/dist/sandboxqueue.js +0 -201
  221. package/dist/sandboxquota.d.ts +0 -121
  222. package/dist/sandboxquota.js +0 -236
  223. package/dist/scheduler.d.ts +0 -595
  224. package/dist/scheduler.js +0 -1258
  225. package/dist/scriptlanes.d.ts +0 -182
  226. package/dist/scriptlanes.js +0 -660
  227. package/dist/scripts.buildengine.d.ts +0 -1
  228. package/dist/scripts.buildengine.js +0 -39
  229. package/dist/scripts.securitygate.d.ts +0 -1
  230. package/dist/scripts.securitygate.js +0 -68
  231. package/dist/scripts.validateflatnative.d.ts +0 -1
  232. package/dist/scripts.validateflatnative.js +0 -72
  233. package/dist/security.d.ts +0 -500
  234. package/dist/security.js +0 -1169
  235. package/dist/seedcatalog.d.ts +0 -13
  236. package/dist/seedcatalog.js +0 -46
  237. package/dist/server.d.ts +0 -20
  238. package/dist/server.js +0 -53
  239. package/dist/speccatalog.d.ts +0 -31
  240. package/dist/speccatalog.js +0 -163
  241. package/dist/tiers.d.ts +0 -1001
  242. package/dist/tiers.js +0 -2169
  243. package/dist/utils.d.ts +0 -2
  244. package/dist/utils.js +0 -5
  245. package/dist/vaulthandoff.d.ts +0 -141
  246. package/dist/vaulthandoff.js +0 -444
  247. package/dist/virtual.d.ts +0 -640
  248. package/dist/virtual.js +0 -1284
  249. package/dist/virtualcpu.d.ts +0 -315
  250. package/dist/virtualcpu.js +0 -1180
  251. package/dist/virtualgpu.d.ts +0 -344
  252. package/dist/virtualgpu.js +0 -1000
  253. package/dist/virtualization.d.ts +0 -606
  254. package/dist/virtualization.js +0 -1186
  255. package/dist/virtualmemory.d.ts +0 -817
  256. package/dist/virtualmemory.js +0 -1795
  257. package/dist/vite.config.d.ts +0 -3
  258. package/dist/vite.config.js +0 -48
  259. package/dist/vitest.config.d.ts +0 -2
  260. package/dist/vitest.config.js +0 -25
  261. package/dist/webserver.d.ts +0 -166
  262. package/dist/webserver.js +0 -2226
  263. package/dist/workloadlaw.d.ts +0 -133
  264. package/dist/workloadlaw.js +0 -193
  265. package/docs/.gitkeep +0 -0
  266. package/docs/architecture.1.8.19.md +0 -76
  267. package/docs/logs/examplesession.json +0 -54
  268. package/docs/repo.analysis.1.8.21.json +0 -2617
  269. package/docs/repo.candidates.1.8.21.jsonl +0 -666
  270. package/docs/repo.selected.1.8.21.json +0 -786
  271. package/manifest.json +0 -20
  272. package/media.ts +0 -1337
  273. package/virtualcpu.ts +0 -1274
  274. package/virtualgpu.ts +0 -1182
  275. package/virtualization.ts +0 -1628
  276. package/virtualmemory.ts +0 -2303
  277. /package/docs/{artifactresearch.1.8.9.md → artifactresearch189.md} +0 -0
  278. /package/docs/{batches.1816.to.1820.md → batches1816to1820.md} +0 -0
  279. /package/docs/{brancharchive.2026.08.18.md → brancharchive20260818.md} +0 -0
  280. /package/docs/{containerplatforms.1.8.17.md → containerplatforms1817.md} +0 -0
  281. /package/docs/{e2ugh.engine.md → e2ughengine.md} +0 -0
  282. /package/docs/{flatbuildresearch.1.8.11.md → flatbuildresearch1811.md} +0 -0
  283. /package/docs/{licenseaudit.1.8.12.md → licenseaudit1812.md} +0 -0
  284. /package/docs/{mobileconversionresearch.1.8.10.md → mobileconversionresearch1810.md} +0 -0
  285. /package/docs/{nativeidentityresearch.1.8.11.md → nativeidentityresearch1811.md} +0 -0
  286. /package/docs/{native.wrappers.md → nativewrappers.md} +0 -0
  287. /package/docs/{planning.1.8.18.md → planning1818.md} +0 -0
  288. /package/docs/{planning.1.8.19.md → planning1819.md} +0 -0
  289. /package/docs/{planning.engine.md → planningengine.md} +0 -0
  290. /package/docs/{releasenotes.1.8.12.md → releasenotes1812.md} +0 -0
  291. /package/docs/{releasenotes.1.8.15.md → releasenotes1815.md} +0 -0
  292. /package/docs/{releasenotes.1.8.16.md → releasenotes1816.md} +0 -0
  293. /package/docs/{releasenotes.1.8.17.md → releasenotes1817.md} +0 -0
  294. /package/docs/{releasenotes.1.8.18.md → releasenotes1818.md} +0 -0
  295. /package/docs/{releasenotes.1.8.19.md → releasenotes1819.md} +0 -0
  296. /package/docs/{reorganization.1.8.8.md → reorganization188.md} +0 -0
  297. /package/docs/{reorganization.1.8.9.md → reorganization189.md} +0 -0
  298. /package/docs/{repo.research.1.8.16.md → reporesearch1816.md} +0 -0
  299. /package/docs/{repo.research.1.8.21.md → reporesearch1821.md} +0 -0
  300. /package/docs/{repo.synthesis.1.8.21.md → reposynthesis1821.md} +0 -0
  301. /package/docs/{research.1.8.18.isolation.md → research1818isolation.md} +0 -0
  302. /package/docs/{research.1.8.19.virtual.browser.md → research1819virtualbrowser.md} +0 -0
  303. /package/docs/{scanningresearch.1.8.11.md → scanningresearch1811.md} +0 -0
  304. /package/docs/{securityaudit.1.8.7.md → securityaudit187.md} +0 -0
  305. /package/docs/{securityreferences.1.8.11.md → securityreferences1811.md} +0 -0
  306. /package/docs/{securityresearch.1.8.11.md → securityresearch1811.md} +0 -0
  307. /package/docs/{signingresearch.1.8.12.md → signingresearch1812.md} +0 -0
  308. /package/docs/{tauri.glib.risk.1.8.11.md → tauriglibrisk1811.md} +0 -0
  309. /package/docs/{todo.1.8.18.md → todo1818.md} +0 -0
  310. /package/docs/{todo.1.8.19.md → todo1819.md} +0 -0
  311. /package/docs/{toolchainresearch.1.8.9.md → toolchainresearch189.md} +0 -0
  312. /package/docs/{web.duplicatecleanup.md → webduplicatecleanup.md} +0 -0
  313. /package/docs/{web.ideas.md → webideas.md} +0 -0
  314. /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,48 +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 label store bridge of the ownership law: the app's copy mechanism
20
- // rides the vault factory through the relative sibling source (the
21
- // owner is the vault engine — the mechanism is never duplicated inside
22
- // saddle), and the raw-node lanes (the forked webserver) resolve the
23
- // same relative path without any registry envelope.
24
- // The playground consumes the engine source here so the build never
25
- // depends on a prebuilt dist directory.
26
- '@saddle/isolation': path.resolve(import.meta.dirname, 'isolation.ts'),
27
- },
28
- },
29
- root: import.meta.dirname,
30
- envDir: import.meta.dirname,
31
- build: {
32
- outDir: path.resolve(import.meta.dirname, '.'),
33
- emptyOutDir: false,
34
- assetsDir: '',
35
- },
36
- /** the theme sources live in the Sol folder of this app root: the pages import
37
- * the root engine logics (api, auth, db, mesh, sandbox) across the theme
38
- * boundary, and the playground consumes the root isolation module, so the
39
- * dev server allows this single root. */
40
- server: {
41
- fs: {
42
- allow: [import.meta.dirname, path.resolve(import.meta.dirname, '../vault')],
43
- },
44
- host: true,
45
- strictPort: false,
46
- allowedHosts: true,
47
- },
48
- });
@@ -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 };