dev3000 0.0.153 → 0.0.154

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 (166) hide show
  1. package/README.md +121 -103
  2. package/dist/cdp-monitor.d.ts.map +1 -1
  3. package/dist/cdp-monitor.js +2 -3
  4. package/dist/cdp-monitor.js.map +1 -1
  5. package/dist/cli.js +301 -75
  6. package/dist/cli.js.map +1 -1
  7. package/dist/commands/cloud-check-pr.d.ts +1 -0
  8. package/dist/commands/cloud-check-pr.d.ts.map +1 -1
  9. package/dist/commands/cloud-check-pr.js +18 -6
  10. package/dist/commands/cloud-check-pr.js.map +1 -1
  11. package/dist/commands/crawl.d.ts +12 -0
  12. package/dist/commands/crawl.d.ts.map +1 -0
  13. package/dist/commands/crawl.js +140 -0
  14. package/dist/commands/crawl.js.map +1 -0
  15. package/dist/commands/errors.d.ts +14 -0
  16. package/dist/commands/errors.d.ts.map +1 -0
  17. package/dist/commands/errors.js +295 -0
  18. package/dist/commands/errors.js.map +1 -0
  19. package/dist/commands/find-component.d.ts +8 -0
  20. package/dist/commands/find-component.d.ts.map +1 -0
  21. package/dist/commands/find-component.js +182 -0
  22. package/dist/commands/find-component.js.map +1 -0
  23. package/dist/commands/fix.d.ts +13 -0
  24. package/dist/commands/fix.d.ts.map +1 -0
  25. package/dist/commands/fix.js +288 -0
  26. package/dist/commands/fix.js.map +1 -0
  27. package/dist/commands/logs.d.ts +13 -0
  28. package/dist/commands/logs.d.ts.map +1 -0
  29. package/dist/commands/logs.js +195 -0
  30. package/dist/commands/logs.js.map +1 -0
  31. package/dist/commands/restart.d.ts +8 -0
  32. package/dist/commands/restart.d.ts.map +1 -0
  33. package/dist/commands/restart.js +92 -0
  34. package/dist/commands/restart.js.map +1 -0
  35. package/dist/components/PackageSelector.d.ts +12 -0
  36. package/dist/components/PackageSelector.d.ts.map +1 -0
  37. package/dist/components/PackageSelector.js +74 -0
  38. package/dist/components/PackageSelector.js.map +1 -0
  39. package/dist/dev-environment.d.ts +0 -7
  40. package/dist/dev-environment.d.ts.map +1 -1
  41. package/dist/dev-environment.js +108 -674
  42. package/dist/dev-environment.js.map +1 -1
  43. package/dist/screencast-manager.d.ts.map +1 -1
  44. package/dist/screencast-manager.js +7 -8
  45. package/dist/screencast-manager.js.map +1 -1
  46. package/dist/skills/d3k/SKILL.md +38 -27
  47. package/dist/skills/index.d.ts +10 -14
  48. package/dist/skills/index.d.ts.map +1 -1
  49. package/dist/skills/index.js +47 -77
  50. package/dist/skills/index.js.map +1 -1
  51. package/dist/skills/index.test.ts +13 -55
  52. package/dist/skills/index.ts +48 -81
  53. package/dist/src/tui-interface-impl.tsx +6 -15
  54. package/dist/tui-interface-impl.d.ts.map +1 -1
  55. package/dist/tui-interface-impl.js +4 -4
  56. package/dist/tui-interface-impl.js.map +1 -1
  57. package/dist/tui-interface-opentui.d.ts.map +1 -1
  58. package/dist/tui-interface-opentui.js +211 -80
  59. package/dist/tui-interface-opentui.js.map +1 -1
  60. package/dist/utils/agent-browser.d.ts +2 -0
  61. package/dist/utils/agent-browser.d.ts.map +1 -1
  62. package/dist/utils/agent-browser.js +46 -8
  63. package/dist/utils/agent-browser.js.map +1 -1
  64. package/dist/utils/agent-selection.d.ts.map +1 -1
  65. package/dist/utils/agent-selection.js +9 -2
  66. package/dist/utils/agent-selection.js.map +1 -1
  67. package/dist/utils/skill-installer.d.ts +55 -29
  68. package/dist/utils/skill-installer.d.ts.map +1 -1
  69. package/dist/utils/skill-installer.js +118 -229
  70. package/dist/utils/skill-installer.js.map +1 -1
  71. package/dist/utils/tmux-helpers.d.ts +1 -2
  72. package/dist/utils/tmux-helpers.d.ts.map +1 -1
  73. package/dist/utils/tmux-helpers.js +17 -18
  74. package/dist/utils/tmux-helpers.js.map +1 -1
  75. package/dist/utils/version-check.d.ts +2 -1
  76. package/dist/utils/version-check.d.ts.map +1 -1
  77. package/dist/utils/version-check.js +9 -0
  78. package/dist/utils/version-check.js.map +1 -1
  79. package/mcp-server/.next/BUILD_ID +1 -1
  80. package/mcp-server/.next/build-manifest.json +2 -2
  81. package/mcp-server/.next/fallback-build-manifest.json +2 -2
  82. package/mcp-server/.next/prerender-manifest.json +3 -3
  83. package/mcp-server/.next/server/app/_global-error/page.js +1 -1
  84. package/mcp-server/.next/server/app/_global-error/page.js.nft.json +1 -1
  85. package/mcp-server/.next/server/app/_global-error.html +2 -2
  86. package/mcp-server/.next/server/app/_global-error.rsc +1 -1
  87. package/mcp-server/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  88. package/mcp-server/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  89. package/mcp-server/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  90. package/mcp-server/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  91. package/mcp-server/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  92. package/mcp-server/.next/server/app/_not-found/page.js +1 -1
  93. package/mcp-server/.next/server/app/_not-found/page.js.nft.json +1 -1
  94. package/mcp-server/.next/server/app/_not-found.html +1 -1
  95. package/mcp-server/.next/server/app/_not-found.rsc +1 -1
  96. package/mcp-server/.next/server/app/_not-found.segments/_full.segment.rsc +1 -1
  97. package/mcp-server/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  98. package/mcp-server/.next/server/app/_not-found.segments/_index.segment.rsc +1 -1
  99. package/mcp-server/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  100. package/mcp-server/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  101. package/mcp-server/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  102. package/mcp-server/.next/server/app/api/screenshots/capture/route.js +2 -2
  103. package/mcp-server/.next/server/app/api/screenshots/capture/route.js.nft.json +1 -1
  104. package/mcp-server/.next/server/app/index.html +1 -1
  105. package/mcp-server/.next/server/app/index.rsc +2 -2
  106. package/mcp-server/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
  107. package/mcp-server/.next/server/app/index.segments/_full.segment.rsc +2 -2
  108. package/mcp-server/.next/server/app/index.segments/_head.segment.rsc +1 -1
  109. package/mcp-server/.next/server/app/index.segments/_index.segment.rsc +1 -1
  110. package/mcp-server/.next/server/app/index.segments/_tree.segment.rsc +1 -1
  111. package/mcp-server/.next/server/app/logs/page.js +1 -1
  112. package/mcp-server/.next/server/app/logs/page.js.nft.json +1 -1
  113. package/mcp-server/.next/server/app/mcp/route.js +4 -4
  114. package/mcp-server/.next/server/app/mcp/route.js.nft.json +1 -1
  115. package/mcp-server/.next/server/app/page.js +1 -1
  116. package/mcp-server/.next/server/app/page.js.nft.json +1 -1
  117. package/mcp-server/.next/server/app/page_client-reference-manifest.js +1 -1
  118. package/mcp-server/.next/server/app/video/[session]/page.js +1 -1
  119. package/mcp-server/.next/server/app/video/[session]/page.js.nft.json +1 -1
  120. package/mcp-server/.next/server/chunks/[root-of-the-server]__2f95edf0._.js +3 -3
  121. package/mcp-server/.next/server/chunks/[root-of-the-server]__2f95edf0._.js.map +1 -1
  122. package/mcp-server/.next/server/chunks/[root-of-the-server]__69e6dfb7._.js +3 -0
  123. package/mcp-server/.next/server/chunks/{[root-of-the-server]__444592aa._.js.map → [root-of-the-server]__69e6dfb7._.js.map} +1 -1
  124. package/mcp-server/.next/server/chunks/[root-of-the-server]__6baff21e._.js +4 -0
  125. package/mcp-server/.next/server/chunks/{[root-of-the-server]__130a5f58._.js.map → [root-of-the-server]__6baff21e._.js.map} +1 -1
  126. package/mcp-server/.next/server/chunks/[root-of-the-server]__6f790e1f._.js +1 -1
  127. package/mcp-server/.next/server/chunks/[root-of-the-server]__6f790e1f._.js.map +1 -1
  128. package/mcp-server/.next/server/chunks/[root-of-the-server]__c8cf5b23._.js +3 -0
  129. package/mcp-server/.next/server/chunks/[root-of-the-server]__e6a83e60._.js +4 -0
  130. package/mcp-server/.next/server/chunks/{[root-of-the-server]__b71c83ed._.js.map → [root-of-the-server]__e6a83e60._.js.map} +1 -1
  131. package/mcp-server/.next/server/chunks/mcp-server_app_mcp_tools_ts_faf6d7df._.js +32 -66
  132. package/mcp-server/.next/server/chunks/mcp-server_app_mcp_tools_ts_faf6d7df._.js.map +1 -1
  133. package/mcp-server/.next/server/chunks/src_utils_agent-browser_ts_cc00e0d8._.js +1 -1
  134. package/mcp-server/.next/server/chunks/src_utils_agent-browser_ts_cc00e0d8._.js.map +1 -1
  135. package/mcp-server/.next/server/chunks/src_utils_project-name_ts_1fab1dd5._.js +3 -0
  136. package/mcp-server/.next/server/chunks/src_utils_project-name_ts_1fab1dd5._.js.map +1 -0
  137. package/mcp-server/.next/server/chunks/ssr/{[root-of-the-server]__f66148e5._.js → [root-of-the-server]__b17d4048._.js} +2 -2
  138. package/mcp-server/.next/server/chunks/ssr/{[root-of-the-server]__50eb2eba._.js → [root-of-the-server]__dcf84f77._.js} +2 -2
  139. package/mcp-server/.next/server/chunks/ssr/mcp-server_app_page_tsx_9fc46577._.js +1 -1
  140. package/mcp-server/.next/server/chunks/ssr/mcp-server_app_page_tsx_9fc46577._.js.map +1 -1
  141. package/mcp-server/.next/server/pages/404.html +1 -1
  142. package/mcp-server/.next/server/pages/500.html +2 -2
  143. package/mcp-server/.next/server/server-reference-manifest.js +1 -1
  144. package/mcp-server/.next/server/server-reference-manifest.json +1 -1
  145. package/mcp-server/.next/static/chunks/{2422ea9ed874427b.js → 3f3f8e7d16ba3bf4.js} +1 -1
  146. package/mcp-server/app/api/tools/route.ts +5 -4
  147. package/mcp-server/app/mcp/route.ts +8 -63
  148. package/mcp-server/app/mcp/tools.ts +71 -445
  149. package/mcp-server/app/page.tsx +1 -1
  150. package/mcp-server/package.json +1 -0
  151. package/package.json +6 -6
  152. package/src/tui-interface-impl.tsx +6 -15
  153. package/dist/components/SkillSelector.d.ts +0 -10
  154. package/dist/components/SkillSelector.d.ts.map +0 -1
  155. package/dist/components/SkillSelector.js +0 -87
  156. package/dist/components/SkillSelector.js.map +0 -1
  157. package/mcp-server/.next/server/chunks/[root-of-the-server]__130a5f58._.js +0 -4
  158. package/mcp-server/.next/server/chunks/[root-of-the-server]__444592aa._.js +0 -3
  159. package/mcp-server/.next/server/chunks/[root-of-the-server]__8f84b4cc._.js +0 -3
  160. package/mcp-server/.next/server/chunks/[root-of-the-server]__b71c83ed._.js +0 -4
  161. /package/mcp-server/.next/server/chunks/{[root-of-the-server]__8f84b4cc._.js.map → [root-of-the-server]__c8cf5b23._.js.map} +0 -0
  162. /package/mcp-server/.next/server/chunks/ssr/{[root-of-the-server]__f66148e5._.js.map → [root-of-the-server]__b17d4048._.js.map} +0 -0
  163. /package/mcp-server/.next/server/chunks/ssr/{[root-of-the-server]__50eb2eba._.js.map → [root-of-the-server]__dcf84f77._.js.map} +0 -0
  164. /package/mcp-server/.next/static/{Mseg7iY2pocGklcPCObqM → MfA6U1EFS31sVuHA4xDF_}/_buildManifest.js +0 -0
  165. /package/mcp-server/.next/static/{Mseg7iY2pocGklcPCObqM → MfA6U1EFS31sVuHA4xDF_}/_clientMiddlewareManifest.json +0 -0
  166. /package/mcp-server/.next/static/{Mseg7iY2pocGklcPCObqM → MfA6U1EFS31sVuHA4xDF_}/_ssgManifest.js +0 -0
