@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,71 +1,21 @@
1
- /**
2
- * design/161 — client-core 顶层单入口:**契约收敛物**(纯类型,零运行时;实现分批跟进)。
3
- *
4
- * 这是立项的唯一权威签名源(clay 三裁 2026-07-30 + 对抗复审 r1 收敛;两份文档签名互不相容的
5
- * 教训 = 收敛物必须是 tsc 管得住的代码,见 sema-internal design-161-review-r1.md §〇)。
6
- * 实现工单以本文件为锚:W1 per-session 化 → 入口实现 → W5 冷接 → 三端迁移(desktop → sema-web
7
- * 聊天区 → web-client)。**本文件不进 index.ts barrel,实现落地一件出口一件。**
8
- *
9
- * ══ 三个入口,不是一个 ═══════════════════════════════════════════════════════════════════
10
- * 1. `createAgentSession(config)` —— per-session 会话流面(AgentEvent → SDKMessage + HITL 桥 +
11
- * 终态投影)。wire 只有一种:SDK 的 `AgentClientConfig` 判别联合(client/relay 本就是它的两臂,
12
- * r1 E3 —— 在这里再判一次就是复制 SDK)。
13
- * 2. `attachSeatSession(seatApi)` —— 层 2 远程代理:座位(Electron renderer / web seat lane)侧
14
- * **没有 AgentEvent 流**(收到的已是 main 进程 adapt 后的 SDKMessage,seatContract:49-56),
15
- * 所以它不是第三个 wire 臂,是层 1 返回面的**同型转发**(内部零 wire、零 adapt)。
16
- * 3. `createBackgroundView(client)` —— 平行入口(clay 二裁 2026-07-30):`assistant.tasks` 与
17
- * `fleet` 都是**会话外读面**(assistant 跨 session;fleet 是 idle 壳唯一保持订阅的常驻 SSE),
18
- * 生命周期不该绑在某个会话的 dispose() 上,所以归一投影不进 createAgentSession。
19
- */
20
1
  import type { AgentClient, AgentClientConfig } from '@sema-agent/sdk';
21
- /**
22
- * 已构造 client 的接入臂 **必须同时带构造参数** —— `AgentClient.config` 是 private
23
- * (sdk client.d.ts:124),包拿不回 baseUrl/authToken/principal,而入口要用它们做四件事:
24
- * caps 探针 kick ×2、task-agents wire 预备、durable 读面的 client 另建(planReview 同款)。
25
- * 不带这三样的「裸 client」臂在 r1 E3-2 已证伪。
26
- */
27
2
  export interface ProvidedClientWire {
28
3
  readonly client: AgentClient;
29
4
  readonly baseUrl: string;
30
5
  readonly authToken: AgentClientConfig['authToken'];
31
6
  readonly principal?: string;
32
7
  }
33
- /** wire 入参:给配置则入口自建 client;给 ProvidedClientWire 则复用宿主的(参数齐备)。 */
34
8
  export type AgentSessionWire = AgentClientConfig | ProvidedClientWire;
35
9
  export interface AgentSessionHostSurface {
36
- /** 转录消费口(SDKMessage 流的宿主端)。缺席 ⇒ 入口拒绝启动(没有它整个入口无意义)。 */
37
10
  onTranscript(msg: unknown): void;
38
- /**
39
- * chrome 装饰臂(seam.ts CHROME_ARMS 表)。缺席的 required 臂 = 功能静默不出现
40
- * (desktop 今天缺 7/8,r1 E8c)——所以本口的自检是**表驱动**的:实现必须提供
41
- * `chromeArmMisses()`,对 `required:true` 且未被消费的臂逐臂计数,门断言恒 0。
42
- */
43
11
  onChrome?(event: unknown): void;
44
- /**
45
- * 工具审批卡口。两条腿:
46
- * sync-frame 腿:缺席 ⇒ 主动 respond deny(现行为,保留);
47
- * durable-park 腿:缺席 ⇒ 🔴 **主动 decide deny + 一条诚实告知行**(行为变更,替换今天的
48
- * fail-stuck;candidates 见下方 OPEN-1 —— headless「留 park 待接手」场景是否豁免候 clay)。
49
- */
50
12
  approvalCard?: unknown;
51
- /** AskUserQuestion overlay 口。durable 腿缺席后果同上(deny 语义 = respond 取消形)。 */
52
13
  askQuestion?: unknown;
53
- /**
54
- * plan review 口。缺席 ⇒ 今天是「卡永不出现且静默」(planReviewWire.ts:77 fail-soft)——
55
- * 改为:至少产出一条可见终态行(引擎在等,人必须知道)。卡的**皮肤归端**(desktop 的
56
- * ExitPlanMode 权限卡形 vs cli 的 overlay 形都合法,包只出数据与决断口;OPEN-2)。
57
- */
58
14
  planReview?: unknown;
59
- /** 通知队列口(缺席=计 miss,静默可接受 —— 引擎不等)。 */
60
15
  notify?: unknown;
61
- /** 后台任务转发口(会话自己流上的 task_notification / subagent_lifecycle;跨会话视图归 createBackgroundView)。 */
62
16
  onBackgroundTask?(event: unknown): void;
63
- /** 身份采集口(meta.taskId + done.result.sessionId;三端各写一份的第 5 缺口)。 */
64
17
  onIdentity?(identity: AgentSessionIdentity): void;
65
- /** 未知帧告警口(包内四层 default 静默的补偿;milestone 节流姿势收编 web-client frame-warnings)。 */
66
18
  onUnknownFrame?(frame: unknown): void;
67
- /** turn 级错误口(9 类 taxonomy + 状态码链 + wire-code 闭集表 —— 收编 web-client 三件套并接
68
- * controlRouter.errCodes 单源,r1 E7:不是「三分诊」)。 */
69
19
  onTurnError?(err: unknown): void;
70
20
  }
