@sema-agent/settings-schema 14.0.0 → 14.2.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/CHANGELOG.md +95 -0
- package/README.md +24 -4
- package/conformance/VERSION +1 -1
- package/dist/caller-text-echo.d.ts +4 -0
- package/dist/caller-text-echo.js +13 -0
- package/dist/control-and-bidi.d.ts +21 -0
- package/dist/control-and-bidi.js +29 -0
- package/dist/hooks-config.d.ts +6 -2
- package/dist/hooks-config.js +11 -4
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1 -0
- package/dist/mcp-request-entry.d.ts +29 -30
- package/dist/mcp-request-entry.js +116 -19
- package/dist/mcp-server-policy.d.ts +2 -1
- package/dist/mcp-server-policy.js +5 -3
- package/dist/safety-merge-spec.d.ts +30 -1
- package/dist/safety-merge-spec.js +19 -1
- package/dist/settings-sources.d.ts +49 -33
- package/dist/settings-sources.js +77 -15
- package/docs/API-SURFACE.md +9 -2
- package/docs/CC-DIVERGENCE.md +6 -0
- package/llms-full.txt +23 -3
- package/llms.txt +15 -7
- package/package.json +1 -1
package/docs/API-SURFACE.md
CHANGED
|
@@ -4,9 +4,9 @@
|
|
|
4
4
|
> 每次全量重算并逐名比对 —— 加 / 删 / 改形一个导出而不重生成本档 ⇒ 红。导出面的每次变动因此以本档的 diff 出现在评审里。
|
|
5
5
|
> 形:`value` = 运行期拿得到的值;`type` = 只在类型层;`value+type` = 同名的值与类型(zod schema 与它推出的类型)。
|
|
6
6
|
|
|
7
|
-
子路径 24 条(资产出口 `./package.json` / `./fleet-paths.json` 不是模块,不列),导出名合计
|
|
7
|
+
子路径 24 条(资产出口 `./package.json` / `./fleet-paths.json` 不是模块,不列),导出名合计 1337 个(同名在多条子路径上各计一次)。
|
|
8
8
|
|
|
9
|
-
## `.`(
|
|
9
|
+
## `.`(661)
|
|
10
10
|
|
|
11
11
|
- `ABSOLUTE_HOST_PATH_MAX` — value
|
|
12
12
|
- `ACCESS_TOKEN_TTL_SECONDS` — value
|
|
@@ -35,6 +35,7 @@
|
|
|
35
35
|
- `BudgetGroupMember` — value
|
|
36
36
|
- `COMMAND_DECISIONS` — value
|
|
37
37
|
- `CONFIG_CHANGE_SOURCES` — value
|
|
38
|
+
- `CONTROL_AND_BIDI_CHARS` — value
|
|
38
39
|
- `CROSS_SESSION_INBOUND_UNSET` — value
|
|
39
40
|
- `CROSS_SESSION_INBOUND_VALUES` — value
|
|
40
41
|
- `CancelSource` — value+type
|
|
@@ -219,9 +220,11 @@
|
|
|
219
220
|
- `JwksCacheSnapshot` — type
|
|
220
221
|
- `K8S_QUANTITY` — value
|
|
221
222
|
- `LAYER_ADMISSION_VERDICTS` — value
|
|
223
|
+
- `LAYER_PARTS_UNREAD_CODE` — value
|
|
222
224
|
- `LEASE_STATES` — value
|
|
223
225
|
- `LaneTenancy` — type
|
|
224
226
|
- `LayerAdmissionVerdict` — type
|
|
227
|
+
- `LayerPartsUnreadNotice` — type
|
|
225
228
|
- `LeaseState` — value+type
|
|
226
229
|
- `LimitsConfig` — value+type
|
|
227
230
|
- `LogoutRequest` — value+type
|
|
@@ -522,6 +525,7 @@
|
|
|
522
525
|
- `aggregateUsage` — value
|
|
523
526
|
- `applyProjectPatch` — value
|
|
524
527
|
- `buildEffective` — value
|
|
528
|
+
- `buildLayerPartsUnreadNotice` — value
|
|
525
529
|
- `buildRetiredEnvWire` — value
|
|
526
530
|
- `canSwitchScope` — value
|
|
527
531
|
- `clampServingLeaseTtlMs` — value
|
|
@@ -545,6 +549,7 @@
|
|
|
545
549
|
- `findSkillContent` — value
|
|
546
550
|
- `fnv1a64` — value
|
|
547
551
|
- `formatConfigPath` — value
|
|
552
|
+
- `hasControlOrBidi` — value
|
|
548
553
|
- `hasNul` — value
|
|
549
554
|
- `hookMatcherForm` — value
|
|
550
555
|
- `hookMatcherSelects` — value
|
|
@@ -580,6 +585,7 @@
|
|
|
580
585
|
- `judgeWebAdminCredentialDeclaration` — value
|
|
581
586
|
- `jwksWithinOfflineGrace` — value
|
|
582
587
|
- `layerAdmission` — value
|
|
588
|
+
- `layerReadsTightenOnly` — value
|
|
583
589
|
- `leaseExhausted` — value
|
|
584
590
|
- `leaseRemaining` — value
|
|
585
591
|
- `looksLikeJwt` — value
|
|
@@ -651,6 +657,7 @@
|
|
|
651
657
|
- `startsWithHttpScheme` — value
|
|
652
658
|
- `statusRowsToPrune` — value
|
|
653
659
|
- `stopAttributionText` — value
|
|
660
|
+
- `stripControlAndBidi` — value
|
|
654
661
|
- `toSkillsManifest` — value
|
|
655
662
|
- `toVerifiedIdentity` — value
|
|
656
663
|
- `trustRank` — value
|
package/docs/CC-DIVERGENCE.md
CHANGED
|
@@ -40,3 +40,9 @@
|
|
|
40
40
|
## settings sources(`SETTINGS_SOURCE_CONTRACT`,`src/settings-sources.ts`)
|
|
41
41
|
|
|
42
42
|
无偏差:本地层与项目层同为「仓库可控」档(`:237757`);`flagSettings` 归运维档 `global`(与 user / policy 并列)。
|
|
43
|
+
|
|
44
|
+
| 号 | 面 | CC 原形 | 本包 | 方向 | 理由 | 读它的 |
|
|
45
|
+
|---|---|---|---|---|---|---|
|
|
46
|
+
| SS-CCD-08 | 仓库里写给 CC 的 `.claude/settings.json` / `.claude/settings.local.json` | 那就是 CC 自己的项目层 / 本地层:工作区受信时整份读(hooks / env / allow 规则 / MCP 服务器……) | 源 `foreignProjectSettings`(`tightenOnly`):不论工作区读数只读收紧方向(deny / ask 规则、关停位的开、沙箱收紧极),其余答 `tighten_only` 或 `below_trust_floor`,一行披露没读的部分 | 更严 | 对本工具它是另一个工具的配置:用户接受本工具的工作区,不等于同意把另一个工具的 hooks、环境变量与 allow 规则搬进来;收紧方向不需要信任 | 壳与服务端读仓库设置文件的那一腿 |
|
|
47
|
+
|
|
48
|
+
关停位(`SAFETY_MERGE_SPEC.killSwitches`)无偏差:任一层可写「开」、合并严者胜,与限制性键表 `{path:["permissions","disableBypassPermissionsMode"],restrictive:"disable"}`(`:237449`)同形。
|
package/llms-full.txt
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
<!--
|
|
2
2
|
llms-full.txt — 自包含全文 · 消费方(使用者)视角 · @sema-agent/settings-schema
|
|
3
|
-
重写日期: 2026-10-
|
|
3
|
+
重写日期: 2026-10-18 | 包版本: 14.2.0
|
|
4
4
|
生成方式: 无生成脚本——按当前树 src/*.ts 导出面 + package.json + README/CHANGELOG 手写事实版。
|
|
5
5
|
证据约定: 每条"它怎么工作"的断言附 (文件: 符号) 坐标,刻意不用行号(行号逐版腐烂;符号名由
|
|
6
6
|
typecheck 与 test/package-surface.test.ts、test/docs-hygiene.test.ts 等常驻门钉住)。无证据推断显式标【推断】。
|
|
@@ -301,7 +301,7 @@ entitlement/execution/limits = `none`;`projects` = `salvage`,整域档位仍 `"t
|
|
|
301
301
|
`httpHookEnvVarsAllowed(hookVars, layers, workspace)` = hook 自己的 allowedEnvVars ∩ 每张准入名单。与 CC 差:拼接 → 取交、任意层 → 准入层(SS-CCD-06 / 07)。
|
|
302
302
|
- `mcpServerPolicyVerdict(server, layers)`(src/mcp-server-policy.ts)→ `undefined` | `McpPolicyBlock{ name, list, rule, target, written, sources }`;闭集 `MCP_SERVER_LIST_KEYS` /
|
|
303
303
|
`MCP_POLICY_RULES`(name / command / url / empty)。层 `McpPolicyLayer = { source: SettingsSource, … }`(只带源名)。拒绝绝对优先、各层都算(名字 → 命令整数组 → URL 拒绝出口);
|
|
304
|
-
允许名单各层拼接(CC
|
|
304
|
+
允许名单各层拼接(CC 形;只收紧的源 `settingsSourceContract(源).tightenOnly` 的允许名单不读 —— 拼进来就是放宽,它只贡献拒绝名单),托管层(`settingsSourceContract(源).trust === "managed"`)`allowManagedMcpServersOnly` ⇒ 只读托管层;缺席不限、空一台都不许;stdio 遇命令条目 / 远端遇 URL 条目须命中其一,否则按名字。`server.target` = 展开后连接目标
|
|
305
305
|
(只用来判),`server.written` = 展开前写法(唯一回显;stdio 只给可执行名 + 参数个数)。SDK 型等是否豁免归调用方。
|
|
306
306
|
|
|
307
307
|
--- 4.5d 界面语言设置片段(src/ui-language.ts,主 barrel;13.0.0) ---
|
|
@@ -322,7 +322,9 @@ entitlement/execution/limits = `none`;`projects` = `salvage`,整域档位仍 `"t
|
|
|
322
322
|
issue = 码 + 坐标 + 坏字段名)。`classifyHooksConfig(settingsDoc)` = hooks 坏形的唯一读者:结局 `loaded`/`loaded-partial`/`rejected`;剔点五码
|
|
323
323
|
`HOOKS_DROPPED_PIECE_CODES`(非守卫事件的坏块逐个剔);拒点六码 `HOOKS_REJECTION_CODES`(守卫事件 PreToolUse / PermissionRequest 任何坏处、
|
|
324
324
|
或守卫迹象出现在 hooks 外 / 未知事件下 / 匹配器或条目字段里 ⇒ 整份拒;守卫事件值 null = 剔);坐标原样(出门前 `outgoingPath`)、零句子;剔点与拒绝项同一条 `field` 律 —— 坏块是匹配器 / 条目(对象)⇒ `field` = 它上面出问题的键(契约字段值错,或装着守卫迹象的成员:
|
|
325
|
-
契约不认识的未知字段 / 装得下更多东西的契约字段 / 条目自己是匹配器形时取 `hooks`)
|
|
325
|
+
契约不认识的未知字段 / 装得下更多东西的契约字段 / 条目自己是匹配器形时取 `hooks`),块不是对象才缺席;一块多个迹象时的报告序 = 先该块自身的迹象
|
|
326
|
+
(自有守卫事件键;条目自己是匹配器形取 `hooks`),再按文档序找嵌套迹象 —— 自有守卫键写在嵌套迹象之后仍先报自有键;匹配器下合形条目列表(`hooks` 数组)
|
|
327
|
+
里的迹象归各条目自己报(各是一块),所以 `{ matcher: 5, hooks: [藏迹象的条目] }` 报匹配器的 `matcher`;
|
|
326
328
|
自含(只引用 `HOOK_EVENTS` 与 JS 内建;整函数抄走的生成器 —— client-core —— 须把本包运行期导出 `HOOK_EVENTS` 作为上游常量注入抄本作用域,
|
|
327
329
|
不许在抄本里贴字面事件表:那是第二张事件表,漂移门看不见)。执行门契约(`./hooks` 头注):工作区 `declined` ⇒ 所有层 hooks 不跑,执行在 client-core。`HooksSlotSemantics`(保留词表,
|
|
328
330
|
未消费);权限词表 `PermissionBehavior`/`PermissionMode`/`PermissionUpdate` 族;停止归因 `StoppedBy`/
|
|
@@ -331,6 +333,10 @@ entitlement/execution/limits = `none`;`projects` = `salvage`,整域档位仍 `"t
|
|
|
331
333
|
名单内展开(env 无值 ⇒ 空串)、名单外与凭据名一律空串并进返回值 `blanked`(`{ header, name, reason: "not-allowed" | "credential" }`)、结果剥 CR/LF/NUL;
|
|
332
334
|
纯函数,壳与服务器同调一只(读法照 CC 2.1.296)。结果类型 `HookEnvInterpolation` / `HookEnvBlank`。
|
|
333
335
|
|
|
336
|
+
- 一行回显的剥除集(src/control-and-bidi.ts,主 barrel):`CONTROL_AND_BIDI_CHARS`(C0 + DEL + Unicode `Bidi_Control=Yes` 12 个码点,
|
|
337
|
+
正则字符类体的源码文本)、`stripControlAndBidi(text)`(只删集内码点)、`hasControlOrBidi(text)`(⇔ 剥了会变)。外来串进拒句 / 告警 / 日志 / 屏上一行前剥的唯一一份;
|
|
338
|
+
C1 与 U+2028 / U+2029 刻意不在集里;是本包的回显策略,属主在此(不对拍引擎的双向码点表),请求面两只回显描述器读它,消费方禁自存字符类。
|
|
339
|
+
|
|
334
340
|
--- 4.7 safety-merge-spec(主 barrel / `./safety-merge-spec`) ---
|
|
335
341
|
- `SAFETY_MERGE_SPEC`:逐类别合并/执法表(`mergeShape`/`minTrust`/`tighten`/`enforcement`/`fail`);成员级
|
|
336
342
|
准入(1.1.0 机制):`permissions`(allow=loosen@global / deny·ask=tighten@local)与 `sandboxNetwork`
|
|
@@ -345,7 +351,21 @@ entitlement/execution/limits = `none`;`projects` = `salvage`,整域档位仍 `"t
|
|
|
345
351
|
(accepted/declined/no_trust_step)、`layerAdmission(source, workspace, category, member?, value?)` → admitted / trust_withheld / below_trust_floor
|
|
346
352
|
(地板先判;仓库可控层 × 非 accepted 只收 tighten 成员);闭集外抛 RangeError。`settingsSourceContract(source)` = 源表唯一查口(同一句 RangeError):
|
|
347
353
|
本包要层档的函数(`layerAdmission`、http hook 名单判官、MCP 名单判决)都经它,不收调用方给的档。
|
|
354
|
+
尾插源 `foreignProjectSettings`(仓库里写给另一个工具的项目层设置文件,今天 = 克隆来的 `.claude/settings.json` / `.claude/settings.local.json`):
|
|
355
|
+
`{ trust: project, repoControllable: true, tightenOnly: true }` —— 不论工作区读数只准入方向 tighten 的成员(permissions.deny / ask、killSwitches 的开、
|
|
356
|
+
sandboxNetwork 的收紧极);其余过了地板的写答尾插判词 `tighten_only`(接受工作区也不收:接受的是本工具的文件,不是另一个工具的 hooks / env / allow),
|
|
357
|
+
地板之下照旧 `below_trust_floor`;它只贡献收紧的写,各 tighten 律按「严者胜」合并,与次序无关。`layerReadsTightenOnly(source, workspace)` = 「这一层是否只读收紧方向」
|
|
358
|
+
的唯一答案(只收紧的源恒是;本工具仓库可控层在非 accepted 时是;运维档恒否),`layerAdmission` 与披露同读它。
|
|
359
|
+
披露 `buildLayerPartsUnreadNotice({ source, workspace, file, parts })` → `{ code: "settings.layer_parts_unread"(LAYER_PARTS_UNREAD_CODE), source, parts, line }`:
|
|
360
|
+
一行 `<file>: read for restrictions only (<起因>) — not read: <parts>`,起因 = `it is written for another tool` / `this workspace is not trusted`;
|
|
361
|
+
文件与部分名剥控制与双向字符、部分名截 64、最多列 16 个(余者 `+N more`);parts = 判官没准入的写 + 消费方根本不映射到类目的键(document order);
|
|
362
|
+
无没读部分 ⇒ undefined;层不是只读收紧方向 ⇒ RangeError(这句对它不成立)。升级说明:还没接上读法的消费方可先只出这一行、列出文件里的全部键(只提示不读)——
|
|
363
|
+
那是消费方自己的过渡,本包不设旋钮。
|
|
348
364
|
- 13.0.0 尾插整键类目 `httpHookAllowlists`(minTrust global;判决见 4.5c)。`SafetyMergeCategory` 随之加宽 —— 持穷举表的消费方编译红 = 通知。
|
|
365
|
+
- 尾插成员级类目 `killSwitches`(权限模式关停位 `disableBypassPermissionsMode` / `disableAutoMode`):任一层可收紧、不放宽 —— 两员 tighten、值向,
|
|
366
|
+
开 = `boolPole{strict:true, minTrust:"local"}`(任一设置文件层可写),关 / 非布尔 / 不带值 = 行地板 global(= 类目地板;不认 boolPole 的旧消费方两极都不收 = fail-closed);
|
|
367
|
+
合并 replace + boolStricter(strict:true)⇒ 一层的开胜过所有层的关;gate / closed。表上没有「关停位只许托管层」的地板(`permissionMode` 的 seam 不再这么写),
|
|
368
|
+
判官与 resolver 同读这一行。与 CC 2.1.296 限制性键表同形(`permissions.disableBypassPermissionsMode` restrictive `"disable"`;消费方把 `"disable"` 读成开)。
|
|
349
369
|
|
|
350
370
|
--- 4.8 fleet 契约(主 barrel / `./fleet`) ---
|
|
351
371
|
- drain 协议(`DRAIN_PHASES`/`DrainSnapshot`/`drainVerdict`/`DEFAULT_DRAIN_GRACE_MS`);实例发现
|
package/llms.txt
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
<!--
|
|
2
2
|
llms.txt — 消费方(使用者)视角索引 · @sema-agent/settings-schema
|
|
3
|
-
重写日期: 2026-10-
|
|
3
|
+
重写日期: 2026-10-18 | 包版本: 14.2.0
|
|
4
4
|
生成方式: 无生成脚本——按当前树的 src/*.ts 导出面 + package.json + README/CHANGELOG 手写事实版;
|
|
5
5
|
每条断言附证据坐标(文件:符号),刻意不用行号(行号随每版腐烂,符号名由 typecheck/test 钉住)。
|
|
6
6
|
刷新触发: package.json 版号变更(test/docs-hygiene.test.ts D 组钉「包版本:」与 package.json 相等、
|
|
@@ -89,17 +89,21 @@ llms.txt — 消费方(使用者)视角索引 · @sema-agent/settings-schema
|
|
|
89
89
|
6.x 存量 workers 文档在 `parseDomain` 之前跑一次 `migrateWorkersDomain`(或 bin `npx @sema-agent/settings-schema migrate-workers`;7.0.1 起 stdout = 结论行 `outcome=… written=…` + JSON,没写时 `wouldChange` 取代 `changed`)。
|
|
90
90
|
(src/execution-lanes.ts;src/types.ts: `WorkerSpec`;src/migrate-workers.ts)
|
|
91
91
|
- **hooks 契约**:33 个 hook 事件的全集 + owner 表 + 逐事件输入/输出形 + 配置面:hook 条目五种 type(`HOOK_ENTRY_TYPES`,含 `mcp_tool`)与**一只**
|
|
92
|
-
坏形分类器 `classifyHooksConfig(settingsDoc)`(非守卫事件坏块逐个剔、守卫事件 PreToolUse / PermissionRequest 任何坏处或守卫迹象 ⇒ 整份拒;码 + 坐标 + 坏字段名 `field`(坏块是匹配器 / 条目 ⇒
|
|
92
|
+
坏形分类器 `classifyHooksConfig(settingsDoc)`(非守卫事件坏块逐个剔、守卫事件 PreToolUse / PermissionRequest 任何坏处或守卫迹象 ⇒ 整份拒;码 + 坐标 + 坏字段名 `field`(坏块是匹配器 / 条目 ⇒ 它上面出问题的键,块不是对象才缺席;一块多个迹象时先该块自身的迹象(自有守卫事件键;条目自己是匹配器形取 `hooks`),再按文档序找嵌套迹象;匹配器下合形条目列表里的迹象归各条目)、零句子、零 zod 自含;
|
|
93
93
|
闭包里 JS 内建之外只有一个自由名 `HOOK_EVENTS` —— 整函数抄走的生成器(client-core)须把本包运行期导出 `HOOK_EVENTS`(上游常量)注入抄本作用域,不许贴字面事件表),
|
|
94
94
|
`HooksConfig` / `HookEntry` 等 zod 面是它的投影;事件与 type 两张闭集与上游的漂移由常驻门看住(上游有而本包没有的词 ⇒ 门红并点名)。http 钩子 header 里 `$VAR` / `${VAR}` 的展开也只有一只读法(名单内展开、名单外与凭据名置空并回报)。(src/hooks.ts: `HOOK_EVENTS` / `interpolateHookEnvVars`)
|
|
95
95
|
- **跨会话两键**(1.6.0 新增,`settings.json` 面;6.0.0 词表随 core 7.30.0 改):`crossSessionInbound`(wake/next-turn/hold/refuse + `default`=未设;`accept` 已退役,文件层响亮拒)
|
|
96
96
|
与 `dialogExpiry`(60s/5m/10m/never,缺省 5m);另出两只层读取器,坏值 `ok:false` 不静默折缺省。
|
|
97
97
|
(src/cross-session.ts: `CrossSessionSettings` / `readCrossSessionInbound` / `readDialogExpiry`)
|
|
98
|
-
- **安全合并表** `SAFETY_MERGE_SPEC` + 信任阶梯 `trustRank` / `isAtLeast` + 成员级准入 `memberAdmission
|
|
98
|
+
- **安全合并表** `SAFETY_MERGE_SPEC` + 信任阶梯 `trustRank` / `isAtLeast` + 成员级准入 `memberAdmission`;关停位 `disableBypassPermissionsMode` / `disableAutoMode`
|
|
99
|
+
= 类目 `killSwitches`(尾插):任一层可收紧、不放宽 —— 开 = tighten@local(任一设置文件层),关 / 非布尔 / 不带值 = 行地板 global,合并 boolStricter;没有「只许托管层」的地板。
|
|
99
100
|
(src/safety-merge-spec.ts)
|
|
100
101
|
- **设置源表 + 层准入**:`SETTINGS_SOURCES`(合并序)/ `SETTINGS_SOURCE_CONTRACT`(信任档 + 是否仓库可控;本地层与项目层同 `project` 档)/
|
|
101
102
|
`WORKSPACE_TRUST_STATES` / `layerAdmission(source, workspace, category, member?, value?)`(地板先判;仓库可控层未受信只收 tighten)/
|
|
102
|
-
`settingsSourceContract(source)`(源表唯一查口:本包要层档的函数都经它,不收调用方给的档;层只带源名)。
|
|
103
|
+
`settingsSourceContract(source)`(源表唯一查口:本包要层档的函数都经它,不收调用方给的档;层只带源名)。
|
|
104
|
+
写给另一个工具的项目层设置文件(克隆来的 `.claude/settings*.json`)= 尾插源 `foreignProjectSettings`(项目档、仓库可控、`tightenOnly`):不论工作区读数只准入 tighten 成员
|
|
105
|
+
(deny / ask、关停位的开、沙箱收紧极),其余答尾插判词 `tighten_only`(受信也救不了)或 `below_trust_floor`;`layerReadsTightenOnly(source, workspace)` = 「这一层是否只读收紧方向」唯一答案;
|
|
106
|
+
没读的部分一行披露 `buildLayerPartsUnreadNotice({ source, workspace, file, parts })`(码 `settings.layer_parts_unread`,两种起因同一句形)。(src/settings-sources.ts)
|
|
103
107
|
- **URL 名单一条模式的判法**(13.0.0):一条律两只出口 —— `urlAllowPatternMatches`(命中面 ⊆ CC `g9`,补上游四洞:写明缺省端口照判、`*` 协议只通配
|
|
104
108
|
http/https/ws/wss 且 `ws+unix:` 套接字段逐字、解析不出的模式不放、解码出的字面 `*` 不当通配)/ `urlDenyPatternMatches`(⊇ `g9` ∪ 整串 glob)。
|
|
105
109
|
偏离登 `docs/CC-DIVERGENCE.md`。(src/url-pattern.ts)
|
|
@@ -108,10 +112,14 @@ llms.txt — 消费方(使用者)视角索引 · @sema-agent/settings-schema
|
|
|
108
112
|
`httpHookEnvVarsAllowed(hookVars, layers, workspace)`(取交);准入 ⇔ `layerAdmission(源, 工作区读数, "httpHookAllowlists") === "admitted"`。
|
|
109
113
|
(src/http-hook-allowlists.ts)
|
|
110
114
|
- **MCP 名单判决**(13.0.0):`mcpServerPolicyVerdict(server, layers)` → `McpPolicyBlock{name, list, rule, target, written, sources}` 或 `undefined`;
|
|
111
|
-
判按展开后目标、回显只按展开前写法(stdio 只给可执行名 + 参数个数);托管层 = 源表档 `managed` 的源(层只带源名)。(src/mcp-server-policy.ts)
|
|
112
|
-
- **请求面 MCP 条目判官**(14.0.0,`src/mcp-request-entry.ts`):`isUsableWireName` / `describeBadWireName`(引擎线上名长界 `TOOL_WIRE_NAME_MAX_CHARS`
|
|
113
|
-
`isContentOriginWord` / `describeBadContentOrigin` · `readMcpIdentityHeaders` · `readRequestMcpTransport`(硬坏形 `ok:false` 点名键路径;软坏形读器丢键并记进 `lost
|
|
115
|
+
判按展开后目标、回显只按展开前写法(stdio 只给可执行名 + 参数个数);托管层 = 源表档 `managed` 的源(层只带源名);只收紧的源只贡献拒绝名单(允许名单是拼接 = 放宽,不读)。(src/mcp-server-policy.ts)
|
|
116
|
+
- **请求面 MCP 条目判官**(14.0.0,`src/mcp-request-entry.ts`):`isUsableWireName` / `describeBadWireName`(引擎线上名长界 `TOOL_WIRE_NAME_MAX_CHARS` 的镜像;首尾空白 = 坏名,不 trim 不规范化,内部空白合法)·
|
|
117
|
+
`isContentOriginWord` / `describeBadContentOrigin`(回显剥控制与双向字符、截 64 字、引号形)· `readMcpIdentityHeaders` · `readRequestMcpTransport`(硬坏形 `ok:false` 点名键路径;软坏形读器丢键并记进 `lost`;
|
|
118
|
+
`env` / `headers` 只收纯数据的「名 → 串」记录,`Map` / 类实例 / 自有 `__proto__` 成员不收、交副本,`lost` 条目带 `member` / `fault` 机读位)
|
|
114
119
|
+ 值种类描述件 —— 服务端请求腿与壳的发送前预检同读一份(判据与原因句逐字同)。`toolFaces` 声明在本包解析透明,形归引擎摄入侧判,本包不镜像工具面词表。
|
|
120
|
+
- **一行回显的剥除集**(`src/control-and-bidi.ts`,主 barrel):`CONTROL_AND_BIDI_CHARS`(C0 + DEL + 12 个 `Bidi_Control` 码点,正则字符类体的源码文本)·
|
|
121
|
+
`stripControlAndBidi(text)` · `hasControlOrBidi(text)`;外来串落成一行(拒句 / 告警 / 日志 / 屏上)前剥的唯一一份,C1 与 U+2028 / U+2029 不在集里;
|
|
122
|
+
是本包的回显策略(不是引擎双向码点表的镜像),请求面描述器与消费方都读它,禁自存字符类。
|
|
115
123
|
- **prompts 域单轴**(14.0.0):只装中心 artifact(存储 `PromptsConfig = { artifact?, workers? }` / 下发 `EffectivePromptsWire = { schemaVersion: 2, artifact }` /
|
|
116
124
|
唯一选择读法 `promptArtifactFor`);本包镜像 artifact v3 的结构与上界,语义交引擎 verify;13.x 两轴是墓碑,存量经一次性迁移 SS-M10。
|
|
117
125
|
- **界面语言设置片段**(13.0.0):`UI_LANGUAGE_SETTING`(`semaUiLanguage`,`en` / `zh`,类 `ui`,用户设置)+ `readUiLanguage`(词表外 `ok:false`,不猜)。
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sema-agent/settings-schema",
|
|
3
|
-
"version": "14.
|
|
3
|
+
"version": "14.2.0",
|
|
4
4
|
"description": "Sema settings schema — pure config contract (zod domains + effective-config + roster resolution + ref-integrity + remoteExec) shared by sema-web-admin, sema-server, and the TOC desktop/CLI. One source of truth. (Renamed at 1.0.0 from @sema-agent/registry-core — name and docs only, no behavior change; note the range moves 0.19.0 -> 1.0.0, so a dependency must become ^1.0.0. The old names @sema-agent/registry-core <=0.19.0 and @sema-ai/registry-core remain published, frozen, for migration.)",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "BUSL-1.1",
|