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

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 (57) hide show
  1. package/dist/action-steps.d.ts +156 -0
  2. package/dist/action-steps.d.ts.map +1 -0
  3. package/dist/action-steps.js +153 -0
  4. package/dist/action-steps.js.map +1 -0
  5. package/dist/actions.d.ts +263 -0
  6. package/dist/actions.d.ts.map +1 -0
  7. package/dist/actions.js +208 -0
  8. package/dist/actions.js.map +1 -0
  9. package/dist/contract.d.ts +86 -0
  10. package/dist/contract.d.ts.map +1 -0
  11. package/dist/contract.js +83 -0
  12. package/dist/contract.js.map +1 -0
  13. package/dist/domain.d.ts +2 -0
  14. package/dist/domain.d.ts.map +1 -0
  15. package/dist/domain.js +2 -0
  16. package/dist/domain.js.map +1 -0
  17. package/dist/index.d.ts +7 -1
  18. package/dist/index.d.ts.map +1 -1
  19. package/dist/index.js +5 -1
  20. package/dist/index.js.map +1 -1
  21. package/dist/providers/daytona.d.ts +14 -0
  22. package/dist/providers/daytona.d.ts.map +1 -0
  23. package/dist/providers/daytona.js +153 -0
  24. package/dist/providers/daytona.js.map +1 -0
  25. package/dist/providers/provider.d.ts +3 -0
  26. package/dist/providers/provider.d.ts.map +1 -0
  27. package/dist/providers/provider.js +18 -0
  28. package/dist/providers/provider.js.map +1 -0
  29. package/dist/providers/sprites.d.ts +39 -0
  30. package/dist/providers/sprites.d.ts.map +1 -0
  31. package/dist/providers/sprites.js +234 -0
  32. package/dist/providers/sprites.js.map +1 -0
  33. package/dist/providers/types.d.ts +15 -0
  34. package/dist/providers/types.d.ts.map +1 -0
  35. package/dist/providers/types.js +9 -0
  36. package/dist/providers/types.js.map +1 -0
  37. package/dist/providers/vercel.d.ts +26 -0
  38. package/dist/providers/vercel.d.ts.map +1 -0
  39. package/dist/providers/vercel.js +182 -0
  40. package/dist/providers/vercel.js.map +1 -0
  41. package/dist/public.d.ts +56 -0
  42. package/dist/public.d.ts.map +1 -0
  43. package/dist/public.js +37 -0
  44. package/dist/public.js.map +1 -0
  45. package/dist/sandbox.d.ts +76 -0
  46. package/dist/sandbox.d.ts.map +1 -0
  47. package/dist/sandbox.js +154 -0
  48. package/dist/sandbox.js.map +1 -0
  49. package/dist/schema.d.ts +18 -172
  50. package/dist/schema.d.ts.map +1 -1
  51. package/dist/schema.js +10 -270
  52. package/dist/schema.js.map +1 -1
  53. package/dist/service.d.ts +10 -44
  54. package/dist/service.d.ts.map +1 -1
  55. package/dist/service.js +41 -566
  56. package/dist/service.js.map +1 -1
  57. package/package.json +37 -5
