roadmap-skill 0.2.7 → 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 CHANGED
@@ -41,10 +41,7 @@
41
41
  ## Quick Start (Zero Config)
42
42
 
43
43
  ```bash
44
- # Option 1: Launch Web Kanban
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
- # 方式一:启动 Web 看板
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 {
@@ -1341,7 +1350,7 @@ function resolveAppPath() {
1341
1350
  for (const { path: candidatePath, source } of candidates) {
1342
1351
  const indexPath = path4.join(candidatePath, "index.html");
1343
1352
  if (existsSync(indexPath)) {
1344
- console.log(`[roadmap-skill] Static files found at: ${candidatePath} (via ${source})`);
1353
+ console.error(`[roadmap-skill] Static files found at: ${candidatePath} (via ${source})`);
1345
1354
  return candidatePath;
1346
1355
  }
1347
1356
  }
@@ -1549,7 +1558,7 @@ function createServer(port = 7860) {
1549
1558
  });
1550
1559
  const server = app.listen(port, "127.0.0.1");
1551
1560
  server.once("listening", () => {
1552
- console.log(`Web interface server running at http://localhost:${port}`);
1561
+ console.error(`Web interface server running at http://localhost:${port}`);
1553
1562
  resolve(server);
1554
1563
  });
1555
1564
  server.once("error", (error) => {
@@ -2510,7 +2519,15 @@ function createServer2() {
2510
2519
  };
2511
2520
  } catch (error) {
2512
2521
  const errorMessage = error instanceof Error ? error.message : String(error);
2513
- throw new Error(`Tool execution failed: ${errorMessage}`);
2522
+ return {
2523
+ content: [
2524
+ {
2525
+ type: "text",
2526
+ text: `Tool execution failed: ${errorMessage}`
2527
+ }
2528
+ ],
2529
+ isError: true
2530
+ };
2514
2531
  }
2515
2532
  }
2516
2533
  );
@@ -2582,11 +2599,9 @@ async function main() {
2582
2599
  });
2583
2600
  process.on("uncaughtException", (error) => {
2584
2601
  console.error("Uncaught exception:", error);
2585
- process.exit(1);
2586
2602
  });
2587
2603
  process.on("unhandledRejection", (reason) => {
2588
2604
  console.error("Unhandled rejection:", reason);
2589
- process.exit(1);
2590
2605
  });
2591
2606
  try {
2592
2607
  await startServer();