@sema-agent/client-core 0.99.0 → 0.101.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 (374) hide show
  1. package/CHANGELOG.md +572 -0
  2. package/README.md +174 -114
  3. package/dist/adapt/arms.js +109 -50
  4. package/dist/adapt/panelTasks.d.ts +2 -1
  5. package/dist/adapt/panelTasks.js +32 -9
  6. package/dist/adapt/textStream.d.ts +1 -1
  7. package/dist/adapt/textStream.js +58 -32
  8. package/dist/adapt/toolCards.js +9 -8
  9. package/dist/adapt.js +7 -1
  10. package/dist/adapter/activeRunSelfHeal.d.ts +31 -2
  11. package/dist/adapter/activeRunSelfHeal.js +162 -13
  12. package/dist/adapter/downstream/eventToSdkMessage.d.ts +25 -6
  13. package/dist/adapter/downstream/eventToSdkMessage.js +157 -20
  14. package/dist/adapter/downstream/terminalToSdkResult.d.ts +60 -1
  15. package/dist/adapter/downstream/terminalToSdkResult.js +219 -39
  16. package/dist/adapter/downstream/wiringManifestView.d.ts +3 -1
  17. package/dist/adapter/downstream/wiringManifestView.js +1 -0
  18. package/dist/adapter/runStream.d.ts +4 -4
  19. package/dist/adapter/runStream.js +184 -42
  20. package/dist/adapter/types.d.ts +2 -0
  21. package/dist/agentsWireCaps.d.ts +9 -7
  22. package/dist/agentsWireCaps.js +101 -17
  23. package/dist/approvalDecidedByCapability.js +2 -2
  24. package/dist/approvalFrameFamilies.d.ts +33 -0
  25. package/dist/approvalFrameFamilies.js +120 -0
  26. package/dist/approvalsStreamLiveCapability.js +2 -2
  27. package/dist/attachmentsWireCaps.js +41 -13
  28. package/dist/callerCwdCapability.js +2 -2
  29. package/dist/centerWiringCapability.js +2 -2
  30. package/dist/clockReading.d.ts +2 -0
  31. package/dist/clockReading.js +4 -0
  32. package/dist/cloudConfigWireCaps.d.ts +28 -5
  33. package/dist/cloudConfigWireCaps.js +334 -103
  34. package/dist/compactionStatus.d.ts +34 -0
  35. package/dist/compactionStatus.js +196 -0
  36. package/dist/coreValuePorts.d.ts +12 -2
  37. package/dist/coreValuePorts.js +9 -0
  38. package/dist/decideFailureNote.js +8 -6
  39. package/dist/decideReceipt.js +2 -2
  40. package/dist/deviceExecutorManagementCapability.js +2 -2
  41. package/dist/deviceFlowPolling.js +1 -1
  42. package/dist/disableSkillsWire.d.ts +1 -1
  43. package/dist/disableSkillsWire.js +4 -3
  44. package/dist/displayUntrusted.d.ts +1 -0
  45. package/dist/displayUntrusted.js +215 -13
  46. package/dist/engineAgentPanelStore.d.ts +7 -4
  47. package/dist/engineCapReader.js +1 -1
  48. package/dist/engineConfigDrift.js +1 -1
  49. package/dist/engineErrorCodes.d.ts +23 -6
  50. package/dist/engineErrorCodes.js +36 -11
  51. package/dist/engineGenerationConvergence.d.ts +39 -0
  52. package/dist/engineGenerationConvergence.js +95 -0
  53. package/dist/engineGenerationPort.d.ts +61 -0
  54. package/dist/engineGenerationPort.js +144 -0
  55. package/dist/engineHealthFacts.d.ts +23 -0
  56. package/dist/engineHealthFacts.js +92 -0
  57. package/dist/engineIdentity.d.ts +4 -0
  58. package/dist/engineIdentity.js +11 -0
  59. package/dist/engineNoticeCodes.d.ts +2 -5
  60. package/dist/engineRowRef.js +4 -0
  61. package/dist/engineSessionMessages.js +2 -2
  62. package/dist/engineToolDirectory.d.ts +3 -0
  63. package/dist/engineToolDirectory.js +6 -4
  64. package/dist/engineWireFor.d.ts +99 -0
  65. package/dist/engineWireFor.js +248 -6
  66. package/dist/engineWireTarget.d.ts +1 -0
  67. package/dist/engineWireTarget.js +8 -0
  68. package/dist/env/uiLanguage.js +1 -1
  69. package/dist/errorSupplementRoles.d.ts +3 -0
  70. package/dist/errorSupplementRoles.js +37 -0
  71. package/dist/eventLeg.d.ts +1 -7
  72. package/dist/eventLeg.js +7 -8
  73. package/dist/executionLaneCapability.js +2 -2
  74. package/dist/fileHistoryCaptureCapability.d.ts +0 -3
  75. package/dist/fileHistoryCaptureCapability.js +3 -7
  76. package/dist/finalVerifyWire.d.ts +6 -3
  77. package/dist/finalVerifyWire.js +6 -23
  78. package/dist/flagInput.d.ts +4 -0
  79. package/dist/flagInput.js +24 -0
  80. package/dist/fleet/fleetLedger.js +5 -2
  81. package/dist/fleet/fleetProjection.d.ts +1 -0
  82. package/dist/fleet/fleetProjection.js +15 -2
  83. package/dist/gateVocabulary.js +3 -0
  84. package/dist/generated/engineFactTables.d.ts +7 -2
  85. package/dist/generated/engineFactTables.js +79 -0
  86. package/dist/generated/engineNoticeTables.js +15 -0
  87. package/dist/generated/settingsSchemaActiveTiers.d.ts +1 -0
  88. package/dist/generated/settingsSchemaActiveTiers.js +14 -0
  89. package/dist/generated/settingsSchemaCallerTextEcho.d.ts +1 -0
  90. package/dist/generated/settingsSchemaCallerTextEcho.js +8 -0
  91. package/dist/generated/settingsSchemaControlAndBidi.d.ts +1 -0
  92. package/dist/generated/settingsSchemaControlAndBidi.js +8 -0
  93. package/dist/generated/settingsSchemaDefaultModel.d.ts +11 -0
  94. package/dist/generated/settingsSchemaDefaultModel.js +25 -0
  95. package/dist/generated/settingsSchemaFns.d.ts +66 -0
  96. package/dist/generated/settingsSchemaFns.js +38 -0
  97. package/dist/generated/settingsSchemaMcpRequestEntry.d.ts +1 -0
  98. package/dist/generated/settingsSchemaMcpRequestEntry.js +156 -0
  99. package/dist/generated/settingsSchemaSafetyMergeSpec.d.ts +1 -0
  100. package/dist/generated/settingsSchemaSafetyMergeSpec.js +95 -0
  101. package/dist/generated/settingsSchemaSettingsSources.d.ts +1 -0
  102. package/dist/generated/settingsSchemaSettingsSources.js +58 -0
  103. package/dist/generated/settingsSchemaTables.d.ts +3 -0
  104. package/dist/generated/settingsSchemaTables.js +18 -0
  105. package/dist/generated/settingsSchemaTypes.d.ts +28 -0
  106. package/dist/generated/settingsSchemaUrlPattern.d.ts +1 -0
  107. package/dist/generated/settingsSchemaUrlPattern.js +183 -0
  108. package/dist/headlessPermissionModeWire.d.ts +18 -2
  109. package/dist/headlessPermissionModeWire.js +30 -19
  110. package/dist/hitl/allowRuleShadow.js +9 -7
  111. package/dist/hitl/approvalCardReading.d.ts +3 -0
  112. package/dist/hitl/approvalCardReading.js +17 -0
  113. package/dist/hitl/approvalCardReasons.js +2 -2
  114. package/dist/hitl/approvalCompleteParked.js +1 -1
  115. package/dist/hitl/approvalDelivery.d.ts +87 -0
  116. package/dist/hitl/approvalDelivery.js +193 -0
  117. package/dist/hitl/approvalHolds.d.ts +14 -0
  118. package/dist/hitl/approvalHolds.js +41 -0
  119. package/dist/hitl/approvalResolution.d.ts +11 -0
  120. package/dist/hitl/approvalResolution.js +50 -11
  121. package/dist/hitl/askClassPair.d.ts +8 -2
  122. package/dist/hitl/askClassPair.js +31 -4
  123. package/dist/hitl/askParkAutoReopenBlock.d.ts +30 -0
  124. package/dist/hitl/askParkAutoReopenBlock.js +117 -0
  125. package/dist/hitl/askParkRowRouting.js +4 -1
  126. package/dist/hitl/attributionLadder.d.ts +62 -0
  127. package/dist/hitl/attributionLadder.js +138 -0
  128. package/dist/hitl/automaticAnswerVerdict.d.ts +6 -1
  129. package/dist/hitl/automaticAnswerVerdict.js +46 -11
  130. package/dist/hitl/crashConverged.js +2 -2
  131. package/dist/hitl/decisionConflict.d.ts +6 -2
  132. package/dist/hitl/decisionConflict.js +24 -9
  133. package/dist/hitl/decisionLedger.d.ts +55 -0
  134. package/dist/hitl/decisionLedger.js +156 -0
  135. package/dist/hitl/decisionRefusal.d.ts +21 -10
  136. package/dist/hitl/decisionRefusal.js +100 -55
  137. package/dist/hitl/decisionSend.d.ts +116 -0
  138. package/dist/hitl/decisionSend.js +563 -0
  139. package/dist/hitl/frameRouter.d.ts +1 -0
  140. package/dist/hitl/frameRouter.js +9 -2
  141. package/dist/hitl/hitlBridge.d.ts +18 -6
  142. package/dist/hitl/hitlBridge.js +59 -43
  143. package/dist/hitl/livePendingAsk.js +4 -3
  144. package/dist/hitl/noAllowCause.js +1 -1
  145. package/dist/hitl/parkResolver.js +3 -2
  146. package/dist/hitl/persistedRulesWire.js +1 -0
  147. package/dist/hitl/planReviewWire.d.ts +4 -0
  148. package/dist/hitl/planReviewWire.js +104 -106
  149. package/dist/hitl/resumeRunningCard.d.ts +3 -2
  150. package/dist/hitl/resumeRunningCard.js +17 -11
  151. package/dist/hitl/sessionPolicyDeliverable.d.ts +5 -2
  152. package/dist/hitl/sessionPolicyDeliverable.js +65 -35
  153. package/dist/hitl/sessionPolicyWire.d.ts +13 -3
  154. package/dist/hitl/sessionPolicyWire.js +81 -16
  155. package/dist/hitl/standingRows.js +1 -1
  156. package/dist/hitl/toolApprovalWire.d.ts +9 -10
  157. package/dist/hitl/toolApprovalWire.js +103 -151
  158. package/dist/hookMatcherVerdict.d.ts +2 -0
  159. package/dist/hookMatcherVerdict.js +12 -0
  160. package/dist/hooksCompactTransition.d.ts +19 -0
  161. package/dist/hooksCompactTransition.js +41 -0
  162. package/dist/hooksWireCaps.d.ts +1 -1
  163. package/dist/hooksWireCaps.js +202 -203
  164. package/dist/host.d.ts +1 -14
  165. package/dist/host.js +0 -8
  166. package/dist/hostCallbackGuard.d.ts +1 -0
  167. package/dist/hostCallbackGuard.js +1 -1
  168. package/dist/hostSettingsSource.d.ts +172 -0
  169. package/dist/hostSettingsSource.js +675 -0
  170. package/dist/hostTurnSettings.d.ts +114 -19
  171. package/dist/hostTurnSettings.js +966 -68
  172. package/dist/httpHookPolicy.d.ts +37 -0
  173. package/dist/httpHookPolicy.js +176 -0
  174. package/dist/humanTurn.d.ts +4 -2
  175. package/dist/humanTurn.js +40 -10
  176. package/dist/humanTurnRead.js +4 -3
  177. package/dist/humanTurnSentences.d.ts +10 -0
  178. package/dist/humanTurnSentences.js +74 -0
  179. package/dist/i18n/messages.en.d.ts +313 -0
  180. package/dist/i18n/messages.en.js +326 -13
  181. package/dist/i18n/messages.zh.js +341 -13
  182. package/dist/i18n/translate.js +3 -3
  183. package/dist/index.d.ts +85 -15
  184. package/dist/index.js +53 -12
  185. package/dist/inheritEnvCapability.d.ts +4 -1
  186. package/dist/inheritEnvCapability.js +38 -17
  187. package/dist/inheritEnvWire.d.ts +2 -1
  188. package/dist/inheritEnvWire.js +11 -5
  189. package/dist/injectionLaneNotice.d.ts +5 -0
  190. package/dist/injectionLaneNotice.js +46 -0
  191. package/dist/interactiveToolsWire.d.ts +4 -2
  192. package/dist/interactiveToolsWire.js +5 -5
  193. package/dist/jsonFaithful.d.ts +20 -0
  194. package/dist/jsonFaithful.js +152 -0
  195. package/dist/limitsWire.d.ts +7 -2
  196. package/dist/limitsWire.js +19 -13
  197. package/dist/liveInitToolFace.d.ts +6 -1
  198. package/dist/liveInitToolFace.js +5 -3
  199. package/dist/liveModelCatalog.d.ts +22 -0
  200. package/dist/liveModelCatalog.js +132 -18
  201. package/dist/mcpPanel.js +3 -1
  202. package/dist/mcpProbeCapability.js +2 -2
  203. package/dist/mcpReconnect.js +2 -2
  204. package/dist/mcpStatusSupersetKeys.d.ts +24 -0
  205. package/dist/mcpStatusSupersetKeys.js +45 -0
  206. package/dist/mcpToolToggles.d.ts +6 -0
  207. package/dist/mcpToolToggles.js +47 -0
  208. package/dist/mcpWireCaps.d.ts +48 -4
  209. package/dist/mcpWireCaps.js +338 -99
  210. package/dist/mcpWireTransport.d.ts +4 -0
  211. package/dist/mcpWireTransport.js +18 -0
  212. package/dist/memoryComplianceCapability.js +2 -2
  213. package/dist/memoryOriginCapability.js +2 -2
  214. package/dist/model/catalogDefault.d.ts +24 -0
  215. package/dist/model/catalogDefault.js +4 -0
  216. package/dist/model/liveCatalogShape.js +5 -4
  217. package/dist/model/modelsPolicy.js +4 -3
  218. package/dist/model/onboardJudgement.d.ts +1 -0
  219. package/dist/model/onboardJudgement.js +1 -1
  220. package/dist/model/subagentModelWord.js +2 -2
  221. package/dist/modelCapabilityProbe.d.ts +2 -1
  222. package/dist/modelCapabilityProbe.js +16 -15
  223. package/dist/modelIdentityResolvability.d.ts +12 -1
  224. package/dist/modelIdentityResolvability.js +69 -28
  225. package/dist/modsKernelIdentity.d.ts +10 -0
  226. package/dist/modsKernelIdentity.js +103 -0
  227. package/dist/modsKernelTransit.d.ts +8 -0
  228. package/dist/modsKernelTransit.js +6 -0
  229. package/dist/notifications.d.ts +30 -12
  230. package/dist/notifications.js +241 -53
  231. package/dist/outputStyleSeatCapability.js +2 -2
  232. package/dist/ownKey.d.ts +37 -0
  233. package/dist/ownKey.js +238 -2
  234. package/dist/panelReduce.d.ts +5 -0
  235. package/dist/panelReduce.js +45 -13
  236. package/dist/panelStateHolder.d.ts +1 -0
  237. package/dist/panelStateHolder.js +10 -1
  238. package/dist/peerFrames.d.ts +1 -1
  239. package/dist/peerFrames.js +6 -2
  240. package/dist/peerLaneCapability.js +2 -2
  241. package/dist/permissionModesCapability.js +4 -4
  242. package/dist/permissionRuleIssue.d.ts +2 -1
  243. package/dist/permissionRuleIssue.js +24 -21
  244. package/dist/permissionRulesWriteCapability.js +2 -2
  245. package/dist/permissionsAllowGrantCapability.js +2 -2
  246. package/dist/permissionsDeclaration.d.ts +43 -4
  247. package/dist/permissionsDeclaration.js +102 -35
  248. package/dist/pluginHooksWire.d.ts +20 -4
  249. package/dist/pluginHooksWire.js +101 -60
  250. package/dist/prepareRefusal.d.ts +9 -0
  251. package/dist/prepareRefusal.js +90 -0
  252. package/dist/printInitToolFace.js +2 -2
  253. package/dist/printModelStatus.js +1 -1
  254. package/dist/projectMemory.d.ts +32 -0
  255. package/dist/projectMemory.js +70 -0
  256. package/dist/promptBlockedCopy.d.ts +2 -1
  257. package/dist/promptBlockedCopy.js +2 -1
  258. package/dist/promptDelivery.d.ts +23 -3
  259. package/dist/promptDelivery.js +169 -30
  260. package/dist/providerRejection.d.ts +19 -1
  261. package/dist/providerRejection.js +75 -4
  262. package/dist/queuedDelivery.d.ts +48 -0
  263. package/dist/queuedDelivery.js +233 -0
  264. package/dist/reattachWindow.d.ts +94 -0
  265. package/dist/reattachWindow.js +127 -0
  266. package/dist/request/printNotification.d.ts +1 -1
  267. package/dist/request/printNotification.js +5 -1
  268. package/dist/request/submissionIdentity.d.ts +37 -0
  269. package/dist/request/submissionIdentity.js +65 -0
  270. package/dist/request/taskRequest.d.ts +22 -14
  271. package/dist/request/taskRequest.js +312 -202
  272. package/dist/resultFrameKeys.d.ts +1 -0
  273. package/dist/resultFrameKeys.js +4 -1
  274. package/dist/resumeRefusalCopy.d.ts +3 -1
  275. package/dist/resumeRefusalCopy.js +22 -4
  276. package/dist/retryStatus.d.ts +26 -0
  277. package/dist/retryStatus.js +133 -28
  278. package/dist/rewindArchiveCapability.js +2 -2
  279. package/dist/rewindEngineAction.d.ts +2 -0
  280. package/dist/rewindEngineAction.js +23 -1
  281. package/dist/rowKind.d.ts +36 -0
  282. package/dist/rowKind.js +97 -0
  283. package/dist/ruleCompileVerdict.d.ts +18 -0
  284. package/dist/ruleCompileVerdict.js +67 -2
  285. package/dist/ruleReadings.d.ts +58 -0
  286. package/dist/ruleReadings.js +132 -0
  287. package/dist/ruleRefusalSentence.d.ts +8 -0
  288. package/dist/ruleRefusalSentence.js +64 -0
  289. package/dist/runCancelContext.d.ts +0 -1
  290. package/dist/runCancelContext.js +1 -2
  291. package/dist/runTerminal.d.ts +5 -0
  292. package/dist/runTerminal.js +52 -17
  293. package/dist/sandboxWire.d.ts +3 -2
  294. package/dist/sandboxWire.js +59 -27
  295. package/dist/scenarioRefusal.d.ts +2 -1
  296. package/dist/scenarioRefusal.js +6 -6
  297. package/dist/scenarioSkills.d.ts +20 -0
  298. package/dist/scenarioSkills.js +72 -0
  299. package/dist/scenarioWire.d.ts +5 -2
  300. package/dist/scenarioWire.js +9 -9
  301. package/dist/sealedKeyCapability.js +2 -2
  302. package/dist/seam.d.ts +26 -9
  303. package/dist/seam.js +44 -4
  304. package/dist/seatContract.d.ts +62 -9
  305. package/dist/seatContract.js +70 -25
  306. package/dist/selfOrchestrationDenial.js +1 -1
  307. package/dist/sessionPolicyCapability.js +2 -2
  308. package/dist/sessionRulesChildrenReadLive.d.ts +6 -0
  309. package/dist/sessionRulesChildrenReadLive.js +5 -0
  310. package/dist/sessionRulesNamespaceFormsCapability.d.ts +12 -0
  311. package/dist/sessionRulesNamespaceFormsCapability.js +29 -0
  312. package/dist/sessionSyncFileHistoryCapability.js +2 -2
  313. package/dist/settingsCredentialKeyPaths.d.ts +8 -0
  314. package/dist/settingsCredentialKeyPaths.js +274 -0
  315. package/dist/settingsHooksSalvage.d.ts +1 -0
  316. package/dist/settingsHooksSalvage.js +7 -1
  317. package/dist/settingsLayerAdmission.d.ts +4 -0
  318. package/dist/settingsLayerAdmission.js +16 -0
  319. package/dist/skillToolListsCapability.js +6 -5
  320. package/dist/skillsWireCaps.d.ts +14 -3
  321. package/dist/skillsWireCaps.js +48 -18
  322. package/dist/slashCommandGate.d.ts +24 -0
  323. package/dist/slashCommandGate.js +74 -0
  324. package/dist/slashCommandTable.d.ts +14 -0
  325. package/dist/slashCommandTable.js +99 -0
  326. package/dist/sqlEngineCapability.js +2 -2
  327. package/dist/steerPriorityCapability.js +2 -2
  328. package/dist/storePostureCapability.js +2 -2
  329. package/dist/subagent/agentStateDetail.js +1 -1
  330. package/dist/subagent/engineDelegatedPrompt.d.ts +9 -0
  331. package/dist/subagent/engineDelegatedPrompt.js +38 -7
  332. package/dist/subagent/engineRowStopGate.js +2 -2
  333. package/dist/subagent/engineSubagentResume.js +3 -3
  334. package/dist/subagent/engineTaskHandleWire.d.ts +1 -0
  335. package/dist/subagent/engineTaskHandleWire.js +10 -0
  336. package/dist/subagentContentStore.d.ts +1 -0
  337. package/dist/subagentContentStore.js +135 -27
  338. package/dist/submitFailure.d.ts +8 -0
  339. package/dist/submitFailure.js +17 -0
  340. package/dist/supportFloor.d.ts +1 -0
  341. package/dist/supportFloor.js +7 -0
  342. package/dist/terminationIntent.d.ts +55 -0
  343. package/dist/terminationIntent.js +352 -0
  344. package/dist/toolHistoryMismatch.d.ts +8 -0
  345. package/dist/toolHistoryMismatch.js +37 -6
  346. package/dist/toolResult.d.ts +13 -3
  347. package/dist/toolResult.js +158 -9
  348. package/dist/toolResultContent.d.ts +13 -0
  349. package/dist/toolResultContent.js +82 -7
  350. package/dist/toolRoster.d.ts +18 -0
  351. package/dist/toolRoster.js +64 -0
  352. package/dist/toolsFlagNames.d.ts +8 -0
  353. package/dist/toolsFlagNames.js +110 -0
  354. package/dist/turnFailurePresentation.js +41 -96
  355. package/dist/usageLimitAutoResume.d.ts +74 -0
  356. package/dist/usageLimitAutoResume.js +227 -0
  357. package/dist/userAttachmentEnvelope.js +1 -1
  358. package/dist/userAttachmentSeat.js +5 -5
  359. package/dist/userInvokedSkillsCapability.js +2 -2
  360. package/dist/webSearchBackendCapability.js +2 -2
  361. package/dist/wireErrorTriage.js +99 -50
  362. package/dist/wireFailureShape.d.ts +25 -1
  363. package/dist/wireFailureShape.js +92 -5
  364. package/dist/wireRefusalCopy.d.ts +75 -18
  365. package/dist/wireRefusalCopy.js +532 -148
  366. package/dist/wiringFleetDoctor.d.ts +3 -0
  367. package/dist/wiringFleetDoctor.js +21 -0
  368. package/dist/workflow.d.ts +2 -1
  369. package/dist/workflow.js +38 -1
  370. package/dist/workflowClient.d.ts +2 -7
  371. package/dist/workflowsJournalCapability.js +2 -2
  372. package/dist/writeProtectionCapability.js +2 -2
  373. package/docs/INTEGRATION-CLIENTS.md +1013 -190
  374. package/package.json +15 -4
