@sema-agent/client-core 0.77.0 → 0.77.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +23 -1
- package/README.md +5 -4
- package/dist/abortableSleep.d.ts +0 -28
- package/dist/abortableSleep.js +0 -28
- package/dist/adapt/arms.d.ts +0 -46
- package/dist/adapt/arms.js +9 -544
- package/dist/adapt/ids.d.ts +0 -58
- package/dist/adapt/ids.js +0 -63
- package/dist/adapt/instanceLedger.d.ts +0 -25
- package/dist/adapt/instanceLedger.js +0 -20
- package/dist/adapt/panelTasks.d.ts +0 -69
- package/dist/adapt/panelTasks.js +0 -95
- package/dist/adapt/textSegmentAuthority.d.ts +1 -137
- package/dist/adapt/textSegmentAuthority.js +0 -54
- package/dist/adapt/textStream.d.ts +0 -252
- package/dist/adapt/textStream.js +2 -281
- package/dist/adapt/toolCards.d.ts +0 -46
- package/dist/adapt/toolCards.js +0 -23
- package/dist/adapt/turnFlags.d.ts +0 -54
- package/dist/adapt/turnFlags.js +1 -17
- package/dist/adapt/wireShapes.d.ts +0 -92
- package/dist/adapt/wireShapes.js +0 -83
- package/dist/adapt.d.ts +0 -55
- package/dist/adapt.js +1 -120
- package/dist/adapter/activeRunSelfHeal.d.ts +22 -515
- package/dist/adapter/activeRunSelfHeal.js +10 -625
- package/dist/adapter/downstream/eventToSdkMessage.d.ts +2 -305
- package/dist/adapter/downstream/eventToSdkMessage.js +2 -867
- package/dist/adapter/downstream/terminalToSdkResult.d.ts +2 -314
- package/dist/adapter/downstream/terminalToSdkResult.js +13 -560
- package/dist/adapter/downstream/turnUsageToModelUsage.d.ts +0 -95
- package/dist/adapter/downstream/turnUsageToModelUsage.js +2 -31
- package/dist/adapter/runStream.d.ts +0 -206
- package/dist/adapter/runStream.js +6 -596
- package/dist/adapter/types.d.ts +0 -111
- package/dist/adapter/types.js +0 -29
- package/dist/agentSession/backgroundView.d.ts +0 -106
- package/dist/agentSession/backgroundView.js +3 -49
- package/dist/agentSession/contract.d.ts +0 -98
- package/dist/agentSession/contract.js +0 -12
- package/dist/agentsWireCaps.d.ts +0 -72
- package/dist/agentsWireCaps.js +4 -72
- package/dist/approvalsStreamLiveCapability.d.ts +0 -25
- package/dist/approvalsStreamLiveCapability.js +0 -31
- package/dist/argvFlagValue.d.ts +0 -33
- package/dist/argvFlagValue.js +3 -35
- package/dist/attachmentsWireCaps.d.ts +0 -127
- package/dist/attachmentsWireCaps.js +0 -144
- package/dist/autoModeUnavailable.d.ts +0 -120
- package/dist/autoModeUnavailable.js +0 -144
- package/dist/classifierStatus.d.ts +0 -72
- package/dist/classifierStatus.js +0 -167
- package/dist/classifierVerdictWire.d.ts +0 -54
- package/dist/classifierVerdictWire.js +0 -133
- package/dist/clientContextWireCaps.d.ts +0 -37
- package/dist/clientContextWireCaps.js +0 -36
- package/dist/clientSlice.d.ts +0 -63
- package/dist/clientSlice.js +0 -45
- package/dist/cloudConfigWireCaps.d.ts +0 -86
- package/dist/cloudConfigWireCaps.js +2 -65
- package/dist/compensations.d.ts +0 -52
- package/dist/compensations.js +2 -63
- package/dist/controlRouter.d.ts +2 -208
- package/dist/controlRouter.js +1 -129
- package/dist/coreValuePorts.d.ts +0 -84
- package/dist/coreValuePorts.js +0 -29
- package/dist/decideReceipt.d.ts +0 -110
- package/dist/decideReceipt.js +0 -84
- package/dist/detachWire.d.ts +0 -130
- package/dist/detachWire.js +1 -130
- package/dist/deviceExecutorManagementCapability.d.ts +2 -35
- package/dist/deviceExecutorManagementCapability.js +1 -37
- package/dist/diagnostics.d.ts +0 -8
- package/dist/diagnostics.js +0 -8
- package/dist/diff/patch.d.ts +0 -17
- package/dist/diff/patch.js +0 -19
- package/dist/effectiveFacts.d.ts +0 -40
- package/dist/effectiveFacts.js +0 -22
- package/dist/effortWire.d.ts +0 -11
- package/dist/effortWire.js +0 -12
- package/dist/engineAgentPanelStore.d.ts +0 -169
- package/dist/engineAgentPanelStore.js +13 -293
- package/dist/engineCapReader.d.ts +0 -62
- package/dist/engineCapReader.js +1 -43
- package/dist/engineCapsCache.d.ts +0 -177
- package/dist/engineCapsCache.js +0 -199
- package/dist/engineCapsGenerationGuard.d.ts +0 -2
- package/dist/engineCapsGenerationGuard.js +0 -11
- package/dist/engineErrorCodes.d.ts +1 -316
- package/dist/engineErrorCodes.js +0 -427
- package/dist/engineHttpTools.d.ts +0 -29
- package/dist/engineHttpTools.js +0 -29
- package/dist/engineIdentity.d.ts +0 -83
- package/dist/engineIdentity.js +0 -88
- package/dist/engineInlineTaskStats.d.ts +0 -57
- package/dist/engineInlineTaskStats.js +1 -42
- package/dist/engineNoticeCodes.d.ts +0 -190
- package/dist/engineNoticeCodes.js +0 -182
- package/dist/engineSessionParam.d.ts +0 -30
- package/dist/engineSessionParam.js +0 -52
- package/dist/engineToolLabelStore.d.ts +0 -29
- package/dist/engineToolLabelStore.js +0 -31
- package/dist/engineWireSdk.d.ts +0 -90
- package/dist/engineWireSdk.js +0 -74
- package/dist/engineWireTarget.d.ts +0 -14
- package/dist/engineWireTarget.js +0 -39
- package/dist/env/localeGeo.d.ts +0 -12
- package/dist/env/localeGeo.js +2 -77
- package/dist/env/localeTag.d.ts +0 -34
- package/dist/env/localeTag.js +0 -32
- package/dist/env/uiLanguage.d.ts +0 -13
- package/dist/env/uiLanguage.js +0 -25
- package/dist/envFlag.d.ts +0 -37
- package/dist/envFlag.js +0 -40
- package/dist/executionLaneCapability.d.ts +0 -48
- package/dist/executionLaneCapability.js +0 -54
- package/dist/finalVerifyWire.d.ts +0 -67
- package/dist/finalVerifyWire.js +3 -43
- package/dist/fleet/fleetLedger.d.ts +0 -308
- package/dist/fleet/fleetLedger.js +10 -429
- package/dist/fleet/fleetProjection.d.ts +0 -240
- package/dist/fleet/fleetProjection.js +0 -189
- package/dist/fleet/fleetRowAgentType.d.ts +0 -6
- package/dist/fleet/fleetRowAgentType.js +1 -32
- package/dist/fleet/workflowSizeWarning.d.ts +0 -47
- package/dist/fleet/workflowSizeWarning.js +1 -46
- package/dist/fleetAgentPanelProjection.d.ts +0 -48
- package/dist/fleetAgentPanelProjection.js +8 -173
- package/dist/fleetTaskDesc.d.ts +0 -39
- package/dist/fleetTaskDesc.js +0 -69
- package/dist/forkWireCaps.d.ts +0 -23
- package/dist/forkWireCaps.js +1 -24
- package/dist/gateOutcome.d.ts +0 -140
- package/dist/gateOutcome.js +0 -85
- package/dist/gateVocabulary.d.ts +0 -114
- package/dist/gateVocabulary.js +1 -161
- package/dist/goalStopHook.d.ts +0 -127
- package/dist/goalStopHook.js +0 -178
- package/dist/headlessPermissionModeWire.d.ts +0 -76
- package/dist/headlessPermissionModeWire.js +1 -155
- package/dist/headlessReconnectWire.d.ts +0 -84
- package/dist/headlessReconnectWire.js +13 -67
- package/dist/hitl/approvalDecisionNoteAudit.d.ts +0 -49
- package/dist/hitl/approvalDecisionNoteAudit.js +0 -56
- package/dist/hitl/approvalOutcomeNote.d.ts +0 -2
- package/dist/hitl/approvalOutcomeNote.js +0 -20
- package/dist/hitl/approvalResolution.d.ts +0 -113
- package/dist/hitl/approvalResolution.js +0 -66
- package/dist/hitl/approvalsFeed.d.ts +0 -183
- package/dist/hitl/approvalsFeed.js +12 -243
- package/dist/hitl/armedGateRegistry.d.ts +0 -55
- package/dist/hitl/armedGateRegistry.js +0 -146
- package/dist/hitl/askGateWire.d.ts +0 -86
- package/dist/hitl/askGateWire.js +1 -95
- package/dist/hitl/askParkRowRouting.d.ts +0 -123
- package/dist/hitl/askParkRowRouting.js +1 -89
- package/dist/hitl/crashConverged.d.ts +0 -148
- package/dist/hitl/crashConverged.js +0 -214
- package/dist/hitl/editedRuleTextPrecheck.d.ts +0 -109
- package/dist/hitl/editedRuleTextPrecheck.js +0 -71
- package/dist/hitl/frameRouter.d.ts +0 -134
- package/dist/hitl/frameRouter.js +6 -378
- package/dist/hitl/gateIdentity.d.ts +0 -39
- package/dist/hitl/gateIdentity.js +0 -41
- package/dist/hitl/gateLedger.d.ts +0 -267
- package/dist/hitl/gateLedger.js +0 -121
- package/dist/hitl/hitlBridge.d.ts +7 -431
- package/dist/hitl/hitlBridge.js +7 -476
- package/dist/hitl/hitlHostSurface.d.ts +0 -150
- package/dist/hitl/hitlHostSurface.js +0 -169
- package/dist/hitl/livePendingAsk.d.ts +0 -91
- package/dist/hitl/livePendingAsk.js +0 -74
- package/dist/hitl/localAllowRule.d.ts +0 -62
- package/dist/hitl/localAllowRule.js +1 -33
- package/dist/hitl/parkOwnership.d.ts +0 -56
- package/dist/hitl/parkOwnership.js +0 -22
- package/dist/hitl/parkResolver.d.ts +3 -88
- package/dist/hitl/parkResolver.js +8 -349
- package/dist/hitl/parkRowBirthWait.d.ts +2 -26
- package/dist/hitl/parkRowBirthWait.js +3 -93
- package/dist/hitl/persistedRulesWire.d.ts +13 -358
- package/dist/hitl/persistedRulesWire.js +0 -310
- package/dist/hitl/planReviewWire.d.ts +4 -176
- package/dist/hitl/planReviewWire.js +9 -312
- package/dist/hitl/resumeRunningCard.d.ts +0 -105
- package/dist/hitl/resumeRunningCard.js +0 -105
- package/dist/hitl/sessionPolicyWire.d.ts +11 -191
- package/dist/hitl/sessionPolicyWire.js +0 -149
- package/dist/hitl/suspendedReopen.d.ts +3 -24
- package/dist/hitl/suspendedReopen.js +0 -14
- package/dist/hitl/toolApprovalWire.d.ts +5 -1308
- package/dist/hitl/toolApprovalWire.js +5 -945
- package/dist/hooksWireCaps.d.ts +0 -38
- package/dist/hooksWireCaps.js +0 -190
- package/dist/host.d.ts +0 -105
- package/dist/host.js +0 -33
- package/dist/hostEnv.d.ts +0 -14
- package/dist/hostEnv.js +0 -13
- package/dist/imagesWireCaps.d.ts +0 -21
- package/dist/imagesWireCaps.js +0 -22
- package/dist/index.d.ts +0 -134
- package/dist/index.js +0 -476
- package/dist/interactiveHalt.d.ts +5 -153
- package/dist/interactiveHalt.js +0 -111
- package/dist/interactiveToolsWire.d.ts +0 -62
- package/dist/interactiveToolsWire.js +1 -67
- package/dist/leaderConflict.d.ts +0 -59
- package/dist/leaderConflict.js +0 -48
- package/dist/limitsWire.d.ts +0 -125
- package/dist/limitsWire.js +2 -120
- package/dist/liveInitToolFace.d.ts +0 -77
- package/dist/liveInitToolFace.js +1 -109
- package/dist/liveModelCatalog.d.ts +0 -52
- package/dist/liveModelCatalog.js +0 -48
- package/dist/liveQuestionStore.d.ts +0 -87
- package/dist/liveQuestionStore.js +1 -56
- package/dist/mcpLiveness.d.ts +0 -151
- package/dist/mcpLiveness.js +0 -122
- package/dist/mcpPanel.d.ts +0 -104
- package/dist/mcpPanel.js +0 -49
- package/dist/mcpReconnect.d.ts +0 -58
- package/dist/mcpReconnect.js +1 -69
- package/dist/mcpWireCaps.d.ts +0 -55
- package/dist/mcpWireCaps.js +1 -13
- package/dist/memoryComplianceCapability.d.ts +3 -57
- package/dist/memoryComplianceCapability.js +0 -57
- package/dist/memoryEntriesWire.d.ts +6 -198
- package/dist/memoryEntriesWire.js +0 -144
- package/dist/memoryOriginCapability.d.ts +3 -53
- package/dist/memoryOriginCapability.js +0 -50
- package/dist/memorySpecWire.d.ts +0 -116
- package/dist/memorySpecWire.js +0 -150
- package/dist/model/catalog.d.ts +0 -111
- package/dist/model/catalog.js +0 -87
- package/dist/model/catalogLoader.d.ts +0 -114
- package/dist/model/catalogLoader.js +2 -139
- package/dist/model/modelSupplyRules.d.ts +1 -55
- package/dist/model/modelSupplyRules.js +0 -62
- package/dist/model/providerAuth.d.ts +0 -103
- package/dist/model/providerAuth.js +2 -38
- package/dist/model/providerCatalog.d.ts +0 -45
- package/dist/model/providerCatalog.js +0 -37
- package/dist/model/providerPresets.d.ts +0 -33
- package/dist/model/providerPresets.js +2 -91
- package/dist/model/tierVocabulary.d.ts +0 -31
- package/dist/model/tierVocabulary.js +0 -27
- package/dist/modelBudgetRule.d.ts +0 -39
- package/dist/modelBudgetRule.js +0 -39
- package/dist/modelCapabilityProbe.d.ts +0 -175
- package/dist/modelCapabilityProbe.js +0 -147
- package/dist/modelWireCaps.d.ts +0 -13
- package/dist/modelWireCaps.js +0 -13
- package/dist/notifications.d.ts +0 -233
- package/dist/notifications.js +14 -492
- package/dist/oneShotWireCaps.d.ts +0 -34
- package/dist/oneShotWireCaps.js +0 -35
- package/dist/ownKey.d.ts +0 -33
- package/dist/ownKey.js +0 -33
- package/dist/panelRunningHistory.d.ts +0 -28
- package/dist/panelRunningHistory.js +0 -43
- package/dist/peerFrames.d.ts +0 -71
- package/dist/peerFrames.js +0 -168
- package/dist/peerLaneCapability.d.ts +0 -44
- package/dist/peerLaneCapability.js +0 -52
- package/dist/permissionRuleIssue.d.ts +0 -30
- package/dist/permissionRuleIssue.js +0 -78
- package/dist/permissionRulesWriteCapability.d.ts +0 -46
- package/dist/permissionRulesWriteCapability.js +0 -54
- package/dist/permissionWireCaps.d.ts +0 -37
- package/dist/permissionWireCaps.js +0 -37
- package/dist/postureKnob.d.ts +0 -71
- package/dist/postureKnob.js +0 -86
- package/dist/principalWire.d.ts +0 -17
- package/dist/principalWire.js +0 -17
- package/dist/printToolResultFrame.d.ts +0 -100
- package/dist/printToolResultFrame.js +0 -33
- package/dist/promptProfileWireCaps.d.ts +0 -13
- package/dist/promptProfileWireCaps.js +0 -13
- package/dist/readFacePosture.d.ts +0 -43
- package/dist/readFacePosture.js +0 -46
- package/dist/request/printNotification.d.ts +0 -20
- package/dist/request/printNotification.js +0 -55
- package/dist/request/taskRequest.d.ts +0 -249
- package/dist/request/taskRequest.js +10 -496
- package/dist/resumeRefusalCopy.d.ts +0 -136
- package/dist/resumeRefusalCopy.js +1 -117
- package/dist/retainBackgroundWireCaps.d.ts +0 -48
- package/dist/retainBackgroundWireCaps.js +0 -48
- package/dist/retryStatus.d.ts +2 -221
- package/dist/retryStatus.js +0 -107
- package/dist/rewindWireCaps.d.ts +0 -27
- package/dist/rewindWireCaps.js +0 -24
- package/dist/runCancelContext.d.ts +1 -20
- package/dist/runCancelContext.js +0 -34
- package/dist/runTerminal.d.ts +0 -273
- package/dist/runTerminal.js +0 -177
- package/dist/sandboxWire.d.ts +0 -38
- package/dist/sandboxWire.js +0 -82
- package/dist/scenarioWire.d.ts +0 -60
- package/dist/scenarioWire.js +0 -68
- package/dist/scratchpadWireCaps.d.ts +0 -11
- package/dist/scratchpadWireCaps.js +0 -32
- package/dist/sdkWireTransit.d.ts +0 -38
- package/dist/sdkWireTransit.js +0 -30
- package/dist/seam.d.ts +18 -853
- package/dist/seam.js +0 -52
- package/dist/seatContract.d.ts +0 -555
- package/dist/seatContract.js +5 -304
- package/dist/selfOrchestrationDenial.d.ts +0 -189
- package/dist/selfOrchestrationDenial.js +0 -162
- package/dist/selfOrchestrationWireCaps.d.ts +0 -38
- package/dist/selfOrchestrationWireCaps.js +0 -38
- package/dist/sessionMap.d.ts +0 -60
- package/dist/sessionMap.js +0 -37
- package/dist/sessionMemoryStatus.d.ts +11 -114
- package/dist/sessionMemoryStatus.js +0 -112
- package/dist/sessionModelLatch.d.ts +0 -29
- package/dist/sessionModelLatch.js +0 -40
- package/dist/sessionPolicyCapability.d.ts +3 -53
- package/dist/sessionPolicyCapability.js +0 -52
- package/dist/sessionSlot.d.ts +0 -26
- package/dist/sessionSlot.js +0 -17
- package/dist/skillsWireCaps.d.ts +0 -87
- package/dist/skillsWireCaps.js +0 -38
- package/dist/sqlEngineCapability.d.ts +0 -118
- package/dist/sqlEngineCapability.js +0 -134
- package/dist/sseIdleTriage.d.ts +0 -79
- package/dist/sseIdleTriage.js +1 -80
- package/dist/steering.d.ts +0 -54
- package/dist/steering.js +0 -63
- package/dist/subagent/engineCompactWire.d.ts +0 -34
- package/dist/subagent/engineCompactWire.js +4 -134
- package/dist/subagent/engineDelegatedPrompt.d.ts +0 -31
- package/dist/subagent/engineDelegatedPrompt.js +1 -103
- package/dist/subagent/engineRowStopGate.d.ts +0 -20
- package/dist/subagent/engineRowStopGate.js +0 -49
- package/dist/subagent/engineSubagentOutput.d.ts +0 -7
- package/dist/subagent/engineSubagentOutput.js +1 -51
- package/dist/subagent/engineSubagentResume.d.ts +2 -279
- package/dist/subagent/engineSubagentResume.js +2 -129
- package/dist/subagent/engineSubagentSteer.d.ts +0 -26
- package/dist/subagent/engineSubagentSteer.js +0 -63
- package/dist/subagent/engineSubagentTail.d.ts +0 -38
- package/dist/subagent/engineSubagentTail.js +2 -110
- package/dist/subagent/engineTaskHandleWire.d.ts +11 -65
- package/dist/subagent/engineTaskHandleWire.js +20 -131
- package/dist/subagent/subagentOwnerAbsence.d.ts +0 -2
- package/dist/subagent/subagentOwnerAbsence.js +0 -25
- package/dist/subagentContentStore.d.ts +3 -260
- package/dist/subagentContentStore.js +7 -540
- package/dist/systemReminderTag.d.ts +0 -49
- package/dist/systemReminderTag.js +0 -61
- package/dist/toolResult.d.ts +1 -211
- package/dist/toolResult.js +1 -358
- package/dist/toolRoster.d.ts +0 -140
- package/dist/toolRoster.js +0 -66
- package/dist/typePins.d.ts +0 -46
- package/dist/types/engineState.d.ts +0 -71
- package/dist/types/engineState.js +0 -16
- package/dist/ultracodeWireCaps.d.ts +0 -75
- package/dist/ultracodeWireCaps.js +0 -92
- package/dist/unrefTimer.d.ts +0 -27
- package/dist/webSearchBackendCapability.d.ts +0 -72
- package/dist/webSearchBackendCapability.js +0 -79
- package/dist/webSearchWireCaps.d.ts +0 -37
- package/dist/webSearchWireCaps.js +0 -34
- package/dist/websearch/searchProviderPresets.d.ts +0 -81
- package/dist/websearch/searchProviderPresets.js +0 -27
- package/dist/wireErrorTriage.d.ts +4 -160
- package/dist/wireErrorTriage.js +0 -171
- package/dist/wireRefusalCopy.d.ts +0 -28
- package/dist/wireRefusalCopy.js +0 -28
- package/dist/workflow.d.ts +0 -40
- package/dist/workflow.js +0 -52
- package/dist/workflowClient.d.ts +0 -122
- package/dist/workflowClient.js +8 -360
- package/dist/workflowMonitor.d.ts +2 -72
- package/dist/workflowMonitor.js +0 -26
- package/dist/writeProtectionCapability.d.ts +0 -112
- package/dist/writeProtectionCapability.js +0 -109
- package/docs/INTEGRATION-CLIENTS.md +62 -1
- package/package.json +1 -1
|
@@ -1,49 +1,10 @@
|
|
|
1
1
|
import { collapseLabel, escapeDisplayControlChars, taskDescFromName } from '../fleetTaskDesc.js';
|
|
2
2
|
import { rowIdTail } from '../workflow.js';
|
|
3
|
-
/**
|
|
4
|
-
* SDK `FleetTaskStatus` 的终态词汇 —— 非终态即在飞(未知未来值按在飞算,保守)。
|
|
5
|
-
* cli 侧 `engineBgGate.TERMINAL_STATUSES` 是**刻意的第二份**(零模块图污染),drift 由壳的
|
|
6
|
-
* `terminalStatuses.test.ts` 锁定 —— 本批不动那份。
|
|
7
|
-
*/
|
|
8
3
|
export const TERMINAL_FLEET_TASK_STATUSES = new Set([
|
|
9
4
|
'completed',
|
|
10
5
|
'failed',
|
|
11
6
|
'killed',
|
|
12
7
|
]);
|
|
13
|
-
/**
|
|
14
|
-
* 未来/未知 wire 状态 → 渲染词汇(闭集但读侧开集)。
|
|
15
|
-
*
|
|
16
|
-
* ⚠️ **B6 未删 `parked`,与任务书的 G11 指令相反 —— 理由与直证写在这里**:
|
|
17
|
-
* · 直证(server 1.291.0 dist,`fleet/fleet-bus.d.ts` + `fleet-bus.js` 12 处 publishTask):
|
|
18
|
-
* `FleetTaskStatus` 闭集**不含** `parked`,且每处 publishTask 的 status 都出自
|
|
19
|
-
* `completed|failed|killed|running` 四值三元链 ⇒ 今天 `'parked'` 在 fleet 行 wire 上**不可达**,
|
|
20
|
-
* 这一支确实是死分支。
|
|
21
|
-
* · 但**后果方向不对称**([anchor-on-the-deciding-quantity]「先定这个量门控动作的正负号」):
|
|
22
|
-
* 本支是**保护型**映射(把非活非终态的 parked 映到 'awaiting approval');删掉之后
|
|
23
|
-
* 它落 `default`(⚠️ [2393] notif-F5 纠:`default` 已由 REF-CC-043 改渲 `'idle'`,下面那段
|
|
24
|
-
* 是权威;本行原写「渲成 `running` = 谎报活跃」是**退役后没跟的旧行为描述**)。core 1.382 已有该状态([1561],
|
|
25
|
-
* design/153 §7.1),server 只是尚未投影 ⇒ 这不是「猜测层」,是**预挂**。
|
|
26
|
-
* 删的收益 = 一行;删的代价 = server 补上透传那天静默说谎。
|
|
27
|
-
* ⇒ 保留 + 把「候 server 预挂」的注释换成上面这条可复核的直证。定谳权交回 PM。
|
|
28
|
-
*
|
|
29
|
-
* 🔴 REF-CC-043(fleet2-05,P2 裁 GO,宪法三问已过):`default` 分支此前渲 `'running'` ——
|
|
30
|
-
* 未知未来状态被谎报成「活跃」,后果方向是**伤害型**(用户会以为一个已经僵住/退场的子代还在跑)。
|
|
31
|
-
* 改渲 `'idle'`(闭集里本就存在的「非活跃」词,187 用它表示「非活跃、非终态、非阻塞」)—— 门
|
|
32
|
-
* `ALWAYS_EMITTED_TASK_VIEW_KEYS` 不受影响,只是同一个已知渲染词的语义更诚实。
|
|
33
|
-
* 🔴 [2393] notif-F5(2026-08-03 全窗复审)**补记宿主后果**(上一版裁决注只写到「同一个已知
|
|
34
|
-
* 渲染词」,而下游语义比这句话大 —— 宪法三问的「谁受害」那一栏漏了这两处,补在这里以免下一棒
|
|
35
|
-
* 照着「只是换个词」去判断):
|
|
36
|
-
* · 壳 `overrides/fleet-tree.tsx`:`idle` 分支**短路 elapsed 与 token 两列**(返回
|
|
37
|
-
* `elapsed:'idle'`、`tokenText:''`),`running` 则渲真 elapsed/tokens;
|
|
38
|
-
* · 壳 `overrides/fleet-view-screen.tsx`:`deriveBands` 把 `idle` 计进 **awaiting**(「等你处理」)
|
|
39
|
-
* 档,`running` 计进 **working** 档。
|
|
40
|
-
* ⇒ status 缺席/脏的行现在会:丢掉 elapsed/tokens + 在表头被数成「awaiting」。方向仍然对
|
|
41
|
-
* (谎报活跃 = 伤害型,谎报不活跃 = 保护型),但它是一次**跨仓渲染语义**改动;三端提货单已点名
|
|
42
|
-
* (`docs/refactor/README.md`「提货单 / 破坏性变更清单」B 组),宿主侧另有一条陈述漂移待改
|
|
43
|
-
* (同表「宿主侧待办」:壳 engineBgShellPanelStore 的兜底方向陈述已成假话)。
|
|
44
|
-
* `s` 的参数类型同批收窄:`| undefined` 半支从未被真实调用点使用过(唯一生产调用点
|
|
45
|
-
* `projectTasks` 传的是 SDK 必填闭集 `FleetTaskRow['status']`),继续留着是死分支。
|
|
46
|
-
*/
|
|
47
8
|
export function coerceTaskStatus(s) {
|
|
48
9
|
switch (s) {
|
|
49
10
|
case 'queued':
|
|
@@ -59,34 +20,9 @@ export function coerceTaskStatus(s) {
|
|
|
59
20
|
case 'parked':
|
|
60
21
|
return 'awaiting approval';
|
|
61
22
|
default:
|
|
62
|
-
// 未知未来状态 → 渲成非活跃中性词(开集回落;绝不谎报活跃,REF-CC-043)。
|
|
63
23
|
return 'idle';
|
|
64
24
|
}
|
|
65
25
|
}
|
|
66
|
-
/**
|
|
67
|
-
* 中性 workflow 状态(run 席 `running|completed|failed`;item 席多一个 `parked`)→ 渲染词汇。
|
|
68
|
-
*
|
|
69
|
-
* 🔴 **0.65.0 加 `parked`(L-215① / B-079②)**:sdk 9.0.0 把 item 席具名成 `WorkflowItemStatus`
|
|
70
|
-
* 并加了 `parked`(「这一序数停在耐久审批门上等一次决定」),core 7.10.0 #642 是它的出处。
|
|
71
|
-
* 修前这里**没有这个 case**,于是它落进 `default` 被折成 `running` —— fleet 车道上一条**停着等人**
|
|
72
|
-
* 的工作流被渲成「在跑」,而那正是「等你」与「不需要你动」的分界。折成 `running` 之后用户没有任何
|
|
73
|
-
* 线索去按 ctrl+t 找那张卡,run 就一直停在那里。
|
|
74
|
-
* ⇒ 与 {@link coerceTaskStatus} 的 `parked` 臂**同一个落点** `awaiting approval`:同一件事在两条
|
|
75
|
-
* 车道上必须渲同一个词(两处各渲各的正是同名不同义的来源)。
|
|
76
|
-
*
|
|
77
|
-
* 🔴 **为什么直接加词、而不是铸一个 `_sema_parked: true` 超集键**(任务书要求写明选形理由):
|
|
78
|
-
* 判据是 sdk 那一位**在型面上开不开**,不是「它今天有几个已知值」——
|
|
79
|
-
* `FleetWorkflowRow.status` 在 sdk 8.8.0 与 9.0.0 上都声明成裸 `string`(`dist/resources/fleet.d.ts`
|
|
80
|
-
* 的 `status: string`,头注逐字「the NEUTRAL workflow run status (`running`|`completed`|`failed`),
|
|
81
|
-
* **open on read**」)。**它不是闭集** ⇒ 一个新词在 wire 上、在型面上都合法,消费端要做的就是
|
|
82
|
-
* 认它;此时再加一个 `_sema_` 前缀的孪生布尔,等于替一件上游已经能说清楚的事**另铸第二个真源**,
|
|
83
|
-
* 而两个真源迟早分叉(本包一贯要根治的形)。超集键留给「上游那一位真是闭集、加词会让严格消费端
|
|
84
|
-
* 判违约」的那一类,这里不是。
|
|
85
|
-
*
|
|
86
|
-
* ⚠️ **本函数仍收 run 席与 item 席两处**(调用点见 `projectWorkflows`):core 的两张词表里
|
|
87
|
-
* `parked` 只在 item 席,所以 run 席读到它属于上游异常 —— 但**渲染面的处置相同**(都是「等人」),
|
|
88
|
-
* 在这里为「哪一席」分叉只会长出一条没有用户面差别的分支。
|
|
89
|
-
*/
|
|
90
26
|
export function coerceWorkflowStatus(s) {
|
|
91
27
|
switch (s) {
|
|
92
28
|
case 'completed':
|
|
@@ -102,20 +38,9 @@ export function coerceWorkflowStatus(s) {
|
|
|
102
38
|
case 'running':
|
|
103
39
|
return 'running';
|
|
104
40
|
default:
|
|
105
|
-
// 0.72.12 CC-51(#64 同形):认不出的词不再谎报活跃 —— 与同文件 `coerceTaskStatus`(REF-CC-043)同律落
|
|
106
|
-
// 非活跃中性词 `idle`(FleetTaskStatus 是 wire 闭集,无 unknown 位;idle = 「活着但此刻没在推进」,
|
|
107
|
-
// 是闭集里唯一不断言方向的词)。
|
|
108
41
|
return 'idle';
|
|
109
42
|
}
|
|
110
43
|
}
|
|
111
|
-
/**
|
|
112
|
-
* 187 给 fleet 行命名用的是 agent 的**身份**,从不是它的 objective:
|
|
113
|
-
* `tjl(e) = e.type==="in_process_teammate" ? e.identity.agentName : e.agentType`
|
|
114
|
-
* (ui-modules/0616_053_uiux_ejl.js:20-21)。SDK `FleetTaskRow` 带 `agentType`/`agentName`
|
|
115
|
-
* (§K-7),所以这里**重建** tjl:`agentName`(in-process teammate 实例名)优先,否则 `agentType`
|
|
116
|
-
* (subagent_type/teammate 类型名)。只有引擎还没发身份时才退到 objective 派生的 `name` ——
|
|
117
|
-
* 折成单行、绝不整段多行 prompt、绝不空(187 的显示名恒是非空短身份)。全空 → 短 id 尾。
|
|
118
|
-
*/
|
|
119
44
|
function deriveAgentLabel(agentType, agentName, name, id) {
|
|
120
45
|
const identity = collapseLabel(agentName ?? '') || collapseLabel(agentType ?? '');
|
|
121
46
|
if (identity)
|
|
@@ -126,23 +51,6 @@ function deriveAgentLabel(agentType, agentName, name, id) {
|
|
|
126
51
|
const tail = rowIdTail(id).slice(-8);
|
|
127
52
|
return tail ? `agent ${tail}` : 'agent';
|
|
128
53
|
}
|
|
129
|
-
/**
|
|
130
|
-
* 引擎把 fleet 行的 `description` 设成 agent 的**最后一个工具名**(service fleet-bus
|
|
131
|
-
* `description = ev.toolName`)。187 的行正文是进度摘要、从不是工具动词,所以控制面/合成动词
|
|
132
|
-
* 泄漏进行(clay 见过的 `report_blocked`)是纯分歧。这里压掉**已知**的控制面动词(保守集合),
|
|
133
|
-
* 真实工作工具(Read/Bash/Edit…)原样放行。
|
|
134
|
-
*
|
|
135
|
-
* 集合 = core `RESERVED_AGENT_NAMES`(subagent.ts)的 CC-parity PascalCase 形 + goal 模式的
|
|
136
|
-
* `DeclareDone`。引擎 ≥ core 1.176 经 `canonicalToolName` 发 PascalCase。
|
|
137
|
-
*
|
|
138
|
-
* 🔴 [2006] A-CC-4(2026-07-29):此表此前**零门看守**,而 core 早已把子代委派工具改名成
|
|
139
|
-
* `Agent`(`DEFAULT_SUBAGENT_TOOL_NAME`;`Task`/`Fork` 退成 `OLD_TO_NEW` 旧名,`Fork` 还进了
|
|
140
|
-
* `TOMBSTONED_TOOLS`)。表里缺 `Agent` ⇒ 今天绝大多数 fleet 行的 description(引擎发的正是
|
|
141
|
-
* canonical 形 `Agent`)**压制不掉**,控制面动词照样泄漏进行正文 —— 正是本函数存在的理由被
|
|
142
|
-
* 静默架空。看守从此是 engine-vocab 门对**实装 core** `RESERVED_AGENT_NAMES` 的等值门;
|
|
143
|
-
* `Fork` 作为**登记旧名**保留(老引擎仍可能发;压制集多一个只多压制、不误伤真工具),
|
|
144
|
-
* 而"登记"本身要过门 —— 登记项必须是 core 认过的改名/墓碑词。
|
|
145
|
-
*/
|
|
146
54
|
export const CONTROL_TOOL_VERBS = new Set([
|
|
147
55
|
'Agent',
|
|
148
56
|
'Task',
|
|
@@ -153,37 +61,20 @@ export const CONTROL_TOOL_VERBS = new Set([
|
|
|
153
61
|
'ToolSearch',
|
|
154
62
|
'DeclareDone',
|
|
155
63
|
]);
|
|
156
|
-
/**
|
|
157
|
-
* 行的活动正文:控制面动词 ⇒ 空(187 从不显示它),否则按单行呈现载体规整后放行。
|
|
158
|
-
*
|
|
159
|
-
* #307:本函数是描述列的**主臂**(`projectDescription(...) || taskDescFromName(...)`),
|
|
160
|
-
* 修前它把 wire 原串原样返回 —— 描述列的规整只落在 fallback 臂的 `collapseLabel` 上,
|
|
161
|
-
* 主臂给值时那道规整根本不经过([assert-absence-check-fallback-layers] 同族形)。
|
|
162
|
-
* 🔴 压制判定仍按**原值** trim(判据集是 ASCII 动词名,规整不参与放行判定);规整只加在
|
|
163
|
-
* 返回的呈现串上。空/非空面不变:可见转义不产生空白,`|| fallback` 的真假面照旧。
|
|
164
|
-
*/
|
|
165
64
|
export function projectDescription(description) {
|
|
166
65
|
const d = description ?? '';
|
|
167
66
|
if (CONTROL_TOOL_VERBS.has(d.trim()))
|
|
168
67
|
return '';
|
|
169
68
|
return escapeDisplayControlChars(d);
|
|
170
69
|
}
|
|
171
|
-
// ── wire 值域过滤器(B6:类型面已到货,这里只剩「脏值不当真」)──────────────────────────────────
|
|
172
|
-
/**
|
|
173
|
-
* `toolUses` —— 子代**累计**工具调用数。语义两条(接错会显示一个「看起来很合理」的错数字):
|
|
174
|
-
* ① **累计不是增量** —— bg 子代 sink 的 usage 是累计口径,与 `turn_end` 的每轮增量相反。直取,绝不累加。
|
|
175
|
-
* ② **缺席 ≠ 0** —— 老 server 不发这个键。有键 ⇒ 真值(含真 0);无键 ⇒ undefined(不知道)。
|
|
176
|
-
*/
|
|
177
70
|
function wireToolUses(r) {
|
|
178
71
|
const v = r.toolUses;
|
|
179
72
|
return typeof v === 'number' && Number.isFinite(v) && v >= 0 ? v : undefined;
|
|
180
73
|
}
|
|
181
|
-
/** `transcriptId` —— 子代转录锚(core 铸的 childSessionId);委派 prompt 凭它去转录读面自取。 */
|
|
182
74
|
function wireTranscriptId(r) {
|
|
183
75
|
const v = r.transcriptId;
|
|
184
76
|
return typeof v === 'string' && v.length > 0 ? v : undefined;
|
|
185
77
|
}
|
|
186
|
-
/** `currentTool: {toolName, target?}` —— `currentAction` 的结构化同源体(core 1.429 → server 1.288)。 */
|
|
187
78
|
function wireCurrentTool(r) {
|
|
188
79
|
const v = r.currentTool;
|
|
189
80
|
if (typeof v !== 'object' || v === null)
|
|
@@ -197,27 +88,18 @@ function wireCurrentTool(r) {
|
|
|
197
88
|
...(typeof target === 'string' && target.length > 0 ? { target } : {}),
|
|
198
89
|
};
|
|
199
90
|
}
|
|
200
|
-
/** `startedCount` —— 「已起过的 agent 数」。🔴 缺席 ≠ 0(见 FleetWorkflowView 键注)。 */
|
|
201
91
|
function wireStartedCount(r) {
|
|
202
92
|
const v = r.startedCount;
|
|
203
93
|
return typeof v === 'number' && Number.isFinite(v) && v >= 0 ? v : undefined;
|
|
204
94
|
}
|
|
205
|
-
/** `parentToolCallId`(P1-2)—— 归属直读键。空串按缺席处理(引擎不该发,发了也别当真)。 */
|
|
206
95
|
function wireParentToolCallId(r) {
|
|
207
96
|
const v = r.parentToolCallId;
|
|
208
97
|
return typeof v === 'string' && v.length > 0 ? v : undefined;
|
|
209
98
|
}
|
|
210
|
-
/**
|
|
211
|
-
* `parentId` —— 悬空父的存在性判定唯一铸点(REF-CC-049,fleet2-11)。B10 禁真值判定当存在性判定:
|
|
212
|
-
* 空串是脏值形(SDK 只承诺「悬空不发」,那是 server 当下行为不是类型保证),按缺席处理。
|
|
213
|
-
* `fleetLedger.ts` 与本文件的 `projectTasks` 都调它 —— 一个谓词一个铸点,防止 `!== undefined`
|
|
214
|
-
* 与真值判定两种写法在同一字段上判读相反(悬空父脏值 `""` 时曾经真的翻过面)。
|
|
215
|
-
*/
|
|
216
99
|
export function wireParentId(r) {
|
|
217
100
|
const v = r.parentId;
|
|
218
101
|
return typeof v === 'string' && v.length > 0 ? v : undefined;
|
|
219
102
|
}
|
|
220
|
-
/** 终态四键之 `usage`(数值 verbatim,只挑数字位;全脏 ⇒ 整键缺席,不造空对象)。 */
|
|
221
103
|
export function wireRowUsage(r) {
|
|
222
104
|
const u = r.usage;
|
|
223
105
|
if (typeof u !== 'object' || u === null)
|
|
@@ -230,7 +112,6 @@ export function wireRowUsage(r) {
|
|
|
230
112
|
}
|
|
231
113
|
return Object.keys(out).length > 0 ? out : undefined;
|
|
232
114
|
}
|
|
233
|
-
/** 终态四键之 `editedFiles`(bg 子代专属;脏项逐条丢,不整键丢)。 */
|
|
234
115
|
function wireEditedFiles(r) {
|
|
235
116
|
const v = r.editedFiles;
|
|
236
117
|
if (!Array.isArray(v))
|
|
@@ -245,47 +126,21 @@ function wireEditedFiles(r) {
|
|
|
245
126
|
.map(f => ({ path: f.path, edits: f.edits }));
|
|
246
127
|
return out.length > 0 ? out : undefined;
|
|
247
128
|
}
|
|
248
|
-
/** 终态四键之 `stoppedBy`(开放枚举 verbatim:"user"/"parent"/"system"/…)。 */
|
|
249
129
|
function wireStoppedBy(r) {
|
|
250
130
|
const v = r.stoppedBy;
|
|
251
131
|
return typeof v === 'string' && v.length > 0 ? v : undefined;
|
|
252
132
|
}
|
|
253
|
-
/**
|
|
254
|
-
* #261 §2① `cycleSeq`(server ≥7.25.0 / core 5.36.0 #258;SDK **7.2.0** 才把它声明进
|
|
255
|
-
* `FleetTaskRow` ⇒ 本包 0.38.0 提货补投)—— 这一行的**代际号**,与 `FleetBgNotification.seq` /
|
|
256
|
-
* `task_progress.seq` **同域同轴**(fresh spawn 就是 cycle 1,每次 SendMessage 复活翻 +1)。
|
|
257
|
-
*
|
|
258
|
-
* 🔴 **缺席 = 「无此概念」,不是「第一代」**(SDK 头注逐字):没有 `a*` registry 行的 run ——
|
|
259
|
-
* 同步委派子代 / workflow `wa*` agent / **顶层 run 行** —— 根本没有代际。把缺席读成 1 的消费端
|
|
260
|
-
* 会把「首帧迟到」误判成「复活」。所以这里对**非正整数**一律整键缺席(0 / 负数 / 非有限数 /
|
|
261
|
-
* 非整数都不是合法代际号),绝不 `?? 0`、绝不 `?? 1`。
|
|
262
|
-
*/
|
|
263
133
|
export function wireCycleSeq(r) {
|
|
264
134
|
const v = r.cycleSeq;
|
|
265
135
|
return typeof v === 'number' && Number.isInteger(v) && v > 0 ? v : undefined;
|
|
266
136
|
}
|
|
267
|
-
/**
|
|
268
|
-
* #261 §2② `retiredBy`(server ≥7.25.0;SDK 7.2.0 声明)—— 这一帧的终态**不是发布方亲报**,
|
|
269
|
-
* 而是对账腿从 durable run 行**投影**出来的(发布方死了,行本会永久僵在活跃集里当幽灵)。
|
|
270
|
-
*
|
|
271
|
-
* 🔴 **发布方亲报的终态帧恒不带此键** ⇒ 两种终态在 wire 上可判:要区分「引擎说它完了」与
|
|
272
|
-
* 「我们从库里读出来它完了」时,这是**唯一**的判据([ghost-rows-need-upstream-liveness] 的
|
|
273
|
-
* wire 侧对位物 —— 此前本层把这一位整个丢掉,两种终态在视图上同形)。
|
|
274
|
-
* service 侧今天是单词闭集(`"reconcile"`),**读侧开集**:未知词原样透传(将来的第二个投影者
|
|
275
|
-
* 会是一个新词而不是改义),消费端 branch 已知值 + 通渲兜底,**绝不**按成员判死。
|
|
276
|
-
*/
|
|
277
137
|
function wireRetiredBy(r) {
|
|
278
138
|
const v = r.retiredBy;
|
|
279
139
|
return typeof v === 'string' && v.length > 0 ? v : undefined;
|
|
280
140
|
}
|
|
281
|
-
/** 终态四键之 `resumable`(仅 bg 子代有源;非 boolean ⇒ 缺席,**不当 false**)。 */
|
|
282
141
|
export function wireResumable(r) {
|
|
283
142
|
return typeof r.resumable === 'boolean' ? r.resumable : undefined;
|
|
284
143
|
}
|
|
285
|
-
/**
|
|
286
|
-
* wire task 行(Map values)→ 渲染行。树 depth/parentId 来自 wire:无 parentId = 顶层(depth 0),
|
|
287
|
-
* 子行挂在父下面,depth 沿 parent 链算(自引用/环由 `seen` 断)。
|
|
288
|
-
*/
|
|
289
144
|
export function projectTasks(allRows, opts) {
|
|
290
145
|
const rows = opts.rowFilter(allRows);
|
|
291
146
|
const viewingTaskId = opts.viewingTaskId;
|
|
@@ -301,7 +156,6 @@ export function projectTasks(allRows, opts) {
|
|
|
301
156
|
}
|
|
302
157
|
return d;
|
|
303
158
|
};
|
|
304
|
-
// descendantCount:有多少行认这一行当爹(行尾的 " (+N)")。
|
|
305
159
|
const childCount = new Map();
|
|
306
160
|
for (const r of rows) {
|
|
307
161
|
if (r.parentId)
|
|
@@ -322,26 +176,19 @@ export function projectTasks(allRows, opts) {
|
|
|
322
176
|
const task = {
|
|
323
177
|
id: r.id,
|
|
324
178
|
name: deriveAgentLabel(r.agentType, r.agentName, r.name, r.id),
|
|
325
|
-
// 子行帧无 description → 从 name 复原任务描述(CC 锚:行正文恒显 description,不留空列)。
|
|
326
179
|
description: projectDescription(r.description) || taskDescFromName(r.name, r.agentType, r.agentName),
|
|
327
180
|
depth: depthOf(r),
|
|
328
181
|
...(parentId !== undefined ? { parentId } : {}),
|
|
329
182
|
status: coerceTaskStatus(r.status),
|
|
330
183
|
...wireNumberKey('elapsedMs', wireDuration(r.elapsedMs)),
|
|
331
184
|
...wireNumberKey('tokens', wireCount(r.tokens)),
|
|
332
|
-
// 🔴 wire 从无 tokenDir(#50 门禁盘出的真类型错:读点恒 undefined 曾靠 ?? 掩住)——恒壳侧缺省。
|
|
333
185
|
tokenDir: 'down',
|
|
334
186
|
...wireNumberKey('queuedCount', wireCount(r.queuedCount)),
|
|
335
187
|
awaitingPlanApproval: r.awaitingPlanApproval ?? false,
|
|
336
188
|
descendantCount: childCount.get(r.id) ?? 0,
|
|
337
|
-
// 198 isViewed:这一行就是被查看的那个 agent(行 id 尾段 = 引擎 taskId)。
|
|
338
189
|
viewed: viewingTaskId !== undefined && rowIdTail(r.id) === viewingTaskId,
|
|
339
|
-
// 🔴 「键缺席」与「值为 0/''」是两件事 —— 只有真给了才落键(下游据「键在不在」判三态)。
|
|
340
190
|
...(toolUses !== undefined ? { toolUses } : {}),
|
|
341
191
|
...(transcriptId !== undefined ? { transcriptId } : {}),
|
|
342
|
-
// launch 真锚原值透传(> 0 才算有值)。ledger 拿它算 elapsedMs 是**另一件事** —— 下游要的是
|
|
343
|
-
// 时刻本身(自己的钟去减),elapsedMs 是发帧那一刻的快照,客户端存着会漂([C36] server 判据)。
|
|
344
|
-
// launch 锚只认**有限正数**;非有限值按缺席(它序列化成 `null` 发出去 = 一个不存在的 launch 时刻)。
|
|
345
192
|
...(typeof r.startedAt === 'number' && Number.isFinite(r.startedAt) && r.startedAt > 0 ? { startedAt: r.startedAt } : {}),
|
|
346
193
|
...(currentTool !== undefined ? { currentTool } : {}),
|
|
347
194
|
...(parentToolCallId !== undefined ? { parentToolCallId } : {}),
|
|
@@ -349,35 +196,27 @@ export function projectTasks(allRows, opts) {
|
|
|
349
196
|
...(usage !== undefined ? { usage } : {}),
|
|
350
197
|
...(resumable !== undefined ? { resumable } : {}),
|
|
351
198
|
...(editedFiles !== undefined ? { editedFiles } : {}),
|
|
352
|
-
// #261 §2 两位:代际号与「非亲报终态」判别位。两者都是**在场才落键** —— cycleSeq 缺席是
|
|
353
|
-
// 「这条行没有代际概念」、retiredBy 缺席是「发布方亲报」,任何一个补默认值都会把一个诚实
|
|
354
|
-
// 缺席翻译成一句假话。
|
|
355
199
|
...(cycleSeq !== undefined ? { cycleSeq } : {}),
|
|
356
200
|
...(retiredBy !== undefined ? { retiredBy } : {}),
|
|
357
201
|
};
|
|
358
202
|
return task;
|
|
359
203
|
});
|
|
360
204
|
}
|
|
361
|
-
/** 计数位的窄读:非负**整数**才算数(0 是真 0);其余(缺席 / 负数 / 小数 / NaN / Infinity / 非数)⇒ `undefined`。 */
|
|
362
205
|
function wireCount(v) {
|
|
363
206
|
return typeof v === 'number' && Number.isInteger(v) && v >= 0 ? v : undefined;
|
|
364
207
|
}
|
|
365
|
-
/** 时长位的窄读:非负有限数才算数;其余 ⇒ `undefined`。 */
|
|
366
208
|
function wireDuration(v) {
|
|
367
209
|
return typeof v === 'number' && Number.isFinite(v) && v >= 0 ? v : undefined;
|
|
368
210
|
}
|
|
369
|
-
/** 有值才落键(缺席 ⇒ 空对象 ⇒ 视图上键缺席,不铸 0)。 */
|
|
370
211
|
function wireNumberKey(key, v) {
|
|
371
212
|
return (v !== undefined ? { [key]: v } : {});
|
|
372
213
|
}
|
|
373
|
-
/** wire workflow 行 → 渲染行。 */
|
|
374
214
|
export function projectWorkflows(rows) {
|
|
375
215
|
return rows.map(r => {
|
|
376
216
|
const startedCount = wireStartedCount(r);
|
|
377
217
|
const errorCode = wireErrorCode(r);
|
|
378
218
|
return {
|
|
379
219
|
id: r.id,
|
|
380
|
-
// 187 workflow label = `e.summary ?? e.description`(短 label);折成单行,空 → 187 占位符。
|
|
381
220
|
name: collapseLabel(r.name ?? '') || 'Dynamic workflow',
|
|
382
221
|
description: projectDescription(r.description),
|
|
383
222
|
status: coerceWorkflowStatus(r.status),
|
|
@@ -391,20 +230,10 @@ export function projectWorkflows(rows) {
|
|
|
391
230
|
};
|
|
392
231
|
});
|
|
393
232
|
}
|
|
394
|
-
/** CC-72:sdk 未声明的 run 级码,按结构读 —— 非空串才算在场;空串 / 非串 / null 一律缺席(不折串)。 */
|
|
395
233
|
function wireErrorCode(r) {
|
|
396
234
|
const v = r.errorCode;
|
|
397
235
|
return typeof v === 'string' && v.length > 0 ? v : undefined;
|
|
398
236
|
}
|
|
399
|
-
// ── 键集契约(`run-fleet-view-keys-test.mjs` 的运行期锚)─────────────────────────────────────
|
|
400
|
-
//
|
|
401
|
-
// 两跳链条,一跳都断不了(形与 `seatContract.ts` 的座位门同款):
|
|
402
|
-
// interface ──类型钉(本文件末 `_fleetViewKeyPins`,编译期,**两个方向**)──> 键名元组
|
|
403
|
-
// ──双向键集门(运行期,对最大行/最小行的真产出逐元素相等)──> 实装投影
|
|
404
|
-
//
|
|
405
|
-
// 为什么钉在**内部 const 元组**而不是导出的 `readonly string[]`:后者的 `[number]` 塌回 `string`,
|
|
406
|
-
// `Covers` 恒真 = 零判别力(seatContract `:838-843` 同一个坑的记录)。公开面给 `readonly string[]`,
|
|
407
|
-
// 消费者的 `includes(someString)` 不受影响。
|
|
408
237
|
const FLEET_TASK_VIEW_KEY_TUPLE = [
|
|
409
238
|
'id',
|
|
410
239
|
'name',
|
|
@@ -431,7 +260,6 @@ const FLEET_TASK_VIEW_KEY_TUPLE = [
|
|
|
431
260
|
'cycleSeq',
|
|
432
261
|
'retiredBy',
|
|
433
262
|
];
|
|
434
|
-
/** `FleetTaskView` 的键名清单(运行期物;编译期与 `keyof FleetTaskView` 双向等值)。 */
|
|
435
263
|
export const FLEET_TASK_VIEW_KEYS = FLEET_TASK_VIEW_KEY_TUPLE;
|
|
436
264
|
const FLEET_WORKFLOW_VIEW_KEY_TUPLE = [
|
|
437
265
|
'id',
|
|
@@ -446,7 +274,6 @@ const FLEET_WORKFLOW_VIEW_KEY_TUPLE = [
|
|
|
446
274
|
'startedCount',
|
|
447
275
|
'errorCode',
|
|
448
276
|
];
|
|
449
|
-
/** `FleetWorkflowView` 的键名清单(同上)。 */
|
|
450
277
|
export const FLEET_WORKFLOW_VIEW_KEYS = FLEET_WORKFLOW_VIEW_KEY_TUPLE;
|
|
451
278
|
const FLEET_TASK_ROW_WIRE_KEY_TUPLE = [
|
|
452
279
|
'id',
|
|
@@ -472,12 +299,9 @@ const FLEET_TASK_ROW_WIRE_KEY_TUPLE = [
|
|
|
472
299
|
'usage',
|
|
473
300
|
'resumable',
|
|
474
301
|
'editedFiles',
|
|
475
|
-
// SDK 7.2.0 新声明的两位(#261 §2,server ≥7.25.0 早已在 wire 上 —— 这是**类型跟车**不是新能力)。
|
|
476
302
|
'cycleSeq',
|
|
477
303
|
'retiredBy',
|
|
478
304
|
];
|
|
479
|
-
/** SDK `FleetTaskRow` 的**入口**键名清单(编译期与 `keyof FleetTaskRow` 双向等值 ⇒ SDK 加一个
|
|
480
|
-
* wire 键,本元组不跟就编译红;跟了之后覆盖账那条腿再逼你表态「投不投」)。 */
|
|
481
305
|
export const FLEET_TASK_ROW_WIRE_KEYS = FLEET_TASK_ROW_WIRE_KEY_TUPLE;
|
|
482
306
|
const FLEET_WORKFLOW_ROW_WIRE_KEY_TUPLE = [
|
|
483
307
|
'id',
|
|
@@ -491,16 +315,7 @@ const FLEET_WORKFLOW_ROW_WIRE_KEY_TUPLE = [
|
|
|
491
315
|
'elapsedMs',
|
|
492
316
|
'tokens',
|
|
493
317
|
];
|
|
494
|
-
/** SDK `FleetWorkflowRow` 的入口键名清单(同上)。 */
|
|
495
318
|
export const FLEET_WORKFLOW_ROW_WIRE_KEYS = FLEET_WORKFLOW_ROW_WIRE_KEY_TUPLE;
|
|
496
|
-
/**
|
|
497
|
-
* **不投影登记表**:wire 上有、`FleetTaskView` 上**故意没有**的键,每条必须写清理由。
|
|
498
|
-
*
|
|
499
|
-
* 🔴 这张表是 `startedAt` 那类事故的正面看守:那次不是「谁反对投影它」,是**没有人被逼着表态**——
|
|
500
|
-
* wire 有、ledger 读到了、另外两个投影面都补过,唯独这一层静默丢弃,编译期一声不吭。有了本表,
|
|
501
|
-
* 每个 wire 键只有两条出路:**要么投影出去,要么在这里写下不投的理由**;新 wire 键在覆盖账那条
|
|
502
|
-
* 腿上当场红,不给「悄悄没人管」留位置。
|
|
503
|
-
*/
|
|
504
319
|
export const FLEET_TASK_ROW_KEYS_NOT_PROJECTED = {
|
|
505
320
|
sourceLane: {
|
|
506
321
|
kind: 'by-design',
|
|
@@ -535,10 +350,6 @@ export const FLEET_TASK_ROW_KEYS_NOT_PROJECTED = {
|
|
|
535
350
|
reason: '结构化同源体 `currentTool` 已投影(SDK 注:currentAction 是它的**文本回落**)。🔴 诚实记账:旧端(server <1.288)只发 currentAction ⇒ 那一档上本视图今天确实拿不到活动文本,这是**已知缺口**不是设计取舍;补它 = 加 `currentAction?: string` 进本视图 + 端侧回落渲染。',
|
|
536
351
|
},
|
|
537
352
|
};
|
|
538
|
-
/** workflow 行:wire 十键与视图十键一一同名同义 ⇒ 本表**空**(空不是「忘了填」,是覆盖账那条腿
|
|
539
|
-
* 每跑一次都在证明它该空:少投一个键就红)。 */
|
|
540
353
|
export const FLEET_WORKFLOW_ROW_KEYS_NOT_PROJECTED = {};
|
|
541
|
-
// `Covers`(REF-CC-145/dup-12,P3 wave1 卡C-argv)改吃共用叶 ../typePins.js——四份逐字重复钉之一
|
|
542
|
-
// (`Exclude<A,B> extends never` = 「A 的每个成员都在 B 里」;不成立时类型是 `never`,赋 `true` 即编译红)。
|
|
543
354
|
const _fleetViewKeyPins = [true, true, true, true, true, true, true, true, true, true];
|
|
544
355
|
void _fleetViewKeyPins;
|
|
@@ -1,9 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* 记一条 fleet 行的 agentType(幂等;行帧不带这一位 / 坏形 ⇒ 整条不动,不擦掉已知值 ——
|
|
3
|
-
* 同一行的后续帧缺席这一位是「这帧没说」,不是「类型没了」)。
|
|
4
|
-
*/
|
|
5
1
|
export declare function recordFleetRowAgentType(taskIdTail: string, agentType: string | undefined): void;
|
|
6
|
-
/** 读口:这一行的子代类型;`undefined` = **诚实不知道**(调用方让键缺席,不许回落到展示名)。 */
|
|
7
2
|
export declare function fleetRowAgentType(taskIdTail: string | undefined): string | undefined;
|
|
8
|
-
/** 测试钩:清台账(module 级单例,同进程多组断言必须能清)。 */
|
|
9
3
|
export declare function __resetFleetRowAgentTypeForTests(): void;
|
|
@@ -1,37 +1,8 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* fleetRowAgentType — 「这一条 fleet 行的子代是什么**类型**」的台账(0.75.1 CC-95(b);包内叶,不出公面)。
|
|
3
|
-
*
|
|
4
|
-
* ── 为什么要有它 ──────────────────────────────────────────────────────────────────────────────
|
|
5
|
-
* `subagent_lifecycle` 的 `agentType`(CC `SubagentStart.agent_type` 那一位)此前取的是 tick 的**展示名**
|
|
6
|
-
* `task_progress.name` —— 那一位是上游由委派卡的 `description` 派生的**显示串**,不是类型。于是宿主的
|
|
7
|
-
* SubagentStart hook 收到的是任务描述:一个看起来合理的错答案。
|
|
8
|
-
*
|
|
9
|
-
* 诚实来源亲核(sdk 9.8.1 实装字节):
|
|
10
|
-
* · `task_progress` 臂(`dist/events.d.ts`)上**没有** `agentType`、也没有 `spawnAgentType` —— tick 这条
|
|
11
|
-
* lane 今天根本不报类型,所以本层**不读**无出处的键(读了就是替上游发明一个字段)。🔴 **措辞更正(外部验收方 [7764])**:因此 tick 这一档**不是一条「今天恒不命中的路径」,它根本没有代码** —— 本文件里 `agentType` 的三处出现全在注释,唯一的代码走的是 fleet 行帧那一档。相应地,「上游铸位当天零改生效」这句**不成立**:上游若铸出 `spawnAgentType`,本包**没有读口**,仍需改码补一档;
|
|
12
|
-
* · `FleetTaskRow.agentType`(`dist/resources/fleet.d.ts`,§K-7 的短类型 label,如 `Explore` /
|
|
13
|
-
* `general-purpose`)**有出处** —— 但 `fleet/fleetProjection.ts` 把它**折进** `FleetTaskView.name`
|
|
14
|
-
* (`deriveAgentLabel` = `agentName ?? agentType`,登记在
|
|
15
|
-
* `FLEET_TASK_ROW_KEYS_NOT_PROJECTED` 里),折完之后它与显示名再也分不开。
|
|
16
|
-
* ⇒ 所以类型这一位要在**折之前**留一份:行帧消费臂按行 id 尾段记,tick 臂按归一后的尾段读。
|
|
17
|
-
*
|
|
18
|
-
* ── 纪律 ────────────────────────────────────────────────────────────────────────────────────
|
|
19
|
-
* 🔴 **只记 wire 真给了的**:空串 / 非串一律不入账(空串既不是类型也不是「不知道」);账上没有 ⇒ 读口
|
|
20
|
-
* 答 `undefined` = **诚实缺席**,调用方让键缺席,绝不回落到展示名或编一个 `subagent`。
|
|
21
|
-
* 🔴 作用域 = 进程级(与本包转录锚台账逐字同族:写方 = 行帧消费臂,读方 = tick 臂;两份模块实例 ⇒ 读口恒空、
|
|
22
|
-
* `agentType` 恒缺席,而两边代码看着都对)。
|
|
23
|
-
* 有界 LRU(命中即续命):上限是内存约束不是语义,被挤掉只退化成「这一行的类型不知道」。
|
|
24
|
-
*/
|
|
25
1
|
const MAX_ROWS = 2048;
|
|
26
2
|
const agentTypeByTail = new Map();
|
|
27
|
-
/**
|
|
28
|
-
* 记一条 fleet 行的 agentType(幂等;行帧不带这一位 / 坏形 ⇒ 整条不动,不擦掉已知值 ——
|
|
29
|
-
* 同一行的后续帧缺席这一位是「这帧没说」,不是「类型没了」)。
|
|
30
|
-
*/
|
|
31
3
|
export function recordFleetRowAgentType(taskIdTail, agentType) {
|
|
32
4
|
if (typeof taskIdTail !== 'string' || taskIdTail.length === 0)
|
|
33
5
|
return;
|
|
34
|
-
// 形核仍在本层做(wire 值不可信,型面说是 string 不等于到货一定是 string;空串既不是类型也不是「不知道」)。
|
|
35
6
|
if (typeof agentType !== 'string' || agentType.length === 0)
|
|
36
7
|
return;
|
|
37
8
|
agentTypeByTail.delete(taskIdTail);
|
|
@@ -42,18 +13,16 @@ export function recordFleetRowAgentType(taskIdTail, agentType) {
|
|
|
42
13
|
agentTypeByTail.delete(oldest);
|
|
43
14
|
}
|
|
44
15
|
}
|
|
45
|
-
/** 读口:这一行的子代类型;`undefined` = **诚实不知道**(调用方让键缺席,不许回落到展示名)。 */
|
|
46
16
|
export function fleetRowAgentType(taskIdTail) {
|
|
47
17
|
if (typeof taskIdTail !== 'string' || taskIdTail.length === 0)
|
|
48
18
|
return undefined;
|
|
49
19
|
const v = agentTypeByTail.get(taskIdTail);
|
|
50
20
|
if (v === undefined)
|
|
51
21
|
return undefined;
|
|
52
|
-
agentTypeByTail.delete(taskIdTail);
|
|
22
|
+
agentTypeByTail.delete(taskIdTail);
|
|
53
23
|
agentTypeByTail.set(taskIdTail, v);
|
|
54
24
|
return v;
|
|
55
25
|
}
|
|
56
|
-
/** 测试钩:清台账(module 级单例,同进程多组断言必须能清)。 */
|
|
57
26
|
export function __resetFleetRowAgentTypeForTests() {
|
|
58
27
|
agentTypeByTail.clear();
|
|
59
28
|
}
|
|
@@ -1,59 +1,22 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* src/fleet/workflowSizeWarning.ts —— workflow **规模告警**的判定(0.73.5)。
|
|
3
|
-
*
|
|
4
|
-
* 三端 footer / 面板都要回答同一个问题:「这条 workflow 是不是大到该提醒用户了」。判定与 CC 同形
|
|
5
|
-
* (三个缺省帽、每 agent 用量估算、guideline 表、两个 env 覆盖、三档文案与宽度阶梯),属于客户端公共逻辑,
|
|
6
|
-
* 由本包单源;端只负责读环境、读设置、量宽度与渲染。
|
|
7
|
-
*
|
|
8
|
-
* 🔴 **入参按 fleet 视图的三态键读**(`FleetWorkflowView`:`totalCount` / `startedCount` / `doneCount` /
|
|
9
|
-
* `failedCount` / `tokens` 全是可选位,缺席 = wire 没报 = 不知道)。出参三态:
|
|
10
|
-
* · `warn` —— 有**正向证据**证明至少一条轴超帽(别的键缺席不挡它;下界分母算出的上界**不算**证据);
|
|
11
|
-
* · `ok` —— 两条轴都判得出,且都在帽内(或 ultracode 压掉了整条告警);
|
|
12
|
-
* · `unknown` —— 没有超帽的正向证据,且至少一条轴判不出。**未知的规模不能被当作规模正常**:
|
|
13
|
-
* `unknown` 绝不折成 `ok`,`missing` 点名缺了哪几键。
|
|
14
|
-
*
|
|
15
|
-
* 🔴 **分母口径**(每 agent 用量 `u = tokens / started`):
|
|
16
|
-
* · `startedCount` 在场且不小于 `doneCount + failedCount` ⇒ 用引擎真值(含真 0:「一个都还没起」是一条真信息
|
|
17
|
-
* ⇒ 用先验);比已完成数还小(帧间竞态)⇒ 这份读数是陈旧的,按下面的下界处置;
|
|
18
|
-
* · 缺席 ⇒ 只有 `doneCount` / `failedCount` **两键都在场**才回退成下界,结果标 `startedIsLowerBound`。
|
|
19
|
-
* 下界偏小 ⇒ `u` 偏大 ⇒ 算出来的是投影的**上界**(`projectedTokensUpperBound`,不是 `projectedTokens`):
|
|
20
|
-
* 上界在帽内 ⇒ 真的在帽内 ⇒ 可以判 `ok`;上界超帽**不是**超帽的证据(同一份读数补上真 `startedCount`
|
|
21
|
-
* 可能远在帽内)⇒ 投影轴判不出,`unknown`。想保守一点的端可以自己拿上界去提示,判词不替它撒谎;
|
|
22
|
-
* · 下界为 0 ⇒ 每 agent 用量判不出:「0 个完成」不是「一个没起」的证据,先验只在引擎**亲口**报
|
|
23
|
-
* `startedCount = 0` 时可用;
|
|
24
|
-
* · 只有一键在场 ⇒ 不回退(缺席的那键不读作 0)。
|
|
25
|
-
*/
|
|
26
|
-
/** 缺省 agent 数帽。 */
|
|
27
1
|
export declare const WORKFLOW_SIZE_WARNING_AGENT_CAP = 25;
|
|
28
|
-
/** 缺省 token 帽(已花 ∨ 投影)。 */
|
|
29
2
|
export declare const WORKFLOW_SIZE_WARNING_TOKEN_CAP = 1500000;
|
|
30
|
-
/** 还没有任何 agent 起跑时的每 agent 用量先验。 */
|
|
31
3
|
export declare const WORKFLOW_SIZE_WARNING_TOKENS_PER_AGENT = 70000;
|
|
32
|
-
/** 显式 `workflowSizeGuideline` → agent 数帽。`unrestricted` 与缺省(未配置)**不贡献帽**,故不在表里。 */
|
|
33
4
|
export declare const WORKFLOW_SIZE_GUIDELINE_AGENT_CAPS: Readonly<Record<'small' | 'medium' | 'large', number>>;
|
|
34
|
-
/** 两个 env 覆盖各自的名字,按读取优先级排(品牌名在前,兼容名在后)。本包不读 `process.env`,名字单源在这里。 */
|
|
35
5
|
export declare const WORKFLOW_SIZE_WARNING_ENV_NAMES: Readonly<{
|
|
36
6
|
agents: readonly [string, string];
|
|
37
7
|
tokens: readonly [string, string];
|
|
38
8
|
}>;
|
|
39
|
-
/** 三档文案(宽 → 窄)。 */
|
|
40
9
|
export declare const WORKFLOW_SIZE_WARNING_TEXT_LONG = "\u26A0 Large workflow \u00B7 /workflows to stop";
|
|
41
10
|
export declare const WORKFLOW_SIZE_WARNING_TEXT_SHORT = "\u26A0 Large workflow";
|
|
42
11
|
export declare const WORKFLOW_SIZE_WARNING_TEXT_MIN = "\u26A0";
|
|
43
12
|
export interface WorkflowSizeInput {
|
|
44
|
-
/** workflow 的 agent 总数(`FleetWorkflowView.totalCount`)。缺席 = 不知道。 */
|
|
45
13
|
readonly totalCount?: number;
|
|
46
|
-
/** 已起跑的 agent 数(引擎真值)。缺席 ⇒ 见头注的下界回退。 */
|
|
47
14
|
readonly startedCount?: number;
|
|
48
15
|
readonly doneCount?: number;
|
|
49
16
|
readonly failedCount?: number;
|
|
50
|
-
/** 已花 token(`FleetWorkflowView.tokens`)。缺席 = 不知道,**不是 0**。 */
|
|
51
17
|
readonly tokens?: number;
|
|
52
|
-
/** ultracode 档压掉整条告警。 */
|
|
53
18
|
readonly ultracodeActive?: boolean;
|
|
54
|
-
/** 设置里**显式配置**的 `workflowSizeGuideline`;未配置就别传(缺省档不贡献帽)。 */
|
|
55
19
|
readonly guidelineSize?: string;
|
|
56
|
-
/** env 覆盖(最高优先级);正有限数才生效。 */
|
|
57
20
|
readonly envAgentCap?: number;
|
|
58
21
|
readonly envTokenCap?: number;
|
|
59
22
|
}
|
|
@@ -63,11 +26,8 @@ interface WorkflowSizeFacts {
|
|
|
63
26
|
readonly tokenCap: number;
|
|
64
27
|
readonly scheduledAgents?: number;
|
|
65
28
|
readonly totalTokens?: number;
|
|
66
|
-
/** 投影(已花 ∨ 每 agent 用量 × 总数);只在分母是引擎真值时在场。 */
|
|
67
29
|
readonly projectedTokens?: number;
|
|
68
|
-
/** 投影的**上界**;只在分母用了 `doneCount + failedCount` 下界(且下界 > 0)时在场,与 `projectedTokens` 互斥。 */
|
|
69
30
|
readonly projectedTokensUpperBound?: number;
|
|
70
|
-
/** 只在分母用了下界时在场。 */
|
|
71
31
|
readonly startedIsLowerBound?: true;
|
|
72
32
|
}
|
|
73
33
|
export type WorkflowSizeVerdict = (WorkflowSizeFacts & {
|
|
@@ -80,17 +40,10 @@ export type WorkflowSizeVerdict = (WorkflowSizeFacts & {
|
|
|
80
40
|
readonly kind: 'unknown';
|
|
81
41
|
readonly missing: readonly WorkflowSizeMissingKey[];
|
|
82
42
|
});
|
|
83
|
-
/** 规模判定。纯函数:每个环境量都由调用方注入。 */
|
|
84
43
|
export declare function evaluateWorkflowSize(input: WorkflowSizeInput): WorkflowSizeVerdict;
|
|
85
|
-
/**
|
|
86
|
-
* 两个 env 覆盖的读口。`env` 由调用方交(本包不碰 `process.env`)。每组按 {@link WORKFLOW_SIZE_WARNING_ENV_NAMES}
|
|
87
|
-
* 的顺序取**第一个在场的名字**;那个名字的值不是正有限数 ⇒ 该键不在场,**不回落**到第二个名字
|
|
88
|
-
* (显式写错不该被悄悄换源)。
|
|
89
|
-
*/
|
|
90
44
|
export declare function readWorkflowSizeWarningEnvCaps(env: Readonly<Record<string, string | undefined>> | undefined): {
|
|
91
45
|
envAgentCap?: number;
|
|
92
46
|
envTokenCap?: number;
|
|
93
47
|
};
|
|
94
|
-
/** 宽度阶梯:挑放得下的最长一档;连字形都放不下 ⇒ `undefined`(整段不渲)。`width` 由调用方注入(与渲染器同一把尺)。 */
|
|
95
48
|
export declare function workflowSizeWarningTextForWidth(available: number, width: (s: string) => number): string | undefined;
|
|
96
49
|
export {};
|