@makaio/framework 1.0.0-dev-1779046984397
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/LICENSE +21 -0
- package/README.md +363 -0
- package/dist/account-identity-Ce1Bwrqi.mjs +1 -0
- package/dist/adapter-CbyjCE2d.mjs +1 -0
- package/dist/adapters/acp-client/index.d.mts +209 -0
- package/dist/adapters/acp-client/index.mjs +1 -0
- package/dist/adapters/config/index.d.mts +429 -0
- package/dist/adapters/config/index.mjs +1 -0
- package/dist/adapters/index.d.mts +4175 -0
- package/dist/adapters/index.mjs +11 -0
- package/dist/adapters/node.d.mts +263 -0
- package/dist/adapters/node.mjs +4 -0
- package/dist/adapters/stream-session/index.d.mts +1384 -0
- package/dist/adapters/stream-session/index.mjs +1 -0
- package/dist/adapters/stream-session/testing/index.d.mts +29 -0
- package/dist/adapters/stream-session/testing/index.mjs +1 -0
- package/dist/base-orchestrator-9z8TuA5a.d.mts +772 -0
- package/dist/bus/index.d.mts +3331 -0
- package/dist/bus/index.mjs +1 -0
- package/dist/bus-B1seC4M_.mjs +2 -0
- package/dist/capability-service-tnpR_TaB.mjs +1 -0
- package/dist/chunk-Dc06z0qk.mjs +1 -0
- package/dist/chunk-cpUYaJdV.mjs +1 -0
- package/dist/cleanEnvForAdapter-DvcIGXTG.mjs +1 -0
- package/dist/client-Dh4x4GQN.mjs +1 -0
- package/dist/clients/index.d.mts +2786 -0
- package/dist/clients/index.mjs +1 -0
- package/dist/clients-namespace-B0xAPZ6J.d.mts +332 -0
- package/dist/config-namespace-DLSs83zr.d.mts +638 -0
- package/dist/config-namespace-MJT8P0Ud.mjs +1 -0
- package/dist/contracts/adapter/index.d.mts +3 -0
- package/dist/contracts/adapter/index.mjs +1 -0
- package/dist/contracts/adapter/schemas/session-lineage.d.mts +2 -0
- package/dist/contracts/adapter/schemas/session-lineage.mjs +1 -0
- package/dist/contracts/client/index.d.mts +3 -0
- package/dist/contracts/client/index.mjs +1 -0
- package/dist/contracts/common/index.d.mts +2 -0
- package/dist/contracts/common/index.mjs +1 -0
- package/dist/contracts/config/index.d.mts +455 -0
- package/dist/contracts/config/index.mjs +1 -0
- package/dist/contracts/extension/index.d.mts +3 -0
- package/dist/contracts/extension/index.mjs +1 -0
- package/dist/contracts/harness/index.d.mts +2 -0
- package/dist/contracts/harness/index.mjs +1 -0
- package/dist/contracts/host/index.d.mts +2 -0
- package/dist/contracts/host/index.mjs +1 -0
- package/dist/contracts/index.d.mts +12665 -0
- package/dist/contracts/index.mjs +1 -0
- package/dist/contracts/model-registry/index.d.mts +2 -0
- package/dist/contracts/model-registry/index.mjs +1 -0
- package/dist/contracts/native-session-supervisor/index.d.mts +2 -0
- package/dist/contracts/native-session-supervisor/index.mjs +1 -0
- package/dist/contracts/platform/index.d.mts +2 -0
- package/dist/contracts/platform/index.mjs +1 -0
- package/dist/contracts/provider/index.d.mts +3 -0
- package/dist/contracts/provider/index.mjs +1 -0
- package/dist/contracts/session/index.d.mts +3 -0
- package/dist/contracts/session/index.mjs +1 -0
- package/dist/contracts/shared/index.d.mts +2 -0
- package/dist/contracts/shared/index.mjs +1 -0
- package/dist/contracts/skill/index.d.mts +2 -0
- package/dist/contracts/skill/index.mjs +1 -0
- package/dist/contracts/toast/index.d.mts +198 -0
- package/dist/contracts/toast/index.mjs +1 -0
- package/dist/contracts/variant/index.d.mts +2 -0
- package/dist/contracts/variant/index.mjs +1 -0
- package/dist/core/index.d.mts +1001 -0
- package/dist/core/index.mjs +1 -0
- package/dist/credential-ref-DLCsoKVZ.mjs +1 -0
- package/dist/cursor-storage-DOQdvo9j.mjs +1 -0
- package/dist/definition-DkYy1PZz.mjs +1 -0
- package/dist/definition-DtUNiGom.d.mts +158 -0
- package/dist/definition-DxvZ9e22.d.mts +376 -0
- package/dist/drizzle-CWVVw7Er.mjs +1 -0
- package/dist/execution-target-BW_uiBVe.mjs +1 -0
- package/dist/extension-COqwS-2Q.mjs +1 -0
- package/dist/extension-Cbrl4YGX.mjs +1 -0
- package/dist/extension-namespace-zaGKi6Qj.mjs +1 -0
- package/dist/handlers-iGKUJ380.mjs +41 -0
- package/dist/harness-CEq1Zkf9.mjs +1 -0
- package/dist/hooks/index.d.mts +423 -0
- package/dist/hooks/index.mjs +1 -0
- package/dist/host-CXAUGGN0.mjs +1 -0
- package/dist/identity-B_A0mE63.mjs +1 -0
- package/dist/index-6lyShOoU.d.mts +225 -0
- package/dist/index-7sXlairn2.d.mts +43 -0
- package/dist/index-BAKM2GMH2.d.mts +535 -0
- package/dist/index-BB419vv-.d.mts +3897 -0
- package/dist/index-BJOfdtbw.d.mts +729 -0
- package/dist/index-BXP9GK5q.d.mts +1075 -0
- package/dist/index-BdPwu6c0.d.mts +1730 -0
- package/dist/index-BePI0ckL.d.mts +40 -0
- package/dist/index-Bigx81Kr.d.mts +37 -0
- package/dist/index-BnNqbx2I.d.mts +134 -0
- package/dist/index-Bv15sNLn.d.mts +389 -0
- package/dist/index-C-myW_aK.d.mts +412 -0
- package/dist/index-C9F3Fc1A.d.mts +2938 -0
- package/dist/index-CNxS4Tlu.d.mts +1 -0
- package/dist/index-CVA0m1g9.d.mts +995 -0
- package/dist/index-C_kS2aqV2.d.mts +438 -0
- package/dist/index-Ch3ph52M2.d.mts +40 -0
- package/dist/index-CnZOKNjU.d.mts +89 -0
- package/dist/index-D1T-PPqF.d.mts +67 -0
- package/dist/index-D7T8XCku.d.mts +341 -0
- package/dist/index-DBQtpFLE.d.mts +4843 -0
- package/dist/index-DEw90pa2.d.mts +183 -0
- package/dist/index-DQRsGXb5.d.mts +109 -0
- package/dist/index-Dd5s4MSm.d.mts +72 -0
- package/dist/index-DubqLGH8.d.mts +1002 -0
- package/dist/index-ESSDWIB7.d.mts +11 -0
- package/dist/index-N5K1NOYs.d.mts +184 -0
- package/dist/index-PdUSmPT2.d.mts +180 -0
- package/dist/index-SzSiyG61.d.mts +117 -0
- package/dist/index-T0471kWA.d.mts +6760 -0
- package/dist/index-WKjrpcA_.d.mts +218 -0
- package/dist/index-hapw9_En.d.mts +13592 -0
- package/dist/index-iID2R9G1.d.mts +1490 -0
- package/dist/kernel/cli/index.d.mts +141 -0
- package/dist/kernel/cli/index.mjs +1 -0
- package/dist/kernel/cli/schemas.d.mts +63 -0
- package/dist/kernel/cli/schemas.mjs +1 -0
- package/dist/kernel/extension/index.d.mts +2 -0
- package/dist/kernel/extension/index.mjs +1 -0
- package/dist/kernel/index.d.mts +296 -0
- package/dist/kernel/index.mjs +1 -0
- package/dist/kernel/namespace/index.d.mts +2 -0
- package/dist/kernel/namespace/index.mjs +1 -0
- package/dist/kernel/observability/index.d.mts +2 -0
- package/dist/kernel/observability/index.mjs +1 -0
- package/dist/kernel/providers/index.d.mts +2 -0
- package/dist/kernel/providers/index.mjs +1 -0
- package/dist/kernel/window/index.d.mts +2 -0
- package/dist/kernel/window/index.mjs +1 -0
- package/dist/model-registry-BNzpR6TU.mjs +1 -0
- package/dist/model-registry-CIscwC52.mjs +1 -0
- package/dist/namespace-0yuzAKlr.mjs +1 -0
- package/dist/namespace-8cNguvIp.mjs +1 -0
- package/dist/namespace-BK2erxpV.d.mts +921 -0
- package/dist/namespace-Bmc7AW4J2.mjs +1 -0
- package/dist/namespace-C2ufjgaQ.d.mts +767 -0
- package/dist/namespace-C54Oj025.d.mts +159 -0
- package/dist/namespace-CCDEOwmW.d.mts +1313 -0
- package/dist/namespace-CfEWMXBx.mjs +1 -0
- package/dist/namespace-CkLUtc0g.d.mts +580 -0
- package/dist/namespace-D5Wrt7YU.mjs +1 -0
- package/dist/namespace-DZcuLwEA.d.mts +51 -0
- package/dist/namespace-Db-p67Rg.mjs +1 -0
- package/dist/namespace-FWx6HxaW.d.mts +611 -0
- package/dist/namespace-GLGGcWPH.d.mts +43 -0
- package/dist/namespace-N0dfwSg6.mjs +1 -0
- package/dist/namespace-O5SNY-LV.d.mts +2226 -0
- package/dist/namespace-ZbthBQVt.d.mts +142 -0
- package/dist/namespace-bq4Prtzn.d.mts +2046 -0
- package/dist/namespace-pNcSglBS.mjs +1 -0
- package/dist/namespace-ptv-pw_g.d.mts +3019 -0
- package/dist/namespace-xkvVw3hf2.d.mts +189 -0
- package/dist/native-session-supervisor-L-UIaEfd.mjs +1 -0
- package/dist/node/bus-server/index.d.mts +178 -0
- package/dist/node/bus-server/index.mjs +1 -0
- package/dist/node/bus-server/server-lifecycle.d.mts +2 -0
- package/dist/node/bus-server/server-lifecycle.mjs +1 -0
- package/dist/node/machine-identity/index.d.mts +85 -0
- package/dist/node/machine-identity/index.mjs +3 -0
- package/dist/node/transports/index.d.mts +1752 -0
- package/dist/node/transports/index.mjs +2 -0
- package/dist/orchestrator-shared-DrjtTXYh.d.mts +249 -0
- package/dist/orchestrator-shared-Wv1GI2mW.mjs +1 -0
- package/dist/platform-BbSLVg5b.mjs +1 -0
- package/dist/profile-4StaDQW0.mjs +1 -0
- package/dist/provider-context-CNRQ4d5m.mjs +1 -0
- package/dist/providers/index.d.mts +135 -0
- package/dist/providers/index.mjs +1 -0
- package/dist/providers-Cr4Za8a1.mjs +1 -0
- package/dist/providers-namespace-CDwxY_DV.d.mts +583 -0
- package/dist/schema-BwzXEtT2.d.mts +837 -0
- package/dist/schema-CAw_BqaG.mjs +1 -0
- package/dist/schema-introspection-D61TT_7b.mjs +1 -0
- package/dist/schema-uSGW-6oM.mjs +1 -0
- package/dist/schemas-BXstpWVp.mjs +1 -0
- package/dist/schemas-BdMU-gew.d.mts +160 -0
- package/dist/schemas-C40ZAJ33.mjs +1 -0
- package/dist/schemas-C5xtVqdb.d.mts +46 -0
- package/dist/schemas-CGZy_rU6.d.mts +13 -0
- package/dist/schemas-CLxtoKFy.mjs +1 -0
- package/dist/schemas-Co_sVhzz.mjs +1 -0
- package/dist/schemas-D9108Iv1.d.mts +182 -0
- package/dist/schemas-DENVYyds.d.mts +463 -0
- package/dist/schemas-DbWs_hj8.d.mts +174 -0
- package/dist/schemas-Di0XnnMX.d.mts +73 -0
- package/dist/schemas-KMA1efQg.d.mts +944 -0
- package/dist/schemas-qmn5SWPU.d.mts +312 -0
- package/dist/schemas-sshQEF3l.d.mts +237 -0
- package/dist/server-lifecycle-Cf_SZ27k.d.mts +160 -0
- package/dist/server-lifecycle-DbFwlrTW.mjs +1 -0
- package/dist/service-base/index.d.mts +98 -0
- package/dist/service-base/index.mjs +1 -0
- package/dist/services/adapter-runtime/index.d.mts +4 -0
- package/dist/services/adapter-runtime/index.mjs +1 -0
- package/dist/services/adapter-runtime/namespace.d.mts +2 -0
- package/dist/services/adapter-runtime/namespace.mjs +1 -0
- package/dist/services/adapter-runtime/schemas.d.mts +2 -0
- package/dist/services/adapter-runtime/schemas.mjs +1 -0
- package/dist/services/adapter-subsystem/index.d.mts +3 -0
- package/dist/services/adapter-subsystem/index.mjs +1 -0
- package/dist/services/adapter-subsystem/namespace.d.mts +2 -0
- package/dist/services/adapter-subsystem/namespace.mjs +1 -0
- package/dist/services/agent-runtime/index.d.mts +3 -0
- package/dist/services/agent-runtime/index.mjs +1 -0
- package/dist/services/agent-runtime/namespace.d.mts +2 -0
- package/dist/services/agent-runtime/namespace.mjs +1 -0
- package/dist/services/agent-runtime/schemas.d.mts +2 -0
- package/dist/services/agent-runtime/schemas.mjs +1 -0
- package/dist/services/capability/index.d.mts +2 -0
- package/dist/services/capability/index.mjs +1 -0
- package/dist/services/cli-detection/namespace.d.mts +56 -0
- package/dist/services/cli-detection/namespace.mjs +1 -0
- package/dist/services/codebase/index.d.mts +3 -0
- package/dist/services/codebase/index.mjs +1 -0
- package/dist/services/codebase/namespace.d.mts +2 -0
- package/dist/services/codebase/namespace.mjs +1 -0
- package/dist/services/codebase/schemas.d.mts +2 -0
- package/dist/services/codebase/schemas.mjs +1 -0
- package/dist/services/compression/index.d.mts +3 -0
- package/dist/services/compression/index.mjs +1 -0
- package/dist/services/compression/namespace.d.mts +2 -0
- package/dist/services/compression/namespace.mjs +1 -0
- package/dist/services/compression/schemas.d.mts +2 -0
- package/dist/services/compression/schemas.mjs +1 -0
- package/dist/services/context-rules/index.d.mts +412 -0
- package/dist/services/context-rules/index.mjs +1 -0
- package/dist/services/credential-change/index.d.mts +17 -0
- package/dist/services/credential-change/index.mjs +1 -0
- package/dist/services/definition/index.d.mts +2 -0
- package/dist/services/definition/index.mjs +1 -0
- package/dist/services/definition/namespace.d.mts +71 -0
- package/dist/services/definition/namespace.mjs +1 -0
- package/dist/services/definition/schemas.d.mts +38 -0
- package/dist/services/definition/schemas.mjs +1 -0
- package/dist/services/dialog/namespace.d.mts +105 -0
- package/dist/services/dialog/namespace.mjs +1 -0
- package/dist/services/dialog/schemas.d.mts +109 -0
- package/dist/services/dialog/schemas.mjs +1 -0
- package/dist/services/execution-target/index.d.mts +4 -0
- package/dist/services/execution-target/index.mjs +1 -0
- package/dist/services/execution-target/namespace.d.mts +2 -0
- package/dist/services/execution-target/namespace.mjs +1 -0
- package/dist/services/execution-target/schemas.d.mts +2 -0
- package/dist/services/execution-target/schemas.mjs +1 -0
- package/dist/services/filesystem/namespace.d.mts +432 -0
- package/dist/services/filesystem/namespace.mjs +1 -0
- package/dist/services/filesystem/schemas.d.mts +240 -0
- package/dist/services/filesystem/schemas.mjs +1 -0
- package/dist/services/harness/index.d.mts +861 -0
- package/dist/services/harness/index.mjs +1 -0
- package/dist/services/harness/storage/schema.d.mts +424 -0
- package/dist/services/harness/storage/schema.mjs +1 -0
- package/dist/services/index.d.mts +5703 -0
- package/dist/services/index.mjs +1 -0
- package/dist/services/local-notification/index.d.mts +25 -0
- package/dist/services/local-notification/index.mjs +1 -0
- package/dist/services/local-notification/namespace.d.mts +73 -0
- package/dist/services/local-notification/namespace.mjs +1 -0
- package/dist/services/local-notification/schemas.d.mts +88 -0
- package/dist/services/local-notification/schemas.mjs +1 -0
- package/dist/services/log-import/browser.d.mts +3 -0
- package/dist/services/log-import/browser.mjs +1 -0
- package/dist/services/log-import/index.d.mts +275 -0
- package/dist/services/log-import/index.mjs +2 -0
- package/dist/services/log-import/log-import.d.mts +3 -0
- package/dist/services/log-import/log-import.mjs +1 -0
- package/dist/services/log-import/namespace.d.mts +327 -0
- package/dist/services/log-import/namespace.mjs +1 -0
- package/dist/services/log-import/schemas.d.mts +217 -0
- package/dist/services/log-import/schemas.mjs +1 -0
- package/dist/services/model-registry/index.d.mts +2 -0
- package/dist/services/model-registry/index.mjs +1 -0
- package/dist/services/preferences/index.d.mts +3 -0
- package/dist/services/preferences/index.mjs +1 -0
- package/dist/services/preferences/schemas.d.mts +2 -0
- package/dist/services/preferences/schemas.mjs +1 -0
- package/dist/services/preferences/storage-namespace.d.mts +3 -0
- package/dist/services/preferences/storage-namespace.mjs +1 -0
- package/dist/services/provider-context/index.d.mts +2 -0
- package/dist/services/provider-context/index.mjs +1 -0
- package/dist/services/provider-runtime/index.d.mts +136 -0
- package/dist/services/provider-runtime/index.mjs +1 -0
- package/dist/services/session/handlers/index.d.mts +2 -0
- package/dist/services/session/handlers/index.mjs +1 -0
- package/dist/services/session/index.d.mts +10 -0
- package/dist/services/session/index.mjs +1 -0
- package/dist/services/session/messages/namespace.d.mts +2 -0
- package/dist/services/session/messages/namespace.mjs +1 -0
- package/dist/services/session/orchestrator-testing/index.d.mts +2 -0
- package/dist/services/session/orchestrator-testing/index.mjs +1 -0
- package/dist/services/session/session-events/namespace.d.mts +2 -0
- package/dist/services/session/session-events/namespace.mjs +1 -0
- package/dist/services/session/storage/namespace.d.mts +2 -0
- package/dist/services/session/storage/namespace.mjs +1 -0
- package/dist/services/session/storage/schema.d.mts +2 -0
- package/dist/services/session/storage/schema.mjs +1 -0
- package/dist/services/session/testing/index.d.mts +35 -0
- package/dist/services/session/testing/index.mjs +52 -0
- package/dist/services/session/testing/orchestrator-shared.d.mts +2 -0
- package/dist/services/session/testing/orchestrator-shared.mjs +1 -0
- package/dist/services/session/turns/namespace.d.mts +2 -0
- package/dist/services/session/turns/namespace.mjs +1 -0
- package/dist/services/session-editor/index.d.mts +119 -0
- package/dist/services/session-editor/index.mjs +1 -0
- package/dist/services/settings/index.d.mts +47 -0
- package/dist/services/settings/index.mjs +1 -0
- package/dist/services/settings/namespace.d.mts +662 -0
- package/dist/services/settings/namespace.mjs +1 -0
- package/dist/services/settings/storage/clients-namespace.d.mts +2 -0
- package/dist/services/settings/storage/clients-namespace.mjs +1 -0
- package/dist/services/settings/storage/extension-configs/namespace.d.mts +184 -0
- package/dist/services/settings/storage/extension-configs/namespace.mjs +1 -0
- package/dist/services/settings/storage/index.d.mts +4 -0
- package/dist/services/settings/storage/index.mjs +1 -0
- package/dist/services/settings/storage/providers-namespace.d.mts +2 -0
- package/dist/services/settings/storage/providers-namespace.mjs +1 -0
- package/dist/services/tool-approval/index.d.mts +2 -0
- package/dist/services/tool-approval/index.mjs +1 -0
- package/dist/services/tools/index.d.mts +2 -0
- package/dist/services/tools/index.mjs +1 -0
- package/dist/services/tray-menu/index.d.mts +4 -0
- package/dist/services/tray-menu/index.mjs +1 -0
- package/dist/services/tray-menu/namespace.d.mts +2 -0
- package/dist/services/tray-menu/namespace.mjs +1 -0
- package/dist/services/tray-menu/schemas.d.mts +2 -0
- package/dist/services/tray-menu/schemas.mjs +1 -0
- package/dist/services/turn/index.d.mts +2 -0
- package/dist/services/turn/index.mjs +1 -0
- package/dist/services/turn/namespace.d.mts +2 -0
- package/dist/services/turn/namespace.mjs +1 -0
- package/dist/services/turn/schemas.d.mts +335 -0
- package/dist/services/turn/schemas.mjs +1 -0
- package/dist/services/worker/index.d.mts +3 -0
- package/dist/services/worker/index.mjs +1 -0
- package/dist/services/worker/namespace.d.mts +2 -0
- package/dist/services/worker/namespace.mjs +1 -0
- package/dist/services/worker/schemas.d.mts +2 -0
- package/dist/services/worker/schemas.mjs +1 -0
- package/dist/session-Do6lDZM4.mjs +123 -0
- package/dist/session-lineage-Eev4uo4I.d.mts +65 -0
- package/dist/session-piI1R5rP.mjs +1 -0
- package/dist/shared-DxHLl9UP.mjs +1 -0
- package/dist/shared-schemas-BgQv_tnu.mjs +1 -0
- package/dist/skill-CB5h-ZFQ.mjs +1 -0
- package/dist/storage/drizzle/client.d.mts +78 -0
- package/dist/storage/drizzle/client.mjs +1 -0
- package/dist/storage/drizzle/index.d.mts +98 -0
- package/dist/storage/drizzle/index.mjs +1 -0
- package/dist/storage/handlers/drizzle/index.d.mts +2 -0
- package/dist/storage/handlers/drizzle/index.mjs +1 -0
- package/dist/storage/handlers/index.d.mts +33 -0
- package/dist/storage/handlers/index.mjs +1 -0
- package/dist/storage/index.d.mts +192 -0
- package/dist/storage/index.mjs +1 -0
- package/dist/storage-namespace-ADwyijoe.mjs +1 -0
- package/dist/storage-namespace-DAm8iWEj.d.mts +221 -0
- package/dist/storage-namespace-definition-CHu2k14q.mjs +1 -0
- package/dist/storage-namespace-definition-CJgqyXH1.d.mts +17 -0
- package/dist/style.css +3782 -0
- package/dist/testing/drizzle-harness.d.mts +130 -0
- package/dist/testing/drizzle-harness.mjs +1 -0
- package/dist/testing/index.d.mts +106 -0
- package/dist/testing/index.mjs +1 -0
- package/dist/tool-approval-service-BcBSUZCO.mjs +1 -0
- package/dist/tools/index.d.mts +825 -0
- package/dist/tools/index.mjs +1 -0
- package/dist/tools/testing/index.d.mts +53 -0
- package/dist/tools/testing/index.mjs +1 -0
- package/dist/tools-CDSgj0ee.mjs +1 -0
- package/dist/tray-menu-service-CTXC1Elg.mjs +1 -0
- package/dist/types-6WxLfoM3.d.mts +31 -0
- package/dist/types-BjToUrHp.d.mts +6619 -0
- package/dist/types-CD1LJwPc.d.mts +1009 -0
- package/dist/types-Cvrj2ogm.d.mts +305 -0
- package/dist/types-DYF5LxZY.d.mts +233 -0
- package/dist/types-t295YC6T.d.mts +262 -0
- package/dist/types-vNpkAe4Y.d.mts +128 -0
- package/dist/ui-components/index.d.mts +2342 -0
- package/dist/ui-components/index.mjs +8 -0
- package/dist/ui-config-CXmbsqZV.mjs +1 -0
- package/dist/ui-hooks/index.d.mts +1805 -0
- package/dist/ui-hooks/index.mjs +1 -0
- package/dist/ui-kernel/index.d.mts +2793 -0
- package/dist/ui-kernel/index.mjs +1 -0
- package/dist/ui-kernel/pages/namespace.d.mts +88 -0
- package/dist/ui-kernel/pages/namespace.mjs +1 -0
- package/dist/ui-kernel/pages/schemas.d.mts +2 -0
- package/dist/ui-kernel/pages/schemas.mjs +1 -0
- package/dist/ui-views/index.d.mts +487 -0
- package/dist/ui-views/index.mjs +30 -0
- package/dist/utils/health-probe.d.mts +26 -0
- package/dist/utils/health-probe.mjs +1 -0
- package/dist/utils/index.d.mts +227 -0
- package/dist/utils/index.mjs +2 -0
- package/dist/utils/keychain.d.mts +31 -0
- package/dist/utils/keychain.mjs +1 -0
- package/dist/utils/resolve-package-root.d.mts +12 -0
- package/dist/utils/resolve-package-root.mjs +1 -0
- package/dist/utils/workspace-root.d.mts +27 -0
- package/dist/utils/workspace-root.mjs +2 -0
- package/dist/variant-D5kSrL3m.mjs +1 -0
- package/dist/version-CjS20oXi.mjs +1 -0
- package/dist/visibility-CZu8ooOA.mjs +1 -0
- package/dist/window-registry-CUftmDr3.mjs +1 -0
- package/dist/window-registry-C_IJmY8_.d.mts +130 -0
- package/package.json +346 -0
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
import{agents as e,sessions as t}from"./services/session/storage/schema.mjs";import{t as n}from"./schema-CAw_BqaG.mjs";import{n as r,r as i}from"./namespace-8cNguvIp.mjs";import{SessionStorageSubjects as a}from"./services/session/storage/namespace.mjs";import{A as o,D as s,E as c,F as l,O as u,P as d,T as f,b as p,d as m,f as h,j as g,k as _,u as v,v as ee}from"./handlers-iGKUJ380.mjs";import{TurnStorageSubjects as y}from"./services/turn/namespace.mjs";import{AdapterRuntimeSubjects as te}from"./services/adapter-runtime/namespace.mjs";import{MessageStorageSubjects as b}from"./services/session/messages/namespace.mjs";import{n as ne}from"./namespace-D5Wrt7YU.mjs";import{z as x}from"zod";import{MakaioBus as S,NoHandlerError as C}from"@makaio/framework/bus";import{AdapterSessionStatusSchema as re,AdapterSubjects as w,AgentSubjects as T,CanonicalModelSubjects as ie,CompressSessionLineageSchema as ae,CompressionModeSchema as oe,ForkSessionLineageSchema as se,ForkTransformsSchema as ce,MessageRoutingSchema as le,RootSessionLineageSchema as ue,SessionContextSchema as de,SessionDiscoveredSchema as fe,SessionLineageKindSchema as pe,SessionStorageSetRequestSchema as me,SessionStorageUpdateSchema as he,SessionSubjects as E,SubagentSessionLineageSchema as ge,compareMessageCursorAsc as _e,compareMessageCursorDesc as ve,isCanonicalModelParseError as ye,messageToCursor as D,parseCanonicalModel as be}from"@makaio/framework/contracts";import{BaseService as xe}from"@makaio/framework/service-base";import{index as Se,integer as O,primaryKey as Ce,sqliteTable as we,text as k,uniqueIndex as Te}from"drizzle-orm/sqlite-core";import{createStorageNamespaceDefinition as Ee}from"@makaio/framework/storage";import{and as A,asc as De,count as j,desc as M,eq as N,gt as Oe,gte as ke,inArray as P,isNull as Ae,lt as je,lte as Me,or as Ne,sql as F}from"drizzle-orm";import{sanitizeFtsQuery as Pe}from"@makaio/framework/storage/drizzle";import{ClientIdentityObservationSchema as Fe}from"@makaio/framework/contracts/client";import{ImportCursorStorageSubjects as Ie}from"@makaio/framework/adapters";import{ROOT_SESSION_LINEAGE_KIND as Le,SESSION_LINEAGE_KINDS as Re}from"@makaio/framework/contracts/adapter/schemas/session-lineage";function ze(e){return e.on(E.agent.added,async t=>{let n=await e.requestOptional(a.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(a.set,{sessionId:t.payload.sessionId,session:r}))})}function Be(e){return e.on(E.agent.removed,async t=>{let n=await e.requestOptional(a.get,{sessionId:t.payload.sessionId}),r=n.handled?n.data.session:void 0;r&&(await e.requestOptional(l.updateStatus,{agentId:t.payload.agentId,status:`disposed`}),r.leadAgentId===t.payload.agentId&&(r.leadAgentId=void 0),r.lastActivityAt=Date.now(),await e.request(a.set,{sessionId:t.payload.sessionId,session:r}))})}function Ve(e){return[He(e),Ue(e),We(e),Ge(e),Ke(e),qe(e),Je(e),ze(e.bus),Be(e.bus)]}function He(e){let{bus:t}=e;return t.on(E.create,async e=>{let{sessionId:n,title:r,originWindowId:i}=e.payload,o=n??crypto.randomUUID(),s=Date.now(),c={sessionId:o,createdAt:s,lastActivityAt:s,agents:[],status:`active`,title:r};if(n){let n=await t.requestOptional(a.set,{sessionId:o,session:c,ifAbsent:!0});if(n.handled&&!n.data.success){let n=await t.requestOptional(a.get,{sessionId:o});if(!(n.handled&&n.data.session))throw Error(`Session already exists but could not be loaded: ${o}`);e.setResult({sessionId:o});return}}else await t.requestOptional(a.set,{sessionId:o,session:c});await t.emit(E.created,{sessionId:o,createdAt:c.createdAt,parentSessionId:null,branchKind:null,originWindowId:i??`server`}),e.setResult({sessionId:o})})}function Ue(e){let{bus:t}=e;return t.on(E.get,async e=>{let n=await t.requestOptional(a.get,{sessionId:e.payload.sessionId}),r=n.handled?n.data.session:null;e.setResult({session:r})})}function We(e){let{bus:t}=e;return t.on(E.list,async e=>{let{status:n,limit:r,offset:i,includePreview:o,executionTargetId:s}=e.payload,c=await t.requestOptional(a.list,{status:n??`all`,limit:r,offset:i,includePreview:o,executionTargetId:s}),l=c.handled?c.data.sessions:[],u=c.handled?c.data.total:0;e.setResult({sessions:l,total:u})})}function Ge(e){let{bus:t}=e;return t.on(E.close,async e=>{let{sessionId:n}=e.payload,r=await t.requestOptional(a.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(a.set,{sessionId:n,session:i}),await t.emit(E.closed,{sessionId:n}),e.setResult({success:!0})})}function Ke(e){let{bus:t}=e;return t.on(E.update,async e=>{let{sessionId:n,executionTargetId:r,approvalPolicyOverride:i,title:o}=e.payload,s=await t.requestOptional(a.update,{sessionId:n,executionTargetId:r,approvalPolicyOverride:i,title:o}),c=s.handled?s.data.success:!1;if(c){let e=[];r!==void 0&&e.push(`executionTargetId`),i!==void 0&&e.push(`approvalPolicyOverride`),o!==void 0&&e.push(`title`),e.length>0&&await t.emit(E.updated,{sessionId:n,changedProperties:e})}e.setResult({success:c})})}function qe(e){let{bus:t}=e;return t.on(E.archive,async e=>{let{sessionId:n}=e.payload,r=await t.requestOptional(a.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(a.set,{sessionId:n,session:i}),await t.emit(E.archived,{sessionId:n}),e.setResult({success:!0})})}function Je(e){let{bus:t}=e;return t.on(E.purge,async e=>{let{sessionId:n}=e.payload,i=await t.requestOptional(a.get,{sessionId:n}),o=i.handled?i.data.session:null;if(!o){e.setResult({success:!1,error:`Session not found`});return}if(o.status!==`archived`){e.setResult({success:!1,error:`Cannot purge session unless archived. Call close then archive first.`});return}let s=await t.requestOptional(a.list,{status:`all`}),c=s.handled?s.data.sessions:[];for(let e of c)e.parentSessionId===n&&await t.requestOptional(a.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(a.delete,{sessionId:n}),await t.emit(E.purged,{sessionId:n}),e.setResult({success:!0,eventsDeleted:u})})}var Ye=class extends xe{constructor(e=S){super(e)}async onInit(){for(let e of Ve({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(E.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 Xe(e){return Error(`No adapter found for adapterName="${e}". Ensure adapter-runtime identity handlers are registered; adapter startup verifies live availability.`)}var Ze=class{bus;registry=new Map;cleanup;constructor(e){this.bus=e,this.cleanup=this.bus.on(w.initialized,e=>{this.registry.set(e.payload.adapterName,e.payload.adapterId)})}resolve(e){let t=this.registry.get(e);if(!t)throw Xe(e);return t}async resolveAvailable(e){try{let{adapterId:t}=await this.bus.request(te.resolveId,{adapterName:e});return this.registry.set(e,t),t}catch{let t=this.registry.get(e);if(t)return t;throw Xe(e)}}destroy(){this.cleanup?.(),this.cleanup=void 0,this.registry.clear()}};function Qe(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 $e(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 et(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 tt(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 nt(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 rt(e){let t=new Map,n=new Map,r=1,i=[Qe(e,t,n,()=>r++),$e(e,t,n),et(e,t),tt(e,t,n),nt(e,t)];return()=>i.forEach(e=>e())}const it=[`sessionId`,`agentId`,`adapterId`,`messageId`,`turnId`];function at(e){let t=e.payload,n={};for(let[e,r]of Object.entries(t))it.includes(e)||(n[e]=r);return n}function ot(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 st(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 ct(e.payload)}}function ct(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 lt({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:st(n),payload:JSON.stringify(at(n))};await t.insert(i).values(u).onConflictDoNothing(),e.setResult({success:!0})})}function ut({bus:e,db:t}){return e.on(r.getEvents,async e=>{let{sessionId:n,options:r}=e.payload,a=[N(i.sessionId,n)],o=r?.order??`asc`;if(r?.after){let e=parseInt(r.after,10);!isNaN(e)&&e>0&&(o===`desc`?a.push(je(i.id,e)):a.push(Oe(i.id,e)))}r?.types&&r.types.length>0&&a.push(P(i.type,r.types));let s=r?.limit??100,c=o===`desc`?M:De,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(ot),p=u&&d.length>0?d[d.length-1].id.toString():null;e.setResult({events:f,nextCursor:p})})}function dt({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(N(i.sessionId,n),P(i.eventId,r))).orderBy(De(i.timestamp))).map(ot);e.setResult({events:a})})}function ft({bus:e,db:t}){return e.on(r.deleteBySession,async e=>{let{sessionId:n}=e.payload,r=(await t.select().from(i).where(N(i.sessionId,n))).length;await t.delete(i).where(N(i.sessionId,n)),e.setResult({success:!0,deletedCount:r})})}function pt({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(N(i.sessionId,e),P(i.type,r))).orderBy(M(i.timestamp)).limit(a);n.length>0&&(o[e]=n.map(ot))}e.setResult({eventsBySession:o})})}function mt(e,t,n){let r={bus:e,db:t},i=[lt(r),ut(r),dt(r),ft(r),pt(r)];return()=>i.forEach(e=>e())}async function I(e,t){e.emit(b.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 L(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 ht(e){let{bus:t,db:r}=e;return t.on(b.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 I(t,s)})}function gt(e){let{bus:t,db:r}=e;return t.on(b.getBySession,async e=>{let{sessionId:t,limit:i,after:a,includeAfter:o=!1,order:s=`asc`}=e.payload,c=s===`desc`?M:De,l=r.select().from(n).where(N(n.sessionId,t)).orderBy(c(n.timestamp),c(n.messageId));if(a){let e=s===`desc`?Ne(je(n.timestamp,a.timestamp),A(N(n.timestamp,a.timestamp),o?Me(n.messageId,a.messageId):je(n.messageId,a.messageId))):Ne(Oe(n.timestamp,a.timestamp),A(N(n.timestamp,a.timestamp),o?ke(n.messageId,a.messageId):Oe(n.messageId,a.messageId)));l=r.select().from(n).where(A(N(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?D(p[p.length-1]):null;e.setResult({messages:p.map(L),nextCursor:m})})}function _t(e){let{bus:t,db:r}=e;return t.on(b.getByTurn,async e=>{let{turnId:t}=e.payload,i=await r.select().from(n).where(N(n.turnId,t)).orderBy(De(n.timestamp));e.setResult({messages:i.map(L)})})}function vt(e){let{bus:t,db:r}=e;return t.on(b.get,async e=>{let{messageId:t}=e.payload,[i]=await r.select().from(n).where(N(n.messageId,t)).limit(1);e.setResult({message:i?L(i):null})})}function yt(e){let{bus:t,db:n}=e;return t.on(b.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=Pe(t),s=F`
|
|
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?F`
|
|
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
|
+
`:F`
|
|
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?F`
|
|
31
|
+
SELECT COUNT(*) as count FROM messages_fts
|
|
32
|
+
WHERE messages_fts MATCH ${o}
|
|
33
|
+
AND session_id = ${r}
|
|
34
|
+
`:F`
|
|
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(L),total:f})})}async function bt(e,t,n,r){let i=F`
|
|
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(F`
|
|
44
|
+
SELECT ${i}
|
|
45
|
+
WHERE messages_fts MATCH ${t}
|
|
46
|
+
ORDER BY score DESC
|
|
47
|
+
LIMIT ${n}
|
|
48
|
+
`):e.all(F`
|
|
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 xt(e,t,n){return(await(n===void 0?e.all(F`
|
|
55
|
+
SELECT COUNT(*) AS total
|
|
56
|
+
FROM messages_fts
|
|
57
|
+
WHERE messages_fts MATCH ${t}
|
|
58
|
+
`):e.all(F`
|
|
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 St(e){let{bus:t,db:n}=e;return t.on(b.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=Pe(a),[s,c]=await Promise.all([bt(n,o,i,r),xt(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 Ct(e){let{bus:t,db:r}=e;return t.on(b.getByAdapterMessageId,async e=>{let{adapterMessageId:t}=e.payload,[i]=await r.select().from(n).where(N(n.adapterMessageId,t)).limit(1);e.setResult({message:i?L(i):null})})}function wt(e){let{bus:t,db:r}=e;return t.on(b.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(N(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 I(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 Tt(e,t,n){let r={bus:e,db:t},i=[ht(r),gt(r),_t(r),vt(r),yt(r),St(r),wt(r),Ct(r)];return()=>i.forEach(e=>e())}function Et(e,t){return _e(D(e),D(t))}function Dt(e,t){return ve(D(e),D(t))}function Ot(e){let t=new Map,n=new Map,r=new Map,i=new Map,a=kt(t,n,r,i),o=[At(e,t,a),jt(e,t,n),Mt(e,t,r),Nt(e,t),Pt(e,t),Ft(e,i,a),It(e,t,n,r,i)];return()=>o.forEach(e=>e())}function kt(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 At(e,t,n){return e.on(b.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 I(e,o)})}function jt(e,t,n){return e.on(b.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`?Dt:Et,u=c.map(e=>t.get(e)).filter(e=>!!e).sort(l);a&&(u=u.filter(e=>{let t=s===`desc`?ve(D(e),a):_e(D(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?D(p[p.length-1]):null;e.setResult({messages:p,nextCursor:m})})}function Mt(e,t,n){return e.on(b.getByTurn,async e=>{let{turnId:r}=e.payload,i=(n.get(r)??[]).map(e=>t.get(e)).filter(e=>!!e).sort(Et);e.setResult({messages:i})})}function Nt(e,t){return e.on(b.get,async e=>{e.setResult({message:t.get(e.payload.messageId)??null})})}function Pt(e,t){return e.on(b.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(Et),e.setResult({messages:c.slice(0,a),total:c.length})})}function Ft(e,t,n){return e.on(b.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 I(e,g)})}function It(e,t,n,r,i){return e.on(a.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 R=we(`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:O(`timestamp`).notNull(),error:k(`error`)},e=>[Ce({columns:[e.messageId,e.agentId,e.status]}),Se(`idx_routing_agent`).on(e.agentId,e.timestamp)]),Lt=Ee(`messageRouting`,{schemas:{record:{request:le,response:x.object({success:x.boolean()})},getByMessage:{request:x.object({messageId:x.string()}),response:x.object({routing:x.array(le)})},getCompleted:{request:x.object({messageId:x.string()}),response:x.object({agentIds:x.array(x.string())})},isComplete:{request:x.object({messageId:x.string(),targetAgentIds:x.array(x.string())}),response:x.object({complete:x.boolean(),pending:x.array(x.string())})}},extensions:{drizzle:{messageRouting:R}}}),z=Lt.subjects;function Rt(e){return{messageId:e.messageId,agentId:e.agentId,status:e.status,timestamp:e.timestamp,error:e.error??void 0}}function zt(e,t,n){let r=[];return r.push(e.on(z.record,async e=>{let{messageId:n,agentId:r,status:i,timestamp:a,error:o}=e.payload;await t.insert(R).values({messageId:n,agentId:r,status:i,timestamp:a,error:o??null}).onConflictDoUpdate({target:[R.messageId,R.agentId,R.status],set:{timestamp:a,error:o??null}}),e.setResult({success:!0})})),r.push(e.on(z.getByMessage,async e=>{let{messageId:n}=e.payload,r=await t.select().from(R).where(N(R.messageId,n));e.setResult({routing:r.map(Rt)})})),r.push(e.on(z.getCompleted,async e=>{let{messageId:n}=e.payload,r=await t.select().from(R).where(A(N(R.messageId,n),N(R.status,`completed`)));e.setResult({agentIds:r.map(e=>e.agentId)})})),r.push(e.on(z.isComplete,async e=>{let{messageId:n,targetAgentIds:r}=e.payload,i=await t.select().from(R).where(A(N(R.messageId,n),N(R.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 Bt=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()}},Vt=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 g({sessionId:e,agentIds:t,turnId:a,turnNumber:o,initiator:n});return this.activeTurns.set(e,s),this.usageAccumulators.set(e,new Bt),s}registerCompletionHandlers(e){this.cleanups.push(this.bus.on(T.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(T.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(E.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=c(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(E.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)}},Ht=class{bus;turnManager;adapterRegistry;cleanups=[];constructor(e=S,t){this.bus=e,this.turnManager=new Vt(e),this.adapterRegistry=new Ze(e),this.registerSendMessageHandler(),this.turnManager.registerCompletionHandlers(this.completeTurn.bind(this))}registerSendMessageHandler(){this.cleanups.push(this.bus.on(E.sendMessage,async e=>{let{sessionId:t,message:n,agentIds:r,deliveryMode:i,agent:a,source:c,origin:l}=e.payload,d=f(c,e.payload.extensionId),p=e.payload.sessionContext?de.parse(e.payload.sessionContext):void 0,{sessionId:h,session:g}=await s(this.bus,t,p,e.payload.originWindowId);if(g.agents.length===0){let e=await this.resolveInitialAdapterSelection(a,h,n,p),t=await this.resolveAdapterName(e,h),r=m(e.adapterId)??await this.adapterRegistry.resolveAvailable(t),i=await this.bus.request(w.startAgent,{adapterId:r,sessionId:h,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},...p!==void 0&&{sessionContext:p}});if(!i.success)throw Error(`[SessionOrchestrator.sendMessage] Failed to start agent (sessionId=${h}, adapterName=${t}): ${i.message}`);let o=Date.now();g.agents.push({agentId:i.agentId,adapterId:i.adapterId,adapterName:t,sessionId:h,role:`lead`,status:`idle`,createdAt:o,lastActivityAt:o}),g.leadAgentId=i.agentId}let y=u(g,r);if(y.length===0)throw Error(`[SessionOrchestrator.sendMessage] No valid target agents found (sessionId=${h})`);let te=new Set;for(let e of y){let t=await this.bus.requestOptional(w.getAgent,{agentId:e.agentId,adapterId:e.adapterId});t.handled&&t.data.agent===null&&te.add(e.agentId)}let ne;if(te.size>0){ne=await ee(this.bus,g);for(let e of y)te.has(e.agentId)&&await this.bus.requestOptional(w.rehydrateAgent,{agentId:e.agentId,adapterId:e.adapterId})}let x=this.turnManager.getActiveTurn(h),S=!x;x||=await this.turnManager.createTurn(h,y.map(e=>e.agentId),d,e.payload.turnId);let C=crypto.randomUUID();x.addMessage(C);let re=o(n);this.bus.requestOptional(b.append,{message:{messageId:C,turnId:x.turnId,sessionId:h,role:`user`,contentText:_(n),blocks:re,timestamp:Date.now(),...l!==void 0&&{origin:l}}}).catch(e=>{console.warn(`[SessionOrchestrator] Failed to store user message`,{sessionId:h,messageId:C,error:e instanceof Error?e.message:String(e)})});for(let e of y)this.bus.requestOptional(z.record,{messageId:C,agentId:e.agentId,status:`sent`,timestamp:Date.now()}).catch(t=>{console.warn(`[SessionOrchestrator] Failed to record message routing`,{sessionId:h,messageId:C,agentId:e.agentId,error:t instanceof Error?t.message:String(t)})});S&&await this.bus.emit(E.turn.started,{sessionId:h,turnId:x.turnId,turnNumber:x.turnNumber,messageId:C,agentIds:[...x.agentIds],initiator:x.initiator}),await this.bus.emit(E.user_message.sent,{sessionId:h,turnId:x.turnId,turnNumber:x.turnNumber,messageId:C,content:n,agentIds:y.map(e=>e.agentId),...c!==void 0&&{source:c},...l!==void 0&&{origin:l}});let T=ne?{...p,...ne}:p;await v(this.bus,g,y,n,C,x,i,this.completeTurn.bind(this),T,e.payload.responseSchema),e.setResult({messageId:C,turnId:x.turnId,sessionId:h})}))}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=m(e.adapterName),r=m(e.adapterId);if(!n&&!r)throw Error(`[SessionOrchestrator.sendMessage] adapterName or adapterId required when session has no agents (sessionId=${t})`);return r?h(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=be(e.model);if(ye(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(ie.resolve,{parsed:i,context:{sessionId:t,promptText:_(n),...r===void 0?{}:{sessionContext:r}}});return{...e,...a,kind:`adapter`,providerConfigId:e.providerConfigId??a.providerConfigId}}},Ut=class{bus;constructor(e){this.bus=e}async getTurnSoFarContext(e){try{let{messages:t}=await this.bus.request(b.getByTurn,{turnId:e});return this.convertSessionMessagesToMessages(t)}catch(e){return e instanceof C||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 Wt(e){let{bus:t}=e;return t.on(E.getStatusCounts,async e=>{e.payload;let{all:n,active:r,closed:i,archived:o,discovered:s}=await t.request(a.getStatusCounts,{});e.setResult({all:n,active:r,closed:i,archived:o,discovered:s})})}function Gt(e){let{bus:t}=e;return t.on(E.resume,async e=>{let{sessionId:n}=e.payload,{session:r}=await t.request(a.get,{sessionId:n});if(!r||r.status!==`closed`){e.setResult({success:!1});return}r.status=`active`,r.lastActivityAt=Date.now(),await t.request(a.set,{sessionId:n,session:r}),await t.emit(E.resumed,{sessionId:n}),e.setResult({success:!0})})}function Kt(e){return e.on(ne.listActions,e=>{let t=p.getAll().map(e=>({id:e.id,label:e.label,description:e.description,category:e.category}));e.setResult({actions:t})})}const qt=[{actionId:`strip-reasoning`},{actionId:`strip-tool-outputs`}];function Jt(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}}}async function Yt(e,t,n,r){let i=r.map((e,t)=>({block:e,blockIndex:t})).filter(e=>e.block.type===`attachment`).map(async({block:r,blockIndex:i})=>{let a=r.source.mimeType??`application/octet-stream`,o=r.source.type===`base64`?r.source.data:void 0;try{(await e({id:crypto.randomUUID(),scope:`session`,sessionId:t,type:`user-upload`,mimeType:a,filePath:r.filePath,...o!==void 0&&{content:o},metadata:{messageId:n,blockIndex:i,fileName:r.fileName}})).handled||console.warn(`[SessionOrchestrator] Artifacts handler unavailable for attachment artifact creation`,{sessionId:t,messageId:n,blockIndex:i,fileName:r.fileName})}catch(e){console.warn(`[SessionOrchestrator] Failed to persist attachment artifact`,{sessionId:t,messageId:n,blockIndex:i,fileName:r.fileName,error:e instanceof Error?e.message:String(e)})}});await Promise.allSettled(i)}var Xt=class{bus;agentToSession=new Map;agentContext=new Map;agentBlocks=new Map;cleanups=[];constructor(e=S){this.bus=e,this.registerHandlers()}registerHandlers(){this.registerMappingHandlers(),this.registerTurnTrackingHandlers(),this.registerBlockAccumulationHandlers()}registerMappingHandlers(){this.cleanups.push(this.bus.on(E.agent.added,e=>{this.agentToSession.set(e.payload.agentId,e.payload.sessionId)})),this.cleanups.push(this.bus.on(E.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(E.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(E.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(T.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(T.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(T.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(T.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(T.complete,async e=>{if(e.payload._import){this.agentBlocks.delete(e.payload.agentId);return}let{agentId:t,adapterSessionId:n,outcome:r,error:i}=e.payload;await this.storeAssistantMessage(t,r===`error`?void 0:n,r===`error`?i:void 0)}))}async storeAssistantMessage(e,t,n){let r=this.agentContext.get(e);if(!r?.turnId)return;let i=this.agentBlocks.get(e)??[];if(i.length===0&&!n)return;let a=i.filter(e=>e.type===`text`).map(e=>e.content).join(`
|
|
64
|
+
`),o=crypto.randomUUID();try{if(!(await this.bus.requestOptional(b.append,{message:{messageId:o,turnId:r.turnId,sessionId:r.sessionId,role:`assistant`,contentText:a||(n?`[Error: ${n}]`:``),blocks:i,agentId:e,adapterSessionId:t,timestamp:Date.now()}})).handled){this.agentBlocks.delete(e);return}let s=await this.bus.requestOptional(b.getByTurn,{turnId:r.turnId});if(s.handled){let t=s.data.messages.find(e=>e.role===`user`);t&&await this.bus.requestOptional(z.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()}},Zt=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(E.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(E.fork,{sourceSessionId:this._sessionId,name:e.reason})).sessionId}async merge(e,t){await this.bus.request(E.merge,{parentSessionId:this._sessionId,childSessionId:e,summary:t,source:`extension`,extensionId:this._extensionId})}async abandon(e){await this.bus.request(E.abandon,{parentSessionId:this._sessionId,childSessionId:e,source:`extension`,extensionId:this._extensionId})}async requestCompression(e){await this.bus.emit(E.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(E.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(E.getChildren,{sessionId:this._sessionId})).children.map(e=>e.sessionId)}};function Qt(e,t,n,r,i,a){return new Zt(e,t,n,r,i,a)}function $t(e,t){let n=e?.clientAccountId??null,r=t.clientAccountId??null;return!r||n===r?null:{previousClientAccountId:n,clientAccountId:r}}function B(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 V(e,t,n){let r=$t(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(E.clientAccount.changed,a)).catch(e=>{console.error(`[SessionStorage] Failed to emit session.clientAccount.changed:`,e)})})}async function en(e,t){let n=await e.requestOptional(l.listBySession,{sessionId:t});return n.handled?n.data.agents:[]}function H(e){return structuredClone(e)}function U(e,t,n){n!==void 0&&(e[t]=n)}function tn(e,t,n){n!==void 0&&(e[t]=n??void 0)}function nn(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 rn(e,t){U(e,`status`,t.status),U(e,`parentSessionId`,t.parentSessionId),U(e,`rootSessionId`,t.rootSessionId),U(e,`forkPointMessageId`,t.forkPointMessageId),U(e,`branchKind`,t.branchKind),U(e,`isOrchestrated`,t.isOrchestrated),U(e,`clientId`,t.clientId),U(e,`clientAccountId`,t.clientAccountId),U(e,`lastClientIdentityObservation`,t.lastClientIdentityObservation),U(e,`title`,t.title),U(e,`targetWorkingDirectory`,t.targetWorkingDirectory),U(e,`createdAt`,t.createdAt),U(e,`lastActivityAt`,t.lastActivityAt),tn(e,`executionTargetId`,t.executionTargetId),tn(e,`approvalPolicyOverride`,t.approvalPolicyOverride),tn(e,`spawningToolCallId`,t.spawningToolCallId)}function an(e,t){return e.on(a.list,async n=>{let{status:r=`all`,limit:i,offset:a=0,includePreview:o=!1,executionTargetId:s}=n.payload,c=nn(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=>({...H(t),agents:await en(e,t.sessionId)}))),d=o?u.map(e=>({...e,preview:{messageCount:0,firstUserMessage:null}})):u;n.setResult({sessions:d,total:l})})}function on(e,t){return e.on(a.update,async n=>{let r=structuredClone(he.request.parse(n.payload)),i=t.get(r.sessionId);if(!i){n.setResult({success:!1,clientAccountChanged:!1});return}let a=H(i);B(a,{sessionId:i.sessionId,clientId:r.clientId??i.clientId,clientAccountId:r.clientAccountId??i.clientAccountId,lastClientIdentityObservation:r.lastClientIdentityObservation??i.lastClientIdentityObservation}),rn(i,r),n.setResult({success:!0,clientAccountChanged:(a.clientAccountId??null)!==(i.clientAccountId??null)}),V(e,a,H(i))})}function sn(e){let t=new Map,n=[];return n.push(e.on(a.get,async n=>{let r=t.get(n.payload.sessionId);if(!r){n.setResult({session:null});return}let i=await en(e,n.payload.sessionId);n.setResult({session:{...H(r),agents:i}})})),n.push(e.on(a.set,async n=>{let{sessionId:r,session:i,ifAbsent:a}=me.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?H(s):null;B(s,o),t.set(r,o),n.setResult({success:!0,clientAccountChanged:(c?.clientAccountId??null)!==(o.clientAccountId??null)}),V(e,c,H(o))})),n.push(e.on(a.delete,async e=>{t.delete(e.payload.sessionId),e.setResult({success:!0}),await e.next()})),n.push(an(e,t)),n.push(e.on(a.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(a.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(on(e,t)),n.push(cn(e,t)),()=>n.forEach(e=>e())}function cn(e,t){return e.on(a.getByAdapterSessionId,async n=>{let{adapterSessionId:r}=n.payload,i=Array.from(t.values()).find(e=>e.adapterSessionId!==void 0&&e.adapterSessionId===r);if(!i){n.setResult({session:null});return}let a=await e.requestOptional(l.listBySession,{sessionId:i.sessionId}),o=a.handled?a.data.agents:[];n.setResult({session:{...H(i),agents:o}})})}function ln(e){let n=e?.clientId??null,r=e?.clientAccountId??null,i=e?.lastClientIdentityObservation??null;return A(n===null?Ae(t.clientId):N(t.clientId,n),r===null?Ae(t.clientAccountId):N(t.clientAccountId,r),i===null?Ae(t.lastClientIdentityObservation):N(t.lastClientIdentityObservation,i))}const{agents:W}=d.extensions.drizzle;function un(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?oe.parse(e.compressionMode):void 0}}function dn(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 G(e){return(e.rowsAffected??0)>0}function fn(e){let t;for(let n=e.length-1;n>=0;--n)try{e[n]?.()}catch(e){t??=e}if(t)throw t}function pn(e){let{bus:t,db:n}=e;return t.on(l.get,async e=>{let[t]=await n.select().from(W).where(N(W.agentId,e.payload.agentId)).limit(1);e.setResult({agent:t?un(t):null})})}function mn(e){let{bus:t,db:n}=e;return t.on(l.set,async e=>{let{agent:t}=e.payload,r=dn(t),i=await n.insert(W).values(r).onConflictDoUpdate({target:W.agentId,set:r});e.setResult({success:G(i)})})}function hn(e){let{bus:t,db:n}=e;return t.on(l.delete,async e=>{let t=await n.delete(W).where(N(W.agentId,e.payload.agentId));e.setResult({success:G(t)})})}function gn(e){let{bus:t,db:n}=e;return t.on(l.listByAdapter,async e=>{let{adapterName:t,status:r}=e.payload,i=[N(W.adapterName,t)];r&&r!==`all`&&i.push(N(W.status,r));let a=i.length>1?A(...i):i[0],o=await n.select().from(W).where(a);e.setResult({agents:o.map(un)})})}function _n(e){let{bus:t,db:n}=e;return t.on(l.listBySession,async e=>{let{sessionId:t}=e.payload,r=await n.select().from(W).where(N(W.sessionId,t));e.setResult({agents:r.map(un)})})}function vn(e){let{bus:t,db:n}=e;return t.on(l.updateStatus,async e=>{let{agentId:t,status:r}=e.payload,i=Date.now(),a=await n.update(W).set({status:r,lastActivityAt:i}).where(N(W.agentId,t));e.setResult({success:G(a)})})}function yn(e){let{bus:t,db:n}=e;return t.on(l.updateActivity,async e=>{let{agentId:t,lastActivityAt:r}=e.payload,i=await n.update(W).set({lastActivityAt:r}).where(N(W.agentId,t));e.setResult({success:G(i)})})}function bn(e){let{bus:t,db:n}=e;return t.on(l.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(W).set(o).where(N(W.agentId,t));e.setResult({success:G(s)})})}function xn(e,t,n){let r={bus:e,db:t},i=[pn(r),mn(r),hn(r),gn(r),_n(r),vn(r),yn(r),bn(r)];return()=>fn(i)}function K(e){return e??void 0}function Sn(e){if(e)try{let t=JSON.parse(e),n=Fe.safeParse(t);return n.success?n.data:void 0}catch{return}}function Cn(e){if(e)try{let t=JSON.parse(e),n=ce.safeParse(t);return n.success?n.data:void 0}catch{return}}function q(e,t){let n=Cn(e.forkTransforms),r=Sn(e.lastClientIdentityObservation);return{sessionId:e.sessionId,createdAt:e.createdAt,lastActivityAt:e.lastActivityAt,status:e.status,leadAgentId:K(e.leadAgentId),parentSessionId:K(e.parentSessionId),rootSessionId:K(e.rootSessionId),forkPointMessageId:K(e.forkPointMessageId),branchKind:K(e.branchKind),adapterName:K(e.adapterName),adapterSessionId:K(e.adapterSessionId),adapterId:K(e.adapterId),clientId:K(e.clientId),clientAccountId:K(e.clientAccountId),lastClientIdentityObservation:r,isOrchestrated:K(e.isOrchestrated),isImported:K(e.isImported),title:K(e.title),summary:K(e.summary),summaryUpdatedAt:K(e.summaryUpdatedAt),forkTransforms:n,targetWorkingDirectory:K(e.targetWorkingDirectory),executionTargetId:K(e.executionTargetId),agents:t.map(un),approvalPolicyOverride:K(e.approvalPolicyOverride),spawningToolCallId:K(e.spawningToolCallId)}}function wn(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 Tn(e,t,r){if(!r||t.length===0)return{};let i=e.select({sessionId:n.sessionId,minTimestamp:F`MIN(${n.timestamp})`.as(`min_timestamp`)}).from(n).where(A(N(n.role,`user`),P(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(N(n.sessionId,i.sessionId),N(n.timestamp,i.minTimestamp))).where(N(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:j()}).from(n).where(P(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 En(e,t){return{sessionId:e.sessionId,clientId:t.clientId??e.clientId,clientAccountId:t.clientAccountId??e.clientAccountId,lastClientIdentityObservation:t.lastClientIdentityObservation??e.lastClientIdentityObservation}}function Dn(e){return e.clientId!==void 0||e.clientAccountId!==void 0||e.lastClientIdentityObservation!==void 0}function J(e){return e??null}function On(e){return e?JSON.stringify(e):null}function kn(e){return{lastActivityAt:e.lastActivityAt,status:e.status,leadAgentId:J(e.leadAgentId),parentSessionId:J(e.parentSessionId),rootSessionId:J(e.rootSessionId),forkPointMessageId:J(e.forkPointMessageId),branchKind:J(e.branchKind),adapterName:J(e.adapterName),adapterSessionId:J(e.adapterSessionId),adapterId:J(e.adapterId),clientId:J(e.clientId),clientAccountId:J(e.clientAccountId),lastClientIdentityObservation:An(e.lastClientIdentityObservation),isOrchestrated:e.isOrchestrated??!1,isImported:e.isImported??!1,title:J(e.title),summary:J(e.summary),summaryUpdatedAt:J(e.summaryUpdatedAt),forkTransforms:On(e.forkTransforms),targetWorkingDirectory:J(e.targetWorkingDirectory),executionTargetId:J(e.executionTargetId),approvalPolicyOverride:J(e.approvalPolicyOverride),spawningToolCallId:J(e.spawningToolCallId)}}function An(e){return e?JSON.stringify(e):null}function Y(e,t,n){n!==void 0&&(e[t]=n)}function jn(e,t,n){n!==void 0&&(e[t]=n??null)}function Mn(e){let t={};return Y(t,`status`,e.status),Y(t,`parentSessionId`,e.parentSessionId),Y(t,`rootSessionId`,e.rootSessionId),Y(t,`forkPointMessageId`,e.forkPointMessageId),Y(t,`branchKind`,e.branchKind),Y(t,`isOrchestrated`,e.isOrchestrated),Y(t,`clientId`,e.clientId),Y(t,`clientAccountId`,e.clientAccountId),Y(t,`title`,e.title),Y(t,`targetWorkingDirectory`,e.targetWorkingDirectory),Y(t,`createdAt`,e.createdAt),Y(t,`lastActivityAt`,e.lastActivityAt),jn(t,`executionTargetId`,e.executionTargetId),jn(t,`approvalPolicyOverride`,e.approvalPolicyOverride),jn(t,`spawningToolCallId`,e.spawningToolCallId),e.lastClientIdentityObservation!==void 0&&(t.lastClientIdentityObservation=An(e.lastClientIdentityObservation)),t}function Nn(n){let{bus:r,db:i}=n;return r.on(a.get,async n=>{let[r]=await i.select().from(t).where(N(t.sessionId,n.payload.sessionId)).limit(1);if(!r){n.setResult({session:null});return}let a=await i.select().from(e).where(N(e.sessionId,n.payload.sessionId));n.setResult({session:q(r,a)})})}function Pn(e){let{bus:n,db:r}=e;return n.on(a.set,async e=>{let{sessionId:i,session:a,ifAbsent:o}=me.parse(e.payload),s=kn(a);if(o){B(null,a);let o=((await r.insert(t).values({sessionId:i,createdAt:a.createdAt,...s}).onConflictDoNothing()).rowsAffected??0)>0;e.setResult({success:o,clientAccountChanged:o&&a.clientAccountId!==void 0}),o&&V(n,null,a);return}for(let o=0;o<3;o++){let[o]=await r.select().from(t).where(N(t.sessionId,i)).limit(1),c=o?q(o,[]):null;if(B(c,a),((await r.insert(t).values({sessionId:i,createdAt:a.createdAt,...s}).onConflictDoUpdate({target:t.sessionId,set:s,setWhere:ln(o)})).rowsAffected??0)!==0){e.setResult({success:!0,clientAccountChanged:(c?.clientAccountId??null)!==(a.clientAccountId??null)}),V(n,c,a);return}}throw Error(`Failed to write session "${i}" with a stable client-account baseline`)})}function Fn(e){let{bus:n,db:r}=e;return n.on(a.delete,async e=>{await r.delete(t).where(N(t.sessionId,e.payload.sessionId)),e.setResult({success:!0})})}function In(e){let{bus:n,db:r}=e;return n.on(a.update,async e=>{let i=he.request.parse(e.payload),{sessionId:a}=i,o=Mn(i),s=Dn(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(N(t.sessionId,a));e.setResult({success:(n.rowsAffected??0)>0,clientAccountChanged:!1});return}for(let s=0;s<3;s++){let[s]=await r.select().from(t).where(N(t.sessionId,a)).limit(1);if(!s){e.setResult({success:!1,clientAccountChanged:!1});return}let c=q(s,[]),l=En(c,i);if(B(c,l),((await r.update(t).set(o).where(A(N(t.sessionId,a),ln(s)))).rowsAffected??0)!==0){e.setResult({success:!0,clientAccountChanged:(c.clientAccountId??null)!==(l.clientAccountId??null)}),V(n,c,l);return}}throw Error(`Failed to update session "${a}" with a stable client-account baseline`)})}function Ln(e){let n=[];return e.status!==`all`&&n.push(N(t.status,e.status)),e.executionTargetId!==void 0&&n.push(N(t.executionTargetId,e.executionTargetId)),A(...n)}function Rn(n){let{bus:r,db:i}=n;return r.on(a.list,async n=>{let{status:r=`all`,limit:a,offset:o=0,includePreview:s=!1,executionTargetId:c}=n.payload,l=Ln({status:r,executionTargetId:c}),u=l?i.select().from(t).where(l):i.select().from(t),d=a===void 0?await u.orderBy(M(t.lastActivityAt)):await u.orderBy(M(t.lastActivityAt)).limit(a).offset(o),[f]=await(l?i.select({count:j()}).from(t).where(l):i.select({count:j()}).from(t)),p=f?.count??0;if(d.length===0){n.setResult({sessions:[],total:p});return}let m=d.map(e=>e.sessionId),h=wn(await i.select().from(e).where(P(e.sessionId,m))),{previewBySession:g,countBySession:_}=await Tn(i,m,s),v=d.map(e=>{let t=q(e,h.get(e.sessionId)??[]);return s&&g&&_?{...t,preview:{messageCount:_.get(e.sessionId)??0,firstUserMessage:g.get(e.sessionId)??null}}:t});n.setResult({sessions:v,total:p})})}function zn(e){let{bus:r,db:i}=e;return r.on(a.getChildren,async e=>{let{sessionId:r}=e.payload,a=await i.select().from(t).where(N(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:j()}).from(n).where(P(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:j()}).from(t).where(P(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(P(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 Bn(n){let{bus:r,db:i}=n;return r.on(a.getByAdapterSessionId,async n=>{let{adapterSessionId:r}=n.payload,[a]=await i.select().from(t).where(N(t.adapterSessionId,r)).limit(1);if(!a){n.setResult({session:null});return}let o=await i.select().from(e).where(N(e.sessionId,a.sessionId));n.setResult({session:q(a,o)})})}function Vn(e){let{bus:n,db:r}=e;return n.on(a.getStatusCounts,async e=>{e.payload;let n=await r.select({status:t.status,count:j()}).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 Hn(e,t,n){let r={bus:e,db:t},i=[Nn(r),Pn(r),Fn(r),In(r),Rn(r),zn(r),Bn(r),Vn(r)];return()=>i.forEach(e=>e())}function Un(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 Wn(e){let t=new Map,n=[];return n.push(e.on(l.get,e=>{let n=t.get(e.payload.agentId)??null;e.setResult({agent:n})})),n.push(e.on(l.set,e=>{t.set(e.payload.agentId,e.payload.agent),e.setResult({success:!0})})),n.push(e.on(l.delete,e=>{let n=t.delete(e.payload.agentId);e.setResult({success:n})})),n.push(e.on(l.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(l.listBySession,e=>{let n=Array.from(t.values()).filter(t=>t.sessionId===e.payload.sessionId);e.setResult({agents:n})})),n.push(e.on(l.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(l.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(l.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(!Un(n,r,i,a)){e.setResult({success:!1});return}n.lastActivityAt=Date.now(),e.setResult({success:!0})})),()=>n.forEach(e=>e())}async function Gn(t,n){if(n.length===0)return new Map;let r=[...new Set(n)],i=await t.select().from(e).where(P(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 Kn(e,t){if(t.length===0)return new Map;let n=[...new Set(t)],r=await e.all(F`
|
|
65
|
+
SELECT m.session_id as sessionId, m.content_text as preview
|
|
66
|
+
FROM messages m
|
|
67
|
+
WHERE m.role = 'user'
|
|
68
|
+
AND m.session_id IN (${F.join(n.map(e=>F`${e}`),F`, `)})
|
|
69
|
+
AND NOT EXISTS (
|
|
70
|
+
SELECT 1
|
|
71
|
+
FROM messages m2
|
|
72
|
+
WHERE m2.session_id = m.session_id
|
|
73
|
+
AND m2.role = 'user'
|
|
74
|
+
AND (m2.timestamp < m.timestamp OR (m2.timestamp = m.timestamp AND m2.rowid < m.rowid))
|
|
75
|
+
)
|
|
76
|
+
`),i=new Map;for(let e of r)i.set(e.sessionId,e.preview);return i}async function qn(e,t){if(t.length===0)return new Map;let r=[...new Set(t)],i=await e.select({sessionId:n.sessionId,count:j()}).from(n).where(P(n.sessionId,r)).groupBy(n.sessionId),a=new Map;for(let e of i)a.set(e.sessionId,e.count);return a}function Jn(e){if(e)try{let t=JSON.parse(e);return!t||typeof t!=`object`||Array.isArray(t)?void 0:t}catch{return}}function Yn(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:Jn(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 Xn(e){let t=[];return e.status!==`all`&&t.push(F`s.status = ${e.status}`),e.isImported!==void 0&&t.push(e.isImported?F`s.is_imported = 1`:F`COALESCE(s.is_imported, 0) = 0`),t.length===0?F``:F` AND ${F.join(t,F` AND `)}`}async function Zn(e,t,n,r,i){let a=Xn(i);return e.all(F`
|
|
77
|
+
SELECT DISTINCT
|
|
78
|
+
s.session_id,
|
|
79
|
+
s.created_at,
|
|
80
|
+
s.last_activity_at,
|
|
81
|
+
s.status,
|
|
82
|
+
s.title,
|
|
83
|
+
s.lead_agent_id,
|
|
84
|
+
s.parent_session_id,
|
|
85
|
+
s.root_session_id,
|
|
86
|
+
s.fork_point_message_id,
|
|
87
|
+
s.branch_kind,
|
|
88
|
+
s.adapter_name,
|
|
89
|
+
s.adapter_session_id,
|
|
90
|
+
s.adapter_id,
|
|
91
|
+
s.is_orchestrated,
|
|
92
|
+
s.is_imported,
|
|
93
|
+
s.summary,
|
|
94
|
+
s.summary_updated_at,
|
|
95
|
+
s.fork_transforms,
|
|
96
|
+
s.target_working_directory
|
|
97
|
+
FROM sessions s
|
|
98
|
+
WHERE (
|
|
99
|
+
s.session_id IN (
|
|
100
|
+
SELECT session_id FROM messages_fts
|
|
101
|
+
WHERE messages_fts MATCH ${t}
|
|
102
|
+
)
|
|
103
|
+
OR LOWER(s.title) LIKE ${n}
|
|
104
|
+
)
|
|
105
|
+
${a}
|
|
106
|
+
ORDER BY s.last_activity_at DESC
|
|
107
|
+
LIMIT ${r}
|
|
108
|
+
`)}async function Qn(e,t,n,r){let i=Xn(r),[a]=await e.all(F`
|
|
109
|
+
SELECT COUNT(DISTINCT s.session_id) as total
|
|
110
|
+
FROM sessions s
|
|
111
|
+
WHERE (
|
|
112
|
+
s.session_id IN (
|
|
113
|
+
SELECT session_id FROM messages_fts
|
|
114
|
+
WHERE messages_fts MATCH ${t}
|
|
115
|
+
)
|
|
116
|
+
OR LOWER(s.title) LIKE ${n}
|
|
117
|
+
)
|
|
118
|
+
${i}
|
|
119
|
+
`);return a?.total??0}function $n(e,t){let n=[];return n.push(e.on(a.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 Zn(t,o,s,r,c);if(l.length===0){e.setResult({sessions:[],total:0});return}let u=await Qn(t,o,s,c),d=l.map(e=>e.session_id),f=await Gn(t,d),p=await Kn(t,d),m=await qn(t,d),h=l.map(e=>Yn(e,f.get(e.session_id)??[],p,m));e.setResult({sessions:h,total:u})})),()=>n.forEach(e=>e())}var er=class{bus;options;cleanups=[];transform;constructor(e=S,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(E.agent.added,`agent.added`),this.registerHandler(E.turn.started,`turn.started`),this.registerHandler(E.turn.completed,`turn.completed`),this.registerHandler(E.branch.created,`branch.created`)}destroy(){for(let e of this.cleanups)e();this.cleanups.length=0}};const X=we(`import_cursors`,{filePath:k(`file_path`).primaryKey(),bytesRead:O(`bytes_read`).notNull(),lastModified:k(`last_modified`).notNull(),updatedAt:O(`updated_at`).notNull()});function tr(e,t,n){let r=[];return r.push(e.on(Ie.get,async e=>{let{filePath:n}=e.payload,r=(await t.select().from(X).where(N(X.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(Ie.set,async e=>{let{filePath:n,bytesRead:r,lastModified:i}=e.payload;await t.insert(X).values({filePath:n,bytesRead:r,lastModified:i,updatedAt:Date.now()}).onConflictDoUpdate({target:X.filePath,set:{bytesRead:r,lastModified:i,updatedAt:Date.now()}}),e.setResult({success:!0})})),r.push(e.on(Ie.delete,async e=>{let{filePath:n}=e.payload,r=await t.delete(X).where(N(X.filePath,n));e.setResult({success:r.rowsAffected>0})})),()=>{r.forEach(e=>e())}}var nr=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 g({sessionId:this.sessionId,agentIds:e.agentIds,turnNumber:e.turnNumber,turnId:e.turnId});return this._turns.push(t),t.addMessage(e.messageId),await this.emit(E.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(E.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})}};const rr=we(`adapter_sessions`,{adapterSessionId:k(`adapter_session_id`).primaryKey(),adapterName:k(`adapter_name`).notNull(),parentAdapterSessionId:k(`parent_adapter_session_id`),forkPointMessageId:k(`fork_point_message_id`),sessionId:k(`session_id`).references(()=>t.sessionId),model:k(`model`),cwd:k(`cwd`),logFilePath:k(`log_file_path`),kind:k(`kind`,{enum:Re}).notNull().default(Le),discoveredAt:O(`discovered_at`).notNull(),startedAt:O(`started_at`).notNull(),status:k(`status`,{enum:[`discovered`,`imported`,`live`,`tracking`]}).notNull().default(`discovered`)},e=>[Te(`uniq_adapter_sessions_log_file_path`).on(e.logFilePath)]),ir=x.object({adapterSessionId:x.string(),adapterName:x.string(),parentAdapterSessionId:x.string().nullable(),forkPointMessageId:x.string().nullable(),sessionId:x.string().nullable(),model:x.string().nullable(),cwd:x.string().nullable(),logFilePath:x.string().nullable(),discoveredAt:x.number(),startedAt:x.number(),status:re,kind:pe}),Z=x.object({adapterSessionId:x.string(),adapterName:x.string(),model:x.string().nullable(),cwd:x.string().nullable(),logFilePath:x.string().nullable().optional(),startedAt:x.number().finite().optional()}),ar=x.discriminatedUnion(`kind`,[Z.merge(ue),Z.merge(se),Z.merge(ge),Z.merge(ae)]),or=ue.omit({kind:!0}).extend({kind:x.null()}),sr=x.union([or,se,ge,ae]).and(x.object({model:x.string().nullable(),cwd:x.string().nullable(),title:x.string().nullable()})),Q=Ee(`adapterSession`,{schemas:{upsert:{request:ar,response:x.object({adapterSessionId:x.string(),sessionId:x.string().nullable(),created:x.boolean()})},get:{request:x.object({adapterSessionId:x.string()}),response:x.object({session:ir.nullable()})},updateStatus:{request:x.object({adapterSessionId:x.string(),status:re}),response:x.object({success:x.boolean()})},linkSession:{request:x.object({adapterSessionId:x.string(),sessionId:x.string()}),response:x.object({success:x.boolean()})},getByLogFilePath:{request:x.object({logFilePath:x.string()}),response:x.object({session:ir.nullable()})},list:{request:x.object({}),response:x.object({sessions:x.array(ir)})},countByAdapter:{request:x.object({adapterName:x.string()}),response:x.object({total:x.number(),imported:x.number(),discovered:x.number()})},createAndLink:{request:x.object({adapterSessionId:x.string(),adapterName:x.string(),adapterId:x.string(),metadata:sr,existingSessionId:x.string().optional()}),response:x.object({sessionId:x.string(),created:x.boolean()})}},extensions:{drizzle:{adapterSessions:rr}}}),$=Q.subjects;let cr=0;function lr(){let e=Date.now();return cr=e>cr?e:cr+1,cr}function ur(e){return{adapterSessionId:e.adapterSessionId,adapterName:e.adapterName,parentAdapterSessionId:e.parentAdapterSessionId,forkPointMessageId:e.forkPointMessageId,sessionId:e.sessionId,model:e.model,cwd:e.cwd,logFilePath:e.logFilePath,discoveredAt:e.discoveredAt,startedAt:e.startedAt,status:e.status,kind:e.kind}}function dr(e){let{bus:t,db:n}=e,{adapterSessions:r}=Q.extensions.drizzle;return t.on($.upsert,async e=>{let{adapterSessionId:t,adapterName:i,parentAdapterSessionId:a,forkPointMessageId:o,model:s,cwd:c,logFilePath:l,kind:u,startedAt:d}=e.payload,f=lr(),[p]=await n.insert(r).values({adapterSessionId:t,adapterName:i,parentAdapterSessionId:a,forkPointMessageId:o,model:s??null,cwd:c??null,logFilePath:l??null,kind:u,discoveredAt:f,startedAt:d??f,status:`discovered`}).onConflictDoUpdate({target:r.adapterSessionId,set:{parentAdapterSessionId:a,forkPointMessageId:o,model:F`COALESCE(excluded.model, ${r.model})`,cwd:F`COALESCE(excluded.cwd, ${r.cwd})`,logFilePath:F`COALESCE(excluded.log_file_path, ${r.logFilePath})`,startedAt:d===void 0?F`${r.startedAt}`:F`CASE
|
|
120
|
+
WHEN ${r.startedAt} = ${r.discoveredAt}
|
|
121
|
+
THEN ${d}
|
|
122
|
+
ELSE ${r.startedAt}
|
|
123
|
+
END`,kind:u}}).returning({adapterSessionId:r.adapterSessionId,sessionId:r.sessionId,discoveredAt:r.discoveredAt}),m=p.discoveredAt===f;e.setResult({adapterSessionId:p.adapterSessionId,sessionId:p.sessionId,created:m})})}function fr(e){let{bus:t,db:n}=e,{adapterSessions:r}=Q.extensions.drizzle;return t.on($.updateStatus,async e=>{let{adapterSessionId:i,status:a}=e.payload,o=(await n.update(r).set({status:a}).where(A(N(r.adapterSessionId,i),F`${r.status} <> ${a}`))).rowsAffected>0;e.setResult({success:o}),o&&t.emit(w.session.statusChanged,{adapterSessionId:i,status:a}).catch(e=>console.error(`[AdapterSessionStorage] Failed to emit statusChanged event:`,e))})}function pr(e){let{bus:t,db:n}=e,{adapterSessions:r}=Q.extensions.drizzle;return t.on($.linkSession,async e=>{let{adapterSessionId:i,sessionId:o}=e.payload,[s]=await n.select({adapterName:r.adapterName,currentSessionId:r.sessionId,forkPointMessageId:r.forkPointMessageId}).from(r).where(N(r.adapterSessionId,i)).limit(1);if(!s){e.setResult({success:!1});return}if(s.currentSessionId===o){e.setResult({success:!0});return}if(s.currentSessionId!==null){e.setResult({success:!1});return}if(await n.update(r).set({sessionId:o}).where(N(r.adapterSessionId,i)),await t.emit(w.session.linked,{adapterName:s.adapterName,adapterSessionId:i,sessionId:o}),s.forkPointMessageId){let e=s.forkPointMessageId;try{let{message:n}=await t.request(b.getByAdapterMessageId,{adapterMessageId:s.forkPointMessageId});n&&(e=n.messageId)}catch{}try{await t.request(a.update,{sessionId:o,forkPointMessageId:e})}catch{}}e.setResult({success:!0})})}function mr(e,t,n){let{adapterSessions:r}=Q.extensions.drizzle,i=[];return i.push(dr({bus:e,db:t})),i.push(e.on($.get,async e=>{let{adapterSessionId:n}=e.payload,[i]=await t.select().from(r).where(N(r.adapterSessionId,n)).limit(1);e.setResult({session:i?ur(i):null})})),i.push(fr({bus:e,db:t})),i.push(e.on($.list,async e=>{let n=await t.select().from(r).orderBy(M(r.startedAt));e.setResult({sessions:n.map(ur)})})),i.push(e.on($.getByLogFilePath,async e=>{let{logFilePath:n}=e.payload,[i]=await t.select().from(r).where(N(r.logFilePath,n)).limit(1);e.setResult({session:i?ur(i):null})})),i.push(pr({bus:e,db:t})),i.push(e.on($.countByAdapter,async e=>{let{adapterName:n}=e.payload,i=await t.select({status:r.status,count:F`count(*)`}).from(r).where(N(r.adapterName,n)).groupBy(r.status),a=0,o=0,s=0;for(let e of i){let t=Number(e.count);a+=t,(e.status===`imported`||e.status===`tracking`)&&(o+=t),e.status===`discovered`&&(s=t)}e.setResult({total:a,imported:o,discovered:s})})),()=>i.forEach(e=>e())}function hr(e){switch(e){case`fork`:return`fork`;case`subagent`:return`subagent`;case`compress`:return`compress`;case`root`:return;default:return}}function gr(e){let t={model:e.model??null,cwd:e.cwd??null,title:e.title??null};switch(e.kind){case`fork`:if(!e.parentAdapterSessionId||!e.forkPointMessageId)throw Error(`Fork session metadata requires parentAdapterSessionId and forkPointMessageId`);return{...t,kind:`fork`,parentAdapterSessionId:e.parentAdapterSessionId,forkPointMessageId:e.forkPointMessageId};case`subagent`:if(!e.parentAdapterSessionId)throw Error(`Subagent session metadata requires parentAdapterSessionId`);return{...t,kind:`subagent`,parentAdapterSessionId:e.parentAdapterSessionId,forkPointMessageId:null};case`compress`:if(!e.parentAdapterSessionId)throw Error(`Compress session metadata requires parentAdapterSessionId`);return{...t,kind:`compress`,parentAdapterSessionId:e.parentAdapterSessionId,forkPointMessageId:null};case null:return{...t,kind:null,parentAdapterSessionId:null,forkPointMessageId:null};default:return Cr(e.kind)}}async function _r(e,t,n){t&&await e.request(a.delete,{sessionId:n})}async function vr(e,t){if(!t)return{parentSessionId:void 0,rootSessionId:void 0};let{session:n}=await e.request($.get,{adapterSessionId:t}),r=n?.sessionId??void 0;if(!r)return{parentSessionId:void 0,rootSessionId:void 0};let{session:i}=await e.request(a.get,{sessionId:r});return{parentSessionId:r,rootSessionId:i?.rootSessionId??r}}async function yr(e,t,n){let{session:r}=await e.request(a.get,{sessionId:t});if(!r)return;let i={sessionId:t};n.title&&!r.title&&(i.title=n.title),n.cwd&&!r.targetWorkingDirectory&&(i.targetWorkingDirectory=n.cwd),n.startedAt!==void 0&&n.startedAt<r.createdAt&&(i.createdAt=n.startedAt,r.lastActivityAt===r.createdAt&&(i.lastActivityAt=n.startedAt)),Object.keys(i).length!==1&&await e.request(a.update,i)}async function br(e,t,n,r,i,a,o){let{session:s}=await e.request($.get,{adapterSessionId:t});if(s?.sessionId&&s.sessionId!==n)return await _r(e,r,n),!1;let{success:c}=await e.request($.linkSession,{adapterSessionId:t,sessionId:n});if(!c)return await _r(e,r,n),!1;let l=hr(a??`root`);return await e.emit(E.created,{sessionId:n,createdAt:o,parentSessionId:i.parentSessionId??null,branchKind:l??null}),!0}async function xr(e){let{bus:t,adapterSessionId:n,adapterName:r,adapterId:i,metadata:o,existingSessionId:s}=e,{parentAdapterSessionId:c,forkPointMessageId:l,kind:u,cwd:d,title:f}=o,{session:p}=await t.request($.get,{adapterSessionId:n});if(!p)throw Error(`Adapter session not found for createAndLink: ${n}`);if(p?.sessionId)return await yr(t,p.sessionId,{cwd:o.cwd,title:o.title,startedAt:p.startedAt}),{sessionId:p.sessionId,created:!1};let m=await vr(t,c),h=s??crypto.randomUUID(),g=hr(u??`root`),_=p.startedAt,{success:v}=await t.request(a.set,{sessionId:h,session:{sessionId:h,status:`discovered`,isImported:!0,isOrchestrated:!1,adapterSessionId:n,adapterName:r,adapterId:i,createdAt:_,lastActivityAt:_,agents:[],...m.parentSessionId===void 0?{}:{parentSessionId:m.parentSessionId},...m.rootSessionId===void 0?{}:{rootSessionId:m.rootSessionId},...l?{forkPointMessageId:l}:{},...g===void 0?{}:{branchKind:g},...d?{targetWorkingDirectory:d}:{},...f?{title:f}:{}},ifAbsent:!0});try{let e=await br(t,n,h,v,m,u,_);return{sessionId:e?h:(await t.request($.get,{adapterSessionId:n})).session?.sessionId??h,created:e&&v}}catch(e){try{await _r(t,v,h)}catch(e){console.error(`[createAndLinkImportedSession] Failed to cleanup orphaned session`,{sessionId:h,adapterSessionId:n,error:e})}throw e}}function Sr(e){return e.on($.createAndLink,async t=>{let n=await xr({bus:e,...t.payload});t.setResult(n)})}function Cr(e){throw Error(`Unsupported session lineage kind: ${String(e)}`)}function wr(e){let{adapterSessionId:t,adapterName:n,model:r,cwd:i,logFilePath:a,startedAt:o,kind:s,parentAdapterSessionId:c,forkPointMessageId:l}=e,u=s===`root`?{kind:s,parentAdapterSessionId:null,forkPointMessageId:null}:s===`fork`?{kind:s,parentAdapterSessionId:c,forkPointMessageId:l}:{kind:s,parentAdapterSessionId:c,forkPointMessageId:null};return{adapterSessionId:t,adapterName:n,model:r??null,cwd:i??null,logFilePath:a??null,...o===void 0?{}:{startedAt:o},...u}}function Tr(e){return e.on(w.session.discovered,async t=>{let n=fe.safeParse(t.payload);if(!n.success)throw console.error(`[registerSessionDiscoveredHandler] Invalid adapter.session.discovered payload`,{issues:n.error.issues}),n.error;let r=n.data,{adapterId:i,adapterSessionId:a,adapterName:o,parentAdapterSessionId:s,forkPointMessageId:c,model:l,cwd:u,title:d,kind:f}=r,{sessionId:p,created:m}=await e.request($.upsert,wr(r));await e.request($.createAndLink,{adapterSessionId:a,adapterName:o,adapterId:i,metadata:gr({kind:f===`root`?null:f,parentAdapterSessionId:s,forkPointMessageId:c,model:l,cwd:u,title:d}),existingSessionId:m?void 0:p??void 0})})}function Er(e,t){let{adapterSessions:n}=Q.extensions.drizzle;async function r(i,o,s=0){if(s>100)throw Error(`Cycle detected in session lineage (depth > 100)`);let c=await t.select({adapterSessionId:n.adapterSessionId,sessionId:n.sessionId}).from(n).where(N(n.parentAdapterSessionId,i));for(let t of c)t.sessionId&&await e.request(a.update,{sessionId:t.sessionId,rootSessionId:o}),await r(t.adapterSessionId,o,s+1)}return e.on(w.session.linked,async i=>{let{adapterSessionId:o,sessionId:s}=i.payload,c=await t.select({adapterSessionId:n.adapterSessionId,sessionId:n.sessionId,kind:n.kind}).from(n).where(N(n.parentAdapterSessionId,o));if(c.length===0)return;let{session:l}=await e.request(a.get,{sessionId:s}),u=l?.rootSessionId??s;for(let t of c){let n=hr(t.kind);t.sessionId&&await e.request(a.update,{sessionId:t.sessionId,parentSessionId:s,rootSessionId:u,...n===void 0?{}:{branchKind:n}}),await r(t.adapterSessionId,u)}})}const Dr=new Set([`Agent`,`spawn_subagent`]),Or=`[^A-Za-z0-9_-]`;function kr(e){return e.replaceAll(/[.*+?^${}()|[\]\\]/g,`\\$&`)}function Ar(e,t){return t.test(e)}async function jr(e,t){let n=[],r,i=0;do{let a=await e.request(b.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 Mr(e){let t=[];for(let n of e)for(let e of n.blocks)e.type===`tool_call`&&Dr.has(e.name)&&t.push({toolCallId:e.toolCallId});return t}function Nr(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(Ar(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 Pr(e){return[...e].map(e=>{let t=kr(e);return{id:e,pattern:RegExp(`(^|${Or})${t}($|${Or})`)}})}async function Fr(e,t,n){let{children:r}=await e.request(a.getChildren,{sessionId:n}),i=r.filter(e=>e.branchKind===`compress`);if(i.length===0)return;let{session:o}=await e.request(a.get,{sessionId:t}),s=o?.adapterSessionId;if(!s)return;let c=Pr(new Set([s])),l=(await Promise.all(i.map(async t=>{let n=await jr(e,t.sessionId),r=Mr(n);if(r.length===0)return null;let i=Nr(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(a.update,{sessionId:t,parentSessionId:l[0].parentSessionId,spawningToolCallId:l[0].toolCallId})}async function Ir(e,t,n){let{session:r}=await e.request($.get,{adapterSessionId:t}),i=r?.parentAdapterSessionId;if(!i)return;let{session:o}=await e.request($.get,{adapterSessionId:i}),s=o?.sessionId;if(!s)return;let{children:c}=await e.request(a.getChildren,{sessionId:s}),l=await Lr(e,c);if(l.size===0)return;let u=await jr(e,n),d=Mr(u);if(d.length===0)return;let f=Nr(u,Pr(new Set(l.keys()))),p=new Map;for(let e of d){let t=f.get(e.toolCallId);t!==void 0&&p.set(t,(p.get(t)??0)+1)}let m=new Map;for(let e of d){let t=f.get(e.toolCallId),n=t===void 0?void 0:l.get(t);n!==void 0&&t!==void 0&&p.get(t)===1&&m.set(n,e.toolCallId)}if(m.size===0)return;let h=[...m].map(async([t,r])=>{try{let{session:i}=await e.request(a.get,{sessionId:t});if(!i)return;await e.request(a.update,{sessionId:t,parentSessionId:n,spawningToolCallId:r})}catch(e){console.error(`[CompressLineageResolver] Failed to re-parent subagent`,{compressChildSessionId:n,parentMakaioSessionId:s,childSessionId:t,toolCallId:r,error:e})}});await Promise.allSettled(h)}async function Lr(e,t){let n=await Promise.all(t.filter(e=>e.branchKind===`subagent`).map(async t=>{let{session:n}=await e.request(a.get,{sessionId:t.sessionId});return n?.adapterSessionId?{sessionId:t.sessionId,adapterSessionId:n.adapterSessionId}:null}));return new Map(n.filter(e=>e!==null).map(e=>[e.adapterSessionId,e.sessionId]))}function Rr(e){return e.on(w.session.linked,async t=>{try{let{adapterSessionId:n,sessionId:r}=t.payload,{session:i}=await e.request(a.get,{sessionId:r});if(!i)return;if(i.branchKind===`subagent`&&i.parentSessionId!==void 0){await Fr(e,r,i.parentSessionId);return}if(i.branchKind!==`compress`)return;await Ir(e,n,r)}catch(e){console.error(`[CompressLineageResolver] Failed to resolve compress lineage`,{payload:t.payload,error:e})}})}function zr(e){return[...e].map(e=>{let t=kr(e);return{id:e,pattern:RegExp(`(^|${Or})${t}($|${Or})`)}})}function Br(e){return e.on(w.session.linked,async t=>{try{let{sessionId:n}=t.payload,{children:r}=await e.request(a.getChildren,{sessionId:n}),i=new Set(r.filter(e=>e.branchKind===`subagent`&&e.spawningToolCallId===void 0).map(e=>e.sessionId));if(i.size===0)return;let o=await jr(e,n),s=Mr(o);if(s.length===0)return;let c=Nr(o,zr(i)),l=new Map;for(let e of s){let t=c.get(e.toolCallId);t!==void 0&&l.set(t,(l.get(t)??0)+1)}let u=new Map;for(let e of s){let t=c.get(e.toolCallId);t!==void 0&&l.get(t)===1&&u.set(t,e.toolCallId)}let d=[...u].map(async([t,r])=>{try{let{session:n}=await e.request(a.get,{sessionId:t});if(!n||n.spawningToolCallId!==void 0)return;await e.request(a.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(d)}catch(e){console.error(`Failed to backfill spawningToolCallId for linked session`,{payload:t.payload,error:e})}})}var Vr=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(T.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{Zt as A,Ht as B,Wn as C,q as D,wn as E,qt as F,R as G,zt as H,Kt as I,mt as J,Ot as K,Wt as L,Xt as M,Yt as N,xn as O,Jt as P,Ve as Q,Gt as R,Jn as S,Tn as T,Lt as U,Vt as V,z as W,Ze as X,rt as Y,Ye as Z,$n as _,xr as a,Kn as b,hr as c,$ as d,rr as f,er as g,X as h,Er as i,Qt as j,sn as k,mr as l,tr as m,Br as n,Sr as o,nr as p,Tt as q,Rr as r,Tr as s,Vr as t,Q as u,Gn as v,Hn as w,Yn as x,qn as y,Ut as z};
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
|
|
3
|
+
//#region packages/contracts/src/adapter/schemas/session-lineage.d.ts
|
|
4
|
+
/** Closed set of adapter session lineage kinds. */
|
|
5
|
+
declare const SESSION_LINEAGE_KINDS: readonly ["root", "fork", "subagent", "compress"];
|
|
6
|
+
/** Canonical root lineage literal. */
|
|
7
|
+
declare const ROOT_SESSION_LINEAGE_KIND: "root";
|
|
8
|
+
/** Canonical fork lineage literal. */
|
|
9
|
+
declare const FORK_SESSION_LINEAGE_KIND: "fork";
|
|
10
|
+
/** Canonical subagent lineage literal. */
|
|
11
|
+
declare const SUBAGENT_SESSION_LINEAGE_KIND: "subagent";
|
|
12
|
+
/** Canonical compress lineage literal. */
|
|
13
|
+
declare const COMPRESS_SESSION_LINEAGE_KIND: "compress";
|
|
14
|
+
/** Discriminates the relationship of a session to its parent. */
|
|
15
|
+
declare const SessionLineageKindSchema: z.ZodEnum<{
|
|
16
|
+
root: "root";
|
|
17
|
+
fork: "fork";
|
|
18
|
+
subagent: "subagent";
|
|
19
|
+
compress: "compress";
|
|
20
|
+
}>;
|
|
21
|
+
type SessionLineageKind = z.infer<typeof SessionLineageKindSchema>;
|
|
22
|
+
/**
|
|
23
|
+
* Canonical lineage contract for adapter sessions.
|
|
24
|
+
* Reusable by any adapter with fork/subagent concepts.
|
|
25
|
+
*/
|
|
26
|
+
declare const RootSessionLineageSchema: z.ZodObject<{
|
|
27
|
+
kind: z.ZodLiteral<"root">;
|
|
28
|
+
parentAdapterSessionId: z.ZodNull;
|
|
29
|
+
forkPointMessageId: z.ZodNull;
|
|
30
|
+
}, z.core.$strip>;
|
|
31
|
+
declare const ForkSessionLineageSchema: z.ZodObject<{
|
|
32
|
+
kind: z.ZodLiteral<"fork">;
|
|
33
|
+
parentAdapterSessionId: z.ZodString;
|
|
34
|
+
forkPointMessageId: z.ZodString;
|
|
35
|
+
}, z.core.$strip>;
|
|
36
|
+
declare const SubagentSessionLineageSchema: z.ZodObject<{
|
|
37
|
+
kind: z.ZodLiteral<"subagent">;
|
|
38
|
+
parentAdapterSessionId: z.ZodString;
|
|
39
|
+
forkPointMessageId: z.ZodNull;
|
|
40
|
+
}, z.core.$strip>;
|
|
41
|
+
declare const CompressSessionLineageSchema: z.ZodObject<{
|
|
42
|
+
kind: z.ZodLiteral<"compress">;
|
|
43
|
+
parentAdapterSessionId: z.ZodString;
|
|
44
|
+
forkPointMessageId: z.ZodNull;
|
|
45
|
+
}, z.core.$strip>;
|
|
46
|
+
declare const SessionLineageSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
47
|
+
kind: z.ZodLiteral<"root">;
|
|
48
|
+
parentAdapterSessionId: z.ZodNull;
|
|
49
|
+
forkPointMessageId: z.ZodNull;
|
|
50
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
51
|
+
kind: z.ZodLiteral<"fork">;
|
|
52
|
+
parentAdapterSessionId: z.ZodString;
|
|
53
|
+
forkPointMessageId: z.ZodString;
|
|
54
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
55
|
+
kind: z.ZodLiteral<"subagent">;
|
|
56
|
+
parentAdapterSessionId: z.ZodString;
|
|
57
|
+
forkPointMessageId: z.ZodNull;
|
|
58
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
59
|
+
kind: z.ZodLiteral<"compress">;
|
|
60
|
+
parentAdapterSessionId: z.ZodString;
|
|
61
|
+
forkPointMessageId: z.ZodNull;
|
|
62
|
+
}, z.core.$strip>], "kind">;
|
|
63
|
+
type SessionLineage = z.infer<typeof SessionLineageSchema>;
|
|
64
|
+
//#endregion
|
|
65
|
+
export { ROOT_SESSION_LINEAGE_KIND as a, SUBAGENT_SESSION_LINEAGE_KIND as c, SessionLineageKindSchema as d, SessionLineageSchema as f, ForkSessionLineageSchema as i, SessionLineage as l, CompressSessionLineageSchema as n, RootSessionLineageSchema as o, SubagentSessionLineageSchema as p, FORK_SESSION_LINEAGE_KIND as r, SESSION_LINEAGE_KINDS as s, COMPRESS_SESSION_LINEAGE_KIND as t, SessionLineageKind as u };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{F as e,G as t,I as n,L as r,M as i,N as a,S as o,W as s,at as c,q as l,rt as u}from"./schemas-BXstpWVp.mjs";import{t as d}from"./schemas-Co_sVhzz.mjs";import{i as f}from"./account-identity-Ce1Bwrqi.mjs";import{t as p}from"./storage-namespace-definition-CHu2k14q.mjs";import{z as m}from"zod";import{createBusNamespace as h}from"@makaio/framework/core";const g=h(`session`,o),_=g.subjects;function v(e){return a.includes(e.type)}const y=`ui-warnings`,b=`connector-swap-warning-suppressed`,x=1440*60*1e3,S={cancel:`cancel`,edit:`edit`,continue:`continue`},C=`CONNECTOR_SWAP_CANCELLED`;var w=class extends Error{code=C;constructor(){super(`Connector swap cancelled by user`),this.name=`ConnectorSwapCancelledError`}};function T(e){return e instanceof w||e instanceof Error&&`code`in e&&e.code===`CONNECTOR_SWAP_CANCELLED`}const E={branch:{label:`branch`,staysInView:!0,navigatesToChild:!1,canMergeBack:!0},subagent:{label:`subagent`,staysInView:!0,navigatesToChild:!1,canMergeBack:!0},fork:{label:`fork`,staysInView:!1,navigatesToChild:!0,canMergeBack:!1},compress:{label:`compress`,staysInView:!1,navigatesToChild:!0,canMergeBack:!1},rewrite:{label:`rewrite`,staysInView:!1,navigatesToChild:!0,canMergeBack:!1},coordinator:{label:`coordinator`,staysInView:!0,navigatesToChild:!1,canMergeBack:!1},aside:{label:`aside`,staysInView:!0,navigatesToChild:!1,canMergeBack:!1}};function D(e){return e!=null&&E[e].staysInView}function O(e){return e==null||E[e].navigatesToChild}function k(e){return e!=null&&E[e].canMergeBack}function A(e){return E[e]}const j=m.object({timestamp:m.number(),messageId:m.string()}),M=p(`message`,{schemas:{append:{request:m.object({message:l.omit({messageId:!0}).extend({messageId:m.string().optional()}),emitEvent:m.boolean().optional()}),response:m.object({message:l})},getBySession:{request:m.object({sessionId:m.string(),limit:m.number().int().min(1).optional(),after:j.optional(),includeAfter:m.boolean().optional(),order:m.enum([`asc`,`desc`]).optional()}),response:m.object({messages:m.array(l),nextCursor:j.nullable()})},getByTurn:{request:m.object({turnId:m.string()}),response:m.object({messages:m.array(l)})},get:{request:m.object({messageId:m.string()}),response:m.object({message:l.nullable()})},getByAdapterMessageId:{request:m.object({adapterMessageId:m.string()}),response:m.object({message:l.nullable()})},search:{request:m.object({query:m.string(),sessionId:m.string().optional(),limit:m.number().int().min(1).optional()}),response:m.object({messages:m.array(l),total:m.number()})},ftsSearch:{request:m.object({query:m.string(),sessionId:m.string().optional(),limit:m.number().int().min(1).optional().default(20)}),response:m.object({results:m.array(m.object({messageId:m.string(),sessionId:m.string(),score:m.number(),excerpt:m.string()})),total:m.number()})},upsertByAdapterMessageId:{request:m.object({sessionId:m.string(),turnId:m.string().nullable(),adapterMessageId:m.string(),role:m.enum([`user`,`assistant`]),contentText:m.string(),blocks:m.array(s),agentId:m.string().optional(),adapterSessionId:m.string().optional(),timestamp:m.number(),origin:t.optional()}),response:m.object({messageId:m.string(),created:m.boolean()})},stored:m.object({message:l})}}),N=M.subjects;function P(e,t){return e.timestamp===t.timestamp?e.messageId.localeCompare(t.messageId):e.timestamp-t.timestamp}function F(e,t){return P(t,e)}function I(e){return{timestamp:e.timestamp,messageId:e.messageId}}function L(e){return`${e.timestamp}:${e.messageId}`}const R=m.object({after:m.string().optional(),limit:m.number().int().min(1).optional(),types:m.array(m.string()).optional(),includeReasoning:m.boolean().optional(),order:m.enum([`asc`,`desc`]).optional()}),z=m.object({events:m.array(i),nextCursor:m.string().nullable(),totalCount:m.number().optional()}),B=p(`sessionEvent`,{schemas:{append:{request:m.object({event:i}),response:m.object({success:m.boolean()})},getEvents:{request:m.object({sessionId:m.string(),options:R.optional()}),response:z},getByIds:{request:m.object({sessionId:m.string(),eventIds:m.array(m.string())}),response:m.object({events:m.array(i)})},deleteBySession:{request:m.object({sessionId:m.string()}),response:m.object({success:m.boolean(),deletedCount:m.number().optional()})},getEventsBySessions:{request:m.object({sessionIds:m.array(m.string()),types:m.array(m.string()),limitPerSession:m.number().int().min(1).optional()}),response:m.object({eventsBySession:m.record(m.string(),m.array(i))})}}}),V=B.subjects,H=e.extend({preview:n});function U(e,t){e.clientAccountId!==void 0&&e.lastClientIdentityObservation===void 0&&t.addIssue({code:m.ZodIssueCode.custom,path:[`lastClientIdentityObservation`],message:`lastClientIdentityObservation is required when clientAccountId is provided`}),e.clientAccountId!==void 0&&e.clientId===void 0&&t.addIssue({code:m.ZodIssueCode.custom,path:[`clientId`],message:`clientId is required when clientAccountId is provided`})}const W=e.superRefine((e,t)=>{U(e,t)}),G=m.object({sessionId:m.string(),session:W,ifAbsent:m.boolean().optional()}).superRefine((e,t)=>{e.sessionId!==e.session.sessionId&&t.addIssue({code:m.ZodIssueCode.custom,path:[`session`,`sessionId`],message:`session.sessionId must match the top-level sessionId`})}),K={request:m.object({sessionId:m.string(),status:m.enum([`active`,`closed`,`archived`,`discovered`]).optional(),parentSessionId:m.string().optional(),rootSessionId:m.string().optional(),forkPointMessageId:m.string().optional(),branchKind:c.optional(),isOrchestrated:m.boolean().optional(),clientId:m.string().optional(),clientAccountId:m.string().optional(),lastClientIdentityObservation:f.optional(),executionTargetId:m.string().nullable().optional(),approvalPolicyOverride:d.nullable().optional(),title:m.string().optional(),targetWorkingDirectory:m.string().optional(),createdAt:m.number().finite().optional(),lastActivityAt:m.number().finite().optional(),spawningToolCallId:m.string().nullable().optional()}),response:m.object({success:m.boolean(),clientAccountChanged:m.boolean().optional()})},q=p(`session`,{schemas:{get:{request:m.object({sessionId:m.string()}),response:m.object({session:e.nullable()})},set:{request:G,response:m.object({success:m.boolean(),clientAccountChanged:m.boolean().optional()})},delete:{request:m.object({sessionId:m.string()}),response:m.object({success:m.boolean()})},list:{request:m.object({status:m.enum([`active`,`closed`,`archived`,`discovered`,`all`]).optional(),limit:m.number().int().min(1).optional(),offset:m.number().int().min(0).optional(),includePreview:m.boolean().optional(),executionTargetId:m.string().optional()}),response:m.object({sessions:m.array(r),total:m.number()})},getChildren:{request:m.object({sessionId:m.string()}),response:m.object({children:m.array(u)})},search:{request:m.object({query:m.string(),limit:m.number().int().min(1).optional(),status:m.enum([`active`,`closed`,`archived`,`discovered`,`all`]).optional(),isImported:m.boolean().optional()}),response:m.object({sessions:m.array(H),total:m.number()})},update:K,getByAdapterSessionId:{request:m.object({adapterSessionId:m.string()}),response:m.object({session:e.nullable()})},getStatusCounts:{request:m.object({}),response:m.object({all:m.number(),active:m.number(),closed:m.number(),archived:m.number(),discovered:m.number()})}}}),J=q.subjects;export{b as C,g as D,v as E,_ as O,S,y as T,k as _,K as a,w as b,P as c,I as d,j as f,D as g,A as h,J as i,F as l,N as m,G as n,B as o,M as p,W as r,V as s,q as t,L as u,O as v,x as w,T as x,C as y};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import"./ui-config-CXmbsqZV.mjs";import{z as e}from"zod";const t=e.lazy(()=>e.union([e.string(),e.number().finite(),e.boolean(),e.null(),e.array(t),e.record(e.string(),t)])),n=e.record(e.string(),t),r=e.custom(e=>n.safeParse(e).success),i=e.discriminatedUnion(`type`,[e.object({type:e.literal(`base64`),data:e.string(),mimeType:e.string()}),e.object({type:e.literal(`url`),url:e.string(),mimeType:e.string().optional()})]),a=e.enum([`file`,`directory`]),o=e.discriminatedUnion(`type`,[e.object({type:e.literal(`text`),content:e.string()}),e.object({type:e.literal(`image`),source:i}),e.object({type:e.literal(`document`),source:i}),e.object({type:e.literal(`attachment`),fileName:e.string(),filePath:e.string(),source:i,displayName:e.string().optional(),attachmentType:a}),e.object({type:e.literal(`reasoning`),content:e.string(),metadata:e.record(e.string(),e.unknown()).optional()}),e.object({type:e.literal(`tool_call`),toolCallId:e.string(),name:e.string(),args:e.record(e.string(),e.unknown())}),e.object({type:e.literal(`tool_output`),toolCallId:e.string(),output:e.string(),isError:e.boolean().optional()})]),s=e.enum([`user`,`assistant`,`system`]),c=e.object({role:s.optional(),blocks:e.union([o,e.array(o)])}),l=e.union([e.string(),c]),u=e.object({message:e.string().optional()}),d=e.enum([`completed`,`superseded`,`merged`,`cancelled`,`error`,`rejected`]),f=e.object({messageId:e.string(),result:u.optional(),error:e.string().optional(),outcome:d}),p=e.enum([`enqueue`,`immediate`,`replace`]),m=e.union([e.string(),e.object({mode:e.literal(`append`),content:e.string()})]),h=e.object({role:e.enum([`user`,`assistant`,`system`]),blocks:e.array(o),message:e.string().optional()}),g=[`rate_limit`,`auth`,`model_unavailable`,`quota_exceeded`],_=e.enum(g);export{p as a,c,f as d,m as f,t as h,o as i,h as l,n as m,g as n,l as o,r as p,_ as r,d as s,i as t,u};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{z as e}from"zod";const t=e.object({id:e.string()});export{t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{t as e}from"./storage-namespace-definition-CHu2k14q.mjs";import{z as t}from"zod";import{createBusNamespace as n}from"@makaio/framework/core";const r=t.enum([`global`,`project`,`session`]),i=t.enum([`filesystem`,`database`]),a=t.enum([`manual`,`auto`]),o=t.enum([`model`,`user`,`auto`,`reinjection`]),s=t.enum([`cwd_changed`,`session_end`,`user`,`replaced`]),c=t.object({maxTurns:t.number().int().positive().optional()}),l=t.object({name:t.string().regex(/^[a-z0-9]+(?:-[a-z0-9]+)*$/).max(64),description:t.string().min(1).max(1024),license:t.string().optional(),compatibility:t.string().min(1).max(500).optional(),metadata:t.record(t.string(),t.string()).optional(),allowedTools:t.string().optional()}),u=t.object({category:t.string().optional(),tags:t.array(t.string()).optional(),adapters:t.array(t.string()).nullable().optional(),activationMode:a.default(`manual`),reinjection:c.optional(),enabled:t.boolean().default(!0)}),d=l.merge(u).extend({id:t.string(),source:i,scope:r,projectId:t.string().optional(),sessionId:t.string().optional(),location:t.string().optional(),baseDir:t.string().optional(),content:t.string(),createdAt:t.number(),updatedAt:t.number()}),f=t.object({name:l.shape.name,description:l.shape.description,compatibility:l.shape.compatibility,category:u.shape.category,tags:u.shape.tags,adapters:u.shape.adapters,activationMode:u.shape.activationMode,source:i,scope:r,location:t.string().optional(),baseDir:t.string().optional()}).strict(),p=t.object({license:l.shape.license,compatibility:l.shape.compatibility,allowedTools:l.shape.allowedTools,metadata:l.shape.metadata}).strict(),m=t.object({name:t.string(),description:t.string(),compatibility:t.string().optional()}),h=t.object({name:t.string(),content:t.string(),license:t.string().optional(),compatibility:t.string().optional(),allowedTools:t.string().optional(),metadata:t.record(t.string(),t.string()).optional()}),g=t.object({name:t.string(),content:t.string(),metadata:p.optional(),baseDir:t.string().optional(),resources:t.array(t.string()).optional(),trigger:o,activatedAt:t.number(),activatedAtTurn:t.number().int().positive().optional(),lastInjectedAtTurn:t.number().int().positive().optional(),reinjection:c.optional()}),_=l.merge(u).extend({id:t.string(),scope:r,projectId:t.string().optional(),sessionId:t.string().optional(),content:t.string(),source:t.literal(`database`).default(`database`)}).strict(),v=t.object({sessionId:t.string().optional(),projectId:t.string().optional(),adapterId:t.string().optional(),category:t.string().optional(),tags:t.array(t.string()).optional(),enabledOnly:t.boolean().optional()}),y={"catalog.built":t.object({sessionId:t.string(),agentId:t.string(),cwd:t.string(),adapterId:t.string().optional(),skillNames:t.array(t.string()),timestamp:t.number()}),activated:t.object({sessionId:t.string(),agentId:t.string(),cwd:t.string(),adapterId:t.string().optional(),skillName:t.string(),trigger:o,turnNumber:t.number().int().positive().optional(),timestamp:t.number()}),deactivated:t.object({sessionId:t.string(),agentId:t.string(),skillName:t.string(),reason:s,timestamp:t.number()}),getCatalog:{request:t.object({sessionId:t.string(),agentId:t.string(),cwd:t.string().optional(),projectId:t.string().optional(),adapterId:t.string().optional()}),response:t.object({entries:t.array(f),cwd:t.string()})},activate:{request:t.object({sessionId:t.string(),agentId:t.string(),skillName:t.string(),trigger:o,cwd:t.string().optional(),projectId:t.string().optional(),adapterId:t.string().optional(),turnNumber:t.number().int().positive().optional()}),response:t.object({name:t.string(),content:t.string(),metadata:p.optional(),baseDir:t.string().optional(),resources:t.array(t.string()).optional(),alreadyActive:t.boolean().default(!1)})},getActiveSkills:{request:t.object({sessionId:t.string(),agentId:t.string(),cwd:t.string().optional(),projectId:t.string().optional(),adapterId:t.string().optional()}),response:t.object({skills:t.array(g),cwd:t.string().optional()})}},b=n(`skill`,y),x=b.subjects,S=e(`skill`,{schemas:{get:{request:t.object({id:t.string()}),response:t.object({skill:d.nullable()})},set:{request:t.object({skill:_}),response:t.object({id:t.string()})},delete:{request:t.object({id:t.string()}),response:t.object({deleted:t.boolean()})},list:{request:v,response:t.object({skills:t.array(d)})},getEffective:{request:v,response:t.object({skills:t.array(d)})}}}),C=S.subjects;function w(e){if(e.scope===`global`){if(e.projectId||e.sessionId)throw Error(`Global scope skills must not have projectId or sessionId`);return}if(e.scope===`project`){if(!e.projectId)throw Error(`Project scope skills require projectId`);if(e.sessionId)throw Error(`Project scope skills must not have sessionId`);return}if(!e.sessionId)throw Error(`Session scope skills require sessionId`)}export{h as S,c as _,x as a,r as b,a as c,m as d,s as f,d as g,_ as h,b as i,o as l,v as m,C as n,p as o,l as p,w as r,g as s,S as t,f as u,u as v,i as x,y};
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { t as MakaioDatabase } from "../../types-6WxLfoM3.mjs";
|
|
2
|
+
|
|
3
|
+
//#region packages/storage/drizzle/src/client.d.ts
|
|
4
|
+
/**
|
|
5
|
+
* Configuration options for the database client.
|
|
6
|
+
*/
|
|
7
|
+
interface DatabaseClientConfig {
|
|
8
|
+
/**
|
|
9
|
+
* Database URL.
|
|
10
|
+
* Supports libSQL / SQLite connection strings:
|
|
11
|
+
* - `file:./path/to/db.db` for local SQLite files
|
|
12
|
+
* - `libsql://host` for remote libSQL/Turso
|
|
13
|
+
* - `http://localhost:8080` for local libSQL server
|
|
14
|
+
* - `:memory:` for an in-process in-memory database
|
|
15
|
+
*
|
|
16
|
+
* Defaults to `'file:./makaio.db'`.
|
|
17
|
+
*/
|
|
18
|
+
url?: string;
|
|
19
|
+
/**
|
|
20
|
+
* Authentication token for remote databases (Turso).
|
|
21
|
+
* Not required for local file-based or in-memory databases.
|
|
22
|
+
*/
|
|
23
|
+
authToken?: string;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Result of creating a database client.
|
|
27
|
+
*/
|
|
28
|
+
interface DatabaseClient {
|
|
29
|
+
/** The drizzle ORM instance */
|
|
30
|
+
db: MakaioDatabase;
|
|
31
|
+
/** Close the database connection. Safe to call multiple times. */
|
|
32
|
+
close(): void;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Creates a drizzle ORM instance backed by the appropriate SQLite driver for
|
|
36
|
+
* the current runtime.
|
|
37
|
+
*
|
|
38
|
+
* **Driver selection (runtime-conditional):**
|
|
39
|
+
* - **Bun + local URL** (`file:` or `:memory:`) — uses the built-in `bun:sqlite`
|
|
40
|
+
* driver via `drizzle-orm/bun-sqlite`. The module is loaded dynamically so
|
|
41
|
+
* this file is safe to import under Node.js.
|
|
42
|
+
* - **Bun + remote URL** (`libsql:`, `http:`, `https:`, …) — stays on
|
|
43
|
+
* `@libsql/client` via `drizzle-orm/libsql`; `bun:sqlite` cannot handle
|
|
44
|
+
* remote connections.
|
|
45
|
+
* - **Node.js** — always uses `@libsql/client` via `drizzle-orm/libsql`.
|
|
46
|
+
*
|
|
47
|
+
* For local databases, automatically enables:
|
|
48
|
+
* - `file:` URLs: WAL journal mode, 5-second busy timeout, and foreign key enforcement
|
|
49
|
+
* - `:memory:`: foreign key enforcement only
|
|
50
|
+
*
|
|
51
|
+
* SEAM: This factory allows swapping the database backend by providing
|
|
52
|
+
* different connection URLs (local file, Turso, libSQL server).
|
|
53
|
+
* @param config - Database configuration options
|
|
54
|
+
* @returns Database client with drizzle ORM instance and close method
|
|
55
|
+
* @example
|
|
56
|
+
* ```typescript
|
|
57
|
+
* import { createDatabaseClient } from '@makaio/framework/storage/drizzle/client';
|
|
58
|
+
*
|
|
59
|
+
* // Local development with file-based SQLite
|
|
60
|
+
* const { db, close } = await createDatabaseClient();
|
|
61
|
+
*
|
|
62
|
+
* // Production with Turso
|
|
63
|
+
* const { db, close } = await createDatabaseClient({
|
|
64
|
+
* url: process.env.TURSO_DATABASE_URL,
|
|
65
|
+
* authToken: process.env.TURSO_AUTH_TOKEN,
|
|
66
|
+
* });
|
|
67
|
+
*
|
|
68
|
+
* // Use with storage handlers
|
|
69
|
+
* import { registerDrizzleSessionStorage } from '@makaio/framework/services/session';
|
|
70
|
+
* registerDrizzleSessionStorage(bus, db, ctx);
|
|
71
|
+
*
|
|
72
|
+
* // Close when done
|
|
73
|
+
* close();
|
|
74
|
+
* ```
|
|
75
|
+
*/
|
|
76
|
+
declare function createDatabaseClient(config?: DatabaseClientConfig): Promise<DatabaseClient>;
|
|
77
|
+
//#endregion
|
|
78
|
+
export { DatabaseClient, DatabaseClientConfig, createDatabaseClient };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{fileURLToPath as e}from"node:url";import{sql as t}from"drizzle-orm";import{isBunRuntime as n}from"@makaio/framework/utils";import{drizzle as r}from"drizzle-orm/libsql";async function i(e={}){let{url:t=`file:./makaio.db`,authToken:r}=e;return n()&&a(t)?c(t):l(t,r)}function a(e){return e.startsWith(`file:`)||e===`:memory:`}const o=[`PRAGMA journal_mode = WAL`,`PRAGMA busy_timeout = 5000`,`PRAGMA foreign_keys = ON`],s=[`PRAGMA foreign_keys = ON`];async function c(n){let{Database:r}=await import(`bun:sqlite`),{drizzle:i}=await import(`drizzle-orm/bun-sqlite`),a=new r(n===`:memory:`?`:memory:`:n.startsWith(`file://`)?e(n):n.replace(/^file:/,``)),o=i(a);for(let e of d(n))o.run(t.raw(e));let s=!1;return{db:o,close:()=>{s||(s=!0,a.close())}}}async function l(e,n){let i=r({connection:{url:e,authToken:n}});if(a(e))for(let n of d(e))await i.run(t.raw(n));let o=!1;return{db:i,close:()=>{o||(o=!0,i.$client.close())}}}function u(e){return e.startsWith(`file:`)}function d(e){return u(e)?o:s}export{i as createDatabaseClient};
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
import { t as MakaioDatabase } from "../../types-6WxLfoM3.mjs";
|
|
2
|
+
import { IMakaioBus } from "@makaio/framework/bus";
|
|
3
|
+
import { ExtensionContext } from "@makaio/framework/contracts";
|
|
4
|
+
import { StorageNamespace, StorageNamespaceConfig, StorageNamespaceExtensions, createStorageNamespace } from "@makaio/framework/storage";
|
|
5
|
+
import { Table } from "drizzle-orm";
|
|
6
|
+
|
|
7
|
+
//#region packages/storage/drizzle/src/transaction.d.ts
|
|
8
|
+
type LibSQLTransactionExecutor = MakaioDatabase['transaction'];
|
|
9
|
+
/**
|
|
10
|
+
* Transaction callback that receives Drizzle's transaction context.
|
|
11
|
+
*
|
|
12
|
+
* Typed against the libsql async transaction context, which is the widest
|
|
13
|
+
* compatible contract. Callbacks written against this type work on both the
|
|
14
|
+
* libsql (Node.js) and bun-sqlite (Bun) drivers because `await syncValue` is
|
|
15
|
+
* a JavaScript no-op.
|
|
16
|
+
* @typeParam T - Callback result type
|
|
17
|
+
*/
|
|
18
|
+
type TransactionCallback<T> = Parameters<LibSQLTransactionExecutor>[0] extends ((tx: infer TTx) => Promise<unknown>) ? (tx: TTx) => Promise<T> : never;
|
|
19
|
+
/**
|
|
20
|
+
* Execute a database transaction through a shared transaction seam.
|
|
21
|
+
*
|
|
22
|
+
* This is currently a pass-through to `db.transaction()`. Keeping transaction
|
|
23
|
+
* calls behind this helper gives us one extension point for future write
|
|
24
|
+
* serialization (mutex/queue/pool) without changing handler call sites.
|
|
25
|
+
*
|
|
26
|
+
* **Driver compatibility:** `MakaioDatabase` is typed as `LibSQLDatabase`
|
|
27
|
+
* (Node.js async dialect), which runs the transaction asynchronously and
|
|
28
|
+
* returns `Promise<T>`. At runtime under Bun, `db` is a `BunSQLiteDatabase`
|
|
29
|
+
* cast to `MakaioDatabase`; the sync dialect propagates the async callback's
|
|
30
|
+
* return value, so the transaction still resolves as `Promise<T>`, which
|
|
31
|
+
* `await` unwraps normally.
|
|
32
|
+
* @param db - Makaio database instance
|
|
33
|
+
* @param callback - Transaction work to execute
|
|
34
|
+
* @returns Result returned by the callback
|
|
35
|
+
*/
|
|
36
|
+
declare function executeTransaction<T>(db: MakaioDatabase, callback: TransactionCallback<T>): Promise<T>;
|
|
37
|
+
//#endregion
|
|
38
|
+
//#region packages/storage/drizzle/src/fts.d.ts
|
|
39
|
+
/**
|
|
40
|
+
* FTS5 query utilities for SQLite full-text search.
|
|
41
|
+
*/
|
|
42
|
+
/**
|
|
43
|
+
* Sanitizes a user query for safe use in FTS5 MATCH expressions.
|
|
44
|
+
*
|
|
45
|
+
* Each whitespace-delimited token is individually quoted to prevent FTS5
|
|
46
|
+
* syntax injection (via operators like `OR`, `AND`, `NOT`, `*`, `^`) while
|
|
47
|
+
* preserving multi-term implicit AND matching. Internal double-quote
|
|
48
|
+
* characters are escaped as two consecutive double quotes per the FTS5
|
|
49
|
+
* phrase-quoting convention.
|
|
50
|
+
* @example
|
|
51
|
+
* sanitizeFtsQuery('typescript generics') // → '"typescript" "generics"'
|
|
52
|
+
* sanitizeFtsQuery('a "broken quote') // → '"a" """broken" "quote"'
|
|
53
|
+
* sanitizeFtsQuery('') // → '""'
|
|
54
|
+
* @param query - Raw user input
|
|
55
|
+
* @returns Sanitized FTS5 query string with each token individually quoted
|
|
56
|
+
*/
|
|
57
|
+
declare function sanitizeFtsQuery(query: string): string;
|
|
58
|
+
//#endregion
|
|
59
|
+
//#region packages/storage/drizzle/src/register-handlers.d.ts
|
|
60
|
+
/**
|
|
61
|
+
* Typed storage handler registration callback with `db` narrowed to
|
|
62
|
+
* {@link MakaioDatabase}.
|
|
63
|
+
*
|
|
64
|
+
* Use this as the argument type for your handler registration function when
|
|
65
|
+
* wrapping it with {@link registerDrizzleHandlers}.
|
|
66
|
+
* @typeParam TSchema - Drizzle table schema record. Defaults to an empty schema.
|
|
67
|
+
*/
|
|
68
|
+
type DrizzleHandlerRegistration<TSchema extends Record<string, unknown> = Record<string, never>> = (bus: IMakaioBus, db: MakaioDatabase<TSchema>, ctx: ExtensionContext) => (() => void) | void;
|
|
69
|
+
/**
|
|
70
|
+
* Wraps a typed Drizzle handler registration into the
|
|
71
|
+
* `(bus, db: unknown, ctx) => ...` shape required by
|
|
72
|
+
* {@link MakaioExtension.storage.registerHandlers}.
|
|
73
|
+
*
|
|
74
|
+
* The single `db as MakaioDatabase` cast lives here — at the Drizzle
|
|
75
|
+
* boundary — so package authors receive a fully-typed `db` without
|
|
76
|
+
* repeating the unsafe cast at every registration site.
|
|
77
|
+
* @param registration - Typed handler registration callback.
|
|
78
|
+
* @returns Opaque callback compatible with the contracts-layer signature.
|
|
79
|
+
*/
|
|
80
|
+
declare function registerDrizzleHandlers<TSchema extends Record<string, unknown> = Record<string, never>>(registration: DrizzleHandlerRegistration<TSchema>): (bus: IMakaioBus, db: unknown, ctx: ExtensionContext) => (() => void) | void;
|
|
81
|
+
//#endregion
|
|
82
|
+
//#region packages/storage/drizzle/src/index.d.ts
|
|
83
|
+
/**
|
|
84
|
+
* Drizzle schema record type.
|
|
85
|
+
* Maps table names to Drizzle table definitions.
|
|
86
|
+
*/
|
|
87
|
+
type DrizzleSchemaRecord = Record<string, Table>;
|
|
88
|
+
declare module '@makaio/framework/storage' {
|
|
89
|
+
interface StorageNamespaceExtensions {
|
|
90
|
+
/**
|
|
91
|
+
* Drizzle ORM table schemas for this storage domain.
|
|
92
|
+
* Contains table definitions that can be used by Drizzle-based storage services.
|
|
93
|
+
*/
|
|
94
|
+
drizzle?: DrizzleSchemaRecord;
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
//#endregion
|
|
98
|
+
export { type DrizzleHandlerRegistration, DrizzleSchemaRecord, type MakaioDatabase, type StorageNamespace, type StorageNamespaceConfig, type StorageNamespaceExtensions, type TransactionCallback, createStorageNamespace, executeTransaction, registerDrizzleHandlers, sanitizeFtsQuery };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{createStorageNamespace as e}from"@makaio/framework/storage";async function t(e,t){return e.transaction(t)}function n(e){let t=e.trim().split(/\s+/).filter(Boolean);return t.length===0?`""`:t.map(e=>`"${e.replace(/"/g,`""`)}"`).join(` `)}function r(e){return(t,n,r)=>e(t,n,r)}export{e as createStorageNamespace,t as executeTransaction,r as registerDrizzleHandlers,n as sanitizeFtsQuery};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import { a as DrizzleCrudConfig, i as CrudLifecycleConfig, n as createDrizzleListHandler, o as DrizzleListConfig, r as createDrizzleCrudHandlers, t as buildScopePredicates } from "../../../index-N5K1NOYs.mjs";
|
|
2
|
+
export { CrudLifecycleConfig, DrizzleCrudConfig, DrizzleListConfig, buildScopePredicates, createDrizzleCrudHandlers, createDrizzleListHandler };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{n as e,r as t,t as n}from"../../../drizzle-CWVVw7Er.mjs";export{n as buildScopePredicates,t as createDrizzleCrudHandlers,e as createDrizzleListHandler};
|