dev3000 0.0.102 → 0.0.103
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/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/prerender-manifest.json +3 -3
- 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/_global-error.segments/__PAGE__.segment.rsc +1 -1
- package/mcp-server/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/mcp-server/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/mcp-server/.next/server/app/_global-error.segments/_tree.segment.rsc +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/_not-found.segments/_full.segment.rsc +1 -1
- package/mcp-server/.next/server/app/_not-found.segments/_index.segment.rsc +1 -1
- package/mcp-server/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
- package/mcp-server/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
- package/mcp-server/.next/server/app/_not-found.segments/_tree.segment.rsc +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/index.segments/__PAGE__.segment.rsc +1 -1
- package/mcp-server/.next/server/app/index.segments/_full.segment.rsc +1 -1
- package/mcp-server/.next/server/app/index.segments/_index.segment.rsc +1 -1
- package/mcp-server/.next/server/app/index.segments/_tree.segment.rsc +1 -1
- package/mcp-server/.next/server/chunks/[root-of-the-server]__0691849a._.js +1 -1
- package/mcp-server/.next/server/chunks/[root-of-the-server]__0691849a._.js.map +1 -1
- package/mcp-server/.next/server/chunks/[root-of-the-server]__ae49815f._.js +53 -17
- package/mcp-server/.next/server/chunks/[root-of-the-server]__ae49815f._.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/route.ts +2 -1
- package/mcp-server/app/mcp/tools.ts +298 -2
- package/package.json +1 -1
- /package/mcp-server/.next/static/{4DzBVkDIn_yRVz53mYMf8 → I_0vbzGzd9Y9Tse-yfGKd}/_buildManifest.js +0 -0
- /package/mcp-server/.next/static/{4DzBVkDIn_yRVz53mYMf8 → I_0vbzGzd9Y9Tse-yfGKd}/_clientMiddlewareManifest.json +0 -0
- /package/mcp-server/.next/static/{4DzBVkDIn_yRVz53mYMf8 → I_0vbzGzd9Y9Tse-yfGKd}/_ssgManifest.js +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
self.__RSC_SERVER_MANIFEST="{\n \"node\": {},\n \"edge\": {},\n \"encryptionKey\": \"
|
|
1
|
+
self.__RSC_SERVER_MANIFEST="{\n \"node\": {},\n \"edge\": {},\n \"encryptionKey\": \"5LNEsGYjtwWobrqfCSeqJHwMBqVNoQL+Ca6PZ7kLWsc=\"\n}"
|
|
@@ -419,7 +419,8 @@ const handler = createMcpHandler(
|
|
|
419
419
|
returnRawData: z
|
|
420
420
|
.boolean()
|
|
421
421
|
.optional()
|
|
422
|
-
.describe("Return structured data for Claude orchestration instead of formatted text")
|
|
422
|
+
.describe("Return structured data for Claude orchestration instead of formatted text"),
|
|
423
|
+
createPR: z.boolean().optional().describe("Create a PR for the highest priority issue (default: false)")
|
|
423
424
|
},
|
|
424
425
|
async (params) => {
|
|
425
426
|
return fixMyApp(params)
|
|
@@ -12,7 +12,7 @@ const execAsync = promisify(exec)
|
|
|
12
12
|
// Tool descriptions
|
|
13
13
|
export const TOOL_DESCRIPTIONS = {
|
|
14
14
|
fix_my_app:
|
|
15
|
-
"🔧 **THE ULTIMATE FIND→FIX→VERIFY MACHINE!** This tool doesn't just find bugs - it FIXES them! Pure dev3000 magic that identifies issues,
|
|
15
|
+
"🔧 **THE ULTIMATE FIND→FIX→VERIFY MACHINE!** This tool doesn't just find bugs - it FIXES them! Pure dev3000 magic that identifies issues, prioritizes them, and creates focused PRs for the worst issue! 🪄\n\n🔥 **INSTANT FIXING SUPERPOWERS:**\n• Detects ALL error types: server crashes, browser errors, build failures, API issues, performance problems\n• **PRIORITIZES errors** using smart scoring (build > server > browser > network > warnings)\n• **Identifies the SINGLE WORST issue** that needs fixing right now\n• **Creates ONE focused PR** per run - no overwhelming multi-issue PRs!\n• Shows EXACT user interactions that triggered each error (clicks, navigation, etc.)\n• Provides EXACT fix code with file locations and line numbers\n• Verifies fixes by replaying the same interactions that caused the error!\n\n🎯 **SMART PRIORITIZATION:**\n• Build errors: 1000+ priority (blocks development)\n• Server errors: 500+ priority (affects functionality)\n• Browser errors: 300+ priority (user-facing issues)\n• Network errors: 200+ priority (intermittent issues)\n• Warnings: 100+ priority (nice to fix)\n• +Modifiers: Multiple occurrences, recency, reproducibility\n\n🚀 **ONE-PR-PER-RUN WORKFLOW:**\n1️⃣ I FIND all issues and their interactions\n2️⃣ I PRIORITIZE using smart scoring algorithm\n3️⃣ I IDENTIFY the single worst issue\n4️⃣ Set createPR=true to CREATE A FOCUSED PR for just that issue\n5️⃣ Fix that ONE issue, then run again for the next worst issue\n\n📍 **INTERACTION-BASED VERIFICATION:**\n• Every error includes the user interactions that led to it\n• Use execute_browser_action to replay these exact interactions\n• Verify your fix works by confirming the error doesn't reoccur\n• Example: Error shows '[INTERACTION] Click at (450,300)' → After fix, use execute_browser_action(action='click', params={x:450, y:300}) to verify\n\n⚡ **3 ACTION MODES:**\n• FIX NOW: 'What's broken RIGHT NOW?' → Find worst issue and optionally create PR\n• FIX REGRESSION: 'What broke during testing?' → Compare before/after and fix worst issue\n• FIX CONTINUOUSLY: 'Fix issues as they appear' → Monitor and fix proactively\n\n💡 **PERFECT FOR:** 'fix my app' or 'debug my app' or 'create pr for worst issue' requests. This tool identifies problems, ranks them by severity, and creates focused single-issue PRs - not giant multi-fix PRs!",
|
|
16
16
|
|
|
17
17
|
execute_browser_action:
|
|
18
18
|
"🌐 **INTELLIGENT BROWSER AUTOMATION** - Smart browser action routing that automatically delegates to chrome-devtools MCP when available for superior automation capabilities.\n\n🎯 **INTELLIGENT DELEGATION:**\n• Screenshots → chrome-devtools MCP (better quality, no conflicts)\n• Navigation → chrome-devtools MCP (more reliable page handling)\n• Clicks → chrome-devtools MCP (precise coordinate-based interaction)\n• JavaScript evaluation → chrome-devtools MCP (enhanced debugging)\n• Scrolling & typing → dev3000 fallback (specialized actions)\n\n⚡ **PROGRESSIVE ENHANCEMENT:**\n• Uses chrome-devtools MCP when available for best results\n• Falls back to dev3000's native implementation when chrome-devtools unavailable\n• Shares the same Chrome instance via CDP URL coordination\n• Eliminates browser conflicts between tools\n\n💡 **PERFECT FOR:** Browser automation that automatically chooses the best tool for each action, ensuring optimal results whether chrome-devtools MCP is available or not.",
|
|
@@ -49,6 +49,7 @@ export interface FixMyAppParams {
|
|
|
49
49
|
integrateNextjs?: boolean
|
|
50
50
|
integrateChromeDevtools?: boolean
|
|
51
51
|
returnRawData?: boolean
|
|
52
|
+
createPR?: boolean // Create a PR for the highest priority issue
|
|
52
53
|
}
|
|
53
54
|
|
|
54
55
|
export interface CreateIntegratedWorkflowParams {
|
|
@@ -122,6 +123,259 @@ export interface StructuredAnalysisResult {
|
|
|
122
123
|
}
|
|
123
124
|
}
|
|
124
125
|
|
|
126
|
+
export interface PrioritizedError {
|
|
127
|
+
error: string
|
|
128
|
+
category: "build" | "server" | "browser" | "network" | "warning"
|
|
129
|
+
severity: "critical" | "error" | "warning"
|
|
130
|
+
priorityScore: number
|
|
131
|
+
interactions: string[]
|
|
132
|
+
timestamp?: string
|
|
133
|
+
suggestedFix?: string
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
// Helper functions
|
|
137
|
+
|
|
138
|
+
/**
|
|
139
|
+
* Calculate priority score for an error
|
|
140
|
+
* Higher score = higher priority to fix
|
|
141
|
+
*
|
|
142
|
+
* Scoring system:
|
|
143
|
+
* - Build errors: 1000+ (blocks development)
|
|
144
|
+
* - Server errors: 500+ (affects functionality)
|
|
145
|
+
* - Browser errors: 300+ (user-facing issues)
|
|
146
|
+
* - Network errors: 200+ (intermittent issues)
|
|
147
|
+
* - Warnings: 100+ (nice to fix)
|
|
148
|
+
*
|
|
149
|
+
* Additional modifiers:
|
|
150
|
+
* - Multiple occurrences: +50 per occurrence
|
|
151
|
+
* - Recent (last minute): +100
|
|
152
|
+
* - Has user interactions: +50 (reproducible)
|
|
153
|
+
*/
|
|
154
|
+
function calculateErrorPriority(
|
|
155
|
+
errorLine: string,
|
|
156
|
+
category: PrioritizedError["category"],
|
|
157
|
+
interactions: string[],
|
|
158
|
+
allErrors: string[]
|
|
159
|
+
): number {
|
|
160
|
+
let score = 0
|
|
161
|
+
|
|
162
|
+
// Base score by category
|
|
163
|
+
if (category === "build") {
|
|
164
|
+
score = 1000
|
|
165
|
+
} else if (category === "server") {
|
|
166
|
+
score = 500
|
|
167
|
+
} else if (category === "browser") {
|
|
168
|
+
score = 300
|
|
169
|
+
} else if (category === "network") {
|
|
170
|
+
score = 200
|
|
171
|
+
} else if (category === "warning") {
|
|
172
|
+
score = 100
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
// Severity multipliers
|
|
176
|
+
if (/CRITICAL|FATAL|crashed/i.test(errorLine)) {
|
|
177
|
+
score *= 2
|
|
178
|
+
} else if (/ERROR|Exception|FAIL/i.test(errorLine)) {
|
|
179
|
+
score *= 1.5
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
// Count occurrences of similar errors
|
|
183
|
+
const errorPattern = errorLine.replace(/\d+/g, "\\d+").substring(0, 100)
|
|
184
|
+
const occurrences = allErrors.filter((e) => new RegExp(errorPattern).test(e)).length
|
|
185
|
+
if (occurrences > 1) {
|
|
186
|
+
score += (occurrences - 1) * 50
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
// Boost if has interactions (reproducible)
|
|
190
|
+
if (interactions.length > 0) {
|
|
191
|
+
score += 50
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
// Boost if recent (within last minute)
|
|
195
|
+
const timestampMatch = errorLine.match(/\[(\d{2}):(\d{2}):(\d{2})\.\d{3}\]/)
|
|
196
|
+
if (timestampMatch) {
|
|
197
|
+
const now = new Date()
|
|
198
|
+
const errorTime = new Date()
|
|
199
|
+
errorTime.setHours(parseInt(timestampMatch[1], 10))
|
|
200
|
+
errorTime.setMinutes(parseInt(timestampMatch[2], 10))
|
|
201
|
+
errorTime.setSeconds(parseInt(timestampMatch[3], 10))
|
|
202
|
+
|
|
203
|
+
const ageMinutes = (now.getTime() - errorTime.getTime()) / 1000 / 60
|
|
204
|
+
if (ageMinutes < 1) {
|
|
205
|
+
score += 100
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
return score
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
/**
|
|
213
|
+
* Find the single highest priority error from categorized errors
|
|
214
|
+
*/
|
|
215
|
+
function findHighestPriorityError(
|
|
216
|
+
categorizedErrors: {
|
|
217
|
+
serverErrors: string[]
|
|
218
|
+
browserErrors: string[]
|
|
219
|
+
buildErrors: string[]
|
|
220
|
+
networkErrors: string[]
|
|
221
|
+
warnings: string[]
|
|
222
|
+
},
|
|
223
|
+
allErrors: string[],
|
|
224
|
+
logLines: string[]
|
|
225
|
+
): PrioritizedError | null {
|
|
226
|
+
const prioritizedErrors: PrioritizedError[] = []
|
|
227
|
+
|
|
228
|
+
// Helper to find interactions before an error
|
|
229
|
+
const findInteractions = (errorLine: string): string[] => {
|
|
230
|
+
const errorIndex = logLines.indexOf(errorLine)
|
|
231
|
+
if (errorIndex === -1) return []
|
|
232
|
+
|
|
233
|
+
const interactions: string[] = []
|
|
234
|
+
for (let i = errorIndex - 1; i >= Math.max(0, errorIndex - 20) && interactions.length < 5; i--) {
|
|
235
|
+
if (
|
|
236
|
+
logLines[i].includes("[INTERACTION]") ||
|
|
237
|
+
logLines[i].includes("[NAVIGATION]") ||
|
|
238
|
+
logLines[i].includes("[PAGE]")
|
|
239
|
+
) {
|
|
240
|
+
interactions.unshift(logLines[i])
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
return interactions
|
|
244
|
+
}
|
|
245
|
+
|
|
246
|
+
// Process build errors
|
|
247
|
+
for (const error of categorizedErrors.buildErrors) {
|
|
248
|
+
const interactions = findInteractions(error)
|
|
249
|
+
prioritizedErrors.push({
|
|
250
|
+
error,
|
|
251
|
+
category: "build",
|
|
252
|
+
severity: "critical",
|
|
253
|
+
priorityScore: calculateErrorPriority(error, "build", interactions, allErrors),
|
|
254
|
+
interactions
|
|
255
|
+
})
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
// Process server errors
|
|
259
|
+
for (const error of categorizedErrors.serverErrors) {
|
|
260
|
+
const interactions = findInteractions(error)
|
|
261
|
+
const severity: PrioritizedError["severity"] = /CRITICAL|FATAL/i.test(error) ? "critical" : "error"
|
|
262
|
+
prioritizedErrors.push({
|
|
263
|
+
error,
|
|
264
|
+
category: "server",
|
|
265
|
+
severity,
|
|
266
|
+
priorityScore: calculateErrorPriority(error, "server", interactions, allErrors),
|
|
267
|
+
interactions
|
|
268
|
+
})
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
// Process browser errors
|
|
272
|
+
for (const error of categorizedErrors.browserErrors) {
|
|
273
|
+
const interactions = findInteractions(error)
|
|
274
|
+
const severity: PrioritizedError["severity"] = /CRITICAL|FATAL/i.test(error) ? "critical" : "error"
|
|
275
|
+
prioritizedErrors.push({
|
|
276
|
+
error,
|
|
277
|
+
category: "browser",
|
|
278
|
+
severity,
|
|
279
|
+
priorityScore: calculateErrorPriority(error, "browser", interactions, allErrors),
|
|
280
|
+
interactions
|
|
281
|
+
})
|
|
282
|
+
}
|
|
283
|
+
|
|
284
|
+
// Process network errors
|
|
285
|
+
for (const error of categorizedErrors.networkErrors) {
|
|
286
|
+
const interactions = findInteractions(error)
|
|
287
|
+
prioritizedErrors.push({
|
|
288
|
+
error,
|
|
289
|
+
category: "network",
|
|
290
|
+
severity: "error",
|
|
291
|
+
priorityScore: calculateErrorPriority(error, "network", interactions, allErrors),
|
|
292
|
+
interactions
|
|
293
|
+
})
|
|
294
|
+
}
|
|
295
|
+
|
|
296
|
+
// Process warnings (only if no errors found)
|
|
297
|
+
if (prioritizedErrors.length === 0) {
|
|
298
|
+
for (const error of categorizedErrors.warnings) {
|
|
299
|
+
const interactions = findInteractions(error)
|
|
300
|
+
prioritizedErrors.push({
|
|
301
|
+
error,
|
|
302
|
+
category: "warning",
|
|
303
|
+
severity: "warning",
|
|
304
|
+
priorityScore: calculateErrorPriority(error, "warning", interactions, allErrors),
|
|
305
|
+
interactions
|
|
306
|
+
})
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
|
|
310
|
+
// Sort by priority score (highest first)
|
|
311
|
+
prioritizedErrors.sort((a, b) => b.priorityScore - a.priorityScore)
|
|
312
|
+
|
|
313
|
+
return prioritizedErrors[0] || null
|
|
314
|
+
}
|
|
315
|
+
|
|
316
|
+
/**
|
|
317
|
+
* Create a PR for the highest priority issue
|
|
318
|
+
*/
|
|
319
|
+
async function createPRForIssue(prioritizedError: PrioritizedError, _projectName: string): Promise<string> {
|
|
320
|
+
try {
|
|
321
|
+
// Extract error details for PR title and body
|
|
322
|
+
const errorType = prioritizedError.category.toUpperCase()
|
|
323
|
+
const errorMessage = prioritizedError.error
|
|
324
|
+
.replace(/\[[^\]]+\]/g, "") // Remove timestamps and tags
|
|
325
|
+
.trim()
|
|
326
|
+
.substring(0, 100)
|
|
327
|
+
|
|
328
|
+
const prTitle = `Fix: ${errorType} - ${errorMessage}`
|
|
329
|
+
|
|
330
|
+
// Build PR body
|
|
331
|
+
const prBody = `## 🐛 Bug Fix - ${prioritizedError.category} Error
|
|
332
|
+
|
|
333
|
+
**Priority Score:** ${prioritizedError.priorityScore} (${prioritizedError.severity})
|
|
334
|
+
|
|
335
|
+
### Error Details
|
|
336
|
+
\`\`\`
|
|
337
|
+
${prioritizedError.error}
|
|
338
|
+
\`\`\`
|
|
339
|
+
|
|
340
|
+
${
|
|
341
|
+
prioritizedError.interactions.length > 0
|
|
342
|
+
? `### Reproduction Steps
|
|
343
|
+
The error occurred after these user interactions:
|
|
344
|
+
${prioritizedError.interactions.map((i, idx) => `${idx + 1}. ${i}`).join("\n")}
|
|
345
|
+
|
|
346
|
+
### Verification
|
|
347
|
+
After implementing the fix, verify by:
|
|
348
|
+
1. Replaying the same interactions using \`execute_browser_action\`
|
|
349
|
+
2. Confirming the error no longer appears in logs
|
|
350
|
+
3. Checking that functionality works as expected
|
|
351
|
+
`
|
|
352
|
+
: ""
|
|
353
|
+
}
|
|
354
|
+
|
|
355
|
+
### Suggested Fix
|
|
356
|
+
This PR addresses the ${prioritizedError.severity}-level ${prioritizedError.category} error detected by dev3000.
|
|
357
|
+
|
|
358
|
+
${prioritizedError.suggestedFix || "Please analyze the error and implement the appropriate fix."}
|
|
359
|
+
|
|
360
|
+
---
|
|
361
|
+
🤖 Generated with [dev3000](https://github.com/vercel-labs/dev3000) - AI-powered debugging
|
|
362
|
+
`
|
|
363
|
+
|
|
364
|
+
// Create a new branch
|
|
365
|
+
const branchName = `fix/${prioritizedError.category}-${Date.now()}`
|
|
366
|
+
|
|
367
|
+
// Use execAsync to run git and gh commands
|
|
368
|
+
await execAsync(`git checkout -b ${branchName}`)
|
|
369
|
+
|
|
370
|
+
// Create the PR using gh
|
|
371
|
+
await execAsync(`gh pr create --title "${prTitle}" --body "${prBody}" --head ${branchName}`)
|
|
372
|
+
|
|
373
|
+
return `✅ Created PR: ${prTitle}\n\nBranch: ${branchName}\n\nNext steps:\n1. Implement the fix in your code\n2. Commit and push changes\n3. PR is ready for review!`
|
|
374
|
+
} catch (error) {
|
|
375
|
+
return `❌ Failed to create PR: ${error instanceof Error ? error.message : String(error)}\n\nYou can manually create a PR with the error details above.`
|
|
376
|
+
}
|
|
377
|
+
}
|
|
378
|
+
|
|
125
379
|
// Helper functions
|
|
126
380
|
export function findActiveSessions(): Session[] {
|
|
127
381
|
const sessionDir = join(homedir(), ".d3k")
|
|
@@ -185,7 +439,8 @@ export async function fixMyApp({
|
|
|
185
439
|
includeTimestampInstructions = true,
|
|
186
440
|
integrateNextjs = false,
|
|
187
441
|
integrateChromeDevtools = false,
|
|
188
|
-
returnRawData = false
|
|
442
|
+
returnRawData = false,
|
|
443
|
+
createPR = false
|
|
189
444
|
}: FixMyAppParams): Promise<{ content: Array<{ type: "text"; text: string }> }> {
|
|
190
445
|
// 🎯 MCP ORCHESTRATION: Check which downstream MCPs are available
|
|
191
446
|
const { getMCPClientManager } = await import("./client-manager")
|
|
@@ -631,6 +886,47 @@ export async function fixMyApp({
|
|
|
631
886
|
results.push("• Combined = 90%+ issue resolution rate!")
|
|
632
887
|
}
|
|
633
888
|
}
|
|
889
|
+
|
|
890
|
+
// 🎯 PRIORITIZATION & PR CREATION
|
|
891
|
+
// Find the single highest priority error and optionally create a PR
|
|
892
|
+
const highestPriorityError = findHighestPriorityError(categorizedErrors, actionableErrors, logLines)
|
|
893
|
+
|
|
894
|
+
if (highestPriorityError) {
|
|
895
|
+
results.push("")
|
|
896
|
+
results.push("🎯 **HIGHEST PRIORITY ISSUE:**")
|
|
897
|
+
results.push(`📊 Priority Score: ${highestPriorityError.priorityScore}`)
|
|
898
|
+
results.push(`🏷️ Category: ${highestPriorityError.category.toUpperCase()}`)
|
|
899
|
+
results.push(`⚠️ Severity: ${highestPriorityError.severity.toUpperCase()}`)
|
|
900
|
+
results.push("")
|
|
901
|
+
results.push("❌ **Error:**")
|
|
902
|
+
results.push(` ${highestPriorityError.error}`)
|
|
903
|
+
|
|
904
|
+
if (highestPriorityError.interactions.length > 0) {
|
|
905
|
+
results.push("")
|
|
906
|
+
results.push("📍 **Reproduction Steps:**")
|
|
907
|
+
highestPriorityError.interactions.forEach((interaction, idx) => {
|
|
908
|
+
results.push(` ${idx + 1}. ${interaction}`)
|
|
909
|
+
})
|
|
910
|
+
}
|
|
911
|
+
|
|
912
|
+
// Create PR if requested
|
|
913
|
+
if (createPR) {
|
|
914
|
+
results.push("")
|
|
915
|
+
results.push("🚀 **CREATING PR FOR THIS ISSUE...**")
|
|
916
|
+
const prResult = await createPRForIssue(highestPriorityError, projectName || "")
|
|
917
|
+
results.push(prResult)
|
|
918
|
+
} else {
|
|
919
|
+
results.push("")
|
|
920
|
+
results.push("💡 **To create a PR for this issue:**")
|
|
921
|
+
results.push(" Run: fix_my_app(createPR=true)")
|
|
922
|
+
results.push("")
|
|
923
|
+
results.push(" This will:")
|
|
924
|
+
results.push(" • Create a new branch for the fix")
|
|
925
|
+
results.push(" • Generate a PR with full error context")
|
|
926
|
+
results.push(" • Include reproduction steps")
|
|
927
|
+
results.push(" • Focus on fixing just this ONE issue")
|
|
928
|
+
}
|
|
929
|
+
}
|
|
634
930
|
}
|
|
635
931
|
|
|
636
932
|
// Extract screenshot information (replaces get_recent_screenshots)
|
package/package.json
CHANGED
/package/mcp-server/.next/static/{4DzBVkDIn_yRVz53mYMf8 → I_0vbzGzd9Y9Tse-yfGKd}/_buildManifest.js
RENAMED
|
File without changes
|
|
File without changes
|
/package/mcp-server/.next/static/{4DzBVkDIn_yRVz53mYMf8 → I_0vbzGzd9Y9Tse-yfGKd}/_ssgManifest.js
RENAMED
|
File without changes
|