dev3000 0.0.78 → 0.0.80
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cdp-monitor.d.ts.map +1 -1
- package/dist/cdp-monitor.js +11 -2
- package/dist/cdp-monitor.js.map +1 -1
- package/dist/dev-environment.d.ts +1 -0
- package/dist/dev-environment.d.ts.map +1 -1
- package/dist/dev-environment.js +29 -3
- package/dist/dev-environment.js.map +1 -1
- package/dist/screencast-manager.d.ts +76 -0
- package/dist/screencast-manager.d.ts.map +1 -0
- package/dist/screencast-manager.js +410 -0
- package/dist/screencast-manager.js.map +1 -0
- package/dist/src/tui-interface-impl.tsx +15 -7
- package/dist/tui-interface-impl.d.ts.map +1 -1
- package/dist/tui-interface-impl.js +7 -5
- package/dist/tui-interface-impl.js.map +1 -1
- package/mcp-server/.next/BUILD_ID +1 -1
- package/mcp-server/.next/app-path-routes-manifest.json +4 -1
- package/mcp-server/.next/build-manifest.json +5 -5
- package/mcp-server/.next/fallback-build-manifest.json +2 -2
- package/mcp-server/.next/prerender-manifest.json +3 -3
- package/mcp-server/.next/routes-manifest.json +16 -0
- package/mcp-server/.next/server/app/_global-error/page/build-manifest.json +3 -3
- package/mcp-server/.next/server/app/_global-error/page.js +1 -1
- package/mcp-server/.next/server/app/_global-error/page.js.nft.json +1 -1
- package/mcp-server/.next/server/app/_global-error.html +2 -2
- package/mcp-server/.next/server/app/_global-error.rsc +1 -1
- package/mcp-server/.next/server/app/_not-found/page/build-manifest.json +3 -3
- package/mcp-server/.next/server/app/_not-found/page.js +1 -1
- package/mcp-server/.next/server/app/_not-found/page.js.nft.json +1 -1
- package/mcp-server/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/mcp-server/.next/server/app/_not-found.html +1 -1
- package/mcp-server/.next/server/app/_not-found.rsc +2 -2
- package/mcp-server/.next/server/app/api/jank/[session]/route/app-paths-manifest.json +3 -0
- package/mcp-server/.next/server/app/api/jank/[session]/route/build-manifest.json +11 -0
- package/mcp-server/.next/server/app/api/jank/[session]/route/server-reference-manifest.json +4 -0
- package/mcp-server/.next/server/app/api/jank/[session]/route.js +9 -0
- package/mcp-server/.next/server/app/api/jank/[session]/route.js.map +5 -0
- package/mcp-server/.next/server/app/api/jank/[session]/route.js.nft.json +1 -0
- package/mcp-server/.next/server/app/api/jank/[session]/route_client-reference-manifest.js +2 -0
- package/mcp-server/.next/server/app/api/logs/head/route.js.nft.json +1 -1
- package/mcp-server/.next/server/app/api/logs/list/route.js.nft.json +1 -1
- package/mcp-server/.next/server/app/api/logs/rotate/route.js +1 -1
- package/mcp-server/.next/server/app/api/logs/rotate/route.js.nft.json +1 -1
- package/mcp-server/.next/server/app/api/logs/stream/route.js.nft.json +1 -1
- package/mcp-server/.next/server/app/api/logs/tail/route.js.nft.json +1 -1
- package/mcp-server/.next/server/app/api/screenshots/[filename]/route.js +1 -1
- package/mcp-server/.next/server/app/api/screenshots/[filename]/route.js.nft.json +1 -1
- package/mcp-server/.next/server/app/api/screenshots/list/route/app-paths-manifest.json +3 -0
- package/mcp-server/.next/server/app/api/screenshots/list/route/build-manifest.json +11 -0
- package/mcp-server/.next/server/app/api/screenshots/list/route/server-reference-manifest.json +4 -0
- package/mcp-server/.next/server/app/api/screenshots/list/route.js +7 -0
- package/mcp-server/.next/server/app/api/screenshots/list/route.js.map +5 -0
- package/mcp-server/.next/server/app/api/screenshots/list/route.js.nft.json +1 -0
- package/mcp-server/.next/server/app/api/screenshots/list/route_client-reference-manifest.js +2 -0
- package/mcp-server/.next/server/app/api/tools/route.js +1 -1
- package/mcp-server/.next/server/app/api/tools/route.js.nft.json +1 -1
- package/mcp-server/.next/server/app/index.html +1 -1
- package/mcp-server/.next/server/app/index.rsc +3 -3
- package/mcp-server/.next/server/app/logs/page/build-manifest.json +3 -3
- package/mcp-server/.next/server/app/logs/page.js +1 -1
- package/mcp-server/.next/server/app/logs/page.js.nft.json +1 -1
- package/mcp-server/.next/server/app/logs/page_client-reference-manifest.js +1 -1
- package/mcp-server/.next/server/app/mcp/route.js +3 -2
- package/mcp-server/.next/server/app/mcp/route.js.nft.json +1 -1
- package/mcp-server/.next/server/app/page/build-manifest.json +3 -3
- package/mcp-server/.next/server/app/page.js +1 -1
- package/mcp-server/.next/server/app/page.js.nft.json +1 -1
- package/mcp-server/.next/server/app/page_client-reference-manifest.js +1 -1
- package/mcp-server/.next/server/app/video/[session]/page/app-paths-manifest.json +3 -0
- package/mcp-server/.next/server/app/video/[session]/page/build-manifest.json +18 -0
- package/mcp-server/.next/server/app/video/[session]/page/next-font-manifest.json +6 -0
- package/mcp-server/.next/server/app/video/[session]/page/react-loadable-manifest.json +1 -0
- package/mcp-server/.next/server/app/video/[session]/page/server-reference-manifest.json +4 -0
- package/mcp-server/.next/server/app/video/[session]/page.js +15 -0
- package/mcp-server/.next/server/app/video/[session]/page.js.map +5 -0
- package/mcp-server/.next/server/app/video/[session]/page.js.nft.json +1 -0
- package/mcp-server/.next/server/app/video/[session]/page_client-reference-manifest.js +2 -0
- package/mcp-server/.next/server/app-paths-manifest.json +4 -1
- package/mcp-server/.next/server/chunks/[root-of-the-server]__00592d3f._.js +34 -0
- package/mcp-server/.next/server/chunks/[root-of-the-server]__00592d3f._.js.map +1 -0
- package/mcp-server/.next/server/chunks/{[root-of-the-server]__5580d2ea._.js → [root-of-the-server]__177c72c6._.js} +3 -3
- package/mcp-server/.next/server/chunks/[root-of-the-server]__177c72c6._.js.map +1 -0
- package/mcp-server/.next/server/chunks/{[root-of-the-server]__ffb73672._.js → [root-of-the-server]__2056c8b5._.js} +2 -2
- package/mcp-server/.next/server/chunks/{[root-of-the-server]__d1f9e389._.js → [root-of-the-server]__55c04517._.js} +2 -2
- package/mcp-server/.next/server/chunks/[root-of-the-server]__6ee9a99f._.js +3 -0
- package/mcp-server/.next/server/chunks/[root-of-the-server]__6ee9a99f._.js.map +1 -0
- package/mcp-server/.next/server/chunks/[root-of-the-server]__9a45c8f9._.js +3 -0
- package/mcp-server/.next/server/chunks/[root-of-the-server]__9a45c8f9._.js.map +1 -0
- package/mcp-server/.next/server/chunks/{[root-of-the-server]__e2089993._.js → [root-of-the-server]__bc773251._.js} +2 -2
- package/mcp-server/.next/server/chunks/[root-of-the-server]__e1a64519._.js +3 -0
- package/mcp-server/.next/server/chunks/[root-of-the-server]__e1a64519._.js.map +1 -0
- package/mcp-server/.next/server/chunks/[root-of-the-server]__e6dcd8bf._.js +3 -0
- package/mcp-server/.next/server/chunks/[root-of-the-server]__e6dcd8bf._.js.map +1 -0
- package/mcp-server/.next/server/chunks/d1d76_next_dist_esm_build_templates_app-route_820fc951.js +3 -0
- package/mcp-server/.next/server/chunks/d1d76_next_dist_esm_build_templates_app-route_820fc951.js.map +1 -0
- package/mcp-server/.next/server/chunks/mcp-server__next-internal_server_app_api_jank_[session]_route_actions_3b2b275b.js +3 -0
- package/mcp-server/.next/server/chunks/mcp-server__next-internal_server_app_api_jank_[session]_route_actions_3b2b275b.js.map +1 -0
- package/mcp-server/.next/server/chunks/mcp-server__next-internal_server_app_api_screenshots_list_route_actions_acfa57bd.js +3 -0
- package/mcp-server/.next/server/chunks/mcp-server__next-internal_server_app_api_screenshots_list_route_actions_acfa57bd.js.map +1 -0
- package/mcp-server/.next/server/chunks/ssr/[root-of-the-server]__bf771f7e._.js +3 -0
- package/mcp-server/.next/server/chunks/ssr/{[root-of-the-server]__8db775f9._.js.map → [root-of-the-server]__bf771f7e._.js.map} +1 -1
- package/mcp-server/.next/server/chunks/ssr/[root-of-the-server]__c4e78a20._.js +3 -0
- package/mcp-server/.next/server/chunks/ssr/{[root-of-the-server]__e5dec879._.js.map → [root-of-the-server]__c4e78a20._.js.map} +1 -1
- package/mcp-server/.next/server/chunks/ssr/[root-of-the-server]__e1bc1b8a._.js +3 -0
- package/mcp-server/.next/server/chunks/ssr/[root-of-the-server]__e1bc1b8a._.js.map +1 -0
- package/mcp-server/.next/server/chunks/ssr/[root-of-the-server]__fc10c8f1._.js +3 -0
- package/mcp-server/.next/server/chunks/ssr/[root-of-the-server]__fc10c8f1._.js.map +1 -0
- package/mcp-server/.next/server/chunks/ssr/_0b8335fc._.js +1 -1
- package/mcp-server/.next/server/chunks/ssr/_0b8335fc._.js.map +1 -1
- package/mcp-server/.next/server/chunks/ssr/_bacf0748._.js +2 -2
- package/mcp-server/.next/server/chunks/ssr/_bacf0748._.js.map +1 -1
- package/mcp-server/.next/server/chunks/ssr/_e4aa8f16._.js +4 -0
- package/mcp-server/.next/server/chunks/ssr/_e4aa8f16._.js.map +1 -0
- package/mcp-server/.next/server/chunks/ssr/mcp-server__next-internal_server_app_video_[session]_page_actions_a6aab323.js +3 -0
- package/mcp-server/.next/server/chunks/ssr/mcp-server__next-internal_server_app_video_[session]_page_actions_a6aab323.js.map +1 -0
- package/mcp-server/.next/server/middleware-build-manifest.js +3 -3
- package/mcp-server/.next/server/server-reference-manifest.js +1 -1
- package/mcp-server/.next/server/server-reference-manifest.json +1 -1
- package/mcp-server/.next/static/chunks/274a8d03fad7f819.js +1 -0
- package/mcp-server/.next/static/chunks/3d37ed424c6aaf63.css +1 -0
- package/mcp-server/.next/static/chunks/543e14c771a22442.js +1 -0
- package/mcp-server/.next/static/chunks/58fdd5192b305065.js +1 -0
- package/mcp-server/.next/static/chunks/6bd684c2018a357c.js +1 -0
- package/mcp-server/.next/static/chunks/6d59e588420330ca.js +1 -0
- package/mcp-server/.next/static/chunks/9625e4da85a132f3.js +1 -0
- package/mcp-server/.next/static/chunks/c36bc797d535a4dc.js +1 -0
- package/mcp-server/.next/static/chunks/{turbopack-7cd5a898ed038e26.js → turbopack-9656e7304584cab2.js} +2 -2
- package/mcp-server/app/api/jank/[session]/route.ts +344 -0
- package/mcp-server/app/api/screenshots/list/route.ts +22 -0
- package/mcp-server/app/logs/LogsClient.tsx +33 -0
- package/mcp-server/app/logs/utils.ts +2 -0
- package/mcp-server/app/mcp/route.ts +20 -0
- package/mcp-server/app/mcp/tools.ts +288 -9
- package/mcp-server/app/video/[session]/page.tsx +237 -0
- package/mcp-server/package.json +4 -0
- package/package.json +1 -1
- package/src/tui-interface-impl.tsx +15 -7
- package/mcp-server/.next/server/chunks/[root-of-the-server]__270b33b7._.js +0 -34
- package/mcp-server/.next/server/chunks/[root-of-the-server]__270b33b7._.js.map +0 -1
- package/mcp-server/.next/server/chunks/[root-of-the-server]__5580d2ea._.js.map +0 -1
- package/mcp-server/.next/server/chunks/ssr/[root-of-the-server]__8db775f9._.js +0 -3
- package/mcp-server/.next/server/chunks/ssr/[root-of-the-server]__e5dec879._.js +0 -3
- package/mcp-server/.next/static/chunks/11ac0d0e69696c72.js +0 -1
- package/mcp-server/.next/static/chunks/172f6179d608c15f.js +0 -1
- package/mcp-server/.next/static/chunks/65b18bf1ede9811a.css +0 -1
- package/mcp-server/.next/static/chunks/bb8a4e5f381a85ec.js +0 -1
- package/mcp-server/.next/static/chunks/e09be78bba2194fd.js +0 -1
- package/mcp-server/.next/static/chunks/fec3a6ddaef02b8b.js +0 -1
- /package/mcp-server/.next/server/chunks/{[root-of-the-server]__ffb73672._.js.map → [root-of-the-server]__2056c8b5._.js.map} +0 -0
- /package/mcp-server/.next/server/chunks/{[root-of-the-server]__d1f9e389._.js.map → [root-of-the-server]__55c04517._.js.map} +0 -0
- /package/mcp-server/.next/server/chunks/{[root-of-the-server]__e2089993._.js.map → [root-of-the-server]__bc773251._.js.map} +0 -0
- /package/mcp-server/.next/static/{GE4QeOWMVNF-ly63PtQFE → xyH2s6kJYyYw2j2TSlqpE}/_buildManifest.js +0 -0
- /package/mcp-server/.next/static/{GE4QeOWMVNF-ly63PtQFE → xyH2s6kJYyYw2j2TSlqpE}/_clientMiddlewareManifest.json +0 -0
- /package/mcp-server/.next/static/{GE4QeOWMVNF-ly63PtQFE → xyH2s6kJYyYw2j2TSlqpE}/_ssgManifest.js +0 -0
|
@@ -0,0 +1,410 @@
|
|
|
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
|
+
ws = null;
|
|
15
|
+
buffer = [];
|
|
16
|
+
isCapturing = false;
|
|
17
|
+
navigationStartTime = 0;
|
|
18
|
+
currentSessionId = "";
|
|
19
|
+
screenshotDir;
|
|
20
|
+
messageId = 1000; // Start high to avoid conflicts
|
|
21
|
+
appPort;
|
|
22
|
+
layoutShifts = [];
|
|
23
|
+
viewportInfo = {};
|
|
24
|
+
clsObserverInstalled = false;
|
|
25
|
+
constructor(cdpUrl, logFn, appPort) {
|
|
26
|
+
this.cdpUrl = cdpUrl;
|
|
27
|
+
this.logFn = logFn;
|
|
28
|
+
this.screenshotDir = process.env.SCREENSHOT_DIR || join(tmpdir(), "dev3000-mcp-deps", "public", "screenshots");
|
|
29
|
+
this.appPort = appPort || process.env.APP_PORT || "3000";
|
|
30
|
+
if (!existsSync(this.screenshotDir)) {
|
|
31
|
+
mkdirSync(this.screenshotDir, { recursive: true });
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Start listening for navigation events and capturing screencasts
|
|
36
|
+
*/
|
|
37
|
+
async start() {
|
|
38
|
+
if (this.ws) {
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
try {
|
|
42
|
+
this.ws = new WebSocket(this.cdpUrl);
|
|
43
|
+
this.ws.on("open", () => {
|
|
44
|
+
// Enable Page domain to receive navigation events
|
|
45
|
+
this.send("Page.enable", {});
|
|
46
|
+
// Enable Runtime domain for URL checking
|
|
47
|
+
this.send("Runtime.enable", {});
|
|
48
|
+
});
|
|
49
|
+
this.ws.on("message", (data) => {
|
|
50
|
+
this.handleMessage(JSON.parse(data.toString()));
|
|
51
|
+
});
|
|
52
|
+
this.ws.on("error", () => {
|
|
53
|
+
// Silently handle errors
|
|
54
|
+
});
|
|
55
|
+
this.ws.on("close", () => {
|
|
56
|
+
this.ws = null;
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
catch {
|
|
60
|
+
// Silently handle errors
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Stop capturing and cleanup
|
|
65
|
+
*/
|
|
66
|
+
async stop() {
|
|
67
|
+
if (this.isCapturing) {
|
|
68
|
+
await this.stopScreencast();
|
|
69
|
+
}
|
|
70
|
+
if (this.ws) {
|
|
71
|
+
this.ws.close();
|
|
72
|
+
this.ws = null;
|
|
73
|
+
}
|
|
74
|
+
// this.logFn("[CDP] Stopped")
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Handle CDP messages
|
|
78
|
+
*/
|
|
79
|
+
handleMessage(message) {
|
|
80
|
+
// Uncomment for CDP event debugging:
|
|
81
|
+
// if (message.method && (message.method.startsWith("Page.") || message.method.startsWith("Network."))) {
|
|
82
|
+
// this.logFn(`[CDP] Received CDP event: ${message.method}`)
|
|
83
|
+
// }
|
|
84
|
+
// Navigation started - check URL before capturing
|
|
85
|
+
// Note: Page.frameStartedNavigating fires earlier than Page.frameStartedLoading
|
|
86
|
+
if (message.method === "Page.frameStartedNavigating" || message.method === "Page.frameStartedLoading") {
|
|
87
|
+
this.checkUrlAndStartCapture();
|
|
88
|
+
}
|
|
89
|
+
// Navigation finished - save and stop
|
|
90
|
+
else if (message.method === "Page.loadEventFired") {
|
|
91
|
+
this.onNavigationComplete();
|
|
92
|
+
}
|
|
93
|
+
// Screencast frame received
|
|
94
|
+
else if (message.method === "Page.screencastFrame" && message.params) {
|
|
95
|
+
this.onScreencastFrame(message.params);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Check URL before starting capture - only capture localhost:{appPort}
|
|
100
|
+
*/
|
|
101
|
+
async checkUrlAndStartCapture() {
|
|
102
|
+
try {
|
|
103
|
+
// Query current page URL using Runtime.evaluate
|
|
104
|
+
const evalId = this.messageId++;
|
|
105
|
+
this.send("Runtime.evaluate", {
|
|
106
|
+
expression: "window.location.href",
|
|
107
|
+
returnByValue: true
|
|
108
|
+
}, evalId);
|
|
109
|
+
// Wait for response (hacky but works for now)
|
|
110
|
+
const checkResponse = (message) => {
|
|
111
|
+
if (message.id === evalId && message.result?.result?.value) {
|
|
112
|
+
const url = message.result.result.value;
|
|
113
|
+
// this.logFn(`[CDP] Current URL: ${url}`)
|
|
114
|
+
// Only capture if it's the app URL (localhost:appPort)
|
|
115
|
+
if (url.includes(`localhost:${this.appPort}`)) {
|
|
116
|
+
// this.logFn("[CDP] URL matches app, starting capture")
|
|
117
|
+
this.onNavigationStart();
|
|
118
|
+
}
|
|
119
|
+
else {
|
|
120
|
+
// this.logFn(`[CDP] Skipping capture - URL does not match localhost:${this.appPort}`)
|
|
121
|
+
}
|
|
122
|
+
// Remove listener after handling
|
|
123
|
+
if (this.ws) {
|
|
124
|
+
this.ws.off("message", responseHandler);
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
};
|
|
128
|
+
const responseHandler = (data) => {
|
|
129
|
+
checkResponse(JSON.parse(data.toString()));
|
|
130
|
+
};
|
|
131
|
+
if (this.ws) {
|
|
132
|
+
this.ws.on("message", responseHandler);
|
|
133
|
+
// Timeout after 500ms
|
|
134
|
+
setTimeout(() => {
|
|
135
|
+
if (this.ws) {
|
|
136
|
+
this.ws.off("message", responseHandler);
|
|
137
|
+
}
|
|
138
|
+
}, 500);
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
catch (error) {
|
|
142
|
+
this.logFn(`[CDP] Failed to check URL - ${error}`);
|
|
143
|
+
// Fall back to capturing anyway
|
|
144
|
+
this.onNavigationStart();
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* Navigation started - begin capturing screencast
|
|
149
|
+
*/
|
|
150
|
+
onNavigationStart() {
|
|
151
|
+
// this.logFn("[CDP] Navigation started, beginning screencast capture")
|
|
152
|
+
this.navigationStartTime = Date.now();
|
|
153
|
+
this.currentSessionId = new Date()
|
|
154
|
+
.toISOString()
|
|
155
|
+
.replace(/:/g, "-")
|
|
156
|
+
.replace(/\.\d{3}Z$/, "Z");
|
|
157
|
+
this.buffer = [];
|
|
158
|
+
this.layoutShifts = [];
|
|
159
|
+
this.isCapturing = true;
|
|
160
|
+
// Install CLS observer if not already present
|
|
161
|
+
this.installCLSObserver();
|
|
162
|
+
// Start screencast at 15fps with good quality
|
|
163
|
+
this.send("Page.startScreencast", {
|
|
164
|
+
format: "png",
|
|
165
|
+
quality: 80,
|
|
166
|
+
maxWidth: 1920,
|
|
167
|
+
maxHeight: 1080,
|
|
168
|
+
everyNthFrame: 1
|
|
169
|
+
});
|
|
170
|
+
}
|
|
171
|
+
/**
|
|
172
|
+
* Navigation completed - save frames and stop (after delay to catch hydration)
|
|
173
|
+
*/
|
|
174
|
+
async onNavigationComplete() {
|
|
175
|
+
if (!this.isCapturing)
|
|
176
|
+
return;
|
|
177
|
+
// this.logFn(`[CDP] Page loaded, capturing 2 more seconds for hydration jank...`)
|
|
178
|
+
// Continue capturing for 2 more seconds to catch hydration issues
|
|
179
|
+
// Hydration often happens right after page load completes
|
|
180
|
+
setTimeout(async () => {
|
|
181
|
+
if (!this.isCapturing)
|
|
182
|
+
return;
|
|
183
|
+
// this.logFn(`[CDP] Navigation complete, saving ${this.buffer.length} frames`)
|
|
184
|
+
// Save all buffered frames
|
|
185
|
+
for (const frame of this.buffer) {
|
|
186
|
+
const screenshotPath = join(this.screenshotDir, `${this.currentSessionId}-jank-${frame.timestamp}ms.png`);
|
|
187
|
+
try {
|
|
188
|
+
const buffer = Buffer.from(frame.data, "base64");
|
|
189
|
+
writeFileSync(screenshotPath, buffer);
|
|
190
|
+
}
|
|
191
|
+
catch (error) {
|
|
192
|
+
this.logFn(`[CDP] Failed to save frame - ${error}`);
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
// this.logFn(`[CDP] Saved ${this.buffer.length} frames for session ${this.currentSessionId}`)
|
|
196
|
+
// Save session metadata with CLS data
|
|
197
|
+
const metadataPath = join(this.screenshotDir, `${this.currentSessionId}-metadata.json`);
|
|
198
|
+
const totalCLS = this.layoutShifts.reduce((sum, shift) => sum + shift.score, 0);
|
|
199
|
+
const metadata = {
|
|
200
|
+
sessionId: this.currentSessionId,
|
|
201
|
+
frameCount: this.buffer.length,
|
|
202
|
+
navigationStartTime: this.navigationStartTime,
|
|
203
|
+
captureEndTime: Date.now(),
|
|
204
|
+
appPort: this.appPort,
|
|
205
|
+
cssViewport: this.viewportInfo, // CSS viewport dimensions from window.innerWidth
|
|
206
|
+
layoutShifts: this.layoutShifts,
|
|
207
|
+
totalCLS,
|
|
208
|
+
clsGrade: totalCLS <= 0.1 ? "good" : totalCLS <= 0.25 ? "needs-improvement" : "poor"
|
|
209
|
+
};
|
|
210
|
+
try {
|
|
211
|
+
writeFileSync(metadataPath, JSON.stringify(metadata, null, 2));
|
|
212
|
+
if (totalCLS > 0) {
|
|
213
|
+
this.logFn(`[CDP] Detected ${this.layoutShifts.length} layout shifts (CLS: ${totalCLS.toFixed(4)})`);
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
catch (error) {
|
|
217
|
+
this.logFn(`[CDP] Failed to save metadata - ${error}`);
|
|
218
|
+
}
|
|
219
|
+
this.logFn(`[CDP] View jank analysis: http://localhost:${process.env.MCP_PORT || "3684"}/video/${this.currentSessionId}`);
|
|
220
|
+
await this.stopScreencast();
|
|
221
|
+
}, 2000);
|
|
222
|
+
}
|
|
223
|
+
/**
|
|
224
|
+
* Received a screencast frame - add to buffer
|
|
225
|
+
*/
|
|
226
|
+
onScreencastFrame(params) {
|
|
227
|
+
if (!this.isCapturing)
|
|
228
|
+
return;
|
|
229
|
+
const frameTimestamp = Date.now() - this.navigationStartTime;
|
|
230
|
+
const frameData = params.data;
|
|
231
|
+
const sessionId = params.sessionId;
|
|
232
|
+
// Acknowledge frame so we get more
|
|
233
|
+
this.send("Page.screencastFrameAck", { sessionId });
|
|
234
|
+
// Buffer frames (no time limit, onNavigationComplete handles stopping)
|
|
235
|
+
this.buffer.push({
|
|
236
|
+
timestamp: frameTimestamp,
|
|
237
|
+
data: frameData,
|
|
238
|
+
absoluteTime: Date.now()
|
|
239
|
+
});
|
|
240
|
+
// Keep buffer trimmed to prevent memory issues (max 10 seconds of frames)
|
|
241
|
+
const now = Date.now();
|
|
242
|
+
this.buffer = this.buffer.filter((f) => now - f.absoluteTime < 10000);
|
|
243
|
+
}
|
|
244
|
+
/**
|
|
245
|
+
* Stop screencast capture
|
|
246
|
+
*/
|
|
247
|
+
async stopScreencast() {
|
|
248
|
+
if (!this.isCapturing)
|
|
249
|
+
return;
|
|
250
|
+
this.send("Page.stopScreencast", {});
|
|
251
|
+
this.isCapturing = false;
|
|
252
|
+
this.buffer = [];
|
|
253
|
+
// this.logFn("[CDP] Stopped screencast capture")
|
|
254
|
+
}
|
|
255
|
+
/**
|
|
256
|
+
* Install PerformanceObserver for layout shifts (passive, no reload needed)
|
|
257
|
+
*/
|
|
258
|
+
installCLSObserver() {
|
|
259
|
+
if (this.clsObserverInstalled)
|
|
260
|
+
return;
|
|
261
|
+
const observerScript = `
|
|
262
|
+
(function() {
|
|
263
|
+
if (window.__dev3000_cls_observer__) return; // Already installed
|
|
264
|
+
|
|
265
|
+
window.__dev3000_cls_observer__ = true;
|
|
266
|
+
window.__dev3000_layout_shifts__ = [];
|
|
267
|
+
window.__dev3000_viewport__ = {
|
|
268
|
+
width: window.innerWidth,
|
|
269
|
+
height: window.innerHeight,
|
|
270
|
+
devicePixelRatio: window.devicePixelRatio || 1
|
|
271
|
+
};
|
|
272
|
+
|
|
273
|
+
try {
|
|
274
|
+
const observer = new PerformanceObserver((list) => {
|
|
275
|
+
for (const entry of list.getEntries()) {
|
|
276
|
+
if (entry.entryType === 'layout-shift' && !entry.hadRecentInput) {
|
|
277
|
+
// For each shift, try to get the actual current bounding box
|
|
278
|
+
const sources = entry.sources ? entry.sources.map(s => {
|
|
279
|
+
let actualRect = null;
|
|
280
|
+
if (s.node && s.node.nodeName) {
|
|
281
|
+
try {
|
|
282
|
+
// Query the first matching element (nav, header, etc.)
|
|
283
|
+
const element = document.querySelector(s.node.nodeName.toLowerCase());
|
|
284
|
+
if (element) {
|
|
285
|
+
const rect = element.getBoundingClientRect();
|
|
286
|
+
actualRect = {
|
|
287
|
+
x: rect.x,
|
|
288
|
+
y: rect.y,
|
|
289
|
+
width: rect.width,
|
|
290
|
+
height: rect.height
|
|
291
|
+
};
|
|
292
|
+
}
|
|
293
|
+
} catch (e) {
|
|
294
|
+
// Ignore errors
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
|
|
298
|
+
return {
|
|
299
|
+
node: s.node ? s.node.nodeName : undefined,
|
|
300
|
+
previousRect: s.previousRect ? {
|
|
301
|
+
x: s.previousRect.x,
|
|
302
|
+
y: s.previousRect.y,
|
|
303
|
+
width: s.previousRect.width,
|
|
304
|
+
height: s.previousRect.height
|
|
305
|
+
} : {},
|
|
306
|
+
currentRect: s.currentRect ? {
|
|
307
|
+
x: s.currentRect.x,
|
|
308
|
+
y: s.currentRect.y,
|
|
309
|
+
width: s.currentRect.width,
|
|
310
|
+
height: s.currentRect.height
|
|
311
|
+
} : {},
|
|
312
|
+
actualRect: actualRect
|
|
313
|
+
};
|
|
314
|
+
}) : [];
|
|
315
|
+
|
|
316
|
+
window.__dev3000_layout_shifts__.push({
|
|
317
|
+
score: entry.value,
|
|
318
|
+
timestamp: entry.startTime,
|
|
319
|
+
sources: sources
|
|
320
|
+
});
|
|
321
|
+
}
|
|
322
|
+
}
|
|
323
|
+
});
|
|
324
|
+
|
|
325
|
+
observer.observe({ type: 'layout-shift', buffered: true });
|
|
326
|
+
console.log('[dev3000] CLS observer installed');
|
|
327
|
+
} catch (e) {
|
|
328
|
+
console.error('[dev3000] Failed to install CLS observer:', e);
|
|
329
|
+
}
|
|
330
|
+
})();
|
|
331
|
+
`;
|
|
332
|
+
// Inject observer via Runtime.evaluate
|
|
333
|
+
const evalId = this.messageId++;
|
|
334
|
+
this.send("Runtime.evaluate", { expression: observerScript, returnByValue: false }, evalId);
|
|
335
|
+
// Set up periodic polling to retrieve layout shift data
|
|
336
|
+
this.pollLayoutShifts();
|
|
337
|
+
this.clsObserverInstalled = true;
|
|
338
|
+
// this.logFn("Installed CLS observer")
|
|
339
|
+
}
|
|
340
|
+
/**
|
|
341
|
+
* Poll for layout shift data from the injected observer
|
|
342
|
+
*/
|
|
343
|
+
pollLayoutShifts() {
|
|
344
|
+
if (!this.isCapturing)
|
|
345
|
+
return;
|
|
346
|
+
const pollId = this.messageId++;
|
|
347
|
+
const viewportId = this.messageId++;
|
|
348
|
+
this.send("Runtime.evaluate", {
|
|
349
|
+
expression: "window.__dev3000_layout_shifts__ || []",
|
|
350
|
+
returnByValue: true
|
|
351
|
+
}, pollId);
|
|
352
|
+
// Also get viewport info
|
|
353
|
+
this.send("Runtime.evaluate", {
|
|
354
|
+
expression: "window.__dev3000_viewport__ || {}",
|
|
355
|
+
returnByValue: true
|
|
356
|
+
}, viewportId);
|
|
357
|
+
// Listen for response
|
|
358
|
+
const handlePollResponse = (message) => {
|
|
359
|
+
if (message.id === pollId && message.result?.result?.value) {
|
|
360
|
+
const shifts = message.result.result.value;
|
|
361
|
+
if (shifts.length > this.layoutShifts.length) {
|
|
362
|
+
// New shifts detected
|
|
363
|
+
const newShifts = shifts.slice(this.layoutShifts.length);
|
|
364
|
+
this.layoutShifts.push(...newShifts);
|
|
365
|
+
newShifts.forEach((shift) => {
|
|
366
|
+
this.logFn(`[CDP] Layout shift detected (score: ${shift.score.toFixed(4)}, time: ${shift.timestamp.toFixed(0)}ms)`);
|
|
367
|
+
});
|
|
368
|
+
}
|
|
369
|
+
}
|
|
370
|
+
if (message.id === viewportId && message.result?.result?.value) {
|
|
371
|
+
this.viewportInfo = message.result.result.value;
|
|
372
|
+
}
|
|
373
|
+
};
|
|
374
|
+
const responseHandler = (data) => {
|
|
375
|
+
handlePollResponse(JSON.parse(data.toString()));
|
|
376
|
+
};
|
|
377
|
+
if (this.ws) {
|
|
378
|
+
this.ws.on("message", responseHandler);
|
|
379
|
+
// Timeout after 500ms
|
|
380
|
+
setTimeout(() => {
|
|
381
|
+
if (this.ws) {
|
|
382
|
+
this.ws.off("message", responseHandler);
|
|
383
|
+
}
|
|
384
|
+
}, 500);
|
|
385
|
+
}
|
|
386
|
+
// Poll every 500ms while capturing
|
|
387
|
+
if (this.isCapturing) {
|
|
388
|
+
setTimeout(() => this.pollLayoutShifts(), 500);
|
|
389
|
+
}
|
|
390
|
+
}
|
|
391
|
+
/**
|
|
392
|
+
* Send CDP command
|
|
393
|
+
*/
|
|
394
|
+
send(method, params, id) {
|
|
395
|
+
if (!this.ws)
|
|
396
|
+
return;
|
|
397
|
+
this.ws.send(JSON.stringify({
|
|
398
|
+
id: id ?? this.messageId++,
|
|
399
|
+
method,
|
|
400
|
+
params
|
|
401
|
+
}));
|
|
402
|
+
}
|
|
403
|
+
/**
|
|
404
|
+
* Get the most recent session ID (for fix_my_app to reference)
|
|
405
|
+
*/
|
|
406
|
+
getLatestSessionId() {
|
|
407
|
+
return this.currentSessionId;
|
|
408
|
+
}
|
|
409
|
+
}
|
|
410
|
+
//# sourceMappingURL=screencast-manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"screencast-manager.js","sourceRoot":"","sources":["../src/screencast-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -260,12 +260,15 @@ const TUIApp = ({
|
|
|
260
260
|
{initStatus && <Text dimColor>- {initStatus}</Text>}
|
|
261
261
|
</Box>
|
|
262
262
|
{!isVeryCompact && (
|
|
263
|
-
|
|
263
|
+
<Box flexDirection="column">
|
|
264
264
|
<Text dimColor>
|
|
265
265
|
App: localhost:{appPort} | MCP: localhost:{mcpPort}
|
|
266
266
|
</Text>
|
|
267
|
-
<Text dimColor
|
|
268
|
-
|
|
267
|
+
<Text dimColor>
|
|
268
|
+
📸 http://localhost:{mcpPort}/logs
|
|
269
|
+
{projectName ? `?project=${encodeURIComponent(projectName)}` : ""}
|
|
270
|
+
</Text>
|
|
271
|
+
</Box>
|
|
269
272
|
)}
|
|
270
273
|
</Box>
|
|
271
274
|
</Box>
|
|
@@ -344,9 +347,9 @@ const TUIApp = ({
|
|
|
344
347
|
if (parts) {
|
|
345
348
|
let [, timestamp, source, type, message] = parts
|
|
346
349
|
|
|
347
|
-
// Replace
|
|
348
|
-
if (message
|
|
349
|
-
message = message.replace(
|
|
350
|
+
// Replace warning emoji in ERROR/WARNING messages for consistent terminal rendering
|
|
351
|
+
if (message && (type === "ERROR" || type === "WARNING")) {
|
|
352
|
+
message = message.replace(/⚠/g, "[!]")
|
|
350
353
|
}
|
|
351
354
|
|
|
352
355
|
// In very compact mode, simplify the output
|
|
@@ -450,7 +453,12 @@ const TUIApp = ({
|
|
|
450
453
|
|
|
451
454
|
{/* Bottom status line - no border, just text */}
|
|
452
455
|
<Box paddingX={1} justifyContent="space-between">
|
|
453
|
-
<Text color="#A18CE5"
|
|
456
|
+
<Text color="#A18CE5">
|
|
457
|
+
⏵⏵{" "}
|
|
458
|
+
{isVeryCompact
|
|
459
|
+
? logFile.split("/").slice(-2, -1)[0] || "logs" // Just show directory name
|
|
460
|
+
: logFile.replace(process.env.HOME || "", "~")}
|
|
461
|
+
</Text>
|
|
454
462
|
<Text color="#A18CE5">{ctrlCMessage}</Text>
|
|
455
463
|
</Box>
|
|
456
464
|
</Box>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tui-interface-impl.d.ts","sourceRoot":"","sources":["../src/tui-interface-impl.tsx"],"names":[],"mappings":"AAOA,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,CAAA;IACf,WAAW,EAAE,MAAM,CAAA;IACnB,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,OAAO,EAAE,MAAM,CAAA;IACf,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB;
|
|
1
|
+
{"version":3,"file":"tui-interface-impl.d.ts","sourceRoot":"","sources":["../src/tui-interface-impl.tsx"],"names":[],"mappings":"AAOA,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,CAAA;IACf,WAAW,EAAE,MAAM,CAAA;IACnB,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,OAAO,EAAE,MAAM,CAAA;IACf,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB;AAocD,wBAAsB,MAAM,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC;IACzD,GAAG,EAAE;QAAE,OAAO,EAAE,MAAM,IAAI,CAAA;KAAE,CAAA;IAC5B,YAAY,EAAE,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAA;IAC7C,aAAa,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;CACtC,CAAC,CAwCD"}
|
|
@@ -200,7 +200,7 @@ const TUIApp = ({ appPort: initialAppPort, mcpPort, logFile, commandName, server
|
|
|
200
200
|
// Calculate visible logs
|
|
201
201
|
const visibleLogs = logs.slice(Math.max(0, logs.length - maxVisibleLogs - scrollOffset), logs.length - scrollOffset);
|
|
202
202
|
// Render compact header for small terminals
|
|
203
|
-
const renderCompactHeader = () => (_jsx(Box, { borderStyle: "single", borderColor: "#A18CE5", paddingX: 1, marginBottom: 1, children: _jsxs(Box, { flexDirection: "column", width: "100%", children: [_jsxs(Box, { children: [_jsx(Text, { color: "#A18CE5", bold: true, children: COMPACT_LOGO }), _jsxs(Text, { children: [" v", version, " "] }), initStatus && _jsxs(Text, { dimColor: true, children: ["- ", initStatus] })] }), !isVeryCompact && (_jsxs(
|
|
203
|
+
const renderCompactHeader = () => (_jsx(Box, { borderStyle: "single", borderColor: "#A18CE5", paddingX: 1, marginBottom: 1, children: _jsxs(Box, { flexDirection: "column", width: "100%", children: [_jsxs(Box, { children: [_jsx(Text, { color: "#A18CE5", bold: true, children: COMPACT_LOGO }), _jsxs(Text, { children: [" v", version, " "] }), initStatus && _jsxs(Text, { dimColor: true, children: ["- ", initStatus] })] }), !isVeryCompact && (_jsxs(Box, { flexDirection: "column", children: [_jsxs(Text, { dimColor: true, children: ["App: localhost:", appPort, " | MCP: localhost:", mcpPort] }), _jsxs(Text, { dimColor: true, children: ["\uD83D\uDCF8 http://localhost:", mcpPort, "/logs", projectName ? `?project=${encodeURIComponent(projectName)}` : ""] })] }))] }) }));
|
|
204
204
|
// Render normal header
|
|
205
205
|
const renderNormalHeader = () => {
|
|
206
206
|
// Create custom top border with title embedded (like Claude Code)
|
|
@@ -219,9 +219,9 @@ const TUIApp = ({ appPort: initialAppPort, mcpPort, logFile, commandName, server
|
|
|
219
219
|
const parts = log.content.match(/^\[(.*?)\] \[(.*?)\] (?:\[(.*?)\] )?(.*)$/);
|
|
220
220
|
if (parts) {
|
|
221
221
|
let [, timestamp, source, type, message] = parts;
|
|
222
|
-
// Replace
|
|
223
|
-
if (message
|
|
224
|
-
message = message.replace(
|
|
222
|
+
// Replace warning emoji in ERROR/WARNING messages for consistent terminal rendering
|
|
223
|
+
if (message && (type === "ERROR" || type === "WARNING")) {
|
|
224
|
+
message = message.replace(/⚠/g, "[!]");
|
|
225
225
|
}
|
|
226
226
|
// In very compact mode, simplify the output
|
|
227
227
|
if (isVeryCompact) {
|
|
@@ -265,7 +265,9 @@ const TUIApp = ({ appPort: initialAppPort, mcpPort, logFile, commandName, server
|
|
|
265
265
|
}
|
|
266
266
|
// Fallback for unparsed lines
|
|
267
267
|
return (_jsx(Text, { wrap: "truncate-end", children: log.content }, log.id));
|
|
268
|
-
})) }), !isVeryCompact && logs.length > maxVisibleLogs && scrollOffset > 0 && (_jsxs(Text, { dimColor: true, children: ["(", scrollOffset, " lines below)"] }))] }), _jsxs(Box, { paddingX: 1, justifyContent: "space-between", children: [_jsxs(Text, { color: "#A18CE5", children: ["\u23F5\u23F5
|
|
268
|
+
})) }), !isVeryCompact && logs.length > maxVisibleLogs && scrollOffset > 0 && (_jsxs(Text, { dimColor: true, children: ["(", scrollOffset, " lines below)"] }))] }), _jsxs(Box, { paddingX: 1, justifyContent: "space-between", children: [_jsxs(Text, { color: "#A18CE5", children: ["\u23F5\u23F5", " ", isVeryCompact
|
|
269
|
+
? logFile.split("/").slice(-2, -1)[0] || "logs" // Just show directory name
|
|
270
|
+
: logFile.replace(process.env.HOME || "", "~")] }), _jsx(Text, { color: "#A18CE5", children: ctrlCMessage })] })] }));
|
|
269
271
|
};
|
|
270
272
|
export async function runTUI(options) {
|
|
271
273
|
return new Promise((resolve, reject) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tui-interface-impl.js","sourceRoot":"","sources":["../src/tui-interface-impl.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"tui-interface-impl.js","sourceRoot":"","sources":["../src/tui-interface-impl.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
xyH2s6kJYyYw2j2TSlqpE
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"/_global-error/page": "/_global-error",
|
|
3
3
|
"/_not-found/page": "/_not-found",
|
|
4
|
+
"/api/jank/[session]/route": "/api/jank/[session]",
|
|
4
5
|
"/api/logs/append/route": "/api/logs/append",
|
|
5
6
|
"/api/logs/head/route": "/api/logs/head",
|
|
6
7
|
"/api/logs/list/route": "/api/logs/list",
|
|
@@ -8,8 +9,10 @@
|
|
|
8
9
|
"/api/logs/stream/route": "/api/logs/stream",
|
|
9
10
|
"/api/logs/tail/route": "/api/logs/tail",
|
|
10
11
|
"/api/screenshots/[filename]/route": "/api/screenshots/[filename]",
|
|
12
|
+
"/api/screenshots/list/route": "/api/screenshots/list",
|
|
11
13
|
"/api/tools/route": "/api/tools",
|
|
12
14
|
"/logs/page": "/logs",
|
|
13
15
|
"/mcp/route": "/mcp",
|
|
14
|
-
"/page": "/"
|
|
16
|
+
"/page": "/",
|
|
17
|
+
"/video/[session]/page": "/video/[session]"
|
|
15
18
|
}
|
|
@@ -8,16 +8,16 @@
|
|
|
8
8
|
"static/chunks/a6dad97d9634a72d.js"
|
|
9
9
|
],
|
|
10
10
|
"lowPriorityFiles": [
|
|
11
|
-
"static/
|
|
12
|
-
"static/
|
|
11
|
+
"static/xyH2s6kJYyYw2j2TSlqpE/_ssgManifest.js",
|
|
12
|
+
"static/xyH2s6kJYyYw2j2TSlqpE/_buildManifest.js"
|
|
13
13
|
],
|
|
14
14
|
"rootMainFiles": [
|
|
15
|
-
"static/chunks/
|
|
16
|
-
"static/chunks/
|
|
15
|
+
"static/chunks/9625e4da85a132f3.js",
|
|
16
|
+
"static/chunks/6d59e588420330ca.js",
|
|
17
17
|
"static/chunks/571fbcba7786c174.js",
|
|
18
18
|
"static/chunks/dbbdc51e76f4cea4.js",
|
|
19
19
|
"static/chunks/526448e84b58822c.js",
|
|
20
|
-
"static/chunks/turbopack-
|
|
20
|
+
"static/chunks/turbopack-9656e7304584cab2.js"
|
|
21
21
|
],
|
|
22
22
|
"ampFirstPages": []
|
|
23
23
|
}
|
|
@@ -6,8 +6,8 @@
|
|
|
6
6
|
"ampDevFiles": [],
|
|
7
7
|
"polyfillFiles": [],
|
|
8
8
|
"lowPriorityFiles": [
|
|
9
|
-
"static/
|
|
10
|
-
"static/
|
|
9
|
+
"static/xyH2s6kJYyYw2j2TSlqpE/_ssgManifest.js",
|
|
10
|
+
"static/xyH2s6kJYyYw2j2TSlqpE/_buildManifest.js"
|
|
11
11
|
],
|
|
12
12
|
"rootMainFiles": [],
|
|
13
13
|
"ampFirstPages": []
|