dev3000 0.0.121 → 0.0.124

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 (62) hide show
  1. package/dist/cli.js +19 -0
  2. package/dist/cli.js.map +1 -1
  3. package/dist/dev-environment.d.ts.map +1 -1
  4. package/dist/dev-environment.js +11 -0
  5. package/dist/dev-environment.js.map +1 -1
  6. package/dist/utils/log-filename.d.ts.map +1 -1
  7. package/dist/utils/log-filename.js +8 -3
  8. package/dist/utils/log-filename.js.map +1 -1
  9. package/mcp-server/app/mcp/route.ts +81 -7
  10. package/mcp-server/app/mcp/tools.ts +33 -3
  11. package/mcp-server/next-env.d.ts +1 -1
  12. package/mcp-server/package.json +0 -12
  13. package/package.json +6 -7
  14. package/mcp-server/.next/build/chunks/[root-of-the-server]__25374c4f._.js +0 -500
  15. package/mcp-server/.next/build/chunks/[root-of-the-server]__25374c4f._.js.map +0 -11
  16. package/mcp-server/.next/build/chunks/[root-of-the-server]__6e020478._.js +0 -441
  17. package/mcp-server/.next/build/chunks/[root-of-the-server]__6e020478._.js.map +0 -7
  18. package/mcp-server/.next/build/chunks/[root-of-the-server]__c438ef56._.js +0 -205
  19. package/mcp-server/.next/build/chunks/[root-of-the-server]__c438ef56._.js.map +0 -8
  20. package/mcp-server/.next/build/chunks/[root-of-the-server]__c7ae8543._.js +0 -500
  21. package/mcp-server/.next/build/chunks/[root-of-the-server]__c7ae8543._.js.map +0 -11
  22. package/mcp-server/.next/build/chunks/[turbopack-node]_transforms_postcss_ts_80bff36f._.js +0 -13
  23. package/mcp-server/.next/build/chunks/[turbopack-node]_transforms_postcss_ts_80bff36f._.js.map +0 -5
  24. package/mcp-server/.next/build/chunks/[turbopack-node]_transforms_webpack-loaders_ts_c84aa21a._.js +0 -12
  25. package/mcp-server/.next/build/chunks/[turbopack-node]_transforms_webpack-loaders_ts_c84aa21a._.js.map +0 -5
  26. package/mcp-server/.next/build/chunks/[turbopack]_runtime.js +0 -770
  27. package/mcp-server/.next/build/chunks/[turbopack]_runtime.js.map +0 -10
  28. package/mcp-server/.next/build/chunks/node_modules__pnpm_806d01c0._.js +0 -6758
  29. package/mcp-server/.next/build/chunks/node_modules__pnpm_806d01c0._.js.map +0 -47
  30. package/mcp-server/.next/build/package.json +0 -1
  31. package/mcp-server/.next/build/postcss.js +0 -6
  32. package/mcp-server/.next/build/postcss.js.map +0 -5
  33. package/mcp-server/.next/build/webpack-loaders.js +0 -6
  34. package/mcp-server/.next/build/webpack-loaders.js.map +0 -5
  35. package/mcp-server/.next/package.json +0 -1
  36. package/mcp-server/app/api/auth/authorize/route.ts +0 -52
  37. package/mcp-server/app/api/auth/callback/route.ts +0 -128
  38. package/mcp-server/app/api/auth/signout/route.ts +0 -34
  39. package/mcp-server/app/api/auth/token/route.ts +0 -16
  40. package/mcp-server/app/api/cloud/check-pr/route.ts +0 -53
  41. package/mcp-server/app/api/cloud/check-pr/steps.ts +0 -458
  42. package/mcp-server/app/api/cloud/check-pr/workflow.ts +0 -109
  43. package/mcp-server/app/api/cloud/fix-workflow/health/route.ts +0 -10
  44. package/mcp-server/app/api/cloud/fix-workflow/route.ts +0 -50
  45. package/mcp-server/app/api/cloud/fix-workflow/steps.ts +0 -2091
  46. package/mcp-server/app/api/cloud/fix-workflow/workflow.ts +0 -296
  47. package/mcp-server/app/api/cloud/start-fix/route.ts +0 -192
  48. package/mcp-server/app/api/integration/webhook/route.ts +0 -290
  49. package/mcp-server/app/api/projects/[projectId]/bypass-token/route.ts +0 -48
  50. package/mcp-server/app/api/projects/branches/route.ts +0 -115
  51. package/mcp-server/app/api/projects/check-protection/route.ts +0 -33
  52. package/mcp-server/app/api/projects/route.ts +0 -97
  53. package/mcp-server/app/api/workflows/route.ts +0 -105
  54. package/mcp-server/app/auth/error/page.tsx +0 -47
  55. package/mcp-server/app/signin/page.tsx +0 -37
  56. package/mcp-server/app/workflows/[id]/report/agent-analysis.tsx +0 -7
  57. package/mcp-server/app/workflows/[id]/report/page.tsx +0 -199
  58. package/mcp-server/app/workflows/new/new-workflow-client.tsx +0 -32
  59. package/mcp-server/app/workflows/new/page.tsx +0 -13
  60. package/mcp-server/app/workflows/new-workflow-modal.tsx +0 -973
  61. package/mcp-server/app/workflows/page.tsx +0 -16
  62. package/mcp-server/app/workflows/workflows-client.tsx +0 -290
