@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,159 +1,23 @@
1
- /**
2
- * src/resumeRefusalCopy.ts — resume 族**拒绝文案的三端单一铸点**(L-102 下半场,0.58.0)。
3
- *
4
- * ── 这一件上收的是什么 ──────────────────────────────────────────────────────────────────────
5
- * 0.57.0 已经把 L-102 的**事实读数**上收了({@link resumeRetryLaterFromError}:命中哪个码、
6
- * server 给没给窗、等一会儿有没有用)。留在壳里的另一半是**人话** —— cli 1.0.x 的
7
- * `src/sema/resumeRefusalCopy.ts` 自铸了一份判型 + 三句 `·` 分段文案,而 web-client / desktop
8
- * 各自要么没有、要么将来会再抄一份。三端各抄一份文案 = 同一次拒绝在三个端上说三句不一样的话,
9
- * 而这三句话回答的是**同一个安全问题**:「这次拒绝有没有消费掉我的决定 / 这张卡还能不能再决」。
10
- * ⇒ 文案与判型同属**判定归包、呈现归端**里的「判定」那一半,本模块是它的单一铸点。
11
- *
12
- * ── 与 0.57.0 §21 那一口的分工(两个闭集刻意分家)──────────────────────────────────────────
13
- * · {@link RESUME_RETRY_LATER_CODES}(engineErrorCodes.ts,0.57.0)闭的是「**server 在哪些码上铸
14
- * `retryAfterSec`**」——它回答**能不能等**;
15
- * · {@link RESUME_REFUSAL_CODES}(本文件)闭的是「**哪些 resume 拒绝有人话可补**」——它回答
16
- * **该对人说什么**。
17
- * 两集**交于** `resume.preflight_rejected` 一码、**各有**一个独占成员
18
- * (`resume.usage_window_exhausted` 只在前者 / `resume.placement_mismatch` 只在后者),所以它们
19
- * 不是同一张表的两个名字。🔴 **本模块不复制判定**:`preflight_rejected` 的窗与可等性一律**转调**
20
- * `resumeRetryLaterFromError`,本文件里没有第二个 `retryAfterSec` 窄读器
21
- * ([paired-mechanisms-must-share-premise]:两处各自判必然在某一格上分叉)。
22
- *
23
- * ── `retryAfterSec` 的窄读域比 cli 1.0.x 现行的更窄(端提货时要知道的差分)──────────────────
24
- * cli 那份自铸读器收的是「有限数 ∧ ≥0」;本口沿用 §21 的域 =「**整数 ∧ ≥1**」,坏值一律降缺席:
25
- * · server 的铸键逐字是「ms → 秒**向上取整**、**下限 1**」⇒ 真供给里不存在 0 / 负数 / 小数;
26
- * · 放行 `0` 就是对端说「立刻重试」,而 resume 是 AT-MOST-ONCE 的**有副作用**动作(叫醒 = 真跑
27
- * 一轮)—— 一个 0 会把「等一会儿」变成热循环;
28
- * · 放行小数会让端渲出「等 0.4 秒」这种上游从未说过的量。
29
- * ⇒ 壳提货后在这三形上的**行为会变**(从「渲一个 0 秒等待」变成「不渲等待行」),这是**修好**
30
- * 不是回归([verdict-must-accept-stronger-form])。
31
- *
32
- * ── 开集纪律(与 cli 那份逐字同律)────────────────────────────────────────────────────────
33
- * 🔴 判型是**闭集**的(只认下面两个码),消费面是**开集**的:不认识的码一律 `null` ⇒ 端一个字
34
- * 都不补 ⇒ 机器可读那一行(`API Error: <status> <errorCode> · <msg>`)原样上屏。
35
- * **绝不按前缀/子串猜一族码的语义** —— `resume.` 前缀下同时住着「等就好」「换参数」「没救了」
36
- * 三种处置。
37
- * 🔴 文案**不复述** server 的 message(那一行已经在屏上了),只补 message 里没有的那件事。
38
- * 🔴 文案里**不铸等待的秒数**:那一行由端用 {@link ResumeRefusalDetail.retryAfterSec} 单独渲
39
- * (cli 的 `retryAfterHint` 是那一位的唯一取值口),在这里再说一遍就是同一个数字上屏两遍。
40
- */
41
1
  import { RESUME_CONTEXT_UNAVAILABLE } from './engineErrorCodes.js';
42
- /**
43
- * 本模块认识的 resume 拒绝码(**闭集**)—— 「有人话可补」的那两个。
44
- *
45
- * 🔴 **冻结数组,不是 `ReadonlySet`**(与 {@link RESUME_RETRY_LATER_CODES} 同一条已定谳的病形):
46
- * `ReadonlySet` 只在类型面只读,运行期是一只普通 `Set`,而判定查的就是这个实例 —— 公面上任何
47
- * JS 消费者一次 `.add('resume.evicted')` 就能让一条「重开吧」的拒绝挂上「你的决定没被消费」
48
- * 这句安全声明。冻结数组在运行期真的改不动(ESM 恒 strict:`push` / 下标赋值直接抛)。
49
- * 🔴 新增成员必须**同批**补文案 + 判据,不许靠前缀放宽。
50
- */
51
2
  export declare const RESUME_REFUSAL_CODES: readonly string[];
