@sema-agent/settings-schema 3.0.0 → 4.0.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.
Files changed (46) hide show
  1. package/CHANGELOG.md +327 -1
  2. package/README.md +16 -8
  3. package/conformance/VERSION +1 -1
  4. package/conformance/cases/t01-absent-domain-key-not-null/expected.json +93 -0
  5. package/conformance/cases/t01-absent-domain-key-not-null/input.json +29 -0
  6. package/conformance/cases/t01-absent-domain-key-not-null/meta.json +6 -0
  7. package/conformance/cases/t02-entry-salvage-vs-whole-domain-refusal/expected.json +16 -0
  8. package/conformance/cases/t02-entry-salvage-vs-whole-domain-refusal/input.json +32 -0
  9. package/conformance/cases/t02-entry-salvage-vs-whole-domain-refusal/meta.json +6 -0
  10. package/conformance/cases/t03-prototype-name-key-not-swallowed/expected.json +107 -0
  11. package/conformance/cases/t03-prototype-name-key-not-swallowed/input.json +25 -0
  12. package/conformance/cases/t03-prototype-name-key-not-swallowed/meta.json +6 -0
  13. package/conformance/cases/t04-secret-literal-never-in-warning-value/expected.json +105 -0
  14. package/conformance/cases/t04-secret-literal-never-in-warning-value/input.json +25 -0
  15. package/conformance/cases/t04-secret-literal-never-in-warning-value/meta.json +14 -0
  16. package/conformance/historical/settings-schema@1.0.0.json +84 -3
  17. package/conformance/historical/settings-schema@1.10.0.json +84 -3
  18. package/conformance/historical/settings-schema@1.5.0.json +84 -3
  19. package/conformance/historical/settings-schema@2.0.0.json +83 -2
  20. package/conformance/historical/settings-schema@2.1.0.json +83 -2
  21. package/dist/api/auth.d.ts +21 -0
  22. package/dist/api/auth.js +21 -0
  23. package/dist/config-fns.d.ts +76 -11
  24. package/dist/config-fns.js +81 -26
  25. package/dist/conformance/contract-adapter.js +37 -0
  26. package/dist/conformance/entry-origin.d.ts +24 -0
  27. package/dist/conformance/entry-origin.js +86 -0
  28. package/dist/conformance/run.js +6 -6
  29. package/dist/conformance/types.d.ts +5 -1
  30. package/dist/conformance/warnings.d.ts +7 -48
  31. package/dist/conformance/warnings.js +17 -40
  32. package/dist/cross-domain.d.ts +27 -7
  33. package/dist/cross-domain.js +31 -11
  34. package/dist/hooks.d.ts +2 -2
  35. package/dist/hooks.js +2 -2
  36. package/dist/node.d.ts +1 -0
  37. package/dist/node.js +1 -0
  38. package/dist/prompts-digest.d.ts +16 -0
  39. package/dist/prompts-digest.js +48 -0
  40. package/dist/scheduler-store-node.d.ts +7 -19
  41. package/dist/scheduler-store-node.js +8 -26
  42. package/dist/scheduler-store.d.ts +1 -1
  43. package/dist/scheduler-store.js +1 -1
  44. package/dist/types.d.ts +2 -2
  45. package/dist/types.js +3 -3
  46. package/package.json +3 -1
