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 @@
1
+ {"version":3,"file":"bridge.js","sourceRoot":"","sources":["../../src/runtime/bridge.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ /** Filesystem confinement applies to Chrome's browser process and every child, including CDP file operations. */
2
+ export declare function isolatedChromeInvocation(binary: string, args: string[], profile: string, certificatePin?: string): {
3
+ binary: string;
4
+ args: string[];
5
+ env: {
6
+ PATH: string;
7
+ LANG: string;
8
+ HOME: string;
9
+ TMPDIR: string;
10
+ };
11
+ };
12
+ /** Use the separately installed automation browser, never a managed everyday profile. */
13
+ export declare function sandboxChromePath(log: (message: string) => void): Promise<string>;
14
+ /** Trust exactly the certificate served by canonical Portless, without reading the user's keychain. */
15
+ export declare function portlessCertificatePin(appUrl: string): Promise<string>;
16
+ //# sourceMappingURL=chrome-isolation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chrome-isolation.d.ts","sourceRoot":"","sources":["../../src/runtime/chrome-isolation.ts"],"names":[],"mappings":"AAQA,iHAAiH;AACjH,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,MAAM;IAmD7G,MAAM;IACN,IAAI;IACJ,GAAG;QAAI,IAAI;QAAmC,IAAI;QAAiB,IAAI;QAAa,MAAM;;EAE7F;AAED,yFAAyF;AACzF,wBAAsB,iBAAiB,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAgBvF;AAaD,uGAAuG;AACvG,wBAAsB,sBAAsB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAsB5E"}
@@ -0,0 +1,119 @@
1
+ import { spawn } from "node:child_process";
2
+ import { createHash, X509Certificate } from "node:crypto";
3
+ import { existsSync, mkdirSync, readdirSync, realpathSync } from "node:fs";
4
+ import { homedir } from "node:os";
5
+ import { join, resolve } from "node:path";
6
+ import { connect } from "node:tls";
7
+ import { getAgentBrowserBinaryPath } from "../utils/agent-browser.js";
8
+ /** Filesystem confinement applies to Chrome's browser process and every child, including CDP file operations. */
9
+ export function isolatedChromeInvocation(binary, args, profile, certificatePin) {
10
+ if (process.platform !== "darwin" || !existsSync("/usr/bin/sandbox-exec"))
11
+ throw new Error("Sandbox mode requires macOS Chrome filesystem isolation; this platform is not supported yet");
12
+ const executable = realpathSync(binary);
13
+ const marker = executable.indexOf(".app/");
14
+ if (marker < 0)
15
+ throw new Error("Sandbox mode requires Chrome installed in an application bundle");
16
+ mkdirSync(profile, { recursive: true, mode: 0o700 });
17
+ const directory = realpathSync(resolve(profile));
18
+ const temporary = join(directory, "d3k-temp");
19
+ mkdirSync(temporary, { recursive: true, mode: 0o700 });
20
+ const readable = [
21
+ executable.slice(0, marker + 4),
22
+ "/System/Library",
23
+ "/System/Cryptexes",
24
+ "/usr/lib",
25
+ "/usr/share",
26
+ "/usr/bin",
27
+ "/bin",
28
+ "/sbin",
29
+ "/Library/Fonts",
30
+ "/Library/Apple",
31
+ "/private/preboot",
32
+ "/private/var/db/dyld",
33
+ "/private/etc",
34
+ "/private/var/run",
35
+ "/Library/Preferences/SystemConfiguration",
36
+ "/dev",
37
+ directory
38
+ ];
39
+ // Chrome's singleton socket ignores TMPDIR on macOS. Allow only its generated socket directories.
40
+ const socket = '(regex #"^/private/var/folders/[^/]+/[^/]+/T/com\\.google\\.Chrome[^/]*(/.*)?$")';
41
+ const except = (paths) => `(require-all (require-not (literal "/")) ${paths.map((path) => `(require-not (subpath ${JSON.stringify(path)}))`).join(" ")} (require-not ${socket}))`;
42
+ const policy = `(version 1)
43
+ (allow default)
44
+ (deny file-read-data ${except(readable)})
45
+ (deny file-write* ${except([directory, "/dev"])})
46
+ (deny appleevent-send)
47
+ (deny mach-lookup (global-name "com.apple.pasteboard.1") (global-name "com.apple.pasteboard") (global-name "com.apple.pbs"))`;
48
+ // Seatbelt cannot be nested. The outer policy confines all Chrome processes, rather than renderers alone.
49
+ const chromeArgs = args.filter((arg) => arg !== "--no-sandbox" && arg !== "--disable-setuid-sandbox");
50
+ chromeArgs.push("--no-sandbox", "--disable-breakpad", "--password-store=basic", "--use-mock-keychain", "--disable-features=ChromeBrowserCloudManagement", `--crash-dumps-dir=${join(temporary, "crashes")}`);
51
+ if (certificatePin)
52
+ chromeArgs.push(`--ignore-certificate-errors-spki-list=${certificatePin}`);
53
+ return {
54
+ binary: "/usr/bin/sandbox-exec",
55
+ args: ["-p", policy, executable, ...chromeArgs],
56
+ env: { PATH: "/usr/bin:/bin:/usr/sbin:/sbin", LANG: "en_US.UTF-8", HOME: directory, TMPDIR: temporary }
57
+ };
58
+ }
59
+ /** Use the separately installed automation browser, never a managed everyday profile. */
60
+ export async function sandboxChromePath(log) {
61
+ if (process.platform !== "darwin")
62
+ throw new Error("Sandbox mode currently requires macOS filesystem confinement");
63
+ const installed = findSandboxChrome();
64
+ if (installed)
65
+ return installed;
66
+ log("Downloading Chrome for Testing for the isolated browser (first run only)");
67
+ await new Promise((accept, reject) => {
68
+ const installer = spawn(getAgentBrowserBinaryPath(), ["install"], { stdio: "inherit", shell: false });
69
+ installer.once("error", (error) => reject(new Error(`Could not install Chrome for Testing: ${error.message}`)));
70
+ installer.once("exit", (code) => {
71
+ if (code === 0)
72
+ accept();
73
+ else
74
+ reject(new Error("Chrome for Testing installation failed. Check your network connection and retry d3k."));
75
+ });
76
+ });
77
+ const binary = findSandboxChrome();
78
+ if (!binary)
79
+ throw new Error("Chrome for Testing installation completed but its application bundle was not found");
80
+ return binary;
81
+ }
82
+ function findSandboxChrome() {
83
+ const root = join(homedir(), ".agent-browser", "browsers");
84
+ const installed = existsSync(root) ? readdirSync(root).filter((name) => /^chrome-[0-9.]+$/.test(name)) : [];
85
+ installed.sort((a, b) => b.localeCompare(a, undefined, { numeric: true }));
86
+ for (const name of installed) {
87
+ const binary = join(root, name, "Google Chrome for Testing.app", "Contents", "MacOS", "Google Chrome for Testing");
88
+ if (existsSync(binary))
89
+ return binary;
90
+ }
91
+ return undefined;
92
+ }
93
+ /** Trust exactly the certificate served by canonical Portless, without reading the user's keychain. */
94
+ export async function portlessCertificatePin(appUrl) {
95
+ return new Promise((accept, reject) => {
96
+ const socket = connect({
97
+ host: "127.0.0.1",
98
+ port: 443,
99
+ servername: new URL(appUrl).hostname,
100
+ rejectUnauthorized: false
101
+ });
102
+ socket.setTimeout(5000, () => socket.destroy(new Error("Portless TLS certificate unavailable")));
103
+ socket.once("error", reject);
104
+ socket.once("secureConnect", () => {
105
+ try {
106
+ const certificate = new X509Certificate(socket.getPeerCertificate().raw);
107
+ const publicKey = certificate.publicKey.export({ type: "spki", format: "der" });
108
+ accept(createHash("sha256").update(publicKey).digest("base64"));
109
+ }
110
+ catch (error) {
111
+ reject(error);
112
+ }
113
+ finally {
114
+ socket.destroy();
115
+ }
116
+ });
117
+ });
118
+ }
119
+ //# sourceMappingURL=chrome-isolation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chrome-isolation.js","sourceRoot":"","sources":["../../src/runtime/chrome-isolation.ts"],"names":[],"mappings":"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"}
@@ -1,42 +1,88 @@
1
1
  #!/usr/bin/env node
2
- import { spawn } from "node:child_process";
2
+ import { spawn, spawnSync } from "node:child_process";
3
+ import { readFileSync } from "node:fs";
3
4
  import { Command } from "commander";
4
5
  import { getPortlessProxyStatus, installPortlessService } from "../portless.js";
5
6
  import { getAgentBrowserBinaryPath } from "../utils/agent-browser.js";
7
+ import { readRecentEvents, selectEventView } from "./event-views.js";
8
+ import { parseHarness } from "./harness.js";
6
9
  import { startRuntime } from "./runtime.js";
10
+ import { addSandboxProjectOptions, registerSandboxCommand, runSandboxProject } from "./sandbox-command.js";
7
11
  import { queryRuntime, readRuntimeSession } from "./session.js";
8
- // The skill helper acquires this package outside the target pnpm workspace.
9
- // Restore the app cwd before any command resolves project/session state, and
10
- // do not pass this bootstrap-only setting to the app or browser.
11
12
  if (process.env.D3K_BOOTSTRAP_CWD) {
12
13
  process.chdir(process.env.D3K_BOOTSTRAP_CWD);
13
14
  delete process.env.D3K_BOOTSTRAP_CWD;
14
15
  }
15
16
  const print = (value) => console.log(JSON.stringify(value));
17
+ const version = JSON.parse(readFileSync(new URL("../../package.json", import.meta.url), "utf8")).version;
16
18
  const program = new Command()
17
- .name("d3k-runtime")
18
- .description("Skill-owned dev server and browser evidence, held in memory");
19
+ .name("d3k")
20
+ .version(version)
21
+ .description("Dev server and managed browser with a bounded, in-memory event timeline");
22
+ registerSandboxCommand(program);
23
+ addSandboxProjectOptions(program)
24
+ .option("--command <command>", "Remote dev command")
25
+ .option("--headless", "Run local Chrome headlessly")
26
+ .action(runSandboxProject);
27
+ function positiveInteger(value) {
28
+ const parsed = Number(value);
29
+ if (!Number.isSafeInteger(parsed) || parsed < 1)
30
+ throw new Error("Expected a positive integer");
31
+ return parsed;
32
+ }
33
+ program
34
+ .command("sandbox-serve", { hidden: true })
35
+ .option("--command <command>")
36
+ .option("--startup-timeout <ms>", "Server startup deadline in milliseconds", "300000")
37
+ .action(async (options) => {
38
+ let input = "";
39
+ for await (const chunk of process.stdin) {
40
+ input += chunk.toString();
41
+ if (input.length > 8192)
42
+ throw new Error("Sandbox configuration too large");
43
+ }
44
+ const sandbox = JSON.parse(input);
45
+ if (!sandbox ||
46
+ ![sandbox.serverPort, sandbox.bridgePort].every((port) => Number.isSafeInteger(port) && port > 0 && port <= 65535) ||
47
+ sandbox.serverPort === sandbox.bridgePort)
48
+ throw new Error("Invalid sandbox ports");
49
+ await startRuntime({ command: options.command, startupTimeout: positiveInteger(options.startupTimeout), sandbox });
50
+ });
19
51
  program
20
52
  .command("start")
21
- .option("--command <command>", "Dev server command (defaults to package manager's dev script)")
53
+ .description("Start the local app and browser; retain this process while testing")
54
+ .option("--harness <name>", "Run fx, codex, or claude in this terminal when ready", parseHarness)
55
+ .option("--command <command>", "Dev command (defaults to the package manager's dev script)")
22
56
  .option("--headless", "Headless browser for CI")
23
57
  .option("--servers-only", "Intentionally omit browser monitoring")
24
- .option("--startup-timeout <ms>", "Server startup deadline", "120000")
58
+ .option("--startup-timeout <ms>", "Server startup deadline in milliseconds", "120000")
59
+ .option("--browser-navigation-timeout <ms>", "Browser navigation deadline in milliseconds", "30000")
60
+ .option("--browser <path>", "Browser executable path")
61
+ .option("--profile-dir <dir>", "Browser profile directory (defaults to the project profile)")
62
+ .option("--debug", "Browser diagnostic output")
25
63
  .action(async (options) => {
26
- const startupTimeout = Number(options.startupTimeout);
27
- if (!Number.isSafeInteger(startupTimeout) || startupTimeout < 1)
28
- throw new Error("Invalid startup timeout");
29
- await startRuntime({ ...options, startupTimeout });
64
+ if (options.serversOnly && (options.headless || options.browser || options.profileDir || options.harness))
65
+ throw new Error("--servers-only cannot be combined with browser options");
66
+ if (options.harness && !process.stdin.isTTY)
67
+ throw new Error("--harness requires an interactive terminal");
68
+ await startRuntime({
69
+ ...options,
70
+ startupTimeout: positiveInteger(options.startupTimeout),
71
+ browserNavigationTimeout: positiveInteger(options.browserNavigationTimeout)
72
+ });
30
73
  });
31
- program.command("status").action(async () => {
32
- if (!readRuntimeSession()) {
33
- print({ running: false, ready: false });
34
- return;
35
- }
74
+ program
75
+ .command("status")
76
+ .description("Show live runtime status")
77
+ .option("--json", "Output JSON (also the default)")
78
+ .action(async () => {
79
+ if (!readRuntimeSession())
80
+ return print({ running: false, ready: false });
36
81
  print(await queryRuntime("/status"));
37
82
  });
38
83
  program
39
84
  .command("events")
85
+ .description("Read timeline events after a cursor")
40
86
  .option("--after <cursor>", "Read after this sequence number", "0")
41
87
  .option("--session <id>", "Previous session id, to detect resets")
42
88
  .option("--limit <count>", "Maximum events, 1–500", "100")
@@ -52,9 +98,46 @@ program
52
98
  params.set("level", options.level);
53
99
  print(await queryRuntime(`/events?${params}`));
54
100
  });
55
- program.command("stop").action(async () => print(await queryRuntime("/stop", process.cwd(), "POST")));
101
+ for (const errors of [false, true]) {
102
+ const command = program
103
+ .command(errors ? "errors" : "logs")
104
+ .description(errors ? "Show recent errors from the live timeline" : "Show recent events from the live timeline")
105
+ .option("-n, --count <count>", "Number of matching events, 1–500", errors ? "10" : "50")
106
+ .option("--json", "Include event cursor and evidence-gap metadata as JSON");
107
+ if (errors)
108
+ command.option("-c, --context", "Include up to five preceding events per error");
109
+ else
110
+ command.option("--type <source>", "Filter by server, browser, runtime, or all", "all");
111
+ command.action(async (options) => {
112
+ const source = options.type && options.type !== "all" ? options.type : undefined;
113
+ if (source && !["server", "browser", "runtime"].includes(source))
114
+ throw new Error("Invalid event source");
115
+ const count = positiveInteger(options.count);
116
+ if (count > 500)
117
+ throw new Error("count must be 1–500");
118
+ const view = selectEventView(await readRecentEvents(queryRuntime), {
119
+ count,
120
+ source,
121
+ errors,
122
+ context: options.context
123
+ });
124
+ if (options.json)
125
+ return print(view);
126
+ if (view.dropped)
127
+ console.log(`[runtime] ${view.dropped} earlier events are no longer retained`);
128
+ for (const event of view.events)
129
+ console.log(`${event.timestamp} [${event.source}/${event.level}] ${event.message}`);
130
+ if (!view.events.length)
131
+ console.log("No matching events in the retained timeline.");
132
+ });
133
+ }
134
+ program
135
+ .command("stop")
136
+ .description("Stop this project's app and browser")
137
+ .action(async () => print(await queryRuntime("/stop", process.cwd(), "POST")));
56
138
  program
57
139
  .command("browser")
140
+ .description("Drive the runtime's monitored browser with agent-browser")
58
141
  .allowUnknownOption()
59
142
  .argument("[args...]")
60
143
  .action(async (args) => {
@@ -67,22 +150,29 @@ program
67
150
  await new Promise((resolveRun, reject) => {
68
151
  const child = spawn(getAgentBrowserBinaryPath(), ["--session", `d3k-${session.sessionId}`, "--cdp", port, ...args], { stdio: "inherit" });
69
152
  child.on("error", reject);
70
- child.on("exit", (code) => {
71
- if (code !== 0)
72
- reject(new Error(`agent-browser exited ${code}`));
73
- else
74
- resolveRun();
75
- });
153
+ child.on("exit", (code) => (code !== 0 ? reject(new Error(`agent-browser exited ${code}`)) : resolveRun()));
76
154
  });
77
155
  });
78
- const portless = program.command("portless");
79
- portless.command("status").action(() => print(getPortlessProxyStatus()));
156
+ const portless = program.command("portless").description("Prepare canonical local HTTPS");
157
+ portless
158
+ .command("status")
159
+ .option("--json", "Output JSON (also the default)")
160
+ .action(() => print(getPortlessProxyStatus()));
80
161
  portless.command("setup").action(async () => {
81
162
  const result = await installPortlessService();
82
163
  print(result);
83
164
  if (!result.success)
84
165
  process.exitCode = 1;
85
166
  });
167
+ program
168
+ .command("upgrade")
169
+ .description("Explicitly upgrade the global package with Bun")
170
+ .action(() => {
171
+ const result = spawnSync("bun", ["add", "--global", "dev3000@latest"], { stdio: "inherit", shell: false });
172
+ if (result.error)
173
+ throw result.error;
174
+ process.exitCode = result.status ?? 1;
175
+ });
86
176
  program.parseAsync().catch((error) => {
87
177
  console.error(JSON.stringify({ error: error instanceof Error ? error.message : String(error) }));
88
178
  process.exitCode = 1;
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/runtime/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/runtime/cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ import type { TimelineEvent } from "./timeline.js";
2
+ export interface EventPage {
3
+ sessionId: string;
4
+ events: TimelineEvent[];
5
+ cursor: number;
6
+ latest: number;
7
+ oldest: number;
8
+ reset: boolean;
9
+ dropped: number;
10
+ hasMore: boolean;
11
+ }
12
+ /** Select recent events while preserving chronological context and evidence-gap metadata. */
13
+ export declare function selectEventView(page: EventPage, options: {
14
+ count: number;
15
+ source?: string;
16
+ errors?: boolean;
17
+ context?: boolean;
18
+ }): EventPage;
19
+ /** Read at most the retained buffer, fenced at the status cursor so active traffic cannot cause endless paging. */
20
+ export declare function readRecentEvents(query: (path: string) => Promise<unknown>): Promise<EventPage>;
21
+ //# sourceMappingURL=event-views.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event-views.d.ts","sourceRoot":"","sources":["../../src/runtime/event-views.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAElD,MAAM,WAAW,SAAS;IACxB,SAAS,EAAE,MAAM,CAAA;IACjB,MAAM,EAAE,aAAa,EAAE,CAAA;IACvB,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,OAAO,CAAA;IACd,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,OAAO,CAAA;CACjB;AAED,6FAA6F;AAC7F,wBAAgB,eAAe,CAC7B,IAAI,EAAE,SAAS,EACf,OAAO,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,GAC/E,SAAS,CAgBX;AAED,mHAAmH;AACnH,wBAAsB,gBAAgB,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC,CA+BpG"}
@@ -0,0 +1,53 @@
1
+ /** Select recent events while preserving chronological context and evidence-gap metadata. */
2
+ export function selectEventView(page, options) {
3
+ if (!Number.isSafeInteger(options.count) || options.count < 1 || options.count > 500)
4
+ throw new Error("count must be 1–500");
5
+ const matches = page.events
6
+ .filter((event) => (!options.source || event.source === options.source) && (!options.errors || event.level === "error"))
7
+ .slice(-options.count);
8
+ const selected = new Set(matches.map((event) => event.seq));
9
+ if (options.context) {
10
+ for (const match of matches) {
11
+ const index = page.events.findIndex((event) => event.seq === match.seq);
12
+ for (const event of page.events.slice(Math.max(0, index - 5), index))
13
+ selected.add(event.seq);
14
+ }
15
+ }
16
+ return { ...page, events: page.events.filter((event) => selected.has(event.seq)) };
17
+ }
18
+ /** Read at most the retained buffer, fenced at the status cursor so active traffic cannot cause endless paging. */
19
+ export async function readRecentEvents(query) {
20
+ const status = (await query("/status"));
21
+ let cursor = Math.max(0, status.cursor - 5000);
22
+ let combined;
23
+ for (let index = 0; index < 10; index++) {
24
+ const page = (await query(`/events?after=${cursor}&limit=500&sessionId=${encodeURIComponent(status.sessionId)}`));
25
+ if (page.reset)
26
+ throw new Error("Runtime restarted while reading events; retry against the new session");
27
+ const events = page.events.filter((event) => event.seq <= status.cursor);
28
+ combined = combined
29
+ ? {
30
+ ...combined,
31
+ events: [...combined.events, ...events],
32
+ dropped: combined.dropped + page.dropped,
33
+ cursor: Math.min(page.cursor, status.cursor),
34
+ hasMore: page.cursor < status.cursor
35
+ }
36
+ : {
37
+ ...page,
38
+ events,
39
+ latest: status.cursor,
40
+ cursor: Math.min(page.cursor, status.cursor),
41
+ hasMore: page.cursor < status.cursor
42
+ };
43
+ if (page.cursor >= status.cursor || !page.hasMore)
44
+ break;
45
+ if (page.cursor <= cursor)
46
+ throw new Error("Event cursor did not advance");
47
+ cursor = page.cursor;
48
+ }
49
+ if (!combined)
50
+ throw new Error("No event response");
51
+ return combined;
52
+ }
53
+ //# sourceMappingURL=event-views.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event-views.js","sourceRoot":"","sources":["../../src/runtime/event-views.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ export declare const HARNESS_NAMES: readonly ["fx", "codex", "claude"];
2
+ export type Harness = (typeof HARNESS_NAMES)[number];
3
+ export declare function parseHarness(value: string): Harness;
4
+ export declare const bundledSkillPath: string;
5
+ export declare function harnessSkill(): string;
6
+ export declare function harnessInvocation(harness: Harness, skillPath: string, contextDirectory: string): {
7
+ binary: "claude" | "codex" | "fx";
8
+ args: string[];
9
+ };
10
+ /** Only fixed binaries and argument arrays; the selection never passes through a shell. */
11
+ export declare function launchLocalHarness(harness: Harness, cwd: string, signal: AbortSignal): Promise<void>;
12
+ export declare function runHarnessProcess(binary: string, args: string[], options: {
13
+ cwd: string;
14
+ signal: AbortSignal;
15
+ }): Promise<void>;
16
+ //# sourceMappingURL=harness.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"harness.d.ts","sourceRoot":"","sources":["../../src/runtime/harness.ts"],"names":[],"mappings":"AAOA,eAAO,MAAM,aAAa,YAAI,IAAI,EAAE,OAAO,EAAE,QAAQ,CAAU,CAAA;AAC/D,MAAM,MAAM,OAAO,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,CAAC,CAAA;AACpD,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAInD;AACD,eAAO,MAAM,gBAAgB,QAAuE,CAAA;AACpG,wBAAgB,YAAY,IAAI,MAAM,CAErC;AACD,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM;IAGpF,MAAM;IAAW,IAAI;EAC/B;AAED,2FAA2F;AAC3F,wBAAsB,kBAAkB,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAa1G;AAED,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,EAAE;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,WAAW,CAAA;CAAE,GAC5C,OAAO,CAAC,IAAI,CAAC,CAyBf"}
@@ -0,0 +1,68 @@
1
+ import { spawn } from "node:child_process";
2
+ import { mkdirSync, mkdtempSync, readFileSync, rmSync, writeFileSync } from "node:fs";
3
+ import { tmpdir } from "node:os";
4
+ import { join } from "node:path";
5
+ import { fileURLToPath } from "node:url";
6
+ import { InvalidArgumentError } from "commander";
7
+ export const HARNESS_NAMES = ["fx", "codex", "claude"];
8
+ export function parseHarness(value) {
9
+ if (!HARNESS_NAMES.includes(value))
10
+ throw new InvalidArgumentError(`Choose a harness: ${HARNESS_NAMES.join(", ")}`);
11
+ return value;
12
+ }
13
+ export const bundledSkillPath = fileURLToPath(new URL("../../skills/d3k/SKILL.md", import.meta.url));
14
+ export function harnessSkill() {
15
+ return `${readFileSync(bundledSkillPath, "utf8").replace(/Use `node <skill-directory>.*?## Prepare/s, "Use `d3k` as `runtime` below, from the project root. The runtime is already running; reuse it.\n\n## Prepare")}\n\n## Harness startup\n\nThe d3k runtime is already running in this workspace. Read its status and use its monitored browser and timeline; do not start another runtime. Await the user's instructions before modifying code. Use d3k status, d3k browser, and d3k events from the project directory.\n`;
16
+ }
17
+ export function harnessInvocation(harness, skillPath, contextDirectory) {
18
+ parseHarness(harness);
19
+ const prompt = `Load the d3k skill by reading ${skillPath}. The d3k runtime is already running in this workspace. Use its existing browser and timeline; do not start another runtime. Await further instruction.`;
20
+ return { binary: harness, args: harness === "fx" ? ["--add-dir", contextDirectory] : [prompt] };
21
+ }
22
+ /** Only fixed binaries and argument arrays; the selection never passes through a shell. */
23
+ export async function launchLocalHarness(harness, cwd, signal) {
24
+ if (!process.stdin.isTTY)
25
+ throw new Error("--harness requires an interactive terminal");
26
+ const directory = mkdtempSync(join(tmpdir(), "d3k-harness-"));
27
+ const skillDirectory = join(directory, ".fx", "skills", "d3k");
28
+ mkdirSync(skillDirectory, { recursive: true });
29
+ const skillPath = join(skillDirectory, "SKILL.md");
30
+ writeFileSync(skillPath, harnessSkill(), { mode: 0o600 });
31
+ const invocation = harnessInvocation(harness, skillPath, directory);
32
+ try {
33
+ await runHarnessProcess(invocation.binary, invocation.args, { cwd, signal });
34
+ }
35
+ finally {
36
+ rmSync(directory, { recursive: true, force: true });
37
+ }
38
+ }
39
+ export async function runHarnessProcess(binary, args, options) {
40
+ if (options.signal.aborted)
41
+ return;
42
+ await new Promise((resolve, reject) => {
43
+ const child = spawn(binary, args, { cwd: options.cwd, stdio: "inherit", shell: false });
44
+ let timer;
45
+ const abort = () => {
46
+ child.kill("SIGTERM");
47
+ timer = setTimeout(() => child.kill("SIGKILL"), 1000);
48
+ timer.unref();
49
+ };
50
+ options.signal.addEventListener("abort", abort, { once: true });
51
+ const cleanup = () => {
52
+ options.signal.removeEventListener("abort", abort);
53
+ clearTimeout(timer);
54
+ };
55
+ child.on("error", (error) => {
56
+ cleanup();
57
+ reject(new Error(`Could not launch ${binary}: ${error.message}. Install and authenticate the harness first.`));
58
+ });
59
+ child.on("exit", (code) => {
60
+ cleanup();
61
+ if (options.signal.aborted || code === 0)
62
+ resolve();
63
+ else
64
+ reject(new Error(`${binary} exited with code ${code}`));
65
+ });
66
+ });
67
+ }
68
+ //# sourceMappingURL=harness.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"harness.js","sourceRoot":"","sources":["../../src/runtime/harness.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import type { ConnectionOptions } from "node:tls";
2
+ /** The browser keeps a stable local origin; only the transport host changes for Vercel routing. */
3
+ export declare function startLocalProxy(options: {
4
+ appUrl: string;
5
+ upstreamUrl: string;
6
+ token: string;
7
+ ca?: ConnectionOptions["ca"];
8
+ }): Promise<{
9
+ port: number;
10
+ close: () => Promise<void>;
11
+ }>;
12
+ //# sourceMappingURL=local-proxy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"local-proxy.d.ts","sourceRoot":"","sources":["../../src/runtime/local-proxy.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAA;AAEjD,mGAAmG;AACnG,wBAAsB,eAAe,CAAC,OAAO,EAAE;IAC7C,MAAM,EAAE,MAAM,CAAA;IACd,WAAW,EAAE,MAAM,CAAA;IACnB,KAAK,EAAE,MAAM,CAAA;IACb,EAAE,CAAC,EAAE,iBAAiB,CAAC,IAAI,CAAC,CAAA;CAC7B;;;GAkHA"}