@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,65 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* src/engineNoticeCodes.ts — `engine_notice` 的**码册**与 **audience 表**(0.63.0;L-167;core 7.9.x)。
|
|
3
|
-
*
|
|
4
|
-
* -- 「渲不渲」的判据不在这一端 --------------------------------------------------------------
|
|
5
|
-
* 一条引擎通告该不该占用户的注意力,正确判据**不是**「这一端的渲染表有没有那一格」(那会随各端的
|
|
6
|
-
* 施工进度晃),而是**上游有没有把这个码铸进它的成文码册**:
|
|
7
|
-
* · 码册**内**的码 = 引擎作为治理事实铸出来的,即使这一端还没有专属文案也该让人看见(通用行);
|
|
8
|
-
* · 码册**外**的码 = 转发进同一个水槽的宿主/适配器噪声,呈现面 fail-closed(只落 debug)。
|
|
9
|
-
* audience 回答另一问:这条事实**说给谁听**。一条 operator 行推给终端用户是噪音;一条 user 行只落
|
|
10
|
-
* operator 日志,就是把该告诉他的事瞒下了。两值而已(`user` / `operator`)—— 上游刻意不设第三值:
|
|
11
|
-
* 「这条通告能不能路由到某个会话」不是 audience,而是 `sessionId` 在不在场(**逐次发射**的事实)。
|
|
12
|
-
*
|
|
13
|
-
* -- 为什么是镜像而不是 import ---------------------------------------------------------------
|
|
14
|
-
* `@sema-agent/core` 不是本包消费者的依赖(它既不是 peer 也不是 runtime dep),而本包的 `.d.ts`
|
|
15
|
-
* 一旦引用它,装了本包却没装 core 的下游会当场编译不过。这与本包 `toolResult.ts` / `retryStatus.ts` /
|
|
16
|
-
* `skillsWireCaps.ts` 三处的处置同形:**按 wire 事实镜像,把代价交给门**——
|
|
17
|
-
* `run-engine-notice-catalog-test.mjs` 对**实装 devDep core** 的两份产物逐码逐行双向对账,
|
|
18
|
-
* core 一动这里就先红。上游自己也是这么设计的:它导出码册的理由逐字写着「a downstream table with a
|
|
19
|
-
* row missing … is a mechanically detectable disagreement rather than an argument」。
|
|
20
|
-
*
|
|
21
|
-
* -- 提货记账(码册加员 / audience 换档)-------------------------------------------------------
|
|
22
|
-
* · **core 7.10.0 +2**:`delegation.ask_unresolvable`(audience **user** —— 委派链上那只 ask 判不出
|
|
23
|
-
* 归属、没有人可问,这件事的收件人是发起这次委派的**用户**)/ `config.read_face_swapped`
|
|
24
|
-
* (audience **operator** —— READ 容纳面被换过档,是部署事实)。四十八码 ⇒ **五十码**。
|
|
25
|
-
* · **core 7.17.0 +1**(0.68.0 提货批,同样由本门 A1 段当天红抓出:「上游 52 / 本包 51」):
|
|
26
|
-
* `config.artifact_host_invalid`(audience **operator** —— 宿主接了 artifact 席但它的
|
|
27
|
-
* `capabilities()` 声明不过席上的不变量、或 `onMount` 抛了 ⇒ 那只工具没挂上。上游逐字:
|
|
28
|
-
* 「an absent seat is silent; a broken one must not look the same」)。五十一码 ⇒ **五十二码**。
|
|
29
|
-
* · **core ≤7.16.0 +1**(0.67.0 提货批,由本门的 A1 段当天红抓出 —— 不是人眼发现的):
|
|
30
|
-
* `task.interrupt_unconsumed`(audience **user**;位置在 `task.late_approval` 与
|
|
31
|
-
* `memory.capture_opted_out` 之间,`governance-codes.js:146` / `NOTICE_AUDIENCE_TABLE:165` 真字节)。
|
|
32
|
-
* ⚠️ 它**不在** core 7.14.0 / 7.15.0 / 7.16.0 任何一份 `docs/wire-consumption` 逐键表里 ——
|
|
33
|
-
* 如实登记为**合同外加员**,处置随本门的双向对账走。五十码 ⇒ **五十一码**。
|
|
34
|
-
* · **core 7.14.0 audience 换档(value-domain BREAKING)**:`memory.consolidation_withheld`
|
|
35
|
-
* **user → operator**(`NOTICE_AUDIENCE_TABLE:169` 真字节)。合同逐字的理由:这条通告**没有
|
|
36
|
-
* `sessionId`**(一次固化跑在任何会话之外)⇒ 一个按会话路由 `user` 行的消费方**必须停止**在那里
|
|
37
|
-
* 等它;面向读者的那一半骑在回执上(`withheldFromCleanArm` / `withheldNeverSent`)。
|
|
38
|
-
* 🔴 三端落点:凡按 audience 分发的面(TUI 通告行 / web 通知中心 / 桌面 toast),这条码从此**只**
|
|
39
|
-
* 进运维面 —— 端不改代码也会跟着走(分发读的就是本表),但**通告文案面**若为它写过「告诉用户」
|
|
40
|
-
* 的专属行,那一行要跟着挪。
|
|
41
|
-
* · **7.16.0 的两个 memory 布局码不进本册**:`memory.layout_migrated` /
|
|
42
|
-
* `memory.layout_unowned_root_content` 在 core 里属 `NON_GOVERNANCE_MEMORY_CODES`
|
|
43
|
-
* (`governance-codes.js:11-27` 真字节),**不在** `ENGINE_NOTICE_CODES` / `NOTICE_AUDIENCE` 上。
|
|
44
|
-
* 本包对非治理码的既有路由**不变**:码册外 ⇒ 呈现面 fail-closed(只落 debug)。把它们抄进本册
|
|
45
|
-
* 会让 A1/A2 双向对账当天红 —— 那正是这张表是**抄件**而不是意见的意思。
|
|
46
|
-
*
|
|
47
|
-
* -- 🔴 单铸律:本模块**不抄**任何一句 core 的措辞 -------------------------------------------
|
|
48
|
-
* `mcp.injection_dropped` 上游立了 `settlement.single_mint` 契约:**宿主只供事实**(哪个会话 /
|
|
49
|
-
* 哪个 server 名 / 四个原因里的哪一个 / 可选哪个字段坏),**core composes** 码字、audience 行与
|
|
50
|
-
* 句子。第二份措辞就是第二个会漂的源。⇒ 本模块只给码册、audience 与**事实窄读器**
|
|
51
|
-
* ({@link readMcpInjectionDrop});转录直接用引擎给的 `message`。门里有一条反向钉:core 那四句
|
|
52
|
-
* 出现在本包源码或产物里 => 当场红。
|
|
53
|
-
*/
|
|
54
|
-
/**
|
|
55
|
-
* 引擎**成文码册**的逐字镜像(core `ENGINE_NOTICE_CODES`,**7.23.0 = 六十七码**(7.22.0 六十六 + 7.23.0 一枚 `config.write_protection_unresolved`(#869 / C-R61 ②,operator;governance-codes.js 元组紧跟兄弟码 `config.write_protection_target_view_absent`:那一枚是「没有 target 视图」,这一枚是「有视图但解析不出这次写的目标」,`detail {reason, cause, sessionId, runId}`,`reason` 两词 `unresolved-symlink` / `unresolvable-target`,去重每 leg 每 reason 是引擎侧);7.22.0 六十六 = 7.20.1 六十五 + 7.22.0 一枚 `mcp.server_redialed`(#857,operator;governance-codes.js 元组紧跟 `mcp.revocation_probe_failed`);7.20.0 六十四 + 7.20.1 一枚 `config.write_protection_target_view_absent`;7.19.0 五十九 + 7.20.0 五枚:`config.task_root_not_canonical` / `config.execution_env_capability_invalid` / `config.forward_sink_failed` / `memory.restore_withheld` / `agents.listing_truncated`,均 operator);顺序同源)。
|
|
56
|
-
* 🔴 这是一份**抄件**,不是本包的意见 —— 改它必须同 commit 附 core 坐标,且门会先红。
|
|
57
|
-
* ⚠️ `EngineNotice.code` 的型面在上游**故意留 `string`**(宿主把自己的通告转发进同一个水槽是
|
|
58
|
-
* 被支持的形),所以本表是**判据**不是型 —— 别拿它去窄化那个字段。
|
|
59
|
-
|
|
60
|
-
* 🔴 形制:`Object.freeze` 的数组,**不是**只在类型面只读的 `readonly T[]` —— 后者一行 `.splice()`
|
|
61
|
-
* 就能改,而公面消费者拿到的正是这个实例(本仓已定谳的病形,同 `RESUME_RETRY_LATER_CODES`)。
|
|
62
|
-
*/
|
|
63
1
|
export const ENGINE_NOTICE_CODES = Object.freeze([
|
|
64
2
|
'config.autocompact_window_clamped',
|
|
65
3
|
'config.env_timeout_discarded',
|
|
@@ -67,25 +5,19 @@ export const ENGINE_NOTICE_CODES = Object.freeze([
|
|
|
67
5
|
'config.models_swapped',
|
|
68
6
|
'config.read_face_swapped',
|
|
69
7
|
'config.read_face_deployment_clamped',
|
|
70
|
-
// core 7.18.0 #748(0.68.3 提货批 CC-05):writeFace 席的两枚运维通告;位置 = governance-codes.d.ts 元组 @6/@7 真字节。
|
|
71
8
|
'config.write_face_swapped',
|
|
72
9
|
'config.write_face_deployment_clamped',
|
|
73
10
|
'config.tool_model_gate_removed',
|
|
74
11
|
'config.tool_model_gate_unknown_class',
|
|
75
12
|
'config.tool_model_gate_env_invalid',
|
|
76
|
-
// 0.68.0 提货批(core 7.17.0 加员;位置 = `governance-codes.js:108` 真字节,在
|
|
77
|
-
// `config.tool_model_gate_env_invalid` 与 `config.tool_card_undeclared` 之间)。
|
|
78
13
|
'config.artifact_host_invalid',
|
|
79
|
-
// core 7.20.0(0.71.0 提货):任务根非规范路径 / 远端执行环境能力声明坏值,两枚部署面通告;顺序同源(紧跟 artifact_host_invalid)。
|
|
80
14
|
'config.task_root_not_canonical',
|
|
81
|
-
// core 7.20.1(0.71.4 提货,#853 C-R55):写保护判官只判拼写(spelling-only)又挂了受保护写工具 ⇒ 每 run 一条;顺序同源(紧跟 task_root_not_canonical)。
|
|
82
15
|
'config.write_protection_target_view_absent',
|
|
83
16
|
'config.write_protection_unresolved',
|
|
84
17
|
'config.execution_env_capability_invalid',
|
|
85
18
|
'config.tool_card_undeclared',
|
|
86
19
|
'config.tool_face_undeclared',
|
|
87
20
|
'config.tool_face_invalid',
|
|
88
|
-
// core 7.20.0:转发 sink 失败;顺序同源(紧跟 tool_face_invalid)。
|
|
89
21
|
'config.forward_sink_failed',
|
|
90
22
|
'config.durable_gate_unavailable',
|
|
91
23
|
'config.peer_admission_out_of_range',
|
|
@@ -94,9 +26,7 @@ export const ENGINE_NOTICE_CODES = Object.freeze([
|
|
|
94
26
|
'peer.held_settled',
|
|
95
27
|
'peer.idle_subscription',
|
|
96
28
|
'classifier.denial_limit',
|
|
97
|
-
// core 7.18.0 #742(CC-05):分类器席坏配置 ⇒ 主模型代判的一条运维通告;元组 @22。
|
|
98
29
|
'classifier.fallback',
|
|
99
|
-
// core 7.19.0(CC-04 core 半场):分类器席角色缺省 / 契约破裂两枚运维通告;顺序同源(紧跟 fallback)。
|
|
100
30
|
'classifier.role_defaulted',
|
|
101
31
|
'classifier.contract_broken',
|
|
102
32
|
'checkpoint.execution_outcome_unrecorded',
|
|
@@ -104,7 +34,6 @@ export const ENGINE_NOTICE_CODES = Object.freeze([
|
|
|
104
34
|
'delegation.ask_unresolvable',
|
|
105
35
|
'mcp.injection_dropped',
|
|
106
36
|
'mcp.revocation_probe_failed',
|
|
107
|
-
// core 7.22.0 #857(0.72.7 提货批 CC-42):宿主请这条 run 重拨一台 MCP server 的结果;一个码管两个方向。
|
|
108
37
|
'mcp.server_redialed',
|
|
109
38
|
'workflow.governance_key_stripped',
|
|
110
39
|
'workflow.agent_option_ignored',
|
|
@@ -121,10 +50,8 @@ export const ENGINE_NOTICE_CODES = Object.freeze([
|
|
|
121
50
|
'memory.consolidation_incomplete',
|
|
122
51
|
'memory.consolidation_refused',
|
|
123
52
|
'memory.consolidation_withheld',
|
|
124
|
-
// core 7.20.0:恢复被扣留;顺序同源(紧跟 consolidation_withheld)。
|
|
125
53
|
'memory.restore_withheld',
|
|
126
54
|
'route.fallback_to_primary',
|
|
127
|
-
// core 7.18.0 #742(CC-05):分类器候选梯子无可路由席;元组 @44。
|
|
128
55
|
'route.classifier_unroutable',
|
|
129
56
|
'route.base_url_changed_key_unchanged',
|
|
130
57
|
'task.user_steer_undrained',
|
|
@@ -133,30 +60,17 @@ export const ENGINE_NOTICE_CODES = Object.freeze([
|
|
|
133
60
|
'task.turn_interrupted',
|
|
134
61
|
'task.halt_unconsumed',
|
|
135
62
|
'task.late_approval',
|
|
136
|
-
// 0.67.0 提货批:core ≤7.16.0 加员(合同外,见模块顶注提货记账段)。
|
|
137
63
|
'task.interrupt_unconsumed',
|
|
138
64
|
'memory.capture_opted_out',
|
|
139
65
|
'memory.capture_optout_unpersisted',
|
|
140
|
-
// core 7.19.0(CC-04 core 半场):`<skills>` 披露块超字节预算 ⇒ 至少一条只列名(`detail.nameOnly[]`)或整条不列
|
|
141
|
-
// (`detail.dropped[]`);Skill 工具仍服务全部技能。运维面事(调 skillListingBudgetFraction / skillListingMaxDescChars / 少声明)。
|
|
142
66
|
'skills.listing_truncated',
|
|
143
|
-
// core 7.20.0:agent roster 清单超预算(与 skills 同族;同一个 fraction 预算);顺序同源(紧跟 skills.listing_truncated)。
|
|
144
67
|
'agents.listing_truncated',
|
|
145
68
|
'tool_result.offload_put_failed',
|
|
146
69
|
]);
|
|
147
70
|
const CATALOG = new Set(ENGINE_NOTICE_CODES);
|
|
148
|
-
/**
|
|
149
|
-
* 这个码在不在上游码册里。
|
|
150
|
-
* 🔴 **认原始值**:呈现层的消毒器会把一整类字符换成别的字符,拿清洗值来查表等于让
|
|
151
|
-
* `memory\nsession_polluted` 这种脏码冒充册内码。消毒只进文案,不进判据。
|
|
152
|
-
*/
|
|
153
71
|
export function engineNoticeInCatalog(code) {
|
|
154
72
|
return typeof code === 'string' && CATALOG.has(code);
|
|
155
73
|
}
|
|
156
|
-
/**
|
|
157
|
-
* 逐码的 audience 行(core `NOTICE_AUDIENCE_TABLE` 逐行镜像;与 {@link ENGINE_NOTICE_CODES}
|
|
158
|
-
* **逐键 lockstep** —— 上游用编译期 `satisfies` 钉住这一点,本包用门钉住)。
|
|
159
|
-
*/
|
|
160
74
|
export const ENGINE_NOTICE_AUDIENCE = Object.freeze({
|
|
161
75
|
'config.autocompact_window_clamped': 'operator',
|
|
162
76
|
'config.env_timeout_discarded': 'operator',
|
|
@@ -169,7 +83,6 @@ export const ENGINE_NOTICE_AUDIENCE = Object.freeze({
|
|
|
169
83
|
'config.tool_model_gate_removed': 'operator',
|
|
170
84
|
'config.tool_model_gate_unknown_class': 'operator',
|
|
171
85
|
'config.tool_model_gate_env_invalid': 'operator',
|
|
172
|
-
// 0.68.0 提货批:`NOTICE_AUDIENCE_TABLE:181` 真字节 —— 一条「宿主把 artifact 席接坏了」的部署事实。
|
|
173
86
|
'config.artifact_host_invalid': 'operator',
|
|
174
87
|
'config.task_root_not_canonical': 'operator',
|
|
175
88
|
'config.write_protection_target_view_absent': 'operator',
|
|
@@ -209,8 +122,6 @@ export const ENGINE_NOTICE_AUDIENCE = Object.freeze({
|
|
|
209
122
|
'memory.consolidation_conflict': 'operator',
|
|
210
123
|
'memory.consolidation_incomplete': 'operator',
|
|
211
124
|
'memory.consolidation_refused': 'operator',
|
|
212
|
-
// 🔴 core 7.14.0 **value-domain BREAKING**:user → operator(见模块顶注提货记账段;
|
|
213
|
-
// 理由 = 这条通告没有 sessionId,一次固化跑在任何会话之外)。
|
|
214
125
|
'memory.consolidation_withheld': 'operator',
|
|
215
126
|
'memory.restore_withheld': 'operator',
|
|
216
127
|
'route.fallback_to_primary': 'operator',
|
|
@@ -229,27 +140,12 @@ export const ENGINE_NOTICE_AUDIENCE = Object.freeze({
|
|
|
229
140
|
'agents.listing_truncated': 'operator',
|
|
230
141
|
'tool_result.offload_put_failed': 'operator',
|
|
231
142
|
});
|
|
232
|
-
/**
|
|
233
|
-
* 这个码是说给谁听的。**表外码一律保守判 `operator`** —— 把一个读不懂的码推给终端用户是最坏的
|
|
234
|
-
* 猜法(他既看不懂也无从下手),而漏给运维看一条只是让他晚一点知道。
|
|
235
|
-
*/
|
|
236
143
|
export function noticeAudienceOf(code) {
|
|
237
|
-
// 🔴 **自有属性判据**(异源对抗复审 [medium]):`Object.freeze` 冻的是自有属性,原型链原样还在 ⇒
|
|
238
|
-
// 一个来自 wire 的 `constructor` / `toString` / `__proto__` 会命中 `Object.prototype` 上的成员,
|
|
239
|
-
// 本口于是交出一个**函数** —— 它既不是 `user` 也不是 `operator`,按两值分发的宿主两条分支都进不去
|
|
240
|
-
// (保守缺省也跟着被绕过)。这是本仓已定谳的病形:wire 键控的表一律按自有属性查。
|
|
241
144
|
const row = typeof code === 'string' && Object.hasOwn(ENGINE_NOTICE_AUDIENCE, code)
|
|
242
145
|
? ENGINE_NOTICE_AUDIENCE[code]
|
|
243
146
|
: undefined;
|
|
244
147
|
return row ?? 'operator';
|
|
245
148
|
}
|
|
246
|
-
/**
|
|
247
|
-
* `mcp.injection_dropped` 的四个掉落原因(core `MCP_INJECTION_DROP_REASONS` 逐词镜像)。
|
|
248
|
-
* 消费端要自己的措辞时**键在这个词上**,绝不对 `message` 做等值匹配(那是给人读的散文)。
|
|
249
|
-
|
|
250
|
-
* 🔴 形制:`Object.freeze` 的数组,**不是**只在类型面只读的 `readonly T[]` —— 后者一行 `.splice()`
|
|
251
|
-
* 就能改,而公面消费者拿到的正是这个实例(本仓已定谳的病形,同 `RESUME_RETRY_LATER_CODES`)。
|
|
252
|
-
*/
|
|
253
149
|
export const MCP_INJECTION_DROP_REASONS = Object.freeze([
|
|
254
150
|
'malformed_entry',
|
|
255
151
|
'name_reserved_by_deployment',
|
|
@@ -257,17 +153,6 @@ export const MCP_INJECTION_DROP_REASONS = Object.freeze([
|
|
|
257
153
|
'over_cap',
|
|
258
154
|
]);
|
|
259
155
|
const DROP_REASONS = new Set(MCP_INJECTION_DROP_REASONS);
|
|
260
|
-
/**
|
|
261
|
-
* `mcp.injection_dropped` 通告 → 事实;不成形 => `undefined`,绝不抛出。
|
|
262
|
-
*
|
|
263
|
-
* 🔴 **只认自己那一个码**:一条别的通告即使 `detail` 长得像,也不给读(读器按码分家,才不会在
|
|
264
|
-
* 上游给另一个码加同名键的那天悄悄改判)。
|
|
265
|
-
* 🔴 `sessionId` / `server` / `reason` 三格缺一 => 整只缺席。core 在**铸点**对同样三格直接抛
|
|
266
|
-
* `TypeError`(「一条没有会话的 user 通告投不到任何地方」);本包在**读点**判缺席而不抛 ——
|
|
267
|
-
* 读点抛只会把一条读不懂的通告升级成一次崩。
|
|
268
|
-
* 🔴 `reason` **按闭集读**:它是消费端分支的键,读不懂的词不许被当成一个能拿去分支的原因。
|
|
269
|
-
* (要渲一句话时,用引擎给的 `message`,见模块顶注的单铸律。)
|
|
270
|
-
*/
|
|
271
156
|
export function readMcpInjectionDrop(notice) {
|
|
272
157
|
if (typeof notice !== 'object' || notice === null || Array.isArray(notice))
|
|
273
158
|
return undefined;
|
|
@@ -286,46 +171,12 @@ export function readMcpInjectionDrop(notice) {
|
|
|
286
171
|
const field = typeof o.field === 'string' && o.field.length > 0 ? o.field : undefined;
|
|
287
172
|
return { sessionId, server, reason, ...(field !== undefined ? { field } : {}) };
|
|
288
173
|
}
|
|
289
|
-
// ══════════════════════════════════════════════════════════════════════════════════════════════
|
|
290
|
-
// 0.68.0 提货批(core 7.17.0 #709 ①②)—— 两条通告的**事实窄读器**
|
|
291
|
-
// ══════════════════════════════════════════════════════════════════════════════════════════════
|
|
292
|
-
// 与 {@link readMcpInjectionDrop} 同一套规矩(单铸律不变:本模块只给码册、闭集与**事实**,
|
|
293
|
-
// 一句措辞都不抄 —— 转录用引擎给的 `message`):
|
|
294
|
-
// · **只认自己那一个码**(读器按码分家);
|
|
295
|
-
// · 必填格缺一 ⇒ **整只缺席**(读点判缺席而不抛:读点抛只会把一条读不懂的通告升级成一次崩);
|
|
296
|
-
// · **分支用的键按闭集读**(读不懂的词不许被当成一个能拿去分支的原因);**非分支键开集透传**。
|
|
297
|
-
/**
|
|
298
|
-
* `delegation.ask_unresolvable` 的三个成因(core `ASK_UNRESOLVABLE_CAUSES` 逐词镜像,
|
|
299
|
-
* `dist/core/ask-unresolvable-notice.d.ts:31`)。
|
|
300
|
-
*
|
|
301
|
-
* 🔴 **0.68.0 BREAKING(core #709 ②)**:这一位**取代**了 7.16.0 及以前那条通告 `detail` 上的
|
|
302
|
-
* `settlementKind`(core `gate-exit.ts` 的一处铸点;`settlementKind` 在 7.17.x 的 core 与 sdk
|
|
303
|
-
* 真字节上**零命中**,本包按 clean-cut 不留双读,登记在 `run-retired-vocabulary-census-test.mjs`)。
|
|
304
|
-
* 两者不是改名:`settlementKind` 只说得出「结算是怎么落的」,而 in-fold 拒绝那一臂**根本没有
|
|
305
|
-
* 结算**骑在帧上(`mandate_unreconstructible`)—— 旧位在那一形上恒缺席。
|
|
306
|
-
*
|
|
307
|
-
* 三词各答「为什么这只 ask 判不出来」(上游逐字):
|
|
308
|
-
* · `approver_unavailable` —— 被问到的审批席(本 run 自己的,或委派子代身上那张冻结的祖先席)
|
|
309
|
-
* 对路由问题答了 `unavailable`,而其后**没有**耐久 park 接下这次调用;
|
|
310
|
-
* · `no_approver_wired` —— 这条 run 根本没接审批席(或问答面),或者席位就是拒绝姿态串
|
|
311
|
-
* (headless 自动拒);
|
|
312
|
-
* · `mandate_unreconstructible` —— 继承来的耐久审批 mandate 绑住了这只 ask,而**这条腿没有 park
|
|
313
|
-
* 设施**去兑现它,于是委派子代就地拒绝(in-fold 拒,帧上不带 settlement)。
|
|
314
|
-
*
|
|
315
|
-
* 🔴 形制:`Object.freeze` 的数组(同 `MCP_INJECTION_DROP_REASONS` 的已定谳病形)。
|
|
316
|
-
*/
|
|
317
174
|
export const ASK_UNRESOLVABLE_CAUSES = Object.freeze([
|
|
318
175
|
'approver_unavailable',
|
|
319
176
|
'no_approver_wired',
|
|
320
177
|
'mandate_unreconstructible',
|
|
321
178
|
]);
|
|
322
179
|
const ASK_UNRESOLVABLE_CAUSE_SET = new Set(ASK_UNRESOLVABLE_CAUSES);
|
|
323
|
-
/**
|
|
324
|
-
* `delegation.ask_unresolvable` 通告 → 事实;不成形 ⇒ `undefined`,绝不抛出。
|
|
325
|
-
*
|
|
326
|
-
* 🔴 `cause` **按闭集读**:它是消费端分支的键(三条恢复路不同 —— 接一个耐久店 / 接一个审批席 /
|
|
327
|
-
* 别在无 park 设施的腿上继承 mandate)。读不懂的词 ⇒ **整只缺席**,而不是交一个分不了支的串。
|
|
328
|
-
*/
|
|
329
180
|
export function readAskUnresolvable(notice) {
|
|
330
181
|
if (typeof notice !== 'object' || notice === null || Array.isArray(notice))
|
|
331
182
|
return undefined;
|
|
@@ -351,27 +202,11 @@ export function readAskUnresolvable(notice) {
|
|
|
351
202
|
...(typeof o.parkLaneExisted === 'boolean' ? { parkLaneExisted: o.parkLaneExisted } : {}),
|
|
352
203
|
};
|
|
353
204
|
}
|
|
354
|
-
/**
|
|
355
|
-
* 一条腿上的耐久审批 **mandate 从哪儿来**(core `DURABLE_MANDATE_SOURCES` 逐词镜像,
|
|
356
|
-
* `dist/core/tool-policy.d.ts:1403`)。两词的**恢复动作不同**,这正是上游把它铸上通告的理由:
|
|
357
|
-
* · `force_durable_gate` —— per-principal 的控制面权利,与席位无关 ⇒ 要么给这套部署接一个
|
|
358
|
-
* checkpoint 店,要么撤掉这批 principal 的这项权利;
|
|
359
|
-
* · `durable_approval` —— 任务自己的 opt-in 且**没有**活审批席 ⇒ 给任务一个活席位,或者不要
|
|
360
|
-
* 再传 `durableApproval`。
|
|
361
|
-
*
|
|
362
|
-
* 🔴 形制同上(冻结数组)。
|
|
363
|
-
*/
|
|
364
205
|
export const DURABLE_MANDATE_SOURCES = Object.freeze([
|
|
365
206
|
'force_durable_gate',
|
|
366
207
|
'durable_approval',
|
|
367
208
|
]);
|
|
368
209
|
const DURABLE_MANDATE_SOURCE_SET = new Set(DURABLE_MANDATE_SOURCES);
|
|
369
|
-
/**
|
|
370
|
-
* `config.durable_gate_unavailable` 通告 → 事实;不成形 ⇒ `undefined`,绝不抛出。
|
|
371
|
-
*
|
|
372
|
-
* 🔴 **两个布尔位缺席不折 `false`**:core 在铸点把它们写成必填,但「这一格读不出」与
|
|
373
|
-
* 「这一格是 false」对用户的下一步不同(前者是「引擎没说」,后者是「没有人会答你这条 ask」)。
|
|
374
|
-
*/
|
|
375
210
|
export function readDurableGateUnavailable(notice) {
|
|
376
211
|
if (typeof notice !== 'object' || notice === null || Array.isArray(notice))
|
|
377
212
|
return undefined;
|
|
@@ -402,13 +237,6 @@ export function readDurableGateUnavailable(notice) {
|
|
|
402
237
|
}
|
|
403
238
|
const nonNegInt = (v) => typeof v === 'number' && Number.isInteger(v) && v >= 0 ? v : undefined;
|
|
404
239
|
const nameList = (v) => Array.isArray(v) && v.every((x) => typeof x === 'string' && x.length > 0) ? Object.freeze([...v]) : undefined;
|
|
405
|
-
/**
|
|
406
|
-
* `skills.listing_truncated` 通告 → 事实;不成形 ⇒ `undefined`,绝不抛出。
|
|
407
|
-
*
|
|
408
|
-
* 🔴 必填 = `budgetBytes` / `total` / `kept` / `nameOnly` / `dropped`(引擎铸点恒带的五格);任一读不出 ⇒ 整只缺席。
|
|
409
|
-
* 🔴 `nameOnly` / `dropped` 里混进非串 ⇒ 整只缺席(名单是渲染键,半张坏名单比没有更坏)。
|
|
410
|
-
* 🔴 `kept` 照带不重算:引擎已在铸点算过;本包再算一遍 = 第二份公式,上游改口那天两边各走各的。
|
|
411
|
-
*/
|
|
412
240
|
export function readSkillsListingTruncated(notice) {
|
|
413
241
|
if (typeof notice !== 'object' || notice === null || Array.isArray(notice))
|
|
414
242
|
return undefined;
|
|
@@ -427,7 +255,6 @@ export function readSkillsListingTruncated(notice) {
|
|
|
427
255
|
if (budgetBytes === undefined || total === undefined || kept === undefined || nameOnly === undefined || dropped === undefined) {
|
|
428
256
|
return undefined;
|
|
429
257
|
}
|
|
430
|
-
// 0.71.0:`requestedBudgetBytes` 若在场(老引擎 7.19.0)**不铸不派生**——它在 7.20.0 已删,本视图不再有它的位。
|
|
431
258
|
const descMaxChars = nonNegInt(o.descMaxChars);
|
|
432
259
|
const sessionId = typeof o.sessionId === 'string' && o.sessionId.length > 0 ? o.sessionId : undefined;
|
|
433
260
|
return {
|
|
@@ -440,15 +267,6 @@ export function readSkillsListingTruncated(notice) {
|
|
|
440
267
|
...(sessionId !== undefined ? { sessionId } : {}),
|
|
441
268
|
};
|
|
442
269
|
}
|
|
443
|
-
// ══════════════════════════════════════════════════════════════════════════════════════════════
|
|
444
|
-
// 0.72.7 提货批(core 7.22.0 #857)—— `mcp.server_redialed` 的**事实窄读器**
|
|
445
|
-
// ══════════════════════════════════════════════════════════════════════════════════════════════
|
|
446
|
-
// 宿主请这条 run **重拨**一台 MCP server(run 句柄动词 `reconnectMcpServer`;server 侧的会话腿动词候 S-381),
|
|
447
|
-
// 结果一条 operator 通告。**一个码管两个方向**:`outcome` 是数据不是两种事件;去重单位 = **每次尝试**,永不按 run
|
|
448
|
-
// 折叠(折掉第二条会藏起「它还是没起来」那条)。`added` / `removed` 是**计数**,不是 server 自报的工具名(工具名是
|
|
449
|
-
// server 自著文本,operator 行不是披露通道)。规矩同 {@link readMcpInjectionDrop}:只认自己那一个码;必填格缺一 ⇒
|
|
450
|
-
// 整只缺席;分支键 `outcome` 按闭集读;`reason` 开集透传(非 reconnected 时才有,且**永不是唯一机读事实**)。
|
|
451
|
-
/** `McpReconnectResult.outcome` 三词(core `src/core/mcp.ts` 逐字);无处置表 —— 成员资格就是全部意义。 */
|
|
452
270
|
export const MCP_REDIAL_OUTCOMES = Object.freeze(['reconnected', 'refused', 'not_declared']);
|
|
453
271
|
export function readMcpServerRedialed(notice) {
|
|
454
272
|
if (typeof notice !== 'object' || notice === null || Array.isArray(notice))
|
|
@@ -1,37 +1,7 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* W1 带 key 变体(design/285 批 0,P-31 正位解的取值层)——**某一个会话槽**的 session 参数值。
|
|
3
|
-
*
|
|
4
|
-
* 为什么必须有它:多会话宿主每个会话一个 `sessionKey` 槽(`installHostFor(key, {session})`),
|
|
5
|
-
* 而零参形只认 `DEFAULT_SESSION_KEY`。fleet 台账的会话锚要跟着 ledger 的 `sessionKey` 走,
|
|
6
|
-
* 取值这一跳就不能再写死默认槽(在册局限 **P-31** 的第一处断点)。
|
|
7
|
-
*
|
|
8
|
-
* 🔴 [1501] 空串归一**只此一处**(恒不返回空串:要么真值要么 undefined)—— 消费点绝不重铸这条规则。
|
|
9
|
-
* 🔴 缺席语义与零参形逐字同:该键未装 `SessionPort`(或端自己也还没有值)⇒ `undefined` + 计该键 miss
|
|
10
|
-
* (`hostPortMissesFor(key)` 可点名),不是「少个查询参数」而是该键的 durable 读面整条 404。
|
|
11
|
-
*/
|
|
12
1
|
export declare function engineSessionParamFor(sessionKey: string): string | undefined;
|
|
13
|
-
/**
|
|
14
|
-
* 当前会话的 session 参数值;undefined = 端未装 SessionPort,或端自己也还没有值。
|
|
15
|
-
* 零参形 = `engineSessionParamFor(DEFAULT_SESSION_KEY)` 的兼容层(单一取值链,不抄第二份)。
|
|
16
|
-
*/
|
|
17
2
|
export declare function engineSessionParam(): string | undefined;
|
|
18
|
-
/** spread 便捷形:`{ ...engineSessionParamSpread() }` → `{ session: '<sid>' }` 或 `{}`。 */
|
|
19
3
|
export declare function engineSessionParamSpread(): {
|
|
20
4
|
session?: string;
|
|
21
5
|
};
|
|
22
|
-
/**
|
|
23
|
-
* W1 带 key 变体(design/285 批 3):**某一个会话槽**此刻在飞的 run。
|
|
24
|
-
*
|
|
25
|
-
* 为什么必须有它(异源对抗复审 [high]):`/compact` 这类「打这条会话此刻在飞的那条 run」的动词
|
|
26
|
-
* 在批 3 之后按槽取 wire target 与 `?session=`,而 run id 若还从默认槽读,就成了
|
|
27
|
-
* 「**A 的 run id 发到 B 的服务器**」—— 比换锚之前更坏(之前三件一致地错在同一个槽上)。
|
|
28
|
-
* 一条动词的**槽键必须一以贯之**:目标、会话、run id、能力位、pending 状态,全按同一个 key。
|
|
29
|
-
*/
|
|
30
6
|
export declare function activeEngineRunIdFor(sessionKey: string): string | undefined;
|
|
31
|
-
/**
|
|
32
|
-
* 当前活跃引擎 run 的 id(壳 = `engineToolDetach.getActiveEngineTaskId()`)。
|
|
33
|
-
* 库内多处 durable 动词要「宿主 run」做寻址第一跳,统一从这里取,不各自 import 端模块。
|
|
34
|
-
* 零参形 = `activeEngineRunIdFor(DEFAULT_SESSION_KEY)` 的兼容层(`hostSession()` 本身就是
|
|
35
|
-
* `hostSessionFor(DEFAULT_SESSION_KEY)`,取值链逐字等价,含 miss 计数那一跳)。
|
|
36
|
-
*/
|
|
37
7
|
export declare function activeEngineRunId(): string | undefined;
|
|
@@ -1,72 +1,20 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* ⇄ B6 批搬迁(2026-07-27,多端改造设计稿 §3 B6 + B4「四残件」之 session-id port):
|
|
3
|
-
* cli `src/sema/engineSessionParam.ts` 搬入,唯一改动 = **取值源换 port**。
|
|
4
|
-
*
|
|
5
|
-
* engineSessionParam — durable run 面 `?session=` 参数的统一派生([1501]§三,server 1.246 起
|
|
6
|
-
* legacy 八面软拍纪律:带了且不匹配=404,没带=warn-once 放行,二拍将把「没带」也 404;新面
|
|
7
|
-
* A/B(taskOutput/taskStop)与 subagentOutput 则出生即强制)。
|
|
8
|
-
*
|
|
9
|
-
* 取值语义 = run 绑定的会话(本端所有 durable 动词的目标 run 都是本会话自有 run)。
|
|
10
|
-
*
|
|
11
|
-
* 🔴 **搬迁的唯一差分**:壳里这里是「`getLiveSessionId()`(引擎捕获值)优先,退
|
|
12
|
-
* `bootstrap/state.getSessionId()`(壳 boot-time id),后者靠动态 import 落地」——**两级优先与
|
|
13
|
-
* 那个动态 import 都是宿主生命周期资产**,整体上移到 `SessionPort.currentSessionId()`
|
|
14
|
-
* (壳侧 shim 里原样保留那两级 + 动态 import,行为一字节不变)。库这边只剩「取一个值 + 空串归一」。
|
|
15
|
-
*
|
|
16
|
-
* 🔴 [1501] 空串陷阱:`?session=`(空值)按「带了且不匹配」处理=404 —— 本 helper 恒不返回
|
|
17
|
-
* 空串:要么真值要么 undefined(调用方 spread 姿势 `...(s ? { session: s } : {})`)。
|
|
18
|
-
*
|
|
19
|
-
* 🔴 端漏装 SessionPort 的后果**不是**「少个查询参数」:session-bound run 的 taskOutput /
|
|
20
|
-
* taskStop / subagentOutput 三面一律 404 fail-closed ⇒ 子代读面整条静默哑掉。所以
|
|
21
|
-
* `hostSession()` 计 miss,宿主自检 `hostPortMisses()` 恒应为空。
|
|
22
|
-
*/
|
|
23
1
|
import { hostSessionFor } from './host.js';
|
|
24
2
|
import { DEFAULT_SESSION_KEY } from './sessionSlot.js';
|
|
25
|
-
/**
|
|
26
|
-
* W1 带 key 变体(design/285 批 0,P-31 正位解的取值层)——**某一个会话槽**的 session 参数值。
|
|
27
|
-
*
|
|
28
|
-
* 为什么必须有它:多会话宿主每个会话一个 `sessionKey` 槽(`installHostFor(key, {session})`),
|
|
29
|
-
* 而零参形只认 `DEFAULT_SESSION_KEY`。fleet 台账的会话锚要跟着 ledger 的 `sessionKey` 走,
|
|
30
|
-
* 取值这一跳就不能再写死默认槽(在册局限 **P-31** 的第一处断点)。
|
|
31
|
-
*
|
|
32
|
-
* 🔴 [1501] 空串归一**只此一处**(恒不返回空串:要么真值要么 undefined)—— 消费点绝不重铸这条规则。
|
|
33
|
-
* 🔴 缺席语义与零参形逐字同:该键未装 `SessionPort`(或端自己也还没有值)⇒ `undefined` + 计该键 miss
|
|
34
|
-
* (`hostPortMissesFor(key)` 可点名),不是「少个查询参数」而是该键的 durable 读面整条 404。
|
|
35
|
-
*/
|
|
36
3
|
export function engineSessionParamFor(sessionKey) {
|
|
37
4
|
const sid = hostSessionFor(sessionKey)?.currentSessionId();
|
|
38
5
|
return typeof sid === 'string' && sid.length > 0 ? sid : undefined;
|
|
39
6
|
}
|
|
40
|
-
/**
|
|
41
|
-
* 当前会话的 session 参数值;undefined = 端未装 SessionPort,或端自己也还没有值。
|
|
42
|
-
* 零参形 = `engineSessionParamFor(DEFAULT_SESSION_KEY)` 的兼容层(单一取值链,不抄第二份)。
|
|
43
|
-
*/
|
|
44
7
|
export function engineSessionParam() {
|
|
45
8
|
return engineSessionParamFor(DEFAULT_SESSION_KEY);
|
|
46
9
|
}
|
|
47
|
-
/** spread 便捷形:`{ ...engineSessionParamSpread() }` → `{ session: '<sid>' }` 或 `{}`。 */
|
|
48
10
|
export function engineSessionParamSpread() {
|
|
49
11
|
const s = engineSessionParam();
|
|
50
12
|
return s ? { session: s } : {};
|
|
51
13
|
}
|
|
52
|
-
/**
|
|
53
|
-
* W1 带 key 变体(design/285 批 3):**某一个会话槽**此刻在飞的 run。
|
|
54
|
-
*
|
|
55
|
-
* 为什么必须有它(异源对抗复审 [high]):`/compact` 这类「打这条会话此刻在飞的那条 run」的动词
|
|
56
|
-
* 在批 3 之后按槽取 wire target 与 `?session=`,而 run id 若还从默认槽读,就成了
|
|
57
|
-
* 「**A 的 run id 发到 B 的服务器**」—— 比换锚之前更坏(之前三件一致地错在同一个槽上)。
|
|
58
|
-
* 一条动词的**槽键必须一以贯之**:目标、会话、run id、能力位、pending 状态,全按同一个 key。
|
|
59
|
-
*/
|
|
60
14
|
export function activeEngineRunIdFor(sessionKey) {
|
|
61
15
|
const id = hostSessionFor(sessionKey)?.activeRunId();
|
|
62
16
|
return typeof id === 'string' && id.length > 0 ? id : undefined;
|
|
63
17
|
}
|
|
64
|
-
/**
|
|
65
|
-
* 当前活跃引擎 run 的 id(壳 = `engineToolDetach.getActiveEngineTaskId()`)。
|
|
66
|
-
* 库内多处 durable 动词要「宿主 run」做寻址第一跳,统一从这里取,不各自 import 端模块。
|
|
67
|
-
* 零参形 = `activeEngineRunIdFor(DEFAULT_SESSION_KEY)` 的兼容层(`hostSession()` 本身就是
|
|
68
|
-
* `hostSessionFor(DEFAULT_SESSION_KEY)`,取值链逐字等价,含 miss 计数那一跳)。
|
|
69
|
-
*/
|
|
70
18
|
export function activeEngineRunId() {
|
|
71
19
|
return activeEngineRunIdFor(DEFAULT_SESSION_KEY);
|
|
72
20
|
}
|
|
@@ -1,32 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* ⇄ B1 批搬迁(2026-07-27,多端改造设计稿 §2.4.1-B):cli src/sema/engineToolLabelStore.ts 逐字搬入(零依赖;壳侧改 re-export)。
|
|
3
|
-
*/
|
|
4
|
-
/**
|
|
5
|
-
* src/sema/engineToolLabelStore.ts — core 工具**展示名**(`tool_start.label` / `tool_end.label`)的
|
|
6
|
-
* 壳侧侧信道(sema-owned 新文件,零 CC 基座改动)。
|
|
7
|
-
*
|
|
8
|
-
* 为什么是侧信道而不是把 label 留在 tool_use block 上(P0-2 的关键判断):
|
|
9
|
-
* tool_use content block 会**进壳 transcript**(jsonl 持久 + /compact 时原样直发 provider)。
|
|
10
|
-
* Anthropic/OpenAI 两侧对 tool_use block 都是严格形 `{type,id,name,input}`,多一个 `label` 键
|
|
11
|
-
* = 400 invalid_request —— 这正是「件1 中断事故批 G」踩过的坑(裸对象 content 落 transcript,
|
|
12
|
-
* /compact 直发 ark/volces 400)。所以 bridge 在渲染前把 label 从 block 上摘掉(同
|
|
13
|
-
* eventId/parentToolCallId 待遇),存到这里,渲染面按 toolCallId 查。
|
|
14
|
-
*
|
|
15
|
-
* 消费面:components/messages/AssistantToolUseMessage.tsx 的 **unknown-tool fallback** ——
|
|
16
|
-
* 也只在那里消费。已注册工具(壳本地 registry 命中)的卡标题恒走 CC 的 `tool.userFacingName()`,
|
|
17
|
-
* 绝不被引擎 label 覆盖(CC 逐字对齐优先;core label 与 CC 的 MCP 卡形 `server - tool (MCP)` 不同形,
|
|
18
|
-
* 覆盖 = 制造分叉)。
|
|
19
|
-
*
|
|
20
|
-
* 今天的真实命中面(2026-07-26 直连钉版 core 1.416 实测):core 只在 `label !== name` 时才上 wire
|
|
21
|
-
* (runtask.js:1406),而唯一这样的一族是 **MCP 远端工具** —— `name = mcp__<server>__<tool>`、
|
|
22
|
-
* `label = <server>:<tool>`(core/mcp.js:902)。即:引擎侧连着、壳侧没连的那台 MCP server 的工具,
|
|
23
|
-
* 修前卡头是裸 `mcp__foo__bar`,修后是 core 的展示名 `foo:bar`。
|
|
24
|
-
*
|
|
25
|
-
* 生命周期:按 toolCallId 键的有界 Map(FIFO 淘汰),纯 chrome 数据,不持久、不回喂模型。
|
|
26
|
-
*/
|
|
27
|
-
/** 登记一个 tool call 的 core 展示名(空/非串忽略)。 */
|
|
28
1
|
export declare function recordEngineToolLabel(toolCallId: unknown, label: unknown): void;
|
|
29
|
-
/** 读一个 tool call 的 core 展示名(未登记 ⇒ undefined,调用方回落原有形状)。 */
|
|
30
2
|
export declare function engineToolLabel(toolCallId: unknown): string | undefined;
|
|
31
|
-
/** 测试用:清空台账。 */
|
|
32
3
|
export declare function resetEngineToolLabels(): void;
|
|
@@ -1,39 +1,10 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* ⇄ B1 批搬迁(2026-07-27,多端改造设计稿 §2.4.1-B):cli src/sema/engineToolLabelStore.ts 逐字搬入(零依赖;壳侧改 re-export)。
|
|
3
|
-
*/
|
|
4
|
-
/**
|
|
5
|
-
* src/sema/engineToolLabelStore.ts — core 工具**展示名**(`tool_start.label` / `tool_end.label`)的
|
|
6
|
-
* 壳侧侧信道(sema-owned 新文件,零 CC 基座改动)。
|
|
7
|
-
*
|
|
8
|
-
* 为什么是侧信道而不是把 label 留在 tool_use block 上(P0-2 的关键判断):
|
|
9
|
-
* tool_use content block 会**进壳 transcript**(jsonl 持久 + /compact 时原样直发 provider)。
|
|
10
|
-
* Anthropic/OpenAI 两侧对 tool_use block 都是严格形 `{type,id,name,input}`,多一个 `label` 键
|
|
11
|
-
* = 400 invalid_request —— 这正是「件1 中断事故批 G」踩过的坑(裸对象 content 落 transcript,
|
|
12
|
-
* /compact 直发 ark/volces 400)。所以 bridge 在渲染前把 label 从 block 上摘掉(同
|
|
13
|
-
* eventId/parentToolCallId 待遇),存到这里,渲染面按 toolCallId 查。
|
|
14
|
-
*
|
|
15
|
-
* 消费面:components/messages/AssistantToolUseMessage.tsx 的 **unknown-tool fallback** ——
|
|
16
|
-
* 也只在那里消费。已注册工具(壳本地 registry 命中)的卡标题恒走 CC 的 `tool.userFacingName()`,
|
|
17
|
-
* 绝不被引擎 label 覆盖(CC 逐字对齐优先;core label 与 CC 的 MCP 卡形 `server - tool (MCP)` 不同形,
|
|
18
|
-
* 覆盖 = 制造分叉)。
|
|
19
|
-
*
|
|
20
|
-
* 今天的真实命中面(2026-07-26 直连钉版 core 1.416 实测):core 只在 `label !== name` 时才上 wire
|
|
21
|
-
* (runtask.js:1406),而唯一这样的一族是 **MCP 远端工具** —— `name = mcp__<server>__<tool>`、
|
|
22
|
-
* `label = <server>:<tool>`(core/mcp.js:902)。即:引擎侧连着、壳侧没连的那台 MCP server 的工具,
|
|
23
|
-
* 修前卡头是裸 `mcp__foo__bar`,修后是 core 的展示名 `foo:bar`。
|
|
24
|
-
*
|
|
25
|
-
* 生命周期:按 toolCallId 键的有界 Map(FIFO 淘汰),纯 chrome 数据,不持久、不回喂模型。
|
|
26
|
-
*/
|
|
27
|
-
/** 上界:一个长会话里 tool call 无限增长,标签只是渲染辅助,超界按 FIFO 淘汰最旧的。 */
|
|
28
1
|
const MAX_ENTRIES = 500;
|
|
29
2
|
const labels = new Map();
|
|
30
|
-
/** 登记一个 tool call 的 core 展示名(空/非串忽略)。 */
|
|
31
3
|
export function recordEngineToolLabel(toolCallId, label) {
|
|
32
4
|
if (typeof toolCallId !== 'string' || toolCallId.length === 0)
|
|
33
5
|
return;
|
|
34
6
|
if (typeof label !== 'string' || label.trim().length === 0)
|
|
35
7
|
return;
|
|
36
|
-
// 已有值不覆盖:tool_start 先到,tool_end 只是补位(两者同源同值)。
|
|
37
8
|
if (labels.has(toolCallId))
|
|
38
9
|
return;
|
|
39
10
|
if (labels.size >= MAX_ENTRIES) {
|
|
@@ -43,13 +14,11 @@ export function recordEngineToolLabel(toolCallId, label) {
|
|
|
43
14
|
}
|
|
44
15
|
labels.set(toolCallId, label.trim());
|
|
45
16
|
}
|
|
46
|
-
/** 读一个 tool call 的 core 展示名(未登记 ⇒ undefined,调用方回落原有形状)。 */
|
|
47
17
|
export function engineToolLabel(toolCallId) {
|
|
48
18
|
if (typeof toolCallId !== 'string' || toolCallId.length === 0)
|
|
49
19
|
return undefined;
|
|
50
20
|
return labels.get(toolCallId);
|
|
51
21
|
}
|
|
52
|
-
/** 测试用:清空台账。 */
|
|
53
22
|
export function resetEngineToolLabels() {
|
|
54
23
|
labels.clear();
|
|
55
24
|
}
|
package/dist/engineWireSdk.d.ts
CHANGED
|
@@ -1,115 +1,25 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* ⇄ B2 批搬迁(2026-07-27,多端改造设计稿 §3 B2):cli src/sema/engineWireSdk.ts 逐字搬入(纯半场 client 工厂;agentsWireCaps 的静态依赖,故同批过来)。
|
|
3
|
-
*/
|
|
4
|
-
/**
|
|
5
|
-
* engineWireSdk — SDK 宪法迁移批(0.0.52)的纯半场 client 工厂:壳内各 wire 子模块(compact/steer/
|
|
6
|
-
* plan-review/auto-title/recap/caps 探测)从手抄 raw fetch 改接 @sema-agent/sdk AgentClient 的共用
|
|
7
|
-
* 构造点。ZERO 产品依赖(只 import 外部零依赖 SDK)——agentsWireCaps/liveInitToolFace 等「纯半场/
|
|
8
|
-
* 零产品图」模块可安全 import,不拖 engineTarget 的 fs 图,亦无循环依赖。
|
|
9
|
-
*
|
|
10
|
-
* 凭证解析 = engineTarget.resolveLiveAuthToken 的逐字镜像(#118 三态;那边是产品半场真源,这里为
|
|
11
|
-
* 纯半场复刻,两处语义必须一致):
|
|
12
|
-
* · token 有 → 原样 Bearer;
|
|
13
|
-
* · 无 token ∧ loopback → { mode: 'loopback-unauthed' }(出站零 Authorization 头,绝不伪造);
|
|
14
|
-
* · 无 token ∧ 非 loopback → 'anon'(fail-closed worker 换来诚实 401;与主车道 replEntry 同姿势)。
|
|
15
|
-
* ⚠️ 迁移差分记账:旧 raw fetch 在「无 token ∧ 非 loopback」时不带任何 Authorization 头;SDK 恒需
|
|
16
|
-
* 合法 authToken 形,这里按主车道姿势出 'anon'——该态本就是残破配置(connect 未登录),两种姿势对
|
|
17
|
-
* fail-closed worker 都是 401,对 owner-gated 路由都是 owner 不匹配,行为面等价。
|
|
18
|
-
*
|
|
19
|
-
* 缺省 maxRetries=0:raw fetch 原语义是单发不重试(探针有自己的预算窗;fire-and-forget 不该静默
|
|
20
|
-
* 翻倍打点)。要 SDK 缺省重试的调用方显式传。principal 缺席=不发头(F-011 停发,replEntry live 车道
|
|
21
|
-
* 同款)——SDK Transport 恒 stamp x-agent-principal(principal-first 宪法);旧 raw fetch 在缺
|
|
22
|
-
* principal 时省略该头,迁移后恒出示,对 requirePrincipal 部署是 fail-open 改善,已记账。
|
|
23
|
-
*/
|
|
24
1
|
import { AgentClient } from '@sema-agent/sdk';
|
|
25
2
|
export type WireAuthToken = string | {
|
|
26
3
|
mode: 'loopback-unauthed';
|
|
27
4
|
};
|
|
28
|
-
/**
|
|
29
|
-
* 凭证**位**的取值形:一份串,或一个**每次发请求时被调用**的取值函数(0.62.0 放宽)。
|
|
30
|
-
*
|
|
31
|
-
* 🔴 为什么需要函数形:串是在**构造那一刻**被读走的 —— 底层客户端把它捕获进闭包,此后每一发请求
|
|
32
|
-
* 都用那一份。引擎被别的会话换代、凭证换新之后,一个长命的 client 会一直拿**旧凭证**发请求,
|
|
33
|
-
* 而端唯一的出路是把整个 client 连同它身上的状态重建一遍。函数形让「换代」只换一个值。
|
|
34
|
-
* 🔴 取值时机是**每发一次请求读一次**,不是构造期读一次然后复用(那只是把快照挪了个地方)。
|
|
35
|
-
* 🔴 取不到值(返回 `undefined` / 空串 / **抛错**)⇒ 按「这一刻没有凭证」走 {@link resolveWireAuth}
|
|
36
|
-
* 的三态:回环出零 Authorization 头(绝不伪造),非回环出 fail-closed 的匿名身份(换一个诚实的
|
|
37
|
-
* 401)。取值口坏了不该让整条 wire 变成不可用,所以抛错是 fail-soft 而不是把异常送进请求路径。
|
|
38
|
-
* 🔴 凭证纪律:本包对这个值只做一件事 —— 放进出站的 Authorization 头。不落盘、不进日志、不进 URL。
|
|
39
|
-
*/
|
|
40
5
|
export type WireAuthTokenSource = string | (() => string | undefined);
|
|
41
|
-
/** loopback 判定(engineTarget.isLoopbackEngineUrl 逐字镜像;解析失败=非 loopback)。 */
|
|
42
6
|
export declare function isLoopbackWireUrl(url: string): boolean;
|
|
43
|
-
/**
|
|
44
|
-
* §8-2 定谳的**唯一**凭证解析口(B4 收编)—— 11 处构造点的公共分母。
|
|
45
|
-
*
|
|
46
|
-
* 背景(设计稿 §8-2 + B4 实测):壳里今天是 **2 份三态解析**(`engineTarget.resolveLiveAuthToken`
|
|
47
|
-
* 产品半场 + 本包 `wireAuthTokenFor` 纯半场,后者头注自述是前者的「逐字镜像」⇒ 两份必然漂移)
|
|
48
|
-
* 外加 **11 处 `new AgentClient` 直造**,其中 7 处根本不走任何解析口,直接手写
|
|
49
|
-
* `token ?? { mode:'loopback-unauthed' }` —— 那一形**丢了 'anon' 那一态**:非 loopback 且无 token
|
|
50
|
-
* 时它给的是 loopback-unauthed(出站零 Authorization 头),而三态解析给 'anon'。对 fail-closed
|
|
51
|
-
* worker 两者都是 401,但对 **owner-gated 路由**不是同一回事,所以这是真分歧不是等价写法。
|
|
52
|
-
*
|
|
53
|
-
* 🔴 **env 缺省留在端上**:`resolveLiveAuthToken` 的第二参缺省是 `process.env.SEMA_LIVE_TOKEN`,
|
|
54
|
-
* 那一半**绝不进包**(本包零 `process.env` —— portability 门盯着)。壳侧 shim 保留缺省参即可:
|
|
55
|
-
* `resolveLiveAuthToken(u, t = process.env.SEMA_LIVE_TOKEN) => resolveWireAuth(u, t)`。
|
|
56
|
-
*
|
|
57
|
-
* 三态(#118):token 有 ⇒ 原样 Bearer;无 token ∧ loopback ⇒ `{mode:'loopback-unauthed'}`
|
|
58
|
-
* (出站零 Authorization 头,绝不伪造);无 token ∧ 非 loopback ⇒ `'anon'`(fail-closed 换诚实 401)。
|
|
59
|
-
* `baseUrl` 允许 undefined(= `resolveLiveAuthToken` 的签名超集,本地自 spawn 态)⇒ 'anon'。
|
|
60
|
-
*/
|
|
61
7
|
export declare function resolveWireAuth(baseUrl: string | undefined, token?: string): WireAuthToken;
|
|
62
|
-
/**
|
|
63
|
-
* #118 三态凭证解析(旧名,B2 引入)。
|
|
64
|
-
* B4 起是 `resolveWireAuth` 的**别名**(baseUrl 必填的窄签名);两者行为逐字相同,保留是为了
|
|
65
|
-
* 壳侧既有 import 零改动 —— 不设代际让位([clean-cut-no-legacy-compat] 只约束**行为面**硬切,
|
|
66
|
-
* 同一函数的两个名字不是两套行为)。新代码一律用 `resolveWireAuth`。
|
|
67
|
-
*/
|
|
68
8
|
export declare function wireAuthTokenFor(baseUrl: string, token?: string): WireAuthToken;
|
|
69
|
-
/**
|
|
70
|
-
* TYPESHAPE-12:「向引擎发一次探测请求需要哪些参数」的共用形状(agentsWireCaps.
|
|
71
|
-
* engineSupportsTaskAgents ↔ liveInitToolFace.probeScenarioTools 此前各写一份逐字相同的 4 成员
|
|
72
|
-
* 内联形)。🔴 只统一形状,不统一值:两处 `timeoutMs` 缺省值不同(3000 vs 2000)——这是既有行为
|
|
73
|
-
* 差异,各自在调用点保留现值,改值属于行为变更,不在本次收编授权内。
|
|
74
|
-
*/
|
|
75
9
|
export type EngineProbeOpts = {
|
|
76
10
|
fetchImpl?: typeof fetch;
|
|
77
11
|
timeoutMs?: number;
|
|
78
|
-
/** 串或取值函数({@link WireAuthTokenSource};0.62.0 放宽,串形逐字节零行为差)。 */
|
|
79
12
|
authToken?: WireAuthTokenSource | undefined;
|
|
80
13
|
principal?: string | undefined;
|
|
81
14
|
};
|
|
82
15
|
export type EngineWireClientConfig = {
|
|
83
16
|
baseUrl: string;
|
|
84
|
-
/** 真 token 串;缺省经 wireAuthTokenFor 三态解析(loopback-unauthed / 'anon')。
|
|
85
|
-
*
|
|
86
|
-
* **取值函数形**({@link WireAuthTokenSource},0.62.0):`() => string | undefined` ——
|
|
87
|
-
* **每发一次请求读一次**,不在构造时快照。给「引擎换代后凭证换新、但 client 要接着用」那条路
|
|
88
|
-
* (端从此只换值,不必重建 client)。三态语义逐格不变,取不到就按无 token 解析。
|
|
89
|
-
*
|
|
90
|
-
* 🔴 中继形与取值函数形**互斥且不同源**:中继是作者的显式声明(「我部署在同源反代后」),
|
|
91
|
-
* 它结构上就没有 token;取值函数是「凭证会变」,两者不会同时出现在一个配置里。
|
|
92
|
-
*
|
|
93
|
-
* `{ mode: 'same-origin-relay' }`([C175],0.29.0)= **浏览器同源宿主的显式声明形**:凭证由
|
|
94
|
-
* 同源反代(cookie/session)承载,出站零 Authorization 头;它是 SDK 浏览器守卫的**唯一**豁免形
|
|
95
|
-
* (AgentClient 在浏览器宿主拒绝 token/loopback-unauthed/'anon' 三态构造),且该形下 `baseUrl`
|
|
96
|
-
* 允许相对/同源路径(`''`、`'/api'`)。🔴 这个形**只能显式传入**(作者声明「我部署在同源反代后」),
|
|
97
|
-
* 绝不由 `resolveWireAuth` 三态解析推导出来 —— 解析口的三态语义一字不动,relay 形直传 SDK。 */
|
|
98
17
|
token?: WireAuthTokenSource | {
|
|
99
18
|
mode: 'same-origin-relay';
|
|
100
19
|
};
|
|
101
|
-
/** 缺席/undefined=不发 x-agent-principal 头(owner-null;F-011 停发,replEntry live 车道同闸口
|
|
102
|
-
* 语义;显式 `| undefined` 让 EngineWireTarget.principal 直传合法——exactOptionalPropertyTypes)。 */
|
|
103
20
|
principal?: string | undefined;
|
|
104
|
-
/** 每次请求的超时预算(SDK 缺省 60s)。 */
|
|
105
21
|
timeoutMs?: number;
|
|
106
|
-
/** 缺省 0(raw fetch 单发语义);要 SDK 重试的调用方显式传。 */
|
|
107
22
|
maxRetries?: number;
|
|
108
|
-
/** 测试注入面(探针单测的 fetch stub)。 */
|
|
109
23
|
fetchImpl?: typeof fetch;
|
|
110
24
|
};
|
|
111
|
-
/**
|
|
112
|
-
* 构造一个引擎 wire 用 AgentClient。null = 构造失败(SDK fail-closed 拒绝——不该发生:
|
|
113
|
-
* wireAuthTokenFor 恒给合法形;防御性 fail-soft,调用方按各自离线/探测失败路径处理)。
|
|
114
|
-
*/
|
|
115
25
|
export declare function makeEngineWireClient(cfg: EngineWireClientConfig): AgentClient | null;
|