@miragon/design-iq-mcp 5.10.0 → 5.11.0

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/dist/http.js CHANGED
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- import { n as createMcpServer, r as todosConfigFromEnv, t as DEFAULT_ROOT } from "./tools-D-ZnEmWn.js";
2
+ import { n as createMcpServer, r as todosConfigFromEnv, t as DEFAULT_ROOT } from "./tools-CszDSqzk.js";
3
3
  import { createServer } from "node:http";
4
4
  import { timingSafeEqual } from "node:crypto";
5
5
  import { NodeStreamableHTTPServerTransport } from "@modelcontextprotocol/node";
package/dist/server.js CHANGED
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- import { n as createMcpServer, r as todosConfigFromEnv, t as DEFAULT_ROOT } from "./tools-D-ZnEmWn.js";
2
+ import { n as createMcpServer, r as todosConfigFromEnv, t as DEFAULT_ROOT } from "./tools-CszDSqzk.js";
3
3
  import { existsSync } from "node:fs";
4
4
  import { resolve } from "node:path";
5
5
  import { StdioServerTransport } from "@modelcontextprotocol/server/stdio";
@@ -548,6 +548,8 @@ const TT_EDGE_INTERACTIONS_VERSION = 1;
548
548
  function extractTeamTopology(raw) {
549
549
  const data = JSON.parse(raw);
550
550
  const list = (v) => Array.isArray(v) ? v : [];
551
+ const objects = (v) => list(v).filter((i) => i !== null && typeof i === "object");
552
+ const text = (v) => typeof v === "string" && v !== "" ? v : void 0;
551
553
  const teams = list(data.nodes).map((n) => ({
552
554
  id: n.id,
553
555
  type: n.type ?? "team",
@@ -555,16 +557,38 @@ function extractTeamTopology(raw) {
555
557
  extra: n.description ? { description: n.description } : void 0
556
558
  }));
557
559
  const placed = (i) => "position" in i && "size" in i;
558
- const interactions = list(data.interactions).filter((i) => i !== null && typeof i === "object").filter((i) => data.version !== TT_EDGE_INTERACTIONS_VERSION || placed(i)).map((i) => ({
560
+ const interactions = objects(data.interactions).filter((i) => data.version !== TT_EDGE_INTERACTIONS_VERSION || placed(i)).map((i) => ({
559
561
  id: i.id,
560
562
  type: "interaction",
561
563
  name: i.label,
562
564
  extra: { mode: i.mode }
563
565
  }));
566
+ const flows = objects(data.flows).map((f) => ({
567
+ id: f.id,
568
+ type: "flow",
569
+ name: text(f.label)
570
+ }));
571
+ const attachable = new Set([
572
+ ...teams,
573
+ ...interactions,
574
+ ...flows
575
+ ].map((n) => n.id));
576
+ const annotations = objects(data.annotations).map((a) => ({
577
+ id: a.id,
578
+ type: "annotation",
579
+ name: text(a.text),
580
+ extra: typeof a.attachedTo === "string" && attachable.has(a.attachedTo) ? { attachedTo: a.attachedTo } : void 0
581
+ }));
564
582
  return {
565
583
  notation: "team-topology",
566
- nodes: [...teams, ...interactions],
567
- edges: []
584
+ nodes: [
585
+ ...teams,
586
+ ...interactions,
587
+ ...flows,
588
+ ...annotations
589
+ ],
590
+ edges: [],
591
+ meta: { title: text(data.title) ?? null }
568
592
  };
569
593
  }
570
594
  const STORM_ID_PREFIX = {
@@ -1379,16 +1403,55 @@ const DERIVERS = {
1379
1403
  };
1380
1404
  },
1381
1405
  "team-topology": (graph) => {
1382
- const interactions = graph.nodes.filter((n) => n.type === "interaction").length;
1406
+ const ofType = (type) => graph.nodes.filter((n) => n.type === type);
1407
+ const interactions = ofType("interaction");
1408
+ const flows = ofType("flow");
1409
+ const annotations = ofType("annotation");
1410
+ const teams = graph.nodes.filter((n) => ![
1411
+ "interaction",
1412
+ "flow",
1413
+ "annotation"
1414
+ ].includes(n.type));
1383
1415
  const stats = {
1384
- teams: graph.nodes.length - interactions,
1385
- interactions
1416
+ teams: teams.length,
1417
+ interactions: interactions.length,
1418
+ flows: flows.length,
1419
+ annotations: annotations.length
1386
1420
  };
1421
+ const shown = {
1422
+ teams: stats.teams,
1423
+ interactions: stats.interactions,
1424
+ ...stats.flows > 0 ? { flows: stats.flows } : {},
1425
+ ...stats.annotations > 0 ? { annotations: stats.annotations } : {}
1426
+ };
1427
+ const title = graph.meta?.title;
1387
1428
  return {
1388
1429
  notation: "team-topology",
1389
- name: null,
1390
- summary: `Team Topology with ${counted(stats)}`,
1391
- stats
1430
+ name: typeof title === "string" ? title : null,
1431
+ summary: `Team Topology with ${counted(shown)}`,
1432
+ stats,
1433
+ detail: {
1434
+ teams: teams.map((n) => ({
1435
+ id: n.id,
1436
+ label: n.name ?? null,
1437
+ type: n.type,
1438
+ description: n.extra?.description ?? null
1439
+ })),
1440
+ interactions: interactions.map((n) => ({
1441
+ id: n.id,
1442
+ label: n.name ?? null,
1443
+ mode: n.extra?.mode ?? null
1444
+ })),
1445
+ flows: flows.map((n) => ({
1446
+ id: n.id,
1447
+ label: n.name ?? null
1448
+ })),
1449
+ annotations: annotations.map((n) => ({
1450
+ id: n.id,
1451
+ text: n.name ?? null,
1452
+ attachedTo: n.extra?.attachedTo ?? null
1453
+ }))
1454
+ }
1392
1455
  };
1393
1456
  },
1394
1457
  "event-storming": (graph) => {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@miragon/design-iq-mcp",
3
- "version": "5.10.0",
3
+ "version": "5.11.0",
4
4
  "description": "Read-only MCP server exposing a designIQ content repo's models — BPMN processes, DMN decisions, Wardley Maps, Team Topologies, Event Storming boards, Context Maps and more — to any MCP client. Discovered from designiq.yml, views derived from the models.",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -49,11 +49,11 @@
49
49
  "devDependencies": {
50
50
  "@modelcontextprotocol/client": "2.3.1",
51
51
  "tsdown": "0.23.1",
52
- "@designiq/http-kit": "0.1.0",
53
52
  "@designiq/contracts": "0.1.0",
53
+ "@designiq/github-app": "0.1.0",
54
+ "@designiq/http-kit": "0.1.0",
54
55
  "@designiq/mcp-kit": "0.1.0",
55
- "@designiq/notations": "0.1.0",
56
- "@designiq/github-app": "0.1.0"
56
+ "@designiq/notations": "0.1.0"
57
57
  },
58
58
  "scripts": {
59
59
  "start": "node server.ts",