@sema-agent/client-core 0.77.1 → 0.77.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (382) hide show
  1. package/CHANGELOG.md +13 -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 +0 -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 +6 -498
  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 +6 -67
  346. package/dist/subagent/engineTaskHandleWire.js +0 -126
  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 +30 -1
  382. package/package.json +1 -1
@@ -1,46 +1,7 @@
1
- /**
2
- * gateIdentity.ts — HITL 决断卡**身份键**的唯一铸口(A-028.3,#244 族A 包半场,2026-08-12)。
3
- *
4
- * 为什么要有它:三条身份键字面此前散在三处各铸各的 ——
5
- * · `parkResolver.ts` 铸 `hitl-ask:${gatedCallId ?? taskId}`(overlay 问答帧 id);
6
- * · `toolApprovalWire.ts` 铸 `gatedCallId ?? taskId`(durable 腿卡口 callKey)与
7
- * `hitl-frame:${approvalId}`(live 帧腿 callKey);
8
- * · `planReviewWire.ts` 铸 `plan-review:${taskId}`(module 私有,壳侧只能人肉抄字面对齐)。
9
- * 消费方(呈现台账 `armedGateRegistry` 的键归一、壳侧重开腿)靠「与铸口逐字对齐」的注释纪律
10
- * 活着 —— 漂一个字节,首见/复见判决就静默失真。本文件把全部字面收成单源:铸口 import 这里,
11
- * 台账的键推导也 import 这里,两边在结构上不可能再漂。
12
- *
13
- * 🔴 **声明边界(web [C1] d3 拦截跟修,2026-08-12)**:上句「全部字面」只指 **HITL 决断卡的
14
- * questionId / callKey 键空间**(本文件四常量两函数)。`seatContract.ts` 的
15
- * `TOOL_PERMISSION_REQUEST_ID_DOMAINS`(`live:`/`durable:`/`question:`/`elicit:`/`plan:`)是
16
- * **另一个键空间** —— 座位 `ToolPermissionRequest.requestId` 的路由域词表,出站校验器按它
17
- * fail-close。两空间零重叠、各自单源,**绝不合并**:把 `plan-review:`(本文件)与 `plan:`
18
- * (seat 域)字面归一会让座位校验器静默拒掉全部 plan-review 卡(web 按 [C161]-d3 原文施工时
19
- * 当场拦下的真回归形)。
20
- *
21
- * 🔴 零 import 纯函数叶(portability:不进任何闭包新边;index 闭包 +1 文件已登记)。
22
- */
23
- /** plan_review 审批卡的合成 questionId 前缀(`planReviewWire` 首次 arm 与重开腿共用)。 */
24
1
  export declare const PLAN_REVIEW_QUESTION_ID_PREFIX = "plan-review:";
25
- /** 重开腿铸新身份的尾分隔符(`…#reopen-<suffix>`);键归一时从这里剥尾,首呈与重开落同一键。 */
26
2
  export declare const REOPEN_ID_TAIL = "#reopen-";
27
- /**
28
- * durable 审批腿的卡身份键(`toolApprovalWire` 卡口 / own-run 台账同域):
29
- * gate 绑定的 callId 优先,行没带 callId 时退 taskId。
30
- */
31
3
  export declare function approvalCallKey(gatedCallId: string | undefined, taskId: string): string;
32
- /** ask-gate overlay 帧 id(入参 = {@link approvalCallKey} 的产出)。 */
33
4
  export declare function askGateQuestionId(callKey: string): string;
34
- /** plan_review 审批卡的合成 questionId(首次 arm 的 canonical 身份;重开腿在其后接 {@link REOPEN_ID_TAIL})。
35
- * A-028.3:此前是 `planReviewWire.ts` 的 module 私有函数,壳侧重开腿只能手抄字面 —— 现转公面单源。 */
36
5
  export declare function planReviewQuestionId(taskId: string): string;
37
- /** live `tool_approval` 帧腿的卡口 callKey(`toolApprovalWire.surfaceToolApprovalFrameAndRespond`)。 */
38
6
  export declare function liveFrameCallKey(approvalId: string): string;
39
- /**
40
- * question 帧 id → 呈现台账键的归一(armedGateRegistry 的键推导):
41
- * · `hitl-ask:X` → `X`(ask 帧的台账键 = 卡口 callKey,与 durable 腿卡的键同域);
42
- * · `…#reopen-<suffix>` 尾剥掉(重开铸的新身份归一到原键,首呈与重开同键);
43
- * · `plan-review:<taskId>` **保留前缀**(plan 键与「taskId 直接作 ask 键」永不撞域);
44
- * · 不认识的形原样入册(未来新 id 形至多多占一个键,不误伤既有词汇)。
45
- */
46
7
  export declare function armedKeyFromQuestionId(questionId: string): string;
