@sema-agent/client-core 0.100.0 → 0.102.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 (358) hide show
  1. package/CHANGELOG.md +452 -0
  2. package/README.md +172 -120
  3. package/dist/adapt/arms.js +51 -16
  4. package/dist/adapt/textStream.js +7 -4
  5. package/dist/adapt/toolCards.d.ts +2 -1
  6. package/dist/adapt/toolCards.js +28 -13
  7. package/dist/adapt.d.ts +1 -1
  8. package/dist/adapt.js +8 -2
  9. package/dist/adapter/activeRunSelfHeal.d.ts +24 -2
  10. package/dist/adapter/activeRunSelfHeal.js +108 -6
  11. package/dist/adapter/downstream/eventToSdkMessage.js +38 -79
  12. package/dist/adapter/downstream/terminalToSdkResult.d.ts +60 -1
  13. package/dist/adapter/downstream/terminalToSdkResult.js +209 -39
  14. package/dist/adapter/downstream/wiringManifestView.d.ts +1 -0
  15. package/dist/adapter/downstream/wiringManifestView.js +138 -0
  16. package/dist/adapter/runStream.d.ts +4 -4
  17. package/dist/adapter/runStream.js +158 -43
  18. package/dist/agentsWireCaps.d.ts +2 -7
  19. package/dist/agentsWireCaps.js +1 -2
  20. package/dist/approvalDecidedByCapability.js +2 -2
  21. package/dist/approvalFrameFamilies.d.ts +33 -0
  22. package/dist/approvalFrameFamilies.js +120 -0
  23. package/dist/approvalsStreamLiveCapability.js +2 -2
  24. package/dist/attachmentsWireCaps.js +41 -13
  25. package/dist/callerCwdCapability.js +2 -2
  26. package/dist/centerWiringCapability.js +2 -2
  27. package/dist/clockReading.d.ts +2 -0
  28. package/dist/clockReading.js +4 -0
  29. package/dist/cloudConfigWireCaps.d.ts +19 -5
  30. package/dist/cloudConfigWireCaps.js +193 -56
  31. package/dist/compensations.js +1 -1
  32. package/dist/coreValuePorts.d.ts +12 -2
  33. package/dist/coreValuePorts.js +9 -0
  34. package/dist/decideFailureNote.js +5 -3
  35. package/dist/decideReceipt.js +2 -2
  36. package/dist/deviceExecutorManagementCapability.js +2 -2
  37. package/dist/deviceFlowPolling.js +1 -1
  38. package/dist/disableSkillsWire.d.ts +1 -1
  39. package/dist/disableSkillsWire.js +4 -3
  40. package/dist/displayUntrusted.d.ts +9 -4
  41. package/dist/displayUntrusted.js +834 -104
  42. package/dist/engineCapReader.js +1 -1
  43. package/dist/engineConfigDrift.js +1 -1
  44. package/dist/engineErrorCodes.d.ts +14 -5
  45. package/dist/engineErrorCodes.js +27 -6
  46. package/dist/engineGenerationConvergence.d.ts +39 -0
  47. package/dist/engineGenerationConvergence.js +95 -0
  48. package/dist/engineGenerationPort.d.ts +61 -0
  49. package/dist/engineGenerationPort.js +144 -0
  50. package/dist/engineHealthFacts.d.ts +23 -0
  51. package/dist/engineHealthFacts.js +92 -0
  52. package/dist/engineIdentity.d.ts +4 -0
  53. package/dist/engineIdentity.js +11 -0
  54. package/dist/engineNoticeCodes.d.ts +2 -5
  55. package/dist/engineRowRef.js +4 -0
  56. package/dist/engineSessionMessages.js +2 -2
  57. package/dist/engineToolDirectory.js +2 -2
  58. package/dist/engineWireFor.d.ts +99 -0
  59. package/dist/engineWireFor.js +248 -6
  60. package/dist/engineWireTarget.d.ts +1 -0
  61. package/dist/engineWireTarget.js +8 -0
  62. package/dist/env/uiLanguage.js +1 -1
  63. package/dist/errorSupplementRoles.d.ts +3 -0
  64. package/dist/errorSupplementRoles.js +37 -0
  65. package/dist/executionLaneCapability.js +2 -2
  66. package/dist/fileHistoryCaptureCapability.js +3 -3
  67. package/dist/finalVerifyWire.d.ts +6 -3
  68. package/dist/finalVerifyWire.js +6 -23
  69. package/dist/flagInput.d.ts +4 -0
  70. package/dist/flagInput.js +24 -0
  71. package/dist/fleet/fleetLedger.js +5 -2
  72. package/dist/fleet/fleetProjection.d.ts +1 -0
  73. package/dist/fleet/fleetProjection.js +16 -3
  74. package/dist/gateVocabulary.js +3 -0
  75. package/dist/generated/engineFactTables.d.ts +7 -3
  76. package/dist/generated/engineFactTables.js +52 -0
  77. package/dist/generated/engineNoticeTables.js +12 -0
  78. package/dist/generated/settingsSchemaActiveTiers.d.ts +1 -0
  79. package/dist/generated/settingsSchemaActiveTiers.js +14 -0
  80. package/dist/generated/settingsSchemaCallerTextEcho.d.ts +1 -0
  81. package/dist/generated/settingsSchemaCallerTextEcho.js +8 -0
  82. package/dist/generated/settingsSchemaControlAndBidi.d.ts +1 -0
  83. package/dist/generated/settingsSchemaControlAndBidi.js +8 -0
  84. package/dist/generated/settingsSchemaDefaultModel.d.ts +11 -0
  85. package/dist/generated/settingsSchemaDefaultModel.js +25 -0
  86. package/dist/generated/settingsSchemaFns.d.ts +54 -0
  87. package/dist/generated/settingsSchemaFns.js +26 -1
  88. package/dist/generated/settingsSchemaMcpRequestEntry.d.ts +1 -1
  89. package/dist/generated/settingsSchemaMcpRequestEntry.js +1 -7
  90. package/dist/generated/settingsSchemaSafetyMergeSpec.d.ts +1 -0
  91. package/dist/generated/settingsSchemaSafetyMergeSpec.js +95 -0
  92. package/dist/generated/settingsSchemaSettingsSources.d.ts +1 -0
  93. package/dist/generated/settingsSchemaSettingsSources.js +58 -0
  94. package/dist/generated/settingsSchemaTables.d.ts +2 -0
  95. package/dist/generated/settingsSchemaTables.js +13 -0
  96. package/dist/generated/settingsSchemaUrlPattern.d.ts +1 -0
  97. package/dist/generated/settingsSchemaUrlPattern.js +183 -0
  98. package/dist/headlessPermissionModeWire.d.ts +18 -2
  99. package/dist/headlessPermissionModeWire.js +30 -19
  100. package/dist/hitl/allowRuleShadow.js +7 -5
  101. package/dist/hitl/approvalCardReading.d.ts +3 -0
  102. package/dist/hitl/approvalCardReading.js +17 -0
  103. package/dist/hitl/approvalCompleteParked.js +1 -1
  104. package/dist/hitl/approvalDelivery.d.ts +87 -0
  105. package/dist/hitl/approvalDelivery.js +193 -0
  106. package/dist/hitl/approvalResolution.d.ts +11 -0
  107. package/dist/hitl/approvalResolution.js +50 -11
  108. package/dist/hitl/askClassPair.d.ts +6 -0
  109. package/dist/hitl/askClassPair.js +30 -3
  110. package/dist/hitl/askParkAutoReopenBlock.d.ts +30 -0
  111. package/dist/hitl/askParkAutoReopenBlock.js +117 -0
  112. package/dist/hitl/askParkRowRouting.js +4 -1
  113. package/dist/hitl/attributionLadder.d.ts +42 -3
  114. package/dist/hitl/attributionLadder.js +79 -8
  115. package/dist/hitl/automaticAnswerVerdict.d.ts +6 -1
  116. package/dist/hitl/automaticAnswerVerdict.js +46 -11
  117. package/dist/hitl/crashConverged.js +2 -2
  118. package/dist/hitl/decisionConflict.d.ts +6 -2
  119. package/dist/hitl/decisionConflict.js +24 -9
  120. package/dist/hitl/decisionRefusal.d.ts +20 -10
  121. package/dist/hitl/decisionRefusal.js +99 -54
  122. package/dist/hitl/decisionSend.d.ts +3 -0
  123. package/dist/hitl/decisionSend.js +87 -103
  124. package/dist/hitl/frameRouter.d.ts +1 -0
  125. package/dist/hitl/frameRouter.js +9 -2
  126. package/dist/hitl/hitlBridge.d.ts +18 -6
  127. package/dist/hitl/hitlBridge.js +41 -37
  128. package/dist/hitl/livePendingAsk.js +4 -3
  129. package/dist/hitl/noAllowCause.js +1 -1
  130. package/dist/hitl/parkResolver.js +3 -2
  131. package/dist/hitl/persistedRulesWire.js +1 -0
  132. package/dist/hitl/planReviewWire.d.ts +4 -0
  133. package/dist/hitl/planReviewWire.js +59 -30
  134. package/dist/hitl/resumeRunningCard.d.ts +3 -2
  135. package/dist/hitl/resumeRunningCard.js +17 -11
  136. package/dist/hitl/sessionPolicyDeliverable.d.ts +5 -2
  137. package/dist/hitl/sessionPolicyDeliverable.js +62 -29
  138. package/dist/hitl/sessionPolicyWire.d.ts +13 -3
  139. package/dist/hitl/sessionPolicyWire.js +81 -16
  140. package/dist/hitl/standingRows.js +1 -1
  141. package/dist/hitl/toolApprovalWire.d.ts +9 -10
  142. package/dist/hitl/toolApprovalWire.js +72 -54
  143. package/dist/hookMatcherVerdict.d.ts +2 -0
  144. package/dist/hookMatcherVerdict.js +12 -0
  145. package/dist/hooksCompactTransition.d.ts +19 -0
  146. package/dist/hooksCompactTransition.js +41 -0
  147. package/dist/hooksWireCaps.d.ts +1 -1
  148. package/dist/hooksWireCaps.js +202 -203
  149. package/dist/host.d.ts +1 -14
  150. package/dist/host.js +0 -8
  151. package/dist/hostCallbackGuard.d.ts +1 -0
  152. package/dist/hostCallbackGuard.js +1 -1
  153. package/dist/hostSettingsSource.d.ts +172 -0
  154. package/dist/hostSettingsSource.js +675 -0
  155. package/dist/hostTurnSettings.d.ts +73 -17
  156. package/dist/hostTurnSettings.js +594 -97
  157. package/dist/httpHookPolicy.d.ts +37 -0
  158. package/dist/httpHookPolicy.js +176 -0
  159. package/dist/humanTurn.d.ts +2 -1
  160. package/dist/humanTurn.js +37 -7
  161. package/dist/humanTurnRead.js +4 -3
  162. package/dist/humanTurnSentences.d.ts +10 -0
  163. package/dist/humanTurnSentences.js +74 -0
  164. package/dist/i18n/messages.en.d.ts +222 -2
  165. package/dist/i18n/messages.en.js +225 -5
  166. package/dist/i18n/messages.zh.js +237 -5
  167. package/dist/i18n/translate.js +3 -3
  168. package/dist/index.d.ts +77 -15
  169. package/dist/index.js +50 -13
  170. package/dist/inheritEnvCapability.d.ts +3 -1
  171. package/dist/inheritEnvCapability.js +31 -17
  172. package/dist/inheritEnvWire.d.ts +2 -1
  173. package/dist/inheritEnvWire.js +11 -5
  174. package/dist/interactiveHalt.d.ts +3 -1
  175. package/dist/interactiveHalt.js +2 -0
  176. package/dist/interactiveInterrupt.d.ts +2 -0
  177. package/dist/interactiveInterrupt.js +15 -0
  178. package/dist/interactiveToolsWire.d.ts +4 -2
  179. package/dist/interactiveToolsWire.js +5 -5
  180. package/dist/jsonFaithful.d.ts +20 -0
  181. package/dist/jsonFaithful.js +152 -0
  182. package/dist/limitsWire.d.ts +7 -2
  183. package/dist/limitsWire.js +19 -13
  184. package/dist/liveInitToolFace.d.ts +6 -1
  185. package/dist/liveInitToolFace.js +5 -3
  186. package/dist/liveModelCatalog.d.ts +22 -0
  187. package/dist/liveModelCatalog.js +132 -18
  188. package/dist/mcpPanel.js +1 -1
  189. package/dist/mcpProbeCapability.js +2 -2
  190. package/dist/mcpStatusSupersetKeys.d.ts +24 -0
  191. package/dist/mcpStatusSupersetKeys.js +45 -0
  192. package/dist/mcpToolToggles.js +2 -1
  193. package/dist/mcpWireCaps.d.ts +39 -1
  194. package/dist/mcpWireCaps.js +254 -50
  195. package/dist/memoryComplianceCapability.js +2 -2
  196. package/dist/memoryOriginCapability.js +2 -2
  197. package/dist/model/catalogDefault.d.ts +24 -0
  198. package/dist/model/catalogDefault.js +4 -0
  199. package/dist/model/liveCatalogShape.js +5 -4
  200. package/dist/model/modelsPolicy.js +4 -3
  201. package/dist/model/onboardJudgement.d.ts +1 -0
  202. package/dist/model/onboardJudgement.js +1 -1
  203. package/dist/model/subagentModelWord.js +2 -2
  204. package/dist/modelCapabilityProbe.js +6 -6
  205. package/dist/modelIdentityResolvability.d.ts +10 -1
  206. package/dist/modelIdentityResolvability.js +62 -39
  207. package/dist/modsFace.d.ts +8 -0
  208. package/dist/modsFace.js +59 -0
  209. package/dist/modsKernelIdentity.d.ts +10 -0
  210. package/dist/modsKernelIdentity.js +103 -0
  211. package/dist/modsKernelTransit.d.ts +8 -0
  212. package/dist/modsKernelTransit.js +6 -0
  213. package/dist/notifications.d.ts +30 -12
  214. package/dist/notifications.js +241 -53
  215. package/dist/outputStyleSeatCapability.js +2 -2
  216. package/dist/ownKey.d.ts +12 -0
  217. package/dist/ownKey.js +179 -3
  218. package/dist/panelReduce.js +1 -1
  219. package/dist/peerFrames.d.ts +1 -1
  220. package/dist/peerFrames.js +6 -2
  221. package/dist/peerLaneCapability.js +2 -2
  222. package/dist/permissionModesCapability.js +4 -4
  223. package/dist/permissionRuleIssue.js +2 -0
  224. package/dist/permissionRulesWriteCapability.js +2 -2
  225. package/dist/permissionsAllowGrantCapability.js +2 -2
  226. package/dist/permissionsDeclaration.d.ts +43 -4
  227. package/dist/permissionsDeclaration.js +102 -35
  228. package/dist/pluginHooksWire.d.ts +20 -4
  229. package/dist/pluginHooksWire.js +92 -53
  230. package/dist/prepareRefusal.d.ts +3 -2
  231. package/dist/prepareRefusal.js +27 -9
  232. package/dist/printInitToolFace.js +2 -2
  233. package/dist/printModelStatus.js +1 -1
  234. package/dist/printToolResultFrame.js +1 -1
  235. package/dist/projectMemory.d.ts +32 -0
  236. package/dist/projectMemory.js +70 -0
  237. package/dist/promptBlockedCopy.d.ts +2 -1
  238. package/dist/promptBlockedCopy.js +2 -1
  239. package/dist/promptDelivery.d.ts +23 -3
  240. package/dist/promptDelivery.js +169 -30
  241. package/dist/providerRejection.d.ts +19 -1
  242. package/dist/providerRejection.js +75 -4
  243. package/dist/queuedDelivery.d.ts +48 -0
  244. package/dist/queuedDelivery.js +233 -0
  245. package/dist/reattachWindow.d.ts +94 -0
  246. package/dist/reattachWindow.js +127 -0
  247. package/dist/request/printNotification.d.ts +1 -1
  248. package/dist/request/printNotification.js +6 -2
  249. package/dist/request/submissionIdentity.d.ts +37 -0
  250. package/dist/request/submissionIdentity.js +65 -0
  251. package/dist/request/taskRequest.d.ts +33 -4
  252. package/dist/request/taskRequest.js +341 -156
  253. package/dist/resultFrameKeys.d.ts +1 -0
  254. package/dist/resultFrameKeys.js +4 -1
  255. package/dist/retryStatus.d.ts +8 -0
  256. package/dist/retryStatus.js +57 -9
  257. package/dist/rewindArchiveCapability.js +2 -2
  258. package/dist/rewindEngineAction.d.ts +2 -0
  259. package/dist/rewindEngineAction.js +23 -1
  260. package/dist/rowKind.d.ts +36 -0
  261. package/dist/rowKind.js +97 -0
  262. package/dist/ruleCompileVerdict.d.ts +18 -0
  263. package/dist/ruleCompileVerdict.js +67 -2
  264. package/dist/ruleReadings.d.ts +58 -0
  265. package/dist/ruleReadings.js +132 -0
  266. package/dist/ruleRefusalSentence.d.ts +4 -0
  267. package/dist/ruleRefusalSentence.js +9 -3
  268. package/dist/runCancelContext.d.ts +0 -1
  269. package/dist/runCancelContext.js +1 -2
  270. package/dist/runTerminal.d.ts +5 -0
  271. package/dist/runTerminal.js +52 -17
  272. package/dist/sandboxWire.d.ts +1 -1
  273. package/dist/sandboxWire.js +4 -6
  274. package/dist/scenarioRefusal.js +1 -1
  275. package/dist/scenarioSkills.d.ts +20 -0
  276. package/dist/scenarioSkills.js +72 -0
  277. package/dist/scenarioWire.d.ts +5 -2
  278. package/dist/scenarioWire.js +9 -9
  279. package/dist/sealedKeyCapability.js +2 -2
  280. package/dist/seam.d.ts +2 -0
  281. package/dist/seam.js +3 -3
  282. package/dist/seatContract.d.ts +68 -7
  283. package/dist/seatContract.js +84 -25
  284. package/dist/selfOrchestrationDenial.js +1 -1
  285. package/dist/sessionBackground.d.ts +165 -0
  286. package/dist/sessionBackground.js +781 -0
  287. package/dist/sessionBackgroundHandoff.d.ts +54 -0
  288. package/dist/sessionBackgroundHandoff.js +321 -0
  289. package/dist/sessionMap.js +4 -1
  290. package/dist/sessionPolicyCapability.js +2 -2
  291. package/dist/sessionRulesChildrenReadLive.d.ts +6 -0
  292. package/dist/sessionRulesChildrenReadLive.js +5 -0
  293. package/dist/sessionRulesNamespaceFormsCapability.d.ts +12 -0
  294. package/dist/sessionRulesNamespaceFormsCapability.js +29 -0
  295. package/dist/sessionSyncFileHistoryCapability.js +2 -2
  296. package/dist/settingsCredentialKeyPaths.js +55 -15
  297. package/dist/settingsHooksSalvage.d.ts +1 -0
  298. package/dist/settingsHooksSalvage.js +7 -1
  299. package/dist/settingsLayerAdmission.d.ts +4 -0
  300. package/dist/settingsLayerAdmission.js +16 -0
  301. package/dist/skillToolListsCapability.js +6 -5
  302. package/dist/skillsWireCaps.d.ts +14 -0
  303. package/dist/skillsWireCaps.js +47 -16
  304. package/dist/slashCommandGate.d.ts +24 -0
  305. package/dist/slashCommandGate.js +74 -0
  306. package/dist/slashCommandTable.d.ts +14 -0
  307. package/dist/slashCommandTable.js +99 -0
  308. package/dist/sqlEngineCapability.js +2 -2
  309. package/dist/steerPriorityCapability.js +2 -2
  310. package/dist/storePostureCapability.js +2 -2
  311. package/dist/subagent/agentStateDetail.js +1 -1
  312. package/dist/subagent/engineDelegatedPrompt.d.ts +9 -0
  313. package/dist/subagent/engineDelegatedPrompt.js +38 -7
  314. package/dist/subagent/engineRowStopGate.js +2 -2
  315. package/dist/subagent/engineSubagentResume.js +3 -3
  316. package/dist/subagent/engineTaskHandleWire.d.ts +1 -0
  317. package/dist/subagent/engineTaskHandleWire.js +10 -0
  318. package/dist/submitFailure.d.ts +8 -0
  319. package/dist/submitFailure.js +17 -0
  320. package/dist/supportFloor.d.ts +1 -0
  321. package/dist/supportFloor.js +7 -0
  322. package/dist/terminationIntent.d.ts +55 -0
  323. package/dist/terminationIntent.js +352 -0
  324. package/dist/thinkingLatch.d.ts +69 -0
  325. package/dist/thinkingLatch.js +255 -0
  326. package/dist/thinkingLatchWords.d.ts +7 -0
  327. package/dist/thinkingLatchWords.js +4 -0
  328. package/dist/toolHistoryMismatch.d.ts +8 -0
  329. package/dist/toolHistoryMismatch.js +37 -6
  330. package/dist/toolResult.d.ts +13 -3
  331. package/dist/toolResult.js +159 -32
  332. package/dist/toolResultContent.d.ts +13 -0
  333. package/dist/toolResultContent.js +82 -7
  334. package/dist/toolRoster.d.ts +18 -0
  335. package/dist/toolRoster.js +64 -0
  336. package/dist/turnFailurePresentation.js +27 -90
  337. package/dist/usageLimitAutoResume.d.ts +74 -0
  338. package/dist/usageLimitAutoResume.js +227 -0
  339. package/dist/userAttachmentEnvelope.js +1 -1
  340. package/dist/userAttachmentSeat.js +5 -5
  341. package/dist/userInvokedSkillsCapability.js +2 -2
  342. package/dist/webSearchBackendCapability.js +2 -2
  343. package/dist/wireErrorTriage.js +99 -50
  344. package/dist/wireFailureShape.d.ts +25 -1
  345. package/dist/wireFailureShape.js +92 -5
  346. package/dist/wireRefusalCopy.d.ts +24 -1
  347. package/dist/wireRefusalCopy.js +253 -32
  348. package/dist/wiringFleetDoctor.d.ts +3 -0
  349. package/dist/wiringFleetDoctor.js +21 -0
  350. package/dist/workflow.d.ts +2 -1
  351. package/dist/workflow.js +38 -1
  352. package/dist/workflowClient.d.ts +2 -7
  353. package/dist/workflowsJournalCapability.js +2 -2
  354. package/dist/writeProtectionCapability.js +2 -2
  355. package/docs/INTEGRATION-CLIENTS.md +907 -182
  356. package/package.json +14 -3
  357. package/dist/argvFlagValue.d.ts +0 -8
  358. package/dist/argvFlagValue.js +0 -37
