@sema-agent/client-core 0.109.0 → 0.111.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 (236) hide show
  1. package/CHANGELOG.md +342 -0
  2. package/README.md +88 -32
  3. package/dist/abortableSleep.d.ts +7 -0
  4. package/dist/abortableSleep.js +37 -0
  5. package/dist/adapt/arms.js +45 -11
  6. package/dist/adapt/toolCards.d.ts +3 -1
  7. package/dist/adapt/toolCards.js +4 -2
  8. package/dist/adapter/activeRunSelfHeal.d.ts +39 -0
  9. package/dist/adapter/activeRunSelfHeal.js +171 -3
  10. package/dist/adapter/downstream/eventToSdkMessage.js +20 -15
  11. package/dist/adapter/downstream/terminalToSdkResult.d.ts +2 -0
  12. package/dist/adapter/downstream/terminalToSdkResult.js +11 -0
  13. package/dist/adapter/runStream.d.ts +5 -0
  14. package/dist/adapter/runStream.js +15 -3
  15. package/dist/attachmentRoute.d.ts +20 -0
  16. package/dist/attachmentRoute.js +39 -0
  17. package/dist/attachmentsWireCaps.js +1 -1
  18. package/dist/builtinOutputStyles.d.ts +12 -0
  19. package/dist/builtinOutputStyles.js +147 -0
  20. package/dist/compactionStatus.d.ts +9 -0
  21. package/dist/compactionStatus.js +29 -5
  22. package/dist/controlRouter.js +2 -1
  23. package/dist/coreValuePorts.d.ts +39 -1
  24. package/dist/coreValuePorts.js +10 -0
  25. package/dist/declared/supportFloorDeclared.js +1 -1
  26. package/dist/displayUntrusted.d.ts +1 -0
  27. package/dist/displayUntrusted.js +138 -14
  28. package/dist/engineErrorCodes.d.ts +3 -0
  29. package/dist/engineErrorCodes.js +3 -0
  30. package/dist/engineHealthFacts.d.ts +20 -0
  31. package/dist/engineHealthFacts.js +42 -1
  32. package/dist/engineHealthProbeVerdict.d.ts +23 -0
  33. package/dist/engineHealthProbeVerdict.js +115 -0
  34. package/dist/engineInlineTaskStats.d.ts +4 -3
  35. package/dist/engineInlineTaskStats.js +18 -2
  36. package/dist/engineNoticeCodes.d.ts +10 -0
  37. package/dist/engineNoticeCodes.js +36 -6
  38. package/dist/engineRepoint.d.ts +147 -0
  39. package/dist/engineRepoint.js +310 -0
  40. package/dist/engineRowRef.d.ts +3 -0
  41. package/dist/engineRowRef.js +13 -1
  42. package/dist/engineSessionMessages.d.ts +2 -1
  43. package/dist/engineSessionMessages.js +5 -0
  44. package/dist/engineSwapCrossing.d.ts +57 -0
  45. package/dist/engineSwapCrossing.js +297 -0
  46. package/dist/engineUnavailable.d.ts +44 -0
  47. package/dist/engineUnavailable.js +492 -0
  48. package/dist/errorSupplementRoles.js +2 -1
  49. package/dist/eventLeg.js +3 -3
  50. package/dist/fleet/fleetProjection.js +3 -2
  51. package/dist/generated/engineFactTables.d.ts +2 -0
  52. package/dist/generated/engineFactTables.js +12 -0
  53. package/dist/generated/sdkFactTables.d.ts +2 -1
  54. package/dist/generated/sdkFactTables.js +5 -0
  55. package/dist/generated/settingsSchemaTables.d.ts +4 -0
  56. package/dist/generated/settingsSchemaTables.js +1 -0
  57. package/dist/hitl/approvalAskers.d.ts +6 -0
  58. package/dist/hitl/approvalAskers.js +30 -0
  59. package/dist/hitl/approvalCardReasons.js +6 -3
  60. package/dist/hitl/approvalDelivery.d.ts +1 -0
  61. package/dist/hitl/approvalDelivery.js +1 -1
  62. package/dist/hitl/approvalRequestFrameReading.d.ts +7 -0
  63. package/dist/hitl/approvalRequestFrameReading.js +11 -0
  64. package/dist/hitl/approvalResolution.d.ts +9 -2
  65. package/dist/hitl/approvalResolution.js +6 -1
  66. package/dist/hitl/askGateWire.js +5 -8
  67. package/dist/hitl/automaticAnswerVerdict.js +2 -2
  68. package/dist/hitl/decisionConflict.js +6 -3
  69. package/dist/hitl/decisionRefusal.d.ts +2 -0
  70. package/dist/hitl/decisionRefusal.js +8 -8
  71. package/dist/hitl/decisionRefusalCarrier.d.ts +3 -0
  72. package/dist/hitl/decisionRefusalCarrier.js +348 -0
  73. package/dist/hitl/decisionSend.d.ts +10 -0
  74. package/dist/hitl/decisionSend.js +57 -17
  75. package/dist/hitl/editedApprovalAcceptance.d.ts +25 -0
  76. package/dist/hitl/editedApprovalAcceptance.js +26 -0
  77. package/dist/hitl/elicitationRefusal.d.ts +4 -0
  78. package/dist/hitl/elicitationRefusal.js +23 -0
  79. package/dist/hitl/frameRouter.d.ts +2 -2
  80. package/dist/hitl/frameRouter.js +12 -33
  81. package/dist/hitl/gateIdentity.d.ts +5 -0
  82. package/dist/hitl/gateIdentity.js +23 -0
  83. package/dist/hitl/gateLedger.d.ts +0 -4
  84. package/dist/hitl/gateLedger.js +0 -19
  85. package/dist/hitl/hitlBridge.d.ts +7 -0
  86. package/dist/hitl/hitlBridge.js +14 -8
  87. package/dist/hitl/hitlHostSurface.d.ts +3 -1
  88. package/dist/hitl/hitlHostSurface.js +14 -4
  89. package/dist/hitl/hostWithdrawal.d.ts +15 -0
  90. package/dist/hitl/hostWithdrawal.js +38 -0
  91. package/dist/hitl/localAllowRedemption.d.ts +67 -0
  92. package/dist/hitl/localAllowRedemption.js +256 -0
  93. package/dist/hitl/parkResolver.js +32 -13
  94. package/dist/hitl/persistedRulesWire.d.ts +16 -0
  95. package/dist/hitl/persistedRulesWire.js +72 -2
  96. package/dist/hitl/planReviewWire.d.ts +3 -0
  97. package/dist/hitl/planReviewWire.js +37 -10
  98. package/dist/hitl/policyDenyCause.d.ts +1 -1
  99. package/dist/hitl/policyDenyCause.js +1 -1
  100. package/dist/hitl/resumeRunningCard.d.ts +1 -0
  101. package/dist/hitl/resumeRunningCard.js +1 -0
  102. package/dist/hitl/screenCardCarriers.d.ts +15 -0
  103. package/dist/hitl/screenCardCarriers.js +41 -0
  104. package/dist/hitl/screenDecisionCards.d.ts +98 -0
  105. package/dist/hitl/screenDecisionCards.js +362 -0
  106. package/dist/hitl/sessionPolicyWire.js +6 -4
  107. package/dist/hitl/standingRows.d.ts +4 -1
  108. package/dist/hitl/standingRows.js +33 -1
  109. package/dist/hitl/toolApprovalWire.d.ts +64 -15
  110. package/dist/hitl/toolApprovalWire.js +470 -125
  111. package/dist/hooksWireCaps.js +31 -1
  112. package/dist/hostSettingNoticeArm.d.ts +3 -0
  113. package/dist/hostSettingNoticeArm.js +12 -0
  114. package/dist/hostTurnSettings.d.ts +13 -4
  115. package/dist/hostTurnSettings.js +150 -10
  116. package/dist/humanTurnRead.js +11 -1
  117. package/dist/i18n/messages.en.d.ts +212 -0
  118. package/dist/i18n/messages.en.js +217 -5
  119. package/dist/i18n/messages.zh.js +235 -5
  120. package/dist/i18n/translate.d.ts +3 -0
  121. package/dist/i18n/translate.js +78 -10
  122. package/dist/i18n/zh.d.ts +1 -0
  123. package/dist/i18n/zh.js +1 -0
  124. package/dist/index.d.ts +56 -16
  125. package/dist/index.js +40 -12
  126. package/dist/inheritEnvCapability.js +2 -0
  127. package/dist/inputAuthor.d.ts +16 -0
  128. package/dist/inputAuthor.js +44 -0
  129. package/dist/interactiveHalt.js +2 -1
  130. package/dist/interactiveInterrupt.js +20 -2
  131. package/dist/interruptRefusalNote.d.ts +2 -0
  132. package/dist/interruptRefusalNote.js +17 -0
  133. package/dist/liveModelCatalog.d.ts +2 -0
  134. package/dist/liveModelCatalog.js +23 -9
  135. package/dist/liveQuestionStore.d.ts +4 -1
  136. package/dist/liveQuestionStore.js +12 -3
  137. package/dist/localEngineSeatReading.d.ts +2 -2
  138. package/dist/localEngineSeatReading.js +5 -3
  139. package/dist/localEngineSpawn.d.ts +0 -7
  140. package/dist/localEngineSpawn.js +0 -92
  141. package/dist/localEngineStep.d.ts +2 -2
  142. package/dist/localEngineStep.js +2 -0
  143. package/dist/mcpEngineLeg.d.ts +3 -0
  144. package/dist/mcpEngineLeg.js +38 -1
  145. package/dist/mcpPanel.js +2 -0
  146. package/dist/mcpReconnect.d.ts +9 -1
  147. package/dist/mcpReconnect.js +124 -19
  148. package/dist/mcpWireCaps.js +1 -1
  149. package/dist/model/engineModelWords.d.ts +3 -0
  150. package/dist/model/engineModelWords.js +13 -0
  151. package/dist/model/subagentModelWord.d.ts +21 -2
  152. package/dist/model/subagentModelWord.js +100 -29
  153. package/dist/modelCapabilityProbe.js +7 -43
  154. package/dist/modsFace.d.ts +8 -1
  155. package/dist/modsFace.js +27 -0
  156. package/dist/notifications.d.ts +36 -6
  157. package/dist/notifications.js +170 -20
  158. package/dist/ownKey.d.ts +6 -5
  159. package/dist/ownKey.js +31 -7
  160. package/dist/peerFrames.d.ts +40 -2
  161. package/dist/peerFrames.js +158 -3
  162. package/dist/pendingUserRow.d.ts +4 -0
  163. package/dist/pendingUserRow.js +16 -0
  164. package/dist/permissionsDeclaration.d.ts +1 -0
  165. package/dist/permissionsDeclaration.js +11 -1
  166. package/dist/planReviewCardFacts.d.ts +3 -0
  167. package/dist/planReviewCardFacts.js +52 -2
  168. package/dist/pluginHooksWire.d.ts +10 -1
  169. package/dist/pluginHooksWire.js +96 -7
  170. package/dist/printToolResultFrame.js +4 -2
  171. package/dist/promptBlockedCopy.js +11 -6
  172. package/dist/promptSuggestionBatch.d.ts +7 -0
  173. package/dist/promptSuggestionBatch.js +9 -0
  174. package/dist/promptSuggestionsTail.d.ts +39 -0
  175. package/dist/promptSuggestionsTail.js +116 -0
  176. package/dist/replayBody.js +10 -2
  177. package/dist/request/taskRequest.d.ts +5 -0
  178. package/dist/request/taskRequest.js +142 -21
  179. package/dist/requestCoordinate.d.ts +1 -0
  180. package/dist/requestCoordinate.js +13 -0
  181. package/dist/resumeRefusalCopy.d.ts +1 -3
  182. package/dist/resumeRefusalCopy.js +2 -1
  183. package/dist/retryStatus.d.ts +2 -2
  184. package/dist/retryStatus.js +2 -0
  185. package/dist/rewindArchiveReading.js +4 -4
  186. package/dist/runCancelContext.d.ts +2 -1
  187. package/dist/runCancelContext.js +1 -0
  188. package/dist/runPermissionModeSwitch.js +2 -2
  189. package/dist/scenarioRefusal.js +11 -13
  190. package/dist/scenarioSkills.js +11 -6
  191. package/dist/seam.d.ts +27 -2
  192. package/dist/seam.js +17 -1
  193. package/dist/seatContract.d.ts +189 -12
  194. package/dist/seatContract.js +401 -9
  195. package/dist/sessionBackground.js +2 -1
  196. package/dist/sessionBackgroundHandoff.js +2 -1
  197. package/dist/sessionCostReading.d.ts +70 -0
  198. package/dist/sessionCostReading.js +150 -0
  199. package/dist/sessionEngine.d.ts +2 -0
  200. package/dist/sessionEngine.js +111 -0
  201. package/dist/sessionHooksRoster.d.ts +4 -0
  202. package/dist/sessionHooksRoster.js +158 -0
  203. package/dist/sessionMemoryStatus.d.ts +2 -1
  204. package/dist/sessionMemoryStatus.js +2 -2
  205. package/dist/sessionReadRedaction.d.ts +7 -0
  206. package/dist/sessionReadRedaction.js +26 -0
  207. package/dist/sessionSyncFileHistory.d.ts +4 -0
  208. package/dist/sessionSyncFileHistory.js +27 -0
  209. package/dist/settingsHooksSalvage.js +2 -1
  210. package/dist/sseIdleTriage.d.ts +13 -1
  211. package/dist/sseIdleTriage.js +25 -6
  212. package/dist/storeDurabilityWord.d.ts +15 -0
  213. package/dist/storeDurabilityWord.js +18 -0
  214. package/dist/storePostureCapability.d.ts +7 -3
  215. package/dist/storePostureCapability.js +69 -39
  216. package/dist/subagent/engineSubagentResume.js +2 -2
  217. package/dist/subagent/engineSubagentTail.js +8 -1
  218. package/dist/subagentContentStore.d.ts +11 -0
  219. package/dist/subagentContentStore.js +28 -2
  220. package/dist/terminalStatuses.d.ts +1 -0
  221. package/dist/terminalStatuses.js +4 -1
  222. package/dist/toolResult.d.ts +1 -0
  223. package/dist/toolResult.js +2 -0
  224. package/dist/turnFailurePresentation.js +9 -2
  225. package/dist/typePins.d.ts +11 -0
  226. package/dist/usageAnalytics.d.ts +17 -0
  227. package/dist/usageAnalytics.js +44 -2
  228. package/dist/userAttachmentEnvelope.d.ts +2 -1
  229. package/dist/userAttachmentEnvelope.js +10 -0
  230. package/dist/wireErrorTriage.js +2 -1
  231. package/dist/wireFailureShape.d.ts +6 -5
  232. package/dist/wireFailureShape.js +150 -38
  233. package/dist/wireRefusalCopy.d.ts +16 -5
  234. package/dist/wireRefusalCopy.js +119 -86
  235. package/docs/INTEGRATION-CLIENTS.md +4228 -21
  236. package/package.json +7 -3
