@sema-agent/client-core 0.97.1 → 0.99.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.
- package/CHANGELOG.md +607 -0
- package/README.md +96 -46
- package/dist/adapt/arms.d.ts +1 -0
- package/dist/adapt/arms.js +188 -53
- package/dist/adapt/ids.d.ts +12 -1
- package/dist/adapt/ids.js +59 -8
- package/dist/adapt/instanceLedger.d.ts +50 -0
- package/dist/adapt/instanceLedger.js +147 -0
- package/dist/adapt/panelTasks.d.ts +1 -1
- package/dist/adapt/panelTasks.js +2 -2
- package/dist/adapt/textStream.d.ts +1 -0
- package/dist/adapt/textStream.js +24 -7
- package/dist/adapt/toolCards.d.ts +27 -5
- package/dist/adapt/toolCards.js +39 -6
- package/dist/adapt/wireShapes.js +6 -2
- package/dist/adapt.d.ts +2 -0
- package/dist/adapt.js +8 -3
- package/dist/adapter/activeRunSelfHeal.d.ts +9 -3
- package/dist/adapter/activeRunSelfHeal.js +205 -313
- package/dist/adapter/downstream/eventToSdkMessage.d.ts +2 -5
- package/dist/adapter/downstream/eventToSdkMessage.js +77 -36
- package/dist/adapter/downstream/terminalToSdkResult.js +11 -4
- package/dist/adapter/downstream/turnUsageToModelUsage.d.ts +5 -2
- package/dist/adapter/downstream/turnUsageToModelUsage.js +2 -0
- package/dist/adapter/runStream.js +79 -48
- package/dist/adapter/types.d.ts +4 -4
- package/dist/adapter/types.js +2 -1
- package/dist/agentSession/backgroundView.js +2 -1
- package/dist/agentSession/engineAgentRegistryRead.d.ts +2 -2
- package/dist/agentSession/engineAgentRegistryRead.js +12 -13
- package/dist/agentSession/engineSessionBackgroundStop.js +16 -8
- package/dist/agentsWireCaps.d.ts +8 -11
- package/dist/agentsWireCaps.js +196 -194
- package/dist/approvalDecidedByCapability.d.ts +0 -4
- package/dist/approvalDecidedByCapability.js +0 -6
- package/dist/approvalsStreamLiveCapability.d.ts +0 -4
- package/dist/approvalsStreamLiveCapability.js +0 -6
- package/dist/assistantInbox.d.ts +34 -0
- package/dist/assistantInbox.js +118 -0
- package/dist/centerWiringCapability.js +9 -1
- package/dist/clientSlice.d.ts +0 -9
- package/dist/clientSlice.js +0 -3
- package/dist/cloudConfigWireCaps.d.ts +5 -3
- package/dist/cloudConfigWireCaps.js +106 -64
- package/dist/compensations.js +1 -1
- package/dist/connectorStatus.d.ts +21 -0
- package/dist/connectorStatus.js +112 -0
- package/dist/controlRouter.d.ts +18 -3
- package/dist/controlRouter.js +106 -67
- package/dist/coreValuePorts.d.ts +29 -4
- package/dist/coreValuePorts.js +10 -0
- package/dist/corruptSessionCopy.d.ts +2 -1
- package/dist/corruptSessionCopy.js +3 -3
- package/dist/decideReceipt.d.ts +2 -2
- package/dist/decideReceipt.js +5 -2
- package/dist/declared/supportFloorDeclared.js +3 -3
- package/dist/detachWire.js +3 -2
- package/dist/deviceExecutorManagementCapability.d.ts +0 -4
- package/dist/deviceExecutorManagementCapability.js +0 -6
- package/dist/deviceRebind.d.ts +49 -1
- package/dist/deviceRebind.js +221 -3
- package/dist/devicesFace.d.ts +34 -0
- package/dist/devicesFace.js +90 -0
- package/dist/displayUntrusted.d.ts +2 -0
- package/dist/displayUntrusted.js +253 -76
- package/dist/engineAgentAbsence.d.ts +1 -1
- package/dist/engineAgentPanelStore.d.ts +12 -4
- package/dist/engineAgentPanelStore.js +16 -11
- package/dist/engineCapReader.d.ts +2 -5
- package/dist/engineCapReader.js +8 -10
- package/dist/engineCapsCache.d.ts +12 -0
- package/dist/engineCapsCache.js +76 -18
- package/dist/engineCapsChange.d.ts +2 -0
- package/dist/engineCapsChange.js +9 -0
- package/dist/engineClosedSets.d.ts +1 -0
- package/dist/engineClosedSets.js +4 -1
- package/dist/engineErrorCodes.d.ts +11 -3
- package/dist/engineErrorCodes.js +11 -8
- package/dist/engineIdentity.d.ts +1 -0
- package/dist/engineIdentity.js +8 -0
- package/dist/engineRowRef.d.ts +28 -0
- package/dist/engineRowRef.js +114 -0
- package/dist/engineSessionMessages.d.ts +68 -0
- package/dist/engineSessionMessages.js +370 -0
- package/dist/engineTargetSeat.d.ts +27 -0
- package/dist/engineTargetSeat.js +199 -0
- package/dist/engineToolDirectory.d.ts +0 -9
- package/dist/engineToolDirectory.js +1 -94
- package/dist/engineUrl.d.ts +18 -0
- package/dist/engineUrl.js +52 -0
- package/dist/engineWireFor.js +3 -8
- package/dist/env/uiLanguage.d.ts +11 -1
- package/dist/env/uiLanguage.js +38 -2
- package/dist/eventLeg.d.ts +100 -0
- package/dist/eventLeg.js +305 -0
- package/dist/executionLaneCapability.d.ts +0 -4
- package/dist/executionLaneCapability.js +3 -16
- package/dist/fileHistoryCaptureCapability.d.ts +2 -5
- package/dist/fileHistoryCaptureCapability.js +13 -21
- package/dist/fileHistoryLegNotice.d.ts +2 -1
- package/dist/fileHistoryLegNotice.js +3 -3
- package/dist/fleet/fleetLedger.d.ts +0 -3
- package/dist/fleet/fleetLedger.js +21 -36
- package/dist/fleet/fleetProjection.d.ts +2 -2
- package/dist/fleet/fleetProjection.js +10 -8
- package/dist/frameBinding.d.ts +8 -0
- package/dist/frameBinding.js +35 -0
- package/dist/gateFailureCodes.d.ts +2 -0
- package/dist/gateFailureCodes.js +15 -0
- package/dist/gateOutcome.d.ts +3 -1
- package/dist/gateOutcome.js +41 -8
- package/dist/gateVocabulary.d.ts +10 -4
- package/dist/gateVocabulary.js +107 -47
- package/dist/generated/engineAskFaceTables.js +2 -2
- package/dist/generated/engineFactTables.d.ts +22 -3
- package/dist/generated/engineFactTables.js +51 -4
- package/dist/generated/engineNoticeTables.js +18 -3
- package/dist/generated/settingsSchemaFns.d.ts +6 -0
- package/dist/generated/settingsSchemaFns.js +57 -0
- package/dist/generated/settingsSchemaHooksClassifier.d.ts +2 -0
- package/dist/generated/settingsSchemaHooksClassifier.js +254 -0
- package/dist/generated/settingsSchemaTables.d.ts +1 -0
- package/dist/generated/settingsSchemaTables.js +4 -0
- package/dist/generated/settingsSchemaTypes.d.ts +105 -0
- package/dist/generated/settingsSchemaTypes.js +1 -0
- package/dist/generated/toolNameTables.d.ts +1 -0
- package/dist/generated/toolNameTables.js +1 -0
- package/dist/hitl/allowRuleShadow.d.ts +8 -2
- package/dist/hitl/allowRuleShadow.js +36 -29
- package/dist/hitl/approvalCardReading.d.ts +15 -0
- package/dist/hitl/approvalCardReading.js +154 -0
- package/dist/hitl/approvalCardReasons.d.ts +14 -0
- package/dist/hitl/approvalCardReasons.js +119 -0
- package/dist/hitl/approvalHolds.d.ts +50 -15
- package/dist/hitl/approvalHolds.js +177 -27
- package/dist/hitl/approvalResolution.d.ts +51 -26
- package/dist/hitl/approvalResolution.js +86 -122
- package/dist/hitl/approvalsFeed.js +6 -18
- package/dist/hitl/askClassPair.d.ts +2 -0
- package/dist/hitl/askClassPair.js +17 -0
- package/dist/hitl/askGateWire.d.ts +20 -2
- package/dist/hitl/askGateWire.js +50 -1
- package/dist/hitl/askParkRowRouting.d.ts +5 -0
- package/dist/hitl/askParkRowRouting.js +32 -1
- package/dist/hitl/askSettlementLine.d.ts +28 -0
- package/dist/hitl/askSettlementLine.js +99 -0
- package/dist/hitl/automaticAnswerVerdict.d.ts +3 -2
- package/dist/hitl/automaticAnswerVerdict.js +29 -13
- package/dist/hitl/crashConverged.d.ts +11 -20
- package/dist/hitl/crashConverged.js +56 -0
- package/dist/hitl/crashConvergedNotice.d.ts +6 -3
- package/dist/hitl/crashConvergedNotice.js +48 -24
- package/dist/hitl/decisionConflict.js +3 -10
- package/dist/hitl/decisionRefusal.d.ts +40 -1
- package/dist/hitl/decisionRefusal.js +199 -42
- package/dist/hitl/frameRouter.d.ts +5 -2
- package/dist/hitl/frameRouter.js +27 -24
- package/dist/hitl/gateLedger.d.ts +2 -0
- package/dist/hitl/gateLedger.js +50 -13
- package/dist/hitl/hitlBridge.d.ts +2 -2
- package/dist/hitl/hitlBridge.js +13 -10
- package/dist/hitl/livePendingAsk.d.ts +3 -3
- package/dist/hitl/livePendingAsk.js +7 -18
- package/dist/hitl/parkResolver.d.ts +2 -24
- package/dist/hitl/parkResolver.js +61 -97
- package/dist/hitl/persistedRulesWire.d.ts +25 -0
- package/dist/hitl/persistedRulesWire.js +104 -2
- package/dist/hitl/planReviewWire.d.ts +31 -13
- package/dist/hitl/planReviewWire.js +120 -78
- package/dist/hitl/refusedToolNameProse.d.ts +0 -1
- package/dist/hitl/refusedToolNameProse.js +0 -3
- package/dist/hitl/replayedApproval.d.ts +4 -3
- package/dist/hitl/replayedApproval.js +7 -4
- package/dist/hitl/sessionPolicyDeliverable.d.ts +2 -0
- package/dist/hitl/sessionPolicyDeliverable.js +48 -7
- package/dist/hitl/sessionPolicyWire.d.ts +34 -21
- package/dist/hitl/sessionPolicyWire.js +179 -70
- package/dist/hitl/standingRows.d.ts +20 -2
- package/dist/hitl/standingRows.js +69 -8
- package/dist/hitl/suspendedReopen.d.ts +2 -1
- package/dist/hitl/suspendedReopen.js +7 -10
- package/dist/hitl/toolApprovalWire.d.ts +103 -156
- package/dist/hitl/toolApprovalWire.js +661 -411
- package/dist/hookMatcherVerdict.d.ts +6 -1
- package/dist/hookMatcherVerdict.js +14 -7
- package/dist/hooksWireCaps.d.ts +2 -2
- package/dist/hooksWireCaps.js +174 -81
- package/dist/host.d.ts +21 -0
- package/dist/hostTurnSettings.d.ts +71 -0
- package/dist/hostTurnSettings.js +291 -0
- package/dist/humanTurn.d.ts +14 -1
- package/dist/humanTurn.js +100 -12
- package/dist/humanTurnRead.d.ts +2 -0
- package/dist/humanTurnRead.js +22 -1
- package/dist/i18n/messages.en.d.ts +703 -0
- package/dist/i18n/messages.en.js +701 -0
- package/dist/i18n/messages.zh.d.ts +3 -0
- package/dist/i18n/messages.zh.js +837 -0
- package/dist/i18n/translate.d.ts +25 -0
- package/dist/i18n/translate.js +127 -0
- package/dist/index.d.ts +78 -29
- package/dist/index.js +54 -18
- package/dist/inheritEnvCapability.d.ts +32 -0
- package/dist/inheritEnvCapability.js +104 -0
- package/dist/inheritEnvWire.d.ts +3 -2
- package/dist/inheritEnvWire.js +12 -14
- package/dist/interactiveHalt.js +17 -6
- package/dist/liveModelCatalog.d.ts +3 -3
- package/dist/liveModelCatalog.js +15 -13
- package/dist/liveQuestionStore.d.ts +2 -21
- package/dist/mcpLiveness.d.ts +2 -1
- package/dist/mcpPanel.d.ts +10 -1
- package/dist/mcpPanel.js +40 -13
- package/dist/mcpProbeCapability.d.ts +2 -1
- package/dist/mcpProbeCapability.js +7 -11
- package/dist/mcpProbeWire.d.ts +9 -2
- package/dist/mcpProbeWire.js +6 -1
- package/dist/mcpWireCaps.d.ts +47 -2
- package/dist/mcpWireCaps.js +164 -16
- package/dist/memoryEntriesWire.d.ts +4 -9
- package/dist/memoryEntriesWire.js +5 -10
- package/dist/model/modelSupplyRules.d.ts +0 -2
- package/dist/model/modelSupplyRules.js +3 -12
- package/dist/model/modelsPolicy.d.ts +0 -5
- package/dist/model/modelsPolicy.js +6 -36
- package/dist/model/onboardJudgement.d.ts +93 -0
- package/dist/model/onboardJudgement.js +415 -0
- package/dist/model/subagentModelWord.d.ts +31 -0
- package/dist/model/subagentModelWord.js +261 -0
- package/dist/model/tierVocabulary.d.ts +2 -0
- package/dist/model/tierVocabulary.js +17 -5
- package/dist/modelCapabilityProbe.d.ts +64 -0
- package/dist/modelCapabilityProbe.js +600 -0
- package/dist/modelIdentityResolvability.d.ts +3 -0
- package/dist/modelIdentityResolvability.js +26 -17
- package/dist/notifications.d.ts +6 -0
- package/dist/notifications.js +71 -23
- package/dist/outputStyleSeatCapability.d.ts +0 -3
- package/dist/outputStyleSeatCapability.js +0 -3
- package/dist/ownKey.d.ts +22 -0
- package/dist/ownKey.js +94 -3
- package/dist/panelReduce.d.ts +21 -10
- package/dist/panelReduce.js +728 -550
- package/dist/panelStateHolder.d.ts +3 -7
- package/dist/panelStateHolder.js +14 -130
- package/dist/peerLaneCapability.d.ts +0 -4
- package/dist/peerLaneCapability.js +0 -6
- package/dist/permissionRuleIssue.js +2 -0
- package/dist/permissionRulesWriteCapability.d.ts +2 -5
- package/dist/permissionRulesWriteCapability.js +8 -12
- package/dist/permissionWireCaps.d.ts +2 -2
- package/dist/permissionWireCaps.js +2 -0
- package/dist/permissionsAllowGrantCapability.d.ts +0 -4
- package/dist/permissionsAllowGrantCapability.js +0 -6
- package/dist/permissionsDeclaration.d.ts +0 -11
- package/dist/permissionsDeclaration.js +60 -53
- package/dist/pluginHooksWire.d.ts +46 -3
- package/dist/pluginHooksWire.js +219 -16
- package/dist/preemptWire.d.ts +44 -0
- package/dist/preemptWire.js +83 -0
- package/dist/printModelStatus.d.ts +63 -0
- package/dist/printModelStatus.js +155 -0
- package/dist/printToolResultFrame.js +15 -4
- package/dist/replayBody.d.ts +3 -0
- package/dist/replayBody.js +14 -0
- package/dist/request/taskRequest.d.ts +11 -6
- package/dist/request/taskRequest.js +112 -19
- package/dist/resumeRefusalCopy.d.ts +13 -9
- package/dist/resumeRefusalCopy.js +81 -118
- package/dist/retryStatus.d.ts +45 -0
- package/dist/retryStatus.js +185 -1
- package/dist/rewindArchiveCapability.d.ts +0 -4
- package/dist/rewindArchiveCapability.js +2 -10
- package/dist/rewindArchiveReading.d.ts +0 -1
- package/dist/rewindArchiveReading.js +0 -3
- package/dist/runCancelContext.d.ts +2 -1
- package/dist/runCancelContext.js +4 -2
- package/dist/runReattachPolicy.d.ts +31 -0
- package/dist/runReattachPolicy.js +46 -0
- package/dist/runTerminal.d.ts +3 -6
- package/dist/runTerminal.js +8 -9
- package/dist/sandboxWire.d.ts +3 -1
- package/dist/sandboxWire.js +76 -27
- package/dist/scenarioRefusal.d.ts +9 -0
- package/dist/scenarioRefusal.js +111 -0
- package/dist/scenarioWire.js +1 -1
- package/dist/seam.d.ts +48 -2
- package/dist/seam.js +25 -4
- package/dist/seatContract.d.ts +311 -18
- package/dist/seatContract.js +824 -100
- package/dist/selfOrchestrationDenial.js +7 -19
- package/dist/sessionIdSegment.d.ts +6 -0
- package/dist/sessionIdSegment.js +24 -0
- package/dist/sessionMemoryStatus.js +6 -11
- package/dist/sessionPolicyCapability.d.ts +2 -5
- package/dist/sessionPolicyCapability.js +8 -12
- package/dist/sessionSyncFileHistoryCapability.d.ts +0 -3
- package/dist/sessionSyncFileHistoryCapability.js +0 -3
- package/dist/settingsHooksSalvage.d.ts +44 -0
- package/dist/settingsHooksSalvage.js +211 -0
- package/dist/skillToolListsCapability.d.ts +2 -4
- package/dist/skillToolListsCapability.js +8 -9
- package/dist/sqlEngineCapability.d.ts +0 -4
- package/dist/sqlEngineCapability.js +0 -6
- package/dist/sseIdleTriage.js +3 -2
- package/dist/steerPriorityCapability.d.ts +0 -3
- package/dist/steerPriorityCapability.js +0 -3
- package/dist/streamDrainingLegs.d.ts +4 -0
- package/dist/streamDrainingLegs.js +6 -1
- package/dist/subagent/engineCompactWire.d.ts +0 -1
- package/dist/subagent/engineCompactWire.js +7 -5
- package/dist/subagent/engineSubagentResume.js +15 -9
- package/dist/subagent/engineTaskHandleWire.js +4 -7
- package/dist/subagentContentStore.d.ts +3 -0
- package/dist/subagentContentStore.js +22 -10
- package/dist/submitReopen.d.ts +24 -0
- package/dist/submitReopen.js +75 -0
- package/dist/terminalStatuses.d.ts +3 -0
- package/dist/terminalStatuses.js +10 -2
- package/dist/toolHistoryMismatch.js +3 -2
- package/dist/toolResult.d.ts +10 -1
- package/dist/toolResult.js +34 -6
- package/dist/toolRoster.d.ts +3 -4
- package/dist/toolRoster.js +21 -22
- package/dist/turnFailurePresentation.d.ts +39 -0
- package/dist/turnFailurePresentation.js +402 -0
- package/dist/usageAnalytics.js +6 -11
- package/dist/userAttachmentEnvelope.d.ts +1 -0
- package/dist/userAttachmentEnvelope.js +37 -7
- package/dist/userAttachmentSeat.d.ts +21 -0
- package/dist/userAttachmentSeat.js +75 -0
- package/dist/userInvokedSkillsCapability.d.ts +11 -4
- package/dist/userInvokedSkillsCapability.js +31 -10
- package/dist/webSearchBackendCapability.d.ts +0 -4
- package/dist/webSearchBackendCapability.js +0 -6
- package/dist/wireErrorTriage.d.ts +7 -0
- package/dist/wireErrorTriage.js +26 -23
- package/dist/wireFailureShape.d.ts +62 -5
- package/dist/wireFailureShape.js +106 -5
- package/dist/wireRefusalCopy.d.ts +25 -3
- package/dist/wireRefusalCopy.js +74 -80
- package/dist/workflowsJournalCapability.d.ts +2 -5
- package/dist/workflowsJournalCapability.js +8 -12
- package/dist/writeProtectionCapability.d.ts +0 -4
- package/dist/writeProtectionCapability.js +0 -6
- package/docs/INTEGRATION-CLIENTS.md +1775 -56
- package/package.json +6 -5
- package/dist/attachmentSeatCapability.d.ts +0 -12
- package/dist/attachmentSeatCapability.js +0 -23
- package/dist/hitl/approvalOutcomeNote.d.ts +0 -10
- package/dist/hitl/approvalOutcomeNote.js +0 -29
- package/dist/sessionReadRedactionCapability.d.ts +0 -13
- package/dist/sessionReadRedactionCapability.js +0 -35
|
@@ -1,15 +1,18 @@
|
|
|
1
|
-
import type { ApprovalHolderIdentity
|
|
1
|
+
import type { ApprovalHolderIdentity } from './toolApprovalWire.js';
|
|
2
|
+
import type { ApprovalResolution, ApprovalResolutionLane } from './approvalResolution.js';
|
|
2
3
|
export declare const APPROVAL_SETTLED_HOWS: readonly ["answered", "interrupted", "closed_by_engine"];
|
|
3
4
|
export type ApprovalSettledHow = (typeof APPROVAL_SETTLED_HOWS)[number];
|
|
4
5
|
export declare const SETTLED_APPROVALS_MAX_ENTRIES = 4096;
|
|
5
6
|
export interface SettledApprovalEntry {
|
|
6
7
|
readonly how: ApprovalSettledHow;
|
|
7
8
|
readonly parked: boolean;
|
|
8
|
-
readonly outcome:
|
|
9
|
+
readonly outcome: ApprovalResolution;
|
|
9
10
|
}
|
|
10
11
|
export interface DurableDecisionHold {
|
|
11
12
|
readonly lane: 'durable';
|
|
12
|
-
readonly
|
|
13
|
+
readonly identity: HoldIdentity;
|
|
14
|
+
phase: 'card' | 'respond';
|
|
15
|
+
readonly outcome: Promise<ApprovalResolution>;
|
|
13
16
|
presented: boolean;
|
|
14
17
|
readonly interrupt: () => void;
|
|
15
18
|
readonly cardSignal: AbortSignal;
|
|
@@ -18,7 +21,7 @@ export interface DurableDecisionHold {
|
|
|
18
21
|
export interface LiveCardHold {
|
|
19
22
|
readonly lane: 'live';
|
|
20
23
|
readonly identity: LiveCardIdentity;
|
|
21
|
-
readonly outcome: Promise<
|
|
24
|
+
readonly outcome: Promise<ApprovalResolution>;
|
|
22
25
|
phase: 'card' | 'respond';
|
|
23
26
|
superseded?: {
|
|
24
27
|
readonly parked: boolean;
|
|
@@ -27,17 +30,47 @@ export interface LiveCardHold {
|
|
|
27
30
|
readonly interrupt: () => void;
|
|
28
31
|
trailing?: Promise<boolean>;
|
|
29
32
|
}
|
|
30
|
-
export
|
|
31
|
-
|
|
33
|
+
export interface HostCardHold {
|
|
34
|
+
readonly lane: 'host';
|
|
35
|
+
readonly identity: HoldIdentity;
|
|
36
|
+
phase: 'card' | 'respond';
|
|
37
|
+
readonly released: Promise<'answered' | 'interrupted' | undefined>;
|
|
38
|
+
}
|
|
39
|
+
export type ApprovalHold = DurableDecisionHold | LiveCardHold | HostCardHold;
|
|
40
|
+
export interface LiveCardIdentity extends HoldIdentity {
|
|
32
41
|
readonly approvalId: string;
|
|
33
|
-
readonly toolCallId?: string;
|
|
34
|
-
readonly taskId?: string;
|
|
35
|
-
readonly sessionId?: string;
|
|
36
42
|
}
|
|
37
|
-
export
|
|
43
|
+
export interface HoldIdentity extends ApprovalHolderIdentity {
|
|
44
|
+
readonly askSig?: string;
|
|
45
|
+
}
|
|
46
|
+
export declare function approvalHoldFor(who: HoldIdentity, except?: (h: ApprovalHold) => boolean): ApprovalHold | undefined;
|
|
38
47
|
export declare function settledForDurableLane(entry: SettledApprovalEntry | undefined): boolean;
|
|
39
|
-
export declare function liveCardAnsweredHow(
|
|
40
|
-
export
|
|
48
|
+
export declare function liveCardAnsweredHow(r: ApprovalResolution): 'answered' | 'interrupted' | undefined;
|
|
49
|
+
export type ApprovalHolderWait = {
|
|
50
|
+
readonly kind: 'settled';
|
|
51
|
+
readonly how: 'answered' | 'interrupted';
|
|
52
|
+
readonly outcome: ApprovalResolution;
|
|
53
|
+
} | {
|
|
54
|
+
readonly kind: 'free';
|
|
55
|
+
} | {
|
|
56
|
+
readonly kind: 'left';
|
|
57
|
+
};
|
|
58
|
+
export declare function awaitApprovalHolder(hold: ApprovalHold, signal: AbortSignal | undefined, asker: ApprovalResolutionLane): Promise<ApprovalHolderWait>;
|
|
59
|
+
export interface HostApprovalCardHold {
|
|
60
|
+
readonly identity: ApprovalHolderIdentity;
|
|
61
|
+
sending(): void;
|
|
62
|
+
release(settled?: 'answered' | 'interrupted'): void;
|
|
63
|
+
}
|
|
64
|
+
export type ApprovalCardClaim = {
|
|
65
|
+
readonly kind: 'held';
|
|
66
|
+
readonly hold: HostApprovalCardHold;
|
|
67
|
+
} | {
|
|
68
|
+
readonly kind: 'joined';
|
|
69
|
+
readonly outcome: ApprovalResolution;
|
|
70
|
+
} | {
|
|
71
|
+
readonly kind: 'aborted';
|
|
72
|
+
};
|
|
73
|
+
export declare function claimApprovalCardFor(who: HoldIdentity, signal: AbortSignal | undefined): Promise<ApprovalCardClaim>;
|
|
41
74
|
export interface ApprovalDecisionHoldTable {
|
|
42
75
|
readonly inFlight: Map<string, ApprovalHold>;
|
|
43
76
|
readonly settled: Map<string, DurableSettledHold>;
|
|
@@ -54,8 +87,10 @@ export declare function settledApprovalOf(approvalId: string | undefined): Settl
|
|
|
54
87
|
export declare function clearSettledApprovals(): void;
|
|
55
88
|
export declare function anyApprovalSettled(): boolean;
|
|
56
89
|
export declare function noteEngineClosedApproval(approvalId: string, parked: boolean): void;
|
|
57
|
-
export declare function
|
|
90
|
+
export declare function settleEngineClosedApproval(frame: object, parked: boolean): boolean;
|
|
91
|
+
export declare function noteHolderSettledApproval(approvalId: string, how: 'answered' | 'interrupted', outcome: ApprovalResolution): void;
|
|
92
|
+
export declare function settledLiveCardOutcome(approvalId: string): ApprovalResolution | undefined;
|
|
58
93
|
export declare function liveCardHoldOf(key: string): LiveCardHold | undefined;
|
|
59
|
-
export declare function holdLiveCard(identity: LiveCardIdentity, callerSignal: AbortSignal | undefined, present: (hold: LiveCardHold) => Promise<
|
|
60
|
-
export declare function joinLiveCard(hold: LiveCardHold, signal: AbortSignal | undefined): Promise<
|
|
94
|
+
export declare function holdLiveCard(identity: LiveCardIdentity, callerSignal: AbortSignal | undefined, present: (hold: LiveCardHold) => Promise<ApprovalResolution>): Promise<ApprovalResolution>;
|
|
95
|
+
export declare function joinLiveCard(hold: LiveCardHold, signal: AbortSignal | undefined): Promise<ApprovalResolution>;
|
|
61
96
|
export declare function supersedeLiveCard(key: string, parked: boolean): boolean;
|
|
@@ -1,51 +1,179 @@
|
|
|
1
1
|
import { hostLog } from '../host.js';
|
|
2
2
|
import { liveFrameCallKey } from './gateIdentity.js';
|
|
3
|
-
import {
|
|
3
|
+
import { decideReceiptReopen, readDecideReceipt } from '../decideReceipt.js';
|
|
4
4
|
export const APPROVAL_SETTLED_HOWS = Object.freeze(['answered', 'interrupted', 'closed_by_engine']);
|
|
5
5
|
export const SETTLED_APPROVALS_MAX_ENTRIES = 4096;
|
|
6
6
|
const nonEmpty = (v) => typeof v === 'string' && v !== '';
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
7
|
+
function sameApproval(who, h) {
|
|
8
|
+
const id = h.identity;
|
|
9
|
+
if (nonEmpty(who.approvalId) && nonEmpty(id.approvalId))
|
|
10
|
+
return who.approvalId === id.approvalId;
|
|
11
|
+
if (h.phase !== 'card')
|
|
12
|
+
return false;
|
|
13
|
+
if (!nonEmpty(who.taskId) || !nonEmpty(who.toolCallId) || id.taskId !== who.taskId || id.toolCallId !== who.toolCallId)
|
|
14
|
+
return false;
|
|
15
|
+
if (nonEmpty(who.sessionId) && nonEmpty(id.sessionId) && id.sessionId !== who.sessionId)
|
|
16
|
+
return false;
|
|
17
|
+
return !(nonEmpty(who.askSig) && nonEmpty(id.askSig) && id.askSig !== who.askSig);
|
|
18
|
+
}
|
|
19
|
+
export function approvalHoldFor(who, except) {
|
|
12
20
|
for (const h of approvalDecisionHolds.inFlight.values()) {
|
|
13
|
-
if (h
|
|
21
|
+
if (except?.(h) === true)
|
|
14
22
|
continue;
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
continue;
|
|
18
|
-
if (nonEmpty(who.sessionId) && nonEmpty(id.sessionId) && id.sessionId !== who.sessionId)
|
|
19
|
-
continue;
|
|
20
|
-
return h;
|
|
23
|
+
if (sameApproval(who, h))
|
|
24
|
+
return h;
|
|
21
25
|
}
|
|
22
26
|
return undefined;
|
|
23
27
|
}
|
|
24
28
|
export function settledForDurableLane(entry) {
|
|
25
29
|
return entry !== undefined && !entry.parked;
|
|
26
30
|
}
|
|
27
|
-
export function liveCardAnsweredHow(
|
|
28
|
-
return answeredHowOf(approvalResolutionOf(o));
|
|
29
|
-
}
|
|
30
|
-
function answeredHowOf(r) {
|
|
31
|
+
export function liveCardAnsweredHow(r) {
|
|
31
32
|
if (r.kind === 'decided')
|
|
32
33
|
return 'answered';
|
|
33
34
|
return r.kind === 'unsettled' && r.cause === 'interrupted' ? 'interrupted' : undefined;
|
|
34
35
|
}
|
|
35
|
-
|
|
36
|
+
const HOLDER_FREE = Object.freeze({ kind: 'free' });
|
|
37
|
+
function nothingSentHere(asker) {
|
|
38
|
+
return Object.freeze({ kind: 'not_sent', lane: asker, cause: 'retracted' });
|
|
39
|
+
}
|
|
40
|
+
function interruptedThere(asker) {
|
|
41
|
+
return Object.freeze({ kind: 'unsettled', lane: asker, cause: 'interrupted' });
|
|
42
|
+
}
|
|
43
|
+
export async function awaitApprovalHolder(hold, signal, asker) {
|
|
44
|
+
if (hold.lane === 'host')
|
|
45
|
+
return awaitHostHolder(hold, signal, asker);
|
|
36
46
|
const unsubscribe = followCallerSignal(signal, hold.interrupt);
|
|
37
|
-
let o;
|
|
38
47
|
try {
|
|
39
|
-
|
|
48
|
+
if (hold.lane === 'live') {
|
|
49
|
+
let o;
|
|
50
|
+
try {
|
|
51
|
+
o = await hold.outcome;
|
|
52
|
+
}
|
|
53
|
+
catch {
|
|
54
|
+
return HOLDER_FREE;
|
|
55
|
+
}
|
|
56
|
+
const stillHeld = approvalDecisionHolds.inFlight.get(liveFrameCallKey(hold.identity.approvalId)) === hold;
|
|
57
|
+
const entry = settledApprovalOf(hold.identity.approvalId);
|
|
58
|
+
if (!stillHeld && !settledForDurableLane(entry))
|
|
59
|
+
return HOLDER_FREE;
|
|
60
|
+
return Object.freeze({ kind: 'settled', how: entry?.how === 'answered' ? 'answered' : 'interrupted', outcome: o });
|
|
61
|
+
}
|
|
62
|
+
let r;
|
|
63
|
+
try {
|
|
64
|
+
r = await hold.outcome;
|
|
65
|
+
}
|
|
66
|
+
catch {
|
|
67
|
+
return HOLDER_FREE;
|
|
68
|
+
}
|
|
69
|
+
if (r.kind === 'decided') {
|
|
70
|
+
if (decideReceiptReopen(r.receipt) !== null)
|
|
71
|
+
return HOLDER_FREE;
|
|
72
|
+
return Object.freeze({ kind: 'settled', how: 'answered', outcome: r });
|
|
73
|
+
}
|
|
74
|
+
if (r.kind !== 'unsettled' || r.cause !== 'interrupted' || hold.trailing === undefined)
|
|
75
|
+
return HOLDER_FREE;
|
|
76
|
+
const landed = await hold.trailing.then((raw) => decideReceiptReopen(readDecideReceipt(raw)) === null, () => false);
|
|
77
|
+
return landed ? Object.freeze({ kind: 'settled', how: 'interrupted', outcome: r }) : HOLDER_FREE;
|
|
78
|
+
}
|
|
79
|
+
finally {
|
|
80
|
+
unsubscribe();
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
async function awaitHostHolder(hold, signal, asker) {
|
|
84
|
+
let leave = () => { };
|
|
85
|
+
const left = new Promise((resolve) => {
|
|
86
|
+
leave = () => resolve('left');
|
|
87
|
+
});
|
|
88
|
+
const unsubscribe = followCallerSignal(signal, leave);
|
|
89
|
+
try {
|
|
90
|
+
const r = await Promise.race([hold.released, left]);
|
|
91
|
+
if (r === 'left')
|
|
92
|
+
return Object.freeze({ kind: 'left' });
|
|
93
|
+
if (r === undefined)
|
|
94
|
+
return HOLDER_FREE;
|
|
95
|
+
return Object.freeze({ kind: 'settled', how: r, outcome: r === 'interrupted' ? interruptedThere(asker) : nothingSentHere(asker) });
|
|
96
|
+
}
|
|
97
|
+
finally {
|
|
98
|
+
unsubscribe();
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
function holdHostCard(identity, signal) {
|
|
102
|
+
const h = approvalDecisionHolds;
|
|
103
|
+
const key = `hitl-host:${++h.clock}`;
|
|
104
|
+
let resolveReleased = () => { };
|
|
105
|
+
const released = new Promise((resolve) => {
|
|
106
|
+
resolveReleased = resolve;
|
|
107
|
+
});
|
|
108
|
+
const frozen = Object.freeze({ ...identity });
|
|
109
|
+
const hold = { lane: 'host', identity: frozen, phase: 'card', released };
|
|
110
|
+
h.inFlight.set(key, hold);
|
|
111
|
+
let done = false;
|
|
112
|
+
let stopFollowing = () => { };
|
|
113
|
+
const release = (settled) => {
|
|
114
|
+
if (done)
|
|
115
|
+
return;
|
|
116
|
+
done = true;
|
|
117
|
+
stopFollowing();
|
|
118
|
+
const how = settled === 'answered' || settled === 'interrupted' ? settled : undefined;
|
|
119
|
+
if (how !== undefined && nonEmpty(frozen.approvalId))
|
|
120
|
+
noteSettled(frozen.approvalId, how, false, how === 'interrupted' ? interruptedThere('decide') : nothingSentHere('decide'), true);
|
|
121
|
+
if (h.inFlight.get(key) === hold)
|
|
122
|
+
h.inFlight.delete(key);
|
|
123
|
+
resolveReleased(how);
|
|
124
|
+
};
|
|
125
|
+
const handle = Object.freeze({
|
|
126
|
+
identity: frozen,
|
|
127
|
+
sending: () => {
|
|
128
|
+
if (done)
|
|
129
|
+
return;
|
|
130
|
+
hold.phase = 'respond';
|
|
131
|
+
stopFollowing();
|
|
132
|
+
},
|
|
133
|
+
release,
|
|
134
|
+
});
|
|
135
|
+
stopFollowing = followCallerSignal(signal, () => {
|
|
136
|
+
if (!done && hold.phase === 'card')
|
|
137
|
+
release();
|
|
138
|
+
});
|
|
139
|
+
return handle;
|
|
140
|
+
}
|
|
141
|
+
function callerSignalAborted(signal) {
|
|
142
|
+
if (signal === undefined || signal === null)
|
|
143
|
+
return false;
|
|
144
|
+
try {
|
|
145
|
+
return signal.aborted === true;
|
|
40
146
|
}
|
|
41
147
|
catch {
|
|
42
|
-
return
|
|
148
|
+
return false;
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
export async function claimApprovalCardFor(who, signal) {
|
|
152
|
+
let leave = () => { };
|
|
153
|
+
const left = new Promise((resolve) => {
|
|
154
|
+
leave = () => resolve('aborted');
|
|
155
|
+
});
|
|
156
|
+
const unsubscribe = followCallerSignal(signal, leave);
|
|
157
|
+
try {
|
|
158
|
+
for (;;) {
|
|
159
|
+
if (callerSignalAborted(signal))
|
|
160
|
+
return Object.freeze({ kind: 'aborted' });
|
|
161
|
+
const entry = settledApprovalOf(who.approvalId);
|
|
162
|
+
if (settledForDurableLane(entry) && entry !== undefined)
|
|
163
|
+
return Object.freeze({ kind: 'joined', outcome: { ...entry.outcome, joinedInFlight: true } });
|
|
164
|
+
const holder = approvalHoldFor(who);
|
|
165
|
+
if (holder === undefined)
|
|
166
|
+
return Object.freeze({ kind: 'held', hold: holdHostCard(who, signal) });
|
|
167
|
+
const wait = await Promise.race([awaitApprovalHolder(holder, undefined, 'decide'), left]);
|
|
168
|
+
if (wait === 'aborted')
|
|
169
|
+
return Object.freeze({ kind: 'aborted' });
|
|
170
|
+
if (wait.kind === 'settled')
|
|
171
|
+
return Object.freeze({ kind: 'joined', outcome: { ...wait.outcome, joinedInFlight: true } });
|
|
172
|
+
}
|
|
43
173
|
}
|
|
44
174
|
finally {
|
|
45
175
|
unsubscribe();
|
|
46
176
|
}
|
|
47
|
-
const stillHeld = approvalDecisionHolds.inFlight.get(liveFrameCallKey(hold.identity.approvalId)) === hold;
|
|
48
|
-
return stillHeld || settledForDurableLane(settledApprovalOf(hold.identity.approvalId)) ? { ...o, joinedInFlight: true } : undefined;
|
|
49
177
|
}
|
|
50
178
|
export const approvalDecisionHolds = { inFlight: new Map(), settled: new Map(), openReads: new Set(), outcomes: new Map(), clock: 0 };
|
|
51
179
|
export function settledApprovalOf(approvalId) {
|
|
@@ -57,14 +185,17 @@ export function clearSettledApprovals() {
|
|
|
57
185
|
export function anyApprovalSettled() {
|
|
58
186
|
return approvalDecisionHolds.outcomes.size > 0;
|
|
59
187
|
}
|
|
60
|
-
function noteSettled(approvalId, how, parked, outcome) {
|
|
188
|
+
function noteSettled(approvalId, how, parked, outcome, upgradesParked = false) {
|
|
61
189
|
if (typeof approvalId !== 'string' || approvalId === '')
|
|
62
190
|
return;
|
|
63
191
|
if (!APPROVAL_SETTLED_HOWS.includes(how))
|
|
64
192
|
return;
|
|
65
193
|
const t = approvalDecisionHolds.outcomes;
|
|
66
|
-
|
|
194
|
+
const prev = t.get(approvalId);
|
|
195
|
+
if (prev !== undefined && !(upgradesParked && prev.parked && how !== 'closed_by_engine'))
|
|
67
196
|
return;
|
|
197
|
+
if (prev !== undefined)
|
|
198
|
+
t.delete(approvalId);
|
|
68
199
|
t.set(approvalId, Object.freeze({ how, parked, outcome: Object.freeze({ ...outcome }) }));
|
|
69
200
|
while (t.size > SETTLED_APPROVALS_MAX_ENTRIES) {
|
|
70
201
|
const oldest = t.keys().next();
|
|
@@ -73,9 +204,28 @@ function noteSettled(approvalId, how, parked, outcome) {
|
|
|
73
204
|
t.delete(oldest.value);
|
|
74
205
|
}
|
|
75
206
|
}
|
|
76
|
-
|
|
207
|
+
function engineClosedOutcome() {
|
|
208
|
+
return Object.freeze({ kind: 'not_sent', lane: 'respond', cause: 'retracted' });
|
|
209
|
+
}
|
|
77
210
|
export function noteEngineClosedApproval(approvalId, parked) {
|
|
78
|
-
noteSettled(approvalId, 'closed_by_engine', parked,
|
|
211
|
+
noteSettled(approvalId, 'closed_by_engine', parked, engineClosedOutcome());
|
|
212
|
+
}
|
|
213
|
+
export function settleEngineClosedApproval(frame, parked) {
|
|
214
|
+
let id;
|
|
215
|
+
try {
|
|
216
|
+
const d = typeof frame === 'object' && frame !== null ? Object.getOwnPropertyDescriptor(frame, 'approvalId') : undefined;
|
|
217
|
+
id = d !== undefined && Object.hasOwn(d, 'value') ? d.value : undefined;
|
|
218
|
+
}
|
|
219
|
+
catch {
|
|
220
|
+
return false;
|
|
221
|
+
}
|
|
222
|
+
if (!nonEmpty(id))
|
|
223
|
+
return false;
|
|
224
|
+
noteEngineClosedApproval(id, parked);
|
|
225
|
+
return supersedeLiveCard(liveFrameCallKey(id), parked);
|
|
226
|
+
}
|
|
227
|
+
export function noteHolderSettledApproval(approvalId, how, outcome) {
|
|
228
|
+
noteSettled(approvalId, how, false, outcome, true);
|
|
79
229
|
}
|
|
80
230
|
export function settledLiveCardOutcome(approvalId) {
|
|
81
231
|
const e = settledApprovalOf(approvalId);
|
|
@@ -1,36 +1,61 @@
|
|
|
1
1
|
import type { DecideReceiptView } from '../decideReceipt.js';
|
|
2
|
-
import type
|
|
3
|
-
import type {
|
|
4
|
-
|
|
2
|
+
import { type HitlSafetyCode } from './hitlBridge.js';
|
|
3
|
+
import type { AskAnsweredOutput } from './gateLedger.js';
|
|
4
|
+
import type { ApprovalDenySettledBy, ToolApprovalRespondAckView, ToolApprovalRespondDecision, ToolApprovalRespondParkingView } from './toolApprovalWire.js';
|
|
5
|
+
import { type DecisionRefusalReading, type RefusalRouteContext } from './decisionRefusal.js';
|
|
6
|
+
export declare const APPROVAL_RESOLUTION_LANES: readonly ["respond", "decide", "ask"];
|
|
7
|
+
export type ApprovalResolutionLane = (typeof APPROVAL_RESOLUTION_LANES)[number];
|
|
8
|
+
export declare const APPROVAL_NOT_SENT_CAUSES: readonly ["retracted", "edit_refused", "no_pending", "wrong_gate", "fetch_failed", "no_input", "card_unavailable", "safety_stop"];
|
|
5
9
|
export type ApprovalNotSentCause = (typeof APPROVAL_NOT_SENT_CAUSES)[number];
|
|
6
|
-
export declare const APPROVAL_UNSETTLED_CAUSES: readonly ["engine_refused", "
|
|
10
|
+
export declare const APPROVAL_UNSETTLED_CAUSES: readonly ["engine_refused", "engine_error", "no_answer", "transport_exhausted", "parking_in_progress", "interrupted", "orchestration", "unreadable"];
|
|
7
11
|
export type ApprovalUnsettledCause = (typeof APPROVAL_UNSETTLED_CAUSES)[number];
|
|
8
|
-
export interface
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
receipt?: DecideReceiptView;
|
|
13
|
-
ack?: ToolApprovalRespondAckView;
|
|
12
|
+
export interface ApprovalDenyFacts {
|
|
13
|
+
readonly settledBy?: ApprovalDenySettledBy;
|
|
14
|
+
readonly reason?: string;
|
|
15
|
+
readonly attributionKey?: 'dropped' | 'renamed';
|
|
14
16
|
}
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
detail?: string;
|
|
17
|
+
interface ApprovalResolutionBase {
|
|
18
|
+
readonly lane: ApprovalResolutionLane;
|
|
19
|
+
readonly gatedCallId?: string;
|
|
20
|
+
readonly joinedInFlight?: true;
|
|
20
21
|
}
|
|
21
|
-
export interface
|
|
22
|
-
kind: '
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
22
|
+
export interface ApprovalResolutionDecided extends ApprovalResolutionBase {
|
|
23
|
+
readonly kind: 'decided';
|
|
24
|
+
readonly decision: ToolApprovalRespondDecision;
|
|
25
|
+
readonly deny?: ApprovalDenyFacts;
|
|
26
|
+
readonly receipt?: DecideReceiptView;
|
|
27
|
+
readonly ack?: ToolApprovalRespondAckView;
|
|
28
|
+
readonly answered?: AskAnsweredOutput;
|
|
29
|
+
}
|
|
30
|
+
export interface ApprovalResolutionNotSent extends ApprovalResolutionBase {
|
|
31
|
+
readonly kind: 'not_sent';
|
|
32
|
+
readonly cause: ApprovalNotSentCause;
|
|
33
|
+
readonly safetyCode?: Exclude<HitlSafetyCode, 'binding_mismatch' | 'no_pending' | 'wrong_gate'>;
|
|
34
|
+
readonly detail?: string;
|
|
35
|
+
}
|
|
36
|
+
export interface ApprovalResolutionUnsettled extends ApprovalResolutionBase {
|
|
37
|
+
readonly kind: 'unsettled';
|
|
38
|
+
readonly cause: ApprovalUnsettledCause;
|
|
39
|
+
readonly safetyCode?: 'binding_mismatch';
|
|
40
|
+
readonly refusal?: DecisionRefusalReading;
|
|
41
|
+
readonly parking?: ToolApprovalRespondParkingView;
|
|
42
|
+
readonly detail?: string;
|
|
30
43
|
}
|
|
31
44
|
export type ApprovalResolution = ApprovalResolutionDecided | ApprovalResolutionNotSent | ApprovalResolutionUnsettled;
|
|
32
|
-
export type ApprovalLegOutcome = FsApprovalOutcome | ToolApprovalFrameOutcome;
|
|
33
|
-
export declare function approvalResolutionOf(outcome: ApprovalLegOutcome): ApprovalResolution;
|
|
34
45
|
export declare function isApprovalDecided(r: ApprovalResolution): r is ApprovalResolutionDecided;
|
|
35
46
|
export declare function approvalNotSentCause(r: ApprovalResolution): ApprovalNotSentCause | undefined;
|
|
36
47
|
export declare function approvalUnsettledCause(r: ApprovalResolution): ApprovalUnsettledCause | undefined;
|
|
48
|
+
export declare const APPROVAL_NOTE_RETRACTED_DETAIL = "the card was retracted (this host no longer has a decision port for it)";
|
|
49
|
+
export declare const APPROVAL_NOTE_EDIT_REFUSED_DETAIL = "edits are not accepted on this card";
|
|
50
|
+
export declare function approvalResolutionDetail(r: ApprovalResolution): string | undefined;
|
|
51
|
+
export declare function unsettledCauseOfReading(reading: DecisionRefusalReading): 'engine_refused' | 'engine_error' | 'no_answer';
|
|
52
|
+
export interface DecisionFailureMint {
|
|
53
|
+
readonly lane: ApprovalResolutionLane;
|
|
54
|
+
readonly route: NonNullable<RefusalRouteContext['route']>;
|
|
55
|
+
readonly gatedCallId?: string | undefined;
|
|
56
|
+
readonly detail?: string | undefined;
|
|
57
|
+
readonly attributionCarried?: boolean | undefined;
|
|
58
|
+
}
|
|
59
|
+
export declare function resolutionOfDecisionFailure(e: {} | null | undefined, m: DecisionFailureMint): ApprovalResolution;
|
|
60
|
+
export declare function joinedResolution(r: ApprovalResolution, gatedCallId?: string): ApprovalResolution;
|
|
61
|
+
export {};
|