dev3000 0.0.91 → 0.0.93
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/screencast-manager.d.ts +1 -0
- package/dist/screencast-manager.d.ts.map +1 -1
- package/dist/screencast-manager.js +29 -4
- package/dist/screencast-manager.js.map +1 -1
- package/dist/src/tui-interface-impl.tsx +28 -13
- package/dist/tui-interface-impl.d.ts.map +1 -1
- package/dist/tui-interface-impl.js +23 -11
- package/dist/tui-interface-impl.js.map +1 -1
- package/mcp-server/.next/BUILD_ID +1 -1
- package/mcp-server/.next/build-manifest.json +2 -2
- package/mcp-server/.next/fallback-build-manifest.json +2 -2
- package/mcp-server/.next/next-minimal-server.js.nft.json +1 -1
- package/mcp-server/.next/next-server.js.nft.json +1 -1
- package/mcp-server/.next/prerender-manifest.json +3 -3
- 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.js.nft.json +1 -1
- package/mcp-server/.next/server/app/_not-found.html +1 -1
- package/mcp-server/.next/server/app/_not-found.rsc +1 -1
- package/mcp-server/.next/server/app/api/jank/[session]/route.js.nft.json +1 -1
- package/mcp-server/.next/server/app/api/logs/append/route.js.nft.json +1 -1
- 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.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/orchestrator/route.js.nft.json +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.js.nft.json +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 +1 -1
- package/mcp-server/.next/server/app/logs/page.js.nft.json +1 -1
- package/mcp-server/.next/server/app/mcp/route.js.nft.json +1 -1
- package/mcp-server/.next/server/app/page.js.nft.json +1 -1
- package/mcp-server/.next/server/app/video/[session]/page.js.nft.json +1 -1
- package/mcp-server/.next/server/chunks/[root-of-the-server]__94037b23._.js +2 -2
- package/mcp-server/.next/server/chunks/[root-of-the-server]__94037b23._.js.map +1 -1
- package/mcp-server/.next/server/chunks/[root-of-the-server]__ae49815f._.js +6 -6
- package/mcp-server/.next/server/chunks/[root-of-the-server]__ae49815f._.js.map +1 -1
- package/mcp-server/.next/server/chunks/[root-of-the-server]__cc74dbef._.js +2 -2
- package/mcp-server/.next/server/chunks/[root-of-the-server]__cc74dbef._.js.map +1 -1
- package/mcp-server/.next/server/chunks/[root-of-the-server]__dc0b0022._.js +1 -1
- package/mcp-server/.next/server/chunks/[root-of-the-server]__dc0b0022._.js.map +1 -1
- 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/app/mcp/client-manager.ts +76 -23
- package/mcp-server/app/mcp/route.ts +140 -15
- package/mcp-server/app/mcp/tools.ts +151 -24
- package/package.json +1 -1
- package/src/tui-interface-impl.tsx +28 -13
- /package/mcp-server/.next/static/{eVL_05d0pOH_qw2twMoct → JCjxP4rkK3FXLwJCSQET6}/_buildManifest.js +0 -0
- /package/mcp-server/.next/static/{eVL_05d0pOH_qw2twMoct → JCjxP4rkK3FXLwJCSQET6}/_clientMiddlewareManifest.json +0 -0
- /package/mcp-server/.next/static/{eVL_05d0pOH_qw2twMoct → JCjxP4rkK3FXLwJCSQET6}/_ssgManifest.js +0 -0
|
@@ -20,6 +20,8 @@ interface LogEntry {
|
|
|
20
20
|
content: string
|
|
21
21
|
}
|
|
22
22
|
|
|
23
|
+
const NEXTJS_MCP_404_REGEX = /(?:\[POST\]|POST)\s+\/_next\/mcp\b[^\n]*\b404\b/i
|
|
24
|
+
|
|
23
25
|
// Compact ASCII logo for very small terminals
|
|
24
26
|
const COMPACT_LOGO = "d3k"
|
|
25
27
|
|
|
@@ -45,8 +47,9 @@ const TUIApp = ({
|
|
|
45
47
|
const [initStatus, setInitStatus] = useState<string | null>("Initializing...")
|
|
46
48
|
const [appPort, setAppPort] = useState<string>(initialAppPort)
|
|
47
49
|
const logIdCounter = useRef(0)
|
|
50
|
+
const [clearFromLogId, setClearFromLogId] = useState<number>(0) // Track log ID to clear from
|
|
48
51
|
const { stdout } = useStdout()
|
|
49
|
-
const ctrlCMessageDefault = "^C quit"
|
|
52
|
+
const ctrlCMessageDefault = "^L clear ^C quit"
|
|
50
53
|
const [ctrlCMessage, setCtrlCMessage] = useState(ctrlCMessageDefault)
|
|
51
54
|
|
|
52
55
|
const [terminalSize, setTerminalSize] = useState(() => ({
|
|
@@ -147,6 +150,10 @@ const TUIApp = ({
|
|
|
147
150
|
let buffer = ""
|
|
148
151
|
|
|
149
152
|
const appendLog = (line: string) => {
|
|
153
|
+
if (NEXTJS_MCP_404_REGEX.test(line)) {
|
|
154
|
+
return
|
|
155
|
+
}
|
|
156
|
+
|
|
150
157
|
const newLog: LogEntry = {
|
|
151
158
|
id: logIdCounter.current++,
|
|
152
159
|
content: line
|
|
@@ -228,12 +235,19 @@ const TUIApp = ({
|
|
|
228
235
|
if (key.ctrl && input === "c") {
|
|
229
236
|
// Send SIGINT to trigger main process shutdown handler
|
|
230
237
|
process.kill(process.pid, "SIGINT")
|
|
238
|
+
} else if (key.ctrl && input === "l") {
|
|
239
|
+
// Ctrl-L: Clear logs box - set clear point to last log ID
|
|
240
|
+
const lastLogId = logs.length > 0 ? logs[logs.length - 1].id : logIdCounter.current
|
|
241
|
+
setClearFromLogId(lastLogId)
|
|
242
|
+
setScrollOffset(0) // Reset scroll to bottom
|
|
231
243
|
} else if (key.upArrow) {
|
|
232
|
-
|
|
244
|
+
const filteredCount = logs.filter((log) => log.id > clearFromLogId).length
|
|
245
|
+
setScrollOffset((prev) => Math.min(prev + 1, Math.max(0, filteredCount - maxVisibleLogs)))
|
|
233
246
|
} else if (key.downArrow) {
|
|
234
247
|
setScrollOffset((prev) => Math.max(0, prev - 1))
|
|
235
248
|
} else if (key.pageUp) {
|
|
236
|
-
|
|
249
|
+
const filteredCount = logs.filter((log) => log.id > clearFromLogId).length
|
|
250
|
+
setScrollOffset((prev) => Math.min(prev + maxVisibleLogs, Math.max(0, filteredCount - maxVisibleLogs)))
|
|
237
251
|
} else if (key.pageDown) {
|
|
238
252
|
setScrollOffset((prev) => Math.max(0, prev - maxVisibleLogs))
|
|
239
253
|
} else if (input === "g" && key.shift) {
|
|
@@ -241,12 +255,17 @@ const TUIApp = ({
|
|
|
241
255
|
setScrollOffset(0)
|
|
242
256
|
} else if (input === "g" && !key.shift) {
|
|
243
257
|
// g to go to beginning
|
|
244
|
-
|
|
258
|
+
const filteredCount = logs.filter((log) => log.id > clearFromLogId).length
|
|
259
|
+
setScrollOffset(Math.max(0, filteredCount - maxVisibleLogs))
|
|
245
260
|
}
|
|
246
261
|
})
|
|
247
262
|
|
|
248
|
-
// Calculate visible logs
|
|
249
|
-
const
|
|
263
|
+
// Calculate visible logs - filter to only show logs after the clear point
|
|
264
|
+
const filteredLogs = logs.filter((log) => log.id > clearFromLogId)
|
|
265
|
+
const visibleLogs = filteredLogs.slice(
|
|
266
|
+
Math.max(0, filteredLogs.length - maxVisibleLogs - scrollOffset),
|
|
267
|
+
filteredLogs.length - scrollOffset
|
|
268
|
+
)
|
|
250
269
|
|
|
251
270
|
// Render compact header for small terminals
|
|
252
271
|
const renderCompactHeader = () => (
|
|
@@ -331,7 +350,7 @@ const TUIApp = ({
|
|
|
331
350
|
<Box flexDirection="column" borderStyle="single" borderColor="gray" paddingX={1} flexGrow={1} minHeight={0}>
|
|
332
351
|
{!isVeryCompact && (
|
|
333
352
|
<Text color="gray" dimColor>
|
|
334
|
-
Logs ({
|
|
353
|
+
Logs ({filteredLogs.length} total{scrollOffset > 0 && `, scrolled up ${scrollOffset} lines`})
|
|
335
354
|
</Text>
|
|
336
355
|
)}
|
|
337
356
|
|
|
@@ -427,10 +446,6 @@ const TUIApp = ({
|
|
|
427
446
|
// Single space after type
|
|
428
447
|
const typeSpacing = ""
|
|
429
448
|
|
|
430
|
-
// For alignment: if no type tag, add spacing equivalent to a tag
|
|
431
|
-
// This aligns SERVER logs without tags with those that have tags
|
|
432
|
-
const alignmentSpacing = !type ? " " : "" // ~7 chars for average tag like [GET]
|
|
433
|
-
|
|
434
449
|
return (
|
|
435
450
|
<Text key={log.id} wrap="truncate-end">
|
|
436
451
|
<Text dimColor>[{timestamp}]</Text>
|
|
@@ -438,14 +453,14 @@ const TUIApp = ({
|
|
|
438
453
|
<Text color={sourceColor} bold>
|
|
439
454
|
[{source}]
|
|
440
455
|
</Text>
|
|
441
|
-
<Text>{sourceSpacing} </Text>
|
|
442
456
|
{type ? (
|
|
443
457
|
<>
|
|
458
|
+
<Text>{sourceSpacing} </Text>
|
|
444
459
|
<Text color={typeColors[type] || "#A0A0A0"}>[{type}]</Text>
|
|
445
460
|
<Text>{typeSpacing} </Text>
|
|
446
461
|
</>
|
|
447
462
|
) : (
|
|
448
|
-
<Text>
|
|
463
|
+
<Text> </Text>
|
|
449
464
|
)}
|
|
450
465
|
<Text>{message}</Text>
|
|
451
466
|
</Text>
|
/package/mcp-server/.next/static/{eVL_05d0pOH_qw2twMoct → JCjxP4rkK3FXLwJCSQET6}/_buildManifest.js
RENAMED
|
File without changes
|
|
File without changes
|
/package/mcp-server/.next/static/{eVL_05d0pOH_qw2twMoct → JCjxP4rkK3FXLwJCSQET6}/_ssgManifest.js
RENAMED
|
File without changes
|