@@ -0,0 +1,288 @@
1
+ /**
2
+ * d3k fix - Diagnose application errors from logs
3
+ *
4
+ * Analyzes d3k session logs and categorizes errors by type and severity.
5
+ * Returns a prioritized list of issues that need to be fixed.
6
+ */
7
+ import { existsSync, readdirSync, readFileSync, statSync } from "node:fs";
8
+ import { homedir } from "node:os";
9
+ import { join } from "node:path";
10
+ import chalk from "chalk";
11
+ function findActiveSessions() {
12
+ const sessionDir = join(homedir(), ".d3k");
13
+ if (!existsSync(sessionDir)) {
14
+ return [];
15
+ }
16
+ try {
17
+ const entries = readdirSync(sessionDir, { withFileTypes: true });
18
+ const sessionFiles = [];
19
+ for (const entry of entries) {
20
+ if (entry.isDirectory()) {
21
+ const sessionFile = join(sessionDir, entry.name, "session.json");
22
+ if (existsSync(sessionFile)) {
23
+ sessionFiles.push(sessionFile);
24
+ }
25
+ }
26
+ }
27
+ const sessions = sessionFiles
28
+ .map((filePath) => {
29
+ try {
30
+ const content = JSON.parse(readFileSync(filePath, "utf-8"));
31
+ const stat = statSync(filePath);
32
+ return {
33
+ ...content,
34
+ sessionFile: filePath,
35
+ lastModified: stat.mtime
36
+ };
37
+ }
38
+ catch {
39
+ return null;
40
+ }
41
+ })
42
+ .filter((session) => {
43
+ if (!session || !session.pid)
44
+ return false;
45
+ try {
46
+ process.kill(session.pid, 0);
47
+ return true;
48
+ }
49
+ catch {
50
+ return false;
51
+ }
52
+ })
53
+ .sort((a, b) => new Date(b.startTime).getTime() - new Date(a.startTime).getTime());
54
+ return sessions;
55
+ }
56
+ catch {
57
+ return [];
58
+ }
59
+ }
60
+ function getLogPath(projectName) {
61
+ if (projectName) {
62
+ const sessions = findActiveSessions();
63
+ const session = sessions.find((s) => s.projectName === projectName);
64
+ if (session) {
65
+ return session.logFilePath;
66
+ }
67
+ }
68
+ const envPath = process.env.LOG_FILE_PATH;
69
+ if (envPath) {
70
+ return envPath;
71
+ }
72
+ return null;
73
+ }
74
+ function findInteractionsBeforeError(errorLine, allLines) {
75
+ const errorIndex = allLines.indexOf(errorLine);
76
+ if (errorIndex === -1)
77
+ return [];
78
+ const interactions = [];
79
+ for (let i = errorIndex - 1; i >= Math.max(0, errorIndex - 20) && interactions.length < 5; i--) {
80
+ if (allLines[i].includes("[INTERACTION]") ||
81
+ allLines[i].includes("[NAVIGATION]") ||
82
+ allLines[i].includes("[PAGE]")) {
83
+ interactions.unshift(allLines[i]);
84
+ }
85
+ }
86
+ return interactions;
87
+ }
88
+ export async function fixMyApp(options) {
89
+ const focusArea = options.focus || "all";
90
+ const timeRangeMinutes = parseInt(options.time || "10", 10);
91
+ const outputJson = options.json || false;
92
+ const sessions = findActiveSessions();
93
+ if (sessions.length === 0) {
94
+ if (outputJson) {
95
+ console.log(JSON.stringify({ error: "No active d3k sessions found" }));
96
+ }
97
+ else {
98
+ console.log(chalk.red("❌ No active d3k sessions found."));
99
+ console.log(chalk.gray("Make sure d3k is running first."));
100
+ }
101
+ process.exit(1);
102
+ }
103
+ // Auto-select if only one session
104
+ const session = sessions[0];
105
+ let logPath = session.logFilePath;
106
+ if (!logPath) {
107
+ logPath = getLogPath(session.projectName);
108
+ }
109
+ if (!logPath) {
110
+ if (outputJson) {
111
+ console.log(JSON.stringify({ error: "Could not find log file" }));
112
+ }
113
+ else {
114
+ console.log(chalk.red("❌ Could not find log file for session."));
115
+ }
116
+ process.exit(1);
117
+ }
118
+ if (!existsSync(logPath)) {
119
+ if (outputJson) {
120
+ console.log(JSON.stringify({ status: "waiting", message: "Log file doesn't exist yet" }));
121
+ }
122
+ else {
123
+ console.log(chalk.yellow("📋 Log file doesn't exist yet."));
124
+ console.log(chalk.gray("The dev server may still be starting up."));
125
+ }
126
+ return;
127
+ }
128
+ const content = readFileSync(logPath, "utf-8");
129
+ const logLines = content.trim().split("\n").filter(Boolean);
130
+ if (logLines.length === 0) {
131
+ if (outputJson) {
132
+ console.log(JSON.stringify({ status: "empty", message: "Log file is empty" }));
133
+ }
134
+ else {
135
+ console.log(chalk.yellow("📋 Log file is empty."));
136
+ console.log(chalk.gray("Make sure your app is running and generating logs."));
137
+ }
138
+ return;
139
+ }
140
+ if (!outputJson) {
141
+ console.log(chalk.cyan(`🔍 FIX MY APP ANALYSIS`));
142
+ console.log(chalk.gray(`📁 Log file: ${logPath}`));
143
+ console.log(chalk.gray(`📊 Total log entries: ${logLines.length}`));
144
+ console.log();
145
+ }
146
+ // Time-based filtering
147
+ const now = new Date();
148
+ const cutoffTime = new Date(now.getTime() - timeRangeMinutes * 60 * 1000);
149
+ // Error patterns
150
+ const errorPatterns = [
151
+ /ERROR/i,
152
+ /FAIL/i,
153
+ /Exception/i,
154
+ /CRITICAL/i,
155
+ /FATAL/i,
156
+ /crashed/i,
157
+ /undefined/i,
158
+ /null reference/i,
159
+ /cannot read/i,
160
+ /cannot find/i,
161
+ /not found/i,
162
+ /timeout/i,
163
+ /refused/i,
164
+ /denied/i,
165
+ /unauthorized/i,
166
+ /404/,
167
+ /500/,
168
+ /503/,
169
+ /WARN/i,
170
+ /WARNING/i,
171
+ /deprecated/i,
172
+ /RUNTIME\.ERROR/,
173
+ /hydration.*mismatch/i,
174
+ /Uncaught/i,
175
+ /throwOnHydrationMismatch/i
176
+ ];
177
+ // Filter logs by time range
178
+ const timeFilteredLines = logLines.filter((line) => {
179
+ const isoMatch = line.match(/\[(\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.\d{3}Z)\]/);
180
+ if (isoMatch) {
181
+ const logTime = new Date(isoMatch[1]);
182
+ return logTime >= cutoffTime;
183
+ }
184
+ const timeMatch = line.match(/\[(\d{2}):(\d{2}):(\d{2})\.(\d{3})\]/);
185
+ if (timeMatch) {
186
+ const logTime = new Date(now.getFullYear(), now.getMonth(), now.getDate(), parseInt(timeMatch[1], 10), parseInt(timeMatch[2], 10), parseInt(timeMatch[3], 10), parseInt(timeMatch[4], 10));
187
+ if (logTime > now) {
188
+ logTime.setDate(logTime.getDate() - 1);
189
+ }
190
+ return logTime >= cutoffTime;
191
+ }
192
+ return true;
193
+ });
194
+ // Find all errors
195
+ const allErrors = timeFilteredLines.filter((line) => {
196
+ return errorPatterns.some((pattern) => pattern.test(line));
197
+ });
198
+ // Filter out framework noise
199
+ const frameworkNoisePatterns = [
200
+ /link rel=preload.*must have.*valid.*as/i,
201
+ /next\/font/i,
202
+ /automatically generated/i,
203
+ /\[NETWORK\].*\b(200|201|204|304)\b\s+(OK|Created|No Content|Not Modified)/i
204
+ ];
205
+ const actionableErrors = allErrors.filter((line) => {
206
+ return !frameworkNoisePatterns.some((pattern) => pattern.test(line));
207
+ });
208
+ // Categorize errors
209
+ const categorizedErrors = {
210
+ serverErrors: actionableErrors.filter((line) => line.includes("[SERVER]") && (line.includes("ERROR") || line.includes("Exception"))),
211
+ browserErrors: actionableErrors.filter((line) => line.includes("[BROWSER]") &&
212
+ (line.includes("ERROR") || line.includes("CONSOLE ERROR") || line.includes("RUNTIME.ERROR"))),
213
+ buildErrors: actionableErrors.filter((line) => line.includes("Failed to compile") || line.includes("Type error") || line.includes("Build failed")),
214
+ networkErrors: actionableErrors.filter((line) => {
215
+ if (/\b(200|201|204|304)\b/.test(line))
216
+ return false;
217
+ return line.includes("NETWORK") || line.includes("404") || line.includes("500") || line.includes("timeout");
218
+ }),
219
+ warnings: actionableErrors.filter((line) => /WARN|WARNING|deprecated/i.test(line) && !/ERROR|Exception|FAIL/i.test(line))
220
+ };
221
+ const totalErrors = actionableErrors.length;
222
+ const criticalErrors = totalErrors - categorizedErrors.warnings.length;
223
+ if (outputJson) {
224
+ console.log(JSON.stringify({
225
+ totalErrors,
226
+ criticalErrors,
227
+ warnings: categorizedErrors.warnings.length,
228
+ categorized: {
229
+ server: categorizedErrors.serverErrors.length,
230
+ browser: categorizedErrors.browserErrors.length,
231
+ build: categorizedErrors.buildErrors.length,
232
+ network: categorizedErrors.networkErrors.length
233
+ },
234
+ errors: {
235
+ server: categorizedErrors.serverErrors.slice(-5),
236
+ browser: categorizedErrors.browserErrors.slice(-5),
237
+ build: categorizedErrors.buildErrors.slice(-5),
238
+ network: categorizedErrors.networkErrors.slice(-5),
239
+ warnings: categorizedErrors.warnings.slice(-3)
240
+ }
241
+ }, null, 2));
242
+ return;
243
+ }
244
+ if (totalErrors === 0) {
245
+ console.log(chalk.green(`✅ No errors found in last ${timeRangeMinutes} minutes.`));
246
+ console.log(chalk.gray("Application appears healthy."));
247
+ return;
248
+ }
249
+ console.log(chalk.red(`❌ ${totalErrors} ISSUES DETECTED`));
250
+ console.log(chalk.gray(` (${criticalErrors} critical, ${categorizedErrors.warnings.length} warnings)`));
251
+ console.log();
252
+ const printErrors = (title, errors, color) => {
253
+ if (errors.length === 0)
254
+ return;
255
+ console.log(color(`${title}:`));
256
+ for (const error of errors.slice(-5)) {
257
+ const interactions = findInteractionsBeforeError(error, logLines);
258
+ if (interactions.length > 0) {
259
+ console.log(chalk.gray(" Preceding interactions:"));
260
+ for (const i of interactions) {
261
+ console.log(chalk.gray(` ${i}`));
262
+ }
263
+ }
264
+ console.log(` ${error}`);
265
+ console.log();
266
+ }
267
+ };
268
+ if (focusArea === "all" || focusArea === "build") {
269
+ printErrors("BUILD/COMPILATION ERRORS", categorizedErrors.buildErrors, chalk.red);
270
+ }
271
+ if (focusArea === "all" || focusArea === "runtime") {
272
+ printErrors("SERVER ERRORS", categorizedErrors.serverErrors, chalk.red);
273
+ printErrors("BROWSER/CONSOLE ERRORS", categorizedErrors.browserErrors, chalk.yellow);
274
+ }
275
+ if (focusArea === "all" || focusArea === "network") {
276
+ printErrors("NETWORK/API ERRORS", categorizedErrors.networkErrors, chalk.magenta);
277
+ }
278
+ if (focusArea === "all" && categorizedErrors.warnings.length > 0) {
279
+ console.log(chalk.yellow(`WARNINGS (${categorizedErrors.warnings.length} found, showing recent):`));
280
+ for (const w of categorizedErrors.warnings.slice(-3)) {
281
+ console.log(` ${w}`);
282
+ }
283
+ console.log();
284
+ }
285
+ console.log(chalk.gray("---"));
286
+ console.log(chalk.cyan("Fix the highest-priority error, then run `d3k fix` again to verify."));
287
+ }
288
+ //# sourceMappingURL=fix.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fix.js","sourceRoot":"","sources":["../../src/commands/fix.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * d3k logs - View recent logs from the d3k unified log
3
+ *
4
+ * Shows logs from both browser and server, with optional filtering.
5
+ */
6
+ export interface LogsOptions {
7
+ count?: string;
8
+ type?: string;
9
+ follow?: boolean;
10
+ json?: boolean;
11
+ }
12
+ export declare function showLogs(options: LogsOptions): Promise<void>;
13
+ //# sourceMappingURL=logs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logs.d.ts","sourceRoot":"","sources":["../../src/commands/logs.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAOH,MAAM,WAAW,WAAW;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,IAAI,CAAC,EAAE,OAAO,CAAA;CACf;AA0ID,wBAAsB,QAAQ,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAyElE"}
@@ -0,0 +1,195 @@
1
+ /**
2
+ * d3k logs - View recent logs from the d3k unified log
3
+ *
4
+ * Shows logs from both browser and server, with optional filtering.
5
+ */
6
+ import { existsSync, readdirSync, readFileSync, statSync } from "node:fs";
7
+ import { homedir } from "node:os";
8
+ import { join } from "node:path";
9
+ import chalk from "chalk";
10
+ function findActiveSessions() {
11
+ const sessionDir = join(homedir(), ".d3k");
12
+ if (!existsSync(sessionDir)) {
13
+ return [];
14
+ }
15
+ try {
16
+ const entries = readdirSync(sessionDir, { withFileTypes: true });
17
+ const sessionFiles = [];
18
+ for (const entry of entries) {
19
+ if (entry.isDirectory()) {
20
+ const sessionFile = join(sessionDir, entry.name, "session.json");
21
+ if (existsSync(sessionFile)) {
22
+ sessionFiles.push(sessionFile);
23
+ }
24
+ }
25
+ }
26
+ const sessions = sessionFiles
27
+ .map((filePath) => {
28
+ try {
29
+ const content = JSON.parse(readFileSync(filePath, "utf-8"));
30
+ const stat = statSync(filePath);
31
+ return {
32
+ ...content,
33
+ sessionFile: filePath,
34
+ lastModified: stat.mtime
35
+ };
36
+ }
37
+ catch {
38
+ return null;
39
+ }
40
+ })
41
+ .filter((session) => {
42
+ if (!session || !session.pid)
43
+ return false;
44
+ try {
45
+ process.kill(session.pid, 0);
46
+ return true;
47
+ }
48
+ catch {
49
+ return false;
50
+ }
51
+ })
52
+ .sort((a, b) => new Date(b.startTime).getTime() - new Date(a.startTime).getTime());
53
+ return sessions;
54
+ }
55
+ catch {
56
+ return [];
57
+ }
58
+ }
59
+ function getLogPath() {
60
+ // First check for active sessions
61
+ const sessions = findActiveSessions();
62
+ if (sessions.length > 0) {
63
+ return sessions[0].logFilePath;
64
+ }
65
+ // Fall back to environment variable
66
+ const envPath = process.env.LOG_FILE_PATH;
67
+ if (envPath) {
68
+ return envPath;
69
+ }
70
+ // Try to find the most recent log file
71
+ const sessionDir = join(homedir(), ".d3k");
72
+ if (!existsSync(sessionDir)) {
73
+ return null;
74
+ }
75
+ try {
76
+ const entries = readdirSync(sessionDir, { withFileTypes: true });
77
+ let mostRecentLog = null;
78
+ for (const entry of entries) {
79
+ if (entry.isDirectory()) {
80
+ const logFile = join(sessionDir, entry.name, "d3k.log");
81
+ if (existsSync(logFile)) {
82
+ const stat = statSync(logFile);
83
+ if (!mostRecentLog || stat.mtime > mostRecentLog.mtime) {
84
+ mostRecentLog = { path: logFile, mtime: stat.mtime };
85
+ }
86
+ }
87
+ }
88
+ }
89
+ return mostRecentLog?.path || null;
90
+ }
91
+ catch {
92
+ return null;
93
+ }
94
+ }
95
+ function matchesType(line, type) {
96
+ switch (type) {
97
+ case "browser":
98
+ return line.includes("[BROWSER]") || line.includes("[browser]") || line.includes("[CONSOLE");
99
+ case "server":
100
+ return line.includes("[SERVER]") || line.includes("[server]");
101
+ case "network":
102
+ return line.includes("[NETWORK]") || line.includes("[network]");
103
+ default:
104
+ return true;
105
+ }
106
+ }
107
+ function formatLogLine(line) {
108
+ // Determine source and color
109
+ let formatted = line;
110
+ if (line.includes("[SERVER]") || line.includes("[server]")) {
111
+ formatted = line.replace(/\[SERVER\]/i, chalk.magenta("[SERVER]"));
112
+ }
113
+ else if (line.includes("[BROWSER]") || line.includes("[browser]")) {
114
+ formatted = line.replace(/\[BROWSER\]/i, chalk.yellow("[BROWSER]"));
115
+ }
116
+ else if (line.includes("[NETWORK]") || line.includes("[network]")) {
117
+ formatted = line.replace(/\[NETWORK\]/i, chalk.cyan("[NETWORK]"));
118
+ }
119
+ else if (line.includes("[D3K]")) {
120
+ formatted = line.replace(/\[D3K\]/, chalk.blue("[D3K]"));
121
+ }
122
+ // Highlight errors
123
+ if (/ERROR|FAIL|Exception/i.test(line)) {
124
+ formatted = chalk.red(formatted);
125
+ }
126
+ else if (/WARN/i.test(line)) {
127
+ formatted = chalk.yellow(formatted);
128
+ }
129
+ return formatted;
130
+ }
131
+ export async function showLogs(options) {
132
+ const count = parseInt(options.count || "50", 10);
133
+ const type = options.type || "all";
134
+ const outputJson = options.json || false;
135
+ const logPath = getLogPath();
136
+ if (!logPath) {
137
+ if (outputJson) {
138
+ console.log(JSON.stringify({ error: "No d3k log file found" }));
139
+ }
140
+ else {
141
+ console.log(chalk.red("❌ No d3k log file found."));
142
+ console.log(chalk.gray("Make sure d3k is running or has been run recently."));
143
+ }
144
+ process.exit(1);
145
+ }
146
+ if (!existsSync(logPath)) {
147
+ if (outputJson) {
148
+ console.log(JSON.stringify({ error: "Log file doesn't exist", path: logPath }));
149
+ }
150
+ else {
151
+ console.log(chalk.yellow("📋 Log file doesn't exist yet."));
152
+ console.log(chalk.gray("The dev server may still be starting up."));
153
+ }
154
+ return;
155
+ }
156
+ const content = readFileSync(logPath, "utf-8");
157
+ const allLines = content.trim().split("\n").filter(Boolean);
158
+ if (allLines.length === 0) {
159
+ if (outputJson) {
160
+ console.log(JSON.stringify({ logs: [], message: "Log file is empty" }));
161
+ }
162
+ else {
163
+ console.log(chalk.yellow("📋 Log file is empty."));
164
+ }
165
+ return;
166
+ }
167
+ // Filter by type
168
+ const filteredLines = allLines.filter((line) => matchesType(line, type));
169
+ // Get last N lines
170
+ const linesToShow = filteredLines.slice(-count);
171
+ if (outputJson) {
172
+ console.log(JSON.stringify({
173
+ total: filteredLines.length,
174
+ showing: linesToShow.length,
175
+ type,
176
+ logs: linesToShow
177
+ }));
178
+ return;
179
+ }
180
+ // Header
181
+ console.log(chalk.cyan(`\n📋 d3k logs`));
182
+ if (type !== "all") {
183
+ console.log(chalk.gray(` Filtered by: ${type}`));
184
+ }
185
+ console.log(chalk.gray(` Showing last ${linesToShow.length} of ${filteredLines.length} lines`));
186
+ console.log(chalk.gray(` Log: ${logPath}`));
187
+ console.log();
188
+ // Print logs
189
+ for (const line of linesToShow) {
190
+ console.log(formatLogLine(line));
191
+ }
192
+ console.log();
193
+ console.log(chalk.gray("Tip: Use --type browser|server|network to filter. Use d3k errors to see only errors."));
194
+ }
195
+ //# sourceMappingURL=logs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logs.js","sourceRoot":"","sources":["../../src/commands/logs.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * d3k restart - Restart the development server
3
+ *
4
+ * This command restarts the dev server while keeping d3k's monitoring intact.
5
+ * Use sparingly - HMR handles most code changes automatically.
6
+ */
7
+ export declare function restartServer(): Promise<void>;
8
+ //# sourceMappingURL=restart.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"restart.d.ts","sourceRoot":"","sources":["../../src/commands/restart.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAsDH,wBAAsB,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC,CAkDnD"}
@@ -0,0 +1,92 @@
1
+ /**
2
+ * d3k restart - Restart the development server
3
+ *
4
+ * This command restarts the dev server while keeping d3k's monitoring intact.
5
+ * Use sparingly - HMR handles most code changes automatically.
6
+ */
7
+ import { execSync } from "node:child_process";
8
+ import { existsSync, readdirSync, readFileSync } from "node:fs";
9
+ import { homedir } from "node:os";
10
+ import { join } from "node:path";
11
+ import chalk from "chalk";
12
+ function findActiveSessions() {
13
+ const sessionDir = join(homedir(), ".d3k");
14
+ if (!existsSync(sessionDir)) {
15
+ return [];
16
+ }
17
+ try {
18
+ const entries = readdirSync(sessionDir, { withFileTypes: true });
19
+ const sessions = [];
20
+ for (const entry of entries) {
21
+ if (entry.isDirectory()) {
22
+ const sessionFile = join(sessionDir, entry.name, "session.json");
23
+ if (existsSync(sessionFile)) {
24
+ try {
25
+ const content = JSON.parse(readFileSync(sessionFile, "utf-8"));
26
+ // Check if process is still running
27
+ if (content.pid) {
28
+ try {
29
+ process.kill(content.pid, 0);
30
+ sessions.push(content);
31
+ }
32
+ catch {
33
+ // Process not running
34
+ }
35
+ }
36
+ }
37
+ catch {
38
+ // Skip invalid session files
39
+ }
40
+ }
41
+ }
42
+ }
43
+ return sessions;
44
+ }
45
+ catch {
46
+ return [];
47
+ }
48
+ }
49
+ export async function restartServer() {
50
+ console.log(chalk.yellow("⚠️ Restarting development server..."));
51
+ console.log(chalk.gray("Note: HMR handles most code changes automatically."));
52
+ console.log();
53
+ const sessions = findActiveSessions();
54
+ if (sessions.length === 0) {
55
+ console.log(chalk.red("❌ No active d3k sessions found."));
56
+ console.log(chalk.gray("Make sure d3k is running first."));
57
+ process.exit(1);
58
+ }
59
+ const session = sessions[0];
60
+ if (!session.appPort) {
61
+ console.log(chalk.red("❌ Could not find app port for session."));
62
+ process.exit(1);
63
+ }
64
+ const appPort = session.appPort;
65
+ try {
66
+ // Find and kill the process on the app port
67
+ console.log(chalk.gray(`Finding process on port ${appPort}...`));
68
+ try {
69
+ const pids = execSync(`lsof -ti:${appPort} -sTCP:LISTEN`, { encoding: "utf-8" }).trim();
70
+ if (pids) {
71
+ console.log(chalk.gray(`Killing process(es): ${pids.split("\n").join(", ")}`));
72
+ execSync(`kill -9 ${pids.split("\n").join(" ")}`, { stdio: "ignore" });
73
+ }
74
+ }
75
+ catch {
76
+ console.log(chalk.yellow("No process found on port or lsof not available."));
77
+ }
78
+ // Wait for port to be released
79
+ await new Promise((resolve) => setTimeout(resolve, 1000));
80
+ // Restart the dev server
81
+ const devCommand = session.devCommand || "npm run dev";
82
+ console.log(chalk.green(`✓ Dev server process killed`));
83
+ console.log(chalk.gray(`Restart your dev server manually with: ${devCommand}`));
84
+ console.log();
85
+ console.log(chalk.yellow("Note: d3k will detect when the server restarts automatically."));
86
+ }
87
+ catch (error) {
88
+ console.log(chalk.red(`❌ Failed to restart: ${error instanceof Error ? error.message : String(error)}`));
89
+ process.exit(1);
90
+ }
91
+ }
92
+ //# sourceMappingURL=restart.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"restart.js","sourceRoot":"","sources":["../../src/commands/restart.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import type { InstallLocation, SkillPackage } from "../utils/skill-installer.js";
2
+ interface PackageWithStatus extends SkillPackage {
3
+ installed: boolean;
4
+ }
5
+ interface PackageSelectorProps {
6
+ packages: PackageWithStatus[];
7
+ onComplete: (selectedPackages: SkillPackage[], location: InstallLocation) => void;
8
+ onSkip: () => void;
9
+ }
10
+ export declare function PackageSelector({ packages, onComplete, onSkip }: PackageSelectorProps): import("react/jsx-runtime").JSX.Element;
11
+ export {};
12
+ //# sourceMappingURL=PackageSelector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PackageSelector.d.ts","sourceRoot":"","sources":["../../src/components/PackageSelector.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAA;AAEhF,UAAU,iBAAkB,SAAQ,YAAY;IAC9C,SAAS,EAAE,OAAO,CAAA;CACnB;AAED,UAAU,oBAAoB;IAC5B,QAAQ,EAAE,iBAAiB,EAAE,CAAA;IAC7B,UAAU,EAAE,CAAC,gBAAgB,EAAE,YAAY,EAAE,EAAE,QAAQ,EAAE,eAAe,KAAK,IAAI,CAAA;IACjF,MAAM,EAAE,MAAM,IAAI,CAAA;CACnB;AAED,wBAAgB,eAAe,CAAC,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,oBAAoB,2CA4IrF"}