@ekairos/sandbox 1.21.60-beta.0 → 1.21.62-beta.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.
package/dist/app.d.ts ADDED
@@ -0,0 +1,65 @@
1
+ import { Sandbox } from "@vercel/sandbox";
2
+ export type GitSource = {
3
+ gitUrl: string;
4
+ accessToken: string;
5
+ branch?: string;
6
+ };
7
+ export type CreateOrUpdateAppArgs = {
8
+ /**
9
+ * Si se pasa, se hace push schema+perms a esa app.
10
+ * Si no se pasa, se crea una nueva app con instant-cli y luego se hace push.
11
+ */
12
+ appId?: string;
13
+ /**
14
+ * Requerido si `appId` está definido (instant-cli push usa --token).
15
+ * Si no hay `appId`, se obtiene desde instant-cli init-without-files.
16
+ */
17
+ adminToken?: string;
18
+ /**
19
+ * Requerido si NO se pasa `appId` (para crear la app).
20
+ */
21
+ title?: string;
22
+ /**
23
+ * Fuente git del repo a clonar/actualizar dentro del sandbox.
24
+ * Si no se pasa, se resuelve desde envs de Vercel (VERCEL_GIT_*) o SANDBOX_GIT_*.
25
+ */
26
+ gitSource?: Partial<GitSource>;
27
+ /**
28
+ * Reusar sandbox existente (útil para iterar muchos orgs sin recrear sandbox).
29
+ */
30
+ sandbox?: Sandbox;
31
+ /**
32
+ * Directorio de trabajo dentro del sandbox.
33
+ * Default: /tmp/app-repo
34
+ */
35
+ workdir?: string;
36
+ /**
37
+ * Timeout para el sandbox temporal (ms).
38
+ * Default: 20 minutos.
39
+ */
40
+ sandboxTimeoutMs?: number;
41
+ };
42
+ export type CreateOrUpdateAppResult = {
43
+ appId: string;
44
+ adminToken: string;
45
+ sandboxId: string;
46
+ repoDir: string;
47
+ logs: {
48
+ clone?: string;
49
+ install?: string;
50
+ build?: string;
51
+ pushSchema?: string;
52
+ pushPerms?: string;
53
+ };
54
+ };
55
+ /**
56
+ * Crea una app (instant-cli) + clona repo + pnpm install + pnpm build + push schema+perms.
57
+ */
58
+ export declare function createApp(args: Omit<CreateOrUpdateAppArgs, "appId" | "adminToken">): Promise<CreateOrUpdateAppResult>;
59
+ /**
60
+ * Clona/actualiza el repo, corre install/build, y hace push schema+perms.
61
+ * - Si `appId` no existe, crea una app con instant-cli y retorna credenciales.
62
+ * - Si `appId` existe, requiere `adminToken`.
63
+ */
64
+ export declare function createOrUpdateApp(args: CreateOrUpdateAppArgs): Promise<CreateOrUpdateAppResult>;
65
+ //# sourceMappingURL=app.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAA;AAEzC,MAAM,MAAM,SAAS,GAAG;IACtB,MAAM,EAAE,MAAM,CAAA;IACd,WAAW,EAAE,MAAM,CAAA;IACnB,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB,CAAA;AAED,MAAM,MAAM,qBAAqB,GAAG;IAClC;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAA;IACd;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAA;IAEnB;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAA;IAEd;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,CAAA;IAE9B;;OAEG;IACH,OAAO,CAAC,EAAE,OAAO,CAAA;IAEjB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAA;IAEhB;;;OAGG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAC1B,CAAA;AAED,MAAM,MAAM,uBAAuB,GAAG;IACpC,KAAK,EAAE,MAAM,CAAA;IACb,UAAU,EAAE,MAAM,CAAA;IAClB,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE;QACJ,KAAK,CAAC,EAAE,MAAM,CAAA;QACd,OAAO,CAAC,EAAE,MAAM,CAAA;QAChB,KAAK,CAAC,EAAE,MAAM,CAAA;QACd,UAAU,CAAC,EAAE,MAAM,CAAA;QACnB,SAAS,CAAC,EAAE,MAAM,CAAA;KACnB,CAAA;CACF,CAAA;AAuHD;;GAEG;AACH,wBAAsB,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,qBAAqB,EAAE,OAAO,GAAG,YAAY,CAAC,GAAG,OAAO,CAAC,uBAAuB,CAAC,CAE3H;AAED;;;;GAIG;AACH,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,qBAAqB,GAAG,OAAO,CAAC,uBAAuB,CAAC,CAiIrG"}
package/dist/app.js ADDED
@@ -0,0 +1,220 @@
1
+ import { Sandbox } from "@vercel/sandbox";
2
+ function requireEnv(name) {
3
+ const v = String(process.env[name] ?? "").trim();
4
+ if (!v)
5
+ throw new Error(`Missing required env var: ${name}`);
6
+ return v;
7
+ }
8
+ function getVercelSandboxCreds() {
9
+ const teamId = String(process.env.SANDBOX_VERCEL_TEAM_ID ?? "").trim();
10
+ const projectId = String(process.env.SANDBOX_VERCEL_PROJECT_ID ?? "").trim();
11
+ const token = String(process.env.SANDBOX_VERCEL_TOKEN ?? "").trim();
12
+ if (!teamId || !projectId || !token) {
13
+ throw new Error("Missing required Vercel sandbox env vars: SANDBOX_VERCEL_TEAM_ID, SANDBOX_VERCEL_PROJECT_ID, SANDBOX_VERCEL_TOKEN");
14
+ }
15
+ return { teamId, projectId, token };
16
+ }
17
+ async function createTemporarySandbox(opts) {
18
+ const creds = getVercelSandboxCreds();
19
+ return await Sandbox.create({
20
+ teamId: creds.teamId,
21
+ projectId: creds.projectId,
22
+ token: creds.token,
23
+ timeout: opts.timeoutMs,
24
+ ports: [],
25
+ runtime: "node22",
26
+ resources: { vcpus: 2 },
27
+ });
28
+ }
29
+ function shSingleQuote(value) {
30
+ // Safest way to quote arbitrary strings in POSIX shell using single-quotes.
31
+ // abc'def => 'abc'"'"'def'
32
+ return `'${value.replace(/'/g, `'\"'\"'`)}'`;
33
+ }
34
+ function resolveGitUrlFromEnv() {
35
+ const direct = String(process.env.SANDBOX_GIT_URL ?? "").trim();
36
+ if (direct)
37
+ return direct;
38
+ const owner = String(process.env.VERCEL_GIT_REPO_OWNER ?? "").trim();
39
+ const slug = String(process.env.VERCEL_GIT_REPO_SLUG ?? "").trim();
40
+ if (owner && slug) {
41
+ return `https://github.com/${owner}/${slug}.git`;
42
+ }
43
+ throw new Error("Missing git URL. Provide gitSource.gitUrl or set SANDBOX_GIT_URL or VERCEL_GIT_REPO_OWNER/VERCEL_GIT_REPO_SLUG.");
44
+ }
45
+ function resolveGitBranchFromEnv() {
46
+ return (String(process.env.VERCEL_GIT_COMMIT_REF ?? "").trim() ||
47
+ String(process.env.SANDBOX_GIT_BRANCH ?? "").trim() ||
48
+ "main");
49
+ }
50
+ function resolveGitAccessTokenFromEnv() {
51
+ return (String(process.env.SANDBOX_GIT_ACCESS_TOKEN ?? "").trim() ||
52
+ String(process.env.GITHUB_TOKEN ?? "").trim() ||
53
+ String(process.env.GITHUB_API_KEY ?? "").trim());
54
+ }
55
+ function toAuthedGitUrl(gitUrl, accessToken) {
56
+ // Supports https URLs. For GitHub, prefer x-access-token for org tokens.
57
+ if (!gitUrl.startsWith("https://")) {
58
+ throw new Error("gitUrl must be an https URL (for token-based cloning)");
59
+ }
60
+ const withoutProto = gitUrl.slice("https://".length);
61
+ const isGithub = withoutProto.startsWith("github.com/") || withoutProto.includes("@github.com/");
62
+ const tokenUser = isGithub ? "x-access-token" : "token";
63
+ return `https://${encodeURIComponent(tokenUser)}:${encodeURIComponent(accessToken)}@${withoutProto}`;
64
+ }
65
+ function parseInstantCliInitOutput(stdout) {
66
+ const raw = String(stdout ?? "").trim();
67
+ // instant-cli prints JSON; we try to parse the last JSON object in the output.
68
+ const firstBrace = raw.indexOf("{");
69
+ const lastBrace = raw.lastIndexOf("}");
70
+ if (firstBrace === -1 || lastBrace === -1 || lastBrace <= firstBrace) {
71
+ throw new Error(`instant-cli init output did not contain JSON. Got: ${raw.slice(0, 200)}`);
72
+ }
73
+ const jsonStr = raw.slice(firstBrace, lastBrace + 1);
74
+ let parsed;
75
+ try {
76
+ parsed = JSON.parse(jsonStr);
77
+ }
78
+ catch {
79
+ throw new Error(`Failed to parse instant-cli JSON. Got: ${jsonStr.slice(0, 200)}`);
80
+ }
81
+ if (parsed?.error) {
82
+ throw new Error(`instant-cli error: ${String(parsed.error)}`);
83
+ }
84
+ const appId = String(parsed?.app?.appId ?? "");
85
+ const adminToken = String(parsed?.app?.adminToken ?? "");
86
+ if (!appId || !adminToken) {
87
+ throw new Error("instant-cli did not return appId/adminToken");
88
+ }
89
+ return { appId, adminToken };
90
+ }
91
+ async function runSh(sandbox, script) {
92
+ // Use -l to get corepack, etc. -e to fail fast.
93
+ return await sandbox.runCommand("sh", ["-lc", script]);
94
+ }
95
+ /**
96
+ * Crea una app (instant-cli) + clona repo + pnpm install + pnpm build + push schema+perms.
97
+ */
98
+ export async function createApp(args) {
99
+ return await createOrUpdateApp({ ...args, appId: undefined, adminToken: undefined });
100
+ }
101
+ /**
102
+ * Clona/actualiza el repo, corre install/build, y hace push schema+perms.
103
+ * - Si `appId` no existe, crea una app con instant-cli y retorna credenciales.
104
+ * - Si `appId` existe, requiere `adminToken`.
105
+ */
106
+ export async function createOrUpdateApp(args) {
107
+ const gitUrl = args.gitSource?.gitUrl?.trim() || resolveGitUrlFromEnv();
108
+ const branch = args.gitSource?.branch?.trim() || resolveGitBranchFromEnv();
109
+ const accessToken = args.gitSource?.accessToken?.trim() || resolveGitAccessTokenFromEnv();
110
+ if (!accessToken) {
111
+ throw new Error("Missing git access token. Provide gitSource.accessToken or set SANDBOX_GIT_ACCESS_TOKEN/GITHUB_TOKEN/GITHUB_API_KEY.");
112
+ }
113
+ const authedUrl = toAuthedGitUrl(gitUrl, accessToken);
114
+ const instantCliAuthToken = requireEnv("INSTANT_CLI_AUTH_TOKEN");
115
+ const repoDir = args.workdir?.trim() || "/tmp/app-repo";
116
+ if (args.appId && !args.adminToken) {
117
+ throw new Error("adminToken is required when appId is provided");
118
+ }
119
+ if (!args.appId && !args.title) {
120
+ throw new Error("title is required when creating an app (appId not provided)");
121
+ }
122
+ let sandbox = args.sandbox ?? (await createTemporarySandbox({ timeoutMs: args.sandboxTimeoutMs ?? 20 * 60 * 1000 }));
123
+ const sandboxId = String(sandbox.sandboxId);
124
+ const logs = {};
125
+ // 1) Clone/update repo
126
+ const cloneScript = [
127
+ "set -euo pipefail",
128
+ `REPO_DIR=${shSingleQuote(repoDir)}`,
129
+ `BRANCH=${shSingleQuote(branch)}`,
130
+ // Avoid leaking token in logs by NOT echoing URL; use a var.
131
+ `AUTH_URL=${shSingleQuote(authedUrl)}`,
132
+ "mkdir -p \"$REPO_DIR\"",
133
+ "if [ -d \"$REPO_DIR/.git\" ]; then",
134
+ " cd \"$REPO_DIR\"",
135
+ " git remote set-url origin \"$AUTH_URL\"",
136
+ " git fetch --depth 1 origin \"$BRANCH\"",
137
+ " git checkout -B \"$BRANCH\" \"origin/$BRANCH\"",
138
+ " git reset --hard \"origin/$BRANCH\"",
139
+ "else",
140
+ " rm -rf \"$REPO_DIR\"",
141
+ " git clone --depth 1 --branch \"$BRANCH\" \"$AUTH_URL\" \"$REPO_DIR\"",
142
+ "fi",
143
+ "cd \"$REPO_DIR\"",
144
+ "git rev-parse --short HEAD",
145
+ ].join("\n");
146
+ const cloneRes = await runSh(sandbox, cloneScript);
147
+ logs.clone = await cloneRes.stdout();
148
+ // 2) Install deps (pnpm) + build
149
+ const installScript = [
150
+ "set -euo pipefail",
151
+ `REPO_DIR=${shSingleQuote(repoDir)}`,
152
+ "cd \"$REPO_DIR\"",
153
+ "corepack enable",
154
+ // Keep deterministic-ish: use project pnpm version if lockfile requires it; otherwise corepack default is fine.
155
+ "pnpm --version",
156
+ "pnpm install --frozen-lockfile",
157
+ ].join("\n");
158
+ const installRes = await runSh(sandbox, installScript);
159
+ logs.install = await installRes.stdout();
160
+ const buildScript = [
161
+ "set -euo pipefail",
162
+ `REPO_DIR=${shSingleQuote(repoDir)}`,
163
+ "cd \"$REPO_DIR\"",
164
+ "pnpm build",
165
+ ].join("\n");
166
+ const buildRes = await runSh(sandbox, buildScript);
167
+ logs.build = await buildRes.stdout();
168
+ // 3) Create app if needed
169
+ let appId = args.appId;
170
+ let adminToken = args.adminToken;
171
+ if (!appId) {
172
+ const initScript = [
173
+ "set -euo pipefail",
174
+ `REPO_DIR=${shSingleQuote(repoDir)}`,
175
+ `INSTANT_CLI_AUTH_TOKEN=${shSingleQuote(instantCliAuthToken)}`,
176
+ `TITLE=${shSingleQuote(String(args.title))}`,
177
+ "export INSTANT_CLI_AUTH_TOKEN",
178
+ "cd \"$REPO_DIR\"",
179
+ "pnpm dlx instant-cli@latest init-without-files --title \"$TITLE\"",
180
+ ].join("\n");
181
+ const initRes = await runSh(sandbox, initScript);
182
+ const initOut = await initRes.stdout();
183
+ const created = parseInstantCliInitOutput(initOut);
184
+ appId = created.appId;
185
+ adminToken = created.adminToken;
186
+ }
187
+ // 4) Push schema + perms (uses --app/--token)
188
+ const pushSchemaScript = [
189
+ "set -euo pipefail",
190
+ `REPO_DIR=${shSingleQuote(repoDir)}`,
191
+ `INSTANT_CLI_AUTH_TOKEN=${shSingleQuote(instantCliAuthToken)}`,
192
+ `APP_ID=${shSingleQuote(String(appId))}`,
193
+ `ADMIN_TOKEN=${shSingleQuote(String(adminToken))}`,
194
+ "export INSTANT_CLI_AUTH_TOKEN",
195
+ "cd \"$REPO_DIR\"",
196
+ "pnpm dlx instant-cli@latest push schema --app \"$APP_ID\" --token \"$ADMIN_TOKEN\" --yes",
197
+ ].join("\n");
198
+ const pushSchemaRes = await runSh(sandbox, pushSchemaScript);
199
+ logs.pushSchema = await pushSchemaRes.stdout();
200
+ const pushPermsScript = [
201
+ "set -euo pipefail",
202
+ `REPO_DIR=${shSingleQuote(repoDir)}`,
203
+ `INSTANT_CLI_AUTH_TOKEN=${shSingleQuote(instantCliAuthToken)}`,
204
+ `APP_ID=${shSingleQuote(String(appId))}`,
205
+ `ADMIN_TOKEN=${shSingleQuote(String(adminToken))}`,
206
+ "export INSTANT_CLI_AUTH_TOKEN",
207
+ "cd \"$REPO_DIR\"",
208
+ "pnpm dlx instant-cli@latest push perms --app \"$APP_ID\" --token \"$ADMIN_TOKEN\" --yes",
209
+ ].join("\n");
210
+ const pushPermsRes = await runSh(sandbox, pushPermsScript);
211
+ logs.pushPerms = await pushPermsRes.stdout();
212
+ return {
213
+ appId: String(appId),
214
+ adminToken: String(adminToken),
215
+ sandboxId: String(sandboxId),
216
+ repoDir,
217
+ logs,
218
+ };
219
+ }
220
+ //# sourceMappingURL=app.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app.js","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAA;AA+DzC,SAAS,UAAU,CAAC,IAAY;IAC9B,MAAM,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAA;IAChD,IAAI,CAAC,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,6BAA6B,IAAI,EAAE,CAAC,CAAA;IAC5D,OAAO,CAAC,CAAA;AACV,CAAC;AAED,SAAS,qBAAqB;IAC5B,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,sBAAsB,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAA;IACtE,MAAM,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,yBAAyB,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAA;IAC5E,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,oBAAoB,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAA;IAEnE,IAAI,CAAC,MAAM,IAAI,CAAC,SAAS,IAAI,CAAC,KAAK,EAAE,CAAC;QACpC,MAAM,IAAI,KAAK,CAAC,mHAAmH,CAAC,CAAA;IACtI,CAAC;IAED,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,CAAA;AACrC,CAAC;AAED,KAAK,UAAU,sBAAsB,CAAC,IAA2B;IAC/D,MAAM,KAAK,GAAG,qBAAqB,EAAE,CAAA;IACrC,OAAO,MAAM,OAAO,CAAC,MAAM,CAAC;QAC1B,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,OAAO,EAAE,IAAI,CAAC,SAAS;QACvB,KAAK,EAAE,EAAE;QACT,OAAO,EAAE,QAAQ;QACjB,SAAS,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE;KACjB,CAAC,CAAA;AACX,CAAC;AAED,SAAS,aAAa,CAAC,KAAa;IAClC,4EAA4E;IAC5E,6BAA6B;IAC7B,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC,GAAG,CAAA;AAC9C,CAAC;AAED,SAAS,oBAAoB;IAC3B,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAA;IAC/D,IAAI,MAAM;QAAE,OAAO,MAAM,CAAA;IAEzB,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,qBAAqB,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAA;IACpE,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,oBAAoB,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAA;IAClE,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;QAClB,OAAO,sBAAsB,KAAK,IAAI,IAAI,MAAM,CAAA;IAClD,CAAC;IAED,MAAM,IAAI,KAAK,CACb,iHAAiH,CAClH,CAAA;AACH,CAAC;AAED,SAAS,uBAAuB;IAC9B,OAAO,CACL,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,qBAAqB,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE;QACtD,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE;QACnD,MAAM,CACP,CAAA;AACH,CAAC;AAED,SAAS,4BAA4B;IACnC,OAAO,CACL,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,wBAAwB,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE;QACzD,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE;QAC7C,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAChD,CAAA;AACH,CAAC;AAED,SAAS,cAAc,CAAC,MAAc,EAAE,WAAmB;IACzD,yEAAyE;IACzE,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QACnC,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAA;IAC1E,CAAC;IAED,MAAM,YAAY,GAAG,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAA;IACpD,MAAM,QAAQ,GAAG,YAAY,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,YAAY,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAA;IAEhG,MAAM,SAAS,GAAG,QAAQ,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,OAAO,CAAA;IACvD,OAAO,WAAW,kBAAkB,CAAC,SAAS,CAAC,IAAI,kBAAkB,CAAC,WAAW,CAAC,IAAI,YAAY,EAAE,CAAA;AACtG,CAAC;AAED,SAAS,yBAAyB,CAAC,MAAc;IAC/C,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAA;IAEvC,+EAA+E;IAC/E,MAAM,UAAU,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;IACnC,MAAM,SAAS,GAAG,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,CAAA;IACtC,IAAI,UAAU,KAAK,CAAC,CAAC,IAAI,SAAS,KAAK,CAAC,CAAC,IAAI,SAAS,IAAI,UAAU,EAAE,CAAC;QACrE,MAAM,IAAI,KAAK,CAAC,sDAAsD,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAA;IAC5F,CAAC;IAED,MAAM,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC,UAAU,EAAE,SAAS,GAAG,CAAC,CAAC,CAAA;IACpD,IAAI,MAAW,CAAA;IACf,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;IAC9B,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CAAC,0CAA0C,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAA;IACpF,CAAC;IAED,IAAI,MAAM,EAAE,KAAK,EAAE,CAAC;QAClB,MAAM,IAAI,KAAK,CAAC,sBAAsB,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;IAC/D,CAAC;IAED,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,IAAI,EAAE,CAAC,CAAA;IAC9C,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,EAAE,UAAU,IAAI,EAAE,CAAC,CAAA;IACxD,IAAI,CAAC,KAAK,IAAI,CAAC,UAAU,EAAE,CAAC;QAC1B,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAA;IAChE,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,CAAA;AAC9B,CAAC;AAED,KAAK,UAAU,KAAK,CAAC,OAAgB,EAAE,MAAc;IACnD,gDAAgD;IAChD,OAAO,MAAM,OAAO,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAA;AACxD,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,IAAyD;IACvF,OAAO,MAAM,iBAAiB,CAAC,EAAE,GAAG,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC,CAAA;AACtF,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,IAA2B;IACjE,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,oBAAoB,EAAE,CAAA;IACvE,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,uBAAuB,EAAE,CAAA;IAC1E,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,4BAA4B,EAAE,CAAA;IACzF,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CACb,sHAAsH,CACvH,CAAA;IACH,CAAC;IAED,MAAM,SAAS,GAAG,cAAc,CAAC,MAAM,EAAE,WAAW,CAAC,CAAA;IAErD,MAAM,mBAAmB,GAAG,UAAU,CAAC,wBAAwB,CAAC,CAAA;IAChE,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,eAAe,CAAA;IAEvD,IAAI,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;QACnC,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAA;IAClE,CAAC;IACD,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;QAC/B,MAAM,IAAI,KAAK,CAAC,6DAA6D,CAAC,CAAA;IAChF,CAAC;IAED,IAAI,OAAO,GAAY,IAAI,CAAC,OAAO,IAAI,CAAC,MAAM,sBAAsB,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,gBAAgB,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC,CAAA;IAC7H,MAAM,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;IAE3C,MAAM,IAAI,GAAoC,EAAE,CAAA;IAEhD,uBAAuB;IACvB,MAAM,WAAW,GAAG;QAClB,mBAAmB;QACnB,YAAY,aAAa,CAAC,OAAO,CAAC,EAAE;QACpC,UAAU,aAAa,CAAC,MAAM,CAAC,EAAE;QACjC,6DAA6D;QAC7D,YAAY,aAAa,CAAC,SAAS,CAAC,EAAE;QACtC,wBAAwB;QACxB,oCAAoC;QACpC,oBAAoB;QACpB,2CAA2C;QAC3C,0CAA0C;QAC1C,kDAAkD;QAClD,uCAAuC;QACvC,MAAM;QACN,wBAAwB;QACxB,wEAAwE;QACxE,IAAI;QACJ,kBAAkB;QAClB,4BAA4B;KAC7B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAEZ,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,OAAO,EAAE,WAAW,CAAC,CAAA;IAClD,IAAI,CAAC,KAAK,GAAG,MAAM,QAAQ,CAAC,MAAM,EAAE,CAAA;IAEpC,iCAAiC;IACjC,MAAM,aAAa,GAAG;QACpB,mBAAmB;QACnB,YAAY,aAAa,CAAC,OAAO,CAAC,EAAE;QACpC,kBAAkB;QAClB,iBAAiB;QACjB,gHAAgH;QAChH,gBAAgB;QAChB,gCAAgC;KACjC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACZ,MAAM,UAAU,GAAG,MAAM,KAAK,CAAC,OAAO,EAAE,aAAa,CAAC,CAAA;IACtD,IAAI,CAAC,OAAO,GAAG,MAAM,UAAU,CAAC,MAAM,EAAE,CAAA;IAExC,MAAM,WAAW,GAAG;QAClB,mBAAmB;QACnB,YAAY,aAAa,CAAC,OAAO,CAAC,EAAE;QACpC,kBAAkB;QAClB,YAAY;KACb,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACZ,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,OAAO,EAAE,WAAW,CAAC,CAAA;IAClD,IAAI,CAAC,KAAK,GAAG,MAAM,QAAQ,CAAC,MAAM,EAAE,CAAA;IAEpC,0BAA0B;IAC1B,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAA;IACtB,IAAI,UAAU,GAAG,IAAI,CAAC,UAAU,CAAA;IAEhC,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,UAAU,GAAG;YACjB,mBAAmB;YACnB,YAAY,aAAa,CAAC,OAAO,CAAC,EAAE;YACpC,0BAA0B,aAAa,CAAC,mBAAmB,CAAC,EAAE;YAC9D,SAAS,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE;YAC5C,+BAA+B;YAC/B,kBAAkB;YAClB,mEAAmE;SACpE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACZ,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,OAAO,EAAE,UAAU,CAAC,CAAA;QAChD,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,MAAM,EAAE,CAAA;QACtC,MAAM,OAAO,GAAG,yBAAyB,CAAC,OAAO,CAAC,CAAA;QAClD,KAAK,GAAG,OAAO,CAAC,KAAK,CAAA;QACrB,UAAU,GAAG,OAAO,CAAC,UAAU,CAAA;IACjC,CAAC;IAED,8CAA8C;IAC9C,MAAM,gBAAgB,GAAG;QACvB,mBAAmB;QACnB,YAAY,aAAa,CAAC,OAAO,CAAC,EAAE;QACpC,0BAA0B,aAAa,CAAC,mBAAmB,CAAC,EAAE;QAC9D,UAAU,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE;QACxC,eAAe,aAAa,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE;QAClD,+BAA+B;QAC/B,kBAAkB;QAClB,0FAA0F;KAC3F,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACZ,MAAM,aAAa,GAAG,MAAM,KAAK,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAA;IAC5D,IAAI,CAAC,UAAU,GAAG,MAAM,aAAa,CAAC,MAAM,EAAE,CAAA;IAE9C,MAAM,eAAe,GAAG;QACtB,mBAAmB;QACnB,YAAY,aAAa,CAAC,OAAO,CAAC,EAAE;QACpC,0BAA0B,aAAa,CAAC,mBAAmB,CAAC,EAAE;QAC9D,UAAU,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE;QACxC,eAAe,aAAa,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE;QAClD,+BAA+B;QAC/B,kBAAkB;QAClB,yFAAyF;KAC1F,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACZ,MAAM,YAAY,GAAG,MAAM,KAAK,CAAC,OAAO,EAAE,eAAe,CAAC,CAAA;IAC1D,IAAI,CAAC,SAAS,GAAG,MAAM,YAAY,CAAC,MAAM,EAAE,CAAA;IAE5C,OAAO;QACL,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC;QACpB,UAAU,EAAE,MAAM,CAAC,UAAU,CAAC;QAC9B,SAAS,EAAE,MAAM,CAAC,SAAS,CAAC;QAC5B,OAAO;QACP,IAAI;KACL,CAAA;AACH,CAAC"}
package/dist/index.d.ts CHANGED
@@ -3,4 +3,8 @@ export { sandboxDomain } from "./schema.js";
3
3
  export { SandboxService } from "./service.js";
