@makaio/framework 1.0.0-dev-1783355411417 → 1.0.0-dev-1783477169057
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/.makaio-build.json +2 -2
- package/dist/adapter-Lx6K7yQS.mjs +1 -0
- package/dist/adapter-subsystem/index.mjs +1 -1
- package/dist/adapters/config/index.d.mts +1 -1
- package/dist/adapters/index.d.mts +219 -40
- package/dist/adapters/index.mjs +6 -6
- package/dist/adapters/node.d.mts +1 -1
- package/dist/adapters/node.mjs +4 -4
- package/dist/{base-orchestrator-BNysGvaM.d.mts → base-orchestrator-J1WKAUkF.d.mts} +32 -3
- package/dist/bus/index.d.mts +22 -22
- package/dist/bus/index.mjs +1 -1
- package/dist/client-l1Rq5p6X.mjs +1 -0
- package/dist/clients/index.d.mts +30 -0
- package/dist/clients/index.mjs +2 -2
- package/dist/contracts/adapter/index.d.mts +2 -2
- package/dist/contracts/adapter/index.mjs +1 -1
- package/dist/contracts/adapter/schemas/session-lineage.d.mts +1 -1
- package/dist/contracts/adapter/schemas/session-lineage.mjs +1 -1
- package/dist/contracts/artifact/index.d.mts +1 -1
- package/dist/contracts/canonical-model/index.d.mts +1 -1
- package/dist/contracts/client/index.d.mts +2 -2
- package/dist/contracts/client/index.mjs +1 -1
- package/dist/contracts/config/index.d.mts +12 -12
- package/dist/contracts/extension/index.d.mts +3 -3
- package/dist/contracts/facet/index.d.mts +1 -1
- package/dist/contracts/harness/index.d.mts +1 -1
- package/dist/contracts/index.d.mts +454 -276
- package/dist/contracts/index.mjs +1 -1
- package/dist/contracts/materialization/index.d.mts +3 -3
- package/dist/contracts/provider/index.d.mts +1 -1
- package/dist/contracts/session/index.d.mts +3 -3
- package/dist/contracts/session/index.mjs +1 -1
- package/dist/contracts/shared/index.d.mts +1 -1
- package/dist/contracts/skill/index.d.mts +1 -1
- package/dist/contracts/variant/index.d.mts +1 -1
- package/dist/contracts/workflow/index.d.mts +2 -2
- package/dist/{definition-b9jyJqPD.d.mts → definition-DePb3ke-.d.mts} +1 -1
- package/dist/drizzle/0023_m_mr9gc37m.sql +1 -0
- package/dist/drizzle/meta/_journal.json +7 -0
- package/dist/handlers-B74FvKlA.mjs +57 -0
- package/dist/hooks/index.d.mts +19 -2
- package/dist/{identity-BarL3JYI.mjs → identity-DC3Pk0ps.mjs} +1 -1
- package/dist/{index-BwGfdbI0.d.mts → index-2fK9iSHI.d.mts} +9 -9
- package/dist/{index-D7rWAEY0.d.mts → index-B-6DtLLz.d.mts} +1 -1
- package/dist/{index-4eP9DRL_.d.mts → index-B3fjN5HX.d.mts} +7 -7
- package/dist/{index-O08Q2ikz.d.mts → index-BMbmoarE.d.mts} +8 -8
- package/dist/{index-DV4nRk0h.d.mts → index-BX1MxwFr.d.mts} +28 -28
- package/dist/{index-CqCe7Phc.d.mts → index-BcwOnvUh.d.mts} +6 -6
- package/dist/{index-D6aAzr32.d.mts → index-BeouVICp.d.mts} +36 -36
- package/dist/{index-DQYj8-53.d.mts → index-BjO4Zkap.d.mts} +1 -1
- package/dist/{index-B5w-0Gg9.d.mts → index-Bl42SCEI.d.mts} +8 -8
- package/dist/{index-BYfSAJRC.d.mts → index-BvTd61i5.d.mts} +151 -29
- package/dist/{index-3X0368CL.d.mts → index-CA-AJbq6.d.mts} +4 -4
- package/dist/{index-C5C1tk9f.d.mts → index-CQQcnpev.d.mts} +41 -41
- package/dist/{index-BKZhnb2B.d.mts → index-C_xQM96Y.d.mts} +802 -422
- package/dist/{index-31vR1sxk.d.mts → index-CwFSL4xI.d.mts} +144 -21
- package/dist/{index-WHUV7neB.d.mts → index-DMz-2ACU.d.mts} +105 -105
- package/dist/{index-3J0HZlPH.d.mts → index-DScUb-hF.d.mts} +334 -13
- package/dist/{index-DEzdNQum.d.mts → index-Di84JjS0.d.mts} +2 -2
- package/dist/{index-DvHYpi-J.d.mts → index-Dv4oGVZK.d.mts} +1246 -397
- package/dist/{index-CaerrEDH.d.mts → index-NkNbYFud.d.mts} +1 -1
- package/dist/{index-D9-vOJvZ.d.mts → index-h5go5Dtd.d.mts} +1 -1
- package/dist/{index-DLNRgZPo2.d.mts → index-j_X5xefv2.d.mts} +26 -26
- package/dist/{index-C6Ys8pxt.d.mts → index-uM4KZopE.d.mts} +9 -9
- package/dist/kernel/extension/index.d.mts +1 -1
- package/dist/kernel/index.d.mts +2 -2
- package/dist/kernel/observability/index.d.mts +1 -1
- package/dist/{namespace-j7vFsmYL.d.mts → namespace-3yGm4WF9.d.mts} +2 -2
- package/dist/{namespace-D8P8Sxce2.d.mts → namespace-6sIu5nBI2.d.mts} +2 -2
- package/dist/{namespace-B3ol3pc-.d.mts → namespace-BigVYQyx.d.mts} +12 -0
- package/dist/{namespace-DmqoDDRD.d.mts → namespace-Boh42UoL.d.mts} +66 -22
- package/dist/{namespace-CfvtDD_U.d.mts → namespace-COEUMuHL.d.mts} +156 -156
- package/dist/{namespace-B4cV_pk3.d.mts → namespace-D94HrTtq.d.mts} +58 -58
- package/dist/{namespace-DhDY0juT.d.mts → namespace-OLAh9wHU.d.mts} +375 -27
- package/dist/{namespace-Bm77p82L.d.mts → namespace-TPbegIMi.d.mts} +27 -27
- package/dist/{package-MmQvNJ3u.d.mts → package-B6mEMD8r.d.mts} +5 -0
- package/dist/{package-BmRhhi-3.mjs → package-BQn_RTo7.mjs} +1 -1
- package/dist/package.json +1 -1
- package/dist/{schema-DLNBajAV.d.mts → schema-B5vHi7Uu.d.mts} +28 -1
- package/dist/{schemas-CoFCV42v.d.mts → schemas-CDBn9MTz.d.mts} +156 -156
- package/dist/schemas-CkOigLAT.mjs +1 -0
- package/dist/{schemas-lnE9YoG7.d.mts → schemas-CscdPqCt.d.mts} +3 -3
- package/dist/{schemas-DMMWmWjq.d.mts → schemas-D512XweP.d.mts} +4 -4
- package/dist/{schemas-DuuVuhHX2.d.mts → schemas-DOV4UouN2.d.mts} +13 -13
- package/dist/{schemas-DmGRSeIq.d.mts → schemas-t6h9oSct.d.mts} +28 -1
- package/dist/services/adapter-runtime/index.d.mts +4 -4
- package/dist/services/adapter-runtime/index.mjs +1 -1
- package/dist/services/adapter-runtime/namespace.d.mts +1 -1
- package/dist/services/adapter-runtime/schemas.d.mts +2 -2
- package/dist/services/adapter-runtime/schemas.mjs +1 -1
- package/dist/services/adapter-subsystem/index.d.mts +2 -2
- package/dist/services/adapter-subsystem/namespace.d.mts +1 -1
- package/dist/services/agent-runtime/index.d.mts +2 -2
- package/dist/services/agent-runtime/namespace.d.mts +1 -1
- package/dist/services/agent-runtime/schemas.d.mts +1 -1
- package/dist/services/context-rules/index.d.mts +8 -8
- package/dist/services/execution-target/index.d.mts +1 -1
- package/dist/services/filesystem/namespace.d.mts +12 -12
- package/dist/services/filesystem/schemas.d.mts +6 -6
- package/dist/services/git/namespace.d.mts +2 -2
- package/dist/services/git/schemas.d.mts +1 -1
- package/dist/services/harness/index.d.mts +3 -3
- package/dist/services/index.d.mts +147 -140
- package/dist/services/index.mjs +1 -1
- package/dist/services/log-import/browser.d.mts +2 -2
- package/dist/services/log-import/index.d.mts +15 -2
- package/dist/services/log-import/index.mjs +2 -2
- package/dist/services/log-import/log-import.d.mts +1 -1
- package/dist/services/log-import/namespace.d.mts +2 -2
- package/dist/services/log-import/schemas.d.mts +1 -1
- package/dist/services/session/handlers/index.d.mts +1 -1
- package/dist/services/session/handlers/index.mjs +1 -1
- package/dist/services/session/index.d.mts +7 -7
- package/dist/services/session/index.mjs +1 -1
- package/dist/services/session/messages/namespace.d.mts +1 -1
- package/dist/services/session/session-events/namespace.d.mts +1 -1
- package/dist/services/session/storage/namespace.d.mts +1 -1
- package/dist/services/session/storage/schema.d.mts +1 -1
- package/dist/services/session/storage/schema.mjs +1 -1
- package/dist/services/session/testing/index.mjs +3 -2
- package/dist/services/session-editor/index.d.mts +1 -1
- package/dist/services/settings/namespace.d.mts +10 -10
- package/dist/services/settings/storage/extension-configs/namespace.d.mts +3 -3
- package/dist/services/subagent-template/index.d.mts +2 -2
- package/dist/services/subagent-template/namespace.d.mts +1 -1
- package/dist/services/subagent-template/schemas.d.mts +1 -1
- package/dist/services/tool-approval/index.mjs +1 -1
- package/dist/services/tools/index.mjs +1 -1
- package/dist/services/tray-menu/index.d.mts +2 -2
- package/dist/services/tray-menu/namespace.d.mts +1 -1
- package/dist/services/tray-menu/schemas.d.mts +1 -1
- package/dist/session-CoGaTin6.mjs +69 -0
- package/dist/session-Dp7z5N1d.mjs +1 -0
- package/dist/{session-lineage-DR-9DU-U.d.mts → session-lineage-C1M7-O3C.d.mts} +3 -3
- package/dist/{tool-approval-service-MU_DmJsf.mjs → tool-approval-service-BNXgr-az.mjs} +1 -1
- package/dist/tools-BaO4GYj0.mjs +1 -0
- package/dist/{transition-Dq41YCkc.d.mts → transition-Bbjlwv5K.d.mts} +1 -1
- package/dist/{types-BMS6yfLS.d.mts → types-BNW5n6qm.d.mts} +1 -1
- package/dist/{types-BMlzmWp6.d.mts → types-CNkx2awa.d.mts} +12 -1
- package/dist/{types-Cse8s_cD.d.mts → types-D7W0ntGr.d.mts} +45 -18
- package/dist/{types-C76EP81O.d.mts → types-jruUn6oW.d.mts} +694 -282
- package/dist/workflow-engine/index.d.mts +41 -41
- package/dist/workflow-engine/index.mjs +1 -1
- package/dist/workflow-engine/package.d.mts +1 -1
- package/dist/workflow-engine/package.mjs +1 -1
- package/package.json +1 -1
- package/dist/adapter-BRxCc72E.mjs +0 -1
- package/dist/client-BgUjVbXX.mjs +0 -1
- package/dist/handlers-v47Gbsr1.mjs +0 -57
- package/dist/schemas-ftgVeWIG.mjs +0 -1
- package/dist/session-CKWfn3oc.mjs +0 -1
- package/dist/session-DCbJwYEU.mjs +0 -69
- package/dist/tools-BrNm-een.mjs +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{i as e,t}from"./json-value-DmU8ibo_.mjs";import{a as n,s as ee}from"./visibility-Cb62p9bv.mjs";import"./credential-ref-YWQQENEo.mjs";import{c as te,f as r,i as ne,o as i,p as a,r as re,s as ie}from"./shared-BVW-3Dhy.mjs";import{a as o,f as ae,i as oe,n as se,r as ce,t as le,u as ue}from"./compression-C5JAWdgZ.mjs";import{t as s}from"./provider-context-CqMgPOWF.mjs";import{t as c}from"./schemas-XeIBqwvE.mjs";import{r as de}from"./profile-BMBXUqqh.mjs";import{i as l}from"./account-identity-C7Kx_ieU.mjs";import{SessionLineageSchema as fe}from"./contracts/adapter/schemas/session-lineage.mjs";import{z as u}from"zod";import{localSubject as pe,observability as d}from"@makaio/framework/core";const f=u.object({adapterId:u.string(),adapterName:u.string()}),p=u.object({cwd:u.string().optional(),allowedTools:u.array(u.string()).optional(),disallowedTools:u.array(u.string()).optional(),allowedDirectories:u.array(u.string()).optional(),systemPrompt:r.optional()}),me={request:u.object({adapterName:u.string().optional(),adapterId:u.string().optional()}).refine(e=>e.adapterName||e.adapterId,{message:`Either adapterName or adapterId must be provided`}),response:u.object({capabilities:u.array(u.string()),nativeTools:u.array(u.string())})},m=u.enum([`lead`,`member`]),h=u.enum([`fork`,`branch`,`subagent`,`compress`,`rewrite`,`coordinator`,`aside`]),g=u.enum([`parent-history`,`none`]),_=u.enum([`discovered`,`imported`,`tracking`]),v=u.object({sessionId:u.string(),title:u.string().nullable(),forkPointMessageId:u.string().nullable(),branchKind:h.nullable(),messageCount:u.number(),hasChildren:u.boolean(),spawningToolCallId:u.string().optional()}),y=u.object({fromMessageId:u.string(),toMessageId:u.string(),policy:u.enum([`verbatim`,`summarize`,`exclude`]),stripReasoning:u.boolean().optional(),stripToolOutputs:u.boolean().optional(),overrides:u.record(u.string(),u.literal(`exclude`)).optional(),summaryText:u.string().optional()}),b=u.object({removedMessageIds:u.array(u.string()).optional(),appliedPipeline:u.array(u.object({actionId:u.string(),options:u.record(u.string(),u.unknown()).optional()})).optional(),segments:u.array(y).optional()}),he=u.object({parentSessionId:u.string(),childSessionId:u.string(),summary:u.string().optional(),source:u.enum([`extension`,`user`,`system`]).optional(),extensionId:u.string().optional()}),ge=u.object({success:u.boolean(),handoff:u.string().optional()}),_e=u.object({parentSessionId:u.string(),childSessionId:u.string(),source:u.enum([`extension`,`user`,`system`]).optional(),extensionId:u.string().optional()}),ve=u.object({success:u.boolean()}),ye=u.object({sessionId:u.string()}),be=u.object({children:u.array(v)}),xe=u.object({parentSessionId:u.string(),childSessionId:u.string(),reason:u.string()}),Se=u.object({parentSessionId:u.string(),childSessionId:u.string(),forkPoint:u.string().optional()}),Ce=u.object({parentSessionId:u.string(),childSessionId:u.string()}),we=u.object({parentSessionId:u.string(),childSessionId:u.string(),handoff:u.string()}),Te=u.object({sessionId:u.string(),parentSessionId:u.string().optional()}),Ee=u.object({parentSessionId:u.string(),childSessionId:u.string(),result:u.unknown()}),De=u.object({sessionId:u.string(),reason:u.string(),source:u.enum([`extension`,`user`,`system`]).optional(),extensionId:u.string().optional()}),Oe=u.object({sessionId:u.string(),pipeline:u.array(u.object({actionId:u.string(),options:u.record(u.string(),u.unknown()).optional()}))}),ke=u.object({eventId:u.string(),contextJson:u.record(u.string(),u.unknown()),tokensBefore:u.number(),tokensAfter:u.number().optional()}),Ae=u.object({sessionId:u.string(),childSessionId:u.string(),parentSessionId:u.string(),kind:h,forkPointMessageId:u.string().optional(),transforms:b.optional()}),je=u.object({sessionId:u.string(),childSessionId:u.string(),parentSessionId:u.string(),resultJson:u.string().optional(),resultMessageId:u.string().optional()}),Me=u.object({sessionId:u.string(),summaryJson:u.string(),tokensBefore:u.number().optional(),tokensAfter:u.number().optional(),compressedMessageIds:u.array(u.string()).optional()}),x=u.object({sessionId:u.string(),parentSessionId:u.string().nullable(),branchKind:h.nullable(),createdAt:u.number(),originWindowId:u.string().optional()}),Ne=u.object({sessionId:u.string(),changedProperties:u.array(u.string())}),Pe={merge:{request:he,response:ge},abandon:{request:_e,response:ve},getChildren:{request:ye,response:be},forking:xe,forked:Se,merging:Ce,merged:we,abandoned:Te,childCompleted:Ee,compressionRequested:De,"branch.created":Ae,"branch.merged":je,squash:Me,created:x,updated:Ne,compress:{request:Oe,response:ke}},Fe=[`auto`,`systemPrompt`,`fullPrefix`],S=u.object({messageHistory:u.array(te).optional(),hasNewTransforms:u.boolean().optional(),hasCompression:u.boolean().optional(),extractedContext:u.unknown().optional(),isFirstTurn:u.boolean().optional(),hasConnectorSwap:u.boolean().optional(),cacheStrategy:u.enum(Fe).optional(),turnContext:u.record(u.string(),e).optional()}),C=ne,w=u.enum([`user`,`assistant`]),T=u.enum([`voice`,`text`,`compact`]),E=u.object({messageId:u.string(),turnId:u.string().nullable(),sessionId:u.string(),role:w,contentText:u.string(),blocks:u.array(C),agentId:u.string().optional(),adapterSessionId:u.string().optional(),adapterMessageId:u.string().optional(),timestamp:u.number(),editOf:u.string().optional(),origin:T.optional()}),D=u.enum([`active`,`completed`,`error`]),O=u.object({inputTokens:u.number(),outputTokens:u.number(),cost:u.number().optional()}),k=u.object({total:O,byAgent:u.record(u.string(),O).optional()}),A=u.object({source:u.enum([`user`,`extension`,`system`]),sourceId:u.string().optional()}),j=u.object({turnId:u.string(),sessionId:u.string(),turnNumber:u.number().int().min(1),startedAt:u.number(),completedAt:u.number().optional(),status:D,error:u.string().optional(),usage:k.optional(),initiator:A.optional()}),M=u.enum([`sent`,`acknowledged`,`completed`]),Ie=u.object({messageId:u.string(),agentId:u.string(),status:M,timestamp:u.number(),error:u.string().optional()}),N=u.enum([`idle`,`active`,`dead`,`disposed`]),P=u.object({agentId:u.string(),adapterId:u.string(),adapterName:u.string(),sessionId:u.string(),adapterSessionId:u.string().optional(),model:u.string().optional(),cwd:u.string().optional(),allowedDirectories:u.array(u.string()).optional(),providerConfigId:u.string().optional(),personaId:u.string().optional(),profileId:u.string().optional(),harnessId:u.string().optional(),clientId:u.string().optional(),compressionMode:le.optional(),role:m,status:N,createdAt:u.number(),lastActivityAt:u.number()}),F=u.record(u.string(),e),I=u.object({sessionId:u.string(),createdAt:u.number(),lastActivityAt:u.number(),agents:u.array(P),status:u.enum([`active`,`closed`,`archived`,`discovered`]),leadAgentId:u.string().optional(),parentSessionId:u.string().optional(),contextInheritance:g.optional(),rootSessionId:u.string().optional(),forkPointMessageId:u.string().optional(),branchKind:h.optional(),adapterName:u.string().optional(),adapterSessionId:u.string().optional(),adapterId:u.string().optional(),clientId:u.string().optional(),clientAccountId:u.string().optional(),lastClientIdentityObservation:l.optional(),isOrchestrated:u.boolean().optional(),title:u.string().optional(),summary:u.string().optional(),summaryUpdatedAt:u.number().optional(),isImported:u.boolean().optional(),forkTransforms:b.optional(),targetWorkingDirectory:u.string().optional(),executionTargetId:u.string().optional(),spawningToolCallId:u.string().optional(),approvalPolicyOverride:c.nullable().optional(),metadata:F.optional(),source:u.string().optional(),parentExternalSessionId:u.string().optional(),logFilePath:u.string().optional(),discoveredAt:u.number().optional(),importStatus:_.optional(),isSidechain:u.boolean().optional()}),L=u.object({messageCount:u.number(),firstUserMessage:u.string().nullable()}),R=I.extend({preview:L.optional()}),z=u.enum([`live`,`backfill`]),B=u.object({sessionId:u.string(),turnId:u.string(),turnNumber:u.number().int().min(1)}),V=B.extend({messageId:u.string()}),H=B.extend({success:u.boolean(),error:u.string().optional(),usage:k.optional(),initiator:A.optional(),ingestionMarker:z.optional()}),Le=oe.safeExtend({kind:u.string().regex(/^(?!(?:adapter|canonical-model)$).+$/)}),Re=u.union([ce,se,Le]),ze=ce.extend({providerContext:s.optional()}),Be=u.object({sessionId:u.string(),agent:ze,initialMessage:i.optional(),role:u.enum([`lead`,`member`]).optional()}),Ve=u.object({agentId:u.string(),adapterSessionId:u.string(),role:u.enum([`lead`,`member`]),messageId:u.string().optional(),turnId:u.string().optional()}),U={sendMessage:{request:u.object({sessionId:u.string(),message:i,agent:Re.optional(),agentIds:u.union([u.array(u.string()),u.literal(`all`)]).optional(),deliveryMode:u.enum([`enqueue`]).optional(),turnId:u.string().optional(),sessionContext:S.optional(),responseSchema:a.optional(),source:u.enum([`extension`,`user`,`system`]).optional(),extensionId:u.string().optional(),originWindowId:u.string().optional(),skipConnectorSwapWarning:u.boolean().optional(),origin:T.optional()}),response:u.object({messageId:u.string(),turnId:u.string(),sessionId:u.string()})},"agent.attach":{request:u.object({sessionId:u.string(),agent:o,initialMessage:i.optional(),role:u.enum([`lead`,`member`]).optional()}),response:u.object({agentId:u.string(),adapterSessionId:u.string(),role:u.enum([`lead`,`member`]),messageId:u.string().optional(),turnId:u.string().optional()})},"agent.attachResolved":pe({request:Be,response:Ve}),"turn.started":B.extend({messageId:u.string(),agentIds:u.array(u.string()),initiator:A.optional(),ingestionMarker:z.optional()}),"turn.completed":H,"turn.await":{request:u.object({sessionId:u.string(),turnId:u.string(),timeoutMs:u.number().int().positive()}),response:u.object({completion:H})},"user_message.sent":V.extend({content:i,agentIds:u.array(u.string()),source:u.enum([`extension`,`user`,`system`]).optional(),origin:T.optional()}),"user_message.acknowledged":V.extend({agentId:u.string()}),"user_message.completed":V.extend({agentId:u.string(),outcome:ie,supersededBy:u.string().optional(),mergedInto:u.string().optional(),error:u.string().optional()}),fork:{request:u.object({sourceSessionId:u.string(),fromMessageId:u.string().optional(),name:u.string().optional(),branchKind:u.enum([`fork`,`branch`,`aside`]).optional(),transforms:b.optional(),targetWorkingDirectory:u.string().optional(),metadata:F.optional(),existingSessionId:u.string().optional()}),response:u.object({sessionId:u.string()})}},He=u.discriminatedUnion(`success`,[u.object({agentId:u.string(),adapterId:u.string(),success:u.literal(!0)}),u.object({agentId:u.string(),adapterId:u.string(),success:u.literal(!1),error:u.string()})]),W=u.object({sessionId:u.string().optional(),parentSessionId:u.string().optional(),contextInheritance:g.optional(),forkPointMessageId:u.string().optional(),branchKind:h.optional(),forkTransforms:b.optional(),title:u.string().optional(),targetWorkingDirectory:u.string().optional(),executionTargetId:u.string().optional(),metadata:F.optional(),spawningToolCallId:u.string().optional(),originWindowId:u.string().optional()});function Ue(e,t){e.spawningToolCallId&&e.branchKind!==`subagent`&&t.addIssue({code:u.ZodIssueCode.custom,path:[`spawningToolCallId`],message:`spawningToolCallId is only valid for subagent sessions`})}const We={list:{request:d.schema(u.object({status:u.enum([`active`,`closed`,`archived`,`discovered`,`all`]).optional(),limit:u.number().int().min(1).optional(),offset:d.hidden(u.number().int().min(0).optional()),includePreview:u.boolean().optional(),executionTargetId:u.string().optional()}),{traceAll:!0}),response:u.object({sessions:u.array(R),total:u.number()})},search:{request:u.object({query:u.string(),limit:u.number().int().min(1).optional(),status:u.enum([`active`,`closed`,`archived`,`discovered`,`all`]).optional(),isImported:u.boolean().optional()}),response:u.object({sessions:u.array(R),total:u.number()})},get:{request:u.object({sessionId:u.string()}),response:u.object({session:I.nullable()})},create:{request:W.superRefine(Ue),response:u.object({sessionId:u.string()})},close:{request:u.object({sessionId:u.string()}),response:u.object({success:u.boolean()})},resume:{request:u.object({sessionId:u.string()}),response:u.object({success:u.boolean()})},restartAgents:{request:u.object({sessionId:u.string()}),response:u.object({sessionId:u.string(),results:u.array(He)})},archive:{request:u.object({sessionId:u.string()}),response:u.object({success:u.boolean()})},purge:{request:u.object({sessionId:u.string()}),response:u.object({success:u.boolean(),eventsDeleted:u.number().optional(),error:u.string().optional()})},update:{request:u.object({sessionId:u.string(),executionTargetId:u.string().nullable().optional(),approvalPolicyOverride:c.nullable().optional(),title:u.string().optional(),metadata:F.nullable().optional()}),response:u.object({success:u.boolean()})},getByAdapterSessionId:{request:u.object({adapterSessionId:u.string()}),response:u.object({session:I.nullable()})},getStatusCounts:{request:u.object({}),response:u.object({all:u.number(),active:u.number(),closed:u.number(),archived:u.number(),discovered:u.number()})}},G=u.object({sessionId:u.string(),eventId:u.string(),timestamp:u.number()}),Ge=u.discriminatedUnion(`type`,[G.extend({type:u.literal(`agent.added`),payload:u.object({sessionId:u.string(),adapterSessionId:u.string(),agentId:u.string(),adapterId:u.string(),adapterName:u.string(),role:u.enum([`lead`,`member`]).optional(),model:u.string().optional(),cwd:u.string().optional()})}),G.extend({type:u.literal(`user_message.sent`),payload:U[`user_message.sent`]}),G.extend({type:u.literal(`user_message.acknowledged`),payload:U[`user_message.acknowledged`]}),G.extend({type:u.literal(`user_message.completed`),payload:U[`user_message.completed`]}),G.extend({type:u.literal(`turn.started`),payload:U[`turn.started`]}),G.extend({type:u.literal(`turn.completed`),payload:U[`turn.completed`]}),G.extend({type:u.literal(`message`),payload:u.object({messageId:u.string(),turnId:u.string().nullable(),role:u.enum([`user`,`assistant`])})}),G.extend({type:u.literal(`branch.created`),payload:u.object({childSessionId:u.string(),parentSessionId:u.string(),kind:h,forkPointMessageId:u.string().optional()})}),G.extend({type:u.literal(`branch.merged`),payload:u.object({childSessionId:u.string(),parentSessionId:u.string(),resultJson:u.string().optional(),resultMessageId:u.string().optional()})}),G.extend({type:u.literal(`squash`),payload:u.object({summaryJson:u.string(),tokensBefore:u.number().optional(),tokensAfter:u.number().optional(),compressedMessageIds:u.array(u.string()).optional()})})]),K=[`message`,`agent.added`,`turn.started`,`turn.completed`,`user_message.sent`,`user_message.acknowledged`,`user_message.completed`,`branch.created`,`branch.merged`,`squash`],Ke=K,qe=G.extend({type:u.string().refine(e=>!K.includes(e),{message:`Plugin session event type must not shadow a core event type.`}),payload:u.record(u.string(),u.unknown())}),q=u.union([Ge,qe]),Je=u.string(),J=u.object({sessionId:u.string().min(1),clientId:u.string().min(1),previousClientAccountId:u.string().min(1).nullable(),clientAccountId:u.string().min(1),source:u.string().min(1),observedAt:u.number().int().finite().nonnegative(),lastClientIdentityObservation:l}),Y=u.object({sessionId:u.string(),importStatus:_}),Ye={"agent.added":u.object({sessionId:u.string(),adapterSessionId:u.string(),agentId:u.string(),adapterId:u.string(),adapterName:u.string(),role:m.optional(),model:u.string().optional(),cwd:u.string().optional()}),"agent.removed":u.object({sessionId:u.string(),agentId:u.string()}),closed:u.object({sessionId:u.string(),reason:u.string().optional()}),resumed:u.object({sessionId:u.string()}),archived:u.object({sessionId:u.string()}),purged:u.object({sessionId:u.string()}),compressed:u.object({sessionId:u.string(),eventId:u.string()}),"clientAccount.changed":J,"connectorSwap.editRequested":u.object({sessionId:u.string(),agentId:u.string(),previousCwd:u.string().optional(),newCwd:u.string().optional(),previousModel:u.string().optional(),newModel:u.string().optional()}),getContextWindowState:{request:u.object({sessionId:u.string()}),response:u.object({state:u.object({currentTokens:u.number(),maxTokens:u.number(),percentage:u.number(),level:u.enum([`ok`,`warn`,`critical`]),lastUpdatedAt:u.number()}).nullable()})},importStatusChanged:Y,"import.completed":u.object({sessionId:u.string(),adapterSessionId:u.string(),source:u.string()}),event:q},X=u.object({includeEvents:u.boolean().default(!1),includeToolOutputs:u.boolean().default(!1),includeAncestors:u.boolean().default(!0),includeChildren:u.boolean().default(!1)}),Xe=`1.0`,Z=u.object({version:u.literal(`1.0`),exportedAt:u.number(),options:X,sessions:u.array(I),agents:u.array(P),messages:u.array(E),turns:u.array(j),events:u.array(q).optional()});function Ze(e){return Z.parse(e)}function Qe(e){let t=Z.safeParse(e);return t.success?{success:!0,data:t.data}:{success:!1,error:t.error}}const $e={"snapshot.export":{request:u.object({sessionId:u.string(),options:X.optional()}),response:u.object({snapshot:Z})},"snapshot.import":{request:u.object({snapshot:Z,onConflict:u.enum([`fail`,`skip`,`overwrite`]).default(`fail`)}),response:u.object({imported:u.array(u.string()),skipped:u.array(u.string()),errors:u.array(u.object({sessionId:u.string(),error:u.string()}))})},"snapshot.validate":{request:u.object({snapshot:u.unknown()}),response:u.object({valid:u.boolean(),errors:u.array(u.string())})}},et={resolveAgentConfig:{request:u.object({selection:o,projectId:u.string().optional()}),response:u.object({adapterName:u.string(),model:u.string().optional(),providerConfigId:u.string().optional(),reasoningEffort:n.optional(),supportedReasoningLevels:ee.optional(),systemPrompt:r.optional(),allowedTools:u.array(u.string()).optional(),disallowedTools:u.array(u.string()).optional(),allowedDirectories:u.array(u.string()).optional()})}},tt={resolveSystemPrompt:{request:u.object({sessionId:u.string(),personaId:u.string().optional(),profileId:u.string().optional()}),response:u.object({systemPrompt:u.string(),personaName:u.string().optional(),profileName:u.string().optional()})}},nt={enrichContext:{request:u.object({sessionId:u.string()}),response:u.record(u.string(),u.unknown())}},rt={...We,...Ye,...$e,...Pe,...U,...et,...tt,...nt},Q=u.object({adapterId:u.string(),harnessId:u.string().optional(),clientId:u.string().optional(),clientProfileName:de.optional(),initialMessage:i.optional(),responseSchema:a.optional(),model:u.string().optional(),reasoningEffort:n.optional(),adapterConfig:t.optional(),env:u.record(u.string(),u.string()).optional(),role:m,sessionContext:S.optional(),mcpSessionContext:u.union([ae,ue]).optional(),providerContext:s.optional(),ephemeral:u.boolean().optional()}).merge(p),it={request:u.union([Q.extend({mode:u.literal(`fork`),sessionId:u.string(),sourceSessionId:u.string()}),Q.extend({mode:u.literal(`resume`),sessionId:u.string(),adapterSessionId:u.string()}),Q.extend({mode:u.literal(`create`).optional(),sessionId:u.string().optional()})]).superRefine((e,t)=>{let n=e.mode??`create`;e.ephemeral&&n!==`create`&&t.addIssue({code:u.ZodIssueCode.custom,path:[`ephemeral`],message:`ephemeral is only supported for create mode`}),e.ephemeral&&e.initialMessage===void 0&&t.addIssue({code:u.ZodIssueCode.custom,path:[`initialMessage`],message:`ephemeral startAgent requires initialMessage`})}),response:u.discriminatedUnion(`success`,[u.object({success:u.literal(!0),agentId:u.string(),adapterId:u.string(),adapterSessionId:u.string(),sessionId:u.string(),messageId:u.string().optional()}),u.object({success:u.literal(!1),message:u.string()})])},at={request:u.object({adapterId:u.string(),prompt:u.string(),model:u.string().optional(),systemPrompt:u.string().optional(),responseSchema:a.optional(),providerContext:s.optional()}),response:u.object({text:u.string(),usage:u.object({inputTokens:u.number(),outputTokens:u.number()}).optional()})},ot={request:u.object({adapterId:u.string()}),response:u.object({agents:u.array(u.object({agentId:u.string(),sessionId:u.string(),adapterSessionId:u.string()}))})},st={request:u.object({adapterId:u.string(),agentId:u.string()}),response:u.object({agent:u.object({agentId:u.string(),sessionId:u.string(),adapterSessionId:u.string()}).nullable()})},ct={request:u.object({adapterId:u.string(),agentId:u.string()}),response:u.object({success:u.boolean()})},lt={request:u.object({adapterId:u.string(),agentId:u.string(),cwd:u.string().optional(),model:u.string().optional(),adapterSessionId:u.string().optional()}),response:u.object({})},ut={request:u.object({adapterName:u.string()}),response:u.object({found:u.boolean(),adapterName:u.string(),jsonSchema:u.record(u.string(),u.unknown()).nullable()})},dt=f.extend({agentId:u.string(),sessionId:u.string(),adapterSessionId:u.string().optional()}),ft=f.extend({adapterSessionId:u.string(),sessionId:u.string(),model:u.string()}),pt=f.extend({sessionId:u.string(),adapterSessionId:u.string(),totalInputTokens:u.number(),totalOutputTokens:u.number(),totalCalls:u.number()}),mt=f.extend({agentId:u.string(),sessionId:u.string(),adapterSessionId:u.string(),reason:u.string().optional()}),ht=f.extend({message:u.string(),timestamp:u.number(),level:u.enum([`debug`,`info`,`warn`,`error`]).optional()}),gt=f.extend({error:u.string(),sessionId:u.string().optional(),errorCategory:re.optional()}),_t=f.extend({capabilities:u.array(u.string()),nativeTools:u.array(u.string()).optional()}),vt=f.extend({provider:u.string(),quotaType:u.string(),limit:u.number(),used:u.number(),overage:u.number(),resetDate:u.string()}),yt=u.object({agentId:u.string(),adapterId:u.string(),adapterName:u.string(),sessionId:u.string().optional(),adapterSessionId:u.string(),messageId:u.string().optional(),turnId:u.string().optional(),clientId:u.string().optional(),providerConfigId:u.string().optional(),occurredAt:u.number().optional()}),$=u.object({model:u.string().nullable(),cwd:u.string().nullable()}),bt=yt.merge($),xt=f.merge($).extend({adapterSessionId:u.string(),title:u.string().optional(),logFilePath:u.string().nullable().optional(),startedAt:u.number().finite().optional()}).and(fe);export{S as $,q as A,P as B,Xe as C,Ze as D,Qe as E,I as F,w as G,M as H,L as I,j as J,E as K,F as L,Je as M,W as N,J as O,z as P,Fe as Q,R,et as S,X as T,C as U,Ie as V,T as W,k as X,D as Y,O as Z,at as _,_t as a,m as at,nt as b,mt as c,g as ct,dt as d,b as et,ut as f,ot as g,st as h,vt as i,v as it,Ke as j,Y as k,pt as l,me as lt,ct as m,bt as n,x as nt,gt as o,h as ot,lt as p,A as q,yt as r,Ne as rt,ht as s,_ as st,xt as t,y as tt,ft as u,p as ut,it as v,Z as w,tt as x,rt as y,N as z};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{A as e,F as t,I as ee,K as n,L as r,R as i,U as a,W as te,ct as o,it as s,j as c,ot as l,st as u,y as d}from"./schemas-ftgVeWIG.mjs";import"./compression-C5JAWdgZ.mjs";import{t as f}from"./schemas-XeIBqwvE.mjs";import{i as p}from"./account-identity-C7Kx_ieU.mjs";import{CompressSessionLineageSchema as m,ForkSessionLineageSchema as h,RootSessionLineageSchema as g,SubagentSessionLineageSchema as _}from"./contracts/adapter/schemas/session-lineage.mjs";import{t as v}from"./storage-namespace-definition-CzXPW45M.mjs";import{z as y}from"zod";import{createBusNamespace as b}from"@makaio/framework/core";const x=b(`session`,d),S=x.subjects;function C(e){return c.includes(e.type)}const w=`ui-warnings`,T=`connector-swap-warning-suppressed`,E=1440*60*1e3,D={cancel:`cancel`,edit:`edit`,continue:`continue`},O=`CONNECTOR_SWAP_CANCELLED`;var k=class extends Error{code=O;constructor(){super(`Connector swap cancelled by user`),this.name=`ConnectorSwapCancelledError`}};function A(e){return e instanceof k||e instanceof Error&&`code`in e&&e.code===`CONNECTOR_SWAP_CANCELLED`}const j={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 M(e){return e!=null&&j[e].staysInView}function N(e){return e==null||j[e].navigatesToChild}function P(e){return e!=null&&j[e].canMergeBack}function F(e){return j[e]}const I=y.object({timestamp:y.number(),messageId:y.string()}),L=v(`message`,{schemas:{append:{request:y.object({message:n.omit({messageId:!0}).extend({messageId:y.string().optional()}),emitEvent:y.boolean().optional()}),response:y.object({message:n})},getBySession:{request:y.object({sessionId:y.string(),limit:y.number().int().min(1).optional(),after:I.optional(),includeAfter:y.boolean().optional(),order:y.enum([`asc`,`desc`]).optional()}),response:y.object({messages:y.array(n),nextCursor:I.nullable()})},getByTurn:{request:y.object({turnId:y.string()}),response:y.object({messages:y.array(n)})},get:{request:y.object({messageId:y.string()}),response:y.object({message:n.nullable()})},getByAdapterMessageId:{request:y.object({adapterMessageId:y.string()}),response:y.object({message:n.nullable()})},search:{request:y.object({query:y.string(),sessionId:y.string().optional(),limit:y.number().int().min(1).optional()}),response:y.object({messages:y.array(n),total:y.number()})},ftsSearch:{request:y.object({query:y.string(),sessionId:y.string().optional(),limit:y.number().int().min(1).optional().default(20)}),response:y.object({results:y.array(y.object({messageId:y.string(),sessionId:y.string(),score:y.number(),excerpt:y.string()})),total:y.number()})},upsertByAdapterMessageId:{request:y.object({sessionId:y.string(),turnId:y.string().nullable(),adapterMessageId:y.string(),role:y.enum([`user`,`assistant`]),contentText:y.string(),blocks:y.array(a),agentId:y.string().optional(),adapterSessionId:y.string().optional(),timestamp:y.number(),origin:te.optional()}),response:y.object({messageId:y.string(),created:y.boolean()})},stored:y.object({message:n})}}),R=L.subjects;function z(e,t){return e.timestamp===t.timestamp?e.messageId.localeCompare(t.messageId):e.timestamp-t.timestamp}function B(e,t){return z(t,e)}function V(e){return{timestamp:e.timestamp,messageId:e.messageId}}function H(e){return`${e.timestamp}:${e.messageId}`}const U=y.object({after:y.string().optional(),limit:y.number().int().min(1).optional(),types:y.array(y.string()).optional(),includeReasoning:y.boolean().optional(),order:y.enum([`asc`,`desc`]).optional()}),W=y.object({events:y.array(e),nextCursor:y.string().nullable(),totalCount:y.number().optional()}),G=v(`sessionEvent`,{schemas:{append:{request:y.object({event:e}),response:y.object({success:y.boolean()})},getEvents:{request:y.object({sessionId:y.string(),options:U.optional()}),response:W},getByIds:{request:y.object({sessionId:y.string(),eventIds:y.array(y.string())}),response:y.object({events:y.array(e)})},deleteBySession:{request:y.object({sessionId:y.string()}),response:y.object({success:y.boolean(),deletedCount:y.number().optional()})},getEventsBySessions:{request:y.object({sessionIds:y.array(y.string()),types:y.array(y.string()),limitPerSession:y.number().int().min(1).optional()}),response:y.object({eventsBySession:y.record(y.string(),y.array(e))})}}}),K=G.subjects,q=t.extend({preview:ee});function J(e,t){e.clientAccountId!==void 0&&e.lastClientIdentityObservation===void 0&&t.addIssue({code:y.ZodIssueCode.custom,path:[`lastClientIdentityObservation`],message:`lastClientIdentityObservation is required when clientAccountId is provided`}),e.clientAccountId!==void 0&&e.clientId===void 0&&t.addIssue({code:y.ZodIssueCode.custom,path:[`clientId`],message:`clientId is required when clientAccountId is provided`})}const Y=t.superRefine((e,t)=>{J(e,t)}),X=y.object({sessionId:y.string(),session:Y,ifAbsent:y.boolean().optional()}).superRefine((e,t)=>{e.sessionId!==e.session.sessionId&&t.addIssue({code:y.ZodIssueCode.custom,path:[`session`,`sessionId`],message:`session.sessionId must match the top-level sessionId`})}),Z={request:y.object({sessionId:y.string(),status:y.enum([`active`,`closed`,`archived`,`discovered`]).optional(),parentSessionId:y.string().optional(),contextInheritance:o.optional(),rootSessionId:y.string().optional(),forkPointMessageId:y.string().optional(),branchKind:l.optional(),isOrchestrated:y.boolean().optional(),clientId:y.string().optional(),clientAccountId:y.string().optional(),lastClientIdentityObservation:p.optional(),executionTargetId:y.string().nullable().optional(),approvalPolicyOverride:f.nullable().optional(),title:y.string().optional(),targetWorkingDirectory:y.string().optional(),createdAt:y.number().finite().optional(),lastActivityAt:y.number().finite().optional(),metadata:r.nullable().optional(),spawningToolCallId:y.string().nullable().optional()}),response:y.object({success:y.boolean(),clientAccountChanged:y.boolean().optional()})},Q=y.object({externalSessionId:y.string(),source:y.string(),clientId:y.string().optional(),adapterId:y.string().optional(),cwd:y.string().nullable(),logFilePath:y.string().nullable().optional(),startedAt:y.number().finite().optional(),title:y.string().nullable().optional(),metadata:r.optional(),lastClientIdentityObservation:p.optional(),importStatus:y.enum([`discovered`,`tracking`]).optional(),isSidechain:y.boolean().optional()}),ne=y.discriminatedUnion(`kind`,[Q.merge(g),Q.merge(h),Q.merge(_),Q.merge(m)]),$=v(`session`,{schemas:{get:{request:y.object({sessionId:y.string()}),response:y.object({session:t.nullable()})},set:{request:X,response:y.object({success:y.boolean(),clientAccountChanged:y.boolean().optional()})},delete:{request:y.object({sessionId:y.string()}),response:y.object({success:y.boolean()})},list:{request:y.object({status:y.enum([`active`,`closed`,`archived`,`discovered`,`all`]).optional(),limit:y.number().int().min(1).optional(),offset:y.number().int().min(0).optional(),includePreview:y.boolean().optional(),executionTargetId:y.string().optional()}),response:y.object({sessions:y.array(i),total:y.number()})},getChildren:{request:y.object({sessionId:y.string()}),response:y.object({children:y.array(s)})},search:{request:y.object({query:y.string(),limit:y.number().int().min(1).optional(),status:y.enum([`active`,`closed`,`archived`,`discovered`,`all`]).optional(),isImported:y.boolean().optional()}),response:y.object({sessions:y.array(q),total:y.number()})},update:Z,getByAdapterSessionId:{request:y.object({adapterSessionId:y.string(),source:y.string().optional(),adapterName:y.string().optional()}),response:y.object({session:t.nullable()})},getStatusCounts:{request:y.object({}),response:y.object({all:y.number(),active:y.number(),closed:y.number(),archived:y.number(),discovered:y.number()})},importUpsert:{request:ne,response:y.object({sessionId:y.string(),created:y.boolean()})},getByLogFilePath:{request:y.object({logFilePath:y.string()}),response:y.object({session:t.nullable()})},listImported:{request:y.object({source:y.string().optional(),importStatus:u.optional()}),response:y.object({sessions:y.array(t)})},countBySource:{request:y.object({source:y.string()}),response:y.object({total:y.number(),imported:y.number(),discovered:y.number(),tracking:y.number()})},updateImportStatus:{request:y.object({sessionId:y.string(),importStatus:u}),response:y.object({success:y.boolean()})}}}),re=$.subjects;export{T as C,x as D,C as E,S as O,D as S,w as T,P as _,Z as a,k as b,z as c,V as d,I as f,M as g,F as h,re as i,B as l,R as m,X as n,G as o,L as p,Y as r,K as s,$ as t,H as u,N as v,E as w,A as x,O as y};
|
|
@@ -1,69 +0,0 @@
|
|
|
1
|
-
import{agents as e,agentsDual as t,sessions as n,sessionsDual as r}from"./services/session/storage/schema.mjs";import"./schema-7aKBGB7S.mjs";import{a as i,n as a,o}from"./namespace-dFBD2ZmS.mjs";import{D as s,F as c,I as l,L as u,R as d,T as f,_ as p,d as m,f as h,g,h as _,k as v,l as ee,m as y,p as te,u as b,v as ne,y as x}from"./handlers-v47Gbsr1.mjs";import{TurnStorageSubjects as S}from"./services/turn/namespace.mjs";import{SessionStorageSubjects as C}from"./services/session/storage/namespace.mjs";import{r as re,t as ie}from"./provider-context-DC_eq7es.mjs";import{AdapterRuntimeSubjects as w}from"./services/adapter-runtime/namespace.mjs";import{MessageStorageSubjects as T}from"./services/session/messages/namespace.mjs";import{n as ae}from"./namespace-wke7juzy.mjs";import{z as E}from"zod";import{createBusNamespace as oe}from"@makaio/framework/core";import{MakaioBus as se,NoHandlerError as ce,TimeoutError as le}from"@makaio/framework/bus";import{AdapterSubjects as D,AgentSubjects as O,CanonicalModelSubjects as ue,CapabilitySubjects as k,ClientSubjects as de,CompressionModeSchema as fe,ForkTransformsSchema as pe,MessageRoutingSchema as me,SessionContextSchema as he,SessionDiscoveredSchema as ge,SessionRecordMetadataSchema as _e,SessionStorageSetRequestSchema as ve,SessionStorageUpdateSchema as ye,SessionSubjects as A,TurnIngestionMarkerSchema as be,compareMessageCursorAsc as xe,compareMessageCursorDesc as Se,isCanonicalModelParseError as Ce,messageToCursor as j,parseCanonicalModel as we}from"@makaio/framework/contracts";import{BaseService as Te}from"@makaio/framework/service-base";import{blob as Ee,index as De,integer as Oe,primaryKey as ke,sqliteTable as Ae,text as je,uniqueIndex as Me}from"drizzle-orm/sqlite-core";import{index as Ne,primaryKey as Pe}from"drizzle-orm/pg-core";import{defineDialectSchema as Fe,defineDualTable as Ie,didAffectRows as M,getRawSqlExecutor as Le,getStorageEngine as Re,resolveSchema as N,resolveStorageEngine as P}from"@makaio/framework/storage/drizzle";import{and as F,asc as ze,count as I,desc as Be,eq as L,gt as Ve,gte as He,inArray as R,isNull as z,lt as Ue,lte as We,or as Ge,sql as B}from"drizzle-orm";import{createStorageNamespaceDefinition as Ke}from"@makaio/framework/storage";import{ClientIdentityObservationSchema as qe}from"@makaio/framework/contracts/client";import{ImportCursorStorageSubjects as Je}from"@makaio/framework/adapters";function Ye(e){return e.on(A.agent.added,async t=>{let n=await e.requestOptional(C.get,{sessionId:t.payload.sessionId}),r=n.handled?n.data.session:void 0;r&&(r.adapterSessionId||(r.adapterSessionId=t.payload.adapterSessionId,r.adapterName=t.payload.adapterName,r.adapterId=t.payload.adapterId),(t.payload.role??(r.leadAgentId?`member`:`lead`))===`lead`&&(r.leadAgentId=t.payload.agentId),r.lastActivityAt=Date.now(),await e.request(C.set,{sessionId:t.payload.sessionId,session:r}))})}function Xe(e){return e.on(A.agent.removed,async t=>{let n=await e.requestOptional(C.get,{sessionId:t.payload.sessionId}),r=n.handled?n.data.session:void 0;r&&(await e.requestOptional(c.updateStatus,{agentId:t.payload.agentId,status:`disposed`}),r.leadAgentId===t.payload.agentId&&(r.leadAgentId=void 0),r.lastActivityAt=Date.now(),await e.request(C.set,{sessionId:t.payload.sessionId,session:r}))})}function Ze(e){return[et(e),tt(e),nt(e),Qe(e),rt(e),it(e),at(e),ot(e),st(e),Ye(e.bus),Xe(e.bus)]}function Qe(e){let{bus:t}=e;return t.on(A.turn.await,async e=>{let{sessionId:n,turnId:r,timeoutMs:i}=e.payload,a=new AbortController,o=t.once(A.turn.completed,{timeoutMs:i,filter:{sessionId:n,turnId:r},signal:a.signal});o.catch(()=>void 0);let s=await $e(t,n,r);if(s!==void 0){a.abort(),e.setResult({completion:s});return}try{let t=await o;e.setResult({completion:t.payload})}catch(e){throw e instanceof Error&&e.name===`OnceTimeoutError`?new le(`session.turn.await`,i):e}})}async function $e(e,t,n){let r=await e.requestOptional(S.get,{turnId:n}),i=r.handled?r.data.turn:null;if(!(i?.sessionId!==t||i.status!==`completed`&&i.status!==`error`))return{sessionId:t,turnId:n,turnNumber:i.turnNumber,success:i.status===`completed`,...i.error!==void 0&&{error:i.error},...i.usage!==void 0&&{usage:i.usage},...i.initiator!==void 0&&{initiator:i.initiator}}}function et(e){let{bus:t}=e;return t.on(A.create,async e=>{let{sessionId:n,parentSessionId:r,contextInheritance:i,forkPointMessageId:a,branchKind:o,forkTransforms:s,title:c,targetWorkingDirectory:l,executionTargetId:u,metadata:d,spawningToolCallId:f,originWindowId:p}=e.payload,m=n??crypto.randomUUID(),h=Date.now(),g={sessionId:m,createdAt:h,lastActivityAt:h,agents:[],status:`active`,title:c,parentSessionId:r,contextInheritance:i,forkPointMessageId:a,branchKind:o,forkTransforms:s,targetWorkingDirectory:l,executionTargetId:u,metadata:d,spawningToolCallId:f},_=await t.requestOptional(C.set,{sessionId:m,session:g,ifAbsent:!0});if(_.handled&&!_.data.success){e.setResult({sessionId:m});return}await t.emit(A.created,{sessionId:m,createdAt:g.createdAt,parentSessionId:r??null,branchKind:o??null,originWindowId:p??`server`}),e.setResult({sessionId:m})})}function tt(e){let{bus:t}=e;return t.on(A.get,async e=>{let n=await t.requestOptional(C.get,{sessionId:e.payload.sessionId}),r=n.handled?n.data.session:null;e.setResult({session:r})})}function nt(e){let{bus:t}=e;return t.on(A.list,async e=>{let{status:n,limit:r,offset:i,includePreview:a,executionTargetId:o}=e.payload,s=await t.requestOptional(C.list,{status:n??`all`,limit:r,offset:i,includePreview:a,executionTargetId:o}),c=s.handled?s.data.sessions:[],l=s.handled?s.data.total:0;e.setResult({sessions:c,total:l})})}function rt(e){let{bus:t}=e;return t.on(A.close,async e=>{let{sessionId:n}=e.payload,r=await t.requestOptional(C.get,{sessionId:n}),i=r.handled?r.data.session:null;if(!i){e.setResult({success:!1});return}if(i.status===`closed`){e.setResult({success:!0});return}if(i.status!==`active`){e.setResult({success:!1});return}i.status=`closed`,i.lastActivityAt=Date.now(),await t.requestOptional(C.set,{sessionId:n,session:i}),await t.emit(A.closed,{sessionId:n}),e.setResult({success:!0})})}function it(e){let{bus:t}=e;return t.on(A.restartAgents,async e=>{let{sessionId:n}=e.payload,r=await t.requestOptional(c.listBySession,{sessionId:n}),i=r.handled?r.data.agents:[],a=[];for(let e of i)try{let n=await f(t,e,{cwd:e.cwd,model:e.model});await t.requestOptional(c.updateRuntime,{agentId:n.agentId,adapterId:n.adapterId}),a.push({agentId:n.agentId,adapterId:n.adapterId,success:!0})}catch(t){let n=t instanceof Error?t.cause:void 0,r=n instanceof Error?n.message:t instanceof Error?t.message:String(t);a.push({agentId:e.agentId,adapterId:e.adapterId,success:!1,error:r})}e.setResult({sessionId:n,results:a})})}function at(e){let{bus:t}=e;return t.on(A.update,async e=>{let{sessionId:n,executionTargetId:r,approvalPolicyOverride:i,title:a,metadata:o}=e.payload,s=await t.requestOptional(C.update,{sessionId:n,executionTargetId:r,approvalPolicyOverride:i,title:a,metadata:o}),c=s.handled?s.data.success:!1;if(c){let e=[];r!==void 0&&e.push(`executionTargetId`),i!==void 0&&e.push(`approvalPolicyOverride`),a!==void 0&&e.push(`title`),o!==void 0&&e.push(`metadata`),e.length>0&&await t.emit(A.updated,{sessionId:n,changedProperties:e})}e.setResult({success:c})})}function ot(e){let{bus:t}=e;return t.on(A.archive,async e=>{let{sessionId:n}=e.payload,r=await t.requestOptional(C.get,{sessionId:n}),i=r.handled?r.data.session:null;if(!i){e.setResult({success:!1});return}if(i.status===`archived`){e.setResult({success:!0});return}if(i.status!==`closed`){e.setResult({success:!1});return}i.status=`archived`,i.lastActivityAt=Date.now(),await t.requestOptional(C.set,{sessionId:n,session:i}),await t.emit(A.archived,{sessionId:n}),e.setResult({success:!0})})}function st(e){let{bus:t}=e;return t.on(A.purge,async e=>{let{sessionId:n}=e.payload,r=await t.requestOptional(C.get,{sessionId:n}),i=r.handled?r.data.session:null;if(!i){e.setResult({success:!1,error:`Session not found`});return}if(i.status!==`archived`){e.setResult({success:!1,error:`Cannot purge session unless archived. Call close then archive first.`});return}let o=await t.requestOptional(C.list,{status:`all`}),s=o.handled?o.data.sessions:[];for(let e of s)e.parentSessionId===n&&await t.requestOptional(C.set,{sessionId:e.sessionId,session:{...e,parentSessionId:void 0}});let c=await t.requestOptional(a.getEvents,{sessionId:n,options:{limit:1}}),l=c.handled?c.data.totalCount:0;await t.requestOptional(a.deleteBySession,{sessionId:n}),await t.requestOptional(C.delete,{sessionId:n}),await t.emit(A.purged,{sessionId:n}),e.setResult({success:!0,eventsDeleted:l})})}var ct=class extends Te{constructor(e=se){super(e)}async onInit(){for(let e of Ze({bus:this.bus}))this.addCleanup(e);this.addCleanup(d(this.bus)),await this.reconcileOrphanedTurns()}async reconcileOrphanedTurns(){let e=await this.bus.requestOptional(S.listActive,{});if(!e.handled)return;let{turns:t}=e.data;for(let e of t)try{let{transitioned:t}=await this.bus.request(S.complete,{turnId:e.turnId,status:`error`,expectedStatus:`active`,error:`process-restart`});if(t){let t={sessionId:e.sessionId,turnId:e.turnId,turnNumber:e.turnNumber,success:!1,error:`process-restart`,ingestionMarker:`live`};await l(this.bus,{type:`turn.completed`,sessionId:e.sessionId,payload:t}),await this.bus.emit(A.turn.completed,t)}}catch(t){console.error(`[MakaioSessionService] Failed to reconcile orphaned turn ${e.turnId}:`,t)}}};function lt(e){return Error(`No adapter found for adapterName="${e}". Ensure adapter-runtime identity handlers are registered; adapter startup verifies live availability.`)}var ut=class{bus;registry=new Map;cleanup;constructor(e){this.bus=e,this.cleanup=this.bus.on(D.initialized,e=>{this.registry.set(e.payload.adapterName,e.payload.adapterId)})}resolve(e){let t=this.registry.get(e);if(!t)throw lt(e);return t}async resolveAvailable(e){try{let{adapterId:t}=await this.bus.request(w.resolveId,{adapterName:e});return this.registry.set(e,t),t}catch{let t=this.registry.get(e);if(t)return t;throw lt(e)}}destroy(){this.cleanup?.(),this.cleanup=void 0,this.registry.clear()}};async function dt(e,t){e.emit(T.stored,{message:structuredClone(t)});try{await e.request(a.append,{event:{sessionId:t.sessionId,eventId:crypto.randomUUID(),timestamp:t.timestamp,type:`message`,payload:{messageId:t.messageId,turnId:t.turnId,role:t.role}}})}catch(e){console.error(`[MessageStorage] Failed to emit session event for message:`,e)}}function V(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 ft(e){let{bus:t,db:n}=e,{messages:r}=N(n,o);return t.on(T.append,async e=>{let{message:i,emitEvent:a}=e.payload,o=i.messageId??crypto.randomUUID(),s={...i,messageId:o,blocks:i.blocks??[]};await n.insert(r).values({messageId:o,turnId:s.turnId,sessionId:s.sessionId,role:s.role,contentText:s.contentText,blocks:JSON.stringify(s.blocks),agentId:s.agentId??null,adapterSessionId:s.adapterSessionId??null,adapterMessageId:s.adapterMessageId??null,timestamp:s.timestamp,editOf:s.editOf??null,origin:s.origin??null}),e.setResult({message:s}),(a??!0)&&await dt(t,s)})}function pt(e){let{bus:t,db:n}=e,{messages:r}=N(n,o);return t.on(T.getBySession,async e=>{let{sessionId:t,limit:i,after:a,includeAfter:o=!1,order:s=`asc`}=e.payload,c=s===`desc`?Be:ze,l=n.select().from(r).where(L(r.sessionId,t)).orderBy(c(r.timestamp),c(r.messageId));if(a){let e=s===`desc`?Ge(Ue(r.timestamp,a.timestamp),F(L(r.timestamp,a.timestamp),o?We(r.messageId,a.messageId):Ue(r.messageId,a.messageId))):Ge(Ve(r.timestamp,a.timestamp),F(L(r.timestamp,a.timestamp),o?He(r.messageId,a.messageId):Ve(r.messageId,a.messageId)));l=n.select().from(r).where(F(L(r.sessionId,t),e)).orderBy(c(r.timestamp),c(r.messageId))}let u=i??100,d=await l.limit(u+1),f=d.length>u,p=f?d.slice(0,u):d,m=f&&p.length>0?j(p[p.length-1]):null;e.setResult({messages:p.map(V),nextCursor:m})})}function mt(e){let{bus:t,db:n}=e,{messages:r}=N(n,o);return t.on(T.getByTurn,async e=>{let{turnId:t}=e.payload,i=await n.select().from(r).where(L(r.turnId,t)).orderBy(ze(r.timestamp));e.setResult({messages:i.map(V)})})}function ht(e){let{bus:t,db:n}=e,{messages:r}=N(n,o);return t.on(T.get,async e=>{let{messageId:t}=e.payload,[i]=await n.select().from(r).where(L(r.messageId,t)).limit(1);e.setResult({message:i?V(i):null})})}function gt(e){let{bus:t,db:n}=e,{messages:r}=N(n,o),i=P(n).fts;return t.on(T.search,async e=>{let{query:t,sessionId:a,limit:o}=e.payload,s=o??50;if(!t.trim()){e.setResult({messages:[],total:0});return}let{rows:c,total:l}=await i.searchMessages(n,r,{query:t,sessionId:a,limit:s});e.setResult({messages:c.map(V),total:l})})}function _t(e){let{bus:t,db:n}=e,{messages:r}=N(n,o),i=P(n).fts;return t.on(T.ftsSearch,async e=>{let{query:t,sessionId:a,limit:o=20}=e.payload;if(!t.trim()){e.setResult({results:[],total:0});return}let{results:s,total:c}=await i.searchMessageExcerpts(n,r,{query:t,sessionId:a,limit:o});e.setResult({results:s,total:c})})}function vt(e){let{bus:t,db:n}=e,{messages:r}=N(n,o);return t.on(T.getByAdapterMessageId,async e=>{let{adapterMessageId:t}=e.payload,[i]=await n.select().from(r).where(L(r.adapterMessageId,t)).limit(1);e.setResult({message:i?V(i):null})})}function yt(e){let{bus:t,db:n}=e,{messages:r}=N(n,o);return t.on(T.upsertByAdapterMessageId,async e=>{let{adapterMessageId:i,sessionId:a,turnId:o,role:s,contentText:c,blocks:l,agentId:u,adapterSessionId:d,timestamp:f,origin:p}=e.payload,[m]=await n.select({messageId:r.messageId,turnId:r.turnId}).from(r).where(F(L(r.adapterMessageId,i),L(r.sessionId,a))).limit(1);if(m){m.turnId===null&&o!==null&&await n.update(r).set({turnId:o}).where(L(r.messageId,m.messageId)),e.setResult({messageId:m.messageId,created:!1});return}let h=crypto.randomUUID();if((await n.insert(r).values({messageId:h,turnId:o,sessionId:a,role:s,contentText:c,blocks:JSON.stringify(l),agentId:u??null,adapterSessionId:d??null,adapterMessageId:i,timestamp:f,editOf:null,origin:p??null}).onConflictDoNothing({target:[r.adapterMessageId,r.sessionId]}).returning({messageId:r.messageId})).length===0){let[t]=await n.select({messageId:r.messageId,turnId:r.turnId}).from(r).where(F(L(r.adapterMessageId,i),L(r.sessionId,a))).limit(1);if(t===void 0)throw Error(`Message upsert conflict winner disappeared before reread completed`);t.turnId===null&&o!==null&&await n.update(r).set({turnId:o}).where(L(r.messageId,t.messageId)),e.setResult({messageId:t.messageId,created:!1});return}e.setResult({messageId:h,created:!0}),await dt(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 bt(e,t){let n={bus:e,db:t},r=[ft(n),pt(n),mt(n),ht(n),gt(n),_t(n),yt(n),vt(n)];return()=>r.forEach(e=>e())}function xt(e,t){return xe(j(e),j(t))}function St(e,t){return Se(j(e),j(t))}function Ct(e,t){let n=e.get(t);if(n!==void 0)return n;let r=new Map;return e.set(t,r),r}function wt(e,t,n,r){if(r===null)return;let i=e.get(n);if(i===void 0||i.turnId!==null)return;i.turnId=r;let a=t.get(r)??[];a.includes(n)||(a.push(n),t.set(r,a))}function Tt(e){let t=new Map,n=new Map,r=new Map,i=new Map,a=Et(t,n,r,i),o=[Dt(e,t,a),Ot(e,t,n),kt(e,t,r),At(e,t),jt(e,t),Mt(e,t,r,i,a),Nt(e,t,n,r,i)];return()=>o.forEach(e=>e())}function Et(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&&Ct(r,i.sessionId).set(i.adapterMessageId,i.messageId)}}function Dt(e,t,n){return e.on(T.append,async t=>{let{message:r,emitEvent:i}=t.payload,a=r.messageId??crypto.randomUUID(),o={...r,messageId:a,blocks:r.blocks??[]};n(o),t.setResult({message:o}),(i??!0)&&await dt(e,o)})}function Ot(e,t,n){return e.on(T.getBySession,async e=>{let{sessionId:r,limit:i,after:a,includeAfter:o=!1,order:s=`asc`}=e.payload,c=n.get(r)??[],l=s===`desc`?St:xt,u=c.map(e=>t.get(e)).filter(e=>!!e).sort(l);a&&(u=u.filter(e=>{let t=s===`desc`?Se(j(e),a):xe(j(e),a);return o?t>=0:t>0}));let d=i??100,f=u.length>d,p=f?u.slice(0,d):u,m=f&&p.length>0?j(p[p.length-1]):null;e.setResult({messages:p,nextCursor:m})})}function kt(e,t,n){return e.on(T.getByTurn,async e=>{let{turnId:r}=e.payload,i=(n.get(r)??[]).map(e=>t.get(e)).filter(e=>!!e).sort(xt);e.setResult({messages:i})})}function At(e,t){return e.on(T.get,async e=>{e.setResult({message:t.get(e.payload.messageId)??null})})}function jt(e,t){return e.on(T.search,async e=>{let{query:n,sessionId:r,limit:i}=e.payload,a=i??50,o=n.trim().toLowerCase(),s=[...t.values()].filter(e=>r?e.sessionId===r:!0),c=o.length===0?[]:s.filter(e=>e.contentText.toLowerCase().includes(o));c.sort(xt),e.setResult({messages:c.slice(0,a),total:c.length})})}function Mt(e,t,n,r,i){return e.on(T.upsertByAdapterMessageId,async a=>{let{adapterMessageId:o,sessionId:s,turnId:c,role:l,contentText:u,blocks:d,agentId:f,adapterSessionId:p,timestamp:m,origin:h}=a.payload,g=r.get(s)?.get(o);if(g){wt(t,n,g,c),a.setResult({messageId:g,created:!1});return}let _=crypto.randomUUID(),v={messageId:_,sessionId:s,turnId:c,role:l,contentText:u,blocks:d,agentId:f??void 0,adapterSessionId:p??void 0,adapterMessageId:o,timestamp:m,editOf:void 0,origin:h??void 0};i(v),a.setResult({messageId:_,created:!0}),await dt(e,v)})}function Nt(e,t,n,r,i){return e.on(C.delete,e=>{let{sessionId:a}=e.payload,o=n.get(a)??[];for(let e of o){let n=t.get(e);if(n){if(t.delete(e),n.turnId){let t=(r.get(n.turnId)??[]).filter(t=>t!==e);t.length===0?r.delete(n.turnId):r.set(n.turnId,t)}if(n.adapterMessageId){let e=i.get(n.sessionId);e?.delete(n.adapterMessageId),e?.size===0&&i.delete(n.sessionId)}}}n.delete(a)})}const Pt=Ie(`message_routing`,e=>({messageId:e.text(`message_id`).notNull().references(i,{onDelete:`cascade`}),agentId:e.text(`agent_id`).notNull(),status:e.textEnum(`status`,{enum:[`sent`,`acknowledged`,`completed`]}).notNull(),timestamp:e.epochMs(`timestamp`).notNull(),error:e.text(`error`)}),{sqlite:e=>[ke({columns:[e.messageId,e.agentId,e.status]}),De(`idx_routing_agent`).on(e.agentId,e.timestamp)],postgres:e=>[Pe({columns:[e.messageId,e.agentId,e.status]}),Ne(`idx_routing_agent`).on(e.agentId,e.timestamp)]}),Ft=Pt.sqlite,It=Ke(`messageRouting`,{schemas:{record:{request:me,response:E.object({success:E.boolean()})},getByMessage:{request:E.object({messageId:E.string()}),response:E.object({routing:E.array(me)})},getCompleted:{request:E.object({messageId:E.string()}),response:E.object({agentIds:E.array(E.string())})},isComplete:{request:E.object({messageId:E.string(),targetAgentIds:E.array(E.string())}),response:E.object({complete:E.boolean(),pending:E.array(E.string())})}},extensions:{drizzle:{messageRouting:Ft}}}),H=It.subjects,Lt=Pt.postgres,Rt=Fe({messageRouting:Ft},{messageRouting:Lt});function zt(e){return{messageId:e.messageId,agentId:e.agentId,status:e.status,timestamp:e.timestamp,error:e.error??void 0}}function Bt(e,t){let{messageRouting:n}=N(t,Rt),r=[];return r.push(e.on(H.record,async e=>{let{messageId:r,agentId:i,status:a,timestamp:o,error:s}=e.payload;await t.insert(n).values({messageId:r,agentId:i,status:a,timestamp:o,error:s??null}).onConflictDoUpdate({target:[n.messageId,n.agentId,n.status],set:{timestamp:o,error:s??null}}),e.setResult({success:!0})})),r.push(e.on(H.getByMessage,async e=>{let{messageId:r}=e.payload,i=await t.select().from(n).where(L(n.messageId,r));e.setResult({routing:i.map(zt)})})),r.push(e.on(H.getCompleted,async e=>{let{messageId:r}=e.payload,i=await t.select().from(n).where(F(L(n.messageId,r),L(n.status,`completed`)));e.setResult({agentIds:i.map(e=>e.agentId)})})),r.push(e.on(H.isComplete,async e=>{let{messageId:r,targetAgentIds:i}=e.payload,a=await t.select().from(n).where(F(L(n.messageId,r),L(n.status,`completed`))),o=new Set(a.map(e=>e.agentId)),s=i.filter(e=>!o.has(e));e.setResult({complete:s.length===0,pending:s})})),()=>r.forEach(e=>e())}var Vt=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()}},Ht=class{bus;activeTurns=new Map;usageAccumulators=new Map;completingSessions=new Set;bufferedUsageDuringCompletion=new Map;syntheticTurnCounters=new Map;assistantStoredCounts=new Map;assistantPersistenceWaiters=new Map;cleanups=[];constructor(e){this.bus=e,this.registerAssistantPersistenceCounter()}async createTurn(e,t,n,r){let i=await this.bus.requestOptional(S.create,{sessionId:e,...r!==void 0&&{turnId:r},...n!==void 0&&{initiator:n}}),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 x({sessionId:e,agentIds:t,turnId:a,turnNumber:o,initiator:n});return this.activeTurns.set(e,s),this.usageAccumulators.set(e,new Vt),s}discardActiveTurn(e){this.activeTurns.get(e.sessionId)?.turnId===e.turnId&&(this.activeTurns.delete(e.sessionId),this.usageAccumulators.delete(e.sessionId),this.assistantStoredCounts.delete(e.turnId))}registerCompletionHandlers(e){this.cleanups.push(this.bus.on(O.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(O.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(),i=!1;try{i=(await this.bus.requestOptional(S.complete,{turnId:e.turnId,status:t.success?`completed`:`error`,error:t.errors.length>0?t.errors.join(`; `):void 0,...r!==void 0&&{usage:r}})).handled;let a=this.bufferedUsageDuringCompletion.get(e.sessionId)??[];if(a.length>0){for(let e of a)n?.add(e);this.bufferedUsageDuringCompletion.delete(e.sessionId);let i=n?.snapshot();r=i,await this.bus.requestOptional(S.complete,{turnId:e.turnId,status:t.success?`completed`:`error`,error:t.errors.length>0?t.errors.join(`; `):void 0,...i!==void 0&&{usage:i}})}}catch(t){throw this.completingSessions.delete(e.sessionId),console.error(`[SessionTurnManager] Failed to persist completion for turn ${e.turnId}:`,t),t}try{i&&await this.awaitAssistantPersistence(e),this.assistantStoredCounts.delete(e.turnId);let n={sessionId:e.sessionId,turnId:e.turnId,turnNumber:e.turnNumber,success:t.success,error:t.errors.length>0?t.errors.join(`; `):void 0,...r!==void 0&&{usage:r},initiator:e.initiator,ingestionMarker:`live`};await l(this.bus,{type:`turn.completed`,sessionId:e.sessionId,payload:n}),await this.bus.emit(A.turn.completed,n)}catch(t){throw this.completingSessions.delete(e.sessionId),t}n?.clear(),this.activeTurns.delete(e.sessionId),this.usageAccumulators.delete(e.sessionId),this.completingSessions.delete(e.sessionId)}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();for(let e of[...this.assistantPersistenceWaiters.values()])e.settle();this.assistantPersistenceWaiters.clear(),this.assistantStoredCounts.clear()}async handleAgentCompletion(e,t,n,r){let i=y(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(A.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)}registerAssistantPersistenceCounter(){this.cleanups.push(this.bus.on(T.stored,e=>{let{message:t}=e.payload;if(t.role!==`assistant`||!t.turnId)return;let n=t.turnId;if(!this.assistantStoredCounts.has(n)&&this.assistantStoredCounts.size>=1024){let e=this.assistantStoredCounts.keys().next().value;e!==void 0&&this.assistantStoredCounts.delete(e)}let r=(this.assistantStoredCounts.get(n)??0)+1;this.assistantStoredCounts.set(n,r);let i=this.assistantPersistenceWaiters.get(n);i&&r>=i.expected&&i.settle()}))}async awaitAssistantPersistence(e){let t=e.agentIds.length;if(t<=0||(this.assistantStoredCounts.get(e.turnId)??0)>=t)return;let n=await this.bus.requestOptional(T.getByTurn,{turnId:e.turnId});n.handled&&(n.data.messages.filter(e=>e.role===`assistant`).length>=t||(this.assistantStoredCounts.get(e.turnId)??0)>=t||await new Promise(n=>{let r=()=>{clearTimeout(i),this.assistantPersistenceWaiters.delete(e.turnId),n()},i=setTimeout(r,1500);this.assistantPersistenceWaiters.set(e.turnId,{expected:t,settle:r}),(this.assistantStoredCounts.get(e.turnId)??0)>=t&&r()}))}},Ut=class{bus;turnManager;adapterRegistry;cleanups=[];constructor(e=se,t){this.bus=e,this.turnManager=new Ht(e),this.adapterRegistry=new ut(e),this.cleanups.push(b(this.bus,this.turnManager.getActiveTurnsMap(),t)),this.registerSendMessageHandler(),this.turnManager.registerCompletionHandlers(this.completeTurn.bind(this))}registerSendMessageHandler(){this.cleanups.push(this.bus.on(A.sendMessage,async e=>{let{sessionId:t,message:n,agentIds:r,deliveryMode:i,agent:a,source:o,origin:l}=e.payload,d=te(o,e.payload.extensionId),f=e.payload.sessionContext?he.parse(e.payload.sessionContext):void 0,{sessionId:h,session:v}=await _(this.bus,t,f,e.payload.originWindowId);if(v.agents.length===0){let e=await this.resolveInitialAdapterSelection(a,h,n,f),t=await this.resolveAdapterName(e,h),r=m(e.adapterId)??await this.adapterRegistry.resolveAvailable(t),i=e.providerConfigId===void 0?void 0:await re(this.bus,e.providerConfigId),o=e.providerConfigId??i?.providerConfigId;i!==void 0&&await ie(this.bus,i);let s=await this.bus.request(D.startAgent,{adapterId:r,sessionId:h,role:`lead`,...i!==void 0&&{providerContext:i},...e.model!==void 0&&{model:e.model},...e.reasoningEffort!==void 0&&{reasoningEffort:e.reasoningEffort},...e.cwd!==void 0&&{cwd:e.cwd},...e.systemPrompt!==void 0&&{systemPrompt:e.systemPrompt},...e.allowedTools!==void 0&&{allowedTools:e.allowedTools},...e.disallowedTools!==void 0&&{disallowedTools:e.disallowedTools},...e.env!==void 0&&{env:e.env},...e.mcpSessionContext!==void 0&&{mcpSessionContext:e.mcpSessionContext},...e.allowedDirectories!==void 0&&{allowedDirectories:e.allowedDirectories},...e.adapterConfig!==void 0&&{adapterConfig:e.adapterConfig},...f!==void 0&&{sessionContext:f}});if(!s.success)throw Error(`[SessionOrchestrator.sendMessage] Failed to start agent (sessionId=${h}, adapterName=${t}): ${s.message}`);let l=Date.now();v.agents.push({agentId:s.agentId,adapterId:s.adapterId,adapterName:t,sessionId:h,role:`lead`,status:`idle`,...o!==void 0&&{providerConfigId:o},createdAt:l,lastActivityAt:l}),v.leadAgentId=s.agentId,o!==void 0&&await this.bus.requestOptional(c.updateRuntime,{agentId:s.agentId,providerConfigId:o})}let y=g(v,r);if(y.length===0)throw Error(`[SessionOrchestrator.sendMessage] No valid target agents found (sessionId=${h})`);let b=new Set;for(let e of y){let t=await this.bus.requestOptional(D.getAgent,{agentId:e.agentId,adapterId:e.adapterId});t.handled&&t.data.agent===null&&b.add(e.agentId)}let x;if(b.size>0){x=await s(this.bus,v);for(let e of y)b.has(e.agentId)&&await this.bus.requestOptional(D.rehydrateAgent,{agentId:e.agentId,adapterId:e.adapterId})}let S=this.turnManager.getActiveTurn(h),C=!S;S||=await this.turnManager.createTurn(h,y.map(e=>e.agentId),d,e.payload.turnId);let w=crypto.randomUUID(),ae=ne(n);try{await this.bus.requestOptional(T.append,{message:{messageId:w,turnId:S.turnId,sessionId:h,role:`user`,contentText:p(n),blocks:ae,timestamp:Date.now(),...l!==void 0&&{origin:l}}})}catch(e){throw console.warn(`[SessionOrchestrator] Failed to store user message`,{sessionId:h,messageId:w,error:e instanceof Error?e.message:String(e)}),C&&this.turnManager.discardActiveTurn(S),e}S.addMessage(w);for(let e of y)this.bus.requestOptional(H.record,{messageId:w,agentId:e.agentId,status:`sent`,timestamp:Date.now()}).catch(t=>{console.warn(`[SessionOrchestrator] Failed to record message routing`,{sessionId:h,messageId:w,agentId:e.agentId,error:t instanceof Error?t.message:String(t)})});C&&await u(this.bus,{sessionId:h,turnId:S.turnId,turnNumber:S.turnNumber,messageId:w,agentIds:[...S.agentIds],initiator:S.initiator,ingestionMarker:`live`}),await this.bus.emit(A.user_message.sent,{sessionId:h,turnId:S.turnId,turnNumber:S.turnNumber,messageId:w,content:n,agentIds:y.map(e=>e.agentId),...o!==void 0&&{source:o},...l!==void 0&&{origin:l}});let E=x?{...f,...x}:f;await ee(this.bus,v,y,n,w,S,i,this.completeTurn.bind(this),E,e.payload.responseSchema),e.setResult({messageId:w,turnId:S.turnId,sessionId:h})}))}async completeTurn(e,t){await this.turnManager.completeTurn(e,t)}destroy(){for(let e of this.cleanups)e();this.cleanups.length=0,this.turnManager.destroy(),this.adapterRegistry.destroy()}async resolveAdapterName(e,t){let n=m(e.adapterName),r=m(e.adapterId);if(!n&&!r)throw Error(`[SessionOrchestrator.sendMessage] adapterName or adapterId required when session has no agents (sessionId=${t})`);return r?h(this.bus,r,n,`[SessionOrchestrator.sendMessage] (sessionId=${t}) `):n}async resolveInitialAdapterSelection(e,t,n,r){if(!e)throw Error(`[SessionOrchestrator.sendMessage] agent selection required when session has no agents (sessionId=${t})`);if(e.kind===`adapter`)return e;if(e.kind===`canonical-model`)return await this.resolveCanonicalModelSelection(e,t,n,r);throw Error(`[SessionOrchestrator.sendMessage] agent with kind: 'adapter' or 'canonical-model' required when session has no agents (sessionId=${t})`)}async resolveCanonicalModelSelection(e,t,n,r){let i=we(e.model);if(Ce(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(ue.resolve,{parsed:i,context:{sessionId:t,promptText:p(n),...r===void 0?{}:{sessionContext:r}}});return{...e,...a,kind:`adapter`,providerConfigId:e.providerConfigId??a.providerConfigId}}},Wt=class{bus;constructor(e){this.bus=e}async getTurnSoFarContext(e){try{let{messages:t}=await this.bus.request(T.getByTurn,{turnId:e});return this.convertSessionMessagesToMessages(t)}catch(e){return e instanceof ce||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 Gt(e){let{bus:t}=e;return t.on(A.getStatusCounts,async e=>{e.payload;let{all:n,active:r,closed:i,archived:a,discovered:o}=await t.request(C.getStatusCounts,{});e.setResult({all:n,active:r,closed:i,archived:a,discovered:o})})}function Kt(e){let{bus:t}=e;return t.on(A.resume,async e=>{let{sessionId:n}=e.payload,{session:r}=await t.request(C.get,{sessionId:n});if(!r||r.status!==`closed`){e.setResult({success:!1});return}r.status=`active`,r.lastActivityAt=Date.now(),await t.request(C.set,{sessionId:n,session:r}),await t.emit(A.resumed,{sessionId:n}),e.setResult({success:!0})})}function qt(e){return e.on(ae.listActions,e=>{let t=v.getAll().map(e=>({id:e.id,label:e.label,description:e.description,category:e.category}));e.setResult({actions:t})})}const Jt=[{actionId:`strip-reasoning`},{actionId:`strip-tool-outputs`}];function Yt(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 Xt=class{bus;agentToSession=new Map;agentContext=new Map;agentBlocks=new Map;cleanups=[];constructor(e=se){this.bus=e,this.registerHandlers()}registerHandlers(){this.registerMappingHandlers(),this.registerTurnTrackingHandlers(),this.registerBlockAccumulationHandlers()}registerMappingHandlers(){this.cleanups.push(this.bus.on(A.agent.added,e=>{this.agentToSession.set(e.payload.agentId,e.payload.sessionId)})),this.cleanups.push(this.bus.on(A.closed,e=>{for(let[t,n]of this.agentToSession)n===e.payload.sessionId&&(this.agentToSession.delete(t),this.agentContext.delete(t),this.agentBlocks.delete(t))}))}registerTurnTrackingHandlers(){this.cleanups.push(this.bus.on(A.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(A.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(O.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(O.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(O.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(O.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(O.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(`
|
|
2
|
-
`),s=crypto.randomUUID();try{if(!(await this.bus.requestOptional(T.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(T.getByTurn,{turnId:i.turnId});if(r.handled){let t=r.data.messages.find(e=>e.role===`user`);t&&await this.bus.requestOptional(H.record,{messageId:t.messageId,agentId:e,status:`completed`,timestamp:Date.now(),error:n})}}catch(e){console.error(`[SessionBridge] Failed to store assistant message:`,e)}this.agentBlocks.delete(e)}destroy(){for(let e of this.cleanups)e();this.cleanups.length=0,this.agentToSession.clear(),this.agentContext.clear(),this.agentBlocks.clear()}},Zt=class{bus;_sessionId;_extensionId;_turnId;_parentSessionId;contextTracker;contextContributions=new Map;constructor(e,t,n,r,i,a){this.bus=e,this._sessionId=t,this._extensionId=n,this._turnId=r,this._parentSessionId=i,this.contextTracker=a}get sessionId(){return this._sessionId}get turnId(){return this._turnId}get parentSessionId(){return this._parentSessionId}get extensionId(){return this._extensionId}async sendToAgent(e,t){await this.bus.request(A.sendMessage,{sessionId:this._sessionId,agentIds:[e],message:t,source:`extension`,extensionId:this._extensionId})}contributeContext(e,t){this.contextContributions.set(e,t)}getContributions(){return Object.fromEntries(this.contextContributions)}async fork(e){return(await this.bus.request(A.fork,{sourceSessionId:this._sessionId,name:e.reason})).sessionId}async merge(e,t){await this.bus.request(A.merge,{parentSessionId:this._sessionId,childSessionId:e,summary:t,source:`extension`,extensionId:this._extensionId})}async abandon(e){await this.bus.request(A.abandon,{parentSessionId:this._sessionId,childSessionId:e,source:`extension`,extensionId:this._extensionId})}async requestCompression(e){await this.bus.emit(A.compressionRequested,{sessionId:this._sessionId,reason:e,source:`extension`,extensionId:this._extensionId})}async getContextWindowState(){if(this.contextTracker){let e=this.contextTracker.getSessionState(this._sessionId);if(e)return{currentTokens:e.currentTokens,maxTokens:e.maxTokens,percentage:e.percentage,level:e.level}}let{session:e}=await this.bus.request(A.get,{sessionId:this._sessionId});return!e||e.agents.length===0?{currentTokens:0,maxTokens:1,percentage:0,level:`ok`}:{currentTokens:0,maxTokens:2e5,percentage:0,level:`ok`}}async getChildSessions(){return(await this.bus.request(A.getChildren,{sessionId:this._sessionId})).children.map(e=>e.sessionId)}};function Qt(e,t,n,r,i,a){return new Zt(e,t,n,r,i,a)}function $t(e,t){let n=e?.clientAccountId??null,r=t.clientAccountId??null;return!r||n===r?null:{previousClientAccountId:n,clientAccountId:r}}function U(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 W(e,t,n){let r=$t(t,n);if(!r)return;let i=n.lastClientIdentityObservation;if(!i)return;let a={sessionId:n.sessionId,clientId:i.clientId,previousClientAccountId:r.previousClientAccountId,clientAccountId:r.clientAccountId,source:i.source,observedAt:i.observedAt,lastClientIdentityObservation:structuredClone(i)};queueMicrotask(()=>{Promise.resolve().then(()=>e.emit(A.clientAccount.changed,a)).catch(e=>{console.error(`[SessionStorage] Failed to emit session.clientAccount.changed:`,e)})})}function en(e){switch(e){case`fork`:return`fork`;case`subagent`:return`subagent`;case`compress`:return`compress`;case`root`:return;default:return}}function tn(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 nn(){let e=0;return()=>{let t=Date.now();return e=t>e?t:e+1,e}}const rn=nn();function an(e,t){return e===`imported`||t===`imported`?`imported`:e===`tracking`||t===`tracking`?`tracking`:e??t??`discovered`}function on(e,t,n){n!==void 0&&(e[t]=n)}function sn(e,t,n){let r=e.startedAt??n;return{sessionId:t,createdAt:r,lastActivityAt:r,agents:[],status:`discovered`,branchKind:en(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:e.importStatus??`discovered`,forkPointMessageId:e.forkPointMessageId??void 0,metadata:e.metadata,lastClientIdentityObservation:e.lastClientIdentityObservation,isSidechain:e.isSidechain}}function cn(e,t,n){let r=an(e.importStatus,t.importStatus);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 ln(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=en(t.kind);n!==void 0&&(e.branchKind=n),on(e,`adapterId`,t.adapterId),on(e,`clientId`,t.clientId),t.metadata!==void 0&&(e.metadata={...t.metadata,...e.metadata??{}}),on(e,`isSidechain`,t.isSidechain),on(e,`lastClientIdentityObservation`,t.lastClientIdentityObservation)}function un(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 dn(e,t,n){let r=e.discoveredAt;cn(e,t,n),ln(e,t),un(e,t,r)}function fn(e,t){if(t.parentExternalSessionId===void 0)return;let n=t.source??t.adapterName,r=Array.from(e.values()).find(e=>e.adapterSessionId===t.parentExternalSessionId&&(e.source??e.adapterName)===n);r&&(t.parentSessionId=r.sessionId,t.rootSessionId=r.rootSessionId??r.sessionId)}function pn(e,t,n){if(n){e.emit(A.created,{sessionId:t.sessionId,parentSessionId:t.parentSessionId??null,branchKind:t.branchKind??null,createdAt:t.createdAt}).catch(e=>console.error(`[SessionStorage] Failed to emit session.created:`,e));return}e.emit(A.updated,{sessionId:t.sessionId,changedProperties:[`source`,`targetWorkingDirectory`,`title`]}).catch(e=>console.error(`[SessionStorage] Failed to emit session.updated:`,e))}function mn(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 hn(e,t,n){e.emit(A.importStatusChanged,{sessionId:t.sessionId,importStatus:n}).catch(e=>console.error(`[SessionStorage] Failed to emit session.importStatusChanged:`,e));let r=t.source??t.adapterName;n!==`imported`||t.adapterSessionId===void 0||r===void 0||e.emit(A.import.completed,{sessionId:t.sessionId,adapterSessionId:t.adapterSessionId,source:r}).catch(e=>console.error(`[SessionStorage] Failed to emit session.import.completed:`,e))}function gn(e){let{bus:t,store:n,cloneSession:r,populateAgents:i}=e;return[t.on(C.importUpsert,e=>{let r=e.payload,i=Array.from(n.values()).find(e=>e.adapterSessionId===r.externalSessionId&&e.source===r.source),a=rn(),o=i===void 0,s=i??sn(r,crypto.randomUUID(),a);i?(dn(i,r,a),i.parentExternalSessionId!==void 0&&i.parentSessionId===void 0&&fn(n,i)):(n.set(s.sessionId,s),fn(n,s)),pn(t,s,o),e.setResult({sessionId:s.sessionId,created:o})}),t.on(C.getByLogFilePath,async e=>{let a=Array.from(n.values()).find(t=>t.logFilePath===e.payload.logFilePath);if(!a){e.setResult({session:null});return}let o=await i(t,a.sessionId);e.setResult({session:{...r(a),agents:o}})}),t.on(C.listImported,async e=>{let{source:a,importStatus:o}=e.payload,s=Array.from(n.values()).filter(e=>e.isImported===!0).filter(e=>a===void 0||e.source===a).filter(e=>o===void 0||e.importStatus===o).sort((e,t)=>t.createdAt-e.createdAt),c=await Promise.all(s.map(async e=>({...r(e),agents:await i(t,e.sessionId)})));e.setResult({sessions:c})}),t.on(C.countBySource,e=>{let t=Array.from(n.values()).filter(t=>t.isImported===!0&&t.source===e.payload.source);e.setResult(mn(t))}),t.on(C.updateImportStatus,e=>{let r=n.get(e.payload.sessionId),i=e.payload.importStatus;if(!r||r.importStatus===i){e.setResult({success:!1});return}r.importStatus=i,i===`imported`&&r.status===`discovered`&&(r.status=`active`),e.setResult({success:!0}),hn(t,r,i)})]}async function _n(e,t){let n=await e.requestOptional(c.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 vn(e,t,n){n!==void 0&&(e[t]=n??void 0)}function yn(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 bn(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),vn(e,`executionTargetId`,t.executionTargetId),vn(e,`approvalPolicyOverride`,t.approvalPolicyOverride),vn(e,`metadata`,t.metadata),t.spawningToolCallId===null?e.spawningToolCallId=void 0:t.spawningToolCallId!==void 0&&e.spawningToolCallId===void 0&&(e.spawningToolCallId=t.spawningToolCallId)}function xn(e,t){return e.on(C.list,async n=>{let{status:r=`all`,limit:i,offset:a=0,includePreview:o=!1,executionTargetId:s}=n.payload,c=yn(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 _n(e,t.sessionId)}))),d=o?u.map(e=>({...e,preview:{messageCount:0,firstUserMessage:null}})):u;n.setResult({sessions:d,total:l})})}function Sn(e,t){return e.on(C.update,async n=>{let r=structuredClone(ye.request.parse(n.payload)),i=t.get(r.sessionId);if(!i){n.setResult({success:!1,clientAccountChanged:!1});return}let a=G(i);U(a,{sessionId:i.sessionId,clientId:r.clientId??i.clientId,clientAccountId:r.clientAccountId??i.clientAccountId,lastClientIdentityObservation:r.lastClientIdentityObservation??i.lastClientIdentityObservation}),bn(i,r),n.setResult({success:!0,clientAccountChanged:(a.clientAccountId??null)!==(i.clientAccountId??null)}),W(e,a,G(i))})}function Cn(e){let t=new Map,n=[];return n.push(e.on(C.get,async n=>{let r=t.get(n.payload.sessionId);if(!r){n.setResult({session:null});return}let i=await _n(e,n.payload.sessionId);n.setResult({session:{...G(r),agents:i}})})),n.push(e.on(C.set,async n=>{let{sessionId:r,session:i,ifAbsent:a}=ve.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;U(s,o),t.set(r,o),n.setResult({success:!0,clientAccountChanged:(c?.clientAccountId??null)!==(o.clientAccountId??null)}),W(e,c,G(o))})),n.push(e.on(C.delete,async e=>{t.delete(e.payload.sessionId),e.setResult({success:!0}),await e.next()})),n.push(xn(e,t)),n.push(e.on(C.getChildren,e=>{let{sessionId:n}=e.payload,r=Array.from(t.values()),i=r.filter(e=>e.parentSessionId===n),a=new Set(r.map(e=>e.parentSessionId).filter(e=>!!e)),o=i.map(e=>({sessionId:e.sessionId,title:e.title??null,forkPointMessageId:e.forkPointMessageId??null,branchKind:e.branchKind??null,messageCount:0,hasChildren:a.has(e.sessionId),spawningToolCallId:e.spawningToolCallId}));e.setResult({children:o})})),n.push(e.on(C.getStatusCounts,e=>{e.payload;let n=Array.from(t.values()),r=n.filter(e=>e.status===`active`).length,i=n.filter(e=>e.status===`closed`).length,a=n.filter(e=>e.status===`archived`).length,o=n.filter(e=>e.status===`discovered`).length;e.setResult({all:r+i+a+o,active:r,closed:i,archived:a,discovered:o})})),n.push(Sn(e,t)),n.push(wn(e,t)),n.push(...gn({bus:e,store:t,populateAgents:_n,cloneSession:G})),()=>n.forEach(e=>e())}function wn(e,t){return e.on(C.getByAdapterSessionId,async n=>{let{adapterSessionId:r,source:i,adapterName:a}=n.payload,o=Array.from(t.values()).filter(e=>e.adapterSessionId!==void 0&&e.adapterSessionId===r&&(i===void 0||e.source===i)&&(a===void 0||e.adapterName===a)),s=o[0];if(o.length!==1||s===void 0){n.setResult({session:null});return}let l=await e.requestOptional(c.listBySession,{sessionId:s.sessionId}),u=l.handled?l.data.agents:[];n.setResult({session:{...G(s),agents:u}})})}const Tn=r.postgres,En=t.postgres,q=Fe({sessions:n,agents:e},{sessions:Tn,agents:En});function Dn(e,t){let n=e?.clientId??null,r=e?.clientAccountId??null,i=e?.lastClientIdentityObservation??null;return F(n===null?z(t.clientId):L(t.clientId,n),r===null?z(t.clientAccountId):L(t.clientAccountId,r),i===null?z(t.lastClientIdentityObservation):L(t.lastClientIdentityObservation,i))}function On(e){return{agentId:e.agentId,adapterId:e.adapterId,adapterName:e.adapterName,sessionId:e.sessionId,role:e.role,status:e.status,createdAt:e.createdAt,lastActivityAt:e.lastActivityAt,model:e.model??void 0,adapterSessionId:e.adapterSessionId??void 0,cwd:e.cwd??void 0,allowedDirectories:e.allowedDirectories??void 0,providerConfigId:e.providerConfigId??void 0,personaId:e.personaId??void 0,profileId:e.profileId??void 0,harnessId:e.harnessId??void 0,clientId:e.clientId??void 0,compressionMode:e.compressionMode?fe.parse(e.compressionMode):void 0}}function kn(e){return{agentId:e.agentId,adapterId:e.adapterId,adapterName:e.adapterName,sessionId:e.sessionId,role:e.role,status:e.status,createdAt:e.createdAt,lastActivityAt:e.lastActivityAt,model:e.model??null,adapterSessionId:e.adapterSessionId??null,cwd:e.cwd??null,allowedDirectories:e.allowedDirectories??null,providerConfigId:e.providerConfigId??null,personaId:e.personaId??null,profileId:e.profileId??null,harnessId:e.harnessId??null,clientId:e.clientId??null,compressionMode:e.compressionMode??null}}function An(e){let t;for(let n=e.length-1;n>=0;--n)try{e[n]?.()}catch(e){t??=e}if(t)throw t}function jn(e){let{bus:t,db:n}=e,{agents:r}=N(n,q);return t.on(c.get,async e=>{let[t]=await n.select().from(r).where(L(r.agentId,e.payload.agentId)).limit(1);e.setResult({agent:t?On(t):null})})}function Mn(e){let{bus:t,db:n}=e,{agents:r}=N(n,q);return t.on(c.set,async e=>{let{agent:t}=e.payload,i=kn(t),a=await n.insert(r).values(i).onConflictDoUpdate({target:r.agentId,set:i});e.setResult({success:M(a)})})}function Nn(e){let{bus:t,db:n}=e,{agents:r}=N(n,q);return t.on(c.delete,async e=>{let t=await n.delete(r).where(L(r.agentId,e.payload.agentId));e.setResult({success:M(t)})})}function Pn(e){let{bus:t,db:n}=e,{agents:r}=N(n,q);return t.on(c.listByAdapter,async e=>{let{adapterName:t,status:i}=e.payload,a=[L(r.adapterName,t)];i&&i!==`all`&&a.push(L(r.status,i));let o=a.length>1?F(...a):a[0],s=await n.select().from(r).where(o);e.setResult({agents:s.map(On)})})}function Fn(e){let{bus:t,db:n}=e,{agents:r}=N(n,q);return t.on(c.listBySession,async e=>{let{sessionId:t}=e.payload,i=await n.select().from(r).where(L(r.sessionId,t));e.setResult({agents:i.map(On)})})}function In(e){let{bus:t,db:n}=e,{agents:r}=N(n,q);return t.on(c.updateStatus,async e=>{let{agentId:t,status:i}=e.payload,a=Date.now(),o=await n.update(r).set({status:i,lastActivityAt:a}).where(L(r.agentId,t));e.setResult({success:M(o)})})}function Ln(e){let{bus:t,db:n}=e,{agents:r}=N(n,q);return t.on(c.updateActivity,async e=>{let{agentId:t,lastActivityAt:i}=e.payload,a=await n.update(r).set({lastActivityAt:i}).where(L(r.agentId,t));e.setResult({success:M(a)})})}function Rn(e){let{bus:t,db:n}=e,{agents:r}=N(n,q);return t.on(c.updateRuntime,async e=>{let{agentId:t,adapterId:i,cwd:a,model:o,allowedDirectories:s,providerConfigId:c}=e.payload,l={lastActivityAt:Date.now()};i!==void 0&&(l.adapterId=i),a!==void 0&&(l.cwd=a),o!==void 0&&(l.model=o),s!==void 0&&(l.allowedDirectories=s),c!==void 0&&(l.providerConfigId=c);let u=await n.update(r).set(l).where(L(r.agentId,t));e.setResult({success:M(u)})})}function zn(e,t){let n={bus:e,db:t},r=[jn(n),Mn(n),Nn(n),Pn(n),Fn(n),In(n),Ln(n),Rn(n)];return()=>An(r)}function J(e){return e??void 0}function Bn(e){if(e)try{let t=JSON.parse(e),n=qe.safeParse(t);return n.success?n.data:void 0}catch{return}}function Vn(e){if(e)try{let t=JSON.parse(e),n=pe.safeParse(t);return n.success?n.data:void 0}catch{return}}function Y(e,t){let n=Vn(e.forkTransforms),r=Bn(e.lastClientIdentityObservation);return{sessionId:e.sessionId,createdAt:e.createdAt,lastActivityAt:e.lastActivityAt,status:e.status,leadAgentId:J(e.leadAgentId),parentSessionId:J(e.parentSessionId),contextInheritance:J(e.contextInheritance),rootSessionId:J(e.rootSessionId),forkPointMessageId:J(e.forkPointMessageId),branchKind:J(e.branchKind),adapterName:J(e.adapterName),adapterSessionId:J(e.adapterSessionId),adapterId:J(e.adapterId),clientId:J(e.clientId),clientAccountId:J(e.clientAccountId),lastClientIdentityObservation:r,isOrchestrated:J(e.isOrchestrated),isImported:J(e.isImported),title:J(e.title),summary:J(e.summary),summaryUpdatedAt:J(e.summaryUpdatedAt),forkTransforms:n,targetWorkingDirectory:J(e.targetWorkingDirectory),executionTargetId:J(e.executionTargetId),agents:t.map(On),approvalPolicyOverride:J(e.approvalPolicyOverride),metadata:J(e.metadata),spawningToolCallId:J(e.spawningToolCallId),source:J(e.source),parentExternalSessionId:J(e.parentExternalSessionId),logFilePath:J(e.logFilePath),discoveredAt:J(e.discoveredAt),importStatus:J(e.importStatus),isSidechain:J(e.isSidechain)}}function Hn(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 Un(e,t,n){if(!n||t.length===0)return{};let{messages:r}=N(e,o),i=e.select({sessionId:r.sessionId,minTimestamp:B`MIN(${r.timestamp})`.as(`min_timestamp`)}).from(r).where(F(L(r.role,`user`),R(r.sessionId,t))).groupBy(r.sessionId).as(`first_user_message_by_session`),a=await e.select({sessionId:r.sessionId,preview:r.contentText}).from(r).innerJoin(i,F(L(r.sessionId,i.sessionId),L(r.timestamp,i.minTimestamp))).where(L(r.role,`user`)),s=new Map;for(let e of a)s.has(e.sessionId)||s.set(e.sessionId,e.preview);let c=await e.select({sessionId:r.sessionId,count:I()}).from(r).where(R(r.sessionId,t)).groupBy(r.sessionId),l=new Map;for(let e of c)l.set(e.sessionId,e.count);return{previewBySession:s,countBySession:l}}function Wn(e,t){return{sessionId:e.sessionId,clientId:t.clientId??e.clientId,clientAccountId:t.clientAccountId??e.clientAccountId,lastClientIdentityObservation:t.lastClientIdentityObservation??e.lastClientIdentityObservation}}function Gn(e){return e.clientId!==void 0||e.clientAccountId!==void 0||e.lastClientIdentityObservation!==void 0}function Kn(e){let{bus:t,db:n}=e,{sessions:r,agents:i}=N(n,q);return t.on(C.getByAdapterSessionId,async e=>{let{adapterSessionId:t,source:a,adapterName:o}=e.payload,s=[L(r.adapterSessionId,t)];a!==void 0&&s.push(L(r.source,a)),o!==void 0&&s.push(L(r.adapterName,o));let c=await n.select().from(r).where(F(...s)).limit(2),l=c[0];if(c.length!==1||l===void 0){e.setResult({session:null});return}let u=await n.select().from(i).where(L(i.sessionId,l.sessionId));e.setResult({session:Y(l,u)})})}function qn(e){let{bus:t,db:n}=e,{sessions:r}=N(n,q),{messages:i}=N(n,o);return t.on(C.getChildren,async e=>{let{sessionId:t}=e.payload,a=await n.select().from(r).where(L(r.parentSessionId,t));if(a.length===0){e.setResult({children:[]});return}let o=a.map(e=>e.sessionId),s=await n.select({sessionId:i.sessionId,count:I()}).from(i).where(R(i.sessionId,o)).groupBy(i.sessionId),c=new Map;for(let e of s)c.set(e.sessionId,e.count);let l=await n.select({parentSessionId:r.parentSessionId,count:I()}).from(r).where(R(r.parentSessionId,o)).groupBy(r.parentSessionId),u=new Set;for(let e of l)e.parentSessionId&&u.add(e.parentSessionId);let d=a.map(e=>e.forkPointMessageId).filter(e=>e!==null),f=new Map;if(d.length>0){let e=await n.select({messageId:i.messageId,adapterMessageId:i.adapterMessageId}).from(i).where(F(L(i.sessionId,t),R(i.adapterMessageId,d)));for(let t of e)t.adapterMessageId&&f.set(t.adapterMessageId,t.messageId)}let p=a.map(e=>{let t=e.forkPointMessageId,n=t?f.get(t)??t:null;return{sessionId:e.sessionId,title:e.title??null,forkPointMessageId:n,branchKind:e.branchKind??null,messageCount:c.get(e.sessionId)??0,hasChildren:u.has(e.sessionId),spawningToolCallId:e.spawningToolCallId??void 0}});e.setResult({children:p})})}const Jn=nn();function Yn(e){return e?JSON.stringify(e):null}function Xn(e,t){return B`
|
|
3
|
-
SELECT ${t}.key AS key,
|
|
4
|
-
CASE ${t}.type
|
|
5
|
-
WHEN 'object' THEN ${t}.value
|
|
6
|
-
WHEN 'array' THEN ${t}.value
|
|
7
|
-
WHEN 'true' THEN 'true'
|
|
8
|
-
WHEN 'false' THEN 'false'
|
|
9
|
-
WHEN 'null' THEN 'null'
|
|
10
|
-
WHEN 'text' THEN json_quote(${t}.value)
|
|
11
|
-
ELSE CAST(${t}.value AS TEXT)
|
|
12
|
-
END AS vjson
|
|
13
|
-
FROM json_each(${e}) AS ${t}
|
|
14
|
-
`}function Zn(e,t){let n=t===`postgres`?B`excluded.metadata || ${e.metadata}`:B`(
|
|
15
|
-
SELECT json_group_object(mk.key, json(mk.vjson)) FROM (
|
|
16
|
-
${Xn(B`excluded.metadata`,B`inc`)}
|
|
17
|
-
WHERE inc.key NOT IN (SELECT ex2.key FROM json_each(${e.metadata}) AS ex2)
|
|
18
|
-
UNION ALL
|
|
19
|
-
${Xn(B`${e.metadata}`,B`ex`)}
|
|
20
|
-
) AS mk
|
|
21
|
-
)`;return B`
|
|
22
|
-
CASE
|
|
23
|
-
WHEN ${e.metadata} IS NULL THEN excluded.metadata
|
|
24
|
-
WHEN excluded.metadata IS NULL THEN ${e.metadata}
|
|
25
|
-
ELSE ${n}
|
|
26
|
-
END
|
|
27
|
-
`}function Qn(e,t,n){return t===void 0?B`${e}`:B`
|
|
28
|
-
CASE
|
|
29
|
-
WHEN ${n.discoveredAt} IS NULL OR ${e} = ${n.discoveredAt} THEN ${t}
|
|
30
|
-
ELSE ${e}
|
|
31
|
-
END
|
|
32
|
-
`}function $n(e,t,n){return{status:B`
|
|
33
|
-
CASE
|
|
34
|
-
WHEN COALESCE(${e.importStatus}, excluded.import_status) = 'discovered' THEN excluded.status
|
|
35
|
-
ELSE ${e.status}
|
|
36
|
-
END
|
|
37
|
-
`,isImported:!0,importStatus:B`
|
|
38
|
-
CASE
|
|
39
|
-
WHEN ${e.importStatus} = 'imported' OR excluded.import_status = 'imported' THEN 'imported'
|
|
40
|
-
WHEN ${e.importStatus} = 'tracking' OR excluded.import_status = 'tracking' THEN 'tracking'
|
|
41
|
-
ELSE COALESCE(${e.importStatus}, excluded.import_status, 'discovered')
|
|
42
|
-
END
|
|
43
|
-
`,adapterName:B`COALESCE(${e.adapterName}, excluded.adapter_name)`,discoveredAt:B`COALESCE(${e.discoveredAt}, excluded.discovered_at)`,source:B`COALESCE(${e.source}, excluded.source)`,logFilePath:B`COALESCE(${e.logFilePath}, excluded.log_file_path)`,targetWorkingDirectory:B`COALESCE(excluded.target_working_directory, ${e.targetWorkingDirectory})`,title:B`COALESCE(excluded.title, ${e.title})`,forkPointMessageId:B`COALESCE(excluded.fork_point_message_id, ${e.forkPointMessageId})`,parentExternalSessionId:B`COALESCE(excluded.parent_external_session_id, ${e.parentExternalSessionId})`,branchKind:B`COALESCE(excluded.branch_kind, ${e.branchKind})`,adapterId:B`COALESCE(excluded.adapter_id, ${e.adapterId})`,clientId:B`COALESCE(excluded.client_id, ${e.clientId})`,isSidechain:B`COALESCE(excluded.is_sidechain, ${e.isSidechain})`,lastClientIdentityObservation:B`COALESCE(excluded.last_client_identity_observation, ${e.lastClientIdentityObservation})`,metadata:Zn(e,n),createdAt:Qn(e.createdAt,t,e),lastActivityAt:Qn(e.lastActivityAt,t,e)}}function er(e){let{bus:t,db:n}=e,{sessions:r}=N(n,q),{dialect:i}=Le(n);return t.on(C.importUpsert,async e=>{let{externalSessionId:a,source:o,clientId:s,adapterId:c,cwd:l,logFilePath:u,startedAt:d,title:f,kind:p,parentAdapterSessionId:m,forkPointMessageId:h,metadata:g,lastClientIdentityObservation:_,importStatus:v,isSidechain:ee}=e.payload,y=Jn(),te=crypto.randomUUID(),b=d??y,ne=en(p)??null,x=m??null,[S]=await n.insert(r).values({sessionId:te,status:`discovered`,isImported:!0,importStatus:v??`discovered`,adapterName:o,adapterSessionId:a,source:o??null,clientId:s??null,adapterId:c??null,targetWorkingDirectory:l??null,logFilePath:u??null,forkPointMessageId:h??null,branchKind:ne,parentExternalSessionId:x,discoveredAt:y,title:f??null,metadata:g??null,lastClientIdentityObservation:Yn(_),isSidechain:ee??null,createdAt:b,lastActivityAt:b}).onConflictDoUpdate({target:[r.source,r.adapterSessionId],set:$n(r,d,i)}).returning({sessionId:r.sessionId,discoveredAt:r.discoveredAt,parentExternalSessionId:r.parentExternalSessionId,parentSessionId:r.parentSessionId}),C=S.sessionId===te;await tr(t,n,S,C,ne,b,o),e.setResult({sessionId:S.sessionId,created:C})})}async function tr(e,t,n,r,i,a,o){if(r){let r=await nr(t,n.sessionId,n.parentExternalSessionId,o);e.emit(A.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 nr(t,n.sessionId,n.parentExternalSessionId,o),e.emit(A.updated,{sessionId:n.sessionId,changedProperties:[`source`,`targetWorkingDirectory`,`title`]}).catch(e=>console.error(`[SessionStorage] Failed to emit session.updated:`,e))}async function nr(e,t,n,r){let{sessions:i}=N(e,q);if(n===null)return null;let[a]=await e.select({sessionId:i.sessionId,rootSessionId:i.rootSessionId}).from(i).where(F(L(i.adapterSessionId,n),L(i.source,r))).limit(1);if(!a)return null;let o=a.rootSessionId??a.sessionId;return await e.update(i).set({parentSessionId:a.sessionId,rootSessionId:o}).where(L(i.sessionId,t)),a.sessionId}function rr(e){let{bus:t,db:n}=e,{sessions:r,agents:i}=N(n,q);return t.on(C.getByLogFilePath,async e=>{let{logFilePath:t}=e.payload,[a]=await n.select().from(r).where(L(r.logFilePath,t)).limit(1);if(!a){e.setResult({session:null});return}let o=await n.select().from(i).where(L(i.sessionId,a.sessionId));e.setResult({session:Y(a,o)})})}function ir(e){let{bus:t,db:n}=e,{sessions:r,agents:i}=N(n,q);return t.on(C.listImported,async e=>{let{source:t,importStatus:a}=e.payload,o=[L(r.isImported,!0)];t!==void 0&&o.push(L(r.source,t)),a!==void 0&&o.push(L(r.importStatus,a));let s=F(...o),c=await n.select().from(r).where(s).orderBy(Be(r.createdAt));if(c.length===0){e.setResult({sessions:[]});return}let l=c.map(e=>e.sessionId),u=Hn(await n.select().from(i).where(R(i.sessionId,l)));e.setResult({sessions:c.map(e=>Y(e,u.get(e.sessionId)??[]))})})}function ar(e){let{bus:t,db:n}=e,{sessions:r}=N(n,q);return t.on(C.countBySource,async e=>{let{source:t}=e.payload,i=await n.select({importStatus:r.importStatus,count:B`count(*)`}).from(r).where(F(L(r.isImported,!0),L(r.source,t))).groupBy(r.importStatus),a=0,o=0,s=0,c=0;for(let e of i){let t=Number(e.count);a+=t,e.importStatus===`imported`&&(o+=t),e.importStatus===`tracking`&&(s+=t),e.importStatus===`discovered`&&(c=t)}e.setResult({total:a,imported:o,tracking:s,discovered:c})})}function or(e){let{bus:t,db:n}=e,{sessions:r}=N(n,q);return t.on(C.updateImportStatus,async e=>{let{sessionId:i,importStatus:a}=e.payload,o=a===`imported`?{status:B`
|
|
44
|
-
CASE
|
|
45
|
-
WHEN ${r.status} = 'discovered' THEN 'active'
|
|
46
|
-
ELSE ${r.status}
|
|
47
|
-
END
|
|
48
|
-
`}:{},[s]=await n.update(r).set({importStatus:a,...o}).where(F(L(r.sessionId,i),Ge(z(r.importStatus),B`${r.importStatus} <> ${a}`))).returning({adapterSessionId:r.adapterSessionId,adapterName:r.adapterName,source:r.source}),c=s!==void 0;if(e.setResult({success:c}),c){t.emit(A.importStatusChanged,{sessionId:i,importStatus:a}).catch(e=>console.error(`[SessionStorage] Failed to emit session.importStatusChanged:`,e));let e=s.source??s.adapterName;a===`imported`&&s.adapterSessionId&&e&&t.emit(A.import.completed,{sessionId:i,adapterSessionId:s.adapterSessionId,source:e}).catch(e=>console.error(`[SessionStorage] Failed to emit session.import.completed:`,e))}})}function sr(e,t){let n={bus:e,db:t};return[er(n),rr(n),ir(n),ar(n),or(n)]}function X(e){return e??null}function cr(e){return e?JSON.stringify(e):null}function lr(e){return{lastActivityAt:e.lastActivityAt,status:e.status,leadAgentId:X(e.leadAgentId),parentSessionId:X(e.parentSessionId),contextInheritance:X(e.contextInheritance),rootSessionId:X(e.rootSessionId),forkPointMessageId:X(e.forkPointMessageId),branchKind:X(e.branchKind),adapterName:X(e.adapterName),adapterSessionId:X(e.adapterSessionId),adapterId:X(e.adapterId),clientId:X(e.clientId),clientAccountId:X(e.clientAccountId),lastClientIdentityObservation:ur(e.lastClientIdentityObservation),isOrchestrated:e.isOrchestrated??!1,isImported:e.isImported??!1,title:X(e.title),summary:X(e.summary),summaryUpdatedAt:X(e.summaryUpdatedAt),forkTransforms:cr(e.forkTransforms),targetWorkingDirectory:X(e.targetWorkingDirectory),executionTargetId:X(e.executionTargetId),approvalPolicyOverride:X(e.approvalPolicyOverride),metadata:X(e.metadata),spawningToolCallId:X(e.spawningToolCallId),source:X(e.source),parentExternalSessionId:X(e.parentExternalSessionId),logFilePath:X(e.logFilePath),discoveredAt:X(e.discoveredAt),importStatus:X(e.importStatus)}}function ur(e){return e?JSON.stringify(e):null}function Z(e,t,n){n!==void 0&&(e[t]=n)}function dr(e,t,n){n!==void 0&&(e[t]=n??null)}function fr(e,t){let n={};return Z(n,`status`,e.status),Z(n,`parentSessionId`,e.parentSessionId),Z(n,`contextInheritance`,e.contextInheritance),Z(n,`rootSessionId`,e.rootSessionId),Z(n,`forkPointMessageId`,e.forkPointMessageId),Z(n,`branchKind`,e.branchKind),Z(n,`isOrchestrated`,e.isOrchestrated),Z(n,`clientId`,e.clientId),Z(n,`clientAccountId`,e.clientAccountId),Z(n,`title`,e.title),Z(n,`targetWorkingDirectory`,e.targetWorkingDirectory),Z(n,`createdAt`,e.createdAt),Z(n,`lastActivityAt`,e.lastActivityAt),dr(n,`executionTargetId`,e.executionTargetId),dr(n,`approvalPolicyOverride`,e.approvalPolicyOverride),dr(n,`metadata`,e.metadata),e.spawningToolCallId===null?n.spawningToolCallId=null:e.spawningToolCallId!==void 0&&(n.spawningToolCallId=B`coalesce(${t.spawningToolCallId}, ${e.spawningToolCallId})`),e.lastClientIdentityObservation!==void 0&&(n.lastClientIdentityObservation=ur(e.lastClientIdentityObservation)),n}function pr(e){let{bus:t,db:n}=e,{sessions:r,agents:i}=N(n,q);return t.on(C.get,async e=>{let[t]=await n.select().from(r).where(L(r.sessionId,e.payload.sessionId)).limit(1);if(!t){e.setResult({session:null});return}let a=await n.select().from(i).where(L(i.sessionId,e.payload.sessionId));e.setResult({session:Y(t,a)})})}function mr(e){let{bus:t,db:n}=e,{sessions:r}=N(n,q);return t.on(C.set,async e=>{let{sessionId:i,session:a,ifAbsent:o}=ve.parse(e.payload),s=lr(a);if(o){U(null,a);let o=M(await n.insert(r).values({sessionId:i,createdAt:a.createdAt,...s}).onConflictDoNothing());e.setResult({success:o,clientAccountChanged:o&&a.clientAccountId!==void 0}),o&&W(t,null,a);return}for(let o=0;o<3;o++){let[o]=await n.select().from(r).where(L(r.sessionId,i)).limit(1),c=o?Y(o,[]):null;if(U(c,a),M(await n.insert(r).values({sessionId:i,createdAt:a.createdAt,...s}).onConflictDoUpdate({target:r.sessionId,set:s,setWhere:Dn(o,r)}))){e.setResult({success:!0,clientAccountChanged:(c?.clientAccountId??null)!==(a.clientAccountId??null)}),W(t,c,a);return}}throw Error(`Failed to write session "${i}" with a stable client-account baseline`)})}function hr(e){let{bus:t,db:n}=e,{sessions:r}=N(n,q);return t.on(C.delete,async e=>{await n.delete(r).where(L(r.sessionId,e.payload.sessionId)),e.setResult({success:!0})})}function gr(e){let{bus:t,db:n}=e,{sessions:r}=N(n,q);return t.on(C.update,async e=>{let i=ye.request.parse(e.payload),{sessionId:a}=i,o=fr(i,r),s=Gn(i);if(Object.keys(o).length===0){e.setResult({success:!0,clientAccountChanged:!1});return}if(!s){let t=await n.update(r).set(o).where(L(r.sessionId,a));e.setResult({success:M(t),clientAccountChanged:!1});return}for(let s=0;s<3;s++){let[s]=await n.select().from(r).where(L(r.sessionId,a)).limit(1);if(!s){e.setResult({success:!1,clientAccountChanged:!1});return}let c=Y(s,[]),l=Wn(c,i);if(U(c,l),M(await n.update(r).set(o).where(F(L(r.sessionId,a),Dn(s,r))))){e.setResult({success:!0,clientAccountChanged:(c.clientAccountId??null)!==(l.clientAccountId??null)}),W(t,c,l);return}}throw Error(`Failed to update session "${a}" with a stable client-account baseline`)})}function _r(e,t){let n=[];return e.status!==`all`&&n.push(L(t.status,e.status)),e.executionTargetId!==void 0&&n.push(L(t.executionTargetId,e.executionTargetId)),F(...n)}function vr(e){let{bus:t,db:n}=e,{sessions:r,agents:i}=N(n,q);return t.on(C.list,async e=>{let{status:t=`all`,limit:a,offset:o=0,includePreview:s=!1,executionTargetId:c}=e.payload,l=_r({status:t,executionTargetId:c},r),u=l?n.select().from(r).where(l):n.select().from(r),d=a===void 0?await u.orderBy(Be(r.lastActivityAt)):await u.orderBy(Be(r.lastActivityAt)).limit(a).offset(o),[f]=await(l?n.select({count:I()}).from(r).where(l):n.select({count:I()}).from(r)),p=f?.count??0;if(d.length===0){e.setResult({sessions:[],total:p});return}let m=d.map(e=>e.sessionId),h=Hn(await n.select().from(i).where(R(i.sessionId,m))),{previewBySession:g,countBySession:_}=await Un(n,m,s),v=d.map(e=>{let t=Y(e,h.get(e.sessionId)??[]);return s&&g&&_?{...t,preview:{messageCount:_.get(e.sessionId)??0,firstUserMessage:g.get(e.sessionId)??null}}:t});e.setResult({sessions:v,total:p})})}function yr(e){let{bus:t,db:n}=e,{sessions:r}=N(n,q);return t.on(C.getStatusCounts,async e=>{e.payload;let t=await n.select({status:r.status,count:I()}).from(r).groupBy(r.status),i=0,a=0,o=0,s=0;for(let e of t)e.status===`active`?i=e.count:e.status===`closed`?a=e.count:e.status===`archived`?o=e.count:e.status===`discovered`&&(s=e.count);let c=i+a+o+s;e.setResult({all:c,active:i,closed:a,archived:o,discovered:s})})}function br(e,t){let n={bus:e,db:t},r=[pr(n),mr(n),hr(n),gr(n),vr(n),qn(n),Kn(n),yr(n),...sr(e,t)];return()=>r.forEach(e=>e())}function xr(e,t,n,r,i,a){return t===void 0&&n===void 0&&r===void 0&&i===void 0&&a===void 0?!1:(t!==void 0&&(e.adapterId=t),n!==void 0&&(e.cwd=n),r!==void 0&&(e.model=r),i!==void 0&&(e.allowedDirectories=i),a!==void 0&&(e.providerConfigId=a),!0)}function Sr(e){let t=new Map,n=[];return n.push(e.on(c.get,e=>{let n=t.get(e.payload.agentId)??null;e.setResult({agent:n})})),n.push(e.on(c.set,e=>{t.set(e.payload.agentId,e.payload.agent),e.setResult({success:!0})})),n.push(e.on(c.delete,e=>{let n=t.delete(e.payload.agentId);e.setResult({success:n})})),n.push(e.on(c.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(c.listBySession,e=>{let n=Array.from(t.values()).filter(t=>t.sessionId===e.payload.sessionId);e.setResult({agents:n})})),n.push(e.on(c.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(c.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(c.updateRuntime,e=>{let n=t.get(e.payload.agentId);if(!n){e.setResult({success:!1});return}let{adapterId:r,cwd:i,model:a,allowedDirectories:o,providerConfigId:s}=e.payload;if(!xr(n,r,i,a,o,s)){e.setResult({success:!1});return}n.lastActivityAt=Date.now(),e.setResult({success:!0})})),()=>n.forEach(e=>e())}async function Cr(e,t){if(t.length===0)return new Map;let{agents:n}=N(e,q),r=[...new Set(t)],i=await e.select().from(n).where(R(n.sessionId,r)),a=new Map;for(let e of i){let t=a.get(e.sessionId)??[];t.push(e),a.set(e.sessionId,t)}return a}async function wr(e,t){return P(e).fts.fetchFirstUserMessagePreviews(e,t)}async function Tr(e,t){if(t.length===0)return new Map;let{messages:n}=N(e,o),r=[...new Set(t)],i=await e.select({sessionId:n.sessionId,count:I()}).from(n).where(R(n.sessionId,r)).groupBy(n.sessionId),a=new Map;for(let e of i)a.set(e.sessionId,e.count);return a}function Er(e){if(e)try{let t=JSON.parse(e);return!t||typeof t!=`object`||Array.isArray(t)?void 0:t}catch{return}}function Dr(e){if(e!==null)try{let t=typeof e==`string`?JSON.parse(e):e,n=_e.safeParse(t);return n.success?n.data:void 0}catch{return}}function Or(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:Er(e.fork_transforms),targetWorkingDirectory:e.target_working_directory??void 0,metadata:Dr(e.metadata),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 kr(e,t){let n=P(t).fts,r=[];return r.push(e.on(C.search,async e=>{let{query:r,limit:i=20,status:a=`all`,isImported:o}=e.payload,s=r.trim();if(!s){e.setResult({sessions:[],total:0});return}let c={query:s,likePattern:`%${s.toLowerCase()}%`,status:a===`all`?void 0:a,isImported:o},l=await n.searchSessionRows(t,{...c,limit:i});if(l.length===0){e.setResult({sessions:[],total:0});return}let u=await n.countSessionMatches(t,c),d=l.map(e=>e.session_id),f=await Cr(t,d),p=await wr(t,d),m=await Tr(t,d),h=l.map(e=>Or(e,f.get(e.session_id)??[],p,m));e.setResult({sessions:h,total:u})})),()=>r.forEach(e=>e())}async function Ar(e,t){return(await Le(e).all(B`
|
|
49
|
-
WITH RECURSIVE ancestors AS (
|
|
50
|
-
SELECT session_id, parent_session_id
|
|
51
|
-
FROM sessions
|
|
52
|
-
WHERE session_id = ${t}
|
|
53
|
-
|
|
54
|
-
UNION ALL
|
|
55
|
-
|
|
56
|
-
SELECT s.session_id, s.parent_session_id
|
|
57
|
-
FROM sessions s
|
|
58
|
-
JOIN ancestors a ON s.session_id = a.parent_session_id
|
|
59
|
-
)
|
|
60
|
-
SELECT session_id FROM ancestors
|
|
61
|
-
`)).map(e=>e.session_id)}const jr=new Map;function Mr(e,t){let n=(jr.get(e)??Promise.resolve()).then(t),r=n.then(()=>void 0,()=>void 0);return jr.set(e,r),r.then(()=>{jr.get(e)===r&&jr.delete(e)}),n}function Nr(e,t){return`${e}:${t}`}async function Pr(e,t,n){let r=await e.requestOptional(a.getByIds,{sessionId:t,eventIds:[Nr(`turn.completed`,n)]});if(r.handled)return r.data.events.length>0}function Fr(e,t){return Mr(`${t.sessionId}${t.turnAnchorId}`,()=>Ir(e,t))}async function Ir(e,t){let{sessionId:n,turnAnchorId:r,startedAt:i,completedAt:a,status:o,error:s,usage:c,initiator:l}=t,{turn:u,created:d}=await e.request(S.ingestCompleted,{sessionId:n,turnAnchorId:r,startedAt:i,completedAt:a,status:o,error:s,usage:c,initiator:l}),f,p;for(let r of t.messages){let{messageId:t}=await e.request(T.upsertByAdapterMessageId,{sessionId:n,turnId:u.turnId,adapterMessageId:r.adapterMessageId,role:r.role,contentText:r.contentText,blocks:r.blocks,agentId:r.agentId,adapterSessionId:r.adapterSessionId,timestamp:r.timestamp,origin:r.origin});p??=t,f===void 0&&r.role===`user`&&(f=t)}let m=d;return d||(m=await Pr(e,n,u.turnId)===!1),m&&(p===void 0?console.warn(`[turn-ingest] Turn ${u.turnId} (session ${n}) ingested without messages — skipping session.turn.* emission (getByTurn contract unfulfillable)`):await Lr(e,t,u,f??p)),{turnId:u.turnId,turnNumber:u.turnNumber,created:d}}async function Lr(e,t,n,r){let{sessionId:i,status:a,error:o,usage:s,initiator:c,ingestionMarker:u}=t,d={sessionId:i,turnId:n.turnId,turnNumber:n.turnNumber,messageId:r,agentIds:[...new Set(t.messages.flatMap(e=>e.role===`assistant`&&e.agentId?[e.agentId]:[]))],initiator:c,ingestionMarker:u},f={sessionId:i,turnId:n.turnId,turnNumber:n.turnNumber,success:a===`completed`,error:o,usage:s,initiator:c,ingestionMarker:u};await l(e,{type:`turn.started`,sessionId:i,payload:d,eventId:Nr(`turn.started`,n.turnId)}),await l(e,{type:`turn.completed`,sessionId:i,payload:f,eventId:Nr(`turn.completed`,n.turnId)}),await e.emit(A.turn.started,d),await e.emit(A.turn.completed,f)}const Q=`observed-session-ingestion-policy`;function Rr(e,t){return e.emit(k.register,{capabilityId:Q,provider:t})}function zr(e,t){return e.emit(k.unregister,{capabilityId:Q,providerId:t})}const Br=oe(`log-import`,{listImporters:{request:E.object({}),response:E.object({importers:E.array(E.object({adapterName:E.string(),clientId:E.string().optional()}))})},importFile:{request:E.object({filePath:E.string(),adapterName:E.string(),ingestionMarker:be.optional()}),response:E.discriminatedUnion(`status`,[E.object({status:E.literal(`imported`),sessionId:E.string(),messageCount:E.number(),turnCount:E.number()}),E.object({status:E.literal(`skipped`),reason:E.enum([`no-importer`,`file-missing`])})])},importSession:{request:E.object({adapterSessionId:E.string(),adapterName:E.string(),ingestionMarker:be.optional()}),response:E.object({sessionId:E.string(),messageCount:E.number()})}}).subjects;function $(e,t){process.env.MAKAIO_DEBUG===`true`&&console.debug(`[ObservedSessionIngestion] ${e}`,t??{})}function Vr(e){if(!e||typeof e!=`object`)return!1;let t=e;return typeof t.id==`string`&&typeof t.displayName==`string`&&typeof t.decideObservedSessionIngestion==`function`}function Hr(e){return e.importStatus===`discovered`&&e.clientId!==void 0}var Ur=class{bus;managedAdapterSessionIds=new Set;importerByClientId=new Map;unresolvedClientIds=new Set;policyProviders=new Map;cleanups=[];constructor(e=se){this.bus=e,this.cleanups.push(this.bus.on(de.runtime.started,e=>{this.handleRuntimeStarted(e.payload)}),this.bus.on(de.session.started,async e=>{try{await this.handleSessionStarted(e.payload)}catch(t){console.warn(`[ObservedSessionIngestion] Failed to register observed session`,{clientId:e.payload.clientId,adapterSessionId:e.payload.adapterSessionId,error:t})}}),this.bus.on(de.session.turn.completed,async e=>{try{await this.handleTurnCompleted(e.payload)}catch(t){console.warn(`[ObservedSessionIngestion] Failed to trigger import for observed turn`,{clientId:e.payload.clientId,adapterSessionId:e.payload.adapterSessionId,error:t})}}),this.bus.on(k.register,e=>{let{provider:t}=e.payload;Vr(t)&&this.policyProviders.set(t.id,t)},{filter:{capabilityId:Q}}),this.bus.on(k.unregister,e=>{this.policyProviders.delete(e.payload.providerId)},{filter:{capabilityId:Q}}))}destroy(){for(let e of this.cleanups.splice(0))e()}handleRuntimeStarted(e){if(!(e.source.layer!==`adapter`||e.adapterSessionId===void 0)&&!this.managedAdapterSessionIds.has(e.adapterSessionId)){if(this.managedAdapterSessionIds.size>=1e4){let e=this.managedAdapterSessionIds.values().next().value;e!==void 0&&this.managedAdapterSessionIds.delete(e)}this.managedAdapterSessionIds.add(e.adapterSessionId)}}async resolveImporter(e){let t=this.importerByClientId.get(e);if(t!==void 0)return t===null?null:{adapterName:t};let n=await this.bus.requestOptional(Br.listImporters,{});if(!n.handled)return this.debugUnresolved(e,`no log-import service registered`),null;let r=n.data.importers.find(t=>t.clientId===e);return r===void 0?(this.importerByClientId.set(e,null),this.debugUnresolved(e,`no importer registered for client`),null):(this.importerByClientId.set(e,r.adapterName),{adapterName:r.adapterName})}debugUnresolved(e,t){this.unresolvedClientIds.has(e)||(this.unresolvedClientIds.add(e),$(`Skipping observed ingestion for client '${e}': ${t}`))}async handleSessionStarted(e){let t=e.adapterSessionId;if(t===void 0||t.length===0||this.managedAdapterSessionIds.has(t))return;let n=await this.resolveImporter(e.clientId);if(n===null)return;let r=Wr(e.metadata),i=await this.decideImportStatus({clientId:e.clientId,source:e.source,adapterSessionId:t,adapterName:n.adapterName,...e.cwd===void 0?{}:{cwd:e.cwd},...e.transcriptPath===void 0?{}:{transcriptPath:e.transcriptPath}});(await this.bus.requestOptional(C.importUpsert,{kind:`root`,parentAdapterSessionId:null,forkPointMessageId:null,externalSessionId:t,source:n.adapterName,clientId:e.clientId,cwd:e.cwd??null,...e.transcriptPath===void 0?{}:{logFilePath:e.transcriptPath},startedAt:e.observedAt,importStatus:i,...r===void 0?{}:{metadata:r}})).handled||$(`Session storage unavailable; skipped observed-session registration`,{adapterSessionId:t})}async handleTurnCompleted(e){let t=e.adapterSessionId;if(t===void 0||t.length===0||this.managedAdapterSessionIds.has(t))return;let n=await this.resolveImporter(e.clientId);if(n!==null&&await this.shouldImportObservedContent({clientId:e.clientId,source:e.source,adapterSessionId:t,adapterName:n.adapterName,...e.transcriptPath===void 0?{}:{transcriptPath:e.transcriptPath}})){if(e.transcriptPath!==void 0){let r=await this.bus.requestOptional(Br.importFile,{filePath:e.transcriptPath,adapterName:n.adapterName,ingestionMarker:`live`});r.handled?r.data.status===`skipped`&&$(`Targeted import skipped`,{adapterSessionId:t,reason:r.data.reason}):$(`log-import.importFile unhandled; watcher fallback will ingest`,{adapterSessionId:t});return}try{await this.bus.requestOptional(Br.importSession,{adapterSessionId:t,adapterName:n.adapterName,ingestionMarker:`live`})}catch(e){$(`Discovery-based import fallback failed (no stub yet); watcher will ingest`,{adapterSessionId:t,error:e})}}}async decideImportStatus(e){for(let t of this.policyProviders.values())if((await t.decideObservedSessionIngestion(e)).importStatus===`discovered`)return`discovered`;return`tracking`}async shouldImportObservedContent(e){let t=await this.bus.requestOptional(C.getByAdapterSessionId,{adapterSessionId:e.adapterSessionId,source:e.adapterName});if(t.handled&&t.data.session!==null){if(Hr(t.data.session))return!1;if(t.data.session.importStatus!==`discovered`)return!0}return await this.decideImportStatus(e)===`tracking`}};function Wr(e){if(e===void 0)return;let t=_e.safeParse(e);return t.success?t.data:void 0}const Gr=Ie(`import_cursors`,e=>({filePath:e.text(`file_path`).primaryKey(),bytesRead:e.int8(`bytes_read`).notNull(),lastModified:e.text(`last_modified`).notNull(),updatedAt:e.epochMs(`updated_at`).notNull()})),Kr=Gr.sqlite,qr=Gr.postgres,Jr=Fe({importCursors:Kr},{importCursors:qr});function Yr(e,t){let{importCursors:n}=N(t,Jr),r=[];return r.push(e.on(Je.get,async e=>{let{filePath:r}=e.payload,i=(await t.select().from(n).where(L(n.filePath,r)).limit(1))[0];if(!i){e.setResult({cursor:null});return}e.setResult({cursor:{filePath:i.filePath,bytesRead:i.bytesRead,lastModified:i.lastModified}})})),r.push(e.on(Je.set,async e=>{let{filePath:r,bytesRead:i,lastModified:a}=e.payload;await t.insert(n).values({filePath:r,bytesRead:i,lastModified:a,updatedAt:Date.now()}).onConflictDoUpdate({target:n.filePath,set:{bytesRead:i,lastModified:a,updatedAt:Date.now()}}),e.setResult({success:!0})})),r.push(e.on(Je.delete,async e=>{let{filePath:r}=e.payload,i=await t.delete(n).where(L(n.filePath,r));e.setResult({success:M(i)})})),()=>{r.forEach(e=>e())}}Ae(`embeddings`,{id:Oe(`id`).primaryKey({autoIncrement:!0}),entityType:je(`entity_type`).notNull(),entityId:je(`entity_id`).notNull(),model:je(`model`).notNull(),dimensions:Oe(`dimensions`).notNull(),content:je(`content`),embedding:Ee(`embedding`,{mode:`buffer`}).notNull(),createdAt:Oe(`created_at`).notNull()},e=>[De(`idx_embeddings_entity`).on(e.entityType,e.entityId),De(`idx_embeddings_model`).on(e.model),Me(`idx_embeddings_unique`).on(e.entityType,e.entityId,e.model)]);function Xr(e){if(e.byteLength%4!=0)throw Error(`Invalid embedding blob: byte length ${e.byteLength} is not a multiple of 4 (IEEE-754 f32 lanes)`);return e instanceof ArrayBuffer?new Float32Array(e):e.byteOffset%4==0?new Float32Array(e.buffer,e.byteOffset,e.byteLength/4):new Float32Array(Uint8Array.from(e).buffer)}var Zr=class{rawSql;engine;knownTables=new Set;constructor(e){this.rawSql=Le(e),this.engine=Re(this.rawSql.dialect)}slugify(e){return e.replace(/[^a-zA-Z0-9]/g,`_`).toLowerCase()}hashModel(e){let t=0;for(let n=0;n<e.length;n++)t=t*31+e.charCodeAt(n)>>>0;return t.toString(36)}getTableName(e){return`embeddings_idx_${this.slugify(e)}_${this.hashModel(e)}`}async ensureIndexTable(e,t){let n=this.getTableName(e);if(this.knownTables.has(n))return n;let r=B.identifier(n),i=B.raw(this.engine.capabilities.binaryColumnType);return await this.rawSql.run(B`CREATE TABLE IF NOT EXISTS ${r} (
|
|
62
|
-
entity_type TEXT NOT NULL,
|
|
63
|
-
entity_id TEXT NOT NULL,
|
|
64
|
-
embedding ${i} NOT NULL,
|
|
65
|
-
PRIMARY KEY (entity_type, entity_id)
|
|
66
|
-
)`),this.knownTables.add(n),n}async upsertIndexed(e,t,n,r,i){let a=await this.ensureIndexTable(e,t),o=new Uint8Array(i.buffer,i.byteOffset,i.byteLength),s=B.identifier(a);await this.rawSql.run(B`INSERT INTO ${s} (entity_type, entity_id, embedding)
|
|
67
|
-
VALUES (${n}, ${r}, ${o})
|
|
68
|
-
ON CONFLICT(entity_type, entity_id) DO UPDATE SET
|
|
69
|
-
embedding = excluded.embedding`)}async searchSimilar(e,t,n=10){let r=this.getTableName(e);if(!this.knownTables.has(r)){if(!await this.engine.capabilities.tableExists(this.rawSql,r))return[];this.knownTables.add(r)}let i=B.identifier(r),a=await this.rawSql.all(B`SELECT entity_type, entity_id, embedding FROM ${i}`);return a.length===0?[]:a.map(e=>{let n=Xr(e.embedding),r=this.euclideanDistance(t,n);return{entityType:e.entity_type,entityId:e.entity_id,distance:r}}).sort((e,t)=>e.distance-t.distance).slice(0,n)}async deleteByEntity(e,t,n){let r=this.getTableName(e);if(!this.knownTables.has(r)){if(!await this.engine.capabilities.tableExists(this.rawSql,r))return;this.knownTables.add(r)}let i=B.identifier(r);await this.rawSql.run(B`DELETE FROM ${i} WHERE entity_type = ${t} AND entity_id = ${n}`)}euclideanDistance(e,t){let n=0;for(let r=0;r<e.length;r++){let i=e[r]-t[r];n+=i*i}return Math.sqrt(n)}},Qr=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 x({sessionId:this.sessionId,agentIds:e.agentIds,turnNumber:e.turnNumber,turnId:e.turnId});return this._turns.push(t),t.addMessage(e.messageId),await u(this.bus,{sessionId:this.sessionId,turnId:t.turnId,turnNumber:t.turnNumber,agentIds:[...t.agentIds],messageId:e.messageId,ingestionMarker:`live`}),t}getActiveTurn(){for(let e=this._turns.length-1;e>=0;e--){let t=this._turns[e];if(!this._completedTurnIds.has(t.turnId))return t}}async completeTurn(e){if(!e.isComplete())throw Error(`Turn ${e.turnId} is not complete yet`);let t=e.getResult(),n={turnId:e.turnId,turnNumber:e.turnNumber,success:t.success,error:t.errors.length>0?t.errors.join(`; `):void 0};await l(this.bus,{type:`turn.completed`,sessionId:this.sessionId,payload:{sessionId:this.sessionId,...n}}),await this.emit(A.turn.completed,n),this._completedTurnIds.add(e.turnId)}async emit(e,t){await this.bus.emit(e,{...t,sessionId:this.sessionId})}};function $r(e,t){let{sessions:n}=N(t,q);async function r(i,a,o,s=0){if(s>100)throw Error(`Cycle detected in session lineage (depth > 100)`);let c=await t.select({adapterSessionId:n.adapterSessionId,sessionId:n.sessionId,parentSessionId:n.parentSessionId}).from(n).where(F(L(n.parentExternalSessionId,i),L(n.source,a)));for(let t of c)t.parentSessionId!==null&&await e.request(C.update,{sessionId:t.sessionId,rootSessionId:o}),t.adapterSessionId!==null&&await r(t.adapterSessionId,a,o,s+1)}return e.on(A.import.completed,async i=>{let{adapterSessionId:a,sessionId:o,source:s}=i.payload,c=await t.select({sessionId:n.sessionId,adapterSessionId:n.adapterSessionId,branchKind:n.branchKind}).from(n).where(F(L(n.parentExternalSessionId,a),L(n.source,s),z(n.parentSessionId)));if(c.length===0)return;let{session:l}=await e.request(C.get,{sessionId:o}),u=l?.rootSessionId??o;for(let t of c)await e.request(C.update,{sessionId:t.sessionId,parentSessionId:o,rootSessionId:u,...t.branchKind===null?{}:{branchKind:t.branchKind}}),t.adapterSessionId!==null&&await r(t.adapterSessionId,s,u)})}const ei=new Set([`Agent`,`spawn_subagent`]),ti=`[^A-Za-z0-9_-]`;function ni(e){return e.replaceAll(/[.*+?^${}()|[\]\\]/g,`\\$&`)}function ri(e,t){return t.test(e)}async function ii(e,t){let n=[],r,i=0;do{let a=await e.request(T.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 ai(e){let t=[];for(let n of e)for(let e of n.blocks)e.type===`tool_call`&&ei.has(e.name)&&t.push({toolCallId:e.toolCallId});return t}function oi(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(ri(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 si(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 ci(e){return[...e].map(e=>{let t=ni(e);return{id:e,pattern:RegExp(`(^|${ti})${t}($|${ti})`)}})}async function li(e,t,n){let{children:r}=await e.request(C.getChildren,{sessionId:n}),i=r.filter(e=>e.branchKind===`compress`);if(i.length===0)return;let{session:a}=await e.request(C.get,{sessionId:t}),o=a?.adapterSessionId;if(!o)return;let s=ci(new Set([o])),c=(await Promise.all(i.map(async t=>{let n=await ii(e,t.sessionId),r=ai(n);if(r.length===0)return null;let i=oi(n,s);if(i.size===0)return null;let a=[...i.entries()].filter(([,e])=>e===o);if(a.length!==1)return null;let[c]=a[0];return r.some(e=>e.toolCallId===c)?{parentSessionId:t.sessionId,toolCallId:c}:null}))).filter(e=>e!==null);c.length===1&&await e.request(C.update,{sessionId:t,parentSessionId:c[0].parentSessionId,spawningToolCallId:c[0].toolCallId})}async function ui(e,t,n){let r=t.parentExternalSessionId,i=t.source??n;if(!r||!i)return;let a=t.sessionId,{session:o}=await e.request(C.getByAdapterSessionId,{adapterSessionId:r,source:i}),s=o?.sessionId;if(!s)return;let{children:c}=await e.request(C.getChildren,{sessionId:s}),l=await di(e,c);if(l.size===0)return;let u=await ii(e,a),d=ai(u);if(d.length===0)return;let f=oi(u,ci(new Set(l.keys()))),p=new Map;for(let e of d){let t=f.get(e.toolCallId);t!==void 0&&p.set(t,(p.get(t)??0)+1)}let m=new Map;for(let e of d){let t=f.get(e.toolCallId),n=t===void 0?void 0:l.get(t);n!==void 0&&t!==void 0&&p.get(t)===1&&m.set(n,e.toolCallId)}if(m.size===0)return;let h=[...m].map(async([t,n])=>{try{await e.request(C.update,{sessionId:t,parentSessionId:a,spawningToolCallId:n})}catch(e){console.error(`[CompressLineageResolver] Failed to re-parent subagent`,{compressChildSessionId:a,parentMakaioSessionId:s,childSessionId:t,toolCallId:n,error:e})}});await Promise.allSettled(h)}async function di(e,t){return si(await Promise.all(t.filter(e=>e.branchKind===`subagent`).map(async t=>{let{session:n}=await e.request(C.get,{sessionId:t.sessionId});return n?.adapterSessionId?{sessionId:t.sessionId,adapterSessionId:n.adapterSessionId}:null})))}function fi(e){return e.on(A.import.completed,async t=>{try{let{sessionId:n,source:r}=t.payload,{session:i}=await e.request(C.get,{sessionId:n});if(!i)return;if(i.branchKind===`subagent`&&i.parentSessionId!==void 0){await li(e,n,i.parentSessionId);return}if(i.branchKind!==`compress`)return;await ui(e,i,r)}catch(e){console.error(`[CompressLineageResolver] Failed to resolve compress lineage`,{payload:t.payload,error:e})}})}function pi(e){return[...e].map(e=>{let t=ni(e);return{id:e,pattern:RegExp(`(^|${ti})${t}($|${ti})`)}})}async function mi(e,t,n){return si(await Promise.all(n.filter(e=>e.branchKind===`subagent`&&e.spawningToolCallId===void 0).map(async n=>{let{session:r}=await e.request(C.get,{sessionId:n.sessionId}),i=r?.source??r?.adapterName;return r?.adapterSessionId&&i===t?{sessionId:n.sessionId,adapterSessionId:r.adapterSessionId}:null})))}function hi(e){return e.on(A.import.completed,async t=>{try{let{sessionId:n,source:r}=t.payload,{children:i}=await e.request(C.getChildren,{sessionId:n}),a=await mi(e,r,i),o=new Set(a.keys());if(o.size===0)return;let s=await ii(e,n),c=ai(s);if(c.length===0)return;let l=oi(s,pi(o)),u=new Map;for(let e of c){let t=l.get(e.toolCallId);t!==void 0&&u.set(t,(u.get(t)??0)+1)}let d=new Map;for(let e of c){let t=l.get(e.toolCallId),n=t===void 0?void 0:a.get(t);n!==void 0&&t!==void 0&&u.get(t)===1&&d.set(n,e.toolCallId)}let f=[...d].map(async([t,r])=>{try{let{session:n}=await e.request(C.get,{sessionId:t});if(n?.spawningToolCallId!==void 0)return;await e.request(C.update,{sessionId:t,spawningToolCallId:r})}catch(e){console.error(`Failed to persist spawning tool call correlation`,{parentSessionId:n,childSessionId:t,toolCallId:r,error:e})}});await Promise.allSettled(f)}catch(e){console.error(`Failed to backfill spawningToolCallId for imported session`,{payload:t.payload,error:e})}})}function gi(e){return e.on(D.session.discovered,async t=>{let n=ge.safeParse(t.payload);if(!n.success)throw console.error(`[registerSessionDiscoveredHandler] Invalid adapter.session.discovered payload`,{issues:n.error.issues}),n.error;let{adapterId:r,adapterSessionId:i,adapterName:a,cwd:o,title:s,logFilePath:c,startedAt:l,kind:u,parentAdapterSessionId:d,forkPointMessageId:f}=n.data,p=tn({kind:u,parentAdapterSessionId:d??null,forkPointMessageId:f??null});await e.request(C.importUpsert,{externalSessionId:i,source:a,adapterId:r,cwd:o??null,...s===void 0?{}:{title:s},...c===void 0?{}:{logFilePath:c},...l===void 0?{}:{startedAt:l},...p})})}var _i=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(O.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{ct as $,zn as A,Gt as B,Or as C,Un as D,br as E,Qt as F,Bt as G,Wt as H,Xt as I,Ft as J,It as K,Yt as L,en as M,tn as N,Hn as O,Zt as P,ut as Q,Jt as R,wr as S,Sr as T,Ut as U,Kt as V,Ht as W,Tt as X,Pt as Y,bt as Z,Fr as _,$r as a,Cr as b,Yr as c,Br as d,Ze as et,Ur as f,zr as g,Rr as h,fi as i,Cn as j,Y as k,Kr as l,Q as m,gi as n,Qr as o,Hr as p,H as q,hi as r,Zr as s,_i as t,Gr as u,Ar as v,Er as w,Tr as x,kr as y,qt as z};
|
package/dist/tools-BrNm-een.mjs
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{x as e,z as t}from"./handlers-v47Gbsr1.mjs";import{SessionStorageSubjects as n}from"./services/session/storage/namespace.mjs";import{$ as r,A as i,E as a,G as o,I as s,U as c,Z as l,a as u,c as d,f,i as ee,n as te,r as ne,y as re}from"./session-DCbJwYEU.mjs";import{n as p}from"./namespace-DBHwyhME.mjs";import{t as ie}from"./capability-service-XlymTzz1.mjs";import"./services/adapter-subsystem/index.mjs";import{i as ae,s as oe}from"./model-registry-rYICIwyR.mjs";import{t as se}from"./tool-approval-service-MU_DmJsf.mjs";import{t as ce}from"./tray-menu-service-B2AxiQqL.mjs";import{r as m,t as h}from"./handler-BFNvtv5t.mjs";import{n as le}from"./package-CF_Zm2v4.mjs";import{t as ue}from"./filesystem-service-Bmyqo6po.mjs";import{z as g}from"zod";import{createHash as de}from"node:crypto";import{MakaioError as fe,createMakaioContext as pe}from"@makaio/framework/core";import{MakaioBus as _}from"@makaio/framework/bus";import{AdapterSubjects as me,ArtifactSubjects as v,CanonicalModelSubjects as he,DEFAULT_HARNESSES as ge,HarnessDefinitionCreateSchema as _e,HarnessSubjects as y,JsonValueSchema as ve,ToolSubjects as b,TransitionRuleDefinitionSchema as ye,WorkflowBlocksSubjects as be,WorkflowSubjects as xe,dep as x,extensionToken as S,validateToolAdapterIdentity as Se,zodSchemaToJsonRecord as C}from"@makaio/framework/contracts";import{BaseService as w}from"@makaio/framework/service-base";import{registerDrizzleHandlers as T}from"@makaio/framework/storage/drizzle";import{slugifyProviderConfigName as E}from"@makaio/framework/contracts/config";import{ClientAccountIdentifierSchema as Ce,ClientSessionAccountObserveSchema as we,ClientSubjects as D}from"@makaio/framework/contracts/client";import{FacetSubjects as O}from"@makaio/framework/contracts/facet";import{MaterializationSubjects as k}from"@makaio/framework/contracts/materialization";import{FILE_ACCESS_RULES_KEY as Te,FILE_ACCESS_RULES_KEY as Ee,ToolErrorCodes as A,errorToToolResult as De,extractToolFilePath as Oe,toolError as j,toolSuccess as ke}from"@makaio/framework/tools";import{ConditionSchema as Ae,evaluate as je}from"@makaio/framework/rules";import{evaluateSync as Me}from"@makaio/framework/expression";import{GitService as Ne}from"@makaio/framework/git";const Pe=[{type:`supersedes`,symmetry:`asymmetric`},{type:`contradicts`,symmetry:`symmetric`},{type:`derives_from`,symmetry:`asymmetric`},{type:`responds_to`,symmetry:`asymmetric`},{type:`contains`,symmetry:`asymmetric`},{type:`refines`,symmetry:`asymmetric`},{type:`scopes`,symmetry:`asymmetric`},{type:`references`,symmetry:`asymmetric`},{type:`evidenced_by`,symmetry:`asymmetric`}],M={extension:0,"factory-repo":1,"target-repo":2},N={source:`extension`,ownerKey:`extension:bus`};function P(e){return`${e.source}:${e.ownerKey}`}function Fe(e,t){return e.source===t.source&&e.ownerKey===t.ownerKey}function F(e){return structuredClone(e)}function I(e,t){return`${e}@${t}`}var L=class extends w{kinds=new Map;kindContributions=new Map;nextKindContributionOrder=0;relationTypes=new Map;constructor(e){super(e)}async onInit(){for(let e of Pe)this.relationTypes.set(e.type,e);this.registerHandler(v.kind.register,e=>{this.registerKind(e.payload),e.setResult({registered:!0})}),this.registerHandler(v.kind.list,e=>{let{kind:t}=e.payload,n=[...this.kinds.values()].filter(e=>!t||e.kind===t).map(F);e.setResult({kinds:n})}),this.registerHandler(v[`relation-type`].register,e=>{this.storeRelationType(e.payload),e.setResult({registered:!0})}),this.registerHandler(v[`relation-type`].list,e=>{let{type:t}=e.payload,n=[...this.relationTypes.values()].filter(e=>!t||e.type===t).map(F);e.setResult({relationTypes:n})})}compareKindContributions(e,t){let n=M[e.owner.source]-M[t.owner.source];return n===0?e.owner.source===`extension`?t.order-e.order:e.order-t.order:n}findSameTierRepoConflict(e,t,n){return[...e.values()].find(e=>!Fe(e.owner,t)&&e.owner.source===t.source&&t.source!==`extension`&&e.order<=n)}recomputeKindWinner(e){let t=this.kindContributions.get(e),n=this.kinds.get(e);if(t===void 0||t.size===0){this.kindContributions.delete(e),this.kinds.delete(e),this.emitKindChangedFromKey(e,n);return}let r;for(let e of t.values())(r===void 0||this.compareKindContributions(e,r)<0)&&(r=e);let i=r;this.kinds.set(e,F(i.registration)),JSON.stringify(n)!==JSON.stringify(i.registration)&&this.bus.emit(v.kind.changed,{kind:i.registration.kind,schemaVersion:i.registration.schemaVersion})}emitKindChangedFromKey(e,t){t!==void 0&&this.bus.emit(v.kind.changed,{kind:t.kind,schemaVersion:t.schemaVersion})}registerKind(e,t=N){let n=I(e.kind,e.schemaVersion),r=this.kindContributions.get(n)??new Map,i=P(t),a=r.get(i),o=t.source===`extension`?this.nextKindContributionOrder:a?.order??this.nextKindContributionOrder,s=this.findSameTierRepoConflict(r,t,o);if(s!==void 0){console.warn(`[ArtifactSchemaRegistry] Artifact kind '${n}' is already registered by '${s.owner.ownerKey}' at the same priority; keeping the existing owner.`);return}r.set(i,{owner:t,registration:F(e),order:t.source===`extension`||a===void 0?this.nextKindContributionOrder++:a.order}),this.kindContributions.set(n,r),this.recomputeKindWinner(n)}deregisterKind(e,t,n=N){let r=I(e,t),i=this.kindContributions.get(r);i!==void 0&&(i.delete(P(n)),this.recomputeKindWinner(r))}replaceKindRegistrationsForOwner(e,t){let n=new Set,r=P(e),i=new Map;for(let[e,t]of this.kindContributions.entries()){let a=t.get(r);a!==void 0&&(i.set(e,a.order),t.delete(r),n.add(e))}for(let a of t){let t=I(a.kind,a.schemaVersion),o=this.kindContributions.get(t)??new Map,s=e.source===`extension`?void 0:i.get(t),c=s??this.nextKindContributionOrder,l=this.findSameTierRepoConflict(o,e,c);if(l!==void 0){console.warn(`[ArtifactSchemaRegistry] Artifact kind '${t}' is already registered by '${l.owner.ownerKey}' at the same priority; keeping the existing owner.`);continue}o.set(r,{owner:e,registration:F(a),order:s??this.nextKindContributionOrder++}),this.kindContributions.set(t,o),n.add(t)}for(let e of n)this.recomputeKindWinner(e)}storeRelationType(e){let t=this.relationTypes.get(e.type);if(t){if(t.symmetry!==e.symmetry)throw Error(`Relation type '${e.type}' is already registered with different symmetry (existing: '${t.symmetry}', new: '${e.symmetry}')`);return}this.relationTypes.set(e.type,F(e))}getKind(e,t){let n=this.kinds.get(I(e,t));return n?F(n):void 0}getRelationType(e){let t=this.relationTypes.get(e);return t?F(t):void 0}onDestroy(){this.kinds.clear(),this.kindContributions.clear(),this.relationTypes.clear(),this.nextKindContributionOrder=0}},R=class extends Error{reason;hookId;constructor(e,t){super(`Artifact write rejected by hook '${t}': ${e}`),this.reason=e,this.hookId=t,this.name=`ArtifactLifecycleHookRejectedError`}};function z(e,t){return e?!(e.kind!==void 0&&e.kind!==`*`&&e.kind!==t.kind||e.schemaVersion!==void 0&&e.schemaVersion!==t.schemaVersion):!0}function B(e){return e.priority??0}function Ie(e,t,n){return e.filter(e=>e.event===t&&z(e.filter,n)).sort((e,t)=>B(t)-B(e))}function Le(e,t,n){return e.filter(e=>e.event===t&&z(e.filter,n)).sort((e,t)=>B(t)-B(e))}function Re(e,t){return{...e,...`data`in t?{data:t.data}:{},...`relations`in t?{relations:t.relations}:{},...`confidence`in t?{confidence:t.confidence}:{},...`representations`in t?{representations:t.representations}:{},...`actor`in t?{actor:t.actor}:{}}}function ze(e,t){let{confidence:n,representations:r,...i}=e;return{...i,data:t.data,relations:[...t.relations],...t.confidence===void 0?{}:{confidence:t.confidence},...t.representations===void 0?{}:{representations:t.representations},actor:t.actor}}var V=class extends w{registrations=new Map;constructor(e){super(e)}async onInit(){}onDestroy(){this.registrations.clear()}registerHooks(e,t){let n=[...t];this.registrations.set(e,n);let r=!1;return()=>{r||(r=!0,this.registrations.get(e)===n&&this.registrations.delete(e))}}allHooks(){let e=[];for(let t of this.registrations.values())e.push(...t);return e}async runBeforeCreate(e){return this.runBeforeHooks(`beforeCreate`,e)}async runBeforeRevise(e){return this.runBeforeHooks(`beforeRevise`,e)}async runBeforeHooks(e,t){let{draft:n,previous:r,kindRegistration:i}=t,a=Ie(this.allHooks(),e,n),o=new Map,s={kind:n.kind,schemaVersion:n.schemaVersion,scope:n.scope,data:n.data,relations:n.relations,...n.confidence===void 0?{}:{confidence:n.confidence},...n.representations===void 0?{}:{representations:n.representations},actor:n.actor},c=!1;for(let t of a){let n,a={event:e,get draft(){return s},previous:r,kindRegistration:i,bus:this.bus,meta:o,rejectCreation(e){n={reason:e}},skipMaterialization(){c=!0},updateDraft(e){s=Re(s,e)}};if(await t.handler(a),n)throw new R(n.reason,t.id)}return{draft:ze(n,s),skipMaterialization:c,meta:o}}async runAfterCreate(e){await this.runAfterHooks(`afterCreate`,`created`,e)}async runAfterRevise(e){await this.runAfterHooks(`afterRevise`,`revised`,e)}async runAfterStatusChanged(e){await this.runAfterHooks(`afterStatusChanged`,`status-changed`,e)}async runAfterObservationAdded(e){await this.runAfterHooks(`afterObservationAdded`,`observation-added`,e)}async runAfterHooks(e,t,n){let{artifact:r,previous:i,observation:a,kindRegistration:o,projectionPolicy:s,skipDefaultProjection:c,meta:l}=n,u=Le(this.allHooks(),e,r),d=this.bus,f=!1;for(let n of u){if(c&&(n.priority??0)<0||f&&(n.priority??0)<0)continue;let u={event:e,semanticEvent:t,artifact:r,previous:i?{refClass:`artifact`,id:i.id,revision:i.revision,kind:i.kind}:void 0,observation:a,kindRegistration:o,projectionPolicy:s,bus:d,meta:l,preventDefault(){f=!0},async resolveRelations(e){let t=r.relations.filter(t=>t.type===e).map(e=>e.target),n=[];for(let e of t){let t=e;if(t.refClass===`artifact`){let e=t,{artifact:r}=await d.request(v.resolve,{ref:e});r&&n.push(r)}}return n}};try{await n.handler(u)}catch(t){console.error(`[ArtifactLifecycleHookRegistry] Hook '${n.id}' threw during '${e}':`,t)}}}};function H(e){return structuredClone(e)}var Be=class extends w{namespaces=new Map;constructor(e){super(e)}async onInit(){this.registerHandler(O.namespace.register,e=>{this.registerNamespace(e.payload),e.setResult({registered:!0})}),this.registerHandler(O.namespace.list,e=>{let{namespace:t}=e.payload,n=[...this.namespaces.values()].filter(e=>!t||e.namespace===t).map(H);e.setResult({namespaces:n})})}registerNamespace(e){let t=this.namespaces.get(e.namespace);if(t){if(JSON.stringify(t)!==JSON.stringify(e))throw Error(`Facet namespace '${e.namespace}' is already registered with a different definition`);return}this.namespaces.set(e.namespace,H(e)),this.bus.emit(O.namespace.changed,{namespace:e.namespace})}deregisterNamespace(e){this.namespaces.delete(e)&&this.bus.emit(O.namespace.changed,{namespace:e})}getNamespace(e){let t=this.namespaces.get(e);return t?H(t):void 0}onDestroy(){this.namespaces.clear()}};function U(e){return structuredClone(e)}var Ve=class extends w{bindings=new Map;constructor(e){super(e)}async onInit(){this.registerHandler(k.surfaceBinding.register,e=>{this.registerBinding(e.payload),e.setResult({registered:!0})}),this.registerHandler(k.surfaceBinding.list,e=>{let{provider:t,namespace:n}=e.payload,r=[...this.bindings.values()].filter(e=>(!t||e.provider===t)&&(!n||e.namespace===n)).map(U);e.setResult({bindings:r})})}registerBinding(e){let t=this.bindings.get(e.id);if(t){if(JSON.stringify(t)!==JSON.stringify(e))throw Error(`Surface binding '${e.id}' is already registered with a different definition`);return}this.bindings.set(e.id,U(e)),this.bus.emit(k.surfaceBinding.changed,{id:e.id,provider:e.provider})}deregisterBinding(e){let t=this.bindings.get(e);t&&(this.bindings.delete(e),this.bus.emit(k.surfaceBinding.changed,{id:e,provider:t.provider}))}getBinding(e){let t=this.bindings.get(e);return t?U(t):void 0}onDestroy(){this.bindings.clear()}},W=class extends fe{code;suggestions;constructor(e,t,n){super(e),this.code=t,this.suggestions=n}},He=class{deps;constructor(e){this.deps=e}async resolve(e,t){switch(e.kind){case`bare`:return this.resolveBare(e.model);case`qualified`:return this.resolveQualified(e.segment1,e.segment2,e.model)}}async resolveBare(e){let t=await this.deps.resolveDefaultModelTarget(e);switch(t.kind){case`resolved`:return{kind:`adapter`,adapterName:t.target.adapterName,providerConfigId:t.target.providerConfigId,model:t.target.model};case`ambiguous`:throw new W(`Model "${e}" is available via multiple providers. Use a qualified reference to select one.`,`ambiguous-model`,t.matches.map(e=>e.qualifiedName));case`not-found`:throw new W(`Model "${e}" was not found in any enabled adapter's registry.`,`model-not-found`)}}async resolveQualified(e,t,n){return t===void 0?this.resolveQualifiedOneSegment(e,n):this.resolveQualifiedTwoSegments(e,t,n)}async resolveQualifiedTwoSegments(e,t,n){let r=await this.deps.listEnabledAdapterNames();if(!r.includes(e))throw new W(`Adapter "${e}" is not enabled or does not exist.`,`adapter-not-found`);return{kind:`adapter`,adapterName:e,providerConfigId:await this.resolveProviderSegment(t,e,r),model:n}}async resolveQualifiedOneSegment(e,t){let n=await this.deps.listEnabledAdapterNames();if(n.includes(e)){let n=await this.deps.getDefaultBinding(e);if(!n)throw new W(`Adapter "${e}" has no enabled provider binding. Configure or enable a provider binding first.`,`no-binding`);return{kind:`adapter`,adapterName:e,providerConfigId:n.providerConfigId,model:t}}let r=await this.deps.findProviderConfigByName(e);if(r)return{kind:`adapter`,adapterName:(await this.pickBindingForConfig(r.id,n)).adapterName,providerConfigId:r.id,model:t};let i=await this.deps.findProviderDefinition(e,n);if(i){let r=await this.deps.findDefaultConfigForDefinition(i.id);if(!r)throw new W(`Provider definition "${e}" exists but has no configured provider config. Create a provider config first.`,`provider-not-found`);return{kind:`adapter`,adapterName:(await this.pickBindingForConfig(r.id,n)).adapterName,providerConfigId:r.id,model:t}}throw new W(`"${e}" does not match any enabled adapter name, provider config name, or provider definition ID.`,`adapter-not-found`)}async resolveProviderSegment(e,t,n){let r=await this.deps.findProviderConfigByName(e);if(r)return await this.requireBindingForAdapterAndConfig(t,r.id,e),r.id;let i=await this.deps.findProviderDefinition(e,n);if(i){let n=await this.deps.findConfigForDefinitionAndAdapter(i.id,t);if(!n)throw new W(`Provider definition "${e}" has no enabled config bound to adapter "${t}". Create a provider config and binding first.`,`no-binding`);return n.id}throw new W(`"${e}" does not match any provider config name or provider definition ID.`,`provider-not-found`)}async requireBindingForAdapterAndConfig(e,t,n){if(!(await this.deps.listBindingsForConfig(t)).some(t=>t.adapterName===e))throw new W(`No binding exists between adapter "${e}" and provider "${n}". Create a binding first.`,`no-binding`)}async pickBindingForConfig(e,t){let n=(await this.deps.listBindingsForConfig(e)).filter(e=>t.includes(e.adapterName));if(n.length===0)throw new W(`Provider config "${e}" has no bindings to enabled adapters. Bind it to an enabled adapter first.`,`no-binding`);return n.find(e=>e.isDefault)??n[0]}},Ue=class e extends w{constructor(e=_){super(e)}async onInit(){await this.bus.request(p.ensureReady,{});let e=new He(this.createDeps());this.registerHandler(he.resolve,async t=>{let n=await e.resolve(t.payload.parsed,t.payload.context);t.setResult(n)})}createDeps(){let e=this.bus,t=async()=>{let{adapters:t}=await e.request(p.listAdapters,{});return t.filter(e=>e.enabled).map(e=>e.name)},n=async t=>{let[n,r]=await Promise.all([e.request(p.getDefaultBinding,{adapterName:t}),this.listEnabledProviderConfigIds()]);if(n.binding&&r.has(n.binding.providerConfigId))return n.binding;let{bindings:i}=await e.request(p.listBindings,{adapterName:t}),a=i.filter(e=>r.has(e.providerConfigId));return a.find(e=>e.isDefault)??a[0]},r=async t=>{let{definitions:n}=await e.request(p.getProviderDefinitionsByAdapter,{adapterName:t});return n},i=async t=>{let{bindings:n}=await e.request(p.listBindingsByConfig,{providerConfigId:t});return n},a=async t=>{let{configs:n}=await e.request(p.listProviderConfigs,{enabled:!0}),r=E(t);return n.find(e=>E(e.name)===r)},o=this.buildFindProviderDefinition(t,r),s=async t=>{let{configs:n}=await e.request(p.listProviderConfigsByDefinition,{definitionId:t}),r=n.filter(e=>e.enabled);return r.find(e=>e.isDefault)??r[0]},c=async(t,n)=>{let{config:r}=await e.request(p.findConfigForDefinitionAndAdapter,{definitionId:t,adapterName:n});return r?{id:r.id}:void 0};return{listEnabledAdapterNames:t,getDefaultBinding:n,findProviderConfigByName:a,findProviderDefinition:o,listBindingsForConfig:i,findDefaultConfigForDefinition:s,findConfigForDefinitionAndAdapter:c,resolveDefaultModelTarget:this.buildResolveDefaultModelTarget(t,r,c)}}buildFindProviderDefinition(e,t){return async(n,r)=>{let i=r??await e();for(let e of i){let r=(await t(e)).find(e=>e.id===n);if(r)return r}}}buildResolveDefaultModelTarget(t,n,r){let i=this.bus;return async a=>{let o=await t(),s=await Promise.all(o.map(async e=>({adapterName:e,definitions:await n(e)}))),c=Array.from(new Set(s.flatMap(({definitions:e})=>e.map(e=>e.id))));if(c.length===0)return{kind:`not-found`};let{matches:l}=await i.request(oe.checkModelInProviders,{providerIds:c,model:a}),u=(await Promise.all(s.map(({adapterName:e,definitions:t})=>this.collectAdapterCandidates(e,t,a,l,r)))).flat();return e.buildResolution(u)}}async collectAdapterCandidates(e,t,n,r,i){let a=t.filter(e=>e.id in r),o=await Promise.all(a.map(t=>i(t.id,e)));return a.flatMap((t,r)=>{let i=o[r];return i?[{adapterName:e,definitionId:t.id,providerConfigId:i.id,qualifiedName:`${e}/${t.id}::${n}`,model:n}]:[]})}static buildResolution(e){let t=Array.from(new Map(e.map(e=>[this.routeKey(e),e])).values());if(t.length===0)return{kind:`not-found`};if(t.length>1)return{kind:`ambiguous`,matches:t.map(({adapterName:e,definitionId:t,qualifiedName:n})=>({adapterName:e,definitionId:t,qualifiedName:n}))};let[n]=t;return{kind:`resolved`,target:{adapterName:n.adapterName,providerConfigId:n.providerConfigId,definitionId:n.definitionId,model:n.model}}}static routeKey(e){return`${e.adapterName}\0${e.definitionId}\0${e.providerConfigId}`}async listEnabledProviderConfigIds(){let{configs:e}=await this.bus.request(p.listProviderConfigs,{enabled:!0});return new Set(e.map(e=>e.id))}};const G={name:`makaio.canonical-model`,displayName:`Canonical Model`,version:`0.1.0`,critical:!1,create:e=>new Ue(e.bus)};function We(e){let t=Se({adapterId:e?.adapterId,adapterName:e?.adapterName,contextOverrides:{adapterId:e?.contextOverrides?.adapterId,adapterName:e?.contextOverrides?.adapterName}}),n=t.issues[0];return n?j(A.VALIDATION_FAILED,n.message):ke(t.effectiveIdentity)}function Ge(e){let t=e?.allowedDirectories;if(Array.isArray(t))return t.filter(e=>typeof e==`string`)}async function Ke(e,t,n,r){let i=new Map;for(let e of t)i.set(e.name,await r(e.name));let a=t.filter(e=>{let t=i.get(e.name);return!t?.allowedAdapters||t.allowedAdapters.length===0?!0:t.allowedAdapters.includes(n)}),o=new Set(a.map(e=>e.name));return{filteredTools:e.filter(e=>!(!o.has(e.toolsetName)||i.get(e.toolsetName)?.disabledTools?.includes(e.name))),filteredToolsets:a}}function qe(){return`exec_${Date.now()}_${Math.random().toString(36).substring(2,9)}`}var Je=class{bus;toolsets=new Map;tools=new Map;cleanupHandlers=[];handlerPriority;policyProvider;fileAccessRuleProvider;revision=0;constructor(e){this.bus=e?.bus??_,this.handlerPriority=e?.handlerPriority??0,this.policyProvider=e?.policyProvider,this.fileAccessRuleProvider=e?.fileAccessRuleProvider,this.registerHandlers()}registerHandlers(){let e=this.bus.on(b.list,async e=>{let{toolsetName:t,adapterId:n,adapterName:r}=e.payload,{tools:i,toolsets:a}=await this.listToolsWithToolsets({toolsetName:t,adapterId:n,adapterName:r});e.setResult({tools:i,toolsets:a})},{priority:this.handlerPriority});this.cleanupHandlers.push(e);let t=this.bus.on(b.execute,async e=>{let{toolName:t,input:n,adapterId:r,adapterName:i,contextOverrides:a}=e.payload,o=await this.execute(t,n,{contextOverrides:a,adapterId:r,adapterName:i});e.setResult(o)},{priority:this.handlerPriority});this.cleanupHandlers.push(t)}async register(e){if(this.toolsets.has(e.metadata.name))throw Error(`Toolset '${e.metadata.name}' is already registered`);let t=[],n=[];for(let[,r]of Object.entries(e.tools)){let i=r.metadata.name;if(this.tools.has(i))throw Error(`Tool '${i}' is already registered (from toolset '${this.tools.get(i).toolsetName}')`);n.push({tool:r,toolsetName:e.metadata.name}),t.push(i)}this.toolsets.set(e.metadata.name,e);for(let e=0;e<n.length;e+=1)this.tools.set(t[e],n[e]);await this.emitRegistryChanged(`toolset-registered`,e.metadata.name).catch(t=>console.warn(`[ToolRegistry] Failed to emit ${b.registryChanged.subject} for '${e.metadata.name}':`,t)),await this.bus.emit(b.registered,{toolsetName:e.metadata.name,toolsetVersion:e.metadata.version,toolNames:t}).catch(t=>console.warn(`[ToolRegistry] Failed to emit ${b.registered.subject} for '${e.metadata.name}':`,t))}async deregister(e){let t=this.toolsets.get(e);if(!t)throw Error(`Toolset '${e}' is not registered`);for(let e of Object.values(t.tools))this.tools.delete(e.metadata.name);this.toolsets.delete(e),await this.emitRegistryChanged(`toolset-unregistered`,e).catch(t=>console.warn(`[ToolRegistry] Failed to emit ${b.registryChanged.subject} for '${e}':`,t))}async emitRegistryChanged(e,t){this.revision+=1,await this.bus.emit(b.registryChanged,{revision:this.revision,reason:e,toolsetName:t})}async execute(e,t,n){let r=this.tools.get(e);if(!r)return j(A.TOOL_NOT_FOUND,`Tool '${e}' not found`);let i=We(n);if(!i.success)return i;let{tool:a,toolsetName:o}=r,s=await this.checkPolicy(o,e,i.data.adapterId,i.data.adapterName);if(s)return s;let c=qe(),l=Date.now();await this.bus.emit(b.started,{toolName:e,toolsetName:o,executionId:c,timestamp:l});try{let r=a.inputSchema.safeParse(t);if(!r.success){let t=j(A.VALIDATION_FAILED,`Input validation failed`,{issues:r.error.issues});return await this.bus.emit(b.error,{toolName:e,toolsetName:o,executionId:c,timestamp:Date.now(),error:t.error}),t}let s=await this.buildExecutionContext(n,i.data),u=await a.execute(r.data,s);return u.success?await this.bus.emit(b.completed,{toolName:e,toolsetName:o,executionId:c,timestamp:Date.now(),durationMs:Date.now()-l}):await this.bus.emit(b.error,{toolName:e,toolsetName:o,executionId:c,timestamp:Date.now(),error:u.error}),u}catch(t){let n=De(t);return await this.bus.emit(b.error,{toolName:e,toolsetName:o,executionId:c,timestamp:Date.now(),error:n.error}),n}}async buildExecutionContext(e,t){let n=e?.contextOverrides?.constraints;if(this.fileAccessRuleProvider){let t=e?.contextOverrides?.cwd??process.cwd(),r=Ge(n),i=await this.fileAccessRuleProvider(t,r);n={...n,[Te]:i}}let r=pe({...e?.contextOverrides,constraints:n}),i=e?.contextOverrides;return{...r,bus:this.bus,sessionId:i?.sessionId,agentId:i?.agentId,adapterId:t.adapterId,adapterName:t.adapterName,adapterSessionId:i?.adapterSessionId,turnId:i?.turnId,turnContext:i?.turnContext,toolCallId:i?.toolCallId}}async checkPolicy(e,t,n,r){if(!this.policyProvider)return null;let i=await this.policyProvider(e);if(!i)return null;if(i.disabledTools?.includes(t))return j(A.PERMISSION_DENIED,`Tool '${t}' is disabled`,{toolsetName:e,toolName:t});if(i.allowedAdapters&&i.allowedAdapters.length>0){let t=r??n;if(!t||!i.allowedAdapters.includes(t))return j(A.PERMISSION_DENIED,`Adapter not allowed for toolset '${e}'`,{toolsetName:e,adapterId:n,adapterName:r,allowedAdapters:i.allowedAdapters})}return null}listTools(e){let t=[];for(let[,n]of this.tools){if(e?.toolsetName&&n.toolsetName!==e.toolsetName)continue;let{$schema:r,...i}=g.toJSONSchema(n.tool.inputSchema);t.push({name:n.tool.metadata.name,description:n.tool.metadata.description,toolsetName:n.toolsetName,annotations:n.tool.metadata.annotations,inputSchema:i})}return t}listToolsets(){let e=[];for(let[,t]of this.toolsets){let n={name:t.metadata.name,description:t.metadata.description,version:t.metadata.version,toolCount:Object.keys(t.tools).length};if(t.configSchema){let{$schema:e,...r}=g.toJSONSchema(t.configSchema);n.configSchema=r}e.push(n)}return e}async listToolsWithToolsets(e){let t=this.listTools(e),n=this.listToolsets(),r=e?.toolsetName?n.filter(t=>t.name===e.toolsetName):n,i=e?.adapterName??e?.adapterId;if(this.policyProvider&&i){let{filteredTools:e,filteredToolsets:n}=await Ke(t,r,i,this.policyProvider);return{tools:e,toolsets:n}}return{tools:t,toolsets:r}}getTool(e){return this.tools.get(e)?.tool}getToolset(e){return this.toolsets.get(e)}dispose(){for(let e of this.cleanupHandlers)e();this.cleanupHandlers.length=0}destroy(){this.dispose()}},Ye=class extends w{triggersByExtension=new Map;stepsByExtension=new Map;revision=0;cache=null;constructor(e){super(e)}onInit(){this.registerHandler(be.list,e=>{e.setResult({triggers:this.listTriggers(),steps:this.listSteps()})})}async register(e,t){let n=[],r=[],i=this.snapshotExtensionState(e),a=new Set;for(let e of this.triggersByExtension.values())for(let t of e)a.add(t.metadata.name);for(let e of this.stepsByExtension.values())for(let t of e)a.add(t.metadata.name);if(t.triggers)for(let r of t.triggers)this.assertExtensionNamespace(e,r.metadata),this.assertNoCollision(r.metadata,a),a.add(r.metadata.name),n.push({metadata:{...r.metadata,extensionName:e},configSchema:C(r.configSchema),outputSchema:C(r.outputSchema)});if(t.steps)for(let n of t.steps)this.assertExtensionNamespace(e,n.metadata),this.assertNoCollision(n.metadata,a),a.add(n.metadata.name),r.push({metadata:{...n.metadata,extensionName:e},configSchema:C(n.configSchema),inputSchema:C(n.inputSchema),outputSchema:C(n.outputSchema),runs:structuredClone(n.runs)});if(n.length>0&&this.triggersByExtension.set(e,n),r.length>0&&this.stepsByExtension.set(e,r),n.length>0||r.length>0){this.revision+=1;try{await this.emitChanged(e,`registered`)}catch(t){throw this.restoreExtensionState(e,i),t}}}async deregister(e){let t=this.snapshotExtensionState(e),n=this.triggersByExtension.delete(e),r=this.stepsByExtension.delete(e);if(n||r){this.revision+=1;try{await this.emitChanged(e,`deregistered`)}catch(n){throw this.restoreExtensionState(e,t),n}}}listTriggers(){return this.getCache().triggers.map(Xe)}listSteps(){return this.getCache().steps.map(Ze)}async emitChanged(e,t){await this.bus.emit(be.changed,{extensionName:e,revision:this.revision,reason:t})}getCache(){return(!this.cache||this.cache.revision!==this.revision)&&(this.cache={revision:this.revision,triggers:[...this.triggersByExtension.values()].flat(),steps:[...this.stepsByExtension.values()].flat()}),this.cache}snapshotExtensionState(e){return{triggers:this.triggersByExtension.get(e),steps:this.stepsByExtension.get(e),revision:this.revision,cache:this.cache}}restoreExtensionState(e,t){t.triggers?this.triggersByExtension.set(e,t.triggers):this.triggersByExtension.delete(e),t.steps?this.stepsByExtension.set(e,t.steps):this.stepsByExtension.delete(e),this.revision=t.revision,this.cache=t.cache}assertNoCollision(e,t){if(t.has(e.name))throw Error(`Workflow block name collision: '${e.name}' is already registered`)}assertExtensionNamespace(e,t){let n=`${e}.`;if(!t.name.startsWith(n))throw Error(`Workflow block '${t.name}' must be namespaced by extension '${n}'`)}};function Xe(e){return{metadata:Qe(e.metadata),configSchema:structuredClone(e.configSchema),outputSchema:structuredClone(e.outputSchema)}}function Ze(e){return{metadata:Qe(e.metadata),configSchema:structuredClone(e.configSchema),inputSchema:structuredClone(e.inputSchema),outputSchema:structuredClone(e.outputSchema),runs:structuredClone(e.runs)}}function Qe(e){return e.categories?{...e,categories:[...e.categories]}:{...e}}const K=`workflow.start`;function $e(e){return()=>({async execute(t,n){let{input:r={},executionHints:i}=t,{workflowId:a}=r;if(typeof a!=`string`||a.length===0)throw Error(`[TransitionActionRegistry] 'workflow.start' action requires a non-empty 'input.workflowId' string`);await e.request(xe.start,{workflowId:a,input:et(r,n),config:r.config,artifactRef:r.artifactRef,scope:r.scope,triggerPayload:{_transitionRuleId:n._transition.ruleId,_transitionDepth:n._transition.depth,_transitionEventType:n._transition.eventType},executionHints:i})}})}function et(e,t){let n=e.inputExpression;if(typeof n!=`string`)return e.input;let r=Me(n,tt(t)),i=ve.safeParse(r);if(!i.success)throw Error(`[TransitionActionRegistry] 'workflow.start' inputExpression for rule '${t._transition.ruleId}' must resolve to a JSON value`);return i.data}function tt(e){let t={...e};return{...t,ctx:t}}var nt=class{factories=new Map;factoriesBySource=new Map;constructor(e){this.factories.set(K,$e(e)),this.factoriesBySource.set(`__builtin__`,[K])}register(e,t){let n=Object.keys(t);if(n.length!==0){if(this.factoriesBySource.has(e))throw Error(`TransitionActionRegistry: duplicate source '${e}'`);for(let t of n)if(this.factories.has(t))throw Error(`TransitionActionRegistry: duplicate action type '${t}' from source '${e}'`);for(let e of n)this.factories.set(e,t[e]);this.factoriesBySource.set(e,n)}}deregister(e){if(e===`__builtin__`)return;let t=this.factoriesBySource.get(e);if(t){for(let e of t)this.factories.delete(e);this.factoriesBySource.delete(e)}}async dispatch(e,t){let n=this.factories.get(e.type);if(!n)throw Error(`TransitionActionRegistry: unknown action type '${e.type}'. Registered types: ${[...this.factories.keys()].join(`, `)}`);await n().execute(e,t)}has(e){return this.factories.has(e)}listTypes(){return[...this.factories.keys()]}},rt=class{rulesBySource=new Map;rulesByEventType=new Map;ruleIdSet=new Set;register(e,t){if(t.length===0)return;if(this.rulesBySource.has(e))throw Error(`TransitionRuleRegistry: duplicate source '${e}'`);let n=new Set,r=[];for(let i of t){let t=ye.parse(i);if(n.has(t.id))throw Error(`TransitionRuleRegistry: duplicate rule ID '${t.id}' within source '${e}'`);if(this.ruleIdSet.has(t.id))throw Error(`TransitionRuleRegistry: duplicate rule ID '${t.id}' from source '${e}'`);n.add(t.id),r.push({rule:t,condition:t.when===void 0?void 0:Ae.parse(t.when)})}for(let e of r){let{rule:t}=e;this.ruleIdSet.add(t.id);let n=this.rulesByEventType.get(t.on)??[];n.push(e),this.rulesByEventType.set(t.on,n)}this.rulesBySource.set(e,r)}deregister(e){let t=this.rulesBySource.get(e);if(t){for(let{rule:e}of t){this.ruleIdSet.delete(e.id);let t=this.rulesByEventType.get(e.on);if(t){let n=t.filter(t=>t.rule.id!==e.id);n.length>0?this.rulesByEventType.set(e.on,n):this.rulesByEventType.delete(e.on)}}this.rulesBySource.delete(e)}}getRulesForEvent(e){let t=this.rulesByEventType.get(e);return t?t.filter(e=>e.rule.enabled):[]}snapshotSource(e){let t=this.rulesBySource.get(e);if(t)return{ruleIds:t.map(e=>e.rule.id)}}},it=class extends w{ruleRegistry;actionRegistry;depthMap=new Map;constructor(e){super(e),this.ruleRegistry=new rt,this.actionRegistry=new nt(e)}onInit(){this.registerHandler(v.created,async e=>{await this.handleArtifactEvent(`artifact.created`,{artifact:e.payload.artifact})}),this.registerHandler(v.revised,async e=>{let t=await this.resolvePreviousRevisedArtifact(e.payload.previous);await this.handleArtifactEvent(`artifact.revised`,{artifact:e.payload.artifact,previous:e.payload.previous,...t===void 0?{}:{previousArtifact:t}})}),this.registerHandler(v.status.changed,async e=>{let t=await this.resolveStatusChangedArtifact(e.payload.artifact);t!==void 0&&await this.handleArtifactEvent(`artifact.status.changed`,{artifact:t,path:e.payload.path,previous:e.payload.previous,current:e.payload.current})})}async handleArtifactEvent(e,t){let n=this.artifactKey(t.artifact),r=this.readDepth(n);if(r>=10){console.warn(`[TransitionPipelineService] Transition depth limit (10) reached for event '${e}' on artifact '${n}'. Loop protection active — skipping rule evaluation.`);return}let i=this.ruleRegistry.getRulesForEvent(e);if(i.length!==0)for(let a of i)await this.evaluateAndDispatch(a,e,t,n,r)}async resolveStatusChangedArtifact(e){let t=await this.bus.requestOptional(v.resolve,{ref:e});if(!t.handled){console.warn(`[TransitionPipelineService] No artifact resolver is registered for status transition on artifact '${this.artifactKey(e)}'. Skipping rule evaluation.`);return}if(t.data.artifact===null){console.warn(`[TransitionPipelineService] Could not resolve status transition artifact '${this.artifactKey(e)}'. Skipping rule evaluation.`);return}return t.data.artifact}async resolvePreviousRevisedArtifact(e){let t=await this.bus.requestOptional(v.resolve,{ref:e});if(!(!t.handled||t.data.artifact===null))return t.data.artifact}async evaluateAndDispatch(e,t,n,r,i){let{rule:a,condition:o}=e,s={...n,_transition:{ruleId:a.id,eventType:t,depth:i+1}};if(o!==void 0){let e={...s},t;try{t=je(o,e)}catch(e){console.error(`[TransitionPipelineService] Condition evaluation error for rule '${a.id}':`,e);return}if(!t)return}try{await this.actionRegistry.dispatch(a.action,s),a.action.type===`workflow.start`&&this.incrementDepth(r)}catch(e){console.error(`[TransitionPipelineService] Action dispatch error for rule '${a.id}' (action type '${a.action.type}'):`,e)}}artifactKey(e){return`${typeof e.kind==`string`?e.kind:`unknown`}:${typeof e.id==`string`?e.id:`unknown`}`}readDepth(e){let t=this.depthMap.get(e);return t===void 0?0:Date.now()>t.expiresAt?(this.depthMap.delete(e),0):t.count}incrementDepth(e){let t=this.depthMap.get(e);this.depthMap.set(e,{count:t===void 0?1:t.count+1,expiresAt:Date.now()+6e4})}};function at(e){return async t=>{let n=await ot(e,t);if(!n)return{handled:!1,sessionId:null,clientAccountId:null,changed:!1};let{sessionId:r}=n,{observation:i,accountObserveRequest:a}=st(t),o=await e.requestOptional(D.account.observe,a);if(!o.handled)return{handled:!1,sessionId:r,clientAccountId:null,changed:!1};let{clientAccountId:s}=o.data;return{handled:!0,sessionId:r,clientAccountId:s,changed:await mt(e,r,i,s)}}}async function ot(e,t){switch(t.locator.kind){case`session`:{let{session:r}=await e.request(n.get,{sessionId:t.locator.sessionId});return r?{sessionId:r.sessionId,session:r}:null}case`adapter-session`:{let{session:r}=await e.request(n.getByAdapterSessionId,{adapterSessionId:t.locator.adapterSessionId});return r?{sessionId:r.sessionId,session:r}:null}case`both`:{let[{session:r},{session:i}]=await Promise.all([e.request(n.get,{sessionId:t.locator.sessionId}),e.request(n.getByAdapterSessionId,{adapterSessionId:t.locator.adapterSessionId})]);if(!r&&!i)return null;if(!r||!i)throw Error(`Session locator mismatch: sessionId "${t.locator.sessionId}" and adapterSessionId "${t.locator.adapterSessionId}" must both resolve the same session`);if(r.sessionId!==i.sessionId)throw Error(`Session locator mismatch: sessionId "${t.locator.sessionId}" and adapterSessionId "${t.locator.adapterSessionId}" resolve to different sessions`);return{sessionId:r.sessionId,session:r}}}}function st(e){let t={clientId:e.clientId,source:e.source,kind:e.kind,observedAt:e.observedAt,payload:ft(e.payload)};return{observation:t,accountObserveRequest:ct(t)}}function ct(e){let t=e.payload,n=lt(t),r=ut(t);if(r.length>0)return{clientId:e.clientId,observedAt:e.observedAt,displayLabel:dt(t,n),identifiers:r};throw Error(`client.session.account.observe for "${e.clientId}" requires canonical client account identifiers`)}function lt(e){return pt(e.accountInfo)??e}function ut(e){let t=e.identifiers;if(!Array.isArray(t))return[];try{return g.array(Ce).min(1).parse(t)}catch(e){throw Error(`client.session.account.observe received malformed canonical client account identifiers`,{cause:e})}}function dt(e,t){return q(e.displayLabel)??q(t.displayLabel)??q(t.email)??q(t.label)}function ft(e){return structuredClone(e)}function pt(e){return typeof e==`object`&&e&&!Array.isArray(e)?e:void 0}function q(e){return typeof e==`string`&&e.trim().length>0?e.trim():void 0}async function mt(e,t,r,i){let a=await e.request(n.update,{sessionId:t,clientId:r.clientId,clientAccountId:i,lastClientIdentityObservation:r});if(!a.success)throw Error(`Failed to update session "${t}" with client account linkage`);return a.clientAccountChanged??!1}const ht=S(`session-storage`).name;var gt=class extends w{constructor(e=_){super(e)}onInit(){let e=at(this.bus);this.registerHandler(D.session.account.observe,async t=>{t.setResult(await e(we.request.parse(t.payload)))})}};const _t={name:`makaio.session-client-account-linking`,displayName:`Session Client Account Linking`,version:`0.1.0`,dependencies:[x(ht),x(`makaio.clients-core`)],critical:!1,create:e=>new gt(e.bus)},vt={name:`framework-shell`,displayName:`Shell`,version:`0.1.0`,surface:`interactive`,windows:[{id:`main`,style:`utility`,width:1e3,height:700,singleton:!0}]};async function yt(e){let{harnesses:t}=await e.request(m.list,{}),n=new Set(t.map(e=>e.id));for(let t of ge){if(n.has(t.id))continue;let r={...t};await e.request(m.set,{harness:r})}}function J(e,t,n){return e??t??n}var bt=class extends w{static storage={drizzle:h};constructor(e=_){super(e)}async onInit(){await yt(this.bus),this.registerHandlers()}registerHandlers(){this.registerHandler(y.get,async e=>{let t=await this.loadHarness(e.payload);if(!t)throw Error(`Harness not found`);e.setResult(t)}),this.registerHandler(y.list,async e=>{let{harnesses:t}=await this.bus.request(m.list,e.payload);e.setResult({harnesses:t})}),this.registerHandler(y.set,async e=>{let t=await this.upsertHarness(e.payload);e.setResult({id:t})}),this.registerHandler(y.delete,async e=>{let{deleted:t}=await this.bus.request(m.delete,{id:e.payload.id});e.setResult({success:t})}),this.registerHandler(y.getDefault,async e=>{let t=await this.getDefaultHarness(e.payload.adapterName,e.payload.clientId);e.setResult(t)}),this.registerHandler(y.resolve,async e=>{let{adapterName:t,clientId:n,personaHarnessId:r,profileHarnessId:i}=e.payload;if(r){let i=await this.resolveAndValidateHarness(r,t,`persona`,n);e.setResult(i);return}if(i){let r=await this.resolveAndValidateHarness(i,t,`profile`,n);e.setResult(r);return}let a=await this.getDefaultHarness(t,n);e.setResult(a)}),this.registerHandler(y.getSchema,({setResult:e})=>{let{$schema:t,...n}=g.toJSONSchema(_e);e({schema:n,uiConfig:{editMode:`fullPage`,hiddenFields:[`isDefault`]}})})}async upsertHarness(e){let t=await this.resolveHarnessId(e.name,e.adapterName,e.clientId),n=await this.loadHarness({id:t,adapterName:e.adapterName,clientId:e.clientId}),r=this.mergeHarnessPayload(t,e,n);return r.adapterName&&await this.validateNativeTools(r.adapterName,r.nativeTools),await this.bus.request(m.set,{harness:r}),t}mergeHarnessPayload(e,t,n){let r={enabled:[],disabled:[]};return{id:e,name:t.name,description:J(t.description,n?.description,void 0),adapterName:t.adapterName,clientId:J(t.clientId,n?.clientId,void 0),env:J(t.env,n?.env,void 0),credentials:J(t.credentials,n?.credentials,void 0),cwd:J(t.cwd,n?.cwd,void 0),approvalPolicy:J(t.approvalPolicy,n?.approvalPolicy,`always-ask`),nativeTools:J(t.nativeTools,n?.nativeTools,r),registryTools:J(t.registryTools,n?.registryTools,r),skills:J(t.skills,n?.skills,void 0),toolCapabilityMap:t.toolCapabilityMap??n?.toolCapabilityMap,capabilityOverrides:t.capabilityOverrides??n?.capabilityOverrides,toolApprovalOverrides:t.toolApprovalOverrides??n?.toolApprovalOverrides,isDefault:J(t.isDefault,n?.isDefault,!1),enabled:J(t.enabled,n?.enabled,!0)}}async resolveHarnessId(e,t,n){let r=n??t,{harnesses:i}=await this.bus.request(m.list,{name:e}),a=i.find(t=>t.name===e&&(t.clientId??t.adapterName)===r);if(a)return a.id;let o=i.find(t=>t.name===e&&(t.clientId??t.adapterName)!==r);if(o){let t=o.clientId?`client '${o.clientId}'`:`adapter '${o.adapterName}'`;throw Error(`Harness "${e}" already exists with scope ${t}; cannot change scope to ${r??`(none)`}`)}return this.createStableHarnessId(e,r)}async loadHarness(e){if(e.id){let{harness:t}=await this.bus.request(m.get,{id:e.id});return t&&(!e.adapterName||t.adapterName===e.adapterName)&&(!e.clientId||t.clientId===e.clientId)?t:null}if(!e.name)return null;let{harnesses:t}=await this.bus.request(m.list,{name:e.name,adapterName:e.adapterName,clientId:e.clientId});return e.clientId?t.find(t=>t.clientId===e.clientId)??null:e.adapterName?t.find(t=>t.adapterName===e.adapterName)??null:t[0]??null}async getDefaultHarness(e,t){if(t){let{harnesses:e}=await this.bus.request(m.list,{clientId:t}),n=e.find(e=>e.isDefault&&e.enabled);if(n)return n;let r=e.find(e=>e.enabled);if(r)return r}if(e){let{harnesses:t}=await this.bus.request(m.list,{adapterName:e}),n=t.find(e=>e.isDefault&&e.enabled);if(n)return n;let r=t.find(e=>e.enabled);if(r)return r}let n=t?e?`client '${t}' or adapter '${e}'`:`client '${t}'`:`adapter '${e}'`;throw Error(`No harness available for ${n}`)}assertHarnessAdapterMatch(e,t,n,r){if(e.adapterName&&t&&e.adapterName!==t)throw Error(`Resolved ${n} harness adapter mismatch: expected "${t}", got "${e.adapterName}"`);if(e.clientId&&r&&e.clientId!==r)throw Error(`Resolved ${n} harness client mismatch: expected "${r}", got "${e.clientId}"`)}assertHarnessEnabled(e,t){if(!e.enabled)throw Error(`Resolved ${t} harness is disabled: ${e.id}`)}async validateNativeTools(e,t){let n=await this.bus.requestOptional(me.getCapabilities,{adapterName:e});if(!n.handled)return;let r=new Set(n.data.nativeTools),i=[...t.enabled,...t.disabled].filter(e=>!r.has(e));if(i.length>0)throw Error(`Tool '${i[0]}' not found in adapter '${e}' native tools. Declared tools: ${[...r].join(`, `)}`)}createStableHarnessId(e,t){return`harness-${de(`sha256`).update(`${t??``}\0${e}`).digest(`hex`).slice(0,24)}`}async resolveAndValidateHarness(e,t,n,r){let i=await this.loadHarness({id:e});if(!i)throw Error(`${n===`persona`?`Persona`:`Profile`} harness not found: ${e}`);return this.assertHarnessAdapterMatch(i,t,n,r),this.assertHarnessEnabled(i,n),i}};const xt={name:`makaio.harness`,displayName:`Harness`,version:`0.1.0`,critical:!0,storage:{registerHandlers:T(h)},create:e=>new bt(e.bus)},Y=S(`session-storage`),X=S(`session-bridge`),Z=S(`session`),St=S(`session-orchestrator`),Ct=S(`observed-session-ingestion`),Q=S(`tool-registry`),wt=S(`tool-approval`),Tt=S(`tray-menu`),Et=S(`capability`),Dt=S(`model-registry`),Ot=S(`workflow-block-registry`),kt=S(`transition-pipeline`),At=S(`filesystem`),jt=S(`git`),Mt=S(`artifact-schema-registry`),Nt=S(`artifact-lifecycle-hook-registry`),Pt=S(`facet-namespace-registry`),Ft=S(`surface-binding-registry`),It={name:Mt.name,displayName:`Artifact Schema Registry`,version:`0.1.0`,critical:!0,create:e=>new L(e.bus)},Lt={name:Nt.name,displayName:`Artifact Lifecycle Hook Registry`,version:`0.1.0`,critical:!0,create:e=>new V(e.bus)},Rt={name:Pt.name,displayName:`Facet Namespace Registry`,version:`0.1.0`,critical:!0,create:e=>new Be(e.bus)},zt={name:Ft.name,displayName:`Surface Binding Registry`,version:`0.1.0`,critical:!0,create:e=>new Ve(e.bus)},Bt={name:Y.name,displayName:`Session Storage`,version:`0.1.0`,critical:!0,storage:{registerHandlers:T((n,r)=>{let s=[],c=e=>{for(let t=s.length-1;t>=0;--t)try{s[t]?.()}catch(t){console.warn(`[sessionStoragePackage] cleanup failed during ${e}:`,t)}s.length=0};try{s.push(a(n,r)),s.push(t(n,r)),s.push(l(n,r)),s.push(o(n,r)),s.push(e(n,r)),s.push(i(n,r)),s.push(d(n,r)),s.push(re(n,r)),s.push(u(n,r)),s.push(ee(n)),s.push(ne(n)),s.push(te(n))}catch(e){throw c(`rollback`),e}return()=>{c(`shutdown`)}})}},$={name:X.name,displayName:`Session Bridge`,version:`0.1.0`,dependencies:[x(Y.name)],critical:!0,create:e=>new s(e.bus)},Vt={name:Z.name,displayName:`Session`,version:`0.1.0`,dependencies:[x(X.name)],critical:!0,create:e=>new r(e.bus)},Ht={name:St.name,displayName:`Session Orchestrator`,version:`0.1.0`,dependencies:[x(Z.name),x(G.name)],critical:!0,runtimeOwnership:{sessionOrchestrator:!0},create:e=>new c(e.bus,e.machineId)},Ut={name:Ct.name,displayName:`Observed-Session Ingestion`,version:`0.1.0`,dependencies:[x(X.name)],critical:!1,create:e=>new f(e.bus)},Wt={name:Q.name,displayName:`Tool Registry`,version:`0.1.0`,critical:!0,create:e=>new Je({bus:e.bus})},Gt={name:wt.name,displayName:`Tool Approval`,version:`0.1.0`,dependencies:[x(Q.name)],critical:!0,create:e=>new se(e.bus)},Kt={name:Tt.name,displayName:`Tray Menu`,version:`0.1.0`,critical:!0,create:e=>new ce(e.bus)},qt={name:Et.name,displayName:`Capability`,version:`0.1.0`,critical:!0,create:e=>new ie(e.bus)},Jt={name:Ot.name,displayName:`Workflow Block Registry`,version:`0.1.0`,critical:!0,create:e=>new Ye(e.bus)},Yt={name:kt.name,displayName:`Transition Pipeline`,version:`0.1.0`,critical:!0,create:e=>new it(e.bus)},Xt={name:At.name,displayName:`Filesystem`,version:`0.1.0`,critical:!0,create:e=>new ue(e.bus,e.machineId)},Zt={name:jt.name,displayName:`Git`,version:`0.1.0`,dependencies:[x(At.name)],critical:!0,create:e=>new Ne(e.bus)};function Qt(e){return{name:Dt.name,displayName:`Model Registry`,version:`0.1.0`,critical:!0,create:t=>new ae({bus:t.bus,fetcher:e})}}const $t=[It,Lt,Rt,zt,Bt,$,_t,Vt,Ht,Ut,le,Wt,Gt,Kt,qt,xt,G,vt,Jt,Yt,Zt,Xt];function en(){let e=new Map;return{filter:e=>!!e.tools?.createToolsets,async processActivated(t,n,r){let i=r.getService(Q);if(!i)throw Error(`ToolRegistry is not available. Ensure toolRegistryPackage is included in the composition root.`);let a=n.tools.createToolsets(r),o=[];try{for(let e of a)await i.register(e),o.push(()=>i.deregister(e.metadata.name))}catch(e){for(let e=o.length-1;e>=0;--e)try{await o[e]()}catch(e){console.error(`[ToolContributionProcessor] Rollback error for "${t}":`,e)}throw e}e.set(t,o)},async processStopped(t){let n=e.get(t);if(n){for(let e=n.length-1;e>=0;--e)try{await n[e]()}catch(e){console.error(`[ToolContributionProcessor] Deregister error for "${t}":`,e)}e.delete(t)}}}}export{Gt as A,Je as B,Rt as C,Vt as D,Ht as E,it as F,Ve as G,Ue as H,rt as I,R as J,Be as K,nt as L,Yt as M,Kt as N,Bt as O,Jt as P,K as R,Qt as S,$ as T,He as U,G as V,W,L as Y,Tt as _,Mt as a,It as b,Dt as c,Y as d,Z as f,kt as g,Q as h,Nt as i,Wt as j,zt as k,X as l,wt as m,Oe as n,Et as o,Ft as p,V as q,en as r,Pt as s,Ee as t,St as u,Ot as v,$t as w,qt as x,Lt as y,Ye as z};
|