@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.
Files changed (382) hide show
  1. package/CHANGELOG.md +23 -1
  2. package/README.md +5 -4
  3. package/dist/abortableSleep.d.ts +0 -28
  4. package/dist/abortableSleep.js +0 -28
  5. package/dist/adapt/arms.d.ts +0 -46
  6. package/dist/adapt/arms.js +9 -544
  7. package/dist/adapt/ids.d.ts +0 -58
  8. package/dist/adapt/ids.js +0 -63
  9. package/dist/adapt/instanceLedger.d.ts +0 -25
  10. package/dist/adapt/instanceLedger.js +0 -20
  11. package/dist/adapt/panelTasks.d.ts +0 -69
  12. package/dist/adapt/panelTasks.js +0 -95
  13. package/dist/adapt/textSegmentAuthority.d.ts +1 -137
  14. package/dist/adapt/textSegmentAuthority.js +0 -54
  15. package/dist/adapt/textStream.d.ts +0 -252
  16. package/dist/adapt/textStream.js +2 -281
  17. package/dist/adapt/toolCards.d.ts +0 -46
  18. package/dist/adapt/toolCards.js +0 -23
  19. package/dist/adapt/turnFlags.d.ts +0 -54
  20. package/dist/adapt/turnFlags.js +1 -17
  21. package/dist/adapt/wireShapes.d.ts +0 -92
  22. package/dist/adapt/wireShapes.js +0 -83
  23. package/dist/adapt.d.ts +0 -55
  24. package/dist/adapt.js +1 -120
  25. package/dist/adapter/activeRunSelfHeal.d.ts +22 -515
  26. package/dist/adapter/activeRunSelfHeal.js +10 -625
  27. package/dist/adapter/downstream/eventToSdkMessage.d.ts +2 -305
  28. package/dist/adapter/downstream/eventToSdkMessage.js +2 -867
  29. package/dist/adapter/downstream/terminalToSdkResult.d.ts +2 -314
  30. package/dist/adapter/downstream/terminalToSdkResult.js +13 -560
  31. package/dist/adapter/downstream/turnUsageToModelUsage.d.ts +0 -95
  32. package/dist/adapter/downstream/turnUsageToModelUsage.js +2 -31
  33. package/dist/adapter/runStream.d.ts +0 -206
  34. package/dist/adapter/runStream.js +6 -596
  35. package/dist/adapter/types.d.ts +0 -111
  36. package/dist/adapter/types.js +0 -29
  37. package/dist/agentSession/backgroundView.d.ts +0 -106
  38. package/dist/agentSession/backgroundView.js +3 -49
  39. package/dist/agentSession/contract.d.ts +0 -98
  40. package/dist/agentSession/contract.js +0 -12
  41. package/dist/agentsWireCaps.d.ts +0 -72
  42. package/dist/agentsWireCaps.js +4 -72
  43. package/dist/approvalsStreamLiveCapability.d.ts +0 -25
  44. package/dist/approvalsStreamLiveCapability.js +0 -31
  45. package/dist/argvFlagValue.d.ts +0 -33
  46. package/dist/argvFlagValue.js +3 -35
  47. package/dist/attachmentsWireCaps.d.ts +0 -127
  48. package/dist/attachmentsWireCaps.js +0 -144
  49. package/dist/autoModeUnavailable.d.ts +0 -120
  50. package/dist/autoModeUnavailable.js +0 -144
  51. package/dist/classifierStatus.d.ts +0 -72
  52. package/dist/classifierStatus.js +0 -167
  53. package/dist/classifierVerdictWire.d.ts +0 -54
  54. package/dist/classifierVerdictWire.js +0 -133
  55. package/dist/clientContextWireCaps.d.ts +0 -37
  56. package/dist/clientContextWireCaps.js +0 -36
  57. package/dist/clientSlice.d.ts +0 -63
  58. package/dist/clientSlice.js +0 -45
  59. package/dist/cloudConfigWireCaps.d.ts +0 -86
  60. package/dist/cloudConfigWireCaps.js +2 -65
  61. package/dist/compensations.d.ts +0 -52
  62. package/dist/compensations.js +2 -63
  63. package/dist/controlRouter.d.ts +2 -208
  64. package/dist/controlRouter.js +1 -129
  65. package/dist/coreValuePorts.d.ts +0 -84
  66. package/dist/coreValuePorts.js +0 -29
  67. package/dist/decideReceipt.d.ts +0 -110
  68. package/dist/decideReceipt.js +0 -84
  69. package/dist/detachWire.d.ts +0 -130
  70. package/dist/detachWire.js +1 -130
  71. package/dist/deviceExecutorManagementCapability.d.ts +2 -35
  72. package/dist/deviceExecutorManagementCapability.js +1 -37
  73. package/dist/diagnostics.d.ts +0 -8
  74. package/dist/diagnostics.js +0 -8
  75. package/dist/diff/patch.d.ts +0 -17
  76. package/dist/diff/patch.js +0 -19
  77. package/dist/effectiveFacts.d.ts +0 -40
  78. package/dist/effectiveFacts.js +0 -22
  79. package/dist/effortWire.d.ts +0 -11
  80. package/dist/effortWire.js +0 -12
  81. package/dist/engineAgentPanelStore.d.ts +0 -169
  82. package/dist/engineAgentPanelStore.js +13 -293
  83. package/dist/engineCapReader.d.ts +0 -62
  84. package/dist/engineCapReader.js +1 -43
  85. package/dist/engineCapsCache.d.ts +0 -177
  86. package/dist/engineCapsCache.js +0 -199
  87. package/dist/engineCapsGenerationGuard.d.ts +0 -2
  88. package/dist/engineCapsGenerationGuard.js +0 -11
  89. package/dist/engineErrorCodes.d.ts +1 -316
  90. package/dist/engineErrorCodes.js +0 -427
  91. package/dist/engineHttpTools.d.ts +0 -29
  92. package/dist/engineHttpTools.js +0 -29
  93. package/dist/engineIdentity.d.ts +0 -83
  94. package/dist/engineIdentity.js +0 -88
  95. package/dist/engineInlineTaskStats.d.ts +0 -57
  96. package/dist/engineInlineTaskStats.js +1 -42
  97. package/dist/engineNoticeCodes.d.ts +0 -190
  98. package/dist/engineNoticeCodes.js +0 -182
  99. package/dist/engineSessionParam.d.ts +0 -30
  100. package/dist/engineSessionParam.js +0 -52
  101. package/dist/engineToolLabelStore.d.ts +0 -29
  102. package/dist/engineToolLabelStore.js +0 -31
  103. package/dist/engineWireSdk.d.ts +0 -90
  104. package/dist/engineWireSdk.js +0 -74
  105. package/dist/engineWireTarget.d.ts +0 -14
  106. package/dist/engineWireTarget.js +0 -39
  107. package/dist/env/localeGeo.d.ts +0 -12
  108. package/dist/env/localeGeo.js +2 -77
  109. package/dist/env/localeTag.d.ts +0 -34
  110. package/dist/env/localeTag.js +0 -32
  111. package/dist/env/uiLanguage.d.ts +0 -13
  112. package/dist/env/uiLanguage.js +0 -25
  113. package/dist/envFlag.d.ts +0 -37
  114. package/dist/envFlag.js +0 -40
  115. package/dist/executionLaneCapability.d.ts +0 -48
  116. package/dist/executionLaneCapability.js +0 -54
  117. package/dist/finalVerifyWire.d.ts +0 -67
  118. package/dist/finalVerifyWire.js +3 -43
  119. package/dist/fleet/fleetLedger.d.ts +0 -308
  120. package/dist/fleet/fleetLedger.js +10 -429
  121. package/dist/fleet/fleetProjection.d.ts +0 -240
  122. package/dist/fleet/fleetProjection.js +0 -189
  123. package/dist/fleet/fleetRowAgentType.d.ts +0 -6
  124. package/dist/fleet/fleetRowAgentType.js +1 -32
  125. package/dist/fleet/workflowSizeWarning.d.ts +0 -47
  126. package/dist/fleet/workflowSizeWarning.js +1 -46
  127. package/dist/fleetAgentPanelProjection.d.ts +0 -48
  128. package/dist/fleetAgentPanelProjection.js +8 -173
  129. package/dist/fleetTaskDesc.d.ts +0 -39
  130. package/dist/fleetTaskDesc.js +0 -69
  131. package/dist/forkWireCaps.d.ts +0 -23
  132. package/dist/forkWireCaps.js +1 -24
  133. package/dist/gateOutcome.d.ts +0 -140
  134. package/dist/gateOutcome.js +0 -85
  135. package/dist/gateVocabulary.d.ts +0 -114
  136. package/dist/gateVocabulary.js +1 -161
  137. package/dist/goalStopHook.d.ts +0 -127
  138. package/dist/goalStopHook.js +0 -178
  139. package/dist/headlessPermissionModeWire.d.ts +0 -76
  140. package/dist/headlessPermissionModeWire.js +1 -155
  141. package/dist/headlessReconnectWire.d.ts +0 -84
  142. package/dist/headlessReconnectWire.js +13 -67
  143. package/dist/hitl/approvalDecisionNoteAudit.d.ts +0 -49
  144. package/dist/hitl/approvalDecisionNoteAudit.js +0 -56
  145. package/dist/hitl/approvalOutcomeNote.d.ts +0 -2
  146. package/dist/hitl/approvalOutcomeNote.js +0 -20
  147. package/dist/hitl/approvalResolution.d.ts +0 -113
  148. package/dist/hitl/approvalResolution.js +0 -66
  149. package/dist/hitl/approvalsFeed.d.ts +0 -183
  150. package/dist/hitl/approvalsFeed.js +12 -243
  151. package/dist/hitl/armedGateRegistry.d.ts +0 -55
  152. package/dist/hitl/armedGateRegistry.js +0 -146
  153. package/dist/hitl/askGateWire.d.ts +0 -86
  154. package/dist/hitl/askGateWire.js +1 -95
  155. package/dist/hitl/askParkRowRouting.d.ts +0 -123
  156. package/dist/hitl/askParkRowRouting.js +1 -89
  157. package/dist/hitl/crashConverged.d.ts +0 -148
  158. package/dist/hitl/crashConverged.js +0 -214
  159. package/dist/hitl/editedRuleTextPrecheck.d.ts +0 -109
  160. package/dist/hitl/editedRuleTextPrecheck.js +0 -71
  161. package/dist/hitl/frameRouter.d.ts +0 -134
  162. package/dist/hitl/frameRouter.js +6 -378
  163. package/dist/hitl/gateIdentity.d.ts +0 -39
  164. package/dist/hitl/gateIdentity.js +0 -41
  165. package/dist/hitl/gateLedger.d.ts +0 -267
  166. package/dist/hitl/gateLedger.js +0 -121
  167. package/dist/hitl/hitlBridge.d.ts +7 -431
  168. package/dist/hitl/hitlBridge.js +7 -476
  169. package/dist/hitl/hitlHostSurface.d.ts +0 -150
  170. package/dist/hitl/hitlHostSurface.js +0 -169
  171. package/dist/hitl/livePendingAsk.d.ts +0 -91
  172. package/dist/hitl/livePendingAsk.js +0 -74
  173. package/dist/hitl/localAllowRule.d.ts +0 -62
  174. package/dist/hitl/localAllowRule.js +1 -33
  175. package/dist/hitl/parkOwnership.d.ts +0 -56
  176. package/dist/hitl/parkOwnership.js +0 -22
  177. package/dist/hitl/parkResolver.d.ts +3 -88
  178. package/dist/hitl/parkResolver.js +8 -349
  179. package/dist/hitl/parkRowBirthWait.d.ts +2 -26
  180. package/dist/hitl/parkRowBirthWait.js +3 -93
  181. package/dist/hitl/persistedRulesWire.d.ts +13 -358
  182. package/dist/hitl/persistedRulesWire.js +0 -310
  183. package/dist/hitl/planReviewWire.d.ts +4 -176
  184. package/dist/hitl/planReviewWire.js +9 -312
  185. package/dist/hitl/resumeRunningCard.d.ts +0 -105
  186. package/dist/hitl/resumeRunningCard.js +0 -105
  187. package/dist/hitl/sessionPolicyWire.d.ts +11 -191
  188. package/dist/hitl/sessionPolicyWire.js +0 -149
  189. package/dist/hitl/suspendedReopen.d.ts +3 -24
  190. package/dist/hitl/suspendedReopen.js +0 -14
  191. package/dist/hitl/toolApprovalWire.d.ts +5 -1308
  192. package/dist/hitl/toolApprovalWire.js +5 -945
  193. package/dist/hooksWireCaps.d.ts +0 -38
  194. package/dist/hooksWireCaps.js +0 -190
  195. package/dist/host.d.ts +0 -105
  196. package/dist/host.js +0 -33
  197. package/dist/hostEnv.d.ts +0 -14
  198. package/dist/hostEnv.js +0 -13
  199. package/dist/imagesWireCaps.d.ts +0 -21
  200. package/dist/imagesWireCaps.js +0 -22
  201. package/dist/index.d.ts +0 -134
  202. package/dist/index.js +0 -476
  203. package/dist/interactiveHalt.d.ts +5 -153
  204. package/dist/interactiveHalt.js +0 -111
  205. package/dist/interactiveToolsWire.d.ts +0 -62
  206. package/dist/interactiveToolsWire.js +1 -67
  207. package/dist/leaderConflict.d.ts +0 -59
  208. package/dist/leaderConflict.js +0 -48
  209. package/dist/limitsWire.d.ts +0 -125
  210. package/dist/limitsWire.js +2 -120
  211. package/dist/liveInitToolFace.d.ts +0 -77
  212. package/dist/liveInitToolFace.js +1 -109
  213. package/dist/liveModelCatalog.d.ts +0 -52
  214. package/dist/liveModelCatalog.js +0 -48
  215. package/dist/liveQuestionStore.d.ts +0 -87
  216. package/dist/liveQuestionStore.js +1 -56
  217. package/dist/mcpLiveness.d.ts +0 -151
  218. package/dist/mcpLiveness.js +0 -122
  219. package/dist/mcpPanel.d.ts +0 -104
  220. package/dist/mcpPanel.js +0 -49
  221. package/dist/mcpReconnect.d.ts +0 -58
  222. package/dist/mcpReconnect.js +1 -69
  223. package/dist/mcpWireCaps.d.ts +0 -55
  224. package/dist/mcpWireCaps.js +1 -13
  225. package/dist/memoryComplianceCapability.d.ts +3 -57
  226. package/dist/memoryComplianceCapability.js +0 -57
  227. package/dist/memoryEntriesWire.d.ts +6 -198
  228. package/dist/memoryEntriesWire.js +0 -144
  229. package/dist/memoryOriginCapability.d.ts +3 -53
  230. package/dist/memoryOriginCapability.js +0 -50
  231. package/dist/memorySpecWire.d.ts +0 -116
  232. package/dist/memorySpecWire.js +0 -150
  233. package/dist/model/catalog.d.ts +0 -111
  234. package/dist/model/catalog.js +0 -87
  235. package/dist/model/catalogLoader.d.ts +0 -114
  236. package/dist/model/catalogLoader.js +2 -139
  237. package/dist/model/modelSupplyRules.d.ts +1 -55
  238. package/dist/model/modelSupplyRules.js +0 -62
  239. package/dist/model/providerAuth.d.ts +0 -103
  240. package/dist/model/providerAuth.js +2 -38
  241. package/dist/model/providerCatalog.d.ts +0 -45
  242. package/dist/model/providerCatalog.js +0 -37
  243. package/dist/model/providerPresets.d.ts +0 -33
  244. package/dist/model/providerPresets.js +2 -91
  245. package/dist/model/tierVocabulary.d.ts +0 -31
  246. package/dist/model/tierVocabulary.js +0 -27
  247. package/dist/modelBudgetRule.d.ts +0 -39
  248. package/dist/modelBudgetRule.js +0 -39
  249. package/dist/modelCapabilityProbe.d.ts +0 -175
  250. package/dist/modelCapabilityProbe.js +0 -147
  251. package/dist/modelWireCaps.d.ts +0 -13
  252. package/dist/modelWireCaps.js +0 -13
  253. package/dist/notifications.d.ts +0 -233
  254. package/dist/notifications.js +14 -492
  255. package/dist/oneShotWireCaps.d.ts +0 -34
  256. package/dist/oneShotWireCaps.js +0 -35
  257. package/dist/ownKey.d.ts +0 -33
  258. package/dist/ownKey.js +0 -33
  259. package/dist/panelRunningHistory.d.ts +0 -28
  260. package/dist/panelRunningHistory.js +0 -43
  261. package/dist/peerFrames.d.ts +0 -71
  262. package/dist/peerFrames.js +0 -168
  263. package/dist/peerLaneCapability.d.ts +0 -44
  264. package/dist/peerLaneCapability.js +0 -52
  265. package/dist/permissionRuleIssue.d.ts +0 -30
  266. package/dist/permissionRuleIssue.js +0 -78
  267. package/dist/permissionRulesWriteCapability.d.ts +0 -46
  268. package/dist/permissionRulesWriteCapability.js +0 -54
  269. package/dist/permissionWireCaps.d.ts +0 -37
  270. package/dist/permissionWireCaps.js +0 -37
  271. package/dist/postureKnob.d.ts +0 -71
  272. package/dist/postureKnob.js +0 -86
  273. package/dist/principalWire.d.ts +0 -17
  274. package/dist/principalWire.js +0 -17
  275. package/dist/printToolResultFrame.d.ts +0 -100
  276. package/dist/printToolResultFrame.js +0 -33
  277. package/dist/promptProfileWireCaps.d.ts +0 -13
  278. package/dist/promptProfileWireCaps.js +0 -13
  279. package/dist/readFacePosture.d.ts +0 -43
  280. package/dist/readFacePosture.js +0 -46
  281. package/dist/request/printNotification.d.ts +0 -20
  282. package/dist/request/printNotification.js +0 -55
  283. package/dist/request/taskRequest.d.ts +0 -249
  284. package/dist/request/taskRequest.js +10 -496
  285. package/dist/resumeRefusalCopy.d.ts +0 -136
  286. package/dist/resumeRefusalCopy.js +1 -117
  287. package/dist/retainBackgroundWireCaps.d.ts +0 -48
  288. package/dist/retainBackgroundWireCaps.js +0 -48
  289. package/dist/retryStatus.d.ts +2 -221
  290. package/dist/retryStatus.js +0 -107
  291. package/dist/rewindWireCaps.d.ts +0 -27
  292. package/dist/rewindWireCaps.js +0 -24
  293. package/dist/runCancelContext.d.ts +1 -20
  294. package/dist/runCancelContext.js +0 -34
  295. package/dist/runTerminal.d.ts +0 -273
  296. package/dist/runTerminal.js +0 -177
  297. package/dist/sandboxWire.d.ts +0 -38
  298. package/dist/sandboxWire.js +0 -82
  299. package/dist/scenarioWire.d.ts +0 -60
  300. package/dist/scenarioWire.js +0 -68
  301. package/dist/scratchpadWireCaps.d.ts +0 -11
  302. package/dist/scratchpadWireCaps.js +0 -32
  303. package/dist/sdkWireTransit.d.ts +0 -38
  304. package/dist/sdkWireTransit.js +0 -30
  305. package/dist/seam.d.ts +18 -853
  306. package/dist/seam.js +0 -52
  307. package/dist/seatContract.d.ts +0 -555
  308. package/dist/seatContract.js +5 -304
  309. package/dist/selfOrchestrationDenial.d.ts +0 -189
  310. package/dist/selfOrchestrationDenial.js +0 -162
  311. package/dist/selfOrchestrationWireCaps.d.ts +0 -38
  312. package/dist/selfOrchestrationWireCaps.js +0 -38
  313. package/dist/sessionMap.d.ts +0 -60
  314. package/dist/sessionMap.js +0 -37
  315. package/dist/sessionMemoryStatus.d.ts +11 -114
  316. package/dist/sessionMemoryStatus.js +0 -112
  317. package/dist/sessionModelLatch.d.ts +0 -29
  318. package/dist/sessionModelLatch.js +0 -40
  319. package/dist/sessionPolicyCapability.d.ts +3 -53
  320. package/dist/sessionPolicyCapability.js +0 -52
  321. package/dist/sessionSlot.d.ts +0 -26
  322. package/dist/sessionSlot.js +0 -17
  323. package/dist/skillsWireCaps.d.ts +0 -87
  324. package/dist/skillsWireCaps.js +0 -38
  325. package/dist/sqlEngineCapability.d.ts +0 -118
  326. package/dist/sqlEngineCapability.js +0 -134
  327. package/dist/sseIdleTriage.d.ts +0 -79
  328. package/dist/sseIdleTriage.js +1 -80
  329. package/dist/steering.d.ts +0 -54
  330. package/dist/steering.js +0 -63
  331. package/dist/subagent/engineCompactWire.d.ts +0 -34
  332. package/dist/subagent/engineCompactWire.js +4 -134
  333. package/dist/subagent/engineDelegatedPrompt.d.ts +0 -31
  334. package/dist/subagent/engineDelegatedPrompt.js +1 -103
  335. package/dist/subagent/engineRowStopGate.d.ts +0 -20
  336. package/dist/subagent/engineRowStopGate.js +0 -49
  337. package/dist/subagent/engineSubagentOutput.d.ts +0 -7
  338. package/dist/subagent/engineSubagentOutput.js +1 -51
  339. package/dist/subagent/engineSubagentResume.d.ts +2 -279
  340. package/dist/subagent/engineSubagentResume.js +2 -129
  341. package/dist/subagent/engineSubagentSteer.d.ts +0 -26
  342. package/dist/subagent/engineSubagentSteer.js +0 -63
  343. package/dist/subagent/engineSubagentTail.d.ts +0 -38
  344. package/dist/subagent/engineSubagentTail.js +2 -110
  345. package/dist/subagent/engineTaskHandleWire.d.ts +11 -65
  346. package/dist/subagent/engineTaskHandleWire.js +20 -131
  347. package/dist/subagent/subagentOwnerAbsence.d.ts +0 -2
  348. package/dist/subagent/subagentOwnerAbsence.js +0 -25
  349. package/dist/subagentContentStore.d.ts +3 -260
  350. package/dist/subagentContentStore.js +7 -540
  351. package/dist/systemReminderTag.d.ts +0 -49
  352. package/dist/systemReminderTag.js +0 -61
  353. package/dist/toolResult.d.ts +1 -211
  354. package/dist/toolResult.js +1 -358
  355. package/dist/toolRoster.d.ts +0 -140
  356. package/dist/toolRoster.js +0 -66
  357. package/dist/typePins.d.ts +0 -46
  358. package/dist/types/engineState.d.ts +0 -71
  359. package/dist/types/engineState.js +0 -16
  360. package/dist/ultracodeWireCaps.d.ts +0 -75
  361. package/dist/ultracodeWireCaps.js +0 -92
  362. package/dist/unrefTimer.d.ts +0 -27
  363. package/dist/webSearchBackendCapability.d.ts +0 -72
  364. package/dist/webSearchBackendCapability.js +0 -79
  365. package/dist/webSearchWireCaps.d.ts +0 -37
  366. package/dist/webSearchWireCaps.js +0 -34
  367. package/dist/websearch/searchProviderPresets.d.ts +0 -81
  368. package/dist/websearch/searchProviderPresets.js +0 -27
  369. package/dist/wireErrorTriage.d.ts +4 -160
  370. package/dist/wireErrorTriage.js +0 -171
  371. package/dist/wireRefusalCopy.d.ts +0 -28
  372. package/dist/wireRefusalCopy.js +0 -28
  373. package/dist/workflow.d.ts +0 -40
  374. package/dist/workflow.js +0 -52
  375. package/dist/workflowClient.d.ts +0 -122
  376. package/dist/workflowClient.js +8 -360
  377. package/dist/workflowMonitor.d.ts +2 -72
  378. package/dist/workflowMonitor.js +0 -26
  379. package/dist/writeProtectionCapability.d.ts +0 -112
  380. package/dist/writeProtectionCapability.js +0 -109
  381. package/docs/INTEGRATION-CLIENTS.md +62 -1
  382. package/package.json +1 -1