4
4
  export type { CommandResult } from "./commands.js";
5
5
  export { runCommandInSandbox } from "./commands.js";
6
+ export { createApp, createOrUpdateApp } from "./app.js";
7
+ export type { CreateOrUpdateAppArgs, CreateOrUpdateAppResult, GitSource } from "./app.js";
8
+ export { createVercelSandbox, getVercelSandboxCredsFromEnv, runShInSandbox, shQuote, stopSandboxBestEffort, streamToBuffer, } from "./runtime.js";
9
+ export type { SandboxRunResult, VercelSandboxCreds } from "./runtime.js";
6
10
  //# sourceMappingURL=index.d.ts.map
@@ -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,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,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,aAAa,CAAA;AAC3C,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAC7C,YAAY,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAClD,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAA;AAEnD,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
1
  export { sandboxDomain } from "./schema.js";
2
2
  export { SandboxService } from "./service.js";
3
3
  export { runCommandInSandbox } from "./commands.js";
4
+ export { createApp, createOrUpdateApp } from "./app.js";
5
+ export { createVercelSandbox, getVercelSandboxCredsFromEnv, runShInSandbox, shQuote, stopSandboxBestEffort, streamToBuffer, } from "./runtime.js";
4
6
  //# sourceMappingURL=index.js.map
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;AAE7C,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAA"}
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;AAE7C,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAA;AAEnD,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"}
package/dist/runtime.d.ts CHANGED
@@ -1,11 +1,23 @@
1
- export type SandboxRuntime = {
2
- /**
3
- * Instant Admin DB (or compatible) that contains `sandbox_sandboxes`.
4
- */
5
- db: any;
1
+ import { Sandbox } from "@vercel/sandbox";
2
+ export type VercelSandboxCreds = {
3
+ teamId: string;
4
+ projectId: string;
5
+ token: string;
6
6
  };
7
- export type SandboxRuntimeResolver = () => Promise<SandboxRuntime> | SandboxRuntime;
8
- export declare function configureSandboxRuntime(resolver: SandboxRuntimeResolver): void;
9
- export declare function isSandboxRuntimeConfigured(): boolean;
10
- export declare function resolveSandboxRuntime(): Promise<SandboxRuntime>;
7
+ export type SandboxRunResult = {
8
+ exitCode: number;
9
+ stdout: string;
10
+ stderr: string;
11
+ };
12
+ export declare function getVercelSandboxCredsFromEnv(): VercelSandboxCreds;
13
+ export declare function shQuote(value: string): string;
14
+ export declare function createVercelSandbox(opts: {
15
+ creds: VercelSandboxCreds;
16
+ timeoutMs: number;
17
+ runtime?: string;
18
+ vcpus?: number;
19
+ }): Promise<Sandbox>;
20
+ export declare function runShInSandbox(sandbox: Sandbox, script: string): Promise<SandboxRunResult>;
21
+ export declare function streamToBuffer(stream: any): Promise<Buffer>;
22
+ export declare function stopSandboxBestEffort(sandbox: Sandbox): Promise<void>;
11
23
  //# sourceMappingURL=runtime.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,cAAc,GAAG;IAC3B;;OAEG;IACH,EAAE,EAAE,GAAG,CAAA;CACR,CAAA;AAED,MAAM,MAAM,sBAAsB,GAAG,MAAM,OAAO,CAAC,cAAc,CAAC,GAAG,cAAc,CAAA;AAInF,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,sBAAsB,QAEvE;AAED,wBAAgB,0BAA0B,YAEzC;AAED,wBAAsB,qBAAqB,IAAI,OAAO,CAAC,cAAc,CAAC,CAMrE"}
1
+ {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAA;AAEzC,MAAM,MAAM,kBAAkB,GAAG;IAC/B,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,EAAE,MAAM,CAAA;IACjB,KAAK,EAAE,MAAM,CAAA;CACd,CAAA;AAED,MAAM,MAAM,gBAAgB,GAAG;IAC7B,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;CACf,CAAA;AAED,wBAAgB,4BAA4B,IAAI,kBAAkB,CAYjE;AAED,wBAAgB,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAG7C;AAED,wBAAsB,mBAAmB,CAAC,IAAI,EAAE;IAC9C,KAAK,EAAE,kBAAkB,CAAA;IACzB,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,KAAK,CAAC,EAAE,MAAM,CAAA;CACf,GAAG,OAAO,CAAC,OAAO,CAAC,CAWnB;AAED,wBAAsB,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAKhG;AAED,wBAAsB,cAAc,CAAC,MAAM,EAAE,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,CASjE;AAED,wBAAsB,qBAAqB,CAAC,OAAO,EAAE,OAAO,iBAM3D"}
package/dist/runtime.js CHANGED
@@ -1,14 +1,55 @@
1
- let runtimeResolver = null;
2
- export function configureSandboxRuntime(resolver) {
3
- runtimeResolver = resolver;
1
+ import { Sandbox } from "@vercel/sandbox";
2
+ export function getVercelSandboxCredsFromEnv() {
3
+ const teamId = String(process.env.SANDBOX_VERCEL_TEAM_ID ?? "").trim();
4
+ const projectId = String(process.env.SANDBOX_VERCEL_PROJECT_ID ?? "").trim();
5
+ const token = String(process.env.SANDBOX_VERCEL_TOKEN ?? "").trim();
6
+ if (!teamId || !projectId || !token) {
7
+ throw new Error("Missing Vercel Sandbox env vars: SANDBOX_VERCEL_TEAM_ID, SANDBOX_VERCEL_PROJECT_ID, SANDBOX_VERCEL_TOKEN");
8
+ }
9
+ return { teamId, projectId, token };
10
+ }
11
+ export function shQuote(value) {
12
+ // POSIX single-quote escaping
13
+ return `'${String(value).replace(/'/g, `'\"'\"'`)}'`;
14
+ }
15
+ export async function createVercelSandbox(opts) {
16
+ const { creds, timeoutMs } = opts;
17
+ return await Sandbox.create({
18
+ teamId: creds.teamId,
19
+ projectId: creds.projectId,
20
+ token: creds.token,
21
+ runtime: (opts.runtime ?? "node22"),
22
+ timeout: timeoutMs,
23
+ ports: [],
24
+ resources: { vcpus: opts.vcpus ?? 2 },
25
+ });
4
26
  }
5
- export function isSandboxRuntimeConfigured() {
6
- return Boolean(runtimeResolver);
27
+ export async function runShInSandbox(sandbox, script) {
28
+ const res = await sandbox.runCommand("sh", ["-lc", script]);
29
+ const stdout = await res.stdout();
30
+ const stderr = await res.stderr();
31
+ return { exitCode: res.exitCode, stdout, stderr };
7
32
  }
8
- export async function resolveSandboxRuntime() {
9
- if (!runtimeResolver) {
10
- throw new Error("Sandbox runtime is not configured.");
33
+ export async function streamToBuffer(stream) {
34
+ const chunks = [];
35
+ for await (const chunk of stream) {
36
+ if (typeof chunk === "string")
37
+ chunks.push(Buffer.from(chunk, "utf8"));
38
+ else if (chunk instanceof Uint8Array)
39
+ chunks.push(Buffer.from(chunk));
40
+ else if (chunk instanceof ArrayBuffer)
41
+ chunks.push(Buffer.from(chunk));
42
+ else if (chunk)
43
+ chunks.push(Buffer.from(chunk));
44
+ }
45
+ return Buffer.concat(chunks);
46
+ }
47
+ export async function stopSandboxBestEffort(sandbox) {
48
+ try {
49
+ await sandbox.stop();
50
+ }
51
+ catch {
52
+ // ignore
11
53
  }
12
- return await runtimeResolver();
13
54
  }
14
55
  //# sourceMappingURL=runtime.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"AASA,IAAI,eAAe,GAAkC,IAAI,CAAA;AAEzD,MAAM,UAAU,uBAAuB,CAAC,QAAgC;IACtE,eAAe,GAAG,QAAQ,CAAA;AAC5B,CAAC;AAED,MAAM,UAAU,0BAA0B;IACxC,OAAO,OAAO,CAAC,eAAe,CAAC,CAAA;AACjC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,qBAAqB;IACzC,IAAI,CAAC,eAAe,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAA;IACvD,CAAC;IAED,OAAO,MAAM,eAAe,EAAE,CAAA;AAChC,CAAC"}
1
+ {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ekairos/sandbox",
3
- "version": "1.21.60-beta.0",
3
+ "version": "1.21.62-beta.0",
4
4
  "description": "Pulzar Sandbox - Provider-agnostic sandbox helpers",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -25,6 +25,18 @@
25
25
  "require": "./dist/index.js",
26
26
  "default": "./dist/index.js"
27
27
  },
28
+ "./app": {
29
+ "types": "./dist/app.d.ts",
30
+ "import": "./dist/app.js",
31
+ "require": "./dist/app.js",
32
+ "default": "./dist/app.js"
33
+ },
34
+ "./runtime": {
35
+ "types": "./dist/runtime.d.ts",
36
+ "import": "./dist/runtime.js",
37
+ "require": "./dist/runtime.js",
38
+ "default": "./dist/runtime.js"
39
+ },
28
40
  "./schema": {
29
41
  "types": "./dist/schema.d.ts",
30
42
  "import": "./dist/schema.js",
@@ -39,7 +51,7 @@
39
51
  "typecheck": "tsc --noEmit"
40
52
  },
41
53
  "dependencies": {
42
- "@ekairos/domain": "^1.21.60-beta.0",
54
+ "@ekairos/domain": "^1.21.62-beta.0",
43
55
  "@instantdb/admin": "^0.22.13",
44
56
  "@instantdb/core": "^0.22.13",
45
57
  "@vercel/sandbox": "^0.0.23",