@sema-agent/settings-schema 14.7.0 → 15.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 (60) hide show
  1. package/CHANGELOG.md +306 -0
  2. package/README.md +80 -3
  3. package/conformance/VERSION +1 -1
  4. package/conformance/cases/c59-s784-g3-k8s-missing-image/input.json +4 -1
  5. package/conformance/cases/c61-s784-g3-other-lane-key/input.json +1 -0
  6. package/conformance/cases/c64-s784-multitenant-local-store/input.json +2 -1
  7. package/dist/atomic-write.d.ts +15 -0
  8. package/dist/atomic-write.js +109 -5
  9. package/dist/catalog-manages.d.ts +15 -0
  10. package/dist/catalog-manages.js +60 -0
  11. package/dist/center-refs.d.ts +68 -0
  12. package/dist/center-refs.js +70 -0
  13. package/dist/config-dir-migration.js +1 -0
  14. package/dist/config-fns.js +5 -3
  15. package/dist/config-root-documents.d.ts +106 -0
  16. package/dist/config-root-documents.js +93 -0
  17. package/dist/config-root-node.d.ts +117 -0
  18. package/dist/config-root-node.js +260 -0
  19. package/dist/conformance/run.d.ts +3 -0
  20. package/dist/conformance/run.js +10 -6
  21. package/dist/conformance/temp-roots.d.ts +31 -0
  22. package/dist/conformance/temp-roots.js +184 -0
  23. package/dist/default-model.d.ts +1 -1
  24. package/dist/default-model.js +5 -4
  25. package/dist/env-model-table.d.ts +163 -0
  26. package/dist/env-model-table.js +257 -0
  27. package/dist/execution-lane-index.d.ts +6 -0
  28. package/dist/execution-lane-index.js +8 -0
  29. package/dist/execution-lanes.d.ts +2 -1
  30. package/dist/execution-lanes.js +6 -4
  31. package/dist/fleet.d.ts +25 -7
  32. package/dist/fleet.js +24 -6
  33. package/dist/index.d.ts +5 -0
  34. package/dist/index.js +5 -0
  35. package/dist/mcp-request-entry.d.ts +58 -6
  36. package/dist/mcp-request-entry.js +45 -13
  37. package/dist/mcp-server-name.d.ts +17 -0
  38. package/dist/mcp-server-name.js +19 -0
  39. package/dist/migration-receipt.d.ts +10 -6
  40. package/dist/migration-receipt.js +5 -3
  41. package/dist/node.d.ts +1 -0
  42. package/dist/node.js +2 -0
  43. package/dist/one-time-migrations.d.ts +4 -2
  44. package/dist/one-time-migrations.js +29 -1
  45. package/dist/own-key-read.d.ts +1 -1
  46. package/dist/remote-exec.d.ts +1 -1
  47. package/dist/remote-exec.js +4 -2
  48. package/dist/retired-form.d.ts +19 -0
  49. package/dist/retired-form.js +24 -1
  50. package/dist/safety-merge-spec.d.ts +6 -6
  51. package/dist/tier-words.d.ts +33 -0
  52. package/dist/tier-words.js +43 -0
  53. package/dist/types.d.ts +6 -0
  54. package/dist/types.js +29 -5
  55. package/dist/worker-row-verdict.js +7 -1
  56. package/docs/API-SURFACE.md +68 -4
  57. package/docs/CONSUMER-INTEGRATION.md +72 -2
  58. package/llms-full.txt +8 -3
  59. package/llms.txt +9 -3
  60. package/package.json +2 -2
@@ -4,9 +4,9 @@
4
4
  > 每次全量重算并逐名比对 —— 加 / 删 / 改形一个导出而不重生成本档 ⇒ 红。导出面的每次变动因此以本档的 diff 出现在评审里。
5
5
  > 形:`value` = 运行期拿得到的值;`type` = 只在类型层;`value+type` = 同名的值与类型(zod schema 与它推出的类型)。
6
6
 
7
- 子路径 24 条(资产出口 `./package.json` / `./fleet-paths.json` 不是模块,不列),导出名合计 1396 个(同名在多条子路径上各计一次)。
7
+ 子路径 24 条(资产出口 `./package.json` / `./fleet-paths.json` 不是模块,不列),导出名合计 1460 个(同名在多条子路径上各计一次)。
8
8
 
9
- ## `.`(708)
9
+ ## `.`(761)
10
10
 
11
11
  - `ABSOLUTE_HOST_PATH_MAX` — value
12
12
  - `ACCESS_TOKEN_TTL_SECONDS` — value
@@ -33,8 +33,12 @@
33
33
  - `BaseHookInput` — value+type
34
34
  - `BudgetGroup` — value+type
35
35
  - `BudgetGroupMember` — value
36
+ - `CATALOG_REPLACES_ENV_MODELS_CODE` — value
37
+ - `CENTER_REFS_VERDICTS` — value
38
+ - `CENTER_REF_FAULTS` — value
36
39
  - `COMMAND_DECISIONS` — value
37
40
  - `CONFIG_CHANGE_SOURCES` — value
41
+ - `CONFIG_ROOT_DOCUMENTS` — value
38
42
  - `CONTROL_AND_BIDI_CHARS` — value
39
43
  - `CREDENTIAL_PARAM_NAMES` — value
40
44
  - `CROSS_SESSION_INBOUND_UNSET` — value
@@ -44,6 +48,12 @@
44
48
  - `CasWriteResult` — type
45
49
  - `CatalogDefaultModel` — type
46
50
  - `CatalogDefaultSource` — type
51
+ - `CenterRefFault` — type
52
+ - `CenterRefLookup` — type
53
+ - `CenterRefMember` — type
54
+ - `CenterRefMemberVerdict` — type
55
+ - `CenterRefsResolution` — type
56
+ - `CenterRefsVerdict` — type
47
57
  - `CollabConfig` — value+type
48
58
  - `CollabEarlyStop` — value+type
49
59
  - `CollabFinalizerType` — value+type
@@ -56,6 +66,7 @@
56
66
  - `ConfigChangeHookInput` — value
57
67
  - `ConfigPath` — type
58
68
  - `ConfigReader` — type
69
+ - `ConfigRootDocument` — type
59
70
  - `CredentialHandleAnswer` — value+type
60
71
  - `CredentialParamName` — type
