umtri-mcp 1.5.0 → 1.5.1

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/core/policy.js CHANGED
@@ -451,7 +451,9 @@ export function validateNode({ type, label, parentType, parentKind = null, sibli
451
451
  else warnings.push(h);
452
452
  }
453
453
 
454
- let r = reservedDomainCheck(label);
454
+ // 테이블 leaf(metadata.table)의 라벨은 테이블의 논리명이다 — "버그" 테이블은 bugs 레코드가 아니라
455
+ // 그 레코드를 담는 테이블이라 예약어와 이름이 같아도 정당하다(umtri://rules/trunk-kinds).
456
+ let r = type === 'leaf' && metadata?.table ? null : reservedDomainCheck(label);
455
457
  // 유형이 정해진 trunk 바로 아래 limb는 도메인 이름이다 — Umtri 자신의 server·db에는 "버그" 도메인이
456
458
  // 있다. 그 코드 영역을 가리키는 거라면 정당하니 info로 낮추고 그 뜻을 말해 준다.
457
459
  if (r?.rule === 'reserved-domain' && type === 'limb' && parentType === 'trunk' && TRUNK_KINDS.includes(parentKind)) {
@@ -14,7 +14,7 @@ label: the kind is what the MCP reads to check the limbs under it.
14
14
  | --- | --- | --- | --- | --- |
15
15
  | `front` | Something people use on a screen — app, web app, admin, static site | User-facing feature or flow (Reservations, My page). A public site splits by page | App shell (layout, routing, boot), design system, shared components | Screens, components |
16
16
  | `server` | A service that takes requests — API, webhooks, jobs | Domain / resource. Non-domain consumers (external integrations, inbound webhooks) get their own limb | Request handling — authentication, authorization, errors, boot | Endpoint groups (`metadata.endpoints`) |
17
- | `database` | A data store — relational DB, document DB, cache | Domain, **with the same names as the server** | Tables shared by many domains (sessions, audit log) | Tables (`metadata.columns`), labelled by their logical name |
17
+ | `database` | A data store — relational DB, document DB, cache | Domain, **with the same names as the server** | Tables shared by many domains (sessions, audit log) | Tables, labelled by their logical name, with `metadata.table` (the real name) and `metadata.columns` |
18
18
  | `library` | Shared code or a package that other trunks import | Capability or concept (Money, Signal pipeline) | Shared types and constants | Modules |
19
19
  | `device` | Physical hardware, an embedded screen, an enclosure | Physical part or screen region | Device-wide parts (power, communication) | Parts, screen elements |
20
20
 
@@ -83,6 +83,8 @@ exists there, reuse its exact label.
83
83
  | `limb-layer-axis` | A limb is named after a technical layer. Split by the trunk kind's axis instead. |
84
84
  | `common-limb-duplicate` | The trunk already has a limb with `metadata.common: true`. |
85
85
 
86
+ A table leaf (`metadata.table` set) may share its name with a first-class record — a `Bugs` table is not a bug — so `reserved-domain` does not fire on it.
87
+
86
88
  ## Reshaping an existing tree
87
89
 
88
90
  Grounds built before these rules exist. Bring them in line one node at a
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "umtri-mcp",
3
- "version": "1.5.0",
3
+ "version": "1.5.1",
4
4
  "description": "MCP server for Umtri — give your AI coding agent a persistent map of your project's structure, dependencies, and bugs.",
5
5
  "mcpName": "io.umtri/umtri",
6
6
  "keywords": [