@@ -1,6 +1,6 @@
1
1
  import { type HitlClientLike, type DecideOperationObserver } from './hitlBridge.js';
2
- import { type ApprovalAskReason } from './approvalAskers.js';
3
- export type { ApprovalAskReason, ApprovalAskReasonByHook, ApprovalAskReasonByPolicy } from './approvalAskers.js';
2
+ import { type ApprovalAskReason, type ApprovalRequestedBy } from './approvalAskers.js';
3
+ export type { ApprovalAskReason, ApprovalAskReasonByHook, ApprovalAskReasonByPolicy, ApprovalRequestedBy } from './approvalAskers.js';
4
4
  import { readApprovalCardWord, type ApprovalCardWord } from './approvalCardReading.js';
5
5
  import { type ApprovalAllowRuleShadow } from './allowRuleShadow.js';
6
6
  import { CORE_PERSISTED_RULE_MATCHES } from '../generated/engineFactTables.js';
@@ -8,6 +8,7 @@ import type { UiLanguage } from '../env/uiLanguage.js';
8
8
  import type { SessionRuleInertReason } from './sessionPolicyWire.js';
9
9
  import { type ApprovalCardClaim } from './approvalHolds.js';
10
10
  import { type ApprovalResolution } from './approvalResolution.js';
11
+ import { type HostWithdrawal } from './hostWithdrawal.js';
11
12
  import { type ApprovalMandateWord } from '../gateVocabulary.js';