@@ -1,324 +1,51 @@
1
- /**
2
- * src/runTerminal.ts — 一次 run **怎么结束的**:两代 wire 字节 → 一个带标读数(0.60.0)。
3
- *
4
- * ── 上游形变(engine ≥7.64.0 / sdk 8.4.0;wire BREAKING)────────────────────────────────────
5
- * 7.63.0 及以前,终局要从并列的**八个可选平面键**里拼:`status` / `errorCode` / `errorMessage` /
6
- * `blockedReason` / `checkpointToken` / `checkpointId` / `checkpointGate` / `workspaceRestoreMode`。
7
- * 哪些组合合法只活在引擎那条 if/else 阶梯里,读的人只能靠**缺席**推断。7.64.0 起它是**形状**:
8
- * `TaskResult.terminal`(四臂 `completed | failed | blocked | paused`),八个平面键从型面整删。
9
- *
10
- * ── 本模块存在的理由:两代字节,一个读器 ─────────────────────────────────────────────────────
11
- * 🔴 **这不是「留一条旧引擎兼容读」**(那条本批刻意不留:peer 地板抬到 `>=8.4.0`,7.63.0 及以前的
12
- * 引擎不在本版支持窗内)。本模块的第二代臂认的是**同一台 ≥7.64.0 引擎**在两条路上真会送来的
13
- * 扁平字节,两条都有出处:
14
- * ① **读盘面**(上游逐字点名):`GET /v1/runs/:id` 的 `result` 是存储 blob 的**逐字透传**
15
- * (server 不补 `terminal`),durable 账本回放出来的 `done` 行同理 —— 一台跨 7.64.0 升级过的
16
- * 部署上,升级**之前**落盘的那些行读出来仍是平面形;
17
- * ② **拒绝信封**:SSE 提交腿的 409(`conflict.session_active_run`)是 **server 自己的**拒绝帧、
18
- * 不是引擎结果,这次形变没动它 —— 它带扁平 `status:"failed"` + `errorCode`,不带 `terminal`;
19
- * ③ **同步提交直接撞上暂停**(engine 7.64.0 真机黑盒 + server 回帖确认):`POST /v1/tasks`
20
- * 若当场停在一道审批门上,200 回体是 **server 自造的一只形** ——
21
- * `{ taskId, sessionId, status: "suspended" | "needs_review" }`,**既没有退役的八个平面键、
22
- * 也没有 `terminal`**,它**不是** `TaskResult`(是独立于它的另一个体)。它既不是历史字节
23
- * 也不是拒绝信封,是**活流腿上的第三个来源**,而且它说的是一句正面事实(「这条 run park 了」)。
24
- * 🔴 因此这一形上**连门都没有**(`checkpointGate` / `terminal.paused.gate` 两处皆缺)——
25
- * 「这是复核还是交互作答」只能从那个 `status` 词读,见 {@link RunTerminalPausedRead.flatStatus}。
26
- * ⇒ 判别位就是上游钉的那一个:**`"terminal" in result`**。在场 = 因由形,缺席 = 扁平形。
27
- * 🔴 **「缺席」不许折成 `completed` / `failed`**(真机黑盒点名的那条边界):`terminal` 缺席时,
28
- * 读器要么按扁平词给出**对应的那一臂**(`suspended` ⇒ paused,不是 completed 也不是 failed),
29
- * 要么在连词都没有时返回 `null`(见 {@link readRunTerminal} 的 `null` 语义)。**非终态**词
30
- * (`running` / 未来的排队词)落 `unknown` 臂 —— 那是「这不是一个我认得的终局」,同样**不是**成功。
31
- * `GET /v1/runs/:id` 对**暂停中**的 run 读不到 `result`,那一格连载体都没有,本读器答 `null`。
32
- * 🔴 **两代读数在出口上带标**({@link RunTerminalRead.plane}):不带标就等于对消费端说「这两种字节
33
- * 没有区别」,而它们在**能不能出现新键**这件事上区别很大(平面形是停产的写者留下的历史字节,
34
- * 永远不会长出新位)。带标也让门可以对「哪一条腿读到了哪一代」下断言。
35
- *
36
- * ── 判据纪律 ────────────────────────────────────────────────────────────────────────────────
37
- * 🔴 **不认识的终态词绝不折成成功**(本仓 [884]A1 / [909]B1 两次实锤事故的常驻结论):四臂之外的
38
- * `terminal.kind`、平面形里四词之外的 `status`,一律落 {@link RunTerminalRead} 的 `unknown` 臂并
39
- * **逐字带回那个词**,由消费点渲成「非成功终态」。整个读器只有一条路返回 `null`:**连终态词都
40
- * 没有**(mock 车道 / 不带 status 的旧合成帧)—— 那一格的既有语义(落成功臂)由消费点保留。
41
- * 🔴 **`code` 结构上只属于失败**:因由形下 `completed` / `blocked` / `paused` 上**写不出**码。
42
- * `blocked` / `paused` / `unknown` 三臂仍声明了 `code?`,那一位**只可能**来自平面形盘上字节
43
- * (旧写者把 `errorCode` 与 `status` 平铺,`review.pending` 就骑在 park 行上)—— 丢掉它等于在
44
- * 回放历史行时把盘上真有的事实抹掉。因由形上它恒缺席,判据用 `plane`。
45
- * 🔴 **`token` 席位永不上 wire**:paused 因由与 `failed.nestedPause` 都不带恢复凭据(上游在两条
46
- * 够得着的路径上摘它)。本读器同样一个字节都不碰它,也不给它留位。
47
- * 🔴 **不复制上游的投影**:本模块**不**提供「因由 → 五词 `status`」的兼容投影。同一个事实在这条
48
- * wire 上有两个真源之后,消费端会分成「读因由的」和「读投影的」两派,而下一次形变时后者全部
49
- * 无声地错(sdk 顶注逐字同规)。要旧词的消费点自己按 `kind` 分支。
50
- */
51
1
  import type { CheckpointGate } from '@sema-agent/sdk';
