@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
|
@@ -1,41 +1,9 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* ⇄ B6 批搬迁(2026-07-27,设计稿 §3 B6):cli `src/sema/engineSubagentOutput.ts` 整搬。
|
|
3
|
-
*
|
|
4
|
-
* 🔴 搬迁三处差分(全部是「端资产上移到 port」,行为一字节不变):
|
|
5
|
-
* · `wireConfig()`(六份手抄之一)→ `engineWireTarget()`;
|
|
6
|
-
* · `getActiveEngineTaskId()`(engineToolDetach,pty 绑定的活跃 run)→ `activeEngineRunId()`
|
|
7
|
-
* (SessionPort.activeRunId);
|
|
8
|
-
* · `logForDebugging` → `hostLog('debug', …)`。
|
|
9
|
-
*
|
|
10
|
-
* ── 以下为原文件的领域说明(逐字保留)────────────────────────────────────────────────────────
|
|
11
|
-
*
|
|
12
|
-
* engineSubagentOutput — 后台子代终报读面消费(server 1.244 / SDK 0.0.65 提货,提货单 [1488]③(b))。
|
|
13
|
-
*
|
|
14
|
-
* Wire: `GET /v1/runs/:runId/subagents/:handle/output` → {taskId, target, content, output:{status,…}}
|
|
15
|
-
* · content = 子代最终 assistant 正文(终态)或诚实 running 状态文本;
|
|
16
|
-
* · runId = spawn 该子代的 run(registry access 从 run 行推导——寻址映射由 fleet 行 parentId /
|
|
17
|
-
* bg_notification.parentTaskId 喂 subagentContentStore.recordBgParentRun);
|
|
18
|
-
* · a… 域(background_agent)专用——wa… 观测行恒 404(workflow journal 是那边的读面),调用方
|
|
19
|
-
* 按 null 回落 bg 事实渲染,fail-soft;
|
|
20
|
-
* · caps 探测 capabilities.subagentOutput(selfKnowledge caps 同款纪律:true 固化/false TTL/
|
|
21
|
-
* 探测失败不缓存)。老引擎(<1.244)= caps 无该键 → 恒走回落,version-safe。
|
|
22
|
-
*
|
|
23
|
-
* 副本域注意([1491]④):TaskRegistry 是进程内存态——引擎重启后 handle 消失(404),按 null 回落,
|
|
24
|
-
* 绝不把 404 当异常上抛。
|
|
25
|
-
*
|
|
26
|
-
* session 作用域([1498]③,server 1.245.0 / SDK 0.0.66):session-bound run 的 subagentOutput
|
|
27
|
-
* 必须带匹配的 `?session=`,否则 404 fail-closed(这个读面正是 [1493]② 双开串扰的读侧入口,
|
|
28
|
-
* server 侧已把它闩死)。端无条件带 session 即双版本兼容——1.244 忽略该参数,1.245 起必需。
|
|
29
|
-
* 🔴 端漏装 SessionPort ⇒ `engineSessionParam()` 恒 undefined ⇒ 本读面对 session-bound run
|
|
30
|
-
* 一律 404 ⇒ 整条子代终报静默哑掉(所以 `hostSession()` 计 miss,见 host.ts)。
|
|
31
|
-
*/
|
|
32
1
|
import { hostLog } from '../host.js';
|
|
33
2
|
import { makeEngineWireClient } from '../engineWireSdk.js';
|
|
34
3
|
import { engineWireTargetFor } from '../engineWireTarget.js';
|
|
35
4
|
import { engineSessionParamFor } from '../engineSessionParam.js';
|
|
36
5
|
import { resolveOwnerContext } from './engineSubagentResume.js';
|
|
37
6
|
import { noteBgOwnerAbsence } from './subagentOwnerAbsence.js';
|
|
38
|
-
// ── caps 探测(true 固化 / false TTL / 失败不缓存)────────────────────────────────────────────
|
|
39
7
|
const capByBase = new Map();
|
|
40
8
|
const CAP_FALSE_RETRY_TTL_MS = 5 * 60_000;
|
|
41
9
|
async function subagentOutputCapable(client, baseUrl, signal) {
|
|
@@ -43,36 +11,23 @@ async function subagentOutputCapable(client, baseUrl, signal) {
|
|
|
43
11
|
if (hit && (hit.ok || Date.now() - hit.at < CAP_FALSE_RETRY_TTL_MS))
|
|
44
12
|
return hit.ok;
|
|
45
13
|
try {
|
|
46
|
-
// SDK 0.0.77 起 capabilities() 有真型(Capabilities 开集)——宽形 cast 已撤;键仍防御读。
|
|
47
14
|
const caps = await client.capabilities({ ...(signal ? { signal } : {}) });
|
|
48
15
|
const ok = caps.subagentOutput === true;
|
|
49
16
|
capByBase.set(baseUrl, { ok, at: Date.now() });
|
|
50
17
|
return ok;
|
|
51
18
|
}
|
|
52
19
|
catch {
|
|
53
|
-
return false;
|
|
20
|
+
return false;
|
|
54
21
|
}
|
|
55
22
|
}
|
|
56
|
-
/** 测试钩:清 caps 缓存。 */
|
|
57
23
|
export function __resetSubagentOutputCapCacheForTests() {
|
|
58
24
|
capByBase.clear();
|
|
59
25
|
}
|
|
60
|
-
/**
|
|
61
|
-
* 拉取一个后台子代的终报正文。null = 读不到(无 wire / caps 缺 / 404 域外或副本重启 / 网错)——
|
|
62
|
-
* 调用方回落 bg 事实渲染。绝不 throw。
|
|
63
|
-
*/
|
|
64
26
|
export async function fetchEngineSubagentReport(taskId, opts) {
|
|
65
|
-
// 🔴 design/285 批 3(D7b):台账记录**先取**(纯读)—— wire target 按**这一行的会话槽**取,
|
|
66
|
-
// 零参 `engineWireTarget()` 写死默认槽。`sessionKey` 缺席 ⇒ 回落默认槽 ⇒ 与 0.44.0 逐字同。
|
|
67
|
-
// ⚠️ 两道闸的**次序一字未动**(无 wire 仍先于「台账缺席」返回)。
|
|
68
27
|
const { record: owner, runId, key } = resolveOwnerContext(taskId);
|
|
69
28
|
const cfg = engineWireTargetFor(key);
|
|
70
29
|
if (!cfg)
|
|
71
30
|
return null;
|
|
72
|
-
// 🔴 #242 批 3([4000] Q3=B 裁定执行,行为翻面):台账缺席即**诚实缺席,绝不回落**
|
|
73
|
-
// `activeEngineRunId()` —— 与 resume 腿 `resolveOwnerRunId` 同口径(错值比缺席更坏:回落
|
|
74
|
-
// 到「此刻在飞的 run」对 session-bound 旧 run 是 404 撞墙,对同名子代是读错人)。缺席不
|
|
75
|
-
// 静默(noteBgOwnerAbsence warn 留痕);调用方按既有 null 回落 bg 事实渲染,fail-soft。
|
|
76
31
|
if (!runId) {
|
|
77
32
|
noteBgOwnerAbsence('subagent-output', taskId);
|
|
78
33
|
return null;
|
|
@@ -87,11 +42,6 @@ export async function fetchEngineSubagentReport(taskId, opts) {
|
|
|
87
42
|
if (!(await subagentOutputCapable(client, cfg.baseUrl, opts?.signal)))
|
|
88
43
|
return null;
|
|
89
44
|
try {
|
|
90
|
-
// [1498]③:无条件带 session(1.244 忽略/1.245 必需,双版本兼容);缺席时(端未装 SessionPort /
|
|
91
|
-
// 端自己还没有值)不带——1.245 对 session-bound run 会 404,按既有 null 回落,下次重试自然带上。
|
|
92
|
-
// 🔴 design/285 批 3(D6,会话二态;与 steer/tail 同一口径):行登记的会话优先,缺则退**本槽**现势会话。
|
|
93
|
-
// 🔴 BEHAVIOR CHANGE(默认槽也变):tick 腿今天就在默认槽写 `sessionId` ⇒ 会话轮换后读旧行的终报,
|
|
94
|
-
// 此前拿**现势**会话打一条 session-bound 的旧 run = 确定性 404;现在用行登记的那一个。
|
|
95
45
|
const session = owner?.sessionId ?? engineSessionParamFor(key);
|
|
96
46
|
const r = await client.runs.subagentOutput(runId, taskId, {
|
|
97
47
|
...(opts?.signal ? { signal: opts.signal } : {}),
|
|
@@ -1,88 +1,8 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* ⇄ #242 批 2 搬迁(2026-08-15,design/242 §3 批 2 / A-028.7):cli `src/sema/subagentResumeWire.ts`
|
|
3
|
-
* 的**判定半场**整搬(取址三态 + 409 六族分类 + at-most-once 调用腿),**逐条搬迁不重新发明**。
|
|
4
|
-
*
|
|
5
|
-
* ── 为什么搬(A-028.7 的真缺口)────────────────────────────────────────────────────────────────
|
|
6
|
-
* 孪生两腿此前**分居两仓**:steer 在包(`engineSubagentSteer.ts`),resume 整条在壳(270 行)。
|
|
7
|
-
* 而两腿的**决定量口径不同** —— steer 取址 `activeEngineRunId()`(在飞的那条),resume 取址
|
|
8
|
-
* `resolveOwnerRunId()`(按行锚)—— 正是壳侧头注自己警告的那种不对称:「同一个 agent 有时能说话
|
|
9
|
-
* 有时不能」。同居之后两腿的取址口径才有单一真源可对(口径统一本身是行为面,候 [4000] Q3)。
|
|
10
|
-
*
|
|
11
|
-
* ── 拆缝(判定进包 / 呈现留壳,与 T35/T36/T44 同一条原则)────────────────────────────────────
|
|
12
|
-
* **进包**:能力位 gate · 取址(`resolveOwnerRunId` 三态 + `resolveSubagentContinueTarget`)·
|
|
13
|
-
* 409 六族分类 · at-most-once 调用腿 · 收据消毒 · caps×verb 组合告警。
|
|
14
|
-
* **留壳**:出路文案(`subagentResumeCopy`,CC 措辞面)与 Ink 卡面动作。
|
|
15
|
-
*
|
|
16
|
-
* ── 搬迁差分(行为一字节不变,端资产上移到 port)────────────────────────────────────────────
|
|
17
|
-
* · `capsBaseUrl()` 直读 `process.env.SEMA_LIVE_BASEURL` → `engineWireTarget()?.baseUrl`
|
|
18
|
-
* (本包零 `process.env`,portability 门盯着;壳侧 env 臂由 `engineWireTarget` 同源派生,
|
|
19
|
-
* 且这一形对**显式装配** wire target 的宿主 —— web/桌面 —— 才答得对。同 `engineRowStopGate:44`)。
|
|
20
|
-
* · `logForDebugging` → `hostLog('debug', …)`(同 steer 腿搬迁差分)。
|
|
21
|
-
*
|
|
22
|
-
* ── 以下为原文件的领域说明(逐字保留)────────────────────────────────────────────────────────
|
|
23
|
-
*
|
|
24
|
-
* subagentResumeWire — 保留子代的**复活口**消费面(A-022.1 + A-022.12 的人机面 / 缺口 G2+G9)。
|
|
25
|
-
*
|
|
26
|
-
* 取址/收据/错误族逐字对位既有的 `steerEngineSubagent` —— 同一个 `target`(parentToolCallId 或
|
|
27
|
-
* agentName)、同一个 `{content}` 体、同一个 200 `SubagentSteerReceipt`。**两条腿刻意同形**:
|
|
28
|
-
* steer 是「它还在跑,插句话」,resume 是「它已经结束了,叫醒它」——同一个人机动作的两个时相,
|
|
29
|
-
* 分不清哪个时相就会拿错 verb 吃 409。
|
|
30
|
-
*
|
|
31
|
-
* ── 🔴 能力位 gate:`subagentResume` ────────────────────────────────────────────────────────
|
|
32
|
-
* SDK `runs.d.ts` 头注逐字「Gate on `capabilities.subagentResume`」。未判/缺键 = false = **不渲入口**
|
|
33
|
-
* (渲了就是一个恒 404/409 的假 affordance)。
|
|
34
|
-
*
|
|
35
|
-
* ── 🔴 409 族是**六个不同的处置**,禁合并 ───────────────────────────────────────────────────
|
|
36
|
-
* `resume.retain_off`(这条 run 压根没开留存 —— 与「留存过期了」是两回事)/ `resume.evicted` /
|
|
37
|
-
* `resume.cap` / `resume.session_not_found`(留存失效)/ `steering.still_running`(**它还在跑,
|
|
38
|
-
* 该 steer 不该 resume**)/ `steering.not_running`(本副本无匹配 / run 已 settle)。
|
|
39
|
-
* 判据是 `errorCode` 串(机器轴,开集),**不按 HTTP 数字分支**;未知码原样透传落诚实兜底臂。
|
|
40
|
-
* ⚠️ **0.38.0(#318 件④)补第七、八格**:`resume.row_recycling`(行正在被裁决 —— **窗口自清,
|
|
41
|
-
* 过一会儿再发就成**)/ `resume.row_gone`(行已被终态 GC 收走 —— **等也没用,重开新 agent**)。
|
|
42
|
-
* 这两码在 core 侧早已在铸,是 [4743] #323「completed bg 子代跨重启 SendMessage 复活」把复活裁决
|
|
43
|
-
* 腿变成常走路径之后才真正会被用户撞见;此前它们双双落进开集兜底,两个不同的下一步被压成一句
|
|
44
|
-
* 泛泛失败。
|
|
45
|
-
* ⚠️ **0.57.0(L-102)补第九、十格**:`resume.usage_window_exhausted` / `resume.preflight_rejected`
|
|
46
|
-
* 是这一族里**唯一带得出「等多久」**的两码(`retryAfterSec`,server ≥7.47.0 / ≥7.51.0 起在 409 体上
|
|
47
|
-
* additive 携;SDK 8.1.0 起铸 `ResumeRetryLaterError`)。⚠️ **「唯一带得出等待量」≠「唯一可等」**:
|
|
48
|
-
* 同族的 `resume.row_recycling` 也可等(core 铸文逐字「this clears on its own; send again in a
|
|
49
|
-
* moment」= 本文件的 `row-contended` 格),只是 server 给不出秒数 —— 闭集之外不等于「等也没用」。同上一次的机理:两码此前双双落进开集兜底,
|
|
50
|
-
* server 明明给了等待窗,到端只剩一句泛泛失败。判型读口在
|
|
51
|
-
* `wireErrorTriage.resumeRetryLaterFromError`(三端共用,不走本腿的宿主也吃这两码)。
|
|
52
|
-
* 🔴 **两码不是一格而是两格**(异源对抗复审 [medium] 真病修):`resume.preflight_rejected` 有一条
|
|
53
|
-
* `terminal` 臂(token 不可再赎)而判别位只在 message 散文里 ⇒ 仅凭码就归 `retry-later` 会把终局
|
|
54
|
-
* 说成暂时等待。按**正向证据**分:有证据 ⇒ `retry-later`;没有 ⇒ `refused-preflight`(**不可判**,
|
|
55
|
-
* 不是「不可重试」)。证据判据收在读口的 `waitable` 一位上,本层不复判。
|
|
56
|
-
*
|
|
57
|
-
* ── UNTRUSTED ───────────────────────────────────────────────────────────────────────────────
|
|
58
|
-
* 收据 `note` 是 server 铸的文案(引擎会把子代名字拼进去,名字是 spawning model 的自由文本)——
|
|
59
|
-
* 呈前消毒 + 截长,只渲染。
|
|
60
|
-
*/
|
|
61
1
|
import type { SubagentSteerReceipt } from '@sema-agent/sdk';
|
|
62
2
|
import { type SubagentOwnerRecord } from '../subagentContentStore.js';
|
|
63
|
-
/** 能力位键(server `routes/capabilities.ts` 的 `subagentResume`;SDK `Capabilities.subagentResume`)。 */
|
|
64
3
|
export declare const SUBAGENT_RESUME_CAP = "subagentResume";
|
|
65
|
-
/**
|
|
66
|
-
* 复活口在不在。未判/缺键 = false = 详情面不渲「继续」腿。
|
|
67
|
-
*
|
|
68
|
-
* 🔴 design/285 批 3(D7b):`baseUrl` 缺席时的派生从零参 `engineWireTarget()`(写死默认槽)换成
|
|
69
|
-
* `engineWireTargetFor(sessionKey)`。**本腿没有行上下文**(它答的是「这台引擎有没有这个口」,
|
|
70
|
-
* 不是「这一行该打到哪」)⇒ 槽键只能由调用方给,缺省 `DEFAULT_SESSION_KEY` = 与 0.44.0 逐字同。
|
|
71
|
-
* 显式 `baseUrl` 恒赢(既有注入缝不动;空串仍原样保留 —— `??` 只对 `undefined` 让位,与默认参形同)。
|
|
72
|
-
*/
|
|
73
4
|
export declare function subagentResumeAvailable(baseUrl?: string, sessionKey?: string): boolean;
|
|
74
|
-
/**
|
|
75
|
-
* 「继续」腿的 resume 取址(1.0.74 终扫 P2-11)。
|
|
76
|
-
*
|
|
77
|
-
* 🔴 resume API 的 `target` 契约只认两种取址:委派工具调用的 **parentToolCallId**(一等精确取址,
|
|
78
|
-
* 同型并发子代唯一能分开的键)与**子代显示名**(同名多员 ⇒ server 409 `steering.ambiguous_target`)。
|
|
79
|
-
* 行 taskId 不是契约取址形 —— 传它只会得到一条不带替代路径的歧义/未知错。
|
|
80
|
-
* alias 台账(`registerSubagentAlias`,task_progress 双携建;taskToParent 无删除无淘汰,子代 settle
|
|
81
|
-
* 后仍可取)⇒ 精确取址优先;显示名仅回落(它可能是 'Task' 字面占位,同名多员的 409 由每格出路
|
|
82
|
-
* 文案接);两支皆缺 ⇒ undefined,调用方按诚实缺席**不渲入口**。
|
|
83
|
-
*/
|
|
84
5
|
export declare function resolveSubagentContinueTarget(rowId: string, displayName: string | undefined): string | undefined;
|
|
85
|
-
/** 本层消费的 `client.runs` 切片(注入缝)。 */
|
|
86
6
|
export interface SubagentResumeFacade {
|
|
87
7
|
resumeSubagent(taskId: string, target: string, message: {
|
|
88
8
|
content: string;
|
|
@@ -91,228 +11,47 @@ export interface SubagentResumeFacade {
|
|
|
91
11
|
signal?: AbortSignal;
|
|
92
12
|
}): Promise<SubagentSteerReceipt>;
|
|
93
13
|
}
|
|
94
|
-
export type SubagentResumeFailureKind =
|
|
95
|
-
/** 没有 live 引擎 / 没有在飞 run —— 连地址都拼不出来(与「引擎拒了」是两回事)。 */
|
|
96
|
-
'no-wire' | 'no-run'
|
|
97
|
-
/** `resume.retain_off` —— 这条 run 没开 retainSubagentSessions(改配置才有救,重试无用)。 */
|
|
98
|
-
| 'retain-off'
|
|
99
|
-
/** `resume.evicted` / `resume.cap` / `resume.session_not_found` —— 留存**曾经在**,现在没了。 */
|
|
100
|
-
| 'retention-lapsed'
|
|
101
|
-
/** `steering.still_running` —— 它还在跑:该 steer,不该 resume(唯一「换个动作就成」的一格)。 */
|
|
102
|
-
| 'still-running'
|
|
103
|
-
/** `steering.not_running` —— 本副本无匹配 / run 已 settle。 */
|
|
104
|
-
| 'not-resumable'
|
|
105
|
-
/** `steering.ambiguous_target` —— 按名取址撞上同名多员(取址口径本身可分,是唯一「换个地址就成」的一格)。 */
|
|
106
|
-
| 'ambiguous-target'
|
|
107
|
-
/**
|
|
108
|
-
* `resume.row_recycling`(#318 件④ / [4743] SendMessage 复活语义半场)—— registry 行**正在被裁决**
|
|
109
|
-
* (另一个复活 claim 或一次 reap sweep 正持着它)。
|
|
110
|
-
* 🔴 与 `not-resumable` **禁合并**:core 铸文逐字「this clears on its own; send again in a moment」——
|
|
111
|
-
* 窗口自清,**同一条命令过一会儿就成**。渲成「不可复活」会把一个自愈的瞬时窗说成终局。
|
|
112
|
-
*/
|
|
113
|
-
| 'row-contended'
|
|
114
|
-
/**
|
|
115
|
-
* `resume.row_gone`(同上)—— registry 行**已经不存在**(终态 GC 收走了)。
|
|
116
|
-
* 🔴 与 `row-contended` **禁合并**:这一格**等也没用**,core 给的下一步是「relaunch a new agent」。
|
|
117
|
-
* 两码合并 = 一半用户白等、另一半白重开。
|
|
118
|
-
*/
|
|
119
|
-
| 'row-gone'
|
|
120
|
-
/**
|
|
121
|
-
* `resume.usage_window_exhausted` / `resume.preflight_rejected`(L-102,0.57.0;server ≥7.47.0 /
|
|
122
|
-
* ≥7.51.0,SDK 8.1.0 `ResumeRetryLaterError`)—— **有证据表明现在不行、过一会儿行**,也是这一族里
|
|
123
|
-
* **唯一带得出「等多久」**的一格({@link SubagentResumeFailureVerdict.retryAfterSec})。
|
|
124
|
-
* ⚠️ 「唯一带得出等待量」**不是**「唯一可等」——`row-contended` 那一格同样可等(窗口自清),
|
|
125
|
-
* 只是 server 给不出秒数。两件事别混。
|
|
126
|
-
*
|
|
127
|
-
* 🔴 与 `row-contended` **不合并**(两者都是「等」,但不是同一件事,也不是同一个量):
|
|
128
|
-
* `row-contended` 是**行级**的瞬时争用(另一个复活 claim / 一次 reap sweep 正持着它),窗口
|
|
129
|
-
* 自清、server 给不出秒数;本格是**部署级**的时间性拒绝(治理窗满 / 预检拒),server 明确给了
|
|
130
|
-
* 建议等待窗。合并会把一个有确定等待量的格说成「过一会儿再试试」,或者反过来给一个没有窗的
|
|
131
|
-
* 格编一个倒计时。
|
|
132
|
-
* 🔴 与 `retention-lapsed` / `row-gone` / `retain-off` **方向相反**:那三格**等也没用**。
|
|
133
|
-
* 🔴 处置 = **等,不是重发**:resume 是 AT-MOST-ONCE 的有副作用动作,本层照旧一格都不重试 ——
|
|
134
|
-
* 「可以再试」是说给**人**听的,不是给自动重试腿的授权。
|
|
135
|
-
* 🔴 **本格只收有正向证据的那些**(异源对抗复审 [medium] 真病修):`resume.usage_window_exhausted`
|
|
136
|
-
* 恒进本格(core 铸文的不变量就是证据);`resume.preflight_rejected` 只在 server 真给了等待窗
|
|
137
|
-
* 时进本格,否则落 {@link SubagentResumeFailureKind} 的 `'refused-preflight'`。
|
|
138
|
-
*/
|
|
139
|
-
| 'retry-later'
|
|
140
|
-
/**
|
|
141
|
-
* `resume.preflight_rejected` **且 server 没给等待窗**(L-102,0.57.0)—— 部署自己的 resume 预检拒了
|
|
142
|
-
* 这次,它是提交前的最后一档,所以**什么都没被消费**;但**还能不能再赎不可判**。
|
|
143
|
-
*
|
|
144
|
-
* 🔴 与 `retry-later` **禁合并**(异源对抗复审 [medium] 立的格):core 在这一码上有两条臂 ——
|
|
145
|
-
* `retry_later`(行留 pending,同一 token 可再赎)与 `terminal`(行已被单发 expire CAS 结清,
|
|
146
|
-
* token 不可再赎)——而**判别位在 message 散文里**,wire 上没有机读位。把没有证据的那些一律
|
|
147
|
-
* 渲成「稍后重试」,就是把一个终局说成暂时等待;而本包**不按文案分臂**(按文案分支 = 上游改
|
|
148
|
-
* 一个词就静默空转)。⇒ 诚实的第三条路:**说两条臂都成立的那句**,把「还能不能再赎」交给
|
|
149
|
-
* 引擎那行原文({@link SubagentResumeFailureVerdict.detail})。
|
|
150
|
-
* 🔴 **它不是「不可重试」**:`false` 只是「不可判」。端**不许**渲成终局,也**不许**渲成「稍后重试」。
|
|
151
|
-
*/
|
|
152
|
-
| 'refused-preflight'
|
|
153
|
-
/** 404 —— 未知 run / 非属主(**无存在性谕示**,两者同形)。 */
|
|
154
|
-
| 'not-found'
|
|
155
|
-
/** 400 —— 空 content 等入参问题。 */
|
|
156
|
-
| 'bad-request'
|
|
157
|
-
/** 开集兜底。 */
|
|
158
|
-
| 'error';
|
|
14
|
+
export type SubagentResumeFailureKind = 'no-wire' | 'no-run' | 'retain-off' | 'retention-lapsed' | 'still-running' | 'not-resumable' | 'ambiguous-target' | 'row-contended' | 'row-gone' | 'retry-later' | 'refused-preflight' | 'not-found' | 'bad-request' | 'error';
|
|
159
15
|
export type SubagentResumeOutcome = {
|
|
160
16
|
ok: true;
|
|
161
17
|
receipt: string;
|
|
162
|
-
}
|
|
163
|
-
/** 失败臂 = `ok:false` + {@link SubagentResumeFailureVerdict} 的四位(0.57.0 起含 `retryAfterSec`
|
|
164
|
-
* 与 `code`;两位都只在 L-102 那两格上可能在场。additive,既有按 `reason`/`detail` 读的宿主
|
|
165
|
-
* 一字不用改)。 */
|
|
166
|
-
| {
|
|
18
|
+
} | {
|
|
167
19
|
ok: false;
|
|
168
20
|
reason: SubagentResumeFailureKind;
|
|
169
21
|
detail: string;
|
|
170
22
|
retryAfterSec?: number;
|
|
171
23
|
code?: string;
|
|
172
24
|
};
|
|
173
|
-
/**
|
|
174
|
-
* {@link classifySubagentResumeFailure} 的判决(命名形;0.57.0 因 `retryAfterSec` 位达 3 成员抽名 ——
|
|
175
|
-
* 导出签名里不留 ≥3 成员的内联匿名形,typeshape B4 口径。结构与 0.56.0 的内联形逐字兼容)。
|
|
176
|
-
*/
|
|
177
25
|
export interface SubagentResumeFailureVerdict {
|
|
178
26
|
reason: SubagentResumeFailureKind;
|
|
179
|
-
/** server 的原话(UNTRUSTED;呈前由调用方消毒截长)。 */
|
|
180
27
|
detail: string;
|
|
181
|
-
/**
|
|
182
|
-
* **只在** `reason === 'retry-later'` 上可能在场 —— server 给的建议等待秒数(整数 ≥1)。
|
|
183
|
-
* 🔴 **缺席 ≠ 0**:缺席 = 服务端没给窗(老引擎 / 老 SDK 映射 / 该腿不发头),绝不渲一个编出来的
|
|
184
|
-
* 倒计时;别的 `reason` 上本位恒缺席。窄读域见 `resumeRetryLaterFromError`(同包
|
|
185
|
-
* `wireErrorTriage.ts`)。
|
|
186
|
-
* 🔴 **缺席时该说什么由 `reason` 决定,不由本位决定**:`retry-later` 且窗缺席(= 治理窗满而 server
|
|
187
|
-
* 没给数字)⇒ 说「稍后重试」但不给数字;`refused-preflight` ⇒ **不许**说「稍后重试」。
|
|
188
|
-
* 🔴 `reason === 'refused-preflight'` 上本位**恒缺席**——它正是「没有窗」那一格的定义。
|
|
189
|
-
*/
|
|
190
28
|
retryAfterSec?: number;
|
|
191
|
-
/**
|
|
192
|
-
* **只在** `reason` 是 `'retry-later'` / `'refused-preflight'` 两格上在场 —— 命中的那一个 wire 码
|
|
193
|
-
* (`resume.usage_window_exhausted` / `resume.preflight_rejected`)。
|
|
194
|
-
*
|
|
195
|
-
* 🔴 **为什么处置分了格还要把码带出来**:`retry-later` 这一格今天有两个来源(治理窗满 / 带窗的
|
|
196
|
-
* 预检拒),而端的诚实措辞不同 —— 前者说「本部署的用量窗满了」,后者说「部署的预检暂时拒了」。
|
|
197
|
-
* `detail` 是 server 的散文,**不是**机读位,别从它反解码。
|
|
198
|
-
* 别的 `reason` 上本位恒缺席(闭集之外本包不认得码,也就不替 server 声明成因)。
|
|
199
|
-
*/
|
|
200
29
|
code?: string;
|
|
201
30
|
}
|
|
202
|
-
/**
|
|
203
|
-
* resume 失败 → 处置分类。机器轴 = `errorCode`(开集);`status` 只用于**码缺席**时的两格粗分
|
|
204
|
-
* (404 无存在性谕示 / 400 入参),绝不用数字去猜某个具体 409 成因(那些 409 只有 `errorCode`
|
|
205
|
-
* 分得开,按数字分支等于把好几种处置压成一种)。
|
|
206
|
-
*/
|
|
207
31
|
export declare function classifySubagentResumeFailure(e: unknown): SubagentResumeFailureVerdict;
|
|
208
|
-
/**
|
|
209
|
-
* 「这一行子代该打到哪条 run」——**纯函数,单点判据**(对抗复审 H1 的修 + 它的可证伪点)。
|
|
210
|
-
*
|
|
211
|
-
* 🔴 **按行取,不取「此刻在飞的那条」**:`activeEngineRunId()` 是 turn-scoped(壳 `seamQuery` 在
|
|
212
|
-
* turn 收尾 `setActiveEngineTaskId(null)`),而「继续」这个动作按定义只在子代**已 settle** 之后
|
|
213
|
-
* 才出现 —— 那时它恒空;更坏的一支是另一条 turn 正飞时它有值但**是别的 run**,请求会打到不
|
|
214
|
-
* 相干的 run 上(404,或叫醒那条 run 里的同名子代)。判据必须锚在决定量(这一行的宿主 run)
|
|
215
|
-
* 上,不是锚在「有没有 run 在飞」这个前置条件上([anchor-on-the-deciding-quantity])。
|
|
216
|
-
*
|
|
217
|
-
* 三态:
|
|
218
|
-
* · 台账有这一行 ⇒ 用台账值(**哪怕此刻另有 run 在飞**);
|
|
219
|
-
* · 台账没有、且调用方**指名了某一行** ⇒ `undefined`(诚实不知道 ⇒ no-run 出路),绝不回落成在飞的那条;
|
|
220
|
-
* · 调用方**没指名行**(无行上下文的通用调用)⇒ 才回落到在飞的那条。
|
|
221
|
-
*
|
|
222
|
-
* @param activeRunId 注入缝(缺省 = `activeEngineRunId()`)—— 判据要能在没有 SessionPort 的纯层里验。
|
|
223
|
-
*/
|
|
224
32
|
export declare function resolveOwnerRunId(childTaskId?: string, activeRunId?: string | undefined): string | undefined;
|
|
225
|
-
/** {@link resolveOwnerContext} 的返回三件。 */
|
|
226
33
|
export interface SubagentOwnerContext {
|
|
227
|
-
/** 整条台账记录;`undefined` = **诚实不知道**,调用方走各自既有的缺席出路(绝不在这里回落)。 */
|
|
228
34
|
record: SubagentOwnerRecord | undefined;
|
|
229
|
-
/**
|
|
230
|
-
* `= record?.runId`,与既有 `getBgParentRun()` 逐字同。
|
|
231
|
-
* 🔴 **不含**「没指名行就回落到在飞 run」那一态 —— 那一态的判据住在 {@link resolveOwnerRunId},
|
|
232
|
-
* 本函数既不复制它,也**不读 SessionPort**(读了就会给 tail/output/taskHandle 三条
|
|
233
|
-
* 「台账缺席即诚实缺席」的腿凭空添一次 `activeEngineRunId()` 端口读)。
|
|
234
|
-
*/
|
|
235
35
|
runId: string | undefined;
|
|
236
|
-
/** 读侧要用的会话槽键 = `record.sessionKey ?? DEFAULT_SESSION_KEY`。 */
|
|
237
36
|
key: string;
|
|
238
37
|
}
|
|
239
|
-
/**
|
|
240
|
-
* 「这一行子代属于哪个会话槽」—— design/285 批 3(D6+D7b)读侧的**一次读**。
|
|
241
|
-
*
|
|
242
|
-
* 五个读点(tail / output / taskHandle 两口 / delegatedPrompt)此前各自读一次台账,而 wire target
|
|
243
|
-
* 一律走零参 `engineWireTarget()`(= 默认槽)。keyed 多会话宿主上那意味着「会话对了、打的服务器与
|
|
244
|
-
* 凭证可能还是别人的」(D7b)。本函数把「取哪一行的记录 + 它属于哪个槽」收成一处;
|
|
245
|
-
* `key` 缺席回落默认槽 ⇒ `engineWireTargetFor(DEFAULT_SESSION_KEY)` ≡ `engineWireTarget()`,
|
|
246
|
-
* 单会话宿主逐字同。
|
|
247
|
-
*
|
|
248
|
-
* 🔴 **会话策略刻意留在各腿**(不在这里合并):steer/tail/output 是二态(行的会话优先,缺则退现势),
|
|
249
|
-
* resume 是三态(指名了行却没有会话 ⇒ 干脆不带,AT-MOST-ONCE 不许猜)。收成一份就必然要加一个
|
|
250
|
-
* 「模式」参数,那等于把两条**有意不同**的口径伪装成同一个函数的两种配置。
|
|
251
|
-
*/
|
|
252
38
|
export declare function resolveOwnerContext(childTaskId?: string): SubagentOwnerContext;
|
|
253
|
-
/** 一次 resume 调用需要的三件:facade(null = 无 wire)、宿主 run(undefined = 诚实缺席)、会话参数。 */
|
|
254
39
|
export interface SubagentResumeContext {
|
|
255
40
|
facade: SubagentResumeFacade | null;
|
|
256
41
|
runId: string | undefined;
|
|
257
42
|
session: Record<string, string>;
|
|
258
43
|
}
|
|
259
|
-
/**
|
|
260
|
-
* 产品 facade + 运行定位。**逐字复用 `steerEngineSubagent` 的三步**(engineWireTarget → 无则 no-wire;
|
|
261
|
-
* 取运行 → 无则 no-run;makeEngineWireClient)—— 两条腿共用同一套装配,免得 steer 能到达而 resume
|
|
262
|
-
* 到不了(或反过来),那种不对称在用户面上表现为「同一个 agent 有时能说话有时不能」。
|
|
263
|
-
*
|
|
264
|
-
* 🔴 `session` 的三态(#242 批 2 定口径,对抗复审 medium 收紧):
|
|
265
|
-
* · 台账有这一行**且**捕到了它的会话 ⇒ 用**行登记的**会话(resume 是 per-id 读面,配错的
|
|
266
|
-
* `{runId, session}` 组合在 session-bound run 上 fail-closed 404);
|
|
267
|
-
* · 台账**有这一行但没捕到会话**(fleet 行帧腿/通知腿今天不传 session)⇒ **不带 `?session=`**,
|
|
268
|
-
* 🔴 **绝不拿「此刻的会话」去猜** —— resume 是有副作用的动作(AT-MOST-ONCE,叫醒 = 真跑一轮),
|
|
269
|
-
* 猜错会话可能落到**另一个会话的同名子代**上,那是不可回收的伤害;不带参数的失败只是 server
|
|
270
|
-
* fail-closed 的干净 404,已有 `not-found` 出路文案接。与本模块「错值比缺席更坏」同一条口径。
|
|
271
|
-
* · 调用方**完全没指名行**(无行上下文的通用调用)⇒ 才退当前会话(既有口径不变)。
|
|
272
|
-
* ⚠️ 供给面欠账(**已由 design/285 批 2 补上**):fleet/通知两腿此前手里没有流会话;ingress 落地后
|
|
273
|
-
* 它们按 `{runId, sessionId, sessionKey}` 三值原子写,第二态自然变成第一态,判据一字未改 ——
|
|
274
|
-
* 这正是本注 0.30.x 时预告过的那一步。
|
|
275
|
-
*
|
|
276
|
-
* 🔴 design/285 批 3(D7b):wire target 从零参 `engineWireTarget()`(默认槽)换成
|
|
277
|
-
* `engineWireTargetFor(owner.sessionKey ?? DEFAULT_SESSION_KEY)`。会话对了而 baseUrl/token/
|
|
278
|
-
* principal 还是别人的,等于把 resume 这条 AT-MOST-ONCE 的动作发到另一台引擎上。
|
|
279
|
-
* 第三态(没指名行)的现势会话回落**同样按 key**(`engineSessionParamFor(key)`)—— 没指名行时
|
|
280
|
-
* key 恒是默认槽,与 0.44.0 逐字同。
|
|
281
|
-
*/
|
|
282
44
|
export declare function resolveSubagentResumeContext(childTaskId?: string): SubagentResumeContext;
|
|
283
|
-
/**
|
|
284
|
-
* 叫醒一个已 settle 的保留子代。
|
|
285
|
-
*
|
|
286
|
-
* @param target parentToolCallId 或 agentName(与 `steerEngineSubagent` 同一取址口径;
|
|
287
|
-
* 同名多个活体 ⇒ server 409 `steering.ambiguous_target`)。
|
|
288
|
-
* 🔴 AT-MOST-ONCE:server 明写不重试。本层因此**不重试任何一格** —— 「叫醒」是有副作用的动作,
|
|
289
|
-
* 重投一次可能真的多跑一轮。
|
|
290
|
-
*/
|
|
291
45
|
export declare function resumeSettledSubagent(facade: SubagentResumeFacade | null, runId: string | undefined, target: string, content: string, opts?: {
|
|
292
46
|
session?: string;
|
|
293
47
|
signal?: AbortSignal;
|
|
294
48
|
}): Promise<SubagentResumeOutcome>;
|
|
295
|
-
/**
|
|
296
|
-
* {@link auditRetainWithoutWake} 的判决(对抗复审 low 收紧的**返回契约**)。
|
|
297
|
-
*
|
|
298
|
-
* 两位分别回答两个不同的问题,**不许合成一个**:
|
|
299
|
-
* · `message` = 组合成不成立(成立才有这条记录;`undefined` 返回 = 不成立);
|
|
300
|
-
* · `emitted` = **本次**响没响(per-baseUrl once 去重命中时为 `false`)。
|
|
301
|
-
* 旧形(去重命中仍回正文)有双义:按返回值呈现的调用方会**重复提示**,而「至多一次」的承诺
|
|
302
|
-
* 只兑现在日志上。调用方要「只提示一次」就看 `emitted`,要「组合还成不成立」就看有没有记录。
|
|
303
|
-
*/
|
|
304
49
|
export interface RetainWithoutWakeVerdict {
|
|
305
50
|
message: string;
|
|
306
51
|
emitted: boolean;
|
|
307
52
|
}
|
|
308
|
-
/** {@link auditRetainWithoutWake} 的入参(命名形:导出签名里不留 ≥3 成员的内联匿名形)。 */
|
|
309
53
|
export interface RetainWithoutWakeInput {
|
|
310
54
|
baseUrl?: string | undefined;
|
|
311
|
-
/**
|
|
312
|
-
* 本端的 `ClientSliceLike` 实现(或它的任意子集)。类型刻意窄到 `wakeSubagent` 这一位的**函数
|
|
313
|
-
* 形**而不是 `unknown` —— 判据是「这个 verb 实现了没有」,而 `unknown` 会把「端传了个字符串」
|
|
314
|
-
* 也算成合法入参(边界层的 unknown 必须在本模块内窄化,typeshape 门守的正是这条)。
|
|
315
|
-
*/
|
|
316
55
|
slice?: {
|
|
317
56
|
wakeSubagent?: ((input: {
|
|
318
57
|
taskId: string;
|
|
@@ -320,23 +59,7 @@ export interface RetainWithoutWakeInput {
|
|
|
320
59
|
}) => Promise<void>) | undefined;
|
|
321
60
|
} | null | undefined;
|
|
322
61
|
retainRequested?: boolean | undefined;
|
|
323
|
-
/**
|
|
324
|
-
* 🔴 design/285 批 3(D7b):`baseUrl` 缺席时按哪个会话槽派生。缺省 `DEFAULT_SESSION_KEY`
|
|
325
|
-
* ⇒ 与 0.44.0 逐字同(零参 `engineWireTarget()` 就是默认槽)。本告警是**per-baseUrl once**
|
|
326
|
-
* 的,keyed 宿主不点名槽就会让两个槽共用一条 once 记录(先响的那个把另一个吞掉)。
|
|
327
|
-
*/
|
|
328
62
|
sessionKey?: string | undefined;
|
|
329
63
|
}
|
|
330
|
-
/**
|
|
331
|
-
* 「引擎有复活口 + 本端在付留存成本 + 本端没有 wake 实现」⇒ 响亮一条(每 baseUrl 至多一次)。
|
|
332
|
-
*
|
|
333
|
-
* 返回 {@link RetainWithoutWakeVerdict}:`undefined` = 组合不成立(没这笔账);有记录 = 组合成立,
|
|
334
|
-
* 其中 `emitted` 说明**本次**响没响。**返回值即判据** —— 只落日志的告警在测试里等于不存在,
|
|
335
|
-
* 而只回一个字符串又分不出「本次响了」与「早响过了」(按返回值呈现的调用方会重复提示)。
|
|
336
|
-
*
|
|
337
|
-
* @param slice 本端的 `ClientSliceLike` 实现(或它的任意子集);`wakeSubagent` 不是函数即算未实现。
|
|
338
|
-
* @param retainRequested 本端 run 请求里的 `retainSubagentSessions`(缺省 true = 包内 taskRequest 的缺省)。
|
|
339
|
-
*/
|
|
340
64
|
export declare function auditRetainWithoutWake(input: RetainWithoutWakeInput): RetainWithoutWakeVerdict | undefined;
|
|
341
|
-
/** 测试钩:清 once 去重台账。 */
|
|
342
65
|
export declare function __resetRetainWithoutWakeWarningForTests(): void;
|