@sema-agent/client-core 0.77.1 → 0.78.0

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 +42 -1
  2. package/README.md +6 -5
  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 +3 -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 +23 -371
  182. package/dist/hitl/persistedRulesWire.js +62 -329
  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 +1 -249
  284. package/dist/request/taskRequest.js +20 -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 +78 -5
  382. package/package.json +3 -3
@@ -1,119 +1,19 @@
1
- /**
2
- * ⇄ B1 批搬迁(2026-07-27,多端改造设计稿 §2.4.1-B):cli src/sema/printToolResultFrame.ts 逐字搬入,
3
- * 唯一改动 = `SDKMessage` 的 type-only import 从壳内 `../seam/adapter/index.js` 改指
4
- * `@sema-agent/agent-types`(type-only,零运行时边)。
5
- *
6
- * 🔴 **这两个 SDKMessage 不是同一个 symbol**(实测,别沿用「re-export」的想当然):壳侧
7
- * `src/seam/adapter/types.ts:35` 是 `z.infer<ReturnType<typeof SDKMessageSchema>>` —— CC 自己
8
- * `src/entrypoints/sdk/coreSchemas.ts` 里 zod schema 的推断型;本包用的是 agent-types 手写 `.d.ts`
9
- * 的同名镜像联合。两者都镜像 CC 的同一个 union,但**是两条独立的类型来源**。
10
- * 本函数返回值本来就走 `as unknown as SDKMessage`(见文件末),所以搬迁没有改变任何运行时字节;
11
- * ⚠️ 但**壳侧 shim 时要过一道 tsc**:`seamQueryEngine.ask` 那个消费点期望的是 zod 推断型,
12
- * 换成 agent-types 型后若不结构兼容,tsc 会在 shim 那一刻报——那是真信号,不要用 any 压掉。
13
- *
14
- * ⚠️ 设计稿 §8-5 把 print lane 的归属列为未决裁量点 —— 本文件是纯投影(tool_end arm → CC user 帧),
15
- * 任何端的「工具失败」判据都要它,故按 B1 清单搬入;`-p` 车道的**消费方**仍在壳侧。
16
- */
17
- /**
18
- * src/sema/printToolResultFrame.ts — headless `-p` 车道的 CC `user`/tool_result 帧合成
19
- * ([909]B1「工具错误置 is_error」半句勘察定案,2026-07-16)。
20
- *
21
- * 勘察结论(真行为实证,dist 自 spawn 引擎 + 失败 Bash 调用):`-p --output-format stream-json
22
- * --verbose` 的 stdout 里【零】tool_result 帧——既不是壳写死 is_error:false,也不是引擎帧失真:
23
- * 引擎 tool_end.isError 一路如实到壳(eventToSdkMessage.ts tool_end 臂 → 内部 tool_end_result arm),
24
- * 但 seamQueryEngine.ask 的消费循环把该 arm 整帧吞掉(此前 :506 `continue`,swallow 注释自证)。
25
- * TB「~4000 个 Bash 调用 is_error:true 零次」= 语料里只有 assistant/tool_use 帧,工具结果面整体缺席。
26
- *
27
- * CC 2.1.207 对表:`-p --verbose` 的 stream-json 在每个工具收尾后发
28
- * {type:'user', message:{role:'user', content:[{type:'tool_result', tool_use_id, content,
29
- * is_error}]}, parent_tool_use_id, uuid, session_id}
30
- * (SDKUserMessage 信封;交互 REPL 侧 upstreamBridge.ts:1323-1343 已按同款形状合成给渲染面)。
31
- * 本模块把内部 arm 投影成该形状,`-p` 集成面从此能从流里辨认工具失败(is_error 如实透传)。
32
- *
33
- * 车道纪律:只被 seamQueryEngine.ask(headless `-p`)消费;交互 REPL 走 upstreamBridge 的
34
- * deferred-close 管线,一根毛不动。
35
- */
36
1
  import type { SDKMessage } from '@sema-agent/agent-types';
37
- /**
38
- * Flatten the §E1 wire `output`(NON-UNIFORM: `string` | `(TextContent|ImageContent)[]`)into one
39
- * plain-text blob。🔴 UNTRUSTED / OBSERVABILITY-ONLY:只呈现,绝不回喂模型。
40
- *
41
- * ⇄ REF-CC-008 / dup-05 兑现(ADAPT-F1,2026-08-02):此处曾是 `flattenWireOutput` 的**逐字节副本**,
42
- * 豁免理由写着「避免把重量级 REPL 桥拖进 `-p` 车道的 import 图」。A 族拆分把该函数从 1607 行的
43
- * `adapt.ts` 搬进了 `adapt/wireShapes.ts`,而那个文件**唯一的 import 是 `import type {Frame}`**
44
- * (type-only,编译后整段消失)—— 正是台账要的那片「零 import 叶」,拆分创造了退役条件。
45
- * 副本随之删除,`flattenToolOutput` 收成对唯一实现的**具名再导出**(公面名不动:它在
46
- * public-export-baseline 里,改名会当场红)。
47
- */
48
2
  export { flattenWireOutput as flattenToolOutput } from './adapt/wireShapes.js';
