@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,71 +1,21 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* design/161 — client-core 顶层单入口:**契约收敛物**(纯类型,零运行时;实现分批跟进)。
|
|
3
|
-
*
|
|
4
|
-
* 这是立项的唯一权威签名源(clay 三裁 2026-07-30 + 对抗复审 r1 收敛;两份文档签名互不相容的
|
|
5
|
-
* 教训 = 收敛物必须是 tsc 管得住的代码,见 sema-internal design-161-review-r1.md §〇)。
|
|
6
|
-
* 实现工单以本文件为锚:W1 per-session 化 → 入口实现 → W5 冷接 → 三端迁移(desktop → sema-web
|
|
7
|
-
* 聊天区 → web-client)。**本文件不进 index.ts barrel,实现落地一件出口一件。**
|
|
8
|
-
*
|
|
9
|
-
* ══ 三个入口,不是一个 ═══════════════════════════════════════════════════════════════════
|
|
10
|
-
* 1. `createAgentSession(config)` —— per-session 会话流面(AgentEvent → SDKMessage + HITL 桥 +
|
|
11
|
-
* 终态投影)。wire 只有一种:SDK 的 `AgentClientConfig` 判别联合(client/relay 本就是它的两臂,
|
|
12
|
-
* r1 E3 —— 在这里再判一次就是复制 SDK)。
|
|
13
|
-
* 2. `attachSeatSession(seatApi)` —— 层 2 远程代理:座位(Electron renderer / web seat lane)侧
|
|
14
|
-
* **没有 AgentEvent 流**(收到的已是 main 进程 adapt 后的 SDKMessage,seatContract:49-56),
|
|
15
|
-
* 所以它不是第三个 wire 臂,是层 1 返回面的**同型转发**(内部零 wire、零 adapt)。
|
|
16
|
-
* 3. `createBackgroundView(client)` —— 平行入口(clay 二裁 2026-07-30):`assistant.tasks` 与
|
|
17
|
-
* `fleet` 都是**会话外读面**(assistant 跨 session;fleet 是 idle 壳唯一保持订阅的常驻 SSE),
|
|
18
|
-
* 生命周期不该绑在某个会话的 dispose() 上,所以归一投影不进 createAgentSession。
|
|
19
|
-
*/
|
|
20
1
|
import type { AgentClient, AgentClientConfig } from '@sema-agent/sdk';
|
|
21
|
-
/**
|
|
22
|
-
* 已构造 client 的接入臂 **必须同时带构造参数** —— `AgentClient.config` 是 private
|
|
23
|
-
* (sdk client.d.ts:124),包拿不回 baseUrl/authToken/principal,而入口要用它们做四件事:
|
|
24
|
-
* caps 探针 kick ×2、task-agents wire 预备、durable 读面的 client 另建(planReview 同款)。
|
|
25
|
-
* 不带这三样的「裸 client」臂在 r1 E3-2 已证伪。
|
|
26
|
-
*/
|
|
27
2
|
export interface ProvidedClientWire {
|
|
28
3
|
readonly client: AgentClient;
|
|
29
4
|
readonly baseUrl: string;
|
|
30
5
|
readonly authToken: AgentClientConfig['authToken'];
|
|
31
6
|
readonly principal?: string;
|
|
32
7
|
}
|
|
33
|
-
/** wire 入参:给配置则入口自建 client;给 ProvidedClientWire 则复用宿主的(参数齐备)。 */
|
|
34
8
|
export type AgentSessionWire = AgentClientConfig | ProvidedClientWire;
|
|
35
9
|
export interface AgentSessionHostSurface {
|
|
36
|
-
/** 转录消费口(SDKMessage 流的宿主端)。缺席 ⇒ 入口拒绝启动(没有它整个入口无意义)。 */
|
|
37
10
|
onTranscript(msg: unknown): void;
|
|
38
|
-
/**
|
|
39
|
-
* chrome 装饰臂(seam.ts CHROME_ARMS 表)。缺席的 required 臂 = 功能静默不出现
|
|
40
|
-
* (desktop 今天缺 7/8,r1 E8c)——所以本口的自检是**表驱动**的:实现必须提供
|
|
41
|
-
* `chromeArmMisses()`,对 `required:true` 且未被消费的臂逐臂计数,门断言恒 0。
|
|
42
|
-
*/
|
|
43
11
|
onChrome?(event: unknown): void;
|
|
44
|
-
/**
|
|
45
|
-
* 工具审批卡口。两条腿:
|
|
46
|
-
* sync-frame 腿:缺席 ⇒ 主动 respond deny(现行为,保留);
|
|
47
|
-
* durable-park 腿:缺席 ⇒ 🔴 **主动 decide deny + 一条诚实告知行**(行为变更,替换今天的
|
|
48
|
-
* fail-stuck;candidates 见下方 OPEN-1 —— headless「留 park 待接手」场景是否豁免候 clay)。
|
|
49
|
-
*/
|
|
50
12
|
approvalCard?: unknown;
|
|
51
|
-
/** AskUserQuestion overlay 口。durable 腿缺席后果同上(deny 语义 = respond 取消形)。 */
|
|
52
13
|
askQuestion?: unknown;
|
|
53
|
-
/**
|
|
54
|
-
* plan review 口。缺席 ⇒ 今天是「卡永不出现且静默」(planReviewWire.ts:77 fail-soft)——
|
|
55
|
-
* 改为:至少产出一条可见终态行(引擎在等,人必须知道)。卡的**皮肤归端**(desktop 的
|
|
56
|
-
* ExitPlanMode 权限卡形 vs cli 的 overlay 形都合法,包只出数据与决断口;OPEN-2)。
|
|
57
|
-
*/
|
|
58
14
|
planReview?: unknown;
|
|
59
|
-
/** 通知队列口(缺席=计 miss,静默可接受 —— 引擎不等)。 */
|
|
60
15
|
notify?: unknown;
|
|
61
|
-
/** 后台任务转发口(会话自己流上的 task_notification / subagent_lifecycle;跨会话视图归 createBackgroundView)。 */
|
|
62
16
|
onBackgroundTask?(event: unknown): void;
|
|
63
|
-
/** 身份采集口(meta.taskId + done.result.sessionId;三端各写一份的第 5 缺口)。 */
|
|
64
17
|
onIdentity?(identity: AgentSessionIdentity): void;
|
|
65
|
-
/** 未知帧告警口(包内四层 default 静默的补偿;milestone 节流姿势收编 web-client frame-warnings)。 */
|
|
66
18
|
onUnknownFrame?(frame: unknown): void;
|
|
67
|
-
/** turn 级错误口(9 类 taxonomy + 状态码链 + wire-code 闭集表 —— 收编 web-client 三件套并接
|
|
68
|
-
* controlRouter.errCodes 单源,r1 E7:不是「三分诊」)。 */
|
|
69
19
|
onTurnError?(err: unknown): void;
|
|
70
20
|
}
|
|
71
21
|
export interface AgentSessionIdentity {
|
|
@@ -74,23 +24,12 @@ export interface AgentSessionIdentity {
|
|
|
74
24
|
}
|
|
75
25
|
export interface AgentSessionConfig {
|
|
76
26
|
readonly wire: AgentSessionWire;
|
|
77
|
-
/** 请求车道(taskRequest.ts 的 RequestLane;web 传输 lane 是另一个轴,别混,r1 角度2)。 */
|
|
78
27
|
readonly lane: 'interactive' | 'print';
|
|
79
28
|
readonly hostSurface: AgentSessionHostSurface;
|
|
80
|
-
/**
|
|
81
|
-
* per-session 键(W1):包内单槽位全部改「sessionKey → 注册表」,零参旧 API = default-key
|
|
82
|
-
* 兼容层(cli 的 module-load 装配不动)。多会话宿主(desktop)每会话一键,互不顶盖。
|
|
83
|
-
*/
|
|
84
29
|
readonly sessionKey?: string;
|
|
85
30
|
}
|
|
86
31
|
export interface AgentSession {
|
|
87
|
-
/** 发起一个 turn(内部:buildTaskRequest 唯一构造口 + runStream 内建去重 + HITL 桥)。 */
|
|
88
32
|
query(input: unknown): AsyncIterable<unknown>;
|
|
89
|
-
/**
|
|
90
|
-
* 冷接(W5,r1 E9):按调用方给的 id 接上一个**不是本进程发起**的在飞 run(页面刷新 / 桌面
|
|
91
|
-
* 重启 / 跨端接手)。与 query() 同一消费面;park 帧在冷接腿上同样可决断。
|
|
92
|
-
* 这是 sema-web stream-core 旧腿退役的前置能力 —— 没有它退役 = 删掉唯一的刷新恢复路径。
|
|
93
|
-
*/
|
|
94
33
|
attach(target: {
|
|
95
34
|
taskId: string;
|
|
96
35
|
sessionId?: string;
|
|
@@ -98,28 +37,18 @@ export interface AgentSession {
|
|
|
98
37
|
interrupt(): Promise<void>;
|
|
99
38
|
steer(text: string): Promise<void>;
|
|
100
39
|
resumeAfterDecision(): Promise<void>;
|
|
101
|
-
/** 面缺席自检出口(测试面,恒 0 断言;不是运行期告警 —— Ink 吞 console,r1 E6)。 */
|
|
102
40
|
surfaceMisses(): Readonly<Record<string, number>>;
|
|
103
41
|
identity(): AgentSessionIdentity;
|
|
104
42
|
dispose(): void;
|
|
105
43
|
}
|
|
106
|
-
/** 层 1:唯一的 wire 入口。 */
|
|
107
44
|
export type CreateAgentSession = (config: AgentSessionConfig) => AgentSession;
|
|
108
|
-
/**
|
|
109
|
-
* 层 2:座位远程代理 —— 与 AgentSession **同型**(同一个接口),内部把每个方法转发给座位 IPC
|
|
110
|
-
* (seatContract 的 verb 面),零 wire 零 adapt。座位可达字段集是 9 键闭集(< interactive 的
|
|
111
|
-
* ~25 键)—— 该不对称必须**显式暴露**(supportedFields),端上的控件按它显隐,不许各自再判。
|
|
112
|
-
*/
|
|
113
45
|
export type AttachSeatSession = (seatApi: unknown) => AgentSession & {
|
|
114
46
|
readonly supportedFields: readonly string[];
|
|
115
47
|
};
|
|
116
48
|
export type BackgroundSource = 'assistant' | 'fleet';
|
|
117
|
-
/** not-configured = assistant 无 TiDB 时的 `{tasks:[]}` 形 —— 与「真没有任务」必须可区分。 */
|
|
118
49
|
export type BackgroundSourceHealth = 'ok' | 'unavailable' | 'not-configured';
|
|
119
|
-
/** 第三套中性词表(不用任一方词表:3 值压不住 9 值,9 值会造 assistant 侧不存在的态)。 */
|
|
120
50
|
export type BackgroundStatus = 'running' | 'waiting-on-human' | 'queued' | 'stopping' | 'done' | 'failed' | 'stopped' | 'unknown';
|
|
121
51
|
export interface BackgroundRow {
|
|
122
|
-
/** 带来源判别;fleet 复合 id("<runId> <taskId>")不拆 —— 裸 id union 会重复计数。 */
|
|
123
52
|
readonly key: {
|
|
124
53
|
readonly source: 'assistant';
|
|
125
54
|
readonly taskId: string;
|
|
@@ -128,34 +57,9 @@ export interface BackgroundRow {
|
|
|
128
57
|
readonly rowId: string;
|
|
129
58
|
};
|
|
130
59
|
readonly status: BackgroundStatus;
|
|
131
|
-
/** 统一 epoch ms;assistant 的 ISO 串只在边界转一次。 */
|
|
132
60
|
readonly updatedAtMs?: number;
|
|
133
|
-
/**
|
|
134
|
-
* 行**创建**时刻(统一 epoch ms)。语义 = 这一行是什么时候被排上的,不是什么时候开跑的。
|
|
135
|
-
* · assistant 臂:`AssistantTask.createdAt`(wire 是 ISO 串,与 updatedAt 同一个边界转换器);
|
|
136
|
-
* · fleet 臂:wire 上**没有这个量** ⇒ fleet 行恒缺席(fleet 给的是 {@link startedAtMs})。
|
|
137
|
-
* 缺席后果:端渲不出「排了多久」,必须不渲 —— 🔴 绝不 `?? Date.now()`/`?? 0` 冒充,也绝不拿
|
|
138
|
-
* updatedAtMs 顶替(那是「最后一次动」,不是「什么时候来的」)。
|
|
139
|
-
*/
|
|
140
61
|
readonly createdAtMs?: number;
|
|
141
|
-
/**
|
|
142
|
-
* 行**开跑**时刻(统一 epoch ms)= elapsed 的锚。
|
|
143
|
-
* · fleet 臂:`FleetTaskRow.startedAt`(server ≥1.250,fleet-bus.ts:94;launch 时刻,revive 行
|
|
144
|
-
* = 本 revive 周期的 wake 时刻)。契约级别 **ADDITIVE / tolerate-absent** —— 排队中的行本就
|
|
145
|
-
* 没有它(server 侧据此把显示态落 queued),消费端**不能当必填**。
|
|
146
|
-
* · assistant 臂:wire 上没有 launch 时刻 ⇒ assistant 行恒缺席(它给的是 {@link createdAtMs})。
|
|
147
|
-
* 为什么是它而不是 server 的 `elapsedMs`:后者是发帧那一刻的快照,客户端拿着自算会漂;
|
|
148
|
-
* 锚是绝对时刻才稳(server [C36])。缺席后果:端**不渲时长**(假 0s 比不渲更坏)。
|
|
149
|
-
*/
|
|
150
62
|
readonly startedAtMs?: number;
|
|
151
|
-
/**
|
|
152
|
-
* 这一行所属的引擎会话 id。语义 = 「跳到该会话 / 按会话归组」这类 affordance 的目标。
|
|
153
|
-
* · assistant 臂:`AssistantTask.sessionId`(wire 恒在场);
|
|
154
|
-
* · fleet 臂:server 在 `stripT`(routes/fleet.ts:95)里把 `sessionId`/`scope` 剥掉不上 wire
|
|
155
|
-
* ⇒ fleet 行恒缺席,别在投影里等它([C36] 事实②)。
|
|
156
|
-
* 缺席后果:那条跳转/归组的 affordance **必须显隐** —— 没有已挣得的目标就不摆入口
|
|
157
|
-
* (假 affordance 比没有更坏);🔴 绝不 `?? ''` 造一个空会话 id 出来。
|
|
158
|
-
*/
|
|
159
63
|
readonly sessionId?: string;
|
|
160
64
|
readonly needsAttention?: boolean;
|
|
161
65
|
readonly name?: string;
|
|
@@ -167,9 +71,7 @@ export interface BackgroundRow {
|
|
|
167
71
|
readonly gate?: unknown;
|
|
168
72
|
}
|
|
169
73
|
export interface BackgroundView {
|
|
170
|
-
/** 🔴 一等返回位,端必须渲它 —— 源不可用/未配置与「空列表」是三件事。 */
|
|
171
74
|
readonly sources: Readonly<Record<BackgroundSource, BackgroundSourceHealth>>;
|
|
172
|
-
/** fleet 子行(parentId 在场)不进跨 session 视图(子代不是用户的独立后台任务)。 */
|
|
173
75
|
readonly rows: readonly BackgroundRow[];
|
|
174
76
|
}
|
|
175
77
|
export type CreateBackgroundView = (client: AgentClient) => {
|
|
@@ -1,13 +1 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
// ── 已裁定(clay 终裁 2026-07-31,档 sema-internal e2b874c;实现必须遵守)──────────────────────
|
|
3
|
-
// RULED-1 durable park 腿面缺席 = **分形**:
|
|
4
|
-
// · 面「注册过但坏了」(卡口异常)→ 主动 decide deny + 诚实告知行(解锁优先);
|
|
5
|
-
// · 面「从未注册」(print/headless 本无卡口)→ 保留 park + 打印含 resume 指令的告知行
|
|
6
|
-
// (接手优先 —— headless 故意留 park 换 REPL/desktop 决断是合法场景)。
|
|
7
|
-
// 🔴 附加不变式(clay 原话「danger 权限保证全部畅通即可」):bypassPermissions/danger 模式下
|
|
8
|
-
// 审批链全程畅通 —— 零 park、零卡、零 deny,本缺席矩阵整表不适用;实现必带一条 danger-lane
|
|
9
|
-
// e2e 断言(danger 会话跑到审批点零停顿直通)。
|
|
10
|
-
// RULED-2 plan review 卡形 = **皮肤归端**:包只出数据+决断口;desktop 保持 ExitPlanMode 权限
|
|
11
|
-
// 卡形(CC 对位),cli 保持 overlay 形,不强制统一 UI。
|
|
12
|
-
// OPEN-3(实现期):file_link / live elicitation 两条 wire 缺口先补进 adapt(E8a/E8b,
|
|
13
|
-
// elicitation 方向 = 把 desktop/web 那份**上交**成包件)。
|
package/dist/agentsWireCaps.d.ts
CHANGED
|
@@ -7,36 +7,18 @@ export declare const MAX_AGENT_TOOLS = 64;
|
|
|
7
7
|
export declare const MAX_AGENT_TOOL_NAME_CHARS = 128;
|
|
8
8
|
export declare const MAX_AGENT_SKILL_CONTENT_CHARS = 1048576;
|
|
9
9
|
export declare const MAX_AGENT_MAX_TURNS = 1000;
|
|
10
|
-
/** server 1.205 TASK_AGENT_FIELD_SHAPES 的 15 字段白名单(permissionMode 显式拒收,不在表内)。 */
|
|
11
10
|
export declare const TASK_AGENT_WIRE_FIELDS: readonly ["name", "whenToUse", "whenToUseLean", "allowTools", "denyTools", "skills", "background", "isolation", "model", "thinking", "systemPrompt", "maxTurns", "memory", "observer", "observerMessage"];
|
|
12
|
-
/** core ThinkingLevel 词表(effortWire.ReasoningEffort 与之完全一致)。 */
|
|
13
11
|
export type WireThinkingLevel = 'off' | 'minimal' | 'low' | 'medium' | 'high' | 'xhigh' | 'max';
|
|
14
12
|
export type TaskAgentWireSkill = {
|
|
15
13
|
name: string;
|
|
16
14
|
description: string;
|
|
17
15
|
content: string;
|
|
18
16
|
};
|
|
19
|
-
/** CC 形自定义 agent 的 `memory:` 三词(cli `loadAgentsDir` 的 zod 枚举同源)。 */
|
|
20
17
|
export declare const AGENT_MEMORY_WORDS: ReadonlySet<string>;
|
|
21
|
-
/**
|
|
22
|
-
* `agents[].memory` 上 wire 的形(上游闭合白名单 `{ scopes?, writeScope?, enabled?, scopeContract? }` 的子集:本包只用前两键)。
|
|
23
|
-
*
|
|
24
|
-
* 🔴 **CC-96 放宽**:`writeScope` 此前写死成 `string`(恒在、且不可为 `null`),而 wire 的取值域是 `string | null`
|
|
25
|
-
* (上游直讯确认该域不变)。写死的后果是**读得出却铸不出** —— {@link import('./memorySpecWire.js').readAgentMemorySpec}
|
|
26
|
-
* 能把显式 `null` 读成「这一次 run 对记忆面只读」(无 remember 工具、不做 consolidation 写,recall 仍可),
|
|
27
|
-
* 而端**没有任何办法经本包声明**这一形:只剩「写到某一层」一条路。半条腿的读面比没有更坏,因为它让
|
|
28
|
-
* 「本端支持只读记忆」看起来是真的。
|
|
29
|
-
* · `writeScope: null` = 显式声明只读;
|
|
30
|
-
* · `writeScope` 键缺席 = 未指定(缺省归引擎);
|
|
31
|
-
* · `writeScope: '<层名>'` = 写到那一层。
|
|
32
|
-
* 🔴 放宽的是**类型**,不是本包投影器的纪律:{@link projectAgentsForWire} 仍**恒显式钉** `writeScope`
|
|
33
|
-
* (见下方投影处的 🔴 注),漏钉会让新条目静默写进全局层 —— 那条约束一个字都没松。
|
|
34
|
-
*/
|
|
35
18
|
export type TaskAgentWireMemory = {
|
|
36
19
|
scopes: string[];
|
|
37
20
|
writeScope?: string | null;
|
|
38
21
|
};
|
|
39
|
-
/** 发往 server 的单个 agent 定义(白名单内字段的壳侧子集——observer 面壳无语义,恒不发;`memory` 自 0.72.3 按定义发)。 */
|
|
40
22
|
export type TaskAgentWireItem = {
|
|
41
23
|
name: string;
|
|
42
24
|
whenToUse?: string;
|
|
@@ -49,15 +31,8 @@ export type TaskAgentWireItem = {
|
|
|
49
31
|
thinking?: WireThinkingLevel;
|
|
50
32
|
systemPrompt?: string;
|
|
51
33
|
maxTurns?: number;
|
|
52
|
-
/**
|
|
53
|
-
* CC-39①(0.72.3,core #863 G-5 / R-6):自定义 agent 的 `memory: user|project|local` **三词同映射**为引擎平面
|
|
54
|
-
* `{ scopes: ["agent:<type>"], writeScope: "agent:<type>" }`(= CC `user` 语义;in-repo 两形候裁,`project` / `local`
|
|
55
|
-
* 各出一条一次性 warn)。🔴 `writeScope` 必须显式钉:core `normalizeMemorySpec` 缺省取 scopes 末层,漏钉 = 新条目
|
|
56
|
-
* 静默写进全局层。词表外 ⇒ 不发本键 + warn(server `memoryOk` 是闭合白名单,脏形整 agent 400)。缺席 ⇒ 键不在场。
|
|
57
|
-
*/
|
|
58
34
|
memory?: TaskAgentWireMemory;
|
|
59
35
|
};
|
|
60
|
-
/** 投影输入的结构型(loadAgentsDir.AgentDefinition 的窄切片——纯模块不拉运行时依赖图)。 */
|
|
61
36
|
export type AgentDefLike = {
|
|
62
37
|
agentType: string;
|
|
63
38
|
whenToUse?: string;
|
|
@@ -69,80 +44,33 @@ export type AgentDefLike = {
|
|
|
69
44
|
maxTurns?: number;
|
|
70
45
|
background?: boolean;
|
|
71
46
|
isolation?: 'worktree' | 'remote';
|
|
72
|
-
/** CC 形 `memory:` 前置字段(cli zod 枚举 user|project|local;本包按开集串收,词表外不发)。 */
|
|
73
47
|
memory?: string;
|
|
74
48
|
source: string;
|
|
75
49
|
getSystemPrompt?: (arg?: unknown) => string;
|
|
76
50
|
};
|
|
77
|
-
/** 纯投影的注入读面(单测注入 fixture;产品缺省真读面在 prepare 里拼)。 */
|
|
78
51
|
export type ProjectAgentsDeps = {
|
|
79
|
-
/** F5a 中央解析器切片:frontmatter model 词 → 真模型名或 'inherit'(warning 一次性)。 */
|
|
80
52
|
resolveModel: (frontmatterModel: string | undefined) => {
|
|
81
53
|
model: string;
|
|
82
54
|
warning?: string;
|
|
83
55
|
};
|
|
84
|
-
/** 壳 effort 值 → ThinkingLevel(词表外 → undefined 不发)。 */
|
|
85
56
|
effortToThinking: (effort: unknown) => WireThinkingLevel | undefined;
|
|
86
|
-
/** 已加载的 skill 全文(名字 join 用);undefined = 本次不点亮 skills 字段。 */
|
|
87
57
|
skillSpecs?: TaskAgentWireSkill[];
|
|
88
58
|
};
|
|
89
59
|
export type ProjectAgentsResult = {
|
|
90
60
|
agents: TaskAgentWireItem[] | undefined;
|
|
91
|
-
/** 剪裁/降级告警(调用层一次性打 stderr)。 */
|
|
92
61
|
warnings: string[];
|
|
93
62
|
};
|
|
94
|
-
/**
|
|
95
|
-
* 纯投影:壳 AgentDefinition[](F5a activeAgents)→ server 白名单载荷。built-in 恒过滤(引擎有
|
|
96
|
-
* 自己的内置 roster);形状违规壳侧收紧(server 是整请求 400,不能把脏字段交出去)。
|
|
97
|
-
*/
|
|
98
63
|
export declare function projectAgentsForWire(defs: readonly AgentDefLike[], deps: ProjectAgentsDeps): ProjectAgentsResult;
|
|
99
|
-
/**
|
|
100
|
-
* SDK 0.0.52 client.capabilities()(GET /v1/capabilities,Capabilities 全类型面)→ 顶层
|
|
101
|
-
* `taskAgents` 布尔(SDK 宪法迁移批:raw fetch + body 裸读退役,改 typed 读)。
|
|
102
|
-
* true = 确证支持;false = 确证不支持(200 但 taskAgents !== true:旧 server 无该字段,或多租
|
|
103
|
-
* requirePrincipal fail-closed 报 false);undefined = 无法确证(不可达/超时/非 2xx/不可
|
|
104
|
-
* 解析 —— SDK 对这些统一抛错,catch 归一)⇒ 调用层 fail-soft 照发(旧 server 静默剥字段
|
|
105
|
-
* 无害;引擎真死 stream 自己 fail-loud)。
|
|
106
|
-
* 等价性:3s 预算改经 client timeoutMs;maxRetries=0 单发(否则 503 会按 SDK 缺省重试,探测预算
|
|
107
|
-
* 语义变形)。principal 头:SDK 6.11 起值检查删头——缺席不发(与原手抄同义;F-011 停发后
|
|
108
|
-
* 单机形恒缺席,owner-null)。
|
|
109
|
-
*/
|
|
110
64
|
export declare function engineSupportsTaskAgents(baseUrl: string, opts?: EngineProbeOpts): Promise<boolean | undefined>;
|
|
111
|
-
/**
|
|
112
|
-
* prepare 腿的连线配置。`authToken` 是**串或取值函数**({@link WireAuthTokenSource},0.62.0 放宽):
|
|
113
|
-
* 函数形每发一次请求读一次 ⇒ 引擎换代、凭证换新之后端只换值,不必重建 client。串形零行为差。
|
|
114
|
-
*/
|
|
115
65
|
export type WireConfig = {
|
|
116
66
|
baseUrl: string;
|
|
117
67
|
authToken?: WireAuthTokenSource;
|
|
118
68
|
principal?: string;
|
|
119
69
|
};
|
|
120
|
-
/** IO 半场注入的产品投影闭包(F5a 定义加载 + model 解析 + skills join)。 */
|
|
121
70
|
export type ProjectorFn = () => Promise<ProjectAgentsResult>;
|
|
122
|
-
/**
|
|
123
|
-
* kick 探测 + 加载 + 投影(createLiveConversationClient 构造时调;幂等——同 baseUrl 只跑一次)。
|
|
124
|
-
*/
|
|
125
71
|
export declare function prepareTaskAgentsWireWith(cfg: WireConfig, projector: ProjectorFn): Promise<void>;
|
|
126
|
-
/**
|
|
127
|
-
* 有界就绪门(liveClient.stream 首帧前 await;缺省 4s 上限)。prepare 未 kick(mock 车道/测试)或
|
|
128
|
-
* 超时 ⇒ 立即放行(本 turn 不带 agents,fail-soft)。永不抛。
|
|
129
|
-
*
|
|
130
|
-
* 🔴 域词表-13(RB-447 同形):这个 race 的唯一有界退出臂**绝不 unref**——它是被调用方真
|
|
131
|
-
* await 的控制流(liveClient.ts `await awaitTaskAgentsWire()`),不是后台保活豁免;unref 会让
|
|
132
|
-
* 宿主进程能在它 settle 前提前退出,届时这个 await 永远等不到结果。对照组:
|
|
133
|
-
* askGateWire.ts 的 budget 定时器同样 unref,但它挂在无人 await 的 `void Promise.race(...)` 上,
|
|
134
|
-
* 后果只是丢一行 warn——两处形状相同后果不同,分野在于「这个 promise 有没有被 await」,不能
|
|
135
|
-
* 套用同一个 unref 兼容套(见 unrefTimer.ts 头注)。race settle 后 clearTimeout 掉该句柄
|
|
136
|
-
* (此前完全没有 clear,超时臂即使先输也留着一个已到期的句柄)。
|
|
137
|
-
*/
|
|
138
72
|
export declare function awaitTaskAgentsWire(timeoutMs?: number): Promise<void>;
|
|
139
|
-
/**
|
|
140
|
-
* 同步读面(liveClient.toLiveRequest 消费):当前投影好的 agents 载荷。每次读取后 kick 一次后台
|
|
141
|
-
* re-project(热加载 next-turn freshness:watcher clear loadAgentsDir memoize 后,下一 turn 拿新定义;
|
|
142
|
-
* 缓存未清时 re-project 近零开销)。能力已确证 false ⇒ 恒 {}。
|
|
143
|
-
*/
|
|
144
73
|
export declare function taskAgentsField(): {
|
|
145
74
|
agents?: TaskAgentWireItem[];
|
|
146
75
|
};
|
|
147
|
-
/** 测试钩子:清空模块态(prepare 缓存/一次性告警集)。 */
|
|
148
76
|
export declare function _resetAgentsWireForTest(): void;
|
package/dist/agentsWireCaps.js
CHANGED
|
@@ -1,25 +1,13 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* ⇄ B2 批搬迁(2026-07-27,多端改造设计稿 §3 B2):cli src/sema/agentsWireCaps.ts 逐字搬入(依赖 engineWireSdk,同批)。
|
|
3
|
-
*/
|
|
4
|
-
/**
|
|
5
|
-
* src/sema/agentsWireCaps.ts — F5b agents wire 纯半场(skillsWireCaps 同款拆分:规则/投影/探测/
|
|
6
|
-
* 模块态全在这,零产品依赖图;IO 半场见 agentsWire.ts——产品读面 dynamic import 后注入 projector)。
|
|
7
|
-
* 契约与决策的完整记账见 agentsWire.ts 头注释。
|
|
8
|
-
* (engineWireSdk 亦是纯半场——只 import 外部零依赖 SDK,不破本模块零产品图纪律。)
|
|
9
|
-
*/
|
|
10
1
|
import { hostEnv } from './hostEnv.js';
|
|
11
2
|
import { makeEngineWireClient } from './engineWireSdk.js';
|
|
12
|
-
// ── server 1.205 契约常量(实拆 dist/spec-fields.js,数值逐字)────────────────────────────────────
|
|
13
3
|
export const MAX_TASK_AGENTS = 32;
|
|
14
4
|
export const MAX_AGENT_NAME_CHARS = 64;
|
|
15
5
|
export const MAX_AGENT_TEXT_CHARS = 4_096;
|
|
16
6
|
export const MAX_AGENT_SYSTEM_PROMPT_CHARS = 65_536;
|
|
17
7
|
export const MAX_AGENT_TOOLS = 64;
|
|
18
8
|
export const MAX_AGENT_TOOL_NAME_CHARS = 128;
|
|
19
|
-
// 0.71.0(CC-18 收口):`MAX_AGENT_SKILLS` 常量已删(0.70.2 退役保留一版;server 7.78.1 起 agents[].skills 无条数帽)。
|
|
20
9
|
export const MAX_AGENT_SKILL_CONTENT_CHARS = 1_048_576;
|
|
21
10
|
export const MAX_AGENT_MAX_TURNS = 1_000;
|
|
22
|
-
/** server 1.205 TASK_AGENT_FIELD_SHAPES 的 15 字段白名单(permissionMode 显式拒收,不在表内)。 */
|
|
23
11
|
export const TASK_AGENT_WIRE_FIELDS = [
|
|
24
12
|
'name',
|
|
25
13
|
'whenToUse',
|
|
@@ -37,9 +25,7 @@ export const TASK_AGENT_WIRE_FIELDS = [
|
|
|
37
25
|
'observer',
|
|
38
26
|
'observerMessage',
|
|
39
27
|
];
|
|
40
|
-
/** CC 形自定义 agent 的 `memory:` 三词(cli `loadAgentsDir` 的 zod 枚举同源)。 */
|
|
41
28
|
export const AGENT_MEMORY_WORDS = new Set(['user', 'project', 'local']);
|
|
42
|
-
/** 五档来源优先级(managed > --agents flag > project > user > plugin)——32 帽裁剪的排序键。 */
|
|
43
29
|
const SOURCE_RANK = {
|
|
44
30
|
policySettings: 0,
|
|
45
31
|
flagSettings: 1,
|
|
@@ -50,10 +36,6 @@ const SOURCE_RANK = {
|
|
|
50
36
|
function sourceRank(source) {
|
|
51
37
|
return SOURCE_RANK[source] ?? 5;
|
|
52
38
|
}
|
|
53
|
-
/**
|
|
54
|
-
* 纯投影:壳 AgentDefinition[](F5a activeAgents)→ server 白名单载荷。built-in 恒过滤(引擎有
|
|
55
|
-
* 自己的内置 roster);形状违规壳侧收紧(server 是整请求 400,不能把脏字段交出去)。
|
|
56
|
-
*/
|
|
57
39
|
export function projectAgentsForWire(defs, deps) {
|
|
58
40
|
const warnings = [];
|
|
59
41
|
const customs = defs
|
|
@@ -73,12 +55,11 @@ export function projectAgentsForWire(defs, deps) {
|
|
|
73
55
|
if (typeof name !== 'string' || name.length === 0)
|
|
74
56
|
continue;
|
|
75
57
|
if (name.length > MAX_AGENT_NAME_CHARS) {
|
|
76
|
-
// name 是身份,截断可能撞名——整个丢弃 + warn(server 对超长 name 是整请求 400)。
|
|
77
58
|
warnings.push(`agents wire: agent name "${name.slice(0, 40)}…" exceeds ${MAX_AGENT_NAME_CHARS} chars — definition skipped`);
|
|
78
59
|
continue;
|
|
79
60
|
}
|
|
80
61
|
if (seen.has(name))
|
|
81
|
-
continue;
|
|
62
|
+
continue;
|
|
82
63
|
seen.add(name);
|
|
83
64
|
const item = { name };
|
|
84
65
|
if (typeof def.whenToUse === 'string' && def.whenToUse.length > 0) {
|
|
@@ -98,7 +79,7 @@ export function projectAgentsForWire(defs, deps) {
|
|
|
98
79
|
warnings.push(`agents wire: agent "${name}" ${label} had invalid entries — dropped`);
|
|
99
80
|
}
|
|
100
81
|
if (kept.length === 0)
|
|
101
|
-
return undefined;
|
|
82
|
+
return undefined;
|
|
102
83
|
if (kept.length > MAX_AGENT_TOOLS) {
|
|
103
84
|
warnings.push(`agents wire: agent "${name}" ${label} truncated to ${MAX_AGENT_TOOLS} entries`);
|
|
104
85
|
return kept.slice(0, MAX_AGENT_TOOLS);
|
|
@@ -111,7 +92,6 @@ export function projectAgentsForWire(defs, deps) {
|
|
|
111
92
|
const denyTools = projectTools(def.disallowedTools, 'disallowedTools');
|
|
112
93
|
if (denyTools)
|
|
113
94
|
item.denyTools = denyTools;
|
|
114
|
-
// CC-39①:memory 三词 → 引擎平面 agent:<type>(见 TaskAgentWireItem.memory 顶注)
|
|
115
95
|
if (def.memory !== undefined) {
|
|
116
96
|
if (typeof def.memory === 'string' && AGENT_MEMORY_WORDS.has(def.memory)) {
|
|
117
97
|
item.memory = { scopes: [`agent:${name}`], writeScope: `agent:${name}` };
|
|
@@ -123,7 +103,6 @@ export function projectAgentsForWire(defs, deps) {
|
|
|
123
103
|
warnings.push(`agents wire: agent "${name}" memory: ${String(def.memory)} is not one of user|project|local — memory not sent`);
|
|
124
104
|
}
|
|
125
105
|
}
|
|
126
|
-
// skills:名字 → 已加载全文对象 join;join 不上剪掉 + warn。
|
|
127
106
|
if (Array.isArray(def.skills) && def.skills.length > 0 && deps.skillSpecs) {
|
|
128
107
|
const byName = new Map(deps.skillSpecs.map(s => [s.name.toLowerCase(), s]));
|
|
129
108
|
const joined = [];
|
|
@@ -132,9 +111,6 @@ export function projectAgentsForWire(defs, deps) {
|
|
|
132
111
|
if (typeof skillName !== 'string' || skillName.length === 0)
|
|
133
112
|
continue;
|
|
134
113
|
const spec = byName.get(skillName.toLowerCase());
|
|
135
|
-
// 🔴 CC-18(0.70.2):**不再按名字长度滤**(server `skillOk` 里 name 只判非空)。修前名字超 64 的
|
|
136
|
-
// 技能会落进下面的 `missing`,再被措辞说成「not found in the loaded skill set」—— 它明明加载了,
|
|
137
|
-
// 那句话是假的。`content` 两条判**保留**:server `skillOk` 至今逐字判非空且 ≤1MB(超了整请求 400)。
|
|
138
114
|
if (spec && spec.content.length > 0 && spec.content.length <= MAX_AGENT_SKILL_CONTENT_CHARS) {
|
|
139
115
|
joined.push(spec);
|
|
140
116
|
}
|
|
@@ -145,9 +121,6 @@ export function projectAgentsForWire(defs, deps) {
|
|
|
145
121
|
if (missing.length > 0) {
|
|
146
122
|
warnings.push(`agents wire: agent "${name}" skills not found in the loaded skill set (dropped): ${missing.join(', ')}`);
|
|
147
123
|
}
|
|
148
|
-
// 🔴 CC-18(0.70.2):**零条数帽**,join 上几条发几条(server 7.78.1 的 skills 臂已无
|
|
149
|
-
// `v.length <= MAX_AGENT_SKILLS`)。修前在第 10 条处 `slice` + warn —— warn 落在运维日志里,
|
|
150
|
-
// 用户看到的只是「我声明的第 11 个技能没生效」,没有任何一层会响。
|
|
151
124
|
if (joined.length > 0)
|
|
152
125
|
item.skills = joined;
|
|
153
126
|
}
|
|
@@ -159,8 +132,6 @@ export function projectAgentsForWire(defs, deps) {
|
|
|
159
132
|
else if (def.isolation !== undefined) {
|
|
160
133
|
warnings.push(`agents wire: agent "${name}" isolation "${String(def.isolation)}" is not accepted by the engine (only "worktree") — dropped`);
|
|
161
134
|
}
|
|
162
|
-
// model:F5a 中央解析器已把档位词/CC 别名/catalog 名/完整 ID 解析成真模型名;'inherit' 不发
|
|
163
|
-
// (core 对 def.model 走 resolveModel fail-loud,'inherit' 字面会被判 unknown_model)。
|
|
164
135
|
const resolution = deps.resolveModel(def.model);
|
|
165
136
|
if (resolution.warning)
|
|
166
137
|
warnings.push(resolution.warning);
|
|
@@ -175,7 +146,7 @@ export function projectAgentsForWire(defs, deps) {
|
|
|
175
146
|
prompt = def.getSystemPrompt();
|
|
176
147
|
}
|
|
177
148
|
catch {
|
|
178
|
-
prompt = undefined;
|
|
149
|
+
prompt = undefined;
|
|
179
150
|
}
|
|
180
151
|
if (typeof prompt === 'string' && prompt.length > 0) {
|
|
181
152
|
if (prompt.length > MAX_AGENT_SYSTEM_PROMPT_CHARS) {
|
|
@@ -200,18 +171,6 @@ export function projectAgentsForWire(defs, deps) {
|
|
|
200
171
|
}
|
|
201
172
|
return { agents: out.length > 0 ? out : undefined, warnings };
|
|
202
173
|
}
|
|
203
|
-
// ── 能力探测(taskAgents capability,按 baseUrl 缓存)────────────────────────────────────────────
|
|
204
|
-
/**
|
|
205
|
-
* SDK 0.0.52 client.capabilities()(GET /v1/capabilities,Capabilities 全类型面)→ 顶层
|
|
206
|
-
* `taskAgents` 布尔(SDK 宪法迁移批:raw fetch + body 裸读退役,改 typed 读)。
|
|
207
|
-
* true = 确证支持;false = 确证不支持(200 但 taskAgents !== true:旧 server 无该字段,或多租
|
|
208
|
-
* requirePrincipal fail-closed 报 false);undefined = 无法确证(不可达/超时/非 2xx/不可
|
|
209
|
-
* 解析 —— SDK 对这些统一抛错,catch 归一)⇒ 调用层 fail-soft 照发(旧 server 静默剥字段
|
|
210
|
-
* 无害;引擎真死 stream 自己 fail-loud)。
|
|
211
|
-
* 等价性:3s 预算改经 client timeoutMs;maxRetries=0 单发(否则 503 会按 SDK 缺省重试,探测预算
|
|
212
|
-
* 语义变形)。principal 头:SDK 6.11 起值检查删头——缺席不发(与原手抄同义;F-011 停发后
|
|
213
|
-
* 单机形恒缺席,owner-null)。
|
|
214
|
-
*/
|
|
215
174
|
export async function engineSupportsTaskAgents(baseUrl, opts) {
|
|
216
175
|
const client = makeEngineWireClient({
|
|
217
176
|
baseUrl,
|
|
@@ -234,13 +193,12 @@ let activeProjector = null;
|
|
|
234
193
|
let preparedKey = null;
|
|
235
194
|
let preparedPromise = null;
|
|
236
195
|
let payload;
|
|
237
|
-
let capsVerdict;
|
|
196
|
+
let capsVerdict;
|
|
238
197
|
const emittedWarnings = new Set();
|
|
239
198
|
function warnOnce(msg) {
|
|
240
199
|
if (emittedWarnings.has(msg))
|
|
241
200
|
return;
|
|
242
201
|
emittedWarnings.add(msg);
|
|
243
|
-
// eslint-disable-next-line no-console
|
|
244
202
|
console.error(`[sema] ${msg}`);
|
|
245
203
|
}
|
|
246
204
|
async function runPrepare(cfg, projector) {
|
|
@@ -254,7 +212,6 @@ async function runPrepare(cfg, projector) {
|
|
|
254
212
|
]);
|
|
255
213
|
capsVerdict = caps;
|
|
256
214
|
if (projected.agents && caps === false) {
|
|
257
|
-
// 确证无能力:不发 + 一次性诚实告警(用户会误信自定义 agents 已生效)。
|
|
258
215
|
warnOnce(`agents wire: this engine does not support per-task custom agents (capabilities.taskAgents absent/false — server <1.205 or multi-tenant) — ${projected.agents.length} custom agent definition(s) will NOT be sent`);
|
|
259
216
|
payload = undefined;
|
|
260
217
|
return;
|
|
@@ -263,22 +220,16 @@ async function runPrepare(cfg, projector) {
|
|
|
263
220
|
warnOnce(w);
|
|
264
221
|
payload = projected.agents;
|
|
265
222
|
if (payload && hostEnv().SEMA_DEBUG) {
|
|
266
|
-
// eslint-disable-next-line no-console
|
|
267
223
|
console.error(`[sema] agents wire: ${payload.length} custom agent(s) → TaskRequest.agents (${payload.map(a => a.name).join(', ')})`);
|
|
268
224
|
}
|
|
269
225
|
}
|
|
270
226
|
catch (e) {
|
|
271
|
-
// 任何 prepare 失败 fail-soft:不发 agents,绝不拖死 turn。
|
|
272
227
|
payload = undefined;
|
|
273
228
|
if (hostEnv().SEMA_DEBUG) {
|
|
274
|
-
// eslint-disable-next-line no-console
|
|
275
229
|
console.error('[sema] agents wire prepare soft-failed (no agents stamped):', e);
|
|
276
230
|
}
|
|
277
231
|
}
|
|
278
232
|
}
|
|
279
|
-
/**
|
|
280
|
-
* kick 探测 + 加载 + 投影(createLiveConversationClient 构造时调;幂等——同 baseUrl 只跑一次)。
|
|
281
|
-
*/
|
|
282
233
|
export function prepareTaskAgentsWireWith(cfg, projector) {
|
|
283
234
|
const key = cfg.baseUrl;
|
|
284
235
|
if (preparedPromise && preparedKey === key)
|
|
@@ -288,18 +239,6 @@ export function prepareTaskAgentsWireWith(cfg, projector) {
|
|
|
288
239
|
activeProjector = projector;
|
|
289
240
|
return preparedPromise;
|
|
290
241
|
}
|
|
291
|
-
/**
|
|
292
|
-
* 有界就绪门(liveClient.stream 首帧前 await;缺省 4s 上限)。prepare 未 kick(mock 车道/测试)或
|
|
293
|
-
* 超时 ⇒ 立即放行(本 turn 不带 agents,fail-soft)。永不抛。
|
|
294
|
-
*
|
|
295
|
-
* 🔴 域词表-13(RB-447 同形):这个 race 的唯一有界退出臂**绝不 unref**——它是被调用方真
|
|
296
|
-
* await 的控制流(liveClient.ts `await awaitTaskAgentsWire()`),不是后台保活豁免;unref 会让
|
|
297
|
-
* 宿主进程能在它 settle 前提前退出,届时这个 await 永远等不到结果。对照组:
|
|
298
|
-
* askGateWire.ts 的 budget 定时器同样 unref,但它挂在无人 await 的 `void Promise.race(...)` 上,
|
|
299
|
-
* 后果只是丢一行 warn——两处形状相同后果不同,分野在于「这个 promise 有没有被 await」,不能
|
|
300
|
-
* 套用同一个 unref 兼容套(见 unrefTimer.ts 头注)。race settle 后 clearTimeout 掉该句柄
|
|
301
|
-
* (此前完全没有 clear,超时臂即使先输也留着一个已到期的句柄)。
|
|
302
|
-
*/
|
|
303
242
|
export async function awaitTaskAgentsWire(timeoutMs = 4000) {
|
|
304
243
|
if (!preparedPromise)
|
|
305
244
|
return;
|
|
@@ -317,14 +256,8 @@ export async function awaitTaskAgentsWire(timeoutMs = 4000) {
|
|
|
317
256
|
clearTimeout(timeoutHandle);
|
|
318
257
|
}
|
|
319
258
|
}
|
|
320
|
-
/**
|
|
321
|
-
* 同步读面(liveClient.toLiveRequest 消费):当前投影好的 agents 载荷。每次读取后 kick 一次后台
|
|
322
|
-
* re-project(热加载 next-turn freshness:watcher clear loadAgentsDir memoize 后,下一 turn 拿新定义;
|
|
323
|
-
* 缓存未清时 re-project 近零开销)。能力已确证 false ⇒ 恒 {}。
|
|
324
|
-
*/
|
|
325
259
|
export function taskAgentsField() {
|
|
326
260
|
const current = payload;
|
|
327
|
-
// 后台刷新(fire-and-forget;capsVerdict 沿用——能力不随热加载变)
|
|
328
261
|
if (preparedPromise && capsVerdict !== false && activeProjector) {
|
|
329
262
|
void activeProjector()
|
|
330
263
|
.then(p => {
|
|
@@ -336,7 +269,6 @@ export function taskAgentsField() {
|
|
|
336
269
|
}
|
|
337
270
|
return current ? { agents: current } : {};
|
|
338
271
|
}
|
|
339
|
-
/** 测试钩子:清空模块态(prepare 缓存/一次性告警集)。 */
|
|
340
272
|
export function _resetAgentsWireForTest() {
|
|
341
273
|
activeProjector = null;
|
|
342
274
|
preparedKey = null;
|
|
@@ -1,18 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* approvalsStreamLiveCapability — `GET /v1/capabilities.approvalsStreamLive`(server ≥7.87.1;sdk 9.7.1 `Capabilities.approvalsStreamLive?: boolean`)
|
|
3
|
-
* 的三端共用读面(0.73.3;与 sql / writeProtection / webSearch.backend / executionLane 四只兄弟同一套四态词汇)。
|
|
4
|
-
*
|
|
5
|
-
* ── 这一位答的是哪一个问题 ────────────────────────────────────────────────────────────────
|
|
6
|
-
* 「这台引擎会不会在 `approvals.stream` 上推流内 ask 的进出(`live_pending` / `live_resolved`)」= checkpointStore ∧ toolApproval。
|
|
7
|
-
* 它决定 feed 消费方要不要**靠**推面:位为 true ⇒ 推面可靠,对账节拍(`ApprovalsFeedOptions.reconcile`)只是兜底;
|
|
8
|
-
* 位为 false / 键缺席 / 从没观测 ⇒ 推面**不可靠或判不出**,对账节拍是悬挂 ask 的唯一拉面 —— **别等** `live_pending`。
|
|
9
|
-
*
|
|
10
|
-
* ── 🔴 读法 ─────────────────────────────────────────────────────────────────────────────────
|
|
11
|
-
* ① **键缺席 ≠ false**:老 server(<7.87.1)不报这一位 ⇒ `not_reported`(判不出),按「要拉」处理;折成 false 是替引擎断言「不推」。
|
|
12
|
-
* ② 严格布尔;`null` / 串 / 数 / 数组 / 对象 ⇒ 畸形(删格 ⇒ `unobserved`)。
|
|
13
|
-
* ③ 「要不要对账」的判据归包:{@link livePendingNeedsReconcile} —— 只有 present 且 true 才 false;其余一律 true(少查一次 = 一只等人的 ask 迟迟不出现)。
|
|
14
|
-
*/
|
|
15
|
-
/** 四态读数。`unobserved` 由读口在这一格空缺时铸,不由投影铸。 */
|
|
16
1
|
export type ApprovalsStreamLiveReading = {
|
|
17
2
|
kind: 'unobserved';
|
|
18
3
|
} | {
|
|
@@ -21,22 +6,12 @@ export type ApprovalsStreamLiveReading = {
|
|
|
21
6
|
kind: 'present';
|
|
22
7
|
live: boolean;
|
|
23
8
|
};
|
|
24
|
-
/** caps 回体 → 本格读数;畸形一律 `undefined`(= 这一格不写 ⇒ 读口答 `unobserved`)。 */
|
|
25
9
|
export declare function projectApprovalsStreamLiveCapability(caps: unknown): ApprovalsStreamLiveReading | undefined;
|
|
26
|
-
/** 宿主 caps probe 的读面 tee 落点(与四只兄弟并列)。绝不 throw;畸形 ⇒ 删格;`opts.generation` 关掉旧探测覆盖新读数的竞态。 */
|
|
27
10
|
export declare function noteEngineCapsForApprovalsStreamLive(baseUrl: string, caps: unknown, opts?: {
|
|
28
11
|
generation?: number;
|
|
29
12
|
}): void;
|
|
30
|
-
/** 本进程观测到的读数;这一格空缺 ⇒ `{kind:'unobserved'}`。 */
|
|
31
13
|
export declare function observedApprovalsStreamLive(baseUrl?: string | undefined): ApprovalsStreamLiveReading;
|
|
32
|
-
/**
|
|
33
|
-
* feed 消费方「要不要靠对账节拍拉悬挂 ask」的判据单源:只有引擎明说会推(present ∧ true)才 `false`;
|
|
34
|
-
* 位为 false / 老 server 判不出 / 从没观测 ⇒ `true`。fail-safe 方向定在「查」(与 `shouldPoll` 同一条理由)。
|
|
35
|
-
*/
|
|
36
14
|
export declare function livePendingNeedsReconcile(reading: ApprovalsStreamLiveReading): boolean;
|
|
37
|
-
/** doctor 那一行的 detail 串,唯一措辞真源。🔴 `not_reported` 句不许暗示「不推」。 */
|
|
38
15
|
export declare function approvalsStreamLiveDoctorDetail(reading: ApprovalsStreamLiveReading): string;
|
|
39
|
-
/** 换代失效口(引擎温切成功后调):清成未观测。空串 ⇒ no-op;绝不 throw。 */
|
|
40
16
|
export declare function forgetApprovalsStreamLiveReading(baseUrl: string | undefined): void;
|
|
41
|
-
/** 测试钩子。 */
|
|
42
17
|
export declare function __resetApprovalsStreamLiveReadingsForTests(): void;
|