@@ -229,8 +229,40 @@ function dropTask(key) {
229
229
  totalBytes -= s.bytes;
230
230
  tasks.delete(key);
231
231
  }
232
+ let subagentIdsReader;
233
+ export function bindSubagentIdentityReader(fn) {
234
+ subagentIdsReader = fn;
235
+ }
236
+ function sameSubagentIds(id) {
237
+ let ids;
238
+ try {
239
+ ids = subagentIdsReader?.(id);
240
+ }
241
+ catch {
242
+ ids = undefined;
243
+ }
244
+ if (ids === undefined)
245
+ return [id];
246
+ return ids.includes(id) ? ids : [...ids, id];
247
+ }
248
+ function homeKeyOf(key) {
249
+ return sameSubagentIds(key).find((id) => tasks.has(id)) ?? key;
250
+ }
251
+ function contentKeyOf(taskId) {
252
+ const ids = sameSubagentIds(taskId);
253
+ const direct = ids.find((id) => tasks.has(id));
254
+ if (direct !== undefined)
255
+ return direct;
256
+ for (const id of ids) {
257
+ const parked = taskToParent.get(id)?.card;
258
+ if (parked !== undefined && tasks.has(parked))
259
+ return parked;
260
+ }
261
+ return '';
262
+ }
232
263
  const parentToTask = new Map();
