@sema-agent/client-core 0.77.0 → 0.77.2
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 +23 -1
- package/README.md +5 -4
- package/dist/abortableSleep.d.ts +0 -28
- package/dist/abortableSleep.js +0 -28
- package/dist/adapt/arms.d.ts +0 -46
- package/dist/adapt/arms.js +9 -544
- package/dist/adapt/ids.d.ts +0 -58
- package/dist/adapt/ids.js +0 -63
- package/dist/adapt/instanceLedger.d.ts +0 -25
- package/dist/adapt/instanceLedger.js +0 -20
- package/dist/adapt/panelTasks.d.ts +0 -69
- package/dist/adapt/panelTasks.js +0 -95
- package/dist/adapt/textSegmentAuthority.d.ts +1 -137
- package/dist/adapt/textSegmentAuthority.js +0 -54
- package/dist/adapt/textStream.d.ts +0 -252
- package/dist/adapt/textStream.js +2 -281
- package/dist/adapt/toolCards.d.ts +0 -46
- package/dist/adapt/toolCards.js +0 -23
- package/dist/adapt/turnFlags.d.ts +0 -54
- package/dist/adapt/turnFlags.js +1 -17
- package/dist/adapt/wireShapes.d.ts +0 -92
- package/dist/adapt/wireShapes.js +0 -83
- package/dist/adapt.d.ts +0 -55
- package/dist/adapt.js +1 -120
- package/dist/adapter/activeRunSelfHeal.d.ts +22 -515
- package/dist/adapter/activeRunSelfHeal.js +10 -625
- package/dist/adapter/downstream/eventToSdkMessage.d.ts +2 -305
- package/dist/adapter/downstream/eventToSdkMessage.js +2 -867
- package/dist/adapter/downstream/terminalToSdkResult.d.ts +2 -314
- package/dist/adapter/downstream/terminalToSdkResult.js +13 -560
- package/dist/adapter/downstream/turnUsageToModelUsage.d.ts +0 -95
- package/dist/adapter/downstream/turnUsageToModelUsage.js +2 -31
- package/dist/adapter/runStream.d.ts +0 -206
- package/dist/adapter/runStream.js +6 -596
- package/dist/adapter/types.d.ts +0 -111
- package/dist/adapter/types.js +0 -29
- package/dist/agentSession/backgroundView.d.ts +0 -106
- package/dist/agentSession/backgroundView.js +3 -49
- package/dist/agentSession/contract.d.ts +0 -98
- package/dist/agentSession/contract.js +0 -12
- package/dist/agentsWireCaps.d.ts +0 -72
- package/dist/agentsWireCaps.js +4 -72
- package/dist/approvalsStreamLiveCapability.d.ts +0 -25
- package/dist/approvalsStreamLiveCapability.js +0 -31
- package/dist/argvFlagValue.d.ts +0 -33
- package/dist/argvFlagValue.js +3 -35
- package/dist/attachmentsWireCaps.d.ts +0 -127
- package/dist/attachmentsWireCaps.js +0 -144
- package/dist/autoModeUnavailable.d.ts +0 -120
- package/dist/autoModeUnavailable.js +0 -144
- package/dist/classifierStatus.d.ts +0 -72
- package/dist/classifierStatus.js +0 -167
- package/dist/classifierVerdictWire.d.ts +0 -54
- package/dist/classifierVerdictWire.js +0 -133
- package/dist/clientContextWireCaps.d.ts +0 -37
- package/dist/clientContextWireCaps.js +0 -36
- package/dist/clientSlice.d.ts +0 -63
- package/dist/clientSlice.js +0 -45
- package/dist/cloudConfigWireCaps.d.ts +0 -86
- package/dist/cloudConfigWireCaps.js +2 -65
- package/dist/compensations.d.ts +0 -52
- package/dist/compensations.js +2 -63
- package/dist/controlRouter.d.ts +2 -208
- package/dist/controlRouter.js +1 -129
- package/dist/coreValuePorts.d.ts +0 -84
- package/dist/coreValuePorts.js +0 -29
- package/dist/decideReceipt.d.ts +0 -110
- package/dist/decideReceipt.js +0 -84
- package/dist/detachWire.d.ts +0 -130
- package/dist/detachWire.js +1 -130
- package/dist/deviceExecutorManagementCapability.d.ts +2 -35
- package/dist/deviceExecutorManagementCapability.js +1 -37
- package/dist/diagnostics.d.ts +0 -8
- package/dist/diagnostics.js +0 -8
- package/dist/diff/patch.d.ts +0 -17
- package/dist/diff/patch.js +0 -19
- package/dist/effectiveFacts.d.ts +0 -40
- package/dist/effectiveFacts.js +0 -22
- package/dist/effortWire.d.ts +0 -11
- package/dist/effortWire.js +0 -12
- package/dist/engineAgentPanelStore.d.ts +0 -169
- package/dist/engineAgentPanelStore.js +13 -293
- package/dist/engineCapReader.d.ts +0 -62
- package/dist/engineCapReader.js +1 -43
- package/dist/engineCapsCache.d.ts +0 -177
- package/dist/engineCapsCache.js +0 -199
- package/dist/engineCapsGenerationGuard.d.ts +0 -2
- package/dist/engineCapsGenerationGuard.js +0 -11
- package/dist/engineErrorCodes.d.ts +1 -316
- package/dist/engineErrorCodes.js +0 -427
- package/dist/engineHttpTools.d.ts +0 -29
- package/dist/engineHttpTools.js +0 -29
- package/dist/engineIdentity.d.ts +0 -83
- package/dist/engineIdentity.js +0 -88
- package/dist/engineInlineTaskStats.d.ts +0 -57
- package/dist/engineInlineTaskStats.js +1 -42
- package/dist/engineNoticeCodes.d.ts +0 -190
- package/dist/engineNoticeCodes.js +0 -182
- package/dist/engineSessionParam.d.ts +0 -30
- package/dist/engineSessionParam.js +0 -52
- package/dist/engineToolLabelStore.d.ts +0 -29
- package/dist/engineToolLabelStore.js +0 -31
- package/dist/engineWireSdk.d.ts +0 -90
- package/dist/engineWireSdk.js +0 -74
- package/dist/engineWireTarget.d.ts +0 -14
- package/dist/engineWireTarget.js +0 -39
- package/dist/env/localeGeo.d.ts +0 -12
- package/dist/env/localeGeo.js +2 -77
- package/dist/env/localeTag.d.ts +0 -34
- package/dist/env/localeTag.js +0 -32
- package/dist/env/uiLanguage.d.ts +0 -13
- package/dist/env/uiLanguage.js +0 -25
- package/dist/envFlag.d.ts +0 -37
- package/dist/envFlag.js +0 -40
- package/dist/executionLaneCapability.d.ts +0 -48
- package/dist/executionLaneCapability.js +0 -54
- package/dist/finalVerifyWire.d.ts +0 -67
- package/dist/finalVerifyWire.js +3 -43
- package/dist/fleet/fleetLedger.d.ts +0 -308
- package/dist/fleet/fleetLedger.js +10 -429
- package/dist/fleet/fleetProjection.d.ts +0 -240
- package/dist/fleet/fleetProjection.js +0 -189
- package/dist/fleet/fleetRowAgentType.d.ts +0 -6
- package/dist/fleet/fleetRowAgentType.js +1 -32
- package/dist/fleet/workflowSizeWarning.d.ts +0 -47
- package/dist/fleet/workflowSizeWarning.js +1 -46
- package/dist/fleetAgentPanelProjection.d.ts +0 -48
- package/dist/fleetAgentPanelProjection.js +8 -173
- package/dist/fleetTaskDesc.d.ts +0 -39
- package/dist/fleetTaskDesc.js +0 -69
- package/dist/forkWireCaps.d.ts +0 -23
- package/dist/forkWireCaps.js +1 -24
- package/dist/gateOutcome.d.ts +0 -140
- package/dist/gateOutcome.js +0 -85
- package/dist/gateVocabulary.d.ts +0 -114
- package/dist/gateVocabulary.js +1 -161
- package/dist/goalStopHook.d.ts +0 -127
- package/dist/goalStopHook.js +0 -178
- package/dist/headlessPermissionModeWire.d.ts +0 -76
- package/dist/headlessPermissionModeWire.js +1 -155
- package/dist/headlessReconnectWire.d.ts +0 -84
- package/dist/headlessReconnectWire.js +13 -67
- package/dist/hitl/approvalDecisionNoteAudit.d.ts +0 -49
- package/dist/hitl/approvalDecisionNoteAudit.js +0 -56
- package/dist/hitl/approvalOutcomeNote.d.ts +0 -2
- package/dist/hitl/approvalOutcomeNote.js +0 -20
- package/dist/hitl/approvalResolution.d.ts +0 -113
- package/dist/hitl/approvalResolution.js +0 -66
- package/dist/hitl/approvalsFeed.d.ts +0 -183
- package/dist/hitl/approvalsFeed.js +12 -243
- package/dist/hitl/armedGateRegistry.d.ts +0 -55
- package/dist/hitl/armedGateRegistry.js +0 -146
- package/dist/hitl/askGateWire.d.ts +0 -86
- package/dist/hitl/askGateWire.js +1 -95
- package/dist/hitl/askParkRowRouting.d.ts +0 -123
- package/dist/hitl/askParkRowRouting.js +1 -89
- package/dist/hitl/crashConverged.d.ts +0 -148
- package/dist/hitl/crashConverged.js +0 -214
- package/dist/hitl/editedRuleTextPrecheck.d.ts +0 -109
- package/dist/hitl/editedRuleTextPrecheck.js +0 -71
- package/dist/hitl/frameRouter.d.ts +0 -134
- package/dist/hitl/frameRouter.js +6 -378
- package/dist/hitl/gateIdentity.d.ts +0 -39
- package/dist/hitl/gateIdentity.js +0 -41
- package/dist/hitl/gateLedger.d.ts +0 -267
- package/dist/hitl/gateLedger.js +0 -121
- package/dist/hitl/hitlBridge.d.ts +7 -431
- package/dist/hitl/hitlBridge.js +7 -476
- package/dist/hitl/hitlHostSurface.d.ts +0 -150
- package/dist/hitl/hitlHostSurface.js +0 -169
- package/dist/hitl/livePendingAsk.d.ts +0 -91
- package/dist/hitl/livePendingAsk.js +0 -74
- package/dist/hitl/localAllowRule.d.ts +0 -62
- package/dist/hitl/localAllowRule.js +1 -33
- package/dist/hitl/parkOwnership.d.ts +0 -56
- package/dist/hitl/parkOwnership.js +0 -22
- package/dist/hitl/parkResolver.d.ts +3 -88
- package/dist/hitl/parkResolver.js +8 -349
- package/dist/hitl/parkRowBirthWait.d.ts +2 -26
- package/dist/hitl/parkRowBirthWait.js +3 -93
- package/dist/hitl/persistedRulesWire.d.ts +13 -358
- package/dist/hitl/persistedRulesWire.js +0 -310
- package/dist/hitl/planReviewWire.d.ts +4 -176
- package/dist/hitl/planReviewWire.js +9 -312
- package/dist/hitl/resumeRunningCard.d.ts +0 -105
- package/dist/hitl/resumeRunningCard.js +0 -105
- package/dist/hitl/sessionPolicyWire.d.ts +11 -191
- package/dist/hitl/sessionPolicyWire.js +0 -149
- package/dist/hitl/suspendedReopen.d.ts +3 -24
- package/dist/hitl/suspendedReopen.js +0 -14
- package/dist/hitl/toolApprovalWire.d.ts +5 -1308
- package/dist/hitl/toolApprovalWire.js +5 -945
- package/dist/hooksWireCaps.d.ts +0 -38
- package/dist/hooksWireCaps.js +0 -190
- package/dist/host.d.ts +0 -105
- package/dist/host.js +0 -33
- package/dist/hostEnv.d.ts +0 -14
- package/dist/hostEnv.js +0 -13
- package/dist/imagesWireCaps.d.ts +0 -21
- package/dist/imagesWireCaps.js +0 -22
- package/dist/index.d.ts +0 -134
- package/dist/index.js +0 -476
- package/dist/interactiveHalt.d.ts +5 -153
- package/dist/interactiveHalt.js +0 -111
- package/dist/interactiveToolsWire.d.ts +0 -62
- package/dist/interactiveToolsWire.js +1 -67
- package/dist/leaderConflict.d.ts +0 -59
- package/dist/leaderConflict.js +0 -48
- package/dist/limitsWire.d.ts +0 -125
- package/dist/limitsWire.js +2 -120
- package/dist/liveInitToolFace.d.ts +0 -77
- package/dist/liveInitToolFace.js +1 -109
- package/dist/liveModelCatalog.d.ts +0 -52
- package/dist/liveModelCatalog.js +0 -48
- package/dist/liveQuestionStore.d.ts +0 -87
- package/dist/liveQuestionStore.js +1 -56
- package/dist/mcpLiveness.d.ts +0 -151
- package/dist/mcpLiveness.js +0 -122
- package/dist/mcpPanel.d.ts +0 -104
- package/dist/mcpPanel.js +0 -49
- package/dist/mcpReconnect.d.ts +0 -58
- package/dist/mcpReconnect.js +1 -69
- package/dist/mcpWireCaps.d.ts +0 -55
- package/dist/mcpWireCaps.js +1 -13
- package/dist/memoryComplianceCapability.d.ts +3 -57
- package/dist/memoryComplianceCapability.js +0 -57
- package/dist/memoryEntriesWire.d.ts +6 -198
- package/dist/memoryEntriesWire.js +0 -144
- package/dist/memoryOriginCapability.d.ts +3 -53
- package/dist/memoryOriginCapability.js +0 -50
- package/dist/memorySpecWire.d.ts +0 -116
- package/dist/memorySpecWire.js +0 -150
- package/dist/model/catalog.d.ts +0 -111
- package/dist/model/catalog.js +0 -87
- package/dist/model/catalogLoader.d.ts +0 -114
- package/dist/model/catalogLoader.js +2 -139
- package/dist/model/modelSupplyRules.d.ts +1 -55
- package/dist/model/modelSupplyRules.js +0 -62
- package/dist/model/providerAuth.d.ts +0 -103
- package/dist/model/providerAuth.js +2 -38
- package/dist/model/providerCatalog.d.ts +0 -45
- package/dist/model/providerCatalog.js +0 -37
- package/dist/model/providerPresets.d.ts +0 -33
- package/dist/model/providerPresets.js +2 -91
- package/dist/model/tierVocabulary.d.ts +0 -31
- package/dist/model/tierVocabulary.js +0 -27
- package/dist/modelBudgetRule.d.ts +0 -39
- package/dist/modelBudgetRule.js +0 -39
- package/dist/modelCapabilityProbe.d.ts +0 -175
- package/dist/modelCapabilityProbe.js +0 -147
- package/dist/modelWireCaps.d.ts +0 -13
- package/dist/modelWireCaps.js +0 -13
- package/dist/notifications.d.ts +0 -233
- package/dist/notifications.js +14 -492
- package/dist/oneShotWireCaps.d.ts +0 -34
- package/dist/oneShotWireCaps.js +0 -35
- package/dist/ownKey.d.ts +0 -33
- package/dist/ownKey.js +0 -33
- package/dist/panelRunningHistory.d.ts +0 -28
- package/dist/panelRunningHistory.js +0 -43
- package/dist/peerFrames.d.ts +0 -71
- package/dist/peerFrames.js +0 -168
- package/dist/peerLaneCapability.d.ts +0 -44
- package/dist/peerLaneCapability.js +0 -52
- package/dist/permissionRuleIssue.d.ts +0 -30
- package/dist/permissionRuleIssue.js +0 -78
- package/dist/permissionRulesWriteCapability.d.ts +0 -46
- package/dist/permissionRulesWriteCapability.js +0 -54
- package/dist/permissionWireCaps.d.ts +0 -37
- package/dist/permissionWireCaps.js +0 -37
- package/dist/postureKnob.d.ts +0 -71
- package/dist/postureKnob.js +0 -86
- package/dist/principalWire.d.ts +0 -17
- package/dist/principalWire.js +0 -17
- package/dist/printToolResultFrame.d.ts +0 -100
- package/dist/printToolResultFrame.js +0 -33
- package/dist/promptProfileWireCaps.d.ts +0 -13
- package/dist/promptProfileWireCaps.js +0 -13
- package/dist/readFacePosture.d.ts +0 -43
- package/dist/readFacePosture.js +0 -46
- package/dist/request/printNotification.d.ts +0 -20
- package/dist/request/printNotification.js +0 -55
- package/dist/request/taskRequest.d.ts +0 -249
- package/dist/request/taskRequest.js +10 -496
- package/dist/resumeRefusalCopy.d.ts +0 -136
- package/dist/resumeRefusalCopy.js +1 -117
- package/dist/retainBackgroundWireCaps.d.ts +0 -48
- package/dist/retainBackgroundWireCaps.js +0 -48
- package/dist/retryStatus.d.ts +2 -221
- package/dist/retryStatus.js +0 -107
- package/dist/rewindWireCaps.d.ts +0 -27
- package/dist/rewindWireCaps.js +0 -24
- package/dist/runCancelContext.d.ts +1 -20
- package/dist/runCancelContext.js +0 -34
- package/dist/runTerminal.d.ts +0 -273
- package/dist/runTerminal.js +0 -177
- package/dist/sandboxWire.d.ts +0 -38
- package/dist/sandboxWire.js +0 -82
- package/dist/scenarioWire.d.ts +0 -60
- package/dist/scenarioWire.js +0 -68
- package/dist/scratchpadWireCaps.d.ts +0 -11
- package/dist/scratchpadWireCaps.js +0 -32
- package/dist/sdkWireTransit.d.ts +0 -38
- package/dist/sdkWireTransit.js +0 -30
- package/dist/seam.d.ts +18 -853
- package/dist/seam.js +0 -52
- package/dist/seatContract.d.ts +0 -555
- package/dist/seatContract.js +5 -304
- package/dist/selfOrchestrationDenial.d.ts +0 -189
- package/dist/selfOrchestrationDenial.js +0 -162
- package/dist/selfOrchestrationWireCaps.d.ts +0 -38
- package/dist/selfOrchestrationWireCaps.js +0 -38
- package/dist/sessionMap.d.ts +0 -60
- package/dist/sessionMap.js +0 -37
- package/dist/sessionMemoryStatus.d.ts +11 -114
- package/dist/sessionMemoryStatus.js +0 -112
- package/dist/sessionModelLatch.d.ts +0 -29
- package/dist/sessionModelLatch.js +0 -40
- package/dist/sessionPolicyCapability.d.ts +3 -53
- package/dist/sessionPolicyCapability.js +0 -52
- package/dist/sessionSlot.d.ts +0 -26
- package/dist/sessionSlot.js +0 -17
- package/dist/skillsWireCaps.d.ts +0 -87
- package/dist/skillsWireCaps.js +0 -38
- package/dist/sqlEngineCapability.d.ts +0 -118
- package/dist/sqlEngineCapability.js +0 -134
- package/dist/sseIdleTriage.d.ts +0 -79
- package/dist/sseIdleTriage.js +1 -80
- package/dist/steering.d.ts +0 -54
- package/dist/steering.js +0 -63
- package/dist/subagent/engineCompactWire.d.ts +0 -34
- package/dist/subagent/engineCompactWire.js +4 -134
- package/dist/subagent/engineDelegatedPrompt.d.ts +0 -31
- package/dist/subagent/engineDelegatedPrompt.js +1 -103
- package/dist/subagent/engineRowStopGate.d.ts +0 -20
- package/dist/subagent/engineRowStopGate.js +0 -49
- package/dist/subagent/engineSubagentOutput.d.ts +0 -7
- package/dist/subagent/engineSubagentOutput.js +1 -51
- package/dist/subagent/engineSubagentResume.d.ts +2 -279
- package/dist/subagent/engineSubagentResume.js +2 -129
- package/dist/subagent/engineSubagentSteer.d.ts +0 -26
- package/dist/subagent/engineSubagentSteer.js +0 -63
- package/dist/subagent/engineSubagentTail.d.ts +0 -38
- package/dist/subagent/engineSubagentTail.js +2 -110
- package/dist/subagent/engineTaskHandleWire.d.ts +11 -65
- package/dist/subagent/engineTaskHandleWire.js +20 -131
- package/dist/subagent/subagentOwnerAbsence.d.ts +0 -2
- package/dist/subagent/subagentOwnerAbsence.js +0 -25
- package/dist/subagentContentStore.d.ts +3 -260
- package/dist/subagentContentStore.js +7 -540
- package/dist/systemReminderTag.d.ts +0 -49
- package/dist/systemReminderTag.js +0 -61
- package/dist/toolResult.d.ts +1 -211
- package/dist/toolResult.js +1 -358
- package/dist/toolRoster.d.ts +0 -140
- package/dist/toolRoster.js +0 -66
- package/dist/typePins.d.ts +0 -46
- package/dist/types/engineState.d.ts +0 -71
- package/dist/types/engineState.js +0 -16
- package/dist/ultracodeWireCaps.d.ts +0 -75
- package/dist/ultracodeWireCaps.js +0 -92
- package/dist/unrefTimer.d.ts +0 -27
- package/dist/webSearchBackendCapability.d.ts +0 -72
- package/dist/webSearchBackendCapability.js +0 -79
- package/dist/webSearchWireCaps.d.ts +0 -37
- package/dist/webSearchWireCaps.js +0 -34
- package/dist/websearch/searchProviderPresets.d.ts +0 -81
- package/dist/websearch/searchProviderPresets.js +0 -27
- package/dist/wireErrorTriage.d.ts +4 -160
- package/dist/wireErrorTriage.js +0 -171
- package/dist/wireRefusalCopy.d.ts +0 -28
- package/dist/wireRefusalCopy.js +0 -28
- package/dist/workflow.d.ts +0 -40
- package/dist/workflow.js +0 -52
- package/dist/workflowClient.d.ts +0 -122
- package/dist/workflowClient.js +8 -360
- package/dist/workflowMonitor.d.ts +2 -72
- package/dist/workflowMonitor.js +0 -26
- package/dist/writeProtectionCapability.d.ts +0 -112
- package/dist/writeProtectionCapability.js +0 -109
- package/docs/INTEGRATION-CLIENTS.md +62 -1
- package/package.json +1 -1
package/dist/fleetTaskDesc.js
CHANGED
|
@@ -1,62 +1,7 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* ⇄ B1 批搬迁(2026-07-27,多端改造设计稿 §2.4.1-B):cli src/sema/fleetTaskDesc.ts 逐字搬入(零依赖;壳侧改 re-export)。
|
|
3
|
-
*/
|
|
4
|
-
/**
|
|
5
|
-
* src/sema/fleetTaskDesc.ts — footer fleet 行「label/描述列」纯投影助手(零依赖,从 fleetClient.ts 提出
|
|
6
|
-
* 供单测直取——fleetClient 拖 SDK/appState/notification 重图,无法轻量 bundle;行为与提出前逐字同源)。
|
|
7
|
-
*/
|
|
8
|
-
/**
|
|
9
|
-
* 单行呈现载体的**危险字符可见化**(#307 呈现面规整族,2026-08-19)。
|
|
10
|
-
*
|
|
11
|
-
* 🔴 本段注释与正则里的不可见/双向字符一律 `\uXXXX` 转义,绝不字面嵌入(字面形无法目测核实)。
|
|
12
|
-
*
|
|
13
|
-
* 为什么 `\s+` 折叠不够:JS 的 `\s` 只覆盖 `\t\n\r\f\v` + 空格 + `\u00a0` +
|
|
14
|
-
* `\u1680` + `\u2000-\u200a` + `\u2028\u2029` + `\u202f\u205f\u3000\ufeff`。
|
|
15
|
-
* **没被它覆盖、却会被终端执行**的还有四族:
|
|
16
|
-
* · C0 全段 + DEL(`\u0000-\u001f`、`\u007f`):裸 ESC/CSI 能改色、清行、移光标;
|
|
17
|
-
* · C1(`\u0080-\u009f`):NEL(`\u0085`)在终端上就是换行,却**不在** `\s` 里 ——
|
|
18
|
-
* 「fleet 行就一行」这个结构账被它一个字符绕过;
|
|
19
|
-
* · 双向控制符 + 行/段分隔符(`\u061c`、`\u200e\u200f`、`\u2028\u2029`、
|
|
20
|
-
* `\u202a-\u202e`、`\u2066-\u2069`):不是控制字符,却会被终端的双向重排/断行**执行**,
|
|
21
|
-
* 把 wire 给的行描述在屏上排成另一个样子;
|
|
22
|
-
* · 孤代理项:上游可能本来就送半只,或被列宽截断劈开。
|
|
23
|
-
*
|
|
24
|
-
* 形状选型=**可见转义**(`\uXXXX`)而非 `.` 占位:本函数的载体是 footer fleet 行的
|
|
25
|
-
* label/描述**单行列**,可见形既不引入伪行,也不让两个不同的 wire 值在屏上同形。
|
|
26
|
-
*
|
|
27
|
-
* 🔴 射程只到呈现:不改「读不读得出」,也不参与任何放行判定。
|
|
28
|
-
* 🔴 顺序只在 collapseLabel 那侧有要求:`\s+` 折叠必须先跑(把 `\t\n\r` 等空白归一成
|
|
29
|
-
* 空格),反了会把换行渲成 `\u000A` 字面,「多行 name 塌一行」的既有行为就没了。
|
|
30
|
-
* 没经折叠的载体(fleetProjection.projectDescription)直接过本函数 —— `\t\n` 就渲成
|
|
31
|
-
* 可见转义,单行列里那才是对的(单行载体不许保 `\n`)。
|
|
32
|
-
*
|
|
33
|
-
* ⇄ 同族单源:壳仓 `src/sema/untrustedDisplayText.ts` 的 `cleanUntrustedScalar` 是同一判据的
|
|
34
|
-
* cli 侧实现(那份还带 `.` 占位与保排版两个变体),字符集与本函数**同集**。该单源日后上收到
|
|
35
|
-
* 本包时,本函数是它的座位;在那之前改一处必须改另一处(两侧各有逐码位同集断言看守)。
|
|
36
|
-
*/
|
|
37
|
-
// eslint-disable-next-line no-control-regex
|
|
38
1
|
const DISPLAY_UNSAFE = /[\u0000-\u001f\u007f-\u009f\u061c\u200e\u200f\u2028\u2029\u202a-\u202e\u2066-\u2069]|[\ud800-\udbff](?![\udc00-\udfff])|(?<![\ud800-\udbff])[\udc00-\udfff]/g;
|
|
39
2
|
export function escapeDisplayControlChars(s) {
|
|
40
3
|
return s.replace(DISPLAY_UNSAFE, ch => `\\u${(ch.codePointAt(0) ?? 0).toString(16).toUpperCase().padStart(4, '0')}`);
|
|
41
4
|
}
|
|
42
|
-
/**
|
|
43
|
-
* UNTRUSTED-for-display 呈前处理的**共用铸点**:**先转义、后按转义结果封长**。
|
|
44
|
-
*
|
|
45
|
-
* 🔴 顺序反过来会让承诺的显示预算失守 —— {@link escapeDisplayControlChars} 把每个不可见字符
|
|
46
|
-
* 改写成 6 字符的 `\uXXXX`,先按原文截长再转义,会把一段纯控制字符的 `max` 个原始字符送成
|
|
47
|
-
* `6 × max` 个显示字符。屏上的列宽预算是按**显示字符**给的,所以封长必须量转义后的那一份。
|
|
48
|
-
* 🔴 相反方向的顾虑(「先转义后截会把一枚转义序列拦腰截断」)由下面两条避让解掉,不构成
|
|
49
|
-
* 改回先截后转义的理由:
|
|
50
|
-
* · 截点落在一枚 `\uXXXX` token 中间 ⇒ 回退到该 token 之前(留半截 `\u00` 比整枚不渲更坏,
|
|
51
|
-
* 它看起来像一个完整答案的开头);
|
|
52
|
-
* · 截点落在一对合法代理对(如 emoji)中间 ⇒ 回退一位。`DISPLAY_UNSAFE` 只转义**孤**代理项,
|
|
53
|
-
* 合法对被放行原样透传,在这里截断等于人为造一枚裸高位代理项留在末尾。
|
|
54
|
-
*
|
|
55
|
-
* 语义:返回值恒是**已消毒**的串,长度 ≤ `max`(可能因避让短于 `max`)。`max <= 0` ⇒ 空串。
|
|
56
|
-
*
|
|
57
|
-
* ⇄ 本函数是本包该族的**唯一**实现(0.62.0 起):operator 面的 READ 档位读器、写保护姿态行、
|
|
58
|
-
* SQL 姿态行四处此前各写一份,其中三份是先截后转义 —— 同形存量清剿后一律接这一只。
|
|
59
|
-
*/
|
|
60
5
|
export function capForDisplay(raw, max) {
|
|
61
6
|
const escaped = escapeDisplayControlChars(raw);
|
|
62
7
|
if (escaped.length <= max)
|
|
@@ -73,23 +18,9 @@ export function capForDisplay(raw, max) {
|
|
|
73
18
|
}
|
|
74
19
|
return cut > 0 ? escaped.slice(0, cut) : '';
|
|
75
20
|
}
|
|
76
|
-
/** collapse a wire label to a single trimmed line (drops embedded newlines/runs). 187 row labels are always
|
|
77
|
-
* one short line; the <FleetTree/> column (Math.min(28,…) + wrap="truncate") does the visible ellipsis, so we
|
|
78
|
-
* only normalize here — no double-ellipsis, faithful to the 187 render.
|
|
79
|
-
* #307:折叠之后再过 {@link escapeDisplayControlChars} —— `\s+` 折叠管不到 C0 非空白段/C1(NEL)/
|
|
80
|
-
* 双向控制符/孤代理项,那四族原样透到终端就是「一行」这个结构账被绕过。空/非空判定不变
|
|
81
|
-
* (可见转义不产生空白,`|| fallback` 那些调用点的真假面照旧)。 */
|
|
82
21
|
export function collapseLabel(s) {
|
|
83
22
|
return escapeDisplayControlChars(s.replace(/\s+/g, ' ').trim());
|
|
84
23
|
}
|
|
85
|
-
/** CC row-body fallback(CC 真身锚 2026-07-20 人类剧本帧:`◯ general-purpose t1calc`——row body 从第一帧
|
|
86
|
-
* 起就是 Agent 工具的 description)。引擎子行帧不带 `description` 字段,任务描述只在 `name` 里,且有两形
|
|
87
|
-
* (07-24 D2 wire 实证,engine 1.271.0 帧 dump):
|
|
88
|
-
* ① 出生帧:name = `${agentType}: ${description}` 合成形(如 "fork: t1calc")→ 剥前缀复原;
|
|
89
|
-
* ② 后续帧:引擎把 name 重写为【裸任务描述】(如 "t1calc",无前缀)→ 直接按描述投影——
|
|
90
|
-
* 修前只认①,②一到描述列即塌空(footer 只剩 `◯ fork`,D2 症状)。
|
|
91
|
-
* 防重复列 belt:裸 name 恰为 identity 回声(=agentType 或 =agentName)时不当描述(label 列已渲它)。
|
|
92
|
-
* 纯投影非双源;真进度(last tool name)到帧后仍然优先(调用侧 projectDescription 先行)。 */
|
|
93
24
|
export function taskDescFromName(name, agentType, agentName) {
|
|
94
25
|
if (!name || !agentType)
|
|
95
26
|
return '';
|
package/dist/forkWireCaps.d.ts
CHANGED
|
@@ -1,26 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* ⇄ B2 批搬迁(2026-07-27,多端改造设计稿 §3 B2):cli src/sema/forkWireCaps.ts 逐字搬入(零依赖)。
|
|
3
|
-
*/
|
|
4
|
-
/**
|
|
5
|
-
* src/sema/forkWireCaps.ts — Fork wire projection: the top-level `TaskRequest.enableFork` boolean →
|
|
6
|
-
* core fork governance → the model's Agent(subagent_type:"fork") availability (core 1.257 撤除独立
|
|
7
|
-
* Fork 工具,能力收编进 Agent;CC `subagent_type:fork`: the model forks ITSELF into a subagent that
|
|
8
|
-
* INHERITS the parent context + shares the prompt cache, vs Task's clean-context subagent).
|
|
9
|
-
*
|
|
10
|
-
* DEFAULT = CC parity(clay 2026-07-08 拍板,订正:此前壳里引用的「默认对 LLM 不开」是过时拍板):
|
|
11
|
-
* core ≥1.257 的 fork 治理是 opt-OUT——enableFork 缺省 = GRANTED(与 CC 一致)。壳默认 **不 stamp**,
|
|
12
|
-
* 让引擎默认生效(模型默认可用 Agent-fork)。`SEMA_ENABLE_FORK` 保留为显式开关:truthy ⇒ stamp true
|
|
13
|
-
* (对老引擎 <1.257 也点亮),显式 falsy('0'/'false'/'no'/'off')⇒ stamp false(用户关闭的口子,
|
|
14
|
-
* service [503]② 的 fail-OPEN 教训:关必须显式 false,缺省不再是"关")。
|
|
15
|
-
*
|
|
16
|
-
* PURE — no env/file IO of its OWN (callers pass `env`), so it bundles + unit-tests without the
|
|
17
|
-
* settings graph. The CALLER (seamQuery / the -p ask) gates the env read to LIVE mode so the mock
|
|
18
|
-
* request shape never changes.
|
|
19
|
-
*/
|
|
20
1
|
import { type EnvLike } from './hostEnv.js';
|
|
21
|
-
/** The env key the shell reads. SEMA_-namespaced so it never collides with a worker's own deploy env. */
|
|
22
2
|
export declare const ENABLE_FORK_ENV: "SEMA_ENABLE_FORK";
|
|
23
|
-
/** ENV source → explicit `true`/`false` when the user set SEMA_ENABLE_FORK either way, else
|
|
24
|
-
* `undefined` (⇒ no stamp ⇒ the engine default applies — GRANTED on core ≥1.257, CC parity).
|
|
25
|
-
* Spelling set = {@link envFlagOn}/{@link envFlagOff}(REF-CC-141 dup-02 单源)。 */
|
|
26
3
|
export declare function enableForkFromEnv(env?: EnvLike): boolean | undefined;
|
package/dist/forkWireCaps.js
CHANGED
|
@@ -1,29 +1,6 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* ⇄ B2 批搬迁(2026-07-27,多端改造设计稿 §3 B2):cli src/sema/forkWireCaps.ts 逐字搬入(零依赖)。
|
|
3
|
-
*/
|
|
4
|
-
/**
|
|
5
|
-
* src/sema/forkWireCaps.ts — Fork wire projection: the top-level `TaskRequest.enableFork` boolean →
|
|
6
|
-
* core fork governance → the model's Agent(subagent_type:"fork") availability (core 1.257 撤除独立
|
|
7
|
-
* Fork 工具,能力收编进 Agent;CC `subagent_type:fork`: the model forks ITSELF into a subagent that
|
|
8
|
-
* INHERITS the parent context + shares the prompt cache, vs Task's clean-context subagent).
|
|
9
|
-
*
|
|
10
|
-
* DEFAULT = CC parity(clay 2026-07-08 拍板,订正:此前壳里引用的「默认对 LLM 不开」是过时拍板):
|
|
11
|
-
* core ≥1.257 的 fork 治理是 opt-OUT——enableFork 缺省 = GRANTED(与 CC 一致)。壳默认 **不 stamp**,
|
|
12
|
-
* 让引擎默认生效(模型默认可用 Agent-fork)。`SEMA_ENABLE_FORK` 保留为显式开关:truthy ⇒ stamp true
|
|
13
|
-
* (对老引擎 <1.257 也点亮),显式 falsy('0'/'false'/'no'/'off')⇒ stamp false(用户关闭的口子,
|
|
14
|
-
* service [503]② 的 fail-OPEN 教训:关必须显式 false,缺省不再是"关")。
|
|
15
|
-
*
|
|
16
|
-
* PURE — no env/file IO of its OWN (callers pass `env`), so it bundles + unit-tests without the
|
|
17
|
-
* settings graph. The CALLER (seamQuery / the -p ask) gates the env read to LIVE mode so the mock
|
|
18
|
-
* request shape never changes.
|
|
19
|
-
*/
|
|
20
1
|
import { hostEnv } from './hostEnv.js';
|
|
21
2
|
import { envFlagOff, envFlagOn } from './envFlag.js';
|
|
22
|
-
/** The env key the shell reads. SEMA_-namespaced so it never collides with a worker's own deploy env. */
|
|
23
3
|
export const ENABLE_FORK_ENV = 'SEMA_ENABLE_FORK';
|
|
24
|
-
/** ENV source → explicit `true`/`false` when the user set SEMA_ENABLE_FORK either way, else
|
|
25
|
-
* `undefined` (⇒ no stamp ⇒ the engine default applies — GRANTED on core ≥1.257, CC parity).
|
|
26
|
-
* Spelling set = {@link envFlagOn}/{@link envFlagOff}(REF-CC-141 dup-02 单源)。 */
|
|
27
4
|
export function enableForkFromEnv(env = hostEnv()) {
|
|
28
5
|
const raw = env[ENABLE_FORK_ENV];
|
|
29
6
|
if (typeof raw !== 'string' || raw.trim() === '')
|
|
@@ -32,5 +9,5 @@ export function enableForkFromEnv(env = hostEnv()) {
|
|
|
32
9
|
return true;
|
|
33
10
|
if (envFlagOff(raw))
|
|
34
11
|
return false;
|
|
35
|
-
return undefined;
|
|
12
|
+
return undefined;
|
|
36
13
|
}
|
package/dist/gateOutcome.d.ts
CHANGED
|
@@ -1,185 +1,45 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* src/gateOutcome.ts — 一次工具门通过的**整条记录**:`tool_end.gate` 的三端共用窄读器(0.60.0)。
|
|
3
|
-
*
|
|
4
|
-
* ── 上游形变(engine ≥7.64.0 / sdk 8.4.0;wire BREAKING)────────────────────────────────────
|
|
5
|
-
* 7.63.0 及以前,一次调用怎么过门要从**四个正交可选词**里拼:`settledBy` / `resolution` /
|
|
6
|
-
* `autoDenied` / `approver`。那四个词的配对规则只活在注释里,消费端要靠**缺席**推语义(「有
|
|
7
|
-
* `timeout` 没有 `resolution` ⇒ 耐久 park 过期」)。7.64.0 起它是一条记录 {@link GateOutcomeView}:
|
|
8
|
-
* · `disposition` —— 放行,或被**哪一层**拒(`deniedBy` 八词);
|
|
9
|
-
* · `settlement?` —— 这次消费掉的等待**怎么结束的**(十二词 `kind`、形由词决定的 `who`、`when`,
|
|
10
|
-
* 人的拒绝另带 `note?`);
|
|
11
|
-
* · `origin?` —— 谁**问**的。
|
|
12
|
-
* `settlement` 与 `origin` **同在同缺**(它们说的是同一只 ask)。四个旧词**全删,无 alias**。
|
|
13
|
-
*
|
|
14
|
-
* ── 本模块存在的理由:判定归包,端不许自拼 ───────────────────────────────────────────────────
|
|
15
|
-
* 旧形上,「这一次是不是**审批窗自己走完**的拒绝」这个判定是端各自拼的一个两键合取
|
|
16
|
-
* (`settledBy === 'timeout' && resolution === 'window_expired'`),而拼错的方式有好几种、错法
|
|
17
|
-
* 静默(单锚 `settledBy` 会把「审批方违约」误收进来;写成不等式会把「不知道怎么拒的」折成
|
|
18
|
-
* 「窗自然结束」)。形变把这些配对规则搬进了**形状**,正是把判定收进包里的时机 ——
|
|
19
|
-
* 端从此调 {@link isApprovalWindowExpiredGate} / {@link isDenialLimitAutoDeniedGate},不再自拼。
|
|
20
|
-
*
|
|
21
|
-
* ── 判据纪律 ────────────────────────────────────────────────────────────────────────────────
|
|
22
|
-
* 🔴 **缺席不是关于这次调用的事实**,禁读出任何语义。上游逐字列了**四种**在 wire 上不可分辨的
|
|
23
|
-
* 成因:①门根本没看见这次调用(未武装的门)/ ②延后重发 / ③reconcile 捡回的孤儿 / ④那条记录
|
|
24
|
-
* 过不了引擎的不变量筛、server **整条不上帧**。⇒ 一律退回 `isError` + 文案。
|
|
25
|
-
* ⚠️ **真机黑盒补的第五种成因**(engine 7.64.0 三路独立构造直证,与上面四种不同 —— 它有一个
|
|
26
|
-
* **可读的正面标记**):审批窗走完未决而走 **park** 路径时,`tool_end` 帧上没有 `gate`,只有
|
|
27
|
-
* `errorCode: "gate.parked"`。那一形不是「记录坏了」,是「这次调用根本没结算过什么」——
|
|
28
|
-
* 它由 {@link isGateParkedToolEnd} 单独回答,见那一处。
|
|
29
|
-
* 🔴 **开集读**:`settlement.kind` / `origin` / `deniedBy` 的词表属主都是 core。`deniedBy` 在
|
|
30
|
-
* wire 上确实是闭集(出集的记录 server 整条不投),但**本包不据此收窄**:窄读成枚举会在 core
|
|
31
|
-
* 加员当天把一个合法值判没,而端拿到的是「一个陌生的词」远好过「这一位不见了」。三处一律
|
|
32
|
-
* 「非空串即原样透传」,端的 `switch` **必须带 `default`**。
|
|
33
|
-
* 🔴 **`who` 的形由 `kind` 决定,本读器不重铸那张配对表**:它按结构原样窄读(`party` 非空串、
|
|
34
|
-
* `approver` / `window` 各自可选),把配对规则留在**引擎**那一侧。抄一份配对表 = 给自己立
|
|
35
|
-
* 第二个判官,而上游明说这张表是它的不变量。
|
|
36
|
-
* 🔴 `approver` 是 **UNTRUSTED-for-display**:转录不是认证(引擎只筛形,不鉴别、不比对、不回读),
|
|
37
|
-
* 可信度 = 那条审批通道的可信度;只渲染,绝不回喂模型/工具入参,更不许当鉴权判据。
|
|
38
|
-
* `note`(拒批人自己写的自由文本)同待遇。
|
|
39
|
-
*
|
|
40
|
-
* ── 🔴 同名不同义警告([same-name-different-meaning-crosses-layers])──────────────────────────
|
|
41
|
-
* 本包 `hitl/parkResolver.ts` 另有一个导出型也叫 `GateOutcome`,说的是**本包决断腿的结局**
|
|
42
|
-
* (`decided` / `aborted` / `failed`),与 sdk 的 `GateOutcome`(**引擎的门记录**)是两个语义面。
|
|
43
|
-
* 本模块的公面型因此一律带 `View` 后缀,两者在任何一处都不许互相赋值 —— 合并它们会让「这次门怎么
|
|
44
|
-
* 过的」与「这条决断链怎么收的」同形。
|
|
45
|
-
*/
|
|
46
1
|
import type { DeniedBy, Settlement } from '@sema-agent/sdk';
|
|
47
|
-
/**
|
|
48
|
-
* 这次门通过的**最终处置**。`deniedBy` 按**开集**读(型面用 sdk 的闭八词并 `string` 放宽,理由见
|
|
49
|
-
* 模块顶注)——`policy` / `hook` / `org` / `classifier` / `plan_mode` / `compliance` /
|
|
50
|
-
* `write_protection` / `ask_resolution`。
|
|
51
|
-
*/
|
|
52
2
|
export type GateDispositionView = {
|
|
53
3
|
kind: 'allowed';
|
|
54
|
-
/** 0.68.3(core 7.18.0 #742):分类器轮记录;缺席 = 未知(见 {@link GateClassifierRoundView})。 */
|
|
55
4
|
classifier?: GateClassifierRoundView;
|
|
56
5
|
} | {
|
|
57
6
|
kind: 'denied';
|
|
58
|
-
/** 同上 —— 两臂都可带(core `GateDisposition` 两臂各自声明,本层逐臂逐键挑)。 */
|
|
59
7
|
classifier?: GateClassifierRoundView;
|
|
60
8
|
deniedBy: DeniedBy | (string & {});
|
|
61
|
-
/**
|
|
62
|
-
* 0.67.0(core 7.14.0 #688)—— 这次 deny 是**分类器那一轮没能裁决**的哪一形
|
|
63
|
-
* (`unavailable` = 跑不了 / `parse_error` = 跑了但答在契约之外;core `CLASSIFIER_DENY_CAUSES`)。
|
|
64
|
-
*
|
|
65
|
-
* 🔴 **本层按开集透传**(非空串即收),与同文件 `deniedBy` / `settlement.kind` / `origin` 三处
|
|
66
|
-
* 逐字同规:窄读域只许等于或宽于铸点域(B-025 定谳)。**判成员**那一步在公面读器
|
|
67
|
-
* `classifierDenyCauseOf` 上(闭集,理由见该函数)—— 两层分工与退役前的
|
|
68
|
-
* `classifierUnavailable`「过境 / 显示」两层逐字同形。
|
|
69
|
-
* 🔴 **缺席不是断言**:缺席同时覆盖「分类器自己裁决 block 了」「这不是分类器轮」「本部署没接
|
|
70
|
-
* 分类器」三形(core `gate-outcome.d.ts:162-166` 逐字),端**禁**读成「分类器好着呢」。
|
|
71
|
-
* 🔴 它站在 `deniedBy ∈ {classifier, policy}` 旁(core `DENIED_BY_MAY_CARRY_CAUSE`);那条配对
|
|
72
|
-
* 是**引擎的段内不变量**,本层不校(同 I1–I4 的处置,见 {@link gateOutcomeOf} 顶注)。
|
|
73
|
-
*/
|
|
74
9
|
cause?: string;
|
|
75
10
|
};
|
|
76
|
-
/**
|
|
77
|
-
* 0.68.3(core 7.18.0 #742)—— **分类器那一轮到底问了谁**(`AutoModeClassifierRound` 的防御读视图)。
|
|
78
|
-
*
|
|
79
|
-
* 🔴 **缺席 = 未知 ≠ 席自答**(core 提货单 [7281] 逐字):缺席同时覆盖「这不是分类器轮」「老引擎」
|
|
80
|
-
* 「分类器席没配」三形,端**禁**读成「主模型自己判的」。
|
|
81
|
-
* · `modelRequested` / `modelUsed`:请求的席与实际答题的模型(两者不同 ⇒ 走了候选梯子)。
|
|
82
|
-
* · `fallback`:从哪一级退到哪一级、为什么(`cause` = core `AUTO_MODE_FALLBACK_CAUSES` 三词
|
|
83
|
-
* `error` / `timeout` / `parse_error`,**按开集读**;本包不持该表)。缺席 = 没退。
|
|
84
|
-
* ⚠️ core 顶注:prompt 都没能组出来的那一形也记成 `{from: seat, to: main, cause: "error"}`——
|
|
85
|
-
* 「没问过任何模型」与「问了但坏了」在这一位上**分不开**,端别据它渲「分类器席坏了」。
|
|
86
|
-
* 🔴 两个必在位缺一 ⇒ 整只 `classifier` 缺席(半只视图比没有更坏);`fallback` 三键缺一 ⇒ 只丢 `fallback`。
|
|
87
|
-
*/
|
|
88
11
|
export interface GateClassifierRoundView {
|
|
89
12
|
modelRequested: string;
|
|
90
13
|
modelUsed: string;
|
|
91
14
|
fallback?: GateClassifierFallbackView;
|
|
92
15
|
}
|
|
93
|
-
/** 分类器候选梯子的一次退级:从哪一级到哪一级、为什么(`cause` 按开集读)。 */
|
|
94
16
|
export interface GateClassifierFallbackView {
|
|
95
17
|
from: string;
|
|
96
18
|
to: string;
|
|
97
19
|
cause: string;
|
|
98
20
|
}
|
|
99
|
-
/** 结算方的身份座(形由 {@link SettlementView.kind} 决定,本读器不重铸那张配对表)。 */
|
|
100
21
|
export interface SettlementWhoView {
|
|
101
|
-
/** `person` / `engine` / `host` / `none`(开集读)。 */
|
|
102
22
|
party: string;
|
|
103
|
-
/** 审批通道**自报**的身份串;UNTRUSTED-for-display,缺席 = 通道没报名字。 */
|
|
104
23
|
approver?: string;
|
|
105
|
-
/** 引擎侧是**哪一只窗**(`approval_factory` / `denial_limit`);非引擎方恒缺席。 */
|
|
106
24
|
window?: string;
|
|
107
25
|
}
|
|
108
|
-
/** 一只 ask 在等的那次等待**怎么结束的**。 */
|
|
109
26
|
export interface SettlementView {
|
|
110
|
-
/** 闭十二词(core `SETTLEMENT_KINDS`),**按开集读**。 */
|
|
111
27
|
kind: Settlement['kind'] | (string & {});
|
|
112
28
|
who: SettlementWhoView;
|
|
113
|
-
/** epoch ms,写在结算发生的那一处。非有限数 ⇒ 缺席(绝不铸一个 0 时刻)。 */
|
|
114
29
|
when?: number;
|
|
115
|
-
/** 拒批人附的那句话。**没有 note 的拒 = 一句干脆的「不」**,不是「没说理由」。UNTRUSTED。 */
|
|
116
30
|
note?: string;
|
|
117
31
|
}
|
|
118
|
-
/** 一次工具门通过的整条记录(sdk `GateOutcome` 的**防御读**视图)。 */
|
|
119
32
|
export interface GateOutcomeView {
|
|
120
33
|
disposition: GateDispositionView;
|
|
121
|
-
/** 只在**这次通过真的结算了一只 ask** 时在场。与 {@link origin} 同在同缺。 */
|
|
122
34
|
settlement?: SettlementView;
|
|
123
|
-
/** 谁**问**的(core `ASK_ORIGINS`,7.6.0 起十词;**按开集读**)。与 {@link settlement} 同在同缺。 */
|
|
124
35
|
origin?: string;
|
|
125
36
|
}
|
|
126
37
|
export declare function gateOutcomeOf(frame: unknown): GateOutcomeView | undefined;
|
|
127
|
-
/**
|
|
128
|
-
* 这次调用是**被门 park 了**吗 —— 「没在这里结算」的**第二形**(engine 7.64.0 真机黑盒直证)。
|
|
129
|
-
*
|
|
130
|
-
* 🔴 **为什么非有它不可**:审批窗走完(默认 300s)未决而走 park 路径时,`tool_end` 帧上
|
|
131
|
-
* **没有 `gate` 字段** —— 只有 `errorCode: "gate.parked"`。⇒ 单锚 {@link gateOutcomeOf} 的
|
|
132
|
-
* 消费点在这一形上什么都读不到,而这一形**恰恰是端最想说一句话的那一格**(「已转后台候批」)。
|
|
133
|
-
* 🔴 **两形合起来才是「这次调用没在这里结算」的完整判据**,端要判这件事写:
|
|
134
|
-
* `isApprovalWindowExpiredGate(gateOutcomeOf(f)) || isGateParkedToolEnd(f)`。
|
|
135
|
-
* 两形语义**不同**、不许互相顶替:前者是「窗走完了,拒了」,后者是「park 了,还没人决」。
|
|
136
|
-
* 🔴 **入参是整只帧**(与 {@link gateOutcomeOf} 同姿势):端不必知道这一位挂在哪个键上。
|
|
137
|
-
* 🔴 缺席不带语义:大多数 `tool_end` 都不带这个码,缺席 ≠「已经结算过了」。
|
|
138
|
-
*/
|
|
139
38
|
export declare function isGateParkedToolEnd(frame: unknown): boolean;
|
|
140
|
-
/** 这次门是不是**拒**(缺席 ⇒ `false` —— 缺席不带语义,见模块顶注)。 */
|
|
141
39
|
export declare function isDeniedGate(g: GateOutcomeView | undefined): boolean;
|
|
142
|
-
/** 拒这次的是**哪一层**(`policy` / `hook` / `org` / …;开集)。非拒 / 缺席 ⇒ `undefined`。 */
|
|
143
40
|
export declare function gateDeniedBy(g: GateOutcomeView | undefined): string | undefined;
|
|
144
|
-
/**
|
|
145
|
-
* 这次结算是**谁**的(审批通道自报的身份串)。UNTRUSTED-for-display。
|
|
146
|
-
* 🔴 缺席 = 通道没报名字 —— 永不意味「没人批」,也永不意味「有人批」。
|
|
147
|
-
*/
|
|
148
41
|
export declare function gateApprover(g: GateOutcomeView | undefined): string | undefined;
|
|
149
|
-
/**
|
|
150
|
-
* 这次拒是**审批窗自己走完**的吗 —— 端此前自拼的那个两键合取(`settledBy === 'timeout' &&
|
|
151
|
-
* resolution === 'window_expired'`)的**继任单源**。
|
|
152
|
-
*
|
|
153
|
-
* 判据 = `settlement.kind === 'approval_window_expired'`(引擎自己的审批工厂窗,或同步宿主
|
|
154
|
-
* approver 报「我的窗到了」)。
|
|
155
|
-
* 🔴 **刻意不含另外两条窗词**:`denial_limit_window_expired` 是**分类器限额回落**的自动拒窗
|
|
156
|
-
* (端要渲的是另一句话,见 {@link isDenialLimitAutoDeniedGate}),`park_sla_expired` 是**耐久 park**
|
|
157
|
-
* 的 SLA 到期(结束它的是宿主的扫,不是这次调用在等的那只审批窗)。旧形上这三件事共用一个
|
|
158
|
-
* `settledBy:"timeout"`,分不出来正是要靠 `resolution` 补第二个键的原因;形变把它们分成了三个词,
|
|
159
|
-
* 合并读回去等于把刚修好的判别力扔掉。
|
|
160
|
-
* 🔴 **正面匹配,绝不写不等式**:不等式对缺席与任何未来新词都为真。
|
|
161
|
-
*/
|
|
162
42
|
export declare function isApprovalWindowExpiredGate(g: GateOutcomeView | undefined): boolean;
|
|
163
|
-
/**
|
|
164
|
-
* 这次拒是**引擎的限额回落窗自己拒的**吗(不是人拒的)—— 端此前读的 `tool_end.autoDenied === true`
|
|
165
|
-
* 的**继任单源**。
|
|
166
|
-
*
|
|
167
|
-
* 判据 = `settlement.kind === 'denial_limit_window_expired'`(auto 模式分类器的拒绝上限回落窗:
|
|
168
|
-
* 那张必须真人批的卡在 `autoDenyAfterMs` 走完之后由**引擎**判 deny)。
|
|
169
|
-
* 🔴 它答的正是 {@link isApprovalWindowExpiredGate} 答不了的那一问:「这一次到期是**自动拒**收的场,
|
|
170
|
-
* 还是 park 了等人」。端要渲的两句话(「自动拒(限额回落)」vs「已转后台候批」)卡在这一格上。
|
|
171
|
-
* 🔴 **不据它自铸第二只定时器/第二张资格表**:窗的执行全在引擎,本位是**事后**的判别位。
|
|
172
|
-
*/
|
|
173
43
|
export declare function isDenialLimitAutoDeniedGate(g: GateOutcomeView | undefined): boolean;
|
|
174
|
-
/**
|
|
175
|
-
* 这次结算是**耐久 park 的 SLA 到期**被宿主的扫判成拒的吗。
|
|
176
|
-
* 🔴 与上面两条并列而不合并:它说的是「那一行在队列里坐过了 deadline」,与「这次调用在等的审批窗
|
|
177
|
-
* 走完了」是两件不同的事,出路也不同(前者要重新提这一步,后者可以再决一次)。
|
|
178
|
-
*/
|
|
179
44
|
export declare function isParkSlaExpiredGate(g: GateOutcomeView | undefined): boolean;
|
|
180
|
-
/**
|
|
181
|
-
* 这次门记录是**人**做的决定吗(`human_allowed` / `human_refused`)。
|
|
182
|
-
* 🔴 「人批了之后被复查否决」(上游不变量 I3)在这里读作:本谓词为 `true` **且** {@link isDeniedGate}
|
|
183
|
-
* 也为 `true` —— 那时 `deniedBy` 指的是复查那一层,approver 留在结算上,**不是** approver 的拒。
|
|
184
|
-
*/
|
|
185
45
|
export declare function isHumanSettledGate(g: GateOutcomeView | undefined): boolean;
|
package/dist/gateOutcome.js
CHANGED
|
@@ -1,11 +1,7 @@
|
|
|
1
|
-
// 「这次调用没在这里结算」的**第二形**判据(见 {@link isGateParkedToolEnd});与 `frameRouter` 的
|
|
2
|
-
// 连坐/中断判据读同一个常量(单源见该常量顶注)。
|
|
3
1
|
import { GATE_PARKED_ERROR_CODE } from './engineErrorCodes.js';
|
|
4
|
-
/** 非空串窄化(空串按缺席归一)。 */
|
|
5
2
|
function str(v) {
|
|
6
3
|
return typeof v === 'string' && v.length > 0 ? v : undefined;
|
|
7
4
|
}
|
|
8
|
-
/** `who` 的结构窄读;`party` 读不出 ⇒ 整只结算不成形(见 {@link readSettlement})。 */
|
|
9
5
|
function readWho(v) {
|
|
10
6
|
if (typeof v !== 'object' || v === null || Array.isArray(v))
|
|
11
7
|
return undefined;
|
|
@@ -21,11 +17,6 @@ function readWho(v) {
|
|
|
21
17
|
...(window !== undefined ? { window } : {}),
|
|
22
18
|
};
|
|
23
19
|
}
|
|
24
|
-
/**
|
|
25
|
-
* `settlement` 的结构窄读。`kind` 或 `who` 读不出 ⇒ **整只缺席**(不铸半只):一只没有
|
|
26
|
-
* 「怎么结束的」或「谁结束的」的结算,消费端拿它渲不出任何一句可信的话,而半只会被读成
|
|
27
|
-
* 「结算过了,只是没说是谁」——那是一句本读面证明不了的断言。
|
|
28
|
-
*/
|
|
29
20
|
function readSettlement(v) {
|
|
30
21
|
if (typeof v !== 'object' || v === null || Array.isArray(v))
|
|
31
22
|
return undefined;
|
|
@@ -43,19 +34,6 @@ function readSettlement(v) {
|
|
|
43
34
|
...(note !== undefined ? { note } : {}),
|
|
44
35
|
};
|
|
45
36
|
}
|
|
46
|
-
/**
|
|
47
|
-
* `tool_end` 帧(或本包投影出的 `tool_end_result` 内部臂、耐久行的 resolved outcome)→ 门记录。
|
|
48
|
-
*
|
|
49
|
-
* 入参是**帧**而不是 `frame.gate`,刻意如此:端不必知道这条记录挂在哪个键上(那正是下一次形变
|
|
50
|
-
* 会动的东西),也不必自己判「这一帧带不带门」。
|
|
51
|
-
*
|
|
52
|
-
* 🔴 `disposition` 是**唯一的承重座**:它读不出来 ⇒ 整只 `undefined`。一条只有 `settlement` 而
|
|
53
|
-
* 说不出「放行还是拒了」的记录,消费端能从它得到的只有误导。
|
|
54
|
-
* 🔴 **不校 I1–I4 那四条不变量**(`settlement` ⇔ `origin` 同在、`ask_resolution` ⇒ 有拒绝类结算……):
|
|
55
|
-
* 筛子的属主是引擎,server 对过不了筛的记录**整条不投**。包再校一遍,只会在上游合法演进的当天
|
|
56
|
-
* 把一条真记录判没,而本层给不出比「原样交给端」更好的降级动作(`wiring_manifest.autoMode`
|
|
57
|
-
* 那一段的反向先例是**同一条帧上的段内自洽**,不是跨系统的不变量,两者刻意不同处置)。
|
|
58
|
-
*/
|
|
59
37
|
function readClassifierRound(raw) {
|
|
60
38
|
if (typeof raw !== 'object' || raw === null || Array.isArray(raw))
|
|
61
39
|
return undefined;
|
|
@@ -89,17 +67,14 @@ export function gateOutcomeOf(frame) {
|
|
|
89
67
|
const dr = d;
|
|
90
68
|
const dk = str(dr.kind);
|
|
91
69
|
let disposition;
|
|
92
|
-
// 0.68.3(core 7.18.0 #742):两臂都可带 `classifier`;逐键挑、缺席不铸键。
|
|
93
70
|
const classifier = readClassifierRound(dr.classifier);
|
|
94
71
|
if (dk === 'allowed') {
|
|
95
72
|
disposition = { kind: 'allowed', ...(classifier !== undefined ? { classifier } : {}) };
|
|
96
73
|
}
|
|
97
74
|
else if (dk === 'denied') {
|
|
98
75
|
const deniedBy = str(dr.deniedBy);
|
|
99
|
-
// 「拒了但说不出谁拒的」在上游**写不出来**(两臂在类型上就分了家)⇒ 到得了这里的这一形是坏记录。
|
|
100
76
|
if (deniedBy === undefined)
|
|
101
77
|
return undefined;
|
|
102
|
-
// 0.67.0:分类器 deny 的成因位(开集透传、缺席不铸键;判成员在 `classifierDenyCauseOf`)。
|
|
103
78
|
const cause = str(dr.cause);
|
|
104
79
|
disposition = {
|
|
105
80
|
kind: 'denied',
|
|
@@ -109,7 +84,6 @@ export function gateOutcomeOf(frame) {
|
|
|
109
84
|
};
|
|
110
85
|
}
|
|
111
86
|
else {
|
|
112
|
-
// 处置词本身不认识 ⇒ 整只不成形:`allowed` / `denied` 是这条记录的**判别位**,猜不得。
|
|
113
87
|
return undefined;
|
|
114
88
|
}
|
|
115
89
|
const settlement = readSettlement(raw.settlement);
|
|
@@ -120,91 +94,32 @@ export function gateOutcomeOf(frame) {
|
|
|
120
94
|
...(origin !== undefined ? { origin } : {}),
|
|
121
95
|
};
|
|
122
96
|
}
|
|
123
|
-
/**
|
|
124
|
-
* 这次调用是**被门 park 了**吗 —— 「没在这里结算」的**第二形**(engine 7.64.0 真机黑盒直证)。
|
|
125
|
-
*
|
|
126
|
-
* 🔴 **为什么非有它不可**:审批窗走完(默认 300s)未决而走 park 路径时,`tool_end` 帧上
|
|
127
|
-
* **没有 `gate` 字段** —— 只有 `errorCode: "gate.parked"`。⇒ 单锚 {@link gateOutcomeOf} 的
|
|
128
|
-
* 消费点在这一形上什么都读不到,而这一形**恰恰是端最想说一句话的那一格**(「已转后台候批」)。
|
|
129
|
-
* 🔴 **两形合起来才是「这次调用没在这里结算」的完整判据**,端要判这件事写:
|
|
130
|
-
* `isApprovalWindowExpiredGate(gateOutcomeOf(f)) || isGateParkedToolEnd(f)`。
|
|
131
|
-
* 两形语义**不同**、不许互相顶替:前者是「窗走完了,拒了」,后者是「park 了,还没人决」。
|
|
132
|
-
* 🔴 **入参是整只帧**(与 {@link gateOutcomeOf} 同姿势):端不必知道这一位挂在哪个键上。
|
|
133
|
-
* 🔴 缺席不带语义:大多数 `tool_end` 都不带这个码,缺席 ≠「已经结算过了」。
|
|
134
|
-
*/
|
|
135
97
|
export function isGateParkedToolEnd(frame) {
|
|
136
98
|
if (typeof frame !== 'object' || frame === null || Array.isArray(frame))
|
|
137
99
|
return false;
|
|
138
100
|
return frame.errorCode === GATE_PARKED_ERROR_CODE;
|
|
139
101
|
}
|
|
140
|
-
/** 这次门是不是**拒**(缺席 ⇒ `false` —— 缺席不带语义,见模块顶注)。 */
|
|
141
102
|
export function isDeniedGate(g) {
|
|
142
103
|
return g?.disposition.kind === 'denied';
|
|
143
104
|
}
|
|
144
|
-
/** 拒这次的是**哪一层**(`policy` / `hook` / `org` / …;开集)。非拒 / 缺席 ⇒ `undefined`。 */
|
|
145
105
|
export function gateDeniedBy(g) {
|
|
146
106
|
return g?.disposition.kind === 'denied' ? g.disposition.deniedBy : undefined;
|
|
147
107
|
}
|
|
148
|
-
/**
|
|
149
|
-
* 这次结算是**谁**的(审批通道自报的身份串)。UNTRUSTED-for-display。
|
|
150
|
-
* 🔴 缺席 = 通道没报名字 —— 永不意味「没人批」,也永不意味「有人批」。
|
|
151
|
-
*/
|
|
152
108
|
export function gateApprover(g) {
|
|
153
109
|
return g?.settlement?.who.approver;
|
|
154
110
|
}
|
|
155
|
-
/**
|
|
156
|
-
* 这次拒是**审批窗自己走完**的吗 —— 端此前自拼的那个两键合取(`settledBy === 'timeout' &&
|
|
157
|
-
* resolution === 'window_expired'`)的**继任单源**。
|
|
158
|
-
*
|
|
159
|
-
* 判据 = `settlement.kind === 'approval_window_expired'`(引擎自己的审批工厂窗,或同步宿主
|
|
160
|
-
* approver 报「我的窗到了」)。
|
|
161
|
-
* 🔴 **刻意不含另外两条窗词**:`denial_limit_window_expired` 是**分类器限额回落**的自动拒窗
|
|
162
|
-
* (端要渲的是另一句话,见 {@link isDenialLimitAutoDeniedGate}),`park_sla_expired` 是**耐久 park**
|
|
163
|
-
* 的 SLA 到期(结束它的是宿主的扫,不是这次调用在等的那只审批窗)。旧形上这三件事共用一个
|
|
164
|
-
* `settledBy:"timeout"`,分不出来正是要靠 `resolution` 补第二个键的原因;形变把它们分成了三个词,
|
|
165
|
-
* 合并读回去等于把刚修好的判别力扔掉。
|
|
166
|
-
* 🔴 **正面匹配,绝不写不等式**:不等式对缺席与任何未来新词都为真。
|
|
167
|
-
*/
|
|
168
111
|
export function isApprovalWindowExpiredGate(g) {
|
|
169
112
|
return g?.settlement?.kind === 'approval_window_expired';
|
|
170
113
|
}
|
|
171
|
-
/**
|
|
172
|
-
* 这次拒是**引擎的限额回落窗自己拒的**吗(不是人拒的)—— 端此前读的 `tool_end.autoDenied === true`
|
|
173
|
-
* 的**继任单源**。
|
|
174
|
-
*
|
|
175
|
-
* 判据 = `settlement.kind === 'denial_limit_window_expired'`(auto 模式分类器的拒绝上限回落窗:
|
|
176
|
-
* 那张必须真人批的卡在 `autoDenyAfterMs` 走完之后由**引擎**判 deny)。
|
|
177
|
-
* 🔴 它答的正是 {@link isApprovalWindowExpiredGate} 答不了的那一问:「这一次到期是**自动拒**收的场,
|
|
178
|
-
* 还是 park 了等人」。端要渲的两句话(「自动拒(限额回落)」vs「已转后台候批」)卡在这一格上。
|
|
179
|
-
* 🔴 **不据它自铸第二只定时器/第二张资格表**:窗的执行全在引擎,本位是**事后**的判别位。
|
|
180
|
-
*/
|
|
181
114
|
export function isDenialLimitAutoDeniedGate(g) {
|
|
182
115
|
return g?.settlement?.kind === 'denial_limit_window_expired';
|
|
183
116
|
}
|
|
184
|
-
/**
|
|
185
|
-
* 这次结算是**耐久 park 的 SLA 到期**被宿主的扫判成拒的吗。
|
|
186
|
-
* 🔴 与上面两条并列而不合并:它说的是「那一行在队列里坐过了 deadline」,与「这次调用在等的审批窗
|
|
187
|
-
* 走完了」是两件不同的事,出路也不同(前者要重新提这一步,后者可以再决一次)。
|
|
188
|
-
*/
|
|
189
117
|
export function isParkSlaExpiredGate(g) {
|
|
190
118
|
return g?.settlement?.kind === 'park_sla_expired';
|
|
191
119
|
}
|
|
192
|
-
/**
|
|
193
|
-
* 这次门记录是**人**做的决定吗(`human_allowed` / `human_refused`)。
|
|
194
|
-
* 🔴 「人批了之后被复查否决」(上游不变量 I3)在这里读作:本谓词为 `true` **且** {@link isDeniedGate}
|
|
195
|
-
* 也为 `true` —— 那时 `deniedBy` 指的是复查那一层,approver 留在结算上,**不是** approver 的拒。
|
|
196
|
-
*/
|
|
197
120
|
export function isHumanSettledGate(g) {
|
|
198
121
|
const k = g?.settlement?.kind;
|
|
199
122
|
return k === 'human_allowed' || k === 'human_refused';
|
|
200
123
|
}
|
|
201
|
-
/**
|
|
202
|
-
* **编译期对账钉**(不出公面):sdk 的 `GateOutcome` 必须能赋给本视图 —— 上游给记录加位/改形时,
|
|
203
|
-
* 这一行是本包第一个红的地方。
|
|
204
|
-
*
|
|
205
|
-
* 🔴 反向**刻意不钉**(本视图不必能赋给 sdk 形):本视图按开集放宽了三处词表
|
|
206
|
-
* (`deniedBy` / `settlement.kind` / `origin`),那是**故意比铸点宽**(窄读域只许等于或宽于铸点域,
|
|
207
|
-
* B-025 的定谳);钉反向会把这条纪律反过来判成错。
|
|
208
|
-
*/
|
|
209
124
|
const _gateOutcomeShapePin = (w) => w;
|
|
210
125
|
void _gateOutcomeShapePin;
|
package/dist/gateVocabulary.d.ts
CHANGED
|
@@ -1,123 +1,9 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* src/gateVocabulary.ts — 门词汇两张表的**唯一措辞铸点**:`DeniedBy`(谁拒的,九词)与
|
|
3
|
-
* `AskOrigin`(谁问的,十一词)(0.63.0;sdk 8.8.0 / core 7.9.0 / L-162 ③)。
|
|
4
|
-
*
|
|
5
|
-
* ── 为什么措辞归包 ─────────────────────────────────────────────────────────────────────────
|
|
6
|
-
* 这两个词到用户面前时都要变成一句人话。让三端各写一份,同一次拒在 TUI / web / desktop 上会
|
|
7
|
-
* 是三句不同的话,而其中至少两句迟早会落后于上游加词。表与句子收在这里,加词只有一处要改,
|
|
8
|
-
* 而门会在上游加词的当天先红。
|
|
9
|
-
*
|
|
10
|
-
* ── 🔴 两张表的**开闭各按其出处**,兜底句因此必须分家 ──────────────────────────────────────
|
|
11
|
-
* 这不是风格问题,是两条不同的事实:
|
|
12
|
-
* · **`DeniedBy` 在这条 wire 上是真闭集**。引擎的 `screenGateOutcome` 把「`deniedBy` 出闭集」
|
|
13
|
-
* 列为记录**缺陷**,而 server 对有缺陷的门记录是**整条不上帧**(report + withhold)⇒ 一个
|
|
14
|
-
* 词表外的 `deniedBy` **结构上到不了消费端**,它到达的形式是 `gate` **整键缺席**。所以本包
|
|
15
|
-
* 真读到一个表外词时,唯一诚实的话是「这条门记录本不该长这样」——那是记录缺陷的信号,
|
|
16
|
-
* 不是「有个新词」。sdk 的型面因此也没有 `(string & {})` 逃生口。
|
|
17
|
-
* · **`AskOrigin` 是真开集**。`tool_approval` 帧上的 `origin` 在 server 侧**只判非空串、不判
|
|
18
|
-
* 成员** ⇒ core 加一个新词的当天,一个**合法**的帧就会带着表外值到达消费端。所以表外词的
|
|
19
|
-
* 那一句必须说「这个词比这一端新」,把它渲成坏记录会让用户去查一个根本不存在的故障。
|
|
20
|
-
* ⇒ 两句兜底逐字不同,门里有一条钉守着它们不被合并成一句。
|
|
21
|
-
*
|
|
22
|
-
* ── 词表是**抄件**不是意见 ────────────────────────────────────────────────────────────────
|
|
23
|
-
* 两张表逐词逐序抄自 sdk 的联合声明,门 `run-gate-vocabulary-test.mjs` 从实装 `.d.ts` 里解出成员
|
|
24
|
-
* 与本表**双向等值**对账(缺一词红、多一词红、顺序不同也红)。改它必须同 commit 附上游坐标。
|
|
25
|
-
*/
|
|
26
1
|
import type { DeniedBy } from '@sema-agent/sdk';
|
|
27
|
-
/**
|
|
28
|
-
* **谁拒的** —— 判决是这次 deny 的那一**层**(sdk `DeniedBy` / core `DENIED_BY_VALUES`,
|
|
29
|
-
* 7.6.0 起八词、**7.9.0 起九词**)。顺序逐字同源。
|
|
30
|
-
* 🔴 真闭集(见模块顶注):表外词到不了消费端,所以这张表**没有**逃生口。
|
|
31
|
-
|
|
32
|
-
* 🔴 形制:`Object.freeze` 的数组,**不是**只在类型面只读的 `readonly T[]` —— 后者一行 `.splice()`
|
|
33
|
-
* 就能改,而公面消费者拿到的正是这个实例(本仓已定谳的病形,同 `RESUME_RETRY_LATER_CODES`)。
|
|
34
|
-
*/
|
|
35
2
|
export declare const GATE_DENIED_BY_WORDS: readonly DeniedBy[];
|
|
36
|
-
/**
|
|
37
|
-
* 一个 `deniedBy` 词 → 一句人话。**唯一铸点**(三端共用;端零自拼)。
|
|
38
|
-
*
|
|
39
|
-
* 🔴 表外词的那一句说的是「**这条门记录本不该长这样**」,不是「有个新词」——理由见模块顶注
|
|
40
|
-
* (出集的记录在 server 侧整条不上帧,所以真读到一个表外词意味着记录有缺陷)。原样带上那个
|
|
41
|
-
* 词:运维要拿它去问上游。
|
|
42
|
-
* 🔴 非串 / 空串同样走兜底 —— 一个读不出的层名不是「没有层」(deny 臂在类型上就必须点名一层)。
|
|
43
|
-
* 🔴 **查表用 `Object.hasOwn`,不用 `in` / 裸下标**(异源对抗复审 [medium]):`Object.freeze` 冻的是
|
|
44
|
-
* **自有属性**,原型链原样还在 ⇒ 一个来自 wire 的 `constructor` / `toString` / `__proto__` 会命中
|
|
45
|
-
* `Object.prototype` 上的成员,措辞口于是返回一个**函数**而不是一句话:呈现调用当场坏掉,而且
|
|
46
|
-
* 它绕过了上下两条精心分家的兜底。这是本仓已定谳的病形(wire 键控的表一律用 Map 或自有属性判据)。
|
|
47
|
-
*/
|
|
48
3
|
export declare function gateDeniedByDetail(deniedBy: unknown): string;
|
|
49
|
-
/**
|
|
50
|
-
* 一只 ask 的**出身** —— 谁问的(sdk `AskOrigin` / core `ASK_ORIGINS`;7.5.x 及以前八词、
|
|
51
|
-
* 7.6.0 十词、**7.9.0 起十一词**)。顺序逐字同源。
|
|
52
|
-
* 🔴 真开集(见模块顶注):server 只判非空串,新词会带着合法的帧到达。
|
|
53
|
-
|
|
54
|
-
* 🔴 形制:`Object.freeze` 的数组,**不是**只在类型面只读的 `readonly T[]` —— 后者一行 `.splice()`
|
|
55
|
-
* 就能改,而公面消费者拿到的正是这个实例(本仓已定谳的病形,同 `RESUME_RETRY_LATER_CODES`)。
|
|
56
|
-
*/
|
|
57
4
|
export declare const ASK_ORIGIN_WORDS: readonly string[];
|
|
58
|
-
/**
|
|
59
|
-
* 一个 `origin` 词 → 一句人话。**唯一铸点**(三端共用;端零自拼)。
|
|
60
|
-
*
|
|
61
|
-
* @param origin 帧/行上的 `origin` 词(开集;非串/空串走兜底)
|
|
62
|
-
* @param message 🆕 **0.65.0 additive 第二参**(B-080③):引擎在这只调用上给的散文
|
|
63
|
-
* (`PermissionResult.message` / 卡上的同名位)。**只在 {@link ORIGIN_PREFERS_ENGINE_MESSAGE}
|
|
64
|
-
* 的词上优先**,其余词一字不读 —— 理由写在那张表的头注。缺席 / 非串 / 空白串 ⇒ 行为与本参
|
|
65
|
-
* 出现之前**逐字节相同**(表里那一句中性定义句)。
|
|
66
|
-
*
|
|
67
|
-
* 🔴 表外词的那一句说的是「**这个词比这一端新**」,不是「坏记录」——理由见模块顶注(server 只判
|
|
68
|
-
* 非空串,core 加词当天合法的帧就带着它到达)。原样带上那个词,并明说这次仍然是在问人:
|
|
69
|
-
* 读不懂出身**不改变**这只 ask 要人回答这件事。
|
|
70
|
-
* 🔴 非串 / 空串:同走兜底但词位渲 `(none)` —— 「没报出身」与「报了一个读不懂的出身」在这一句里
|
|
71
|
-
* 不必分家(两者对用户的下一步相同:照常回答这只 ask),但都**不许**被折成十一词里的任何一个。
|
|
72
|
-
* 🔴 `message` 是引擎/工具产文,**只渲不回喂模型**(与卡上其余散文位同一条纪律);本铸点
|
|
73
|
-
* **不截断不改写**它 —— 显示封顶归端(它才知道自己的行宽)。
|
|
74
|
-
*/
|
|
75
5
|
export declare function askOriginDetail(origin: unknown, message?: unknown): string;
|
|
76
|
-
/**
|
|
77
|
-
* 🔴 **`AskOrigin` 那条型面钉 0.67.0 退役,理由要写清**(如实登记,不是偷偷删):
|
|
78
|
-
* 它此前写作 `const _askOriginWordsPin: readonly AskOrigin[] = ASK_ORIGIN_WORDS`,而
|
|
79
|
-
* `AskOrigin = SdkAskOrigin` 的型面带 `(string & {})` 逃生口 ⇒ **任何字符串都满足它**,这条钉
|
|
80
|
-
* 在 core 7.14.0 把 `unresolvable` 换成 `ancestor_marked` 的当天**一声不响**(亲验:换词后
|
|
81
|
-
* `npx tsc --noEmit` 0 红)。一条恒真的钉不是钉,是[gates-fail-in-their-own-ways] 的「无契约表」那一档。
|
|
82
|
-
* ⇒ 判据整只移交给 `run-gate-vocabulary-test.mjs` 的 **B 段**:本表对 **core `ask-origin.js` 的
|
|
83
|
-
* `ASK_ORIGINS` 真字节**双向等值(词表属主是 core,sdk 只是它的镜像且**今天滞后一代**)。
|
|
84
|
-
* 那条对账拿的是运行期真字节,逃生口影响不到它。
|
|
85
|
-
*/
|
|
86
|
-
/**
|
|
87
|
-
* **规则店读不出来是哪一头**(core `RULE_STORE_UNREADABLE_KINDS`;逐词逐序镜像,7.14.0 起两词)。
|
|
88
|
-
* · `store` —— 接上的那个店**读不出来**(读失败 / 超时 / 适配器抛了);
|
|
89
|
-
* · `call` —— 店读到了,但**这一次调用**读不出来(收紧 lexer 的 `unreadable`:展开里有读不懂的词 /
|
|
90
|
-
* 引号未闭合 / 语法错 —— 引擎自己那句话在 ask 的 `message` 上)。
|
|
91
|
-
*
|
|
92
|
-
* 🔴 **真闭集**(与 `AskOrigin` 的开集刻意不同):core 在**唯一 stamp 点**把政策自报的值剥掉之后
|
|
93
|
-
* 才盖章(7.14.0 合同逐字「A policy's self-declared value is removed at the stamp」)⇒ 表外值
|
|
94
|
-
* 结构上到不了消费端。
|
|
95
|
-
* 🔴 形制:`Object.freeze` 的数组,理由同上面两张表。
|
|
96
|
-
*/
|
|
97
6
|
export declare const RULE_STORE_UNREADABLE_KINDS: readonly ["store", "call"];
|
|
98
|
-
/** {@link RULE_STORE_UNREADABLE_KINDS} 的成员型(端的型面改派生,不再手抄两词)。 */
|
|
99
7
|
export type RuleStoreUnreadableKind = (typeof RULE_STORE_UNREADABLE_KINDS)[number];
|
|
100
|
-
/** 这个值是不是 {@link RULE_STORE_UNREADABLE_KINDS} 的成员(core `isRuleStoreUnreadable` 的镜像)。
|
|
101
|
-
* 🔴 **唯一判据口**:窄读器与端都调它,谁都不许再抄一份字面量(B-025 的根因就是手抄)。
|
|
102
|
-
* 🔴 0.68.0 / L-245:改成**型守卫** —— 端用它一判就拿到闭集成员型,下一步喂措辞铸点时不必 cast。 */
|
|
103
8
|
export declare function isRuleStoreUnreadableKind(v: unknown): v is RuleStoreUnreadableKind;
|
|
104
|
-
/**
|
|
105
|
-
* 一个 `ruleStoreUnreadable` 词 → 一句人话。**唯一铸点**(三端共用;端零自拼)。
|
|
106
|
-
*
|
|
107
|
-
* 🔴 **与 {@link askOriginDetail} 并列不互替**:那一句答「谁问的」(出身),本句答「读不出来的是
|
|
108
|
-
* **哪一头**」。`rule_store_unavailable` 那只 ask 上两句都该在,渲一句丢一句就等于把人指去
|
|
109
|
-
* 错的地方 —— 而这正是 core 把这一位单独铸出来的理由。
|
|
110
|
-
* 🔴 **查表用 `Object.hasOwn`**(冻结不移除原型;理由与本文件另两个铸点逐字相同)。
|
|
111
|
-
*
|
|
112
|
-
* ── 🔴 0.68.0 / L-245:入参从 `unknown` 收窄成**闭集成员型** ─────────────────────────────────
|
|
113
|
-
* 修前这里同样留着一句「is **a word newer than this client**」的兜底,而它**结构上走不到**:
|
|
114
|
-
* 唯一到达本铸点的路是卡口的窄读器(`toolApprovalWire` 的 `readRuleStoreUnreadable`),那一层已经
|
|
115
|
-
* 按闭集把表外值判成了缺席;而这一面在上游是**真闭集**(core 在唯一 stamp 点把政策自报值剥掉之后
|
|
116
|
-
* 才盖章)⇒ 一个「比这一端新」的值根本到不了。
|
|
117
|
-
* ⚠️ 与**隔壁那一句**({@link askOriginDetail})的处置刻意相反,而两边都是对的:`AskOrigin` 在 wire
|
|
118
|
-
* 上是**开集**(server 只判非空串,core 加词当天合法的帧就带着它到达)⇒ 那一句兜底**真的会被
|
|
119
|
-
* 走到**,必须留。一套面一条规矩:闭集则收窄 + 编译期围栏,开集则保留兜底。
|
|
120
|
-
* 🔴 渲染路径不许抛,所以 never 分支照样交一句话;只是它现在说的是「这个词不在本端的闭集里」
|
|
121
|
-
* (一句真话),而不再冒充「上游比我新」。
|
|
122
|
-
*/
|
|
123
9
|
export declare function ruleStoreUnreadableDetail(kind: RuleStoreUnreadableKind): string;
|