@sema-agent/client-core 0.100.0 → 0.101.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 +395 -0
- package/README.md +164 -117
- package/dist/adapt/arms.js +51 -16
- package/dist/adapt/textStream.js +7 -4
- package/dist/adapt/toolCards.js +9 -8
- package/dist/adapt.js +7 -1
- package/dist/adapter/activeRunSelfHeal.d.ts +24 -2
- package/dist/adapter/activeRunSelfHeal.js +108 -6
- package/dist/adapter/downstream/eventToSdkMessage.js +33 -12
- package/dist/adapter/downstream/terminalToSdkResult.d.ts +60 -1
- package/dist/adapter/downstream/terminalToSdkResult.js +209 -39
- package/dist/adapter/runStream.d.ts +4 -4
- package/dist/adapter/runStream.js +158 -43
- package/dist/agentsWireCaps.d.ts +2 -7
- package/dist/agentsWireCaps.js +1 -2
- package/dist/approvalDecidedByCapability.js +2 -2
- package/dist/approvalFrameFamilies.d.ts +33 -0
- package/dist/approvalFrameFamilies.js +120 -0
- package/dist/approvalsStreamLiveCapability.js +2 -2
- package/dist/attachmentsWireCaps.js +41 -13
- package/dist/callerCwdCapability.js +2 -2
- package/dist/centerWiringCapability.js +2 -2
- package/dist/clockReading.d.ts +2 -0
- package/dist/clockReading.js +4 -0
- package/dist/cloudConfigWireCaps.d.ts +19 -5
- package/dist/cloudConfigWireCaps.js +193 -56
- package/dist/coreValuePorts.d.ts +12 -2
- package/dist/coreValuePorts.js +9 -0
- package/dist/decideFailureNote.js +5 -3
- package/dist/decideReceipt.js +2 -2
- package/dist/deviceExecutorManagementCapability.js +2 -2
- package/dist/deviceFlowPolling.js +1 -1
- package/dist/disableSkillsWire.d.ts +1 -1
- package/dist/disableSkillsWire.js +4 -3
- package/dist/displayUntrusted.d.ts +1 -0
- package/dist/displayUntrusted.js +65 -8
- package/dist/engineCapReader.js +1 -1
- package/dist/engineConfigDrift.js +1 -1
- package/dist/engineErrorCodes.d.ts +14 -5
- package/dist/engineErrorCodes.js +27 -6
- package/dist/engineGenerationConvergence.d.ts +39 -0
- package/dist/engineGenerationConvergence.js +95 -0
- package/dist/engineGenerationPort.d.ts +61 -0
- package/dist/engineGenerationPort.js +144 -0
- package/dist/engineHealthFacts.d.ts +23 -0
- package/dist/engineHealthFacts.js +92 -0
- package/dist/engineIdentity.d.ts +4 -0
- package/dist/engineIdentity.js +11 -0
- package/dist/engineNoticeCodes.d.ts +2 -5
- package/dist/engineRowRef.js +3 -0
- package/dist/engineSessionMessages.js +2 -2
- package/dist/engineToolDirectory.js +2 -2
- package/dist/engineWireFor.d.ts +99 -0
- package/dist/engineWireFor.js +248 -6
- package/dist/engineWireTarget.d.ts +1 -0
- package/dist/engineWireTarget.js +8 -0
- package/dist/env/uiLanguage.js +1 -1
- package/dist/errorSupplementRoles.d.ts +3 -0
- package/dist/errorSupplementRoles.js +37 -0
- package/dist/executionLaneCapability.js +2 -2
- package/dist/fileHistoryCaptureCapability.js +3 -3
- package/dist/finalVerifyWire.d.ts +6 -3
- package/dist/finalVerifyWire.js +6 -23
- package/dist/flagInput.d.ts +4 -0
- package/dist/flagInput.js +24 -0
- package/dist/fleet/fleetLedger.js +5 -2
- package/dist/fleet/fleetProjection.d.ts +1 -0
- package/dist/fleet/fleetProjection.js +15 -2
- package/dist/gateVocabulary.js +3 -0
- package/dist/generated/engineFactTables.d.ts +7 -3
- package/dist/generated/engineFactTables.js +52 -0
- package/dist/generated/engineNoticeTables.js +12 -0
- package/dist/generated/settingsSchemaActiveTiers.d.ts +1 -0
- package/dist/generated/settingsSchemaActiveTiers.js +14 -0
- package/dist/generated/settingsSchemaCallerTextEcho.d.ts +1 -0
- package/dist/generated/settingsSchemaCallerTextEcho.js +8 -0
- package/dist/generated/settingsSchemaControlAndBidi.d.ts +1 -0
- package/dist/generated/settingsSchemaControlAndBidi.js +8 -0
- package/dist/generated/settingsSchemaDefaultModel.d.ts +11 -0
- package/dist/generated/settingsSchemaDefaultModel.js +25 -0
- package/dist/generated/settingsSchemaFns.d.ts +54 -0
- package/dist/generated/settingsSchemaFns.js +26 -1
- package/dist/generated/settingsSchemaMcpRequestEntry.d.ts +1 -1
- package/dist/generated/settingsSchemaMcpRequestEntry.js +1 -7
- package/dist/generated/settingsSchemaSafetyMergeSpec.d.ts +1 -0
- package/dist/generated/settingsSchemaSafetyMergeSpec.js +95 -0
- package/dist/generated/settingsSchemaSettingsSources.d.ts +1 -0
- package/dist/generated/settingsSchemaSettingsSources.js +58 -0
- package/dist/generated/settingsSchemaTables.d.ts +2 -0
- package/dist/generated/settingsSchemaTables.js +13 -0
- package/dist/generated/settingsSchemaUrlPattern.d.ts +1 -0
- package/dist/generated/settingsSchemaUrlPattern.js +183 -0
- package/dist/headlessPermissionModeWire.d.ts +18 -2
- package/dist/headlessPermissionModeWire.js +30 -19
- package/dist/hitl/allowRuleShadow.js +7 -5
- package/dist/hitl/approvalCardReading.d.ts +3 -0
- package/dist/hitl/approvalCardReading.js +17 -0
- package/dist/hitl/approvalCompleteParked.js +1 -1
- package/dist/hitl/approvalDelivery.d.ts +87 -0
- package/dist/hitl/approvalDelivery.js +193 -0
- package/dist/hitl/approvalResolution.d.ts +11 -0
- package/dist/hitl/approvalResolution.js +50 -11
- package/dist/hitl/askClassPair.d.ts +6 -0
- package/dist/hitl/askClassPair.js +30 -3
- package/dist/hitl/askParkAutoReopenBlock.d.ts +30 -0
- package/dist/hitl/askParkAutoReopenBlock.js +117 -0
- package/dist/hitl/askParkRowRouting.js +4 -1
- package/dist/hitl/attributionLadder.d.ts +42 -3
- package/dist/hitl/attributionLadder.js +79 -8
- package/dist/hitl/automaticAnswerVerdict.d.ts +6 -1
- package/dist/hitl/automaticAnswerVerdict.js +46 -11
- package/dist/hitl/crashConverged.js +2 -2
- package/dist/hitl/decisionConflict.d.ts +6 -2
- package/dist/hitl/decisionConflict.js +24 -9
- package/dist/hitl/decisionRefusal.d.ts +20 -10
- package/dist/hitl/decisionRefusal.js +99 -54
- package/dist/hitl/decisionSend.d.ts +3 -0
- package/dist/hitl/decisionSend.js +87 -103
- package/dist/hitl/frameRouter.d.ts +1 -0
- package/dist/hitl/frameRouter.js +9 -2
- package/dist/hitl/hitlBridge.d.ts +18 -6
- package/dist/hitl/hitlBridge.js +41 -37
- package/dist/hitl/livePendingAsk.js +4 -3
- package/dist/hitl/noAllowCause.js +1 -1
- package/dist/hitl/parkResolver.js +3 -2
- package/dist/hitl/persistedRulesWire.js +1 -0
- package/dist/hitl/planReviewWire.d.ts +4 -0
- package/dist/hitl/planReviewWire.js +59 -30
- package/dist/hitl/resumeRunningCard.d.ts +3 -2
- package/dist/hitl/resumeRunningCard.js +17 -11
- package/dist/hitl/sessionPolicyDeliverable.d.ts +5 -2
- package/dist/hitl/sessionPolicyDeliverable.js +62 -29
- package/dist/hitl/sessionPolicyWire.d.ts +13 -3
- package/dist/hitl/sessionPolicyWire.js +81 -16
- package/dist/hitl/standingRows.js +1 -1
- package/dist/hitl/toolApprovalWire.d.ts +9 -10
- package/dist/hitl/toolApprovalWire.js +72 -54
- package/dist/hookMatcherVerdict.d.ts +2 -0
- package/dist/hookMatcherVerdict.js +12 -0
- package/dist/hooksCompactTransition.d.ts +19 -0
- package/dist/hooksCompactTransition.js +41 -0
- package/dist/hooksWireCaps.d.ts +1 -1
- package/dist/hooksWireCaps.js +202 -203
- package/dist/host.d.ts +1 -14
- package/dist/host.js +0 -8
- package/dist/hostCallbackGuard.d.ts +1 -0
- package/dist/hostCallbackGuard.js +1 -1
- package/dist/hostSettingsSource.d.ts +172 -0
- package/dist/hostSettingsSource.js +675 -0
- package/dist/hostTurnSettings.d.ts +73 -17
- package/dist/hostTurnSettings.js +594 -97
- package/dist/httpHookPolicy.d.ts +37 -0
- package/dist/httpHookPolicy.js +176 -0
- package/dist/humanTurn.d.ts +2 -1
- package/dist/humanTurn.js +37 -7
- package/dist/humanTurnRead.js +4 -3
- package/dist/humanTurnSentences.d.ts +10 -0
- package/dist/humanTurnSentences.js +74 -0
- package/dist/i18n/messages.en.d.ts +184 -2
- package/dist/i18n/messages.en.js +187 -5
- package/dist/i18n/messages.zh.js +197 -5
- package/dist/i18n/translate.js +3 -3
- package/dist/index.d.ts +69 -15
- package/dist/index.js +45 -13
- package/dist/inheritEnvCapability.d.ts +3 -1
- package/dist/inheritEnvCapability.js +31 -17
- package/dist/inheritEnvWire.d.ts +2 -1
- package/dist/inheritEnvWire.js +11 -5
- package/dist/interactiveToolsWire.d.ts +4 -2
- package/dist/interactiveToolsWire.js +5 -5
- package/dist/jsonFaithful.d.ts +20 -0
- package/dist/jsonFaithful.js +152 -0
- package/dist/limitsWire.d.ts +7 -2
- package/dist/limitsWire.js +19 -13
- package/dist/liveInitToolFace.d.ts +6 -1
- package/dist/liveInitToolFace.js +5 -3
- package/dist/liveModelCatalog.d.ts +22 -0
- package/dist/liveModelCatalog.js +132 -18
- package/dist/mcpPanel.js +1 -1
- package/dist/mcpProbeCapability.js +2 -2
- package/dist/mcpStatusSupersetKeys.d.ts +24 -0
- package/dist/mcpStatusSupersetKeys.js +45 -0
- package/dist/mcpToolToggles.js +2 -1
- package/dist/mcpWireCaps.d.ts +39 -1
- package/dist/mcpWireCaps.js +254 -50
- package/dist/memoryComplianceCapability.js +2 -2
- package/dist/memoryOriginCapability.js +2 -2
- package/dist/model/catalogDefault.d.ts +24 -0
- package/dist/model/catalogDefault.js +4 -0
- package/dist/model/liveCatalogShape.js +5 -4
- package/dist/model/modelsPolicy.js +4 -3
- package/dist/model/onboardJudgement.d.ts +1 -0
- package/dist/model/onboardJudgement.js +1 -1
- package/dist/model/subagentModelWord.js +2 -2
- package/dist/modelCapabilityProbe.js +6 -6
- package/dist/modelIdentityResolvability.d.ts +10 -1
- package/dist/modelIdentityResolvability.js +62 -39
- package/dist/modsKernelIdentity.d.ts +10 -0
- package/dist/modsKernelIdentity.js +103 -0
- package/dist/modsKernelTransit.d.ts +8 -0
- package/dist/modsKernelTransit.js +6 -0
- package/dist/notifications.d.ts +30 -12
- package/dist/notifications.js +241 -53
- package/dist/outputStyleSeatCapability.js +2 -2
- package/dist/ownKey.d.ts +11 -0
- package/dist/ownKey.js +164 -3
- package/dist/panelReduce.js +1 -1
- package/dist/peerFrames.d.ts +1 -1
- package/dist/peerFrames.js +6 -2
- package/dist/peerLaneCapability.js +2 -2
- package/dist/permissionModesCapability.js +4 -4
- package/dist/permissionRuleIssue.js +2 -0
- package/dist/permissionRulesWriteCapability.js +2 -2
- package/dist/permissionsAllowGrantCapability.js +2 -2
- package/dist/permissionsDeclaration.d.ts +43 -4
- package/dist/permissionsDeclaration.js +102 -35
- package/dist/pluginHooksWire.d.ts +20 -4
- package/dist/pluginHooksWire.js +92 -53
- package/dist/prepareRefusal.d.ts +3 -2
- package/dist/prepareRefusal.js +27 -9
- package/dist/printInitToolFace.js +2 -2
- package/dist/printModelStatus.js +1 -1
- package/dist/projectMemory.d.ts +32 -0
- package/dist/projectMemory.js +70 -0
- package/dist/promptBlockedCopy.d.ts +2 -1
- package/dist/promptBlockedCopy.js +2 -1
- package/dist/promptDelivery.d.ts +23 -3
- package/dist/promptDelivery.js +169 -30
- package/dist/providerRejection.d.ts +19 -1
- package/dist/providerRejection.js +75 -4
- package/dist/queuedDelivery.d.ts +48 -0
- package/dist/queuedDelivery.js +233 -0
- package/dist/reattachWindow.d.ts +94 -0
- package/dist/reattachWindow.js +127 -0
- package/dist/request/printNotification.d.ts +1 -1
- package/dist/request/printNotification.js +5 -1
- package/dist/request/submissionIdentity.d.ts +37 -0
- package/dist/request/submissionIdentity.js +65 -0
- package/dist/request/taskRequest.d.ts +12 -4
- package/dist/request/taskRequest.js +221 -152
- package/dist/resultFrameKeys.d.ts +1 -0
- package/dist/resultFrameKeys.js +4 -1
- package/dist/retryStatus.d.ts +8 -0
- package/dist/retryStatus.js +57 -9
- package/dist/rewindArchiveCapability.js +2 -2
- package/dist/rewindEngineAction.d.ts +2 -0
- package/dist/rewindEngineAction.js +23 -1
- package/dist/rowKind.d.ts +36 -0
- package/dist/rowKind.js +97 -0
- package/dist/ruleCompileVerdict.d.ts +18 -0
- package/dist/ruleCompileVerdict.js +67 -2
- package/dist/ruleReadings.d.ts +58 -0
- package/dist/ruleReadings.js +132 -0
- package/dist/ruleRefusalSentence.d.ts +4 -0
- package/dist/ruleRefusalSentence.js +9 -3
- package/dist/runCancelContext.d.ts +0 -1
- package/dist/runCancelContext.js +1 -2
- package/dist/runTerminal.d.ts +5 -0
- package/dist/runTerminal.js +52 -17
- package/dist/sandboxWire.d.ts +1 -1
- package/dist/sandboxWire.js +4 -6
- package/dist/scenarioRefusal.js +1 -1
- package/dist/scenarioSkills.d.ts +20 -0
- package/dist/scenarioSkills.js +72 -0
- package/dist/scenarioWire.d.ts +5 -2
- package/dist/scenarioWire.js +9 -9
- package/dist/sealedKeyCapability.js +2 -2
- package/dist/seam.d.ts +2 -0
- package/dist/seam.js +2 -2
- package/dist/seatContract.d.ts +46 -1
- package/dist/seatContract.js +49 -19
- package/dist/selfOrchestrationDenial.js +1 -1
- package/dist/sessionPolicyCapability.js +2 -2
- package/dist/sessionRulesChildrenReadLive.d.ts +6 -0
- package/dist/sessionRulesChildrenReadLive.js +5 -0
- package/dist/sessionRulesNamespaceFormsCapability.d.ts +12 -0
- package/dist/sessionRulesNamespaceFormsCapability.js +29 -0
- package/dist/sessionSyncFileHistoryCapability.js +2 -2
- package/dist/settingsCredentialKeyPaths.js +60 -5
- package/dist/settingsHooksSalvage.d.ts +1 -0
- package/dist/settingsHooksSalvage.js +7 -1
- package/dist/settingsLayerAdmission.d.ts +4 -0
- package/dist/settingsLayerAdmission.js +16 -0
- package/dist/skillToolListsCapability.js +6 -5
- package/dist/skillsWireCaps.d.ts +14 -0
- package/dist/skillsWireCaps.js +47 -16
- package/dist/slashCommandGate.d.ts +24 -0
- package/dist/slashCommandGate.js +74 -0
- package/dist/slashCommandTable.d.ts +14 -0
- package/dist/slashCommandTable.js +99 -0
- package/dist/sqlEngineCapability.js +2 -2
- package/dist/steerPriorityCapability.js +2 -2
- package/dist/storePostureCapability.js +2 -2
- package/dist/subagent/agentStateDetail.js +1 -1
- package/dist/subagent/engineDelegatedPrompt.d.ts +9 -0
- package/dist/subagent/engineDelegatedPrompt.js +38 -7
- package/dist/subagent/engineRowStopGate.js +2 -2
- package/dist/subagent/engineSubagentResume.js +3 -3
- package/dist/subagent/engineTaskHandleWire.d.ts +1 -0
- package/dist/subagent/engineTaskHandleWire.js +10 -0
- package/dist/submitFailure.d.ts +8 -0
- package/dist/submitFailure.js +17 -0
- package/dist/supportFloor.d.ts +1 -0
- package/dist/supportFloor.js +7 -0
- package/dist/terminationIntent.d.ts +55 -0
- package/dist/terminationIntent.js +352 -0
- package/dist/toolHistoryMismatch.d.ts +8 -0
- package/dist/toolHistoryMismatch.js +37 -6
- package/dist/toolResult.d.ts +13 -3
- package/dist/toolResult.js +158 -9
- package/dist/toolResultContent.d.ts +13 -0
- package/dist/toolResultContent.js +82 -7
- package/dist/toolRoster.d.ts +18 -0
- package/dist/toolRoster.js +64 -0
- package/dist/turnFailurePresentation.js +27 -90
- package/dist/usageLimitAutoResume.d.ts +74 -0
- package/dist/usageLimitAutoResume.js +227 -0
- package/dist/userAttachmentEnvelope.js +1 -1
- package/dist/userAttachmentSeat.js +5 -5
- package/dist/userInvokedSkillsCapability.js +2 -2
- package/dist/webSearchBackendCapability.js +2 -2
- package/dist/wireErrorTriage.js +99 -50
- package/dist/wireFailureShape.d.ts +25 -1
- package/dist/wireFailureShape.js +92 -5
- package/dist/wireRefusalCopy.d.ts +24 -1
- package/dist/wireRefusalCopy.js +253 -32
- package/dist/wiringFleetDoctor.d.ts +3 -0
- package/dist/wiringFleetDoctor.js +21 -0
- package/dist/workflow.d.ts +2 -1
- package/dist/workflow.js +38 -1
- package/dist/workflowClient.d.ts +2 -7
- package/dist/workflowsJournalCapability.js +2 -2
- package/dist/writeProtectionCapability.js +2 -2
- package/docs/INTEGRATION-CLIENTS.md +607 -181
- package/package.json +14 -3
package/dist/i18n/messages.en.js
CHANGED
|
@@ -190,13 +190,33 @@ const EN = {
|
|
|
190
190
|
'config.mcp.transportDegraded': 'MCP server {name}{where} was started without part of its transport settings, which cannot be used as written: {lost}. The rest of its settings are applied; fix the settings named above to get them applied too.',
|
|
191
191
|
'config.mcp.toolAxesInvalid': 'MCP server {name}{where} was not started: its toolAxes setting is not valid — {problem}. Fix the toolAxes entry for this server (or remove it); the other MCP servers are unaffected.',
|
|
192
192
|
'config.mcp.toolAxesFallbackProblem': 'the declaration is not a valid set of per-tool safety settings',
|
|
193
|
+
'config.mcp.toolFacesInvalid': 'MCP server {name}{where} was not started: its toolFaces setting is not valid — {problem}. Fix the toolFaces entry for this server (or remove it); the other MCP servers are unaffected.',
|
|
194
|
+
'config.mcp.toolFacesFallbackProblem': 'the declaration is not a valid set of per-tool display and approval settings',
|
|
195
|
+
'config.mcp.toolFacesUnreadable': 'the setting could not be read (a getter or proxy trap on it threw)',
|
|
193
196
|
'config.mcp.elicitationInvalid': 'MCP server {name}{where} was not started: its elicitation setting must be true or false. Fix the elicitation entry for this server (or remove it); the other MCP servers are unaffected.',
|
|
197
|
+
'config.mcp.entryNotObject': 'MCP server {name}{where} was not started: its entry in the configuration is not an object. An MCP server entry must be an object with a command (a local server) or a url (a remote server). Fix or remove the entry; the other MCP servers are unaffected.',
|
|
198
|
+
'config.mcp.entryUnreadable': 'MCP server {name}{where} was not started: its entry in the configuration could not be read (a getter or proxy trap on it threw). Fix or remove the entry; the other MCP servers are unaffected.',
|
|
199
|
+
'config.mcp.entryNotObjectProblem': 'the entry is not an object (an object with a command or a url is expected)',
|
|
200
|
+
'config.mcp.transportTypeUnsupported': 'this transport type cannot be carried on the request (only stdio and http are supported)',
|
|
201
|
+
'config.mcp.transportIdentityBothSetProblem': 'both principalHeader and assertionHeader are set, and they name the same identity header — keep only one of the two',
|
|
202
|
+
'config.mcp.allowToolsInvalid': 'MCP server {name}{where} was not started: its allowTools setting cannot be used — {problem}. Fix the allowTools entry for this server (a list of tool-name strings); the other MCP servers are unaffected.',
|
|
203
|
+
'config.mcp.allowToolsNotArray': '{path} must be an array of strings (got {got})',
|
|
204
|
+
'config.mcp.allowToolsElementNotString': '{path} must be a string (got {got})',
|
|
205
|
+
'config.mcp.allowToolsHole': '{path} is missing: a list with gaps is not allowed, every position must hold a string',
|
|
206
|
+
'config.mcp.allowToolsUnreadable': '{path} could not be read (a getter or proxy trap on it threw)',
|
|
207
|
+
'config.mcp.allowToolsTooMany': '{path} has too many entries to check (more than {got})',
|
|
194
208
|
'config.mcp.cloudElicitationInvalid': 'cloud config: MCP server entries left out because their elicitation setting is not true or false — fix or remove the elicitation entry: {who}',
|
|
209
|
+
'config.mcp.cloudAllowToolsInvalid': 'cloud config: MCP server entries left out because their allowTools setting is not a list of tool-name strings — fix the allowTools entry: {who}',
|
|
210
|
+
'config.mcp.cloudEntryUnreadable': 'cloud config: MCP server entries left out because the entry could not be read (a getter or proxy trap on it threw) — fix or remove the entry: {who}',
|
|
195
211
|
'config.mcp.cloudToolAxesInvalid': 'cloud config: MCP server entries left out because their toolAxes setting is not valid (per-tool safety overrides take only effect, egress and irreversibility, each with a legal value) — fix or remove the toolAxes entry: {who}',
|
|
212
|
+
'config.mcp.cloudToolFacesInvalid': 'cloud config: MCP server entries left out because their toolFaces setting is not valid (per-tool display and approval settings) — fix or remove the toolFaces entry: {who}',
|
|
196
213
|
'config.mcp.cloudNameUnusable': 'cloud config: MCP server entries left out because their names cannot be used as written (a name over 128 characters, or with leading or trailing whitespace) — fix the names: {who}',
|
|
197
214
|
'config.mcp.cloudTransportInvalid': 'cloud config: MCP server entries left out because their transport setting cannot be used by the engine as written (for example an address that is not an http(s) URL) — fix the transport setting: {who}',
|
|
198
215
|
'config.mcp.cloudTransportDegraded': 'cloud config: MCP server entries started without part of their transport settings, which cannot be used as written (the named settings were left out, the rest are applied) — fix the named settings: {who}',
|
|
199
216
|
'config.mcp.cloudTransportDegradedUnreadable': 'cloud config: the list of MCP server entries started with part of their settings left out could not be read by this client — a server may be running without some of its configured settings and without notice',
|
|
217
|
+
'config.skills.cloudToolListInvalid': 'cloud config: skills left out because their allowedTools or disallowedTools list is not a list of strings (a skill list is sent as written or not at all, never trimmed) — fix or remove the list: {who}',
|
|
218
|
+
'config.skills.cloudDroppedUnreadable': 'cloud config: the list of skills left out because of an unusable tool list could not be read by this client — a skill may be missing without notice',
|
|
219
|
+
'config.skills.toolListTooMany': 'has too many entries to check (more than {got}) — the list is refused rather than read in part or cut down',
|
|
200
220
|
'approval.boundGrants.notActivated.one': "Approving this does not activate the skill shown on the card: 1 entry on its refuse list reads as nothing, and the engine does not drop a refusal it cannot read, so the skill's instructions are not loaded and nothing it lists is granted.",
|
|
201
221
|
'approval.boundGrants.notActivated.other': "Approving this does not activate the skill shown on the card: {count} entries on its refuse list read as nothing, and the engine does not drop a refusal it cannot read, so the skill's instructions are not loaded and nothing it lists is granted.",
|
|
202
222
|
'approval.boundGrants.listsNoToolsWithNothing.one': 'Approving this activates the skill shown on the card; it lists no tools to run without asking and none to refuse. 1 listed entry reads as nothing and grants nothing.',
|
|
@@ -217,6 +237,13 @@ const EN = {
|
|
|
217
237
|
'approval.settle.cause.broadcastLost': 'it never reached any open connection',
|
|
218
238
|
'approval.settle.cause.streamDisconnected': 'the connection carrying this card dropped',
|
|
219
239
|
'approval.settle.cause.undeliverable': 'it could not be delivered to any approval surface',
|
|
240
|
+
'approval.decision.grantChanged': 'The engine refused this approval because the skill grant it was bound to has changed since the card was shown · Nothing was decided and the request is still waiting, but approving it again will be refused the same way · Deny this request so the model can activate the skill again',
|
|
241
|
+
'approval.decision.settledElsewhereContrary.deniedFirst': 'This request was already answered elsewhere and denied, so your approval did not take effect.',
|
|
242
|
+
'approval.decision.settledElsewhereContrary.approvedFirst': 'This request was already answered elsewhere and approved, so your denial did not take effect.',
|
|
243
|
+
'approval.decision.unconfirmedAfterRetry': "It is not known whether your answer took effect: an earlier attempt to send it was not confirmed, and by the time it was sent again the request was no longer waiting · Check the task's current state before acting on it",
|
|
244
|
+
'notice.decide.rowUnrevivable': 'The engine can no longer recover this approval card, so neither approving nor denying it will take effect · The card can only be cleared on the server side — wait for that, or contact whoever operates the engine',
|
|
245
|
+
'approval.askPark.autoReopenBlocked.policyInteractive': "The engine's admission policy refused to resume this parked step (run {run}), so sema will not put its card back on screen by itself. Switch to a permission mode this deployment allows, or ask whoever operates the deployment, then send a message to bring the card back.",
|
|
246
|
+
'approval.askPark.autoReopenBlocked.policyPrint': "The engine's admission policy refused to resume this parked step (run {run}), so sema will not put its card back on screen by itself. Switch to a permission mode this deployment allows, or ask whoever operates the deployment, then send a message to bring the card back; or stop the run ({cancel}).",
|
|
220
247
|
'approval.settle.subject.named': 'the approval request for {tool}',
|
|
221
248
|
'approval.settle.subject.generic': 'this approval request',
|
|
222
249
|
'approval.settle.endedKnown': '{subject} ended on the engine without an answer: {clause}. Nothing was approved from this card; if the step is still needed, ask for it again.',
|
|
@@ -270,10 +297,17 @@ const EN = {
|
|
|
270
297
|
'resume.reopen.first.toolContractMismatch': 'The tool this approval was granted for has changed since the approval was recorded',
|
|
271
298
|
'resume.reopen.content': '{first} · The engine re-parked the work before consuming anything — the approval is still pending and your decision was not consumed · Re-fetch the pending approvals and decide again on an engine where the same tool is available',
|
|
272
299
|
'session.inheritEnv.notConfirmed': 'The engine has not confirmed that it withholds its own credentials from tool shells, so the tool shell gets a filtered environment (credential-looking variables such as GH_TOKEN are omitted) until the engine is upgraded.',
|
|
300
|
+
'session.inheritEnv.valuesNotConfirmed': 'The engine keeps its own credential variables out of tool shells but has not confirmed that it also keeps out copies of them under other names (such as a model key you also exported as OPENAI_API_KEY), so the tool shell gets a filtered environment (credential-looking variables such as GH_TOKEN are omitted) until the engine confirms that.',
|
|
273
301
|
'session.inheritEnv.withheld.all': "Not sent with this request: the engine's version is not known yet, and an engine that does not know the setting that lets the shell inherit this machine's whole environment refuses the whole request, so it was held back; this run's shell gets the default environment, with credential-like variables removed, and on an engine that does know the setting, leaving it out also clears an earlier whole-environment choice for this session.",
|
|
274
302
|
'session.inheritEnv.withheld.scrub': "Not sent with this request: the engine's version is not known yet, so the default-environment setting was left out; that has the same effect, because leaving it out also gives this run the default environment (credential-like variables removed).",
|
|
275
303
|
'session.inheritEnv.withheld.unknown': 'Not sent with this request: the shell-environment setting was held back for a reason this version does not recognize.',
|
|
276
304
|
'session.inheritEnv.refusal': "The engine refused this request as invalid, under a refusal code that many different request fields share · This request asked for the shell to inherit this machine's whole environment, which the engine accepts only when tools run directly on its own machine and the request belongs to a session; if that is what it refused, send it again without that setting (or with the default)",
|
|
305
|
+
'session.inheritEnv.refusalNamed': "The engine refused the setting that lets the shell inherit this machine's whole environment, which it accepts only when tools run directly on its own machine and the request belongs to a session · Send the request again without that setting (or with the default)",
|
|
306
|
+
'session.projectMemory.withheld.absent': 'Not sent with this request: this engine does not declare support for the setting that stops project instruction files from being read, and an engine that does not know it refuses the whole request, so it was held back; those files are still sent to the model.',
|
|
307
|
+
'session.projectMemory.withheld.declined': 'Not sent with this request: this engine declares that it does not support the setting that stops project instruction files from being read, so it was held back; those files are still sent to the model.',
|
|
308
|
+
'session.projectMemory.withheld.unreadable': "Not sent with this request: the engine's capabilities could not be read, so it is not known whether it supports the setting that stops project instruction files from being read, and an engine that does not know it refuses the whole request, so it was held back; those files are still sent to the model.",
|
|
309
|
+
'session.projectMemory.withheld.unknown': 'Not sent with this request: the setting that stops project instruction files from being read was held back for a reason this version does not recognize.',
|
|
310
|
+
'session.policy.withheld.namespaceCoveringUnconfirmed': 'Not written to this session’s rule record: this rule names a server or agent peer as a whole, or a group of its tools by pattern, and the engine has not confirmed that this record reads such a rule as a group — an engine that matches the record by exact tool name would block none of those tools.',
|
|
277
311
|
'session.fileHistoryLeg.notHonored': 'The engine is still capturing file history for this session, though your settings asked it not to.',
|
|
278
312
|
'resume.refusal.placementMismatch': 'This resume named a different placement root than the one recorded when the work was parked · The engine refused it before consuming anything — the parked work is untouched · Retry with the recorded root, or omit the placement root to inherit it',
|
|
279
313
|
'resume.refusal.preflightWaitable': "The deployment's resume preflight refused this attempt · The refusal happened before the commit — your decision was not consumed · The engine supplied a wait, so this token stays redeemable once the obstacle clears",
|
|
@@ -355,6 +389,7 @@ const EN = {
|
|
|
355
389
|
'session.selfHeal.injected.resendingInferred': '{lead} was held back because this session was busy with an earlier reply{id}; that reply is now reported as finished, so sema is sending the message now — nothing for you to do (if the session has not quite freed up yet, it may be held back once more).',
|
|
356
390
|
'session.selfHeal.injected.handedOffFollowing': '{lead} was passed to the reply already in progress{id} instead of starting a new one. sema is following that reply and will show whatever it asks for next; nothing for you to do now.',
|
|
357
391
|
'session.selfHeal.injected.handedOffWatch': '{lead} was passed to the reply already in progress{id} instead of starting a new one — watch that reply for what it does with it.',
|
|
392
|
+
'session.selfHeal.injected.interruptedFinishing': '{lead} was not delivered: the earlier reply{id} that was stopped is still finishing, so sema did not send it and did not retry — the model has not seen it. Give it a moment, then try again.',
|
|
358
393
|
'session.selfHeal.injected.notDelivered': '{lead} was not delivered: this session was still busy with an earlier reply{id}, and there was no open card you could answer to free it{noView}. sema did not retry, so the model has not seen it.',
|
|
359
394
|
'session.selfHeal.decisionInFlight': 'The previous turn is parked {parkedOn} and your answer to that card is still on its way to the engine, so sema did not show the card again — answering it a second time would send a second decision. It did NOT cancel the run. Your message was NOT sent; send it again in a moment, once the engine has applied that decision.',
|
|
360
395
|
'session.selfHeal.parkedOn.ask': 'waiting for your decision (run {taskId})',
|
|
@@ -372,7 +407,7 @@ const EN = {
|
|
|
372
407
|
'session.selfHeal.row.planReopenFailed.dismissed': 'The previous turn is parked waiting for a plan review (run {taskId}), and you closed its approval card — {closed}. It did NOT cancel the run — that would have discarded the plan for you. Your message was NOT sent; send it again to bring the card back.',
|
|
373
408
|
'session.selfHeal.row.planReopenFailed.withKeep': 'The previous turn is parked waiting for a plan review (run {taskId}) and sema could not reopen that approval card{noView}. It did NOT cancel the run — that would have discarded the plan for you. Your message was NOT sent. To keep this conversation, {keep}: the card comes back when the session resumes, if it is still waiting. Or {wayOut} if you no longer want that plan.{viaEngine}',
|
|
374
409
|
'session.selfHeal.row.planReopenFailed.noKeep': 'The previous turn is parked waiting for a plan review (run {taskId}) and sema could not reopen that approval card{noView}. It did NOT cancel the run — that would have discarded the plan for you. Your message was NOT sent; {wayOut} if you no longer want that plan.{viaEngine}',
|
|
375
|
-
'session.selfHeal.row.steered.textOnly': 'Only the TEXT of your message was handed over —
|
|
410
|
+
'session.selfHeal.row.steered.textOnly': 'Only the TEXT of your message was handed over — if that submission also had images or attachments, they were NOT sent.',
|
|
376
411
|
'session.selfHeal.row.steered.tail.following': 'sema is following that run and will surface whatever it asks for next.',
|
|
377
412
|
'session.selfHeal.row.steered.tail.watch': 'watch that run for what it does with it.',
|
|
378
413
|
'session.selfHeal.row.steered.unknownTail.following': 'sema is following that run and will surface whatever it asks for next before you send it again.',
|
|
@@ -417,6 +452,8 @@ const EN = {
|
|
|
417
452
|
'session.selfHeal.row.stateUnknown': "A run is still active on this session{handle} and sema could not read that run's state, so it did not touch it ({detail}). sema did NOT send your message: this session cannot start a new turn until that run settles — {wayOut}.",
|
|
418
453
|
'session.selfHeal.headless.status': ' (status {status})',
|
|
419
454
|
'session.selfHeal.endRun.engine': 'cancel that run on the engine ({cancelPath})',
|
|
455
|
+
'session.selfHeal.endRun.engineInteractive': 'end run {taskId} on the engine',
|
|
456
|
+
'session.selfHeal.endRun.engineInteractive.noId': 'end that run on the engine',
|
|
420
457
|
'session.selfHeal.wakeOn.engine': ' (POST /v1/sessions/:id/wake)',
|
|
421
458
|
'session.selfHeal.wakeOn.host': ' ({where})',
|
|
422
459
|
'session.selfHeal.headless.decide': 'This session is held by an earlier run{handle}{status} that is parked waiting on {gate}, so this message was NOT sent. Decide it and the session unlocks: POST {decidePath}. Ending that run instead also unlocks it, but it decides that item against you: {endRun}. Or {freshSession}.{governance}',
|
|
@@ -465,6 +502,8 @@ const EN = {
|
|
|
465
502
|
'approval.mandate.word.probeUnanswered': 'the check run on this call did not answer (it timed out or failed; this client cannot tell which), so whether the call stays inside the directories allowed for this session is unknown',
|
|
466
503
|
'approval.mandate.word.writeProtection': "this change lands on a protected location (the agent's own configuration), which is confirmed one change at a time",
|
|
467
504
|
'approval.mandate.word.targetUnresolved': 'where this change lands on disk could not be determined (a link on the way could not be examined, or the target could not be resolved), so whether it lands on a guarded location is unknown',
|
|
505
|
+
'approval.mandate.word.crossBoundaryTaint': "this run executes on a device outside the deployment's trust boundary and the deployment serves several tenants, so a write on the organisation's side — or a call bound for the device after a read from somewhere else — is confirmed by the deployment's approver for this call alone",
|
|
506
|
+
'approval.mandate.wayOut.crossBoundaryTaint': "an allow that comes from configuration — a setting that allows everything, or a policy's own answer — is refused for this call, so what you approve or deny here is what settles it",
|
|
468
507
|
'approval.mandate.unknownWord': 'the reason reported for this confirmation is not one this client recognises, so it shows no reason',
|
|
469
508
|
'approval.card.payloadUnreadable': 'This client cannot read the format of this approval card, so only its basic facts are shown — decide from those, or deny it if you are not sure what it will do.',
|
|
470
509
|
'approval.card.more.one': '1 more reason for this card is not shown.',
|
|
@@ -508,6 +547,22 @@ const EN = {
|
|
|
508
547
|
'session.fileHistoryRefusal.unrecognized': 'Nothing was sent: file checkpointing is turned off in your settings, but this engine reported a file-history capture mode this client does not recognize, so whether it can stop recording file history for a session is unknown and sending now could record it anyway. Trying again will not change that while this engine reports the same; to send and let file history be recorded this time, turn file checkpointing back on in your settings.',
|
|
509
548
|
'session.fileHistoryRefusal.unreadable': "Nothing was sent: file checkpointing is turned off in your settings, but this engine's report on whether it can stop recording file history for a session could not be read by this client, so sending now could record it anyway. Trying again will not change that while this engine reports the same; to send and let file history be recorded this time, turn file checkpointing back on in your settings.",
|
|
510
549
|
'session.hostSettings.memorySwitchMalformed': 'The memory setting in your settings file could not be read, so turning memory off was not applied: this request was sent with memory available. Fix the memory section (memory.enabled must be true or false) to turn it off.',
|
|
550
|
+
'session.hostSettings.fileHistoryRestoreConflict': 'Nothing was sent: file checkpointing was turned off in your settings after this request was prepared, but this request also restores files from a checkpoint, and a request cannot do both. To restore the files, turn file checkpointing back on in your settings; otherwise send the request without the file restore.',
|
|
551
|
+
'session.hostSettings.projectionUnchecked': 'The settings for this request could not be checked before sending, so the request is not sent. Reload your settings and try again.',
|
|
552
|
+
'session.hostSettings.projectionUncheckedPortsMissing': 'The settings for this request could not be checked before sending, so the request is not sent: this app has not installed the permission rule checks it needs ({ports}). Reloading your settings will not fix this; the app needs to install them.',
|
|
553
|
+
'session.hostSettings.projectionUncheckedJudgeFailed': 'The settings for this request could not be checked before sending, so the request is not sent: the permission rule check this app installed failed while checking them. Reloading your settings will not fix this; the app needs to fix that check.',
|
|
554
|
+
'session.hostSettings.managedUnreadable': "Nothing was sent: your administrator's managed settings could not be read right now, so the restrictions they set cannot be applied. Requests are sent again once the managed settings can be read.",
|
|
555
|
+
'session.hostSettings.layerNotLoaded.hold.unreadable': '{layer} could not be read, so the rules and hooks in that file would not apply to this request. Continue without these settings, or cancel and fix the file first.',
|
|
556
|
+
'session.hostSettings.layerNotLoaded.hold.rejected': '{layer} were not loaded because a hook guarding tool use in that file is malformed, so the rules and hooks in that file would not apply to this request. Continue without these settings, or cancel and fix the file first.',
|
|
557
|
+
'session.hostSettings.layerNotLoaded.sent.unreadable': '{layer} could not be read: this request was sent without the rules and hooks in that file.',
|
|
558
|
+
'session.hostSettings.layer.policySettings': 'Managed settings',
|
|
559
|
+
'session.hostSettings.layer.userSettings': 'Your user settings',
|
|
560
|
+
'session.hostSettings.layer.projectSettings': 'The project settings',
|
|
561
|
+
'session.hostSettings.layer.localSettings': 'The local project settings',
|
|
562
|
+
'session.hostSettings.layer.flagSettings': 'The settings passed at launch',
|
|
563
|
+
'session.hostSettings.heldPrevious': 'A settings file could not be read cleanly just now (it may be in the middle of being saved), so the permission rules from the last clean read are still applied.',
|
|
564
|
+
'session.hostSettings.styleMissing': 'The output style "{name}" selected in your settings could not be found or read, so it is not applied to this request.',
|
|
565
|
+
'session.hostSettings.styleSafeMode': 'Safe mode is on, so the output style from your settings is not applied.',
|
|
511
566
|
'model.identity.lane.processEnv': 'the environment this client was started with',
|
|
512
567
|
'model.identity.lane.settingsEnv': "this client's settings file",
|
|
513
568
|
'model.identity.lane.modelCatalogFile': 'the local model catalog file',
|
|
@@ -524,6 +579,11 @@ const EN = {
|
|
|
524
579
|
'notice.injectionLane.item.credentialedMcp': 'MCP servers that use credentials from this machine',
|
|
525
580
|
'notice.injectionLane.item.taskHooks': 'hooks',
|
|
526
581
|
'notice.injectionLane.itemSeparator': ', ',
|
|
582
|
+
'notice.wayOut.checkCredentials': 'The model service rejected the credentials this run used — check them, then try again',
|
|
583
|
+
'notice.wayOut.checkCredentialsFrom': 'The model service rejected the credentials this run used (source: {source}) — check them, then try again',
|
|
584
|
+
'notice.wayOut.switchModel': 'The model service cannot serve this request right now — try another model',
|
|
585
|
+
'notice.wayOut.wait': 'The model service is still working on this request — wait a moment, then try again',
|
|
586
|
+
'notice.wayOut.fixRequest': 'The model service refused this request — change the request before sending it again; sending it as it is will not help',
|
|
527
587
|
'rules.refusal.sentence.one': 'permissions: 1 rule will not be enforced — {list}',
|
|
528
588
|
'rules.refusal.sentence.other': 'permissions: {count} rules will not be enforced — {list}',
|
|
529
589
|
'rules.refusal.item': '{rule} ({reason})',
|
|
@@ -531,6 +591,10 @@ const EN = {
|
|
|
531
591
|
'rules.refusal.list.more': '{shown} and {count} more',
|
|
532
592
|
'rules.refusal.reason.toolName': 'its tool name is not one this engine recognizes',
|
|
533
593
|
'rules.refusal.reason.homePath': 'it uses a ~/ path this engine cannot anchor — write the path relative to the project or as an absolute path',
|
|
594
|
+
'rules.refusal.reason.neverMatches': 'this rule form cannot match as a deny or ask rule for this tool, so the engine would never apply it — to block the tool altogether, write its name alone',
|
|
595
|
+
'rules.nearMiss.sentence.one': 'permissions: 1 rule names a tool by a spelling no tool of this run answers to, so it can never match — {list}',
|
|
596
|
+
'rules.nearMiss.sentence.other': 'permissions: {count} rules name a tool by a spelling no tool of this run answers to, so they can never match — {list}',
|
|
597
|
+
'rules.nearMiss.reason': 'write the name as "{mounted}"',
|
|
534
598
|
'config.agentsWire.refusedServer.sentence': 'agents wire: {who}: its tools entry {entry} names a tool of the MCP server {server}, which {cause} — sent as written; this entry gives the agent nothing while that server stays out of the run. {way}',
|
|
535
599
|
'config.agentsWire.refusedServer.cause.rejected': 'was declined for this project and so is left out of this run',
|
|
536
600
|
'config.agentsWire.refusedServer.cause.notApproved': 'is not approved for this project and so is left out of this run',
|
|
@@ -560,6 +624,13 @@ const EN = {
|
|
|
560
624
|
'config.hooks.forWire.planPassedBare': 'hooksForWire: pass { plan } with the plan returned by hooksWirePlan() for this turn — the plan itself was passed; wrap it as { plan }.',
|
|
561
625
|
'config.hooks.forWire.planMissing': 'hooksForWire: pass { plan } with the plan returned by hooksWirePlan() for this turn — opts.plan is missing.',
|
|
562
626
|
'config.hooks.forWire.planNotPlan': 'hooksForWire: pass { plan } with the plan returned by hooksWirePlan() for this turn — opts.plan is not such a plan (got {shape}).',
|
|
627
|
+
'config.hooks.salvage.managedPartial': '{layer}: {what}. Because these are managed hooks, requests are not sent until the managed settings are fixed; ask your administrator to fix them.',
|
|
628
|
+
'config.hooks.httpPolicy.urlNotListed': "HTTP hook blocked: {url} does not match any pattern in allowedHttpHookUrls ({layer}) (a pattern's * matches within one URL part) — this {event} hook does not run.",
|
|
629
|
+
'config.hooks.httpPolicy.urlListEmpty': 'HTTP hook blocked: allowedHttpHookUrls is empty ({layer}), so no HTTP hook runs — the {event} hook for {url} does not run.',
|
|
630
|
+
'config.hooks.httpPolicy.urlListMalformed': 'HTTP hook blocked: allowedHttpHookUrls is not a list of strings ({layer}), so it is read as empty and no HTTP hook runs — the {event} hook for {url} does not run.',
|
|
631
|
+
'config.hooks.httpPolicy.envListMalformed': 'HTTP hook {url} ({event}) runs without environment variables: httpHookAllowedEnvVars is not a list of strings ({layer}), so it is read as empty.',
|
|
632
|
+
'config.hooks.httpPolicy.layerUnreadable': 'HTTP hook blocked: the settings of {layer} could not be read, so its allowedHttpHookUrls cannot be checked and no HTTP hook runs — the {event} hook for {url} does not run.',
|
|
633
|
+
'config.hooks.layerWithheld.trust': '{layer}: hooks will not run — this client has no workspace-trust step, and hooks in repository-controlled settings are only allowed once the workspace is trusted. Hooks from user, flag and managed settings are unaffected.',
|
|
563
634
|
'config.taskRequest.memoryOff.settingsSectionNotObject': 'memoryOffDeclared: the memory section of settings must be an object — got {shape}.',
|
|
564
635
|
'config.taskRequest.memoryOff.enabledNotBoolean': 'memoryOffDeclared: memory.enabled in settings must be a boolean when present — got {shape}.',
|
|
565
636
|
'config.taskRequest.inputKeysUnreadable': 'buildTaskRequest: the key set / property descriptors of the input could not be read (a proxy trap threw) — the declarations cannot be snapshotted safely, so assembly was refused. The error text reports shapes only and never echoes values.',
|
|
@@ -571,6 +642,7 @@ const EN = {
|
|
|
571
642
|
'config.taskRequest.requireExisting.layerAssembly': 'this layer rejects it before assembly so it does not cost a round trip.',
|
|
572
643
|
'config.taskRequest.requireExisting.layerLive': 'this layer (the live defaults layer) re-checks after placement: the mock session constant supplied by the host made this layer remove the session id, and there is no captured session id, while the assertion is not removed (removing it would silently open a new session when none is found) — so it is rejected before sending, without a round trip.',
|
|
573
644
|
'config.taskRequest.requireExisting.noSession': '{where}: requireExistingSession: true asks to continue an existing session, but sessionId is not a session id ({shape}) — there is no session to continue. The upstream service rejects this shape too (it neither opens a new session nor continues anything); {layer} Fix: pass the id of the session to continue as sessionId; to start a new session, omit requireExistingSession (or pass false). The error text reports shapes only and never echoes values.',
|
|
645
|
+
'config.taskRequest.submissionIdentityMalformed': 'buildTaskRequest: the lane argument accepts a lane word ({lanes}) or a submission identity {surface, origin, tools} whose three slots are own data properties holding words from their closed sets (surface: {surfaces}; origin: {origins}; tools: {tools}) — got {shape}. A malformed identity yields neither a lane nor an origin, and guessing one (falling back to the interactive lane, or to "written by the user") would send a request the submitter did not describe, so it was refused before the input was read. The error text reports shapes only and never echoes values.',
|
|
574
646
|
'config.assembly.thrownDuringAssembly': '{who}: an error occurred during assembly, so assembly was refused (the original thrown value is in cause).',
|
|
575
647
|
'session.steerRefusal.notRunning.happened': 'that run is not accepting messages right now — it has just finished, is running on another server, or is not the active run of its session',
|
|
576
648
|
'session.steerRefusal.notRunning.nextStep': 'check its current state and send the message to the run that is active',
|
|
@@ -638,6 +710,17 @@ const EN = {
|
|
|
638
710
|
'notice.capability.hands.unknownRosterUnreadable': 'whether this run has file-and-shell tools is unknown — the tool roster could not be read in the shape this reader knows',
|
|
639
711
|
'notice.capability.hands.unknownMountConditionAbsent': 'whether this run has file-and-shell tools is unknown — this engine does not report which condition mounted each tool, so an empty count here would be a fact about the reader, not about the run',
|
|
640
712
|
'rules.sessionPolicy.tighten.written': 'Session rules saved (version {rev}) — the record now holds everything it already had plus the entries sent here, and it applies from this session’s next tool gate onward; the step already running is not interrupted.',
|
|
713
|
+
'rules.sessionPolicy.tighten.writtenBeforeFirstRule.counts': "Still running, and possibly started before this session's first rule: {list}. Anything that started before that first rule keeps running without this one — to make the rule apply to it now, stop it.",
|
|
714
|
+
'rules.sessionPolicy.tighten.writtenBeforeFirstRule.unreadable': "This client could not read which background agents or workflows are running now. Anything that started before this session's first rule keeps running without this one — stop whatever must not keep running without it.",
|
|
715
|
+
'rules.sessionPolicy.tighten.writtenBeforeFirstRule.unseen': 'Work whose start has not reached this client yet may not read this rule either.',
|
|
716
|
+
'rules.sessionPolicy.tighten.writtenBeforeFirstRule.agents.one': '{n} background agent',
|
|
717
|
+
'rules.sessionPolicy.tighten.writtenBeforeFirstRule.agents.many': '{n} background agents',
|
|
718
|
+
'rules.sessionPolicy.tighten.writtenBeforeFirstRule.workflows.one': '{n} workflow',
|
|
719
|
+
'rules.sessionPolicy.tighten.writtenBeforeFirstRule.workflows.many': '{n} workflows',
|
|
720
|
+
'rules.sessionPolicy.tighten.writtenBeforeFirstRule.untracked.one': '{n} background item this client stopped tracking',
|
|
721
|
+
'rules.sessionPolicy.tighten.writtenBeforeFirstRule.untracked.many': '{n} background items this client stopped tracking',
|
|
722
|
+
'rules.sessionPolicy.tighten.writtenBeforeFirstRule.list.two': '{a} and {b}',
|
|
723
|
+
'rules.sessionPolicy.tighten.writtenBeforeFirstRule.list.three': '{a}, {b} and {c}',
|
|
641
724
|
'rules.sessionPolicy.tighten.conflict': 'Session rules were changed by someone else while this tightening was being written, twice in a row — nothing was written. Re-read the current rules and try again, or let the other writer finish first.',
|
|
642
725
|
'rules.sessionPolicy.tighten.loosenForbidden': 'The engine refused this write because it would relax the session rules: at least one entry sent here widens what is allowed rather than narrowing it. Only entries that add restrictions are accepted on this path.',
|
|
643
726
|
'rules.sessionPolicy.tighten.capabilityAbsent': 'This deployment does not keep per-session tool rules, so there is nothing to tighten here.',
|
|
@@ -696,6 +779,7 @@ const EN = {
|
|
|
696
779
|
'rules.match.namePrefix': 'skill name prefix match',
|
|
697
780
|
'rules.match.host': 'web domain match (one host)',
|
|
698
781
|
'rules.match.subdomain': 'web domain match (every host under the domain)',
|
|
782
|
+
'rules.match.pattern': 'command pattern match (a star placed anywhere in the command)',
|
|
699
783
|
'rules.match.unreported': 'an unreported match form',
|
|
700
784
|
'rules.match.unknown': 'a match form this build does not know',
|
|
701
785
|
'model.tier.blurb.ultra': 'reserved above max — binds when a stronger model lands',
|
|
@@ -704,11 +788,14 @@ const EN = {
|
|
|
704
788
|
'model.tier.blurb.flash': 'fast + cheap — titles, recaps, volume work',
|
|
705
789
|
'model.tier.blurb.lite': 'cheapest — bulk classification, simple lookups',
|
|
706
790
|
'model.catalog.candidateRejected': 'The deployment refused its most recent configuration change{which} and is still running on the configuration before it — models or settings added by that change are not in effect',
|
|
791
|
+
'model.notServed.withDefault': "The model {model} is not available in this engine's model catalog, so this session uses the engine's default model {default}",
|
|
792
|
+
'model.notServed.noDefault': "The model {model} is not available in this engine's model catalog, so this session leaves the choice of model to the engine",
|
|
707
793
|
'notice.failure.headline.connectionLostNotSent': 'The engine is unreachable — your message did not run. Check that the engine is up, then send it again.',
|
|
708
794
|
'notice.failure.headline.connectionLost': 'The connection to the engine was lost — it is not known whether your message ran. Check the run’s status, or reattach to it, before sending it again.',
|
|
709
795
|
'notice.failure.headline.timeout': 'The event stream went silent — the run may still be going on the engine. Check its status before sending again.',
|
|
710
796
|
'notice.failure.headline.parked': 'The event stream ended while the run had not reached a terminal state — the run is likely parked waiting for a decision, not crashed. Check its status and decide anything pending; the turn did not complete here.',
|
|
711
797
|
'notice.failure.headline.internal': 'This client hit an internal error — it is a bug in the client, not an engine outage, and the turn did not complete.',
|
|
798
|
+
'notice.failure.headline.causeUnreadable': 'The reason for this failure could not be read (part of the error object was unreadable) — it is not known whether the engine received your message. Check the run’s status, or reattach to it, before sending it again.',
|
|
712
799
|
'notice.failure.quota.fiveHour': 'Your 5-hour quota is used up',
|
|
713
800
|
'notice.failure.quota.weekly': 'Your weekly quota is used up',
|
|
714
801
|
'notice.failure.quota.budgetPersonal': 'Your personal budget is used up',
|
|
@@ -754,6 +841,7 @@ const EN = {
|
|
|
754
841
|
'rules.issue.behavior': 'this rule is invalid: its behavior is neither deny nor ask, so it would never fire',
|
|
755
842
|
'rules.issue.commandRule': 'this rule is invalid: the command pattern was rejected by the command-rule validator',
|
|
756
843
|
'rules.issue.entryType': 'this allow list is invalid: it must be a list of rule strings, and it or one of its entries is not a string',
|
|
844
|
+
'rules.issue.nameAmbiguous': 'this rule is invalid: the name it gives matches more than one of the values this tool offers, which differ only by case, spacing or punctuation, so which one it means cannot be told — write the exact one',
|
|
757
845
|
'rules.issue.allowRule': 'an allow rule is not supported in a rule set that only says deny or ask — a standing approval belongs on the allow list instead',
|
|
758
846
|
'rules.issue.paramUnknown': 'this parameter rule is not supported: the tool carries no such parameter, so it could never match',
|
|
759
847
|
'rules.issue.paramNonScalar': 'this parameter rule is not supported: that parameter holds an object or an array, so it could never match',
|
|
@@ -775,8 +863,37 @@ const EN = {
|
|
|
775
863
|
'model.probe.verdict.noToken': 'The model service answered but sent no token — it may be overloaded',
|
|
776
864
|
'model.probe.verdict.noTokenWaited': 'The model service answered but sent no token within {time} — it may be overloaded',
|
|
777
865
|
'model.probe.verdict.other': 'The model service gave an unexpected answer{http}',
|
|
778
|
-
'session.humanTurn.imageUnknownVision.one': "An
|
|
779
|
-
'session.humanTurn.imageUnknownVision.other': "{count}
|
|
866
|
+
'session.humanTurn.imageUnknownVision.one': "An image was sent with this message, although the engine's model list does not say whether the model this message uses accepts image input — if it does not, the image may be dropped or the message may be refused",
|
|
867
|
+
'session.humanTurn.imageUnknownVision.other': "{count} images were sent with this message, although the engine's model list does not say whether the model this message uses accepts image input — if it does not, the images may be dropped or the message may be refused",
|
|
868
|
+
'session.humanTurn.modelFragment': ' ({model})',
|
|
869
|
+
'session.humanTurn.refused.empty': 'Nothing was sent: a message needs some text of its own — an image or an attachment cannot be sent on its own',
|
|
870
|
+
'session.humanTurn.refused.malformedInput': 'Nothing was sent: this client could not read the message it was asked to send — that is a bug in the client, not in your message',
|
|
871
|
+
'session.humanTurn.refused.malformedItem': 'Nothing was sent: one entry of this message could not be read — that is a bug in the client, not in your message',
|
|
872
|
+
'session.humanTurn.refused.duplicateUuid': 'Nothing was sent: two entries of this batch carry the same id — that is a bug in the client, not in your message',
|
|
873
|
+
'session.humanTurn.refused.riderCollidesPrimary': 'Nothing was sent: an item riding along with one entry carries the id of another entry — that is a bug in the client, not in your message',
|
|
874
|
+
'session.humanTurn.refused.oversize': 'Nothing was sent: this message is too large to send even with every attachment cut down to a reference — shorten it or attach less',
|
|
875
|
+
'session.humanTurn.held.noText': 'This message is held and will be sent as a new message when the current run ends: it has no text to add to the run in progress',
|
|
876
|
+
'session.humanTurn.held.reminderTag': 'This message is held and will be sent as a new message when the current run ends: its text contains a reserved tag, which cannot be added to a run in progress',
|
|
877
|
+
'session.humanTurn.held.controlChar': 'This message is held and will be sent as a new message when the current run ends: its text contains control characters, which cannot be added to a run in progress',
|
|
878
|
+
'session.humanTurn.held.tooLong': 'This message is held and will be sent as a new message when the current run ends: its text is longer than a note added to a run in progress can be',
|
|
879
|
+
'session.humanTurn.degraded.visionNo.one': '1 image was not sent: the model{model} cannot read images',
|
|
880
|
+
'session.humanTurn.degraded.visionNo.other': '{count} images were not sent: the model{model} cannot read images',
|
|
881
|
+
'session.humanTurn.degraded.imageTooLarge.one': '1 image was not sent: it is larger than the engine accepts for a single image',
|
|
882
|
+
'session.humanTurn.degraded.imageTooLarge.other': '{count} images were not sent: each is larger than the engine accepts for a single image',
|
|
883
|
+
'session.humanTurn.degraded.seatCount.one': '1 image was not sent: one message can carry only so many images',
|
|
884
|
+
'session.humanTurn.degraded.seatCount.other': '{count} images were not sent: one message can carry only so many images',
|
|
885
|
+
'session.humanTurn.degraded.seatTotal.one': '1 image was not sent: together the images in this message are too large',
|
|
886
|
+
'session.humanTurn.degraded.seatTotal.other': '{count} images were not sent: together the images in this message are too large',
|
|
887
|
+
'session.humanTurn.degraded.bodyBudget.one': '1 attached item was sent without its content: the message is too large to send in full',
|
|
888
|
+
'session.humanTurn.degraded.bodyBudget.other': '{count} attached items were sent without their content: the message is too large to send in full',
|
|
889
|
+
'session.humanTurn.degraded.steerAdmission.one': '1 attached item was sent as a reference only: its content cannot be added to a run in progress',
|
|
890
|
+
'session.humanTurn.degraded.steerAdmission.other': '{count} attached items were sent as a reference only: their content cannot be added to a run in progress',
|
|
891
|
+
'session.humanTurn.degraded.noImageSeat.one': '1 image was not sent: images cannot be added to a run in progress — send it as a new message when the run ends',
|
|
892
|
+
'session.humanTurn.degraded.noImageSeat.other': '{count} images were not sent: images cannot be added to a run in progress — send them as a new message when the run ends',
|
|
893
|
+
'session.humanTurn.degraded.noAttachmentIdSeat.one': '1 uploaded file was not attached: files cannot be added to a run in progress — send it as a new message when the run ends',
|
|
894
|
+
'session.humanTurn.degraded.noAttachmentIdSeat.other': '{count} uploaded files were not attached: files cannot be added to a run in progress — send them as a new message when the run ends',
|
|
895
|
+
'session.humanTurn.printVision.no': 'The model{model} cannot read images, so the images in this prompt were not sent',
|
|
896
|
+
'session.humanTurn.printVision.unknown': "The engine's model list does not say whether the model{model} accepts image input — the images in this prompt were sent anyway; if it does not, they may be dropped or the request may be refused",
|
|
780
897
|
'config.scenarioRefusal.source.ruling': ', assigned to you by the configuration center,',
|
|
781
898
|
'config.scenarioRefusal.source.deployment': ", this deployment's default scenario,",
|
|
782
899
|
'config.scenarioRefusal.dangling': "This deployment cannot resolve your scenario: the scenario{name}{from} does not exist here, so it refuses whatever depends on your scenario — new runs that do not name a scenario, and this session's list of MCP servers · Ask whoever operates the engine to fix the scenario assignment",
|
|
@@ -823,10 +940,75 @@ const EN = {
|
|
|
823
940
|
'notice.wireRefusal.hostPosture.both': "The engine refused this request before anything ran: the request asked both for the shell to inherit this machine's whole environment and for bypassPermissions, and this deployment refused at least one of them; the refusal does not say which · {notLocal}; send it again without one or both (the whole-environment setting is honored only on a single-user deployment)",
|
|
824
941
|
'notice.wireRefusal.hostPosture.unattributed': "The engine refused this request before anything ran: this deployment does not accept a setting in it that only a single-user deployment may use; the engine's own message names it · {notLocal}; send it again without that setting",
|
|
825
942
|
'notice.wireRefusal.autonomyLane': 'The engine did not start this leader run: this deployment runs in plan-only autonomy, and a leader run has no way to have its plan reviewed, so nothing was started · Submit the work as a regular run instead, or ask whoever operates the engine to change its autonomy setting',
|
|
826
|
-
'notice.wireRefusal.
|
|
827
|
-
'notice.wireRefusal.
|
|
943
|
+
'notice.wireRefusal.unsupportedRule': 'The engine refused this request, so none of it took effect: a rule in it is a form the engine does not support — {detail} · Remove or rewrite that rule (to stop a tool altogether, write its name alone), then send it again',
|
|
944
|
+
'notice.wireRefusal.unsupportedRule.other': 'The engine refused this request, so none of it took effect: {count} rules in it are forms the engine does not support — {detail} · Remove or rewrite those rules (to stop a tool altogether, write its name alone), then send it again',
|
|
945
|
+
'notice.wireRefusal.unsupportedRule.stored': 'The engine refused to continue this work: the request stored for it has a rule in it that is a form the engine does not support — {detail} · It cannot continue as stored. Remove or rewrite that rule (to stop a tool altogether, write its name alone), cancel the work if it is still suspended, then submit it again as a new request',
|
|
946
|
+
'notice.wireRefusal.unsupportedRule.stored.other': 'The engine refused to continue this work: the request stored for it has {count} rules in it that are forms the engine does not support — {detail} · It cannot continue as stored. Remove or rewrite those rules (to stop a tool altogether, write its name alone), cancel the work if it is still suspended, then submit it again as a new request',
|
|
947
|
+
'notice.prepareRefusal.draftKept': 'Your draft is kept',
|
|
948
|
+
'notice.prepareRefusal.mcpServerNameCollision': 'The engine refused this run at setup: two MCP servers declared for it cannot be told apart — the same name written twice, or names the engine turns into one tool-name prefix (for example “a.b” and “a_b”), so their tool names would collide · The engine’s own error text names them · Sending the same request again is refused the same way; give one of them another name, or remove one of them, wherever MCP servers are configured for this run (ask whoever operates the engine if the deployment declares them), then send it',
|
|
828
949
|
'notice.retry.source.unifiedHeader': "Judged from the model service's quota headers",
|
|
829
950
|
'notice.retry.source.providerCode': "Judged from the model service's error code",
|
|
830
951
|
'notice.retry.source.status': 'Judged from the HTTP status alone',
|
|
952
|
+
'session.toolResult.media.kind.image': 'image',
|
|
953
|
+
'session.toolResult.media.kind.document': 'document',
|
|
954
|
+
'session.toolResult.media.notDelivered.descriptor': '[{kind} not delivered: {mimeType}, {bytes} B]',
|
|
955
|
+
'session.toolResult.media.notDelivered.descriptorNoMime': '[{kind} not delivered: {bytes} B]',
|
|
956
|
+
'session.toolResult.media.notDelivered.omitted.one': '[{blocks} media block not delivered: {bytes} B in total]',
|
|
957
|
+
'session.toolResult.media.notDelivered.omitted.other': '[{blocks} media blocks not delivered: {bytes} B in total]',
|
|
958
|
+
'session.workflowResume.line': 'resume: {detail}',
|
|
959
|
+
'session.workflowResume.counts': 'replayed {replayed} of {journaled} journaled results',
|
|
960
|
+
'session.workflowResume.countsOnly': 'replayed {replayed} journaled results',
|
|
961
|
+
'session.workflowResume.noJournal': 'found no journal entries — nothing replayed, the whole script re-ran live',
|
|
962
|
+
'session.workflowResume.stopAt': 'replay stopped at agent #{ordinal} ({reason}) — this call and every later call ran live',
|
|
963
|
+
'session.workflowResume.stopAtNoReason': 'replay stopped at agent #{ordinal} — this call and every later call ran live',
|
|
964
|
+
'session.workflowResume.stop': 'replay stopped ({reason}) — this call and every later call ran live',
|
|
965
|
+
'notice.providerRejection.quotaExhausted': 'The model provider refused this request (HTTP {status}): this account cannot be served by the model service until someone acts or its usage window resets — check the provider account or use another model.',
|
|
966
|
+
'notice.usageLimit.autoResume.fired': 'Usage limit available again · continuing now',
|
|
967
|
+
'notice.usageLimit.autoResume.reset': 'Usage limit has reset · press enter to continue',
|
|
968
|
+
'notice.usageLimit.autoResume.breaker': 'Automatic continue stopped after repeated usage-limit hits',
|
|
969
|
+
'notice.usageLimit.autoResume.superseded': 'Automatic continue skipped · you sent another message first',
|
|
970
|
+
'notice.usageLimit.autoResume.notReplayable': 'Automatic continue is unavailable for this message · it cannot be re-sent unchanged',
|
|
971
|
+
'notice.usageLimit.autoResume.contextChanged': 'Automatic continue skipped · the context it was armed in has changed (conversation, working directory, history or permission mode)',
|
|
972
|
+
'notice.usageLimit.autoResume.escaped': 'Automatic continue cancelled · /rate-limit-options to re-arm',
|
|
973
|
+
'notice.usageLimit.autoResume.horizon': 'Usage limit reached · resets in more than 24 hours · /rate-limit-options to wait anyway',
|
|
974
|
+
'notice.usageLimit.autoResume.armed.at': 'Usage limit reached · continuing automatically at {time} · esc to cancel',
|
|
975
|
+
'notice.usageLimit.autoResume.armed.shortly': 'Usage limit reached · continuing shortly · esc to cancel',
|
|
976
|
+
'notice.usageLimit.autoResume.option.cancel': 'Stop and wait for limit to reset',
|
|
977
|
+
'notice.usageLimit.autoResume.option.cancelAuto': 'Stop the automatic continue',
|
|
978
|
+
'notice.usageLimit.autoResume.option.auto': 'Continue automatically when it resets',
|
|
979
|
+
'notice.usageLimit.autoResume.option.autoHorizon': 'Continue automatically when it resets (the limit resets in more than 24 hours)',
|
|
980
|
+
'notice.usageLimit.autoResume.disabled.breaker': 'automatic continue stopped after repeated usage-limit hits',
|
|
981
|
+
'notice.usageLimit.autoResume.disabled.notReplayable': 'this message cannot be re-sent unchanged (attachments or a command)',
|
|
982
|
+
'notice.usageLimit.autoResume.disabled.contextChanged': 'the context it was armed in is gone',
|
|
983
|
+
'notice.usageLimit.autoResume.disabled.noResetInstant': 'this quota window has no scheduled reset time',
|
|
984
|
+
'notice.usageLimit.autoResume.disabled.nothingWaiting': 'there is no usage-limited message waiting to be sent',
|
|
985
|
+
'session.selfHeal.row.interrupted.settled': 'The turn you interrupted has finished stopping on the engine (run {taskId}), so sema is sending your message now as a new turn.',
|
|
986
|
+
'session.selfHeal.row.interrupted.stillFinishing': 'The turn you interrupted is still finishing on the engine (run {taskId}, {waited} so far), so your message was NOT sent. Give it a moment, then send it again.',
|
|
987
|
+
'session.rewind.conversationOnly.withCodeRoute': 'Rewound the conversation only — this engine does not confirm that it can restore files in a combined rewind; to roll files back, run /rewind again and choose "Restore code".',
|
|
988
|
+
'session.rewind.conversationOnly.noCodeRoute': 'Rewound the conversation only — this engine does not confirm that it can restore files in a combined rewind, so files were not rolled back.',
|
|
989
|
+
'config.hooks.matcher.unjudged.eventOutOfScope': 'this check does not evaluate matchers for that event',
|
|
990
|
+
'config.hooks.matcher.unjudged.notAString': 'it is not a string',
|
|
991
|
+
'config.hooks.matcher.unjudged.oversize': 'it is too long to check',
|
|
992
|
+
'config.hooks.matcher.unjudged.patternUnsupported': 'it uses a regular-expression feature this check does not evaluate',
|
|
993
|
+
'config.hooks.matcher.unjudged.overBudget': 'it is a regular expression too costly for this check to evaluate',
|
|
994
|
+
'config.hooks.matcher.unjudged.unknown': 'this check could not read it',
|
|
995
|
+
'doctor.wiring.fleetTranscripts.full': 'background subagent transcripts: full — this deployment keeps background subagent handles across an engine restart',
|
|
996
|
+
'doctor.wiring.fleetTranscripts.noPromise': 'background subagent transcripts: {tier} — this deployment does not promise that background subagent handles survive an engine restart',
|
|
997
|
+
'doctor.wiring.fleetTranscripts.unknownTier': 'background subagent transcripts: an unknown level ("{tier}") — read it as no promise that background subagent handles survive an engine restart',
|
|
998
|
+
'config.attachments.refusal.credentialShapedWord': 'looks like a credential rather than an attachments list, so it was not used and is not shown here — a credential does not belong in this setting.',
|
|
999
|
+
'session.subagent.delegatedPrompt.absence.notOwnedAfterRestart': "This subagent's prompt cannot be shown: this process has no record of where its conversation is stored (the record lives in memory, so it is empty after a restart or when the run was continued from another shell).",
|
|
1000
|
+
'session.subagent.delegatedPrompt.absence.notInStore': "This subagent's prompt cannot be shown: the engine's session store has no conversation for it.",
|
|
1001
|
+
'session.subagent.delegatedPrompt.absence.forbidden': "This subagent's prompt cannot be shown: the engine refused access to its conversation.",
|
|
1002
|
+
'session.subagent.delegatedPrompt.absence.promptAbsent': "This subagent's conversation was read, but it holds no delegated prompt to show.",
|
|
1003
|
+
'session.subagent.delegatedPrompt.absence.unknown': "This subagent's prompt could not be read just now.",
|
|
1004
|
+
'rules.sessionPolicy.tighten.unknown.sessionOwnerless.noIdentity': 'This session has no owner, so a rule written for it could never be read back; nothing was written.',
|
|
1005
|
+
'rules.sessionPolicy.tighten.unknown.storeCorrupt.noOperator': 'The engine could not establish which version this session’s rules are at and refused to stamp a new one, so nothing was written. The entries sent here are not the problem — this deployment has no operator to look at the rule store, so whoever runs it has to.',
|
|
1006
|
+
'rules.sessionPolicy.deployment.noOperator.readStoreCorrupt': 'The engine could not establish which version this session’s rules are at, so it would not hand the record over. This deployment has no operator to look at the rule store — whoever runs it has to.',
|
|
1007
|
+
'rules.sessionPolicy.deployment.noOperator.removeLoosenForbidden': 'The engine refused to take these entries out of this session’s rule record: on this engine only an operator can remove entries from it, and this deployment has none, so the record is unchanged. Continue in a new session.',
|
|
1008
|
+
'rules.sessionPolicy.deployment.noOperator.removeReadStoreCorrupt': 'The engine could not establish which version this session’s rules are at, so nothing was changed. This deployment has no operator to look at the rule store — whoever runs it has to.',
|
|
1009
|
+
'rules.sessionPolicy.deployment.noOperator.removeWriteStoreCorrupt': 'The engine could not establish which version this session’s rules are at and refused to stamp a new one, so nothing was changed. This deployment has no operator to look at the rule store — whoever runs it has to.',
|
|
1010
|
+
'config.hooks.plan.reason.compactionLocalFallback': 'this compaction is summarized on this client because the engine session is unavailable, so the engine will not run it and this client runs it itself',
|
|
1011
|
+
'session.hooks.compactTransition.disclosure.engineOutcomeUnknown': 'The compaction request had already been sent to the engine when the summary fell back to this client, so whether the engine ran the compaction hooks cannot be told here, and this client did not run them again.',
|
|
1012
|
+
'session.hooks.compactTransition.disclosure.neitherRan': 'The compaction hooks did not run this time: the engine did not compact here and this client could not start its own summary. If the engine still compacts later it will run them then.',
|
|
831
1013
|
};
|
|
832
1014
|
export const EN_MESSAGES = Object.freeze(EN);
|