@programinglive/dev-workflow-mcp-server 1.4.0 → 1.4.5
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/.github/workflows/npm-publish.yml +3 -0
- package/CHANGELOG.md +132 -2
- package/README.md +2 -1
- package/docs/PLESK_DEPLOYMENT.md +170 -0
- package/docs/WORKFLOW-BEST-PRACTICES.md +58 -0
- package/docs/product/PRD.md +1 -0
- package/docs/release-notes/RELEASE_NOTES.md +59 -0
- package/package.json +7 -6
- package/release-wrapper.js +68 -33
- package/scripts/update-release-notes.cjs +14 -18
- package/tailwind.config.js +2 -4
- package/tests/build.test.js +16 -3
- package/tests/handlers.test.js +78 -0
- package/tests/release-wrapper.test.js +2 -0
- package/tests/workflowState.test.js +7 -4
- package/tools/definitions.js +2 -2
- package/tools/handlers.js +2 -2
- package/vite.web.config.js +23 -0
- package/web/README.md +36 -0
- package/web/app/api/docs/route.ts +32 -0
- package/web/app/api/history/route.ts +19 -0
- package/web/app/api/npm-downloads/route.ts +21 -0
- package/web/app/api/summary/route.ts +15 -0
- package/web/app/api/version/route.ts +15 -0
- package/web/app/docs/page.tsx +202 -0
- package/web/app/favicon.ico +0 -0
- package/web/app/globals.css +91 -0
- package/web/app/layout.tsx +36 -0
- package/web/app/page.tsx +15 -0
- package/web/components/ApiReference.tsx +20 -0
- package/web/components/Features.tsx +61 -0
- package/web/components/Footer.tsx +9 -0
- package/web/components/Hero.tsx +97 -0
- package/web/components/History.tsx +143 -0
- package/web/components/Navbar.tsx +64 -0
- package/web/components/Terminal.tsx +114 -0
- package/web/eslint.config.mjs +18 -0
- package/web/lib/db.js +131 -0
- package/web/lib/docs.js +73 -0
- package/web/next.config.ts +8 -0
- package/web/package-lock.json +6971 -0
- package/web/package.json +29 -0
- package/web/postcss.config.mjs +9 -0
- package/web/public/assets/android-chrome-192x192.png +0 -0
- package/web/public/assets/android-chrome-512x512.png +0 -0
- package/web/public/assets/apple-touch-icon.png +0 -0
- package/web/public/assets/favicon-16x16.png +0 -0
- package/web/public/assets/favicon-32x32.png +0 -0
- package/web/public/assets/favicon.ico +0 -0
- package/web/public/assets/favicon.png +0 -0
- package/web/public/assets/logo.png +0 -0
- package/web/public/assets/og-preview.png +0 -0
- package/web/public/assets/site.webmanifest +1 -0
- package/web/public/file.svg +1 -0
- package/web/public/globe.svg +1 -0
- package/web/public/next.svg +1 -0
- package/web/public/vercel.svg +1 -0
- package/web/public/window.svg +1 -0
- package/web/server.js +30 -158
- package/web/tailwind.config.ts +19 -0
- package/web/tsconfig.json +42 -0
- package/web-legacy/public/assets/android-chrome-192x192.png +0 -0
- package/web-legacy/public/assets/android-chrome-512x512.png +0 -0
- package/web-legacy/public/assets/apple-touch-icon.png +0 -0
- package/web-legacy/public/assets/favicon-16x16.png +0 -0
- package/web-legacy/public/assets/favicon-32x32.png +0 -0
- package/web-legacy/public/assets/favicon.ico +0 -0
- package/web-legacy/public/assets/favicon.png +0 -0
- package/web-legacy/public/assets/logo.png +0 -0
- package/web-legacy/public/assets/og-preview.png +0 -0
- package/web-legacy/public/assets/site.webmanifest +1 -0
- package/{dist → web-legacy/public}/docs/EXAMPLES.html +87 -2
- package/{dist → web-legacy/public}/docs/GETTING-STARTED.html +87 -2
- package/{dist → web-legacy/public}/docs/README.html +87 -2
- package/web-legacy/public/docs/RELEASE_NOTES.html +275 -0
- package/{dist → web-legacy/public}/docs/TROUBLESHOOTING.html +87 -2
- package/{dist → web-legacy/public}/docs/WORKFLOW-TEMPLATES.html +87 -2
- package/{dist → web-legacy/public}/docs/web-dashboard.html +87 -2
- package/web-legacy/public/index.html +223 -0
- package/web-legacy/public/input.css +80 -0
- package/web-legacy/public/main.js +167 -0
- package/web-legacy/public/output.css +1559 -0
- package/web-legacy/server.js +207 -0
- package/workflow-state.js +11 -25
- package/dist/docs/RELEASE_NOTES.html +0 -167
- package/web/public/index.html +0 -1046
- package/web/public/input.css +0 -3
- package/web/public/output.css +0 -1
package/web/package.json
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "web",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"private": true,
|
|
5
|
+
"scripts": {
|
|
6
|
+
"dev": "next dev",
|
|
7
|
+
"build": "next build",
|
|
8
|
+
"start": "next start",
|
|
9
|
+
"lint": "eslint"
|
|
10
|
+
},
|
|
11
|
+
"dependencies": {
|
|
12
|
+
"better-sqlite3": "^12.4.6",
|
|
13
|
+
"lucide-react": "^0.555.0",
|
|
14
|
+
"next": "16.0.4",
|
|
15
|
+
"react": "19.2.0",
|
|
16
|
+
"react-dom": "19.2.0"
|
|
17
|
+
},
|
|
18
|
+
"devDependencies": {
|
|
19
|
+
"@types/node": "^20",
|
|
20
|
+
"@types/react": "^19",
|
|
21
|
+
"@types/react-dom": "^19",
|
|
22
|
+
"autoprefixer": "^10.4.22",
|
|
23
|
+
"eslint": "^9",
|
|
24
|
+
"eslint-config-next": "16.0.4",
|
|
25
|
+
"postcss": "^8.5.6",
|
|
26
|
+
"tailwindcss": "^3.4.18",
|
|
27
|
+
"typescript": "^5"
|
|
28
|
+
}
|
|
29
|
+
}
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"name":"","short_name":"","icons":[{"src":"/android-chrome-192x192.png","sizes":"192x192","type":"image/png"},{"src":"/android-chrome-512x512.png","sizes":"512x512","type":"image/png"}],"theme_color":"#ffffff","background_color":"#ffffff","display":"standalone"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg fill="none" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg"><path d="M14.5 13.5V5.41a1 1 0 0 0-.3-.7L9.8.29A1 1 0 0 0 9.08 0H1.5v13.5A2.5 2.5 0 0 0 4 16h8a2.5 2.5 0 0 0 2.5-2.5m-1.5 0v-7H8v-5H3v12a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1M9.5 5V2.12L12.38 5zM5.13 5h-.62v1.25h2.12V5zm-.62 3h7.12v1.25H4.5zm.62 3h-.62v1.25h7.12V11z" clip-rule="evenodd" fill="#666" fill-rule="evenodd"/></svg>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg fill="none" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><g clip-path="url(#a)"><path fill-rule="evenodd" clip-rule="evenodd" d="M10.27 14.1a6.5 6.5 0 0 0 3.67-3.45q-1.24.21-2.7.34-.31 1.83-.97 3.1M8 16A8 8 0 1 0 8 0a8 8 0 0 0 0 16m.48-1.52a7 7 0 0 1-.96 0H7.5a4 4 0 0 1-.84-1.32q-.38-.89-.63-2.08a40 40 0 0 0 3.92 0q-.25 1.2-.63 2.08a4 4 0 0 1-.84 1.31zm2.94-4.76q1.66-.15 2.95-.43a7 7 0 0 0 0-2.58q-1.3-.27-2.95-.43a18 18 0 0 1 0 3.44m-1.27-3.54a17 17 0 0 1 0 3.64 39 39 0 0 1-4.3 0 17 17 0 0 1 0-3.64 39 39 0 0 1 4.3 0m1.1-1.17q1.45.13 2.69.34a6.5 6.5 0 0 0-3.67-3.44q.65 1.26.98 3.1M8.48 1.5l.01.02q.41.37.84 1.31.38.89.63 2.08a40 40 0 0 0-3.92 0q.25-1.2.63-2.08a4 4 0 0 1 .85-1.32 7 7 0 0 1 .96 0m-2.75.4a6.5 6.5 0 0 0-3.67 3.44 29 29 0 0 1 2.7-.34q.31-1.83.97-3.1M4.58 6.28q-1.66.16-2.95.43a7 7 0 0 0 0 2.58q1.3.27 2.95.43a18 18 0 0 1 0-3.44m.17 4.71q-1.45-.12-2.69-.34a6.5 6.5 0 0 0 3.67 3.44q-.65-1.27-.98-3.1" fill="#666"/></g><defs><clipPath id="a"><path fill="#fff" d="M0 0h16v16H0z"/></clipPath></defs></svg>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 394 80"><path fill="#000" d="M262 0h68.5v12.7h-27.2v66.6h-13.6V12.7H262V0ZM149 0v12.7H94v20.4h44.3v12.6H94v21h55v12.6H80.5V0h68.7zm34.3 0h-17.8l63.8 79.4h17.9l-32-39.7 32-39.6h-17.9l-23 28.6-23-28.6zm18.3 56.7-9-11-27.1 33.7h17.8l18.3-22.7z"/><path fill="#000" d="M81 79.3 17 0H0v79.3h13.6V17l50.2 62.3H81Zm252.6-.4c-1 0-1.8-.4-2.5-1s-1.1-1.6-1.1-2.6.3-1.8 1-2.5 1.6-1 2.6-1 1.8.3 2.5 1a3.4 3.4 0 0 1 .6 4.3 3.7 3.7 0 0 1-3 1.8zm23.2-33.5h6v23.3c0 2.1-.4 4-1.3 5.5a9.1 9.1 0 0 1-3.8 3.5c-1.6.8-3.5 1.3-5.7 1.3-2 0-3.7-.4-5.3-1s-2.8-1.8-3.7-3.2c-.9-1.3-1.4-3-1.4-5h6c.1.8.3 1.6.7 2.2s1 1.2 1.6 1.5c.7.4 1.5.5 2.4.5 1 0 1.8-.2 2.4-.6a4 4 0 0 0 1.6-1.8c.3-.8.5-1.8.5-3V45.5zm30.9 9.1a4.4 4.4 0 0 0-2-3.3 7.5 7.5 0 0 0-4.3-1.1c-1.3 0-2.4.2-3.3.5-.9.4-1.6 1-2 1.6a3.5 3.5 0 0 0-.3 4c.3.5.7.9 1.3 1.2l1.8 1 2 .5 3.2.8c1.3.3 2.5.7 3.7 1.2a13 13 0 0 1 3.2 1.8 8.1 8.1 0 0 1 3 6.5c0 2-.5 3.7-1.5 5.1a10 10 0 0 1-4.4 3.5c-1.8.8-4.1 1.2-6.8 1.2-2.6 0-4.9-.4-6.8-1.2-2-.8-3.4-2-4.5-3.5a10 10 0 0 1-1.7-5.6h6a5 5 0 0 0 3.5 4.6c1 .4 2.2.6 3.4.6 1.3 0 2.5-.2 3.5-.6 1-.4 1.8-1 2.4-1.7a4 4 0 0 0 .8-2.4c0-.9-.2-1.6-.7-2.2a11 11 0 0 0-2.1-1.4l-3.2-1-3.8-1c-2.8-.7-5-1.7-6.6-3.2a7.2 7.2 0 0 1-2.4-5.7 8 8 0 0 1 1.7-5 10 10 0 0 1 4.3-3.5c2-.8 4-1.2 6.4-1.2 2.3 0 4.4.4 6.2 1.2 1.8.8 3.2 2 4.3 3.4 1 1.4 1.5 3 1.5 5h-5.8z"/></svg>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg fill="none" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1155 1000"><path d="m577.3 0 577.4 1000H0z" fill="#fff"/></svg>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg fill="none" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><path fill-rule="evenodd" clip-rule="evenodd" d="M1.5 2.5h13v10a1 1 0 0 1-1 1h-11a1 1 0 0 1-1-1zM0 1h16v11.5a2.5 2.5 0 0 1-2.5 2.5h-11A2.5 2.5 0 0 1 0 12.5zm3.75 4.5a.75.75 0 1 0 0-1.5.75.75 0 0 0 0 1.5M7 4.75a.75.75 0 1 1-1.5 0 .75.75 0 0 1 1.5 0m1.75.75a.75.75 0 1 0 0-1.5.75.75 0 0 0 0 1.5" fill="#666"/></svg>
|
package/web/server.js
CHANGED
|
@@ -1,159 +1,31 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
const
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
markdown: join(projectRoot, "docs", "antigravity", "GETTING-STARTED.md"),
|
|
23
|
-
html: join(projectRoot, "dist", "docs", "GETTING-STARTED.html"),
|
|
24
|
-
},
|
|
25
|
-
"EXAMPLES.md": {
|
|
26
|
-
markdown: join(projectRoot, "docs", "antigravity", "EXAMPLES.md"),
|
|
27
|
-
html: join(projectRoot, "dist", "docs", "EXAMPLES.html"),
|
|
28
|
-
},
|
|
29
|
-
"WORKFLOW-TEMPLATES.md": {
|
|
30
|
-
markdown: join(projectRoot, "docs", "antigravity", "WORKFLOW-TEMPLATES.md"),
|
|
31
|
-
html: join(projectRoot, "dist", "docs", "WORKFLOW-TEMPLATES.html"),
|
|
32
|
-
},
|
|
33
|
-
"TROUBLESHOOTING.md": {
|
|
34
|
-
markdown: join(projectRoot, "docs", "antigravity", "TROUBLESHOOTING.md"),
|
|
35
|
-
html: join(projectRoot, "dist", "docs", "TROUBLESHOOTING.html"),
|
|
36
|
-
},
|
|
37
|
-
"RELEASE_NOTES.md": {
|
|
38
|
-
markdown: join(projectRoot, "docs", "release-notes", "RELEASE_NOTES.md"),
|
|
39
|
-
html: join(projectRoot, "dist", "docs", "RELEASE_NOTES.html"),
|
|
40
|
-
},
|
|
41
|
-
};
|
|
42
|
-
|
|
43
|
-
async function resolveDocContent(docKey) {
|
|
44
|
-
const entry = docSources[docKey];
|
|
45
|
-
if (!entry) {
|
|
46
|
-
return { exists: false };
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
// Try HTML first, fall back to Markdown in development or if HTML missing.
|
|
50
|
-
const candidates = [entry.html, entry.markdown];
|
|
51
|
-
for (const candidate of candidates) {
|
|
52
|
-
try {
|
|
53
|
-
await access(candidate);
|
|
54
|
-
const content = await readFile(candidate, "utf-8");
|
|
55
|
-
const format = candidate.endsWith(".html") ? "html" : "markdown";
|
|
56
|
-
return { exists: true, content, format };
|
|
57
|
-
} catch {
|
|
58
|
-
// try next candidate
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
return { exists: false };
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
function getPreferredPort() {
|
|
66
|
-
const fromEnv = process.env.PORT || process.env.DEV_WORKFLOW_WEB_PORT;
|
|
67
|
-
|
|
68
|
-
if (!fromEnv) {
|
|
69
|
-
return null;
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
const parsed = Number(fromEnv);
|
|
73
|
-
return Number.isFinite(parsed) && parsed > 0 ? parsed : null;
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
async function start() {
|
|
77
|
-
const preferred = getPreferredPort();
|
|
78
|
-
const PORT = preferred ?? await getPort({ port: 3111 });
|
|
79
|
-
|
|
80
|
-
const server = createServer(async (req, res) => {
|
|
81
|
-
try {
|
|
82
|
-
const url = new URL(req.url, `http://${req.headers.host}`);
|
|
83
|
-
const userId = url.searchParams.get("user") || "default";
|
|
84
|
-
|
|
85
|
-
if (req.method === "GET" && url.pathname === "/output.css") {
|
|
86
|
-
const css = await readFile(join(__dirname, "public", "output.css"), "utf-8");
|
|
87
|
-
res.writeHead(200, { "Content-Type": "text/css" });
|
|
88
|
-
res.end(css);
|
|
89
|
-
} else if (req.method === "GET" && url.pathname === "/") {
|
|
90
|
-
const html = await readFile(join(__dirname, "public", "index.html"), "utf-8");
|
|
91
|
-
res.writeHead(200, { "Content-Type": "text/html" });
|
|
92
|
-
res.end(html);
|
|
93
|
-
} else if (req.method === "GET" && url.pathname === "/api/summary") {
|
|
94
|
-
const summary = getSummaryForUser(userId);
|
|
95
|
-
res.writeHead(200, { "Content-Type": "application/json" });
|
|
96
|
-
res.end(JSON.stringify({ summary }));
|
|
97
|
-
} else if (req.method === "GET" && url.pathname === "/api/history") {
|
|
98
|
-
const page = Number(url.searchParams.get("page") || "1");
|
|
99
|
-
const pageSize = Number(url.searchParams.get("pageSize") || "20");
|
|
100
|
-
const startDate = url.searchParams.get("startDate") || undefined;
|
|
101
|
-
const endDate = url.searchParams.get("endDate") || undefined;
|
|
102
|
-
const history = getHistoryForUser(userId, { page, pageSize, startDate, endDate });
|
|
103
|
-
res.writeHead(200, { "Content-Type": "application/json" });
|
|
104
|
-
res.end(JSON.stringify(history));
|
|
105
|
-
} else if (req.method === "GET" && url.pathname === "/api/history-summary") {
|
|
106
|
-
const startDate = url.searchParams.get("startDate") || undefined;
|
|
107
|
-
const endDate = url.searchParams.get("endDate") || undefined;
|
|
108
|
-
const frequency = url.searchParams.get("frequency") || "daily";
|
|
109
|
-
const summary = getHistorySummary(userId, { startDate, endDate, frequency });
|
|
110
|
-
res.writeHead(200, { "Content-Type": "application/json" });
|
|
111
|
-
res.end(JSON.stringify({ summary }));
|
|
112
|
-
} else if (req.method === "GET" && url.pathname === "/api/docs") {
|
|
113
|
-
const rawDocKey = url.searchParams.get("doc");
|
|
114
|
-
const availableDocs = Object.keys(docSources);
|
|
115
|
-
|
|
116
|
-
if (!rawDocKey) {
|
|
117
|
-
res.writeHead(200, { "Content-Type": "application/json" });
|
|
118
|
-
res.end(JSON.stringify({ docs: availableDocs }));
|
|
119
|
-
return;
|
|
1
|
+
const { createServer } = require('http');
|
|
2
|
+
const { parse } = require('url');
|
|
3
|
+
const next = require('next');
|
|
4
|
+
|
|
5
|
+
const dev = process.env.NODE_ENV !== 'production';
|
|
6
|
+
const hostname = 'localhost';
|
|
7
|
+
const port = process.env.PORT || 3000;
|
|
8
|
+
|
|
9
|
+
// Initialize Next.js app
|
|
10
|
+
const app = next({ dev, hostname, port });
|
|
11
|
+
const handle = app.getRequestHandler();
|
|
12
|
+
|
|
13
|
+
app.prepare().then(() => {
|
|
14
|
+
createServer(async (req, res) => {
|
|
15
|
+
try {
|
|
16
|
+
const parsedUrl = parse(req.url, true);
|
|
17
|
+
await handle(req, res, parsedUrl);
|
|
18
|
+
} catch (err) {
|
|
19
|
+
console.error('Error occurred handling', req.url, err);
|
|
20
|
+
res.statusCode = 500;
|
|
21
|
+
res.end('internal server error');
|
|
120
22
|
}
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
}
|
|
129
|
-
|
|
130
|
-
const result = await resolveDocContent(resolvedKey);
|
|
131
|
-
if (!result.exists) {
|
|
132
|
-
res.writeHead(500, { "Content-Type": "application/json" });
|
|
133
|
-
res.end(JSON.stringify({ error: "Document asset is missing" }));
|
|
134
|
-
return;
|
|
135
|
-
}
|
|
136
|
-
|
|
137
|
-
res.writeHead(200, { "Content-Type": "application/json" });
|
|
138
|
-
res.end(JSON.stringify({ doc: resolvedKey, content: result.content, format: result.format }));
|
|
139
|
-
} else if (req.method === "GET" && url.pathname === "/api/version") {
|
|
140
|
-
const packageJson = await readFile(join(projectRoot, "package.json"), "utf-8");
|
|
141
|
-
const { version } = JSON.parse(packageJson);
|
|
142
|
-
res.writeHead(200, { "Content-Type": "application/json" });
|
|
143
|
-
res.end(JSON.stringify({ version }));
|
|
144
|
-
} else {
|
|
145
|
-
res.writeHead(404, { "Content-Type": "text/plain" });
|
|
146
|
-
res.end("Not found");
|
|
147
|
-
}
|
|
148
|
-
} catch (err) {
|
|
149
|
-
res.writeHead(500, { "Content-Type": "text/plain" });
|
|
150
|
-
res.end(err.message);
|
|
151
|
-
}
|
|
152
|
-
});
|
|
153
|
-
|
|
154
|
-
server.listen(PORT, () => {
|
|
155
|
-
console.log(`🌐 Dev Workflow Dashboard running at http://localhost:${PORT}`);
|
|
156
|
-
});
|
|
157
|
-
}
|
|
158
|
-
|
|
159
|
-
start();
|
|
23
|
+
})
|
|
24
|
+
.once('error', (err) => {
|
|
25
|
+
console.error(err);
|
|
26
|
+
process.exit(1);
|
|
27
|
+
})
|
|
28
|
+
.listen(port, () => {
|
|
29
|
+
console.log(`> Ready on http://${hostname}:${port}`);
|
|
30
|
+
});
|
|
31
|
+
});
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { Config } from "tailwindcss";
|
|
2
|
+
|
|
3
|
+
const config: Config = {
|
|
4
|
+
content: [
|
|
5
|
+
"./pages/**/*.{js,ts,jsx,tsx,mdx}",
|
|
6
|
+
"./components/**/*.{js,ts,jsx,tsx,mdx}",
|
|
7
|
+
"./app/**/*.{js,ts,jsx,tsx,mdx}",
|
|
8
|
+
],
|
|
9
|
+
theme: {
|
|
10
|
+
extend: {
|
|
11
|
+
colors: {
|
|
12
|
+
background: "var(--background)",
|
|
13
|
+
foreground: "var(--foreground)",
|
|
14
|
+
},
|
|
15
|
+
},
|
|
16
|
+
},
|
|
17
|
+
plugins: [],
|
|
18
|
+
};
|
|
19
|
+
export default config;
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
{
|
|
2
|
+
"compilerOptions": {
|
|
3
|
+
"target": "ES2017",
|
|
4
|
+
"lib": [
|
|
5
|
+
"dom",
|
|
6
|
+
"dom.iterable",
|
|
7
|
+
"esnext"
|
|
8
|
+
],
|
|
9
|
+
"allowJs": true,
|
|
10
|
+
"skipLibCheck": true,
|
|
11
|
+
"strict": true,
|
|
12
|
+
"noEmit": true,
|
|
13
|
+
"esModuleInterop": true,
|
|
14
|
+
"module": "esnext",
|
|
15
|
+
"moduleResolution": "bundler",
|
|
16
|
+
"resolveJsonModule": true,
|
|
17
|
+
"isolatedModules": true,
|
|
18
|
+
"jsx": "react-jsx",
|
|
19
|
+
"incremental": true,
|
|
20
|
+
"plugins": [
|
|
21
|
+
{
|
|
22
|
+
"name": "next"
|
|
23
|
+
}
|
|
24
|
+
],
|
|
25
|
+
"paths": {
|
|
26
|
+
"@/*": [
|
|
27
|
+
"./*"
|
|
28
|
+
]
|
|
29
|
+
}
|
|
30
|
+
},
|
|
31
|
+
"include": [
|
|
32
|
+
"next-env.d.ts",
|
|
33
|
+
"**/*.ts",
|
|
34
|
+
"**/*.tsx",
|
|
35
|
+
".next/types/**/*.ts",
|
|
36
|
+
".next/dev/types/**/*.ts",
|
|
37
|
+
"**/*.mts"
|
|
38
|
+
],
|
|
39
|
+
"exclude": [
|
|
40
|
+
"node_modules"
|
|
41
|
+
]
|
|
42
|
+
}
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"name":"","short_name":"","icons":[{"src":"/android-chrome-192x192.png","sizes":"192x192","type":"image/png"},{"src":"/android-chrome-512x512.png","sizes":"512x512","type":"image/png"}],"theme_color":"#ffffff","background_color":"#ffffff","display":"standalone"}
|
|
@@ -1,5 +1,79 @@
|
|
|
1
|
-
|
|
2
|
-
<
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="UTF-8">
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
6
|
+
<title>Practical Examples for Dev-Workflow MCP Server - Dev Workflow</title>
|
|
7
|
+
<link rel="icon" type="image/png" href="/assets/favicon.png">
|
|
8
|
+
<meta property="og:type" content="website">
|
|
9
|
+
<meta property="og:url" content="https://commiter.programinglive.com/docs/EXAMPLES.md">
|
|
10
|
+
<meta property="og:title" content="Practical Examples for Dev-Workflow MCP Server - Dev Workflow">
|
|
11
|
+
<meta property="og:description" content="Detailed documentation for Dev Workflow MCP Server commands and usage.">
|
|
12
|
+
<meta property="og:image" content="/assets/og-preview.png">
|
|
13
|
+
<meta property="twitter:card" content="summary_large_image">
|
|
14
|
+
<meta property="twitter:url" content="https://commiter.programinglive.com/docs/EXAMPLES.md">
|
|
15
|
+
<meta property="twitter:title" content="Practical Examples for Dev-Workflow MCP Server - Dev Workflow">
|
|
16
|
+
<meta property="twitter:description" content="Detailed documentation for Dev Workflow MCP Server commands and usage.">
|
|
17
|
+
<meta property="twitter:image" content="/assets/og-preview.png">
|
|
18
|
+
<link rel="stylesheet" href="/output.css">
|
|
19
|
+
<script src="https://unpkg.com/lucide@latest"></script>
|
|
20
|
+
</head>
|
|
21
|
+
<body class="bg-[#0a0a0f] text-white font-sans antialiased selection:bg-primary/30 selection:text-white min-h-screen flex flex-col">
|
|
22
|
+
<header class="fixed top-0 left-0 right-0 z-50 border-b border-white/10 bg-[#0a0a0f]/80 backdrop-blur-md">
|
|
23
|
+
<div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 h-16 flex items-center justify-between">
|
|
24
|
+
<div class="flex items-center gap-3">
|
|
25
|
+
<a href="/" class="flex items-center gap-3 hover:opacity-80 transition-opacity">
|
|
26
|
+
<div class="w-10 h-10 rounded-lg overflow-hidden border border-white/10 shadow-lg shadow-primary/20">
|
|
27
|
+
<img src="/assets/logo.png" alt="Dev Workflow Logo" class="w-full h-full object-cover">
|
|
28
|
+
</div>
|
|
29
|
+
<div>
|
|
30
|
+
<h1 class="font-bold text-lg tracking-tight text-white">Dev Workflow</h1>
|
|
31
|
+
<div class="flex items-center gap-2 text-xs text-gray-400">
|
|
32
|
+
<span class="w-2 h-2 rounded-full bg-emerald-500 shadow-[0_0_8px_rgba(16,185,129,0.5)]"></span>
|
|
33
|
+
<span>Documentation</span>
|
|
34
|
+
</div>
|
|
35
|
+
</div>
|
|
36
|
+
</a>
|
|
37
|
+
</div>
|
|
38
|
+
<div class="flex items-center gap-4">
|
|
39
|
+
<a href="/" class="flex items-center gap-2 px-4 py-2 bg-white/5 hover:bg-white/10 border border-white/10 rounded-full text-sm font-medium transition-all group">
|
|
40
|
+
<i data-lucide="layout-dashboard" class="w-4 h-4 text-gray-400 group-hover:text-white transition-colors"></i>
|
|
41
|
+
<span>Dashboard</span>
|
|
42
|
+
</a>
|
|
43
|
+
</div>
|
|
44
|
+
</div>
|
|
45
|
+
</header>
|
|
46
|
+
|
|
47
|
+
<div class="flex-1 max-w-7xl mx-auto w-full px-4 sm:px-6 lg:px-8 pt-24 pb-12 flex gap-8">
|
|
48
|
+
<aside class="hidden lg:block w-64 flex-shrink-0 fixed h-[calc(100vh-6rem)] overflow-y-auto pr-4 custom-scrollbar">
|
|
49
|
+
<nav class="space-y-1">
|
|
50
|
+
<a href="/" class="flex items-center gap-3 px-4 py-3 text-sm font-medium rounded-lg text-gray-400 hover:text-white hover:bg-white/5 transition-colors">
|
|
51
|
+
<i data-lucide="arrow-left" class="w-4 h-4"></i>
|
|
52
|
+
Back to Dashboard
|
|
53
|
+
</a>
|
|
54
|
+
</nav>
|
|
55
|
+
<div class="mt-8 pt-8 border-t border-white/10">
|
|
56
|
+
<h3 class="px-4 text-xs font-semibold text-gray-500 uppercase tracking-wider mb-2">Documentation</h3>
|
|
57
|
+
<div class="space-y-1">
|
|
58
|
+
<a href="/docs/README.html" class="doc-link block px-4 py-2 text-sm font-medium text-gray-400 hover:text-white hover:bg-white/5 rounded-lg transition-colors ">README</a>
|
|
59
|
+
<a href="/docs/web-dashboard.html" class="doc-link block px-4 py-2 text-sm font-medium text-gray-400 hover:text-white hover:bg-white/5 rounded-lg transition-colors ">web dashboard</a>
|
|
60
|
+
<a href="/docs/GETTING-STARTED.html" class="doc-link block px-4 py-2 text-sm font-medium text-gray-400 hover:text-white hover:bg-white/5 rounded-lg transition-colors ">GETTING STARTED</a>
|
|
61
|
+
<a href="/docs/EXAMPLES.html" class="doc-link block px-4 py-2 text-sm font-medium hover:text-white hover:bg-white/5 rounded-lg transition-colors bg-white/5 text-white ring-1 ring-white/5">EXAMPLES</a>
|
|
62
|
+
<a href="/docs/WORKFLOW-TEMPLATES.html" class="doc-link block px-4 py-2 text-sm font-medium text-gray-400 hover:text-white hover:bg-white/5 rounded-lg transition-colors ">WORKFLOW TEMPLATES</a>
|
|
63
|
+
<a href="/docs/TROUBLESHOOTING.html" class="doc-link block px-4 py-2 text-sm font-medium text-gray-400 hover:text-white hover:bg-white/5 rounded-lg transition-colors ">TROUBLESHOOTING</a>
|
|
64
|
+
<a href="/docs/RELEASE_NOTES.html" class="doc-link block px-4 py-2 text-sm font-medium text-gray-400 hover:text-white hover:bg-white/5 rounded-lg transition-colors ">RELEASE_NOTES</a>
|
|
65
|
+
</div>
|
|
66
|
+
</div>
|
|
67
|
+
</aside>
|
|
68
|
+
|
|
69
|
+
<main class="flex-1 lg:pl-72 min-w-0">
|
|
70
|
+
<div class="bg-surface border border-white/10 rounded-xl p-8 backdrop-blur-sm">
|
|
71
|
+
<header class="mb-8 border-b border-white/10 pb-6">
|
|
72
|
+
<h1 class="text-3xl font-bold text-white mb-2">Practical Examples for Dev-Workflow MCP Server</h1>
|
|
73
|
+
<p class="text-gray-400 font-mono text-sm">EXAMPLES.md</p>
|
|
74
|
+
</header>
|
|
75
|
+
<article class="prose prose-invert prose-lg max-w-none">
|
|
76
|
+
<p>This document provides real-world examples of using the dev-workflow MCP server in Antigravity.</p>
|
|
3
77
|
<h2>Table of Contents</h2>
|
|
4
78
|
<ul>
|
|
5
79
|
<li><a href="#simple-feature-development">Simple Feature Development</a></li>
|
|
@@ -409,3 +483,14 @@ Next: Create documentation
|
|
|
409
483
|
</ul>
|
|
410
484
|
<hr>
|
|
411
485
|
<p><strong>Happy coding with disciplined workflows!</strong> 🎯</p>
|
|
486
|
+
|
|
487
|
+
</article>
|
|
488
|
+
</div>
|
|
489
|
+
</main>
|
|
490
|
+
</div>
|
|
491
|
+
|
|
492
|
+
<script>
|
|
493
|
+
lucide.createIcons();
|
|
494
|
+
</script>
|
|
495
|
+
</body>
|
|
496
|
+
</html>
|
|
@@ -1,5 +1,79 @@
|
|
|
1
|
-
|
|
2
|
-
<
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="UTF-8">
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
6
|
+
<title>Getting Started with Dev-Workflow MCP Server in Antigravity - Dev Workflow</title>
|
|
7
|
+
<link rel="icon" type="image/png" href="/assets/favicon.png">
|
|
8
|
+
<meta property="og:type" content="website">
|
|
9
|
+
<meta property="og:url" content="https://commiter.programinglive.com/docs/GETTING-STARTED.md">
|
|
10
|
+
<meta property="og:title" content="Getting Started with Dev-Workflow MCP Server in Antigravity - Dev Workflow">
|
|
11
|
+
<meta property="og:description" content="Detailed documentation for Dev Workflow MCP Server commands and usage.">
|
|
12
|
+
<meta property="og:image" content="/assets/og-preview.png">
|
|
13
|
+
<meta property="twitter:card" content="summary_large_image">
|
|
14
|
+
<meta property="twitter:url" content="https://commiter.programinglive.com/docs/GETTING-STARTED.md">
|
|
15
|
+
<meta property="twitter:title" content="Getting Started with Dev-Workflow MCP Server in Antigravity - Dev Workflow">
|
|
16
|
+
<meta property="twitter:description" content="Detailed documentation for Dev Workflow MCP Server commands and usage.">
|
|
17
|
+
<meta property="twitter:image" content="/assets/og-preview.png">
|
|
18
|
+
<link rel="stylesheet" href="/output.css">
|
|
19
|
+
<script src="https://unpkg.com/lucide@latest"></script>
|
|
20
|
+
</head>
|
|
21
|
+
<body class="bg-[#0a0a0f] text-white font-sans antialiased selection:bg-primary/30 selection:text-white min-h-screen flex flex-col">
|
|
22
|
+
<header class="fixed top-0 left-0 right-0 z-50 border-b border-white/10 bg-[#0a0a0f]/80 backdrop-blur-md">
|
|
23
|
+
<div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 h-16 flex items-center justify-between">
|
|
24
|
+
<div class="flex items-center gap-3">
|
|
25
|
+
<a href="/" class="flex items-center gap-3 hover:opacity-80 transition-opacity">
|
|
26
|
+
<div class="w-10 h-10 rounded-lg overflow-hidden border border-white/10 shadow-lg shadow-primary/20">
|
|
27
|
+
<img src="/assets/logo.png" alt="Dev Workflow Logo" class="w-full h-full object-cover">
|
|
28
|
+
</div>
|
|
29
|
+
<div>
|
|
30
|
+
<h1 class="font-bold text-lg tracking-tight text-white">Dev Workflow</h1>
|
|
31
|
+
<div class="flex items-center gap-2 text-xs text-gray-400">
|
|
32
|
+
<span class="w-2 h-2 rounded-full bg-emerald-500 shadow-[0_0_8px_rgba(16,185,129,0.5)]"></span>
|
|
33
|
+
<span>Documentation</span>
|
|
34
|
+
</div>
|
|
35
|
+
</div>
|
|
36
|
+
</a>
|
|
37
|
+
</div>
|
|
38
|
+
<div class="flex items-center gap-4">
|
|
39
|
+
<a href="/" class="flex items-center gap-2 px-4 py-2 bg-white/5 hover:bg-white/10 border border-white/10 rounded-full text-sm font-medium transition-all group">
|
|
40
|
+
<i data-lucide="layout-dashboard" class="w-4 h-4 text-gray-400 group-hover:text-white transition-colors"></i>
|
|
41
|
+
<span>Dashboard</span>
|
|
42
|
+
</a>
|
|
43
|
+
</div>
|
|
44
|
+
</div>
|
|
45
|
+
</header>
|
|
46
|
+
|
|
47
|
+
<div class="flex-1 max-w-7xl mx-auto w-full px-4 sm:px-6 lg:px-8 pt-24 pb-12 flex gap-8">
|
|
48
|
+
<aside class="hidden lg:block w-64 flex-shrink-0 fixed h-[calc(100vh-6rem)] overflow-y-auto pr-4 custom-scrollbar">
|
|
49
|
+
<nav class="space-y-1">
|
|
50
|
+
<a href="/" class="flex items-center gap-3 px-4 py-3 text-sm font-medium rounded-lg text-gray-400 hover:text-white hover:bg-white/5 transition-colors">
|
|
51
|
+
<i data-lucide="arrow-left" class="w-4 h-4"></i>
|
|
52
|
+
Back to Dashboard
|
|
53
|
+
</a>
|
|
54
|
+
</nav>
|
|
55
|
+
<div class="mt-8 pt-8 border-t border-white/10">
|
|
56
|
+
<h3 class="px-4 text-xs font-semibold text-gray-500 uppercase tracking-wider mb-2">Documentation</h3>
|
|
57
|
+
<div class="space-y-1">
|
|
58
|
+
<a href="/docs/README.html" class="doc-link block px-4 py-2 text-sm font-medium text-gray-400 hover:text-white hover:bg-white/5 rounded-lg transition-colors ">README</a>
|
|
59
|
+
<a href="/docs/web-dashboard.html" class="doc-link block px-4 py-2 text-sm font-medium text-gray-400 hover:text-white hover:bg-white/5 rounded-lg transition-colors ">web dashboard</a>
|
|
60
|
+
<a href="/docs/GETTING-STARTED.html" class="doc-link block px-4 py-2 text-sm font-medium hover:text-white hover:bg-white/5 rounded-lg transition-colors bg-white/5 text-white ring-1 ring-white/5">GETTING STARTED</a>
|
|
61
|
+
<a href="/docs/EXAMPLES.html" class="doc-link block px-4 py-2 text-sm font-medium text-gray-400 hover:text-white hover:bg-white/5 rounded-lg transition-colors ">EXAMPLES</a>
|
|
62
|
+
<a href="/docs/WORKFLOW-TEMPLATES.html" class="doc-link block px-4 py-2 text-sm font-medium text-gray-400 hover:text-white hover:bg-white/5 rounded-lg transition-colors ">WORKFLOW TEMPLATES</a>
|
|
63
|
+
<a href="/docs/TROUBLESHOOTING.html" class="doc-link block px-4 py-2 text-sm font-medium text-gray-400 hover:text-white hover:bg-white/5 rounded-lg transition-colors ">TROUBLESHOOTING</a>
|
|
64
|
+
<a href="/docs/RELEASE_NOTES.html" class="doc-link block px-4 py-2 text-sm font-medium text-gray-400 hover:text-white hover:bg-white/5 rounded-lg transition-colors ">RELEASE_NOTES</a>
|
|
65
|
+
</div>
|
|
66
|
+
</div>
|
|
67
|
+
</aside>
|
|
68
|
+
|
|
69
|
+
<main class="flex-1 lg:pl-72 min-w-0">
|
|
70
|
+
<div class="bg-surface border border-white/10 rounded-xl p-8 backdrop-blur-sm">
|
|
71
|
+
<header class="mb-8 border-b border-white/10 pb-6">
|
|
72
|
+
<h1 class="text-3xl font-bold text-white mb-2">Getting Started with Dev-Workflow MCP Server in Antigravity</h1>
|
|
73
|
+
<p class="text-gray-400 font-mono text-sm">GETTING-STARTED.md</p>
|
|
74
|
+
</header>
|
|
75
|
+
<article class="prose prose-invert prose-lg max-w-none">
|
|
76
|
+
<p>This guide will help you set up and use the dev-workflow MCP server in the Antigravity text editor.</p>
|
|
3
77
|
<h2>What is Dev-Workflow MCP Server?</h2>
|
|
4
78
|
<p>The dev-workflow MCP server is a development discipline enforcer that guides you through proper software development workflows. It ensures you:</p>
|
|
5
79
|
<ul>
|
|
@@ -231,3 +305,14 @@ export DEV_WORKFLOW_USER_ID=windsurf-user
|
|
|
231
305
|
</ul>
|
|
232
306
|
<hr>
|
|
233
307
|
<p><strong>Ready to enforce development discipline with Antigravity? Start your first workflow now!</strong> 🚀</p>
|
|
308
|
+
|
|
309
|
+
</article>
|
|
310
|
+
</div>
|
|
311
|
+
</main>
|
|
312
|
+
</div>
|
|
313
|
+
|
|
314
|
+
<script>
|
|
315
|
+
lucide.createIcons();
|
|
316
|
+
</script>
|
|
317
|
+
</body>
|
|
318
|
+
</html>
|