@makaio/framework 1.0.0-dev-1784806252593 → 1.0.0-dev-1785344643235
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 +3 -2
- package/dist/{account-identity-CP4DC0DL.mjs → account-identity-DFx8pwKL.mjs} +1 -1
- package/dist/{adapter-CYobxqN_.mjs → adapter-D5c5LrPN.mjs} +1 -1
- package/dist/adapters/claude/index.d.mts +204 -27
- package/dist/adapters/claude/index.mjs +3 -3
- package/dist/adapters/config/index.d.mts +2 -2
- package/dist/adapters/config/index.mjs +1 -1
- package/dist/adapters/index.d.mts +49 -4
- package/dist/adapters/index.mjs +3 -3
- package/dist/adapters/node.d.mts +1 -1
- package/dist/adapters/node.mjs +1 -1
- package/dist/{artifact-DCkizHkS.mjs → artifact-DGiXqb11.mjs} +1 -1
- package/dist/attempt-record-codec-CqO1_XnE.mjs +1 -0
- package/dist/{auth-C3NOWqTU.mjs → auth-DGEdiHF6.mjs} +1 -1
- package/dist/authority-state-bootstrap-GPL_tqaT.mjs +1 -0
- package/dist/bus/index.mjs +1 -1
- package/dist/{canonical-model-EMRYCVjX.mjs → canonical-model-BAytQ4NV.mjs} +1 -1
- package/dist/capabilities-BQEp34ir.mjs +1 -0
- package/dist/{client-OYk0Ttck.mjs → client-DbS847wW.mjs} +1 -1
- package/dist/clients/index.d.mts +10 -8
- package/dist/clients/index.mjs +1 -1
- package/dist/clients/managed-install.d.mts +1 -1
- package/dist/clients/managed-install.mjs +1 -1
- package/dist/{compression-CZ_6fYq8.mjs → compression-74fFeBha.mjs} +1 -1
- package/dist/{config-namespace-DTA6EQL8.mjs → config-namespace-TVX-hG4I.mjs} +1 -1
- package/dist/{context-resolution-B5IH2Z9v.d.mts → context-resolution-BQBk4Ish.d.mts} +8 -6
- package/dist/contracts/adapter/index.d.mts +2 -2
- package/dist/contracts/adapter/index.mjs +1 -1
- package/dist/contracts/adapter/schemas/session-lineage.d.mts +1 -1
- package/dist/contracts/artifact/index.d.mts +2 -2
- package/dist/contracts/artifact/index.mjs +1 -1
- package/dist/contracts/auth/index.d.mts +2 -2
- package/dist/contracts/auth/index.mjs +1 -1
- package/dist/contracts/canonical-model/index.d.mts +1 -1
- package/dist/contracts/canonical-model/index.mjs +1 -1
- package/dist/contracts/capabilities/index.d.mts +2 -0
- package/dist/contracts/capabilities/index.mjs +1 -0
- package/dist/contracts/client/index.d.mts +2 -2
- package/dist/contracts/client/index.mjs +1 -1
- package/dist/contracts/common/index.d.mts +1 -1
- package/dist/contracts/config/index.d.mts +24 -2
- package/dist/contracts/config/index.mjs +1 -1
- package/dist/contracts/extension/index.d.mts +4 -4
- package/dist/contracts/extension/index.mjs +1 -1
- package/dist/contracts/facet/index.d.mts +1 -1
- package/dist/contracts/facet/index.mjs +1 -1
- package/dist/contracts/harness/index.d.mts +1 -1
- package/dist/contracts/harness/index.mjs +1 -1
- package/dist/contracts/host/index.d.mts +1 -1
- package/dist/contracts/host/index.mjs +1 -1
- package/dist/contracts/index.d.mts +1678 -9427
- package/dist/contracts/index.mjs +1 -1
- package/dist/contracts/materialization/index.d.mts +3 -3
- package/dist/contracts/materialization/index.mjs +1 -1
- package/dist/contracts/model-registry/index.d.mts +1 -1
- package/dist/contracts/model-registry/index.mjs +1 -1
- package/dist/contracts/native-session-supervisor/index.d.mts +1 -1
- package/dist/contracts/native-session-supervisor/index.mjs +1 -1
- package/dist/contracts/platform/index.d.mts +1 -1
- package/dist/contracts/platform/index.mjs +1 -1
- package/dist/contracts/provider/index.d.mts +2 -2
- package/dist/contracts/provider/index.mjs +1 -1
- package/dist/contracts/session/index.d.mts +2 -2
- package/dist/contracts/session/index.mjs +1 -1
- package/dist/contracts/shared/index.d.mts +2 -2
- package/dist/contracts/shared/index.mjs +1 -1
- package/dist/contracts/skill/index.d.mts +1 -1
- package/dist/contracts/skill/index.mjs +1 -1
- package/dist/contracts/telemetry/index.d.mts +1 -1
- package/dist/contracts/telemetry/index.mjs +1 -1
- package/dist/contracts/timeout/index.d.mts +1 -1
- package/dist/contracts/timeout/index.mjs +1 -1
- package/dist/contracts/toast/index.mjs +1 -1
- package/dist/contracts/variant/index.d.mts +1 -1
- package/dist/contracts/variant/index.mjs +1 -1
- package/dist/contracts/worker-node/index.d.mts +2 -0
- package/dist/contracts/worker-node/index.mjs +1 -0
- package/dist/contracts/workflow/index.d.mts +3 -3
- package/dist/contracts/workflow/index.mjs +1 -1
- package/dist/{definition-K3m51lgO.mjs → definition-CJfiv8xm.mjs} +1 -1
- package/dist/{detached-extension-handle-BsywhHfk.mjs → detached-extension-handle-Ddfquy5_.mjs} +1 -1
- package/dist/drizzle/0030_remote-worker-execution.sql +6 -0
- package/dist/drizzle/meta/_journal.json +7 -0
- package/dist/execution-attempt-repository-DWXKY41_.d.mts +1056 -0
- package/dist/execution-target-Cf645pDj.mjs +1 -0
- package/dist/{extension-Cgg45Xk1.mjs → extension-DCA4pYrY.mjs} +1 -1
- package/dist/extension-hjOPs10e.mjs +1 -0
- package/dist/{filesystem-service-Cupz_Z7S.mjs → filesystem-service-DlP2HfDg.mjs} +1 -1
- package/dist/framework-packages-C3RWfJDk.mjs +1 -0
- package/dist/git/index.mjs +1 -1
- package/dist/{globby-DWp7V-P2.mjs → globby-1yCVCk8s.mjs} +1 -1
- package/dist/{handlers-cMBmexF4.mjs → handlers-CfnLyLfE.mjs} +1 -1
- package/dist/{harness-DflvHAGV.mjs → harness-DpwsFsE7.mjs} +1 -1
- package/dist/{index-BhXCCgJV2.d.mts → index-4fE_hUP02.d.mts} +1 -1
- package/dist/{index-DeoKITib.d.mts → index-8gKx-OVP.d.mts} +85 -79
- package/dist/index-B0Kf_OWi.d.mts +267 -0
- package/dist/{index-DRiTICBU.d.mts → index-BAXkicoQ.d.mts} +1 -1
- package/dist/{index-D9Tk7hyM.d.mts → index-BC79QrGC.d.mts} +29 -29
- package/dist/{index-y5-qCuUL.d.mts → index-BQLUVXIB.d.mts} +1023 -887
- package/dist/{index-BF-ZfYo4.d.mts → index-BXD3kEs_.d.mts} +28 -10
- package/dist/{index-CYfiCzb-.d.mts → index-CL-0NeQW.d.mts} +8 -5
- package/dist/{index-Cw7_69gV.d.mts → index-CRvpVIqA.d.mts} +1 -1
- package/dist/{index-BXgsQUhf.d.mts → index-CVaRZoiu.d.mts} +8 -8
- package/dist/{index-DaMfTvfz.d.mts → index-DA9g2A5P.d.mts} +1 -1
- package/dist/{index-DSyyWwR2.d.mts → index-DJAmSnuh.d.mts} +24 -24
- package/dist/{index-pjATMrvJ.d.mts → index-DkiTJM5p.d.mts} +693 -31
- package/dist/{index-jbgHR5J2.d.mts → index-GHASUiem.d.mts} +1 -1
- package/dist/{index-D73PTKXG2.d.mts → index-I5YG-qrb2.d.mts} +6 -6
- package/dist/{index-g36yJDge.d.mts → index-SsBHjUqA.d.mts} +198 -159
- package/dist/index-XZyMxxnU.d.mts +1602 -0
- package/dist/{index-z9bcglqL.d.mts → index-brqfk9JQ.d.mts} +4 -4
- package/dist/{index-Dfl1vniO.d.mts → index-q0Tiqems.d.mts} +101 -101
- package/dist/index-w_FmghjT.d.mts +7295 -0
- package/dist/kernel/cli/index.d.mts +2 -2
- package/dist/kernel/cli/index.mjs +1 -1
- package/dist/kernel/cli/register.d.mts +1 -1
- package/dist/kernel/cli/register.mjs +1 -1
- package/dist/kernel/cli/schemas.mjs +1 -1
- package/dist/kernel/extension/index.d.mts +1 -1
- package/dist/kernel/extension/index.mjs +1 -1
- package/dist/kernel/index.d.mts +14 -8
- package/dist/kernel/index.mjs +1 -1
- package/dist/kernel/namespace/index.d.mts +1 -1
- package/dist/kernel/namespace/index.mjs +1 -1
- package/dist/kernel/observability/index.d.mts +1 -1
- package/dist/kernel/observability/index.mjs +1 -1
- package/dist/kernel/providers/index.d.mts +1 -1
- package/dist/kernel/providers/index.mjs +1 -1
- package/dist/kernel/window/index.d.mts +1 -1
- package/dist/kernel/window/index.mjs +1 -1
- package/dist/{lib-BeMM738r.mjs → lib-C7-s68uf.mjs} +1 -1
- package/dist/{lib-B7TpTzkG.mjs → lib-DErgth_E.mjs} +2 -2
- package/dist/{load-extensions-BLdG90Zi.d.mts → load-extensions-BxsDB87B.d.mts} +1 -1
- package/dist/{load-extensions-CUmFCcYi.mjs → load-extensions-D0DfjYLC.mjs} +1 -1
- package/dist/{materialization-s8eR1eQ4.mjs → materialization-Jd198K3y.mjs} +1 -1
- package/dist/mcp-http-server/index.d.mts +305 -79
- package/dist/mcp-http-server/index.mjs +4 -4
- package/dist/model-BGgVmRnN.mjs +1 -0
- package/dist/modes-BheyN7SS.mjs +1 -0
- package/dist/{namespace-DwQtzlY-.mjs → namespace-BqxtpNAn.mjs} +1 -1
- package/dist/{namespace-BHliaabz.d.mts → namespace-DBm9K23m.d.mts} +6 -6
- package/dist/{namespace-Db_PFX3v.d.mts → namespace-DI4Yx_xu.d.mts} +9 -9
- package/dist/namespace-DJfUADSV.mjs +1 -0
- package/dist/{namespace-DRHnU5Yi2.d.mts → namespace-DPgxPa8m2.d.mts} +7 -7
- package/dist/{namespace-Bd49QmzS.d.mts → namespace-DWCEo-9M.d.mts} +0 -60
- package/dist/{namespace-Dvo_7BQw.d.mts → namespace-Dkod-w11.d.mts} +2 -2
- package/dist/{namespace-BeV7LST-.d.mts → namespace-YytVKIgI.d.mts} +2 -2
- package/dist/{namespace-8-GrdcbF.d.mts → namespace-jPUGV-b2.d.mts} +42 -42
- package/dist/{native-session-supervisor-Bgz-Q1WH.mjs → native-session-supervisor-DRx0MX-d.mjs} +1 -1
- package/dist/node/bus-server/index.d.mts +1 -1
- package/dist/node/bus-server/index.mjs +1 -1
- package/dist/node/bus-server/server-lifecycle.d.mts +1 -1
- package/dist/node/bus-server/server-lifecycle.mjs +1 -1
- package/dist/node/transports/index.d.mts +81 -9
- package/dist/node/transports/index.mjs +2 -2
- package/dist/{orchestrator-shared-CY7Tu7kZ.mjs → orchestrator-shared-BxmHCPvx.mjs} +1 -1
- package/dist/package-CNUPPcU1.mjs +7 -0
- package/dist/package-DWMxGfzK.d.mts +827 -0
- package/dist/{package-DKnzOvoR.mjs → package-Dft_RItb.mjs} +1 -1
- package/dist/package.json +1 -1
- package/dist/{packages-zDnokBpl.mjs → packages-DtEEP0Vt.mjs} +1 -1
- package/dist/{profile-BRi6K6am.mjs → profile-BTAI31Nt.mjs} +1 -1
- package/dist/{provider-context-DOsjOjiR.mjs → provider-context-Dq53Cgzz.mjs} +1 -1
- package/dist/{provider-context-BYkMl--1.mjs → provider-context-PZIQWcqQ.mjs} +1 -1
- package/dist/provider-operation-Cxoe2SUr.d.mts +207 -0
- package/dist/providers/index.mjs +1 -1
- package/dist/{registry-Dw6l7k3e.mjs → registry-wfF2uTty.mjs} +29 -29
- package/dist/{resolved-O2XXjTeu.mjs → resolved-DZgqql2Z.mjs} +1 -1
- package/dist/rules/index.d.mts +1 -1
- package/dist/rules/index.mjs +1 -1
- package/dist/rules/schemas.d.mts +1 -1
- package/dist/runtime-bun/index.mjs +1 -1
- package/dist/runtime-node/extension-discovery.d.mts +1 -1
- package/dist/runtime-node/extension-validation.d.mts +1 -1
- package/dist/runtime-node/extension-validation.mjs +1 -1
- package/dist/runtime-node/index.d.mts +4 -4
- package/dist/runtime-node/index.mjs +24 -24
- package/dist/runtime-node/makaio-config.d.mts +1 -1
- package/dist/runtime-node/makaio-config.mjs +1 -1
- package/dist/runtime-node/static/model-registry.yaml +348 -0
- package/dist/runtime-node/workflow-worker/index.d.mts +2 -2
- package/dist/runtime-node/workflow-worker/index.mjs +1 -1
- package/dist/runtime-node/workflow-worker/worker-entry.d.mts +7 -4
- package/dist/runtime-node/workflow-worker/worker-entry.mjs +1 -1
- package/dist/{schema-CfMsufSb.d.mts → schema-Bwr_NrOS.d.mts} +2 -2
- package/dist/{schema-BI0aCHvV.mjs → schema-Dd-e89MO.mjs} +1 -1
- package/dist/{schemas-B5tMYfhC.d.mts → schemas-C4yUXs4G.d.mts} +4 -4
- package/dist/schemas-CRB2O5zo.mjs +1 -0
- package/dist/{schemas-Dgj3WaOI.mjs → schemas-Cm09dXL4.mjs} +1 -1
- package/dist/{schemas-BJ8VMXhO.mjs → schemas-DaHQzpgm.mjs} +1 -1
- package/dist/{schemas-SsGbBOZ-.d.mts → schemas-DuIlOWR3.d.mts} +2 -2
- package/dist/{schemas-1ahuxM83.d.mts → schemas-ENwK6jmV.d.mts} +3 -3
- package/dist/{schemas-ChF2z4RB.d.mts → schemas-N6x2z7Lf.d.mts} +0 -45
- package/dist/schemas-tDf_WiC8.mjs +1 -0
- package/dist/selection-BNwTKEVT.mjs +1 -0
- package/dist/service-base/index.d.mts +47 -2
- package/dist/service-base/index.mjs +1 -1
- package/dist/services/adapter-runtime/index.d.mts +3 -3
- package/dist/services/adapter-runtime/index.mjs +1 -1
- package/dist/services/adapter-runtime/namespace.d.mts +1 -1
- package/dist/services/adapter-runtime/schemas.d.mts +1 -1
- package/dist/services/adapter-subsystem/index.d.mts +3 -3
- package/dist/services/adapter-subsystem/index.mjs +1 -1
- package/dist/services/adapter-subsystem/namespace.d.mts +1 -1
- package/dist/services/adapter-subsystem/namespace.mjs +1 -1
- package/dist/services/agent-runtime/index.d.mts +2 -2
- package/dist/services/agent-runtime/namespace.d.mts +1 -1
- package/dist/services/agent-runtime/schemas.d.mts +1 -1
- package/dist/services/capability/index.d.mts +1 -1
- package/dist/services/capability/index.mjs +1 -1
- package/dist/services/codebase/index.d.mts +2 -2
- package/dist/services/codebase/namespace.d.mts +1 -1
- package/dist/services/codebase/schemas.d.mts +1 -1
- package/dist/services/compression/index.d.mts +2 -2
- package/dist/services/compression/namespace.d.mts +1 -1
- package/dist/services/compression/schemas.d.mts +1 -1
- package/dist/services/context-rules/index.d.mts +1 -1
- package/dist/services/context-rules/index.mjs +1 -1
- package/dist/services/execution-target/index.d.mts +4 -4
- package/dist/services/execution-target/index.mjs +1 -1
- package/dist/services/execution-target/namespace.d.mts +1 -1
- package/dist/services/execution-target/namespace.mjs +1 -1
- package/dist/services/execution-target/schemas.d.mts +1 -1
- package/dist/services/execution-target/schemas.mjs +1 -1
- package/dist/services/filesystem/index.d.mts +1 -1
- package/dist/services/filesystem/index.mjs +1 -1
- package/dist/services/git/namespace.d.mts +2 -2
- package/dist/services/git/namespace.mjs +1 -1
- package/dist/services/git/schemas.d.mts +1 -1
- package/dist/services/git/schemas.mjs +1 -1
- package/dist/services/harness/index.mjs +1 -1
- package/dist/services/index.d.mts +76 -361
- 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/log-import.mjs +1 -1
- package/dist/services/log-import/namespace.d.mts +2 -2
- package/dist/services/log-import/namespace.mjs +1 -1
- package/dist/services/log-import/schemas.d.mts +1 -1
- package/dist/services/log-import/schemas.mjs +1 -1
- package/dist/services/materialization/index.d.mts +1 -1
- package/dist/services/materialization/index.mjs +1 -1
- package/dist/services/model-registry/index.d.mts +1 -1
- package/dist/services/model-registry/index.mjs +1 -1
- package/dist/services/preferences/index.d.mts +2 -2
- package/dist/services/preferences/schemas.d.mts +1 -1
- package/dist/services/preferences/storage-namespace.d.mts +2 -2
- package/dist/services/provider-context/index.d.mts +1 -1
- package/dist/services/provider-context/index.mjs +1 -1
- package/dist/services/provider-runtime/index.mjs +1 -1
- package/dist/services/session/handlers/index.d.mts +1 -1
- package/dist/services/session/handlers/index.mjs +1 -1
- package/dist/services/session/index.d.mts +9 -9
- package/dist/services/session/index.mjs +1 -1
- package/dist/services/session/messages/namespace.d.mts +1 -1
- package/dist/services/session/messages/namespace.mjs +1 -1
- package/dist/services/session/orchestrator-testing/index.d.mts +1 -1
- package/dist/services/session/orchestrator-testing/index.mjs +1 -1
- package/dist/services/session/session-events/namespace.d.mts +1 -1
- package/dist/services/session/session-events/namespace.mjs +1 -1
- package/dist/services/session/storage/namespace.d.mts +1 -1
- package/dist/services/session/storage/schema.d.mts +1 -1
- package/dist/services/session/testing/index.mjs +1 -1
- package/dist/services/session/testing/orchestrator-shared.d.mts +1 -1
- package/dist/services/session/testing/orchestrator-shared.mjs +1 -1
- package/dist/services/session/turns/namespace.d.mts +1 -1
- package/dist/services/session/turns/namespace.mjs +1 -1
- package/dist/services/session-editor/index.d.mts +1 -1
- package/dist/services/session-editor/index.mjs +1 -1
- package/dist/services/settings/index.d.mts +3 -3
- package/dist/services/settings/index.mjs +1 -1
- package/dist/services/settings/namespace.mjs +1 -1
- package/dist/services/settings/storage/clients-namespace.d.mts +1 -1
- package/dist/services/settings/storage/clients-namespace.mjs +1 -1
- package/dist/services/settings/storage/index.d.mts +3 -3
- package/dist/services/settings/storage/index.mjs +1 -1
- package/dist/services/settings/storage/providers-namespace.d.mts +1 -1
- package/dist/services/settings/storage/providers-namespace.mjs +1 -1
- package/dist/services/subagent/index.d.mts +1 -1
- package/dist/services/subagent/index.mjs +1 -1
- package/dist/services/subagent-template/index.d.mts +2 -2
- package/dist/services/subagent-template/namespace.d.mts +1 -1
- package/dist/services/subagent-template/schemas.d.mts +1 -1
- package/dist/services/tool-approval/index.d.mts +1 -1
- package/dist/services/tool-approval/index.mjs +1 -1
- package/dist/services/tools/index.d.mts +1 -1
- package/dist/services/tools/index.mjs +1 -1
- package/dist/services/tray-menu/index.d.mts +3 -3
- package/dist/services/tray-menu/index.mjs +1 -1
- package/dist/services/tray-menu/namespace.d.mts +1 -1
- package/dist/services/tray-menu/schemas.d.mts +1 -1
- package/dist/services/turn/index.d.mts +1 -1
- package/dist/services/turn/namespace.d.mts +1 -1
- package/dist/services/workflow-transitions/index.d.mts +2 -0
- package/dist/services/workflow-transitions/index.mjs +1 -0
- package/dist/{session-Carng3Yk.mjs → session-BOGCd18q.mjs} +1 -1
- package/dist/{session-idI1jk5X.mjs → session-BTFiDoGz.mjs} +1 -1
- package/dist/{shared-RP_KARKF.mjs → shared-BQ0CHIVy.mjs} +1 -1
- package/dist/{skill-CpNjWFuE.mjs → skill-BR6rkfLe.mjs} +1 -1
- package/dist/{src-XihJcAQS.mjs → src-DD0v-nIj.mjs} +1 -1
- package/dist/storage/drizzle/client.d.mts +1 -1
- package/dist/storage/drizzle/client.mjs +1 -1
- package/dist/storage/drizzle/index.d.mts +50 -2
- package/dist/storage/drizzle/index.mjs +1 -1
- package/dist/storage/handlers/drizzle/index.d.mts +1 -1
- package/dist/storage/handlers/drizzle/index.mjs +1 -1
- package/dist/storage/handlers/index.d.mts +1 -1
- package/dist/storage/handlers/index.mjs +1 -1
- package/dist/testing/drizzle-harness.d.mts +44 -3
- package/dist/testing/drizzle-harness.mjs +1 -1
- package/dist/{tool-approval-service-fIZ9x0kL.mjs → tool-approval-service-kBA0fRzm.mjs} +1 -1
- package/dist/tools-PdG9fO1M.mjs +1 -0
- package/dist/{transition-BuUKc2J1.d.mts → transition-DuVzKt8-.d.mts} +3 -42
- package/dist/{types-LspCUW09.d.mts → types-B1MNcwgH.d.mts} +1 -1
- package/dist/{types-D2KG8ewJ.d.mts → types-BqVAOzJP.d.mts} +35 -35
- package/dist/{types-DBb5jY4Z.d.mts → types-CJ_QZ1yW.d.mts} +47 -3
- package/dist/ui-kernel/index.d.mts +1 -1
- package/dist/ui-kernel/index.mjs +1 -1
- package/dist/ui-kernel/pages/schemas.d.mts +1 -1
- package/dist/utils/index.d.mts +18 -4
- package/dist/utils/index.mjs +1 -1
- package/dist/{version-BbWrAPld.mjs → version-CoCeMxDT.mjs} +1 -1
- package/dist/{view-builder-BktOepKR.d.mts → view-builder-CvoSL2oL.d.mts} +5 -4
- package/dist/visibility-qhGWmpSJ.mjs +1 -0
- package/dist/worker-node-Bl9_vqYi.mjs +1 -0
- package/dist/worker-node-DZTuT1DS.mjs +1 -0
- package/dist/workflow-BfDbgtIQ.mjs +1 -0
- package/dist/workflow-engine/execution-attempt-repository.d.mts +2 -0
- package/dist/workflow-engine/execution-attempt-repository.mjs +1 -0
- package/dist/workflow-engine/index.d.mts +635 -701
- 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 +2 -0
- package/dist/workflow-engine/provider-operation.mjs +1 -0
- package/dist/workflow-engine/testing/index.d.mts +146 -0
- package/dist/workflow-engine/testing/index.mjs +1 -0
- package/dist/workflow-engine/testing/sqlite.d.mts +22 -0
- package/dist/workflow-engine/testing/sqlite.mjs +130 -0
- package/dist/workflow-engine/workflow-orchestrator.mjs +1 -1
- package/dist/workflow-transitions-DSc45ixc.mjs +1 -0
- package/dist/workflow-worker-BN9XPxQO.mjs +1 -0
- package/package.json +20 -3
- package/dist/authority-state-bootstrap-C_-F_dtq.mjs +0 -1
- package/dist/execution-target-CsZXIvli.mjs +0 -1
- package/dist/extension-CjTu6mzW.mjs +0 -1
- package/dist/model-uE5IyUFJ.mjs +0 -1
- package/dist/namespace-C05pkLbN.mjs +0 -1
- package/dist/package-BSG1681x.d.mts +0 -427
- package/dist/package-DW1Upu8E.mjs +0 -7
- package/dist/schemas-BRxU_oqL.mjs +0 -1
- package/dist/schemas-C-J4W1ID.mjs +0 -1
- package/dist/selection-YRuVSdck.mjs +0 -1
- package/dist/tools-Cs2DwjCC.mjs +0 -1
- package/dist/visibility-Cb62p9bv.mjs +0 -1
- package/dist/workflow-BX-FxDb0.mjs +0 -1
- package/dist/workflow-worker-DR9qYOFc.mjs +0 -1
- /package/dist/{adapter-auth-runtime-DFBLXD5K.mjs → adapter-auth-runtime-DO-FVTXg.mjs} +0 -0
- /package/dist/{adapter-binding-Dfk_g-lP.d.mts → adapter-binding-DQchUtrK.d.mts} +0 -0
- /package/dist/{ajv-C8r45sFs.mjs → ajv-DD3SIL2i.mjs} +0 -0
- /package/dist/{attach-error-DCnzW-Yz.mjs → attach-error-C3tngg6J.mjs} +0 -0
- /package/dist/{await-trigger-UceeyCyi.mjs → await-trigger-I3lrepb8.mjs} +0 -0
- /package/dist/{base-orchestrator-5yH3l39s.d.mts → base-orchestrator-BilsQNW1.d.mts} +0 -0
- /package/dist/{capability-service-BzKBK0n2.mjs → capability-service-BqiLlRGA.mjs} +0 -0
- /package/dist/{client-DYEHDiJN.d.mts → client-B--e2qcU.d.mts} +0 -0
- /package/dist/{client-binary-version-verifier-C12PvQmz.d.mts → client-binary-version-verifier-CgjM_vGF.d.mts} +0 -0
- /package/dist/{client-binary-version-verifier-Dv7TGFxh.mjs → client-binary-version-verifier-taewmKTY.mjs} +0 -0
- /package/dist/{clients-namespace-DcFmhtLv.d.mts → clients-namespace-DfxjG2ZP.d.mts} +0 -0
- /package/dist/{config-namespace-DmP7NVju.d.mts → config-namespace-BCqvufbD.d.mts} +0 -0
- /package/dist/{create-static-mount-BLbqGmva.mjs → create-static-mount-bbQhTt6W.mjs} +0 -0
- /package/dist/{cross-spawn-BXxQUsPS.mjs → cross-spawn-B57KZuns.mjs} +0 -0
- /package/dist/{cursor-storage-DCj4uUxr.mjs → cursor-storage-DIFK_9hg.mjs} +0 -0
- /package/dist/{definition-BEvV7tbD.d.mts → definition-gnKgXU91.d.mts} +0 -0
- /package/dist/{definitions-C1pgx0Nq.mjs → definitions-xrrY0wgz.mjs} +0 -0
- /package/dist/{descriptor-to-package-VfB8lK5w.mjs → descriptor-to-package-DvF08krT.mjs} +0 -0
- /package/dist/{drizzle-oCH9H53q.mjs → drizzle-z_0SiGY8.mjs} +0 -0
- /package/dist/{esm-ClQELElL.mjs → esm-CltRnX8_.mjs} +0 -0
- /package/dist/{event-BOLVCfhH.mjs → event-CmVjR6Ib.mjs} +0 -0
- /package/dist/{extension-discovery-B6p3iZaV.d.mts → extension-discovery-CQRdbVQ6.d.mts} +0 -0
- /package/dist/{extension-namespace-vrh4ERXR.mjs → extension-namespace-Yu41YepM.mjs} +0 -0
- /package/dist/{facet-DqPBpqkl.mjs → facet-BCI00njh.mjs} +0 -0
- /package/dist/{filesystem-service-CGdboor3.d.mts → filesystem-service-CQ9yVkSz.d.mts} +0 -0
- /package/dist/{handler-GGOD_ofd.mjs → handler-Cbv9FqDO.mjs} +0 -0
- /package/dist/{hook-responses-Dg8wDvRo.d.mts → hook-responses-Dh1PWXqJ.d.mts} +0 -0
- /package/dist/{host-BfgdjlII.mjs → host-Caq6ZfSJ.mjs} +0 -0
- /package/dist/{identity-BmEHHoBw.mjs → identity-D6guMtmi.mjs} +0 -0
- /package/dist/{index-DEchpaya.d.mts → index-BIdsFcQs2.d.mts} +0 -0
- /package/dist/{index-DquI_1X5.d.mts → index-BVRQEpAg.d.mts} +0 -0
- /package/dist/{index-Brdc35b-.d.mts → index-BaZeoZoS.d.mts} +0 -0
- /package/dist/{index-CzKLLQLw.d.mts → index-BskPjMet.d.mts} +0 -0
- /package/dist/{index-BSmwpgkR.d.mts → index-ByKi34v5.d.mts} +0 -0
- /package/dist/{index-oYGf2zIe.d.mts → index-CGZQVTid.d.mts} +0 -0
- /package/dist/{index-Chy9aknK.d.mts → index-CMJZ2Z8m.d.mts} +0 -0
- /package/dist/{index-4NQLoI7R.d.mts → index-CUvNKYkV.d.mts} +0 -0
- /package/dist/{index-Bd1GC1kU2.d.mts → index-CjdRdsd0.d.mts} +0 -0
- /package/dist/{index-BHQXXd-O.d.mts → index-CnMu8BQl.d.mts} +0 -0
- /package/dist/{index-DYUxNOIX.d.mts → index-Cv-o5Krs.d.mts} +0 -0
- /package/dist/{index-DC0yVsYL.d.mts → index-DN4NOCqN2.d.mts} +0 -0
- /package/dist/{index-CcsJnJOD.d.mts → index-DR40QWlw.d.mts} +0 -0
- /package/dist/{index-BG9-vQHD.d.mts → index-DZunhZec.d.mts} +0 -0
- /package/dist/{index-BsBvs0aK.d.mts → index-DjgLchuQ.d.mts} +0 -0
- /package/dist/{index-pgYFJ5h6.d.mts → index-Dm1nUxCF.d.mts} +0 -0
- /package/dist/{index-C96LlS5m.d.mts → index-Ds5_rDEJ.d.mts} +0 -0
- /package/dist/{index-B6SBIKyk.d.mts → index-HsTxm-R3.d.mts} +0 -0
- /package/dist/{index-GYZs75UP.d.mts → index-dtsLKOID.d.mts} +0 -0
- /package/dist/{index-8fJ6dkzR.d.mts → index-gUhidukN.d.mts} +0 -0
- /package/dist/{index-BgpYhR2z.d.mts → index-jTaAHsul.d.mts} +0 -0
- /package/dist/{index-Ci3_i-WC2.d.mts → index-sS6KUlrx.d.mts} +0 -0
- /package/dist/{index-CFeY8lfU.d.mts → index-vA--0lOM.d.mts} +0 -0
- /package/dist/{index-BUYyZm5I.d.mts → index-vcSj12YQ.d.mts} +0 -0
- /package/dist/{index-CdEhEXlY.d.mts → index-ye0oklfU.d.mts} +0 -0
- /package/dist/{json-value-BwVdTylT.d.mts → json-value-Brslhqbm.d.mts} +0 -0
- /package/dist/{jsonl-transport-D8RBF0dK.mjs → jsonl-transport-bQl3JwIu.mjs} +0 -0
- /package/dist/{lib-3_xcE8J-.mjs → lib-DOBXZmYX.mjs} +0 -0
- /package/dist/{model-registry-CoegIvks.mjs → model-registry-CmgcPDH3.mjs} +0 -0
- /package/dist/{model-registry-BneK5SGo.mjs → model-registry-xyBKSye-.mjs} +0 -0
- /package/dist/{namespace-CDO4rY11.mjs → namespace-B8uKAzWJ.mjs} +0 -0
- /package/dist/{namespace-BsF9IxJ9.d.mts → namespace-BOkKoq34.d.mts} +0 -0
- /package/dist/{namespace-SQAGytmu.d.mts → namespace-Blp4c8GK.d.mts} +0 -0
- /package/dist/{namespace-BeED_Ojz.mjs → namespace-C-9si-fV.mjs} +0 -0
- /package/dist/{namespace-De9Mg3zv.d.mts → namespace-CErHuXtb.d.mts} +0 -0
- /package/dist/{namespace-BHj13hbA.mjs → namespace-CWGKCNZm.mjs} +0 -0
- /package/dist/{namespace-D7pE2QWv.mjs → namespace-CWUDFGOy.mjs} +0 -0
- /package/dist/{namespace-D9HNjIdc.d.mts → namespace-Cv1RFP7n.d.mts} +0 -0
- /package/dist/{namespace-lWlqWTKu.d.mts → namespace-GPA7zots.d.mts} +0 -0
- /package/dist/{namespace-DWwWnLBu.mjs → namespace-HO2J9sO8.mjs} +0 -0
- /package/dist/{namespace-C238RqwB.mjs → namespace-YxU1xf-K.mjs} +0 -0
- /package/dist/{namespace-B9CYb9Gh.d.mts → namespace-jDhZjw-i.d.mts} +0 -0
- /package/dist/{namespace-BSXHdCVh2.d.mts → namespace-tGRAod3o.d.mts} +0 -0
- /package/dist/{orchestrator-shared-BB6j8ezL.d.mts → orchestrator-shared-BHCv-l2O.d.mts} +0 -0
- /package/dist/{out-CFkI17mk.mjs → out-CvjtANXN.mjs} +0 -0
- /package/dist/{packages-DeIgn0Hn.d.mts → packages-BZ6pzFIq.d.mts} +0 -0
- /package/dist/{platform-CWhGFQFX.mjs → platform-Bv8llU9c.mjs} +0 -0
- /package/dist/{providers-CUnrif24.mjs → providers-Co5UszRH.mjs} +0 -0
- /package/dist/{providers-namespace-sPbGcZ6I.d.mts → providers-namespace-DjFkmvBR.d.mts} +0 -0
- /package/dist/{quick-lru-CTBjxfgD.mjs → quick-lru-CrOpWwrf.mjs} +0 -0
- /package/dist/{schema-cus0dJ81.mjs → schema-Db-y-09L.mjs} +0 -0
- /package/dist/{schema-introspection-BsWLmoFp.mjs → schema-introspection-DgWQCpwx.mjs} +0 -0
- /package/dist/{schemas-DYvvMd3c.d.mts → schemas-B1NWNASS.d.mts} +0 -0
- /package/dist/{schemas-CMyv7l7-.mjs → schemas-BGExwp3j.mjs} +0 -0
- /package/dist/{schemas-Dmij0PIc.d.mts → schemas-BO7uOum6.d.mts} +0 -0
- /package/dist/{schemas-BGS9RfqV.mjs → schemas-Bfxskx_2.mjs} +0 -0
- /package/dist/{schemas-BKKpQC4X2.d.mts → schemas-BtZqovRH.d.mts} +0 -0
- /package/dist/{schemas-BAvt2HDy.d.mts → schemas-CQyRBqD6.d.mts} +0 -0
- /package/dist/{schemas-D55eXBgl.d.mts → schemas-CR8hSqTy.d.mts} +0 -0
- /package/dist/{schemas-CWxf_Yut.mjs → schemas-CqRm0i9a.mjs} +0 -0
- /package/dist/{schemas-CiWCNQ9a2.d.mts → schemas-CwbYk_kZ.d.mts} +0 -0
- /package/dist/{schemas-B4FyOOJj.d.mts → schemas-miYxK_Z1.d.mts} +0 -0
- /package/dist/{semver-D3Y7uMEb.mjs → semver-DlM8znk4.mjs} +0 -0
- /package/dist/{server-lifecycle-C-3OgoKi.d.mts → server-lifecycle-Dsq56aqC.d.mts} +0 -0
- /package/dist/{server-lifecycle-DV6NMsgH.mjs → server-lifecycle-kmQ5PUDv.mjs} +0 -0
- /package/dist/{session-lineage-D4z26OtM.d.mts → session-lineage-B_JW5LpF.d.mts} +0 -0
- /package/dist/{shared-schemas-BNCPgGYP.mjs → shared-schemas-DXwyMCwZ.mjs} +0 -0
- /package/dist/{src-ftBp6GpR.mjs → src-CCu8TwL6.mjs} +0 -0
- /package/dist/{storage-namespace-B1GI4elv.mjs → storage-namespace-BSrv0vXR.mjs} +0 -0
- /package/dist/{storage-namespace-definition-V8sc3drq.d.mts → storage-namespace-definition-BvlX0QV_.d.mts} +0 -0
- /package/dist/{storage-namespace-definition-4UYuij1r.mjs → storage-namespace-definition-CkMKt7-I.mjs} +0 -0
- /package/dist/{storage-namespace-9N9R61pI.d.mts → storage-namespace-dfywhXR3.d.mts} +0 -0
- /package/dist/{supports-color-DwW9N6YC.mjs → supports-color-DUugCQsK.mjs} +0 -0
- /package/dist/{telemetry-B42EMbZt.mjs → telemetry-Pr3oP2rk.mjs} +0 -0
- /package/dist/{timeout-CvONPl0l.mjs → timeout-DWDhddRJ.mjs} +0 -0
- /package/dist/{tray-menu-service-Dgedanv-.mjs → tray-menu-service-BBLa-Rcv.mjs} +0 -0
- /package/dist/{types-DkFvBdIY.d.mts → types-BrcjaNPZ.d.mts} +0 -0
- /package/dist/{types-DVLq657Y.d.mts → types-DHmPneIO.d.mts} +0 -0
- /package/dist/{types-Bju4dmAg.d.mts → types-b54n1o57.d.mts} +0 -0
- /package/dist/{ui-config-B2L3Xgqo.mjs → ui-config-CyCdlns_.mjs} +0 -0
- /package/dist/{variant-ByI-RZua.mjs → variant-krjlTdJt.mjs} +0 -0
- /package/dist/{window-registry-Qcnvlhp7.d.mts → window-registry-BDnZLPVx.d.mts} +0 -0
- /package/dist/{window-registry-DsWnCc8z.mjs → window-registry-I-imZHV_.mjs} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
import{t as e}from"../../tool-approval-service-
|
|
1
|
+
import{t as e}from"../../tool-approval-service-kBA0fRzm.mjs";export{e as ToolApprovalService};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { a as createToolContributionProcessor, c as ToolRegistryOptions, d as ToolsetPolicy, f as ToolsetPolicyProvider, i as extractToolFilePath, l as ToolsWithToolsetsResult, n as FileAccessRuleProvider, o as ToolRegistry, r as FileAccessRules, s as ListToolsFilter, t as FILE_ACCESS_RULES_KEY, u as ToolsetInfo } from "../../index-
|
|
1
|
+
import { a as createToolContributionProcessor, c as ToolRegistryOptions, d as ToolsetPolicy, f as ToolsetPolicyProvider, i as extractToolFilePath, l as ToolsWithToolsetsResult, n as FileAccessRuleProvider, o as ToolRegistry, r as FileAccessRules, s as ListToolsFilter, t as FILE_ACCESS_RULES_KEY, u as ToolsetInfo } from "../../index-BaZeoZoS.mjs";
|
|
2
2
|
export { FILE_ACCESS_RULES_KEY, FileAccessRuleProvider, FileAccessRules, ListToolsFilter, ToolRegistry, ToolRegistryOptions, ToolsWithToolsetsResult, ToolsetInfo, ToolsetPolicy, ToolsetPolicyProvider, createToolContributionProcessor, extractToolFilePath };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{N as e}from"../../framework-packages-C3RWfJDk.mjs";import{n as t,r as n,t as r}from"../../tools-PdG9fO1M.mjs";export{r as FILE_ACCESS_RULES_KEY,e as ToolRegistry,n as createToolContributionProcessor,t as extractToolFilePath};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { t as TrayMenuService } from "../../index-
|
|
2
|
-
import { a as TrayMenuGroupSchema, c as TrayMenuListEntry, d as TrayMenuSchemas, f as TrayMenuSectionSchema, i as TrayMenuGroupEntrySchema, l as TrayMenuListEntrySchema, n as TrayMenuEntrySchema, o as TrayMenuItemClicked, r as TrayMenuGroup, s as TrayMenuItemClickedSchema, t as TrayMenuEntry, u as TrayMenuMetadataSchema } from "../../schemas-
|
|
3
|
-
import { n as TrayMenuSubjects, t as TrayMenuNamespace } from "../../namespace-
|
|
1
|
+
import { t as TrayMenuService } from "../../index-ByKi34v5.mjs";
|
|
2
|
+
import { a as TrayMenuGroupSchema, c as TrayMenuListEntry, d as TrayMenuSchemas, f as TrayMenuSectionSchema, i as TrayMenuGroupEntrySchema, l as TrayMenuListEntrySchema, n as TrayMenuEntrySchema, o as TrayMenuItemClicked, r as TrayMenuGroup, s as TrayMenuItemClickedSchema, t as TrayMenuEntry, u as TrayMenuMetadataSchema } from "../../schemas-CwbYk_kZ.mjs";
|
|
3
|
+
import { n as TrayMenuSubjects, t as TrayMenuNamespace } from "../../namespace-tGRAod3o.mjs";
|
|
4
4
|
export { TrayMenuEntry, TrayMenuEntrySchema, TrayMenuGroup, TrayMenuGroupEntrySchema, TrayMenuGroupSchema, TrayMenuItemClicked, TrayMenuItemClickedSchema, TrayMenuListEntry, TrayMenuListEntrySchema, TrayMenuMetadataSchema, TrayMenuNamespace, TrayMenuSchemas, TrayMenuSectionSchema, TrayMenuService, TrayMenuSubjects };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{TrayMenuEntrySchema as e,TrayMenuGroupEntrySchema as t,TrayMenuGroupSchema as n,TrayMenuItemClickedSchema as r,TrayMenuListEntrySchema as i,TrayMenuMetadataSchema as a,TrayMenuSchemas as o,TrayMenuSectionSchema as s}from"./schemas.mjs";import{TrayMenuNamespace as c,TrayMenuSubjects as l}from"./namespace.mjs";import{t as u}from"../../tray-menu-service-
|
|
1
|
+
import{TrayMenuEntrySchema as e,TrayMenuGroupEntrySchema as t,TrayMenuGroupSchema as n,TrayMenuItemClickedSchema as r,TrayMenuListEntrySchema as i,TrayMenuMetadataSchema as a,TrayMenuSchemas as o,TrayMenuSectionSchema as s}from"./schemas.mjs";import{TrayMenuNamespace as c,TrayMenuSubjects as l}from"./namespace.mjs";import{t as u}from"../../tray-menu-service-BBLa-Rcv.mjs";export{e as TrayMenuEntrySchema,t as TrayMenuGroupEntrySchema,n as TrayMenuGroupSchema,r as TrayMenuItemClickedSchema,i as TrayMenuListEntrySchema,a as TrayMenuMetadataSchema,c as TrayMenuNamespace,o as TrayMenuSchemas,s as TrayMenuSectionSchema,u as TrayMenuService,l as TrayMenuSubjects};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { n as TrayMenuSubjects, t as TrayMenuNamespace } from "../../namespace-
|
|
1
|
+
import { n as TrayMenuSubjects, t as TrayMenuNamespace } from "../../namespace-tGRAod3o.mjs";
|
|
2
2
|
export { TrayMenuNamespace, TrayMenuSubjects };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { a as TrayMenuGroupSchema, c as TrayMenuListEntry, d as TrayMenuSchemas, f as TrayMenuSectionSchema, i as TrayMenuGroupEntrySchema, l as TrayMenuListEntrySchema, n as TrayMenuEntrySchema, o as TrayMenuItemClicked, r as TrayMenuGroup, s as TrayMenuItemClickedSchema, t as TrayMenuEntry, u as TrayMenuMetadataSchema } from "../../schemas-
|
|
1
|
+
import { a as TrayMenuGroupSchema, c as TrayMenuListEntry, d as TrayMenuSchemas, f as TrayMenuSectionSchema, i as TrayMenuGroupEntrySchema, l as TrayMenuListEntrySchema, n as TrayMenuEntrySchema, o as TrayMenuItemClicked, r as TrayMenuGroup, s as TrayMenuItemClickedSchema, t as TrayMenuEntry, u as TrayMenuMetadataSchema } from "../../schemas-CwbYk_kZ.mjs";
|
|
2
2
|
export { TrayMenuEntry, TrayMenuEntrySchema, TrayMenuGroup, TrayMenuGroupEntrySchema, TrayMenuGroupSchema, TrayMenuItemClicked, TrayMenuItemClickedSchema, TrayMenuListEntry, TrayMenuListEntrySchema, TrayMenuMetadataSchema, TrayMenuSchemas, TrayMenuSectionSchema };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { n as TurnStorageSubjects, t as TurnStorageNamespace } from "../../namespace-
|
|
1
|
+
import { n as TurnStorageSubjects, t as TurnStorageNamespace } from "../../namespace-GPA7zots.mjs";
|
|
2
2
|
export { TurnStorageNamespace, TurnStorageSubjects };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { n as TurnStorageSubjects, t as TurnStorageNamespace } from "../../namespace-
|
|
1
|
+
import { n as TurnStorageSubjects, t as TurnStorageNamespace } from "../../namespace-GPA7zots.mjs";
|
|
2
2
|
export { TurnStorageNamespace, TurnStorageSubjects };
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import { a as WORKFLOW_START_ACTION_TYPE, i as TransitionActionRegistry, n as TransitionPipelineService, r as TransitionRuleRegistry, t as createTransitionContributionProcessor } from "../../index-B0Kf_OWi.mjs";
|
|
2
|
+
export { TransitionActionRegistry, TransitionPipelineService, TransitionRuleRegistry, WORKFLOW_START_ACTION_TYPE, createTransitionContributionProcessor };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{A as e,O as t,j as n,k as r}from"../../framework-packages-C3RWfJDk.mjs";import{t as i}from"../../workflow-transitions-DSc45ixc.mjs";export{e as TransitionActionRegistry,t as TransitionPipelineService,r as TransitionRuleRegistry,n as WORKFLOW_START_ACTION_TYPE,i as createTransitionContributionProcessor};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{B as e,G as t,J as n,K as ee,L as r,M as i,N as a,R as o,ft as s,mt as c,pt as l,ut as u,x as d,z as f}from"./schemas-
|
|
1
|
+
import{B as e,G as t,J as n,K as ee,L as r,M as i,N as a,R as o,ft as s,mt as c,pt as l,ut as u,x as d,z as f}from"./schemas-Cm09dXL4.mjs";import"./compression-74fFeBha.mjs";import{t as p}from"./schemas-BGExwp3j.mjs";import{i as m}from"./account-identity-DFx8pwKL.mjs";import{CompressSessionLineageSchema as h,ForkSessionLineageSchema as g,RootSessionLineageSchema as _,SubagentSessionLineageSchema as v}from"./contracts/adapter/schemas/session-lineage.mjs";import{t as y}from"./storage-namespace-definition-CkMKt7-I.mjs";import{z as b}from"zod";import{createBusNamespace as x}from"@makaio/framework/core";const S=x(`session`,d),te=S.subjects;function ne(e){return a.includes(e.type)}const re=`ui-warnings`,C=`connector-swap-warning-suppressed`,w=1440*60*1e3,T={cancel:`cancel`,edit:`edit`,continue:`continue`},E=`CONNECTOR_SWAP_CANCELLED`;var D=class extends Error{code=E;constructor(){super(`Connector swap cancelled by user`),this.name=`ConnectorSwapCancelledError`}};function O(e){return e instanceof D||e instanceof Error&&`code`in e&&e.code===`CONNECTOR_SWAP_CANCELLED`}const k={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 A(e){return e!=null&&k[e].staysInView}function j(e){return e==null||k[e].navigatesToChild}function M(e){return e!=null&&k[e].canMergeBack}function N(e){return k[e]}const P=b.object({timestamp:b.number(),messageId:b.string()}),F=y(`message`,{schemas:{append:{request:b.object({message:n.omit({messageId:!0}).extend({messageId:b.string().optional()}),emitEvent:b.boolean().optional()}),response:b.object({message:n})},getBySession:{request:b.object({sessionId:b.string(),limit:b.number().int().min(1).optional(),after:P.optional(),includeAfter:b.boolean().optional(),order:b.enum([`asc`,`desc`]).optional()}),response:b.object({messages:b.array(n),nextCursor:P.nullable()})},getByTurn:{request:b.object({turnId:b.string()}),response:b.object({messages:b.array(n)})},get:{request:b.object({messageId:b.string()}),response:b.object({message:n.nullable()})},getByAdapterMessageId:{request:b.object({adapterMessageId:b.string()}),response:b.object({message:n.nullable()})},search:{request:b.object({query:b.string(),sessionId:b.string().optional(),limit:b.number().int().min(1).optional()}),response:b.object({messages:b.array(n),total:b.number()})},ftsSearch:{request:b.object({query:b.string(),sessionId:b.string().optional(),limit:b.number().int().min(1).optional().default(20)}),response:b.object({results:b.array(b.object({messageId:b.string(),sessionId:b.string(),score:b.number(),excerpt:b.string()})),total:b.number()})},upsertByAdapterMessageId:{request:b.object({sessionId:b.string(),turnId:b.string().nullable(),adapterMessageId:b.string(),role:b.enum([`user`,`assistant`]),contentText:b.string(),blocks:b.array(t),agentId:b.string().optional(),adapterSessionId:b.string().optional(),timestamp:b.number(),origin:ee.optional()}),response:b.object({messageId:b.string(),created:b.boolean()})},stored:b.object({message:n})}}),I=F.subjects;function L(e,t){return e.timestamp===t.timestamp?e.messageId.localeCompare(t.messageId):e.timestamp-t.timestamp}function R(e,t){return L(t,e)}function ie(e){return{timestamp:e.timestamp,messageId:e.messageId}}function z(e){return`${e.timestamp}:${e.messageId}`}const B=b.object({after:b.string().optional(),limit:b.number().int().min(1).optional(),types:b.array(b.string()).optional(),includeReasoning:b.boolean().optional(),order:b.enum([`asc`,`desc`]).optional()}),V=b.object({events:b.array(i),nextCursor:b.string().nullable(),totalCount:b.number().optional()}),H=y(`sessionEvent`,{schemas:{append:{request:b.object({event:i}),response:b.object({success:b.boolean()})},getEvents:{request:b.object({sessionId:b.string(),options:B.optional()}),response:V},getByIds:{request:b.object({sessionId:b.string(),eventIds:b.array(b.string())}),response:b.object({events:b.array(i)})},deleteBySession:{request:b.object({sessionId:b.string()}),response:b.object({success:b.boolean(),deletedCount:b.number().optional()})},getEventsBySessions:{request:b.object({sessionIds:b.array(b.string()),types:b.array(b.string()),limitPerSession:b.number().int().min(1).optional()}),response:b.object({eventsBySession:b.record(b.string(),b.array(i))})}}}),U=H.subjects,W=r.extend({preview:o});function G(e,t){e.clientAccountId!==void 0&&e.lastClientIdentityObservation===void 0&&t.addIssue({code:b.ZodIssueCode.custom,path:[`lastClientIdentityObservation`],message:`lastClientIdentityObservation is required when clientAccountId is provided`}),e.clientAccountId!==void 0&&e.clientId===void 0&&t.addIssue({code:b.ZodIssueCode.custom,path:[`clientId`],message:`clientId is required when clientAccountId is provided`})}const K=r.superRefine((e,t)=>{G(e,t)}),q=b.object({sessionId:b.string(),session:K,ifAbsent:b.boolean().optional()}).superRefine((e,t)=>{e.sessionId!==e.session.sessionId&&t.addIssue({code:b.ZodIssueCode.custom,path:[`session`,`sessionId`],message:`session.sessionId must match the top-level sessionId`})}),J=b.string().nullable().optional(),Y={request:b.object({sessionId:b.string(),status:b.enum([`active`,`closed`,`archived`,`discovered`]).optional(),parentSessionId:b.string().optional(),contextInheritance:c.optional(),rootSessionId:b.string().optional(),forkPointMessageId:b.string().optional(),branchKind:s.optional(),isOrchestrated:b.boolean().optional(),clientId:b.string().optional(),clientAccountId:b.string().optional(),lastClientIdentityObservation:m.optional(),executionTargetId:b.string().nullable().optional(),approvalPolicyOverride:p.nullable().optional(),title:b.string().optional(),targetWorkingDirectory:b.string().optional(),createdAt:b.number().finite().optional(),lastActivityAt:b.number().finite().optional(),metadata:f.nullable().optional(),spawningToolCallId:b.string().nullable().optional(),machineId:J}),response:b.object({success:b.boolean(),clientAccountChanged:b.boolean().optional()})},ae=b.enum([`live`]),X=b.object({externalSessionId:b.string(),source:b.string(),clientId:b.string().optional(),adapterId:b.string().optional(),cwd:b.string().nullable(),logFilePath:b.string().nullable().optional(),startedAt:b.number().finite().optional(),title:b.string().nullable().optional(),metadata:f.optional(),lastClientIdentityObservation:m.optional(),importStatus:b.enum([`discovered`,`tracking`]).optional(),activation:ae.optional(),isSidechain:b.boolean().optional(),machineId:J}),Z=b.discriminatedUnion(`kind`,[X.merge(_),X.merge(g),X.merge(v),X.merge(h)]),Q=y(`session`,{schemas:{get:{request:b.object({sessionId:b.string()}),response:b.object({session:r.nullable()})},set:{request:q,response:b.object({success:b.boolean(),clientAccountChanged:b.boolean().optional()})},delete:{request:b.object({sessionId:b.string()}),response:b.object({success:b.boolean()})},list:{request:b.object({status:b.enum([`active`,`closed`,`archived`,`discovered`,`all`]).optional(),limit:b.number().int().min(1).optional(),offset:b.number().int().min(0).optional(),includePreview:b.boolean().optional(),executionTargetId:b.string().optional()}),response:b.object({sessions:b.array(e),total:b.number()})},getChildren:{request:b.object({sessionId:b.string()}),response:b.object({children:b.array(u)})},search:{request:b.object({query:b.string(),limit:b.number().int().min(1).optional(),status:b.enum([`active`,`closed`,`archived`,`discovered`,`all`]).optional(),isImported:b.boolean().optional()}),response:b.object({sessions:b.array(W),total:b.number()})},update:Y,getByAdapterSessionId:{request:b.object({adapterSessionId:b.string(),source:b.string().optional(),adapterName:b.string().optional()}),response:b.object({session:r.nullable()})},getStatusCounts:{request:b.object({}),response:b.object({all:b.number(),active:b.number(),closed:b.number(),archived:b.number(),discovered:b.number()})},importUpsert:{request:Z,response:b.object({sessionId:b.string(),created:b.boolean()})},getByLogFilePath:{request:b.object({logFilePath:b.string()}),response:b.object({session:r.nullable()})},listImported:{request:b.object({source:b.string().optional(),importStatus:l.optional()}),response:b.object({sessions:b.array(r)})},countBySource:{request:b.object({source:b.string()}),response:b.object({total:b.number(),imported:b.number(),discovered:b.number(),tracking:b.number()})},updateImportStatus:{request:b.object({sessionId:b.string(),importStatus:l}),response:b.object({success:b.boolean()})}}}),oe=Q.subjects,$=`makaio:extraction-excluded`;function se(e){return e?.[$]===!0}function ce(){return{[$]:!0}}export{ne as A,E as C,C as D,T as E,te as M,w as O,j as S,O as T,F as _,Q as a,A as b,oe as c,U as d,L as f,P as g,ie as h,Z as i,S as j,re as k,Y as l,z as m,ce as n,q as o,R as p,se as r,K as s,$ as t,H as u,I as v,D as w,M as x,N as y};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{agents as e,agentsDual as t,sessions as n,sessionsDual as r}from"./services/session/storage/schema.mjs";import"./schema-BI0aCHvV.mjs";import{a as i,n as a,o}from"./namespace-DwQtzlY-.mjs";import{D as s,F as c,I as l,L as u,R as d,T as f,_ as p,d as m,g as h,h as g,k as _,l as v,m as ee,p as te,u as ne,v as y,x as b,z as x}from"./handlers-cMBmexF4.mjs";import{TurnStorageSubjects as S}from"./services/turn/namespace.mjs";import{SessionStorageSubjects as C}from"./services/session/storage/namespace.mjs";import{o as re}from"./provider-context-BYkMl--1.mjs";import{AdapterRuntimeSubjects as w}from"./services/adapter-runtime/namespace.mjs";import{MessageStorageSubjects as T}from"./services/session/messages/namespace.mjs";import{n as E}from"./namespace-BHj13hbA.mjs";import{z as D}from"zod";import{createBusNamespace as ie}from"@makaio/framework/core";import{MakaioBus as ae,NoHandlerError as oe,TimeoutError as se}from"@makaio/framework/bus";import{AdapterSubjects as O,AgentSubjects as k,CanonicalModelSubjects as ce,CapabilitySubjects as le,ClientSubjects as ue,CompressionModeSchema as de,FORK_SESSION_LINEAGE_KIND as fe,ForkTransformsSchema as pe,MessageRoutingSchema as me,MessageStorageSubjects as he,ROOT_SESSION_LINEAGE_KIND as ge,SessionContextSchema as _e,SessionDiscoveredSchema as ve,SessionRecordMetadataSchema as ye,SessionStorageSetRequestSchema as be,SessionStorageUpdateSchema as xe,SessionSubjects as A,TurnIngestionMarkerSchema as Se,compareMessageCursorAsc as Ce,compareMessageCursorDesc as we,isCanonicalModelParseError as Te,messageToCursor as j,parseCanonicalModel as Ee}from"@makaio/framework/contracts";import{BaseService as De}from"@makaio/framework/service-base";import{blob as Oe,index as ke,integer as Ae,primaryKey as je,sqliteTable as Me,text as Ne,uniqueIndex as Pe}from"drizzle-orm/sqlite-core";import{index as Fe,primaryKey as Ie}from"drizzle-orm/pg-core";import{defineDialectSchema as Le,defineDualTable as Re,didAffectRows as M,getRawSqlExecutor as ze,getStorageEngine as Be,resolveSchema as N,resolveStorageEngine as Ve}from"@makaio/framework/storage/drizzle";import{and as P,asc as He,count as F,desc as Ue,eq as I,gt as We,gte as Ge,inArray as L,isNull as R,lt as Ke,lte as qe,or as Je,sql as z}from"drizzle-orm";import{createStorageNamespaceDefinition as Ye}from"@makaio/framework/storage";import{ClientIdentityObservationSchema as Xe}from"@makaio/framework/contracts/client";import{ImportCursorStorageSubjects as Ze}from"@makaio/framework/adapters";function Qe(e){return e.on(A.agent.added,async t=>{let n=await e.requestOptional(C.get,{sessionId:t.payload.sessionId}),r=n.handled?n.data.session:void 0;r&&(r.adapterSessionId||(r.adapterSessionId=t.payload.adapterSessionId,r.adapterName=t.payload.adapterName,r.adapterId=t.payload.adapterId),(t.payload.role??(r.leadAgentId?`member`:`lead`))===`lead`&&(r.leadAgentId=t.payload.agentId),r.lastActivityAt=Date.now(),await e.request(C.set,{sessionId:t.payload.sessionId,session:r}))})}function $e(e){return e.on(A.agent.removed,async t=>{let n=await e.requestOptional(C.get,{sessionId:t.payload.sessionId}),r=n.handled?n.data.session:void 0;r&&(await e.requestOptional(c.updateStatus,{agentId:t.payload.agentId,status:`disposed`}),r.leadAgentId===t.payload.agentId&&(r.leadAgentId=void 0),r.lastActivityAt=Date.now(),await e.request(C.set,{sessionId:t.payload.sessionId,session:r}))})}function et(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(c.get,{agentId:n}),l=s.handled?s.data.agent:null;l&&!l.adapterSessionId&&await e.requestOptional(c.updateRuntime,{agentId:n,adapterSessionId:r});let u=await e.requestOptional(C.get,{sessionId:o}),d=u.handled?u.data.session:null;if(d&&!d.adapterSessionId){if(d.adapterName){if(i!==d.adapterName)return;d.adapterSessionId=r}else d.adapterSessionId=r,d.adapterName=i,d.adapterId=a;d.lastActivityAt=Date.now(),await e.requestOptional(C.set,{sessionId:o,session:d})}})}function tt(e){return[it(e),at(e),ot(e),nt(e),st(e),ut(e),dt(e),ft(e),pt(e),Qe(e.bus),$e(e.bus),et(e.bus)]}function nt(e){let{bus:t}=e;return t.on(A.turn.await,async e=>{let{sessionId:n,turnId:r,timeoutMs:i}=e.payload,a=new AbortController,o=t.once(A.turn.completed,{timeoutMs:i,filter:{sessionId:n,turnId:r},signal:a.signal});o.catch(()=>void 0);let s=await rt(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 se(`session.turn.await`,i):e}})}async function rt(e,t,n){let r=await e.requestOptional(S.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 it(e){let{bus:t}=e;return t.on(A.create,async e=>{let{sessionId:n,parentSessionId:r,contextInheritance:i,forkPointMessageId:a,branchKind:o,forkTransforms:s,title:c,targetWorkingDirectory:l,executionTargetId:u,metadata:d,spawningToolCallId:f,originWindowId:p,machineId:m}=e.payload,h=n??crypto.randomUUID(),g=r===void 0?void 0:(await t.request(A.get,{sessionId:r})).session;if(r!==void 0&&g===null)throw Error(`[session.create] Parent session not found: ${r}`);let _=g?g.rootSessionId??g.sessionId:void 0,v=Date.now(),ee={sessionId:h,createdAt:v,lastActivityAt:v,agents:[],status:`active`,title:c,parentSessionId:r,contextInheritance:i,forkPointMessageId:a,branchKind:o,forkTransforms:s,targetWorkingDirectory:l,executionTargetId:u,metadata:d,spawningToolCallId:f,..._!==void 0&&{rootSessionId:_},...m!==void 0&&{machineId:m}},te=await t.requestOptional(C.set,{sessionId:h,session:ee,ifAbsent:!0});if(te.handled&&!te.data.success){e.setResult({sessionId:h});return}await t.emit(A.created,{sessionId:h,createdAt:ee.createdAt,parentSessionId:r??null,branchKind:o??null,originWindowId:p??`server`}),e.setResult({sessionId:h})})}function at(e){let{bus:t}=e;return t.on(A.get,async e=>{let n=await t.requestOptional(C.get,{sessionId:e.payload.sessionId}),r=n.handled?n.data.session:null;e.setResult({session:r})})}function ot(e){let{bus:t}=e;return t.on(A.list,async e=>{let{status:n,limit:r,offset:i,includePreview:a,executionTargetId:o}=e.payload,s=await t.requestOptional(C.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 st(e){let{bus:t}=e;return t.on(A.close,async e=>{let{sessionId:n}=e.payload,r=await t.requestOptional(C.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}i.status=`closed`,i.lastActivityAt=Date.now(),await t.requestOptional(C.set,{sessionId:n,session:i}),await t.emit(A.closed,{sessionId:n}),e.setResult({success:!0})})}async function ct(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 lt(e,t){if(t!==void 0)return t;let n=await e.requestOptional(w.getMachineId,{});return n.handled?n.data.machineId:void 0}function ut(e){let{bus:t}=e;return t.on(A.restartAgents,async e=>{let{sessionId:n,machineId:r}=e.payload,i=await t.requestOptional(c.listBySession,{sessionId:n}),a=i.handled?i.data.agents:[],o=[],s=await lt(t,r),l=await t.requestOptional(C.get,{sessionId:n}),u=l.handled?l.data.session??void 0:void 0;for(let e of a)try{let n,r=!1;if(u!==void 0&&(b({intent:`resume`,session:u,localMachineId:s,adapterSupportsNative:await ct(t,e.adapterId),targetAdapterName:e.adapterName,currentCwd:e.cwd,targetCwd:e.cwd}).kind===`native`&&e.adapterSessionId!==void 0?n=e.adapterSessionId:r=!0),r){o.push({agentId:e.agentId,adapterId:e.adapterId,success:!0});continue}let i=await f(t,e,{cwd:e.cwd,model:e.model,resumeAdapterSessionId:n});await t.requestOptional(c.updateRuntime,{agentId:i.agentId,adapterId:i.adapterId}),o.push({agentId:i.agentId,adapterId:i.adapterId,success:!0})}catch(t){let n=t instanceof Error?t.cause:void 0,r=n instanceof Error?n.message:t instanceof Error?t.message:String(t);o.push({agentId:e.agentId,adapterId:e.adapterId,success:!1,error:r})}e.setResult({sessionId:n,results:o})})}function dt(e){let{bus:t}=e;return t.on(A.update,async e=>{let{sessionId:n,executionTargetId:r,approvalPolicyOverride:i,title:a,metadata:o}=e.payload,s=await t.requestOptional(C.update,{sessionId:n,executionTargetId:r,approvalPolicyOverride:i,title:a,metadata:o}),c=s.handled?s.data.success:!1;if(c){let e=[];r!==void 0&&e.push(`executionTargetId`),i!==void 0&&e.push(`approvalPolicyOverride`),a!==void 0&&e.push(`title`),o!==void 0&&e.push(`metadata`),e.length>0&&await t.emit(A.updated,{sessionId:n,changedProperties:e})}e.setResult({success:c})})}function ft(e){let{bus:t}=e;return t.on(A.archive,async e=>{let{sessionId:n}=e.payload,r=await t.requestOptional(C.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}i.status=`archived`,i.lastActivityAt=Date.now(),await t.requestOptional(C.set,{sessionId:n,session:i}),await t.emit(A.archived,{sessionId:n}),e.setResult({success:!0})})}function pt(e){let{bus:t}=e;return t.on(A.purge,async e=>{let{sessionId:n}=e.payload,r=await t.requestOptional(C.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 o=await t.requestOptional(C.list,{status:`all`}),s=o.handled?o.data.sessions:[];for(let e of s)e.parentSessionId===n&&await t.requestOptional(C.set,{sessionId:e.sessionId,session:{...e,parentSessionId:void 0}});let c=await t.requestOptional(a.getEvents,{sessionId:n,options:{limit:1}}),l=c.handled?c.data.totalCount:0;await t.requestOptional(a.deleteBySession,{sessionId:n}),await t.requestOptional(C.delete,{sessionId:n}),await t.emit(A.purged,{sessionId:n}),e.setResult({success:!0,eventsDeleted:l})})}var mt=class extends De{constructor(e=ae){super(e)}async onInit(){for(let e of tt({bus:this.bus}))this.addCleanup(e);this.addCleanup(x(this.bus)),await this.reconcileOrphanedTurns()}async reconcileOrphanedTurns(){let e=await this.bus.requestOptional(S.listActive,{});if(!e.handled)return;let{turns:t}=e.data;for(let e of t)try{let{transitioned:t}=await this.bus.request(S.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 l(this.bus,{type:`turn.completed`,sessionId:e.sessionId,payload:t}),await this.bus.emit(A.turn.completed,t)}}catch(t){console.error(`[MakaioSessionService] Failed to reconcile orphaned turn ${e.turnId}:`,t)}}};function ht(e){return Error(`No adapter found for adapterName="${e}". Ensure adapter-runtime identity handlers are registered; adapter startup verifies live availability.`)}var gt=class{bus;registry=new Map;cleanup;constructor(e){this.bus=e,this.cleanup=this.bus.on(O.initialized,e=>{this.registry.set(e.payload.adapterName,e.payload.adapterId)})}resolve(e){let t=this.registry.get(e);if(!t)throw ht(e);return t}async resolveAvailable(e){try{let{adapterId:t}=await this.bus.request(w.resolveId,{adapterName:e});return this.registry.set(e,t),t}catch{let t=this.registry.get(e);if(t)return t;throw ht(e)}}destroy(){this.cleanup?.(),this.cleanup=void 0,this.registry.clear()}};async function _t(e,t){e.emit(T.stored,{message:structuredClone(t)});try{await e.request(a.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 B(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 vt(e){let{bus:t,db:n}=e,{messages:r}=N(n,o);return t.on(T.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 _t(t,s)})}function yt(e){let{bus:t,db:n}=e,{messages:r}=N(n,o);return t.on(T.getBySession,async e=>{let{sessionId:t,limit:i,after:a,includeAfter:o=!1,order:s=`asc`}=e.payload,c=s===`desc`?Ue:He,l=n.select().from(r).where(I(r.sessionId,t)).orderBy(c(r.timestamp),c(r.messageId));if(a){let e=s===`desc`?Je(Ke(r.timestamp,a.timestamp),P(I(r.timestamp,a.timestamp),o?qe(r.messageId,a.messageId):Ke(r.messageId,a.messageId))):Je(We(r.timestamp,a.timestamp),P(I(r.timestamp,a.timestamp),o?Ge(r.messageId,a.messageId):We(r.messageId,a.messageId)));l=n.select().from(r).where(P(I(r.sessionId,t),e)).orderBy(c(r.timestamp),c(r.messageId))}let u=i??100,d=await l.limit(u+1),f=d.length>u,p=f?d.slice(0,u):d,m=f&&p.length>0?j(p[p.length-1]):null;e.setResult({messages:p.map(B),nextCursor:m})})}function bt(e){let{bus:t,db:n}=e,{messages:r}=N(n,o);return t.on(T.getByTurn,async e=>{let{turnId:t}=e.payload,i=await n.select().from(r).where(I(r.turnId,t)).orderBy(He(r.timestamp));e.setResult({messages:i.map(B)})})}function xt(e){let{bus:t,db:n}=e,{messages:r}=N(n,o);return t.on(T.get,async e=>{let{messageId:t}=e.payload,[i]=await n.select().from(r).where(I(r.messageId,t)).limit(1);e.setResult({message:i?B(i):null})})}function St(e){let{bus:t,db:n}=e,{messages:r}=N(n,o),i=Ve(n).fts;return t.on(T.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(B),total:l})})}function Ct(e){let{bus:t,db:n}=e,{messages:r}=N(n,o),i=Ve(n).fts;return t.on(T.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 wt(e){let{bus:t,db:n}=e,{messages:r}=N(n,o);return t.on(T.getByAdapterMessageId,async e=>{let{adapterMessageId:t}=e.payload,[i]=await n.select().from(r).where(I(r.adapterMessageId,t)).limit(1);e.setResult({message:i?B(i):null})})}function Tt(e){let{bus:t,db:n}=e,{messages:r}=N(n,o);return t.on(T.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(P(I(r.adapterMessageId,i),I(r.sessionId,a))).limit(1);if(m){m.turnId===null&&o!==null&&await n.update(r).set({turnId:o}).where(I(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(P(I(r.adapterMessageId,i),I(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(I(r.messageId,t.messageId)),e.setResult({messageId:t.messageId,created:!1});return}e.setResult({messageId:h,created:!0}),await _t(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 Et(e,t){let n={bus:e,db:t},r=[vt(n),yt(n),bt(n),xt(n),St(n),Ct(n),Tt(n),wt(n)];return()=>r.forEach(e=>e())}function Dt(e,t){return Ce(j(e),j(t))}function Ot(e,t){return we(j(e),j(t))}function kt(e,t){let n=e.get(t);if(n!==void 0)return n;let r=new Map;return e.set(t,r),r}function At(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 jt(e){let t=new Map,n=new Map,r=new Map,i=new Map,a=Mt(t,n,r,i),o=[Nt(e,t,a),Pt(e,t,n),Ft(e,t,r),It(e,t),Lt(e,t),Rt(e,t,r,i,a),zt(e,t,n,r,i)];return()=>o.forEach(e=>e())}function Mt(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&&kt(r,i.sessionId).set(i.adapterMessageId,i.messageId)}}function Nt(e,t,n){return e.on(T.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 _t(e,o)})}function Pt(e,t,n){return e.on(T.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`?Ot:Dt,u=c.map(e=>t.get(e)).filter(e=>!!e).sort(l);a&&(u=u.filter(e=>{let t=s===`desc`?we(j(e),a):Ce(j(e),a);return o?t>=0:t>0}));let d=i??100,f=u.length>d,p=f?u.slice(0,d):u,m=f&&p.length>0?j(p[p.length-1]):null;e.setResult({messages:p,nextCursor:m})})}function Ft(e,t,n){return e.on(T.getByTurn,async e=>{let{turnId:r}=e.payload,i=(n.get(r)??[]).map(e=>t.get(e)).filter(e=>!!e).sort(Dt);e.setResult({messages:i})})}function It(e,t){return e.on(T.get,async e=>{e.setResult({message:t.get(e.payload.messageId)??null})})}function Lt(e,t){return e.on(T.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(Dt),e.setResult({messages:c.slice(0,a),total:c.length})})}function Rt(e,t,n,r,i){return e.on(T.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){At(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 _t(e,v)})}function zt(e,t,n,r,i){return e.on(C.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 Bt=Re(`message_routing`,e=>({messageId:e.text(`message_id`).notNull().references(i,{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=>[je({columns:[e.messageId,e.agentId,e.status]}),ke(`idx_routing_agent`).on(e.agentId,e.timestamp)],postgres:e=>[Ie({columns:[e.messageId,e.agentId,e.status]}),Fe(`idx_routing_agent`).on(e.agentId,e.timestamp)]}),Vt=Bt.sqlite,Ht=Ye(`messageRouting`,{schemas:{record:{request:me,response:D.object({success:D.boolean()})},getByMessage:{request:D.object({messageId:D.string()}),response:D.object({routing:D.array(me)})},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:Vt}}}),V=Ht.subjects,Ut=Bt.postgres,Wt=Le({messageRouting:Vt},{messageRouting:Ut});function Gt(e){return{messageId:e.messageId,agentId:e.agentId,status:e.status,timestamp:e.timestamp,error:e.error??void 0}}function Kt(e,t){let{messageRouting:n}=N(t,Wt),r=[];return r.push(e.on(V.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(V.getByMessage,async e=>{let{messageId:r}=e.payload,i=await t.select().from(n).where(I(n.messageId,r));e.setResult({routing:i.map(Gt)})})),r.push(e.on(V.getCompleted,async e=>{let{messageId:r}=e.payload,i=await t.select().from(n).where(P(I(n.messageId,r),I(n.status,`completed`)));e.setResult({agentIds:i.map(e=>e.agentId)})})),r.push(e.on(V.isComplete,async e=>{let{messageId:r,targetAgentIds:i}=e.payload,a=await t.select().from(n).where(P(I(n.messageId,r),I(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())}function qt(e){return{source:e.source,...e.sourceId!==void 0&&{sourceId:e.sourceId}}}var Jt=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(qt(e.initiator??{source:`user`})),this._agentIds=Object.freeze([...e.agentIds])}get agentIds(){return this._agentIds}get initiator(){return qt(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])}},Yt=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 Xt=Symbol(`turnReservation`);var Zt=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,[Xt]:!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()}},Qt=class{bus;resolveTurn;timeoutMs;settledPairs=new Map;waiters=new Map;cleanup;destroyed=!1;constructor(e,t,n){this.bus=e,this.resolveTurn=t,this.timeoutMs=n,this.cleanup=e.on(A.turn.assistantPersistenceSettled,e=>{if(this.destroyed)return;let{sessionId:t,turnId:n,messageId:r,agentId:i}=e.payload,a=this.resolveTurn(n);if(!a||a.sessionId!==t||!a.hasAdmittedPair(r,i))return;let o=this.settledPairs.get(n)??new Set;o.add(this.pairKey(r,i)),this.settledPairs.set(n,o),this.isSettled(a)&&this.waiters.get(n)?.settle()})}async waitFor(e){if(this.destroyed||e.agentIds.length===0||this.isSettled(e))return;let t=await this.bus.requestOptional(T.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 $t(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 en(e){return{status:e.success?`completed`:`error`,error:e.errors.length>0?e.errors.join(`; `):void 0}}function tn(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 nn(e,t,n,r,i){let a=en(n),o=await e.requestOptional(S.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(tn(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(S.complete,{turnId:t.turnId,status:a.status,error:a.error,usage:r??null});if(!c.handled||!tn(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 rn(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 nn(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 an(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 on(e,t,{agentId:i,messageId:c,outcome:a??`completed`,error:a===`error`?o:void 0,turnId:s,onTurnComplete:n})})]}async function on(e,t,n){let r=t.resolveCompletionTurn(n.turnId);if(!r?.hasAgent(n.agentId))return;let i=r.recordPairTerminal(n.messageId,n.agentId,n.outcome,n.error);if(!i.accepted){t.canRetry(r.turnId)&&await t.retry(r.turnId);return}i.turnComplete&&t.beginFinalization(r,i.result);let a=e.emit(A.user_message.completed,{sessionId:r.sessionId,turnId:r.turnId,turnNumber:r.turnNumber,messageId:n.messageId,agentId:n.agentId,outcome:n.outcome,...n.error!==void 0&&{error:n.error}}),o=i.turnComplete?n.onTurnComplete(r,i.result):Promise.resolve(),[s,c]=await Promise.allSettled([a,o]);if(s.status===`rejected`&&console.error(`[SessionTurnManager] Failed to emit user-message completion:`,s.reason),c.status===`rejected`)throw c.reason}var sn=class{bus;turnSlots=new Zt;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 Qt(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(S.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 Jt({sessionId:i,agentIds:t,turnId:o,turnNumber:s,initiator:n});return this.turnSlots.activate(e,c),this.usageAccumulators.set(c.turnId,new Yt),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 $t(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(...an(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 nn(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 rn({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 rn({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 l(this.bus,{type:`turn.completed`,sessionId:e.sessionId,eventId:`turn.completed:${e.turnId}`,payload:t}),o=!0,await this.bus.emit(A.turn.completed,t)}catch(t){throw o?this.clearCompletionState(e,r):this.completingTurnIds.delete(e.turnId),t}this.clearCompletionState(e,r)}async retryTurnCompletion(e){let t=this.completingTurns.get(e),n=this.pendingTerminalResults.get(e);if(t===void 0||n===void 0)throw Error(`Turn ${e} has no retryable completion`);await this.completeTurn(t,n)}async retryRetainedCompletionsForSession(e){await this.turnSlots.awaitFinalization(e,async()=>{for(let t of[...this.completingTurns.values()].filter(t=>t.sessionId===e&&this.setupFinalizingTurnIds.has(t.turnId))){let e=this.completionPromises.get(t.turnId);e?await e:this.completingTurnIds.has(t.turnId)||await this.retryTurnCompletion(t.turnId)}for(let t of[...this.completingTurns.values()].filter(t=>t.sessionId===e&&this.pendingTerminalResults.has(t.turnId)&&!this.completingTurnIds.has(t.turnId))){let e=this.completionPromises.get(t.turnId);e?await e:await this.retryTurnCompletion(t.turnId)}})}clearCompletionState(e,t){t?.clear(),this.usageAccumulators.delete(e.turnId),this.bufferedUsageDuringCompletion.delete(e.turnId),this.assistantPersistenceBarrier.clear(e.turnId),this.completingTurns.delete(e.turnId),this.closedUsageAdmissions.delete(e.turnId),this.completingTurnIds.delete(e.turnId),this.pendingTerminalCompletions.delete(e.turnId),this.pendingTerminalResults.delete(e.turnId),this.setupFinalizingTurnIds.delete(e.turnId),this.turnSlots.finishFinalization(e)}getActiveTurn(e){return this.turnSlots.getActive(e)}findActiveTurnByTurnId(e){return this.turnSlots.findActiveByTurnId(e)}destroy(){for(let e of this.cleanups)e();this.cleanups.length=0,this.turnSlots.clear(),this.usageAccumulators.clear(),this.completingTurnIds.clear(),this.completionPromises.clear(),this.completingTurns.clear(),this.closedUsageAdmissions.clear(),this.pendingTerminalCompletions.clear(),this.pendingTerminalResults.clear(),this.setupFinalizingTurnIds.clear(),this.bufferedUsageDuringCompletion.clear(),this.syntheticTurnCounters.clear(),this.assistantPersistenceBarrier.destroy()}async recordAgentCompletion(e,t,n,r,i,a){await on(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)}},cn=class{bus;turnManager;adapterRegistry;machineId;cleanups=[];constructor(e=ae,t){this.bus=e,this.machineId=t,this.turnManager=new sn(e),this.adapterRegistry=new gt(e),this.cleanups.push(v(this.bus,this.turnManager,t)),this.registerSendMessageHandler(),this.turnManager.registerCompletionHandlers(this.completeTurn.bind(this))}registerSendMessageHandler(){this.cleanups.push(this.bus.on(A.sendMessage,async e=>{let{sessionId:t,message:n,agentIds:r,deliveryMode:i,agent:a,source:o,origin:l}=e.payload,f=m(o,e.payload.extensionId),_=e.payload.sessionContext?_e.parse(e.payload.sessionContext):void 0,{sessionId:v,session:y}=await te(this.bus,t,_,e.payload.originWindowId,this.machineId);if(y.agents.length===0){let e=await this.resolveInitialAdapterSelection(a,v,n,_),t=await this.resolveAdapterName(e,v),r=p(e.adapterId)??await this.adapterRegistry.resolveAvailable(t),i=e.providerConfigId===void 0?void 0:await re(this.bus,{adapterName:t,providerConfigId:e.providerConfigId}),o=e.providerConfigId??i?.providerConfigId,s=await this.bus.request(O.startAgent,{adapterId:r,sessionId:v,role:`lead`,...i!==void 0&&{providerContext:i},...e.model!==void 0&&{model:e.model},...e.reasoningEffort!==void 0&&{reasoningEffort:e.reasoningEffort},...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},...e.env!==void 0&&{env:e.env},...e.mcpSessionContext!==void 0&&{mcpSessionContext:e.mcpSessionContext},...e.allowedDirectories!==void 0&&{allowedDirectories:e.allowedDirectories},...e.adapterConfig!==void 0&&{adapterConfig:e.adapterConfig},..._!==void 0&&{sessionContext:_}});if(!s.success)throw Error(`[SessionOrchestrator.sendMessage] Failed to start agent (sessionId=${v}, adapterName=${t}): ${s.message}`);let l=Date.now();y.agents.push({agentId:s.agentId,adapterId:s.adapterId,adapterName:t,sessionId:v,role:`lead`,status:`idle`,...o!==void 0&&{providerConfigId:o},createdAt:l,lastActivityAt:l}),y.leadAgentId=s.agentId,o!==void 0&&await this.bus.requestOptional(c.updateRuntime,{agentId:s.agentId,providerConfigId:o})}let b=ee(y,r);if(b.length===0)throw Error(`[SessionOrchestrator.sendMessage] No valid target agents found (sessionId=${v})`);let x=new Set;for(let e of b){let t=await this.bus.requestOptional(O.getAgent,{agentId:e.agentId,adapterId:e.adapterId});t.handled&&t.data.agent===null&&x.add(e.agentId)}let S;if(x.size>0){S=await s(this.bus,y);for(let e of b)x.has(e.agentId)&&await this.bus.requestOptional(O.rehydrateAgent,{agentId:e.agentId,adapterId:e.adapterId})}let C=crypto.randomUUID(),w=h(n),E=await this.turnManager.acquireMessageAdmission(v,b.map(e=>e.agentId),C,f,e.payload.turnId),D=E.turn;try{if(!(await this.bus.requestOptional(T.append,{message:{messageId:C,turnId:D.turnId,sessionId:v,role:`user`,contentText:g(n),blocks:w,timestamp:Date.now(),...l!==void 0&&{origin:l}}})).handled)throw Error(`Message storage append handler is not registered`);E.isPreparationOwner&&await u(this.bus,{sessionId:v,turnId:D.turnId,turnNumber:D.turnNumber,messageId:C,agentIds:[...D.agentIds],initiator:D.initiator,ingestionMarker:`live`}),await d(this.bus,{sessionId:v,turnId:D.turnId,turnNumber:D.turnNumber,messageId:C,content:n,agentIds:b.map(e=>e.agentId),...o!==void 0&&{source:o},...l!==void 0&&{origin:l}}),E.commit()}catch(e){try{await E.rollback(`user-message-persistence-failed`)}catch(e){console.error(`[SessionOrchestrator] Failed to finalize rejected message setup:`,e)}throw e}for(let e of b)this.bus.requestOptional(V.record,{messageId:C,agentId:e.agentId,status:`sent`,timestamp:Date.now()}).catch(t=>{console.warn(`[SessionOrchestrator] Failed to record message routing`,{sessionId:v,messageId:C,agentId:e.agentId,error:t instanceof Error?t.message:String(t)})});let ie=S?{..._,...S}:_;await ne(this.bus,y,b,n,C,D,i,this.completeTurn.bind(this),this.turnManager,ie,e.payload.responseSchema),e.setResult({messageId:C,turnId:D.turnId,sessionId:v})}))}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()}async resolveAdapterName(e,t){let n=p(e.adapterName),r=p(e.adapterId);if(!n&&!r)throw Error(`[SessionOrchestrator.sendMessage] adapterName or adapterId required when session has no agents (sessionId=${t})`);return r?y(this.bus,r,n,`[SessionOrchestrator.sendMessage] (sessionId=${t}) `):n}async resolveInitialAdapterSelection(e,t,n,r){if(!e)throw Error(`[SessionOrchestrator.sendMessage] agent selection required when session has no agents (sessionId=${t})`);if(e.kind===`adapter`)return e;if(e.kind===`canonical-model`)return await this.resolveCanonicalModelSelection(e,t,n,r);throw Error(`[SessionOrchestrator.sendMessage] agent with kind: 'adapter' or 'canonical-model' required when session has no agents (sessionId=${t})`)}async resolveCanonicalModelSelection(e,t,n,r){let i=Ee(e.model);if(Te(i))throw Error(`[SessionOrchestrator.sendMessage] Invalid canonical model "${e.model}" (sessionId=${t}): ${i.message}`);if(i.kind===`virtual`)throw Error(`[SessionOrchestrator.sendMessage] Virtual canonical models require a host resolver (sessionId=${t})`);let a=await this.bus.request(ce.resolve,{parsed:i,context:{sessionId:t,promptText:g(n),...r===void 0?{}:{sessionContext:r}}});return{...e,...a,kind:`adapter`,providerConfigId:e.providerConfigId??a.providerConfigId}}},ln=class{bus;constructor(e){this.bus=e}async getTurnSoFarContext(e){try{let{messages:t}=await this.bus.request(T.getByTurn,{turnId:e});return this.convertSessionMessagesToMessages(t)}catch(e){return e instanceof oe||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 un(e){let{bus:t}=e;return t.on(A.getStatusCounts,async e=>{e.payload;let{all:n,active:r,closed:i,archived:a,discovered:o}=await t.request(C.getStatusCounts,{});e.setResult({all:n,active:r,closed:i,archived:a,discovered:o})})}function dn(e){let{bus:t}=e;return t.on(A.resume,async e=>{let{sessionId:n}=e.payload,{session:r}=await t.request(C.get,{sessionId:n});if(!r||r.status!==`closed`){e.setResult({success:!1});return}r.status=`active`,r.lastActivityAt=Date.now(),await t.request(C.set,{sessionId:n,session:r}),await t.emit(A.resumed,{sessionId:n}),e.setResult({success:!0})})}function fn(e){return e.on(E.listActions,e=>{let t=_.getAll().map(e=>({id:e.id,label:e.label,description:e.description,category:e.category}));e.setResult({actions:t})})}const pn=[{actionId:`strip-reasoning`},{actionId:`strip-tool-outputs`}];function mn(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 hn=class{bus;agentToSession=new Map;pendingAssistantResponses=new Map;cleanups=[];constructor(e=ae){this.bus=e,this.registerHandlers()}registerHandlers(){this.registerMappingHandlers(),this.registerTurnTrackingHandlers(),this.registerBlockAccumulationHandlers()}registerMappingHandlers(){this.cleanups.push(this.bus.on(A.agent.added,e=>{this.agentToSession.set(e.payload.agentId,e.payload.sessionId)})),this.cleanups.push(this.bus.on(A.closed,e=>{for(let[t,n]of this.agentToSession)n===e.payload.sessionId&&this.agentToSession.delete(t);for(let[t,n]of this.pendingAssistantResponses)n.sessionId===e.payload.sessionId&&this.pendingAssistantResponses.delete(t)}))}registerTurnTrackingHandlers(){this.cleanups.push(this.bus.on(A.turn.started,e=>{let{sessionId:t,turnId:n,messageId:r,agentIds:i}=e.payload;for(let e of i){let i=this.pendingKey(n,r,e);this.pendingAssistantResponses.has(i)||this.pendingAssistantResponses.set(i,{sessionId:t,turnId:n,messageId:r,agentId:e,blocks:[]})}})),this.cleanups.push(this.bus.on(A.user_message.sent,e=>{let{sessionId:t,turnId:n,messageId:r,agentIds:i}=e.payload;for(let e of i){let i=this.pendingKey(n,r,e);this.pendingAssistantResponses.set(i,{sessionId:t,turnId:n,messageId:r,agentId:e,blocks:[]})}})),this.cleanups.push(this.bus.on(A.user_message.acknowledged,e=>{let t=this.pendingKey(e.payload.turnId,e.payload.messageId,e.payload.agentId);this.pendingAssistantResponses.has(t)||this.pendingAssistantResponses.set(t,{sessionId:e.payload.sessionId,turnId:e.payload.turnId,messageId:e.payload.messageId,agentId:e.payload.agentId,blocks:[]})})),this.cleanups.push(this.bus.on(A.turn.assistantPersistenceSettled,e=>{let{turnId:t,messageId:n,agentId:r}=e.payload;this.pendingAssistantResponses.delete(this.pendingKey(t,n,r))})),this.cleanups.push(this.bus.on(A.turn.completed,e=>{let{sessionId:t,turnId:n}=e.payload;for(let[e,r]of this.pendingAssistantResponses)r.sessionId===t&&r.turnId===n&&this.pendingAssistantResponses.delete(e)}))}registerBlockAccumulationHandlers(){this.cleanups.push(this.bus.on(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(A.turn.assistantPersistenceSettled,{sessionId:u.sessionId,turnId:u.turnId,agentId:t,messageId:u.messageId})}}}))}async storeAssistantMessage(e,t,n,r){let i=r===void 0?e.blocks:r.content===void 0?[]:[{type:`text`,content:r.content}];if(i.length===0&&!n)return;let a=i.filter(e=>e.type===`text`).map(e=>e.content).join(`
|
|
1
|
+
import{agents as e,agentsDual as t,sessions as n,sessionsDual as r}from"./services/session/storage/schema.mjs";import"./schema-Dd-e89MO.mjs";import{a as i,n as a,o}from"./namespace-BqxtpNAn.mjs";import{D as s,F as c,I as l,L as u,R as d,T as f,_ as p,d as m,g as h,h as g,k as _,l as v,m as ee,p as te,u as ne,v as y,x as b,z as x}from"./handlers-CfnLyLfE.mjs";import{TurnStorageSubjects as S}from"./services/turn/namespace.mjs";import{SessionStorageSubjects as C}from"./services/session/storage/namespace.mjs";import{o as re}from"./provider-context-PZIQWcqQ.mjs";import{AdapterRuntimeSubjects as w}from"./services/adapter-runtime/namespace.mjs";import{MessageStorageSubjects as T}from"./services/session/messages/namespace.mjs";import{n as E}from"./namespace-CWGKCNZm.mjs";import{z as D}from"zod";import{createBusNamespace as ie}from"@makaio/framework/core";import{MakaioBus as ae,NoHandlerError as oe,TimeoutError as se}from"@makaio/framework/bus";import{AdapterSubjects as O,AgentSubjects as k,CanonicalModelSubjects as ce,CapabilitySubjects as le,ClientSubjects as ue,CompressionModeSchema as de,FORK_SESSION_LINEAGE_KIND as fe,ForkTransformsSchema as pe,MessageRoutingSchema as me,MessageStorageSubjects as he,ROOT_SESSION_LINEAGE_KIND as ge,SessionContextSchema as _e,SessionDiscoveredSchema as ve,SessionRecordMetadataSchema as ye,SessionStorageSetRequestSchema as be,SessionStorageUpdateSchema as xe,SessionSubjects as A,TurnIngestionMarkerSchema as Se,compareMessageCursorAsc as Ce,compareMessageCursorDesc as we,isCanonicalModelParseError as Te,messageToCursor as j,parseCanonicalModel as Ee}from"@makaio/framework/contracts";import{BaseService as De}from"@makaio/framework/service-base";import{blob as Oe,index as ke,integer as Ae,primaryKey as je,sqliteTable as Me,text as Ne,uniqueIndex as Pe}from"drizzle-orm/sqlite-core";import{index as Fe,primaryKey as Ie}from"drizzle-orm/pg-core";import{defineDialectSchema as Le,defineDualTable as Re,didAffectRows as M,getRawSqlExecutor as ze,getStorageEngine as Be,resolveSchema as N,resolveStorageEngine as Ve}from"@makaio/framework/storage/drizzle";import{and as P,asc as He,count as F,desc as Ue,eq as I,gt as We,gte as Ge,inArray as L,isNull as R,lt as Ke,lte as qe,or as Je,sql as z}from"drizzle-orm";import{createStorageNamespaceDefinition as Ye}from"@makaio/framework/storage";import{ClientIdentityObservationSchema as Xe}from"@makaio/framework/contracts/client";import{ImportCursorStorageSubjects as Ze}from"@makaio/framework/adapters";function Qe(e){return e.on(A.agent.added,async t=>{let n=await e.requestOptional(C.get,{sessionId:t.payload.sessionId}),r=n.handled?n.data.session:void 0;r&&(r.adapterSessionId||(r.adapterSessionId=t.payload.adapterSessionId,r.adapterName=t.payload.adapterName,r.adapterId=t.payload.adapterId),(t.payload.role??(r.leadAgentId?`member`:`lead`))===`lead`&&(r.leadAgentId=t.payload.agentId),r.lastActivityAt=Date.now(),await e.request(C.set,{sessionId:t.payload.sessionId,session:r}))})}function $e(e){return e.on(A.agent.removed,async t=>{let n=await e.requestOptional(C.get,{sessionId:t.payload.sessionId}),r=n.handled?n.data.session:void 0;r&&(await e.requestOptional(c.updateStatus,{agentId:t.payload.agentId,status:`disposed`}),r.leadAgentId===t.payload.agentId&&(r.leadAgentId=void 0),r.lastActivityAt=Date.now(),await e.request(C.set,{sessionId:t.payload.sessionId,session:r}))})}function et(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(c.get,{agentId:n}),l=s.handled?s.data.agent:null;l&&!l.adapterSessionId&&await e.requestOptional(c.updateRuntime,{agentId:n,adapterSessionId:r});let u=await e.requestOptional(C.get,{sessionId:o}),d=u.handled?u.data.session:null;if(d&&!d.adapterSessionId){if(d.adapterName){if(i!==d.adapterName)return;d.adapterSessionId=r}else d.adapterSessionId=r,d.adapterName=i,d.adapterId=a;d.lastActivityAt=Date.now(),await e.requestOptional(C.set,{sessionId:o,session:d})}})}function tt(e){return[it(e),at(e),ot(e),nt(e),st(e),ut(e),dt(e),ft(e),pt(e),Qe(e.bus),$e(e.bus),et(e.bus)]}function nt(e){let{bus:t}=e;return t.on(A.turn.await,async e=>{let{sessionId:n,turnId:r,timeoutMs:i}=e.payload,a=new AbortController,o=t.once(A.turn.completed,{timeoutMs:i,filter:{sessionId:n,turnId:r},signal:a.signal});o.catch(()=>void 0);let s=await rt(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 se(`session.turn.await`,i):e}})}async function rt(e,t,n){let r=await e.requestOptional(S.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 it(e){let{bus:t}=e;return t.on(A.create,async e=>{let{sessionId:n,parentSessionId:r,contextInheritance:i,forkPointMessageId:a,branchKind:o,forkTransforms:s,title:c,targetWorkingDirectory:l,executionTargetId:u,metadata:d,spawningToolCallId:f,originWindowId:p,machineId:m}=e.payload,h=n??crypto.randomUUID(),g=r===void 0?void 0:(await t.request(A.get,{sessionId:r})).session;if(r!==void 0&&g===null)throw Error(`[session.create] Parent session not found: ${r}`);let _=g?g.rootSessionId??g.sessionId:void 0,v=Date.now(),ee={sessionId:h,createdAt:v,lastActivityAt:v,agents:[],status:`active`,title:c,parentSessionId:r,contextInheritance:i,forkPointMessageId:a,branchKind:o,forkTransforms:s,targetWorkingDirectory:l,executionTargetId:u,metadata:d,spawningToolCallId:f,..._!==void 0&&{rootSessionId:_},...m!==void 0&&{machineId:m}},te=await t.requestOptional(C.set,{sessionId:h,session:ee,ifAbsent:!0});if(te.handled&&!te.data.success){e.setResult({sessionId:h});return}await t.emit(A.created,{sessionId:h,createdAt:ee.createdAt,parentSessionId:r??null,branchKind:o??null,originWindowId:p??`server`}),e.setResult({sessionId:h})})}function at(e){let{bus:t}=e;return t.on(A.get,async e=>{let n=await t.requestOptional(C.get,{sessionId:e.payload.sessionId}),r=n.handled?n.data.session:null;e.setResult({session:r})})}function ot(e){let{bus:t}=e;return t.on(A.list,async e=>{let{status:n,limit:r,offset:i,includePreview:a,executionTargetId:o}=e.payload,s=await t.requestOptional(C.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 st(e){let{bus:t}=e;return t.on(A.close,async e=>{let{sessionId:n}=e.payload,r=await t.requestOptional(C.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}i.status=`closed`,i.lastActivityAt=Date.now(),await t.requestOptional(C.set,{sessionId:n,session:i}),await t.emit(A.closed,{sessionId:n}),e.setResult({success:!0})})}async function ct(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 lt(e,t){if(t!==void 0)return t;let n=await e.requestOptional(w.getMachineId,{});return n.handled?n.data.machineId:void 0}function ut(e){let{bus:t}=e;return t.on(A.restartAgents,async e=>{let{sessionId:n,machineId:r}=e.payload,i=await t.requestOptional(c.listBySession,{sessionId:n}),a=i.handled?i.data.agents:[],o=[],s=await lt(t,r),l=await t.requestOptional(C.get,{sessionId:n}),u=l.handled?l.data.session??void 0:void 0;for(let e of a)try{let n,r=!1;if(u!==void 0&&(b({intent:`resume`,session:u,localMachineId:s,adapterSupportsNative:await ct(t,e.adapterId),targetAdapterName:e.adapterName,currentCwd:e.cwd,targetCwd:e.cwd}).kind===`native`&&e.adapterSessionId!==void 0?n=e.adapterSessionId:r=!0),r){o.push({agentId:e.agentId,adapterId:e.adapterId,success:!0});continue}let i=await f(t,e,{cwd:e.cwd,model:e.model,resumeAdapterSessionId:n});await t.requestOptional(c.updateRuntime,{agentId:i.agentId,adapterId:i.adapterId}),o.push({agentId:i.agentId,adapterId:i.adapterId,success:!0})}catch(t){let n=t instanceof Error?t.cause:void 0,r=n instanceof Error?n.message:t instanceof Error?t.message:String(t);o.push({agentId:e.agentId,adapterId:e.adapterId,success:!1,error:r})}e.setResult({sessionId:n,results:o})})}function dt(e){let{bus:t}=e;return t.on(A.update,async e=>{let{sessionId:n,executionTargetId:r,approvalPolicyOverride:i,title:a,metadata:o}=e.payload,s=await t.requestOptional(C.update,{sessionId:n,executionTargetId:r,approvalPolicyOverride:i,title:a,metadata:o}),c=s.handled?s.data.success:!1;if(c){let e=[];r!==void 0&&e.push(`executionTargetId`),i!==void 0&&e.push(`approvalPolicyOverride`),a!==void 0&&e.push(`title`),o!==void 0&&e.push(`metadata`),e.length>0&&await t.emit(A.updated,{sessionId:n,changedProperties:e})}e.setResult({success:c})})}function ft(e){let{bus:t}=e;return t.on(A.archive,async e=>{let{sessionId:n}=e.payload,r=await t.requestOptional(C.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}i.status=`archived`,i.lastActivityAt=Date.now(),await t.requestOptional(C.set,{sessionId:n,session:i}),await t.emit(A.archived,{sessionId:n}),e.setResult({success:!0})})}function pt(e){let{bus:t}=e;return t.on(A.purge,async e=>{let{sessionId:n}=e.payload,r=await t.requestOptional(C.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 o=await t.requestOptional(C.list,{status:`all`}),s=o.handled?o.data.sessions:[];for(let e of s)e.parentSessionId===n&&await t.requestOptional(C.set,{sessionId:e.sessionId,session:{...e,parentSessionId:void 0}});let c=await t.requestOptional(a.getEvents,{sessionId:n,options:{limit:1}}),l=c.handled?c.data.totalCount:0;await t.requestOptional(a.deleteBySession,{sessionId:n}),await t.requestOptional(C.delete,{sessionId:n}),await t.emit(A.purged,{sessionId:n}),e.setResult({success:!0,eventsDeleted:l})})}var mt=class extends De{constructor(e=ae){super(e)}async onInit(){for(let e of tt({bus:this.bus}))this.addCleanup(e);this.addCleanup(x(this.bus)),await this.reconcileOrphanedTurns()}async reconcileOrphanedTurns(){let e=await this.bus.requestOptional(S.listActive,{});if(!e.handled)return;let{turns:t}=e.data;for(let e of t)try{let{transitioned:t}=await this.bus.request(S.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 l(this.bus,{type:`turn.completed`,sessionId:e.sessionId,payload:t}),await this.bus.emit(A.turn.completed,t)}}catch(t){console.error(`[MakaioSessionService] Failed to reconcile orphaned turn ${e.turnId}:`,t)}}};function ht(e){return Error(`No adapter found for adapterName="${e}". Ensure adapter-runtime identity handlers are registered; adapter startup verifies live availability.`)}var gt=class{bus;registry=new Map;cleanup;constructor(e){this.bus=e,this.cleanup=this.bus.on(O.initialized,e=>{this.registry.set(e.payload.adapterName,e.payload.adapterId)})}resolve(e){let t=this.registry.get(e);if(!t)throw ht(e);return t}async resolveAvailable(e){try{let{adapterId:t}=await this.bus.request(w.resolveId,{adapterName:e});return this.registry.set(e,t),t}catch{let t=this.registry.get(e);if(t)return t;throw ht(e)}}destroy(){this.cleanup?.(),this.cleanup=void 0,this.registry.clear()}};async function _t(e,t){e.emit(T.stored,{message:structuredClone(t)});try{await e.request(a.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 B(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 vt(e){let{bus:t,db:n}=e,{messages:r}=N(n,o);return t.on(T.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 _t(t,s)})}function yt(e){let{bus:t,db:n}=e,{messages:r}=N(n,o);return t.on(T.getBySession,async e=>{let{sessionId:t,limit:i,after:a,includeAfter:o=!1,order:s=`asc`}=e.payload,c=s===`desc`?Ue:He,l=n.select().from(r).where(I(r.sessionId,t)).orderBy(c(r.timestamp),c(r.messageId));if(a){let e=s===`desc`?Je(Ke(r.timestamp,a.timestamp),P(I(r.timestamp,a.timestamp),o?qe(r.messageId,a.messageId):Ke(r.messageId,a.messageId))):Je(We(r.timestamp,a.timestamp),P(I(r.timestamp,a.timestamp),o?Ge(r.messageId,a.messageId):We(r.messageId,a.messageId)));l=n.select().from(r).where(P(I(r.sessionId,t),e)).orderBy(c(r.timestamp),c(r.messageId))}let u=i??100,d=await l.limit(u+1),f=d.length>u,p=f?d.slice(0,u):d,m=f&&p.length>0?j(p[p.length-1]):null;e.setResult({messages:p.map(B),nextCursor:m})})}function bt(e){let{bus:t,db:n}=e,{messages:r}=N(n,o);return t.on(T.getByTurn,async e=>{let{turnId:t}=e.payload,i=await n.select().from(r).where(I(r.turnId,t)).orderBy(He(r.timestamp));e.setResult({messages:i.map(B)})})}function xt(e){let{bus:t,db:n}=e,{messages:r}=N(n,o);return t.on(T.get,async e=>{let{messageId:t}=e.payload,[i]=await n.select().from(r).where(I(r.messageId,t)).limit(1);e.setResult({message:i?B(i):null})})}function St(e){let{bus:t,db:n}=e,{messages:r}=N(n,o),i=Ve(n).fts;return t.on(T.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(B),total:l})})}function Ct(e){let{bus:t,db:n}=e,{messages:r}=N(n,o),i=Ve(n).fts;return t.on(T.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 wt(e){let{bus:t,db:n}=e,{messages:r}=N(n,o);return t.on(T.getByAdapterMessageId,async e=>{let{adapterMessageId:t}=e.payload,[i]=await n.select().from(r).where(I(r.adapterMessageId,t)).limit(1);e.setResult({message:i?B(i):null})})}function Tt(e){let{bus:t,db:n}=e,{messages:r}=N(n,o);return t.on(T.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(P(I(r.adapterMessageId,i),I(r.sessionId,a))).limit(1);if(m){m.turnId===null&&o!==null&&await n.update(r).set({turnId:o}).where(I(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(P(I(r.adapterMessageId,i),I(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(I(r.messageId,t.messageId)),e.setResult({messageId:t.messageId,created:!1});return}e.setResult({messageId:h,created:!0}),await _t(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 Et(e,t){let n={bus:e,db:t},r=[vt(n),yt(n),bt(n),xt(n),St(n),Ct(n),Tt(n),wt(n)];return()=>r.forEach(e=>e())}function Dt(e,t){return Ce(j(e),j(t))}function Ot(e,t){return we(j(e),j(t))}function kt(e,t){let n=e.get(t);if(n!==void 0)return n;let r=new Map;return e.set(t,r),r}function At(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 jt(e){let t=new Map,n=new Map,r=new Map,i=new Map,a=Mt(t,n,r,i),o=[Nt(e,t,a),Pt(e,t,n),Ft(e,t,r),It(e,t),Lt(e,t),Rt(e,t,r,i,a),zt(e,t,n,r,i)];return()=>o.forEach(e=>e())}function Mt(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&&kt(r,i.sessionId).set(i.adapterMessageId,i.messageId)}}function Nt(e,t,n){return e.on(T.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 _t(e,o)})}function Pt(e,t,n){return e.on(T.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`?Ot:Dt,u=c.map(e=>t.get(e)).filter(e=>!!e).sort(l);a&&(u=u.filter(e=>{let t=s===`desc`?we(j(e),a):Ce(j(e),a);return o?t>=0:t>0}));let d=i??100,f=u.length>d,p=f?u.slice(0,d):u,m=f&&p.length>0?j(p[p.length-1]):null;e.setResult({messages:p,nextCursor:m})})}function Ft(e,t,n){return e.on(T.getByTurn,async e=>{let{turnId:r}=e.payload,i=(n.get(r)??[]).map(e=>t.get(e)).filter(e=>!!e).sort(Dt);e.setResult({messages:i})})}function It(e,t){return e.on(T.get,async e=>{e.setResult({message:t.get(e.payload.messageId)??null})})}function Lt(e,t){return e.on(T.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(Dt),e.setResult({messages:c.slice(0,a),total:c.length})})}function Rt(e,t,n,r,i){return e.on(T.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){At(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 _t(e,v)})}function zt(e,t,n,r,i){return e.on(C.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 Bt=Re(`message_routing`,e=>({messageId:e.text(`message_id`).notNull().references(i,{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=>[je({columns:[e.messageId,e.agentId,e.status]}),ke(`idx_routing_agent`).on(e.agentId,e.timestamp)],postgres:e=>[Ie({columns:[e.messageId,e.agentId,e.status]}),Fe(`idx_routing_agent`).on(e.agentId,e.timestamp)]}),Vt=Bt.sqlite,Ht=Ye(`messageRouting`,{schemas:{record:{request:me,response:D.object({success:D.boolean()})},getByMessage:{request:D.object({messageId:D.string()}),response:D.object({routing:D.array(me)})},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:Vt}}}),V=Ht.subjects,Ut=Bt.postgres,Wt=Le({messageRouting:Vt},{messageRouting:Ut});function Gt(e){return{messageId:e.messageId,agentId:e.agentId,status:e.status,timestamp:e.timestamp,error:e.error??void 0}}function Kt(e,t){let{messageRouting:n}=N(t,Wt),r=[];return r.push(e.on(V.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(V.getByMessage,async e=>{let{messageId:r}=e.payload,i=await t.select().from(n).where(I(n.messageId,r));e.setResult({routing:i.map(Gt)})})),r.push(e.on(V.getCompleted,async e=>{let{messageId:r}=e.payload,i=await t.select().from(n).where(P(I(n.messageId,r),I(n.status,`completed`)));e.setResult({agentIds:i.map(e=>e.agentId)})})),r.push(e.on(V.isComplete,async e=>{let{messageId:r,targetAgentIds:i}=e.payload,a=await t.select().from(n).where(P(I(n.messageId,r),I(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())}function qt(e){return{source:e.source,...e.sourceId!==void 0&&{sourceId:e.sourceId}}}var Jt=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(qt(e.initiator??{source:`user`})),this._agentIds=Object.freeze([...e.agentIds])}get agentIds(){return this._agentIds}get initiator(){return qt(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])}},Yt=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 Xt=Symbol(`turnReservation`);var Zt=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,[Xt]:!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()}},Qt=class{bus;resolveTurn;timeoutMs;settledPairs=new Map;waiters=new Map;cleanup;destroyed=!1;constructor(e,t,n){this.bus=e,this.resolveTurn=t,this.timeoutMs=n,this.cleanup=e.on(A.turn.assistantPersistenceSettled,e=>{if(this.destroyed)return;let{sessionId:t,turnId:n,messageId:r,agentId:i}=e.payload,a=this.resolveTurn(n);if(!a||a.sessionId!==t||!a.hasAdmittedPair(r,i))return;let o=this.settledPairs.get(n)??new Set;o.add(this.pairKey(r,i)),this.settledPairs.set(n,o),this.isSettled(a)&&this.waiters.get(n)?.settle()})}async waitFor(e){if(this.destroyed||e.agentIds.length===0||this.isSettled(e))return;let t=await this.bus.requestOptional(T.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 $t(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 en(e){return{status:e.success?`completed`:`error`,error:e.errors.length>0?e.errors.join(`; `):void 0}}function tn(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 nn(e,t,n,r,i){let a=en(n),o=await e.requestOptional(S.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(tn(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(S.complete,{turnId:t.turnId,status:a.status,error:a.error,usage:r??null});if(!c.handled||!tn(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 rn(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 nn(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 an(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 on(e,t,{agentId:i,messageId:c,outcome:a??`completed`,error:a===`error`?o:void 0,turnId:s,onTurnComplete:n})})]}async function on(e,t,n){let r=t.resolveCompletionTurn(n.turnId);if(!r?.hasAgent(n.agentId))return;let i=r.recordPairTerminal(n.messageId,n.agentId,n.outcome,n.error);if(!i.accepted){t.canRetry(r.turnId)&&await t.retry(r.turnId);return}i.turnComplete&&t.beginFinalization(r,i.result);let a=e.emit(A.user_message.completed,{sessionId:r.sessionId,turnId:r.turnId,turnNumber:r.turnNumber,messageId:n.messageId,agentId:n.agentId,outcome:n.outcome,...n.error!==void 0&&{error:n.error}}),o=i.turnComplete?n.onTurnComplete(r,i.result):Promise.resolve(),[s,c]=await Promise.allSettled([a,o]);if(s.status===`rejected`&&console.error(`[SessionTurnManager] Failed to emit user-message completion:`,s.reason),c.status===`rejected`)throw c.reason}var sn=class{bus;turnSlots=new Zt;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 Qt(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(S.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 Jt({sessionId:i,agentIds:t,turnId:o,turnNumber:s,initiator:n});return this.turnSlots.activate(e,c),this.usageAccumulators.set(c.turnId,new Yt),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 $t(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(...an(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 nn(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 rn({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 rn({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 l(this.bus,{type:`turn.completed`,sessionId:e.sessionId,eventId:`turn.completed:${e.turnId}`,payload:t}),o=!0,await this.bus.emit(A.turn.completed,t)}catch(t){throw o?this.clearCompletionState(e,r):this.completingTurnIds.delete(e.turnId),t}this.clearCompletionState(e,r)}async retryTurnCompletion(e){let t=this.completingTurns.get(e),n=this.pendingTerminalResults.get(e);if(t===void 0||n===void 0)throw Error(`Turn ${e} has no retryable completion`);await this.completeTurn(t,n)}async retryRetainedCompletionsForSession(e){await this.turnSlots.awaitFinalization(e,async()=>{for(let t of[...this.completingTurns.values()].filter(t=>t.sessionId===e&&this.setupFinalizingTurnIds.has(t.turnId))){let e=this.completionPromises.get(t.turnId);e?await e:this.completingTurnIds.has(t.turnId)||await this.retryTurnCompletion(t.turnId)}for(let t of[...this.completingTurns.values()].filter(t=>t.sessionId===e&&this.pendingTerminalResults.has(t.turnId)&&!this.completingTurnIds.has(t.turnId))){let e=this.completionPromises.get(t.turnId);e?await e:await this.retryTurnCompletion(t.turnId)}})}clearCompletionState(e,t){t?.clear(),this.usageAccumulators.delete(e.turnId),this.bufferedUsageDuringCompletion.delete(e.turnId),this.assistantPersistenceBarrier.clear(e.turnId),this.completingTurns.delete(e.turnId),this.closedUsageAdmissions.delete(e.turnId),this.completingTurnIds.delete(e.turnId),this.pendingTerminalCompletions.delete(e.turnId),this.pendingTerminalResults.delete(e.turnId),this.setupFinalizingTurnIds.delete(e.turnId),this.turnSlots.finishFinalization(e)}getActiveTurn(e){return this.turnSlots.getActive(e)}findActiveTurnByTurnId(e){return this.turnSlots.findActiveByTurnId(e)}destroy(){for(let e of this.cleanups)e();this.cleanups.length=0,this.turnSlots.clear(),this.usageAccumulators.clear(),this.completingTurnIds.clear(),this.completionPromises.clear(),this.completingTurns.clear(),this.closedUsageAdmissions.clear(),this.pendingTerminalCompletions.clear(),this.pendingTerminalResults.clear(),this.setupFinalizingTurnIds.clear(),this.bufferedUsageDuringCompletion.clear(),this.syntheticTurnCounters.clear(),this.assistantPersistenceBarrier.destroy()}async recordAgentCompletion(e,t,n,r,i,a){await on(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)}},cn=class{bus;turnManager;adapterRegistry;machineId;cleanups=[];constructor(e=ae,t){this.bus=e,this.machineId=t,this.turnManager=new sn(e),this.adapterRegistry=new gt(e),this.cleanups.push(v(this.bus,this.turnManager,t)),this.registerSendMessageHandler(),this.turnManager.registerCompletionHandlers(this.completeTurn.bind(this))}registerSendMessageHandler(){this.cleanups.push(this.bus.on(A.sendMessage,async e=>{let{sessionId:t,message:n,agentIds:r,deliveryMode:i,agent:a,source:o,origin:l}=e.payload,f=m(o,e.payload.extensionId),_=e.payload.sessionContext?_e.parse(e.payload.sessionContext):void 0,{sessionId:v,session:y}=await te(this.bus,t,_,e.payload.originWindowId,this.machineId);if(y.agents.length===0){let e=await this.resolveInitialAdapterSelection(a,v,n,_),t=await this.resolveAdapterName(e,v),r=p(e.adapterId)??await this.adapterRegistry.resolveAvailable(t),i=e.providerConfigId===void 0?void 0:await re(this.bus,{adapterName:t,providerConfigId:e.providerConfigId}),o=e.providerConfigId??i?.providerConfigId,s=await this.bus.request(O.startAgent,{adapterId:r,sessionId:v,role:`lead`,...i!==void 0&&{providerContext:i},...e.model!==void 0&&{model:e.model},...e.reasoningEffort!==void 0&&{reasoningEffort:e.reasoningEffort},...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},...e.env!==void 0&&{env:e.env},...e.mcpSessionContext!==void 0&&{mcpSessionContext:e.mcpSessionContext},...e.allowedDirectories!==void 0&&{allowedDirectories:e.allowedDirectories},...e.adapterConfig!==void 0&&{adapterConfig:e.adapterConfig},..._!==void 0&&{sessionContext:_}});if(!s.success)throw Error(`[SessionOrchestrator.sendMessage] Failed to start agent (sessionId=${v}, adapterName=${t}): ${s.message}`);let l=Date.now();y.agents.push({agentId:s.agentId,adapterId:s.adapterId,adapterName:t,sessionId:v,role:`lead`,status:`idle`,...o!==void 0&&{providerConfigId:o},createdAt:l,lastActivityAt:l}),y.leadAgentId=s.agentId,o!==void 0&&await this.bus.requestOptional(c.updateRuntime,{agentId:s.agentId,providerConfigId:o})}let b=ee(y,r);if(b.length===0)throw Error(`[SessionOrchestrator.sendMessage] No valid target agents found (sessionId=${v})`);let x=new Set;for(let e of b){let t=await this.bus.requestOptional(O.getAgent,{agentId:e.agentId,adapterId:e.adapterId});t.handled&&t.data.agent===null&&x.add(e.agentId)}let S;if(x.size>0){S=await s(this.bus,y);for(let e of b)x.has(e.agentId)&&await this.bus.requestOptional(O.rehydrateAgent,{agentId:e.agentId,adapterId:e.adapterId})}let C=crypto.randomUUID(),w=h(n),E=await this.turnManager.acquireMessageAdmission(v,b.map(e=>e.agentId),C,f,e.payload.turnId),D=E.turn;try{if(!(await this.bus.requestOptional(T.append,{message:{messageId:C,turnId:D.turnId,sessionId:v,role:`user`,contentText:g(n),blocks:w,timestamp:Date.now(),...l!==void 0&&{origin:l}}})).handled)throw Error(`Message storage append handler is not registered`);E.isPreparationOwner&&await u(this.bus,{sessionId:v,turnId:D.turnId,turnNumber:D.turnNumber,messageId:C,agentIds:[...D.agentIds],initiator:D.initiator,ingestionMarker:`live`}),await d(this.bus,{sessionId:v,turnId:D.turnId,turnNumber:D.turnNumber,messageId:C,content:n,agentIds:b.map(e=>e.agentId),...o!==void 0&&{source:o},...l!==void 0&&{origin:l}}),E.commit()}catch(e){try{await E.rollback(`user-message-persistence-failed`)}catch(e){console.error(`[SessionOrchestrator] Failed to finalize rejected message setup:`,e)}throw e}for(let e of b)this.bus.requestOptional(V.record,{messageId:C,agentId:e.agentId,status:`sent`,timestamp:Date.now()}).catch(t=>{console.warn(`[SessionOrchestrator] Failed to record message routing`,{sessionId:v,messageId:C,agentId:e.agentId,error:t instanceof Error?t.message:String(t)})});let ie=S?{..._,...S}:_;await ne(this.bus,y,b,n,C,D,i,this.completeTurn.bind(this),this.turnManager,ie,e.payload.responseSchema),e.setResult({messageId:C,turnId:D.turnId,sessionId:v})}))}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()}async resolveAdapterName(e,t){let n=p(e.adapterName),r=p(e.adapterId);if(!n&&!r)throw Error(`[SessionOrchestrator.sendMessage] adapterName or adapterId required when session has no agents (sessionId=${t})`);return r?y(this.bus,r,n,`[SessionOrchestrator.sendMessage] (sessionId=${t}) `):n}async resolveInitialAdapterSelection(e,t,n,r){if(!e)throw Error(`[SessionOrchestrator.sendMessage] agent selection required when session has no agents (sessionId=${t})`);if(e.kind===`adapter`)return e;if(e.kind===`canonical-model`)return await this.resolveCanonicalModelSelection(e,t,n,r);throw Error(`[SessionOrchestrator.sendMessage] agent with kind: 'adapter' or 'canonical-model' required when session has no agents (sessionId=${t})`)}async resolveCanonicalModelSelection(e,t,n,r){let i=Ee(e.model);if(Te(i))throw Error(`[SessionOrchestrator.sendMessage] Invalid canonical model "${e.model}" (sessionId=${t}): ${i.message}`);if(i.kind===`virtual`)throw Error(`[SessionOrchestrator.sendMessage] Virtual canonical models require a host resolver (sessionId=${t})`);let a=await this.bus.request(ce.resolve,{parsed:i,context:{sessionId:t,promptText:g(n),...r===void 0?{}:{sessionContext:r}}});return{...e,...a,kind:`adapter`,providerConfigId:e.providerConfigId??a.providerConfigId}}},ln=class{bus;constructor(e){this.bus=e}async getTurnSoFarContext(e){try{let{messages:t}=await this.bus.request(T.getByTurn,{turnId:e});return this.convertSessionMessagesToMessages(t)}catch(e){return e instanceof oe||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 un(e){let{bus:t}=e;return t.on(A.getStatusCounts,async e=>{e.payload;let{all:n,active:r,closed:i,archived:a,discovered:o}=await t.request(C.getStatusCounts,{});e.setResult({all:n,active:r,closed:i,archived:a,discovered:o})})}function dn(e){let{bus:t}=e;return t.on(A.resume,async e=>{let{sessionId:n}=e.payload,{session:r}=await t.request(C.get,{sessionId:n});if(!r||r.status!==`closed`){e.setResult({success:!1});return}r.status=`active`,r.lastActivityAt=Date.now(),await t.request(C.set,{sessionId:n,session:r}),await t.emit(A.resumed,{sessionId:n}),e.setResult({success:!0})})}function fn(e){return e.on(E.listActions,e=>{let t=_.getAll().map(e=>({id:e.id,label:e.label,description:e.description,category:e.category}));e.setResult({actions:t})})}const pn=[{actionId:`strip-reasoning`},{actionId:`strip-tool-outputs`}];function mn(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 hn=class{bus;agentToSession=new Map;pendingAssistantResponses=new Map;cleanups=[];constructor(e=ae){this.bus=e,this.registerHandlers()}registerHandlers(){this.registerMappingHandlers(),this.registerTurnTrackingHandlers(),this.registerBlockAccumulationHandlers()}registerMappingHandlers(){this.cleanups.push(this.bus.on(A.agent.added,e=>{this.agentToSession.set(e.payload.agentId,e.payload.sessionId)})),this.cleanups.push(this.bus.on(A.closed,e=>{for(let[t,n]of this.agentToSession)n===e.payload.sessionId&&this.agentToSession.delete(t);for(let[t,n]of this.pendingAssistantResponses)n.sessionId===e.payload.sessionId&&this.pendingAssistantResponses.delete(t)}))}registerTurnTrackingHandlers(){this.cleanups.push(this.bus.on(A.turn.started,e=>{let{sessionId:t,turnId:n,messageId:r,agentIds:i}=e.payload;for(let e of i){let i=this.pendingKey(n,r,e);this.pendingAssistantResponses.has(i)||this.pendingAssistantResponses.set(i,{sessionId:t,turnId:n,messageId:r,agentId:e,blocks:[]})}})),this.cleanups.push(this.bus.on(A.user_message.sent,e=>{let{sessionId:t,turnId:n,messageId:r,agentIds:i}=e.payload;for(let e of i){let i=this.pendingKey(n,r,e);this.pendingAssistantResponses.set(i,{sessionId:t,turnId:n,messageId:r,agentId:e,blocks:[]})}})),this.cleanups.push(this.bus.on(A.user_message.acknowledged,e=>{let t=this.pendingKey(e.payload.turnId,e.payload.messageId,e.payload.agentId);this.pendingAssistantResponses.has(t)||this.pendingAssistantResponses.set(t,{sessionId:e.payload.sessionId,turnId:e.payload.turnId,messageId:e.payload.messageId,agentId:e.payload.agentId,blocks:[]})})),this.cleanups.push(this.bus.on(A.turn.assistantPersistenceSettled,e=>{let{turnId:t,messageId:n,agentId:r}=e.payload;this.pendingAssistantResponses.delete(this.pendingKey(t,n,r))})),this.cleanups.push(this.bus.on(A.turn.completed,e=>{let{sessionId:t,turnId:n}=e.payload;for(let[e,r]of this.pendingAssistantResponses)r.sessionId===t&&r.turnId===n&&this.pendingAssistantResponses.delete(e)}))}registerBlockAccumulationHandlers(){this.cleanups.push(this.bus.on(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(A.turn.assistantPersistenceSettled,{sessionId:u.sessionId,turnId:u.turnId,agentId:t,messageId:u.messageId})}}}))}async storeAssistantMessage(e,t,n,r){let i=r===void 0?e.blocks:r.content===void 0?[]:[{type:`text`,content:r.content}];if(i.length===0&&!n)return;let a=i.filter(e=>e.type===`text`).map(e=>e.content).join(`
|
|
2
2
|
`),o=crypto.randomUUID();try{if(!(await this.bus.requestOptional(T.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(T.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(V.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])}},gn=class{bus;_sessionId;_extensionId;_turnId;_parentSessionId;contextTracker;contextContributions=new Map;constructor(e,t,n,r,i,a){this.bus=e,this._sessionId=t,this._extensionId=n,this._turnId=r,this._parentSessionId=i,this.contextTracker=a}get sessionId(){return this._sessionId}get turnId(){return this._turnId}get parentSessionId(){return this._parentSessionId}get extensionId(){return this._extensionId}async sendToAgent(e,t){await this.bus.request(A.sendMessage,{sessionId:this._sessionId,agentIds:[e],message:t,source:`extension`,extensionId:this._extensionId})}contributeContext(e,t){this.contextContributions.set(e,t)}getContributions(){return Object.fromEntries(this.contextContributions)}async fork(e){return(await this.bus.request(A.fork,{sourceSessionId:this._sessionId,name:e.reason})).sessionId}async merge(e,t){await this.bus.request(A.merge,{parentSessionId:this._sessionId,childSessionId:e,summary:t,source:`extension`,extensionId:this._extensionId})}async abandon(e){await this.bus.request(A.abandon,{parentSessionId:this._sessionId,childSessionId:e,source:`extension`,extensionId:this._extensionId})}async requestCompression(e){await this.bus.emit(A.compressionRequested,{sessionId:this._sessionId,reason:e,source:`extension`,extensionId:this._extensionId})}async getContextWindowState(){if(this.contextTracker){let e=this.contextTracker.getSessionState(this._sessionId);if(e)return{currentTokens:e.currentTokens,maxTokens:e.maxTokens,percentage:e.percentage,level:e.level}}let{session:e}=await this.bus.request(A.get,{sessionId:this._sessionId});return!e||e.agents.length===0?{currentTokens:0,maxTokens:1,percentage:0,level:`ok`}:{currentTokens:0,maxTokens:2e5,percentage:0,level:`ok`}}async getChildSessions(){return(await this.bus.request(A.getChildren,{sessionId:this._sessionId})).children.map(e=>e.sessionId)}};function _n(e,t,n,r,i,a){return new gn(e,t,n,r,i,a)}function vn(e,t){let n=e?.clientAccountId??null,r=t.clientAccountId??null;return!r||n===r?null:{previousClientAccountId:n,clientAccountId:r}}function H(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 U(e,t,n){let r=vn(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(A.clientAccount.changed,a)).catch(e=>{console.error(`[SessionStorage] Failed to emit session.clientAccount.changed:`,e)})})}function yn(e){switch(e){case`fork`:return`fork`;case`subagent`:return`subagent`;case`compress`:return`compress`;case`root`:return;default:return}}function bn(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 xn(){let e=0;return()=>{let t=Date.now();return e=t>e?t:e+1,e}}function Sn(e){return e.activation===`live`?`active`:`discovered`}const Cn=xn();function wn(e,t){return e===`imported`||t===`imported`?`imported`:e===`tracking`||t===`tracking`?`tracking`:e??t??`discovered`}function Tn(e,t,n){n!==void 0&&(e[t]=n)}function En(e){return e.status===`closed`||e.status===`archived`||e.status===`active`&&e.isImported===!0}function Dn(e,t,n){if(!En(e)){if(n===`live`){e.status===`discovered`&&(e.status=`active`);return}t===`discovered`&&(e.status=`discovered`)}}function On(e,t,n){let r=e.startedAt??n,i=yn(e.kind);return{sessionId:t,createdAt:r,lastActivityAt:r,agents:[],status:Sn(e),branchKind:i,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 kn(e,t,n){let r=wn(e.importStatus,t.importStatus);Dn(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 An(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=yn(t.kind);n!==void 0&&e.branchKind===void 0&&(e.branchKind=n),Tn(e,`adapterId`,t.adapterId),Tn(e,`clientId`,t.clientId),t.metadata!==void 0&&(e.metadata={...t.metadata,...e.metadata??{}}),Tn(e,`isSidechain`,t.isSidechain),Tn(e,`lastClientIdentityObservation`,t.lastClientIdentityObservation),t.machineId===null?e.machineId=void 0:t.machineId!==void 0&&(e.machineId??=t.machineId)}function jn(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 Mn(e,t,n){let r=e.discoveredAt;kn(e,t,n),An(e,t),jn(e,t,r)}function Nn(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 Pn(e,t,n){if(n){e.emit(A.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(A.updated,{sessionId:t.sessionId,changedProperties:[`source`,`targetWorkingDirectory`,`title`]}).catch(e=>console.error(`[SessionStorage] Failed to emit session.updated:`,e))}function Fn(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 In(e,t,n){e.emit(A.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(A.import.completed,{sessionId:t.sessionId,adapterSessionId:t.adapterSessionId,source:r}).catch(e=>console.error(`[SessionStorage] Failed to emit session.import.completed:`,e))}function Ln(e){let{bus:t,store:n,cloneSession:r,populateAgents:i}=e;return[t.on(C.importUpsert,e=>{let r=e.payload,i=Array.from(n.values()).find(e=>e.adapterSessionId===r.externalSessionId&&e.source===r.source),a=Cn(),o=i===void 0,s=i??On(r,crypto.randomUUID(),a);i?(Mn(i,r,a),i.parentExternalSessionId!==void 0&&i.parentSessionId===void 0&&Nn(n,i)):(n.set(s.sessionId,s),Nn(n,s)),Pn(t,s,o),e.setResult({sessionId:s.sessionId,created:o})}),t.on(C.getByLogFilePath,async e=>{let a=Array.from(n.values()).find(t=>t.logFilePath===e.payload.logFilePath);if(!a){e.setResult({session:null});return}let o=await i(t,a.sessionId);e.setResult({session:{...r(a),agents:o}})}),t.on(C.listImported,async e=>{let{source:a,importStatus:o}=e.payload,s=Array.from(n.values()).filter(e=>e.isImported===!0).filter(e=>a===void 0||e.source===a).filter(e=>o===void 0||e.importStatus===o).sort((e,t)=>t.createdAt-e.createdAt),c=await Promise.all(s.map(async e=>({...r(e),agents:await i(t,e.sessionId)})));e.setResult({sessions:c})}),t.on(C.countBySource,e=>{let t=Array.from(n.values()).filter(t=>t.isImported===!0&&t.source===e.payload.source);e.setResult(Fn(t))}),t.on(C.updateImportStatus,e=>{let r=n.get(e.payload.sessionId),i=e.payload.importStatus;if(!r||r.importStatus===i){e.setResult({success:!1});return}r.importStatus=i,i===`imported`&&r.status===`discovered`&&(r.status=`active`),e.setResult({success:!0}),In(t,r,i)})]}async function Rn(e,t){let n=await e.requestOptional(c.listBySession,{sessionId:t});return n.handled?n.data.agents:[]}function W(e){return structuredClone(e)}function G(e,t,n){n!==void 0&&(e[t]=n)}function zn(e,t,n){n!==void 0&&(e[t]=n??void 0)}function Bn(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 Vn(e,t){G(e,`status`,t.status),G(e,`parentSessionId`,t.parentSessionId),G(e,`contextInheritance`,t.contextInheritance),G(e,`rootSessionId`,t.rootSessionId),G(e,`forkPointMessageId`,t.forkPointMessageId),G(e,`branchKind`,t.branchKind),G(e,`isOrchestrated`,t.isOrchestrated),G(e,`clientId`,t.clientId),G(e,`clientAccountId`,t.clientAccountId),G(e,`lastClientIdentityObservation`,t.lastClientIdentityObservation),G(e,`title`,t.title),G(e,`targetWorkingDirectory`,t.targetWorkingDirectory),G(e,`createdAt`,t.createdAt),G(e,`lastActivityAt`,t.lastActivityAt),G(e,`machineId`,t.machineId),zn(e,`executionTargetId`,t.executionTargetId),zn(e,`approvalPolicyOverride`,t.approvalPolicyOverride),zn(e,`metadata`,t.metadata),t.spawningToolCallId===null?e.spawningToolCallId=void 0:t.spawningToolCallId!==void 0&&e.spawningToolCallId===void 0&&(e.spawningToolCallId=t.spawningToolCallId)}function Hn(e,t){return e.on(C.list,async n=>{let{status:r=`all`,limit:i,offset:a=0,includePreview:o=!1,executionTargetId:s}=n.payload,c=Bn(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=>({...W(t),agents:await Rn(e,t.sessionId)}))),d=o?u.map(e=>({...e,preview:{messageCount:0,firstUserMessage:null}})):u;n.setResult({sessions:d,total:l})})}function Un(e,t){return e.on(C.update,async n=>{let r=structuredClone(xe.request.parse(n.payload)),i=t.get(r.sessionId);if(!i){n.setResult({success:!1,clientAccountChanged:!1});return}let a=W(i);H(a,{sessionId:i.sessionId,clientId:r.clientId??i.clientId,clientAccountId:r.clientAccountId??i.clientAccountId,lastClientIdentityObservation:r.lastClientIdentityObservation??i.lastClientIdentityObservation}),Vn(i,r),n.setResult({success:!0,clientAccountChanged:(a.clientAccountId??null)!==(i.clientAccountId??null)}),U(e,a,W(i))})}function Wn(e){let t=new Map,n=[];return n.push(e.on(C.get,async n=>{let r=t.get(n.payload.sessionId);if(!r){n.setResult({session:null});return}let i=await Rn(e,n.payload.sessionId);n.setResult({session:{...W(r),agents:i}})})),n.push(e.on(C.set,async n=>{let{sessionId:r,session:i,ifAbsent:a}=be.parse(n.payload);if(a&&t.has(r)){n.setResult({success:!1,clientAccountChanged:!1});return}let o=structuredClone(i),s=t.get(r)??null,c=s?W(s):null;H(s,o),t.set(r,o),n.setResult({success:!0,clientAccountChanged:(c?.clientAccountId??null)!==(o.clientAccountId??null)}),U(e,c,W(o))})),n.push(e.on(C.delete,async e=>{t.delete(e.payload.sessionId),e.setResult({success:!0}),await e.next()})),n.push(Hn(e,t)),n.push(e.on(C.getChildren,e=>{let{sessionId:n}=e.payload,r=Array.from(t.values()),i=r.filter(e=>e.parentSessionId===n),a=new Set(r.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})})),n.push(e.on(C.getStatusCounts,e=>{e.payload;let n=Array.from(t.values()),r=n.filter(e=>e.status===`active`).length,i=n.filter(e=>e.status===`closed`).length,a=n.filter(e=>e.status===`archived`).length,o=n.filter(e=>e.status===`discovered`).length;e.setResult({all:r+i+a+o,active:r,closed:i,archived:a,discovered:o})})),n.push(Un(e,t)),n.push(Gn(e,t)),n.push(...Ln({bus:e,store:t,populateAgents:Rn,cloneSession:W})),()=>n.forEach(e=>e())}function Gn(e,t){return e.on(C.getByAdapterSessionId,async n=>{let{adapterSessionId:r,source:i,adapterName:a}=n.payload,o=Array.from(t.values()).filter(e=>e.adapterSessionId!==void 0&&e.adapterSessionId===r&&(i===void 0||e.source===i)&&(a===void 0||e.adapterName===a)),s=o[0];if(o.length!==1||s===void 0){n.setResult({session:null});return}let l=await e.requestOptional(c.listBySession,{sessionId:s.sessionId}),u=l.handled?l.data.agents:[];n.setResult({session:{...W(s),agents:u}})})}const Kn=r.postgres,qn=t.postgres,K=Le({sessions:n,agents:e},{sessions:Kn,agents:qn});function Jn(e,t){let n=e?.clientId??null,r=e?.clientAccountId??null,i=e?.lastClientIdentityObservation??null;return P(n===null?R(t.clientId):I(t.clientId,n),r===null?R(t.clientAccountId):I(t.clientAccountId,r),i===null?R(t.lastClientIdentityObservation):I(t.lastClientIdentityObservation,i))}function Yn(e){return{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,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?de.parse(e.compressionMode):void 0}}function Xn(e){return{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??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 Zn(e){let t;for(let n=e.length-1;n>=0;--n)try{e[n]?.()}catch(e){t??=e}if(t)throw t}function Qn(e){let{bus:t,db:n}=e,{agents:r}=N(n,K);return t.on(c.get,async e=>{let[t]=await n.select().from(r).where(I(r.agentId,e.payload.agentId)).limit(1);e.setResult({agent:t?Yn(t):null})})}function $n(e){let{bus:t,db:n}=e,{agents:r}=N(n,K);return t.on(c.set,async e=>{let{agent:t}=e.payload,i=Xn(t),a=await n.insert(r).values(i).onConflictDoUpdate({target:r.agentId,set:i});e.setResult({success:M(a)})})}function er(e){let{bus:t,db:n}=e,{agents:r}=N(n,K);return t.on(c.delete,async e=>{let t=await n.delete(r).where(I(r.agentId,e.payload.agentId));e.setResult({success:M(t)})})}function tr(e){let{bus:t,db:n}=e,{agents:r}=N(n,K);return t.on(c.listByAdapter,async e=>{let{adapterName:t,status:i}=e.payload,a=[I(r.adapterName,t)];i&&i!==`all`&&a.push(I(r.status,i));let o=a.length>1?P(...a):a[0],s=await n.select().from(r).where(o);e.setResult({agents:s.map(Yn)})})}function nr(e){let{bus:t,db:n}=e,{agents:r}=N(n,K);return t.on(c.listBySession,async e=>{let{sessionId:t}=e.payload,i=await n.select().from(r).where(I(r.sessionId,t));e.setResult({agents:i.map(Yn)})})}function rr(e){let{bus:t,db:n}=e,{agents:r}=N(n,K);return t.on(c.updateStatus,async e=>{let{agentId:t,status:i}=e.payload,a=Date.now(),o=await n.update(r).set({status:i,lastActivityAt:a}).where(I(r.agentId,t));e.setResult({success:M(o)})})}function ir(e){let{bus:t,db:n}=e,{agents:r}=N(n,K);return t.on(c.updateActivity,async e=>{let{agentId:t,lastActivityAt:i}=e.payload,a=await n.update(r).set({lastActivityAt:i}).where(I(r.agentId,t));e.setResult({success:M(a)})})}function ar(e){let{bus:t,db:n}=e,{agents:r}=N(n,K);return t.on(c.updateRuntime,async e=>{let{agentId:t,adapterId:i,adapterSessionId:a,cwd:o,model:s,allowedDirectories:c,providerConfigId:l}=e.payload,u={lastActivityAt:Date.now()};i!==void 0&&(u.adapterId=i),a!==void 0&&(u.adapterSessionId=a),o!==void 0&&(u.cwd=o),s!==void 0&&(u.model=s),c!==void 0&&(u.allowedDirectories=c),l!==void 0&&(u.providerConfigId=l);let d=await n.update(r).set(u).where(I(r.agentId,t));e.setResult({success:M(d)})})}function or(e,t){let n={bus:e,db:t},r=[Qn(n),$n(n),er(n),tr(n),nr(n),rr(n),ir(n),ar(n)];return()=>Zn(r)}function q(e){return e??void 0}function sr(e){if(e)try{let t=JSON.parse(e),n=Xe.safeParse(t);return n.success?n.data:void 0}catch{return}}function cr(e){if(e)try{let t=JSON.parse(e),n=pe.safeParse(t);return n.success?n.data:void 0}catch{return}}function J(e,t){let n=cr(e.forkTransforms),r=sr(e.lastClientIdentityObservation);return{sessionId:e.sessionId,createdAt:e.createdAt,lastActivityAt:e.lastActivityAt,status:e.status,leadAgentId:q(e.leadAgentId),parentSessionId:q(e.parentSessionId),contextInheritance:q(e.contextInheritance),rootSessionId:q(e.rootSessionId),forkPointMessageId:q(e.forkPointMessageId),branchKind:q(e.branchKind),adapterName:q(e.adapterName),adapterSessionId:q(e.adapterSessionId),adapterId:q(e.adapterId),clientId:q(e.clientId),clientAccountId:q(e.clientAccountId),lastClientIdentityObservation:r,isOrchestrated:q(e.isOrchestrated),isImported:q(e.isImported),title:q(e.title),summary:q(e.summary),summaryUpdatedAt:q(e.summaryUpdatedAt),forkTransforms:n,targetWorkingDirectory:q(e.targetWorkingDirectory),executionTargetId:q(e.executionTargetId),agents:t.map(Yn),approvalPolicyOverride:q(e.approvalPolicyOverride),metadata:q(e.metadata),spawningToolCallId:q(e.spawningToolCallId),source:q(e.source),parentExternalSessionId:q(e.parentExternalSessionId),logFilePath:q(e.logFilePath),discoveredAt:q(e.discoveredAt),importStatus:q(e.importStatus),isSidechain:q(e.isSidechain),machineId:q(e.machineId)}}function lr(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 ur(e,t,n){if(!n||t.length===0)return{};let{messages:r}=N(e,o),i=e.select({sessionId:r.sessionId,minTimestamp:z`MIN(${r.timestamp})`.as(`min_timestamp`)}).from(r).where(P(I(r.role,`user`),L(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,P(I(r.sessionId,i.sessionId),I(r.timestamp,i.minTimestamp))).where(I(r.role,`user`)),s=new Map;for(let e of a)s.has(e.sessionId)||s.set(e.sessionId,e.preview);let c=await e.select({sessionId:r.sessionId,count:F()}).from(r).where(L(r.sessionId,t)).groupBy(r.sessionId),l=new Map;for(let e of c)l.set(e.sessionId,e.count);return{previewBySession:s,countBySession:l}}function dr(e,t){return{sessionId:e.sessionId,clientId:t.clientId??e.clientId,clientAccountId:t.clientAccountId??e.clientAccountId,lastClientIdentityObservation:t.lastClientIdentityObservation??e.lastClientIdentityObservation}}function fr(e){return e.clientId!==void 0||e.clientAccountId!==void 0||e.lastClientIdentityObservation!==void 0}function pr(e){let{bus:t,db:n}=e,{sessions:r,agents:i}=N(n,K);return t.on(C.getByAdapterSessionId,async e=>{let{adapterSessionId:t,source:a,adapterName:o}=e.payload,s=[I(r.adapterSessionId,t)];a!==void 0&&s.push(I(r.source,a)),o!==void 0&&s.push(I(r.adapterName,o));let c=await n.select().from(r).where(P(...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(I(i.sessionId,l.sessionId));e.setResult({session:J(l,u)})})}function mr(e){let{bus:t,db:n}=e,{sessions:r}=N(n,K),{messages:i}=N(n,o);return t.on(C.getChildren,async e=>{let{sessionId:t}=e.payload,a=await n.select().from(r).where(I(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:F()}).from(i).where(L(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:F()}).from(r).where(L(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(P(I(i.sessionId,t),L(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})})}const hr=xn();function gr(e){return e?JSON.stringify(e):null}function _r(e,t){return z`
|
|
3
3
|
SELECT ${t}.key AS key,
|
|
4
4
|
CASE ${t}.type
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r as e}from"./json-value-DmU8ibo_.mjs";import"./ui-config-
|
|
1
|
+
import{r as e}from"./json-value-DmU8ibo_.mjs";import"./ui-config-CyCdlns_.mjs";import{z as t}from"zod";const n=t.string().max(64).regex(/^[a-zA-Z0-9_-]+$/),r=t.object({schema:e,name:n.optional(),strict:t.boolean().optional()}).strict(),i=t.object({message:t.string(),instancePath:t.string(),schemaPath:t.string()}).strict(),a=t.enum([`passed`,`failed`,`enforced`]),o=t.discriminatedUnion(`status`,[t.object({status:t.literal(`passed`)}).strict(),t.object({status:t.literal(`enforced`)}).strict(),t.object({status:t.literal(`failed`),errors:t.array(i).min(1)}).strict()]),s=t.discriminatedUnion(`type`,[t.object({type:t.literal(`base64`),data:t.string(),mimeType:t.string()}),t.object({type:t.literal(`url`),url:t.string(),mimeType:t.string().optional()})]),c=t.enum([`file`,`directory`]),l=t.discriminatedUnion(`type`,[t.object({type:t.literal(`text`),content:t.string()}),t.object({type:t.literal(`image`),source:s}),t.object({type:t.literal(`document`),source:s}),t.object({type:t.literal(`attachment`),fileName:t.string(),filePath:t.string(),source:s,displayName:t.string().optional(),attachmentType:c}),t.object({type:t.literal(`reasoning`),content:t.string(),metadata:t.record(t.string(),t.unknown()).optional()}),t.object({type:t.literal(`tool_call`),toolCallId:t.string(),name:t.string(),args:t.record(t.string(),t.unknown())}),t.object({type:t.literal(`tool_output`),toolCallId:t.string(),output:t.string(),isError:t.boolean().optional()})]),u=t.enum([`user`,`assistant`,`system`]),d=t.object({role:u.optional(),blocks:t.union([l,t.array(l)])}),f=t.union([t.string(),d]),p=t.object({message:t.string().optional()}),m=t.enum([`completed`,`superseded`,`merged`,`cancelled`,`error`,`rejected`]),h=t.object({messageId:t.string(),result:p.optional(),error:t.string().optional(),outcome:m}),g=t.enum([`enqueue`,`immediate`,`replace`]),_=t.union([t.string(),t.object({mode:t.literal(`append`),content:t.string()})]),v=t.object({role:t.enum([`user`,`assistant`,`system`]),blocks:t.array(l),message:t.string().optional()}),y=[`rate_limit`,`auth`,`model_unavailable`,`quota_exceeded`],b=t.enum(y);export{a as _,g as a,d as c,h as d,_ as f,o as g,i as h,l as i,v as l,n as m,y as n,f as o,r as p,b as r,m as s,s as t,p as u};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{t as e}from"./storage-namespace-definition-
|
|
1
|
+
import{t as e}from"./storage-namespace-definition-CkMKt7-I.mjs";import{z as t}from"zod";import{createBusNamespace as n}from"@makaio/framework/core";const r=t.enum([`global`,`project`,`session`]),i=t.enum([`filesystem`,`database`]),a=t.enum([`manual`,`auto`]),o=t.enum([`model`,`user`,`auto`,`reinjection`]),s=t.enum([`cwd_changed`,`session_end`,`user`,`replaced`]),c=t.object({maxTurns:t.number().int().positive().optional()}),l=t.object({name:t.string().regex(/^[a-z0-9]+(?:-[a-z0-9]+)*$/).max(64),description:t.string().min(1).max(1024),license:t.string().optional(),compatibility:t.string().min(1).max(500).optional(),metadata:t.record(t.string(),t.string()).optional(),allowedTools:t.string().optional()}),u=t.object({category:t.string().optional(),tags:t.array(t.string()).optional(),adapters:t.array(t.string()).nullable().optional(),activationMode:a.default(`manual`),reinjection:c.optional(),enabled:t.boolean().default(!0)}),d=l.merge(u).extend({id:t.string(),source:i,scope:r,projectId:t.string().optional(),sessionId:t.string().optional(),location:t.string().optional(),baseDir:t.string().optional(),content:t.string(),createdAt:t.number(),updatedAt:t.number()}),f=t.object({name:l.shape.name,description:l.shape.description,compatibility:l.shape.compatibility,category:u.shape.category,tags:u.shape.tags,adapters:u.shape.adapters,activationMode:u.shape.activationMode,source:i,scope:r,location:t.string().optional(),baseDir:t.string().optional()}).strict(),p=t.object({license:l.shape.license,compatibility:l.shape.compatibility,allowedTools:l.shape.allowedTools,metadata:l.shape.metadata}).strict(),m=t.object({name:t.string(),description:t.string(),compatibility:t.string().optional()}),h=t.object({name:t.string(),content:t.string(),license:t.string().optional(),compatibility:t.string().optional(),allowedTools:t.string().optional(),metadata:t.record(t.string(),t.string()).optional()}),g=t.object({name:t.string(),content:t.string(),metadata:p.optional(),baseDir:t.string().optional(),resources:t.array(t.string()).optional(),trigger:o,activatedAt:t.number(),activatedAtTurn:t.number().int().positive().optional(),lastInjectedAtTurn:t.number().int().positive().optional(),reinjection:c.optional()}),_=l.merge(u).extend({id:t.string(),scope:r,projectId:t.string().optional(),sessionId:t.string().optional(),content:t.string(),source:t.literal(`database`).default(`database`)}).strict(),v=t.object({sessionId:t.string().optional(),projectId:t.string().optional(),adapterId:t.string().optional(),category:t.string().optional(),tags:t.array(t.string()).optional(),enabledOnly:t.boolean().optional()}),y={"catalog.built":t.object({sessionId:t.string(),agentId:t.string(),cwd:t.string(),adapterId:t.string().optional(),skillNames:t.array(t.string()),timestamp:t.number()}),activated:t.object({sessionId:t.string(),agentId:t.string(),cwd:t.string(),adapterId:t.string().optional(),skillName:t.string(),trigger:o,turnNumber:t.number().int().positive().optional(),timestamp:t.number()}),deactivated:t.object({sessionId:t.string(),agentId:t.string(),skillName:t.string(),reason:s,timestamp:t.number()}),getCatalog:{request:t.object({sessionId:t.string(),agentId:t.string(),cwd:t.string().optional(),projectId:t.string().optional(),adapterId:t.string().optional()}),response:t.object({entries:t.array(f),cwd:t.string()})},activate:{request:t.object({sessionId:t.string(),agentId:t.string(),skillName:t.string(),trigger:o,cwd:t.string().optional(),projectId:t.string().optional(),adapterId:t.string().optional(),turnNumber:t.number().int().positive().optional()}),response:t.object({name:t.string(),content:t.string(),metadata:p.optional(),baseDir:t.string().optional(),resources:t.array(t.string()).optional(),alreadyActive:t.boolean().default(!1)})},getActiveSkills:{request:t.object({sessionId:t.string(),agentId:t.string(),cwd:t.string().optional(),projectId:t.string().optional(),adapterId:t.string().optional()}),response:t.object({skills:t.array(g),cwd:t.string().optional()})}},b=n(`skill`,y),x=b.subjects,S=e(`skill`,{schemas:{get:{request:t.object({id:t.string()}),response:t.object({skill:d.nullable()})},set:{request:t.object({skill:_}),response:t.object({id:t.string()})},delete:{request:t.object({id:t.string()}),response:t.object({deleted:t.boolean()})},list:{request:v,response:t.object({skills:t.array(d)})},getEffective:{request:v,response:t.object({skills:t.array(d)})}}}),C=S.subjects;function w(e){if(e.scope===`global`){if(e.projectId||e.sessionId)throw Error(`Global scope skills must not have projectId or sessionId`);return}if(e.scope===`project`){if(!e.projectId)throw Error(`Project scope skills require projectId`);if(e.sessionId)throw Error(`Project scope skills must not have sessionId`);return}if(!e.sessionId)throw Error(`Session scope skills require sessionId`)}export{h as S,c as _,x as a,r as b,a as c,m as d,s as f,d as g,_ as h,b as i,o as l,v as m,C as n,p as o,l as p,w as r,g as s,S as t,f as u,u as v,i as x,y};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{t as e}from"./jsonl-transport-
|
|
1
|
+
import{t as e}from"./jsonl-transport-bQl3JwIu.mjs";import{CorrelationTracker as t,DEFAULT_REQUEST_TIMEOUT_MS as n,handleCorrelationResponse as r,trackMessageCorrelation as i}from"@makaio/framework/bus";var a=class{name;spawnOptions;jsonl=null;handlers=new Set;correlations=new t;handshakeComplete=!1;terminalError=null;localSubscriptions=new Map;readyResolve=null;readyReject=null;onNewReadySession=void 0;onConnected=void 0;onDisconnected=void 0;ready;constructor(e){this.name=e.name??`stdio-server`,this.spawnOptions=e.spawn,this.ready=this.createReadyPromise()}async connect(){if(this.jsonl!==null)throw Error(`StdioServerTransport: already connected`);this.readyResolve===null&&this.readyReject===null&&(this.ready=this.createReadyPromise()),this.handshakeComplete=!1,this.terminalError=null;let t=e(this.spawnOptions);this.jsonl=t,t.onMessage(e=>{this.jsonl===t&&this.handleInbound(e)}),t.onError(e=>{this.jsonl===t&&this.terminateSession(e,!0)}),t.process.once(`exit`,e=>{this.jsonl===t&&this.terminateSession(Error(`Child process exited (code ${e??`signal`}) before subscribe-sync handshake completed`),!1)}),this.localSubscriptions.size>0&&this.sendSubscribeMessage()}async send(e,t){if(this.jsonl===null)throw Error(`StdioServerTransport: not connected`);return this.jsonl.send(e),i(e,this.correlations,t??n)}onReceive(e){return this.handlers.add(e),()=>{this.handlers.delete(e)}}async disconnect(){let e=this.jsonl;this.jsonl=null,this.handshakeComplete=!1,this.terminalError=null,this.readyResolve?.(),this.readyResolve=null,this.readyReject=null,this.correlations.cleanup(),e?.close()}async subscribe(e,t,n=[],r){let i=r??this.localSubscriptions.get(e)?.deliveryClass??`relayable`;this.localSubscriptions.set(e,{priorities:n,filter:t,deliveryClass:i}),this.jsonl!==null&&this.sendSubscribeMessage(e,t,n,i)}async unsubscribe(e){let t=this.localSubscriptions.delete(e);this.jsonl!==null&&t&&this.jsonl.send({type:`unsubscribe`,subjects:{[e]:[]}})}isReady(){return this.jsonl!==null&&this.terminalError===null&&this.handshakeComplete&&this.jsonl.process.exitCode===null}cancelRequest(e,t){this.correlations.cancel(e,t)}createReadyPromise(){let e=new Promise((e,t)=>{this.readyResolve=e,this.readyReject=t});return this.onNewReadySession?.(e),e}terminateSession(e,t){let n=this.jsonl;this.jsonl=null,this.handshakeComplete=!1,this.terminalError=e,this.readyReject?.(e),this.readyResolve=null,this.readyReject=null,this.correlations.cleanup(),t&&n?.close(),this.onDisconnected?.()}async handleInbound(e){if(typeof e!=`object`||!e||typeof e.type!=`string`)return;let t=e;if(t.type!==`heartbeat`){if(t.type===`subscribe-sync-complete`){this.handshakeComplete=!0,this.readyResolve?.(),this.readyResolve=null,this.readyReject=null,this.jsonl?.send({type:`subscribe-sync-complete`}),this.onConnected?.();return}if(!r(t,this.correlations))for(let e of this.handlers)try{await e(t,{transportName:this.name})}catch{}}}sendSubscribeMessage(e,t,n=[],r=`relayable`){if(this.jsonl===null)return;if(e!==void 0){this.jsonl.send({type:`subscribe`,subjects:{[e]:n},deliveryClasses:{[e]:r},...t===void 0?{}:{filters:{[e]:t}}});return}let i={},a={},o={},s=!1;for(let[e,t]of this.localSubscriptions)i[e]=t.priorities,a[e]=t.deliveryClass,t.filter!==void 0&&(o[e]=t.filter,s=!0);this.jsonl.send({type:`subscribe`,subjects:i,deliveryClasses:a,...s?{filters:o}:{}})}};export{a as StdioServerTransport};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { i as createDatabaseClient, n as DatabaseClientConfig, r as PostgresClientOptions, t as DatabaseClient } from "../../client-
|
|
1
|
+
import { i as createDatabaseClient, n as DatabaseClientConfig, r as PostgresClientOptions, t as DatabaseClient } from "../../client-B--e2qcU.mjs";
|
|
2
2
|
export { DatabaseClient, DatabaseClientConfig, PostgresClientOptions, createDatabaseClient };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as e,h as t,n}from"../../registry-
|
|
1
|
+
import{a as e,h as t,n}from"../../registry-wfF2uTty.mjs";async function r(r={}){if(r.url!==void 0){let n=e(r.url);if(n.kind===`missing-engine`)throw Error(t(n.dialect,n.packageName));if(n.kind===`engine`)return n.engine.createClient(r)}return n(`sqlite`).createClient(r)}export{r as createDatabaseClient};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { a as DATABASE_DIALECT, c as getDatabaseDialect, n as DatabaseClientConfig, o as MakaioDatabase, s as StorageDialect, t as DatabaseClient } from "../../client-
|
|
1
|
+
import { a as DATABASE_DIALECT, c as getDatabaseDialect, n as DatabaseClientConfig, o as MakaioDatabase, s as StorageDialect, t as DatabaseClient } from "../../client-B--e2qcU.mjs";
|
|
2
2
|
import { IMakaioBus } from "@makaio/framework/bus";
|
|
3
3
|
import { ExtensionContext } from "@makaio/framework/contracts";
|
|
4
4
|
import * as _$drizzle_orm_sqlite_core0 from "drizzle-orm/sqlite-core";
|
|
@@ -675,6 +675,54 @@ type LibSQLTransactionExecutor = MakaioDatabase['transaction'];
|
|
|
675
675
|
* @typeParam T - Callback result type
|
|
676
676
|
*/
|
|
677
677
|
type TransactionCallback<T> = Parameters<LibSQLTransactionExecutor>[0] extends ((tx: infer TTx) => Promise<unknown>) ? (tx: TTx) => Promise<T> : never;
|
|
678
|
+
/**
|
|
679
|
+
* Keyed store of in-flight operation tails.
|
|
680
|
+
*
|
|
681
|
+
* Declared structurally so a caller may choose the keyspace its identity
|
|
682
|
+
* actually lives in: both `Map` and `WeakMap` satisfy it, so a caller keyed on
|
|
683
|
+
* an object holds no strong reference to it, while a caller keyed on a derived
|
|
684
|
+
* value (a file path, a connection identity) still gets a queue.
|
|
685
|
+
* @typeParam TKey - Identity operations are serialized against.
|
|
686
|
+
*/
|
|
687
|
+
interface OperationTailStore<TKey> {
|
|
688
|
+
/**
|
|
689
|
+
* Read the tail currently queued for a key.
|
|
690
|
+
* @param key - Identity to read.
|
|
691
|
+
* @returns The queued tail, or `undefined` when nothing is in flight.
|
|
692
|
+
*/
|
|
693
|
+
get(key: TKey): Promise<void> | undefined;
|
|
694
|
+
/**
|
|
695
|
+
* Publish the new tail for a key.
|
|
696
|
+
* @param key - Identity to write.
|
|
697
|
+
* @param tail - Tail that resolves once the newly queued work has finished.
|
|
698
|
+
*/
|
|
699
|
+
set(key: TKey, tail: Promise<void>): unknown;
|
|
700
|
+
/**
|
|
701
|
+
* Drop a key whose queue has drained.
|
|
702
|
+
* @param key - Identity to forget.
|
|
703
|
+
*/
|
|
704
|
+
delete(key: TKey): unknown;
|
|
705
|
+
}
|
|
706
|
+
/**
|
|
707
|
+
* Run work as the only in-flight operation for a key.
|
|
708
|
+
*
|
|
709
|
+
* The queue is a chain of tails: each caller reads the tail currently
|
|
710
|
+
* published for its key, publishes its own, and waits for the one it read.
|
|
711
|
+
* A rejected predecessor is absorbed rather than propagated, because a failed
|
|
712
|
+
* operation still releases the queue for the next one. The key is dropped only
|
|
713
|
+
* when the tail still published is the one this call wrote, so a successor
|
|
714
|
+
* that already queued behind it is never orphaned.
|
|
715
|
+
*
|
|
716
|
+
* The guarantee is process-local: two processes over one database do not share
|
|
717
|
+
* a store and must coordinate through the database itself.
|
|
718
|
+
* @param tails - Store holding the in-flight tail per key.
|
|
719
|
+
* @param key - Identity this work must not overlap other work on.
|
|
720
|
+
* @param work - Async work to run once the queue reaches it.
|
|
721
|
+
* @returns Whatever `work` resolves to.
|
|
722
|
+
* @typeParam TKey - Identity operations are serialized against.
|
|
723
|
+
* @typeParam TResult - Result type produced by the work.
|
|
724
|
+
*/
|
|
725
|
+
declare function serializeByKey<TKey, TResult>(tails: OperationTailStore<TKey>, key: TKey, work: () => Promise<TResult>): Promise<TResult>;
|
|
678
726
|
/**
|
|
679
727
|
* Serialize one database operation with transactions using the same handle.
|
|
680
728
|
* @param db - Makaio database instance.
|
|
@@ -1094,4 +1142,4 @@ declare module '@makaio/framework/storage' {
|
|
|
1094
1142
|
}
|
|
1095
1143
|
}
|
|
1096
1144
|
//#endregion
|
|
1097
|
-
export { DATABASE_DIALECT, type DialectSchema, type DrizzleHandlerRegistration, DrizzleSchemaRecord, type DrizzleWriteResult, type DualBuilder, type DualColumnBuilderBase, type DualColumnBundle, type DualColumnRef, type DualReferenceActions, type DualTable, type DualTableExtras, type Equal, type FtsMessageExcerptHit, type FtsMessageSearchInput, type FtsSearchStrategy, type FtsSessionCountInput, type FtsSessionSearchInput, type MakaioDatabase, NON_BASELINE_GENERATION_LEGS, type PostgresTwinSchema, type RawSqlExecutor, type RawSqlSession, STORAGE_ENGINE_URL_HINTS, type StorageDialect, type StorageEngine, type StorageEngineCapabilities, type StorageEngineErrorClassifiers, type StorageEngineGenerationLeg, type StorageEngineMigrationBehavior, type StorageEngineUrlHint, type StorageEngineUrlResolution, type StorageNamespace, type StorageNamespaceConfig, type StorageNamespaceExtensions, type TransactionCallback, affectedRowCount, brandDatabase, buildFirstUserMessagePreviewQuery, createStorageNamespace, defineDialectSchema, defineDualTable, describeMissingStorageEngine, didAffectRows, executeTransaction, findGenerationLegForDialect, findStorageEngine, getDatabaseDialect, getRawSqlExecutor, getStorageEngine, importRuntimeModule, isSqliteDuplicateObjectError, isSqliteUniqueViolationError, quoteSqlIdentifier, readErrorCode, registerDrizzleHandlers, registerStorageEngine, resolveSchema, resolveStorageEngine, resolveStorageEngineForUrl, sanitizeFtsQuery, serializeDatabaseOperation, someInCauseChain, sqliteFtsSearchStrategy, sqliteStorageEngine };
|
|
1145
|
+
export { DATABASE_DIALECT, type DialectSchema, type DrizzleHandlerRegistration, DrizzleSchemaRecord, type DrizzleWriteResult, type DualBuilder, type DualColumnBuilderBase, type DualColumnBundle, type DualColumnRef, type DualReferenceActions, type DualTable, type DualTableExtras, type Equal, type FtsMessageExcerptHit, type FtsMessageSearchInput, type FtsSearchStrategy, type FtsSessionCountInput, type FtsSessionSearchInput, type MakaioDatabase, NON_BASELINE_GENERATION_LEGS, type OperationTailStore, type PostgresTwinSchema, type RawSqlExecutor, type RawSqlSession, STORAGE_ENGINE_URL_HINTS, type StorageDialect, type StorageEngine, type StorageEngineCapabilities, type StorageEngineErrorClassifiers, type StorageEngineGenerationLeg, type StorageEngineMigrationBehavior, type StorageEngineUrlHint, type StorageEngineUrlResolution, type StorageNamespace, type StorageNamespaceConfig, type StorageNamespaceExtensions, type TransactionCallback, affectedRowCount, brandDatabase, buildFirstUserMessagePreviewQuery, createStorageNamespace, defineDialectSchema, defineDualTable, describeMissingStorageEngine, didAffectRows, executeTransaction, findGenerationLegForDialect, findStorageEngine, getDatabaseDialect, getRawSqlExecutor, getStorageEngine, importRuntimeModule, isSqliteDuplicateObjectError, isSqliteUniqueViolationError, quoteSqlIdentifier, readErrorCode, registerDrizzleHandlers, registerStorageEngine, resolveSchema, resolveStorageEngine, resolveStorageEngineForUrl, sanitizeFtsQuery, serializeByKey, serializeDatabaseOperation, someInCauseChain, sqliteFtsSearchStrategy, sqliteStorageEngine };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{C as e,S as t,_ as n,a as r,b as i,c as a,d as o,f as s,g as c,h as l,i as u,l as d,m as f,n as p,o as m,p as h,r as g,s as _,t as v,u as y,v as b,x,y as S}from"../../registry-
|
|
1
|
+
import{C as e,S as t,_ as n,a as r,b as i,c as a,d as o,f as s,g as c,h as l,i as u,l as d,m as f,n as p,o as m,p as h,r as g,s as _,t as v,u as y,v as b,x,y as S}from"../../registry-wfF2uTty.mjs";import{autoPk as C,bool as w,epochMs as T,float8 as E,jsonCol as D}from"./columns/sqlite.mjs";import{autoPk as O,bool as k,epochMs as A,float8 as j,jsonCol as M}from"./columns/postgres.mjs";import{integer as N,sqliteTable as P,text as F}from"drizzle-orm/sqlite-core";import{bigint as I,integer as L,pgTable as R,text as z}from"drizzle-orm/pg-core";import{getTableColumns as B}from"drizzle-orm";import{createStorageNamespace as V}from"@makaio/framework/storage";const H=[{dialect:`postgres`,enginePackageName:`@makaio/storage-pg`,chainDirName:`drizzle-postgres`,drizzleConfigSpecifier:`drizzle.config.ts`,normalizeScriptSpecifier:`scripts/normalize-migrations.ts`}];function U(e){return H.find(t=>t.dialect===e)}async function W(e,t,n){let r=e.get(t)??Promise.resolve(),i=Promise.withResolvers(),a=r.catch(()=>void 0).then(()=>i.promise);e.set(t,a),await r.catch(()=>void 0);try{return await n()}finally{i.resolve(),e.get(t)===a&&e.delete(t)}}async function G(e,t){return W(q,e,t)}async function K(e,t){return G(e,()=>e.transaction(t))}const q=new WeakMap;function J(e){return(t,n,r)=>e(t,n,r)}function Y(e,t){return{sqlite:e,postgres:t}}function X(t,n){return n[e(t)]}function Z(e,t){let n=(e,t)=>({sqlite:e,postgres:t,notNull:()=>n(e.notNull(),t.notNull()),default:r=>n(e.default(r),t.default(r)),primaryKey:()=>n(e.primaryKey(),t.primaryKey()),unique:r=>n(e.unique(r),t.unique(r)),$type:()=>n(e,t),references:(r,i)=>n(e.references(()=>r().sqlite,i),t.references(()=>r().postgres,i))});return n(e,t)}const Q={text:e=>Z(F(e),z(e)),textEnum:(e,t)=>Z(F(e,t),z(e,t)),epochMs:e=>Z(T(e),A(e)),bool:e=>Z(w(e),k(e)),jsonCol:e=>Z(D(e),M(e)),autoPk:e=>Z(C(e),O(e)),float8:e=>Z(E(e),j(e)),int4:e=>Z(N(e),L(e)),int8:e=>Z(N(e),I(e,{mode:`number`}))};function $(e,t,n){let r=t(Q),i={},a={};for(let[e,t]of Object.entries(r))i[e]=t.sqlite,a[e]=t.postgres;let o=P(e,i,n?.sqlite),s=R(e,a,n?.postgres),c=B(o),l=B(s);return{sqlite:o,postgres:s,columnPair(e){return{sqlite:c[e],postgres:l[e]}}}}export{t as DATABASE_DIALECT,H as NON_BASELINE_GENERATION_LEGS,f as STORAGE_ENGINE_URL_HINTS,i as affectedRowCount,b as brandDatabase,d as buildFirstUserMessagePreviewQuery,V as createStorageNamespace,Y as defineDialectSchema,$ as defineDualTable,l as describeMissingStorageEngine,x as didAffectRows,K as executeTransaction,U as findGenerationLegForDialect,v as findStorageEngine,e as getDatabaseDialect,S as getRawSqlExecutor,p as getStorageEngine,n as importRuntimeModule,y as isSqliteDuplicateObjectError,o as isSqliteUniqueViolationError,c as quoteSqlIdentifier,s as readErrorCode,J as registerDrizzleHandlers,g as registerStorageEngine,X as resolveSchema,u as resolveStorageEngine,r as resolveStorageEngineForUrl,a as sanitizeFtsQuery,W as serializeByKey,G as serializeDatabaseOperation,h as someInCauseChain,_ as sqliteFtsSearchStrategy,m as sqliteStorageEngine};
|