@@ -1,60 +1,19 @@
1
- /**
2
- * gateIdentity.ts — HITL 决断卡**身份键**的唯一铸口(A-028.3,#244 族A 包半场,2026-08-12)。
3
- *
4
- * 为什么要有它:三条身份键字面此前散在三处各铸各的 ——
5
- * · `parkResolver.ts` 铸 `hitl-ask:${gatedCallId ?? taskId}`(overlay 问答帧 id);
6
- * · `toolApprovalWire.ts` 铸 `gatedCallId ?? taskId`(durable 腿卡口 callKey)与
7
- * `hitl-frame:${approvalId}`(live 帧腿 callKey);
8
- * · `planReviewWire.ts` 铸 `plan-review:${taskId}`(module 私有,壳侧只能人肉抄字面对齐)。
9
- * 消费方(呈现台账 `armedGateRegistry` 的键归一、壳侧重开腿)靠「与铸口逐字对齐」的注释纪律
10
- * 活着 —— 漂一个字节,首见/复见判决就静默失真。本文件把全部字面收成单源:铸口 import 这里,
11
- * 台账的键推导也 import 这里,两边在结构上不可能再漂。
12
- *
13
- * 🔴 **声明边界(web [C1] d3 拦截跟修,2026-08-12)**:上句「全部字面」只指 **HITL 决断卡的
14
- * questionId / callKey 键空间**(本文件四常量两函数)。`seatContract.ts` 的
15
- * `TOOL_PERMISSION_REQUEST_ID_DOMAINS`(`live:`/`durable:`/`question:`/`elicit:`/`plan:`)是
16
- * **另一个键空间** —— 座位 `ToolPermissionRequest.requestId` 的路由域词表,出站校验器按它
17
- * fail-close。两空间零重叠、各自单源,**绝不合并**:把 `plan-review:`(本文件)与 `plan:`
18
- * (seat 域)字面归一会让座位校验器静默拒掉全部 plan-review 卡(web 按 [C161]-d3 原文施工时
19
- * 当场拦下的真回归形)。
20
- *
21
- * 🔴 零 import 纯函数叶(portability:不进任何闭包新边;index 闭包 +1 文件已登记)。
22
- */
23
- /** overlay 问答帧的 ask-gate 命名空间前缀(`parkResolver.surfaceGateAndDecide` 合成帧 id 用)。 */
24
1
  const HITL_ASK_QUESTION_ID_PREFIX = 'hitl-ask:';
25
- /** plan_review 审批卡的合成 questionId 前缀(`planReviewWire` 首次 arm 与重开腿共用)。 */
26
2
  export const PLAN_REVIEW_QUESTION_ID_PREFIX = 'plan-review:';
27
- /** live `tool_approval` 帧腿的卡口 callKey 前缀(帧上无 gatedCallId 可对齐,以 approvalId 铸)。 */
28
3
  const HITL_FRAME_CALL_KEY_PREFIX = 'hitl-frame:';
29
- /** 重开腿铸新身份的尾分隔符(`…#reopen-<suffix>`);键归一时从这里剥尾,首呈与重开落同一键。 */
30
4
  export const REOPEN_ID_TAIL = '#reopen-';
31
- /**
32
- * durable 审批腿的卡身份键(`toolApprovalWire` 卡口 / own-run 台账同域):
33
- * gate 绑定的 callId 优先,行没带 callId 时退 taskId。
34
- */
35
5
  export function approvalCallKey(gatedCallId, taskId) {
36
6
  return gatedCallId ?? taskId;
37
7
  }
38
- /** ask-gate overlay 帧 id(入参 = {@link approvalCallKey} 的产出)。 */
39
8
  export function askGateQuestionId(callKey) {
40
9
  return `${HITL_ASK_QUESTION_ID_PREFIX}${callKey}`;
41
10
  }
42
- /** plan_review 审批卡的合成 questionId(首次 arm 的 canonical 身份;重开腿在其后接 {@link REOPEN_ID_TAIL})。
43
- * A-028.3:此前是 `planReviewWire.ts` 的 module 私有函数,壳侧重开腿只能手抄字面 —— 现转公面单源。 */
44
11
  export function planReviewQuestionId(taskId) {
45
12
  return `${PLAN_REVIEW_QUESTION_ID_PREFIX}${taskId}`;
46
13
  }
47
- /** live `tool_approval` 帧腿的卡口 callKey(`toolApprovalWire.surfaceToolApprovalFrameAndRespond`)。 */
48
14
  export function liveFrameCallKey(approvalId) {
49
15
  return `${HITL_FRAME_CALL_KEY_PREFIX}${approvalId}`;
50
16
  }
