@axiom-lattice/microsandbox-service 0.0.1 → 0.0.3

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 (44) hide show
  1. package/.turbo/turbo-build.log +24 -16
  2. package/CHANGELOG.md +12 -0
  3. package/README.md +130 -0
  4. package/dist/chunk-KRXZP6OH.mjs +76 -0
  5. package/dist/chunk-KRXZP6OH.mjs.map +1 -0
  6. package/dist/{chunk-2W4CTYPX.mjs → chunk-VM3OJT5V.mjs} +267 -51
  7. package/dist/chunk-VM3OJT5V.mjs.map +1 -0
  8. package/dist/cli.d.mts +1 -0
  9. package/dist/cli.d.ts +1 -0
  10. package/dist/cli.js +773 -0
  11. package/dist/cli.js.map +1 -0
  12. package/dist/cli.mjs +12 -0
  13. package/dist/cli.mjs.map +1 -0
  14. package/dist/index.d.mts +172 -18
  15. package/dist/index.d.ts +172 -18
  16. package/dist/index.js +264 -42
  17. package/dist/index.js.map +1 -1
  18. package/dist/index.mjs +1 -1
  19. package/dist/server.js +264 -48
  20. package/dist/server.js.map +1 -1
  21. package/dist/server.mjs +3 -77
  22. package/dist/server.mjs.map +1 -1
  23. package/package.json +10 -5
  24. package/src/__tests__/ImageService.test.ts +50 -0
  25. package/src/__tests__/MicrosandboxRuntimeService.test.ts +138 -6
  26. package/src/__tests__/SandboxMetadataStore.test.ts +87 -0
  27. package/src/__tests__/SandboxRegistry.test.ts +17 -1
  28. package/src/__tests__/app.test.ts +174 -0
  29. package/src/__tests__/index.test.ts +4 -3
  30. package/src/__tests__/server-cli.test.ts +61 -0
  31. package/src/app.ts +5 -0
  32. package/src/cli.ts +8 -0
  33. package/src/controllers/images.ts +38 -0
  34. package/src/controllers/sandbox.ts +27 -0
  35. package/src/routes/images.ts +12 -0
  36. package/src/routes/sandbox.ts +2 -0
  37. package/src/schemas/images.ts +12 -0
  38. package/src/schemas/sandbox.ts +11 -0
  39. package/src/server.ts +0 -7
  40. package/src/services/ImageService.ts +54 -0
  41. package/src/services/MicrosandboxRuntimeService.ts +109 -7
  42. package/src/services/SandboxMetadataStore.ts +97 -0
  43. package/src/types/runtime-service.ts +40 -17
  44. package/dist/chunk-2W4CTYPX.mjs.map +0 -1
@@ -1,29 +1,37 @@
1
1
 
2
- > @axiom-lattice/microsandbox-service@0.0.1 build /home/runner/work/agentic/agentic/packages/microsandbox-service
3
- > tsup src/index.ts src/server.ts --format cjs,esm --dts --clean --sourcemap
2
+ > @axiom-lattice/microsandbox-service@0.0.3 build /home/runner/work/agentic/agentic/packages/microsandbox-service
3
+ > tsup src/index.ts src/server.ts src/cli.ts --format cjs,esm --dts --clean --sourcemap
4
4
 
5
- CLI Building entry: src/index.ts, src/server.ts
5
+ CLI Building entry: src/cli.ts, src/index.ts, src/server.ts
6
6
  CLI Using tsconfig: tsconfig.json
7
7
  CLI tsup v8.5.0
8
8
  CLI Target: es2020
9
9
  CLI Cleaning output folder
10
10
  CJS Build start
11
11
  ESM Build start
12
+ CJS dist/cli.js 25.40 KB
13
+ CJS dist/index.js 24.26 KB
14
+ CJS dist/server.js 25.71 KB
15
+ CJS dist/cli.js.map 53.23 KB
16
+ CJS dist/index.js.map 49.47 KB
17
+ CJS dist/server.js.map 52.95 KB
18
+ CJS ⚡️ Build success in 174ms
19
+ ESM dist/cli.mjs 277.00 B
12
20
  ESM dist/index.mjs 206.00 B
13
- ESM dist/server.mjs 1.88 KB
14
- ESM dist/chunk-2W4CTYPX.mjs 14.49 KB
21
+ ESM dist/server.mjs 146.00 B
22
+ ESM dist/chunk-KRXZP6OH.mjs 1.71 KB
23
+ ESM dist/chunk-VM3OJT5V.mjs 21.33 KB
24
+ ESM dist/cli.mjs.map 389.00 B
15
25
  ESM dist/index.mjs.map 71.00 B
