@ekairos/sandbox 1.22.36-beta.development.0 → 1.22.37-beta.development.0

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.
@@ -0,0 +1,173 @@
1
+ import { type DomainSchemaResult } from "@ekairos/domain";
2
+ import type { CommandResult } from "./commands.js";
3
+ import type { SandboxConfig } from "./types.js";
4
+ type ServiceResult<T = unknown> = {
5
+ ok: true;
6
+ data: T;
7
+ } | {
8
+ ok: false;
9
+ error: string;
10
+ };
11
+ type SandboxRuntime = {
12
+ use: (domain: unknown) => Promise<{
13
+ db: unknown;
14
+ }>;
15
+ };
16
+ type SandboxRunCommandInput = {
17
+ sandboxId: string;
18
+ command: string;
19
+ args?: string[];
20
+ };
21
+ type SandboxFileInput = {
22
+ path: string;
23
+ contentBase64: string;
24
+ };
25
+ type SandboxRunCommandProcessInput = SandboxRunCommandInput & {
26
+ cwd?: string;
27
+ env?: Record<string, unknown>;
28
+ kind?: "command" | "service" | "codex-app-server" | "dev-server" | "test-runner" | "watcher";
29
+ mode?: "foreground" | "background";
30
+ metadata?: Record<string, unknown>;
31
+ };
32
+ type SandboxObservedProcessStartInput = {
33
+ sandboxId: string;
34
+ command: string;
35
+ args?: string[];
36
+ cwd?: string;
37
+ env?: Record<string, unknown>;
38
+ kind?: "command" | "service" | "codex-app-server" | "dev-server" | "test-runner" | "watcher";
39
+ mode?: "foreground" | "background";
40
+ externalProcessId?: string;
41
+ metadata?: Record<string, unknown>;
42
+ };
43
+ type SandboxObservedProcessAppendInput = {
44
+ processId: string;
45
+ type: "stdout" | "stderr" | "status" | "exit" | "error" | "heartbeat" | "metadata";
46
+ data?: Record<string, unknown>;
47
+ };
48
+ type SandboxObservedProcessFinishInput = {
49
+ processId: string;
50
+ status?: "exited" | "failed" | "killed" | "lost";
51
+ exitCode?: number;
52
+ errorText?: string;
53
+ metadata?: Record<string, unknown>;
54
+ };
55
+ type SandboxProcessStreamChunk = {
56
+ type: "stdout" | "stderr" | "status" | "exit" | "error" | "heartbeat" | "metadata";
57
+ data?: Record<string, unknown>;
58
+ };
59
+ type SandboxProcessRunResult = {
60
+ processId: string;
61
+ streamId: string;
62
+ streamClientId: string;
63
+ result?: CommandResult;
64
+ };
65
+ type SandboxAuthInstallInput = {
66
+ sandboxId: string;
67
+ codexHome?: string;
68
+ authJsonPath?: string;
69
+ credentialsJsonPath?: string;
70
+ configTomlPath?: string;
71
+ };
72
+ type SandboxCreateEkairosAppInput = {
73
+ sandboxId: string;
74
+ appDir: string;
75
+ packageManager?: string;
76
+ instantTokenEnvName?: string;
77
+ };
78
+ export declare function createSandboxExecute({ runtime, input, }: {
79
+ runtime: SandboxRuntime;
80
+ input: SandboxConfig;
81
+ }): Promise<ServiceResult<{
82
+ sandboxId: string;
83
+ }>>;
84
+ export declare function stopSandboxExecute({ runtime, input, }: {
85
+ runtime: SandboxRuntime;
86
+ input: {
87
+ sandboxId: string;
88
+ };
89
+ }): Promise<ServiceResult<void>>;
90
+ export declare function runCommandExecute({ runtime, input, }: {
91
+ runtime: SandboxRuntime;
92
+ input: SandboxRunCommandInput;
93
+ }): Promise<ServiceResult<CommandResult>>;
94
+ export declare function runCommandProcessExecute({ runtime, input, }: {
95
+ runtime: SandboxRuntime;
96
+ input: SandboxRunCommandProcessInput;
97
+ }): Promise<ServiceResult<SandboxProcessRunResult>>;
98
+ export declare function readProcessStreamExecute({ runtime, input, }: {
99
+ runtime: SandboxRuntime;
100
+ input: {
101
+ processId: string;
102
+ };
103
+ }): Promise<ServiceResult<{
104
+ chunks: SandboxProcessStreamChunk[];
105
+ byteOffset: number;
106
+ }>>;
107
+ export declare function startObservedProcessExecute({ runtime, input, }: {
108
+ runtime: SandboxRuntime;
109
+ input: SandboxObservedProcessStartInput;
110
+ }): Promise<ServiceResult<SandboxProcessRunResult>>;
111
+ export declare function appendObservedProcessChunkExecute({ runtime, input, }: {
112
+ runtime: SandboxRuntime;
113
+ input: SandboxObservedProcessAppendInput;
114
+ }): Promise<ServiceResult<void>>;
115
+ export declare function finishObservedProcessExecute({ runtime, input, }: {
116
+ runtime: SandboxRuntime;
117
+ input: SandboxObservedProcessFinishInput;
118
+ }): Promise<ServiceResult<void>>;
119
+ export declare function writeFilesExecute({ runtime, input, }: {
120
+ runtime: SandboxRuntime;
121
+ input: {
122
+ sandboxId: string;
123
+ files: SandboxFileInput[];
124
+ };
125
+ }): Promise<ServiceResult<void>>;
126
+ export declare function readFileExecute({ runtime, input, }: {
127
+ runtime: SandboxRuntime;
128
+ input: {
129
+ sandboxId: string;
130
+ path: string;
131
+ };
132
+ }): Promise<ServiceResult<{
133
+ contentBase64: string;
134
+ }>>;
135
+ export declare function installCodexAuthExecute({ runtime, input, }: {
136
+ runtime: SandboxRuntime;
137
+ input: SandboxAuthInstallInput;
138
+ }): Promise<ServiceResult<{
139
+ authJson: boolean;
140
+ credentialsJson: boolean;
141
+ configToml: boolean;
142
+ }>>;
143
+ export declare function getSandboxExecute({ runtime, input, }: {
144
+ runtime: SandboxRuntime;
145
+ input: {
146
+ sandboxId: string;
147
+ };
148
+ }): Promise<ServiceResult<Record<string, unknown>>>;
149
+ export declare function createCheckpointExecute({ runtime, input, }: {
150
+ runtime: SandboxRuntime;
151
+ input: {
152
+ sandboxId: string;
153
+ comment?: string;
154
+ };
155
+ }): Promise<ServiceResult<{
156
+ checkpointId: string;
157
+ }>>;
158
+ export declare function getPortUrlExecute({ runtime, input, }: {
159
+ runtime: SandboxRuntime;
160
+ input: {
161
+ sandboxId: string;
162
+ port: number;
163
+ };
164
+ }): Promise<ServiceResult<{
165
+ url: string;
166
+ }>>;
167
+ export declare function createEkairosAppExecute({ runtime, input, }: {
168
+ runtime: SandboxRuntime;
169
+ input: SandboxCreateEkairosAppInput;
170
+ }): Promise<ServiceResult<SandboxProcessRunResult>>;
171
+ export declare const sandboxDomain: DomainSchemaResult;
172
+ export {};
173
+ //# sourceMappingURL=actions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"actions.d.ts","sourceRoot":"","sources":["../src/actions.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,301 @@
1
+ import { i } from "@instantdb/core";
2
+ import { defineDomainAction, domain } from "@ekairos/domain";
3
+ import { sandboxDomain as publicSandboxDomain } from "./public.js";
4
+ function shSingleQuote(value) {
5
+ return `'${String(value).replace(/'/g, `'\"'\"'`)}'`;
6
+ }
7
+ export async function createSandboxExecute({ runtime, input, }) {
8
+ "use step";
9
+ const scoped = await runtime.use(sandboxDomain);
10
+ const { SandboxService } = await import("./service.js");
11
+ return await new SandboxService(scoped.db).createSandbox(input);
12
+ }
13
+ export async function stopSandboxExecute({ runtime, input, }) {
14
+ "use step";
15
+ const scoped = await runtime.use(sandboxDomain);
16
+ const { SandboxService } = await import("./service.js");
17
+ return await new SandboxService(scoped.db).stopSandbox(input.sandboxId);
18
+ }
19
+ export async function runCommandExecute({ runtime, input, }) {
20
+ "use step";
21
+ const scoped = await runtime.use(sandboxDomain);
22
+ const { SandboxService } = await import("./service.js");
23
+ return await new SandboxService(scoped.db).runCommand(input.sandboxId, input.command, input.args ?? []);
24
+ }
25
+ export async function runCommandProcessExecute({ runtime, input, }) {
26
+ "use step";
27
+ const scoped = await runtime.use(sandboxDomain);
28
+ const { SandboxService } = await import("./service.js");
29
+ return await new SandboxService(scoped.db).runCommandWithProcessStream(input.sandboxId, input.command, input.args ?? [], {
30
+ cwd: input.cwd,
31
+ env: input.env,
32
+ kind: input.kind,
33
+ mode: input.mode,
34
+ metadata: input.metadata,
35
+ });
36
+ }
37
+ export async function readProcessStreamExecute({ runtime, input, }) {
38
+ "use step";
39
+ const scoped = await runtime.use(sandboxDomain);
40
+ const { SandboxService } = await import("./service.js");
41
+ return await new SandboxService(scoped.db).readProcessStream(input.processId);
42
+ }
43
+ export async function startObservedProcessExecute({ runtime, input, }) {
44
+ "use step";
45
+ const scoped = await runtime.use(sandboxDomain);
46
+ const { SandboxService } = await import("./service.js");
47
+ return await new SandboxService(scoped.db).startObservedProcess(input.sandboxId, input);
48
+ }
49
+ export async function appendObservedProcessChunkExecute({ runtime, input, }) {
50
+ "use step";
51
+ const scoped = await runtime.use(sandboxDomain);
52
+ const { SandboxService } = await import("./service.js");
53
+ return await new SandboxService(scoped.db).appendObservedProcessChunk(input.processId, input.type, input.data);
54
+ }
55
+ export async function finishObservedProcessExecute({ runtime, input, }) {
56
+ "use step";
57
+ const scoped = await runtime.use(sandboxDomain);
58
+ const { SandboxService } = await import("./service.js");
59
+ return await new SandboxService(scoped.db).finishObservedProcess(input.processId, {
60
+ status: input.status,
61
+ exitCode: input.exitCode,
62
+ errorText: input.errorText,
63
+ metadata: input.metadata,
64
+ });
65
+ }
66
+ export async function writeFilesExecute({ runtime, input, }) {
67
+ "use step";
68
+ const scoped = await runtime.use(sandboxDomain);
69
+ const { SandboxService } = await import("./service.js");
70
+ return await new SandboxService(scoped.db).writeFiles(input.sandboxId, input.files);
71
+ }
72
+ export async function readFileExecute({ runtime, input, }) {
73
+ "use step";
74
+ const scoped = await runtime.use(sandboxDomain);
75
+ const { SandboxService } = await import("./service.js");
76
+ return await new SandboxService(scoped.db).readFile(input.sandboxId, input.path);
77
+ }
78
+ export async function installCodexAuthExecute({ runtime, input, }) {
79
+ "use step";
80
+ const { existsSync, readFileSync } = await import("node:fs");
81
+ const { join } = await import("node:path");
82
+ const { homedir } = await import("node:os");
83
+ const scoped = await runtime.use(sandboxDomain);
84
+ const { SandboxService } = await import("./service.js");
85
+ const codexHome = String(input.codexHome ?? "/home/sprite/.codex").trim() || "/home/sprite/.codex";
86
+ const localCodexHome = String(process.env.CODEX_HOME ?? "").trim() || join(homedir(), ".codex");
87
+ const candidates = {
88
+ authJson: String(input.authJsonPath ?? "").trim() || join(localCodexHome, "auth.json"),
89
+ credentialsJson: String(input.credentialsJsonPath ?? "").trim() || join(localCodexHome, ".credentials.json"),
90
+ configToml: String(input.configTomlPath ?? "").trim() || join(localCodexHome, "config.toml"),
91
+ };
92
+ const files = [];
93
+ const copied = { authJson: false, credentialsJson: false, configToml: false };
94
+ if (existsSync(candidates.authJson)) {
95
+ files.push({
96
+ path: `${codexHome}/auth.json`,
97
+ contentBase64: readFileSync(candidates.authJson).toString("base64"),
98
+ });
99
+ copied.authJson = true;
100
+ }
101
+ if (existsSync(candidates.credentialsJson)) {
102
+ files.push({
103
+ path: `${codexHome}/.credentials.json`,
104
+ contentBase64: readFileSync(candidates.credentialsJson).toString("base64"),
105
+ });
106
+ copied.credentialsJson = true;
107
+ }
108
+ if (existsSync(candidates.configToml)) {
109
+ files.push({
110
+ path: `${codexHome}/config.toml`,
111
+ contentBase64: readFileSync(candidates.configToml).toString("base64"),
112
+ });
113
+ copied.configToml = true;
114
+ }
115
+ if (!copied.authJson && !copied.credentialsJson) {
116
+ return { ok: false, error: "codex_auth_file_not_found" };
117
+ }
118
+ const wrote = await new SandboxService(scoped.db).writeFiles(input.sandboxId, files);
119
+ if (!wrote.ok)
120
+ return wrote;
121
+ return { ok: true, data: copied };
122
+ }
123
+ export async function getSandboxExecute({ runtime, input, }) {
124
+ "use step";
125
+ const scoped = await runtime.use(sandboxDomain);
126
+ const result = await scoped.db.query({
127
+ sandbox_sandboxes: { $: { where: { id: input.sandboxId }, limit: 1 } },
128
+ });
129
+ const row = result?.sandbox_sandboxes?.[0];
130
+ if (!row)
131
+ return { ok: false, error: "sandbox_not_found" };
132
+ return { ok: true, data: row };
133
+ }
134
+ export async function createCheckpointExecute({ runtime, input, }) {
135
+ "use step";
136
+ const scoped = await runtime.use(sandboxDomain);
137
+ const { SandboxService } = await import("./service.js");
138
+ return await new SandboxService(scoped.db).createCheckpoint(input.sandboxId, {
139
+ comment: input.comment,
140
+ });
141
+ }
142
+ export async function getPortUrlExecute({ runtime, input, }) {
143
+ "use step";
144
+ const scoped = await runtime.use(sandboxDomain);
145
+ const { SandboxService } = await import("./service.js");
146
+ return await new SandboxService(scoped.db).getPortUrl(input.sandboxId, input.port);
147
+ }
148
+ export async function createEkairosAppExecute({ runtime, input, }) {
149
+ "use step";
150
+ const scoped = await runtime.use(sandboxDomain);
151
+ const { SandboxService } = await import("./service.js");
152
+ const service = new SandboxService(scoped.db);
153
+ const appDir = String(input.appDir ?? "").trim() || "/workspace/ekairos-app";
154
+ const tokenEnv = String(input.instantTokenEnvName ?? "INSTANT_PERSONAL_ACCESS_TOKEN").trim();
155
+ const instantToken = String(process.env[tokenEnv] ?? "").trim();
156
+ if (!instantToken)
157
+ return { ok: false, error: `instant_token_env_missing:${tokenEnv}` };
158
+ const tokenPath = `/tmp/ekairos-instant-token-${Date.now()}-${Math.random().toString(36).slice(2)}`;
159
+ const wrote = await service.writeFiles(input.sandboxId, [
160
+ {
161
+ path: tokenPath,
162
+ contentBase64: Buffer.from(instantToken, "utf8").toString("base64"),
163
+ },
164
+ ]);
165
+ if (!wrote.ok)
166
+ return wrote;
167
+ const resultPath = `/tmp/ekairos-create-app-${Date.now()}.json`;
168
+ const packageManager = String(input.packageManager ?? "pnpm").trim() || "pnpm";
169
+ const command = [
170
+ "set -euo pipefail",
171
+ `TOKEN="$(cat ${shSingleQuote(tokenPath)})"`,
172
+ `rm -f ${shSingleQuote(tokenPath)}`,
173
+ `rm -rf ${shSingleQuote(appDir)}`,
174
+ `npx -y @ekairos/domain@beta create-app ${shSingleQuote(appDir)} --next --no-install --json --package-manager=${shSingleQuote(packageManager)} --instantToken="$TOKEN" > ${shSingleQuote(resultPath)}`,
175
+ `node -e 'const fs=require("fs"); const p=require(${JSON.stringify(`${appDir}/package.json`)}); const r=JSON.parse(fs.readFileSync(${JSON.stringify(resultPath)}, "utf8")); console.log(JSON.stringify({ok:r.ok, provisioned:r.data?.provisioned, appId:r.data?.appId, packageName:p.name, ekairosDomain:p.dependencies?.["@ekairos/domain"], workflow:p.dependencies?.workflow}))'`,
176
+ "echo sandbox_create_ekairos_app_ok",
177
+ ].join("\n");
178
+ return await service.runCommandWithProcessStream(input.sandboxId, "sh", ["-lc", command], {
179
+ kind: "command",
180
+ mode: "foreground",
181
+ metadata: { source: "sandbox.domain", label: "create-ekairos-app" },
182
+ });
183
+ }
184
+ export const sandboxDomain = domain("sandbox")
185
+ .includes(publicSandboxDomain)
186
+ .schema({
187
+ entities: {
188
+ sandbox_processes: i.entity({
189
+ kind: i.string().indexed(),
190
+ mode: i.string().indexed(),
191
+ status: i.string().indexed(),
192
+ provider: i.string().indexed(),
193
+ command: i.string(),
194
+ args: i.json().optional(),
195
+ cwd: i.string().optional(),
196
+ env: i.json().optional(),
197
+ exitCode: i.number().optional().indexed(),
198
+ signal: i.string().optional(),
199
+ externalProcessId: i.string().optional().indexed(),
200
+ streamId: i.string().optional().indexed(),
201
+ streamClientId: i.string().optional().indexed(),
202
+ streamStartedAt: i.number().optional().indexed(),
203
+ streamFinishedAt: i.number().optional().indexed(),
204
+ streamAbortReason: i.string().optional(),
205
+ startedAt: i.number().indexed(),
206
+ updatedAt: i.number().optional().indexed(),
207
+ exitedAt: i.number().optional().indexed(),
208
+ metadata: i.json().optional(),
209
+ }),
210
+ },
211
+ links: {
212
+ sandboxProcessSandbox: {
213
+ forward: {
214
+ on: "sandbox_processes",
215
+ has: "one",
216
+ label: "sandbox",
217
+ },
218
+ reverse: {
219
+ on: "sandbox_sandboxes",
220
+ has: "many",
221
+ label: "processes",
222
+ },
223
+ },
224
+ sandboxProcessStream: {
225
+ forward: {
226
+ on: "sandbox_processes",
227
+ has: "one",
228
+ label: "stream",
229
+ },
230
+ reverse: {
231
+ on: "$streams",
232
+ has: "many",
233
+ label: "sandboxProcesses",
234
+ },
235
+ },
236
+ },
237
+ rooms: {},
238
+ })
239
+ .actions({
240
+ createSandbox: defineDomainAction({
241
+ name: "sandbox.createSandbox",
242
+ execute: createSandboxExecute,
243
+ }),
244
+ stopSandbox: defineDomainAction({
245
+ name: "sandbox.stopSandbox",
246
+ execute: stopSandboxExecute,
247
+ }),
248
+ runCommand: defineDomainAction({
249
+ name: "sandbox.runCommand",
250
+ execute: runCommandExecute,
251
+ }),
252
+ runCommandProcess: defineDomainAction({
253
+ name: "sandbox.runCommandProcess",
254
+ execute: runCommandProcessExecute,
255
+ }),
256
+ readProcessStream: defineDomainAction({
257
+ name: "sandbox.readProcessStream",
258
+ execute: readProcessStreamExecute,
259
+ }),
260
+ startObservedProcess: defineDomainAction({
261
+ name: "sandbox.startObservedProcess",
262
+ execute: startObservedProcessExecute,
263
+ }),
264
+ appendObservedProcessChunk: defineDomainAction({
265
+ name: "sandbox.appendObservedProcessChunk",
266
+ execute: appendObservedProcessChunkExecute,
267
+ }),
268
+ finishObservedProcess: defineDomainAction({
269
+ name: "sandbox.finishObservedProcess",
270
+ execute: finishObservedProcessExecute,
271
+ }),
272
+ writeFiles: defineDomainAction({
273
+ name: "sandbox.writeFiles",
274
+ execute: writeFilesExecute,
275
+ }),
276
+ readFile: defineDomainAction({
277
+ name: "sandbox.readFile",
278
+ execute: readFileExecute,
279
+ }),
280
+ installCodexAuth: defineDomainAction({
281
+ name: "sandbox.installCodexAuth",
282
+ execute: installCodexAuthExecute,
283
+ }),
284
+ getSandbox: defineDomainAction({
285
+ name: "sandbox.getSandbox",
286
+ execute: getSandboxExecute,
287
+ }),
288
+ createCheckpoint: defineDomainAction({
289
+ name: "sandbox.createCheckpoint",
290
+ execute: createCheckpointExecute,
291
+ }),
292
+ getPortUrl: defineDomainAction({
293
+ name: "sandbox.getPortUrl",
294
+ execute: getPortUrlExecute,
295
+ }),
296
+ createEkairosApp: defineDomainAction({
297
+ name: "sandbox.createEkairosApp",
298
+ execute: createEkairosAppExecute,
299
+ }),
300
+ });
301
+ //# sourceMappingURL=actions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"actions.js","sourceRoot":"","sources":["../src/actions.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,5 +1,7 @@
1
1
  export type { SandboxConfig, SandboxId, SandboxProvider, SandboxRunCommandResult, } from "./types.js";