52
- /** {@link resumeRefusalFromError} 的结构化读数。 */
53
3
  export interface ResumeRefusalDetail {
54
- /** 命中的那一个码({@link RESUME_REFUSAL_CODES} 的成员之一)。 */
55
4
  code: string;
56
- /**
57
- * server 给的**等待秒数**(整数 ∧ ≥1;窄读域与 §21 同律,见模块顶注)。
58
- * 🔴 **缺席 = 服务端没给窗**,不是 0、不是「立刻」——绝不渲一个编出来的倒计时
59
- * ([honest-absence-not-fabricated-zero])。`resume.placement_mismatch` 上**恒缺席**
60
- * (server 只在时间性二码上铸这一位);`resume.preflight_rejected` 上按 server 供给。
61
- */
62
5
  retryAfterSec?: number;
63
- /**
64
- * **等一会儿再赎有没有用**(处置位;文案据它选第三句)。
65
- *
66
- * 🔴 **两个码上的 `false` 是两种「不」,别合并读**:
67
- * · `resume.preflight_rejected` 的 `false` = **不可判**(转调 {@link resumeRetryLaterFromError}
68
- * 的同名位:core 侧那条 `terminal` 臂与缺省 `retry_later` 臂的判别位只在 message 散文里,
69
- * 本包不按文案分臂 ⇒ 只认「server 真给了窗」这条正向证据);
70
- * · `resume.placement_mismatch` 的 `false` = **等没有用**(出路是换参数不是等时间,见该码顶注)。
71
- * 两者在文案上落到**不同的第三句**,所以消费端不必自己再分。
72
- */
73
6
  waitable: boolean;
74
7
  }
75
- /**
76
- * 被 catch 的错误 → resume 拒绝读数;不是这两个码 ⇒ `null`(绝不误吃别的 4xx)。
77
- *
78
- * 🔴 **duck-typed 不 `instanceof`**:三端注入面可能是宿主的裸 fetch、desktop 的 IPC 转投、web 跨
79
- * bundle 的 plain object(跨 bundle 同名类是两个类),这些形上 `instanceof` 一律为假而
80
- * `errorCode` 恒在。键位**只认 `errorCode`**([2055] 死键纪律,退役 `code` 槽不做兼容)。
81
- * 🔴 **判据只有 `errorCode`,不看 HTTP 数字**(与 §21 同口径):`resume.*` 那一族成员全是 409,
82
- * 按数字分支等于把几种不同处置压成一种。
83
- * 🔴 **`preflight_rejected` 的窗与可等性全部转调 §21 那一口**,本文件不复制判定。
84
- */
85
8
  export declare function resumeRefusalFromError(err: unknown): ResumeRefusalDetail | null;
86
- /**
87
- * 结构化读数 → 人话补充行(`·` 分段,与端上 quota / scenario 两个兄弟同形)。
88
- *
89
- * 三句的分工固定:①**发生了什么**(用户看得懂的那句)· ②**这次拒绝有没有消费掉你的决定**
90
- * (安全声明,两条臂都成立时才敢说)· ③**接下来怎么办 / 还能不能再决**。
91
- *
92
- * 🔴 第三句由 {@link ResumeRefusalDetail.waitable} 选,**不由 message 文本选**:按上游散文分支
93
- * 正是「上游改一个词、壳的判定静默空转」的形(wire 锚契约门要挡的就是它)。
94
- * 🔴 `preflight_rejected` 且 `waitable === false` 时说的是**两条臂都为真**的那句;`waitable === true`
95
- * 时 server 真给了窗 ——那是 `retry_later` 臂的**充分证据**(core 的 `terminal` 臂抛的
96
- * `CheckpointError` 一个 detail 都不带,窗结构上到不了客户端)⇒ 可以放心说「障碍清掉之后这个
97
- * token 还能再赎」。
98
- *
99
- * 🔴 **三句每一句都必须自足**(0.60.0 修;上游候包件 ①):无窗那一句此前写的是「The engine line
100
- * above says whether this token can still be redeemed」—— 它把答案**外包给了屏上另一行**,而
101
- * 那一行只有 **turn 级**报错路径才有。同一份文案在**决断路径**(审批卡 decide 的 409)上也照发,
102
- * 那条路上引擎原文按凭证纪律**根本不上屏** ⇒ 用户读到的是一句指向不存在的东西的指路话。
103
- * ⇒ 措辞改成只陈述**本读面自己知道的事实**(「引擎没给窗,所以这次拒绝没说它还能不能再赎」),
104
- * 在两条路上都为真。**不是**把那句话删掉换成沉默:「不知道」本身就是用户要的答案之一
105
- * ([honest-absence-not-fabricated-zero])。
106
- */
107
9
  export declare function resumeRefusalContent(detail: ResumeRefusalDetail): string;
108
- /** reopen 族的结构化读数:`reason` = 码去掉 `resume.` 前缀(端按它分臂渲原因);`retriable` 恒 true(族的定义)。 */
109
10
  export interface ResumeReopenDetail {
110
11
  code: string;
111
12
  reason: 'env_failed' | 'tool_unavailable' | 'tool_contract_mismatch';
112
13
  retriable: true;
113
14
  }