51
- /**
52
- * question 帧 id → 呈现台账键的归一(armedGateRegistry 的键推导):
53
- * · `hitl-ask:X` → `X`(ask 帧的台账键 = 卡口 callKey,与 durable 腿卡的键同域);
54
- * · `…#reopen-<suffix>` 尾剥掉(重开铸的新身份归一到原键,首呈与重开同键);
55
- * · `plan-review:<taskId>` **保留前缀**(plan 键与「taskId 直接作 ask 键」永不撞域);
56
- * · 不认识的形原样入册(未来新 id 形至多多占一个键,不误伤既有词汇)。
57
- */
58
17
  export function armedKeyFromQuestionId(questionId) {
59
18
  const base = questionId.startsWith(HITL_ASK_QUESTION_ID_PREFIX)
60
19
  ? questionId.slice(HITL_ASK_QUESTION_ID_PREFIX.length)
@@ -1,37 +1,5 @@
1
- /**
2
- * gateLedger — HITL gate 桥的**单一台账**(REF-CC-032 / SPLIT-12 第一刀,2026-08-02)。
3
- *
4
- * 拆分动机(P1 lens-giant-split SPLIT-12 的 evidence 段逐条):`bridgeAskUserQuestionGates`
5
- * 里的 8 个集合 + 若干标量,**内环帧路由**与**外环 park 决断**各自直写同一批容器 ——
6
- * · `heldAskEnds` 写于内环 tool_end 手柄、删于内环四处 **与外环 decide 成功那一处**、drain 于 flushHeld;
7
- * · `deniedCalls` 写于内环 tool_approval 手柄 **与外环 fs decide 的 denied 臂**、消费于内环 tool_end;
8
- * · `resolvedAnswers` 写于**外环**、消费于**内环**;
9
- * · `endedCalls` 写于内环四处 **与 flushHeld**。
10
- * 「同一个容器有两个写者、写法各自散着」正是这段代码没法拆的真约束。本文件把容器收成一个对象并
11
- * 给出**动词**:内外环从此都只经动词写,容器本身只有一个写者(本模块),两把刀之间靠显式传参共享
12
- * 这一个台账对象。
13
- *
14
- * 🔴 本模块**没有**模块级状态:`createGateLedger()` 每个 turn 造一份(与原来那些函数体内 `new Map()`
15
- * 的生命周期逐字相同)。它不是单例,也不该变成单例 —— 两个并发 turn 共用一份台账 =
16
- * A turn 的 HOLD 帧被 B turn 的 flush 吐出去。
17
- *
18
- * 🔴 `AskAnsweredOutput` 落在本文件而不是留在 `askGateWire.ts`:它是 `resolvedAnswers` 的值类型,
19
- * 台账要能自描述,值类型必须与台账同层或更低。`askGateWire.ts` 原样 re-export 它,对外类型面不变。
20
- */
21
1
  import type { AgentEvent } from '@sema-agent/sdk';
22
- /**
23
- * 连坐 abort 帧的 additive 超集机读位(#324 / [4907] 裁定;登记见 `docs/type-superset.json`)。
24
- *
25
- * `flushHeld` 对**已知不是 gate 主角**的帧 stamp `true`,别的帧一个字节不改。消费方(壳 / web /
26
- * desktop)据此把连坐簇按 repeated-error 族软化折叠,**不猜文案**。
27
- *
28
- * 🔴 刻意**不动** `isError` 与 `output`:core 5.51 的 `[DEFERRED]` / `gate.batch_halted` 词汇
29
- * ([4826]③)尚未到货,那一面的定形归 core;本键只是机读位,到货后与官方形对表,
30
- * additive 键保留兼容(裁定原文)。
31
- */
32
2
  export declare const SEMA_COLLATERAL_ABORT_KEY = "_sema_collateral_abort";
33
- /** CC AskUserQuestion outputSchema 形状(答过的问题卡):toolResult 的 `ask-user-question` arm
34
- * 消费它渲真实答案卡(否则「诚实缺席」路径会把这张卡渲成结果不可用)。 */
35
3
  export interface AskAnsweredOutput {
36
4
  type: 'ask-user-question';
37
5
  questions: unknown[];
@@ -40,280 +8,45 @@ export interface AskAnsweredOutput {
40
8
  notes?: string;
41
9
  }>;
42
10
  }
43
- /**
44
- * 一个 turn 的 gate 台账。动词按「谁写、谁读」分组,每组的注释说明它承的是哪条不变量。
45
- *
46
- * 🔴 命名纪律:`mark*` = 只写;`is*` / `*For` / `last*` = 只读;`take*` = 读且消费(一次性);
47
- * `drop*` = 只删。读写混合的动词只有 `take*` 与 `markStarted`,两者的一次性语义都写在各自注释里 ——
48
- * 因为原文里正是「`has` 完接着 `delete`」「`has` 完接着 `add`」这两种成对写法散在多处,
49
- * 收成一个动词才谈得上「写者唯一」。
50
- */
51
11
  export interface GateLedger {
52
- /** #110 缺陷② a:`lastSeq` 要跟得上**已消费的最大 seq**。durable `runs.events` 流上并非每帧
53
- * 都带 `id`(数字 `seq` 位的帧同样在场),旧式只吃 `ev.id` ⇒ 停在最后一个带 id 的帧上 ⇒
54
- * re-attach 从一个陈旧位置重放,把已经决断的 park 又送一遍(实测:消费到 16 却 attach from 8)。 */
55
12
  noteSeq(ev: AgentEvent): void;
56
13
  lastSeq(): string | undefined;
57
- /**
58
- * 🔴 **换挂到另一条 run 时,把「跟着 run 走」的那几格忘掉**(B-070 / L-200,0.65.x)。
59
- *
60
- * workflow 车道的 decide 受理形把续跑交给**宿主新铸**的 run(sdk README §9.0.0),于是同一本
61
- * turn 级台账第一次要跨**两条 run** 活着。台账里有两类记账,它们的射程不同:
62
- *
63
- * **① 跟着 run 走 ⇒ 本动词清掉**:
64
- * · `lastSeq` —— durable seq 是 **per-run** 的序号,带着旧 run 的号去续读新 run 是跨命名空间
65
- * 取数([same-name-different-meaning-crosses-layers]);
66
- * · **`markStarted` 的已渲 call 集**与**两张 args 快照表**(gated 的与在飞的)——
67
- * 🔴 **这一条是安全格**(异源复审 [high] 实撞):`toolCallId` **不保证跨 run 唯一**,而
68
- * `routeToolStart` 在 `markStarted` 判重后**直接早退**(`skip`),`noteGatedStart` 不再执行。
69
- * ⇒ 新 run 复用同一个 callId 时,卡面渲的是**上一条 run 的入参快照**,而 decide 回显的是
70
- * **新 pending 行**的 D-1 绑定 —— 人看见 A、批准的是 B。这正是「两处各持一半事实」那一族
71
- * 里代价最高的一格,所以换挂那一拍必须把这三张表一起清掉,让新 run 的 `tool_start`
72
- * 重新走一遍完整的渲染 + 记账路径。
73
- *
74
- * **② 属于「这一只 ask 的历史」⇒ 刻意保留**(它们正是换挂的**理由**,清掉就自相矛盾):
75
- * · `decidedGates` / `lastFsOrShellGatedCall` —— 「这张 park 已经被决断过」的身份留痕,
76
- * #110 那条「重放的 park 不是失败」的判据靠它;
77
- * · 扣留帧表(`heldAskEnds`)—— 本 turn 尚未吐出的帧,「一帧不丢」靠它;
78
- * · 同因连续计数与批级判据 —— 它们数的是「这一只门重放了几次」,与流挂在哪条 run 上无关。
79
- */
80
14
  forgetRunScopedState(): void;
81
- /** 首见 ⇒ true(并记账);durable 重放的已渲 call ⇒ false。 */
82
15
  markStarted(callId: string): boolean;
83
- /** 🔴 存 **tool_start 当拍的 `args` 快照**而非帧引用(与拆分前 `askArgsByCall` 逐字同语义;
84
- * 对抗复审确证差异 #1 的收货修)——存帧引用意味着「上游在 yield 后改写 `ev.args`」会漂进
85
- * 审批 payload,且台账持帧延长了整帧生命周期。载荷仍是 UNTRUSTED unknown,台账只搬运不解释。 */
86
16
  noteGatedStart(callId: string, ev: AgentEvent): void;
87
17
  gatedStartArgs(): ReadonlyMap<string, unknown>;
88
- /**
89
- * 每一张 `tool_start` 的 `args` 快照,**不论这只工具有没有被 gate**。
90
- *
91
- * 🔴 为什么必须与 {@link gatedStartArgs} **分成两张表**(而不是「合表 + 用有没有 args 判 gated」):
92
- * 「被 gate 过」是**另一个集合**,两者的成员关系没有任何蕴含 —— 分类器 deny 的工具通常
93
- * **没有**被 gate(引擎侧分类器直接 block,一张 `tool_approval` 帧都不出),而 gate 过的工具
94
- * 也可能整场没有 args。把「表里有这一条」读成「它被 gate 过」,等于拿一个搬运位当身份位
95
- * ([provenance-needs-wire-fact-not-inference] 同族);合表之后总有人会这么读,所以不合。
96
- * 两表的**生命周期**也刻意不同,见下:
97
- * · {@link gatedStartArgs}:审批 payload 的一手源,**整个 turn 不删**(park / durable 重放
98
- * 之后卡面还要读它),条目数被「真被 gate 的工具数」天然约束;
99
- * · 本表:每一张 tool_start 都进,所以**必须有界**(见 {@link START_ARGS_MAX_ENTRIES}),
100
- * 且 `tool_end` 收口当拍就删(见 {@link dropStartArgs})—— 它只服务「这只 call 还没收口」
101
- * 那段窗口内的消费者(今天唯一一个:分类器 deny 臂给宿主的 `ctx.args`)。
102
- *
103
- * 🔴 存的是 **tool_start 当拍的 `args` 快照**而非帧引用,理由与 {@link noteGatedStart} 逐字同款。
104
- * 载荷是 **UNTRUSTED** wire 值:台账只搬运,不解释、不渲染、不截断。
105
- */
106
18
  noteStart(callId: string, ev: AgentEvent): void;
107
- /** 本 call 的 tool_start args 快照;没记过 / 已收口 / 已被有界淘汰 ⇒ 表里读不到。 */
108
19
  startArgs(): ReadonlyMap<string, unknown>;
109
- /** `tool_end` 收口当拍释放这一条(在飞窗结束)。不在表里 ⇒ no-op。 */
110
20
  dropStartArgs(callId: string): void;
111
21
  isEnded(callId: string): boolean;
112
22
  markEnded(callId: string): void;
113
- /**
114
- * park 毒化的 gated tool_end(isError:true "Operation aborted")——HOLD 到 gate 定性
115
- * (AskUserQuestion + [816] 放宽后的 fs 写工具 + [2150] Bash)。
116
- *
117
- * 🔴 **入表当拍不判出身**(#324 换锚,2026-08-22):durable park 腿的帧序是
118
- * `tool_start → tool_end(毒化) → done{suspended}` —— gate 身份**晚于**毒化帧到达,入表那一拍
119
- * 包层根本还不知道谁是主角。出身改在 {@link flushHeld} 当拍求值(五个 flush 出口全部晚于 park
120
- * 被看见),判据见 {@link noteParkGate}。
121
- */
122
23
  hold(callId: string, ev: AgentEvent): void;
123
24
  dropHeld(callId: string): void;
124
- /**
125
- * 件④([4933] 立案的存量根修,0.41.0):**决断成功**之后摘掉这张 park 主角的扣留帧。
126
- *
127
- * 🔴 与裸 {@link dropHeld} 的差别只有一个:**入参可信度**。内环那四个调用点摘的是**帧自己的**
128
- * `toolCallId`(帧在手,身份无疑);而决断成功那一下,外环手上只有 `findPendingForTask` 给的
129
- * callId —— 那是给**卡面渲染**用的宽口(同 taskId + 族谓词命中的**第一行**,谓词不命中还退
130
- * 「任意行」),不是身份。同族多行排队时它可能指向旁观者,于是被摘掉的是**另一条** call 的
131
- * 扣留帧,而那一帧从此不再吐:{@link flushHeld} 的「一帧不丢」在这一格上不成立
132
- * (用户面 = dim 圆点永远等不到结果行)。
133
- *
134
- * 🔴 摘的**永远是真被决断的那一行**(`candidateCallId`);`trustedCallId` 的角色是**确证**,
135
- * 不是第二个摘取目标 —— 两边指向不同 call 时摘谁都是 split-brain(决断绑一行、摘另一行的帧)。
136
- *
137
- * 两条腿:
138
- * ① `trustedCallId`(server ≥7.41.0 的 park 身份:`done{suspended}.result.toolCallId` /
139
- * durable `suspended` 事件 `gate` 旁同键,[4914])与 `candidateCallId` **相等** ⇒ 身份确证,
140
- * 点名摘。取件腿今天已优先按同一个身份选行,所以正常路径上两者恒等;
141
- * ② 身份缺席(旧引擎 / tool-less park / 键畸形)或两者不等(身份在场但队列没有那一行 ⇒ 决断
142
- * 落在别的行上)⇒ 只在 `candidateCallId` 于扣留表里**同族唯一**
143
- * 时才摘;同族多条 = 判不出谁是主角 ⇒ **一条都不摘**,帧照走 flush 的连坐判别
144
- * (与 {@link flushHeld}「判不出整表不标」同轴的 fail-safe:宁可多渲一行 abort,
145
- * 也不许让一帧永久消失)。
146
- *
147
- * 🔴 两条腿都要走「摘完看表空不空」那一步(见 {@link dropHeld} 尾注的批级退休不变量),
148
- * 包括**什么都没摘**那条路 —— 零 HOLD 批正是每次 delete 都落空的形状。
149
- */
150
25
  dropHeldForDecidedPark(candidateCallId: string | undefined, trustedCallId?: string): void;
151
26
  heldCount(): number;
152
- /**
153
- * drain:逐帧吐出并**同批记 ended**(fail-soft 回退路径与终帧路径共用的唯一出口)。
154
- *
155
- * 🔴 **一帧不丢**(frameRouter:185 的不变量,#324 车实测确证它是刻意的):HOLD 过的帧在这里
156
- * 全部吐出去 —— 丢帧的后果是永久假排队(dim 圆点永远等不到结果行),比多渲一行红字更坏。
157
- * 本出口做的唯一一件事是给**已知不是 gate 主角**的帧 stamp {@link SEMA_COLLATERAL_ABORT_KEY}
158
- * 机读位(additive 超集键;`isError` / `output` / 帧序一律不动),让消费端能把连坐簇与主角帧
159
- * 分开呈现。
160
- *
161
- * 🔴 判词方向(fail-safe):**判不出本批主角 ⇒ 一个都不 stamp**(诚实缺席,与本键出现之前
162
- * 逐字节相同);判得出 ⇒ 主角走原路零改动、其余一律 stamp。绝不按到达顺序编判词。
163
- *
164
- * 主角怎么判(实现见 `resolveGateSubjects`,判据全部**批级**、一批一套):
165
- * ① **硬门:本批恰好一张 park**({@link noteParkGate})。零张 = 归属无从证明(同步帧腿 /
166
- * 纯取消批都落这里);两张以上 = 这批扣留帧混了两次 gate 的 abort,谁属谁无解。一律不标。
167
- * ② **主角 = 本批(扣留帧 ∪ 本批已出批的帧)里唯一属该 park 族的 call**。并上「已出批的帧」
168
- * 是因为决断成功那一下会把主角的毒化帧 `dropHeld` 掉,只看扣留帧的话主角就「不在这一批」,
169
- * 整批判据当场失效。族外 park(kind-only / ask)不发准入证 ⇒ 整批不标。
170
- * ③ 前置:**每一条扣留帧的 `tool_start` 本连接都得见过** —— 族成员判据取自 tool_start 当拍
171
- * 记的集合,没见过 start 的 call 在「唯一」这件事上是隐形的;续流只消费 `runs.events` 的
172
- * 一段,主角的 start 完全可能落在这次连接之外,那时表里剩下的唯一族成员是**旁观者**。
173
- *
174
- * 🔴 **pending 队列一概不参与判别**:`durable checkpointGate` 不带 callId,`findPendingForTask`
175
- * 取的是「同 taskId + 谓词命中的第一行」(不命中时退「任意行」)—— 那是给**卡面渲染**用的宽口,
176
- * **不是身份**。同族两行排队时它会给出旁观者,拿它当主角就把真主角挤成「非主角」而 stamp。
177
- */
178
27
  flushHeld(): Generator<AgentEvent>;
179
- /** 三选卡 deny 过的 call:重放 tool_end 的 render 面 stamp REJECT_MESSAGE(vendored
180
- * renderToolUseRejectedMessage 渲 `User rejected <op> to <path>`,CC 逐字)。 */
181
28
  markDenied(callId: string): void;
182
29
  isDenied(callId: string): boolean;
183
- /** 一次性消费(原文的 `has` + `delete` 成对写法)。 */
184
30
  takeDenied(callId: string): boolean;
185
- /** 同步帧腿 deny 但 callId 关联不上(引擎在 tool_start 前出帧的形状):stamp 下一张 gated 报错帧。 */
186
31
  armDenyStamp(): void;
187
- /** 一次性消费:武装中 ⇒ 解除并返回 true。 */
188
32
  takeDenyStamp(): boolean;
189
- /** started-未-ended 的 fs 写 call(顺序保留)——帧契约不带 toolCallId;引擎阻塞在帧上,
190
- * 最后一张未收口 fs 写 call 即被 gate 的 call。 */
191
33
  pushFsCall(callId: string): void;
192
34
  dropFsCall(callId: string): void;
193
35
  lastPendingFsCall(): string | undefined;
194
- /** REF-CC-034:最近一次见到的 fs 写 / shell 执行 gated tool_start 的 callId(`park.gate==='fs'`
195
- * 分支的两族 toolName)——**不**随 tool_end 清空(与 `pushFsCall/dropFsCall` 的关键差异:
196
- * 那一组在 tool_end 到达就 drop 掉,而 durable re-attach 重放的 `suspended` park 没有配套的新
197
- * tool_start/tool_end,那时它早已空了,取不到候选 callId)。只在**新的** gated tool_start 到来
198
- * 时前进,天然把「这次 park 到底是哪个 call」的身份带过 decide→重放两轮。 */
199
36
  noteFsOrShellGate(callId: string): void;
200
37
  lastFsOrShellGatedCallId(): string | undefined;
201
- /**
202
- * 登记「**这一批**的 park」——判别子唯一认的归属证据。写者 = 四条 park 臂:`routeDone` 的
203
- * ask/fs 两条、`routeSuspended` 的 ask/fs 两条。`fsOrShellFamily` = 这张 park 的 gate **本体**
204
- * `toolName` 属 fs 写 / shell 执行族吗(唯一性兜底腿的准入证)。
205
- *
206
- * 🔴 **为什么只认 park、不认 `tool_approval` 帧**(异源对抗复审四轮的收口,2026-08-22):
207
- * 判别子要回答的是「**这一批** abort 帧属于哪张 gate」,而 wire 上**没有**任何位做这个关联 ——
208
- * 包层能算的都是推断。park 是唯一**归属可结构性证明**的证据:`flushHeld` 的出口就长在那张 park
209
- * 自己的决断/回退路径上(`parkResolver` fail-soft / decide 成功后的续流放行 / 终帧),
210
- * 「这一批是这张 park 的 abort 批」是结构事实,不是猜的。
211
- * 审批帧腿不具备这个性质:帧只证明「本 turn 出现过一张 gate」,那张 gate 可能**早已正常收口**
212
- * (零毒化帧 ⇒ 零扣留表 ⇒ 一次 flush 都不跑),它的证却会活到下一批去派判词。四轮实测里
213
- * 三条「假阳打回主角」都出自帧腿证据(旧 server 双主角 / 零 HOLD 审批证跨批 / 历史身份跨批),
214
- * 故本版**刻意**不从帧腿取证 —— 代价是同步帧腿整条不标(已知局限,见 §3z)。
215
- *
216
- * 🔴 **重放同一张 park 不算新的一张**:#110 成文「durable re-attach 必然把已决断的 park 再送
217
- * 一遍」。判据 = 自上一次 park 登记以来**有没有新的帧进过扣留表**;没有就是同一张 park 被重放,
218
- * 计数不动(否则本批会被自己的重放判成「多 park」而整批失效,真连坐帧拿不到位)。
219
- */
220
38
  noteParkGate(evidence: {
221
39
  fsOrShellFamily: boolean;
222
40
  }): void;
223
- /**
224
- * 「**本批**有没有登记过 park」——件 B(#323 症状②,2026-08-25)的硬门读位。
225
- *
226
- * 🔴 与 {@link flushHeld} 的主角判别是**两件事**,别合并:那条要的是「恰好一张」(归属可证),
227
- * 本条要的是「**零张**」(这批 abort 帧背后没有任何 gate ⇒ 才谈得上「纯用户中断批」)。
228
- * 判词方向同样 fail-safe:有 park = 门语义,呈现向一个字节都不改。
229
- * 🔴 读位必须在 `flushHeld` 之前取(那一拍尾部会 `retireBatchState()` 把计数清零)。
230
- */
231
41
  hasBatchPark(): boolean;
232
- /** 续流重放的解答 tool_end 无 output,不补就会渲成结果不可用;这里记下真实答案供该帧 stamp
233
- * `structured` 让卡片渲真实选择。 */
234
42
  rememberAnswer(callId: string, answered: AskAnsweredOutput): void;
235
43
  answerFor(callId: string): AskAnsweredOutput | undefined;
236
44
  dropAnswer(callId: string): void;
237
- /**
238
- * #110 缺陷② 的**承重**修 / REF-CC-034:durable re-attach 会把「已经决断过的 park」重放一遍
239
- * (边界上必然发生:`lastEventId` 再准也只能精确到帧,park 帧本身就在续流的重放窗口里)。重放的
240
- * park 走到决断会去取 pending approval —— 那一行早已 resolved ⇒ 拿不到 ⇒ `failed` ⇒ 合成
241
- * `hitl_unanswered` 终帧。而引擎侧 run 其实已经 `completed`:壳谎报失败,连带 CC 转录 0 行写出、
242
- * 同 session `--resume` 报 `No conversation found` —— **会话废掉**。
243
- *
244
- * 首选判据是文案/code 双臂(`parkResolver.isAlreadyResolvedFailure`);本集合是第二条、
245
- * **身份匹配**(非文案)的独立判据:拿 `lastFsOrShellGatedCallId()` 算出这次 park 的候选 callId,
246
- * 若它已在本集合里,不论失败文案长什么样都按「已解决」处置。方向偏宽符合不对称原则(误判成
247
- * 「已解决」最多多读一轮、被 hop 预算兜底;误判成「真失败」烧会话)。
248
- */
249
45
  markDecided(callId: string): void;
250
- /**
251
- * 一次性消费([2393] hitl-F2,2026-08-02):记号被一次 park 失败消费掉就**失效**。
252
- *
253
- * 🔴 为什么必须一次性:这条判据的正当性完全来自「durable re-attach 会把**那一次**已决断的 park
254
- * 重放一遍」——重放窗口只有一次。而它的两个输入都是单调的:`lastFsOrShellGatedCallId()` 不随
255
- * tool_end 清空(见上方声明处注,那是**故意**的,park 重放时没有新的 tool_start 可跟),
256
- * `decidedGates` 又只增不删 ⇒ 只要这个 turn 里成功决断过一次,**之后每一次** park 失败都会命中
257
- * 身份匹配,不论真因是什么。实测后果:`approvals.list` 网络失败这类真失败被连续 24 次判成
258
- * 「已解决」,吃满 `MAX_GATE_HOPS` 才吐一句 `gate hop limit exceeded` —— 用户白等 24 轮往返,
259
- * 拿到的还是一句与真因无关的话(真因被预算话术顶掉了)。
260
- * 消费一次即失效之后:第一次(= 真的重放)照旧救回,第二次就是诚实的 fail-soft。
261
- *
262
- * ✅ **同形存量已销**(#357,0.47.0):上面这段描述的病形在**身份判据**这一腿由本动词的一次性
263
- * 语义关掉,但它的**孪生腿**(`isAlreadyResolvedFailure` 的 code/文案判据)当时没有任何限次 ——
264
- * 那一腿在「run 仍 parked 而取件读到空表」的坐标失配态下每轮都命中,照样烧满 24 个 hop。
265
- * 闸坐标 = {@link noteAlreadyResolvedGate} + `parkResolver.MAX_ALREADY_RESOLVED_REATTACHES`
266
- * (同因连续第 2 次即不再 reattach),主修 = `parkResolver` 的坐标重探臂。
267
- */
268
46
  takeDecided(callId: string): boolean;
269
- /** 只给 debug 串用的规模位(`[decided so far: N]`)。 */
270
47
  decidedCount(): number;
271
- /**
272
- * 记一次「这张 park 被判成**已解决**」的命中,返回**同一判据源**的连续命中次数(第一次 = 1)。
273
- * 判据源换了(`key` 不等)⇒ 从 1 重新计。
274
- *
275
- * 🔴 为什么闸态放在台账而不是 `resolvePark` 里:`resolvePark` 是**无实例态的纯函数**,而这条闸
276
- * 要跨多次 park 才成立 —— 与 `hops` 同源(那也是驱动侧跨 park 累加、经 `ParkResolveCtx` 传进去
277
- * 的量)。台账是本 turn 里唯一活得比一次 park 长、且**只有一个写者**的载体。
278
- *
279
- * 🔴 `key` 必须是**归一化的判据源**(命中它的那个码 / 那个文案子串),不是原始 reason 串 ——
280
- * reason 里带着每轮都不一样的尾巴(`decide failed: Error: …`),拿它当键会让「连续」永远不成立,
281
- * 闸当场退化成空转([anchor-on-the-deciding-quantity])。
282
- */
283
48
  noteAlreadyResolvedGate(key: string): number;
284
- /** 判据链上出现了真进展(park 真被决断 / 重探把新坐标的卡呈出去了)⇒ 连续计数归零。 */
285
49
  resetAlreadyResolvedGate(): void;
286
50
  }
287
- /**
288
- * {@link GateLedger.noteStart} 那张在飞表的**容量上限**(L-69⑨,0.52.0)。
289
- *
290
- * 🔴 为什么必须有界:本表的写口是**每一张** `tool_start`,而它的删口(`tool_end` 收口)在两种真实
291
- * 形态下不会来 —— ①一个 turn 里 `tool_end` 先于本连接开始(durable re-attach 只消费 `runs.events`
292
- * 的一段);②run 被中止 / 连接断掉,在飞 call 的收口帧永远不到。无界表在长流多工具的 turn 上
293
- * 条目数会一直涨。
294
- *
295
- * 🔴 **上限量的是条目数(= 保留的引用数),不是字节数**(异源对抗复审 R1 finding① 采纳的措辞订正)。
296
- * 本表存的是 `ev.args` 的**引用**,不是拷贝 —— 而同一个 `ev` 在这一拍**照常 yield 下去**
297
- * (`frameRouter.routeToolStart` 返回 `{kind:'yield', events:[ev]}`),投影成 `SDKMessage` 之后
298
- * 那份入参在端的转录面上本来就活着。所以本表对**驻留字节**的增量是「一个指针 × 条目数」,
299
- * 它不复制载荷、也不是这条链上第一个持有它的容器:同文件的 {@link GateLedger.noteGatedStart}
300
- * 从本批之前就持着同一形的引用,而且**整个 turn 不删、连条目数都不设上限**。
301
- * ⚠️ 仍然如实说清**没有**守住的那一格:单条载荷本身**没有**字节预算(一次 `Write` 的
302
- * `content` 有多大,这里就跟着多引用多大一份多久)。真要按字节记账得先定义「多大算大」并同批给出
303
- * 超限时的降级形(截断 = 交出一份假入参,不许;整条不留 = 那只 call 的 deny 现场退回诚实缺席),
304
- * 属独立一件;本批**不做单边近似**,如实登记在此。
305
- * 🔴 为什么是 **256** 而不是更小:上限守的是「条目数无界增长」,而它必须**远大于**同一时刻真正在飞的
306
- * call 数,否则淘汰会打到还没收口的 call 身上(那正是本表要服务的对象)。引擎侧同一 turn 的并发
307
- * 工具批今天是个位数量级,单批 `tool_start` 连发也在两位数以内;256 给出的是两个数量级的余量。
308
- * 🔴 淘汰**按 FIFO 丢最早**(`Map` 的插入序):最早入表的那一条是**最久没有收口**的,它要么已经因为
309
- * 上面两种形态永远不会收口,要么它的消费窗(收口当拍)早就过去了 —— 丢它的代价最小。绝不按
310
- * 「随便丢一个」或整表清空(整表清空会把同批在飞的兄弟一起打掉)。
311
- * 🔴 **淘汰打到仍在飞的 call 时会怎样(成文的取舍,不是漏)**:那只 call 后来被分类器拒绝的话,
312
- * 宿主拿到的 `ctx` 只有 `toolCallId`、没有 `args` —— 即**诚实缺席**,端按可选处理照常降级渲
313
- * (契约见 `docs/INTEGRATION-CLIENTS.md` §15c 第 3 条)。这条路上唯一的替代品是「不淘汰」,
314
- * 而那就是无界表。durable 重放会把 `tool_start` 再送一遍,那是被淘汰项**拿回快照**的机会 ——
315
- * 所以 `frameRouter.routeToolStart` 把本动词排在渲染去重闸**之前**(见该站点注)。
316
- */
317
51
  export declare const START_ARGS_MAX_ENTRIES = 256;
318
- /** 造一份 turn 级 gate 台账(**不是单例**,见文件头注)。 */
319
52
  export declare function createGateLedger(): GateLedger;