52
- /**
53
- * 这条读数出自哪一代字节。
54
- * · `cause` —— 现行的带标因由形(`result.terminal` 在场);
55
- * · `flat` —— 扁平形。**两个来源同形不可分**,所以刻意共用一个词:①升级前落盘、由读盘面逐字
56
- * 回放的历史行;②server 自己的 409 拒绝信封(它从来就是扁平的,这次形变没动它)。
57
- * 🔴 拿 `stats` 在场性去分这两源是**假判据**:本包的抢救腿(从 run row 合成的 done 帧)本来就
58
- * 可能不带 `stats`(见 `terminalToSdkResult` 的 ADAPTER-1/-2 收口注),那条判据会把它误判成拒绝
59
- * 信封。两源的**投影处置完全相同**,所以不分反而是诚实的。
60
- */
61
2
  export type RunTerminalPlane = 'cause' | 'flat';
62
- /** paused 因由的**结构视图**(`token` 席位不在这里,也不在 wire 上)。 */
63
3
  export interface RunTerminalPause {
64
- /** **哪一道**暂停 —— 谁/什么必须来恢复它。开集读(词表属主是引擎)。 */
65
4
  gate?: CheckpointGate;
66
- /** 这次暂停的**非密**稳定身份;pre-identity 的老 checkpoint 上缺席。 */
67
5
  checkpointId?: string;
68
- /**
69
- * 被暂停任务的远端工作区**怎么回来**:`snapshot`(VM 挂起成快照)/ `park_only`(环境自陈不可
70
- * 挂起 —— 机器继续跑、继续花钱)。**缺席 = 进程内暂停**(没有远端工作区被捕获)。
71
- * 🔴 型面**不收窄成那两个词**:词表属主是引擎,抄一份会把新词吞成缺席。
72
- */
73
6
  restoreMode?: string;
74
7
  }
