@wenathlan/saddle 2.0.161 → 2.0.163
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 +189 -43
- package/README.md +1 -1
- package/biome.jsonc +0 -0
- package/distribution.ts +16 -3
- package/docs/acceptableusepolicy.md +9 -0
- package/docs/authors.md +16 -0
- package/docs/bugreport.md +16 -0
- package/docs/cla.md +9 -0
- package/docs/codeofconduct.md +9 -0
- package/docs/contributing.md +9 -0
- package/docs/copyright.md +7 -0
- package/docs/disclaimer.md +7 -0
- package/docs/eula.md +7 -0
- package/docs/exportcontrol.md +17 -0
- package/docs/features.md +0 -0
- package/docs/governance.md +9 -0
- package/docs/ninetymodalities.md +0 -0
- package/docs/notice.md +7 -0
- package/docs/planningengine.md +0 -0
- package/docs/planningninety.md +0 -0
- package/docs/privacypolicy.md +9 -0
- package/docs/pullrequesttemplate.md +13 -0
- package/docs/support.md +7 -0
- package/docs/termsandconditions.md +9 -0
- package/docs/termsofuse.md +9 -0
- package/docs/thirdpartynotices.md +19 -0
- package/docs/trademarkpolicy.md +7 -0
- package/docs/workloadlaw.md +0 -0
- package/modalityregistry.ts +190 -1383
- package/package.json +78 -78
- package/sandbox.ts +18 -12
- package/tsconfig.json +6 -6
- package/workloadlaw.ts +0 -0
package/package.json
CHANGED
|
@@ -1,50 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@wenathlan/saddle",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.163",
|
|
4
4
|
"description": "binary computing engine that turns distributed storage into a publishable working set carrying the merged virtual-hardware engine (the saddle + e2ugh grand merge)",
|
|
5
|
-
"type": "module",
|
|
6
|
-
"private": false,
|
|
7
|
-
"license": "GPL-3.0-only",
|
|
8
|
-
"author": "Wenathlan",
|
|
9
|
-
"sideEffects": false,
|
|
10
|
-
"main": "./index.ts",
|
|
11
|
-
"module": "./index.ts",
|
|
12
|
-
"browser": "./index.ts",
|
|
13
|
-
"types": "./index.ts",
|
|
14
|
-
"packageManager": "pnpm@12.3.4",
|
|
15
|
-
"publishConfig": {
|
|
16
|
-
"access": "public"
|
|
17
|
-
},
|
|
18
|
-
"overrides": {
|
|
19
|
-
"uuid": "^11.1.1",
|
|
20
|
-
"deepmerge-ts": "^8.0.0",
|
|
21
|
-
"esbuild": "^0.28.2",
|
|
22
|
-
"follow-redirects": "^1.16.2",
|
|
23
|
-
"minimatch": "^11.0.3",
|
|
24
|
-
"glob": "^14.0.3",
|
|
25
|
-
"mysql2": "^3.24.6",
|
|
26
|
-
"postcss-selector-parser": "^7.1.6",
|
|
27
|
-
"source-map-js": "1.2.2",
|
|
28
|
-
"proxy-addr": "2.0.8",
|
|
29
|
-
"body-parser": "^2.4.0",
|
|
30
|
-
"fast-uri": "^3.1.9",
|
|
31
|
-
"zod": "^4.6.7",
|
|
32
|
-
"undici": "^7.30.1",
|
|
33
|
-
"katex": "^0.18.2",
|
|
34
|
-
"shell-quote": "^1.11.0",
|
|
35
|
-
"xcode": {
|
|
36
|
-
"uuid": "11.1.1"
|
|
37
|
-
},
|
|
38
|
-
"@grpc/grpc-js": "1.14.5"
|
|
39
|
-
},
|
|
40
|
-
"repository": {
|
|
41
|
-
"type": "git",
|
|
42
|
-
"url": "https://github.com/wenathlan/devthink"
|
|
43
|
-
},
|
|
44
|
-
"bugs": {
|
|
45
|
-
"url": "https://github.com/wenathlan/saddle/issues"
|
|
46
|
-
},
|
|
47
|
-
"homepage": "https://github.com/wenathlan/saddle#readme",
|
|
48
5
|
"keywords": [
|
|
49
6
|
"distributed computing",
|
|
50
7
|
"virtual memory",
|
|
@@ -61,39 +18,20 @@
|
|
|
61
18
|
"mesa",
|
|
62
19
|
"ghcr"
|
|
63
20
|
],
|
|
64
|
-
"
|
|
65
|
-
|
|
66
|
-
"
|
|
67
|
-
"cargo": ">=1.85.0",
|
|
68
|
-
"chrome": "^16.0.912",
|
|
69
|
-
"cnpm": "^9.4.0",
|
|
70
|
-
"corepack": "^0.35.0",
|
|
71
|
-
"deno": "^2.9.5",
|
|
72
|
-
"dotnet": ">=8.0.0",
|
|
73
|
-
"ecmascript": "^5.0.0",
|
|
74
|
-
"firefox": ">=0.8.0",
|
|
75
|
-
"go": ">=1.24.0",
|
|
76
|
-
"iojs": "^1.0.0",
|
|
77
|
-
"java": ">=17",
|
|
78
|
-
"node": ">=26.13.0 <27",
|
|
79
|
-
"npm": "^12.2.1",
|
|
80
|
-
"pnpm": "^12.6.0",
|
|
81
|
-
"python": ">=3.11.0",
|
|
82
|
-
"rust": ">=1.85.0",
|
|
83
|
-
"teleport": ">=0.2.0",
|
|
84
|
-
"typescript": "^5.8.0",
|
|
85
|
-
"v": "^0.5.2",
|
|
86
|
-
"vscode": "^1.118.0",
|
|
87
|
-
"yarn": "^4.17.1"
|
|
88
|
-
},
|
|
89
|
-
"peerDependencies": {
|
|
90
|
-
"playwright": "^1.63.0"
|
|
21
|
+
"homepage": "https://github.com/wenathlan/saddle#readme",
|
|
22
|
+
"bugs": {
|
|
23
|
+
"url": "https://github.com/wenathlan/saddle/issues"
|
|
91
24
|
},
|
|
92
|
-
"
|
|
93
|
-
"
|
|
94
|
-
|
|
95
|
-
}
|
|
25
|
+
"repository": {
|
|
26
|
+
"type": "git",
|
|
27
|
+
"url": "https://github.com/wenathlan/devthink"
|
|
96
28
|
},
|
|
29
|
+
"license": "GPL-3.0-only",
|
|
30
|
+
"author": "Wenathlan",
|
|
31
|
+
"type": "module",
|
|
32
|
+
"sideEffects": false,
|
|
33
|
+
"main": "./index.ts",
|
|
34
|
+
"types": "./index.ts",
|
|
97
35
|
"bin": {
|
|
98
36
|
"saddle": "./cli.ts"
|
|
99
37
|
},
|
|
@@ -204,6 +142,34 @@
|
|
|
204
142
|
"tiers.ts",
|
|
205
143
|
"quantum.ts"
|
|
206
144
|
],
|
|
145
|
+
"engines": {
|
|
146
|
+
"bare": "^1.18.0",
|
|
147
|
+
"bun": "^1.4.4",
|
|
148
|
+
"cargo": ">=1.85.0",
|
|
149
|
+
"chrome": "^16.0.912",
|
|
150
|
+
"cnpm": "^9.4.0",
|
|
151
|
+
"corepack": "^0.35.0",
|
|
152
|
+
"deno": "^2.9.5",
|
|
153
|
+
"dotnet": ">=8.0.0",
|
|
154
|
+
"ecmascript": "^5.0.0",
|
|
155
|
+
"firefox": ">=0.8.0",
|
|
156
|
+
"go": ">=1.24.0",
|
|
157
|
+
"iojs": "^1.0.0",
|
|
158
|
+
"java": ">=17",
|
|
159
|
+
"node": ">=26.13.0 <27",
|
|
160
|
+
"npm": "^12.2.1",
|
|
161
|
+
"pnpm": "^12.6.0",
|
|
162
|
+
"python": ">=3.11.0",
|
|
163
|
+
"rust": ">=1.85.0",
|
|
164
|
+
"teleport": ">=0.2.0",
|
|
165
|
+
"typescript": "^5.8.0",
|
|
166
|
+
"v": "^0.5.2",
|
|
167
|
+
"vscode": "^1.118.0",
|
|
168
|
+
"yarn": "^4.17.1"
|
|
169
|
+
},
|
|
170
|
+
"peerDependencies": {
|
|
171
|
+
"playwright": "^1.63.0"
|
|
172
|
+
},
|
|
207
173
|
"scripts": {
|
|
208
174
|
"build:engine": "node scriptsbuildengine.ts",
|
|
209
175
|
"check": "tsc -p tsconfig.json --noEmit",
|
|
@@ -248,9 +214,9 @@
|
|
|
248
214
|
"vm:create": "node --import tsx ./cli.ts vm",
|
|
249
215
|
"vm:validate": "node --import tsx ./cli.ts vmlint",
|
|
250
216
|
"gpu:list": "node --import tsx ./cli.ts gpus",
|
|
251
|
-
"docker:build": "docker build -f Dockerfile -t saddle:2.0.
|
|
252
|
-
"docker:run": "docker run --rm --memory-swap=-1 --shm-size=2g saddle:2.0.
|
|
253
|
-
"docker:health": "docker run --rm saddle:2.0.
|
|
217
|
+
"docker:build": "docker build -f Dockerfile -t saddle:2.0.163 .",
|
|
218
|
+
"docker:run": "docker run --rm --memory-swap=-1 --shm-size=2g saddle:2.0.163",
|
|
219
|
+
"docker:health": "docker run --rm saddle:2.0.163 qemu-system-x86_64 --version && curl -fsS http://localhost:8080/health || true",
|
|
254
220
|
"firecracker:boot": "firecracker --api-sock /tmp/fc-saddle.sock --config-file vmconfig.json 2>/dev/null || echo 'firecracker 1.16.1 warm-pool boot 125ms target'",
|
|
255
221
|
"py:bridge": "python3 qemubridge.py",
|
|
256
222
|
"py:test": "python3 -m pytest -q || python3 qemubridge.py",
|
|
@@ -386,6 +352,40 @@
|
|
|
386
352
|
"yaml": "^2.9.1",
|
|
387
353
|
"zod": "^4.6.7"
|
|
388
354
|
},
|
|
355
|
+
"overrides": {
|
|
356
|
+
"uuid": "^11.1.1",
|
|
357
|
+
"deepmerge-ts": "^8.0.0",
|
|
358
|
+
"esbuild": "^0.28.2",
|
|
359
|
+
"follow-redirects": "^1.16.2",
|
|
360
|
+
"minimatch": "^11.0.3",
|
|
361
|
+
"glob": "^14.0.3",
|
|
362
|
+
"mysql2": "^3.24.6",
|
|
363
|
+
"postcss-selector-parser": "^7.1.6",
|
|
364
|
+
"source-map-js": "1.2.2",
|
|
365
|
+
"proxy-addr": "2.0.8",
|
|
366
|
+
"body-parser": "^2.4.0",
|
|
367
|
+
"fast-uri": "^3.1.9",
|
|
368
|
+
"zod": "^4.6.7",
|
|
369
|
+
"undici": "^7.30.1",
|
|
370
|
+
"katex": "^0.18.2",
|
|
371
|
+
"shell-quote": "^1.11.0",
|
|
372
|
+
"xcode": {
|
|
373
|
+
"uuid": "11.1.1"
|
|
374
|
+
},
|
|
375
|
+
"@grpc/grpc-js": "1.14.5"
|
|
376
|
+
},
|
|
377
|
+
"publishConfig": {
|
|
378
|
+
"access": "public"
|
|
379
|
+
},
|
|
380
|
+
"packageManager": "pnpm@12.3.4",
|
|
381
|
+
"private": false,
|
|
382
|
+
"module": "./index.ts",
|
|
383
|
+
"browser": "./index.ts",
|
|
384
|
+
"peerDependenciesMeta": {
|
|
385
|
+
"playwright": {
|
|
386
|
+
"optional": true
|
|
387
|
+
}
|
|
388
|
+
},
|
|
389
389
|
"optionalDependencies": {
|
|
390
390
|
"commander": "^15.0.0",
|
|
391
391
|
"dockerode": "^5.0.1",
|
package/sandbox.ts
CHANGED
|
@@ -142,11 +142,14 @@ export type SandboxState = {
|
|
|
142
142
|
};
|
|
143
143
|
|
|
144
144
|
/** command result matching the api exec contract; clear is set by the
|
|
145
|
-
* clear command so the terminal can wipe the screen.
|
|
145
|
+
* clear command so the terminal can wipe the screen. code carries the
|
|
146
|
+
* machine refusal code of a structured honest answer — the sandbox never
|
|
147
|
+
* pretends a binary the image does not carry. */
|
|
146
148
|
export type DispatchResult = {
|
|
147
149
|
output: string;
|
|
148
150
|
exitCode: number;
|
|
149
151
|
clear?: boolean;
|
|
152
|
+
code?: string;
|
|
150
153
|
};
|
|
151
154
|
|
|
152
155
|
/** optional exec context provided by the api host. */
|
|
@@ -1379,7 +1382,7 @@ export function bootSequence(
|
|
|
1379
1382
|
`${stamp(onlinetime + 0.0837)} rusticl: opencl ${mesastack.opencl} on llvmpipe, features fp64 (fp16 default since 25.2)`,
|
|
1380
1383
|
`${stamp(onlinetime + 0.091)} virtualgpu: identity ${gpuspec.name} [${gpuspec.pcivendor}:${gpuspec.pcidevice}] ${gpuspec.memtype} ${gpuspec.vrammib / 1024} GB`,
|
|
1381
1384
|
`${stamp(onlinetime + 0.0922)} nvml shim: FAKE_MODEL="${gpuspec.name}" FAKE_VRAM=${gpuspec.smireportedmib} (fake-nvidia-smi adapter ready)`,
|
|
1382
|
-
`${stamp(onlinetime + 0.1045)} saddle: virtual hardware engine v2.0.
|
|
1385
|
+
`${stamp(onlinetime + 0.1045)} saddle: virtual hardware engine v2.0.162, sandbox created -> running`,
|
|
1383
1386
|
`${stamp(onlinetime + 0.1047)} saddle: persistent workspace: ${humanbytes(quota)} quota, data stays with the sandbox id`,
|
|
1384
1387
|
`${stamp(onlinetime + 0.1046)} Freeing unused kernel image memory`,
|
|
1385
1388
|
];
|
|
@@ -1452,8 +1455,8 @@ function helpText(): string {
|
|
|
1452
1455
|
['uname -a', 'kernel and architecture line'],
|
|
1453
1456
|
['ls /etc/virtual', 'virtual hardware definition files'],
|
|
1454
1457
|
['env', 'mesa llvmpipe environment variables'],
|
|
1455
|
-
['docker --version', '
|
|
1456
|
-
['qemu-system-x86_64 --version', '
|
|
1458
|
+
['docker --version', 'honest refusal: the binary is absent from the sandbox image'],
|
|
1459
|
+
['qemu-system-x86_64 --version', 'honest refusal: the binary is absent from the sandbox image'],
|
|
1457
1460
|
['uptime', 'sandbox uptime and load average'],
|
|
1458
1461
|
['whoami', 'current user'],
|
|
1459
1462
|
['neofetch', 'saddle ascii logo and sandbox specs'],
|
|
@@ -1497,7 +1500,7 @@ function neofetch(state: SandboxState): string {
|
|
|
1497
1500
|
const info = [
|
|
1498
1501
|
`root@${state.hostname}`,
|
|
1499
1502
|
'-----------------',
|
|
1500
|
-
'OS: saddle linux (virtual hardware engine v2.0.
|
|
1503
|
+
'OS: saddle linux (virtual hardware engine v2.0.162)',
|
|
1501
1504
|
'Host: firecracker microvm (125 ms boot)',
|
|
1502
1505
|
`Kernel: ${state.kernel}`,
|
|
1503
1506
|
`Uptime: ${uptimeText}`,
|
|
@@ -1534,7 +1537,7 @@ function envText(state: SandboxState): string {
|
|
|
1534
1537
|
...mesaenv(state.vcpus),
|
|
1535
1538
|
FAKE_MODEL: state.gpuspec.name,
|
|
1536
1539
|
FAKE_VRAM: String(mig !== null ? mig.slicegb * 1024 : state.gpuspec.smireportedmib),
|
|
1537
|
-
SADDLE_VERSION: '2.0.
|
|
1540
|
+
SADDLE_VERSION: '2.0.162',
|
|
1538
1541
|
SADDLE_SANDBOX: state.id,
|
|
1539
1542
|
SADDLE_STATE: 'running',
|
|
1540
1543
|
SADDLE_CPU: state.model,
|
|
@@ -1826,15 +1829,18 @@ export function dispatch(
|
|
|
1826
1829
|
}
|
|
1827
1830
|
case 'env':
|
|
1828
1831
|
return { output: envText(state), exitCode: 0 };
|
|
1832
|
+
/* the honesty law: the sandbox image carries no container daemon
|
|
1833
|
+
* and no emulator binary, so the shell never fakes a version
|
|
1834
|
+
* banner — the answer is the structured honest refusal, the
|
|
1835
|
+
* machine code rides the result and the message names the absence
|
|
1836
|
+
* and the real surface (the host container and qemu runtimes ride
|
|
1837
|
+
* the edge plane lanes, never a pretended guest binary). */
|
|
1829
1838
|
case 'docker':
|
|
1830
|
-
return { output: 'Docker version 29.7.2, build 5ea4c1f', exitCode: 0 };
|
|
1831
1839
|
case 'qemu-system-x86_64':
|
|
1832
1840
|
return {
|
|
1833
|
-
output:
|
|
1834
|
-
|
|
1835
|
-
|
|
1836
|
-
].join('\n'),
|
|
1837
|
-
exitCode: 0,
|
|
1841
|
+
output: `bash: ${head}: the ${head} binary is absent from this sandbox image (SANDBOX_IMAGE_ABSENT) — the sandbox mounts no container daemon and no emulator, the engine drives the host container and qemu lanes through the edge plane`,
|
|
1842
|
+
exitCode: 127,
|
|
1843
|
+
code: 'SANDBOX_IMAGE_ABSENT',
|
|
1838
1844
|
};
|
|
1839
1845
|
case 'uptime':
|
|
1840
1846
|
return { output: uptimeLine(state), exitCode: 0 };
|
package/tsconfig.json
CHANGED
|
@@ -8,20 +8,20 @@
|
|
|
8
8
|
// one project keeps covering the Sol surface.
|
|
9
9
|
{
|
|
10
10
|
"compilerOptions": {
|
|
11
|
-
"module": "NodeNext",
|
|
12
|
-
"moduleResolution": "NodeNext",
|
|
13
11
|
"target": "ES2024",
|
|
14
|
-
"lib": ["ES2024", "dom", "dom.iterable"],
|
|
15
|
-
"jsx": "react-jsx",
|
|
16
12
|
"noEmit": true,
|
|
17
|
-
"
|
|
13
|
+
"module": "NodeNext",
|
|
18
14
|
"strict": false,
|
|
19
15
|
"noCheck": true,
|
|
16
|
+
"lib": ["es2024", "dom", "dom.iterable"],
|
|
17
|
+
"jsx": "react-jsx",
|
|
20
18
|
"esModuleInterop": true,
|
|
19
|
+
"allowSyntheticDefaultImports": true,
|
|
21
20
|
"skipLibCheck": true,
|
|
21
|
+
"allowImportingTsExtensions": true,
|
|
22
22
|
"isolatedModules": true,
|
|
23
|
-
"allowSyntheticDefaultImports": true,
|
|
24
23
|
"forceConsistentCasingInFileNames": true,
|
|
24
|
+
"moduleResolution": "NodeNext",
|
|
25
25
|
"types": ["node", "vite/client"],
|
|
26
26
|
"paths": {
|
|
27
27
|
"@/*": ["./sol/*", "./*"],
|
package/workloadlaw.ts
CHANGED
|
File without changes
|