@@ -1,6 +1,7 @@
1
1
  import { abortableSleep } from '../abortableSleep.js';
2
2
  import { EN_MESSAGES } from '../i18n/messages.en.js';
3
3
  import { msg, renderMessage } from '../i18n/translate.js';
4
+ import { ASK_PARK_AUTO_REOPEN_BLOCKS, askParkAutoReopenBlockedContent } from '../hitl/askParkAutoReopenBlock.js';
4
5
  import { corruptStoredRowContent, corruptStoredRowWhere, effectiveWireErrorCode } from '../wireErrorTriage.js';
5
6
  import { readThrownStatusSlot } from '../wireFailureShape.js';
6
7
  import { steerBodyOf, UNOBSERVED_STEER_PRIORITY } from '../controlRouter.js';
@@ -8,6 +9,7 @@ import { atMostOnceFailureClass } from '../atMostOnce.js';
8
9
  import { readSteerReceipt } from '../steerReceipt.js';
9
10
  import { resumeAttachReplayDisclosure, runningAttachOffered } from '../hitl/resumeRunningCard.js';
10
11
  import { isSdkRunParked, isSdkRunTerminal, SDK_RUN_LIVE_STATUSES } from '../terminalStatuses.js';
12
+ import { awaitInterruptedRunSettle, interruptedRunSettleRow } from '../terminationIntent.js';
11
13
  import { SDK_APPROVAL_DECIDE_GATE_KINDS, SDK_PLAN_REVIEW_GATE_KINDS } from '../generated/sdkFactTables.js';
