@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.
- package/Dockerfile +139 -55
- package/README.md +58 -59
- package/browser.ts +482 -0
- package/cli.ts +274 -0
- package/distribution.ts +731 -0
- package/docker.config +29 -8
- package/docs/artifactavailability.md +2 -2
- package/docs/browser.md +18 -1
- package/docs/{containerplatforms.2.1.0.md → containerplatforms210.md} +1 -1
- package/docs/{documentmap.1.8.12.md → documentmap1812.md} +1 -1
- package/docs/extension.md +13 -2
- package/docs/libraryapi.md +1 -1
- package/docs/{ninety.modalities.md → ninetymodalities.md} +87 -4
- package/docs/{planning.ninety.md → planningninety.md} +6 -6
- package/docs/{releasenotes.1.8.13.md → releasenotes1813.md} +2 -2
- package/docs/{releasenotes.1.8.14.md → releasenotes1814.md} +1 -1
- package/docs/{repo.synthesis.1.8.16.md → reposynthesis1816.md} +1 -1
- package/docs/todo.md +2 -2
- package/docs/{todo.1.8.15.md → todo1815.md} +1 -1
- package/docs/{todo.1.8.16.md → todo1816.md} +5 -5
- package/execution.ts +677 -0
- package/foundation.ts +314 -0
- package/index.ts +35 -27
- package/isolation.ts +84 -0
- package/modes.ts +170 -0
- package/mttg.config +1 -1
- package/orchestrator.ts +49 -15
- package/package.json +90 -75
- package/qemu.config +2 -2
- package/sandbox.ts +2094 -0
- package/scheduler.ts +1 -1
- package/server.ts +52 -0
- package/tsconfig.json +11 -12
- package/virtual.ts +1105 -0
- package/virtualgpu.ts +1 -1
- package/virtualization.ts +1 -1
- package/workloadlaw.ts +293 -0
- package/dist/App.d.ts +0 -5
- package/dist/App.js +0 -52
- package/dist/Sol/Sol.d.ts +0 -3
- package/dist/Sol/Sol.js +0 -46
- package/dist/Sol/agentbrowser/agentbrowser.d.ts +0 -9
- package/dist/Sol/agentbrowser/agentbrowser.js +0 -121
- package/dist/Sol/architecture/architecture.d.ts +0 -9
- package/dist/Sol/architecture/architecture.js +0 -93
- package/dist/Sol/compute/compute.d.ts +0 -9
- package/dist/Sol/compute/compute.js +0 -22
- package/dist/Sol/console/console.d.ts +0 -15
- package/dist/Sol/console/console.js +0 -292
- package/dist/Sol/dashboard/dashboard.d.ts +0 -10
- package/dist/Sol/dashboard/dashboard.js +0 -181
- package/dist/Sol/docs/docs.d.ts +0 -9
- package/dist/Sol/docs/docs.js +0 -28
- package/dist/Sol/home/home.d.ts +0 -35
- package/dist/Sol/home/home.js +0 -239
- package/dist/Sol/integrations/integrations.d.ts +0 -9
- package/dist/Sol/integrations/integrations.js +0 -83
- package/dist/Sol/intro/intro.d.ts +0 -7
- package/dist/Sol/intro/intro.js +0 -102
- package/dist/Sol/login/login.d.ts +0 -16
- package/dist/Sol/login/login.js +0 -49
- package/dist/Sol/notfound/notfound.d.ts +0 -9
- package/dist/Sol/notfound/notfound.js +0 -15
- package/dist/Sol/onboarding/onboarding.d.ts +0 -25
- package/dist/Sol/onboarding/onboarding.js +0 -60
- package/dist/Sol/playground/playground.d.ts +0 -9
- package/dist/Sol/playground/playground.js +0 -127
- package/dist/Sol/register/register.d.ts +0 -16
- package/dist/Sol/register/register.js +0 -193
- package/dist/Sol/shell/Shell.d.ts +0 -124
- package/dist/Sol/shell/Shell.js +0 -335
- package/dist/Sol/wingets/ComputeBootladder.d.ts +0 -6
- package/dist/Sol/wingets/ComputeBootladder.js +0 -71
- package/dist/Sol/wingets/ComputeModalitycatalog.d.ts +0 -7
- package/dist/Sol/wingets/ComputeModalitycatalog.js +0 -71
- package/dist/Sol/wingets/ConsoleApibadge.d.ts +0 -7
- package/dist/Sol/wingets/ConsoleApibadge.js +0 -5
- package/dist/Sol/wingets/ConsoleEdgelaw.d.ts +0 -6
- package/dist/Sol/wingets/ConsoleEdgelaw.js +0 -36
- package/dist/Sol/wingets/ConsoleEventstimeline.d.ts +0 -19
- package/dist/Sol/wingets/ConsoleEventstimeline.js +0 -12
- package/dist/Sol/wingets/ConsoleSnapshotcontrols.d.ts +0 -8
- package/dist/Sol/wingets/ConsoleSnapshotcontrols.js +0 -8
- package/dist/Sol/wingets/ConsoleSpecpanel.d.ts +0 -21
- package/dist/Sol/wingets/ConsoleSpecpanel.js +0 -75
- package/dist/Sol/wingets/ConsoleTerminal.d.ts +0 -22
- package/dist/Sol/wingets/ConsoleTerminal.js +0 -77
- package/dist/Sol/wingets/DashboardAccountpanel.d.ts +0 -18
- package/dist/Sol/wingets/DashboardAccountpanel.js +0 -65
- package/dist/Sol/wingets/DashboardAdminpanel.d.ts +0 -6
- package/dist/Sol/wingets/DashboardAdminpanel.js +0 -90
- package/dist/Sol/wingets/DashboardAuditlog.d.ts +0 -8
- package/dist/Sol/wingets/DashboardAuditlog.js +0 -50
- package/dist/Sol/wingets/DashboardCreatesandboxform.d.ts +0 -10
- package/dist/Sol/wingets/DashboardCreatesandboxform.js +0 -71
- package/dist/Sol/wingets/DashboardEventstimeline.d.ts +0 -8
- package/dist/Sol/wingets/DashboardEventstimeline.js +0 -83
- package/dist/Sol/wingets/DashboardGlobalsandboxestable.d.ts +0 -8
- package/dist/Sol/wingets/DashboardGlobalsandboxestable.js +0 -57
- package/dist/Sol/wingets/DashboardMeshnodestable.d.ts +0 -8
- package/dist/Sol/wingets/DashboardMeshnodestable.js +0 -103
- package/dist/Sol/wingets/DashboardSandboxlist.d.ts +0 -10
- package/dist/Sol/wingets/DashboardSandboxlist.js +0 -163
- package/dist/Sol/wingets/DashboardUserstable.d.ts +0 -8
- package/dist/Sol/wingets/DashboardUserstable.js +0 -78
- package/dist/Sol/wingets/HomeEntrygate.d.ts +0 -23
- package/dist/Sol/wingets/HomeEntrygate.js +0 -73
- package/dist/Sol/wingets/HomeMetricstrip.d.ts +0 -9
- package/dist/Sol/wingets/HomeMetricstrip.js +0 -4
- package/dist/Sol/wingets/HomeRuntimediagram.d.ts +0 -1
- package/dist/Sol/wingets/HomeRuntimediagram.js +0 -22
- package/dist/Sol/wingets/LoginForm.d.ts +0 -19
- package/dist/Sol/wingets/LoginForm.js +0 -141
- package/dist/Sol/wingets/RegisterPasswordconfirm.d.ts +0 -13
- package/dist/Sol/wingets/RegisterPasswordconfirm.js +0 -16
- package/dist/Sol/wingets/RegisterPasswordmeter.d.ts +0 -19
- package/dist/Sol/wingets/RegisterPasswordmeter.js +0 -65
- package/dist/Sol/wingets/RegisterUsernamerules.d.ts +0 -11
- package/dist/Sol/wingets/RegisterUsernamerules.js +0 -16
- package/dist/Sol/wingets/index.d.ts +0 -39
- package/dist/Sol/wingets/index.js +0 -39
- package/dist/alternatives.d.ts +0 -508
- package/dist/alternatives.js +0 -950
- package/dist/api.d.ts +0 -154
- package/dist/api.js +0 -174
- package/dist/auth.d.ts +0 -268
- package/dist/auth.js +0 -476
- package/dist/automation.d.ts +0 -425
- package/dist/automation.js +0 -566
- package/dist/browser.d.ts +0 -561
- package/dist/browser.js +0 -1058
- package/dist/capacitor.config.d.ts +0 -45
- package/dist/capacitor.config.js +0 -48
- package/dist/catalog.d.ts +0 -43
- package/dist/catalog.js +0 -44
- package/dist/cli.d.ts +0 -16
- package/dist/cli.js +0 -168
- package/dist/communication.d.ts +0 -181
- package/dist/communication.js +0 -376
- package/dist/compute.d.ts +0 -1160
- package/dist/compute.js +0 -2272
- package/dist/dashboardlib.d.ts +0 -58
- package/dist/dashboardlib.js +0 -161
- package/dist/db.d.ts +0 -569
- package/dist/db.js +0 -1080
- package/dist/distribution.d.ts +0 -528
- package/dist/distribution.js +0 -810
- package/dist/drizzle.config.d.ts +0 -20
- package/dist/drizzle.config.js +0 -18
- package/dist/edgelandes.d.ts +0 -70
- package/dist/edgelandes.host.d.ts +0 -26
- package/dist/edgelandes.host.js +0 -1089
- package/dist/edgelandes.inproc.d.ts +0 -27
- package/dist/edgelandes.inproc.js +0 -952
- package/dist/edgelandes.js +0 -1133
- package/dist/edgelandes.ninety.d.ts +0 -31
- package/dist/edgelandes.ninety.js +0 -174
- package/dist/edgelandes.virtual.d.ts +0 -25
- package/dist/edgelandes.virtual.js +0 -629
- package/dist/edgeplane.d.ts +0 -114
- package/dist/edgeplane.js +0 -305
- package/dist/examplelocaljob.d.ts +0 -1
- package/dist/examplelocaljob.js +0 -14
- package/dist/execution.d.ts +0 -529
- package/dist/execution.js +0 -760
- package/dist/family.d.ts +0 -16
- package/dist/family.js +0 -42
- package/dist/familyurl.d.ts +0 -21
- package/dist/familyurl.js +0 -24
- package/dist/format.d.ts +0 -18
- package/dist/format.js +0 -59
- package/dist/foundation.d.ts +0 -172
- package/dist/foundation.js +0 -312
- package/dist/index.d.ts +0 -735
- package/dist/index.js +0 -1020
- package/dist/integration.d.ts +0 -235
- package/dist/integration.js +0 -228
- package/dist/intelligence.d.ts +0 -93
- package/dist/intelligence.js +0 -144
- package/dist/isolation.d.ts +0 -128
- package/dist/isolation.js +0 -95
- package/dist/labels.d.ts +0 -665
- package/dist/labels.js +0 -751
- package/dist/localauth.d.ts +0 -127
- package/dist/localauth.js +0 -413
- package/dist/media.d.ts +0 -343
- package/dist/media.js +0 -985
- package/dist/mesh.d.ts +0 -177
- package/dist/mesh.js +0 -468
- package/dist/modalityregistry.d.ts +0 -109
- package/dist/modalityregistry.js +0 -1386
- package/dist/modes.d.ts +0 -358
- package/dist/modes.js +0 -133
- package/dist/onboardingstate.d.ts +0 -79
- package/dist/onboardingstate.js +0 -282
- package/dist/orchestrator.d.ts +0 -1338
- package/dist/orchestrator.js +0 -4310
- package/dist/packager/targetcli.js +0 -4
- package/dist/paths.d.ts +0 -2
- package/dist/paths.js +0 -14
- package/dist/performance.d.ts +0 -415
- package/dist/performance.js +0 -826
- package/dist/quantum.d.ts +0 -809
- package/dist/quantum.js +0 -2072
- package/dist/render.d.ts +0 -380
- package/dist/render.js +0 -1072
- package/dist/runall.d.ts +0 -2
- package/dist/runall.js +0 -39
- package/dist/runtimeprobe.d.ts +0 -4
- package/dist/runtimeprobe.js +0 -8
- package/dist/sandbox.d.ts +0 -355
- package/dist/sandbox.js +0 -1721
- package/dist/sandboxenvprofile.d.ts +0 -29
- package/dist/sandboxenvprofile.js +0 -89
- package/dist/sandboxprofile.d.ts +0 -137
- package/dist/sandboxprofile.js +0 -241
- package/dist/sandboxqueue.d.ts +0 -108
- package/dist/sandboxqueue.js +0 -201
- package/dist/sandboxquota.d.ts +0 -121
- package/dist/sandboxquota.js +0 -236
- package/dist/scheduler.d.ts +0 -595
- package/dist/scheduler.js +0 -1258
- package/dist/scriptlanes.d.ts +0 -182
- package/dist/scriptlanes.js +0 -660
- package/dist/scripts.buildengine.d.ts +0 -1
- package/dist/scripts.buildengine.js +0 -39
- package/dist/scripts.securitygate.d.ts +0 -1
- package/dist/scripts.securitygate.js +0 -68
- package/dist/scripts.validateflatnative.d.ts +0 -1
- package/dist/scripts.validateflatnative.js +0 -72
- package/dist/security.d.ts +0 -500
- package/dist/security.js +0 -1169
- package/dist/seedcatalog.d.ts +0 -13
- package/dist/seedcatalog.js +0 -46
- package/dist/server.d.ts +0 -20
- package/dist/server.js +0 -53
- package/dist/speccatalog.d.ts +0 -31
- package/dist/speccatalog.js +0 -163
- package/dist/tiers.d.ts +0 -1001
- package/dist/tiers.js +0 -2169
- package/dist/utils.d.ts +0 -2
- package/dist/utils.js +0 -5
- package/dist/vaulthandoff.d.ts +0 -141
- package/dist/vaulthandoff.js +0 -444
- package/dist/virtual.d.ts +0 -640
- package/dist/virtual.js +0 -1284
- package/dist/virtualcpu.d.ts +0 -315
- package/dist/virtualcpu.js +0 -1180
- package/dist/virtualgpu.d.ts +0 -344
- package/dist/virtualgpu.js +0 -1000
- package/dist/virtualization.d.ts +0 -606
- package/dist/virtualization.js +0 -1186
- package/dist/virtualmemory.d.ts +0 -817
- package/dist/virtualmemory.js +0 -1795
- package/dist/vite.config.d.ts +0 -3
- package/dist/vite.config.js +0 -43
- package/dist/vitest.config.d.ts +0 -2
- package/dist/vitest.config.js +0 -25
- package/dist/webserver.d.ts +0 -166
- package/dist/webserver.js +0 -2226
- package/dist/workloadlaw.d.ts +0 -133
- package/dist/workloadlaw.js +0 -193
- package/manifest.json +0 -20
- package/media.ts +0 -1337
- /package/docs/{architecture.1.8.19.md → architecture1819.md} +0 -0
- /package/docs/{architecture.1.8.19.mmd → architecture1819.mmd} +0 -0
- /package/docs/{artifactresearch.1.8.9.md → artifactresearch189.md} +0 -0
- /package/docs/{batches.1816.to.1820.md → batches1816to1820.md} +0 -0
- /package/docs/{brancharchive.2026.08.18.md → brancharchive20260818.md} +0 -0
- /package/docs/{containerplatforms.1.8.17.md → containerplatforms1817.md} +0 -0
- /package/docs/{e2ugh.engine.md → e2ughengine.md} +0 -0
- /package/docs/{flatbuildresearch.1.8.11.md → flatbuildresearch1811.md} +0 -0
- /package/docs/{licenseaudit.1.8.12.md → licenseaudit1812.md} +0 -0
- /package/docs/{mobileconversionresearch.1.8.10.md → mobileconversionresearch1810.md} +0 -0
- /package/docs/{nativeidentityresearch.1.8.11.md → nativeidentityresearch1811.md} +0 -0
- /package/docs/{native.wrappers.md → nativewrappers.md} +0 -0
- /package/docs/{planning.1.8.18.md → planning1818.md} +0 -0
- /package/docs/{planning.1.8.19.md → planning1819.md} +0 -0
- /package/docs/{planning.engine.md → planningengine.md} +0 -0
- /package/docs/{releasenotes.1.8.12.md → releasenotes1812.md} +0 -0
- /package/docs/{releasenotes.1.8.15.md → releasenotes1815.md} +0 -0
- /package/docs/{releasenotes.1.8.16.md → releasenotes1816.md} +0 -0
- /package/docs/{releasenotes.1.8.17.md → releasenotes1817.md} +0 -0
- /package/docs/{releasenotes.1.8.18.md → releasenotes1818.md} +0 -0
- /package/docs/{releasenotes.1.8.19.md → releasenotes1819.md} +0 -0
- /package/docs/{reorganization.1.8.8.md → reorganization188.md} +0 -0
- /package/docs/{reorganization.1.8.9.md → reorganization189.md} +0 -0
- /package/docs/{repo.analysis.1.8.21.json → repoanalysis1821.json} +0 -0
- /package/docs/{repo.candidates.1.8.21.jsonl → repocandidates1821.jsonl} +0 -0
- /package/docs/{repo.research.1.8.16.md → reporesearch1816.md} +0 -0
- /package/docs/{repo.research.1.8.21.md → reporesearch1821.md} +0 -0
- /package/docs/{repo.selected.1.8.21.json → reposelected1821.json} +0 -0
- /package/docs/{repo.synthesis.1.8.21.md → reposynthesis1821.md} +0 -0
- /package/docs/{research.1.8.18.isolation.md → research1818isolation.md} +0 -0
- /package/docs/{research.1.8.19.virtual.browser.md → research1819virtualbrowser.md} +0 -0
- /package/docs/{scanningresearch.1.8.11.md → scanningresearch1811.md} +0 -0
- /package/docs/{securityaudit.1.8.7.md → securityaudit187.md} +0 -0
- /package/docs/{securityreferences.1.8.11.md → securityreferences1811.md} +0 -0
- /package/docs/{securityresearch.1.8.11.md → securityresearch1811.md} +0 -0
- /package/docs/{signingresearch.1.8.12.md → signingresearch1812.md} +0 -0
- /package/docs/{tauri.glib.risk.1.8.11.md → tauriglibrisk1811.md} +0 -0
- /package/docs/{todo.1.8.18.md → todo1818.md} +0 -0
- /package/docs/{todo.1.8.19.md → todo1819.md} +0 -0
- /package/docs/{toolchainresearch.1.8.9.md → toolchainresearch189.md} +0 -0
- /package/docs/{web.duplicatecleanup.md → webduplicatecleanup.md} +0 -0
- /package/docs/{web.ideas.md → webideas.md} +0 -0
- /package/docs/{workflowimprovements.2026.08.19.md → workflowimprovements20260819.md} +0 -0
package/dist/vite.config.d.ts
DELETED
|
@@ -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;
|
package/dist/vite.config.js
DELETED
|
@@ -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
|
-
});
|
package/dist/vitest.config.d.ts
DELETED
package/dist/vitest.config.js
DELETED
|
@@ -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
|
-
});
|
package/dist/webserver.d.ts
DELETED
|
@@ -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 };
|