@sema-agent/client-core 0.99.0 → 0.101.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +572 -0
- package/README.md +174 -114
- package/dist/adapt/arms.js +109 -50
- package/dist/adapt/panelTasks.d.ts +2 -1
- package/dist/adapt/panelTasks.js +32 -9
- package/dist/adapt/textStream.d.ts +1 -1
- package/dist/adapt/textStream.js +58 -32
- package/dist/adapt/toolCards.js +9 -8
- package/dist/adapt.js +7 -1
- package/dist/adapter/activeRunSelfHeal.d.ts +31 -2
- package/dist/adapter/activeRunSelfHeal.js +162 -13
- package/dist/adapter/downstream/eventToSdkMessage.d.ts +25 -6
- package/dist/adapter/downstream/eventToSdkMessage.js +157 -20
- package/dist/adapter/downstream/terminalToSdkResult.d.ts +60 -1
- package/dist/adapter/downstream/terminalToSdkResult.js +219 -39
- package/dist/adapter/downstream/wiringManifestView.d.ts +3 -1
- package/dist/adapter/downstream/wiringManifestView.js +1 -0
- package/dist/adapter/runStream.d.ts +4 -4
- package/dist/adapter/runStream.js +184 -42
- package/dist/adapter/types.d.ts +2 -0
- package/dist/agentsWireCaps.d.ts +9 -7
- package/dist/agentsWireCaps.js +101 -17
- 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 +28 -5
- package/dist/cloudConfigWireCaps.js +334 -103
- package/dist/compactionStatus.d.ts +34 -0
- package/dist/compactionStatus.js +196 -0
- package/dist/coreValuePorts.d.ts +12 -2
- package/dist/coreValuePorts.js +9 -0
- package/dist/decideFailureNote.js +8 -6
- 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 +1 -0
- package/dist/displayUntrusted.js +215 -13
- package/dist/engineAgentPanelStore.d.ts +7 -4
- package/dist/engineCapReader.js +1 -1
- package/dist/engineConfigDrift.js +1 -1
- package/dist/engineErrorCodes.d.ts +23 -6
- package/dist/engineErrorCodes.js +36 -11
- 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.d.ts +3 -0
- package/dist/engineToolDirectory.js +6 -4
- 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/eventLeg.d.ts +1 -7
- package/dist/eventLeg.js +7 -8
- package/dist/executionLaneCapability.js +2 -2
- package/dist/fileHistoryCaptureCapability.d.ts +0 -3
- package/dist/fileHistoryCaptureCapability.js +3 -7
- 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 +15 -2
- package/dist/gateVocabulary.js +3 -0
- package/dist/generated/engineFactTables.d.ts +7 -2
- package/dist/generated/engineFactTables.js +79 -0
- package/dist/generated/engineNoticeTables.js +15 -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 +66 -0
- package/dist/generated/settingsSchemaFns.js +38 -0
- package/dist/generated/settingsSchemaMcpRequestEntry.d.ts +1 -0
- package/dist/generated/settingsSchemaMcpRequestEntry.js +156 -0
- 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 +3 -0
- package/dist/generated/settingsSchemaTables.js +18 -0
- package/dist/generated/settingsSchemaTypes.d.ts +28 -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 +9 -7
- package/dist/hitl/approvalCardReading.d.ts +3 -0
- package/dist/hitl/approvalCardReading.js +17 -0
- package/dist/hitl/approvalCardReasons.js +2 -2
- 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/approvalHolds.d.ts +14 -0
- package/dist/hitl/approvalHolds.js +41 -0
- package/dist/hitl/approvalResolution.d.ts +11 -0
- package/dist/hitl/approvalResolution.js +50 -11
- package/dist/hitl/askClassPair.d.ts +8 -2
- package/dist/hitl/askClassPair.js +31 -4
- 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 +62 -0
- package/dist/hitl/attributionLadder.js +138 -0
- 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/decisionLedger.d.ts +55 -0
- package/dist/hitl/decisionLedger.js +156 -0
- package/dist/hitl/decisionRefusal.d.ts +21 -10
- package/dist/hitl/decisionRefusal.js +100 -55
- package/dist/hitl/decisionSend.d.ts +116 -0
- package/dist/hitl/decisionSend.js +563 -0
- 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 +59 -43
- 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 +104 -106
- 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 +65 -35
- 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 +103 -151
- 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 +114 -19
- package/dist/hostTurnSettings.js +966 -68
- package/dist/httpHookPolicy.d.ts +37 -0
- package/dist/httpHookPolicy.js +176 -0
- package/dist/humanTurn.d.ts +4 -2
- package/dist/humanTurn.js +40 -10
- 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 +313 -0
- package/dist/i18n/messages.en.js +326 -13
- package/dist/i18n/messages.zh.js +341 -13
- package/dist/i18n/translate.js +3 -3
- package/dist/index.d.ts +85 -15
- package/dist/index.js +53 -12
- package/dist/inheritEnvCapability.d.ts +4 -1
- package/dist/inheritEnvCapability.js +38 -17
- package/dist/inheritEnvWire.d.ts +2 -1
- package/dist/inheritEnvWire.js +11 -5
- package/dist/injectionLaneNotice.d.ts +5 -0
- package/dist/injectionLaneNotice.js +46 -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 +3 -1
- package/dist/mcpProbeCapability.js +2 -2
- package/dist/mcpReconnect.js +2 -2
- package/dist/mcpStatusSupersetKeys.d.ts +24 -0
- package/dist/mcpStatusSupersetKeys.js +45 -0
- package/dist/mcpToolToggles.d.ts +6 -0
- package/dist/mcpToolToggles.js +47 -0
- package/dist/mcpWireCaps.d.ts +48 -4
- package/dist/mcpWireCaps.js +338 -99
- package/dist/mcpWireTransport.d.ts +4 -0
- package/dist/mcpWireTransport.js +18 -0
- 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.d.ts +2 -1
- package/dist/modelCapabilityProbe.js +16 -15
- package/dist/modelIdentityResolvability.d.ts +12 -1
- package/dist/modelIdentityResolvability.js +69 -28
- 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 +37 -0
- package/dist/ownKey.js +238 -2
- package/dist/panelReduce.d.ts +5 -0
- package/dist/panelReduce.js +45 -13
- package/dist/panelStateHolder.d.ts +1 -0
- package/dist/panelStateHolder.js +10 -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.d.ts +2 -1
- package/dist/permissionRuleIssue.js +24 -21
- 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 +101 -60
- package/dist/prepareRefusal.d.ts +9 -0
- package/dist/prepareRefusal.js +90 -0
- package/dist/printInitToolFace.js +2 -2
- package/dist/printModelStatus.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 +5 -1
- package/dist/request/submissionIdentity.d.ts +37 -0
- package/dist/request/submissionIdentity.js +65 -0
- package/dist/request/taskRequest.d.ts +22 -14
- package/dist/request/taskRequest.js +312 -202
- package/dist/resultFrameKeys.d.ts +1 -0
- package/dist/resultFrameKeys.js +4 -1
- package/dist/resumeRefusalCopy.d.ts +3 -1
- package/dist/resumeRefusalCopy.js +22 -4
- package/dist/retryStatus.d.ts +26 -0
- package/dist/retryStatus.js +133 -28
- 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 +8 -0
- package/dist/ruleRefusalSentence.js +64 -0
- 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 +3 -2
- package/dist/sandboxWire.js +59 -27
- package/dist/scenarioRefusal.d.ts +2 -1
- package/dist/scenarioRefusal.js +6 -6
- 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 +26 -9
- package/dist/seam.js +44 -4
- package/dist/seatContract.d.ts +62 -9
- package/dist/seatContract.js +70 -25
- package/dist/selfOrchestrationDenial.js +1 -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.d.ts +8 -0
- package/dist/settingsCredentialKeyPaths.js +274 -0
- 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 -3
- package/dist/skillsWireCaps.js +48 -18
- 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/subagentContentStore.d.ts +1 -0
- package/dist/subagentContentStore.js +135 -27
- 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/toolHistoryMismatch.d.ts +8 -0
- package/dist/toolHistoryMismatch.js +37 -6
- package/dist/toolResult.d.ts +13 -3
- package/dist/toolResult.js +158 -9
- 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/toolsFlagNames.d.ts +8 -0
- package/dist/toolsFlagNames.js +110 -0
- package/dist/turnFailurePresentation.js +41 -96
- 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 +75 -18
- package/dist/wireRefusalCopy.js +532 -148
- 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 +1013 -190
- package/package.json +15 -4
package/dist/hitl/hitlBridge.js
CHANGED
|
@@ -3,10 +3,13 @@ import { eventSeq } from '../adapter/types.js';
|
|
|
3
3
|
import { hostLog } from '../host.js';
|
|
4
4
|
import { invokeHostCallbackIsolated } from '../hostCallbackGuard.js';
|
|
5
5
|
import { abortableSleep } from '../abortableSleep.js';
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
6
|
+
import { attemptTimeoutOnChain, causeSlotReadOf, transportChainReading } from '../engineWireFor.js';
|
|
7
|
+
import { guardedRead, ownDataField, readOwnDataValue } from '../ownKey.js';
|
|
8
|
+
import { PROTOCOL_ERROR_NAME, isSlotCarrier, protocolErrorNameReading, readBlockedBy, readThrownSlot, thrownIsInstanceOf, wireFailureTextsOf } from '../wireFailureShape.js';
|
|
8
9
|
import { APPROVAL_BINDING_MISMATCH, CHECKPOINT_INVALID_OUTCOME, RESUME_POLICY_FOLD_CODE } from '../engineErrorCodes.js';
|
|
9
10
|
import { suspendedReopenOf } from './suspendedReopen.js';
|
|
11
|
+
import { closeDecisionOp, decisionLedgerKeysOf, openDecisionOp } from './decisionLedger.js';
|
|
12
|
+
import { askParkBlockGeneration, noteAskParkDecideSettled } from './askParkAutoReopenBlock.js';
|
|
10
13
|
export const DEFAULT_DENY_REASON = 'The user rejected this tool use';
|
|
11
14
|
export const MAX_DENY_REASON_CHARS = 4096;
|
|
12
15
|
export function denyReasonForWire(reason, tag) {
|
|
@@ -52,6 +55,30 @@ export class HitlSafetyError extends Error {
|
|
|
52
55
|
this.name = 'HitlSafetyError';
|
|
53
56
|
}
|
|
54
57
|
}
|
|
58
|
+
export function refusalCarrierOf(err, localCodeRead, answeredLayer = false, causeRead, headRead) {
|
|
59
|
+
if (!isSlotCarrier(err))
|
|
60
|
+
return { carrier: err };
|
|
61
|
+
const head = headRead ?? safetyStopHeadOf(err, localCodeRead);
|
|
62
|
+
if (!head.named)
|
|
63
|
+
return { carrier: err };
|
|
64
|
+
const read = answeredLayer ? undefined : (causeRead ?? causeSlotReadOf(err));
|
|
65
|
+
const cause = read !== undefined && read.presence === 'present' ? read.value : undefined;
|
|
66
|
+
const carrier = isSlotCarrier(cause) ? cause : err;
|
|
67
|
+
return head.local !== undefined ? { local: head.local, carrier } : { carrier };
|
|
68
|
+
}
|
|
69
|
+
export function safetyStopNamed(err) {
|
|
70
|
+
return isSlotCarrier(err) && guardedRead(() => ownDataField(err, 'name')) === 'HitlSafetyError';
|
|
71
|
+
}
|
|
72
|
+
export function safetyStopHeadOf(err, localCodeRead, namedRead) {
|
|
73
|
+
if (!isSlotCarrier(err))
|
|
74
|
+
return { named: false };
|
|
75
|
+
if (!(namedRead ?? safetyStopNamed(err)))
|
|
76
|
+
return { named: false };
|
|
77
|
+
const own = (k) => guardedRead(() => ownDataField(err, k));
|
|
78
|
+
const code = localCodeRead !== undefined ? localCodeRead.value : own('code');
|
|
79
|
+
const local = typeof code === 'string' && GATE_FAILURE_CODES.includes(code) ? code : undefined;
|
|
80
|
+
return local !== undefined ? { named: true, local } : { named: true };
|
|
81
|
+
}
|
|
55
82
|
export function hitlSafetyCodeOf(e) {
|
|
56
83
|
if (!thrownIsInstanceOf(e, HitlSafetyError))
|
|
57
84
|
return undefined;
|
|
@@ -69,12 +96,12 @@ void _gateCurrentPendingReadonlyPin;
|
|
|
69
96
|
export function readDecideCurrentPending(e) {
|
|
70
97
|
if (e === null || e === undefined)
|
|
71
98
|
return undefined;
|
|
72
|
-
const raw = readThrownSlot(e, 'currentPending');
|
|
99
|
+
const raw = readThrownSlot(e, 'currentPending', 'data');
|
|
73
100
|
if (typeof raw !== 'object' || raw === null)
|
|
74
101
|
return undefined;
|
|
75
|
-
const toolName = readThrownSlot(raw, 'toolName');
|
|
76
|
-
const boundCallId = readThrownSlot(raw, 'boundCallId');
|
|
77
|
-
const boundInputHash = readThrownSlot(raw, 'boundInputHash');
|
|
102
|
+
const toolName = readThrownSlot(raw, 'toolName', 'data');
|
|
103
|
+
const boundCallId = readThrownSlot(raw, 'boundCallId', 'data');
|
|
104
|
+
const boundInputHash = readThrownSlot(raw, 'boundInputHash', 'data');
|
|
78
105
|
if (typeof toolName !== 'string' || toolName.length === 0)
|
|
79
106
|
return undefined;
|
|
80
107
|
if (typeof boundCallId !== 'string' || boundCallId.length === 0)
|
|
@@ -129,36 +156,8 @@ export function __setDecideTimeoutRetryBudgetForTests(ms) {
|
|
|
129
156
|
function decideTimeoutRetryBudgetMs() {
|
|
130
157
|
return decideTimeoutRetryBudgetOverrideMs ?? DECIDE_TIMEOUT_RETRY_TOTAL_BUDGET_MS;
|
|
131
158
|
}
|
|
132
|
-
function
|
|
133
|
-
|
|
134
|
-
return false;
|
|
135
|
-
if (readThrownSlot(e, 'name') === 'TimeoutError')
|
|
136
|
-
return true;
|
|
137
|
-
return isDecideAttemptTimeout(readThrownSlot(e, 'cause'), depth + 1);
|
|
138
|
-
}
|
|
139
|
-
const TRANSIENT_NETWORK_CODES = new Set([
|
|
140
|
-
'ECONNREFUSED', 'ECONNRESET', 'ETIMEDOUT', 'EPIPE', 'EAI_AGAIN',
|
|
141
|
-
'ENETUNREACH', 'EHOSTUNREACH', 'ECONNABORTED',
|
|
142
|
-
'UND_ERR_CONNECT_TIMEOUT', 'UND_ERR_HEADERS_TIMEOUT', 'UND_ERR_BODY_TIMEOUT', 'UND_ERR_SOCKET',
|
|
143
|
-
]);
|
|
144
|
-
function isTransientDecideTransportFailure(e, depth = 0) {
|
|
145
|
-
if (depth > 3 || e === null || typeof e !== 'object')
|
|
146
|
-
return false;
|
|
147
|
-
if (thrownIsInstanceOf(e, HitlSafetyError))
|
|
148
|
-
return false;
|
|
149
|
-
const status = readThrownSlot(e, 'status', 'data');
|
|
150
|
-
if (status === THROWN_SLOT_UNREADABLE || typeof status === 'number')
|
|
151
|
-
return false;
|
|
152
|
-
const name = readThrownSlot(e, 'name');
|
|
153
|
-
if (name === 'TimeoutError' || name === 'AbortError')
|
|
154
|
-
return true;
|
|
155
|
-
const code = readThrownSlot(e, 'code', 'data');
|
|
156
|
-
if (typeof code === 'string' && TRANSIENT_NETWORK_CODES.has(code))
|
|
157
|
-
return true;
|
|
158
|
-
const message = readThrownSlot(e, 'message');
|
|
159
|
-
if (typeof message === 'string' && message.toLowerCase().includes('fetch failed'))
|
|
160
|
-
return true;
|
|
161
|
-
return isTransientDecideTransportFailure(readThrownSlot(e, 'cause'), depth + 1);
|
|
159
|
+
function isTransientDecideTransportFailure(e) {
|
|
160
|
+
return transportChainReading(e, 'retry', (layer) => thrownIsInstanceOf(layer, HitlSafetyError)) === 'transient';
|
|
162
161
|
}
|
|
163
162
|
export class DecideTransportRetryExhaustedError extends Error {
|
|
164
163
|
attempts;
|
|
@@ -172,6 +171,7 @@ class DecideSpan {
|
|
|
172
171
|
owner;
|
|
173
172
|
observer;
|
|
174
173
|
identity;
|
|
174
|
+
ledgerOp;
|
|
175
175
|
attempts = 0;
|
|
176
176
|
ok = false;
|
|
177
177
|
retryExhausted = false;
|
|
@@ -189,21 +189,26 @@ class DecideSpan {
|
|
|
189
189
|
return mine === undefined || (mine.sessionId === identity.sessionId && mine.boundCallId === identity.boundCallId);
|
|
190
190
|
}
|
|
191
191
|
async run(identity, send) {
|
|
192
|
-
if (this.
|
|
192
|
+
if (this.identity === undefined) {
|
|
193
193
|
this.identity = identity;
|
|
194
|
-
|
|
194
|
+
this.ledgerOp = openDecideLedgerOp(identity);
|
|
195
|
+
if (this.observer !== undefined)
|
|
196
|
+
notifyDecideObserver(this.observer, Object.freeze({ ...this.identity, phase: 'start' }));
|
|
195
197
|
}
|
|
196
198
|
this.inFlight++;
|
|
197
199
|
const tally = { attempts: 0 };
|
|
200
|
+
const blockGen = askParkBlockGeneration(identity.sessionId);
|
|
198
201
|
try {
|
|
199
202
|
const r = await send(tally);
|
|
200
203
|
this.ok = true;
|
|
201
204
|
this.retryExhausted = false;
|
|
205
|
+
noteAskParkDecideSettled(identity, blockGen, { ok: true });
|
|
202
206
|
return r;
|
|
203
207
|
}
|
|
204
208
|
catch (e) {
|
|
205
209
|
this.ok = false;
|
|
206
210
|
this.retryExhausted = thrownIsInstanceOf(e, DecideTransportRetryExhaustedError);
|
|
211
|
+
noteAskParkDecideSettled(identity, blockGen, { ok: false, error: e });
|
|
207
212
|
throw e;
|
|
208
213
|
}
|
|
209
214
|
finally {
|
|
@@ -224,11 +229,16 @@ class DecideSpan {
|
|
|
224
229
|
if (this.ended)
|
|
225
230
|
return;
|
|
226
231
|
this.ended = true;
|
|
232
|
+
if (this.ledgerOp !== undefined)
|
|
233
|
+
closeDecisionOp(this.ledgerOp, 'package');
|
|
227
234
|
if (this.observer === undefined || this.identity === undefined)
|
|
228
235
|
return;
|
|
229
236
|
notifyDecideObserver(this.observer, Object.freeze({ ...this.identity, phase: 'end', ok: this.ok, attempts: this.attempts, retryExhausted: this.retryExhausted }));
|
|
230
237
|
}
|
|
231
238
|
}
|
|
239
|
+
function openDecideLedgerOp(identity) {
|
|
240
|
+
return openDecisionOp('tool_approval', decisionLedgerKeysOf({ taskId: identity.taskId, callId: identity.boundCallId }), 'posting', true);
|
|
241
|
+
}
|
|
232
242
|
function wireOptsOf(opts) {
|
|
233
243
|
if (opts === undefined || opts.operation === undefined)
|
|
234
244
|
return opts;
|
|
@@ -408,23 +418,29 @@ export class HitlBridge {
|
|
|
408
418
|
}
|
|
409
419
|
const observer = this.decideObserver;
|
|
410
420
|
const tally = { attempts: 0 };
|
|
411
|
-
if (observer === undefined)
|
|
412
|
-
return this.decideRawAttempts(sessionId, decision, opts, tally);
|
|
413
421
|
const identity = this.decideIdentityOf(sessionId, decision);
|
|
414
|
-
|
|
422
|
+
const ledgerOp = openDecideLedgerOp(identity);
|
|
423
|
+
const blockGen = askParkBlockGeneration(identity.sessionId);
|
|
424
|
+
if (observer !== undefined)
|
|
425
|
+
notifyDecideObserver(observer, Object.freeze({ ...identity, phase: 'start' }));
|
|
415
426
|
let ok = false;
|
|
416
427
|
let retryExhausted = false;
|
|
417
428
|
try {
|
|
418
429
|
const r = await this.decideRawAttempts(sessionId, decision, opts, tally);
|
|
419
430
|
ok = true;
|
|
431
|
+
noteAskParkDecideSettled(identity, blockGen, { ok: true });
|
|
420
432
|
return r;
|
|
421
433
|
}
|
|
422
434
|
catch (e) {
|
|
423
435
|
retryExhausted = thrownIsInstanceOf(e, DecideTransportRetryExhaustedError);
|
|
436
|
+
noteAskParkDecideSettled(identity, blockGen, { ok: false, error: e });
|
|
424
437
|
throw e;
|
|
425
438
|
}
|
|
426
439
|
finally {
|
|
427
|
-
|
|
440
|
+
closeDecisionOp(ledgerOp, 'package');
|
|
441
|
+
if (observer !== undefined) {
|
|
442
|
+
notifyDecideObserver(observer, Object.freeze({ ...identity, phase: 'end', ok, attempts: tally.attempts, retryExhausted }));
|
|
443
|
+
}
|
|
428
444
|
}
|
|
429
445
|
}
|
|
430
446
|
decideIdentityOf(sessionId, decision) {
|
|
@@ -461,7 +477,7 @@ export class HitlBridge {
|
|
|
461
477
|
throw e;
|
|
462
478
|
if (!isTransientDecideTransportFailure(e) || callerAborted())
|
|
463
479
|
throw e;
|
|
464
|
-
if (
|
|
480
|
+
if (attemptTimeoutOnChain(e)) {
|
|
465
481
|
if (attempts >= DECIDE_TIMEOUT_MIN_ATTEMPTS && Date.now() - startedAt >= decideTimeoutRetryBudgetMs()) {
|
|
466
482
|
throw new DecideTransportRetryExhaustedError(attempts, wireFailureTextsOf(e).reason);
|
|
467
483
|
}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { appendOwnElement } from '../ownKey.js';
|
|
1
2
|
import { readRequiresRealApproval } from './approvalCardReading.js';
|
|
2
3
|
import { THROWN_SLOT_UNREADABLE, readThrownSlot } from '../wireFailureShape.js';
|
|
3
4
|
import { isToolApprovalFrame, surfaceToolApprovalFrameAndRespond, } from './toolApprovalWire.js';
|
|
@@ -14,9 +15,9 @@ function snapshotMembers(raw) {
|
|
|
14
15
|
const out = [];
|
|
15
16
|
for (let i = 0; i < length; i++) {
|
|
16
17
|
const d = Object.getOwnPropertyDescriptor(raw, i);
|
|
17
|
-
if (d === undefined || !('value'
|
|
18
|
+
if (d === undefined || !Object.hasOwn(d, 'value'))
|
|
18
19
|
return undefined;
|
|
19
|
-
out
|
|
20
|
+
appendOwnElement(out, d.value);
|
|
20
21
|
}
|
|
21
22
|
return raw.length === length ? out : undefined;
|
|
22
23
|
}
|
|
@@ -26,7 +27,7 @@ export function readLivePendingRows(body) {
|
|
|
26
27
|
const field = Object.getOwnPropertyDescriptor(body, 'livePending');
|
|
27
28
|
if (field === undefined)
|
|
28
29
|
return 'livePending' in body ? { kind: 'malformed' } : { kind: 'not_reported' };
|
|
29
|
-
if (!('value'
|
|
30
|
+
if (!Object.hasOwn(field, 'value'))
|
|
30
31
|
return { kind: 'malformed' };
|
|
31
32
|
const raw = field.value;
|
|
32
33
|
if (raw === undefined)
|
|
@@ -4,7 +4,7 @@ function ladderSays(ladder, key) {
|
|
|
4
4
|
return false;
|
|
5
5
|
try {
|
|
6
6
|
const d = Object.getOwnPropertyDescriptor(ladder, key);
|
|
7
|
-
return d !== undefined && 'value'
|
|
7
|
+
return d !== undefined && Object.hasOwn(d, 'value') && d.value === true;
|
|
8
8
|
}
|
|
9
9
|
catch {
|
|
10
10
|
return false;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { putOwnKey, readOwnDataValue } from '../ownKey.js';
|
|
2
2
|
import { HitlBridge, NO_QUESTION_OVERLAY_REASON, findPendingForTask, isNoDecisionSurfaceReason, } from './hitlBridge.js';
|
|
3
|
-
import { approvalResolutionDetail, resolutionOfDecisionFailure } from './approvalResolution.js';
|
|
3
|
+
import { approvalResolutionDetail, directSafetyStopOf, resolutionOfDecisionFailure } from './approvalResolution.js';
|
|
4
4
|
import { readDecisionRefusalAsk } from './decisionRefusal.js';
|
|
5
5
|
import { publishQuestionFrame, registerLocalQuestionResponder, hasQuestionOverlay, } from '../liveQuestionStore.js';
|
|
6
6
|
import { hostLog } from '../host.js';
|
|
@@ -136,9 +136,10 @@ async function surfaceGateAndDecide(deps, taskId, askArgsByCall, signal, parkGat
|
|
|
136
136
|
return { kind: 'decided', ...at, decision: 'deny', ...(declinedReceipt !== undefined ? { receipt: declinedReceipt } : {}) };
|
|
137
137
|
}
|
|
138
138
|
catch (e) {
|
|
139
|
+
const directStop = directSafetyStopOf(e);
|
|
139
140
|
const failureTexts = wireFailureTextsOf(e);
|
|
140
141
|
hostLog('debug', `liveHitlAskWire: decide failed: ${failureTexts.log}`);
|
|
141
|
-
return resolutionOfDecisionFailure(e, { lane: 'ask', route: 'ask_decide', gatedCallId, detail: `decide failed: ${failureTexts.reason}${decideFailureNote(e, attemptedDecision)}
|
|
142
|
+
return resolutionOfDecisionFailure(e, { lane: 'ask', route: 'ask_decide', gatedCallId, detail: `decide failed: ${failureTexts.reason}${decideFailureNote(e, attemptedDecision)}`, ...(directStop !== undefined ? { directStop } : {}) });
|
|
142
143
|
}
|
|
143
144
|
}
|
|
144
145
|
function argsByCallOf(led) {
|
|
@@ -207,6 +207,7 @@ const PERSISTED_RULE_MATCH_KEYS = Object.freeze({
|
|
|
207
207
|
name_prefix: 'rules.match.namePrefix',
|
|
208
208
|
host: 'rules.match.host',
|
|
209
209
|
subdomain: 'rules.match.subdomain',
|
|
210
|
+
pattern: 'rules.match.pattern',
|
|
210
211
|
});
|
|
211
212
|
export function persistedRuleMatchLabel(ruleOrMatch, lang) {
|
|
212
213
|
const word = typeof ruleOrMatch === 'string' ? ruleOrMatch : ownSlot(ruleOrMatch, 'match');
|
|
@@ -43,6 +43,9 @@ export interface PlanReviewQuestionIdReading {
|
|
|
43
43
|
}
|
|
44
44
|
export declare function planReviewTaskIdFromQuestionId(questionId: {} | null | undefined): PlanReviewQuestionIdReading | undefined;
|
|
45
45
|
export declare function planReviewOfferedModeOf(card: string | PlanReviewCardLike): PlanReviewOfferedMode;
|
|
46
|
+
export declare function planReviewShownLabelsOf(questionId: {} | null | undefined): readonly string[] | undefined;
|
|
47
|
+
export declare function planReviewAnswerChoiceOf(questionId: {} | null | undefined, answer: QuestionAnswer | null | undefined): PlanReviewChoice | 'dismissed';
|
|
48
|
+
export declare function planReviewAnswerDecisionOf(questionId: {} | null | undefined, answer: QuestionAnswer | null | undefined): 'approve' | 'reject' | 'dismissed';
|
|
46
49
|
export interface ArmPlanReviewOptions {
|
|
47
50
|
submittedInPlanMode?: boolean;
|
|
48
51
|
readGateInstanceKeys?: PlanReviewGateInstanceReader;
|
|
@@ -56,6 +59,7 @@ export interface PlanReviewOutcomeMeta {
|
|
|
56
59
|
dispatchNo: number;
|
|
57
60
|
decision: 'approve' | 'reject';
|
|
58
61
|
effect: PlanReviewDecisionEffect;
|
|
62
|
+
cause?: 'stored_form_unsupported';
|
|
59
63
|
}
|
|
60
64
|
export declare function planReviewOutcomeTail(taskId: string, decision: 'approve' | 'reject', effect: PlanReviewDecisionEffect, cause?: 'stored_form_unsupported'): string;
|
|
61
65
|
export type PlanReviewWireClient = {
|