dev3000 0.0.186 → 0.0.188

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 (235) hide show
  1. package/README.md +101 -13
  2. package/bin/dev3000 +1 -2
  3. package/dist/cdp-monitor.d.ts +7 -12
  4. package/dist/cdp-monitor.d.ts.map +1 -1
  5. package/dist/cdp-monitor.js +86 -170
  6. package/dist/cdp-monitor.js.map +1 -1
  7. package/dist/cli.d.ts +1 -2
  8. package/dist/cli.d.ts.map +1 -1
  9. package/dist/cli.js +1 -1369
  10. package/dist/cli.js.map +1 -1
  11. package/dist/index.d.ts +1 -2
  12. package/dist/index.d.ts.map +1 -1
  13. package/dist/index.js +0 -1
  14. package/dist/index.js.map +1 -1
  15. package/dist/portless.d.ts +3 -0
  16. package/dist/portless.d.ts.map +1 -1
  17. package/dist/portless.js +10 -0
  18. package/dist/portless.js.map +1 -1
  19. package/dist/runtime/bridge.d.ts +26 -0
  20. package/dist/runtime/bridge.d.ts.map +1 -0
  21. package/dist/runtime/bridge.js +340 -0
  22. package/dist/runtime/bridge.js.map +1 -0
  23. package/dist/runtime/chrome-isolation.d.ts +16 -0
  24. package/dist/runtime/chrome-isolation.d.ts.map +1 -0
  25. package/dist/runtime/chrome-isolation.js +119 -0
  26. package/dist/runtime/chrome-isolation.js.map +1 -0
  27. package/dist/runtime/cli.js +116 -26
  28. package/dist/runtime/cli.js.map +1 -1
  29. package/dist/runtime/event-views.d.ts +21 -0
  30. package/dist/runtime/event-views.d.ts.map +1 -0
  31. package/dist/runtime/event-views.js +53 -0
  32. package/dist/runtime/event-views.js.map +1 -0
  33. package/dist/runtime/harness.d.ts +16 -0
  34. package/dist/runtime/harness.d.ts.map +1 -0
  35. package/dist/runtime/harness.js +68 -0
  36. package/dist/runtime/harness.js.map +1 -0
  37. package/dist/runtime/local-proxy.d.ts +12 -0
  38. package/dist/runtime/local-proxy.d.ts.map +1 -0
  39. package/dist/runtime/local-proxy.js +114 -0
  40. package/dist/runtime/local-proxy.js.map +1 -0
  41. package/dist/runtime/runtime.d.ts +14 -0
  42. package/dist/runtime/runtime.d.ts.map +1 -1
  43. package/dist/runtime/runtime.js +80 -19
  44. package/dist/runtime/runtime.js.map +1 -1
  45. package/dist/runtime/sandbox-agent.d.ts +6 -0
  46. package/dist/runtime/sandbox-agent.d.ts.map +1 -0
  47. package/dist/runtime/sandbox-agent.js +35 -0
  48. package/dist/runtime/sandbox-agent.js.map +1 -0
  49. package/dist/runtime/sandbox-command.d.ts +9 -0
  50. package/dist/runtime/sandbox-command.d.ts.map +1 -0
  51. package/dist/runtime/sandbox-command.js +101 -0
  52. package/dist/runtime/sandbox-command.js.map +1 -0
  53. package/dist/runtime/sandbox-proxy.d.ts +11 -0
  54. package/dist/runtime/sandbox-proxy.d.ts.map +1 -0
  55. package/dist/runtime/sandbox-proxy.js +123 -0
  56. package/dist/runtime/sandbox-proxy.js.map +1 -0
  57. package/dist/runtime/sandbox-sessions.d.ts +31 -0
  58. package/dist/runtime/sandbox-sessions.d.ts.map +1 -0
  59. package/dist/runtime/sandbox-sessions.js +102 -0
  60. package/dist/runtime/sandbox-sessions.js.map +1 -0
  61. package/dist/runtime/sandbox.d.ts +21 -0
  62. package/dist/runtime/sandbox.d.ts.map +1 -0
  63. package/dist/runtime/sandbox.js +481 -0
  64. package/dist/runtime/sandbox.js.map +1 -0
  65. package/dist/utils/agent-browser.d.ts +2 -120
  66. package/dist/utils/agent-browser.d.ts.map +1 -1
  67. package/dist/utils/agent-browser.js +13 -376
  68. package/dist/utils/agent-browser.js.map +1 -1
  69. package/dist/utils/project-name.d.ts +2 -2
  70. package/dist/utils/project-name.js +2 -2
  71. package/package.json +13 -22
  72. package/skills/d3k/SKILL.md +23 -1
  73. package/dist/commands/crawl.d.ts +0 -12
  74. package/dist/commands/crawl.d.ts.map +0 -1
  75. package/dist/commands/crawl.js +0 -101
  76. package/dist/commands/crawl.js.map +0 -1
  77. package/dist/commands/errors.d.ts +0 -14
  78. package/dist/commands/errors.d.ts.map +0 -1
  79. package/dist/commands/errors.js +0 -246
  80. package/dist/commands/errors.js.map +0 -1
  81. package/dist/commands/fix.d.ts +0 -13
  82. package/dist/commands/fix.d.ts.map +0 -1
  83. package/dist/commands/fix.js +0 -219
  84. package/dist/commands/fix.js.map +0 -1
  85. package/dist/commands/logs.d.ts +0 -13
  86. package/dist/commands/logs.d.ts.map +0 -1
  87. package/dist/commands/logs.js +0 -146
  88. package/dist/commands/logs.js.map +0 -1
  89. package/dist/commands/resume.d.ts +0 -11
  90. package/dist/commands/resume.d.ts.map +0 -1
  91. package/dist/commands/resume.js +0 -75
  92. package/dist/commands/resume.js.map +0 -1
  93. package/dist/commands/status.d.ts +0 -21
  94. package/dist/commands/status.d.ts.map +0 -1
  95. package/dist/commands/status.js +0 -44
  96. package/dist/commands/status.js.map +0 -1
  97. package/dist/components/AgentSelector.d.ts +0 -12
  98. package/dist/components/AgentSelector.d.ts.map +0 -1
  99. package/dist/components/AgentSelector.js +0 -99
  100. package/dist/components/AgentSelector.js.map +0 -1
  101. package/dist/components/PackageSelector.d.ts +0 -13
  102. package/dist/components/PackageSelector.d.ts.map +0 -1
  103. package/dist/components/PackageSelector.js +0 -79
  104. package/dist/components/PackageSelector.js.map +0 -1
  105. package/dist/constants/log-colors.d.ts +0 -43
  106. package/dist/constants/log-colors.d.ts.map +0 -1
  107. package/dist/constants/log-colors.js +0 -59
  108. package/dist/constants/log-colors.js.map +0 -1
  109. package/dist/dev-environment.d.ts +0 -187
  110. package/dist/dev-environment.d.ts.map +0 -1
  111. package/dist/dev-environment.js +0 -2248
  112. package/dist/dev-environment.js.map +0 -1
  113. package/dist/screencast-manager.d.ts +0 -78
  114. package/dist/screencast-manager.d.ts.map +0 -1
  115. package/dist/screencast-manager.js +0 -529
  116. package/dist/screencast-manager.js.map +0 -1
  117. package/dist/services/parsers/error-detectors/base.d.ts +0 -24
  118. package/dist/services/parsers/error-detectors/base.d.ts.map +0 -1
  119. package/dist/services/parsers/error-detectors/base.js +0 -44
  120. package/dist/services/parsers/error-detectors/base.js.map +0 -1
  121. package/dist/services/parsers/error-detectors/index.d.ts +0 -6
  122. package/dist/services/parsers/error-detectors/index.d.ts.map +0 -1
  123. package/dist/services/parsers/error-detectors/index.js +0 -6
  124. package/dist/services/parsers/error-detectors/index.js.map +0 -1
  125. package/dist/services/parsers/error-detectors/nextjs.d.ts +0 -9
  126. package/dist/services/parsers/error-detectors/nextjs.d.ts.map +0 -1
  127. package/dist/services/parsers/error-detectors/nextjs.js +0 -52
  128. package/dist/services/parsers/error-detectors/nextjs.js.map +0 -1
  129. package/dist/services/parsers/index.d.ts +0 -9
  130. package/dist/services/parsers/index.d.ts.map +0 -1
  131. package/dist/services/parsers/index.js +0 -10
  132. package/dist/services/parsers/index.js.map +0 -1
  133. package/dist/services/parsers/log-parsers/base.d.ts +0 -26
  134. package/dist/services/parsers/log-parsers/base.d.ts.map +0 -1
  135. package/dist/services/parsers/log-parsers/base.js +0 -6
  136. package/dist/services/parsers/log-parsers/base.js.map +0 -1
  137. package/dist/services/parsers/log-parsers/index.d.ts +0 -6
  138. package/dist/services/parsers/log-parsers/index.d.ts.map +0 -1
  139. package/dist/services/parsers/log-parsers/index.js +0 -5
  140. package/dist/services/parsers/log-parsers/index.js.map +0 -1
  141. package/dist/services/parsers/log-parsers/standard.d.ts +0 -9
  142. package/dist/services/parsers/log-parsers/standard.d.ts.map +0 -1
  143. package/dist/services/parsers/log-parsers/standard.js +0 -17
  144. package/dist/services/parsers/log-parsers/standard.js.map +0 -1
  145. package/dist/services/parsers/output-processor.d.ts +0 -39
  146. package/dist/services/parsers/output-processor.d.ts.map +0 -1
  147. package/dist/services/parsers/output-processor.js +0 -54
  148. package/dist/services/parsers/output-processor.js.map +0 -1
  149. package/dist/skills/d3k/internal-skill.md +0 -32
  150. package/dist/skills/index.d.ts +0 -54
  151. package/dist/skills/index.d.ts.map +0 -1
  152. package/dist/skills/index.js +0 -214
  153. package/dist/skills/index.js.map +0 -1
  154. package/dist/src/tui-interface-impl.tsx +0 -644
  155. package/dist/tui-interface-impl.d.ts +0 -30
  156. package/dist/tui-interface-impl.d.ts.map +0 -1
  157. package/dist/tui-interface-impl.js +0 -403
  158. package/dist/tui-interface-impl.js.map +0 -1
  159. package/dist/tui-interface-opentui.d.ts +0 -33
  160. package/dist/tui-interface-opentui.d.ts.map +0 -1
  161. package/dist/tui-interface-opentui.js +0 -1128
  162. package/dist/tui-interface-opentui.js.map +0 -1
  163. package/dist/tui-interface.d.ts +0 -38
  164. package/dist/tui-interface.d.ts.map +0 -1
  165. package/dist/tui-interface.js +0 -84
  166. package/dist/tui-interface.js.map +0 -1
  167. package/dist/utils/agent-detection.d.ts +0 -17
  168. package/dist/utils/agent-detection.d.ts.map +0 -1
  169. package/dist/utils/agent-detection.js +0 -81
  170. package/dist/utils/agent-detection.js.map +0 -1
  171. package/dist/utils/agent-selection.d.ts +0 -25
  172. package/dist/utils/agent-selection.d.ts.map +0 -1
  173. package/dist/utils/agent-selection.js +0 -73
  174. package/dist/utils/agent-selection.js.map +0 -1
  175. package/dist/utils/browser-command-argv.d.ts +0 -19
  176. package/dist/utils/browser-command-argv.d.ts.map +0 -1
  177. package/dist/utils/browser-command-argv.js +0 -149
  178. package/dist/utils/browser-command-argv.js.map +0 -1
  179. package/dist/utils/build-version.d.ts +0 -2
  180. package/dist/utils/build-version.d.ts.map +0 -1
  181. package/dist/utils/build-version.js +0 -8
  182. package/dist/utils/build-version.js.map +0 -1
  183. package/dist/utils/cli-options.d.ts +0 -5
  184. package/dist/utils/cli-options.d.ts.map +0 -1
  185. package/dist/utils/cli-options.js +0 -36
  186. package/dist/utils/cli-options.js.map +0 -1
  187. package/dist/utils/d3k-dir.d.ts +0 -3
  188. package/dist/utils/d3k-dir.d.ts.map +0 -1
  189. package/dist/utils/d3k-dir.js +0 -12
  190. package/dist/utils/d3k-dir.js.map +0 -1
  191. package/dist/utils/d3k-skill-installer.d.ts +0 -4
  192. package/dist/utils/d3k-skill-installer.d.ts.map +0 -1
  193. package/dist/utils/d3k-skill-installer.js +0 -30
  194. package/dist/utils/d3k-skill-installer.js.map +0 -1
  195. package/dist/utils/log-filename.d.ts +0 -30
  196. package/dist/utils/log-filename.d.ts.map +0 -1
  197. package/dist/utils/log-filename.js +0 -60
  198. package/dist/utils/log-filename.js.map +0 -1
  199. package/dist/utils/project-detector.d.ts +0 -25
  200. package/dist/utils/project-detector.d.ts.map +0 -1
  201. package/dist/utils/project-detector.js +0 -153
  202. package/dist/utils/project-detector.js.map +0 -1
  203. package/dist/utils/project-metadata.d.ts +0 -4
  204. package/dist/utils/project-metadata.d.ts.map +0 -1
  205. package/dist/utils/project-metadata.js +0 -48
  206. package/dist/utils/project-metadata.js.map +0 -1
  207. package/dist/utils/repo-validate.d.ts +0 -2
  208. package/dist/utils/repo-validate.d.ts.map +0 -1
  209. package/dist/utils/repo-validate.js +0 -10
  210. package/dist/utils/repo-validate.js.map +0 -1
  211. package/dist/utils/session.d.ts +0 -19
  212. package/dist/utils/session.d.ts.map +0 -1
  213. package/dist/utils/session.js +0 -65
  214. package/dist/utils/session.js.map +0 -1
  215. package/dist/utils/skill-installer.d.ts +0 -65
  216. package/dist/utils/skill-installer.d.ts.map +0 -1
  217. package/dist/utils/skill-installer.js +0 -265
  218. package/dist/utils/skill-installer.js.map +0 -1
  219. package/dist/utils/timestamp.d.ts +0 -20
  220. package/dist/utils/timestamp.d.ts.map +0 -1
  221. package/dist/utils/timestamp.js +0 -57
  222. package/dist/utils/timestamp.js.map +0 -1
  223. package/dist/utils/tmux-helpers.d.ts +0 -36
  224. package/dist/utils/tmux-helpers.d.ts.map +0 -1
  225. package/dist/utils/tmux-helpers.js +0 -118
  226. package/dist/utils/tmux-helpers.js.map +0 -1
  227. package/dist/utils/user-config.d.ts +0 -12
  228. package/dist/utils/user-config.d.ts.map +0 -1
  229. package/dist/utils/user-config.js +0 -46
  230. package/dist/utils/user-config.js.map +0 -1
  231. package/dist/utils/version-check.d.ts +0 -52
  232. package/dist/utils/version-check.d.ts.map +0 -1
  233. package/dist/utils/version-check.js +0 -304
  234. package/dist/utils/version-check.js.map +0 -1
  235. package/src/tui-interface-impl.tsx +0 -644