233
264
  const taskToParent = new Map();
265
+ let parentStampSeq = 0;
234
266
  let notifyListener = null;
235
267
  const pendingNotify = new Set();
236
268
  let notifyTimer = null;
@@ -383,7 +415,8 @@ function aliasContentKey(parentToolCallId, taskId) {
383
415
  export function registerSubagentAlias(parentToolCallId, taskId) {
384
416
  if (!aliasContentKey(parentToolCallId, taskId))
385
417
  return;
386
- taskToParent.set(taskId, parentToolCallId);
418
+ if (taskToParent.get(taskId)?.card !== parentToolCallId)
419
+ taskToParent.set(taskId, { card: parentToolCallId, stamp: ++parentStampSeq });
387
420
  }
388
421
  function replaySeen(s, ev) {
389
422
  const id = ev.eventId;
@@ -459,7 +492,7 @@ function canonicalKey(ev) {
459
492
  return parentToTask.get(ev.parentToolCallId) ?? ev.parentToolCallId;
460
493
  }
461
494
  export function publishSubagentContentEvent(ev) {
462
- const key = canonicalKey(ev);
495
+ const key = homeKeyOf(canonicalKey(ev));
463
496
  const s = stateFor(key, ev.parentToolCallId);
464
497
  switch (ev.type) {
465
498
  case 'text_delta':
@@ -561,15 +594,17 @@ export function publishSubagentContentEvent(ev) {
561
594
  scheduleNotify(key);
562
595
  }
563
596
  export function pushSubagentLocalEcho(taskId, text) {
564
- const s = stateFor(taskId, tasks.get(taskId)?.parentToolCallId ?? '');
597
+ const known = contentKeyOf(taskId);
598
+ const key = known !== '' ? known : taskId;
599
+ const s = stateFor(key, tasks.get(key)?.parentToolCallId ?? '');
565
600
  flushBuffers(s);
566
601
  pushItem(s, { kind: 'echo', text });
567
602
  enforceTaskCap(s);
568
- enforceTotalCap(taskId);
569
- scheduleNotify(taskId);
603
+ enforceTotalCap(key);
604
+ scheduleNotify(key);
570
605
  }
571
606
  export function getSubagentContentSnapshot(taskId) {
572
- const key = tasks.has(taskId) ? taskId : (taskToParent.get(taskId) ?? '');
607
+ const key = contentKeyOf(taskId);
573
608
  const s = tasks.get(key);
574
609
  if (!s)
575
610
  return null;
@@ -615,17 +650,42 @@ export function planSubagentViewSlots(taskId) {
615
650
  return out;
616
651
  }
617
652
  export function parentToolCallIdOf(taskId) {
618
- return taskToParent.get(taskId) ?? tasks.get(taskId)?.parentToolCallId;
653
+ const ids = sameSubagentIds(taskId);
654
+ let stated;
655
+ let statedStamp = -1;
656
+ for (const id of ids) {
657
+ const hit = taskToParent.get(id);
658
+ if (hit === undefined)
659
+ continue;
660
+ if (stated === undefined || hit.stamp > statedStamp) {
661
+ stated = hit.card;
662
+ statedStamp = hit.stamp;
663
+ }
664
+ }
665
+ if (stated !== undefined)
666
+ return stated;
667
+ for (const id of ids) {
668
+ const fromContent = tasks.get(id)?.parentToolCallId;
669
+ if (fromContent !== undefined)
670
+ return fromContent;
671
+ }
672
+ return undefined;
619
673
  }
620
674
  export function settleSubagentContent(taskId) {
621
- const s = tasks.get(taskId);
675
+ const key = contentKeyOf(taskId);
676
+ const s = tasks.get(key);
622
677
  if (!s)
623
678
  return;
624
679
  flushBuffers(s);
625
- scheduleNotify(taskId);
680
+ scheduleNotify(key);
626
681
  }
627
682
  export function clearSubagentContent(taskId) {
628
- dropTask(taskId);
683
+ for (;;) {
684
+ const key = contentKeyOf(taskId);
685
+ if (key === '')
686
+ return;
687
+ dropTask(key);
688
+ }
629
689
  }
630
690
  const bgFacts = new Map();
631
691
  export function recordBgTerminalFacts(taskId, facts) {
@@ -641,10 +701,12 @@ export function recordBgTerminalFacts(taskId, facts) {
641
701
  scheduleNotify(taskId);
642
702
  }
643
703
  export function clearBgTerminalFacts(taskId) {
644
- bgFacts.delete(taskId);
704
+ for (const id of sameSubagentIds(taskId))
705
+ bgFacts.delete(id);
645
706
  }
646
707
  export function getBgTerminalFacts(taskId) {
647
- const key = bgFacts.has(taskId) ? taskId : (taskToParent.get(taskId) ?? '');
708
+ const ids = sameSubagentIds(taskId);
709
+ const key = ids.find((id) => bgFacts.has(id)) ?? ids.map((id) => taskToParent.get(id)?.card).find((c) => c !== undefined) ?? '';
648
710
  touchLru(bgFacts, key);
649
711
  return bgFacts.get(key);
650
712
  }
@@ -665,15 +727,35 @@ export function recordBgParentRun(taskId, runId, sessionId, sessionKey) {
665
727
  export function recordSubagentOwner(taskId, runId, sessionId, sessionKey) {
666
728
  if (!taskId || typeof runId !== 'string' || runId === '' || taskId === runId)
667
729
  return;
668
- if (bgParentRun.size >= MAX_BG_PARENT_RUNS && !bgParentRun.has(taskId)) {
730
+ const ids = sameSubagentIds(taskId);
731
+ const heldKeys = ids.filter((k) => bgParentRun.has(k));
732
+ const heldRecs = [];
733
+ for (const k of heldKeys) {
734
+ const rec = bgParentRun.get(k);
735
+ if (rec !== undefined)
736
+ heldRecs.push(rec);
737
+ }
738
+ if (bgParentRun.size >= MAX_BG_PARENT_RUNS && heldKeys.length === 0) {
669
739
  const oldest = bgParentRun.keys().next().value;
670
740
  if (oldest !== undefined)
671
741
  bgParentRun.delete(oldest);
672
742
  }
673
- const quarantinedRun = conflictQuarantine.get(taskId);
674
- if (quarantinedRun !== undefined && quarantinedRun === runId)
743
+ const quarantinedHere = ids.some((k) => conflictQuarantine.get(k) === runId);
744
+ if (quarantinedHere)
745
+ return;
746
+ const sameRunHeld = heldRecs.filter((r) => r.runId === runId);
747
+ const heldSlots = new Set(sameRunHeld.map((r) => r.sessionKey ?? DEFAULT_SESSION_KEY));
748
+ if (sameRunHeld.length > 1 && heldSlots.size > 1) {
749
+ ownerSessionConflictCount++;
750
+ const pairOf = (r) => ({
751
+ ...(r.sessionId !== undefined ? { sessionId: r.sessionId } : {}),
752
+ ...(r.sessionKey !== undefined ? { sessionKey: r.sessionKey } : {}),
753
+ });
754
+ lastOwnerSessionConflict = { taskId, runId, prior: pairOf(sameRunHeld[0]), next: pairOf(sameRunHeld[1]) };
755
+ quarantineRun(ids, runId);
675
756
  return;
676
- const prior = bgParentRun.get(taskId);
757
+ }
758
+ const prior = heldRecs.find((r) => r.runId === runId) ?? heldRecs[0];
677
759
  const sameRun = prior?.runId === runId;
678
760
  const incoming = typeof sessionId === 'string' && sessionId !== '' ? sessionId : undefined;
679
761
  const incomingKey = typeof sessionKey === 'string' && sessionKey !== '' ? sessionKey : undefined;
@@ -707,16 +789,13 @@ export function recordSubagentOwner(taskId, runId, sessionId, sessionKey) {
707
789
  const priorSlot = prior?.sessionKey ?? DEFAULT_SESSION_KEY;
708
790
  const nextSlot = nextPair.sessionKey ?? DEFAULT_SESSION_KEY;
709
791
  if (priorSlot !== nextSlot) {
710
- bgParentRun.delete(taskId);
711
- if (conflictQuarantine.size >= MAX_BG_PARENT_RUNS && !conflictQuarantine.has(taskId)) {
712
- const oldestQ = conflictQuarantine.keys().next().value;
713
- if (oldestQ !== undefined)
714
- conflictQuarantine.delete(oldestQ);
715
- }
716
- conflictQuarantine.set(taskId, runId);
792
+ quarantineRun(ids, runId);
717
793
  return;
718
794
  }
719
795
  }
796
+ for (const k of ids)
797
+ if (k !== taskId)
798
+ bgParentRun.delete(k);
720
799
  bgParentRun.delete(taskId);
721
800
  bgParentRun.set(taskId, { runId, ...nextPair });
722
801
  }
@@ -733,14 +812,43 @@ export function recordSubagentOwnerFromProgress(ev, ownerRunId, ownerSessionId,
733
812
  recordSubagentOwner(o.taskId, ownerRunId, ownerSessionId, ownerSessionKey);
734
813
  }
735
814
  export function getBgParentRun(taskId) {
736
- touchLru(bgParentRun, taskId);
737
- return bgParentRun.get(taskId)?.runId;
815
+ return getBgParentRunOwner(taskId)?.runId;
738
816
  }
739
817
  export function getBgParentRunOwner(taskId) {
740
818
  if (typeof taskId !== 'string' || taskId === '')
741
819
  return undefined;
742
- touchLru(bgParentRun, taskId);
743
- return bgParentRun.get(taskId);
820
+ const live = liveOwnerEntries(sameSubagentIds(taskId));
821
+ const first = live[0];
822
+ if (first === undefined)
823
+ return undefined;
824
+ if (!live.every(([, rec]) => sameOwnerRecord(rec, first[1])))
825
+ return undefined;
826
+ touchLru(bgParentRun, first[0]);
827
+ return first[1];
828
+ }
829
+ function liveOwnerEntries(ids) {
830
+ const out = [];
831
+ for (const k of ids) {
832
+ const rec = bgParentRun.get(k);
833
+ if (rec === undefined)
834
+ continue;
835
+ if (ids.some((q) => conflictQuarantine.get(q) === rec.runId))
836
+ continue;
837
+ out.push([k, rec]);
838
+ }
839
+ return out;
840
+ }
841
+ const sameOwnerRecord = (a, b) => a.runId === b.runId && a.sessionId === b.sessionId && a.sessionKey === b.sessionKey;
842
+ function quarantineRun(ids, runId) {
843
+ for (const k of ids) {
844
+ bgParentRun.delete(k);
845
+ if (conflictQuarantine.size >= MAX_BG_PARENT_RUNS && !conflictQuarantine.has(k)) {
846
+ const oldestQ = conflictQuarantine.keys().next().value;
847
+ if (oldestQ !== undefined)
848
+ conflictQuarantine.delete(oldestQ);
849
+ }
850
+ conflictQuarantine.set(k, runId);
851
+ }
744
852
  }
745
853
  export function __resetSubagentOwnerLedgerForTests() {
746
854
  bgParentRun.clear();
@@ -0,0 +1,8 @@
1
+ import type { SDKAssistantMessageError } from '@sema-agent/agent-types';
2
+ import type { SemaRowKind } from './rowKind.js';
3
+ export interface SubmitFailureClass {
4
+ readonly kind: Extract<SemaRowKind, 'api_error' | 'model_output_error'>;
5
+ readonly errorCode?: string;
6
+ readonly ccError?: SDKAssistantMessageError;
7
+ }
8
+ export declare function classifySubmitFailure(err: {} | null | undefined): SubmitFailureClass;
@@ -0,0 +1,17 @@
1
+ import { isModelOutputErrorText } from './adapter/runStream.js';
2
+ import { ccErrorOfProviderStatus } from './providerRejection.js';
3
+ import { classifyTurnWireError } from './wireErrorTriage.js';
4
+ export function classifySubmitFailure(err) {
5
+ const verdict = classifyTurnWireError(err);
6
+ const status = verdict.kind === 'http' ? verdict.status : undefined;
7
+ const errorCode = verdict.kind === 'http' && verdict.errorCode !== undefined && verdict.errorCode.length > 0 ? verdict.errorCode : undefined;
8
+ const text = verdict.kind === 'http' ? verdict.message : verdict.kind === 'transport' || verdict.kind === 'internal' ? verdict.detail : '';
9
+ const kind = isModelOutputErrorText(text) ? 'model_output_error' : 'api_error';
10
+ const mapped = status === undefined ? undefined : ccErrorOfProviderStatus(status);
11
+ const ccError = mapped === 'model_not_found' && errorCode !== undefined ? undefined : mapped;
12
+ return {
13
+ kind,
14
+ ...(errorCode !== undefined ? { errorCode } : {}),
15
+ ...(ccError !== undefined ? { ccError } : {}),
16
+ };
17
+ }
@@ -10,3 +10,4 @@ export type EngineVersionTier = 'engine' | 'legacy' | 'unknown';
10
10
  export declare function engineVersionTier(version: unknown, floor?: string): EngineVersionTier;
11
11
  export declare function engineSupportFloorEffective(floor?: string): string;
12
12
  export declare function coreVersionTier(version: unknown, floor?: string): EngineVersionTier;
13
+ export declare function compareReleaseVersions(a: string, b: string): -1 | 0 | 1 | undefined;
@@ -51,3 +51,10 @@ export function engineSupportFloorEffective(floor) {
51
51
  export function coreVersionTier(version, floor) {
52
52
  return judgeAgainst(version, SUPPORT_FLOOR.core, floor, 'coreVersionTier').tier;
53
53
  }
54
+ export function compareReleaseVersions(a, b) {
55
+ const ta = releaseTriple(a);
56
+ const tb = releaseTriple(b);
57
+ if (ta === undefined || tb === undefined)
58
+ return undefined;
59
+ return compareTriple(ta, tb);
60
+ }
@@ -0,0 +1,55 @@
1
+ import type { UiLanguage } from './env/uiLanguage.js';
2
+ export declare const TERMINATION_INTENT_TTL_MS = 60000;
3
+ export declare const TERMINATION_INTENT_WEAK_SOURCE = "esc-abort";
4
+ export declare const INTERRUPTED_SETTLE_BUDGET_MS = 10000;
5
+ export declare const INTERRUPTED_SETTLE_POLL_MS = 1000;
6
+ export type TerminationIntentSource = string;
7
+ export interface TerminationIntentSnapshot {
8
+ readonly source: TerminationIntentSource;
9
+ readonly at: number;
10
+ readonly abortAt: number | null;
11
+ }
12
+ export interface TerminationIntentLedgerOptions {
13
+ readonly now: () => number;
14
+ readonly ttlMs?: number;
15
+ readonly exemptAbortReasons?: readonly string[];
16
+ }
17
+ export interface TerminationIntentLedger {
18
+ record(taskId: string | null | undefined, source: TerminationIntentSource): number;
19
+ snapshot(taskId: string | null | undefined): TerminationIntentSnapshot | null;
20
+ restoreIf(taskId: string | null | undefined, version: number, snapshot: TerminationIntentSnapshot | null): boolean;
21
+ rollbackIf(taskId: string | null | undefined, version: number, prior: TerminationIntentSource | null): boolean;
22
+ rollback(taskId: string | null | undefined, prior: TerminationIntentSource | null): void;
23
+ wasRecentlyTerminatedByUs(taskId: string | null | undefined): boolean;
24
+ sourceOf(taskId: string | null | undefined): TerminationIntentSource | null;
25
+ armOnAbort(signal: AbortSignal | undefined, taskId: string): void;
26
+ forget(taskId: string | null | undefined): void;
27
+ size(): number;
28
+ }
29
+ export declare function createTerminationIntentLedger(options: TerminationIntentLedgerOptions): TerminationIntentLedger;
30
+ export type InterruptedRunSettleVerdict = {
31
+ readonly kind: 'settled';
32
+ readonly status: string;
33
+ } | {
34
+ readonly kind: 'still-running';
35
+ readonly waitedMs: number;
36
+ } | {
37
+ readonly kind: 'parked';
38
+ readonly status: string;
39
+ } | {
40
+ readonly kind: 'unknown';
41
+ };
42
+ export interface InterruptedRunRow {
43
+ readonly status?: string | null;
44
+ }
45
+ export interface InterruptedRunSettleDeps {
46
+ readonly getRun?: (taskId: string, opts?: {
47
+ signal?: AbortSignal;
48
+ }) => Promise<InterruptedRunRow | null>;
49
+ readonly signal?: AbortSignal;
50
+ readonly budgetMs?: number;
51
+ readonly intervalMs?: number;
52
+ readonly now?: () => number;
53
+ }
54
+ export declare function awaitInterruptedRunSettle(taskId: string, deps: InterruptedRunSettleDeps): Promise<InterruptedRunSettleVerdict>;
55
+ export declare function interruptedRunSettleRow(taskId: string, verdict: InterruptedRunSettleVerdict, lang?: UiLanguage): string | null;