@sema-agent/settings-schema 1.7.0 → 1.7.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/CHANGELOG.md +9 -0
- package/dist/types.d.ts +27 -15
- package/dist/types.js +10 -6
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -6,6 +6,15 @@
|
|
|
6
6
|
> `@sema-agent/registry-core`(更早还曾是 `@sema-ai/registry-core`)。本档 `0.19.0` 以下各节里的
|
|
7
7
|
> 包名是**历史记录**,如实保留不追改。
|
|
8
8
|
|
|
9
|
+
## 1.7.1 — 2026-09-06 — `source` 改**只管类型**(撤回 1.7.0 的 min/max 解析拒;patch)
|
|
10
|
+
|
|
11
|
+
- 1.7.0 把标签规则(非空 ≤80)写进 zod ⇒ 本域整域 all-or-nothing 解析下,**一个**空/超长标签让整套 `mcp.servers`
|
|
12
|
+
在解析处整域默认(每台 server 消失),消费方 boot 期还容忍空目录——一个显示标签不该有这种爆炸半径
|
|
13
|
+
(消费方 codex 对抗复审 [high],真库复现:一坏一好两条 server 双双消失)。1.7.1 起 `source: z.string().optional()`,
|
|
14
|
+
规则单点留在消费方投影层(坏形丢键留 server、留痕)。非字符串仍在解析处拒(那是 JSON 类型错,与任何字段同类)。
|
|
15
|
+
- 顺带如实记:本域 all-or-nothing 解析 + 消费方 boot 容忍空目录,对 `contentOrigin` 闭表等一切解析拒的键**早已**是
|
|
16
|
+
同一爆炸半径(类病,先于本键存在)——归消费方与本包另立单据处置(逐条目拒而不是整域拒),不在本 patch 射程。
|
|
17
|
+
|
|
9
18
|
## 1.7.0 — 2026-09-06 — `mcp.servers[].source` 分组标签(sema-server B-036 / S-143 源头修的声明面半场;新键=minor)
|
|
10
19
|
|
|
11
20
|
- **`McpServerSpec.source?: string`**(非空、≤80 字;`.optional()` 无默认):声明方自述的层级标签,1:1 对应引擎
|
package/dist/types.d.ts
CHANGED
|
@@ -7322,11 +7322,15 @@ export declare const McpServerSpec: z.ZodObject<{
|
|
|
7322
7322
|
* consumer can group servers by where they were declared). An OPEN set: CC's `plugin` / `user` /
|
|
7323
7323
|
* `project` / `local` are conventions, not a vocabulary — a deployment's own word is equally legal, so
|
|
7324
7324
|
* no closed table here (a closed table would reject the operator's grouping word at parse). ABSENT =
|
|
7325
|
-
* no label (`.optional()`, no default — a label has no default tier).
|
|
7326
|
-
*
|
|
7327
|
-
*
|
|
7328
|
-
*
|
|
7329
|
-
* the
|
|
7325
|
+
* no label (`.optional()`, no default — a label has no default tier). 🔴 TYPE-ONLY here (any string):
|
|
7326
|
+
* the label RULE (non-empty, ≤80 chars) lives in ONE place — the consumer's projection helper, which
|
|
7327
|
+
* drops a malformed label's KEY, keeps the server and records the drop. It deliberately does NOT live
|
|
7328
|
+
* here: this domain parses all-or-nothing, so a `min(1)`/`max(80)` at parse would let one empty label
|
|
7329
|
+
* default the ENTIRE mcp domain (every server gone) — a blast radius a display label must never have
|
|
7330
|
+
* (1.7.0 shipped that shape for a few hours; 1.7.1 retracts it). Display-only: no gate / policy / trust
|
|
7331
|
+
* effect (the trust axis is `contentOrigin` above, which stays a closed table). Before this key existed
|
|
7332
|
+
* both legs stripped it (default-strip object); this is the declaration half of the consumer-side fix
|
|
7333
|
+
* (ticket B-036 / S-143), the projection half lives in the consumer. */
|
|
7330
7334
|
source: z.ZodOptional<z.ZodString>;
|
|
7331
7335
|
notes: z.ZodOptional<z.ZodString>;
|
|
7332
7336
|
}, "strip", z.ZodTypeAny, {
|
|
@@ -7447,11 +7451,15 @@ export declare const McpConfig: z.ZodEffects<z.ZodObject<{
|
|
|
7447
7451
|
* consumer can group servers by where they were declared). An OPEN set: CC's `plugin` / `user` /
|
|
7448
7452
|
* `project` / `local` are conventions, not a vocabulary — a deployment's own word is equally legal, so
|
|
7449
7453
|
* no closed table here (a closed table would reject the operator's grouping word at parse). ABSENT =
|
|
7450
|
-
* no label (`.optional()`, no default — a label has no default tier).
|
|
7451
|
-
*
|
|
7452
|
-
*
|
|
7453
|
-
*
|
|
7454
|
-
* the
|
|
7454
|
+
* no label (`.optional()`, no default — a label has no default tier). 🔴 TYPE-ONLY here (any string):
|
|
7455
|
+
* the label RULE (non-empty, ≤80 chars) lives in ONE place — the consumer's projection helper, which
|
|
7456
|
+
* drops a malformed label's KEY, keeps the server and records the drop. It deliberately does NOT live
|
|
7457
|
+
* here: this domain parses all-or-nothing, so a `min(1)`/`max(80)` at parse would let one empty label
|
|
7458
|
+
* default the ENTIRE mcp domain (every server gone) — a blast radius a display label must never have
|
|
7459
|
+
* (1.7.0 shipped that shape for a few hours; 1.7.1 retracts it). Display-only: no gate / policy / trust
|
|
7460
|
+
* effect (the trust axis is `contentOrigin` above, which stays a closed table). Before this key existed
|
|
7461
|
+
* both legs stripped it (default-strip object); this is the declaration half of the consumer-side fix
|
|
7462
|
+
* (ticket B-036 / S-143), the projection half lives in the consumer. */
|
|
7455
7463
|
source: z.ZodOptional<z.ZodString>;
|
|
7456
7464
|
notes: z.ZodOptional<z.ZodString>;
|
|
7457
7465
|
}, "strip", z.ZodTypeAny, {
|
|
@@ -10114,11 +10122,15 @@ export declare const DOMAIN_SCHEMAS: {
|
|
|
10114
10122
|
* consumer can group servers by where they were declared). An OPEN set: CC's `plugin` / `user` /
|
|
10115
10123
|
* `project` / `local` are conventions, not a vocabulary — a deployment's own word is equally legal, so
|
|
10116
10124
|
* no closed table here (a closed table would reject the operator's grouping word at parse). ABSENT =
|
|
10117
|
-
* no label (`.optional()`, no default — a label has no default tier).
|
|
10118
|
-
*
|
|
10119
|
-
*
|
|
10120
|
-
*
|
|
10121
|
-
* the
|
|
10125
|
+
* no label (`.optional()`, no default — a label has no default tier). 🔴 TYPE-ONLY here (any string):
|
|
10126
|
+
* the label RULE (non-empty, ≤80 chars) lives in ONE place — the consumer's projection helper, which
|
|
10127
|
+
* drops a malformed label's KEY, keeps the server and records the drop. It deliberately does NOT live
|
|
10128
|
+
* here: this domain parses all-or-nothing, so a `min(1)`/`max(80)` at parse would let one empty label
|
|
10129
|
+
* default the ENTIRE mcp domain (every server gone) — a blast radius a display label must never have
|
|
10130
|
+
* (1.7.0 shipped that shape for a few hours; 1.7.1 retracts it). Display-only: no gate / policy / trust
|
|
10131
|
+
* effect (the trust axis is `contentOrigin` above, which stays a closed table). Before this key existed
|
|
10132
|
+
* both legs stripped it (default-strip object); this is the declaration half of the consumer-side fix
|
|
10133
|
+
* (ticket B-036 / S-143), the projection half lives in the consumer. */
|
|
10122
10134
|
source: z.ZodOptional<z.ZodString>;
|
|
10123
10135
|
notes: z.ZodOptional<z.ZodString>;
|
|
10124
10136
|
}, "strip", z.ZodTypeAny, {
|
package/dist/types.js
CHANGED
|
@@ -1893,12 +1893,16 @@ export const McpServerSpec = z.object({
|
|
|
1893
1893
|
* consumer can group servers by where they were declared). An OPEN set: CC's `plugin` / `user` /
|
|
1894
1894
|
* `project` / `local` are conventions, not a vocabulary — a deployment's own word is equally legal, so
|
|
1895
1895
|
* no closed table here (a closed table would reject the operator's grouping word at parse). ABSENT =
|
|
1896
|
-
* no label (`.optional()`, no default — a label has no default tier).
|
|
1897
|
-
*
|
|
1898
|
-
*
|
|
1899
|
-
*
|
|
1900
|
-
* the
|
|
1901
|
-
|
|
1896
|
+
* no label (`.optional()`, no default — a label has no default tier). 🔴 TYPE-ONLY here (any string):
|
|
1897
|
+
* the label RULE (non-empty, ≤80 chars) lives in ONE place — the consumer's projection helper, which
|
|
1898
|
+
* drops a malformed label's KEY, keeps the server and records the drop. It deliberately does NOT live
|
|
1899
|
+
* here: this domain parses all-or-nothing, so a `min(1)`/`max(80)` at parse would let one empty label
|
|
1900
|
+
* default the ENTIRE mcp domain (every server gone) — a blast radius a display label must never have
|
|
1901
|
+
* (1.7.0 shipped that shape for a few hours; 1.7.1 retracts it). Display-only: no gate / policy / trust
|
|
1902
|
+
* effect (the trust axis is `contentOrigin` above, which stays a closed table). Before this key existed
|
|
1903
|
+
* both legs stripped it (default-strip object); this is the declaration half of the consumer-side fix
|
|
1904
|
+
* (ticket B-036 / S-143), the projection half lives in the consumer. */
|
|
1905
|
+
source: z.string().optional(),
|
|
1902
1906
|
notes: z.string().optional(),
|
|
1903
1907
|
});
|
|
1904
1908
|
export const McpConfig = z
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sema-agent/settings-schema",
|
|
3
|
-
"version": "1.7.
|
|
3
|
+
"version": "1.7.1",
|
|
4
4
|
"description": "Sema settings schema — pure config contract (zod domains + effective-config + roster resolution + ref-integrity + remoteExec) shared by sema-registry, 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",
|