16
- ESM dist/server.mjs.map 4.06 KB
17
- ESM dist/chunk-2W4CTYPX.mjs.map 31.65 KB
18
- ESM ⚡️ Build success in 138ms
19
- CJS dist/index.js 16.81 KB
20
- CJS dist/server.js 18.43 KB
21
- CJS dist/index.js.map 32.19 KB
22
- CJS dist/server.js.map 35.96 KB
23
- CJS ⚡️ Build success in 139ms
26
+ ESM dist/server.mjs.map 71.00 B
27
+ ESM dist/chunk-KRXZP6OH.mjs.map 3.76 KB
28
+ ESM dist/chunk-VM3OJT5V.mjs.map 48.91 KB
29
+ ESM ⚡️ Build success in 177ms
24
30
  DTS Build start
25
- DTS ⚡️ Build success in 15934ms
26
- DTS dist/index.d.ts 6.30 KB
31
+ DTS ⚡️ Build success in 21471ms
32
+ DTS dist/cli.d.ts 20.00 B
27
33
  DTS dist/server.d.ts 281.00 B
28
- DTS dist/index.d.mts 6.30 KB
34
+ DTS dist/index.d.ts 10.21 KB
35
+ DTS dist/cli.d.mts 20.00 B
29
36
  DTS dist/server.d.mts 281.00 B
37
+ DTS dist/index.d.mts 10.21 KB
package/CHANGELOG.md CHANGED
@@ -1,5 +1,17 @@
1
1
  # @axiom-lattice/microsandbox-service
2
2
 
3
+ ## 0.0.3
4
+
5
+ ### Patch Changes
6
+
7
+ - fb974b7: fix sandbox service
8
+
9
+ ## 0.0.2
10
+
11
+ ### Patch Changes
12
+
13
+ - 15808cd: update sandbox console
14
+
3
15
  ## 0.0.1
4
16
 
5
17
  ### Patch Changes
