@makaio/framework 1.0.0-dev-1788955549564 → 1.0.0-dev-1788966380232
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-Bl3Yx3In.mjs → 2020-CpDjcHDh.mjs} +1 -1
- package/dist/{account-identity-B0NsOILM.mjs → account-identity-D00LLclm.mjs} +1 -1
- package/dist/{adapter-DYE_oWjj.mjs → adapter-D92pfm_b.mjs} +1 -1
- package/dist/{adapter-auth-runtime-BnPqQChk.mjs → adapter-auth-runtime-46Y9WKcB.mjs} +1 -1
- package/dist/adapter-subsystem/index.d.mts +1 -1
- package/dist/adapter-subsystem/index.mjs +1 -1
- package/dist/adapters/claude/index.d.mts +2 -2
- package/dist/adapters/claude/testing.mjs +1 -1
- package/dist/adapters/config/index.d.mts +2 -2
- package/dist/adapters/config/index.mjs +1 -1
- package/dist/adapters/index.d.mts +3 -3
- package/dist/adapters/index.mjs +6 -6
- package/dist/adapters/node.d.mts +1 -1
- package/dist/adapters/node.mjs +2 -2
- package/dist/adapters/stream-session/index.d.mts +1 -1
- package/dist/adapters/stream-session/index.mjs +1 -1
- package/dist/artifact-_pN73_7c.mjs +1 -0
- package/dist/{attempt-record-codec-6jpayBMY.mjs → attempt-record-codec-D2Gb_epJ.mjs} +1 -1
- package/dist/{auth-CeH3w2fi.mjs → auth-CB4an9bh.mjs} +1 -1
- package/dist/authority-state-bootstrap-DgoHPc9J.mjs +1 -0
- package/dist/{automation-trigger-CZfH94Fr.mjs → automation-trigger-xNDX0Am_.mjs} +1 -1
- package/dist/bootstrap-start-client-rW55mDI-.mjs +1 -0
- package/dist/bus/index.mjs +1 -1
- package/dist/{caller-owned-adapter-stub-B-Sq7ZvF.mjs → caller-owned-adapter-stub-oM1G1KvC.mjs} +1 -1
- package/dist/{canonical-model-oFNty7hj.mjs → canonical-model-D7Cg0l2R.mjs} +1 -1
- package/dist/{capabilities-BhJ3wzI8.mjs → capabilities-D2ggcMem.mjs} +1 -1
- package/dist/{capability-service-23Ot2J9A.d.mts → capability-service-Cpkonrc0.d.mts} +1 -1
- package/dist/{client-DJMzCHRm.mjs → client-CpUVfDxa.mjs} +1 -1
- package/dist/clients/index.d.mts +2 -2
- package/dist/clients/index.mjs +1 -1
- package/dist/clients/managed-install.d.mts +1 -1
- package/dist/clients/managed-install.mjs +1 -1
- package/dist/code-execution/worker-entry.d.mts +1 -1
- package/dist/code-execution/worker-entry.mjs +1 -1
- package/dist/{code-execution-B9wr0b972.mjs → code-execution-ByLSAlEg2.mjs} +1 -1
- package/dist/{code-execution-BMmUATcc.mjs → code-execution-CMqsHnGg.mjs} +1 -1
- package/dist/{code-execution-DRCzkGzO.mjs → code-execution-xn9-x3VO.mjs} +1 -1
- package/dist/common-CylczUIW.mjs +1 -0
- package/dist/{compression-nZhMDRTA.mjs → compression-Civ-rf-O.mjs} +1 -1
- package/dist/{config-namespace-MjFuIPyL.mjs → config-namespace-CQnsvr77.mjs} +1 -1
- package/dist/contracts/adapter/index.d.mts +2 -2
- package/dist/contracts/adapter/index.mjs +1 -1
- package/dist/contracts/adapter/schemas/session-lineage.d.mts +1 -1
- package/dist/contracts/artifact/index.d.mts +3 -3
- package/dist/contracts/artifact/index.mjs +1 -1
- package/dist/contracts/auth/index.d.mts +2 -2
- package/dist/contracts/auth/index.mjs +1 -1
- package/dist/contracts/automation-trigger/index.d.mts +3 -3
- package/dist/contracts/automation-trigger/index.mjs +1 -1
- package/dist/contracts/canonical-model/index.d.mts +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 +2 -2
- package/dist/contracts/client/index.mjs +1 -1
- package/dist/contracts/code-execution/index.d.mts +1 -1
- package/dist/contracts/code-execution/index.mjs +1 -1
- package/dist/contracts/common/index.d.mts +2 -2
- package/dist/contracts/common/index.mjs +1 -1
- package/dist/contracts/config/index.d.mts +1 -1
- package/dist/contracts/config/index.mjs +1 -1
- package/dist/contracts/extension/index.d.mts +5 -5
- 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.d.mts +1 -1
- package/dist/contracts/host/index.mjs +1 -1
- package/dist/contracts/index.d.mts +73 -73
- 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.d.mts +1 -1
- package/dist/contracts/model-registry/index.mjs +1 -1
- package/dist/contracts/native-session-supervisor/index.d.mts +1 -1
- package/dist/contracts/native-session-supervisor/index.mjs +1 -1
- package/dist/contracts/platform/index.d.mts +1 -1
- package/dist/contracts/platform/index.mjs +1 -1
- package/dist/contracts/provider/index.d.mts +2 -2
- package/dist/contracts/provider/index.mjs +1 -1
- package/dist/contracts/reaction/index.d.mts +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.d.mts +2 -2
- package/dist/contracts/shared/index.mjs +1 -1
- package/dist/contracts/skill/index.d.mts +1 -1
- package/dist/contracts/skill/index.mjs +1 -1
- package/dist/contracts/telemetry/index.d.mts +1 -1
- package/dist/contracts/telemetry/index.mjs +1 -1
- package/dist/contracts/timeout/index.d.mts +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 +2 -2
- package/dist/contracts/worker/index.mjs +1 -1
- package/dist/contracts/workflow/index.d.mts +2 -2
- package/dist/contracts/workflow/index.mjs +1 -1
- package/dist/{contribution-B4t0OXKs.d.mts → contribution-BfEEQ8YZ.d.mts} +2 -2
- package/dist/{definition-Bs5hzhsT.d.mts → definition-6d5JBi55.d.mts} +1 -1
- package/dist/{definition-YGj42UeO.mjs → definition-Dqw0YJdi.mjs} +1 -1
- package/dist/{detached-extension-handle-CgJiXaqv.mjs → detached-extension-handle-BJnk3WEh.mjs} +1 -1
- package/dist/{dist-CfANkKSb.mjs → dist-DeI9zYMP.mjs} +1 -1
- package/dist/evidence/git-file/index.d.mts +54 -0
- package/dist/evidence/git-file/index.mjs +4 -0
- package/dist/{execution-attempt-owner-recovery-CdH04iwP.mjs → execution-attempt-owner-recovery-D4APLAvt.mjs} +1 -1
- package/dist/{execution-attempt-repository-CJVlPFMM.d.mts → execution-attempt-repository--RVils5-.d.mts} +273 -189
- package/dist/execution-attempt-repository-CWbgCTwA.mjs +1 -0
- package/dist/{execution-target-B9jZgDQz.mjs → execution-target-_oVNW6Zm.mjs} +1 -1
- package/dist/{extension-B51JzHJu.mjs → extension-CAi7bbyv.mjs} +1 -1
- package/dist/{extension-C1CwxkCN.mjs → extension-CrghVa93.mjs} +1 -1
- package/dist/{filesystem-service-yB8KhUGz.mjs → filesystem-service-hdz3oYti.mjs} +1 -1
- package/dist/{framework-packages-25GUGzJ-.mjs → framework-packages-BOPhhtK7.mjs} +1 -1
- package/dist/git/index.mjs +1 -1
- package/dist/{globby-z2SR0jRo.mjs → globby-Begk3aIP.mjs} +1 -1
- package/dist/{handlers-CBbFzDHc.mjs → handlers-YPTyZDhF.mjs} +1 -1
- package/dist/{harness-GNtHsoh4.mjs → harness-Ds1I4smU.mjs} +1 -1
- package/dist/{hook-responses-chgDiS8D.d.mts → hook-responses-CpEfxEmG.d.mts} +1 -1
- package/dist/hooks/index.d.mts +1 -1
- package/dist/hooks/index.mjs +1 -1
- package/dist/{index-BtPZcp4M2.d.mts → index-09eal6WI2.d.mts} +11 -11
- package/dist/{index-GNRWZONO.d.mts → index-6kg8YFYt.d.mts} +1 -1
- package/dist/{index-B6aoVzdA.d.mts → index-B3G-Hzwn.d.mts} +1 -1
- package/dist/{index-SDXlgq07.d.mts → index-B7wjmaev.d.mts} +24 -14
- package/dist/{index-DzeUtJtE.d.mts → index-BKwYE1Qk.d.mts} +5 -5
- package/dist/{index-CKjFFP6W2.d.mts → index-BM-FPWjs2.d.mts} +1 -1
- package/dist/{index-Bak5iKWv2.d.mts → index-BT5qcsEf2.d.mts} +24 -15
- package/dist/{index-BjELPYLF2.d.mts → index-BfzuauBt2.d.mts} +1 -1
- package/dist/{index-D2sbGoGS.d.mts → index-Bj2JCo9V.d.mts} +2 -2
- package/dist/{index-OXuby-ee.d.mts → index-BkQlL0Pl.d.mts} +13 -13
- package/dist/{index-CuPq_ap8.d.mts → index-BlHq_Ksb.d.mts} +2 -2
- package/dist/{index-D3RZEEE3.d.mts → index-Bn6sN1op.d.mts} +2 -2
- package/dist/{index-ConotXyG.d.mts → index-Bnm0QvJ4.d.mts} +15 -15
- package/dist/{index-Bxs-oIo4.d.mts → index-BpsurXEW.d.mts} +1 -1
- package/dist/{index-C9J8wBLV.d.mts → index-BqR2xDu6.d.mts} +655 -111
- package/dist/{index-DX_2kGSg.d.mts → index-Bxq_zO2E.d.mts} +4 -4
- package/dist/{index-CcgI6r0K.d.mts → index-C742b1FV.d.mts} +2 -2
- package/dist/{index-B6Kq1BtL.d.mts → index-C8oBOTl_.d.mts} +1 -1
- package/dist/{index-CuLDybz3.d.mts → index-CDhbUjUH.d.mts} +2 -2
- package/dist/{index-CDeN0mdC.d.mts → index-CWeWBh-_.d.mts} +1 -1
- package/dist/{index-SIP-fI28.d.mts → index-D4XNkbM4.d.mts} +1 -1
- package/dist/{index-C6eJrtTA.d.mts → index-D7IZQNhD.d.mts} +2 -2
- package/dist/{index-CU_HMaeC.d.mts → index-DCfYa3cF.d.mts} +39 -1
- package/dist/{index-VbqrC9qf.d.mts → index-DO633_D-.d.mts} +40 -40
- package/dist/{index-CVx7li6B2.d.mts → index-DU9Y9tes2.d.mts} +12 -12
- package/dist/{index-99Gz8ezO.d.mts → index-DY_0TRvM.d.mts} +3 -3
- package/dist/{index-DfJNJYPV.d.mts → index-DzlGAEws.d.mts} +4 -4
- package/dist/{index-DOkenapA.d.mts → index-LjLUr3Dm.d.mts} +10 -10
- package/dist/{index-CwJaE0fT.d.mts → index-MtDz_goH.d.mts} +125 -77
- package/dist/{index-CyB6POkH.d.mts → index-nJvYTAbD.d.mts} +1 -1
- package/dist/{index-BrelUXBT.d.mts → index-ud9i9pue.d.mts} +16 -16
- package/dist/{index-OUtnmQ8t2.d.mts → index-v9TbeVee2.d.mts} +5 -5
- package/dist/kernel/cli/index.d.mts +2 -2
- package/dist/kernel/cli/index.mjs +1 -1
- package/dist/kernel/cli/register.d.mts +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 +5 -5
- package/dist/kernel/index.mjs +1 -1
- package/dist/kernel/namespace/index.d.mts +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.d.mts +1 -1
- package/dist/kernel/providers/index.mjs +1 -1
- package/dist/kernel/window/index.d.mts +1 -1
- package/dist/kernel/window/index.mjs +1 -1
- package/dist/{lib-0MqNtDuH.mjs → lib-BmXBuE-w.mjs} +1 -1
- package/dist/{lib-dlyJT26K.mjs → lib-R-c_q77C.mjs} +1 -1
- package/dist/{load-extensions-DM1PgW4a.d.mts → load-extensions-Bu10B5B1.d.mts} +1 -1
- package/dist/{load-extensions-BHTj3d_P.mjs → load-extensions-s4YmICgn.mjs} +1 -1
- package/dist/{materialization-BQuh_gaE.mjs → materialization-BwC7pVg2.mjs} +1 -1
- package/dist/mcp-http-server/index.d.mts +1 -1
- package/dist/mcp-http-server/index.mjs +1 -1
- package/dist/model-Cn1IFEP8.mjs +1 -0
- package/dist/{namespace-c5XPzbf3.d.mts → namespace-BYsKOw-g.d.mts} +2 -2
- package/dist/{namespace-ZAIFBrIy.mjs → namespace-CnRcpgJ8.mjs} +1 -1
- package/dist/namespace-DFc1nkal.mjs +1 -0
- package/dist/{namespace-Cb0XKb4v.d.mts → namespace-KTRWfIPy.d.mts} +2 -2
- package/dist/{namespace-DiTFR4Zt.d.mts → namespace-wuGMWlyz.d.mts} +2 -2
- package/dist/{native-session-supervisor-BlGzmZrH.mjs → native-session-supervisor-B0rziwHI.mjs} +1 -1
- package/dist/node/bus-server/index.d.mts +1 -1
- package/dist/node/bus-server/index.mjs +1 -1
- package/dist/node/bus-server/server-lifecycle.d.mts +1 -1
- package/dist/node/bus-server/server-lifecycle.mjs +1 -1
- package/dist/{orchestrator-shared-5vhs4wvU.mjs → orchestrator-shared-CmS8iU9_.mjs} +1 -1
- package/dist/{orchestrator-shared-BRNZ6it3.d.mts → orchestrator-shared-Cwc6JKkV.d.mts} +1 -1
- package/dist/{ownership-memory-handler-BCu1EjFO.mjs → ownership-memory-handler-DMirNILL.mjs} +1 -1
- package/dist/package-B-xpYKe8.mjs +7 -0
- package/dist/{package-x2wRhcUt.d.mts → package-Bl0mcGb8.d.mts} +13 -3
- package/dist/{package-BiZ6ehWk.mjs → package-Co36_pRw.mjs} +1 -1
- package/dist/{package-BUSXHPOT.mjs → package-D2zvQO7X.mjs} +1 -1
- package/dist/package.json +1 -1
- package/dist/{packages-Dhgmy_LJ.mjs → packages-COqPg5TI.mjs} +1 -1
- package/dist/{packages-BSVxszLf.d.mts → packages-DTz_1dCa.d.mts} +1 -1
- package/dist/{profile-DBDvy9uc.mjs → profile-C9RV7ao-.mjs} +1 -1
- package/dist/{provider-context-CSb0qX1c.mjs → provider-context-BPITm0cn.mjs} +1 -1
- package/dist/{provider-context-CTOrOW54.mjs → provider-context-CyGvwXPz.mjs} +1 -1
- package/dist/providers/index.d.mts +1 -1
- package/dist/{reaction-6e4v007b.mjs → reaction-aQJGWUWl.mjs} +1 -1
- package/dist/repo-context-Dy6eE9cg.mjs +1 -0
- package/dist/{resolved-ONt3rOMh.mjs → resolved-M6PyrgFr.mjs} +1 -1
- package/dist/rules/index.d.mts +1 -1
- package/dist/rules/index.mjs +1 -1
- package/dist/rules/schemas.d.mts +1 -1
- package/dist/runtime-bun/index.mjs +1 -1
- package/dist/runtime-node/code-execution/index.d.mts +2 -2
- package/dist/runtime-node/code-execution/index.mjs +1 -1
- package/dist/runtime-node/extension-discovery.d.mts +1 -1
- package/dist/runtime-node/extension-validation.d.mts +1 -1
- package/dist/runtime-node/extension-validation.mjs +1 -1
- package/dist/runtime-node/index.d.mts +6 -6
- package/dist/runtime-node/index.mjs +4 -4
- package/dist/runtime-node/makaio-config.d.mts +1 -1
- package/dist/runtime-node/makaio-config.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/runtime-node/workflow-worker/worker-entry.mjs +1 -1
- package/dist/{schema-B8jinlbH.mjs → schema-DrHrto2J.mjs} +1 -1
- package/dist/{schemas-BFwNBMIj.d.mts → schemas-BYyT43gX.d.mts} +4 -4
- package/dist/{schemas-BIU9Org_.mjs → schemas-CQKfd2Xd.mjs} +1 -1
- package/dist/{schemas-Di_kpQ0C.d.mts → schemas-CvUe_yff.d.mts} +13 -4
- package/dist/{schemas-BZabEyEV.d.mts → schemas-D2HmGmCt.d.mts} +1 -1
- package/dist/schemas-DRho446W.mjs +1 -0
- package/dist/{schemas-I9dZtAkj.d.mts → schemas-DwqibWUL.d.mts} +2 -2
- package/dist/{schemas-abY5VbS4.mjs → schemas-DyZNwquY.mjs} +1 -1
- package/dist/{selection-7SkHsmWs.mjs → selection-BDs7K53w.mjs} +1 -1
- package/dist/{server-lifecycle-hNz8U-QJ.mjs → server-lifecycle-C5Vl58sN.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.d.mts +3 -3
- package/dist/services/adapter-subsystem/index.mjs +1 -1
- package/dist/services/adapter-subsystem/namespace.d.mts +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/automation-trigger/index.d.mts +1 -1
- package/dist/services/automation-trigger/index.mjs +1 -1
- package/dist/services/capability/index.d.mts +2 -2
- package/dist/services/capability/index.mjs +1 -1
- package/dist/services/code-execution/index.d.mts +1 -1
- package/dist/services/code-execution/index.mjs +1 -1
- package/dist/services/codebase/index.d.mts +2 -2
- package/dist/services/codebase/namespace.d.mts +1 -1
- package/dist/services/codebase/schemas.d.mts +1 -1
- package/dist/services/compression/index.d.mts +2 -2
- package/dist/services/compression/namespace.d.mts +1 -1
- package/dist/services/compression/schemas.d.mts +1 -1
- package/dist/services/context-rules/index.d.mts +4 -4
- package/dist/services/context-rules/index.mjs +1 -1
- package/dist/services/execution-target/index.d.mts +3 -3
- package/dist/services/execution-target/index.mjs +1 -1
- package/dist/services/execution-target/namespace.d.mts +1 -1
- package/dist/services/execution-target/namespace.mjs +1 -1
- package/dist/services/execution-target/schemas.d.mts +1 -1
- package/dist/services/execution-target/schemas.mjs +1 -1
- package/dist/services/filesystem/index.d.mts +1 -1
- package/dist/services/filesystem/index.mjs +1 -1
- package/dist/services/filesystem/namespace.d.mts +6 -6
- package/dist/services/filesystem/schemas.d.mts +3 -3
- package/dist/services/git/namespace.d.mts +2 -2
- package/dist/services/git/namespace.mjs +1 -1
- package/dist/services/git/schemas.d.mts +1 -1
- package/dist/services/git/schemas.mjs +1 -1
- package/dist/services/harness/index.d.mts +4 -4
- package/dist/services/harness/index.mjs +1 -1
- package/dist/services/index.d.mts +49 -49
- package/dist/services/index.mjs +1 -1
- package/dist/services/log-import/browser.d.mts +2 -2
- package/dist/services/log-import/index.d.mts +3 -3
- package/dist/services/log-import/index.mjs +2 -2
- package/dist/services/log-import/log-import.d.mts +1 -1
- package/dist/services/log-import/log-import.mjs +1 -1
- package/dist/services/log-import/namespace.mjs +1 -1
- package/dist/services/log-import/schemas.mjs +1 -1
- package/dist/services/materialization/index.d.mts +1 -1
- package/dist/services/materialization/index.mjs +1 -1
- package/dist/services/model-registry/index.d.mts +1 -1
- package/dist/services/model-registry/index.mjs +1 -1
- package/dist/services/preferences/index.d.mts +2 -2
- package/dist/services/preferences/schemas.d.mts +1 -1
- package/dist/services/preferences/storage-namespace.d.mts +2 -2
- package/dist/services/provider-context/index.d.mts +1 -1
- package/dist/services/provider-context/index.mjs +1 -1
- package/dist/services/provider-runtime/index.mjs +1 -1
- package/dist/services/session/handlers/index.d.mts +1 -1
- package/dist/services/session/handlers/index.mjs +1 -1
- package/dist/services/session/index.d.mts +9 -9
- 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.d.mts +1 -1
- package/dist/services/session/orchestrator-testing/index.mjs +1 -1
- package/dist/services/session/session-events/namespace.d.mts +1 -1
- package/dist/services/session/session-events/namespace.mjs +1 -1
- package/dist/services/session/storage/namespace.d.mts +1 -1
- package/dist/services/session/storage/schema.d.mts +1 -1
- package/dist/services/session/testing/index.mjs +2 -2
- package/dist/services/session/testing/orchestrator-shared.d.mts +1 -1
- package/dist/services/session/testing/orchestrator-shared.mjs +1 -1
- package/dist/services/session/turns/namespace.d.mts +1 -1
- package/dist/services/session/turns/namespace.mjs +1 -1
- package/dist/services/session-editor/index.d.mts +1 -1
- package/dist/services/session-editor/index.mjs +1 -1
- package/dist/services/settings/index.d.mts +3 -3
- package/dist/services/settings/index.mjs +1 -1
- package/dist/services/settings/namespace.d.mts +4 -4
- package/dist/services/settings/namespace.mjs +1 -1
- package/dist/services/settings/storage/clients-namespace.d.mts +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.d.mts +3 -3
- package/dist/services/settings/storage/index.mjs +1 -1
- package/dist/services/settings/storage/providers-namespace.d.mts +1 -1
- package/dist/services/settings/storage/providers-namespace.mjs +1 -1
- package/dist/services/subagent/index.d.mts +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.d.mts +1 -1
- package/dist/services/tool-approval/index.mjs +1 -1
- package/dist/services/tools/index.d.mts +1 -1
- package/dist/services/tools/index.mjs +1 -1
- package/dist/services/tray-menu/index.d.mts +3 -3
- package/dist/services/tray-menu/index.mjs +1 -1
- package/dist/services/tray-menu/namespace.d.mts +1 -1
- package/dist/services/tray-menu/schemas.d.mts +1 -1
- package/dist/services/turn/index.d.mts +1 -1
- package/dist/services/turn/namespace.d.mts +1 -1
- package/dist/services/workflow-transitions/index.d.mts +1 -1
- package/dist/services/workflow-transitions/index.mjs +1 -1
- package/dist/{session-A-h_Dwcs.mjs → session-9C42TPQq.mjs} +1 -1
- package/dist/{session-BDFNAcuY.mjs → session-Cn8z1hxD.mjs} +6 -6
- package/dist/{session-lineage-BzlpfLgC.d.mts → session-lineage-CEyJWg_J.d.mts} +1 -1
- package/dist/{shared-BZf2zoxL.mjs → shared-DqvfJVYk.mjs} +1 -1
- package/dist/{skill-1gU2q1KT.mjs → skill-BmRp8GhW.mjs} +1 -1
- package/dist/{src-Dlpw-Gh5.mjs → src-CmLn6zYj.mjs} +1 -1
- package/dist/storage/drizzle/client.d.mts +1 -1
- package/dist/storage/drizzle/client.mjs +1 -1
- package/dist/storage/drizzle/index.d.mts +2 -2
- package/dist/storage/drizzle/index.mjs +1 -1
- package/dist/storage/handlers/drizzle/index.d.mts +1 -1
- package/dist/storage/handlers/drizzle/index.mjs +1 -1
- package/dist/storage/handlers/index.d.mts +1 -1
- package/dist/storage/handlers/index.mjs +1 -1
- package/dist/testing/index.d.mts +1 -1
- package/dist/{tool-approval-service-rpV94znP.mjs → tool-approval-service-DchkAdAr.mjs} +1 -1
- package/dist/tools/index.d.mts +1 -1
- package/dist/{tools-oQPsY7v2.mjs → tools-r50UBPJ9.mjs} +1 -1
- package/dist/{transition-BeWq5nKg.d.mts → transition-CgsrmsfE.d.mts} +2 -2
- package/dist/{types-FNVbwd7z2.d.mts → types-Bnc-pdB12.d.mts} +1 -1
- package/dist/{types-D4N56a4O.d.mts → types-Dswhi1L9.d.mts} +1 -1
- package/dist/{types-CIEJ91wm.d.mts → types-ZvPhKp3j.d.mts} +8 -8
- package/dist/ui-kernel/index.d.mts +2 -2
- package/dist/ui-kernel/pages/schemas.d.mts +1 -1
- package/dist/{version-3xWJDCeF.mjs → version-sDSWOMn_.mjs} +1 -1
- package/dist/{view-builder-BwGugMWz.d.mts → view-builder-D54kvyf7.d.mts} +10 -10
- package/dist/{visibility-C5sLzqyS.mjs → visibility-syKffo3e.mjs} +1 -1
- package/dist/{worker-qgJToDTN.mjs → worker-DRQGyWAS.mjs} +1 -1
- package/dist/{worker-Csadr_du.mjs → worker-DzbPk2YI.mjs} +1 -1
- package/dist/{workflow-Cb2Pj1h3.mjs → workflow-D-yrAZW8.mjs} +1 -1
- package/dist/workflow-engine/execution-attempt-repository.d.mts +2 -2
- package/dist/workflow-engine/execution-attempt-repository.mjs +1 -1
- package/dist/workflow-engine/index.d.mts +62 -62
- 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/conformance.mjs +2 -2
- package/dist/workflow-engine/testing/index.d.mts +3 -1
- package/dist/workflow-engine/testing/index.mjs +1 -1
- package/dist/workflow-engine/testing/sqlite.d.mts +1 -1
- package/dist/workflow-engine/testing/sqlite.mjs +66 -61
- package/dist/workflow-engine/workflow-orchestrator.d.mts +1 -1
- package/dist/workflow-engine/workflow-orchestrator.mjs +1 -1
- package/dist/{workflow-transitions-BI7PbrXv.mjs → workflow-transitions-D5RvMSnf.mjs} +1 -1
- package/dist/workflow-worker-CrnDwpkP.mjs +2 -0
- package/package.json +5 -1
- package/dist/artifact-nArLAotB.mjs +0 -1
- package/dist/authority-state-bootstrap-DnwkMieA.mjs +0 -1
- package/dist/bootstrap-start-client-Bdv-_2Q9.mjs +0 -1
- package/dist/execution-attempt-repository-DXyh1hgz.mjs +0 -1
- package/dist/model-B6t_-_sp.mjs +0 -1
- package/dist/namespace-D4zmxaC4.mjs +0 -1
- package/dist/package-DKfzsJVl.mjs +0 -7
- package/dist/schemas-FiFC_DI6.mjs +0 -1
- package/dist/workflow-worker-Db7EBUgh.mjs +0 -2
- /package/dist/{adapter-binding-BU7STlfd.d.mts → adapter-binding-DhANVB-O.d.mts} +0 -0
- /package/dist/{ajv-Dtk5hCZS.mjs → ajv-IlnfOGAj.mjs} +0 -0
- /package/dist/{attach-error-B-vXQFLQ.mjs → attach-error-DOlUtquX.mjs} +0 -0
- /package/dist/{attempt-fixtures-C-jQE_7B.mjs → attempt-fixtures-CMx-2OlG.mjs} +0 -0
- /package/dist/{base-orchestrator-DXiejwQ3.d.mts → base-orchestrator-tAgnJAKu.d.mts} +0 -0
- /package/dist/{capability-Bw4tsDQu.mjs → capability-BQHyskJB.mjs} +0 -0
- /package/dist/{client-BwFqO0cG.d.mts → client-At2zn3yg.d.mts} +0 -0
- /package/dist/{client-binary-version-verifier-DHBAzg3-.mjs → client-binary-version-verifier-DLziUQhw.mjs} +0 -0
- /package/dist/{client-binary-version-verifier-DySlUy9m.d.mts → client-binary-version-verifier-EOj8xXqm.d.mts} +0 -0
- /package/dist/{clients-namespace-Dh0SNZcQ.d.mts → clients-namespace-CVRwXq8f.d.mts} +0 -0
- /package/dist/{config-namespace-CZqPIAWt.d.mts → config-namespace-D7GbrasR.d.mts} +0 -0
- /package/dist/{create-static-mount-GSdckRQx.mjs → create-static-mount-BIH26VH8.mjs} +0 -0
- /package/dist/{cross-spawn-Bx_VEdpd.mjs → cross-spawn-Bi05YtQQ.mjs} +0 -0
- /package/dist/{cursor-storage-Co4itf44.mjs → cursor-storage-88xtgVAd.mjs} +0 -0
- /package/dist/{definition-D3HjoK-4.d.mts → definition-VK1rERAp.d.mts} +0 -0
- /package/dist/{definitions-CYZTuMdL.mjs → definitions-2T95Q-y6.mjs} +0 -0
- /package/dist/{descriptor-to-package-CZLujoiv.mjs → descriptor-to-package-GVZk9ZGT.mjs} +0 -0
- /package/dist/{drizzle-me-95ICP.mjs → drizzle-BrlzkYoe.mjs} +0 -0
- /package/dist/{esm-DILYVXmW.mjs → esm-B3t30-13.mjs} +0 -0
- /package/dist/{event-DmQPb5MB.mjs → event-DFI0F1Ws.mjs} +0 -0
- /package/dist/{extension-context-Cx8CetW3.d.mts → extension-context-Cpf_n5FH.d.mts} +0 -0
- /package/dist/{extension-discovery-CZkaPQBo.d.mts → extension-discovery-B0ZL076T.d.mts} +0 -0
- /package/dist/{extension-namespace-twXNwE4R.mjs → extension-namespace-CWfV3IiR.mjs} +0 -0
- /package/dist/{extension-package-provenance-BzvG6rDO.mjs → extension-package-provenance-Dr7JXjLS.mjs} +0 -0
- /package/dist/{facet-Cly0VpTI.mjs → facet-6tnSbjXc.mjs} +0 -0
- /package/dist/{filesystem-service-UYYyRL2y.d.mts → filesystem-service-BWoNtujU.d.mts} +0 -0
- /package/dist/{handler-BYQPNm8O.mjs → handler-CFT7_osu.mjs} +0 -0
- /package/dist/{host-CiHn8Yog.mjs → host-D7v3YlDG.mjs} +0 -0
- /package/dist/{identity-BULrIHmo.mjs → identity-CxMRRAXx.mjs} +0 -0
- /package/dist/{index-B5kqAW7h.d.mts → index-8a41yDOl.d.mts} +0 -0
- /package/dist/{index-Dmwnhnio2.d.mts → index-BBkJsViX2.d.mts} +0 -0
- /package/dist/{index-DNp9DP6W.d.mts → index-BL1F1xYB.d.mts} +0 -0
- /package/dist/{index-BCKhrNLC.d.mts → index-BTHdi23O.d.mts} +0 -0
- /package/dist/{index-BU8uFswE.d.mts → index-BcPO9w0j.d.mts} +0 -0
- /package/dist/{index-DcG3r0VL.d.mts → index-Bk0Xjk-B.d.mts} +0 -0
- /package/dist/{index-DGlSbpgS2.d.mts → index-Bn1JTbn_2.d.mts} +0 -0
- /package/dist/{index-CYUhTE552.d.mts → index-C75h1xHF2.d.mts} +0 -0
- /package/dist/{index-DB4Xggtt.d.mts → index-CDA33y5A.d.mts} +0 -0
- /package/dist/{index-B9-1l1oh.d.mts → index-CSJOBx3H.d.mts} +0 -0
- /package/dist/{index-BAL1FiaJ.d.mts → index-CVh7ZP2I.d.mts} +0 -0
- /package/dist/{index-6wmqw_ng.d.mts → index-Ccaqmi0J.d.mts} +0 -0
- /package/dist/{index-zvoiT54b.d.mts → index-CjazerMN.d.mts} +0 -0
- /package/dist/{index-C_R6ifn9.d.mts → index-DXSVC0bM.d.mts} +0 -0
- /package/dist/{index-D3_QOfke.d.mts → index-Du-eXjEN.d.mts} +0 -0
- /package/dist/{index-DbYjMWlj.d.mts → index-DwKPj8jD.d.mts} +0 -0
- /package/dist/{index-LsZNB_gb.d.mts → index-DwY1Mt9a.d.mts} +0 -0
- /package/dist/{index-C-6g2xzN.d.mts → index-DzHc6hsJ.d.mts} +0 -0
- /package/dist/{index-DQbcfjIb2.d.mts → index-krTCFThl2.d.mts} +0 -0
- /package/dist/{json-value-DyMQrwGz.d.mts → json-value-BKUDMT7k.d.mts} +0 -0
- /package/dist/{jsonl-transport-Dfv3RLzi.mjs → jsonl-transport-3yp3clGp.mjs} +0 -0
- /package/dist/{lib-BdfAJKDj.mjs → lib-DF6sgNx_.mjs} +0 -0
- /package/dist/{model-registry-B7ThN_s3.mjs → model-registry-BTjKBCCw.mjs} +0 -0
- /package/dist/{model-registry-DlUErRRt.mjs → model-registry-CAqJYbXg.mjs} +0 -0
- /package/dist/{modes-CyG4sgs_.mjs → modes-Bo9Vv5c9.mjs} +0 -0
- /package/dist/{namespace-ChjzkJIl.mjs → namespace-0TfAY2J7.mjs} +0 -0
- /package/dist/{namespace-JqvomFSV.d.mts → namespace-B1sjokHd.d.mts} +0 -0
- /package/dist/{namespace-De25c2ds.d.mts → namespace-B3MnuAqp.d.mts} +0 -0
- /package/dist/{namespace-BFlSY040.mjs → namespace-BCSJz417.mjs} +0 -0
- /package/dist/{namespace-DAbT1F_n.d.mts → namespace-BHb_9sh4.d.mts} +0 -0
- /package/dist/{namespace-BQ7eiQwr.d.mts → namespace-BNNFD-ul.d.mts} +0 -0
- /package/dist/{namespace-69c5HXtL.d.mts → namespace-BgaVgd00.d.mts} +0 -0
- /package/dist/{namespace-CBf5xG_A.d.mts → namespace-BiEV44Mk.d.mts} +0 -0
- /package/dist/{namespace-B8kUQpwo.mjs → namespace-CDoyzyV4.mjs} +0 -0
- /package/dist/{namespace-B7fMkHmy.d.mts → namespace-CjmNxtr1.d.mts} +0 -0
- /package/dist/{namespace-BoOLmi67.d.mts → namespace-Cy62a3YP.d.mts} +0 -0
- /package/dist/{namespace-CIF_1OWi.d.mts → namespace-Czr38fiF.d.mts} +0 -0
- /package/dist/{namespace-C9d0aoYT.mjs → namespace-DORNUF0_.mjs} +0 -0
- /package/dist/{namespace-QXCaZK3I.mjs → namespace-DX3QsYpv.mjs} +0 -0
- /package/dist/{namespace-ZN49zpqw.mjs → namespace-Dyxpur8_.mjs} +0 -0
- /package/dist/{namespace-CUXZS_Ia.d.mts → namespace-btfJrUf6.d.mts} +0 -0
- /package/dist/{namespace-DAW4OY3-.d.mts → namespace-fEBskugJ.d.mts} +0 -0
- /package/dist/{out-Cn6vBxlH.mjs → out-og8659Ny.mjs} +0 -0
- /package/dist/{ownership-recovery-guard-Ce9-C5Sa.mjs → ownership-recovery-guard-CYA5CsiO.mjs} +0 -0
- /package/dist/{package-D4eLGGv4.mjs → package-BecmlOXC.mjs} +0 -0
- /package/dist/{platform-C-fDsuEl.mjs → platform-BdLHWgVc.mjs} +0 -0
- /package/dist/{providers-DVlsnJaY.mjs → providers-DGTA-lki.mjs} +0 -0
- /package/dist/{providers-namespace-DcPil5uz.d.mts → providers-namespace-Bming6U8.d.mts} +0 -0
- /package/dist/{quick-lru-CVryNCTx.mjs → quick-lru-bVGGo5bq.mjs} +0 -0
- /package/dist/{registry-Q9gCZtxz.mjs → registry-Cu3eD3UY.mjs} +0 -0
- /package/dist/{runtime-inputs-CMjGjK7W.d.mts → runtime-inputs-DeOea-ab.d.mts} +0 -0
- /package/dist/{schema-DIgKUfuF.d.mts → schema-DFCBjTB7.d.mts} +0 -0
- /package/dist/{schema-introspection-CSnLZJpC.mjs → schema-introspection-BsWP1vGC.mjs} +0 -0
- /package/dist/{schema-DIHGEQx3.mjs → schema-mXXJcaQT.mjs} +0 -0
- /package/dist/{schemas-BKnJj2i-.mjs → schemas-7fHmNUQc.mjs} +0 -0
- /package/dist/{schemas-BFgsIiSb.mjs → schemas-BE-gfjGI.mjs} +0 -0
- /package/dist/{schemas-CM3Ejp-n.d.mts → schemas-BLy33xay.d.mts} +0 -0
- /package/dist/{schemas-Ge_bamoP.d.mts → schemas-BkCqhK3X.d.mts} +0 -0
- /package/dist/{schemas-NwKrrrPF.d.mts → schemas-Cz7H2f7S.d.mts} +0 -0
- /package/dist/{schemas-DYeS-mtz.d.mts → schemas-DGKWi7mk.d.mts} +0 -0
- /package/dist/{schemas-Vv0GtBaZ.d.mts → schemas-DTBWnWjN.d.mts} +0 -0
- /package/dist/{schemas-COnD70WD.d.mts → schemas-DYIVJDlx.d.mts} +0 -0
- /package/dist/{schemas-qbaSxHDL.d.mts → schemas-DqWwz4eR.d.mts} +0 -0
- /package/dist/{schemas-DTyZjKQf2.d.mts → schemas-GyKYcV-Z2.d.mts} +0 -0
- /package/dist/{schemas-CnFVygzI.mjs → schemas-HffXbw8C.mjs} +0 -0
- /package/dist/{schemas-CbhvgFQs.mjs → schemas-MIYusvwn.mjs} +0 -0
- /package/dist/{schemas-BapfTRqp.mjs → schemas-NYUz8K9Q.mjs} +0 -0
- /package/dist/{semver-D_D2mA48.mjs → semver-_h8-BJ8k.mjs} +0 -0
- /package/dist/{server-lifecycle-BPAN-b0i.d.mts → server-lifecycle-_m_x1_TC.d.mts} +0 -0
- /package/dist/{shared-schemas-kUho6Kmw.mjs → shared-schemas-CaL1iEk6.mjs} +0 -0
- /package/dist/{src-Du_285FN.mjs → src-DdaPoQOD.mjs} +0 -0
- /package/dist/{storage-namespace-Dtz2G1if.mjs → storage-namespace-DBuKMBth.mjs} +0 -0
- /package/dist/{storage-namespace-definition-BJCbqVWz.mjs → storage-namespace-definition-4UYuij1r.mjs} +0 -0
- /package/dist/{storage-namespace-definition-D6soSjKE.d.mts → storage-namespace-definition-CsaZPU3n.d.mts} +0 -0
- /package/dist/{storage-namespace-C9oFExfb.d.mts → storage-namespace-zRXWqAfO.d.mts} +0 -0
- /package/dist/{supports-color-BNmyqLq0.mjs → supports-color-DG_rcVqJ.mjs} +0 -0
- /package/dist/{telemetry-CUkZrhW6.mjs → telemetry-BLYrkonr.mjs} +0 -0
- /package/dist/{timeout-DeBYTGBR.mjs → timeout-d0dzIY3V.mjs} +0 -0
- /package/dist/{tray-menu-service-TWrmvXSo.mjs → tray-menu-service-BGwXKJYr.mjs} +0 -0
- /package/dist/{types-D9GJ7FyQ.mjs → types-Bh2fQoxM.mjs} +0 -0
- /package/dist/{types-BOsf2SVm.d.mts → types-CccTiXH2.d.mts} +0 -0
- /package/dist/{types-DZvkUmHS.d.mts → types-DXGVwrQn.d.mts} +0 -0
- /package/dist/{types-BZnJ_4e2.d.mts → types-DjxvRcX6.d.mts} +0 -0
- /package/dist/{types-CWgYlxjU.d.mts → types-nor1SQLZ.d.mts} +0 -0
- /package/dist/{ui-config-9hlZAJOS.mjs → ui-config-CsH94fwa.mjs} +0 -0
- /package/dist/{variant-73kFgYBK.mjs → variant-BZ9UcJBi.mjs} +0 -0
- /package/dist/{window-registry-Bvjvpwhn.d.mts → window-registry-DQ7udUzI.d.mts} +0 -0
- /package/dist/{window-registry-CzAwaPKL.mjs → window-registry-DQkv5wM9.mjs} +0 -0
- /package/dist/{zod-json-schema-B1mZz7S4.mjs → zod-json-schema-DGWHUOK0.mjs} +0 -0
|
@@ -1,5 +1,5 @@
|
|
|
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-B8jinlbH.mjs";import{a as u,n as d,o as f}from"./namespace-ZAIFBrIy.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-CBbFzDHc.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-Ce9-C5Sa.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-CTOrOW54.mjs";import{n as Ge}from"./namespace-ZN49zpqw.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-BCu1EjFO.mjs";import{z as D}from"zod";import{createBusNamespace as et}from"@makaio/framework/core";import{MakaioBus as tt,NoHandlerError as nt,TimeoutError as rt}from"@makaio/framework/bus";import{AdapterSubjects as it,AgentSubjects as O,CanonicalModelSubjects as at,CapabilitySubjects as ot,ClientSubjects as st,CompressionModeSchema as ct,FORK_SESSION_LINEAGE_KIND as lt,ForkTransformsSchema as ut,MessageRoutingSchema as dt,MessageStorageSubjects as ft,ROOT_SESSION_LINEAGE_KIND as pt,SessionContextSchema as mt,SessionDiscoveredSchema as ht,SessionOwnershipSettleMovementRequestSchema as gt,SessionOwnershipStorageSubjects as k,SessionRecordMetadataSchema as _t,SessionStorageSetRequestSchema as vt,SessionStorageUpdateSchema as yt,SessionSubjects as A,TurnIngestionMarkerSchema as bt,compareMessageCursorAsc as xt,compareMessageCursorDesc as St,isCanonicalModelParseError as Ct,isInactiveSafeLeadDesignationMutation as wt,messageToCursor as j,normalizeSessionOwnershipClaimRequest as Tt,parseCanonicalModel as Et,resolveResumableAdapterSessionId as Dt,teardownWasObserved as Ot}from"@makaio/framework/contracts";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(it.stopAgent,{adapterId:n.adapterId,agentId:t,ownerInstanceId:n.ownerInstanceId,...r&&{teardown:`connector-only`}});return i.handled&&Ot(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(it.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 rt(`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=tt,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(it.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(it.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 xt(j(e),j(t))}function Jn(e,t){return St(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`?St(j(e),a):xt(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:dt,response:D.object({success:D.boolean()})},getByMessage:{request:D.object({messageId:D.string()}),response:D.object({routing:D.array(dt)})},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(it.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(it.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=Et(t.model);if(Ct(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(at.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=tt,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?mt.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 nt||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=tt){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
|
-
`),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?ct.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=ut.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`
|
|
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(`
|
|
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
|
|
5
5
|
WHEN 'object' THEN ${t}.value
|
|
@@ -52,7 +52,7 @@ import{adapterSessionClaims as e,adapterSessionClaimsDual as t,agents as n,agent
|
|
|
52
52
|
WHEN ${r.status} = 'discovered' THEN 'active'
|
|
53
53
|
ELSE ${r.status}
|
|
54
54
|
END
|
|
55
|
-
`}:{},[s]=await n.update(r).set({importStatus:a,...o}).where(F(L(r.sessionId,i),tn(z(r.importStatus),B`${r.importStatus} <> ${a}`))).returning({adapterSessionId:r.adapterSessionId,adapterName:r.adapterName,source:r.source}),c=s!==void 0;if(e.setResult({success:c}),c){t.emit(A.importStatusChanged,{sessionId:i,importStatus:a}).catch(e=>console.error(`[SessionStorage] Failed to emit session.importStatusChanged:`,e));let e=s.source??s.adapterName;a===`imported`&&s.adapterSessionId&&e&&t.emit(A.import.completed,{sessionId:i,adapterSessionId:s.adapterSessionId,source:e}).catch(e=>console.error(`[SessionStorage] Failed to emit session.import.completed:`,e))}})}function qi(e,t){let n={bus:e,db:t};return[Bi(n),ji(n),Ui(n),Wi(n),Gi(n),Ki(n)]}function Ji(e){let t=e.reconcileAdapterSession;if(t!==void 0)return{adapterName:t.adapterName,adapterId:t.adapterId,adapterSessionId:t.adapterSessionId,lastActivityAt:t.lastActivityAt};let n=e.identity;return n===void 0?{}:{adapterName:n.adapterName,adapterId:n.adapterId,...n.adapterSessionId===void 0?{}:{adapterSessionId:n.adapterSessionId}}}function Yi(e,t){let n=e.expectIdentityOpenForLead,r=e.reconcileAdapterSession;return{status:e.expectedStatus===void 0?void 0:R(t.status,e.expectedStatus),identity:n===void 0?void 0:F(z(t.adapterName),z(t.adapterId),n===null?z(t.leadAgentId):L(t.leadAgentId,n)),reconciliation:r===void 0?void 0:F(z(t.adapterSessionId),L(t.leadAgentId,r.agentId),tn(F(z(t.adapterName),z(t.adapterId)),F(L(t.adapterName,r.adapterName),L(t.adapterId,r.adapterId))))}}function J(e){return e??null}function Xi(e){return e?JSON.stringify(e):null}function Zi(e){return{lastActivityAt:e.lastActivityAt,status:e.status,leadAgentId:J(e.leadAgentId),parentSessionId:J(e.parentSessionId),contextInheritance:J(e.contextInheritance),rootSessionId:J(e.rootSessionId),forkPointMessageId:J(e.forkPointMessageId),branchKind:J(e.branchKind),adapterName:J(e.adapterName),adapterSessionId:J(e.adapterSessionId),adapterId:J(e.adapterId),clientId:J(e.clientId),clientAccountId:J(e.clientAccountId),lastClientIdentityObservation:$i(e.lastClientIdentityObservation),isOrchestrated:e.isOrchestrated??!1,isImported:e.isImported??!1,title:J(e.title),summary:J(e.summary),summaryUpdatedAt:J(e.summaryUpdatedAt),forkTransforms:Xi(e.forkTransforms),targetWorkingDirectory:J(e.targetWorkingDirectory),executionTargetId:J(e.executionTargetId),approvalPolicyOverride:J(e.approvalPolicyOverride),metadata:J(e.metadata),spawningToolCallId:J(e.spawningToolCallId),source:J(e.source),parentExternalSessionId:J(e.parentExternalSessionId),logFilePath:J(e.logFilePath),discoveredAt:J(e.discoveredAt),importStatus:J(e.importStatus),machineId:J(e.machineId)}}function Qi(e){let{leadAgentId:t,...n}=e;return n}function $i(e){return e?JSON.stringify(e):null}function Y(e,t,n){n!==void 0&&(e[t]=n)}function ea(e,t,n){n!==void 0&&(e[t]=n??null)}function ta(e,t){let n={};return Y(n,`status`,e.status),ea(n,`parentSessionId`,e.parentSessionId),Y(n,`contextInheritance`,e.contextInheritance),Y(n,`rootSessionId`,e.rootSessionId),Y(n,`forkPointMessageId`,e.forkPointMessageId),Y(n,`branchKind`,e.branchKind),Y(n,`isOrchestrated`,e.isOrchestrated),Y(n,`clientId`,e.clientId),Y(n,`clientAccountId`,e.clientAccountId),Y(n,`title`,e.title),Y(n,`targetWorkingDirectory`,e.targetWorkingDirectory),Y(n,`createdAt`,e.createdAt),Y(n,`lastActivityAt`,e.lastActivityAt),Y(n,`machineId`,e.machineId),Object.assign(n,Ji(e)),ea(n,`executionTargetId`,e.executionTargetId),ea(n,`approvalPolicyOverride`,e.approvalPolicyOverride),ea(n,`metadata`,e.metadata),e.spawningToolCallId===null?n.spawningToolCallId=null:e.spawningToolCallId!==void 0&&(n.spawningToolCallId=B`coalesce(${t.spawningToolCallId}, ${e.spawningToolCallId})`),e.lastClientIdentityObservation!==void 0&&(n.lastClientIdentityObservation=$i(e.lastClientIdentityObservation)),n}function na(e){let{bus:t,db:n}=e,{sessions:r,agents:i}=P(n,G);return t.on(T.get,async e=>{let[t]=await n.select().from(r).where(L(r.sessionId,e.payload.sessionId)).limit(1);if(!t){e.setResult({session:null});return}let a=await n.select().from(i).where(L(i.sessionId,e.payload.sessionId));e.setResult({session:q(t,a)})})}function ra(e){let{bus:t,db:n}=e,{sessions:r}=P(n,G);return t.on(T.set,async e=>{let{sessionId:i,session:a,ifAbsent:o}=
|
|
55
|
+
`}:{},[s]=await n.update(r).set({importStatus:a,...o}).where(F(L(r.sessionId,i),tn(z(r.importStatus),B`${r.importStatus} <> ${a}`))).returning({adapterSessionId:r.adapterSessionId,adapterName:r.adapterName,source:r.source}),c=s!==void 0;if(e.setResult({success:c}),c){t.emit(A.importStatusChanged,{sessionId:i,importStatus:a}).catch(e=>console.error(`[SessionStorage] Failed to emit session.importStatusChanged:`,e));let e=s.source??s.adapterName;a===`imported`&&s.adapterSessionId&&e&&t.emit(A.import.completed,{sessionId:i,adapterSessionId:s.adapterSessionId,source:e}).catch(e=>console.error(`[SessionStorage] Failed to emit session.import.completed:`,e))}})}function qi(e,t){let n={bus:e,db:t};return[Bi(n),ji(n),Ui(n),Wi(n),Gi(n),Ki(n)]}function Ji(e){let t=e.reconcileAdapterSession;if(t!==void 0)return{adapterName:t.adapterName,adapterId:t.adapterId,adapterSessionId:t.adapterSessionId,lastActivityAt:t.lastActivityAt};let n=e.identity;return n===void 0?{}:{adapterName:n.adapterName,adapterId:n.adapterId,...n.adapterSessionId===void 0?{}:{adapterSessionId:n.adapterSessionId}}}function Yi(e,t){let n=e.expectIdentityOpenForLead,r=e.reconcileAdapterSession;return{status:e.expectedStatus===void 0?void 0:R(t.status,e.expectedStatus),identity:n===void 0?void 0:F(z(t.adapterName),z(t.adapterId),n===null?z(t.leadAgentId):L(t.leadAgentId,n)),reconciliation:r===void 0?void 0:F(z(t.adapterSessionId),L(t.leadAgentId,r.agentId),tn(F(z(t.adapterName),z(t.adapterId)),F(L(t.adapterName,r.adapterName),L(t.adapterId,r.adapterId))))}}function J(e){return e??null}function Xi(e){return e?JSON.stringify(e):null}function Zi(e){return{lastActivityAt:e.lastActivityAt,status:e.status,leadAgentId:J(e.leadAgentId),parentSessionId:J(e.parentSessionId),contextInheritance:J(e.contextInheritance),rootSessionId:J(e.rootSessionId),forkPointMessageId:J(e.forkPointMessageId),branchKind:J(e.branchKind),adapterName:J(e.adapterName),adapterSessionId:J(e.adapterSessionId),adapterId:J(e.adapterId),clientId:J(e.clientId),clientAccountId:J(e.clientAccountId),lastClientIdentityObservation:$i(e.lastClientIdentityObservation),isOrchestrated:e.isOrchestrated??!1,isImported:e.isImported??!1,title:J(e.title),summary:J(e.summary),summaryUpdatedAt:J(e.summaryUpdatedAt),forkTransforms:Xi(e.forkTransforms),targetWorkingDirectory:J(e.targetWorkingDirectory),executionTargetId:J(e.executionTargetId),approvalPolicyOverride:J(e.approvalPolicyOverride),metadata:J(e.metadata),spawningToolCallId:J(e.spawningToolCallId),source:J(e.source),parentExternalSessionId:J(e.parentExternalSessionId),logFilePath:J(e.logFilePath),discoveredAt:J(e.discoveredAt),importStatus:J(e.importStatus),machineId:J(e.machineId)}}function Qi(e){let{leadAgentId:t,...n}=e;return n}function $i(e){return e?JSON.stringify(e):null}function Y(e,t,n){n!==void 0&&(e[t]=n)}function ea(e,t,n){n!==void 0&&(e[t]=n??null)}function ta(e,t){let n={};return Y(n,`status`,e.status),ea(n,`parentSessionId`,e.parentSessionId),Y(n,`contextInheritance`,e.contextInheritance),Y(n,`rootSessionId`,e.rootSessionId),Y(n,`forkPointMessageId`,e.forkPointMessageId),Y(n,`branchKind`,e.branchKind),Y(n,`isOrchestrated`,e.isOrchestrated),Y(n,`clientId`,e.clientId),Y(n,`clientAccountId`,e.clientAccountId),Y(n,`title`,e.title),Y(n,`targetWorkingDirectory`,e.targetWorkingDirectory),Y(n,`createdAt`,e.createdAt),Y(n,`lastActivityAt`,e.lastActivityAt),Y(n,`machineId`,e.machineId),Object.assign(n,Ji(e)),ea(n,`executionTargetId`,e.executionTargetId),ea(n,`approvalPolicyOverride`,e.approvalPolicyOverride),ea(n,`metadata`,e.metadata),e.spawningToolCallId===null?n.spawningToolCallId=null:e.spawningToolCallId!==void 0&&(n.spawningToolCallId=B`coalesce(${t.spawningToolCallId}, ${e.spawningToolCallId})`),e.lastClientIdentityObservation!==void 0&&(n.lastClientIdentityObservation=$i(e.lastClientIdentityObservation)),n}function na(e){let{bus:t,db:n}=e,{sessions:r,agents:i}=P(n,G);return t.on(T.get,async e=>{let[t]=await n.select().from(r).where(L(r.sessionId,e.payload.sessionId)).limit(1);if(!t){e.setResult({session:null});return}let a=await n.select().from(i).where(L(i.sessionId,e.payload.sessionId));e.setResult({session:q(t,a)})})}function ra(e){let{bus:t,db:n}=e,{sessions:r}=P(n,G);return t.on(T.set,async e=>{let{sessionId:i,session:a,ifAbsent:o}=ht.parse(e.payload),s=Zi(a);if(o){$e(null,a);let o=M(await n.insert(r).values({sessionId:i,createdAt:a.createdAt,...s}).onConflictDoNothing());e.setResult({success:o,clientAccountChanged:o&&a.clientAccountId!==void 0}),o&&Je(t,null,a);return}for(let o=0;o<3;o++){let[o]=await n.select().from(r).where(L(r.sessionId,i)).limit(1),c=o?q(o,[]):null;if($e(c,a),M(await n.insert(r).values({sessionId:i,createdAt:a.createdAt,...s}).onConflictDoUpdate({target:r.sessionId,set:Qi(s),setWhere:ci(o,r)}))){e.setResult({success:!0,clientAccountChanged:(c?.clientAccountId??null)!==(a.clientAccountId??null)}),Je(t,c,a);return}}throw Error(`Failed to write session "${i}" with a stable client-account baseline`)})}function ia(e){let{bus:t,db:n}=e,{sessions:r,agents:i,adapterSessionClaims:a}=P(n,G);return t.on(T.delete,async e=>{let{sessionId:t}=e.payload;await N(n,async e=>{await e.delete(i).where(L(i.sessionId,t)),await e.delete(a).where(L(a.sessionId,t)),await e.delete(r).where(L(r.sessionId,t))}),e.setResult({success:!0})})}function aa(e){let{bus:t,db:n}=e,{sessions:r}=P(n,G);return t.on(T.update,async e=>{let i=gt.request.parse(e.payload),{sessionId:a}=i,o=ta(i,r),s=Di(i);if(Object.keys(o).length===0){e.setResult({success:!0,clientAccountChanged:!1});return}let{status:c,identity:l,reconciliation:u}=Yi(i,r);if(!s){let t=await n.update(r).set(o).where(F(L(r.sessionId,a),c,l,u));e.setResult({success:M(t),clientAccountChanged:!1});return}for(let s=0;s<3;s++){let[s]=await n.select().from(r).where(L(r.sessionId,a)).limit(1);if(!s){e.setResult({success:!1,clientAccountChanged:!1});return}let d=q(s,[]),f=Ei(d,i);if($e(d,f),i.expectedStatus!==void 0&&!i.expectedStatus.includes(d.status)){e.setResult({success:!1,clientAccountChanged:!1});return}if(Ke(d,i)){e.setResult({success:!1,clientAccountChanged:!1});return}if(Ye(d,i)){e.setResult({success:!1,clientAccountChanged:!1});return}if(M(await n.update(r).set(o).where(F(L(r.sessionId,a),c,l,u,ci(s,r))))){e.setResult({success:!0,clientAccountChanged:(d.clientAccountId??null)!==(f.clientAccountId??null)}),Je(t,d,f);return}}throw Error(`Failed to update session "${a}" with a stable client-account baseline`)})}function oa(e,t){let n=[];return e.status!==`all`&&n.push(L(t.status,e.status)),e.executionTargetId!==void 0&&n.push(L(t.executionTargetId,e.executionTargetId)),F(...n)}function sa(e){let{bus:t,db:n}=e,{sessions:r,agents:i}=P(n,G);return t.on(T.list,async e=>{let{status:t=`all`,limit:a,offset:o=0,includePreview:s=!1,executionTargetId:c}=e.payload,l=oa({status:t,executionTargetId:c},r),u=l?n.select().from(r).where(l):n.select().from(r),d=a===void 0?await u.orderBy(qt(r.lastActivityAt)):await u.orderBy(qt(r.lastActivityAt)).limit(a).offset(o),[f]=await(l?n.select({count:I()}).from(r).where(l):n.select({count:I()}).from(r)),p=f?.count??0;if(d.length===0){e.setResult({sessions:[],total:p});return}let m=d.map(e=>e.sessionId),h=wi(await n.select().from(i).where(R(i.sessionId,m))),{previewBySession:g,countBySession:_}=await Ti(n,m,s),v=d.map(e=>{let t=q(e,h.get(e.sessionId)??[]);return s&&g&&_?{...t,preview:{messageCount:_.get(e.sessionId)??0,firstUserMessage:g.get(e.sessionId)??null}}:t});e.setResult({sessions:v,total:p})})}function ca(e){let{bus:t,db:n}=e,{sessions:r}=P(n,G);return t.on(T.getStatusCounts,async e=>{e.payload;let t=await n.select({status:r.status,count:I()}).from(r).groupBy(r.status),i=0,a=0,o=0,s=0;for(let e of t)e.status===`active`?i=e.count:e.status===`closed`?a=e.count:e.status===`archived`?o=e.count:e.status===`discovered`&&(s=e.count);let c=i+a+o+s;e.setResult({all:c,active:i,closed:a,archived:o,discovered:s})})}function la(e,t){let n={bus:e,db:t},r=[na(n),ra(n),ia(n),aa(n),sa(n),ki(n),Oi(n),ca(n),...qi(e,t)];return()=>r.forEach(e=>e())}var X=class extends Error{result;constructor(e){super(`session ownership claim rolled back: ${e.outcome}`),this.name=`ClaimRollbackSignal`,this.result=e}};async function ua(e,t,n){let{agents:r}=t,[i]=await e.update(r).set({currencyFence:r.currencyFence}).where(L(r.agentId,n)).returning();return i}function Z(e){return B`cast(${e} as text)`}function da(e){return B`cast(${e} as bigint)`}function fa(e){return B`cast(${e} as integer)`}async function pa(e,t,n,r){let{runtimeInstanceIncarnationCounters:i,runtimeInstances:a}=t,[o]=await e.insert(i).values({machineId:n.machineId,lastAllocatedIncarnation:0}).onConflictDoUpdate({target:i.machineId,set:{lastAllocatedIncarnation:i.lastAllocatedIncarnation}}).returning({machineId:i.machineId});if(o===void 0)throw Error(`runtime incarnation allocation returned no counter for ${n.machineId}`);let[s]=await e.select().from(a).where(F(L(a.instanceId,n.instanceId),L(a.machineId,n.machineId))).limit(1);if(s!==void 0)return{instance:s,inserted:!1};let[c]=await e.update(i).set({lastAllocatedIncarnation:B`${i.lastAllocatedIncarnation} + 1`}).where(L(i.machineId,n.machineId)).returning({incarnation:i.lastAllocatedIncarnation});if(c===void 0)throw Error(`runtime incarnation counter disappeared while allocating for ${o.machineId}`);let[l]=await e.insert(a).values({instanceId:n.instanceId,machineId:n.machineId,incarnation:c.incarnation,startedAt:r,retiredAt:null}).onConflictDoNothing({target:[a.instanceId,a.machineId]}).returning();if(l!==void 0)return{instance:l,inserted:!0};let[u]=await e.select().from(a).where(F(L(a.instanceId,n.instanceId),L(a.machineId,n.machineId))).limit(1);if(u!==void 0)return{instance:u,inserted:!1};throw Error(`runtime instance ${n.instanceId}/${n.machineId} was neither inserted nor found`)}function ma(e,t){return B`(case when ${e} > ${t} then ${e} else ${t} end)`}function ha(e,t){let{adapterSessionClaims:n}=e;return B`coalesce((select max(${n.fence}) from ${n}
|
|
56
56
|
where ${L(n.agentId,t)}), 0)`}function ga(e,t){let{agents:n}=e;return B`coalesce((select ${n.currencyFence} from ${n}
|
|
57
57
|
where ${L(n.agentId,t)}), 0)`}function _a(e,t,n){return B`1 + ${ma(n,ha(e,t))}`}function va(e,t,n){return _a(e,t,ma(fa(n),ga(e,t)))}function Q(e){return{claimId:e.claimId,machineId:e.machineId,adapterId:e.adapterId,adapterName:e.adapterName,providerSessionId:e.providerSessionId,sessionId:e.sessionId,agentId:e.agentId,ownerInstanceId:e.ownerInstanceId,claimToken:e.claimToken,fence:e.fence,status:e.status,claimedAt:e.claimedAt,updatedAt:e.updatedAt}}function ya(e){return{instanceId:e.instanceId,machineId:e.machineId,incarnation:e.incarnation,startedAt:e.startedAt,retiredAt:e.retiredAt}}function ba(e,t){let{runtimeInstances:n}=P(t,G);return[e.on(k.retireInstance,async e=>{let r=await t.update(n).set({retiredAt:Date.now()}).where(F(L(n.instanceId,e.payload.instanceId),z(n.retiredAt))).returning({machineId:n.machineId});e.setResult({retiredMachines:r.length})}),e.on(k.getRuntimeInstance,async e=>{let[r]=await t.select().from(n).where(F(L(n.instanceId,e.payload.instanceId),L(n.machineId,e.payload.machineId))).limit(1);e.setResult({instance:r===void 0?null:ya(r)})})]}function xa(e){return{adapterSessionId:e.adapterSessionId??null,currentAdapterSessionId:e.currentAdapterSessionId??null,currentAdapterSessionIdState:e.currentAdapterSessionIdState}}function Sa(e,t,n,r){let{agents:i}=e;return B`exists (select 1 from ${i} where ${F(L(i.agentId,t),L(i.sessionId,n),...r===`live`?[$t(i.status,`disposed`)]:[])})`}function Ca(e,t,n,r){let{agents:i,sessions:a}=e,o={claimId:Z(n),machineId:Z(t.machineId),adapterId:Z(t.adapterId),adapterName:Z(t.adapterName),providerSessionId:Z(t.providerSessionId),sessionId:Z(t.sessionId),agentId:Z(t.agentId),ownerInstanceId:Z(t.ownerInstanceId),claimToken:Z(t.claimToken),fence:_a(e,t.agentId,B`${i.currencyFence}`),status:Z(`held`),claimedAt:da(r),updatedAt:da(r)};return B`select ${B.join(Object.values(o),B`, `)} from ${i}
|
|
58
58
|
where ${L(i.agentId,t.agentId)}
|
|
@@ -71,7 +71,7 @@ import{adapterSessionClaims as e,adapterSessionClaimsDual as t,agents as n,agent
|
|
|
71
71
|
and ${L(i.machineId,r.machineId)})
|
|
72
72
|
> (select ${i.incarnation} from ${i}
|
|
73
73
|
where ${L(i.instanceId,r.ownerInstanceId)}
|
|
74
|
-
and ${L(i.machineId,r.machineId)})`}async function Ha(e,t,n,r,i,a,o){let{adapterSessionClaims:s}=t,c=i===`named-token`?void 0:Va(t,n,i),l=o===void 0?void 0:F(L(s.claimId,o.claimId),L(s.claimToken,o.claimToken),L(s.fence,o.fence),o.ownerInstanceId===null?z(s.ownerInstanceId):L(s.ownerInstanceId,o.ownerInstanceId),L(s.status,o.status)),[u]=await e.update(s).set({claimToken:n.claimToken,fence:va(t,n.agentId,r.fence),agentId:n.agentId,sessionId:n.sessionId,adapterName:n.adapterName,ownerInstanceId:n.ownerInstanceId,status:`held`,claimedAt:a,updatedAt:a}).where(F(L(s.claimId,r.claimId),L(s.claimToken,r.claimToken),Xt(s.ownerInstanceId),Sa(t,n.agentId,n.sessionId,`live`),...c===void 0?[]:[c],...l===void 0?[]:[l])).returning();return u}async function Ua(e,t,n,r,i){if(r.ownerInstanceId===null)return;if(i)return`named-token`;if(r.status===`held`&&r.agentId===n.agentId&&r.ownerInstanceId===n.ownerInstanceId)return`same-instance`;let{runtimeInstances:a}=t,[o]=await e.select().from(a).where(F(L(a.instanceId,r.ownerInstanceId),L(a.machineId,r.machineId))).limit(1);if(o?.retiredAt!==null&&o?.retiredAt!==void 0)return`owner-retired`;if(n.topology===`machine-exclusive`){let[t]=await e.select().from(a).where(F(L(a.instanceId,n.ownerInstanceId),L(a.machineId,n.machineId))).limit(1);if(o!==void 0&&t!==void 0&&t.incarnation>o.incarnation)return`owner-superseded`}}async function Wa(e,t,n,r){if(n.recoveryGuard===void 0)return;let i=n.providerSessionId===null?void 0:await Pa(e,t,{machineId:n.machineId,adapterId:n.adapterId,providerSessionId:n.providerSessionId});return He(n,{status:r.status,adapterId:r.adapterId,runtimeOwner:r.ownerMachineId===null||r.ownerInstanceId===null?void 0:{machineId:r.ownerMachineId,instanceId:r.ownerInstanceId},recoveryAttemptId:r.recoveryAttemptId??void 0,revision:r.revision,currencyFence:r.currencyFence,currency:xa(r)},i===void 0?null:Q(i))}async function Ga(e,t,n,r){if(n.recoveryGuard!==void 0&&(r.outcome===`claimed`||r.outcome===`idempotent`)){if(n.recoveryAttemptId===void 0||n.ownerInstance===void 0)throw Error(`guarded recovery claim requires recoveryAttemptId and ownerInstance`);let[i]=await e.select().from(t.agents).where(L(t.agents.agentId,n.agentId));if(i===void 0)return{outcome:`not-found`,missing:`agent`};let a={status:i.status,adapterId:i.adapterId,...i.ownerMachineId===null||i.ownerInstanceId===null?{}:{binding:{adapterId:i.adapterId,ownerMachineId:i.ownerMachineId,ownerInstanceId:i.ownerInstanceId}},...i.recoveryAttemptId===null?{}:{recoveryAttemptId:i.recoveryAttemptId}};return await e.update(t.agents).set({status:`starting`,adapterId:n.adapterId,ownerMachineId:n.machineId,ownerInstanceId:n.ownerInstance.instanceId,recoveryAttemptId:n.recoveryAttemptId,lastActivityAt:Date.now()}).where(L(t.agents.agentId,n.agentId)),{...r,recovery:{attemptId:n.recoveryAttemptId,preimage:a}}}return r}function Ka(e,t){let n=e.recoveryGuard;if(n===void 0)throw Error(`recovery conflict requires a recovery guard`);return{outcome:`recovery-conflict`,status:n.expectedStatus,ownerGeneration:t===void 0?null:Be(Q(t))}}async function qa(e,t,n,r){let i=n.recoveryGuard?.ownerGeneration;if(i==null)throw Error(`guarded recovery takeover requires an observed owner generation`);let a=await Pa(e,t,n),o=a===void 0?null:Be(Q(a));if(a===void 0||!Ve(o,i))return Ka(n,a);let s=await Ua(e,t,n,a,n.supersedes?.claimToken===a.claimToken);if(s===void 0)return Ka(n,a);let c=await r(a,s);return c===void 0||c.outcome===`already-claimed`?Ka(n,c===void 0?void 0:await Pa(e,t,n)):c}function Ja(e,t){let{agents:n,adapterSessionClaims:r}=e,{target:i}=t,a=B`(${i.currentAdapterSessionId===null?z(n.currentAdapterSessionId):L(n.currentAdapterSessionId,i.currentAdapterSessionId)} and ${L(n.currentAdapterSessionIdState,i.currentAdapterSessionIdState)} and ${L(n.currencyFence,t.fence)})`;return F(L(n.agentId,t.agentId),$t(n.status,`disposed`),L(n.revision,t.expectedRevision),Qt(n.currencyFence,t.fence),B`exists (select 1 from ${r} where ${F(L(r.claimToken,t.claimToken),L(r.agentId,t.agentId),L(r.sessionId,n.sessionId),L(r.status,`held`),L(r.fence,t.fence))})`,en(a))}function Ya(e,t,n){if(t.status===`disposed`)return{outcome:`agent-disposed`};if(e===void 0||e.agentId!==n.agentId||e.sessionId!==t.sessionId||e.status!==`held`||e.fence!==n.fence)return{outcome:`not-owner`};if(n.fence<t.currencyFence)return{outcome:`superseded`,currentFence:t.currencyFence};let r=xa(t);return r.currentAdapterSessionId===n.target.currentAdapterSessionId&&r.currentAdapterSessionIdState===n.target.currentAdapterSessionIdState&&t.currencyFence===n.fence?{outcome:`idempotent`,revision:t.revision,currency:r,sessionSnapshotUpdated:!1}:{outcome:`currency-changed`,revision:t.revision,currency:r}}async function Xa(e,t,n){let r=await Ia(e,t,n.agentId);return r===void 0?{outcome:`not-found`}:Ya(await Fa(e,t,n.claimToken),r,n)}async function Za(e,t,n){let{adapterSessionClaims:r}=t;return(await e.update(r).set({updatedAt:r.updatedAt}).where(L(r.claimToken,n)).returning({claimId:r.claimId})).length>0}async function Qa(e,t,n){let{agents:r,sessions:i}=t,{target:a}=n,[o]=await e.update(r).set({currentAdapterSessionId:a.currentAdapterSessionId,currentAdapterSessionIdState:a.currentAdapterSessionIdState,currencyFence:n.fence,revision:n.expectedRevision+1,lastActivityAt:Date.now()}).where(Ja(t,n)).returning();if(o===void 0)return Xa(e,t,n);let s=await e.update(i).set({...wa(t,n.agentId)}).where(F(L(i.sessionId,o.sessionId),L(i.leadAgentId,n.agentId))).returning({sessionId:i.sessionId});return{outcome:`settled`,revision:n.expectedRevision+1,currency:{adapterSessionId:o.adapterSessionId??null,...a},sessionSnapshotUpdated:s.length>0}}async function $a(e,t){let n=P(e,G);return N(e,async e=>await ua(e,n,t.agentId)===void 0?{outcome:`not-found`}:await Za(e,n,t.claimToken)?Qa(e,n,t):Xa(e,n,t))}var eo=class extends Error{result;constructor(e){super(`session ownership movement rolled back: ${e.outcome}`),this.name=`MovementRollbackSignal`,this.result=e}};function to(e,t){if(e.kind===`confirmed`)return{providerSessionId:e.providerSessionId,currency:{currentAdapterSessionId:e.providerSessionId,currentAdapterSessionIdState:`confirmed`}};let n=Dt(xa(t));return n===null?null:{providerSessionId:n,currency:{currentAdapterSessionId:null,currentAdapterSessionIdState:`moved`}}}async function no(e,t,n){let{adapterSessionClaims:r}=t,[i]=await e.select().from(r).where(F(L(r.machineId,n.machineId),L(r.adapterId,n.adapterId),L(r.providerSessionId,n.providerSessionId),L(r.agentId,n.agentId),L(r.status,`held`),tn(L(r.ownerInstanceId,n.ownerInstanceId),z(r.ownerInstanceId)))).limit(1);return i}async function ro(e,t,n,r){if(n.ownerInstanceId!==null)return n;let{adapterSessionClaims:i}=t,[a]=await e.update(i).set({ownerInstanceId:r}).where(F(L(i.claimId,n.claimId),z(i.ownerInstanceId))).returning();if(a===void 0)throw Error(`locked legacy movement generation disappeared before adoption`);return a}async function io(e,t,n,r){for(let i=0;i<2;i+=1){let i=await Ba(e,t,n,r);if(i!==void 0)return i;let a=await Pa(e,t,n);if(a===void 0){let r=await za(e,t,n);if(r.kind===`refused`)throw new eo(r.result.outcome===`agent-disposed`?{outcome:`agent-disposed`}:{outcome:`not-found`});continue}let o=await Ua(e,t,n,a,!1);if(o!==void 0){let i=await Ha(e,t,n,a,o,r);if(i!==void 0)return i;let s=await Pa(e,t,n);if(s===void 0)continue;throw new eo({outcome:`already-claimed`,holder:Q(s)})}throw new eo({outcome:`already-claimed`,holder:Q(a)})}throw Error(`session ownership movement could not acquire the key ${n.machineId}/${n.adapterId}/${n.providerSessionId}: it was taken and freed by a competitor on every attempt`)}async function ao(e,t,n,r){let{adapterSessionClaims:i}=t;return(await e.delete(i).where(F(L(i.agentId,n),L(i.status,`held`),$t(i.claimId,r))).returning({providerSessionId:i.providerSessionId})).map(e=>e.providerSessionId)}function oo(e,t){return e.outcome===`idempotent`?{outcome:`idempotent`,revision:e.revision,currency:e.currency,sessionSnapshotUpdated:!1,claim:Q(t)}:e}function so(e,t){if(t)throw new eo(e);return e}function co(e,t,n){return{machineId:e.machineId,adapterId:e.adapterId,adapterName:e.adapterName,providerSessionId:n,sessionId:e.sessionId,agentId:e.agentId,ownerInstanceId:t,topology:e.topology,claimToken:e.movement.claimToken}}async function lo(e,t){let n=P(e,G),r=Date.now(),i=t.ownerInstance;if(i===void 0)throw Error(`session ownership movement requires ownerInstance`);try{return await N(e,async a=>{let o=await pa(a,n,{instanceId:i.instanceId,machineId:t.machineId},r),s=await ua(a,n,t.agentId);if(s===void 0||s.sessionId!==t.sessionId)return so({outcome:`not-found`},o.inserted);if(s.status===`disposed`)return so({outcome:`agent-disposed`},o.inserted);let c=to(t.movement,s);if(c===null)return so({outcome:`idempotent`,revision:s.revision,currency:xa(s),sessionSnapshotUpdated:!1,claim:null},o.inserted);let l=co(t,i.instanceId,c.providerSessionId);await Bt(e,a,[Ma(l),...await ja(a,n,t.agentId)]);let u=await no(a,n,l)??await io(a,n,l,r),d=t.movement.kind===`confirmed`?await ao(a,n,t.agentId,u.claimId):[],f=await Qa(a,n,{agentId:t.agentId,claimToken:u.claimToken,fence:u.fence,expectedRevision:t.expectedRevision,target:c.currency});if(f.outcome!==`settled`)throw new eo(oo(f,u));let p=await ro(a,n,u,i.instanceId);return{outcome:`settled`,revision:f.revision,currency:f.currency,sessionSnapshotUpdated:f.sessionSnapshotUpdated,releasedProviderSessionIds:d,claim:Q(p)}})}catch(e){if(e instanceof eo)return e.result;throw e}}async function uo(e,t,n){let{sessions:r}=t,[i]=await e.update(r).set({lastActivityAt:r.lastActivityAt}).where(L(r.sessionId,n)).returning({leadAgentId:r.leadAgentId,status:r.status});return i===void 0?void 0:{leadAgentId:i.leadAgentId??null,status:i.status}}function fo(e,t,n,r){let{sessions:i}=e,a=n===null?z(i.leadAgentId):L(i.leadAgentId,n);return r?a:tn(a,L(i.leadAgentId,t.agentId))}async function po(e,t,n){let{sessions:r}=t,i=await uo(e,t,n.sessionId);if(i===void 0)throw new X({outcome:`not-found`,missing:`session`});if(i.status!==`active`&&(i.status!==`closed`||!wt(n)))throw new X({outcome:`session-not-active`,status:i.status});let a=i.leadAgentId,o=n.designateLead;if(o===void 0)return{leadDesignated:!1,previousLeadAgentId:a};let s=o.clear===!0,c=s?null:n.agentId,l=s?`any-status`:`live`,u=c!==a;return(await e.update(r).set({leadAgentId:c,...s||!u?{}:wa(t,n.agentId)}).where(F(L(r.sessionId,n.sessionId),fo(t,n,o.expectedLeadAgentId,s),Sa(t,n.agentId,n.sessionId,l))).returning({leadAgentId:r.leadAgentId})).length===0?mo(e,t,n,a,l):{leadDesignated:u,previousLeadAgentId:a}}async function mo(e,t,n,r,i){let a=await za(e,t,n);throw a.kind===`refused`&&!(i===`any-status`&&a.result.outcome===`agent-disposed`)?new X(a.result):new X(Da(r))}async function ho(e,t,n,r,i,a){let o=await Ha(e,t,n,r,i,a,n.recoveryGuard?.ownerGeneration??void 0);if(o!==void 0)return Oa(`claimed`,o,await po(e,t,n));let s=await Pa(e,t,n);if(s===void 0)return _o;if(s.claimToken===r.claimToken){let r=await za(e,t,n);if(r.kind===`refused`)return r.result}return{outcome:`already-claimed`,holder:Q(s)}}async function go(e,t,n,r){if(r.status!==`held`)return{outcome:`already-claimed`,holder:Q(r)};let i=await za(e,t,n);return i.kind===`refused`?i.result:Oa(`idempotent`,r,await po(e,t,n))}const _o=Symbol(`retry-acquisition`);async function vo(e,t,n,r){if(n.recoveryGuard?.ownerGeneration)return qa(e,t,n,async(i,a)=>{let o=await ho(e,t,n,i,a,r);return o===_o?void 0:o});let i=await Ba(e,t,n,r);if(i!==void 0)return Oa(`claimed`,i,await po(e,t,n));let a=await Pa(e,t,n);if(n.recoveryGuard!==void 0)return Ka(n,a);if(a===void 0){let r=await za(e,t,n);return r.kind===`refused`?r.result:_o}if(a.claimToken===n.claimToken)return a.agentId===n.agentId&&a.sessionId===n.sessionId?go(e,t,n,a):{outcome:`already-claimed`,holder:Q(a)};let o=await Ua(e,t,n,a,n.supersedes?.claimToken===a.claimToken);return o===void 0?{outcome:`already-claimed`,holder:Q(a)}:ho(e,t,n,a,o,r)}async function yo(e,t,n,r){return r.sessionId===n.sessionId?r.status===`disposed`&&n.designateLead?.clear!==!0?{outcome:`agent-disposed`}:Oa(`claimed`,null,await po(e,t,n)):{outcome:`not-found`,missing:`agent`}}async function bo(e,t,n){let r=await ua(e,t,n.agentId);if(r!==void 0)return{kind:`ok`,agent:r};let i=await za(e,t,n);if(i.kind===`refused`)return{kind:`refused`,result:i.result};let a=await ua(e,t,n.agentId);return a===void 0?{kind:`refused`,result:{outcome:`not-found`,missing:`agent`}}:{kind:`ok`,agent:a}}async function xo(e,t,n,r,i){let a;if(n.recoveryGuard!==void 0){if(r===void 0)throw Error(`guarded recovery claim requires ownerInstance`);a=await pa(e,t,{instanceId:r.instanceId,machineId:n.machineId},i)}let o=await bo(e,t,n);if(o.kind===`refused`){if(a!==void 0)throw new X(o.result);return o.result}let s=await Wa(e,t,n,o.agent);if(s!==void 0){if(a!==void 0)throw new X(s);return s}let c=await yo(e,t,n,o.agent);if(a!==void 0&&c.outcome!==`claimed`)throw new X(c);return Ga(e,t,n,c)}async function So(e,t){let n=Tt(t),r=P(e,G),i=Date.now(),a=n.ownerInstance;if(n.providerSessionId!==null&&a===void 0)throw Error(`keyed session ownership claim requires ownerInstance`);if(n.recoveryGuard!==void 0&&a===void 0)throw Error(`guarded recovery claim requires ownerInstance`);try{return await N(e,async t=>{let{providerSessionId:o}=n;if(o!==null){if(a===void 0)throw Error(`keyed session ownership claim requires ownerInstance`);let s=await pa(t,r,{instanceId:a.instanceId,machineId:n.machineId},i),c=await bo(t,r,n);if(c.kind===`refused`){if(s.inserted)throw new X(c.result);return c.result}let l={...n,providerSessionId:o,ownerInstance:a,ownerInstanceId:a.instanceId};if(await Bt(e,t,[Ma(l)]),n.recoveryGuard!==void 0){let e=await Wa(t,r,n,c.agent);if(e!==void 0){if(s.inserted)throw new X(e);return e}}for(let e=0;e<2;e+=1){let e=await vo(t,r,l,i);if(e!==_o){if(s.inserted&&e.outcome!==`claimed`)throw new X(e);return Ga(t,r,n,e)}}throw Error(`session ownership claim could not be acquired: the key ${n.machineId}/${n.adapterId}/${o} was taken and freed by a competitor on every attempt`)}return xo(t,r,n,a,i)})}catch(e){if(e instanceof X)return e.result;throw e}}async function Co(e,t){let n=P(e,G),{adapterSessionClaims:r}=n,i=Date.now();return N(e,async e=>{await ua(e,n,t.agentId);let a=t.claimToken===void 0?L(r.agentId,t.agentId):F(L(r.agentId,t.agentId),L(r.claimToken,t.claimToken));if(t.disposition===`released`){let n=await e.delete(r).where(a).returning({providerSessionId:r.providerSessionId});return{releasedProviderSessionIds:n.map(e=>e.providerSessionId),markedClaims:[],claimTokenNotFound:t.claimToken!==void 0&&n.length===0}}let o=await e.update(r).set({status:t.disposition,updatedAt:i}).where(a).returning();return{releasedProviderSessionIds:[],markedClaims:o.map(Q),claimTokenNotFound:t.claimToken!==void 0&&o.length===0}})}function wo(e,t){let n=[...Ea(e,t),e.on(k.claim,async e=>{e.setResult(await So(t,e.payload))}),e.on(k.finalizeRecovery,async e=>{e.setResult(await Na(t,e.payload))}),e.on(k.settleCurrency,async e=>{e.setResult(await $a(t,e.payload))}),e.on(k.settleMovement,async e=>{let n=gt.parse(e.payload);e.setResult(await lo(t,n))}),e.on(k.release,async e=>{e.setResult(await Ra(t,e.payload))}),e.on(k.releaseAgentClaims,async e=>{e.setResult(await Co(t,e.payload))}),...ba(e,t)];return()=>{for(let e=n.length-1;e>=0;--e)n[e]?.()}}async function To(e,t){if(t.length===0)return new Map;let{agents:n}=P(e,G),r=[...new Set(t)],i=await e.select().from(n).where(R(n.sessionId,r)),a=new Map;for(let e of i){let t=a.get(e.sessionId)??[];t.push(e),a.set(e.sessionId,t)}return a}async function Eo(e,t){return Gt(e).fts.fetchFirstUserMessagePreviews(e,t)}async function Do(e,t){if(t.length===0)return new Map;let{messages:n}=P(e,f),r=[...new Set(t)],i=await e.select({sessionId:n.sessionId,count:I()}).from(n).where(R(n.sessionId,r)).groupBy(n.sessionId),a=new Map;for(let e of i)a.set(e.sessionId,e.count);return a}function Oo(e){if(e)try{let t=JSON.parse(e);return!t||typeof t!=`object`||Array.isArray(t)?void 0:t}catch{return}}function ko(e){if(e!==null)try{let t=typeof e==`string`?JSON.parse(e):e,n=_t.safeParse(t);return n.success?n.data:void 0}catch{return}}function Ao(e,t,n,r){return{sessionId:e.session_id,createdAt:e.created_at,lastActivityAt:e.last_activity_at,status:e.status,title:e.title??void 0,leadAgentId:e.lead_agent_id??void 0,parentSessionId:e.parent_session_id??void 0,rootSessionId:e.root_session_id??void 0,forkPointMessageId:e.fork_point_message_id??void 0,branchKind:e.branch_kind??void 0,adapterName:e.adapter_name??void 0,adapterSessionId:e.adapter_session_id??void 0,adapterId:e.adapter_id??void 0,isOrchestrated:e.is_orchestrated===null?void 0:!!e.is_orchestrated,isImported:e.is_imported===null?void 0:!!e.is_imported,summary:e.summary??void 0,summaryUpdatedAt:e.summary_updated_at??void 0,forkTransforms:Oo(e.fork_transforms),targetWorkingDirectory:e.target_working_directory??void 0,metadata:ko(e.metadata),machineId:e.machine_id??void 0,agents:t.map(e=>({agentId:e.agentId,adapterId:e.adapterId,adapterName:e.adapterName,sessionId:e.sessionId,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})),preview:{messageCount:r.get(e.session_id)??0,firstUserMessage:n.get(e.session_id)??null}}}function jo(e,t){let n=Gt(t).fts,r=[];return r.push(e.on(T.search,async e=>{let{query:r,limit:i=20,status:a=`all`,isImported:o}=e.payload,s=r.trim();if(!s){e.setResult({sessions:[],total:0});return}let c={query:s,likePattern:`%${s.toLowerCase()}%`,status:a===`all`?void 0:a,isImported:o},l=await n.searchSessionRows(t,{...c,limit:i});if(l.length===0){e.setResult({sessions:[],total:0});return}let u=await n.countSessionMatches(t,c),d=l.map(e=>e.session_id),f=await To(t,d),p=await Eo(t,d),m=await Do(t,d),h=l.map(e=>Ao(e,f.get(e.session_id)??[],p,m));e.setResult({sessions:h,total:u})})),()=>r.forEach(e=>e())}async function Mo(e,t){return(await Ut(e).all(B`
|
|
74
|
+
and ${L(i.machineId,r.machineId)})`}async function Ha(e,t,n,r,i,a,o){let{adapterSessionClaims:s}=t,c=i===`named-token`?void 0:Va(t,n,i),l=o===void 0?void 0:F(L(s.claimId,o.claimId),L(s.claimToken,o.claimToken),L(s.fence,o.fence),o.ownerInstanceId===null?z(s.ownerInstanceId):L(s.ownerInstanceId,o.ownerInstanceId),L(s.status,o.status)),[u]=await e.update(s).set({claimToken:n.claimToken,fence:va(t,n.agentId,r.fence),agentId:n.agentId,sessionId:n.sessionId,adapterName:n.adapterName,ownerInstanceId:n.ownerInstanceId,status:`held`,claimedAt:a,updatedAt:a}).where(F(L(s.claimId,r.claimId),L(s.claimToken,r.claimToken),Xt(s.ownerInstanceId),Sa(t,n.agentId,n.sessionId,`live`),...c===void 0?[]:[c],...l===void 0?[]:[l])).returning();return u}async function Ua(e,t,n,r,i){if(r.ownerInstanceId===null)return;if(i)return`named-token`;if(r.status===`held`&&r.agentId===n.agentId&&r.ownerInstanceId===n.ownerInstanceId)return`same-instance`;let{runtimeInstances:a}=t,[o]=await e.select().from(a).where(F(L(a.instanceId,r.ownerInstanceId),L(a.machineId,r.machineId))).limit(1);if(o?.retiredAt!==null&&o?.retiredAt!==void 0)return`owner-retired`;if(n.topology===`machine-exclusive`){let[t]=await e.select().from(a).where(F(L(a.instanceId,n.ownerInstanceId),L(a.machineId,n.machineId))).limit(1);if(o!==void 0&&t!==void 0&&t.incarnation>o.incarnation)return`owner-superseded`}}async function Wa(e,t,n,r){if(n.recoveryGuard===void 0)return;let i=n.providerSessionId===null?void 0:await Pa(e,t,{machineId:n.machineId,adapterId:n.adapterId,providerSessionId:n.providerSessionId});return He(n,{status:r.status,adapterId:r.adapterId,runtimeOwner:r.ownerMachineId===null||r.ownerInstanceId===null?void 0:{machineId:r.ownerMachineId,instanceId:r.ownerInstanceId},recoveryAttemptId:r.recoveryAttemptId??void 0,revision:r.revision,currencyFence:r.currencyFence,currency:xa(r)},i===void 0?null:Q(i))}async function Ga(e,t,n,r){if(n.recoveryGuard!==void 0&&(r.outcome===`claimed`||r.outcome===`idempotent`)){if(n.recoveryAttemptId===void 0||n.ownerInstance===void 0)throw Error(`guarded recovery claim requires recoveryAttemptId and ownerInstance`);let[i]=await e.select().from(t.agents).where(L(t.agents.agentId,n.agentId));if(i===void 0)return{outcome:`not-found`,missing:`agent`};let a={status:i.status,adapterId:i.adapterId,...i.ownerMachineId===null||i.ownerInstanceId===null?{}:{binding:{adapterId:i.adapterId,ownerMachineId:i.ownerMachineId,ownerInstanceId:i.ownerInstanceId}},...i.recoveryAttemptId===null?{}:{recoveryAttemptId:i.recoveryAttemptId}};return await e.update(t.agents).set({status:`starting`,adapterId:n.adapterId,ownerMachineId:n.machineId,ownerInstanceId:n.ownerInstance.instanceId,recoveryAttemptId:n.recoveryAttemptId,lastActivityAt:Date.now()}).where(L(t.agents.agentId,n.agentId)),{...r,recovery:{attemptId:n.recoveryAttemptId,preimage:a}}}return r}function Ka(e,t){let n=e.recoveryGuard;if(n===void 0)throw Error(`recovery conflict requires a recovery guard`);return{outcome:`recovery-conflict`,status:n.expectedStatus,ownerGeneration:t===void 0?null:Be(Q(t))}}async function qa(e,t,n,r){let i=n.recoveryGuard?.ownerGeneration;if(i==null)throw Error(`guarded recovery takeover requires an observed owner generation`);let a=await Pa(e,t,n),o=a===void 0?null:Be(Q(a));if(a===void 0||!Ve(o,i))return Ka(n,a);let s=await Ua(e,t,n,a,n.supersedes?.claimToken===a.claimToken);if(s===void 0)return Ka(n,a);let c=await r(a,s);return c===void 0||c.outcome===`already-claimed`?Ka(n,c===void 0?void 0:await Pa(e,t,n)):c}function Ja(e,t){let{agents:n,adapterSessionClaims:r}=e,{target:i}=t,a=B`(${i.currentAdapterSessionId===null?z(n.currentAdapterSessionId):L(n.currentAdapterSessionId,i.currentAdapterSessionId)} and ${L(n.currentAdapterSessionIdState,i.currentAdapterSessionIdState)} and ${L(n.currencyFence,t.fence)})`;return F(L(n.agentId,t.agentId),$t(n.status,`disposed`),L(n.revision,t.expectedRevision),Qt(n.currencyFence,t.fence),B`exists (select 1 from ${r} where ${F(L(r.claimToken,t.claimToken),L(r.agentId,t.agentId),L(r.sessionId,n.sessionId),L(r.status,`held`),L(r.fence,t.fence))})`,en(a))}function Ya(e,t,n){if(t.status===`disposed`)return{outcome:`agent-disposed`};if(e===void 0||e.agentId!==n.agentId||e.sessionId!==t.sessionId||e.status!==`held`||e.fence!==n.fence)return{outcome:`not-owner`};if(n.fence<t.currencyFence)return{outcome:`superseded`,currentFence:t.currencyFence};let r=xa(t);return r.currentAdapterSessionId===n.target.currentAdapterSessionId&&r.currentAdapterSessionIdState===n.target.currentAdapterSessionIdState&&t.currencyFence===n.fence?{outcome:`idempotent`,revision:t.revision,currency:r,sessionSnapshotUpdated:!1}:{outcome:`currency-changed`,revision:t.revision,currency:r}}async function Xa(e,t,n){let r=await Ia(e,t,n.agentId);return r===void 0?{outcome:`not-found`}:Ya(await Fa(e,t,n.claimToken),r,n)}async function Za(e,t,n){let{adapterSessionClaims:r}=t;return(await e.update(r).set({updatedAt:r.updatedAt}).where(L(r.claimToken,n)).returning({claimId:r.claimId})).length>0}async function Qa(e,t,n){let{agents:r,sessions:i}=t,{target:a}=n,[o]=await e.update(r).set({currentAdapterSessionId:a.currentAdapterSessionId,currentAdapterSessionIdState:a.currentAdapterSessionIdState,currencyFence:n.fence,revision:n.expectedRevision+1,lastActivityAt:Date.now()}).where(Ja(t,n)).returning();if(o===void 0)return Xa(e,t,n);let s=await e.update(i).set({...wa(t,n.agentId)}).where(F(L(i.sessionId,o.sessionId),L(i.leadAgentId,n.agentId))).returning({sessionId:i.sessionId});return{outcome:`settled`,revision:n.expectedRevision+1,currency:{adapterSessionId:o.adapterSessionId??null,...a},sessionSnapshotUpdated:s.length>0}}async function $a(e,t){let n=P(e,G);return N(e,async e=>await ua(e,n,t.agentId)===void 0?{outcome:`not-found`}:await Za(e,n,t.claimToken)?Qa(e,n,t):Xa(e,n,t))}var eo=class extends Error{result;constructor(e){super(`session ownership movement rolled back: ${e.outcome}`),this.name=`MovementRollbackSignal`,this.result=e}};function to(e,t){if(e.kind===`confirmed`)return{providerSessionId:e.providerSessionId,currency:{currentAdapterSessionId:e.providerSessionId,currentAdapterSessionIdState:`confirmed`}};let n=wt(xa(t));return n===null?null:{providerSessionId:n,currency:{currentAdapterSessionId:null,currentAdapterSessionIdState:`moved`}}}async function no(e,t,n){let{adapterSessionClaims:r}=t,[i]=await e.select().from(r).where(F(L(r.machineId,n.machineId),L(r.adapterId,n.adapterId),L(r.providerSessionId,n.providerSessionId),L(r.agentId,n.agentId),L(r.status,`held`),tn(L(r.ownerInstanceId,n.ownerInstanceId),z(r.ownerInstanceId)))).limit(1);return i}async function ro(e,t,n,r){if(n.ownerInstanceId!==null)return n;let{adapterSessionClaims:i}=t,[a]=await e.update(i).set({ownerInstanceId:r}).where(F(L(i.claimId,n.claimId),z(i.ownerInstanceId))).returning();if(a===void 0)throw Error(`locked legacy movement generation disappeared before adoption`);return a}async function io(e,t,n,r){for(let i=0;i<2;i+=1){let i=await Ba(e,t,n,r);if(i!==void 0)return i;let a=await Pa(e,t,n);if(a===void 0){let r=await za(e,t,n);if(r.kind===`refused`)throw new eo(r.result.outcome===`agent-disposed`?{outcome:`agent-disposed`}:{outcome:`not-found`});continue}let o=await Ua(e,t,n,a,!1);if(o!==void 0){let i=await Ha(e,t,n,a,o,r);if(i!==void 0)return i;let s=await Pa(e,t,n);if(s===void 0)continue;throw new eo({outcome:`already-claimed`,holder:Q(s)})}throw new eo({outcome:`already-claimed`,holder:Q(a)})}throw Error(`session ownership movement could not acquire the key ${n.machineId}/${n.adapterId}/${n.providerSessionId}: it was taken and freed by a competitor on every attempt`)}async function ao(e,t,n,r){let{adapterSessionClaims:i}=t;return(await e.delete(i).where(F(L(i.agentId,n),L(i.status,`held`),$t(i.claimId,r))).returning({providerSessionId:i.providerSessionId})).map(e=>e.providerSessionId)}function oo(e,t){return e.outcome===`idempotent`?{outcome:`idempotent`,revision:e.revision,currency:e.currency,sessionSnapshotUpdated:!1,claim:Q(t)}:e}function so(e,t){if(t)throw new eo(e);return e}function co(e,t,n){return{machineId:e.machineId,adapterId:e.adapterId,adapterName:e.adapterName,providerSessionId:n,sessionId:e.sessionId,agentId:e.agentId,ownerInstanceId:t,topology:e.topology,claimToken:e.movement.claimToken}}async function lo(e,t){let n=P(e,G),r=Date.now(),i=t.ownerInstance;if(i===void 0)throw Error(`session ownership movement requires ownerInstance`);try{return await N(e,async a=>{let o=await pa(a,n,{instanceId:i.instanceId,machineId:t.machineId},r),s=await ua(a,n,t.agentId);if(s===void 0||s.sessionId!==t.sessionId)return so({outcome:`not-found`},o.inserted);if(s.status===`disposed`)return so({outcome:`agent-disposed`},o.inserted);let c=to(t.movement,s);if(c===null)return so({outcome:`idempotent`,revision:s.revision,currency:xa(s),sessionSnapshotUpdated:!1,claim:null},o.inserted);let l=co(t,i.instanceId,c.providerSessionId);await Bt(e,a,[Ma(l),...await ja(a,n,t.agentId)]);let u=await no(a,n,l)??await io(a,n,l,r),d=t.movement.kind===`confirmed`?await ao(a,n,t.agentId,u.claimId):[],f=await Qa(a,n,{agentId:t.agentId,claimToken:u.claimToken,fence:u.fence,expectedRevision:t.expectedRevision,target:c.currency});if(f.outcome!==`settled`)throw new eo(oo(f,u));let p=await ro(a,n,u,i.instanceId);return{outcome:`settled`,revision:f.revision,currency:f.currency,sessionSnapshotUpdated:f.sessionSnapshotUpdated,releasedProviderSessionIds:d,claim:Q(p)}})}catch(e){if(e instanceof eo)return e.result;throw e}}async function uo(e,t,n){let{sessions:r}=t,[i]=await e.update(r).set({lastActivityAt:r.lastActivityAt}).where(L(r.sessionId,n)).returning({leadAgentId:r.leadAgentId,status:r.status});return i===void 0?void 0:{leadAgentId:i.leadAgentId??null,status:i.status}}function fo(e,t,n,r){let{sessions:i}=e,a=n===null?z(i.leadAgentId):L(i.leadAgentId,n);return r?a:tn(a,L(i.leadAgentId,t.agentId))}async function po(e,t,n){let{sessions:r}=t,i=await uo(e,t,n.sessionId);if(i===void 0)throw new X({outcome:`not-found`,missing:`session`});if(i.status!==`active`&&(i.status!==`closed`||!xt(n)))throw new X({outcome:`session-not-active`,status:i.status});let a=i.leadAgentId,o=n.designateLead;if(o===void 0)return{leadDesignated:!1,previousLeadAgentId:a};let s=o.clear===!0,c=s?null:n.agentId,l=s?`any-status`:`live`,u=c!==a;return(await e.update(r).set({leadAgentId:c,...s||!u?{}:wa(t,n.agentId)}).where(F(L(r.sessionId,n.sessionId),fo(t,n,o.expectedLeadAgentId,s),Sa(t,n.agentId,n.sessionId,l))).returning({leadAgentId:r.leadAgentId})).length===0?mo(e,t,n,a,l):{leadDesignated:u,previousLeadAgentId:a}}async function mo(e,t,n,r,i){let a=await za(e,t,n);throw a.kind===`refused`&&!(i===`any-status`&&a.result.outcome===`agent-disposed`)?new X(a.result):new X(Da(r))}async function ho(e,t,n,r,i,a){let o=await Ha(e,t,n,r,i,a,n.recoveryGuard?.ownerGeneration??void 0);if(o!==void 0)return Oa(`claimed`,o,await po(e,t,n));let s=await Pa(e,t,n);if(s===void 0)return _o;if(s.claimToken===r.claimToken){let r=await za(e,t,n);if(r.kind===`refused`)return r.result}return{outcome:`already-claimed`,holder:Q(s)}}async function go(e,t,n,r){if(r.status!==`held`)return{outcome:`already-claimed`,holder:Q(r)};let i=await za(e,t,n);return i.kind===`refused`?i.result:Oa(`idempotent`,r,await po(e,t,n))}const _o=Symbol(`retry-acquisition`);async function vo(e,t,n,r){if(n.recoveryGuard?.ownerGeneration)return qa(e,t,n,async(i,a)=>{let o=await ho(e,t,n,i,a,r);return o===_o?void 0:o});let i=await Ba(e,t,n,r);if(i!==void 0)return Oa(`claimed`,i,await po(e,t,n));let a=await Pa(e,t,n);if(n.recoveryGuard!==void 0)return Ka(n,a);if(a===void 0){let r=await za(e,t,n);return r.kind===`refused`?r.result:_o}if(a.claimToken===n.claimToken)return a.agentId===n.agentId&&a.sessionId===n.sessionId?go(e,t,n,a):{outcome:`already-claimed`,holder:Q(a)};let o=await Ua(e,t,n,a,n.supersedes?.claimToken===a.claimToken);return o===void 0?{outcome:`already-claimed`,holder:Q(a)}:ho(e,t,n,a,o,r)}async function yo(e,t,n,r){return r.sessionId===n.sessionId?r.status===`disposed`&&n.designateLead?.clear!==!0?{outcome:`agent-disposed`}:Oa(`claimed`,null,await po(e,t,n)):{outcome:`not-found`,missing:`agent`}}async function bo(e,t,n){let r=await ua(e,t,n.agentId);if(r!==void 0)return{kind:`ok`,agent:r};let i=await za(e,t,n);if(i.kind===`refused`)return{kind:`refused`,result:i.result};let a=await ua(e,t,n.agentId);return a===void 0?{kind:`refused`,result:{outcome:`not-found`,missing:`agent`}}:{kind:`ok`,agent:a}}async function xo(e,t,n,r,i){let a;if(n.recoveryGuard!==void 0){if(r===void 0)throw Error(`guarded recovery claim requires ownerInstance`);a=await pa(e,t,{instanceId:r.instanceId,machineId:n.machineId},i)}let o=await bo(e,t,n);if(o.kind===`refused`){if(a!==void 0)throw new X(o.result);return o.result}let s=await Wa(e,t,n,o.agent);if(s!==void 0){if(a!==void 0)throw new X(s);return s}let c=await yo(e,t,n,o.agent);if(a!==void 0&&c.outcome!==`claimed`)throw new X(c);return Ga(e,t,n,c)}async function So(e,t){let n=St(t),r=P(e,G),i=Date.now(),a=n.ownerInstance;if(n.providerSessionId!==null&&a===void 0)throw Error(`keyed session ownership claim requires ownerInstance`);if(n.recoveryGuard!==void 0&&a===void 0)throw Error(`guarded recovery claim requires ownerInstance`);try{return await N(e,async t=>{let{providerSessionId:o}=n;if(o!==null){if(a===void 0)throw Error(`keyed session ownership claim requires ownerInstance`);let s=await pa(t,r,{instanceId:a.instanceId,machineId:n.machineId},i),c=await bo(t,r,n);if(c.kind===`refused`){if(s.inserted)throw new X(c.result);return c.result}let l={...n,providerSessionId:o,ownerInstance:a,ownerInstanceId:a.instanceId};if(await Bt(e,t,[Ma(l)]),n.recoveryGuard!==void 0){let e=await Wa(t,r,n,c.agent);if(e!==void 0){if(s.inserted)throw new X(e);return e}}for(let e=0;e<2;e+=1){let e=await vo(t,r,l,i);if(e!==_o){if(s.inserted&&e.outcome!==`claimed`)throw new X(e);return Ga(t,r,n,e)}}throw Error(`session ownership claim could not be acquired: the key ${n.machineId}/${n.adapterId}/${o} was taken and freed by a competitor on every attempt`)}return xo(t,r,n,a,i)})}catch(e){if(e instanceof X)return e.result;throw e}}async function Co(e,t){let n=P(e,G),{adapterSessionClaims:r}=n,i=Date.now();return N(e,async e=>{await ua(e,n,t.agentId);let a=t.claimToken===void 0?L(r.agentId,t.agentId):F(L(r.agentId,t.agentId),L(r.claimToken,t.claimToken));if(t.disposition===`released`){let n=await e.delete(r).where(a).returning({providerSessionId:r.providerSessionId});return{releasedProviderSessionIds:n.map(e=>e.providerSessionId),markedClaims:[],claimTokenNotFound:t.claimToken!==void 0&&n.length===0}}let o=await e.update(r).set({status:t.disposition,updatedAt:i}).where(a).returning();return{releasedProviderSessionIds:[],markedClaims:o.map(Q),claimTokenNotFound:t.claimToken!==void 0&&o.length===0}})}function wo(e,t){let n=[...Ea(e,t),e.on(k.claim,async e=>{e.setResult(await So(t,e.payload))}),e.on(k.finalizeRecovery,async e=>{e.setResult(await Na(t,e.payload))}),e.on(k.settleCurrency,async e=>{e.setResult(await $a(t,e.payload))}),e.on(k.settleMovement,async e=>{let n=pt.parse(e.payload);e.setResult(await lo(t,n))}),e.on(k.release,async e=>{e.setResult(await Ra(t,e.payload))}),e.on(k.releaseAgentClaims,async e=>{e.setResult(await Co(t,e.payload))}),...ba(e,t)];return()=>{for(let e=n.length-1;e>=0;--e)n[e]?.()}}async function To(e,t){if(t.length===0)return new Map;let{agents:n}=P(e,G),r=[...new Set(t)],i=await e.select().from(n).where(R(n.sessionId,r)),a=new Map;for(let e of i){let t=a.get(e.sessionId)??[];t.push(e),a.set(e.sessionId,t)}return a}async function Eo(e,t){return Gt(e).fts.fetchFirstUserMessagePreviews(e,t)}async function Do(e,t){if(t.length===0)return new Map;let{messages:n}=P(e,f),r=[...new Set(t)],i=await e.select({sessionId:n.sessionId,count:I()}).from(n).where(R(n.sessionId,r)).groupBy(n.sessionId),a=new Map;for(let e of i)a.set(e.sessionId,e.count);return a}function Oo(e){if(e)try{let t=JSON.parse(e);return!t||typeof t!=`object`||Array.isArray(t)?void 0:t}catch{return}}function ko(e){if(e!==null)try{let t=typeof e==`string`?JSON.parse(e):e,n=mt.safeParse(t);return n.success?n.data:void 0}catch{return}}function Ao(e,t,n,r){return{sessionId:e.session_id,createdAt:e.created_at,lastActivityAt:e.last_activity_at,status:e.status,title:e.title??void 0,leadAgentId:e.lead_agent_id??void 0,parentSessionId:e.parent_session_id??void 0,rootSessionId:e.root_session_id??void 0,forkPointMessageId:e.fork_point_message_id??void 0,branchKind:e.branch_kind??void 0,adapterName:e.adapter_name??void 0,adapterSessionId:e.adapter_session_id??void 0,adapterId:e.adapter_id??void 0,isOrchestrated:e.is_orchestrated===null?void 0:!!e.is_orchestrated,isImported:e.is_imported===null?void 0:!!e.is_imported,summary:e.summary??void 0,summaryUpdatedAt:e.summary_updated_at??void 0,forkTransforms:Oo(e.fork_transforms),targetWorkingDirectory:e.target_working_directory??void 0,metadata:ko(e.metadata),machineId:e.machine_id??void 0,agents:t.map(e=>({agentId:e.agentId,adapterId:e.adapterId,adapterName:e.adapterName,sessionId:e.sessionId,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})),preview:{messageCount:r.get(e.session_id)??0,firstUserMessage:n.get(e.session_id)??null}}}function jo(e,t){let n=Gt(t).fts,r=[];return r.push(e.on(T.search,async e=>{let{query:r,limit:i=20,status:a=`all`,isImported:o}=e.payload,s=r.trim();if(!s){e.setResult({sessions:[],total:0});return}let c={query:s,likePattern:`%${s.toLowerCase()}%`,status:a===`all`?void 0:a,isImported:o},l=await n.searchSessionRows(t,{...c,limit:i});if(l.length===0){e.setResult({sessions:[],total:0});return}let u=await n.countSessionMatches(t,c),d=l.map(e=>e.session_id),f=await To(t,d),p=await Eo(t,d),m=await Do(t,d),h=l.map(e=>Ao(e,f.get(e.session_id)??[],p,m));e.setResult({sessions:h,total:u})})),()=>r.forEach(e=>e())}async function Mo(e,t){return(await Ut(e).all(B`
|
|
75
75
|
WITH RECURSIVE ancestors AS (
|
|
76
76
|
SELECT session_id, parent_session_id
|
|
77
77
|
FROM sessions
|
|
@@ -84,7 +84,7 @@ import{adapterSessionClaims as e,adapterSessionClaimsDual as t,agents as n,agent
|
|
|
84
84
|
JOIN ancestors a ON s.session_id = a.parent_session_id
|
|
85
85
|
)
|
|
86
86
|
SELECT session_id FROM ancestors
|
|
87
|
-
`)).map(e=>e.session_id)}const No=new Map;function Po(e,t){let n=(No.get(e)??Promise.resolve()).then(t),r=n.then(()=>void 0,()=>void 0);return No.set(e,r),r.then(()=>{No.get(e)===r&&No.delete(e)}),n}function Fo(e,t){return`${e}:${t}`}async function Io(e,t,n){let r=await e.requestOptional(d.getByIds,{sessionId:t,eventIds:[Fo(`turn.completed`,n)]});if(r.handled)return r.data.events.length>0}function Lo(e,t){return Po(JSON.stringify([t.sessionId,t.turnAnchorId]),()=>Ro(e,t))}async function Ro(e,t){let{sessionId:n,turnAnchorId:r,startedAt:i,completedAt:a,status:o,error:s,usage:c,initiator:l}=t,{turn:u,created:d}=await e.request(C.ingestCompleted,{sessionId:n,turnAnchorId:r,startedAt:i,completedAt:a,status:o,error:s,usage:c,initiator:l}),f,p;for(let r of t.messages){let{messageId:t}=await e.request(E.upsertByAdapterMessageId,{sessionId:n,turnId:u.turnId,adapterMessageId:r.adapterMessageId,role:r.role,contentText:r.contentText,blocks:r.blocks,agentId:r.agentId,adapterSessionId:r.adapterSessionId,timestamp:r.timestamp,origin:r.origin});p??=t,f===void 0&&r.role===`user`&&(f=t)}let m=d;return d||(m=await Io(e,n,u.turnId)===!1),m&&(p===void 0?console.warn(`[turn-ingest] Turn ${u.turnId} (session ${n}) ingested without messages — skipping session.turn.* emission (getByTurn contract unfulfillable)`):await zo(e,t,u,f??p)),{turnId:u.turnId,turnNumber:u.turnNumber,created:d}}async function zo(e,t,n,r){let{sessionId:i,status:a,error:o,usage:s,initiator:c,ingestionMarker:l}=t,u={sessionId:i,turnId:n.turnId,turnNumber:n.turnNumber,messageId:r,agentIds:[...new Set(t.messages.flatMap(e=>e.role===`assistant`&&e.agentId?[e.agentId]:[]))],initiator:c,ingestionMarker:l},d={sessionId:i,turnId:n.turnId,turnNumber:n.turnNumber,success:a===`completed`,error:o,usage:s,initiator:c,ingestionMarker:l};await me(e,{type:`turn.started`,sessionId:i,payload:u,eventId:Fo(`turn.started`,n.turnId)}),await me(e,{type:`turn.completed`,sessionId:i,payload:d,eventId:Fo(`turn.completed`,n.turnId)}),await e.emit(A.turn.started,u),await e.emit(A.turn.completed,d)}const Bo=et(`log-import`,{listImporters:{request:D.object({}),response:D.object({importers:D.array(D.object({adapterName:D.string(),clientId:D.string().optional()}))})},importFile:{request:D.object({filePath:D.string(),adapterName:D.string(),ingestionMarker:bt.optional()}),response:D.discriminatedUnion(`status`,[D.object({status:D.literal(`imported`),sessionId:D.string(),messageCount:D.number(),turnCount:D.number()}),D.object({status:D.literal(`skipped`),reason:D.enum([`no-importer`,`file-missing`])})])},importSession:{request:D.object({adapterSessionId:D.string(),adapterName:D.string(),ingestionMarker:bt.optional()}),response:D.object({sessionId:D.string(),messageCount:D.number()})}}).subjects,Vo=`observed-session-ingestion-policy`;function Ho(e,t){return e.emit(ot.register,{capabilityId:Vo,provider:t})}function Uo(e,t){return e.emit(ot.unregister,{capabilityId:Vo,providerId:t})}function $(e,t){process.env.MAKAIO_DEBUG===`true`&&console.debug(`[ObservedSessionIngestion] ${e}`,t??{})}function Wo(e){if(!e||typeof e!=`object`)return!1;let t=e;return typeof t.id==`string`&&typeof t.displayName==`string`&&typeof t.decideObservedSessionIngestion==`function`}function Go(e){return e.importStatus===`discovered`&&e.clientId!==void 0}function Ko(e){return e.isImported===!0&&e.importStatus===`tracking`&&e.clientId!==void 0}var qo=class{bus;managedAdapterSessionIds=new Set;importerByClientId=new Map;unresolvedClientIds=new Set;policyProviders=new Map;cleanups=[];constructor(e=tt){this.bus=e,this.cleanups.push(this.bus.on(st.runtime.started,async e=>{try{await this.handleRuntimeStarted(e.payload)}catch(t){console.warn(`[ObservedSessionIngestion] Failed to handle runtime started`,{clientId:e.payload.clientId,adapterSessionId:e.payload.adapterSessionId,error:t})}}),this.bus.on(st.session.started,async e=>{try{await this.handleSessionStarted(e.payload)}catch(t){console.warn(`[ObservedSessionIngestion] Failed to register observed session`,{clientId:e.payload.clientId,adapterSessionId:e.payload.adapterSessionId,error:t})}}),this.bus.on(st.session.turn.completed,async e=>{try{await this.handleTurnCompleted(e.payload)}catch(t){console.warn(`[ObservedSessionIngestion] Failed to trigger import for observed turn`,{clientId:e.payload.clientId,adapterSessionId:e.payload.adapterSessionId,error:t})}}),this.bus.on(ot.register,e=>{let{provider:t}=e.payload;Wo(t)&&this.policyProviders.set(t.id,t)},{filter:{capabilityId:Vo}}),this.bus.on(ot.unregister,e=>{this.policyProviders.delete(e.payload.providerId)},{filter:{capabilityId:Vo}}))}destroy(){for(let e of this.cleanups.splice(0))e()}async handleRuntimeStarted(e){if(!(e.source.layer!==`adapter`||e.adapterSessionId===void 0)){if(!this.managedAdapterSessionIds.has(e.adapterSessionId)){if(this.managedAdapterSessionIds.size>=1e4){let e=this.managedAdapterSessionIds.values().next().value;e!==void 0&&this.managedAdapterSessionIds.delete(e)}this.managedAdapterSessionIds.add(e.adapterSessionId)}await this.reconcileTrackingStub(e.clientId,e.adapterSessionId)}}async reconcileTrackingStub(e,t){let n=await this.resolveImporter(e);if(n===null)return;let r=await this.bus.requestOptional(T.getByAdapterSessionId,{adapterSessionId:t,source:n.adapterName});if(!r.handled||r.data.session===null)return;let i=r.data.session;if(!Ko(i))return;let a=await this.bus.requestOptional(ft.getBySession,{sessionId:i.sessionId,limit:1});if(!a.handled){$(`Preserved tracking stub because message storage is unavailable`,{adapterSessionId:t,source:n.adapterName,sessionId:i.sessionId});return}if(a.data.messages.length>0){$(`Preserved tracking stub with imported content (native takeover)`,{adapterSessionId:t,source:n.adapterName,sessionId:i.sessionId});return}(await this.bus.requestOptional(T.delete,{sessionId:i.sessionId})).handled&&$(`Reconciled hook-first tracking stub`,{adapterSessionId:t,source:n.adapterName,deletedSessionId:i.sessionId})}async resolveImporter(e){let t=this.importerByClientId.get(e);if(t!==void 0)return t===null?null:{adapterName:t};let n=await this.bus.requestOptional(Bo.listImporters,{});if(!n.handled)return this.debugUnresolved(e,`no log-import service registered`),null;let r=n.data.importers.find(t=>t.clientId===e);return r===void 0?(this.importerByClientId.set(e,null),this.debugUnresolved(e,`no importer registered for client`),null):(this.importerByClientId.set(e,r.adapterName),{adapterName:r.adapterName})}debugUnresolved(e,t){this.unresolvedClientIds.has(e)||(this.unresolvedClientIds.add(e),$(`Skipping observed ingestion for client '${e}': ${t}`))}async handleSessionStarted(e){let t=e.adapterSessionId;if(t===void 0||t.length===0||this.managedAdapterSessionIds.has(t))return;let n=await this.resolveImporter(e.clientId);if(n===null)return;let r=e.startMode===`resume`||e.startMode===`compact`?e.startMode:void 0;(r===void 0?await this.registerObservedSession(e,t,n.adapterName):await this.rebindObservedSession(e,t,n.adapterName,r))&&this.managedAdapterSessionIds.has(t)&&await this.reconcileTrackingStub(e.clientId,t)}async rebindObservedSession(e,t,n,r){let i=await this.bus.requestOptional(T.rebindObserved,{externalSessionId:t,source:n,...e.cwd===void 0?{}:{cwd:e.cwd},...e.transcriptPath===void 0?{}:{logFilePath:e.transcriptPath},...e.machineId===void 0?{}:{machineId:e.machineId}});if(!i.handled)return $(`Session storage unavailable; skipped observed-session rebind`,{adapterSessionId:t}),!1;if(i.data.outcome===`not-found`){let i=await this.decideImportStatus(this.policyInput(e,t,n));return i===`discovered`?await this.registerObservedSession(e,t,n,i):($(`Observed continuation of an unknown session; leaving creation to the transcript import`,{adapterSessionId:t,source:n,startMode:r}),!1)}try{await this.bus.requestOptional(A.ownership.continuation,{sessionId:i.data.sessionId,startMode:r})}catch(e){$(`Continuation report failed; the rebind stands`,{sessionId:i.data.sessionId,startMode:r,error:e})}return!0}policyInput(e,t,n){return{clientId:e.clientId,source:e.source,adapterSessionId:t,adapterName:n,...e.cwd===void 0?{}:{cwd:e.cwd},...e.transcriptPath===void 0?{}:{transcriptPath:e.transcriptPath}}}async registerObservedSession(e,t,n,r){let i=Jo(e.metadata),a=r??await this.decideImportStatus(this.policyInput(e,t,n)),o=e.startMode===`fork`&&e.parentAdapterSessionId!==void 0&&e.parentAdapterSessionId.length>0?e.parentAdapterSessionId:void 0,s=o===void 0?{kind:pt,parentAdapterSessionId:null,forkPointMessageId:null}:{kind:lt,parentAdapterSessionId:o,forkPointMessageId:null};return(await this.bus.requestOptional(T.importUpsert,{...s,externalSessionId:t,source:n,clientId:e.clientId,cwd:e.cwd??null,...e.transcriptPath===void 0?{}:{logFilePath:e.transcriptPath},...e.machineId===void 0?{}:{machineId:e.machineId},startedAt:e.observedAt,importStatus:a,activation:a===`tracking`?`live`:void 0,...i===void 0?{}:{metadata:i}})).handled?!0:($(`Session storage unavailable; skipped observed-session registration`,{adapterSessionId:t}),!1)}async handleTurnCompleted(e){let t=e.adapterSessionId;if(t===void 0||t.length===0||this.managedAdapterSessionIds.has(t))return;let n=await this.resolveImporter(e.clientId);if(n!==null&&await this.shouldImportObservedContent({clientId:e.clientId,source:e.source,adapterSessionId:t,adapterName:n.adapterName,...e.transcriptPath===void 0?{}:{transcriptPath:e.transcriptPath}})){if(e.transcriptPath!==void 0){let r=await this.bus.requestOptional(Bo.importFile,{filePath:e.transcriptPath,adapterName:n.adapterName,ingestionMarker:`live`});r.handled?r.data.status===`skipped`&&$(`Targeted import skipped`,{adapterSessionId:t,reason:r.data.reason}):$(`log-import.importFile unhandled; watcher fallback will ingest`,{adapterSessionId:t});return}try{await this.bus.requestOptional(Bo.importSession,{adapterSessionId:t,adapterName:n.adapterName,ingestionMarker:`live`})}catch(e){$(`Discovery-based import fallback failed (no stub yet); watcher will ingest`,{adapterSessionId:t,error:e})}}}async decideImportStatus(e){for(let t of this.policyProviders.values())if((await t.decideObservedSessionIngestion(e)).importStatus===`discovered`)return`discovered`;return`tracking`}async shouldImportObservedContent(e){let t=await this.bus.requestOptional(T.getByAdapterSessionId,{adapterSessionId:e.adapterSessionId,source:e.adapterName});if(t.handled&&t.data.session!==null){if(Go(t.data.session))return!1;if(t.data.session.importStatus!==`discovered`)return!0}return await this.decideImportStatus(e)===`tracking`}};function Jo(e){if(e===void 0)return;let t=_t.safeParse(e);return t.success?t.data:void 0}const Yo=Ht(`import_cursors`,e=>({filePath:e.text(`file_path`).primaryKey(),bytesRead:e.int8(`bytes_read`).notNull(),lastModified:e.text(`last_modified`).notNull(),updatedAt:e.epochMs(`updated_at`).notNull()})),Xo=Yo.sqlite,Zo=Yo.postgres,Qo=Vt({importCursors:Xo},{importCursors:Zo});function $o(e,t){let{importCursors:n}=P(t,Qo),r=[];return r.push(e.on(an.get,async e=>{let{filePath:r}=e.payload,i=(await t.select().from(n).where(L(n.filePath,r)).limit(1))[0];if(!i){e.setResult({cursor:null});return}e.setResult({cursor:{filePath:i.filePath,bytesRead:i.bytesRead,lastModified:i.lastModified}})})),r.push(e.on(an.set,async e=>{let{filePath:r,bytesRead:i,lastModified:a}=e.payload;await t.insert(n).values({filePath:r,bytesRead:i,lastModified:a,updatedAt:Date.now()}).onConflictDoUpdate({target:n.filePath,set:{bytesRead:i,lastModified:a,updatedAt:Date.now()}}),e.setResult({success:!0})})),r.push(e.on(an.delete,async e=>{let{filePath:r}=e.payload,i=await t.delete(n).where(L(n.filePath,r));e.setResult({success:M(i)})})),()=>{r.forEach(e=>e())}}Ft(`embeddings`,{id:Nt(`id`).primaryKey({autoIncrement:!0}),entityType:It(`entity_type`).notNull(),entityId:It(`entity_id`).notNull(),model:It(`model`).notNull(),dimensions:Nt(`dimensions`).notNull(),content:It(`content`),embedding:jt(`embedding`,{mode:`buffer`}).notNull(),createdAt:Nt(`created_at`).notNull()},e=>[Mt(`idx_embeddings_entity`).on(e.entityType,e.entityId),Mt(`idx_embeddings_model`).on(e.model),Lt(`idx_embeddings_unique`).on(e.entityType,e.entityId,e.model)]);function es(e){if(e.byteLength%4!=0)throw Error(`Invalid embedding blob: byte length ${e.byteLength} is not a multiple of 4 (IEEE-754 f32 lanes)`);return e instanceof ArrayBuffer?new Float32Array(e):e.byteOffset%4==0?new Float32Array(e.buffer,e.byteOffset,e.byteLength/4):new Float32Array(Uint8Array.from(e).buffer)}var ts=class{rawSql;engine;knownTables=new Set;constructor(e){this.rawSql=Ut(e),this.engine=Wt(this.rawSql.dialect)}slugify(e){return e.replace(/[^a-zA-Z0-9]/g,`_`).toLowerCase()}hashModel(e){let t=0;for(let n=0;n<e.length;n++)t=t*31+e.charCodeAt(n)>>>0;return t.toString(36)}getTableName(e){return`embeddings_idx_${this.slugify(e)}_${this.hashModel(e)}`}async ensureIndexTable(e,t){let n=this.getTableName(e);if(this.knownTables.has(n))return n;let r=B.identifier(n),i=B.raw(this.engine.capabilities.binaryColumnType);return await this.rawSql.run(B`CREATE TABLE IF NOT EXISTS ${r} (
|
|
87
|
+
`)).map(e=>e.session_id)}const No=new Map;function Po(e,t){let n=(No.get(e)??Promise.resolve()).then(t),r=n.then(()=>void 0,()=>void 0);return No.set(e,r),r.then(()=>{No.get(e)===r&&No.delete(e)}),n}function Fo(e,t){return`${e}:${t}`}async function Io(e,t,n){let r=await e.requestOptional(d.getByIds,{sessionId:t,eventIds:[Fo(`turn.completed`,n)]});if(r.handled)return r.data.events.length>0}function Lo(e,t){return Po(JSON.stringify([t.sessionId,t.turnAnchorId]),()=>Ro(e,t))}async function Ro(e,t){let{sessionId:n,turnAnchorId:r,startedAt:i,completedAt:a,status:o,error:s,usage:c,initiator:l}=t,{turn:u,created:d}=await e.request(C.ingestCompleted,{sessionId:n,turnAnchorId:r,startedAt:i,completedAt:a,status:o,error:s,usage:c,initiator:l}),f,p;for(let r of t.messages){let{messageId:t}=await e.request(E.upsertByAdapterMessageId,{sessionId:n,turnId:u.turnId,adapterMessageId:r.adapterMessageId,role:r.role,contentText:r.contentText,blocks:r.blocks,agentId:r.agentId,adapterSessionId:r.adapterSessionId,timestamp:r.timestamp,origin:r.origin});p??=t,f===void 0&&r.role===`user`&&(f=t)}let m=d;return d||(m=await Io(e,n,u.turnId)===!1),m&&(p===void 0?console.warn(`[turn-ingest] Turn ${u.turnId} (session ${n}) ingested without messages — skipping session.turn.* emission (getByTurn contract unfulfillable)`):await zo(e,t,u,f??p)),{turnId:u.turnId,turnNumber:u.turnNumber,created:d}}async function zo(e,t,n,r){let{sessionId:i,status:a,error:o,usage:s,initiator:c,ingestionMarker:l}=t,u={sessionId:i,turnId:n.turnId,turnNumber:n.turnNumber,messageId:r,agentIds:[...new Set(t.messages.flatMap(e=>e.role===`assistant`&&e.agentId?[e.agentId]:[]))],initiator:c,ingestionMarker:l},d={sessionId:i,turnId:n.turnId,turnNumber:n.turnNumber,success:a===`completed`,error:o,usage:s,initiator:c,ingestionMarker:l};await me(e,{type:`turn.started`,sessionId:i,payload:u,eventId:Fo(`turn.started`,n.turnId)}),await me(e,{type:`turn.completed`,sessionId:i,payload:d,eventId:Fo(`turn.completed`,n.turnId)}),await e.emit(A.turn.started,u),await e.emit(A.turn.completed,d)}const Bo=et(`log-import`,{listImporters:{request:D.object({}),response:D.object({importers:D.array(D.object({adapterName:D.string(),clientId:D.string().optional()}))})},importFile:{request:D.object({filePath:D.string(),adapterName:D.string(),ingestionMarker:_t.optional()}),response:D.discriminatedUnion(`status`,[D.object({status:D.literal(`imported`),sessionId:D.string(),messageCount:D.number(),turnCount:D.number()}),D.object({status:D.literal(`skipped`),reason:D.enum([`no-importer`,`file-missing`])})])},importSession:{request:D.object({adapterSessionId:D.string(),adapterName:D.string(),ingestionMarker:_t.optional()}),response:D.object({sessionId:D.string(),messageCount:D.number()})}}).subjects,Vo=`observed-session-ingestion-policy`;function Ho(e,t){return e.emit(rt.register,{capabilityId:Vo,provider:t})}function Uo(e,t){return e.emit(rt.unregister,{capabilityId:Vo,providerId:t})}function $(e,t){process.env.MAKAIO_DEBUG===`true`&&console.debug(`[ObservedSessionIngestion] ${e}`,t??{})}function Wo(e){if(!e||typeof e!=`object`)return!1;let t=e;return typeof t.id==`string`&&typeof t.displayName==`string`&&typeof t.decideObservedSessionIngestion==`function`}function Go(e){return e.importStatus===`discovered`&&e.clientId!==void 0}function Ko(e){return e.isImported===!0&&e.importStatus===`tracking`&&e.clientId!==void 0}var qo=class{bus;managedAdapterSessionIds=new Set;importerByClientId=new Map;unresolvedClientIds=new Set;policyProviders=new Map;cleanups=[];constructor(e=Et){this.bus=e,this.cleanups.push(this.bus.on(it.runtime.started,async e=>{try{await this.handleRuntimeStarted(e.payload)}catch(t){console.warn(`[ObservedSessionIngestion] Failed to handle runtime started`,{clientId:e.payload.clientId,adapterSessionId:e.payload.adapterSessionId,error:t})}}),this.bus.on(it.session.started,async e=>{try{await this.handleSessionStarted(e.payload)}catch(t){console.warn(`[ObservedSessionIngestion] Failed to register observed session`,{clientId:e.payload.clientId,adapterSessionId:e.payload.adapterSessionId,error:t})}}),this.bus.on(it.session.turn.completed,async e=>{try{await this.handleTurnCompleted(e.payload)}catch(t){console.warn(`[ObservedSessionIngestion] Failed to trigger import for observed turn`,{clientId:e.payload.clientId,adapterSessionId:e.payload.adapterSessionId,error:t})}}),this.bus.on(rt.register,e=>{let{provider:t}=e.payload;Wo(t)&&this.policyProviders.set(t.id,t)},{filter:{capabilityId:Vo}}),this.bus.on(rt.unregister,e=>{this.policyProviders.delete(e.payload.providerId)},{filter:{capabilityId:Vo}}))}destroy(){for(let e of this.cleanups.splice(0))e()}async handleRuntimeStarted(e){if(!(e.source.layer!==`adapter`||e.adapterSessionId===void 0)){if(!this.managedAdapterSessionIds.has(e.adapterSessionId)){if(this.managedAdapterSessionIds.size>=1e4){let e=this.managedAdapterSessionIds.values().next().value;e!==void 0&&this.managedAdapterSessionIds.delete(e)}this.managedAdapterSessionIds.add(e.adapterSessionId)}await this.reconcileTrackingStub(e.clientId,e.adapterSessionId)}}async reconcileTrackingStub(e,t){let n=await this.resolveImporter(e);if(n===null)return;let r=await this.bus.requestOptional(T.getByAdapterSessionId,{adapterSessionId:t,source:n.adapterName});if(!r.handled||r.data.session===null)return;let i=r.data.session;if(!Ko(i))return;let a=await this.bus.requestOptional(lt.getBySession,{sessionId:i.sessionId,limit:1});if(!a.handled){$(`Preserved tracking stub because message storage is unavailable`,{adapterSessionId:t,source:n.adapterName,sessionId:i.sessionId});return}if(a.data.messages.length>0){$(`Preserved tracking stub with imported content (native takeover)`,{adapterSessionId:t,source:n.adapterName,sessionId:i.sessionId});return}(await this.bus.requestOptional(T.delete,{sessionId:i.sessionId})).handled&&$(`Reconciled hook-first tracking stub`,{adapterSessionId:t,source:n.adapterName,deletedSessionId:i.sessionId})}async resolveImporter(e){let t=this.importerByClientId.get(e);if(t!==void 0)return t===null?null:{adapterName:t};let n=await this.bus.requestOptional(Bo.listImporters,{});if(!n.handled)return this.debugUnresolved(e,`no log-import service registered`),null;let r=n.data.importers.find(t=>t.clientId===e);return r===void 0?(this.importerByClientId.set(e,null),this.debugUnresolved(e,`no importer registered for client`),null):(this.importerByClientId.set(e,r.adapterName),{adapterName:r.adapterName})}debugUnresolved(e,t){this.unresolvedClientIds.has(e)||(this.unresolvedClientIds.add(e),$(`Skipping observed ingestion for client '${e}': ${t}`))}async handleSessionStarted(e){let t=e.adapterSessionId;if(t===void 0||t.length===0||this.managedAdapterSessionIds.has(t))return;let n=await this.resolveImporter(e.clientId);if(n===null)return;let r=e.startMode===`resume`||e.startMode===`compact`?e.startMode:void 0;(r===void 0?await this.registerObservedSession(e,t,n.adapterName):await this.rebindObservedSession(e,t,n.adapterName,r))&&this.managedAdapterSessionIds.has(t)&&await this.reconcileTrackingStub(e.clientId,t)}async rebindObservedSession(e,t,n,r){let i=await this.bus.requestOptional(T.rebindObserved,{externalSessionId:t,source:n,...e.cwd===void 0?{}:{cwd:e.cwd},...e.transcriptPath===void 0?{}:{logFilePath:e.transcriptPath},...e.machineId===void 0?{}:{machineId:e.machineId}});if(!i.handled)return $(`Session storage unavailable; skipped observed-session rebind`,{adapterSessionId:t}),!1;if(i.data.outcome===`not-found`){let i=await this.decideImportStatus(this.policyInput(e,t,n));return i===`discovered`?await this.registerObservedSession(e,t,n,i):($(`Observed continuation of an unknown session; leaving creation to the transcript import`,{adapterSessionId:t,source:n,startMode:r}),!1)}try{await this.bus.requestOptional(A.ownership.continuation,{sessionId:i.data.sessionId,startMode:r})}catch(e){$(`Continuation report failed; the rebind stands`,{sessionId:i.data.sessionId,startMode:r,error:e})}return!0}policyInput(e,t,n){return{clientId:e.clientId,source:e.source,adapterSessionId:t,adapterName:n,...e.cwd===void 0?{}:{cwd:e.cwd},...e.transcriptPath===void 0?{}:{transcriptPath:e.transcriptPath}}}async registerObservedSession(e,t,n,r){let i=Jo(e.metadata),a=r??await this.decideImportStatus(this.policyInput(e,t,n)),o=e.startMode===`fork`&&e.parentAdapterSessionId!==void 0&&e.parentAdapterSessionId.length>0?e.parentAdapterSessionId:void 0,s=o===void 0?{kind:ut,parentAdapterSessionId:null,forkPointMessageId:null}:{kind:ot,parentAdapterSessionId:o,forkPointMessageId:null};return(await this.bus.requestOptional(T.importUpsert,{...s,externalSessionId:t,source:n,clientId:e.clientId,cwd:e.cwd??null,...e.transcriptPath===void 0?{}:{logFilePath:e.transcriptPath},...e.machineId===void 0?{}:{machineId:e.machineId},startedAt:e.observedAt,importStatus:a,activation:a===`tracking`?`live`:void 0,...i===void 0?{}:{metadata:i}})).handled?!0:($(`Session storage unavailable; skipped observed-session registration`,{adapterSessionId:t}),!1)}async handleTurnCompleted(e){let t=e.adapterSessionId;if(t===void 0||t.length===0||this.managedAdapterSessionIds.has(t))return;let n=await this.resolveImporter(e.clientId);if(n!==null&&await this.shouldImportObservedContent({clientId:e.clientId,source:e.source,adapterSessionId:t,adapterName:n.adapterName,...e.transcriptPath===void 0?{}:{transcriptPath:e.transcriptPath}})){if(e.transcriptPath!==void 0){let r=await this.bus.requestOptional(Bo.importFile,{filePath:e.transcriptPath,adapterName:n.adapterName,ingestionMarker:`live`});r.handled?r.data.status===`skipped`&&$(`Targeted import skipped`,{adapterSessionId:t,reason:r.data.reason}):$(`log-import.importFile unhandled; watcher fallback will ingest`,{adapterSessionId:t});return}try{await this.bus.requestOptional(Bo.importSession,{adapterSessionId:t,adapterName:n.adapterName,ingestionMarker:`live`})}catch(e){$(`Discovery-based import fallback failed (no stub yet); watcher will ingest`,{adapterSessionId:t,error:e})}}}async decideImportStatus(e){for(let t of this.policyProviders.values())if((await t.decideObservedSessionIngestion(e)).importStatus===`discovered`)return`discovered`;return`tracking`}async shouldImportObservedContent(e){let t=await this.bus.requestOptional(T.getByAdapterSessionId,{adapterSessionId:e.adapterSessionId,source:e.adapterName});if(t.handled&&t.data.session!==null){if(Go(t.data.session))return!1;if(t.data.session.importStatus!==`discovered`)return!0}return await this.decideImportStatus(e)===`tracking`}};function Jo(e){if(e===void 0)return;let t=mt.safeParse(e);return t.success?t.data:void 0}const Yo=Ht(`import_cursors`,e=>({filePath:e.text(`file_path`).primaryKey(),bytesRead:e.int8(`bytes_read`).notNull(),lastModified:e.text(`last_modified`).notNull(),updatedAt:e.epochMs(`updated_at`).notNull()})),Xo=Yo.sqlite,Zo=Yo.postgres,Qo=Vt({importCursors:Xo},{importCursors:Zo});function $o(e,t){let{importCursors:n}=P(t,Qo),r=[];return r.push(e.on(an.get,async e=>{let{filePath:r}=e.payload,i=(await t.select().from(n).where(L(n.filePath,r)).limit(1))[0];if(!i){e.setResult({cursor:null});return}e.setResult({cursor:{filePath:i.filePath,bytesRead:i.bytesRead,lastModified:i.lastModified}})})),r.push(e.on(an.set,async e=>{let{filePath:r,bytesRead:i,lastModified:a}=e.payload;await t.insert(n).values({filePath:r,bytesRead:i,lastModified:a,updatedAt:Date.now()}).onConflictDoUpdate({target:n.filePath,set:{bytesRead:i,lastModified:a,updatedAt:Date.now()}}),e.setResult({success:!0})})),r.push(e.on(an.delete,async e=>{let{filePath:r}=e.payload,i=await t.delete(n).where(L(n.filePath,r));e.setResult({success:M(i)})})),()=>{r.forEach(e=>e())}}Ft(`embeddings`,{id:Nt(`id`).primaryKey({autoIncrement:!0}),entityType:It(`entity_type`).notNull(),entityId:It(`entity_id`).notNull(),model:It(`model`).notNull(),dimensions:Nt(`dimensions`).notNull(),content:It(`content`),embedding:jt(`embedding`,{mode:`buffer`}).notNull(),createdAt:Nt(`created_at`).notNull()},e=>[Mt(`idx_embeddings_entity`).on(e.entityType,e.entityId),Mt(`idx_embeddings_model`).on(e.model),Lt(`idx_embeddings_unique`).on(e.entityType,e.entityId,e.model)]);function es(e){if(e.byteLength%4!=0)throw Error(`Invalid embedding blob: byte length ${e.byteLength} is not a multiple of 4 (IEEE-754 f32 lanes)`);return e instanceof ArrayBuffer?new Float32Array(e):e.byteOffset%4==0?new Float32Array(e.buffer,e.byteOffset,e.byteLength/4):new Float32Array(Uint8Array.from(e).buffer)}var ts=class{rawSql;engine;knownTables=new Set;constructor(e){this.rawSql=Ut(e),this.engine=Wt(this.rawSql.dialect)}slugify(e){return e.replace(/[^a-zA-Z0-9]/g,`_`).toLowerCase()}hashModel(e){let t=0;for(let n=0;n<e.length;n++)t=t*31+e.charCodeAt(n)>>>0;return t.toString(36)}getTableName(e){return`embeddings_idx_${this.slugify(e)}_${this.hashModel(e)}`}async ensureIndexTable(e,t){let n=this.getTableName(e);if(this.knownTables.has(n))return n;let r=B.identifier(n),i=B.raw(this.engine.capabilities.binaryColumnType);return await this.rawSql.run(B`CREATE TABLE IF NOT EXISTS ${r} (
|
|
88
88
|
entity_type TEXT NOT NULL,
|
|
89
89
|
entity_id TEXT NOT NULL,
|
|
90
90
|
embedding ${i} NOT NULL,
|
|
@@ -92,4 +92,4 @@ import{adapterSessionClaims as e,adapterSessionClaimsDual as t,agents as n,agent
|
|
|
92
92
|
)`),this.knownTables.add(n),n}async upsertIndexed(e,t,n,r,i){let a=await this.ensureIndexTable(e,t),o=new Uint8Array(i.buffer,i.byteOffset,i.byteLength),s=B.identifier(a);await this.rawSql.run(B`INSERT INTO ${s} (entity_type, entity_id, embedding)
|
|
93
93
|
VALUES (${n}, ${r}, ${o})
|
|
94
94
|
ON CONFLICT(entity_type, entity_id) DO UPDATE SET
|
|
95
|
-
embedding = excluded.embedding`)}async searchSimilar(e,t,n=10){let r=this.getTableName(e);if(!this.knownTables.has(r)){if(!await this.engine.capabilities.tableExists(this.rawSql,r))return[];this.knownTables.add(r)}let i=B.identifier(r),a=await this.rawSql.all(B`SELECT entity_type, entity_id, embedding FROM ${i}`);return a.length===0?[]:a.map(e=>{let n=es(e.embedding),r=this.euclideanDistance(t,n);return{entityType:e.entity_type,entityId:e.entity_id,distance:r}}).sort((e,t)=>e.distance-t.distance).slice(0,n)}async deleteByEntity(e,t,n){let r=this.getTableName(e);if(!this.knownTables.has(r)){if(!await this.engine.capabilities.tableExists(this.rawSql,r))return;this.knownTables.add(r)}let i=B.identifier(r);await this.rawSql.run(B`DELETE FROM ${i} WHERE entity_type = ${t} AND entity_id = ${n}`)}euclideanDistance(e,t){let n=0;for(let r=0;r<e.length;r++){let i=e[r]-t[r];n+=i*i}return Math.sqrt(n)}},ns=class{sessionId;parentSessionId;status=`active`;_turns=[];_completedTurnIds=new Set;bus;constructor(e){this.sessionId=e.sessionId??crypto.randomUUID(),this.parentSessionId=e.parentSessionId,this.bus=e.bus}get turns(){return this._turns}async startTurn(e){if(this.status!==`active`)throw Error(`Cannot start turn on non-active session`);let t=new kr({sessionId:this.sessionId,agentIds:e.agentIds,turnNumber:e.turnNumber,turnId:e.turnId});return this._turns.push(t),t.addMessage(e.messageId),await Le(this.bus,{sessionId:this.sessionId,turnId:t.turnId,turnNumber:t.turnNumber,agentIds:[...t.agentIds],messageId:e.messageId,ingestionMarker:`live`}),t}getActiveTurn(){for(let e=this._turns.length-1;e>=0;e--){let t=this._turns[e];if(!this._completedTurnIds.has(t.turnId))return t}}async completeTurn(e){if(!e.isComplete())throw Error(`Turn ${e.turnId} is not complete yet`);let t=e.getResult(),n={turnId:e.turnId,turnNumber:e.turnNumber,success:t.success,error:t.errors.length>0?t.errors.join(`; `):void 0};await me(this.bus,{type:`turn.completed`,sessionId:this.sessionId,payload:{sessionId:this.sessionId,...n}}),await this.emit(A.turn.completed,n),this._completedTurnIds.add(e.turnId)}async emit(e,t){await this.bus.emit(e,{...t,sessionId:this.sessionId})}};function rs(e,t){let{sessions:n}=P(t,G);async function r(i,a,o,s=0){if(s>100)throw Error(`Cycle detected in session lineage (depth > 100)`);let c=await t.select({adapterSessionId:n.adapterSessionId,sessionId:n.sessionId,parentSessionId:n.parentSessionId}).from(n).where(F(L(n.parentExternalSessionId,i),L(n.source,a)));for(let t of c)t.parentSessionId!==null&&await e.request(T.update,{sessionId:t.sessionId,rootSessionId:o}),t.adapterSessionId!==null&&await r(t.adapterSessionId,a,o,s+1)}return e.on(A.import.completed,async i=>{let{adapterSessionId:a,sessionId:o,source:s}=i.payload,c=await t.select({sessionId:n.sessionId,adapterSessionId:n.adapterSessionId,branchKind:n.branchKind}).from(n).where(F(L(n.parentExternalSessionId,a),L(n.source,s),z(n.parentSessionId)));if(c.length===0)return;let{session:l}=await e.request(T.get,{sessionId:o}),u=l?.rootSessionId??o;for(let t of c)await e.request(T.update,{sessionId:t.sessionId,parentSessionId:o,rootSessionId:u,...t.branchKind===null?{}:{branchKind:t.branchKind}}),t.adapterSessionId!==null&&await r(t.adapterSessionId,s,u)})}const is=new Set([`Agent`,`spawn_subagent`]),as=`[^A-Za-z0-9_-]`;function os(e){return e.replaceAll(/[.*+?^${}()|[\]\\]/g,`\\$&`)}function ss(e,t){return t.test(e)}async function cs(e,t){let n=[],r,i=0;do{let a=await e.request(E.getBySession,{sessionId:t,order:`asc`,...r===void 0?{}:{after:r}});if(n.push(...a.messages),r=a.nextCursor??void 0,i+=1,r!==void 0&&i>=1e3)throw Error(`Exceeded 1000 message pages while loading session ${t}`)}while(r!==void 0);return n}function ls(e){let t=[];for(let n of e)for(let e of n.blocks)e.type===`tool_call`&&is.has(e.name)&&t.push({toolCallId:e.toolCallId});return t}function us(e,t){let n=new Map;for(let r of e)for(let e of r.blocks)if(e.type===`tool_output`){for(let r of t)if(ss(e.output,r.pattern)){let t=n.get(e.toolCallId)??new Set;t.add(r.id),n.set(e.toolCallId,t)}}let r=new Map;for(let[e,t]of n)if(t.size===1){let[n]=t;r.set(e,n)}return r}function ds(e){let t=new Map,n=new Set;for(let r of e)if(!(r===null||n.has(r.adapterSessionId))){if(t.has(r.adapterSessionId)){t.delete(r.adapterSessionId),n.add(r.adapterSessionId);continue}t.set(r.adapterSessionId,r.sessionId)}return t}function fs(e){return[...e].map(e=>{let t=os(e);return{id:e,pattern:RegExp(`(^|${as})${t}($|${as})`)}})}async function ps(e,t,n){let{children:r}=await e.request(T.getChildren,{sessionId:n}),i=r.filter(e=>e.branchKind===`compress`);if(i.length===0)return;let{session:a}=await e.request(T.get,{sessionId:t}),o=a?.adapterSessionId;if(!o)return;let s=fs(new Set([o])),c=(await Promise.all(i.map(async t=>{let n=await cs(e,t.sessionId),r=ls(n);if(r.length===0)return null;let i=us(n,s);if(i.size===0)return null;let a=[...i.entries()].filter(([,e])=>e===o);if(a.length!==1)return null;let[c]=a[0];return r.some(e=>e.toolCallId===c)?{parentSessionId:t.sessionId,toolCallId:c}:null}))).filter(e=>e!==null);c.length===1&&await e.request(T.update,{sessionId:t,parentSessionId:c[0].parentSessionId,spawningToolCallId:c[0].toolCallId})}async function ms(e,t,n){let r=t.parentExternalSessionId,i=t.source??n;if(!r||!i)return;let a=t.sessionId,{session:o}=await e.request(T.getByAdapterSessionId,{adapterSessionId:r,source:i}),s=o?.sessionId;if(!s)return;let{children:c}=await e.request(T.getChildren,{sessionId:s}),l=await hs(e,c);if(l.size===0)return;let u=await cs(e,a),d=ls(u);if(d.length===0)return;let f=us(u,fs(new Set(l.keys()))),p=new Map;for(let e of d){let t=f.get(e.toolCallId);t!==void 0&&p.set(t,(p.get(t)??0)+1)}let m=new Map;for(let e of d){let t=f.get(e.toolCallId),n=t===void 0?void 0:l.get(t);n!==void 0&&t!==void 0&&p.get(t)===1&&m.set(n,e.toolCallId)}if(m.size===0)return;let h=[...m].map(async([t,n])=>{try{await e.request(T.update,{sessionId:t,parentSessionId:a,spawningToolCallId:n})}catch(e){console.error(`[CompressLineageResolver] Failed to re-parent subagent`,{compressChildSessionId:a,parentMakaioSessionId:s,childSessionId:t,toolCallId:n,error:e})}});await Promise.allSettled(h)}async function hs(e,t){return ds(await Promise.all(t.filter(e=>e.branchKind===`subagent`).map(async t=>{let{session:n}=await e.request(T.get,{sessionId:t.sessionId});return n?.adapterSessionId?{sessionId:t.sessionId,adapterSessionId:n.adapterSessionId}:null})))}function gs(e){return e.on(A.import.completed,async t=>{try{let{sessionId:n,source:r}=t.payload,{session:i}=await e.request(T.get,{sessionId:n});if(!i)return;if(i.branchKind===`subagent`&&i.parentSessionId!==void 0){await ps(e,n,i.parentSessionId);return}if(i.branchKind!==`compress`)return;await ms(e,i,r)}catch(e){console.error(`[CompressLineageResolver] Failed to resolve compress lineage`,{payload:t.payload,error:e})}})}function _s(e){return[...e].map(e=>{let t=os(e);return{id:e,pattern:RegExp(`(^|${as})${t}($|${as})`)}})}async function vs(e,t,n){return ds(await Promise.all(n.filter(e=>e.branchKind===`subagent`&&e.spawningToolCallId===void 0).map(async n=>{let{session:r}=await e.request(T.get,{sessionId:n.sessionId}),i=r?.source??r?.adapterName;return r?.adapterSessionId&&i===t?{sessionId:n.sessionId,adapterSessionId:r.adapterSessionId}:null})))}function ys(e){return e.on(A.import.completed,async t=>{try{let{sessionId:n,source:r}=t.payload,{children:i}=await e.request(T.getChildren,{sessionId:n}),a=await vs(e,r,i),o=new Set(a.keys());if(o.size===0)return;let s=await cs(e,n),c=ls(s);if(c.length===0)return;let l=us(s,_s(o)),u=new Map;for(let e of c){let t=l.get(e.toolCallId);t!==void 0&&u.set(t,(u.get(t)??0)+1)}let d=new Map;for(let e of c){let t=l.get(e.toolCallId),n=t===void 0?void 0:a.get(t);n!==void 0&&t!==void 0&&u.get(t)===1&&d.set(n,e.toolCallId)}let f=[...d].map(async([t,r])=>{try{let{session:n}=await e.request(T.get,{sessionId:t});if(n?.spawningToolCallId!==void 0)return;await e.request(T.update,{sessionId:t,spawningToolCallId:r})}catch(e){console.error(`Failed to persist spawning tool call correlation`,{parentSessionId:n,childSessionId:t,toolCallId:r,error:e})}});await Promise.allSettled(f)}catch(e){console.error(`Failed to backfill spawningToolCallId for imported session`,{payload:t.payload,error:e})}})}function bs(e){return e.on(it.session.discovered,async t=>{let n=ht.safeParse(t.payload);if(!n.success)throw console.error(`[registerSessionDiscoveredHandler] Invalid adapter.session.discovered payload`,{issues:n.error.issues}),n.error;let{adapterId:r,adapterSessionId:i,adapterName:a,cwd:o,title:s,logFilePath:c,startedAt:l,machineId:u,kind:d,parentAdapterSessionId:f,forkPointMessageId:p}=n.data,m=Xe({kind:d,parentAdapterSessionId:f??null,forkPointMessageId:p??null});await e.request(T.importUpsert,{externalSessionId:i,source:a,adapterId:r,cwd:o??null,...s===void 0?{}:{title:s},...c===void 0?{}:{logFilePath:c},...l===void 0?{}:{startedAt:l},...u===void 0?{}:{machineId:u},...m})})}var xs=class{bus;agentStates=new Map;sessionStates=new Map;unsubscribe;staleThresholdMs;constructor(e,t){this.bus=e,this.staleThresholdMs=t?.staleThresholdMs??36e5}start(){this.unsubscribe||=this.bus.on(O.contextWindow.updated,e=>{let{agentId:t,sessionId:n,currentTokens:r,maxTokens:i,percentage:a,level:o,cachedTokens:s}=e.payload;if(!n)return;let c={agentId:t,sessionId:n,currentTokens:r,maxTokens:i,percentage:a,level:o,cachedTokens:s,updatedAt:Date.now()};this.agentStates.set(t,c),this.recomputeSessionState(n)})}stop(){this.unsubscribe?.(),this.unsubscribe=void 0,this.agentStates.clear(),this.sessionStates.clear()}getSessionState(e){return this.sessionStates.get(e)}clearSession(e){this.sessionStates.delete(e);for(let[t,n]of this.agentStates)n.sessionId===e&&this.agentStates.delete(t)}recomputeSessionState(e){let t=Date.now(),n;for(let[r,i]of this.agentStates){if(t-i.updatedAt>this.staleThresholdMs){this.agentStates.delete(r);continue}i.sessionId===e&&(!n||i.percentage>n.percentage)&&(n=i)}n&&this.sessionStates.set(e,{currentTokens:n.currentTokens,maxTokens:n.maxTokens,percentage:n.percentage,level:n.level,worstAgentId:n.agentId,lastUpdatedAt:n.updatedAt})}};export{Zn as $,Ti as A,Yr as B,Eo as C,ka as D,wo as E,ni as F,Vr as G,Jr as H,ei as I,fr as J,kr as K,$r as L,q as M,xi as N,Aa as O,ti as P,or as Q,Qr as R,Do as S,Oo as T,qr as U,Xr as V,Gr as W,H as X,cr as Y,sr as Z,Bo as _,rs as a,jo as b,$o as c,qo as d,Kn as et,Go as f,Uo as g,Ho as h,gs as i,wi as j,la as k,Xo as l,Vo as m,bs as n,Nn as nt,ns as o,Ko as p,Dr as q,ys as r,Cn as rt,ts as s,xs as t,Fn as tt,Yo as u,Lo as v,Ao as w,To as x,Mo as y,Zr as z};
|
|
95
|
+
embedding = excluded.embedding`)}async searchSimilar(e,t,n=10){let r=this.getTableName(e);if(!this.knownTables.has(r)){if(!await this.engine.capabilities.tableExists(this.rawSql,r))return[];this.knownTables.add(r)}let i=B.identifier(r),a=await this.rawSql.all(B`SELECT entity_type, entity_id, embedding FROM ${i}`);return a.length===0?[]:a.map(e=>{let n=es(e.embedding),r=this.euclideanDistance(t,n);return{entityType:e.entity_type,entityId:e.entity_id,distance:r}}).sort((e,t)=>e.distance-t.distance).slice(0,n)}async deleteByEntity(e,t,n){let r=this.getTableName(e);if(!this.knownTables.has(r)){if(!await this.engine.capabilities.tableExists(this.rawSql,r))return;this.knownTables.add(r)}let i=B.identifier(r);await this.rawSql.run(B`DELETE FROM ${i} WHERE entity_type = ${t} AND entity_id = ${n}`)}euclideanDistance(e,t){let n=0;for(let r=0;r<e.length;r++){let i=e[r]-t[r];n+=i*i}return Math.sqrt(n)}},ns=class{sessionId;parentSessionId;status=`active`;_turns=[];_completedTurnIds=new Set;bus;constructor(e){this.sessionId=e.sessionId??crypto.randomUUID(),this.parentSessionId=e.parentSessionId,this.bus=e.bus}get turns(){return this._turns}async startTurn(e){if(this.status!==`active`)throw Error(`Cannot start turn on non-active session`);let t=new kr({sessionId:this.sessionId,agentIds:e.agentIds,turnNumber:e.turnNumber,turnId:e.turnId});return this._turns.push(t),t.addMessage(e.messageId),await Le(this.bus,{sessionId:this.sessionId,turnId:t.turnId,turnNumber:t.turnNumber,agentIds:[...t.agentIds],messageId:e.messageId,ingestionMarker:`live`}),t}getActiveTurn(){for(let e=this._turns.length-1;e>=0;e--){let t=this._turns[e];if(!this._completedTurnIds.has(t.turnId))return t}}async completeTurn(e){if(!e.isComplete())throw Error(`Turn ${e.turnId} is not complete yet`);let t=e.getResult(),n={turnId:e.turnId,turnNumber:e.turnNumber,success:t.success,error:t.errors.length>0?t.errors.join(`; `):void 0};await me(this.bus,{type:`turn.completed`,sessionId:this.sessionId,payload:{sessionId:this.sessionId,...n}}),await this.emit(A.turn.completed,n),this._completedTurnIds.add(e.turnId)}async emit(e,t){await this.bus.emit(e,{...t,sessionId:this.sessionId})}};function rs(e,t){let{sessions:n}=P(t,G);async function r(i,a,o,s=0){if(s>100)throw Error(`Cycle detected in session lineage (depth > 100)`);let c=await t.select({adapterSessionId:n.adapterSessionId,sessionId:n.sessionId,parentSessionId:n.parentSessionId}).from(n).where(F(L(n.parentExternalSessionId,i),L(n.source,a)));for(let t of c)t.parentSessionId!==null&&await e.request(T.update,{sessionId:t.sessionId,rootSessionId:o}),t.adapterSessionId!==null&&await r(t.adapterSessionId,a,o,s+1)}return e.on(A.import.completed,async i=>{let{adapterSessionId:a,sessionId:o,source:s}=i.payload,c=await t.select({sessionId:n.sessionId,adapterSessionId:n.adapterSessionId,branchKind:n.branchKind}).from(n).where(F(L(n.parentExternalSessionId,a),L(n.source,s),z(n.parentSessionId)));if(c.length===0)return;let{session:l}=await e.request(T.get,{sessionId:o}),u=l?.rootSessionId??o;for(let t of c)await e.request(T.update,{sessionId:t.sessionId,parentSessionId:o,rootSessionId:u,...t.branchKind===null?{}:{branchKind:t.branchKind}}),t.adapterSessionId!==null&&await r(t.adapterSessionId,s,u)})}const is=new Set([`Agent`,`spawn_subagent`]),as=`[^A-Za-z0-9_-]`;function os(e){return e.replaceAll(/[.*+?^${}()|[\]\\]/g,`\\$&`)}function ss(e,t){return t.test(e)}async function cs(e,t){let n=[],r,i=0;do{let a=await e.request(E.getBySession,{sessionId:t,order:`asc`,...r===void 0?{}:{after:r}});if(n.push(...a.messages),r=a.nextCursor??void 0,i+=1,r!==void 0&&i>=1e3)throw Error(`Exceeded 1000 message pages while loading session ${t}`)}while(r!==void 0);return n}function ls(e){let t=[];for(let n of e)for(let e of n.blocks)e.type===`tool_call`&&is.has(e.name)&&t.push({toolCallId:e.toolCallId});return t}function us(e,t){let n=new Map;for(let r of e)for(let e of r.blocks)if(e.type===`tool_output`){for(let r of t)if(ss(e.output,r.pattern)){let t=n.get(e.toolCallId)??new Set;t.add(r.id),n.set(e.toolCallId,t)}}let r=new Map;for(let[e,t]of n)if(t.size===1){let[n]=t;r.set(e,n)}return r}function ds(e){let t=new Map,n=new Set;for(let r of e)if(!(r===null||n.has(r.adapterSessionId))){if(t.has(r.adapterSessionId)){t.delete(r.adapterSessionId),n.add(r.adapterSessionId);continue}t.set(r.adapterSessionId,r.sessionId)}return t}function fs(e){return[...e].map(e=>{let t=os(e);return{id:e,pattern:RegExp(`(^|${as})${t}($|${as})`)}})}async function ps(e,t,n){let{children:r}=await e.request(T.getChildren,{sessionId:n}),i=r.filter(e=>e.branchKind===`compress`);if(i.length===0)return;let{session:a}=await e.request(T.get,{sessionId:t}),o=a?.adapterSessionId;if(!o)return;let s=fs(new Set([o])),c=(await Promise.all(i.map(async t=>{let n=await cs(e,t.sessionId),r=ls(n);if(r.length===0)return null;let i=us(n,s);if(i.size===0)return null;let a=[...i.entries()].filter(([,e])=>e===o);if(a.length!==1)return null;let[c]=a[0];return r.some(e=>e.toolCallId===c)?{parentSessionId:t.sessionId,toolCallId:c}:null}))).filter(e=>e!==null);c.length===1&&await e.request(T.update,{sessionId:t,parentSessionId:c[0].parentSessionId,spawningToolCallId:c[0].toolCallId})}async function ms(e,t,n){let r=t.parentExternalSessionId,i=t.source??n;if(!r||!i)return;let a=t.sessionId,{session:o}=await e.request(T.getByAdapterSessionId,{adapterSessionId:r,source:i}),s=o?.sessionId;if(!s)return;let{children:c}=await e.request(T.getChildren,{sessionId:s}),l=await hs(e,c);if(l.size===0)return;let u=await cs(e,a),d=ls(u);if(d.length===0)return;let f=us(u,fs(new Set(l.keys()))),p=new Map;for(let e of d){let t=f.get(e.toolCallId);t!==void 0&&p.set(t,(p.get(t)??0)+1)}let m=new Map;for(let e of d){let t=f.get(e.toolCallId),n=t===void 0?void 0:l.get(t);n!==void 0&&t!==void 0&&p.get(t)===1&&m.set(n,e.toolCallId)}if(m.size===0)return;let h=[...m].map(async([t,n])=>{try{await e.request(T.update,{sessionId:t,parentSessionId:a,spawningToolCallId:n})}catch(e){console.error(`[CompressLineageResolver] Failed to re-parent subagent`,{compressChildSessionId:a,parentMakaioSessionId:s,childSessionId:t,toolCallId:n,error:e})}});await Promise.allSettled(h)}async function hs(e,t){return ds(await Promise.all(t.filter(e=>e.branchKind===`subagent`).map(async t=>{let{session:n}=await e.request(T.get,{sessionId:t.sessionId});return n?.adapterSessionId?{sessionId:t.sessionId,adapterSessionId:n.adapterSessionId}:null})))}function gs(e){return e.on(A.import.completed,async t=>{try{let{sessionId:n,source:r}=t.payload,{session:i}=await e.request(T.get,{sessionId:n});if(!i)return;if(i.branchKind===`subagent`&&i.parentSessionId!==void 0){await ps(e,n,i.parentSessionId);return}if(i.branchKind!==`compress`)return;await ms(e,i,r)}catch(e){console.error(`[CompressLineageResolver] Failed to resolve compress lineage`,{payload:t.payload,error:e})}})}function _s(e){return[...e].map(e=>{let t=os(e);return{id:e,pattern:RegExp(`(^|${as})${t}($|${as})`)}})}async function vs(e,t,n){return ds(await Promise.all(n.filter(e=>e.branchKind===`subagent`&&e.spawningToolCallId===void 0).map(async n=>{let{session:r}=await e.request(T.get,{sessionId:n.sessionId}),i=r?.source??r?.adapterName;return r?.adapterSessionId&&i===t?{sessionId:n.sessionId,adapterSessionId:r.adapterSessionId}:null})))}function ys(e){return e.on(A.import.completed,async t=>{try{let{sessionId:n,source:r}=t.payload,{children:i}=await e.request(T.getChildren,{sessionId:n}),a=await vs(e,r,i),o=new Set(a.keys());if(o.size===0)return;let s=await cs(e,n),c=ls(s);if(c.length===0)return;let l=us(s,_s(o)),u=new Map;for(let e of c){let t=l.get(e.toolCallId);t!==void 0&&u.set(t,(u.get(t)??0)+1)}let d=new Map;for(let e of c){let t=l.get(e.toolCallId),n=t===void 0?void 0:a.get(t);n!==void 0&&t!==void 0&&u.get(t)===1&&d.set(n,e.toolCallId)}let f=[...d].map(async([t,r])=>{try{let{session:n}=await e.request(T.get,{sessionId:t});if(n?.spawningToolCallId!==void 0)return;await e.request(T.update,{sessionId:t,spawningToolCallId:r})}catch(e){console.error(`Failed to persist spawning tool call correlation`,{parentSessionId:n,childSessionId:t,toolCallId:r,error:e})}});await Promise.allSettled(f)}catch(e){console.error(`Failed to backfill spawningToolCallId for imported session`,{payload:t.payload,error:e})}})}function bs(e){return e.on(tt.session.discovered,async t=>{let n=ft.safeParse(t.payload);if(!n.success)throw console.error(`[registerSessionDiscoveredHandler] Invalid adapter.session.discovered payload`,{issues:n.error.issues}),n.error;let{adapterId:r,adapterSessionId:i,adapterName:a,cwd:o,title:s,logFilePath:c,startedAt:l,machineId:u,kind:d,parentAdapterSessionId:f,forkPointMessageId:p}=n.data,m=Xe({kind:d,parentAdapterSessionId:f??null,forkPointMessageId:p??null});await e.request(T.importUpsert,{externalSessionId:i,source:a,adapterId:r,cwd:o??null,...s===void 0?{}:{title:s},...c===void 0?{}:{logFilePath:c},...l===void 0?{}:{startedAt:l},...u===void 0?{}:{machineId:u},...m})})}var xs=class{bus;agentStates=new Map;sessionStates=new Map;unsubscribe;staleThresholdMs;constructor(e,t){this.bus=e,this.staleThresholdMs=t?.staleThresholdMs??36e5}start(){this.unsubscribe||=this.bus.on(O.contextWindow.updated,e=>{let{agentId:t,sessionId:n,currentTokens:r,maxTokens:i,percentage:a,level:o,cachedTokens:s}=e.payload;if(!n)return;let c={agentId:t,sessionId:n,currentTokens:r,maxTokens:i,percentage:a,level:o,cachedTokens:s,updatedAt:Date.now()};this.agentStates.set(t,c),this.recomputeSessionState(n)})}stop(){this.unsubscribe?.(),this.unsubscribe=void 0,this.agentStates.clear(),this.sessionStates.clear()}getSessionState(e){return this.sessionStates.get(e)}clearSession(e){this.sessionStates.delete(e);for(let[t,n]of this.agentStates)n.sessionId===e&&this.agentStates.delete(t)}recomputeSessionState(e){let t=Date.now(),n;for(let[r,i]of this.agentStates){if(t-i.updatedAt>this.staleThresholdMs){this.agentStates.delete(r);continue}i.sessionId===e&&(!n||i.percentage>n.percentage)&&(n=i)}n&&this.sessionStates.set(e,{currentTokens:n.currentTokens,maxTokens:n.maxTokens,percentage:n.percentage,level:n.level,worstAgentId:n.agentId,lastUpdatedAt:n.updatedAt})}};export{Zn as $,Ti as A,Yr as B,Eo as C,ka as D,wo as E,ni as F,Vr as G,Jr as H,ei as I,fr as J,kr as K,$r as L,q as M,xi as N,Aa as O,ti as P,or as Q,Qr as R,Do as S,Oo as T,qr as U,Xr as V,Gr as W,H as X,cr as Y,sr as Z,Bo as _,rs as a,jo as b,$o as c,qo as d,Kn as et,Go as f,Uo as g,Ho as h,gs as i,wi as j,la as k,Xo as l,Vo as m,bs as n,Nn as nt,ns as o,Ko as p,Dr as q,ys as r,Cn as rt,ts as s,xs as t,Fn as tt,Yo as u,Lo as v,Ao as w,To as x,Mo as y,Zr as z};
|