61
72
  - `CredentialResolveRequest` — value+type
@@ -71,6 +82,7 @@
71
82
  - `DEFAULT_HEARTBEAT_MS` — value
72
83
  - `DEFAULT_HOOK_TIMEOUT_SECONDS` — value
73
84
  - `DEFAULT_JWKS_REFRESH_MIN_INTERVAL_SEC` — value
85
+ - `DEFAULT_MODEL_KEY` — value
74
86
  - `DEFAULT_OFFLINE_GRACE_SEC` — value
75
87
  - `DEFAULT_ROLE_TIER_LADDER` — value
76
88
  - `DELIVER_DENYLIST` — value
@@ -121,6 +133,9 @@
121
133
  - `DroppedEntryReasonCode` — type
122
134
  - `ENGINE_OWNED_HOOK_EVENTS` — value
123
135
  - `ENGINE_SIGNAL_KEY` — value
136
+ - `ENV_MODELS_DECISIONS` — value
137
+ - `ENV_MODELS_DOCUMENT` — value
138
+ - `ENV_MODEL_TABLE_KEYS` — value
124
139
  - `ENV_NAME` — value
125
140
  - `EXECUTION_LANES` — value
126
141
  - `EXECUTION_LANE_WORDS` — value
@@ -143,8 +158,23 @@
143
158
  - `EntitlementTier` — value+type
144
159
  - `EntryKeptIndex` — type
145
160
  - `EntrySalvageResult` — type
161
+ - `EnvCheapSlot` — type
162
+ - `EnvModelBaseline` — type
163
+ - `EnvModelTableEntry` — type
164
+ - `EnvModelTableKey` — type
165
+ - `EnvModelTableLanding` — type
166
+ - `EnvModelTableReceipt` — type
167
+ - `EnvModelTableRoleRow` — type
168
+ - `EnvModelTableTarget` — type
169
+ - `EnvModelTableWriteInput` — type
170
+ - `EnvModelTableWriteIntent` — type
171
+ - `EnvModelTableWritePlan` — type
172
+ - `EnvModelsDecision` — type
173
+ - `EnvModelsDecisionWord` — type
146
174
  - `EnvRef` — type
147
175
  - `EnvRefUse` — type
176
+ - `EnvRoleBinding` — type
177
+ - `EnvSnapshot` — type
148
178
  - `ExecutionLane` — type
149
179
  - `ExecutionLaneRow` — type
150
180
  - `ExecutionPolicy` — value+type
@@ -245,6 +275,7 @@
245
275
  - `MODEL_ENTRY_REFUSAL_CODES` — value
246
276
  - `MODEL_PLANE_REFUSAL_CODES` — value
247
277
  - `MODEL_SWITCH_SOURCES` — value
278
+ - `MarkedMigrationId` — type
248
279
  - `McpConfig` — value+type
249
280
  - `McpContentOrigin` — type
250
281
  - `McpEntryKeyIssue` — type
@@ -264,6 +295,7 @@
264
295
  - `MergeCategorySpec` — value+type
265
296
  - `MergeShape` — value+type
266
297
  - `MessageDisplayHookInput` — value
298
+ - `MigrationMarker` — type
267
299
  - `MinTrust` — value+type
268
300
  - `ModelCost` — value
269
301
  - `ModelEntry` — value+type
@@ -284,6 +316,8 @@
284
316
  - `OAuthErrorResponse` — value+type
285
317
  - `PARSE_TRANSPARENT_KEYS` — value
286
318
  - `PATH_BASE_URL_FORBIDDEN_PARTS` — value
319
+ - `PLAIN_STRING_RECORD_FAULTS` — value
320
+ - `PLAIN_STRING_RECORD_RESERVED_MEMBER` — value
287
321
  - `PLUGIN_ORIGIN` — value
288
322
  - `PRINCIPAL_INC_CLAIM` — value
289
323
  - `PRINCIPAL_MAX_LENGTH` — value
@@ -308,6 +342,8 @@
308
342
  - `PermissionRuleValue` — value+type
309
343
  - `PermissionUpdate` — value+type
310
344
  - `PermissionUpdateDestination` — value+type
345
+ - `PlainStringRecordFault` — type
346
+ - `PlainStringRecordRead` — type
311
347
  - `PluginSource` — value+type
312
348
  - `PluginSpec` — value+type
313
349
  - `PluginsConfig` — value+type
@@ -349,6 +385,7 @@
349
385
  - `REF_ISSUE_TARGET_DOMAIN` — value
350
386
  - `REF_REFERRER_DOMAINS` — value
351
387
  - `REMOTE_EXEC_DOCUMENT` — value
388
+ - `REMOTE_MCP_SERVER_NAME_PREFIX` — value
352
389
  - `RESERVED_SCOPE_IDS` — value
353
390
  - `RESERVED_WORKER_ENV` — value
354
391
  - `RETIRED_DOMAINS` — value
@@ -356,6 +393,7 @@
356
393
  - `RETIRED_ENV_REFUSAL_CODE` — value
357
394
  - `RETIRED_LANE_WORDS` — value
358
395
  - `ROLE_RANK` — value
396
+ - `ROOT_DOCUMENT_UNREADABLE_REASONS` — value
359
397
  - `ROSTER_CHEAP_ROLES` — value
360
398
  - `ROSTER_PRIMARY_ROLES` — value
361
399
  - `RUNTIME_CAP_STRICT` — value
@@ -379,6 +417,7 @@
379
417
  - `RetiredEnvWire` — type
380
418
  - `RetiredLaneWord` — type
381
419
  - `RoleTarget` — value+type
420
+ - `RootDocumentUnreadableReason` — type
382
421
  - `RosterEntry` — value+type
383
422
  - `RostersConfig` — value+type
384
423
  - `RoutingVerdict` — type
@@ -414,6 +453,7 @@
414
453
  - `STALE_SESSION_RECORD_MS` — value
415
454
  - `STORE_BACKENDS` — value
416
455
  - `SUBMIT_IDEMPOTENCY_KEY` — value
456
+ - `SUMMARIZE_MODEL_MISSING_CODE` — value
417
457
  - `SafetyMergeCategory` — type
418
458
  - `SafetyMergeMember` — type
419
459
  - `SandboxGitConfig` — value+type
