@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,27 +1,6 @@
1
- /**
2
- * ⇄ B6 批搬迁(2026-07-27,设计稿 §3 B6):workflow 监视器的**状态契约**(MF-W ·
3
- * contract/MF-W-workflow-monitor.md)从 cli `src/sema/overrides/workflow-detail-dialog.tsx:118-200`
4
- * 搬入 —— 逐字,一个字段都没动。
5
- *
6
- * 🔴 **为什么类型必须先过来**:`workflowClient.projectWorkflowRun()`(同批搬入)的**产物**就是这套
7
- * 形状。类型留在一个 `.tsx` 渲染文件里,等于「库产出的东西,它的契约住在 TUI 里」——
8
- * web/桌面要消费同一份投影就得手抄一遍 shape,而手抄的那份**没有任何东西**会在它漂移时报红。
9
- * 定位公理([1832])说的「CC 皮肤形状全收本包」,指的正是这种东西。
10
- *
11
- * 🔴 **拆缝**:`workflow-detail-dialog.tsx` 本身是 Ink 渲染件(设计稿 §2 分类表「Ink 渲染」),
12
- * **留 TUI**;搬过来的只有 ① 六个契约类型 ② `agentDisplayStatus`(WPe —— 从 wire 输入词表
13
- * 派生显示态的那条**纯**规则,是本契约的消费侧半场,端端都要用)。
14
- * 留在 TUI 的:`computeVisibleWindow`(滚动窗口数学 = 视口概念,端专属)、glyph/color 映射、
15
- * 以及整棵 JSX。壳侧 shim = 那个 tsx 改成从本包 re-export 这两样,自己不再定义。
16
- */
17
1
  import type { WorkflowParkRowView } from './workflowClient.js';