@@ -0,0 +1,481 @@
1
+ import { spawn } from "node:child_process";
2
+ import { createHash, randomBytes, randomUUID } from "node:crypto";
3
+ import { existsSync, mkdtempSync, readFileSync, rmSync } from "node:fs";
4
+ import { mkdir, writeFile } from "node:fs/promises";
5
+ import { createServer } from "node:net";
6
+ import { homedir, tmpdir } from "node:os";
7
+ import { dirname, join, posix, resolve } from "node:path";
8
+ import { fileURLToPath } from "node:url";
9
+ import { parseEnv } from "node:util";
10
+ import { Sandbox } from "@vercel/sandbox";
11
+ import { CDPMonitor } from "../cdp-monitor.js";
12
+ import { isPortlessHostnameHeld, preparePortlessRuntime, registerPortlessAlias, removePortlessAlias } from "../portless.js";
13
+ import { connectCompanion } from "./bridge.js";
14
+ import { portlessCertificatePin, sandboxChromePath } from "./chrome-isolation.js";
15
+ import { harnessInvocation, harnessSkill } from "./harness.js";
16
+ import { startLocalProxy } from "./local-proxy.js";
17
+ import { prepareSandboxFx, SANDBOX_AGENT_BIN, SANDBOX_AGENT_DIRECTORY, SANDBOX_TOOLS } from "./sandbox-agent.js";
18
+ import { listSandboxSessions, readSandboxSession, saveSandboxSession } from "./sandbox-sessions.js";
19
+ const REMOTE_TOOLS = SANDBOX_TOOLS;
20
+ const REMOTE_ENTRY = `${REMOTE_TOOLS}/node_modules/dev3000/dist/runtime/cli.js`;
21
+ const APP_PORT = 3000;
22
+ const BRIDGE_PORT = 9223;
23
+ /** No shell interpolation. Bounded captured output also keeps credential-bearing CLI output out of logs. */
24
+ async function run(binary, args, options = {}) {
25
+ return new Promise((resolveRun, reject) => {
26
+ if (options.signal?.aborted) {
27
+ reject(new Error("Session ended"));
28
+ return;
29
+ }
30
+ const child = spawn(binary, args, {
31
+ cwd: options.cwd,
32
+ env: options.env,
33
+ stdio: options.inherit ? "inherit" : [options.input === undefined ? "ignore" : "pipe", "pipe", "pipe"]
34
+ });
35
+ let killTimer;
36
+ const abort = () => {
37
+ child.kill("SIGTERM");
38
+ killTimer = setTimeout(() => child.kill("SIGKILL"), 1000);
39
+ killTimer.unref();
40
+ };
41
+ options.signal?.addEventListener("abort", abort, { once: true });
42
+ const cleanup = () => {
43
+ options.signal?.removeEventListener("abort", abort);
44
+ if (killTimer)
45
+ clearTimeout(killTimer);
46
+ };
47
+ let stdout = "";
48
+ let stderr = "";
49
+ child.stdout?.on("data", (chunk) => {
50
+ stdout += chunk.toString();
51
+ if (stdout.length > 4 * 1024 * 1024)
52
+ child.kill();
53
+ });
54
+ child.stderr?.on("data", (chunk) => {
55
+ stderr = (stderr + chunk.toString()).slice(-8192);
56
+ });
57
+ child.on("error", (error) => {
58
+ cleanup();
59
+ reject(error);
60
+ });
61
+ child.stdin?.on("error", () => { }); // Early CLI exits still report their bounded stderr below.
62
+ if (options.input !== undefined)
63
+ child.stdin?.end(options.input);
64
+ child.on("exit", (code) => {
65
+ cleanup();
66
+ if (options.signal?.aborted)
67
+ resolveRun(stdout);
68
+ else if (code === 0)
69
+ resolveRun(stdout);
70
+ else
71
+ reject(new Error(`${binary} ${args[0]} failed: ${stderr || `exit ${code}`}`));
72
+ });
73
+ });
74
+ }
75
+ export function sandboxWorkdir(rootDirectory, repositoryRoot = "/vercel/sandbox") {
76
+ const root = posix.resolve(repositoryRoot, rootDirectory || ".");
77
+ if (root !== repositoryRoot && !root.startsWith(`${repositoryRoot}/`))
78
+ throw new Error("Project rootDirectory escapes the repository");
79
+ return root;
80
+ }
81
+ async function freePort() {
82
+ const server = createServer();
83
+ await new Promise((resolvePort, reject) => {
84
+ server.once("error", reject);
85
+ server.listen(0, "127.0.0.1", resolvePort);
86
+ });
87
+ const address = server.address();
88
+ if (!address || typeof address === "string")
89
+ throw new Error("No Chrome port available");
90
+ await new Promise((resolveClose) => server.close(() => resolveClose()));
91
+ return address.port;
92
+ }
93
+ export async function launchSandbox(options) {
94
+ const scope = options.scope ? ["--scope", options.scope] : [];
95
+ const log = (message) => console.error(`[d3k sandbox] ${message}`);
96
+ const isolatedBrowserPath = await sandboxChromePath(log);
97
+ const temporary = mkdtempSync(join(tmpdir(), "d3k-sandbox-"));
98
+ let localProxy;
99
+ let localRoute;
100
+ let aliasRegistered = false;
101
+ let sandbox;
102
+ let browser;
103
+ let companion;
104
+ let savedSession;
105
+ let remoteStarted = false;
106
+ let originalPorts;
107
+ let closing = false;
108
+ let signalReceived = false;
109
+ let remoteWorkdir = "/vercel/sandbox";
110
+ let finish = () => { };
111
+ const shellAbort = new AbortController();
112
+ const ended = new Promise((resolveEnd) => {
113
+ finish = () => {
114
+ browser?.prepareShutdown();
115
+ companion?.close();
116
+ shellAbort.abort();
117
+ resolveEnd();
118
+ };
119
+ });
120
+ const onSignal = () => {
121
+ signalReceived = true;
122
+ finish();
123
+ };
124
+ process.on("SIGINT", onSignal);
125
+ process.on("SIGTERM", onSignal);
126
+ try {
127
+ const routing = preparePortlessRuntime(`${options.hostname || options.project.toLowerCase().replace(/[^a-z0-9-]/g, "-")}.d3k`);
128
+ if (!routing.runtime)
129
+ throw new Error(routing.error || "Canonical Portless is required");
130
+ localRoute = routing.runtime;
131
+ if (isPortlessHostnameHeld(localRoute.name))
132
+ throw new Error(`${localRoute.url} is already in use; stop that session or choose another --hostname`);
133
+ log(`Resolving ${options.project} through Vercel CLI`);
134
+ const project = JSON.parse(await run("vercel", ["api", `/v9/projects/${encodeURIComponent(options.project)}`, ...scope, "--raw"], {
135
+ cwd: temporary
136
+ }));
137
+ if (!project.id || !project.accountId || !project.name)
138
+ throw new Error("Vercel returned an invalid project");
139
+ sandboxWorkdir(project.rootDirectory);
140
+ const { token } = JSON.parse(await run("vercel", ["project", "token", project.id, "--scope", project.accountId, "--format", "json"], {
141
+ cwd: temporary
142
+ }));
143
+ if (!token)
144
+ throw new Error("Vercel CLI did not return a project OIDC token; update the CLI and run vercel login");
145
+ const credentials = { token, projectId: project.id, teamId: project.accountId };
146
+ if (signalReceived)
147
+ return;
148
+ if (options.attach) {
149
+ // Read configured routes before resuming: resume responses may also contain reserved system ports.
150
+ // The first command below resumes compute automatically after user ports have been configured.
151
+ sandbox = await Sandbox.get({ ...credentials, name: options.attach });
152
+ await sandbox.update({ timeout: Number(options.timeout || 30) * 60000 });
153
+ const ports = sandbox.routes.map((route) => route.port);
154
+ if (!ports.includes(APP_PORT) || !ports.includes(BRIDGE_PORT)) {
155
+ originalPorts = ports;
156
+ await sandbox.update({ ports: [...new Set([...ports, APP_PORT, BRIDGE_PORT])] });
157
+ }
158
+ }
159
+ else {
160
+ if (project.link?.type !== "github" || !project.link.org || !project.link.repo)
161
+ throw new Error("This project needs a linked GitHub repository");
162
+ log("Creating a sandbox and cloning the linked public repository remotely");
163
+ sandbox = await Sandbox.create({
164
+ ...credentials,
165
+ ...(options.name ? { name: options.name } : {}),
166
+ ...(options.region ? { region: options.region } : {}),
167
+ timeout: Number(options.timeout || 30) * 60000,
168
+ ports: [APP_PORT, BRIDGE_PORT],
169
+ source: {
170
+ type: "git",
171
+ url: `https://github.com/${project.link.org}/${project.link.repo}.git`,
172
+ ...(options.branch ? { revision: options.branch } : {})
173
+ }
174
+ }).catch((error) => {
175
+ throw new Error(`${error instanceof Error ? error.message : "Could not create the source sandbox"}. Automatic cloning currently requires a public GitHub repository. For a private repository, use --attach <name> with an existing sandbox that already contains the checkout.`, { cause: error });
176
+ });
177
+ }
178
+ log(`Sandbox ${sandbox.name} is running`);
179
+ // Image WORKDIR and source checkout location differ between Sandbox images.
180
+ let repositoryRoot;
181
+ const candidates = [sandbox.cwd, ...(project.link ? [posix.join(sandbox.cwd, project.link.repo)] : [])];
182
+ for (const cwd of candidates) {
183
+ const result = await sandbox
184
+ .runCommand({ cmd: "git", args: ["rev-parse", "--show-toplevel"], cwd })
185
+ .catch(() => null);
186
+ if (result?.exitCode === 0) {
187
+ repositoryRoot = (await result.stdout()).trim();
188
+ break;
189
+ }
190
+ }
191
+ if (!repositoryRoot)
192
+ throw new Error("Could not locate the repository in this sandbox; expected its working directory or a directory named after the linked repository");
193
+ const workdir = sandboxWorkdir(project.rootDirectory, repositoryRoot);
194
+ remoteWorkdir = workdir;
195
+ if (signalReceived)
196
+ return;
197
+ // Install this exact d3k distribution, including unreleased local changes. No project checkout is used locally.
198
+ const packageRoot = resolve(dirname(fileURLToPath(import.meta.url)), "../..");
199
+ if (!existsSync(join(packageRoot, "dist/runtime/cli.js")))
200
+ throw new Error("Build d3k before starting a sandbox from a source checkout");
201
+ const archive = join(temporary, "dev3000.tgz");
202
+ await run("bun", ["pm", "pack", "--filename", archive, "--quiet"], { cwd: packageRoot });
203
+ const mkdirResult = await sandbox.runCommand("mkdir", ["-p", REMOTE_TOOLS]);
204
+ if (mkdirResult.exitCode !== 0)
205
+ throw new Error("Could not prepare remote d3k tools directory");
206
+ await sandbox.writeFiles([{ path: `${REMOTE_TOOLS}/dev3000.tgz`, content: readFileSync(archive) }]);
207
+ log("Installing d3k in the sandbox");
208
+ const installTools = await sandbox.runCommand({
209
+ cmd: "bun",
210
+ args: ["add", "--cwd", REMOTE_TOOLS, `${REMOTE_TOOLS}/dev3000.tgz`],
211
+ timeoutMs: 180000
212
+ });
213
+ if (installTools.exitCode !== 0)
214
+ throw new Error(`Remote d3k install failed: ${(await installTools.stderr()).slice(-4000)}`);
215
+ const existing = await sandbox.runCommand({ cmd: "node", args: [REMOTE_ENTRY, "status"], cwd: workdir });
216
+ if (existing.exitCode === 0 && JSON.parse(await existing.stdout()).running) {
217
+ if (typeof options.resume !== "string")
218
+ throw new Error("A runtime is already active in this sandbox; stop it before pairing a different browser");
219
+ log("Stopping the previous remote runtime before creating a fresh browser connection");
220
+ const stopped = await sandbox.runCommand({
221
+ cmd: "node",
222
+ args: [REMOTE_ENTRY, "stop"],
223
+ cwd: workdir,
224
+ timeoutMs: 10000
225
+ });
226
+ if (stopped.exitCode !== 0)
227
+ throw new Error("Could not stop the previous remote runtime");
228
+ const stopDeadline = Date.now() + 15000;
229
+ let stoppedRuntime = false;
230
+ while (Date.now() < stopDeadline) {
231
+ const status = await sandbox.runCommand({ cmd: "node", args: [REMOTE_ENTRY, "status"], cwd: workdir });
232
+ if (status.exitCode === 0 && !JSON.parse(await status.stdout()).running) {
233
+ stoppedRuntime = true;
234
+ break;
235
+ }
236
+ await new Promise((resolveWait) => setTimeout(resolveWait, 300));
237
+ }
238
+ if (!stoppedRuntime)
239
+ throw new Error("Previous remote runtime did not finish stopping");
240
+ }
241
+ const previous = typeof options.resume === "string"
242
+ ? readSandboxSession(options.resume)
243
+ : listSandboxSessions().find((record) => record.project === project.id && record.team === project.accountId && record.sandbox === sandbox?.name);
244
+ const branchResult = await sandbox.runCommand({ cmd: "git", args: ["branch", "--show-current"], cwd: workdir });
245
+ const now = new Date().toISOString();
246
+ savedSession = {
247
+ version: 1,
248
+ id: previous?.id || randomUUID(),
249
+ project: project.id,
250
+ projectName: project.name,
251
+ team: project.accountId,
252
+ scope: previous?.scope || options.scope,
253
+ sandbox: sandbox.name,
254
+ hostname: localRoute.name.replace(/\.d3k$/, ""),
255
+ appUrl: localRoute.url,
256
+ workdir,
257
+ branch: branchResult.exitCode === 0 ? (await branchResult.stdout()).trim() || undefined : undefined,
258
+ command: options.command || project.devCommand || undefined,
259
+ installCommand: options.installCommand,
260
+ timeout: options.timeout || "30",
261
+ fx: options.fx !== false,
262
+ harness: options.harness,
263
+ ownsSandbox: previous?.ownsSandbox ?? !options.attach,
264
+ createdAt: previous?.createdAt || now,
265
+ lastUsedAt: now,
266
+ launcherPid: process.pid
267
+ };
268
+ saveSandboxSession(savedSession);
269
+ log("Loading Development environment through Vercel CLI");
270
+ const envPath = join(temporary, "development.env");
271
+ await run("vercel", [
272
+ "env",
273
+ "pull",
274
+ envPath,
275
+ "--project",
276
+ project.id,
277
+ "--scope",
278
+ project.accountId,
279
+ "--environment",
280
+ "development",
281
+ "--yes"
282
+ ], { cwd: temporary });
283
+ const development = readFileSync(envPath, "utf8");
284
+ rmSync(envPath);
285
+ const appEnv = Object.fromEntries(Object.entries(parseEnv(development)).filter((entry) => typeof entry[1] === "string"));
286
+ // A development OIDC token manages infrastructure; it does not belong in app/agent environment.
287
+ delete appEnv.VERCEL_OIDC_TOKEN;
288
+ delete appEnv.VERCEL_TOKEN;
289
+ delete appEnv.VERCEL_AUTH_TOKEN;
290
+ // Remove credentials from pre-hardening sessions before any repository code runs.
291
+ const legacyCleanup = await sandbox.runCommand({
292
+ cmd: "rm",
293
+ args: ["-f", `${SANDBOX_AGENT_DIRECTORY}/gateway.json`, `${SANDBOX_AGENT_BIN}/fx`]
294
+ });
295
+ if (legacyCleanup.exitCode !== 0)
296
+ throw new Error("Could not remove legacy sandbox harness credentials");
297
+ const setup = options.installCommand || project.installCommand || "bun install";
298
+ log(`Installing project dependencies: ${setup}`);
299
+ const installed = await sandbox.runCommand({
300
+ cmd: "sh",
301
+ args: ["-c", setup],
302
+ cwd: workdir,
303
+ env: appEnv,
304
+ timeoutMs: 300000
305
+ });
306
+ if (installed.exitCode !== 0)
307
+ throw new Error(`Project dependency installation failed: ${(await installed.stderr()).slice(-4000)}`);
308
+ if (signalReceived)
309
+ return;
310
+ if (options.fx !== false && options.shell !== false) {
311
+ log("Preparing fx; authenticate the harness in the sandbox before use");
312
+ await prepareSandboxFx(sandbox);
313
+ }
314
+ if (signalReceived)
315
+ return;
316
+ const upstreamUrl = sandbox.domain(APP_PORT);
317
+ const appUrl = localRoute.url;
318
+ const proxyToken = randomBytes(32).toString("hex");
319
+ localProxy = await startLocalProxy({ appUrl, upstreamUrl, token: proxyToken });
320
+ registerPortlessAlias(localRoute, localProxy.port);
321
+ aliasRegistered = true;
322
+ const bridgeUrl = `${sandbox.domain(BRIDGE_PORT).replace(/^https:/, "wss:")}/bridge`;
323
+ const pairingToken = randomBytes(32).toString("hex");
324
+ const config = { appUrl, serverPort: APP_PORT, bridgePort: BRIDGE_PORT, token: pairingToken, proxyToken };
325
+ const args = [REMOTE_ENTRY, "sandbox-serve", "--startup-timeout", "300000"];
326
+ const command = options.command || project.devCommand;
327
+ if (command)
328
+ args.push("--command", command);
329
+ log("Starting the remote dev server and browser bridge");
330
+ const remote = await sandbox.runCommand({
331
+ cmd: "node",
332
+ args,
333
+ cwd: workdir,
334
+ env: appEnv,
335
+ stdin: true,
336
+ detached: true
337
+ });
338
+ let remoteExit;
339
+ void remote
340
+ .wait()
341
+ .then((result) => {
342
+ remoteExit = result.exitCode;
343
+ finish();
344
+ })
345
+ .catch(() => {
346
+ remoteExit = -1;
347
+ finish();
348
+ });
349
+ await remote.writeStdin(JSON.stringify(config));
350
+ await remote.closeStdin();
351
+ remoteStarted = true;
352
+ // The profile key uses remote project identity, never the caller's local cwd.
353
+ const key = createHash("sha256").update(`${project.accountId}/${project.id}`).digest("hex").slice(0, 20);
354
+ const directory = join(homedir(), ".d3k", "sandboxes", key);
355
+ await mkdir(directory, { recursive: true, mode: 0o700 });
356
+ await writeFile(join(directory, "session.json"), JSON.stringify({ project: project.id, team: project.accountId, name: sandbox.name, appUrl }), { mode: 0o600 });
357
+ const chromePort = await freePort();
358
+ browser = new CDPMonitor(join(directory, "chrome-profile"), (_source, message) => {
359
+ if (message.startsWith("[CDP]"))
360
+ log(message);
361
+ }, false, isolatedBrowserPath, undefined, undefined, 60000, chromePort, options.headless);
362
+ browser.requireFilesystemIsolation(await portlessCertificatePin(appUrl));
363
+ browser.setOnWindowClosedCallback(onSignal);
364
+ await browser.start();
365
+ companion = connectCompanion({
366
+ url: bridgeUrl,
367
+ token: pairingToken,
368
+ chromePort,
369
+ onState: (connected) => {
370
+ if (!closing && !signalReceived)
371
+ log(connected ? "Local Chrome connected" : "Browser disconnected; reconnecting");
372
+ }
373
+ });
374
+ const deadline = Date.now() + 300000;
375
+ let ready = false;
376
+ while (!signalReceived && Date.now() < deadline) {
377
+ const status = await sandbox.runCommand({ cmd: "node", args: [REMOTE_ENTRY, "status"], cwd: workdir });
378
+ if (status.exitCode === 0) {
379
+ const state = JSON.parse(await status.stdout());
380
+ if (state.ready && state.browserConnected) {
381
+ ready = true;
382
+ break;
383
+ }
384
+ }
385
+ if (remoteExit !== undefined) {
386
+ throw new Error(`Remote runtime exited during startup: ${(await remote.stderr()).slice(-4000)}`);
387
+ }
388
+ await new Promise((resolveWait) => setTimeout(resolveWait, 1500));
389
+ }
390
+ if (signalReceived)
391
+ return;
392
+ if (!ready)
393
+ throw new Error("Sandbox runtime did not become ready within five minutes");
394
+ log(`Ready: ${appUrl}`);
395
+ log(`Sandbox: ${sandbox.name}. Shell directory: ${workdir}`);
396
+ if (options.shell !== false && process.stdin.isTTY) {
397
+ const path = await sandbox.runCommand({ cmd: "printenv", args: ["PATH"] });
398
+ if (path.exitCode !== 0)
399
+ throw new Error("Could not resolve remote shell PATH");
400
+ const contextDirectory = `${REMOTE_TOOLS}/harness-context`;
401
+ const skillPath = `${contextDirectory}/.fx/skills/d3k/SKILL.md`;
402
+ if (options.harness) {
403
+ const prepared = await sandbox.runCommand({ cmd: "mkdir", args: ["-p", `${contextDirectory}/.fx/skills/d3k`] });
404
+ if (prepared.exitCode !== 0)
405
+ throw new Error("Could not prepare harness skill context");
406
+ await sandbox.writeFiles([{ path: skillPath, content: Buffer.from(harnessSkill()) }]);
407
+ }
408
+ const invocation = options.harness ? harnessInvocation(options.harness, skillPath, contextDirectory) : undefined;
409
+ await run("vercel", [
410
+ "sandbox",
411
+ invocation ? "exec" : "connect",
412
+ sandbox.name,
413
+ "--project",
414
+ project.id,
415
+ "--scope",
416
+ project.accountId,
417
+ "--workdir",
418
+ workdir,
419
+ "--env",
420
+ `PATH=${options.fx !== false ? `${SANDBOX_AGENT_BIN}:` : ""}${REMOTE_TOOLS}/node_modules/.bin:${(await path.stdout()).trim()}`,
421
+ ...(invocation ? ["--interactive", "--", invocation.binary, ...invocation.args] : [])
422
+ ], { inherit: true, env: { ...process.env, VERCEL_OIDC_TOKEN: token }, signal: shellAbort.signal });
423
+ }
424
+ else {
425
+ log(options.attach
426
+ ? "Companion retained. Press Ctrl+C to stop this runtime; the attached sandbox stays running."
427
+ : "Companion retained. Press Ctrl+C to stop compute and preserve the sandbox filesystem.");
428
+ await ended;
429
+ if (!signalReceived && remoteExit !== undefined && remoteExit !== 0)
430
+ throw new Error(`Remote runtime exited (${remoteExit}): ${(await remote.stderr()).slice(-4000)}`);
431
+ }
432
+ }
433
+ finally {
434
+ if (!closing) {
435
+ closing = true;
436
+ companion?.close();
437
+ if (aliasRegistered && localRoute) {
438
+ try {
439
+ removePortlessAlias(localRoute);
440
+ }
441
+ catch {
442
+ log("Could not remove the local proxy route");
443
+ }
444
+ }
445
+ await localProxy?.close();
446
+ await browser?.shutdown().catch(() => { });
447
+ if (sandbox) {
448
+ if (options.harness)
449
+ await sandbox.runCommand({ cmd: "rm", args: ["-rf", `${REMOTE_TOOLS}/harness-context`] }).catch(() => { });
450
+ if (remoteStarted)
451
+ await sandbox
452
+ .runCommand({ cmd: "node", args: [REMOTE_ENTRY, "stop"], cwd: remoteWorkdir, timeoutMs: 10000 })
453
+ .catch(() => { });
454
+ // An attached sandbox belongs to its existing owner. Only stop sandboxes created by this invocation.
455
+ if (!options.attach || (typeof options.resume === "string" && savedSession?.ownsSandbox))
456
+ await sandbox
457
+ .stop()
458
+ .catch(() => log(`Could not stop sandbox ${sandbox?.name}; stop it with vercel sandbox stop`));
459
+ else if (originalPorts)
460
+ await sandbox.update({ ports: originalPorts }).catch(() => log("Could not restore attached sandbox ports"));
461
+ }
462
+ }
463
+ process.off("SIGINT", onSignal);
464
+ process.off("SIGTERM", onSignal);
465
+ rmSync(temporary, { recursive: true, force: true });
466
+ if (savedSession) {
467
+ savedSession.closedAt = new Date().toISOString();
468
+ delete savedSession.launcherPid;
469
+ try {
470
+ saveSandboxSession(savedSession);
471
+ }
472
+ catch {
473
+ log("Could not update saved session metadata");
474
+ }
475
+ console.log(`Resume this sandbox: d3k --resume ${savedSession.id}`);
476
+ }
477
+ if (remoteStarted)
478
+ log("Session closed");
479
+ }
480
+ }
481
+ //# sourceMappingURL=sandbox.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sandbox.js","sourceRoot":"","sources":["../../src/runtime/sandbox.ts"],"names":[],"mappings":"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"}
@@ -1,122 +1,4 @@
1
- /**
2
- * Wrapper for agent-browser CLI
3
- *
4
- * Provides a TypeScript interface to agent-browser commands for browser automation.
5
- * Uses the CLI approach for reliability and to leverage agent-browser's daemon architecture.
6
- */
7
- export interface AgentBrowserOptions {
8
- /** Run in headed mode (visible browser window) */
9
- headed?: boolean;
10
- /** Connect to existing browser via CDP port */
11
- cdpPort?: number;
12
- /** Session name for isolation */
13
- session?: string;
14
- /** Timeout in milliseconds */
15
- timeout?: number;
16
- /** Path to persistent browser profile directory (stores cookies, localStorage, etc.) */
17
- profile?: string;
18
- }
19
- export interface SnapshotElement {
20
- ref: string;
21
- role: string;
22
- name?: string;
23
- text?: string;
24
- }
25
- export interface SnapshotResult {
26
- elements: SnapshotElement[];
27
- raw: string;
28
- }
29
- export interface ScreenshotResult {
30
- success: boolean;
31
- path?: string;
32
- error?: string;
33
- }
34
- export interface ActionResult {
35
- success: boolean;
36
- output?: string;
37
- error?: string;
38
- }
39
- /**
40
- * Open a URL in the browser
41
- */
42
- export declare function openUrl(url: string, options?: AgentBrowserOptions): Promise<ActionResult>;
43
- /**
44
- * Take a snapshot of the current page (accessibility tree with refs)
45
- */
46
- export declare function snapshot(options?: AgentBrowserOptions & {
47
- interactive?: boolean;
48
- compact?: boolean;
49
- }): Promise<SnapshotResult>;
50
- /**
51
- * Click an element by ref or selector
52
- */
53
- export declare function click(target: string, options?: AgentBrowserOptions): Promise<ActionResult>;
54
- /**
55
- * Type text into the focused element
56
- */
57
- export declare function type(text: string, options?: AgentBrowserOptions): Promise<ActionResult>;
58
- /**
59
- * Fill an input field (by ref or selector)
60
- */
61
- export declare function fill(target: string, value: string, options?: AgentBrowserOptions): Promise<ActionResult>;
62
- /**
63
- * Scroll the page
64
- */
65
- export declare function scroll(direction: "up" | "down" | "left" | "right", amount?: number, options?: AgentBrowserOptions): Promise<ActionResult>;
66
- /**
67
- * Take a screenshot
68
- */
69
- export declare function screenshot(outputPath: string, options?: AgentBrowserOptions & {
70
- fullPage?: boolean;
71
- }): Promise<ScreenshotResult>;
72
- /**
73
- * Get console messages from the browser
74
- */
75
- export declare function getConsoleMessages(options?: AgentBrowserOptions): Promise<string[]>;
76
- /**
77
- * Get page errors
78
- */
79
- export declare function getErrors(options?: AgentBrowserOptions): Promise<string[]>;
80
- /**
81
- * Navigate back
82
- */
83
- export declare function back(options?: AgentBrowserOptions): Promise<ActionResult>;
84
- /**
85
- * Navigate forward
86
- */
87
- export declare function forward(options?: AgentBrowserOptions): Promise<ActionResult>;
88
- /**
89
- * Reload the page
90
- */
91
- export declare function reload(options?: AgentBrowserOptions): Promise<ActionResult>;
92
- /**
93
- * Close the browser
94
- */
95
- export declare function close(options?: AgentBrowserOptions): Promise<ActionResult>;
96
- /**
97
- * Get the current URL
98
- */
99
- export declare function getCurrentUrl(options?: AgentBrowserOptions): Promise<string | null>;
100
- /**
101
- * Get page title
102
- */
103
- export declare function getTitle(options?: AgentBrowserOptions): Promise<string | null>;
104
- /**
105
- * Evaluate JavaScript in the browser
106
- */
107
- export declare function evaluate(expression: string, options?: AgentBrowserOptions): Promise<ActionResult>;
108
- /**
109
- * Wait for an element to appear
110
- */
111
- export declare function waitFor(selector: string, options?: AgentBrowserOptions & {
112
- timeout?: number;
113
- }): Promise<ActionResult>;
114
- /**
115
- * Check if agent-browser is installed and accessible
116
- */
117
- export declare function isAgentBrowserAvailable(): boolean;
118
- /**
119
- * Get agent-browser path for debugging
120
- */
1
+ /** Resolve the installed agent-browser helper without launching a separate browser. */
2
+ /** Resolve the installed browser helper for the runtime-owned CDP session. */
121
3
  export declare function getAgentBrowserBinaryPath(): string;
122
4
  //# sourceMappingURL=agent-browser.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"agent-browser.d.ts","sourceRoot":"","sources":["../../src/utils/agent-browser.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agent-browser.d.ts","sourceRoot":"","sources":["../../src/utils/agent-browser.ts"],"names":[],"mappings":"AAAA,uFAAuF;AA4GvF,8EAA8E;AAC9E,wBAAgB,yBAAyB,IAAI,MAAM,CAElD"}