75
- /**
76
- * paused 臂的整只读数 —— {@link RunTerminalPause} 三座 + 判别位。
77
- *
78
- * 🔴 **抽名而不是写成交叉形**(`{…} & RunTerminalPause`):交叉形的左操作数是一个内联匿名形,
79
- * typeshape 门的 B4 棘轮按设计把它算进「导出签名里的内联匿名形」——而具名 interface 正是那条
80
- * 棘轮点名的替代品。`extends` 同时保住了三座的**单一真源**(顶层 paused 臂与
81
- * `failed.nestedPause` 读的是同一个形,两处各写一份必漂)。
82
- */
83
8
  export interface RunTerminalPausedRead extends RunTerminalPause {
84
9
  kind: 'paused';
85
10
  plane: RunTerminalPlane;
86
- /** 见 {@link RunTerminalRead} 顶注:只可能来自扁平形盘上字节。 */
87
11
  code?: string;
88
- /**
89
- * 扁平形上那个退役的 status 词(`suspended` / `needs_review`)—— **因由形上恒缺席**。
90
- *
91
- * 🔴 **它不是「留一条兼容读」,是这一形上唯一存在的信号**(server 回帖确认):同步提交腿命中
92
- * park 时,server 自造的 200 体 `{taskId, sessionId, status}` **连门都不带** ⇒
93
- * {@link runTerminalGateKind} 在那一形上恒 `undefined`,「这是复核还是交互作答」除了这个词
94
- * 再没有第二个来源。把它丢掉 = 那一形的 plan-review 卡与终帧措辞**全部**落到「交互作答」那一句上。
95
- * 🔴 仍然**不做因由 → 五词 status 的反向投影**:本位只在扁平形上原样带回读到的那一个词,
96
- * 因由形上不铸(读器一个词都不猜)。
97
- */
98
12
  flatStatus?: string;
99
13
  }
100
- /**
101
- * 一次 run 的终局读数。`kind` 是判别位。
102
- *
103
- * ⚠️ 与 sdk `TerminalCause` 的差别只有两处,都是**防御读**逼出来的:①多一条 `unknown` 臂
104
- * (四臂之外的词不许落成功);②`blocked` / `paused` / `unknown` 上多一个 `code?`(平面形盘上字节
105
- * 才可能有,见模块顶注)。其余逐位同义。
106
- */
107
14
  export type RunTerminalRead = {
108
15
  kind: 'completed';
109
16
  plane: RunTerminalPlane;
110
17
  } | {
111
18
  kind: 'failed';
112
19
  plane: RunTerminalPlane;
113
- /** 这次失败带的**机器码**(开集,点分命名空间;缺席 = 这次失败本来就没有码)。 */
114
20
  code?: string;
115
- /** 人类可读的失败文本;没有就缺席。 */
116
21
  message?: string;
117
- /**
118
- * 这次失败**顶替的那次耐久暂停** —— 只在**嵌套硬边界**(verify / cascade)上出现:嵌套腿停在
119
- * 一道耐久门上而编排器驱动不了 resume,于是在它的边界上如实报 failed,同时把那次 park 的因由
120
- * 整只带在这里。引擎自己组装的失败上恒缺席;平面形上**结构性缺席**(旧写者没有这个位)。
121
- */
122
22
  nestedPause?: RunTerminalPause;
123
23
  } | {
124
24
  kind: 'blocked';
125
25
  plane: RunTerminalPlane;
126
- /** agent 为什么完不成(治理判决不是失败)。缺席 = 引擎没给因由,**不是**「没被挡」。 */
127
26
  reason?: string;
128
- /** 见模块顶注:只可能来自平面形。 */
129
27
  code?: string;
130
28
  } | RunTerminalPausedRead | {
131
- /** 四臂之外的终态词、**或一座读不出的因由** —— 两者都**绝不折成成功**。 */
132
29
  kind: 'unknown';
133
30
  plane: RunTerminalPlane;
134
- /**
135
- * 那个本读器不认识的词(因由形取 `terminal.kind`,扁平形取 `status`),逐字。
136
- * 🔴 **缺席 = 那一座在场但整个读不出**(`terminal` 是 `null` / 数组 / 标量,或它的 `kind`
137
- * 不是非空串)。这一格与「四臂之外的一个词」是两件事,所以刻意用**这一位的缺席**分开:
138
- * 前者消费点只能说「一座读不出的终局」,后者能把那个词逐字报出来。
139
- * ⚠️ 它**不是**「没有终局」——那一格由 {@link readRunTerminal} 返 `null` 表达。
140
- */
141
31
  word?: string;
142
32
  code?: string;
143
33
  message?: string;
144
34
  };
145
- /**
146
- * `done.result` / run row 的 `result` → 终局读数。**绝不抛**;读不出终态词 ⇒ `null`。
147
- *
148
- * 🔴 `null` **只有一个意思**:这份载体上连终态词都没有(mock 车道 / 不带 status 的旧合成帧)。
149
- * 它**不是**「成功」也**不是**「未知终态」—— 消费点对这一格的既有处置(落成功臂)由消费点自己
150
- * 保留,本读器不替它下这个断言。
151
- * 🔴 **「因由座在场但读不出」绝不返 `null`**(异源对抗复审 [medium] 采纳,真病):`terminal: null` /
152
- * `{}` / `[]` / `{kind: 7}` 这几形若返 `null`,消费点会把它当成「连终态词都没有」而落**成功臂**
153
- * —— 一条明确 park 着的 run 被投影成空成功,正是 [884]A1 / [909]B1 两次事故的形状。⇒ 这几形
154
- * 一律落 `unknown` 臂(`word` 缺席 = 那个词本身读不出),消费点照旧渲「非成功终局」。
155
- * ⚠️ 混合载体(既有坏 `terminal` 又有平面 `status`)同样落这里:判别位是**因由座在场性**,
156
- * 因由在场就不再回头读平面键(留一条回落 = 同一事实两个真源,而坏的那一份才是当代写者写的)。
157
- * 🔴 判别位是 **`"terminal" in result`**(上游钉的那一个),不是 `status` 的在场性:拒绝信封与
158
- * 平面盘上字节**都**带 `status`,拿它当第一步判别位方向是脆的(sdk 顶注逐字点名)。
159
- */
160
35
  export declare function readRunTerminal(result: unknown): RunTerminalRead | null;