@@ -561,9 +601,11 @@
561
601
  - `aggregateUsage` — value
562
602
  - `applyProjectPatch` — value
563
603
  - `buildEffective` — value
604
+ - `buildEnvModelBaseline` — value
564
605
  - `buildLayerPartsUnreadNotice` — value
565
606
  - `buildRetiredEnvWire` — value
566
607
  - `canSwitchScope` — value
608
+ - `catalogManagesModelPlane` — value
567
609
  - `clampServingLeaseTtlMs` — value
568
610
  - `classifyHooksConfig` — value
569
611
  - `classifyTimeClaims` — value
@@ -573,6 +615,7 @@
573
615
  - `createSiblingResolver` — value
574
616
  - `danglingRefs` — value
575
617
  - `describeBadContentOrigin` — value
618
+ - `describeBadMcpServerName` — value
576
619
  - `describeBadWireName` — value
577
620
  - `describeNotStringArray` — value
578
621
  - `describeNotStringRecord` — value
@@ -581,6 +624,10 @@
581
624
  - `drainVerdict` — value
582
625
  - `effectiveScopeRole` — value
583
626
  - `emptyEffective` — value
627
+ - `enabledEntryCount` — value
628
+ - `envModelTableDeclared` — value
629
+ - `envModelTableWriteRefusal` — value
630
+ - `envModelsDecisionTag` — value
584
631
  - `extraBodyUnsafe` — value
585
632
  - `findSkillContent` — value
586
633
  - `findUrlCredential` — value
@@ -619,6 +666,7 @@
619
666
  - `isSchedulerRecord` — value
620
667
  - `isStringArray` — value
621
668
  - `isStringRecord` — value
669
+ - `isUsableMcpServerName` — value
622
670
  - `isUsableWireName` — value
623
671
  - `judgeReadiness` — value
624
672
  - `judgeRoutability` — value
@@ -635,6 +683,7 @@
635
683
  - `memberTighten` — value
636
684
  - `membersOf` — value
637
685
  - `mintScopedToken` — value
686
+ - `mintedCheapId` — value
638
687
  - `narrowAtMention` — value
639
688
  - `nextPollInterval` — value
640
689
  - `normalizeContentHash` — value
@@ -648,6 +697,7 @@
648
697
  - `parseWebAdminSessionUrl` — value
649
698
  - `pathBaseUrlFlaws` — value
650
699
  - `pickInstance` — value
700
+ - `planEnvModelTableWrite` — value
651
701
  - `projectWarning` — value
652
702
  - `promptArtifactFor` — value
653
703
  - `readCapabilityReading` — value
@@ -657,9 +707,11 @@
657
707
  - `readDrainRequest` — value
658
708
  - `readEffectiveWire` — value
659
709
  - `readEngineSignal` — value
710
+ - `readEnvModelSlots` — value
660
711
  - `readHttpHookAllowlistLayer` — value
661
712
  - `readMcpIdentityHeaders` — value
662
713
  - `readModelRefusals` — value
714
+ - `readPlainStringRecord` — value
663
715
  - `readRequestMcpTransport` — value
664
716
  - `readScopedTokenBinding` — value
665
717
  - `readServingLeaseRequest` — value
@@ -677,6 +729,7 @@
677
729
  - `renderRefIssue` — value
678
730
  - `resolveActiveTiers` — value
679
731
  - `resolveCatalogDefaultModel` — value
732
+ - `resolveCenterRefs` — value
680
733
  - `resolveEffectiveForWorker` — value
681
734
  - `resolveMemberAdmission` — value
682
735
  - `resolveMemberTighten` — value
@@ -1111,7 +1164,7 @@
1111
1164
  - `tightenVerdict` — value
1112
1165
  - `trustRank` — value
1113
1166
 
1114
- ## `./node`(39)
1167
+ ## `./node`(48)
1115
1168
 
1116
1169
  - `ConfigBundle` — type
1117
1170
  - `ConfigDirectoryDocument` — type
@@ -1119,7 +1172,11 @@
1119
1172
  - `ConfigDirectoryMigration` — type
1120
1173
  - `ConfigDirectoryRefusal` — type
1121
1174
  - `ConfigDocumentsMigration` — type
1175
+ - `ConfigRootIo` — type
1122
1176
  - `DomainReadError` — type
1177
+ - `EnvModelsDecisionWrite` — type
1178
+ - `EnvModelsMigration` — type
1179
+ - `EnvModelsMint` — type
1123
1180
  - `FileConfigStore` — value+type
1124
1181
  - `LocalConfig` — type
1125
1182
  - `MigrateConfigDirectoryOptions` — type
@@ -1142,15 +1199,20 @@
1142
1199
  - `loadSchedulerStore` — value
1143
1200
  - `migrateConfigDirectory` — value
1144
1201
  - `migrateConfigDocuments` — value
1202
+ - `migrateEnvModelsDecision` — value
1145
1203
  - `mutateSchedulerStore` — value
1146
1204
  - `nodeConfigDirectoryIo` — value
1205
+ - `nodeConfigRootIo` — value
1147
1206
  - `readBundle` — value
1207
+ - `readEnvModelsDecision` — value
1208
+ - `readMigrationMarker` — value
1148
1209
  - `remoteExecPath` — value
1149
1210
  - `saveSchedulerStore` — value
1150
1211
  - `validateDomain` — value
1151
1212
  - `validateRemoteExec` — value
1152
1213
  - `writeBundle` — value
1153
1214
  - `writeDomainFile` — value
1215
+ - `writeEnvModelsDecision` — value
1154
1216
  - `writeRemoteExec` — value
1155
1217
 
1156
1218
  ## `./one-time-migrations`(18)
@@ -1284,9 +1346,10 @@
1284
1346
  - `interpolateHookEnvVars` — value
1285
1347
  - `stopAttributionText` — value
1286
1348
 
1287
- ## `./fleet`(84)
1349
+ ## `./fleet`(86)
1288
1350
 
1289
1351
  - `AggregatedPrincipalUsage` — type
1352
+ - `CATALOG_REPLACES_ENV_MODELS_CODE` — value
1290
1353
  - `CapabilityReading` — type
1291
1354
  - `DEFAULT_DRAIN_GRACE_MS` — value
1292
1355
  - `DEFAULT_HEARTBEAT_MS` — value