@@ -0,0 +1,3 @@
1
+ import type { SandboxConfig, SandboxProvider } from "../types.js";
2
+ export declare function resolveProvider(config: SandboxConfig): SandboxProvider;
3
+ //# sourceMappingURL=provider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../src/providers/provider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAEjE,wBAAgB,eAAe,CAAC,MAAM,EAAE,aAAa,GAAG,eAAe,CAYtE"}
@@ -0,0 +1,18 @@
1
+ export function resolveProvider(config) {
2
+ const explicit = String(config.provider ?? "").trim().toLowerCase();
3
+ if (explicit === "daytona")
4
+ return "daytona";
5
+ if (explicit === "vercel")
6
+ return "vercel";
7
+ if (explicit === "sprites")
8
+ return "sprites";
9
+ const env = String(process.env.SANDBOX_PROVIDER ?? "").trim().toLowerCase();
10
+ if (env === "daytona")
11
+ return "daytona";
12
+ if (env === "vercel")
13
+ return "vercel";
14
+ if (env === "sprites")
15
+ return "sprites";
16
+ return "sprites";
17
+ }
18
+ //# sourceMappingURL=provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider.js","sourceRoot":"","sources":["../../src/providers/provider.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,eAAe,CAAC,MAAqB;IACnD,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAA;IACnE,IAAI,QAAQ,KAAK,SAAS;QAAE,OAAO,SAAS,CAAA;IAC5C,IAAI,QAAQ,KAAK,QAAQ;QAAE,OAAO,QAAQ,CAAA;IAC1C,IAAI,QAAQ,KAAK,SAAS;QAAE,OAAO,SAAS,CAAA;IAE5C,MAAM,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAA;IAC3E,IAAI,GAAG,KAAK,SAAS;QAAE,OAAO,SAAS,CAAA;IACvC,IAAI,GAAG,KAAK,QAAQ;QAAE,OAAO,QAAQ,CAAA;IACrC,IAAI,GAAG,KAAK,SAAS;QAAE,OAAO,SAAS,CAAA;IAEvC,OAAO,SAAS,CAAA;AAClB,CAAC"}
@@ -0,0 +1,39 @@
1
+ import type { SandboxConfig } from "../types.js";
2
+ import type { SpritesSandbox } from "./types.js";
3
+ export declare function spritesFetch(path: string, init?: any): Promise<any>;
4
+ export declare function spritesJson<T = any>(path: string, init?: any): Promise<T>;
5
+ export declare function spritesText(path: string, init?: any): Promise<{
6
+ status: number;
7
+ ok: boolean;
8
+ text: string;
9
+ }>;
10
+ export declare function toSpritesPreviewUrl(spriteUrl: string, port: number): string;
11
+ export declare function asSpritesSandbox(sprite: {
12
+ name: string;
13
+ id?: string;
14
+ url?: string;
15
+ }): SpritesSandbox;
16
+ export declare function getSpritesByName(name: string): Promise<{
17
+ ok: true;
18
+ sprite: any;
19
+ } | {
20
+ ok: false;
21
+ status: number;
22
+ error: string;
23
+ }>;
24
+ export declare function provisionSpritesSandbox(params: {
25
+ sandboxId: string;
26
+ config: SandboxConfig;
27
+ }): Promise<SpritesSandbox>;
28
+ export declare function spritesExec(params: {
29
+ spriteName: string;
30
+ command: string;
31
+ args?: string[];
32
+ stdin?: string | Buffer;
33
+ }): Promise<{
34
+ exitCode: number;
35
+ stdout: string;
36
+ stderr: string;
37
+ }>;
38
+ export declare function parseSpritesCheckpointIdFromNdjson(text: string): string | null;
39
+ //# sourceMappingURL=sprites.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sprites.d.ts","sourceRoot":"","sources":["../../src/providers/sprites.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAChD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AA0BhD,wBAAsB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,CAiBzE;AAED,wBAAsB,WAAW,CAAC,CAAC,GAAG,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC,CAe/E;AAED,wBAAsB,WAAW,CAC/B,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE,GAAG,GACT,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CAIxD;AAED,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAc3E;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE;IACvC,IAAI,EAAE,MAAM,CAAA;IACZ,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,GAAG,CAAC,EAAE,MAAM,CAAA;CACb,GAAG,cAAc,CAkBjB;AAED,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,MAAM,GACX,OAAO,CAAC;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,MAAM,EAAE,GAAG,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CAkBnF;AAED,wBAAsB,uBAAuB,CAAC,MAAM,EAAE;IACpD,SAAS,EAAE,MAAM,CAAA;IACjB,MAAM,EAAE,aAAa,CAAA;CACtB,GAAG,OAAO,CAAC,cAAc,CAAC,CAiC1B;AA6CD,wBAAsB,WAAW,CAAC,MAAM,EAAE;IACxC,UAAU,EAAE,MAAM,CAAA;IAClB,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;IACf,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;CACxB,GAAG,OAAO,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CAyChE;AAED,wBAAgB,kCAAkC,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAwB9E"}
@@ -0,0 +1,234 @@
1
+ function normalizeBaseUrl(raw) {
2
+ const trimmed = String(raw ?? "").trim();
3
+ if (!trimmed)
4
+ return "";
5
+ return trimmed.endsWith("/") ? trimmed.slice(0, -1) : trimmed;
6
+ }
7
+ function sanitizeSpritesString(value) {
8
+ return value.includes("\0") ? value.replace(/\0/g, "") : value;
9
+ }
10
+ function getSpritesConfig() {
11
+ const token = String(process.env.SPRITES_API_TOKEN ?? process.env.SPRITE_TOKEN ?? "").trim();
12
+ if (!token) {
13
+ throw new Error("Missing required Sprites token env var: SPRITES_API_TOKEN (or SPRITE_TOKEN)");
14
+ }
15
+ const baseUrl = normalizeBaseUrl(String(process.env.SPRITES_API_BASE_URL ?? process.env.SPRITES_API_URL ?? "").trim()) || "https://api.sprites.dev";
16
+ return { baseUrl, token };
17
+ }
18
+ export async function spritesFetch(path, init) {
19
+ const { baseUrl, token } = getSpritesConfig();
20
+ const fetchFn = globalThis?.fetch;
21
+ if (typeof fetchFn !== "function") {
22
+ throw new Error("fetch_not_available");
23
+ }
24
+ const normalizedPath = path.startsWith("/") ? path : `/${path}`;
25
+ const url = `${baseUrl}${normalizedPath}`;
26
+ return await fetchFn(url, {
27
+ ...init,
28
+ headers: {
29
+ Authorization: `Bearer ${token}`,
30
+ ...(init?.headers ?? {}),
31
+ },
32
+ });
33
+ }
34
+ export async function spritesJson(path, init) {
35
+ const res = await spritesFetch(path, {
36
+ ...init,
37
+ headers: {
38
+ Accept: "application/json",
39
+ ...(init?.headers ?? {}),
40
+ },
41
+ });
42
+ if (!res?.ok) {
43
+ const text = await res?.text?.().catch(() => "");
44
+ throw new Error(`sprites_http_${res?.status ?? "unknown"}: ${text || "request_failed"}`);
45
+ }
46
+ return (await res.json().catch(() => ({})));
47
+ }
48
+ export async function spritesText(path, init) {
49
+ const res = await spritesFetch(path, init);
50
+ const text = await res?.text?.().catch(() => "");
51
+ return { ok: Boolean(res?.ok), status: Number(res?.status ?? 0), text: String(text ?? "") };
52
+ }
53
+ export function toSpritesPreviewUrl(spriteUrl, port) {
54
+ const base = String(spriteUrl ?? "").trim();
55
+ if (!base)
56
+ return "";
57
+ try {
58
+ const u = new URL(base);
59
+ if (Number.isFinite(port) && port > 0) {
60
+ u.port = String(Math.floor(port));
61
+ }
62
+ const next = u.toString();
63
+ return next.endsWith("/") ? next.slice(0, -1) : next;
64
+ }
65
+ catch {
66
+ if (!port)
67
+ return base;
68
+ return base.replace(/\/+$/, "") + ":" + String(Math.floor(port));
69
+ }
70
+ }
71
+ export function asSpritesSandbox(sprite) {
72
+ const name = String(sprite?.name ?? "").trim();
73
+ const url = typeof sprite?.url === "string" ? sprite.url : undefined;
74
+ return {
75
+ __provider: "sprites",
76
+ name,
77
+ id: sprite?.id ? String(sprite.id) : undefined,
78
+ url,
79
+ getPreviewLink: async (port) => {
80
+ const base = url ?? "";
81
+ const next = toSpritesPreviewUrl(base, port);
82
+ return { url: next };
83
+ },
84
+ domain: async (port) => {
85
+ const base = url ?? "";
86
+ return toSpritesPreviewUrl(base, port);
87
+ },
88
+ };
89
+ }
90
+ export async function getSpritesByName(name) {
91
+ const safeName = String(name ?? "").trim();
92
+ if (!safeName)
93
+ return { ok: false, status: 400, error: "sprites_name_required" };
94
+ const res = await spritesFetch(`/v1/sprites/${encodeURIComponent(safeName)}`, {
95
+ method: "GET",
96
+ headers: { Accept: "application/json" },
97
+ });
98
+ if (!res?.ok) {
99
+ const text = await res?.text?.().catch(() => "");
100
+ return {
101
+ ok: false,
102
+ status: Number(res?.status ?? 0),
103
+ error: text || `sprites_http_${res?.status ?? "unknown"}`,
104
+ };
105
+ }
106
+ const json = await res.json().catch(() => ({}));
107
+ return { ok: true, sprite: json };
108
+ }
109
+ export async function provisionSpritesSandbox(params) {
110
+ const requestedName = String(params.config?.sprites?.name ?? "").trim();
111
+ const name = requestedName || `ekairos-${params.sandboxId}`;
112
+ const existing = await getSpritesByName(name);
113
+ if (existing.ok) {
114
+ const sprite = existing.sprite ?? {};
115
+ return asSpritesSandbox({
116
+ name: String(sprite?.name ?? name),
117
+ id: sprite?.id ? String(sprite.id) : undefined,
118
+ url: typeof sprite?.url === "string" ? sprite.url : undefined,
119
+ });
120
+ }
121
+ const waitForCapacity = params.config?.sprites?.waitForCapacity ?? true;
122
+ const auth = params.config?.sprites?.urlSettings?.auth ?? "public";
123
+ const body = {
124
+ name,
125
+ wait_for_capacity: Boolean(waitForCapacity),
126
+ url_settings: { auth },
127
+ };
128
+ const created = await spritesJson("/v1/sprites", {
129
+ method: "POST",
130
+ headers: { "Content-Type": "application/json" },
131
+ body: JSON.stringify(body),
132
+ });
133
+ return asSpritesSandbox({
134
+ name: String(created?.name ?? name),
135
+ id: created?.id ? String(created.id) : undefined,
136
+ url: typeof created?.url === "string" ? created.url : undefined,
137
+ });
138
+ }
139
+ function normalizeSpritesExecResult(payload) {
140
+ const exitCodeRaw = payload?.exit_code ??
141
+ payload?.exitCode ??
142
+ payload?.code ??
143
+ payload?.status ??
144
+ payload?.result?.exit_code ??
145
+ payload?.result?.exitCode;
146
+ const exitCode = Number(exitCodeRaw ?? 0);
147
+ const stdout = typeof payload?.stdout === "string"
148
+ ? payload.stdout
149
+ : typeof payload?.output === "string"
150
+ ? payload.output
151
+ : typeof payload?.out === "string"
152
+ ? payload.out
153
+ : typeof payload?.result?.stdout === "string"
154
+ ? payload.result.stdout
155
+ : "";
156
+ const stderr = typeof payload?.stderr === "string"
157
+ ? payload.stderr
158
+ : typeof payload?.error === "string"
159
+ ? payload.error
160
+ : typeof payload?.err === "string"
161
+ ? payload.err
162
+ : typeof payload?.result?.stderr === "string"
163
+ ? payload.result.stderr
164
+ : "";
165
+ return {
166
+ exitCode: Number.isFinite(exitCode) ? exitCode : 0,
167
+ stdout: sanitizeSpritesString(stdout),
168
+ stderr: sanitizeSpritesString(stderr),
169
+ };
170
+ }
171
+ export async function spritesExec(params) {
172
+ const spriteName = String(params.spriteName ?? "").trim();
173
+ if (!spriteName)
174
+ throw new Error("sprites_name_required");
175
+ const parts = [String(params.command ?? "").trim(), ...(Array.isArray(params.args) ? params.args : [])].filter(Boolean);
176
+ if (parts.length === 0)
177
+ throw new Error("sprites_command_required");
178
+ const search = new URLSearchParams();
179
+ for (const part of parts) {
180
+ search.append("cmd", String(part));
181
+ }
182
+ const hasStdin = typeof params.stdin === "string" || Buffer.isBuffer(params.stdin);
183
+ if (hasStdin) {
184
+ search.set("stdin", "true");
185
+ }
186
+ const path = `/v1/sprites/${encodeURIComponent(spriteName)}/exec?${search.toString()}`;
187
+ const init = {
188
+ method: "POST",
189
+ };
190
+ if (hasStdin) {
191
+ init.body = params.stdin;
192
+ }
193
+ const res = await spritesFetch(path, init);
194
+ const text = await res?.text?.().catch(() => "");
195
+ const parsed = (() => {
196
+ try {
197
+ return text ? JSON.parse(text) : {};
198
+ }
199
+ catch {
200
+ return { stdout: String(text ?? "") };
201
+ }
202
+ })();
203
+ if (!res?.ok) {
204
+ const err = typeof parsed?.error === "string" ? parsed.error : text;
205
+ throw new Error(err || `sprites_exec_http_${res?.status ?? "unknown"}`);
206
+ }
207
+ return normalizeSpritesExecResult(parsed);
208
+ }
209
+ export function parseSpritesCheckpointIdFromNdjson(text) {
210
+ const lines = String(text ?? "")
211
+ .split("\n")
212
+ .map((l) => l.trim())
213
+ .filter(Boolean);
214
+ const candidates = [];
215
+ for (const line of lines) {
216
+ try {
217
+ const evt = JSON.parse(line);
218
+ const data = typeof evt?.data === "string" ? evt.data : "";
219
+ if (!data)
220
+ continue;
221
+ const m = data.match(/\bID:\s*(v[0-9]+)\b/i) || data.match(/\bCheckpoint\s+(v[0-9]+)\b/i);
222
+ if (m?.[1]) {
223
+ candidates.push(String(m[1]));
224
+ }
225
+ }
226
+ catch {
227
+ // ignore invalid ndjson lines
228
+ }
229
+ }
230
+ if (candidates.length === 0)
231
+ return null;
232
+ return candidates[candidates.length - 1] ?? null;
233
+ }
234
+ //# sourceMappingURL=sprites.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sprites.js","sourceRoot":"","sources":["../../src/providers/sprites.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import type { Sandbox as VercelSandbox } from "@vercel/sandbox";
2
+ import type { Sandbox as DaytonaSandbox } from "@daytonaio/sdk";
3
+ export type SpritesSandbox = {
4
+ __provider: "sprites";
5
+ name: string;
6
+ id?: string;
7
+ url?: string;
8
+ getPreviewLink?: (port: number) => Promise<{
9
+ url: string;
10
+ }>;
11
+ domain?: (port: number) => Promise<string>;
12
+ };
13
+ export type ProviderSandbox = VercelSandbox | DaytonaSandbox | SpritesSandbox;
14
+ export declare function isVercelSandbox(sandbox: ProviderSandbox | unknown): sandbox is VercelSandbox;
15
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/providers/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAC/D,OAAO,KAAK,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAE/D,MAAM,MAAM,cAAc,GAAG;IAC3B,UAAU,EAAE,SAAS,CAAA;IACrB,IAAI,EAAE,MAAM,CAAA;IACZ,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,cAAc,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IAC3D,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAA;CAC3C,CAAA;AAED,MAAM,MAAM,eAAe,GAAG,aAAa,GAAG,cAAc,GAAG,cAAc,CAAA;AAE7E,wBAAgB,eAAe,CAC7B,OAAO,EAAE,eAAe,GAAG,OAAO,GACjC,OAAO,IAAI,aAAa,CAS1B"}
@@ -0,0 +1,9 @@
1
+ export function isVercelSandbox(sandbox) {
2
+ return Boolean(sandbox &&
3
+ typeof sandbox === "object" &&
4
+ typeof sandbox.runCommand === "function" &&
5
+ typeof sandbox.currentSession === "function" &&
6
+ typeof sandbox.name === "string" &&
7
+ sandbox.__provider !== "sprites");
8
+ }
9
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/providers/types.ts"],"names":[],"mappings":"AAcA,MAAM,UAAU,eAAe,CAC7B,OAAkC;IAElC,OAAO,OAAO,CACZ,OAAO;QACL,OAAO,OAAO,KAAK,QAAQ;QAC3B,OAAQ,OAAe,CAAC,UAAU,KAAK,UAAU;QACjD,OAAQ,OAAe,CAAC,cAAc,KAAK,UAAU;QACrD,OAAQ,OAAe,CAAC,IAAI,KAAK,QAAQ;QACxC,OAAe,CAAC,UAAU,KAAK,SAAS,CAC5C,CAAA;AACH,CAAC"}
@@ -0,0 +1,26 @@
1
+ import { Sandbox as VercelSandbox, type NetworkPolicy } from "@vercel/sandbox";
2
+ import type { SandboxConfig } from "../types.js";
3
+ import { type ResolvedVercelSandboxConfig } from "../vercel-options.js";
4
+ type ResolvedVercelCredentials = {
5
+ teamId?: string;
6
+ projectId?: string;
7
+ token?: string;
8
+ };
9
+ export declare function resolveVercelWorkingDirectory(config: SandboxConfig): string;
10
+ export declare function findLinkedVercelProjectFile(startDir: string): string | null;
11
+ export declare function readLinkedVercelProject(config: SandboxConfig): Promise<{
12
+ orgId?: string;
13
+ projectId?: string;
14
+ projectName?: string;
15
+ cwd: string;
16
+ }>;
17
+ export declare function pullVercelOidcToken(config: SandboxConfig): Promise<string>;
18
+ export declare function withResolvedVercelCredentials<T extends Record<string, unknown>>(params: T, creds: ResolvedVercelCredentials): T & Partial<Required<ResolvedVercelCredentials>>;
19
+ export declare function resolveVercelCredentials(config: SandboxConfig): Promise<ResolvedVercelCredentials>;
20
+ export declare function provisionVercelSandbox(config: SandboxConfig, extra?: {
21
+ networkPolicy?: NetworkPolicy;
22
+ env?: Record<string, string>;
23
+ resolved?: ResolvedVercelSandboxConfig;
24
+ }): Promise<VercelSandbox>;
25
+ export {};
26
+ //# sourceMappingURL=vercel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vercel.d.ts","sourceRoot":"","sources":["../../src/providers/vercel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,KAAK,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAO9E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAChD,OAAO,EAEL,KAAK,2BAA2B,EACjC,MAAM,sBAAsB,CAAA;AAI7B,KAAK,yBAAyB,GAAG;IAC/B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,KAAK,CAAC,EAAE,MAAM,CAAA;CACf,CAAA;AAWD,wBAAgB,6BAA6B,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,CAM3E;AAED,wBAAgB,2BAA2B,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAS3E;AAED,wBAAsB,uBAAuB,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC;IAC5E,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,GAAG,EAAE,MAAM,CAAA;CACZ,CAAC,CAiBD;AAED,wBAAsB,mBAAmB,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC,CA8ChF;AAgBD,wBAAgB,6BAA6B,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7E,MAAM,EAAE,CAAC,EACT,KAAK,EAAE,yBAAyB,GAC/B,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,yBAAyB,CAAC,CAAC,CAQlD;AAED,wBAAsB,wBAAwB,CAC5C,MAAM,EAAE,aAAa,GACpB,OAAO,CAAC,yBAAyB,CAAC,CA4CpC;AAED,wBAAsB,sBAAsB,CAC1C,MAAM,EAAE,aAAa,EACrB,KAAK,CAAC,EAAE;IACN,aAAa,CAAC,EAAE,aAAa,CAAA;IAC7B,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC5B,QAAQ,CAAC,EAAE,2BAA2B,CAAA;CACvC,GACA,OAAO,CAAC,aAAa,CAAC,CA2CxB"}
@@ -0,0 +1,182 @@
1
+ import { Sandbox as VercelSandbox } from "@vercel/sandbox";
2
+ import { execFile } from "node:child_process";
3
+ import { existsSync, promises as fs } from "node:fs";
4
+ import os from "node:os";
5
+ import path from "node:path";
6
+ import { promisify } from "node:util";
7
+ import { resolveVercelSandboxConfig, } from "../vercel-options.js";
8
+ const execFileAsync = promisify(execFile);
9
+ function formatSandboxError(err) {
10
+ const base = err instanceof Error ? err.message : String(err);
11
+ const text = typeof err?.text === "string" ? err.text.trim() : "";
12
+ const json = err?.json ? JSON.stringify(err.json) : "";
13
+ const detail = text || json;
14
+ if (!detail)
15
+ return base;
16
+ return `${base}: ${detail}`;
17
+ }
18
+ export function resolveVercelWorkingDirectory(config) {
19
+ const fromConfig = String(config.vercel?.cwd ?? "").trim();
20
+ if (fromConfig)
21
+ return path.resolve(fromConfig);
22
+ const fromEnv = String(process.env.SANDBOX_VERCEL_CWD ?? "").trim();
23
+ if (fromEnv)
24
+ return path.resolve(fromEnv);
25
+ return process.cwd();
26
+ }
27
+ export function findLinkedVercelProjectFile(startDir) {
28
+ let current = path.resolve(startDir);
29
+ while (true) {
30
+ const candidate = path.join(current, ".vercel", "project.json");
31
+ if (existsSync(candidate))
32
+ return candidate;
33
+ const parent = path.dirname(current);
34
+ if (parent === current)
35
+ return null;
36
+ current = parent;
37
+ }
38
+ }
39
+ export async function readLinkedVercelProject(config) {
40
+ const cwd = resolveVercelWorkingDirectory(config);
41
+ const file = findLinkedVercelProjectFile(cwd);
42
+ if (!file) {
43
+ return { cwd };
44
+ }
45
+ try {
46
+ const parsed = JSON.parse(await fs.readFile(file, "utf8"));
47
+ return {
48
+ cwd,
49
+ orgId: typeof parsed?.orgId === "string" ? parsed.orgId : undefined,
50
+ projectId: typeof parsed?.projectId === "string" ? parsed.projectId : undefined,
51
+ projectName: typeof parsed?.projectName === "string" ? parsed.projectName : undefined,
52
+ };
53
+ }
54
+ catch {
55
+ return { cwd };
56
+ }
57
+ }
58
+ export async function pullVercelOidcToken(config) {
59
+ const cwd = resolveVercelWorkingDirectory(config);
60
+ const tmpPath = path.join(os.tmpdir(), `ekairos-vercel-env-${Date.now()}-${Math.random().toString(36).slice(2)}.env`);
61
+ const args = [
62
+ "env",
63
+ "pull",
64
+ tmpPath,
65
+ "--yes",
66
+ "--environment",
67
+ String(config.vercel?.environment ?? "development"),
68
+ ];
69
+ const scope = String(config.vercel?.scope ?? process.env.SANDBOX_VERCEL_SCOPE ?? "").trim();
70
+ if (scope) {
71
+ args.push("--scope", scope);
72
+ }
73
+ const token = String(process.env.VERCEL_TOKEN ?? process.env.SANDBOX_VERCEL_TOKEN ?? "").trim();
74
+ if (token) {
75
+ args.push("--token", token);
76
+ }
77
+ const isWindows = process.platform === "win32";
78
+ const command = isWindows ? process.env.COMSPEC || "cmd.exe" : "vercel";
79
+ const commandArgs = isWindows ? ["/c", "vercel", ...args] : args;
80
+ try {
81
+ await execFileAsync(command, commandArgs, {
82
+ cwd,
83
+ windowsHide: true,
84
+ timeout: 120000,
85
+ maxBuffer: 1024 * 1024 * 10,
86
+ });
87
+ const content = await fs.readFile(tmpPath, "utf8");
88
+ const match = content.match(/VERCEL_OIDC_TOKEN=\"?([^\r\n\"]+)\"?/);
89
+ const oidc = String(match?.[1] ?? "").trim();
90
+ if (!oidc) {
91
+ throw new Error("VERCEL_OIDC_TOKEN missing from vercel env pull output");
92
+ }
93
+ return oidc;
94
+ }
95
+ finally {
96
+ await fs.rm(tmpPath, { force: true }).catch(() => { });
97
+ }
98
+ }
99
+ function isVercelRuntime() {
100
+ return (process.env.VERCEL === "1" ||
101
+ Boolean(process.env.VERCEL_ENV) ||
102
+ Boolean(process.env.VERCEL_URL));
103
+ }
104
+ function hasCompleteVercelCredentials(creds) {
105
+ return Boolean(creds.teamId && creds.projectId && creds.token);
106
+ }
107
+ export function withResolvedVercelCredentials(params, creds) {
108
+ if (!hasCompleteVercelCredentials(creds))
109
+ return params;
110
+ return {
111
+ ...params,
112
+ teamId: creds.teamId,
113
+ projectId: creds.projectId,
114
+ token: creds.token,
115
+ };
116
+ }
117
+ export async function resolveVercelCredentials(config) {
118
+ const explicitTeamId = String(config.vercel?.orgId ??
119
+ process.env.SANDBOX_VERCEL_TEAM_ID ??
120
+ process.env.VERCEL_TEAM_ID ??
121
+ "").trim();
122
+ const explicitProjectId = String(config.vercel?.projectId ??
123
+ process.env.SANDBOX_VERCEL_PROJECT_ID ??
124
+ process.env.VERCEL_PROJECT_ID ??
125
+ "").trim();
126
+ const explicitToken = String(config.vercel?.token ??
127
+ process.env.SANDBOX_VERCEL_TOKEN ??
128
+ process.env.VERCEL_OIDC_TOKEN ??
129
+ process.env.VERCEL_TOKEN ??
130
+ "").trim();
131
+ if (explicitTeamId && explicitProjectId && explicitToken) {
132
+ return { teamId: explicitTeamId, projectId: explicitProjectId, token: explicitToken };
133
+ }
134
+ const linked = await readLinkedVercelProject(config);
135
+ const teamId = explicitTeamId || String(linked.orgId ?? "").trim();
136
+ const projectId = explicitProjectId || String(linked.projectId ?? "").trim();
137
+ if (isVercelRuntime()) {
138
+ return {};
139
+ }
140
+ let token = explicitToken;
141
+ if (!token) {
142
+ token = await pullVercelOidcToken(config);
143
+ }
144
+ if (!teamId || !projectId || !token) {
145
+ throw new Error("Missing Vercel sandbox credentials. Link the project (`vercel link`) and ensure `vercel env pull` can resolve VERCEL_OIDC_TOKEN, or provide explicit SANDBOX_VERCEL_* env vars.");
146
+ }
147
+ return { teamId, projectId, token };
148
+ }
149
+ export async function provisionVercelSandbox(config, extra) {
150
+ const creds = await resolveVercelCredentials(config);
151
+ const resolved = extra?.resolved ?? resolveVercelSandboxConfig(config);
152
+ if (resolved.reuse && resolved.name) {
153
+ try {
154
+ return await VercelSandbox.get(withResolvedVercelCredentials({
155
+ name: resolved.name,
156
+ resume: true,
157
+ }, creds));
158
+ }
159
+ catch (error) {
160
+ const status = Number(error?.response?.status ?? 0);
161
+ const message = formatSandboxError(error).toLowerCase();
162
+ if (status !== 404 && !message.includes("not found")) {
163
+ throw error;
164
+ }
165
+ }
166
+ }
167
+ return await VercelSandbox.create(withResolvedVercelCredentials({
168
+ ...(resolved.name ? { name: resolved.name } : {}),
169
+ timeout: resolved.timeoutMs,
170
+ ports: resolved.ports,
171
+ runtime: resolved.runtime,
172
+ resources: { vcpus: resolved.vcpus },
173
+ persistent: resolved.persistent,
174
+ ...(resolved.snapshotExpirationMs !== undefined
175
+ ? { snapshotExpiration: resolved.snapshotExpirationMs }
176
+ : {}),
177
+ ...(resolved.tags ? { tags: resolved.tags } : {}),
178
+ networkPolicy: extra?.networkPolicy,
179
+ env: extra?.env,
180
+ }, creds));
181
+ }
182
+ //# sourceMappingURL=vercel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vercel.js","sourceRoot":"","sources":["../../src/providers/vercel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,aAAa,EAAsB,MAAM,iBAAiB,CAAA;AAC9E,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAC7C,OAAO,EAAE,UAAU,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,SAAS,CAAA;AACpD,OAAO,EAAE,MAAM,SAAS,CAAA;AACxB,OAAO,IAAI,MAAM,WAAW,CAAA;AAC5B,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AAGrC,OAAO,EACL,0BAA0B,GAE3B,MAAM,sBAAsB,CAAA;AAE7B,MAAM,aAAa,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAA;AAQzC,SAAS,kBAAkB,CAAC,GAAQ;IAClC,MAAM,IAAI,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;IAC7D,MAAM,IAAI,GAAG,OAAO,GAAG,EAAE,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;IACjE,MAAM,IAAI,GAAG,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;IACtD,MAAM,MAAM,GAAG,IAAI,IAAI,IAAI,CAAA;IAC3B,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAA;IACxB,OAAO,GAAG,IAAI,KAAK,MAAM,EAAE,CAAA;AAC7B,CAAC;AAED,MAAM,UAAU,6BAA6B,CAAC,MAAqB;IACjE,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAA;IAC1D,IAAI,UAAU;QAAE,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAA;IAC/C,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAA;IACnE,IAAI,OAAO;QAAE,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;IACzC,OAAO,OAAO,CAAC,GAAG,EAAE,CAAA;AACtB,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAC,QAAgB;IAC1D,IAAI,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;IACpC,OAAO,IAAI,EAAE,CAAC;QACZ,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,cAAc,CAAC,CAAA;QAC/D,IAAI,UAAU,CAAC,SAAS,CAAC;YAAE,OAAO,SAAS,CAAA;QAC3C,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;QACpC,IAAI,MAAM,KAAK,OAAO;YAAE,OAAO,IAAI,CAAA;QACnC,OAAO,GAAG,MAAM,CAAA;IAClB,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAAC,MAAqB;IAMjE,MAAM,GAAG,GAAG,6BAA6B,CAAC,MAAM,CAAC,CAAA;IACjD,MAAM,IAAI,GAAG,2BAA2B,CAAC,GAAG,CAAC,CAAA;IAC7C,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,EAAE,GAAG,EAAE,CAAA;IAChB,CAAC;IACD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAA;QAC1D,OAAO;YACL,GAAG;YACH,KAAK,EAAE,OAAO,MAAM,EAAE,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS;YACnE,SAAS,EAAE,OAAO,MAAM,EAAE,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS;YAC/E,WAAW,EAAE,OAAO,MAAM,EAAE,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS;SACtF,CAAA;IACH,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,GAAG,EAAE,CAAA;IAChB,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,MAAqB;IAC7D,MAAM,GAAG,GAAG,6BAA6B,CAAC,MAAM,CAAC,CAAA;IACjD,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CACvB,EAAE,CAAC,MAAM,EAAE,EACX,sBAAsB,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAC9E,CAAA;IACD,MAAM,IAAI,GAAG;QACX,KAAK;QACL,MAAM;QACN,OAAO;QACP,OAAO;QACP,eAAe;QACf,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,WAAW,IAAI,aAAa,CAAC;KACpD,CAAA;IACD,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,IAAI,OAAO,CAAC,GAAG,CAAC,oBAAoB,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAA;IAC3F,IAAI,KAAK,EAAE,CAAC;QACV,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAA;IAC7B,CAAC;IACD,MAAM,KAAK,GAAG,MAAM,CAClB,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,OAAO,CAAC,GAAG,CAAC,oBAAoB,IAAI,EAAE,CACnE,CAAC,IAAI,EAAE,CAAA;IACR,IAAI,KAAK,EAAE,CAAC;QACV,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAA;IAC7B,CAAC;IAED,MAAM,SAAS,GAAG,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAA;IAC9C,MAAM,OAAO,GAAG,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,IAAI,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAA;IACvE,MAAM,WAAW,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;IAEhE,IAAI,CAAC;QACH,MAAM,aAAa,CAAC,OAAO,EAAE,WAAW,EAAE;YACxC,GAAG;YACH,WAAW,EAAE,IAAI;YACjB,OAAO,EAAE,MAAM;YACf,SAAS,EAAE,IAAI,GAAG,IAAI,GAAG,EAAE;SAC5B,CAAC,CAAA;QACF,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;QAClD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,sCAAsC,CAAC,CAAA;QACnE,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAA;QAC5C,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAA;QAC1E,CAAC;QACD,OAAO,IAAI,CAAA;IACb,CAAC;YAAS,CAAC;QACT,MAAM,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAA;IACvD,CAAC;AACH,CAAC;AAED,SAAS,eAAe;IACtB,OAAO,CACL,OAAO,CAAC,GAAG,CAAC,MAAM,KAAK,GAAG;QAC1B,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC;QAC/B,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAChC,CAAA;AACH,CAAC;AAED,SAAS,4BAA4B,CACnC,KAAgC;IAEhC,OAAO,OAAO,CAAC,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,KAAK,CAAC,CAAA;AAChE,CAAC;AAED,MAAM,UAAU,6BAA6B,CAC3C,MAAS,EACT,KAAgC;IAEhC,IAAI,CAAC,4BAA4B,CAAC,KAAK,CAAC;QAAE,OAAO,MAAM,CAAA;IACvD,OAAO;QACL,GAAG,MAAM;QACT,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,KAAK,EAAE,KAAK,CAAC,KAAK;KACnB,CAAA;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAC5C,MAAqB;IAErB,MAAM,cAAc,GAAG,MAAM,CAC3B,MAAM,CAAC,MAAM,EAAE,KAAK;QAClB,OAAO,CAAC,GAAG,CAAC,sBAAsB;QAClC,OAAO,CAAC,GAAG,CAAC,cAAc;QAC1B,EAAE,CACL,CAAC,IAAI,EAAE,CAAA;IACR,MAAM,iBAAiB,GAAG,MAAM,CAC9B,MAAM,CAAC,MAAM,EAAE,SAAS;QACtB,OAAO,CAAC,GAAG,CAAC,yBAAyB;QACrC,OAAO,CAAC,GAAG,CAAC,iBAAiB;QAC7B,EAAE,CACL,CAAC,IAAI,EAAE,CAAA;IACR,MAAM,aAAa,GAAG,MAAM,CAC1B,MAAM,CAAC,MAAM,EAAE,KAAK;QAClB,OAAO,CAAC,GAAG,CAAC,oBAAoB;QAChC,OAAO,CAAC,GAAG,CAAC,iBAAiB;QAC7B,OAAO,CAAC,GAAG,CAAC,YAAY;QACxB,EAAE,CACL,CAAC,IAAI,EAAE,CAAA;IACR,IAAI,cAAc,IAAI,iBAAiB,IAAI,aAAa,EAAE,CAAC;QACzD,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,SAAS,EAAE,iBAAiB,EAAE,KAAK,EAAE,aAAa,EAAE,CAAA;IACvF,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,uBAAuB,CAAC,MAAM,CAAC,CAAA;IACpD,MAAM,MAAM,GAAG,cAAc,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAA;IAClE,MAAM,SAAS,GAAG,iBAAiB,IAAI,MAAM,CAAC,MAAM,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAA;IAE5E,IAAI,eAAe,EAAE,EAAE,CAAC;QACtB,OAAO,EAAE,CAAA;IACX,CAAC;IAED,IAAI,KAAK,GAAG,aAAa,CAAA;IACzB,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,KAAK,GAAG,MAAM,mBAAmB,CAAC,MAAM,CAAC,CAAA;IAC3C,CAAC;IAED,IAAI,CAAC,MAAM,IAAI,CAAC,SAAS,IAAI,CAAC,KAAK,EAAE,CAAC;QACpC,MAAM,IAAI,KAAK,CACb,iLAAiL,CAClL,CAAA;IACH,CAAC;IAED,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,CAAA;AACrC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,MAAqB,EACrB,KAIC;IAED,MAAM,KAAK,GAAG,MAAM,wBAAwB,CAAC,MAAM,CAAC,CAAA;IACpD,MAAM,QAAQ,GAAG,KAAK,EAAE,QAAQ,IAAI,0BAA0B,CAAC,MAAM,CAAC,CAAA;IAEtE,IAAI,QAAQ,CAAC,KAAK,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC;QACpC,IAAI,CAAC;YACH,OAAO,MAAM,aAAa,CAAC,GAAG,CAC5B,6BAA6B,CAC3B;gBACE,IAAI,EAAE,QAAQ,CAAC,IAAI;gBACnB,MAAM,EAAE,IAAI;aACb,EACD,KAAK,CACC,CACT,CAAA;QACH,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,IAAI,CAAC,CAAC,CAAA;YACnD,MAAM,OAAO,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAA;YACvD,IAAI,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;gBACrD,MAAM,KAAK,CAAA;YACb,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,MAAM,aAAa,CAAC,MAAM,CAC/B,6BAA6B,CAC3B;QACE,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACjD,OAAO,EAAE,QAAQ,CAAC,SAAS;QAC3B,KAAK,EAAE,QAAQ,CAAC,KAAK;QACrB,OAAO,EAAE,QAAQ,CAAC,OAAc;QAChC,SAAS,EAAE,EAAE,KAAK,EAAE,QAAQ,CAAC,KAAK,EAAE;QACpC,UAAU,EAAE,QAAQ,CAAC,UAAU;QAC/B,GAAG,CAAC,QAAQ,CAAC,oBAAoB,KAAK,SAAS;YAC7C,CAAC,CAAC,EAAE,kBAAkB,EAAE,QAAQ,CAAC,oBAAoB,EAAE;YACvD,CAAC,CAAC,EAAE,CAAC;QACP,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACjD,aAAa,EAAE,KAAK,EAAE,aAAa;QACnC,GAAG,EAAE,KAAK,EAAE,GAAG;KAChB,EACD,KAAK,CACC,CACT,CAAA;AACH,CAAC"}
@@ -0,0 +1,56 @@
1
+ export { SANDBOX_EXECUTE_COMMAND_ACTION_NAME } from "./contract.js";
2
+ export declare const sandboxSchemaDomain: import("@ekairos/domain").DomainSchemaResult<{
3
+ sandbox_sandboxes: import("@instantdb/core").EntityDef<{
4
+ sandboxUrl: import("@instantdb/core").DataAttrDef<string, false, false, false>;
5
+ status: import("@instantdb/core").DataAttrDef<string, true, true, false>;
6
+ timeout: import("@instantdb/core").DataAttrDef<number, false, false, false>;
7
+ runtime: import("@instantdb/core").DataAttrDef<string, false, false, false>;
8
+ vcpus: import("@instantdb/core").DataAttrDef<number, false, false, false>;
9
+ ports: import("@instantdb/core").DataAttrDef<any, false, false, false>;
10
+ purpose: import("@instantdb/core").DataAttrDef<string, false, true, false>;
11
+ createdAt: import("@instantdb/core").DataAttrDef<number, true, true, false>;
12
+ updatedAt: import("@instantdb/core").DataAttrDef<number, false, true, false>;
13
+ shutdownAt: import("@instantdb/core").DataAttrDef<number, false, true, false>;
14
+ }, {}, unknown>;
15
+ }, {
16
+ sandbox_user: {
17
+ readonly forward: {
18
+ readonly on: "sandbox_sandboxes";
19
+ readonly has: "one";
20
+ readonly label: "user";
21
+ };
22
+ readonly reverse: {
23
+ readonly on: "$users";
24
+ readonly has: "many";
25
+ readonly label: "sandboxes";
26
+ };
27
+ };
28
+ }, import("@instantdb/core").RoomsDef, {}, "sandbox", "sandbox">;
29
+ export declare const sandboxDomain: import("@ekairos/domain").DomainSchemaResult<{
30
+ sandbox_sandboxes: import("@instantdb/core").EntityDef<{
31
+ sandboxUrl: import("@instantdb/core").DataAttrDef<string, false, false, false>;
32
+ status: import("@instantdb/core").DataAttrDef<string, true, true, false>;
33
+ timeout: import("@instantdb/core").DataAttrDef<number, false, false, false>;
34
+ runtime: import("@instantdb/core").DataAttrDef<string, false, false, false>;
35
+ vcpus: import("@instantdb/core").DataAttrDef<number, false, false, false>;
36
+ ports: import("@instantdb/core").DataAttrDef<any, false, false, false>;
37
+ purpose: import("@instantdb/core").DataAttrDef<string, false, true, false>;
38
+ createdAt: import("@instantdb/core").DataAttrDef<number, true, true, false>;
39
+ updatedAt: import("@instantdb/core").DataAttrDef<number, false, true, false>;
40
+ shutdownAt: import("@instantdb/core").DataAttrDef<number, false, true, false>;
41
+ }, {}, unknown>;
42
+ }, {
43
+ sandbox_user: {
44
+ readonly forward: {
45
+ readonly on: "sandbox_sandboxes";
46
+ readonly has: "one";
47
+ readonly label: "user";
48
+ };
49
+ readonly reverse: {
50
+ readonly on: "$users";
51
+ readonly has: "many";
52
+ readonly label: "sandboxes";
53
+ };
54
+ };
55
+ }, import("@instantdb/core").RoomsDef, {}, "sandbox", "sandbox">;
56
+ //# sourceMappingURL=public.d.ts.map