@sema-agent/client-core 0.77.1 → 0.78.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +42 -1
- package/README.md +6 -5
- package/dist/abortableSleep.d.ts +0 -28
- package/dist/abortableSleep.js +0 -28
- package/dist/adapt/arms.d.ts +0 -46
- package/dist/adapt/arms.js +9 -544
- package/dist/adapt/ids.d.ts +0 -58
- package/dist/adapt/ids.js +0 -63
- package/dist/adapt/instanceLedger.d.ts +0 -25
- package/dist/adapt/instanceLedger.js +0 -20
- package/dist/adapt/panelTasks.d.ts +0 -69
- package/dist/adapt/panelTasks.js +0 -95
- package/dist/adapt/textSegmentAuthority.d.ts +1 -137
- package/dist/adapt/textSegmentAuthority.js +0 -54
- package/dist/adapt/textStream.d.ts +0 -252
- package/dist/adapt/textStream.js +2 -281
- package/dist/adapt/toolCards.d.ts +0 -46
- package/dist/adapt/toolCards.js +0 -23
- package/dist/adapt/turnFlags.d.ts +0 -54
- package/dist/adapt/turnFlags.js +1 -17
- package/dist/adapt/wireShapes.d.ts +0 -92
- package/dist/adapt/wireShapes.js +0 -83
- package/dist/adapt.d.ts +0 -55
- package/dist/adapt.js +1 -120
- package/dist/adapter/activeRunSelfHeal.d.ts +22 -515
- package/dist/adapter/activeRunSelfHeal.js +10 -625
- package/dist/adapter/downstream/eventToSdkMessage.d.ts +2 -305
- package/dist/adapter/downstream/eventToSdkMessage.js +2 -867
- package/dist/adapter/downstream/terminalToSdkResult.d.ts +2 -314
- package/dist/adapter/downstream/terminalToSdkResult.js +13 -560
- package/dist/adapter/downstream/turnUsageToModelUsage.d.ts +0 -95
- package/dist/adapter/downstream/turnUsageToModelUsage.js +2 -31
- package/dist/adapter/runStream.d.ts +0 -206
- package/dist/adapter/runStream.js +6 -596
- package/dist/adapter/types.d.ts +0 -111
- package/dist/adapter/types.js +0 -29
- package/dist/agentSession/backgroundView.d.ts +0 -106
- package/dist/agentSession/backgroundView.js +3 -49
- package/dist/agentSession/contract.d.ts +0 -98
- package/dist/agentSession/contract.js +0 -12
- package/dist/agentsWireCaps.d.ts +0 -72
- package/dist/agentsWireCaps.js +4 -72
- package/dist/approvalsStreamLiveCapability.d.ts +0 -25
- package/dist/approvalsStreamLiveCapability.js +0 -31
- package/dist/argvFlagValue.d.ts +0 -33
- package/dist/argvFlagValue.js +3 -35
- package/dist/attachmentsWireCaps.d.ts +0 -127
- package/dist/attachmentsWireCaps.js +0 -144
- package/dist/autoModeUnavailable.d.ts +0 -120
- package/dist/autoModeUnavailable.js +0 -144
- package/dist/classifierStatus.d.ts +0 -72
- package/dist/classifierStatus.js +0 -167
- package/dist/classifierVerdictWire.d.ts +0 -54
- package/dist/classifierVerdictWire.js +0 -133
- package/dist/clientContextWireCaps.d.ts +0 -37
- package/dist/clientContextWireCaps.js +0 -36
- package/dist/clientSlice.d.ts +0 -63
- package/dist/clientSlice.js +0 -45
- package/dist/cloudConfigWireCaps.d.ts +0 -86
- package/dist/cloudConfigWireCaps.js +2 -65
- package/dist/compensations.d.ts +0 -52
- package/dist/compensations.js +2 -63
- package/dist/controlRouter.d.ts +2 -208
- package/dist/controlRouter.js +1 -129
- package/dist/coreValuePorts.d.ts +0 -84
- package/dist/coreValuePorts.js +0 -29
- package/dist/decideReceipt.d.ts +0 -110
- package/dist/decideReceipt.js +0 -84
- package/dist/detachWire.d.ts +0 -130
- package/dist/detachWire.js +1 -130
- package/dist/deviceExecutorManagementCapability.d.ts +2 -35
- package/dist/deviceExecutorManagementCapability.js +1 -37
- package/dist/diagnostics.d.ts +0 -8
- package/dist/diagnostics.js +0 -8
- package/dist/diff/patch.d.ts +0 -17
- package/dist/diff/patch.js +0 -19
- package/dist/effectiveFacts.d.ts +0 -40
- package/dist/effectiveFacts.js +0 -22
- package/dist/effortWire.d.ts +0 -11
- package/dist/effortWire.js +0 -12
- package/dist/engineAgentPanelStore.d.ts +0 -169
- package/dist/engineAgentPanelStore.js +13 -293
- package/dist/engineCapReader.d.ts +0 -62
- package/dist/engineCapReader.js +1 -43
- package/dist/engineCapsCache.d.ts +0 -177
- package/dist/engineCapsCache.js +0 -199
- package/dist/engineCapsGenerationGuard.d.ts +0 -2
- package/dist/engineCapsGenerationGuard.js +0 -11
- package/dist/engineErrorCodes.d.ts +1 -316
- package/dist/engineErrorCodes.js +0 -427
- package/dist/engineHttpTools.d.ts +0 -29
- package/dist/engineHttpTools.js +0 -29
- package/dist/engineIdentity.d.ts +0 -83
- package/dist/engineIdentity.js +0 -88
- package/dist/engineInlineTaskStats.d.ts +0 -57
- package/dist/engineInlineTaskStats.js +1 -42
- package/dist/engineNoticeCodes.d.ts +0 -190
- package/dist/engineNoticeCodes.js +0 -182
- package/dist/engineSessionParam.d.ts +0 -30
- package/dist/engineSessionParam.js +0 -52
- package/dist/engineToolLabelStore.d.ts +0 -29
- package/dist/engineToolLabelStore.js +0 -31
- package/dist/engineWireSdk.d.ts +0 -90
- package/dist/engineWireSdk.js +0 -74
- package/dist/engineWireTarget.d.ts +0 -14
- package/dist/engineWireTarget.js +0 -39
- package/dist/env/localeGeo.d.ts +0 -12
- package/dist/env/localeGeo.js +2 -77
- package/dist/env/localeTag.d.ts +0 -34
- package/dist/env/localeTag.js +0 -32
- package/dist/env/uiLanguage.d.ts +0 -13
- package/dist/env/uiLanguage.js +0 -25
- package/dist/envFlag.d.ts +0 -37
- package/dist/envFlag.js +0 -40
- package/dist/executionLaneCapability.d.ts +0 -48
- package/dist/executionLaneCapability.js +0 -54
- package/dist/finalVerifyWire.d.ts +0 -67
- package/dist/finalVerifyWire.js +3 -43
- package/dist/fleet/fleetLedger.d.ts +0 -308
- package/dist/fleet/fleetLedger.js +10 -429
- package/dist/fleet/fleetProjection.d.ts +0 -240
- package/dist/fleet/fleetProjection.js +0 -189
- package/dist/fleet/fleetRowAgentType.d.ts +0 -6
- package/dist/fleet/fleetRowAgentType.js +1 -32
- package/dist/fleet/workflowSizeWarning.d.ts +0 -47
- package/dist/fleet/workflowSizeWarning.js +1 -46
- package/dist/fleetAgentPanelProjection.d.ts +0 -48
- package/dist/fleetAgentPanelProjection.js +8 -173
- package/dist/fleetTaskDesc.d.ts +0 -39
- package/dist/fleetTaskDesc.js +0 -69
- package/dist/forkWireCaps.d.ts +0 -23
- package/dist/forkWireCaps.js +1 -24
- package/dist/gateOutcome.d.ts +0 -140
- package/dist/gateOutcome.js +0 -85
- package/dist/gateVocabulary.d.ts +0 -114
- package/dist/gateVocabulary.js +3 -161
- package/dist/goalStopHook.d.ts +0 -127
- package/dist/goalStopHook.js +0 -178
- package/dist/headlessPermissionModeWire.d.ts +0 -76
- package/dist/headlessPermissionModeWire.js +1 -155
- package/dist/headlessReconnectWire.d.ts +0 -84
- package/dist/headlessReconnectWire.js +13 -67
- package/dist/hitl/approvalDecisionNoteAudit.d.ts +0 -49
- package/dist/hitl/approvalDecisionNoteAudit.js +0 -56
- package/dist/hitl/approvalOutcomeNote.d.ts +0 -2
- package/dist/hitl/approvalOutcomeNote.js +0 -20
- package/dist/hitl/approvalResolution.d.ts +0 -113
- package/dist/hitl/approvalResolution.js +0 -66
- package/dist/hitl/approvalsFeed.d.ts +0 -183
- package/dist/hitl/approvalsFeed.js +12 -243
- package/dist/hitl/armedGateRegistry.d.ts +0 -55
- package/dist/hitl/armedGateRegistry.js +0 -146
- package/dist/hitl/askGateWire.d.ts +0 -86
- package/dist/hitl/askGateWire.js +1 -95
- package/dist/hitl/askParkRowRouting.d.ts +0 -123
- package/dist/hitl/askParkRowRouting.js +1 -89
- package/dist/hitl/crashConverged.d.ts +0 -148
- package/dist/hitl/crashConverged.js +0 -214
- package/dist/hitl/editedRuleTextPrecheck.d.ts +0 -109
- package/dist/hitl/editedRuleTextPrecheck.js +0 -71
- package/dist/hitl/frameRouter.d.ts +0 -134
- package/dist/hitl/frameRouter.js +6 -378
- package/dist/hitl/gateIdentity.d.ts +0 -39
- package/dist/hitl/gateIdentity.js +0 -41
- package/dist/hitl/gateLedger.d.ts +0 -267
- package/dist/hitl/gateLedger.js +0 -121
- package/dist/hitl/hitlBridge.d.ts +7 -431
- package/dist/hitl/hitlBridge.js +7 -476
- package/dist/hitl/hitlHostSurface.d.ts +0 -150
- package/dist/hitl/hitlHostSurface.js +0 -169
- package/dist/hitl/livePendingAsk.d.ts +0 -91
- package/dist/hitl/livePendingAsk.js +0 -74
- package/dist/hitl/localAllowRule.d.ts +0 -62
- package/dist/hitl/localAllowRule.js +1 -33
- package/dist/hitl/parkOwnership.d.ts +0 -56
- package/dist/hitl/parkOwnership.js +0 -22
- package/dist/hitl/parkResolver.d.ts +3 -88
- package/dist/hitl/parkResolver.js +8 -349
- package/dist/hitl/parkRowBirthWait.d.ts +2 -26
- package/dist/hitl/parkRowBirthWait.js +3 -93
- package/dist/hitl/persistedRulesWire.d.ts +23 -371
- package/dist/hitl/persistedRulesWire.js +62 -329
- package/dist/hitl/planReviewWire.d.ts +4 -176
- package/dist/hitl/planReviewWire.js +9 -312
- package/dist/hitl/resumeRunningCard.d.ts +0 -105
- package/dist/hitl/resumeRunningCard.js +0 -105
- package/dist/hitl/sessionPolicyWire.d.ts +11 -191
- package/dist/hitl/sessionPolicyWire.js +0 -149
- package/dist/hitl/suspendedReopen.d.ts +3 -24
- package/dist/hitl/suspendedReopen.js +0 -14
- package/dist/hitl/toolApprovalWire.d.ts +5 -1308
- package/dist/hitl/toolApprovalWire.js +5 -945
- package/dist/hooksWireCaps.d.ts +0 -38
- package/dist/hooksWireCaps.js +0 -190
- package/dist/host.d.ts +0 -105
- package/dist/host.js +0 -33
- package/dist/hostEnv.d.ts +0 -14
- package/dist/hostEnv.js +0 -13
- package/dist/imagesWireCaps.d.ts +0 -21
- package/dist/imagesWireCaps.js +0 -22
- package/dist/index.d.ts +0 -134
- package/dist/index.js +0 -476
- package/dist/interactiveHalt.d.ts +5 -153
- package/dist/interactiveHalt.js +0 -111
- package/dist/interactiveToolsWire.d.ts +0 -62
- package/dist/interactiveToolsWire.js +1 -67
- package/dist/leaderConflict.d.ts +0 -59
- package/dist/leaderConflict.js +0 -48
- package/dist/limitsWire.d.ts +0 -125
- package/dist/limitsWire.js +2 -120
- package/dist/liveInitToolFace.d.ts +0 -77
- package/dist/liveInitToolFace.js +1 -109
- package/dist/liveModelCatalog.d.ts +0 -52
- package/dist/liveModelCatalog.js +0 -48
- package/dist/liveQuestionStore.d.ts +0 -87
- package/dist/liveQuestionStore.js +1 -56
- package/dist/mcpLiveness.d.ts +0 -151
- package/dist/mcpLiveness.js +0 -122
- package/dist/mcpPanel.d.ts +0 -104
- package/dist/mcpPanel.js +0 -49
- package/dist/mcpReconnect.d.ts +0 -58
- package/dist/mcpReconnect.js +0 -69
- package/dist/mcpWireCaps.d.ts +0 -55
- package/dist/mcpWireCaps.js +1 -13
- package/dist/memoryComplianceCapability.d.ts +3 -57
- package/dist/memoryComplianceCapability.js +0 -57
- package/dist/memoryEntriesWire.d.ts +6 -198
- package/dist/memoryEntriesWire.js +0 -144
- package/dist/memoryOriginCapability.d.ts +3 -53
- package/dist/memoryOriginCapability.js +0 -50
- package/dist/memorySpecWire.d.ts +0 -116
- package/dist/memorySpecWire.js +0 -150
- package/dist/model/catalog.d.ts +0 -111
- package/dist/model/catalog.js +0 -87
- package/dist/model/catalogLoader.d.ts +0 -114
- package/dist/model/catalogLoader.js +2 -139
- package/dist/model/modelSupplyRules.d.ts +1 -55
- package/dist/model/modelSupplyRules.js +0 -62
- package/dist/model/providerAuth.d.ts +0 -103
- package/dist/model/providerAuth.js +2 -38
- package/dist/model/providerCatalog.d.ts +0 -45
- package/dist/model/providerCatalog.js +0 -37
- package/dist/model/providerPresets.d.ts +0 -33
- package/dist/model/providerPresets.js +2 -91
- package/dist/model/tierVocabulary.d.ts +0 -31
- package/dist/model/tierVocabulary.js +0 -27
- package/dist/modelBudgetRule.d.ts +0 -39
- package/dist/modelBudgetRule.js +0 -39
- package/dist/modelCapabilityProbe.d.ts +0 -175
- package/dist/modelCapabilityProbe.js +0 -147
- package/dist/modelWireCaps.d.ts +0 -13
- package/dist/modelWireCaps.js +0 -13
- package/dist/notifications.d.ts +0 -233
- package/dist/notifications.js +14 -492
- package/dist/oneShotWireCaps.d.ts +0 -34
- package/dist/oneShotWireCaps.js +0 -35
- package/dist/ownKey.d.ts +0 -33
- package/dist/ownKey.js +0 -33
- package/dist/panelRunningHistory.d.ts +0 -28
- package/dist/panelRunningHistory.js +0 -43
- package/dist/peerFrames.d.ts +0 -71
- package/dist/peerFrames.js +0 -168
- package/dist/peerLaneCapability.d.ts +0 -44
- package/dist/peerLaneCapability.js +0 -52
- package/dist/permissionRuleIssue.d.ts +0 -30
- package/dist/permissionRuleIssue.js +0 -78
- package/dist/permissionRulesWriteCapability.d.ts +0 -46
- package/dist/permissionRulesWriteCapability.js +0 -54
- package/dist/permissionWireCaps.d.ts +0 -37
- package/dist/permissionWireCaps.js +0 -37
- package/dist/postureKnob.d.ts +0 -71
- package/dist/postureKnob.js +0 -86
- package/dist/principalWire.d.ts +0 -17
- package/dist/principalWire.js +0 -17
- package/dist/printToolResultFrame.d.ts +0 -100
- package/dist/printToolResultFrame.js +0 -33
- package/dist/promptProfileWireCaps.d.ts +0 -13
- package/dist/promptProfileWireCaps.js +0 -13
- package/dist/readFacePosture.d.ts +0 -43
- package/dist/readFacePosture.js +0 -46
- package/dist/request/printNotification.d.ts +0 -20
- package/dist/request/printNotification.js +0 -55
- package/dist/request/taskRequest.d.ts +1 -249
- package/dist/request/taskRequest.js +20 -498
- package/dist/resumeRefusalCopy.d.ts +0 -136
- package/dist/resumeRefusalCopy.js +1 -117
- package/dist/retainBackgroundWireCaps.d.ts +0 -48
- package/dist/retainBackgroundWireCaps.js +0 -48
- package/dist/retryStatus.d.ts +2 -221
- package/dist/retryStatus.js +0 -107
- package/dist/rewindWireCaps.d.ts +0 -27
- package/dist/rewindWireCaps.js +0 -24
- package/dist/runCancelContext.d.ts +1 -20
- package/dist/runCancelContext.js +0 -34
- package/dist/runTerminal.d.ts +0 -273
- package/dist/runTerminal.js +0 -177
- package/dist/sandboxWire.d.ts +0 -38
- package/dist/sandboxWire.js +0 -82
- package/dist/scenarioWire.d.ts +0 -60
- package/dist/scenarioWire.js +0 -68
- package/dist/scratchpadWireCaps.d.ts +0 -11
- package/dist/scratchpadWireCaps.js +0 -32
- package/dist/sdkWireTransit.d.ts +0 -38
- package/dist/sdkWireTransit.js +0 -30
- package/dist/seam.d.ts +18 -853
- package/dist/seam.js +0 -52
- package/dist/seatContract.d.ts +0 -555
- package/dist/seatContract.js +5 -304
- package/dist/selfOrchestrationDenial.d.ts +0 -189
- package/dist/selfOrchestrationDenial.js +0 -162
- package/dist/selfOrchestrationWireCaps.d.ts +0 -38
- package/dist/selfOrchestrationWireCaps.js +0 -38
- package/dist/sessionMap.d.ts +0 -60
- package/dist/sessionMap.js +0 -37
- package/dist/sessionMemoryStatus.d.ts +11 -114
- package/dist/sessionMemoryStatus.js +0 -112
- package/dist/sessionModelLatch.d.ts +0 -29
- package/dist/sessionModelLatch.js +0 -40
- package/dist/sessionPolicyCapability.d.ts +3 -53
- package/dist/sessionPolicyCapability.js +0 -52
- package/dist/sessionSlot.d.ts +0 -26
- package/dist/sessionSlot.js +0 -17
- package/dist/skillsWireCaps.d.ts +0 -87
- package/dist/skillsWireCaps.js +0 -38
- package/dist/sqlEngineCapability.d.ts +0 -118
- package/dist/sqlEngineCapability.js +0 -134
- package/dist/sseIdleTriage.d.ts +0 -79
- package/dist/sseIdleTriage.js +1 -80
- package/dist/steering.d.ts +0 -54
- package/dist/steering.js +0 -63
- package/dist/subagent/engineCompactWire.d.ts +0 -34
- package/dist/subagent/engineCompactWire.js +4 -134
- package/dist/subagent/engineDelegatedPrompt.d.ts +0 -31
- package/dist/subagent/engineDelegatedPrompt.js +1 -103
- package/dist/subagent/engineRowStopGate.d.ts +0 -20
- package/dist/subagent/engineRowStopGate.js +0 -49
- package/dist/subagent/engineSubagentOutput.d.ts +0 -7
- package/dist/subagent/engineSubagentOutput.js +1 -51
- package/dist/subagent/engineSubagentResume.d.ts +2 -279
- package/dist/subagent/engineSubagentResume.js +2 -129
- package/dist/subagent/engineSubagentSteer.d.ts +0 -26
- package/dist/subagent/engineSubagentSteer.js +0 -63
- package/dist/subagent/engineSubagentTail.d.ts +0 -38
- package/dist/subagent/engineSubagentTail.js +2 -110
- package/dist/subagent/engineTaskHandleWire.d.ts +6 -67
- package/dist/subagent/engineTaskHandleWire.js +0 -126
- package/dist/subagent/subagentOwnerAbsence.d.ts +0 -2
- package/dist/subagent/subagentOwnerAbsence.js +0 -25
- package/dist/subagentContentStore.d.ts +3 -260
- package/dist/subagentContentStore.js +7 -540
- package/dist/systemReminderTag.d.ts +0 -49
- package/dist/systemReminderTag.js +0 -61
- package/dist/toolResult.d.ts +1 -211
- package/dist/toolResult.js +1 -358
- package/dist/toolRoster.d.ts +0 -140
- package/dist/toolRoster.js +0 -66
- package/dist/typePins.d.ts +0 -46
- package/dist/types/engineState.d.ts +0 -71
- package/dist/types/engineState.js +0 -16
- package/dist/ultracodeWireCaps.d.ts +0 -75
- package/dist/ultracodeWireCaps.js +0 -92
- package/dist/unrefTimer.d.ts +0 -27
- package/dist/webSearchBackendCapability.d.ts +0 -72
- package/dist/webSearchBackendCapability.js +0 -79
- package/dist/webSearchWireCaps.d.ts +0 -37
- package/dist/webSearchWireCaps.js +0 -34
- package/dist/websearch/searchProviderPresets.d.ts +0 -81
- package/dist/websearch/searchProviderPresets.js +0 -27
- package/dist/wireErrorTriage.d.ts +4 -160
- package/dist/wireErrorTriage.js +0 -171
- package/dist/wireRefusalCopy.d.ts +0 -28
- package/dist/wireRefusalCopy.js +0 -28
- package/dist/workflow.d.ts +0 -40
- package/dist/workflow.js +0 -52
- package/dist/workflowClient.d.ts +0 -122
- package/dist/workflowClient.js +8 -360
- package/dist/workflowMonitor.d.ts +2 -72
- package/dist/workflowMonitor.js +0 -26
- package/dist/writeProtectionCapability.d.ts +0 -112
- package/dist/writeProtectionCapability.js +0 -109
- package/docs/INTEGRATION-CLIENTS.md +78 -5
- package/package.json +3 -3
|
@@ -1,52 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* systemReminderTag — `<system-reminder>` 包裹的**单一识别闸口**(件⑥⑦,2026-08-22,[4974])。
|
|
3
|
-
*
|
|
4
|
-
* ## 为什么要有这个文件
|
|
5
|
-
*
|
|
6
|
-
* core ≥5.46 起,引擎铸的每一个 `<system-reminder>` **开标签**都带一个 `mark` 属性。真字节直证
|
|
7
|
-
* (core 5.52.0 `dist/core/reminder-mint.js`,逐行):
|
|
8
|
-
* ```js
|
|
9
|
-
* const MARK_SHAPE = /^[A-Za-z0-9_-]{22}$/ // randomBytes(16).toString("base64url")
|
|
10
|
-
* export function openSystemReminder(mark) {
|
|
11
|
-
* return mark === undefined ? "<system-reminder>" : `<system-reminder mark="${mark}">`
|
|
12
|
-
* }
|
|
13
|
-
* export function mintSystemReminder(body, mark) {
|
|
14
|
-
* return `${openSystemReminder(mark)}\n${body}\n</system-reminder>`
|
|
15
|
-
* }
|
|
16
|
-
* ```
|
|
17
|
-
* 闭标签**没有**属性,只有开标签变了。而包内两处判定当时都锚着**裸开标签**,于是同一个根因
|
|
18
|
-
* 长出两个座位([4974] 双 CONFIRMED):
|
|
19
|
-
* · `classifierVerdictWire.unwrapSystemReminder` —— 剥不掉壳 ⇒ 裁决原文前面顶着一整个开标签 ⇒
|
|
20
|
-
* `startsWith(签名)` 恒不成立 ⇒ auto-deny 的通知行与 Recent Denials 记账**静默失效**;
|
|
21
|
-
* · `subagent/engineDelegatedPrompt.stripEnvelopes` —— 信封整段剥不掉 ⇒ Fleet 详情页的
|
|
22
|
-
* 「Prompt」又变回 ~1330 字符的技能清单(那个函数头注自陈 2026-08-01 修过的 bug 原样复发)。
|
|
23
|
-
*
|
|
24
|
-
* 两处各写一份正则正是这条缺陷能长出**两个**座位的原因,所以收成这一个闸口:识别口径只有一处,
|
|
25
|
-
* 下次 core 再动标签形也只有一处要跟。
|
|
26
|
-
*
|
|
27
|
-
* ## 口径(刻意写窄,不做 HTML 解析)
|
|
28
|
-
*
|
|
29
|
-
* · 开标签 = `<system-reminder>` 或 `<system-reminder` + **空白起头**的属性段 + `>`;属性段用
|
|
30
|
-
* `[^>]*` —— 它跨不过 `>`,所以没有回溯爆炸面,也不会把后面的正文吃进标签里。
|
|
31
|
-
* · 刻意**不校验** `mark` 的值形:本模块的职责是「认出这是引擎的信封壳」并把它剥掉/跳过,
|
|
32
|
-
* **不是**信任判定。真正的信任判据是壳里的 mark 比对(core 的 `reminderMarkDeclaration` 明说
|
|
33
|
-
* 「带不带 mark 都可能是数据」),那是另一层的事;这里若按 mark 值放行/拒绝,等于把一个安全
|
|
34
|
-
* 判定藏在一个显示层的剥壳函数里。
|
|
35
|
-
* · 闭标签逐字 `</system-reminder>`(core 就是这么铸的,不给它加属性容忍 = 不给伪造面留口子)。
|
|
36
|
-
* · **不处理嵌套**:配对用非贪婪,遇到第一个闭标签就收 —— 与件⑥⑦ 修之前逐字同语义
|
|
37
|
-
* (core 不铸嵌套 reminder;真出现嵌套时残留的是外层闭标签,不是把正文吃掉,方向仍是保守的)。
|
|
38
|
-
*
|
|
39
|
-
* 🔴 零 import(端无关叶件):纯字符串处理,不碰 Node、不碰 wire 类型。
|
|
40
|
-
*/
|
|
41
|
-
/**
|
|
42
|
-
* 整条文本就是一个 `<system-reminder>` 包裹时,返回**里面的正文**;否则原样返回。
|
|
43
|
-
* (`formatHookFeedback` = `mintSystemReminder` 的逆变换。)
|
|
44
|
-
*/
|
|
45
1
|
export declare function unwrapSystemReminder(text: string): string;
|
|
46
|
-
/**
|
|
47
|
-
* 把文本里**所有**成对的 `<system-reminder>…</system-reminder>` 段整段删掉(不配对的原样留着 ——
|
|
48
|
-
* 截断的信封宁可多渲一点,也不能把正文吃掉)。
|
|
49
|
-
*/
|
|
50
2
|
export declare function stripSystemReminderBlocks(text: string): string;
|
|
51
|
-
/** 这段文本**以**一个 system-reminder 开标签起头吗(诊断/判定用的轻量读口)。 */
|
|
52
3
|
export declare function startsWithSystemReminderOpenTag(text: string): boolean;
|
|
@@ -1,73 +1,12 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* systemReminderTag — `<system-reminder>` 包裹的**单一识别闸口**(件⑥⑦,2026-08-22,[4974])。
|
|
3
|
-
*
|
|
4
|
-
* ## 为什么要有这个文件
|
|
5
|
-
*
|
|
6
|
-
* core ≥5.46 起,引擎铸的每一个 `<system-reminder>` **开标签**都带一个 `mark` 属性。真字节直证
|
|
7
|
-
* (core 5.52.0 `dist/core/reminder-mint.js`,逐行):
|
|
8
|
-
* ```js
|
|
9
|
-
* const MARK_SHAPE = /^[A-Za-z0-9_-]{22}$/ // randomBytes(16).toString("base64url")
|
|
10
|
-
* export function openSystemReminder(mark) {
|
|
11
|
-
* return mark === undefined ? "<system-reminder>" : `<system-reminder mark="${mark}">`
|
|
12
|
-
* }
|
|
13
|
-
* export function mintSystemReminder(body, mark) {
|
|
14
|
-
* return `${openSystemReminder(mark)}\n${body}\n</system-reminder>`
|
|
15
|
-
* }
|
|
16
|
-
* ```
|
|
17
|
-
* 闭标签**没有**属性,只有开标签变了。而包内两处判定当时都锚着**裸开标签**,于是同一个根因
|
|
18
|
-
* 长出两个座位([4974] 双 CONFIRMED):
|
|
19
|
-
* · `classifierVerdictWire.unwrapSystemReminder` —— 剥不掉壳 ⇒ 裁决原文前面顶着一整个开标签 ⇒
|
|
20
|
-
* `startsWith(签名)` 恒不成立 ⇒ auto-deny 的通知行与 Recent Denials 记账**静默失效**;
|
|
21
|
-
* · `subagent/engineDelegatedPrompt.stripEnvelopes` —— 信封整段剥不掉 ⇒ Fleet 详情页的
|
|
22
|
-
* 「Prompt」又变回 ~1330 字符的技能清单(那个函数头注自陈 2026-08-01 修过的 bug 原样复发)。
|
|
23
|
-
*
|
|
24
|
-
* 两处各写一份正则正是这条缺陷能长出**两个**座位的原因,所以收成这一个闸口:识别口径只有一处,
|
|
25
|
-
* 下次 core 再动标签形也只有一处要跟。
|
|
26
|
-
*
|
|
27
|
-
* ## 口径(刻意写窄,不做 HTML 解析)
|
|
28
|
-
*
|
|
29
|
-
* · 开标签 = `<system-reminder>` 或 `<system-reminder` + **空白起头**的属性段 + `>`;属性段用
|
|
30
|
-
* `[^>]*` —— 它跨不过 `>`,所以没有回溯爆炸面,也不会把后面的正文吃进标签里。
|
|
31
|
-
* · 刻意**不校验** `mark` 的值形:本模块的职责是「认出这是引擎的信封壳」并把它剥掉/跳过,
|
|
32
|
-
* **不是**信任判定。真正的信任判据是壳里的 mark 比对(core 的 `reminderMarkDeclaration` 明说
|
|
33
|
-
* 「带不带 mark 都可能是数据」),那是另一层的事;这里若按 mark 值放行/拒绝,等于把一个安全
|
|
34
|
-
* 判定藏在一个显示层的剥壳函数里。
|
|
35
|
-
* · 闭标签逐字 `</system-reminder>`(core 就是这么铸的,不给它加属性容忍 = 不给伪造面留口子)。
|
|
36
|
-
* · **不处理嵌套**:配对用非贪婪,遇到第一个闭标签就收 —— 与件⑥⑦ 修之前逐字同语义
|
|
37
|
-
* (core 不铸嵌套 reminder;真出现嵌套时残留的是外层闭标签,不是把正文吃掉,方向仍是保守的)。
|
|
38
|
-
*
|
|
39
|
-
* 🔴 零 import(端无关叶件):纯字符串处理,不碰 Node、不碰 wire 类型。
|
|
40
|
-
*/
|
|
41
|
-
/**
|
|
42
|
-
* 开标签的**闭集**形:core 只会铸这两种(`openSystemReminder` 逐字),所以判据也只认这两种。
|
|
43
|
-
*
|
|
44
|
-
* 🔴 **不做通配属性**(七审 finding② 采纳):`<system-reminder\s[^>]*>` 那种宽口会把
|
|
45
|
-
* `onclick="…"` / 换行垃圾 / 未闭合引号 / 内嵌 `<img` 全部当成合法开标签 —— 而本模块的两个消费点
|
|
46
|
-
* 处理的正是**模型与工具产出的文本**(UNTRUSTED),宽口等于给伪造信封开一道口子:攻击者/模型
|
|
47
|
-
* 可以用一个假信封把内容藏起来(委派 prompt 面)或把自己的文本伪装成引擎裁决(分类器面)。
|
|
48
|
-
* `mark` 的值形按 core `MARK_SHAPE` 逐字(`randomBytes(16).toString("base64url")` = 22 位
|
|
49
|
-
* `[A-Za-z0-9_-]`),值本身**不比对**(见文件头:比对是信任判定,不是剥壳的活)——但**形**必须对,
|
|
50
|
-
* 形不对的一律不是引擎铸的壳。
|
|
51
|
-
*/
|
|
52
1
|
const OPEN_TAG_SOURCE = '<system-reminder(?: mark="[A-Za-z0-9_-]{22}")?>';
|
|
53
|
-
/** 整段配对(开标签 + 正文 + 闭标签)。捕获组 1 = 正文。 */
|
|
54
2
|
const WRAPPED_RE = new RegExp(`^\\s*${OPEN_TAG_SOURCE}\\s*\\n?([\\s\\S]*?)\\n?\\s*<\\/system-reminder>\\s*$`);
|
|
55
|
-
/**
|
|
56
|
-
* 整条文本就是一个 `<system-reminder>` 包裹时,返回**里面的正文**;否则原样返回。
|
|
57
|
-
* (`formatHookFeedback` = `mintSystemReminder` 的逆变换。)
|
|
58
|
-
*/
|
|
59
3
|
export function unwrapSystemReminder(text) {
|
|
60
4
|
const m = WRAPPED_RE.exec(text);
|
|
61
5
|
return m ? m[1] : text;
|
|
62
6
|
}
|
|
63
|
-
/**
|
|
64
|
-
* 把文本里**所有**成对的 `<system-reminder>…</system-reminder>` 段整段删掉(不配对的原样留着 ——
|
|
65
|
-
* 截断的信封宁可多渲一点,也不能把正文吃掉)。
|
|
66
|
-
*/
|
|
67
7
|
export function stripSystemReminderBlocks(text) {
|
|
68
8
|
return text.replace(new RegExp(`${OPEN_TAG_SOURCE}[\\s\\S]*?<\\/system-reminder>`, 'g'), '');
|
|
69
9
|
}
|
|
70
|
-
/** 这段文本**以**一个 system-reminder 开标签起头吗(诊断/判定用的轻量读口)。 */
|
|
71
10
|
export function startsWithSystemReminderOpenTag(text) {
|
|
72
11
|
return new RegExp(`^\\s*${OPEN_TAG_SOURCE}`).test(text);
|
|
73
12
|
}
|
package/dist/toolResult.d.ts
CHANGED
|
@@ -1,66 +1,21 @@
|
|
|
1
1
|
import type { TaskResult, TaskStats } from '@sema-agent/sdk';
|
|
2
2
|
import { type ModelFallbackReason } from './engineErrorCodes.js';
|
|
3
|
-
/**
|
|
4
|
-
* 引擎会在 `tool_end.structured` 顶层 `type` 上发的**全部**取值。
|
|
5
|
-
* 用途**不是**「只处理这些」——下面的 switch 只认得其中一部分,认不得的照旧走 text 回落;
|
|
6
|
-
* 用途是「**structured 在场**」这个判据本身:顶层 type 命中白名单 ⇒ 引擎这一版是发结构化的,
|
|
7
|
-
* 于是模型面正文的**正则反解**(T11 bash / T13+T24 task-output / T14 后台回执三代文案)退位。
|
|
8
|
-
* 反过来,一个 `{type:'something-else'}` 或裸对象**不算** structured 在场 —— 宁可回落到正则,
|
|
9
|
-
* 也不许把「有个对象」当成「引擎发了结构化」(判据锚在决定结果的量上:决定的是「该不该信正则」)。
|
|
10
|
-
* ⚠️ 与设计稿的口径差:任务书写「29 项」,[1840] 清单逐条数是 **30 项**(见交接报告「设计稿错漏」)。
|
|
11
|
-
*
|
|
12
|
-
* 🔴 **本表是 core `CC_DETAIL_TYPES` 的镜像,不是本包自铸的词表**(core
|
|
13
|
-
* `dist/core/runner/tool-output-projection.js`)。等值由 `scripts/run-engine-vocab-floor-test.mjs` ⑤ 段
|
|
14
|
-
* 对**实装 core** 双向钉(漏一词 / 多一词都红),对账物 = 本仓 devDep `@sema-agent/core`。
|
|
15
|
-
* ⇒ **core 提货窗必须跟车对表**:每次抬 devDep core 版本,先跑 engine-vocab 门看这张表红不红,
|
|
16
|
-
* 红了按 core 那一版的铸点逐词补/删,别改门去迁就表。历史上两次恒绿(5.10 前停 devDep 5.1、
|
|
17
|
-
* 5.43 前停 devDep 5.20)的病根都不在表本身,在**对账物没跟着抬** —— 表漏一词的实际后果是
|
|
18
|
-
* 那一类卡永远退回正则解模型面文本,而任何一层都不会响。
|
|
19
|
-
*/
|
|
20
3
|
export declare const STRUCTURED_DETAIL_TYPES: ReadonlySet<string>;
|
|
21
|
-
/** structured 在场判别:顶层 `type` ∈ 白名单 ⇒ 返回该 type,否则 undefined(= 不在场)。 */
|
|
22
4
|
export declare function structuredDetailType(structured: unknown): string | undefined;
|
|
23
5
|
export declare const PROTOCOL_MARKERS: {
|
|
24
|
-
/** T11 bash 框架:退出码行头(core tools/fs/index.ts runShell)。 */
|
|
25
|
-
/** 0.73.3(CC-60 A-D5):认 core 两个发货变体 —— exit1 注记形 `exit code: 1 (<note>)` 与图片形(首行后**没有** `--- stdout ---` 行,
|
|
26
|
-
* 紧跟 `[Image data detected …]`)。第 2 组 = 括号注记(缺席 = undefined),第 3 组 = 老形的 stdout 分隔行(图片形缺席)。 */
|
|
27
6
|
readonly bashHead: RegExp;
|
|
28
|
-
/** T11 bash 框架:stderr 分隔行。 */
|
|
29
7
|
readonly bashStderrSep: "\n--- stderr ---\n";
|
|
30
|
-
/** T11 bash 框架:空 stdout 哨兵。 */
|
|
31
8
|
readonly bashEmptySentinel: "(empty)";
|
|
32
|
-
/** T12:`delimitUntrusted` 围栏(core untrusted-text.ts:118)。REF-CC-域词表-09 回炉车补齐——
|
|
33
|
-
* 此前这条正则仍内联在 `stripUntrustedFence` 里,是原始「8 处文案协议解析点」普查(P1 lens-lexicon
|
|
34
|
-
* 域词表-09 evidence)唯一没进表的一条(`stripUntrustedFence`/`untrustedFence` 单源消费)。 */
|
|
35
9
|
readonly untrustedFence: RegExp;
|
|
36
|
-
/** T13 TaskOutput:`<<<UNTRUSTED TaskOutput <id> …>>>` label 里的任务 id。 */
|
|
37
10
|
readonly taskOutputLabel: RegExp;
|
|
38
|
-
/** T13 TaskOutput:`status: …` 行。 */
|
|
39
11
|
readonly taskOutputStatus: RegExp;
|
|
40
|
-
/** T13 TaskOutput:空段哨兵。 */
|
|
41
12
|
readonly taskOutputNoneSentinel: "(none)";
|
|
42
|
-
/** T13 TaskOutput:stdout 分隔行(全量/增量两形共用一条正则——区分交给下面的 spool 判别)。 */
|
|
43
13
|
readonly taskOutputStdoutLine: RegExp;
|
|
44
|
-
/** T13 TaskOutput:stderr 分隔行。 */
|
|
45
14
|
readonly taskOutputStderrLine: RegExp;
|
|
46
|
-
/** T13 TaskOutput:agent 结果分隔行。 */
|
|
47
|
-
/** 0.73.3(CC-60 A-D4):认可选括号注记 `--- result (partial) ---`(core 被 stop 打断的子代任务此前正文整段切不出)。 */
|
|
48
15
|
readonly taskOutputResultLine: RegExp;
|
|
49
|
-
/** [1505] spool 协议:全量可重读形(`engineTaskHandleWire.ts` mergeTaskOutput 单源消费点)。 */
|
|
50
16
|
readonly spoolStdoutFull: "--- stdout (full, re-readable) ---";
|
|
51
|
-
/** [1505] spool 协议:增量新字节形。 */
|
|
52
17
|
readonly spoolStdoutIncremental: "--- new stdout ---";
|
|
53
18
|
};
|
|
54
|
-
/**
|
|
55
|
-
* [1505] spool 标记判别(REF-CC-域词表-06 提单源):判「读游标该整体替换还是追加」这一件事,
|
|
56
|
-
* 唯一真源在此——`engineTaskHandleWire.ts` 的 `mergeTaskOutput` 消费它,此前是各写一份
|
|
57
|
-
* `.includes()` 的独立判读,现在改成两处调用同一个函数,不再靠两份手抄字面量碰巧对齐。
|
|
58
|
-
* ⚠️ 措辞收窄(opus/对抗复审,回炉车):本函数**不**是"表里任何 stdout/stderr 分隔行判读的
|
|
59
|
-
* 单源"——`parseModelFacingTaskOutput` 里的 `taskOutputStdoutLine` 是解**另一件事**(T13
|
|
60
|
-
* TaskOutput 模型面正文里 stdout 段的边界在哪),两者字面量近似但语义不同、输入来源也不同
|
|
61
|
-
* (读游标累积 vs 单次模型面文本反解),存在能让两者给出不同答案的输入(如带前导垃圾字节的
|
|
62
|
-
* 文本)。它们只是共享同一张 `PROTOCOL_MARKERS` 登记表,不是同一个判据。
|
|
63
|
-
*/
|
|
64
19
|
export declare function spoolMarkerOf(text: string): 'full' | 'incremental' | null;
|
|
65
20
|
export declare function modelFacingParseCalls(): number;
|
|
66
21
|
export declare function _resetModelFacingParseCountForTest(): void;
|
|
@@ -70,24 +25,10 @@ export declare function parseModelFacingBash(text: string): {
|
|
|
70
25
|
exitCode: number | null;
|
|
71
26
|
note?: string;
|
|
72
27
|
} | null;
|
|
73
|
-
/**
|
|
74
|
-
* T12 —— 剥引擎的 `delimitUntrusted` 围栏(core untrusted-text.ts:118)**仅供渲染**。
|
|
75
|
-
* 围栏是给模型看的注入防护,人类转录卡显示正文(clay 07-03 审计 #1/#9 视觉 bug 的修)。
|
|
76
|
-
*/
|
|
77
28
|
export declare function stripUntrustedFence(text: string): {
|
|
78
29
|
label: string;
|
|
79
30
|
body: string;
|
|
80
31
|
} | null;
|
|
81
|
-
/**
|
|
82
|
-
* T13 回落解析结果(REF-CC-TYPESHAPE-14:命名 discriminated union —— 此前是 4 成员内联匿名形,
|
|
83
|
-
* 三个构造点各自手写、`'unknown'` 分支「没有 output」原来只是注释里的一句话,现在类型强制)。
|
|
84
|
-
* 🔴 抽 DU **不改运行时形**(二次回炉,复审 #4):`taskId`/`status` 缺值时**键照样在、值是
|
|
85
|
-
* `undefined`**(与 main 逐字节一致)——本函数是 npm 公面导出,`Object.keys()` / `'taskId' in r` /
|
|
86
|
-
* JSON 序列化都是下游看得见的契约,类型重构无权改它。eopt 收官(E-seat 卡裁定):「公面键恒在」
|
|
87
|
-
* 形不许被本批翻回条件展开——三键改 `| undefined` 显式并集,继续如实描述「键恒在、值可能 undefined」
|
|
88
|
-
* 这个已裁定的公面契约(不是收窄成条件展开,那会静默改变 `Object.keys()` 的下游可见形)。
|
|
89
|
-
* 常驻钉见 `run-client-core-pure-test.mjs` ⑪ 段「公面形(复审 #4 回卷钉)」三条。
|
|
90
|
-
*/
|
|
91
32
|
export type ModelFacingTaskOutput = {
|
|
92
33
|
kind: 'bash';
|
|
93
34
|
taskId?: string | undefined;
|
|
@@ -103,216 +44,65 @@ export type ModelFacingTaskOutput = {
|
|
|
103
44
|
taskId?: string | undefined;
|
|
104
45
|
status?: string | undefined;
|
|
105
46
|
};
|
|
106
|
-
/**
|
|
107
|
-
* T13 回落 —— 引擎 TaskOutput 的模型面正文(core task-registry.ts 的 bash/agent 两形,整体
|
|
108
|
-
* delimitUntrusted 包裹、label = `TaskOutput <id>`)反解回卡片槽位。`kind` 报哪一形命中,
|
|
109
|
-
* 'unknown' ⇒ 调用方回落原文(该分支类型上就没有 `output` 字段,不是「值恰好是 undefined」)。
|
|
110
|
-
*/
|
|
111
47
|
export declare function parseModelFacingTaskOutput(text: string): ModelFacingTaskOutput;
|
|
112
48
|
export declare function backgroundReceiptParseCalls(): number;
|
|
113
49
|
export declare function _resetBackgroundReceiptParseCountForTest(): void;
|
|
114
|
-
/**
|
|
115
|
-
* T8 —— 压平非均匀 §E1 `output`(`string` | `(Text|Image)[]`)。
|
|
116
|
-
* ⚠️ 真源在 adapt.ts(A 层 settle 报告也用同一份),本文件只 import,别再写第二份。
|
|
117
|
-
*/
|
|
118
50
|
export type FlattenWireOutput = (output: unknown) => string;
|
|
119
|
-
/** wire 没带 output 时的降级原因码(UI 显示决策留端;客户端绝不编造执行结果)。 */
|
|
120
51
|
export declare const TOOL_RESULT_DEGRADED_WIRE_NO_OUTPUT: "wire_carried_no_output";
|
|
121
52
|
export interface ToolResultBody {
|
|
122
53
|
content: unknown;
|
|
123
54
|
isError: boolean;
|
|
124
55
|
toolUseResult?: unknown;
|
|
125
|
-
/** 只在「wire 没带正文」时出现;在场 = 这张卡**没有真实执行结果**,不是空结果。 */
|
|
126
56
|
degraded?: typeof TOOL_RESULT_DEGRADED_WIRE_NO_OUTPUT;
|
|
127
57
|
}
|
|
128
|
-
/**
|
|
129
|
-
* T7 —— `tool_end.output === undefined`(events.d.ts:79 文档化的「工具没有正文」情形)时的卡体。
|
|
130
|
-
*
|
|
131
|
-
* cli 旧形:调 mock 注册表 `synthesizeToolIO(name, input)` **反造**一个结果体(stdout/hunks/匹配列表),
|
|
132
|
-
* 卡片于是显示「看起来像真的、但根本不是这次执行产物」的内容。§8-4 按宪法「诚实优先于产出」裁定
|
|
133
|
-
* 搬的时候就改掉:**输出诚实缺席 + degraded 标记**,由 UI 决定显示「结果不可用」。
|
|
134
|
-
* 🔴 `content` 保持**字符串**(件1:tool_result block content 恒字符串,裸对象经 /compact 直发
|
|
135
|
-
* provider = 400 invalid_request);空串 = 无正文,`degraded` 才是判别位。
|
|
136
|
-
*/
|
|
137
58
|
export declare function degradedToolResultBody(isError: boolean): ToolResultBody;
|
|
138
|
-
/**
|
|
139
|
-
* 真实 §E1 `tool_end.output` → 卡片读的 typed 正文。
|
|
140
|
-
*
|
|
141
|
-
* B5 新增第 5 个入参 `structured`:**structured 在场 ⇒ 正则退位**(①)。
|
|
142
|
-
* 三臂:`bash`(T11/T14)· `taskoutput|task_output`(T13,无 structured 的老腿)· 泛化兜底。
|
|
143
|
-
* 🔴 `truncated` 只做中性提示,截断正文**绝不**回喂模型(events.d.ts:80-85)。
|
|
144
|
-
*/
|
|
145
59
|
export declare function wireOutputToBody(toolName: string, output: unknown, isError: boolean, truncated: boolean, flatten: FlattenWireOutput, structured?: unknown): ToolResultBody;
|
|
146
|
-
|
|
147
|
-
* design/64 CC-parity `toolUseResult`:引擎结构化细节 → 各卡 outputSchema **精确** typed 形
|
|
148
|
-
* (safeParse 过了才渲富卡,不过就回落 12 行文本兜底)。
|
|
149
|
-
* `structuredPatch` 在**这里**算(T20,core 裁定:引擎发 originalFile、客户端算 hunks)。
|
|
150
|
-
* 全部**防御读**:形状不认得 ⇒ null ⇒ 调用方回落 text 路径(降保真,绝不炸)。
|
|
151
|
-
*/
|
|
152
|
-
export declare function structuredToToolUseResult(structured: unknown,
|
|
153
|
-
/** 压平后的模型面正文 —— 有些形(task-output)只带 identity/status,正文仍在模型面。 */
|
|
154
|
-
modelText?: string): {
|
|
60
|
+
export declare function structuredToToolUseResult(structured: unknown, modelText?: string): {
|
|
155
61
|
toolUseResult: unknown;
|
|
156
62
|
isError?: boolean;
|
|
157
63
|
} | null;
|
|
158
|
-
/**
|
|
159
|
-
* #117a / #158 —— **模型发起**的后台回执探测器。引擎侧秒关这张卡、从不进壳的 LocalShellTask
|
|
160
|
-
* registry,只能从回执文案桥过去。
|
|
161
|
-
* 🔴 **按 `toolName` 正向枚举分臂**(#158;开集入参,认不出的工具名一律 `null` = 不铸行,
|
|
162
|
-
* 安全方向是漏检不是误检):
|
|
163
|
-
* · `Bash` 臂 —— 三形回执首句 + **刻意**要求 INPUT 上 `run_in_background === true`:ctrl+B 的
|
|
164
|
-
* detach lane(「Command moved to background」)归 engineToolDetach 管(它的行生命周期是有意的
|
|
165
|
-
* settle-on-detach),在这里重复登记会长出双行。
|
|
166
|
-
* · `Monitor` 臂 —— 第四形回执首句 `Monitoring in background; task_id=…`,**没有**
|
|
167
|
-
* run_in_background 门:Monitor 天然后台,它的参数里根本没有这个键(此前三重门全拒 ⇒
|
|
168
|
-
* 引擎 Monitor 任务在 ctrl+B 面板零行)。
|
|
169
|
-
* 产物上的 `source: 'bash' | 'monitor'` 是行家族判别位(闭集),消费端按它分流行形,别按 command
|
|
170
|
-
* 文本猜;新工具要进面板必须显式加臂 + 扩这个闭集。
|
|
171
|
-
* 判定在库、**执行留宿主**(面板 store 写入 + 宿主 run 映射)—— 走 chrome `bgshell_register` 臂。
|
|
172
|
-
* 🔴 Bash 臂正则复用 `THREE_GEN_BG_RECEIPT_RE`(见上方 T14 `parseBackgroundReceipt` 头注,
|
|
173
|
-
* REF-CC-域词表-04 dedupe)—— 此前这里另抄了一份逐字节相同的字面量,两份手抄件靠"碰巧没人改坏"
|
|
174
|
-
* 对齐;Monitor 臂用**分开的** `MONITOR_BG_RECEIPT_RE`(职责不交叉:THREE_GEN 还被
|
|
175
|
-
* `parseBackgroundReceipt` 的 bash structured 回落共用,Monitor 不属那条链)。
|
|
176
|
-
*/
|
|
177
64
|
export interface EngineBgShellRegistration {
|
|
178
65
|
kind: 'register';
|
|
179
|
-
/** 回执上的**引擎** task id(`task_id=…`,TaskOutput/TaskStop 的句柄)。 */
|
|
180
66
|
taskId: string;
|
|
181
|
-
/** tool_use input 的 command(面板行的命令行;Bash 与 Monitor 同键)。 */
|
|
182
67
|
command: string;
|
|
183
|
-
/** 模型给了 description 才有(Monitor 的 schema 里必填,恒在)。 */
|
|
184
68
|
description?: string;
|
|
185
|
-
/** 引擎模型面回执原文,逐字 —— 详情视图显示它(里面的 output-file 路径因此可见可复制)。 */
|
|
186
69
|
receipt: string;
|
|
187
|
-
/** #158 行家族判别:'bash'=run_in_background Bash;'monitor'=Monitor 长跑监视(事件流语义,
|
|
188
|
-
* 终局才 settle)。消费端按此分流行形;闭集,新工具要进面板必须显式加臂。 */
|
|
189
70
|
source: 'bash' | 'monitor';
|
|
190
71
|
}
|
|
191
72
|
export declare function detectEngineBgShellReceipt(toolName: string, rawInput: unknown, outputText: string | undefined): EngineBgShellRegistration | null;
|
|
192
|
-
/**
|
|
193
|
-
* TodoWrite 清单卡:引擎不发 todo structured,全量新表骑在 tool_use INPUT 上 ⇒ 从它合成 typed 结果。
|
|
194
|
-
* `oldTodos` = 上一次的活体清单(调用方持:一个 session 一份,正是划删线 diff 要的粒度)。
|
|
195
|
-
*/
|
|
196
73
|
export declare function todoWriteToolUseResult(rawInput: unknown, oldTodos: unknown[], isError: boolean): {
|
|
197
74
|
toolUseResult: unknown;
|
|
198
75
|
isError: boolean;
|
|
199
76
|
newTodos: unknown[];
|
|
200
77
|
} | null;
|
|
201
|
-
/**
|
|
202
|
-
* ReportFindings(core 1.288 [811]b,引擎侧执行的合成回声工具):details 是 `{count, level?, findings}`
|
|
203
|
-
* **没有 type 判别位**(core synthetic-tools.js)⇒ B 层的 type-keyed switch 认领不了,按**工具名**认。
|
|
204
|
-
* 双腿:优先 wire structured;引擎没发就从 tool_use INPUT 合成(回声工具:input.findings ≡ output.findings)。
|
|
205
|
-
*/
|
|
206
78
|
export declare function reportFindingsToolUseResult(structured: unknown, rawInput: unknown): {
|
|
207
79
|
toolUseResult: unknown;
|
|
208
80
|
} | null;
|
|
209
|
-
/**
|
|
210
|
-
* 后台(async)子代的**启动回执**上那两位「身份」—— `type:"agent"` 两形里 `async_launched` 那一形。
|
|
211
|
-
*
|
|
212
|
-
* 只带**身份**,不带可渲染性:`description`/`prompt` 是富卡的必填位(缺了要回落 text 路径),
|
|
213
|
-
* 与「这条回执宣告了哪个子代」无关,故不进本读口 —— 见 {@link structuredToToolUseResult} 的
|
|
214
|
-
* `case 'agent'`。
|
|
215
|
-
*/
|
|
216
81
|
export interface AsyncLaunchedAgentReceipt {
|
|
217
|
-
/** 引擎子代任务 id(注意:**启动回执是 snake_case `task_id`**,完成卡是 camelCase `taskId`)。 */
|
|
218
82
|
readonly taskId: string;
|
|
219
|
-
/** bg 子代生命周期号(SendMessage 复活即 +1)。wire 今天未必带 ⇒ 缺席按首周期解释,绝不铸 0。 */
|
|
220
83
|
readonly seq?: number;
|
|
221
84
|
}
|
|
222
|
-
/**
|
|
223
|
-
* 把一张 `tool_end.structured` 窄化成 {@link AsyncLaunchedAgentReceipt} —— **仅当**它是
|
|
224
|
-
* `type:"agent"` 的 **`async_launched` 启动回执**臂时;完成着陆报告 / 别的族 / 缺身份 ⇒ `null`。
|
|
225
|
-
*
|
|
226
|
-
* 🔴 分臂判据 = `status`(core 原话:"Branch on `status`, never on which keys are present"),
|
|
227
|
-
* 与姊妹读口 {@link readCompletedAgentCard} 互为反面。本函数是这条纪律在**回执**侧的单一实现点:
|
|
228
|
-
* 本包现在有两个消费点 —— 富卡投影(`structuredToToolUseResult`)与 adapt 的 bg 子代 alias 登记
|
|
229
|
-
* (`adapt/arms.ts` 的 `tool_end_result` 臂,#158②)—— 两处不得各抄一遍键名与 `'async_launched'`。
|
|
230
|
-
* 🔴 `task_id` 要**非空**串:空串是「有这个键但没有身份」,拿它当 taskId 会在内容账本里铸一条
|
|
231
|
-
* 键为 `''` 的映射(读口那侧的 `?? ''` 兜底会当场把它认成命中)。诚实拒,不铸空 id ——
|
|
232
|
-
* 与 {@link readCompletedAgentCard} 对 `taskId` 的同款判据一致。
|
|
233
|
-
*/
|
|
234
85
|
export declare function readAsyncLaunchedAgentReceipt(structured: unknown): AsyncLaunchedAgentReceipt | null;
|
|
235
|
-
/**
|
|
236
|
-
* 子代**完成着陆报告**卡(core `agents/subagent.ts#completedAgentCard` 的 wire 形)。
|
|
237
|
-
*
|
|
238
|
-
* 沿革:5.10.0 之前这张卡被 core 的投影白名单在上 wire 前整张丢掉 —— `tool_end.structured` 自己的
|
|
239
|
-
* 契约点名了它,而实际只有 `async_launched` 回执到得了消费方。5.10.0 修好了那条白名单,于是
|
|
240
|
-
* `type:"agent"` 从「只有一形」变成「两形按 `status` 分」({@link structuredToToolUseResult} 的
|
|
241
|
-
* `case 'agent'` 头注写了为什么本包不把它投成 CC 卡)。
|
|
242
|
-
*
|
|
243
|
-
* 🔴 **本读口只做窄化,不做解释**:每个键要么原样带出,要么(类型不符时)当缺席。绝不为缺席的量
|
|
244
|
-
* 造零值([honest-absence-not-fabricated-zero])—— `stats` 取不到就是 `undefined`,不是 `{}`。
|
|
245
|
-
* 🔴 **白名单不是闭集断言**:core 明写这张卡是「显式字段白名单」而非 spread(`checkpointToken` /
|
|
246
|
-
* `checkpointGate` 这两个**能力**位永不上 wire)。未来 core 往卡上加字段时,本读口读不到它们 ——
|
|
247
|
-
* 那是**加一个字段**的跟车工单,不是错误;宿主要原始全量随时可读 `structured` 本身。
|
|
248
|
-
*/
|
|
249
86
|
export interface CompletedAgentCard {
|
|
250
|
-
/** 子代**真实终态**(`completed` / `failed` / `blocked` / `suspended.*` …)。判别位;开集。 */
|
|
251
87
|
readonly status: string;
|
|
252
|
-
/** 子代任务 id(注意:完成卡是 camelCase `taskId`,启动回执是 snake_case `task_id`)。 */
|
|
253
88
|
readonly taskId: string;
|
|
254
|
-
/** 子代 transcript 句柄 —— 查询键,**不是**能力(续跑要部署侧的 resume 句柄)。 */
|
|
255
89
|
readonly sessionId?: string;
|
|
256
|
-
/** 子代类型名(roster 上的名字)。 */
|
|
257
90
|
readonly subagentType?: string;
|
|
258
|
-
/** 着陆报告正文 = 子代最终助手文本,**不含**模型面那层导向尾注。 */
|
|
259
91
|
readonly result?: string;
|
|
260
|
-
/** 到限截断时抢救出的最后模型文本。 */
|
|
261
92
|
readonly salvagedOutput?: string;
|
|
262
|
-
/** `outputSchema` 任务的结构化产出(不解释,原样)。 */
|
|
263
93
|
readonly structuredOutput?: unknown;
|
|
264
|
-
/** 失败归因三件之一:agent 自报无法推进的理由。 */
|
|
265
94
|
readonly blockedReason?: string;
|
|
266
|
-
/** 失败归因三件之二:人话。 */
|
|
267
95
|
readonly errorMessage?: string;
|
|
268
|
-
/** 失败归因三件之三:机器码(开集;词表见 `engineErrorCodes.ts`)。 */
|
|
269
96
|
readonly errorCode?: string;
|
|
270
|
-
/**
|
|
271
|
-
* 🆕 core 5.10.0 —— `errorCode` 的**机器可执行配对**:refusal 什么时候解除。
|
|
272
|
-
* 🔴 与 `retryable` 是**两个不同的问题**,可能同时出现且看起来矛盾(core 亲注):
|
|
273
|
-
* `retryable` = 「现在原样重发行不行」(`usage.window_exhausted` 上它是 false,且是对的);
|
|
274
|
-
* `retryAfterMs` = 「什么时候不再被拒」。调度器读前者+后者,立即重发的决策只读 `retryable`。
|
|
275
|
-
* 在场条件 = `usage.window_exhausted` 终局;**别拿它的在场性去判别的事**([2575] 自查③)。
|
|
276
|
-
*/
|
|
277
97
|
readonly retryAfterMs?: number;
|
|
278
|
-
/**
|
|
279
|
-
* 🆕 core 5.10.0 —— 降级实录(from/to/reason/atTurn)。形状与 `TaskResult.degraded` **同一个**
|
|
280
|
-
* (core 把子代 TaskResult 的这一位原样搬上卡),故直接借 SDK 的类型而不是再开一个 `unknown` 出口。
|
|
281
|
-
* 窄化 = 对象守卫(与 `terminalToSdkResult.degradedOf` 同一姿势):非对象一律当缺席。
|
|
282
|
-
*/
|
|
283
98
|
readonly degraded?: NonNullable<TaskResult['degraded']>;
|
|
284
|
-
/** 失败分类:错误种类。 */
|
|
285
99
|
readonly errorKind?: string;
|
|
286
|
-
/** 失败分类:原样重发是否可行(见 `retryAfterMs` 的配对说明)。 */
|
|
287
100
|
readonly retryable?: boolean;
|
|
288
|
-
/**
|
|
289
|
-
* run 总账(CC `AgentToolCompletedOutput` 对位)。同 `degraded`:core 搬的就是子代
|
|
290
|
-
* `TaskResult.stats`,所以借 SDK 的 `TaskStats`(它自带 `[key: string]: unknown` 开集索引,
|
|
291
|
-
* 新键不会因此被类型面挡住)。数值重算是渲染层的活,本层只窄化不解释。
|
|
292
|
-
*/
|
|
293
101
|
readonly stats?: TaskStats;
|
|
294
|
-
/** 实际服务该子代的模型 id(与 `resolvedModel` 同值,core 两个键都发)。 */
|
|
295
102
|
readonly model?: string;
|
|
296
|
-
/** 同上 —— core 的显式别名键;两键择一读即可,本读口都带出以免宿主二次猜。 */
|
|
297
103
|
readonly resolvedModel?: string;
|
|
298
|
-
/**
|
|
299
|
-
* 🆕 core 5.10.0 / [2577] —— **闭集单成员**:请求的模型词没绑上,子代跑在继承来的默认模型上。
|
|
300
|
-
* 🔴 **这不是错误**(回落行为本身没变,只是现在说出来了);缺席 = 正常绑定或压根没请求过词。
|
|
301
|
-
* 渲染建议(core 给的语义,UI 语言各端自裁):在生效 model 旁加「requested word did not bind /
|
|
302
|
-
* inherited」注记,**不因它的在场性改变别的渲染**。加成员 = BREAKING,见 {@link ModelFallbackReason}。
|
|
303
|
-
*/
|
|
304
104
|
readonly modelFallback?: ModelFallbackReason;
|
|
305
|
-
/** 子代跑在哪个 worktree(`isolation:'worktree'` 时)。 */
|
|
306
105
|
readonly worktreePath?: string;
|
|
307
|
-
/** 子代的逐工具调用统计。原样带出。 */
|
|
308
106
|
readonly toolStats?: unknown;
|
|
309
107
|
}
|
|
310
|
-
/**
|
|
311
|
-
* 把一张 `tool_end.structured` 窄化成 {@link CompletedAgentCard} —— **仅当**它是 `type:"agent"` 的
|
|
312
|
-
* **完成**臂时。不是 agent 卡 / 是 `async_launched` 回执 / 缺 `status` 或 `taskId` ⇒ `null`。
|
|
313
|
-
*
|
|
314
|
-
* 🔴 分臂判据 = `status`(core 原话:"Branch on `status`, never on which keys are present")。
|
|
315
|
-
* 本函数是那条纪律在包内的**单一实现点**:三端(TUI / web / desktop)按同一份窄化读,
|
|
316
|
-
* 而不是各自抄一遍键名与 `!== 'async_launched'`。
|
|
317
|
-
*/
|
|
318
108
|
export declare function readCompletedAgentCard(structured: unknown): CompletedAgentCard | null;
|