@@ -1340,6 +1403,7 @@
1340
1403
  - `SERVING_LEASE_VERDICTS` — value
1341
1404
  - `STALE_HEARTBEAT_MULTIPLIER` — value
1342
1405
  - `SUBMIT_IDEMPOTENCY_KEY` — value
1406
+ - `SUMMARIZE_MODEL_MISSING_CODE` — value
1343
1407
  - `ServingLeaseDeniedReason` — value+type
1344
1408
  - `ServingLeaseReading` — type
1345
1409
  - `ServingLeaseRequest` — value+type
@@ -9,6 +9,7 @@
9
9
  > **11.0.0** 的持久面(`runtime` 域退役、读侧兼容臂退役、一次性迁移族 `./one-time-migrations`)在 §0.4。
10
10
  > **14.7.0** 的沙箱 git 凭据平面(取值口 wire 型、有效配置块 `sandboxGit`、`VerifiedIdentity.principalInc`)在 §12。
11
11
  > **14.7.0** 的路径基址判官(`PATH_BASE_URL_FORBIDDEN_PARTS` / `pathBaseUrlFlaws`)与公告地址 env 名(`FLEET_ADVERTISE_ADDRESS_ENV`)在 §13。
12
+ > 中心引用解析口 `resolveCenterRefs` 与记录读器 `readPlainStringRecord`(原因词表 `PLAIN_STRING_RECORD_FAULTS`)在 §14。
12
13
 
13
14
  ---
14
15
 
@@ -118,7 +119,7 @@
118
119
  - **读侧的新形**:`ModelEntry` 钥匙二选一(`sealedApiKey` 与 `apiKeyEnv` 同设 ⇒ 拒);`atMention`(`{mode:"all"}` 缺省 /
119
120
  `{mode:"none"}` / `{mode:"only",models}`,roster 位缺席 = 继承,收窄读法一只 `narrowAtMention` —— 收窄到一个都不剩就是 `none`);
120
121
  workers 6.x 字段与 `atModelAllowlist` 是 schema 里原位的**墓碑字段**(在场即拒,句子点名迁移);`readWorkersRows(raw) → { doc, held }`
121
- (workers 域的逐行终判,取代 `migrateWorkersDomain` 的终判半)。
122
+ (workers 域的逐行终判,取代 `migrateWorkersDomain` 的终判半;被扣下的行若还带着旧字段,`held[].field` 指到那个旧字段,`reason` 的文字**不点名它**,说现行位与出路:跑迁移,迁移已拒过这一行的就手写现行形、删旧字段)。
122
123
  - **调度店**:`parseSchedulerStore(text, { nowMs })` / `loadSchedulerStore(path, { nowMs })` 恒返回 `{ records, warnings }`(没有静默模式);
123
124
  整份文件不是 JSON 数组 ⇒ `unreadable-file`,`mutateSchedulerStore(path, fn, { nowMs })` 遇它不调 `fn`、不写(`reason: "unreadable_file"`);
124
125
  会话链上的记录(显式 `lifetime: "session"`)过期 ≥ 7 天 ⇒ 读时丢 + `stale-session-record`(`lifetime` 缺席读作 durable,不丢);所有写者走 `mutateSchedulerStore` 这一只原语(裸 load→save 是丢更新的竞争)。