12
13
  import type { ToolPermissionRequest } from '../seatContract.js';
13
14
  import { type ApprovalDecidedByReading } from '../approvalDecidedByCapability.js';
@@ -28,6 +29,7 @@ export interface FsApprovalWireDeps {
28
29
  onPresented?: () => void;
29
30
  onDecideOperation?: DecideOperationObserver;
30
31
  approvalDecidedBy?: ApprovalDecidedByReading | undefined;
32
+ engineGeneration?: () => number;
31
33
  }
32
34
  export declare function structurallyEqual(a: unknown, b: unknown): boolean;
33
35
  export type { RuleOfferMatch };
@@ -88,13 +90,19 @@ export type ApprovalCardDecision = ApprovalCardAllowDecision | ApprovalCardDenyD
88
90
  } | {
89
91
  kind: typeof RETRACTED_CARD_DECISION_KIND;
90
92
  reason?: string;
91
- };
93
+ } | ({
94
+ kind: typeof WITHDRAWN_CARD_DECISION_KIND;
95
+ } & HostWithdrawal);
92
96
  export declare const RETRACTED_CARD_DECISION_KIND: "retracted";
97
+ export declare const WITHDRAWN_CARD_DECISION_KIND: "withdrawn";
98
+ export type ApprovalInputSource = 'record' | 'stream';
93
99
  export interface ApprovalCardRequest {
94
100
  toolName: string;
95
101
  args: object;
96
102
  callKey: string;
97
103
  toolCallId?: string;
104
+ taskId?: string;
105
+ sourceGeneration?: number;
98
106
  signal?: AbortSignal;
99
107
  workerBadge?: {
100
108
  name: string;
@@ -103,6 +111,7 @@ export interface ApprovalCardRequest {
103
111
  wireNote?: string;
104
112
  argsUnavailable?: true;
105
113
  argsRewritten?: true;
114
+ inputSource?: ApprovalInputSource;
106
115
  governanceForced?: true;
107
116
  delegation?: ToolApprovalDelegation;
108
117
  ruleOffers?: RuleOfferReading[];
@@ -132,6 +141,7 @@ export interface ApprovalCardRequest {
132
141
  classes?: readonly string[];
133
142
  agentId?: string;
134
143
  askReasons?: readonly ApprovalAskReason[];
144
+ requestedBy?: ApprovalRequestedBy;
135
145
  boundGrants?: BoundSkillGrantsWire;
136
146
  grantBinding?: ApprovalGrantBinding;
137
147
  unreadableEvidence?: readonly string[];
@@ -150,7 +160,6 @@ export interface ApprovalCardSupersedes {
150
160
  readonly priorAnswerOutcome?: 'not_sent' | 'not_accepted' | 'unconfirmed';
151
161
  }
152
162
  export interface ApprovalCardParkRow {
153
- readonly taskId: string;
154
163
  readonly gatedCallId?: string;
155
164
  readonly deadlineMs?: number;
156
165
  }
@@ -198,7 +207,7 @@ export declare function readApprovalMandate(v: {
198
207
  readonly mandate?: string;
199
208
  } | undefined | null): ApprovalMandateWord | undefined;
200
209
  export { readApprovalCardWord };
201
- export declare function toolPermissionRequestAskBits(card: object | null | undefined, requestId?: string): Pick<ToolPermissionRequest, 'mandated' | 'mandate' | 'origin' | 'ruleOffersAbsence' | 'askClass' | 'classes' | 'sessionRow'>;
210
+ export declare function toolPermissionRequestAskBits(card: object | null | undefined, requestId?: string): Pick<ToolPermissionRequest, 'mandated' | 'mandate' | 'origin' | 'ruleOffersAbsence' | 'askClass' | 'classes' | 'sessionRow' | 'probeReason' | 'probeCause' | 'feedbackCapable' | 'requestedBy' | 'frameReading' | 'inputSource'>;
202
211
  export declare function isFromSubagent(frame: ToolApprovalFrame): boolean;
203
212
  export type ToolApprovalRespondDecision = SdkToolApprovalDecision;
204
213
  export declare const RESPOND_DECISIONS: readonly ["allow", "allow_session", "deny"];
@@ -212,18 +221,27 @@ export interface RespondAnswerPayload extends Pick<RespondToolApprovalOpts, 'upd
212
221
  export interface DecideApprovePayload extends Pick<ApprovalCardAllowDecision, 'updatedInput'> {
213
222
  readonly decision: 'approve';
214
223
  readonly remember?: 'session';
224
+ readonly feedback?: string;
215
225
  }
216
226
  export interface DecideDenyPayload {
217
227
  readonly decision: 'deny';
218
228
  readonly reason: string;
219
229
  }
220
230
  export type DecideAnswerPayload = DecideApprovePayload | DecideDenyPayload;
231
+ export declare function allowNoteReadingOf(answer: object): {
232
+ readonly kind: 'text';
233
+ readonly text: string;
234
+ } | {
235
+ readonly kind: 'absent' | 'blank' | 'invalid';
236
+ };
221
237
  export declare function answerPayloadFor(answer: ApprovalCardDecision, lane: 'respond', caps?: AnswerPayloadCaps | null): RespondAnswerPayload | undefined;
222
238
  export declare function answerPayloadFor(answer: ApprovalCardDecision, lane: 'decide', caps?: AnswerPayloadCaps | null): DecideAnswerPayload | undefined;
223
239
  export interface AnswerCarriage {
224
240
  readonly allowNote: 'model' | 'none';
225
241
  }
226
- export declare function answerCarriage(card: Pick<ApprovalCardRequest, 'callKey'> | null | undefined): AnswerCarriage;
242
+ export declare function answerCarriage(card: Pick<ApprovalCardRequest, 'callKey' | 'parkRow' | 'taskId'> | null | undefined): AnswerCarriage;
243
+ export declare function cardIsOnParkRow(card: object | null | undefined): boolean;
244
+ export declare function allowNoteNotCarriedSentence(lang?: UiLanguage): string;
227
245
  export interface ApprovalAnswerCommitted {
228
246
  readonly callKey: string;
229
247
  readonly lane: AnswerPayloadLane;
@@ -242,8 +260,19 @@ export interface RespondToolApprovalOpts {
242
260
  decidedBy?: Extract<ApprovalDecidedBy, 'policy'>;
243
261
  }
244
262
  export type RespondToolApprovalFn = (approvalId: string, decision: ToolApprovalRespondDecision, opts?: RespondToolApprovalOpts) => Promise<ToolApprovalRespondAck | void>;
245
- export type ToolApprovalRespondAckView = ToolApprovalRespondAck;
263
+ export type ToolApprovalRespondAckView = ToolApprovalRespondAck | ToolApprovalRespondRedeemedView;
264
+ export interface ToolApprovalRespondRedeemedView {
265
+ readonly approvalId: string;
266
+ readonly askId: string;
267
+ readonly accepted: 'parked_redeemed';
268
+ readonly idempotent?: true;
269
+ readonly decision?: string;
270
+ readonly rememberApplied?: boolean;
271
+ }
246
272
  export declare function isToolApprovalRespondReplayed(ack: ToolApprovalRespondAckView): ack is ToolApprovalRespondReplayed;
273
+ export declare function isToolApprovalRespondParkedRedeemed(ack: object): ack is ToolApprovalRespondRedeemedView;
274
+ export declare function replayedFirstDecisionOf(ack: ToolApprovalRespondAckView | undefined): 'allow' | 'deny' | undefined;
275
+ export declare function settlementAckOf(read: ToolApprovalRespondAckView | undefined): ToolApprovalRespondAckView | undefined;
247
276
  export type { PersistedRuleAnchor };
248
277
  export declare function readToolApprovalRespondAck(v: unknown): ToolApprovalRespondAckView | undefined;
249
278
  export interface ToolApprovalRespondParkingView {
@@ -259,6 +288,25 @@ export type ToolApprovalParkingBodyReading = {
259
288
  readonly kind: 'claimed_unreadable';
260
289
  };
261
290
  export declare function readToolApprovalRespondParking(v: unknown): ToolApprovalParkingBodyReading | undefined;
291
+ export type ReplayVerdict = {
292
+ readonly kind: 'none';
293
+ } | {
294
+ readonly kind: 'replayed';
295
+ readonly firstDecision: 'allow' | 'deny';
296
+ readonly via: 'arm' | 'claim';
297
+ } | {
298
+ readonly kind: 'unreadable';
299
+ };
300
+ export declare function replayVerdictFrom(raw: {} | null | undefined, parsed: ToolApprovalRespondAckView | undefined, approvalId: string): ReplayVerdict;
301
+ export type ToolApprovalReplayVerdict = {
302
+ readonly kind: 'not_replay';
303
+ } | {
304
+ readonly kind: 'replayed';
305
+ readonly firstDecision: 'allow' | 'deny';
306
+ } | {
307
+ readonly kind: 'unreadable';
308
+ };
309
+ export declare function toolApprovalReplayVerdictOf(raw: {} | null | undefined, approvalId: string): ToolApprovalReplayVerdict;
262
310
  export declare function decisionAttributionKeyOf(reading: ApprovalDecidedByReading | undefined, denySettledBy: ApprovalDenySettledBy | undefined): {
263
311
  decidedBy: 'policy';
264
312
  } | {
@@ -284,12 +332,14 @@ export declare function approvalSupersedesDetail(card: Pick<ApprovalCardRequest,
284
332
  export declare function readDenialLimitFallback(v: unknown): DenialLimitFallback | undefined;
285
333
  export declare function readRuleOffers(v: unknown): RuleOfferReading[] | undefined;
286
334
  export declare function readRuleOfferSupply(offers: unknown): RuleOfferReading[] | undefined;
287
- export type ApprovalCardV1Facts = Pick<ApprovalCardRequest, 'toolName' | 'args'> & Pick<ApprovalCardRequest, 'toolCallId' | 'workerBadge' | 'wireNote' | 'argsUnavailable' | 'governanceForced' | 'delegation' | 'ruleOffersReadOnly' | 'inputHasBidi' | 'allowRuleShadow' | 'probeCause' | 'rememberRefused' | 'ruleEvidence' | 'requiresRealApproval' | 'ruleOffersAbsence' | 'denialLimitFallback' | 'askClass' | 'classes' | 'agentId' | 'askReasons' | 'grantBinding' | 'unreadableEvidence' | 'message' | 'approvalCard'>;
288
- export type ApprovalCardFacts = ApprovalCardV1Facts & Pick<ApprovalCardRequest, 'argsRewritten' | 'ruleOffers' | 'probeReason' | 'mandated' | 'mandate' | 'readRootCandidate' | 'origin' | 'boundGrants' | 'classifierNoRuling' | 'allowSessionCarried' | 'cardPayloadUnreadable' | 'cardPayloadUnreadableWhy'>;
335
+ export type ApprovalCardV1Facts = Pick<ApprovalCardRequest, 'toolName' | 'args'> & Pick<ApprovalCardRequest, 'toolCallId' | 'workerBadge' | 'wireNote' | 'argsUnavailable' | 'inputSource' | 'governanceForced' | 'delegation' | 'ruleOffersReadOnly' | 'inputHasBidi' | 'allowRuleShadow' | 'probeCause' | 'rememberRefused' | 'ruleEvidence' | 'requiresRealApproval' | 'ruleOffersAbsence' | 'denialLimitFallback' | 'askClass' | 'classes' | 'agentId' | 'askReasons' | 'grantBinding' | 'unreadableEvidence' | 'message' | 'approvalCard'>;
336
+ export type ApprovalCardFacts = ApprovalCardV1Facts & Pick<ApprovalCardRequest, 'argsRewritten' | 'ruleOffers' | 'probeReason' | 'mandated' | 'mandate' | 'readRootCandidate' | 'origin' | 'boundGrants' | 'classifierNoRuling' | 'allowSessionCarried' | 'cardPayloadUnreadable' | 'cardPayloadUnreadableWhy' | 'requestedBy'>;
289
337
  export interface ApprovalCardFrameFactsOptions {
290
338
  readonly streamArgs?: object;
291
339
  readonly argsUnavailable?: true;
292
340
  }
341
+ export type ApprovalCardHostBits = Readonly<Pick<ApprovalCardRequest, 'callKey' | 'taskId' | 'signal' | 'expiresInMs' | 'expiresAtMs' | 'serverNowMs' | 'receivedAtMs' | 'sourceGeneration'>>;
342
+ export declare function approvalCardRequestOf(facts: Readonly<ApprovalCardFacts>, host: ApprovalCardHostBits): ApprovalCardRequest | undefined;
293
343
  export declare function approvalCardFactsOfV1(card: object | null | undefined): Readonly<ApprovalCardV1Facts> | undefined;
294
344
  export declare function approvalCardFactsOfV1Frame(frame: object | null | undefined): Readonly<ApprovalCardFacts> | undefined;
295
345
  export declare function approvalCardFactsOfFrame(frame: object | null | undefined, opts?: ApprovalCardFrameFactsOptions | null): Readonly<ApprovalCardFacts> | undefined;
@@ -302,14 +352,13 @@ export interface ToolApprovalFrameLaneOpts {
302
352
  windowIsCurrent?: boolean;
303
353
  argsUnavailable?: true;
304
354
  }
305
- export declare function surfaceToolApprovalFrameAndRespond(frame: ToolApprovalFrame | ApprovalRequestFrame, respond: RespondToolApprovalFn, streamArgs: unknown | undefined, signal?: AbortSignal, lane?: ToolApprovalFrameLaneOpts, run?: {
355
+ export interface ToolApprovalFrameRunBits {
306
356
  readonly taskId?: string;
307
357
  readonly sessionId?: string;
308
- }): Promise<ApprovalResolution>;
309
- export declare function surfaceApprovalFrameWithId(frame: ToolApprovalFrame | ApprovalRequestFrame, approvalId: string, respond: RespondToolApprovalFn, streamArgs: Parameters<typeof surfaceToolApprovalFrameAndRespond>[2], signal: AbortSignal | undefined, lane: ToolApprovalFrameLaneOpts | undefined, run: {
310
- readonly taskId?: string;
311
- readonly sessionId?: string;
312
- } | undefined): Promise<ApprovalResolution>;
358
+ readonly sourceGeneration?: number;
359
+ }
360
+ export declare function surfaceToolApprovalFrameAndRespond(frame: ToolApprovalFrame | ApprovalRequestFrame, respond: RespondToolApprovalFn, streamArgs: unknown | undefined, signal?: AbortSignal, lane?: ToolApprovalFrameLaneOpts, run?: ToolApprovalFrameRunBits): Promise<ApprovalResolution>;
361
+ export declare function surfaceApprovalFrameWithId(frame: ToolApprovalFrame | ApprovalRequestFrame, approvalId: string, respond: RespondToolApprovalFn, streamArgs: Parameters<typeof surfaceToolApprovalFrameAndRespond>[2], signal: AbortSignal | undefined, lane: ToolApprovalFrameLaneOpts | undefined, run: ToolApprovalFrameRunBits | undefined): Promise<ApprovalResolution>;
313
362
  export interface ApprovalHolderIdentity {
314
363
  readonly approvalId?: string;
315
364
  readonly taskId?: string;