114
- /**
115
- * 只认 `errorCode`(退役 `code` 槽不做兼容,[2055] 死键纪律);同族别码 / 非对象 ⇒ null。
116
- * 🔴 **还必须 `retriable === true`**(异源复审实抓):server 只在 store **复核**过 checkpoint 真重开之后才铸
117
- * `retriable: true`(resume-legs.ts `checkpointReopened`,头注逐字「never inferred from the code alone」);同一个码也可能
118
- * 出现在 reopen 本身失败、checkpoint 已 resolved 的终局失败上(那时没有 `retriable`)。凭码就说「卡仍 pending、决定没被消费」
119
- * = 替 server 编一句安全声明。⇒ 缺席 / false ⇒ null(端走通用拒绝面,不渲再 park 文案)。
120
- */
121
15
  export declare function resumeReopenFromError(err: unknown): ResumeReopenDetail | null;
122
- /**
123
- * 三句 ` · ` 分段(与 quota / scenario / refusal 三个兄弟同形):原因 / 安全声明 / 出路。
124
- * 🔴 零内部车道词(DS-04):只说用户能做的事;不复述 server 的 message(那一行已在屏上)。
125
- */
126
16
  export declare function resumeReopenContent(detail: ResumeReopenDetail): string;
127
- /** {@link resumeContextUnavailableFromError} 的结构化读数。 */
128
17
  export interface ResumeContextUnavailableDetail {
129
- /** 恒为 {@link RESUME_CONTEXT_UNAVAILABLE}(留字段是为了与本文件其它读数同形,消费端可按 `code` 分派)。 */
130
18
  code: typeof RESUME_CONTEXT_UNAVAILABLE;
131
- /**
132
- * 该部署当下的会话保留时长(整数秒;server 逐字 = `REAP_RUN_STALE_SEC` 真值,与回收器用的是同一个值)。
133
- * 🔴 窄读域 = 整数 ∧ ≥1(与 `retryAfterSec` 同律);坏值**降缺席**不降 0。
134
- * 🔴 缺席 = **没读到**:老 server(<7.80.1)不铸这一位,**sdk 9.6.0 也还没把它带到错误对象上**
135
- * (`ConflictError` 只带 activeTaskId 三件)⇒ 经 sdk 的端今天恒缺席;这不是「保留时长为零」,
136
- * 端渲「部署保留时长」那一行时缺席就**不渲**([honest-absence-not-fabricated-zero])。
137
- */
138
19
  staleAfterSec?: number;
139
- /** 这条 run 的 id(体上既有键;非空串才在场)—— 出路①「自己恢复这条 run」用的句柄。缺席同上(sdk 未带)。 */
140
20
  runId?: string;
141
21
  }
142
- /**
143
- * 被 catch 的错误 → 「批准无处投递:上下文当前不可用」读数;不是本码 ⇒ `null`(绝不误吃别的 `conflict.*`)。
144
- *
145
- * 🔴 duck-typed 不 `instanceof`、键位只认 `errorCode`(与 {@link resumeRefusalFromError} 同律;退役 `code` 槽不做兼容)。
146
- * 🔴 **本码不进两个 resume 闭集**:server 在上下文被回收 **或读取失败** 时都发它,能不能等 wire 上没有判别位 ⇒ 不进「可等」集;
147
- * 也不是「换参数重来」⇒ 不进 refusal 集;出路见文案第三句(按 `runId` 在场与否)。
148
- * 🔴 `staleAfterSec` / `runId` 都按结构读:server 铸在体上、sdk 今天没搬上来 ⇒ 缺席;sdk 出键当天自动填满,本包零改动。
149
- */
150
22
  export declare function resumeContextUnavailableFromError(err: unknown): ResumeContextUnavailableDetail | null;
151
- /**
152
- * 读数 → 人话三句(`·` 分段,与 {@link resumeRefusalContent} 同形):①发生了什么 · ②你的决定没被消费 · ③出路。
153
- * 🔴 **只凭码不推断原因**(异源对抗复审实抓):server 在「上下文被回收」与「上下文读取失败(如存储故障)」两种情况下
154
- * 都返回本码,wire 上没有判别位 ⇒ 第一句只说「当前没有可用的上下文来继续它」,不说「等得太久 / 已被回收」。
155
- * 🔴 **调大保留时长救不回这一次**(上下文已删就是删了),它只能避免以后再发生 ⇒ 第三句按 `runId` 在场与否给恢复指引,
156
- * 保留时长只作预防句。零内部车道词;{@link ResumeContextUnavailableDetail.staleAfterSec} 在场时第三句**带原数**
157
- * (0.72.9 CC-45:此前留给端渲而端没渲 ⇒ 有数必渲),缺席就不渲、不编。
158
- */
159
23
  export declare function resumeContextUnavailableContent(d: ResumeContextUnavailableDetail): string;
