@makaio/framework 1.0.0-dev-1781022866275 → 1.0.0-dev-1781023871421
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/.makaio-build.json +5 -0
- package/dist/account-identity-DT5NOtFi.mjs +1 -0
- package/dist/adapter-C1eI-fGV.mjs +1 -0
- package/dist/adapters/acp-client/index.d.mts +6208 -0
- package/dist/adapters/acp-client/index.mjs +3 -0
- package/dist/adapters/config/index.d.mts +429 -0
- package/dist/adapters/config/index.mjs +1 -0
- package/dist/adapters/index.d.mts +4202 -0
- package/dist/adapters/index.mjs +18 -0
- package/dist/adapters/node.d.mts +263 -0
- package/dist/adapters/node.mjs +4 -0
- package/dist/adapters/stream-session/index.d.mts +1414 -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/artifact-B3npq1cy.mjs +1 -0
- package/dist/base-orchestrator-wyumsn3b.d.mts +772 -0
- package/dist/bus/index.d.mts +3994 -0
- package/dist/bus/index.mjs +1 -0
- package/dist/bus-Caz3Jpbc.mjs +1 -0
- package/dist/bus-Hb-LGzgb.mjs +2 -0
- package/dist/capability-service-CJbmhfv9.mjs +1 -0
- package/dist/chunk-DTipWd-i.mjs +1 -0
- package/dist/chunk-cpUYaJdV.mjs +1 -0
- package/dist/cleanEnvForAdapter-KkYzQa1f.mjs +1 -0
- package/dist/client-bx74gm4R.mjs +1 -0
- package/dist/clients/index.d.mts +2639 -0
- package/dist/clients/index.mjs +2 -0
- package/dist/clients-namespace-GmSJpBUV.d.mts +332 -0
- package/dist/config-namespace-CPY9YsR8.d.mts +638 -0
- package/dist/config-namespace-ncYg2ct_.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/artifact/index.d.mts +2 -0
- package/dist/contracts/artifact/index.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 +4 -0
- package/dist/contracts/extension/index.mjs +1 -0
- package/dist/contracts/facet/index.d.mts +2 -0
- package/dist/contracts/facet/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 +23046 -0
- package/dist/contracts/index.mjs +1 -0
- package/dist/contracts/materialization/index.d.mts +4 -0
- package/dist/contracts/materialization/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/telemetry/index.d.mts +2 -0
- package/dist/contracts/telemetry/index.mjs +1 -0
- package/dist/contracts/timeout/index.d.mts +2 -0
- package/dist/contracts/timeout/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 +1263 -0
- package/dist/core/index.mjs +1 -0
- package/dist/credential-ref-YWQQENEo.mjs +1 -0
- package/dist/cursor-storage-CtVJ3JzB.mjs +1 -0
- package/dist/definition-BLCdXGzh.d.mts +383 -0
- package/dist/definition-CrgHIpTK.d.mts +60 -0
- package/dist/definition-DZMXOnjX.mjs +1 -0
- package/dist/definition-pkJ6szUl.d.mts +158 -0
- package/dist/drizzle-Eq8W1EbD.mjs +1 -0
- package/dist/event-Ca2yUf5i.mjs +1 -0
- package/dist/execution-target-CRPTfZlc.mjs +1 -0
- package/dist/extension-C-4BHMRI.mjs +1 -0
- package/dist/extension-CpIUgBKI.mjs +1 -0
- package/dist/extension-namespace-cMh_mMiL.mjs +1 -0
- package/dist/facet-BuwhrThl.mjs +1 -0
- package/dist/filesystem-service-B8rhBRgB.mjs +1 -0
- package/dist/filesystem-service-p_iJVHd4.d.mts +66 -0
- package/dist/git/index.d.mts +210 -0
- package/dist/git/index.mjs +18 -0
- package/dist/globby-rtWVaFHv.mjs +41 -0
- package/dist/handlers-CkTsQLra.mjs +41 -0
- package/dist/harness-BRCMcvQN.mjs +1 -0
- package/dist/hooks/index.d.mts +423 -0
- package/dist/hooks/index.mjs +1 -0
- package/dist/host-Br9VuOyr.mjs +1 -0
- package/dist/identity-Cz2IeEtm.mjs +1 -0
- package/dist/index-472sOmsW.d.mts +218 -0
- package/dist/index-8SZkg7s6.d.mts +353 -0
- package/dist/index-B3PK4FIn.d.mts +5116 -0
- package/dist/index-B80L4YqA.d.mts +180 -0
- package/dist/index-BFg9BUpx.d.mts +355 -0
- package/dist/index-BGfWS6GE.d.mts +483 -0
- package/dist/index-BVgfS-AJ.d.mts +109 -0
- package/dist/index-B_zQC98V.d.mts +995 -0
- package/dist/index-Bh_Ne7LF.d.mts +1008 -0
- package/dist/index-Bvb2mMH6.d.mts +1730 -0
- package/dist/index-CCGVh9BF2.d.mts +749 -0
- package/dist/index-CGmcS0Ma.d.mts +412 -0
- package/dist/index-CHQ1SqT0.d.mts +117 -0
- package/dist/index-CLpjm52M.d.mts +183 -0
- package/dist/index-Caig6TeF.d.mts +6746 -0
- package/dist/index-CelJCBjk.d.mts +2992 -0
- package/dist/index-ChunCFu4.d.mts +11 -0
- package/dist/index-Cm0dUkWL.d.mts +4651 -0
- package/dist/index-CokQYGVP.d.mts +184 -0
- package/dist/index-Cs0kZXIz2.d.mts +37 -0
- package/dist/index-D5d5HeWI2.d.mts +259 -0
- package/dist/index-D90OmGmV.d.mts +389 -0
- package/dist/index-D9MwJ2Q8.d.mts +67 -0
- package/dist/index-DANINzMu.d.mts +40 -0
- package/dist/index-DBw-89vC2.d.mts +3640 -0
- package/dist/index-DGBu6bHi2.d.mts +438 -0
- package/dist/index-DKC62dY5.d.mts +146 -0
- package/dist/index-DKia0MX1.d.mts +43 -0
- package/dist/index-DMKnON5s.d.mts +28 -0
- package/dist/index-DUaw0Dw8.d.mts +14747 -0
- package/dist/index-De3kPhlN.d.mts +72 -0
- package/dist/index-L4GjJDKb.d.mts +822 -0
- package/dist/index-U-A8eyGT.d.mts +1490 -0
- package/dist/index-eemAKwsB.d.mts +362 -0
- package/dist/index-mNec7V-9.d.mts +1075 -0
- package/dist/index-soFznFCy2.d.mts +89 -0
- package/dist/index-vtXJuwrz.d.mts +40 -0
- package/dist/index-x_lVDp_J.d.mts +134 -0
- package/dist/json-value-CmhSGMLv.mjs +1 -0
- package/dist/kernel/cli/index.d.mts +143 -0
- package/dist/kernel/cli/index.mjs +1 -0
- package/dist/kernel/cli/schemas.d.mts +64 -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/materialization-CuUBu4XI.mjs +1 -0
- package/dist/model-registry-CfXytvzx.mjs +1 -0
- package/dist/model-registry-Scn_MC2d.mjs +1 -0
- package/dist/namespace-5QQqbF-B.d.mts +3133 -0
- package/dist/namespace-BM7Djng9.d.mts +189 -0
- package/dist/namespace-BoD94mrN.mjs +1 -0
- package/dist/namespace-BwzZJqTV.mjs +1 -0
- package/dist/namespace-CFLAmQfh.mjs +1 -0
- package/dist/namespace-CTm3nEvh.d.mts +51 -0
- package/dist/namespace-CaaNnKcR.d.mts +921 -0
- package/dist/namespace-CaoZ3S78.d.mts +43 -0
- package/dist/namespace-CxhsoFUP.d.mts +607 -0
- package/dist/namespace-DD8Oiqo7.d.mts +580 -0
- package/dist/namespace-DLovh2Ws.d.mts +1313 -0
- package/dist/namespace-DgqkaOVu.d.mts +768 -0
- package/dist/namespace-DkRgbZYn.mjs +1 -0
- package/dist/namespace-Dr8K0MCp.d.mts +2047 -0
- package/dist/namespace-DuXK5AYN.mjs +1 -0
- package/dist/namespace-EQniz-Aw.d.mts +142 -0
- package/dist/namespace-IV1QK__V.d.mts +159 -0
- package/dist/namespace-LViZ-EQk.mjs +1 -0
- package/dist/namespace-TyiTsLFv.d.mts +3020 -0
- package/dist/namespace-Yna5-Pws.mjs +1 -0
- package/dist/namespace-xcmbQlxh.mjs +1 -0
- package/dist/native-session-supervisor-B1TnaPUF.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 +1945 -0
- package/dist/node/transports/index.mjs +2 -0
- package/dist/orchestrator-shared-CIDiFJMD.mjs +1 -0
- package/dist/orchestrator-shared-Dfa7FMyw.d.mts +249 -0
- package/dist/package-DKVlsMP3.mjs +1 -0
- package/dist/platform-DZ7z-wXD.mjs +1 -0
- package/dist/profile-6ynCD5k3.mjs +1 -0
- package/dist/provider-context-CK6B4X_8.mjs +1 -0
- package/dist/providers/index.d.mts +135 -0
- package/dist/providers/index.mjs +1 -0
- package/dist/providers-namespace-DSEpli4A.d.mts +583 -0
- package/dist/providers-u8i15co9.mjs +1 -0
- package/dist/schema-CoyE6mPt.mjs +1 -0
- package/dist/schema-M5YTvSAG.d.mts +949 -0
- package/dist/schema-e0wU_lcV.mjs +1 -0
- package/dist/schema-introspection-Dn1jWQs1.mjs +1 -0
- package/dist/schemas-Bd0OjRQf.d.mts +46 -0
- package/dist/schemas-C46QfKzv.d.mts +459 -0
- package/dist/schemas-CDBSjg7o.d.mts +237 -0
- package/dist/schemas-CR1Rripy.mjs +1 -0
- package/dist/schemas-CVvwIfG4.mjs +1 -0
- package/dist/schemas-CaLhkkLn.mjs +1 -0
- package/dist/schemas-ClOOT1W6.d.mts +174 -0
- package/dist/schemas-DATniTHb.d.mts +182 -0
- package/dist/schemas-DE-GNmSD.mjs +1 -0
- package/dist/schemas-DVF1A4DF.d.mts +160 -0
- package/dist/schemas-DaRSfYLf.d.mts +73 -0
- package/dist/schemas-DiYVzG6e.d.mts +315 -0
- package/dist/schemas-hSrzflwZ.mjs +1 -0
- package/dist/schemas-j7ivZ2HI.d.mts +944 -0
- package/dist/schemas-jFe1AuI-.mjs +1 -0
- package/dist/schemas-wg_6PAdV.d.mts +153 -0
- package/dist/scoped-bus-04pwo1uM.mjs +1 -0
- package/dist/server-lifecycle-FXTPW39-.mjs +1 -0
- package/dist/server-lifecycle-YoSGFGnU.d.mts +160 -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/index.d.mts +3 -0
- package/dist/services/filesystem/index.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/git/namespace.d.mts +1163 -0
- package/dist/services/git/namespace.mjs +1 -0
- package/dist/services/git/schemas.d.mts +932 -0
- package/dist/services/git/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 +6185 -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 +274 -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 +65 -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 +663 -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/subagent/index.d.mts +2 -0
- package/dist/services/subagent/index.mjs +1 -0
- package/dist/services/subagent-template/index.d.mts +3 -0
- package/dist/services/subagent-template/index.mjs +1 -0
- package/dist/services/subagent-template/namespace.d.mts +2 -0
- package/dist/services/subagent-template/namespace.mjs +1 -0
- package/dist/services/subagent-template/schemas.d.mts +2 -0
- package/dist/services/subagent-template/schemas.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/session-BoldSdNZ2.mjs +134 -0
- package/dist/session-DuVOYctZ.mjs +1 -0
- package/dist/session-lineage-CRsc9g1x.d.mts +65 -0
- package/dist/shared-DpOEfD8F.mjs +1 -0
- package/dist/shared-schemas-CPShiLNp.mjs +1 -0
- package/dist/skill-CQO4mDqK.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 +137 -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-BXkoh5Sy.d.mts +221 -0
- package/dist/storage-namespace-DWsYLAXa.mjs +1 -0
- package/dist/storage-namespace-definition-Bkx5rSto.d.mts +17 -0
- package/dist/storage-namespace-definition-CqSdsuCC.mjs +1 -0
- package/dist/style.css +3782 -0
- package/dist/telemetry-CvdLBWuk.mjs +1 -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/timeout-XsYIOKrc.mjs +1 -0
- package/dist/tool-approval-service-BvZWhYZp.mjs +1 -0
- package/dist/tools/index.d.mts +835 -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-D-luYcDw.mjs +1431 -0
- package/dist/tray-menu-service-DuXq5k22.mjs +1 -0
- package/dist/types-BCMUtBj1.d.mts +1106 -0
- package/dist/types-C2Ob9zz_.d.mts +128 -0
- package/dist/types-CCdqjeuH.d.mts +262 -0
- package/dist/types-DZHvOc_Q.d.mts +305 -0
- package/dist/types-Dy3YTcTF.d.mts +6777 -0
- package/dist/types-MfJZ67e9.d.mts +315 -0
- package/dist/types-dyP-bXXE.d.mts +31 -0
- package/dist/ui-components/index.d.mts +2342 -0
- package/dist/ui-components/index.mjs +8 -0
- package/dist/ui-config-9bDRwFZr.mjs +1 -0
- package/dist/ui-hooks/index.d.mts +1915 -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 +262 -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/project-manifest.d.mts +130 -0
- package/dist/utils/project-manifest.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/scope-paths.d.mts +33 -0
- package/dist/utils/scope-paths.mjs +1 -0
- package/dist/utils/workspace-packages.d.mts +59 -0
- package/dist/utils/workspace-packages.mjs +1 -0
- package/dist/utils/workspace-root.d.mts +24 -0
- package/dist/utils/workspace-root.mjs +2 -0
- package/dist/variant-CT6XBP6T.mjs +1 -0
- package/dist/version-BeT3ASEe.mjs +1 -0
- package/dist/visibility-Cb62p9bv.mjs +1 -0
- package/dist/window-registry-CBcrGTv4.d.mts +130 -0
- package/dist/window-registry-DW-dKRjQ.mjs +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
import{agents as e,sessions as t}from"./services/session/storage/schema.mjs";import{t as n}from"./schema-e0wU_lcV.mjs";import{n as r,r as i}from"./namespace-DuXK5AYN.mjs";import{SessionStorageNamespace as a,SessionStorageSubjects as o}from"./services/session/storage/namespace.mjs";import{A as s,D as c,E as l,F as u,O as d,P as f,T as p,b as m,d as h,f as g,j as _,k as v,u as ee,v as te}from"./handlers-CkTsQLra.mjs";import{TurnStorageSubjects as y}from"./services/turn/namespace.mjs";import{AdapterRuntimeSubjects as b}from"./services/adapter-runtime/namespace.mjs";import{MessageStorageSubjects as x}from"./services/session/messages/namespace.mjs";import{n as S}from"./namespace-LViZ-EQk.mjs";import{z as C}from"zod";import{MakaioBus as w,NoHandlerError as ne}from"@makaio/framework/bus";import{AdapterSubjects as T,AgentSubjects as E,CanonicalModelSubjects as re,CompressionModeSchema as ie,ForkTransformsSchema as ae,MessageRoutingSchema as oe,SessionContextSchema as se,SessionDiscoveredSchema as ce,SessionStorageSetRequestSchema as le,SessionStorageUpdateSchema as ue,SessionSubjects as D,compareMessageCursorAsc as de,compareMessageCursorDesc as fe,isCanonicalModelParseError as pe,messageToCursor as O,parseCanonicalModel as me}from"@makaio/framework/contracts";import{BaseService as he}from"@makaio/framework/service-base";import{index as ge,integer as _e,primaryKey as ve,sqliteTable as ye,text as k}from"drizzle-orm/sqlite-core";import{and as A,asc as j,count as M,desc as N,eq as P,gt as be,gte as xe,inArray as F,isNull as I,lt as Se,lte as Ce,or as we,sql as L}from"drizzle-orm";import{createStorageNamespaceDefinition as Te}from"@makaio/framework/storage";import{didAffectRows as R,sanitizeFtsQuery as Ee}from"@makaio/framework/storage/drizzle";import{ClientIdentityObservationSchema as De}from"@makaio/framework/contracts/client";import{ImportCursorStorageSubjects as Oe}from"@makaio/framework/adapters";function ke(e){return e.on(D.agent.added,async t=>{let n=await e.requestOptional(o.get,{sessionId:t.payload.sessionId}),r=n.handled?n.data.session:void 0;r&&(r.adapterSessionId||(r.adapterSessionId=t.payload.adapterSessionId,r.adapterName=t.payload.adapterName,r.adapterId=t.payload.adapterId),(t.payload.role??(r.leadAgentId?`member`:`lead`))===`lead`&&(r.leadAgentId=t.payload.agentId),r.lastActivityAt=Date.now(),await e.request(o.set,{sessionId:t.payload.sessionId,session:r}))})}function Ae(e){return e.on(D.agent.removed,async t=>{let n=await e.requestOptional(o.get,{sessionId:t.payload.sessionId}),r=n.handled?n.data.session:void 0;r&&(await e.requestOptional(u.updateStatus,{agentId:t.payload.agentId,status:`disposed`}),r.leadAgentId===t.payload.agentId&&(r.leadAgentId=void 0),r.lastActivityAt=Date.now(),await e.request(o.set,{sessionId:t.payload.sessionId,session:r}))})}function je(e){return[Me(e),Ne(e),Pe(e),Fe(e),Ie(e),Le(e),Re(e),ke(e.bus),Ae(e.bus)]}function Me(e){let{bus:t}=e;return t.on(D.create,async e=>{let{sessionId:n,parentSessionId:r,contextInheritance:i,forkPointMessageId:a,branchKind:s,forkTransforms:c,title:l,targetWorkingDirectory:u,executionTargetId:d,spawningToolCallId:f,originWindowId:p}=e.payload,m=n??crypto.randomUUID(),h=Date.now(),g={sessionId:m,createdAt:h,lastActivityAt:h,agents:[],status:`active`,title:l,parentSessionId:r,contextInheritance:i,forkPointMessageId:a,branchKind:s,forkTransforms:c,targetWorkingDirectory:u,executionTargetId:d,spawningToolCallId:f},_=await t.requestOptional(o.set,{sessionId:m,session:g,ifAbsent:!0});if(_.handled&&!_.data.success){e.setResult({sessionId:m});return}await t.emit(D.created,{sessionId:m,createdAt:g.createdAt,parentSessionId:r??null,branchKind:s??null,originWindowId:p??`server`}),e.setResult({sessionId:m})})}function Ne(e){let{bus:t}=e;return t.on(D.get,async e=>{let n=await t.requestOptional(o.get,{sessionId:e.payload.sessionId}),r=n.handled?n.data.session:null;e.setResult({session:r})})}function Pe(e){let{bus:t}=e;return t.on(D.list,async e=>{let{status:n,limit:r,offset:i,includePreview:a,executionTargetId:s}=e.payload,c=await t.requestOptional(o.list,{status:n??`all`,limit:r,offset:i,includePreview:a,executionTargetId:s}),l=c.handled?c.data.sessions:[],u=c.handled?c.data.total:0;e.setResult({sessions:l,total:u})})}function Fe(e){let{bus:t}=e;return t.on(D.close,async e=>{let{sessionId:n}=e.payload,r=await t.requestOptional(o.get,{sessionId:n}),i=r.handled?r.data.session:null;if(!i){e.setResult({success:!1});return}if(i.status===`closed`){e.setResult({success:!0});return}if(i.status!==`active`){e.setResult({success:!1});return}i.status=`closed`,i.lastActivityAt=Date.now(),await t.requestOptional(o.set,{sessionId:n,session:i}),await t.emit(D.closed,{sessionId:n}),e.setResult({success:!0})})}function Ie(e){let{bus:t}=e;return t.on(D.update,async e=>{let{sessionId:n,executionTargetId:r,approvalPolicyOverride:i,title:a}=e.payload,s=await t.requestOptional(o.update,{sessionId:n,executionTargetId:r,approvalPolicyOverride:i,title:a}),c=s.handled?s.data.success:!1;if(c){let e=[];r!==void 0&&e.push(`executionTargetId`),i!==void 0&&e.push(`approvalPolicyOverride`),a!==void 0&&e.push(`title`),e.length>0&&await t.emit(D.updated,{sessionId:n,changedProperties:e})}e.setResult({success:c})})}function Le(e){let{bus:t}=e;return t.on(D.archive,async e=>{let{sessionId:n}=e.payload,r=await t.requestOptional(o.get,{sessionId:n}),i=r.handled?r.data.session:null;if(!i){e.setResult({success:!1});return}if(i.status===`archived`){e.setResult({success:!0});return}if(i.status!==`closed`){e.setResult({success:!1});return}i.status=`archived`,i.lastActivityAt=Date.now(),await t.requestOptional(o.set,{sessionId:n,session:i}),await t.emit(D.archived,{sessionId:n}),e.setResult({success:!0})})}function Re(e){let{bus:t}=e;return t.on(D.purge,async e=>{let{sessionId:n}=e.payload,i=await t.requestOptional(o.get,{sessionId:n}),a=i.handled?i.data.session:null;if(!a){e.setResult({success:!1,error:`Session not found`});return}if(a.status!==`archived`){e.setResult({success:!1,error:`Cannot purge session unless archived. Call close then archive first.`});return}let s=await t.requestOptional(o.list,{status:`all`}),c=s.handled?s.data.sessions:[];for(let e of c)e.parentSessionId===n&&await t.requestOptional(o.set,{sessionId:e.sessionId,session:{...e,parentSessionId:void 0}});let l=await t.requestOptional(r.getEvents,{sessionId:n,options:{limit:1}}),u=l.handled?l.data.totalCount:0;await t.requestOptional(r.deleteBySession,{sessionId:n}),await t.requestOptional(o.delete,{sessionId:n}),await t.emit(D.purged,{sessionId:n}),e.setResult({success:!0,eventsDeleted:u})})}var ze=class extends he{constructor(e=w){super(e)}async onInit(){for(let e of je({bus:this.bus}))this.addCleanup(e);await this.reconcileOrphanedTurns()}async reconcileOrphanedTurns(){let e=await this.bus.requestOptional(y.listActive,{});if(!e.handled)return;let{turns:t}=e.data;for(let e of t)try{let{transitioned:t}=await this.bus.request(y.complete,{turnId:e.turnId,status:`error`,expectedStatus:`active`,error:`process-restart`});t&&await this.bus.emit(D.turn.completed,{sessionId:e.sessionId,turnId:e.turnId,turnNumber:e.turnNumber,success:!1,error:`process-restart`})}catch(t){console.error(`[MakaioSessionService] Failed to reconcile orphaned turn ${e.turnId}:`,t)}}};function Be(e){return Error(`No adapter found for adapterName="${e}". Ensure adapter-runtime identity handlers are registered; adapter startup verifies live availability.`)}var Ve=class{bus;registry=new Map;cleanup;constructor(e){this.bus=e,this.cleanup=this.bus.on(T.initialized,e=>{this.registry.set(e.payload.adapterName,e.payload.adapterId)})}resolve(e){let t=this.registry.get(e);if(!t)throw Be(e);return t}async resolveAvailable(e){try{let{adapterId:t}=await this.bus.request(b.resolveId,{adapterName:e});return this.registry.set(e,t),t}catch{let t=this.registry.get(e);if(t)return t;throw Be(e)}}destroy(){this.cleanup?.(),this.cleanup=void 0,this.registry.clear()}};function He(e,t,n,i){return e.on(r.append,e=>{let{event:r}=e.payload,a=t.get(r.sessionId)??[];if(n.has(r.eventId)){e.setResult({success:!0});return}a.push(r),t.set(r.sessionId,a),n.set(r.eventId,i()),e.setResult({success:!0})})}function Ue(e,t,n){return e.on(r.getEvents,e=>{let{sessionId:r,options:i}=e.payload,a=t.get(r)??[],o=i?.order??`asc`,s=o===`desc`?[...a].reverse():a,c=0;if(i?.after&&/^\d+$/.test(i.after)){let t=Number(i.after),r=s.findIndex(e=>{let r=n.get(e.eventId)??-1;return o===`desc`?r<t:r>t});if(r===-1){e.setResult({events:[],nextCursor:null,totalCount:a.length});return}c=r}let l=s.slice(c);if(i?.types&&i.types.length>0){let e=new Set(i.types);l=l.filter(t=>e.has(t.type))}let u=i?.limit??100,d=l.length>u,f=l.slice(0,u),p=null;if(d&&f.length>0){let e=f[f.length-1],t=n.get(e.eventId);t!==void 0&&(p=t.toString())}e.setResult({events:f,nextCursor:p,totalCount:a.length})})}function We(e,t){return e.on(r.getByIds,e=>{let{sessionId:n,eventIds:r}=e.payload,i=t.get(n)??[],a=new Set(r),o=i.filter(e=>a.has(e.eventId));e.setResult({events:o})})}function Ge(e,t,n){return e.on(r.deleteBySession,e=>{let{sessionId:r}=e.payload,i=t.get(r);if(i)for(let e of i)n.delete(e.eventId);let a=i?.length??0;t.delete(r),e.setResult({success:!0,deletedCount:a})})}function Ke(e,t){return e.on(r.getEventsBySessions,e=>{let{sessionIds:n,types:r,limitPerSession:i=50}=e.payload;if(n.length===0||r.length===0){e.setResult({eventsBySession:{}});return}let a=new Set(r),o={};for(let e of n){let n=(t.get(e)??[]).filter(e=>a.has(e.type)).reverse().slice(0,i);n.length>0&&(o[e]=n)}e.setResult({eventsBySession:o})})}function qe(e){let t=new Map,n=new Map,r=1,i=[He(e,t,n,()=>r++),Ue(e,t,n),We(e,t),Ge(e,t,n),Ke(e,t)];return()=>i.forEach(e=>e())}const Je=[`sessionId`,`agentId`,`adapterId`,`messageId`,`turnId`];function Ye(e){let t=e.payload,n={};for(let[e,r]of Object.entries(t))Je.includes(e)||(n[e]=r);return n}function Xe(e){let t=JSON.parse(e.payload),n=e.type===`message`?e.messageId:e.originatingMessageId,r={...t,sessionId:e.sessionId,...e.agentId&&{agentId:e.agentId},...e.adapterId&&{adapterId:e.adapterId},...n&&{messageId:n},...e.type===`message`?{turnId:e.turnId??null}:e.turnId&&{turnId:e.turnId}};return{sessionId:e.sessionId,eventId:e.eventId,timestamp:e.timestamp,type:e.type,payload:r}}function Ze(e){switch(e.type){case`user_message.sent`:{let t=e.payload.content;return typeof t==`string`?t:(Array.isArray(t.blocks)?t.blocks:[t.blocks]).filter(e=>e.type===`text`).map(e=>e.content).join(`
|
|
2
|
+
`)}case`agent.added`:case`user_message.acknowledged`:case`user_message.completed`:case`turn.started`:case`turn.completed`:case`message`:case`branch.created`:case`branch.merged`:case`squash`:return null;default:return Qe(e.payload)}}function Qe(e){let t=e.contentText;if(typeof t==`string`&&t.length>0)return t;let n=e.summary;return typeof n==`string`&&n.length>0?n:null}function $e({bus:e,db:t}){return e.on(r.append,async e=>{let{event:n}=e.payload,r=`payload`in n&&`agentId`in n.payload?n.payload.agentId:null,a=`payload`in n&&`adapterId`in n.payload?n.payload.adapterId:null,o=`payload`in n&&`turnId`in n.payload?n.payload.turnId:null,s=`payload`in n&&`messageId`in n.payload?n.payload.messageId:null,c=n.type===`message`?s:null,l=n.type===`message`?null:s,u={sessionId:n.sessionId,eventId:n.eventId,timestamp:n.timestamp,type:n.type,agentId:r,adapterId:a,messageId:c,originatingMessageId:l,turnId:o,contentText:Ze(n),payload:JSON.stringify(Ye(n))};await t.insert(i).values(u).onConflictDoNothing(),e.setResult({success:!0})})}function et({bus:e,db:t}){return e.on(r.getEvents,async e=>{let{sessionId:n,options:r}=e.payload,a=[P(i.sessionId,n)],o=r?.order??`asc`;if(r?.after){let e=parseInt(r.after,10);!isNaN(e)&&e>0&&(o===`desc`?a.push(Se(i.id,e)):a.push(be(i.id,e)))}r?.types&&r.types.length>0&&a.push(F(i.type,r.types));let s=r?.limit??100,c=o===`desc`?N:j,l=await t.select().from(i).where(A(...a)).orderBy(c(i.id)).limit(s+1),u=l.length>s,d=u?l.slice(0,s):l,f=d.map(Xe),p=u&&d.length>0?d[d.length-1].id.toString():null;e.setResult({events:f,nextCursor:p})})}function tt({bus:e,db:t}){return e.on(r.getByIds,async e=>{let{sessionId:n,eventIds:r}=e.payload,a=(await t.select().from(i).where(A(P(i.sessionId,n),F(i.eventId,r))).orderBy(j(i.timestamp))).map(Xe);e.setResult({events:a})})}function nt({bus:e,db:t}){return e.on(r.deleteBySession,async e=>{let{sessionId:n}=e.payload,r=(await t.select().from(i).where(P(i.sessionId,n))).length;await t.delete(i).where(P(i.sessionId,n)),e.setResult({success:!0,deletedCount:r})})}function rt({bus:e,db:t}){return e.on(r.getEventsBySessions,async e=>{let{sessionIds:n,types:r,limitPerSession:a=50}=e.payload;if(n.length===0||r.length===0){e.setResult({eventsBySession:{}});return}let o={};for(let e of n){let n=await t.select().from(i).where(A(P(i.sessionId,e),F(i.type,r))).orderBy(N(i.timestamp)).limit(a);n.length>0&&(o[e]=n.map(Xe))}e.setResult({eventsBySession:o})})}function it(e,t,n){let r={bus:e,db:t},i=[$e(r),et(r),tt(r),nt(r),rt(r)];return()=>i.forEach(e=>e())}async function at(e,t){e.emit(x.stored,{message:structuredClone(t)});try{await e.request(r.append,{event:{sessionId:t.sessionId,eventId:crypto.randomUUID(),timestamp:t.timestamp,type:`message`,payload:{messageId:t.messageId,turnId:t.turnId,role:t.role}}})}catch(e){console.error(`[MessageStorage] Failed to emit session event for message:`,e)}}function z(e){return{messageId:e.messageId,turnId:e.turnId,sessionId:e.sessionId,role:e.role,contentText:e.contentText,blocks:JSON.parse(e.blocks),agentId:e.agentId??void 0,adapterSessionId:e.adapterSessionId??void 0,adapterMessageId:e.adapterMessageId??void 0,timestamp:e.timestamp,editOf:e.editOf??void 0,origin:e.origin??void 0}}function ot(e){let{bus:t,db:r}=e;return t.on(x.append,async e=>{let{message:i,emitEvent:a}=e.payload,o=i.messageId??crypto.randomUUID(),s={...i,messageId:o,blocks:i.blocks??[]};await r.insert(n).values({messageId:o,turnId:s.turnId,sessionId:s.sessionId,role:s.role,contentText:s.contentText,blocks:JSON.stringify(s.blocks),agentId:s.agentId??null,adapterSessionId:s.adapterSessionId??null,adapterMessageId:s.adapterMessageId??null,timestamp:s.timestamp,editOf:s.editOf??null,origin:s.origin??null}),e.setResult({message:s}),(a??!0)&&await at(t,s)})}function st(e){let{bus:t,db:r}=e;return t.on(x.getBySession,async e=>{let{sessionId:t,limit:i,after:a,includeAfter:o=!1,order:s=`asc`}=e.payload,c=s===`desc`?N:j,l=r.select().from(n).where(P(n.sessionId,t)).orderBy(c(n.timestamp),c(n.messageId));if(a){let e=s===`desc`?we(Se(n.timestamp,a.timestamp),A(P(n.timestamp,a.timestamp),o?Ce(n.messageId,a.messageId):Se(n.messageId,a.messageId))):we(be(n.timestamp,a.timestamp),A(P(n.timestamp,a.timestamp),o?xe(n.messageId,a.messageId):be(n.messageId,a.messageId)));l=r.select().from(n).where(A(P(n.sessionId,t),e)).orderBy(c(n.timestamp),c(n.messageId))}let u=i??100,d=await l.limit(u+1),f=d.length>u,p=f?d.slice(0,u):d,m=f&&p.length>0?O(p[p.length-1]):null;e.setResult({messages:p.map(z),nextCursor:m})})}function ct(e){let{bus:t,db:r}=e;return t.on(x.getByTurn,async e=>{let{turnId:t}=e.payload,i=await r.select().from(n).where(P(n.turnId,t)).orderBy(j(n.timestamp));e.setResult({messages:i.map(z)})})}function lt(e){let{bus:t,db:r}=e;return t.on(x.get,async e=>{let{messageId:t}=e.payload,[i]=await r.select().from(n).where(P(n.messageId,t)).limit(1);e.setResult({message:i?z(i):null})})}function ut(e){let{bus:t,db:n}=e;return t.on(x.search,async e=>{let{query:t,sessionId:r,limit:i}=e.payload,a=i??50;if(!t.trim()){e.setResult({messages:[],total:0});return}let o=Ee(t),s=L`
|
|
3
|
+
m.message_id AS messageId,
|
|
4
|
+
m.turn_id AS turnId,
|
|
5
|
+
m.session_id AS sessionId,
|
|
6
|
+
m.role AS role,
|
|
7
|
+
m.content_text AS contentText,
|
|
8
|
+
m.blocks AS blocks,
|
|
9
|
+
m.agent_id AS agentId,
|
|
10
|
+
m.adapter_session_id AS adapterSessionId,
|
|
11
|
+
m.adapter_message_id AS adapterMessageId,
|
|
12
|
+
m.timestamp AS timestamp,
|
|
13
|
+
m.edit_of AS editOf,
|
|
14
|
+
m.origin AS origin
|
|
15
|
+
`,c=r?L`
|
|
16
|
+
SELECT ${s}
|
|
17
|
+
FROM messages m
|
|
18
|
+
JOIN messages_fts fts ON m.rowid = fts.rowid
|
|
19
|
+
WHERE messages_fts MATCH ${o}
|
|
20
|
+
AND fts.session_id = ${r}
|
|
21
|
+
ORDER BY bm25(messages_fts)
|
|
22
|
+
LIMIT ${a}
|
|
23
|
+
`:L`
|
|
24
|
+
SELECT ${s}
|
|
25
|
+
FROM messages m
|
|
26
|
+
JOIN messages_fts fts ON m.rowid = fts.rowid
|
|
27
|
+
WHERE messages_fts MATCH ${o}
|
|
28
|
+
ORDER BY bm25(messages_fts)
|
|
29
|
+
LIMIT ${a}
|
|
30
|
+
`,l=await n.all(c),u=r?L`
|
|
31
|
+
SELECT COUNT(*) as count FROM messages_fts
|
|
32
|
+
WHERE messages_fts MATCH ${o}
|
|
33
|
+
AND session_id = ${r}
|
|
34
|
+
`:L`
|
|
35
|
+
SELECT COUNT(*) as count FROM messages_fts
|
|
36
|
+
WHERE messages_fts MATCH ${o}
|
|
37
|
+
`,[d]=await n.all(u),f=d?.count??0;e.setResult({messages:l.map(z),total:f})})}async function dt(e,t,n,r){let i=L`
|
|
38
|
+
m.message_id AS message_id,
|
|
39
|
+
fts.session_id AS session_id,
|
|
40
|
+
-bm25(messages_fts) AS score,
|
|
41
|
+
snippet(messages_fts, 1, '<mark>', '</mark>', '...', 40) AS excerpt
|
|
42
|
+
FROM messages_fts fts
|
|
43
|
+
JOIN messages m ON m.rowid = fts.rowid`;return r===void 0?e.all(L`
|
|
44
|
+
SELECT ${i}
|
|
45
|
+
WHERE messages_fts MATCH ${t}
|
|
46
|
+
ORDER BY score DESC
|
|
47
|
+
LIMIT ${n}
|
|
48
|
+
`):e.all(L`
|
|
49
|
+
SELECT ${i}
|
|
50
|
+
WHERE messages_fts MATCH ${t}
|
|
51
|
+
AND fts.session_id = ${r}
|
|
52
|
+
ORDER BY score DESC
|
|
53
|
+
LIMIT ${n}
|
|
54
|
+
`)}async function ft(e,t,n){return(await(n===void 0?e.all(L`
|
|
55
|
+
SELECT COUNT(*) AS total
|
|
56
|
+
FROM messages_fts
|
|
57
|
+
WHERE messages_fts MATCH ${t}
|
|
58
|
+
`):e.all(L`
|
|
59
|
+
SELECT COUNT(*) AS total
|
|
60
|
+
FROM messages_fts
|
|
61
|
+
WHERE messages_fts MATCH ${t}
|
|
62
|
+
AND session_id = ${n}
|
|
63
|
+
`)))[0]?.total??0}function pt(e){let{bus:t,db:n}=e;return t.on(x.ftsSearch,async e=>{let{query:t,sessionId:r,limit:i=20}=e.payload,a=t.trim();if(!a){e.setResult({results:[],total:0});return}let o=Ee(a),[s,c]=await Promise.all([dt(n,o,i,r),ft(n,o,r)]);e.setResult({results:s.map(e=>({messageId:e.message_id,sessionId:e.session_id,score:e.score,excerpt:e.excerpt})),total:c})})}function mt(e){let{bus:t,db:r}=e;return t.on(x.getByAdapterMessageId,async e=>{let{adapterMessageId:t}=e.payload,[i]=await r.select().from(n).where(P(n.adapterMessageId,t)).limit(1);e.setResult({message:i?z(i):null})})}function ht(e){let{bus:t,db:r}=e;return t.on(x.upsertByAdapterMessageId,async e=>{let{adapterMessageId:i,sessionId:a,turnId:o,role:s,contentText:c,blocks:l,agentId:u,adapterSessionId:d,timestamp:f,origin:p}=e.payload,[m]=await r.select({messageId:n.messageId}).from(n).where(P(n.adapterMessageId,i)).limit(1);if(m){e.setResult({messageId:m.messageId,created:!1});return}let h=crypto.randomUUID();await r.insert(n).values({messageId:h,turnId:o,sessionId:a,role:s,contentText:c,blocks:JSON.stringify(l),agentId:u??null,adapterSessionId:d??null,adapterMessageId:i,timestamp:f,editOf:null,origin:p??null}),e.setResult({messageId:h,created:!0}),await at(t,{messageId:h,sessionId:a,turnId:o,role:s,contentText:c,blocks:l,agentId:u??void 0,adapterSessionId:d??void 0,adapterMessageId:i,timestamp:f,editOf:void 0,origin:p??void 0})})}function gt(e,t,n){let r={bus:e,db:t},i=[ot(r),st(r),ct(r),lt(r),ut(r),pt(r),ht(r),mt(r)];return()=>i.forEach(e=>e())}function _t(e,t){return de(O(e),O(t))}function vt(e,t){return fe(O(e),O(t))}function yt(e){let t=new Map,n=new Map,r=new Map,i=new Map,a=bt(t,n,r,i),o=[xt(e,t,a),St(e,t,n),Ct(e,t,r),wt(e,t),Tt(e,t),Et(e,i,a),Dt(e,t,n,r,i)];return()=>o.forEach(e=>e())}function bt(e,t,n,r){return i=>{e.set(i.messageId,i);let a=t.get(i.sessionId)??[];if(a.push(i.messageId),t.set(i.sessionId,a),i.turnId){let e=n.get(i.turnId)??[];e.push(i.messageId),n.set(i.turnId,e)}i.adapterMessageId&&r.set(i.adapterMessageId,i.messageId)}}function xt(e,t,n){return e.on(x.append,async t=>{let{message:r,emitEvent:i}=t.payload,a=r.messageId??crypto.randomUUID(),o={...r,messageId:a,blocks:r.blocks??[]};n(o),t.setResult({message:o}),(i??!0)&&await at(e,o)})}function St(e,t,n){return e.on(x.getBySession,async e=>{let{sessionId:r,limit:i,after:a,includeAfter:o=!1,order:s=`asc`}=e.payload,c=n.get(r)??[],l=s===`desc`?vt:_t,u=c.map(e=>t.get(e)).filter(e=>!!e).sort(l);a&&(u=u.filter(e=>{let t=s===`desc`?fe(O(e),a):de(O(e),a);return o?t>=0:t>0}));let d=i??100,f=u.length>d,p=f?u.slice(0,d):u,m=f&&p.length>0?O(p[p.length-1]):null;e.setResult({messages:p,nextCursor:m})})}function Ct(e,t,n){return e.on(x.getByTurn,async e=>{let{turnId:r}=e.payload,i=(n.get(r)??[]).map(e=>t.get(e)).filter(e=>!!e).sort(_t);e.setResult({messages:i})})}function wt(e,t){return e.on(x.get,async e=>{e.setResult({message:t.get(e.payload.messageId)??null})})}function Tt(e,t){return e.on(x.search,async e=>{let{query:n,sessionId:r,limit:i}=e.payload,a=i??50,o=n.trim().toLowerCase(),s=[...t.values()].filter(e=>r?e.sessionId===r:!0),c=o.length===0?[]:s.filter(e=>e.contentText.toLowerCase().includes(o));c.sort(_t),e.setResult({messages:c.slice(0,a),total:c.length})})}function Et(e,t,n){return e.on(x.upsertByAdapterMessageId,async r=>{let{adapterMessageId:i,sessionId:a,turnId:o,role:s,contentText:c,blocks:l,agentId:u,adapterSessionId:d,timestamp:f,origin:p}=r.payload,m=t.get(i);if(m){r.setResult({messageId:m,created:!1});return}let h=crypto.randomUUID(),g={messageId:h,sessionId:a,turnId:o,role:s,contentText:c,blocks:l,agentId:u??void 0,adapterSessionId:d??void 0,adapterMessageId:i,timestamp:f,editOf:void 0,origin:p??void 0};n(g),r.setResult({messageId:h,created:!0}),await at(e,g)})}function Dt(e,t,n,r,i){return e.on(o.delete,e=>{let{sessionId:a}=e.payload,o=n.get(a)??[];for(let e of o){let n=t.get(e);if(n){if(t.delete(e),n.turnId){let t=(r.get(n.turnId)??[]).filter(t=>t!==e);t.length===0?r.delete(n.turnId):r.set(n.turnId,t)}n.adapterMessageId&&i.delete(n.adapterMessageId)}}n.delete(a)})}const B=ye(`message_routing`,{messageId:k(`message_id`).notNull().references(()=>n.messageId,{onDelete:`cascade`}),agentId:k(`agent_id`).notNull(),status:k(`status`,{enum:[`sent`,`acknowledged`,`completed`]}).notNull(),timestamp:_e(`timestamp`).notNull(),error:k(`error`)},e=>[ve({columns:[e.messageId,e.agentId,e.status]}),ge(`idx_routing_agent`).on(e.agentId,e.timestamp)]),Ot=Te(`messageRouting`,{schemas:{record:{request:oe,response:C.object({success:C.boolean()})},getByMessage:{request:C.object({messageId:C.string()}),response:C.object({routing:C.array(oe)})},getCompleted:{request:C.object({messageId:C.string()}),response:C.object({agentIds:C.array(C.string())})},isComplete:{request:C.object({messageId:C.string(),targetAgentIds:C.array(C.string())}),response:C.object({complete:C.boolean(),pending:C.array(C.string())})}},extensions:{drizzle:{messageRouting:B}}}),V=Ot.subjects;function kt(e){return{messageId:e.messageId,agentId:e.agentId,status:e.status,timestamp:e.timestamp,error:e.error??void 0}}function At(e,t,n){let r=[];return r.push(e.on(V.record,async e=>{let{messageId:n,agentId:r,status:i,timestamp:a,error:o}=e.payload;await t.insert(B).values({messageId:n,agentId:r,status:i,timestamp:a,error:o??null}).onConflictDoUpdate({target:[B.messageId,B.agentId,B.status],set:{timestamp:a,error:o??null}}),e.setResult({success:!0})})),r.push(e.on(V.getByMessage,async e=>{let{messageId:n}=e.payload,r=await t.select().from(B).where(P(B.messageId,n));e.setResult({routing:r.map(kt)})})),r.push(e.on(V.getCompleted,async e=>{let{messageId:n}=e.payload,r=await t.select().from(B).where(A(P(B.messageId,n),P(B.status,`completed`)));e.setResult({agentIds:r.map(e=>e.agentId)})})),r.push(e.on(V.isComplete,async e=>{let{messageId:n,targetAgentIds:r}=e.payload,i=await t.select().from(B).where(A(P(B.messageId,n),P(B.status,`completed`))),a=new Set(i.map(e=>e.agentId)),o=r.filter(e=>!a.has(e));e.setResult({complete:o.length===0,pending:o})})),()=>r.forEach(e=>e())}var jt=class{byAgent=new Map;add(e){let t=this.byAgent.get(e.agentId);t?(t.inputTokens+=e.inputTokens,t.outputTokens+=e.outputTokens):this.byAgent.set(e.agentId,{inputTokens:e.inputTokens,outputTokens:e.outputTokens})}snapshot(){if(this.byAgent.size===0)return;let e=0,t=0,n={};for(let[r,i]of this.byAgent)e+=i.inputTokens,t+=i.outputTokens,n[r]={...i};return{total:{inputTokens:e,outputTokens:t},byAgent:n}}flush(){let e=this.snapshot();return this.byAgent.clear(),e}clear(){this.byAgent.clear()}},Mt=class{bus;activeTurns=new Map;usageAccumulators=new Map;completingSessions=new Set;bufferedUsageDuringCompletion=new Map;syntheticTurnCounters=new Map;cleanups=[];constructor(e){this.bus=e}async createTurn(e,t,n,r){let i=await this.bus.requestOptional(y.create,{sessionId:e,...r!==void 0&&{turnId:r}}),a,o;if(i.handled)a=i.data.turn.turnId,o=i.data.turn.turnNumber;else{a=r??crypto.randomUUID();let t=(this.syntheticTurnCounters.get(e)??0)+1;this.syntheticTurnCounters.set(e,t),o=t}let s=new _({sessionId:e,agentIds:t,turnId:a,turnNumber:o,initiator:n});return this.activeTurns.set(e,s),this.usageAccumulators.set(e,new jt),s}registerCompletionHandlers(e){this.cleanups.push(this.bus.on(E.usage,e=>{let{agentId:t,turnId:n,inputTokens:r,outputTokens:i}=e.payload;if(!n){console.warn(`[SessionTurnManager] Dropping usage event without turnId (agentId=${t}).`);return}let a=this.findActiveTurnByTurnId(n);if(!a){console.warn(`[SessionTurnManager] Dropping usage for inactive turn ${n} (agentId=${t}).`);return}if(!a.hasAgent(t)){console.warn(`[SessionTurnManager] Dropping usage for turn ${n}: agent ${t} is not part of the turn.`);return}if(this.completingSessions.has(a.sessionId)){this.bufferUsageDuringCompletion(a.sessionId,{agentId:t,inputTokens:r,outputTokens:i});return}this.usageAccumulators.get(a.sessionId)?.add({agentId:t,inputTokens:r,outputTokens:i})})),this.cleanups.push(this.bus.on(E.complete,async t=>{let{agentId:n,outcome:r,error:i}=t.payload,a=r!==`error`;await this.handleAgentCompletion(n,a,a?void 0:i,e)}))}async completeTurn(e,t){if(this.completingSessions.has(e.sessionId))return;this.completingSessions.add(e.sessionId);let n=this.usageAccumulators.get(e.sessionId),r=n?.snapshot();try{await this.bus.requestOptional(y.complete,{turnId:e.turnId,status:t.success?`completed`:`error`,error:t.errors.length>0?t.errors.join(`; `):void 0,...r!==void 0&&{usage:r}});let i=this.bufferedUsageDuringCompletion.get(e.sessionId)??[];if(i.length>0){for(let e of i)n?.add(e);this.bufferedUsageDuringCompletion.delete(e.sessionId);let r=n?.snapshot();await this.bus.requestOptional(y.complete,{turnId:e.turnId,status:t.success?`completed`:`error`,error:t.errors.length>0?t.errors.join(`; `):void 0,...r!==void 0&&{usage:r}})}}catch(t){throw this.completingSessions.delete(e.sessionId),console.error(`[SessionTurnManager] Failed to persist completion for turn ${e.turnId}:`,t),t}n?.clear(),this.activeTurns.delete(e.sessionId),this.usageAccumulators.delete(e.sessionId),this.completingSessions.delete(e.sessionId),await this.bus.emit(D.turn.completed,{sessionId:e.sessionId,turnId:e.turnId,turnNumber:e.turnNumber,success:t.success,error:t.errors.length>0?t.errors.join(`; `):void 0,initiator:e.initiator})}getActiveTurn(e){return this.activeTurns.get(e)}getActiveTurnsMap(){return this.activeTurns}findActiveTurnByTurnId(e){for(let t of this.activeTurns.values())if(t.turnId===e)return t}destroy(){for(let e of this.cleanups)e();this.cleanups.length=0,this.activeTurns.clear(),this.usageAccumulators.clear(),this.completingSessions.clear(),this.bufferedUsageDuringCompletion.clear(),this.syntheticTurnCounters.clear()}async handleAgentCompletion(e,t,n,r){let i=l(this.activeTurns,e);if(!i)return;let a=t?i.markAgentCompleted(e):i.markAgentErrored(e,n??`Unknown error`);for(let r of i.messageIds)await this.bus.emit(D.user_message.completed,{sessionId:i.sessionId,turnId:i.turnId,turnNumber:i.turnNumber,messageId:r,agentId:e,outcome:t?`completed`:`error`,error:n});a.turnComplete&&await r(i,a.result)}bufferUsageDuringCompletion(e,t){let n=this.bufferedUsageDuringCompletion.get(e)??[];n.push(t),this.bufferedUsageDuringCompletion.set(e,n)}},Nt=class{bus;turnManager;adapterRegistry;cleanups=[];constructor(e=w,t){this.bus=e,this.turnManager=new Mt(e),this.adapterRegistry=new Ve(e),this.registerSendMessageHandler(),this.turnManager.registerCompletionHandlers(this.completeTurn.bind(this))}registerSendMessageHandler(){this.cleanups.push(this.bus.on(D.sendMessage,async e=>{let{sessionId:t,message:n,agentIds:r,deliveryMode:i,agent:a,source:o,origin:l}=e.payload,u=p(o,e.payload.extensionId),f=e.payload.sessionContext?se.parse(e.payload.sessionContext):void 0,{sessionId:m,session:g}=await c(this.bus,t,f,e.payload.originWindowId);if(g.agents.length===0){let e=await this.resolveInitialAdapterSelection(a,m,n,f),t=await this.resolveAdapterName(e,m),r=h(e.adapterId)??await this.adapterRegistry.resolveAvailable(t),i=await this.bus.request(T.startAgent,{adapterId:r,sessionId:m,role:`lead`,...e.model!==void 0&&{model:e.model},...e.reasoningEffort!==void 0&&{reasoningEffort:e.reasoningEffort},...e.cwd!==void 0&&{cwd:e.cwd},...e.systemPrompt!==void 0&&{systemPrompt:e.systemPrompt},...e.allowedTools!==void 0&&{allowedTools:e.allowedTools},...e.disallowedTools!==void 0&&{disallowedTools:e.disallowedTools},...e.env!==void 0&&{env:e.env},...e.mcpSessionContext!==void 0&&{mcpSessionContext:e.mcpSessionContext},...e.allowedDirectories!==void 0&&{allowedDirectories:e.allowedDirectories},...f!==void 0&&{sessionContext:f}});if(!i.success)throw Error(`[SessionOrchestrator.sendMessage] Failed to start agent (sessionId=${m}, adapterName=${t}): ${i.message}`);let o=Date.now();g.agents.push({agentId:i.agentId,adapterId:i.adapterId,adapterName:t,sessionId:m,role:`lead`,status:`idle`,createdAt:o,lastActivityAt:o}),g.leadAgentId=i.agentId}let _=d(g,r);if(_.length===0)throw Error(`[SessionOrchestrator.sendMessage] No valid target agents found (sessionId=${m})`);let y=new Set;for(let e of _){let t=await this.bus.requestOptional(T.getAgent,{agentId:e.agentId,adapterId:e.adapterId});t.handled&&t.data.agent===null&&y.add(e.agentId)}let b;if(y.size>0){b=await te(this.bus,g);for(let e of _)y.has(e.agentId)&&await this.bus.requestOptional(T.rehydrateAgent,{agentId:e.agentId,adapterId:e.adapterId})}let S=this.turnManager.getActiveTurn(m),C=!S;S||=await this.turnManager.createTurn(m,_.map(e=>e.agentId),u,e.payload.turnId);let w=crypto.randomUUID();S.addMessage(w);let ne=s(n);this.bus.requestOptional(x.append,{message:{messageId:w,turnId:S.turnId,sessionId:m,role:`user`,contentText:v(n),blocks:ne,timestamp:Date.now(),...l!==void 0&&{origin:l}}}).catch(e=>{console.warn(`[SessionOrchestrator] Failed to store user message`,{sessionId:m,messageId:w,error:e instanceof Error?e.message:String(e)})});for(let e of _)this.bus.requestOptional(V.record,{messageId:w,agentId:e.agentId,status:`sent`,timestamp:Date.now()}).catch(t=>{console.warn(`[SessionOrchestrator] Failed to record message routing`,{sessionId:m,messageId:w,agentId:e.agentId,error:t instanceof Error?t.message:String(t)})});C&&await this.bus.emit(D.turn.started,{sessionId:m,turnId:S.turnId,turnNumber:S.turnNumber,messageId:w,agentIds:[...S.agentIds],initiator:S.initiator}),await this.bus.emit(D.user_message.sent,{sessionId:m,turnId:S.turnId,turnNumber:S.turnNumber,messageId:w,content:n,agentIds:_.map(e=>e.agentId),...o!==void 0&&{source:o},...l!==void 0&&{origin:l}});let E=b?{...f,...b}:f;await ee(this.bus,g,_,n,w,S,i,this.completeTurn.bind(this),E,e.payload.responseSchema),e.setResult({messageId:w,turnId:S.turnId,sessionId:m})}))}async completeTurn(e,t){await this.turnManager.completeTurn(e,t)}destroy(){for(let e of this.cleanups)e();this.cleanups.length=0,this.turnManager.destroy(),this.adapterRegistry.destroy()}async resolveAdapterName(e,t){let n=h(e.adapterName),r=h(e.adapterId);if(!n&&!r)throw Error(`[SessionOrchestrator.sendMessage] adapterName or adapterId required when session has no agents (sessionId=${t})`);return r?g(this.bus,r,n,`[SessionOrchestrator.sendMessage] (sessionId=${t}) `):n}async resolveInitialAdapterSelection(e,t,n,r){if(!e)throw Error(`[SessionOrchestrator.sendMessage] agent selection required when session has no agents (sessionId=${t})`);if(e.kind===`adapter`)return e;if(e.kind===`canonical-model`)return await this.resolveCanonicalModelSelection(e,t,n,r);throw Error(`[SessionOrchestrator.sendMessage] agent with kind: 'adapter' or 'canonical-model' required when session has no agents (sessionId=${t})`)}async resolveCanonicalModelSelection(e,t,n,r){let i=me(e.model);if(pe(i))throw Error(`[SessionOrchestrator.sendMessage] Invalid canonical model "${e.model}" (sessionId=${t}): ${i.message}`);if(i.kind===`virtual`)throw Error(`[SessionOrchestrator.sendMessage] Virtual canonical models require a host resolver (sessionId=${t})`);let a=await this.bus.request(re.resolve,{parsed:i,context:{sessionId:t,promptText:v(n),...r===void 0?{}:{sessionContext:r}}});return{...e,...a,kind:`adapter`,providerConfigId:e.providerConfigId??a.providerConfigId}}},Pt=class{bus;constructor(e){this.bus=e}async getTurnSoFarContext(e){try{let{messages:t}=await this.bus.request(x.getByTurn,{turnId:e});return this.convertSessionMessagesToMessages(t)}catch(e){return e instanceof ne||console.warn(`[TurnContextEnricher] Failed to load turn-so-far context:`,e),[]}}async enrichForDeliveryMode(e,t,n){if(n!==`immediate`)return e;let r=await this.getTurnSoFarContext(t);return r.length===0?e:[...e??[],...r]}convertSessionMessagesToMessages(e){return e.map(e=>({role:e.role,blocks:e.blocks}))}};function Ft(e){let{bus:t}=e;return t.on(D.getStatusCounts,async e=>{e.payload;let{all:n,active:r,closed:i,archived:a,discovered:s}=await t.request(o.getStatusCounts,{});e.setResult({all:n,active:r,closed:i,archived:a,discovered:s})})}function It(e){let{bus:t}=e;return t.on(D.resume,async e=>{let{sessionId:n}=e.payload,{session:r}=await t.request(o.get,{sessionId:n});if(!r||r.status!==`closed`){e.setResult({success:!1});return}r.status=`active`,r.lastActivityAt=Date.now(),await t.request(o.set,{sessionId:n,session:r}),await t.emit(D.resumed,{sessionId:n}),e.setResult({success:!0})})}function Lt(e){return e.on(S.listActions,e=>{let t=m.getAll().map(e=>({id:e.id,label:e.label,description:e.description,category:e.category}));e.setResult({actions:t})})}const Rt=[{actionId:`strip-reasoning`},{actionId:`strip-tool-outputs`}];function zt(e){return{...e.cwd!==void 0&&{cwd:e.cwd},...e.systemPrompt!==void 0&&{systemPrompt:e.systemPrompt},...e.allowedTools!==void 0&&{allowedTools:e.allowedTools},...e.disallowedTools!==void 0&&{disallowedTools:e.disallowedTools}}}var Bt=class{bus;agentToSession=new Map;agentContext=new Map;agentBlocks=new Map;cleanups=[];constructor(e=w){this.bus=e,this.registerHandlers()}registerHandlers(){this.registerMappingHandlers(),this.registerTurnTrackingHandlers(),this.registerBlockAccumulationHandlers()}registerMappingHandlers(){this.cleanups.push(this.bus.on(D.agent.added,e=>{this.agentToSession.set(e.payload.agentId,e.payload.sessionId)})),this.cleanups.push(this.bus.on(D.closed,e=>{for(let[t,n]of this.agentToSession)n===e.payload.sessionId&&(this.agentToSession.delete(t),this.agentContext.delete(t),this.agentBlocks.delete(t))}))}registerTurnTrackingHandlers(){this.cleanups.push(this.bus.on(D.turn.started,e=>{let{sessionId:t,turnId:n,agentIds:r}=e.payload;for(let e of r){let r=this.agentContext.get(e);this.agentContext.set(e,{...r,sessionId:t,turnId:n}),this.agentBlocks.set(e,[])}})),this.cleanups.push(this.bus.on(D.user_message.acknowledged,e=>{let t=this.agentContext.get(e.payload.agentId);this.agentContext.set(e.payload.agentId,{...t,sessionId:e.payload.sessionId,turnId:e.payload.turnId}),this.agentBlocks.has(e.payload.agentId)||this.agentBlocks.set(e.payload.agentId,[])}))}registerBlockAccumulationHandlers(){this.cleanups.push(this.bus.on(E.message,e=>{let t=this.agentBlocks.get(e.payload.agentId);t&&t.push({type:`text`,content:e.payload.content})})),this.cleanups.push(this.bus.on(E.reasoning,e=>{let t=this.agentBlocks.get(e.payload.agentId);t&&t.push({type:`reasoning`,content:e.payload.content})})),this.cleanups.push(this.bus.on(E.tool.use,e=>{let t=this.agentBlocks.get(e.payload.agentId);t&&t.push({type:`tool_call`,toolCallId:e.payload.toolCallId,name:e.payload.toolName,args:e.payload.args??{}})})),this.cleanups.push(this.bus.on(E.tool.completed,e=>{let t=this.agentBlocks.get(e.payload.agentId);if(t){let n=e.payload.result,r=typeof n==`string`?n:JSON.stringify(n);t.push({type:`tool_output`,toolCallId:e.payload.toolCallId,output:r,isError:e.payload.success===!1})}})),this.cleanups.push(this.bus.on(E.complete,async e=>{if(e.payload._import){this.agentBlocks.delete(e.payload.agentId);return}let{agentId:t,adapterSessionId:n,outcome:r,error:i,message:a,structuredOutputValidation:o}=e.payload;await this.storeAssistantMessage(t,r===`error`?void 0:n,r===`error`?i:void 0,o===void 0?void 0:{content:a})}))}async storeAssistantMessage(e,t,n,r){let i=this.agentContext.get(e);if(!i?.turnId)return;let a=r===void 0?this.agentBlocks.get(e)??[]:r.content===void 0?[]:[{type:`text`,content:r.content}];if(a.length===0&&!n){this.agentBlocks.delete(e);return}let o=a.filter(e=>e.type===`text`).map(e=>e.content).join(`
|
|
64
|
+
`),s=crypto.randomUUID();try{if(!(await this.bus.requestOptional(x.append,{message:{messageId:s,turnId:i.turnId,sessionId:i.sessionId,role:`assistant`,contentText:o||(n?`[Error: ${n}]`:``),blocks:a,agentId:e,adapterSessionId:t,timestamp:Date.now()}})).handled){this.agentBlocks.delete(e);return}let r=await this.bus.requestOptional(x.getByTurn,{turnId:i.turnId});if(r.handled){let t=r.data.messages.find(e=>e.role===`user`);t&&await this.bus.requestOptional(V.record,{messageId:t.messageId,agentId:e,status:`completed`,timestamp:Date.now(),error:n})}}catch(e){console.error(`[SessionBridge] Failed to store assistant message:`,e)}this.agentBlocks.delete(e)}destroy(){for(let e of this.cleanups)e();this.cleanups.length=0,this.agentToSession.clear(),this.agentContext.clear(),this.agentBlocks.clear()}},Vt=class{bus;_sessionId;_extensionId;_turnId;_parentSessionId;contextTracker;contextContributions=new Map;constructor(e,t,n,r,i,a){this.bus=e,this._sessionId=t,this._extensionId=n,this._turnId=r,this._parentSessionId=i,this.contextTracker=a}get sessionId(){return this._sessionId}get turnId(){return this._turnId}get parentSessionId(){return this._parentSessionId}get extensionId(){return this._extensionId}async sendToAgent(e,t){await this.bus.request(D.sendMessage,{sessionId:this._sessionId,agentIds:[e],message:t,source:`extension`,extensionId:this._extensionId})}contributeContext(e,t){this.contextContributions.set(e,t)}getContributions(){return Object.fromEntries(this.contextContributions)}async fork(e){return(await this.bus.request(D.fork,{sourceSessionId:this._sessionId,name:e.reason})).sessionId}async merge(e,t){await this.bus.request(D.merge,{parentSessionId:this._sessionId,childSessionId:e,summary:t,source:`extension`,extensionId:this._extensionId})}async abandon(e){await this.bus.request(D.abandon,{parentSessionId:this._sessionId,childSessionId:e,source:`extension`,extensionId:this._extensionId})}async requestCompression(e){await this.bus.emit(D.compressionRequested,{sessionId:this._sessionId,reason:e,source:`extension`,extensionId:this._extensionId})}async getContextWindowState(){if(this.contextTracker){let e=this.contextTracker.getSessionState(this._sessionId);if(e)return{currentTokens:e.currentTokens,maxTokens:e.maxTokens,percentage:e.percentage,level:e.level}}let{session:e}=await this.bus.request(D.get,{sessionId:this._sessionId});return!e||e.agents.length===0?{currentTokens:0,maxTokens:1,percentage:0,level:`ok`}:{currentTokens:0,maxTokens:2e5,percentage:0,level:`ok`}}async getChildSessions(){return(await this.bus.request(D.getChildren,{sessionId:this._sessionId})).children.map(e=>e.sessionId)}};function Ht(e,t,n,r,i,a){return new Vt(e,t,n,r,i,a)}function Ut(e,t){let n=e?.clientAccountId??null,r=t.clientAccountId??null;return!r||n===r?null:{previousClientAccountId:n,clientAccountId:r}}function H(e,t){let n=t.lastClientIdentityObservation;if(t.clientAccountId!==void 0&&!n)throw Error(`Session "${t.sessionId}" cannot persist clientAccountId without lastClientIdentityObservation`);if(t.clientAccountId!==void 0&&t.clientId===void 0)throw Error(`Session "${t.sessionId}" cannot persist clientAccountId without clientId`);if(n&&t.clientId!==void 0&&t.clientId!==n.clientId)throw Error(`Session "${t.sessionId}" cannot persist clientId "${t.clientId}" because lastClientIdentityObservation belongs to "${n.clientId}"`)}function U(e,t,n){let r=Ut(t,n);if(!r)return;let i=n.lastClientIdentityObservation;if(!i)return;let a={sessionId:n.sessionId,clientId:i.clientId,previousClientAccountId:r.previousClientAccountId,clientAccountId:r.clientAccountId,source:i.source,observedAt:i.observedAt,lastClientIdentityObservation:structuredClone(i)};queueMicrotask(()=>{Promise.resolve().then(()=>e.emit(D.clientAccount.changed,a)).catch(e=>{console.error(`[SessionStorage] Failed to emit session.clientAccount.changed:`,e)})})}function W(e){switch(e){case`fork`:return`fork`;case`subagent`:return`subagent`;case`compress`:return`compress`;case`root`:return;default:return}}function Wt(e){switch(e.kind){case`root`:return{kind:`root`,parentAdapterSessionId:null,forkPointMessageId:null};case`fork`:return{kind:`fork`,parentAdapterSessionId:e.parentAdapterSessionId,forkPointMessageId:e.forkPointMessageId};case`subagent`:return{kind:`subagent`,parentAdapterSessionId:e.parentAdapterSessionId,forkPointMessageId:null};case`compress`:return{kind:`compress`,parentAdapterSessionId:e.parentAdapterSessionId,forkPointMessageId:null};default:return e.kind}}function Gt(){let e=0;return()=>{let t=Date.now();return e=t>e?t:e+1,e}}const Kt=Gt();function qt(e,t,n){n!==void 0&&(e[t]=n)}function Jt(e,t,n){let r=e.startedAt??n;return{sessionId:t,createdAt:r,lastActivityAt:r,agents:[],status:`discovered`,branchKind:W(e.kind),adapterName:e.source,adapterSessionId:e.externalSessionId,adapterId:e.adapterId,clientId:e.clientId,isOrchestrated:!1,isImported:!0,title:e.title??void 0,targetWorkingDirectory:e.cwd??void 0,source:e.source,parentExternalSessionId:e.parentAdapterSessionId??void 0,logFilePath:e.logFilePath??void 0,discoveredAt:n,importStatus:`discovered`,forkPointMessageId:e.forkPointMessageId??void 0}}function Yt(e,t,n){let r=e.importStatus??`discovered`;r===`discovered`&&(e.status=`discovered`),e.isImported=!0,e.importStatus=r,e.adapterName??=t.source,e.adapterSessionId??=t.externalSessionId,e.source??=t.source,e.discoveredAt??=n}function Xt(e,t){t.logFilePath!==void 0&&t.logFilePath!==null&&(e.logFilePath??=t.logFilePath),t.cwd!==null&&(e.targetWorkingDirectory=t.cwd),t.title!==void 0&&t.title!==null&&(e.title=t.title),t.forkPointMessageId!==null&&(e.forkPointMessageId=t.forkPointMessageId),t.parentAdapterSessionId!==null&&(e.parentExternalSessionId=t.parentAdapterSessionId);let n=W(t.kind);n!==void 0&&(e.branchKind=n),qt(e,`adapterId`,t.adapterId),qt(e,`clientId`,t.clientId)}function Zt(e,t,n){t.startedAt!==void 0&&((n===void 0||e.createdAt===n)&&(e.createdAt=t.startedAt),(n===void 0||e.lastActivityAt===n)&&(e.lastActivityAt=t.startedAt))}function Qt(e,t,n){let r=e.discoveredAt;Yt(e,t,n),Xt(e,t),Zt(e,t,r)}function $t(e,t){if(t.parentExternalSessionId===void 0)return;let n=t.source??t.adapterName,r=Array.from(e.values()).find(e=>e.adapterSessionId===t.parentExternalSessionId&&(e.source??e.adapterName)===n);r&&(t.parentSessionId=r.sessionId,t.rootSessionId=r.rootSessionId??r.sessionId)}function en(e,t,n){if(n){e.emit(D.created,{sessionId:t.sessionId,parentSessionId:t.parentSessionId??null,branchKind:t.branchKind??null,createdAt:t.createdAt}).catch(e=>console.error(`[SessionStorage] Failed to emit session.created:`,e));return}e.emit(D.updated,{sessionId:t.sessionId,changedProperties:[`source`,`targetWorkingDirectory`,`title`]}).catch(e=>console.error(`[SessionStorage] Failed to emit session.updated:`,e))}function tn(e){let t=0,n=0,r=0;for(let i of e)i.importStatus===`imported`&&(t+=1),i.importStatus===`tracking`&&(n+=1),i.importStatus===`discovered`&&(r+=1);return{total:e.length,imported:t,tracking:n,discovered:r}}function nn(e,t,n){e.emit(D.importStatusChanged,{sessionId:t.sessionId,importStatus:n}).catch(e=>console.error(`[SessionStorage] Failed to emit session.importStatusChanged:`,e));let r=t.source??t.adapterName;n!==`imported`||t.adapterSessionId===void 0||r===void 0||e.emit(D.import.completed,{sessionId:t.sessionId,adapterSessionId:t.adapterSessionId,source:r}).catch(e=>console.error(`[SessionStorage] Failed to emit session.import.completed:`,e))}function rn(e){let{bus:t,store:n,cloneSession:r,populateAgents:i}=e;return[t.on(o.importUpsert,e=>{let r=e.payload,i=Array.from(n.values()).find(e=>e.adapterSessionId===r.externalSessionId&&e.source===r.source),a=Kt(),o=i===void 0,s=i??Jt(r,crypto.randomUUID(),a);i?(Qt(i,r,a),i.parentExternalSessionId!==void 0&&i.parentSessionId===void 0&&$t(n,i)):(n.set(s.sessionId,s),$t(n,s)),en(t,s,o),e.setResult({sessionId:s.sessionId,created:o})}),t.on(o.getByLogFilePath,async e=>{let a=Array.from(n.values()).find(t=>t.logFilePath===e.payload.logFilePath);if(!a){e.setResult({session:null});return}let o=await i(t,a.sessionId);e.setResult({session:{...r(a),agents:o}})}),t.on(o.listImported,async e=>{let{source:a,importStatus:o}=e.payload,s=Array.from(n.values()).filter(e=>e.isImported===!0).filter(e=>a===void 0||e.source===a).filter(e=>o===void 0||e.importStatus===o).sort((e,t)=>t.createdAt-e.createdAt),c=await Promise.all(s.map(async e=>({...r(e),agents:await i(t,e.sessionId)})));e.setResult({sessions:c})}),t.on(o.countBySource,e=>{let t=Array.from(n.values()).filter(t=>t.isImported===!0&&t.source===e.payload.source);e.setResult(tn(t))}),t.on(o.updateImportStatus,e=>{let r=n.get(e.payload.sessionId),i=e.payload.importStatus;if(!r||r.importStatus===i){e.setResult({success:!1});return}r.importStatus=i,i===`imported`&&r.status===`discovered`&&(r.status=`active`),e.setResult({success:!0}),nn(t,r,i)})]}async function an(e,t){let n=await e.requestOptional(u.listBySession,{sessionId:t});return n.handled?n.data.agents:[]}function G(e){return structuredClone(e)}function K(e,t,n){n!==void 0&&(e[t]=n)}function on(e,t,n){n!==void 0&&(e[t]=n??void 0)}function sn(e,t){let n=e;return t.status!==`all`&&(n=n.filter(e=>e.status===t.status)),t.executionTargetId!==void 0&&(n=n.filter(e=>e.executionTargetId===t.executionTargetId)),n}function cn(e,t){K(e,`status`,t.status),K(e,`parentSessionId`,t.parentSessionId),K(e,`contextInheritance`,t.contextInheritance),K(e,`rootSessionId`,t.rootSessionId),K(e,`forkPointMessageId`,t.forkPointMessageId),K(e,`branchKind`,t.branchKind),K(e,`isOrchestrated`,t.isOrchestrated),K(e,`clientId`,t.clientId),K(e,`clientAccountId`,t.clientAccountId),K(e,`lastClientIdentityObservation`,t.lastClientIdentityObservation),K(e,`title`,t.title),K(e,`targetWorkingDirectory`,t.targetWorkingDirectory),K(e,`createdAt`,t.createdAt),K(e,`lastActivityAt`,t.lastActivityAt),on(e,`executionTargetId`,t.executionTargetId),on(e,`approvalPolicyOverride`,t.approvalPolicyOverride),t.spawningToolCallId===null?e.spawningToolCallId=void 0:t.spawningToolCallId!==void 0&&e.spawningToolCallId===void 0&&(e.spawningToolCallId=t.spawningToolCallId)}function ln(e,t){return e.on(o.list,async n=>{let{status:r=`all`,limit:i,offset:a=0,includePreview:o=!1,executionTargetId:s}=n.payload,c=sn(Array.from(t.values()),{status:r,executionTargetId:s});c.sort((e,t)=>t.lastActivityAt-e.lastActivityAt);let l=c.length;i!==void 0&&(c=c.slice(a,a+i));let u=await Promise.all(c.map(async t=>({...G(t),agents:await an(e,t.sessionId)}))),d=o?u.map(e=>({...e,preview:{messageCount:0,firstUserMessage:null}})):u;n.setResult({sessions:d,total:l})})}function un(e,t){return e.on(o.update,async n=>{let r=structuredClone(ue.request.parse(n.payload)),i=t.get(r.sessionId);if(!i){n.setResult({success:!1,clientAccountChanged:!1});return}let a=G(i);H(a,{sessionId:i.sessionId,clientId:r.clientId??i.clientId,clientAccountId:r.clientAccountId??i.clientAccountId,lastClientIdentityObservation:r.lastClientIdentityObservation??i.lastClientIdentityObservation}),cn(i,r),n.setResult({success:!0,clientAccountChanged:(a.clientAccountId??null)!==(i.clientAccountId??null)}),U(e,a,G(i))})}function dn(e){let t=new Map,n=[];return n.push(e.on(o.get,async n=>{let r=t.get(n.payload.sessionId);if(!r){n.setResult({session:null});return}let i=await an(e,n.payload.sessionId);n.setResult({session:{...G(r),agents:i}})})),n.push(e.on(o.set,async n=>{let{sessionId:r,session:i,ifAbsent:a}=le.parse(n.payload);if(a&&t.has(r)){n.setResult({success:!1,clientAccountChanged:!1});return}let o=structuredClone(i),s=t.get(r)??null,c=s?G(s):null;H(s,o),t.set(r,o),n.setResult({success:!0,clientAccountChanged:(c?.clientAccountId??null)!==(o.clientAccountId??null)}),U(e,c,G(o))})),n.push(e.on(o.delete,async e=>{t.delete(e.payload.sessionId),e.setResult({success:!0}),await e.next()})),n.push(ln(e,t)),n.push(e.on(o.getChildren,e=>{let{sessionId:n}=e.payload,r=Array.from(t.values()),i=r.filter(e=>e.parentSessionId===n),a=new Set(r.map(e=>e.parentSessionId).filter(e=>!!e)),o=i.map(e=>({sessionId:e.sessionId,title:e.title??null,forkPointMessageId:e.forkPointMessageId??null,branchKind:e.branchKind??null,messageCount:0,hasChildren:a.has(e.sessionId),spawningToolCallId:e.spawningToolCallId}));e.setResult({children:o})})),n.push(e.on(o.getStatusCounts,e=>{e.payload;let n=Array.from(t.values()),r=n.filter(e=>e.status===`active`).length,i=n.filter(e=>e.status===`closed`).length,a=n.filter(e=>e.status===`archived`).length,o=n.filter(e=>e.status===`discovered`).length;e.setResult({all:r+i+a+o,active:r,closed:i,archived:a,discovered:o})})),n.push(un(e,t)),n.push(fn(e,t)),n.push(...rn({bus:e,store:t,populateAgents:an,cloneSession:G})),()=>n.forEach(e=>e())}function fn(e,t){return e.on(o.getByAdapterSessionId,async n=>{let{adapterSessionId:r,source:i}=n.payload,a=Array.from(t.values()).filter(e=>e.adapterSessionId!==void 0&&e.adapterSessionId===r&&(i===void 0||e.source===i)),o=a[0];if(a.length!==1||o===void 0){n.setResult({session:null});return}let s=await e.requestOptional(u.listBySession,{sessionId:o.sessionId}),c=s.handled?s.data.agents:[];n.setResult({session:{...G(o),agents:c}})})}function pn(e){let n=e?.clientId??null,r=e?.clientAccountId??null,i=e?.lastClientIdentityObservation??null;return A(n===null?I(t.clientId):P(t.clientId,n),r===null?I(t.clientAccountId):P(t.clientAccountId,r),i===null?I(t.lastClientIdentityObservation):P(t.lastClientIdentityObservation,i))}const{agents:q}=f.extensions.drizzle;function J(e){return{agentId:e.agentId,adapterId:e.adapterId,adapterName:e.adapterName,sessionId:e.sessionId,role:e.role,status:e.status,createdAt:e.createdAt,lastActivityAt:e.lastActivityAt,model:e.model??void 0,adapterSessionId:e.adapterSessionId??void 0,cwd:e.cwd??void 0,providerConfigId:e.providerConfigId??void 0,personaId:e.personaId??void 0,profileId:e.profileId??void 0,harnessId:e.harnessId??void 0,clientId:e.clientId??void 0,compressionMode:e.compressionMode?ie.parse(e.compressionMode):void 0}}function mn(e){return{agentId:e.agentId,adapterId:e.adapterId,adapterName:e.adapterName,sessionId:e.sessionId,role:e.role,status:e.status,createdAt:e.createdAt,lastActivityAt:e.lastActivityAt,model:e.model??null,adapterSessionId:e.adapterSessionId??null,cwd:e.cwd??null,providerConfigId:e.providerConfigId??null,personaId:e.personaId??null,profileId:e.profileId??null,harnessId:e.harnessId??null,clientId:e.clientId??null,compressionMode:e.compressionMode??null}}function hn(e){let t;for(let n=e.length-1;n>=0;--n)try{e[n]?.()}catch(e){t??=e}if(t)throw t}function gn(e){let{bus:t,db:n}=e;return t.on(u.get,async e=>{let[t]=await n.select().from(q).where(P(q.agentId,e.payload.agentId)).limit(1);e.setResult({agent:t?J(t):null})})}function _n(e){let{bus:t,db:n}=e;return t.on(u.set,async e=>{let{agent:t}=e.payload,r=mn(t),i=await n.insert(q).values(r).onConflictDoUpdate({target:q.agentId,set:r});e.setResult({success:R(i)})})}function vn(e){let{bus:t,db:n}=e;return t.on(u.delete,async e=>{let t=await n.delete(q).where(P(q.agentId,e.payload.agentId));e.setResult({success:R(t)})})}function yn(e){let{bus:t,db:n}=e;return t.on(u.listByAdapter,async e=>{let{adapterName:t,status:r}=e.payload,i=[P(q.adapterName,t)];r&&r!==`all`&&i.push(P(q.status,r));let a=i.length>1?A(...i):i[0],o=await n.select().from(q).where(a);e.setResult({agents:o.map(J)})})}function bn(e){let{bus:t,db:n}=e;return t.on(u.listBySession,async e=>{let{sessionId:t}=e.payload,r=await n.select().from(q).where(P(q.sessionId,t));e.setResult({agents:r.map(J)})})}function xn(e){let{bus:t,db:n}=e;return t.on(u.updateStatus,async e=>{let{agentId:t,status:r}=e.payload,i=Date.now(),a=await n.update(q).set({status:r,lastActivityAt:i}).where(P(q.agentId,t));e.setResult({success:R(a)})})}function Sn(e){let{bus:t,db:n}=e;return t.on(u.updateActivity,async e=>{let{agentId:t,lastActivityAt:r}=e.payload,i=await n.update(q).set({lastActivityAt:r}).where(P(q.agentId,t));e.setResult({success:R(i)})})}function Cn(e){let{bus:t,db:n}=e;return t.on(u.updateRuntime,async e=>{let{agentId:t,cwd:r,model:i,providerConfigId:a}=e.payload,o={lastActivityAt:Date.now()};r!==void 0&&(o.cwd=r),i!==void 0&&(o.model=i),a!==void 0&&(o.providerConfigId=a);let s=await n.update(q).set(o).where(P(q.agentId,t));e.setResult({success:R(s)})})}function wn(e,t,n){let r={bus:e,db:t},i=[gn(r),_n(r),vn(r),yn(r),bn(r),xn(r),Sn(r),Cn(r)];return()=>hn(i)}function Y(e){return e??void 0}function Tn(e){if(e)try{let t=JSON.parse(e),n=De.safeParse(t);return n.success?n.data:void 0}catch{return}}function En(e){if(e)try{let t=JSON.parse(e),n=ae.safeParse(t);return n.success?n.data:void 0}catch{return}}function X(e,t){let n=En(e.forkTransforms),r=Tn(e.lastClientIdentityObservation);return{sessionId:e.sessionId,createdAt:e.createdAt,lastActivityAt:e.lastActivityAt,status:e.status,leadAgentId:Y(e.leadAgentId),parentSessionId:Y(e.parentSessionId),contextInheritance:Y(e.contextInheritance),rootSessionId:Y(e.rootSessionId),forkPointMessageId:Y(e.forkPointMessageId),branchKind:Y(e.branchKind),adapterName:Y(e.adapterName),adapterSessionId:Y(e.adapterSessionId),adapterId:Y(e.adapterId),clientId:Y(e.clientId),clientAccountId:Y(e.clientAccountId),lastClientIdentityObservation:r,isOrchestrated:Y(e.isOrchestrated),isImported:Y(e.isImported),title:Y(e.title),summary:Y(e.summary),summaryUpdatedAt:Y(e.summaryUpdatedAt),forkTransforms:n,targetWorkingDirectory:Y(e.targetWorkingDirectory),executionTargetId:Y(e.executionTargetId),agents:t.map(J),approvalPolicyOverride:Y(e.approvalPolicyOverride),spawningToolCallId:Y(e.spawningToolCallId),source:Y(e.source),parentExternalSessionId:Y(e.parentExternalSessionId),logFilePath:Y(e.logFilePath),discoveredAt:Y(e.discoveredAt),importStatus:Y(e.importStatus)}}function Dn(e){let t=new Map;for(let n of e){let e=t.get(n.sessionId)??[];e.push(n),t.set(n.sessionId,e)}return t}async function On(e,t,r){if(!r||t.length===0)return{};let i=e.select({sessionId:n.sessionId,minTimestamp:L`MIN(${n.timestamp})`.as(`min_timestamp`)}).from(n).where(A(P(n.role,`user`),F(n.sessionId,t))).groupBy(n.sessionId).as(`first_user_message_by_session`),a=await e.select({sessionId:n.sessionId,preview:n.contentText}).from(n).innerJoin(i,A(P(n.sessionId,i.sessionId),P(n.timestamp,i.minTimestamp))).where(P(n.role,`user`)),o=new Map;for(let e of a)o.has(e.sessionId)||o.set(e.sessionId,e.preview);let s=await e.select({sessionId:n.sessionId,count:M()}).from(n).where(F(n.sessionId,t)).groupBy(n.sessionId),c=new Map;for(let e of s)c.set(e.sessionId,e.count);return{previewBySession:o,countBySession:c}}function kn(e,t){return{sessionId:e.sessionId,clientId:t.clientId??e.clientId,clientAccountId:t.clientAccountId??e.clientAccountId,lastClientIdentityObservation:t.lastClientIdentityObservation??e.lastClientIdentityObservation}}function An(e){return e.clientId!==void 0||e.clientAccountId!==void 0||e.lastClientIdentityObservation!==void 0}function jn(n){let{bus:r,db:i}=n;return r.on(o.getByAdapterSessionId,async n=>{let{adapterSessionId:r,source:a}=n.payload,o=await i.select().from(t).where(a===void 0?P(t.adapterSessionId,r):A(P(t.adapterSessionId,r),P(t.source,a))).limit(2),s=o[0];if(o.length!==1||s===void 0){n.setResult({session:null});return}let c=await i.select().from(e).where(P(e.sessionId,s.sessionId));n.setResult({session:X(s,c)})})}const Mn=Gt();function Nn(e,n){return n===void 0?L`${e}`:L`
|
|
65
|
+
CASE
|
|
66
|
+
WHEN ${t.discoveredAt} IS NULL OR ${e} = ${t.discoveredAt} THEN ${n}
|
|
67
|
+
ELSE ${e}
|
|
68
|
+
END
|
|
69
|
+
`}function Pn(e){let{bus:n,db:r}=e;return n.on(o.importUpsert,async e=>{let{externalSessionId:i,source:a,clientId:o,adapterId:s,cwd:c,logFilePath:l,startedAt:u,title:d,kind:f,parentAdapterSessionId:p,forkPointMessageId:m}=e.payload,h=Mn(),g=crypto.randomUUID(),_=u??h,v=W(f)??null,ee=p??null,[te]=await r.insert(t).values({sessionId:g,status:`discovered`,isImported:!0,importStatus:`discovered`,adapterName:a,adapterSessionId:i,source:a??null,clientId:o??null,adapterId:s??null,targetWorkingDirectory:c??null,logFilePath:l??null,forkPointMessageId:m??null,branchKind:v,parentExternalSessionId:ee,discoveredAt:h,title:d??null,createdAt:_,lastActivityAt:_}).onConflictDoUpdate({target:[t.source,t.adapterSessionId],set:{status:L`
|
|
70
|
+
CASE
|
|
71
|
+
WHEN COALESCE(${t.importStatus}, excluded.import_status) = 'discovered' THEN excluded.status
|
|
72
|
+
ELSE ${t.status}
|
|
73
|
+
END
|
|
74
|
+
`,isImported:!0,importStatus:L`COALESCE(${t.importStatus}, excluded.import_status)`,adapterName:L`COALESCE(${t.adapterName}, excluded.adapter_name)`,discoveredAt:L`COALESCE(${t.discoveredAt}, excluded.discovered_at)`,source:L`COALESCE(${t.source}, excluded.source)`,logFilePath:L`COALESCE(${t.logFilePath}, excluded.log_file_path)`,targetWorkingDirectory:L`COALESCE(excluded.target_working_directory, ${t.targetWorkingDirectory})`,title:L`COALESCE(excluded.title, ${t.title})`,forkPointMessageId:L`COALESCE(excluded.fork_point_message_id, ${t.forkPointMessageId})`,parentExternalSessionId:L`COALESCE(excluded.parent_external_session_id, ${t.parentExternalSessionId})`,branchKind:L`COALESCE(excluded.branch_kind, ${t.branchKind})`,adapterId:L`COALESCE(excluded.adapter_id, ${t.adapterId})`,clientId:L`COALESCE(excluded.client_id, ${t.clientId})`,createdAt:Nn(t.createdAt,u),lastActivityAt:Nn(t.lastActivityAt,u)}}).returning({sessionId:t.sessionId,discoveredAt:t.discoveredAt,parentExternalSessionId:t.parentExternalSessionId,parentSessionId:t.parentSessionId}),y=te.sessionId===g;await Fn(n,r,te,y,v,_,a),e.setResult({sessionId:te.sessionId,created:y})})}async function Fn(e,t,n,r,i,a,o){if(r){let r=await In(t,n.sessionId,n.parentExternalSessionId,o);e.emit(D.created,{sessionId:n.sessionId,parentSessionId:r,branchKind:i,createdAt:a}).catch(e=>console.error(`[SessionStorage] Failed to emit session.created:`,e))}else n.parentExternalSessionId!==null&&n.parentSessionId===null&&await In(t,n.sessionId,n.parentExternalSessionId,o),e.emit(D.updated,{sessionId:n.sessionId,changedProperties:[`source`,`targetWorkingDirectory`,`title`]}).catch(e=>console.error(`[SessionStorage] Failed to emit session.updated:`,e))}async function In(e,n,r,i){if(r===null)return null;let[a]=await e.select({sessionId:t.sessionId,rootSessionId:t.rootSessionId}).from(t).where(A(P(t.adapterSessionId,r),P(t.source,i))).limit(1);if(!a)return null;let o=a.rootSessionId??a.sessionId;return await e.update(t).set({parentSessionId:a.sessionId,rootSessionId:o}).where(P(t.sessionId,n)),a.sessionId}function Ln(n){let{bus:r,db:i}=n;return r.on(o.getByLogFilePath,async n=>{let{logFilePath:r}=n.payload,[a]=await i.select().from(t).where(P(t.logFilePath,r)).limit(1);if(!a){n.setResult({session:null});return}let o=await i.select().from(e).where(P(e.sessionId,a.sessionId));n.setResult({session:X(a,o)})})}function Rn(n){let{bus:r,db:i}=n;return r.on(o.listImported,async n=>{let{source:r,importStatus:a}=n.payload,o=[P(t.isImported,!0)];r!==void 0&&o.push(P(t.source,r)),a!==void 0&&o.push(P(t.importStatus,a));let s=A(...o),c=await i.select().from(t).where(s).orderBy(N(t.createdAt));if(c.length===0){n.setResult({sessions:[]});return}let l=c.map(e=>e.sessionId),u=Dn(await i.select().from(e).where(F(e.sessionId,l)));n.setResult({sessions:c.map(e=>X(e,u.get(e.sessionId)??[]))})})}function zn(e){let{bus:n,db:r}=e;return n.on(o.countBySource,async e=>{let{source:n}=e.payload,i=await r.select({importStatus:t.importStatus,count:L`count(*)`}).from(t).where(A(P(t.isImported,!0),P(t.source,n))).groupBy(t.importStatus),a=0,o=0,s=0,c=0;for(let e of i){let t=Number(e.count);a+=t,e.importStatus===`imported`&&(o+=t),e.importStatus===`tracking`&&(s+=t),e.importStatus===`discovered`&&(c=t)}e.setResult({total:a,imported:o,tracking:s,discovered:c})})}function Bn(e){let{bus:n,db:r}=e;return n.on(o.updateImportStatus,async e=>{let{sessionId:i,importStatus:a}=e.payload,o=a===`imported`?{status:L`
|
|
75
|
+
CASE
|
|
76
|
+
WHEN ${t.status} = 'discovered' THEN 'active'
|
|
77
|
+
ELSE ${t.status}
|
|
78
|
+
END
|
|
79
|
+
`}:{},[s]=await r.update(t).set({importStatus:a,...o}).where(A(P(t.sessionId,i),we(I(t.importStatus),L`${t.importStatus} <> ${a}`))).returning({adapterSessionId:t.adapterSessionId,adapterName:t.adapterName,source:t.source}),c=s!==void 0;if(e.setResult({success:c}),c){n.emit(D.importStatusChanged,{sessionId:i,importStatus:a}).catch(e=>console.error(`[SessionStorage] Failed to emit session.importStatusChanged:`,e));let e=s.source??s.adapterName;a===`imported`&&s.adapterSessionId&&e&&n.emit(D.import.completed,{sessionId:i,adapterSessionId:s.adapterSessionId,source:e}).catch(e=>console.error(`[SessionStorage] Failed to emit session.import.completed:`,e))}})}function Vn(e,t){let n={bus:e,db:t};return[Pn(n),Ln(n),Rn(n),zn(n),Bn(n)]}function Z(e){return e??null}function Hn(e){return e?JSON.stringify(e):null}function Un(e){return{lastActivityAt:e.lastActivityAt,status:e.status,leadAgentId:Z(e.leadAgentId),parentSessionId:Z(e.parentSessionId),contextInheritance:Z(e.contextInheritance),rootSessionId:Z(e.rootSessionId),forkPointMessageId:Z(e.forkPointMessageId),branchKind:Z(e.branchKind),adapterName:Z(e.adapterName),adapterSessionId:Z(e.adapterSessionId),adapterId:Z(e.adapterId),clientId:Z(e.clientId),clientAccountId:Z(e.clientAccountId),lastClientIdentityObservation:Wn(e.lastClientIdentityObservation),isOrchestrated:e.isOrchestrated??!1,isImported:e.isImported??!1,title:Z(e.title),summary:Z(e.summary),summaryUpdatedAt:Z(e.summaryUpdatedAt),forkTransforms:Hn(e.forkTransforms),targetWorkingDirectory:Z(e.targetWorkingDirectory),executionTargetId:Z(e.executionTargetId),approvalPolicyOverride:Z(e.approvalPolicyOverride),spawningToolCallId:Z(e.spawningToolCallId),source:Z(e.source),parentExternalSessionId:Z(e.parentExternalSessionId),logFilePath:Z(e.logFilePath),discoveredAt:Z(e.discoveredAt),importStatus:Z(e.importStatus)}}function Wn(e){return e?JSON.stringify(e):null}function Q(e,t,n){n!==void 0&&(e[t]=n)}function Gn(e,t,n){n!==void 0&&(e[t]=n??null)}function Kn(e){let n={};return Q(n,`status`,e.status),Q(n,`parentSessionId`,e.parentSessionId),Q(n,`contextInheritance`,e.contextInheritance),Q(n,`rootSessionId`,e.rootSessionId),Q(n,`forkPointMessageId`,e.forkPointMessageId),Q(n,`branchKind`,e.branchKind),Q(n,`isOrchestrated`,e.isOrchestrated),Q(n,`clientId`,e.clientId),Q(n,`clientAccountId`,e.clientAccountId),Q(n,`title`,e.title),Q(n,`targetWorkingDirectory`,e.targetWorkingDirectory),Q(n,`createdAt`,e.createdAt),Q(n,`lastActivityAt`,e.lastActivityAt),Gn(n,`executionTargetId`,e.executionTargetId),Gn(n,`approvalPolicyOverride`,e.approvalPolicyOverride),e.spawningToolCallId===null?n.spawningToolCallId=null:e.spawningToolCallId!==void 0&&(n.spawningToolCallId=L`coalesce(${t.spawningToolCallId}, ${e.spawningToolCallId})`),e.lastClientIdentityObservation!==void 0&&(n.lastClientIdentityObservation=Wn(e.lastClientIdentityObservation)),n}function qn(n){let{bus:r,db:i}=n;return r.on(o.get,async n=>{let[r]=await i.select().from(t).where(P(t.sessionId,n.payload.sessionId)).limit(1);if(!r){n.setResult({session:null});return}let a=await i.select().from(e).where(P(e.sessionId,n.payload.sessionId));n.setResult({session:X(r,a)})})}function Jn(e){let{bus:n,db:r}=e;return n.on(o.set,async e=>{let{sessionId:i,session:a,ifAbsent:o}=le.parse(e.payload),s=Un(a);if(o){H(null,a);let o=R(await r.insert(t).values({sessionId:i,createdAt:a.createdAt,...s}).onConflictDoNothing());e.setResult({success:o,clientAccountChanged:o&&a.clientAccountId!==void 0}),o&&U(n,null,a);return}for(let o=0;o<3;o++){let[o]=await r.select().from(t).where(P(t.sessionId,i)).limit(1),c=o?X(o,[]):null;if(H(c,a),R(await r.insert(t).values({sessionId:i,createdAt:a.createdAt,...s}).onConflictDoUpdate({target:t.sessionId,set:s,setWhere:pn(o)}))){e.setResult({success:!0,clientAccountChanged:(c?.clientAccountId??null)!==(a.clientAccountId??null)}),U(n,c,a);return}}throw Error(`Failed to write session "${i}" with a stable client-account baseline`)})}function Yn(e){let{bus:n,db:r}=e;return n.on(o.delete,async e=>{await r.delete(t).where(P(t.sessionId,e.payload.sessionId)),e.setResult({success:!0})})}function Xn(e){let{bus:n,db:r}=e;return n.on(o.update,async e=>{let i=ue.request.parse(e.payload),{sessionId:a}=i,o=Kn(i),s=An(i);if(Object.keys(o).length===0){e.setResult({success:!0,clientAccountChanged:!1});return}if(!s){let n=await r.update(t).set(o).where(P(t.sessionId,a));e.setResult({success:R(n),clientAccountChanged:!1});return}for(let s=0;s<3;s++){let[s]=await r.select().from(t).where(P(t.sessionId,a)).limit(1);if(!s){e.setResult({success:!1,clientAccountChanged:!1});return}let c=X(s,[]),l=kn(c,i);if(H(c,l),R(await r.update(t).set(o).where(A(P(t.sessionId,a),pn(s))))){e.setResult({success:!0,clientAccountChanged:(c.clientAccountId??null)!==(l.clientAccountId??null)}),U(n,c,l);return}}throw Error(`Failed to update session "${a}" with a stable client-account baseline`)})}function Zn(e){let n=[];return e.status!==`all`&&n.push(P(t.status,e.status)),e.executionTargetId!==void 0&&n.push(P(t.executionTargetId,e.executionTargetId)),A(...n)}function Qn(n){let{bus:r,db:i}=n;return r.on(o.list,async n=>{let{status:r=`all`,limit:a,offset:o=0,includePreview:s=!1,executionTargetId:c}=n.payload,l=Zn({status:r,executionTargetId:c}),u=l?i.select().from(t).where(l):i.select().from(t),d=a===void 0?await u.orderBy(N(t.lastActivityAt)):await u.orderBy(N(t.lastActivityAt)).limit(a).offset(o),[f]=await(l?i.select({count:M()}).from(t).where(l):i.select({count:M()}).from(t)),p=f?.count??0;if(d.length===0){n.setResult({sessions:[],total:p});return}let m=d.map(e=>e.sessionId),h=Dn(await i.select().from(e).where(F(e.sessionId,m))),{previewBySession:g,countBySession:_}=await On(i,m,s),v=d.map(e=>{let t=X(e,h.get(e.sessionId)??[]);return s&&g&&_?{...t,preview:{messageCount:_.get(e.sessionId)??0,firstUserMessage:g.get(e.sessionId)??null}}:t});n.setResult({sessions:v,total:p})})}function $n(e){let{bus:r,db:i}=e;return r.on(o.getChildren,async e=>{let{sessionId:r}=e.payload,a=await i.select().from(t).where(P(t.parentSessionId,r));if(a.length===0){e.setResult({children:[]});return}let o=a.map(e=>e.sessionId),s=await i.select({sessionId:n.sessionId,count:M()}).from(n).where(F(n.sessionId,o)).groupBy(n.sessionId),c=new Map;for(let e of s)c.set(e.sessionId,e.count);let l=await i.select({parentSessionId:t.parentSessionId,count:M()}).from(t).where(F(t.parentSessionId,o)).groupBy(t.parentSessionId),u=new Set;for(let e of l)e.parentSessionId&&u.add(e.parentSessionId);let d=a.map(e=>e.forkPointMessageId).filter(e=>e!==null),f=new Map;if(d.length>0){let e=await i.select({messageId:n.messageId,adapterMessageId:n.adapterMessageId}).from(n).where(F(n.adapterMessageId,d));for(let t of e)t.adapterMessageId&&f.set(t.adapterMessageId,t.messageId)}let p=a.map(e=>{let t=e.forkPointMessageId,n=t?f.get(t)??t:null;return{sessionId:e.sessionId,title:e.title??null,forkPointMessageId:n,branchKind:e.branchKind??null,messageCount:c.get(e.sessionId)??0,hasChildren:u.has(e.sessionId),spawningToolCallId:e.spawningToolCallId??void 0}});e.setResult({children:p})})}function er(e){let{bus:n,db:r}=e;return n.on(o.getStatusCounts,async e=>{e.payload;let n=await r.select({status:t.status,count:M()}).from(t).groupBy(t.status),i=0,a=0,o=0,s=0;for(let e of n)e.status===`active`?i=e.count:e.status===`closed`?a=e.count:e.status===`archived`?o=e.count:e.status===`discovered`&&(s=e.count);let c=i+a+o+s;e.setResult({all:c,active:i,closed:a,archived:o,discovered:s})})}function tr(e,t,n){let r={bus:e,db:t},i=[qn(r),Jn(r),Yn(r),Xn(r),Qn(r),$n(r),jn(r),er(r),...Vn(e,t)];return()=>i.forEach(e=>e())}function nr(e,t,n,r){return t===void 0&&n===void 0&&r===void 0?!1:(t!==void 0&&(e.cwd=t),n!==void 0&&(e.model=n),r!==void 0&&(e.providerConfigId=r),!0)}function rr(e){let t=new Map,n=[];return n.push(e.on(u.get,e=>{let n=t.get(e.payload.agentId)??null;e.setResult({agent:n})})),n.push(e.on(u.set,e=>{t.set(e.payload.agentId,e.payload.agent),e.setResult({success:!0})})),n.push(e.on(u.delete,e=>{let n=t.delete(e.payload.agentId);e.setResult({success:n})})),n.push(e.on(u.listByAdapter,e=>{let{adapterName:n,status:r}=e.payload,i=Array.from(t.values()).filter(e=>e.adapterName===n);r&&r!==`all`&&(i=i.filter(e=>e.status===r)),e.setResult({agents:i})})),n.push(e.on(u.listBySession,e=>{let n=Array.from(t.values()).filter(t=>t.sessionId===e.payload.sessionId);e.setResult({agents:n})})),n.push(e.on(u.updateStatus,e=>{let n=t.get(e.payload.agentId);if(!n){e.setResult({success:!1});return}n.status=e.payload.status,n.lastActivityAt=Date.now(),e.setResult({success:!0})})),n.push(e.on(u.updateActivity,e=>{let n=t.get(e.payload.agentId);if(!n){e.setResult({success:!1});return}n.lastActivityAt=e.payload.lastActivityAt,e.setResult({success:!0})})),n.push(e.on(u.updateRuntime,e=>{let n=t.get(e.payload.agentId);if(!n){e.setResult({success:!1});return}let{cwd:r,model:i,providerConfigId:a}=e.payload;if(!nr(n,r,i,a)){e.setResult({success:!1});return}n.lastActivityAt=Date.now(),e.setResult({success:!0})})),()=>n.forEach(e=>e())}async function ir(t,n){if(n.length===0)return new Map;let r=[...new Set(n)],i=await t.select().from(e).where(F(e.sessionId,r)),a=new Map;for(let e of i){let t=a.get(e.sessionId)??[];t.push(e),a.set(e.sessionId,t)}return a}async function ar(e,t){if(t.length===0)return new Map;let n=[...new Set(t)],r=await e.all(L`
|
|
80
|
+
SELECT m.session_id as sessionId, m.content_text as preview
|
|
81
|
+
FROM messages m
|
|
82
|
+
WHERE m.role = 'user'
|
|
83
|
+
AND m.session_id IN (${L.join(n.map(e=>L`${e}`),L`, `)})
|
|
84
|
+
AND NOT EXISTS (
|
|
85
|
+
SELECT 1
|
|
86
|
+
FROM messages m2
|
|
87
|
+
WHERE m2.session_id = m.session_id
|
|
88
|
+
AND m2.role = 'user'
|
|
89
|
+
AND (m2.timestamp < m.timestamp OR (m2.timestamp = m.timestamp AND m2.rowid < m.rowid))
|
|
90
|
+
)
|
|
91
|
+
`),i=new Map;for(let e of r)i.set(e.sessionId,e.preview);return i}async function or(e,t){if(t.length===0)return new Map;let r=[...new Set(t)],i=await e.select({sessionId:n.sessionId,count:M()}).from(n).where(F(n.sessionId,r)).groupBy(n.sessionId),a=new Map;for(let e of i)a.set(e.sessionId,e.count);return a}function sr(e){if(e)try{let t=JSON.parse(e);return!t||typeof t!=`object`||Array.isArray(t)?void 0:t}catch{return}}function cr(e,t,n,r){return{sessionId:e.session_id,createdAt:e.created_at,lastActivityAt:e.last_activity_at,status:e.status,title:e.title??void 0,leadAgentId:e.lead_agent_id??void 0,parentSessionId:e.parent_session_id??void 0,rootSessionId:e.root_session_id??void 0,forkPointMessageId:e.fork_point_message_id??void 0,branchKind:e.branch_kind??void 0,adapterName:e.adapter_name??void 0,adapterSessionId:e.adapter_session_id??void 0,adapterId:e.adapter_id??void 0,isOrchestrated:e.is_orchestrated===null?void 0:!!e.is_orchestrated,isImported:e.is_imported===null?void 0:!!e.is_imported,summary:e.summary??void 0,summaryUpdatedAt:e.summary_updated_at??void 0,forkTransforms:sr(e.fork_transforms),targetWorkingDirectory:e.target_working_directory??void 0,agents:t.map(e=>({agentId:e.agentId,adapterId:e.adapterId,adapterName:e.adapterName,sessionId:e.sessionId,role:e.role,status:e.status,createdAt:e.createdAt,lastActivityAt:e.lastActivityAt,model:e.model??void 0,adapterSessionId:e.adapterSessionId??void 0,cwd:e.cwd??void 0})),preview:{messageCount:r.get(e.session_id)??0,firstUserMessage:n.get(e.session_id)??null}}}function lr(e){let t=[];return e.status!==`all`&&t.push(L`s.status = ${e.status}`),e.isImported!==void 0&&t.push(e.isImported?L`s.is_imported = 1`:L`COALESCE(s.is_imported, 0) = 0`),t.length===0?L``:L` AND ${L.join(t,L` AND `)}`}async function ur(e,t,n,r,i){let a=lr(i);return e.all(L`
|
|
92
|
+
SELECT DISTINCT
|
|
93
|
+
s.session_id,
|
|
94
|
+
s.created_at,
|
|
95
|
+
s.last_activity_at,
|
|
96
|
+
s.status,
|
|
97
|
+
s.title,
|
|
98
|
+
s.lead_agent_id,
|
|
99
|
+
s.parent_session_id,
|
|
100
|
+
s.root_session_id,
|
|
101
|
+
s.fork_point_message_id,
|
|
102
|
+
s.branch_kind,
|
|
103
|
+
s.adapter_name,
|
|
104
|
+
s.adapter_session_id,
|
|
105
|
+
s.adapter_id,
|
|
106
|
+
s.is_orchestrated,
|
|
107
|
+
s.is_imported,
|
|
108
|
+
s.summary,
|
|
109
|
+
s.summary_updated_at,
|
|
110
|
+
s.fork_transforms,
|
|
111
|
+
s.target_working_directory
|
|
112
|
+
FROM sessions s
|
|
113
|
+
WHERE (
|
|
114
|
+
s.session_id IN (
|
|
115
|
+
SELECT session_id FROM messages_fts
|
|
116
|
+
WHERE messages_fts MATCH ${t}
|
|
117
|
+
)
|
|
118
|
+
OR LOWER(s.title) LIKE ${n}
|
|
119
|
+
)
|
|
120
|
+
${a}
|
|
121
|
+
ORDER BY s.last_activity_at DESC
|
|
122
|
+
LIMIT ${r}
|
|
123
|
+
`)}async function dr(e,t,n,r){let i=lr(r),[a]=await e.all(L`
|
|
124
|
+
SELECT COUNT(DISTINCT s.session_id) as total
|
|
125
|
+
FROM sessions s
|
|
126
|
+
WHERE (
|
|
127
|
+
s.session_id IN (
|
|
128
|
+
SELECT session_id FROM messages_fts
|
|
129
|
+
WHERE messages_fts MATCH ${t}
|
|
130
|
+
)
|
|
131
|
+
OR LOWER(s.title) LIKE ${n}
|
|
132
|
+
)
|
|
133
|
+
${i}
|
|
134
|
+
`);return a?.total??0}function fr(e,t){let n=[];return n.push(e.on(o.search,async e=>{let{query:n,limit:r=20,status:i=`all`,isImported:a}=e.payload,o=n.trim();if(!o){e.setResult({sessions:[],total:0});return}let s=`%${o.toLowerCase()}%`,c={status:i,isImported:a},l=await ur(t,o,s,r,c);if(l.length===0){e.setResult({sessions:[],total:0});return}let u=await dr(t,o,s,c),d=l.map(e=>e.session_id),f=await ir(t,d),p=await ar(t,d),m=await or(t,d),h=l.map(e=>cr(e,f.get(e.session_id)??[],p,m));e.setResult({sessions:h,total:u})})),()=>n.forEach(e=>e())}var pr=class{bus;options;cleanups=[];transform;constructor(e=w,t={}){this.bus=e,this.options=t,this.transform=t.transform??(e=>e),this.registerHandlers()}async emitStorageEvent(e,t,n){let i={sessionId:t,eventId:crypto.randomUUID(),timestamp:Date.now(),type:e,payload:n},a=this.transform(i);a&&await this.bus.request(r.append,{event:a})}registerHandler(e,t){this.cleanups.push(this.bus.on(e,(async e=>{try{await this.emitStorageEvent(t,e.payload.sessionId,e.payload)}catch(e){console.error(`[SessionLogger] Failed to emit ${t} to storage:`,e)}})))}registerHandlers(){this.registerHandler(D.agent.added,`agent.added`),this.registerHandler(D.turn.started,`turn.started`),this.registerHandler(D.turn.completed,`turn.completed`),this.registerHandler(D.branch.created,`branch.created`)}destroy(){for(let e of this.cleanups)e();this.cleanups.length=0}};const $=ye(`import_cursors`,{filePath:k(`file_path`).primaryKey(),bytesRead:_e(`bytes_read`).notNull(),lastModified:k(`last_modified`).notNull(),updatedAt:_e(`updated_at`).notNull()});function mr(e,t,n){let r=[];return r.push(e.on(Oe.get,async e=>{let{filePath:n}=e.payload,r=(await t.select().from($).where(P($.filePath,n)).limit(1))[0];if(!r){e.setResult({cursor:null});return}e.setResult({cursor:{filePath:r.filePath,bytesRead:r.bytesRead,lastModified:r.lastModified}})})),r.push(e.on(Oe.set,async e=>{let{filePath:n,bytesRead:r,lastModified:i}=e.payload;await t.insert($).values({filePath:n,bytesRead:r,lastModified:i,updatedAt:Date.now()}).onConflictDoUpdate({target:$.filePath,set:{bytesRead:r,lastModified:i,updatedAt:Date.now()}}),e.setResult({success:!0})})),r.push(e.on(Oe.delete,async e=>{let{filePath:n}=e.payload,r=await t.delete($).where(P($.filePath,n));e.setResult({success:R(r)})})),()=>{r.forEach(e=>e())}}var hr=class{sessionId;parentSessionId;status=`active`;_turns=[];_completedTurnIds=new Set;bus;constructor(e){this.sessionId=e.sessionId??crypto.randomUUID(),this.parentSessionId=e.parentSessionId,this.bus=e.bus}get turns(){return this._turns}async startTurn(e){if(this.status!==`active`)throw Error(`Cannot start turn on non-active session`);let t=new _({sessionId:this.sessionId,agentIds:e.agentIds,turnNumber:e.turnNumber,turnId:e.turnId});return this._turns.push(t),t.addMessage(e.messageId),await this.emit(D.turn.started,{turnId:t.turnId,turnNumber:t.turnNumber,agentIds:[...t.agentIds],messageId:e.messageId}),t}getActiveTurn(){for(let e=this._turns.length-1;e>=0;e--){let t=this._turns[e];if(!this._completedTurnIds.has(t.turnId))return t}}async completeTurn(e){if(!e.isComplete())throw Error(`Turn ${e.turnId} is not complete yet`);this._completedTurnIds.add(e.turnId);let t=e.getResult();await this.emit(D.turn.completed,{turnId:e.turnId,turnNumber:e.turnNumber,success:t.success,error:t.errors.length>0?t.errors.join(`; `):void 0})}async emit(e,t){await this.bus.emit(e,{...t,sessionId:this.sessionId})}};function gr(e,t){let{sessions:n}=a.extensions.drizzle;async function r(i,a,s,c=0){if(c>100)throw Error(`Cycle detected in session lineage (depth > 100)`);let l=await t.select({adapterSessionId:n.adapterSessionId,sessionId:n.sessionId,parentSessionId:n.parentSessionId}).from(n).where(A(P(n.parentExternalSessionId,i),P(n.source,a)));for(let t of l)t.parentSessionId!==null&&await e.request(o.update,{sessionId:t.sessionId,rootSessionId:s}),t.adapterSessionId!==null&&await r(t.adapterSessionId,a,s,c+1)}return e.on(D.import.completed,async i=>{let{adapterSessionId:a,sessionId:s,source:c}=i.payload,l=await t.select({sessionId:n.sessionId,adapterSessionId:n.adapterSessionId,branchKind:n.branchKind}).from(n).where(A(P(n.parentExternalSessionId,a),P(n.source,c),I(n.parentSessionId)));if(l.length===0)return;let{session:u}=await e.request(o.get,{sessionId:s}),d=u?.rootSessionId??s;for(let t of l)await e.request(o.update,{sessionId:t.sessionId,parentSessionId:s,rootSessionId:d,...t.branchKind===null?{}:{branchKind:t.branchKind}}),t.adapterSessionId!==null&&await r(t.adapterSessionId,c,d)})}const _r=new Set([`Agent`,`spawn_subagent`]),vr=`[^A-Za-z0-9_-]`;function yr(e){return e.replaceAll(/[.*+?^${}()|[\]\\]/g,`\\$&`)}function br(e,t){return t.test(e)}async function xr(e,t){let n=[],r,i=0;do{let a=await e.request(x.getBySession,{sessionId:t,order:`asc`,...r===void 0?{}:{after:r}});if(n.push(...a.messages),r=a.nextCursor??void 0,i+=1,r!==void 0&&i>=1e3)throw Error(`Exceeded 1000 message pages while loading session ${t}`)}while(r!==void 0);return n}function Sr(e){let t=[];for(let n of e)for(let e of n.blocks)e.type===`tool_call`&&_r.has(e.name)&&t.push({toolCallId:e.toolCallId});return t}function Cr(e,t){let n=new Map;for(let r of e)for(let e of r.blocks)if(e.type===`tool_output`){for(let r of t)if(br(e.output,r.pattern)){let t=n.get(e.toolCallId)??new Set;t.add(r.id),n.set(e.toolCallId,t)}}let r=new Map;for(let[e,t]of n)if(t.size===1){let[n]=t;r.set(e,n)}return r}function wr(e){let t=new Map,n=new Set;for(let r of e)if(!(r===null||n.has(r.adapterSessionId))){if(t.has(r.adapterSessionId)){t.delete(r.adapterSessionId),n.add(r.adapterSessionId);continue}t.set(r.adapterSessionId,r.sessionId)}return t}function Tr(e){return[...e].map(e=>{let t=yr(e);return{id:e,pattern:RegExp(`(^|${vr})${t}($|${vr})`)}})}async function Er(e,t,n){let{children:r}=await e.request(o.getChildren,{sessionId:n}),i=r.filter(e=>e.branchKind===`compress`);if(i.length===0)return;let{session:a}=await e.request(o.get,{sessionId:t}),s=a?.adapterSessionId;if(!s)return;let c=Tr(new Set([s])),l=(await Promise.all(i.map(async t=>{let n=await xr(e,t.sessionId),r=Sr(n);if(r.length===0)return null;let i=Cr(n,c);if(i.size===0)return null;let a=[...i.entries()].filter(([,e])=>e===s);if(a.length!==1)return null;let[o]=a[0];return r.some(e=>e.toolCallId===o)?{parentSessionId:t.sessionId,toolCallId:o}:null}))).filter(e=>e!==null);l.length===1&&await e.request(o.update,{sessionId:t,parentSessionId:l[0].parentSessionId,spawningToolCallId:l[0].toolCallId})}async function Dr(e,t,n){let r=t.parentExternalSessionId,i=t.source??n;if(!r||!i)return;let a=t.sessionId,{session:s}=await e.request(o.getByAdapterSessionId,{adapterSessionId:r,source:i}),c=s?.sessionId;if(!c)return;let{children:l}=await e.request(o.getChildren,{sessionId:c}),u=await Or(e,l);if(u.size===0)return;let d=await xr(e,a),f=Sr(d);if(f.length===0)return;let p=Cr(d,Tr(new Set(u.keys()))),m=new Map;for(let e of f){let t=p.get(e.toolCallId);t!==void 0&&m.set(t,(m.get(t)??0)+1)}let h=new Map;for(let e of f){let t=p.get(e.toolCallId),n=t===void 0?void 0:u.get(t);n!==void 0&&t!==void 0&&m.get(t)===1&&h.set(n,e.toolCallId)}if(h.size===0)return;let g=[...h].map(async([t,n])=>{try{await e.request(o.update,{sessionId:t,parentSessionId:a,spawningToolCallId:n})}catch(e){console.error(`[CompressLineageResolver] Failed to re-parent subagent`,{compressChildSessionId:a,parentMakaioSessionId:c,childSessionId:t,toolCallId:n,error:e})}});await Promise.allSettled(g)}async function Or(e,t){return wr(await Promise.all(t.filter(e=>e.branchKind===`subagent`).map(async t=>{let{session:n}=await e.request(o.get,{sessionId:t.sessionId});return n?.adapterSessionId?{sessionId:t.sessionId,adapterSessionId:n.adapterSessionId}:null})))}function kr(e){return e.on(D.import.completed,async t=>{try{let{sessionId:n,source:r}=t.payload,{session:i}=await e.request(o.get,{sessionId:n});if(!i)return;if(i.branchKind===`subagent`&&i.parentSessionId!==void 0){await Er(e,n,i.parentSessionId);return}if(i.branchKind!==`compress`)return;await Dr(e,i,r)}catch(e){console.error(`[CompressLineageResolver] Failed to resolve compress lineage`,{payload:t.payload,error:e})}})}function Ar(e){return[...e].map(e=>{let t=yr(e);return{id:e,pattern:RegExp(`(^|${vr})${t}($|${vr})`)}})}async function jr(e,t,n){return wr(await Promise.all(n.filter(e=>e.branchKind===`subagent`&&e.spawningToolCallId===void 0).map(async n=>{let{session:r}=await e.request(o.get,{sessionId:n.sessionId}),i=r?.source??r?.adapterName;return r?.adapterSessionId&&i===t?{sessionId:n.sessionId,adapterSessionId:r.adapterSessionId}:null})))}function Mr(e){return e.on(D.import.completed,async t=>{try{let{sessionId:n,source:r}=t.payload,{children:i}=await e.request(o.getChildren,{sessionId:n}),a=await jr(e,r,i),s=new Set(a.keys());if(s.size===0)return;let c=await xr(e,n),l=Sr(c);if(l.length===0)return;let u=Cr(c,Ar(s)),d=new Map;for(let e of l){let t=u.get(e.toolCallId);t!==void 0&&d.set(t,(d.get(t)??0)+1)}let f=new Map;for(let e of l){let t=u.get(e.toolCallId),n=t===void 0?void 0:a.get(t);n!==void 0&&t!==void 0&&d.get(t)===1&&f.set(n,e.toolCallId)}let p=[...f].map(async([t,r])=>{try{let{session:n}=await e.request(o.get,{sessionId:t});if(n?.spawningToolCallId!==void 0)return;await e.request(o.update,{sessionId:t,spawningToolCallId:r})}catch(e){console.error(`Failed to persist spawning tool call correlation`,{parentSessionId:n,childSessionId:t,toolCallId:r,error:e})}});await Promise.allSettled(p)}catch(e){console.error(`Failed to backfill spawningToolCallId for imported session`,{payload:t.payload,error:e})}})}function Nr(e){return e.on(T.session.discovered,async t=>{let n=ce.safeParse(t.payload);if(!n.success)throw console.error(`[registerSessionDiscoveredHandler] Invalid adapter.session.discovered payload`,{issues:n.error.issues}),n.error;let{adapterId:r,adapterSessionId:i,adapterName:a,cwd:s,title:c,logFilePath:l,startedAt:u,kind:d,parentAdapterSessionId:f,forkPointMessageId:p}=n.data,m=Wt({kind:d,parentAdapterSessionId:f??null,forkPointMessageId:p??null});await e.request(o.importUpsert,{externalSessionId:i,source:a,adapterId:r,cwd:s??null,...c===void 0?{}:{title:c},...l===void 0?{}:{logFilePath:l},...u===void 0?{}:{startedAt:u},...m})})}var Pr=class{bus;agentStates=new Map;sessionStates=new Map;unsubscribe;staleThresholdMs;constructor(e,t){this.bus=e,this.staleThresholdMs=t?.staleThresholdMs??36e5}start(){this.unsubscribe||=this.bus.on(E.contextWindow.updated,e=>{let{agentId:t,sessionId:n,currentTokens:r,maxTokens:i,percentage:a,level:o,cachedTokens:s}=e.payload;if(!n)return;let c={agentId:t,sessionId:n,currentTokens:r,maxTokens:i,percentage:a,level:o,cachedTokens:s,updatedAt:Date.now()};this.agentStates.set(t,c),this.recomputeSessionState(n)})}stop(){this.unsubscribe?.(),this.unsubscribe=void 0,this.agentStates.clear(),this.sessionStates.clear()}getSessionState(e){return this.sessionStates.get(e)}clearSession(e){this.sessionStates.delete(e);for(let[t,n]of this.agentStates)n.sessionId===e&&this.agentStates.delete(t)}recomputeSessionState(e){let t=Date.now(),n;for(let[r,i]of this.agentStates){if(t-i.updatedAt>this.staleThresholdMs){this.agentStates.delete(r);continue}i.sessionId===e&&(!n||i.percentage>n.percentage)&&(n=i)}n&&this.sessionStates.set(e,{currentTokens:n.currentTokens,maxTokens:n.maxTokens,percentage:n.percentage,level:n.level,worstAgentId:n.agentId,lastUpdatedAt:n.updatedAt})}};export{Lt as A,yt as B,W as C,Bt as D,Ht as E,Mt as F,ze as G,it as H,At as I,je as K,Ot as L,It as M,Pt as N,zt as O,Nt as P,V as R,dn as S,Vt as T,qe as U,gt as V,Ve as W,tr as _,gr as a,X as b,$ as c,ir as d,or as f,rr as g,sr as h,kr as i,Ft as j,Rt as k,pr as l,cr as m,Nr as n,hr as o,ar as p,Mr as r,mr as s,Pr as t,fr as u,On as v,Wt as w,wn as x,Dn as y,B as z};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{A as e,F as t,G as n,H as r,N as i,P as a,U as ee,at as o,it as s,j as c,rt as l,tt as te,y as u}from"./schemas-CaLhkkLn.mjs";import{t as d}from"./schemas-hSrzflwZ.mjs";import{i as f}from"./account-identity-DT5NOtFi.mjs";import{CompressSessionLineageSchema as p,ForkSessionLineageSchema as m,RootSessionLineageSchema as h,SubagentSessionLineageSchema as g}from"./contracts/adapter/schemas/session-lineage.mjs";import{t as _}from"./storage-namespace-definition-CqSdsuCC.mjs";import{z as v}from"zod";import{createBusNamespace as y}from"@makaio/framework/core";const b=y(`session`,u),x=b.subjects;function S(e){return c.includes(e.type)}const C=`ui-warnings`,w=`connector-swap-warning-suppressed`,T=1440*60*1e3,E={cancel:`cancel`,edit:`edit`,continue:`continue`},D=`CONNECTOR_SWAP_CANCELLED`;var O=class extends Error{code=D;constructor(){super(`Connector swap cancelled by user`),this.name=`ConnectorSwapCancelledError`}};function k(e){return e instanceof O||e instanceof Error&&`code`in e&&e.code===`CONNECTOR_SWAP_CANCELLED`}const A={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 j(e){return e!=null&&A[e].staysInView}function M(e){return e==null||A[e].navigatesToChild}function N(e){return e!=null&&A[e].canMergeBack}function P(e){return A[e]}const F=v.object({timestamp:v.number(),messageId:v.string()}),I=_(`message`,{schemas:{append:{request:v.object({message:n.omit({messageId:!0}).extend({messageId:v.string().optional()}),emitEvent:v.boolean().optional()}),response:v.object({message:n})},getBySession:{request:v.object({sessionId:v.string(),limit:v.number().int().min(1).optional(),after:F.optional(),includeAfter:v.boolean().optional(),order:v.enum([`asc`,`desc`]).optional()}),response:v.object({messages:v.array(n),nextCursor:F.nullable()})},getByTurn:{request:v.object({turnId:v.string()}),response:v.object({messages:v.array(n)})},get:{request:v.object({messageId:v.string()}),response:v.object({message:n.nullable()})},getByAdapterMessageId:{request:v.object({adapterMessageId:v.string()}),response:v.object({message:n.nullable()})},search:{request:v.object({query:v.string(),sessionId:v.string().optional(),limit:v.number().int().min(1).optional()}),response:v.object({messages:v.array(n),total:v.number()})},ftsSearch:{request:v.object({query:v.string(),sessionId:v.string().optional(),limit:v.number().int().min(1).optional().default(20)}),response:v.object({results:v.array(v.object({messageId:v.string(),sessionId:v.string(),score:v.number(),excerpt:v.string()})),total:v.number()})},upsertByAdapterMessageId:{request:v.object({sessionId:v.string(),turnId:v.string().nullable(),adapterMessageId:v.string(),role:v.enum([`user`,`assistant`]),contentText:v.string(),blocks:v.array(r),agentId:v.string().optional(),adapterSessionId:v.string().optional(),timestamp:v.number(),origin:ee.optional()}),response:v.object({messageId:v.string(),created:v.boolean()})},stored:v.object({message:n})}}),L=I.subjects;function R(e,t){return e.timestamp===t.timestamp?e.messageId.localeCompare(t.messageId):e.timestamp-t.timestamp}function z(e,t){return R(t,e)}function B(e){return{timestamp:e.timestamp,messageId:e.messageId}}function V(e){return`${e.timestamp}:${e.messageId}`}const H=v.object({after:v.string().optional(),limit:v.number().int().min(1).optional(),types:v.array(v.string()).optional(),includeReasoning:v.boolean().optional(),order:v.enum([`asc`,`desc`]).optional()}),U=v.object({events:v.array(e),nextCursor:v.string().nullable(),totalCount:v.number().optional()}),W=_(`sessionEvent`,{schemas:{append:{request:v.object({event:e}),response:v.object({success:v.boolean()})},getEvents:{request:v.object({sessionId:v.string(),options:H.optional()}),response:U},getByIds:{request:v.object({sessionId:v.string(),eventIds:v.array(v.string())}),response:v.object({events:v.array(e)})},deleteBySession:{request:v.object({sessionId:v.string()}),response:v.object({success:v.boolean(),deletedCount:v.number().optional()})},getEventsBySessions:{request:v.object({sessionIds:v.array(v.string()),types:v.array(v.string()),limitPerSession:v.number().int().min(1).optional()}),response:v.object({eventsBySession:v.record(v.string(),v.array(e))})}}}),G=W.subjects,K=i.extend({preview:a});function q(e,t){e.clientAccountId!==void 0&&e.lastClientIdentityObservation===void 0&&t.addIssue({code:v.ZodIssueCode.custom,path:[`lastClientIdentityObservation`],message:`lastClientIdentityObservation is required when clientAccountId is provided`}),e.clientAccountId!==void 0&&e.clientId===void 0&&t.addIssue({code:v.ZodIssueCode.custom,path:[`clientId`],message:`clientId is required when clientAccountId is provided`})}const J=i.superRefine((e,t)=>{q(e,t)}),Y=v.object({sessionId:v.string(),session:J,ifAbsent:v.boolean().optional()}).superRefine((e,t)=>{e.sessionId!==e.session.sessionId&&t.addIssue({code:v.ZodIssueCode.custom,path:[`session`,`sessionId`],message:`session.sessionId must match the top-level sessionId`})}),X={request:v.object({sessionId:v.string(),status:v.enum([`active`,`closed`,`archived`,`discovered`]).optional(),parentSessionId:v.string().optional(),contextInheritance:o.optional(),rootSessionId:v.string().optional(),forkPointMessageId:v.string().optional(),branchKind:l.optional(),isOrchestrated:v.boolean().optional(),clientId:v.string().optional(),clientAccountId:v.string().optional(),lastClientIdentityObservation:f.optional(),executionTargetId:v.string().nullable().optional(),approvalPolicyOverride:d.nullable().optional(),title:v.string().optional(),targetWorkingDirectory:v.string().optional(),createdAt:v.number().finite().optional(),lastActivityAt:v.number().finite().optional(),spawningToolCallId:v.string().nullable().optional()}),response:v.object({success:v.boolean(),clientAccountChanged:v.boolean().optional()})},Z=v.object({externalSessionId:v.string(),source:v.string(),clientId:v.string().optional(),adapterId:v.string().optional(),cwd:v.string().nullable(),logFilePath:v.string().nullable().optional(),startedAt:v.number().finite().optional(),title:v.string().nullable().optional()}),Q=v.discriminatedUnion(`kind`,[Z.merge(h),Z.merge(m),Z.merge(g),Z.merge(p)]),$=_(`session`,{schemas:{get:{request:v.object({sessionId:v.string()}),response:v.object({session:i.nullable()})},set:{request:Y,response:v.object({success:v.boolean(),clientAccountChanged:v.boolean().optional()})},delete:{request:v.object({sessionId:v.string()}),response:v.object({success:v.boolean()})},list:{request:v.object({status:v.enum([`active`,`closed`,`archived`,`discovered`,`all`]).optional(),limit:v.number().int().min(1).optional(),offset:v.number().int().min(0).optional(),includePreview:v.boolean().optional(),executionTargetId:v.string().optional()}),response:v.object({sessions:v.array(t),total:v.number()})},getChildren:{request:v.object({sessionId:v.string()}),response:v.object({children:v.array(te)})},search:{request:v.object({query:v.string(),limit:v.number().int().min(1).optional(),status:v.enum([`active`,`closed`,`archived`,`discovered`,`all`]).optional(),isImported:v.boolean().optional()}),response:v.object({sessions:v.array(K),total:v.number()})},update:X,getByAdapterSessionId:{request:v.object({adapterSessionId:v.string(),source:v.string().optional()}),response:v.object({session:i.nullable()})},getStatusCounts:{request:v.object({}),response:v.object({all:v.number(),active:v.number(),closed:v.number(),archived:v.number(),discovered:v.number()})},importUpsert:{request:Q,response:v.object({sessionId:v.string(),created:v.boolean()})},getByLogFilePath:{request:v.object({logFilePath:v.string()}),response:v.object({session:i.nullable()})},listImported:{request:v.object({source:v.string().optional(),importStatus:s.optional()}),response:v.object({sessions:v.array(i)})},countBySource:{request:v.object({source:v.string()}),response:v.object({total:v.number(),imported:v.number(),discovered:v.number(),tracking:v.number()})},updateImportStatus:{request:v.object({sessionId:v.string(),importStatus:s}),response:v.object({success:v.boolean()})}}}),ne=$.subjects;export{w as C,b as D,S as E,x as O,E as S,C as T,N as _,X as a,O as b,R as c,B as d,F as f,j as g,P as h,ne as i,z as l,L as m,Y as n,W as o,I as p,J as r,G as s,$ as t,V as u,M as v,T as w,k as x,D as y};
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
|
|
3
|
+
//#region core/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{r as e}from"./json-value-CmhSGMLv.mjs";import"./ui-config-9bDRwFZr.mjs";import{z as t}from"zod";const n=t.string().max(64).regex(/^[a-zA-Z0-9_-]+$/),r=t.object({schema:e,name:n.optional(),strict:t.boolean().optional()}).strict(),i=t.object({message:t.string(),instancePath:t.string(),schemaPath:t.string()}).strict(),a=t.enum([`passed`,`failed`,`enforced`]),o=t.discriminatedUnion(`status`,[t.object({status:t.literal(`passed`)}).strict(),t.object({status:t.literal(`enforced`)}).strict(),t.object({status:t.literal(`failed`),errors:t.array(i).min(1)}).strict()]),s=t.discriminatedUnion(`type`,[t.object({type:t.literal(`base64`),data:t.string(),mimeType:t.string()}),t.object({type:t.literal(`url`),url:t.string(),mimeType:t.string().optional()})]),c=t.enum([`file`,`directory`]),l=t.discriminatedUnion(`type`,[t.object({type:t.literal(`text`),content:t.string()}),t.object({type:t.literal(`image`),source:s}),t.object({type:t.literal(`document`),source:s}),t.object({type:t.literal(`attachment`),fileName:t.string(),filePath:t.string(),source:s,displayName:t.string().optional(),attachmentType:c}),t.object({type:t.literal(`reasoning`),content:t.string(),metadata:t.record(t.string(),t.unknown()).optional()}),t.object({type:t.literal(`tool_call`),toolCallId:t.string(),name:t.string(),args:t.record(t.string(),t.unknown())}),t.object({type:t.literal(`tool_output`),toolCallId:t.string(),output:t.string(),isError:t.boolean().optional()})]),u=t.enum([`user`,`assistant`,`system`]),d=t.object({role:u.optional(),blocks:t.union([l,t.array(l)])}),f=t.union([t.string(),d]),p=t.object({message:t.string().optional()}),m=t.enum([`completed`,`superseded`,`merged`,`cancelled`,`error`,`rejected`]),h=t.object({messageId:t.string(),result:p.optional(),error:t.string().optional(),outcome:m}),g=t.enum([`enqueue`,`immediate`,`replace`]),_=t.union([t.string(),t.object({mode:t.literal(`append`),content:t.string()})]),v=t.object({role:t.enum([`user`,`assistant`,`system`]),blocks:t.array(l),message:t.string().optional()}),y=[`rate_limit`,`auth`,`model_unavailable`,`quota_exceeded`],b=t.enum(y);export{a as _,g as a,d as c,h as d,_ as f,o as g,i as h,l as i,v as l,n as m,y as n,f as o,r as p,b as r,m as s,s as t,p as u};
|
|
@@ -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-CqSdsuCC.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-dyP-bXXE.mjs";
|
|
2
|
+
|
|
3
|
+
//#region 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";async function r(e={}){let{url:t=`file:./makaio.db`,authToken:r}=e;return n()&&i(t)?s(t):c(t,r)}function i(e){return e.startsWith(`file:`)||e===`:memory:`}const a=[`PRAGMA journal_mode = WAL`,`PRAGMA busy_timeout = 5000`,`PRAGMA foreign_keys = ON`],o=[`PRAGMA foreign_keys = ON`];async function s(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 u(n))o.run(t.raw(e));let s=!1;return{db:o,close:()=>{s||(s=!0,a.close())}}}async function c(e,n){let{drizzle:r}=await import(`drizzle-orm/libsql`),a=r({connection:{url:e,authToken:n}});if(i(e))for(let n of u(e))await a.run(t.raw(n));let o=!1;return{db:a,close:()=>{o||(o=!0,a.$client.close())}}}function l(e){return e.startsWith(`file:`)}function u(e){return l(e)?a:o}export{r as createDatabaseClient};
|