mellos-mapping 0.20.2 → 0.20.3

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
@@ -556,9 +556,7 @@ npm install
556
556
  npm run verify
557
557
  ```
558
558
 
559
- `verify` is five steps, in this order: `typecheck` (the repo's own sources),
560
- `typecheck:packages` (the dsh plugin packages' framework-free modules, with
561
- `mellos-mapping/*` pointed at these sources), `test`, `build` (bundles
559
+ `verify` is four steps, in this order: `typecheck`, `test`, `build` (bundles
562
560
  `dist/`, emits `lib/` with declarations, cleaning both first), and
563
561
  `check:package` — which packs the tarball through the real `prepack`
564
562
  lifecycle and fails if any `exports` or `bin` target is missing from it.
@@ -576,27 +574,12 @@ The repo is itself layered bottom-up, and each layer has its spec:
576
574
  | 4 render | `src/render/` | `render.test.ts`, `routing.test.ts` | the ASCII renderer and its wire routing |
577
575
  | 4 pane | `src/watch/` | `watch.test.ts`, `pane-state.test.ts`, `input.test.ts` | the polling pane: page set, input parsing, panel and chrome |
578
576
  | — launchers | `scripts/` | `open-pane.test.mjs`, `codex-register.test.mjs` | plain-node entry points |
579
- | — packaging | `package.json`, `packages/` | `tests/lockfile.test.ts`, `tests/packages.test.ts`, `browser-safe.test.ts` | what ships, and to whom |
577
+ | — packaging | `package.json` | `tests/lockfile.test.ts`, `browser-safe.test.ts` | what ships, and to whom |
580
578
 
581
579
  `dist/` is committed deliberately: plugin installation clones this repo and
582
580
  runs nothing, so entry points ship bundled. CI diffs the committed `dist/`
583
581
  against a fresh build, so a source change that forgets the rebuild fails.
584
582
 
585
- ### The dsh packages
586
-
587
- `packages/dsh` and `packages/dsh-client` are the DeepSeek Harness surface: a
588
- host plugin that reads and watches a workspace's `.mellos/` store, and the
589
- browser map panel that draws it with these same semantics. They are
590
- *developed* inside a dsh workspace checkout (its toolchain builds them) and
591
- *published* from here — sources, specs and `lib/` committed, refreshed by
592
- `node scripts/sync-dsh-plugin.mjs <path-to-deepseek-harness>`, which rewrites
593
- the dsh-internal package names to the published ones. This repo cannot build
594
- them, so it proves what it can: `typecheck:packages` and the framework-free
595
- specs run in CI, and `tests/packages.test.ts` guards the src↔lib structure,
596
- the shared version line, and the MCP row's spawn form. Specs that need the
597
- `@deepseek-ai` framework or a DOM are named, with their reason, in
598
- `vitest.config.ts`. See [`packages/dsh/README.md`](packages/dsh/README.md).
599
-
600
583
  ### Library
601
584
 
602
585
  The lower layers are also a library (`npm run build` emits `lib/` with type
@@ -615,7 +598,7 @@ declarations; npm packs it). Subpath exports mirror the source:
615
598
  **Browser-safe** means no Node builtins anywhere in the import closure, gated
616
599
  by a test, so a graphical client (a web panel, an editor view) can parse state
617
600
  files and reuse the exact aggregation, zoom and glyph semantics the terminal
618
- pane draws with. `packages/dsh-client` is that client.
601
+ pane draws with.
619
602
 
620
603
  ## License
621
604
 
package/README.zh-CN.md CHANGED
@@ -493,9 +493,7 @@ npm install
493
493
  npm run verify
494
494
  ```
495
495
 
496
- `verify` 是按顺序的五步:`typecheck`(本仓库自己的源码)、
497
- `typecheck:packages`(dsh 插件包里不依赖框架的模块,且把 `mellos-mapping/*`
498
- 指向本仓库源码)、`test`、`build`(打包 `dist/`、产出带声明的 `lib/`,两个
496
+ `verify` 是按顺序的四步:`typecheck`、`test`、`build`(打包 `dist/`、产出带声明的 `lib/`,两个
499
497
  目录都先清空),以及 `check:package`——它按真实的 `prepack` 生命周期打出
500
498
  tarball,只要 `exports` 或 `bin` 里有任何目标没被打进去就失败。
501
499
 
@@ -512,26 +510,12 @@ tarball,只要 `exports` 或 `bin` 里有任何目标没被打进去就失败
512
510
  | 4 render | `src/render/` | `render.test.ts`、`routing.test.ts` | ASCII 渲染器与它的走线 |
513
511
  | 4 pane | `src/watch/` | `watch.test.ts`、`pane-state.test.ts`、`input.test.ts` | 轮询面板:页集、输入解析、详情面板与外框 |
514
512
  | — 启动脚本 | `scripts/` | `open-pane.test.mjs`、`codex-register.test.mjs` | 纯 node 的入口 |
515
- | — 打包 | `package.json`、`packages/` | `tests/lockfile.test.ts`、`tests/packages.test.ts`、`browser-safe.test.ts` | 发出去的是什么、发给谁 |
513
+ | — 打包 | `package.json` | `tests/lockfile.test.ts`、`browser-safe.test.ts` | 发出去的是什么、发给谁 |
516
514
 
517
515
  `dist/` 是刻意提交的:插件安装就是克隆本仓库、不运行任何东西,所以入口
518
516
  文件以打包形式随仓库分发。CI 会把提交的 `dist/` 和一次全新构建做 diff,
519
517
  所以改了源码却忘了重新构建会直接失败。
520
518
 
521
- ### dsh 插件包
522
-
523
- `packages/dsh` 与 `packages/dsh-client` 是 DeepSeek Harness 的那一面:一个
524
- 读取并监视工作区 `.mellos/` 存储的宿主插件,加上用同一套语义作画的浏览器
525
- 地图面板。它们在 dsh workspace 检出里*开发*(由那边的工具链构建),从这里
526
- *发布*——源码、规格测试和 `lib/` 都提交在这儿,用
527
- `node scripts/sync-dsh-plugin.mjs <deepseek-harness 检出路径>` 刷新,该脚本
528
- 会把 dsh 内部包名改写成发布用的名字。本仓库构建不了它们,所以只证明它能
529
- 证明的:`typecheck:packages` 和不依赖框架的规格测试在 CI 里跑,
530
- `tests/packages.test.ts` 守住 src↔lib 的结构、共享版本线和 MCP 行的拉起
531
- 方式。需要 `@deepseek-ai` 框架或 DOM 的规格测试连同理由一起写在
532
- `vitest.config.ts` 里。详见
533
- [`packages/dsh/README.md`](packages/dsh/README.md)。
534
-
535
519
  ### 库
536
520
 
537
521
  底部各层同时是一个库(`npm run build` 产出带类型声明的 `lib/`,npm 打包
@@ -549,8 +533,7 @@ tarball,只要 `exports` 或 `bin` 里有任何目标没被打进去就失败
549
533
 
550
534
  **浏览器安全**的意思是 import 闭包里没有任何 Node 内建模块,由测试门禁
551
535
  守护——图形客户端(web 面板、编辑器视图)可以直接解析状态文件,并复用与
552
- 终端面板完全一致的聚合、缩放与字形语义。`packages/dsh-client` 就是这样一个
553
- 客户端。
536
+ 终端面板完全一致的聚合、缩放与字形语义。
554
537
 
555
538
  ## 许可证
556
539
 
package/dist/server.mjs CHANGED
@@ -21237,7 +21237,7 @@ function describeMapError(e) {
21237
21237
  case "layer-holds-group":
21238
21238
  return `layer "${e.id}" still holds group "${e.occupant}"; remove its groups (removeGroup) first`;
21239
21239
  case "edge-not-downward":
21240
- return `edge ${e.from} (rank ${e.fromRank}) -> ${e.to} (rank ${e.toRank}) is not strictly downward; dependencies may only point to a lower layer`;
21240
+ return `edge ${e.from} (rank ${e.fromRank}) -> ${e.to} (rank ${e.toRank}) is not strictly downward; ` + (e.fromRank === e.toRank ? `same-band siblings may not depend on each other \u2014 either "${e.to}" is really a lower concept (declare it on a lower band) or "${e.from}" and "${e.to}" are one node (merge them)` : `"${e.from}" would USE "${e.to}" from a lower band \u2014 reverse the edge if "${e.to}" is the user, otherwise move or re-rank so "${e.from}" sits above "${e.to}"`);
21241
21241
  }
21242
21242
  }
21243
21243
 
@@ -23145,7 +23145,7 @@ function summarize(map) {
23145
23145
 
23146
23146
  // src/server/server.ts
23147
23147
  var SERVER_NAME = "mellos-mapping";
23148
- var SERVER_VERSION = "0.20.2";
23148
+ var SERVER_VERSION = "0.20.3";
23149
23149
  var TITLE_MAX = 120;
23150
23150
  var LABEL_MAX = 60;
23151
23151
  var DETAIL_MAX = 600;
package/dist/watch.mjs CHANGED
@@ -87,7 +87,7 @@ function describeMapError(e) {
87
87
  case "layer-holds-group":
88
88
  return `layer "${e.id}" still holds group "${e.occupant}"; remove its groups (removeGroup) first`;
89
89
  case "edge-not-downward":
90
- return `edge ${e.from} (rank ${e.fromRank}) -> ${e.to} (rank ${e.toRank}) is not strictly downward; dependencies may only point to a lower layer`;
90
+ return `edge ${e.from} (rank ${e.fromRank}) -> ${e.to} (rank ${e.toRank}) is not strictly downward; ` + (e.fromRank === e.toRank ? `same-band siblings may not depend on each other \u2014 either "${e.to}" is really a lower concept (declare it on a lower band) or "${e.from}" and "${e.to}" are one node (merge them)` : `"${e.from}" would USE "${e.to}" from a lower band \u2014 reverse the edge if "${e.to}" is the user, otherwise move or re-rank so "${e.from}" sits above "${e.to}"`);
91
91
  }
92
92
  }
93
93
 
@@ -147,7 +147,16 @@ export function describeMapError(e) {
147
147
  case 'layer-holds-group':
148
148
  return `layer "${e.id}" still holds group "${e.occupant}"; remove its groups (removeGroup) first`;
149
149
  case 'edge-not-downward':
150
+ // The fault is one invariant (I4) but the remedy is not: a same-band
151
+ // edge is a modeling error the caller fixes by restructuring, an
152
+ // upward edge is usually a reversed arrow. The refusal is the moment
153
+ // the caller needs the remedy, so it is spelled out here, not only in
154
+ // the skill text they read before the batch was composed.
150
155
  return (`edge ${e.from} (rank ${e.fromRank}) -> ${e.to} (rank ${e.toRank}) is not strictly downward; ` +
151
- `dependencies may only point to a lower layer`);
156
+ (e.fromRank === e.toRank
157
+ ? `same-band siblings may not depend on each other — either "${e.to}" is really a lower concept ` +
158
+ `(declare it on a lower band) or "${e.from}" and "${e.to}" are one node (merge them)`
159
+ : `"${e.from}" would USE "${e.to}" from a lower band — reverse the edge if "${e.to}" is the user, ` +
160
+ `otherwise move or re-rank so "${e.from}" sits above "${e.to}"`));
152
161
  }
153
162
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mellos-mapping",
3
- "version": "0.20.2",
3
+ "version": "0.20.3",
4
4
  "mcpName": "io.github.GuangminJu/mellos-mapping",
5
5
  "description": "A live layered dependency map for bottom-up development — MCP server + terminal pane. Ghost the design first, then light nodes up from the bottom as they are built and verified.",
6
6
  "type": "module",
@@ -75,11 +75,10 @@
75
75
  "scripts": {
76
76
  "test": "vitest run",
77
77
  "typecheck": "tsc --noEmit",
78
- "typecheck:packages": "tsc -p tsconfig.packages.json",
79
78
  "build": "node build.mjs && tsc -p tsconfig.lib.json",
80
79
  "check:package": "node scripts/check-package-surface.mjs",
81
80
  "prepack": "npm run build",
82
- "verify": "npm run typecheck && npm run typecheck:packages && npm run test && npm run build && npm run check:package"
81
+ "verify": "npm run typecheck && npm run test && npm run build && npm run check:package"
83
82
  },
84
83
  "devDependencies": {
85
84
  "@modelcontextprotocol/sdk": "^1.12.0",