dev3000 0.0.185 → 0.0.187

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 (237) hide show
  1. package/README.md +102 -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 +10 -0
  16. package/dist/portless.d.ts.map +1 -1
  17. package/dist/portless.js +44 -1
  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 +97 -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 +82 -21
  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 +11 -1
  70. package/dist/utils/project-name.d.ts.map +1 -1
  71. package/dist/utils/project-name.js +14 -1
  72. package/dist/utils/project-name.js.map +1 -1
  73. package/package.json +13 -22
  74. package/skills/d3k/SKILL.md +23 -1
  75. package/dist/commands/crawl.d.ts +0 -12
  76. package/dist/commands/crawl.d.ts.map +0 -1
  77. package/dist/commands/crawl.js +0 -101
  78. package/dist/commands/crawl.js.map +0 -1
  79. package/dist/commands/errors.d.ts +0 -14
  80. package/dist/commands/errors.d.ts.map +0 -1
  81. package/dist/commands/errors.js +0 -246
  82. package/dist/commands/errors.js.map +0 -1
  83. package/dist/commands/fix.d.ts +0 -13
  84. package/dist/commands/fix.d.ts.map +0 -1
  85. package/dist/commands/fix.js +0 -219
  86. package/dist/commands/fix.js.map +0 -1
  87. package/dist/commands/logs.d.ts +0 -13
  88. package/dist/commands/logs.d.ts.map +0 -1
  89. package/dist/commands/logs.js +0 -146
  90. package/dist/commands/logs.js.map +0 -1
  91. package/dist/commands/resume.d.ts +0 -11
  92. package/dist/commands/resume.d.ts.map +0 -1
  93. package/dist/commands/resume.js +0 -75
  94. package/dist/commands/resume.js.map +0 -1
  95. package/dist/commands/status.d.ts +0 -21
  96. package/dist/commands/status.d.ts.map +0 -1
  97. package/dist/commands/status.js +0 -44
  98. package/dist/commands/status.js.map +0 -1
  99. package/dist/components/AgentSelector.d.ts +0 -12
  100. package/dist/components/AgentSelector.d.ts.map +0 -1
  101. package/dist/components/AgentSelector.js +0 -99
  102. package/dist/components/AgentSelector.js.map +0 -1
  103. package/dist/components/PackageSelector.d.ts +0 -13
  104. package/dist/components/PackageSelector.d.ts.map +0 -1
  105. package/dist/components/PackageSelector.js +0 -79
  106. package/dist/components/PackageSelector.js.map +0 -1
  107. package/dist/constants/log-colors.d.ts +0 -43
  108. package/dist/constants/log-colors.d.ts.map +0 -1
  109. package/dist/constants/log-colors.js +0 -59
  110. package/dist/constants/log-colors.js.map +0 -1
  111. package/dist/dev-environment.d.ts +0 -187
  112. package/dist/dev-environment.d.ts.map +0 -1
  113. package/dist/dev-environment.js +0 -2248
  114. package/dist/dev-environment.js.map +0 -1
  115. package/dist/screencast-manager.d.ts +0 -78
  116. package/dist/screencast-manager.d.ts.map +0 -1
  117. package/dist/screencast-manager.js +0 -529
  118. package/dist/screencast-manager.js.map +0 -1
  119. package/dist/services/parsers/error-detectors/base.d.ts +0 -24
  120. package/dist/services/parsers/error-detectors/base.d.ts.map +0 -1
  121. package/dist/services/parsers/error-detectors/base.js +0 -44
  122. package/dist/services/parsers/error-detectors/base.js.map +0 -1
  123. package/dist/services/parsers/error-detectors/index.d.ts +0 -6
  124. package/dist/services/parsers/error-detectors/index.d.ts.map +0 -1
  125. package/dist/services/parsers/error-detectors/index.js +0 -6
  126. package/dist/services/parsers/error-detectors/index.js.map +0 -1
  127. package/dist/services/parsers/error-detectors/nextjs.d.ts +0 -9
  128. package/dist/services/parsers/error-detectors/nextjs.d.ts.map +0 -1
  129. package/dist/services/parsers/error-detectors/nextjs.js +0 -52
  130. package/dist/services/parsers/error-detectors/nextjs.js.map +0 -1
  131. package/dist/services/parsers/index.d.ts +0 -9
  132. package/dist/services/parsers/index.d.ts.map +0 -1
  133. package/dist/services/parsers/index.js +0 -10
  134. package/dist/services/parsers/index.js.map +0 -1
  135. package/dist/services/parsers/log-parsers/base.d.ts +0 -26
  136. package/dist/services/parsers/log-parsers/base.d.ts.map +0 -1
  137. package/dist/services/parsers/log-parsers/base.js +0 -6
  138. package/dist/services/parsers/log-parsers/base.js.map +0 -1
  139. package/dist/services/parsers/log-parsers/index.d.ts +0 -6
  140. package/dist/services/parsers/log-parsers/index.d.ts.map +0 -1
  141. package/dist/services/parsers/log-parsers/index.js +0 -5
  142. package/dist/services/parsers/log-parsers/index.js.map +0 -1
  143. package/dist/services/parsers/log-parsers/standard.d.ts +0 -9
  144. package/dist/services/parsers/log-parsers/standard.d.ts.map +0 -1
  145. package/dist/services/parsers/log-parsers/standard.js +0 -17
  146. package/dist/services/parsers/log-parsers/standard.js.map +0 -1
  147. package/dist/services/parsers/output-processor.d.ts +0 -39
  148. package/dist/services/parsers/output-processor.d.ts.map +0 -1
  149. package/dist/services/parsers/output-processor.js +0 -54
  150. package/dist/services/parsers/output-processor.js.map +0 -1
  151. package/dist/skills/d3k/internal-skill.md +0 -32
  152. package/dist/skills/index.d.ts +0 -54
  153. package/dist/skills/index.d.ts.map +0 -1
  154. package/dist/skills/index.js +0 -214
  155. package/dist/skills/index.js.map +0 -1
  156. package/dist/src/tui-interface-impl.tsx +0 -644
  157. package/dist/tui-interface-impl.d.ts +0 -30
  158. package/dist/tui-interface-impl.d.ts.map +0 -1
  159. package/dist/tui-interface-impl.js +0 -403
  160. package/dist/tui-interface-impl.js.map +0 -1
  161. package/dist/tui-interface-opentui.d.ts +0 -33
  162. package/dist/tui-interface-opentui.d.ts.map +0 -1
  163. package/dist/tui-interface-opentui.js +0 -1128
  164. package/dist/tui-interface-opentui.js.map +0 -1
  165. package/dist/tui-interface.d.ts +0 -38
  166. package/dist/tui-interface.d.ts.map +0 -1
  167. package/dist/tui-interface.js +0 -84
  168. package/dist/tui-interface.js.map +0 -1
  169. package/dist/utils/agent-detection.d.ts +0 -17
  170. package/dist/utils/agent-detection.d.ts.map +0 -1
  171. package/dist/utils/agent-detection.js +0 -81
  172. package/dist/utils/agent-detection.js.map +0 -1
  173. package/dist/utils/agent-selection.d.ts +0 -25
  174. package/dist/utils/agent-selection.d.ts.map +0 -1
  175. package/dist/utils/agent-selection.js +0 -73
  176. package/dist/utils/agent-selection.js.map +0 -1
  177. package/dist/utils/browser-command-argv.d.ts +0 -19
  178. package/dist/utils/browser-command-argv.d.ts.map +0 -1
  179. package/dist/utils/browser-command-argv.js +0 -149
  180. package/dist/utils/browser-command-argv.js.map +0 -1
  181. package/dist/utils/build-version.d.ts +0 -2
  182. package/dist/utils/build-version.d.ts.map +0 -1
  183. package/dist/utils/build-version.js +0 -8
  184. package/dist/utils/build-version.js.map +0 -1
  185. package/dist/utils/cli-options.d.ts +0 -5
  186. package/dist/utils/cli-options.d.ts.map +0 -1
  187. package/dist/utils/cli-options.js +0 -36
  188. package/dist/utils/cli-options.js.map +0 -1
  189. package/dist/utils/d3k-dir.d.ts +0 -3
  190. package/dist/utils/d3k-dir.d.ts.map +0 -1
  191. package/dist/utils/d3k-dir.js +0 -12
  192. package/dist/utils/d3k-dir.js.map +0 -1
  193. package/dist/utils/d3k-skill-installer.d.ts +0 -4
  194. package/dist/utils/d3k-skill-installer.d.ts.map +0 -1
  195. package/dist/utils/d3k-skill-installer.js +0 -30
  196. package/dist/utils/d3k-skill-installer.js.map +0 -1
  197. package/dist/utils/log-filename.d.ts +0 -30
  198. package/dist/utils/log-filename.d.ts.map +0 -1
  199. package/dist/utils/log-filename.js +0 -60
  200. package/dist/utils/log-filename.js.map +0 -1
  201. package/dist/utils/project-detector.d.ts +0 -25
  202. package/dist/utils/project-detector.d.ts.map +0 -1
  203. package/dist/utils/project-detector.js +0 -153
  204. package/dist/utils/project-detector.js.map +0 -1
  205. package/dist/utils/project-metadata.d.ts +0 -4
  206. package/dist/utils/project-metadata.d.ts.map +0 -1
  207. package/dist/utils/project-metadata.js +0 -48
  208. package/dist/utils/project-metadata.js.map +0 -1
  209. package/dist/utils/repo-validate.d.ts +0 -2
  210. package/dist/utils/repo-validate.d.ts.map +0 -1
  211. package/dist/utils/repo-validate.js +0 -10
  212. package/dist/utils/repo-validate.js.map +0 -1
  213. package/dist/utils/session.d.ts +0 -19
  214. package/dist/utils/session.d.ts.map +0 -1
  215. package/dist/utils/session.js +0 -65
  216. package/dist/utils/session.js.map +0 -1
  217. package/dist/utils/skill-installer.d.ts +0 -65
  218. package/dist/utils/skill-installer.d.ts.map +0 -1
  219. package/dist/utils/skill-installer.js +0 -265
  220. package/dist/utils/skill-installer.js.map +0 -1
  221. package/dist/utils/timestamp.d.ts +0 -20
  222. package/dist/utils/timestamp.d.ts.map +0 -1
  223. package/dist/utils/timestamp.js +0 -57
  224. package/dist/utils/timestamp.js.map +0 -1
  225. package/dist/utils/tmux-helpers.d.ts +0 -36
  226. package/dist/utils/tmux-helpers.d.ts.map +0 -1
  227. package/dist/utils/tmux-helpers.js +0 -118
  228. package/dist/utils/tmux-helpers.js.map +0 -1
  229. package/dist/utils/user-config.d.ts +0 -12
  230. package/dist/utils/user-config.d.ts.map +0 -1
  231. package/dist/utils/user-config.js +0 -46
  232. package/dist/utils/user-config.js.map +0 -1
  233. package/dist/utils/version-check.d.ts +0 -52
  234. package/dist/utils/version-check.d.ts.map +0 -1
  235. package/dist/utils/version-check.js +0 -304
  236. package/dist/utils/version-check.js.map +0 -1
  237. package/src/tui-interface-impl.tsx +0 -644