@@ -1,47 +0,0 @@
1
- import Link from "next/link"
2
-
3
- export default function AuthErrorPage({
4
- searchParams
5
- }: {
6
- searchParams: { error?: string; error_description?: string }
7
- }) {
8
- const error = searchParams.error || "unknown_error"
9
- const description = searchParams.error_description || "An unknown error occurred during authentication"
10
-
11
- return (
12
- <div className="flex min-h-screen items-center justify-center bg-gray-50">
13
- <div className="w-full max-w-md space-y-8 rounded-lg bg-white p-8 shadow-md">
14
- <div className="text-center">
15
- <div className="mx-auto h-12 w-12 text-red-600">
16
- <svg className="h-full w-full" fill="none" viewBox="0 0 24 24" stroke="currentColor">
17
- <path
18
- strokeLinecap="round"
19
- strokeLinejoin="round"
20
- strokeWidth={2}
21
- d="M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z"
22
- />
23
- </svg>
24
- </div>
25
- <h1 className="mt-4 text-2xl font-bold tracking-tight text-gray-900">Authentication Error</h1>
26
- <p className="mt-2 text-sm text-gray-600">Error: {error}</p>
27
- <p className="mt-1 text-sm text-gray-500">{decodeURIComponent(description)}</p>
28
- </div>
29
-
30
- <div className="mt-8 space-y-4">
31
- <Link
32
- href="/signin"
33
- className="flex w-full justify-center rounded-md bg-black px-4 py-3 text-sm font-semibold text-white shadow-sm hover:bg-gray-800 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-black"
34
- >
35
- Try Again
36
- </Link>
37
- <Link
38
- href="/"
39
- className="flex w-full justify-center rounded-md border border-gray-300 bg-white px-4 py-3 text-sm font-semibold text-gray-700 shadow-sm hover:bg-gray-50"
40
- >
41
- Go Home
42
- </Link>
43
- </div>
44
- </div>
45
- </div>
46
- )
47
- }
@@ -1,37 +0,0 @@
1
- import Link from "next/link"
2
- import { redirect } from "next/navigation"
3
- import { getCurrentUser } from "@/lib/auth"
4
-
5
- export default async function SignInPage() {
6
- const user = await getCurrentUser()
7
-
8
- // If already signed in, redirect to workflows
9
- if (user) {
10
- redirect("/workflows")
11
- }
12
-
13
- return (
14
- <div className="flex min-h-screen items-center justify-center bg-gray-50">
15
- <div className="w-full max-w-md space-y-8 rounded-lg bg-white p-8 shadow-md">
16
- <div className="text-center">
17
- <h1 className="text-3xl font-bold tracking-tight text-gray-900">Sign in to dev3000</h1>
18
- <p className="mt-2 text-sm text-gray-600">Access your workflows and projects</p>
19
- </div>
20
-
21
- <div className="mt-8">
22
- <Link
23
- href="/api/auth/authorize"
24
- prefetch={false}
25
- className="flex w-full justify-center rounded-md bg-black px-4 py-3 text-sm font-semibold text-white shadow-sm hover:bg-gray-800 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-black"
26
- >
27
- Sign in with Vercel
28
- </Link>
29
- </div>
30
-
31
- <p className="mt-4 text-center text-xs text-gray-500">
32
- By signing in, you agree to our Terms of Service and Privacy Policy
33
- </p>
34
- </div>
35
- </div>
36
- )
37
- }
@@ -1,7 +0,0 @@
1
- "use client"
2
-
3
- import { Streamdown } from "streamdown"
4
-
5
- export function AgentAnalysis({ content }: { content: string }) {
6
- return <Streamdown mode="static">{content}</Streamdown>
7
- }
@@ -1,199 +0,0 @@
1
- import { ArrowLeft, Download } from "lucide-react"
2
- import Image from "next/image"
3
- import { redirect } from "next/navigation"
4
- import { getCurrentUser } from "@/lib/auth"
5
- import { getWorkflowRun } from "@/lib/workflow-storage"
6
- import type { WorkflowReport } from "@/types"
7
- import { AgentAnalysis } from "./agent-analysis"
8
-
9
- export default async function WorkflowReportPage({ params }: { params: Promise<{ id: string }> }) {
10
- const user = await getCurrentUser()
11
- const { id } = await params
12
-
13
- if (!user) {
14
- redirect("/signin")
15
- }
16
-
17
- const run = await getWorkflowRun(user.id, id)
18
-
19
- if (!run || !run.reportBlobUrl) {
20
- redirect("/workflows")
21
- }
22
-
23
- // Fetch the JSON report from the blob URL
24
- const response = await fetch(run.reportBlobUrl)
25
- const report: WorkflowReport = await response.json()
26
-
27
- // Helper to format CLS grade
28
- const gradeColor = (grade?: string) => {
29
- switch (grade) {
30
- case "good":
31
- return "text-green-600 bg-green-100"
32
- case "needs-improvement":
33
- return "text-yellow-600 bg-yellow-100"
34
- case "poor":
35
- return "text-red-600 bg-red-100"
36
- default:
37
- return "text-gray-600 bg-gray-100"
38
- }
39
- }
40
-
41
- return (
42
- <div className="min-h-screen bg-background">
43
- <div className="container mx-auto px-4 py-8 max-w-4xl">
44
- <div className="flex items-center gap-4 mb-6">
45
- <a
46
- href="/workflows"
47
- className="inline-flex items-center gap-2 text-muted-foreground hover:text-foreground transition-colors"
48
- >
49
- <ArrowLeft className="h-4 w-4" />
50
- <span className="font-semibold">d3k</span>
51
- </a>
52
- <span className="text-muted-foreground">/</span>
53
- <span className="text-muted-foreground">Fix Report</span>
54
- </div>
55
-
56
- <div className="flex items-center justify-between mb-6">
57
- <div>
58
- <h1 className="text-3xl font-bold">{report.projectName}</h1>
59
- <p className="text-muted-foreground mt-1">{new Date(report.timestamp).toLocaleString()}</p>
60
- </div>
61
- <a
62
- href={run.reportBlobUrl}
63
- download
64
- className="inline-flex items-center gap-2 px-4 py-2 bg-primary text-primary-foreground rounded-md hover:bg-primary/90 transition-colors"
65
- >
66
- <Download className="h-4 w-4" />
67
- Download JSON
68
- </a>
69
- </div>
70
-
71
- {/* CLS Score Section */}
72
- {report.clsScore !== undefined && (
73
- <div className="bg-card border border-border rounded-lg p-6 mb-6">
74
- <h2 className="text-xl font-semibold mb-4">Cumulative Layout Shift (CLS)</h2>
75
- <div className="flex items-center gap-4 mb-4">
76
- <div className="text-4xl font-bold">{report.clsScore.toFixed(4)}</div>
77
- {report.clsGrade && (
78
- <span className={`px-3 py-1 rounded-full text-sm font-medium ${gradeColor(report.clsGrade)}`}>
79
- {report.clsGrade}
80
- </span>
81
- )}
82
- </div>
83
-
84
- {/* Layout Shifts Details */}
85
- {report.layoutShifts && report.layoutShifts.length > 0 && (
86
- <div className="mt-4">
87
- <h3 className="text-sm font-medium text-muted-foreground mb-2">Layout Shift Details</h3>
88
- <div className="space-y-2">
89
- {report.layoutShifts.map((shift, i) => (
90
- <div key={`shift-${shift.timestamp}`} className="bg-muted/50 rounded p-3 text-sm">
91
- <div className="flex justify-between mb-1">
92
- <span className="font-medium">Shift #{i + 1}</span>
93
- <span className="text-muted-foreground">score: {shift.score.toFixed(4)}</span>
94
- </div>
95
- {shift.elements.length > 0 && (
96
- <div className="text-muted-foreground text-xs">Elements: {shift.elements.join(", ")}</div>
97
- )}
98
- </div>
99
- ))}
100
- </div>
101
- </div>
102
- )}
103
- </div>
104
- )}
105
-
106
- {/* Screenshots Section */}
107
- {(report.beforeScreenshotUrl || (report.clsScreenshots && report.clsScreenshots.length > 0)) && (
108
- <div className="bg-card border border-border rounded-lg p-6 mb-6">
109
- <h2 className="text-xl font-semibold mb-4">Screenshots</h2>
110
- <div className="flex flex-wrap gap-2">
111
- {report.beforeScreenshotUrl && (
112
- <a href={report.beforeScreenshotUrl} target="_blank" rel="noopener noreferrer" className="inline-block">
113
- <Image
114
- src={report.beforeScreenshotUrl}
115
- alt="Before screenshot"
116
- width={192}
117
- height={108}
118
- unoptimized
119
- className="w-48 h-auto rounded border border-border hover:border-primary transition-colors cursor-pointer"
120
- />
121
- <span className="text-xs text-muted-foreground mt-1 block">Before</span>
122
- </a>
123
- )}
124
- {report.clsScreenshots?.map((screenshot) => (
125
- <a
126
- key={`screenshot-${screenshot.timestamp}`}
127
- href={screenshot.blobUrl}
128
- target="_blank"
129
- rel="noopener noreferrer"
130
- className="inline-block"
131
- >
132
- <Image
133
- src={screenshot.blobUrl}
134
- alt={screenshot.label || "CLS Screenshot"}
135
- width={192}
136
- height={108}
137
- unoptimized
138
- className="w-48 h-auto rounded border border-border hover:border-primary transition-colors cursor-pointer"
139
- />
140
- <span className="text-xs text-muted-foreground mt-1 block">{screenshot.label || "Shift"}</span>
141
- </a>
142
- ))}
143
- </div>
144
- </div>
145
- )}
146
-
147
- {/* AI Agent Analysis Section */}
148
- <div className="bg-card border border-border rounded-lg p-6 mb-6">
149
- <div className="flex items-center justify-between mb-4">
150
- <h2 className="text-xl font-semibold">AI Agent Analysis</h2>
151
- {report.agentAnalysisModel && (
152
- <span className="text-xs text-muted-foreground bg-muted px-2 py-1 rounded">
153
- {report.agentAnalysisModel}
154
- </span>
155
- )}
156
- </div>
157
- <AgentAnalysis content={report.agentAnalysis} />
158
- </div>
159
-
160
- {/* Sandbox Info */}
161
- {(report.sandboxDevUrl || report.sandboxMcpUrl) && (
162
- <div className="bg-card border border-border rounded-lg p-6 mb-6">
163
- <h2 className="text-xl font-semibold mb-4">Sandbox Details</h2>
164
- <dl className="space-y-2 text-sm">
165
- {report.sandboxDevUrl && (
166
- <div className="flex gap-2">
167
- <dt className="text-muted-foreground w-24">Dev URL:</dt>
168
- <dd className="font-mono text-xs">{report.sandboxDevUrl}</dd>
169
- </div>
170
- )}
171
- {report.sandboxMcpUrl && (
172
- <div className="flex gap-2">
173
- <dt className="text-muted-foreground w-24">MCP URL:</dt>
174
- <dd className="font-mono text-xs">{report.sandboxMcpUrl}</dd>
175
- </div>
176
- )}
177
- </dl>
178
- </div>
179
- )}
180
-
181
- <div className="mt-6 flex gap-4">
182
- <a href="/workflows" className="px-4 py-2 border border-border rounded-md hover:bg-muted transition-colors">
183
- ← Back to Workflows
184
- </a>
185
- {run.prUrl && (
186
- <a
187
- href={run.prUrl}
188
- target="_blank"
189
- rel="noopener noreferrer"
190
- className="px-4 py-2 bg-primary text-primary-foreground rounded-md hover:bg-primary/90 transition-colors"
191
- >
192
- View Pull Request →
193
- </a>
194
- )}
195
- </div>
196
- </div>
197
- </div>
198
- )
199
- }
@@ -1,32 +0,0 @@
1
- "use client"
2
-
3
- import { useRouter } from "next/navigation"
4
- import { Suspense } from "react"
5
- import NewWorkflowModal from "../new-workflow-modal"
6
-
7
- interface UserInfo {
8
- id: string
9
- email: string
10
- name: string
11
- username: string
12
- }
13
-
14
- interface NewWorkflowClientProps {
15
- user: UserInfo
16
- }
17
-
18
- export default function NewWorkflowClient({ user }: NewWorkflowClientProps) {
19
- const router = useRouter()
20
-
21
- const handleClose = () => {
22
- router.push("/workflows")
23
- }
24
-
25
- return (
26
- <div>
27
- <Suspense fallback={<div>Loading...</div>}>
28
- <NewWorkflowModal isOpen={true} onClose={handleClose} userId={user.id} />
29
- </Suspense>
30
- </div>
31
- )
32
- }
@@ -1,13 +0,0 @@
1
- import { redirect } from "next/navigation"
2
- import { getCurrentUser } from "@/lib/auth"
3
- import NewWorkflowClient from "./new-workflow-client"
4
-
5
- export default async function NewWorkflowPage() {
6
- const user = await getCurrentUser()
7
-
8
- if (!user) {
9
- redirect("/api/auth/authorize")
10
- }
11
-
12
- return <NewWorkflowClient user={user} />
13
- }