18
- export type AgentState = 'start' | 'progress' | 'queued' | 'done' | 'error' | 'inactive'
19
- /** sema 超集:这条腿耐久挂在一张审批卡上(engine core 7.10.0 #642)。见上方头注。 */
20
- | 'parked';
21
- export type DisplayStatus = 'queued' | 'running' | 'done' | 'failed' | 'skipped' | 'interrupted'
22
- /** sema 超集:同上。🔴 端的 glyph/颜色映射是**穷尽形**,加这一词就必须同批加一条 case
23
- * (措辞按「waiting for approval」一类,别复用 running 的字与色)。 */
24
- | 'parked';
2
+ export type AgentState = 'start' | 'progress' | 'queued' | 'done' | 'error' | 'inactive' | 'parked';
3
+ export type DisplayStatus = 'queued' | 'running' | 'done' | 'failed' | 'skipped' | 'interrupted' | 'parked';
25
4
  export interface WorkflowToolCall {
26
5
  name: string;
27
6
  summary?: string;
@@ -36,40 +15,26 @@ export interface WorkflowAgent {
36
15
  remoteSessionId?: string;
37
16
  cached?: boolean;
38
17
  state: AgentState;
39
- /** WPe maps state→display; `skipped` distinguishes an error that was a user-skip. */
40
18
  skipped?: boolean;
41
19
  tokens?: number;
42
20
  toolCalls?: number;
43
21
  durationMs?: number;
44
22
  queuedAt?: number;
45
23
  startedAt?: number;
46
- /** ofm/C0l: `idle <t>` when running and lastProgressAt is ≥30s ago. (contract: idleSince) */
47
24
  lastProgressAt?: number;
48
25
  attempt?: number;
49
26
  lastAttemptReason?: 'throttled' | 'user-retry' | 'stalled';
50
27
  error?: string;
51
28
  agentId?: string;
52
- /**
53
- * #242 批 1(A-028.8):`ctx.agent` 调用的**稳定确定性身份**(resume-journal key,
54
- * SDK `WorkflowAgentRow.callKey`)。运行期 activity 台账的 SSE 帧(`agent_activity`)以它为键,
55
- * 而此前投影把它丢了 —— 于是 label 成了合并层唯一的钥匙,同名 agent 只能整组跳过。
56
- * 投影带出它之后,重名 label 也能精确归属;缺席(老引擎/老 run)时才回落到 label。
57
- */
58
29
  callKey?: string;
59
- /** detail "Prompt" body; promptPreview is the fallback when no transcript is loaded. */
60
30
  promptPreview?: string;
61
- /** detail "Activity" rows. */
62
31
  activity?: WorkflowToolCall[];
63
32
  lastToolName?: string;
64
33
  lastToolSummary?: string;
65
- /** detail "Outcome" body for done agents (the StructuredOutput JSON / final text). */
66
34
  resultPreview?: string;
67
35
  }
68
36
  export interface WorkflowPhase {
69
37
  title: string;
70
- /** 🔴 `parked` = 这一格里没有一条腿能自己往前走(全员不是完成就是停在审批门上)。见 `AgentState`
71
- * 的同名头注;上游今天不给 phase 铸这个词(core:「a phase or group never parks」),本包这一位有两个
72
- * 来路:①上游哪天真铸了 ⇒ 原词透出而不是折成 running;②本包从桶里的腿**推**出来。 */
73
38
  status: 'not-started' | 'running' | 'done' | 'failed' | 'parked' | 'unknown';
74
39
  doneCount: number;
75
40
  totalCount: number;
@@ -82,48 +47,13 @@ export interface WorkflowRunState {
82
47
  summary?: string;
83
48
  script: string;
84
49
  scriptPath?: string;
85
- /** 🔴 `parked`(0.63.1,additive):**前向预挂** —— engine core 7.10.0 的 run 级词表仍闭在
86
- * running|completed|failed(一条腿 park ⇒ 整只 run 按 `WorkflowAgentParkedError` 收在 `failed`),
87
- * 所以今天没有任何受支持的引擎在这一位上发 `parked`。留这条臂是为了「词真到了就原样透出」,
88
- * 绝不是说它现在会到 —— 判「这条 run 停着等人批」今天要看**腿**那一级(见 `AgentState.parked`)。 */
89
- /** 0.72.12 CC-51:`unknown`(additive)= wire 上认不出的 run 状态词;绝不再折成 running(端要渲原串请读 wire `run.status`)。 */
90
50
  status: 'running' | 'done' | 'failed' | 'stopped' | 'paused' | 'parked' | 'unknown';
91
51
  cloud?: boolean;
92
52
  agentCount: number;
93
- /** 🔴 0.73.0(BREAKING):可选。有键 ⇒ 总用量(含真 0);缺键 ⇒ 没有权威总数且有腿未报(或零条腿)—— 渲「—」,不渲 0。 */
94
53
  totalTokens?: number;
95
- /** phases as authored; the component derives the active/clamped windows itself. */
96
54
  phases: WorkflowPhase[];
97
- /**
98
- * CC-12(0.69.1;core 7.18.0 #755 / server ≥7.78.0):这条 run **负责**的 park 行(自己的 + 从被 resume 的 run 继承的),
99
- * 由 `readWorkflowParks` 铸(三键行 + never-false 第四键 `originUnconfirmed`)。🔴 缺席两义(与读器同):整键缺席 =
100
- * 旧引擎记录 / 读不出(证不出有没有 park);`[]` = 本引擎记录且一个 park 都没有。端渲 resume 候选时按这一位,
101
- * 不再各自 `run.parks.map(...)`(修前本视图丢了它,端结构性造不出 —— cli 接入回执 ④)。
102
- */
103
55
  parks?: readonly WorkflowParkRowView[];
104
- /** CC-12:在场 = 这条 resume run 的准入没完成 = **不是 resume 基**(core 逐字);缺席 = 常态。never false。 */
105
56
  resumeAdmissionIncomplete?: true;
106
- /** the 187 reads e.workflowProgress to recompute phases; the mock pre-builds them. */
107
57
  workflowProgress?: unknown;
108
58
  }
109
- /**
110
- * WPe — agentDisplayStatus: agent.state (+ workflowActive) → display status.
111
- *
112
- * FAITHFUL to the atlas state SET (atlas 0476_076:30-34). The atlas `WPe` reads ONLY these inputs:
113
- * if(state==="done") → "done"
114
- * if(state==="error") → skipped?"skipped":"failed"
115
- * if(!workflowActive) → "interrupted" // the inactive/non-active fallback
116
- * else → (queuedAt!=null && startedAt==null) ? "queued" : "running"
117
- * The atlas runner's agent-state enum the monitor sees is {start, progress, queued, done, error,
118
- * inactive} — there is NO `failed`/`skipped`/`interrupted`/`stopped`/`running` INPUT state; those are
119
- * DISPLAY statuses derived here: `failed`/`skipped` from `error` (+ the `skipped` flag), `interrupted` from
120
- * `!workflowActive` (the `inactive`/non-active fallback), and `queued`/`running` from the queuedAt/startedAt
121
- * fields on the active path. The AgentState type carries exactly this input set, so the type contract now
122
- * matches the atlas vocabulary 1:1 — the branches below consume only atlas input states and the output
123
- * DisplayStatus set + glyph/color mapping ($jn) is identical.
124
- *
125
- * 🔴 **`parked` 是这条规则上唯一的 sema 超集臂**(0.63.1):atlas 没有它,因为 CC 的编排里没有耐久
126
- * 审批这一层。它**不派生**——上游直接铸这个词(engine core 7.10.0 #642 的 agent 行 `status` 与
127
- * `deriveAgentDisplayStatus` 产物),这里只是不许把它折掉。臂的**位置**是承重的,理由写在分支处。
128
- */
129
59
  export declare function agentDisplayStatus(a: WorkflowAgent, workflowActive: boolean): DisplayStatus;
@@ -1,36 +1,10 @@
1
- /**
2
- * WPe — agentDisplayStatus: agent.state (+ workflowActive) → display status.
3
- *
4
- * FAITHFUL to the atlas state SET (atlas 0476_076:30-34). The atlas `WPe` reads ONLY these inputs:
5
- * if(state==="done") → "done"
6
- * if(state==="error") → skipped?"skipped":"failed"
7
- * if(!workflowActive) → "interrupted" // the inactive/non-active fallback
8
- * else → (queuedAt!=null && startedAt==null) ? "queued" : "running"
9
- * The atlas runner's agent-state enum the monitor sees is {start, progress, queued, done, error,
10
- * inactive} — there is NO `failed`/`skipped`/`interrupted`/`stopped`/`running` INPUT state; those are
11
- * DISPLAY statuses derived here: `failed`/`skipped` from `error` (+ the `skipped` flag), `interrupted` from
12
- * `!workflowActive` (the `inactive`/non-active fallback), and `queued`/`running` from the queuedAt/startedAt
13
- * fields on the active path. The AgentState type carries exactly this input set, so the type contract now
14
- * matches the atlas vocabulary 1:1 — the branches below consume only atlas input states and the output
15
- * DisplayStatus set + glyph/color mapping ($jn) is identical.
16
- *
17
- * 🔴 **`parked` 是这条规则上唯一的 sema 超集臂**(0.63.1):atlas 没有它,因为 CC 的编排里没有耐久
18
- * 审批这一层。它**不派生**——上游直接铸这个词(engine core 7.10.0 #642 的 agent 行 `status` 与
19
- * `deriveAgentDisplayStatus` 产物),这里只是不许把它折掉。臂的**位置**是承重的,理由写在分支处。
20
- */
21
1
  export function agentDisplayStatus(a, workflowActive) {
22
2
  if (a.state === 'done')
23
3
  return 'done';
24
- // atlas: `state==="error"` → skipped?"skipped":"failed".
25
4
  if (a.state === 'error')
26
5
  return a.skipped ? 'skipped' : 'failed';
27
- // 🔴 sema 超集臂,**位置承重**:必须在 `!workflowActive` 之前判。一条腿 park 之后 run 自己收在
28
- // `failed`(core `WorkflowAgentParkedError`)⇒ `workflowActive` 恒假 ⇒ 放到后面就永远被
29
- // `interrupted` 吃掉,而 interrupted 说的是「run 结束时它还没跑完」——那是一件**已经过去**的事,
30
- // parked 说的是「它还挂在那儿,等一个人做决定」,是一件**还能动手**的事。两句下一步不同。
31
6
  if (a.state === 'parked')
32
7
  return 'parked';
33
- // atlas `!t` (workflow not active) → interrupted (also the `inactive`-state landing).
34
8
  if (!workflowActive)
35
9
  return 'interrupted';
36
10
  return a.queuedAt != null && a.startedAt == null ? 'queued' : 'running';
@@ -1,44 +1,8 @@
1
- /**
2
- * writeProtectionCapability — **写保护名表**姿态的三端共用读面(0.60.0)。
3
- *
4
- * 引擎带一张**字面名表**,落在表行上的可定路径写(Write / Edit / NotebookEdit)从 `allow` 降级成
5
- * `ask` —— 所以端可以**事先**告诉人「这些路径会弹卡」。两个读面同源同一份 boot 产物:
6
- * · **租户面** `GET /v1/capabilities` 的 `writeProtection`(engine ≥7.63.0 / S-138;sdk 8.4.0
7
- * `Capabilities.writeProtection`)—— 只有三位计数/开关,**不含行内容**;
8
- * · **operator 面** `GET /v1/diagnostics/wiring` 的 `writeProtection` —— 多出**行内容**与来源词。
9
- *
10
- * ── 🔴 四态,不是两态([honest-absence-not-fabricated-zero])──────────────────────────────────
11
- * 与 `sqlEngineCapability` 逐字同一套词汇(通用读口答「这一格上有没有值」,窄读器答「值成不成形」):
12
- * ① `unobserved` —— **本进程一次 caps 响应都没观测到**(一次性 doctor 就是这一档)。
13
- * ② `not_reported` —— caps 观测到了,而回体上**没有**这个键 ⇒ 老引擎(<7.63.0)。
14
- * 🔴 它**不是**「这台部署没有写保护表」—— 恰恰相反:引擎侧**座位缺席时缺省表在岗**
15
- * (按键名 grep 推断「没装」会推错,上游把这一条写进了本位的顶注)。
16
- * ③ `none` —— 引擎**明确说** `null`:这个进程说不出来(非 composition root 装配的夹具形)。
17
- * 同样**不是**「没有表」。
18
- * ④ `present` —— 三位俱全,原样渲。
19
- *
20
- * ── 🔴 三位刻意不合成一个布尔(上游顶注逐字)────────────────────────────────────────────────
21
- * `armed`(生效表非空 ⇒ 真会弹卡)/ `rows`(生效表行数)/ `replaced`(整表替换旋钮被写过)——
22
- * 合成之后「引擎缺省表在岗」与「运维换了一张自己的表」同为 true,而两者对运维说的是两件事。
23
- * ⚠️ `replaced` 把「整表替换成**空**表」也算 true:报 false 会把「运维亲手关掉了表」说成
24
- * 「缺省表没被动过」。
25
- *
26
- * ── 🔴 最小披露:逐行 name/kind 不上租户面 ──────────────────────────────────────────────────
27
- * 部署自定义行可能含内部路径名,列出来等于告诉想绕过的人「哪些名字不受保护」。行内容只在
28
- * operator 面({@link projectWriteProtectionPosture}),而那个端点本身是 operator-gated。
29
- * 🔴 与**模式型** write deny(`SENSITIVE_WRITE_PATTERNS`)是**并列机制**,两个读面分开报、
30
- * 绝不合成一位:两者的解法不同(一套改模式,一套改名表)。
31
- */
32
- /** 租户面三位(server `WriteProtectionCapability` 逐字同形)。 */
33
1
  export interface WriteProtectionCapabilityView {
34
- /** 生效表非空 ⇒ 引擎真会对表行弹卡。 */
35
2
  armed: boolean;
36
- /** 生效表的**行数**(内容只上 operator 面)。 */
37
3
  rows: number;
38
- /** 整表替换旋钮被写过 ⇒ 缺省表不再原样在岗。与 {@link armed} 刻意不合成。 */
39
4
  replaced: boolean;
40
5
  }
41
- /** 四态读数(见文件头)。`unobserved` 由**读口**在这一格空缺时铸,不由投影铸。 */
42
6
  export type WriteProtectionReading = {
43
7
  kind: 'unobserved';
44
8
  } | {
@@ -49,98 +13,22 @@ export type WriteProtectionReading = {
49
13
  kind: 'present';
50
14
  view: WriteProtectionCapabilityView;
51
15
  };
52
- /**
53
- * caps 回体 → 本格读数;**畸形一律 `undefined`**(= 这一格不写 ⇒ 读口答 `unobserved`)。
54
- *
55
- * 🔴 `undefined`(键不在)与 `null`(引擎说不出来)**是两件事**:前者 ⇒ `not_reported`(老引擎),
56
- * 后者 ⇒ `none`(夹具形进程)。用 `??` / falsy 判会把两者压成一件。
57
- * 🔴 三位**任一**形不合 ⇒ 整条判畸形。绝不留一个缺位的对象:一行写着「rows: 」的诊断比不渲这一行
58
- * 更坏(它看起来像一个答案)。
59
- * ⚠️ `rows` 按**非负有限整数**判,不按真值判:`0` 是合法读数(表在、但生效行为零),折成缺席会让
60
- * 「表空了」与「没报」在消费端同形。
61
- */
62
16
  export declare function projectWriteProtectionCapability(caps: unknown): WriteProtectionReading | undefined;
63
- /** operator 面的一行:一个**字面**名字 + 它怎么匹配。`name` 同时是这一行的稳定身份。 */
64
17
  export interface WriteProtectedRowView {
65
18
  name: string;
66
- /** `basename`(目标最后一段)/ `segment`(任意一段)/ `segment-run`(连续若干段);**开集读**。 */
67
19
  kind: string;
68
20
  }
69
- /** operator 面读数(`GET /v1/diagnostics/wiring` 的 `writeProtection`)。 */
70
21
  export interface WriteProtectionPostureView {
71
- /** 生效表逐行,逐字来自引擎自己的编译产物。**空数组 = 显式无表**(不是缺席)。 */
72
22
  rows: readonly WriteProtectedRowView[];
73
- /** `default`(两根旋钮都没写)/ `extra`(缺省表 + 增量)/ `replace`(整表替换)/ `off`
74
- * (整表替换成空表,合法且响亮);**开集读**。 */
75
23
  source: string;
76
- /** 整表替换**丢掉**的缺省行名;只在替换族在场。 */
77
24
  droppedDefaultRows?: readonly string[];
78
25
  }
79
- /**
80
- * operator 面回体的 `writeProtection` 段 → 读数;不成形 ⇒ `undefined`。
81
- *
82
- * 🔴 **空 `rows` 数组是正面事实**(「显式无表」),照铸 `[]` —— 与 `wiring_manifest.mcp[]` 同一条
83
- * 已定谳的纪律;把它折成缺席等于把引擎明说的一句话读成「不知道」。
84
- * 🔴 **坏行只丢那一行**(与 mcp 行同判据),但 `source` 读不出 ⇒ **整段缺席**:没有来源词的行表
85
- * 答不了运维真正要问的那一问(「这是缺省表还是你换过的表」),而半段会被当成完整答案。
86
- * 🔴 **不校「`droppedDefaultRows` 只在替换族在场」**:那是引擎的段内规矩,server 已按它铸;
87
- * 包再校一遍只会在上游合法演进的当天把一个真读数判没(与开集词表同规)。
88
- */
89
26
  export declare function projectWriteProtectionPosture(wiring: unknown): WriteProtectionPostureView | undefined;
90
- /**
91
- * 宿主 caps probe 的**读面 tee** 落点(与 `noteEngineCapsForSqlEngine` 并列)。绝不 throw ——
92
- * 读面腿不许反噬 caps 探测链。
93
- *
94
- * 🔴 投影 `undefined`(caps 畸形)⇒ 这一格**被删**而不是留着上一台引擎的旧值。
95
- * ⚠️ 「同端口 respawn / 版本回滚之后新探测失败或还在飞」是**另一条路**(本 tee 一次都不触发),
96
- * 由 {@link forgetWriteProtectionReading} 在装配口上收 —— 与 SQL 那一格逐字同形。
97
- * 🔴 **不按 principal 分域**:写保护表是**这台 worker 的 boot 产物**,与调用者是谁无关。
98
- *
99
- * 🔴 **`opts.generation` = 关掉「旧探测覆盖新读数」那条竞态的唯一正确供给**(0.60.0;异源对抗复审
100
- * [medium] 采纳,真病):`kickEngineCapsProbe` 的代际闸在 **probe 返回之后**才跑,而本 tee 是在
101
- * probe **内部**落地的 ⇒ 一次慢的旧探测能在 `invalidateEngineCaps` + 新探测都走完之后才返回,
102
- * 把**上一台引擎**的读数重新写回来。宿主在**起探测那一刻**调 `engineCapsGeneration(baseUrl)` 抓号、
103
- * 在这里原样交回,陈旧那一发就会被整只丢掉。
104
- * ⚠️ **不传 = 与本位到货之前逐字节同行为**(照写)—— additive 供给,不是强制门;端没跟上之前不会
105
- * 有任何东西变坏。🔴 **tee 自己抓号是假判据**(陈旧那一发在这里读到的是新代号,永远像当代的)。
106
- */
107
27
  export declare function noteEngineCapsForWriteProtection(baseUrl: string, caps: unknown, opts?: {
108
28
  generation?: number;
109
29
  }): void;
110
- /** 本进程观测到的写保护姿态;这一格空缺 ⇒ `{kind:'unobserved'}`(**绝不**折成 `none`)。 */
111
30
  export declare function observedWriteProtection(baseUrl?: string | undefined): WriteProtectionReading;
112
- /**
113
- * 四态 → doctor 那一行的 detail 串。**唯一措辞真源**(三端共用一句话;别在各端的行装配里另写一遍
114
- * —— 与 `sqlEngineDoctorDetail` / `autoModeDoctorDetail` 同一条纪律)。
115
- *
116
- * 🔴 四句话刻意**互不相同、也互不蕴含**:「未观测」「老引擎不报」「进程说不出来」三种「读不出」
117
- * 对运维是三条不同的下一步,而**没有一条**等于「这台部署没有写保护」。
118
- * 🔴 `present` 那一句把三位**分开说**(见文件头「刻意不合成」):`armed` 说会不会弹卡,`rows` 说
119
- * 几行,`replaced` 说缺省表还在不在岗。
120
- * 🔴 行内容一个字都不渲(最小披露);`source` 是 operator 面的位,不上这一行。
121
- */
122
31
  export declare function writeProtectionDoctorDetail(reading: WriteProtectionReading): string;
123
- /**
124
- * operator 面读数 → 一行 detail(行名是 UNTRUSTED 自由文本 ⇒ 呈前**逐条**消毒 + 封长)。
125
- *
126
- * 🔴 消毒与封长的顺序 = **先转义、后按转义结果封长**({@link capForDisplay},0.62.0 起本包该族的
127
- * 唯一实现)。此前这三处是反的(先按原文 `slice` 再转义),一段纯控制字符的 40 字符原文转义后
128
- * 能占 240 个显示字符 —— 承诺的列宽预算成了名义值的六倍。同形存量另有 SQL 姿态行一处,同批同改。
129
- *
130
- * 🔴 只给**行数与来源**加上「头几行的名字」,不整表倾泻:一行诊断不是一个表格,而 operator 面的
131
- * 真表读法是那个端点本身。
132
- * 🔴 `rows: []` 渲的是**显式无表**这句正面事实,不是「读不出」。
133
- */
134
32
  export declare function writeProtectionPostureDetail(posture: WriteProtectionPostureView): string;
135
- /**
136
- * **换代失效口**(与 `forgetSqlEngineReading` 并列,由宿主在引擎温切成功后调)。
137
- *
138
- * 🔴 代际闸挡不住这一形:那道闸挡的是「旧响应写脏新一代」,而本格的病是反过来的 —— 新一代的探测
139
- * **根本没成功**,tee 一次都没触发,上一台引擎留在同一端口上的读数继续被当成当代事实答出去。
140
- * 在 doctor 上它的形态最坏:一句**肯定句**(「这台部署有 12 行写保护」),说的却是一台已经不在
141
- * 的引擎。处置是**清成未观测**,不是留旧值也不是铸一个 `none`。
142
- * 空串 ⇒ no-op;绝不 throw(它跑在引擎温切路径上)。
143
- */
144
33
  export declare function forgetWriteProtectionReading(baseUrl: string | undefined): void;
145
- /** 测试钩子。 */
146
34
  export declare function __resetWriteProtectionReadingsForTests(): void;
@@ -1,52 +1,9 @@
1
- /**
2
- * writeProtectionCapability — **写保护名表**姿态的三端共用读面(0.60.0)。
3
- *
4
- * 引擎带一张**字面名表**,落在表行上的可定路径写(Write / Edit / NotebookEdit)从 `allow` 降级成
5
- * `ask` —— 所以端可以**事先**告诉人「这些路径会弹卡」。两个读面同源同一份 boot 产物:
6
- * · **租户面** `GET /v1/capabilities` 的 `writeProtection`(engine ≥7.63.0 / S-138;sdk 8.4.0
7
- * `Capabilities.writeProtection`)—— 只有三位计数/开关,**不含行内容**;
8
- * · **operator 面** `GET /v1/diagnostics/wiring` 的 `writeProtection` —— 多出**行内容**与来源词。
9
- *
10
- * ── 🔴 四态,不是两态([honest-absence-not-fabricated-zero])──────────────────────────────────
11
- * 与 `sqlEngineCapability` 逐字同一套词汇(通用读口答「这一格上有没有值」,窄读器答「值成不成形」):
12
- * ① `unobserved` —— **本进程一次 caps 响应都没观测到**(一次性 doctor 就是这一档)。
13
- * ② `not_reported` —— caps 观测到了,而回体上**没有**这个键 ⇒ 老引擎(<7.63.0)。
14
- * 🔴 它**不是**「这台部署没有写保护表」—— 恰恰相反:引擎侧**座位缺席时缺省表在岗**
15
- * (按键名 grep 推断「没装」会推错,上游把这一条写进了本位的顶注)。
16
- * ③ `none` —— 引擎**明确说** `null`:这个进程说不出来(非 composition root 装配的夹具形)。
17
- * 同样**不是**「没有表」。
18
- * ④ `present` —— 三位俱全,原样渲。
19
- *
20
- * ── 🔴 三位刻意不合成一个布尔(上游顶注逐字)────────────────────────────────────────────────
21
- * `armed`(生效表非空 ⇒ 真会弹卡)/ `rows`(生效表行数)/ `replaced`(整表替换旋钮被写过)——
22
- * 合成之后「引擎缺省表在岗」与「运维换了一张自己的表」同为 true,而两者对运维说的是两件事。
23
- * ⚠️ `replaced` 把「整表替换成**空**表」也算 true:报 false 会把「运维亲手关掉了表」说成
24
- * 「缺省表没被动过」。
25
- *
26
- * ── 🔴 最小披露:逐行 name/kind 不上租户面 ──────────────────────────────────────────────────
27
- * 部署自定义行可能含内部路径名,列出来等于告诉想绕过的人「哪些名字不受保护」。行内容只在
28
- * operator 面({@link projectWriteProtectionPosture}),而那个端点本身是 operator-gated。
29
- * 🔴 与**模式型** write deny(`SENSITIVE_WRITE_PATTERNS`)是**并列机制**,两个读面分开报、
30
- * 绝不合成一位:两者的解法不同(一套改模式,一套改名表)。
31
- */
32
1
  import { capForDisplay } from './fleetTaskDesc.js';
33
2
  import { engineWireTarget } from './engineWireTarget.js';
34
3
  import { createEngineCapReader } from './engineCapReader.js';
35
- /**
36
- * caps 回体 → 本格读数;**畸形一律 `undefined`**(= 这一格不写 ⇒ 读口答 `unobserved`)。
37
- *
38
- * 🔴 `undefined`(键不在)与 `null`(引擎说不出来)**是两件事**:前者 ⇒ `not_reported`(老引擎),
39
- * 后者 ⇒ `none`(夹具形进程)。用 `??` / falsy 判会把两者压成一件。
40
- * 🔴 三位**任一**形不合 ⇒ 整条判畸形。绝不留一个缺位的对象:一行写着「rows: 」的诊断比不渲这一行
41
- * 更坏(它看起来像一个答案)。
42
- * ⚠️ `rows` 按**非负有限整数**判,不按真值判:`0` 是合法读数(表在、但生效行为零),折成缺席会让
43
- * 「表空了」与「没报」在消费端同形。
44
- */
45
4
  export function projectWriteProtectionCapability(caps) {
46
5
  if (caps === null || typeof caps !== 'object')
47
6
  return undefined;
48
- // 0.77.0 整族改齐:① 非对象 / 数组 caps 不是能力表 ⇒ 畸形(投影答 undefined ⇒ 删格 ⇒ 读口答 unobserved),不再答 not_reported
49
- // (那是把「取不到」冒充「报了但没提」);② 在场判据改 hasOwn —— 原型链上的同名键永远不会被序列化上 wire,读成在场 = 凭空造一格。
50
7
  if (caps === null || typeof caps !== 'object' || Array.isArray(caps))
51
8
  return undefined;
52
9
  if (!Object.hasOwn(caps, 'writeProtection'))
@@ -59,7 +16,6 @@ export function projectWriteProtectionCapability(caps) {
59
16
  if (typeof wp !== 'object' || Array.isArray(wp))
60
17
  return undefined;
61
18
  const w = wp;
62
- // 🔴 只读一次(0.74.2 CC-69 复审 R1 族扫):校验与返回各读一次,变化的 getter 会让校验读到合形、返回读到别的。
63
19
  const armed = w.armed;
64
20
  const replaced = w.replaced;
65
21
  const rows = w.rows;
@@ -71,16 +27,6 @@ export function projectWriteProtectionCapability(caps) {
71
27
  return undefined;
72
28
  return { kind: 'present', view: { armed, rows, replaced } };
73
29
  }
74
- /**
75
- * operator 面回体的 `writeProtection` 段 → 读数;不成形 ⇒ `undefined`。
76
- *
77
- * 🔴 **空 `rows` 数组是正面事实**(「显式无表」),照铸 `[]` —— 与 `wiring_manifest.mcp[]` 同一条
78
- * 已定谳的纪律;把它折成缺席等于把引擎明说的一句话读成「不知道」。
79
- * 🔴 **坏行只丢那一行**(与 mcp 行同判据),但 `source` 读不出 ⇒ **整段缺席**:没有来源词的行表
80
- * 答不了运维真正要问的那一问(「这是缺省表还是你换过的表」),而半段会被当成完整答案。
81
- * 🔴 **不校「`droppedDefaultRows` 只在替换族在场」**:那是引擎的段内规矩,server 已按它铸;
82
- * 包再校一遍只会在上游合法演进的当天把一个真读数判没(与开集词表同规)。
83
- */
84
30
  export function projectWriteProtectionPosture(wiring) {
85
31
  if (wiring === null || typeof wiring !== 'object')
86
32
  return undefined;
@@ -113,52 +59,18 @@ export function projectWriteProtectionPosture(wiring) {
113
59
  ...(dropped !== undefined ? { droppedDefaultRows: dropped } : {}),
114
60
  };
115
61
  }
116
- /**
117
- * 本格的 per-baseUrl 读账 + tee / 读口 / 失效口 / 测试钩四口 —— 各只能力位读器**共用同一份实现**
118
- * ({@link createEngineCapReader});本文件只留这一格真正不同的部分:投影函数 {@link projectWriteProtectionCapability}、doctor 措辞表,以及本位自己的判据助手(如有)。
119
- * 🔴 Map 在工厂闭包里,**一只读器一张**:收到读不懂的回体只删自己这一格,绝不连坐别的能力面。
120
- */
121
62
  const reader = createEngineCapReader({
122
63
  name: 'writeProtection',
123
64
  project: projectWriteProtectionCapability,
124
65
  makeUnobserved: () => ({ kind: 'unobserved' }),
125
66
  });
126
- /**
127
- * 宿主 caps probe 的**读面 tee** 落点(与 `noteEngineCapsForSqlEngine` 并列)。绝不 throw ——
128
- * 读面腿不许反噬 caps 探测链。
129
- *
130
- * 🔴 投影 `undefined`(caps 畸形)⇒ 这一格**被删**而不是留着上一台引擎的旧值。
131
- * ⚠️ 「同端口 respawn / 版本回滚之后新探测失败或还在飞」是**另一条路**(本 tee 一次都不触发),
132
- * 由 {@link forgetWriteProtectionReading} 在装配口上收 —— 与 SQL 那一格逐字同形。
133
- * 🔴 **不按 principal 分域**:写保护表是**这台 worker 的 boot 产物**,与调用者是谁无关。
134
- *
135
- * 🔴 **`opts.generation` = 关掉「旧探测覆盖新读数」那条竞态的唯一正确供给**(0.60.0;异源对抗复审
136
- * [medium] 采纳,真病):`kickEngineCapsProbe` 的代际闸在 **probe 返回之后**才跑,而本 tee 是在
137
- * probe **内部**落地的 ⇒ 一次慢的旧探测能在 `invalidateEngineCaps` + 新探测都走完之后才返回,
138
- * 把**上一台引擎**的读数重新写回来。宿主在**起探测那一刻**调 `engineCapsGeneration(baseUrl)` 抓号、
139
- * 在这里原样交回,陈旧那一发就会被整只丢掉。
140
- * ⚠️ **不传 = 与本位到货之前逐字节同行为**(照写)—— additive 供给,不是强制门;端没跟上之前不会
141
- * 有任何东西变坏。🔴 **tee 自己抓号是假判据**(陈旧那一发在这里读到的是新代号,永远像当代的)。
142
- */
143
67
  export function noteEngineCapsForWriteProtection(baseUrl, caps, opts) {
144
68
  reader.note(baseUrl, caps, opts);
145
69
  }
146
- /** 本进程观测到的写保护姿态;这一格空缺 ⇒ `{kind:'unobserved'}`(**绝不**折成 `none`)。 */
147
70
  export function observedWriteProtection(baseUrl = engineWireTarget()?.baseUrl) {
148
71
  return reader.observed(baseUrl);
149
72
  }
150
- /** 单行 UNTRUSTED 座的展示上限(UTF-16 单元;与 SQL 那一格同值同理由)。 */
151
73
  const WP_DETAIL_MAX = 40;
152
- /**
153
- * 四态 → doctor 那一行的 detail 串。**唯一措辞真源**(三端共用一句话;别在各端的行装配里另写一遍
154
- * —— 与 `sqlEngineDoctorDetail` / `autoModeDoctorDetail` 同一条纪律)。
155
- *
156
- * 🔴 四句话刻意**互不相同、也互不蕴含**:「未观测」「老引擎不报」「进程说不出来」三种「读不出」
157
- * 对运维是三条不同的下一步,而**没有一条**等于「这台部署没有写保护」。
158
- * 🔴 `present` 那一句把三位**分开说**(见文件头「刻意不合成」):`armed` 说会不会弹卡,`rows` 说
159
- * 几行,`replaced` 说缺省表还在不在岗。
160
- * 🔴 行内容一个字都不渲(最小披露);`source` 是 operator 面的位,不上这一行。
161
- */
162
74
  export function writeProtectionDoctorDetail(reading) {
163
75
  switch (reading.kind) {
164
76
  case 'unobserved':
@@ -183,17 +95,6 @@ export function writeProtectionDoctorDetail(reading) {
183
95
  }
184
96
  }
185
97
  }
186
- /**
187
- * operator 面读数 → 一行 detail(行名是 UNTRUSTED 自由文本 ⇒ 呈前**逐条**消毒 + 封长)。
188
- *
189
- * 🔴 消毒与封长的顺序 = **先转义、后按转义结果封长**({@link capForDisplay},0.62.0 起本包该族的
190
- * 唯一实现)。此前这三处是反的(先按原文 `slice` 再转义),一段纯控制字符的 40 字符原文转义后
191
- * 能占 240 个显示字符 —— 承诺的列宽预算成了名义值的六倍。同形存量另有 SQL 姿态行一处,同批同改。
192
- *
193
- * 🔴 只给**行数与来源**加上「头几行的名字」,不整表倾泻:一行诊断不是一个表格,而 operator 面的
194
- * 真表读法是那个端点本身。
195
- * 🔴 `rows: []` 渲的是**显式无表**这句正面事实,不是「读不出」。
196
- */
197
98
  export function writeProtectionPostureDetail(posture) {
198
99
  const source = capForDisplay(posture.source, WP_DETAIL_MAX);
199
100
  if (posture.rows.length === 0)
@@ -208,19 +109,9 @@ export function writeProtectionPostureDetail(posture) {
208
109
  : '';
209
110
  return `source ${source} · ${String(posture.rows.length)} ${posture.rows.length === 1 ? 'name' : 'names'}: ${shown}${more}${dropped}`;
210
111
  }
211
- /**
212
- * **换代失效口**(与 `forgetSqlEngineReading` 并列,由宿主在引擎温切成功后调)。
213
- *
214
- * 🔴 代际闸挡不住这一形:那道闸挡的是「旧响应写脏新一代」,而本格的病是反过来的 —— 新一代的探测
215
- * **根本没成功**,tee 一次都没触发,上一台引擎留在同一端口上的读数继续被当成当代事实答出去。
216
- * 在 doctor 上它的形态最坏:一句**肯定句**(「这台部署有 12 行写保护」),说的却是一台已经不在
217
- * 的引擎。处置是**清成未观测**,不是留旧值也不是铸一个 `none`。
218
- * 空串 ⇒ no-op;绝不 throw(它跑在引擎温切路径上)。
219
- */
220
112
  export function forgetWriteProtectionReading(baseUrl) {
221
113
  reader.forget(baseUrl);
222
114
  }
223
- /** 测试钩子。 */
224
115
  export function __resetWriteProtectionReadingsForTests() {
225
116
  reader.__resetForTests();
226
117
  }
@@ -19,7 +19,7 @@
19
19
 
20
20
  | 项 | 值 | 真源 |
21
21
  |---|---|---|
22
- | 本包 | `@sema-agent/client-core` **0.77.1**(本批发布版 = **patch**:外部验收三件回填 —— 读器族边界残留 projectMcpReconnectCapability 只认自有键(CC-107)/ rewind 四子键恰读一次(CC-108)/ 子代输出合并按回体 output.type · retrieval_status 定处置(CC-109,server ≥7.92.0 cursorSemantics 缺席面);型面 additive 一处;公面 1143;§80。上一版 0.77.0 = **minor**:请求装配逐键去向回执 + print 车道补座 + 表外键响亮拒(CC-101,四条行为 BREAKING)/ 会话策略写端口(CC-105)/ 持久规则单步写面(CC-103)/ workflow 子代面板行代际三向恢复(CC-104,零改码)/ 能力位读器族口径整族改齐 + 外部验收 F-A / F-B 处置 + 合并树异源复审两轮处置;公面 1143;§79。上一版 0.76.2 = **patch**:制品卫生 —— 清 dist 重 build 去掉两只已撤出源码的编译产物 + dist ⇄ src 对账门;零源码 / 零型面 / 零行为改动;公面 1122;§78。上一版 0.76.1 = **patch**:能力位读器工厂(CC-75)/ MCP 活性观察读口(CC-36)/ `capabilities.peerLane` · `permissionRulesWrite` 四态读口(CC-102)/ 记忆治理面两只读口 + 三只条目面回体读口(CC-97 a)/ 主车道证明逐次新建(CC-99)+ 修 0.76.0 的 F1 / F2(身份四键一次性快照只修了投影口一侧);公面 1122;§77。上一版 0.76.0 = **minor**:六票一批 —— `prompt_assembled` 投影臂 / 审批 feed 三态(**型面 BREAKING**)/ `ApprovalResolution` 单源联合 / 记忆 spec 读口 / 终态词表上游钉 / `tasks_expand` 退役(**型面 BREAKING**),外加身份四键一次性快照(跨全部内部臂);公面 1081;§76。上一版 0.75.1 = **patch**:面板短命子代反序缓行放不出的残洞(外部复验 D1)+ 同代 running 帧三向定形(B4)+ #969 提货 `spawnName` 透传与 `agentType` 改读诚实来源(CC-95);§75。上一版 0.75.0 = **minor**:压缩的非 compacted 结局上 chrome 面 `compaction_outcome`(新内部臂 —— 自建 print 出口的端先表态)+ peer sdk 地板 `>=9.8.1`;型面 additive(ChromeEvent +1 臂)、公面 1065、零 wire 新键;§74。上一版 0.74.5 = **patch**:core 7.24.0 提货 `_sema_freed_tokens?` + 首见即终态的行零事件(幽灵完成行)+ `isNewEngineAgentPanelCycle` / `approvalOutcomeNoteOf` 上公面;型面 additive、公面 1065、peer 不动;§73。上一版 0.74.4 = **patch**:面板键「先发布的键为准」(tick 归不了一的三序不再两行)+ 前代 UUID 迟到 tick 丢弃 + `readRunCancelContext` 下钻收紧;型面 additive、公面 1061、peer 不动;§72。上一版 0.74.3 = **patch**:面板子代身份归一(tick / end 的 UUID 归到 fleet 尾段,宿主零改)+ run 记录 `cancelContext` 读口与成因四词 + workflow 行 `errorCode` + reopen 第二臂两件;型面纯 additive、公面 1061、peer 不动;§71。上一版 0.74.2 = **patch**:`capabilities.deviceExecutor.management` 四态读口(缺席 ≠ false;`deviceExecutor: false` = 车道缺席;管理动词可用性三态归包);公面 1052;§70。上一版 0.74.1 = **patch**:审批卡无决断收口 + 结局回交;§69。上一版 0.74.0 = **minor**:peer sdk 地板 >=9.7.1 + covers 过境 + 面板周期身份 + 离场读口;§68。上一版 0.73.5 = **patch**:workflow 规模告警判定上收进包(`evaluateWorkflowSize` 三态:未知的规模不当作规模正常;分母口径与帽优先级单源;env 读口纯函数);型面纯 additive、公面 1044、peer 不动;§67。上一版 0.73.4 = **patch**:终帧 `permission_denials` 第三键 ⇐ 同一条流 `tool_start` 入参按 `toolCallId` join(三道闸;join 不上留 sema 载体;🔴 更正 0.73.2「自动升级收口」一句)+ 审批 feed push 侧取件失败的欠账退避重试;型面纯 additive、公面 1033、peer 不动;§66。上一版 0.73.3 = **patch**:CC-61 sdk 9.7.1 提货 + `capabilities.approvalsStreamLive` 四态读口(缺席 = 判不出;`livePendingNeedsReconcile` 只在引擎明说会推时才让对账节拍降兜底)+ CC-60 五条模型面文案锚包侧半场(cursorSemantics 机读位 / result 行注记 / bash 首行两变体与良性槽 / 通知 seed 并集 / parked 臂);型面纯 additive、公面 1032、peer 不动;§65。上一版 0.73.2 = **patch**:CC-59 悬挂 ask 全卡 —— `livePending[].frame`(server ≥7.87.0)两道闸窄读进视图,在场即走流内帧腿同一条路(入参可见、改写可转发),缺席保持盲卡;CC-34 收口(引擎半场随 7.87.0 到货,判据交黑盒);型面纯 additive、公面 1026、peer 不动;§64。上一版 0.73.1 = **patch**:CC-57 `decidePlanReview` outcome 尾句按「决断有没有生效」四态选(单铸点 `planReviewOutcomeTail`;此前本地拒发仍让模型汇报已拒绝)+ CC-56 cancel 的 409 按机器码分家(`cancelConflictFromError` 三形 / 新安全码 `cancel_run_not_running`)与提交面 429 用量窗读口 + 人话;型面纯 additive、公面 1026、peer 不动;§63。上一版 0.73.0 = **minor,型面 BREAKING**:fleet 视图八个数值键改可选 —— CC-52 `FleetTaskView.elapsedMs` / `tokens` / `queuedCount` 与 `FleetWorkflowView.doneCount` / `totalCount` / `failedCount` / `tokens` / `elapsedMs` 不再 `?? 0`(有键 = 真值含真 0,缺键 = 不知道;逐键缺席语义见 §62b)+ 台账补偿链无基数不铸;公面导出名零增减 1019、零 wire 变化、peer 不动;§62。上一版 0.72.14 = **patch**:悬挂的流内 ask 拉半场 —— CC-55 `startApprovalsFeed` 快照加 `livePending` 段并进变化摘要(键缺席 = 未报,不铸空)+ 视图 / 去重账 / 与流内帧腿同链的决断口(入参不可见上卡明说、改写不转发)+ 宿主闸对账节拍 + 待决计数读口(不知道 = null);型面纯 additive、公面 1019、peer 不动;§61。上一版 0.72.13 = **patch**:server 7.86.0 提货 —— CC-46 plan_review `permissionModeAfter` 发口(三选卡双闸:宿主声明只读起步 ∧ 引擎 ≥7.86.0;400 field_conflict 两种处置)+ CC-54 `capabilities.executionLane` 四态读面(键缺席 ≠ 不是本机车道;`toolsRunHere` 判据归包)+ CC-53 detach 版本闸三态;型面 additive(另撤回 0.72.12 的主通道 `absent` 臂,改独立缺席订阅口)、公面 1011、peer 不动;§60;**预告 0.73.0 BREAKING**:fleet 视图数值键改可选。上一版 0.72.12 = **patch**:「缺席被折成正向终态」按类清剿 —— CC-50 M1 头条(fleet 行缺席改发 `absent` 不再铸 `end{isError:false}`)+ 六站一次改齐(缺席 ⇒ `unknown`)+ 结果边界 fail-closed 取舍 + `_sema_outcome` + `Outcome unknown:` 行 + CC-51 M6(default 臂不再谎报 running)+ 普查门 + DS-06;型面 additive、公面 993、peer 不动;行为面三处真变化见 CHANGELOG 取舍段;§59。上一版 0.72.11 = **patch**:core 7.23.0 提货 —— CC-49 通告码 66 → 67 `config.write_protection_unresolved`(operator;兄弟码 `target_view_absent` = 没有视图,这枚 = 有视图解析不出)+ `permission_denials` 自动升级腿通电(`gates[].toolCallId` ⇒ `tool_use_id`;CC-34 引擎半场);型面零变化、公面 989、peer 不动、devDep core ~7.23.0;§58。上一版 0.72.10 = **patch**:CC-41 leader run 终局 `needs_human` + `result.conflict` 三形读面(none 缺席不可分 / unreadable 在场读不懂 / conflict;`salvaged[]` 原样给落盘口;措辞单源不提重试);型面纯 additive、公面 989、peer 不动;§57。上一版 0.72.9 = **patch**:server 7.85.0 提货 —— CC-30 会话内 MCP re-dial 消费口(`reconnectMcpServer` 三态 / unsupported 恒五键 / 交易文案单源)+ CC-39② memory-status `autoConsolidationArmed` 三态 + CC-45 resume 补充句渲保留秒数;型面纯 additive、公面 985、peer 不动;§56。上一版 0.72.8 = **patch**:清账三票 —— `memory:"off"` 请求键(CC-39③,server 7.84.0 S-405)+ `runStream` 第二条中性臂 `Model output error:`(CC-43)+ 注入件撞活 run 自动 steer 零卡(CC-44);型面纯 additive、公面 977、peer 不动;§55。上一版 0.72.7 = **patch**:core 7.22.0 提货 —— 通告码 66 `mcp.server_redialed` + 读器 `readMcpServerRedialed` + `wiring_manifest.readDeny` 第九段 `_sema_readDeny`(缺席 = 没有内置行判这条腿);型面纯 additive、公面 971、peer 不动、devDep core ~7.22.0;§54。上一版 0.72.6 = **patch**:cli L-379 包侧半场 —— `steerFollowIntent` steer 后续听意图三态(tail / after-decision / after-wake)+ `activeRunSelfHealRow` 续听声明第五参;型面纯 additive、公面 969、peer 不动;§53。上一版 0.72.5 = **patch**:server 7.82.1 提货 —— `capabilities.webSearch.backend` 部署默认 WebSearch 后端四态读面(键缺席 = 老引擎判不了 ≠ `none`);型面纯 additive、公面 968、peer 不动;§52。上一版 0.72.4 = **patch**:core 7.21.x 三件经 server 7.82.0 提货 —— `wiring_manifest.autoConsolidation` 第八段 `_sema_autoConsolidation`(缺席 = indeterminate 不折 false);型面纯 additive、公面 962、peer 不动;§51。上一版 0.72.3 = **patch**:core #863 记忆单系统半场 ① —— `projectAgentsForWire` 投影 `agents[].memory`(user|project|local 三词同映射引擎平面 agent:<type>);型面纯 additive、公面 962、零 wire 新键、peer 不动;§50。上一版 0.72.2 = **patch**:workflow 视图两票 —— `LiveWorkflowController.resolution()` 六态(snapshot() 的 null 三义拆开)+ `noteOwnWorkflowRun` own 台账同拍登记;型面纯 additive、公面 961、零 wire 键、peer 不动;§49。上一版 0.72.1 = **patch**:server 7.80.1 提货 —— 409 `conflict.resume_context_unavailable` 结构读数(`staleAfterSec` / `runId`;sdk 9.6.0 尚未带键,经 sdk 今天恒缺席)+ `SkillSpec.baseDir`(只在本机车道带);型面纯 additive、公面 960、peer 不动;§48。上一版 0.72.0 = **minor**:型面 BREAKING —— 39 个零消费导出退出公面(CC-32 退役批,[7419] §45 预告 / cli [7422] 同意 / web-client·desktop 过节拍沉默 = 同意;名单见 §47a S-1);运行期零 BREAKING、公面 956、peer 不动、devDep core ~7.20.1;随批:已退役名账 `removed` + export-liveness 门 G 段 + 冻结账门 ⑧c;§47。上一版 0.71.4 = **patch**:core 7.20.1 提货 —— `ENGINE_NOTICE_CODES` 65 + `wiring_manifest.writeProtection` 第七段 `_sema_writeProtection`;型面纯 additive、公面 995、peer 不动、devDep core `~7.20.1`;§46。上一版 0.71.3 = **patch**:门体系清账批 —— CC-24 export-liveness 门 + 39 个导出退役预告(0.72.0 删,表态制)/ CC-26 `as unknown as` 铸链棘轮 / CC-25 冻结账门 ⑧ 段 / CC-06 B-081 包侧半场(终帧 `_sema_effective_reasoning` / `_sema_effective_memory_scopes` + resume reopen 族 + `routePairingVerdict`);型面纯 additive、公面 986 → 995、peer 不动;§45。上一版 0.71.2 = **patch**:接入方验收两票归包 —— CC-28 B-132 decide 拒体三句去内部车道词 / CC-29 B-133 committedUuids 唯一性(重复 ⇒ 形 f);零型面变化、公面 986、peer 不动;§44。上一版 0.71.1 = **patch**:接入档打回修正 —— CC-27 `ApprovalCardRequest.readRootCandidate?` 帧→卡透传位 + 新导出型 `ReadRootCandidateView`;型面纯 additive、公面 986 不变、peer 不动;§43。上一版 0.71.0 = **minor**:型面 BREAKING 六件 —— peer sdk 地板 >=9.6.0 + agent-types >=0.3.0 / `SkillsListingTruncatedFactsView` 删 `requestedBudgetBytes?`·`laneClamped?` / `WiringManifestMcpEntry` → `WiringManifestMcpEntryView` / `MAX_AGENT_SKILLS` 删 / `decide.workflow_host_not_parked` 退役;运行期零 BREAKING。内容:core 7.20.0 提货(闭集 +5 六十四码)/ 🔴 CC-16 `text_segment_end.committedUuids[]` / CC-08 全五件(tool_disclosure / tool_progress 两 chrome 臂、wiring_manifest tools·hooks·lsp 进切片、tool_roster_delta 接上、context_usage 进切片、`readRootCandidate` 镜像)/ CC-19 `mcpEngineLegPresence` 归包 / CC-20 not_parked clean-cut;公面 986;§42 / 42y 八条)|
22
+ | 本包 | `@sema-agent/client-core` **0.77.2**(本批发布版 = **patch**:出包面结构卫生 —— 构建期 removeComments,dist js / d.ts 零注释(新门 run-dist-comments-test.mjs + 卫生门词表 32 条 + 文档向前执法;CC-100)+ gateDeniedByDetail 表外词兜底句改「本版不认识这个层名」(CC-111 ①);行为 / 型面逐字节同 0.77.1;公面 1143;§81。上一版 0.77.1 = **patch**:外部验收三件回填 —— 读器族边界残留 projectMcpReconnectCapability 只认自有键(CC-107)/ rewind 四子键恰读一次(CC-108)/ 子代输出合并按回体 output.type · retrieval_status 定处置(CC-109,server ≥7.92.0 cursorSemantics 缺席面);型面 additive 一处;公面 1143;§80。上一版 0.77.0 = **minor**:请求装配逐键去向回执 + print 车道补座 + 表外键响亮拒(CC-101,四条行为 BREAKING)/ 会话策略写端口(CC-105)/ 持久规则单步写面(CC-103)/ workflow 子代面板行代际三向恢复(CC-104,零改码)/ 能力位读器族口径整族改齐 + 外部验收 F-A / F-B 处置 + 合并树异源复审两轮处置;公面 1143;§79。上一版 0.76.2 = **patch**:制品卫生 —— 清 dist 重 build 去掉两只已撤出源码的编译产物 + dist ⇄ src 对账门;零源码 / 零型面 / 零行为改动;公面 1122;§78。上一版 0.76.1 = **patch**:能力位读器工厂(CC-75)/ MCP 活性观察读口(CC-36)/ `capabilities.peerLane` · `permissionRulesWrite` 四态读口(CC-102)/ 记忆治理面两只读口 + 三只条目面回体读口(CC-97 a)/ 主车道证明逐次新建(CC-99)+ 修 0.76.0 的 F1 / F2(身份四键一次性快照只修了投影口一侧);公面 1122;§77。上一版 0.76.0 = **minor**:六票一批 —— `prompt_assembled` 投影臂 / 审批 feed 三态(**型面 BREAKING**)/ `ApprovalResolution` 单源联合 / 记忆 spec 读口 / 终态词表上游钉 / `tasks_expand` 退役(**型面 BREAKING**),外加身份四键一次性快照(跨全部内部臂);公面 1081;§76。上一版 0.75.1 = **patch**:面板短命子代反序缓行放不出的残洞(外部复验 D1)+ 同代 running 帧三向定形(B4)+ #969 提货 `spawnName` 透传与 `agentType` 改读诚实来源(CC-95);§75。上一版 0.75.0 = **minor**:压缩的非 compacted 结局上 chrome 面 `compaction_outcome`(新内部臂 —— 自建 print 出口的端先表态)+ peer sdk 地板 `>=9.8.1`;型面 additive(ChromeEvent +1 臂)、公面 1065、零 wire 新键;§74。上一版 0.74.5 = **patch**:core 7.24.0 提货 `_sema_freed_tokens?` + 首见即终态的行零事件(幽灵完成行)+ `isNewEngineAgentPanelCycle` / `approvalOutcomeNoteOf` 上公面;型面 additive、公面 1065、peer 不动;§73。上一版 0.74.4 = **patch**:面板键「先发布的键为准」(tick 归不了一的三序不再两行)+ 前代 UUID 迟到 tick 丢弃 + `readRunCancelContext` 下钻收紧;型面 additive、公面 1061、peer 不动;§72。上一版 0.74.3 = **patch**:面板子代身份归一(tick / end 的 UUID 归到 fleet 尾段,宿主零改)+ run 记录 `cancelContext` 读口与成因四词 + workflow 行 `errorCode` + reopen 第二臂两件;型面纯 additive、公面 1061、peer 不动;§71。上一版 0.74.2 = **patch**:`capabilities.deviceExecutor.management` 四态读口(缺席 ≠ false;`deviceExecutor: false` = 车道缺席;管理动词可用性三态归包);公面 1052;§70。上一版 0.74.1 = **patch**:审批卡无决断收口 + 结局回交;§69。上一版 0.74.0 = **minor**:peer sdk 地板 >=9.7.1 + covers 过境 + 面板周期身份 + 离场读口;§68。上一版 0.73.5 = **patch**:workflow 规模告警判定上收进包(`evaluateWorkflowSize` 三态:未知的规模不当作规模正常;分母口径与帽优先级单源;env 读口纯函数);型面纯 additive、公面 1044、peer 不动;§67。上一版 0.73.4 = **patch**:终帧 `permission_denials` 第三键 ⇐ 同一条流 `tool_start` 入参按 `toolCallId` join(三道闸;join 不上留 sema 载体;🔴 更正 0.73.2「自动升级收口」一句)+ 审批 feed push 侧取件失败的欠账退避重试;型面纯 additive、公面 1033、peer 不动;§66。上一版 0.73.3 = **patch**:CC-61 sdk 9.7.1 提货 + `capabilities.approvalsStreamLive` 四态读口(缺席 = 判不出;`livePendingNeedsReconcile` 只在引擎明说会推时才让对账节拍降兜底)+ CC-60 五条模型面文案锚包侧半场(cursorSemantics 机读位 / result 行注记 / bash 首行两变体与良性槽 / 通知 seed 并集 / parked 臂);型面纯 additive、公面 1032、peer 不动;§65。上一版 0.73.2 = **patch**:CC-59 悬挂 ask 全卡 —— `livePending[].frame`(server ≥7.87.0)两道闸窄读进视图,在场即走流内帧腿同一条路(入参可见、改写可转发),缺席保持盲卡;CC-34 收口(引擎半场随 7.87.0 到货,判据交黑盒);型面纯 additive、公面 1026、peer 不动;§64。上一版 0.73.1 = **patch**:CC-57 `decidePlanReview` outcome 尾句按「决断有没有生效」四态选(单铸点 `planReviewOutcomeTail`;此前本地拒发仍让模型汇报已拒绝)+ CC-56 cancel 的 409 按机器码分家(`cancelConflictFromError` 三形 / 新安全码 `cancel_run_not_running`)与提交面 429 用量窗读口 + 人话;型面纯 additive、公面 1026、peer 不动;§63。上一版 0.73.0 = **minor,型面 BREAKING**:fleet 视图八个数值键改可选 —— CC-52 `FleetTaskView.elapsedMs` / `tokens` / `queuedCount` 与 `FleetWorkflowView.doneCount` / `totalCount` / `failedCount` / `tokens` / `elapsedMs` 不再 `?? 0`(有键 = 真值含真 0,缺键 = 不知道;逐键缺席语义见 §62b)+ 台账补偿链无基数不铸;公面导出名零增减 1019、零 wire 变化、peer 不动;§62。上一版 0.72.14 = **patch**:悬挂的流内 ask 拉半场 —— CC-55 `startApprovalsFeed` 快照加 `livePending` 段并进变化摘要(键缺席 = 未报,不铸空)+ 视图 / 去重账 / 与流内帧腿同链的决断口(入参不可见上卡明说、改写不转发)+ 宿主闸对账节拍 + 待决计数读口(不知道 = null);型面纯 additive、公面 1019、peer 不动;§61。上一版 0.72.13 = **patch**:server 7.86.0 提货 —— CC-46 plan_review `permissionModeAfter` 发口(三选卡双闸:宿主声明只读起步 ∧ 引擎 ≥7.86.0;400 field_conflict 两种处置)+ CC-54 `capabilities.executionLane` 四态读面(键缺席 ≠ 不是本机车道;`toolsRunHere` 判据归包)+ CC-53 detach 版本闸三态;型面 additive(另撤回 0.72.12 的主通道 `absent` 臂,改独立缺席订阅口)、公面 1011、peer 不动;§60;**预告 0.73.0 BREAKING**:fleet 视图数值键改可选。上一版 0.72.12 = **patch**:「缺席被折成正向终态」按类清剿 —— CC-50 M1 头条(fleet 行缺席改发 `absent` 不再铸 `end{isError:false}`)+ 六站一次改齐(缺席 ⇒ `unknown`)+ 结果边界 fail-closed 取舍 + `_sema_outcome` + `Outcome unknown:` 行 + CC-51 M6(default 臂不再谎报 running)+ 普查门 + DS-06;型面 additive、公面 993、peer 不动;行为面三处真变化见 CHANGELOG 取舍段;§59。上一版 0.72.11 = **patch**:core 7.23.0 提货 —— CC-49 通告码 66 → 67 `config.write_protection_unresolved`(operator;兄弟码 `target_view_absent` = 没有视图,这枚 = 有视图解析不出)+ `permission_denials` 自动升级腿通电(`gates[].toolCallId` ⇒ `tool_use_id`;CC-34 引擎半场);型面零变化、公面 989、peer 不动、devDep core ~7.23.0;§58。上一版 0.72.10 = **patch**:CC-41 leader run 终局 `needs_human` + `result.conflict` 三形读面(none 缺席不可分 / unreadable 在场读不懂 / conflict;`salvaged[]` 原样给落盘口;措辞单源不提重试);型面纯 additive、公面 989、peer 不动;§57。上一版 0.72.9 = **patch**:server 7.85.0 提货 —— CC-30 会话内 MCP re-dial 消费口(`reconnectMcpServer` 三态 / unsupported 恒五键 / 交易文案单源)+ CC-39② memory-status `autoConsolidationArmed` 三态 + CC-45 resume 补充句渲保留秒数;型面纯 additive、公面 985、peer 不动;§56。上一版 0.72.8 = **patch**:清账三票 —— `memory:"off"` 请求键(CC-39③,server 7.84.0 S-405)+ `runStream` 第二条中性臂 `Model output error:`(CC-43)+ 注入件撞活 run 自动 steer 零卡(CC-44);型面纯 additive、公面 977、peer 不动;§55。上一版 0.72.7 = **patch**:core 7.22.0 提货 —— 通告码 66 `mcp.server_redialed` + 读器 `readMcpServerRedialed` + `wiring_manifest.readDeny` 第九段 `_sema_readDeny`(缺席 = 没有内置行判这条腿);型面纯 additive、公面 971、peer 不动、devDep core ~7.22.0;§54。上一版 0.72.6 = **patch**:cli L-379 包侧半场 —— `steerFollowIntent` steer 后续听意图三态(tail / after-decision / after-wake)+ `activeRunSelfHealRow` 续听声明第五参;型面纯 additive、公面 969、peer 不动;§53。上一版 0.72.5 = **patch**:server 7.82.1 提货 —— `capabilities.webSearch.backend` 部署默认 WebSearch 后端四态读面(键缺席 = 老引擎判不了 ≠ `none`);型面纯 additive、公面 968、peer 不动;§52。上一版 0.72.4 = **patch**:core 7.21.x 三件经 server 7.82.0 提货 —— `wiring_manifest.autoConsolidation` 第八段 `_sema_autoConsolidation`(缺席 = indeterminate 不折 false);型面纯 additive、公面 962、peer 不动;§51。上一版 0.72.3 = **patch**:core #863 记忆单系统半场 ① —— `projectAgentsForWire` 投影 `agents[].memory`(user|project|local 三词同映射引擎平面 agent:<type>);型面纯 additive、公面 962、零 wire 新键、peer 不动;§50。上一版 0.72.2 = **patch**:workflow 视图两票 —— `LiveWorkflowController.resolution()` 六态(snapshot() 的 null 三义拆开)+ `noteOwnWorkflowRun` own 台账同拍登记;型面纯 additive、公面 961、零 wire 键、peer 不动;§49。上一版 0.72.1 = **patch**:server 7.80.1 提货 —— 409 `conflict.resume_context_unavailable` 结构读数(`staleAfterSec` / `runId`;sdk 9.6.0 尚未带键,经 sdk 今天恒缺席)+ `SkillSpec.baseDir`(只在本机车道带);型面纯 additive、公面 960、peer 不动;§48。上一版 0.72.0 = **minor**:型面 BREAKING —— 39 个零消费导出退出公面(CC-32 退役批,[7419] §45 预告 / cli [7422] 同意 / web-client·desktop 过节拍沉默 = 同意;名单见 §47a S-1);运行期零 BREAKING、公面 956、peer 不动、devDep core ~7.20.1;随批:已退役名账 `removed` + export-liveness 门 G 段 + 冻结账门 ⑧c;§47。上一版 0.71.4 = **patch**:core 7.20.1 提货 —— `ENGINE_NOTICE_CODES` 65 + `wiring_manifest.writeProtection` 第七段 `_sema_writeProtection`;型面纯 additive、公面 995、peer 不动、devDep core `~7.20.1`;§46。上一版 0.71.3 = **patch**:门体系清账批 —— CC-24 export-liveness 门 + 39 个导出退役预告(0.72.0 删,表态制)/ CC-26 `as unknown as` 铸链棘轮 / CC-25 冻结账门 ⑧ 段 / CC-06 B-081 包侧半场(终帧 `_sema_effective_reasoning` / `_sema_effective_memory_scopes` + resume reopen 族 + `routePairingVerdict`);型面纯 additive、公面 986 → 995、peer 不动;§45。上一版 0.71.2 = **patch**:接入方验收两票归包 —— CC-28 B-132 decide 拒体三句去内部车道词 / CC-29 B-133 committedUuids 唯一性(重复 ⇒ 形 f);零型面变化、公面 986、peer 不动;§44。上一版 0.71.1 = **patch**:接入档打回修正 —— CC-27 `ApprovalCardRequest.readRootCandidate?` 帧→卡透传位 + 新导出型 `ReadRootCandidateView`;型面纯 additive、公面 986 不变、peer 不动;§43。上一版 0.71.0 = **minor**:型面 BREAKING 六件 —— peer sdk 地板 >=9.6.0 + agent-types >=0.3.0 / `SkillsListingTruncatedFactsView` 删 `requestedBudgetBytes?`·`laneClamped?` / `WiringManifestMcpEntry` → `WiringManifestMcpEntryView` / `MAX_AGENT_SKILLS` 删 / `decide.workflow_host_not_parked` 退役;运行期零 BREAKING。内容:core 7.20.0 提货(闭集 +5 六十四码)/ 🔴 CC-16 `text_segment_end.committedUuids[]` / CC-08 全五件(tool_disclosure / tool_progress 两 chrome 臂、wiring_manifest tools·hooks·lsp 进切片、tool_roster_delta 接上、context_usage 进切片、`readRootCandidate` 镜像)/ CC-19 `mcpEngineLegPresence` 归包 / CC-20 not_parked clean-cut;公面 986;§42 / 42y 八条)|
23
23
  | peer:wire 契约 | `@sema-agent/sdk` **>=9.8.1**(value-level,非 type-only;**0.75.0 抬版**:9.8.x 声明 `Capabilities.deviceExecutor.management?`,9.7.1 失去物料见证;**0.74.0 曾抬到 >=9.7.1**:9.7.x 追平的六处型面是本包 0.73.3 起的编译基线,且 9.6.0 失去物料见证;**0.71.0 曾抬到 >=9.6.0**:`tool_disclosure` / `tool_progress` 两帧型与 `ToolApprovalFrame.readRootCandidate` 自 9.6.0 起;0.69.0 曾抬到 >=9.4.0(`reasoning_end` / `lastLegMcp`),0.60.0 抬到 >=8.4.0;地板由 `scripts/run-sdk-floor-test.mjs` 的 `FLOOR` 与 public-surface 门 C-CC-3「不低于见证到的最低实装版」双钉)| `package.json` `peerDependencies` |
24
24
  | peer:会话词汇表 | `@sema-agent/agent-types` **>=0.3.0**(type-only,零运行时;0.71.0 抬版:devDep 与 peer 同步,type-superset 门 ④ 撞名预警对着 0.3.0 的 .d.ts 求值) | 同上 |
25
25
  | runtime dep | `diff` ^9.0.0(**唯一**一条;portability 门按**等值**钉死) | `package.json` `dependencies` |
@@ -9597,3 +9597,32 @@ installCoreValuePorts({ resolveAutonomousLoopPrompt, loosenReasons, combinePolic
9597
9597
  3. **成文改口**:① 「每个已知键恰读一次」射程从「顶层键」改为「顶层键 + `rewind` 四子键 + `settings` 子键」;② 「读器族 11 只整族改齐」补族边界定义(经工厂、返回 `{ kind }`),族外裸字符串读口 `projectMcpReconnectCapability` 本版同律;③ 「型面零变」(0.77.0)指 wire 键 / ChromeEvent 臂零变,不是 `.d.ts` 零变(0.77.0 的 `.d.ts` 差异 = `taskRequest.d.ts` −`agents` +两函数两常量、`persistedRulesWire.d.ts` +写面、`sessionPolicy*` 两只新文件);④ 采外部验收红基线读数:0.76.2 上 `rewind:{model:'HIJACKED'}` 真能覆盖顶层 `model`、`rewind:{maxCostUsd:'5'}` 真能绕过坏值门、`rewind:'abc'` 摊下标键;`settings` 表外子键也抛(0.77.0 §79c G1 有,发车帖正文漏)。
9598
9598
 
9599
9599
  **包侧缺口:** ① 出包面注释存量(别仓名 / 票号 / 帖号 / 过程词)与卫生门判据太窄(CC-100)—— 方案候拍板(dist 去注释 vs 手清),0.77.2 · ② `DeniedBy` 第十词 `read_boundary` / `teamName` / `stillLive` 三词随 sdk 10 型面在 0.78.0 吸收(CC-106)· ③ `capabilities.mcpProbe` 候 core 7.26.0 #951 → server 7.93.0(CC-74)。
9600
+
9601
+ ## §81 🆕 0.77.2 dist 零注释 + 门词汇表外句改口(patch;型面零变、行为零变)
9602
+
9603
+ > **patch**:公面 1143 不变、wire 零新键、peer 地板不动 `>=9.8.1`。两件:① 制品面 —— 构建期去注释,dist `.js` / `.d.ts` 零注释;② 闭集读数改口 —— `gateDeniedByDetail` 表外词兜底句。按 C-R69 全速模式一帖即通知。
9604
+
9605
+ ### 81a. 处置表
9606
+
9607
+ | # | 面 | 本包做了什么 | 端要做什么 |
9608
+ |---|---|---|---|
9609
+ | S-1 | dist 制品(CC-100) | **changed(制品面)**:`removeComments`;dist 零注释由新门 `run-dist-comments-test.mjs` 钉(`DIST-COMMENT-FAIL`);行为 / 型面逐字节同 0.77.1 | 零改。IDE 悬停不再显示 JSDoc —— 本文档是唯一契约面,按 §NN 段接入;若端侧有「按包注释接」的习惯,从此改按本文档 |
9610
+ | S-2 | `gateDeniedByDetail` 表外词兜底句(CC-111 ①) | **changed(闭集读数)**:`denied by a layer this build does not know (<word>) — this build does not know this layer name: a newer engine may have added it, or the record may be damaged; this client cannot tell which`(此前断言「it is damaged」) | 渲染端零改(仍是一句可渲染文本);把这一句钉进快照测试的端按新句改 |
9611
+
9612
+ ### 81b. 缺席语义(逐键)
9613
+
9614
+ - `deniedBy` 表外词(含空串 / 非串):兜底句 = 「本版不认识这个层名」,**不断言坏记录**;原样带上那个词。第十词 `read_boundary`(server ≥7.92.0 已过境)在本包 0.77.x 上就是这一格;它的专属人话句(含读边界含义)随 sdk 10 型面在 0.78.0(CC-106)。
9615
+ - dist 零注释对缺席语义无影响;去注释后**字符串字面量与元组类型里的文案仍在**(如请求装配车道表的 `why`、分歧台账),它们是运行期数据不是注释。
9616
+
9617
+ ### 81c. 黑盒判据骨架
9618
+
9619
+ - **G1**:tarball 内每个 `dist/**/*.js` / `*.d.ts` 用 TypeScript 扫描器数注释 trivia ⇒ 0(0.77.1 上 `.js` 33,393 行注释);去注释归一化后逐文件 diff 0.77.1 ⇒ 只差 `gateVocabulary` 与 `request/taskRequest`(后者一处 `why` 串去人名)。
9620
+ - **G2**:`gateDeniedByDetail('brand_new_layer')` ⇒ 含 `does not know this layer name` 且含 `brand_new_layer`、不含 `is damaged`;九词各自仍返回专属句(0.77.1 上表外词句含 `so this one is damaged`)。
9621
+
9622
+ ### 81y. 🔴 三端升级必读(固定段式,[C295])
9623
+
9624
+ 1. **换钉 `^0.77.2` 之前**:零动作;若有快照测试钉着表外词旧句,按 81a S-2 改。
9625
+ 2. **零改的面**:§79 / §80 全部内容原样适用;行为与型面逐字节同 0.77.1。
9626
+ 3. **成文改口**:① 「包源注释 = 对外面」作废 → dist 零注释,源码注释是内部面;对外面 = dist 代码(含字符串字面量 / 类型级文案)+ 四份文档;② 表外词兜底句从「坏记录」改「本版不认识」。
9627
+
9628
+ **包侧缺口:** ① 第十词 `read_boundary` 专属句随 sdk 10 抬地板 0.78.0(CC-106)· ② `mandate` 帧位镜像候 core 7.26.0 铸点(CC-110)· ③ 字符串字面量 / 元组类型里的历史台账文案(分歧台账、duty 句)含 `cli` 等产品名与票号 / 帖号,按拍板允许,不再清。
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sema-agent/client-core",
3
- "version": "0.77.1",
3
+ "version": "0.77.2",
4
4
  "description": "Client-side session runtime shared by every sema human client (TUI / web / desktop): sema wire frames (AgentEvent) -> CC session vocabulary (SDKMessage) with dual-plane output (transcript/chrome), deterministic transcript ids, lane discipline as a type, and the notification/dedup ledgers. Every CC-skin shape is collected here so the wire itself stays neutral. Renamed from @sema-agent/wire-cc-adapter (0.1.x).",
5
5
  "license": "MIT",
6
6
  "type": "module",