49
- /** 内部 tool_end_result arm(`eventToSdkMessage.ts` 的 `case 'tool_end'` 臂铸造)的防御性读形。
50
- * ⚠️ ADAPTER-F8 注纠(2026-08-02):原文锚的是裸行号 `213-231`,A 族拆分后那段是 `case 'text'` /
51
- * `case 'reasoning'`,真正的 tool_end 臂已挪位。锚换成符号名(REF-CC-063 同款,腐烂不了)。 */
52
3
  export interface ToolEndResultArmLike {
53
4
  type?: unknown;
54
5
  toolCallId?: unknown;
55
6
  toolName?: unknown;
56
7
  isError?: unknown;
57
8
  output?: unknown;
58
- /** 引擎 CC-shaped details(core 1.199+ AgentToolResult.details;Bash 时带 exitCode)。 */
59
9
  structured?: unknown;
60
10
  truncated?: unknown;
61
- /**
62
- * 这次调用失败的**机器码**(开集;`eventToSdkMessage` 的 `case 'tool_end'` 臂原样上臂,宿主从
63
- * 臂上直读 —— 与 {@link gate}/{@link delivered} 同款「臂带、卡不带」姿势)。已知族:中断
64
- * 合成收口两码(`interrupted_never_started` / `interrupted_outcome_unknown`,core 5.10.0)、
65
- * 委派席位到限两码(`delegation.*`)与 `mcp.server_revoked`(两族 core ≥5.50.0 孪生拼法起才
66
- * 真到达 —— 更旧引擎恒缺席,缺席≠没拒过)。词表与判定单源 `engineErrorCodes.ts`
67
- * (`delegationCapDispositionOf` 等);宿主只渲已知码的指路文案,未知码原样报码**不编因**。
68
- */
69
11
  errorCode?: unknown;
70
- /**
71
- * 这次调用**整条门记录**(0.60.0 / engine ≥7.64.0 / sdk 8.4.0)—— `eventToSdkMessage` 的
72
- * `case 'tool_end'` 臂经包内单源窄读器 `gateOutcomeOf` 铸出后原样上臂,宿主据此把处置/结算归属
73
- * 渲到工具卡与审计面。
74
- *
75
- * 它取代了退役的四个正交词 `settledBy` / `resolution` / `autoDenied` / `approver`
76
- * (**四键全删,无 alias**);那四个词的配对规则只活在注释里,消费端要靠**缺席**推语义。现在是
77
- * 一条记录:`disposition`(放行 / 被哪一**层**拒)+ `settlement?`(这次消费掉的等待怎么结束的)
78
- * + `origin?`(谁问的),后两位**同在同缺**。
79
- *
80
- * 🔴 **判定归包,别在宿主自拼**:「这次是不是审批窗自己走完的拒绝」「是不是引擎的限额回落窗
81
- * 自动拒的」两问各有一个包面谓词(`isApprovalWindowExpiredGate` / `isDenialLimitAutoDeniedGate`)
82
- * —— 旧形上这个判定是端各自拼的两键合取,而拼错的方式有好几种且错法静默。
83
- * 🔴 **缺席不带语义,不许反推**:上游逐字列了四种在 wire 上不可分辨的成因(门没看见这次调用 /
84
- * 延后重发 / reconcile 捡回的孤儿 / 记录过不了引擎的筛而 server 整条不投)⇒ 一律退回
85
- * `isError` + 文案。
86
- * ⚠️ **第五种成因有可读标记**(engine 7.64.0 真机黑盒 + server 认定为契约设计):审批窗走完
87
- * 未决而走 **park** 路径时,本臂上没有 `gate`、只有 {@link errorCode} `"gate.parked"`。宿主判
88
- * 「这次调用没在这里结算」必须**两形合读**(`isApprovalWindowExpiredGate` ∪
89
- * `isGateParkedToolEnd`);两形语义不同 —— 前者「窗走完拒了」,后者「park 了还没人决」。
90
- * 🔴 **UNTRUSTED-for-display**:`settlement.who.approver`(通道自报的身份串)与 `settlement.note`
91
- * (拒批人自写)只渲染,绝不回喂模型/工具入参,更不许当鉴权判据 —— 转录不是认证。
92
- * 🔴 本形是**防御性读形**(`unknown`):词表属主是引擎,消费方分支已知值 + 永远带 `default`。
93
- */
94
12
  gate?: unknown;
95
- /**
96
- * 这次 **MCP** 失败**到没到那台服务器**(core ≥7.6.0 S6-B;`yes` / `no` / `unknown` + 开集读)。
97
- *
98
- * 🔴 与 {@link errorCode} **合读**才有意义:同一个 `connection_closed`,`no` 可以直接重试
99
- * (什么都没发出去)、`unknown` 必须先去查(请求**可能**已经执行了)——带写副作用的工具在
100
- * `unknown` 上必须先核实再重试。
101
- * 🔴 **缺席不带语义**:每一次执行成功的调用、每一次非 MCP 失败都不带它。
102
- * ⚠️ `no` 说的是**调用方的工具调用**没发出去,**不**保证「那台服务器一个字节都没收到」。
103
- */
104
13
  delivered?: unknown;
105
- /**
106
- * 耐久 park 正扣着**哪一个** tool call 的 id(core ≥5.55.0 #333)。引擎从已提交 checkpoint 的
107
- * pendingAction 直读(**禁由工具自报**)。tool-less park(resource_limit / plan_review / task_done)
108
- * 上**整键缺席**,契约逐字 "ABSENT, never guessed" —— 缺席不铸键、也不猜。
109
- */
110
14
  gatedCallId?: unknown;
111
15
  parentToolCallId?: unknown;
112
16
  uuid?: unknown;
113
17
  session_id?: unknown;
114
18
  }
