@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.
- package/CHANGELOG.md +306 -0
- package/README.md +80 -3
- package/conformance/VERSION +1 -1
- package/conformance/cases/c59-s784-g3-k8s-missing-image/input.json +4 -1
- package/conformance/cases/c61-s784-g3-other-lane-key/input.json +1 -0
- package/conformance/cases/c64-s784-multitenant-local-store/input.json +2 -1
- package/dist/atomic-write.d.ts +15 -0
- package/dist/atomic-write.js +109 -5
- package/dist/catalog-manages.d.ts +15 -0
- package/dist/catalog-manages.js +60 -0
- package/dist/center-refs.d.ts +68 -0
- package/dist/center-refs.js +70 -0
- package/dist/config-dir-migration.js +1 -0
- package/dist/config-fns.js +5 -3
- package/dist/config-root-documents.d.ts +106 -0
- package/dist/config-root-documents.js +93 -0
- package/dist/config-root-node.d.ts +117 -0
- package/dist/config-root-node.js +260 -0
- package/dist/conformance/run.d.ts +3 -0
- package/dist/conformance/run.js +10 -6
- package/dist/conformance/temp-roots.d.ts +31 -0
- package/dist/conformance/temp-roots.js +184 -0
- package/dist/default-model.d.ts +1 -1
- package/dist/default-model.js +5 -4
- package/dist/env-model-table.d.ts +163 -0
- package/dist/env-model-table.js +257 -0
- package/dist/execution-lane-index.d.ts +6 -0
- package/dist/execution-lane-index.js +8 -0
- package/dist/execution-lanes.d.ts +2 -1
- package/dist/execution-lanes.js +6 -4
- package/dist/fleet.d.ts +25 -7
- package/dist/fleet.js +24 -6
- package/dist/index.d.ts +5 -0
- package/dist/index.js +5 -0
- package/dist/mcp-request-entry.d.ts +58 -6
- package/dist/mcp-request-entry.js +45 -13
- package/dist/mcp-server-name.d.ts +17 -0
- package/dist/mcp-server-name.js +19 -0
- package/dist/migration-receipt.d.ts +10 -6
- package/dist/migration-receipt.js +5 -3
- package/dist/node.d.ts +1 -0
- package/dist/node.js +2 -0
- package/dist/one-time-migrations.d.ts +4 -2
- package/dist/one-time-migrations.js +29 -1
- package/dist/own-key-read.d.ts +1 -1
- package/dist/remote-exec.d.ts +1 -1
- package/dist/remote-exec.js +4 -2
- package/dist/retired-form.d.ts +19 -0
- package/dist/retired-form.js +24 -1
- package/dist/safety-merge-spec.d.ts +6 -6
- package/dist/tier-words.d.ts +33 -0
- package/dist/tier-words.js +43 -0
- package/dist/types.d.ts +6 -0
- package/dist/types.js +29 -5
- package/dist/worker-row-verdict.js +7 -1
- package/docs/API-SURFACE.md +68 -4
- package/docs/CONSUMER-INTEGRATION.md +72 -2
- package/llms-full.txt +8 -3
- package/llms.txt +9 -3
- package/package.json +2 -2
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` 不是模块,不列),导出名合计 1460 个(同名在多条子路径上各计一次)。
|
|
8
8
|
|
|
9
|
-
## `.`(
|
|
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`(
|
|
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`(
|
|
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-
|
|
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
|
|
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]
|
|
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-
|
|
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 对象),开放的只是对象里的键名词表。今日
|
|
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": "
|
|
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.
|
|
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",
|