@makaio/framework 1.0.0-dev-1788966380232 → 1.0.0-dev-1789000242829
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/dist/.makaio-build.json +2 -2
- package/dist/{2020-CpDjcHDh.mjs → 2020-DvDj4r_K.mjs} +1 -1
- package/dist/{account-identity-D00LLclm.mjs → account-identity-CNdiLYaM.mjs} +1 -1
- package/dist/{adapter-D92pfm_b.mjs → adapter-BdMny6vw.mjs} +1 -1
- package/dist/adapters/claude/index.d.mts +24 -24
- package/dist/adapters/index.mjs +1 -1
- package/dist/artifact-Cxm5ZX7L.mjs +1 -0
- package/dist/{auth-CB4an9bh.mjs → auth-BIgwGHp-.mjs} +1 -1
- package/dist/authority-state-bootstrap-DVFYemDL.mjs +1 -0
- package/dist/{automation-trigger-xNDX0Am_.mjs → automation-trigger-CQNQpzkA.mjs} +1 -1
- package/dist/bus/index.mjs +8 -1
- package/dist/{caller-owned-adapter-stub-oM1G1KvC.mjs → caller-owned-adapter-stub-NiR7KT2N.mjs} +1 -1
- package/dist/{canonical-model-D7Cg0l2R.mjs → canonical-model-BMnzRhG_.mjs} +1 -1
- package/dist/{capabilities-D2ggcMem.mjs → capabilities-CEwSeTB3.mjs} +1 -1
- package/dist/{client-CpUVfDxa.mjs → client-C0HcPzvw.mjs} +1 -1
- package/dist/{code-execution-CMqsHnGg.mjs → code-execution-BhUo84eg.mjs} +1 -1
- package/dist/{compression-Civ-rf-O.mjs → compression-DvPXSBWS.mjs} +1 -1
- package/dist/{config-namespace-CQnsvr77.mjs → config-namespace-CE3KasJn.mjs} +1 -1
- package/dist/contracts/adapter/index.d.mts +1 -1
- package/dist/contracts/adapter/index.mjs +1 -1
- package/dist/contracts/artifact/index.d.mts +3 -3
- package/dist/contracts/artifact/index.mjs +1 -1
- package/dist/contracts/auth/index.mjs +1 -1
- package/dist/contracts/automation-trigger/index.mjs +1 -1
- package/dist/contracts/canonical-model/index.mjs +1 -1
- package/dist/contracts/capabilities/index.d.mts +1 -1
- package/dist/contracts/capabilities/index.mjs +1 -1
- package/dist/contracts/client/index.d.mts +1 -1
- package/dist/contracts/client/index.mjs +1 -1
- package/dist/contracts/code-execution/index.mjs +1 -1
- package/dist/contracts/common/index.mjs +1 -1
- package/dist/contracts/config/index.mjs +1 -1
- package/dist/contracts/extension/index.d.mts +2 -2
- package/dist/contracts/extension/index.mjs +1 -1
- package/dist/contracts/facet/index.d.mts +1 -1
- package/dist/contracts/facet/index.mjs +1 -1
- package/dist/contracts/harness/index.d.mts +1 -1
- package/dist/contracts/harness/index.mjs +1 -1
- package/dist/contracts/host/index.mjs +1 -1
- package/dist/contracts/index.d.mts +92 -226
- package/dist/contracts/index.mjs +1 -1
- package/dist/contracts/materialization/index.d.mts +2 -2
- package/dist/contracts/materialization/index.mjs +1 -1
- package/dist/contracts/model-registry/index.mjs +1 -1
- package/dist/contracts/native-session-supervisor/index.mjs +1 -1
- package/dist/contracts/platform/index.mjs +1 -1
- package/dist/contracts/provider/index.mjs +1 -1
- package/dist/contracts/reaction/index.mjs +1 -1
- package/dist/contracts/session/index.d.mts +2 -2
- package/dist/contracts/session/index.mjs +1 -1
- package/dist/contracts/shared/index.mjs +1 -1
- package/dist/contracts/skill/index.mjs +1 -1
- package/dist/contracts/telemetry/index.mjs +1 -1
- package/dist/contracts/timeout/index.mjs +1 -1
- package/dist/contracts/toast/index.mjs +1 -1
- package/dist/contracts/variant/index.d.mts +1 -1
- package/dist/contracts/variant/index.mjs +1 -1
- package/dist/contracts/worker/index.d.mts +1 -1
- package/dist/contracts/worker/index.mjs +1 -1
- package/dist/contracts/workflow/index.d.mts +3 -3
- package/dist/contracts/workflow/index.mjs +1 -1
- package/dist/{definition-Dqw0YJdi.mjs → definition-o5Dfg5j-.mjs} +1 -1
- package/dist/{dist-DeI9zYMP.mjs → dist-DMIaE8sg.mjs} +1 -1
- package/dist/{execution-attempt-repository--RVils5-.d.mts → execution-attempt-repository-DSpz2kyW.d.mts} +7 -25
- package/dist/{execution-target-_oVNW6Zm.mjs → execution-target-Ba7b_UmX.mjs} +1 -1
- package/dist/{extension-CAi7bbyv.mjs → extension-D9D8tJQY.mjs} +1 -1
- package/dist/{extension-CrghVa93.mjs → extension-GQEL-NCV.mjs} +1 -1
- package/dist/{framework-packages-BOPhhtK7.mjs → framework-packages-DdCJ4JsE.mjs} +1 -1
- package/dist/{handlers-YPTyZDhF.mjs → handlers-CqL2TWbk.mjs} +1 -1
- package/dist/{harness-Ds1I4smU.mjs → harness-CYzkReGi.mjs} +1 -1
- package/dist/{index-LjLUr3Dm.d.mts → index-BIlFSGnW.d.mts} +10 -10
- package/dist/{index-BqR2xDu6.d.mts → index-BTluq4-E.d.mts} +151 -108
- package/dist/{index-nJvYTAbD.d.mts → index-BfwHYuRf.d.mts} +1 -1
- package/dist/{index-MtDz_goH.d.mts → index-BxJRljy-.d.mts} +274 -86
- package/dist/{index-BKwYE1Qk.d.mts → index-Bzxs2nVR.d.mts} +5 -5
- package/dist/{index-BkQlL0Pl.d.mts → index-CCNCo440.d.mts} +5 -5
- package/dist/{index-v9TbeVee2.d.mts → index-CRM23ToM2.d.mts} +5 -5
- package/dist/{index-Bxq_zO2E.d.mts → index-CilWtThn.d.mts} +4 -4
- package/dist/{index-B7wjmaev.d.mts → index-CjMMvZch.d.mts} +12 -12
- package/dist/{index-ud9i9pue.d.mts → index-DCHdW5g-.d.mts} +16 -16
- package/dist/{index-BT5qcsEf2.d.mts → index-DR308wUB2.d.mts} +18 -18
- package/dist/{index-DU9Y9tes2.d.mts → index-Dckvm0Ml2.d.mts} +12 -12
- package/dist/{index-Bnm0QvJ4.d.mts → index-DvoitgXV.d.mts} +9 -9
- package/dist/{index-DzlGAEws.d.mts → index-Dzozmb5u.d.mts} +1 -1
- package/dist/{index-DO633_D-.d.mts → index-GTCM4lXx.d.mts} +38 -38
- package/dist/{index-09eal6WI2.d.mts → index-hm8NV4CJ2.d.mts} +7 -7
- package/dist/kernel/cli/index.mjs +1 -1
- package/dist/kernel/cli/register.mjs +1 -1
- package/dist/kernel/cli/schemas.mjs +1 -1
- package/dist/kernel/extension/index.d.mts +1 -1
- package/dist/kernel/extension/index.mjs +1 -1
- package/dist/kernel/index.d.mts +2 -2
- package/dist/kernel/index.mjs +1 -1
- package/dist/kernel/namespace/index.mjs +1 -1
- package/dist/kernel/observability/index.d.mts +1 -1
- package/dist/kernel/observability/index.mjs +1 -1
- package/dist/kernel/providers/index.mjs +1 -1
- package/dist/kernel/window/index.mjs +1 -1
- package/dist/kind-registration-BanX_UAF.mjs +1 -0
- package/dist/{materialization-BwC7pVg2.mjs → materialization--bg6ZwQd.mjs} +1 -1
- package/dist/mcp-http-server/index.mjs +1 -1
- package/dist/model-Dya0clsM.mjs +1 -0
- package/dist/{namespace-wuGMWlyz.d.mts → namespace-B0_Sg-1m.d.mts} +2 -2
- package/dist/{namespace-CnRcpgJ8.mjs → namespace-CD9mJGhU.mjs} +1 -1
- package/dist/{namespace-BYsKOw-g.d.mts → namespace-CY-9Evdf.d.mts} +3 -3
- package/dist/{namespace-B1sjokHd.d.mts → namespace-CfA0C0JR.d.mts} +2 -2
- package/dist/namespace-D53UGrP6.mjs +1 -0
- package/dist/{namespace-Cy62a3YP.d.mts → namespace-Dmbm2JzV.d.mts} +2 -2
- package/dist/{native-session-supervisor-B0rziwHI.mjs → native-session-supervisor-i3PeijHn.mjs} +1 -1
- package/dist/{orchestrator-shared-CmS8iU9_.mjs → orchestrator-shared-DMldWEah.mjs} +1 -1
- package/dist/{ownership-memory-handler-DMirNILL.mjs → ownership-memory-handler-LXaweX6V.mjs} +1 -1
- package/dist/{package-Co36_pRw.mjs → package-BFto8lbP.mjs} +1 -1
- package/dist/package-BT94BLu4.mjs +7 -0
- package/dist/{package-Bl0mcGb8.d.mts → package-BaTrCWZl.d.mts} +46 -42
- package/dist/package.json +1 -1
- package/dist/packages-DAw3Z011.mjs +1 -0
- package/dist/{profile-C9RV7ao-.mjs → profile-Cjq4QnUQ.mjs} +1 -1
- package/dist/{provider-context-BPITm0cn.mjs → provider-context-BpabfMlj.mjs} +1 -1
- package/dist/{provider-context-CyGvwXPz.mjs → provider-context-CYUUoI6x.mjs} +1 -1
- package/dist/{resolved-M6PyrgFr.mjs → resolved-XQTiHgrA.mjs} +1 -1
- package/dist/runtime-node/index.d.mts +1 -1
- package/dist/runtime-node/index.mjs +1 -1
- package/dist/runtime-node/workflow-execution-bus-access.mjs +1 -1
- package/dist/runtime-node/workflow-worker/index.d.mts +1 -1
- package/dist/runtime-node/workflow-worker/index.mjs +1 -1
- package/dist/{schema-DrHrto2J.mjs → schema-BVbkNHVQ.mjs} +1 -1
- package/dist/{schemas-DGKWi7mk.d.mts → schemas-CQe4xCRn.d.mts} +2 -2
- package/dist/{schemas-D2HmGmCt.d.mts → schemas-CSeLgroC.d.mts} +1 -1
- package/dist/{schemas-DRho446W.mjs → schemas-NKlV5jqJ.mjs} +1 -1
- package/dist/{schemas-DyZNwquY.mjs → schemas-QEr2LI43.mjs} +1 -1
- package/dist/{schemas-CvUe_yff.d.mts → schemas-bcDK-fK3.d.mts} +18 -9
- package/dist/{schemas-CQKfd2Xd.mjs → schemas-pHboaOxJ.mjs} +1 -1
- package/dist/{schemas-BYyT43gX.d.mts → schemas-yXs929kr.d.mts} +3 -3
- package/dist/{selection-BDs7K53w.mjs → selection-D7V0wyHX.mjs} +1 -1
- package/dist/services/adapter-runtime/index.d.mts +3 -3
- package/dist/services/adapter-runtime/index.mjs +1 -1
- package/dist/services/adapter-runtime/namespace.d.mts +1 -1
- package/dist/services/adapter-runtime/schemas.d.mts +1 -1
- package/dist/services/adapter-subsystem/index.mjs +1 -1
- package/dist/services/adapter-subsystem/namespace.mjs +1 -1
- package/dist/services/agent-runtime/index.d.mts +2 -2
- package/dist/services/agent-runtime/namespace.d.mts +1 -1
- package/dist/services/agent-runtime/schemas.d.mts +1 -1
- package/dist/services/context-rules/index.d.mts +3 -3
- package/dist/services/execution-target/index.mjs +1 -1
- package/dist/services/execution-target/namespace.mjs +1 -1
- package/dist/services/execution-target/schemas.mjs +1 -1
- package/dist/services/harness/index.d.mts +3 -3
- package/dist/services/index.d.mts +14 -14
- package/dist/services/index.mjs +1 -1
- package/dist/services/materialization/index.mjs +1 -1
- package/dist/services/provider-context/index.mjs +1 -1
- package/dist/services/session/handlers/index.mjs +1 -1
- package/dist/services/session/index.d.mts +1 -1
- package/dist/services/session/index.mjs +1 -1
- package/dist/services/session/messages/namespace.d.mts +1 -1
- package/dist/services/session/messages/namespace.mjs +1 -1
- package/dist/services/session/orchestrator-testing/index.mjs +1 -1
- package/dist/services/session/session-events/namespace.mjs +1 -1
- package/dist/services/session/testing/index.mjs +1 -1
- package/dist/services/session/testing/orchestrator-shared.mjs +1 -1
- package/dist/services/session/turns/namespace.mjs +1 -1
- package/dist/services/session-editor/index.mjs +1 -1
- package/dist/services/settings/index.mjs +1 -1
- package/dist/services/settings/storage/clients-namespace.mjs +1 -1
- package/dist/services/settings/storage/extension-configs/namespace.d.mts +3 -3
- package/dist/services/settings/storage/index.mjs +1 -1
- package/dist/services/settings/storage/providers-namespace.mjs +1 -1
- package/dist/services/subagent/index.mjs +1 -1
- package/dist/services/subagent-template/index.d.mts +2 -2
- package/dist/services/subagent-template/namespace.d.mts +1 -1
- package/dist/services/subagent-template/schemas.d.mts +1 -1
- package/dist/services/tool-approval/index.mjs +1 -1
- package/dist/services/tools/index.mjs +1 -1
- package/dist/services/workflow-transitions/index.mjs +1 -1
- package/dist/{session-Cn8z1hxD.mjs → session-CAKfa5o8.mjs} +1 -1
- package/dist/{session-9C42TPQq.mjs → session-CODDwsGa.mjs} +1 -1
- package/dist/{shared-DqvfJVYk.mjs → shared-CkCrHz66.mjs} +1 -1
- package/dist/{skill-BmRp8GhW.mjs → skill-91kZNQnF.mjs} +1 -1
- package/dist/{tool-approval-service-DchkAdAr.mjs → tool-approval-service-BV3WxxX6.mjs} +1 -1
- package/dist/{tools-r50UBPJ9.mjs → tools-CElCajoS.mjs} +1 -1
- package/dist/{transition-CgsrmsfE.d.mts → transition-bYkXnLY2.d.mts} +1 -1
- package/dist/{types-ZvPhKp3j.d.mts → types-BNKqcHfP.d.mts} +5 -5
- package/dist/{version-sDSWOMn_.mjs → version-DdGhNoY5.mjs} +1 -1
- package/dist/{view-builder-D54kvyf7.d.mts → view-builder-CA5qUx85.d.mts} +10 -10
- package/dist/{visibility-syKffo3e.mjs → visibility-cMXbf9nY.mjs} +1 -1
- package/dist/{worker-DRQGyWAS.mjs → worker-B0xwfo9-.mjs} +1 -1
- package/dist/{worker-DzbPk2YI.mjs → worker-Cx1JDOB9.mjs} +1 -1
- package/dist/{workflow-D-yrAZW8.mjs → workflow-5yHn_Knq.mjs} +1 -1
- package/dist/workflow-engine/execution-attempt-repository.d.mts +1 -1
- package/dist/workflow-engine/index.d.mts +70 -70
- package/dist/workflow-engine/index.mjs +1 -1
- package/dist/workflow-engine/package.d.mts +1 -1
- package/dist/workflow-engine/package.mjs +1 -1
- package/dist/workflow-engine/provider-operation.d.mts +1 -1
- package/dist/workflow-engine/testing/conformance.d.mts +1 -1
- package/dist/workflow-engine/testing/index.d.mts +15 -4
- package/dist/workflow-engine/testing/index.mjs +1 -1
- package/dist/workflow-engine/testing/sqlite.d.mts +1 -1
- package/dist/workflow-engine/workflow-orchestrator.mjs +1 -1
- package/dist/{workflow-transitions-D5RvMSnf.mjs → workflow-transitions-DH246j6E.mjs} +1 -1
- package/dist/workflow-worker-BAO7pQpx.mjs +2 -0
- package/package.json +1 -1
- package/dist/artifact-_pN73_7c.mjs +0 -1
- package/dist/authority-state-bootstrap-DgoHPc9J.mjs +0 -1
- package/dist/kind-registration-DggkrLkv.mjs +0 -1
- package/dist/model-Cn1IFEP8.mjs +0 -1
- package/dist/namespace-DFc1nkal.mjs +0 -1
- package/dist/package-B-xpYKe8.mjs +0 -7
- package/dist/packages-COqPg5TI.mjs +0 -1
- package/dist/workflow-worker-CrnDwpkP.mjs +0 -2
- /package/dist/{ajv-IlnfOGAj.mjs → ajv-Dz-0DD7m.mjs} +0 -0
- /package/dist/{attach-error-DOlUtquX.mjs → attach-error-D5BWfaBO.mjs} +0 -0
- /package/dist/{capability-BQHyskJB.mjs → capability-BnQx1BWc.mjs} +0 -0
- /package/dist/{common-CylczUIW.mjs → common-Bta2ivrd.mjs} +0 -0
- /package/dist/{definitions-2T95Q-y6.mjs → definitions-CyFaNG_c.mjs} +0 -0
- /package/dist/{extension-namespace-CWfV3IiR.mjs → extension-namespace-AaHKv6tQ.mjs} +0 -0
- /package/dist/{facet-6tnSbjXc.mjs → facet-De-2AP_o.mjs} +0 -0
- /package/dist/{host-D7v3YlDG.mjs → host-CbaJg6D4.mjs} +0 -0
- /package/dist/{identity-CxMRRAXx.mjs → identity-B6RqbCn7.mjs} +0 -0
- /package/dist/{model-registry-BTjKBCCw.mjs → model-registry-DVTFd0RF.mjs} +0 -0
- /package/dist/{modes-Bo9Vv5c9.mjs → modes-Dc9_sSbr.mjs} +0 -0
- /package/dist/{namespace-DX3QsYpv.mjs → namespace-BZ7UQmW4.mjs} +0 -0
- /package/dist/{namespace-Dyxpur8_.mjs → namespace-BnNBM94X.mjs} +0 -0
- /package/dist/{namespace-DORNUF0_.mjs → namespace-DGi7tw_W.mjs} +0 -0
- /package/dist/{namespace-BCSJz417.mjs → namespace-KYIbWPvl.mjs} +0 -0
- /package/dist/{ownership-recovery-guard-CYA5CsiO.mjs → ownership-recovery-guard-BIB5uqgz.mjs} +0 -0
- /package/dist/{platform-BdLHWgVc.mjs → platform-BObC-WJA.mjs} +0 -0
- /package/dist/{providers-DGTA-lki.mjs → providers-BysYiNMO.mjs} +0 -0
- /package/dist/{reaction-aQJGWUWl.mjs → reaction-Cev6JNcb.mjs} +0 -0
- /package/dist/{schema-mXXJcaQT.mjs → schema-bfw9nz8B.mjs} +0 -0
- /package/dist/{schema-introspection-BsWP1vGC.mjs → schema-introspection-BTS7FZT_.mjs} +0 -0
- /package/dist/{schemas-HffXbw8C.mjs → schemas-A2hlgeNu.mjs} +0 -0
- /package/dist/{schemas-NYUz8K9Q.mjs → schemas-B3UNnzKG.mjs} +0 -0
- /package/dist/{schemas-7fHmNUQc.mjs → schemas-BEDq3Psz.mjs} +0 -0
- /package/dist/{schemas-MIYusvwn.mjs → schemas-mLjTSUvJ.mjs} +0 -0
- /package/dist/{semver-_h8-BJ8k.mjs → semver-ByPlHR3P.mjs} +0 -0
- /package/dist/{shared-schemas-CaL1iEk6.mjs → shared-schemas-CKsgVsGX.mjs} +0 -0
- /package/dist/{storage-namespace-definition-4UYuij1r.mjs → storage-namespace-definition-Ct9ohqU0.mjs} +0 -0
- /package/dist/{telemetry-BLYrkonr.mjs → telemetry-Be3u4I7b.mjs} +0 -0
- /package/dist/{timeout-d0dzIY3V.mjs → timeout-Bscg1B-y.mjs} +0 -0
- /package/dist/{ui-config-CsH94fwa.mjs → ui-config-Bl2Wbkr-.mjs} +0 -0
- /package/dist/{variant-BZ9UcJBi.mjs → variant-B5j5wR2p.mjs} +0 -0
- /package/dist/{window-registry-DQkv5wM9.mjs → window-registry-DWHz8TA5.mjs} +0 -0
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{adapterSessionClaims as e,adapterSessionClaimsDual as t,agents as n,agentsDual as r,runtimeInstanceIncarnationCounters as i,runtimeInstanceIncarnationCountersDual as a,runtimeInstances as o,runtimeInstancesDual as s,sessions as c,sessionsDual as l}from"./services/session/storage/schema.mjs";import"./schema-DrHrto2J.mjs";import{a as u,n as d,o as f}from"./namespace-CnRcpgJ8.mjs";import{C as p,Ct as m,D as h,E as g,F as _,G as v,I as ee,J as y,K as te,N as ne,P as re,Q as b,S as ie,St as ae,T as oe,U as se,V as ce,W as le,X as x,Y as ue,Z as S,_ as de,_t as fe,at as pe,bt as me,ct as he,d as ge,dt as _e,f as ve,g as ye,gt as be,h as xe,it as Se,l as Ce,lt as we,m as Te,mt as Ee,p as De,pt as Oe,q as ke,rt as Ae,st as je,u as Me,ut as Ne,v as Pe,vt as Fe,w as Ie,xt as Le,y as Re,z as ze}from"./handlers-YPTyZDhF.mjs";import{TurnStorageSubjects as C}from"./services/turn/namespace.mjs";import{a as w,n as Be,r as Ve,t as He}from"./ownership-recovery-guard-CYA5CsiO.mjs";import{SessionStorageSubjects as T}from"./services/session/storage/namespace.mjs";import{AdapterRuntimeSubjects as Ue}from"./services/adapter-runtime/namespace.mjs";import{MessageStorageSubjects as E}from"./services/session/messages/namespace.mjs";import{o as We}from"./provider-context-CyGvwXPz.mjs";import{n as Ge}from"./namespace-Dyxpur8_.mjs";import{a as Ke,c as qe,d as Je,i as Ye,l as Xe,o as Ze,s as Qe,u as $e}from"./ownership-memory-handler-DMirNILL.mjs";import{z as D}from"zod";import{createBusNamespace as et}from"@makaio/framework/core";import{AdapterSubjects as tt,AgentSubjects as O,CanonicalModelSubjects as nt,CapabilitySubjects as rt,ClientSubjects as it,CompressionModeSchema as at,FORK_SESSION_LINEAGE_KIND as ot,ForkTransformsSchema as st,MessageRoutingSchema as ct,MessageStorageSubjects as lt,ROOT_SESSION_LINEAGE_KIND as ut,SessionContextSchema as dt,SessionDiscoveredSchema as ft,SessionOwnershipSettleMovementRequestSchema as pt,SessionOwnershipStorageSubjects as k,SessionRecordMetadataSchema as mt,SessionStorageSetRequestSchema as ht,SessionStorageUpdateSchema as gt,SessionSubjects as A,TurnIngestionMarkerSchema as _t,compareMessageCursorAsc as vt,compareMessageCursorDesc as yt,isCanonicalModelParseError as bt,isInactiveSafeLeadDesignationMutation as xt,messageToCursor as j,normalizeSessionOwnershipClaimRequest as St,parseCanonicalModel as Ct,resolveResumableAdapterSessionId as wt,teardownWasObserved as Tt}from"@makaio/framework/contracts";import{MakaioBus as Et,NoHandlerError as Dt,TimeoutError as Ot}from"@makaio/framework/bus";import{KernelSubjects as kt}from"@makaio/framework/kernel";import{BaseService as At}from"@makaio/framework/service-base";import{blob as jt,index as Mt,integer as Nt,primaryKey as Pt,sqliteTable as Ft,text as It,uniqueIndex as Lt}from"drizzle-orm/sqlite-core";import{index as Rt,primaryKey as zt}from"drizzle-orm/pg-core";import{acquireTransactionLocks as Bt,defineDialectSchema as Vt,defineDualTable as Ht,didAffectRows as M,executeTransaction as N,getRawSqlExecutor as Ut,getStorageEngine as Wt,resolveSchema as P,resolveStorageEngine as Gt}from"@makaio/framework/storage/drizzle";import{and as F,asc as Kt,count as I,desc as qt,eq as L,gt as Jt,gte as Yt,inArray as R,isNotNull as Xt,isNull as z,lt as Zt,lte as Qt,ne as $t,not as en,or as tn,sql as B}from"drizzle-orm";import{createStorageNamespaceDefinition as nn}from"@makaio/framework/storage";import{ClientIdentityObservationSchema as rn}from"@makaio/framework/contracts/client";import{ImportCursorStorageSubjects as an}from"@makaio/framework/adapters";async function on(e,t,n,r){try{let t=await e.requestOptional(k.getRuntimeInstance,{instanceId:n.ownerInstanceId,machineId:n.machineId});if(t.handled&&t.data.instance!==null&&t.data.instance.retiredAt!==null)return!0}catch{}try{let i=await e.requestOptional(tt.stopAgent,{adapterId:n.adapterId,agentId:t,ownerInstanceId:n.ownerInstanceId,...r&&{teardown:`connector-only`}});return i.handled&&Tt(i.data.evidence)}catch{return!1}}function sn(e,t,n){let r=new Map;for(let t of e){if(t.ownerInstanceId===null)return null;let e={adapterId:t.adapterId,machineId:t.machineId,ownerInstanceId:t.ownerInstanceId};r.set(`${e.ownerInstanceId}\0${e.machineId}\0${e.adapterId}`,e)}if(t!==void 0&&n!==void 0){let e={adapterId:n,machineId:t.machineId,ownerInstanceId:t.instanceId};r.set(`${e.ownerInstanceId}\0${e.machineId}\0${e.adapterId}`,e)}return[...r.values()]}async function cn(e,t,n={releaseClaims:!0}){let r=await e.requestOptional(k.read,{agentId:t}).catch(()=>void 0);if(r===void 0)return{released:!1,claimCount:0};let i=r.handled?r.data.ownership:null;if(i===null)return{released:!1,claimCount:0};let a=i.claims,o=await e.requestOptional(w.get,{agentId:t}).catch(()=>void 0),s=o?.handled?o.data.agent:null,c=sn(a,s?.runtimeOwner,s?.adapterId),l=c!==null&&await Promise.all(c.map(r=>on(e,t,r,!n.releaseClaims))),u=l!==!1&&l.every(Boolean);if(!n.releaseClaims)return{released:!1,claimCount:a.length};if(a.length===0)return{released:u,claimCount:0};try{let n=await e.request(A.ownership.release,{agentId:t,disposition:u?`released`:`abandoned`});return{released:u&&n.markedClaims.length===0&&n.releasedProviderSessionIds.length===a.length,claimCount:a.length}}catch{try{await e.request(A.ownership.release,{agentId:t,disposition:`abandoned`})}catch{}return{released:!1,claimCount:a.length}}}function ln(e,t){if(t!==void 0){if(t.outcome===`lead-conflict`){console.debug(`[session.agent.added] lead designation for ${e} lost to ${t.currentLeadAgentId??`no lead`}`);return}t.outcome!==`claimed`&&t.outcome!==`idempotent`&&console.debug(`[session.agent.added] lead designation for ${e} refused: ${t.outcome}`)}}function un(e){return Error(`[session.agent.removed] Failed to terminalize agent ${e}`)}async function dn(e){try{await e();return}catch(e){return e}}function fn(e){return e.on(A.agent.added,async t=>{let n=await e.requestOptional(T.get,{sessionId:t.payload.sessionId}),r=n.handled?n.data.session:void 0;if(!r)return;let i=t.payload.role??(r.leadAgentId?`member`:`lead`),a=i===`lead`?await fe(e,{sessionId:t.payload.sessionId,agentId:t.payload.agentId,expectedLeadAgentId:r.leadAgentId??null}):void 0;i===`lead`&&ln(t.payload.agentId,a);let o=a?.outcome===`claimed`||a?.outcome===`idempotent`,s=i===`lead`&&a===void 0;if(!r.adapterName&&(o||s)){let n=o?t.payload.agentId:r.leadAgentId;await pn(e,t.payload,n);return}await e.requestOptional(T.update,{sessionId:t.payload.sessionId,lastActivityAt:Date.now()})})}async function pn(e,t,n){let r=await e.requestOptional(T.update,{sessionId:t.sessionId,lastActivityAt:Date.now(),identity:{adapterName:t.adapterName,adapterId:t.adapterId,adapterSessionId:t.adapterSessionId},expectIdentityOpenForLead:n??null});!r.handled||r.data.success||await e.requestOptional(T.update,{sessionId:t.sessionId,lastActivityAt:Date.now()})}function mn(e){return e.on(A.agent.removed,async t=>{let n=await e.requestOptional(T.get,{sessionId:t.payload.sessionId});if(!(n.handled&&n.data.session))return;let r=await dn(async()=>{let n=await e.requestOptional(w.updateStatus,{agentId:t.payload.agentId,status:`disposed`});if(!n.handled||!n.data.success)throw un(t.payload.agentId)}),i=await dn(async()=>{await fe(e,{sessionId:t.payload.sessionId,agentId:t.payload.agentId,expectedLeadAgentId:t.payload.agentId,clear:!0})}),a=await dn(async()=>{await cn(e,t.payload.agentId,{releaseClaims:r===void 0})}),o=await dn(async()=>{await e.requestOptional(T.update,{sessionId:t.payload.sessionId,lastActivityAt:Date.now()})});if(r!==void 0)throw r;if(i!==void 0)throw i;if(a!==void 0)throw a;if(o!==void 0)throw o})}function hn(e){return e.on(O.started,async t=>{let{agentId:n,adapterSessionId:r,adapterName:i,adapterId:a,sessionId:o}=t.payload;if(!r||!o)return;let s=await e.requestOptional(w.get,{agentId:n}),c=s.handled?s.data.agent:null;c&&!c.adapterSessionId&&await e.requestOptional(w.updateRuntime,{agentId:n,adapterSessionId:r}),await e.requestOptional(T.update,{sessionId:o,reconcileAdapterSession:{agentId:n,adapterName:i,adapterId:a,adapterSessionId:r,lastActivityAt:Date.now()}})})}async function gn(e,t){try{let n=await e.requestOptional(tt.getCapabilities,{adapterId:t});return n.handled?new Set(n.data.capabilities).has(`session:resume`):!1}catch{return!1}}async function _n(e,t){if(t!==void 0)return t;let n=await e.requestOptional(Ue.getMachineId,{});return n.handled?n.data.machineId:void 0}async function vn(e,t,n,r,i){let a=pe(t,n);return he(_e({intent:`resume`,session:t,localMachineId:i,adapterSupportsNative:await gn(e,r),targetAdapterName:n.adapterName,currentCwd:n.cwd,targetCwd:n.cwd,resumeIdentity:a}),a.adapterSessionId)}function yn(e,t){let{agentId:n,storedAdapterId:r}=e;switch(t?.kind){case`rehydrated`:case`joined`:return{agentId:n,adapterId:t.agent.adapterId,success:!0};case`deferred`:return{agentId:n,adapterId:r,success:!0};case`refused`:return{agentId:n,adapterId:r,success:!1,error:`Ownership reservation refused: ${t.message??t.outcome}`};case`lost`:return{agentId:n,adapterId:r,success:!1,error:`Another runtime claimed this agent’s recovery`};case`stale-plan`:return{agentId:n,adapterId:r,success:!1,error:`Agent currency kept changing while its restart was planned`};default:return{agentId:n,adapterId:r,success:!1,error:`Restart produced no result`}}}async function bn(e,t,n,r){let{agentId:i,adapterId:a}=n;for(let o=0;o<=1;o+=1){let s=await oe(e,n,async()=>{let a=await re(e,i);if(a===null)return{kind:`lost`};if(!_(a))return a.agent.status===`disposed`?{kind:`refused`,outcome:`agent-disposed`}:{kind:`lost`};Object.assign(n,a.agent);let o=Se(await Ae(e,{adapterName:n.adapterName,storedAdapterId:n.adapterId,...r!==void 0&&{machineId:r}}));if(o===void 0)return{kind:`deferred`,reason:`machine-identity-unavailable`};let s=await vn(e,t,n,o.adapterId,o.machineId);if(we(s))return{kind:`deferred`,reason:`machine-identity-unavailable`};let c=await ne(e,a,o,s.resumeAdapterSessionId);return{agent:n,sessionId:n.sessionId,instance:o,resumeProviderSessionId:s.resumeAdapterSessionId,recoveryGuard:c,...n.cwd!==void 0&&{cwd:n.cwd},...n.model!==void 0&&{model:n.model}}});if(!(s?.kind===`stale-plan`&&o<1))return yn({agentId:i,storedAdapterId:a},s)}return{agentId:i,adapterId:a,success:!1,error:`Agent restart exhausted its recovery-plan retry`}}function xn(e){let t=e instanceof Error?e.cause:void 0;return t instanceof Error?t.message:e instanceof Error?e.message:String(e)}function Sn(e){return e.on(A.restartAgents,async t=>{let{sessionId:n,machineId:r}=t.payload,i=await e.requestOptional(w.listBySession,{sessionId:n}),a=i.handled?i.data.agents:[],o=[],s=await _n(e,r),c=await e.requestOptional(T.get,{sessionId:n}),l=c.handled?c.data.session:null;for(let t of a){if(l===null){o.push({agentId:t.agentId,adapterId:t.adapterId,success:!1,error:`Session row could not be read; agent has no reachable recovery path`});continue}try{o.push(await bn(e,l,t,s))}catch(e){o.push({agentId:t.agentId,adapterId:t.adapterId,success:!1,error:xn(e)})}}t.setResult({sessionId:n,results:o})})}function Cn(e){let t=be({bus:e.bus,machineId:e.machineId,topology:e.topology??`shared-machine`,...e.instanceId!==void 0&&{instanceId:e.instanceId}});return{cleanups:[En(e),Dn(e),On(e),wn(e),kn(e),Sn(e.bus),An(e),jn(e),Mn(e),fn(e.bus),mn(e.bus),hn(e.bus),...t.cleanups,Ee(e.bus)],ownership:t.ownership}}function wn(e){let{bus:t}=e;return t.on(A.turn.await,async e=>{let{sessionId:n,turnId:r,timeoutMs:i}=e.payload,a=new AbortController,o=t.once(A.turn.completed,{timeoutMs:i,filter:{sessionId:n,turnId:r},signal:a.signal});o.catch(()=>void 0);let s=await Tn(t,n,r);if(s!==void 0){a.abort(),e.setResult({completion:s});return}try{let t=await o;e.setResult({completion:t.payload})}catch(e){throw e instanceof Error&&e.name===`OnceTimeoutError`?new Ot(`session.turn.await`,i):e}})}async function Tn(e,t,n){let r=await e.requestOptional(C.get,{turnId:n}),i=r.handled?r.data.turn:null;if(!(i?.sessionId!==t||i.status!==`completed`&&i.status!==`error`))return{sessionId:t,turnId:n,turnNumber:i.turnNumber,success:i.status===`completed`,...i.error!==void 0&&{error:i.error},...i.usage!==void 0&&{usage:i.usage},...i.initiator!==void 0&&{initiator:i.initiator}}}function En(e){let{bus:t}=e;return t.on(A.create,async e=>{let{sessionId:n,parentSessionId:r,contextInheritance:i,forkPointMessageId:a,branchKind:o,forkTransforms:s,title:c,targetWorkingDirectory:l,executionTargetId:u,metadata:d,spawningToolCallId:f,originWindowId:p,machineId:m}=e.payload,h=n??crypto.randomUUID(),g=r===void 0?void 0:(await t.request(A.get,{sessionId:r})).session;if(r!==void 0&&g===null)throw Error(`[session.create] Parent session not found: ${r}`);let _=g?g.rootSessionId??g.sessionId:void 0,v=Date.now(),ee={sessionId:h,createdAt:v,lastActivityAt:v,agents:[],status:`active`,title:c,parentSessionId:r,contextInheritance:i,forkPointMessageId:a,branchKind:o,forkTransforms:s,targetWorkingDirectory:l,executionTargetId:u,metadata:d,spawningToolCallId:f,..._!==void 0&&{rootSessionId:_},...m!==void 0&&{machineId:m}},y=await t.requestOptional(T.set,{sessionId:h,session:ee,ifAbsent:!0});if(y.handled&&!y.data.success){e.setResult({sessionId:h});return}await t.emit(A.created,{sessionId:h,createdAt:ee.createdAt,parentSessionId:r??null,branchKind:o??null,originWindowId:p??`server`}),e.setResult({sessionId:h})})}function Dn(e){let{bus:t}=e;return t.on(A.get,async e=>{let n=await t.requestOptional(T.get,{sessionId:e.payload.sessionId}),r=n.handled?n.data.session:null;e.setResult({session:r})})}function On(e){let{bus:t}=e;return t.on(A.list,async e=>{let{status:n,limit:r,offset:i,includePreview:a,executionTargetId:o}=e.payload,s=await t.requestOptional(T.list,{status:n??`all`,limit:r,offset:i,includePreview:a,executionTargetId:o}),c=s.handled?s.data.sessions:[],l=s.handled?s.data.total:0;e.setResult({sessions:c,total:l})})}function kn(e){let{bus:t}=e;return t.on(A.close,async e=>{let{sessionId:n}=e.payload,r=await t.requestOptional(T.get,{sessionId:n}),i=r.handled?r.data.session:null;if(!i){e.setResult({success:!1});return}if(i.status===`closed`){e.setResult({success:!0});return}if(i.status!==`active`){e.setResult({success:!1});return}let a=await t.requestOptional(T.update,{sessionId:n,status:`closed`,lastActivityAt:Date.now(),expectedStatus:[`active`]});if(a.handled&&a.data.success){await t.emit(A.closed,{sessionId:n}),e.setResult({success:!0});return}let o=await t.requestOptional(T.get,{sessionId:n});e.setResult({success:o.handled&&o.data.session?.status===`closed`})})}function An(e){let{bus:t}=e;return t.on(A.update,async e=>{let{sessionId:n,executionTargetId:r,approvalPolicyOverride:i,title:a,metadata:o}=e.payload,s=await t.requestOptional(T.update,{sessionId:n,executionTargetId:r,approvalPolicyOverride:i,title:a,metadata:o}),c=s.handled?s.data.success:!1;if(c){let e=[];r!==void 0&&e.push(`executionTargetId`),i!==void 0&&e.push(`approvalPolicyOverride`),a!==void 0&&e.push(`title`),o!==void 0&&e.push(`metadata`),e.length>0&&await t.emit(A.updated,{sessionId:n,changedProperties:e})}e.setResult({success:c})})}function jn(e){let{bus:t}=e;return t.on(A.archive,async e=>{let{sessionId:n}=e.payload,r=await t.requestOptional(T.get,{sessionId:n}),i=r.handled?r.data.session:null;if(!i){e.setResult({success:!1});return}if(i.status===`archived`){e.setResult({success:!0});return}if(i.status!==`closed`){e.setResult({success:!1});return}let a=await t.requestOptional(T.update,{sessionId:n,status:`archived`,lastActivityAt:Date.now(),expectedStatus:[`closed`]});if(a.handled&&a.data.success){await t.emit(A.archived,{sessionId:n}),e.setResult({success:!0});return}let o=await t.requestOptional(T.get,{sessionId:n});e.setResult({success:o.handled&&o.data.session?.status===`archived`})})}function Mn(e){let{bus:t}=e;return t.on(A.purge,async e=>{let{sessionId:n}=e.payload,r=await t.requestOptional(T.get,{sessionId:n}),i=r.handled?r.data.session:null;if(!i){e.setResult({success:!1,error:`Session not found`});return}if(i.status!==`archived`){e.setResult({success:!1,error:`Cannot purge session unless archived. Call close then archive first.`});return}let a=await t.requestOptional(w.listBySession,{sessionId:n}),o=a.handled?a.data.agents:[];if((await Promise.all(o.map(async e=>{let n=await t.requestOptional(w.updateStatus,{agentId:e.agentId,status:`disposed`});return n.handled&&n.data.success}))).some(e=>!e)){e.setResult({success:!1,error:`Cannot purge session because an agent could not be sealed.`});return}if((await Promise.all(o.map(e=>cn(t,e.agentId)))).some(e=>!e.released)){e.setResult({success:!1,error:`Cannot purge session while an owner runtime may still hold an agent connector.`});return}let s=await t.requestOptional(T.list,{status:`all`}),c=s.handled?s.data.sessions:[];for(let e of c)e.parentSessionId===n&&await t.requestOptional(T.update,{sessionId:e.sessionId,parentSessionId:null});let l=await t.requestOptional(d.getEvents,{sessionId:n,options:{limit:1}}),u=l.handled?l.data.totalCount:0;await t.requestOptional(d.deleteBySession,{sessionId:n}),await t.requestOptional(T.delete,{sessionId:n}),await t.emit(A.purged,{sessionId:n}),e.setResult({success:!0,eventsDeleted:u})})}var Nn=class extends At{options;ownership;requireOwnershipInstanceId(){let e=this.ownership?.instanceId;if(e===void 0)throw Error(`Session ownership authority is not initialized`);return e}constructor(e=Et,t={}){super(e),this.options=t}async onInit(){let e=Cn({bus:this.bus,...this.options.machineId!==void 0&&{machineId:this.options.machineId},...this.options.topology!==void 0&&{topology:this.options.topology},instanceId:crypto.randomUUID()});this.ownership=e.ownership,this.addCleanup(async()=>{this.ownership===e.ownership&&(this.ownership=void 0),await e.ownership.close()});for(let t of e.cleanups)this.addCleanup(t);this.addCleanup(m(this.bus)),this.addCleanup(this.scheduleOwnershipReconcile()),await this.reconcileOrphanedTurns()}async onDestroy(){let e=this.ownership;this.ownership=void 0,await e?.close()}scheduleOwnershipReconcile(){let e=this.bus.on(kt.phase.coordinatorReady,async t=>{e(),t.setResult({});try{await this.bus.request(A.ownership.reconcile,{})}catch(e){console.error(`[MakaioSessionService] Ownership reconcile failed:`,e)}});return e}async reconcileOrphanedTurns(){let e=await this.bus.requestOptional(C.listActive,{});if(!e.handled)return;let{turns:t}=e.data;for(let e of t)try{let{transitioned:t}=await this.bus.request(C.complete,{turnId:e.turnId,status:`error`,expectedStatus:`active`,error:`process-restart`});if(t){let t={sessionId:e.sessionId,turnId:e.turnId,turnNumber:e.turnNumber,success:!1,error:`process-restart`,ingestionMarker:`live`};await me(this.bus,{type:`turn.completed`,sessionId:e.sessionId,payload:t}),await this.bus.emit(A.turn.completed,t)}}catch(t){console.error(`[MakaioSessionService] Failed to reconcile orphaned turn ${e.turnId}:`,t)}}};function Pn(e,t){let n=t===void 0?``:` machineId="${t}"`;return Error(`No adapter found for adapterName="${e}"${n}. Ensure adapter-runtime identity handlers are registered; adapter startup verifies live availability.`)}function V(e,t){return JSON.stringify([t??null,e])}var Fn=class{bus;registry=new Map;cleanup;constructor(e){this.bus=e;let t=this.bus.on(tt.initialized,e=>{this.registry.set(V(e.payload.adapterName),e.payload.adapterId),this.registry.set(V(e.payload.adapterName,e.payload.machineId),e.payload.adapterId)}),n=this.bus.on(tt.deinitialized,e=>{let t=[V(e.payload.adapterName),V(e.payload.adapterName,e.payload.machineId)];for(let n of t)this.registry.get(n)===e.payload.adapterId&&this.registry.delete(n)});this.cleanup=()=>{t(),n()}}resolve(e){let t=this.registry.get(V(e));if(!t)throw Pn(e);return t}async resolveAvailable(e,t){try{let{adapterId:n}=await this.bus.request(Ue.resolveId,{adapterName:e,...t!==void 0&&{machineId:t}});return this.registry.set(V(e,t),n),n}catch{let n=this.registry.get(V(e,t));if(n)return n;throw Pn(e,t)}}destroy(){this.cleanup?.(),this.cleanup=void 0,this.registry.clear()}};async function In(e,t){e.emit(E.stored,{message:structuredClone(t)});try{await e.request(d.append,{event:{sessionId:t.sessionId,eventId:crypto.randomUUID(),timestamp:t.timestamp,type:`message`,payload:{messageId:t.messageId,turnId:t.turnId,role:t.role}}})}catch(e){console.error(`[MessageStorage] Failed to emit session event for message:`,e)}}function Ln(e){return{messageId:e.messageId,turnId:e.turnId,sessionId:e.sessionId,role:e.role,contentText:e.contentText,blocks:JSON.parse(e.blocks),agentId:e.agentId??void 0,adapterSessionId:e.adapterSessionId??void 0,adapterMessageId:e.adapterMessageId??void 0,timestamp:e.timestamp,editOf:e.editOf??void 0,origin:e.origin??void 0}}function Rn(e){let{bus:t,db:n}=e,{messages:r}=P(n,f);return t.on(E.append,async e=>{let{message:i,emitEvent:a}=e.payload,o=i.messageId??crypto.randomUUID(),s={...i,messageId:o,blocks:i.blocks??[]};await n.insert(r).values({messageId:o,turnId:s.turnId,sessionId:s.sessionId,role:s.role,contentText:s.contentText,blocks:JSON.stringify(s.blocks),agentId:s.agentId??null,adapterSessionId:s.adapterSessionId??null,adapterMessageId:s.adapterMessageId??null,timestamp:s.timestamp,editOf:s.editOf??null,origin:s.origin??null}),e.setResult({message:s}),(a??!0)&&await In(t,s)})}function zn(e){let{bus:t,db:n}=e,{messages:r}=P(n,f);return t.on(E.getBySession,async e=>{let{sessionId:t,limit:i,after:a,includeAfter:o=!1,order:s=`asc`}=e.payload,c=s===`desc`?qt:Kt,l=n.select().from(r).where(L(r.sessionId,t)).orderBy(c(r.timestamp),c(r.messageId));if(a){let e=s===`desc`?tn(Zt(r.timestamp,a.timestamp),F(L(r.timestamp,a.timestamp),o?Qt(r.messageId,a.messageId):Zt(r.messageId,a.messageId))):tn(Jt(r.timestamp,a.timestamp),F(L(r.timestamp,a.timestamp),o?Yt(r.messageId,a.messageId):Jt(r.messageId,a.messageId)));l=n.select().from(r).where(F(L(r.sessionId,t),e)).orderBy(c(r.timestamp),c(r.messageId))}let u=i??100,d=await l.limit(u+1),f=d.length>u,p=f?d.slice(0,u):d,m=f&&p.length>0?j(p[p.length-1]):null;e.setResult({messages:p.map(Ln),nextCursor:m})})}function Bn(e){let{bus:t,db:n}=e,{messages:r}=P(n,f);return t.on(E.getByTurn,async e=>{let{turnId:t}=e.payload,i=await n.select().from(r).where(L(r.turnId,t)).orderBy(Kt(r.timestamp));e.setResult({messages:i.map(Ln)})})}function Vn(e){let{bus:t,db:n}=e,{messages:r}=P(n,f);return t.on(E.get,async e=>{let{messageId:t}=e.payload,[i]=await n.select().from(r).where(L(r.messageId,t)).limit(1);e.setResult({message:i?Ln(i):null})})}function Hn(e){let{bus:t,db:n}=e,{messages:r}=P(n,f),i=Gt(n).fts;return t.on(E.search,async e=>{let{query:t,sessionId:a,limit:o}=e.payload,s=o??50;if(!t.trim()){e.setResult({messages:[],total:0});return}let{rows:c,total:l}=await i.searchMessages(n,r,{query:t,sessionId:a,limit:s});e.setResult({messages:c.map(Ln),total:l})})}function Un(e){let{bus:t,db:n}=e,{messages:r}=P(n,f),i=Gt(n).fts;return t.on(E.ftsSearch,async e=>{let{query:t,sessionId:a,limit:o=20}=e.payload;if(!t.trim()){e.setResult({results:[],total:0});return}let{results:s,total:c}=await i.searchMessageExcerpts(n,r,{query:t,sessionId:a,limit:o});e.setResult({results:s,total:c})})}function Wn(e){let{bus:t,db:n}=e,{messages:r}=P(n,f);return t.on(E.getByAdapterMessageId,async e=>{let{adapterMessageId:t}=e.payload,[i]=await n.select().from(r).where(L(r.adapterMessageId,t)).limit(1);e.setResult({message:i?Ln(i):null})})}function Gn(e){let{bus:t,db:n}=e,{messages:r}=P(n,f);return t.on(E.upsertByAdapterMessageId,async e=>{let{adapterMessageId:i,sessionId:a,turnId:o,role:s,contentText:c,blocks:l,agentId:u,adapterSessionId:d,timestamp:f,origin:p}=e.payload,[m]=await n.select({messageId:r.messageId,turnId:r.turnId}).from(r).where(F(L(r.adapterMessageId,i),L(r.sessionId,a))).limit(1);if(m){m.turnId===null&&o!==null&&await n.update(r).set({turnId:o}).where(L(r.messageId,m.messageId)),e.setResult({messageId:m.messageId,created:!1});return}let h=crypto.randomUUID();if((await n.insert(r).values({messageId:h,turnId:o,sessionId:a,role:s,contentText:c,blocks:JSON.stringify(l),agentId:u??null,adapterSessionId:d??null,adapterMessageId:i,timestamp:f,editOf:null,origin:p??null}).onConflictDoNothing({target:[r.adapterMessageId,r.sessionId]}).returning({messageId:r.messageId})).length===0){let[t]=await n.select({messageId:r.messageId,turnId:r.turnId}).from(r).where(F(L(r.adapterMessageId,i),L(r.sessionId,a))).limit(1);if(t===void 0)throw Error(`Message upsert conflict winner disappeared before reread completed`);t.turnId===null&&o!==null&&await n.update(r).set({turnId:o}).where(L(r.messageId,t.messageId)),e.setResult({messageId:t.messageId,created:!1});return}e.setResult({messageId:h,created:!0}),await In(t,{messageId:h,sessionId:a,turnId:o,role:s,contentText:c,blocks:l,agentId:u??void 0,adapterSessionId:d??void 0,adapterMessageId:i,timestamp:f,editOf:void 0,origin:p??void 0})})}function Kn(e,t){let n={bus:e,db:t},r=[Rn(n),zn(n),Bn(n),Vn(n),Hn(n),Un(n),Gn(n),Wn(n)];return()=>r.forEach(e=>e())}function qn(e,t){return vt(j(e),j(t))}function Jn(e,t){return yt(j(e),j(t))}function Yn(e,t){let n=e.get(t);if(n!==void 0)return n;let r=new Map;return e.set(t,r),r}function Xn(e,t,n,r){if(r===null)return;let i=e.get(n);if(i===void 0||i.turnId!==null)return;i.turnId=r;let a=t.get(r)??[];a.includes(n)||(a.push(n),t.set(r,a))}function Zn(e){let t=new Map,n=new Map,r=new Map,i=new Map,a=Qn(t,n,r,i),o=[$n(e,t,a),er(e,t,n),tr(e,t,r),nr(e,t),rr(e,t),ir(e,t,r,i,a),ar(e,t,n,r,i)];return()=>o.forEach(e=>e())}function Qn(e,t,n,r){return i=>{e.set(i.messageId,i);let a=t.get(i.sessionId)??[];if(a.push(i.messageId),t.set(i.sessionId,a),i.turnId){let e=n.get(i.turnId)??[];e.push(i.messageId),n.set(i.turnId,e)}i.adapterMessageId&&Yn(r,i.sessionId).set(i.adapterMessageId,i.messageId)}}function $n(e,t,n){return e.on(E.append,async t=>{let{message:r,emitEvent:i}=t.payload,a=r.messageId??crypto.randomUUID(),o={...r,messageId:a,blocks:r.blocks??[]};n(o),t.setResult({message:o}),(i??!0)&&await In(e,o)})}function er(e,t,n){return e.on(E.getBySession,async e=>{let{sessionId:r,limit:i,after:a,includeAfter:o=!1,order:s=`asc`}=e.payload,c=n.get(r)??[],l=s===`desc`?Jn:qn,u=c.map(e=>t.get(e)).filter(e=>!!e).sort(l);a&&(u=u.filter(e=>{let t=s===`desc`?yt(j(e),a):vt(j(e),a);return o?t>=0:t>0}));let d=i??100,f=u.length>d,p=f?u.slice(0,d):u,m=f&&p.length>0?j(p[p.length-1]):null;e.setResult({messages:p,nextCursor:m})})}function tr(e,t,n){return e.on(E.getByTurn,async e=>{let{turnId:r}=e.payload,i=(n.get(r)??[]).map(e=>t.get(e)).filter(e=>!!e).sort(qn);e.setResult({messages:i})})}function nr(e,t){return e.on(E.get,async e=>{e.setResult({message:t.get(e.payload.messageId)??null})})}function rr(e,t){return e.on(E.search,async e=>{let{query:n,sessionId:r,limit:i}=e.payload,a=i??50,o=n.trim().toLowerCase(),s=[...t.values()].filter(e=>r?e.sessionId===r:!0),c=o.length===0?[]:s.filter(e=>e.contentText.toLowerCase().includes(o));c.sort(qn),e.setResult({messages:c.slice(0,a),total:c.length})})}function ir(e,t,n,r,i){return e.on(E.upsertByAdapterMessageId,async a=>{let{adapterMessageId:o,sessionId:s,turnId:c,role:l,contentText:u,blocks:d,agentId:f,adapterSessionId:p,timestamp:m,origin:h}=a.payload,g=r.get(s)?.get(o);if(g){Xn(t,n,g,c),a.setResult({messageId:g,created:!1});return}let _=crypto.randomUUID(),v={messageId:_,sessionId:s,turnId:c,role:l,contentText:u,blocks:d,agentId:f??void 0,adapterSessionId:p??void 0,adapterMessageId:o,timestamp:m,editOf:void 0,origin:h??void 0};i(v),a.setResult({messageId:_,created:!0}),await In(e,v)})}function ar(e,t,n,r,i){return e.on(T.delete,e=>{let{sessionId:a}=e.payload,o=n.get(a)??[];for(let e of o){let n=t.get(e);if(n){if(t.delete(e),n.turnId){let t=(r.get(n.turnId)??[]).filter(t=>t!==e);t.length===0?r.delete(n.turnId):r.set(n.turnId,t)}if(n.adapterMessageId){let e=i.get(n.sessionId);e?.delete(n.adapterMessageId),e?.size===0&&i.delete(n.sessionId)}}}n.delete(a)})}const or=Ht(`message_routing`,e=>({messageId:e.text(`message_id`).notNull().references(u,{onDelete:`cascade`}),agentId:e.text(`agent_id`).notNull(),status:e.textEnum(`status`,{enum:[`sent`,`acknowledged`,`completed`]}).notNull(),timestamp:e.epochMs(`timestamp`).notNull(),error:e.text(`error`)}),{sqlite:e=>[Pt({columns:[e.messageId,e.agentId,e.status]}),Mt(`idx_routing_agent`).on(e.agentId,e.timestamp)],postgres:e=>[zt({columns:[e.messageId,e.agentId,e.status]}),Rt(`idx_routing_agent`).on(e.agentId,e.timestamp)]}),sr=or.sqlite,cr=nn(`messageRouting`,{schemas:{record:{request:ct,response:D.object({success:D.boolean()})},getByMessage:{request:D.object({messageId:D.string()}),response:D.object({routing:D.array(ct)})},getCompleted:{request:D.object({messageId:D.string()}),response:D.object({agentIds:D.array(D.string())})},isComplete:{request:D.object({messageId:D.string(),targetAgentIds:D.array(D.string())}),response:D.object({complete:D.boolean(),pending:D.array(D.string())})}},extensions:{drizzle:{messageRouting:sr}}}),H=cr.subjects,lr=or.postgres,ur=Vt({messageRouting:sr},{messageRouting:lr});function dr(e){return{messageId:e.messageId,agentId:e.agentId,status:e.status,timestamp:e.timestamp,error:e.error??void 0}}function fr(e,t){let{messageRouting:n}=P(t,ur),r=[];return r.push(e.on(H.record,async e=>{let{messageId:r,agentId:i,status:a,timestamp:o,error:s}=e.payload;await t.insert(n).values({messageId:r,agentId:i,status:a,timestamp:o,error:s??null}).onConflictDoUpdate({target:[n.messageId,n.agentId,n.status],set:{timestamp:o,error:s??null}}),e.setResult({success:!0})})),r.push(e.on(H.getByMessage,async e=>{let{messageId:r}=e.payload,i=await t.select().from(n).where(L(n.messageId,r));e.setResult({routing:i.map(dr)})})),r.push(e.on(H.getCompleted,async e=>{let{messageId:r}=e.payload,i=await t.select().from(n).where(F(L(n.messageId,r),L(n.status,`completed`)));e.setResult({agentIds:i.map(e=>e.agentId)})})),r.push(e.on(H.isComplete,async e=>{let{messageId:r,targetAgentIds:i}=e.payload,a=await t.select().from(n).where(F(L(n.messageId,r),L(n.status,`completed`))),o=new Set(a.map(e=>e.agentId)),s=i.filter(e=>!o.has(e));e.setResult({complete:s.length===0,pending:s})})),()=>r.forEach(e=>e())}const pr=`[session.sendMessage]`,mr={droppedAgentIds:new Set,recoveringAgentIds:new Set,deferredAgentIds:new Set,arbitratedAgentIds:new Set};function U(e,t){for(let n of t)e.add(n)}function W(e,t){let n=new Set(t.map(e=>e.agentId));return new Set([...e].filter(e=>n.has(e)))}function hr(e,t,n){let r=W(e,n);return{recovering:r,arbitrated:new Set([...W(t,n)].filter(e=>r.has(e)))}}function gr(e,t){if(e>=2)throw new S(`start-unresolved`,`[session.start] session ${t} did not stabilize after 2 deferral convergence passes`);return e+1}async function _r(e,t,n,r,i,a){let o=n,s=new Set(r),c=new Set(i),l=W(a,o),u,d=new Set(l),f=0;for(;d.size>0;){f=gr(f,t.sessionId);let n=await yr(e,t,o,d,l);o=n.targetAgents,{recovering:s,arbitrated:c}=hr(s,c,o),U(s,n.recovering),U(c,W(n.arbitrated,o)),c=new Set([...W(c,o)].filter(e=>s.has(e))),U(l,W(n.deferred,o)),u=n.recoveryContext??u,d=W(n.deferred,o)}let p=await vr(e,t.session,o,s,c);for(U(l,p.deferredAgentIds),u=p.recoveryContext??u,s=new Set,c=new Set,d=W(p.deferredAgentIds,o);d.size>0;){f=gr(f,t.sessionId);let n=await yr(e,t,o,d,l);if(o=n.targetAgents,{recovering:s,arbitrated:c}=hr(s,c,o),U(s,n.recovering),U(c,W(n.arbitrated,o)),c=new Set([...W(c,o)].filter(e=>s.has(e))),U(l,W(n.deferred,o)),u=n.recoveryContext??u,s.size>0){let n=await vr(e,t.session,o,s,c);U(l,n.deferredAgentIds),u=n.recoveryContext??u,d=W(n.deferredAgentIds,o),s=new Set,c=new Set}else d=W(n.deferred,o)}return{targetAgents:o,deferredAgentIds:l,recoveryContext:u}}async function vr(e,t,n,r,i){let a=await Promise.all(n.map(async t=>{if(t.runtimeOwner!==void 0&&!(r.has(t.agentId)&&!i.has(t.agentId)))return e.bus.requestOptional(tt.getAgent,{agentId:t.agentId,adapterId:t.adapterId,ownerInstanceId:t.runtimeOwner.instanceId})})),o=[],s=new Set;for(let[t,r]of n.entries()){if(r.runtimeOwner===void 0){s.add(r.agentId);continue}let n=a[t];if(n===void 0){o.push(r);continue}let c=n.handled?n.data.agent:void 0;if(i.has(r.agentId)){if(c==null){o.push(r);continue}await Ie(e.bus,r.agentId);continue}(!n.handled||c===null)&&o.push(r)}if(o.length===0)return{recoveryContext:void 0,deferredAgentIds:s};let c=je,l=await ee(e.bus,t,c),u=Ne(c)??null,d=0;for(let t of o)(await ie(e.bus,t,{resumeProviderSessionId:u,machineId:e.machineId})).deferred?s.add(t.agentId):d+=1;return d===0?{recoveryContext:void 0,deferredAgentIds:s}:{recoveryContext:l,deferredAgentIds:s}}async function yr(e,t,n,r,i){let a=n.filter(e=>r.has(e.agentId)),o=de(t.session,n,r);if(o.length>0)return{targetAgents:o,recovering:mr.recoveringAgentIds,arbitrated:mr.arbitratedAgentIds,deferred:mr.deferredAgentIds};Re(t.targetSpec)!==`lead-default`&&Pe(pr,t.sessionId,i);let s=await e.startReplacementLeadAgent(t.agentSelection??xe(a[0],e.machineId)),c=le(t.session,t.targetSpec);return c.length===0&&Pe(pr,t.sessionId,i),{targetAgents:c,recovering:s.recoveringAgentIds,arbitrated:s.arbitratedAgentIds,deferred:s.deferredAgentIds,recoveryContext:await ee(e.bus,t.session,je)}}const br={writesAgentStatus:!0,connectorOnlyTeardown:!0};function xr(e,t){return e.leadTransition.kind===`replace`?{...br,reservation:t}:br}async function Sr(e,t,n){let r=Fe(),i;try{i=await b(e,{sessionId:t.sessionId,agentId:n,adapterName:t.adapterName,instance:t.instance,role:`lead`,resumeProviderSessionId:null,expectedLeadAgentId:t.expectedLeadAgentId,claimToken:r})}catch(t){throw await e.requestOptional(A.ownership.release,{agentId:n,claimToken:r,disposition:`released`}).catch(()=>void 0),t}return i.outcome===`reserved`?{kind:`reserved`,reservation:i.reservation}:i.outcome===`lead-conflict`?{kind:`lead-conflict`,currentLeadAgentId:i.currentLeadAgentId}:i.outcome===`session-not-active`?{kind:`refused`,outcome:i.outcome,status:i.status}:{kind:`refused`,outcome:i.outcome}}async function Cr(e,t,n,r,i,a,o){if(i.agentId===n&&i.adapterId===t.instance.adapterId&&i.sessionId===t.sessionId&&i.ownerInstanceId===a)return{...i,ownerInstanceId:i.ownerInstanceId};throw await y(e,n,o,r),await x(e,t.instance.adapterId,n,a,!0),new S(`start-failed`,`[session.start] ${i.ownerInstanceId===void 0?`adapter omitted its owner instance`:i.ownerInstanceId===a?`adapter response identity mismatch`:`adapter owner mismatch`} for agent ${n}`)}async function wr(e,t,n,r,i,a){let o,s={...t.startRequest,adapterId:t.instance.adapterId,sessionId:t.sessionId,role:`lead`,agentId:n,ownerInstanceId:r.ownerInstanceId};try{o=t.dispatch?await t.dispatch(s):await e.request(tt.startAgent,s)}catch(o){throw await y(e,n,a,i),await x(e,t.instance.adapterId,n,r.ownerInstanceId,!0),o}if(!o.success){let s=new S(`start-failed`,`[session.start] Failed to start agent (sessionId=${t.sessionId}, adapterName=${t.adapterName}): ${o.message}`);throw o.dispatch===`not-dispatched`?await ue(e,n,r):(await y(e,n,a,i),await x(e,t.instance.adapterId,n,r.ownerInstanceId,!0)),s}return Cr(e,t,n,i,o,r.ownerInstanceId,a)}async function Tr(e,t,n){await ue(e,n,void 0,{sessionId:t.sessionId,agentId:n,expectedLeadAgentId:t.expectedLeadAgentId,transition:t.leadTransition.kind})}async function Er(e,t,n){let r=De({agentId:n,instance:t.instance,adapterName:t.adapterName,sessionId:t.sessionId,role:`lead`,runtime:t.startRequest,...t.providerConfigId!==void 0&&{providerConfigId:t.providerConfigId},...t.personaId!==void 0&&{personaId:t.personaId},...t.profileId!==void 0&&{profileId:t.profileId}}),i;try{await e.requestOptional(w.set,{agentId:n,agent:r}),i=await Sr(e,t,n)}catch(r){throw await Tr(e,t,n),r}if(i.kind===`lead-conflict`){if(!(await ue(e,n,void 0)).rowDeleted)throw new S(`start-unresolved`,`[session.start] lost lead designation for agent ${n}, but its rollback could not be confirmed`);return{outcome:`lead-conflict`,currentLeadAgentId:i.currentLeadAgentId}}if(i.kind===`refused`)throw await ue(e,n,void 0),new S(i.outcome===`session-not-active`?`session-not-active`:`start-failed`,`[session.start] reservation for agent ${n} was refused: ${i.outcome}`,void 0,void 0,i.status);let{reservation:a}=i,o=xr(t,a),s=new ke([a.claim?.claimToken]),c=await wr(e,t,n,a,s,o),l=Fe();return s.add(l),await g(e,{sessionId:t.sessionId,agentId:n,adapterId:t.instance.adapterId,adapterName:t.adapterName,policy:o,claimTokens:s,settlementClaimToken:l,admitSessionBeforeFinalAdoption:!0,...t.providerConfigId!==void 0&&{providerConfigId:t.providerConfigId},machineId:t.instance.machineId,ownerInstanceId:t.instance.ownerInstanceId},c.adapterSessionId,c.settlementAckToken,c.ownerInstanceId),{outcome:`started`,agent:{...r,status:`idle`,...c.adapterSessionId!==void 0&&{adapterSessionId:c.adapterSessionId}}}}async function Dr(e,t){if(Se(t.instance)===void 0)throw new S(`start-failed`,`[session.start] lead transition requires a machine-scoped adapter instance (sessionId=${t.sessionId})`);let n=crypto.randomUUID(),r;if(await Oe(n,async()=>(r=await Er(e,t,n),r.outcome===`started`?`connected`:`no-connector`)).settled,r===void 0)throw new S(`start-failed`,`[session.start] start for agent ${n} produced no result`);return r}function Or(e){return{source:e.source,...e.sourceId!==void 0&&{sourceId:e.sourceId}}}var kr=class{turnId;sessionId;turnNumber;startedAt;_initiator;_agentIds;_messageIds=[];admittedTargetsByMessageId=new Map;terminalPairs=new Map;pendingMessageAdmissions=new Set;constructor(e){if(!Number.isInteger(e.turnNumber)||e.turnNumber<1)throw Error(`turnNumber must be a positive integer`);this.turnId=e.turnId??crypto.randomUUID(),this.sessionId=e.sessionId,this.turnNumber=e.turnNumber,this.startedAt=e.startedAt??Date.now(),this._initiator=Object.freeze(Or(e.initiator??{source:`user`})),this._agentIds=Object.freeze([...e.agentIds])}get agentIds(){return this._agentIds}get initiator(){return Or(this._initiator)}get messageIds(){return this._messageIds}get hasPendingMessageAppends(){return this.pendingMessageAdmissions.size>0}addMessage(e){this.admitMessage(e,this._agentIds),this.commitMessageAdmission(e)}claimMessageAppend(e){this.admitMessage(e,this._agentIds)}releaseMessageAppend(e){this.rollbackMessageAdmission(e)}admitMessage(e,t){if(this.admittedTargetsByMessageId.has(e))throw Error(`Turn ${this.turnId} already admitted message ${e}`);if(t.length===0||new Set(t).size!==t.length)throw Error(`Turn ${this.turnId} requires a non-empty unique target set for message ${e}`);if(t.some(e=>!this.hasAgent(e)))throw Error(`Turn ${this.turnId} cannot admit targets outside its immutable participant set`);this._messageIds.push(e),this.admittedTargetsByMessageId.set(e,new Set(t)),this.pendingMessageAdmissions.add(e)}commitMessageAdmission(e){if(!this.admittedTargetsByMessageId.has(e))throw Error(`Turn ${this.turnId} cannot commit unknown message ${e}`);this.pendingMessageAdmissions.delete(e)}rollbackMessageAdmission(e){let t=this.admittedTargetsByMessageId.get(e);if(!t)return;if([...t].some(t=>this.terminalPairs.has(this.pairKey(e,t))))throw Error(`Turn ${this.turnId} cannot roll back terminal message ${e}`);this.admittedTargetsByMessageId.delete(e),this.pendingMessageAdmissions.delete(e);let n=this._messageIds.indexOf(e);n>=0&&this._messageIds.splice(n,1)}recordPairTerminal(e,t,n,r){if(!this.admittedTargetsByMessageId.get(e)?.has(t))return{accepted:!1,turnComplete:!1};let i=this.pairKey(e,t);return this.terminalPairs.has(i)?{accepted:!1,turnComplete:!1}:(this.terminalPairs.set(i,{outcome:n,...r!==void 0&&{error:r}}),this.isComplete()?{accepted:!0,turnComplete:!0,result:this.getResult()}:{accepted:!0,turnComplete:!1})}hasAdmittedPair(e,t){return this.admittedTargetsByMessageId.get(e)?.has(t)??!1}get admittedPairs(){return[...this.admittedTargetsByMessageId].flatMap(([e,t])=>[...t].map(t=>({messageId:e,agentId:t})))}hasAgent(e){return this._agentIds.includes(e)}isComplete(){if(this.admittedTargetsByMessageId.size===0||this.pendingMessageAdmissions.size>0)return!1;for(let[e,t]of this.admittedTargetsByMessageId)for(let n of t)if(!this.terminalPairs.has(this.pairKey(e,n)))return!1;return!0}getResult(){let e=[...this.terminalPairs.values()].filter(e=>e.outcome===`error`).map(e=>e.error??`Unknown error`);return{success:e.length===0,errors:e}}getContext(){if(this._messageIds.length===0)throw Error(`Turn ${this.turnId} has no messages yet`);return{turnId:this.turnId,messageId:this._messageIds[this._messageIds.length-1]}}getContextForMessage(e){return{turnId:this.turnId,messageId:e}}pairKey(e,t){return JSON.stringify([e,t])}},Ar=class e{byAgent=new Map;coverageByAgent=new Map;ambiguousAgents=new Set;providerCalls=new Set;add(e){if(e.granularity===`latest-request-gauge`||this.ambiguousAgents.has(e.agentId))return;let t=this.coverageByAgent.get(e.agentId);if(t!==void 0&&t!==e.granularity){this.byAgent.delete(e.agentId),this.ambiguousAgents.add(e.agentId);return}if(e.granularity===`provider-call`&&e.llmCallId!==void 0){let t=`${e.agentId}:${e.llmCallId}`;if(this.providerCalls.has(t))return;this.providerCalls.add(t)}this.coverageByAgent.set(e.agentId,e.granularity);let n=this.byAgent.get(e.agentId);n?(n.inputTokens+=e.inputTokens,e.inputCachedTokens>0&&(n.cachedInputTokens=(n.cachedInputTokens??0)+e.inputCachedTokens),n.outputTokens+=e.outputTokens):this.byAgent.set(e.agentId,{inputTokens:e.inputTokens,...e.inputCachedTokens>0&&{cachedInputTokens:e.inputCachedTokens},outputTokens:e.outputTokens})}preview(t){let n=new e;for(let[e,t]of this.byAgent)n.byAgent.set(e,{...t});for(let[e,t]of this.coverageByAgent)n.coverageByAgent.set(e,t);for(let e of this.ambiguousAgents)n.ambiguousAgents.add(e);for(let e of this.providerCalls)n.providerCalls.add(e);for(let e of t)n.add(e);return n.snapshot()}snapshot(){if(this.byAgent.size===0)return;let e=0,t=0,n=0,r={};for(let[i,a]of this.byAgent)e+=a.inputTokens,t+=a.cachedInputTokens??0,n+=a.outputTokens,r[i]={...a};return{total:{inputTokens:e,...t>0&&{cachedInputTokens:t},outputTokens:n},byAgent:r}}flush(){let e=this.snapshot();return this.byAgent.clear(),this.coverageByAgent.clear(),this.ambiguousAgents.clear(),this.providerCalls.clear(),e}clear(){this.byAgent.clear(),this.coverageByAgent.clear(),this.ambiguousAgents.clear(),this.providerCalls.clear()}};const jr=Symbol(`turnReservation`);var Mr=class{activeTurns=new Map;reservations=new Map;pendingAcquisitions=new Map;pendingPreparations=new Map;preparedTurnIds=new Set;pendingFinalizations=new Map;finalizingTurnIds=new Set;async awaitFinalization(e,t){let n=this.pendingFinalizations.get(e);if(n)return await n;let r=t();this.pendingFinalizations.set(e,r);try{await r}finally{this.pendingFinalizations.get(e)===r&&this.pendingFinalizations.delete(e)}}getActive(e){return this.activeTurns.get(e)}findActiveByTurnId(e){for(let t of this.activeTurns.values())if(t.turnId===e)return t}async acquire(e,t){let n=this.activeTurns.get(e);if(n)return{turn:n,isNew:!1};let r=this.pendingAcquisitions.get(e);if(r)return{turn:await r,isNew:!1};let i=t(this.reserve(e));this.pendingAcquisitions.set(e,i);try{return{turn:await i,isNew:!0}}finally{this.pendingAcquisitions.get(e)===i&&this.pendingAcquisitions.delete(e)}}reserve(e){if(this.activeTurns.has(e)||this.reservations.has(e))throw Error(`Session ${e} already has a routable or pending turn`);let t={sessionId:e,[jr]:!0};return this.reservations.set(e,t),t}release(e){this.reservations.get(e.sessionId)===e&&this.reservations.delete(e.sessionId)}activate(e,t){if(this.reservations.get(e.sessionId)!==e)throw Error(`Turn reservation for session ${e.sessionId} is no longer active`);this.activeTurns.set(e.sessionId,t),this.release(e)}clearActive(e){return this.activeTurns.get(e.sessionId)?.turnId===e.turnId?(this.activeTurns.delete(e.sessionId),this.preparedTurnIds.delete(e.turnId),!0):!1}tryAdmitMessage(e,t,n){if(this.finalizingTurnIds.has(e.turnId)||this.activeTurns.get(e.sessionId)?.turnId!==e.turnId)return;e.admitMessage(t,n);let r=!1;return{turn:e,messageId:t,agentIds:[...n],commit:()=>{r||(r=!0,e.commitMessageAdmission(t))},rollback:async()=>{r||(r=!0,e.rollbackMessageAdmission(t))}}}beginFinalization(e){return this.finalizingTurnIds.has(e.turnId)||this.activeTurns.get(e.sessionId)?.turnId!==e.turnId?!1:(this.finalizingTurnIds.add(e.turnId),this.clearActive(e),!0)}finishFinalization(e){this.finalizingTurnIds.delete(e.turnId)}beginPreparation(e){if(this.preparedTurnIds.has(e.turnId))return{turn:e,isOwner:!1,ready:Promise.resolve()};let t=this.pendingPreparations.get(e.turnId);if(t)return{turn:e,isOwner:!1,ready:t.ready};let n,r,i=new Promise((e,t)=>{n=e,r=t});return i.catch(()=>{}),this.pendingPreparations.set(e.turnId,{turn:e,ready:i,resolve:n,reject:r}),{turn:e,isOwner:!0,ready:i}}completePreparation(e){if(!e.isOwner)throw Error(`Only the preparation owner can complete turn ${e.turn.turnId}`);let t=this.pendingPreparations.get(e.turn.turnId);if(!t||t.turn!==e.turn)throw Error(`Turn preparation for ${e.turn.turnId} is no longer active`);this.pendingPreparations.delete(e.turn.turnId),this.preparedTurnIds.add(e.turn.turnId),t.resolve()}failPreparation(e,t){if(!e.isOwner)throw Error(`Only the preparation owner can fail turn ${e.turn.turnId}`);let n=this.pendingPreparations.get(e.turn.turnId);!n||n.turn!==e.turn||(this.pendingPreparations.delete(e.turn.turnId),n.reject(t))}clear(){this.activeTurns.clear(),this.reservations.clear(),this.pendingAcquisitions.clear(),this.pendingFinalizations.clear(),this.finalizingTurnIds.clear();for(let e of this.pendingPreparations.values())e.reject(Error(`Turn slot registry was cleared during preparation`));this.pendingPreparations.clear(),this.preparedTurnIds.clear()}},Nr=class{bus;resolveTurn;timeoutMs;settledPairs=new Map;waiters=new Map;cleanup;destroyed=!1;constructor(e,t,n){this.bus=e,this.resolveTurn=t,this.timeoutMs=n,this.cleanup=e.on(A.turn.assistantPersistenceSettled,e=>{if(this.destroyed)return;let{sessionId:t,turnId:n,messageId:r,agentId:i}=e.payload,a=this.resolveTurn(n);if(!a||a.sessionId!==t||!a.hasAdmittedPair(r,i))return;let o=this.settledPairs.get(n)??new Set;o.add(this.pairKey(r,i)),this.settledPairs.set(n,o),this.isSettled(a)&&this.waiters.get(n)?.settle()})}async waitFor(e){if(this.destroyed||e.agentIds.length===0||this.isSettled(e))return;let t=await this.bus.requestOptional(E.getByTurn,{turnId:e.turnId});this.destroyed||!t.handled||await new Promise(t=>{let n=()=>{clearTimeout(r),this.waiters.delete(e.turnId),t()},r=setTimeout(n,this.timeoutMs);this.waiters.set(e.turnId,{settle:n}),this.isSettled(e)&&n()})}clear(e){this.waiters.get(e)?.settle(),this.settledPairs.delete(e)}destroy(){if(!this.destroyed){this.destroyed=!0,this.cleanup();for(let e of[...this.waiters.values()])e.settle();this.waiters.clear(),this.settledPairs.clear()}}isSettled(e){if(e.admittedPairs.length===0)return!0;let t=this.settledPairs.get(e.turnId);return t!==void 0&&e.admittedPairs.every(({messageId:e,agentId:n})=>t.has(this.pairKey(e,n)))}pairKey(e,t){return JSON.stringify([e,t])}};function Pr(e,t,n){return{...e,isPreparationOwner:t.isOwner,commit:()=>{e.commit(),t.isOwner&&n.completePreparation(t)},rollback:async(r=`message-setup-failed:${e.messageId}`)=>{let i=e.rollback();if(t.isOwner){let a={success:!1,errors:[r]};n.beginSetupFailure(e,a),n.failPreparation(t,Error(`Message ${e.messageId} setup failed`)),await i,await n.finalizeSetupFailure(e,a);return}await i,e.turn.isComplete()&&await n.finalizeCompletedLedger(e,e.turn.getResult())}}}function Fr(e){return{status:e.success?`completed`:`error`,error:e.errors.length>0?e.errors.join(`; `):void 0}}function Ir(e,t){if(e===void 0||t===void 0)return e===t;if(e.total.inputTokens!==t.total.inputTokens||e.total.cachedInputTokens!==t.total.cachedInputTokens||e.total.outputTokens!==t.total.outputTokens||e.total.cost!==t.total.cost)return!1;let n=e.byAgent??{},r=t.byAgent??{},i=Object.keys(n).sort(),a=Object.keys(r).sort();return i.length===a.length?i.every((e,t)=>{if(e!==a[t])return!1;let i=n[e],o=r[e];return i?.inputTokens===o?.inputTokens&&i?.cachedInputTokens===o?.cachedInputTokens&&i?.outputTokens===o?.outputTokens&&i?.cost===o?.cost}):!1}async function Lr(e,t,n,r,i){let a=Fr(n),o=await e.requestOptional(C.complete,{turnId:t.turnId,status:a.status,...i!==void 0&&{expectedStatus:i},error:a.error,usage:r??null});if(!o.handled)return{handled:!1,transitioned:!0};let s=o.data.turn;if(!(s.status===a.status&&s.error===a.error))return{handled:!0,transitioned:!1};if(Ir(s.usage,r))return{handled:!0,transitioned:!0};if(o.data.transitioned)throw Error(`Turn completion storage returned non-canonical usage for transitioned turn ${t.turnId}`);let c=await e.requestOptional(C.complete,{turnId:t.turnId,status:a.status,error:a.error,usage:r??null});if(!c.handled||!Ir(c.data.turn.usage,r))throw Error(`Turn completion usage reconciliation did not persist the canonical snapshot for ${t.turnId}`);if(c.data.turn.status!==a.status||c.data.turn.error!==a.error)throw Error(`Turn completion usage reconciliation changed terminal metadata for ${t.turnId}`);return{handled:!0,transitioned:!0}}async function Rr(e){let t=e.turn.turnId,n=e.currentUsage;for(;;){let r=e.bufferedUsage.get(t);if(r===void 0||r.length===0)return n;e.bufferedUsage.delete(t);let i=e.usageAccumulator?e.usageAccumulator.preview(r):n;try{await Lr(e.bus,e.turn,e.result,i)}catch(n){let i=e.bufferedUsage.get(t)??[];throw e.bufferedUsage.set(t,[...r,...i]),n}for(let t of r)e.usageAccumulator?.add(t);n=e.usageAccumulator?.snapshot()??i}}function zr(e,t,n){return[e.on(O.usage,e=>{let{agentId:n,turnId:r,inputTokens:i,inputCachedTokens:a,outputTokens:o,granularity:s,llmCallId:c}=e.payload;if(!r){console.warn(`[SessionTurnManager] Dropping usage event without turnId (agentId=${n}).`);return}let l=t.resolveUsageTurn(r);if(!l||!l.hasAgent(n))return;let u={agentId:n,inputTokens:i,inputCachedTokens:a,outputTokens:o,granularity:s,...c&&{llmCallId:c}};t.isCompletionInFlight(l.turnId)?t.bufferUsage(l.turnId,u):t.addUsage(l,u)}),e.on(O.complete,async r=>{let{agentId:i,outcome:a,error:o,turnId:s,messageId:c}=r.payload;r.payload._import||!s||await Br(e,t,{agentId:i,messageId:c,outcome:a??`completed`,error:a===`error`?o:void 0,turnId:s,onTurnComplete:n})})]}async function Br(e,t,n){let r=t.resolveCompletionTurn(n.turnId);if(!r?.hasAgent(n.agentId))return;let i=r.recordPairTerminal(n.messageId,n.agentId,n.outcome,n.error);if(!i.accepted){t.canRetry(r.turnId)&&await t.retry(r.turnId);return}i.turnComplete&&t.beginFinalization(r,i.result);let a=e.emit(A.user_message.completed,{sessionId:r.sessionId,turnId:r.turnId,turnNumber:r.turnNumber,messageId:n.messageId,agentId:n.agentId,outcome:n.outcome,...n.error!==void 0&&{error:n.error}}),o=i.turnComplete?n.onTurnComplete(r,i.result):Promise.resolve(),[s,c]=await Promise.allSettled([a,o]);if(s.status===`rejected`&&console.error(`[SessionTurnManager] Failed to emit user-message completion:`,s.reason),c.status===`rejected`)throw c.reason}var Vr=class{bus;turnSlots=new Mr;usageAccumulators=new Map;completingTurnIds=new Set;completionPromises=new Map;completingTurns=new Map;closedUsageAdmissions=new Set;pendingTerminalCompletions=new Map;pendingTerminalResults=new Map;setupFinalizingTurnIds=new Set;bufferedUsageDuringCompletion=new Map;syntheticTurnCounters=new Map;assistantPersistenceBarrier;cleanups=[];constructor(e){this.bus=e,this.assistantPersistenceBarrier=new Nr(e,e=>this.findTurnForCompletion(e),1500)}async acquireTurn(e,t,n,r){await this.retryRetainedCompletionsForSession(e);let i=await this.turnSlots.acquire(e,e=>this.createReservedTurn(e,t,n,r));if(t.some(e=>!i.turn.hasAgent(e)))throw Error(`Turn ${i.turn.turnId} cannot route agents outside its immutable participant set (sessionId=${e})`);return i}async reserveTurn(e){return await this.retryRetainedCompletionsForSession(e),this.turnSlots.reserve(e)}releaseTurnReservation(e){this.turnSlots.release(e)}async acquireMessageAdmission(e,t,n,r,i){for(;;){let a=await this.acquireTurn(e,t,r,i),o=this.turnSlots.tryAdmitMessage(a.turn,n,t);if(!o)continue;let s=this.turnSlots.beginPreparation(a.turn);if(!s.isOwner)try{await s.ready}catch{await o.rollback();continue}return this.composeAdmissionWithPreparation(o,s)}}admitReservedMessage(e,t,n){let r=this.turnSlots.tryAdmitMessage(e,t,n);if(!r)throw Error(`Turn ${e.turnId} is no longer routable for message admission`);return this.composeAdmissionWithPreparation(r,this.turnSlots.beginPreparation(e))}async createReservedTurn(e,t,n,r){let{sessionId:i}=e;try{let a=await this.bus.requestOptional(C.create,{sessionId:i,...r!==void 0&&{turnId:r},...n!==void 0&&{initiator:n}}),o,s;if(a.handled)o=a.data.turn.turnId,s=a.data.turn.turnNumber;else{o=r??crypto.randomUUID();let e=(this.syntheticTurnCounters.get(i)??0)+1;this.syntheticTurnCounters.set(i,e),s=e}let c=new kr({sessionId:i,agentIds:t,turnId:o,turnNumber:s,initiator:n});return this.turnSlots.activate(e,c),this.usageAccumulators.set(c.turnId,new Ar),c}finally{this.releaseTurnReservation(e)}}async createTurn(e,t,n,r){return this.createReservedTurn(await this.reserveTurn(e),t,n,r)}discardActiveTurn(e){this.clearActiveRoutingTurn(e)&&(this.usageAccumulators.delete(e.turnId),this.assistantPersistenceBarrier.clear(e.turnId))}async failActiveTurnBeforeDispatch(e,t){if(this.turnSlots.getActive(e.sessionId)?.turnId!==e.turnId)return;let n={success:!1,errors:[t]};this.beginFinalization(e,n,`setup`),await this.completeTurn(e,n)}async failActiveTurnSetup(e,t){e.messageIds.length>0||e.hasPendingMessageAppends||await this.failActiveTurnBeforeDispatch(e,t)}clearActiveRoutingTurn(e){return this.turnSlots.clearActive(e)}composeAdmissionWithPreparation(e,t){return Pr(e,t,{completePreparation:e=>this.turnSlots.completePreparation(e),failPreparation:(e,t)=>this.turnSlots.failPreparation(e,t),beginSetupFailure:(e,t)=>this.beginFinalization(e.turn,t,`setup`),finalizeSetupFailure:async(e,t)=>this.completeTurn(e.turn,t),finalizeCompletedLedger:async(e,t)=>{this.beginFinalization(e.turn,t,`normal`),await this.completeTurn(e.turn,t)}})}registerCompletionHandlers(e){this.cleanups.push(...zr(this.bus,this.completionEventHooks(),e))}async completeTurn(e,t){let n=this.completionPromises.get(e.turnId);if(n)return await n;let r=this.completeTurnInternal(e,t);this.completionPromises.set(e.turnId,r);try{await r}finally{this.completionPromises.get(e.turnId)===r&&this.completionPromises.delete(e.turnId)}}async completeTurnInternal(e,t){if(this.completingTurnIds.has(e.turnId))return;this.completingTurnIds.add(e.turnId);let n=this.beginFinalization(e,t,`normal`),r=this.usageAccumulators.get(e.turnId),i=r?.snapshot(),a=this.pendingTerminalCompletions.get(e.turnId)??!1;try{if(!this.pendingTerminalCompletions.has(e.turnId)){let t=await Lr(this.bus,e,n,i,`active`);if(a=t.handled,!t.transitioned){this.clearActiveRoutingTurn(e),this.clearCompletionState(e,r);return}this.pendingTerminalCompletions.set(e.turnId,a),i=await Rr({bus:this.bus,turn:e,result:n,usageAccumulator:r,currentUsage:i,bufferedUsage:this.bufferedUsageDuringCompletion})}}catch(t){throw this.completingTurnIds.delete(e.turnId),console.error(`[SessionTurnManager] Failed to persist completion for turn ${e.turnId}:`,t),t}let o=!1;try{a&&!this.setupFinalizingTurnIds.has(e.turnId)&&await this.assistantPersistenceBarrier.waitFor(e),this.closedUsageAdmissions.add(e.turnId),i=await Rr({bus:this.bus,turn:e,result:n,usageAccumulator:r,currentUsage:i,bufferedUsage:this.bufferedUsageDuringCompletion});let t={sessionId:e.sessionId,turnId:e.turnId,turnNumber:e.turnNumber,success:n.success,error:n.errors.length>0?n.errors.join(`; `):void 0,...i!==void 0&&{usage:i},initiator:e.initiator,ingestionMarker:`live`};await me(this.bus,{type:`turn.completed`,sessionId:e.sessionId,eventId:`turn.completed:${e.turnId}`,payload:t}),o=!0,await this.bus.emit(A.turn.completed,t)}catch(t){throw o?this.clearCompletionState(e,r):this.completingTurnIds.delete(e.turnId),t}this.clearCompletionState(e,r)}async retryTurnCompletion(e){let t=this.completingTurns.get(e),n=this.pendingTerminalResults.get(e);if(t===void 0||n===void 0)throw Error(`Turn ${e} has no retryable completion`);await this.completeTurn(t,n)}async retryRetainedCompletionsForSession(e){await this.turnSlots.awaitFinalization(e,async()=>{for(let t of[...this.completingTurns.values()].filter(t=>t.sessionId===e&&this.setupFinalizingTurnIds.has(t.turnId))){let e=this.completionPromises.get(t.turnId);e?await e:this.completingTurnIds.has(t.turnId)||await this.retryTurnCompletion(t.turnId)}for(let t of[...this.completingTurns.values()].filter(t=>t.sessionId===e&&this.pendingTerminalResults.has(t.turnId)&&!this.completingTurnIds.has(t.turnId))){let e=this.completionPromises.get(t.turnId);e?await e:await this.retryTurnCompletion(t.turnId)}})}clearCompletionState(e,t){t?.clear(),this.usageAccumulators.delete(e.turnId),this.bufferedUsageDuringCompletion.delete(e.turnId),this.assistantPersistenceBarrier.clear(e.turnId),this.completingTurns.delete(e.turnId),this.closedUsageAdmissions.delete(e.turnId),this.completingTurnIds.delete(e.turnId),this.pendingTerminalCompletions.delete(e.turnId),this.pendingTerminalResults.delete(e.turnId),this.setupFinalizingTurnIds.delete(e.turnId),this.turnSlots.finishFinalization(e)}getActiveTurn(e){return this.turnSlots.getActive(e)}findActiveTurnByTurnId(e){return this.turnSlots.findActiveByTurnId(e)}destroy(){for(let e of this.cleanups)e();this.cleanups.length=0,this.turnSlots.clear(),this.usageAccumulators.clear(),this.completingTurnIds.clear(),this.completionPromises.clear(),this.completingTurns.clear(),this.closedUsageAdmissions.clear(),this.pendingTerminalCompletions.clear(),this.pendingTerminalResults.clear(),this.setupFinalizingTurnIds.clear(),this.bufferedUsageDuringCompletion.clear(),this.syntheticTurnCounters.clear(),this.assistantPersistenceBarrier.destroy()}async recordAgentCompletion(e,t,n,r,i,a){await Br(this.bus,this.completionEventHooks(),{agentId:e,messageId:t,outcome:n,...r!==void 0&&{error:r},turnId:a,onTurnComplete:i})}completionEventHooks(){return{resolveUsageTurn:e=>this.findTurnForUsage(e),resolveCompletionTurn:e=>this.findTurnForCompletion(e),isCompletionInFlight:e=>this.completingTurnIds.has(e),addUsage:(e,t)=>this.usageAccumulators.get(e.turnId)?.add(t),bufferUsage:(e,t)=>this.bufferUsageDuringCompletion(e,t),canRetry:e=>this.pendingTerminalResults.has(e)&&!this.completingTurnIds.has(e),retry:async e=>this.retryTurnCompletion(e),beginFinalization:(e,t)=>this.beginFinalization(e,t,`normal`)}}beginFinalization(e,t,n){let r=this.pendingTerminalResults.get(e.turnId)??t;return this.completingTurns.set(e.turnId,e),this.pendingTerminalResults.set(e.turnId,r),n===`setup`&&this.setupFinalizingTurnIds.add(e.turnId),this.turnSlots.beginFinalization(e),r}bufferUsageDuringCompletion(e,t){let n=this.bufferedUsageDuringCompletion.get(e)??[];n.push(t),this.bufferedUsageDuringCompletion.set(e,n)}findTurnForUsage(e){let t=this.findActiveTurnByTurnId(e);if(t!==void 0)return t;if(!this.closedUsageAdmissions.has(e))return this.completingTurns.get(e)}findTurnForCompletion(e){return this.findActiveTurnByTurnId(e)??this.completingTurns.get(e)}};async function Hr(e,t,n){let r=ge(t.adapterName),i=ge(t.adapterId);if(!r&&!i)throw Error(`[SessionOrchestrator.sendMessage] adapterName or adapterId required when session has no agents (sessionId=${n})`);if(i)return ve(e,i,r,`[SessionOrchestrator.sendMessage] (sessionId=${n}) `);if(r===void 0)throw Error(`[SessionOrchestrator.sendMessage] adapterName could not be resolved (sessionId=${n})`);return r}async function Ur(e,t,n,r,i){if(!t)throw Error(`[SessionOrchestrator.sendMessage] agent selection required when session has no agents (sessionId=${n})`);if(t.kind===`adapter`)return t;if(t.kind===`canonical-model`)return await Wr(e,t,n,r,i);throw Error(`[SessionOrchestrator.sendMessage] agent with kind: 'adapter' or 'canonical-model' required when session has no agents (sessionId=${n})`)}async function Wr(e,t,n,r,i){let a=Ct(t.model);if(bt(a))throw Error(`[SessionOrchestrator.sendMessage] Invalid canonical model "${t.model}" (sessionId=${n}): ${a.message}`);if(a.kind===`virtual`)throw Error(`[SessionOrchestrator.sendMessage] Virtual canonical models require a host resolver (sessionId=${n})`);let o=await e.request(nt.resolve,{parsed:a,context:{sessionId:n,promptText:v(r),...i===void 0?{}:{sessionContext:i}}});return{...t,...o,kind:`adapter`,providerConfigId:t.providerConfigId??o.providerConfigId}}async function Gr(e,t,n){let{adapterName:r,sessionId:i,machineId:a}=n,o={adapterId:ge(t.adapterId),machineId:ge(t.machineId)},s=Me(o,{sessionId:i,errorPrefix:`[SessionOrchestrator.sendMessage] `});if(s!==void 0)throw new S(`start-failed`,s);if(o.adapterId===void 0){let t=await Ae(e,{adapterName:r,machineId:a});if(t===void 0||t.machineId===void 0||t.ownerInstanceId===void 0)throw new S(`start-failed`,`[SessionOrchestrator.sendMessage] adapter runtime did not prove a live owner for ${r} (sessionId=${i})`);return{adapterId:t.adapterId,machineId:t.machineId,ownerInstanceId:t.ownerInstanceId}}let c=await Ae(e,{adapterName:r,adapterId:o.adapterId,...o.machineId!==void 0&&{machineId:o.machineId}});if(c?.machineId===void 0)throw new S(`start-failed`,`[SessionOrchestrator.sendMessage] agent instance resolution for ${o.adapterId} produced no machine (sessionId=${i})`);if(c.ownerInstanceId===void 0)throw new S(`start-failed`,`[SessionOrchestrator.sendMessage] agent instance resolution for ${o.adapterId} produced no owner (sessionId=${i})`);return{adapterId:c.adapterId,machineId:c.machineId,ownerInstanceId:c.ownerInstanceId}}async function Kr(e,t,n){let r=await Hr(e,t,n.sessionId),i=t.providerConfigId===void 0?void 0:We(e,{adapterName:r,providerConfigId:t.providerConfigId});i?.catch(()=>void 0);let a=await Gr(e,t,{...n,adapterName:r}),o=await i;return{adapterName:r,instance:a,providerContext:o,providerConfigId:t.providerConfigId??o?.providerConfigId}}var qr=class{bus;turnManager;adapterRegistry;machineId;cleanups=[];constructor(e=Et,t){this.bus=e,this.machineId=t,this.turnManager=new Vr(e),this.adapterRegistry=new Fn(e),this.cleanups.push(Ce(this.bus,this.turnManager,t)),this.registerSendMessageHandler(),this.turnManager.registerCompletionHandlers(this.completeTurn.bind(this))}registerSendMessageHandler(){this.cleanups.push(this.bus.on(A.sendMessage,async e=>{let{sessionId:t,message:n,agentIds:r,deliveryMode:i,agent:a,source:o,origin:s}=e.payload,c=ce(o,e.payload.extensionId),l=e.payload.sessionContext?dt.parse(e.payload.sessionContext):void 0,{sessionId:u,session:d}=await se(this.bus,t,l,e.payload.originWindowId,this.machineId),f=await p(this.bus,d);ye(`[session.sendMessage]`,u,d,r);let m=new Set(f.recoveringAgentIds),g=new Set(f.arbitratedAgentIds),_=new Set(f.deferredAgentIds);if(d.agents.length===0){let e=await this.startLeadAgent(d,u,a,n,l,{kind:`fresh`});for(let t of e.recoveringAgentIds)m.add(t);for(let t of e.arbitratedAgentIds)g.add(t);for(let t of e.deferredAgentIds)_.add(t)}let ee=le(d,r);if(ee.length===0)throw Error(`[SessionOrchestrator.sendMessage] No valid target agents found (sessionId=${u})`);let{targetAgents:y,deferredAgentIds:ne,recoveryContext:re}=await _r({bus:this.bus,machineId:this.machineId,startReplacementLeadAgent:e=>this.startLeadAgent(d,u,e,n,l,{kind:`replace`})},{session:d,sessionId:u,targetSpec:r,agentSelection:a,message:n,sessionContext:l},ee,m,g,_),b=crypto.randomUUID(),ie=te(n),oe=await this.turnManager.acquireMessageAdmission(u,y.map(e=>e.agentId),b,c,e.payload.turnId),x=oe.turn;try{if(!(await this.bus.requestOptional(E.append,{message:{messageId:b,turnId:x.turnId,sessionId:u,role:`user`,contentText:v(n),blocks:ie,timestamp:Date.now(),...s!==void 0&&{origin:s}}})).handled)throw Error(`Message storage append handler is not registered`);oe.isPreparationOwner&&await Le(this.bus,{sessionId:u,turnId:x.turnId,turnNumber:x.turnNumber,messageId:b,agentIds:[...x.agentIds],initiator:x.initiator,ingestionMarker:`live`}),await ae(this.bus,{sessionId:u,turnId:x.turnId,turnNumber:x.turnNumber,messageId:b,content:n,agentIds:y.map(e=>e.agentId),...o!==void 0&&{source:o},...s!==void 0&&{origin:s}}),oe.commit()}catch(e){try{await oe.rollback(`user-message-persistence-failed`)}catch(e){console.error(`[SessionOrchestrator] Failed to finalize rejected message setup:`,e)}throw e}for(let e of y)this.bus.requestOptional(H.record,{messageId:b,agentId:e.agentId,status:`sent`,timestamp:Date.now()}).catch(t=>{console.warn(`[SessionOrchestrator] Failed to record message routing`,{sessionId:u,messageId:b,agentId:e.agentId,error:t instanceof Error?t.message:String(t)})});let ue=re?{...l,...re}:l;await h(this.bus,d,y,n,b,x,i,this.completeTurn.bind(this),this.turnManager,ue,e.payload.responseSchema),e.setResult({messageId:b,turnId:x.turnId,sessionId:u,...ne.size>0&&{deferredAgentIds:[...ne]}})}))}async startLeadAgent(e,t,n,r,i,a){let o=await Ur(this.bus,n,t,r,i),{adapterName:s,instance:c,providerContext:l,providerConfigId:u}=await Kr(this.bus,o,{sessionId:t,machineId:this.machineId,registry:this.adapterRegistry}),d=await Dr(this.bus,{sessionId:t,instance:c,adapterName:s,leadTransition:a,expectedLeadAgentId:e.leadAgentId??null,...u!==void 0&&{providerConfigId:u},startRequest:Te(o,{adapterId:c.adapterId,sessionId:t,providerContext:l,sessionContext:i})});if(d.outcome===`started`)return e.agents.push(d.agent),e.leadAgentId=d.agent.agentId,{droppedAgentIds:new Set,recoveringAgentIds:new Set,deferredAgentIds:new Set,arbitratedAgentIds:new Set};let{session:f}=await this.bus.request(A.get,{sessionId:t});if(!f||f.agents.length===0)throw new S(`lead-conflict`,`[SessionOrchestrator.sendMessage] lead designation for session ${t} was won by ${d.currentLeadAgentId??`another start`}, which left no agent behind`);e.agents=f.agents,e.leadAgentId=f.leadAgentId;let m=await p(this.bus,e);if(e.agents.length===0)throw new S(`lead-conflict`,`[SessionOrchestrator.sendMessage] lead designation for session ${t} was won by ${d.currentLeadAgentId??`another start`}, whose agent did not survive its start`);return m}async completeTurn(e,t){await this.turnManager.completeTurn(e,t)}destroy(){for(let e of this.cleanups)e();this.cleanups.length=0,this.turnManager.destroy(),this.adapterRegistry.destroy()}},Jr=class{bus;constructor(e){this.bus=e}async getTurnSoFarContext(e){try{let{messages:t}=await this.bus.request(E.getByTurn,{turnId:e});return this.convertSessionMessagesToMessages(t)}catch(e){return e instanceof Dt||console.warn(`[TurnContextEnricher] Failed to load turn-so-far context:`,e),[]}}async enrichForDeliveryMode(e,t,n){if(n!==`immediate`)return e;let r=await this.getTurnSoFarContext(t);return r.length===0?e:[...e??[],...r]}convertSessionMessagesToMessages(e){return e.map(e=>({role:e.role,blocks:e.blocks}))}};function Yr(e){let{bus:t}=e;return t.on(A.getStatusCounts,async e=>{e.payload;let{all:n,active:r,closed:i,archived:a,discovered:o}=await t.request(T.getStatusCounts,{});e.setResult({all:n,active:r,closed:i,archived:a,discovered:o})})}function Xr(e){let{bus:t}=e;return t.on(A.resume,async e=>{let{sessionId:n}=e.payload,{session:r}=await t.request(T.get,{sessionId:n});if(!r||r.status!==`closed`){e.setResult({success:!1});return}let i=await t.requestOptional(T.update,{sessionId:n,status:`active`,lastActivityAt:Date.now(),expectedStatus:[`closed`]});if(i.handled&&i.data.success){await t.emit(A.resumed,{sessionId:n}),e.setResult({success:!0});return}let a=await t.requestOptional(T.get,{sessionId:n});e.setResult({success:a.handled&&a.data.session?.status===`active`})})}function Zr(e){return e.on(Ge.listActions,e=>{let t=ze.getAll().map(e=>({id:e.id,label:e.label,description:e.description,category:e.category}));e.setResult({actions:t})})}const Qr=[{actionId:`strip-reasoning`},{actionId:`strip-tool-outputs`}];function $r(e){return{...e.cwd!==void 0&&{cwd:e.cwd},...e.systemPrompt!==void 0&&{systemPrompt:e.systemPrompt},...e.allowedTools!==void 0&&{allowedTools:e.allowedTools},...e.disallowedTools!==void 0&&{disallowedTools:e.disallowedTools}}}var ei=class{bus;agentToSession=new Map;pendingAssistantResponses=new Map;cleanups=[];constructor(e=Et){this.bus=e,this.registerHandlers()}registerHandlers(){this.registerMappingHandlers(),this.registerTurnTrackingHandlers(),this.registerBlockAccumulationHandlers()}registerMappingHandlers(){this.cleanups.push(this.bus.on(A.agent.added,e=>{this.agentToSession.set(e.payload.agentId,e.payload.sessionId)})),this.cleanups.push(this.bus.on(A.closed,e=>{for(let[t,n]of this.agentToSession)n===e.payload.sessionId&&this.agentToSession.delete(t);for(let[t,n]of this.pendingAssistantResponses)n.sessionId===e.payload.sessionId&&this.pendingAssistantResponses.delete(t)}))}registerTurnTrackingHandlers(){this.cleanups.push(this.bus.on(A.turn.started,e=>{let{sessionId:t,turnId:n,messageId:r,agentIds:i}=e.payload;for(let e of i){let i=this.pendingKey(n,r,e);this.pendingAssistantResponses.has(i)||this.pendingAssistantResponses.set(i,{sessionId:t,turnId:n,messageId:r,agentId:e,blocks:[]})}})),this.cleanups.push(this.bus.on(A.user_message.sent,e=>{let{sessionId:t,turnId:n,messageId:r,agentIds:i}=e.payload;for(let e of i){let i=this.pendingKey(n,r,e);this.pendingAssistantResponses.set(i,{sessionId:t,turnId:n,messageId:r,agentId:e,blocks:[]})}})),this.cleanups.push(this.bus.on(A.user_message.acknowledged,e=>{let t=this.pendingKey(e.payload.turnId,e.payload.messageId,e.payload.agentId);this.pendingAssistantResponses.has(t)||this.pendingAssistantResponses.set(t,{sessionId:e.payload.sessionId,turnId:e.payload.turnId,messageId:e.payload.messageId,agentId:e.payload.agentId,blocks:[]})})),this.cleanups.push(this.bus.on(A.turn.assistantPersistenceSettled,e=>{let{turnId:t,messageId:n,agentId:r}=e.payload;this.pendingAssistantResponses.delete(this.pendingKey(t,n,r))})),this.cleanups.push(this.bus.on(A.turn.completed,e=>{let{sessionId:t,turnId:n}=e.payload;for(let[e,r]of this.pendingAssistantResponses)r.sessionId===t&&r.turnId===n&&this.pendingAssistantResponses.delete(e)}))}registerBlockAccumulationHandlers(){this.cleanups.push(this.bus.on(O.message,e=>{let t=this.pendingForProviderEvent(e.payload);t&&t.blocks.push({type:`text`,content:e.payload.content})})),this.cleanups.push(this.bus.on(O.reasoning,e=>{let t=this.pendingForProviderEvent(e.payload);t&&t.blocks.push({type:`reasoning`,content:e.payload.content})})),this.cleanups.push(this.bus.on(O.tool.use,e=>{let t=this.pendingForProviderEvent(e.payload);t&&t.blocks.push({type:`tool_call`,toolCallId:e.payload.toolCallId,name:e.payload.toolName,args:e.payload.args??{}})})),this.cleanups.push(this.bus.on(O.tool.completed,e=>{let t=this.pendingForProviderEvent(e.payload);if(t){let n=e.payload.result,r=typeof n==`string`?n:JSON.stringify(n);t.blocks.push({type:`tool_output`,toolCallId:e.payload.toolCallId,output:r,isError:e.payload.success===!1})}})),this.cleanups.push(this.bus.on(O.complete,async e=>{if(e.payload._import){let{turnId:t,messageId:n,agentId:r}=e.payload;t&&this.pendingAssistantResponses.delete(this.pendingKey(t,n,r));return}let{agentId:t,adapterSessionId:n,outcome:r,error:i,message:a,structuredOutputValidation:o,turnId:s,messageId:c}=e.payload;if(!s)return;let l=this.pendingKey(s,c,t),u=this.pendingAssistantResponses.get(l);if(u){this.pendingAssistantResponses.delete(l);try{await this.storeAssistantMessage(u,r===`error`?void 0:n,r===`error`?i:void 0,o===void 0?void 0:{content:a})}finally{await this.bus.emit(A.turn.assistantPersistenceSettled,{sessionId:u.sessionId,turnId:u.turnId,agentId:t,messageId:u.messageId})}}}))}async storeAssistantMessage(e,t,n,r){let i=r===void 0?e.blocks:r.content===void 0?[]:[{type:`text`,content:r.content}];if(i.length===0&&!n)return;let a=i.filter(e=>e.type===`text`).map(e=>e.content).join(`
|
|
1
|
+
import{adapterSessionClaims as e,adapterSessionClaimsDual as t,agents as n,agentsDual as r,runtimeInstanceIncarnationCounters as i,runtimeInstanceIncarnationCountersDual as a,runtimeInstances as o,runtimeInstancesDual as s,sessions as c,sessionsDual as l}from"./services/session/storage/schema.mjs";import"./schema-BVbkNHVQ.mjs";import{a as u,n as d,o as f}from"./namespace-CD9mJGhU.mjs";import{C as p,Ct as m,D as h,E as g,F as _,G as v,I as ee,J as y,K as te,N as ne,P as re,Q as b,S as ie,St as ae,T as oe,U as se,V as ce,W as le,X as x,Y as ue,Z as S,_ as de,_t as fe,at as pe,bt as me,ct as he,d as ge,dt as _e,f as ve,g as ye,gt as be,h as xe,it as Se,l as Ce,lt as we,m as Te,mt as Ee,p as De,pt as Oe,q as ke,rt as Ae,st as je,u as Me,ut as Ne,v as Pe,vt as Fe,w as Ie,xt as Le,y as Re,z as ze}from"./handlers-CqL2TWbk.mjs";import{TurnStorageSubjects as C}from"./services/turn/namespace.mjs";import{a as w,n as Be,r as Ve,t as He}from"./ownership-recovery-guard-BIB5uqgz.mjs";import{SessionStorageSubjects as T}from"./services/session/storage/namespace.mjs";import{AdapterRuntimeSubjects as Ue}from"./services/adapter-runtime/namespace.mjs";import{MessageStorageSubjects as E}from"./services/session/messages/namespace.mjs";import{o as We}from"./provider-context-CYUUoI6x.mjs";import{n as Ge}from"./namespace-BnNBM94X.mjs";import{a as Ke,c as qe,d as Je,i as Ye,l as Xe,o as Ze,s as Qe,u as $e}from"./ownership-memory-handler-LXaweX6V.mjs";import{z as D}from"zod";import{createBusNamespace as et}from"@makaio/framework/core";import{AdapterSubjects as tt,AgentSubjects as O,CanonicalModelSubjects as nt,CapabilitySubjects as rt,ClientSubjects as it,CompressionModeSchema as at,FORK_SESSION_LINEAGE_KIND as ot,ForkTransformsSchema as st,MessageRoutingSchema as ct,MessageStorageSubjects as lt,ROOT_SESSION_LINEAGE_KIND as ut,SessionContextSchema as dt,SessionDiscoveredSchema as ft,SessionOwnershipSettleMovementRequestSchema as pt,SessionOwnershipStorageSubjects as k,SessionRecordMetadataSchema as mt,SessionStorageSetRequestSchema as ht,SessionStorageUpdateSchema as gt,SessionSubjects as A,TurnIngestionMarkerSchema as _t,compareMessageCursorAsc as vt,compareMessageCursorDesc as yt,isCanonicalModelParseError as bt,isInactiveSafeLeadDesignationMutation as xt,messageToCursor as j,normalizeSessionOwnershipClaimRequest as St,parseCanonicalModel as Ct,resolveResumableAdapterSessionId as wt,teardownWasObserved as Tt}from"@makaio/framework/contracts";import{MakaioBus as Et,NoHandlerError as Dt,TimeoutError as Ot}from"@makaio/framework/bus";import{KernelSubjects as kt}from"@makaio/framework/kernel";import{BaseService as At}from"@makaio/framework/service-base";import{blob as jt,index as Mt,integer as Nt,primaryKey as Pt,sqliteTable as Ft,text as It,uniqueIndex as Lt}from"drizzle-orm/sqlite-core";import{index as Rt,primaryKey as zt}from"drizzle-orm/pg-core";import{acquireTransactionLocks as Bt,defineDialectSchema as Vt,defineDualTable as Ht,didAffectRows as M,executeTransaction as N,getRawSqlExecutor as Ut,getStorageEngine as Wt,resolveSchema as P,resolveStorageEngine as Gt}from"@makaio/framework/storage/drizzle";import{and as F,asc as Kt,count as I,desc as qt,eq as L,gt as Jt,gte as Yt,inArray as R,isNotNull as Xt,isNull as z,lt as Zt,lte as Qt,ne as $t,not as en,or as tn,sql as B}from"drizzle-orm";import{createStorageNamespaceDefinition as nn}from"@makaio/framework/storage";import{ClientIdentityObservationSchema as rn}from"@makaio/framework/contracts/client";import{ImportCursorStorageSubjects as an}from"@makaio/framework/adapters";async function on(e,t,n,r){try{let t=await e.requestOptional(k.getRuntimeInstance,{instanceId:n.ownerInstanceId,machineId:n.machineId});if(t.handled&&t.data.instance!==null&&t.data.instance.retiredAt!==null)return!0}catch{}try{let i=await e.requestOptional(tt.stopAgent,{adapterId:n.adapterId,agentId:t,ownerInstanceId:n.ownerInstanceId,...r&&{teardown:`connector-only`}});return i.handled&&Tt(i.data.evidence)}catch{return!1}}function sn(e,t,n){let r=new Map;for(let t of e){if(t.ownerInstanceId===null)return null;let e={adapterId:t.adapterId,machineId:t.machineId,ownerInstanceId:t.ownerInstanceId};r.set(`${e.ownerInstanceId}\0${e.machineId}\0${e.adapterId}`,e)}if(t!==void 0&&n!==void 0){let e={adapterId:n,machineId:t.machineId,ownerInstanceId:t.instanceId};r.set(`${e.ownerInstanceId}\0${e.machineId}\0${e.adapterId}`,e)}return[...r.values()]}async function cn(e,t,n={releaseClaims:!0}){let r=await e.requestOptional(k.read,{agentId:t}).catch(()=>void 0);if(r===void 0)return{released:!1,claimCount:0};let i=r.handled?r.data.ownership:null;if(i===null)return{released:!1,claimCount:0};let a=i.claims,o=await e.requestOptional(w.get,{agentId:t}).catch(()=>void 0),s=o?.handled?o.data.agent:null,c=sn(a,s?.runtimeOwner,s?.adapterId),l=c!==null&&await Promise.all(c.map(r=>on(e,t,r,!n.releaseClaims))),u=l!==!1&&l.every(Boolean);if(!n.releaseClaims)return{released:!1,claimCount:a.length};if(a.length===0)return{released:u,claimCount:0};try{let n=await e.request(A.ownership.release,{agentId:t,disposition:u?`released`:`abandoned`});return{released:u&&n.markedClaims.length===0&&n.releasedProviderSessionIds.length===a.length,claimCount:a.length}}catch{try{await e.request(A.ownership.release,{agentId:t,disposition:`abandoned`})}catch{}return{released:!1,claimCount:a.length}}}function ln(e,t){if(t!==void 0){if(t.outcome===`lead-conflict`){console.debug(`[session.agent.added] lead designation for ${e} lost to ${t.currentLeadAgentId??`no lead`}`);return}t.outcome!==`claimed`&&t.outcome!==`idempotent`&&console.debug(`[session.agent.added] lead designation for ${e} refused: ${t.outcome}`)}}function un(e){return Error(`[session.agent.removed] Failed to terminalize agent ${e}`)}async function dn(e){try{await e();return}catch(e){return e}}function fn(e){return e.on(A.agent.added,async t=>{let n=await e.requestOptional(T.get,{sessionId:t.payload.sessionId}),r=n.handled?n.data.session:void 0;if(!r)return;let i=t.payload.role??(r.leadAgentId?`member`:`lead`),a=i===`lead`?await fe(e,{sessionId:t.payload.sessionId,agentId:t.payload.agentId,expectedLeadAgentId:r.leadAgentId??null}):void 0;i===`lead`&&ln(t.payload.agentId,a);let o=a?.outcome===`claimed`||a?.outcome===`idempotent`,s=i===`lead`&&a===void 0;if(!r.adapterName&&(o||s)){let n=o?t.payload.agentId:r.leadAgentId;await pn(e,t.payload,n);return}await e.requestOptional(T.update,{sessionId:t.payload.sessionId,lastActivityAt:Date.now()})})}async function pn(e,t,n){let r=await e.requestOptional(T.update,{sessionId:t.sessionId,lastActivityAt:Date.now(),identity:{adapterName:t.adapterName,adapterId:t.adapterId,adapterSessionId:t.adapterSessionId},expectIdentityOpenForLead:n??null});!r.handled||r.data.success||await e.requestOptional(T.update,{sessionId:t.sessionId,lastActivityAt:Date.now()})}function mn(e){return e.on(A.agent.removed,async t=>{let n=await e.requestOptional(T.get,{sessionId:t.payload.sessionId});if(!(n.handled&&n.data.session))return;let r=await dn(async()=>{let n=await e.requestOptional(w.updateStatus,{agentId:t.payload.agentId,status:`disposed`});if(!n.handled||!n.data.success)throw un(t.payload.agentId)}),i=await dn(async()=>{await fe(e,{sessionId:t.payload.sessionId,agentId:t.payload.agentId,expectedLeadAgentId:t.payload.agentId,clear:!0})}),a=await dn(async()=>{await cn(e,t.payload.agentId,{releaseClaims:r===void 0})}),o=await dn(async()=>{await e.requestOptional(T.update,{sessionId:t.payload.sessionId,lastActivityAt:Date.now()})});if(r!==void 0)throw r;if(i!==void 0)throw i;if(a!==void 0)throw a;if(o!==void 0)throw o})}function hn(e){return e.on(O.started,async t=>{let{agentId:n,adapterSessionId:r,adapterName:i,adapterId:a,sessionId:o}=t.payload;if(!r||!o)return;let s=await e.requestOptional(w.get,{agentId:n}),c=s.handled?s.data.agent:null;c&&!c.adapterSessionId&&await e.requestOptional(w.updateRuntime,{agentId:n,adapterSessionId:r}),await e.requestOptional(T.update,{sessionId:o,reconcileAdapterSession:{agentId:n,adapterName:i,adapterId:a,adapterSessionId:r,lastActivityAt:Date.now()}})})}async function gn(e,t){try{let n=await e.requestOptional(tt.getCapabilities,{adapterId:t});return n.handled?new Set(n.data.capabilities).has(`session:resume`):!1}catch{return!1}}async function _n(e,t){if(t!==void 0)return t;let n=await e.requestOptional(Ue.getMachineId,{});return n.handled?n.data.machineId:void 0}async function vn(e,t,n,r,i){let a=pe(t,n);return he(_e({intent:`resume`,session:t,localMachineId:i,adapterSupportsNative:await gn(e,r),targetAdapterName:n.adapterName,currentCwd:n.cwd,targetCwd:n.cwd,resumeIdentity:a}),a.adapterSessionId)}function yn(e,t){let{agentId:n,storedAdapterId:r}=e;switch(t?.kind){case`rehydrated`:case`joined`:return{agentId:n,adapterId:t.agent.adapterId,success:!0};case`deferred`:return{agentId:n,adapterId:r,success:!0};case`refused`:return{agentId:n,adapterId:r,success:!1,error:`Ownership reservation refused: ${t.message??t.outcome}`};case`lost`:return{agentId:n,adapterId:r,success:!1,error:`Another runtime claimed this agent’s recovery`};case`stale-plan`:return{agentId:n,adapterId:r,success:!1,error:`Agent currency kept changing while its restart was planned`};default:return{agentId:n,adapterId:r,success:!1,error:`Restart produced no result`}}}async function bn(e,t,n,r){let{agentId:i,adapterId:a}=n;for(let o=0;o<=1;o+=1){let s=await oe(e,n,async()=>{let a=await re(e,i);if(a===null)return{kind:`lost`};if(!_(a))return a.agent.status===`disposed`?{kind:`refused`,outcome:`agent-disposed`}:{kind:`lost`};Object.assign(n,a.agent);let o=Se(await Ae(e,{adapterName:n.adapterName,storedAdapterId:n.adapterId,...r!==void 0&&{machineId:r}}));if(o===void 0)return{kind:`deferred`,reason:`machine-identity-unavailable`};let s=await vn(e,t,n,o.adapterId,o.machineId);if(we(s))return{kind:`deferred`,reason:`machine-identity-unavailable`};let c=await ne(e,a,o,s.resumeAdapterSessionId);return{agent:n,sessionId:n.sessionId,instance:o,resumeProviderSessionId:s.resumeAdapterSessionId,recoveryGuard:c,...n.cwd!==void 0&&{cwd:n.cwd},...n.model!==void 0&&{model:n.model}}});if(!(s?.kind===`stale-plan`&&o<1))return yn({agentId:i,storedAdapterId:a},s)}return{agentId:i,adapterId:a,success:!1,error:`Agent restart exhausted its recovery-plan retry`}}function xn(e){let t=e instanceof Error?e.cause:void 0;return t instanceof Error?t.message:e instanceof Error?e.message:String(e)}function Sn(e){return e.on(A.restartAgents,async t=>{let{sessionId:n,machineId:r}=t.payload,i=await e.requestOptional(w.listBySession,{sessionId:n}),a=i.handled?i.data.agents:[],o=[],s=await _n(e,r),c=await e.requestOptional(T.get,{sessionId:n}),l=c.handled?c.data.session:null;for(let t of a){if(l===null){o.push({agentId:t.agentId,adapterId:t.adapterId,success:!1,error:`Session row could not be read; agent has no reachable recovery path`});continue}try{o.push(await bn(e,l,t,s))}catch(e){o.push({agentId:t.agentId,adapterId:t.adapterId,success:!1,error:xn(e)})}}t.setResult({sessionId:n,results:o})})}function Cn(e){let t=be({bus:e.bus,machineId:e.machineId,topology:e.topology??`shared-machine`,...e.instanceId!==void 0&&{instanceId:e.instanceId}});return{cleanups:[En(e),Dn(e),On(e),wn(e),kn(e),Sn(e.bus),An(e),jn(e),Mn(e),fn(e.bus),mn(e.bus),hn(e.bus),...t.cleanups,Ee(e.bus)],ownership:t.ownership}}function wn(e){let{bus:t}=e;return t.on(A.turn.await,async e=>{let{sessionId:n,turnId:r,timeoutMs:i}=e.payload,a=new AbortController,o=t.once(A.turn.completed,{timeoutMs:i,filter:{sessionId:n,turnId:r},signal:a.signal});o.catch(()=>void 0);let s=await Tn(t,n,r);if(s!==void 0){a.abort(),e.setResult({completion:s});return}try{let t=await o;e.setResult({completion:t.payload})}catch(e){throw e instanceof Error&&e.name===`OnceTimeoutError`?new Ot(`session.turn.await`,i):e}})}async function Tn(e,t,n){let r=await e.requestOptional(C.get,{turnId:n}),i=r.handled?r.data.turn:null;if(!(i?.sessionId!==t||i.status!==`completed`&&i.status!==`error`))return{sessionId:t,turnId:n,turnNumber:i.turnNumber,success:i.status===`completed`,...i.error!==void 0&&{error:i.error},...i.usage!==void 0&&{usage:i.usage},...i.initiator!==void 0&&{initiator:i.initiator}}}function En(e){let{bus:t}=e;return t.on(A.create,async e=>{let{sessionId:n,parentSessionId:r,contextInheritance:i,forkPointMessageId:a,branchKind:o,forkTransforms:s,title:c,targetWorkingDirectory:l,executionTargetId:u,metadata:d,spawningToolCallId:f,originWindowId:p,machineId:m}=e.payload,h=n??crypto.randomUUID(),g=r===void 0?void 0:(await t.request(A.get,{sessionId:r})).session;if(r!==void 0&&g===null)throw Error(`[session.create] Parent session not found: ${r}`);let _=g?g.rootSessionId??g.sessionId:void 0,v=Date.now(),ee={sessionId:h,createdAt:v,lastActivityAt:v,agents:[],status:`active`,title:c,parentSessionId:r,contextInheritance:i,forkPointMessageId:a,branchKind:o,forkTransforms:s,targetWorkingDirectory:l,executionTargetId:u,metadata:d,spawningToolCallId:f,..._!==void 0&&{rootSessionId:_},...m!==void 0&&{machineId:m}},y=await t.requestOptional(T.set,{sessionId:h,session:ee,ifAbsent:!0});if(y.handled&&!y.data.success){e.setResult({sessionId:h});return}await t.emit(A.created,{sessionId:h,createdAt:ee.createdAt,parentSessionId:r??null,branchKind:o??null,originWindowId:p??`server`}),e.setResult({sessionId:h})})}function Dn(e){let{bus:t}=e;return t.on(A.get,async e=>{let n=await t.requestOptional(T.get,{sessionId:e.payload.sessionId}),r=n.handled?n.data.session:null;e.setResult({session:r})})}function On(e){let{bus:t}=e;return t.on(A.list,async e=>{let{status:n,limit:r,offset:i,includePreview:a,executionTargetId:o}=e.payload,s=await t.requestOptional(T.list,{status:n??`all`,limit:r,offset:i,includePreview:a,executionTargetId:o}),c=s.handled?s.data.sessions:[],l=s.handled?s.data.total:0;e.setResult({sessions:c,total:l})})}function kn(e){let{bus:t}=e;return t.on(A.close,async e=>{let{sessionId:n}=e.payload,r=await t.requestOptional(T.get,{sessionId:n}),i=r.handled?r.data.session:null;if(!i){e.setResult({success:!1});return}if(i.status===`closed`){e.setResult({success:!0});return}if(i.status!==`active`){e.setResult({success:!1});return}let a=await t.requestOptional(T.update,{sessionId:n,status:`closed`,lastActivityAt:Date.now(),expectedStatus:[`active`]});if(a.handled&&a.data.success){await t.emit(A.closed,{sessionId:n}),e.setResult({success:!0});return}let o=await t.requestOptional(T.get,{sessionId:n});e.setResult({success:o.handled&&o.data.session?.status===`closed`})})}function An(e){let{bus:t}=e;return t.on(A.update,async e=>{let{sessionId:n,executionTargetId:r,approvalPolicyOverride:i,title:a,metadata:o}=e.payload,s=await t.requestOptional(T.update,{sessionId:n,executionTargetId:r,approvalPolicyOverride:i,title:a,metadata:o}),c=s.handled?s.data.success:!1;if(c){let e=[];r!==void 0&&e.push(`executionTargetId`),i!==void 0&&e.push(`approvalPolicyOverride`),a!==void 0&&e.push(`title`),o!==void 0&&e.push(`metadata`),e.length>0&&await t.emit(A.updated,{sessionId:n,changedProperties:e})}e.setResult({success:c})})}function jn(e){let{bus:t}=e;return t.on(A.archive,async e=>{let{sessionId:n}=e.payload,r=await t.requestOptional(T.get,{sessionId:n}),i=r.handled?r.data.session:null;if(!i){e.setResult({success:!1});return}if(i.status===`archived`){e.setResult({success:!0});return}if(i.status!==`closed`){e.setResult({success:!1});return}let a=await t.requestOptional(T.update,{sessionId:n,status:`archived`,lastActivityAt:Date.now(),expectedStatus:[`closed`]});if(a.handled&&a.data.success){await t.emit(A.archived,{sessionId:n}),e.setResult({success:!0});return}let o=await t.requestOptional(T.get,{sessionId:n});e.setResult({success:o.handled&&o.data.session?.status===`archived`})})}function Mn(e){let{bus:t}=e;return t.on(A.purge,async e=>{let{sessionId:n}=e.payload,r=await t.requestOptional(T.get,{sessionId:n}),i=r.handled?r.data.session:null;if(!i){e.setResult({success:!1,error:`Session not found`});return}if(i.status!==`archived`){e.setResult({success:!1,error:`Cannot purge session unless archived. Call close then archive first.`});return}let a=await t.requestOptional(w.listBySession,{sessionId:n}),o=a.handled?a.data.agents:[];if((await Promise.all(o.map(async e=>{let n=await t.requestOptional(w.updateStatus,{agentId:e.agentId,status:`disposed`});return n.handled&&n.data.success}))).some(e=>!e)){e.setResult({success:!1,error:`Cannot purge session because an agent could not be sealed.`});return}if((await Promise.all(o.map(e=>cn(t,e.agentId)))).some(e=>!e.released)){e.setResult({success:!1,error:`Cannot purge session while an owner runtime may still hold an agent connector.`});return}let s=await t.requestOptional(T.list,{status:`all`}),c=s.handled?s.data.sessions:[];for(let e of c)e.parentSessionId===n&&await t.requestOptional(T.update,{sessionId:e.sessionId,parentSessionId:null});let l=await t.requestOptional(d.getEvents,{sessionId:n,options:{limit:1}}),u=l.handled?l.data.totalCount:0;await t.requestOptional(d.deleteBySession,{sessionId:n}),await t.requestOptional(T.delete,{sessionId:n}),await t.emit(A.purged,{sessionId:n}),e.setResult({success:!0,eventsDeleted:u})})}var Nn=class extends At{options;ownership;requireOwnershipInstanceId(){let e=this.ownership?.instanceId;if(e===void 0)throw Error(`Session ownership authority is not initialized`);return e}constructor(e=Et,t={}){super(e),this.options=t}async onInit(){let e=Cn({bus:this.bus,...this.options.machineId!==void 0&&{machineId:this.options.machineId},...this.options.topology!==void 0&&{topology:this.options.topology},instanceId:crypto.randomUUID()});this.ownership=e.ownership,this.addCleanup(async()=>{this.ownership===e.ownership&&(this.ownership=void 0),await e.ownership.close()});for(let t of e.cleanups)this.addCleanup(t);this.addCleanup(m(this.bus)),this.addCleanup(this.scheduleOwnershipReconcile()),await this.reconcileOrphanedTurns()}async onDestroy(){let e=this.ownership;this.ownership=void 0,await e?.close()}scheduleOwnershipReconcile(){let e=this.bus.on(kt.phase.coordinatorReady,async t=>{e(),t.setResult({});try{await this.bus.request(A.ownership.reconcile,{})}catch(e){console.error(`[MakaioSessionService] Ownership reconcile failed:`,e)}});return e}async reconcileOrphanedTurns(){let e=await this.bus.requestOptional(C.listActive,{});if(!e.handled)return;let{turns:t}=e.data;for(let e of t)try{let{transitioned:t}=await this.bus.request(C.complete,{turnId:e.turnId,status:`error`,expectedStatus:`active`,error:`process-restart`});if(t){let t={sessionId:e.sessionId,turnId:e.turnId,turnNumber:e.turnNumber,success:!1,error:`process-restart`,ingestionMarker:`live`};await me(this.bus,{type:`turn.completed`,sessionId:e.sessionId,payload:t}),await this.bus.emit(A.turn.completed,t)}}catch(t){console.error(`[MakaioSessionService] Failed to reconcile orphaned turn ${e.turnId}:`,t)}}};function Pn(e,t){let n=t===void 0?``:` machineId="${t}"`;return Error(`No adapter found for adapterName="${e}"${n}. Ensure adapter-runtime identity handlers are registered; adapter startup verifies live availability.`)}function V(e,t){return JSON.stringify([t??null,e])}var Fn=class{bus;registry=new Map;cleanup;constructor(e){this.bus=e;let t=this.bus.on(tt.initialized,e=>{this.registry.set(V(e.payload.adapterName),e.payload.adapterId),this.registry.set(V(e.payload.adapterName,e.payload.machineId),e.payload.adapterId)}),n=this.bus.on(tt.deinitialized,e=>{let t=[V(e.payload.adapterName),V(e.payload.adapterName,e.payload.machineId)];for(let n of t)this.registry.get(n)===e.payload.adapterId&&this.registry.delete(n)});this.cleanup=()=>{t(),n()}}resolve(e){let t=this.registry.get(V(e));if(!t)throw Pn(e);return t}async resolveAvailable(e,t){try{let{adapterId:n}=await this.bus.request(Ue.resolveId,{adapterName:e,...t!==void 0&&{machineId:t}});return this.registry.set(V(e,t),n),n}catch{let n=this.registry.get(V(e,t));if(n)return n;throw Pn(e,t)}}destroy(){this.cleanup?.(),this.cleanup=void 0,this.registry.clear()}};async function In(e,t){e.emit(E.stored,{message:structuredClone(t)});try{await e.request(d.append,{event:{sessionId:t.sessionId,eventId:crypto.randomUUID(),timestamp:t.timestamp,type:`message`,payload:{messageId:t.messageId,turnId:t.turnId,role:t.role}}})}catch(e){console.error(`[MessageStorage] Failed to emit session event for message:`,e)}}function Ln(e){return{messageId:e.messageId,turnId:e.turnId,sessionId:e.sessionId,role:e.role,contentText:e.contentText,blocks:JSON.parse(e.blocks),agentId:e.agentId??void 0,adapterSessionId:e.adapterSessionId??void 0,adapterMessageId:e.adapterMessageId??void 0,timestamp:e.timestamp,editOf:e.editOf??void 0,origin:e.origin??void 0}}function Rn(e){let{bus:t,db:n}=e,{messages:r}=P(n,f);return t.on(E.append,async e=>{let{message:i,emitEvent:a}=e.payload,o=i.messageId??crypto.randomUUID(),s={...i,messageId:o,blocks:i.blocks??[]};await n.insert(r).values({messageId:o,turnId:s.turnId,sessionId:s.sessionId,role:s.role,contentText:s.contentText,blocks:JSON.stringify(s.blocks),agentId:s.agentId??null,adapterSessionId:s.adapterSessionId??null,adapterMessageId:s.adapterMessageId??null,timestamp:s.timestamp,editOf:s.editOf??null,origin:s.origin??null}),e.setResult({message:s}),(a??!0)&&await In(t,s)})}function zn(e){let{bus:t,db:n}=e,{messages:r}=P(n,f);return t.on(E.getBySession,async e=>{let{sessionId:t,limit:i,after:a,includeAfter:o=!1,order:s=`asc`}=e.payload,c=s===`desc`?qt:Kt,l=n.select().from(r).where(L(r.sessionId,t)).orderBy(c(r.timestamp),c(r.messageId));if(a){let e=s===`desc`?tn(Zt(r.timestamp,a.timestamp),F(L(r.timestamp,a.timestamp),o?Qt(r.messageId,a.messageId):Zt(r.messageId,a.messageId))):tn(Jt(r.timestamp,a.timestamp),F(L(r.timestamp,a.timestamp),o?Yt(r.messageId,a.messageId):Jt(r.messageId,a.messageId)));l=n.select().from(r).where(F(L(r.sessionId,t),e)).orderBy(c(r.timestamp),c(r.messageId))}let u=i??100,d=await l.limit(u+1),f=d.length>u,p=f?d.slice(0,u):d,m=f&&p.length>0?j(p[p.length-1]):null;e.setResult({messages:p.map(Ln),nextCursor:m})})}function Bn(e){let{bus:t,db:n}=e,{messages:r}=P(n,f);return t.on(E.getByTurn,async e=>{let{turnId:t}=e.payload,i=await n.select().from(r).where(L(r.turnId,t)).orderBy(Kt(r.timestamp));e.setResult({messages:i.map(Ln)})})}function Vn(e){let{bus:t,db:n}=e,{messages:r}=P(n,f);return t.on(E.get,async e=>{let{messageId:t}=e.payload,[i]=await n.select().from(r).where(L(r.messageId,t)).limit(1);e.setResult({message:i?Ln(i):null})})}function Hn(e){let{bus:t,db:n}=e,{messages:r}=P(n,f),i=Gt(n).fts;return t.on(E.search,async e=>{let{query:t,sessionId:a,limit:o}=e.payload,s=o??50;if(!t.trim()){e.setResult({messages:[],total:0});return}let{rows:c,total:l}=await i.searchMessages(n,r,{query:t,sessionId:a,limit:s});e.setResult({messages:c.map(Ln),total:l})})}function Un(e){let{bus:t,db:n}=e,{messages:r}=P(n,f),i=Gt(n).fts;return t.on(E.ftsSearch,async e=>{let{query:t,sessionId:a,limit:o=20}=e.payload;if(!t.trim()){e.setResult({results:[],total:0});return}let{results:s,total:c}=await i.searchMessageExcerpts(n,r,{query:t,sessionId:a,limit:o});e.setResult({results:s,total:c})})}function Wn(e){let{bus:t,db:n}=e,{messages:r}=P(n,f);return t.on(E.getByAdapterMessageId,async e=>{let{adapterMessageId:t}=e.payload,[i]=await n.select().from(r).where(L(r.adapterMessageId,t)).limit(1);e.setResult({message:i?Ln(i):null})})}function Gn(e){let{bus:t,db:n}=e,{messages:r}=P(n,f);return t.on(E.upsertByAdapterMessageId,async e=>{let{adapterMessageId:i,sessionId:a,turnId:o,role:s,contentText:c,blocks:l,agentId:u,adapterSessionId:d,timestamp:f,origin:p}=e.payload,[m]=await n.select({messageId:r.messageId,turnId:r.turnId}).from(r).where(F(L(r.adapterMessageId,i),L(r.sessionId,a))).limit(1);if(m){m.turnId===null&&o!==null&&await n.update(r).set({turnId:o}).where(L(r.messageId,m.messageId)),e.setResult({messageId:m.messageId,created:!1});return}let h=crypto.randomUUID();if((await n.insert(r).values({messageId:h,turnId:o,sessionId:a,role:s,contentText:c,blocks:JSON.stringify(l),agentId:u??null,adapterSessionId:d??null,adapterMessageId:i,timestamp:f,editOf:null,origin:p??null}).onConflictDoNothing({target:[r.adapterMessageId,r.sessionId]}).returning({messageId:r.messageId})).length===0){let[t]=await n.select({messageId:r.messageId,turnId:r.turnId}).from(r).where(F(L(r.adapterMessageId,i),L(r.sessionId,a))).limit(1);if(t===void 0)throw Error(`Message upsert conflict winner disappeared before reread completed`);t.turnId===null&&o!==null&&await n.update(r).set({turnId:o}).where(L(r.messageId,t.messageId)),e.setResult({messageId:t.messageId,created:!1});return}e.setResult({messageId:h,created:!0}),await In(t,{messageId:h,sessionId:a,turnId:o,role:s,contentText:c,blocks:l,agentId:u??void 0,adapterSessionId:d??void 0,adapterMessageId:i,timestamp:f,editOf:void 0,origin:p??void 0})})}function Kn(e,t){let n={bus:e,db:t},r=[Rn(n),zn(n),Bn(n),Vn(n),Hn(n),Un(n),Gn(n),Wn(n)];return()=>r.forEach(e=>e())}function qn(e,t){return vt(j(e),j(t))}function Jn(e,t){return yt(j(e),j(t))}function Yn(e,t){let n=e.get(t);if(n!==void 0)return n;let r=new Map;return e.set(t,r),r}function Xn(e,t,n,r){if(r===null)return;let i=e.get(n);if(i===void 0||i.turnId!==null)return;i.turnId=r;let a=t.get(r)??[];a.includes(n)||(a.push(n),t.set(r,a))}function Zn(e){let t=new Map,n=new Map,r=new Map,i=new Map,a=Qn(t,n,r,i),o=[$n(e,t,a),er(e,t,n),tr(e,t,r),nr(e,t),rr(e,t),ir(e,t,r,i,a),ar(e,t,n,r,i)];return()=>o.forEach(e=>e())}function Qn(e,t,n,r){return i=>{e.set(i.messageId,i);let a=t.get(i.sessionId)??[];if(a.push(i.messageId),t.set(i.sessionId,a),i.turnId){let e=n.get(i.turnId)??[];e.push(i.messageId),n.set(i.turnId,e)}i.adapterMessageId&&Yn(r,i.sessionId).set(i.adapterMessageId,i.messageId)}}function $n(e,t,n){return e.on(E.append,async t=>{let{message:r,emitEvent:i}=t.payload,a=r.messageId??crypto.randomUUID(),o={...r,messageId:a,blocks:r.blocks??[]};n(o),t.setResult({message:o}),(i??!0)&&await In(e,o)})}function er(e,t,n){return e.on(E.getBySession,async e=>{let{sessionId:r,limit:i,after:a,includeAfter:o=!1,order:s=`asc`}=e.payload,c=n.get(r)??[],l=s===`desc`?Jn:qn,u=c.map(e=>t.get(e)).filter(e=>!!e).sort(l);a&&(u=u.filter(e=>{let t=s===`desc`?yt(j(e),a):vt(j(e),a);return o?t>=0:t>0}));let d=i??100,f=u.length>d,p=f?u.slice(0,d):u,m=f&&p.length>0?j(p[p.length-1]):null;e.setResult({messages:p,nextCursor:m})})}function tr(e,t,n){return e.on(E.getByTurn,async e=>{let{turnId:r}=e.payload,i=(n.get(r)??[]).map(e=>t.get(e)).filter(e=>!!e).sort(qn);e.setResult({messages:i})})}function nr(e,t){return e.on(E.get,async e=>{e.setResult({message:t.get(e.payload.messageId)??null})})}function rr(e,t){return e.on(E.search,async e=>{let{query:n,sessionId:r,limit:i}=e.payload,a=i??50,o=n.trim().toLowerCase(),s=[...t.values()].filter(e=>r?e.sessionId===r:!0),c=o.length===0?[]:s.filter(e=>e.contentText.toLowerCase().includes(o));c.sort(qn),e.setResult({messages:c.slice(0,a),total:c.length})})}function ir(e,t,n,r,i){return e.on(E.upsertByAdapterMessageId,async a=>{let{adapterMessageId:o,sessionId:s,turnId:c,role:l,contentText:u,blocks:d,agentId:f,adapterSessionId:p,timestamp:m,origin:h}=a.payload,g=r.get(s)?.get(o);if(g){Xn(t,n,g,c),a.setResult({messageId:g,created:!1});return}let _=crypto.randomUUID(),v={messageId:_,sessionId:s,turnId:c,role:l,contentText:u,blocks:d,agentId:f??void 0,adapterSessionId:p??void 0,adapterMessageId:o,timestamp:m,editOf:void 0,origin:h??void 0};i(v),a.setResult({messageId:_,created:!0}),await In(e,v)})}function ar(e,t,n,r,i){return e.on(T.delete,e=>{let{sessionId:a}=e.payload,o=n.get(a)??[];for(let e of o){let n=t.get(e);if(n){if(t.delete(e),n.turnId){let t=(r.get(n.turnId)??[]).filter(t=>t!==e);t.length===0?r.delete(n.turnId):r.set(n.turnId,t)}if(n.adapterMessageId){let e=i.get(n.sessionId);e?.delete(n.adapterMessageId),e?.size===0&&i.delete(n.sessionId)}}}n.delete(a)})}const or=Ht(`message_routing`,e=>({messageId:e.text(`message_id`).notNull().references(u,{onDelete:`cascade`}),agentId:e.text(`agent_id`).notNull(),status:e.textEnum(`status`,{enum:[`sent`,`acknowledged`,`completed`]}).notNull(),timestamp:e.epochMs(`timestamp`).notNull(),error:e.text(`error`)}),{sqlite:e=>[Pt({columns:[e.messageId,e.agentId,e.status]}),Mt(`idx_routing_agent`).on(e.agentId,e.timestamp)],postgres:e=>[zt({columns:[e.messageId,e.agentId,e.status]}),Rt(`idx_routing_agent`).on(e.agentId,e.timestamp)]}),sr=or.sqlite,cr=nn(`messageRouting`,{schemas:{record:{request:ct,response:D.object({success:D.boolean()})},getByMessage:{request:D.object({messageId:D.string()}),response:D.object({routing:D.array(ct)})},getCompleted:{request:D.object({messageId:D.string()}),response:D.object({agentIds:D.array(D.string())})},isComplete:{request:D.object({messageId:D.string(),targetAgentIds:D.array(D.string())}),response:D.object({complete:D.boolean(),pending:D.array(D.string())})}},extensions:{drizzle:{messageRouting:sr}}}),H=cr.subjects,lr=or.postgres,ur=Vt({messageRouting:sr},{messageRouting:lr});function dr(e){return{messageId:e.messageId,agentId:e.agentId,status:e.status,timestamp:e.timestamp,error:e.error??void 0}}function fr(e,t){let{messageRouting:n}=P(t,ur),r=[];return r.push(e.on(H.record,async e=>{let{messageId:r,agentId:i,status:a,timestamp:o,error:s}=e.payload;await t.insert(n).values({messageId:r,agentId:i,status:a,timestamp:o,error:s??null}).onConflictDoUpdate({target:[n.messageId,n.agentId,n.status],set:{timestamp:o,error:s??null}}),e.setResult({success:!0})})),r.push(e.on(H.getByMessage,async e=>{let{messageId:r}=e.payload,i=await t.select().from(n).where(L(n.messageId,r));e.setResult({routing:i.map(dr)})})),r.push(e.on(H.getCompleted,async e=>{let{messageId:r}=e.payload,i=await t.select().from(n).where(F(L(n.messageId,r),L(n.status,`completed`)));e.setResult({agentIds:i.map(e=>e.agentId)})})),r.push(e.on(H.isComplete,async e=>{let{messageId:r,targetAgentIds:i}=e.payload,a=await t.select().from(n).where(F(L(n.messageId,r),L(n.status,`completed`))),o=new Set(a.map(e=>e.agentId)),s=i.filter(e=>!o.has(e));e.setResult({complete:s.length===0,pending:s})})),()=>r.forEach(e=>e())}const pr=`[session.sendMessage]`,mr={droppedAgentIds:new Set,recoveringAgentIds:new Set,deferredAgentIds:new Set,arbitratedAgentIds:new Set};function U(e,t){for(let n of t)e.add(n)}function W(e,t){let n=new Set(t.map(e=>e.agentId));return new Set([...e].filter(e=>n.has(e)))}function hr(e,t,n){let r=W(e,n);return{recovering:r,arbitrated:new Set([...W(t,n)].filter(e=>r.has(e)))}}function gr(e,t){if(e>=2)throw new S(`start-unresolved`,`[session.start] session ${t} did not stabilize after 2 deferral convergence passes`);return e+1}async function _r(e,t,n,r,i,a){let o=n,s=new Set(r),c=new Set(i),l=W(a,o),u,d=new Set(l),f=0;for(;d.size>0;){f=gr(f,t.sessionId);let n=await yr(e,t,o,d,l);o=n.targetAgents,{recovering:s,arbitrated:c}=hr(s,c,o),U(s,n.recovering),U(c,W(n.arbitrated,o)),c=new Set([...W(c,o)].filter(e=>s.has(e))),U(l,W(n.deferred,o)),u=n.recoveryContext??u,d=W(n.deferred,o)}let p=await vr(e,t.session,o,s,c);for(U(l,p.deferredAgentIds),u=p.recoveryContext??u,s=new Set,c=new Set,d=W(p.deferredAgentIds,o);d.size>0;){f=gr(f,t.sessionId);let n=await yr(e,t,o,d,l);if(o=n.targetAgents,{recovering:s,arbitrated:c}=hr(s,c,o),U(s,n.recovering),U(c,W(n.arbitrated,o)),c=new Set([...W(c,o)].filter(e=>s.has(e))),U(l,W(n.deferred,o)),u=n.recoveryContext??u,s.size>0){let n=await vr(e,t.session,o,s,c);U(l,n.deferredAgentIds),u=n.recoveryContext??u,d=W(n.deferredAgentIds,o),s=new Set,c=new Set}else d=W(n.deferred,o)}return{targetAgents:o,deferredAgentIds:l,recoveryContext:u}}async function vr(e,t,n,r,i){let a=await Promise.all(n.map(async t=>{if(t.runtimeOwner!==void 0&&!(r.has(t.agentId)&&!i.has(t.agentId)))return e.bus.requestOptional(tt.getAgent,{agentId:t.agentId,adapterId:t.adapterId,ownerInstanceId:t.runtimeOwner.instanceId})})),o=[],s=new Set;for(let[t,r]of n.entries()){if(r.runtimeOwner===void 0){s.add(r.agentId);continue}let n=a[t];if(n===void 0){o.push(r);continue}let c=n.handled?n.data.agent:void 0;if(i.has(r.agentId)){if(c==null){o.push(r);continue}await Ie(e.bus,r.agentId);continue}(!n.handled||c===null)&&o.push(r)}if(o.length===0)return{recoveryContext:void 0,deferredAgentIds:s};let c=je,l=await ee(e.bus,t,c),u=Ne(c)??null,d=0;for(let t of o)(await ie(e.bus,t,{resumeProviderSessionId:u,machineId:e.machineId})).deferred?s.add(t.agentId):d+=1;return d===0?{recoveryContext:void 0,deferredAgentIds:s}:{recoveryContext:l,deferredAgentIds:s}}async function yr(e,t,n,r,i){let a=n.filter(e=>r.has(e.agentId)),o=de(t.session,n,r);if(o.length>0)return{targetAgents:o,recovering:mr.recoveringAgentIds,arbitrated:mr.arbitratedAgentIds,deferred:mr.deferredAgentIds};Re(t.targetSpec)!==`lead-default`&&Pe(pr,t.sessionId,i);let s=await e.startReplacementLeadAgent(t.agentSelection??xe(a[0],e.machineId)),c=le(t.session,t.targetSpec);return c.length===0&&Pe(pr,t.sessionId,i),{targetAgents:c,recovering:s.recoveringAgentIds,arbitrated:s.arbitratedAgentIds,deferred:s.deferredAgentIds,recoveryContext:await ee(e.bus,t.session,je)}}const br={writesAgentStatus:!0,connectorOnlyTeardown:!0};function xr(e,t){return e.leadTransition.kind===`replace`?{...br,reservation:t}:br}async function Sr(e,t,n){let r=Fe(),i;try{i=await b(e,{sessionId:t.sessionId,agentId:n,adapterName:t.adapterName,instance:t.instance,role:`lead`,resumeProviderSessionId:null,expectedLeadAgentId:t.expectedLeadAgentId,claimToken:r})}catch(t){throw await e.requestOptional(A.ownership.release,{agentId:n,claimToken:r,disposition:`released`}).catch(()=>void 0),t}return i.outcome===`reserved`?{kind:`reserved`,reservation:i.reservation}:i.outcome===`lead-conflict`?{kind:`lead-conflict`,currentLeadAgentId:i.currentLeadAgentId}:i.outcome===`session-not-active`?{kind:`refused`,outcome:i.outcome,status:i.status}:{kind:`refused`,outcome:i.outcome}}async function Cr(e,t,n,r,i,a,o){if(i.agentId===n&&i.adapterId===t.instance.adapterId&&i.sessionId===t.sessionId&&i.ownerInstanceId===a)return{...i,ownerInstanceId:i.ownerInstanceId};throw await y(e,n,o,r),await x(e,t.instance.adapterId,n,a,!0),new S(`start-failed`,`[session.start] ${i.ownerInstanceId===void 0?`adapter omitted its owner instance`:i.ownerInstanceId===a?`adapter response identity mismatch`:`adapter owner mismatch`} for agent ${n}`)}async function wr(e,t,n,r,i,a){let o,s={...t.startRequest,adapterId:t.instance.adapterId,sessionId:t.sessionId,role:`lead`,agentId:n,ownerInstanceId:r.ownerInstanceId};try{o=t.dispatch?await t.dispatch(s):await e.request(tt.startAgent,s)}catch(o){throw await y(e,n,a,i),await x(e,t.instance.adapterId,n,r.ownerInstanceId,!0),o}if(!o.success){let s=new S(`start-failed`,`[session.start] Failed to start agent (sessionId=${t.sessionId}, adapterName=${t.adapterName}): ${o.message}`);throw o.dispatch===`not-dispatched`?await ue(e,n,r):(await y(e,n,a,i),await x(e,t.instance.adapterId,n,r.ownerInstanceId,!0)),s}return Cr(e,t,n,i,o,r.ownerInstanceId,a)}async function Tr(e,t,n){await ue(e,n,void 0,{sessionId:t.sessionId,agentId:n,expectedLeadAgentId:t.expectedLeadAgentId,transition:t.leadTransition.kind})}async function Er(e,t,n){let r=De({agentId:n,instance:t.instance,adapterName:t.adapterName,sessionId:t.sessionId,role:`lead`,runtime:t.startRequest,...t.providerConfigId!==void 0&&{providerConfigId:t.providerConfigId},...t.personaId!==void 0&&{personaId:t.personaId},...t.profileId!==void 0&&{profileId:t.profileId}}),i;try{await e.requestOptional(w.set,{agentId:n,agent:r}),i=await Sr(e,t,n)}catch(r){throw await Tr(e,t,n),r}if(i.kind===`lead-conflict`){if(!(await ue(e,n,void 0)).rowDeleted)throw new S(`start-unresolved`,`[session.start] lost lead designation for agent ${n}, but its rollback could not be confirmed`);return{outcome:`lead-conflict`,currentLeadAgentId:i.currentLeadAgentId}}if(i.kind===`refused`)throw await ue(e,n,void 0),new S(i.outcome===`session-not-active`?`session-not-active`:`start-failed`,`[session.start] reservation for agent ${n} was refused: ${i.outcome}`,void 0,void 0,i.status);let{reservation:a}=i,o=xr(t,a),s=new ke([a.claim?.claimToken]),c=await wr(e,t,n,a,s,o),l=Fe();return s.add(l),await g(e,{sessionId:t.sessionId,agentId:n,adapterId:t.instance.adapterId,adapterName:t.adapterName,policy:o,claimTokens:s,settlementClaimToken:l,admitSessionBeforeFinalAdoption:!0,...t.providerConfigId!==void 0&&{providerConfigId:t.providerConfigId},machineId:t.instance.machineId,ownerInstanceId:t.instance.ownerInstanceId},c.adapterSessionId,c.settlementAckToken,c.ownerInstanceId),{outcome:`started`,agent:{...r,status:`idle`,...c.adapterSessionId!==void 0&&{adapterSessionId:c.adapterSessionId}}}}async function Dr(e,t){if(Se(t.instance)===void 0)throw new S(`start-failed`,`[session.start] lead transition requires a machine-scoped adapter instance (sessionId=${t.sessionId})`);let n=crypto.randomUUID(),r;if(await Oe(n,async()=>(r=await Er(e,t,n),r.outcome===`started`?`connected`:`no-connector`)).settled,r===void 0)throw new S(`start-failed`,`[session.start] start for agent ${n} produced no result`);return r}function Or(e){return{source:e.source,...e.sourceId!==void 0&&{sourceId:e.sourceId}}}var kr=class{turnId;sessionId;turnNumber;startedAt;_initiator;_agentIds;_messageIds=[];admittedTargetsByMessageId=new Map;terminalPairs=new Map;pendingMessageAdmissions=new Set;constructor(e){if(!Number.isInteger(e.turnNumber)||e.turnNumber<1)throw Error(`turnNumber must be a positive integer`);this.turnId=e.turnId??crypto.randomUUID(),this.sessionId=e.sessionId,this.turnNumber=e.turnNumber,this.startedAt=e.startedAt??Date.now(),this._initiator=Object.freeze(Or(e.initiator??{source:`user`})),this._agentIds=Object.freeze([...e.agentIds])}get agentIds(){return this._agentIds}get initiator(){return Or(this._initiator)}get messageIds(){return this._messageIds}get hasPendingMessageAppends(){return this.pendingMessageAdmissions.size>0}addMessage(e){this.admitMessage(e,this._agentIds),this.commitMessageAdmission(e)}claimMessageAppend(e){this.admitMessage(e,this._agentIds)}releaseMessageAppend(e){this.rollbackMessageAdmission(e)}admitMessage(e,t){if(this.admittedTargetsByMessageId.has(e))throw Error(`Turn ${this.turnId} already admitted message ${e}`);if(t.length===0||new Set(t).size!==t.length)throw Error(`Turn ${this.turnId} requires a non-empty unique target set for message ${e}`);if(t.some(e=>!this.hasAgent(e)))throw Error(`Turn ${this.turnId} cannot admit targets outside its immutable participant set`);this._messageIds.push(e),this.admittedTargetsByMessageId.set(e,new Set(t)),this.pendingMessageAdmissions.add(e)}commitMessageAdmission(e){if(!this.admittedTargetsByMessageId.has(e))throw Error(`Turn ${this.turnId} cannot commit unknown message ${e}`);this.pendingMessageAdmissions.delete(e)}rollbackMessageAdmission(e){let t=this.admittedTargetsByMessageId.get(e);if(!t)return;if([...t].some(t=>this.terminalPairs.has(this.pairKey(e,t))))throw Error(`Turn ${this.turnId} cannot roll back terminal message ${e}`);this.admittedTargetsByMessageId.delete(e),this.pendingMessageAdmissions.delete(e);let n=this._messageIds.indexOf(e);n>=0&&this._messageIds.splice(n,1)}recordPairTerminal(e,t,n,r){if(!this.admittedTargetsByMessageId.get(e)?.has(t))return{accepted:!1,turnComplete:!1};let i=this.pairKey(e,t);return this.terminalPairs.has(i)?{accepted:!1,turnComplete:!1}:(this.terminalPairs.set(i,{outcome:n,...r!==void 0&&{error:r}}),this.isComplete()?{accepted:!0,turnComplete:!0,result:this.getResult()}:{accepted:!0,turnComplete:!1})}hasAdmittedPair(e,t){return this.admittedTargetsByMessageId.get(e)?.has(t)??!1}get admittedPairs(){return[...this.admittedTargetsByMessageId].flatMap(([e,t])=>[...t].map(t=>({messageId:e,agentId:t})))}hasAgent(e){return this._agentIds.includes(e)}isComplete(){if(this.admittedTargetsByMessageId.size===0||this.pendingMessageAdmissions.size>0)return!1;for(let[e,t]of this.admittedTargetsByMessageId)for(let n of t)if(!this.terminalPairs.has(this.pairKey(e,n)))return!1;return!0}getResult(){let e=[...this.terminalPairs.values()].filter(e=>e.outcome===`error`).map(e=>e.error??`Unknown error`);return{success:e.length===0,errors:e}}getContext(){if(this._messageIds.length===0)throw Error(`Turn ${this.turnId} has no messages yet`);return{turnId:this.turnId,messageId:this._messageIds[this._messageIds.length-1]}}getContextForMessage(e){return{turnId:this.turnId,messageId:e}}pairKey(e,t){return JSON.stringify([e,t])}},Ar=class e{byAgent=new Map;coverageByAgent=new Map;ambiguousAgents=new Set;providerCalls=new Set;add(e){if(e.granularity===`latest-request-gauge`||this.ambiguousAgents.has(e.agentId))return;let t=this.coverageByAgent.get(e.agentId);if(t!==void 0&&t!==e.granularity){this.byAgent.delete(e.agentId),this.ambiguousAgents.add(e.agentId);return}if(e.granularity===`provider-call`&&e.llmCallId!==void 0){let t=`${e.agentId}:${e.llmCallId}`;if(this.providerCalls.has(t))return;this.providerCalls.add(t)}this.coverageByAgent.set(e.agentId,e.granularity);let n=this.byAgent.get(e.agentId);n?(n.inputTokens+=e.inputTokens,e.inputCachedTokens>0&&(n.cachedInputTokens=(n.cachedInputTokens??0)+e.inputCachedTokens),n.outputTokens+=e.outputTokens):this.byAgent.set(e.agentId,{inputTokens:e.inputTokens,...e.inputCachedTokens>0&&{cachedInputTokens:e.inputCachedTokens},outputTokens:e.outputTokens})}preview(t){let n=new e;for(let[e,t]of this.byAgent)n.byAgent.set(e,{...t});for(let[e,t]of this.coverageByAgent)n.coverageByAgent.set(e,t);for(let e of this.ambiguousAgents)n.ambiguousAgents.add(e);for(let e of this.providerCalls)n.providerCalls.add(e);for(let e of t)n.add(e);return n.snapshot()}snapshot(){if(this.byAgent.size===0)return;let e=0,t=0,n=0,r={};for(let[i,a]of this.byAgent)e+=a.inputTokens,t+=a.cachedInputTokens??0,n+=a.outputTokens,r[i]={...a};return{total:{inputTokens:e,...t>0&&{cachedInputTokens:t},outputTokens:n},byAgent:r}}flush(){let e=this.snapshot();return this.byAgent.clear(),this.coverageByAgent.clear(),this.ambiguousAgents.clear(),this.providerCalls.clear(),e}clear(){this.byAgent.clear(),this.coverageByAgent.clear(),this.ambiguousAgents.clear(),this.providerCalls.clear()}};const jr=Symbol(`turnReservation`);var Mr=class{activeTurns=new Map;reservations=new Map;pendingAcquisitions=new Map;pendingPreparations=new Map;preparedTurnIds=new Set;pendingFinalizations=new Map;finalizingTurnIds=new Set;async awaitFinalization(e,t){let n=this.pendingFinalizations.get(e);if(n)return await n;let r=t();this.pendingFinalizations.set(e,r);try{await r}finally{this.pendingFinalizations.get(e)===r&&this.pendingFinalizations.delete(e)}}getActive(e){return this.activeTurns.get(e)}findActiveByTurnId(e){for(let t of this.activeTurns.values())if(t.turnId===e)return t}async acquire(e,t){let n=this.activeTurns.get(e);if(n)return{turn:n,isNew:!1};let r=this.pendingAcquisitions.get(e);if(r)return{turn:await r,isNew:!1};let i=t(this.reserve(e));this.pendingAcquisitions.set(e,i);try{return{turn:await i,isNew:!0}}finally{this.pendingAcquisitions.get(e)===i&&this.pendingAcquisitions.delete(e)}}reserve(e){if(this.activeTurns.has(e)||this.reservations.has(e))throw Error(`Session ${e} already has a routable or pending turn`);let t={sessionId:e,[jr]:!0};return this.reservations.set(e,t),t}release(e){this.reservations.get(e.sessionId)===e&&this.reservations.delete(e.sessionId)}activate(e,t){if(this.reservations.get(e.sessionId)!==e)throw Error(`Turn reservation for session ${e.sessionId} is no longer active`);this.activeTurns.set(e.sessionId,t),this.release(e)}clearActive(e){return this.activeTurns.get(e.sessionId)?.turnId===e.turnId?(this.activeTurns.delete(e.sessionId),this.preparedTurnIds.delete(e.turnId),!0):!1}tryAdmitMessage(e,t,n){if(this.finalizingTurnIds.has(e.turnId)||this.activeTurns.get(e.sessionId)?.turnId!==e.turnId)return;e.admitMessage(t,n);let r=!1;return{turn:e,messageId:t,agentIds:[...n],commit:()=>{r||(r=!0,e.commitMessageAdmission(t))},rollback:async()=>{r||(r=!0,e.rollbackMessageAdmission(t))}}}beginFinalization(e){return this.finalizingTurnIds.has(e.turnId)||this.activeTurns.get(e.sessionId)?.turnId!==e.turnId?!1:(this.finalizingTurnIds.add(e.turnId),this.clearActive(e),!0)}finishFinalization(e){this.finalizingTurnIds.delete(e.turnId)}beginPreparation(e){if(this.preparedTurnIds.has(e.turnId))return{turn:e,isOwner:!1,ready:Promise.resolve()};let t=this.pendingPreparations.get(e.turnId);if(t)return{turn:e,isOwner:!1,ready:t.ready};let n,r,i=new Promise((e,t)=>{n=e,r=t});return i.catch(()=>{}),this.pendingPreparations.set(e.turnId,{turn:e,ready:i,resolve:n,reject:r}),{turn:e,isOwner:!0,ready:i}}completePreparation(e){if(!e.isOwner)throw Error(`Only the preparation owner can complete turn ${e.turn.turnId}`);let t=this.pendingPreparations.get(e.turn.turnId);if(!t||t.turn!==e.turn)throw Error(`Turn preparation for ${e.turn.turnId} is no longer active`);this.pendingPreparations.delete(e.turn.turnId),this.preparedTurnIds.add(e.turn.turnId),t.resolve()}failPreparation(e,t){if(!e.isOwner)throw Error(`Only the preparation owner can fail turn ${e.turn.turnId}`);let n=this.pendingPreparations.get(e.turn.turnId);!n||n.turn!==e.turn||(this.pendingPreparations.delete(e.turn.turnId),n.reject(t))}clear(){this.activeTurns.clear(),this.reservations.clear(),this.pendingAcquisitions.clear(),this.pendingFinalizations.clear(),this.finalizingTurnIds.clear();for(let e of this.pendingPreparations.values())e.reject(Error(`Turn slot registry was cleared during preparation`));this.pendingPreparations.clear(),this.preparedTurnIds.clear()}},Nr=class{bus;resolveTurn;timeoutMs;settledPairs=new Map;waiters=new Map;cleanup;destroyed=!1;constructor(e,t,n){this.bus=e,this.resolveTurn=t,this.timeoutMs=n,this.cleanup=e.on(A.turn.assistantPersistenceSettled,e=>{if(this.destroyed)return;let{sessionId:t,turnId:n,messageId:r,agentId:i}=e.payload,a=this.resolveTurn(n);if(!a||a.sessionId!==t||!a.hasAdmittedPair(r,i))return;let o=this.settledPairs.get(n)??new Set;o.add(this.pairKey(r,i)),this.settledPairs.set(n,o),this.isSettled(a)&&this.waiters.get(n)?.settle()})}async waitFor(e){if(this.destroyed||e.agentIds.length===0||this.isSettled(e))return;let t=await this.bus.requestOptional(E.getByTurn,{turnId:e.turnId});this.destroyed||!t.handled||await new Promise(t=>{let n=()=>{clearTimeout(r),this.waiters.delete(e.turnId),t()},r=setTimeout(n,this.timeoutMs);this.waiters.set(e.turnId,{settle:n}),this.isSettled(e)&&n()})}clear(e){this.waiters.get(e)?.settle(),this.settledPairs.delete(e)}destroy(){if(!this.destroyed){this.destroyed=!0,this.cleanup();for(let e of[...this.waiters.values()])e.settle();this.waiters.clear(),this.settledPairs.clear()}}isSettled(e){if(e.admittedPairs.length===0)return!0;let t=this.settledPairs.get(e.turnId);return t!==void 0&&e.admittedPairs.every(({messageId:e,agentId:n})=>t.has(this.pairKey(e,n)))}pairKey(e,t){return JSON.stringify([e,t])}};function Pr(e,t,n){return{...e,isPreparationOwner:t.isOwner,commit:()=>{e.commit(),t.isOwner&&n.completePreparation(t)},rollback:async(r=`message-setup-failed:${e.messageId}`)=>{let i=e.rollback();if(t.isOwner){let a={success:!1,errors:[r]};n.beginSetupFailure(e,a),n.failPreparation(t,Error(`Message ${e.messageId} setup failed`)),await i,await n.finalizeSetupFailure(e,a);return}await i,e.turn.isComplete()&&await n.finalizeCompletedLedger(e,e.turn.getResult())}}}function Fr(e){return{status:e.success?`completed`:`error`,error:e.errors.length>0?e.errors.join(`; `):void 0}}function Ir(e,t){if(e===void 0||t===void 0)return e===t;if(e.total.inputTokens!==t.total.inputTokens||e.total.cachedInputTokens!==t.total.cachedInputTokens||e.total.outputTokens!==t.total.outputTokens||e.total.cost!==t.total.cost)return!1;let n=e.byAgent??{},r=t.byAgent??{},i=Object.keys(n).sort(),a=Object.keys(r).sort();return i.length===a.length?i.every((e,t)=>{if(e!==a[t])return!1;let i=n[e],o=r[e];return i?.inputTokens===o?.inputTokens&&i?.cachedInputTokens===o?.cachedInputTokens&&i?.outputTokens===o?.outputTokens&&i?.cost===o?.cost}):!1}async function Lr(e,t,n,r,i){let a=Fr(n),o=await e.requestOptional(C.complete,{turnId:t.turnId,status:a.status,...i!==void 0&&{expectedStatus:i},error:a.error,usage:r??null});if(!o.handled)return{handled:!1,transitioned:!0};let s=o.data.turn;if(!(s.status===a.status&&s.error===a.error))return{handled:!0,transitioned:!1};if(Ir(s.usage,r))return{handled:!0,transitioned:!0};if(o.data.transitioned)throw Error(`Turn completion storage returned non-canonical usage for transitioned turn ${t.turnId}`);let c=await e.requestOptional(C.complete,{turnId:t.turnId,status:a.status,error:a.error,usage:r??null});if(!c.handled||!Ir(c.data.turn.usage,r))throw Error(`Turn completion usage reconciliation did not persist the canonical snapshot for ${t.turnId}`);if(c.data.turn.status!==a.status||c.data.turn.error!==a.error)throw Error(`Turn completion usage reconciliation changed terminal metadata for ${t.turnId}`);return{handled:!0,transitioned:!0}}async function Rr(e){let t=e.turn.turnId,n=e.currentUsage;for(;;){let r=e.bufferedUsage.get(t);if(r===void 0||r.length===0)return n;e.bufferedUsage.delete(t);let i=e.usageAccumulator?e.usageAccumulator.preview(r):n;try{await Lr(e.bus,e.turn,e.result,i)}catch(n){let i=e.bufferedUsage.get(t)??[];throw e.bufferedUsage.set(t,[...r,...i]),n}for(let t of r)e.usageAccumulator?.add(t);n=e.usageAccumulator?.snapshot()??i}}function zr(e,t,n){return[e.on(O.usage,e=>{let{agentId:n,turnId:r,inputTokens:i,inputCachedTokens:a,outputTokens:o,granularity:s,llmCallId:c}=e.payload;if(!r){console.warn(`[SessionTurnManager] Dropping usage event without turnId (agentId=${n}).`);return}let l=t.resolveUsageTurn(r);if(!l||!l.hasAgent(n))return;let u={agentId:n,inputTokens:i,inputCachedTokens:a,outputTokens:o,granularity:s,...c&&{llmCallId:c}};t.isCompletionInFlight(l.turnId)?t.bufferUsage(l.turnId,u):t.addUsage(l,u)}),e.on(O.complete,async r=>{let{agentId:i,outcome:a,error:o,turnId:s,messageId:c}=r.payload;r.payload._import||!s||await Br(e,t,{agentId:i,messageId:c,outcome:a??`completed`,error:a===`error`?o:void 0,turnId:s,onTurnComplete:n})})]}async function Br(e,t,n){let r=t.resolveCompletionTurn(n.turnId);if(!r?.hasAgent(n.agentId))return;let i=r.recordPairTerminal(n.messageId,n.agentId,n.outcome,n.error);if(!i.accepted){t.canRetry(r.turnId)&&await t.retry(r.turnId);return}i.turnComplete&&t.beginFinalization(r,i.result);let a=e.emit(A.user_message.completed,{sessionId:r.sessionId,turnId:r.turnId,turnNumber:r.turnNumber,messageId:n.messageId,agentId:n.agentId,outcome:n.outcome,...n.error!==void 0&&{error:n.error}}),o=i.turnComplete?n.onTurnComplete(r,i.result):Promise.resolve(),[s,c]=await Promise.allSettled([a,o]);if(s.status===`rejected`&&console.error(`[SessionTurnManager] Failed to emit user-message completion:`,s.reason),c.status===`rejected`)throw c.reason}var Vr=class{bus;turnSlots=new Mr;usageAccumulators=new Map;completingTurnIds=new Set;completionPromises=new Map;completingTurns=new Map;closedUsageAdmissions=new Set;pendingTerminalCompletions=new Map;pendingTerminalResults=new Map;setupFinalizingTurnIds=new Set;bufferedUsageDuringCompletion=new Map;syntheticTurnCounters=new Map;assistantPersistenceBarrier;cleanups=[];constructor(e){this.bus=e,this.assistantPersistenceBarrier=new Nr(e,e=>this.findTurnForCompletion(e),1500)}async acquireTurn(e,t,n,r){await this.retryRetainedCompletionsForSession(e);let i=await this.turnSlots.acquire(e,e=>this.createReservedTurn(e,t,n,r));if(t.some(e=>!i.turn.hasAgent(e)))throw Error(`Turn ${i.turn.turnId} cannot route agents outside its immutable participant set (sessionId=${e})`);return i}async reserveTurn(e){return await this.retryRetainedCompletionsForSession(e),this.turnSlots.reserve(e)}releaseTurnReservation(e){this.turnSlots.release(e)}async acquireMessageAdmission(e,t,n,r,i){for(;;){let a=await this.acquireTurn(e,t,r,i),o=this.turnSlots.tryAdmitMessage(a.turn,n,t);if(!o)continue;let s=this.turnSlots.beginPreparation(a.turn);if(!s.isOwner)try{await s.ready}catch{await o.rollback();continue}return this.composeAdmissionWithPreparation(o,s)}}admitReservedMessage(e,t,n){let r=this.turnSlots.tryAdmitMessage(e,t,n);if(!r)throw Error(`Turn ${e.turnId} is no longer routable for message admission`);return this.composeAdmissionWithPreparation(r,this.turnSlots.beginPreparation(e))}async createReservedTurn(e,t,n,r){let{sessionId:i}=e;try{let a=await this.bus.requestOptional(C.create,{sessionId:i,...r!==void 0&&{turnId:r},...n!==void 0&&{initiator:n}}),o,s;if(a.handled)o=a.data.turn.turnId,s=a.data.turn.turnNumber;else{o=r??crypto.randomUUID();let e=(this.syntheticTurnCounters.get(i)??0)+1;this.syntheticTurnCounters.set(i,e),s=e}let c=new kr({sessionId:i,agentIds:t,turnId:o,turnNumber:s,initiator:n});return this.turnSlots.activate(e,c),this.usageAccumulators.set(c.turnId,new Ar),c}finally{this.releaseTurnReservation(e)}}async createTurn(e,t,n,r){return this.createReservedTurn(await this.reserveTurn(e),t,n,r)}discardActiveTurn(e){this.clearActiveRoutingTurn(e)&&(this.usageAccumulators.delete(e.turnId),this.assistantPersistenceBarrier.clear(e.turnId))}async failActiveTurnBeforeDispatch(e,t){if(this.turnSlots.getActive(e.sessionId)?.turnId!==e.turnId)return;let n={success:!1,errors:[t]};this.beginFinalization(e,n,`setup`),await this.completeTurn(e,n)}async failActiveTurnSetup(e,t){e.messageIds.length>0||e.hasPendingMessageAppends||await this.failActiveTurnBeforeDispatch(e,t)}clearActiveRoutingTurn(e){return this.turnSlots.clearActive(e)}composeAdmissionWithPreparation(e,t){return Pr(e,t,{completePreparation:e=>this.turnSlots.completePreparation(e),failPreparation:(e,t)=>this.turnSlots.failPreparation(e,t),beginSetupFailure:(e,t)=>this.beginFinalization(e.turn,t,`setup`),finalizeSetupFailure:async(e,t)=>this.completeTurn(e.turn,t),finalizeCompletedLedger:async(e,t)=>{this.beginFinalization(e.turn,t,`normal`),await this.completeTurn(e.turn,t)}})}registerCompletionHandlers(e){this.cleanups.push(...zr(this.bus,this.completionEventHooks(),e))}async completeTurn(e,t){let n=this.completionPromises.get(e.turnId);if(n)return await n;let r=this.completeTurnInternal(e,t);this.completionPromises.set(e.turnId,r);try{await r}finally{this.completionPromises.get(e.turnId)===r&&this.completionPromises.delete(e.turnId)}}async completeTurnInternal(e,t){if(this.completingTurnIds.has(e.turnId))return;this.completingTurnIds.add(e.turnId);let n=this.beginFinalization(e,t,`normal`),r=this.usageAccumulators.get(e.turnId),i=r?.snapshot(),a=this.pendingTerminalCompletions.get(e.turnId)??!1;try{if(!this.pendingTerminalCompletions.has(e.turnId)){let t=await Lr(this.bus,e,n,i,`active`);if(a=t.handled,!t.transitioned){this.clearActiveRoutingTurn(e),this.clearCompletionState(e,r);return}this.pendingTerminalCompletions.set(e.turnId,a),i=await Rr({bus:this.bus,turn:e,result:n,usageAccumulator:r,currentUsage:i,bufferedUsage:this.bufferedUsageDuringCompletion})}}catch(t){throw this.completingTurnIds.delete(e.turnId),console.error(`[SessionTurnManager] Failed to persist completion for turn ${e.turnId}:`,t),t}let o=!1;try{a&&!this.setupFinalizingTurnIds.has(e.turnId)&&await this.assistantPersistenceBarrier.waitFor(e),this.closedUsageAdmissions.add(e.turnId),i=await Rr({bus:this.bus,turn:e,result:n,usageAccumulator:r,currentUsage:i,bufferedUsage:this.bufferedUsageDuringCompletion});let t={sessionId:e.sessionId,turnId:e.turnId,turnNumber:e.turnNumber,success:n.success,error:n.errors.length>0?n.errors.join(`; `):void 0,...i!==void 0&&{usage:i},initiator:e.initiator,ingestionMarker:`live`};await me(this.bus,{type:`turn.completed`,sessionId:e.sessionId,eventId:`turn.completed:${e.turnId}`,payload:t}),o=!0,await this.bus.emit(A.turn.completed,t)}catch(t){throw o?this.clearCompletionState(e,r):this.completingTurnIds.delete(e.turnId),t}this.clearCompletionState(e,r)}async retryTurnCompletion(e){let t=this.completingTurns.get(e),n=this.pendingTerminalResults.get(e);if(t===void 0||n===void 0)throw Error(`Turn ${e} has no retryable completion`);await this.completeTurn(t,n)}async retryRetainedCompletionsForSession(e){await this.turnSlots.awaitFinalization(e,async()=>{for(let t of[...this.completingTurns.values()].filter(t=>t.sessionId===e&&this.setupFinalizingTurnIds.has(t.turnId))){let e=this.completionPromises.get(t.turnId);e?await e:this.completingTurnIds.has(t.turnId)||await this.retryTurnCompletion(t.turnId)}for(let t of[...this.completingTurns.values()].filter(t=>t.sessionId===e&&this.pendingTerminalResults.has(t.turnId)&&!this.completingTurnIds.has(t.turnId))){let e=this.completionPromises.get(t.turnId);e?await e:await this.retryTurnCompletion(t.turnId)}})}clearCompletionState(e,t){t?.clear(),this.usageAccumulators.delete(e.turnId),this.bufferedUsageDuringCompletion.delete(e.turnId),this.assistantPersistenceBarrier.clear(e.turnId),this.completingTurns.delete(e.turnId),this.closedUsageAdmissions.delete(e.turnId),this.completingTurnIds.delete(e.turnId),this.pendingTerminalCompletions.delete(e.turnId),this.pendingTerminalResults.delete(e.turnId),this.setupFinalizingTurnIds.delete(e.turnId),this.turnSlots.finishFinalization(e)}getActiveTurn(e){return this.turnSlots.getActive(e)}findActiveTurnByTurnId(e){return this.turnSlots.findActiveByTurnId(e)}destroy(){for(let e of this.cleanups)e();this.cleanups.length=0,this.turnSlots.clear(),this.usageAccumulators.clear(),this.completingTurnIds.clear(),this.completionPromises.clear(),this.completingTurns.clear(),this.closedUsageAdmissions.clear(),this.pendingTerminalCompletions.clear(),this.pendingTerminalResults.clear(),this.setupFinalizingTurnIds.clear(),this.bufferedUsageDuringCompletion.clear(),this.syntheticTurnCounters.clear(),this.assistantPersistenceBarrier.destroy()}async recordAgentCompletion(e,t,n,r,i,a){await Br(this.bus,this.completionEventHooks(),{agentId:e,messageId:t,outcome:n,...r!==void 0&&{error:r},turnId:a,onTurnComplete:i})}completionEventHooks(){return{resolveUsageTurn:e=>this.findTurnForUsage(e),resolveCompletionTurn:e=>this.findTurnForCompletion(e),isCompletionInFlight:e=>this.completingTurnIds.has(e),addUsage:(e,t)=>this.usageAccumulators.get(e.turnId)?.add(t),bufferUsage:(e,t)=>this.bufferUsageDuringCompletion(e,t),canRetry:e=>this.pendingTerminalResults.has(e)&&!this.completingTurnIds.has(e),retry:async e=>this.retryTurnCompletion(e),beginFinalization:(e,t)=>this.beginFinalization(e,t,`normal`)}}beginFinalization(e,t,n){let r=this.pendingTerminalResults.get(e.turnId)??t;return this.completingTurns.set(e.turnId,e),this.pendingTerminalResults.set(e.turnId,r),n===`setup`&&this.setupFinalizingTurnIds.add(e.turnId),this.turnSlots.beginFinalization(e),r}bufferUsageDuringCompletion(e,t){let n=this.bufferedUsageDuringCompletion.get(e)??[];n.push(t),this.bufferedUsageDuringCompletion.set(e,n)}findTurnForUsage(e){let t=this.findActiveTurnByTurnId(e);if(t!==void 0)return t;if(!this.closedUsageAdmissions.has(e))return this.completingTurns.get(e)}findTurnForCompletion(e){return this.findActiveTurnByTurnId(e)??this.completingTurns.get(e)}};async function Hr(e,t,n){let r=ge(t.adapterName),i=ge(t.adapterId);if(!r&&!i)throw Error(`[SessionOrchestrator.sendMessage] adapterName or adapterId required when session has no agents (sessionId=${n})`);if(i)return ve(e,i,r,`[SessionOrchestrator.sendMessage] (sessionId=${n}) `);if(r===void 0)throw Error(`[SessionOrchestrator.sendMessage] adapterName could not be resolved (sessionId=${n})`);return r}async function Ur(e,t,n,r,i){if(!t)throw Error(`[SessionOrchestrator.sendMessage] agent selection required when session has no agents (sessionId=${n})`);if(t.kind===`adapter`)return t;if(t.kind===`canonical-model`)return await Wr(e,t,n,r,i);throw Error(`[SessionOrchestrator.sendMessage] agent with kind: 'adapter' or 'canonical-model' required when session has no agents (sessionId=${n})`)}async function Wr(e,t,n,r,i){let a=Ct(t.model);if(bt(a))throw Error(`[SessionOrchestrator.sendMessage] Invalid canonical model "${t.model}" (sessionId=${n}): ${a.message}`);if(a.kind===`virtual`)throw Error(`[SessionOrchestrator.sendMessage] Virtual canonical models require a host resolver (sessionId=${n})`);let o=await e.request(nt.resolve,{parsed:a,context:{sessionId:n,promptText:v(r),...i===void 0?{}:{sessionContext:i}}});return{...t,...o,kind:`adapter`,providerConfigId:t.providerConfigId??o.providerConfigId}}async function Gr(e,t,n){let{adapterName:r,sessionId:i,machineId:a}=n,o={adapterId:ge(t.adapterId),machineId:ge(t.machineId)},s=Me(o,{sessionId:i,errorPrefix:`[SessionOrchestrator.sendMessage] `});if(s!==void 0)throw new S(`start-failed`,s);if(o.adapterId===void 0){let t=await Ae(e,{adapterName:r,machineId:a});if(t===void 0||t.machineId===void 0||t.ownerInstanceId===void 0)throw new S(`start-failed`,`[SessionOrchestrator.sendMessage] adapter runtime did not prove a live owner for ${r} (sessionId=${i})`);return{adapterId:t.adapterId,machineId:t.machineId,ownerInstanceId:t.ownerInstanceId}}let c=await Ae(e,{adapterName:r,adapterId:o.adapterId,...o.machineId!==void 0&&{machineId:o.machineId}});if(c?.machineId===void 0)throw new S(`start-failed`,`[SessionOrchestrator.sendMessage] agent instance resolution for ${o.adapterId} produced no machine (sessionId=${i})`);if(c.ownerInstanceId===void 0)throw new S(`start-failed`,`[SessionOrchestrator.sendMessage] agent instance resolution for ${o.adapterId} produced no owner (sessionId=${i})`);return{adapterId:c.adapterId,machineId:c.machineId,ownerInstanceId:c.ownerInstanceId}}async function Kr(e,t,n){let r=await Hr(e,t,n.sessionId),i=t.providerConfigId===void 0?void 0:We(e,{adapterName:r,providerConfigId:t.providerConfigId});i?.catch(()=>void 0);let a=await Gr(e,t,{...n,adapterName:r}),o=await i;return{adapterName:r,instance:a,providerContext:o,providerConfigId:t.providerConfigId??o?.providerConfigId}}var qr=class{bus;turnManager;adapterRegistry;machineId;cleanups=[];constructor(e=Et,t){this.bus=e,this.machineId=t,this.turnManager=new Vr(e),this.adapterRegistry=new Fn(e),this.cleanups.push(Ce(this.bus,this.turnManager,t)),this.registerSendMessageHandler(),this.turnManager.registerCompletionHandlers(this.completeTurn.bind(this))}registerSendMessageHandler(){this.cleanups.push(this.bus.on(A.sendMessage,async e=>{let{sessionId:t,message:n,agentIds:r,deliveryMode:i,agent:a,source:o,origin:s}=e.payload,c=ce(o,e.payload.extensionId),l=e.payload.sessionContext?dt.parse(e.payload.sessionContext):void 0,{sessionId:u,session:d}=await se(this.bus,t,l,e.payload.originWindowId,this.machineId),f=await p(this.bus,d);ye(`[session.sendMessage]`,u,d,r);let m=new Set(f.recoveringAgentIds),g=new Set(f.arbitratedAgentIds),_=new Set(f.deferredAgentIds);if(d.agents.length===0){let e=await this.startLeadAgent(d,u,a,n,l,{kind:`fresh`});for(let t of e.recoveringAgentIds)m.add(t);for(let t of e.arbitratedAgentIds)g.add(t);for(let t of e.deferredAgentIds)_.add(t)}let ee=le(d,r);if(ee.length===0)throw Error(`[SessionOrchestrator.sendMessage] No valid target agents found (sessionId=${u})`);let{targetAgents:y,deferredAgentIds:ne,recoveryContext:re}=await _r({bus:this.bus,machineId:this.machineId,startReplacementLeadAgent:e=>this.startLeadAgent(d,u,e,n,l,{kind:`replace`})},{session:d,sessionId:u,targetSpec:r,agentSelection:a,message:n,sessionContext:l},ee,m,g,_),b=crypto.randomUUID(),ie=te(n),oe=await this.turnManager.acquireMessageAdmission(u,y.map(e=>e.agentId),b,c,e.payload.turnId),x=oe.turn;try{if(!(await this.bus.requestOptional(E.append,{message:{messageId:b,turnId:x.turnId,sessionId:u,role:`user`,contentText:v(n),blocks:ie,timestamp:Date.now(),...s!==void 0&&{origin:s}}})).handled)throw Error(`Message storage append handler is not registered`);oe.isPreparationOwner&&await Le(this.bus,{sessionId:u,turnId:x.turnId,turnNumber:x.turnNumber,messageId:b,agentIds:[...x.agentIds],initiator:x.initiator,ingestionMarker:`live`}),await ae(this.bus,{sessionId:u,turnId:x.turnId,turnNumber:x.turnNumber,messageId:b,content:n,agentIds:y.map(e=>e.agentId),...o!==void 0&&{source:o},...s!==void 0&&{origin:s}}),oe.commit()}catch(e){try{await oe.rollback(`user-message-persistence-failed`)}catch(e){console.error(`[SessionOrchestrator] Failed to finalize rejected message setup:`,e)}throw e}for(let e of y)this.bus.requestOptional(H.record,{messageId:b,agentId:e.agentId,status:`sent`,timestamp:Date.now()}).catch(t=>{console.warn(`[SessionOrchestrator] Failed to record message routing`,{sessionId:u,messageId:b,agentId:e.agentId,error:t instanceof Error?t.message:String(t)})});let ue=re?{...l,...re}:l;await h(this.bus,d,y,n,b,x,i,this.completeTurn.bind(this),this.turnManager,ue,e.payload.responseSchema),e.setResult({messageId:b,turnId:x.turnId,sessionId:u,...ne.size>0&&{deferredAgentIds:[...ne]}})}))}async startLeadAgent(e,t,n,r,i,a){let o=await Ur(this.bus,n,t,r,i),{adapterName:s,instance:c,providerContext:l,providerConfigId:u}=await Kr(this.bus,o,{sessionId:t,machineId:this.machineId,registry:this.adapterRegistry}),d=await Dr(this.bus,{sessionId:t,instance:c,adapterName:s,leadTransition:a,expectedLeadAgentId:e.leadAgentId??null,...u!==void 0&&{providerConfigId:u},startRequest:Te(o,{adapterId:c.adapterId,sessionId:t,providerContext:l,sessionContext:i})});if(d.outcome===`started`)return e.agents.push(d.agent),e.leadAgentId=d.agent.agentId,{droppedAgentIds:new Set,recoveringAgentIds:new Set,deferredAgentIds:new Set,arbitratedAgentIds:new Set};let{session:f}=await this.bus.request(A.get,{sessionId:t});if(!f||f.agents.length===0)throw new S(`lead-conflict`,`[SessionOrchestrator.sendMessage] lead designation for session ${t} was won by ${d.currentLeadAgentId??`another start`}, which left no agent behind`);e.agents=f.agents,e.leadAgentId=f.leadAgentId;let m=await p(this.bus,e);if(e.agents.length===0)throw new S(`lead-conflict`,`[SessionOrchestrator.sendMessage] lead designation for session ${t} was won by ${d.currentLeadAgentId??`another start`}, whose agent did not survive its start`);return m}async completeTurn(e,t){await this.turnManager.completeTurn(e,t)}destroy(){for(let e of this.cleanups)e();this.cleanups.length=0,this.turnManager.destroy(),this.adapterRegistry.destroy()}},Jr=class{bus;constructor(e){this.bus=e}async getTurnSoFarContext(e){try{let{messages:t}=await this.bus.request(E.getByTurn,{turnId:e});return this.convertSessionMessagesToMessages(t)}catch(e){return e instanceof Dt||console.warn(`[TurnContextEnricher] Failed to load turn-so-far context:`,e),[]}}async enrichForDeliveryMode(e,t,n){if(n!==`immediate`)return e;let r=await this.getTurnSoFarContext(t);return r.length===0?e:[...e??[],...r]}convertSessionMessagesToMessages(e){return e.map(e=>({role:e.role,blocks:e.blocks}))}};function Yr(e){let{bus:t}=e;return t.on(A.getStatusCounts,async e=>{e.payload;let{all:n,active:r,closed:i,archived:a,discovered:o}=await t.request(T.getStatusCounts,{});e.setResult({all:n,active:r,closed:i,archived:a,discovered:o})})}function Xr(e){let{bus:t}=e;return t.on(A.resume,async e=>{let{sessionId:n}=e.payload,{session:r}=await t.request(T.get,{sessionId:n});if(!r||r.status!==`closed`){e.setResult({success:!1});return}let i=await t.requestOptional(T.update,{sessionId:n,status:`active`,lastActivityAt:Date.now(),expectedStatus:[`closed`]});if(i.handled&&i.data.success){await t.emit(A.resumed,{sessionId:n}),e.setResult({success:!0});return}let a=await t.requestOptional(T.get,{sessionId:n});e.setResult({success:a.handled&&a.data.session?.status===`active`})})}function Zr(e){return e.on(Ge.listActions,e=>{let t=ze.getAll().map(e=>({id:e.id,label:e.label,description:e.description,category:e.category}));e.setResult({actions:t})})}const Qr=[{actionId:`strip-reasoning`},{actionId:`strip-tool-outputs`}];function $r(e){return{...e.cwd!==void 0&&{cwd:e.cwd},...e.systemPrompt!==void 0&&{systemPrompt:e.systemPrompt},...e.allowedTools!==void 0&&{allowedTools:e.allowedTools},...e.disallowedTools!==void 0&&{disallowedTools:e.disallowedTools}}}var ei=class{bus;agentToSession=new Map;pendingAssistantResponses=new Map;cleanups=[];constructor(e=Et){this.bus=e,this.registerHandlers()}registerHandlers(){this.registerMappingHandlers(),this.registerTurnTrackingHandlers(),this.registerBlockAccumulationHandlers()}registerMappingHandlers(){this.cleanups.push(this.bus.on(A.agent.added,e=>{this.agentToSession.set(e.payload.agentId,e.payload.sessionId)})),this.cleanups.push(this.bus.on(A.closed,e=>{for(let[t,n]of this.agentToSession)n===e.payload.sessionId&&this.agentToSession.delete(t);for(let[t,n]of this.pendingAssistantResponses)n.sessionId===e.payload.sessionId&&this.pendingAssistantResponses.delete(t)}))}registerTurnTrackingHandlers(){this.cleanups.push(this.bus.on(A.turn.started,e=>{let{sessionId:t,turnId:n,messageId:r,agentIds:i}=e.payload;for(let e of i){let i=this.pendingKey(n,r,e);this.pendingAssistantResponses.has(i)||this.pendingAssistantResponses.set(i,{sessionId:t,turnId:n,messageId:r,agentId:e,blocks:[]})}})),this.cleanups.push(this.bus.on(A.user_message.sent,e=>{let{sessionId:t,turnId:n,messageId:r,agentIds:i}=e.payload;for(let e of i){let i=this.pendingKey(n,r,e);this.pendingAssistantResponses.set(i,{sessionId:t,turnId:n,messageId:r,agentId:e,blocks:[]})}})),this.cleanups.push(this.bus.on(A.user_message.acknowledged,e=>{let t=this.pendingKey(e.payload.turnId,e.payload.messageId,e.payload.agentId);this.pendingAssistantResponses.has(t)||this.pendingAssistantResponses.set(t,{sessionId:e.payload.sessionId,turnId:e.payload.turnId,messageId:e.payload.messageId,agentId:e.payload.agentId,blocks:[]})})),this.cleanups.push(this.bus.on(A.turn.assistantPersistenceSettled,e=>{let{turnId:t,messageId:n,agentId:r}=e.payload;this.pendingAssistantResponses.delete(this.pendingKey(t,n,r))})),this.cleanups.push(this.bus.on(A.turn.completed,e=>{let{sessionId:t,turnId:n}=e.payload;for(let[e,r]of this.pendingAssistantResponses)r.sessionId===t&&r.turnId===n&&this.pendingAssistantResponses.delete(e)}))}registerBlockAccumulationHandlers(){this.cleanups.push(this.bus.on(O.message,e=>{let t=this.pendingForProviderEvent(e.payload);t&&t.blocks.push({type:`text`,content:e.payload.content})})),this.cleanups.push(this.bus.on(O.reasoning,e=>{let t=this.pendingForProviderEvent(e.payload);t&&t.blocks.push({type:`reasoning`,content:e.payload.content})})),this.cleanups.push(this.bus.on(O.tool.use,e=>{let t=this.pendingForProviderEvent(e.payload);t&&t.blocks.push({type:`tool_call`,toolCallId:e.payload.toolCallId,name:e.payload.toolName,args:e.payload.args??{}})})),this.cleanups.push(this.bus.on(O.tool.completed,e=>{let t=this.pendingForProviderEvent(e.payload);if(t){let n=e.payload.result,r=typeof n==`string`?n:JSON.stringify(n);t.blocks.push({type:`tool_output`,toolCallId:e.payload.toolCallId,output:r,isError:e.payload.success===!1})}})),this.cleanups.push(this.bus.on(O.complete,async e=>{if(e.payload._import){let{turnId:t,messageId:n,agentId:r}=e.payload;t&&this.pendingAssistantResponses.delete(this.pendingKey(t,n,r));return}let{agentId:t,adapterSessionId:n,outcome:r,error:i,message:a,structuredOutputValidation:o,turnId:s,messageId:c}=e.payload;if(!s)return;let l=this.pendingKey(s,c,t),u=this.pendingAssistantResponses.get(l);if(u){this.pendingAssistantResponses.delete(l);try{await this.storeAssistantMessage(u,r===`error`?void 0:n,r===`error`?i:void 0,o===void 0?void 0:{content:a})}finally{await this.bus.emit(A.turn.assistantPersistenceSettled,{sessionId:u.sessionId,turnId:u.turnId,agentId:t,messageId:u.messageId})}}}))}async storeAssistantMessage(e,t,n,r){let i=r===void 0?e.blocks:r.content===void 0?[]:[{type:`text`,content:r.content}];if(i.length===0&&!n)return;let a=i.filter(e=>e.type===`text`).map(e=>e.content).join(`
|
|
2
2
|
`),o=crypto.randomUUID();try{if(!(await this.bus.requestOptional(E.append,{message:{messageId:o,turnId:e.turnId,sessionId:e.sessionId,role:`assistant`,contentText:a||(n?`[Error: ${n}]`:``),blocks:i,agentId:e.agentId,adapterSessionId:t,timestamp:Date.now()}})).handled)return;let r=await this.bus.requestOptional(E.getByTurn,{turnId:e.turnId});if(r.handled){let t=r.data.messages.find(t=>t.role===`user`&&t.messageId===e.messageId);t&&await this.bus.requestOptional(H.record,{messageId:t.messageId,agentId:e.agentId,status:`completed`,timestamp:Date.now(),error:n})}}catch(e){console.error(`[SessionBridge] Failed to store assistant message:`,e)}}destroy(){for(let e of this.cleanups)e();this.cleanups.length=0,this.agentToSession.clear(),this.pendingAssistantResponses.clear()}pendingForProviderEvent(e){if(!(!e.turnId||!e.messageId))return this.pendingAssistantResponses.get(this.pendingKey(e.turnId,e.messageId,e.agentId))}pendingKey(e,t,n){return JSON.stringify([e,t,n])}},ti=class{bus;_sessionId;_extensionId;_turnId;_parentSessionId;contextTracker;contextContributions=new Map;constructor(e,t,n,r,i,a){this.bus=e,this._sessionId=t,this._extensionId=n,this._turnId=r,this._parentSessionId=i,this.contextTracker=a}get sessionId(){return this._sessionId}get turnId(){return this._turnId}get parentSessionId(){return this._parentSessionId}get extensionId(){return this._extensionId}async sendToAgent(e,t){await this.bus.request(A.sendMessage,{sessionId:this._sessionId,agentIds:[e],message:t,source:`extension`,extensionId:this._extensionId})}contributeContext(e,t){this.contextContributions.set(e,t)}getContributions(){return Object.fromEntries(this.contextContributions)}async fork(e){return(await this.bus.request(A.fork,{sourceSessionId:this._sessionId,name:e.reason})).sessionId}async merge(e,t){await this.bus.request(A.merge,{parentSessionId:this._sessionId,childSessionId:e,summary:t,source:`extension`,extensionId:this._extensionId})}async abandon(e){await this.bus.request(A.abandon,{parentSessionId:this._sessionId,childSessionId:e,source:`extension`,extensionId:this._extensionId})}async requestCompression(e){await this.bus.emit(A.compressionRequested,{sessionId:this._sessionId,reason:e,source:`extension`,extensionId:this._extensionId})}async getContextWindowState(){if(this.contextTracker){let e=this.contextTracker.getSessionState(this._sessionId);if(e)return{currentTokens:e.currentTokens,maxTokens:e.maxTokens,percentage:e.percentage,level:e.level}}let{session:e}=await this.bus.request(A.get,{sessionId:this._sessionId});return!e||e.agents.length===0?{currentTokens:0,maxTokens:1,percentage:0,level:`ok`}:{currentTokens:0,maxTokens:2e5,percentage:0,level:`ok`}}async getChildSessions(){return(await this.bus.request(A.getChildren,{sessionId:this._sessionId})).children.map(e=>e.sessionId)}};function ni(e,t,n,r,i,a){return new ti(e,t,n,r,i,a)}const ri=l.postgres,ii=r.postgres,ai=a.postgres,oi=s.postgres,si=t.postgres,G=Vt({sessions:c,agents:n,runtimeInstanceIncarnationCounters:i,runtimeInstances:o,adapterSessionClaims:e},{sessions:ri,agents:ii,runtimeInstanceIncarnationCounters:ai,runtimeInstances:oi,adapterSessionClaims:si});function ci(e,t){let n=e?.clientId??null,r=e?.clientAccountId??null,i=e?.lastClientIdentityObservation??null;return F(n===null?z(t.clientId):L(t.clientId,n),r===null?z(t.clientAccountId):L(t.clientAccountId,r),i===null?z(t.lastClientIdentityObservation):L(t.lastClientIdentityObservation,i))}function li(e){return{agentId:e.agentId,adapterId:e.adapterId,adapterName:e.adapterName,sessionId:e.sessionId,...e.ownerMachineId!==null&&e.ownerInstanceId!==null?{runtimeOwner:{machineId:e.ownerMachineId,instanceId:e.ownerInstanceId}}:{},...e.recoveryAttemptId===null?{}:{recoveryAttemptId:e.recoveryAttemptId},role:e.role,status:e.status,createdAt:e.createdAt,lastActivityAt:e.lastActivityAt,model:e.model??void 0,adapterSessionId:e.adapterSessionId??void 0,cwd:e.cwd??void 0,allowedDirectories:e.allowedDirectories??void 0,providerConfigId:e.providerConfigId??void 0,personaId:e.personaId??void 0,profileId:e.profileId??void 0,harnessId:e.harnessId??void 0,clientId:e.clientId??void 0,compressionMode:e.compressionMode?at.parse(e.compressionMode):void 0,currentAdapterSessionId:e.currentAdapterSessionId??void 0,currentAdapterSessionIdState:e.currentAdapterSessionIdState,revision:e.revision,currencyFence:e.currencyFence}}function ui(e){return{agentId:e.agentId,adapterId:e.adapterId,adapterName:e.adapterName,sessionId:e.sessionId,ownerMachineId:e.runtimeOwner?.machineId??null,ownerInstanceId:e.runtimeOwner?.instanceId??null,recoveryAttemptId:e.recoveryAttemptId??null,role:e.role,status:e.status,createdAt:e.createdAt,lastActivityAt:e.lastActivityAt,model:e.model??null,adapterSessionId:e.adapterSessionId??null,cwd:e.cwd??null,allowedDirectories:e.allowedDirectories??null,providerConfigId:e.providerConfigId??null,personaId:e.personaId??null,profileId:e.profileId??null,harnessId:e.harnessId??null,clientId:e.clientId??null,compressionMode:e.compressionMode??null}}function di(e,t){let{adapterSessionId:n,ownerMachineId:r,ownerInstanceId:i,recoveryAttemptId:a,status:o,...s}=e;return{...s,status:B`CASE WHEN ${t.status} = 'disposed' THEN ${t.status} ELSE excluded.status END`}}function fi(e){let t;for(let n=e.length-1;n>=0;--n)try{e[n]?.()}catch(e){t??=e}if(t)throw t}function pi(e){let{bus:t,db:n}=e,{agents:r}=P(n,G);return t.on(w.get,async e=>{let[t]=await n.select().from(r).where(L(r.agentId,e.payload.agentId)).limit(1);e.setResult({agent:t?li(t):null})})}function mi(e){let{bus:t,db:n}=e,{agents:r}=P(n,G);return t.on(w.set,async e=>{let{agent:t}=e.payload,i=ui(t),a=await n.insert(r).values(i).onConflictDoUpdate({target:r.agentId,set:di(i,r)});e.setResult({success:M(a)})})}function hi(e){let{bus:t,db:n}=e,{agents:r}=P(n,G);return t.on(w.delete,async e=>{let t=await n.delete(r).where(L(r.agentId,e.payload.agentId));e.setResult({success:M(t)})})}function gi(e){let{bus:t,db:n}=e,{agents:r}=P(n,G);return t.on(w.listByAdapter,async e=>{let{adapterName:t,status:i}=e.payload,a=[L(r.adapterName,t)];i&&i!==`all`&&a.push(L(r.status,i));let o=a.length>1?F(...a):a[0],s=await n.select().from(r).where(o);e.setResult({agents:s.map(li)})})}function _i(e){let{bus:t,db:n}=e,{agents:r}=P(n,G);return t.on(w.listBySession,async e=>{let{sessionId:t}=e.payload,i=await n.select().from(r).where(L(r.sessionId,t));e.setResult({agents:i.map(li)})})}function vi(e){let{bus:t,db:n}=e,{agents:r}=P(n,G);return t.on(w.updateStatus,async e=>{let{agentId:t,status:i,expectedStatus:a}=e.payload,o=Date.now(),s=[L(r.agentId,t),$t(r.status,`disposed`)];if(a&&s.push(R(r.status,a)),M(await n.update(r).set({status:i,lastActivityAt:o}).where(F(...s)))){e.setResult({success:!0,transitioned:!0});return}let[c]=await n.select({agentId:r.agentId}).from(r).where(L(r.agentId,t)).limit(1);e.setResult({success:c!==void 0,transitioned:!1})})}function yi(e){let{bus:t,db:n}=e,{agents:r}=P(n,G);return t.on(w.updateActivity,async e=>{let{agentId:t,lastActivityAt:i}=e.payload,a=await n.update(r).set({lastActivityAt:i}).where(L(r.agentId,t));e.setResult({success:M(a)})})}function bi(e){let{bus:t,db:n}=e,{agents:r}=P(n,G);return t.on(w.updateRuntime,async e=>{let{agentId:t,adapterId:i,runtimeOwner:a,adapterSessionId:o,cwd:s,model:c,allowedDirectories:l,providerConfigId:u}=e.payload,d={lastActivityAt:Date.now()};i!==void 0&&(d.adapterId=i),a!==void 0&&(d.ownerMachineId=a.machineId,d.ownerInstanceId=a.instanceId),o!==void 0&&(d.adapterSessionId=o),s!==void 0&&(d.cwd=s),c!==void 0&&(d.model=c),l!==void 0&&(d.allowedDirectories=l),u!==void 0&&(d.providerConfigId=u);let f=await n.update(r).set(d).where(L(r.agentId,t));e.setResult({success:M(f)})})}function xi(e,t){let n={bus:e,db:t},r=[pi(n),mi(n),hi(n),gi(n),_i(n),vi(n),yi(n),bi(n)];return()=>fi(r)}function K(e){return e??void 0}function Si(e){if(e)try{let t=JSON.parse(e),n=rn.safeParse(t);return n.success?n.data:void 0}catch{return}}function Ci(e){if(e)try{let t=JSON.parse(e),n=st.safeParse(t);return n.success?n.data:void 0}catch{return}}function q(e,t){let n=Ci(e.forkTransforms),r=Si(e.lastClientIdentityObservation);return{sessionId:e.sessionId,createdAt:e.createdAt,lastActivityAt:e.lastActivityAt,status:e.status,leadAgentId:K(e.leadAgentId),parentSessionId:K(e.parentSessionId),contextInheritance:K(e.contextInheritance),rootSessionId:K(e.rootSessionId),forkPointMessageId:K(e.forkPointMessageId),branchKind:K(e.branchKind),adapterName:K(e.adapterName),adapterSessionId:K(e.adapterSessionId),currentAdapterSessionId:K(e.currentAdapterSessionId),currentAdapterSessionIdState:e.currentAdapterSessionIdState,adapterId:K(e.adapterId),clientId:K(e.clientId),clientAccountId:K(e.clientAccountId),lastClientIdentityObservation:r,isOrchestrated:K(e.isOrchestrated),isImported:K(e.isImported),title:K(e.title),summary:K(e.summary),summaryUpdatedAt:K(e.summaryUpdatedAt),forkTransforms:n,targetWorkingDirectory:K(e.targetWorkingDirectory),executionTargetId:K(e.executionTargetId),agents:t.map(li),approvalPolicyOverride:K(e.approvalPolicyOverride),metadata:K(e.metadata),spawningToolCallId:K(e.spawningToolCallId),source:K(e.source),parentExternalSessionId:K(e.parentExternalSessionId),logFilePath:K(e.logFilePath),discoveredAt:K(e.discoveredAt),importStatus:K(e.importStatus),isSidechain:K(e.isSidechain),machineId:K(e.machineId)}}function wi(e){let t=new Map;for(let n of e){let e=t.get(n.sessionId)??[];e.push(n),t.set(n.sessionId,e)}return t}async function Ti(e,t,n){if(!n||t.length===0)return{};let{messages:r}=P(e,f),i=e.select({sessionId:r.sessionId,minTimestamp:B`MIN(${r.timestamp})`.as(`min_timestamp`)}).from(r).where(F(L(r.role,`user`),R(r.sessionId,t))).groupBy(r.sessionId).as(`first_user_message_by_session`),a=await e.select({sessionId:r.sessionId,preview:r.contentText}).from(r).innerJoin(i,F(L(r.sessionId,i.sessionId),L(r.timestamp,i.minTimestamp))).where(L(r.role,`user`)),o=new Map;for(let e of a)o.has(e.sessionId)||o.set(e.sessionId,e.preview);let s=await e.select({sessionId:r.sessionId,count:I()}).from(r).where(R(r.sessionId,t)).groupBy(r.sessionId),c=new Map;for(let e of s)c.set(e.sessionId,e.count);return{previewBySession:o,countBySession:c}}function Ei(e,t){return{sessionId:e.sessionId,clientId:t.clientId??e.clientId,clientAccountId:t.clientAccountId??e.clientAccountId,lastClientIdentityObservation:t.lastClientIdentityObservation??e.lastClientIdentityObservation}}function Di(e){return e.clientId!==void 0||e.clientAccountId!==void 0||e.lastClientIdentityObservation!==void 0}function Oi(e){let{bus:t,db:n}=e,{sessions:r,agents:i}=P(n,G);return t.on(T.getByAdapterSessionId,async e=>{let{adapterSessionId:t,source:a,adapterName:o}=e.payload,s=[L(r.adapterSessionId,t)];a!==void 0&&s.push(L(r.source,a)),o!==void 0&&s.push(L(r.adapterName,o));let c=await n.select().from(r).where(F(...s)).limit(2),l=c[0];if(c.length!==1||l===void 0){e.setResult({session:null});return}let u=await n.select().from(i).where(L(i.sessionId,l.sessionId));e.setResult({session:q(l,u)})})}function ki(e){let{bus:t,db:n}=e,{sessions:r}=P(n,G),{messages:i}=P(n,f);return t.on(T.getChildren,async e=>{let{sessionId:t}=e.payload,a=await n.select().from(r).where(L(r.parentSessionId,t));if(a.length===0){e.setResult({children:[]});return}let o=a.map(e=>e.sessionId),s=await n.select({sessionId:i.sessionId,count:I()}).from(i).where(R(i.sessionId,o)).groupBy(i.sessionId),c=new Map;for(let e of s)c.set(e.sessionId,e.count);let l=await n.select({parentSessionId:r.parentSessionId,count:I()}).from(r).where(R(r.parentSessionId,o)).groupBy(r.parentSessionId),u=new Set;for(let e of l)e.parentSessionId&&u.add(e.parentSessionId);let d=a.map(e=>e.forkPointMessageId).filter(e=>e!==null),f=new Map;if(d.length>0){let e=await n.select({messageId:i.messageId,adapterMessageId:i.adapterMessageId}).from(i).where(F(L(i.sessionId,t),R(i.adapterMessageId,d)));for(let t of e)t.adapterMessageId&&f.set(t.adapterMessageId,t.messageId)}let p=a.map(e=>{let t=e.forkPointMessageId,n=t?f.get(t)??t:null;return{sessionId:e.sessionId,title:e.title??null,forkPointMessageId:n,branchKind:e.branchKind??null,messageCount:c.get(e.sessionId)??0,hasChildren:u.has(e.sessionId),spawningToolCallId:e.spawningToolCallId??void 0}});e.setResult({children:p})})}function Ai(e){return{...e.cwd===void 0?{}:{targetWorkingDirectory:e.cwd},...e.logFilePath===void 0?{}:{logFilePath:e.logFilePath},...e.machineId===void 0?{}:{machineId:e.machineId}}}function ji(e){let{bus:t,db:n}=e,{sessions:r}=P(n,G);return t.on(T.rebindObserved,async e=>{let i=e.payload,a=F(L(r.source,i.source),L(r.adapterSessionId,i.externalSessionId)),o=Ai(i),s=Object.keys(o),[c]=s.length===0?await n.select({sessionId:r.sessionId}).from(r).where(a).limit(1):await n.update(r).set(o).where(a).returning({sessionId:r.sessionId});if(!c){e.setResult({outcome:`not-found`});return}e.setResult({outcome:`rebound`,sessionId:c.sessionId}),s.length>0&&t.emit(A.updated,{sessionId:c.sessionId,changedProperties:s}).catch(e=>console.error(`[SessionStorage] Failed to emit session.updated:`,e))})}const Mi=Qe();function Ni(e){return e?JSON.stringify(e):null}function Pi(e,t){return B`
|
|
3
3
|
SELECT ${t}.key AS key,
|
|
4
4
|
CASE ${t}.type
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{$t as e,A as t,Bt as n,Cn as ee,Gt as r,Jt as i,Kt as a,Sn as o,Vt as s,en as c,nn as l,qt as u,vn as te,xn as d}from"./schemas-CQKfd2Xd.mjs";import"./compression-Civ-rf-O.mjs";import{t as f}from"./schemas-HffXbw8C.mjs";import{i as p}from"./account-identity-D00LLclm.mjs";import{t as m}from"./storage-namespace-definition-4UYuij1r.mjs";import{CompressSessionLineageSchema as h,ForkSessionLineageSchema as g,RootSessionLineageSchema as _,SubagentSessionLineageSchema as v}from"./contracts/adapter/schemas/session-lineage.mjs";import{z as y}from"zod";import{createBusNamespace as b}from"@makaio/framework/core";const x=b(`session`,t),S=x.subjects;function ne(e){return s.includes(e.type)}const re=`ui-warnings`,ie=`connector-swap-warning-suppressed`,ae=1440*60*1e3,oe={cancel:`cancel`,edit:`edit`,continue:`continue`},C=`CONNECTOR_SWAP_CANCELLED`;var w=class extends Error{code=C;constructor(){super(`Connector swap cancelled by user`),this.name=`ConnectorSwapCancelledError`}};function T(e){return e instanceof w||e instanceof Error&&`code`in e&&e.code===`CONNECTOR_SWAP_CANCELLED`}const E={branch:{label:`branch`,staysInView:!0,navigatesToChild:!1,canMergeBack:!0},subagent:{label:`subagent`,staysInView:!0,navigatesToChild:!1,canMergeBack:!0},fork:{label:`fork`,staysInView:!1,navigatesToChild:!0,canMergeBack:!1},compress:{label:`compress`,staysInView:!1,navigatesToChild:!0,canMergeBack:!1},rewrite:{label:`rewrite`,staysInView:!1,navigatesToChild:!0,canMergeBack:!1},coordinator:{label:`coordinator`,staysInView:!0,navigatesToChild:!1,canMergeBack:!1},aside:{label:`aside`,staysInView:!0,navigatesToChild:!1,canMergeBack:!1}};function D(e){return e!=null&&E[e].staysInView}function O(e){return e==null||E[e].navigatesToChild}function k(e){return e!=null&&E[e].canMergeBack}function A(e){return E[e]}const j=y.object({timestamp:y.number(),messageId:y.string()}),M=m(`message`,{schemas:{append:{request:y.object({message:l.omit({messageId:!0}).extend({messageId:y.string().optional()}),emitEvent:y.boolean().optional()}),response:y.object({message:l})},getBySession:{request:y.object({sessionId:y.string(),limit:y.number().int().min(1).optional(),after:j.optional(),includeAfter:y.boolean().optional(),order:y.enum([`asc`,`desc`]).optional()}),response:y.object({messages:y.array(l),nextCursor:j.nullable()})},getByTurn:{request:y.object({turnId:y.string()}),response:y.object({messages:y.array(l)})},get:{request:y.object({messageId:y.string()}),response:y.object({message:l.nullable()})},getByAdapterMessageId:{request:y.object({adapterMessageId:y.string()}),response:y.object({message:l.nullable()})},search:{request:y.object({query:y.string(),sessionId:y.string().optional(),limit:y.number().int().min(1).optional()}),response:y.object({messages:y.array(l),total:y.number()})},ftsSearch:{request:y.object({query:y.string(),sessionId:y.string().optional(),limit:y.number().int().min(1).optional().default(20)}),response:y.object({results:y.array(y.object({messageId:y.string(),sessionId:y.string(),score:y.number(),excerpt:y.string()})),total:y.number()})},upsertByAdapterMessageId:{request:y.object({sessionId:y.string(),turnId:y.string().nullable(),adapterMessageId:y.string(),role:y.enum([`user`,`assistant`]),contentText:y.string(),blocks:y.array(e),agentId:y.string().optional(),adapterSessionId:y.string().optional(),timestamp:y.number(),origin:c.optional()}),response:y.object({messageId:y.string(),created:y.boolean()})},stored:y.object({message:l})}}),N=M.subjects;function P(e,t){return e.timestamp===t.timestamp?e.messageId.localeCompare(t.messageId):e.timestamp-t.timestamp}function F(e,t){return P(t,e)}function I(e){return{timestamp:e.timestamp,messageId:e.messageId}}function L(e){return`${e.timestamp}:${e.messageId}`}const R=y.object({after:y.string().optional(),limit:y.number().int().min(1).optional(),types:y.array(y.string()).optional(),includeReasoning:y.boolean().optional(),order:y.enum([`asc`,`desc`]).optional()}),se=y.object({events:y.array(n),nextCursor:y.string().nullable(),totalCount:y.number().optional()}),z=m(`sessionEvent`,{schemas:{append:{request:y.object({event:n}),response:y.object({success:y.boolean()})},getEvents:{request:y.object({sessionId:y.string(),options:R.optional()}),response:se},getByIds:{request:y.object({sessionId:y.string(),eventIds:y.array(y.string())}),response:y.object({events:y.array(n)})},deleteBySession:{request:y.object({sessionId:y.string()}),response:y.object({success:y.boolean(),deletedCount:y.number().optional()})},getEventsBySessions:{request:y.object({sessionIds:y.array(y.string()),types:y.array(y.string()),limitPerSession:y.number().int().min(1).optional()}),response:y.object({eventsBySession:y.record(y.string(),y.array(n))})}}}),B=z.subjects,V=r.extend({preview:a});function H(e,t){e.clientAccountId!==void 0&&e.lastClientIdentityObservation===void 0&&t.addIssue({code:y.ZodIssueCode.custom,path:[`lastClientIdentityObservation`],message:`lastClientIdentityObservation is required when clientAccountId is provided`}),e.clientAccountId!==void 0&&e.clientId===void 0&&t.addIssue({code:y.ZodIssueCode.custom,path:[`clientId`],message:`clientId is required when clientAccountId is provided`})}const U=r.superRefine((e,t)=>{H(e,t)}),W=y.object({sessionId:y.string(),session:U,ifAbsent:y.boolean().optional()}).superRefine((e,t)=>{e.sessionId!==e.session.sessionId&&t.addIssue({code:y.ZodIssueCode.custom,path:[`session`,`sessionId`],message:`session.sessionId must match the top-level sessionId`})}),G=y.string().nullable().optional(),K=y.enum([`active`,`closed`,`archived`,`discovered`]),ce=y.object({adapterName:y.string(),adapterId:y.string(),adapterSessionId:y.string().optional()}),le=y.object({agentId:y.string(),adapterName:y.string(),adapterId:y.string(),adapterSessionId:y.string(),lastActivityAt:y.number().finite()});function ue(e,t){e.identity!==void 0&&e.expectIdentityOpenForLead===void 0&&t.addIssue({code:y.ZodIssueCode.custom,path:[`expectIdentityOpenForLead`],message:`expectIdentityOpenForLead is required when identity is provided`}),e.expectIdentityOpenForLead!==void 0&&e.identity===void 0&&t.addIssue({code:y.ZodIssueCode.custom,path:[`identity`],message:`identity is required when expectIdentityOpenForLead is provided`}),e.reconcileAdapterSession!==void 0&&(e.identity!==void 0||e.expectIdentityOpenForLead!==void 0)&&t.addIssue({code:y.ZodIssueCode.custom,path:[`reconcileAdapterSession`],message:`reconcileAdapterSession cannot be combined with the identity-open-for-lead authority mode`})}const q={request:y.object({sessionId:y.string(),status:K.optional(),expectedStatus:y.array(K).nonempty().optional(),parentSessionId:y.string().nullable().optional(),contextInheritance:ee.optional(),rootSessionId:y.string().optional(),forkPointMessageId:y.string().optional(),branchKind:d.optional(),isOrchestrated:y.boolean().optional(),clientId:y.string().optional(),clientAccountId:y.string().optional(),lastClientIdentityObservation:p.optional(),executionTargetId:y.string().nullable().optional(),approvalPolicyOverride:f.nullable().optional(),title:y.string().optional(),targetWorkingDirectory:y.string().optional(),createdAt:y.number().finite().optional(),lastActivityAt:y.number().finite().optional(),metadata:u.nullable().optional(),spawningToolCallId:y.string().nullable().optional(),machineId:G,identity:ce.optional(),expectIdentityOpenForLead:y.string().nullable().optional(),reconcileAdapterSession:le.optional()}).superRefine((e,t)=>{ue(e,t)}),response:y.object({success:y.boolean(),clientAccountChanged:y.boolean().optional()})},de=y.enum([`live`]),J=y.object({externalSessionId:y.string(),source:y.string(),clientId:y.string().optional(),adapterId:y.string().optional(),cwd:y.string().nullable(),logFilePath:y.string().nullable().optional(),startedAt:y.number().finite().optional(),title:y.string().nullable().optional(),metadata:u.optional(),lastClientIdentityObservation:p.optional(),importStatus:y.enum([`discovered`,`tracking`]).optional(),activation:de.optional(),isSidechain:y.boolean().optional(),machineId:G}),Y=y.discriminatedUnion(`kind`,[J.merge(_),J.merge(g),J.merge(v),J.merge(h)]),X=y.object({externalSessionId:y.string(),source:y.string(),cwd:y.string().optional(),logFilePath:y.string().optional(),machineId:G}),Z=y.discriminatedUnion(`outcome`,[y.object({outcome:y.literal(`rebound`),sessionId:y.string()}),y.object({outcome:y.literal(`not-found`)})]),Q=m(`session`,{schemas:{get:{request:y.object({sessionId:y.string()}),response:y.object({session:r.nullable()})},set:{request:W,response:y.object({success:y.boolean(),clientAccountChanged:y.boolean().optional()})},delete:{request:y.object({sessionId:y.string()}),response:y.object({success:y.boolean()})},list:{request:y.object({status:y.enum([`active`,`closed`,`archived`,`discovered`,`all`]).optional(),limit:y.number().int().min(1).optional(),offset:y.number().int().min(0).optional(),includePreview:y.boolean().optional(),executionTargetId:y.string().optional()}),response:y.object({sessions:y.array(i),total:y.number()})},getChildren:{request:y.object({sessionId:y.string()}),response:y.object({children:y.array(te)})},search:{request:y.object({query:y.string(),limit:y.number().int().min(1).optional(),status:y.enum([`active`,`closed`,`archived`,`discovered`,`all`]).optional(),isImported:y.boolean().optional()}),response:y.object({sessions:y.array(V),total:y.number()})},update:q,getByAdapterSessionId:{request:y.object({adapterSessionId:y.string(),source:y.string().optional(),adapterName:y.string().optional()}),response:y.object({session:r.nullable()})},getStatusCounts:{request:y.object({}),response:y.object({all:y.number(),active:y.number(),closed:y.number(),archived:y.number(),discovered:y.number()})},importUpsert:{request:Y,response:y.object({sessionId:y.string(),created:y.boolean()})},rebindObserved:{request:X,response:Z},getByLogFilePath:{request:y.object({logFilePath:y.string()}),response:y.object({session:r.nullable()})},listImported:{request:y.object({source:y.string().optional(),importStatus:o.optional()}),response:y.object({sessions:y.array(r)})},countBySource:{request:y.object({source:y.string()}),response:y.object({total:y.number(),imported:y.number(),discovered:y.number(),tracking:y.number()})},updateImportStatus:{request:y.object({sessionId:y.string(),importStatus:o}),response:y.object({success:y.boolean()})}}}),fe=Q.subjects,$=`makaio:extraction-excluded`;function pe(e){return e?.[$]===!0}function me(){return{[$]:!0}}export{ae as A,k as C,T as D,w as E,ne as M,x as N,oe as O,S as P,D as S,C as T,I as _,Q as a,N as b,W as c,q as d,z as f,L as g,F as h,Y as i,re as j,ie as k,U as l,P as m,me as n,X as o,B as p,pe as r,Z as s,$ as t,fe as u,j as v,O as w,A as x,M as y};
|
|
1
|
+
import{$t as e,A as t,Bt as n,Cn as ee,Gt as r,Jt as i,Kt as a,Sn as o,Vt as s,en as c,nn as l,qt as u,vn as te,xn as d}from"./schemas-pHboaOxJ.mjs";import"./compression-DvPXSBWS.mjs";import{t as f}from"./schemas-A2hlgeNu.mjs";import{i as p}from"./account-identity-CNdiLYaM.mjs";import{t as m}from"./storage-namespace-definition-Ct9ohqU0.mjs";import{CompressSessionLineageSchema as h,ForkSessionLineageSchema as g,RootSessionLineageSchema as _,SubagentSessionLineageSchema as v}from"./contracts/adapter/schemas/session-lineage.mjs";import{z as y}from"zod";import{createBusNamespace as b}from"@makaio/framework/core";const x=b(`session`,t),S=x.subjects;function ne(e){return s.includes(e.type)}const re=`ui-warnings`,ie=`connector-swap-warning-suppressed`,ae=1440*60*1e3,oe={cancel:`cancel`,edit:`edit`,continue:`continue`},C=`CONNECTOR_SWAP_CANCELLED`;var w=class extends Error{code=C;constructor(){super(`Connector swap cancelled by user`),this.name=`ConnectorSwapCancelledError`}};function T(e){return e instanceof w||e instanceof Error&&`code`in e&&e.code===`CONNECTOR_SWAP_CANCELLED`}const E={branch:{label:`branch`,staysInView:!0,navigatesToChild:!1,canMergeBack:!0},subagent:{label:`subagent`,staysInView:!0,navigatesToChild:!1,canMergeBack:!0},fork:{label:`fork`,staysInView:!1,navigatesToChild:!0,canMergeBack:!1},compress:{label:`compress`,staysInView:!1,navigatesToChild:!0,canMergeBack:!1},rewrite:{label:`rewrite`,staysInView:!1,navigatesToChild:!0,canMergeBack:!1},coordinator:{label:`coordinator`,staysInView:!0,navigatesToChild:!1,canMergeBack:!1},aside:{label:`aside`,staysInView:!0,navigatesToChild:!1,canMergeBack:!1}};function D(e){return e!=null&&E[e].staysInView}function O(e){return e==null||E[e].navigatesToChild}function k(e){return e!=null&&E[e].canMergeBack}function A(e){return E[e]}const j=y.object({timestamp:y.number(),messageId:y.string()}),M=m(`message`,{schemas:{append:{request:y.object({message:l.omit({messageId:!0}).extend({messageId:y.string().optional()}),emitEvent:y.boolean().optional()}),response:y.object({message:l})},getBySession:{request:y.object({sessionId:y.string(),limit:y.number().int().min(1).optional(),after:j.optional(),includeAfter:y.boolean().optional(),order:y.enum([`asc`,`desc`]).optional()}),response:y.object({messages:y.array(l),nextCursor:j.nullable()})},getByTurn:{request:y.object({turnId:y.string()}),response:y.object({messages:y.array(l)})},get:{request:y.object({messageId:y.string()}),response:y.object({message:l.nullable()})},getByAdapterMessageId:{request:y.object({adapterMessageId:y.string()}),response:y.object({message:l.nullable()})},search:{request:y.object({query:y.string(),sessionId:y.string().optional(),limit:y.number().int().min(1).optional()}),response:y.object({messages:y.array(l),total:y.number()})},ftsSearch:{request:y.object({query:y.string(),sessionId:y.string().optional(),limit:y.number().int().min(1).optional().default(20)}),response:y.object({results:y.array(y.object({messageId:y.string(),sessionId:y.string(),score:y.number(),excerpt:y.string()})),total:y.number()})},upsertByAdapterMessageId:{request:y.object({sessionId:y.string(),turnId:y.string().nullable(),adapterMessageId:y.string(),role:y.enum([`user`,`assistant`]),contentText:y.string(),blocks:y.array(e),agentId:y.string().optional(),adapterSessionId:y.string().optional(),timestamp:y.number(),origin:c.optional()}),response:y.object({messageId:y.string(),created:y.boolean()})},stored:y.object({message:l})}}),N=M.subjects;function P(e,t){return e.timestamp===t.timestamp?e.messageId.localeCompare(t.messageId):e.timestamp-t.timestamp}function F(e,t){return P(t,e)}function I(e){return{timestamp:e.timestamp,messageId:e.messageId}}function L(e){return`${e.timestamp}:${e.messageId}`}const R=y.object({after:y.string().optional(),limit:y.number().int().min(1).optional(),types:y.array(y.string()).optional(),includeReasoning:y.boolean().optional(),order:y.enum([`asc`,`desc`]).optional()}),se=y.object({events:y.array(n),nextCursor:y.string().nullable(),totalCount:y.number().optional()}),z=m(`sessionEvent`,{schemas:{append:{request:y.object({event:n}),response:y.object({success:y.boolean()})},getEvents:{request:y.object({sessionId:y.string(),options:R.optional()}),response:se},getByIds:{request:y.object({sessionId:y.string(),eventIds:y.array(y.string())}),response:y.object({events:y.array(n)})},deleteBySession:{request:y.object({sessionId:y.string()}),response:y.object({success:y.boolean(),deletedCount:y.number().optional()})},getEventsBySessions:{request:y.object({sessionIds:y.array(y.string()),types:y.array(y.string()),limitPerSession:y.number().int().min(1).optional()}),response:y.object({eventsBySession:y.record(y.string(),y.array(n))})}}}),B=z.subjects,V=r.extend({preview:a});function H(e,t){e.clientAccountId!==void 0&&e.lastClientIdentityObservation===void 0&&t.addIssue({code:y.ZodIssueCode.custom,path:[`lastClientIdentityObservation`],message:`lastClientIdentityObservation is required when clientAccountId is provided`}),e.clientAccountId!==void 0&&e.clientId===void 0&&t.addIssue({code:y.ZodIssueCode.custom,path:[`clientId`],message:`clientId is required when clientAccountId is provided`})}const U=r.superRefine((e,t)=>{H(e,t)}),W=y.object({sessionId:y.string(),session:U,ifAbsent:y.boolean().optional()}).superRefine((e,t)=>{e.sessionId!==e.session.sessionId&&t.addIssue({code:y.ZodIssueCode.custom,path:[`session`,`sessionId`],message:`session.sessionId must match the top-level sessionId`})}),G=y.string().nullable().optional(),K=y.enum([`active`,`closed`,`archived`,`discovered`]),ce=y.object({adapterName:y.string(),adapterId:y.string(),adapterSessionId:y.string().optional()}),le=y.object({agentId:y.string(),adapterName:y.string(),adapterId:y.string(),adapterSessionId:y.string(),lastActivityAt:y.number().finite()});function ue(e,t){e.identity!==void 0&&e.expectIdentityOpenForLead===void 0&&t.addIssue({code:y.ZodIssueCode.custom,path:[`expectIdentityOpenForLead`],message:`expectIdentityOpenForLead is required when identity is provided`}),e.expectIdentityOpenForLead!==void 0&&e.identity===void 0&&t.addIssue({code:y.ZodIssueCode.custom,path:[`identity`],message:`identity is required when expectIdentityOpenForLead is provided`}),e.reconcileAdapterSession!==void 0&&(e.identity!==void 0||e.expectIdentityOpenForLead!==void 0)&&t.addIssue({code:y.ZodIssueCode.custom,path:[`reconcileAdapterSession`],message:`reconcileAdapterSession cannot be combined with the identity-open-for-lead authority mode`})}const q={request:y.object({sessionId:y.string(),status:K.optional(),expectedStatus:y.array(K).nonempty().optional(),parentSessionId:y.string().nullable().optional(),contextInheritance:ee.optional(),rootSessionId:y.string().optional(),forkPointMessageId:y.string().optional(),branchKind:d.optional(),isOrchestrated:y.boolean().optional(),clientId:y.string().optional(),clientAccountId:y.string().optional(),lastClientIdentityObservation:p.optional(),executionTargetId:y.string().nullable().optional(),approvalPolicyOverride:f.nullable().optional(),title:y.string().optional(),targetWorkingDirectory:y.string().optional(),createdAt:y.number().finite().optional(),lastActivityAt:y.number().finite().optional(),metadata:u.nullable().optional(),spawningToolCallId:y.string().nullable().optional(),machineId:G,identity:ce.optional(),expectIdentityOpenForLead:y.string().nullable().optional(),reconcileAdapterSession:le.optional()}).superRefine((e,t)=>{ue(e,t)}),response:y.object({success:y.boolean(),clientAccountChanged:y.boolean().optional()})},de=y.enum([`live`]),J=y.object({externalSessionId:y.string(),source:y.string(),clientId:y.string().optional(),adapterId:y.string().optional(),cwd:y.string().nullable(),logFilePath:y.string().nullable().optional(),startedAt:y.number().finite().optional(),title:y.string().nullable().optional(),metadata:u.optional(),lastClientIdentityObservation:p.optional(),importStatus:y.enum([`discovered`,`tracking`]).optional(),activation:de.optional(),isSidechain:y.boolean().optional(),machineId:G}),Y=y.discriminatedUnion(`kind`,[J.merge(_),J.merge(g),J.merge(v),J.merge(h)]),X=y.object({externalSessionId:y.string(),source:y.string(),cwd:y.string().optional(),logFilePath:y.string().optional(),machineId:G}),Z=y.discriminatedUnion(`outcome`,[y.object({outcome:y.literal(`rebound`),sessionId:y.string()}),y.object({outcome:y.literal(`not-found`)})]),Q=m(`session`,{schemas:{get:{request:y.object({sessionId:y.string()}),response:y.object({session:r.nullable()})},set:{request:W,response:y.object({success:y.boolean(),clientAccountChanged:y.boolean().optional()})},delete:{request:y.object({sessionId:y.string()}),response:y.object({success:y.boolean()})},list:{request:y.object({status:y.enum([`active`,`closed`,`archived`,`discovered`,`all`]).optional(),limit:y.number().int().min(1).optional(),offset:y.number().int().min(0).optional(),includePreview:y.boolean().optional(),executionTargetId:y.string().optional()}),response:y.object({sessions:y.array(i),total:y.number()})},getChildren:{request:y.object({sessionId:y.string()}),response:y.object({children:y.array(te)})},search:{request:y.object({query:y.string(),limit:y.number().int().min(1).optional(),status:y.enum([`active`,`closed`,`archived`,`discovered`,`all`]).optional(),isImported:y.boolean().optional()}),response:y.object({sessions:y.array(V),total:y.number()})},update:q,getByAdapterSessionId:{request:y.object({adapterSessionId:y.string(),source:y.string().optional(),adapterName:y.string().optional()}),response:y.object({session:r.nullable()})},getStatusCounts:{request:y.object({}),response:y.object({all:y.number(),active:y.number(),closed:y.number(),archived:y.number(),discovered:y.number()})},importUpsert:{request:Y,response:y.object({sessionId:y.string(),created:y.boolean()})},rebindObserved:{request:X,response:Z},getByLogFilePath:{request:y.object({logFilePath:y.string()}),response:y.object({session:r.nullable()})},listImported:{request:y.object({source:y.string().optional(),importStatus:o.optional()}),response:y.object({sessions:y.array(r)})},countBySource:{request:y.object({source:y.string()}),response:y.object({total:y.number(),imported:y.number(),discovered:y.number(),tracking:y.number()})},updateImportStatus:{request:y.object({sessionId:y.string(),importStatus:o}),response:y.object({success:y.boolean()})}}}),fe=Q.subjects,$=`makaio:extraction-excluded`;function pe(e){return e?.[$]===!0}function me(){return{[$]:!0}}export{ae as A,k as C,T as D,w as E,ne as M,x as N,oe as O,S as P,D as S,C as T,I as _,Q as a,N as b,W as c,q as d,z as f,L as g,F as h,Y as i,re as j,ie as k,U as l,P as m,me as n,X as o,B as p,pe as r,Z as s,$ as t,fe as u,j as v,O as w,A as x,M as y};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as e}from"./json-value-DM-EjTC1.mjs";import"./zod-json-schema-DGWHUOK0.mjs";import"./ui-config-
|
|
1
|
+
import{a as e}from"./json-value-DM-EjTC1.mjs";import"./zod-json-schema-DGWHUOK0.mjs";import"./ui-config-Bl2Wbkr-.mjs";import{z as t}from"zod";const n=t.string().max(64).regex(/^[a-zA-Z0-9_-]+$/),r=t.object({schema:e,name:n.optional(),strict:t.boolean().optional()}).strict(),i=t.object({message:t.string(),instancePath:t.string(),schemaPath:t.string()}).strict(),a=t.enum([`passed`,`failed`,`enforced`]),o=t.discriminatedUnion(`status`,[t.object({status:t.literal(`passed`)}).strict(),t.object({status:t.literal(`enforced`)}).strict(),t.object({status:t.literal(`failed`),errors:t.array(i).min(1)}).strict()]),s=t.discriminatedUnion(`type`,[t.object({type:t.literal(`base64`),data:t.string(),mimeType:t.string()}),t.object({type:t.literal(`url`),url:t.string(),mimeType:t.string().optional()})]),c=t.enum([`file`,`directory`]),l=t.discriminatedUnion(`type`,[t.object({type:t.literal(`text`),content:t.string()}),t.object({type:t.literal(`image`),source:s}),t.object({type:t.literal(`document`),source:s}),t.object({type:t.literal(`attachment`),fileName:t.string(),filePath:t.string(),source:s,displayName:t.string().optional(),attachmentType:c}),t.object({type:t.literal(`reasoning`),content:t.string(),metadata:t.record(t.string(),t.unknown()).optional()}),t.object({type:t.literal(`tool_call`),toolCallId:t.string(),name:t.string(),args:t.record(t.string(),t.unknown())}),t.object({type:t.literal(`tool_output`),toolCallId:t.string(),output:t.string(),isError:t.boolean().optional()})]),u=t.enum([`user`,`assistant`,`system`]),d=t.object({role:u.optional(),blocks:t.union([l,t.array(l)])}),f=t.union([t.string(),d]),p=t.object({message:t.string().optional()}),m=t.enum([`completed`,`superseded`,`merged`,`cancelled`,`error`,`rejected`]),h=t.object({messageId:t.string(),result:p.optional(),error:t.string().optional(),outcome:m}),g=t.enum([`enqueue`,`immediate`,`replace`]),_=t.union([t.string(),t.object({mode:t.literal(`append`),content:t.string()})]),v=t.object({role:t.enum([`user`,`assistant`,`system`]),blocks:t.array(l),message:t.string().optional()}),y=[`rate_limit`,`auth`,`model_unavailable`,`quota_exceeded`],b=t.enum(y);export{a as _,g as a,d as c,h as d,_ as f,o as g,i as h,l as i,v as l,n as m,y as n,f as o,r as p,b as r,m as s,s as t,p as u};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{t as e}from"./storage-namespace-definition-
|
|
1
|
+
import{t as e}from"./storage-namespace-definition-Ct9ohqU0.mjs";import{z as t}from"zod";import{createBusNamespace as n}from"@makaio/framework/core";const r=t.enum([`global`,`project`,`session`]),i=t.enum([`filesystem`,`database`]),a=t.enum([`manual`,`auto`]),o=t.enum([`model`,`user`,`auto`,`reinjection`]),s=t.enum([`cwd_changed`,`session_end`,`user`,`replaced`]),c=t.object({maxTurns:t.number().int().positive().optional()}),l=t.object({name:t.string().regex(/^[a-z0-9]+(?:-[a-z0-9]+)*$/).max(64),description:t.string().min(1).max(1024),license:t.string().optional(),compatibility:t.string().min(1).max(500).optional(),metadata:t.record(t.string(),t.string()).optional(),allowedTools:t.string().optional()}),u=t.object({category:t.string().optional(),tags:t.array(t.string()).optional(),adapters:t.array(t.string()).nullable().optional(),activationMode:a.default(`manual`),reinjection:c.optional(),enabled:t.boolean().default(!0)}),d=l.merge(u).extend({id:t.string(),source:i,scope:r,projectId:t.string().optional(),sessionId:t.string().optional(),location:t.string().optional(),baseDir:t.string().optional(),content:t.string(),createdAt:t.number(),updatedAt:t.number()}),f=t.object({name:l.shape.name,description:l.shape.description,compatibility:l.shape.compatibility,category:u.shape.category,tags:u.shape.tags,adapters:u.shape.adapters,activationMode:u.shape.activationMode,source:i,scope:r,location:t.string().optional(),baseDir:t.string().optional()}).strict(),p=t.object({license:l.shape.license,compatibility:l.shape.compatibility,allowedTools:l.shape.allowedTools,metadata:l.shape.metadata}).strict(),m=t.object({name:t.string(),description:t.string(),compatibility:t.string().optional()}),h=t.object({name:t.string(),content:t.string(),license:t.string().optional(),compatibility:t.string().optional(),allowedTools:t.string().optional(),metadata:t.record(t.string(),t.string()).optional()}),g=t.object({name:t.string(),content:t.string(),metadata:p.optional(),baseDir:t.string().optional(),resources:t.array(t.string()).optional(),trigger:o,activatedAt:t.number(),activatedAtTurn:t.number().int().positive().optional(),lastInjectedAtTurn:t.number().int().positive().optional(),reinjection:c.optional()}),_=l.merge(u).extend({id:t.string(),scope:r,projectId:t.string().optional(),sessionId:t.string().optional(),content:t.string(),source:t.literal(`database`).default(`database`)}).strict(),v=t.object({sessionId:t.string().optional(),projectId:t.string().optional(),adapterId:t.string().optional(),category:t.string().optional(),tags:t.array(t.string()).optional(),enabledOnly:t.boolean().optional()}),y={"catalog.built":t.object({sessionId:t.string(),agentId:t.string(),cwd:t.string(),adapterId:t.string().optional(),skillNames:t.array(t.string()),timestamp:t.number()}),activated:t.object({sessionId:t.string(),agentId:t.string(),cwd:t.string(),adapterId:t.string().optional(),skillName:t.string(),trigger:o,turnNumber:t.number().int().positive().optional(),timestamp:t.number()}),deactivated:t.object({sessionId:t.string(),agentId:t.string(),skillName:t.string(),reason:s,timestamp:t.number()}),getCatalog:{request:t.object({sessionId:t.string(),agentId:t.string(),cwd:t.string().optional(),projectId:t.string().optional(),adapterId:t.string().optional()}),response:t.object({entries:t.array(f),cwd:t.string()})},activate:{request:t.object({sessionId:t.string(),agentId:t.string(),skillName:t.string(),trigger:o,cwd:t.string().optional(),projectId:t.string().optional(),adapterId:t.string().optional(),turnNumber:t.number().int().positive().optional()}),response:t.object({name:t.string(),content:t.string(),metadata:p.optional(),baseDir:t.string().optional(),resources:t.array(t.string()).optional(),alreadyActive:t.boolean().default(!1)})},getActiveSkills:{request:t.object({sessionId:t.string(),agentId:t.string(),cwd:t.string().optional(),projectId:t.string().optional(),adapterId:t.string().optional()}),response:t.object({skills:t.array(g),cwd:t.string().optional()})}},b=n(`skill`,y),x=b.subjects,S=e(`skill`,{schemas:{get:{request:t.object({id:t.string()}),response:t.object({skill:d.nullable()})},set:{request:t.object({skill:_}),response:t.object({id:t.string()})},delete:{request:t.object({id:t.string()}),response:t.object({deleted:t.boolean()})},list:{request:v,response:t.object({skills:t.array(d)})},getEffective:{request:v,response:t.object({skills:t.array(d)})}}}),C=S.subjects;function w(e){if(e.scope===`global`){if(e.projectId||e.sessionId)throw Error(`Global scope skills must not have projectId or sessionId`);return}if(e.scope===`project`){if(!e.projectId)throw Error(`Project scope skills require projectId`);if(e.sessionId)throw Error(`Project scope skills must not have sessionId`);return}if(!e.sessionId)throw Error(`Session scope skills require sessionId`)}export{h as S,c as _,x as a,r as b,a as c,m as d,s as f,d as g,_ as h,b as i,o as l,v as m,C as n,p as o,l as p,w as r,g as s,S as t,f as u,u as v,i as x,y};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as e}from"./ownership-recovery-guard-
|
|
1
|
+
import{a as e}from"./ownership-recovery-guard-BIB5uqgz.mjs";import{SessionStorageSubjects as t}from"./services/session/storage/namespace.mjs";import"./session-CAKfa5o8.mjs";import{AgentSubjects as n,ApprovalSubjects as r,HarnessSubjects as i,computeMetaTags as a}from"@makaio/framework/contracts";import{BaseService as o}from"@makaio/framework/service-base";import{extractToolFilePath as s}from"@makaio/framework/tools";const c={"full-access":0,"always-ask":1,reject:2};function l(){return`apr_${crypto.randomUUID()}`}function u(e){switch(e){case`allow`:return`full-access`;case`deny`:return`reject`;case`ask`:return`always-ask`}}function d(e){if(!e?.length)return`neutral`;let t=a(e);return t.includes(`destructive`)?`destructive`:t.includes(`read-only`)?`safe`:`neutral`}function f(e,t){if(e)return t&&e.toolApprovalOverrides?.[t]!==void 0?e.toolApprovalOverrides[t]:e.approvalPolicy}function p(e,t,n,r){let i=r[t];if(!i?.length)return e;let a=e;for(let e of i){let t=n[e];t&&c[t]>c[a]&&(a=t)}return a}function m(e,t,n){return n.handled?n.data.allowedDirectories??void 0:t?[]:void 0}function h(e,t,n){if(!n||!e?.cwd)return{};let r;return(e.personaId||e.profileId)&&t&&(r=m(e.personaId,e.profileId,t)),{cwd:e.cwd,...r&&{allowedDirectories:r}}}function g(e,t,n){if(!(!e&&!t))return!n||!n.handled?{policy:`always-ask`}:{policy:u(n.data.action),...n.data.personaName&&{personaName:n.data.personaName},...n.data.profileName&&{profileName:n.data.profileName}}}function _(e,t){let n=t.harness?.toolCapabilityMap&&e.toolName?t.harness.toolCapabilityMap[e.toolName]:void 0;return{requestId:l(),toolCallId:e.toolCallId,toolName:e.toolName,args:e.args,agentId:e.agentId,sessionId:e.sessionId,adapterName:t.resolvedAdapterName,...t.personaName&&{personaName:t.personaName},...t.profileName&&{profileName:t.profileName},capabilities:n,riskLevel:d(n),reasoning:e.reasoning,createdAt:Date.now()}}var v=class extends o{logger=console;options;constructor(e,t={}){super(e),this.options=t}async onInit(){this.registerHandler(n.toolApprove,async e=>{let t=await this.getAgentMetadata(e.payload.agentId,e.payload.sessionId),n=(t?.personaId||t?.profileId)&&e.payload.toolName?await this.fetchRawEnrichedPolicy(t?.personaId,t?.profileId,e.payload.toolName):void 0,r=h(t,n,this.options.fileAccessRuleProvider),i=await this.checkFileAccessDenyReason(e.payload,r);if(i){e.setResult({action:`deny`,message:i,shouldAbort:!1});return}let a=await this.resolveSessionOverride(e.payload.sessionId);if(a===`full-access`){e.setResult({action:`allow`});return}if(a===`reject`){e.setResult({action:`deny`,message:`Tool use rejected by session approval policy override`,shouldAbort:!1});return}let o=await this.resolvePolicyWithContext({adapterName:e.payload.adapterName,toolName:e.payload.toolName},t,n);switch(a===`always-ask`?`always-ask`:o.policy){case`full-access`:e.setResult({action:`allow`});return;case`reject`:e.setResult({action:`deny`,message:`Tool use rejected by approval policy`,shouldAbort:!1});return;case`always-ask`:await this.dispatchAlwaysAskApproval(e.payload,e.setResult.bind(e),o);return}})}async dispatchAlwaysAskApproval(e,t,i){let a=_(e,i),o=new AbortController,s=this.bus.on(n.session.closed,()=>{o.abort()},{filter:{agentId:a.agentId,...e.adapterSessionId!==void 0&&{adapterSessionId:e.adapterSessionId}}});try{let e=await this.bus.requestOptional(r.request,a,{timeout:0,signal:o.signal});e.handled&&e.data.action===`allow`?t({action:`allow`,...e.data.updatedInput&&{updatedInput:e.data.updatedInput}}):t({action:`deny`,message:e.handled&&e.data.action===`deny`?e.data.message??`User denied tool execution`:`No approval handler available`,shouldAbort:!1})}catch{t({action:`deny`,message:o.signal.aborted?`Approval cancelled — agent session closed`:`Tool approval request failed`,shouldAbort:!1})}finally{s()}}async checkFileAccessDenyReason(e,t){if(!this.options.fileAccessRuleProvider||!t.cwd)return;let n=s(e.toolName,e.args,t.cwd);if(n)try{return(await this.options.fileAccessRuleProvider(t.cwd,t.allowedDirectories)).isDenied(n)?`Access denied: '${n}' is restricted by .makaioignore rules`:void 0}catch{return`Access denied: file access rules could not be evaluated`}}async fetchRawEnrichedPolicy(e,t,n){try{return await this.bus.requestOptional(r.resolveEnrichedPolicy,{toolName:n,personaId:e,profileId:t})}catch(r){return this.logger.error(`[ToolApprovalService] approval.resolveEnrichedPolicy failed; falling back to fail-closed`,{toolName:n,personaId:e,profileId:t,error:r}),{handled:!1}}}async resolvePolicyWithContext(e,t,n){let r=t?.adapterName??e.adapterName,i=g(t?.personaId,t?.profileId,n),a=await this.resolveHarnessPolicy(r,t?.harnessId,t?.clientId),o=f(a,e.toolName),s=i?.policy??o??`always-ask`,c=s;return a?.capabilityOverrides&&a.toolCapabilityMap&&e.toolName&&(c=p(s,e.toolName,a.capabilityOverrides,a.toolCapabilityMap)),{policy:c,harness:a,agent:t,resolvedAdapterName:r,...i?.personaName&&{personaName:i.personaName},...i?.profileName&&{profileName:i.profileName}}}async getAgentMetadata(t,n){try{if(n){let{agents:r}=await this.bus.request(e.listBySession,{sessionId:n});return r.find(e=>e.agentId===t)??null}let r=await this.bus.requestOptional(e.get,{agentId:t});return r.handled?r.data.agent:null}catch{return null}}async resolveSessionOverride(e){if(e)try{let n=await this.bus.requestOptional(t.get,{sessionId:e});return n.handled?n.data.session?.approvalPolicyOverride??void 0:void 0}catch{return}}async resolveHarnessPolicy(e,t,n){try{let r=await this.bus.request(i.resolve,{adapterName:e,...t&&{profileHarnessId:t},...n&&{clientId:n}});return{approvalPolicy:r.approvalPolicy,capabilityOverrides:r.capabilityOverrides,toolCapabilityMap:r.toolCapabilityMap,toolApprovalOverrides:r.toolApprovalOverrides}}catch{return}}};export{v as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{l as e}from"./framework-packages-
|
|
1
|
+
import{l as e}from"./framework-packages-DdCJ4JsE.mjs";import{FILE_ACCESS_RULES_KEY as t,extractToolFilePath as n}from"@makaio/framework/tools";function r(){let t=new Map;return{filter:e=>!!e.tools?.createToolsets,async processActivated(n,r,i){let a=i.getService(e);if(!a)throw Error(`ToolRegistry is not available. Ensure toolRegistryPackage is included in the composition root.`);let o=r.tools.createToolsets(i),s=[];try{for(let e of o)await a.register(e),s.push(()=>a.deregister(e.metadata.name))}catch(e){for(let e=s.length-1;e>=0;--e)try{await s[e]()}catch(e){console.error(`[ToolContributionProcessor] Rollback error for "${n}":`,e)}throw e}t.set(n,s)},async processStopped(e){let n=t.get(e);if(n){for(let t=n.length-1;t>=0;--t)try{await n[t]()}catch(t){console.error(`[ToolContributionProcessor] Deregister error for "${e}":`,t)}t.delete(e)}}}}export{n,r,t};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { x as ArtifactRevision$1 } from "./schemas-
|
|
1
|
+
import { x as ArtifactRevision$1 } from "./schemas-bcDK-fK3.mjs";
|
|
2
2
|
import { l as JsonValue$1 } from "./json-value-BKUDMT7k.mjs";
|
|
3
3
|
import { z } from "zod";
|
|
4
4
|
import * as _$_makaio_contracts0 from "@makaio/framework/contracts";
|
|
@@ -5107,8 +5107,8 @@ declare const SessionOwnershipClaimResponseSchema: z.ZodDiscriminatedUnion<[z.Zo
|
|
|
5107
5107
|
}, z.core.$strip>, z.ZodObject<{
|
|
5108
5108
|
outcome: z.ZodLiteral<"not-found">;
|
|
5109
5109
|
missing: z.ZodEnum<{
|
|
5110
|
-
session: "session";
|
|
5111
5110
|
agent: "agent";
|
|
5111
|
+
session: "session";
|
|
5112
5112
|
}>;
|
|
5113
5113
|
}, z.core.$strip>, z.ZodObject<{
|
|
5114
5114
|
outcome: z.ZodLiteral<"currency-changed">;
|
|
@@ -5929,8 +5929,8 @@ declare const SessionOwnershipStorageNamespace: ContractStorageNamespaceDefiniti
|
|
|
5929
5929
|
}, z.core.$strip>, z.ZodObject<{
|
|
5930
5930
|
outcome: z.ZodLiteral<"not-found">;
|
|
5931
5931
|
missing: z.ZodEnum<{
|
|
5932
|
-
session: "session";
|
|
5933
5932
|
agent: "agent";
|
|
5933
|
+
session: "session";
|
|
5934
5934
|
}>;
|
|
5935
5935
|
}, z.core.$strip>, z.ZodObject<{
|
|
5936
5936
|
outcome: z.ZodLiteral<"currency-changed">;
|
|
@@ -6673,8 +6673,8 @@ declare const SessionOwnershipStorageSubjects$1: _$_makaio_core0.BusSubjects<_$_
|
|
|
6673
6673
|
}, z.core.$strip>, z.ZodObject<{
|
|
6674
6674
|
outcome: z.ZodLiteral<"not-found">;
|
|
6675
6675
|
missing: z.ZodEnum<{
|
|
6676
|
-
session: "session";
|
|
6677
6676
|
agent: "agent";
|
|
6677
|
+
session: "session";
|
|
6678
6678
|
}>;
|
|
6679
6679
|
}, z.core.$strip>, z.ZodObject<{
|
|
6680
6680
|
outcome: z.ZodLiteral<"currency-changed">;
|
|
@@ -7461,8 +7461,8 @@ declare const SessionOwnershipReserveStartServiceResponseSchema: z.ZodDiscrimina
|
|
|
7461
7461
|
}, z.core.$strip>, z.ZodObject<{
|
|
7462
7462
|
outcome: z.ZodLiteral<"not-found">;
|
|
7463
7463
|
missing: z.ZodEnum<{
|
|
7464
|
-
session: "session";
|
|
7465
7464
|
agent: "agent";
|
|
7465
|
+
session: "session";
|
|
7466
7466
|
}>;
|
|
7467
7467
|
}, z.core.$strip>, z.ZodObject<{
|
|
7468
7468
|
outcome: z.ZodLiteral<"machine-identity-unavailable">;
|
|
@@ -8020,8 +8020,8 @@ declare const SessionSchemas: {
|
|
|
8020
8020
|
}, _$zod_v4_core0.$strip>, _$zod.ZodObject<{
|
|
8021
8021
|
outcome: _$zod.ZodLiteral<"not-found">;
|
|
8022
8022
|
missing: _$zod.ZodEnum<{
|
|
8023
|
-
session: "session";
|
|
8024
8023
|
agent: "agent";
|
|
8024
|
+
session: "session";
|
|
8025
8025
|
}>;
|
|
8026
8026
|
}, _$zod_v4_core0.$strip>, _$zod.ZodObject<{
|
|
8027
8027
|
outcome: _$zod.ZodLiteral<"machine-identity-unavailable">;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{o as e}from"./chunk-DTipWd-i.mjs";import{t}from"./semver-
|
|
1
|
+
import{o as e}from"./chunk-DTipWd-i.mjs";import{t}from"./semver-ByPlHR3P.mjs";import{z as n}from"zod";var r=e(t(),1);const i=n.string().min(1).refine(e=>e.trim().length>0&&(0,r.validRange)(e)!==null,{message:`Must be a valid semver range (e.g. ">=1.0.0 <2.0.0", "^1.5.0")`});function a(e,t){return(0,r.satisfies)(e,t,{includePrerelease:!0})}function o(e){let t=(0,r.validRange)(e);return t===`*`||t===`>=0.0.0`||t===`>=0.0.0-0`}const s=n.string().min(1).refine(e=>(0,r.valid)(e)!==null&&!e.startsWith(`v`),{message:`Must be a valid semver version (e.g. "1.0.0")`});export{a as i,i as n,o as r,s as t};
|