115
- /**
116
- * tool_end_result arm → CC `user`/tool_result SDK 帧。toolCallId 缺失(防御:未来 wire 变形)
117
- * 返回 null,调用方维持原 swallow 行为(绝不发无法对账的孤儿 tool_result)。
118
- */
119
19
  export declare function toolEndResultToUserFrame(arm: ToolEndResultArmLike): SDKMessage | null;
@@ -1,35 +1,9 @@
1
- /**
2
- * Flatten the §E1 wire `output`(NON-UNIFORM: `string` | `(TextContent|ImageContent)[]`)into one
3
- * plain-text blob。🔴 UNTRUSTED / OBSERVABILITY-ONLY:只呈现,绝不回喂模型。
4
- *
5
- * ⇄ REF-CC-008 / dup-05 兑现(ADAPT-F1,2026-08-02):此处曾是 `flattenWireOutput` 的**逐字节副本**,
6
- * 豁免理由写着「避免把重量级 REPL 桥拖进 `-p` 车道的 import 图」。A 族拆分把该函数从 1607 行的
7
- * `adapt.ts` 搬进了 `adapt/wireShapes.ts`,而那个文件**唯一的 import 是 `import type {Frame}`**
8
- * (type-only,编译后整段消失)—— 正是台账要的那片「零 import 叶」,拆分创造了退役条件。
9
- * 副本随之删除,`flattenToolOutput` 收成对唯一实现的**具名再导出**(公面名不动:它在
10
- * public-export-baseline 里,改名会当场红)。
11
- */
12
1
  export { flattenWireOutput as flattenToolOutput } from './adapt/wireShapes.js';
13
2
  import { flattenWireOutput } from './adapt/wireShapes.js';
14
- /**
15
- * Bash 臂的 is_error 派生(真行为实证,2026-07-16):引擎 tool_end.isError 语义 = 「工具本身
16
- * 是否执行失败」——命令非零退出时工具照常返回模型面框架文本(core runShell `exit code: N\n---
17
- * stdout ---…`)且 isError:false。CC 2.1.207 的 Bash tool_result 对非零退出置 is_error:true;
18
- * 交互 REPL 桥按同款派生。
19
- *
20
- * 🔴 语序与 toolResult.ts T11 逐字同款([1948] E4 / core RB-257,2026-07-29):
21
- * **structured.exitCode 在场 ⇒ 权威直读;缺席 ⇒ 正则反解兜底**。此前只有正则——输出超
22
- * 30000 字符溢写成 persisted-output 引用后,前缀把 `exit code: N` 挤出行首,锚失配 ⇒
23
- * 非零退出照样 is_error:false(test AI 生产轨迹 2/2 命中);而 structured 字段在溢写时
24
- * **完好保留**,正是为这种形准备的。兜底失锚时如实 false,绝不按内容嗅探瞎猜
25
- * (与 core [1951] 同判断:拿前缀猜 isError = 用一个谎换另一个谎)。
26
- */
27
3
  function bashExitCodeFailed(toolName, text, structured) {
28
4
  if (typeof toolName !== 'string' || toolName.toLowerCase() !== 'bash')
29
5
  return false;
30
6
  const st = structured;
31
- // 良性非零退出注记在场(grep/rg 无命中族)⇒ 非错——CC 同款:interpretation 形走 data
32
- // 路径非 error 路径(pretty223:394251);与 toolResult.ts T11 同判别量(2026-08-27)。
33
7
  if (typeof st?.returnCodeInterpretation === 'string' && st.returnCodeInterpretation.length > 0)
34
8
  return false;
35
9
  const ec = st?.exitCode;
@@ -38,10 +12,6 @@ function bashExitCodeFailed(toolName, text, structured) {
38
12
  const m = /^exit code: (\d+)\b/.exec(text);
39
13
  return m !== null && m[1] !== '0';
40
14
  }
41
- /**
42
- * tool_end_result arm → CC `user`/tool_result SDK 帧。toolCallId 缺失(防御:未来 wire 变形)
43
- * 返回 null,调用方维持原 swallow 行为(绝不发无法对账的孤儿 tool_result)。
44
- */
45
15
  export function toolEndResultToUserFrame(arm) {
46
16
  if (typeof arm.toolCallId !== 'string' || arm.toolCallId.length === 0)
47
17
  return null;
@@ -54,15 +24,12 @@ export function toolEndResultToUserFrame(arm) {
54
24
  {
55
25
  type: 'tool_result',
56
26
  tool_use_id: arm.toolCallId,
57
- // truncated 输出如实标注(观察面注记;截断体绝不回喂模型——upstreamBridge 同款)。
58
27
  content: arm.truncated === true ? `${text}\n…(truncated)` : text,
59
28
  is_error: arm.isError === true || bashExitCodeFailed(arm.toolName, text, arm.structured),
60
29
  },
61
30
  ],
62
31
  },
63
32
  parent_tool_use_id: typeof arm.parentToolCallId === 'string' ? arm.parentToolCallId : null,
64
- // eventToSdkMessage 已 stamp 的 uuid/session_id 原样骑帧(uuid = core-minted eventId 优先级
65
- // 在 stamp 里已定);缺失时留 undefined,print 面容忍(CC 消费者按可选读)。
66
33
  uuid: arm.uuid,
67
34
  session_id: arm.session_id,
68
35
  };