161
- /**
162
- * 「这次暂停要的是**一次复核**」的门种 —— **呈现措辞**这条轴上的单一词表(不是路由表)。
163
- *
164
- * 🔴 与 `activeRunSelfHeal.PLAN_REVIEW_GATE_KINDS`(`plan_review` / `dry_run_review`)**刻意不同集**,
165
- * 差别有出处:那张表答的是「**重开臂能不能驱动它**」(两个成员共用同一个 resume 入口
166
- * `/v1/assistant/tasks/{taskId}/plan_review`),而本表答的是「**跟用户怎么说**」。门种
167
- * `needs_review`(design/76 dry-run/shadow 的 POST-prediction 复核)没有那个 resume 入口,所以
168
- * 它不在路由表里 —— 但它同样是**一次复核**而不是「一次交互作答」,措辞轴上必须在。
169
- * 🔴 两张表的包含关系由常驻门钉死(本表 ⊇ 路由表):路由表加员而本表没跟 ⇒ 新门种的终帧会被说成
170
- * 「在等一次交互作答」,那正是 [884]A1 那句文案要防的错话。
171
- * 🔴 **开集读**:表外门种一律落「交互作答」那一句 —— 它是两句里更宽的那一句(指的出路对两族都有效)。
172
- */
173
36
  export declare const REVIEW_PARK_GATE_KINDS: readonly string[];
174
- /**
175
- * 这次暂停停在**哪一种门**上(开集读;缺席 = 门没报 kind)。
176
- * 消费点要分「plan 复核 park」与「审批/提问 park」时读它,**不要**再去找退役的 `status` 五词。
177
- */
178
37
  export declare function runTerminalGateKind(read: RunTerminalRead | null): string | undefined;
179
- /** 这次暂停扣着**哪个工具**(开集读;tool-less park 上缺席)。 */
180
38
  export declare function runTerminalGateToolName(read: RunTerminalRead | null): string | undefined;
181
- /**
182
- * 这次终局的**机器码**(开集)。`failed` 臂是它的结构归属;`blocked` / `paused` / `unknown` 上
183
- * 只可能来自扁平形盘上字节(见模块顶注)。`completed` 上恒 `undefined`。
184
- */
185
39
  export declare function runTerminalCode(read: RunTerminalRead | null): string | undefined;
186
- /**
187
- * 这次暂停在等**一次复核**(而不是一次交互作答)吗。**两个来源,缺一不可**:
188
- * · **因由形** —— 门种 ∈ {@link REVIEW_PARK_GATE_KINDS};
189
- * · **扁平形** —— {@link RunTerminalPausedRead.flatStatus} 是 `needs_review`。
190
- * 🔴 这一条不是冗余:server 自造的**同步 park 200 体**上连门都没有(见 `flatStatus` 顶注),
191
- * 只读门种会让那一形**全部**落到「交互作答」那一句上 —— plan-review 卡不弹、终帧措辞说错话。
192
- * 非 paused 的读数、以及两个来源都答不出的 paused,一律 `false`(更宽的那一句兜底)。
193
- */
194
40
  export declare function isReviewPark(read: RunTerminalRead | null): boolean;
195
- /**
196
- * ══════════════════════════════════════════════════════════════════════════════════════════════
197
- * 0.68.0 🔴 BREAKING —— 终态词**两表分源**(L-247;core [7067] @cli 行顺答)
198
- * ══════════════════════════════════════════════════════════════════════════════════════════════
199
- * 修前本模块只有一张 `TERMINAL_STATUSES = ['completed','failed','killed','blocked']`,把**两个不同
200
- * 属主**的词表合成了一张:
201
- * · `completed` / `failed` / `blocked` 属 **core 的终局因由闭集**(`TerminalCause["kind"]`,
202
- * `terminal-cause.ts`;core 那边第四员是 `paused`);
203
- * · `killed` 属 **server 的 run 行状态面**(core 的因由集里**根本没有这个词** —— core [7067] 逐字:
204
- * 「`killed` 不是 core 词 —— 壳手抄四词里的 `killed` 来自 server run status 面」)。
205
- * 合成一张的后果是两边加员时都读不出该改哪儿:core 加第五个因由(闭集加员会在 wire 清单的
206
- * `closedSetMembers` 上具名)与 server 加一个行状态词,在一张表上长得一模一样,于是消费方要么
207
- * 把新词折进已知词(不安全侧,B-079① 同形),要么两边都漏。
208
- *
209
- * ⇒ 两张表**按属主分开**,各自带自己的对账物:
210
- * · {@link TERMINAL_CAUSE_KINDS} —— core 闭集的镜像,门对**实装 devDep core** 双向对账;
211
- * · {@link RUN_TERMINAL_STATUSES} —— server run 行状态面的终态词,门对 sdk 真字节钉 + 反向钉
212
- * 「`killed` 不在 core 因由集里」。
213
- *
214
- * 🔴 **为什么是镜像而不是 `export … from '@sema-agent/core'`**(与 `engineNoticeCodes.ts` /
215
- * `autoModeUnavailable.ts` / `toolResult.ts` 三处逐字同一条理由,再加两条本表独有的):
216
- * ① `@sema-agent/core` 既不是本包的 peer 也不是 runtime dep —— 本包的 `.d.ts` 一旦引用它,
217
- * 装了本包却没装 core 的下游当场编译不过;`portability` 门的 `EXPECTED_PACKAGES_INDEX` 是
218
- * **等值门**(闭包外部包恒等于 `{diff, @sema-agent/sdk}`)且 ③ 段拿 esbuild
219
- * `--platform=browser` 真打一次包,一条值级边会把整台引擎焊进 web/desktop 的产物;
220
- * ② core **没有导出**任何名为「终局因由闭集」的元组:它只导出 `TERMINAL_CAUSE_IS_REPLAYABLE`
221
- * (一张 `Record<kind, boolean>` 的处置表)与谓词 `isTerminalCauseKind`,而且这两件**都不在
222
- * core 的 barrel 上**(`dist/index.d.ts` 只 re-export 了**类型** `TerminalCause`)⇒
223
- * 「直接 re-export 那个闭集」在今天的上游字节上不存在可 re-export 的符号。
224
- * ⇒ 镜像 + 机器对账(本仓对「不自抄」的既定机制):这张表是一份**抄件**不是意见,
225
- * `scripts/run-terminal-word-source-test.mjs` 拿 core 那张处置表的**键集**逐词双向钉,
226
- * core 一动这里就先红。
227
- */
228
- /**
229
- * **core 终局因由**的 kind 闭集(core `TerminalCause["kind"]` 逐词镜像;顺序同源 =
230
- * `dist/core/terminal-cause.js` 的 `TERMINAL_CAUSE_IS_REPLAYABLE` 键序)。
231
- *
232
- * 四员各答「这条 run 为什么结束」:
233
- * · `completed` —— 跑完了(用户干净 halt 也算,见 `TaskResult.haltedByUser`);
234
- * · `failed` —— 限额 / provider 失败 / abort / 产出不合法……;
235
- * · `blocked` —— **agent 自报**走不下去(`report_blocked`)。上游逐字:它是 TERMINAL 的,
236
- * 「the leg is over and it waits for nobody」;
237
- * · `paused` —— 一次耐久暂停提交了 checkpoint,**run 可以被恢复**。🔴 它在因由面上是一个
238
- * 合法的 kind,但它**不是**「run 结束了」——所以它**不在** {@link RUN_TERMINAL_STATUSES} 里。
239
- * 这正是两张表必须分源的最硬那一格:同一个词在两张面上答的是两个问题。
240
- *
241
- * 🔴 **集外词的读法**:core 加第五个因由词时,wire 清单的 `closedSetMembers` 必须列、发车帖必须
242
- * 具名(core [7067] 逐字规矩)。消费方按闭集读 —— **集外词整键缺席,绝不折成已知词**。
243
- * 🔴 形制:`Object.freeze` 的**字面元组**(`as const`),不是 `readonly string[]` —— 后者在类型面
244
- * 交不出成员字面量,端就只能自己再抄一遍四个词(L-247 的病根)。冻结是为了让公面消费者
245
- * `.push()` 改不动判定源(同 `RESUME_RETRY_LATER_CODES` 的已定谳病形)。
246
- */
247
41
  export declare const TERMINAL_CAUSE_KINDS: readonly ["completed", "failed", "blocked", "paused"];
248
- /** {@link TERMINAL_CAUSE_KINDS} 的成员型(端的型面改**派生**,不再手抄词)。 */
249
42
  export type TerminalCauseKind = (typeof TERMINAL_CAUSE_KINDS)[number];