package/README.md ADDED
@@ -0,0 +1,130 @@
1
+ # @axiom-lattice/microsandbox-service
2
+
3
+ `@axiom-lattice/microsandbox-service` runs an HTTP service for managing microsandbox-backed sandbox lifecycle operations.
4
+
5
+ This package is intended to be deployed as a long-running process. Its primary runtime entrypoint is the `lattice-microsandbox-service` CLI.
6
+
7
+ ## Install and Build
8
+
9
+ Build the package from the monorepo root:
10
+
11
+ ```bash
12
+ pnpm --filter @axiom-lattice/microsandbox-service build
13
+ ```
14
+
15
+ After building, you can start the service through the package CLI or the package `start` script.
16
+
17
+ ## CLI Usage
18
+
19
+ The package exposes this executable:
20
+
21
+ ```bash
22
+ lattice-microsandbox-service
23
+ ```
24
+
25
+ Supported flags:
26
+
27
+ - `--host <string>`
28
+ - `--port <number>`
29
+
30
+ Example:
31
+
32
+ ```bash
33
+ lattice-microsandbox-service --host 0.0.0.0 --port 4002
34
+ ```
35
+
36
+ ## Configuration
37
+
38
+ Runtime configuration is resolved in this order:
39
+
40
+ 1. CLI arguments
41
+ 2. Environment variables
42
+ 3. Defaults
43
+
44
+ Supported environment variables:
45
+
46
+ - `HOST` default: `0.0.0.0`
47
+ - `PORT` default: `4002`
48
+
49
+ Example:
50
+
51
+ ```bash
52
+ HOST=0.0.0.0 PORT=4002 lattice-microsandbox-service
53
+ ```
54
+
55
+ ## Startup Examples
56
+
57
+ Start with CLI flags:
58
+
59
+ ```bash
60
+ lattice-microsandbox-service --host 127.0.0.1 --port 4002
61
+ ```
62
+
63
+ Start with environment variables:
64
+
65
+ ```bash
66
+ HOST=127.0.0.1 PORT=4002 lattice-microsandbox-service
67
+ ```
68
+
69
+ Start through the package script:
70
+
71
+ ```bash
72
+ pnpm --filter @axiom-lattice/microsandbox-service start
73
+ ```
74
+
75
+ Check service health:
76
+
77
+ ```bash
78
+ curl http://127.0.0.1:4002/health
79
+ ```
80
+
81
+ ## Process Manager Examples
82
+
83
+ ### systemd
84
+
85
+ ```ini
86
+ [Unit]
87
+ Description=Axiom Lattice Microsandbox Service
88
+ After=network.target
89
+
90
+ [Service]
91
+ ExecStart=/usr/local/bin/lattice-microsandbox-service --host 0.0.0.0 --port 4002
92
+ Restart=on-failure
93
+ Environment=HOST=0.0.0.0
94
+ Environment=PORT=4002
95
+
96
+ [Install]
97
+ WantedBy=multi-user.target
98
+ ```
99
+
100
+ ### supervisor
101
+
102
+ ```ini
103
+ [program:microsandbox-service]
104
+ command=/usr/local/bin/lattice-microsandbox-service --host 0.0.0.0 --port 4002
105
+ autostart=true
106
+ autorestart=true
107
+ environment=HOST="0.0.0.0",PORT="4002"
108
+ ```
109
+
110
+ ### docker
111
+
112
+ ```dockerfile
113
+ CMD ["lattice-microsandbox-service", "--host", "0.0.0.0", "--port", "4002"]
114
+ ```
115
+
116
+ ## Local Development
117
+
118
+ Run the package in watch mode from the monorepo root:
119
+
120
+ ```bash
121
+ pnpm --filter @axiom-lattice/microsandbox-service dev
122
+ ```
123
+
124
+ This command watches source files, rebuilds the package, and restarts the service automatically.
125
+
126
+ ## Operational Notes
127
+
128
+ - Invalid startup configuration exits non-zero.
129
+ - Startup failures exit non-zero.
130
+ - `SIGINT` and `SIGTERM` trigger graceful shutdown.
@@ -0,0 +1,76 @@
1
+ import {
2
+ buildApp
3
+ } from "./chunk-VM3OJT5V.mjs";
4
+
5
+ // src/lib/server-cli.ts
6
+ function parsePort(raw, source) {
7
+ const value = Number(raw);
8
+ if (!Number.isInteger(value) || value <= 0) {
9
+ throw new Error(`Invalid value for ${source}: ${raw}`);
10
+ }
11
+ return value;
12
+ }
13
+ function parseServerArgs(argv) {
14
+ const parsed = {};
15
+ for (let index = 0; index < argv.length; index += 1) {
16
+ const token = argv[index];
17
+ if (token === "--port") {
18
+ const raw = argv[index + 1];
19
+ if (!raw) {
20
+ throw new Error("Missing value for --port");
21
+ }
22
+ parsed.port = parsePort(raw, "--port");
23
+ index += 1;
24
+ continue;
25
+ }
26
+ if (token === "--host") {
27
+ const raw = argv[index + 1];
28
+ if (!raw) {
29
+ throw new Error("Missing value for --host");
30
+ }
31
+ parsed.host = raw;
32
+ index += 1;
33
+ }
34
+ }
35
+ return parsed;
36
+ }
37
+ function resolveServerConfig({
38
+ args,
39
+ env
40
+ }) {
41
+ return {
42
+ host: args.host ?? env.HOST ?? "0.0.0.0",
43
+ port: args.port ?? (env.PORT ? parsePort(env.PORT, "PORT") : 4002)
44
+ };
45
+ }
46
+
47
+ // src/server.ts
48
+ async function startServer({
49
+ argv = process.argv.slice(2),
50
+ env = process.env,
51
+ app = buildApp()
52
+ } = {}) {
53
+ const config = resolveServerConfig({ args: parseServerArgs(argv), env });
54
+ const shutdown = async (code) => {
55
+ try {
56
+ await app.close();
57
+ process.exit(code);
58
+ } catch (error) {
59
+ console.error("Failed to shutdown microsandbox-service cleanly", error);
60
+ process.exit(1);
61
+ }
62
+ };
63
+ process.once("SIGINT", () => {
64
+ void shutdown(0);
65
+ });
66
+ process.once("SIGTERM", () => {
67
+ void shutdown(0);
68
+ });
69
+ await app.listen({ port: config.port, host: config.host });
70
+ return app;
71
+ }
72
+
73
+ export {
74
+ startServer
75
+ };
76
+ //# sourceMappingURL=chunk-KRXZP6OH.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/lib/server-cli.ts","../src/server.ts"],"sourcesContent":["export interface ParsedServerArgs {\n host?: string;\n port?: number;\n}\n\nexport interface ResolvedServerConfig {\n host: string;\n port: number;\n}\n\nfunction parsePort(raw: string, source: string): number {\n const value = Number(raw);\n if (!Number.isInteger(value) || value <= 0) {\n throw new Error(`Invalid value for ${source}: ${raw}`);\n }\n return value;\n}\n\nexport function parseServerArgs(argv: string[]): ParsedServerArgs {\n const parsed: ParsedServerArgs = {};\n\n for (let index = 0; index < argv.length; index += 1) {\n const token = argv[index];\n\n if (token === \"--port\") {\n const raw = argv[index + 1];\n if (!raw) {\n throw new Error(\"Missing value for --port\");\n }\n parsed.port = parsePort(raw, \"--port\");\n index += 1;\n continue;\n }\n\n if (token === \"--host\") {\n const raw = argv[index + 1];\n if (!raw) {\n throw new Error(\"Missing value for --host\");\n }\n parsed.host = raw;\n index += 1;\n }\n }\n\n return parsed;\n}\n\nexport function resolveServerConfig({\n args,\n env,\n}: {\n args: ParsedServerArgs;\n env: NodeJS.ProcessEnv;\n}): ResolvedServerConfig {\n return {\n host: args.host ?? env.HOST ?? \"0.0.0.0\",\n port: args.port ?? (env.PORT ? parsePort(env.PORT, \"PORT\") : 4002),\n };\n}\n","import type { FastifyInstance } from \"fastify\";\nimport { buildApp } from \"./app\";\nimport { parseServerArgs, resolveServerConfig } from \"./lib/server-cli\";\n\nexport async function startServer({\n argv = process.argv.slice(2),\n env = process.env,\n app = buildApp(),\n}: {\n argv?: string[];\n env?: NodeJS.ProcessEnv;\n app?: Pick<FastifyInstance, \"listen\" | \"close\">;\n} = {}): Promise<Pick<FastifyInstance, \"listen\" | \"close\">> {\n const config = resolveServerConfig({ args: parseServerArgs(argv), env });\n\n const shutdown = async (code: number): Promise<void> => {\n try {\n await app.close();\n process.exit(code);\n } catch (error) {\n console.error(\"Failed to shutdown microsandbox-service cleanly\", error);\n process.exit(1);\n }\n };\n\n process.once(\"SIGINT\", () => {\n void shutdown(0);\n });\n\n process.once(\"SIGTERM\", () => {\n void shutdown(0);\n });\n\n await app.listen({ port: config.port, host: config.host });\n return app;\n}\n"],"mappings":";;;;;AAUA,SAAS,UAAU,KAAa,QAAwB;AACtD,QAAM,QAAQ,OAAO,GAAG;AACxB,MAAI,CAAC,OAAO,UAAU,KAAK,KAAK,SAAS,GAAG;AAC1C,UAAM,IAAI,MAAM,qBAAqB,MAAM,KAAK,GAAG,EAAE;AAAA,EACvD;AACA,SAAO;AACT;AAEO,SAAS,gBAAgB,MAAkC;AAChE,QAAM,SAA2B,CAAC;AAElC,WAAS,QAAQ,GAAG,QAAQ,KAAK,QAAQ,SAAS,GAAG;AACnD,UAAM,QAAQ,KAAK,KAAK;AAExB,QAAI,UAAU,UAAU;AACtB,YAAM,MAAM,KAAK,QAAQ,CAAC;AAC1B,UAAI,CAAC,KAAK;AACR,cAAM,IAAI,MAAM,0BAA0B;AAAA,MAC5C;AACA,aAAO,OAAO,UAAU,KAAK,QAAQ;AACrC,eAAS;AACT;AAAA,IACF;AAEA,QAAI,UAAU,UAAU;AACtB,YAAM,MAAM,KAAK,QAAQ,CAAC;AAC1B,UAAI,CAAC,KAAK;AACR,cAAM,IAAI,MAAM,0BAA0B;AAAA,MAC5C;AACA,aAAO,OAAO;AACd,eAAS;AAAA,IACX;AAAA,EACF;AAEA,SAAO;AACT;AAEO,SAAS,oBAAoB;AAAA,EAClC;AAAA,EACA;AACF,GAGyB;AACvB,SAAO;AAAA,IACL,MAAM,KAAK,QAAQ,IAAI,QAAQ;AAAA,IAC/B,MAAM,KAAK,SAAS,IAAI,OAAO,UAAU,IAAI,MAAM,MAAM,IAAI;AAAA,EAC/D;AACF;;;ACtDA,eAAsB,YAAY;AAAA,EAChC,OAAO,QAAQ,KAAK,MAAM,CAAC;AAAA,EAC3B,MAAM,QAAQ;AAAA,EACd,MAAM,SAAS;AACjB,IAII,CAAC,GAAuD;AAC1D,QAAM,SAAS,oBAAoB,EAAE,MAAM,gBAAgB,IAAI,GAAG,IAAI,CAAC;AAEvE,QAAM,WAAW,OAAO,SAAgC;AACtD,QAAI;AACF,YAAM,IAAI,MAAM;AAChB,cAAQ,KAAK,IAAI;AAAA,IACnB,SAAS,OAAO;AACd,cAAQ,MAAM,mDAAmD,KAAK;AACtE,cAAQ,KAAK,CAAC;AAAA,IAChB;AAAA,EACF;AAEA,UAAQ,KAAK,UAAU,MAAM;AAC3B,SAAK,SAAS,CAAC;AAAA,EACjB,CAAC;AAED,UAAQ,KAAK,WAAW,MAAM;AAC5B,SAAK,SAAS,CAAC;AAAA,EACjB,CAAC;AAED,QAAM,IAAI,OAAO,EAAE,MAAM,OAAO,MAAM,MAAM,OAAO,KAAK,CAAC;AACzD,SAAO;AACT;","names":[]}