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 +3 -20
- package/README.zh-CN.md +3 -20
- package/dist/server.mjs +2 -2
- package/dist/watch.mjs +1 -1
- package/lib/domain/types.js +10 -1
- package/package.json +2 -3
package/README.md
CHANGED
|
@@ -556,9 +556,7 @@ npm install
|
|
|
556
556
|
npm run verify
|
|
557
557
|
```
|
|
558
558
|
|
|
559
|
-
`verify` is
|
|
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
|
|
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.
|
|
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`
|
|
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
|
|
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
|
-
|
|
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;
|
|
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.
|
|
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;
|
|
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
|
|
package/lib/domain/types.js
CHANGED
|
@@ -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
|
-
|
|
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.
|
|
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
|
|
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",
|