@sema-agent/client-core 0.111.0 → 0.112.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 +98 -0
- package/README.md +16 -7
- package/dist/agentSession/engineSessionBackgroundStop.js +2 -2
- package/dist/checkpointRowVerdict.d.ts +3 -0
- package/dist/checkpointRowVerdict.js +14 -1
- package/dist/consoleCaPin.d.ts +136 -0
- package/dist/consoleCaPin.js +827 -0
- package/dist/decideReceipt.d.ts +2 -1
- package/dist/deviceRebind.js +3 -3
- package/dist/effectiveFacts.d.ts +9 -0
- package/dist/effectiveFacts.js +33 -0
- package/dist/engineAddress.d.ts +1 -0
- package/dist/engineAddress.js +4 -1
- package/dist/engineCredentialRelease.d.ts +54 -0
- package/dist/engineCredentialRelease.js +146 -0
- package/dist/engineErrorCodes.d.ts +1 -0
- package/dist/engineErrorCodes.js +1 -0
- package/dist/engineHealthFacts.d.ts +0 -11
- package/dist/engineHealthFacts.js +0 -21
- package/dist/engineHealthProbeVerdict.d.ts +1 -0
- package/dist/engineHealthProbeVerdict.js +21 -13
- package/dist/engineUnavailable.d.ts +3 -2
- package/dist/engineUnavailable.js +16 -12
- package/dist/engineUrl.js +4 -2
- package/dist/gateFailureCodes.js +2 -2
- package/dist/generated/sdkFactTables.d.ts +1 -0
- package/dist/generated/sdkFactTables.js +13 -0
- package/dist/generated/settingsSchemaFns.d.ts +1 -0
- package/dist/generated/settingsSchemaFns.js +3 -0
- package/dist/generated/settingsSchemaHooksClassifier.js +38 -9
- package/dist/generated/settingsSchemaTables.d.ts +52 -0
- package/dist/generated/settingsSchemaTables.js +18 -0
- package/dist/generated/settingsSchemaTypes.d.ts +23 -13
- package/dist/generated/settingsSchemaUrlShape.d.ts +1 -0
- package/dist/generated/settingsSchemaUrlShape.js +17 -0
- package/dist/hitl/decisionRefusal.d.ts +4 -0
- package/dist/hitl/decisionRefusal.js +12 -2
- package/dist/hitl/hitlBridge.d.ts +1 -0
- package/dist/hitl/hitlBridge.js +17 -4
- package/dist/hitl/localAllowRedemption.d.ts +9 -6
- package/dist/hitl/localAllowRedemption.js +20 -0
- package/dist/hitl/parkOwnership.js +2 -1
- package/dist/hitl/parkResolver.js +7 -0
- package/dist/hitl/planReviewCard.d.ts +3 -2
- package/dist/hitl/planReviewCard.js +2 -0
- package/dist/hitl/planReviewWire.d.ts +4 -2
- package/dist/hitl/planReviewWire.js +134 -97
- package/dist/hitl/screenDecisionCards.js +3 -2
- package/dist/hitl/sessionPolicyWire.js +2 -2
- package/dist/hitl/standingRows.d.ts +4 -2
- package/dist/hitl/standingRows.js +10 -3
- package/dist/hooksReaderGenerations.js +1 -1
- package/dist/i18n/messages.en.d.ts +165 -0
- package/dist/i18n/messages.en.js +166 -1
- package/dist/i18n/messages.zh.js +177 -1
- package/dist/index.d.ts +30 -5
- package/dist/index.js +15 -2
- package/dist/liveModelCatalog.d.ts +4 -0
- package/dist/liveModelCatalog.js +10 -1
- package/dist/localConfig/documents.d.ts +61 -0
- package/dist/localConfig/documents.js +51 -0
- package/dist/localConfig/kernel.d.ts +149 -0
- package/dist/localConfig/kernel.js +597 -0
- package/dist/localConfig/mcp/edit.d.ts +161 -0
- package/dist/localConfig/mcp/edit.js +846 -0
- package/dist/localConfig/mcp/servers.d.ts +165 -0
- package/dist/localConfig/mcp/servers.js +776 -0
- package/dist/localConfig/mcp/views.d.ts +170 -0
- package/dist/localConfig/mcp/views.js +429 -0
- package/dist/localConfig/modelPool.d.ts +262 -0
- package/dist/localConfig/modelPool.js +1489 -0
- package/dist/localConfig/modelPoolWords.d.ts +13 -0
- package/dist/localConfig/modelPoolWords.js +20 -0
- package/dist/localConfig/receiptShape.d.ts +7 -0
- package/dist/localConfig/receiptShape.js +135 -0
- package/dist/localConfig/settingsWrite.d.ts +127 -0
- package/dist/localConfig/settingsWrite.js +237 -0
- package/dist/localConfig/skills.d.ts +124 -0
- package/dist/localConfig/skills.js +397 -0
- package/dist/localConfig/skillsWords.d.ts +10 -0
- package/dist/localConfig/skillsWords.js +5 -0
- package/dist/mcpProbeWire.js +2 -1
- package/dist/mcpWireCaps.js +1 -1
- package/dist/memoryVerbsWire.js +3 -2
- package/dist/model/onboardJudgement.d.ts +14 -4
- package/dist/model/onboardJudgement.js +91 -139
- package/dist/modelConfigGapNotice.d.ts +20 -0
- package/dist/modelConfigGapNotice.js +102 -0
- package/dist/modsKernelIdentity.js +2 -47
- package/dist/notifications.js +14 -12
- package/dist/ownKey.d.ts +1 -0
- package/dist/ownKey.js +40 -8
- package/dist/permissionsDeclaration.d.ts +2 -1
- package/dist/permissionsDeclaration.js +31 -17
- package/dist/planReviewOutcomeCause.d.ts +2 -0
- package/dist/planReviewOutcomeCause.js +12 -0
- package/dist/promptBlockedCopy.js +2 -2
- package/dist/resumeRefusalCopy.d.ts +3 -1
- package/dist/resumeRefusalCopy.js +12 -4
- package/dist/runLedgerSnapshot.js +3 -3
- package/dist/runPermissionModeSwitch.js +2 -3
- package/dist/seatContract.d.ts +154 -4
- package/dist/seatContract.js +228 -2
- package/dist/sessionIdSegment.d.ts +1 -0
- package/dist/sessionIdSegment.js +4 -1
- package/dist/sessionMemoryErase.js +2 -1
- package/dist/sha256Bytes.d.ts +1 -0
- package/dist/sha256Bytes.js +46 -0
- package/dist/skillOverrideChain.d.ts +83 -0
- package/dist/skillOverrideChain.js +378 -0
- package/dist/skillsWireCaps.d.ts +3 -0
- package/dist/skillsWireCaps.js +16 -1
- package/dist/turnFailurePresentation.js +4 -10
- package/docs/INTEGRATION-CLIENTS.md +680 -14
- package/package.json +3 -3
|
@@ -211,6 +211,20 @@ declare const EN: {
|
|
|
211
211
|
'onboard.plan.envNotObject': string;
|
|
212
212
|
'onboard.plan.envCatalogPresent': string;
|
|
213
213
|
'onboard.input.keyInFields': string;
|
|
214
|
+
'model.pool.add.duplicate': string;
|
|
215
|
+
'model.pool.add.probeFailed': string;
|
|
216
|
+
'model.pool.add.probeUnverified': string;
|
|
217
|
+
'model.pool.add.pinMoved': string;
|
|
218
|
+
'model.pool.notFound': string;
|
|
219
|
+
'model.pool.importEnv.notYet': string;
|
|
220
|
+
'model.pool.tier.badGroup': string;
|
|
221
|
+
'model.pool.tier.noGroup': string;
|
|
222
|
+
'model.pool.tier.groupExists': string;
|
|
223
|
+
'model.pool.channel.badPick': string;
|
|
224
|
+
'model.pool.discover.status': string;
|
|
225
|
+
'model.pool.discover.notList': string;
|
|
226
|
+
'model.pool.discover.timeout': string;
|
|
227
|
+
'model.pool.discover.unreachable': string;
|
|
214
228
|
'onboard.refusal.input': string;
|
|
215
229
|
'onboard.refusal.probeFailed': string;
|
|
216
230
|
'onboard.refusal.probeUnverified': string;
|
|
@@ -291,6 +305,7 @@ declare const EN: {
|
|
|
291
305
|
'approval.rowUnresumable.askNotSurfaced': string;
|
|
292
306
|
'approval.park.stillParked': string;
|
|
293
307
|
'approval.park.refusedNotResumable': string;
|
|
308
|
+
'approval.park.newerWorker': string;
|
|
294
309
|
'approval.park.resume.card': string;
|
|
295
310
|
'approval.park.resume.speak': string;
|
|
296
311
|
'approval.park.argsFromModelCall': string;
|
|
@@ -433,6 +448,9 @@ declare const EN: {
|
|
|
433
448
|
'resume.refusal.park.printHolds': string;
|
|
434
449
|
'resume.refusal.park.interactiveEnded': string;
|
|
435
450
|
'resume.refusal.park.interactiveBusy': string;
|
|
451
|
+
'resume.refusal.park.whyNewerEngine': string;
|
|
452
|
+
'resume.refusal.park.interactiveNewerWorker': string;
|
|
453
|
+
'resume.refusal.park.printNewerWorker': string;
|
|
436
454
|
'resume.refusal.park.blockedPrint': string;
|
|
437
455
|
'resume.refusal.park.blockedInteractive': string;
|
|
438
456
|
'session.selfHeal.wayOut.interactive': string;
|
|
@@ -687,6 +705,21 @@ declare const EN: {
|
|
|
687
705
|
'session.hostSettings.styleSafeMode': string;
|
|
688
706
|
'session.hostSettings.styleOversize': string;
|
|
689
707
|
'session.hostSettings.styleUnreadable': string;
|
|
708
|
+
'session.hostSettings.allowKept.managed.inProgress.one': string;
|
|
709
|
+
'session.hostSettings.allowKept.managed.inProgress.other': string;
|
|
710
|
+
'session.hostSettings.allowKept.managed.failed.one': string;
|
|
711
|
+
'session.hostSettings.allowKept.managed.failed.other': string;
|
|
712
|
+
'session.hostSettings.allowKept.managed.unknown.one': string;
|
|
713
|
+
'session.hostSettings.allowKept.managed.unknown.other': string;
|
|
714
|
+
'session.hostSettings.allowKept.generic.one': string;
|
|
715
|
+
'session.hostSettings.allowKept.generic.other': string;
|
|
716
|
+
'session.hostSettings.allowKept.why.problems': string;
|
|
717
|
+
'session.hostSettings.allowKept.why.problemsWhere': string;
|
|
718
|
+
'session.hostSettings.allowKept.why.counted.one': string;
|
|
719
|
+
'session.hostSettings.allowKept.why.counted.other': string;
|
|
720
|
+
'session.hostSettings.allowKept.why.countedWhere.one': string;
|
|
721
|
+
'session.hostSettings.allowKept.why.countedWhere.other': string;
|
|
722
|
+
'session.hostSettings.allowKept.why.unreadable': string;
|
|
690
723
|
'model.identity.lane.processEnv': string;
|
|
691
724
|
'model.identity.lane.settingsEnv': string;
|
|
692
725
|
'model.identity.lane.modelCatalogFile': string;
|
|
@@ -698,6 +731,24 @@ declare const EN: {
|
|
|
698
731
|
'model.identity.catalogAdoption.refused': string;
|
|
699
732
|
'model.identity.catalogAdoption.notResolvable': string;
|
|
700
733
|
'model.identity.catalogAdoption.notResolvableWithPartial': string;
|
|
734
|
+
'model.configGap.head.model': string;
|
|
735
|
+
'model.configGap.head.gatewayUrl': string;
|
|
736
|
+
'model.configGap.head.apiKey': string;
|
|
737
|
+
'model.configGap.head.anthropicKey': string;
|
|
738
|
+
'model.configGap.head.incomplete': string;
|
|
739
|
+
'model.configGap.item.model': string;
|
|
740
|
+
'model.configGap.item.gatewayUrl': string;
|
|
741
|
+
'model.configGap.item.apiKey': string;
|
|
742
|
+
'model.configGap.item.anthropicKey': string;
|
|
743
|
+
'model.configGap.lead.one': string;
|
|
744
|
+
'model.configGap.lead.two': string;
|
|
745
|
+
'model.configGap.lead.three': string;
|
|
746
|
+
'model.configGap.reason.noModel': string;
|
|
747
|
+
'model.configGap.reason.anthropicCatalog.one': string;
|
|
748
|
+
'model.configGap.reason.anthropicCatalog.other': string;
|
|
749
|
+
'model.configGap.reason.gatewayCatalog.one': string;
|
|
750
|
+
'model.configGap.reason.gatewayCatalog.other': string;
|
|
751
|
+
'model.configGap.detail.withReason': string;
|
|
701
752
|
'notice.injectionLane.sentence': string;
|
|
702
753
|
'notice.injectionLane.item.stdioMcp': string;
|
|
703
754
|
'notice.injectionLane.item.credentialedMcp': string;
|
|
@@ -1344,6 +1395,77 @@ declare const EN: {
|
|
|
1344
1395
|
'config.mods.session.unarmed': string;
|
|
1345
1396
|
'config.hooks.roster.unreadable': string;
|
|
1346
1397
|
'config.hooks.roster.unarmed': string;
|
|
1398
|
+
'config.localConfig.refused.invalidRequest': string;
|
|
1399
|
+
'config.localConfig.refused.scopeUnreadable': string;
|
|
1400
|
+
'config.localConfig.refused.scopeUnwritable': string;
|
|
1401
|
+
'config.localConfig.refused.untrustedFolder': string;
|
|
1402
|
+
'config.localConfig.refused.policyDenied': string;
|
|
1403
|
+
'config.localConfig.refused.notFound': string;
|
|
1404
|
+
'config.localConfig.refused.alreadyExists': string;
|
|
1405
|
+
'config.localConfig.refused.lockBusy': string;
|
|
1406
|
+
'config.localConfig.refused.lockFailed': string;
|
|
1407
|
+
'config.localConfig.refused.changedDuringWrite': string;
|
|
1408
|
+
'config.localConfig.refused.writeFailed': string;
|
|
1409
|
+
'config.localConfig.refused.notWritten': string;
|
|
1410
|
+
'config.localConfig.refused.skillLockedByHigherLayer': string;
|
|
1411
|
+
'config.localConfig.refused.skillManagedByPlugin': string;
|
|
1412
|
+
'config.localConfig.refused.skillLockedByAuthor': string;
|
|
1413
|
+
'config.localConfig.refused.skillNameUnstorable': string;
|
|
1414
|
+
'config.localConfig.refused.entryInUse': string;
|
|
1415
|
+
'config.localConfig.refused.credentialUnpaired': string;
|
|
1416
|
+
'config.localConfig.refused.envCatalogPresent': string;
|
|
1417
|
+
'config.localConfig.refused.probeFailed': string;
|
|
1418
|
+
'config.localConfig.refused.probeUnverified': string;
|
|
1419
|
+
'config.localConfig.unavailable.engineIsRemote': string;
|
|
1420
|
+
'config.localConfig.unavailable.notSingleUser': string;
|
|
1421
|
+
'config.localConfig.unavailable.configHomeUnpinned': string;
|
|
1422
|
+
'config.localConfig.unavailable.domainNotHosted': string;
|
|
1423
|
+
'config.localConfig.unknown.commitUnconfirmed': string;
|
|
1424
|
+
'config.localConfig.unknown.reportUnreadable': string;
|
|
1425
|
+
'config.localConfig.applied.nextTurn': string;
|
|
1426
|
+
'config.localConfig.applied.engineReload': string;
|
|
1427
|
+
'config.localConfig.applied.nextEngineStart': string;
|
|
1428
|
+
'config.localConfig.applied.unchanged': string;
|
|
1429
|
+
'config.localConfig.preview.nextTurn': string;
|
|
1430
|
+
'config.localConfig.preview.engineReload': string;
|
|
1431
|
+
'config.localConfig.preview.nextEngineStart': string;
|
|
1432
|
+
'config.localConfig.preview.unchanged': string;
|
|
1433
|
+
'config.localConfig.residue.orphanKeySlot': string;
|
|
1434
|
+
'config.localConfig.residue.legacyTierGroupsLeft': string;
|
|
1435
|
+
'config.localConfig.disclosure.decidedBy': string;
|
|
1436
|
+
'config.localConfig.disclosure.shadowed': string;
|
|
1437
|
+
'config.localConfig.disclosure.tierGroupOverridden': string;
|
|
1438
|
+
'config.localConfig.disclosure.tierGroupOverriddenNamed': string;
|
|
1439
|
+
'config.localConfig.layer.userSettings': string;
|
|
1440
|
+
'config.localConfig.layer.projectSettings': string;
|
|
1441
|
+
'config.localConfig.layer.localSettings': string;
|
|
1442
|
+
'config.localConfig.layer.globalConfig': string;
|
|
1443
|
+
'config.localConfig.layer.projectMcp': string;
|
|
1444
|
+
'config.localConfig.layer.models': string;
|
|
1445
|
+
'config.localConfig.layer.deploymentMcp': string;
|
|
1446
|
+
'config.localConfig.layer.policySettings': string;
|
|
1447
|
+
'config.localConfig.layer.other': string;
|
|
1448
|
+
'config.localConfig.refused.nameUnusable': string;
|
|
1449
|
+
'config.localConfig.refused.nameReserved': string;
|
|
1450
|
+
'config.localConfig.refused.mcpEntryInvalid': string;
|
|
1451
|
+
'config.localConfig.refused.ambiguousScope': string;
|
|
1452
|
+
'config.localConfig.refused.credentialsNeedReentry': string;
|
|
1453
|
+
'config.localConfig.refused.baseConflict': string;
|
|
1454
|
+
'config.mcpServers.notice.shadowed': string;
|
|
1455
|
+
'config.mcpServers.notice.endpointDiffers': string;
|
|
1456
|
+
'config.mcpServers.notice.deploymentWins': string;
|
|
1457
|
+
'config.mcpServers.notice.envMissing': string;
|
|
1458
|
+
'config.mcpServers.notice.narrowingWouldConflict': string;
|
|
1459
|
+
'config.mcpServers.withheld.narrowingConflict': string;
|
|
1460
|
+
'config.mcpServers.withheld.narrowingInvalid': string;
|
|
1461
|
+
'config.mcpServers.withheld.layerUnreadable': string;
|
|
1462
|
+
'config.mcpServers.withheld.policyLocked': string;
|
|
1463
|
+
'config.mcpServers.problem.nameReserved': string;
|
|
1464
|
+
'config.mcpServers.approvalsWithheld': string;
|
|
1465
|
+
'config.mcpServers.probe.removed': string;
|
|
1466
|
+
'config.mcpServers.probe.notActive': string;
|
|
1467
|
+
'config.mcpServers.probe.envMissing': string;
|
|
1468
|
+
'config.mcpServers.probe.editRefusal': string;
|
|
1347
1469
|
'follow.notFollowed.headRun': string;
|
|
1348
1470
|
'follow.notFollowed.headTurn': string;
|
|
1349
1471
|
'follow.notFollowed.reason.exhaustedDraining': string;
|
|
@@ -1376,6 +1498,8 @@ declare const EN: {
|
|
|
1376
1498
|
'approval.planReview.decision.cardMissing': string;
|
|
1377
1499
|
'approval.planReview.decision.gateMoved': string;
|
|
1378
1500
|
'approval.planReview.decision.gateUntrusted': string;
|
|
1501
|
+
'approval.planReview.decision.sentWithoutGateId': string;
|
|
1502
|
+
'approval.planReview.bridge.gateIdMissing': string;
|
|
1379
1503
|
'approval.planReview.option.askAgain.label': string;
|
|
1380
1504
|
'approval.planReview.option.askAgain.description': string;
|
|
1381
1505
|
'localEngine.behind.cliUpdate': string;
|
|
@@ -1549,6 +1673,47 @@ declare const EN: {
|
|
|
1549
1673
|
'localEngine.health.answer.ok': string;
|
|
1550
1674
|
'localEngine.health.answer.notOkHttp': string;
|
|
1551
1675
|
'localEngine.health.answer.notOkStatus': string;
|
|
1676
|
+
'centerTrust.refusal.badInput': string;
|
|
1677
|
+
'centerTrust.refusal.empty': string;
|
|
1678
|
+
'centerTrust.refusal.tooLong': string;
|
|
1679
|
+
'centerTrust.refusal.unsafeCharacter': string;
|
|
1680
|
+
'centerTrust.refusal.scheme': string;
|
|
1681
|
+
'centerTrust.refusal.userinfo': string;
|
|
1682
|
+
'centerTrust.refusal.percentInHost': string;
|
|
1683
|
+
'centerTrust.refusal.unparseable': string;
|
|
1684
|
+
'centerTrust.refusal.query': string;
|
|
1685
|
+
'centerTrust.refusal.fragment': string;
|
|
1686
|
+
'centerTrust.refusal.trailingDot': string;
|
|
1687
|
+
'centerTrust.refusal.ipNotCanonical': string;
|
|
1688
|
+
'centerTrust.refusal.plaintextRemote': string;
|
|
1689
|
+
'centerTrust.refusal.path': string;
|
|
1690
|
+
'centerTrust.refusal.fingerprint': string;
|
|
1691
|
+
'centerTrust.refusal.tooManyFingerprints': string;
|
|
1692
|
+
'centerTrust.refusal.prefix': string;
|
|
1693
|
+
'centerTrust.refusal.parserUnavailable': string;
|
|
1694
|
+
'centerTrust.refusal.bodyTooLarge': string;
|
|
1695
|
+
'centerTrust.refusal.bodyNotJson': string;
|
|
1696
|
+
'centerTrust.refusal.bodyShape': string;
|
|
1697
|
+
'centerTrust.refusal.servedCount': string;
|
|
1698
|
+
'centerTrust.refusal.certificateTooLarge': string;
|
|
1699
|
+
'centerTrust.refusal.certificateNotCanonical': string;
|
|
1700
|
+
'centerTrust.refusal.certificateUnparseable': string;
|
|
1701
|
+
'centerTrust.refusal.servedDuplicate': string;
|
|
1702
|
+
'centerTrust.refusal.namedNotServed': string;
|
|
1703
|
+
'centerTrust.refusal.anchorNotSelfSigned': string;
|
|
1704
|
+
'centerTrust.refusal.unconfiguredWithFingerprints': string;
|
|
1705
|
+
'centerTrust.refusal.cancelled': string;
|
|
1706
|
+
'centerTrust.refusal.timedOut': string;
|
|
1707
|
+
'centerTrust.refusal.transportFailed': string;
|
|
1708
|
+
'centerTrust.refusal.contentType': string;
|
|
1709
|
+
'centerTrust.refusal.caUnavailable': string;
|
|
1710
|
+
'centerTrust.refusal.endpointMissing': string;
|
|
1711
|
+
'centerTrust.refusal.unexpectedStatus': string;
|
|
1712
|
+
'centerTrust.refusal.retryAfterUnusable': string;
|
|
1713
|
+
'centerTrust.refusal.retryAfterTooLong': string;
|
|
1714
|
+
'centerTrust.refusal.retriesExhausted': string;
|
|
1715
|
+
'centerTrust.refusal.budgetExhausted': string;
|
|
1716
|
+
'centerTrust.refusal.unknown': string;
|
|
1552
1717
|
};
|
|
1553
1718
|
export declare const EN_MESSAGES: Readonly<typeof EN>;
|
|
1554
1719
|
export type MessageKey = keyof typeof EN;
|
package/dist/i18n/messages.en.js
CHANGED
|
@@ -211,6 +211,20 @@ const EN = {
|
|
|
211
211
|
'onboard.plan.envNotObject': 'The settings file has an "env" that is not an object — not rewriting it.',
|
|
212
212
|
'onboard.plan.envCatalogPresent': 'The engine is serving "{model}" from environment settings and the catalog has no enabled model; a first catalog model would replace the environment models. Add them to the catalog first.',
|
|
213
213
|
'onboard.input.keyInFields': 'The model ID / base URL contains the API key — check the fields.',
|
|
214
|
+
'model.pool.add.duplicate': '"{model}" is listed twice in this batch with the same address — add it once.',
|
|
215
|
+
'model.pool.add.probeFailed': 'The provider rejected "{model}" (key, model name or reply format) — fix it and check again.',
|
|
216
|
+
'model.pool.add.probeUnverified': '"{model}" hasn\'t been checked against its provider (or the check couldn\'t finish) — check it again, or save it as unverified.',
|
|
217
|
+
'model.pool.add.pinMoved': 'The model list changed while "{name}" was being saved (its name or stored key moved) — nothing was added. Try again.',
|
|
218
|
+
'model.pool.notFound': 'There is no model named "{name}" in the model list.',
|
|
219
|
+
'model.pool.importEnv.notYet': 'The engine is serving "{model}" from its environment settings. This app can\'t copy environment models into the model list yet — add them by hand (address and key) first, then add more.',
|
|
220
|
+
'model.pool.tier.badGroup': 'A tier group name must start with a letter or digit and use only letters, digits, ".", "_" or "-".',
|
|
221
|
+
'model.pool.tier.noGroup': 'There is no tier group named "{group}".',
|
|
222
|
+
'model.pool.tier.groupExists': 'A tier group named "{group}" already exists.',
|
|
223
|
+
'model.pool.channel.badPick': 'The picked profile or models were not found in what this app read from that source.',
|
|
224
|
+
'model.pool.discover.status': 'The model list request answered HTTP {status}.',
|
|
225
|
+
'model.pool.discover.notList': 'The endpoint did not answer with a model list.',
|
|
226
|
+
'model.pool.discover.timeout': 'The model list request timed out.',
|
|
227
|
+
'model.pool.discover.unreachable': 'The endpoint could not be reached: {cause}',
|
|
214
228
|
'onboard.refusal.input': 'The model setup is incomplete or not in the expected shape — nothing was saved.',
|
|
215
229
|
'onboard.refusal.probeFailed': 'The provider did not accept this setup — nothing was saved.',
|
|
216
230
|
'onboard.refusal.probeUnverified': "The provider couldn't be checked, so nothing was saved — try again, or save it as unverified.",
|
|
@@ -291,6 +305,7 @@ const EN = {
|
|
|
291
305
|
'approval.rowUnresumable.askNotSurfaced': 'the pending row (task {taskId}) cannot be continued by this engine, so it is not surfaced as a card that can be answered: {sentence}',
|
|
292
306
|
'approval.park.stillParked': '{gate} gate could not be answered: {reason} — the run is still parked on this approval.',
|
|
293
307
|
'approval.park.refusedNotResumable': '{gate} gate could not be answered: {reason} — this engine cannot resume this approval as things stand; cancel the run if it is still parked.',
|
|
308
|
+
'approval.park.newerWorker': '{gate} gate could not be answered: {reason} — the run is still parked on this approval, but {wayOut}.',
|
|
294
309
|
'approval.park.resume.card': '{gate} gate could not be answered: {reason} — the run is still parked on this approval: decide it on the card when it is shown again, or cancel the run.',
|
|
295
310
|
'approval.park.resume.speak': '{gate} gate could not be answered: {reason} — the run is still parked on this approval: send a message to reopen the card, then decide it there, or cancel the run.',
|
|
296
311
|
'approval.park.argsFromModelCall': "the pending approval record has no tool arguments that will run, so the arguments shown are the model's original call from the conversation — if they were changed after that call (for example by a hook), what runs differs from what is shown. Edits are not accepted on this card: the arguments shown are not the ones that will run",
|
|
@@ -433,6 +448,9 @@ const EN = {
|
|
|
433
448
|
'resume.refusal.park.printHolds': '{head}{configMayReturn} The parked run still holds this session ({code}): cancel it ({cancel}), then submit the work again as a new task.{blocked}',
|
|
434
449
|
'resume.refusal.park.interactiveEnded': '{head} The engine ended that parked run, so this conversation is free: send the work again as a new message.',
|
|
435
450
|
'resume.refusal.park.interactiveBusy': '{head}{configMayReturn} The parked run keeps this conversation busy until it is cancelled.',
|
|
451
|
+
'resume.refusal.park.whyNewerEngine': 'it was parked by a newer engine version than this one',
|
|
452
|
+
'resume.refusal.park.interactiveNewerWorker': '{head}{configMayReturn} The parked run still holds this conversation, but {wayOut}.',
|
|
453
|
+
'resume.refusal.park.printNewerWorker': '{head}{configMayReturn} The parked run still holds this session ({code}), but {wayOut} ({cancel}).{blocked}',
|
|
436
454
|
'resume.refusal.park.blockedPrint': 'sema will not put the card for run {run} back on screen by itself: this engine version refuses to resume it. Cancel the run ({cancel}) and submit the work again as a new task.',
|
|
437
455
|
'resume.refusal.park.blockedInteractive': 'sema will not put the card for run {run} back on screen by itself: this engine version refuses to resume it. To free this conversation, send a message — sema then offers to cancel that run (if the card comes back instead, answer it first), after which you can send the work again as a new message.',
|
|
438
456
|
'session.selfHeal.wayOut.interactive': 'run /clear to keep working in a fresh session',
|
|
@@ -687,6 +705,21 @@ const EN = {
|
|
|
687
705
|
'session.hostSettings.styleSafeMode': 'Safe mode is on, so the output style from your settings is not applied.',
|
|
688
706
|
'session.hostSettings.styleOversize': 'Your output style was not applied to this request: together with the built-in product context it is longer than the {limit}-character limit. Shorten the style to apply it.',
|
|
689
707
|
'session.hostSettings.styleUnreadable': 'Your output style could not be read as text, so it is not applied to this request.',
|
|
708
|
+
'session.hostSettings.allowKept.managed.inProgress.one': '{held} permissions.allow rule was not sent to the engine for this run because the managed policy for your account has not been received yet (sema keeps fetching it; allow rules apply once it arrives). Run again once it has been received (deny and ask rules, and rules given with --allowedTools, are still sent).',
|
|
709
|
+
'session.hostSettings.allowKept.managed.inProgress.other': '{held} permissions.allow rules were not sent to the engine for this run because the managed policy for your account has not been received yet (sema keeps fetching it; allow rules apply once it arrives). Run again once it has been received (deny and ask rules, and rules given with --allowedTools, are still sent).',
|
|
710
|
+
'session.hostSettings.allowKept.managed.failed.one': '{held} permissions.allow rule was not sent to the engine for this run because the managed policy for your account has not been received yet (this run will not fetch again; the next run retries). Run again to retry fetching it (deny and ask rules, and rules given with --allowedTools, are still sent).',
|
|
711
|
+
'session.hostSettings.allowKept.managed.failed.other': '{held} permissions.allow rules were not sent to the engine for this run because the managed policy for your account has not been received yet (this run will not fetch again; the next run retries). Run again to retry fetching it (deny and ask rules, and rules given with --allowedTools, are still sent).',
|
|
712
|
+
'session.hostSettings.allowKept.managed.unknown.one': '{held} permissions.allow rule was not sent to the engine for this run because the managed policy for your account has not been received yet. Run again once it has been received (deny and ask rules, and rules given with --allowedTools, are still sent).',
|
|
713
|
+
'session.hostSettings.allowKept.managed.unknown.other': '{held} permissions.allow rules were not sent to the engine for this run because the managed policy for your account has not been received yet. Run again once it has been received (deny and ask rules, and rules given with --allowedTools, are still sent).',
|
|
714
|
+
'session.hostSettings.allowKept.generic.one': '{held} permissions.allow rule was not sent to the engine for this run because {why}; an allow rule from a settings file is only sent from a settings read with no problems. Fix the reported settings, then run again (deny and ask rules from this read, and rules given with --allowedTools, are still sent).',
|
|
715
|
+
'session.hostSettings.allowKept.generic.other': '{held} permissions.allow rules were not sent to the engine for this run because {why}; an allow rule from a settings file is only sent from a settings read with no problems. Fix the reported settings, then run again (deny and ask rules from this read, and rules given with --allowedTools, are still sent).',
|
|
716
|
+
'session.hostSettings.allowKept.why.problems': 'the settings read reported problems',
|
|
717
|
+
'session.hostSettings.allowKept.why.problemsWhere': 'the settings read reported problems ({where})',
|
|
718
|
+
'session.hostSettings.allowKept.why.counted.one': 'the settings read reported {count} problem',
|
|
719
|
+
'session.hostSettings.allowKept.why.counted.other': 'the settings read reported {count} problems',
|
|
720
|
+
'session.hostSettings.allowKept.why.countedWhere.one': 'the settings read reported {count} problem ({where})',
|
|
721
|
+
'session.hostSettings.allowKept.why.countedWhere.other': 'the settings read reported {count} problems ({where})',
|
|
722
|
+
'session.hostSettings.allowKept.why.unreadable': 'the health of this settings read could not be checked',
|
|
690
723
|
'model.identity.lane.processEnv': 'the environment this client was started with',
|
|
691
724
|
'model.identity.lane.settingsEnv': "this client's settings file",
|
|
692
725
|
'model.identity.lane.modelCatalogFile': 'the local model catalog file',
|
|
@@ -698,6 +731,24 @@ const EN = {
|
|
|
698
731
|
'model.identity.catalogAdoption.refused': '{lane} lists models, but the engine is reported to refuse this catalog as written, so none of them can serve as its default',
|
|
699
732
|
'model.identity.catalogAdoption.notResolvable': 'no model name is configured for the local engine to start with — {clause}, and the engine does not start without one',
|
|
700
733
|
'model.identity.catalogAdoption.notResolvableWithPartial': 'no model name is configured for the local engine to start with — {clause}, and {partial}, and the engine does not start without one',
|
|
734
|
+
'model.configGap.head.model': 'no model is configured yet',
|
|
735
|
+
'model.configGap.head.gatewayUrl': 'no model gateway base URL is configured',
|
|
736
|
+
'model.configGap.head.apiKey': 'no API key is configured',
|
|
737
|
+
'model.configGap.head.anthropicKey': 'no Anthropic key is configured (ANTHROPIC_API_KEY or ANTHROPIC_AUTH_TOKEN)',
|
|
738
|
+
'model.configGap.head.incomplete': 'model configuration is incomplete',
|
|
739
|
+
'model.configGap.item.model': 'the model name (MODEL_ID)',
|
|
740
|
+
'model.configGap.item.gatewayUrl': 'the gateway base URL (MODEL_GATEWAY_BASEURL)',
|
|
741
|
+
'model.configGap.item.apiKey': 'the API key (MODEL_API_KEY)',
|
|
742
|
+
'model.configGap.item.anthropicKey': 'an Anthropic key (ANTHROPIC_API_KEY or ANTHROPIC_AUTH_TOKEN)',
|
|
743
|
+
'model.configGap.lead.one': '{a} is not configured',
|
|
744
|
+
'model.configGap.lead.two': '{a} and {b} are not configured',
|
|
745
|
+
'model.configGap.lead.three': '{a}, {b} and {c} are not configured',
|
|
746
|
+
'model.configGap.reason.noModel': 'the engine does not start without a model name',
|
|
747
|
+
'model.configGap.reason.anthropicCatalog.one': "the model catalog's only enabled entry is on the anthropic channel, so the engine cannot serve it",
|
|
748
|
+
'model.configGap.reason.anthropicCatalog.other': "the model catalog's {count} enabled entries are all on the anthropic channel, so the engine cannot serve any of them",
|
|
749
|
+
'model.configGap.reason.gatewayCatalog.one': "the model catalog's only enabled entry has no base URL of its own, so the engine cannot serve it",
|
|
750
|
+
'model.configGap.reason.gatewayCatalog.other': "none of the model catalog's {count} enabled entries has a base URL of its own, so the engine cannot serve any of them",
|
|
751
|
+
'model.configGap.detail.withReason': '{missing} — {reason}',
|
|
701
752
|
'notice.injectionLane.sentence': "On this engine's {lane} lane the tools run on a different machine than the engine, so the {items} sent with a task run there rather than on this machine — any that rely on programs or credentials on this machine will fail there",
|
|
702
753
|
'notice.injectionLane.item.stdioMcp': 'local stdio MCP servers',
|
|
703
754
|
'notice.injectionLane.item.credentialedMcp': 'MCP servers that use credentials from this machine',
|
|
@@ -1344,6 +1395,77 @@ const EN = {
|
|
|
1344
1395
|
'config.mods.session.unarmed': 'Mods show up here once this conversation has run on this engine',
|
|
1345
1396
|
'config.hooks.roster.unreadable': "This conversation's hooks plan couldn't be read",
|
|
1346
1397
|
'config.hooks.roster.unarmed': 'Hooks show up here once this app has this conversation open',
|
|
1398
|
+
'config.localConfig.refused.invalidRequest': 'The change could not be read as a valid request — nothing was saved.',
|
|
1399
|
+
'config.localConfig.refused.scopeUnreadable': "The configuration file can't be read, so it was not overwritten — nothing was saved.",
|
|
1400
|
+
'config.localConfig.refused.scopeUnwritable': "This setting can't be saved in that file — it would not take effect there. Nothing was saved.",
|
|
1401
|
+
'config.localConfig.refused.untrustedFolder': "This folder isn't trusted, so its settings files can't carry this setting — nothing was saved.",
|
|
1402
|
+
'config.localConfig.refused.policyDenied': "Your organization's managed settings don't allow this change — nothing was saved.",
|
|
1403
|
+
'config.localConfig.refused.notFound': 'The item to change was not found — nothing was saved.',
|
|
1404
|
+
'config.localConfig.refused.alreadyExists': 'That item already exists — nothing was saved.',
|
|
1405
|
+
'config.localConfig.refused.lockBusy': 'Another program is changing this configuration right now — nothing was saved. Try again in a moment.',
|
|
1406
|
+
'config.localConfig.refused.lockFailed': "The configuration file couldn't be locked for writing (a permission or folder problem) — the file was not changed.",
|
|
1407
|
+
'config.localConfig.refused.changedDuringWrite': 'Another program changed this configuration while saving — nothing was saved. Try again.',
|
|
1408
|
+
'config.localConfig.refused.writeFailed': "The configuration file couldn't be written — the file was not changed.",
|
|
1409
|
+
'config.localConfig.refused.notWritten': 'The change was not saved.',
|
|
1410
|
+
'config.localConfig.refused.skillLockedByHigherLayer': "A higher-priority configuration sets this skill's state; it cannot be changed here.",
|
|
1411
|
+
'config.localConfig.refused.skillManagedByPlugin': 'A plugin skill is managed with the plugin, not here.',
|
|
1412
|
+
'config.localConfig.refused.skillLockedByAuthor': "This skill's own file turns model invocation off; its state cannot be changed here.",
|
|
1413
|
+
'config.localConfig.refused.skillNameUnstorable': "Settings can't store an entry with this skill's name; rename its folder or file to configure it.",
|
|
1414
|
+
'config.localConfig.refused.entryInUse': 'That model is still in use (as the default model, by a role, or in an old tier setting) — point those at another model first. Nothing was saved.',
|
|
1415
|
+
'config.localConfig.refused.credentialUnpaired': "That model couldn't be reached with the key or address it has — nothing was saved.",
|
|
1416
|
+
'config.localConfig.refused.envCatalogPresent': 'The engine is using the models set in its environment; adding one here would take those out of use. Import the environment models first — nothing was saved.',
|
|
1417
|
+
'config.localConfig.refused.probeFailed': 'The provider showed that a model in this change is set up wrong (key, model name or reply format) — nothing was saved.',
|
|
1418
|
+
'config.localConfig.refused.probeUnverified': "A model in this change hasn't been checked against its provider (or the check couldn't finish) — nothing was saved. Check it again, or save it as unverified.",
|
|
1419
|
+
'config.localConfig.unavailable.engineIsRemote': "The Cloud engine is in use — local configuration doesn't apply to it. Switch to the local engine first.",
|
|
1420
|
+
'config.localConfig.unavailable.notSingleUser': "This engine isn't confirmed to serve only you, so local configuration isn't used with it.",
|
|
1421
|
+
'config.localConfig.unavailable.configHomeUnpinned': "This app hasn't settled which configuration folder to use, so local configuration is neither shown nor changed.",
|
|
1422
|
+
'config.localConfig.unavailable.domainNotHosted': "This app doesn't offer this kind of configuration change on this device yet.",
|
|
1423
|
+
'config.localConfig.unknown.commitUnconfirmed': "It isn't certain whether the change was saved — refresh to check.",
|
|
1424
|
+
'config.localConfig.unknown.reportUnreadable': "The app's answer after saving couldn't be read, so it isn't certain whether the change was saved — refresh to check.",
|
|
1425
|
+
'config.localConfig.applied.nextTurn': 'Saved. It takes effect from the next turn.',
|
|
1426
|
+
'config.localConfig.applied.engineReload': 'Saved. The engine picks it up when it next reloads its configuration, usually within a minute.',
|
|
1427
|
+
'config.localConfig.applied.nextEngineStart': 'Saved. It takes effect the next time the local engine starts.',
|
|
1428
|
+
'config.localConfig.applied.unchanged': 'Already set this way — nothing needed to change.',
|
|
1429
|
+
'config.localConfig.preview.nextTurn': 'Not saved yet. Once saved, it takes effect from the next turn.',
|
|
1430
|
+
'config.localConfig.preview.engineReload': 'Not saved yet. Once saved, the engine picks it up when it next reloads its configuration.',
|
|
1431
|
+
'config.localConfig.preview.nextEngineStart': 'Not saved yet. Once saved, it takes effect the next time the local engine starts.',
|
|
1432
|
+
'config.localConfig.preview.unchanged': 'Already set this way — saving would change nothing.',
|
|
1433
|
+
'config.localConfig.residue.orphanKeySlot': 'A stored key slot was left with no model using it; it does nothing.',
|
|
1434
|
+
'config.localConfig.residue.legacyTierGroupsLeft': 'The old tier settings were left in the settings file; they are no longer used.',
|
|
1435
|
+
'config.localConfig.disclosure.decidedBy': 'The setting in effect comes from {layer}.',
|
|
1436
|
+
'config.localConfig.disclosure.shadowed': 'This setting is overridden by {layer}, so it has no effect for now.',
|
|
1437
|
+
'config.localConfig.disclosure.tierGroupOverridden': 'Some tier groups in your old settings share a name with groups already in {layer}; the ones in {layer} were kept and the old ones were not copied over.',
|
|
1438
|
+
'config.localConfig.disclosure.tierGroupOverriddenNamed': 'These tier groups in your old settings share a name with groups already in {layer}; the ones in {layer} were kept and the old ones were not copied over: {names}.',
|
|
1439
|
+
'config.localConfig.layer.userSettings': 'your user settings',
|
|
1440
|
+
'config.localConfig.layer.projectSettings': "this project's shared settings",
|
|
1441
|
+
'config.localConfig.layer.localSettings': "this project's local settings",
|
|
1442
|
+
'config.localConfig.layer.globalConfig': "this app's state file",
|
|
1443
|
+
'config.localConfig.layer.projectMcp': "this project's MCP server file",
|
|
1444
|
+
'config.localConfig.layer.models': 'the model catalog',
|
|
1445
|
+
'config.localConfig.layer.deploymentMcp': "the engine's MCP server declaration",
|
|
1446
|
+
'config.localConfig.layer.policySettings': "your organization's managed settings",
|
|
1447
|
+
'config.localConfig.layer.other': 'another settings file',
|
|
1448
|
+
'config.localConfig.refused.nameUnusable': 'That server name can\'t be used — nothing was saved.',
|
|
1449
|
+
'config.localConfig.refused.nameReserved': 'That server name is reserved by the app\'s own built-in server — nothing was saved.',
|
|
1450
|
+
'config.localConfig.refused.mcpEntryInvalid': 'The server entry has problems that would keep it from loading — nothing was saved.',
|
|
1451
|
+
'config.localConfig.refused.ambiguousScope': 'A server with that name is configured in more than one place; choose which one to change — nothing was saved.',
|
|
1452
|
+
'config.localConfig.refused.credentialsNeedReentry': 'The server\'s address or command changed, so the secrets stored for it must be entered again or removed — nothing was saved.',
|
|
1453
|
+
'config.localConfig.refused.baseConflict': 'This server\'s configuration changed after it was shown — nothing was saved. Refresh and try again.',
|
|
1454
|
+
'config.mcpServers.notice.shadowed': 'A server with the same name in the {scope} configuration takes precedence over this one.',
|
|
1455
|
+
'config.mcpServers.notice.endpointDiffers': 'A server with the same name in the {scope} configuration points somewhere else.',
|
|
1456
|
+
'config.mcpServers.notice.deploymentWins': 'The engine\'s own deployment declares a server with this name; the deployment\'s server is used instead.',
|
|
1457
|
+
'config.mcpServers.notice.envMissing': 'These variables are not set, so they stay as written: {names}.',
|
|
1458
|
+
'config.mcpServers.notice.narrowingWouldConflict': 'Other places ({scopes}) declare a different tool list for this name; the server will not load until they agree.',
|
|
1459
|
+
'config.mcpServers.withheld.narrowingConflict': 'Not loaded: the places that configure this server disagree on its tool list.',
|
|
1460
|
+
'config.mcpServers.withheld.narrowingInvalid': 'Not loaded: a tool list for this server is written incorrectly in one of the places that configure it.',
|
|
1461
|
+
'config.mcpServers.withheld.layerUnreadable': 'Not loaded: a configuration file that can add or limit MCP servers could not be read, so no MCP servers are loaded until it is fixed.',
|
|
1462
|
+
'config.mcpServers.withheld.policyLocked': 'Not loaded: your organization\'s managed settings only allow the MCP servers it provides.',
|
|
1463
|
+
'config.mcpServers.problem.nameReserved': 'This name belongs to the app\'s own built-in server.',
|
|
1464
|
+
'config.mcpServers.approvalsWithheld': 'MCP approvals written in {layer} are not used because this folder is not trusted.',
|
|
1465
|
+
'config.mcpServers.probe.removed': 'Nothing to test: this change removes the server.',
|
|
1466
|
+
'config.mcpServers.probe.notActive': 'Nothing to test: the server would not be active after this change.',
|
|
1467
|
+
'config.mcpServers.probe.envMissing': 'Not tested: some variables the server uses are not set.',
|
|
1468
|
+
'config.mcpServers.probe.editRefusal': 'Not tested: the change itself could not be accepted.',
|
|
1347
1469
|
'follow.notFollowed.headRun': 'This screen is no longer following run {taskId}{reason}{ending}{exit}',
|
|
1348
1470
|
'follow.notFollowed.headTurn': "This screen is no longer following this turn's run{reason}{ending}{exit}",
|
|
1349
1471
|
'follow.notFollowed.reason.exhaustedDraining': ": the engine instance serving it was going down when its last event stream closed, and this client's re-attach allowance has run out.",
|
|
@@ -1375,7 +1497,9 @@ const EN = {
|
|
|
1375
1497
|
'approval.planReview.decision.refused': 'This {decision} was not applied: the engine refused it and changed nothing.',
|
|
1376
1498
|
'approval.planReview.decision.cardMissing': 'Approving a plan needs the card that showed it, and none came with this approval.',
|
|
1377
1499
|
'approval.planReview.decision.gateMoved': 'The plan on this card is no longer the one waiting for approval.',
|
|
1378
|
-
'approval.planReview.decision.gateUntrusted': "The engine could not recognise this review's gate id (the server's record of it looks damaged; an operator should check it).
|
|
1500
|
+
'approval.planReview.decision.gateUntrusted': "The engine could not recognise this review's gate id (the server's record of it looks damaged; an operator should check it). Until it is fixed, approving this plan from here is refused the same way and changes nothing. Rejecting it or asking for a new plan is sent without the gate id: that does not approve anything, but if the plan has changed in the meantime it acts on whichever plan is waiting then, which may be one nobody here has seen. Cancelling the task also works.",
|
|
1501
|
+
'approval.planReview.decision.sentWithoutGateId': 'This answer was sent without the gate id. If it took effect, it acted on whichever plan review the engine was waiting on when it arrived, which is not necessarily the plan on this card.',
|
|
1502
|
+
'approval.planReview.bridge.gateIdMissing': 'Approving or editing a plan needs the gate id of the review card the user saw, and this decision did not carry one, so nothing was sent. Decide from the review card, which carries the gate id, or reject the plan or cancel the task instead.',
|
|
1379
1503
|
'approval.planReview.option.askAgain.label': 'No, ask for the plan to be presented again',
|
|
1380
1504
|
'approval.planReview.option.askAgain.description': 'Do not approve; ask the model to present the plan again',
|
|
1381
1505
|
'localEngine.behind.cliUpdate': 'The local engine (version {running}) is newer than this Sema ({own}), so this Sema cannot start new work on it. Run `sema update`, then reopen this session.',
|
|
@@ -1549,5 +1673,46 @@ const EN = {
|
|
|
1549
1673
|
'localEngine.health.answer.ok': 'answered with status "ok"',
|
|
1550
1674
|
'localEngine.health.answer.notOkHttp': 'answered HTTP {http}',
|
|
1551
1675
|
'localEngine.health.answer.notOkStatus': 'answered HTTP {http} but not with status "ok"',
|
|
1676
|
+
'centerTrust.refusal.badInput': 'This check was given a value it cannot read; that is a defect in the client, not in what you entered.',
|
|
1677
|
+
'centerTrust.refusal.empty': 'No address was given.',
|
|
1678
|
+
'centerTrust.refusal.tooLong': 'The address is too long (at most {addressMax} characters, and at most {authorityMax} for the host part).',
|
|
1679
|
+
'centerTrust.refusal.unsafeCharacter': 'The address contains whitespace, a control character or a backslash.',
|
|
1680
|
+
'centerTrust.refusal.scheme': 'The address must be written in full, starting with `https://` for an invitation link, or with `http://` or `https://` for a center address.',
|
|
1681
|
+
'centerTrust.refusal.userinfo': 'The address must not carry a user name or password before the host.',
|
|
1682
|
+
'centerTrust.refusal.percentInHost': 'The host part of the address must not contain percent-encoding.',
|
|
1683
|
+
'centerTrust.refusal.unparseable': 'The address is not a parseable http(s) URL.',
|
|
1684
|
+
'centerTrust.refusal.query': 'The address must not carry a query (`?`).',
|
|
1685
|
+
'centerTrust.refusal.fragment': 'The address must not carry a fragment (`#`); only an invitation link may end with a `#ca=` list of fingerprints.',
|
|
1686
|
+
'centerTrust.refusal.trailingDot': 'The host name must not end with a dot.',
|
|
1687
|
+
'centerTrust.refusal.ipNotCanonical': 'An IP address must be written in its standard form (for example `127.0.0.1`, not a shortened or hexadecimal form).',
|
|
1688
|
+
'centerTrust.refusal.plaintextRemote': 'Plain `http://` is allowed only for this machine; a remote center must use `https://`.',
|
|
1689
|
+
'centerTrust.refusal.path': 'The address path is not allowed: an invitation link takes no path, and a center address path must not start with `//` or contain `.` or `..` segments.',
|
|
1690
|
+
'centerTrust.refusal.fingerprint': 'A fingerprint must be `sha256:` followed by 64 hexadecimal digits (an invitation link takes lowercase digits only).',
|
|
1691
|
+
'centerTrust.refusal.tooManyFingerprints': 'At most {fingerprintsMax} fingerprints can be given.',
|
|
1692
|
+
'centerTrust.refusal.prefix': 'A fingerprint must start with `sha256:`.',
|
|
1693
|
+
'centerTrust.refusal.parserUnavailable': "This client cannot read certificates on this platform, so it cannot pin the center's certificate.",
|
|
1694
|
+
'centerTrust.refusal.bodyTooLarge': "The center's certificate answer is larger than {bodyMax} bytes.",
|
|
1695
|
+
'centerTrust.refusal.bodyNotJson': "The center's certificate answer is not valid UTF-8 JSON.",
|
|
1696
|
+
'centerTrust.refusal.bodyShape': "The center's certificate answer does not have the expected shape.",
|
|
1697
|
+
'centerTrust.refusal.servedCount': 'The center must serve from 1 to {servedMax} certificates.',
|
|
1698
|
+
'centerTrust.refusal.certificateTooLarge': 'A certificate from the center is longer than {pemMax} characters.',
|
|
1699
|
+
'centerTrust.refusal.certificateNotCanonical': 'A certificate from the center is not exactly one certificate in standard PEM form (64-character lines, LF line ends) with standard DER lengths.',
|
|
1700
|
+
'centerTrust.refusal.certificateUnparseable': 'A certificate from the center could not be read on this platform.',
|
|
1701
|
+
'centerTrust.refusal.servedDuplicate': 'The center served the same certificate more than once.',
|
|
1702
|
+
'centerTrust.refusal.namedNotServed': 'A fingerprint you gave does not match any certificate the center serves.',
|
|
1703
|
+
'centerTrust.refusal.anchorNotSelfSigned': 'A certificate you named is not self-signed, so it cannot be pinned as a trust anchor.',
|
|
1704
|
+
'centerTrust.refusal.unconfiguredWithFingerprints': 'You gave fingerprints, but the center says it has no certificate authority configured.',
|
|
1705
|
+
'centerTrust.refusal.cancelled': "Fetching the center's certificates was cancelled.",
|
|
1706
|
+
'centerTrust.refusal.timedOut': "Fetching the center's certificates timed out (each attempt waits at most {roundSec} seconds).",
|
|
1707
|
+
'centerTrust.refusal.transportFailed': 'The center could not be reached to fetch its certificates.',
|
|
1708
|
+
'centerTrust.refusal.contentType': "The center's certificate answer is not JSON (wrong content type).",
|
|
1709
|
+
'centerTrust.refusal.caUnavailable': 'The center reports that its certificate authority is unavailable right now.',
|
|
1710
|
+
'centerTrust.refusal.endpointMissing': 'The center does not offer certificates for pinning (it may be an older version).',
|
|
1711
|
+
'centerTrust.refusal.unexpectedStatus': 'The center answered the certificate request with an unexpected status.',
|
|
1712
|
+
'centerTrust.refusal.retryAfterUnusable': 'The center asked to retry later without a usable wait time, so the client stopped.',
|
|
1713
|
+
'centerTrust.refusal.retryAfterTooLong': 'The center asked to wait more than {waitCapSec} seconds before retrying, so the client stopped; try again later.',
|
|
1714
|
+
'centerTrust.refusal.retriesExhausted': 'The center kept asking to retry; the client stopped after {attemptsMax} attempts.',
|
|
1715
|
+
'centerTrust.refusal.budgetExhausted': "Fetching the center's certificates used up its {budgetSec}-second time budget.",
|
|
1716
|
+
'centerTrust.refusal.unknown': "The center's certificate could not be checked.",
|
|
1552
1717
|
};
|
|
1553
1718
|
export const EN_MESSAGES = Object.freeze(EN);
|