2
- export { sandboxDomain } from "./schema.js";
2
+ export { sandboxDomain } from "./actions.js";
3
+ export { sandboxDomain as sandboxSchemaDomain } from "./schema.js";
4
+ export { sandboxDomain as publicSandboxDomain } from "./public.js";
3
5
  export { SandboxService } from "./service.js";
4
6
  export type { CommandResult } from "./commands.js";
5
7
  export type { SandboxCommandRunData, SandboxProcessKind, SandboxProcessMode, SandboxProcessRunResult, SandboxProcessStatus, SandboxProcessStreamChunk, } from "./service.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,aAAa,EACb,SAAS,EACT,eAAe,EACf,uBAAuB,GACxB,MAAM,YAAY,CAAA;AAEnB,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAC3C,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAC7C,YAAY,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAClD,YAAY,EACV,qBAAqB,EACrB,kBAAkB,EAClB,kBAAkB,EAClB,uBAAuB,EACvB,oBAAoB,EACpB,yBAAyB,GAC1B,MAAM,cAAc,CAAA;AACrB,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAA;AAChD,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAA;AACnD,OAAO,EAAE,0BAA0B,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAA;AAC3F,YAAY,EAAE,2BAA2B,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAA;AAE5F,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAA;AACvD,YAAY,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AAEzF,OAAO,EACL,mBAAmB,EACnB,4BAA4B,EAC5B,cAAc,EACd,OAAO,EACP,qBAAqB,EACrB,cAAc,GACf,MAAM,cAAc,CAAA;AACrB,YAAY,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,aAAa,EACb,SAAS,EACT,eAAe,EACf,uBAAuB,GACxB,MAAM,YAAY,CAAA;AAEnB,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAC5C,OAAO,EAAE,aAAa,IAAI,mBAAmB,EAAE,MAAM,aAAa,CAAA;AAClE,OAAO,EAAE,aAAa,IAAI,mBAAmB,EAAE,MAAM,aAAa,CAAA;AAClE,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAC7C,YAAY,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAClD,YAAY,EACV,qBAAqB,EACrB,kBAAkB,EAClB,kBAAkB,EAClB,uBAAuB,EACvB,oBAAoB,EACpB,yBAAyB,GAC1B,MAAM,cAAc,CAAA;AACrB,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAA;AAChD,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAA;AACnD,OAAO,EAAE,0BAA0B,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAA;AAC3F,YAAY,EAAE,2BAA2B,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAA;AAE5F,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAA;AACvD,YAAY,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AAEzF,OAAO,EACL,mBAAmB,EACnB,4BAA4B,EAC5B,cAAc,EACd,OAAO,EACP,qBAAqB,EACrB,cAAc,GACf,MAAM,cAAc,CAAA;AACrB,YAAY,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAA"}