@@ -1,529 +0,0 @@
1
- import { existsSync, mkdirSync, writeFileSync } from "node:fs";
2
- import { tmpdir } from "node:os";
3
- import { join } from "node:path";
4
- import { WebSocket } from "ws";
5
- /**
6
- * ScreencastManager - Passive screencast capture for navigation events
7
- *
8
- * Listens for Page.frameStartedLoading and automatically captures 5 seconds
9
- * of screencast frames for jank detection. No artificial page reloads needed!
10
- */
11
- export class ScreencastManager {
12
- cdpUrl;
13
- logFn;
14
- debug;
15
- ws = null;
16
- buffer = [];
17
- isCapturing = false;
18
- navigationStartTime = 0;
19
- currentSessionId = "";
20
- screenshotDir;
21
- messageId = 1000; // Start high to avoid conflicts
22
- appPort;
23
- allowedUrlMatches = [];
24
- layoutShifts = [];
25
- viewportInfo = {};
26
- captureTrigger = "load";
27
- constructor(cdpUrl, logFn, appPort, debug = false, appUrl) {
28
- this.cdpUrl = cdpUrl;
29
- this.logFn = logFn;
30
- this.debug = debug;
31
- this.screenshotDir = process.env.SCREENSHOT_DIR || join(tmpdir(), "dev3000-mcp-deps", "public", "screenshots");
32
- this.appPort = appPort || process.env.APP_PORT || "3000";
33
- this.allowedUrlMatches = [`localhost:${this.appPort}`];
34
- if (appUrl) {
35
- try {
36
- this.allowedUrlMatches.push(new URL(appUrl).origin);
37
- }
38
- catch {
39
- // Ignore invalid URLs and keep localhost matching.
40
- }
41
- }
42
- if (!existsSync(this.screenshotDir)) {
43
- mkdirSync(this.screenshotDir, { recursive: true });
44
- }
45
- }
46
- /**
47
- * Start listening for navigation events and capturing screencasts
48
- */
49
- async start() {
50
- if (this.ws) {
51
- return;
52
- }
53
- return new Promise((resolve, reject) => {
54
- try {
55
- this.ws = new WebSocket(this.cdpUrl);
56
- let pageEnableId;
57
- let runtimeEnableId;
58
- let pageEnabled = false;
59
- let runtimeEnabled = false;
60
- const checkReady = () => {
61
- if (pageEnabled && runtimeEnabled) {
62
- resolve();
63
- }
64
- };
65
- this.ws.on("open", () => {
66
- // Enable Page domain to receive navigation events
67
- pageEnableId = this.messageId++;
68
- this.send("Page.enable", {}, pageEnableId);
69
- // Enable Runtime domain for URL checking
70
- runtimeEnableId = this.messageId++;
71
- this.send("Runtime.enable", {}, runtimeEnableId);
72
- });
73
- this.ws.on("message", (data) => {
74
- const message = JSON.parse(data.toString());
75
- // Check for enable confirmations
76
- if (message.id === pageEnableId) {
77
- pageEnabled = true;
78
- checkReady();
79
- }
80
- else if (message.id === runtimeEnableId) {
81
- runtimeEnabled = true;
82
- checkReady();
83
- }
84
- this.handleMessage(message);
85
- });
86
- this.ws.on("error", () => {
87
- // Silently handle errors
88
- reject(new Error("WebSocket error"));
89
- });
90
- this.ws.on("close", () => {
91
- this.ws = null;
92
- });
93
- // Timeout after 5 seconds
94
- setTimeout(() => {
95
- if (!pageEnabled || !runtimeEnabled) {
96
- resolve(); // Resolve anyway to not block startup
97
- }
98
- }, 5000);
99
- }
100
- catch (error) {
101
- // Silently handle errors
102
- reject(error);
103
- }
104
- });
105
- }
106
- /**
107
- * Stop capturing and cleanup
108
- */
109
- async stop() {
110
- if (this.isCapturing) {
111
- await this.stopScreencast();
112
- }
113
- if (this.ws) {
114
- this.ws.close();
115
- this.ws = null;
116
- }
117
- // this.logFn("[CDP] Stopped")
118
- }
119
- /**
120
- * Handle CDP messages
121
- */
122
- handleMessage(message) {
123
- // Uncomment for CDP event debugging:
124
- // if (message.method && (message.method.startsWith("Page.") || message.method.startsWith("Network."))) {
125
- // this.logFn(`[CDP] Received CDP event: ${message.method}`)
126
- // }
127
- // Navigation started - check URL before capturing
128
- // Page.frameStartedLoading fires at the start of navigation
129
- // Page.frameNavigated fires after the frame navigates (including reloads)
130
- if (message.method === "Page.frameStartedLoading") {
131
- this.captureTrigger = "load";
132
- this.checkUrlAndStartCapture();
133
- }
134
- else if (message.method === "Page.frameNavigated") {
135
- // Page.frameNavigated fires for both navigations and reloads
136
- // This is essential for capturing CLS after Page.reload()
137
- this.captureTrigger = "navigation";
138
- this.checkUrlAndStartCapture();
139
- }
140
- // Navigation finished - save and stop
141
- else if (message.method === "Page.loadEventFired") {
142
- this.onNavigationComplete();
143
- }
144
- // Screencast frame received
145
- else if (message.method === "Page.screencastFrame" && message.params) {
146
- this.onScreencastFrame(message.params);
147
- }
148
- }
149
- /**
150
- * Check URL before starting capture - only capture the active app origin.
151
- */
152
- async checkUrlAndStartCapture() {
153
- try {
154
- // Query current page URL using Runtime.evaluate
155
- const evalId = this.messageId++;
156
- this.send("Runtime.evaluate", {
157
- expression: "window.location.href",
158
- returnByValue: true
159
- }, evalId);
160
- // Wait for response (hacky but works for now)
161
- let handled = false;
162
- const checkResponse = (message) => {
163
- if (handled)
164
- return;
165
- if (message.id === evalId && message.result?.result?.value) {
166
- handled = true;
167
- const url = message.result.result.value;
168
- // this.logFn(`[CDP] Current URL: ${url}`)
169
- if (this.allowedUrlMatches.some((match) => url.includes(match))) {
170
- // this.logFn("[CDP] URL matches app, starting capture")
171
- this.onNavigationStart();
172
- }
173
- else {
174
- // this.logFn("[CDP] Skipping capture - URL does not match tracked app origins")
175
- }
176
- // Remove listener after handling
177
- if (this.ws) {
178
- this.ws.off("message", responseHandler);
179
- }
180
- }
181
- };
182
- const responseHandler = (data) => {
183
- checkResponse(JSON.parse(data.toString()));
184
- };
185
- if (this.ws) {
186
- this.ws.on("message", responseHandler);
187
- // Timeout after 500ms - fall back to capturing anyway
188
- setTimeout(() => {
189
- if (this.ws) {
190
- this.ws.off("message", responseHandler);
191
- // IMPORTANT: If URL check times out (e.g., during page reload when context is destroyed),
192
- // start capture anyway to ensure we don't miss CLS measurements
193
- if (!handled) {
194
- handled = true;
195
- this.onNavigationStart();
196
- }
197
- }
198
- }, 500);
199
- }
200
- }
201
- catch (error) {
202
- this.logFn(`[CDP] Failed to check URL - ${error}`);
203
- // Fall back to capturing anyway
204
- this.onNavigationStart();
205
- }
206
- }
207
- /**
208
- * Navigation started - begin capturing screencast
209
- */
210
- onNavigationStart() {
211
- // this.logFn("[CDP] Navigation started, beginning screencast capture")
212
- // Stop any existing capture first
213
- if (this.isCapturing) {
214
- this.send("Page.stopScreencast", {});
215
- }
216
- this.navigationStartTime = Date.now();
217
- this.currentSessionId = new Date()
218
- .toISOString()
219
- .replace(/:/g, "-")
220
- .replace(/\.\d{3}Z$/, "Z");
221
- this.buffer = [];
222
- this.layoutShifts = [];
223
- this.isCapturing = true;
224
- // Install CLS observer if not already present
225
- this.installCLSObserver();
226
- // Start screencast at 15fps with good quality
227
- this.send("Page.startScreencast", {
228
- format: "png",
229
- quality: 80,
230
- maxWidth: 1920,
231
- maxHeight: 1080,
232
- everyNthFrame: 1
233
- });
234
- }
235
- /**
236
- * Navigation completed - save frames and stop (after delay to catch hydration)
237
- */
238
- async onNavigationComplete() {
239
- if (!this.isCapturing)
240
- return;
241
- // this.logFn(`[CDP] Page loaded, capturing 2 more seconds for hydration jank...`)
242
- // Continue capturing for 2 more seconds to catch hydration issues
243
- // Hydration often happens right after page load completes
244
- setTimeout(async () => {
245
- if (!this.isCapturing)
246
- return;
247
- // this.logFn(`[CDP] Navigation complete, saving ${this.buffer.length} frames`)
248
- // Save all buffered frames
249
- for (const frame of this.buffer) {
250
- const screenshotPath = join(this.screenshotDir, `${this.currentSessionId}-jank-${frame.timestamp}ms.png`);
251
- try {
252
- const buffer = Buffer.from(frame.data, "base64");
253
- writeFileSync(screenshotPath, buffer);
254
- }
255
- catch (error) {
256
- this.logFn(`[CDP] Failed to save frame - ${error}`);
257
- }
258
- }
259
- // this.logFn(`[CDP] Saved ${this.buffer.length} frames for session ${this.currentSessionId}`)
260
- // Save session metadata with CLS data
261
- const metadataPath = join(this.screenshotDir, `${this.currentSessionId}-metadata.json`);
262
- const totalCLS = this.layoutShifts.reduce((sum, shift) => sum + shift.score, 0);
263
- const metadata = {
264
- sessionId: this.currentSessionId,
265
- frameCount: this.buffer.length,
266
- navigationStartTime: this.navigationStartTime,
267
- captureEndTime: Date.now(),
268
- appPort: this.appPort,
269
- cssViewport: this.viewportInfo, // CSS viewport dimensions from window.innerWidth
270
- captureTrigger: this.captureTrigger, // "navigation" or "load"
271
- layoutShifts: this.layoutShifts,
272
- totalCLS,
273
- clsGrade: totalCLS <= 0.1 ? "good" : totalCLS <= 0.25 ? "needs-improvement" : "poor"
274
- };
275
- try {
276
- writeFileSync(metadataPath, JSON.stringify(metadata, null, 2));
277
- if (totalCLS > 0) {
278
- this.logFn(`[CDP] Detected ${this.layoutShifts.length} layout shifts (CLS: ${totalCLS.toFixed(4)})`);
279
- // Generate detailed CLS analysis for each shift
280
- this.layoutShifts.forEach((shift, index) => {
281
- // Find frames immediately before and after the shift timestamp
282
- // Sort frames by timestamp
283
- const sortedFrames = [...this.buffer].sort((a, b) => a.timestamp - b.timestamp);
284
- // Find the frame immediately before the shift
285
- const beforeFrames = sortedFrames.filter((f) => f.timestamp < shift.timestamp);
286
- const previousFrame = beforeFrames.length >= 2 ? beforeFrames[beforeFrames.length - 2] : beforeFrames[beforeFrames.length - 1];
287
- // Find the frame immediately after the previous frame
288
- const shiftFrame = beforeFrames[beforeFrames.length - 1];
289
- if (previousFrame && shiftFrame && shift.sources && shift.sources.length > 0) {
290
- const previousFilename = `${this.currentSessionId}-jank-${previousFrame.timestamp}ms.png`;
291
- const shiftFilename = `${this.currentSessionId}-jank-${shiftFrame.timestamp}ms.png`;
292
- // Generate human-readable description of the shift
293
- const descriptions = [];
294
- for (const source of shift.sources) {
295
- if (source.node && source.previousRect && source.currentRect) {
296
- const deltaX = source.currentRect.x - source.previousRect.x;
297
- const deltaY = source.currentRect.y - source.previousRect.y;
298
- const direction = deltaY > 0 ? "down" : deltaY < 0 ? "up" : deltaX > 0 ? "right" : "left";
299
- const distance = Math.abs(deltaY || deltaX);
300
- descriptions.push(`<${source.node}> shifted ${direction} by ${distance.toFixed(0)}px`);
301
- }
302
- }
303
- this.logFn(`[CDP] CLS #${index + 1} (score: ${shift.score.toFixed(4)}, time: ${shift.timestamp.toFixed(0)}ms):`);
304
- for (const desc of descriptions) {
305
- this.logFn(`[CDP] - ${desc}`);
306
- }
307
- this.logFn(`[CDP] Before: ${join(this.screenshotDir, previousFilename)}`);
308
- this.logFn(`[CDP] After: ${join(this.screenshotDir, shiftFilename)}`);
309
- this.logFn(`[CDP] 💡 Analyze both images to identify visual differences causing the layout shift`);
310
- }
311
- });
312
- }
313
- }
314
- catch (error) {
315
- this.logFn(`[CDP] Failed to save metadata - ${error}`);
316
- }
317
- this.logFn(`[SCREENCAST] Frames saved to: ${this.screenshotDir}`);
318
- await this.stopScreencast();
319
- }, 2000);
320
- }
321
- /**
322
- * Received a screencast frame - add to buffer
323
- */
324
- onScreencastFrame(params) {
325
- if (!this.isCapturing)
326
- return;
327
- const frameTimestamp = Date.now() - this.navigationStartTime;
328
- const frameData = params.data;
329
- const sessionId = params.sessionId;
330
- // Acknowledge frame so we get more
331
- this.send("Page.screencastFrameAck", { sessionId });
332
- // Buffer frames (no time limit, onNavigationComplete handles stopping)
333
- this.buffer.push({
334
- timestamp: frameTimestamp,
335
- data: frameData,
336
- absoluteTime: Date.now()
337
- });
338
- // Keep buffer trimmed to prevent memory issues (max 10 seconds of frames)
339
- const now = Date.now();
340
- this.buffer = this.buffer.filter((f) => now - f.absoluteTime < 10000);
341
- }
342
- /**
343
- * Stop screencast capture
344
- */
345
- async stopScreencast() {
346
- if (!this.isCapturing)
347
- return;
348
- this.send("Page.stopScreencast", {});
349
- this.isCapturing = false;
350
- this.buffer = [];
351
- // this.logFn("[CDP] Stopped screencast capture")
352
- }
353
- /**
354
- * Install PerformanceObserver for layout shifts (passive, no reload needed)
355
- */
356
- installCLSObserver() {
357
- const observerScript = `
358
- (function() {
359
- // Reset layout shifts array for new navigation
360
- window.__dev3000_layout_shifts__ = [];
361
-
362
- // Update viewport info for current navigation
363
- window.__dev3000_viewport__ = {
364
- width: window.innerWidth,
365
- height: window.innerHeight,
366
- devicePixelRatio: window.devicePixelRatio || 1
367
- };
368
-
369
- // Install observer if not already present
370
- if (window.__dev3000_cls_observer__) return;
371
- window.__dev3000_cls_observer__ = true;
372
-
373
- try {
374
- const observer = new PerformanceObserver((list) => {
375
- for (const entry of list.getEntries()) {
376
- if (entry.entryType === 'layout-shift' && !entry.hadRecentInput) {
377
- // For each shift, try to get the actual current bounding box and position style
378
- const sources = entry.sources ? entry.sources.map(s => {
379
- let actualRect = null;
380
- let positionStyle = null;
381
- if (s.node && s.node.nodeName) {
382
- try {
383
- // Query the first matching element (nav, header, etc.)
384
- const element = document.querySelector(s.node.nodeName.toLowerCase());
385
- if (element) {
386
- const rect = element.getBoundingClientRect();
387
- actualRect = {
388
- x: rect.x,
389
- y: rect.y,
390
- width: rect.width,
391
- height: rect.height
392
- };
393
-
394
- // Get computed position style to detect fixed/absolute elements
395
- const computed = window.getComputedStyle(element);
396
- positionStyle = computed.position;
397
- }
398
- } catch (e) {
399
- // Ignore errors
400
- }
401
- }
402
-
403
- return {
404
- node: s.node ? s.node.nodeName : undefined,
405
- position: positionStyle,
406
- previousRect: s.previousRect ? {
407
- x: s.previousRect.x,
408
- y: s.previousRect.y,
409
- width: s.previousRect.width,
410
- height: s.previousRect.height
411
- } : {},
412
- currentRect: s.currentRect ? {
413
- x: s.currentRect.x,
414
- y: s.currentRect.y,
415
- width: s.currentRect.width,
416
- height: s.currentRect.height
417
- } : {},
418
- actualRect: actualRect
419
- };
420
- }) : [];
421
-
422
- window.__dev3000_layout_shifts__.push({
423
- score: entry.value,
424
- timestamp: entry.startTime,
425
- sources: sources
426
- });
427
- }
428
- }
429
- });
430
-
431
- observer.observe({ type: 'layout-shift', buffered: true });
432
- console.log('CLS observer installed');
433
- } catch (e) {
434
- console.error('Failed to install CLS observer:', e);
435
- }
436
- })();
437
- `;
438
- // Inject observer via Runtime.evaluate (reinstall on each navigation to reset)
439
- const evalId = this.messageId++;
440
- this.send("Runtime.evaluate", { expression: observerScript, returnByValue: false }, evalId);
441
- // Set up periodic polling to retrieve layout shift data
442
- this.pollLayoutShifts();
443
- // this.logFn("Installed CLS observer")
444
- }
445
- /**
446
- * Poll for layout shift data from the injected observer
447
- */
448
- pollLayoutShifts() {
449
- if (!this.isCapturing)
450
- return;
451
- const pollId = this.messageId++;
452
- const viewportId = this.messageId++;
453
- this.send("Runtime.evaluate", {
454
- expression: "window.__dev3000_layout_shifts__ || []",
455
- returnByValue: true
456
- }, pollId);
457
- // Also get viewport info
458
- this.send("Runtime.evaluate", {
459
- expression: "window.__dev3000_viewport__ || {}",
460
- returnByValue: true
461
- }, viewportId);
462
- // Listen for response
463
- const handlePollResponse = (message) => {
464
- if (message.id === pollId && message.result?.result?.value) {
465
- const shifts = message.result.result.value;
466
- if (shifts.length > this.layoutShifts.length) {
467
- // New shifts detected
468
- const newShifts = shifts.slice(this.layoutShifts.length);
469
- this.layoutShifts.push(...newShifts);
470
- newShifts.forEach((shift) => {
471
- const element = shift.sources?.[0]?.node || "unidentified";
472
- const position = shift.sources?.[0]?.position;
473
- // Only log verbose CDP diagnostics when debug mode is enabled
474
- if (this.debug) {
475
- // Log with context about whether we can verify this shift
476
- if (!shift.sources?.[0] || element === "unidentified" || position === null || position === undefined) {
477
- this.logFn(`[CDP] Unverified shift detected (score: ${shift.score.toFixed(4)}, time: ${shift.timestamp.toFixed(0)}ms) - element could not be identified, likely fixed overlay noise`);
478
- }
479
- else if (position === "fixed" || position === "absolute") {
480
- this.logFn(`[CDP] Fixed/absolute element shift detected (${element}, position: ${position}, score: ${shift.score.toFixed(4)}) - will be filtered as overlay noise`);
481
- }
482
- else {
483
- this.logFn(`[CDP] Layout shift detected (element: ${element}, position: ${position}, score: ${shift.score.toFixed(4)}, time: ${shift.timestamp.toFixed(0)}ms)`);
484
- }
485
- }
486
- });
487
- }
488
- }
489
- if (message.id === viewportId && message.result?.result?.value) {
490
- this.viewportInfo = message.result.result.value;
491
- }
492
- };
493
- const responseHandler = (data) => {
494
- handlePollResponse(JSON.parse(data.toString()));
495
- };
496
- if (this.ws) {
497
- this.ws.on("message", responseHandler);
498
- // Timeout after 500ms
499
- setTimeout(() => {
500
- if (this.ws) {
501
- this.ws.off("message", responseHandler);
502
- }
503
- }, 500);
504
- }
505
- // Poll every 500ms while capturing
506
- if (this.isCapturing) {
507
- setTimeout(() => this.pollLayoutShifts(), 500);
508
- }
509
- }
510
- /**
511
- * Send CDP command
512
- */
513
- send(method, params, id) {
514
- if (!this.ws)
515
- return;
516
- this.ws.send(JSON.stringify({
517
- id: id ?? this.messageId++,
518
- method,
519
- params
520
- }));
521
- }
522
- /**
523
- * Get the most recent session ID (for fix_my_app to reference)
524
- */
525
- getLatestSessionId() {
526
- return this.currentSessionId;
527
- }
528
- }
529
- //# sourceMappingURL=screencast-manager.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"screencast-manager.js","sourceRoot":"","sources":["../src/screencast-manager.ts"],"names":[],"mappings":"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"}
@@ -1,24 +0,0 @@
1
- /**
2
- * Base interfaces and types for error detectors
3
- * Responsible for identifying critical errors in server output
4
- */
5
- /**
6
- * Base interface for error detectors
7
- * Responsible for determining if a message indicates a critical error
8
- */
9
- export interface ErrorDetector {
10
- /**
11
- * Check if a message indicates a critical error
12
- * @param message The raw message to check
13
- * @returns true if the message indicates a critical error
14
- */
15
- isCritical(message: string): boolean;
16
- }
17
- /**
18
- * Base error detector with common error patterns
19
- * Provides a foundation that specific framework detectors can extend
20
- */
21
- export declare class BaseErrorDetector implements ErrorDetector {
22
- isCritical(message: string): boolean;
23
- }
24
- //# sourceMappingURL=base.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../../../src/services/parsers/error-detectors/base.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;GAGG;AACH,MAAM,WAAW,aAAa;IAC5B;;;;OAIG;IACH,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAA;CACrC;AAED;;;GAGG;AACH,qBAAa,iBAAkB,YAAW,aAAa;IACrD,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAsCnC;CACF"}
@@ -1,44 +0,0 @@
1
- /**
2
- * Base interfaces and types for error detectors
3
- * Responsible for identifying critical errors in server output
4
- */
5
- /**
6
- * Base error detector with common error patterns
7
- * Provides a foundation that specific framework detectors can extend
8
- */
9
- export class BaseErrorDetector {
10
- isCritical(message) {
11
- // Common critical error patterns across all frameworks
12
- const criticalPatterns = [
13
- // Connection and port errors
14
- /EADDRINUSE/, // Port already in use
15
- /EACCES/, // Permission denied
16
- /ENOENT/, // File not found
17
- /ECONNREFUSED/, // Connection refused
18
- // System-level errors
19
- /out of memory/i, // Memory issues
20
- /segmentation fault/i, // Segfaults
21
- /stack overflow/i, // Stack overflows
22
- // Generic fatal errors
23
- /FATAL/, // Fatal errors
24
- /PANIC/, // Panic conditions
25
- /SIGKILL/, // Process killed
26
- /SIGTERM/, // Process terminated
27
- // Module/dependency errors (but exclude warnings)
28
- /^(?!.*warning).*Cannot find module/i, // Missing modules (exclude warnings)
29
- /^(?!.*warning).*Module not found/i, // Missing modules (exclude warnings)
30
- /^(?!.*warning).*Package not found/i, // Missing packages (exclude warnings)
31
- // Syntax and parsing errors (but exclude warnings)
32
- /^(?!.*warning).*SyntaxError/i, // Syntax errors (exclude warnings)
33
- /^(?!.*warning).*Parse error/i, // Parse errors (exclude warnings)
34
- /^(?!.*warning).*Unexpected token/i // Parsing issues (exclude warnings)
35
- ];
36
- // Early return false for obvious non-critical patterns to avoid regex overhead
37
- if (/warning/i.test(message) || /WARN/.test(message) || /deprecated/i.test(message)) {
38
- return false;
39
- }
40
- // Check for critical patterns
41
- return criticalPatterns.some((pattern) => pattern.test(message));
42
- }
43
- }
44
- //# sourceMappingURL=base.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"base.js","sourceRoot":"","sources":["../../../../src/services/parsers/error-detectors/base.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAeH;;;GAGG;AACH,MAAM,OAAO,iBAAiB;IAC5B,UAAU,CAAC,OAAe;QACxB,uDAAuD;QACvD,MAAM,gBAAgB,GAAG;YACvB,6BAA6B;YAC7B,YAAY,EAAE,sBAAsB;YACpC,QAAQ,EAAE,oBAAoB;YAC9B,QAAQ,EAAE,iBAAiB;YAC3B,cAAc,EAAE,qBAAqB;YAErC,sBAAsB;YACtB,gBAAgB,EAAE,gBAAgB;YAClC,qBAAqB,EAAE,YAAY;YACnC,iBAAiB,EAAE,kBAAkB;YAErC,uBAAuB;YACvB,OAAO,EAAE,eAAe;YACxB,OAAO,EAAE,mBAAmB;YAC5B,SAAS,EAAE,iBAAiB;YAC5B,SAAS,EAAE,qBAAqB;YAEhC,kDAAkD;YAClD,qCAAqC,EAAE,qCAAqC;YAC5E,mCAAmC,EAAE,qCAAqC;YAC1E,oCAAoC,EAAE,sCAAsC;YAE5E,mDAAmD;YACnD,8BAA8B,EAAE,mCAAmC;YACnE,8BAA8B,EAAE,kCAAkC;YAClE,mCAAmC,CAAC,oCAAoC;SACzE,CAAA;QAED,+EAA+E;QAC/E,IAAI,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YACpF,OAAO,KAAK,CAAA;QACd,CAAC;QAED,8BAA8B;QAC9B,OAAO,gBAAgB,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAA;IAClE,CAAC;CACF"}
@@ -1,6 +0,0 @@
1
- /**
2
- * Error detectors module exports
3
- */
4
- export { BaseErrorDetector, ErrorDetector } from "./base.js";
5
- export { NextJsErrorDetector } from "./nextjs.js";
6
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/services/parsers/error-detectors/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,WAAW,CAAA;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAA"}
@@ -1,6 +0,0 @@
1
- /**
2
- * Error detectors module exports
3
- */
4
- export { BaseErrorDetector } from "./base.js";
5
- export { NextJsErrorDetector } from "./nextjs.js";
6
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/services/parsers/error-detectors/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,iBAAiB,EAAiB,MAAM,WAAW,CAAA;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAA"}
@@ -1,9 +0,0 @@
1
- /**
2
- * Next.js error detector for Next.js applications
3
- * Extends base detector with Next.js-specific error patterns
4
- */
5
- import { BaseErrorDetector } from "./base.js";
6
- export declare class NextJsErrorDetector extends BaseErrorDetector {
7
- isCritical(message: string): boolean;
8
- }
9
- //# sourceMappingURL=nextjs.d.ts.map