dev3000 0.0.186 → 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 (235) 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 +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 +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 +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
@@ -1,403 +0,0 @@
1
- import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import chalk from "chalk";
3
- import { createReadStream, unwatchFile, watchFile } from "fs";
4
- import { Box, render, Text, useInput, useWindowSize } from "ink";
5
- import Spinner from "ink-spinner";
6
- import { memo, useEffect, useRef, useState } from "react";
7
- import { LOG_COLORS } from "./constants/log-colors.js";
8
- // Compact ASCII logo for very small terminals
9
- const COMPACT_LOGO = "d3k";
10
- // Full ASCII logo lines as array for easier rendering
11
- const FULL_LOGO = [" ▐▌▄▄▄▄ █ ▄ ", " ▐▌ █ █▄▀ ", "▗▞▀▜▌▀▀▀█ █ ▀▄ ", "▝▚▄▟▌▄▄▄█ █ █ "];
12
- // Type colors map - defined outside component to avoid recreation
13
- const TYPE_COLORS = {
14
- NETWORK: LOG_COLORS.NETWORK,
15
- ERROR: LOG_COLORS.ERROR,
16
- WARNING: LOG_COLORS.WARNING,
17
- INFO: LOG_COLORS.INFO,
18
- LOG: LOG_COLORS.LOG,
19
- DEBUG: LOG_COLORS.DEBUG,
20
- SCREENSHOT: LOG_COLORS.SCREENSHOT,
21
- DOM: LOG_COLORS.DOM,
22
- CDP: LOG_COLORS.CDP,
23
- CHROME: LOG_COLORS.CHROME,
24
- CRASH: LOG_COLORS.CRASH,
25
- EXIT: LOG_COLORS.EXIT,
26
- REPLAY: LOG_COLORS.REPLAY,
27
- NAVIGATION: LOG_COLORS.NAVIGATION,
28
- INTERACTION: LOG_COLORS.INTERACTION,
29
- GET: LOG_COLORS.SERVER,
30
- POST: LOG_COLORS.SERVER,
31
- PUT: LOG_COLORS.SERVER,
32
- DELETE: LOG_COLORS.SERVER,
33
- PATCH: LOG_COLORS.SERVER,
34
- HEAD: LOG_COLORS.SERVER,
35
- OPTIONS: LOG_COLORS.SERVER
36
- };
37
- // Memoized log line component to prevent re-parsing on every render
38
- const LogLine = memo(({ log, isCompact, isVeryCompact }) => {
39
- // Parse log line to colorize different parts
40
- const parts = log.content.match(/^\[(.*?)\] \[(.*?)\] (?:\[(.*?)\] )?(.*)$/);
41
- if (parts) {
42
- let [, timestamp, source, type, message] = parts;
43
- // Extract HTTP method from SERVER logs as a secondary tag
44
- if (source === "SERVER" && !type && message) {
45
- const methodMatch = message.match(/^(GET|POST|PUT|DELETE|PATCH|HEAD|OPTIONS)\s/);
46
- if (methodMatch) {
47
- type = methodMatch[1];
48
- message = message.slice(type.length + 1); // Remove method from message
49
- }
50
- }
51
- // Replace warning emoji in ERROR/WARNING messages for consistent terminal rendering
52
- if (message && (type === "ERROR" || type === "WARNING")) {
53
- message = message.replace(/⚠/g, "[!]");
54
- }
55
- // In very compact mode, simplify the output
56
- if (isVeryCompact) {
57
- const shortSource = source === "BROWSER" ? "B" : "S";
58
- const shortType = type ? type.split(".")[0].charAt(0) : "";
59
- return (_jsxs(Text, { wrap: "truncate-end", children: [_jsxs(Text, { dimColor: true, children: ["[", shortSource, "]"] }), shortType && _jsxs(Text, { dimColor: true, children: ["[", shortType, "]"] }), _jsxs(Text, { children: [" ", message] })] }));
60
- }
61
- // Use shared color constants
62
- const sourceColor = source === "BROWSER" ? LOG_COLORS.BROWSER : LOG_COLORS.SERVER;
63
- // In compact mode, skip padding
64
- if (isCompact) {
65
- return (_jsxs(Text, { wrap: "truncate-end", children: [_jsxs(Text, { dimColor: true, children: ["[", timestamp, "]"] }), _jsx(Text, { children: " " }), _jsxs(Text, { color: sourceColor, bold: true, children: ["[", source.charAt(0), "]"] }), type && (_jsxs(_Fragment, { children: [_jsx(Text, { children: " " }), _jsxs(Text, { color: TYPE_COLORS[type] || "#A0A0A0", children: ["[", type, "]"] })] })), _jsxs(Text, { children: [" ", message] })] }));
66
- }
67
- // Normal mode with minimal padding
68
- return (_jsxs(Text, { wrap: "truncate-end", children: [_jsxs(Text, { dimColor: true, children: ["[", timestamp, "]"] }), _jsx(Text, { children: " " }), _jsxs(Text, { color: sourceColor, bold: true, children: ["[", source, "]"] }), type ? (_jsxs(_Fragment, { children: [_jsx(Text, { children: " " }), _jsxs(Text, { color: TYPE_COLORS[type] || "#A0A0A0", children: ["[", type, "]"] }), _jsx(Text, { children: " " })] })) : (_jsx(Text, { children: " " })), _jsx(Text, { children: message })] }));
69
- }
70
- // Fallback for unparsed lines
71
- return _jsx(Text, { wrap: "truncate-end", children: log.content });
72
- });
73
- const TUIApp = ({ appPort: initialAppPort, appUrl: initialAppUrl, logFile, commandName: _commandName, serversOnly, version, projectName, updateInfo: initialUpdateInfo, useHttps: initialUseHttps, onStatusUpdate, onAppPortUpdate, onAppUrlUpdate, onUpdateInfoUpdate, onUseHttpsUpdate }) => {
74
- const [logs, setLogs] = useState([]);
75
- const [scrollOffset, setScrollOffset] = useState(0);
76
- const [initStatus, setInitStatus] = useState(null);
77
- const [appPort, setAppPort] = useState(initialAppPort);
78
- const [appUrl, setAppUrl] = useState(initialAppUrl || null);
79
- const [useHttps, setUseHttps] = useState(initialUseHttps || false);
80
- const [updateInfo, setUpdateInfo] = useState(initialUpdateInfo || null);
81
- const [portConfirmed, setPortConfirmed] = useState(false);
82
- const logIdCounter = useRef(0);
83
- const [clearFromLogId, setClearFromLogId] = useState(0); // Track log ID to clear from
84
- const { columns: termWidth, rows: termHeight } = useWindowSize();
85
- const ctrlCMessageDefault = ""; // Removed - click to focus/resize works now
86
- const [ctrlCMessage, setCtrlCMessage] = useState(ctrlCMessageDefault);
87
- const maxScrollOffsetRef = useRef(0);
88
- // Determine if we should use compact mode
89
- const isCompact = termWidth < 80;
90
- const isVeryCompact = termWidth < 60 || termHeight < 15;
91
- // Provide status update function to parent
92
- useEffect(() => {
93
- onStatusUpdate((status) => {
94
- // Check if this is the "Press Ctrl+C again" warning
95
- if (status?.includes("Press Ctrl+C again")) {
96
- // Update the bottom Ctrl+C message with warning emoji
97
- setCtrlCMessage("⚠️ ^C again to quit");
98
- // Clear the init status since we don't want it in the header anymore
99
- setInitStatus(null);
100
- // Reset after 3 seconds
101
- setTimeout(() => {
102
- setCtrlCMessage(ctrlCMessageDefault);
103
- }, 3000);
104
- }
105
- else {
106
- setInitStatus(status);
107
- }
108
- });
109
- }, [onStatusUpdate]);
110
- // Provide app port update function to parent
111
- useEffect(() => {
112
- onAppPortUpdate((port) => {
113
- setAppPort(port);
114
- setPortConfirmed(true);
115
- });
116
- }, [onAppPortUpdate]);
117
- useEffect(() => {
118
- onAppUrlUpdate((url) => {
119
- setAppUrl(url);
120
- });
121
- }, [onAppUrlUpdate]);
122
- // Provide update info function to parent
123
- useEffect(() => {
124
- onUpdateInfoUpdate((info) => {
125
- setUpdateInfo(info);
126
- // Auto-hide "updated" messages after 10 seconds
127
- if (info?.type === "updated" && info.autoHide !== false) {
128
- setTimeout(() => {
129
- setUpdateInfo(null);
130
- }, 10000);
131
- }
132
- });
133
- }, [onUpdateInfoUpdate]);
134
- // Provide useHttps update function to parent
135
- useEffect(() => {
136
- onUseHttpsUpdate((https) => {
137
- setUseHttps(https);
138
- });
139
- }, [onUseHttpsUpdate]);
140
- // Calculate available lines for logs dynamically based on terminal height and mode
141
- const calculateMaxVisibleLogs = () => {
142
- if (isVeryCompact) {
143
- // In very compact mode, use most of the screen for logs, account for bottom status line
144
- return Math.max(3, termHeight - 7);
145
- }
146
- else if (isCompact) {
147
- // In compact mode, reduce header size, account for bottom status line
148
- return Math.max(3, termHeight - 9);
149
- }
150
- else {
151
- // Normal mode calculation - account for all UI elements
152
- const headerBorderLines = 2; // Top border (with title) + bottom border
153
- const headerContentLines = 4; // Logo is 4 lines tall
154
- const logBoxBorderLines = 2; // Top and bottom border of log box
155
- const logBoxHeaderLines = 1; // "Logs (X total)" text
156
- const logBoxFooterLines = 1; // Always reserve space for "(X lines below)" to keep layout stable
157
- const bottomStatusLine = 1; // Log path and quit message
158
- const totalReservedLines = headerBorderLines +
159
- headerContentLines +
160
- logBoxBorderLines +
161
- logBoxHeaderLines +
162
- logBoxFooterLines +
163
- bottomStatusLine -
164
- 1; // Reclaim the extra blank line
165
- return Math.max(3, termHeight - totalReservedLines);
166
- }
167
- };
168
- const maxLogs = 1000;
169
- const maxVisibleLogs = calculateMaxVisibleLogs();
170
- const maxScrollOffset = Math.max(0, maxLogs - maxVisibleLogs);
171
- maxScrollOffsetRef.current = maxScrollOffset;
172
- useEffect(() => {
173
- let logStream;
174
- let buffer = "";
175
- let pendingLogs = [];
176
- let flushTimeout = null;
177
- // Batch log updates to prevent excessive renders
178
- const flushPendingLogs = () => {
179
- if (pendingLogs.length === 0)
180
- return;
181
- const logsToAdd = pendingLogs;
182
- pendingLogs = [];
183
- flushTimeout = null;
184
- setLogs((prevLogs) => {
185
- const updated = [...prevLogs, ...logsToAdd];
186
- // Keep only last N logs to prevent memory issues
187
- if (updated.length > maxLogs) {
188
- return updated.slice(-maxLogs);
189
- }
190
- return updated;
191
- });
192
- // Auto-scroll to bottom only if user is already at the bottom
193
- // Otherwise, increment scroll offset by count of new logs
194
- setScrollOffset((currentOffset) => {
195
- return currentOffset === 0 ? 0 : Math.min(maxScrollOffsetRef.current, currentOffset + logsToAdd.length);
196
- });
197
- };
198
- const appendLog = (line) => {
199
- const newLog = {
200
- id: logIdCounter.current++,
201
- content: line
202
- };
203
- pendingLogs.push(newLog);
204
- // Debounce: flush after 50ms of no new logs
205
- // Terminal synchronized updates prevent flicker, so we can be more responsive
206
- if (flushTimeout) {
207
- clearTimeout(flushTimeout);
208
- }
209
- flushTimeout = setTimeout(flushPendingLogs, 50);
210
- };
211
- // Create a read stream for the log file
212
- logStream = createReadStream(logFile, {
213
- encoding: "utf8",
214
- start: 0
215
- });
216
- logStream.on("data", (chunk) => {
217
- buffer += chunk.toString();
218
- const lines = buffer.split("\n");
219
- // Keep the last incomplete line in buffer
220
- buffer = lines.pop() || "";
221
- // Add complete lines to logs
222
- for (const line of lines) {
223
- if (line.trim()) {
224
- appendLog(line);
225
- }
226
- }
227
- });
228
- logStream.on("error", (error) => {
229
- appendLog(chalk.red(`Error reading log file: ${error.message}`));
230
- });
231
- // Watch for new content
232
- watchFile(logFile, { interval: 100 }, (curr, prev) => {
233
- if (curr.size > prev.size) {
234
- // File has grown, read new content
235
- const stream = createReadStream(logFile, {
236
- encoding: "utf8",
237
- start: prev.size
238
- });
239
- let watchBuffer = "";
240
- stream.on("data", (chunk) => {
241
- watchBuffer += chunk.toString();
242
- const lines = watchBuffer.split("\n");
243
- watchBuffer = lines.pop() || "";
244
- for (const line of lines) {
245
- if (line.trim()) {
246
- appendLog(line);
247
- }
248
- }
249
- });
250
- }
251
- });
252
- // Cleanup
253
- return () => {
254
- if (logStream) {
255
- logStream.destroy();
256
- }
257
- if (flushTimeout) {
258
- clearTimeout(flushTimeout);
259
- }
260
- unwatchFile(logFile);
261
- };
262
- }, [logFile]);
263
- // Handle keyboard input
264
- useInput((input, key) => {
265
- if (key.ctrl && input === "c") {
266
- // Send SIGINT to trigger main process shutdown handler
267
- process.kill(process.pid, "SIGINT");
268
- }
269
- else if (key.ctrl && input === "l") {
270
- // Ctrl-L: Clear logs box - set clear point to last log ID
271
- const lastLogId = logs.length > 0 ? logs[logs.length - 1].id : logIdCounter.current;
272
- setClearFromLogId(lastLogId);
273
- setScrollOffset(0); // Reset scroll to bottom
274
- }
275
- else if (key.upArrow) {
276
- const filteredCount = logs.filter((log) => log.id > clearFromLogId).length;
277
- setScrollOffset((prev) => Math.min(prev + 1, Math.max(0, filteredCount - maxVisibleLogs)));
278
- }
279
- else if (key.downArrow) {
280
- setScrollOffset((prev) => Math.max(0, prev - 1));
281
- }
282
- else if (key.pageUp) {
283
- const filteredCount = logs.filter((log) => log.id > clearFromLogId).length;
284
- setScrollOffset((prev) => Math.min(prev + maxVisibleLogs, Math.max(0, filteredCount - maxVisibleLogs)));
285
- }
286
- else if (key.pageDown) {
287
- setScrollOffset((prev) => Math.max(0, prev - maxVisibleLogs));
288
- }
289
- else if (input === "G" && key.shift) {
290
- // Shift+G to go to end
291
- setScrollOffset(0);
292
- }
293
- else if (input === "g" && !key.shift) {
294
- // g to go to beginning
295
- const filteredCount = logs.filter((log) => log.id > clearFromLogId).length;
296
- setScrollOffset(Math.max(0, filteredCount - maxVisibleLogs));
297
- }
298
- });
299
- // Calculate visible logs - filter to only show logs after the clear point
300
- const filteredLogs = logs.filter((log) => log.id > clearFromLogId);
301
- const visibleLogs = filteredLogs.slice(Math.max(0, filteredLogs.length - maxVisibleLogs - scrollOffset), filteredLogs.length - scrollOffset);
302
- // Get clean project name (strip hash suffix like "-935beb")
303
- const cleanProjectName = projectName ? projectName.replace(/-[a-f0-9]{6}$/, "") : "";
304
- const displayedAppUrl = appUrl || `${useHttps ? "https" : "http"}://localhost:${appPort}`;
305
- // Render compact header for small terminals
306
- const renderCompactHeader = () => (_jsx(Box, { borderStyle: "single", borderColor: "#A18CE5", paddingX: 1, children: _jsxs(Box, { flexDirection: "column", width: "100%", children: [_jsxs(Box, { children: [_jsx(Text, { color: "#A18CE5", bold: true, children: COMPACT_LOGO }), _jsxs(Text, { dimColor: true, children: [" v", version] })] }), !isVeryCompact && (_jsxs(Box, { flexDirection: "column", children: [_jsxs(Text, { dimColor: true, children: ["App: ", displayedAppUrl] }), _jsxs(Text, { dimColor: true, children: ["\uD83D\uDCCB Logs: ", logFile] })] }))] }) }));
307
- // Render normal header
308
- const renderNormalHeader = () => {
309
- // Create custom top border with title embedded (like Claude Code)
310
- // Note: commandName omitted since ASCII art already shows "d3k"
311
- const title = ` v${version} ${initStatus ? `- ${initStatus} ` : ""}`;
312
- const borderChar = "─";
313
- const leftPadding = 2;
314
- // Account for border characters and padding
315
- const availableWidth = termWidth - 2; // -2 for corner characters
316
- const titleLength = title.length;
317
- const rightBorderLength = Math.max(0, availableWidth - titleLength - leftPadding);
318
- const topBorderLine = `╭${borderChar.repeat(leftPadding)}${title}${borderChar.repeat(rightBorderLength)}╮`;
319
- return (_jsxs(Box, { flexDirection: "column", children: [_jsx(Text, { color: "#A18CE5", children: topBorderLine }), _jsx(Box, { borderStyle: "round", borderColor: "#A18CE5", borderTop: false, paddingX: 1, children: _jsxs(Box, { flexDirection: "row", gap: 1, children: [_jsx(Box, { flexDirection: "column", alignItems: "flex-start", children: FULL_LOGO.map((line) => (_jsx(Text, { color: "#A18CE5", bold: true, children: line }, line))) }), _jsxs(Box, { flexDirection: "column", flexGrow: 1, children: [_jsxs(Box, { children: [_jsxs(Text, { color: "cyan", children: ["\uD83C\uDF10 App: ", displayedAppUrl, " "] }), !portConfirmed && _jsx(Spinner, { type: "dots" })] }), _jsxs(Text, { color: "cyan", children: ["\uD83D\uDCCB Logs: ", logFile] }), serversOnly && _jsx(Text, { color: "cyan", children: "\uD83D\uDDA5\uFE0F Servers-only mode - browser monitoring disabled" })] })] }) })] }));
320
- };
321
- // Calculate the height for the logs box to ensure stable layout from first render
322
- // This prevents the layout from shifting as logs fill in
323
- const logsBoxHeight = maxVisibleLogs + 3; // +3 for header line, borders
324
- return (_jsxs(Box, { flexDirection: "column", height: termHeight, children: [isCompact ? renderCompactHeader() : renderNormalHeader(), _jsxs(Box, { flexDirection: "column", borderStyle: "single", borderColor: "gray", paddingX: 1, height: logsBoxHeight, children: [!isVeryCompact && (_jsxs(Text, { color: "gray", dimColor: true, children: ["Logs (", filteredLogs.length, " total", scrollOffset > 0 && `, scrolled up ${scrollOffset} lines`, ")"] })), _jsx(Box, { flexDirection: "column", children: visibleLogs.length === 0 ? (_jsx(Text, { dimColor: true, children: "Waiting for logs..." })) : (visibleLogs.map((log) => (_jsx(LogLine, { log: log, isCompact: isCompact, isVeryCompact: isVeryCompact }, log.id)))) }), !isVeryCompact && logs.length > maxVisibleLogs && scrollOffset > 0 && (_jsxs(Text, { dimColor: true, children: ["(", scrollOffset, " lines below)"] }))] }), _jsxs(Box, { paddingX: 1, justifyContent: isCompact ? "flex-end" : "space-between", children: [!isCompact && (_jsx(Box, { children: _jsx(Text, { color: "#A18CE5", children: logFile.replace(process.env.HOME || "", "~") }) })), _jsxs(Box, { gap: 2, children: [isCompact && _jsx(Text, { color: "#A18CE5", children: cleanProjectName || "d3k" }), updateInfo?.type === "available" && (_jsxs(Text, { color: "yellow", children: ["\u2191 v", updateInfo.latestVersion, " available (d3k upgrade)"] })), updateInfo?.type === "updated" && _jsxs(Text, { color: "green", children: ["\u2713 Updated to v", updateInfo.newVersion] }), ctrlCMessage && _jsx(Text, { color: "#A18CE5", children: ctrlCMessage })] })] })] }));
325
- };
326
- export async function runTUI(options) {
327
- return new Promise((resolve, reject) => {
328
- try {
329
- let statusUpdater = null;
330
- let appPortUpdater = null;
331
- let appUrlUpdater = null;
332
- let updateInfoUpdater = null;
333
- let httpsUpdater = null;
334
- // Wrap stdout.write to add synchronized update escape sequences
335
- // This tells the terminal to buffer all output until the end marker
336
- // Supported by iTerm2, Kitty, WezTerm, and other modern terminals
337
- const originalWrite = process.stdout.write.bind(process.stdout);
338
- const syncStart = "\x1b[?2026h"; // Begin synchronized update (DECSM 2026)
339
- const syncEnd = "\x1b[?2026l"; // End synchronized update (DECRM 2026)
340
- process.stdout.write = ((chunk, encodingOrCb, cb) => {
341
- if (typeof chunk === "string" && chunk.length > 0) {
342
- // Wrap output in synchronized update markers to prevent partial renders
343
- const wrapped = syncStart + chunk + syncEnd;
344
- if (typeof encodingOrCb === "function") {
345
- return originalWrite(wrapped, encodingOrCb);
346
- }
347
- return originalWrite(wrapped, encodingOrCb, cb);
348
- }
349
- if (typeof encodingOrCb === "function") {
350
- return originalWrite(chunk, encodingOrCb);
351
- }
352
- return originalWrite(chunk, encodingOrCb, cb);
353
- });
354
- const app = render(_jsx(TUIApp, { ...options, onStatusUpdate: (fn) => {
355
- statusUpdater = fn;
356
- }, onAppPortUpdate: (fn) => {
357
- appPortUpdater = fn;
358
- }, onAppUrlUpdate: (fn) => {
359
- appUrlUpdater = fn;
360
- }, onUpdateInfoUpdate: (fn) => {
361
- updateInfoUpdater = fn;
362
- }, onUseHttpsUpdate: (fn) => {
363
- httpsUpdater = fn;
364
- } }), { exitOnCtrlC: false });
365
- // Give React one tick to set up the updaters
366
- setImmediate(() => {
367
- resolve({
368
- app,
369
- updateStatus: (status) => {
370
- if (statusUpdater) {
371
- statusUpdater(status);
372
- }
373
- },
374
- updateAppPort: (port) => {
375
- if (appPortUpdater) {
376
- appPortUpdater(port);
377
- }
378
- },
379
- updateAppUrl: (url) => {
380
- if (appUrlUpdater) {
381
- appUrlUpdater(url);
382
- }
383
- },
384
- updateUpdateInfo: (info) => {
385
- if (updateInfoUpdater) {
386
- updateInfoUpdater(info);
387
- }
388
- },
389
- updateUseHttps: (useHttps) => {
390
- if (httpsUpdater) {
391
- httpsUpdater(useHttps);
392
- }
393
- }
394
- });
395
- });
396
- }
397
- catch (error) {
398
- console.error("Error in runTUI render:", error);
399
- reject(error);
400
- }
401
- });
402
- }
403
- //# sourceMappingURL=tui-interface-impl.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tui-interface-impl.js","sourceRoot":"","sources":["../src/tui-interface-impl.tsx"],"names":[],"mappings":"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"}
@@ -1,33 +0,0 @@
1
- import { RGBA, StyledText } from "@opentui/core";
2
- export type UpdateInfo = {
3
- type: "available";
4
- latestVersion: string;
5
- } | {
6
- type: "updated";
7
- newVersion: string;
8
- autoHide?: boolean;
9
- } | null;
10
- export interface TUIOptions {
11
- appPort: string;
12
- appUrl?: string | null;
13
- logFile: string;
14
- commandName: string;
15
- serversOnly?: boolean;
16
- version: string;
17
- projectName?: string;
18
- updateInfo?: UpdateInfo;
19
- useHttps?: boolean;
20
- onRequestShutdown?: () => void;
21
- }
22
- export declare function applySelectionToStyledText(content: StyledText, bgColor: RGBA, fgColor?: RGBA): StyledText;
23
- export declare function runTUI(options: TUIOptions): Promise<{
24
- app: {
25
- unmount: () => void;
26
- };
27
- updateStatus: (status: string | null) => void;
28
- updateAppPort: (port: string) => void;
29
- updateAppUrl: (url: string | null) => void;
30
- updateUpdateInfo: (info: UpdateInfo) => void;
31
- updateUseHttps: (useHttps: boolean) => void;
32
- }>;
33
- //# sourceMappingURL=tui-interface-opentui.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tui-interface-opentui.d.ts","sourceRoot":"","sources":["../src/tui-interface-opentui.ts"],"names":[],"mappings":"AAAA,OAAO,EAWL,IAAI,EAGJ,UAAU,EAIX,MAAM,eAAe,CAAA;AAQtB,MAAM,MAAM,UAAU,GAClB;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,aAAa,EAAE,MAAM,CAAA;CAAE,GAC5C;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE,GAC3D,IAAI,CAAA;AAER,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACtB,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;IACpB,UAAU,CAAC,EAAE,UAAU,CAAA;IACvB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,iBAAiB,CAAC,EAAE,MAAM,IAAI,CAAA;CAC/B;AA0ID,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,EAAE,IAAI,GAAG,UAAU,CAQzG;AAknCD,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;IACrC,YAAY,EAAE,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAA;IAC1C,gBAAgB,EAAE,CAAC,IAAI,EAAE,UAAU,KAAK,IAAI,CAAA;IAC5C,cAAc,EAAE,CAAC,QAAQ,EAAE,OAAO,KAAK,IAAI,CAAA;CAC5C,CAAC,CAGD"}