250
- /**
251
- * 一个词是不是 core 的终局**因由** kind({@link TERMINAL_CAUSE_KINDS} 的成员)。
252
- *
253
- * 🔴 **它不答「这条 run 结束了没有」** —— `paused` 是合法成员而 run 还能被恢复。要那一问请读
254
- * {@link isTerminalStatus}(server 行状态面)或 {@link readRunTerminal} 的因由臂。
255
- * 🔴 非串 / 空串 / 集外词 ⇒ `false` = 「这不是本端认得的因由词」,**不是**「成功」。
256
- */
257
43
  export declare function isTerminalCauseKind(kind: unknown): kind is TerminalCauseKind;
258
- /**
259
- * **server run 行状态面**的「非成功终局」词(闭集;0.65.0 新铸,L-215② / core [6908];
260
- * 0.68.0 随 L-247 更名 `TERMINAL_NOT_SUCCESS_STATUSES` → 本名,理由见本段顶注的分源说明)——
261
- * 「这条 run **不会再自己动了**,而且它没有成功」。
262
- *
263
- * 🔴 三员各有出处,且 **`blocked` 与 `suspended`/`needs_review` 的分界是本表存在的全部理由**
264
- * (core [6908] 定谳):
265
- * · `failed` —— 引擎自报失败;
266
- * · `killed` —— 外力终止。🔴 **这一员是本表与 {@link TERMINAL_CAUSE_KINDS} 的分水岭**:
267
- * core 的因由闭集里没有它,它是 server run 行状态面自己的词(sdk `FleetTaskStatus` /
268
- * `SessionNotifyStatus` 上都在,`RunStatus` 上今天还没有 —— 见 §33 的登记);
269
- * · `blocked` —— **agent 自报的终态**:它自己判定这条 run 走不下去了(core `terminal.blocked`
270
- * 的 `reason` 是它的说明)。🔴 它**不是「等人」** —— 这正是修前被漏掉的那一格;
271
- * · 🔴 **`suspended` / `needs_review` 刻意不在表里**:那两个词是**等一次人的决定**,run 还活着、
272
- * 决定给了就继续跑。把它们读成「非成功终局」会把一条**正等着你**的 run 在面板上判死,
273
- * 而用户从此不知道有一张卡在等他 —— 与本表要修的方向相反的同一类错。
274
- *
275
- * 🔴 形制:`Object.freeze` 的**字面元组**,不是 `ReadonlySet`(同 `RESUME_RETRY_LATER_CODES` 的
276
- * 已定谳病形:`ReadonlySet` 只在类型面只读,而判定查的就是公面上这同一个实例)。
277
- */
278
44
  export declare const RUN_TERMINAL_NOT_SUCCESS_STATUSES: readonly ["failed", "killed", "blocked"];
279
- /** {@link RUN_TERMINAL_NOT_SUCCESS_STATUSES} 的成员型(端的型面改派生,不再手抄三词)。 */
280
45
  export type RunTerminalNotSuccessStatus = (typeof RUN_TERMINAL_NOT_SUCCESS_STATUSES)[number];
281
- /**
282
- * 一个状态词是不是**非成功终局**({@link RUN_TERMINAL_NOT_SUCCESS_STATUSES} 的成员)。
283
- *
284
- * **单铸谓词**(L-215②):本包的通知链(面板 settle 的 `isError` 位)与三端各自的后台白名单
285
- * 读的必须是**同一个判据** —— 修前包里是一处内联的 `status === 'failed' || status === 'killed'`,
286
- * 壳里另有一份白名单,两处各写各的,于是 core 加 `blocked` 那天两边一起漏,而漏的后果是
287
- * **面板把一条自报失败的 run 渲成成功**。
288
- *
289
- * 🔴 **开集外的词答 `false`,而 `false` 不等于「成功」**:它只说「这个词不在本端认得的非成功终局
290
- * 表里」。消费点要判「成功」必须去读成功那一侧的正向证据({@link readRunTerminal} 的
291
- * `completed` 臂),不能拿本谓词的取反当成功判据 —— 那正是「不认识的终态词折成成功」那条
292
- * 已定谳的事故形。
293
- * 🔴 非串 / 空串 ⇒ `false`(同上:是「答不出」,不是「成功」)。
294
- */
295
46
  export declare function isTerminalNotSuccess(status: unknown): status is RunTerminalNotSuccessStatus;
296
- /**
297
- * **server run 行状态面**的终局状态词(闭集;0.65.0 新铸,0.68.0 随 L-247 更名 `TERMINAL_STATUSES`
298
- * → 本名)—— 成功那一员加上 {@link RUN_TERMINAL_NOT_SUCCESS_STATUSES} 的三员。答的是「这条 run
299
- * 还会不会自己动」,与上一张表答的「它成没成功」是**两个问题**,所以两张表分开、后者由前者派生
300
- * (加员只有一处要改)。
301
- *
302
- * 🔴 同样**不含** `suspended` / `needs_review`:那两个词是「等一次人的决定」——run 没有结束。
303
- * 🔴 也**不含** core 因由面的 `paused`:那是另一张表的词,而且它在语义上恰好与本表相反
304
- * ({@link TERMINAL_CAUSE_KINDS} 顶注)。
305
- */
306
47
  export declare const RUN_TERMINAL_STATUSES: readonly ["completed", "failed", "killed", "blocked"];
307
- /** {@link RUN_TERMINAL_STATUSES} 的成员型(端的型面改派生,不再手抄四词 —— L-247 的修形)。 */
308
48
  export type RunTerminalStatus = (typeof RUN_TERMINAL_STATUSES)[number];
309
- /**
310
- * 一个状态词是不是**终局**({@link RUN_TERMINAL_STATUSES} 的成员)。
311
- *
312
- * 用在「这条通知/这条行是不是可以收摊了」这一问上(通知去重的 seed 扫描、后台行 settle 门)。
313
- * 🔴 表外词 ⇒ `false` = 「本端认不出这是个终局」,**不是**「它还在跑」;要判「在跑」请读正向证据。
314
- */
315
49
  export declare function isTerminalStatus(status: unknown): status is RunTerminalStatus;
316
- /**
317
- * 0.72.12 CC-50:**通知**(`task_notification.status`)自己的终态词表 —— 引擎 `TaskNotificationStatus` 五词里的四个终态
318
- * (`completed` / `failed` / `killed` / `cancelled`;第五词 `event` 是唯一非终态 = 仍在跑的 Monitor 批)逐字镜像。
319
- * 🔴 它与 run 级 {@link RUN_TERMINAL_STATUSES} 是**两张表**(那张有 `blocked`、没有 `cancelled`):通知说「已取消」是明确终态,
320
- * 借 run 级表会把它读成「认不出」(异源对抗复审抓出)。住在词表属主文件里,src 别处零内联(终态词汇门 D3)。
321
- */
322
50
  export declare const TASK_NOTIFICATION_TERMINAL_STATUSES: readonly string[];
323
- /** 这个通知 status 是不是**明确终态**;表外词(`event` / `unknown` / 未来词 / 缺席)⇒ false = 「本端不能断言它结束了」。 */
324
51
  export declare function isTaskNotificationTerminalStatus(status: string | undefined): boolean;
@@ -1,14 +1,11 @@
1
- /** 非空串窄化(空串按缺席归一 —— 一个空的因由渲不出任何有用的话)。 */
2
1
  function str(v) {
3
2
  return typeof v === 'string' && v.length > 0 ? v : undefined;
4
3
  }
5
- /** wire 上的门对象 → 结构视图;不成形 ⇒ 缺席(绝不铸一个空门)。 */
6
4
  function gateOf(v) {
7
5
  if (typeof v !== 'object' || v === null || Array.isArray(v))
8
6
  return undefined;
9
7
  return v;
10
8
  }
11
- /** paused 三座的共用窄读(顶层 paused 臂与 `failed.nestedPause` 同一把 —— 两处各写一份必漂)。 */
12
9
  function pauseOf(v) {
13
10
  if (typeof v !== 'object' || v === null || Array.isArray(v))
14
11
  return undefined;
@@ -22,35 +19,13 @@ function pauseOf(v) {
22
19
  ...(restoreMode !== undefined ? { restoreMode } : {}),
23
20
  };
24
21
  }
25
- /**
26
- * 扁平形里映射到 **paused 因由臂**的两个退役 status 词。
27
- * 🔴 表外词一律走 `unknown` 臂 —— 含历史终态 `timeout`,也含**非终态**词 `running`
28
- * (那是「这不是一个我认得的终局」,**不是**成功;真机黑盒点名的那条边界)。
29
- */
30
22
  const FLAT_PAUSED_STATUSES = ['suspended', 'needs_review'];
