@loupekit/mcp 0.10.24 → 0.10.25-next.72

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 (2) hide show
  1. package/dist/index.js +20 -1
  2. package/package.json +2 -2
package/dist/index.js CHANGED
@@ -476,6 +476,25 @@ async function handle(req, res, deps) {
476
476
  if (gone) deps.bus.publish({ type: "presence", data: deps.presence.list(), at: (/* @__PURE__ */ new Date()).toISOString() });
477
477
  return send(res, 200, { ok: gone }, origin);
478
478
  }
479
+ if (method === "POST" && path === "/thread-updates") {
480
+ const body = await readBody(req);
481
+ if (!body.ok) return send(res, 400, { error: body.error }, origin);
482
+ let parsed;
483
+ try {
484
+ parsed = JSON.parse(body.text);
485
+ } catch {
486
+ return send(res, 400, { error: "body is not valid JSON" }, origin);
487
+ }
488
+ const evt = parsed;
489
+ if (!evt || typeof evt !== "object" || typeof evt.threadId !== "string" || !evt.threadId) {
490
+ return send(res, 400, { error: "threadId is required" }, origin);
491
+ }
492
+ if (typeof evt.eventType !== "string" || !evt.eventType) {
493
+ return send(res, 400, { error: "eventType is required" }, origin);
494
+ }
495
+ deps.bus.publishThread(evt.threadId, evt.eventType, evt.data);
496
+ return send(res, 202, { ok: true }, origin);
497
+ }
479
498
  if (method === "GET" && (path === "/events" || path === "/thread-updates")) {
480
499
  return streamEvents(req, res, deps, path === "/thread-updates" ? "thread" : null, origin);
481
500
  }
@@ -1708,7 +1727,7 @@ async function proposeChange({ id, html, css, notes }) {
1708
1727
  bus.publishThread(id, "preview_live", { author: proposal.author });
1709
1728
  return wrap(`Proposal saved for #${id}. The dev team can now review your modified HTML/CSS in the dashboard.`);
1710
1729
  }
1711
- var server = new McpServer({ name: "loupe", version: "0.10.24" });
1730
+ var server = new McpServer({ name: "loupe", version: "0.10.25" });
1712
1731
  server.tool(
1713
1732
  "list_comments",
1714
1733
  "List Loupe product-feedback comments for the project as a task backlog. Each item carries its board stage, priority and change type, so you can start with the most urgent. Use this to see what a PM has flagged, then work through the items.",
package/package.json CHANGED
@@ -5,7 +5,7 @@
5
5
  "email": "m.ashraf.saed@gmail.com",
6
6
  "url": "https://www.linkedin.com/in/mohamedashrafelsaed/"
7
7
  },
8
- "version": "0.10.24",
8
+ "version": "0.10.25-next.72",
9
9
  "description": "MCP server that exposes Loupe comments to Claude Code as an actionable, fully-contextualized backlog.",
10
10
  "keywords": [
11
11
  "loupe",
@@ -46,6 +46,6 @@
46
46
  "zod": "^3.24.1"
47
47
  },
48
48
  "devDependencies": {
49
- "@loupekit/shared": "0.10.24"
49
+ "@loupekit/shared": "0.10.25-next.72"
50
50
  }
51
51
  }