roadmap-skill 0.2.6 → 0.2.8
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/README.md +1 -5
- package/README.zh.md +1 -5
- package/dist/index.js +22 -6
- package/dist/index.js.map +1 -1
- package/dist/web/app/assets/main-DUDWZy_5.js +9 -0
- package/dist/web/app/index.html +1 -1
- package/dist/web/server.js +13 -3
- package/dist/web/server.js.map +1 -1
- package/package.json +1 -1
- package/dist/web/app/assets/main-BJPGJG4y.js +0 -9
package/README.md
CHANGED
|
@@ -41,10 +41,7 @@
|
|
|
41
41
|
## Quick Start (Zero Config)
|
|
42
42
|
|
|
43
43
|
```bash
|
|
44
|
-
#
|
|
45
|
-
npx roadmap-skill-web
|
|
46
|
-
|
|
47
|
-
# Option 2: Integrate with your AI assistant (MCP config below)
|
|
44
|
+
# Integrate with your AI assistant (MCP config below)
|
|
48
45
|
```
|
|
49
46
|
|
|
50
47
|
<details>
|
|
@@ -321,7 +318,6 @@ npm install -g roadmap-skill
|
|
|
321
318
|
### Use Without Installing
|
|
322
319
|
|
|
323
320
|
```bash
|
|
324
|
-
npx roadmap-skill-web # Web Kanban only
|
|
325
321
|
npx roadmap-skill # Full MCP server
|
|
326
322
|
```
|
|
327
323
|
|
package/README.zh.md
CHANGED
|
@@ -41,10 +41,7 @@
|
|
|
41
41
|
## 零配置快速开始
|
|
42
42
|
|
|
43
43
|
```bash
|
|
44
|
-
#
|
|
45
|
-
npx roadmap-skill-web
|
|
46
|
-
|
|
47
|
-
# 方式二:集成到你的 AI 助手(MCP 配置如下)
|
|
44
|
+
# 集成到你的 AI 助手(MCP 配置如下)
|
|
48
45
|
```
|
|
49
46
|
|
|
50
47
|
<details>
|
|
@@ -321,7 +318,6 @@ npm install -g roadmap-skill
|
|
|
321
318
|
### 免安装使用
|
|
322
319
|
|
|
323
320
|
```bash
|
|
324
|
-
npx roadmap-skill-web # 仅启动 Web 看板
|
|
325
321
|
npx roadmap-skill # 完整 MCP 服务器
|
|
326
322
|
```
|
|
327
323
|
|
package/dist/index.js
CHANGED
|
@@ -573,9 +573,18 @@ var TagService = class {
|
|
|
573
573
|
code: "NOT_FOUND"
|
|
574
574
|
};
|
|
575
575
|
}
|
|
576
|
+
const taskTagCounts = /* @__PURE__ */ new Map();
|
|
577
|
+
for (const task of projectData.tasks) {
|
|
578
|
+
for (const tagId of task.tags) {
|
|
579
|
+
taskTagCounts.set(tagId, (taskTagCounts.get(tagId) ?? 0) + 1);
|
|
580
|
+
}
|
|
581
|
+
}
|
|
576
582
|
return {
|
|
577
583
|
success: true,
|
|
578
|
-
data: projectData.tags
|
|
584
|
+
data: projectData.tags.map((tag) => ({
|
|
585
|
+
...tag,
|
|
586
|
+
taskCount: taskTagCounts.get(tag.id) ?? 0
|
|
587
|
+
}))
|
|
579
588
|
};
|
|
580
589
|
} catch (error) {
|
|
581
590
|
return {
|
|
@@ -1334,13 +1343,14 @@ function resolveAppPath() {
|
|
|
1334
1343
|
candidates.push({ path: path4.join(pkgRoot, "dist/web/app"), source: "package.json resolve" });
|
|
1335
1344
|
} catch {
|
|
1336
1345
|
}
|
|
1346
|
+
candidates.push({ path: path4.join(__dirname2, "web/app"), source: "__dirname/web/app" });
|
|
1337
1347
|
candidates.push({ path: path4.join(__dirname2, "app"), source: "__dirname relative" });
|
|
1338
1348
|
candidates.push({ path: path4.join(process.cwd(), "dist/web/app"), source: "process.cwd()" });
|
|
1339
1349
|
candidates.push({ path: path4.join(__dirname2, "../web/app"), source: "__dirname/../web/app" });
|
|
1340
1350
|
for (const { path: candidatePath, source } of candidates) {
|
|
1341
1351
|
const indexPath = path4.join(candidatePath, "index.html");
|
|
1342
1352
|
if (existsSync(indexPath)) {
|
|
1343
|
-
console.
|
|
1353
|
+
console.error(`[roadmap-skill] Static files found at: ${candidatePath} (via ${source})`);
|
|
1344
1354
|
return candidatePath;
|
|
1345
1355
|
}
|
|
1346
1356
|
}
|
|
@@ -1548,7 +1558,7 @@ function createServer(port = 7860) {
|
|
|
1548
1558
|
});
|
|
1549
1559
|
const server = app.listen(port, "127.0.0.1");
|
|
1550
1560
|
server.once("listening", () => {
|
|
1551
|
-
console.
|
|
1561
|
+
console.error(`Web interface server running at http://localhost:${port}`);
|
|
1552
1562
|
resolve(server);
|
|
1553
1563
|
});
|
|
1554
1564
|
server.once("error", (error) => {
|
|
@@ -2509,7 +2519,15 @@ function createServer2() {
|
|
|
2509
2519
|
};
|
|
2510
2520
|
} catch (error) {
|
|
2511
2521
|
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
2512
|
-
|
|
2522
|
+
return {
|
|
2523
|
+
content: [
|
|
2524
|
+
{
|
|
2525
|
+
type: "text",
|
|
2526
|
+
text: `Tool execution failed: ${errorMessage}`
|
|
2527
|
+
}
|
|
2528
|
+
],
|
|
2529
|
+
isError: true
|
|
2530
|
+
};
|
|
2513
2531
|
}
|
|
2514
2532
|
}
|
|
2515
2533
|
);
|
|
@@ -2581,11 +2599,9 @@ async function main() {
|
|
|
2581
2599
|
});
|
|
2582
2600
|
process.on("uncaughtException", (error) => {
|
|
2583
2601
|
console.error("Uncaught exception:", error);
|
|
2584
|
-
process.exit(1);
|
|
2585
2602
|
});
|
|
2586
2603
|
process.on("unhandledRejection", (reason) => {
|
|
2587
2604
|
console.error("Unhandled rejection:", reason);
|
|
2588
|
-
process.exit(1);
|
|
2589
2605
|
});
|
|
2590
2606
|
try {
|
|
2591
2607
|
await startServer();
|