@sema-agent/client-core 0.77.1 → 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 +13 -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 +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 +0 -249
- package/dist/request/taskRequest.js +6 -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 +30 -1
- package/package.json +1 -1
|
@@ -1,19 +1,13 @@
|
|
|
1
|
-
/** 一次读面探测的判决(三态;见文件头「这个模块是什么」)。 */
|
|
2
1
|
export type ParkRowProbe<Row> = {
|
|
3
2
|
kind: 'row';
|
|
4
3
|
row: Row;
|
|
5
|
-
}
|
|
6
|
-
/** 此刻没有可决断的行,且拿不出「已了结」的正面证据 ⇒ 可能只是还没出生。 */
|
|
7
|
-
| {
|
|
4
|
+
} | {
|
|
8
5
|
kind: 'unborn';
|
|
9
6
|
reason: string;
|
|
10
|
-
}
|
|
11
|
-
/** 有正面证据:这里没有本臂该决的事 ⇒ 再等也不会变(如行在但门种不属本臂)。 */
|
|
12
|
-
| {
|
|
7
|
+
} | {
|
|
13
8
|
kind: 'settled';
|
|
14
9
|
reason: string;
|
|
15
10
|
};
|
|
16
|
-
/** 有界重查环的判决。`waitedMs`/`probes` 是留证位(debug 档),不参与任何分支。 */
|
|
17
11
|
export type ParkRowWaitVerdict<Row> = {
|
|
18
12
|
kind: 'row';
|
|
19
13
|
row: Row;
|
|
@@ -35,29 +29,11 @@ export type ParkRowWaitVerdict<Row> = {
|
|
|
35
29
|
probes: number;
|
|
36
30
|
};
|
|
37
31
|
export interface ParkRowBirthWaitDeps<Row> {
|
|
38
|
-
/**
|
|
39
|
-
* 读一次真状态(第 N 次探测,N 从 1 起)。
|
|
40
|
-
*
|
|
41
|
-
* 🔴 `signal` **必须**被透传进真实读面(HTTP 请求等):它是本环对 `budgetMs` 的**执行手段** ——
|
|
42
|
-
* 环在窗尽时 abort 它,读面才真的被掐断。不接这个 signal 的 probe 会让「有界」退化成一句
|
|
43
|
-
* 口号:一次挂死的读面能把总窗拖到任意长。
|
|
44
|
-
*/
|
|
45
32
|
probe: (attempt: number, signal?: AbortSignal) => Promise<ParkRowProbe<Row>>;
|
|
46
|
-
/** 总窗上限(ms)。`<=0` ⇒ 恰一次 probe,不等(那一拍不设内部 deadline,与修前逐字同拍)。 */
|
|
47
33
|
budgetMs: number;
|
|
48
|
-
/** 轮询间隔(ms);实际 sleep = min(intervalMs, 窗内剩余)。 */
|
|
49
34
|
intervalMs: number;
|
|
50
|
-
/** 时钟(测试注入;缺省 Date.now)。 */
|
|
51
35
|
now?: () => number;
|
|
52
|
-
/** sleep(测试注入;缺省 = 可中断等待,见 {@link parkRowPollDelay})。 */
|
|
53
36
|
sleep?: (ms: number, signal?: AbortSignal) => Promise<void>;
|
|
54
|
-
/** 中断口(Esc/turn abort);每轮读,真停。 */
|
|
55
37
|
signal?: AbortSignal;
|
|
56
38
|
}
|
|
57
|
-
/**
|
|
58
|
-
* 有界、可中断地等一条 park 的待决行出生。语义与边界见文件头;绝不抛。
|
|
59
|
-
*
|
|
60
|
-
* 🔴 判决只有 `row` 一态可以往下走 —— `unborn`(窗尽)与 `aborted` 都必须由调用方翻成**如实的
|
|
61
|
-
* 失败**,绝不许翻成「已决/已成功」(那正是 cli #269 的病)。
|
|
62
|
-
*/
|
|
63
39
|
export declare function waitForParkRowBirth<Row>(deps: ParkRowBirthWaitDeps<Row>): Promise<ParkRowWaitVerdict<Row>>;
|
|
@@ -1,62 +1,7 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* hitl/parkRowBirthWait.ts — 「park 的待决行**还没出生**」这个第三态的有界等待(#265 上收件,
|
|
3
|
-
* 2026-08-14;源形 = cli `src/sema/parkRowBirthWait.ts`,该文件自设计起就按候上收形写成零依赖)。
|
|
4
|
-
*
|
|
5
|
-
* ── 病(cli #269,plan 批准 → write 卡永不呈现)──────────────────────────────────────────────
|
|
6
|
-
* `/v1/approvals` 的 pending 表里**没有**某个 park 的行,过去被单义化成「这件事已经决了」。
|
|
7
|
-
* 真实世界有第三态:引擎刚被推进到下一只门,而门的行要等一次真实模型调用(实测 ~3s:plan
|
|
8
|
-
* 批准 → 模型算出 Write 的参数 → 才铸审批行)才落库。在那个窗里读到的空表既不是「已决」
|
|
9
|
-
* 也不是「没有这件事」,而是**还没出生**。
|
|
10
|
-
* 把「未出生」当「已决」的代价 = 客户端按成功收口 → 呈现回执永远等不到 → 上一句「没能重开
|
|
11
|
-
* 这张卡」的降级话,而那张卡三秒之后真的出生了却再没人去接 —— 用户看到的是会话死了。
|
|
12
|
-
*
|
|
13
|
-
* ── 这个模块是什么 ──────────────────────────────────────────────────────────────────────────
|
|
14
|
-
* 把「行不在表」拆成**三态**并给一个有界、可中断的重查环:
|
|
15
|
-
* · `row` —— 拿到一行可决断的行(唯一可以往下走的态);
|
|
16
|
-
* · `unborn` —— 此刻没有可决断的行,但**没有任何正面证据**说明这件事已经了结 ⇒ 值得再看一眼;
|
|
17
|
-
* · `settled` —— 有正面证据说明这里没有本臂该决的事(如行在但门种不属本臂)⇒ 等待零意义,立即收口。
|
|
18
|
-
* 判据纪律:`settled` 必须由**正面证据**得出;缺席本身永远只能得 `unborn`
|
|
19
|
-
* (「不知道」不许渲成「已完成」)。
|
|
20
|
-
*
|
|
21
|
-
* ── 边界(承重,别削)────────────────────────────────────────────────────────────────────────
|
|
22
|
-
* · **恒至少探一次**:`budgetMs <= 0` ⇒ 恰一次 probe,行为与「不等」逐字相同(存量判决不漂,
|
|
23
|
-
* 也让测试能把等待窗调成 0 拿回旧语义)。
|
|
24
|
-
* · **有界**:总窗 `budgetMs` 封顶,轮询间隔 `intervalMs`;窗尽如实回 `unborn`(不是回
|
|
25
|
-
* `settled` —— 等不到不等于已决,降级话在这一刻才是真话)。
|
|
26
|
-
* · **真可中断**:每一轮 probe 前、每一次 sleep 后都读 `signal.aborted`;缺省 sleep 自身也吃
|
|
27
|
-
* signal(包内共享叶 `abortableSleep`,不另铸第二份等待原语)。
|
|
28
|
-
* · **绝不裸固定拍当判据**:sleep 只是轮询节奏,判决恒来自下一次 probe 的真实读数。
|
|
29
|
-
* · probe 抛错按 `unborn` 处置(瞬时读面故障不该把有界重查提前判死),错误摘要进 reason ——
|
|
30
|
-
* 调用方只在 debug 档消费,绝不上屏(凭证外溢面纪律)。
|
|
31
|
-
*
|
|
32
|
-
* ── 归层 ────────────────────────────────────────────────────────────────────────────────────
|
|
33
|
-
* 「一条 park 的待决行到底出生了没有」是 wire 语义,三端(cli / desktop / web)都要问同一句;
|
|
34
|
-
* 各端只注入自己的读面(cli = `approvals.list` + 归属判据),环本身共用这一份。行形走结构泛型,
|
|
35
|
-
* 读面/时钟/sleep 全部注入 —— 本文件值级 import 只有包内 `abortableSleep`,零 SDK 零宿主。
|
|
36
|
-
*/
|
|
37
1
|
import { abortableSleep } from '../abortableSleep.js';
|
|
38
|
-
/**
|
|
39
|
-
* 缺省轮询等待:signal 在场时直接借包内共享叶 {@link abortableSleep}(中止即刻 resolve 并清
|
|
40
|
-
* timer),缺席时退化成纯定时。
|
|
41
|
-
*
|
|
42
|
-
* 🔴 **不另铸第二份等待原语**:仓内「怎么安全地睡一觉」只此一份(`abortableSleep.ts` 的头注
|
|
43
|
-
* 写死了这条 —— D 族循环各自保留自己的节拍策略,但等待原语统一)。两份并存的代价不是重复代码,
|
|
44
|
-
* 是两条会各自漂的中止语义。
|
|
45
|
-
* 🔴 timer **不 unref**(与 abortableSleep 同判据):调用方正 await 本环拿判决,轮询窗里这只
|
|
46
|
-
* timer 可能是事件循环里唯一的活,unref 会让进程在等待中途直接退出、判决连同它要说的那句真话
|
|
47
|
-
* 一起蒸发。代价上限 = 一个 intervalMs 的进程存活延长。
|
|
48
|
-
*/
|
|
49
2
|
function parkRowPollDelay(ms, signal) {
|
|
50
|
-
// 无 signal 的调用方(端没接中断口)也走同一个叶:给它一只**永不 abort** 的 signal,而不是就地
|
|
51
|
-
// 再写一个裸 setTimeout —— 那就是第二份等待原语的起点。
|
|
52
3
|
return abortableSleep(ms, signal ?? new AbortController().signal);
|
|
53
4
|
}
|
|
54
|
-
/**
|
|
55
|
-
* 有界、可中断地等一条 park 的待决行出生。语义与边界见文件头;绝不抛。
|
|
56
|
-
*
|
|
57
|
-
* 🔴 判决只有 `row` 一态可以往下走 —— `unborn`(窗尽)与 `aborted` 都必须由调用方翻成**如实的
|
|
58
|
-
* 失败**,绝不许翻成「已决/已成功」(那正是 cli #269 的病)。
|
|
59
|
-
*/
|
|
60
5
|
export async function waitForParkRowBirth(deps) {
|
|
61
6
|
const now = typeof deps.now === 'function' ? deps.now : () => Date.now();
|
|
62
7
|
const sleep = typeof deps.sleep === 'function' ? deps.sleep : parkRowPollDelay;
|
|
@@ -65,27 +10,15 @@ export async function waitForParkRowBirth(deps) {
|
|
|
65
10
|
const startedAt = now();
|
|
66
11
|
let probes = 0;
|
|
67
12
|
let lastReason = 'no decidable pending row for this park';
|
|
68
|
-
// 🔴 经函数读,别直接读 `deps.signal?.aborted`:tsc 的控制流分析会拿环顶那一次判断把它窄成
|
|
69
|
-
// `false | undefined`,sleep 之后的第二次判断当场被判「不可能为 true」而报错 —— 而真实世界里
|
|
70
|
-
// 正是 sleep 期间它会翻。函数返回值走声明类型,不参与那条窄化链。
|
|
71
13
|
const aborted = () => deps.signal?.aborted === true;
|
|
72
|
-
/** 一拍探测(读面故障按 unborn,绝不外溢)。 */
|
|
73
14
|
const safeProbe = async (attempt, signal) => {
|
|
74
15
|
try {
|
|
75
16
|
return await deps.probe(attempt, signal);
|
|
76
17
|
}
|
|
77
18
|
catch (e) {
|
|
78
|
-
// 读面瞬时故障 ≠ 已决:按未出生继续轮询(有界,窗尽自然如实收口)。
|
|
79
19
|
return { kind: 'unborn', reason: `probe threw: ${String(e)}` };
|
|
80
20
|
}
|
|
81
21
|
};
|
|
82
|
-
/**
|
|
83
|
-
* 🔴 把**剩余预算**套在每一拍 probe 上:deadline 只在 `await probe` **之后**判,等于什么都没
|
|
84
|
-
* 界住 —— 一次挂死的 `approvals.list` 能把「15s 有界」拖到 SDK 请求超时那么长,而中断也要等
|
|
85
|
-
* 那个 promise 落地才被看见。这里给每一拍配一个内部 controller:窗尽即 abort(读面真被掐,
|
|
86
|
-
* 不只是被放弃)并当拍判窗尽;外部 signal 与它合流,Esc 同样当拍生效。
|
|
87
|
-
* 零窗形(budgetMs<=0)**不设**内部 deadline —— 那一拍就是「修前那一次 list」,不许被新机制改语义。
|
|
88
|
-
*/
|
|
89
22
|
const probeWithinRemaining = async (attempt, remainingMs) => {
|
|
90
23
|
if (budgetMs <= 0)
|
|
91
24
|
return safeProbe(attempt, deps.signal);
|
|
@@ -97,36 +30,23 @@ export async function waitForParkRowBirth(deps) {
|
|
|
97
30
|
resolve('deadline');
|
|
98
31
|
}, Math.max(1, remainingMs));
|
|
99
32
|
});
|
|
100
|
-
// 🔴 外部中断**自己也是竞速的一臂**,不能只靠「signal 传下去 ⇒ 读面自己会拒」:那是对 probe
|
|
101
|
-
// 实现的一个假设,而假设不成立时(probe 吞了 signal / 读面 abort 得慢)Esc 之后这一拍要一直
|
|
102
|
-
// 等到窗尽才被看见 —— 「UI 说停了、后台还在等」正是本模块承诺不会发生的那件事。
|
|
103
33
|
const caller = deps.signal;
|
|
104
|
-
/**
|
|
105
|
-
* 把中止**传导到真正交给 probe 的那只 signal**(清理动作:它自己的异常绝不挡住中止判决)。
|
|
106
|
-
* 🔴 承重理由:`AbortSignal.any` 缺席的宿主上 `merged` 就是 `ctl.signal`,而外部中断只赢竞速、
|
|
107
|
-
* 不会传导到它 —— finally 又把 deadline timer 清了,于是那一拍挂死的读面**永远**不会被 abort
|
|
108
|
-
* (判决说「停了」,后台请求活到进程结束)。两个中止入口(进拍即已中断 / 等待期间翻)共用这一份。
|
|
109
|
-
*/
|
|
110
34
|
const abortProbeLane = () => {
|
|
111
35
|
try {
|
|
112
36
|
ctl.abort();
|
|
113
37
|
}
|
|
114
38
|
catch {
|
|
115
|
-
/* abort 面异常绝不挡住中止判决(唯一后果是那一拍的读面少收一次 abort) */
|
|
116
39
|
}
|
|
117
40
|
};
|
|
118
41
|
let onAbort;
|
|
119
42
|
const externalAbort = new Promise(resolve => {
|
|
120
43
|
if (caller === undefined)
|
|
121
|
-
return;
|
|
44
|
+
return;
|
|
122
45
|
if (caller.aborted) {
|
|
123
|
-
// 进这一拍时就已中断 ⇒ probe 拿到的那只 signal 必须是**已中止**的(一个不查 `aborted`、
|
|
124
|
-
// 只挂 'abort' 事件的读面否则会一直挂着)。
|
|
125
46
|
abortProbeLane();
|
|
126
47
|
resolve('aborted');
|
|
127
48
|
return;
|
|
128
49
|
}
|
|
129
|
-
// 🔴 先传导中止**再** resolve(见 {@link abortProbeLane}):否则「可中断」只是判决面的说法。
|
|
130
50
|
onAbort = () => {
|
|
131
51
|
abortProbeLane();
|
|
132
52
|
resolve('aborted');
|
|
@@ -135,34 +55,25 @@ export async function waitForParkRowBirth(deps) {
|
|
|
135
55
|
caller.addEventListener('abort', onAbort, { once: true });
|
|
136
56
|
}
|
|
137
57
|
catch {
|
|
138
|
-
onAbort = undefined;
|
|
58
|
+
onAbort = undefined;
|
|
139
59
|
}
|
|
140
60
|
});
|
|
141
|
-
// 合流(Node ≥20.3 / 现代浏览器原生);缺席时退化成只吃内部 deadline —— 中止仍由上面那一臂
|
|
142
|
-
// 当拍生效。`typeof` 探的是**运行期**在场,不是类型面缺口。
|
|
143
61
|
const merged = caller !== undefined && typeof AbortSignal.any === 'function' ? AbortSignal.any([caller, ctl.signal]) : ctl.signal;
|
|
144
62
|
try {
|
|
145
63
|
return await Promise.race([safeProbe(attempt, merged), deadline, externalAbort]);
|
|
146
64
|
}
|
|
147
65
|
finally {
|
|
148
|
-
// timer 必清:竞速由 probe 赢时它还挂着,不清会把进程按 remainingMs 拖活一拍。
|
|
149
66
|
if (timer !== undefined)
|
|
150
67
|
clearTimeout(timer);
|
|
151
|
-
// 监听器必摘:环可以跑几十拍,不摘就是几十个挂在调用方 signal 上的闭包。
|
|
152
68
|
if (onAbort !== undefined && caller !== undefined) {
|
|
153
69
|
try {
|
|
154
70
|
caller.removeEventListener('abort', onAbort);
|
|
155
71
|
}
|
|
156
72
|
catch {
|
|
157
|
-
/* 监听面异常绝不反噬等待环 */
|
|
158
73
|
}
|
|
159
74
|
}
|
|
160
75
|
}
|
|
161
76
|
};
|
|
162
|
-
// B-005(test [6497] 异源复审轨,cli 1.0.101 定谳):上一拍读面的**实测时延**。窗尾剩余若已不够再答一次
|
|
163
|
-
// (remaining < lastProbeMs),再起一拍只会被内部 deadline 切成 'deadline' 出站——那一拍一个字都没读到,
|
|
164
|
-
// 却让宿主(每拍先清 evidence 的形,cli askParkReopen)把此前成立的「读面答了、零属主行」证据抹掉
|
|
165
|
-
// ⇒ pendingRowGone 不置 ⇒ 陈旧 park 两选卡不出。窗尾不起注定超时的探测,按已有证据出站。
|
|
166
77
|
let lastProbeMs = 0;
|
|
167
78
|
for (;;) {
|
|
168
79
|
if (aborted())
|
|
@@ -176,8 +87,7 @@ export async function waitForParkRowBirth(deps) {
|
|
|
176
87
|
probes += 1;
|
|
177
88
|
const probeStartedAt = now();
|
|
178
89
|
const outcome = await probeWithinRemaining(probes, budgetMs - (now() - startedAt));
|
|
179
|
-
lastProbeMs = now() - probeStartedAt;
|
|
180
|
-
// 读面挂着的时候用户按了 Esc ⇒ 当拍停(判决优先于窗尽,两者都成立时中断更准确)。
|
|
90
|
+
lastProbeMs = now() - probeStartedAt;
|
|
181
91
|
if (outcome === 'aborted' || aborted())
|
|
182
92
|
return { kind: 'aborted', waitedMs: now() - startedAt, probes };
|
|
183
93
|
if (outcome === 'deadline') {
|