@makaio/framework 1.0.0-dev-1789642522820 → 1.0.0-dev-1790087128488
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/adapter-subsystem/index.d.mts +15 -7
- package/dist/adapter-subsystem/index.mjs +1 -1
- package/dist/adapters/claude/index.d.mts +44 -44
- package/dist/adapters/config/index.d.mts +1 -1
- package/dist/adapters/index.d.mts +2 -2
- package/dist/adapters/node.d.mts +1 -1
- package/dist/{attempt-record-codec-DaQ3WHUs.mjs → attempt-record-codec-DXpdMgyI.mjs} +1 -1
- package/dist/bus/index.d.mts +140 -28
- package/dist/bus/index.mjs +1 -1
- package/dist/bus-ceMF9rsq.mjs +9 -0
- package/dist/client-DWSwtFyI.mjs +1 -0
- package/dist/clients/index.d.mts +27 -1
- package/dist/clients/index.mjs +1 -1
- package/dist/clients/managed-install.d.mts +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-pUF4IO462.mjs → code-execution-DWSux6k1.mjs} +1 -1
- package/dist/contracts/adapter/index.d.mts +2 -2
- package/dist/contracts/adapter/schemas/session-lineage.d.mts +1 -1
- package/dist/contracts/artifact/index.d.mts +2 -2
- package/dist/contracts/auth/index.d.mts +2 -2
- package/dist/contracts/automation-trigger/index.d.mts +3 -3
- package/dist/contracts/canonical-model/index.d.mts +1 -1
- package/dist/contracts/capabilities/index.d.mts +1 -1
- package/dist/contracts/client/index.d.mts +3 -3
- package/dist/contracts/client/index.mjs +1 -1
- package/dist/contracts/code-execution/index.d.mts +1 -1
- package/dist/contracts/common/index.d.mts +1 -1
- package/dist/contracts/config/index.d.mts +2 -47
- package/dist/contracts/context-projection/index.d.mts +232 -0
- package/dist/contracts/context-projection/index.mjs +1 -0
- package/dist/contracts/extension/index.d.mts +6 -6
- package/dist/contracts/extension/index.mjs +1 -1
- package/dist/contracts/facet/index.d.mts +1 -1
- package/dist/contracts/harness/index.d.mts +1 -1
- package/dist/contracts/host/index.d.mts +1 -1
- package/dist/contracts/index.d.mts +174 -174
- package/dist/contracts/index.mjs +1 -1
- package/dist/contracts/materialization/index.d.mts +2 -2
- package/dist/contracts/model-registry/index.d.mts +1 -1
- package/dist/contracts/native-session-supervisor/index.d.mts +1 -1
- package/dist/contracts/platform/index.d.mts +1 -1
- package/dist/contracts/provider/index.d.mts +2 -2
- package/dist/contracts/reaction/index.d.mts +1 -1
- package/dist/contracts/session/index.d.mts +3 -3
- package/dist/contracts/session/index.mjs +1 -1
- package/dist/contracts/shared/index.d.mts +2 -2
- package/dist/contracts/skill/index.d.mts +1 -1
- package/dist/contracts/telemetry/index.d.mts +1 -1
- package/dist/contracts/timeout/index.d.mts +1 -1
- package/dist/contracts/variant/index.d.mts +1 -1
- package/dist/contracts/worker/index.d.mts +2 -2
- package/dist/contracts/workflow/index.d.mts +2 -2
- package/dist/{contribution-DDbHzCPF.d.mts → contribution-DHJJARJP.d.mts} +2 -2
- package/dist/credential-ref-w4ZYpYW0.d.mts +49 -0
- package/dist/{definition-CuaBQyde.d.mts → definition-DeIGoROj.d.mts} +1 -1
- package/dist/{descriptor-to-package-Dw8dnl5E.mjs → descriptor-to-package-BPIArq6N.mjs} +1 -1
- package/dist/{detached-extension-handle-DN3aqLyq.mjs → detached-extension-handle-W5_yfCyE.mjs} +1 -1
- package/dist/drizzle/0041_session_principal_owner.sql +1 -0
- package/dist/drizzle/meta/_journal.json +7 -0
- package/dist/{execution-attempt-owner-recovery-CE_rvHKE.mjs → execution-attempt-owner-recovery-BZOEVYFH.mjs} +1 -1
- package/dist/extension-C6ANjR33.mjs +1 -0
- package/dist/{extension-context-BH31eOMv.d.mts → extension-context-C2qColIL.d.mts} +47 -4
- package/dist/{extension-discovery-CA2IhDRo.d.mts → extension-discovery-Rup-gANp.d.mts} +114 -15
- package/dist/extension-kOwzAMud.mjs +1 -0
- package/dist/extension-namespace-CeRpt6C8.mjs +1 -0
- package/dist/{framework-packages-BNFG51Td.mjs → framework-packages-U4Xhouxe.mjs} +1 -1
- package/dist/{hook-responses-CQ2q0aPE.d.mts → hook-responses-CN5r7i3k.d.mts} +1 -1
- package/dist/{index-Dm3d490n.d.mts → index-B2bxgKiK.d.mts} +1 -1
- package/dist/{index-B8v1-2-V2.d.mts → index-BMPU9fkA.d.mts} +5 -5
- package/dist/{index-CdWxSwhQ2.d.mts → index-Bcq3UKLQ2.d.mts} +7 -7
- package/dist/{index-Bh57xARQ.d.mts → index-BwaFXFd2.d.mts} +85 -85
- package/dist/{index-CIzvBH8O.d.mts → index-C8two8wz.d.mts} +1 -1
- package/dist/{index-oxZt93RL.d.mts → index-CESqYf8a.d.mts} +2 -2
- package/dist/index-D17f9C3Y.d.mts +869 -0
- package/dist/{index-KdlZRuTp.d.mts → index-D7dbR7Pu2.d.mts} +8 -8
- package/dist/{index-zEkS2L862.d.mts → index-D9ExWo6a2.d.mts} +441 -47
- package/dist/{index-B-u0Tu8X.d.mts → index-DDff0Q_Y.d.mts} +48 -48
- package/dist/{index-Dn23R_ck.d.mts → index-DH55jJaM.d.mts} +531 -26
- package/dist/{index-BS-Fhlux.d.mts → index-DJxg7U2X.d.mts} +29 -8
- package/dist/{index-C87P0WpY2.d.mts → index-DNdHuoy6.d.mts} +1 -1
- package/dist/{index-B6WkHnCQ.d.mts → index-DQU8ZoJr.d.mts} +1 -1
- package/dist/{index-U--ajOHy.d.mts → index-DUYjTfHD.d.mts} +1 -1
- package/dist/{index-CztxEJrG2.d.mts → index-DauaMtPH2.d.mts} +882 -390
- package/dist/{index-HJkz7i4E.d.mts → index-DdJKsdya.d.mts} +188 -10
- package/dist/{index-B4pPwpKk.d.mts → index-DfREUyAk.d.mts} +1 -1
- package/dist/{index-ClKwF6LE.d.mts → index-DjmCOTLM.d.mts} +288 -288
- package/dist/{index-CXpgL3gz2.d.mts → index-Dk_f8Cyz2.d.mts} +3 -3
- package/dist/{index-De_oh9M-2.d.mts → index-DvtVX-Rj.d.mts} +88 -11
- package/dist/{index-DWANFpTG.d.mts → index-Jdju2W3y.d.mts} +1 -1
- package/dist/{index-DQKVQPUS.d.mts → index-L6mssyeZ.d.mts} +1 -1
- package/dist/{index-xsaaa85T.d.mts → index-Xnn0gJhU.d.mts} +359 -359
- package/dist/{index-p1l00SGS.d.mts → index-f31ex0nG.d.mts} +96 -27
- package/dist/{index-zmDRR8gv2.d.mts → index-m5ZQFglW2.d.mts} +1 -1
- package/dist/{index-DmX9W3xH2.d.mts → index-qH2Jhegj2.d.mts} +1 -1
- package/dist/{index-CjDQn6lw.d.mts → index-vA46dx7q.d.mts} +100 -100
- package/dist/kernel/cli/index.d.mts +2 -2
- package/dist/kernel/cli/register.d.mts +1 -1
- package/dist/kernel/extension/index.d.mts +3 -2
- package/dist/kernel/extension/index.mjs +1 -1
- package/dist/kernel/index.d.mts +6 -6
- package/dist/kernel/index.mjs +1 -1
- package/dist/kernel/namespace/index.d.mts +1 -1
- package/dist/kernel/observability/index.d.mts +2 -2
- package/dist/kernel/observability/index.mjs +1 -1
- package/dist/kernel/providers/index.d.mts +1 -1
- package/dist/kernel/window/index.d.mts +1 -1
- package/dist/{lib-BF5XBSfw.mjs → lib-BdyGVjpO.mjs} +1 -1
- package/dist/{lib-Dljw2Cqh.mjs → lib-DxP3tPm9.mjs} +1 -1
- package/dist/load-extensions-BGfSWW_R.mjs +1 -0
- package/dist/{load-extensions-DGstT4_p.d.mts → load-extensions-Be_lOjm_.d.mts} +27 -14
- package/dist/mcp-http-server/index.d.mts +7 -2
- package/dist/mcp-http-server/index.mjs +1 -1
- package/dist/{namespace-UFcDEBJB.d.mts → namespace-B2L_hlJ0.d.mts} +154 -154
- package/dist/{namespace-rJ3ycPMg.d.mts → namespace-CHc7YF0S.d.mts} +2 -2
- package/dist/{namespace-BMdYJN_t.mjs → namespace-CqJhR19O.mjs} +1 -1
- package/dist/{namespace-BR03HE8G.d.mts → namespace-DudchWPb.d.mts} +415 -0
- package/dist/{namespace-Phxf0Lep.d.mts → namespace-MW-Eg_yB.d.mts} +2 -2
- package/dist/node/bus-server/index.d.mts +1 -1
- package/dist/node/bus-server/server-lifecycle.d.mts +1 -1
- package/dist/node/transports/index.d.mts +102 -4
- package/dist/node/transports/index.mjs +2 -2
- package/dist/{orchestrator-shared-CxO1lfpP.mjs → orchestrator-shared-CF-jPH91.mjs} +1 -1
- package/dist/ownership-memory-handler-C-y9zQf8.mjs +1 -0
- package/dist/package-AlsbnlSt.mjs +159 -0
- package/dist/{package-CDj3F-L3.d.mts → package-Bz938q5F.d.mts} +2 -2
- package/dist/{package-DYScYC0D.mjs → package-kkPGlxMm.mjs} +1 -1
- package/dist/package.json +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.d.mts +2 -2
- package/dist/runtime-bun/index.mjs +1 -1
- package/dist/runtime-node/boot-config.d.mts +45 -0
- package/dist/runtime-node/boot-config.mjs +1 -0
- 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 +2 -2
- package/dist/runtime-node/extension-discovery.mjs +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 +345 -27
- package/dist/runtime-node/index.mjs +21 -24
- 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-DqKCg5Ec.d.mts → schema-FY0EakKe.d.mts} +26 -0
- package/dist/{schemas-CFciElld.d.mts → schemas-C_0aO9S1.d.mts} +15 -15
- package/dist/{schemas-2_D4iVbb.d.mts → schemas-DiXL8NfA.d.mts} +1 -1
- package/dist/{schemas-Cq1d5tid.d.mts → schemas-Dqro7M1d.d.mts} +154 -154
- package/dist/services/adapter-runtime/index.d.mts +3 -3
- 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/namespace.d.mts +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 +19 -0
- package/dist/services/capability/index.d.mts +2 -2
- package/dist/services/code-execution/index.d.mts +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-projection/index.d.mts +94 -0
- package/dist/services/context-projection/index.mjs +1 -0
- package/dist/services/context-rules/index.d.mts +1 -1
- package/dist/services/execution-target/index.d.mts +3 -3
- package/dist/services/execution-target/namespace.d.mts +1 -1
- package/dist/services/execution-target/schemas.d.mts +1 -1
- package/dist/services/filesystem/index.d.mts +1 -1
- package/dist/services/filesystem/namespace.d.mts +6 -6
- package/dist/services/filesystem/schemas.d.mts +3 -3
- package/dist/services/index.d.mts +134 -129
- 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 +2 -2
- package/dist/services/log-import/log-import.d.mts +1 -1
- package/dist/services/log-import/namespace.d.mts +2 -2
- package/dist/services/log-import/schemas.d.mts +1 -1
- package/dist/services/materialization/index.d.mts +1 -1
- package/dist/services/model-registry/index.d.mts +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/session/handlers/index.d.mts +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/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/storage/namespace.d.mts +1 -1
- package/dist/services/session/storage/schema.d.mts +1 -1
- package/dist/services/session/storage/schema.mjs +1 -1
- package/dist/services/session/testing/index.mjs +3 -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-editor/index.d.mts +1 -1
- package/dist/services/settings/index.d.mts +3 -3
- package/dist/services/settings/namespace.d.mts +242 -13
- package/dist/services/settings/namespace.mjs +1 -1
- package/dist/services/settings/storage/clients-namespace.d.mts +1 -1
- package/dist/services/settings/storage/index.d.mts +3 -3
- package/dist/services/settings/storage/providers-namespace.d.mts +1 -1
- package/dist/services/subagent/index.d.mts +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/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-BNiMZnfF.mjs +1 -0
- package/dist/session-CMbztxNO.mjs +95 -0
- package/dist/{session-lineage-C3myyt5x.d.mts → session-lineage-CjE3qppC.d.mts} +1 -1
- package/dist/src-BZdw54VU.mjs +1 -0
- package/dist/{src-CbAw9kjJ.mjs → src-C0sw_Vs_.mjs} +1 -1
- package/dist/{src-Xn6SS74f.mjs → src-CqQSqLQI.mjs} +1 -1
- package/dist/storage/drizzle/client.d.mts +1 -1
- package/dist/storage/drizzle/index.d.mts +1 -1
- package/dist/storage/handlers/drizzle/index.d.mts +1 -1
- package/dist/storage/handlers/index.d.mts +1 -1
- package/dist/{tool-approval-service-CXTklh3T.mjs → tool-approval-service-CRo3fZRF.mjs} +1 -1
- package/dist/{tools-hiFv-jJn.mjs → tools-CKaxi3Mb.mjs} +1 -1
- package/dist/{transition-D-Lgbp1j.d.mts → transition-BVB-sXKI.d.mts} +2 -2
- package/dist/{types-D5kqrOad.d.mts → types-CVOL6fAm.d.mts} +334 -334
- package/dist/{types-CjYcHDPo2.d.mts → types-Cues-R7O2.d.mts} +1 -1
- package/dist/ui-hooks/index.d.mts +17 -24
- package/dist/ui-hooks/index.mjs +1 -1
- package/dist/ui-kernel/index.d.mts +11 -2
- package/dist/ui-kernel/index.mjs +1 -1
- package/dist/ui-kernel/pages/schemas.d.mts +1 -1
- package/dist/ui-views/index.mjs +1 -1
- package/dist/utils/index.d.mts +31 -1
- package/dist/utils/index.mjs +2 -2
- package/dist/{view-builder-CHUTXJDl.d.mts → view-builder-CbZtzUZI.d.mts} +2 -2
- package/dist/workflow-engine/execution-attempt-repository.d.mts +1 -1
- package/dist/workflow-engine/execution-attempt-repository.mjs +1 -1
- package/dist/workflow-engine/index.d.mts +55 -55
- 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 +1 -1
- package/dist/workflow-engine/testing/index.d.mts +1 -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 +1 -1
- package/dist/workflow-engine/workflow-orchestrator.mjs +1 -1
- package/dist/{workflow-transitions-BalNKTtE.mjs → workflow-transitions-t0ORS1F5.mjs} +1 -1
- package/dist/workflow-worker-DXCXb3g-.mjs +3 -0
- package/package.json +9 -1
- package/dist/bus-BOGcnhgA.mjs +0 -9
- package/dist/client-DqfP7BeX.mjs +0 -1
- package/dist/extension-CfrTp3rC.mjs +0 -1
- package/dist/extension-CnNcY1hR.mjs +0 -1
- package/dist/extension-namespace-Ct9L6SKr.mjs +0 -1
- package/dist/index-Hnsy6XhM.d.mts +0 -435
- package/dist/load-extensions-BVgxTj_y.mjs +0 -1
- package/dist/ownership-memory-handler-BOhmmlJj.mjs +0 -1
- package/dist/session-BP5aq2kt.mjs +0 -95
- package/dist/session-BcArFp9M.mjs +0 -1
- package/dist/workflow-worker-ChrMIcKm.mjs +0 -2
- package/dist/{adapter-binding-BxjUfkOn.d.mts → adapter-binding-CaYBrIkL.d.mts} +0 -0
- package/dist/{attempt-control-evidence-7lwRG73Y.mjs → attempt-control-evidence-CHBnJoqN.mjs} +0 -0
- package/dist/{attempt-fixtures-DHdYmr3o.mjs → attempt-fixtures-D3IsP0KH.mjs} +0 -0
- package/dist/{authority-state-bootstrap-CvuWPywM.mjs → authority-state-bootstrap-4F5Wc_6l.mjs} +0 -0
- package/dist/{base-orchestrator-CrXiMJzf.d.mts → base-orchestrator-1ofFsqUz.d.mts} +0 -0
- package/dist/{bootstrap-start-client-C1ZHbv6e.mjs → bootstrap-start-client-9nOdeDYl.mjs} +0 -0
- package/dist/{capability-service-CQ1aw_p-.d.mts → capability-service-CUN0MIS7.d.mts} +0 -0
- package/dist/{client-ByjHcS78.d.mts → client-BY3sBW2L.d.mts} +0 -0
- package/dist/{client-binary-version-verifier-C4fEAUdo.d.mts → client-binary-version-verifier-BeO4Eptw.d.mts} +0 -0
- package/dist/{clients-namespace-D4BxF2Nw.d.mts → clients-namespace-D92YsbKI.d.mts} +0 -0
- package/dist/{config-namespace-B1zyOYwH.d.mts → config-namespace-OEckUfVE.d.mts} +0 -0
- package/dist/{create-static-mount-Dgxgi4W3.mjs → create-static-mount-4B-mNtx1.mjs} +0 -0
- package/dist/{cross-spawn-BMCAyqrN.mjs → cross-spawn-DGqEuNyT.mjs} +0 -0
- package/dist/{definition-ClWxAKQ2.d.mts → definition-DLJg-P4G.d.mts} +0 -0
- package/dist/{esm-Ccx-3z8E.mjs → esm-DwiWcwH0.mjs} +0 -0
- package/dist/{execution-attempt-repository-aabFKcXN.mjs → execution-attempt-repository-CY289HlC.mjs} +0 -0
- package/dist/{execution-attempt-repository-BUah8hma.d.mts → execution-attempt-repository-DOb5V4N2.d.mts} +0 -0
- package/dist/{extension-package-provenance-C7oO5JAE.mjs → extension-package-provenance-ClpN3GHp.mjs} +0 -0
- package/dist/{filesystem-service-CDYoiwWY.d.mts → filesystem-service-BmavE-uO.d.mts} +0 -0
- package/dist/{index-BbkcbY6d.d.mts → index--gbsE1W0.d.mts} +0 -0
- package/dist/{index-DdVpWkaI.d.mts → index-B36rL4gp.d.mts} +0 -0
- package/dist/{index-DM72_93s.d.mts → index-BD1SbHpP.d.mts} +0 -0
- package/dist/{index-DAaQ--ki.d.mts → index-BQYGOXY5.d.mts} +0 -0
- package/dist/{index-gAyARaKS.d.mts → index-BneZFJ7x.d.mts} +0 -0
- package/dist/{index-D8ELwT5y.d.mts → index-BujgCaKt.d.mts} +0 -0
- package/dist/{index-DfU8s_xP.d.mts → index-C2StVLk4.d.mts} +0 -0
- package/dist/{index-BGnQ0EyD.d.mts → index-CCTzitBA.d.mts} +0 -0
- package/dist/{index-CVRT01082.d.mts → index-Cj_V1aRL.d.mts} +0 -0
- package/dist/{index-Htfr-K5U2.d.mts → index-Cm3HuwMC2.d.mts} +6 -6
- package/dist/{index-nkix3hP7.d.mts → index-CpN2C9jq.d.mts} +0 -0
- package/dist/{index-D6p17KPs.d.mts → index-CsRPJ9FV.d.mts} +0 -0
- package/dist/{index-BPNfYEA22.d.mts → index-CvdvuhTL2.d.mts} +0 -0
- package/dist/{index-DiZ4LmyE.d.mts → index-D7smT-YD.d.mts} +0 -0
- package/dist/{index-B78CRVi9.d.mts → index-DEx4ZFkz.d.mts} +0 -0
- package/dist/{index-F7cVpFJ9.d.mts → index-DTvYp2GT.d.mts} +0 -0
- package/dist/{index-BCU5oByg.d.mts → index-DubyRZD9.d.mts} +0 -0
- package/dist/{index-DjSUOMlr.d.mts → index-DwOpaQAE.d.mts} +0 -0
- package/dist/{index-BZoOYV-y.d.mts → index-DxkSkszz.d.mts} +0 -0
- package/dist/{index-tbjIqwa3.d.mts → index-TBJ1kIGA.d.mts} +0 -0
- package/dist/{index-DXQTkwLB.d.mts → index-YOXWpZAS.d.mts} +0 -0
- package/dist/{index-D6liU_KS.d.mts → index-fxh7TB0q.d.mts} +0 -0
- package/dist/{index-C_kOkO3E.d.mts → index-zqo2mX_Z.d.mts} +0 -0
- package/dist/{json-value-Ymw2f8i_.d.mts → json-value-Bjl8jzom.d.mts} +0 -0
- package/dist/{jsonl-transport-Bg033Ng0.mjs → jsonl-transport-Ct1RWs0h.mjs} +0 -0
- package/dist/{lib-BizqbepU.mjs → lib-DomKag_k.mjs} +0 -0
- package/dist/{namespace-BqfzcRkL.d.mts → namespace-BdsOXWPU.d.mts} +0 -0
- package/dist/{namespace-BCVKdu-U.d.mts → namespace-CxEQv9iZ.d.mts} +0 -0
- package/dist/{namespace-COHHDh2I.d.mts → namespace-D09uQ231.d.mts} +0 -0
- package/dist/{namespace-CvK86QFk.d.mts → namespace-DHLwz4o3.d.mts} +0 -0
- package/dist/{namespace-B5IFLQc-.d.mts → namespace-DHbrNQYD.d.mts} +0 -0
- package/dist/{namespace-s0e215xO.d.mts → namespace-DyD06b5-.d.mts} +0 -0
- package/dist/{namespace-C1pPZKtI.d.mts → namespace-Dz5_Hrz7.d.mts} +0 -0
- package/dist/{namespace-DM5vykb7.d.mts → namespace-hlhPqSsw.d.mts} +0 -0
- package/dist/{namespace-DlOQmhgX.d.mts → namespace-x-gk5SmK.d.mts} +0 -0
- package/dist/{namespace-f6Kz5cwX.d.mts → namespace-zusFEJPh.d.mts} +0 -0
- package/dist/{orchestrator-shared--srEeSaY.d.mts → orchestrator-shared-ChU5qRSe.d.mts} +0 -0
- package/dist/{packages-B98-WETs.d.mts → packages-D2s51nGU.d.mts} +0 -0
- package/dist/{providers-namespace-DRcl03bo.d.mts → providers-namespace-BLVt8OyP.d.mts} +0 -0
- package/dist/{runtime-inputs-DBtVIy9h.d.mts → runtime-inputs-BU_kBrP7.d.mts} +0 -0
- package/dist/{schemas-CEJe8O6P.d.mts → schemas-3KTmPuZg.d.mts} +0 -0
- package/dist/{schemas-D_-iXLQ9.d.mts → schemas-B-5_Dp4_.d.mts} +0 -0
- package/dist/{schemas-CeItAAQM.d.mts → schemas-BLxdGZkr.d.mts} +0 -0
- package/dist/{schemas-Cj6Gbqch.d.mts → schemas-BegArpU_.d.mts} +0 -0
- package/dist/{schemas-Ca5RILd-2.d.mts → schemas-BzB6z9oX2.d.mts} +0 -0
- package/dist/{schemas-CtzZDp29.d.mts → schemas-CBBzvIh0.d.mts} +0 -0
- package/dist/{schemas-JjyFxrC0.d.mts → schemas-CU_52YMQ.d.mts} +8 -8
- /package/dist/{schemas-LiiyNNpr.d.mts → schemas-Cl7fPlRv.d.mts} +0 -0
- /package/dist/{schemas-DJ2vMsgm.d.mts → schemas-CqawCYTY.d.mts} +0 -0
- /package/dist/{server-lifecycle-DUKp1Fbf.d.mts → server-lifecycle-CTJvpdeL.d.mts} +0 -0
- /package/dist/{storage-namespace-IvLOIP7j.d.mts → storage-namespace-B5r_ScUz.d.mts} +0 -0
- /package/dist/{storage-namespace-definition-Cv0XiTXb.d.mts → storage-namespace-definition-DiYr8UNl.d.mts} +0 -0
- /package/dist/{types-hkExapGH.d.mts → types-BSx8YYlc.d.mts} +0 -0
- /package/dist/{types-BYEybzjX.d.mts → types-CpEoQapk.d.mts} +0 -0
- /package/dist/{types-QRSc2AUU.d.mts → types-Cuhnt15L.d.mts} +0 -0
- /package/dist/{types-QsyX4H21.d.mts → types-DEGuc-fn.d.mts} +0 -0
- /package/dist/{types-BRM1AZaP.d.mts → types-DciLiPMd.d.mts} +0 -0
- /package/dist/{types-CsmvIK25.mjs → types-wwuw7RkB.mjs} +0 -0
- /package/dist/{window-registry-DeG37kt8.d.mts → window-registry-C3W2wtlX.d.mts} +0 -0
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{a as e,t}from"./ownership-recovery-guard-C9h8K1jo.mjs";import{SessionStorageSubjects as n}from"./services/session/storage/namespace.mjs";import{SessionOwnershipSettleMovementRequestSchema as r,SessionOwnershipStorageSubjects as i,SessionStorageSetRequestSchema as a,SessionStorageUpdateSchema as o,SessionSubjects as s,resolveResumableAdapterSessionId as c}from"@makaio/framework/contracts";import{isInactiveSafeLeadDesignationMutation as l,normalizeSessionOwnershipClaimRequest as u}from"@makaio/framework/contracts/session";function d(){return{sessions:new Map,agents:new Map,claims:new Map,runtimeInstances:new Map}}function f(e,t){for(let[n,r]of e.claims)t(r)&&e.claims.delete(n)}function ee(e,t){let n=e?.clientAccountId??null,r=t.clientAccountId??null;return!r||n===r?null:{previousClientAccountId:n,clientAccountId:r}}function p(e,t){let n=t.lastClientIdentityObservation;if(t.clientAccountId!==void 0&&!n)throw Error(`Session "${t.sessionId}" cannot persist clientAccountId without lastClientIdentityObservation`);if(t.clientAccountId!==void 0&&t.clientId===void 0)throw Error(`Session "${t.sessionId}" cannot persist clientAccountId without clientId`);if(n&&t.clientId!==void 0&&t.clientId!==n.clientId)throw Error(`Session "${t.sessionId}" cannot persist clientId "${t.clientId}" because lastClientIdentityObservation belongs to "${n.clientId}"`)}function m(e,t,n){let r=ee(t,n);if(!r)return;let i=n.lastClientIdentityObservation;if(!i)return;let a={sessionId:n.sessionId,clientId:i.clientId,previousClientAccountId:r.previousClientAccountId,clientAccountId:r.clientAccountId,source:i.source,observedAt:i.observedAt,lastClientIdentityObservation:structuredClone(i)};queueMicrotask(()=>{Promise.resolve().then(()=>e.emit(s.clientAccount.changed,a)).catch(e=>{console.error(`[SessionStorage] Failed to emit session.clientAccount.changed:`,e)})})}function h(e){switch(e){case`fork`:return`fork`;case`subagent`:return`subagent`;case`compress`:return`compress`;case`root`:return;default:return}}function te(e){switch(e.kind){case`root`:return{kind:`root`,parentAdapterSessionId:null,forkPointMessageId:null};case`fork`:return{kind:`fork`,parentAdapterSessionId:e.parentAdapterSessionId,forkPointMessageId:e.forkPointMessageId};case`subagent`:return{kind:`subagent`,parentAdapterSessionId:e.parentAdapterSessionId,forkPointMessageId:null};case`compress`:return{kind:`compress`,parentAdapterSessionId:e.parentAdapterSessionId,forkPointMessageId:null};default:return e.kind}}function g(){let e=0;return()=>{let t=Date.now();return e=t>e?t:e+1,e}}function _(e){return e.activation===`live`?`active`:`discovered`}const ne=g();function re(e,t){return e===`imported`||t===`imported`?`imported`:e===`tracking`||t===`tracking`?`tracking`:e??t??`discovered`}function v(e,t,n){n!==void 0&&(e[t]=n)}function ie(e){return e.status===`closed`||e.status===`archived`||e.status===`active`&&e.isImported===!0}function ae(e,t,n){if(!ie(e)){if(n===`live`){e.status===`discovered`&&(e.status=`active`);return}t===`discovered`&&(e.status=`discovered`)}}function oe(e,t,n){let r=e.startedAt??n,i=h(e.kind);return{sessionId:t,createdAt:r,lastActivityAt:r,agents:[],status:_(e),branchKind:i,generation:0,adapterName:e.source,adapterSessionId:e.externalSessionId,adapterId:e.adapterId,clientId:e.clientId,isOrchestrated:!1,isImported:!0,title:e.title??void 0,targetWorkingDirectory:e.cwd??void 0,source:e.source,parentExternalSessionId:e.parentAdapterSessionId??void 0,logFilePath:e.logFilePath??void 0,discoveredAt:n,importStatus:e.importStatus??`discovered`,forkPointMessageId:e.forkPointMessageId??void 0,metadata:e.metadata,lastClientIdentityObservation:e.lastClientIdentityObservation,isSidechain:e.isSidechain,machineId:e.machineId??void 0}}function se(e,t,n){let r=re(e.importStatus,t.importStatus);ae(e,r,t.activation),e.isImported=!0,e.importStatus=r,e.adapterName??=t.source,e.adapterSessionId??=t.externalSessionId,e.source??=t.source,e.discoveredAt??=n}function ce(e,t){t.logFilePath!==void 0&&t.logFilePath!==null&&(e.logFilePath??=t.logFilePath),t.cwd!==null&&(e.targetWorkingDirectory=t.cwd),t.title!==void 0&&t.title!==null&&(e.title=t.title),e.forkPointMessageId===void 0&&t.forkPointMessageId!==null&&(e.forkPointMessageId=t.forkPointMessageId),e.parentExternalSessionId===void 0&&t.parentAdapterSessionId!==null&&(e.parentExternalSessionId=t.parentAdapterSessionId);let n=h(t.kind);n!==void 0&&e.branchKind===void 0&&(e.branchKind=n),v(e,`adapterId`,t.adapterId),v(e,`clientId`,t.clientId),t.metadata!==void 0&&(e.metadata={...t.metadata,...e.metadata??{}}),v(e,`isSidechain`,t.isSidechain),v(e,`lastClientIdentityObservation`,t.lastClientIdentityObservation),t.machineId===null?e.machineId=void 0:t.machineId!==void 0&&(e.machineId??=t.machineId)}function y(e,t,n){t.startedAt!==void 0&&((n===void 0||e.createdAt===n)&&(e.createdAt=t.startedAt),(n===void 0||e.lastActivityAt===n)&&(e.lastActivityAt=t.startedAt))}function le(e,t,n){let r=e.discoveredAt;se(e,t,n),ce(e,t),y(e,t,r)}function b(e,t){if(t.parentExternalSessionId===void 0)return;let n=t.source??t.adapterName,r=Array.from(e.values()).find(e=>e.adapterSessionId===t.parentExternalSessionId&&(e.source??e.adapterName)===n);r&&(t.parentSessionId=r.sessionId,t.rootSessionId=r.rootSessionId??r.sessionId)}function ue(e,t,n){if(n){e.emit(s.created,{sessionId:t.sessionId,parentSessionId:t.parentSessionId??null,branchKind:t.branchKind??null,createdAt:t.createdAt}).catch(e=>console.error(`[SessionStorage] Failed to emit session.created:`,e));return}e.emit(s.updated,{sessionId:t.sessionId,changedProperties:[`source`,`targetWorkingDirectory`,`title`]}).catch(e=>console.error(`[SessionStorage] Failed to emit session.updated:`,e))}function de(e){let t=0,n=0,r=0;for(let i of e)i.importStatus===`imported`&&(t+=1),i.importStatus===`tracking`&&(n+=1),i.importStatus===`discovered`&&(r+=1);return{total:e.length,imported:t,tracking:n,discovered:r}}function x(e,t,n){return Array.from(e.values()).find(e=>e.adapterSessionId===n&&e.source===t)}function fe(e,t){let n=[];return t.cwd!==void 0&&(e.targetWorkingDirectory=t.cwd,n.push(`targetWorkingDirectory`)),t.logFilePath!==void 0&&(e.logFilePath=t.logFilePath,n.push(`logFilePath`)),t.machineId!==void 0&&(e.machineId=t.machineId??void 0,n.push(`machineId`)),t.startMode===`compact`&&(e.generation=(e.generation??0)+1,n.push(`generation`)),n}function pe(e,t,n){e.emit(s.importStatusChanged,{sessionId:t.sessionId,importStatus:n}).catch(e=>console.error(`[SessionStorage] Failed to emit session.importStatusChanged:`,e));let r=t.source??t.adapterName;n!==`imported`||t.adapterSessionId===void 0||r===void 0||e.emit(s.import.completed,{sessionId:t.sessionId,adapterSessionId:t.adapterSessionId,source:r}).catch(e=>console.error(`[SessionStorage] Failed to emit session.import.completed:`,e))}function me(e,t){return e.on(n.rebindObserved,n=>{let r=n.payload,i=x(t,r.source,r.externalSessionId);if(!i){n.setResult({outcome:`not-found`});return}let a=fe(i,r);n.setResult({outcome:`rebound`,sessionId:i.sessionId}),a.length>0&&e.emit(s.updated,{sessionId:i.sessionId,changedProperties:a}).catch(e=>console.error(`[SessionStorage] Failed to emit session.updated:`,e))})}function he(e){let{bus:t,store:r,cloneSession:i,populateAgents:a}=e;return[t.on(n.importUpsert,e=>{let n=structuredClone(e.payload),i=x(r,n.source,n.externalSessionId),a=ne(),o=i===void 0,s=i??oe(n,crypto.randomUUID(),a);i?(le(i,n,a),i.parentExternalSessionId!==void 0&&i.parentSessionId===void 0&&b(r,i)):(r.set(s.sessionId,s),b(r,s)),ue(t,s,o),e.setResult({sessionId:s.sessionId,created:o})}),me(t,r),t.on(n.getByLogFilePath,async e=>{let n=Array.from(r.values()).find(t=>t.logFilePath===e.payload.logFilePath);if(!n){e.setResult({session:null});return}let o=await a(t,n.sessionId);e.setResult({session:{...i(n),agents:o}})}),t.on(n.listImported,async e=>{let{source:n,importStatus:o}=e.payload,s=Array.from(r.values()).filter(e=>e.isImported===!0).filter(e=>n===void 0||e.source===n).filter(e=>o===void 0||e.importStatus===o).sort((e,t)=>t.createdAt-e.createdAt),c=await Promise.all(s.map(async e=>({...i(e),agents:await a(t,e.sessionId)})));e.setResult({sessions:c})}),t.on(n.countBySource,e=>{let t=Array.from(r.values()).filter(t=>t.isImported===!0&&t.source===e.payload.source);e.setResult(de(t))}),t.on(n.updateImportStatus,e=>{let n=r.get(e.payload.sessionId),i=e.payload.importStatus;if(!n||n.importStatus===i){e.setResult({success:!1});return}n.importStatus=i,i===`imported`&&n.status===`discovered`&&(n.status=`active`),e.setResult({success:!0}),pe(t,n,i)})]}function S(e,t){e.emit(s.updated,{sessionId:t,changedProperties:[`generation`]}).catch(e=>console.error(`[SessionStorage] Failed to emit session.updated:`,e))}function C(e,t){let n=t.expectIdentityOpenForLead;return n===void 0?!1:e.adapterName!==void 0||e.adapterId!==void 0?!0:(e.leadAgentId??null)!==n}function w(e,t){let n=t.reconcileAdapterSession;if(n===void 0)return!1;if(e.adapterSessionId!==void 0||e.leadAgentId!==n.agentId)return!0;let r=e.adapterName===void 0&&e.adapterId===void 0,i=e.adapterName===n.adapterName&&e.adapterId===n.adapterId;return!r&&!i}async function T(t,n){let r=await t.requestOptional(e.listBySession,{sessionId:n});return r.handled?r.data.agents:[]}function E(e){return structuredClone(e)}function D(e,t,n){n!==void 0&&(e[t]=n)}function O(e,t,n){n!==void 0&&(e[t]=n??void 0)}function k(e,t){let n=e;return t.status!==`all`&&(n=n.filter(e=>e.status===t.status)),t.executionTargetId!==void 0&&(n=n.filter(e=>e.executionTargetId===t.executionTargetId)),n}function A(e,t){e.currentAdapterSessionId=t?.currentAdapterSessionId,e.currentAdapterSessionIdState=t?.currentAdapterSessionIdState??`inherited`,t!==null&&(e.leadAgentId=t.leadAgentId),e.generation=t?.generation??e.generation??0}function j(e,t){D(e,`status`,t.status),t.parentSessionId!==void 0&&(e.parentSessionId=t.parentSessionId??void 0),D(e,`contextInheritance`,t.contextInheritance),D(e,`rootSessionId`,t.rootSessionId),D(e,`forkPointMessageId`,t.forkPointMessageId),D(e,`branchKind`,t.branchKind),D(e,`isOrchestrated`,t.isOrchestrated),D(e,`clientId`,t.clientId),D(e,`clientAccountId`,t.clientAccountId),D(e,`lastClientIdentityObservation`,t.lastClientIdentityObservation),D(e,`title`,t.title),D(e,`targetWorkingDirectory`,t.targetWorkingDirectory),D(e,`createdAt`,t.createdAt),D(e,`lastActivityAt`,t.lastActivityAt),D(e,`machineId`,t.machineId),t.identity!==void 0&&(e.adapterName=t.identity.adapterName,e.adapterId=t.identity.adapterId,D(e,`adapterSessionId`,t.identity.adapterSessionId)),t.reconcileAdapterSession!==void 0&&(e.adapterName=t.reconcileAdapterSession.adapterName,e.adapterId=t.reconcileAdapterSession.adapterId,e.adapterSessionId=t.reconcileAdapterSession.adapterSessionId,e.lastActivityAt=t.reconcileAdapterSession.lastActivityAt),O(e,`executionTargetId`,t.executionTargetId),O(e,`approvalPolicyOverride`,t.approvalPolicyOverride),O(e,`metadata`,t.metadata),t.spawningToolCallId===null?e.spawningToolCallId=void 0:t.spawningToolCallId!==void 0&&e.spawningToolCallId===void 0&&(e.spawningToolCallId=t.spawningToolCallId),t.advanceGeneration===!0&&(e.generation=(e.generation??0)+1)}function M(e,t){return e.on(n.list,async n=>{let{status:r=`all`,limit:i,offset:a=0,includePreview:o=!1,executionTargetId:s}=n.payload,c=k(Array.from(t.values()),{status:r,executionTargetId:s});c.sort((e,t)=>t.lastActivityAt-e.lastActivityAt);let l=c.length;i!==void 0&&(c=c.slice(a,a+i));let u=await Promise.all(c.map(async t=>({...E(t),agents:await T(e,t.sessionId)}))),d=o?u.map(e=>({...e,preview:{messageCount:0,firstUserMessage:null}})):u;n.setResult({sessions:d,total:l})})}function N(e,t){return e.on(n.update,async n=>{let r=structuredClone(o.request.parse(n.payload)),i=t.get(r.sessionId);if(!i){n.setResult({success:!1,clientAccountChanged:!1});return}if(r.expectedStatus!==void 0&&!r.expectedStatus.includes(i.status)){n.setResult({success:!1,clientAccountChanged:!1});return}if(C(i,r)){n.setResult({success:!1,clientAccountChanged:!1});return}if(w(i,r)){n.setResult({success:!1,clientAccountChanged:!1});return}let a=E(i);p(a,{sessionId:i.sessionId,clientId:r.clientId??i.clientId,clientAccountId:r.clientAccountId??i.clientAccountId,lastClientIdentityObservation:r.lastClientIdentityObservation??i.lastClientIdentityObservation}),j(i,r),n.setResult({success:!0,clientAccountChanged:(a.clientAccountId??null)!==(i.clientAccountId??null)}),m(e,a,E(i)),r.advanceGeneration===!0&&S(e,r.sessionId)})}function P(e,t=d()){let r=t.sessions,i=[];return i.push(e.on(n.get,async t=>{let n=r.get(t.payload.sessionId);if(!n){t.setResult({session:null});return}let i=await T(e,t.payload.sessionId);t.setResult({session:{...E(n),agents:i}})})),i.push(e.on(n.set,async t=>{let{sessionId:n,session:i,ifAbsent:o}=a.parse(t.payload);if(o&&r.has(n)){t.setResult({success:!1,clientAccountChanged:!1});return}let s=structuredClone(i),c=r.get(n)??null,l=c?E(c):null;A(s,l),p(c,s),r.set(n,s),t.setResult({success:!0,clientAccountChanged:(l?.clientAccountId??null)!==(s.clientAccountId??null)}),m(e,l,E(s))})),i.push(e.on(n.delete,async e=>{let n=new Set;for(let[r,i]of t.agents)i.sessionId===e.payload.sessionId&&(n.add(r),t.agents.delete(r));f(t,t=>t.sessionId===e.payload.sessionId||n.has(t.agentId)),r.delete(e.payload.sessionId),e.setResult({success:!0}),await e.next()})),i.push(M(e,r)),i.push(e.on(n.getChildren,e=>{let{sessionId:t}=e.payload,n=Array.from(r.values()),i=n.filter(e=>e.parentSessionId===t),a=new Set(n.map(e=>e.parentSessionId).filter(e=>!!e)),o=i.map(e=>({sessionId:e.sessionId,title:e.title??null,forkPointMessageId:e.forkPointMessageId??null,branchKind:e.branchKind??null,messageCount:0,hasChildren:a.has(e.sessionId),spawningToolCallId:e.spawningToolCallId}));e.setResult({children:o})})),i.push(e.on(n.getStatusCounts,e=>{e.payload;let t=Array.from(r.values()),n=t.filter(e=>e.status===`active`).length,i=t.filter(e=>e.status===`closed`).length,a=t.filter(e=>e.status===`archived`).length,o=t.filter(e=>e.status===`discovered`).length;e.setResult({all:n+i+a+o,active:n,closed:i,archived:a,discovered:o})})),i.push(N(e,r)),i.push(F(e,r)),i.push(...he({bus:e,store:r,populateAgents:T,cloneSession:E})),()=>i.forEach(e=>e())}function F(t,r){return t.on(n.getByAdapterSessionId,async n=>{let{adapterSessionId:i,source:a,adapterName:o}=n.payload,s=Array.from(r.values()).filter(e=>e.adapterSessionId!==void 0&&e.adapterSessionId===i&&(a===void 0||e.source===a)&&(o===void 0||e.adapterName===o)),c=s[0];if(s.length!==1||c===void 0){n.setResult({session:null});return}let l=await t.requestOptional(e.listBySession,{sessionId:c.sessionId}),u=l.handled?l.data.agents:[];n.setResult({session:{...E(c),agents:u}})})}function I(e){return structuredClone(e)}function L(e,t){let{adapterId:n,runtimeOwner:r,adapterSessionId:i,cwd:a,model:o,allowedDirectories:s,providerConfigId:c}=t;return n===void 0&&r===void 0&&i===void 0&&a===void 0&&o===void 0&&s===void 0&&c===void 0?!1:(n!==void 0&&(e.adapterId=n),r!==void 0&&(e.runtimeOwner=structuredClone(r)),i!==void 0&&(e.adapterSessionId=i),a!==void 0&&(e.cwd=a),o!==void 0&&(e.model=o),s!==void 0&&(e.allowedDirectories=s),c===null?delete e.providerConfigId:c!==void 0&&(e.providerConfigId=c),!0)}function R(e){return{status:e.status,recoveryAttemptId:e.recoveryAttemptId,adapterSessionId:e.adapterSessionId,runtimeOwner:structuredClone(e.runtimeOwner),currentAdapterSessionId:e.currentAdapterSessionId,currentAdapterSessionIdState:e.currentAdapterSessionIdState,revision:e.revision,currencyFence:e.currencyFence}}function ge(e,t,n){let r=e.get(t),i=r===void 0?void 0:R(r);e.set(t,{...structuredClone(n),status:i?.status===`disposed`?`disposed`:n.status,recoveryAttemptId:i===void 0?n.recoveryAttemptId:i.recoveryAttemptId,adapterSessionId:i===void 0?n.adapterSessionId:i.adapterSessionId,runtimeOwner:i===void 0?structuredClone(n.runtimeOwner):i.runtimeOwner,currentAdapterSessionId:i?.currentAdapterSessionId,currentAdapterSessionIdState:i?.currentAdapterSessionIdState??`inherited`,revision:i?.revision??0,currencyFence:i?.currencyFence??0})}function z(e,t,n){let r=e.get(t);return r===void 0?!1:n(r)}function _e(e,t,n,r){let i=e.get(t);return i===void 0?{success:!1,transitioned:!1}:i.status===`disposed`||r!==void 0&&!r.includes(i.status)?{success:!0,transitioned:!1}:(i.status=n,i.lastActivityAt=Date.now(),{success:!0,transitioned:!0})}function ve(e,t){return f(e,e=>e.agentId===t),e.agents.delete(t)}function ye(t,n=d()){let r=n.agents,i=[];return i.push(t.on(e.get,e=>{let t=r.get(e.payload.agentId);e.setResult({agent:t===void 0?null:I(t)})})),i.push(t.on(e.set,e=>{ge(r,e.payload.agentId,e.payload.agent),e.setResult({success:!0})})),i.push(t.on(e.delete,e=>{e.setResult({success:ve(n,e.payload.agentId)})})),i.push(t.on(e.listByAdapter,e=>{let{adapterName:t,status:n}=e.payload,i=Array.from(r.values()).filter(e=>e.adapterName===t);n&&n!==`all`&&(i=i.filter(e=>e.status===n)),e.setResult({agents:i.map(I)})})),i.push(t.on(e.listBySession,e=>{let t=Array.from(r.values()).filter(t=>t.sessionId===e.payload.sessionId);e.setResult({agents:t.map(I)})})),i.push(t.on(e.updateStatus,e=>{let{agentId:t,status:n,expectedStatus:i}=e.payload;e.setResult(_e(r,t,n,i))})),i.push(t.on(e.updateActivity,e=>{let t=z(r,e.payload.agentId,t=>(t.lastActivityAt=e.payload.lastActivityAt,!0));e.setResult({success:t})})),i.push(t.on(e.updateRuntime,e=>{let{agentId:t,adapterId:n,runtimeOwner:i,adapterSessionId:a,cwd:o,model:s,allowedDirectories:c,providerConfigId:l}=structuredClone(e.payload),u=z(r,t,e=>L(e,{adapterId:n,runtimeOwner:i,adapterSessionId:a,cwd:o,model:s,allowedDirectories:c,providerConfigId:l})?(e.lastActivityAt=Date.now(),!0):!1);e.setResult({success:u})})),()=>i.forEach(e=>e())}function B(e,t,n,r){for(let i of e.values())if(i.machineId===t&&i.adapterId===n&&i.providerSessionId===r)return i}function V(e,t){for(let n of e.values())if(n.claimToken===t)return n}function be(e,t){let n=0;for(let r of e.values())r.agentId===t&&r.fence>n&&(n=r.fence);return n}function H(e,t,n){let r=e.agents.get(t)?.currencyFence??0;return 1+Math.max(n,r,be(e.claims,t))}function U(e,t){return`${e.length}:${e}${t}`}function W(e,t,n,r){let i=U(t,n),a=e.runtimeInstances.get(i);if(a!==void 0)return a;let o=1;for(let t of e.runtimeInstances.values())t.machineId===n&&t.incarnation>=o&&(o=t.incarnation+1);let s={instanceId:t,machineId:n,incarnation:o,startedAt:r,retiredAt:null};return e.runtimeInstances.set(i,structuredClone(s)),s}function G(e,t,n){if(n.ownerInstanceId===null)return!1;if(t.supersededClaimToken===n.claimToken||n.status===`held`&&n.agentId===t.agentId&&n.ownerInstanceId===t.ownerInstanceId)return!0;let r=e.runtimeInstances.get(U(n.ownerInstanceId,n.machineId));if(r?.retiredAt!==null&&r?.retiredAt!==void 0)return!0;if(t.topology===`machine-exclusive`){let n=e.runtimeInstances.get(U(t.ownerInstanceId,t.machineId));if(n!==void 0&&r!==void 0&&n.incarnation>r.incarnation)return!0}return!1}function K(e,t){let n=e.currentAdapterSessionIdState??`inherited`;if(n!==`inherited`)return{currentAdapterSessionId:e.currentAdapterSessionId,currentAdapterSessionIdState:n};let r=e.adapterSessionId??null;return r===t?{currentAdapterSessionId:void 0,currentAdapterSessionIdState:`inherited`}:r===null?{currentAdapterSessionId:void 0,currentAdapterSessionIdState:`moved`}:{currentAdapterSessionId:r,currentAdapterSessionIdState:`confirmed`}}function xe(e,t){if(t===`confirmed`!=(e!==null))throw Error(`Currency pairing invariant violated: confirmed ↔ id !== null (state="${t}", id=${e===null?`null`:`present`})`)}function q(e){return{adapterSessionId:e.adapterSessionId??null,currentAdapterSessionId:e.currentAdapterSessionId??null,currentAdapterSessionIdState:e.currentAdapterSessionIdState??`inherited`}}function J(e,t,n){if(t.recoveryGuard!==void 0&&e!==void 0&&(n.outcome===`claimed`||n.outcome===`idempotent`)){let r=t.recoveryAttemptId;if(r===void 0)throw Error(`guarded recovery claim requires recoveryAttemptId`);let i={status:e.status,adapterId:e.adapterId,...e.runtimeOwner===void 0?{}:{binding:{adapterId:e.adapterId,ownerMachineId:e.runtimeOwner.machineId,ownerInstanceId:e.runtimeOwner.instanceId}},...e.recoveryAttemptId===void 0?{}:{recoveryAttemptId:e.recoveryAttemptId}};if(e.status=`starting`,e.adapterId=t.adapterId,t.ownerInstance===void 0)throw Error(`guarded recovery claim requires ownerInstance`);return e.runtimeOwner={machineId:t.machineId,instanceId:t.ownerInstance.instanceId},e.recoveryAttemptId=r,e.lastActivityAt=Date.now(),{...n,recovery:{attemptId:r,preimage:i}}}return n}function Y(e,t,n){let r=e.sessions.get(t.sessionId);if(r===void 0)return{kind:`refused`,result:{outcome:`not-found`,missing:`session`}};if(r.status!==`active`&&(r.status!==`closed`||!l(t)))return{kind:`refused`,result:{outcome:`session-not-active`,status:r.status}};let i=r.leadAgentId??null,a=t.designateLead;if(a===void 0)return{kind:`ok`,leadDesignated:!1,previousLeadAgentId:i};let o=a.clear===!0,s=o?null:n.agentId;if(!o&&n.status===`disposed`)return{kind:`refused`,result:{outcome:`agent-disposed`}};if(!o&&i===n.agentId)return{kind:`ok`,leadDesignated:!1,previousLeadAgentId:i};if(i!==a.expectedLeadAgentId)return{kind:`conflict`,currentLeadAgentId:i};if(r.leadAgentId=s??void 0,!o){let e=K(n,r.adapterSessionId??null);r.currentAdapterSessionId=e.currentAdapterSessionId,r.currentAdapterSessionIdState=e.currentAdapterSessionIdState}return{kind:`ok`,leadDesignated:!0,previousLeadAgentId:i}}function X(e,t,n){if(!e.sessions.has(t.sessionId))return{kind:`refused`,result:{outcome:`not-found`,missing:`session`}};let r=e.agents.get(t.agentId);if(r===void 0||r.sessionId!==t.sessionId)return{kind:`refused`,result:{outcome:`not-found`,missing:`agent`}};if(r.status===`disposed`)return{kind:`refused`,result:{outcome:`agent-disposed`}};let i=V(e.claims,t.claimToken);if(i!==void 0&&i.claimId!==n?.claimId)throw Error(`UNIQUE constraint failed: adapter_session_claims.claim_token (uniq_adapter_session_claims_token): "${t.claimToken}" is already in use`);return{kind:`ok`,agent:r}}function Z(e,t,n){return{outcome:e,claim:t===null?null:structuredClone(t),leadDesignated:n.leadDesignated,previousLeadAgentId:n.previousLeadAgentId}}function Se(e,t){let n=X(e,t);if(n.kind===`refused`)return n.result;let r=Date.now(),i=crypto.randomUUID(),a={claimId:i,machineId:t.machineId,adapterId:t.adapterId,adapterName:t.adapterName,providerSessionId:t.providerSessionId,sessionId:t.sessionId,agentId:t.agentId,ownerInstanceId:t.ownerInstance.instanceId,claimToken:t.claimToken,fence:H(e,t.agentId,0),status:`held`,claimedAt:r,updatedAt:r};e.claims.set(i,structuredClone(a));let o=Y(e,t,n.agent);return o.kind===`ok`?Z(`claimed`,a,o):(e.claims.delete(i),o.kind===`conflict`?{outcome:`lead-conflict`,currentLeadAgentId:o.currentLeadAgentId}:o.result)}function Ce(e,t,n){let r=X(e,t,n);if(r.kind===`refused`)return r.result;let i=Date.now(),a={...n,claimToken:t.claimToken,fence:H(e,t.agentId,n.fence),agentId:t.agentId,sessionId:t.sessionId,adapterName:t.adapterName,ownerInstanceId:t.ownerInstance.instanceId,status:`held`,claimedAt:i,updatedAt:i};e.claims.set(n.claimId,structuredClone(a));let o=Y(e,t,r.agent);return o.kind===`ok`?Z(`claimed`,a,o):(e.claims.set(n.claimId,structuredClone(n)),o.kind===`conflict`?{outcome:`lead-conflict`,currentLeadAgentId:o.currentLeadAgentId}:o.result)}function we(e,t,n){if(n.status!==`held`)return{outcome:`already-claimed`,holder:structuredClone(n)};let r=X(e,t,n);if(r.kind===`refused`)return r.result;let i=Y(e,t,r.agent);return i.kind===`conflict`?{outcome:`lead-conflict`,currentLeadAgentId:i.currentLeadAgentId}:i.kind===`refused`?i.result:Z(`idempotent`,n,i)}function Te(e,t){let n=e.agents.get(t.agentId);if(n===void 0||n.sessionId!==t.sessionId)return{outcome:`not-found`,missing:`agent`};if(n.status===`disposed`&&t.designateLead?.clear!==!0)return{outcome:`agent-disposed`};let r=Y(e,t,n);return r.kind===`conflict`?{outcome:`lead-conflict`,currentLeadAgentId:r.currentLeadAgentId}:r.kind===`refused`?r.result:Z(`claimed`,null,r)}function Ee(e,t,n,r,i){let a=t.ownerInstance;if(a===void 0)throw Error(`keyed session ownership claim requires ownerInstance`);let o=U(a.instanceId,t.machineId),s=e.runtimeInstances.has(o);W(e,a.instanceId,t.machineId,Date.now());let c={...t,providerSessionId:n,ownerInstance:a};if(i===void 0){let n=Se(e,c);return!s&&n.outcome!==`claimed`&&e.runtimeInstances.delete(o),J(r,t,n)}if(i.claimToken===c.claimToken){if(i.agentId===c.agentId&&i.sessionId===c.sessionId){let n=we(e,c,i);return s||e.runtimeInstances.delete(o),J(r,t,n)}return s||e.runtimeInstances.delete(o),{outcome:`already-claimed`,holder:structuredClone(i)}}if(G(e,{machineId:c.machineId,agentId:c.agentId,ownerInstanceId:c.ownerInstance.instanceId,topology:c.topology,supersededClaimToken:c.supersedes?.claimToken},i)){let n=Ce(e,c,i);return!s&&n.outcome!==`claimed`&&e.runtimeInstances.delete(o),J(r,t,n)}return s||e.runtimeInstances.delete(o),{outcome:`already-claimed`,holder:structuredClone(i)}}function De(e,t,n){let r=t.ownerInstance,i=t.recoveryGuard===void 0||r===void 0?void 0:U(r.instanceId,t.machineId),a=i===void 0||e.runtimeInstances.has(i);i!==void 0&&r!==void 0&&W(e,r.instanceId,t.machineId,Date.now());let o=Te(e,t);return i!==void 0&&!a&&o.outcome!==`claimed`&&e.runtimeInstances.delete(i),J(n,t,o)}function Oe(e,n){let r=u(n),{providerSessionId:i}=r,a=e.agents.get(r.agentId),o=i===null?void 0:B(e.claims,r.machineId,r.adapterId,i);if(r.recoveryGuard!==void 0&&a!==void 0){let e=t(r,{status:a.status,adapterId:a.adapterId,runtimeOwner:a.runtimeOwner,recoveryAttemptId:a.recoveryAttemptId,revision:a.revision??0,currencyFence:a.currencyFence??0,currency:q(a)},o??null);if(e!==void 0)return e}return i===null?De(e,r,a):Ee(e,r,i,a,o)}function ke(e,t,n){let{agentId:r,claimToken:i,fence:a,expectedRevision:o,target:s}=n,c=t.revision??0,l=t.currencyFence??0;if(t.status===`disposed`)return{outcome:`agent-disposed`};let u=V(e.claims,i);if(u===void 0||u.agentId!==r||u.sessionId!==t.sessionId||u.status!==`held`||u.fence!==a)return{outcome:`not-owner`};if(a<l)return{outcome:`superseded`,currentFence:l};let d=q(t);if(d.currentAdapterSessionId===s.currentAdapterSessionId&&d.currentAdapterSessionIdState===s.currentAdapterSessionIdState&&l===a)return{outcome:`idempotent`,revision:c,currency:d,sessionSnapshotUpdated:!1};if(c!==o)return{outcome:`currency-changed`,revision:c,currency:d}}function Q(e,t,n){let r=ke(e,t,n);if(r!==void 0)return r;let{agentId:i,fence:a,expectedRevision:o,target:s}=n;xe(s.currentAdapterSessionId,s.currentAdapterSessionIdState);let c=t.adapterSessionId??null;t.currentAdapterSessionId=s.currentAdapterSessionId??void 0,t.currentAdapterSessionIdState=s.currentAdapterSessionIdState,t.currencyFence=a,t.revision=o+1,t.lastActivityAt=Date.now();let l=e.sessions.get(t.sessionId),u=!1;if(l!==void 0&&l.leadAgentId===i){let e=K(t,l.adapterSessionId??null);l.currentAdapterSessionId=e.currentAdapterSessionId,l.currentAdapterSessionIdState=e.currentAdapterSessionIdState,u=!0}return{outcome:`settled`,revision:o+1,currency:{adapterSessionId:c,...s},sessionSnapshotUpdated:u}}function Ae(e,t,n){let r=V(e.claims,t);if(!(r===void 0||r.claimId===n))throw Error(`UNIQUE constraint failed: adapter_session_claims.claim_token (uniq_adapter_session_claims_token): "${t}" is already in use`)}function je(e,t){if(!(t===void 0||t.agentId!==e.agentId||t.status!==`held`||t.ownerInstanceId!==null&&t.ownerInstanceId!==e.ownerInstance.instanceId))return{generation:t,rollback:()=>{}}}function Me(e,t,n){if(t.ownerInstanceId!==null)return t;let r={...t,ownerInstanceId:n};return e.claims.set(r.claimId,structuredClone(r)),r}function Ne(e,t,n){let{machineId:r,adapterId:i,agentId:a}=t,o=B(e.claims,r,i,n),s,c,l=je(t,o);if(l!==void 0)s=l.generation,c=l.rollback;else if(o!==void 0&&!G(e,{machineId:r,agentId:a,ownerInstanceId:t.ownerInstance.instanceId,topology:t.topology},o))return{outcome:`already-claimed`,holder:structuredClone(o)};else{let l=Date.now(),u=o?.claimId??crypto.randomUUID();Ae(e,t.movement.claimToken,u),s={claimId:u,machineId:r,adapterId:i,adapterName:t.adapterName,providerSessionId:n,sessionId:t.sessionId,agentId:a,ownerInstanceId:t.ownerInstance.instanceId,claimToken:t.movement.claimToken,fence:H(e,a,o?.fence??0),status:`held`,claimedAt:l,updatedAt:l},e.claims.set(u,structuredClone(s)),c=o===void 0?()=>{e.claims.delete(u)}:()=>{e.claims.set(u,structuredClone(o))}}let u=t.movement.kind===`confirmed`?Array.from(e.claims.values()).filter(e=>e.agentId===a&&e.status===`held`&&e.claimId!==s.claimId):[];for(let t of u)e.claims.delete(t.claimId);return{generation:s,releasedProviderSessionIds:u.map(e=>e.providerSessionId),rollback:()=>{for(let t of u)e.claims.set(t.claimId,structuredClone(t));c()}}}function Pe(e,t){if(e.kind===`confirmed`)return{providerSessionId:e.providerSessionId,currency:{currentAdapterSessionId:e.providerSessionId,currentAdapterSessionIdState:`confirmed`}};let n=c(q(t));return n===null?null:{providerSessionId:n,currency:{currentAdapterSessionId:null,currentAdapterSessionIdState:`moved`}}}function $(e,t){return e.on(i.read,e=>{let{agentId:n}=e.payload,r=t.agents.get(n);if(r===void 0){e.setResult({ownership:null});return}let i=Array.from(t.claims.values()).filter(e=>e.agentId===n).sort((e,t)=>e.fence-t.fence||e.claimId.localeCompare(t.claimId));e.setResult({ownership:{agentId:n,sessionId:r.sessionId,currency:q(r),revision:r.revision??0,currencyFence:r.currencyFence??0,claims:i.map(e=>structuredClone(e))}})})}function Fe(e,t){return e.on(i.settleCurrency,e=>{let n=t.agents.get(e.payload.agentId);if(n===void 0){e.setResult({outcome:`not-found`});return}e.setResult(Q(t,n,e.payload))})}function Ie(e,t){return e.on(i.finalizeRecovery,e=>{let{agentId:n,attemptId:r,binding:i,action:a}=e.payload,o=t.agents.get(n);if(o===void 0||o.status!==`starting`||o.recoveryAttemptId!==r||o.adapterId!==i.adapterId||o.runtimeOwner?.machineId!==i.ownerMachineId||o.runtimeOwner?.instanceId!==i.ownerInstanceId){e.setResult({applied:!1});return}a.kind===`rollback`?(o.status=a.preimage.status,o.adapterId=a.preimage.adapterId,o.runtimeOwner=a.preimage.binding===void 0?void 0:{machineId:a.preimage.binding.ownerMachineId,instanceId:a.preimage.binding.ownerInstanceId},o.recoveryAttemptId=a.preimage.recoveryAttemptId):(o.status=a.kind===`succeeded`?`idle`:`dead`,o.recoveryAttemptId=void 0),o.lastActivityAt=Date.now(),e.setResult({applied:!0})})}function Le(e,t){return e.on(i.settleMovement,e=>{let n=r.parse(e.payload),i=n.ownerInstance;if(i===void 0)throw Error(`session ownership movement requires ownerInstance`);let a=U(i.instanceId,n.machineId),o=t.runtimeInstances.has(a);W(t,i.instanceId,n.machineId,Date.now());let s={...n,ownerInstance:i},c=t.agents.get(n.agentId);if(c===void 0||c.sessionId!==n.sessionId){o||t.runtimeInstances.delete(a),e.setResult({outcome:`not-found`});return}if(c.status===`disposed`){o||t.runtimeInstances.delete(a),e.setResult({outcome:`agent-disposed`});return}let l=Pe(s.movement,c);if(l===null){o||t.runtimeInstances.delete(a),e.setResult({outcome:`idempotent`,revision:c.revision??0,currency:q(c),sessionSnapshotUpdated:!1,claim:null});return}let u=Ne(t,s,l.providerSessionId);if(!(`generation`in u)){o||t.runtimeInstances.delete(a),e.setResult(u);return}let d=Q(t,c,{agentId:n.agentId,claimToken:u.generation.claimToken,fence:u.generation.fence,expectedRevision:n.expectedRevision,target:l.currency});if(d.outcome!==`settled`){u.rollback(),o||t.runtimeInstances.delete(a),e.setResult(d.outcome===`idempotent`?{...d,claim:structuredClone(u.generation)}:d);return}let f=Me(t,u.generation,i.instanceId);e.setResult({outcome:`settled`,revision:d.revision,currency:d.currency,sessionSnapshotUpdated:d.sessionSnapshotUpdated,releasedProviderSessionIds:u.releasedProviderSessionIds,claim:structuredClone(f)})})}function Re(e,t){return e.on(i.releaseAgentClaims,e=>{let{agentId:n,claimToken:r,disposition:i}=e.payload,a=Array.from(t.claims.values()).filter(e=>e.agentId===n&&(r===void 0||e.claimToken===r));if(i===`released`){for(let e of a)t.claims.delete(e.claimId);e.setResult({releasedProviderSessionIds:a.map(e=>e.providerSessionId),markedClaims:[],claimTokenNotFound:r!==void 0&&a.length===0});return}let o=Date.now(),s=a.map(e=>{let n={...e,status:i,updatedAt:o};return t.claims.set(e.claimId,structuredClone(n)),n});e.setResult({releasedProviderSessionIds:[],markedClaims:s,claimTokenNotFound:r!==void 0&&a.length===0})})}function ze(e,t){return e.on(i.release,e=>{let{agentId:n,claimToken:r,disposition:i}=e.payload,a=V(t.claims,r);if(a===void 0){e.setResult({outcome:`not-found`});return}if(a.agentId!==n){e.setResult({outcome:`not-owner`,holder:structuredClone(a)});return}if(i===`released`){t.claims.delete(a.claimId),e.setResult({outcome:`released`});return}let o={...a,status:i,updatedAt:Date.now()};t.claims.set(a.claimId,structuredClone(o)),e.setResult({outcome:`marked`,claim:structuredClone(o)})})}function Be(e,t){return e.on(i.listClaims,e=>{let{machineId:n,adapterId:r,providerSessionId:i,statuses:a}=e.payload,o=Array.from(t.claims.values()).filter(e=>e.machineId===n&&(r===void 0||e.adapterId===r)&&(i===void 0||e.providerSessionId===i)&&(a===void 0||a.includes(e.status)));o.sort((e,t)=>e.claimedAt-t.claimedAt||e.claimId.localeCompare(t.claimId)),e.setResult({claims:o.map(e=>structuredClone(e))})})}function Ve(e,t){return e.on(i.retireInstance,e=>{let n=Date.now(),r=0;for(let[i,a]of t.runtimeInstances)a.instanceId!==e.payload.instanceId||a.retiredAt!==null||(t.runtimeInstances.set(i,{...a,retiredAt:n}),r+=1);e.setResult({retiredMachines:r})})}function He(e,t){return e.on(i.getRuntimeInstance,e=>{let n=t.runtimeInstances.get(U(e.payload.instanceId,e.payload.machineId));e.setResult({instance:n===void 0?null:structuredClone(n)})})}function Ue(e,t=d()){let n=[$(e,t),Ie(e,t),e.on(i.claim,e=>{e.setResult(Oe(t,e.payload))}),Fe(e,t),Le(e,t),ze(e,t),Re(e,t),Be(e,t),Ve(e,t),He(e,t)];return()=>{for(let e=n.length-1;e>=0;--e)n[e]?.()}}export{C as a,g as c,p as d,m as f,w as i,h as l,ye as n,S as o,d as p,P as r,_ as s,Ue as t,te as u};
|
|
@@ -1,95 +0,0 @@
|
|
|
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-Cz6-4_Dn.mjs";import{a as u,n as d,o as f}from"./namespace-CMntzAPI.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-mjky_fP2.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-C9h8K1jo.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-D6GIZ5DC.mjs";import{n as Ge}from"./namespace-Bo6-o_rW.mjs";import{a as Ke,c as qe,d as Je,f as Ye,i as Xe,l as Ze,o as Qe,s as $e,u as et}from"./ownership-memory-handler-BOhmmlJj.mjs";import{z as D}from"zod";import{createBusNamespace as tt}from"@makaio/framework/core";import{AdapterSubjects as O,AgentSubjects as k,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 A,SessionRecordMetadataSchema as mt,SessionStorageSetRequestSchema as ht,SessionStorageUpdateSchema as gt,SessionSubjects as j,TurnIngestionMarkerSchema as _t,compareMessageCursorAsc as vt,compareMessageCursorDesc as yt,isCanonicalModelParseError as bt,isInactiveSafeLeadDesignationMutation as xt,messageToCursor as M,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 N,executeTransaction as P,getRawSqlExecutor as Ut,getStorageEngine as Wt,resolveSchema as F,resolveStorageEngine as Gt}from"@makaio/framework/storage/drizzle";import{and as I,asc as Kt,count as qt,desc as Jt,eq as L,gt as Yt,gte as Xt,inArray as R,isNotNull as Zt,isNull as z,lt as Qt,lte as $t,ne as en,not as tn,or as nn,sql as B}from"drizzle-orm";import{createStorageNamespaceDefinition as rn}from"@makaio/framework/storage";import{ClientIdentityObservationSchema as an}from"@makaio/framework/contracts/client";import{ImportCursorStorageSubjects as on}from"@makaio/framework/adapters";async function sn(e,t,n,r){try{let t=await e.requestOptional(A.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(O.stopAgent,{adapterId:n.adapterId,agentId:t,ownerInstanceId:n.ownerInstanceId,...r&&{teardown:`connector-only`}});return i.handled&&Tt(i.data.evidence)}catch{return!1}}function cn(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 ln(e,t,n={releaseClaims:!0}){let r=await e.requestOptional(A.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=cn(a,s?.runtimeOwner,s?.adapterId),l=c!==null&&await Promise.all(c.map(r=>sn(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(j.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(j.ownership.release,{agentId:t,disposition:`abandoned`})}catch{}return{released:!1,claimCount:a.length}}}function un(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 dn(e){return Error(`[session.agent.removed] Failed to terminalize agent ${e}`)}async function fn(e){try{await e();return}catch(e){return e}}function pn(e){return e.on(j.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`&&un(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 mn(e,t.payload,n);return}await e.requestOptional(T.update,{sessionId:t.payload.sessionId,lastActivityAt:Date.now()})})}async function mn(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 hn(e){return e.on(j.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 fn(async()=>{let n=await e.requestOptional(w.updateStatus,{agentId:t.payload.agentId,status:`disposed`});if(!n.handled||!n.data.success)throw dn(t.payload.agentId)}),i=await fn(async()=>{await fe(e,{sessionId:t.payload.sessionId,agentId:t.payload.agentId,expectedLeadAgentId:t.payload.agentId,clear:!0})}),a=await fn(async()=>{await ln(e,t.payload.agentId,{releaseClaims:r===void 0})}),o=await fn(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 gn(e){return e.on(k.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 _n(e,t){try{let n=await e.requestOptional(O.getCapabilities,{adapterId:t});return n.handled?new Set(n.data.capabilities).has(`session:resume`):!1}catch{return!1}}async function vn(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 yn(e,t,n,r,i){let a=pe(t,n);return he(_e({intent:`resume`,session:t,localMachineId:i,adapterSupportsNative:await _n(e,r),targetAdapterName:n.adapterName,currentCwd:n.cwd,targetCwd:n.cwd,resumeIdentity:a}),a.adapterSessionId)}function bn(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 xn(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 yn(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 bn({agentId:i,storedAdapterId:a},s)}return{agentId:i,adapterId:a,success:!1,error:`Agent restart exhausted its recovery-plan retry`}}function Sn(e){let t=e instanceof Error?e.cause:void 0;return t instanceof Error?t.message:e instanceof Error?e.message:String(e)}function Cn(e){return e.on(j.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 vn(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 xn(e,l,t,s))}catch(e){o.push({agentId:t.agentId,adapterId:t.adapterId,success:!1,error:Sn(e)})}}t.setResult({sessionId:n,results:o})})}function wn(e){let t=be({bus:e.bus,machineId:e.machineId,topology:e.topology??`shared-machine`,...e.instanceId!==void 0&&{instanceId:e.instanceId}});return{cleanups:[Dn(e),On(e),kn(e),Tn(e),An(e),Cn(e.bus),jn(e),Mn(e),Nn(e),pn(e.bus),hn(e.bus),gn(e.bus),...t.cleanups,Ee(e.bus)],ownership:t.ownership}}function Tn(e){let{bus:t}=e;return t.on(j.turn.await,async e=>{let{sessionId:n,turnId:r,timeoutMs:i}=e.payload,a=new AbortController,o=t.once(j.turn.completed,{timeoutMs:i,filter:{sessionId:n,turnId:r},signal:a.signal});o.catch(()=>void 0);let s=await En(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 En(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 Dn(e){let{bus:t}=e;return t.on(j.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(j.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(j.created,{sessionId:h,createdAt:ee.createdAt,parentSessionId:r??null,branchKind:o??null,originWindowId:p??`server`}),e.setResult({sessionId:h})})}function On(e){let{bus:t}=e;return t.on(j.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 kn(e){let{bus:t}=e;return t.on(j.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 An(e){let{bus:t}=e;return t.on(j.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(j.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 jn(e){let{bus:t}=e;return t.on(j.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(j.updated,{sessionId:n,changedProperties:e})}e.setResult({success:c})})}function Mn(e){let{bus:t}=e;return t.on(j.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(j.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 Nn(e){let{bus:t}=e;return t.on(j.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=>ln(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(j.purged,{sessionId:n}),e.setResult({success:!0,eventsDeleted:u})})}var Pn=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=wn({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(j.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(j.turn.completed,t)}}catch(t){console.error(`[MakaioSessionService] Failed to reconcile orphaned turn ${e.turnId}:`,t)}}};function Fn(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 In=class{bus;registry=new Map;cleanup;constructor(e){this.bus=e;let t=this.bus.on(O.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(O.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 Fn(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 Fn(e,t)}}destroy(){this.cleanup?.(),this.cleanup=void 0,this.registry.clear()}};async function Ln(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 Rn(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 zn(e){let{bus:t,db:n}=e,{messages:r}=F(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 Ln(t,s)})}function Bn(e){let{bus:t,db:n}=e,{messages:r}=F(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`?Jt:Kt,l=n.select().from(r).where(L(r.sessionId,t)).orderBy(c(r.timestamp),c(r.messageId));if(a){let e=s===`desc`?nn(Qt(r.timestamp,a.timestamp),I(L(r.timestamp,a.timestamp),o?$t(r.messageId,a.messageId):Qt(r.messageId,a.messageId))):nn(Yt(r.timestamp,a.timestamp),I(L(r.timestamp,a.timestamp),o?Xt(r.messageId,a.messageId):Yt(r.messageId,a.messageId)));l=n.select().from(r).where(I(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?M(p[p.length-1]):null;e.setResult({messages:p.map(Rn),nextCursor:m})})}function Vn(e){let{bus:t,db:n}=e,{messages:r}=F(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(Rn)})})}function Hn(e){let{bus:t,db:n}=e,{messages:r}=F(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?Rn(i):null})})}function Un(e){let{bus:t,db:n}=e,{messages:r}=F(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(Rn),total:l})})}function Wn(e){let{bus:t,db:n}=e,{messages:r}=F(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 Gn(e){let{bus:t,db:n}=e,{messages:r}=F(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?Rn(i):null})})}function Kn(e){let{bus:t,db:n}=e,{messages:r}=F(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(I(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(I(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 Ln(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 qn(e,t){let n={bus:e,db:t},r=[zn(n),Bn(n),Vn(n),Hn(n),Un(n),Wn(n),Kn(n),Gn(n)];return()=>r.forEach(e=>e())}function Jn(e,t){return vt(M(e),M(t))}function Yn(e,t){return yt(M(e),M(t))}function Xn(e,t){let n=e.get(t);if(n!==void 0)return n;let r=new Map;return e.set(t,r),r}function Zn(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 Qn(e){let t=new Map,n=new Map,r=new Map,i=new Map,a=$n(t,n,r,i),o=[er(e,t,a),tr(e,t,n),nr(e,t,r),rr(e,t),ir(e,t),ar(e,t,r,i,a),or(e,t,n,r,i)];return()=>o.forEach(e=>e())}function $n(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&&Xn(r,i.sessionId).set(i.adapterMessageId,i.messageId)}}function er(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 Ln(e,o)})}function tr(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`?Yn:Jn,u=c.map(e=>t.get(e)).filter(e=>!!e).sort(l);a&&(u=u.filter(e=>{let t=s===`desc`?yt(M(e),a):vt(M(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?M(p[p.length-1]):null;e.setResult({messages:p,nextCursor:m})})}function nr(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(Jn);e.setResult({messages:i})})}function rr(e,t){return e.on(E.get,async e=>{e.setResult({message:t.get(e.payload.messageId)??null})})}function ir(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(Jn),e.setResult({messages:c.slice(0,a),total:c.length})})}function ar(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){Zn(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 Ln(e,v)})}function or(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 sr=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)]}),cr=sr.sqlite,lr=rn(`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:cr}}}),H=lr.subjects,ur=sr.postgres,dr=Vt({messageRouting:cr},{messageRouting:ur});function fr(e){return{messageId:e.messageId,agentId:e.agentId,status:e.status,timestamp:e.timestamp,error:e.error??void 0}}function pr(e,t){let{messageRouting:n}=F(t,dr),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(fr)})})),r.push(e.on(H.getCompleted,async e=>{let{messageId:r}=e.payload,i=await t.select().from(n).where(I(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(I(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 mr=`[session.sendMessage]`,hr={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 gr(e,t,n){let r=W(e,n);return{recovering:r,arbitrated:new Set([...W(t,n)].filter(e=>r.has(e)))}}function _r(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 vr(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=_r(f,t.sessionId);let n=await br(e,t,o,d,l);o=n.targetAgents,{recovering:s,arbitrated:c}=gr(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 yr(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=_r(f,t.sessionId);let n=await br(e,t,o,d,l);if(o=n.targetAgents,{recovering:s,arbitrated:c}=gr(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 yr(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 yr(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(O.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 br(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:hr.recoveringAgentIds,arbitrated:hr.arbitratedAgentIds,deferred:hr.deferredAgentIds};Re(t.targetSpec)!==`lead-default`&&Pe(mr,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(mr,t.sessionId,i),{targetAgents:c,recovering:s.recoveringAgentIds,arbitrated:s.arbitratedAgentIds,deferred:s.deferredAgentIds,recoveryContext:await ee(e.bus,t.session,je)}}const xr={writesAgentStatus:!0,connectorOnlyTeardown:!0};function Sr(e,t){return e.leadTransition.kind===`replace`?{...xr,reservation:t}:xr}async function Cr(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(j.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 wr(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 Tr(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(O.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 wr(e,t,n,i,o,r.ownerInstanceId,a)}async function Er(e,t,n){await ue(e,n,void 0,{sessionId:t.sessionId,agentId:n,expectedLeadAgentId:t.expectedLeadAgentId,transition:t.leadTransition.kind})}async function Dr(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 Cr(e,t,n)}catch(r){throw await Er(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=Sr(t,a),s=new ke([a.claim?.claimToken]),c=await Tr(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 Or(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 Dr(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 kr(e){return{source:e.source,...e.sourceId!==void 0&&{sourceId:e.sourceId}}}var Ar=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(kr(e.initiator??{source:`user`})),this._agentIds=Object.freeze([...e.agentIds])}get agentIds(){return this._agentIds}get initiator(){return kr(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])}},jr=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 Mr=Symbol(`turnReservation`);var Nr=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,[Mr]:!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()}},Pr=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(j.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 Fr(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 Ir(e){return{status:e.success?`completed`:`error`,error:e.errors.length>0?e.errors.join(`; `):void 0}}function Lr(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 Rr(e,t,n,r,i){let a=Ir(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(Lr(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||!Lr(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 zr(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 Rr(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 Br(e,t,n){return[e.on(k.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(k.complete,async r=>{let{agentId:i,outcome:a,error:o,turnId:s,messageId:c}=r.payload;r.payload._import||!s||await Vr(e,t,{agentId:i,messageId:c,outcome:a??`completed`,error:a===`error`?o:void 0,turnId:s,onTurnComplete:n})})]}async function Vr(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(j.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 Hr=class{bus;turnSlots=new Nr;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 Pr(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 Ar({sessionId:i,agentIds:t,turnId:o,turnNumber:s,initiator:n});return this.turnSlots.activate(e,c),this.usageAccumulators.set(c.turnId,new jr),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 Fr(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(...Br(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 Rr(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 zr({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 zr({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(j.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 Vr(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 Ur(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 Wr(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 Gr(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 Gr(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 Kr(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 qr(e,t,n){let r=await Ur(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 Kr(e,t,{...n,adapterName:r}),o=await i;return{adapterName:r,instance:a,providerContext:o,providerConfigId:t.providerConfigId??o?.providerConfigId}}var Jr=class{bus;turnManager;adapterRegistry;machineId;cleanups=[];constructor(e=Et,t){this.bus=e,this.machineId=t,this.turnManager=new Hr(e),this.adapterRegistry=new In(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(j.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 vr({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 Wr(this.bus,n,t,r,i),{adapterName:s,instance:c,providerContext:l,providerConfigId:u}=await qr(this.bus,o,{sessionId:t,machineId:this.machineId,registry:this.adapterRegistry}),d=await Or(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(j.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()}},Yr=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 Xr(e){let{bus:t}=e;return t.on(j.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 Zr(e){let{bus:t}=e;return t.on(j.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(j.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 Qr(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 $r=[{actionId:`strip-reasoning`},{actionId:`strip-tool-outputs`}];function ei(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 ti=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(j.agent.added,e=>{this.agentToSession.set(e.payload.agentId,e.payload.sessionId)})),this.cleanups.push(this.bus.on(j.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(j.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(j.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(j.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(j.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(j.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(k.message,e=>{let t=this.pendingForProviderEvent(e.payload);t&&t.blocks.push({type:`text`,content:e.payload.content})})),this.cleanups.push(this.bus.on(k.reasoning,e=>{let t=this.pendingForProviderEvent(e.payload);t&&t.blocks.push({type:`reasoning`,content:e.payload.content})})),this.cleanups.push(this.bus.on(k.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(k.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(k.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(j.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])}},ni=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(j.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(j.fork,{sourceSessionId:this._sessionId,name:e.reason})).sessionId}async merge(e,t){await this.bus.request(j.merge,{parentSessionId:this._sessionId,childSessionId:e,summary:t,source:`extension`,extensionId:this._extensionId})}async abandon(e){await this.bus.request(j.abandon,{parentSessionId:this._sessionId,childSessionId:e,source:`extension`,extensionId:this._extensionId})}async requestCompression(e){await this.bus.emit(j.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(j.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(j.getChildren,{sessionId:this._sessionId})).children.map(e=>e.sessionId)}};function ri(e,t,n,r,i,a){return new ni(e,t,n,r,i,a)}const ii=l.postgres,ai=r.postgres,oi=a.postgres,si=s.postgres,ci=t.postgres,G=Vt({sessions:c,agents:n,runtimeInstanceIncarnationCounters:i,runtimeInstances:o,adapterSessionClaims:e},{sessions:ii,agents:ai,runtimeInstanceIncarnationCounters:oi,runtimeInstances:si,adapterSessionClaims:ci});function li(e,t){let n=e?.clientId??null,r=e?.clientAccountId??null,i=e?.lastClientIdentityObservation??null;return I(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 ui(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 di(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 fi(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 pi(e){let t;for(let n=e.length-1;n>=0;--n)try{e[n]?.()}catch(e){t??=e}if(t)throw t}function mi(e){let{bus:t,db:n}=e,{agents:r}=F(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?ui(t):null})})}function hi(e){let{bus:t,db:n}=e,{agents:r}=F(n,G);return t.on(w.set,async e=>{let{agent:t}=e.payload,i=di(t),a=await n.insert(r).values(i).onConflictDoUpdate({target:r.agentId,set:fi(i,r)});e.setResult({success:N(a)})})}function gi(e){let{bus:t,db:n}=e,{agents:r}=F(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:N(t)})})}function _i(e){let{bus:t,db:n}=e,{agents:r}=F(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?I(...a):a[0],s=await n.select().from(r).where(o);e.setResult({agents:s.map(ui)})})}function vi(e){let{bus:t,db:n}=e,{agents:r}=F(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(ui)})})}function yi(e){let{bus:t,db:n}=e,{agents:r}=F(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),en(r.status,`disposed`)];if(a&&s.push(R(r.status,a)),N(await n.update(r).set({status:i,lastActivityAt:o}).where(I(...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 bi(e){let{bus:t,db:n}=e,{agents:r}=F(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:N(a)})})}function xi(e){let{bus:t,db:n}=e,{agents:r}=F(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:N(f)})})}function Si(e,t){let n={bus:e,db:t},r=[mi(n),hi(n),gi(n),_i(n),vi(n),yi(n),bi(n),xi(n)];return()=>pi(r)}function K(e){return e??void 0}function Ci(e){if(e)try{let t=JSON.parse(e),n=an.safeParse(t);return n.success?n.data:void 0}catch{return}}function wi(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=wi(e.forkTransforms),r=Ci(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),generation:e.generation,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(ui),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 Ti(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 Ei(e,t,n){if(!n||t.length===0)return{};let{messages:r}=F(e,f),i=e.select({sessionId:r.sessionId,minTimestamp:B`MIN(${r.timestamp})`.as(`min_timestamp`)}).from(r).where(I(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,I(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:qt()}).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 Di(e,t){return{sessionId:e.sessionId,clientId:t.clientId??e.clientId,clientAccountId:t.clientAccountId??e.clientAccountId,lastClientIdentityObservation:t.lastClientIdentityObservation??e.lastClientIdentityObservation}}function Oi(e){return e.clientId!==void 0||e.clientAccountId!==void 0||e.lastClientIdentityObservation!==void 0}function ki(e){let{bus:t,db:n}=e,{sessions:r,agents:i}=F(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(I(...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 Ai(e){let{bus:t,db:n}=e,{sessions:r}=F(n,G),{messages:i}=F(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:qt()}).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:qt()}).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(I(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 ji(e){return{...e.cwd===void 0?{}:{targetWorkingDirectory:e.cwd},...e.logFilePath===void 0?{}:{logFilePath:e.logFilePath},...e.machineId===void 0?{}:{machineId:e.machineId}}}function Mi(e){return e.startMode===`compact`}function Ni(e){let{bus:t,db:n}=e,{sessions:r}=F(n,G);return t.on(T.rebindObserved,async e=>{let i=e.payload,a=I(L(r.source,i.source),L(r.adapterSessionId,i.externalSessionId)),o=ji(i),s=Object.keys(o),c=Mi(i);c&&s.push(`generation`);let l=c?{...o,generation:B`${r.generation} + 1`}:{...o},[u]=s.length===0?await n.select({sessionId:r.sessionId}).from(r).where(a).limit(1):await n.update(r).set(l).where(a).returning({sessionId:r.sessionId});if(!u){e.setResult({outcome:`not-found`});return}e.setResult({outcome:`rebound`,sessionId:u.sessionId}),s.length>0&&t.emit(j.updated,{sessionId:u.sessionId,changedProperties:s}).catch(e=>console.error(`[SessionStorage] Failed to emit session.updated:`,e))})}const Pi=qe();function Fi(e){return e?JSON.stringify(e):null}function Ii(e,t){return B`
|
|
3
|
-
SELECT ${t}.key AS key,
|
|
4
|
-
CASE ${t}.type
|
|
5
|
-
WHEN 'object' THEN ${t}.value
|
|
6
|
-
WHEN 'array' THEN ${t}.value
|
|
7
|
-
WHEN 'true' THEN 'true'
|
|
8
|
-
WHEN 'false' THEN 'false'
|
|
9
|
-
WHEN 'null' THEN 'null'
|
|
10
|
-
WHEN 'text' THEN json_quote(${t}.value)
|
|
11
|
-
ELSE CAST(${t}.value AS TEXT)
|
|
12
|
-
END AS vjson
|
|
13
|
-
FROM json_each(${e}) AS ${t}
|
|
14
|
-
`}function Li(e,t){let n=t===`postgres`?B`excluded.metadata || ${e.metadata}`:B`(
|
|
15
|
-
SELECT json_group_object(mk.key, json(mk.vjson)) FROM (
|
|
16
|
-
${Ii(B`excluded.metadata`,B`inc`)}
|
|
17
|
-
WHERE inc.key NOT IN (SELECT ex2.key FROM json_each(${e.metadata}) AS ex2)
|
|
18
|
-
UNION ALL
|
|
19
|
-
${Ii(B`${e.metadata}`,B`ex`)}
|
|
20
|
-
) AS mk
|
|
21
|
-
)`;return B`
|
|
22
|
-
CASE
|
|
23
|
-
WHEN ${e.metadata} IS NULL THEN excluded.metadata
|
|
24
|
-
WHEN excluded.metadata IS NULL THEN ${e.metadata}
|
|
25
|
-
ELSE ${n}
|
|
26
|
-
END
|
|
27
|
-
`}function Ri(e,t,n){return t===void 0?B`${e}`:B`
|
|
28
|
-
CASE
|
|
29
|
-
WHEN ${n.discoveredAt} IS NULL OR ${e} = ${n.discoveredAt} THEN ${t}
|
|
30
|
-
ELSE ${e}
|
|
31
|
-
END
|
|
32
|
-
`}function zi(e){return B`
|
|
33
|
-
CASE
|
|
34
|
-
WHEN ${e.importStatus} = 'imported' OR excluded.import_status = 'imported' THEN 'imported'
|
|
35
|
-
WHEN ${e.importStatus} = 'tracking' OR excluded.import_status = 'tracking' THEN 'tracking'
|
|
36
|
-
ELSE COALESCE(${e.importStatus}, excluded.import_status, 'discovered')
|
|
37
|
-
END
|
|
38
|
-
`}function Bi(e,t){return t===`live`?B`
|
|
39
|
-
CASE
|
|
40
|
-
WHEN ${e.status} = 'discovered' THEN 'active'
|
|
41
|
-
ELSE ${e.status}
|
|
42
|
-
END
|
|
43
|
-
`:B`
|
|
44
|
-
CASE
|
|
45
|
-
WHEN ${e.status} IN ('closed', 'archived') THEN ${e.status}
|
|
46
|
-
WHEN ${e.status} = 'active' AND ${e.isImported} = TRUE THEN ${e.status}
|
|
47
|
-
WHEN ${zi(e)} = 'discovered' THEN excluded.status
|
|
48
|
-
ELSE ${e.status}
|
|
49
|
-
END
|
|
50
|
-
`}function Vi(e,t,n,r,i){return{status:Bi(e,i),isImported:!0,importStatus:zi(e),adapterName:B`COALESCE(${e.adapterName}, excluded.adapter_name)`,discoveredAt:B`COALESCE(${e.discoveredAt}, excluded.discovered_at)`,source:B`COALESCE(${e.source}, excluded.source)`,logFilePath:B`COALESCE(${e.logFilePath}, excluded.log_file_path)`,targetWorkingDirectory:B`COALESCE(excluded.target_working_directory, ${e.targetWorkingDirectory})`,title:B`COALESCE(excluded.title, ${e.title})`,forkPointMessageId:B`COALESCE(${e.forkPointMessageId}, excluded.fork_point_message_id)`,parentExternalSessionId:B`COALESCE(${e.parentExternalSessionId}, excluded.parent_external_session_id)`,branchKind:B`COALESCE(${e.branchKind}, excluded.branch_kind)`,adapterId:B`COALESCE(excluded.adapter_id, ${e.adapterId})`,clientId:B`COALESCE(excluded.client_id, ${e.clientId})`,isSidechain:B`COALESCE(excluded.is_sidechain, ${e.isSidechain})`,lastClientIdentityObservation:B`COALESCE(excluded.last_client_identity_observation, ${e.lastClientIdentityObservation})`,machineId:r===void 0?B`${e.machineId}`:r===null?B`NULL`:B`COALESCE(${e.machineId}, excluded.machine_id)`,metadata:Li(e,n),createdAt:Ri(e.createdAt,t,e),lastActivityAt:Ri(e.lastActivityAt,t,e)}}function Hi(e){let{bus:t,db:n}=e,{sessions:r}=F(n,G),{dialect:i}=Ut(n);return t.on(T.importUpsert,async e=>{let a=e.payload,{externalSessionId:o,source:s,clientId:c,adapterId:l,cwd:u,logFilePath:d,startedAt:f,title:p,kind:m,parentAdapterSessionId:h,forkPointMessageId:g,metadata:_,lastClientIdentityObservation:v,importStatus:ee,isSidechain:y,machineId:te,activation:ne}=a,re=Pi(),b=crypto.randomUUID(),ie=f??re,ae=Ze(m)??null,oe=h??null,[se]=await n.insert(r).values({sessionId:b,status:$e(a),isImported:!0,importStatus:ee??`discovered`,adapterName:s,adapterSessionId:o,source:s??null,clientId:c??null,adapterId:l??null,targetWorkingDirectory:u??null,logFilePath:d??null,forkPointMessageId:g??null,branchKind:ae,parentExternalSessionId:oe,discoveredAt:re,title:p??null,metadata:_??null,lastClientIdentityObservation:Fi(v),isSidechain:y??null,machineId:te??null,createdAt:ie,lastActivityAt:ie}).onConflictDoUpdate({target:[r.source,r.adapterSessionId],set:Vi(r,f,i,te,ne)}).returning({sessionId:r.sessionId,discoveredAt:r.discoveredAt,parentExternalSessionId:r.parentExternalSessionId,parentSessionId:r.parentSessionId}),ce=se.sessionId===b;await Ui(t,n,se,ce,ae,ie,s),e.setResult({sessionId:se.sessionId,created:ce})})}async function Ui(e,t,n,r,i,a,o){if(r){let r=await Wi(t,n.sessionId,n.parentExternalSessionId,o);e.emit(j.created,{sessionId:n.sessionId,parentSessionId:r,branchKind:i,createdAt:a}).catch(e=>console.error(`[SessionStorage] Failed to emit session.created:`,e))}else n.parentExternalSessionId!==null&&n.parentSessionId===null&&await Wi(t,n.sessionId,n.parentExternalSessionId,o),e.emit(j.updated,{sessionId:n.sessionId,changedProperties:[`source`,`targetWorkingDirectory`,`title`]}).catch(e=>console.error(`[SessionStorage] Failed to emit session.updated:`,e))}async function Wi(e,t,n,r){let{sessions:i}=F(e,G);if(n===null||r===void 0)return null;let[a]=await e.select({sessionId:i.sessionId,rootSessionId:i.rootSessionId}).from(i).where(I(L(i.adapterSessionId,n),L(i.source,r))).limit(1);if(!a)return null;let o=a.rootSessionId??a.sessionId;return await e.update(i).set({parentSessionId:a.sessionId,rootSessionId:o}).where(L(i.sessionId,t)),a.sessionId}function Gi(e){let{bus:t,db:n}=e,{sessions:r,agents:i}=F(n,G);return t.on(T.getByLogFilePath,async e=>{let{logFilePath:t}=e.payload,[a]=await n.select().from(r).where(L(r.logFilePath,t)).limit(1);if(!a){e.setResult({session:null});return}let o=await n.select().from(i).where(L(i.sessionId,a.sessionId));e.setResult({session:q(a,o)})})}function Ki(e){let{bus:t,db:n}=e,{sessions:r,agents:i}=F(n,G);return t.on(T.listImported,async e=>{let{source:t,importStatus:a}=e.payload,o=[L(r.isImported,!0)];t!==void 0&&o.push(L(r.source,t)),a!==void 0&&o.push(L(r.importStatus,a));let s=I(...o),c=await n.select().from(r).where(s).orderBy(Jt(r.createdAt));if(c.length===0){e.setResult({sessions:[]});return}let l=c.map(e=>e.sessionId),u=Ti(await n.select().from(i).where(R(i.sessionId,l)));e.setResult({sessions:c.map(e=>q(e,u.get(e.sessionId)??[]))})})}function qi(e){let{bus:t,db:n}=e,{sessions:r}=F(n,G);return t.on(T.countBySource,async e=>{let{source:t}=e.payload,i=await n.select({importStatus:r.importStatus,count:B`count(*)`}).from(r).where(I(L(r.isImported,!0),L(r.source,t))).groupBy(r.importStatus),a=0,o=0,s=0,c=0;for(let e of i){let t=Number(e.count);a+=t,e.importStatus===`imported`&&(o+=t),e.importStatus===`tracking`&&(s+=t),e.importStatus===`discovered`&&(c=t)}e.setResult({total:a,imported:o,tracking:s,discovered:c})})}function Ji(e){let{bus:t,db:n}=e,{sessions:r}=F(n,G);return t.on(T.updateImportStatus,async e=>{let{sessionId:i,importStatus:a}=e.payload,o=a===`imported`?{status:B`
|
|
51
|
-
CASE
|
|
52
|
-
WHEN ${r.status} = 'discovered' THEN 'active'
|
|
53
|
-
ELSE ${r.status}
|
|
54
|
-
END
|
|
55
|
-
`}:{},[s]=await n.update(r).set({importStatus:a,...o}).where(I(L(r.sessionId,i),nn(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(j.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(j.import.completed,{sessionId:i,adapterSessionId:s.adapterSessionId,source:e}).catch(e=>console.error(`[SessionStorage] Failed to emit session.import.completed:`,e))}})}function Yi(e,t){let n={bus:e,db:t};return[Hi(n),Ni(n),Gi(n),Ki(n),qi(n),Ji(n)]}function Xi(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 Zi(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:I(z(t.adapterName),z(t.adapterId),n===null?z(t.leadAgentId):L(t.leadAgentId,n)),reconciliation:r===void 0?void 0:I(z(t.adapterSessionId),L(t.leadAgentId,r.agentId),nn(I(z(t.adapterName),z(t.adapterId)),I(L(t.adapterName,r.adapterName),L(t.adapterId,r.adapterId))))}}function J(e){return e??null}function Qi(e){return e?JSON.stringify(e):null}function $i(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:ta(e.lastClientIdentityObservation),isOrchestrated:e.isOrchestrated??!1,isImported:e.isImported??!1,title:J(e.title),summary:J(e.summary),summaryUpdatedAt:J(e.summaryUpdatedAt),forkTransforms:Qi(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),generation:e.generation??0}}function ea(e){let{leadAgentId:t,generation:n,...r}=e;return r}function ta(e){return e?JSON.stringify(e):null}function Y(e,t,n){n!==void 0&&(e[t]=n)}function na(e,t,n){n!==void 0&&(e[t]=n??null)}function ra(e,t){let n={};return Y(n,`status`,e.status),na(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,Xi(e)),na(n,`executionTargetId`,e.executionTargetId),na(n,`approvalPolicyOverride`,e.approvalPolicyOverride),na(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=ta(e.lastClientIdentityObservation)),e.advanceGeneration===!0&&(n.generation=B`${t.generation} + 1`),n}function ia(e){let{bus:t,db:n}=e,{sessions:r,agents:i}=F(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 aa(e){let{bus:t,db:n}=e,{sessions:r}=F(n,G);return t.on(T.set,async e=>{let{sessionId:i,session:a,ifAbsent:o}=ht.parse(e.payload),s=$i(a);if(o){Je(null,a);let o=N(await n.insert(r).values({sessionId:i,createdAt:a.createdAt,...s}).onConflictDoNothing());e.setResult({success:o,clientAccountChanged:o&&a.clientAccountId!==void 0}),o&&Ye(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(Je(c,a),N(await n.insert(r).values({sessionId:i,createdAt:a.createdAt,...s}).onConflictDoUpdate({target:r.sessionId,set:ea(s),setWhere:li(o,r)}))){e.setResult({success:!0,clientAccountChanged:(c?.clientAccountId??null)!==(a.clientAccountId??null)}),Ye(t,c,a);return}}throw Error(`Failed to write session "${i}" with a stable client-account baseline`)})}function oa(e){let{bus:t,db:n}=e,{sessions:r,agents:i,adapterSessionClaims:a}=F(n,G);return t.on(T.delete,async e=>{let{sessionId:t}=e.payload;await P(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 sa(e){let{bus:t,db:n}=e,{sessions:r}=F(n,G);return t.on(T.update,async e=>{let i=gt.request.parse(e.payload),{sessionId:a}=i,o=ra(i,r),s=Oi(i);if(Object.keys(o).length===0){e.setResult({success:!0,clientAccountChanged:!1});return}let{status:c,identity:l,reconciliation:u}=Zi(i,r);if(!s){let s=N(await n.update(r).set(o).where(I(L(r.sessionId,a),c,l,u)));e.setResult({success:s,clientAccountChanged:!1}),s&&i.advanceGeneration===!0&&Qe(t,a);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=Di(d,i);if(Je(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(Xe(d,i)){e.setResult({success:!1,clientAccountChanged:!1});return}if(N(await n.update(r).set(o).where(I(L(r.sessionId,a),c,l,u,li(s,r))))){e.setResult({success:!0,clientAccountChanged:(d.clientAccountId??null)!==(f.clientAccountId??null)}),Ye(t,d,f),i.advanceGeneration===!0&&Qe(t,a);return}}throw Error(`Failed to update session "${a}" with a stable client-account baseline`)})}function ca(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)),I(...n)}function la(e){let{bus:t,db:n}=e,{sessions:r,agents:i}=F(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=ca({status:t,executionTargetId:c},r),u=l?n.select().from(r).where(l):n.select().from(r),d=a===void 0?await u.orderBy(Jt(r.lastActivityAt)):await u.orderBy(Jt(r.lastActivityAt)).limit(a).offset(o),[f]=await(l?n.select({count:qt()}).from(r).where(l):n.select({count:qt()}).from(r)),p=f?.count??0;if(d.length===0){e.setResult({sessions:[],total:p});return}let m=d.map(e=>e.sessionId),h=Ti(await n.select().from(i).where(R(i.sessionId,m))),{previewBySession:g,countBySession:_}=await Ei(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 ua(e){let{bus:t,db:n}=e,{sessions:r}=F(n,G);return t.on(T.getStatusCounts,async e=>{e.payload;let t=await n.select({status:r.status,count:qt()}).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 da(e,t){let n={bus:e,db:t},r=[ia(n),aa(n),oa(n),sa(n),la(n),Ai(n),ki(n),ua(n),...Yi(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 fa(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 pa(e){return B`cast(${e} as bigint)`}function ma(e){return B`cast(${e} as integer)`}async function ha(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(I(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(I(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 ga(e,t){return B`(case when ${e} > ${t} then ${e} else ${t} end)`}function _a(e,t){let{adapterSessionClaims:n}=e;return B`coalesce((select max(${n.fence}) from ${n}
|
|
56
|
-
where ${L(n.agentId,t)}), 0)`}function va(e,t){let{agents:n}=e;return B`coalesce((select ${n.currencyFence} from ${n}
|
|
57
|
-
where ${L(n.agentId,t)}), 0)`}function ya(e,t,n){return B`1 + ${ga(n,_a(e,t))}`}function ba(e,t,n){return ya(e,t,ga(ma(n),va(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 xa(e){return{instanceId:e.instanceId,machineId:e.machineId,incarnation:e.incarnation,startedAt:e.startedAt,retiredAt:e.retiredAt}}function Sa(e,t){let{runtimeInstances:n}=F(t,G);return[e.on(A.retireInstance,async e=>{let r=await t.update(n).set({retiredAt:Date.now()}).where(I(L(n.instanceId,e.payload.instanceId),z(n.retiredAt))).returning({machineId:n.machineId});e.setResult({retiredMachines:r.length})}),e.on(A.getRuntimeInstance,async e=>{let[r]=await t.select().from(n).where(I(L(n.instanceId,e.payload.instanceId),L(n.machineId,e.payload.machineId))).limit(1);e.setResult({instance:r===void 0?null:xa(r)})})]}function Ca(e){return{adapterSessionId:e.adapterSessionId??null,currentAdapterSessionId:e.currentAdapterSessionId??null,currentAdapterSessionIdState:e.currentAdapterSessionIdState}}function wa(e,t,n,r){let{agents:i}=e;return B`exists (select 1 from ${i} where ${I(L(i.agentId,t),L(i.sessionId,n),...r===`live`?[en(i.status,`disposed`)]:[])})`}function Ta(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:ya(e,t.agentId,B`${i.currencyFence}`),status:Z(`held`),claimedAt:pa(r),updatedAt:pa(r)};return B`select ${B.join(Object.values(o),B`, `)} from ${i}
|
|
58
|
-
where ${L(i.agentId,t.agentId)}
|
|
59
|
-
and ${L(i.sessionId,t.sessionId)}
|
|
60
|
-
and ${en(i.status,`disposed`)}
|
|
61
|
-
and exists (select 1 from ${a} where ${L(a.sessionId,t.sessionId)})`}function Ea(e,t){let{agents:n,sessions:r}=e,i=L(n.agentId,t),a=e=>B`(select ${e} from ${n} where ${i})`,o=a(B`${n.currentAdapterSessionIdState}`),s=a(B`${n.currentAdapterSessionId}`),c=a(B`${n.adapterSessionId}`),l=B`${r.adapterSessionId}`,u=B`(${c} = ${l} or (${c} is null and ${l} is null))`;return{currentAdapterSessionId:B`(case
|
|
62
|
-
when ${o} <> 'inherited' then ${s}
|
|
63
|
-
when ${u} then null
|
|
64
|
-
when ${c} is null then null
|
|
65
|
-
else ${c} end)`,currentAdapterSessionIdState:B`(case
|
|
66
|
-
when ${o} <> 'inherited' then ${o}
|
|
67
|
-
when ${u} then ${Z(`inherited`)}
|
|
68
|
-
when ${c} is null then ${Z(`moved`)}
|
|
69
|
-
else ${Z(`confirmed`)} end)`}}function Da(e,t){let{adapterSessionClaims:n}=e,r=[L(n.machineId,t.machineId)];return t.adapterId!==void 0&&r.push(L(n.adapterId,t.adapterId)),t.providerSessionId!==void 0&&r.push(L(n.providerSessionId,t.providerSessionId)),t.statuses!==void 0&&r.push(R(n.status,t.statuses)),r}function Oa(e,t){let n=F(t,G),{agents:r,adapterSessionClaims:i}=n;return[e.on(A.read,async e=>{let[n]=await t.select().from(r).where(L(r.agentId,e.payload.agentId)).limit(1);if(n===void 0){e.setResult({ownership:null});return}let a=await t.select().from(i).where(L(i.agentId,e.payload.agentId)).orderBy(Kt(i.fence),Kt(i.claimId));e.setResult({ownership:{agentId:n.agentId,sessionId:n.sessionId,currency:Ca(n),revision:n.revision,currencyFence:n.currencyFence,claims:a.map(Q)}})}),e.on(A.listClaims,async e=>{let r=await t.select().from(i).where(I(...Da(n,e.payload))).orderBy(Kt(i.claimedAt),Kt(i.claimId));e.setResult({claims:r.map(Q)})})]}function ka(e){return{outcome:`lead-conflict`,currentLeadAgentId:e}}function Aa(e,t,n){return{outcome:e,claim:t===null?null:Q(t),leadDesignated:n.leadDesignated,previousLeadAgentId:n.previousLeadAgentId}}const ja=`makaio:session-ownership:claim:v1`;function Ma(e){return{namespace:ja,identity:JSON.stringify([e.machineId,e.adapterId,e.providerSessionId])}}async function Na(e,t,n){let{adapterSessionClaims:r}=t;return(await e.select({machineId:r.machineId,adapterId:r.adapterId,providerSessionId:r.providerSessionId}).from(r).where(I(L(r.agentId,n),L(r.status,`held`)))).map(Ma)}function Pa(e){return Ma(e)}async function Fa(e,t){let n=F(e,G);return P(e,async e=>{await fa(e,n,t.agentId);let r=t.action.kind===`rollback`?{status:t.action.preimage.status,adapterId:t.action.preimage.adapterId,ownerMachineId:t.action.preimage.binding?.ownerMachineId??null,ownerInstanceId:t.action.preimage.binding?.ownerInstanceId??null,recoveryAttemptId:t.action.preimage.recoveryAttemptId??null}:{status:t.action.kind===`succeeded`?`idle`:`dead`,recoveryAttemptId:null};return{applied:N(await e.update(n.agents).set({...r,lastActivityAt:Date.now()}).where(I(L(n.agents.agentId,t.agentId),L(n.agents.status,`starting`),L(n.agents.recoveryAttemptId,t.attemptId),L(n.agents.adapterId,t.binding.adapterId),L(n.agents.ownerMachineId,t.binding.ownerMachineId),L(n.agents.ownerInstanceId,t.binding.ownerInstanceId))))}})}async function Ia(e,t,n){let{adapterSessionClaims:r}=t,[i]=await e.select().from(r).where(I(L(r.machineId,n.machineId),L(r.adapterId,n.adapterId),L(r.providerSessionId,n.providerSessionId))).limit(1);return i}async function La(e,t,n){let{adapterSessionClaims:r}=t,[i]=await e.select().from(r).where(L(r.claimToken,n)).limit(1);return i}async function Ra(e,t,n){let{agents:r}=t,[i]=await e.select().from(r).where(L(r.agentId,n)).limit(1);return i}async function za(e,t,n){let{sessions:r}=t,[i]=await e.select({leadAgentId:r.leadAgentId}).from(r).where(L(r.sessionId,n)).limit(1);return i===void 0?void 0:i.leadAgentId??null}async function Ba(e,t){let n=F(e,G),{adapterSessionClaims:r}=n,i=Date.now();return P(e,async e=>{await fa(e,n,t.agentId);let a=I(L(r.claimToken,t.claimToken),L(r.agentId,t.agentId));if(t.disposition===`released`){if((await e.delete(r).where(a).returning({claimId:r.claimId})).length>0)return{outcome:`released`}}else{let[n]=await e.update(r).set({status:t.disposition,updatedAt:i}).where(a).returning();if(n!==void 0)return{outcome:`marked`,claim:Q(n)}}let o=await La(e,n,t.claimToken);return o===void 0?{outcome:`not-found`}:{outcome:`not-owner`,holder:Q(o)}})}async function Va(e,t,n){if(await za(e,t,n.sessionId)===void 0)return{kind:`refused`,result:{outcome:`not-found`,missing:`session`}};let r=await Ra(e,t,n.agentId);return r===void 0||r.sessionId!==n.sessionId?{kind:`refused`,result:{outcome:`not-found`,missing:`agent`}}:r.status===`disposed`?{kind:`refused`,result:{outcome:`agent-disposed`}}:{kind:`ok`,agent:r}}async function Ha(e,t,n,r){let{adapterSessionClaims:i}=t,[a]=await e.insert(i).select(Ta(t,n,crypto.randomUUID(),r)).onConflictDoNothing({target:[i.machineId,i.adapterId,i.providerSessionId]}).returning();return a}function Ua(e,t,n){let{adapterSessionClaims:r,runtimeInstances:i}=e;return n===`same-instance`?I(L(r.status,`held`),L(r.agentId,t.agentId),L(r.ownerInstanceId,t.ownerInstanceId)):n===`owner-retired`?B`exists (select 1 from ${i} where ${I(L(i.instanceId,r.ownerInstanceId),L(i.machineId,r.machineId),Zt(i.retiredAt))})`:B`(select ${i.incarnation} from ${i}
|
|
70
|
-
where ${L(i.instanceId,t.ownerInstanceId)}
|
|
71
|
-
and ${L(i.machineId,r.machineId)})
|
|
72
|
-
> (select ${i.incarnation} from ${i}
|
|
73
|
-
where ${L(i.instanceId,r.ownerInstanceId)}
|
|
74
|
-
and ${L(i.machineId,r.machineId)})`}async function Wa(e,t,n,r,i,a,o){let{adapterSessionClaims:s}=t,c=i===`named-token`?void 0:Ua(t,n,i),l=o===void 0?void 0:I(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:ba(t,n.agentId,r.fence),agentId:n.agentId,sessionId:n.sessionId,adapterName:n.adapterName,ownerInstanceId:n.ownerInstanceId,status:`held`,claimedAt:a,updatedAt:a}).where(I(L(s.claimId,r.claimId),L(s.claimToken,r.claimToken),Zt(s.ownerInstanceId),wa(t,n.agentId,n.sessionId,`live`),...c===void 0?[]:[c],...l===void 0?[]:[l])).returning();return u}async function Ga(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(I(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(I(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 Ka(e,t,n,r){if(n.recoveryGuard===void 0)return;let i=n.providerSessionId===null?void 0:await Ia(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:Ca(r)},i===void 0?null:Q(i))}async function qa(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 Ja(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 Ya(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 Ia(e,t,n),o=a===void 0?null:Be(Q(a));if(a===void 0||!Ve(o,i))return Ja(n,a);let s=await Ga(e,t,n,a,n.supersedes?.claimToken===a.claimToken);if(s===void 0)return Ja(n,a);let c=await r(a,s);return c===void 0||c.outcome===`already-claimed`?Ja(n,c===void 0?void 0:await Ia(e,t,n)):c}function Xa(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 I(L(n.agentId,t.agentId),en(n.status,`disposed`),L(n.revision,t.expectedRevision),$t(n.currencyFence,t.fence),B`exists (select 1 from ${r} where ${I(L(r.claimToken,t.claimToken),L(r.agentId,t.agentId),L(r.sessionId,n.sessionId),L(r.status,`held`),L(r.fence,t.fence))})`,tn(a))}function Za(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=Ca(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 Qa(e,t,n){let r=await Ra(e,t,n.agentId);return r===void 0?{outcome:`not-found`}:Za(await La(e,t,n.claimToken),r,n)}async function $a(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 eo(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(Xa(t,n)).returning();if(o===void 0)return Qa(e,t,n);let s=await e.update(i).set({...Ea(t,n.agentId)}).where(I(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 to(e,t){let n=F(e,G);return P(e,async e=>await fa(e,n,t.agentId)===void 0?{outcome:`not-found`}:await $a(e,n,t.claimToken)?eo(e,n,t):Qa(e,n,t))}var no=class extends Error{result;constructor(e){super(`session ownership movement rolled back: ${e.outcome}`),this.name=`MovementRollbackSignal`,this.result=e}};function ro(e,t){if(e.kind===`confirmed`)return{providerSessionId:e.providerSessionId,currency:{currentAdapterSessionId:e.providerSessionId,currentAdapterSessionIdState:`confirmed`}};let n=wt(Ca(t));return n===null?null:{providerSessionId:n,currency:{currentAdapterSessionId:null,currentAdapterSessionIdState:`moved`}}}async function io(e,t,n){let{adapterSessionClaims:r}=t,[i]=await e.select().from(r).where(I(L(r.machineId,n.machineId),L(r.adapterId,n.adapterId),L(r.providerSessionId,n.providerSessionId),L(r.agentId,n.agentId),L(r.status,`held`),nn(L(r.ownerInstanceId,n.ownerInstanceId),z(r.ownerInstanceId)))).limit(1);return i}async function ao(e,t,n,r){if(n.ownerInstanceId!==null)return n;let{adapterSessionClaims:i}=t,[a]=await e.update(i).set({ownerInstanceId:r}).where(I(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 oo(e,t,n,r){for(let i=0;i<2;i+=1){let i=await Ha(e,t,n,r);if(i!==void 0)return i;let a=await Ia(e,t,n);if(a===void 0){let r=await Va(e,t,n);if(r.kind===`refused`)throw new no(r.result.outcome===`agent-disposed`?{outcome:`agent-disposed`}:{outcome:`not-found`});continue}let o=await Ga(e,t,n,a,!1);if(o!==void 0){let i=await Wa(e,t,n,a,o,r);if(i!==void 0)return i;let s=await Ia(e,t,n);if(s===void 0)continue;throw new no({outcome:`already-claimed`,holder:Q(s)})}throw new no({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 so(e,t,n,r){let{adapterSessionClaims:i}=t;return(await e.delete(i).where(I(L(i.agentId,n),L(i.status,`held`),en(i.claimId,r))).returning({providerSessionId:i.providerSessionId})).map(e=>e.providerSessionId)}function co(e,t){return e.outcome===`idempotent`?{outcome:`idempotent`,revision:e.revision,currency:e.currency,sessionSnapshotUpdated:!1,claim:Q(t)}:e}function lo(e,t){if(t)throw new no(e);return e}function uo(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 fo(e,t){let n=F(e,G),r=Date.now(),i=t.ownerInstance;if(i===void 0)throw Error(`session ownership movement requires ownerInstance`);try{return await P(e,async a=>{let o=await ha(a,n,{instanceId:i.instanceId,machineId:t.machineId},r),s=await fa(a,n,t.agentId);if(s===void 0||s.sessionId!==t.sessionId)return lo({outcome:`not-found`},o.inserted);if(s.status===`disposed`)return lo({outcome:`agent-disposed`},o.inserted);let c=ro(t.movement,s);if(c===null)return lo({outcome:`idempotent`,revision:s.revision,currency:Ca(s),sessionSnapshotUpdated:!1,claim:null},o.inserted);let l=uo(t,i.instanceId,c.providerSessionId);await Bt(e,a,[Pa(l),...await Na(a,n,t.agentId)]);let u=await io(a,n,l)??await oo(a,n,l,r),d=t.movement.kind===`confirmed`?await so(a,n,t.agentId,u.claimId):[],f=await eo(a,n,{agentId:t.agentId,claimToken:u.claimToken,fence:u.fence,expectedRevision:t.expectedRevision,target:c.currency});if(f.outcome!==`settled`)throw new no(co(f,u));let p=await ao(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 no)return e.result;throw e}}async function po(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 mo(e,t,n,r){let{sessions:i}=e,a=n===null?z(i.leadAgentId):L(i.leadAgentId,n);return r?a:nn(a,L(i.leadAgentId,t.agentId))}async function ho(e,t,n){let{sessions:r}=t,i=await po(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?{}:Ea(t,n.agentId)}).where(I(L(r.sessionId,n.sessionId),mo(t,n,o.expectedLeadAgentId,s),wa(t,n.agentId,n.sessionId,l))).returning({leadAgentId:r.leadAgentId})).length===0?go(e,t,n,a,l):{leadDesignated:u,previousLeadAgentId:a}}async function go(e,t,n,r,i){let a=await Va(e,t,n);throw a.kind===`refused`&&!(i===`any-status`&&a.result.outcome===`agent-disposed`)?new X(a.result):new X(ka(r))}async function _o(e,t,n,r,i,a){let o=await Wa(e,t,n,r,i,a,n.recoveryGuard?.ownerGeneration??void 0);if(o!==void 0)return Aa(`claimed`,o,await ho(e,t,n));let s=await Ia(e,t,n);if(s===void 0)return yo;if(s.claimToken===r.claimToken){let r=await Va(e,t,n);if(r.kind===`refused`)return r.result}return{outcome:`already-claimed`,holder:Q(s)}}async function vo(e,t,n,r){if(r.status!==`held`)return{outcome:`already-claimed`,holder:Q(r)};let i=await Va(e,t,n);return i.kind===`refused`?i.result:Aa(`idempotent`,r,await ho(e,t,n))}const yo=Symbol(`retry-acquisition`);async function bo(e,t,n,r){if(n.recoveryGuard?.ownerGeneration)return Ya(e,t,n,async(i,a)=>{let o=await _o(e,t,n,i,a,r);return o===yo?void 0:o});let i=await Ha(e,t,n,r);if(i!==void 0)return Aa(`claimed`,i,await ho(e,t,n));let a=await Ia(e,t,n);if(n.recoveryGuard!==void 0)return Ja(n,a);if(a===void 0){let r=await Va(e,t,n);return r.kind===`refused`?r.result:yo}if(a.claimToken===n.claimToken)return a.agentId===n.agentId&&a.sessionId===n.sessionId?vo(e,t,n,a):{outcome:`already-claimed`,holder:Q(a)};let o=await Ga(e,t,n,a,n.supersedes?.claimToken===a.claimToken);return o===void 0?{outcome:`already-claimed`,holder:Q(a)}:_o(e,t,n,a,o,r)}async function xo(e,t,n,r){return r.sessionId===n.sessionId?r.status===`disposed`&&n.designateLead?.clear!==!0?{outcome:`agent-disposed`}:Aa(`claimed`,null,await ho(e,t,n)):{outcome:`not-found`,missing:`agent`}}async function So(e,t,n){let r=await fa(e,t,n.agentId);if(r!==void 0)return{kind:`ok`,agent:r};let i=await Va(e,t,n);if(i.kind===`refused`)return{kind:`refused`,result:i.result};let a=await fa(e,t,n.agentId);return a===void 0?{kind:`refused`,result:{outcome:`not-found`,missing:`agent`}}:{kind:`ok`,agent:a}}async function Co(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 ha(e,t,{instanceId:r.instanceId,machineId:n.machineId},i)}let o=await So(e,t,n);if(o.kind===`refused`){if(a!==void 0)throw new X(o.result);return o.result}let s=await Ka(e,t,n,o.agent);if(s!==void 0){if(a!==void 0)throw new X(s);return s}let c=await xo(e,t,n,o.agent);if(a!==void 0&&c.outcome!==`claimed`)throw new X(c);return qa(e,t,n,c)}async function wo(e,t){let n=St(t),r=F(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 P(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 ha(t,r,{instanceId:a.instanceId,machineId:n.machineId},i),c=await So(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,[Pa(l)]),n.recoveryGuard!==void 0){let e=await Ka(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 bo(t,r,l,i);if(e!==yo){if(s.inserted&&e.outcome!==`claimed`)throw new X(e);return qa(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 Co(t,r,n,a,i)})}catch(e){if(e instanceof X)return e.result;throw e}}async function To(e,t){let n=F(e,G),{adapterSessionClaims:r}=n,i=Date.now();return P(e,async e=>{await fa(e,n,t.agentId);let a=t.claimToken===void 0?L(r.agentId,t.agentId):I(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 Eo(e,t){let n=[...Oa(e,t),e.on(A.claim,async e=>{e.setResult(await wo(t,e.payload))}),e.on(A.finalizeRecovery,async e=>{e.setResult(await Fa(t,e.payload))}),e.on(A.settleCurrency,async e=>{e.setResult(await to(t,e.payload))}),e.on(A.settleMovement,async e=>{let n=pt.parse(e.payload);e.setResult(await fo(t,n))}),e.on(A.release,async e=>{e.setResult(await Ba(t,e.payload))}),e.on(A.releaseAgentClaims,async e=>{e.setResult(await To(t,e.payload))}),...Sa(e,t)];return()=>{for(let e=n.length-1;e>=0;--e)n[e]?.()}}async function Do(e,t){if(t.length===0)return new Map;let{agents:n}=F(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 Oo(e,t){return Gt(e).fts.fetchFirstUserMessagePreviews(e,t)}async function ko(e,t){if(t.length===0)return new Map;let{messages:n}=F(e,f),r=[...new Set(t)],i=await e.select({sessionId:n.sessionId,count:qt()}).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 Ao(e){if(e)try{let t=JSON.parse(e);return!t||typeof t!=`object`||Array.isArray(t)?void 0:t}catch{return}}function jo(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 Mo(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,generation:e.generation,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:Ao(e.fork_transforms),targetWorkingDirectory:e.target_working_directory??void 0,metadata:jo(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 No(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 Do(t,d),p=await Oo(t,d),m=await ko(t,d),h=l.map(e=>Mo(e,f.get(e.session_id)??[],p,m));e.setResult({sessions:h,total:u})})),()=>r.forEach(e=>e())}async function Po(e,t){return(await Ut(e).all(B`
|
|
75
|
-
WITH RECURSIVE ancestors AS (
|
|
76
|
-
SELECT session_id, parent_session_id
|
|
77
|
-
FROM sessions
|
|
78
|
-
WHERE session_id = ${t}
|
|
79
|
-
|
|
80
|
-
UNION ALL
|
|
81
|
-
|
|
82
|
-
SELECT s.session_id, s.parent_session_id
|
|
83
|
-
FROM sessions s
|
|
84
|
-
JOIN ancestors a ON s.session_id = a.parent_session_id
|
|
85
|
-
)
|
|
86
|
-
SELECT session_id FROM ancestors
|
|
87
|
-
`)).map(e=>e.session_id)}const Fo=new Map;function Io(e,t){let n=(Fo.get(e)??Promise.resolve()).then(t),r=n.then(()=>void 0,()=>void 0);return Fo.set(e,r),r.then(()=>{Fo.get(e)===r&&Fo.delete(e)}),n}function Lo(e,t){return`${e}:${t}`}async function Ro(e,t,n){let r=await e.requestOptional(d.getByIds,{sessionId:t,eventIds:[Lo(`turn.completed`,n)]});if(r.handled)return r.data.events.length>0}function zo(e,t){return Io(JSON.stringify([t.sessionId,t.turnAnchorId]),()=>Bo(e,t))}async function Bo(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 Ro(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 Vo(e,t,u,f??p)),{turnId:u.turnId,turnNumber:u.turnNumber,created:d}}async function Vo(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:Lo(`turn.started`,n.turnId)}),await me(e,{type:`turn.completed`,sessionId:i,payload:d,eventId:Lo(`turn.completed`,n.turnId)}),await e.emit(j.turn.started,u),await e.emit(j.turn.completed,d)}const Ho=tt(`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;async function Uo(e,t,n){await e.requestOptional(T.rebindObserved,{externalSessionId:t,source:n,startMode:`compact`})}async function Wo(e,t,n){let r=n??await Go(e,t);if(r===void 0){process.env.MAKAIO_DEBUG===`true`&&console.debug(`[ObservedSessionIngestion] Managed compaction reached no row; ordinal not advanced`,{adapterSessionId:t});return}await e.requestOptional(T.update,{sessionId:r,advanceGeneration:!0})}async function Go(e,t){let n=await e.requestOptional(T.getByAdapterSessionId,{adapterSessionId:t});if(!(!n.handled||n.data.session===null))return n.data.session.sessionId}const Ko=`observed-session-ingestion-policy`;function qo(e,t){return e.emit(rt.register,{capabilityId:Ko,provider:t})}function Jo(e,t){return e.emit(rt.unregister,{capabilityId:Ko,providerId:t})}function $(e,t){process.env.MAKAIO_DEBUG===`true`&&console.debug(`[ObservedSessionIngestion] ${e}`,t??{})}function Yo(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 Xo(e){return e.importStatus===`discovered`&&e.clientId!==void 0}function Zo(e){return e.isImported===!0&&e.importStatus===`tracking`&&e.clientId!==void 0}var Qo=class{bus;managedAdapterSessionIds=new Map;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;Yo(t)&&this.policyProviders.set(t.id,t)},{filter:{capabilityId:Ko}}),this.bus.on(rt.unregister,e=>{this.policyProviders.delete(e.payload.providerId)},{filter:{capabilityId:Ko}}))}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))e.sessionId!==void 0&&this.managedAdapterSessionIds.set(e.adapterSessionId,e.sessionId);else{if(this.managedAdapterSessionIds.size>=1e4){let e=this.managedAdapterSessionIds.keys().next().value;e!==void 0&&this.managedAdapterSessionIds.delete(e)}this.managedAdapterSessionIds.set(e.adapterSessionId,e.sessionId)}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(!Zo(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(Ho.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)return;if(this.managedAdapterSessionIds.has(t)){e.startMode===`compact`&&await Wo(this.bus,t,this.managedAdapterSessionIds.get(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,i=r===void 0?await this.registerObservedSession(e,t,n.adapterName):await this.rebindObservedSession(e,t,n.adapterName,r);this.managedAdapterSessionIds.has(t)&&(e.startMode===`compact`&&await Wo(this.bus,t,this.managedAdapterSessionIds.get(t)),i&&await this.reconcileTrackingStub(e.clientId,t))}async rebindObservedSession(e,t,n,r){let i=await this.bus.requestOptional(T.rebindObserved,{externalSessionId:t,source:n,startMode:r,...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));if(i===`discovered`){let a=await this.registerObservedSession(e,t,n,i);return a&&r===`compact`&&await Uo(this.bus,t,n),a}return $(`Observed continuation of an unknown session; leaving creation to the transcript import`,{adapterSessionId:t,source:n,startMode:r}),!1}try{await this.bus.requestOptional(j.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=$o(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(Ho.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(Ho.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(Xo(t.data.session))return!1;if(t.data.session.importStatus!==`discovered`)return!0}return await this.decideImportStatus(e)===`tracking`}};function $o(e){if(e===void 0)return;let t=mt.safeParse(e);return t.success?t.data:void 0}const es=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()})),ts=es.sqlite,ns=es.postgres,rs=Vt({importCursors:ts},{importCursors:ns});function is(e,t){let{importCursors:n}=F(t,rs),r=[];return r.push(e.on(on.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(on.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(on.delete,async e=>{let{filePath:r}=e.payload,i=await t.delete(n).where(L(n.filePath,r));e.setResult({success:N(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 as(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 os=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
|
-
entity_type TEXT NOT NULL,
|
|
89
|
-
entity_id TEXT NOT NULL,
|
|
90
|
-
embedding ${i} NOT NULL,
|
|
91
|
-
PRIMARY KEY (entity_type, entity_id)
|
|
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
|
-
VALUES (${n}, ${r}, ${o})
|
|
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=as(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)}},ss=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 Ar({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(j.turn.completed,n),this._completedTurnIds.add(e.turnId)}async emit(e,t){await this.bus.emit(e,{...t,sessionId:this.sessionId})}};function cs(e,t){let{sessions:n}=F(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(I(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(j.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(I(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 ls=new Set([`Agent`,`spawn_subagent`]),us=`[^A-Za-z0-9_-]`;function ds(e){return e.replaceAll(/[.*+?^${}()|[\]\\]/g,`\\$&`)}function fs(e,t){return t.test(e)}async function ps(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 ms(e){let t=[];for(let n of e)for(let e of n.blocks)e.type===`tool_call`&&ls.has(e.name)&&t.push({toolCallId:e.toolCallId});return t}function hs(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(fs(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 gs(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 _s(e){return[...e].map(e=>{let t=ds(e);return{id:e,pattern:RegExp(`(^|${us})${t}($|${us})`)}})}async function vs(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=_s(new Set([o])),c=(await Promise.all(i.map(async t=>{let n=await ps(e,t.sessionId),r=ms(n);if(r.length===0)return null;let i=hs(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 ys(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 bs(e,c);if(l.size===0)return;let u=await ps(e,a),d=ms(u);if(d.length===0)return;let f=hs(u,_s(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 bs(e,t){return gs(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 xs(e){return e.on(j.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 vs(e,n,i.parentSessionId);return}if(i.branchKind!==`compress`)return;await ys(e,i,r)}catch(e){console.error(`[CompressLineageResolver] Failed to resolve compress lineage`,{payload:t.payload,error:e})}})}function Ss(e){return[...e].map(e=>{let t=ds(e);return{id:e,pattern:RegExp(`(^|${us})${t}($|${us})`)}})}async function Cs(e,t,n){return gs(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 ws(e){return e.on(j.import.completed,async t=>{try{let{sessionId:n,source:r}=t.payload,{children:i}=await e.request(T.getChildren,{sessionId:n}),a=await Cs(e,r,i),o=new Set(a.keys());if(o.size===0)return;let s=await ps(e,n),c=ms(s);if(c.length===0)return;let l=hs(s,Ss(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 Ts(e){return e.on(O.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=et({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 Es=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(k.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{Qn as $,Ei as A,Xr as B,Oo as C,ja as D,Eo as E,ri as F,Hr as G,Yr as H,ti as I,pr as J,Ar as K,ei as L,q as M,Si as N,Ma as O,ni as P,sr as Q,$r as R,ko as S,Ao as T,Jr as U,Zr as V,Kr as W,H as X,lr as Y,cr as Z,Ho as _,cs as a,No as b,is as c,Qo as d,qn as et,Xo as f,Jo as g,qo as h,xs as i,Ti as j,da as k,ts as l,Ko as m,Ts as n,Pn as nt,ss as o,Zo as p,Or as q,ws as r,wn as rt,os as s,Es as t,In as tt,es as u,zo as v,Mo as w,Do as x,Po as y,Qr as z};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{$t as e,A as t,Bt as n,Cn as ee,Gt as r,Jt as i,Kt as a,Sn as o,Vt as s,en as c,nn as l,qt as u,vn as te,xn as d}from"./schemas-CkxAK13D.mjs";import"./compression-CPrVeC42.mjs";import{t as f}from"./schemas-BmoFWBdh.mjs";import{i as p}from"./account-identity-C-v4mHq3.mjs";import{t as m}from"./storage-namespace-definition-BUpCw171.mjs";import{CompressSessionLineageSchema as h,ForkSessionLineageSchema as g,RootSessionLineageSchema as _,SubagentSessionLineageSchema as v}from"./contracts/adapter/schemas/session-lineage.mjs";import{z as y}from"zod";import{createBusNamespace as b}from"@makaio/framework/core";const x=b(`session`,t),S=x.subjects;function ne(e){return s.includes(e.type)}const re=`ui-warnings`,ie=`connector-swap-warning-suppressed`,ae=1440*60*1e3,oe={cancel:`cancel`,edit:`edit`,continue:`continue`},C=`CONNECTOR_SWAP_CANCELLED`;var w=class extends Error{code=C;constructor(){super(`Connector swap cancelled by user`),this.name=`ConnectorSwapCancelledError`}};function T(e){return e instanceof w||e instanceof Error&&`code`in e&&e.code===`CONNECTOR_SWAP_CANCELLED`}const E={branch:{label:`branch`,staysInView:!0,navigatesToChild:!1,canMergeBack:!0},subagent:{label:`subagent`,staysInView:!0,navigatesToChild:!1,canMergeBack:!0},fork:{label:`fork`,staysInView:!1,navigatesToChild:!0,canMergeBack:!1},compress:{label:`compress`,staysInView:!1,navigatesToChild:!0,canMergeBack:!1},rewrite:{label:`rewrite`,staysInView:!1,navigatesToChild:!0,canMergeBack:!1},coordinator:{label:`coordinator`,staysInView:!0,navigatesToChild:!1,canMergeBack:!1},aside:{label:`aside`,staysInView:!0,navigatesToChild:!1,canMergeBack:!1}};function D(e){return e!=null&&E[e].staysInView}function O(e){return e==null||E[e].navigatesToChild}function k(e){return e!=null&&E[e].canMergeBack}function A(e){return E[e]}const j=y.object({timestamp:y.number(),messageId:y.string()}),M=m(`message`,{schemas:{append:{request:y.object({message:l.omit({messageId:!0}).extend({messageId:y.string().optional()}),emitEvent:y.boolean().optional()}),response:y.object({message:l})},getBySession:{request:y.object({sessionId:y.string(),limit:y.number().int().min(1).optional(),after:j.optional(),includeAfter:y.boolean().optional(),order:y.enum([`asc`,`desc`]).optional()}),response:y.object({messages:y.array(l),nextCursor:j.nullable()})},getByTurn:{request:y.object({turnId:y.string()}),response:y.object({messages:y.array(l)})},get:{request:y.object({messageId:y.string()}),response:y.object({message:l.nullable()})},getByAdapterMessageId:{request:y.object({adapterMessageId:y.string()}),response:y.object({message:l.nullable()})},search:{request:y.object({query:y.string(),sessionId:y.string().optional(),limit:y.number().int().min(1).optional()}),response:y.object({messages:y.array(l),total:y.number()})},ftsSearch:{request:y.object({query:y.string(),sessionId:y.string().optional(),limit:y.number().int().min(1).optional().default(20)}),response:y.object({results:y.array(y.object({messageId:y.string(),sessionId:y.string(),score:y.number(),excerpt:y.string()})),total:y.number()})},upsertByAdapterMessageId:{request:y.object({sessionId:y.string(),turnId:y.string().nullable(),adapterMessageId:y.string(),role:y.enum([`user`,`assistant`]),contentText:y.string(),blocks:y.array(e),agentId:y.string().optional(),adapterSessionId:y.string().optional(),timestamp:y.number(),origin:c.optional()}),response:y.object({messageId:y.string(),created:y.boolean()})},stored:y.object({message:l})}}),N=M.subjects;function P(e,t){return e.timestamp===t.timestamp?e.messageId.localeCompare(t.messageId):e.timestamp-t.timestamp}function F(e,t){return P(t,e)}function I(e){return{timestamp:e.timestamp,messageId:e.messageId}}function L(e){return`${e.timestamp}:${e.messageId}`}const R=y.object({after:y.string().optional(),limit:y.number().int().min(1).optional(),types:y.array(y.string()).optional(),includeReasoning:y.boolean().optional(),order:y.enum([`asc`,`desc`]).optional()}),se=y.object({events:y.array(n),nextCursor:y.string().nullable(),totalCount:y.number().optional()}),z=m(`sessionEvent`,{schemas:{append:{request:y.object({event:n}),response:y.object({success:y.boolean()})},getEvents:{request:y.object({sessionId:y.string(),options:R.optional()}),response:se},getByIds:{request:y.object({sessionId:y.string(),eventIds:y.array(y.string())}),response:y.object({events:y.array(n)})},deleteBySession:{request:y.object({sessionId:y.string()}),response:y.object({success:y.boolean(),deletedCount:y.number().optional()})},getEventsBySessions:{request:y.object({sessionIds:y.array(y.string()),types:y.array(y.string()),limitPerSession:y.number().int().min(1).optional()}),response:y.object({eventsBySession:y.record(y.string(),y.array(n))})}}}),B=z.subjects,V=r.extend({preview:a});function H(e,t){e.clientAccountId!==void 0&&e.lastClientIdentityObservation===void 0&&t.addIssue({code:y.ZodIssueCode.custom,path:[`lastClientIdentityObservation`],message:`lastClientIdentityObservation is required when clientAccountId is provided`}),e.clientAccountId!==void 0&&e.clientId===void 0&&t.addIssue({code:y.ZodIssueCode.custom,path:[`clientId`],message:`clientId is required when clientAccountId is provided`})}const U=r.superRefine((e,t)=>{H(e,t)}),W=y.object({sessionId:y.string(),session:U,ifAbsent:y.boolean().optional()}).superRefine((e,t)=>{e.sessionId!==e.session.sessionId&&t.addIssue({code:y.ZodIssueCode.custom,path:[`session`,`sessionId`],message:`session.sessionId must match the top-level sessionId`})}),G=y.string().nullable().optional(),K=y.enum([`active`,`closed`,`archived`,`discovered`]),ce=y.object({adapterName:y.string(),adapterId:y.string(),adapterSessionId:y.string().optional()}),le=y.object({agentId:y.string(),adapterName:y.string(),adapterId:y.string(),adapterSessionId:y.string(),lastActivityAt:y.number().finite()});function ue(e,t){e.identity!==void 0&&e.expectIdentityOpenForLead===void 0&&t.addIssue({code:y.ZodIssueCode.custom,path:[`expectIdentityOpenForLead`],message:`expectIdentityOpenForLead is required when identity is provided`}),e.expectIdentityOpenForLead!==void 0&&e.identity===void 0&&t.addIssue({code:y.ZodIssueCode.custom,path:[`identity`],message:`identity is required when expectIdentityOpenForLead is provided`}),e.reconcileAdapterSession!==void 0&&(e.identity!==void 0||e.expectIdentityOpenForLead!==void 0)&&t.addIssue({code:y.ZodIssueCode.custom,path:[`reconcileAdapterSession`],message:`reconcileAdapterSession cannot be combined with the identity-open-for-lead authority mode`})}const q={request:y.object({sessionId:y.string(),status:K.optional(),expectedStatus:y.array(K).nonempty().optional(),parentSessionId:y.string().nullable().optional(),contextInheritance:ee.optional(),rootSessionId:y.string().optional(),forkPointMessageId:y.string().optional(),branchKind:d.optional(),isOrchestrated:y.boolean().optional(),clientId:y.string().optional(),clientAccountId:y.string().optional(),lastClientIdentityObservation:p.optional(),executionTargetId:y.string().nullable().optional(),approvalPolicyOverride:f.nullable().optional(),title:y.string().optional(),targetWorkingDirectory:y.string().optional(),createdAt:y.number().finite().optional(),lastActivityAt:y.number().finite().optional(),metadata:u.nullable().optional(),spawningToolCallId:y.string().nullable().optional(),machineId:G,advanceGeneration:y.literal(!0).optional(),identity:ce.optional(),expectIdentityOpenForLead:y.string().nullable().optional(),reconcileAdapterSession:le.optional()}).superRefine((e,t)=>{ue(e,t)}),response:y.object({success:y.boolean(),clientAccountChanged:y.boolean().optional()})},de=y.enum([`live`]),J=y.object({externalSessionId:y.string(),source:y.string(),clientId:y.string().optional(),adapterId:y.string().optional(),cwd:y.string().nullable(),logFilePath:y.string().nullable().optional(),startedAt:y.number().finite().optional(),title:y.string().nullable().optional(),metadata:u.optional(),lastClientIdentityObservation:p.optional(),importStatus:y.enum([`discovered`,`tracking`]).optional(),activation:de.optional(),isSidechain:y.boolean().optional(),machineId:G}),Y=y.discriminatedUnion(`kind`,[J.merge(_),J.merge(g),J.merge(v),J.merge(h)]),X=y.object({externalSessionId:y.string(),source:y.string(),cwd:y.string().optional(),logFilePath:y.string().optional(),machineId:G,startMode:y.enum([`resume`,`compact`]).optional()}),Z=y.discriminatedUnion(`outcome`,[y.object({outcome:y.literal(`rebound`),sessionId:y.string()}),y.object({outcome:y.literal(`not-found`)})]),Q=m(`session`,{schemas:{get:{request:y.object({sessionId:y.string()}),response:y.object({session:r.nullable()})},set:{request:W,response:y.object({success:y.boolean(),clientAccountChanged:y.boolean().optional()})},delete:{request:y.object({sessionId:y.string()}),response:y.object({success:y.boolean()})},list:{request:y.object({status:y.enum([`active`,`closed`,`archived`,`discovered`,`all`]).optional(),limit:y.number().int().min(1).optional(),offset:y.number().int().min(0).optional(),includePreview:y.boolean().optional(),executionTargetId:y.string().optional()}),response:y.object({sessions:y.array(i),total:y.number()})},getChildren:{request:y.object({sessionId:y.string()}),response:y.object({children:y.array(te)})},search:{request:y.object({query:y.string(),limit:y.number().int().min(1).optional(),status:y.enum([`active`,`closed`,`archived`,`discovered`,`all`]).optional(),isImported:y.boolean().optional()}),response:y.object({sessions:y.array(V),total:y.number()})},update:q,getByAdapterSessionId:{request:y.object({adapterSessionId:y.string(),source:y.string().optional(),adapterName:y.string().optional()}),response:y.object({session:r.nullable()})},getStatusCounts:{request:y.object({}),response:y.object({all:y.number(),active:y.number(),closed:y.number(),archived:y.number(),discovered:y.number()})},importUpsert:{request:Y,response:y.object({sessionId:y.string(),created:y.boolean()})},rebindObserved:{request:X,response:Z},getByLogFilePath:{request:y.object({logFilePath:y.string()}),response:y.object({session:r.nullable()})},listImported:{request:y.object({source:y.string().optional(),importStatus:o.optional()}),response:y.object({sessions:y.array(r)})},countBySource:{request:y.object({source:y.string()}),response:y.object({total:y.number(),imported:y.number(),discovered:y.number(),tracking:y.number()})},updateImportStatus:{request:y.object({sessionId:y.string(),importStatus:o}),response:y.object({success:y.boolean()})}}}),fe=Q.subjects,$=`makaio:extraction-excluded`;function pe(e){return e?.[$]===!0}function me(){return{[$]:!0}}export{ae as A,k as C,T as D,w as E,ne as M,x as N,oe as O,S as P,D as S,C as T,I as _,Q as a,N as b,W as c,q as d,z as f,L as g,F as h,Y as i,re as j,ie as k,U as l,P as m,me as n,X as o,B as p,pe as r,Z as s,$ as t,fe as u,j as v,O as w,A as x,M as y};
|