@@ -56,7 +56,7 @@ export function isSchedulerRecord(v) {
56
56
  * 窄读判据:`lifetime` 不在本契约的显式键上(server 写侧作为 forward-compat 字段随行),按未知
57
57
  * 字段窄读——`"session"` 行是会话链键,零触碰;其余(缺席=durable 默认)按 durable 归一。
58
58
  *
59
- * 落日(1.11.0):删除它 = **持久数据**面的破坏(仍按旧键存着的 durable 行会就此找不回),所以不能在
59
+ * 落日(2.0.0):删除它 = **持久数据**面的破坏(仍按旧键存着的 durable 行会就此找不回),所以不能在
60
60
  * minor 上一删了事 —— 归下一个 MAJOR,按持久数据的规矩办(响亮拒收 + 一次性迁移)。在那之前,本版把
61
61
  * 这次重写从**静默**改成**出声**(`durable-scope-rekeyed`,带改写前后):关窗的前提是有人能证明它
62
62
  * 已经不再触发,而不是有人记得它还在。
package/dist/types.d.ts CHANGED
@@ -125,7 +125,7 @@ export interface ParseTransparentKey {
125
125
  * 五行同义散文 ×3,没有任何一处能回答「一共有几个这样的键、分别归谁校验」。那正是「修法给每个新键加一条
126
126
  * 特判」的形。这张表把那段理由收成一处:键在这里登记,JSDoc 只留一行指过来。
127
127
  *
128
- * 1.11.0 起整域 all-or-nothing 已按类改成逐条容错(坏条目逐条丢、同域其余条目存活),所以「设形判据
128
+ * 2.0.0 起整域 all-or-nothing 已按类改成逐条容错(坏条目逐条丢、同域其余条目存活),所以「设形判据
129
129
  * 会抹掉整域」这条**理由本身已经弱化** —— 但登记表要回答的问题没变:这些键的形归谁校验。新键要不要
130
130
  * 解析透明,按「本包是不是那张形表的属主」判,不再按「怕连坐」判。
131
131
  *
@@ -4812,7 +4812,7 @@ export type ExecutionPolicy = z.infer<typeof ExecutionPolicy>;
4812
4812
  * center mint 端点)统一产 **uuidv7**。36 字符,天然满足 design/142 §1.2 段编码 64 上限。
4813
4813
  * SINGLE-SOURCE 纪律:本常量是引擎那条正则的**自持镜像**(本仓不带引擎运行时依赖轴),对拍走 dev-only
4814
4814
  * conformance(never a runtime import,EffectiveKey/coreTypes 先例)。
4815
- * 1.11.0:drift-lock 已建(`test/upstream-drift.test.ts` ③)—— pattern 必须与引擎逐字相同,唯一成文的差是
4815
+ * 2.0.0:drift-lock 已建(`test/upstream-drift.test.ts` ③)—— pattern 必须与引擎逐字相同,唯一成文的差是
4816
4816
  * flags:本常量刻意**不带** `i`,因为它是登记簿 Record 的**键**,大小写不同的同一个 UUID 会变成两条登记行
4817
4817
  * (同一 project 双注册);引擎侧是识别语义(读 marker / 找回身份),放宽合理。 */
4818
4818
  export declare const PROJECT_ID_REGEX: RegExp;
package/dist/types.js CHANGED
@@ -301,7 +301,7 @@ export const SealedApiKey = z.object({
301
301
  * 五行同义散文 ×3,没有任何一处能回答「一共有几个这样的键、分别归谁校验」。那正是「修法给每个新键加一条
302
302
  * 特判」的形。这张表把那段理由收成一处:键在这里登记,JSDoc 只留一行指过来。
303
303
  *
304
- * 1.11.0 起整域 all-or-nothing 已按类改成逐条容错(坏条目逐条丢、同域其余条目存活),所以「设形判据
304
+ * 2.0.0 起整域 all-or-nothing 已按类改成逐条容错(坏条目逐条丢、同域其余条目存活),所以「设形判据
305
305
  * 会抹掉整域」这条**理由本身已经弱化** —— 但登记表要回答的问题没变:这些键的形归谁校验。新键要不要
306
306
  * 解析透明,按「本包是不是那张形表的属主」判,不再按「怕连坐」判。
307
307
  *
@@ -634,7 +634,7 @@ export const ScenarioEntry = z.object({
634
634
  // registry field would become an ambiguous precedence channel」):配置域 prompt 单入口=center
635
635
  // prompts binding(scenario 维度);引擎 API 层 TaskSpec.systemPrompt 保留(不同层,勿混)。
636
636
  // 现网无用户直删;z.object 非 strict ⇒ 存量数据带 prompt 被 strip,parse 不炸。
637
- // 落日(1.11.0):本条是**纯墓碑**(零代码,靠 strip 生效),没有要删的兼容码;它留在这里的唯一作用
637
+ // 落日(2.0.0):本条是**纯墓碑**(零代码,靠 strip 生效),没有要删的兼容码;它留在这里的唯一作用
638
638
  // 是让下一个读到这段 schema 的人知道 `prompt` 这个名字曾经在这里、别再铸回来。0.19.0 起存量文档带
639
639
  // 它会被 `unknown-keys-dropped` 点名,所以「还有人在写它」是可观察的,不靠记忆。
640
640
  enabled: z.boolean().default(true),
@@ -1336,7 +1336,7 @@ export const ExecutionPolicy = z.object({
1336
1336
  * center mint 端点)统一产 **uuidv7**。36 字符,天然满足 design/142 §1.2 段编码 64 上限。
1337
1337
  * SINGLE-SOURCE 纪律:本常量是引擎那条正则的**自持镜像**(本仓不带引擎运行时依赖轴),对拍走 dev-only
1338
1338
  * conformance(never a runtime import,EffectiveKey/coreTypes 先例)。
1339
- * 1.11.0:drift-lock 已建(`test/upstream-drift.test.ts` ③)—— pattern 必须与引擎逐字相同,唯一成文的差是
1339
+ * 2.0.0:drift-lock 已建(`test/upstream-drift.test.ts` ③)—— pattern 必须与引擎逐字相同,唯一成文的差是
1340
1340
  * flags:本常量刻意**不带** `i`,因为它是登记簿 Record 的**键**,大小写不同的同一个 UUID 会变成两条登记行
1341
1341
  * (同一 project 双注册);引擎侧是识别语义(读 marker / 找回身份),放宽合理。 */
1342
1342
  export const PROJECT_ID_REGEX = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sema-agent/settings-schema",
3
- "version": "3.0.0",
3
+ "version": "4.0.0",
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",
@@ -121,6 +121,8 @@
121
121
  "test:watch": "vitest",
122
122
  "e2e": "node examples/toc-e2e.mjs",
123
123
  "drift:cc": "node scripts/extract-cc-hook-events.mjs",
124
+ "conformance:bless": "node scripts/gen-conformance.mjs",
125
+ "conformance:historical": "node scripts/conformance-historical.mjs",
124
126
  "prepare": "npm run build",
125
127
  "prepublishOnly": "npm run build && npm run test",
126
128
  "publish:npm": "npm publish --access public --@sema-agent:registry=https://registry.npmjs.org/ --\"//registry.npmjs.org/:_authToken=${NPM_TOKEN}\""