@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.
- package/CHANGELOG.md +452 -0
- package/README.md +172 -120
- package/dist/adapt/arms.js +51 -16
- package/dist/adapt/textStream.js +7 -4
- package/dist/adapt/toolCards.d.ts +2 -1
- package/dist/adapt/toolCards.js +28 -13
- package/dist/adapt.d.ts +1 -1
- package/dist/adapt.js +8 -2
- package/dist/adapter/activeRunSelfHeal.d.ts +24 -2
- package/dist/adapter/activeRunSelfHeal.js +108 -6
- package/dist/adapter/downstream/eventToSdkMessage.js +38 -79
- package/dist/adapter/downstream/terminalToSdkResult.d.ts +60 -1
- package/dist/adapter/downstream/terminalToSdkResult.js +209 -39
- package/dist/adapter/downstream/wiringManifestView.d.ts +1 -0
- package/dist/adapter/downstream/wiringManifestView.js +138 -0
- package/dist/adapter/runStream.d.ts +4 -4
- package/dist/adapter/runStream.js +158 -43
- package/dist/agentsWireCaps.d.ts +2 -7
- package/dist/agentsWireCaps.js +1 -2
- package/dist/approvalDecidedByCapability.js +2 -2
- package/dist/approvalFrameFamilies.d.ts +33 -0
- package/dist/approvalFrameFamilies.js +120 -0
- package/dist/approvalsStreamLiveCapability.js +2 -2
- package/dist/attachmentsWireCaps.js +41 -13
- package/dist/callerCwdCapability.js +2 -2
- package/dist/centerWiringCapability.js +2 -2
- package/dist/clockReading.d.ts +2 -0
- package/dist/clockReading.js +4 -0
- package/dist/cloudConfigWireCaps.d.ts +19 -5
- package/dist/cloudConfigWireCaps.js +193 -56
- package/dist/compensations.js +1 -1
- package/dist/coreValuePorts.d.ts +12 -2
- package/dist/coreValuePorts.js +9 -0
- package/dist/decideFailureNote.js +5 -3
- package/dist/decideReceipt.js +2 -2
- package/dist/deviceExecutorManagementCapability.js +2 -2
- package/dist/deviceFlowPolling.js +1 -1
- package/dist/disableSkillsWire.d.ts +1 -1
- package/dist/disableSkillsWire.js +4 -3
- package/dist/displayUntrusted.d.ts +9 -4
- package/dist/displayUntrusted.js +834 -104
- package/dist/engineCapReader.js +1 -1
- package/dist/engineConfigDrift.js +1 -1
- package/dist/engineErrorCodes.d.ts +14 -5
- package/dist/engineErrorCodes.js +27 -6
- package/dist/engineGenerationConvergence.d.ts +39 -0
- package/dist/engineGenerationConvergence.js +95 -0
- package/dist/engineGenerationPort.d.ts +61 -0
- package/dist/engineGenerationPort.js +144 -0
- package/dist/engineHealthFacts.d.ts +23 -0
- package/dist/engineHealthFacts.js +92 -0
- package/dist/engineIdentity.d.ts +4 -0
- package/dist/engineIdentity.js +11 -0
- package/dist/engineNoticeCodes.d.ts +2 -5
- package/dist/engineRowRef.js +4 -0
- package/dist/engineSessionMessages.js +2 -2
- package/dist/engineToolDirectory.js +2 -2
- package/dist/engineWireFor.d.ts +99 -0
- package/dist/engineWireFor.js +248 -6
- package/dist/engineWireTarget.d.ts +1 -0
- package/dist/engineWireTarget.js +8 -0
- package/dist/env/uiLanguage.js +1 -1
- package/dist/errorSupplementRoles.d.ts +3 -0
- package/dist/errorSupplementRoles.js +37 -0
- package/dist/executionLaneCapability.js +2 -2
- package/dist/fileHistoryCaptureCapability.js +3 -3
- package/dist/finalVerifyWire.d.ts +6 -3
- package/dist/finalVerifyWire.js +6 -23
- package/dist/flagInput.d.ts +4 -0
- package/dist/flagInput.js +24 -0
- package/dist/fleet/fleetLedger.js +5 -2
- package/dist/fleet/fleetProjection.d.ts +1 -0
- package/dist/fleet/fleetProjection.js +16 -3
- package/dist/gateVocabulary.js +3 -0
- package/dist/generated/engineFactTables.d.ts +7 -3
- package/dist/generated/engineFactTables.js +52 -0
- package/dist/generated/engineNoticeTables.js +12 -0
- package/dist/generated/settingsSchemaActiveTiers.d.ts +1 -0
- package/dist/generated/settingsSchemaActiveTiers.js +14 -0
- package/dist/generated/settingsSchemaCallerTextEcho.d.ts +1 -0
- package/dist/generated/settingsSchemaCallerTextEcho.js +8 -0
- package/dist/generated/settingsSchemaControlAndBidi.d.ts +1 -0
- package/dist/generated/settingsSchemaControlAndBidi.js +8 -0
- package/dist/generated/settingsSchemaDefaultModel.d.ts +11 -0
- package/dist/generated/settingsSchemaDefaultModel.js +25 -0
- package/dist/generated/settingsSchemaFns.d.ts +54 -0
- package/dist/generated/settingsSchemaFns.js +26 -1
- package/dist/generated/settingsSchemaMcpRequestEntry.d.ts +1 -1
- package/dist/generated/settingsSchemaMcpRequestEntry.js +1 -7
- package/dist/generated/settingsSchemaSafetyMergeSpec.d.ts +1 -0
- package/dist/generated/settingsSchemaSafetyMergeSpec.js +95 -0
- package/dist/generated/settingsSchemaSettingsSources.d.ts +1 -0
- package/dist/generated/settingsSchemaSettingsSources.js +58 -0
- package/dist/generated/settingsSchemaTables.d.ts +2 -0
- package/dist/generated/settingsSchemaTables.js +13 -0
- package/dist/generated/settingsSchemaUrlPattern.d.ts +1 -0
- package/dist/generated/settingsSchemaUrlPattern.js +183 -0
- package/dist/headlessPermissionModeWire.d.ts +18 -2
- package/dist/headlessPermissionModeWire.js +30 -19
- package/dist/hitl/allowRuleShadow.js +7 -5
- package/dist/hitl/approvalCardReading.d.ts +3 -0
- package/dist/hitl/approvalCardReading.js +17 -0
- package/dist/hitl/approvalCompleteParked.js +1 -1
- package/dist/hitl/approvalDelivery.d.ts +87 -0
- package/dist/hitl/approvalDelivery.js +193 -0
- package/dist/hitl/approvalResolution.d.ts +11 -0
- package/dist/hitl/approvalResolution.js +50 -11
- package/dist/hitl/askClassPair.d.ts +6 -0
- package/dist/hitl/askClassPair.js +30 -3
- package/dist/hitl/askParkAutoReopenBlock.d.ts +30 -0
- package/dist/hitl/askParkAutoReopenBlock.js +117 -0
- package/dist/hitl/askParkRowRouting.js +4 -1
- package/dist/hitl/attributionLadder.d.ts +42 -3
- package/dist/hitl/attributionLadder.js +79 -8
- package/dist/hitl/automaticAnswerVerdict.d.ts +6 -1
- package/dist/hitl/automaticAnswerVerdict.js +46 -11
- package/dist/hitl/crashConverged.js +2 -2
- package/dist/hitl/decisionConflict.d.ts +6 -2
- package/dist/hitl/decisionConflict.js +24 -9
- package/dist/hitl/decisionRefusal.d.ts +20 -10
- package/dist/hitl/decisionRefusal.js +99 -54
- package/dist/hitl/decisionSend.d.ts +3 -0
- package/dist/hitl/decisionSend.js +87 -103
- package/dist/hitl/frameRouter.d.ts +1 -0
- package/dist/hitl/frameRouter.js +9 -2
- package/dist/hitl/hitlBridge.d.ts +18 -6
- package/dist/hitl/hitlBridge.js +41 -37
- package/dist/hitl/livePendingAsk.js +4 -3
- package/dist/hitl/noAllowCause.js +1 -1
- package/dist/hitl/parkResolver.js +3 -2
- package/dist/hitl/persistedRulesWire.js +1 -0
- package/dist/hitl/planReviewWire.d.ts +4 -0
- package/dist/hitl/planReviewWire.js +59 -30
- package/dist/hitl/resumeRunningCard.d.ts +3 -2
- package/dist/hitl/resumeRunningCard.js +17 -11
- package/dist/hitl/sessionPolicyDeliverable.d.ts +5 -2
- package/dist/hitl/sessionPolicyDeliverable.js +62 -29
- package/dist/hitl/sessionPolicyWire.d.ts +13 -3
- package/dist/hitl/sessionPolicyWire.js +81 -16
- package/dist/hitl/standingRows.js +1 -1
- package/dist/hitl/toolApprovalWire.d.ts +9 -10
- package/dist/hitl/toolApprovalWire.js +72 -54
- package/dist/hookMatcherVerdict.d.ts +2 -0
- package/dist/hookMatcherVerdict.js +12 -0
- package/dist/hooksCompactTransition.d.ts +19 -0
- package/dist/hooksCompactTransition.js +41 -0
- package/dist/hooksWireCaps.d.ts +1 -1
- package/dist/hooksWireCaps.js +202 -203
- package/dist/host.d.ts +1 -14
- package/dist/host.js +0 -8
- package/dist/hostCallbackGuard.d.ts +1 -0
- package/dist/hostCallbackGuard.js +1 -1
- package/dist/hostSettingsSource.d.ts +172 -0
- package/dist/hostSettingsSource.js +675 -0
- package/dist/hostTurnSettings.d.ts +73 -17
- package/dist/hostTurnSettings.js +594 -97
- package/dist/httpHookPolicy.d.ts +37 -0
- package/dist/httpHookPolicy.js +176 -0
- package/dist/humanTurn.d.ts +2 -1
- package/dist/humanTurn.js +37 -7
- package/dist/humanTurnRead.js +4 -3
- package/dist/humanTurnSentences.d.ts +10 -0
- package/dist/humanTurnSentences.js +74 -0
- package/dist/i18n/messages.en.d.ts +222 -2
- package/dist/i18n/messages.en.js +225 -5
- package/dist/i18n/messages.zh.js +237 -5
- package/dist/i18n/translate.js +3 -3
- package/dist/index.d.ts +77 -15
- package/dist/index.js +50 -13
- package/dist/inheritEnvCapability.d.ts +3 -1
- package/dist/inheritEnvCapability.js +31 -17
- package/dist/inheritEnvWire.d.ts +2 -1
- package/dist/inheritEnvWire.js +11 -5
- package/dist/interactiveHalt.d.ts +3 -1
- package/dist/interactiveHalt.js +2 -0
- package/dist/interactiveInterrupt.d.ts +2 -0
- package/dist/interactiveInterrupt.js +15 -0
- package/dist/interactiveToolsWire.d.ts +4 -2
- package/dist/interactiveToolsWire.js +5 -5
- package/dist/jsonFaithful.d.ts +20 -0
- package/dist/jsonFaithful.js +152 -0
- package/dist/limitsWire.d.ts +7 -2
- package/dist/limitsWire.js +19 -13
- package/dist/liveInitToolFace.d.ts +6 -1
- package/dist/liveInitToolFace.js +5 -3
- package/dist/liveModelCatalog.d.ts +22 -0
- package/dist/liveModelCatalog.js +132 -18
- package/dist/mcpPanel.js +1 -1
- package/dist/mcpProbeCapability.js +2 -2
- package/dist/mcpStatusSupersetKeys.d.ts +24 -0
- package/dist/mcpStatusSupersetKeys.js +45 -0
- package/dist/mcpToolToggles.js +2 -1
- package/dist/mcpWireCaps.d.ts +39 -1
- package/dist/mcpWireCaps.js +254 -50
- package/dist/memoryComplianceCapability.js +2 -2
- package/dist/memoryOriginCapability.js +2 -2
- package/dist/model/catalogDefault.d.ts +24 -0
- package/dist/model/catalogDefault.js +4 -0
- package/dist/model/liveCatalogShape.js +5 -4
- package/dist/model/modelsPolicy.js +4 -3
- package/dist/model/onboardJudgement.d.ts +1 -0
- package/dist/model/onboardJudgement.js +1 -1
- package/dist/model/subagentModelWord.js +2 -2
- package/dist/modelCapabilityProbe.js +6 -6
- package/dist/modelIdentityResolvability.d.ts +10 -1
- package/dist/modelIdentityResolvability.js +62 -39
- package/dist/modsFace.d.ts +8 -0
- package/dist/modsFace.js +59 -0
- package/dist/modsKernelIdentity.d.ts +10 -0
- package/dist/modsKernelIdentity.js +103 -0
- package/dist/modsKernelTransit.d.ts +8 -0
- package/dist/modsKernelTransit.js +6 -0
- package/dist/notifications.d.ts +30 -12
- package/dist/notifications.js +241 -53
- package/dist/outputStyleSeatCapability.js +2 -2
- package/dist/ownKey.d.ts +12 -0
- package/dist/ownKey.js +179 -3
- package/dist/panelReduce.js +1 -1
- package/dist/peerFrames.d.ts +1 -1
- package/dist/peerFrames.js +6 -2
- package/dist/peerLaneCapability.js +2 -2
- package/dist/permissionModesCapability.js +4 -4
- package/dist/permissionRuleIssue.js +2 -0
- package/dist/permissionRulesWriteCapability.js +2 -2
- package/dist/permissionsAllowGrantCapability.js +2 -2
- package/dist/permissionsDeclaration.d.ts +43 -4
- package/dist/permissionsDeclaration.js +102 -35
- package/dist/pluginHooksWire.d.ts +20 -4
- package/dist/pluginHooksWire.js +92 -53
- package/dist/prepareRefusal.d.ts +3 -2
- package/dist/prepareRefusal.js +27 -9
- package/dist/printInitToolFace.js +2 -2
- package/dist/printModelStatus.js +1 -1
- package/dist/printToolResultFrame.js +1 -1
- package/dist/projectMemory.d.ts +32 -0
- package/dist/projectMemory.js +70 -0
- package/dist/promptBlockedCopy.d.ts +2 -1
- package/dist/promptBlockedCopy.js +2 -1
- package/dist/promptDelivery.d.ts +23 -3
- package/dist/promptDelivery.js +169 -30
- package/dist/providerRejection.d.ts +19 -1
- package/dist/providerRejection.js +75 -4
- package/dist/queuedDelivery.d.ts +48 -0
- package/dist/queuedDelivery.js +233 -0
- package/dist/reattachWindow.d.ts +94 -0
- package/dist/reattachWindow.js +127 -0
- package/dist/request/printNotification.d.ts +1 -1
- package/dist/request/printNotification.js +6 -2
- package/dist/request/submissionIdentity.d.ts +37 -0
- package/dist/request/submissionIdentity.js +65 -0
- package/dist/request/taskRequest.d.ts +33 -4
- package/dist/request/taskRequest.js +341 -156
- package/dist/resultFrameKeys.d.ts +1 -0
- package/dist/resultFrameKeys.js +4 -1
- package/dist/retryStatus.d.ts +8 -0
- package/dist/retryStatus.js +57 -9
- package/dist/rewindArchiveCapability.js +2 -2
- package/dist/rewindEngineAction.d.ts +2 -0
- package/dist/rewindEngineAction.js +23 -1
- package/dist/rowKind.d.ts +36 -0
- package/dist/rowKind.js +97 -0
- package/dist/ruleCompileVerdict.d.ts +18 -0
- package/dist/ruleCompileVerdict.js +67 -2
- package/dist/ruleReadings.d.ts +58 -0
- package/dist/ruleReadings.js +132 -0
- package/dist/ruleRefusalSentence.d.ts +4 -0
- package/dist/ruleRefusalSentence.js +9 -3
- package/dist/runCancelContext.d.ts +0 -1
- package/dist/runCancelContext.js +1 -2
- package/dist/runTerminal.d.ts +5 -0
- package/dist/runTerminal.js +52 -17
- package/dist/sandboxWire.d.ts +1 -1
- package/dist/sandboxWire.js +4 -6
- package/dist/scenarioRefusal.js +1 -1
- package/dist/scenarioSkills.d.ts +20 -0
- package/dist/scenarioSkills.js +72 -0
- package/dist/scenarioWire.d.ts +5 -2
- package/dist/scenarioWire.js +9 -9
- package/dist/sealedKeyCapability.js +2 -2
- package/dist/seam.d.ts +2 -0
- package/dist/seam.js +3 -3
- package/dist/seatContract.d.ts +68 -7
- package/dist/seatContract.js +84 -25
- package/dist/selfOrchestrationDenial.js +1 -1
- package/dist/sessionBackground.d.ts +165 -0
- package/dist/sessionBackground.js +781 -0
- package/dist/sessionBackgroundHandoff.d.ts +54 -0
- package/dist/sessionBackgroundHandoff.js +321 -0
- package/dist/sessionMap.js +4 -1
- package/dist/sessionPolicyCapability.js +2 -2
- package/dist/sessionRulesChildrenReadLive.d.ts +6 -0
- package/dist/sessionRulesChildrenReadLive.js +5 -0
- package/dist/sessionRulesNamespaceFormsCapability.d.ts +12 -0
- package/dist/sessionRulesNamespaceFormsCapability.js +29 -0
- package/dist/sessionSyncFileHistoryCapability.js +2 -2
- package/dist/settingsCredentialKeyPaths.js +55 -15
- package/dist/settingsHooksSalvage.d.ts +1 -0
- package/dist/settingsHooksSalvage.js +7 -1
- package/dist/settingsLayerAdmission.d.ts +4 -0
- package/dist/settingsLayerAdmission.js +16 -0
- package/dist/skillToolListsCapability.js +6 -5
- package/dist/skillsWireCaps.d.ts +14 -0
- package/dist/skillsWireCaps.js +47 -16
- package/dist/slashCommandGate.d.ts +24 -0
- package/dist/slashCommandGate.js +74 -0
- package/dist/slashCommandTable.d.ts +14 -0
- package/dist/slashCommandTable.js +99 -0
- package/dist/sqlEngineCapability.js +2 -2
- package/dist/steerPriorityCapability.js +2 -2
- package/dist/storePostureCapability.js +2 -2
- package/dist/subagent/agentStateDetail.js +1 -1
- package/dist/subagent/engineDelegatedPrompt.d.ts +9 -0
- package/dist/subagent/engineDelegatedPrompt.js +38 -7
- package/dist/subagent/engineRowStopGate.js +2 -2
- package/dist/subagent/engineSubagentResume.js +3 -3
- package/dist/subagent/engineTaskHandleWire.d.ts +1 -0
- package/dist/subagent/engineTaskHandleWire.js +10 -0
- package/dist/submitFailure.d.ts +8 -0
- package/dist/submitFailure.js +17 -0
- package/dist/supportFloor.d.ts +1 -0
- package/dist/supportFloor.js +7 -0
- package/dist/terminationIntent.d.ts +55 -0
- package/dist/terminationIntent.js +352 -0
- package/dist/thinkingLatch.d.ts +69 -0
- package/dist/thinkingLatch.js +255 -0
- package/dist/thinkingLatchWords.d.ts +7 -0
- package/dist/thinkingLatchWords.js +4 -0
- package/dist/toolHistoryMismatch.d.ts +8 -0
- package/dist/toolHistoryMismatch.js +37 -6
- package/dist/toolResult.d.ts +13 -3
- package/dist/toolResult.js +159 -32
- package/dist/toolResultContent.d.ts +13 -0
- package/dist/toolResultContent.js +82 -7
- package/dist/toolRoster.d.ts +18 -0
- package/dist/toolRoster.js +64 -0
- package/dist/turnFailurePresentation.js +27 -90
- package/dist/usageLimitAutoResume.d.ts +74 -0
- package/dist/usageLimitAutoResume.js +227 -0
- package/dist/userAttachmentEnvelope.js +1 -1
- package/dist/userAttachmentSeat.js +5 -5
- package/dist/userInvokedSkillsCapability.js +2 -2
- package/dist/webSearchBackendCapability.js +2 -2
- package/dist/wireErrorTriage.js +99 -50
- package/dist/wireFailureShape.d.ts +25 -1
- package/dist/wireFailureShape.js +92 -5
- package/dist/wireRefusalCopy.d.ts +24 -1
- package/dist/wireRefusalCopy.js +253 -32
- package/dist/wiringFleetDoctor.d.ts +3 -0
- package/dist/wiringFleetDoctor.js +21 -0
- package/dist/workflow.d.ts +2 -1
- package/dist/workflow.js +38 -1
- package/dist/workflowClient.d.ts +2 -7
- package/dist/workflowsJournalCapability.js +2 -2
- package/dist/writeProtectionCapability.js +2 -2
- package/docs/INTEGRATION-CLIENTS.md +907 -182
- package/package.json +14 -3
- package/dist/argvFlagValue.d.ts +0 -8
- 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
|
-
|
|
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
|
|
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
|
-
|
|
80
|
-
|
|
81
|
-
|
|
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(
|
|
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
|
-
|
|
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(
|
|
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:
|
|
140
|
-
status:
|
|
141
|
-
summary: typeof
|
|
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
|
|
317
|
-
|
|
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
|
|
664
|
-
|
|
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;
|