@@ -1,68 +1,9 @@
1
- /**
2
- * src/resumeRefusalCopy.ts — resume 族**拒绝文案的三端单一铸点**(L-102 下半场,0.58.0)。
3
- *
4
- * ── 这一件上收的是什么 ──────────────────────────────────────────────────────────────────────
5
- * 0.57.0 已经把 L-102 的**事实读数**上收了({@link resumeRetryLaterFromError}:命中哪个码、
6
- * server 给没给窗、等一会儿有没有用)。留在壳里的另一半是**人话** —— cli 1.0.x 的
7
- * `src/sema/resumeRefusalCopy.ts` 自铸了一份判型 + 三句 `·` 分段文案,而 web-client / desktop
8
- * 各自要么没有、要么将来会再抄一份。三端各抄一份文案 = 同一次拒绝在三个端上说三句不一样的话,
9
- * 而这三句话回答的是**同一个安全问题**:「这次拒绝有没有消费掉我的决定 / 这张卡还能不能再决」。
10
- * ⇒ 文案与判型同属**判定归包、呈现归端**里的「判定」那一半,本模块是它的单一铸点。
11
- *
12
- * ── 与 0.57.0 §21 那一口的分工(两个闭集刻意分家)──────────────────────────────────────────
13
- * · {@link RESUME_RETRY_LATER_CODES}(engineErrorCodes.ts,0.57.0)闭的是「**server 在哪些码上铸
14
- * `retryAfterSec`**」——它回答**能不能等**;
15
- * · {@link RESUME_REFUSAL_CODES}(本文件)闭的是「**哪些 resume 拒绝有人话可补**」——它回答
16
- * **该对人说什么**。
17
- * 两集**交于** `resume.preflight_rejected` 一码、**各有**一个独占成员
18
- * (`resume.usage_window_exhausted` 只在前者 / `resume.placement_mismatch` 只在后者),所以它们
19
- * 不是同一张表的两个名字。🔴 **本模块不复制判定**:`preflight_rejected` 的窗与可等性一律**转调**
20
- * `resumeRetryLaterFromError`,本文件里没有第二个 `retryAfterSec` 窄读器
21
- * ([paired-mechanisms-must-share-premise]:两处各自判必然在某一格上分叉)。
22
- *
23
- * ── `retryAfterSec` 的窄读域比 cli 1.0.x 现行的更窄(端提货时要知道的差分)──────────────────
24
- * cli 那份自铸读器收的是「有限数 ∧ ≥0」;本口沿用 §21 的域 =「**整数 ∧ ≥1**」,坏值一律降缺席:
25
- * · server 的铸键逐字是「ms → 秒**向上取整**、**下限 1**」⇒ 真供给里不存在 0 / 负数 / 小数;
26
- * · 放行 `0` 就是对端说「立刻重试」,而 resume 是 AT-MOST-ONCE 的**有副作用**动作(叫醒 = 真跑
27
- * 一轮)—— 一个 0 会把「等一会儿」变成热循环;
28
- * · 放行小数会让端渲出「等 0.4 秒」这种上游从未说过的量。
29
- * ⇒ 壳提货后在这三形上的**行为会变**(从「渲一个 0 秒等待」变成「不渲等待行」),这是**修好**
30
- * 不是回归([verdict-must-accept-stronger-form])。
31
- *
32
- * ── 开集纪律(与 cli 那份逐字同律)────────────────────────────────────────────────────────
33
- * 🔴 判型是**闭集**的(只认下面两个码),消费面是**开集**的:不认识的码一律 `null` ⇒ 端一个字
34
- * 都不补 ⇒ 机器可读那一行(`API Error: <status> <errorCode> · <msg>`)原样上屏。
35
- * **绝不按前缀/子串猜一族码的语义** —— `resume.` 前缀下同时住着「等就好」「换参数」「没救了」
36
- * 三种处置。
37
- * 🔴 文案**不复述** server 的 message(那一行已经在屏上了),只补 message 里没有的那件事。
38
- * 🔴 文案里**不铸等待的秒数**:那一行由端用 {@link ResumeRefusalDetail.retryAfterSec} 单独渲
39
- * (cli 的 `retryAfterHint` 是那一位的唯一取值口),在这里再说一遍就是同一个数字上屏两遍。
40
- */
41
1
  import { RESUME_CONTEXT_UNAVAILABLE, RESUME_PLACEMENT_MISMATCH, RESUME_PREFLIGHT_REJECTED, RESUME_REOPEN_CODES, RESUME_ENV_FAILED, RESUME_TOOL_UNAVAILABLE, } from './engineErrorCodes.js';
42
2
  import { resumeRetryLaterFromError } from './wireErrorTriage.js';
43
- /**
44
- * 本模块认识的 resume 拒绝码(**闭集**)—— 「有人话可补」的那两个。
45
- *
46
- * 🔴 **冻结数组,不是 `ReadonlySet`**(与 {@link RESUME_RETRY_LATER_CODES} 同一条已定谳的病形):
47
- * `ReadonlySet` 只在类型面只读,运行期是一只普通 `Set`,而判定查的就是这个实例 —— 公面上任何
48
- * JS 消费者一次 `.add('resume.evicted')` 就能让一条「重开吧」的拒绝挂上「你的决定没被消费」
49
- * 这句安全声明。冻结数组在运行期真的改不动(ESM 恒 strict:`push` / 下标赋值直接抛)。
50
- * 🔴 新增成员必须**同批**补文案 + 判据,不许靠前缀放宽。
51
- */
52
3
  export const RESUME_REFUSAL_CODES = Object.freeze([
53
4
  RESUME_PLACEMENT_MISMATCH,
54
5
  RESUME_PREFLIGHT_REJECTED,
55
6
  ]);