@@ -1,16 +1,3 @@
1
- /**
2
- * ⇄ B2 批搬迁(2026-07-27,多端改造设计稿 §3 B2):cli src/sema/promptProfileWireCaps.ts 逐字搬入(零依赖)。
3
- */
4
- /**
5
- * src/sema/promptProfileWireCaps.ts — PURE projection: the shell's prompt-profile pick → the
6
- * `TaskRequest.promptProfile` axis (core 1.328 [1144]: CC LT(model_id)-同构的呈现轴,
7
- * "simple"=CC 对 BYOM id 发的短形面(引擎缺省)/"classic"=长形面,按任务/模型可切)。
8
- *
9
- * Config source: env `SEMA_PROMPT_PROFILE`(A/B 与手选口;center 下发面走引擎侧 TaskSpec 直通,
10
- * 不经此位)。STRICT allowlist:仅 "simple"/"classic"(大小写不敏感,trim)stamp;其它/缺省 ⇒
11
- * `undefined`(不 stamp=引擎缺省 simple,请求形状不变——additive 纪律与 retainBackgroundWireCaps
12
- * 同款)。CALLER 前置 live 门(mock 形不变)。
13
- */
14
1
  import { type EnvLike } from './hostEnv.js';
15
2
  export type PromptProfile = 'simple' | 'classic';
16
3
  export declare function promptProfileFromEnv(env?: EnvLike): PromptProfile | undefined;
@@ -1,16 +1,3 @@
1
- /**
2
- * ⇄ B2 批搬迁(2026-07-27,多端改造设计稿 §3 B2):cli src/sema/promptProfileWireCaps.ts 逐字搬入(零依赖)。
3
- */
4
- /**
5
- * src/sema/promptProfileWireCaps.ts — PURE projection: the shell's prompt-profile pick → the
6
- * `TaskRequest.promptProfile` axis (core 1.328 [1144]: CC LT(model_id)-同构的呈现轴,
7
- * "simple"=CC 对 BYOM id 发的短形面(引擎缺省)/"classic"=长形面,按任务/模型可切)。
8
- *
9
- * Config source: env `SEMA_PROMPT_PROFILE`(A/B 与手选口;center 下发面走引擎侧 TaskSpec 直通,
10
- * 不经此位)。STRICT allowlist:仅 "simple"/"classic"(大小写不敏感,trim)stamp;其它/缺省 ⇒
11
- * `undefined`(不 stamp=引擎缺省 simple,请求形状不变——additive 纪律与 retainBackgroundWireCaps
12
- * 同款)。CALLER 前置 live 门(mock 形不变)。
13
- */
14
1
  import { hostEnv } from './hostEnv.js';
15
2
  const PROMPT_PROFILE_ENV = 'SEMA_PROMPT_PROFILE';
