chore(仓库对齐): 文档库结构治理 + IM/插件线落地
build / build-and-scan (push) Waiting to run

文档库:目录改为编号制(01-规范/02-架构设计/03-数据库/04-调整方案/
05-交接单/06-ops/07-scripts/08-skills/09-archive),顶层散文件归入 01-规范/;
INDEX.md 与 docs-manifest.json 重刷(档案 146 篇);旧目录名引用全量对齐。

IM 线:src/im/**(SDK / hub / store / presence / ws / gateway-token)、
src/web/routes/im.ts、src/db/plugin-data/**、src/supervisor/plugin-assembly.ts
及对应 test/**。

插件线:poc/{im-agent-bridge,im-connection-gateway,im-conversation-tabs,
business-plugins-im,carbon-mcp-probe}、src/web/routes/{sessions,overlay-device}.ts、
src/net/relay/{device-grant,instance-credential}.ts。

仓库卫生:清出 40 个历史误入库 / 已改名文件(34 个交接单归档 + 6 个旧结构,
本地均有副本);dsh-server-docs/.gitignore 补 tmp/;交接单不入库(政策)。
This commit is contained in:
admin committed 2026-09-24 07:25:16 +08:00
1 parent 3d8f50e366
commit e6207aa691
239 files changed
+34477 -14633

No files matched your search

+18
View File
@@ -29,6 +29,7 @@ import {
decodeMux,
describeDialers,
encodeJsonFrame,
isAllowedDialer,
logicalName,
normalizeDialers,
parseLogicalName,
@@ -186,6 +187,23 @@ test('U1 逻辑名唯一入口:旧形态 / 新形态 / `u:<租户>` 里的冒
// 桶内带了前缀就必须与本桶一致,否则说明配置自相矛盾 ⇒ 装载时就炸
assert.throws(() => normalizeDialers(new Map([['u:5', new Set(['ops:d1'])]])), /自相矛盾/)
// ⑤b 网级通配(序㊻ · S2):`u:<租户>/*` = 该网整网可拨
const wildCards = new Map([['u:5', new Set(['*'])]])
assert.equal(isAllowedDialer(normalizeDialers(wildCards), 'u:5', 'd-brand-new'), true)
assert.equal(isAllowedDialer(normalizeDialers(new Set(['u:5/*'])), 'u:5', 'd-brand-new'), true)
assert.equal(isAllowedDialer(normalizeDialers(new Set(['u:5:*'])), 'u:5', 'd-brand-new'), true)
assert.deepEqual(describeDialers(normalizeDialers(new Set(['u:5/*']))), ['u:5/*'])
// ⛔ 通配不外溢:别的网照旧默认拒绝(结构性隔离不因它松动)
assert.equal(isAllowedDialer(normalizeDialers(new Set(['u:5/*'])), OPS_NETWORK, 'manager'), false)
assert.equal(isAllowedDialer(normalizeDialers(new Set(['u:5/*'])), 'u:6', 'd1'), false)
// ⛔ 只准用在租户网:ops / 命名网上写通配 ⇒ 装载时就炸(否则会把声明端口的 worker 一并拒掉)
assert.throws(() => normalizeDialers(new Set(['ops/*'])), /租户网/)
assert.throws(() => normalizeDialers(new Set(['*'])), /租户网/)
assert.throws(() => normalizeDialers(new Set(['named-net/*'])), /租户网/)
assert.throws(() => normalizeDialers(new Map([['ops', new Set(['*'])]])), /租户网/)
// `*` 不是合法 hostId ⇒ 它**只**在白名单这一条通道上有意义,普通逻辑名照旧拒
assert.throws(() => parseLogicalName('u:5/*'), /hostId/)
// ⑥ 客户端侧同一条口径:非法 networkId ⇒ 构造时抛(不静默回落 ops)
assert.throws(
() => new RelayClient({ url: 'ws://127.0.0.1:1' + PATH, hostId: 'x', secret: randomBytes(32).toString('hex'), ports: [BASE], networkId: 'BAD' }),