12
14
  export const PLAN_REVIEW_GATE_KIND = 'plan_review';
13
15
  const APPROVAL_LEG_GATE_KINDS = SDK_APPROVAL_DECIDE_GATE_KINDS;
@@ -60,6 +62,10 @@ export function selfHealSubmissionDisposition(outcome) {
60
62
  return 'not-delivered';
61
63
  case 'running-steered':
62
64
  return 'handed-off';
65
+ case 'interrupted-settled':
66
+ return 'resending';
67
+ case 'interrupted-still-finishing':
68
+ return 'not-delivered';
63
69
  case 'running-attach':
64
70
  return 'not-delivered';
65
71
  default:
@@ -136,6 +142,8 @@ const REOPEN_VERDICT_KEYS = [
136
142
  'dismissedByUser',
137
143
  '_sema_noPresentationSurface',
138
144
  '_sema_errorCode',
145
+ '_sema_reopenRefusal',
146
+ '_sema_policyBlocked',
139
147
  ];
140
148
  function snapshotReopenVerdict(raw) {
141
149
  if (raw === null || raw === undefined)
@@ -238,6 +246,28 @@ function reopenErrorCodeOf(verdict) {
238
246
  return undefined;
239
247
  }
240
248
  }
249
+ function reopenPolicyBlockedOf(verdict) {
250
+ try {
251
+ if (verdict.reopened !== false)
252
+ return undefined;
253
+ const v = verdict._sema_policyBlocked;
254
+ return typeof v === 'string' && ASK_PARK_AUTO_REOPEN_BLOCKS.includes(v) ? v : undefined;
255
+ }
256
+ catch {
257
+ return undefined;
258
+ }
259
+ }
260
+ function reopenRefusalOf(verdict) {
261
+ try {
262
+ if (verdict.reopened !== false)
263
+ return undefined;
264
+ const v = verdict._sema_reopenRefusal;
265
+ return typeof v === 'string' && PLAN_REVIEW_REOPEN_REFUSALS.includes(v) ? v : undefined;
266
+ }
267
+ catch {
268
+ return undefined;
269
+ }
270
+ }
241
271
  function failureWireCode(e) {
242
272
  try {
243
273
  return effectiveWireErrorCode(e);
@@ -415,7 +445,58 @@ async function readOwnedPendingCount(read, deps) {
415
445
  recheckCtl.abort(new Error('owned-pending recheck settled'));
416
446
  }
417
447
  }
448
+ async function interruptedShortCircuit(signal, runs, deps) {
449
+ try {
450
+ return await interruptedShortCircuitUnguarded(signal, runs, deps);
451
+ }
452
+ catch {
453
+ return null;
454
+ }
455
+ }
456
+ async function interruptedShortCircuitUnguarded(signal, runs, deps) {
457
+ const taskId = signal.activeTaskId;
458
+ if (typeof taskId !== 'string' || taskId === '')
459
+ return null;
460
+ const callerAborted = () => deps?.signal?.aborted === true;
461
+ if (callerAborted())
462
+ return null;
463
+ const port = deps?.wasRecentlyTerminatedByUs;
464
+ if (deps === undefined || typeof port !== 'function')
465
+ return null;
466
+ let ours = false;
467
+ try {
468
+ ours = port.call(deps, taskId) === true;
469
+ }
470
+ catch {
471
+ ours = false;
472
+ }
473
+ if (!ours)
474
+ return null;
475
+ const verbs = runs;
476
+ if (verbs === undefined || typeof verbs.get !== 'function')
477
+ return null;
478
+ const callerSignal = deps.signal;
479
+ const settleDeps = {
480
+ getRun: async (id, o) => {
481
+ const row = await verbs.get(id, { ...sessionOpts(deps), ...(o?.signal !== undefined ? { signal: o.signal } : {}) });
482
+ return row === null ? null : { status: readStatusGuarded(row) };
483
+ },
484
+ ...(callerSignal !== undefined ? { signal: callerSignal } : {}),
485
+ ...(deps.interruptedSettle ?? {}),
486
+ };
487
+ const verdict = await awaitInterruptedRunSettle(taskId, settleDeps);
488
+ if (callerAborted())
489
+ return null;
490
+ if (verdict.kind === 'settled')
491
+ return { kind: 'interrupted-settled', taskId, status: verdict.status };
492
+ if (verdict.kind === 'still-running')
493
+ return { kind: 'interrupted-still-finishing', taskId, waitedMs: verdict.waitedMs };
494
+ return null;
495
+ }
418
496
  export async function attemptActiveRunSelfHeal(signal, runs, deps) {
497
+ const interrupted = await interruptedShortCircuit(signal, runs, deps);
498
+ if (interrupted !== null)
499
+ return interrupted;
419
500
  let pending = false;
420
501
  try {
421
502
  pending = deps?.hasPendingDecision?.() === true;
@@ -491,7 +572,8 @@ async function planVerdict(taskId, deps) {
491
572
  }
492
573
  async function askVerdict(taskId, deps) {
493
574
  try {
494
- return snapshotReopenVerdict(await deps?.reopenAskPark?.(taskId));
575
+ const trigger = planReviewReopenTriggerFor(deps?.submissionOrigin);
576
+ return snapshotReopenVerdict(await (trigger === undefined ? deps?.reopenAskPark?.(taskId) : deps?.reopenAskPark?.(taskId, { trigger })));
495
577
  }
496
578
  catch (e) {
497
579
  if (deps?.signal?.aborted === true)
@@ -507,6 +589,7 @@ async function planReviewArm(taskId, signal, deps) {
507
589
  const dismissed = reopenRefusedForUserDismissal(verdict);
508
590
  const noView = reopenRefusedForNoPresentationSurface(verdict);
509
591
  const errorCode = inFlight || dismissed || noView ? undefined : reopenErrorCodeOf(verdict);
592
+ const reopenRefusal = inFlight || dismissed || noView ? undefined : reopenRefusalOf(verdict);
510
593
  return {
511
594
  kind: 'plan-review-reopen-failed',
512
595
  taskId,
@@ -516,6 +599,7 @@ async function planReviewArm(taskId, signal, deps) {
516
599
  ...(dismissed ? { dismissedByUser: true } : {}),
517
600
  ...(noView ? { noPresentationSurface: true } : {}),
518
601
  ...(errorCode !== undefined ? { errorCode } : {}),
602
+ ...(reopenRefusal !== undefined ? { reopenRefusal } : {}),
519
603
  };
520
604
  }
521
605
  async function askParkArm(taskId, signal, runs, deps) {
@@ -551,7 +635,8 @@ async function askParkArm(taskId, signal, runs, deps) {
551
635
  return staleParkArm(taskId, signal, runs, deps);
552
636
  }
553
637
  const noView = reopenRefusedForNoPresentationSurface(verdict);
554
- const errorCode = inFlight || noView || reopenRefusedForUserDismissal(verdict) ? undefined : reopenErrorCodeOf(verdict);
638
+ const policyBlocked = inFlight || noView ? undefined : reopenPolicyBlockedOf(verdict);
639
+ const errorCode = inFlight || noView || reopenRefusedForUserDismissal(verdict) || policyBlocked !== undefined ? undefined : reopenErrorCodeOf(verdict);
555
640
  return {
556
641
  kind: 'ask-reopen-failed',
557
642
  taskId,
@@ -560,6 +645,7 @@ async function askParkArm(taskId, signal, runs, deps) {
560
645
  ...(verdict.pendingRowGone === true ? { pendingRowGone: true } : {}),
561
646
  ...(noView ? { noPresentationSurface: true } : {}),
562
647
  ...(errorCode !== undefined ? { errorCode } : {}),
648
+ ...(policyBlocked !== undefined ? { policyBlocked } : {}),
563
649
  };
564
650
  }
565
651
  async function probeRunStatusOnce(taskId, durable, durableGet, deps) {
@@ -855,7 +941,7 @@ const say = (lang, key, params) => renderMessage(msg(key, params), lang);
855
941
  function gateKindPhrase(kind, lang) {
856
942
  return kind ? say(lang, 'session.selfHeal.gate.kind', { kind }) : say(lang, 'session.selfHeal.gate.generic');
857
943
  }
858
- function endRunClause(copy, taskId, lang) {
944
+ function endRunClause(copy, taskId, lang, face = 'headless') {
859
945
  let host;
860
946
  try {
861
947
  host = copy?.endRun;
@@ -866,6 +952,9 @@ function endRunClause(copy, taskId, lang) {
866
952
  const phrase = typeof host === 'string' ? host.trim().replace(/[\s.;。;!!??]+$/u, '') : '';
867
953
  if (/[\p{L}\p{N}]/u.test(phrase))
868
954
  return phrase;
955
+ if (face === 'interactive') {
956
+ return taskId ? say(lang, 'session.selfHeal.endRun.engineInteractive', { taskId }) : say(lang, 'session.selfHeal.endRun.engineInteractive.noId');
957
+ }
869
958
  return say(lang, 'session.selfHeal.endRun.engine', { cancelPath: `POST /v1/runs/${taskId ? taskId : '<id>'}/cancel` });
870
959
  }
871
960
  function wakeSessionClause(copy, lang) {
@@ -937,6 +1026,9 @@ function injectedSubmissionRow(outcome, following = false, lang) {
937
1026
  if ((outcome.kind === 'ask-reopen-failed' || outcome.kind === 'plan-review-reopen-failed') && outcome.decisionInFlight === true) {
938
1027
  return say(lang, 'session.selfHeal.injected.decisionInFlight', { lead, id });
939
1028
  }
1029
+ if (outcome.kind === 'ask-reopen-failed' && outcome.policyBlocked !== undefined) {
1030
+ return askParkAutoReopenBlockedContent(outcome.policyBlocked, outcome.taskId, 'interactive', lang);
1031
+ }
940
1032
  if (outcome.kind === 'plan-review-reopen-failed' && outcome.dismissedByUser === true) {
941
1033
  return say(lang, 'session.selfHeal.injected.dismissedPlan', { lead, id, closed: msg('session.selfHeal.userClosedCardNotPutBack') });
942
1034
  }
@@ -961,6 +1053,8 @@ function injectedSubmissionRow(outcome, following = false, lang) {
961
1053
  ? say(lang, 'session.selfHeal.injected.unknownDeliveryFollowing', { unknown })
962
1054
  : say(lang, 'session.selfHeal.injected.unknownDeliveryWatch', { unknown });
963
1055
  }
1056
+ if (outcome.kind === 'interrupted-still-finishing')
1057
+ return say(lang, 'session.selfHeal.injected.interruptedFinishing', { lead, id });
964
1058
  switch (selfHealSubmissionDisposition(outcome)) {
965
1059
  case 'held-for-decision':
966
1060
  return say(lang, 'session.selfHeal.injected.heldForDecision', { lead, id });
@@ -1021,6 +1115,8 @@ function activeRunSelfHealBaseRow(outcome, wayOut, following = false, keepSessio
1021
1115
  case 'ask-reopen-failed': {
1022
1116
  if (outcome.decisionInFlight === true)
1023
1117
  return decisionInFlightRow('ask', outcome.taskId, lang);
1118
+ if (outcome.policyBlocked !== undefined)
1119
+ return askParkAutoReopenBlockedContent(outcome.policyBlocked, outcome.taskId, 'interactive', lang);
1024
1120
  const viaEngine = engineDecide && outcome.decidePath ? msg('session.selfHeal.viaEngine', { decidePath: outcome.decidePath }) : '';
1025
1121
  const noView = outcome.noPresentationSurface === true ? msg('session.selfHeal.noCardView.afterColon') : '';
1026
1122
  return keepSessionWayOut !== null
@@ -1125,15 +1221,21 @@ function activeRunSelfHealBaseRow(outcome, wayOut, following = false, keepSessio
1125
1221
  return say(lang, 'session.selfHeal.row.cancelFailed.rejected', { taskId: outcome.taskId, detail: outcome.detail, wayOut });
1126
1222
  case 'stale-park-wait':
1127
1223
  return outcome.alreadyOffered === true
1128
- ? say(lang, 'session.selfHeal.row.stale.wait.offered', { taskId: outcome.taskId, status: outcome.status, wayOut, endRun: endRunClause(copy, outcome.taskId, lang) })
1129
- : say(lang, 'session.selfHeal.row.stale.wait.first', { taskId: outcome.taskId, status: outcome.status, wayOut, endRun: endRunClause(copy, outcome.taskId, lang) });
1224
+ ? say(lang, 'session.selfHeal.row.stale.wait.offered', { taskId: outcome.taskId, status: outcome.status, wayOut, endRun: endRunClause(copy, outcome.taskId, lang, 'interactive') })
1225
+ : say(lang, 'session.selfHeal.row.stale.wait.first', { taskId: outcome.taskId, status: outcome.status, wayOut, endRun: endRunClause(copy, outcome.taskId, lang, 'interactive') });
1130
1226
  case 'running-not-found':
1131
1227
  return say(lang, 'session.selfHeal.row.runNotFound', { taskId: outcome.taskId, wayOut });
1228
+ case 'interrupted-settled':
1229
+ return interruptedRunSettleRow(outcome.taskId, { kind: 'settled', status: outcome.status }, lang) ?? '';
1230
+ case 'interrupted-still-finishing': {
1231
+ const waited = `${String(Math.max(1, Math.round(outcome.waitedMs / 1000)))}s`;
1232
+ return say(lang, 'session.selfHeal.row.interrupted.stillFinishing', { taskId: outcome.taskId, waited });
1233
+ }
1132
1234
  case 'running-settled':
1133
1235
  return say(lang, 'session.selfHeal.row.runSettled', { taskId: outcome.taskId, status: outcome.status, wayOut });
1134
1236
  case 'not-parked':
1135
1237
  if (outcome.alreadyOffered === true) {
1136
- return say(lang, 'session.selfHeal.row.notParked.offered', { taskId: outcome.taskId, status: outcome.status, wayOut, endRun: endRunClause(copy, outcome.taskId, lang) });
1238
+ return say(lang, 'session.selfHeal.row.notParked.offered', { taskId: outcome.taskId, status: outcome.status, wayOut, endRun: endRunClause(copy, outcome.taskId, lang, 'interactive') });
1137
1239
  }
1138
1240
  const parkedOn = outcome.pendingGateKind !== undefined
1139
1241
  ? gateKindPhrase(outcome.pendingGateKind, lang)
@@ -1,11 +1,11 @@
1
- import { readFleetSegment, readInstructionsSegment, wiringManifestViewOf } from './wiringManifestView.js';
1
+ import { modRowsOf, readFleetSegment, readInstructionsSegment, wiringManifestViewOf } from './wiringManifestView.js';
2
2
  import { stamp, snapshotSegmentIdentity, } from '../types.js';
3
3
  import { turnUsageToModelUsage } from './turnUsageToModelUsage.js';
4
4
  import { ccToolDenialKindForToolEnd, gateOutcomeOf } from '../../gateOutcome.js';
5
5
  import { projectToolRoster, projectToolRosterDelta } from '../../toolRoster.js';
6
6
  import { projectHandsSection } from '../../handsSeam.js';
7
7
  import { readMcpLiveness } from '../../mcpLiveness.js';
8
- import { contextUsageReadingOf, humanInputAttachmentsOf, markMcpSectionDroppedNamedRows, promptManifestIdentityOfFrame, promptManifestSectionViewOf, readFrameTrueMark } from '../../ownKey.js';
8
+ import { contextUsageReadingOf, humanInputAttachmentsOf, guardedRead, markMcpSectionDroppedNamedRows, ownSnapshotTyped, promptManifestIdentityOfFrame, promptManifestSectionViewOf, readFrameStringKey, readFrameTrueMark, readOwnDataNonEmptyString } from '../../ownKey.js';
9
9
  import { SEGMENT_END_IDENTITY_KEYS, eventSeq, stripToolUseSideChannels } from '../types.js';
10
10
  import { frozenSet } from '../../frozenSet.js';
11
11
  import { isCoreWorkflowRunTerminal } from '../../terminalStatuses.js';
@@ -76,12 +76,27 @@ function isCompactionStartedFrame(ev) {
76
76
  function assertNeverArm(_ev) {
77
77
  }
78
78
  export function eventToSdkMessage(ev, ctx) {
79
- return withEngineIdentity(projectEvent(ev, ctx), ev, ctx);
80
- }
81
- function withEngineIdentity(p, ev, ctx) {
79
+ const entry = sampleNotificationEntry(ev);
80
+ if (entry.dropped !== undefined)
81
+ return entry.dropped;
82
+ return withEngineIdentity(projectEvent(entry.frame, ctx), ev, ctx, entry.frame);
83
+ }
84
+ function sampleNotificationEntry(ev) {
85
+ const word = guardedRead(() => readOwnDataNonEmptyString(ev, 'type'));
86
+ if (word !== 'task_notification' && word !== 'workflow_complete')
87
+ return { frame: ev };
88
+ const sampled = ownSnapshotTyped(ev);
89
+ if (sampled === undefined)
90
+ return { dropped: dropped('malformed', word) };
91
+ return { frame: sampled };
92
+ }
93
+ function noticeSnapshotOf(ev) {
94
+ return ownSnapshotTyped(ev);
95
+ }
96
+ function withEngineIdentity(p, ev, ctx, identityFrame = ev) {
82
97
  if (p.kind !== 'message')
83
98
  return p;
84
- const eventId = wireEventIdOf(ev);
99
+ const eventId = wireEventIdOf(identityFrame);
85
100
  if (eventId === undefined)
86
101
  return p;
87
102
  const env = p.message;
@@ -128,17 +143,20 @@ function projectEvent(ev, ctx) {
128
143
  })));
129
144
  }
130
145
  case 'workflow_complete': {
131
- if (typeof ev.runId !== 'string' || ev.runId.length === 0) {
146
+ const wf = noticeSnapshotOf(ev);
147
+ if (wf === undefined)
148
+ return dropped('malformed', 'workflow_complete');
149
+ if (typeof wf.runId !== 'string' || wf.runId.length === 0) {
132
150
  return dropped('malformed', 'workflow_complete');
133
151
  }
134
- if (!isCoreWorkflowRunTerminal(ev.status)) {
152
+ if (!isCoreWorkflowRunTerminal(wf.status)) {
135
153
  return dropped('malformed', 'workflow_complete');
136
154
  }
137
155
  return projected(stamp(ctx, armBody({
138
156
  type: 'workflow_complete',
139
- runId: ev.runId,
140
- status: ev.status,
141
- summary: typeof ev.summary === 'string' ? ev.summary : '',
157
+ runId: wf.runId,
158
+ status: wf.status,
159
+ summary: typeof wf.summary === 'string' ? wf.summary : '',
142
160
  })));
143
161
  }
144
162
  case 'text':
@@ -211,6 +229,7 @@ function projectEvent(ev, ctx) {
211
229
  const collateralAbort = ev._sema_collateral_abort;
212
230
  const denialKind = ccToolDenialKindForToolEnd(ev);
213
231
  const toolEndNotExecuted = readFrameTrueMark(ev, 'notExecuted');
232
+ const toolEndAnsweredBy = readFrameStringKey(ev, 'answeredBy');
214
233
  return projected(stamp(ctx, armBody({
215
234
  type: 'tool_end_result',
216
235
  toolCallId: ev.toolCallId,
@@ -233,6 +252,7 @@ function projectEvent(ev, ctx) {
233
252
  ...(collateralAbort === true ? { _sema_collateral_abort: true } : {}),
234
253
  ...(denialKind !== undefined ? { _sema_denial_kind: denialKind } : {}),
235
254
  ...(toolEndNotExecuted ? { notExecuted: true } : {}),
255
+ ...(toolEndAnsweredBy !== undefined ? { answeredBy: toolEndAnsweredBy } : {}),
236
256
  ...(ev.eventId !== undefined ? { eventId: ev.eventId } : {}),
237
257
  ...(ev.parentToolCallId !== undefined
238
258
  ? { parentToolCallId: ev.parentToolCallId }
@@ -313,8 +333,11 @@ function projectEvent(ev, ctx) {
313
333
  return projected(stamp(ctx, armBody({ type: 'wiring_manifest', ...body, ...identity })));
314
334
  }
315
335
  case 'task_notification': {
316
- const nested = ev.notification;
317
- const n = (nested ?? ev);
336
+ const notice = noticeSnapshotOf(ev);
337
+ if (notice === undefined)
338
+ return dropped('malformed', 'task_notification');
339
+ const nested = notice.notification;
340
+ const n = (nested ?? notice);
318
341
  if (typeof n.task_id !== 'string')
319
342
  return dropped('malformed', 'task_notification');
320
343
  return projected(stamp(ctx, armBody({
@@ -660,72 +683,8 @@ function projectModsSection(holder) {
660
683
  try {
661
684
  if (!Object.hasOwn(holder, 'mods'))
662
685
  return undefined;
663
- const raw = holder.mods;
664
- if (!Array.isArray(raw))
665
- return undefined;
666
- const rows = [];
667
- for (const r of raw) {
668
- const row = modRowOf(r);
669
- if (row !== undefined)
670
- rows.push(row);
671
- }
672
- if (raw.length > 0 && rows.length === 0)
673
- return undefined;
674
- return rows;
675
- }
676
- catch {
677
- return undefined;
678
- }
679
- }
680
- function modRowOf(r) {
681
- try {
682
- if (typeof r !== 'object' || r === null || Array.isArray(r))
683
- return undefined;
684
- const str = (v) => (typeof v === 'string' && v.length > 0 ? v : undefined);
685
- const strList = (v) => (Array.isArray(v) && v.every((x) => typeof x === 'string') ? [...v] : undefined);
686
- const o = r;
687
- const name = str(o.name);
688
- const seat = str(o.seat);
689
- const tier = str(o.tier);
690
- if (name === undefined || seat === undefined || tier === undefined)
691
- return undefined;
692
- const eventsRaw = o.events;
693
- const observeRaw = o.observe;
694
- const skippedRaw = o.skipped;
695
- const refusedByRaw = o.refusedBy;
696
- const reasonRaw = o.reason;
697
- const hasMountedKey = eventsRaw !== undefined || observeRaw !== undefined || skippedRaw !== undefined;
698
- const hasRefusedKey = refusedByRaw !== undefined || reasonRaw !== undefined;
699
- if (hasMountedKey && hasRefusedKey)
700
- return undefined;
701
- if (hasRefusedKey) {
702
- const refusedBy = str(refusedByRaw);
703
- const reason = str(reasonRaw);
704
- return refusedBy === undefined || reason === undefined ? undefined : { name, seat, tier, refusedBy, reason };
705
- }
706
- const events = strList(eventsRaw);
707
- if (events === undefined)
708
- return undefined;
709
- const observe = observeRaw === undefined ? undefined : strList(observeRaw);
710
- const skipped = Array.isArray(skippedRaw)
711
- ? skippedRaw.flatMap((x) => {
712
- if (typeof x !== 'object' || x === null || Array.isArray(x))
713
- return [];
714
- const k = x;
715
- const registration = str(k.registration);
716
- const cause = str(k.cause);
717
- const why = str(k.reason);
718
- return registration === undefined || cause === undefined || why === undefined ? [] : [{ registration, cause, reason: why }];
719
- })
720
- : undefined;
721
- return {
722
- name,
723
- seat,
724
- tier,
725
- events,
726
- ...(observe !== undefined ? { observe } : {}),
727
- ...(skipped !== undefined && skipped.length > 0 ? { skipped } : {}),
728
- };
686
+ const rows = modRowsOf(holder.mods);
687
+ return rows === undefined ? undefined : rows.slice();
729
688
  }
730
689
  catch {
731
690
  return undefined;
@@ -1,8 +1,11 @@
1
1
  import type { AgentEvent, TaskStats } from '@sema-agent/sdk';
2
2
  import { type CcToolDenialKind, type GateDeniedByWord } from '../../gateVocabulary.js';
3
3
  import { type SDKMessage, type EmitContext } from '../types.js';
4
- import type { TerminalReason } from '@sema-agent/agent-types';
4
+ import type { SDKPermissionDenial, SDKResultError, SDKResultSuccess, TerminalReason } from '@sema-agent/agent-types';
5
+ import { type RunTerminalCodedDetail, type RunTerminalRead } from '../../runTerminal.js';
5
6
  import { type SemaModelUsage } from './turnUsageToModelUsage.js';
7
+ import { type ResultLimitWord } from '../../engineErrorCodes.js';
8
+ import { type ResultWayOutFacts } from '../../providerRejection.js';
6
9
  export interface SemaFlatUsage {
7
10
  readonly inputTokens: number;
8
11
  readonly outputTokens: number;
@@ -23,6 +26,9 @@ export interface TerminalStreamObserved {
23
26
  readonly streamSawRunOpen?: boolean;
24
27
  readonly deniedToolNameByCallId?: ReadonlyMap<string, string | undefined>;
25
28
  readonly deniedCallsOverflowed?: boolean;
29
+ readonly wayOutFacts?: ResultWayOutFacts | undefined;
30
+ readonly codedDetail?: RunTerminalCodedDetail | undefined;
31
+ readonly lastRow?: PrintResultLastRow | null;
26
32
  }
27
33
  export declare const TOOL_INPUT_JOIN_MAX_CALLS = 4096;
28
34
  export interface SemaPermissionDenial {
@@ -36,6 +42,22 @@ export interface SemaPermissionDenial {
36
42
  readonly _sema_denied_by_source?: 'tool_end';
37
43
  readonly toolDenialKind?: CcToolDenialKind;
38
44
  }
45
+ export interface CcPermissionDenial {
46
+ readonly tool_name: string;
47
+ readonly tool_use_id: string;
48
+ readonly tool_input: SDKPermissionDenial['tool_input'];
49
+ readonly _sema_tool_arg?: string;
50
+ readonly _sema_tool_input_redacted?: true;
51
+ readonly deniedBy?: GateDeniedByWord;
52
+ readonly _sema_denied_by_source?: 'tool_end';
53
+ readonly toolDenialKind?: CcToolDenialKind;
54
+ }
55
+ export interface PermissionDenialParts {
56
+ readonly permission_denials: readonly CcPermissionDenial[];
57
+ readonly _sema_permission_denials?: readonly SemaPermissionDenial[];
58
+ readonly _sema_permission_denials_absent?: true;
59
+ readonly _sema_zero_output_denied?: true;
60
+ }
39
61
  export interface SemaCostBreakdown {
40
62
  readonly llmRootMicroUsd?: number;
41
63
  readonly nestedSubagentMicroUsd?: number;
@@ -68,6 +90,10 @@ export interface RunCostFacts {
68
90
  export declare function readRunCostFacts(stats: TaskStats | undefined, observed?: {
69
91
  readonly usageMissingObserved?: boolean;
70
92
  }): RunCostFacts | undefined;
93
+ export interface ObservedTerminalParts extends PermissionDenialParts {
94
+ readonly _sema_usage_lower_bound?: true;
95
+ }
96
+ export declare function terminalPartsOfObserved(observed: TerminalStreamObserved | undefined): ObservedTerminalParts;
71
97
  export interface SemaSubagentUsageRow {
72
98
  readonly turns: number;
73
99
  readonly inputTokens: number;
@@ -98,6 +124,39 @@ export interface SemaTerminalModelUsage extends SemaModelUsage {
98
124
  readonly _sema_cache_write_tokens_long?: number;
99
125
  }
100
126
  export declare function terminalReasonForResult(msg: SDKMessage): TerminalReason | undefined;
127
+ export type { ResultLimitWord };
128
+ export declare function resultLimitOf(frame: object | null | undefined): ResultLimitWord | undefined;
129
+ export interface PrintResultLastRowBlock {
130
+ readonly type?: string;
131
+ readonly text?: string;
132
+ }
133
+ export interface PrintResultLastRowMessage {
134
+ readonly content?: string | readonly PrintResultLastRowBlock[];
135
+ readonly stop_reason?: string | null;
136
+ }
137
+ export interface PrintResultLastRow {
138
+ readonly type?: string;
139
+ readonly _sema_api_error_message?: boolean;
140
+ readonly message?: PrintResultLastRowMessage;
141
+ readonly salvagedText?: string;
142
+ }
143
+ export interface PrintResultArmInput {
144
+ readonly terminal: RunTerminalRead | null;
145
+ readonly lastRow?: PrintResultLastRow | null;
146
+ }
147
+ export interface PrintResultSuccessArm {
148
+ readonly subtype: SDKResultSuccess['subtype'];
149
+ readonly is_error: boolean;
150
+ readonly stop_reason: SDKResultSuccess['stop_reason'];
151
+ }
152
+ export interface PrintResultErrorArm {
153
+ readonly subtype: SDKResultError['subtype'];
154
+ readonly is_error: true;
155
+ readonly stop_reason: SDKResultError['stop_reason'];
156
+ readonly limit?: ResultLimitWord;
157
+ }
158
+ export type PrintResultArm = PrintResultSuccessArm | PrintResultErrorArm;
159
+ export declare function printResultArmOf(input: PrintResultArmInput | null | undefined): PrintResultArm;
101
160
  export declare function doneToSdkResult(ev: Extract<AgentEvent, {
102
161
  type: 'done';
103
162
  }>, ctx: EmitContext, observed?: TerminalStreamObserved): SDKMessage;