package/dist/index.js CHANGED
@@ -1,4 +1,6 @@
1
- export { sandboxDomain } from "./schema.js";
1
+ export { sandboxDomain } from "./actions.js";
2
+ export { sandboxDomain as sandboxSchemaDomain } from "./schema.js";
3
+ export { sandboxDomain as publicSandboxDomain } from "./public.js";
2
4
  export { SandboxService } from "./service.js";
3
5
  export { SandboxCommandRun } from "./service.js";
4
6
  export { runCommandInSandbox } from "./commands.js";
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAC3C,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAU7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAA;AAChD,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAA;AACnD,OAAO,EAAE,0BAA0B,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAA;AAG3F,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAA;AAGvD,OAAO,EACL,mBAAmB,EACnB,4BAA4B,EAC5B,cAAc,EACd,OAAO,EACP,qBAAqB,EACrB,cAAc,GACf,MAAM,cAAc,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAC5C,OAAO,EAAE,aAAa,IAAI,mBAAmB,EAAE,MAAM,aAAa,CAAA;AAClE,OAAO,EAAE,aAAa,IAAI,mBAAmB,EAAE,MAAM,aAAa,CAAA;AAClE,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAU7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAA;AAChD,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAA;AACnD,OAAO,EAAE,0BAA0B,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAA;AAG3F,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAA;AAGvD,OAAO,EACL,mBAAmB,EACnB,4BAA4B,EAC5B,cAAc,EACd,OAAO,EACP,qBAAqB,EACrB,cAAc,GACf,MAAM,cAAc,CAAA"}
@@ -0,0 +1,4 @@
1
+ import { type DomainSchemaResult } from "@ekairos/domain";
2
+ export declare const sandboxSchemaDomain: DomainSchemaResult;
3
+ export declare const sandboxDomain: DomainSchemaResult;
4
+ //# sourceMappingURL=public.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"public.d.ts","sourceRoot":"","sources":["../src/public.ts"],"names":[],"mappings":"AACA,OAAO,EAAU,KAAK,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AAGjE,eAAO,MAAM,mBAAmB,EAAE,kBAkChC,CAAA;AAEF,eAAO,MAAM,aAAa,EAAE,kBAAwC,CAAA"}
package/dist/public.js ADDED
@@ -0,0 +1,40 @@
1
+ import { i } from "@instantdb/core";
2
+ import { domain } from "@ekairos/domain";
3
+ // Browser-safe public sandbox schema. The full runtime domain imports and extends this.
4
+ export const sandboxSchemaDomain = domain("sandbox").schema({
5
+ entities: {
6
+ sandbox_sandboxes: i.entity({
7
+ externalSandboxId: i.string().optional().indexed(),
8
+ sandboxUserId: i.string().optional().indexed(),
9
+ provider: i.string().indexed(),
10
+ sandboxUrl: i.string().optional(),
11
+ status: i.string().indexed(),
12
+ timeout: i.number().optional(),
13
+ runtime: i.string().optional(),
14
+ vcpus: i.number().optional(),
15
+ ports: i.json().optional(),
16
+ purpose: i.string().optional().indexed(),
17
+ params: i.json().optional(),
18
+ createdAt: i.number().indexed(),
19
+ updatedAt: i.number().optional().indexed(),
20
+ shutdownAt: i.number().optional().indexed(),
21
+ }),
22
+ },
23
+ links: {
24
+ sandbox_user: {
25
+ forward: {
26
+ on: "sandbox_sandboxes",
27
+ has: "one",
28
+ label: "user",
29
+ },
30
+ reverse: {
31
+ on: "$users",
32
+ has: "many",
33
+ label: "sandboxes",
34
+ },
35
+ },
36
+ },
37
+ rooms: {},
38
+ });
39
+ export const sandboxDomain = sandboxSchemaDomain;
40
+ //# sourceMappingURL=public.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"public.js","sourceRoot":"","sources":["../src/public.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,iBAAiB,CAAA;AACnC,OAAO,EAAE,MAAM,EAA2B,MAAM,iBAAiB,CAAA;AAEjE,wFAAwF;AACxF,MAAM,CAAC,MAAM,mBAAmB,GAAuB,MAAM,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC;IAC9E,QAAQ,EAAE;QACR,iBAAiB,EAAE,CAAC,CAAC,MAAM,CAAC;YAC1B,iBAAiB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE;YAClD,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE;YAC9C,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE;YAC9B,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;YACjC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE;YAC5B,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;YAC9B,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;YAC9B,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;YAC5B,KAAK,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE;YAC1B,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE;YACxC,MAAM,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE;YAC3B,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE;YAC/B,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE;YAC1C,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE;SAC5C,CAAC;KACH;IACD,KAAK,EAAE;QACL,YAAY,EAAE;YACZ,OAAO,EAAE;gBACP,EAAE,EAAE,mBAAmB;gBACvB,GAAG,EAAE,KAAK;gBACV,KAAK,EAAE,MAAM;aACd;YACD,OAAO,EAAE;gBACP,EAAE,EAAE,QAAQ;gBACZ,GAAG,EAAE,MAAM;gBACX,KAAK,EAAE,WAAW;aACnB;SACF;KACF;IACD,KAAK,EAAE,EAAE;CACV,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,aAAa,GAAuB,mBAAmB,CAAA"}