31
- /**
32
- * `done.result` / run row 的 `result` → 终局读数。**绝不抛**;读不出终态词 ⇒ `null`。
33
- *
34
- * 🔴 `null` **只有一个意思**:这份载体上连终态词都没有(mock 车道 / 不带 status 的旧合成帧)。
35
- * 它**不是**「成功」也**不是**「未知终态」—— 消费点对这一格的既有处置(落成功臂)由消费点自己
36
- * 保留,本读器不替它下这个断言。
37
- * 🔴 **「因由座在场但读不出」绝不返 `null`**(异源对抗复审 [medium] 采纳,真病):`terminal: null` /
38
- * `{}` / `[]` / `{kind: 7}` 这几形若返 `null`,消费点会把它当成「连终态词都没有」而落**成功臂**
39
- * —— 一条明确 park 着的 run 被投影成空成功,正是 [884]A1 / [909]B1 两次事故的形状。⇒ 这几形
40
- * 一律落 `unknown` 臂(`word` 缺席 = 那个词本身读不出),消费点照旧渲「非成功终局」。
41
- * ⚠️ 混合载体(既有坏 `terminal` 又有平面 `status`)同样落这里:判别位是**因由座在场性**,
42
- * 因由在场就不再回头读平面键(留一条回落 = 同一事实两个真源,而坏的那一份才是当代写者写的)。
43
- * 🔴 判别位是 **`"terminal" in result`**(上游钉的那一个),不是 `status` 的在场性:拒绝信封与
44
- * 平面盘上字节**都**带 `status`,拿它当第一步判别位方向是脆的(sdk 顶注逐字点名)。
45
- */
46
23
  export function readRunTerminal(result) {
47
24
  if (typeof result !== 'object' || result === null || Array.isArray(result))
48
25
  return null;
49
26
  const r = result;
50
27
  if ('terminal' in r) {
51
28
  const t = r.terminal;
52
- // 🔴 因由座在场但整个读不出 ⇒ `unknown` 臂(**不是** `null`;见顶注:返 `null` 会让消费点把
53
- // 一条明确 park 着的 run 落进成功臂)。`word` 缺席 = 连那个词都读不出来。
54
29
  if (typeof t !== 'object' || t === null || Array.isArray(t))
55
30
  return { kind: 'unknown', plane: 'cause' };
56
31
  const c = t;
@@ -82,7 +57,6 @@ export function readRunTerminal(result) {
82
57
  return { kind: 'unknown', plane: 'cause', word: kind };
83
58
  }
84
59
  }
85
- // ── 扁平形(读盘回放 / 409 拒绝信封;见模块顶注)────────────────────────────────────────────
86
60
  const status = str(r.status);
87
61
  if (status === undefined)
88
62
  return null;
@@ -114,8 +88,6 @@ export function readRunTerminal(result) {
114
88
  return {
115
89
  kind: 'paused',
116
90
  plane: 'flat',
117
- // 🔴 见 `flatStatus` 顶注:server 自造的同步 park 体上**连门都没有**,这个词是那一形上
118
- // 「复核 / 交互作答」的唯一信号。
119
91
  flatStatus: status,
120
92
  ...(code !== undefined ? { code } : {}),
121
93
  ...(gate !== undefined ? { gate } : {}),
@@ -131,203 +103,54 @@ export function readRunTerminal(result) {
131
103
  ...(message !== undefined ? { message } : {}),
132
104
  };
133
105
  }
134
- /**
135
- * 「这次暂停要的是**一次复核**」的门种 —— **呈现措辞**这条轴上的单一词表(不是路由表)。
136
- *
137
- * 🔴 与 `activeRunSelfHeal.PLAN_REVIEW_GATE_KINDS`(`plan_review` / `dry_run_review`)**刻意不同集**,
138
- * 差别有出处:那张表答的是「**重开臂能不能驱动它**」(两个成员共用同一个 resume 入口
139
- * `/v1/assistant/tasks/{taskId}/plan_review`),而本表答的是「**跟用户怎么说**」。门种
140
- * `needs_review`(design/76 dry-run/shadow 的 POST-prediction 复核)没有那个 resume 入口,所以
141
- * 它不在路由表里 —— 但它同样是**一次复核**而不是「一次交互作答」,措辞轴上必须在。
142
- * 🔴 两张表的包含关系由常驻门钉死(本表 ⊇ 路由表):路由表加员而本表没跟 ⇒ 新门种的终帧会被说成
143
- * 「在等一次交互作答」,那正是 [884]A1 那句文案要防的错话。
144
- * 🔴 **开集读**:表外门种一律落「交互作答」那一句 —— 它是两句里更宽的那一句(指的出路对两族都有效)。
145
- */
146
106
  export const REVIEW_PARK_GATE_KINDS = Object.freeze([
147
107
  'plan_review',
148
108
  'dry_run_review',
149
109
  'needs_review',
150
110
  ]);
151
- /**
152
- * 这次暂停停在**哪一种门**上(开集读;缺席 = 门没报 kind)。
153
- * 消费点要分「plan 复核 park」与「审批/提问 park」时读它,**不要**再去找退役的 `status` 五词。
154
- */
155
111
  export function runTerminalGateKind(read) {
156
112
  return read !== null && read.kind === 'paused' ? str(read.gate?.kind) : undefined;
157
113
  }
158
- /** 这次暂停扣着**哪个工具**(开集读;tool-less park 上缺席)。 */
159
114
  export function runTerminalGateToolName(read) {
160
115
  return read !== null && read.kind === 'paused' ? str(read.gate?.toolName) : undefined;
161
116
  }
162
- /**
163
- * 这次终局的**机器码**(开集)。`failed` 臂是它的结构归属;`blocked` / `paused` / `unknown` 上
164
- * 只可能来自扁平形盘上字节(见模块顶注)。`completed` 上恒 `undefined`。
165
- */
166
117
  export function runTerminalCode(read) {
167
118
  if (read === null || read.kind === 'completed')
168
119
  return undefined;
169
120
  return read.code;
170
121
  }
171
- /**
172
- * 扁平形上「这是一次复核」的那个退役 status 词。**只有一个**,刻意不写成表:
173
- * `suspended` 与它是 `FLAT_PAUSED_STATUSES` 的两个成员,而两者的分法就是这一条。
174
- */
175
122
  const FLAT_REVIEW_STATUS = 'needs_review';
176
- /**
177
- * 这次暂停在等**一次复核**(而不是一次交互作答)吗。**两个来源,缺一不可**:
178
- * · **因由形** —— 门种 ∈ {@link REVIEW_PARK_GATE_KINDS};
179
- * · **扁平形** —— {@link RunTerminalPausedRead.flatStatus} 是 `needs_review`。
180
- * 🔴 这一条不是冗余:server 自造的**同步 park 200 体**上连门都没有(见 `flatStatus` 顶注),
181
- * 只读门种会让那一形**全部**落到「交互作答」那一句上 —— plan-review 卡不弹、终帧措辞说错话。
182
- * 非 paused 的读数、以及两个来源都答不出的 paused,一律 `false`(更宽的那一句兜底)。
183
- */
184
123
  export function isReviewPark(read) {
185
124
  const kind = runTerminalGateKind(read);
186
125
  if (kind !== undefined && REVIEW_PARK_GATE_KINDS.includes(kind))
187
126
  return true;
188
127
  return read !== null && read.kind === 'paused' && read.flatStatus === FLAT_REVIEW_STATUS;
189
128
  }
190
- /**
191
- * ══════════════════════════════════════════════════════════════════════════════════════════════
192
- * 0.68.0 🔴 BREAKING —— 终态词**两表分源**(L-247;core [7067] @cli 行顺答)
193
- * ══════════════════════════════════════════════════════════════════════════════════════════════
194
- * 修前本模块只有一张 `TERMINAL_STATUSES = ['completed','failed','killed','blocked']`,把**两个不同
195
- * 属主**的词表合成了一张:
196
- * · `completed` / `failed` / `blocked` 属 **core 的终局因由闭集**(`TerminalCause["kind"]`,
197
- * `terminal-cause.ts`;core 那边第四员是 `paused`);
198
- * · `killed` 属 **server 的 run 行状态面**(core 的因由集里**根本没有这个词** —— core [7067] 逐字:
199
- * 「`killed` 不是 core 词 —— 壳手抄四词里的 `killed` 来自 server run status 面」)。
200
- * 合成一张的后果是两边加员时都读不出该改哪儿:core 加第五个因由(闭集加员会在 wire 清单的
201
- * `closedSetMembers` 上具名)与 server 加一个行状态词,在一张表上长得一模一样,于是消费方要么
202
- * 把新词折进已知词(不安全侧,B-079① 同形),要么两边都漏。
203
- *
204
- * ⇒ 两张表**按属主分开**,各自带自己的对账物:
205
- * · {@link TERMINAL_CAUSE_KINDS} —— core 闭集的镜像,门对**实装 devDep core** 双向对账;
206
- * · {@link RUN_TERMINAL_STATUSES} —— server run 行状态面的终态词,门对 sdk 真字节钉 + 反向钉
207
- * 「`killed` 不在 core 因由集里」。
208
- *
209
- * 🔴 **为什么是镜像而不是 `export … from '@sema-agent/core'`**(与 `engineNoticeCodes.ts` /
210
- * `autoModeUnavailable.ts` / `toolResult.ts` 三处逐字同一条理由,再加两条本表独有的):
211
- * ① `@sema-agent/core` 既不是本包的 peer 也不是 runtime dep —— 本包的 `.d.ts` 一旦引用它,
212
- * 装了本包却没装 core 的下游当场编译不过;`portability` 门的 `EXPECTED_PACKAGES_INDEX` 是
213
- * **等值门**(闭包外部包恒等于 `{diff, @sema-agent/sdk}`)且 ③ 段拿 esbuild
214
- * `--platform=browser` 真打一次包,一条值级边会把整台引擎焊进 web/desktop 的产物;
215
- * ② core **没有导出**任何名为「终局因由闭集」的元组:它只导出 `TERMINAL_CAUSE_IS_REPLAYABLE`
216
- * (一张 `Record<kind, boolean>` 的处置表)与谓词 `isTerminalCauseKind`,而且这两件**都不在
217
- * core 的 barrel 上**(`dist/index.d.ts` 只 re-export 了**类型** `TerminalCause`)⇒
218
- * 「直接 re-export 那个闭集」在今天的上游字节上不存在可 re-export 的符号。
219
- * ⇒ 镜像 + 机器对账(本仓对「不自抄」的既定机制):这张表是一份**抄件**不是意见,
220
- * `scripts/run-terminal-word-source-test.mjs` 拿 core 那张处置表的**键集**逐词双向钉,
221
- * core 一动这里就先红。
222
- */
223
- /**
224
- * **core 终局因由**的 kind 闭集(core `TerminalCause["kind"]` 逐词镜像;顺序同源 =
225
- * `dist/core/terminal-cause.js` 的 `TERMINAL_CAUSE_IS_REPLAYABLE` 键序)。
226
- *
227
- * 四员各答「这条 run 为什么结束」:
228
- * · `completed` —— 跑完了(用户干净 halt 也算,见 `TaskResult.haltedByUser`);
229
- * · `failed` —— 限额 / provider 失败 / abort / 产出不合法……;
230
- * · `blocked` —— **agent 自报**走不下去(`report_blocked`)。上游逐字:它是 TERMINAL 的,
231
- * 「the leg is over and it waits for nobody」;
232
- * · `paused` —— 一次耐久暂停提交了 checkpoint,**run 可以被恢复**。🔴 它在因由面上是一个
233
- * 合法的 kind,但它**不是**「run 结束了」——所以它**不在** {@link RUN_TERMINAL_STATUSES} 里。
234
- * 这正是两张表必须分源的最硬那一格:同一个词在两张面上答的是两个问题。
235
- *
236
- * 🔴 **集外词的读法**:core 加第五个因由词时,wire 清单的 `closedSetMembers` 必须列、发车帖必须
237
- * 具名(core [7067] 逐字规矩)。消费方按闭集读 —— **集外词整键缺席,绝不折成已知词**。
238
- * 🔴 形制:`Object.freeze` 的**字面元组**(`as const`),不是 `readonly string[]` —— 后者在类型面
239
- * 交不出成员字面量,端就只能自己再抄一遍四个词(L-247 的病根)。冻结是为了让公面消费者
240
- * `.push()` 改不动判定源(同 `RESUME_RETRY_LATER_CODES` 的已定谳病形)。
241
- */
242
129
  export const TERMINAL_CAUSE_KINDS = Object.freeze([
243
130
  'completed',
244
131
  'failed',
245
132
  'blocked',
246
133
  'paused',
247
134
  ]);
248
- /**
249
- * 一个词是不是 core 的终局**因由** kind({@link TERMINAL_CAUSE_KINDS} 的成员)。
250
- *
251
- * 🔴 **它不答「这条 run 结束了没有」** —— `paused` 是合法成员而 run 还能被恢复。要那一问请读
252
- * {@link isTerminalStatus}(server 行状态面)或 {@link readRunTerminal} 的因由臂。
253
- * 🔴 非串 / 空串 / 集外词 ⇒ `false` = 「这不是本端认得的因由词」,**不是**「成功」。
254
- */
255
135
  export function isTerminalCauseKind(kind) {
256
136
  return typeof kind === 'string' && TERMINAL_CAUSE_KINDS.includes(kind);
257
137
  }
258
- /**
259
- * **server run 行状态面**的「非成功终局」词(闭集;0.65.0 新铸,L-215② / core [6908];
260
- * 0.68.0 随 L-247 更名 `TERMINAL_NOT_SUCCESS_STATUSES` → 本名,理由见本段顶注的分源说明)——
261
- * 「这条 run **不会再自己动了**,而且它没有成功」。
262
- *
263
- * 🔴 三员各有出处,且 **`blocked` 与 `suspended`/`needs_review` 的分界是本表存在的全部理由**
264
- * (core [6908] 定谳):
265
- * · `failed` —— 引擎自报失败;
266
- * · `killed` —— 外力终止。🔴 **这一员是本表与 {@link TERMINAL_CAUSE_KINDS} 的分水岭**:
267
- * core 的因由闭集里没有它,它是 server run 行状态面自己的词(sdk `FleetTaskStatus` /
268
- * `SessionNotifyStatus` 上都在,`RunStatus` 上今天还没有 —— 见 §33 的登记);
269
- * · `blocked` —— **agent 自报的终态**:它自己判定这条 run 走不下去了(core `terminal.blocked`
270
- * 的 `reason` 是它的说明)。🔴 它**不是「等人」** —— 这正是修前被漏掉的那一格;
271
- * · 🔴 **`suspended` / `needs_review` 刻意不在表里**:那两个词是**等一次人的决定**,run 还活着、
272
- * 决定给了就继续跑。把它们读成「非成功终局」会把一条**正等着你**的 run 在面板上判死,
273
- * 而用户从此不知道有一张卡在等他 —— 与本表要修的方向相反的同一类错。
274
- *
275
- * 🔴 形制:`Object.freeze` 的**字面元组**,不是 `ReadonlySet`(同 `RESUME_RETRY_LATER_CODES` 的
276
- * 已定谳病形:`ReadonlySet` 只在类型面只读,而判定查的就是公面上这同一个实例)。
277
- */
278
138
  export const RUN_TERMINAL_NOT_SUCCESS_STATUSES = Object.freeze([
279
139
  'failed',
280
140
  'killed',
281
141
  'blocked',
282
142
  ]);
283
- /**
284
- * 一个状态词是不是**非成功终局**({@link RUN_TERMINAL_NOT_SUCCESS_STATUSES} 的成员)。
285
- *
286
- * **单铸谓词**(L-215②):本包的通知链(面板 settle 的 `isError` 位)与三端各自的后台白名单
287
- * 读的必须是**同一个判据** —— 修前包里是一处内联的 `status === 'failed' || status === 'killed'`,
288
- * 壳里另有一份白名单,两处各写各的,于是 core 加 `blocked` 那天两边一起漏,而漏的后果是
289
- * **面板把一条自报失败的 run 渲成成功**。
290
- *
291
- * 🔴 **开集外的词答 `false`,而 `false` 不等于「成功」**:它只说「这个词不在本端认得的非成功终局
292
- * 表里」。消费点要判「成功」必须去读成功那一侧的正向证据({@link readRunTerminal} 的
293
- * `completed` 臂),不能拿本谓词的取反当成功判据 —— 那正是「不认识的终态词折成成功」那条
294
- * 已定谳的事故形。
295
- * 🔴 非串 / 空串 ⇒ `false`(同上:是「答不出」,不是「成功」)。
296
- */
297
143
  export function isTerminalNotSuccess(status) {
298
144
  return typeof status === 'string' && RUN_TERMINAL_NOT_SUCCESS_STATUSES.includes(status);
299
145
  }
300
- /**
301
- * **server run 行状态面**的终局状态词(闭集;0.65.0 新铸,0.68.0 随 L-247 更名 `TERMINAL_STATUSES`
302
- * → 本名)—— 成功那一员加上 {@link RUN_TERMINAL_NOT_SUCCESS_STATUSES} 的三员。答的是「这条 run
303
- * 还会不会自己动」,与上一张表答的「它成没成功」是**两个问题**,所以两张表分开、后者由前者派生
304
- * (加员只有一处要改)。
305
- *
306
- * 🔴 同样**不含** `suspended` / `needs_review`:那两个词是「等一次人的决定」——run 没有结束。
307
- * 🔴 也**不含** core 因由面的 `paused`:那是另一张表的词,而且它在语义上恰好与本表相反
308
- * ({@link TERMINAL_CAUSE_KINDS} 顶注)。
309
- */
310
146
  export const RUN_TERMINAL_STATUSES = Object.freeze([
311
147
  'completed',
312
148
  ...RUN_TERMINAL_NOT_SUCCESS_STATUSES,
313
149
  ]);
314
- /**
315
- * 一个状态词是不是**终局**({@link RUN_TERMINAL_STATUSES} 的成员)。
316
- *
317
- * 用在「这条通知/这条行是不是可以收摊了」这一问上(通知去重的 seed 扫描、后台行 settle 门)。
318
- * 🔴 表外词 ⇒ `false` = 「本端认不出这是个终局」,**不是**「它还在跑」;要判「在跑」请读正向证据。
319
- */
320
150
  export function isTerminalStatus(status) {
321
151
  return typeof status === 'string' && RUN_TERMINAL_STATUSES.includes(status);
322
152
  }
323
- /**
324
- * 0.72.12 CC-50:**通知**(`task_notification.status`)自己的终态词表 —— 引擎 `TaskNotificationStatus` 五词里的四个终态
325
- * (`completed` / `failed` / `killed` / `cancelled`;第五词 `event` 是唯一非终态 = 仍在跑的 Monitor 批)逐字镜像。
326
- * 🔴 它与 run 级 {@link RUN_TERMINAL_STATUSES} 是**两张表**(那张有 `blocked`、没有 `cancelled`):通知说「已取消」是明确终态,
327
- * 借 run 级表会把它读成「认不出」(异源对抗复审抓出)。住在词表属主文件里,src 别处零内联(终态词汇门 D3)。
328
- */
329
153
  export const TASK_NOTIFICATION_TERMINAL_STATUSES = Object.freeze(['completed', 'failed', 'killed', 'cancelled']);
330
- /** 这个通知 status 是不是**明确终态**;表外词(`event` / `unknown` / 未来词 / 缺席)⇒ false = 「本端不能断言它结束了」。 */
331
154
  export function isTaskNotificationTerminalStatus(status) {
332
155
  return status !== undefined && TASK_NOTIFICATION_TERMINAL_STATUSES.includes(status);
333
156
  }