56
- /**
57
- * 被 catch 的错误 → resume 拒绝读数;不是这两个码 ⇒ `null`(绝不误吃别的 4xx)。
58
- *
59
- * 🔴 **duck-typed 不 `instanceof`**:三端注入面可能是宿主的裸 fetch、desktop 的 IPC 转投、web 跨
60
- * bundle 的 plain object(跨 bundle 同名类是两个类),这些形上 `instanceof` 一律为假而
61
- * `errorCode` 恒在。键位**只认 `errorCode`**([2055] 死键纪律,退役 `code` 槽不做兼容)。
62
- * 🔴 **判据只有 `errorCode`,不看 HTTP 数字**(与 §21 同口径):`resume.*` 那一族成员全是 409,
63
- * 按数字分支等于把几种不同处置压成一种。
64
- * 🔴 **`preflight_rejected` 的窗与可等性全部转调 §21 那一口**,本文件不复制判定。
65
- */
66
7
  export function resumeRefusalFromError(err) {
67
8
  if (typeof err !== 'object' || err === null)
68
9
  return null;
@@ -70,13 +11,9 @@ export function resumeRefusalFromError(err) {
70
11
  if (typeof code !== 'string' || !RESUME_REFUSAL_CODES.includes(code))
71
12
  return null;
72
13
  if (code === RESUME_PLACEMENT_MISMATCH) {
73
- // 时间性闭集里没有本码,也不该有(见该码顶注):无窗、且等一会儿对它毫无用处。
74
14
  return { code, waitable: false };
75
15
  }
76
- // `resume.preflight_rejected` —— 两集的交点,事实读数**只有一个来源**。
77
16
  const timed = resumeRetryLaterFromError(err);
78
- // 🔴 `null` 在今天不可达(本码同在两个闭集里,交点由门双向钉死)。真出现 = 上游把本码移出了
79
- // 时间性闭集 ⇒ 「有没有窗」这件事**本包不再知道**,按诚实缺席读作不可判,绝不自己再判一次。
80
17
  if (timed === null)
81
18
  return { code, waitable: false };
82
19
  return {
@@ -85,27 +22,6 @@ export function resumeRefusalFromError(err) {
85
22
  ...(timed.retryAfterSec !== undefined ? { retryAfterSec: timed.retryAfterSec } : {}),
86
23
  };
87
24
  }
88
- /**
89
- * 结构化读数 → 人话补充行(`·` 分段,与端上 quota / scenario 两个兄弟同形)。
90
- *
91
- * 三句的分工固定:①**发生了什么**(用户看得懂的那句)· ②**这次拒绝有没有消费掉你的决定**
92
- * (安全声明,两条臂都成立时才敢说)· ③**接下来怎么办 / 还能不能再决**。
93
- *
94
- * 🔴 第三句由 {@link ResumeRefusalDetail.waitable} 选,**不由 message 文本选**:按上游散文分支
95
- * 正是「上游改一个词、壳的判定静默空转」的形(wire 锚契约门要挡的就是它)。
96
- * 🔴 `preflight_rejected` 且 `waitable === false` 时说的是**两条臂都为真**的那句;`waitable === true`
97
- * 时 server 真给了窗 ——那是 `retry_later` 臂的**充分证据**(core 的 `terminal` 臂抛的
98
- * `CheckpointError` 一个 detail 都不带,窗结构上到不了客户端)⇒ 可以放心说「障碍清掉之后这个
99
- * token 还能再赎」。
100
- *
101
- * 🔴 **三句每一句都必须自足**(0.60.0 修;上游候包件 ①):无窗那一句此前写的是「The engine line
102
- * above says whether this token can still be redeemed」—— 它把答案**外包给了屏上另一行**,而
103
- * 那一行只有 **turn 级**报错路径才有。同一份文案在**决断路径**(审批卡 decide 的 409)上也照发,
104
- * 那条路上引擎原文按凭证纪律**根本不上屏** ⇒ 用户读到的是一句指向不存在的东西的指路话。
105
- * ⇒ 措辞改成只陈述**本读面自己知道的事实**(「引擎没给窗,所以这次拒绝没说它还能不能再赎」),
106
- * 在两条路上都为真。**不是**把那句话删掉换成沉默:「不知道」本身就是用户要的答案之一
107
- * ([honest-absence-not-fabricated-zero])。
108
- */
109
25
  export function resumeRefusalContent(detail) {
110
26
  const parts = [];
111
27
  if (detail.code === RESUME_PLACEMENT_MISMATCH) {
@@ -118,18 +34,10 @@ export function resumeRefusalContent(detail) {
118
34
  parts.push('The refusal happened before the commit — your decision was not consumed');
119
35
  parts.push(detail.waitable
120
36
  ? 'The engine supplied a wait, so this token stays redeemable once the obstacle clears'
121
- : // 🔴 自足措辞(见函数顶注):只说本读面知道的事 —— 引擎没给窗,所以这次拒绝**没有**表态
122
- // 这个 token 还能不能再赎。绝不指向「上面那一行」(决断路径上没有那一行)。
37
+ :
123
38
  'The engine supplied no wait, so this refusal does not say whether the token stays redeemable');
124
39
  return parts.join(' · ');
125
40
  }
126
- /**
127
- * 只认 `errorCode`(退役 `code` 槽不做兼容,[2055] 死键纪律);同族别码 / 非对象 ⇒ null。
128
- * 🔴 **还必须 `retriable === true`**(异源复审实抓):server 只在 store **复核**过 checkpoint 真重开之后才铸
129
- * `retriable: true`(resume-legs.ts `checkpointReopened`,头注逐字「never inferred from the code alone」);同一个码也可能
130
- * 出现在 reopen 本身失败、checkpoint 已 resolved 的终局失败上(那时没有 `retriable`)。凭码就说「卡仍 pending、决定没被消费」
131
- * = 替 server 编一句安全声明。⇒ 缺席 / false ⇒ null(端走通用拒绝面,不渲再 park 文案)。
132
- */
133
41
  export function resumeReopenFromError(err) {
134
42
  if (typeof err !== 'object' || err === null)
135
43
  return null;
@@ -141,10 +49,6 @@ export function resumeReopenFromError(err) {
141
49
  const reason = code.slice('resume.'.length);
142
50
  return { code, reason, retriable: true };
143
51
  }
144
- /**
145
- * 三句 ` · ` 分段(与 quota / scenario / refusal 三个兄弟同形):原因 / 安全声明 / 出路。
146
- * 🔴 零内部车道词(DS-04):只说用户能做的事;不复述 server 的 message(那一行已在屏上)。
147
- */
148
52
  export function resumeReopenContent(detail) {
149
53
  const first = detail.code === RESUME_ENV_FAILED
150
54
  ? 'The execution environment for this parked work could not be brought back'
@@ -157,14 +61,6 @@ export function resumeReopenContent(detail) {
157
61
  'Re-fetch the pending approvals and decide again on an engine where the same tool is available',
158
62
  ].join(' · ');
159
63
  }
160
- /**
161
- * 被 catch 的错误 → 「批准无处投递:上下文当前不可用」读数;不是本码 ⇒ `null`(绝不误吃别的 `conflict.*`)。
162
- *
163
- * 🔴 duck-typed 不 `instanceof`、键位只认 `errorCode`(与 {@link resumeRefusalFromError} 同律;退役 `code` 槽不做兼容)。
164
- * 🔴 **本码不进两个 resume 闭集**:server 在上下文被回收 **或读取失败** 时都发它,能不能等 wire 上没有判别位 ⇒ 不进「可等」集;
165
- * 也不是「换参数重来」⇒ 不进 refusal 集;出路见文案第三句(按 `runId` 在场与否)。
166
- * 🔴 `staleAfterSec` / `runId` 都按结构读:server 铸在体上、sdk 今天没搬上来 ⇒ 缺席;sdk 出键当天自动填满,本包零改动。
167
- */
168
64
  export function resumeContextUnavailableFromError(err) {
169
65
  if (typeof err !== 'object' || err === null)
170
66
  return null;
@@ -180,19 +76,7 @@ export function resumeContextUnavailableFromError(err) {
180
76
  ...(runId !== undefined ? { runId } : {}),
181
77
  };
182
78
  }
183
- /**
184
- * 读数 → 人话三句(`·` 分段,与 {@link resumeRefusalContent} 同形):①发生了什么 · ②你的决定没被消费 · ③出路。
185
- * 🔴 **只凭码不推断原因**(异源对抗复审实抓):server 在「上下文被回收」与「上下文读取失败(如存储故障)」两种情况下
186
- * 都返回本码,wire 上没有判别位 ⇒ 第一句只说「当前没有可用的上下文来继续它」,不说「等得太久 / 已被回收」。
187
- * 🔴 **调大保留时长救不回这一次**(上下文已删就是删了),它只能避免以后再发生 ⇒ 第三句按 `runId` 在场与否给恢复指引,
188
- * 保留时长只作预防句。零内部车道词;{@link ResumeContextUnavailableDetail.staleAfterSec} 在场时第三句**带原数**
189
- * (0.72.9 CC-45:此前留给端渲而端没渲 ⇒ 有数必渲),缺席就不渲、不编。
190
- */
191
79
  export function resumeContextUnavailableContent(d) {
192
- // 0.72.9 CC-45(cli L-383 / test [7516] N-G10):**有数必渲、无数不编**。0.72.1 曾把秒数留给端「单独渲」而端没渲 ⇒ 补充句永无
193
- // 保留秒数;归层改为本句直接带原数(整数秒,读口已窄读),缺席时本句逐字同 0.72.1。
194
- // 🔴 措辞铸点是最后一关(opus 替补复审 [low]):公面函数入参可被手工构造,`0` / 非整数 / 巨数与读口同一判据(整数 ∧ ≥1)才渲,
195
- // 否则不渲 —— 绝不渲「0 秒」这种看起来像答案的空壳。
196
80
  const sec = d.staleAfterSec;
197
81
  const retention = typeof sec === 'number' && Number.isSafeInteger(sec) && sec >= 1 ? `(本部署的会话保留时长为 ${sec} 秒)` : '';
198
82
  const third = (d.runId !== undefined
@@ -1,51 +1,3 @@
1
- /**
2
- * ⇄ B2 批搬迁(2026-07-27,多端改造设计稿 §3 B2):cli src/sema/retainBackgroundWireCaps.ts 逐字搬入(零依赖)。
3
- */
4
- /**
5
- * src/sema/retainBackgroundWireCaps.ts — PURE projection: the shell's "retain background processes past
6
- * task teardown" opt-in → the TOP-LEVEL `TaskRequest.retainBackgroundProcesses` boolean the SERVICE consumes
7
- * (spec-fields.js `retainBackgroundProcessesFromBody`: `raw !== true` ⇒ dropped;requirePrincipal 多租户形
8
- * 服务端另有门)。Mirrors selfOrchestrationWireCaps(the verified top-of-body wire pattern)。
9
- *
10
- * 背景([1046] 核谳,TB [991]② reap 族):core 直跑腿(sema-tb)出厂显式
11
- * `retainBackgroundProcesses:true`(design/128 T1-1——「交付存活服务」任务的 verifier 在进程退出后
12
- * 才连接),而组合腿产品曾默认关 ⇒ 两腿在 reap 族不是同一场考试。
13
- *
14
- * ⚠️ 缺省已翻转为 ON(clay 亲报「后台 shell 命令跑到一半被杀」案,2026-07-26;[1046]④ 的裁量件本次
15
- * 由真实场景需求兑现)。缺省不发时,引擎 turn finally 的**两道门**都关着:
16
- * ① `settleKilledForOwner({retainProcesses})` 的 retain 豁免;
17
- * ② `retainBgBySpec = spec.retainBackgroundProcesses === true && !ownedEnvDying` —— 为真才整块跳过
18
- * `bgEnv.disposeBackgroundShells(...)`(该 blanket sweep 不经 task-registry,故被它收掉的任务
19
- * `stopSource` 为空,终态归因落到 `stoppedBy = "system"` 缺省 = clay 观察到的 `stopped-by: system`)。
20
- *
21
- * 三问(宪法 NO-SHIP 检查):
22
- * 谁需要:真人用户 —— `run_in_background` 起的构建/测试/服务在当轮结束后必须还活着,否则
23
- * BashOutput/TaskOutput 续读到的是尸体(clay 案:输出文件 0 字节 + status killed)。
24
- * 谁受害:隔离执行环境(e2b/k8s/ssh 等 `isIsolated(env)`)—— 那里 `ownedEnvDying` 为真,retain 被
25
- * **无条件覆盖**(core 侧 `!opts.envDying` / `&& !ownedEnvDying`),进程随宿主一起走。这是
26
- * 正确的:进程宿主没了,留 handle 无意义。故本翻转对隔离腿零语义变化。
27
- * 次级受害面 = 本机资源泄漏(后台进程活过当轮)—— 但这正是 CC 的既定契约,不是回归。
28
- * 补偿机制:`SEMA_RETAIN_BACKGROUND=0|false|no|off` 逃生口 ⇒ 不 stamp ⇒ 回引擎缺省 reap;
29
- * 进程始终可由 KillShell/TaskStop 显式收,`/bashes` 面板可见可停;引擎 hard-wall
30
- * (defaultBgTimeoutSec 30min / maxBgTimeoutSec 2h)仍是兜底上限。
31
- *
32
- * CC 逐字锚(对标纲领 = 100% 达 CC 效果):CC 的 Bash `run_in_background` 契约 = 进程活过当轮,
33
- * 由 BashOutput 续读、KillShell 显式收 —— **不在 turn 边界回收**。缺省 reap 是对 CC 的偏离,本次钉回。
34
- *
35
- * 语义:缺省 ON —— unset / 未识别值 ⇒ `true`(stamp);显式 truthy(1/true/yes/on)⇒ `true`;
36
- * 只有显式 falsy(0/false/no/off)⇒ `undefined`(不 stamp ⇒ 引擎缺省 reap)。
37
- * 服务端 `retainBackgroundProcessesFromBody` 是 `raw !== true ⇒ 丢弃` 的严格刻度,所以 opt-out 一律
38
- * 表达为**不 stamp**,绝不发 `false`(形状诚实)。
39
- * PURE — callers pass `env`;caller gates to LIVE mode(mock request shape 不变)。
40
- */
41
1
  import { type EnvLike } from './hostEnv.js';
42
- /** The env key the shell reads(SEMA_ 命名空间,与引擎自己的 spec∨env 通道正交——这里是壳→
43
- * TaskRequest 的 per-request 意图面,非引擎部署面)。 */
44
2
  export declare const RETAIN_BACKGROUND_ENV: "SEMA_RETAIN_BACKGROUND";
45
- /**
46
- * ENV source → `true`(缺省 ON = CC `run_in_background` 契约:后台进程活过当轮),
47
- * 只有显式 falsy 逃生口({@link envFlagOff} 拼写集,REF-CC-141 dup-02 单源)⇒ `undefined`
48
- * (不 stamp ⇒ 引擎缺省 reap)。返回型刻意是 `true | undefined` —— 服务端 `raw !== true ⇒ 丢弃`,
49
- * opt-out 只能表达为「不 stamp」。
50
- */
51
3
  export declare function retainBackgroundFromEnv(env?: EnvLike): true | undefined;
@@ -1,54 +1,6 @@
1
- /**
2
- * ⇄ B2 批搬迁(2026-07-27,多端改造设计稿 §3 B2):cli src/sema/retainBackgroundWireCaps.ts 逐字搬入(零依赖)。
3
- */
4
- /**
5
- * src/sema/retainBackgroundWireCaps.ts — PURE projection: the shell's "retain background processes past
6
- * task teardown" opt-in → the TOP-LEVEL `TaskRequest.retainBackgroundProcesses` boolean the SERVICE consumes
7
- * (spec-fields.js `retainBackgroundProcessesFromBody`: `raw !== true` ⇒ dropped;requirePrincipal 多租户形
8
- * 服务端另有门)。Mirrors selfOrchestrationWireCaps(the verified top-of-body wire pattern)。
9
- *
10
- * 背景([1046] 核谳,TB [991]② reap 族):core 直跑腿(sema-tb)出厂显式
11
- * `retainBackgroundProcesses:true`(design/128 T1-1——「交付存活服务」任务的 verifier 在进程退出后
12
- * 才连接),而组合腿产品曾默认关 ⇒ 两腿在 reap 族不是同一场考试。
13
- *
14
- * ⚠️ 缺省已翻转为 ON(clay 亲报「后台 shell 命令跑到一半被杀」案,2026-07-26;[1046]④ 的裁量件本次
15
- * 由真实场景需求兑现)。缺省不发时,引擎 turn finally 的**两道门**都关着:
16
- * ① `settleKilledForOwner({retainProcesses})` 的 retain 豁免;
17
- * ② `retainBgBySpec = spec.retainBackgroundProcesses === true && !ownedEnvDying` —— 为真才整块跳过
18
- * `bgEnv.disposeBackgroundShells(...)`(该 blanket sweep 不经 task-registry,故被它收掉的任务
19
- * `stopSource` 为空,终态归因落到 `stoppedBy = "system"` 缺省 = clay 观察到的 `stopped-by: system`)。
20
- *
21
- * 三问(宪法 NO-SHIP 检查):
22
- * 谁需要:真人用户 —— `run_in_background` 起的构建/测试/服务在当轮结束后必须还活着,否则
23
- * BashOutput/TaskOutput 续读到的是尸体(clay 案:输出文件 0 字节 + status killed)。
24
- * 谁受害:隔离执行环境(e2b/k8s/ssh 等 `isIsolated(env)`)—— 那里 `ownedEnvDying` 为真,retain 被
25
- * **无条件覆盖**(core 侧 `!opts.envDying` / `&& !ownedEnvDying`),进程随宿主一起走。这是
26
- * 正确的:进程宿主没了,留 handle 无意义。故本翻转对隔离腿零语义变化。
27
- * 次级受害面 = 本机资源泄漏(后台进程活过当轮)—— 但这正是 CC 的既定契约,不是回归。
28
- * 补偿机制:`SEMA_RETAIN_BACKGROUND=0|false|no|off` 逃生口 ⇒ 不 stamp ⇒ 回引擎缺省 reap;
29
- * 进程始终可由 KillShell/TaskStop 显式收,`/bashes` 面板可见可停;引擎 hard-wall
30
- * (defaultBgTimeoutSec 30min / maxBgTimeoutSec 2h)仍是兜底上限。
31
- *
32
- * CC 逐字锚(对标纲领 = 100% 达 CC 效果):CC 的 Bash `run_in_background` 契约 = 进程活过当轮,
33
- * 由 BashOutput 续读、KillShell 显式收 —— **不在 turn 边界回收**。缺省 reap 是对 CC 的偏离,本次钉回。
34
- *
35
- * 语义:缺省 ON —— unset / 未识别值 ⇒ `true`(stamp);显式 truthy(1/true/yes/on)⇒ `true`;
36
- * 只有显式 falsy(0/false/no/off)⇒ `undefined`(不 stamp ⇒ 引擎缺省 reap)。
37
- * 服务端 `retainBackgroundProcessesFromBody` 是 `raw !== true ⇒ 丢弃` 的严格刻度,所以 opt-out 一律
38
- * 表达为**不 stamp**,绝不发 `false`(形状诚实)。
39
- * PURE — callers pass `env`;caller gates to LIVE mode(mock request shape 不变)。
40
- */
41
1
  import { hostEnv } from './hostEnv.js';
42
2
  import { envFlagOff } from './envFlag.js';
43
- /** The env key the shell reads(SEMA_ 命名空间,与引擎自己的 spec∨env 通道正交——这里是壳→
44
- * TaskRequest 的 per-request 意图面,非引擎部署面)。 */
45
3
  export const RETAIN_BACKGROUND_ENV = 'SEMA_RETAIN_BACKGROUND';
46
- /**
47
- * ENV source → `true`(缺省 ON = CC `run_in_background` 契约:后台进程活过当轮),
48
- * 只有显式 falsy 逃生口({@link envFlagOff} 拼写集,REF-CC-141 dup-02 单源)⇒ `undefined`
49
- * (不 stamp ⇒ 引擎缺省 reap)。返回型刻意是 `true | undefined` —— 服务端 `raw !== true ⇒ 丢弃`,
50
- * opt-out 只能表达为「不 stamp」。
51
- */
52
4
  export function retainBackgroundFromEnv(env = hostEnv()) {
53
5
  return envFlagOff(env[RETAIN_BACKGROUND_ENV]) ? undefined : true;
54
6
  }