@makaio/framework 1.0.0-dev-1781117225170 → 1.0.0-dev-1781354548379
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/README.md +29 -0
- package/dist/.makaio-build.json +2 -2
- package/dist/adapter-UpcpZDOv.mjs +1 -0
- package/dist/adapters/config/index.d.mts +1 -1
- package/dist/adapters/config/index.mjs +1 -1
- package/dist/adapters/index.d.mts +13 -5
- package/dist/adapters/index.mjs +2 -2
- package/dist/adapters/node.d.mts +1 -1
- package/dist/adapters/node.mjs +1 -1
- package/dist/bus/index.mjs +1 -1
- package/dist/client-BJVDImPV.d.mts +175 -0
- package/dist/clients/index.d.mts +101 -1
- package/dist/clients/index.mjs +2 -2
- 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 +1 -1
- package/dist/contracts/client/index.d.mts +2 -2
- package/dist/contracts/common/index.d.mts +1 -1
- package/dist/contracts/config/index.d.mts +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/harness/index.d.mts +1 -1
- package/dist/contracts/host/index.d.mts +1 -1
- package/dist/contracts/index.d.mts +786 -108
- package/dist/contracts/index.mjs +1 -1
- package/dist/contracts/materialization/index.d.mts +3 -3
- package/dist/contracts/model-registry/index.d.mts +1 -1
- package/dist/contracts/native-session-supervisor/index.d.mts +1 -1
- package/dist/contracts/platform/index.d.mts +1 -1
- package/dist/contracts/provider/index.d.mts +2 -2
- package/dist/contracts/session/index.d.mts +3 -3
- package/dist/contracts/session/index.mjs +1 -1
- package/dist/contracts/shared/index.d.mts +1 -1
- package/dist/contracts/skill/index.d.mts +1 -1
- package/dist/contracts/telemetry/index.d.mts +1 -1
- package/dist/contracts/timeout/index.d.mts +1 -1
- package/dist/contracts/variant/index.d.mts +1 -1
- package/dist/{definition-Cp-5xJp_.d.mts → definition-DqJOg6Lv.d.mts} +1 -1
- package/dist/{detached-extension-handle-oXbjv1tA.mjs → detached-extension-handle-Diiwgm13.mjs} +1 -1
- package/dist/drizzle/0001_messages_content_tsv.na.md +18 -0
- package/dist/drizzle/0012_legal_kate_bishop.sql +3 -0
- package/dist/drizzle/0013_eager_rhodey.sql +56 -0
- package/dist/drizzle/0014_fancy_ultimo.sql +1 -0
- package/dist/drizzle/0015_m_mqbh8q5b.sql +1 -0
- package/dist/drizzle/0016_m_mqbmq8h7.sql +1 -0
- package/dist/drizzle/0017_m_mqbnf924.sql +1 -0
- package/dist/drizzle/meta/0012_snapshot.json +2934 -0
- package/dist/drizzle/meta/0013_snapshot.json +2954 -0
- package/dist/drizzle/meta/0014_snapshot.json +2959 -0
- package/dist/drizzle/meta/0015_snapshot.json +2966 -0
- package/dist/drizzle/meta/0016_snapshot.json +2973 -0
- package/dist/drizzle/meta/0017_snapshot.json +2980 -0
- package/dist/drizzle/meta/_journal.json +42 -0
- package/dist/drizzle-wjquQK2m.mjs +1 -0
- package/dist/extension-DfNcE0zm.mjs +1 -0
- package/dist/extension-ZBN4BGre.mjs +1 -0
- package/dist/{filesystem-service-CBJT7A5w.mjs → filesystem-service-BjfrUmGS.mjs} +1 -1
- package/dist/{globby-C0lgTOUl.mjs → globby-BIH65cbN.mjs} +1 -1
- package/dist/handler-DqpiV9eA.mjs +1 -0
- package/dist/handlers-BAB4fQNH.mjs +41 -0
- package/dist/{index-uQl_1wQO.d.mts → index-BAhJKQLX.d.mts} +8 -8
- package/dist/{index-i7o6FtS0.d.mts → index-BDRKAxIV.d.mts} +129 -2
- package/dist/{index-CXfWW8cP.d.mts → index-BHAOu6Hs.d.mts} +20 -20
- package/dist/{index-t9Vt4Jbb.d.mts → index-BHzgDuRE.d.mts} +20 -3
- package/dist/{index-SFkbbDxs.d.mts → index-BYkOUd0x.d.mts} +1 -1
- package/dist/{index-CmGvjpUG.d.mts → index-BheaEhyI.d.mts} +6 -6
- package/dist/{index-Dsu1tPHm.d.mts → index-Bibt5jAX.d.mts} +8 -8
- package/dist/{index-Bw8SkcWG.d.mts → index-Bw_zL7Rs.d.mts} +1 -1
- package/dist/{index-ClgVA8Rz.d.mts → index-C3zfJg6s.d.mts} +6 -6
- package/dist/{index-v2kRZnfw2.d.mts → index-CH5U3zSA2.d.mts} +20 -10
- package/dist/{index-hWzUQtDn.d.mts → index-CTn_Xi-p.d.mts} +92 -19
- package/dist/{index-BY-fz0Jy.d.mts → index-DPIdX6kb.d.mts} +358 -110
- package/dist/{index-kLBWooVu.d.mts → index-Da4ABgRq.d.mts} +12 -12
- package/dist/{index-C1uZLARQ.d.mts → index-DrGLAuZc.d.mts} +1409 -72
- package/dist/{index-CT-zFurA.d.mts → index-Drz_a7kW.d.mts} +1 -1
- package/dist/{index-BELri1Hy.d.mts → index-IekAD8Gp.d.mts} +8 -8
- package/dist/{index-C_jIVT40.d.mts → index-fVgKVvta.d.mts} +1 -1
- package/dist/{index-BFaeVdsn2.d.mts → index-zgm2j9V92.d.mts} +44 -2
- package/dist/kernel/cli/index.d.mts +2 -2
- package/dist/kernel/cli/register.d.mts +1 -1
- package/dist/kernel/extension/index.d.mts +1 -1
- package/dist/kernel/extension/index.mjs +1 -1
- package/dist/kernel/index.d.mts +5 -5
- package/dist/kernel/index.mjs +1 -1
- package/dist/kernel/namespace/index.d.mts +1 -1
- package/dist/kernel/observability/index.d.mts +1 -1
- package/dist/kernel/providers/index.d.mts +1 -1
- package/dist/kernel/window/index.d.mts +1 -1
- package/dist/{lib-zuQKc8ym.mjs → lib-Cq5R6Tx9.mjs} +1 -1
- package/dist/{lib-IkUYa2Qs.mjs → lib-nlcl5kRW.mjs} +1 -1
- package/dist/{load-extensions-DE8qDIqi.d.mts → load-extensions-D9nbDIiW.d.mts} +1 -1
- package/dist/{load-extensions-CwxilDj1.mjs → load-extensions-wELQ4BBN.mjs} +1 -1
- package/dist/mcp-http-server/index.d.mts +132 -19
- package/dist/mcp-http-server/index.mjs +2 -2
- package/dist/{namespace-Dik_dNeE.d.mts → namespace--s0d86h-.d.mts} +144 -0
- package/dist/{namespace-ffepZB8Y.d.mts → namespace-B73Sxj5L.d.mts} +6 -6
- package/dist/{namespace-CZPu_jvy.d.mts → namespace-Boe6l5n9.d.mts} +82 -46
- package/dist/{namespace-Da_dHfdm.d.mts → namespace-BxxBhcV_.d.mts} +2 -2
- package/dist/namespace-Dfq6MDN9.mjs +1 -0
- package/dist/{namespace-DvHoeMUV.d.mts → namespace-aJJfBJU5.d.mts} +173 -3
- package/dist/node/bus-server/index.d.mts +1 -1
- package/dist/node/bus-server/index.mjs +1 -1
- package/dist/node/bus-server/server-lifecycle.d.mts +1 -1
- package/dist/node/bus-server/server-lifecycle.mjs +1 -1
- package/dist/{orchestrator-shared-FnWrPS09.mjs → orchestrator-shared-BKFXaKPL.mjs} +1 -1
- package/dist/{package-B2HkKyRz.d.mts → package--RZnpN2J.d.mts} +2 -3
- package/dist/package-BzJvtM5O.mjs +1 -0
- package/dist/package-DzN_jdqd.mjs +1 -0
- package/dist/package.json +1 -1
- package/dist/primitive-runtime-CNC_bSac.mjs +1 -0
- package/dist/registry-RG-bkw3c.mjs +146 -0
- 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/bus/runtime/namespace.d.mts +8 -8
- package/dist/runtime-node/bus/runtime/schemas.d.mts +11 -4
- package/dist/runtime-node/bus/runtime/schemas.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 +77 -38
- package/dist/runtime-node/index.mjs +26 -53
- package/dist/runtime-node/makaio-config.d.mts +1 -1
- package/dist/runtime-node/makaio-config.mjs +1 -1
- package/dist/runtime-node/workflow-worker/index.d.mts +1 -1
- package/dist/runtime-node/workflow-worker/index.mjs +1 -1
- package/dist/runtime-node/workflow-worker/worker-entry.mjs +1 -1
- package/dist/schema-C3TgjrsV.mjs +1 -0
- package/dist/schema-CzhOc7TV.mjs +1 -0
- package/dist/{schema-CfuF2cXW.d.mts → schema-DGMLvVoQ.d.mts} +237 -11
- package/dist/schemas-CuKayWhA.mjs +1 -0
- package/dist/{schemas-SPI-Y87l2.d.mts → schemas-kVcJMjjn2.d.mts} +6 -6
- package/dist/{schemas-BiMxSTUx.d.mts → schemas-t1VR6_b_.d.mts} +3 -3
- package/dist/services/adapter-runtime/index.d.mts +3 -3
- package/dist/services/adapter-runtime/namespace.d.mts +1 -1
- package/dist/services/adapter-runtime/schemas.d.mts +1 -1
- package/dist/services/adapter-subsystem/index.d.mts +2 -2
- package/dist/services/adapter-subsystem/namespace.d.mts +1 -1
- package/dist/services/agent-runtime/index.d.mts +2 -2
- package/dist/services/agent-runtime/namespace.d.mts +1 -1
- package/dist/services/agent-runtime/schemas.d.mts +1 -1
- package/dist/services/capability/index.d.mts +1 -1
- package/dist/services/codebase/index.d.mts +2 -2
- package/dist/services/codebase/namespace.d.mts +1 -1
- package/dist/services/codebase/schemas.d.mts +1 -1
- package/dist/services/compression/index.d.mts +2 -2
- package/dist/services/compression/namespace.d.mts +1 -1
- package/dist/services/compression/schemas.d.mts +1 -1
- package/dist/services/context-rules/index.d.mts +4 -4
- package/dist/services/execution-target/index.d.mts +3 -3
- package/dist/services/execution-target/namespace.d.mts +1 -1
- package/dist/services/execution-target/schemas.d.mts +1 -1
- package/dist/services/filesystem/index.d.mts +1 -1
- package/dist/services/filesystem/index.mjs +1 -1
- package/dist/services/filesystem/namespace.d.mts +6 -6
- package/dist/services/filesystem/schemas.d.mts +3 -3
- package/dist/services/harness/index.d.mts +31 -20
- package/dist/services/harness/index.mjs +1 -1
- package/dist/services/harness/storage/schema.d.mts +60 -16
- package/dist/services/harness/storage/schema.mjs +1 -1
- package/dist/services/index.d.mts +166 -69
- 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 +9 -15
- package/dist/services/log-import/index.mjs +2 -2
- package/dist/services/log-import/log-import.d.mts +1 -1
- package/dist/services/model-registry/index.d.mts +1 -1
- package/dist/services/preferences/index.d.mts +2 -2
- package/dist/services/preferences/schemas.d.mts +1 -1
- package/dist/services/preferences/storage-namespace.d.mts +2 -2
- package/dist/services/provider-context/index.d.mts +1 -1
- package/dist/services/provider-context/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 +10 -10
- 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 +2 -2
- package/dist/services/session/storage/schema.mjs +1 -1
- package/dist/services/session/testing/index.d.mts +18 -2
- package/dist/services/session/testing/index.mjs +54 -3
- 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/settings/index.d.mts +3 -3
- package/dist/services/settings/index.mjs +1 -1
- package/dist/services/settings/namespace.d.mts +6 -6
- 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/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/turn/schemas.d.mts +72 -0
- package/dist/services/turn/schemas.mjs +1 -1
- package/dist/{session-C1Cami7U.mjs → session-BwX5_k47.mjs} +1 -1
- package/dist/session-P4nX60Xx.mjs +39 -0
- package/dist/{src-DI5TcYUW.mjs → src-CBG3IHUl.mjs} +1 -1
- package/dist/storage/drizzle/client.d.mts +2 -78
- package/dist/storage/drizzle/client.mjs +1 -1
- package/dist/storage/drizzle/columns/postgres.d.mts +88 -0
- package/dist/storage/drizzle/columns/postgres.mjs +1 -0
- package/dist/storage/drizzle/columns/sqlite.d.mts +81 -0
- package/dist/storage/drizzle/columns/sqlite.mjs +1 -0
- package/dist/storage/drizzle/index.d.mts +976 -23
- 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 +52 -6
- package/dist/testing/drizzle-harness.mjs +1 -1
- package/dist/testing/index.d.mts +34 -2
- package/dist/testing/index.mjs +1 -1
- package/dist/{tool-approval-service-BgNcJvKx.mjs → tool-approval-service-DNHV5x0M.mjs} +1 -1
- package/dist/tools-CQImrHAp.mjs +1 -0
- package/dist/{types-CZHV05Lu.d.mts → types-BpuLMR2m.d.mts} +616 -433
- package/dist/{types-C5Uy3WEy.d.mts → types-D0fPFh-D.d.mts} +1 -1
- package/dist/{types-0u6hpELc.d.mts → types-D6jnDjP2.d.mts} +18 -5
- package/dist/ui-components/index.d.mts +36 -37
- package/dist/ui-kernel/index.d.mts +1 -1
- package/dist/ui-kernel/pages/schemas.d.mts +1 -1
- package/dist/ui-views/index.d.mts +2 -2
- package/dist/workflow-engine/index.d.mts +539 -110
- 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/workflow-orchestrator.mjs +1 -1
- package/dist/{workflow-worker-hDaQzTBl.mjs → workflow-worker-CK9Sqj7D.mjs} +1 -1
- package/package.json +49 -1
- package/dist/adapter-Dt2FDMs4.mjs +0 -1
- package/dist/drizzle-DpjZFY_j.mjs +0 -1
- package/dist/extension--5Q190u_.mjs +0 -1
- package/dist/extension-DFIZ3FCJ.mjs +0 -1
- package/dist/handlers-Bev7-xjL.mjs +0 -41
- package/dist/namespace-CDiM5Bcr.mjs +0 -1
- package/dist/namespace-h0HIuqx0.mjs +0 -1
- package/dist/package-C9wOiMK9.mjs +0 -1
- package/dist/package-OE9dMQsq.mjs +0 -1
- package/dist/primitive-runtime-1Z3JbRUj.mjs +0 -1
- package/dist/schema-DCJyzRHe.mjs +0 -1
- package/dist/schema-DOnJmAPw.mjs +0 -1
- package/dist/schemas-CSUwpaNm.mjs +0 -1
- package/dist/session-BnfsJoZi.mjs +0 -134
- package/dist/tools-B8d8Iqqx.mjs +0 -1
- package/dist/types-yTKQTAok.d.mts +0 -31
- /package/dist/{ajv-0JG5NFEd.mjs → ajv-BA2z5ztb.mjs} +0 -0
- /package/dist/{await-trigger-CHuOd5co.mjs → await-trigger-DREnXCEJ.mjs} +0 -0
- /package/dist/{base-orchestrator-D-S9v5VY.d.mts → base-orchestrator-M5mAB5-w.d.mts} +0 -0
- /package/dist/{cleanEnvForAdapter-BlpmyXYk.mjs → cleanEnvForAdapter-vZfPGi0X.mjs} +0 -0
- /package/dist/{clients-namespace-E97p_GKF.d.mts → clients-namespace-SFk7OTop.d.mts} +0 -0
- /package/dist/{config-namespace-R_34Wfps.d.mts → config-namespace-BzAvE2nY.d.mts} +0 -0
- /package/dist/{create-static-mount-B9Szo_7y.mjs → create-static-mount-BB1MIQ9J.mjs} +0 -0
- /package/dist/{cross-spawn-CTptpCy4.mjs → cross-spawn-BL6EvJBv.mjs} +0 -0
- /package/dist/{cursor-storage-YikwAZR5.mjs → cursor-storage-CmKjSvKY.mjs} +0 -0
- /package/dist/{definition-CYzWS2eR.d.mts → definition-BSghHJpQ.d.mts} +0 -0
- /package/dist/{definition-CvOuzWNT.d.mts → definition-q6iLw11H.d.mts} +0 -0
- /package/dist/{descriptor-to-package-9nrAH_D5.mjs → descriptor-to-package-CY8oc2gl.mjs} +0 -0
- /package/dist/{esm-CglYG5aA.mjs → esm-CQVFKEW5.mjs} +0 -0
- /package/dist/{extension-discovery-BD1-oNU_.d.mts → extension-discovery-CkV_VRdJ.d.mts} +0 -0
- /package/dist/{filesystem-service-BcwRp4k1.d.mts → filesystem-service-Ddngll0j.d.mts} +0 -0
- /package/dist/{index-DJQew2k-.d.mts → index-9IDJUJ4X.d.mts} +0 -0
- /package/dist/{index-CNYPKkyH.d.mts → index-BBvcP-P0.d.mts} +0 -0
- /package/dist/{index-DfUBcVtG.d.mts → index-BCKRUuI2.d.mts} +0 -0
- /package/dist/{index-Dn9Uum3F.d.mts → index-BMpRB6iE.d.mts} +0 -0
- /package/dist/{index-CdNDnxXR.d.mts → index-BbCjtc3h.d.mts} +0 -0
- /package/dist/{index-B6RGNugn.d.mts → index-BnQSPC6c.d.mts} +0 -0
- /package/dist/{index-DUPZKsd3.d.mts → index-BpXX9WZJ.d.mts} +0 -0
- /package/dist/{index-DUhXk_q6.d.mts → index-BpniJgxu.d.mts} +0 -0
- /package/dist/{index-ChG8ZUNP.d.mts → index-Bsp0O_sI.d.mts} +0 -0
- /package/dist/{index-CF7dnqQj.d.mts → index-Buo9H8RK.d.mts} +0 -0
- /package/dist/{index-9KnLzPYu.d.mts → index-BxFA1XcP.d.mts} +0 -0
- /package/dist/{index-AZ4iLe7O2.d.mts → index-C33Tq1ei2.d.mts} +0 -0
- /package/dist/{index--0CnhN0g.d.mts → index-C6BhKRnH.d.mts} +0 -0
- /package/dist/{index-BV8rSmDZ.d.mts → index-CDU_s69P.d.mts} +0 -0
- /package/dist/{index-BDlpFEsp2.d.mts → index-CGJjA-hR2.d.mts} +0 -0
- /package/dist/{index-DNGUXQGC.d.mts → index-Cz9JMjZK.d.mts} +0 -0
- /package/dist/{index-C-YBGCCG.d.mts → index-D0SUjZmU.d.mts} +0 -0
- /package/dist/{index-yNb7G73-.d.mts → index-D6Iyvz9T.d.mts} +0 -0
- /package/dist/{index-ziQTLYUO.d.mts → index-DOfq0qqv.d.mts} +0 -0
- /package/dist/{index-BYxgW2i0.d.mts → index-DSV1aFgK.d.mts} +0 -0
- /package/dist/{index-Dbwm5Y-Q.d.mts → index-Dsq2zKvu.d.mts} +0 -0
- /package/dist/{jsonl-transport-DBHQgcIm.mjs → jsonl-transport-C21tpVfe.mjs} +0 -0
- /package/dist/{lib-CaOdTS9F.mjs → lib-CNOQJtgs.mjs} +0 -0
- /package/dist/{namespace-DnZ4rS6T2.d.mts → namespace-B60mn8J-2.d.mts} +0 -0
- /package/dist/{namespace-DfYutvMT.d.mts → namespace-BBVtD1gu.d.mts} +0 -0
- /package/dist/{namespace-BaJJxBsI.d.mts → namespace-CHMszppN.d.mts} +0 -0
- /package/dist/{namespace-uGw5nK6d.d.mts → namespace-CqUGzG53.d.mts} +0 -0
- /package/dist/{namespace-13uMtVGj.d.mts → namespace-DRFJN-_z.d.mts} +0 -0
- /package/dist/{namespace-TfZGCy7N.d.mts → namespace-DzVf1hVH.d.mts} +0 -0
- /package/dist/{namespace-QTFnJWHC.d.mts → namespace-XTGCaSXj.d.mts} +0 -0
- /package/dist/{namespace-CTrNKkxY.d.mts → namespace-nlsvvMtD.d.mts} +0 -0
- /package/dist/{namespace-DkDvQJhB.d.mts → namespace-uuR0Fg5r.d.mts} +0 -0
- /package/dist/{orchestrator-shared-BZVeoRfr.d.mts → orchestrator-shared-D91Wk7z-.d.mts} +0 -0
- /package/dist/{out-CiFds_ap.mjs → out-C1JFb2Bp.mjs} +0 -0
- /package/dist/{provider-context-lfG0BpqX.mjs → provider-context-wp4VSJFI.mjs} +0 -0
- /package/dist/{providers-namespace-Cc9FQ-Zt.d.mts → providers-namespace-BqWYkydw.d.mts} +0 -0
- /package/dist/{schemas-BD-1NGmS.d.mts → schemas-B5ToLwIs.d.mts} +0 -0
- /package/dist/{schemas-Hy-lsBpg.d.mts → schemas-B77Gi8Xr.d.mts} +0 -0
- /package/dist/{schemas-BzK1I1eX.d.mts → schemas-C792eVAZ.d.mts} +0 -0
- /package/dist/{schemas-CYS6bkht.d.mts → schemas-Chyj6HuZ.d.mts} +0 -0
- /package/dist/{schemas-DL_bGYyZ.d.mts → schemas-DZUaRcYl.d.mts} +0 -0
- /package/dist/{schemas-DdZwjeF0.d.mts → schemas-Dv5FxHDT.d.mts} +0 -0
- /package/dist/{schemas-CsjB6gel.d.mts → schemas-Dyk7JuVl.d.mts} +0 -0
- /package/dist/{schemas-DFWGb4uj.d.mts → schemas-Kq33MTPY.d.mts} +0 -0
- /package/dist/{schemas-BFeP62V4.d.mts → schemas-lqvZ6UpK.d.mts} +0 -0
- /package/dist/{server-lifecycle-DVAbXQzg.d.mts → server-lifecycle-47mygK3E.d.mts} +0 -0
- /package/dist/{server-lifecycle-JTFuSJhg.mjs → server-lifecycle-Cg47L59Q.mjs} +0 -0
- /package/dist/{session-lineage-CxHc3_bm.d.mts → session-lineage-CKg6mErA.d.mts} +0 -0
- /package/dist/{shared-schemas-CKe2uN4-.mjs → shared-schemas-DYL7a-No.mjs} +0 -0
- /package/dist/{src-4_2jBceX.mjs → src-DedDL9iv.mjs} +0 -0
- /package/dist/{storage-namespace-I30TaZP7.d.mts → storage-namespace-BXmMUd7a.d.mts} +0 -0
- /package/dist/{storage-namespace-definition-ZNBL3v2h.d.mts → storage-namespace-definition-C3XbpiP8.d.mts} +0 -0
- /package/dist/{types-11QnNmpW.d.mts → types-5Gw3iVpK.d.mts} +0 -0
- /package/dist/{types-BKNpS4Xw.d.mts → types-B0BtvVAq.d.mts} +0 -0
- /package/dist/{types-BtMNh2FS.d.mts → types-D-bP8RRE.d.mts} +0 -0
- /package/dist/{window-registry-QD1rTk_f.d.mts → window-registry-CfEi_Ji4.d.mts} +0 -0
|
@@ -1,134 +0,0 @@
|
|
|
1
|
-
import{agents as e,sessions as t}from"./services/session/storage/schema.mjs";import{t as n}from"./schema-DCJyzRHe.mjs";import{n as r,r as i}from"./namespace-h0HIuqx0.mjs";import{SessionStorageNamespace as a,SessionStorageSubjects as o}from"./services/session/storage/namespace.mjs";import{A as s,D as c,E as l,F as u,O as d,P as f,T as p,b as m,d as h,f as g,j as _,k as v,u as ee,v as te}from"./handlers-Bev7-xjL.mjs";import{TurnStorageSubjects as y}from"./services/turn/namespace.mjs";import{AdapterRuntimeSubjects as b}from"./services/adapter-runtime/namespace.mjs";import{MessageStorageSubjects as x}from"./services/session/messages/namespace.mjs";import{n as S}from"./namespace-D6X67cUk.mjs";import{z as C}from"zod";import{MakaioBus as w,NoHandlerError as ne}from"@makaio/framework/bus";import{AdapterSubjects as T,AgentSubjects as E,CanonicalModelSubjects as re,CompressionModeSchema as ie,ForkTransformsSchema as ae,MessageRoutingSchema as oe,SessionContextSchema as se,SessionDiscoveredSchema as ce,SessionStorageSetRequestSchema as le,SessionStorageUpdateSchema as ue,SessionSubjects as D,compareMessageCursorAsc as de,compareMessageCursorDesc as fe,isCanonicalModelParseError as pe,messageToCursor as O,parseCanonicalModel as me}from"@makaio/framework/contracts";import{BaseService as he}from"@makaio/framework/service-base";import{index as ge,integer as _e,primaryKey as ve,sqliteTable as ye,text as k}from"drizzle-orm/sqlite-core";import{and as A,asc as j,count as M,desc as N,eq as P,gt as be,gte as xe,inArray as F,isNull as I,lt as Se,lte as Ce,or as we,sql as L}from"drizzle-orm";import{createStorageNamespaceDefinition as Te}from"@makaio/framework/storage";import{didAffectRows as R,sanitizeFtsQuery as Ee}from"@makaio/framework/storage/drizzle";import{ClientIdentityObservationSchema as De}from"@makaio/framework/contracts/client";import{ImportCursorStorageSubjects as Oe}from"@makaio/framework/adapters";function ke(e){return e.on(D.agent.added,async t=>{let n=await e.requestOptional(o.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(o.set,{sessionId:t.payload.sessionId,session:r}))})}function Ae(e){return e.on(D.agent.removed,async t=>{let n=await e.requestOptional(o.get,{sessionId:t.payload.sessionId}),r=n.handled?n.data.session:void 0;r&&(await e.requestOptional(u.updateStatus,{agentId:t.payload.agentId,status:`disposed`}),r.leadAgentId===t.payload.agentId&&(r.leadAgentId=void 0),r.lastActivityAt=Date.now(),await e.request(o.set,{sessionId:t.payload.sessionId,session:r}))})}function je(e){return[Me(e),Ne(e),Pe(e),Fe(e),Ie(e),Le(e),Re(e),ke(e.bus),Ae(e.bus)]}function Me(e){let{bus:t}=e;return t.on(D.create,async e=>{let{sessionId:n,parentSessionId:r,contextInheritance:i,forkPointMessageId:a,branchKind:s,forkTransforms:c,title:l,targetWorkingDirectory:u,executionTargetId:d,spawningToolCallId:f,originWindowId:p}=e.payload,m=n??crypto.randomUUID(),h=Date.now(),g={sessionId:m,createdAt:h,lastActivityAt:h,agents:[],status:`active`,title:l,parentSessionId:r,contextInheritance:i,forkPointMessageId:a,branchKind:s,forkTransforms:c,targetWorkingDirectory:u,executionTargetId:d,spawningToolCallId:f},_=await t.requestOptional(o.set,{sessionId:m,session:g,ifAbsent:!0});if(_.handled&&!_.data.success){e.setResult({sessionId:m});return}await t.emit(D.created,{sessionId:m,createdAt:g.createdAt,parentSessionId:r??null,branchKind:s??null,originWindowId:p??`server`}),e.setResult({sessionId:m})})}function Ne(e){let{bus:t}=e;return t.on(D.get,async e=>{let n=await t.requestOptional(o.get,{sessionId:e.payload.sessionId}),r=n.handled?n.data.session:null;e.setResult({session:r})})}function Pe(e){let{bus:t}=e;return t.on(D.list,async e=>{let{status:n,limit:r,offset:i,includePreview:a,executionTargetId:s}=e.payload,c=await t.requestOptional(o.list,{status:n??`all`,limit:r,offset:i,includePreview:a,executionTargetId:s}),l=c.handled?c.data.sessions:[],u=c.handled?c.data.total:0;e.setResult({sessions:l,total:u})})}function Fe(e){let{bus:t}=e;return t.on(D.close,async e=>{let{sessionId:n}=e.payload,r=await t.requestOptional(o.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(o.set,{sessionId:n,session:i}),await t.emit(D.closed,{sessionId:n}),e.setResult({success:!0})})}function Ie(e){let{bus:t}=e;return t.on(D.update,async e=>{let{sessionId:n,executionTargetId:r,approvalPolicyOverride:i,title:a}=e.payload,s=await t.requestOptional(o.update,{sessionId:n,executionTargetId:r,approvalPolicyOverride:i,title:a}),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`),e.length>0&&await t.emit(D.updated,{sessionId:n,changedProperties:e})}e.setResult({success:c})})}function Le(e){let{bus:t}=e;return t.on(D.archive,async e=>{let{sessionId:n}=e.payload,r=await t.requestOptional(o.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(o.set,{sessionId:n,session:i}),await t.emit(D.archived,{sessionId:n}),e.setResult({success:!0})})}function Re(e){let{bus:t}=e;return t.on(D.purge,async e=>{let{sessionId:n}=e.payload,i=await t.requestOptional(o.get,{sessionId:n}),a=i.handled?i.data.session:null;if(!a){e.setResult({success:!1,error:`Session not found`});return}if(a.status!==`archived`){e.setResult({success:!1,error:`Cannot purge session unless archived. Call close then archive first.`});return}let s=await t.requestOptional(o.list,{status:`all`}),c=s.handled?s.data.sessions:[];for(let e of c)e.parentSessionId===n&&await t.requestOptional(o.set,{sessionId:e.sessionId,session:{...e,parentSessionId:void 0}});let l=await t.requestOptional(r.getEvents,{sessionId:n,options:{limit:1}}),u=l.handled?l.data.totalCount:0;await t.requestOptional(r.deleteBySession,{sessionId:n}),await t.requestOptional(o.delete,{sessionId:n}),await t.emit(D.purged,{sessionId:n}),e.setResult({success:!0,eventsDeleted:u})})}var ze=class extends he{constructor(e=w){super(e)}async onInit(){for(let e of je({bus:this.bus}))this.addCleanup(e);await this.reconcileOrphanedTurns()}async reconcileOrphanedTurns(){let e=await this.bus.requestOptional(y.listActive,{});if(!e.handled)return;let{turns:t}=e.data;for(let e of t)try{let{transitioned:t}=await this.bus.request(y.complete,{turnId:e.turnId,status:`error`,expectedStatus:`active`,error:`process-restart`});t&&await this.bus.emit(D.turn.completed,{sessionId:e.sessionId,turnId:e.turnId,turnNumber:e.turnNumber,success:!1,error:`process-restart`})}catch(t){console.error(`[MakaioSessionService] Failed to reconcile orphaned turn ${e.turnId}:`,t)}}};function Be(e){return Error(`No adapter found for adapterName="${e}". Ensure adapter-runtime identity handlers are registered; adapter startup verifies live availability.`)}var Ve=class{bus;registry=new Map;cleanup;constructor(e){this.bus=e,this.cleanup=this.bus.on(T.initialized,e=>{this.registry.set(e.payload.adapterName,e.payload.adapterId)})}resolve(e){let t=this.registry.get(e);if(!t)throw Be(e);return t}async resolveAvailable(e){try{let{adapterId:t}=await this.bus.request(b.resolveId,{adapterName:e});return this.registry.set(e,t),t}catch{let t=this.registry.get(e);if(t)return t;throw Be(e)}}destroy(){this.cleanup?.(),this.cleanup=void 0,this.registry.clear()}};function He(e,t,n,i){return e.on(r.append,e=>{let{event:r}=e.payload,a=t.get(r.sessionId)??[];if(n.has(r.eventId)){e.setResult({success:!0});return}a.push(r),t.set(r.sessionId,a),n.set(r.eventId,i()),e.setResult({success:!0})})}function Ue(e,t,n){return e.on(r.getEvents,e=>{let{sessionId:r,options:i}=e.payload,a=t.get(r)??[],o=i?.order??`asc`,s=o===`desc`?[...a].reverse():a,c=0;if(i?.after&&/^\d+$/.test(i.after)){let t=Number(i.after),r=s.findIndex(e=>{let r=n.get(e.eventId)??-1;return o===`desc`?r<t:r>t});if(r===-1){e.setResult({events:[],nextCursor:null,totalCount:a.length});return}c=r}let l=s.slice(c);if(i?.types&&i.types.length>0){let e=new Set(i.types);l=l.filter(t=>e.has(t.type))}let u=i?.limit??100,d=l.length>u,f=l.slice(0,u),p=null;if(d&&f.length>0){let e=f[f.length-1],t=n.get(e.eventId);t!==void 0&&(p=t.toString())}e.setResult({events:f,nextCursor:p,totalCount:a.length})})}function We(e,t){return e.on(r.getByIds,e=>{let{sessionId:n,eventIds:r}=e.payload,i=t.get(n)??[],a=new Set(r),o=i.filter(e=>a.has(e.eventId));e.setResult({events:o})})}function Ge(e,t,n){return e.on(r.deleteBySession,e=>{let{sessionId:r}=e.payload,i=t.get(r);if(i)for(let e of i)n.delete(e.eventId);let a=i?.length??0;t.delete(r),e.setResult({success:!0,deletedCount:a})})}function Ke(e,t){return e.on(r.getEventsBySessions,e=>{let{sessionIds:n,types:r,limitPerSession:i=50}=e.payload;if(n.length===0||r.length===0){e.setResult({eventsBySession:{}});return}let a=new Set(r),o={};for(let e of n){let n=(t.get(e)??[]).filter(e=>a.has(e.type)).reverse().slice(0,i);n.length>0&&(o[e]=n)}e.setResult({eventsBySession:o})})}function qe(e){let t=new Map,n=new Map,r=1,i=[He(e,t,n,()=>r++),Ue(e,t,n),We(e,t),Ge(e,t,n),Ke(e,t)];return()=>i.forEach(e=>e())}const Je=[`sessionId`,`agentId`,`adapterId`,`messageId`,`turnId`];function Ye(e){let t=e.payload,n={};for(let[e,r]of Object.entries(t))Je.includes(e)||(n[e]=r);return n}function Xe(e){let t=JSON.parse(e.payload),n=e.type===`message`?e.messageId:e.originatingMessageId,r={...t,sessionId:e.sessionId,...e.agentId&&{agentId:e.agentId},...e.adapterId&&{adapterId:e.adapterId},...n&&{messageId:n},...e.type===`message`?{turnId:e.turnId??null}:e.turnId&&{turnId:e.turnId}};return{sessionId:e.sessionId,eventId:e.eventId,timestamp:e.timestamp,type:e.type,payload:r}}function Ze(e){switch(e.type){case`user_message.sent`:{let t=e.payload.content;return typeof t==`string`?t:(Array.isArray(t.blocks)?t.blocks:[t.blocks]).filter(e=>e.type===`text`).map(e=>e.content).join(`
|
|
2
|
-
`)}case`agent.added`:case`user_message.acknowledged`:case`user_message.completed`:case`turn.started`:case`turn.completed`:case`message`:case`branch.created`:case`branch.merged`:case`squash`:return null;default:return Qe(e.payload)}}function Qe(e){let t=e.contentText;if(typeof t==`string`&&t.length>0)return t;let n=e.summary;return typeof n==`string`&&n.length>0?n:null}function $e({bus:e,db:t}){return e.on(r.append,async e=>{let{event:n}=e.payload,r=`payload`in n&&`agentId`in n.payload?n.payload.agentId:null,a=`payload`in n&&`adapterId`in n.payload?n.payload.adapterId:null,o=`payload`in n&&`turnId`in n.payload?n.payload.turnId:null,s=`payload`in n&&`messageId`in n.payload?n.payload.messageId:null,c=n.type===`message`?s:null,l=n.type===`message`?null:s,u={sessionId:n.sessionId,eventId:n.eventId,timestamp:n.timestamp,type:n.type,agentId:r,adapterId:a,messageId:c,originatingMessageId:l,turnId:o,contentText:Ze(n),payload:JSON.stringify(Ye(n))};await t.insert(i).values(u).onConflictDoNothing(),e.setResult({success:!0})})}function et({bus:e,db:t}){return e.on(r.getEvents,async e=>{let{sessionId:n,options:r}=e.payload,a=[P(i.sessionId,n)],o=r?.order??`asc`;if(r?.after){let e=parseInt(r.after,10);!isNaN(e)&&e>0&&(o===`desc`?a.push(Se(i.id,e)):a.push(be(i.id,e)))}r?.types&&r.types.length>0&&a.push(F(i.type,r.types));let s=r?.limit??100,c=o===`desc`?N:j,l=await t.select().from(i).where(A(...a)).orderBy(c(i.id)).limit(s+1),u=l.length>s,d=u?l.slice(0,s):l,f=d.map(Xe),p=u&&d.length>0?d[d.length-1].id.toString():null;e.setResult({events:f,nextCursor:p})})}function tt({bus:e,db:t}){return e.on(r.getByIds,async e=>{let{sessionId:n,eventIds:r}=e.payload,a=(await t.select().from(i).where(A(P(i.sessionId,n),F(i.eventId,r))).orderBy(j(i.timestamp))).map(Xe);e.setResult({events:a})})}function nt({bus:e,db:t}){return e.on(r.deleteBySession,async e=>{let{sessionId:n}=e.payload,r=(await t.select().from(i).where(P(i.sessionId,n))).length;await t.delete(i).where(P(i.sessionId,n)),e.setResult({success:!0,deletedCount:r})})}function rt({bus:e,db:t}){return e.on(r.getEventsBySessions,async e=>{let{sessionIds:n,types:r,limitPerSession:a=50}=e.payload;if(n.length===0||r.length===0){e.setResult({eventsBySession:{}});return}let o={};for(let e of n){let n=await t.select().from(i).where(A(P(i.sessionId,e),F(i.type,r))).orderBy(N(i.timestamp)).limit(a);n.length>0&&(o[e]=n.map(Xe))}e.setResult({eventsBySession:o})})}function it(e,t,n){let r={bus:e,db:t},i=[$e(r),et(r),tt(r),nt(r),rt(r)];return()=>i.forEach(e=>e())}async function at(e,t){e.emit(x.stored,{message:structuredClone(t)});try{await e.request(r.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 z(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 ot(e){let{bus:t,db:r}=e;return t.on(x.append,async e=>{let{message:i,emitEvent:a}=e.payload,o=i.messageId??crypto.randomUUID(),s={...i,messageId:o,blocks:i.blocks??[]};await r.insert(n).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 at(t,s)})}function st(e){let{bus:t,db:r}=e;return t.on(x.getBySession,async e=>{let{sessionId:t,limit:i,after:a,includeAfter:o=!1,order:s=`asc`}=e.payload,c=s===`desc`?N:j,l=r.select().from(n).where(P(n.sessionId,t)).orderBy(c(n.timestamp),c(n.messageId));if(a){let e=s===`desc`?we(Se(n.timestamp,a.timestamp),A(P(n.timestamp,a.timestamp),o?Ce(n.messageId,a.messageId):Se(n.messageId,a.messageId))):we(be(n.timestamp,a.timestamp),A(P(n.timestamp,a.timestamp),o?xe(n.messageId,a.messageId):be(n.messageId,a.messageId)));l=r.select().from(n).where(A(P(n.sessionId,t),e)).orderBy(c(n.timestamp),c(n.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?O(p[p.length-1]):null;e.setResult({messages:p.map(z),nextCursor:m})})}function ct(e){let{bus:t,db:r}=e;return t.on(x.getByTurn,async e=>{let{turnId:t}=e.payload,i=await r.select().from(n).where(P(n.turnId,t)).orderBy(j(n.timestamp));e.setResult({messages:i.map(z)})})}function lt(e){let{bus:t,db:r}=e;return t.on(x.get,async e=>{let{messageId:t}=e.payload,[i]=await r.select().from(n).where(P(n.messageId,t)).limit(1);e.setResult({message:i?z(i):null})})}function ut(e){let{bus:t,db:n}=e;return t.on(x.search,async e=>{let{query:t,sessionId:r,limit:i}=e.payload,a=i??50;if(!t.trim()){e.setResult({messages:[],total:0});return}let o=Ee(t),s=L`
|
|
3
|
-
m.message_id AS messageId,
|
|
4
|
-
m.turn_id AS turnId,
|
|
5
|
-
m.session_id AS sessionId,
|
|
6
|
-
m.role AS role,
|
|
7
|
-
m.content_text AS contentText,
|
|
8
|
-
m.blocks AS blocks,
|
|
9
|
-
m.agent_id AS agentId,
|
|
10
|
-
m.adapter_session_id AS adapterSessionId,
|
|
11
|
-
m.adapter_message_id AS adapterMessageId,
|
|
12
|
-
m.timestamp AS timestamp,
|
|
13
|
-
m.edit_of AS editOf,
|
|
14
|
-
m.origin AS origin
|
|
15
|
-
`,c=r?L`
|
|
16
|
-
SELECT ${s}
|
|
17
|
-
FROM messages m
|
|
18
|
-
JOIN messages_fts fts ON m.rowid = fts.rowid
|
|
19
|
-
WHERE messages_fts MATCH ${o}
|
|
20
|
-
AND fts.session_id = ${r}
|
|
21
|
-
ORDER BY bm25(messages_fts)
|
|
22
|
-
LIMIT ${a}
|
|
23
|
-
`:L`
|
|
24
|
-
SELECT ${s}
|
|
25
|
-
FROM messages m
|
|
26
|
-
JOIN messages_fts fts ON m.rowid = fts.rowid
|
|
27
|
-
WHERE messages_fts MATCH ${o}
|
|
28
|
-
ORDER BY bm25(messages_fts)
|
|
29
|
-
LIMIT ${a}
|
|
30
|
-
`,l=await n.all(c),u=r?L`
|
|
31
|
-
SELECT COUNT(*) as count FROM messages_fts
|
|
32
|
-
WHERE messages_fts MATCH ${o}
|
|
33
|
-
AND session_id = ${r}
|
|
34
|
-
`:L`
|
|
35
|
-
SELECT COUNT(*) as count FROM messages_fts
|
|
36
|
-
WHERE messages_fts MATCH ${o}
|
|
37
|
-
`,[d]=await n.all(u),f=d?.count??0;e.setResult({messages:l.map(z),total:f})})}async function dt(e,t,n,r){let i=L`
|
|
38
|
-
m.message_id AS message_id,
|
|
39
|
-
fts.session_id AS session_id,
|
|
40
|
-
-bm25(messages_fts) AS score,
|
|
41
|
-
snippet(messages_fts, 1, '<mark>', '</mark>', '...', 40) AS excerpt
|
|
42
|
-
FROM messages_fts fts
|
|
43
|
-
JOIN messages m ON m.rowid = fts.rowid`;return r===void 0?e.all(L`
|
|
44
|
-
SELECT ${i}
|
|
45
|
-
WHERE messages_fts MATCH ${t}
|
|
46
|
-
ORDER BY score DESC
|
|
47
|
-
LIMIT ${n}
|
|
48
|
-
`):e.all(L`
|
|
49
|
-
SELECT ${i}
|
|
50
|
-
WHERE messages_fts MATCH ${t}
|
|
51
|
-
AND fts.session_id = ${r}
|
|
52
|
-
ORDER BY score DESC
|
|
53
|
-
LIMIT ${n}
|
|
54
|
-
`)}async function ft(e,t,n){return(await(n===void 0?e.all(L`
|
|
55
|
-
SELECT COUNT(*) AS total
|
|
56
|
-
FROM messages_fts
|
|
57
|
-
WHERE messages_fts MATCH ${t}
|
|
58
|
-
`):e.all(L`
|
|
59
|
-
SELECT COUNT(*) AS total
|
|
60
|
-
FROM messages_fts
|
|
61
|
-
WHERE messages_fts MATCH ${t}
|
|
62
|
-
AND session_id = ${n}
|
|
63
|
-
`)))[0]?.total??0}function pt(e){let{bus:t,db:n}=e;return t.on(x.ftsSearch,async e=>{let{query:t,sessionId:r,limit:i=20}=e.payload,a=t.trim();if(!a){e.setResult({results:[],total:0});return}let o=Ee(a),[s,c]=await Promise.all([dt(n,o,i,r),ft(n,o,r)]);e.setResult({results:s.map(e=>({messageId:e.message_id,sessionId:e.session_id,score:e.score,excerpt:e.excerpt})),total:c})})}function mt(e){let{bus:t,db:r}=e;return t.on(x.getByAdapterMessageId,async e=>{let{adapterMessageId:t}=e.payload,[i]=await r.select().from(n).where(P(n.adapterMessageId,t)).limit(1);e.setResult({message:i?z(i):null})})}function ht(e){let{bus:t,db:r}=e;return t.on(x.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 r.select({messageId:n.messageId}).from(n).where(P(n.adapterMessageId,i)).limit(1);if(m){e.setResult({messageId:m.messageId,created:!1});return}let h=crypto.randomUUID();await r.insert(n).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}),e.setResult({messageId:h,created:!0}),await at(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 gt(e,t,n){let r={bus:e,db:t},i=[ot(r),st(r),ct(r),lt(r),ut(r),pt(r),ht(r),mt(r)];return()=>i.forEach(e=>e())}function _t(e,t){return de(O(e),O(t))}function vt(e,t){return fe(O(e),O(t))}function yt(e){let t=new Map,n=new Map,r=new Map,i=new Map,a=bt(t,n,r,i),o=[xt(e,t,a),St(e,t,n),Ct(e,t,r),wt(e,t),Tt(e,t),Et(e,i,a),Dt(e,t,n,r,i)];return()=>o.forEach(e=>e())}function bt(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&&r.set(i.adapterMessageId,i.messageId)}}function xt(e,t,n){return e.on(x.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 at(e,o)})}function St(e,t,n){return e.on(x.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`?vt:_t,u=c.map(e=>t.get(e)).filter(e=>!!e).sort(l);a&&(u=u.filter(e=>{let t=s===`desc`?fe(O(e),a):de(O(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?O(p[p.length-1]):null;e.setResult({messages:p,nextCursor:m})})}function Ct(e,t,n){return e.on(x.getByTurn,async e=>{let{turnId:r}=e.payload,i=(n.get(r)??[]).map(e=>t.get(e)).filter(e=>!!e).sort(_t);e.setResult({messages:i})})}function wt(e,t){return e.on(x.get,async e=>{e.setResult({message:t.get(e.payload.messageId)??null})})}function Tt(e,t){return e.on(x.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(_t),e.setResult({messages:c.slice(0,a),total:c.length})})}function Et(e,t,n){return e.on(x.upsertByAdapterMessageId,async r=>{let{adapterMessageId:i,sessionId:a,turnId:o,role:s,contentText:c,blocks:l,agentId:u,adapterSessionId:d,timestamp:f,origin:p}=r.payload,m=t.get(i);if(m){r.setResult({messageId:m,created:!1});return}let h=crypto.randomUUID(),g={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};n(g),r.setResult({messageId:h,created:!0}),await at(e,g)})}function Dt(e,t,n,r,i){return e.on(o.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)}n.adapterMessageId&&i.delete(n.adapterMessageId)}}n.delete(a)})}const B=ye(`message_routing`,{messageId:k(`message_id`).notNull().references(()=>n.messageId,{onDelete:`cascade`}),agentId:k(`agent_id`).notNull(),status:k(`status`,{enum:[`sent`,`acknowledged`,`completed`]}).notNull(),timestamp:_e(`timestamp`).notNull(),error:k(`error`)},e=>[ve({columns:[e.messageId,e.agentId,e.status]}),ge(`idx_routing_agent`).on(e.agentId,e.timestamp)]),Ot=Te(`messageRouting`,{schemas:{record:{request:oe,response:C.object({success:C.boolean()})},getByMessage:{request:C.object({messageId:C.string()}),response:C.object({routing:C.array(oe)})},getCompleted:{request:C.object({messageId:C.string()}),response:C.object({agentIds:C.array(C.string())})},isComplete:{request:C.object({messageId:C.string(),targetAgentIds:C.array(C.string())}),response:C.object({complete:C.boolean(),pending:C.array(C.string())})}},extensions:{drizzle:{messageRouting:B}}}),V=Ot.subjects;function kt(e){return{messageId:e.messageId,agentId:e.agentId,status:e.status,timestamp:e.timestamp,error:e.error??void 0}}function At(e,t,n){let r=[];return r.push(e.on(V.record,async e=>{let{messageId:n,agentId:r,status:i,timestamp:a,error:o}=e.payload;await t.insert(B).values({messageId:n,agentId:r,status:i,timestamp:a,error:o??null}).onConflictDoUpdate({target:[B.messageId,B.agentId,B.status],set:{timestamp:a,error:o??null}}),e.setResult({success:!0})})),r.push(e.on(V.getByMessage,async e=>{let{messageId:n}=e.payload,r=await t.select().from(B).where(P(B.messageId,n));e.setResult({routing:r.map(kt)})})),r.push(e.on(V.getCompleted,async e=>{let{messageId:n}=e.payload,r=await t.select().from(B).where(A(P(B.messageId,n),P(B.status,`completed`)));e.setResult({agentIds:r.map(e=>e.agentId)})})),r.push(e.on(V.isComplete,async e=>{let{messageId:n,targetAgentIds:r}=e.payload,i=await t.select().from(B).where(A(P(B.messageId,n),P(B.status,`completed`))),a=new Set(i.map(e=>e.agentId)),o=r.filter(e=>!a.has(e));e.setResult({complete:o.length===0,pending:o})})),()=>r.forEach(e=>e())}var jt=class{byAgent=new Map;add(e){let t=this.byAgent.get(e.agentId);t?(t.inputTokens+=e.inputTokens,t.outputTokens+=e.outputTokens):this.byAgent.set(e.agentId,{inputTokens:e.inputTokens,outputTokens:e.outputTokens})}snapshot(){if(this.byAgent.size===0)return;let e=0,t=0,n={};for(let[r,i]of this.byAgent)e+=i.inputTokens,t+=i.outputTokens,n[r]={...i};return{total:{inputTokens:e,outputTokens:t},byAgent:n}}flush(){let e=this.snapshot();return this.byAgent.clear(),e}clear(){this.byAgent.clear()}},Mt=class{bus;activeTurns=new Map;usageAccumulators=new Map;completingSessions=new Set;bufferedUsageDuringCompletion=new Map;syntheticTurnCounters=new Map;cleanups=[];constructor(e){this.bus=e}async createTurn(e,t,n,r){let i=await this.bus.requestOptional(y.create,{sessionId:e,...r!==void 0&&{turnId:r}}),a,o;if(i.handled)a=i.data.turn.turnId,o=i.data.turn.turnNumber;else{a=r??crypto.randomUUID();let t=(this.syntheticTurnCounters.get(e)??0)+1;this.syntheticTurnCounters.set(e,t),o=t}let s=new _({sessionId:e,agentIds:t,turnId:a,turnNumber:o,initiator:n});return this.activeTurns.set(e,s),this.usageAccumulators.set(e,new jt),s}registerCompletionHandlers(e){this.cleanups.push(this.bus.on(E.usage,e=>{let{agentId:t,turnId:n,inputTokens:r,outputTokens:i}=e.payload;if(!n){console.warn(`[SessionTurnManager] Dropping usage event without turnId (agentId=${t}).`);return}let a=this.findActiveTurnByTurnId(n);if(!a){console.warn(`[SessionTurnManager] Dropping usage for inactive turn ${n} (agentId=${t}).`);return}if(!a.hasAgent(t)){console.warn(`[SessionTurnManager] Dropping usage for turn ${n}: agent ${t} is not part of the turn.`);return}if(this.completingSessions.has(a.sessionId)){this.bufferUsageDuringCompletion(a.sessionId,{agentId:t,inputTokens:r,outputTokens:i});return}this.usageAccumulators.get(a.sessionId)?.add({agentId:t,inputTokens:r,outputTokens:i})})),this.cleanups.push(this.bus.on(E.complete,async t=>{let{agentId:n,outcome:r,error:i}=t.payload,a=r!==`error`;await this.handleAgentCompletion(n,a,a?void 0:i,e)}))}async completeTurn(e,t){if(this.completingSessions.has(e.sessionId))return;this.completingSessions.add(e.sessionId);let n=this.usageAccumulators.get(e.sessionId),r=n?.snapshot();try{await this.bus.requestOptional(y.complete,{turnId:e.turnId,status:t.success?`completed`:`error`,error:t.errors.length>0?t.errors.join(`; `):void 0,...r!==void 0&&{usage:r}});let i=this.bufferedUsageDuringCompletion.get(e.sessionId)??[];if(i.length>0){for(let e of i)n?.add(e);this.bufferedUsageDuringCompletion.delete(e.sessionId);let r=n?.snapshot();await this.bus.requestOptional(y.complete,{turnId:e.turnId,status:t.success?`completed`:`error`,error:t.errors.length>0?t.errors.join(`; `):void 0,...r!==void 0&&{usage:r}})}}catch(t){throw this.completingSessions.delete(e.sessionId),console.error(`[SessionTurnManager] Failed to persist completion for turn ${e.turnId}:`,t),t}n?.clear(),this.activeTurns.delete(e.sessionId),this.usageAccumulators.delete(e.sessionId),this.completingSessions.delete(e.sessionId),await this.bus.emit(D.turn.completed,{sessionId:e.sessionId,turnId:e.turnId,turnNumber:e.turnNumber,success:t.success,error:t.errors.length>0?t.errors.join(`; `):void 0,initiator:e.initiator})}getActiveTurn(e){return this.activeTurns.get(e)}getActiveTurnsMap(){return this.activeTurns}findActiveTurnByTurnId(e){for(let t of this.activeTurns.values())if(t.turnId===e)return t}destroy(){for(let e of this.cleanups)e();this.cleanups.length=0,this.activeTurns.clear(),this.usageAccumulators.clear(),this.completingSessions.clear(),this.bufferedUsageDuringCompletion.clear(),this.syntheticTurnCounters.clear()}async handleAgentCompletion(e,t,n,r){let i=l(this.activeTurns,e);if(!i)return;let a=t?i.markAgentCompleted(e):i.markAgentErrored(e,n??`Unknown error`);for(let r of i.messageIds)await this.bus.emit(D.user_message.completed,{sessionId:i.sessionId,turnId:i.turnId,turnNumber:i.turnNumber,messageId:r,agentId:e,outcome:t?`completed`:`error`,error:n});a.turnComplete&&await r(i,a.result)}bufferUsageDuringCompletion(e,t){let n=this.bufferedUsageDuringCompletion.get(e)??[];n.push(t),this.bufferedUsageDuringCompletion.set(e,n)}},Nt=class{bus;turnManager;adapterRegistry;cleanups=[];constructor(e=w,t){this.bus=e,this.turnManager=new Mt(e),this.adapterRegistry=new Ve(e),this.registerSendMessageHandler(),this.turnManager.registerCompletionHandlers(this.completeTurn.bind(this))}registerSendMessageHandler(){this.cleanups.push(this.bus.on(D.sendMessage,async e=>{let{sessionId:t,message:n,agentIds:r,deliveryMode:i,agent:a,source:o,origin:l}=e.payload,u=p(o,e.payload.extensionId),f=e.payload.sessionContext?se.parse(e.payload.sessionContext):void 0,{sessionId:m,session:g}=await c(this.bus,t,f,e.payload.originWindowId);if(g.agents.length===0){let e=await this.resolveInitialAdapterSelection(a,m,n,f),t=await this.resolveAdapterName(e,m),r=h(e.adapterId)??await this.adapterRegistry.resolveAvailable(t),i=await this.bus.request(T.startAgent,{adapterId:r,sessionId:m,role:`lead`,...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},...f!==void 0&&{sessionContext:f}});if(!i.success)throw Error(`[SessionOrchestrator.sendMessage] Failed to start agent (sessionId=${m}, adapterName=${t}): ${i.message}`);let o=Date.now();g.agents.push({agentId:i.agentId,adapterId:i.adapterId,adapterName:t,sessionId:m,role:`lead`,status:`idle`,createdAt:o,lastActivityAt:o}),g.leadAgentId=i.agentId}let _=d(g,r);if(_.length===0)throw Error(`[SessionOrchestrator.sendMessage] No valid target agents found (sessionId=${m})`);let y=new Set;for(let e of _){let t=await this.bus.requestOptional(T.getAgent,{agentId:e.agentId,adapterId:e.adapterId});t.handled&&t.data.agent===null&&y.add(e.agentId)}let b;if(y.size>0){b=await te(this.bus,g);for(let e of _)y.has(e.agentId)&&await this.bus.requestOptional(T.rehydrateAgent,{agentId:e.agentId,adapterId:e.adapterId})}let S=this.turnManager.getActiveTurn(m),C=!S;S||=await this.turnManager.createTurn(m,_.map(e=>e.agentId),u,e.payload.turnId);let w=crypto.randomUUID();S.addMessage(w);let ne=s(n);this.bus.requestOptional(x.append,{message:{messageId:w,turnId:S.turnId,sessionId:m,role:`user`,contentText:v(n),blocks:ne,timestamp:Date.now(),...l!==void 0&&{origin:l}}}).catch(e=>{console.warn(`[SessionOrchestrator] Failed to store user message`,{sessionId:m,messageId:w,error:e instanceof Error?e.message:String(e)})});for(let e of _)this.bus.requestOptional(V.record,{messageId:w,agentId:e.agentId,status:`sent`,timestamp:Date.now()}).catch(t=>{console.warn(`[SessionOrchestrator] Failed to record message routing`,{sessionId:m,messageId:w,agentId:e.agentId,error:t instanceof Error?t.message:String(t)})});C&&await this.bus.emit(D.turn.started,{sessionId:m,turnId:S.turnId,turnNumber:S.turnNumber,messageId:w,agentIds:[...S.agentIds],initiator:S.initiator}),await this.bus.emit(D.user_message.sent,{sessionId:m,turnId:S.turnId,turnNumber:S.turnNumber,messageId:w,content:n,agentIds:_.map(e=>e.agentId),...o!==void 0&&{source:o},...l!==void 0&&{origin:l}});let E=b?{...f,...b}:f;await ee(this.bus,g,_,n,w,S,i,this.completeTurn.bind(this),E,e.payload.responseSchema),e.setResult({messageId:w,turnId:S.turnId,sessionId:m})}))}async completeTurn(e,t){await this.turnManager.completeTurn(e,t)}destroy(){for(let e of this.cleanups)e();this.cleanups.length=0,this.turnManager.destroy(),this.adapterRegistry.destroy()}async resolveAdapterName(e,t){let n=h(e.adapterName),r=h(e.adapterId);if(!n&&!r)throw Error(`[SessionOrchestrator.sendMessage] adapterName or adapterId required when session has no agents (sessionId=${t})`);return r?g(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=me(e.model);if(pe(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(re.resolve,{parsed:i,context:{sessionId:t,promptText:v(n),...r===void 0?{}:{sessionContext:r}}});return{...e,...a,kind:`adapter`,providerConfigId:e.providerConfigId??a.providerConfigId}}},Pt=class{bus;constructor(e){this.bus=e}async getTurnSoFarContext(e){try{let{messages:t}=await this.bus.request(x.getByTurn,{turnId:e});return this.convertSessionMessagesToMessages(t)}catch(e){return e instanceof ne||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 Ft(e){let{bus:t}=e;return t.on(D.getStatusCounts,async e=>{e.payload;let{all:n,active:r,closed:i,archived:a,discovered:s}=await t.request(o.getStatusCounts,{});e.setResult({all:n,active:r,closed:i,archived:a,discovered:s})})}function It(e){let{bus:t}=e;return t.on(D.resume,async e=>{let{sessionId:n}=e.payload,{session:r}=await t.request(o.get,{sessionId:n});if(!r||r.status!==`closed`){e.setResult({success:!1});return}r.status=`active`,r.lastActivityAt=Date.now(),await t.request(o.set,{sessionId:n,session:r}),await t.emit(D.resumed,{sessionId:n}),e.setResult({success:!0})})}function Lt(e){return e.on(S.listActions,e=>{let t=m.getAll().map(e=>({id:e.id,label:e.label,description:e.description,category:e.category}));e.setResult({actions:t})})}const Rt=[{actionId:`strip-reasoning`},{actionId:`strip-tool-outputs`}];function zt(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 Bt=class{bus;agentToSession=new Map;agentContext=new Map;agentBlocks=new Map;cleanups=[];constructor(e=w){this.bus=e,this.registerHandlers()}registerHandlers(){this.registerMappingHandlers(),this.registerTurnTrackingHandlers(),this.registerBlockAccumulationHandlers()}registerMappingHandlers(){this.cleanups.push(this.bus.on(D.agent.added,e=>{this.agentToSession.set(e.payload.agentId,e.payload.sessionId)})),this.cleanups.push(this.bus.on(D.closed,e=>{for(let[t,n]of this.agentToSession)n===e.payload.sessionId&&(this.agentToSession.delete(t),this.agentContext.delete(t),this.agentBlocks.delete(t))}))}registerTurnTrackingHandlers(){this.cleanups.push(this.bus.on(D.turn.started,e=>{let{sessionId:t,turnId:n,agentIds:r}=e.payload;for(let e of r){let r=this.agentContext.get(e);this.agentContext.set(e,{...r,sessionId:t,turnId:n}),this.agentBlocks.set(e,[])}})),this.cleanups.push(this.bus.on(D.user_message.acknowledged,e=>{let t=this.agentContext.get(e.payload.agentId);this.agentContext.set(e.payload.agentId,{...t,sessionId:e.payload.sessionId,turnId:e.payload.turnId}),this.agentBlocks.has(e.payload.agentId)||this.agentBlocks.set(e.payload.agentId,[])}))}registerBlockAccumulationHandlers(){this.cleanups.push(this.bus.on(E.message,e=>{let t=this.agentBlocks.get(e.payload.agentId);t&&t.push({type:`text`,content:e.payload.content})})),this.cleanups.push(this.bus.on(E.reasoning,e=>{let t=this.agentBlocks.get(e.payload.agentId);t&&t.push({type:`reasoning`,content:e.payload.content})})),this.cleanups.push(this.bus.on(E.tool.use,e=>{let t=this.agentBlocks.get(e.payload.agentId);t&&t.push({type:`tool_call`,toolCallId:e.payload.toolCallId,name:e.payload.toolName,args:e.payload.args??{}})})),this.cleanups.push(this.bus.on(E.tool.completed,e=>{let t=this.agentBlocks.get(e.payload.agentId);if(t){let n=e.payload.result,r=typeof n==`string`?n:JSON.stringify(n);t.push({type:`tool_output`,toolCallId:e.payload.toolCallId,output:r,isError:e.payload.success===!1})}})),this.cleanups.push(this.bus.on(E.complete,async e=>{if(e.payload._import){this.agentBlocks.delete(e.payload.agentId);return}let{agentId:t,adapterSessionId:n,outcome:r,error:i,message:a,structuredOutputValidation:o}=e.payload;await this.storeAssistantMessage(t,r===`error`?void 0:n,r===`error`?i:void 0,o===void 0?void 0:{content:a})}))}async storeAssistantMessage(e,t,n,r){let i=this.agentContext.get(e);if(!i?.turnId)return;let a=r===void 0?this.agentBlocks.get(e)??[]:r.content===void 0?[]:[{type:`text`,content:r.content}];if(a.length===0&&!n){this.agentBlocks.delete(e);return}let o=a.filter(e=>e.type===`text`).map(e=>e.content).join(`
|
|
64
|
-
`),s=crypto.randomUUID();try{if(!(await this.bus.requestOptional(x.append,{message:{messageId:s,turnId:i.turnId,sessionId:i.sessionId,role:`assistant`,contentText:o||(n?`[Error: ${n}]`:``),blocks:a,agentId:e,adapterSessionId:t,timestamp:Date.now()}})).handled){this.agentBlocks.delete(e);return}let r=await this.bus.requestOptional(x.getByTurn,{turnId:i.turnId});if(r.handled){let t=r.data.messages.find(e=>e.role===`user`);t&&await this.bus.requestOptional(V.record,{messageId:t.messageId,agentId:e,status:`completed`,timestamp:Date.now(),error:n})}}catch(e){console.error(`[SessionBridge] Failed to store assistant message:`,e)}this.agentBlocks.delete(e)}destroy(){for(let e of this.cleanups)e();this.cleanups.length=0,this.agentToSession.clear(),this.agentContext.clear(),this.agentBlocks.clear()}},Vt=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(D.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(D.fork,{sourceSessionId:this._sessionId,name:e.reason})).sessionId}async merge(e,t){await this.bus.request(D.merge,{parentSessionId:this._sessionId,childSessionId:e,summary:t,source:`extension`,extensionId:this._extensionId})}async abandon(e){await this.bus.request(D.abandon,{parentSessionId:this._sessionId,childSessionId:e,source:`extension`,extensionId:this._extensionId})}async requestCompression(e){await this.bus.emit(D.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(D.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(D.getChildren,{sessionId:this._sessionId})).children.map(e=>e.sessionId)}};function Ht(e,t,n,r,i,a){return new Vt(e,t,n,r,i,a)}function Ut(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=Ut(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(D.clientAccount.changed,a)).catch(e=>{console.error(`[SessionStorage] Failed to emit session.clientAccount.changed:`,e)})})}function W(e){switch(e){case`fork`:return`fork`;case`subagent`:return`subagent`;case`compress`:return`compress`;case`root`:return;default:return}}function Wt(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 Gt(){let e=0;return()=>{let t=Date.now();return e=t>e?t:e+1,e}}const Kt=Gt();function qt(e,t,n){n!==void 0&&(e[t]=n)}function Jt(e,t,n){let r=e.startedAt??n;return{sessionId:t,createdAt:r,lastActivityAt:r,agents:[],status:`discovered`,branchKind:W(e.kind),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:`discovered`,forkPointMessageId:e.forkPointMessageId??void 0}}function Yt(e,t,n){let r=e.importStatus??`discovered`;r===`discovered`&&(e.status=`discovered`),e.isImported=!0,e.importStatus=r,e.adapterName??=t.source,e.adapterSessionId??=t.externalSessionId,e.source??=t.source,e.discoveredAt??=n}function Xt(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),t.forkPointMessageId!==null&&(e.forkPointMessageId=t.forkPointMessageId),t.parentAdapterSessionId!==null&&(e.parentExternalSessionId=t.parentAdapterSessionId);let n=W(t.kind);n!==void 0&&(e.branchKind=n),qt(e,`adapterId`,t.adapterId),qt(e,`clientId`,t.clientId)}function Zt(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 Qt(e,t,n){let r=e.discoveredAt;Yt(e,t,n),Xt(e,t),Zt(e,t,r)}function $t(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 en(e,t,n){if(n){e.emit(D.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(D.updated,{sessionId:t.sessionId,changedProperties:[`source`,`targetWorkingDirectory`,`title`]}).catch(e=>console.error(`[SessionStorage] Failed to emit session.updated:`,e))}function tn(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 nn(e,t,n){e.emit(D.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(D.import.completed,{sessionId:t.sessionId,adapterSessionId:t.adapterSessionId,source:r}).catch(e=>console.error(`[SessionStorage] Failed to emit session.import.completed:`,e))}function rn(e){let{bus:t,store:n,cloneSession:r,populateAgents:i}=e;return[t.on(o.importUpsert,e=>{let r=e.payload,i=Array.from(n.values()).find(e=>e.adapterSessionId===r.externalSessionId&&e.source===r.source),a=Kt(),o=i===void 0,s=i??Jt(r,crypto.randomUUID(),a);i?(Qt(i,r,a),i.parentExternalSessionId!==void 0&&i.parentSessionId===void 0&&$t(n,i)):(n.set(s.sessionId,s),$t(n,s)),en(t,s,o),e.setResult({sessionId:s.sessionId,created:o})}),t.on(o.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(o.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(o.countBySource,e=>{let t=Array.from(n.values()).filter(t=>t.isImported===!0&&t.source===e.payload.source);e.setResult(tn(t))}),t.on(o.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}),nn(t,r,i)})]}async function an(e,t){let n=await e.requestOptional(u.listBySession,{sessionId:t});return n.handled?n.data.agents:[]}function G(e){return structuredClone(e)}function K(e,t,n){n!==void 0&&(e[t]=n)}function on(e,t,n){n!==void 0&&(e[t]=n??void 0)}function sn(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 cn(e,t){K(e,`status`,t.status),K(e,`parentSessionId`,t.parentSessionId),K(e,`contextInheritance`,t.contextInheritance),K(e,`rootSessionId`,t.rootSessionId),K(e,`forkPointMessageId`,t.forkPointMessageId),K(e,`branchKind`,t.branchKind),K(e,`isOrchestrated`,t.isOrchestrated),K(e,`clientId`,t.clientId),K(e,`clientAccountId`,t.clientAccountId),K(e,`lastClientIdentityObservation`,t.lastClientIdentityObservation),K(e,`title`,t.title),K(e,`targetWorkingDirectory`,t.targetWorkingDirectory),K(e,`createdAt`,t.createdAt),K(e,`lastActivityAt`,t.lastActivityAt),on(e,`executionTargetId`,t.executionTargetId),on(e,`approvalPolicyOverride`,t.approvalPolicyOverride),t.spawningToolCallId===null?e.spawningToolCallId=void 0:t.spawningToolCallId!==void 0&&e.spawningToolCallId===void 0&&(e.spawningToolCallId=t.spawningToolCallId)}function ln(e,t){return e.on(o.list,async n=>{let{status:r=`all`,limit:i,offset:a=0,includePreview:o=!1,executionTargetId:s}=n.payload,c=sn(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=>({...G(t),agents:await an(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(o.update,async n=>{let r=structuredClone(ue.request.parse(n.payload)),i=t.get(r.sessionId);if(!i){n.setResult({success:!1,clientAccountChanged:!1});return}let a=G(i);H(a,{sessionId:i.sessionId,clientId:r.clientId??i.clientId,clientAccountId:r.clientAccountId??i.clientAccountId,lastClientIdentityObservation:r.lastClientIdentityObservation??i.lastClientIdentityObservation}),cn(i,r),n.setResult({success:!0,clientAccountChanged:(a.clientAccountId??null)!==(i.clientAccountId??null)}),U(e,a,G(i))})}function dn(e){let t=new Map,n=[];return n.push(e.on(o.get,async n=>{let r=t.get(n.payload.sessionId);if(!r){n.setResult({session:null});return}let i=await an(e,n.payload.sessionId);n.setResult({session:{...G(r),agents:i}})})),n.push(e.on(o.set,async n=>{let{sessionId:r,session:i,ifAbsent:a}=le.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?G(s):null;H(s,o),t.set(r,o),n.setResult({success:!0,clientAccountChanged:(c?.clientAccountId??null)!==(o.clientAccountId??null)}),U(e,c,G(o))})),n.push(e.on(o.delete,async e=>{t.delete(e.payload.sessionId),e.setResult({success:!0}),await e.next()})),n.push(ln(e,t)),n.push(e.on(o.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(o.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(fn(e,t)),n.push(...rn({bus:e,store:t,populateAgents:an,cloneSession:G})),()=>n.forEach(e=>e())}function fn(e,t){return e.on(o.getByAdapterSessionId,async n=>{let{adapterSessionId:r,source:i}=n.payload,a=Array.from(t.values()).filter(e=>e.adapterSessionId!==void 0&&e.adapterSessionId===r&&(i===void 0||e.source===i)),o=a[0];if(a.length!==1||o===void 0){n.setResult({session:null});return}let s=await e.requestOptional(u.listBySession,{sessionId:o.sessionId}),c=s.handled?s.data.agents:[];n.setResult({session:{...G(o),agents:c}})})}function pn(e){let n=e?.clientId??null,r=e?.clientAccountId??null,i=e?.lastClientIdentityObservation??null;return A(n===null?I(t.clientId):P(t.clientId,n),r===null?I(t.clientAccountId):P(t.clientAccountId,r),i===null?I(t.lastClientIdentityObservation):P(t.lastClientIdentityObservation,i))}const{agents:q}=f.extensions.drizzle;function J(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,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?ie.parse(e.compressionMode):void 0}}function mn(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,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 hn(e){let t;for(let n=e.length-1;n>=0;--n)try{e[n]?.()}catch(e){t??=e}if(t)throw t}function gn(e){let{bus:t,db:n}=e;return t.on(u.get,async e=>{let[t]=await n.select().from(q).where(P(q.agentId,e.payload.agentId)).limit(1);e.setResult({agent:t?J(t):null})})}function _n(e){let{bus:t,db:n}=e;return t.on(u.set,async e=>{let{agent:t}=e.payload,r=mn(t),i=await n.insert(q).values(r).onConflictDoUpdate({target:q.agentId,set:r});e.setResult({success:R(i)})})}function vn(e){let{bus:t,db:n}=e;return t.on(u.delete,async e=>{let t=await n.delete(q).where(P(q.agentId,e.payload.agentId));e.setResult({success:R(t)})})}function yn(e){let{bus:t,db:n}=e;return t.on(u.listByAdapter,async e=>{let{adapterName:t,status:r}=e.payload,i=[P(q.adapterName,t)];r&&r!==`all`&&i.push(P(q.status,r));let a=i.length>1?A(...i):i[0],o=await n.select().from(q).where(a);e.setResult({agents:o.map(J)})})}function bn(e){let{bus:t,db:n}=e;return t.on(u.listBySession,async e=>{let{sessionId:t}=e.payload,r=await n.select().from(q).where(P(q.sessionId,t));e.setResult({agents:r.map(J)})})}function xn(e){let{bus:t,db:n}=e;return t.on(u.updateStatus,async e=>{let{agentId:t,status:r}=e.payload,i=Date.now(),a=await n.update(q).set({status:r,lastActivityAt:i}).where(P(q.agentId,t));e.setResult({success:R(a)})})}function Sn(e){let{bus:t,db:n}=e;return t.on(u.updateActivity,async e=>{let{agentId:t,lastActivityAt:r}=e.payload,i=await n.update(q).set({lastActivityAt:r}).where(P(q.agentId,t));e.setResult({success:R(i)})})}function Cn(e){let{bus:t,db:n}=e;return t.on(u.updateRuntime,async e=>{let{agentId:t,cwd:r,model:i,providerConfigId:a}=e.payload,o={lastActivityAt:Date.now()};r!==void 0&&(o.cwd=r),i!==void 0&&(o.model=i),a!==void 0&&(o.providerConfigId=a);let s=await n.update(q).set(o).where(P(q.agentId,t));e.setResult({success:R(s)})})}function wn(e,t,n){let r={bus:e,db:t},i=[gn(r),_n(r),vn(r),yn(r),bn(r),xn(r),Sn(r),Cn(r)];return()=>hn(i)}function Y(e){return e??void 0}function Tn(e){if(e)try{let t=JSON.parse(e),n=De.safeParse(t);return n.success?n.data:void 0}catch{return}}function En(e){if(e)try{let t=JSON.parse(e),n=ae.safeParse(t);return n.success?n.data:void 0}catch{return}}function X(e,t){let n=En(e.forkTransforms),r=Tn(e.lastClientIdentityObservation);return{sessionId:e.sessionId,createdAt:e.createdAt,lastActivityAt:e.lastActivityAt,status:e.status,leadAgentId:Y(e.leadAgentId),parentSessionId:Y(e.parentSessionId),contextInheritance:Y(e.contextInheritance),rootSessionId:Y(e.rootSessionId),forkPointMessageId:Y(e.forkPointMessageId),branchKind:Y(e.branchKind),adapterName:Y(e.adapterName),adapterSessionId:Y(e.adapterSessionId),adapterId:Y(e.adapterId),clientId:Y(e.clientId),clientAccountId:Y(e.clientAccountId),lastClientIdentityObservation:r,isOrchestrated:Y(e.isOrchestrated),isImported:Y(e.isImported),title:Y(e.title),summary:Y(e.summary),summaryUpdatedAt:Y(e.summaryUpdatedAt),forkTransforms:n,targetWorkingDirectory:Y(e.targetWorkingDirectory),executionTargetId:Y(e.executionTargetId),agents:t.map(J),approvalPolicyOverride:Y(e.approvalPolicyOverride),spawningToolCallId:Y(e.spawningToolCallId),source:Y(e.source),parentExternalSessionId:Y(e.parentExternalSessionId),logFilePath:Y(e.logFilePath),discoveredAt:Y(e.discoveredAt),importStatus:Y(e.importStatus)}}function Dn(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 On(e,t,r){if(!r||t.length===0)return{};let i=e.select({sessionId:n.sessionId,minTimestamp:L`MIN(${n.timestamp})`.as(`min_timestamp`)}).from(n).where(A(P(n.role,`user`),F(n.sessionId,t))).groupBy(n.sessionId).as(`first_user_message_by_session`),a=await e.select({sessionId:n.sessionId,preview:n.contentText}).from(n).innerJoin(i,A(P(n.sessionId,i.sessionId),P(n.timestamp,i.minTimestamp))).where(P(n.role,`user`)),o=new Map;for(let e of a)o.has(e.sessionId)||o.set(e.sessionId,e.preview);let s=await e.select({sessionId:n.sessionId,count:M()}).from(n).where(F(n.sessionId,t)).groupBy(n.sessionId),c=new Map;for(let e of s)c.set(e.sessionId,e.count);return{previewBySession:o,countBySession:c}}function kn(e,t){return{sessionId:e.sessionId,clientId:t.clientId??e.clientId,clientAccountId:t.clientAccountId??e.clientAccountId,lastClientIdentityObservation:t.lastClientIdentityObservation??e.lastClientIdentityObservation}}function An(e){return e.clientId!==void 0||e.clientAccountId!==void 0||e.lastClientIdentityObservation!==void 0}function jn(n){let{bus:r,db:i}=n;return r.on(o.getByAdapterSessionId,async n=>{let{adapterSessionId:r,source:a}=n.payload,o=await i.select().from(t).where(a===void 0?P(t.adapterSessionId,r):A(P(t.adapterSessionId,r),P(t.source,a))).limit(2),s=o[0];if(o.length!==1||s===void 0){n.setResult({session:null});return}let c=await i.select().from(e).where(P(e.sessionId,s.sessionId));n.setResult({session:X(s,c)})})}const Mn=Gt();function Nn(e,n){return n===void 0?L`${e}`:L`
|
|
65
|
-
CASE
|
|
66
|
-
WHEN ${t.discoveredAt} IS NULL OR ${e} = ${t.discoveredAt} THEN ${n}
|
|
67
|
-
ELSE ${e}
|
|
68
|
-
END
|
|
69
|
-
`}function Pn(e){let{bus:n,db:r}=e;return n.on(o.importUpsert,async e=>{let{externalSessionId:i,source:a,clientId:o,adapterId:s,cwd:c,logFilePath:l,startedAt:u,title:d,kind:f,parentAdapterSessionId:p,forkPointMessageId:m}=e.payload,h=Mn(),g=crypto.randomUUID(),_=u??h,v=W(f)??null,ee=p??null,[te]=await r.insert(t).values({sessionId:g,status:`discovered`,isImported:!0,importStatus:`discovered`,adapterName:a,adapterSessionId:i,source:a??null,clientId:o??null,adapterId:s??null,targetWorkingDirectory:c??null,logFilePath:l??null,forkPointMessageId:m??null,branchKind:v,parentExternalSessionId:ee,discoveredAt:h,title:d??null,createdAt:_,lastActivityAt:_}).onConflictDoUpdate({target:[t.source,t.adapterSessionId],set:{status:L`
|
|
70
|
-
CASE
|
|
71
|
-
WHEN COALESCE(${t.importStatus}, excluded.import_status) = 'discovered' THEN excluded.status
|
|
72
|
-
ELSE ${t.status}
|
|
73
|
-
END
|
|
74
|
-
`,isImported:!0,importStatus:L`COALESCE(${t.importStatus}, excluded.import_status)`,adapterName:L`COALESCE(${t.adapterName}, excluded.adapter_name)`,discoveredAt:L`COALESCE(${t.discoveredAt}, excluded.discovered_at)`,source:L`COALESCE(${t.source}, excluded.source)`,logFilePath:L`COALESCE(${t.logFilePath}, excluded.log_file_path)`,targetWorkingDirectory:L`COALESCE(excluded.target_working_directory, ${t.targetWorkingDirectory})`,title:L`COALESCE(excluded.title, ${t.title})`,forkPointMessageId:L`COALESCE(excluded.fork_point_message_id, ${t.forkPointMessageId})`,parentExternalSessionId:L`COALESCE(excluded.parent_external_session_id, ${t.parentExternalSessionId})`,branchKind:L`COALESCE(excluded.branch_kind, ${t.branchKind})`,adapterId:L`COALESCE(excluded.adapter_id, ${t.adapterId})`,clientId:L`COALESCE(excluded.client_id, ${t.clientId})`,createdAt:Nn(t.createdAt,u),lastActivityAt:Nn(t.lastActivityAt,u)}}).returning({sessionId:t.sessionId,discoveredAt:t.discoveredAt,parentExternalSessionId:t.parentExternalSessionId,parentSessionId:t.parentSessionId}),y=te.sessionId===g;await Fn(n,r,te,y,v,_,a),e.setResult({sessionId:te.sessionId,created:y})})}async function Fn(e,t,n,r,i,a,o){if(r){let r=await In(t,n.sessionId,n.parentExternalSessionId,o);e.emit(D.created,{sessionId:n.sessionId,parentSessionId:r,branchKind:i,createdAt:a}).catch(e=>console.error(`[SessionStorage] Failed to emit session.created:`,e))}else n.parentExternalSessionId!==null&&n.parentSessionId===null&&await In(t,n.sessionId,n.parentExternalSessionId,o),e.emit(D.updated,{sessionId:n.sessionId,changedProperties:[`source`,`targetWorkingDirectory`,`title`]}).catch(e=>console.error(`[SessionStorage] Failed to emit session.updated:`,e))}async function In(e,n,r,i){if(r===null)return null;let[a]=await e.select({sessionId:t.sessionId,rootSessionId:t.rootSessionId}).from(t).where(A(P(t.adapterSessionId,r),P(t.source,i))).limit(1);if(!a)return null;let o=a.rootSessionId??a.sessionId;return await e.update(t).set({parentSessionId:a.sessionId,rootSessionId:o}).where(P(t.sessionId,n)),a.sessionId}function Ln(n){let{bus:r,db:i}=n;return r.on(o.getByLogFilePath,async n=>{let{logFilePath:r}=n.payload,[a]=await i.select().from(t).where(P(t.logFilePath,r)).limit(1);if(!a){n.setResult({session:null});return}let o=await i.select().from(e).where(P(e.sessionId,a.sessionId));n.setResult({session:X(a,o)})})}function Rn(n){let{bus:r,db:i}=n;return r.on(o.listImported,async n=>{let{source:r,importStatus:a}=n.payload,o=[P(t.isImported,!0)];r!==void 0&&o.push(P(t.source,r)),a!==void 0&&o.push(P(t.importStatus,a));let s=A(...o),c=await i.select().from(t).where(s).orderBy(N(t.createdAt));if(c.length===0){n.setResult({sessions:[]});return}let l=c.map(e=>e.sessionId),u=Dn(await i.select().from(e).where(F(e.sessionId,l)));n.setResult({sessions:c.map(e=>X(e,u.get(e.sessionId)??[]))})})}function zn(e){let{bus:n,db:r}=e;return n.on(o.countBySource,async e=>{let{source:n}=e.payload,i=await r.select({importStatus:t.importStatus,count:L`count(*)`}).from(t).where(A(P(t.isImported,!0),P(t.source,n))).groupBy(t.importStatus),a=0,o=0,s=0,c=0;for(let e of i){let t=Number(e.count);a+=t,e.importStatus===`imported`&&(o+=t),e.importStatus===`tracking`&&(s+=t),e.importStatus===`discovered`&&(c=t)}e.setResult({total:a,imported:o,tracking:s,discovered:c})})}function Bn(e){let{bus:n,db:r}=e;return n.on(o.updateImportStatus,async e=>{let{sessionId:i,importStatus:a}=e.payload,o=a===`imported`?{status:L`
|
|
75
|
-
CASE
|
|
76
|
-
WHEN ${t.status} = 'discovered' THEN 'active'
|
|
77
|
-
ELSE ${t.status}
|
|
78
|
-
END
|
|
79
|
-
`}:{},[s]=await r.update(t).set({importStatus:a,...o}).where(A(P(t.sessionId,i),we(I(t.importStatus),L`${t.importStatus} <> ${a}`))).returning({adapterSessionId:t.adapterSessionId,adapterName:t.adapterName,source:t.source}),c=s!==void 0;if(e.setResult({success:c}),c){n.emit(D.importStatusChanged,{sessionId:i,importStatus:a}).catch(e=>console.error(`[SessionStorage] Failed to emit session.importStatusChanged:`,e));let e=s.source??s.adapterName;a===`imported`&&s.adapterSessionId&&e&&n.emit(D.import.completed,{sessionId:i,adapterSessionId:s.adapterSessionId,source:e}).catch(e=>console.error(`[SessionStorage] Failed to emit session.import.completed:`,e))}})}function Vn(e,t){let n={bus:e,db:t};return[Pn(n),Ln(n),Rn(n),zn(n),Bn(n)]}function Z(e){return e??null}function Hn(e){return e?JSON.stringify(e):null}function Un(e){return{lastActivityAt:e.lastActivityAt,status:e.status,leadAgentId:Z(e.leadAgentId),parentSessionId:Z(e.parentSessionId),contextInheritance:Z(e.contextInheritance),rootSessionId:Z(e.rootSessionId),forkPointMessageId:Z(e.forkPointMessageId),branchKind:Z(e.branchKind),adapterName:Z(e.adapterName),adapterSessionId:Z(e.adapterSessionId),adapterId:Z(e.adapterId),clientId:Z(e.clientId),clientAccountId:Z(e.clientAccountId),lastClientIdentityObservation:Wn(e.lastClientIdentityObservation),isOrchestrated:e.isOrchestrated??!1,isImported:e.isImported??!1,title:Z(e.title),summary:Z(e.summary),summaryUpdatedAt:Z(e.summaryUpdatedAt),forkTransforms:Hn(e.forkTransforms),targetWorkingDirectory:Z(e.targetWorkingDirectory),executionTargetId:Z(e.executionTargetId),approvalPolicyOverride:Z(e.approvalPolicyOverride),spawningToolCallId:Z(e.spawningToolCallId),source:Z(e.source),parentExternalSessionId:Z(e.parentExternalSessionId),logFilePath:Z(e.logFilePath),discoveredAt:Z(e.discoveredAt),importStatus:Z(e.importStatus)}}function Wn(e){return e?JSON.stringify(e):null}function Q(e,t,n){n!==void 0&&(e[t]=n)}function Gn(e,t,n){n!==void 0&&(e[t]=n??null)}function Kn(e){let n={};return Q(n,`status`,e.status),Q(n,`parentSessionId`,e.parentSessionId),Q(n,`contextInheritance`,e.contextInheritance),Q(n,`rootSessionId`,e.rootSessionId),Q(n,`forkPointMessageId`,e.forkPointMessageId),Q(n,`branchKind`,e.branchKind),Q(n,`isOrchestrated`,e.isOrchestrated),Q(n,`clientId`,e.clientId),Q(n,`clientAccountId`,e.clientAccountId),Q(n,`title`,e.title),Q(n,`targetWorkingDirectory`,e.targetWorkingDirectory),Q(n,`createdAt`,e.createdAt),Q(n,`lastActivityAt`,e.lastActivityAt),Gn(n,`executionTargetId`,e.executionTargetId),Gn(n,`approvalPolicyOverride`,e.approvalPolicyOverride),e.spawningToolCallId===null?n.spawningToolCallId=null:e.spawningToolCallId!==void 0&&(n.spawningToolCallId=L`coalesce(${t.spawningToolCallId}, ${e.spawningToolCallId})`),e.lastClientIdentityObservation!==void 0&&(n.lastClientIdentityObservation=Wn(e.lastClientIdentityObservation)),n}function qn(n){let{bus:r,db:i}=n;return r.on(o.get,async n=>{let[r]=await i.select().from(t).where(P(t.sessionId,n.payload.sessionId)).limit(1);if(!r){n.setResult({session:null});return}let a=await i.select().from(e).where(P(e.sessionId,n.payload.sessionId));n.setResult({session:X(r,a)})})}function Jn(e){let{bus:n,db:r}=e;return n.on(o.set,async e=>{let{sessionId:i,session:a,ifAbsent:o}=le.parse(e.payload),s=Un(a);if(o){H(null,a);let o=R(await r.insert(t).values({sessionId:i,createdAt:a.createdAt,...s}).onConflictDoNothing());e.setResult({success:o,clientAccountChanged:o&&a.clientAccountId!==void 0}),o&&U(n,null,a);return}for(let o=0;o<3;o++){let[o]=await r.select().from(t).where(P(t.sessionId,i)).limit(1),c=o?X(o,[]):null;if(H(c,a),R(await r.insert(t).values({sessionId:i,createdAt:a.createdAt,...s}).onConflictDoUpdate({target:t.sessionId,set:s,setWhere:pn(o)}))){e.setResult({success:!0,clientAccountChanged:(c?.clientAccountId??null)!==(a.clientAccountId??null)}),U(n,c,a);return}}throw Error(`Failed to write session "${i}" with a stable client-account baseline`)})}function Yn(e){let{bus:n,db:r}=e;return n.on(o.delete,async e=>{await r.delete(t).where(P(t.sessionId,e.payload.sessionId)),e.setResult({success:!0})})}function Xn(e){let{bus:n,db:r}=e;return n.on(o.update,async e=>{let i=ue.request.parse(e.payload),{sessionId:a}=i,o=Kn(i),s=An(i);if(Object.keys(o).length===0){e.setResult({success:!0,clientAccountChanged:!1});return}if(!s){let n=await r.update(t).set(o).where(P(t.sessionId,a));e.setResult({success:R(n),clientAccountChanged:!1});return}for(let s=0;s<3;s++){let[s]=await r.select().from(t).where(P(t.sessionId,a)).limit(1);if(!s){e.setResult({success:!1,clientAccountChanged:!1});return}let c=X(s,[]),l=kn(c,i);if(H(c,l),R(await r.update(t).set(o).where(A(P(t.sessionId,a),pn(s))))){e.setResult({success:!0,clientAccountChanged:(c.clientAccountId??null)!==(l.clientAccountId??null)}),U(n,c,l);return}}throw Error(`Failed to update session "${a}" with a stable client-account baseline`)})}function Zn(e){let n=[];return e.status!==`all`&&n.push(P(t.status,e.status)),e.executionTargetId!==void 0&&n.push(P(t.executionTargetId,e.executionTargetId)),A(...n)}function Qn(n){let{bus:r,db:i}=n;return r.on(o.list,async n=>{let{status:r=`all`,limit:a,offset:o=0,includePreview:s=!1,executionTargetId:c}=n.payload,l=Zn({status:r,executionTargetId:c}),u=l?i.select().from(t).where(l):i.select().from(t),d=a===void 0?await u.orderBy(N(t.lastActivityAt)):await u.orderBy(N(t.lastActivityAt)).limit(a).offset(o),[f]=await(l?i.select({count:M()}).from(t).where(l):i.select({count:M()}).from(t)),p=f?.count??0;if(d.length===0){n.setResult({sessions:[],total:p});return}let m=d.map(e=>e.sessionId),h=Dn(await i.select().from(e).where(F(e.sessionId,m))),{previewBySession:g,countBySession:_}=await On(i,m,s),v=d.map(e=>{let t=X(e,h.get(e.sessionId)??[]);return s&&g&&_?{...t,preview:{messageCount:_.get(e.sessionId)??0,firstUserMessage:g.get(e.sessionId)??null}}:t});n.setResult({sessions:v,total:p})})}function $n(e){let{bus:r,db:i}=e;return r.on(o.getChildren,async e=>{let{sessionId:r}=e.payload,a=await i.select().from(t).where(P(t.parentSessionId,r));if(a.length===0){e.setResult({children:[]});return}let o=a.map(e=>e.sessionId),s=await i.select({sessionId:n.sessionId,count:M()}).from(n).where(F(n.sessionId,o)).groupBy(n.sessionId),c=new Map;for(let e of s)c.set(e.sessionId,e.count);let l=await i.select({parentSessionId:t.parentSessionId,count:M()}).from(t).where(F(t.parentSessionId,o)).groupBy(t.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 i.select({messageId:n.messageId,adapterMessageId:n.adapterMessageId}).from(n).where(F(n.adapterMessageId,d));for(let t of e)t.adapterMessageId&&f.set(t.adapterMessageId,t.messageId)}let p=a.map(e=>{let t=e.forkPointMessageId,n=t?f.get(t)??t:null;return{sessionId:e.sessionId,title:e.title??null,forkPointMessageId:n,branchKind:e.branchKind??null,messageCount:c.get(e.sessionId)??0,hasChildren:u.has(e.sessionId),spawningToolCallId:e.spawningToolCallId??void 0}});e.setResult({children:p})})}function er(e){let{bus:n,db:r}=e;return n.on(o.getStatusCounts,async e=>{e.payload;let n=await r.select({status:t.status,count:M()}).from(t).groupBy(t.status),i=0,a=0,o=0,s=0;for(let e of n)e.status===`active`?i=e.count:e.status===`closed`?a=e.count:e.status===`archived`?o=e.count:e.status===`discovered`&&(s=e.count);let c=i+a+o+s;e.setResult({all:c,active:i,closed:a,archived:o,discovered:s})})}function tr(e,t,n){let r={bus:e,db:t},i=[qn(r),Jn(r),Yn(r),Xn(r),Qn(r),$n(r),jn(r),er(r),...Vn(e,t)];return()=>i.forEach(e=>e())}function nr(e,t,n,r){return t===void 0&&n===void 0&&r===void 0?!1:(t!==void 0&&(e.cwd=t),n!==void 0&&(e.model=n),r!==void 0&&(e.providerConfigId=r),!0)}function rr(e){let t=new Map,n=[];return n.push(e.on(u.get,e=>{let n=t.get(e.payload.agentId)??null;e.setResult({agent:n})})),n.push(e.on(u.set,e=>{t.set(e.payload.agentId,e.payload.agent),e.setResult({success:!0})})),n.push(e.on(u.delete,e=>{let n=t.delete(e.payload.agentId);e.setResult({success:n})})),n.push(e.on(u.listByAdapter,e=>{let{adapterName:n,status:r}=e.payload,i=Array.from(t.values()).filter(e=>e.adapterName===n);r&&r!==`all`&&(i=i.filter(e=>e.status===r)),e.setResult({agents:i})})),n.push(e.on(u.listBySession,e=>{let n=Array.from(t.values()).filter(t=>t.sessionId===e.payload.sessionId);e.setResult({agents:n})})),n.push(e.on(u.updateStatus,e=>{let n=t.get(e.payload.agentId);if(!n){e.setResult({success:!1});return}n.status=e.payload.status,n.lastActivityAt=Date.now(),e.setResult({success:!0})})),n.push(e.on(u.updateActivity,e=>{let n=t.get(e.payload.agentId);if(!n){e.setResult({success:!1});return}n.lastActivityAt=e.payload.lastActivityAt,e.setResult({success:!0})})),n.push(e.on(u.updateRuntime,e=>{let n=t.get(e.payload.agentId);if(!n){e.setResult({success:!1});return}let{cwd:r,model:i,providerConfigId:a}=e.payload;if(!nr(n,r,i,a)){e.setResult({success:!1});return}n.lastActivityAt=Date.now(),e.setResult({success:!0})})),()=>n.forEach(e=>e())}async function ir(t,n){if(n.length===0)return new Map;let r=[...new Set(n)],i=await t.select().from(e).where(F(e.sessionId,r)),a=new Map;for(let e of i){let t=a.get(e.sessionId)??[];t.push(e),a.set(e.sessionId,t)}return a}async function ar(e,t){if(t.length===0)return new Map;let n=[...new Set(t)],r=await e.all(L`
|
|
80
|
-
SELECT m.session_id as sessionId, m.content_text as preview
|
|
81
|
-
FROM messages m
|
|
82
|
-
WHERE m.role = 'user'
|
|
83
|
-
AND m.session_id IN (${L.join(n.map(e=>L`${e}`),L`, `)})
|
|
84
|
-
AND NOT EXISTS (
|
|
85
|
-
SELECT 1
|
|
86
|
-
FROM messages m2
|
|
87
|
-
WHERE m2.session_id = m.session_id
|
|
88
|
-
AND m2.role = 'user'
|
|
89
|
-
AND (m2.timestamp < m.timestamp OR (m2.timestamp = m.timestamp AND m2.rowid < m.rowid))
|
|
90
|
-
)
|
|
91
|
-
`),i=new Map;for(let e of r)i.set(e.sessionId,e.preview);return i}async function or(e,t){if(t.length===0)return new Map;let r=[...new Set(t)],i=await e.select({sessionId:n.sessionId,count:M()}).from(n).where(F(n.sessionId,r)).groupBy(n.sessionId),a=new Map;for(let e of i)a.set(e.sessionId,e.count);return a}function sr(e){if(e)try{let t=JSON.parse(e);return!t||typeof t!=`object`||Array.isArray(t)?void 0:t}catch{return}}function cr(e,t,n,r){return{sessionId:e.session_id,createdAt:e.created_at,lastActivityAt:e.last_activity_at,status:e.status,title:e.title??void 0,leadAgentId:e.lead_agent_id??void 0,parentSessionId:e.parent_session_id??void 0,rootSessionId:e.root_session_id??void 0,forkPointMessageId:e.fork_point_message_id??void 0,branchKind:e.branch_kind??void 0,adapterName:e.adapter_name??void 0,adapterSessionId:e.adapter_session_id??void 0,adapterId:e.adapter_id??void 0,isOrchestrated:e.is_orchestrated===null?void 0:!!e.is_orchestrated,isImported:e.is_imported===null?void 0:!!e.is_imported,summary:e.summary??void 0,summaryUpdatedAt:e.summary_updated_at??void 0,forkTransforms:sr(e.fork_transforms),targetWorkingDirectory:e.target_working_directory??void 0,agents:t.map(e=>({agentId:e.agentId,adapterId:e.adapterId,adapterName:e.adapterName,sessionId:e.sessionId,role:e.role,status:e.status,createdAt:e.createdAt,lastActivityAt:e.lastActivityAt,model:e.model??void 0,adapterSessionId:e.adapterSessionId??void 0,cwd:e.cwd??void 0})),preview:{messageCount:r.get(e.session_id)??0,firstUserMessage:n.get(e.session_id)??null}}}function lr(e){let t=[];return e.status!==`all`&&t.push(L`s.status = ${e.status}`),e.isImported!==void 0&&t.push(e.isImported?L`s.is_imported = 1`:L`COALESCE(s.is_imported, 0) = 0`),t.length===0?L``:L` AND ${L.join(t,L` AND `)}`}async function ur(e,t,n,r,i){let a=lr(i);return e.all(L`
|
|
92
|
-
SELECT DISTINCT
|
|
93
|
-
s.session_id,
|
|
94
|
-
s.created_at,
|
|
95
|
-
s.last_activity_at,
|
|
96
|
-
s.status,
|
|
97
|
-
s.title,
|
|
98
|
-
s.lead_agent_id,
|
|
99
|
-
s.parent_session_id,
|
|
100
|
-
s.root_session_id,
|
|
101
|
-
s.fork_point_message_id,
|
|
102
|
-
s.branch_kind,
|
|
103
|
-
s.adapter_name,
|
|
104
|
-
s.adapter_session_id,
|
|
105
|
-
s.adapter_id,
|
|
106
|
-
s.is_orchestrated,
|
|
107
|
-
s.is_imported,
|
|
108
|
-
s.summary,
|
|
109
|
-
s.summary_updated_at,
|
|
110
|
-
s.fork_transforms,
|
|
111
|
-
s.target_working_directory
|
|
112
|
-
FROM sessions s
|
|
113
|
-
WHERE (
|
|
114
|
-
s.session_id IN (
|
|
115
|
-
SELECT session_id FROM messages_fts
|
|
116
|
-
WHERE messages_fts MATCH ${t}
|
|
117
|
-
)
|
|
118
|
-
OR LOWER(s.title) LIKE ${n}
|
|
119
|
-
)
|
|
120
|
-
${a}
|
|
121
|
-
ORDER BY s.last_activity_at DESC
|
|
122
|
-
LIMIT ${r}
|
|
123
|
-
`)}async function dr(e,t,n,r){let i=lr(r),[a]=await e.all(L`
|
|
124
|
-
SELECT COUNT(DISTINCT s.session_id) as total
|
|
125
|
-
FROM sessions s
|
|
126
|
-
WHERE (
|
|
127
|
-
s.session_id IN (
|
|
128
|
-
SELECT session_id FROM messages_fts
|
|
129
|
-
WHERE messages_fts MATCH ${t}
|
|
130
|
-
)
|
|
131
|
-
OR LOWER(s.title) LIKE ${n}
|
|
132
|
-
)
|
|
133
|
-
${i}
|
|
134
|
-
`);return a?.total??0}function fr(e,t){let n=[];return n.push(e.on(o.search,async e=>{let{query:n,limit:r=20,status:i=`all`,isImported:a}=e.payload,o=n.trim();if(!o){e.setResult({sessions:[],total:0});return}let s=`%${o.toLowerCase()}%`,c={status:i,isImported:a},l=await ur(t,o,s,r,c);if(l.length===0){e.setResult({sessions:[],total:0});return}let u=await dr(t,o,s,c),d=l.map(e=>e.session_id),f=await ir(t,d),p=await ar(t,d),m=await or(t,d),h=l.map(e=>cr(e,f.get(e.session_id)??[],p,m));e.setResult({sessions:h,total:u})})),()=>n.forEach(e=>e())}var pr=class{bus;options;cleanups=[];transform;constructor(e=w,t={}){this.bus=e,this.options=t,this.transform=t.transform??(e=>e),this.registerHandlers()}async emitStorageEvent(e,t,n){let i={sessionId:t,eventId:crypto.randomUUID(),timestamp:Date.now(),type:e,payload:n},a=this.transform(i);a&&await this.bus.request(r.append,{event:a})}registerHandler(e,t){this.cleanups.push(this.bus.on(e,(async e=>{try{await this.emitStorageEvent(t,e.payload.sessionId,e.payload)}catch(e){console.error(`[SessionLogger] Failed to emit ${t} to storage:`,e)}})))}registerHandlers(){this.registerHandler(D.agent.added,`agent.added`),this.registerHandler(D.turn.started,`turn.started`),this.registerHandler(D.turn.completed,`turn.completed`),this.registerHandler(D.branch.created,`branch.created`)}destroy(){for(let e of this.cleanups)e();this.cleanups.length=0}};const $=ye(`import_cursors`,{filePath:k(`file_path`).primaryKey(),bytesRead:_e(`bytes_read`).notNull(),lastModified:k(`last_modified`).notNull(),updatedAt:_e(`updated_at`).notNull()});function mr(e,t,n){let r=[];return r.push(e.on(Oe.get,async e=>{let{filePath:n}=e.payload,r=(await t.select().from($).where(P($.filePath,n)).limit(1))[0];if(!r){e.setResult({cursor:null});return}e.setResult({cursor:{filePath:r.filePath,bytesRead:r.bytesRead,lastModified:r.lastModified}})})),r.push(e.on(Oe.set,async e=>{let{filePath:n,bytesRead:r,lastModified:i}=e.payload;await t.insert($).values({filePath:n,bytesRead:r,lastModified:i,updatedAt:Date.now()}).onConflictDoUpdate({target:$.filePath,set:{bytesRead:r,lastModified:i,updatedAt:Date.now()}}),e.setResult({success:!0})})),r.push(e.on(Oe.delete,async e=>{let{filePath:n}=e.payload,r=await t.delete($).where(P($.filePath,n));e.setResult({success:R(r)})})),()=>{r.forEach(e=>e())}}var hr=class{sessionId;parentSessionId;status=`active`;_turns=[];_completedTurnIds=new Set;bus;constructor(e){this.sessionId=e.sessionId??crypto.randomUUID(),this.parentSessionId=e.parentSessionId,this.bus=e.bus}get turns(){return this._turns}async startTurn(e){if(this.status!==`active`)throw Error(`Cannot start turn on non-active session`);let t=new _({sessionId:this.sessionId,agentIds:e.agentIds,turnNumber:e.turnNumber,turnId:e.turnId});return this._turns.push(t),t.addMessage(e.messageId),await this.emit(D.turn.started,{turnId:t.turnId,turnNumber:t.turnNumber,agentIds:[...t.agentIds],messageId:e.messageId}),t}getActiveTurn(){for(let e=this._turns.length-1;e>=0;e--){let t=this._turns[e];if(!this._completedTurnIds.has(t.turnId))return t}}async completeTurn(e){if(!e.isComplete())throw Error(`Turn ${e.turnId} is not complete yet`);this._completedTurnIds.add(e.turnId);let t=e.getResult();await this.emit(D.turn.completed,{turnId:e.turnId,turnNumber:e.turnNumber,success:t.success,error:t.errors.length>0?t.errors.join(`; `):void 0})}async emit(e,t){await this.bus.emit(e,{...t,sessionId:this.sessionId})}};function gr(e,t){let{sessions:n}=a.extensions.drizzle;async function r(i,a,s,c=0){if(c>100)throw Error(`Cycle detected in session lineage (depth > 100)`);let l=await t.select({adapterSessionId:n.adapterSessionId,sessionId:n.sessionId,parentSessionId:n.parentSessionId}).from(n).where(A(P(n.parentExternalSessionId,i),P(n.source,a)));for(let t of l)t.parentSessionId!==null&&await e.request(o.update,{sessionId:t.sessionId,rootSessionId:s}),t.adapterSessionId!==null&&await r(t.adapterSessionId,a,s,c+1)}return e.on(D.import.completed,async i=>{let{adapterSessionId:a,sessionId:s,source:c}=i.payload,l=await t.select({sessionId:n.sessionId,adapterSessionId:n.adapterSessionId,branchKind:n.branchKind}).from(n).where(A(P(n.parentExternalSessionId,a),P(n.source,c),I(n.parentSessionId)));if(l.length===0)return;let{session:u}=await e.request(o.get,{sessionId:s}),d=u?.rootSessionId??s;for(let t of l)await e.request(o.update,{sessionId:t.sessionId,parentSessionId:s,rootSessionId:d,...t.branchKind===null?{}:{branchKind:t.branchKind}}),t.adapterSessionId!==null&&await r(t.adapterSessionId,c,d)})}const _r=new Set([`Agent`,`spawn_subagent`]),vr=`[^A-Za-z0-9_-]`;function yr(e){return e.replaceAll(/[.*+?^${}()|[\]\\]/g,`\\$&`)}function br(e,t){return t.test(e)}async function xr(e,t){let n=[],r,i=0;do{let a=await e.request(x.getBySession,{sessionId:t,order:`asc`,...r===void 0?{}:{after:r}});if(n.push(...a.messages),r=a.nextCursor??void 0,i+=1,r!==void 0&&i>=1e3)throw Error(`Exceeded 1000 message pages while loading session ${t}`)}while(r!==void 0);return n}function Sr(e){let t=[];for(let n of e)for(let e of n.blocks)e.type===`tool_call`&&_r.has(e.name)&&t.push({toolCallId:e.toolCallId});return t}function Cr(e,t){let n=new Map;for(let r of e)for(let e of r.blocks)if(e.type===`tool_output`){for(let r of t)if(br(e.output,r.pattern)){let t=n.get(e.toolCallId)??new Set;t.add(r.id),n.set(e.toolCallId,t)}}let r=new Map;for(let[e,t]of n)if(t.size===1){let[n]=t;r.set(e,n)}return r}function wr(e){let t=new Map,n=new Set;for(let r of e)if(!(r===null||n.has(r.adapterSessionId))){if(t.has(r.adapterSessionId)){t.delete(r.adapterSessionId),n.add(r.adapterSessionId);continue}t.set(r.adapterSessionId,r.sessionId)}return t}function Tr(e){return[...e].map(e=>{let t=yr(e);return{id:e,pattern:RegExp(`(^|${vr})${t}($|${vr})`)}})}async function Er(e,t,n){let{children:r}=await e.request(o.getChildren,{sessionId:n}),i=r.filter(e=>e.branchKind===`compress`);if(i.length===0)return;let{session:a}=await e.request(o.get,{sessionId:t}),s=a?.adapterSessionId;if(!s)return;let c=Tr(new Set([s])),l=(await Promise.all(i.map(async t=>{let n=await xr(e,t.sessionId),r=Sr(n);if(r.length===0)return null;let i=Cr(n,c);if(i.size===0)return null;let a=[...i.entries()].filter(([,e])=>e===s);if(a.length!==1)return null;let[o]=a[0];return r.some(e=>e.toolCallId===o)?{parentSessionId:t.sessionId,toolCallId:o}:null}))).filter(e=>e!==null);l.length===1&&await e.request(o.update,{sessionId:t,parentSessionId:l[0].parentSessionId,spawningToolCallId:l[0].toolCallId})}async function Dr(e,t,n){let r=t.parentExternalSessionId,i=t.source??n;if(!r||!i)return;let a=t.sessionId,{session:s}=await e.request(o.getByAdapterSessionId,{adapterSessionId:r,source:i}),c=s?.sessionId;if(!c)return;let{children:l}=await e.request(o.getChildren,{sessionId:c}),u=await Or(e,l);if(u.size===0)return;let d=await xr(e,a),f=Sr(d);if(f.length===0)return;let p=Cr(d,Tr(new Set(u.keys()))),m=new Map;for(let e of f){let t=p.get(e.toolCallId);t!==void 0&&m.set(t,(m.get(t)??0)+1)}let h=new Map;for(let e of f){let t=p.get(e.toolCallId),n=t===void 0?void 0:u.get(t);n!==void 0&&t!==void 0&&m.get(t)===1&&h.set(n,e.toolCallId)}if(h.size===0)return;let g=[...h].map(async([t,n])=>{try{await e.request(o.update,{sessionId:t,parentSessionId:a,spawningToolCallId:n})}catch(e){console.error(`[CompressLineageResolver] Failed to re-parent subagent`,{compressChildSessionId:a,parentMakaioSessionId:c,childSessionId:t,toolCallId:n,error:e})}});await Promise.allSettled(g)}async function Or(e,t){return wr(await Promise.all(t.filter(e=>e.branchKind===`subagent`).map(async t=>{let{session:n}=await e.request(o.get,{sessionId:t.sessionId});return n?.adapterSessionId?{sessionId:t.sessionId,adapterSessionId:n.adapterSessionId}:null})))}function kr(e){return e.on(D.import.completed,async t=>{try{let{sessionId:n,source:r}=t.payload,{session:i}=await e.request(o.get,{sessionId:n});if(!i)return;if(i.branchKind===`subagent`&&i.parentSessionId!==void 0){await Er(e,n,i.parentSessionId);return}if(i.branchKind!==`compress`)return;await Dr(e,i,r)}catch(e){console.error(`[CompressLineageResolver] Failed to resolve compress lineage`,{payload:t.payload,error:e})}})}function Ar(e){return[...e].map(e=>{let t=yr(e);return{id:e,pattern:RegExp(`(^|${vr})${t}($|${vr})`)}})}async function jr(e,t,n){return wr(await Promise.all(n.filter(e=>e.branchKind===`subagent`&&e.spawningToolCallId===void 0).map(async n=>{let{session:r}=await e.request(o.get,{sessionId:n.sessionId}),i=r?.source??r?.adapterName;return r?.adapterSessionId&&i===t?{sessionId:n.sessionId,adapterSessionId:r.adapterSessionId}:null})))}function Mr(e){return e.on(D.import.completed,async t=>{try{let{sessionId:n,source:r}=t.payload,{children:i}=await e.request(o.getChildren,{sessionId:n}),a=await jr(e,r,i),s=new Set(a.keys());if(s.size===0)return;let c=await xr(e,n),l=Sr(c);if(l.length===0)return;let u=Cr(c,Ar(s)),d=new Map;for(let e of l){let t=u.get(e.toolCallId);t!==void 0&&d.set(t,(d.get(t)??0)+1)}let f=new Map;for(let e of l){let t=u.get(e.toolCallId),n=t===void 0?void 0:a.get(t);n!==void 0&&t!==void 0&&d.get(t)===1&&f.set(n,e.toolCallId)}let p=[...f].map(async([t,r])=>{try{let{session:n}=await e.request(o.get,{sessionId:t});if(n?.spawningToolCallId!==void 0)return;await e.request(o.update,{sessionId:t,spawningToolCallId:r})}catch(e){console.error(`Failed to persist spawning tool call correlation`,{parentSessionId:n,childSessionId:t,toolCallId:r,error:e})}});await Promise.allSettled(p)}catch(e){console.error(`Failed to backfill spawningToolCallId for imported session`,{payload:t.payload,error:e})}})}function Nr(e){return e.on(T.session.discovered,async t=>{let n=ce.safeParse(t.payload);if(!n.success)throw console.error(`[registerSessionDiscoveredHandler] Invalid adapter.session.discovered payload`,{issues:n.error.issues}),n.error;let{adapterId:r,adapterSessionId:i,adapterName:a,cwd:s,title:c,logFilePath:l,startedAt:u,kind:d,parentAdapterSessionId:f,forkPointMessageId:p}=n.data,m=Wt({kind:d,parentAdapterSessionId:f??null,forkPointMessageId:p??null});await e.request(o.importUpsert,{externalSessionId:i,source:a,adapterId:r,cwd:s??null,...c===void 0?{}:{title:c},...l===void 0?{}:{logFilePath:l},...u===void 0?{}:{startedAt:u},...m})})}var Pr=class{bus;agentStates=new Map;sessionStates=new Map;unsubscribe;staleThresholdMs;constructor(e,t){this.bus=e,this.staleThresholdMs=t?.staleThresholdMs??36e5}start(){this.unsubscribe||=this.bus.on(E.contextWindow.updated,e=>{let{agentId:t,sessionId:n,currentTokens:r,maxTokens:i,percentage:a,level:o,cachedTokens:s}=e.payload;if(!n)return;let c={agentId:t,sessionId:n,currentTokens:r,maxTokens:i,percentage:a,level:o,cachedTokens:s,updatedAt:Date.now()};this.agentStates.set(t,c),this.recomputeSessionState(n)})}stop(){this.unsubscribe?.(),this.unsubscribe=void 0,this.agentStates.clear(),this.sessionStates.clear()}getSessionState(e){return this.sessionStates.get(e)}clearSession(e){this.sessionStates.delete(e);for(let[t,n]of this.agentStates)n.sessionId===e&&this.agentStates.delete(t)}recomputeSessionState(e){let t=Date.now(),n;for(let[r,i]of this.agentStates){if(t-i.updatedAt>this.staleThresholdMs){this.agentStates.delete(r);continue}i.sessionId===e&&(!n||i.percentage>n.percentage)&&(n=i)}n&&this.sessionStates.set(e,{currentTokens:n.currentTokens,maxTokens:n.maxTokens,percentage:n.percentage,level:n.level,worstAgentId:n.agentId,lastUpdatedAt:n.updatedAt})}};export{Lt as A,yt as B,W as C,Bt as D,Ht as E,Mt as F,ze as G,it as H,At as I,je as K,Ot as L,It as M,Pt as N,zt as O,Nt as P,V as R,dn as S,Vt as T,qe as U,gt as V,Ve as W,tr as _,gr as a,X as b,$ as c,ir as d,or as f,rr as g,sr as h,kr as i,Ft as j,Rt as k,pr as l,cr as m,Nr as n,hr as o,ar as p,Mr as r,mr as s,Pr as t,fr as u,On as v,Wt as w,wn as x,Dn as y,B as z};
|
package/dist/tools-B8d8Iqqx.mjs
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{SessionStorageSubjects as e}from"./services/session/storage/namespace.mjs";import{N as t}from"./handlers-Bev7-xjL.mjs";import{D as n,G as r,H as i,I as a,P as o,V as s,_ as c,a as l,i as u,n as d,r as f,s as ee,u as te,x as ne}from"./session-BnfsJoZi.mjs";import{n as p}from"./namespace-ENv7H7Na.mjs";import{t as re}from"./capability-service-jjrFLM6r.mjs";import"./services/adapter-subsystem/index.mjs";import{i as ie,s as ae}from"./model-registry-B0AIdj7O.mjs";import{t as oe}from"./tool-approval-service-BgNcJvKx.mjs";import{t as se}from"./tray-menu-service-B5YPK_YF.mjs";import{harnessDefinitions as ce}from"./services/harness/storage/schema.mjs";import{n as m}from"./namespace-CDiM5Bcr.mjs";import{n as le}from"./package-OE9dMQsq.mjs";import{t as ue}from"./filesystem-service-CBJT7A5w.mjs";import{z as h}from"zod";import{createHash as de}from"node:crypto";import{MakaioError as fe,createMakaioContext as pe}from"@makaio/framework/core";import{MakaioBus as g}from"@makaio/framework/bus";import{AdapterSubjects as me,ApprovalPolicySchema as _,ArtifactSubjects as v,CanonicalModelSubjects as he,DEFAULT_HARNESSES as ge,HarnessDefinitionCreateSchema as _e,HarnessSubjects as y,JsonValueSchema as ve,ToolCapabilitySchema as ye,ToolSubjects as b,TransitionRuleDefinitionSchema as be,WorkflowBlocksSubjects as xe,WorkflowSubjects as Se,dep as x,extensionToken as S,validateToolAdapterIdentity as Ce,zodSchemaToJsonRecord as C}from"@makaio/framework/contracts";import{BaseService as w}from"@makaio/framework/service-base";import{eq as T}from"drizzle-orm";import{registerDrizzleHandlers as E}from"@makaio/framework/storage/drizzle";import{slugifyProviderConfigName as D}from"@makaio/framework/contracts/config";import{ClientAccountIdentifierSchema as we,ClientSessionAccountObserveSchema as Te,ClientSubjects as O}from"@makaio/framework/contracts/client";import{FacetSubjects as k}from"@makaio/framework/contracts/facet";import{MaterializationSubjects as A}from"@makaio/framework/contracts/materialization";import{FILE_ACCESS_RULES_KEY as Ee,FILE_ACCESS_RULES_KEY as De,ToolErrorCodes as j,errorToToolResult as Oe,extractToolFilePath as ke,toolError as M,toolSuccess as Ae}from"@makaio/framework/tools";import{ConditionSchema as je,evaluate as Me}from"@makaio/framework/rules";import{evaluateSync as Ne}from"@makaio/framework/expression";import{createDrizzleCrudHandlers as Pe,createDrizzleListHandler as Fe}from"@makaio/framework/storage/handlers";import{GitService as Ie}from"@makaio/framework/git";const Le=[{type:`supersedes`,symmetry:`asymmetric`},{type:`contradicts`,symmetry:`symmetric`},{type:`derives_from`,symmetry:`asymmetric`},{type:`responds_to`,symmetry:`asymmetric`},{type:`contains`,symmetry:`asymmetric`},{type:`refines`,symmetry:`asymmetric`},{type:`scopes`,symmetry:`asymmetric`},{type:`references`,symmetry:`asymmetric`},{type:`evidenced_by`,symmetry:`asymmetric`}],N={extension:0,"factory-repo":1,"target-repo":2},P={source:`extension`,ownerKey:`extension:bus`};function F(e){return`${e.source}:${e.ownerKey}`}function Re(e,t){return e.source===t.source&&e.ownerKey===t.ownerKey}function I(e){return structuredClone(e)}function L(e,t){return`${e}@${t}`}var R=class extends w{kinds=new Map;kindContributions=new Map;nextKindContributionOrder=0;relationTypes=new Map;constructor(e){super(e)}async onInit(){for(let e of Le)this.relationTypes.set(e.type,e);this.registerHandler(v.kind.register,e=>{this.registerKind(e.payload),e.setResult({registered:!0})}),this.registerHandler(v.kind.list,e=>{let{kind:t}=e.payload,n=[...this.kinds.values()].filter(e=>!t||e.kind===t).map(I);e.setResult({kinds:n})}),this.registerHandler(v[`relation-type`].register,e=>{this.storeRelationType(e.payload),e.setResult({registered:!0})}),this.registerHandler(v[`relation-type`].list,e=>{let{type:t}=e.payload,n=[...this.relationTypes.values()].filter(e=>!t||e.type===t).map(I);e.setResult({relationTypes:n})})}compareKindContributions(e,t){let n=N[e.owner.source]-N[t.owner.source];return n===0?e.owner.source===`extension`?t.order-e.order:e.order-t.order:n}findSameTierRepoConflict(e,t,n){return[...e.values()].find(e=>!Re(e.owner,t)&&e.owner.source===t.source&&t.source!==`extension`&&e.order<=n)}recomputeKindWinner(e){let t=this.kindContributions.get(e),n=this.kinds.get(e);if(t===void 0||t.size===0){this.kindContributions.delete(e),this.kinds.delete(e),this.emitKindChangedFromKey(e,n);return}let r;for(let e of t.values())(r===void 0||this.compareKindContributions(e,r)<0)&&(r=e);let i=r;this.kinds.set(e,I(i.registration)),JSON.stringify(n)!==JSON.stringify(i.registration)&&this.bus.emit(v.kind.changed,{kind:i.registration.kind,schemaVersion:i.registration.schemaVersion})}emitKindChangedFromKey(e,t){t!==void 0&&this.bus.emit(v.kind.changed,{kind:t.kind,schemaVersion:t.schemaVersion})}registerKind(e,t=P){let n=L(e.kind,e.schemaVersion),r=this.kindContributions.get(n)??new Map,i=F(t),a=r.get(i),o=t.source===`extension`?this.nextKindContributionOrder:a?.order??this.nextKindContributionOrder,s=this.findSameTierRepoConflict(r,t,o);if(s!==void 0){console.warn(`[ArtifactSchemaRegistry] Artifact kind '${n}' is already registered by '${s.owner.ownerKey}' at the same priority; keeping the existing owner.`);return}r.set(i,{owner:t,registration:I(e),order:t.source===`extension`||a===void 0?this.nextKindContributionOrder++:a.order}),this.kindContributions.set(n,r),this.recomputeKindWinner(n)}deregisterKind(e,t,n=P){let r=L(e,t),i=this.kindContributions.get(r);i!==void 0&&(i.delete(F(n)),this.recomputeKindWinner(r))}replaceKindRegistrationsForOwner(e,t){let n=new Set,r=F(e),i=new Map;for(let[e,t]of this.kindContributions.entries()){let a=t.get(r);a!==void 0&&(i.set(e,a.order),t.delete(r),n.add(e))}for(let a of t){let t=L(a.kind,a.schemaVersion),o=this.kindContributions.get(t)??new Map,s=e.source===`extension`?void 0:i.get(t),c=s??this.nextKindContributionOrder,l=this.findSameTierRepoConflict(o,e,c);if(l!==void 0){console.warn(`[ArtifactSchemaRegistry] Artifact kind '${t}' is already registered by '${l.owner.ownerKey}' at the same priority; keeping the existing owner.`);continue}o.set(r,{owner:e,registration:I(a),order:s??this.nextKindContributionOrder++}),this.kindContributions.set(t,o),n.add(t)}for(let e of n)this.recomputeKindWinner(e)}storeRelationType(e){let t=this.relationTypes.get(e.type);if(t){if(t.symmetry!==e.symmetry)throw Error(`Relation type '${e.type}' is already registered with different symmetry (existing: '${t.symmetry}', new: '${e.symmetry}')`);return}this.relationTypes.set(e.type,I(e))}getKind(e,t){let n=this.kinds.get(L(e,t));return n?I(n):void 0}getRelationType(e){let t=this.relationTypes.get(e);return t?I(t):void 0}onDestroy(){this.kinds.clear(),this.kindContributions.clear(),this.relationTypes.clear(),this.nextKindContributionOrder=0}},z=class extends Error{reason;hookId;constructor(e,t){super(`Artifact write rejected by hook '${t}': ${e}`),this.reason=e,this.hookId=t,this.name=`ArtifactLifecycleHookRejectedError`}};function B(e,t){return e?!(e.kind!==void 0&&e.kind!==`*`&&e.kind!==t.kind||e.schemaVersion!==void 0&&e.schemaVersion!==t.schemaVersion):!0}function V(e){return e.priority??0}function ze(e,t,n){return e.filter(e=>e.event===t&&B(e.filter,n)).sort((e,t)=>V(t)-V(e))}function Be(e,t,n){return e.filter(e=>e.event===t&&B(e.filter,n)).sort((e,t)=>V(t)-V(e))}function Ve(e,t){return{...e,...`data`in t?{data:t.data}:{},...`relations`in t?{relations:t.relations}:{},...`confidence`in t?{confidence:t.confidence}:{},...`representations`in t?{representations:t.representations}:{},...`actor`in t?{actor:t.actor}:{}}}function He(e,t){let{confidence:n,representations:r,...i}=e;return{...i,data:t.data,relations:[...t.relations],...t.confidence===void 0?{}:{confidence:t.confidence},...t.representations===void 0?{}:{representations:t.representations},actor:t.actor}}var Ue=class extends w{registrations=new Map;constructor(e){super(e)}async onInit(){}onDestroy(){this.registrations.clear()}registerHooks(e,t){let n=[...t];this.registrations.set(e,n);let r=!1;return()=>{r||(r=!0,this.registrations.get(e)===n&&this.registrations.delete(e))}}allHooks(){let e=[];for(let t of this.registrations.values())e.push(...t);return e}async runBeforeCreate(e){return this.runBeforeHooks(`beforeCreate`,e)}async runBeforeRevise(e){return this.runBeforeHooks(`beforeRevise`,e)}async runBeforeHooks(e,t){let{draft:n,previous:r,kindRegistration:i}=t,a=ze(this.allHooks(),e,n),o=new Map,s={kind:n.kind,schemaVersion:n.schemaVersion,scope:n.scope,data:n.data,relations:n.relations,...n.confidence===void 0?{}:{confidence:n.confidence},...n.representations===void 0?{}:{representations:n.representations},actor:n.actor},c=!1;for(let t of a){let n,a={event:e,get draft(){return s},previous:r,kindRegistration:i,bus:this.bus,meta:o,rejectCreation(e){n={reason:e}},skipMaterialization(){c=!0},updateDraft(e){s=Ve(s,e)}};if(await t.handler(a),n)throw new z(n.reason,t.id)}return{draft:He(n,s),skipMaterialization:c,meta:o}}async runAfterCreate(e){await this.runAfterHooks(`afterCreate`,`created`,e)}async runAfterRevise(e){await this.runAfterHooks(`afterRevise`,`revised`,e)}async runAfterStatusChanged(e){await this.runAfterHooks(`afterStatusChanged`,`status-changed`,e)}async runAfterObservationAdded(e){await this.runAfterHooks(`afterObservationAdded`,`observation-added`,e)}async runAfterHooks(e,t,n){let{artifact:r,previous:i,observation:a,kindRegistration:o,projectionPolicy:s,skipDefaultProjection:c,meta:l}=n,u=Be(this.allHooks(),e,r),d=this.bus,f=!1;for(let n of u){if(c&&(n.priority??0)<0||f&&(n.priority??0)<0)continue;let u={event:e,semanticEvent:t,artifact:r,previous:i?{refClass:`artifact`,id:i.id,revision:i.revision,kind:i.kind}:void 0,observation:a,kindRegistration:o,projectionPolicy:s,bus:d,meta:l,preventDefault(){f=!0},async resolveRelations(e){let t=r.relations.filter(t=>t.type===e).map(e=>e.target),n=[];for(let e of t){let t=e;if(t.refClass===`artifact`){let e=t,{artifact:r}=await d.request(v.resolve,{ref:e});r&&n.push(r)}}return n}};try{await n.handler(u)}catch(t){console.error(`[ArtifactLifecycleHookRegistry] Hook '${n.id}' threw during '${e}':`,t)}}}};function H(e){return structuredClone(e)}var We=class extends w{namespaces=new Map;constructor(e){super(e)}async onInit(){this.registerHandler(k.namespace.register,e=>{this.registerNamespace(e.payload),e.setResult({registered:!0})}),this.registerHandler(k.namespace.list,e=>{let{namespace:t}=e.payload,n=[...this.namespaces.values()].filter(e=>!t||e.namespace===t).map(H);e.setResult({namespaces:n})})}registerNamespace(e){let t=this.namespaces.get(e.namespace);if(t){if(JSON.stringify(t)!==JSON.stringify(e))throw Error(`Facet namespace '${e.namespace}' is already registered with a different definition`);return}this.namespaces.set(e.namespace,H(e)),this.bus.emit(k.namespace.changed,{namespace:e.namespace})}deregisterNamespace(e){this.namespaces.delete(e)&&this.bus.emit(k.namespace.changed,{namespace:e})}getNamespace(e){let t=this.namespaces.get(e);return t?H(t):void 0}onDestroy(){this.namespaces.clear()}};function U(e){return structuredClone(e)}var Ge=class extends w{bindings=new Map;constructor(e){super(e)}async onInit(){this.registerHandler(A.surfaceBinding.register,e=>{this.registerBinding(e.payload),e.setResult({registered:!0})}),this.registerHandler(A.surfaceBinding.list,e=>{let{provider:t,namespace:n}=e.payload,r=[...this.bindings.values()].filter(e=>(!t||e.provider===t)&&(!n||e.namespace===n)).map(U);e.setResult({bindings:r})})}registerBinding(e){let t=this.bindings.get(e.id);if(t){if(JSON.stringify(t)!==JSON.stringify(e))throw Error(`Surface binding '${e.id}' is already registered with a different definition`);return}this.bindings.set(e.id,U(e)),this.bus.emit(A.surfaceBinding.changed,{id:e.id,provider:e.provider})}deregisterBinding(e){let t=this.bindings.get(e);t&&(this.bindings.delete(e),this.bus.emit(A.surfaceBinding.changed,{id:e,provider:t.provider}))}getBinding(e){let t=this.bindings.get(e);return t?U(t):void 0}onDestroy(){this.bindings.clear()}},W=class extends fe{code;suggestions;constructor(e,t,n){super(e),this.code=t,this.suggestions=n}},Ke=class{deps;constructor(e){this.deps=e}async resolve(e,t){switch(e.kind){case`bare`:return this.resolveBare(e.model);case`qualified`:return this.resolveQualified(e.segment1,e.segment2,e.model)}}async resolveBare(e){let t=await this.deps.resolveDefaultModelTarget(e);switch(t.kind){case`resolved`:return{kind:`adapter`,adapterName:t.target.adapterName,providerConfigId:t.target.providerConfigId,model:t.target.model};case`ambiguous`:throw new W(`Model "${e}" is available via multiple providers. Use a qualified reference to select one.`,`ambiguous-model`,t.matches.map(e=>e.qualifiedName));case`not-found`:throw new W(`Model "${e}" was not found in any enabled adapter's registry.`,`model-not-found`)}}async resolveQualified(e,t,n){return t===void 0?this.resolveQualifiedOneSegment(e,n):this.resolveQualifiedTwoSegments(e,t,n)}async resolveQualifiedTwoSegments(e,t,n){let r=await this.deps.listEnabledAdapterNames();if(!r.includes(e))throw new W(`Adapter "${e}" is not enabled or does not exist.`,`adapter-not-found`);return{kind:`adapter`,adapterName:e,providerConfigId:await this.resolveProviderSegment(t,e,r),model:n}}async resolveQualifiedOneSegment(e,t){let n=await this.deps.listEnabledAdapterNames();if(n.includes(e)){let n=await this.deps.getDefaultBinding(e);if(!n)throw new W(`Adapter "${e}" has no enabled provider binding. Configure or enable a provider binding first.`,`no-binding`);return{kind:`adapter`,adapterName:e,providerConfigId:n.providerConfigId,model:t}}let r=await this.deps.findProviderConfigByName(e);if(r)return{kind:`adapter`,adapterName:(await this.pickBindingForConfig(r.id,n)).adapterName,providerConfigId:r.id,model:t};let i=await this.deps.findProviderDefinition(e,n);if(i){let r=await this.deps.findDefaultConfigForDefinition(i.id);if(!r)throw new W(`Provider definition "${e}" exists but has no configured provider config. Create a provider config first.`,`provider-not-found`);return{kind:`adapter`,adapterName:(await this.pickBindingForConfig(r.id,n)).adapterName,providerConfigId:r.id,model:t}}throw new W(`"${e}" does not match any enabled adapter name, provider config name, or provider definition ID.`,`adapter-not-found`)}async resolveProviderSegment(e,t,n){let r=await this.deps.findProviderConfigByName(e);if(r)return await this.requireBindingForAdapterAndConfig(t,r.id,e),r.id;let i=await this.deps.findProviderDefinition(e,n);if(i){let n=await this.deps.findConfigForDefinitionAndAdapter(i.id,t);if(!n)throw new W(`Provider definition "${e}" has no enabled config bound to adapter "${t}". Create a provider config and binding first.`,`no-binding`);return n.id}throw new W(`"${e}" does not match any provider config name or provider definition ID.`,`provider-not-found`)}async requireBindingForAdapterAndConfig(e,t,n){if(!(await this.deps.listBindingsForConfig(t)).some(t=>t.adapterName===e))throw new W(`No binding exists between adapter "${e}" and provider "${n}". Create a binding first.`,`no-binding`)}async pickBindingForConfig(e,t){let n=(await this.deps.listBindingsForConfig(e)).filter(e=>t.includes(e.adapterName));if(n.length===0)throw new W(`Provider config "${e}" has no bindings to enabled adapters. Bind it to an enabled adapter first.`,`no-binding`);return n.find(e=>e.isDefault)??n[0]}},qe=class e extends w{constructor(e=g){super(e)}async onInit(){await this.bus.request(p.ensureReady,{});let e=new Ke(this.createDeps());this.registerHandler(he.resolve,async t=>{let n=await e.resolve(t.payload.parsed,t.payload.context);t.setResult(n)})}createDeps(){let e=this.bus,t=async()=>{let{adapters:t}=await e.request(p.listAdapters,{});return t.filter(e=>e.enabled).map(e=>e.name)},n=async t=>{let[n,r]=await Promise.all([e.request(p.getDefaultBinding,{adapterName:t}),this.listEnabledProviderConfigIds()]);if(n.binding&&r.has(n.binding.providerConfigId))return n.binding;let{bindings:i}=await e.request(p.listBindings,{adapterName:t}),a=i.filter(e=>r.has(e.providerConfigId));return a.find(e=>e.isDefault)??a[0]},r=async t=>{let{definitions:n}=await e.request(p.getProviderDefinitionsByAdapter,{adapterName:t});return n},i=async t=>{let{bindings:n}=await e.request(p.listBindingsByConfig,{providerConfigId:t});return n},a=async t=>{let{configs:n}=await e.request(p.listProviderConfigs,{enabled:!0}),r=D(t);return n.find(e=>D(e.name)===r)},o=this.buildFindProviderDefinition(t,r),s=async t=>{let{configs:n}=await e.request(p.listProviderConfigsByDefinition,{definitionId:t}),r=n.filter(e=>e.enabled);return r.find(e=>e.isDefault)??r[0]},c=async(t,n)=>{let{config:r}=await e.request(p.findConfigForDefinitionAndAdapter,{definitionId:t,adapterName:n});return r?{id:r.id}:void 0};return{listEnabledAdapterNames:t,getDefaultBinding:n,findProviderConfigByName:a,findProviderDefinition:o,listBindingsForConfig:i,findDefaultConfigForDefinition:s,findConfigForDefinitionAndAdapter:c,resolveDefaultModelTarget:this.buildResolveDefaultModelTarget(t,r,c)}}buildFindProviderDefinition(e,t){return async(n,r)=>{let i=r??await e();for(let e of i){let r=(await t(e)).find(e=>e.id===n);if(r)return r}}}buildResolveDefaultModelTarget(t,n,r){let i=this.bus;return async a=>{let o=await t(),s=await Promise.all(o.map(async e=>({adapterName:e,definitions:await n(e)}))),c=Array.from(new Set(s.flatMap(({definitions:e})=>e.map(e=>e.id))));if(c.length===0)return{kind:`not-found`};let{matches:l}=await i.request(ae.checkModelInProviders,{providerIds:c,model:a}),u=(await Promise.all(s.map(({adapterName:e,definitions:t})=>this.collectAdapterCandidates(e,t,a,l,r)))).flat();return e.buildResolution(u)}}async collectAdapterCandidates(e,t,n,r,i){let a=t.filter(e=>e.id in r),o=await Promise.all(a.map(t=>i(t.id,e)));return a.flatMap((t,r)=>{let i=o[r];return i?[{adapterName:e,definitionId:t.id,providerConfigId:i.id,qualifiedName:`${e}/${t.id}::${n}`,model:n}]:[]})}static buildResolution(e){let t=Array.from(new Map(e.map(e=>[this.routeKey(e),e])).values());if(t.length===0)return{kind:`not-found`};if(t.length>1)return{kind:`ambiguous`,matches:t.map(({adapterName:e,definitionId:t,qualifiedName:n})=>({adapterName:e,definitionId:t,qualifiedName:n}))};let[n]=t;return{kind:`resolved`,target:{adapterName:n.adapterName,providerConfigId:n.providerConfigId,definitionId:n.definitionId,model:n.model}}}static routeKey(e){return`${e.adapterName}\0${e.definitionId}\0${e.providerConfigId}`}async listEnabledProviderConfigIds(){let{configs:e}=await this.bus.request(p.listProviderConfigs,{enabled:!0});return new Set(e.map(e=>e.id))}};const G={name:`makaio.canonical-model`,displayName:`Canonical Model`,version:`0.1.0`,critical:!1,create:e=>new qe(e.bus)};function Je(e){let t=Ce({adapterId:e?.adapterId,adapterName:e?.adapterName,contextOverrides:{adapterId:e?.contextOverrides?.adapterId,adapterName:e?.contextOverrides?.adapterName}}),n=t.issues[0];return n?M(j.VALIDATION_FAILED,n.message):Ae(t.effectiveIdentity)}function Ye(e){let t=e?.allowedDirectories;if(Array.isArray(t))return t.filter(e=>typeof e==`string`)}async function Xe(e,t,n,r){let i=new Map;for(let e of t)i.set(e.name,await r(e.name));let a=t.filter(e=>{let t=i.get(e.name);return!t?.allowedAdapters||t.allowedAdapters.length===0?!0:t.allowedAdapters.includes(n)}),o=new Set(a.map(e=>e.name));return{filteredTools:e.filter(e=>!(!o.has(e.toolsetName)||i.get(e.toolsetName)?.disabledTools?.includes(e.name))),filteredToolsets:a}}function Ze(){return`exec_${Date.now()}_${Math.random().toString(36).substring(2,9)}`}var Qe=class{bus;toolsets=new Map;tools=new Map;cleanupHandlers=[];handlerPriority;policyProvider;fileAccessRuleProvider;revision=0;constructor(e){this.bus=e?.bus??g,this.handlerPriority=e?.handlerPriority??0,this.policyProvider=e?.policyProvider,this.fileAccessRuleProvider=e?.fileAccessRuleProvider,this.registerHandlers()}registerHandlers(){let e=this.bus.on(b.list,async e=>{let{toolsetName:t,adapterId:n,adapterName:r}=e.payload,{tools:i,toolsets:a}=await this.listToolsWithToolsets({toolsetName:t,adapterId:n,adapterName:r});e.setResult({tools:i,toolsets:a})},{priority:this.handlerPriority});this.cleanupHandlers.push(e);let t=this.bus.on(b.execute,async e=>{let{toolName:t,input:n,adapterId:r,adapterName:i,contextOverrides:a}=e.payload,o=await this.execute(t,n,{contextOverrides:a,adapterId:r,adapterName:i});e.setResult(o)},{priority:this.handlerPriority});this.cleanupHandlers.push(t)}async register(e){if(this.toolsets.has(e.metadata.name))throw Error(`Toolset '${e.metadata.name}' is already registered`);let t=[],n=[];for(let[,r]of Object.entries(e.tools)){let i=r.metadata.name;if(this.tools.has(i))throw Error(`Tool '${i}' is already registered (from toolset '${this.tools.get(i).toolsetName}')`);n.push({tool:r,toolsetName:e.metadata.name}),t.push(i)}this.toolsets.set(e.metadata.name,e);for(let e=0;e<n.length;e+=1)this.tools.set(t[e],n[e]);await this.emitRegistryChanged(`toolset-registered`,e.metadata.name).catch(t=>console.warn(`[ToolRegistry] Failed to emit ${b.registryChanged.subject} for '${e.metadata.name}':`,t)),await this.bus.emit(b.registered,{toolsetName:e.metadata.name,toolsetVersion:e.metadata.version,toolNames:t}).catch(t=>console.warn(`[ToolRegistry] Failed to emit ${b.registered.subject} for '${e.metadata.name}':`,t))}async deregister(e){let t=this.toolsets.get(e);if(!t)throw Error(`Toolset '${e}' is not registered`);for(let e of Object.values(t.tools))this.tools.delete(e.metadata.name);this.toolsets.delete(e),await this.emitRegistryChanged(`toolset-unregistered`,e).catch(t=>console.warn(`[ToolRegistry] Failed to emit ${b.registryChanged.subject} for '${e}':`,t))}async emitRegistryChanged(e,t){this.revision+=1,await this.bus.emit(b.registryChanged,{revision:this.revision,reason:e,toolsetName:t})}async execute(e,t,n){let r=this.tools.get(e);if(!r)return M(j.TOOL_NOT_FOUND,`Tool '${e}' not found`);let i=Je(n);if(!i.success)return i;let{tool:a,toolsetName:o}=r,s=await this.checkPolicy(o,e,i.data.adapterId,i.data.adapterName);if(s)return s;let c=Ze(),l=Date.now();await this.bus.emit(b.started,{toolName:e,toolsetName:o,executionId:c,timestamp:l});try{let r=a.inputSchema.safeParse(t);if(!r.success){let t=M(j.VALIDATION_FAILED,`Input validation failed`,{issues:r.error.issues});return await this.bus.emit(b.error,{toolName:e,toolsetName:o,executionId:c,timestamp:Date.now(),error:t.error}),t}let s=await this.buildExecutionContext(n,i.data),u=await a.execute(r.data,s);return u.success?await this.bus.emit(b.completed,{toolName:e,toolsetName:o,executionId:c,timestamp:Date.now(),durationMs:Date.now()-l}):await this.bus.emit(b.error,{toolName:e,toolsetName:o,executionId:c,timestamp:Date.now(),error:u.error}),u}catch(t){let n=Oe(t);return await this.bus.emit(b.error,{toolName:e,toolsetName:o,executionId:c,timestamp:Date.now(),error:n.error}),n}}async buildExecutionContext(e,t){let n=e?.contextOverrides?.constraints;if(this.fileAccessRuleProvider){let t=e?.contextOverrides?.cwd??process.cwd(),r=Ye(n),i=await this.fileAccessRuleProvider(t,r);n={...n,[Ee]:i}}let r=pe({...e?.contextOverrides,constraints:n}),i=e?.contextOverrides;return{...r,bus:this.bus,sessionId:i?.sessionId,agentId:i?.agentId,adapterId:t.adapterId,adapterName:t.adapterName,turnId:i?.turnId,turnContext:i?.turnContext,toolCallId:i?.toolCallId}}async checkPolicy(e,t,n,r){if(!this.policyProvider)return null;let i=await this.policyProvider(e);if(!i)return null;if(i.disabledTools?.includes(t))return M(j.PERMISSION_DENIED,`Tool '${t}' is disabled`,{toolsetName:e,toolName:t});if(i.allowedAdapters&&i.allowedAdapters.length>0){let t=r??n;if(!t||!i.allowedAdapters.includes(t))return M(j.PERMISSION_DENIED,`Adapter not allowed for toolset '${e}'`,{toolsetName:e,adapterId:n,adapterName:r,allowedAdapters:i.allowedAdapters})}return null}listTools(e){let t=[];for(let[,n]of this.tools){if(e?.toolsetName&&n.toolsetName!==e.toolsetName)continue;let{$schema:r,...i}=h.toJSONSchema(n.tool.inputSchema);t.push({name:n.tool.metadata.name,description:n.tool.metadata.description,toolsetName:n.toolsetName,annotations:n.tool.metadata.annotations,inputSchema:i})}return t}listToolsets(){let e=[];for(let[,t]of this.toolsets){let n={name:t.metadata.name,description:t.metadata.description,version:t.metadata.version,toolCount:Object.keys(t.tools).length};if(t.configSchema){let{$schema:e,...r}=h.toJSONSchema(t.configSchema);n.configSchema=r}e.push(n)}return e}async listToolsWithToolsets(e){let t=this.listTools(e),n=this.listToolsets(),r=e?.toolsetName?n.filter(t=>t.name===e.toolsetName):n,i=e?.adapterName??e?.adapterId;if(this.policyProvider&&i){let{filteredTools:e,filteredToolsets:n}=await Xe(t,r,i,this.policyProvider);return{tools:e,toolsets:n}}return{tools:t,toolsets:r}}getTool(e){return this.tools.get(e)?.tool}getToolset(e){return this.toolsets.get(e)}dispose(){for(let e of this.cleanupHandlers)e();this.cleanupHandlers.length=0}destroy(){this.dispose()}},$e=class extends w{triggersByExtension=new Map;stepsByExtension=new Map;revision=0;cache=null;constructor(e){super(e)}onInit(){this.registerHandler(xe.list,e=>{e.setResult({triggers:this.listTriggers(),steps:this.listSteps()})})}async register(e,t){let n=[],r=[],i=this.snapshotExtensionState(e),a=new Set;for(let e of this.triggersByExtension.values())for(let t of e)a.add(t.metadata.name);for(let e of this.stepsByExtension.values())for(let t of e)a.add(t.metadata.name);if(t.triggers)for(let r of t.triggers)this.assertExtensionNamespace(e,r.metadata),this.assertNoCollision(r.metadata,a),a.add(r.metadata.name),n.push({metadata:{...r.metadata,extensionName:e},configSchema:C(r.configSchema),outputSchema:C(r.outputSchema)});if(t.steps)for(let n of t.steps)this.assertExtensionNamespace(e,n.metadata),this.assertNoCollision(n.metadata,a),a.add(n.metadata.name),r.push({metadata:{...n.metadata,extensionName:e},configSchema:C(n.configSchema),inputSchema:C(n.inputSchema),outputSchema:C(n.outputSchema),runs:structuredClone(n.runs)});if(n.length>0&&this.triggersByExtension.set(e,n),r.length>0&&this.stepsByExtension.set(e,r),n.length>0||r.length>0){this.revision+=1;try{await this.emitChanged(e,`registered`)}catch(t){throw this.restoreExtensionState(e,i),t}}}async deregister(e){let t=this.snapshotExtensionState(e),n=this.triggersByExtension.delete(e),r=this.stepsByExtension.delete(e);if(n||r){this.revision+=1;try{await this.emitChanged(e,`deregistered`)}catch(n){throw this.restoreExtensionState(e,t),n}}}listTriggers(){return this.getCache().triggers.map(et)}listSteps(){return this.getCache().steps.map(tt)}async emitChanged(e,t){await this.bus.emit(xe.changed,{extensionName:e,revision:this.revision,reason:t})}getCache(){return(!this.cache||this.cache.revision!==this.revision)&&(this.cache={revision:this.revision,triggers:[...this.triggersByExtension.values()].flat(),steps:[...this.stepsByExtension.values()].flat()}),this.cache}snapshotExtensionState(e){return{triggers:this.triggersByExtension.get(e),steps:this.stepsByExtension.get(e),revision:this.revision,cache:this.cache}}restoreExtensionState(e,t){t.triggers?this.triggersByExtension.set(e,t.triggers):this.triggersByExtension.delete(e),t.steps?this.stepsByExtension.set(e,t.steps):this.stepsByExtension.delete(e),this.revision=t.revision,this.cache=t.cache}assertNoCollision(e,t){if(t.has(e.name))throw Error(`Workflow block name collision: '${e.name}' is already registered`)}assertExtensionNamespace(e,t){let n=`${e}.`;if(!t.name.startsWith(n))throw Error(`Workflow block '${t.name}' must be namespaced by extension '${n}'`)}};function et(e){return{metadata:nt(e.metadata),configSchema:structuredClone(e.configSchema),outputSchema:structuredClone(e.outputSchema)}}function tt(e){return{metadata:nt(e.metadata),configSchema:structuredClone(e.configSchema),inputSchema:structuredClone(e.inputSchema),outputSchema:structuredClone(e.outputSchema),runs:structuredClone(e.runs)}}function nt(e){return e.categories?{...e,categories:[...e.categories]}:{...e}}const K=`workflow.start`;function rt(e){return()=>({async execute(t,n){let{input:r={},executionHints:i}=t,{workflowId:a}=r;if(typeof a!=`string`||a.length===0)throw Error(`[TransitionActionRegistry] 'workflow.start' action requires a non-empty 'input.workflowId' string`);await e.request(Se.start,{workflowId:a,input:it(r,n),config:r.config,artifactRef:r.artifactRef,scope:r.scope,triggerPayload:{_transitionRuleId:n._transition.ruleId,_transitionDepth:n._transition.depth,_transitionEventType:n._transition.eventType},executionHints:i})}})}function it(e,t){let n=e.inputExpression;if(typeof n!=`string`)return e.input;let r=Ne(n,at(t)),i=ve.safeParse(r);if(!i.success)throw Error(`[TransitionActionRegistry] 'workflow.start' inputExpression for rule '${t._transition.ruleId}' must resolve to a JSON value`);return i.data}function at(e){let t={...e};return{...t,ctx:t}}var ot=class{factories=new Map;factoriesBySource=new Map;constructor(e){this.factories.set(K,rt(e)),this.factoriesBySource.set(`__builtin__`,[K])}register(e,t){let n=Object.keys(t);if(n.length!==0){if(this.factoriesBySource.has(e))throw Error(`TransitionActionRegistry: duplicate source '${e}'`);for(let t of n)if(this.factories.has(t))throw Error(`TransitionActionRegistry: duplicate action type '${t}' from source '${e}'`);for(let e of n)this.factories.set(e,t[e]);this.factoriesBySource.set(e,n)}}deregister(e){if(e===`__builtin__`)return;let t=this.factoriesBySource.get(e);if(t){for(let e of t)this.factories.delete(e);this.factoriesBySource.delete(e)}}async dispatch(e,t){let n=this.factories.get(e.type);if(!n)throw Error(`TransitionActionRegistry: unknown action type '${e.type}'. Registered types: ${[...this.factories.keys()].join(`, `)}`);await n().execute(e,t)}has(e){return this.factories.has(e)}listTypes(){return[...this.factories.keys()]}},st=class{rulesBySource=new Map;rulesByEventType=new Map;ruleIdSet=new Set;register(e,t){if(t.length===0)return;if(this.rulesBySource.has(e))throw Error(`TransitionRuleRegistry: duplicate source '${e}'`);let n=new Set,r=[];for(let i of t){let t=be.parse(i);if(n.has(t.id))throw Error(`TransitionRuleRegistry: duplicate rule ID '${t.id}' within source '${e}'`);if(this.ruleIdSet.has(t.id))throw Error(`TransitionRuleRegistry: duplicate rule ID '${t.id}' from source '${e}'`);n.add(t.id),r.push({rule:t,condition:t.when===void 0?void 0:je.parse(t.when)})}for(let e of r){let{rule:t}=e;this.ruleIdSet.add(t.id);let n=this.rulesByEventType.get(t.on)??[];n.push(e),this.rulesByEventType.set(t.on,n)}this.rulesBySource.set(e,r)}deregister(e){let t=this.rulesBySource.get(e);if(t){for(let{rule:e}of t){this.ruleIdSet.delete(e.id);let t=this.rulesByEventType.get(e.on);if(t){let n=t.filter(t=>t.rule.id!==e.id);n.length>0?this.rulesByEventType.set(e.on,n):this.rulesByEventType.delete(e.on)}}this.rulesBySource.delete(e)}}getRulesForEvent(e){let t=this.rulesByEventType.get(e);return t?t.filter(e=>e.rule.enabled):[]}snapshotSource(e){let t=this.rulesBySource.get(e);if(t)return{ruleIds:t.map(e=>e.rule.id)}}},ct=class extends w{ruleRegistry;actionRegistry;depthMap=new Map;constructor(e){super(e),this.ruleRegistry=new st,this.actionRegistry=new ot(e)}onInit(){this.registerHandler(v.created,async e=>{await this.handleArtifactEvent(`artifact.created`,{artifact:e.payload.artifact})}),this.registerHandler(v.revised,async e=>{let t=await this.resolvePreviousRevisedArtifact(e.payload.previous);await this.handleArtifactEvent(`artifact.revised`,{artifact:e.payload.artifact,previous:e.payload.previous,...t===void 0?{}:{previousArtifact:t}})}),this.registerHandler(v.status.changed,async e=>{let t=await this.resolveStatusChangedArtifact(e.payload.artifact);t!==void 0&&await this.handleArtifactEvent(`artifact.status.changed`,{artifact:t,path:e.payload.path,previous:e.payload.previous,current:e.payload.current})})}async handleArtifactEvent(e,t){let n=this.artifactKey(t.artifact),r=this.readDepth(n);if(r>=10){console.warn(`[TransitionPipelineService] Transition depth limit (10) reached for event '${e}' on artifact '${n}'. Loop protection active — skipping rule evaluation.`);return}let i=this.ruleRegistry.getRulesForEvent(e);if(i.length!==0)for(let a of i)await this.evaluateAndDispatch(a,e,t,n,r)}async resolveStatusChangedArtifact(e){let t=await this.bus.requestOptional(v.resolve,{ref:e});if(!t.handled){console.warn(`[TransitionPipelineService] No artifact resolver is registered for status transition on artifact '${this.artifactKey(e)}'. Skipping rule evaluation.`);return}if(t.data.artifact===null){console.warn(`[TransitionPipelineService] Could not resolve status transition artifact '${this.artifactKey(e)}'. Skipping rule evaluation.`);return}return t.data.artifact}async resolvePreviousRevisedArtifact(e){let t=await this.bus.requestOptional(v.resolve,{ref:e});if(!(!t.handled||t.data.artifact===null))return t.data.artifact}async evaluateAndDispatch(e,t,n,r,i){let{rule:a,condition:o}=e,s={...n,_transition:{ruleId:a.id,eventType:t,depth:i+1}};if(o!==void 0){let e={...s},t;try{t=Me(o,e)}catch(e){console.error(`[TransitionPipelineService] Condition evaluation error for rule '${a.id}':`,e);return}if(!t)return}try{await this.actionRegistry.dispatch(a.action,s),a.action.type===`workflow.start`&&this.incrementDepth(r)}catch(e){console.error(`[TransitionPipelineService] Action dispatch error for rule '${a.id}' (action type '${a.action.type}'):`,e)}}artifactKey(e){return`${typeof e.kind==`string`?e.kind:`unknown`}:${typeof e.id==`string`?e.id:`unknown`}`}readDepth(e){let t=this.depthMap.get(e);return t===void 0?0:Date.now()>t.expiresAt?(this.depthMap.delete(e),0):t.count}incrementDepth(e){let t=this.depthMap.get(e);this.depthMap.set(e,{count:t===void 0?1:t.count+1,expiresAt:Date.now()+6e4})}};function lt(e){return async t=>{let n=await ut(e,t);if(!n)return{handled:!1,sessionId:null,clientAccountId:null,changed:!1};let{sessionId:r}=n,{observation:i,accountObserveRequest:a}=dt(t),o=await e.requestOptional(O.account.observe,a);if(!o.handled)return{handled:!1,sessionId:r,clientAccountId:null,changed:!1};let{clientAccountId:s}=o.data;return{handled:!0,sessionId:r,clientAccountId:s,changed:await vt(e,r,i,s)}}}async function ut(t,n){switch(n.locator.kind){case`session`:{let{session:r}=await t.request(e.get,{sessionId:n.locator.sessionId});return r?{sessionId:r.sessionId,session:r}:null}case`adapter-session`:{let{session:r}=await t.request(e.getByAdapterSessionId,{adapterSessionId:n.locator.adapterSessionId});return r?{sessionId:r.sessionId,session:r}:null}case`both`:{let[{session:r},{session:i}]=await Promise.all([t.request(e.get,{sessionId:n.locator.sessionId}),t.request(e.getByAdapterSessionId,{adapterSessionId:n.locator.adapterSessionId})]);if(!r&&!i)return null;if(!r||!i)throw Error(`Session locator mismatch: sessionId "${n.locator.sessionId}" and adapterSessionId "${n.locator.adapterSessionId}" must both resolve the same session`);if(r.sessionId!==i.sessionId)throw Error(`Session locator mismatch: sessionId "${n.locator.sessionId}" and adapterSessionId "${n.locator.adapterSessionId}" resolve to different sessions`);return{sessionId:r.sessionId,session:r}}}}function dt(e){let t={clientId:e.clientId,source:e.source,kind:e.kind,observedAt:e.observedAt,payload:gt(e.payload)};return{observation:t,accountObserveRequest:ft(t)}}function ft(e){let t=e.payload,n=pt(t),r=mt(t);if(r.length>0)return{clientId:e.clientId,observedAt:e.observedAt,displayLabel:ht(t,n),identifiers:r};throw Error(`client.session.account.observe for "${e.clientId}" requires canonical client account identifiers`)}function pt(e){return _t(e.accountInfo)??e}function mt(e){let t=e.identifiers;if(!Array.isArray(t))return[];try{return h.array(we).min(1).parse(t)}catch(e){throw Error(`client.session.account.observe received malformed canonical client account identifiers`,{cause:e})}}function ht(e,t){return q(e.displayLabel)??q(t.displayLabel)??q(t.email)??q(t.label)}function gt(e){return structuredClone(e)}function _t(e){return typeof e==`object`&&e&&!Array.isArray(e)?e:void 0}function q(e){return typeof e==`string`&&e.trim().length>0?e.trim():void 0}async function vt(t,n,r,i){let a=await t.request(e.update,{sessionId:n,clientId:r.clientId,clientAccountId:i,lastClientIdentityObservation:r});if(!a.success)throw Error(`Failed to update session "${n}" with client account linkage`);return a.clientAccountChanged??!1}const yt=S(`session-storage`).name;var bt=class extends w{constructor(e=g){super(e)}onInit(){let e=lt(this.bus);this.registerHandler(O.session.account.observe,async t=>{t.setResult(await e(Te.request.parse(t.payload)))})}};const xt={name:`makaio.session-client-account-linking`,displayName:`Session Client Account Linking`,version:`0.1.0`,dependencies:[x(yt),x(`makaio.clients-core`)],critical:!1,create:e=>new bt(e.bus)},St={name:`framework-shell`,displayName:`Shell`,version:`0.1.0`,surface:`interactive`,windows:[{id:`main`,style:`utility`,width:1e3,height:700,singleton:!0}]};async function Ct(e){let{harnesses:t}=await e.request(m.list,{}),n=new Set(t.map(e=>e.id));for(let t of ge){if(n.has(t.id))continue;let r={...t};await e.request(m.set,{harness:r})}}function wt(e){return{id:e.id,name:e.name,description:e.description??void 0,adapterName:e.adapterName??void 0,clientId:e.clientId??void 0,env:e.env??void 0,credentials:e.credentials??void 0,cwd:e.cwd??void 0,approvalPolicy:_.parse(e.approvalPolicy),nativeTools:{enabled:e.nativeToolsEnabled,disabled:e.nativeToolsDisabled},registryTools:{enabled:e.registryToolsEnabled,disabled:e.registryToolsDisabled},skills:e.skillsEnabled||e.skillsDisabled?{enabled:e.skillsEnabled??[],disabled:e.skillsDisabled??[]}:void 0,toolCapabilityMap:e.toolCapabilityMap?h.record(h.string(),h.array(ye)).parse(e.toolCapabilityMap):void 0,capabilityOverrides:e.capabilityOverrides?h.record(h.string(),_).parse(e.capabilityOverrides):void 0,toolApprovalOverrides:e.toolApprovalOverrides?h.record(h.string(),_).parse(e.toolApprovalOverrides):void 0,isDefault:e.isDefault,enabled:e.enabled,createdAt:e.createdAt,updatedAt:e.updatedAt}}function Tt(e){return{id:e.id,name:e.name,description:e.description??null,adapterName:e.adapterName??null,clientId:e.clientId??null,env:e.env??null,credentials:e.credentials??null,cwd:e.cwd??null,approvalPolicy:e.approvalPolicy,nativeToolsEnabled:e.nativeTools.enabled,nativeToolsDisabled:e.nativeTools.disabled,registryToolsEnabled:e.registryTools.enabled,registryToolsDisabled:e.registryTools.disabled,skillsEnabled:e.skills?.enabled??null,skillsDisabled:e.skills?.disabled??null,toolCapabilityMap:e.toolCapabilityMap??null,capabilityOverrides:e.capabilityOverrides??null,toolApprovalOverrides:e.toolApprovalOverrides??null,isDefault:e.isDefault,enabled:e.enabled}}const Et=Pe({table:ce,subjects:{get:m.get,set:m.set,delete:m.delete},idField:`id`,singularKey:`harness`,mapper:wt,toDbValues:Tt,lifecycle:{created:y.created,updated:y.updated,deleted:y.deleted}}),Dt=Fe({table:ce,subject:m.list,pluralKey:`harnesses`,mapper:wt,buildPredicates:(e,t)=>{let n=[];return e.adapterName&&n.push(T(t.adapterName,e.adapterName)),e.clientId&&n.push(T(t.clientId,e.clientId)),e.name&&n.push(T(t.name,e.name)),n}});function Ot(e,t,n){let r=Et(e,t),i=Dt(e,t);return()=>{r(),i()}}function J(e,t,n){return e??t??n}var kt=class extends w{static storage={drizzle:Ot};constructor(e=g){super(e)}async onInit(){await Ct(this.bus),this.registerHandlers()}registerHandlers(){this.registerHandler(y.get,async e=>{let t=await this.loadHarness(e.payload);if(!t)throw Error(`Harness not found`);e.setResult(t)}),this.registerHandler(y.list,async e=>{let{harnesses:t}=await this.bus.request(m.list,e.payload);e.setResult({harnesses:t})}),this.registerHandler(y.set,async e=>{let t=await this.upsertHarness(e.payload);e.setResult({id:t})}),this.registerHandler(y.delete,async e=>{let{deleted:t}=await this.bus.request(m.delete,{id:e.payload.id});e.setResult({success:t})}),this.registerHandler(y.getDefault,async e=>{let t=await this.getDefaultHarness(e.payload.adapterName,e.payload.clientId);e.setResult(t)}),this.registerHandler(y.resolve,async e=>{let{adapterName:t,clientId:n,personaHarnessId:r,profileHarnessId:i}=e.payload;if(r){let i=await this.resolveAndValidateHarness(r,t,`persona`,n);e.setResult(i);return}if(i){let r=await this.resolveAndValidateHarness(i,t,`profile`,n);e.setResult(r);return}let a=await this.getDefaultHarness(t,n);e.setResult(a)}),this.registerHandler(y.getSchema,({setResult:e})=>{let{$schema:t,...n}=h.toJSONSchema(_e);e({schema:n,uiConfig:{editMode:`fullPage`,hiddenFields:[`isDefault`]}})})}async upsertHarness(e){let t=await this.resolveHarnessId(e.name,e.adapterName,e.clientId),n=await this.loadHarness({id:t,adapterName:e.adapterName,clientId:e.clientId}),r=this.mergeHarnessPayload(t,e,n);return r.adapterName&&await this.validateNativeTools(r.adapterName,r.nativeTools),await this.bus.request(m.set,{harness:r}),t}mergeHarnessPayload(e,t,n){let r={enabled:[],disabled:[]};return{id:e,name:t.name,description:J(t.description,n?.description,void 0),adapterName:t.adapterName,clientId:J(t.clientId,n?.clientId,void 0),env:J(t.env,n?.env,void 0),credentials:J(t.credentials,n?.credentials,void 0),cwd:J(t.cwd,n?.cwd,void 0),approvalPolicy:J(t.approvalPolicy,n?.approvalPolicy,`always-ask`),nativeTools:J(t.nativeTools,n?.nativeTools,r),registryTools:J(t.registryTools,n?.registryTools,r),skills:J(t.skills,n?.skills,void 0),toolCapabilityMap:t.toolCapabilityMap??n?.toolCapabilityMap,capabilityOverrides:t.capabilityOverrides??n?.capabilityOverrides,toolApprovalOverrides:t.toolApprovalOverrides??n?.toolApprovalOverrides,isDefault:J(t.isDefault,n?.isDefault,!1),enabled:J(t.enabled,n?.enabled,!0)}}async resolveHarnessId(e,t,n){let r=n??t,{harnesses:i}=await this.bus.request(m.list,{name:e}),a=i.find(t=>t.name===e&&(t.clientId??t.adapterName)===r);if(a)return a.id;let o=i.find(t=>t.name===e&&(t.clientId??t.adapterName)!==r);if(o){let t=o.clientId?`client '${o.clientId}'`:`adapter '${o.adapterName}'`;throw Error(`Harness "${e}" already exists with scope ${t}; cannot change scope to ${r??`(none)`}`)}return this.createStableHarnessId(e,r)}async loadHarness(e){if(e.id){let{harness:t}=await this.bus.request(m.get,{id:e.id});return t&&(!e.adapterName||t.adapterName===e.adapterName)&&(!e.clientId||t.clientId===e.clientId)?t:null}if(!e.name)return null;let{harnesses:t}=await this.bus.request(m.list,{name:e.name,adapterName:e.adapterName,clientId:e.clientId});return e.clientId?t.find(t=>t.clientId===e.clientId)??null:e.adapterName?t.find(t=>t.adapterName===e.adapterName)??null:t[0]??null}async getDefaultHarness(e,t){if(t){let{harnesses:e}=await this.bus.request(m.list,{clientId:t}),n=e.find(e=>e.isDefault&&e.enabled);if(n)return n;let r=e.find(e=>e.enabled);if(r)return r}if(e){let{harnesses:t}=await this.bus.request(m.list,{adapterName:e}),n=t.find(e=>e.isDefault&&e.enabled);if(n)return n;let r=t.find(e=>e.enabled);if(r)return r}let n=t?e?`client '${t}' or adapter '${e}'`:`client '${t}'`:`adapter '${e}'`;throw Error(`No harness available for ${n}`)}assertHarnessAdapterMatch(e,t,n,r){if(e.adapterName&&t&&e.adapterName!==t)throw Error(`Resolved ${n} harness adapter mismatch: expected "${t}", got "${e.adapterName}"`);if(e.clientId&&r&&e.clientId!==r)throw Error(`Resolved ${n} harness client mismatch: expected "${r}", got "${e.clientId}"`)}assertHarnessEnabled(e,t){if(!e.enabled)throw Error(`Resolved ${t} harness is disabled: ${e.id}`)}async validateNativeTools(e,t){let n=await this.bus.requestOptional(me.getCapabilities,{adapterName:e});if(!n.handled)return;let r=new Set(n.data.nativeTools),i=[...t.enabled,...t.disabled].filter(e=>!r.has(e));if(i.length>0)throw Error(`Tool '${i[0]}' not found in adapter '${e}' native tools. Declared tools: ${[...r].join(`, `)}`)}createStableHarnessId(e,t){return`harness-${de(`sha256`).update(`${t??``}\0${e}`).digest(`hex`).slice(0,24)}`}async resolveAndValidateHarness(e,t,n,r){let i=await this.loadHarness({id:e});if(!i)throw Error(`${n===`persona`?`Persona`:`Profile`} harness not found: ${e}`);return this.assertHarnessAdapterMatch(i,t,n,r),this.assertHarnessEnabled(i,n),i}};const At={name:`makaio.harness`,displayName:`Harness`,version:`0.1.0`,critical:!0,storage:{registerHandlers:E(Ot)},create:e=>new kt(e.bus)},Y=S(`session-storage`),X=S(`session-bridge`),Z=S(`session`),jt=S(`session-orchestrator`),Q=S(`tool-registry`),Mt=S(`tool-approval`),Nt=S(`tray-menu`),Pt=S(`capability`),Ft=S(`model-registry`),It=S(`workflow-block-registry`),Lt=S(`transition-pipeline`),Rt=S(`filesystem`),zt=S(`git`),Bt=S(`artifact-schema-registry`),Vt=S(`artifact-lifecycle-hook-registry`),Ht=S(`facet-namespace-registry`),Ut=S(`surface-binding-registry`),Wt={name:Bt.name,displayName:`Artifact Schema Registry`,version:`0.1.0`,critical:!0,create:e=>new R(e.bus)},Gt={name:Vt.name,displayName:`Artifact Lifecycle Hook Registry`,version:`0.1.0`,critical:!0,create:e=>new Ue(e.bus)},Kt={name:Ht.name,displayName:`Facet Namespace Registry`,version:`0.1.0`,critical:!0,create:e=>new We(e.bus)},qt={name:Ut.name,displayName:`Surface Binding Registry`,version:`0.1.0`,critical:!0,create:e=>new Ge(e.bus)},$={name:Y.name,displayName:`Session Storage`,version:`0.1.0`,critical:!0,storage:{registerHandlers:E((e,n,r)=>{let o=[],p=e=>{for(let t=o.length-1;t>=0;--t)try{o[t]?.()}catch(t){console.warn(`[sessionStoragePackage] cleanup failed during ${e}:`,t)}o.length=0};try{o.push(c(e,n,r)),o.push(i(e,n,r)),o.push(s(e,n,r)),o.push(a(e,n,r)),o.push(t(e,n,r)),o.push(ne(e,n,r)),o.push(ee(e,n,r)),o.push(te(e,n)),o.push(l(e,n)),o.push(u(e)),o.push(f(e)),o.push(d(e))}catch(e){throw p(`rollback`),e}return()=>{p(`shutdown`)}})}},Jt={name:X.name,displayName:`Session Bridge`,version:`0.1.0`,dependencies:[x(Y.name)],critical:!0,create:e=>new n(e.bus)},Yt={name:Z.name,displayName:`Session`,version:`0.1.0`,dependencies:[x(X.name)],critical:!0,create:e=>new r(e.bus)},Xt={name:jt.name,displayName:`Session Orchestrator`,version:`0.1.0`,dependencies:[x(Z.name),x(G.name)],critical:!0,runtimeOwnership:{sessionOrchestrator:!0},create:e=>new o(e.bus,e.machineId)},Zt={name:Q.name,displayName:`Tool Registry`,version:`0.1.0`,critical:!0,create:e=>new Qe({bus:e.bus})},Qt={name:Mt.name,displayName:`Tool Approval`,version:`0.1.0`,dependencies:[x(Q.name)],critical:!0,create:e=>new oe(e.bus)},$t={name:Nt.name,displayName:`Tray Menu`,version:`0.1.0`,critical:!0,create:e=>new se(e.bus)},en={name:Pt.name,displayName:`Capability`,version:`0.1.0`,critical:!0,create:e=>new re(e.bus)},tn={name:It.name,displayName:`Workflow Block Registry`,version:`0.1.0`,critical:!0,create:e=>new $e(e.bus)},nn={name:Lt.name,displayName:`Transition Pipeline`,version:`0.1.0`,critical:!0,create:e=>new ct(e.bus)},rn={name:Rt.name,displayName:`Filesystem`,version:`0.1.0`,critical:!0,create:e=>new ue(e.bus,e.machineId)},an={name:zt.name,displayName:`Git`,version:`0.1.0`,dependencies:[x(Rt.name)],critical:!0,create:e=>new Ie(e.bus)};function on(e){return{name:Ft.name,displayName:`Model Registry`,version:`0.1.0`,critical:!0,create:t=>new ie({bus:t.bus,fetcher:e})}}const sn=[Wt,Gt,Kt,qt,$,Jt,xt,Yt,Xt,le,Zt,Qt,$t,en,At,G,St,tn,nn,an,rn];function cn(){let e=new Map;return{filter:e=>!!e.tools?.createToolsets,async processActivated(t,n,r){let i=r.getService(Q);if(!i)throw Error(`ToolRegistry is not available. Ensure toolRegistryPackage is included in the composition root.`);let a=n.tools.createToolsets(r),o=[];try{for(let e of a)await i.register(e),o.push(()=>i.deregister(e.metadata.name))}catch(e){for(let e=o.length-1;e>=0;--e)try{await o[e]()}catch(e){console.error(`[ToolContributionProcessor] Rollback error for "${t}":`,e)}throw e}e.set(t,o)},async processStopped(t){let n=e.get(t);if(n){for(let e=n.length-1;e>=0;--e)try{await n[e]()}catch(e){console.error(`[ToolContributionProcessor] Deregister error for "${t}":`,e)}e.delete(t)}}}}export{Qt as A,Qe as B,Kt as C,Yt as D,Xt as E,ct as F,Ge as G,qe as H,st as I,z as J,We as K,ot as L,nn as M,$t as N,$ as O,tn as P,K as R,on as S,Jt as T,Ke as U,G as V,W,R as Y,Nt as _,Bt as a,Wt as b,Ft as c,Y as d,Z as f,Lt as g,Q as h,Vt as i,Zt as j,qt as k,X as l,Mt as m,ke as n,Pt as o,Ut as p,Ue as q,cn as r,Ht as s,De as t,jt as u,It as v,sn as w,en as x,Gt as y,$e as z};
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
import { LibSQLDatabase } from "drizzle-orm/libsql";
|
|
2
|
-
|
|
3
|
-
//#region storage/drizzle/src/types.d.ts
|
|
4
|
-
/**
|
|
5
|
-
* Canonical database type alias for all Makaio storage consumers.
|
|
6
|
-
*
|
|
7
|
-
* Typed as the shared async-compatible Drizzle surface, which keeps the
|
|
8
|
-
* cross-driver query contract stable while excluding libsql-only members such
|
|
9
|
-
* as `$client`, `batch()`, and `resultKind`.
|
|
10
|
-
*
|
|
11
|
-
* At runtime, the factory in `client.ts` may return a `BunSQLiteDatabase`
|
|
12
|
-
* instance (sync dialect) cast to this type. That is safe because:
|
|
13
|
-
* - All query-builder methods (`select`, `insert`, `update`, `delete`) exist
|
|
14
|
-
* on both drivers with compatible call signatures.
|
|
15
|
-
* - Awaiting Bun's synchronous return values still preserves the existing
|
|
16
|
-
* async call sites, even though it introduces the normal microtask boundary
|
|
17
|
-
* of `await`.
|
|
18
|
-
*
|
|
19
|
-
* **All consumers must import this type** instead of importing
|
|
20
|
-
* `LibSQLDatabase` directly from `drizzle-orm/libsql`. This single import
|
|
21
|
-
* seam is what makes the runtime driver swap transparent to callers.
|
|
22
|
-
*
|
|
23
|
-
* **Caveat:** Consumers must not access libsql-only members such as
|
|
24
|
-
* `db.$client` directly — use the `close()` function returned by
|
|
25
|
-
* `createDatabaseClient` instead. The factory handles driver-specific teardown
|
|
26
|
-
* internally.
|
|
27
|
-
* @typeParam TSchema - Drizzle table schema record. Defaults to an empty schema.
|
|
28
|
-
*/
|
|
29
|
-
type MakaioDatabase<TSchema extends Record<string, unknown> = Record<string, never>> = Omit<LibSQLDatabase<TSchema>, '$client' | 'batch' | 'resultKind'>;
|
|
30
|
-
//#endregion
|
|
31
|
-
export { MakaioDatabase as t };
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|