@@ -216,7 +217,7 @@ server 直接拒启,不是静默降级。上一代 `SEMA_REGISTRY_*` 八名(`URL
216
217
  |---|---|---|
217
218
  | models / roles | `RunnerDeps.models`/`roles` | role 解析不变 |
218
219
  | skills | 本地=全文内联;远程=manifest + `fetchSkillContent(hash)` | 本地无 wire 跳,无需按 hash 回取 |
219
- | mcp | `TaskSpec.mcp`(allowTools + principalHeader) | env/header NAME→值解析 |
220
+ | mcp | `TaskSpec.mcp`(allowTools + principalHeader + sessionMetaKey) | env/header NAME→值解析;`sessionMetaKey` 本包原样承运,交给引擎之前可调引擎的 `judgeSessionMetaKey` 早判 |
220
221
  | limits(0.19.0,cost/限流族 14 键;11.0.0 起五个限额键的唯一位) | 消费方的限额面(server:`stage-limits`) | `.optional()` 无默认;本包只判结构,业务域值(下限/0 哨兵/跨键不变量)由消费方响亮拒 |
221
222
  | governance.autonomy / commandPolicy | 见 §6(小心区) | 经 tightenTaskSpec / combinePolicies |
222
223
  | rosters | control-plane only | `/effective` wire 经 `resolveEffectiveForWorker` 清空/剥离 |
@@ -461,3 +462,72 @@ fleet 成员对中心公告的可达地址(`FLEET_ADVERTISE_ADDRESS`,中心往
461
462
  - **缺席 / 空串的处置**:见 §13.3 —— 读的一方自己答。
462
463
  - **座位名册**:一个值算不算「后面要拼路径的基址」是读它的一方的事;本包给的是判这种座位的那一只判官,不维护座位清单(§13 开头列的是今天已知的读者)。
463
464
  - **不进保留 env 名表**:`FLEET_ADVERTISE_ADDRESS` 与 generation / scope 两只不同 —— 那两只只有渲染器能写,所以进 `RESERVED_WORKER_ENV`;公告地址是运维可以声明的值(渲染器也可以写),`worker.env` 设它照旧不被拒。
465
+
466
+ ## 14. 中心引用解析口 `resolveCenterRefs` 与记录读器 `readPlainStringRecord` —— 服务端中心腿与客户端核心两方的读法
467
+
468
+ 中心名册里 MCP server 的传输带两张**引用表**:stdio 的 `envRefs`(目标 env 键 → 变量名)、http 的 `headerRefs`(目标头名 → 变量名)。名册只存变量名、从不存值;值要在消费方自己的宿主环境里读。
469
+ 「变量没设」「设了但读到的不是串」「读它的时候抛了」「引用表本身不成样子」四种情形,本包此前只发引用表的形、不发读法,留给每个宿主自己写。本节说**本包发什么、两方各自怎么读**:本包只有**读引用表的那一个读法**(纯、浏览器安全、零 IO、不读环境);
470
+ 读哪一层环境、要不要缓存、解不开时挂不挂(§14.4),都是两方自己的事。
471
+
472
+ ### 14.1 本包发什么
473
+
474
+ | 件 | 是什么 |
475
+ |---|---|
476
+ | `resolveCenterRefs(refs, lookup)` | 解析口。`refs` = 名册里 `envRefs` / `headerRefs` 的值(`undefined` = 没声明);`lookup(name) => string \| undefined` = **调用方给的**查找函数(必给)。返回 `CenterRefsResolution`,按 `verdict` 分三臂;包根 |
477
+ | `CENTER_REF_FAULTS` / `CenterRefFault` | 一个成员没解到的原因词,闭集:`missing_name` · `not_a_string` · `read_threw`;包根 |
478
+ | `CENTER_REFS_VERDICTS` / `CenterRefsVerdict` | 整台结论的词,闭集:`resolved` · `unresolved` · `refs_unreadable`;包根 |
479
+ | `CenterRefMember` / `CenterRefMemberVerdict` / `CenterRefLookup` / `CenterRefsResolution` | 型:成员行 `{ key, ref, verdict }`(`verdict` = `resolved` 或上面三词之一)· 判定词 · 查找函数型 · 读数;包根 |
480
+ | `readPlainStringRecord(v)` | 「名 → 串」记录的读器(传输读器读 `env` / `headers` 用的就是它,同一个函数);包根 |
481
+ | `PLAIN_STRING_RECORD_FAULTS` / `PlainStringRecordFault` / `PlainStringRecordRead` / `PLAIN_STRING_RECORD_RESERVED_MEMBER` | 读器的原因词表(三词)· 词的型 · 读数型 · 保留成员名 `"__proto__"`;包根 |
482
+
483
+ ### 14.2 解析口的读法(一条律:每成员一句判定,整台一个结论)
484
+
485
+ 1. 引用表经 `readPlainStringRecord` 读。读不出(整张不是纯数据、有成员的变量名不是串、读成员就抛、叫 `__proto__` 的成员)⇒ **整台 `refs_unreadable`**,`fault` 是读器的词、坏在某个成员时 `member` 点名它的回显形;**一个变量都没问**。
486
+ 读器会把叫 `__proto__` 的串值成员剔出副本;解析口不许这样悄悄丢一条引用再挂,所以同样答 `refs_unreadable` / `member_name_reserved`。
487
+ 2. 每个成员恰问一次 `lookup(变量名)`(按引用表副本的自有键序:整数形的键在前、其余按记录列出的次序;实参只有变量名),判成**一个词**。一个成员坏了不早停 —— 每个成员都有自己的判定,调用方一次点名所有缺的变量:
488
+
489
+ | `lookup` 的答案 | 成员词 |
490
+ |---|---|
491
+ | 一个串(空串也是串) | `resolved` |
492
+ | `undefined`(变量没设) | `missing_name` |
493
+ | 别的种类(数、`null`、对象、函数……) | `not_a_string` |
494
+ | 抛了(任何抛出值,含撤销的 Proxy) | `read_threw`(不传出) |
495
+
496
+ 3. 整台结论:每个成员都 `resolved`(零成员也是)⇒ `resolved`,带 `values`(目标键 → 串,新铸的朴素对象);有成员不是 ⇒ `unresolved`,带 `members`(**行里没有变量的值**,失败读数可以进日志);引用表读不出 ⇒ `refs_unreadable`。
497
+ 4. `refs` 是 `undefined` ⇒ `resolved`、零成员、零次查找,与空表同答;别的非记录值(`null`、数组、串)是 `refs_unreadable`,不当缺席。
498
+ 5. `lookup` 没给 / 不是函数 ⇒ **`TypeError`**(调用方的编程错;不折成 `read_threw`,更不回落任何环境 —— 本包不读 `process.env`)。
499
+
500
+ `lookup` 的写法是调用方的事,有一条提醒:对普通对象做 `obj[name]` 会读到继承位(`toString` / `constructor`),解析口把它判成 `not_a_string`(响亮,不当作已设);想让这类名字落成「没设」就按自有键读
501
+ (`Object.hasOwn(table, name) ? table[name] : undefined`)。同一个变量被两个目标键引用会被问两次 —— 缓存(每名读一次、跨轮不缓存)是查找函数的事。
502
+
503
+ ### 14.3 读器的原因词(`PLAIN_STRING_RECORD_FAULTS`,三词)
504
+
505
+ | 词 | 说的是 | 记录交不交 |
506
+ |---|---|---|
507
+ | `not_plain_record` | 整张不是纯数据(`null` / 数组 / 原始值 / `Map` / 类实例 / 函数,或读形状就抛的对象) | 不交 |
508
+ | `member_not_string` | 某个成员的值不是串(读成了别的种类),或它读不出(它的访问器抛了,或读它的描述符时代理陷阱抛了)—— 两种情形 `detail` 句子分说 | 不交,`member` 点名它 |
509
+ | `member_name_reserved` | 某个成员叫 `__proto__`(引擎的声明收据拒这个名);名坏优先 —— 值也坏或读不出时句子并列说全,词仍是这一个 | 值是串:交其余、`reservedMember: true`;否则不交 |
510
+
511
+ 按词分派;读器从不抛。传输读器的 `lost[].fault` 就是这张表(读成员就抛的那一形,词是 `member_not_string`,句子 `could not be read (its getter threw)`)。
512
+
513
+ ### 14.4 两方做什么
514
+
515
+ - **客户端核心 / 服务端中心腿**:
516
+ ```ts
517
+ const r = resolveCenterRefs(transport.envRefs, (name) => hostEnv.read(name)); // hostEnv = 你的宿主环境座位;headerRefs 同
518
+ switch (r.verdict) {
519
+ case "resolved": return mount(r.values);
520
+ case "unresolved": for (const m of r.members) if (m.verdict !== "resolved") warn(m.verdict, m.key, m.ref); return skipWholeServer();
521
+ case "refs_unreadable": warn(r.fault, r.member); return skipWholeServer();
522
+ default: { const unhandled: never = r; throw new Error(`unhandled ${String(unhandled)}`); }
523
+ }
524
+ ```
525
+ 解析不了时挂不挂是你这条腿的规则(「整台不挂 + 点名」是一台少了鉴权头或凭据 env 的 server 不拨号的那条);本口只判。
526
+ - **不手抄**:不要在自己这边再写一遍「变量没设 / 读到的不是串 / 读抛」的判法或这三个词的字面量;词表与读数型从本包 import,穷尽 `switch` 加 `never` 兜底(加词时编译红)。
527
+
528
+ ### 14.5 本包不做的(如实)
529
+
530
+ - **读哪一层环境**:`lookup` 读什么(进程环境、合并后的环境、远端环境)是调用方的事;本包不读 `process.env`,也不缓存。
531
+ - **挂不挂**:读数是判决,不是处置。
532
+ - **变量名的形**:名册的 schema 已把变量名限在 env 名的字符集内;本口把变量名当不透明串交给 `lookup`,不再判一遍形。
533
+ - **值的好坏**:解到串就是 `resolved`,空串、很长的串都不另判;值是不是凭据、扣不扣留,是读数之后的另一道判官的事。
package/llms-full.txt CHANGED
@@ -1,6 +1,6 @@
1
1
  <!--
2
2
  llms-full.txt — 自包含全文 · 消费方(使用者)视角 · @sema-agent/settings-schema
3
- 重写日期: 2026-10-25 | 包版本: 14.7.0
3
+ 重写日期: 2026-10-28 | 包版本: 15.0.0
4
4
  生成方式: 无生成脚本——按当前树 src/*.ts 导出面 + package.json + README/CHANGELOG 手写事实版。
5
5
  证据约定: 每条"它怎么工作"的断言附 (文件: 符号) 坐标,刻意不用行号(行号逐版腐烂;符号名由
6
6
  typecheck 与 test/package-surface.test.ts、test/docs-hygiene.test.ts 等常驻门钉住)。无证据推断显式标【推断】。
@@ -109,6 +109,9 @@ registry:公网 npmjs,无需私有 registry 配置。
109
109
  · mcp:`McpServerSpec[]` —— `transport` 判别 stdio(command/args/envRefs)| http(url/headerRefs/
110
110
  principalHeader/assertionHeader;后两者互斥);`allowTools?`、`scenarios`/`rosters` 过滤、`elicitation`(默认 false,inbound elicitation
111
111
  的 per-server opt-in)、`contentOrigin?`(信任出处声明,闭词表 `MCP_CONTENT_ORIGINS =
112
+ --- 14.8.0:`McpServerSpec.sessionMetaKey?`(`z.unknown().optional()` 解析透明,登记在 `PARSE_TRANSPARENT_KEYS`,`validatedBy: "engine-ingest"` —— 唯一判官 = 引擎根导出 `judgeSessionMetaKey`(类型 / 非空 / 上界 / MCP `_meta` 键名文法 / 保留前缀 / `progressToken` / `sema/` 命名空间一并判);引擎往这台服务器的 `tools/call` / `resources/read` 的 `params._meta[key]` 里放发送腿会话 id;缺席不铸键)---
113
+ --- 14.8.0:`McpServerSpec.startupTimeoutMs?`(`z.unknown().optional()` 解析透明,登记在 `PARSE_TRANSPARENT_KEYS`,`validatedBy: "engine-ingest"` —— 格式与界由引擎判:唯一判官 = 引擎根导出 `mcpStartupTimeoutMs`(是不是数 / 整数性 / 范围一并判,在拨号时判:不合 ⇒ 拒这一台服务器的拨号,其余服务器照挂);这一台服务器自己的启动界,握手与首次工具列举各带它,缺席读进程级缺省界;本包不判、任何 JSON 值原样过,缺席不铸键)---
114
+ --- 14.8.0:`remote-` 前缀保留给设备执行端提供的远程 MCP 服务器(`REMOTE_MCP_SERVER_NAME_PREFIX`,挂载名 `remote-<名>`;字面比较、区分大小写):请求面在 `isUsableMcpServerName` / `describeBadMcpServerName`(线上名判官 `isUsableWireName` 不变,A2A 对端名用它);配置面 `McpServerSpec.name` 不拒它(拒是校验收紧,归 major)---
112
115
  --- 12.2.0:`McpServerSpec.toolAxes?` / `authForm?` / `entryKind?`(三键均 `z.unknown().optional()` 解析透明,登记在 `PARSE_TRANSPARENT_KEYS`(`authForm` / `entryKind` `validatedBy: "consumer"`;`toolAxes` 自 13.0.0 起 `"engine-ingest"` —— 形判官只有引擎根导出 `readMcpToolAxes` 一只,消费方两腿都调它);连接器条目的声明键,词表与语义归读它的消费方,本包只承载、原样过任意 JSON 形;缺席不铸键)---
113
116
  --- 12.2.0:`McpTransport`(http 形)`assertionHeader?`(HTTP 头名,过 `principalHeader` / `headerRefs` 键同一只头名判官;承载连接器断言;与 `principalHeader` **互斥** —— 同设 ⇒ 解析期拒,条目层 `superRefine` 判一处,拒句点名条目名与两键;stdio 形上与 `principalHeader` 同判:键被剥并报 `unknown-keys-dropped`;缺席不铸键;断言怎么铸 / 验归消费方)---
114
117
  --- 1.9.0:`McpServerSpec.toolFaces?`(`z.unknown().optional()` 解析透明,登记在 `PARSE_TRANSPARENT_KEYS`;引擎的工具名册 face 覆盖层,按远端工具名 key `{family?, pathTarget?, renderHints?, ruleFace?}`;形校验归引擎摄入侧,不合 schema 的工具不挂并通告一次 `config.tool_face_invalid`;缺席不铸键)
@@ -248,7 +251,7 @@ entitlement/execution/limits = `none`;`projects` = `salvage`,整域档位仍 `"t
248
251
  - `host`:{ workdir?, allowedPaths?, shell?, commandTimeoutMs? } —— 无 secret。
249
252
  - `local-docker`:{ image!, memory?, cpus?, network?("none"|"bridge"|"host"), workdir?, mountPath? }。
250
253
  - `e2b`:{ apiKeyEnv!, template?, timeoutMs?, livenessMs?, allowInternetAccess?, sandboxEnv? }。
251
- - `k8s`:{ image!, apiUrl?, tokenEnv?, caCertEnv?, insecureTls?, namespace?, runtimeClass?, mountPath?,
254
+ - `k8s`:{ image!, apiUrl?, tokenEnv?, caCertEnv?, insecureTls?, namespace!, runtimeClass?, mountPath?,
252
255
  timeoutMs?, memory?, cpu?, s3Snapshot?{ endpoint, bucket?, accessKeyEnv, secretKeyEnv, … } }。
253
256
  - `ssh`:{ host!, port?, username!, privateKeyEnv!, mountPath? }。
254
257
  - `adb`:{ serial!, adbPath?, mountPath? }。
@@ -263,9 +266,11 @@ entitlement/execution/limits = `none`;`projects` = `salvage`,整域档位仍 `"t
263
266
  - `EXECUTION_LANES: readonly ExecutionLaneRow[]`:每行 `{ lane, tenantSeparation: "supported"|"single-user-only", requiredEnv,
264
267
  requiredSecretEnv, optionalEnv, optionalSecretEnv }`(深冻结;四栏 env 名两两不交、跨车道不交;行内容逐格抄自引擎,
265
268
  坐标在每行 JSDoc)。`TENANT_SEPARATION_WORDS`。
269
+ k8s 行的非密必需栏 = `K8S_SANDBOX_IMAGE` + `K8S_NAMESPACE`(沙箱 pod 所在的命名空间,部署自己声明;服务端的必需 env 门按本行 `requiredEnv ∪ requiredSecretEnv` 拒启)——
270
+ 写 worker 的 k8s 行时 `runtime.execution.coords` 两键都要给,缺一键 ⇒ 写闸 issue、存下来的 workers 文档整域读不出。
266
271
  - `STORE_BACKENDS`(mysql/pg/local/memory)、`SESSION_BACKENDS`(memory/mysql/auto)、`MEMORY_ENGINE_BACKENDS`(file/pg/tidb)。
267
272
  - 判据(都在 `WorkerSpec` schema 里,zod issue 的 `path` 指字段、message 带出路):enabled ⇒ 两块必填;coords / secretRefs 键 ⊆
268
- 表[lane] 对应栏、必需键在场非空;别车道键点名车道;`requirePrincipal` ∧ single-user-only 车道拒(出路按表现算);host ∧ 副本 > 1
273
+ 表[lane] 对应栏、必需键在场且非空白(空串或只含空白按缺);别车道键点名车道;`requirePrincipal` ∧ single-user-only 车道拒(出路按表现算);host ∧ 副本 > 1
269
274
  拒;device ⇒ SQL 店且 session ≠ memory;memory 店 ∧ session mysql 拒;记忆引擎 pg/tidb ∧ session memory 拒;SQL 坐标 ⇔ SQL 店;
270
275
  记忆后端配店;多租户 ⇒ SQL 店;6.x 删除项(`sessionBackend` / `memoryBackend` / `runtime.db` /
271
276
  `coords.tidb*` / `tidbPasswordEnv`)读到即拒并指路迁移。`WorkerSpec` 是 ZodEffects(无 `.shape`):名字判据单独导出 `WORKER_NAME`(src/types.ts)。
package/llms.txt CHANGED
@@ -1,6 +1,6 @@
1
1
  <!--
2
2
  llms.txt — 消费方(使用者)视角索引 · @sema-agent/settings-schema
3
- 重写日期: 2026-10-25 | 包版本: 14.7.0
3
+ 重写日期: 2026-10-28 | 包版本: 15.0.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 相等、
@@ -52,7 +52,7 @@ llms.txt — 消费方(使用者)视角索引 · @sema-agent/settings-schema
52
52
  (src/config-fns.ts: `rebaseWarningPaths` / `EntrySalvageResult.keptIndex` / `GrandfatherHostsReadResult.keptIndex`)
53
53
  - **解析透明键登记表** `PARSE_TRANSPARENT_KEYS`(2.0.0):本包收下但**不校验其形**的键一处列全,每行写清
54
54
  谁校验(引擎摄入侧 / 消费方)。「解析透明」按**行为**定义(喂一组代表性值全收),所以 `extraBody` 不在表里
55
- ——它有自己的形门(必须是纯 JSON 对象),开放的只是对象里的键名词表。今日 8 员:
55
+ ——它有自己的形门(必须是纯 JSON 对象),开放的只是对象里的键名词表。今日 10 员:
56
56
  `models.models[].compat`(1.10.0,镜像引擎 `OpenAICompletionsCompat` 五键 `thinkingFormat`/
57
57
  `reasoningEffortLevels`/`maxTokensField`/`requiresReasoningContentOnAssistantMessages`/
58
58
  `supportsReasoningEffort`;真需求 = vLLM/Qwen 类缺省开思考的网关要 `chat_template_kwargs.enable_thinking=false`,
@@ -60,7 +60,7 @@ llms.txt — 消费方(使用者)视角索引 · @sema-agent/settings-schema
60
60
  例 `{"anthropic-beta":"context-1m-2025-08-07"}`;头名闭集白名单 × 读它的线路 × 值形的判据唯一属主是 server,
61
61
  坏声明 ⇒ 该条目整条不可用;本包不复述那张表)、`mcp.servers[].source`(1.7.0,声明方自述的分组标签,开集,只做显示
62
62
  分组不进信任轴)、`mcp.servers[].toolFaces`(1.9.0,按远端工具名 key 的 face 覆盖层,形归引擎摄入侧)、
63
- `mcp.servers[].toolAxes` / `authForm` / `entryKind`(12.2.0,连接器条目的三只声明键,本包只承载;`toolAxes` 的形判官 = 引擎 `readMcpToolAxes` 一只,另两键的语义归读它的消费方)、
63
+ `mcp.servers[].toolAxes` / `authForm` / `entryKind`(12.2.0,连接器条目的三只声明键,本包只承载;`toolAxes` 的形判官 = 引擎 `readMcpToolAxes` 一只,另两键的语义归读它的消费方)、`mcp.servers[].sessionMetaKey`(14.8.0,引擎往这台服务器请求 `_meta` 里放会话 id 的那把键;唯一判官 = 引擎根导出 `judgeSessionMetaKey`,本包只承载)、`mcp.servers[].startupTimeoutMs`(14.8.0,这一台服务器自己的启动界;唯一判官 = 引擎根导出 `mcpStartupTimeoutMs`,本包只承载)、
64
64
  `entitlement.subjects[].overrides[].value`。`compat`/`headers`/`extraBody` 仍走同一只自由形安全判据(secret 形/
65
65
  访问器/循环/非 JSON/过深 ⇒ 拒 —— 那是安全边界,不是形校验)。(src/types.ts: `PARSE_TRANSPARENT_KEYS`)
66
66
  - **`mcp.servers[].transport.assertionHeader`**(12.2.0 新增,http 形可选):承载连接器断言的 HTTP 头名,头名过 `principalHeader` /
@@ -69,6 +69,8 @@ llms.txt — 消费方(使用者)视角索引 · @sema-agent/settings-schema
69
69
  - **`mcp.servers[].contentOrigin`**(1.4.0 新增):MCP 工具产出的信任出处声明,闭词表
70
70
  `MCP_CONTENT_ORIGINS = ["local","execution","external"]`(表外值 parse 拒,不做大小写折叠);缺席 = 引擎
71
71
  预声明行为。与 `source` 分轴:信任走它,显示分组走 `source`。(src/types.ts: `MCP_CONTENT_ORIGINS`)
72
+ - **`mcp.servers[].startupTimeoutMs`**(14.8.0 新增,可选):这一台服务器自己的启动界(整数毫秒,握手与首次工具列举各带它;缺席读进程级缺省界)。解析透明、原样承运:
73
+ 格式与界由引擎判 —— 唯一判官 = 引擎根导出 `mcpStartupTimeoutMs`,在拨号时判,不合 ⇒ 拒这一台服务器的拨号,本包不判。(src/types.ts: `McpServerSpec` / `PARSE_TRANSPARENT_KEYS`)
72
74
  - 把零散域**合并成一个 `EffectiveConfig`**(`buildEffective`,确定性:`updatedAt` 必传;`onWarning` 收
73
75
  降级/剥键/承运/未读文件五类告警),或在**消费端边界容错读 wire 载荷**(`readEffectiveWire`)。
74
76
  (src/config-fns.ts: `buildEffective` / `readEffectiveWire` / `EffectiveReadWarning`)
@@ -116,9 +118,13 @@ llms.txt — 消费方(使用者)视角索引 · @sema-agent/settings-schema
116
118
  - **MCP 名单判决**(13.0.0):`mcpServerPolicyVerdict(server, layers)` → `McpPolicyBlock{name, list, rule, target, written, sources}` 或 `undefined`;
117
119
  判按展开后目标、回显只按展开前写法(stdio 只给可执行名 + 参数个数);托管层 = 源表档 `managed` 的源(层只带源名);只收紧的源只贡献拒绝名单(允许名单是拼接 = 放宽,不读)。(src/mcp-server-policy.ts)
118
120
  - **请求面 MCP 条目判官**(14.0.0,`src/mcp-request-entry.ts`):`isUsableWireName` / `describeBadWireName`(引擎线上名长界 `TOOL_WIRE_NAME_MAX_CHARS` 的镜像;首尾空白 = 坏名,不 trim 不规范化,内部空白合法)·
121
+ `isUsableMcpServerName` / `describeBadMcpServerName`(MCP 服务器名 = 线上名判官再加一臂:`remote-` 前缀 `REMOTE_MCP_SERVER_NAME_PREFIX` 保留给设备执行端提供的远程 MCP 服务器,配置面 `McpServerSpec.name` 不拒(拒是校验收紧,归 major);A2A 对端名仍用 `isUsableWireName`)·
119
122
  `isContentOriginWord` / `describeBadContentOrigin`(回显剥控制与双向字符、截 64 字、引号形)· `readMcpIdentityHeaders` · `readRequestMcpTransport`(硬坏形 `ok:false` 点名键路径;软坏形读器丢键并记进 `lost`;
120
123
  `env` / `headers` 只收纯数据的「名 → 串」记录,`Map` / 类实例 / 自有 `__proto__` 成员不收、交副本,`lost` 条目带 `member` / `fault` 机读位)
121
124
  + 值种类描述件 —— 服务端请求腿与壳的发送前预检同读一份(判据与原因句逐字同)。`toolFaces` 声明在本包解析透明,形归引擎摄入侧判,本包不镜像工具面词表。
125
+ - **中心引用解析口**(`src/center-refs.ts`):`resolveCenterRefs(refs, lookup)` —— `refs` = 名册里 `envRefs` / `headerRefs`(目标键 → 变量名;`undefined` = 没声明),`lookup(name) => string | undefined` 由调用方给(必给;没给 ⇒ `TypeError`,本包不读 `process.env`)。
126
+ 每成员一句判定 `resolved` / `missing_name` / `not_a_string` / `read_threw`(`CENTER_REF_FAULTS`),整台 `resolved` / `unresolved` / `refs_unreadable`(`CENTER_REFS_VERDICTS`);值只在 `resolved` 臂的 `values`,`unresolved` 臂的行只有词;只判不决定挂不挂。
127
+ 引用表经公开记录读器 `readPlainStringRecord`(`PLAIN_STRING_RECORD_FAULTS` 三词:`not_plain_record` / `member_not_string` / `member_name_reserved`)读,读不出整张不交、一个变量都不问。读法见 `docs/CONSUMER-INTEGRATION.md` §14。
122
128
  - **一行回显的剥除集**(`src/control-and-bidi.ts`,主 barrel):`CONTROL_AND_BIDI_CHARS`(C0 + DEL + 12 个 `Bidi_Control` 码点,正则字符类体的源码文本)·
123
129
  `stripControlAndBidi(text)` · `hasControlOrBidi(text)`;外来串落成一行(拒句 / 告警 / 日志 / 屏上)前剥的唯一一份,C1 与 U+2028 / U+2029 不在集里;
124
130
  是本包的回显策略(不是引擎双向码点表的镜像),请求面描述器与消费方都读它,禁自存字符类。
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sema-agent/settings-schema",
3
- "version": "14.7.0",
3
+ "version": "15.0.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",
@@ -148,7 +148,7 @@
148
148
  "prepublishOnly": "npm run build && npm run test"
149
149
  },
150
150
  "devDependencies": {
151
- "@sema-agent/core": "7.53.0",
151
+ "@sema-agent/core": "7.58.0",
152
152
  "@types/node": "^22.10.0",
153
153
  "esbuild": "^0.21.5",
154
154
  "typescript": "^5.7.0",