16
3
  export function promptProfileFromEnv(env = hostEnv()) {
@@ -1,53 +1,10 @@
1
- /**
2
- * operator 面读数(sdk `ReadFacePosture` 的防御读视图;结构逐字同源,见文件尾编译期对账钉)。
3
- */
4
1
  export interface ReadFacePostureView {
5
- /** 这台部署此刻的生效档。`null` = 没钉,引擎默认接管——与租户面同一份产物、同一句「没钉」。 */
6
2
  face: 'open' | 'roots' | null;
7
- /** 这一档是谁定的。server 闭四词(`env` / `center` / `posture` / `engine-default`),**按开集读**
8
- * ——server 闭集之外的值原样透传,不窄读成枚举(那会在 server 加词当天把一个合法读数判没)。 */
9
3
  source: string;
10
- /** 给运维的指路句。UNTRUSTED-for-display:呈前消毒 + 封长,见 {@link readFacePostureDetail}。 */
11
4
  note: string;
12
5
  }
13
- /**
14
- * `wiring.readFace` → 读数;**畸形一律 `undefined`**,绝不抛出。
15
- *
16
- * 🔴 整键缺席(老 worker,server <7.65.0)与在场但形坏,消费端拿到的都是同一个 `undefined` ——
17
- * 两者对端说的是同一句话(「这一面这一次答不出来」)。「为什么答不出来」不是这一位该回答的,
18
- * 是调用方自己知道的事(它有没有拿到 operator 响应;见 {@link readFacePostureDetail} 的
19
- * `opts.reachable` 参数,那条信息只能由调用方——不是本读器——提供)。
20
- * ⚠️ `face` 只认三态字面量(闭集,坏词一律判畸形);`source` 非空串即收(开集,理由见上);`note`
21
- * 允许空串(它是自由文本,空文本本身也是一句读数,不是「读不出」)。
22
- */
23
6
  export declare function projectReadFacePosture(wiring: unknown): ReadFacePostureView | undefined;
24
- /**
25
- * 三态措辞的**唯一铸点**(三端共用一句话;别在各端的行装配里另写一遍——与
26
- * `writeProtectionDoctorDetail` / `sqlEngineDoctorDetail` 同一条纪律)。
27
- *
28
- * 🔴 三句刻意逐字互异(黑盒锚):
29
- * ① `view` 在场 —— `read face <open|roots|not pinned> (source: <source> — <note>)`;
30
- * ② `opts.reachable === false` —— 「未观测」:这次进程没读到 operator 响应,与「这台部署没有
31
- * READ 档」是两件事,消费端不许把它读成后者;
32
- * ③ `reachable:true` 但 `view` 仍缺席 —— 「不报」:响应读到了,只是这一位读不出来。
33
- * 🔴 **不武断咎为版本**:`projectReadFacePosture` 把「整键缺席(老引擎,<7.65.0)」与
34
- * 「在场但形坏(≥7.65.0 的引擎送出一个本读器解不出来的响应)」折成同一个 `undefined`
35
- * (见该函数顶注),句子因此**不能**替其中一种情形撒谎——「需要更新引擎」对第二种情形是一句
36
- * 误导故障排查的假话。措辞同时点出两种成因,不擅自替调用方选一种。
37
- */
38
7
  export declare function readFacePostureDetail(view: ReadFacePostureView | undefined, opts: {
39
8
  reachable: boolean;
40
9
  }): string;
41
- /**
42
- * 租户面 `capabilities.readFace` 与本面 `posture.face` 分歧时的一句话;**只答分歧,不答一致**
43
- * ——一致不是新闻(两位的在场时点天然不同源,「相符」证不了什么也不该被渲成保证),本函数只在
44
- * 两者**确实不同**时才开口。
45
- *
46
- * 🔴 两个入参**任一**答不出来 ⇒ `undefined`(诚实缺席,不是「没有分歧」——见不到两位就判不了):
47
- * `posture === undefined`(operator 面这一次读不到,见 {@link projectReadFacePosture})或
48
- * `capFace` 既不是三态字面量也不是任意字符串(租户面那一位整键缺席时调用方会传 `undefined`,
49
- * 这里按同一条闸处理,不单独分支)。
50
- * 🔴 `capFace` 按**开集**读,与租户面型面同宽:除 `open`/`roots`/`null` 外的任意字符串仍当一个
51
- * **能判别的词**收(不是「读不懂」),因为 sdk 的租户面型面本就留了同一个 `(string & {})` 逃生口。
52
- */
53
10
  export declare function readFaceDisagreement(capFace: unknown, posture: ReadFacePostureView | undefined): string | undefined;
@@ -1,19 +1,6 @@
1
1
  import { capForDisplay } from './fleetTaskDesc.js';
2
- /** `note` 上屏前的封长(UTF-16 单元,按**转义后**的字节数算——见 {@link capForDisplay})。它是
3
- * 一句人话不是一个词,给得比 source/face 宽。 */
4
2
  const READ_FACE_NOTE_MAX = 256;
5
- /** `source` / 分歧句里词形的封长(与本包其余 detail 铸点同值同理由;同样按转义后字节数算)。 */
6
3
  const READ_FACE_WORD_MAX = 40;
7
- /**
8
- * `wiring.readFace` → 读数;**畸形一律 `undefined`**,绝不抛出。
9
- *
10
- * 🔴 整键缺席(老 worker,server <7.65.0)与在场但形坏,消费端拿到的都是同一个 `undefined` ——
11
- * 两者对端说的是同一句话(「这一面这一次答不出来」)。「为什么答不出来」不是这一位该回答的,
12
- * 是调用方自己知道的事(它有没有拿到 operator 响应;见 {@link readFacePostureDetail} 的
13
- * `opts.reachable` 参数,那条信息只能由调用方——不是本读器——提供)。
14
- * ⚠️ `face` 只认三态字面量(闭集,坏词一律判畸形);`source` 非空串即收(开集,理由见上);`note`
15
- * 允许空串(它是自由文本,空文本本身也是一句读数,不是「读不出」)。
16
- */
17
4
  export function projectReadFacePosture(wiring) {
18
5
  if (typeof wiring !== 'object' || wiring === null || Array.isArray(wiring))
19
6
  return undefined;
@@ -31,20 +18,6 @@ export function projectReadFacePosture(wiring) {
31
18
  return undefined;
32
19
  return { face: r.face, source: r.source, note: r.note };
33
20
  }
34
- /**
35
- * 三态措辞的**唯一铸点**(三端共用一句话;别在各端的行装配里另写一遍——与
36
- * `writeProtectionDoctorDetail` / `sqlEngineDoctorDetail` 同一条纪律)。
37
- *
38
- * 🔴 三句刻意逐字互异(黑盒锚):
39
- * ① `view` 在场 —— `read face <open|roots|not pinned> (source: <source> — <note>)`;
40
- * ② `opts.reachable === false` —— 「未观测」:这次进程没读到 operator 响应,与「这台部署没有
41
- * READ 档」是两件事,消费端不许把它读成后者;
42
- * ③ `reachable:true` 但 `view` 仍缺席 —— 「不报」:响应读到了,只是这一位读不出来。
43
- * 🔴 **不武断咎为版本**:`projectReadFacePosture` 把「整键缺席(老引擎,<7.65.0)」与
44
- * 「在场但形坏(≥7.65.0 的引擎送出一个本读器解不出来的响应)」折成同一个 `undefined`
45
- * (见该函数顶注),句子因此**不能**替其中一种情形撒谎——「需要更新引擎」对第二种情形是一句
46
- * 误导故障排查的假话。措辞同时点出两种成因,不擅自替调用方选一种。
47
- */
48
21
  export function readFacePostureDetail(view, opts) {
49
22
  if (view !== undefined) {
50
23
  const faceWord = view.face === null ? 'not pinned' : view.face;
@@ -59,18 +32,6 @@ export function readFacePostureDetail(view, opts) {
59
32
  }
60
33
  return 'read face not reported by this engine (an engine below 7.65.0, or a response this end could not parse)';
61
34
  }
62
- /**
63
- * 租户面 `capabilities.readFace` 与本面 `posture.face` 分歧时的一句话;**只答分歧,不答一致**
64
- * ——一致不是新闻(两位的在场时点天然不同源,「相符」证不了什么也不该被渲成保证),本函数只在
65
- * 两者**确实不同**时才开口。
66
- *
67
- * 🔴 两个入参**任一**答不出来 ⇒ `undefined`(诚实缺席,不是「没有分歧」——见不到两位就判不了):
68
- * `posture === undefined`(operator 面这一次读不到,见 {@link projectReadFacePosture})或
69
- * `capFace` 既不是三态字面量也不是任意字符串(租户面那一位整键缺席时调用方会传 `undefined`,
70
- * 这里按同一条闸处理,不单独分支)。
71
- * 🔴 `capFace` 按**开集**读,与租户面型面同宽:除 `open`/`roots`/`null` 外的任意字符串仍当一个
72
- * **能判别的词**收(不是「读不懂」),因为 sdk 的租户面型面本就留了同一个 `(string & {})` 逃生口。
73
- */
74
35
  export function readFaceDisagreement(capFace, posture) {
75
36
  if (posture === undefined)
76
37
  return undefined;
@@ -82,12 +43,5 @@ export function readFaceDisagreement(capFace, posture) {
82
43
  const wireWord = posture.face === null ? 'not pinned' : posture.face;
83
44
  return `capabilities says ${capWord}, wiring says ${wireWord}`;
84
45
  }
85
- /**
86
- * **编译期对账钉**(不出公面):sdk 的 `ReadFacePosture` 必须能赋给本视图 —— 这是本包 sdk 地板抬到
87
- * 8.5.0 的直接理由:<8.5.0 上这个名字根本不存在,`tsc` 报「没有导出成员」。
88
- *
89
- * 🔴 反向**刻意不钉**(本视图不必能赋给 sdk 形):`source` 在本视图上放宽成任意 `string`(开集读,
90
- * 见字段注),那是**故意比铸点宽**——窄读域只许等于或宽于铸点域,钉反向会把这条纪律反过来判成错。
91
- */
92
46
  const _readFacePostureShapePin = (w) => w;
93
47
  void _readFacePostureShapePin;
@@ -1,33 +1,13 @@
1
- /** 帧身份位(壳侧从被投影的那条 SDK 消息上取,包内不铸号)。 */
2
1
  export interface PrintFrameIdentity {
3
2
  uuid?: unknown;
4
3
  session_id?: unknown;
5
4
  }
6
- /**
7
- * print 出口帧的**逐字段对照表** —— 与 `REQUEST_FIELD_MATRIX` 同一纪律:
8
- * `cc:true` = CC 自己命名过的位,**改名即偏离 parity**;`cc:false` = 本次收编补上的归因位
9
- * (wire 原名 = SDK `AgentEvent.task_notification` 词汇)。`from` 写明它从 wire 的哪一位来。
10
- */
11
5
  export interface PrintNotificationFieldSpec {
12
- /** print 出口帧上的键名。 */
13
6
  field: string;
14
- /** wire 侧来源键(`—` = 信封位/由归一层派生)。 */
15
7
  from: string;
16
- /** CC 逐字位(改名即偏离 parity)。 */
17
8
  cc: boolean;
18
9
  why: string;
19
10
  }
20
11
  export declare const PRINT_NOTIFICATION_FIELD_MATRIX: readonly PrintNotificationFieldSpec[];
21
- /**
22
- * 引擎 `task_notification` 帧载荷 → CC `system/task_notification` 出口帧(print lane 唯一构造口)。
23
- *
24
- * 判定全部委托 `normalizeTaskNotification`(交互面同一把闸);缺席位一律**不铸空键**
25
- * (tolerate-absent —— 老引擎不发的字段不该在出口变成 `undefined` 值键)。
26
- * 返回 `null` = 该帧不该出口(task_id 空/缺)。
27
- */
28
12
  export declare function taskNotificationToPrintFrame(n: Record<string, unknown>, identity?: PrintFrameIdentity): Record<string, unknown> | null;
29
- /**
30
- * 出口帧里出现了**没进上表**的键就点名它(与 `unregisteredRequestKeys` 同纪律):
31
- * 顺手加一位很容易,加了之后「字段集合一」就又退化成一句注释 —— 加位必须先改表(带理由)。
32
- */
33
13
  export declare function unregisteredPrintNotificationKeys(frame: Record<string, unknown>): string[];
@@ -1,56 +1,15 @@
1
- /**
2
- * request/printNotification.ts — **`task_notification` 字段集合一**(B8,多端改造设计稿 §8-5 裁决
3
- * 第二件;§2.5 拆缝表 `seamQueryEngine.ts:690-708` 那一格)。
4
- *
5
- * ## 它解决的是什么
6
- *
7
- * 同一条引擎 `task_notification` 帧,壳里有**两个**消费者,各自决定「哪些字段算数」:
8
- * · 交互 lane:`notifications.normalizeTaskNotification` → `renderTaskNotificationXml`
9
- * (模型面 XML + 转录面),字段集 = `TaskNotificationFields` 15 位;
10
- * · print lane(`-p` 的 SDK 出口):`seamQueryEngine.ask` 里**手写的一段对象字面量**,
11
- * 只挑了 6 位(task_id / tool_use_id / status / output_file / summary / usage)。
12
- *
13
- * 后果是**残局归因在 `-p` 出口整段丢失**:引擎明明发了 `stoppedBy`(谁停的)/`resumable`
14
- * (还能不能续)/`partial`(残果)/`exitCode` / `diagnostics` / `result` / `lines` /
15
- * `recentSteps` / `editedFiles`,交互面 XML 里逐条都在,而**唯一没有人类当场看着的那条车道**
16
- * ——集成/自动化用的 `-p --output-format stream-json`——拿不到任何归因位。
17
- * (设计稿 §7.3(b) 记的是 fleet `bg_notification` lane 的同款不对称;print 出口这一处是
18
- * B8 落码时逐行核出来的第二处,同族。)
19
- *
20
- * ## 合一的口径(逐字段留注 = `PRINT_NOTIFICATION_FIELD_MATRIX`)
21
- *
22
- * 🔴 **判据同源**:本模块**不重新判**任何一位 —— 先过交互面那把闸
23
- * `normalizeTaskNotification`(空 task_id 丢帧 = RB-75 同族;summary 缺省兜底句;status 非串
24
- * 回落 `completed`),再把归一结果映到 CC 的 print 帧信封上。两面从此只有**一份**判据。
25
- *
26
- * 🔴 **车道差异只剩一条**:`status` 的 `killed ⇒ stopped` 归一 —— 那是 CC 自己 print/SDK 出口的
27
- * 形(FULL-SOURCE-187 line ~32320),XML 面按引擎原词渲染。这一条差异是**有理由的**,写在表里。
28
- *
29
- * **命名口径**:CC 已经命名过的 6 位保持 CC 逐字(`task_id` / `tool_use_id` / `output_file` /
30
- * `status` / `summary` / `usage`);新增的归因位用 **wire 原名**(`stoppedBy` / `resumable` / …)
31
- * —— 也就是 SDK `AgentEvent.task_notification` 的词汇表,`-p` 的 SDK 消费方与直连 SDK 的消费方
32
- * 因此看到同一套键名,不必再学第三套。additive:老消费方按 key 取值,多出来的键不碍事。
33
- *
34
- * ## 留壳的部分(§8-5 明写)
35
- *
36
- * `PrintStreamProjector`(stream-json 帧序/SSE 重铸)与全部 stderr 分诊文案**留壳**:那是
37
- * 渲染面与人话面,不是数据面。本模块只做「wire 帧 → CC 帧」这一跳。
38
- */
39
1
  import { normalizeTaskNotification } from '../notifications.js';
40
2
  export const PRINT_NOTIFICATION_FIELD_MATRIX = [
41
- // ── 信封(CC system 帧形)────────────────────────────────────────────────────────────────────
42
3
  { field: 'type', from: '—', cc: true, why: "CC system 帧信封:{type:'system'}" },
43
4
  { field: 'subtype', from: '—', cc: true, why: "CC 完成通知的 subtype:'task_notification'(187 print/SDK 出口形)" },
44
5
  { field: 'uuid', from: '—', cc: true, why: '帧身份:壳侧从被投影的 SDK 消息取(包内不铸号)' },
45
6
  { field: 'session_id', from: '—', cc: true, why: 'CC 每帧带会话 id;壳侧透传' },
46
- // ── CC 已命名的 6 位(逐字,改名即偏离 parity)──────────────────────────────────────────────
47
7
  { field: 'task_id', from: 'task_id', cc: true, why: 'CC 逐字 snake 名;空/缺 ⇒ 整帧丢弃(RB-75:空 id 会塌成共享桶互吞)' },
48
8
  { field: 'status', from: 'status', cc: true, why: "CC 逐字;**唯一车道差异** killed ⇒ stopped(187 print 出口形;XML 面按引擎原词渲染)" },
49
9
  { field: 'summary', from: 'summary', cc: true, why: '缺省走交互面同一句兜底(`Background task "<id>" <status>`)—— 修前 print 出口发空串' },
50
10
  { field: 'tool_use_id', from: 'toolUseId', cc: true, why: 'CC 逐字 snake 名(wire 是 camel);把通知钉回发起它的那次工具调用' },
51
11
  { field: 'output_file', from: 'output_file', cc: true, why: 'CC 逐字;后台输出落盘路径' },
52
12
  { field: 'usage', from: 'usage', cc: true, why: 'CC 逐字 optional;计量面(交互面 XML 反而不读它 —— 那是渲染面口径)' },
53
- // ── B8 补上的残局归因位(wire 原名 = SDK task_notification 词汇)────────────────────────────
54
13
  { field: 'stoppedBy', from: 'stoppedBy', cc: false, why: '🔴 残局归因核心位:谁停的(用户/上限/引擎)。修前 `-p` 出口零携带' },
55
14
  { field: 'resumable', from: 'resumable', cc: false, why: '🔴 残局归因:还能不能 resume —— 自动化要靠它决定重试还是放弃' },
56
15
  { field: 'partial', from: 'partial', cc: false, why: 'server 1.258:被终止子代的残果(消费方须渲成不完整,不得当完整结果)' },
@@ -66,13 +25,6 @@ export const PRINT_NOTIFICATION_FIELD_MATRIX = [
66
25
  { field: 'injected', from: 'injected', cc: false, why: '[1818]§四:本帧**不**证明 XML 已进模型上下文;消费方须按此位判,不得按帧到达判' },
67
26
  ];
68
27
  const PRINT_FRAME_KEYS = new Set(PRINT_NOTIFICATION_FIELD_MATRIX.map(r => r.field));
69
- /**
70
- * 引擎 `task_notification` 帧载荷 → CC `system/task_notification` 出口帧(print lane 唯一构造口)。
71
- *
72
- * 判定全部委托 `normalizeTaskNotification`(交互面同一把闸);缺席位一律**不铸空键**
73
- * (tolerate-absent —— 老引擎不发的字段不该在出口变成 `undefined` 值键)。
74
- * 返回 `null` = 该帧不该出口(task_id 空/缺)。
75
- */
76
28
  export function taskNotificationToPrintFrame(n, identity = {}) {
77
29
  const f = normalizeTaskNotification(n);
78
30
  if (f === null)
@@ -82,13 +34,11 @@ export function taskNotificationToPrintFrame(n, identity = {}) {
82
34
  type: 'system',
83
35
  subtype: 'task_notification',
84
36
  task_id: f.taskId,
85
- // CC 逐字:killed ⇒ stopped(唯一车道差异,表里有理由)。
86
37
  status: f.status === 'killed' ? 'stopped' : f.status,
87
38
  summary: f.summary,
88
39
  ...(f.toolUseId !== undefined ? { tool_use_id: f.toolUseId } : {}),
89
40
  ...(f.outputFile !== undefined ? { output_file: f.outputFile } : {}),
90
41
  ...(n.usage !== undefined ? { usage: n.usage } : {}),
91
- // ── 残局归因(B8 补;归一层已做过类型与空值判定)──────────────────────────────────────
92
42
  ...(f.stoppedBy !== undefined ? { stoppedBy: f.stoppedBy } : {}),
93
43
  ...(f.resumable !== undefined ? { resumable: f.resumable } : {}),
94
44
  ...(f.partial !== undefined ? { partial: f.partial } : {}),
@@ -96,7 +46,6 @@ export function taskNotificationToPrintFrame(n, identity = {}) {
96
46
  ...(f.diagnostics !== undefined ? { diagnostics: f.diagnostics } : {}),
97
47
  ...(f.result !== undefined ? { result: f.result } : {}),
98
48
  ...(f.lines !== undefined ? { lines: f.lines } : {}),
99
- // 结构化两位取**裸 wire**(归一层把 recentSteps 折成了交互面的显示串,那是渲染口径)。
100
49
  ...structured('recentSteps'),
101
50
  ...structured('editedFiles'),
102
51
  ...(f.taskType !== undefined ? { task_type: f.taskType } : {}),
@@ -107,10 +56,6 @@ export function taskNotificationToPrintFrame(n, identity = {}) {
107
56
  ...(identity.session_id !== undefined ? { session_id: identity.session_id } : {}),
108
57
  };
109
58
  }
110
- /**
111
- * 出口帧里出现了**没进上表**的键就点名它(与 `unregisteredRequestKeys` 同纪律):
112
- * 顺手加一位很容易,加了之后「字段集合一」就又退化成一句注释 —— 加位必须先改表(带理由)。
113
- */
114
59
  export function unregisteredPrintNotificationKeys(frame) {
115
60
  return Object.keys(frame).filter(k => !PRINT_FRAME_KEYS.has(k));
116
61
  }