@sema-agent/client-core 0.77.1 → 0.78.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 +42 -1
- package/README.md +6 -5
- 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 +3 -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 +23 -371
- package/dist/hitl/persistedRulesWire.js +62 -329
- 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 +0 -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 +1 -249
- package/dist/request/taskRequest.js +20 -498
- 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 +6 -67
- package/dist/subagent/engineTaskHandleWire.js +0 -126
- 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 +78 -5
- package/package.json +3 -3
|
@@ -1,159 +1,23 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* src/resumeRefusalCopy.ts — resume 族**拒绝文案的三端单一铸点**(L-102 下半场,0.58.0)。
|
|
3
|
-
*
|
|
4
|
-
* ── 这一件上收的是什么 ──────────────────────────────────────────────────────────────────────
|
|
5
|
-
* 0.57.0 已经把 L-102 的**事实读数**上收了({@link resumeRetryLaterFromError}:命中哪个码、
|
|
6
|
-
* server 给没给窗、等一会儿有没有用)。留在壳里的另一半是**人话** —— cli 1.0.x 的
|
|
7
|
-
* `src/sema/resumeRefusalCopy.ts` 自铸了一份判型 + 三句 `·` 分段文案,而 web-client / desktop
|
|
8
|
-
* 各自要么没有、要么将来会再抄一份。三端各抄一份文案 = 同一次拒绝在三个端上说三句不一样的话,
|
|
9
|
-
* 而这三句话回答的是**同一个安全问题**:「这次拒绝有没有消费掉我的决定 / 这张卡还能不能再决」。
|
|
10
|
-
* ⇒ 文案与判型同属**判定归包、呈现归端**里的「判定」那一半,本模块是它的单一铸点。
|
|
11
|
-
*
|
|
12
|
-
* ── 与 0.57.0 §21 那一口的分工(两个闭集刻意分家)──────────────────────────────────────────
|
|
13
|
-
* · {@link RESUME_RETRY_LATER_CODES}(engineErrorCodes.ts,0.57.0)闭的是「**server 在哪些码上铸
|
|
14
|
-
* `retryAfterSec`**」——它回答**能不能等**;
|
|
15
|
-
* · {@link RESUME_REFUSAL_CODES}(本文件)闭的是「**哪些 resume 拒绝有人话可补**」——它回答
|
|
16
|
-
* **该对人说什么**。
|
|
17
|
-
* 两集**交于** `resume.preflight_rejected` 一码、**各有**一个独占成员
|
|
18
|
-
* (`resume.usage_window_exhausted` 只在前者 / `resume.placement_mismatch` 只在后者),所以它们
|
|
19
|
-
* 不是同一张表的两个名字。🔴 **本模块不复制判定**:`preflight_rejected` 的窗与可等性一律**转调**
|
|
20
|
-
* `resumeRetryLaterFromError`,本文件里没有第二个 `retryAfterSec` 窄读器
|
|
21
|
-
* ([paired-mechanisms-must-share-premise]:两处各自判必然在某一格上分叉)。
|
|
22
|
-
*
|
|
23
|
-
* ── `retryAfterSec` 的窄读域比 cli 1.0.x 现行的更窄(端提货时要知道的差分)──────────────────
|
|
24
|
-
* cli 那份自铸读器收的是「有限数 ∧ ≥0」;本口沿用 §21 的域 =「**整数 ∧ ≥1**」,坏值一律降缺席:
|
|
25
|
-
* · server 的铸键逐字是「ms → 秒**向上取整**、**下限 1**」⇒ 真供给里不存在 0 / 负数 / 小数;
|
|
26
|
-
* · 放行 `0` 就是对端说「立刻重试」,而 resume 是 AT-MOST-ONCE 的**有副作用**动作(叫醒 = 真跑
|
|
27
|
-
* 一轮)—— 一个 0 会把「等一会儿」变成热循环;
|
|
28
|
-
* · 放行小数会让端渲出「等 0.4 秒」这种上游从未说过的量。
|
|
29
|
-
* ⇒ 壳提货后在这三形上的**行为会变**(从「渲一个 0 秒等待」变成「不渲等待行」),这是**修好**
|
|
30
|
-
* 不是回归([verdict-must-accept-stronger-form])。
|
|
31
|
-
*
|
|
32
|
-
* ── 开集纪律(与 cli 那份逐字同律)────────────────────────────────────────────────────────
|
|
33
|
-
* 🔴 判型是**闭集**的(只认下面两个码),消费面是**开集**的:不认识的码一律 `null` ⇒ 端一个字
|
|
34
|
-
* 都不补 ⇒ 机器可读那一行(`API Error: <status> <errorCode> · <msg>`)原样上屏。
|
|
35
|
-
* **绝不按前缀/子串猜一族码的语义** —— `resume.` 前缀下同时住着「等就好」「换参数」「没救了」
|
|
36
|
-
* 三种处置。
|
|
37
|
-
* 🔴 文案**不复述** server 的 message(那一行已经在屏上了),只补 message 里没有的那件事。
|
|
38
|
-
* 🔴 文案里**不铸等待的秒数**:那一行由端用 {@link ResumeRefusalDetail.retryAfterSec} 单独渲
|
|
39
|
-
* (cli 的 `retryAfterHint` 是那一位的唯一取值口),在这里再说一遍就是同一个数字上屏两遍。
|
|
40
|
-
*/
|
|
41
1
|
import { RESUME_CONTEXT_UNAVAILABLE } from './engineErrorCodes.js';
|
|
42
|
-
/**
|
|
43
|
-
* 本模块认识的 resume 拒绝码(**闭集**)—— 「有人话可补」的那两个。
|
|
44
|
-
*
|
|
45
|
-
* 🔴 **冻结数组,不是 `ReadonlySet`**(与 {@link RESUME_RETRY_LATER_CODES} 同一条已定谳的病形):
|
|
46
|
-
* `ReadonlySet` 只在类型面只读,运行期是一只普通 `Set`,而判定查的就是这个实例 —— 公面上任何
|
|
47
|
-
* JS 消费者一次 `.add('resume.evicted')` 就能让一条「重开吧」的拒绝挂上「你的决定没被消费」
|
|
48
|
-
* 这句安全声明。冻结数组在运行期真的改不动(ESM 恒 strict:`push` / 下标赋值直接抛)。
|
|
49
|
-
* 🔴 新增成员必须**同批**补文案 + 判据,不许靠前缀放宽。
|
|
50
|
-
*/
|
|
51
2
|
export declare const RESUME_REFUSAL_CODES: readonly string[];
|
|
52
|
-
/** {@link resumeRefusalFromError} 的结构化读数。 */
|
|
53
3
|
export interface ResumeRefusalDetail {
|
|
54
|
-
/** 命中的那一个码({@link RESUME_REFUSAL_CODES} 的成员之一)。 */
|
|
55
4
|
code: string;
|
|
56
|
-
/**
|
|
57
|
-
* server 给的**等待秒数**(整数 ∧ ≥1;窄读域与 §21 同律,见模块顶注)。
|
|
58
|
-
* 🔴 **缺席 = 服务端没给窗**,不是 0、不是「立刻」——绝不渲一个编出来的倒计时
|
|
59
|
-
* ([honest-absence-not-fabricated-zero])。`resume.placement_mismatch` 上**恒缺席**
|
|
60
|
-
* (server 只在时间性二码上铸这一位);`resume.preflight_rejected` 上按 server 供给。
|
|
61
|
-
*/
|
|
62
5
|
retryAfterSec?: number;
|
|
63
|
-
/**
|
|
64
|
-
* **等一会儿再赎有没有用**(处置位;文案据它选第三句)。
|
|
65
|
-
*
|
|
66
|
-
* 🔴 **两个码上的 `false` 是两种「不」,别合并读**:
|
|
67
|
-
* · `resume.preflight_rejected` 的 `false` = **不可判**(转调 {@link resumeRetryLaterFromError}
|
|
68
|
-
* 的同名位:core 侧那条 `terminal` 臂与缺省 `retry_later` 臂的判别位只在 message 散文里,
|
|
69
|
-
* 本包不按文案分臂 ⇒ 只认「server 真给了窗」这条正向证据);
|
|
70
|
-
* · `resume.placement_mismatch` 的 `false` = **等没有用**(出路是换参数不是等时间,见该码顶注)。
|
|
71
|
-
* 两者在文案上落到**不同的第三句**,所以消费端不必自己再分。
|
|
72
|
-
*/
|
|
73
6
|
waitable: boolean;
|
|
74
7
|
}
|
|
75
|
-
/**
|
|
76
|
-
* 被 catch 的错误 → resume 拒绝读数;不是这两个码 ⇒ `null`(绝不误吃别的 4xx)。
|
|
77
|
-
*
|
|
78
|
-
* 🔴 **duck-typed 不 `instanceof`**:三端注入面可能是宿主的裸 fetch、desktop 的 IPC 转投、web 跨
|
|
79
|
-
* bundle 的 plain object(跨 bundle 同名类是两个类),这些形上 `instanceof` 一律为假而
|
|
80
|
-
* `errorCode` 恒在。键位**只认 `errorCode`**([2055] 死键纪律,退役 `code` 槽不做兼容)。
|
|
81
|
-
* 🔴 **判据只有 `errorCode`,不看 HTTP 数字**(与 §21 同口径):`resume.*` 那一族成员全是 409,
|
|
82
|
-
* 按数字分支等于把几种不同处置压成一种。
|
|
83
|
-
* 🔴 **`preflight_rejected` 的窗与可等性全部转调 §21 那一口**,本文件不复制判定。
|
|
84
|
-
*/
|
|
85
8
|
export declare function resumeRefusalFromError(err: unknown): ResumeRefusalDetail | null;
|
|
86
|
-
/**
|
|
87
|
-
* 结构化读数 → 人话补充行(`·` 分段,与端上 quota / scenario 两个兄弟同形)。
|
|
88
|
-
*
|
|
89
|
-
* 三句的分工固定:①**发生了什么**(用户看得懂的那句)· ②**这次拒绝有没有消费掉你的决定**
|
|
90
|
-
* (安全声明,两条臂都成立时才敢说)· ③**接下来怎么办 / 还能不能再决**。
|
|
91
|
-
*
|
|
92
|
-
* 🔴 第三句由 {@link ResumeRefusalDetail.waitable} 选,**不由 message 文本选**:按上游散文分支
|
|
93
|
-
* 正是「上游改一个词、壳的判定静默空转」的形(wire 锚契约门要挡的就是它)。
|
|
94
|
-
* 🔴 `preflight_rejected` 且 `waitable === false` 时说的是**两条臂都为真**的那句;`waitable === true`
|
|
95
|
-
* 时 server 真给了窗 ——那是 `retry_later` 臂的**充分证据**(core 的 `terminal` 臂抛的
|
|
96
|
-
* `CheckpointError` 一个 detail 都不带,窗结构上到不了客户端)⇒ 可以放心说「障碍清掉之后这个
|
|
97
|
-
* token 还能再赎」。
|
|
98
|
-
*
|
|
99
|
-
* 🔴 **三句每一句都必须自足**(0.60.0 修;上游候包件 ①):无窗那一句此前写的是「The engine line
|
|
100
|
-
* above says whether this token can still be redeemed」—— 它把答案**外包给了屏上另一行**,而
|
|
101
|
-
* 那一行只有 **turn 级**报错路径才有。同一份文案在**决断路径**(审批卡 decide 的 409)上也照发,
|
|
102
|
-
* 那条路上引擎原文按凭证纪律**根本不上屏** ⇒ 用户读到的是一句指向不存在的东西的指路话。
|
|
103
|
-
* ⇒ 措辞改成只陈述**本读面自己知道的事实**(「引擎没给窗,所以这次拒绝没说它还能不能再赎」),
|
|
104
|
-
* 在两条路上都为真。**不是**把那句话删掉换成沉默:「不知道」本身就是用户要的答案之一
|
|
105
|
-
* ([honest-absence-not-fabricated-zero])。
|
|
106
|
-
*/
|
|
107
9
|
export declare function resumeRefusalContent(detail: ResumeRefusalDetail): string;
|
|
108
|
-
/** reopen 族的结构化读数:`reason` = 码去掉 `resume.` 前缀(端按它分臂渲原因);`retriable` 恒 true(族的定义)。 */
|
|
109
10
|
export interface ResumeReopenDetail {
|
|
110
11
|
code: string;
|
|
111
12
|
reason: 'env_failed' | 'tool_unavailable' | 'tool_contract_mismatch';
|
|
112
13
|
retriable: true;
|
|
113
14
|
}
|
|
114
|
-
/**
|
|
115
|
-
* 只认 `errorCode`(退役 `code` 槽不做兼容,[2055] 死键纪律);同族别码 / 非对象 ⇒ null。
|
|
116
|
-
* 🔴 **还必须 `retriable === true`**(异源复审实抓):server 只在 store **复核**过 checkpoint 真重开之后才铸
|
|
117
|
-
* `retriable: true`(resume-legs.ts `checkpointReopened`,头注逐字「never inferred from the code alone」);同一个码也可能
|
|
118
|
-
* 出现在 reopen 本身失败、checkpoint 已 resolved 的终局失败上(那时没有 `retriable`)。凭码就说「卡仍 pending、决定没被消费」
|
|
119
|
-
* = 替 server 编一句安全声明。⇒ 缺席 / false ⇒ null(端走通用拒绝面,不渲再 park 文案)。
|
|
120
|
-
*/
|
|
121
15
|
export declare function resumeReopenFromError(err: unknown): ResumeReopenDetail | null;
|
|
122
|
-
/**
|
|
123
|
-
* 三句 ` · ` 分段(与 quota / scenario / refusal 三个兄弟同形):原因 / 安全声明 / 出路。
|
|
124
|
-
* 🔴 零内部车道词(DS-04):只说用户能做的事;不复述 server 的 message(那一行已在屏上)。
|
|
125
|
-
*/
|
|
126
16
|
export declare function resumeReopenContent(detail: ResumeReopenDetail): string;
|
|
127
|
-
/** {@link resumeContextUnavailableFromError} 的结构化读数。 */
|
|
128
17
|
export interface ResumeContextUnavailableDetail {
|
|
129
|
-
/** 恒为 {@link RESUME_CONTEXT_UNAVAILABLE}(留字段是为了与本文件其它读数同形,消费端可按 `code` 分派)。 */
|
|
130
18
|
code: typeof RESUME_CONTEXT_UNAVAILABLE;
|
|
131
|
-
/**
|
|
132
|
-
* 该部署当下的会话保留时长(整数秒;server 逐字 = `REAP_RUN_STALE_SEC` 真值,与回收器用的是同一个值)。
|
|
133
|
-
* 🔴 窄读域 = 整数 ∧ ≥1(与 `retryAfterSec` 同律);坏值**降缺席**不降 0。
|
|
134
|
-
* 🔴 缺席 = **没读到**:老 server(<7.80.1)不铸这一位,**sdk 9.6.0 也还没把它带到错误对象上**
|
|
135
|
-
* (`ConflictError` 只带 activeTaskId 三件)⇒ 经 sdk 的端今天恒缺席;这不是「保留时长为零」,
|
|
136
|
-
* 端渲「部署保留时长」那一行时缺席就**不渲**([honest-absence-not-fabricated-zero])。
|
|
137
|
-
*/
|
|
138
19
|
staleAfterSec?: number;
|
|
139
|
-
/** 这条 run 的 id(体上既有键;非空串才在场)—— 出路①「自己恢复这条 run」用的句柄。缺席同上(sdk 未带)。 */
|
|
140
20
|
runId?: string;
|
|
141
21
|
}
|
|
142
|
-
/**
|
|
143
|
-
* 被 catch 的错误 → 「批准无处投递:上下文当前不可用」读数;不是本码 ⇒ `null`(绝不误吃别的 `conflict.*`)。
|
|
144
|
-
*
|
|
145
|
-
* 🔴 duck-typed 不 `instanceof`、键位只认 `errorCode`(与 {@link resumeRefusalFromError} 同律;退役 `code` 槽不做兼容)。
|
|
146
|
-
* 🔴 **本码不进两个 resume 闭集**:server 在上下文被回收 **或读取失败** 时都发它,能不能等 wire 上没有判别位 ⇒ 不进「可等」集;
|
|
147
|
-
* 也不是「换参数重来」⇒ 不进 refusal 集;出路见文案第三句(按 `runId` 在场与否)。
|
|
148
|
-
* 🔴 `staleAfterSec` / `runId` 都按结构读:server 铸在体上、sdk 今天没搬上来 ⇒ 缺席;sdk 出键当天自动填满,本包零改动。
|
|
149
|
-
*/
|
|
150
22
|
export declare function resumeContextUnavailableFromError(err: unknown): ResumeContextUnavailableDetail | null;
|
|
151
|
-
/**
|
|
152
|
-
* 读数 → 人话三句(`·` 分段,与 {@link resumeRefusalContent} 同形):①发生了什么 · ②你的决定没被消费 · ③出路。
|
|
153
|
-
* 🔴 **只凭码不推断原因**(异源对抗复审实抓):server 在「上下文被回收」与「上下文读取失败(如存储故障)」两种情况下
|
|
154
|
-
* 都返回本码,wire 上没有判别位 ⇒ 第一句只说「当前没有可用的上下文来继续它」,不说「等得太久 / 已被回收」。
|
|
155
|
-
* 🔴 **调大保留时长救不回这一次**(上下文已删就是删了),它只能避免以后再发生 ⇒ 第三句按 `runId` 在场与否给恢复指引,
|
|
156
|
-
* 保留时长只作预防句。零内部车道词;{@link ResumeContextUnavailableDetail.staleAfterSec} 在场时第三句**带原数**
|
|
157
|
-
* (0.72.9 CC-45:此前留给端渲而端没渲 ⇒ 有数必渲),缺席就不渲、不编。
|
|
158
|
-
*/
|
|
159
23
|
export declare function resumeContextUnavailableContent(d: ResumeContextUnavailableDetail): string;
|
|
@@ -1,68 +1,9 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* src/resumeRefusalCopy.ts — resume 族**拒绝文案的三端单一铸点**(L-102 下半场,0.58.0)。
|
|
3
|
-
*
|
|
4
|
-
* ── 这一件上收的是什么 ──────────────────────────────────────────────────────────────────────
|
|
5
|
-
* 0.57.0 已经把 L-102 的**事实读数**上收了({@link resumeRetryLaterFromError}:命中哪个码、
|
|
6
|
-
* server 给没给窗、等一会儿有没有用)。留在壳里的另一半是**人话** —— cli 1.0.x 的
|
|
7
|
-
* `src/sema/resumeRefusalCopy.ts` 自铸了一份判型 + 三句 `·` 分段文案,而 web-client / desktop
|
|
8
|
-
* 各自要么没有、要么将来会再抄一份。三端各抄一份文案 = 同一次拒绝在三个端上说三句不一样的话,
|
|
9
|
-
* 而这三句话回答的是**同一个安全问题**:「这次拒绝有没有消费掉我的决定 / 这张卡还能不能再决」。
|
|
10
|
-
* ⇒ 文案与判型同属**判定归包、呈现归端**里的「判定」那一半,本模块是它的单一铸点。
|
|
11
|
-
*
|
|
12
|
-
* ── 与 0.57.0 §21 那一口的分工(两个闭集刻意分家)──────────────────────────────────────────
|
|
13
|
-
* · {@link RESUME_RETRY_LATER_CODES}(engineErrorCodes.ts,0.57.0)闭的是「**server 在哪些码上铸
|
|
14
|
-
* `retryAfterSec`**」——它回答**能不能等**;
|
|
15
|
-
* · {@link RESUME_REFUSAL_CODES}(本文件)闭的是「**哪些 resume 拒绝有人话可补**」——它回答
|
|
16
|
-
* **该对人说什么**。
|
|
17
|
-
* 两集**交于** `resume.preflight_rejected` 一码、**各有**一个独占成员
|
|
18
|
-
* (`resume.usage_window_exhausted` 只在前者 / `resume.placement_mismatch` 只在后者),所以它们
|
|
19
|
-
* 不是同一张表的两个名字。🔴 **本模块不复制判定**:`preflight_rejected` 的窗与可等性一律**转调**
|
|
20
|
-
* `resumeRetryLaterFromError`,本文件里没有第二个 `retryAfterSec` 窄读器
|
|
21
|
-
* ([paired-mechanisms-must-share-premise]:两处各自判必然在某一格上分叉)。
|
|
22
|
-
*
|
|
23
|
-
* ── `retryAfterSec` 的窄读域比 cli 1.0.x 现行的更窄(端提货时要知道的差分)──────────────────
|
|
24
|
-
* cli 那份自铸读器收的是「有限数 ∧ ≥0」;本口沿用 §21 的域 =「**整数 ∧ ≥1**」,坏值一律降缺席:
|
|
25
|
-
* · server 的铸键逐字是「ms → 秒**向上取整**、**下限 1**」⇒ 真供给里不存在 0 / 负数 / 小数;
|
|
26
|
-
* · 放行 `0` 就是对端说「立刻重试」,而 resume 是 AT-MOST-ONCE 的**有副作用**动作(叫醒 = 真跑
|
|
27
|
-
* 一轮)—— 一个 0 会把「等一会儿」变成热循环;
|
|
28
|
-
* · 放行小数会让端渲出「等 0.4 秒」这种上游从未说过的量。
|
|
29
|
-
* ⇒ 壳提货后在这三形上的**行为会变**(从「渲一个 0 秒等待」变成「不渲等待行」),这是**修好**
|
|
30
|
-
* 不是回归([verdict-must-accept-stronger-form])。
|
|
31
|
-
*
|
|
32
|
-
* ── 开集纪律(与 cli 那份逐字同律)────────────────────────────────────────────────────────
|
|
33
|
-
* 🔴 判型是**闭集**的(只认下面两个码),消费面是**开集**的:不认识的码一律 `null` ⇒ 端一个字
|
|
34
|
-
* 都不补 ⇒ 机器可读那一行(`API Error: <status> <errorCode> · <msg>`)原样上屏。
|
|
35
|
-
* **绝不按前缀/子串猜一族码的语义** —— `resume.` 前缀下同时住着「等就好」「换参数」「没救了」
|
|
36
|
-
* 三种处置。
|
|
37
|
-
* 🔴 文案**不复述** server 的 message(那一行已经在屏上了),只补 message 里没有的那件事。
|
|
38
|
-
* 🔴 文案里**不铸等待的秒数**:那一行由端用 {@link ResumeRefusalDetail.retryAfterSec} 单独渲
|
|
39
|
-
* (cli 的 `retryAfterHint` 是那一位的唯一取值口),在这里再说一遍就是同一个数字上屏两遍。
|
|
40
|
-
*/
|
|
41
1
|
import { RESUME_CONTEXT_UNAVAILABLE, RESUME_PLACEMENT_MISMATCH, RESUME_PREFLIGHT_REJECTED, RESUME_REOPEN_CODES, RESUME_ENV_FAILED, RESUME_TOOL_UNAVAILABLE, } from './engineErrorCodes.js';
|
|
42
2
|
import { resumeRetryLaterFromError } from './wireErrorTriage.js';
|
|
43
|
-
/**
|
|
44
|
-
* 本模块认识的 resume 拒绝码(**闭集**)—— 「有人话可补」的那两个。
|
|
45
|
-
*
|
|
46
|
-
* 🔴 **冻结数组,不是 `ReadonlySet`**(与 {@link RESUME_RETRY_LATER_CODES} 同一条已定谳的病形):
|
|
47
|
-
* `ReadonlySet` 只在类型面只读,运行期是一只普通 `Set`,而判定查的就是这个实例 —— 公面上任何
|
|
48
|
-
* JS 消费者一次 `.add('resume.evicted')` 就能让一条「重开吧」的拒绝挂上「你的决定没被消费」
|
|
49
|
-
* 这句安全声明。冻结数组在运行期真的改不动(ESM 恒 strict:`push` / 下标赋值直接抛)。
|
|
50
|
-
* 🔴 新增成员必须**同批**补文案 + 判据,不许靠前缀放宽。
|
|
51
|
-
*/
|
|
52
3
|
export const RESUME_REFUSAL_CODES = Object.freeze([
|
|
53
4
|
RESUME_PLACEMENT_MISMATCH,
|
|
54
5
|
RESUME_PREFLIGHT_REJECTED,
|
|
55
6
|
]);
|
|
56
|
-
/**
|
|
57
|
-
* 被 catch 的错误 → resume 拒绝读数;不是这两个码 ⇒ `null`(绝不误吃别的 4xx)。
|
|
58
|
-
*
|
|
59
|
-
* 🔴 **duck-typed 不 `instanceof`**:三端注入面可能是宿主的裸 fetch、desktop 的 IPC 转投、web 跨
|
|
60
|
-
* bundle 的 plain object(跨 bundle 同名类是两个类),这些形上 `instanceof` 一律为假而
|
|
61
|
-
* `errorCode` 恒在。键位**只认 `errorCode`**([2055] 死键纪律,退役 `code` 槽不做兼容)。
|
|
62
|
-
* 🔴 **判据只有 `errorCode`,不看 HTTP 数字**(与 §21 同口径):`resume.*` 那一族成员全是 409,
|
|
63
|
-
* 按数字分支等于把几种不同处置压成一种。
|
|
64
|
-
* 🔴 **`preflight_rejected` 的窗与可等性全部转调 §21 那一口**,本文件不复制判定。
|
|
65
|
-
*/
|
|
66
7
|
export function resumeRefusalFromError(err) {
|
|
67
8
|
if (typeof err !== 'object' || err === null)
|
|
68
9
|
return null;
|
|
@@ -70,13 +11,9 @@ export function resumeRefusalFromError(err) {
|
|
|
70
11
|
if (typeof code !== 'string' || !RESUME_REFUSAL_CODES.includes(code))
|
|
71
12
|
return null;
|
|
72
13
|
if (code === RESUME_PLACEMENT_MISMATCH) {
|
|
73
|
-
// 时间性闭集里没有本码,也不该有(见该码顶注):无窗、且等一会儿对它毫无用处。
|
|
74
14
|
return { code, waitable: false };
|
|
75
15
|
}
|
|
76
|
-
// `resume.preflight_rejected` —— 两集的交点,事实读数**只有一个来源**。
|
|
77
16
|
const timed = resumeRetryLaterFromError(err);
|
|
78
|
-
// 🔴 `null` 在今天不可达(本码同在两个闭集里,交点由门双向钉死)。真出现 = 上游把本码移出了
|
|
79
|
-
// 时间性闭集 ⇒ 「有没有窗」这件事**本包不再知道**,按诚实缺席读作不可判,绝不自己再判一次。
|
|
80
17
|
if (timed === null)
|
|
81
18
|
return { code, waitable: false };
|
|
82
19
|
return {
|
|
@@ -85,27 +22,6 @@ export function resumeRefusalFromError(err) {
|
|
|
85
22
|
...(timed.retryAfterSec !== undefined ? { retryAfterSec: timed.retryAfterSec } : {}),
|
|
86
23
|
};
|
|
87
24
|
}
|
|
88
|
-
/**
|
|
89
|
-
* 结构化读数 → 人话补充行(`·` 分段,与端上 quota / scenario 两个兄弟同形)。
|
|
90
|
-
*
|
|
91
|
-
* 三句的分工固定:①**发生了什么**(用户看得懂的那句)· ②**这次拒绝有没有消费掉你的决定**
|
|
92
|
-
* (安全声明,两条臂都成立时才敢说)· ③**接下来怎么办 / 还能不能再决**。
|
|
93
|
-
*
|
|
94
|
-
* 🔴 第三句由 {@link ResumeRefusalDetail.waitable} 选,**不由 message 文本选**:按上游散文分支
|
|
95
|
-
* 正是「上游改一个词、壳的判定静默空转」的形(wire 锚契约门要挡的就是它)。
|
|
96
|
-
* 🔴 `preflight_rejected` 且 `waitable === false` 时说的是**两条臂都为真**的那句;`waitable === true`
|
|
97
|
-
* 时 server 真给了窗 ——那是 `retry_later` 臂的**充分证据**(core 的 `terminal` 臂抛的
|
|
98
|
-
* `CheckpointError` 一个 detail 都不带,窗结构上到不了客户端)⇒ 可以放心说「障碍清掉之后这个
|
|
99
|
-
* token 还能再赎」。
|
|
100
|
-
*
|
|
101
|
-
* 🔴 **三句每一句都必须自足**(0.60.0 修;上游候包件 ①):无窗那一句此前写的是「The engine line
|
|
102
|
-
* above says whether this token can still be redeemed」—— 它把答案**外包给了屏上另一行**,而
|
|
103
|
-
* 那一行只有 **turn 级**报错路径才有。同一份文案在**决断路径**(审批卡 decide 的 409)上也照发,
|
|
104
|
-
* 那条路上引擎原文按凭证纪律**根本不上屏** ⇒ 用户读到的是一句指向不存在的东西的指路话。
|
|
105
|
-
* ⇒ 措辞改成只陈述**本读面自己知道的事实**(「引擎没给窗,所以这次拒绝没说它还能不能再赎」),
|
|
106
|
-
* 在两条路上都为真。**不是**把那句话删掉换成沉默:「不知道」本身就是用户要的答案之一
|
|
107
|
-
* ([honest-absence-not-fabricated-zero])。
|
|
108
|
-
*/
|
|
109
25
|
export function resumeRefusalContent(detail) {
|
|
110
26
|
const parts = [];
|
|
111
27
|
if (detail.code === RESUME_PLACEMENT_MISMATCH) {
|
|
@@ -118,18 +34,10 @@ export function resumeRefusalContent(detail) {
|
|
|
118
34
|
parts.push('The refusal happened before the commit — your decision was not consumed');
|
|
119
35
|
parts.push(detail.waitable
|
|
120
36
|
? 'The engine supplied a wait, so this token stays redeemable once the obstacle clears'
|
|
121
|
-
:
|
|
122
|
-
// 这个 token 还能不能再赎。绝不指向「上面那一行」(决断路径上没有那一行)。
|
|
37
|
+
:
|
|
123
38
|
'The engine supplied no wait, so this refusal does not say whether the token stays redeemable');
|
|
124
39
|
return parts.join(' · ');
|
|
125
40
|
}
|
|
126
|
-
/**
|
|
127
|
-
* 只认 `errorCode`(退役 `code` 槽不做兼容,[2055] 死键纪律);同族别码 / 非对象 ⇒ null。
|
|
128
|
-
* 🔴 **还必须 `retriable === true`**(异源复审实抓):server 只在 store **复核**过 checkpoint 真重开之后才铸
|
|
129
|
-
* `retriable: true`(resume-legs.ts `checkpointReopened`,头注逐字「never inferred from the code alone」);同一个码也可能
|
|
130
|
-
* 出现在 reopen 本身失败、checkpoint 已 resolved 的终局失败上(那时没有 `retriable`)。凭码就说「卡仍 pending、决定没被消费」
|
|
131
|
-
* = 替 server 编一句安全声明。⇒ 缺席 / false ⇒ null(端走通用拒绝面,不渲再 park 文案)。
|
|
132
|
-
*/
|
|
133
41
|
export function resumeReopenFromError(err) {
|
|
134
42
|
if (typeof err !== 'object' || err === null)
|
|
135
43
|
return null;
|
|
@@ -141,10 +49,6 @@ export function resumeReopenFromError(err) {
|
|
|
141
49
|
const reason = code.slice('resume.'.length);
|
|
142
50
|
return { code, reason, retriable: true };
|
|
143
51
|
}
|
|
144
|
-
/**
|
|
145
|
-
* 三句 ` · ` 分段(与 quota / scenario / refusal 三个兄弟同形):原因 / 安全声明 / 出路。
|
|
146
|
-
* 🔴 零内部车道词(DS-04):只说用户能做的事;不复述 server 的 message(那一行已在屏上)。
|
|
147
|
-
*/
|
|
148
52
|
export function resumeReopenContent(detail) {
|
|
149
53
|
const first = detail.code === RESUME_ENV_FAILED
|
|
150
54
|
? 'The execution environment for this parked work could not be brought back'
|
|
@@ -157,14 +61,6 @@ export function resumeReopenContent(detail) {
|
|
|
157
61
|
'Re-fetch the pending approvals and decide again on an engine where the same tool is available',
|
|
158
62
|
].join(' · ');
|
|
159
63
|
}
|
|
160
|
-
/**
|
|
161
|
-
* 被 catch 的错误 → 「批准无处投递:上下文当前不可用」读数;不是本码 ⇒ `null`(绝不误吃别的 `conflict.*`)。
|
|
162
|
-
*
|
|
163
|
-
* 🔴 duck-typed 不 `instanceof`、键位只认 `errorCode`(与 {@link resumeRefusalFromError} 同律;退役 `code` 槽不做兼容)。
|
|
164
|
-
* 🔴 **本码不进两个 resume 闭集**:server 在上下文被回收 **或读取失败** 时都发它,能不能等 wire 上没有判别位 ⇒ 不进「可等」集;
|
|
165
|
-
* 也不是「换参数重来」⇒ 不进 refusal 集;出路见文案第三句(按 `runId` 在场与否)。
|
|
166
|
-
* 🔴 `staleAfterSec` / `runId` 都按结构读:server 铸在体上、sdk 今天没搬上来 ⇒ 缺席;sdk 出键当天自动填满,本包零改动。
|
|
167
|
-
*/
|
|
168
64
|
export function resumeContextUnavailableFromError(err) {
|
|
169
65
|
if (typeof err !== 'object' || err === null)
|
|
170
66
|
return null;
|
|
@@ -180,19 +76,7 @@ export function resumeContextUnavailableFromError(err) {
|
|
|
180
76
|
...(runId !== undefined ? { runId } : {}),
|
|
181
77
|
};
|
|
182
78
|
}
|
|
183
|
-
/**
|
|
184
|
-
* 读数 → 人话三句(`·` 分段,与 {@link resumeRefusalContent} 同形):①发生了什么 · ②你的决定没被消费 · ③出路。
|
|
185
|
-
* 🔴 **只凭码不推断原因**(异源对抗复审实抓):server 在「上下文被回收」与「上下文读取失败(如存储故障)」两种情况下
|
|
186
|
-
* 都返回本码,wire 上没有判别位 ⇒ 第一句只说「当前没有可用的上下文来继续它」,不说「等得太久 / 已被回收」。
|
|
187
|
-
* 🔴 **调大保留时长救不回这一次**(上下文已删就是删了),它只能避免以后再发生 ⇒ 第三句按 `runId` 在场与否给恢复指引,
|
|
188
|
-
* 保留时长只作预防句。零内部车道词;{@link ResumeContextUnavailableDetail.staleAfterSec} 在场时第三句**带原数**
|
|
189
|
-
* (0.72.9 CC-45:此前留给端渲而端没渲 ⇒ 有数必渲),缺席就不渲、不编。
|
|
190
|
-
*/
|
|
191
79
|
export function resumeContextUnavailableContent(d) {
|
|
192
|
-
// 0.72.9 CC-45(cli L-383 / test [7516] N-G10):**有数必渲、无数不编**。0.72.1 曾把秒数留给端「单独渲」而端没渲 ⇒ 补充句永无
|
|
193
|
-
// 保留秒数;归层改为本句直接带原数(整数秒,读口已窄读),缺席时本句逐字同 0.72.1。
|
|
194
|
-
// 🔴 措辞铸点是最后一关(opus 替补复审 [low]):公面函数入参可被手工构造,`0` / 非整数 / 巨数与读口同一判据(整数 ∧ ≥1)才渲,
|
|
195
|
-
// 否则不渲 —— 绝不渲「0 秒」这种看起来像答案的空壳。
|
|
196
80
|
const sec = d.staleAfterSec;
|
|
197
81
|
const retention = typeof sec === 'number' && Number.isSafeInteger(sec) && sec >= 1 ? `(本部署的会话保留时长为 ${sec} 秒)` : '';
|
|
198
82
|
const third = (d.runId !== undefined
|
|
@@ -1,51 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* ⇄ B2 批搬迁(2026-07-27,多端改造设计稿 §3 B2):cli src/sema/retainBackgroundWireCaps.ts 逐字搬入(零依赖)。
|
|
3
|
-
*/
|
|
4
|
-
/**
|
|
5
|
-
* src/sema/retainBackgroundWireCaps.ts — PURE projection: the shell's "retain background processes past
|
|
6
|
-
* task teardown" opt-in → the TOP-LEVEL `TaskRequest.retainBackgroundProcesses` boolean the SERVICE consumes
|
|
7
|
-
* (spec-fields.js `retainBackgroundProcessesFromBody`: `raw !== true` ⇒ dropped;requirePrincipal 多租户形
|
|
8
|
-
* 服务端另有门)。Mirrors selfOrchestrationWireCaps(the verified top-of-body wire pattern)。
|
|
9
|
-
*
|
|
10
|
-
* 背景([1046] 核谳,TB [991]② reap 族):core 直跑腿(sema-tb)出厂显式
|
|
11
|
-
* `retainBackgroundProcesses:true`(design/128 T1-1——「交付存活服务」任务的 verifier 在进程退出后
|
|
12
|
-
* 才连接),而组合腿产品曾默认关 ⇒ 两腿在 reap 族不是同一场考试。
|
|
13
|
-
*
|
|
14
|
-
* ⚠️ 缺省已翻转为 ON(clay 亲报「后台 shell 命令跑到一半被杀」案,2026-07-26;[1046]④ 的裁量件本次
|
|
15
|
-
* 由真实场景需求兑现)。缺省不发时,引擎 turn finally 的**两道门**都关着:
|
|
16
|
-
* ① `settleKilledForOwner({retainProcesses})` 的 retain 豁免;
|
|
17
|
-
* ② `retainBgBySpec = spec.retainBackgroundProcesses === true && !ownedEnvDying` —— 为真才整块跳过
|
|
18
|
-
* `bgEnv.disposeBackgroundShells(...)`(该 blanket sweep 不经 task-registry,故被它收掉的任务
|
|
19
|
-
* `stopSource` 为空,终态归因落到 `stoppedBy = "system"` 缺省 = clay 观察到的 `stopped-by: system`)。
|
|
20
|
-
*
|
|
21
|
-
* 三问(宪法 NO-SHIP 检查):
|
|
22
|
-
* 谁需要:真人用户 —— `run_in_background` 起的构建/测试/服务在当轮结束后必须还活着,否则
|
|
23
|
-
* BashOutput/TaskOutput 续读到的是尸体(clay 案:输出文件 0 字节 + status killed)。
|
|
24
|
-
* 谁受害:隔离执行环境(e2b/k8s/ssh 等 `isIsolated(env)`)—— 那里 `ownedEnvDying` 为真,retain 被
|
|
25
|
-
* **无条件覆盖**(core 侧 `!opts.envDying` / `&& !ownedEnvDying`),进程随宿主一起走。这是
|
|
26
|
-
* 正确的:进程宿主没了,留 handle 无意义。故本翻转对隔离腿零语义变化。
|
|
27
|
-
* 次级受害面 = 本机资源泄漏(后台进程活过当轮)—— 但这正是 CC 的既定契约,不是回归。
|
|
28
|
-
* 补偿机制:`SEMA_RETAIN_BACKGROUND=0|false|no|off` 逃生口 ⇒ 不 stamp ⇒ 回引擎缺省 reap;
|
|
29
|
-
* 进程始终可由 KillShell/TaskStop 显式收,`/bashes` 面板可见可停;引擎 hard-wall
|
|
30
|
-
* (defaultBgTimeoutSec 30min / maxBgTimeoutSec 2h)仍是兜底上限。
|
|
31
|
-
*
|
|
32
|
-
* CC 逐字锚(对标纲领 = 100% 达 CC 效果):CC 的 Bash `run_in_background` 契约 = 进程活过当轮,
|
|
33
|
-
* 由 BashOutput 续读、KillShell 显式收 —— **不在 turn 边界回收**。缺省 reap 是对 CC 的偏离,本次钉回。
|
|
34
|
-
*
|
|
35
|
-
* 语义:缺省 ON —— unset / 未识别值 ⇒ `true`(stamp);显式 truthy(1/true/yes/on)⇒ `true`;
|
|
36
|
-
* 只有显式 falsy(0/false/no/off)⇒ `undefined`(不 stamp ⇒ 引擎缺省 reap)。
|
|
37
|
-
* 服务端 `retainBackgroundProcessesFromBody` 是 `raw !== true ⇒ 丢弃` 的严格刻度,所以 opt-out 一律
|
|
38
|
-
* 表达为**不 stamp**,绝不发 `false`(形状诚实)。
|
|
39
|
-
* PURE — callers pass `env`;caller gates to LIVE mode(mock request shape 不变)。
|
|
40
|
-
*/
|
|
41
1
|
import { type EnvLike } from './hostEnv.js';
|
|
42
|
-
/** The env key the shell reads(SEMA_ 命名空间,与引擎自己的 spec∨env 通道正交——这里是壳→
|
|
43
|
-
* TaskRequest 的 per-request 意图面,非引擎部署面)。 */
|
|
44
2
|
export declare const RETAIN_BACKGROUND_ENV: "SEMA_RETAIN_BACKGROUND";
|
|
45
|
-
/**
|
|
46
|
-
* ENV source → `true`(缺省 ON = CC `run_in_background` 契约:后台进程活过当轮),
|
|
47
|
-
* 只有显式 falsy 逃生口({@link envFlagOff} 拼写集,REF-CC-141 dup-02 单源)⇒ `undefined`
|
|
48
|
-
* (不 stamp ⇒ 引擎缺省 reap)。返回型刻意是 `true | undefined` —— 服务端 `raw !== true ⇒ 丢弃`,
|
|
49
|
-
* opt-out 只能表达为「不 stamp」。
|
|
50
|
-
*/
|
|
51
3
|
export declare function retainBackgroundFromEnv(env?: EnvLike): true | undefined;
|
|
@@ -1,54 +1,6 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* ⇄ B2 批搬迁(2026-07-27,多端改造设计稿 §3 B2):cli src/sema/retainBackgroundWireCaps.ts 逐字搬入(零依赖)。
|
|
3
|
-
*/
|
|
4
|
-
/**
|
|
5
|
-
* src/sema/retainBackgroundWireCaps.ts — PURE projection: the shell's "retain background processes past
|
|
6
|
-
* task teardown" opt-in → the TOP-LEVEL `TaskRequest.retainBackgroundProcesses` boolean the SERVICE consumes
|
|
7
|
-
* (spec-fields.js `retainBackgroundProcessesFromBody`: `raw !== true` ⇒ dropped;requirePrincipal 多租户形
|
|
8
|
-
* 服务端另有门)。Mirrors selfOrchestrationWireCaps(the verified top-of-body wire pattern)。
|
|
9
|
-
*
|
|
10
|
-
* 背景([1046] 核谳,TB [991]② reap 族):core 直跑腿(sema-tb)出厂显式
|
|
11
|
-
* `retainBackgroundProcesses:true`(design/128 T1-1——「交付存活服务」任务的 verifier 在进程退出后
|
|
12
|
-
* 才连接),而组合腿产品曾默认关 ⇒ 两腿在 reap 族不是同一场考试。
|
|
13
|
-
*
|
|
14
|
-
* ⚠️ 缺省已翻转为 ON(clay 亲报「后台 shell 命令跑到一半被杀」案,2026-07-26;[1046]④ 的裁量件本次
|
|
15
|
-
* 由真实场景需求兑现)。缺省不发时,引擎 turn finally 的**两道门**都关着:
|
|
16
|
-
* ① `settleKilledForOwner({retainProcesses})` 的 retain 豁免;
|
|
17
|
-
* ② `retainBgBySpec = spec.retainBackgroundProcesses === true && !ownedEnvDying` —— 为真才整块跳过
|
|
18
|
-
* `bgEnv.disposeBackgroundShells(...)`(该 blanket sweep 不经 task-registry,故被它收掉的任务
|
|
19
|
-
* `stopSource` 为空,终态归因落到 `stoppedBy = "system"` 缺省 = clay 观察到的 `stopped-by: system`)。
|
|
20
|
-
*
|
|
21
|
-
* 三问(宪法 NO-SHIP 检查):
|
|
22
|
-
* 谁需要:真人用户 —— `run_in_background` 起的构建/测试/服务在当轮结束后必须还活着,否则
|
|
23
|
-
* BashOutput/TaskOutput 续读到的是尸体(clay 案:输出文件 0 字节 + status killed)。
|
|
24
|
-
* 谁受害:隔离执行环境(e2b/k8s/ssh 等 `isIsolated(env)`)—— 那里 `ownedEnvDying` 为真,retain 被
|
|
25
|
-
* **无条件覆盖**(core 侧 `!opts.envDying` / `&& !ownedEnvDying`),进程随宿主一起走。这是
|
|
26
|
-
* 正确的:进程宿主没了,留 handle 无意义。故本翻转对隔离腿零语义变化。
|
|
27
|
-
* 次级受害面 = 本机资源泄漏(后台进程活过当轮)—— 但这正是 CC 的既定契约,不是回归。
|
|
28
|
-
* 补偿机制:`SEMA_RETAIN_BACKGROUND=0|false|no|off` 逃生口 ⇒ 不 stamp ⇒ 回引擎缺省 reap;
|
|
29
|
-
* 进程始终可由 KillShell/TaskStop 显式收,`/bashes` 面板可见可停;引擎 hard-wall
|
|
30
|
-
* (defaultBgTimeoutSec 30min / maxBgTimeoutSec 2h)仍是兜底上限。
|
|
31
|
-
*
|
|
32
|
-
* CC 逐字锚(对标纲领 = 100% 达 CC 效果):CC 的 Bash `run_in_background` 契约 = 进程活过当轮,
|
|
33
|
-
* 由 BashOutput 续读、KillShell 显式收 —— **不在 turn 边界回收**。缺省 reap 是对 CC 的偏离,本次钉回。
|
|
34
|
-
*
|
|
35
|
-
* 语义:缺省 ON —— unset / 未识别值 ⇒ `true`(stamp);显式 truthy(1/true/yes/on)⇒ `true`;
|
|
36
|
-
* 只有显式 falsy(0/false/no/off)⇒ `undefined`(不 stamp ⇒ 引擎缺省 reap)。
|
|
37
|
-
* 服务端 `retainBackgroundProcessesFromBody` 是 `raw !== true ⇒ 丢弃` 的严格刻度,所以 opt-out 一律
|
|
38
|
-
* 表达为**不 stamp**,绝不发 `false`(形状诚实)。
|
|
39
|
-
* PURE — callers pass `env`;caller gates to LIVE mode(mock request shape 不变)。
|
|
40
|
-
*/
|
|
41
1
|
import { hostEnv } from './hostEnv.js';
|
|
42
2
|
import { envFlagOff } from './envFlag.js';
|
|
43
|
-
/** The env key the shell reads(SEMA_ 命名空间,与引擎自己的 spec∨env 通道正交——这里是壳→
|
|
44
|
-
* TaskRequest 的 per-request 意图面,非引擎部署面)。 */
|
|
45
3
|
export const RETAIN_BACKGROUND_ENV = 'SEMA_RETAIN_BACKGROUND';
|
|
46
|
-
/**
|
|
47
|
-
* ENV source → `true`(缺省 ON = CC `run_in_background` 契约:后台进程活过当轮),
|
|
48
|
-
* 只有显式 falsy 逃生口({@link envFlagOff} 拼写集,REF-CC-141 dup-02 单源)⇒ `undefined`
|
|
49
|
-
* (不 stamp ⇒ 引擎缺省 reap)。返回型刻意是 `true | undefined` —— 服务端 `raw !== true ⇒ 丢弃`,
|
|
50
|
-
* opt-out 只能表达为「不 stamp」。
|
|
51
|
-
*/
|
|
52
4
|
export function retainBackgroundFromEnv(env = hostEnv()) {
|
|
53
5
|
return envFlagOff(env[RETAIN_BACKGROUND_ENV]) ? undefined : true;
|
|
54
6
|
}
|