71
21
  export interface AgentSessionIdentity {
@@ -74,23 +24,12 @@ export interface AgentSessionIdentity {
74
24
  }
75
25
  export interface AgentSessionConfig {
76
26
  readonly wire: AgentSessionWire;
77
- /** 请求车道(taskRequest.ts 的 RequestLane;web 传输 lane 是另一个轴,别混,r1 角度2)。 */
78
27
  readonly lane: 'interactive' | 'print';
79
28
  readonly hostSurface: AgentSessionHostSurface;
80
- /**
81
- * per-session 键(W1):包内单槽位全部改「sessionKey → 注册表」,零参旧 API = default-key
82
- * 兼容层(cli 的 module-load 装配不动)。多会话宿主(desktop)每会话一键,互不顶盖。
83
- */
84
29
  readonly sessionKey?: string;
85
30
  }
86
31
  export interface AgentSession {
87
- /** 发起一个 turn(内部:buildTaskRequest 唯一构造口 + runStream 内建去重 + HITL 桥)。 */
88
32
  query(input: unknown): AsyncIterable<unknown>;
89
- /**
90
- * 冷接(W5,r1 E9):按调用方给的 id 接上一个**不是本进程发起**的在飞 run(页面刷新 / 桌面
91
- * 重启 / 跨端接手)。与 query() 同一消费面;park 帧在冷接腿上同样可决断。
92
- * 这是 sema-web stream-core 旧腿退役的前置能力 —— 没有它退役 = 删掉唯一的刷新恢复路径。
93
- */
94
33
  attach(target: {
95
34
  taskId: string;
96
35
  sessionId?: string;
@@ -98,28 +37,18 @@ export interface AgentSession {
98
37
  interrupt(): Promise<void>;
99
38
  steer(text: string): Promise<void>;
100
39
  resumeAfterDecision(): Promise<void>;
101
- /** 面缺席自检出口(测试面,恒 0 断言;不是运行期告警 —— Ink 吞 console,r1 E6)。 */
102
40
  surfaceMisses(): Readonly<Record<string, number>>;
103
41
  identity(): AgentSessionIdentity;
104
42
  dispose(): void;
105
43
  }
106
- /** 层 1:唯一的 wire 入口。 */
107
44
  export type CreateAgentSession = (config: AgentSessionConfig) => AgentSession;
108
- /**
109
- * 层 2:座位远程代理 —— 与 AgentSession **同型**(同一个接口),内部把每个方法转发给座位 IPC
110
- * (seatContract 的 verb 面),零 wire 零 adapt。座位可达字段集是 9 键闭集(< interactive 的
111
- * ~25 键)—— 该不对称必须**显式暴露**(supportedFields),端上的控件按它显隐,不许各自再判。
112
- */
113
45
  export type AttachSeatSession = (seatApi: unknown) => AgentSession & {
114
46
  readonly supportedFields: readonly string[];
115
47
  };
116
48
  export type BackgroundSource = 'assistant' | 'fleet';
117
- /** not-configured = assistant 无 TiDB 时的 `{tasks:[]}` 形 —— 与「真没有任务」必须可区分。 */
118
49
  export type BackgroundSourceHealth = 'ok' | 'unavailable' | 'not-configured';
119
- /** 第三套中性词表(不用任一方词表:3 值压不住 9 值,9 值会造 assistant 侧不存在的态)。 */
120
50
  export type BackgroundStatus = 'running' | 'waiting-on-human' | 'queued' | 'stopping' | 'done' | 'failed' | 'stopped' | 'unknown';
121
51
  export interface BackgroundRow {
122
- /** 带来源判别;fleet 复合 id("<runId> <taskId>")不拆 —— 裸 id union 会重复计数。 */
123
52
  readonly key: {
124
53
  readonly source: 'assistant';
125
54
  readonly taskId: string;
@@ -128,34 +57,9 @@ export interface BackgroundRow {
128
57
  readonly rowId: string;
129
58
  };
130
59
  readonly status: BackgroundStatus;
131
- /** 统一 epoch ms;assistant 的 ISO 串只在边界转一次。 */
132
60
  readonly updatedAtMs?: number;
133
- /**
134
- * 行**创建**时刻(统一 epoch ms)。语义 = 这一行是什么时候被排上的,不是什么时候开跑的。
135
- * · assistant 臂:`AssistantTask.createdAt`(wire 是 ISO 串,与 updatedAt 同一个边界转换器);
136
- * · fleet 臂:wire 上**没有这个量** ⇒ fleet 行恒缺席(fleet 给的是 {@link startedAtMs})。
137
- * 缺席后果:端渲不出「排了多久」,必须不渲 —— 🔴 绝不 `?? Date.now()`/`?? 0` 冒充,也绝不拿
138
- * updatedAtMs 顶替(那是「最后一次动」,不是「什么时候来的」)。
139
- */
140
61
  readonly createdAtMs?: number;
141
- /**
142
- * 行**开跑**时刻(统一 epoch ms)= elapsed 的锚。
143
- * · fleet 臂:`FleetTaskRow.startedAt`(server ≥1.250,fleet-bus.ts:94;launch 时刻,revive 行
144
- * = 本 revive 周期的 wake 时刻)。契约级别 **ADDITIVE / tolerate-absent** —— 排队中的行本就
145
- * 没有它(server 侧据此把显示态落 queued),消费端**不能当必填**。
146
- * · assistant 臂:wire 上没有 launch 时刻 ⇒ assistant 行恒缺席(它给的是 {@link createdAtMs})。
147
- * 为什么是它而不是 server 的 `elapsedMs`:后者是发帧那一刻的快照,客户端拿着自算会漂;
148
- * 锚是绝对时刻才稳(server [C36])。缺席后果:端**不渲时长**(假 0s 比不渲更坏)。
149
- */
150
62
  readonly startedAtMs?: number;
151
- /**
152
- * 这一行所属的引擎会话 id。语义 = 「跳到该会话 / 按会话归组」这类 affordance 的目标。
153
- * · assistant 臂:`AssistantTask.sessionId`(wire 恒在场);
154
- * · fleet 臂:server 在 `stripT`(routes/fleet.ts:95)里把 `sessionId`/`scope` 剥掉不上 wire
155
- * ⇒ fleet 行恒缺席,别在投影里等它([C36] 事实②)。
156
- * 缺席后果:那条跳转/归组的 affordance **必须显隐** —— 没有已挣得的目标就不摆入口
157
- * (假 affordance 比没有更坏);🔴 绝不 `?? ''` 造一个空会话 id 出来。
158
- */
159
63
  readonly sessionId?: string;
160
64
  readonly needsAttention?: boolean;
161
65
  readonly name?: string;
@@ -167,9 +71,7 @@ export interface BackgroundRow {
167
71
  readonly gate?: unknown;
168
72
  }
169
73
  export interface BackgroundView {
170
- /** 🔴 一等返回位,端必须渲它 —— 源不可用/未配置与「空列表」是三件事。 */
171
74
  readonly sources: Readonly<Record<BackgroundSource, BackgroundSourceHealth>>;
172
- /** fleet 子行(parentId 在场)不进跨 session 视图(子代不是用户的独立后台任务)。 */
173
75
  readonly rows: readonly BackgroundRow[];
174
76
  }
175
77
  export type CreateBackgroundView = (client: AgentClient) => {
@@ -1,13 +1 @@
1
1
  export {};
2
- // ── 已裁定(clay 终裁 2026-07-31,档 sema-internal e2b874c;实现必须遵守)──────────────────────
3
- // RULED-1 durable park 腿面缺席 = **分形**:
4
- // · 面「注册过但坏了」(卡口异常)→ 主动 decide deny + 诚实告知行(解锁优先);
5
- // · 面「从未注册」(print/headless 本无卡口)→ 保留 park + 打印含 resume 指令的告知行
6
- // (接手优先 —— headless 故意留 park 换 REPL/desktop 决断是合法场景)。
7
- // 🔴 附加不变式(clay 原话「danger 权限保证全部畅通即可」):bypassPermissions/danger 模式下
8
- // 审批链全程畅通 —— 零 park、零卡、零 deny,本缺席矩阵整表不适用;实现必带一条 danger-lane
9
- // e2e 断言(danger 会话跑到审批点零停顿直通)。
10
- // RULED-2 plan review 卡形 = **皮肤归端**:包只出数据+决断口;desktop 保持 ExitPlanMode 权限
11
- // 卡形(CC 对位),cli 保持 overlay 形,不强制统一 UI。
12
- // OPEN-3(实现期):file_link / live elicitation 两条 wire 缺口先补进 adapt(E8a/E8b,
13
- // elicitation 方向 = 把 desktop/web 那份**上交**成包件)。
@@ -7,36 +7,18 @@ export declare const MAX_AGENT_TOOLS = 64;
7
7
  export declare const MAX_AGENT_TOOL_NAME_CHARS = 128;
8
8
  export declare const MAX_AGENT_SKILL_CONTENT_CHARS = 1048576;
9
9
  export declare const MAX_AGENT_MAX_TURNS = 1000;
10
- /** server 1.205 TASK_AGENT_FIELD_SHAPES 的 15 字段白名单(permissionMode 显式拒收,不在表内)。 */
11
10
  export declare const TASK_AGENT_WIRE_FIELDS: readonly ["name", "whenToUse", "whenToUseLean", "allowTools", "denyTools", "skills", "background", "isolation", "model", "thinking", "systemPrompt", "maxTurns", "memory", "observer", "observerMessage"];
12
- /** core ThinkingLevel 词表(effortWire.ReasoningEffort 与之完全一致)。 */
13
11
  export type WireThinkingLevel = 'off' | 'minimal' | 'low' | 'medium' | 'high' | 'xhigh' | 'max';
14
12
  export type TaskAgentWireSkill = {
15
13
  name: string;
16
14
  description: string;
17
15
  content: string;
18
16
  };
19
- /** CC 形自定义 agent 的 `memory:` 三词(cli `loadAgentsDir` 的 zod 枚举同源)。 */
20
17
  export declare const AGENT_MEMORY_WORDS: ReadonlySet<string>;
21
- /**
22
- * `agents[].memory` 上 wire 的形(上游闭合白名单 `{ scopes?, writeScope?, enabled?, scopeContract? }` 的子集:本包只用前两键)。
23
- *
24
- * 🔴 **CC-96 放宽**:`writeScope` 此前写死成 `string`(恒在、且不可为 `null`),而 wire 的取值域是 `string | null`
25
- * (上游直讯确认该域不变)。写死的后果是**读得出却铸不出** —— {@link import('./memorySpecWire.js').readAgentMemorySpec}
26
- * 能把显式 `null` 读成「这一次 run 对记忆面只读」(无 remember 工具、不做 consolidation 写,recall 仍可),
27
- * 而端**没有任何办法经本包声明**这一形:只剩「写到某一层」一条路。半条腿的读面比没有更坏,因为它让
28
- * 「本端支持只读记忆」看起来是真的。
29
- * · `writeScope: null` = 显式声明只读;
30
- * · `writeScope` 键缺席 = 未指定(缺省归引擎);
31
- * · `writeScope: '<层名>'` = 写到那一层。
32
- * 🔴 放宽的是**类型**,不是本包投影器的纪律:{@link projectAgentsForWire} 仍**恒显式钉** `writeScope`
33
- * (见下方投影处的 🔴 注),漏钉会让新条目静默写进全局层 —— 那条约束一个字都没松。
34
- */
35
18
  export type TaskAgentWireMemory = {
36
19
  scopes: string[];
37
20
  writeScope?: string | null;
38
21
  };
39
- /** 发往 server 的单个 agent 定义(白名单内字段的壳侧子集——observer 面壳无语义,恒不发;`memory` 自 0.72.3 按定义发)。 */
40
22
  export type TaskAgentWireItem = {
41
23
  name: string;
42
24
  whenToUse?: string;
@@ -49,15 +31,8 @@ export type TaskAgentWireItem = {
49
31
  thinking?: WireThinkingLevel;
50
32
  systemPrompt?: string;
51
33
  maxTurns?: number;
52
- /**
53
- * CC-39①(0.72.3,core #863 G-5 / R-6):自定义 agent 的 `memory: user|project|local` **三词同映射**为引擎平面
54
- * `{ scopes: ["agent:<type>"], writeScope: "agent:<type>" }`(= CC `user` 语义;in-repo 两形候裁,`project` / `local`
55
- * 各出一条一次性 warn)。🔴 `writeScope` 必须显式钉:core `normalizeMemorySpec` 缺省取 scopes 末层,漏钉 = 新条目
56
- * 静默写进全局层。词表外 ⇒ 不发本键 + warn(server `memoryOk` 是闭合白名单,脏形整 agent 400)。缺席 ⇒ 键不在场。
57
- */
58
34
  memory?: TaskAgentWireMemory;
59
35
  };
60
- /** 投影输入的结构型(loadAgentsDir.AgentDefinition 的窄切片——纯模块不拉运行时依赖图)。 */
61
36
  export type AgentDefLike = {
62
37
  agentType: string;
63
38
  whenToUse?: string;
@@ -69,80 +44,33 @@ export type AgentDefLike = {
69
44
  maxTurns?: number;
70
45
  background?: boolean;
71
46
  isolation?: 'worktree' | 'remote';
72
- /** CC 形 `memory:` 前置字段(cli zod 枚举 user|project|local;本包按开集串收,词表外不发)。 */
73
47
  memory?: string;
74
48
  source: string;
75
49
  getSystemPrompt?: (arg?: unknown) => string;
76
50
  };
77
- /** 纯投影的注入读面(单测注入 fixture;产品缺省真读面在 prepare 里拼)。 */
78
51
  export type ProjectAgentsDeps = {
79
- /** F5a 中央解析器切片:frontmatter model 词 → 真模型名或 'inherit'(warning 一次性)。 */
80
52
  resolveModel: (frontmatterModel: string | undefined) => {
81
53
  model: string;
82
54
  warning?: string;
83
55
  };
84
- /** 壳 effort 值 → ThinkingLevel(词表外 → undefined 不发)。 */
85
56
  effortToThinking: (effort: unknown) => WireThinkingLevel | undefined;
86
- /** 已加载的 skill 全文(名字 join 用);undefined = 本次不点亮 skills 字段。 */
87
57
  skillSpecs?: TaskAgentWireSkill[];
88
58
  };
89
59
  export type ProjectAgentsResult = {
90
60
  agents: TaskAgentWireItem[] | undefined;
91
- /** 剪裁/降级告警(调用层一次性打 stderr)。 */
92
61
  warnings: string[];
93
62
  };
94
- /**
95
- * 纯投影:壳 AgentDefinition[](F5a activeAgents)→ server 白名单载荷。built-in 恒过滤(引擎有
96
- * 自己的内置 roster);形状违规壳侧收紧(server 是整请求 400,不能把脏字段交出去)。
97
- */
98
63
  export declare function projectAgentsForWire(defs: readonly AgentDefLike[], deps: ProjectAgentsDeps): ProjectAgentsResult;
99
- /**
100
- * SDK 0.0.52 client.capabilities()(GET /v1/capabilities,Capabilities 全类型面)→ 顶层
101
- * `taskAgents` 布尔(SDK 宪法迁移批:raw fetch + body 裸读退役,改 typed 读)。
102
- * true = 确证支持;false = 确证不支持(200 但 taskAgents !== true:旧 server 无该字段,或多租
103
- * requirePrincipal fail-closed 报 false);undefined = 无法确证(不可达/超时/非 2xx/不可
104
- * 解析 —— SDK 对这些统一抛错,catch 归一)⇒ 调用层 fail-soft 照发(旧 server 静默剥字段
105
- * 无害;引擎真死 stream 自己 fail-loud)。
106
- * 等价性:3s 预算改经 client timeoutMs;maxRetries=0 单发(否则 503 会按 SDK 缺省重试,探测预算
107
- * 语义变形)。principal 头:SDK 6.11 起值检查删头——缺席不发(与原手抄同义;F-011 停发后
108
- * 单机形恒缺席,owner-null)。
109
- */
110
64
  export declare function engineSupportsTaskAgents(baseUrl: string, opts?: EngineProbeOpts): Promise<boolean | undefined>;
111
- /**
112
- * prepare 腿的连线配置。`authToken` 是**串或取值函数**({@link WireAuthTokenSource},0.62.0 放宽):
113
- * 函数形每发一次请求读一次 ⇒ 引擎换代、凭证换新之后端只换值,不必重建 client。串形零行为差。
114
- */
115
65
  export type WireConfig = {
116
66
  baseUrl: string;
117
67
  authToken?: WireAuthTokenSource;
118
68
  principal?: string;
119
69
  };
120
- /** IO 半场注入的产品投影闭包(F5a 定义加载 + model 解析 + skills join)。 */
121
70
  export type ProjectorFn = () => Promise<ProjectAgentsResult>;
122
- /**
123
- * kick 探测 + 加载 + 投影(createLiveConversationClient 构造时调;幂等——同 baseUrl 只跑一次)。
124
- */
125
71
  export declare function prepareTaskAgentsWireWith(cfg: WireConfig, projector: ProjectorFn): Promise<void>;
126
- /**
127
- * 有界就绪门(liveClient.stream 首帧前 await;缺省 4s 上限)。prepare 未 kick(mock 车道/测试)或
128
- * 超时 ⇒ 立即放行(本 turn 不带 agents,fail-soft)。永不抛。
129
- *
130
- * 🔴 域词表-13(RB-447 同形):这个 race 的唯一有界退出臂**绝不 unref**——它是被调用方真
131
- * await 的控制流(liveClient.ts `await awaitTaskAgentsWire()`),不是后台保活豁免;unref 会让
132
- * 宿主进程能在它 settle 前提前退出,届时这个 await 永远等不到结果。对照组:
133
- * askGateWire.ts 的 budget 定时器同样 unref,但它挂在无人 await 的 `void Promise.race(...)` 上,
134
- * 后果只是丢一行 warn——两处形状相同后果不同,分野在于「这个 promise 有没有被 await」,不能
135
- * 套用同一个 unref 兼容套(见 unrefTimer.ts 头注)。race settle 后 clearTimeout 掉该句柄
136
- * (此前完全没有 clear,超时臂即使先输也留着一个已到期的句柄)。
137
- */
138
72
  export declare function awaitTaskAgentsWire(timeoutMs?: number): Promise<void>;
139
- /**
140
- * 同步读面(liveClient.toLiveRequest 消费):当前投影好的 agents 载荷。每次读取后 kick 一次后台
141
- * re-project(热加载 next-turn freshness:watcher clear loadAgentsDir memoize 后,下一 turn 拿新定义;
142
- * 缓存未清时 re-project 近零开销)。能力已确证 false ⇒ 恒 {}。
143
- */
144
73
  export declare function taskAgentsField(): {
145
74
  agents?: TaskAgentWireItem[];
146
75
  };
147
- /** 测试钩子:清空模块态(prepare 缓存/一次性告警集)。 */
148
76
  export declare function _resetAgentsWireForTest(): void;
@@ -1,25 +1,13 @@
1
- /**
2
- * ⇄ B2 批搬迁(2026-07-27,多端改造设计稿 §3 B2):cli src/sema/agentsWireCaps.ts 逐字搬入(依赖 engineWireSdk,同批)。
3
- */
4
- /**
5
- * src/sema/agentsWireCaps.ts — F5b agents wire 纯半场(skillsWireCaps 同款拆分:规则/投影/探测/
6
- * 模块态全在这,零产品依赖图;IO 半场见 agentsWire.ts——产品读面 dynamic import 后注入 projector)。
7
- * 契约与决策的完整记账见 agentsWire.ts 头注释。
8
- * (engineWireSdk 亦是纯半场——只 import 外部零依赖 SDK,不破本模块零产品图纪律。)
9
- */
10
1
  import { hostEnv } from './hostEnv.js';
11
2
  import { makeEngineWireClient } from './engineWireSdk.js';
12
- // ── server 1.205 契约常量(实拆 dist/spec-fields.js,数值逐字)────────────────────────────────────
13
3
  export const MAX_TASK_AGENTS = 32;
14
4
  export const MAX_AGENT_NAME_CHARS = 64;
15
5
  export const MAX_AGENT_TEXT_CHARS = 4_096;
16
6
  export const MAX_AGENT_SYSTEM_PROMPT_CHARS = 65_536;
17
7
  export const MAX_AGENT_TOOLS = 64;
18
8
  export const MAX_AGENT_TOOL_NAME_CHARS = 128;
19
- // 0.71.0(CC-18 收口):`MAX_AGENT_SKILLS` 常量已删(0.70.2 退役保留一版;server 7.78.1 起 agents[].skills 无条数帽)。
20
9
  export const MAX_AGENT_SKILL_CONTENT_CHARS = 1_048_576;
21
10
  export const MAX_AGENT_MAX_TURNS = 1_000;
22
- /** server 1.205 TASK_AGENT_FIELD_SHAPES 的 15 字段白名单(permissionMode 显式拒收,不在表内)。 */
23
11
  export const TASK_AGENT_WIRE_FIELDS = [
24
12
  'name',
25
13
  'whenToUse',
@@ -37,9 +25,7 @@ export const TASK_AGENT_WIRE_FIELDS = [
37
25
  'observer',
38
26
  'observerMessage',
39
27
  ];
40
- /** CC 形自定义 agent 的 `memory:` 三词(cli `loadAgentsDir` 的 zod 枚举同源)。 */
41
28
  export const AGENT_MEMORY_WORDS = new Set(['user', 'project', 'local']);
42
- /** 五档来源优先级(managed > --agents flag > project > user > plugin)——32 帽裁剪的排序键。 */
43
29
  const SOURCE_RANK = {
44
30
  policySettings: 0,
45
31
  flagSettings: 1,
@@ -50,10 +36,6 @@ const SOURCE_RANK = {
50
36
  function sourceRank(source) {
51
37
  return SOURCE_RANK[source] ?? 5;
52
38
  }
53
- /**
54
- * 纯投影:壳 AgentDefinition[](F5a activeAgents)→ server 白名单载荷。built-in 恒过滤(引擎有
55
- * 自己的内置 roster);形状违规壳侧收紧(server 是整请求 400,不能把脏字段交出去)。
56
- */
57
39
  export function projectAgentsForWire(defs, deps) {
58
40
  const warnings = [];
59
41
  const customs = defs
@@ -73,12 +55,11 @@ export function projectAgentsForWire(defs, deps) {
73
55
  if (typeof name !== 'string' || name.length === 0)
74
56
  continue;
75
57
  if (name.length > MAX_AGENT_NAME_CHARS) {
76
- // name 是身份,截断可能撞名——整个丢弃 + warn(server 对超长 name 是整请求 400)。
77
58
  warnings.push(`agents wire: agent name "${name.slice(0, 40)}…" exceeds ${MAX_AGENT_NAME_CHARS} chars — definition skipped`);
78
59
  continue;
79
60
  }
80
61
  if (seen.has(name))
81
- continue; // server 对 duplicate name 整请求 400——防御性去重(activeAgents 已按名唯一)
62
+ continue;
82
63
  seen.add(name);
83
64
  const item = { name };
84
65
  if (typeof def.whenToUse === 'string' && def.whenToUse.length > 0) {
@@ -98,7 +79,7 @@ export function projectAgentsForWire(defs, deps) {
98
79
  warnings.push(`agents wire: agent "${name}" ${label} had invalid entries — dropped`);
99
80
  }
100
81
  if (kept.length === 0)
101
- return undefined; // 全剪空 ≠ 显式空单(空 allow 语义歧义,宁可回落继承)
82
+ return undefined;
102
83
  if (kept.length > MAX_AGENT_TOOLS) {
103
84
  warnings.push(`agents wire: agent "${name}" ${label} truncated to ${MAX_AGENT_TOOLS} entries`);
104
85
  return kept.slice(0, MAX_AGENT_TOOLS);
@@ -111,7 +92,6 @@ export function projectAgentsForWire(defs, deps) {
111
92
  const denyTools = projectTools(def.disallowedTools, 'disallowedTools');
112
93
  if (denyTools)
113
94
  item.denyTools = denyTools;
114
- // CC-39①:memory 三词 → 引擎平面 agent:<type>(见 TaskAgentWireItem.memory 顶注)
115
95
  if (def.memory !== undefined) {
116
96
  if (typeof def.memory === 'string' && AGENT_MEMORY_WORDS.has(def.memory)) {
117
97
  item.memory = { scopes: [`agent:${name}`], writeScope: `agent:${name}` };
@@ -123,7 +103,6 @@ export function projectAgentsForWire(defs, deps) {
123
103
  warnings.push(`agents wire: agent "${name}" memory: ${String(def.memory)} is not one of user|project|local — memory not sent`);
124
104
  }
125
105
  }
126
- // skills:名字 → 已加载全文对象 join;join 不上剪掉 + warn。
127
106
  if (Array.isArray(def.skills) && def.skills.length > 0 && deps.skillSpecs) {
128
107
  const byName = new Map(deps.skillSpecs.map(s => [s.name.toLowerCase(), s]));
129
108
  const joined = [];
@@ -132,9 +111,6 @@ export function projectAgentsForWire(defs, deps) {
132
111
  if (typeof skillName !== 'string' || skillName.length === 0)
133
112
  continue;
134
113
  const spec = byName.get(skillName.toLowerCase());
135
- // 🔴 CC-18(0.70.2):**不再按名字长度滤**(server `skillOk` 里 name 只判非空)。修前名字超 64 的
136
- // 技能会落进下面的 `missing`,再被措辞说成「not found in the loaded skill set」—— 它明明加载了,
137
- // 那句话是假的。`content` 两条判**保留**:server `skillOk` 至今逐字判非空且 ≤1MB(超了整请求 400)。
138
114
  if (spec && spec.content.length > 0 && spec.content.length <= MAX_AGENT_SKILL_CONTENT_CHARS) {
139
115
  joined.push(spec);
140
116
  }
@@ -145,9 +121,6 @@ export function projectAgentsForWire(defs, deps) {
145
121
  if (missing.length > 0) {
146
122
  warnings.push(`agents wire: agent "${name}" skills not found in the loaded skill set (dropped): ${missing.join(', ')}`);
147
123
  }
148
- // 🔴 CC-18(0.70.2):**零条数帽**,join 上几条发几条(server 7.78.1 的 skills 臂已无
149
- // `v.length <= MAX_AGENT_SKILLS`)。修前在第 10 条处 `slice` + warn —— warn 落在运维日志里,
150
- // 用户看到的只是「我声明的第 11 个技能没生效」,没有任何一层会响。
151
124
  if (joined.length > 0)
152
125
  item.skills = joined;
153
126
  }
@@ -159,8 +132,6 @@ export function projectAgentsForWire(defs, deps) {
159
132
  else if (def.isolation !== undefined) {
160
133
  warnings.push(`agents wire: agent "${name}" isolation "${String(def.isolation)}" is not accepted by the engine (only "worktree") — dropped`);
161
134
  }
162
- // model:F5a 中央解析器已把档位词/CC 别名/catalog 名/完整 ID 解析成真模型名;'inherit' 不发
163
- // (core 对 def.model 走 resolveModel fail-loud,'inherit' 字面会被判 unknown_model)。
164
135
  const resolution = deps.resolveModel(def.model);
165
136
  if (resolution.warning)
166
137
  warnings.push(resolution.warning);
@@ -175,7 +146,7 @@ export function projectAgentsForWire(defs, deps) {
175
146
  prompt = def.getSystemPrompt();
176
147
  }
177
148
  catch {
178
- prompt = undefined; // prompt 闭包抛错 fail-soft:agent 仍发(引擎给基本 env),别拖死整个载荷
149
+ prompt = undefined;
179
150
  }
180
151
  if (typeof prompt === 'string' && prompt.length > 0) {
181
152
  if (prompt.length > MAX_AGENT_SYSTEM_PROMPT_CHARS) {
@@ -200,18 +171,6 @@ export function projectAgentsForWire(defs, deps) {
200
171
  }
201
172
  return { agents: out.length > 0 ? out : undefined, warnings };
202
173
  }
203
- // ── 能力探测(taskAgents capability,按 baseUrl 缓存)────────────────────────────────────────────
204
- /**
205
- * SDK 0.0.52 client.capabilities()(GET /v1/capabilities,Capabilities 全类型面)→ 顶层
206
- * `taskAgents` 布尔(SDK 宪法迁移批:raw fetch + body 裸读退役,改 typed 读)。
207
- * true = 确证支持;false = 确证不支持(200 但 taskAgents !== true:旧 server 无该字段,或多租
208
- * requirePrincipal fail-closed 报 false);undefined = 无法确证(不可达/超时/非 2xx/不可
209
- * 解析 —— SDK 对这些统一抛错,catch 归一)⇒ 调用层 fail-soft 照发(旧 server 静默剥字段
210
- * 无害;引擎真死 stream 自己 fail-loud)。
211
- * 等价性:3s 预算改经 client timeoutMs;maxRetries=0 单发(否则 503 会按 SDK 缺省重试,探测预算
212
- * 语义变形)。principal 头:SDK 6.11 起值检查删头——缺席不发(与原手抄同义;F-011 停发后
213
- * 单机形恒缺席,owner-null)。
214
- */
215
174
  export async function engineSupportsTaskAgents(baseUrl, opts) {
216
175
  const client = makeEngineWireClient({
217
176
  baseUrl,
@@ -234,13 +193,12 @@ let activeProjector = null;
234
193
  let preparedKey = null;
235
194
  let preparedPromise = null;
236
195
  let payload;
237
- let capsVerdict; // 按 prepare 时的 baseUrl 缓存
196
+ let capsVerdict;
238
197
  const emittedWarnings = new Set();
239
198
  function warnOnce(msg) {
240
199
  if (emittedWarnings.has(msg))
241
200
  return;
242
201
  emittedWarnings.add(msg);
243
- // eslint-disable-next-line no-console
244
202
  console.error(`[sema] ${msg}`);
245
203
  }
246
204
  async function runPrepare(cfg, projector) {
@@ -254,7 +212,6 @@ async function runPrepare(cfg, projector) {
254
212
  ]);
255
213
  capsVerdict = caps;
256
214
  if (projected.agents && caps === false) {
257
- // 确证无能力:不发 + 一次性诚实告警(用户会误信自定义 agents 已生效)。
258
215
  warnOnce(`agents wire: this engine does not support per-task custom agents (capabilities.taskAgents absent/false — server <1.205 or multi-tenant) — ${projected.agents.length} custom agent definition(s) will NOT be sent`);
259
216
  payload = undefined;
260
217
  return;
@@ -263,22 +220,16 @@ async function runPrepare(cfg, projector) {
263
220
  warnOnce(w);
264
221
  payload = projected.agents;
265
222
  if (payload && hostEnv().SEMA_DEBUG) {
266
- // eslint-disable-next-line no-console
267
223
  console.error(`[sema] agents wire: ${payload.length} custom agent(s) → TaskRequest.agents (${payload.map(a => a.name).join(', ')})`);
268
224
  }
269
225
  }
270
226
  catch (e) {
271
- // 任何 prepare 失败 fail-soft:不发 agents,绝不拖死 turn。
272
227
  payload = undefined;
273
228
  if (hostEnv().SEMA_DEBUG) {
274
- // eslint-disable-next-line no-console
275
229
  console.error('[sema] agents wire prepare soft-failed (no agents stamped):', e);
276
230
  }
277
231
  }
278
232
  }
279
- /**
280
- * kick 探测 + 加载 + 投影(createLiveConversationClient 构造时调;幂等——同 baseUrl 只跑一次)。
281
- */
282
233
  export function prepareTaskAgentsWireWith(cfg, projector) {
283
234
  const key = cfg.baseUrl;
284
235
  if (preparedPromise && preparedKey === key)
@@ -288,18 +239,6 @@ export function prepareTaskAgentsWireWith(cfg, projector) {
288
239
  activeProjector = projector;
289
240
  return preparedPromise;
290
241
  }
291
- /**
292
- * 有界就绪门(liveClient.stream 首帧前 await;缺省 4s 上限)。prepare 未 kick(mock 车道/测试)或
293
- * 超时 ⇒ 立即放行(本 turn 不带 agents,fail-soft)。永不抛。
294
- *
295
- * 🔴 域词表-13(RB-447 同形):这个 race 的唯一有界退出臂**绝不 unref**——它是被调用方真
296
- * await 的控制流(liveClient.ts `await awaitTaskAgentsWire()`),不是后台保活豁免;unref 会让
297
- * 宿主进程能在它 settle 前提前退出,届时这个 await 永远等不到结果。对照组:
298
- * askGateWire.ts 的 budget 定时器同样 unref,但它挂在无人 await 的 `void Promise.race(...)` 上,
299
- * 后果只是丢一行 warn——两处形状相同后果不同,分野在于「这个 promise 有没有被 await」,不能
300
- * 套用同一个 unref 兼容套(见 unrefTimer.ts 头注)。race settle 后 clearTimeout 掉该句柄
301
- * (此前完全没有 clear,超时臂即使先输也留着一个已到期的句柄)。
302
- */
303
242
  export async function awaitTaskAgentsWire(timeoutMs = 4000) {
304
243
  if (!preparedPromise)
305
244
  return;
@@ -317,14 +256,8 @@ export async function awaitTaskAgentsWire(timeoutMs = 4000) {
317
256
  clearTimeout(timeoutHandle);
318
257
  }
319
258
  }
320
- /**
321
- * 同步读面(liveClient.toLiveRequest 消费):当前投影好的 agents 载荷。每次读取后 kick 一次后台
322
- * re-project(热加载 next-turn freshness:watcher clear loadAgentsDir memoize 后,下一 turn 拿新定义;
323
- * 缓存未清时 re-project 近零开销)。能力已确证 false ⇒ 恒 {}。
324
- */
325
259
  export function taskAgentsField() {
326
260
  const current = payload;
327
- // 后台刷新(fire-and-forget;capsVerdict 沿用——能力不随热加载变)
328
261
  if (preparedPromise && capsVerdict !== false && activeProjector) {
329
262
  void activeProjector()
330
263
  .then(p => {
@@ -336,7 +269,6 @@ export function taskAgentsField() {
336
269
  }
337
270
  return current ? { agents: current } : {};
338
271
  }
339
- /** 测试钩子:清空模块态(prepare 缓存/一次性告警集)。 */
340
272
  export function _resetAgentsWireForTest() {
341
273
  activeProjector = null;
342
274
  preparedKey = null;
@@ -1,18 +1,3 @@
1
- /**
2
- * approvalsStreamLiveCapability — `GET /v1/capabilities.approvalsStreamLive`(server ≥7.87.1;sdk 9.7.1 `Capabilities.approvalsStreamLive?: boolean`)
3
- * 的三端共用读面(0.73.3;与 sql / writeProtection / webSearch.backend / executionLane 四只兄弟同一套四态词汇)。
4
- *
5
- * ── 这一位答的是哪一个问题 ────────────────────────────────────────────────────────────────
6
- * 「这台引擎会不会在 `approvals.stream` 上推流内 ask 的进出(`live_pending` / `live_resolved`)」= checkpointStore ∧ toolApproval。
7
- * 它决定 feed 消费方要不要**靠**推面:位为 true ⇒ 推面可靠,对账节拍(`ApprovalsFeedOptions.reconcile`)只是兜底;
8
- * 位为 false / 键缺席 / 从没观测 ⇒ 推面**不可靠或判不出**,对账节拍是悬挂 ask 的唯一拉面 —— **别等** `live_pending`。
9
- *
10
- * ── 🔴 读法 ─────────────────────────────────────────────────────────────────────────────────
11
- * ① **键缺席 ≠ false**:老 server(<7.87.1)不报这一位 ⇒ `not_reported`(判不出),按「要拉」处理;折成 false 是替引擎断言「不推」。
12
- * ② 严格布尔;`null` / 串 / 数 / 数组 / 对象 ⇒ 畸形(删格 ⇒ `unobserved`)。
13
- * ③ 「要不要对账」的判据归包:{@link livePendingNeedsReconcile} —— 只有 present 且 true 才 false;其余一律 true(少查一次 = 一只等人的 ask 迟迟不出现)。
14
- */
15
- /** 四态读数。`unobserved` 由读口在这一格空缺时铸,不由投影铸。 */
16
1
  export type ApprovalsStreamLiveReading = {
17
2
  kind: 'unobserved';
18
3
  } | {
@@ -21,22 +6,12 @@ export type ApprovalsStreamLiveReading = {
21
6
  kind: 'present';
22
7
  live: boolean;
23
8
  };
24
- /** caps 回体 → 本格读数;畸形一律 `undefined`(= 这一格不写 ⇒ 读口答 `unobserved`)。 */
25
9
  export declare function projectApprovalsStreamLiveCapability(caps: unknown): ApprovalsStreamLiveReading | undefined;
26
- /** 宿主 caps probe 的读面 tee 落点(与四只兄弟并列)。绝不 throw;畸形 ⇒ 删格;`opts.generation` 关掉旧探测覆盖新读数的竞态。 */
27
10
  export declare function noteEngineCapsForApprovalsStreamLive(baseUrl: string, caps: unknown, opts?: {
28
11
  generation?: number;
29
12
  }): void;
30
- /** 本进程观测到的读数;这一格空缺 ⇒ `{kind:'unobserved'}`。 */
31
13
  export declare function observedApprovalsStreamLive(baseUrl?: string | undefined): ApprovalsStreamLiveReading;
32
- /**
33
- * feed 消费方「要不要靠对账节拍拉悬挂 ask」的判据单源:只有引擎明说会推(present ∧ true)才 `false`;
34
- * 位为 false / 老 server 判不出 / 从没观测 ⇒ `true`。fail-safe 方向定在「查」(与 `shouldPoll` 同一条理由)。
35
- */
36
14
  export declare function livePendingNeedsReconcile(reading: ApprovalsStreamLiveReading): boolean;
37
- /** doctor 那一行的 detail 串,唯一措辞真源。🔴 `not_reported` 句不许暗示「不推」。 */
38
15
  export declare function approvalsStreamLiveDoctorDetail(reading: ApprovalsStreamLiveReading): string;
39
- /** 换代失效口(引擎温切成功后调):清成未观测。空串 ⇒ no-op;绝不 throw。 */
40
16
  export declare function forgetApprovalsStreamLiveReading(baseUrl: string | undefined): void;
41
- /** 测试钩子。 */
42
17
  export declare function __resetApprovalsStreamLiveReadingsForTests(): void;