@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
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{t as e}from"./schemas-XeIBqwvE.mjs";import{_ as t,a as n,g as r,h as i,m as a,n as ee,o as te}from"./profile-BMBXUqqh.mjs";import{n as ne,t as o}from"./version-DoV_pSzT.mjs";import{c as re,d as ie,n as ae,o as oe,s as se,t as s,u as ce}from"./account-identity-C7Kx_ieU.mjs";import{z as c}from"zod";import{createBusNamespace as le}from"@makaio/framework/core";const l=c.object({tag:c.string(),description:c.string().optional()}),u=c.object({name:c.string(),friendlyName:c.string(),description:c.string().optional(),category:c.string().optional(),capabilities:c.array(l).default([])}),d=c.object({id:c.string(),name:c.string(),description:c.string().optional(),glob:c.string().optional()}),f=c.object({name:c.string().min(1),frameworkSubject:c.string().min(1).optional(),mode:c.enum([`event`,`request`]).default(`event`)}),p=c.object({envVar:r.regex(/^[A-Za-z_][A-Za-z0-9_]*$/,{message:`envVar must be a valid environment variable name (letters, digits, underscores)`}),defaultPath:r.refine(e=>e===`~`||e.startsWith(`~/`)||t(e),{message:`defaultPath must be absolute, '~', or start with '~/'`}),pathKind:c.enum([`directory`,`file`]).default(`directory`)});function ue(e){if(!e.startsWith(`@`))return!e.includes(`@`);let t=e.indexOf(`/`);return t>1&&!e.slice(t+1).includes(`@`)}const m=c.object({type:c.literal(`npm`),package:c.string().min(1).refine(ue,{message:"package must not include an inline `@version` suffix; use the version field instead"}),version:o}),h=c.object({type:c.literal(`signed-binary-bucket`),version:o,config:c.object({baseUrl:c.string().url(),manifestPathTemplate:c.string().min(1),manifestSignaturePathTemplate:c.string().min(1),publicKeyUrl:c.string().url(),publicKeyFingerprint:c.string().min(1),binaryPathTemplate:c.string().min(1),platforms:c.record(c.string().min(1),c.string().min(1))})}),g=c.discriminatedUnion(`type`,[m,h]),_=c.object({executable:c.union([c.string().min(1),c.object({default:c.string().min(1),darwin:c.string().min(1).optional(),linux:c.string().min(1).optional(),win32:c.string().min(1).optional()}).strict()]),args:c.array(c.string()).default([])}).strict(),v=c.object({kind:c.string().min(1),payload:c.record(c.string(),c.unknown()).optional()}),y=c.object({supportsHooks:c.boolean().default(!1),supportsStatusline:c.boolean().default(!1),supportsSupervisorLaunch:c.boolean().default(!1),supportsManagedBinary:c.boolean().default(!1),hookEvents:c.array(f).default([])}).refine(e=>e.supportsHooks||e.hookEvents.length===0,{message:`hookEvents must be empty when supportsHooks is false`,path:[`hookEvents`]}),b=c.object({name:c.string().min(1),supportedVersions:ne}).strict(),x=c.object({id:c.string(),name:c.string(),version:o,description:c.string().optional(),binary:b.optional(),nativeTools:c.array(u).default([]),defaultApprovalPolicy:e,logSources:c.array(d).optional(),defaultProviderId:c.string().optional(),runtimeCapabilities:y.optional().transform(e=>y.parse(e??{})),managedInstall:g.optional(),versionCommand:_.optional(),postInstall:v.optional(),configIsolation:p.optional()}).strict().refine(e=>!e.runtimeCapabilities.supportsManagedBinary||e.managedInstall!==void 0,{message:`managedInstall is required when runtimeCapabilities.supportsManagedBinary is true`,path:[`managedInstall`]}).refine(e=>e.managedInstall===void 0||e.runtimeCapabilities.supportsManagedBinary,{message:`runtimeCapabilities.supportsManagedBinary must be true when managedInstall is provided`,path:[`runtimeCapabilities`,`supportsManagedBinary`]}).refine(e=>e.managedInstall===void 0||e.versionCommand!==void 0,{message:`versionCommand is required when managedInstall is provided`,path:[`versionCommand`]}).superRefine((e,t)=>{if(e.managedInstall===void 0||e.versionCommand===void 0)return;let{executable:n}=e.versionCommand,r=typeof n==`string`?[{path:n,issuePath:[`versionCommand`,`executable`]}]:[{path:n.default,issuePath:[`versionCommand`,`executable`,`default`]},...n.darwin===void 0?[]:[{path:n.darwin,issuePath:[`versionCommand`,`executable`,`darwin`]}],...n.linux===void 0?[]:[{path:n.linux,issuePath:[`versionCommand`,`executable`,`linux`]}],...n.win32===void 0?[]:[{path:n.win32,issuePath:[`versionCommand`,`executable`,`win32`]}]];for(let{path:e,issuePath:n}of r){let r=e.startsWith(`/`),i=/^[A-Za-z]:/.test(e),a=e.startsWith(`\\`);if(r||i||a){t.addIssue({code:c.ZodIssueCode.custom,path:n,message:`${n.join(`.`)} must be a relative path within the install directory`});continue}e.split(/[/\\]/).some(e=>e===`..`)&&t.addIssue({code:c.ZodIssueCode.custom,path:n,message:`${n.join(`.`)} must be a relative path within the install directory`})}}),S=c.object({binaryPath:a.nullable(),env:c.record(c.string(),c.string()),configDir:a.nullable(),source:c.enum([`managed`,`global`]),version:r.nullable()}),C={request:c.object({clientId:r,sessionId:r.optional(),projectDir:a.optional(),preferSource:c.enum([`managed`,`global`]).optional(),harnessId:r.optional()}),response:S},w=c.enum([`npm`,`signed-binary-bucket`]),T=c.object({version:r,installPath:a,installedAt:i,isActive:c.boolean()}),E=c.object({clientId:r,installedVersions:c.array(T),activeVersion:r.nullable(),pinnedVersion:o,updateAvailable:c.boolean()}).strict(),D={request:c.object({forceRefresh:c.boolean().optional()}),response:c.object({clients:c.array(E)})},de={request:c.object({clientId:r,version:o.optional()}),response:c.object({jobId:r,requestedVersion:o.nullable(),resolvedVersion:o.nullable()})},O={request:c.object({clientId:r,version:r}),response:c.object({clientId:r,removedVersion:r,activeVersion:r.nullable()})},k={request:c.object({clientId:r}),response:c.object({jobId:r,resolvedVersion:o.nullable()})},A={request:c.object({clientId:r,version:r}),response:c.object({clientId:r,activeVersion:r})},j=c.enum([`resolving`,`downloading`,`verifying`,`extracting`,`installing`,`post-install`,`activating`]),M=c.object({jobId:r,clientId:r,version:r.optional(),strategy:w,stage:j,progress:c.number().min(0).max(100).nullable(),installPath:a.optional(),activeAfterCompletion:c.boolean().optional(),metadata:c.record(c.string(),c.unknown()).optional()}),N=c.object({message:c.string(),code:c.string().optional()}),P=c.object({jobId:r,clientId:r,version:r.optional(),strategy:w,status:c.enum([`success`,`error`]),installPath:a.optional(),activeVersion:r.nullable(),error:N.optional(),metadata:c.record(c.string(),c.unknown()).optional()}),F=c.object({clientId:r,previousActiveVersion:r.nullable(),activeVersion:r.nullable(),reason:c.enum([`install`,`update`,`set-active`,`uninstall`])}),I=c.enum([`supervisor`,`adapter`,`client-hook`,`statusline`,`cli-wrapper`]),L=c.object({layer:I,producer:r}),R=c.object({supervisorSessionId:r.optional(),pid:c.number().int().positive().optional(),parentPid:c.number().int().positive().optional(),adapterSessionId:r.optional(),sessionId:r.optional(),cwd:c.string().optional(),argv:c.array(c.string()).optional(),metadata:c.record(c.string(),c.unknown()).optional()}),z={request:c.object({clientId:r,source:L,observedAt:i}).merge(R).refine(e=>e.supervisorSessionId!==void 0||e.pid!==void 0||e.adapterSessionId!==void 0,{message:`At least one hard-evidence field is required (supervisorSessionId, pid, or adapterSessionId)`}),response:c.object({clientRuntimeId:r,created:c.boolean(),promoted:c.boolean()})},B=R.extend({clientRuntimeId:r,clientId:r,status:c.enum([`observed`,`started`]),source:L,observedAt:i}),V={request:c.object({adapterSessionId:r,clientId:r}),response:c.object({managed:c.boolean()})},H=c.object({clientId:r,source:r,observedAt:i,sessionId:c.string().optional(),adapterSessionId:c.string().optional(),metadata:c.record(c.string(),c.unknown()).optional()}),U=[`fresh`,`fork`,`resume`,`clear`,`compact`],W=c.enum(U),G=H.extend({transcriptPath:c.string().optional(),cwd:c.string().optional(),machineId:c.string().optional(),startMode:W.optional(),parentAdapterSessionId:c.string().optional()}),K=H.extend({prompt:r.optional()}),q=H.extend({}),J=H.extend({transcriptPath:c.string().optional()}),Y=H.extend({toolName:r.optional(),toolCallId:r.optional()}),X=H.extend({toolName:r.optional(),toolCallId:r.optional(),success:c.boolean().optional()}),Z=c.object({group:r,name:r,installed:c.boolean(),command:r}),fe={"runtime.observe":z,"runtime.started":B,"runtime.isAdapterManaged":V,scan:{request:c.object({targets:c.array(se).optional()}),response:c.object({results:c.array(oe)})},"session.account.observe":re,"account.observe":ae,"account.activate":{request:c.object({clientId:r,clientAccountId:r,identifiers:c.array(s).min(1),displayLabel:c.string().optional()}),response:c.object({accepted:c.boolean()})},"account.getActive":{request:c.object({clientId:r}),response:c.object({identity:c.object({clientAccountId:r,identifiers:c.array(s).min(1),displayLabel:c.string().optional()}).nullable()})},"usage.ingest":ce,"usage.snapshot":ie,"session.started":G,"session.userPrompt.submitted":K,"session.turn.started":q,"session.turn.completed":J,"session.tool.pre":Y,"session.tool.post":X,"wiring.list":{request:c.object({clientId:r.optional(),projectDir:a.optional(),makaioCommand:r}),response:c.object({results:c.array(c.object({clientId:r,entries:c.array(Z)}))})},list:D,install:de,uninstall:O,update:k,setActive:A,"installJob.progress":M,"installJob.completed":P,"version.changed":F,resolveBinary:C,...n,...te,"config.prime":ee},Q=le(`client`,fe),pe=Q.subjects;function $(e){if(Array.isArray(e)){for(let t of e)$(t);return Object.freeze(e)}if(e&&typeof e==`object`){for(let t of Object.values(e))$(t);return Object.freeze(e)}return e}function me(e){return $(x.parse(e))}export{N as A,l as B,M as C,O as D,A as E,C as F,m as G,p as H,b as I,_ as J,v as K,x as L,T as M,w as N,k as O,S as P,f as R,P as S,D as T,d as U,u as V,g as W,z as _,U as a,B as b,G as c,J as d,q as f,V as g,R as h,fe as i,j,F as k,X as l,Z as m,Q as n,H as o,K as p,h as q,pe as r,W as s,me as t,Y as u,I as v,de as w,E as x,L as y,y as z};
|
package/dist/clients/index.d.mts
CHANGED
|
@@ -1039,6 +1039,36 @@ declare class ClientRuntimeRegistry {
|
|
|
1039
1039
|
* @returns The record, or `undefined` when not found
|
|
1040
1040
|
*/
|
|
1041
1041
|
getRuntime(clientRuntimeId: string): ClientRuntimeRecord | undefined;
|
|
1042
|
+
/**
|
|
1043
|
+
* Mark an `(adapterSessionId, clientId)` pair as adapter-owned.
|
|
1044
|
+
*
|
|
1045
|
+
* The service layer calls this when a `client.runtime.observe` arrives
|
|
1046
|
+
* with `source.layer === 'adapter'` and an `adapterSessionId`. This
|
|
1047
|
+
* populates the in-memory provenance set that backs
|
|
1048
|
+
* {@link hasAdapterSession}.
|
|
1049
|
+
*
|
|
1050
|
+
* The registry deliberately does not inspect source-layer metadata
|
|
1051
|
+
* itself — it speaks the vocabulary of "adapter-owned," and the service
|
|
1052
|
+
* layer decides when that label applies.
|
|
1053
|
+
* @param adapterSessionId - Raw adapter session ID
|
|
1054
|
+
* @param clientId - Stable client identifier
|
|
1055
|
+
*/
|
|
1056
|
+
markAdapterOwned(adapterSessionId: string, clientId: string): void;
|
|
1057
|
+
/**
|
|
1058
|
+
* Check whether an `(adapterSessionId, clientId)` pair was bound by an
|
|
1059
|
+
* adapter-layer observation of the **current process**.
|
|
1060
|
+
*
|
|
1061
|
+
* This is the in-memory runtime-truth lookup used by the
|
|
1062
|
+
* `client.runtime.isAdapterManaged` handler. It returns `true` only
|
|
1063
|
+
* when {@link markAdapterOwned} was called for this pair — NOT merely
|
|
1064
|
+
* when a runtime record with a matching `adapterSessionId` exists in
|
|
1065
|
+
* the evidence index. This distinction prevents hook-bridge observations
|
|
1066
|
+
* (layer `'client-hook'`) from being falsely classified as adapter-managed.
|
|
1067
|
+
* @param adapterSessionId - Raw adapter session ID
|
|
1068
|
+
* @param clientId - Stable client identifier
|
|
1069
|
+
* @returns `true` when the pair was marked adapter-owned in this process
|
|
1070
|
+
*/
|
|
1071
|
+
hasAdapterSession(adapterSessionId: string, clientId: string): boolean;
|
|
1042
1072
|
/**
|
|
1043
1073
|
* Remove all in-memory state.
|
|
1044
1074
|
*
|
package/dist/clients/index.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{z as e}from"zod";import*as t from"node:fs/promises";import*as n from"node:path";import{randomUUID as r}from"node:crypto";import{createBusNamespace as i}from"@makaio/framework/core";import{MakaioBus as a}from"@makaio/framework/bus";import{extensionToken as o,isUniversalRange as s,versionSatisfies as c}from"@makaio/framework/contracts";import{BaseService as l}from"@makaio/framework/service-base";import{index as u,unique as d,uniqueIndex as f}from"drizzle-orm/sqlite-core";import{index as p,unique as m,uniqueIndex as h}from"drizzle-orm/pg-core";import{defineDialectSchema as
|
|
2
|
-
`)){let e=t.split(`:`);if(e[0]===`fpr`&&e[9]!==void 0&&e[9].length>0)return e[9]}throw Error(`Could not extract GPG key fingerprint from output`)}};function Ie(e,t){let n=se.safeParse(e);if(n.success)switch(n.data.type){case`npm`:return new Oe(n.data,t);case`signed-binary-bucket`:return new Fe(n.data,t)}}function Le(e,t){let r=n.relative(e,t);return r!==``&&!r.startsWith(`..${n.sep}`)&&r!==`..`&&!n.isAbsolute(r)}function D(e,t){return!n.isAbsolute(e)||!n.isAbsolute(t)?!1:Le(n.resolve(e),n.resolve(t))}function O(e,t){if(!e||!n.isAbsolute(e))throw Error(`${t} requires a non-empty absolute basePath`);return n.resolve(e)}async function Re(e,r,i,a){let[o,...s]=i;if(Be(o))throw Error(`versionCommand[0] must be a relative path; received absolute path "${o}"`);if(o.split(/[/\\]/).includes(`..`))throw Error(`versionCommand[0] must not contain path traversal segments; received "${o}"`);let c=n.normalize(o),l=n.join(r,c),u=await t.realpath(r),d=await t.realpath(l);if(!Le(u,d))throw Error(`versionCommand[0] must not escape the install directory; "${o}" resolves outside installPath`);let f;try{f=await e(d,s,{cwd:u})}catch(e){let t=e instanceof Error?e.message:String(e);throw Error(`Version verification failed: command "${l}" exited with an error: ${t}`,{cause:e})}let p=ze(a);if(!Ve(f,p))throw Error(`Version mismatch: expected "${a}" but command output was "${f.trim()}"`)}function ze(e){return e[0]===`v`||e[0]===`V`?e.slice(1):e}function Be(e){return e.startsWith(`/`)||/^[A-Za-z]:[/\\]/.test(e)||e.startsWith(`\\`)}function Ve(e,t){return(e.match(/[A-Za-z0-9][A-Za-z0-9._+-]*/g)??[]).some(e=>ze(e)===t)}var He=class{strategyDeps;config;jobs=new Map;#e=!1;resolvedBasePath;constructor(e,t){this.strategyDeps=e,this.config=t,this.resolvedBasePath=O(t.basePath,`ClientBinaryJobRunner`)}startJob(e,t,n,r,i,a,o){let s={...e,status:`running`};return this.jobs.set(e.jobId,s),this.runJob(s,t,n,r,i,a,o),e.jobId}cancelAll(){this.#e=!0,this.jobs.clear()}safeOnProgress(e,t){try{e(t)}catch{}}emitProgressIfActive(e,t){return this.#e?!1:(this.safeOnProgress(e,t),!this.#e)}async runJob(e,t,n,r,i,a,o){try{let s=this.resolveTargetDir(e.clientId,e.version),c=Ie(t,this.strategyDeps);if(c===void 0)throw Error(`Unsupported managed install descriptor type: ${t.type}`);let l=await this.executeStrategy(e,c,s,n);if(this.#e)return;let u;try{if(u=await this.runPostInstall(e,l.installPath,a,n),this.#e)return;o!==void 0&&await this.runVersionVerification(e,l.installPath,o,n)}catch(e){throw this.#e||await this.cleanupStagedArtifact(l.installPath),e}if(this.#e)return;await this.finalizeSuccess(e,l,u,n,r,i)}catch(t){if(this.#e)return;let n=t instanceof Error?t.message:String(t),r=t instanceof Error&&`code`in t?String(t.code):void 0;try{await i({jobId:e.jobId,clientId:e.clientId,version:e.version,strategy:e.strategy,status:`error`,activeVersion:null,error:{message:n,...r===void 0?{}:{code:r}}})}catch{}}finally{this.jobs.delete(e.jobId)}}async finalizeSuccess(e,t,n,r,i,a){if(!(e.makeActive&&!this.emitProgressIfActive(r,{jobId:e.jobId,clientId:e.clientId,version:t.version,strategy:e.strategy,stage:`activating`,progress:null,installPath:t.installPath,activeAfterCompletion:!0}))&&!this.#e){try{await i({jobId:e.jobId,clientId:e.clientId,version:t.version,installPath:t.installPath,makeActive:e.makeActive,reason:e.reason})}catch(e){try{await this.strategyDeps.removeDirectory(t.installPath)}catch{}throw e}if(!this.#e)try{await a({jobId:e.jobId,clientId:e.clientId,version:t.version,strategy:e.strategy,status:`success`,installPath:t.installPath,activeVersion:e.makeActive?t.version:null,...n===void 0?{}:{metadata:{postInstall:n}}})}catch{}}}async cleanupStagedArtifact(e){try{await this.strategyDeps.removeDirectory(e)}catch{}}async executeStrategy(e,t,n,r){try{return await t.execute(e.version,n,(t,i)=>{this.emitProgressIfActive(r,{jobId:e.jobId,clientId:e.clientId,version:e.version,strategy:e.strategy,stage:t,progress:i,installPath:t===`installing`?n:void 0,activeAfterCompletion:e.makeActive})})}catch(e){throw this.#e||await this.cleanupStagedArtifact(n),e}}async runPostInstall(e,t,n,r){if(n===void 0)return;let i=this.resolvePostInstallHandler(n),a=this.buildProgressPayload(e,`post-install`,null,t,{kind:n.kind});if(!this.emitProgressIfActive(r,a))return;let o=await i({clientId:e.clientId,version:e.version,installPath:t,descriptor:n});return this.emitProgressIfActive(r,this.buildProgressPayload(e,`post-install`,100,t,{kind:n.kind,...o??{}})),o??void 0}async runVersionVerification(e,t,n,r){this.emitProgressIfActive(r,this.buildProgressPayload(e,`verifying`,null,t,{kind:`version-command`}))&&(this.#e||await Re(this.strategyDeps.exec,t,n,e.version))}resolvePostInstallHandler(e){let t=this.config.postInstallHandlers?.get(e.kind);if(t===void 0)throw Error(`No post-install handler registered for kind "${e.kind}"`);return t}buildProgressPayload(e,t,n,r,i){return{jobId:e.jobId,clientId:e.clientId,version:e.version,strategy:e.strategy,stage:t,progress:n,installPath:r,activeAfterCompletion:e.makeActive,...i===void 0?{}:{metadata:i}}}resolveTargetDir(e,t){let r=n.resolve(this.resolvedBasePath,e,t);if(!D(this.resolvedBasePath,r))throw Error(`Invalid install target path for client "${e}" and version "${t}"`);return r}};const k=e.object({id:e.string(),clientId:e.string(),version:e.string(),installPath:e.string(),installedAt:e.number().int().nonnegative(),createdAt:e.number().int().nonnegative()}),A=e.object({clientId:e.string(),activeVersion:e.string().nullable(),updatedAt:e.number().int().nonnegative()}),j=e.object({previousActiveVersion:e.string().nullable(),activeVersion:e.string().nullable()}),M=i(`client-binary:storage`,{insertVersion:{request:k,response:e.object({success:e.boolean()})},recordInstalledVersion:{request:e.object({versionRecord:k,makeActive:e.boolean(),updatedAt:e.number().int().nonnegative()}),response:j},listVersions:{request:e.object({clientId:e.string()}),response:e.object({versions:e.array(k)})},getSnapshot:{request:e.object({clientId:e.string()}),response:e.object({state:A.nullable(),versions:e.array(k)})},loadAllVersions:{request:e.object({}),response:e.object({versions:e.array(k)})},upsertState:{request:A,response:e.object({success:e.boolean()})},setActiveVersion:{request:e.object({clientId:e.string(),activeVersion:e.string().nullable(),updatedAt:e.number().int().nonnegative()}),response:j},getState:{request:e.object({clientId:e.string()}),response:e.object({state:A.nullable()})},loadAllState:{request:e.object({}),response:e.object({states:e.array(A)})},loadSnapshot:{request:e.object({}),response:e.object({states:e.array(A),versions:e.array(k)})},removeVersionAndClearActive:{request:e.object({clientId:e.string(),version:e.string(),updatedAt:e.number().int().nonnegative()}),response:j.extend({removedVersion:e.string().nullable()})}}),N=M.subjects;var P=class{definitions=new Map;constructor(e=[]){for(let t of e)this.registerUnique(t)}getDefinition(e){return this.definitions.get(e)}listDefinitions(){return[...this.definitions.values()]}register(e){this.definitions.set(e.id,e)}registerUnique(e){if(this.definitions.has(e.id))throw Error(`ClientDefinitionRegistry: duplicate client definition id '${e.id}'`);this.definitions.set(e.id,e)}};const Ue=process.env.MAKAIO_SKIP_CLIENT_VERSION_CHECK===`1`;function F(e,t,n,r,i){if(n===null){if(s(r))return;if(Ue){console.warn(`[SKIP_VERSION_CHECK] ${e}: ${i} for client '${t}' did not report a version; requires ${r}`);return}throw Error(`${e}: ${i} for client '${t}' did not report a version; requires ${r}`)}if(!c(n,r)){if(Ue){console.warn(`[SKIP_VERSION_CHECK] ${e}: ${i} ${n} for client '${t}' does not satisfy ${r} — check bypassed`);return}throw Error(`${e}: ${i} ${n} for client '${t}' does not satisfy ${r}`)}}var We=class{bus;resolvedBasePath;resolvedConfigBasePath;definitionLookup;constructor(e){this.bus=e.bus,this.resolvedBasePath=e.resolvedBasePath,this.resolvedConfigBasePath=e.resolvedConfigBasePath,this.definitionLookup=e.definitionLookup}async resolve(e){let t=this.definitionLookup.getDefinition(e);if(t===void 0)throw Error(`client.resolveBinary: no definition registered for client '${e}'`);let{state:n,versions:r}=await this.bus.request(N.getSnapshot,{clientId:e}),i=n?.activeVersion??null;return i===null?this.buildGlobalContext(e,t):this.buildManagedContext(e,i,t,r)}isInstallPathWithinBase(e){return D(this.resolvedBasePath,e)}async isExpectedInstallPath(e,r,i){if(!n.isAbsolute(e)||!this.isInstallPathWithinBase(e))return!1;let a=n.resolve(this.resolvedBasePath,r,i);if(!this.isInstallPathWithinBase(a))return!1;try{let[n,r,i]=await Promise.all([t.realpath(this.resolvedBasePath),t.realpath(a),t.realpath(e)]);return D(n,r)?i===r||D(r,i):!1}catch{return!1}}async buildManagedContext(e,t,r,i){let a=i.find(e=>e.version===t);if(a===void 0)throw Error(`client.resolveBinary: active version '${t}' is not installed for client '${e}'`);if(!await this.isExpectedInstallPath(a.installPath,e,t))throw Error(`client.resolveBinary: stored installPath "${a.installPath}" does not match the expected install directory for ${e}@${t}`);r.binary!==void 0&&F(`client.resolveBinary`,e,t,r.binary.supportedVersions,`managed binary version`);let o=I(r.versionCommand)?.[0];if(o===void 0)throw Error(`client.resolveBinary: definition for '${e}' has no versionCommand — cannot derive binary path`);let s=n.resolve(a.installPath,o),c=n.resolve(a.installPath);if(!s.startsWith(c+n.sep)&&s!==c)throw Error(`client.resolveBinary: versionCommand for '${e}' resolves outside the install directory`);let{configDir:l,env:u}=this.resolveIsolatedConfig(e,r);return{binaryPath:s,env:u,configDir:l,source:`managed`,version:t}}async buildGlobalContext(e,t){if(!t.binary?.name)throw Error(`client.resolveBinary: definition for '${e}' has no binary.name — cannot scan PATH`);let n={clientId:e,binaryName:t.binary.name,supportedVersions:t.binary.supportedVersions},{results:r}=await this.bus.request(S.scan,{targets:[n]}),i=r.find(t=>t.clientId===e);if(i===void 0||!i.found)throw new he(e);let a=i.version??null;return F(`client.resolveBinary`,e,a,t.binary.supportedVersions,`detected global binary version`),{binaryPath:null,env:{},configDir:this.resolveGlobalConfigDir(t),source:`global`,version:a}}resolveIsolatedConfig(e,t){let{configIsolation:r}=t;if(r===void 0)return{configDir:null,env:{}};let i=n.join(this.resolvedConfigBasePath,e,`config`),a=r.pathKind===`file`?n.join(i,n.basename(r.defaultPath)):i;return{configDir:i,env:{[r.envVar]:a}}}resolveGlobalConfigDir(e){let{configIsolation:t}=e;if(t===void 0)return null;let r=t.defaultPath,i=r===`~`?w.homedir():r.startsWith(`~/`)?n.join(w.homedir(),r.slice(2)):r,a=t.pathKind===`file`?n.dirname(i):i;if(!n.isAbsolute(a))throw Error(`ConfigIsolation defaultPath for '${e.id}' resolved to non-absolute path '${i}'; use an absolute or tilde-expanded path (e.g. '~/.myapp')`);return a}};function I(e){if(e===void 0)return;let{executable:t,args:n}=e,r=typeof t==`string`?t:t[process.platform]??t.default;if(typeof r!=`string`||r.trim()===``)throw Error(`client.resolveBinary: versionCommand executable is missing for this platform`);return[r,...n]}async function Ge(e,t){let{versions:n,states:r}=await e.request(N.loadSnapshot,{}),i=Map.groupBy(n,e=>e.clientId),a=new Map;for(let e of r)a.set(e.clientId,e.activeVersion);let o=new Map;for(let e of t.listDefinitions())e.managedInstall!==void 0&&o.set(e.id,e.managedInstall);return[...new Set(o.keys())].map(e=>{let t=o.get(e);if(t===void 0)throw Error(`assembleBinaryList: missing descriptor for client '${e}'`);let n=a.get(e)??null,r=(i.get(e)??[]).map(e=>({version:e.version,installPath:e.installPath,installedAt:e.installedAt,isActive:e.version===n})),s=t.version;return{clientId:e,installedVersions:r,activeVersion:n,pinnedVersion:s,updateAvailable:n!==null&&n!==s}})}var Ke=class extends l{config;definitionLookup;versionResolver;jobRunner;strategyDeps;resolvedBasePath;resolvedConfigBasePath;resolver;pendingClients=new Set;constructor(e=a,t,n=new P([]),r=Te()){super(e),this.config=t,this.definitionLookup=n,this.resolvedBasePath=O(t.basePath,`ClientBinaryManager`),this.resolvedConfigBasePath=O(t.configBasePath,`ClientBinaryManager configBasePath`),this.strategyDeps=r,this.versionResolver=new Ee,this.jobRunner=new He(r,t),this.resolver=new We({bus:e,resolvedBasePath:this.resolvedBasePath,resolvedConfigBasePath:this.resolvedConfigBasePath,definitionLookup:n})}async onInit(){this.registerHandler(S.list,async e=>{let t=await this.handleList();e.setResult({clients:t})}),this.registerHandler(S.install,async e=>{let t=await this.handleInstall(e.payload.clientId,e.payload.version);e.setResult(t)}),this.registerHandler(S.update,async e=>{let t=await this.handleUpdate(e.payload.clientId);e.setResult(t)}),this.registerHandler(S.setActive,async e=>{let t=await this.handleSetActive(e.payload.clientId,e.payload.version);e.setResult(t)}),this.registerHandler(S.uninstall,async e=>{let t=await this.handleUninstall(e.payload.clientId,e.payload.version);e.setResult(t)}),this.registerHandler(S.resolveBinary,async e=>{let t=await this.resolver.resolve(e.payload.clientId);e.setResult(t)})}onDestroy(){this.jobRunner.cancelAll(),this.pendingClients.clear()}async handleList(){return Ge(this.bus,this.definitionLookup)}async handleInstall(e,t){let{definition:n,descriptor:r}=this.requireManagedDefinition(e,`client.install`);return this.withClientLock(e,async()=>{let{version:i}=this.versionResolver.resolveInstallVersion(e,r,t);return n.binary!==void 0&&F(`client.install`,e,i,n.binary.supportedVersions,t===void 0?`resolved binary version`:`requested binary version`),{jobId:this.startInstallJob(e,i,r,n,!1,`install`),requestedVersion:t??null,resolvedVersion:i}})}async handleUpdate(e){let{definition:t,descriptor:n}=this.requireManagedDefinition(e,`client.update`);return this.withClientLock(e,async()=>{let{version:r}=this.versionResolver.resolveInstallVersion(e,n);return t.binary!==void 0&&F(`client.update`,e,r,t.binary.supportedVersions,`resolved binary version`),{jobId:this.startInstallJob(e,r,n,t,!0,`update`),resolvedVersion:r}})}async handleSetActive(e,t){if(this.pendingClients.has(e))throw Error(`Operation already in progress for client "${e}"`);this.pendingClients.add(e);try{let{versions:n}=await this.bus.request(N.listVersions,{clientId:e}),r=n.find(e=>e.version===t);if(r===void 0)throw Error(`client.setActive: version '${t}' is not installed for client '${e}'`);let i=this.definitionLookup.getDefinition(e);if(i===void 0)throw Error(`client.setActive: no definition registered for client '${e}'`);i.binary!==void 0&&F(`client.setActive`,e,t,i.binary.supportedVersions,`requested binary version`);let a=I(i.versionCommand);if(a===void 0)throw Error(`client.setActive: no versionCommand registered for client '${e}'`);if(!await this.resolver.isExpectedInstallPath(r.installPath,e,t))throw Error(`client.setActive: stored installPath "${r.installPath}" does not match the expected install directory for ${e}@${t}`);return await Re(this.strategyDeps.exec,r.installPath,a,t),await this.patchActiveVersion(e,t,`set-active`),{clientId:e,activeVersion:t}}finally{this.pendingClients.delete(e)}}async handleUninstall(e,t){if(this.pendingClients.has(e))throw Error(`Operation already in progress for client "${e}"`);this.pendingClients.add(e);try{let{versions:r}=await this.bus.request(N.listVersions,{clientId:e}),i=r.find(e=>e.version===t);if(i===void 0)throw Error(`client.uninstall: version '${t}' is not installed for client '${e}'`);let{removedVersion:a,previousActiveVersion:o,activeVersion:s}=await this.bus.request(N.removeVersionAndClearActive,{clientId:e,version:t,updatedAt:Date.now()});if(a===null)throw Error(`client.uninstall: failed to delete version '${t}' for client '${e}'`);let c=i.installPath,l=typeof c==`string`&&c.length>0?n.resolve(c):null;if(typeof c!=`string`||c.length===0||l===null||!n.isAbsolute(c)||!await this.resolver.isExpectedInstallPath(l,e,t)?console.warn(`[ClientBinaryManager] Skipping removeDirectory: stored installPath "${String(c)}" does not match the expected install directory for ${e}@${t}`):await this.strategyDeps.removeDirectory(l).catch(n=>{console.warn(`[ClientBinaryManager] Failed to remove binary directory "${l}" for ${e}@${t}:`,n)}),o!==null&&s===null)try{await this.bus.emit(S.version.changed,{clientId:e,previousActiveVersion:o,activeVersion:null,reason:`uninstall`})}catch(e){console.warn(`[ClientBinaryManager] Failed to emit client.version.changed:`,e)}return{clientId:e,removedVersion:t,activeVersion:s}}finally{this.pendingClients.delete(e)}}async patchActiveVersion(e,t,n){let r=(await this.bus.request(N.setActiveVersion,{clientId:e,activeVersion:t,updatedAt:Date.now()})).previousActiveVersion;if(r!==t)try{await this.bus.emit(S.version.changed,{clientId:e,previousActiveVersion:r,activeVersion:t,reason:n})}catch(e){console.warn(`[ClientBinaryManager] Failed to emit client.version.changed:`,e)}return r}requireManagedDefinition(e,t){let n=this.definitionLookup.getDefinition(e);if(n===void 0)throw Error(`${t}: no definition registered for client '${e}'`);let r=n.managedInstall;if(r===void 0)throw Error(`${t}: client '${e}' does not declare a managed install descriptor`);return{definition:n,descriptor:r}}async withClientLock(e,t){if(this.pendingClients.has(e))throw Error(`Operation already in progress for client "${e}"`);this.pendingClients.add(e);try{return await t()}catch(t){throw this.pendingClients.delete(e),t}}startInstallJob(e,t,n,r,i,a){let o={jobId:crypto.randomUUID(),clientId:e,version:t,strategy:n.type,status:`pending`,makeActive:i,reason:a};return this.jobRunner.startJob(o,n,e=>{this.bus.emit(S.installJob.progress,e).catch(e=>{console.warn(`[ClientBinaryManager] Failed to emit client.installJob.progress:`,e)})},this.makeCompletionCallback(),async e=>{this.pendingClients.delete(e.clientId),await this.bus.emit(S.installJob.completed,e).catch(e=>{console.warn(`[ClientBinaryManager] Failed to emit client.installJob.completed:`,e)})},r.postInstall,I(r.versionCommand)),o.jobId}makeCompletionCallback(){return async({clientId:e,version:t,installPath:n,makeActive:r,reason:i})=>{let a=Date.now();await T(this.bus,{clientId:e,configDir:this.resolveManagedConfigDir(e),phase:`managed-install`,binaryVersion:t});let o=await this.bus.request(N.recordInstalledVersion,{versionRecord:{id:crypto.randomUUID(),clientId:e,version:t,installPath:n,installedAt:a,createdAt:a},makeActive:r,updatedAt:a});if(r&&o.previousActiveVersion!==o.activeVersion)try{await this.bus.emit(S.version.changed,{clientId:e,previousActiveVersion:o.previousActiveVersion,activeVersion:o.activeVersion,reason:i})}catch(e){console.warn(`[ClientBinaryManager] Failed to emit client.version.changed:`,e)}}}resolveManagedConfigDir(e){return n.join(this.resolvedConfigBasePath,e,`config`)}};function L(e,t){return`${e}${t}`}function R(e,t){return`${e}${t}`}var qe=class{records=new Map;bySupervisorSessionId=new Map;byPidClientId=new Map;byAdapterSessionClientId=new Map;set(e){let t=this.records.get(e.clientRuntimeId);t&&this.removeIndexEntries(t),this.records.set(e.clientRuntimeId,e),this.addIndexEntries(e)}setFromStorage(e,t,n){this.records.set(e.clientRuntimeId,e),e.supervisorSessionId!==void 0&&this.bySupervisorSessionId.set(e.supervisorSessionId,e.clientRuntimeId),t-e.updatedAt<=n&&(e.pid!==void 0&&this.byPidClientId.set(L(e.pid,e.clientId),e.clientRuntimeId),e.adapterSessionId!==void 0&&this.byAdapterSessionClientId.set(R(e.adapterSessionId,e.clientId),e.clientRuntimeId))}delete(e){let t=this.records.get(e);t&&(this.removeIndexEntries(t),this.records.delete(e))}get(e){return this.records.get(e)}findByEvidence(e,t,n,r){if(e!==void 0){let t=this.bySupervisorSessionId.get(e);if(t!==void 0)return this.records.get(t)}if(t!==void 0){let e=this.byPidClientId.get(L(t,r));if(e!==void 0)return this.records.get(e)}if(n!==void 0){let e=this.byAdapterSessionClientId.get(R(n,r));if(e!==void 0)return this.records.get(e)}}values(){return this.records.values()}clear(){this.records.clear(),this.bySupervisorSessionId.clear(),this.byPidClientId.clear(),this.byAdapterSessionClientId.clear()}get size(){return this.records.size}addIndexEntries(e){e.supervisorSessionId!==void 0&&this.bySupervisorSessionId.set(e.supervisorSessionId,e.clientRuntimeId),e.pid!==void 0&&this.byPidClientId.set(L(e.pid,e.clientId),e.clientRuntimeId),e.adapterSessionId!==void 0&&this.byAdapterSessionClientId.set(R(e.adapterSessionId,e.clientId),e.clientRuntimeId)}removeIndexEntries(e){e.supervisorSessionId!==void 0&&this.bySupervisorSessionId.delete(e.supervisorSessionId),e.pid!==void 0&&this.byPidClientId.delete(L(e.pid,e.clientId)),e.adapterSessionId!==void 0&&this.byAdapterSessionClientId.delete(R(e.adapterSessionId,e.clientId))}};const Je=[`observed`,`started`],z=e.object({clientRuntimeId:e.string(),clientId:e.string(),status:e.enum(Je),supervisorSessionId:e.string().optional(),pid:e.number().int().positive().optional(),parentPid:e.number().int().positive().optional(),adapterSessionId:e.string().optional(),sessionId:e.string().optional(),cwd:e.string().optional(),argv:e.array(e.string()).optional(),metadata:e.record(e.string(),e.unknown()).optional(),observedAt:e.number().int().nonnegative(),createdAt:e.number().int().nonnegative(),updatedAt:e.number().int().nonnegative()}),B=i(`client-runtime:storage`,{upsert:{request:z,response:e.object({success:e.boolean()})},loadAll:{request:e.object({}),response:e.object({records:e.array(z)})}}),V=B.subjects;function Ye(e){return e.supervisorSessionId!==void 0||e.adapterSessionId!==void 0}function H(e){return{...e,argv:e.argv===void 0?void 0:[...e.argv],metadata:e.metadata===void 0?void 0:structuredClone(e.metadata)}}function Xe(e){return Math.max(Date.now(),e+1)}function Ze(e,t){let n=!1;return t.supervisorSessionId!==void 0&&e.supervisorSessionId!==t.supervisorSessionId&&(e.supervisorSessionId=t.supervisorSessionId,n=!0),t.pid!==void 0&&e.pid!==t.pid&&(e.pid=t.pid,n=!0),t.parentPid!==void 0&&e.parentPid!==t.parentPid&&(e.parentPid=t.parentPid,n=!0),t.adapterSessionId!==void 0&&e.adapterSessionId!==t.adapterSessionId&&(e.adapterSessionId=t.adapterSessionId,n=!0),t.sessionId!==void 0&&e.sessionId!==t.sessionId&&(e.sessionId=t.sessionId,n=!0),t.cwd!==void 0&&e.cwd!==t.cwd&&(e.cwd=t.cwd,n=!0),t.argv!==void 0&&JSON.stringify(e.argv)!==JSON.stringify(t.argv)&&(e.argv=[...t.argv],n=!0),t.metadata!==void 0&&JSON.stringify(e.metadata)!==JSON.stringify(t.metadata)&&(e.metadata=structuredClone(t.metadata),n=!0),n}var Qe=class{runtimeMap=new qe;bus;constructor(e){this.bus=e}async loadFromStorage(){if(!this.bus)return;let e=await this.bus.requestOptional(V.loadAll,{});if(!e.handled)return;let t=Date.now();for(let n of e.data.records)this.runtimeMap.setFromStorage(H(n),t,864e5)}async upsertRuntime(e){let t=this.runtimeMap.findByEvidence(e.supervisorSessionId,e.pid,e.adapterSessionId,e.clientId);if(t){let n=t.status===`observed`,r=n&&Ye(e),i=Ze(t,e),a=n&&e.observedAt>t.observedAt;return r&&(t.status=`started`),(i||r||a)&&(t.updatedAt=Xe(t.updatedAt),a&&(t.observedAt=e.observedAt),this.runtimeMap.set(t),await this.persistRecord(t)),{clientRuntimeId:t.clientRuntimeId,created:!1,promoted:r,record:H(t)}}let n=Date.now(),i=r(),a=Ye(e)?`started`:`observed`,o={clientRuntimeId:i,clientId:e.clientId,status:a,supervisorSessionId:e.supervisorSessionId,pid:e.pid,parentPid:e.parentPid,adapterSessionId:e.adapterSessionId,sessionId:e.sessionId,cwd:e.cwd,argv:e.argv?[...e.argv]:void 0,metadata:e.metadata?structuredClone(e.metadata):void 0,observedAt:e.observedAt,createdAt:n,updatedAt:n};return this.runtimeMap.set(o),await this.persistRecord(o),{clientRuntimeId:i,created:!0,promoted:!1,record:H(o)}}getRuntime(e){let t=this.runtimeMap.get(e);return t?H(t):void 0}clear(){this.runtimeMap.clear()}get size(){return this.runtimeMap.size}async persistRecord(e){this.bus&&await this.bus.requestOptional(V.upsert,H(e))}};const U=e.object({eventName:e.string(),receivedAt:e.number().int().finite().nonnegative().describe(`Unix epoch timestamp in milliseconds`),payload:e.record(e.string(),e.unknown()),metadata:e.record(e.string(),e.unknown()).optional()}),$e=/^[a-z0-9-]+$/;function W(e,t=`canonicalizeClientId`){let n=e.trim().toLowerCase(),r=n.startsWith(`client:`)?n.slice(7):n;if(r.length===0)throw Error(`[${t}] clientId must be a non-empty string`);if(!$e.test(r))throw Error(`[${t}] clientId must contain only lowercase letters, numbers, and hyphens after an optional client: prefix`);return r}function et(e){return{subject:`hook.received`,$meta:{namespace:`client:${W(e,`createRawClientHookReceivedSubject`)}`,isRequest:!1,local:!1,channel:!1}}}const tt=5e3,nt=e.object({exitCode:e.number().int().min(0).max(255).default(0),stdout:e.string().default(``),stderr:e.string().default(``)});function rt(e){return{subject:`hook.handle`,$meta:{namespace:`client:${W(e,`createRawClientHookHandleSubject`)}`,isRequest:!0,local:!1,channel:!1}}}function it(e){if(typeof e!=`string`)return;let t=e.trim();return t.length>0?t:void 0}function at(e,t){return it(e[t])}function ot(e){return{clientId:e.clientId,source:`adapter-derived`,observedAt:Date.now(),...e.sessionId!==void 0&&{sessionId:e.sessionId},...e.adapterSessionId!==void 0&&{adapterSessionId:e.adapterSessionId}}}function st(e){try{e().catch(ct)}catch(e){ct(e)}}function ct(e){(process.env.DEBUG||process.env.MAKAIO_DEBUG)&&console.debug(`[emitBestEffort] observed-semantics emission failed`,e)}function lt(e,t){return{subject:t,$meta:{namespace:`client:${W(e,`createClientWiringSubjectDef`)}`,isRequest:!0,local:!1,channel:!1}}}function ut(e){return lt(e,`wiring.list`)}const dt=e.string().min(1).refine(n.isAbsolute,{message:`projectDir must be an absolute path`}),ft=e.object({entries:e.array(C)}),pt=e.object({applied:e.number().int().nonnegative(),skipped:e.number().int().nonnegative()}),mt=e.object({removed:e.number().int().nonnegative()}),ht=e.object({clientId:e.string().trim().min(1),entries:e.array(C)});function gt(e){if(e!==void 0&&!n.isAbsolute(e))throw Error(`projectDir must be an absolute path, got: ${e}`)}var _t=class extends l{accountRegistry;runtimeRegistry;latestSnapshots=new Map;activeIdentities=new Map;constructor(e=a,t=new ge,n=new Qe(e)){super(e),this.accountRegistry=t,this.runtimeRegistry=n}async onInit(){await this.runtimeRegistry.loadFromStorage(),this.registerHandler(S.account.observe,e=>this.handleAccountObserve(e)),this.registerHandler(S.usage.ingest,e=>this.handleUsageIngest(e)),this.registerHandler(S.scan,async e=>{let t=await this.scanClients(e.payload.targets);e.setResult({results:t})}),this.registerHandler(S.runtime.observe,e=>this.handleRuntimeObserve(e)),this.registerHandler(S.wiring.list,async e=>{let t=await this.listWirings(e.payload);e.setResult({results:t})}),this.registerHandler(S.account.activate,e=>{this.activeIdentities.set(e.payload.clientId,{clientAccountId:e.payload.clientAccountId,identifiers:e.payload.identifiers,displayLabel:e.payload.displayLabel}),e.setResult({accepted:!0})}),this.registerHandler(S.account.getActive,e=>{let t=this.activeIdentities.get(e.payload.clientId);e.setResult({identity:t??null})})}onDestroy(){this.latestSnapshots.clear(),this.activeIdentities.clear(),this.accountRegistry.clear(),this.runtimeRegistry.clear()}getLatestSnapshot(e){return this.latestSnapshots.get(e)}async handleAccountObserve(e){let t=this.accountRegistry.upsertAccount({clientId:e.payload.clientId,identifiers:e.payload.identifiers,displayLabel:e.payload.displayLabel}),n=this.latestSnapshots.get(t.clientAccountId),r=bt(this.consolidateMergedSnapshots(t.clientAccountId,t.mergedAccountIds)??n,t.displayLabel);r&&this.latestSnapshots.set(t.clientAccountId,r),r&&(t.mergedAccountIds.length>0||r!==n)&&await this.bus.emit(S.usage.snapshot,r),e.setResult({clientAccountId:t.clientAccountId,displayLabel:t.displayLabel})}async handleUsageIngest(e){let t=this.accountRegistry.upsertAccount({clientId:e.payload.clientId,identifiers:e.payload.account.identifiers,displayLabel:e.payload.account.displayLabel});this.consolidateMergedSnapshots(t.clientAccountId,t.mergedAccountIds);let n=vt(t.clientAccountId,e.payload,t.displayLabel),r=bt(yt(this.latestSnapshots.get(t.clientAccountId),n),t.displayLabel);this.latestSnapshots.set(t.clientAccountId,r),await this.bus.emit(S.usage.snapshot,r),e.setResult({clientAccountId:t.clientAccountId,snapshot:r})}async handleRuntimeObserve(e){let{payload:t}=e;if(t.supervisorSessionId===void 0&&t.pid===void 0&&t.adapterSessionId===void 0)throw Error(`client.runtime.observe: at least one hard-evidence field is required (supervisorSessionId, pid, or adapterSessionId)`);let{record:n,...r}=await this.runtimeRegistry.upsertRuntime(t);(r.created||r.promoted)&&await this.bus.emit(S.runtime.started,{clientRuntimeId:n.clientRuntimeId,clientId:n.clientId,status:n.status,source:t.source,observedAt:t.observedAt,supervisorSessionId:n.supervisorSessionId,pid:n.pid,parentPid:n.parentPid,adapterSessionId:n.adapterSessionId,sessionId:n.sessionId,cwd:n.cwd,argv:n.argv,metadata:n.metadata}),e.setResult({clientRuntimeId:r.clientRuntimeId,created:r.created,promoted:r.promoted})}async scanClients(e){let t=e??await this.listScannableStoredClients();if(t.length===0)return[];let n=Array.from(new Set(t.map(e=>e.binaryName))),{results:r}=await this.bus.request(le.scan,{binaries:n}),i=new Map(r.map(e=>[e.binary,e]));return t.map(e=>{let t=i.get(e.binaryName),n=t?.found??!1,r=t?.version;return{clientId:e.clientId,found:n,version:r,warningMessage:St(n,r,e.supportedVersions)}})}async listScannableStoredClients(){let{clients:e}=await this.bus.request(ue.list,{});return e.filter(xt).map(e=>({clientId:e.id,binaryName:e.binary.name,supportedVersions:e.binary.supportedVersions}))}async listWirings(e){gt(e.projectDir);let{clients:t}=await this.bus.request(ue.list,{}),n=e.clientId===void 0?void 0:W(e.clientId,`listWirings`),r=t.filter(e=>e.enabled).filter(e=>n===void 0||e.id===n),i=await Promise.allSettled(r.map(async t=>{let n=ut(t.id),r=await this.bus.requestOptional(n,{projectDir:e.projectDir,makaioCommand:e.makaioCommand});return r.handled?{clientId:t.id,entries:r.data.entries}:null}));for(let e=0;e<i.length;e++){let t=i[e];if(t.status===`rejected`){let n=t.reason instanceof Error?t.reason.message:String(t.reason);console.warn(`[ClientRuntimeService] wiring.list for ${r[e].id} failed: ${n}`)}}return i.filter(e=>e.status===`fulfilled`).map(e=>e.value).filter(e=>e!==null)}consolidateMergedSnapshots(e,t){let n=this.latestSnapshots.get(e),r=!1;for(let i of t){if(i===e)continue;let t=this.latestSnapshots.get(i);t&&(n===void 0||t.observedAt>n.observedAt)&&(n={...t,clientAccountId:e},r=!0),this.latestSnapshots.delete(i)}return n&&this.latestSnapshots.set(e,n),r?n:void 0}};function vt(e,t,n){return{clientAccountId:e,clientId:t.clientId,observedAt:t.observedAt,source:t.source,displayLabel:n,usage:{windows:t.usage.windows.map(e=>({...e}))},metadata:t.metadata?{...t.metadata}:void 0}}function yt(e,t){return e&&e.observedAt>t.observedAt?e:t}function bt(e,t){return!e||t===void 0||e.displayLabel===t?e:{...e,displayLabel:t}}function xt(e){return e.enabled&&e.binary!==void 0}function St(e,t,n){if(e&&t!==void 0&&t!==`unknown`&&n!==void 0&&!c(t,n))return`Unsupported version: requires ${n}`}var Ct=class extends l{constructor(e=a){super(e)}onInit(){this.registerHandler(S.config.prime,async e=>{e.setResult(await T(this.bus,e.payload))})}};const G=ae,K=e.string().trim().min(1),q=i(`client-profile:storage`,{get:{request:e.object({clientId:K,name:x}),response:e.object({record:G.nullable()})},getById:{request:e.object({id:K}),response:e.object({record:G.nullable()})},list:{request:e.object({clientId:K}),response:e.object({records:e.array(G)})},set:{request:G,response:e.object({success:e.boolean()})},delete:{request:e.object({clientId:K,name:x}),response:e.object({success:e.boolean()})},clearDefault:{request:e.object({clientId:K}),response:e.object({success:e.boolean()})},setDefault:{request:e.object({clientId:K,name:x}),response:e.object({record:G.nullable()})}}),J=q.subjects;function wt(e,t,r){let i=n.resolve(e),a=n.resolve(t),o=n.relative(i,a);if(o!==``&&!o.startsWith(`..`)&&!n.isAbsolute(o))return a;throw Error(`${r} refused to access path outside client profile root`)}var Tt=class extends l{clientsBasePath;constructor(e,t){super(e),this.clientsBasePath=t}async onInit(){this.registerCreateHandler(),this.registerListHandler(),this.registerGetHandler(),this.registerUpdateHandler(),this.registerDeleteHandler(),this.registerSetDefaultHandler()}registerCreateHandler(){this.registerHandler(S.profile.create,async e=>{let i=W(e.payload.clientId,`profile.create`),{name:a,description:o}=e.payload;if((await this.bus.request(J.get,{clientId:i,name:a})).record!==null)throw Error(`Profile '${a}' already exists for client '${i}'`);let s=n.join(this.clientsBasePath,i,`profiles`),c=wt(s,n.join(s,a),`profile.create`);await t.mkdir(c,{recursive:!0});try{await T(this.bus,{clientId:i,configDir:c,phase:`profile-create`});let t=Date.now(),n={id:r(),clientId:i,name:a,description:o??null,configDir:c,isDefault:!1,createdAt:t,updatedAt:t};await this.bus.request(J.set,n),e.setResult({profile:n})}catch(e){throw await t.rm(c,{recursive:!0,force:!0}),e}})}registerListHandler(){this.registerHandler(S.profile.list,async e=>{let t=W(e.payload.clientId,`profile.list`),n=await this.bus.request(J.list,{clientId:t});e.setResult({profiles:n.records})})}registerGetHandler(){this.registerHandler(S.profile.get,async e=>{let t=W(e.payload.clientId,`profile.get`),n=await this.bus.request(J.get,{clientId:t,name:e.payload.name});e.setResult({profile:n.record})})}registerUpdateHandler(){this.registerHandler(S.profile.update,async e=>{let t=W(e.payload.clientId,`profile.update`),{name:n,description:r}=e.payload,i=await this.bus.request(J.get,{clientId:t,name:n});if(i.record===null)throw Error(`Profile '${n}' not found for client '${t}'`);let a={...i.record,description:r===void 0?i.record.description:r,updatedAt:Date.now()};await this.bus.request(J.set,a),e.setResult({profile:a})})}registerDeleteHandler(){this.registerHandler(S.profile.delete,async e=>{let r=W(e.payload.clientId,`profile.delete`),{name:i}=e.payload,a=await this.bus.request(J.get,{clientId:r,name:i});a.record!==null&&(wt(n.join(this.clientsBasePath,r,`profiles`),a.record.configDir,`profile.delete`),await t.rm(a.record.configDir,{recursive:!0,force:!0}));let o=await this.bus.request(J.delete,{clientId:r,name:i});e.setResult({success:o.success})})}registerSetDefaultHandler(){this.registerHandler(S.profile.setDefault,async e=>{let t=W(e.payload.clientId,`profile.setDefault`),{name:n}=e.payload,r=await this.bus.request(J.setDefault,{clientId:t,name:n});if(r.record===null)throw Error(`Profile '${n}' not found for client '${t}'`);e.setResult({profile:r.record})})}};function Et(e){return{subject:`sessionConfig.setup`,$meta:{namespace:`client:${e}`,isRequest:!0,local:!1,channel:!1}}}function Dt(e){return{subject:`sessionConfig.destroy`,$meta:{namespace:`client:${e}`,isRequest:!0,local:!1,channel:!1}}}const Ot=()=>Date.now();function kt(){let e=w.platform();if(e===`darwin`||e===`linux`||e===`win32`)return e;throw Error(`client.sessionConfig does not support platform '${e}'`)}function At(e,t,r){let i=ce.safeParse(t);if(!i.success)throw Error(`${r} received an unsafe session ID`);let a=n.resolve(e),o=n.resolve(a,i.data),s=n.relative(a,o);if(s===``||!s.startsWith(`..`)&&!n.isAbsolute(s))return o;throw Error(`${r} refused to access path outside client sessions root`)}var jt=class extends l{clientsBasePath;getNow;constructor(e,t,n=Ot){super(e),this.clientsBasePath=t,this.getNow=n}async onInit(){this.registerHandler(S.sessionConfig.create,async e=>{let{clientId:n,sessionId:r,profileName:i,baseConfigDir:a,projectDir:o,configInheritance:s=`full`}=e.payload,c=W(n,`sessionConfig.create`),l=this.resolveClientSessionDir(c,r,`sessionConfig.create`);await t.mkdir(l,{recursive:!0});try{let t=await this.resolveBaseConfigDir(c,l,i,a),n=Et(c),r=await this.bus.requestOptional(n,{sessionDir:l,baseConfigDir:t,projectDir:o,platform:kt(),configInheritance:s}),u=r.handled?r.data.env??{}:{};await T(this.bus,{clientId:c,configDir:l,phase:`session-create`,projectDir:o}),e.setResult({sessionDir:l,env:u})}catch(e){throw await t.rm(l,{recursive:!0,force:!0}),e}}),this.registerHandler(S.sessionConfig.destroy,async e=>{let{clientId:t,sessionId:n}=e.payload,r=W(t,`sessionConfig.destroy`),i=this.resolveClientSessionDir(r,n,`sessionConfig.destroy`);await this.destroyClientSessionDir(r,i),e.setResult({success:!0})}),this.registerHandler(S.sessionConfig.cleanup,async e=>{let{clientId:t}=e.payload,n=t===void 0?void 0:W(t,`sessionConfig.cleanup`),r=await this.cleanupOrphanedDirs(n);e.setResult({removed:r})}),this.registerHandler(de.closed,async e=>{await this.destroySessionDirsForSessionId(e.payload.sessionId)}),await this.cleanupOrphanedDirs()}async resolveBaseConfigDir(e,t,n,r){if(r!==void 0)return r;if(n!==void 0){let t=await this.bus.request(J.get,{clientId:e,name:n});if(t.record!==null)return t.record.configDir;throw Error(`Profile '${n}' not found for client '${e}'`)}let i=(await this.bus.request(J.list,{clientId:e})).records.find(e=>e.isDefault);return i?i.configDir:t}async cleanupOrphanedDirs(e){let r=[],i=this.getNow(),a=e===void 0?await this.listClientIds():[e];return await Promise.all(a.map(async e=>{let a=n.join(this.clientsBasePath,e,`sessions`),o=await t.readdir(a).catch(()=>[]);await Promise.all(o.map(async n=>{try{let o=At(a,n,`sessionConfig.cleanup`),s=await t.stat(o),c=s.birthtimeMs>0?s.birthtimeMs:s.ctimeMs;s.isDirectory()&&i-c>36e5&&!await this.isActiveSession(n)&&(await this.destroyClientSessionDir(e,o),r.push(o))}catch{}}))})),r}async destroySessionDirsForSessionId(e){if(!ce.safeParse(e).success)return;let t=await this.listClientIds();await Promise.all(t.map(async t=>{let n=this.resolveClientSessionDir(t,e,`session.closed`);await this.destroyClientSessionDir(t,n)}))}async destroyClientSessionDir(e,n){await t.stat(n).then(e=>e.isDirectory(),e=>{let t=e.code;if(t===`ENOENT`||t===`ENOTDIR`)return!1;throw e})&&(await this.bus.requestOptional(Dt(e),{sessionDir:n,platform:kt()}),await t.rm(n,{recursive:!0,force:!0}))}async isActiveSession(e){let t=await this.bus.requestOptional(de.get,{sessionId:e});return t.handled&&t.data.session?.status===`active`}resolveClientSessionDir(e,t,r){return At(n.join(this.clientsBasePath,e,`sessions`),t,r)}async listClientIds(){return(await t.readdir(this.clientsBasePath,{withFileTypes:!0}).catch(()=>[])).filter(e=>e.isDirectory()).map(e=>e.name)}};const Mt=new Set([`hook.received`,`hook.handle`]);function Nt(e,t){return a.registerNamespace(i(`client:${e}`,{"hook.received":U,"hook.handle":{request:U,response:nt},...t})).subjects}function Pt(e,t){let n=Object.keys(t).filter(e=>Mt.has(e));if(n.length===0)return;let r=n.join(`, `);throw Error([`[createClientNamespace] additionalSchemas for client:${e}`,`cannot override reserved shared hook subjects: ${r}`].join(` `))}function Ft(e,t){let n=e;for(let e of t.split(`.`)){if(typeof n!=`object`||!n||!(e in n))return!1;n=n[e]}return!0}function It(e,t,n){let r=Object.keys(n).filter(e=>!Ft(t,e));if(r.length!==0)throw Error(`[createClientNamespace] client:${e} was already registered without required subjects: ${r.join(`, `)}`)}function Lt(e,t){let n=W(e,`createClientNamespace`),r=t??{};Pt(n,r);let i=Nt(n,r);return It(n,i,r),{namespaceDomain:`client:${n}`,subjects:i}}const Y=g(`client_runtimes`,e=>({id:e.text(`id`).primaryKey(),clientId:e.text(`client_id`).notNull(),status:e.text(`status`).notNull(),supervisorSessionId:e.text(`supervisor_session_id`),pid:e.int4(`pid`),parentPid:e.int4(`parent_pid`),adapterSessionId:e.text(`adapter_session_id`),sessionId:e.text(`session_id`),cwd:e.text(`cwd`),argv:e.jsonCol(`argv`),metadata:e.jsonCol(`metadata`),observedAt:e.epochMs(`observed_at`).notNull(),createdAt:e.epochMs(`created_at`).notNull(),updatedAt:e.epochMs(`updated_at`).notNull()}),{sqlite:e=>[u(`idx_client_runtimes_supervisor_session_id`).on(e.supervisorSessionId),u(`idx_client_runtimes_pid_client_id`).on(e.pid,e.clientId),u(`idx_client_runtimes_adapter_session_id_client_id`).on(e.adapterSessionId,e.clientId)],postgres:e=>[p(`idx_client_runtimes_supervisor_session_id`).on(e.supervisorSessionId),p(`idx_client_runtimes_pid_client_id`).on(e.pid,e.clientId),p(`idx_client_runtimes_adapter_session_id_client_id`).on(e.adapterSessionId,e.clientId)]}),Rt=Y.sqlite,zt=Y.postgres,Bt=ee({clientRuntimes:Rt},{clientRuntimes:zt}),Vt=new Set(Je);function Ht(e){if(!Vt.has(e.status))throw Error(`Unknown ClientRuntimeStatus in DB: '${e.status}'`);return{clientRuntimeId:e.id,clientId:e.clientId,status:e.status,supervisorSessionId:e.supervisorSessionId??void 0,pid:e.pid??void 0,parentPid:e.parentPid??void 0,adapterSessionId:e.adapterSessionId??void 0,sessionId:e.sessionId??void 0,cwd:e.cwd??void 0,argv:e.argv??void 0,metadata:e.metadata??void 0,observedAt:e.observedAt,createdAt:e.createdAt,updatedAt:e.updatedAt}}function Ut(e,t){let{clientRuntimes:n}=v(t,Bt),r=e.on(V.upsert,async e=>{let r=e.payload,i={clientId:r.clientId,status:r.status,supervisorSessionId:r.supervisorSessionId??null,pid:r.pid??null,parentPid:r.parentPid??null,adapterSessionId:r.adapterSessionId??null,sessionId:r.sessionId??null,cwd:r.cwd??null,argv:r.argv??null,metadata:r.metadata??null,observedAt:r.observedAt,updatedAt:r.updatedAt};await t.insert(n).values({id:r.clientRuntimeId,createdAt:r.createdAt,...i}).onConflictDoUpdate({target:n.id,set:i,setWhere:re(ie`excluded.updated_at`,n.updatedAt)}),e.setResult({success:!0})}),i=e.on(V.loadAll,async e=>{let r=await t.select().from(n);e.setResult({records:r.map(Ht)})});return()=>{r(),i()}}const Wt=g(`client_binary_versions`,e=>({id:e.text(`id`).primaryKey(),clientId:e.text(`client_id`).notNull(),version:e.text(`version`).notNull(),installPath:e.text(`install_path`).notNull(),installedAt:e.epochMs(`installed_at`).notNull(),createdAt:e.epochMs(`created_at`).notNull()}),{sqlite:e=>[d(`uq_client_binary_versions_client_version`).on(e.clientId,e.version)],postgres:e=>[m(`uq_client_binary_versions_client_version`).on(e.clientId,e.version)]}),Gt=Wt.sqlite,Kt=g(`client_binary_state`,e=>({clientId:e.text(`client_id`).primaryKey(),activeVersion:e.text(`active_version`),updatedAt:e.epochMs(`updated_at`).notNull()})),qt=Kt.sqlite,Jt=Wt.postgres,Yt=Kt.postgres,X=ee({clientBinaryVersions:Gt,clientBinaryState:qt},{clientBinaryVersions:Jt,clientBinaryState:Yt});function Z(e){return{id:e.id,clientId:e.clientId,version:e.version,installPath:e.installPath,installedAt:e.installedAt,createdAt:e.createdAt}}function Q(e){return{clientId:e.clientId,activeVersion:e.activeVersion??null,updatedAt:e.updatedAt}}function Xt(e){return{id:e.id,clientId:e.clientId,version:e.version,installPath:e.installPath,installedAt:e.installedAt,createdAt:e.createdAt}}async function Zt(e,t,n){await e.insert(n).values(Xt(t)).onConflictDoNothing({target:[n.clientId,n.version]})}function Qt(e,t,n){return{clientId:e,activeVersion:t,updatedAt:n}}async function $t(e,t,n,r,i){await e.insert(i).values(Qt(t,n,r)).onConflictDoUpdate({target:i.clientId,set:{activeVersion:n,updatedAt:r}})}async function en(e,t){let{clientBinaryVersions:n}=v(e,X);await Zt(e,t,n)}async function tn(e,t,n,r){let{clientBinaryVersions:i,clientBinaryState:a}=v(e,X);return _(e,async e=>{let[o]=await e.select().from(a).where(b(a.clientId,t.clientId)).limit(1),s=o?.activeVersion??null;return await Zt(e,t,i),n?(await $t(e,t.clientId,t.version,r,a),{previousActiveVersion:s,activeVersion:t.version}):{previousActiveVersion:s,activeVersion:s}})}async function nn(e,t){let{clientBinaryVersions:n,clientBinaryState:r}=v(e,X);return _(e,async e=>{let[i]=await e.select().from(r).where(b(r.clientId,t)).limit(1),a=await e.select().from(n).where(b(n.clientId,t));return{state:i?Q(i):null,versions:a.map(Z)}})}async function rn(e){let{clientBinaryVersions:t,clientBinaryState:n}=v(e,X);return _(e,async e=>{let r=await e.select().from(n),i=await e.select().from(t);return{states:r.map(Q),versions:i.map(Z)}})}async function an(e,t){let{clientBinaryState:n}=v(e,X),r={clientId:t.clientId,activeVersion:t.activeVersion??null,updatedAt:t.updatedAt};await e.insert(n).values(r).onConflictDoUpdate({target:n.clientId,set:r})}async function on(e,t,n,r){let{clientBinaryState:i}=v(e,X);return _(e,async e=>{let[a]=await e.select().from(i).where(b(i.clientId,t)).limit(1),o=a?.activeVersion??null;return await $t(e,t,n,r,i),{previousActiveVersion:o,activeVersion:n}})}async function sn(e,t,n,r){let{clientBinaryVersions:i,clientBinaryState:a}=v(e,X);return _(e,async e=>{let[o]=await e.select().from(a).where(b(a.clientId,t)).limit(1),s=o?.activeVersion??null;if(!te(await e.delete(i).where(y(b(i.clientId,t),b(i.version,n)))))return{removedVersion:null,previousActiveVersion:s,activeVersion:s};await e.update(a).set({activeVersion:null,updatedAt:r}).where(y(b(a.clientId,t),b(a.activeVersion,n)));let[c]=await e.select().from(a).where(b(a.clientId,t)).limit(1);return{removedVersion:n,previousActiveVersion:s,activeVersion:c?.activeVersion??null}})}function cn(e,t){let{clientBinaryVersions:n,clientBinaryState:r}=v(t,X),i=[e.on(N.insertVersion,async e=>{await en(t,e.payload),e.setResult({success:!0})}),e.on(N.recordInstalledVersion,async e=>{let{versionRecord:n,makeActive:r,updatedAt:i}=e.payload,a=await tn(t,n,r,i);e.setResult(a)}),e.on(N.listVersions,async e=>{let r=await t.select().from(n).where(b(n.clientId,e.payload.clientId));e.setResult({versions:r.map(Z)})}),e.on(N.getSnapshot,async e=>{let{state:n,versions:r}=await nn(t,e.payload.clientId);e.setResult({state:n,versions:r})}),e.on(N.loadAllVersions,async e=>{let r=await t.select().from(n);e.setResult({versions:r.map(Z)})}),e.on(N.upsertState,async e=>{await an(t,e.payload),e.setResult({success:!0})}),e.on(N.setActiveVersion,async e=>{let{clientId:n,activeVersion:r,updatedAt:i}=e.payload,a=await on(t,n,r,i);e.setResult(a)}),e.on(N.getState,async e=>{let[n]=await t.select().from(r).where(b(r.clientId,e.payload.clientId)).limit(1);e.setResult({state:n?Q(n):null})}),e.on(N.loadAllState,async e=>{let n=await t.select().from(r);e.setResult({states:n.map(Q)})}),e.on(N.loadSnapshot,async e=>{let{states:n,versions:r}=await rn(t);e.setResult({states:n,versions:r})}),e.on(N.removeVersionAndClearActive,async e=>{let{clientId:n,version:r,updatedAt:i}=e.payload,a=await sn(t,n,r,i);e.setResult(a)})];return()=>{for(let e of i)e()}}const ln=g(`client_profiles`,e=>({id:e.text(`id`).primaryKey(),clientId:e.text(`client_id`).notNull(),name:e.text(`name`).notNull(),description:e.text(`description`),configDir:e.text(`config_dir`).notNull(),isDefault:e.bool(`is_default`).notNull().default(!1),createdAt:e.epochMs(`created_at`).notNull(),updatedAt:e.epochMs(`updated_at`).notNull()}),{sqlite:e=>[f(`uq_client_profiles_client_name`).on(e.clientId,e.name),f(`uq_client_profiles_default`).on(e.clientId).where(ie`${e.isDefault} = 1`)],postgres:e=>[h(`uq_client_profiles_client_name`).on(e.clientId,e.name),h(`uq_client_profiles_default`).on(e.clientId).where(ie`${e.isDefault} = true`)]}),un=ln.sqlite,dn=ln.postgres,fn=ee({clientProfiles:un},{clientProfiles:dn});function $(e){return{id:e.id,clientId:e.clientId,name:e.name,description:e.description??null,configDir:e.configDir,isDefault:e.isDefault,createdAt:e.createdAt,updatedAt:e.updatedAt}}async function pn(e,t,n){let{clientProfiles:r}=v(e,fn),i=Date.now();return _(e,async e=>{let[a]=await e.select().from(r).where(y(b(r.clientId,t),b(r.name,n))).limit(1);if(a===void 0)return null;await e.update(r).set({isDefault:!1,updatedAt:i}).where(y(b(r.clientId,t),b(r.isDefault,!0))),await e.update(r).set({isDefault:!0,updatedAt:i}).where(y(b(r.clientId,t),b(r.name,n)));let[o]=await e.select().from(r).where(y(b(r.clientId,t),b(r.name,n))).limit(1);return o===void 0?null:$(o)})}function mn(e,t){let{clientProfiles:n}=v(t,fn),r=[e.on(J.get,async e=>{let{clientId:r,name:i}=e.payload,[a]=await t.select().from(n).where(y(b(n.clientId,r),b(n.name,i))).limit(1);e.setResult({record:a?$(a):null})}),e.on(J.getById,async e=>{let[r]=await t.select().from(n).where(b(n.id,e.payload.id)).limit(1);e.setResult({record:r?$(r):null})}),e.on(J.list,async e=>{let r=await t.select().from(n).where(b(n.clientId,e.payload.clientId));e.setResult({records:r.map($)})}),e.on(J.set,async e=>{let r=e.payload,i={id:r.id,clientId:r.clientId,name:r.name,description:r.description??null,configDir:r.configDir,isDefault:r.isDefault,createdAt:r.createdAt,updatedAt:r.updatedAt};await t.insert(n).values(i).onConflictDoUpdate({target:n.id,set:{name:r.name,description:r.description??null,configDir:r.configDir,isDefault:r.isDefault,updatedAt:r.updatedAt}}),e.setResult({success:!0})}),e.on(J.delete,async e=>{let{clientId:r,name:i}=e.payload,a=await t.delete(n).where(y(b(n.clientId,r),b(n.name,i)));e.setResult({success:te(a)})}),e.on(J.clearDefault,async e=>{await t.update(n).set({isDefault:!1,updatedAt:Date.now()}).where(y(b(n.clientId,e.payload.clientId),b(n.isDefault,!0))),e.setResult({success:!0})}),e.on(J.setDefault,async e=>{let{clientId:n,name:r}=e.payload,i=await pn(t,n,r);e.setResult({record:i})})];return()=>{for(let e of r)e()}}var hn=class{runtimeService;binaryManager;configPrimeService;profileService;sessionConfigService;constructor(e,t,n,r,i){this.runtimeService=e,this.binaryManager=t,this.configPrimeService=n,this.profileService=r,this.sessionConfigService=i}async init(){let e=(await Promise.allSettled([this.runtimeService.init(),this.binaryManager.init(),this.configPrimeService.init(),this.profileService.init(),this.sessionConfigService.init()])).filter(e=>e.status===`rejected`);if(e.length>0){for(let t=1;t<e.length;t++)console.warn(`[ClientsCoreService] Multiple init failures, secondary:`,e[t].reason);throw e[0].reason}}async destroy(){let e=(await Promise.allSettled([this.runtimeService.destroy(),this.binaryManager.destroy(),this.configPrimeService.destroy(),this.profileService.destroy(),this.sessionConfigService.destroy()])).filter(e=>e.status===`rejected`);for(let t of e)console.warn(`[ClientsCoreService] destroy failure:`,t.reason)}};const gn=o(`makaio.clients-core`);function _n(e){let t=[],n=()=>{for(let e of[...t].reverse())e()};try{for(let n of e)t.push(n())}catch(e){throw n(),e}return n}function vn(e={}){let{definitions:t=[],strategyDependencies:r,postInstallHandlers:i}=e,a=[...t];return{name:`makaio.clients-core`,displayName:`Clients Core`,version:`0.1.0`,critical:!0,namespaces:[M,B,q],storage:{registerHandlers:ne((e,t)=>_n([()=>Ut(e,t),()=>cn(e,t),()=>mn(e,t)]))},create:e=>{let t=new P(a),o=n.join(e.makaioHome,`clients`),s=new Ke(e.bus,{basePath:n.join(e.makaioHome,`binaries`),configBasePath:o,postInstallHandlers:i},t,r),c=new Tt(e.bus,o),l=new jt(e.bus,o);return new hn(new _t(e.bus),s,new Ct(e.bus),c,l)}}}async function yn(e){let t=await a.requestOptional(S.resolveBinary,{clientId:e});return t.handled?t.data:void 0}function bn(e,t,n){return[...n??[],e,...t].map(Cn).join(` `)}function xn(e,t,n,r,i){return bn(e,[...i??[],...t.split(` `),n],r)}function Sn(e){return e.runtimeCapabilities.hookEvents.filter(e=>e.frameworkSubject!==void 0).map(e=>({eventName:e.name,mode:e.mode}))}function Cn(e){return/^[A-Za-z0-9_@%+=:,./-]+$/.test(e)?e:`'${e.replaceAll(`'`,`'\\''`)}'`}export{dt as AbsolutePathSchema,he as BinaryNotFoundError,Je as CLIENT_RUNTIME_STATUSES,ge as ClientAccountRegistry,He as ClientBinaryJobRunner,Ke as ClientBinaryManager,A as ClientBinaryStateRecordSchema,M as ClientBinaryStorageNamespace,N as ClientBinaryStorageSubjects,k as ClientBinaryVersionRecordSchema,Ee as ClientBinaryVersionResolver,Ct as ClientConfigPrimeService,P as ClientDefinitionRegistry,nt as ClientHookHandleResponseSchema,G as ClientProfileRecordSchema,Tt as ClientProfileService,q as ClientProfileStorageNamespace,J as ClientProfileStorageSubjects,Qe as ClientRuntimeRegistry,_t as ClientRuntimeService,B as ClientRuntimeStorageNamespace,V as ClientRuntimeStorageSubjects,jt as ClientSessionConfigService,oe as ClientSubjects,ht as ClientWiringAggregatedResultSchema,pt as ClientWiringApplyResponseSchema,C as ClientWiringEntrySchema,ft as ClientWiringListResponseSchema,mt as ClientWiringRemoveResponseSchema,hn as ClientsCoreService,gn as ClientsCoreToken,tt as DEFAULT_HOOK_HANDLE_TIMEOUT_MS,U as RawClientHookPayloadSchema,z as RuntimeRecordSchema,gt as assertAbsoluteProjectDir,fe as atomicModifyFile,bn as buildClientCommand,ot as buildClientSessionBase,xn as buildHookCommand,W as canonicalizeClientId,Y as clientRuntimesDual,Lt as createClientNamespace,ut as createClientWiringListSubjectDef,lt as createClientWiringSubjectDef,vn as createClientsCorePackage,rt as createRawClientHookHandleSubject,et as createRawClientHookReceivedSubject,Sn as deriveSessionEventDescriptors,st as emitBestEffort,D as isPathWithinBase,at as pickNonEmptyString,it as pickNonEmptyStringValue,cn as registerDrizzleClientBinaryStorage,mn as registerDrizzleProfileStorage,Ut as registerDrizzleRuntimeStorage,_n as registerStorageHandlersWithRollback,O as resolveAndValidateBasePath,yn as resolveClientBinary};
|
|
1
|
+
import{z as e}from"zod";import*as t from"node:fs/promises";import*as n from"node:path";import{randomUUID as r}from"node:crypto";import{createBusNamespace as i}from"@makaio/framework/core";import{MakaioBus as a}from"@makaio/framework/bus";import{extensionToken as o,isUniversalRange as s,versionSatisfies as c}from"@makaio/framework/contracts";import{BaseService as l}from"@makaio/framework/service-base";import{index as u,unique as d,uniqueIndex as f}from"drizzle-orm/sqlite-core";import{index as p,unique as m,uniqueIndex as h}from"drizzle-orm/pg-core";import{defineDialectSchema as g,defineDualTable as _,didAffectRows as ee,executeTransaction as v,registerDrizzleHandlers as te,resolveSchema as y}from"@makaio/framework/storage/drizzle";import{and as b,eq as x,gt as ne,sql as re}from"drizzle-orm";import{ClientProfileNameSchema as ie,ClientProfileSchema as ae,ClientSubjects as oe,ClientSubjects as S,ClientWiringEntrySchema as C,ManagedInstallDescriptorSchema as se,SessionConfigIdSchema as ce}from"@makaio/framework/contracts/client";import*as w from"node:os";import{CLIDetectionSubjects as le}from"@makaio/framework/services/cli-detection/namespace";import{ClientStorageSubjects as ue}from"@makaio/framework/services/settings/storage";import{SessionSubjects as de}from"@makaio/framework/contracts/session";async function fe(e,t,n,r,i){let a,o=(n.get(e)??Promise.resolve()).then(async()=>{let n=await i(r(await pe(e,t)));n.changed&&await me(e,n.content),a=n.result}),s=o.then(()=>void 0,()=>void 0);n.set(e,s);try{await o}finally{n.get(e)===s&&n.delete(e)}return a}async function pe(e,n){let r;try{r=await t.readFile(e,`utf-8`)}catch(e){if(e.code===`ENOENT`)return n;throw e}return JSON.parse(r)}async function me(e,i){let a=n.dirname(e),o=n.join(a,`${n.basename(e)}.${r()}.tmp`);await t.mkdir(a,{recursive:!0});try{await t.writeFile(o,`${JSON.stringify(i,null,2)}\n`,`utf-8`),await t.rename(o,e)}catch(e){throw await t.unlink(o).catch(()=>void 0),e}}var he=class e extends Error{code=`BINARY_NOT_FOUND`;constructor(t){super(`client.resolveBinary: no binary found for client '${t}' — install a managed version or ensure the binary is on PATH`),this.name=`BinaryNotFoundError`,Error.captureStackTrace?.(this,e)}},ge=class{nextAccountSequence=1;accountIdsByIdentifier=new Map;accounts=new Map;upsertAccount(e){let t=ve(e.displayLabel),n=new Map;for(let t of e.identifiers)n.set(_e(e.clientId,t.scheme,t.value),t);let r=ye(n,this.accountIdsByIdentifier,`strong`),i=ye(n,this.accountIdsByIdentifier,`alias`),a=r[0]??(i.length===1?i[0]:i.length>1?be(i):this.createAccount()),o=(r.length>0?Se(a,r,i):[]).flatMap(e=>this.mergeInto(a,e)),s=this.accounts.get(a);if(!s)throw Error(`Client account registry invariant violated: missing account ${a}`);for(let[e,t]of n){let n=this.accountIdsByIdentifier.get(e);r.length===0&&t.strength===`alias`&&n!==void 0&&n!==a||(s.identifiers.set(e,t),this.accountIdsByIdentifier.set(e,a))}return t!==void 0&&(s.displayLabel=t),{clientAccountId:a,displayLabel:s.displayLabel,mergedAccountIds:o}}clear(){this.accountIdsByIdentifier.clear(),this.accounts.clear(),this.nextAccountSequence=1}createAccount(){let e=`client-account-${this.nextAccountSequence}`;return this.nextAccountSequence+=1,this.accounts.set(e,{clientAccountId:e,identifiers:new Map}),e}mergeInto(e,t){if(e===t)return[];let n=this.accounts.get(e),r=this.accounts.get(t);if(!n||!r)return[];for(let[t,i]of r.identifiers)n.identifiers.set(t,i),this.accountIdsByIdentifier.set(t,e);return n.displayLabel===void 0&&r.displayLabel!==void 0&&(n.displayLabel=r.displayLabel),this.accounts.delete(t),[t]}};function _e(e,t,n){return`${e}\u0000${t}\u0000${n}`}function ve(e){return e?.trim()||void 0}function ye(e,t,n){let r=new Set;for(let[i,a]of e){if(a.strength!==n)continue;let e=t.get(i);e!==void 0&&r.add(e)}return Array.from(r).sort(T)}function be(e){return[...e].sort(T)[0]}function T(e,t){let n=xe(e),r=xe(t);return n!==null&&r!==null&&n!==r?n-r:e.localeCompare(t)}function xe(e){let t=e.match(/^client-account-(\d+)$/);return t?Number(t[1]):null}function Se(e,t,n){let r=new Set([...t,...n]);return r.delete(e),Array.from(r).sort(T)}function Ce(e){return{subject:`config.prime`,$meta:{namespace:`client:${e}`,isRequest:!0,local:!1,channel:!1}}}async function E(e,t){let n=await e.requestOptional(Ce(t.clientId),t);return n.handled?n.data:{primed:!1}}function we(){let e=e=>async()=>{throw Error(`StrategyDependencies.${e} is not implemented`)};return{fetchText:e(`fetchText`),fetchJson:e(`fetchJson`),downloadFile:e(`downloadFile`),exec:e(`exec`),extractArchive:e(`extractArchive`),deleteFile:e(`deleteFile`),computeChecksum:e(`computeChecksum`),removeDirectory:e(`removeDirectory`)}}var Te=class{resolveInstallVersion(e,t,n){let r=t.version;if(n===void 0)return{version:r,explicit:!1};let i=n.trim();if(i.length===0)throw Error(`Explicit version returned an empty version string`);if(i!==r)throw Error(`client.install: requested version ${i} for client '${e}' does not match pinned version ${r}`);return{version:i,explicit:!0}}};function Ee(e){if(e!==void 0)return(t,n)=>{n!==null&&n>0?e(`downloading`,t/n*100):e(`downloading`,null)}}var De=class{#e;#t;constructor(e,t){this.#e=e,this.#t=t}async execute(e,t,n){if(e!==this.#e.version)throw Error(`npm managed install requested version ${e} but descriptor pins ${this.#e.version}`);n?.(`installing`,null);let r=`${this.#e.package}@${this.#e.version}`;return await this.#t.exec(`npm`,[`install`,r,`--prefix`,t,`--no-save`,`--ignore-scripts`]),n?.(`installing`,100),{installPath:t,version:this.#e.version,strategy:`npm`}}};function Oe(){if(process.platform!==`linux`)return!1;try{let e=process.report?.getReport?.();if(typeof e!=`object`||!e||!(`header`in e))return!0;let{header:t}=e;return typeof t!=`object`||!t?!0:!(`glibcVersionRuntime`in t)}catch{return!1}}function ke(e){return e.replace(/[^0-9a-fA-F]/g,``).toUpperCase()}function D(e,t,n,r){let i=e.replaceAll(`{version}`,t);return n!==void 0&&(i=i.replaceAll(`{platform}`,n)),r!==void 0&&(i=i.replaceAll(`{binary}`,r)),i}function Ae(e){let t=`${e.platform}-${e.arch}`;return e.platform===`linux`&&e.isMusl?`${t}-musl`:t}function je(e,t){if(typeof e!=`object`||!e||Array.isArray(e))throw Error(`Signed manifest must be a JSON object`);let n=e,r=n.version;if(r!==t)throw Error(`Signed manifest version ${String(r)} does not match descriptor pin ${t}`);let i=n.platforms;if(typeof i!=`object`||!i||Array.isArray(i))throw Error(`Signed manifest must contain a platforms object`);return{version:r,platforms:i}}function Me(e,t){let n=e.platforms[t];if(typeof n!=`object`||!n||Array.isArray(n))throw Error(`Signed manifest does not contain a platform entry for '${t}'`);let{binary:r,checksum:i}=n;if(typeof r!=`string`||!Ne(r))throw Error(`Manifest entry for '${t}' has unsafe binary filename`);if(typeof i!=`string`||i.length===0)throw Error(`Manifest entry for '${t}' is missing a valid 'checksum' field`);return{binary:r,checksum:i}}function Ne(e){return e.length>0&&e!==`.`&&e!==`..`&&!e.includes(`/`)&&!e.includes(`\\`)}var Pe=class{#e;#t;#n;constructor(e,t,n){this.#e=e,this.#t=t,this.#n={platform:n?.platform??process.platform,arch:n?.arch??process.arch,isMusl:n?.isMusl??Oe()}}async execute(e,r,i){if(e!==this.#e.version)throw Error(`signed-binary-bucket managed install requested version ${e} but descriptor pins ${this.#e.version}`);let{config:a}=this.#e,o=Ae(this.#n),s=a.platforms[o];if(s===void 0)throw Error(`signed-binary-bucket descriptor has no platform entry for '${o}'. Supported platforms: ${Object.keys(a.platforms).join(`, `)}`);await t.mkdir(r,{recursive:!0});let c=n.join(r,`.gnupg`),l=n.join(r,`signing-key.asc`),u=n.join(r,`manifest.json`),d=n.join(r,`manifest.json.sig`);i?.(`resolving`,null),await this.#r(a,e,l,u,d),i?.(`verifying`,null);let f=await this.#i(a,c,l,u,d,o);i?.(`downloading`,null);let p=D(a.binaryPathTemplate,e,s,f.binary),m=n.resolve(r,f.binary);await this.#t.downloadFile(`${a.baseUrl}/${p}`,m,Ee(i)),i?.(`verifying`,null);let h=await this.#t.computeChecksum(m);if(h!==f.checksum)throw Error(`Binary checksum mismatch: expected ${f.checksum} but computed ${h}`);return i?.(`installing`,null),this.#n.platform!==`win32`&&await t.chmod(m,493),await this.#t.removeDirectory(c),await this.#t.deleteFile(l),await this.#t.deleteFile(d),i?.(`installing`,100),{installPath:r,version:this.#e.version,strategy:`signed-binary-bucket`}}async#r(e,n,r,i,a){let o=`${e.baseUrl}/${D(e.manifestPathTemplate,n)}`,s=`${e.baseUrl}/${D(e.manifestSignaturePathTemplate,n)}`,c=await this.#t.fetchText(e.publicKeyUrl);await t.writeFile(r,c,`utf-8`),await this.#t.downloadFile(o,i),await this.#t.downloadFile(s,a)}async#i(e,n,r,i,a,o){await t.mkdir(n,{recursive:!0,mode:448}),await this.#t.exec(`gpg`,[`--homedir`,n,`--import`,r]);let s=await this.#t.exec(`gpg`,[`--homedir`,n,`--with-colons`,`--fingerprint`,`--list-keys`]),c=this.#a(s);if(ke(c)!==ke(e.publicKeyFingerprint))throw Error(`GPG key fingerprint mismatch: expected ${e.publicKeyFingerprint} but got ${c}`);await this.#t.exec(`gpg`,[`--homedir`,n,`--verify`,a,i]).catch(e=>{throw Error(`Manifest GPG signature verification failed: ${e.message}`)});let l=await t.readFile(i,`utf-8`);return Me(je(JSON.parse(l),this.#e.version),o)}#a(e){for(let t of e.split(`
|
|
2
|
+
`)){let e=t.split(`:`);if(e[0]===`fpr`&&e[9]!==void 0&&e[9].length>0)return e[9]}throw Error(`Could not extract GPG key fingerprint from output`)}};function Fe(e,t){let n=se.safeParse(e);if(n.success)switch(n.data.type){case`npm`:return new De(n.data,t);case`signed-binary-bucket`:return new Pe(n.data,t)}}function Ie(e,t){let r=n.relative(e,t);return r!==``&&!r.startsWith(`..${n.sep}`)&&r!==`..`&&!n.isAbsolute(r)}function O(e,t){return!n.isAbsolute(e)||!n.isAbsolute(t)?!1:Ie(n.resolve(e),n.resolve(t))}function k(e,t){if(!e||!n.isAbsolute(e))throw Error(`${t} requires a non-empty absolute basePath`);return n.resolve(e)}async function Le(e,r,i,a){let[o,...s]=i;if(ze(o))throw Error(`versionCommand[0] must be a relative path; received absolute path "${o}"`);if(o.split(/[/\\]/).includes(`..`))throw Error(`versionCommand[0] must not contain path traversal segments; received "${o}"`);let c=n.normalize(o),l=n.join(r,c),u=await t.realpath(r),d=await t.realpath(l);if(!Ie(u,d))throw Error(`versionCommand[0] must not escape the install directory; "${o}" resolves outside installPath`);let f;try{f=await e(d,s,{cwd:u})}catch(e){let t=e instanceof Error?e.message:String(e);throw Error(`Version verification failed: command "${l}" exited with an error: ${t}`,{cause:e})}let p=Re(a);if(!Be(f,p))throw Error(`Version mismatch: expected "${a}" but command output was "${f.trim()}"`)}function Re(e){return e[0]===`v`||e[0]===`V`?e.slice(1):e}function ze(e){return e.startsWith(`/`)||/^[A-Za-z]:[/\\]/.test(e)||e.startsWith(`\\`)}function Be(e,t){return(e.match(/[A-Za-z0-9][A-Za-z0-9._+-]*/g)??[]).some(e=>Re(e)===t)}var Ve=class{strategyDeps;config;jobs=new Map;#e=!1;resolvedBasePath;constructor(e,t){this.strategyDeps=e,this.config=t,this.resolvedBasePath=k(t.basePath,`ClientBinaryJobRunner`)}startJob(e,t,n,r,i,a,o){let s={...e,status:`running`};return this.jobs.set(e.jobId,s),this.runJob(s,t,n,r,i,a,o),e.jobId}cancelAll(){this.#e=!0,this.jobs.clear()}safeOnProgress(e,t){try{e(t)}catch{}}emitProgressIfActive(e,t){return this.#e?!1:(this.safeOnProgress(e,t),!this.#e)}async runJob(e,t,n,r,i,a,o){try{let s=this.resolveTargetDir(e.clientId,e.version),c=Fe(t,this.strategyDeps);if(c===void 0)throw Error(`Unsupported managed install descriptor type: ${t.type}`);let l=await this.executeStrategy(e,c,s,n);if(this.#e)return;let u;try{if(u=await this.runPostInstall(e,l.installPath,a,n),this.#e)return;o!==void 0&&await this.runVersionVerification(e,l.installPath,o,n)}catch(e){throw this.#e||await this.cleanupStagedArtifact(l.installPath),e}if(this.#e)return;await this.finalizeSuccess(e,l,u,n,r,i)}catch(t){if(this.#e)return;let n=t instanceof Error?t.message:String(t),r=t instanceof Error&&`code`in t?String(t.code):void 0;try{await i({jobId:e.jobId,clientId:e.clientId,version:e.version,strategy:e.strategy,status:`error`,activeVersion:null,error:{message:n,...r===void 0?{}:{code:r}}})}catch{}}finally{this.jobs.delete(e.jobId)}}async finalizeSuccess(e,t,n,r,i,a){if(!(e.makeActive&&!this.emitProgressIfActive(r,{jobId:e.jobId,clientId:e.clientId,version:t.version,strategy:e.strategy,stage:`activating`,progress:null,installPath:t.installPath,activeAfterCompletion:!0}))&&!this.#e){try{await i({jobId:e.jobId,clientId:e.clientId,version:t.version,installPath:t.installPath,makeActive:e.makeActive,reason:e.reason})}catch(e){try{await this.strategyDeps.removeDirectory(t.installPath)}catch{}throw e}if(!this.#e)try{await a({jobId:e.jobId,clientId:e.clientId,version:t.version,strategy:e.strategy,status:`success`,installPath:t.installPath,activeVersion:e.makeActive?t.version:null,...n===void 0?{}:{metadata:{postInstall:n}}})}catch{}}}async cleanupStagedArtifact(e){try{await this.strategyDeps.removeDirectory(e)}catch{}}async executeStrategy(e,t,n,r){try{return await t.execute(e.version,n,(t,i)=>{this.emitProgressIfActive(r,{jobId:e.jobId,clientId:e.clientId,version:e.version,strategy:e.strategy,stage:t,progress:i,installPath:t===`installing`?n:void 0,activeAfterCompletion:e.makeActive})})}catch(e){throw this.#e||await this.cleanupStagedArtifact(n),e}}async runPostInstall(e,t,n,r){if(n===void 0)return;let i=this.resolvePostInstallHandler(n),a=this.buildProgressPayload(e,`post-install`,null,t,{kind:n.kind});if(!this.emitProgressIfActive(r,a))return;let o=await i({clientId:e.clientId,version:e.version,installPath:t,descriptor:n});return this.emitProgressIfActive(r,this.buildProgressPayload(e,`post-install`,100,t,{kind:n.kind,...o??{}})),o??void 0}async runVersionVerification(e,t,n,r){this.emitProgressIfActive(r,this.buildProgressPayload(e,`verifying`,null,t,{kind:`version-command`}))&&(this.#e||await Le(this.strategyDeps.exec,t,n,e.version))}resolvePostInstallHandler(e){let t=this.config.postInstallHandlers?.get(e.kind);if(t===void 0)throw Error(`No post-install handler registered for kind "${e.kind}"`);return t}buildProgressPayload(e,t,n,r,i){return{jobId:e.jobId,clientId:e.clientId,version:e.version,strategy:e.strategy,stage:t,progress:n,installPath:r,activeAfterCompletion:e.makeActive,...i===void 0?{}:{metadata:i}}}resolveTargetDir(e,t){let r=n.resolve(this.resolvedBasePath,e,t);if(!O(this.resolvedBasePath,r))throw Error(`Invalid install target path for client "${e}" and version "${t}"`);return r}};const A=e.object({id:e.string(),clientId:e.string(),version:e.string(),installPath:e.string(),installedAt:e.number().int().nonnegative(),createdAt:e.number().int().nonnegative()}),j=e.object({clientId:e.string(),activeVersion:e.string().nullable(),updatedAt:e.number().int().nonnegative()}),M=e.object({previousActiveVersion:e.string().nullable(),activeVersion:e.string().nullable()}),N=i(`client-binary:storage`,{insertVersion:{request:A,response:e.object({success:e.boolean()})},recordInstalledVersion:{request:e.object({versionRecord:A,makeActive:e.boolean(),updatedAt:e.number().int().nonnegative()}),response:M},listVersions:{request:e.object({clientId:e.string()}),response:e.object({versions:e.array(A)})},getSnapshot:{request:e.object({clientId:e.string()}),response:e.object({state:j.nullable(),versions:e.array(A)})},loadAllVersions:{request:e.object({}),response:e.object({versions:e.array(A)})},upsertState:{request:j,response:e.object({success:e.boolean()})},setActiveVersion:{request:e.object({clientId:e.string(),activeVersion:e.string().nullable(),updatedAt:e.number().int().nonnegative()}),response:M},getState:{request:e.object({clientId:e.string()}),response:e.object({state:j.nullable()})},loadAllState:{request:e.object({}),response:e.object({states:e.array(j)})},loadSnapshot:{request:e.object({}),response:e.object({states:e.array(j),versions:e.array(A)})},removeVersionAndClearActive:{request:e.object({clientId:e.string(),version:e.string(),updatedAt:e.number().int().nonnegative()}),response:M.extend({removedVersion:e.string().nullable()})}}),P=N.subjects;var F=class{definitions=new Map;constructor(e=[]){for(let t of e)this.registerUnique(t)}getDefinition(e){return this.definitions.get(e)}listDefinitions(){return[...this.definitions.values()]}register(e){this.definitions.set(e.id,e)}registerUnique(e){if(this.definitions.has(e.id))throw Error(`ClientDefinitionRegistry: duplicate client definition id '${e.id}'`);this.definitions.set(e.id,e)}};const He=process.env.MAKAIO_SKIP_CLIENT_VERSION_CHECK===`1`;function I(e,t,n,r,i){if(n===null){if(s(r))return;if(He){console.warn(`[SKIP_VERSION_CHECK] ${e}: ${i} for client '${t}' did not report a version; requires ${r}`);return}throw Error(`${e}: ${i} for client '${t}' did not report a version; requires ${r}`)}if(!c(n,r)){if(He){console.warn(`[SKIP_VERSION_CHECK] ${e}: ${i} ${n} for client '${t}' does not satisfy ${r} — check bypassed`);return}throw Error(`${e}: ${i} ${n} for client '${t}' does not satisfy ${r}`)}}var Ue=class{bus;resolvedBasePath;resolvedConfigBasePath;definitionLookup;constructor(e){this.bus=e.bus,this.resolvedBasePath=e.resolvedBasePath,this.resolvedConfigBasePath=e.resolvedConfigBasePath,this.definitionLookup=e.definitionLookup}async resolve(e){let t=this.definitionLookup.getDefinition(e);if(t===void 0)throw Error(`client.resolveBinary: no definition registered for client '${e}'`);let{state:n,versions:r}=await this.bus.request(P.getSnapshot,{clientId:e}),i=n?.activeVersion??null;return i===null?this.buildGlobalContext(e,t):this.buildManagedContext(e,i,t,r)}isInstallPathWithinBase(e){return O(this.resolvedBasePath,e)}async isExpectedInstallPath(e,r,i){if(!n.isAbsolute(e)||!this.isInstallPathWithinBase(e))return!1;let a=n.resolve(this.resolvedBasePath,r,i);if(!this.isInstallPathWithinBase(a))return!1;try{let[n,r,i]=await Promise.all([t.realpath(this.resolvedBasePath),t.realpath(a),t.realpath(e)]);return O(n,r)?i===r||O(r,i):!1}catch{return!1}}async buildManagedContext(e,t,r,i){let a=i.find(e=>e.version===t);if(a===void 0)throw Error(`client.resolveBinary: active version '${t}' is not installed for client '${e}'`);if(!await this.isExpectedInstallPath(a.installPath,e,t))throw Error(`client.resolveBinary: stored installPath "${a.installPath}" does not match the expected install directory for ${e}@${t}`);r.binary!==void 0&&I(`client.resolveBinary`,e,t,r.binary.supportedVersions,`managed binary version`);let o=L(r.versionCommand)?.[0];if(o===void 0)throw Error(`client.resolveBinary: definition for '${e}' has no versionCommand — cannot derive binary path`);let s=n.resolve(a.installPath,o),c=n.resolve(a.installPath);if(!s.startsWith(c+n.sep)&&s!==c)throw Error(`client.resolveBinary: versionCommand for '${e}' resolves outside the install directory`);let{configDir:l,env:u}=this.resolveIsolatedConfig(e,r);return{binaryPath:s,env:u,configDir:l,source:`managed`,version:t}}async buildGlobalContext(e,t){if(!t.binary?.name)throw Error(`client.resolveBinary: definition for '${e}' has no binary.name — cannot scan PATH`);let n={clientId:e,binaryName:t.binary.name,supportedVersions:t.binary.supportedVersions},{results:r}=await this.bus.request(S.scan,{targets:[n]}),i=r.find(t=>t.clientId===e);if(i===void 0||!i.found)throw new he(e);let a=i.version??null;return I(`client.resolveBinary`,e,a,t.binary.supportedVersions,`detected global binary version`),{binaryPath:null,env:{},configDir:this.resolveGlobalConfigDir(t),source:`global`,version:a}}resolveIsolatedConfig(e,t){let{configIsolation:r}=t;if(r===void 0)return{configDir:null,env:{}};let i=n.join(this.resolvedConfigBasePath,e,`config`),a=r.pathKind===`file`?n.join(i,n.basename(r.defaultPath)):i;return{configDir:i,env:{[r.envVar]:a}}}resolveGlobalConfigDir(e){let{configIsolation:t}=e;if(t===void 0)return null;let r=t.defaultPath,i=r===`~`?w.homedir():r.startsWith(`~/`)?n.join(w.homedir(),r.slice(2)):r,a=t.pathKind===`file`?n.dirname(i):i;if(!n.isAbsolute(a))throw Error(`ConfigIsolation defaultPath for '${e.id}' resolved to non-absolute path '${i}'; use an absolute or tilde-expanded path (e.g. '~/.myapp')`);return a}};function L(e){if(e===void 0)return;let{executable:t,args:n}=e,r=typeof t==`string`?t:t[process.platform]??t.default;if(typeof r!=`string`||r.trim()===``)throw Error(`client.resolveBinary: versionCommand executable is missing for this platform`);return[r,...n]}async function We(e,t){let{versions:n,states:r}=await e.request(P.loadSnapshot,{}),i=Map.groupBy(n,e=>e.clientId),a=new Map;for(let e of r)a.set(e.clientId,e.activeVersion);let o=new Map;for(let e of t.listDefinitions())e.managedInstall!==void 0&&o.set(e.id,e.managedInstall);return[...new Set(o.keys())].map(e=>{let t=o.get(e);if(t===void 0)throw Error(`assembleBinaryList: missing descriptor for client '${e}'`);let n=a.get(e)??null,r=(i.get(e)??[]).map(e=>({version:e.version,installPath:e.installPath,installedAt:e.installedAt,isActive:e.version===n})),s=t.version;return{clientId:e,installedVersions:r,activeVersion:n,pinnedVersion:s,updateAvailable:n!==null&&n!==s}})}var Ge=class extends l{config;definitionLookup;versionResolver;jobRunner;strategyDeps;resolvedBasePath;resolvedConfigBasePath;resolver;pendingClients=new Set;constructor(e=a,t,n=new F([]),r=we()){super(e),this.config=t,this.definitionLookup=n,this.resolvedBasePath=k(t.basePath,`ClientBinaryManager`),this.resolvedConfigBasePath=k(t.configBasePath,`ClientBinaryManager configBasePath`),this.strategyDeps=r,this.versionResolver=new Te,this.jobRunner=new Ve(r,t),this.resolver=new Ue({bus:e,resolvedBasePath:this.resolvedBasePath,resolvedConfigBasePath:this.resolvedConfigBasePath,definitionLookup:n})}async onInit(){this.registerHandler(S.list,async e=>{let t=await this.handleList();e.setResult({clients:t})}),this.registerHandler(S.install,async e=>{let t=await this.handleInstall(e.payload.clientId,e.payload.version);e.setResult(t)}),this.registerHandler(S.update,async e=>{let t=await this.handleUpdate(e.payload.clientId);e.setResult(t)}),this.registerHandler(S.setActive,async e=>{let t=await this.handleSetActive(e.payload.clientId,e.payload.version);e.setResult(t)}),this.registerHandler(S.uninstall,async e=>{let t=await this.handleUninstall(e.payload.clientId,e.payload.version);e.setResult(t)}),this.registerHandler(S.resolveBinary,async e=>{let t=await this.resolver.resolve(e.payload.clientId);e.setResult(t)})}onDestroy(){this.jobRunner.cancelAll(),this.pendingClients.clear()}async handleList(){return We(this.bus,this.definitionLookup)}async handleInstall(e,t){let{definition:n,descriptor:r}=this.requireManagedDefinition(e,`client.install`);return this.withClientLock(e,async()=>{let{version:i}=this.versionResolver.resolveInstallVersion(e,r,t);return n.binary!==void 0&&I(`client.install`,e,i,n.binary.supportedVersions,t===void 0?`resolved binary version`:`requested binary version`),{jobId:this.startInstallJob(e,i,r,n,!1,`install`),requestedVersion:t??null,resolvedVersion:i}})}async handleUpdate(e){let{definition:t,descriptor:n}=this.requireManagedDefinition(e,`client.update`);return this.withClientLock(e,async()=>{let{version:r}=this.versionResolver.resolveInstallVersion(e,n);return t.binary!==void 0&&I(`client.update`,e,r,t.binary.supportedVersions,`resolved binary version`),{jobId:this.startInstallJob(e,r,n,t,!0,`update`),resolvedVersion:r}})}async handleSetActive(e,t){if(this.pendingClients.has(e))throw Error(`Operation already in progress for client "${e}"`);this.pendingClients.add(e);try{let{versions:n}=await this.bus.request(P.listVersions,{clientId:e}),r=n.find(e=>e.version===t);if(r===void 0)throw Error(`client.setActive: version '${t}' is not installed for client '${e}'`);let i=this.definitionLookup.getDefinition(e);if(i===void 0)throw Error(`client.setActive: no definition registered for client '${e}'`);i.binary!==void 0&&I(`client.setActive`,e,t,i.binary.supportedVersions,`requested binary version`);let a=L(i.versionCommand);if(a===void 0)throw Error(`client.setActive: no versionCommand registered for client '${e}'`);if(!await this.resolver.isExpectedInstallPath(r.installPath,e,t))throw Error(`client.setActive: stored installPath "${r.installPath}" does not match the expected install directory for ${e}@${t}`);return await Le(this.strategyDeps.exec,r.installPath,a,t),await this.patchActiveVersion(e,t,`set-active`),{clientId:e,activeVersion:t}}finally{this.pendingClients.delete(e)}}async handleUninstall(e,t){if(this.pendingClients.has(e))throw Error(`Operation already in progress for client "${e}"`);this.pendingClients.add(e);try{let{versions:r}=await this.bus.request(P.listVersions,{clientId:e}),i=r.find(e=>e.version===t);if(i===void 0)throw Error(`client.uninstall: version '${t}' is not installed for client '${e}'`);let{removedVersion:a,previousActiveVersion:o,activeVersion:s}=await this.bus.request(P.removeVersionAndClearActive,{clientId:e,version:t,updatedAt:Date.now()});if(a===null)throw Error(`client.uninstall: failed to delete version '${t}' for client '${e}'`);let c=i.installPath,l=typeof c==`string`&&c.length>0?n.resolve(c):null;if(typeof c!=`string`||c.length===0||l===null||!n.isAbsolute(c)||!await this.resolver.isExpectedInstallPath(l,e,t)?console.warn(`[ClientBinaryManager] Skipping removeDirectory: stored installPath "${String(c)}" does not match the expected install directory for ${e}@${t}`):await this.strategyDeps.removeDirectory(l).catch(n=>{console.warn(`[ClientBinaryManager] Failed to remove binary directory "${l}" for ${e}@${t}:`,n)}),o!==null&&s===null)try{await this.bus.emit(S.version.changed,{clientId:e,previousActiveVersion:o,activeVersion:null,reason:`uninstall`})}catch(e){console.warn(`[ClientBinaryManager] Failed to emit client.version.changed:`,e)}return{clientId:e,removedVersion:t,activeVersion:s}}finally{this.pendingClients.delete(e)}}async patchActiveVersion(e,t,n){let r=(await this.bus.request(P.setActiveVersion,{clientId:e,activeVersion:t,updatedAt:Date.now()})).previousActiveVersion;if(r!==t)try{await this.bus.emit(S.version.changed,{clientId:e,previousActiveVersion:r,activeVersion:t,reason:n})}catch(e){console.warn(`[ClientBinaryManager] Failed to emit client.version.changed:`,e)}return r}requireManagedDefinition(e,t){let n=this.definitionLookup.getDefinition(e);if(n===void 0)throw Error(`${t}: no definition registered for client '${e}'`);let r=n.managedInstall;if(r===void 0)throw Error(`${t}: client '${e}' does not declare a managed install descriptor`);return{definition:n,descriptor:r}}async withClientLock(e,t){if(this.pendingClients.has(e))throw Error(`Operation already in progress for client "${e}"`);this.pendingClients.add(e);try{return await t()}catch(t){throw this.pendingClients.delete(e),t}}startInstallJob(e,t,n,r,i,a){let o={jobId:crypto.randomUUID(),clientId:e,version:t,strategy:n.type,status:`pending`,makeActive:i,reason:a};return this.jobRunner.startJob(o,n,e=>{this.bus.emit(S.installJob.progress,e).catch(e=>{console.warn(`[ClientBinaryManager] Failed to emit client.installJob.progress:`,e)})},this.makeCompletionCallback(),async e=>{this.pendingClients.delete(e.clientId),await this.bus.emit(S.installJob.completed,e).catch(e=>{console.warn(`[ClientBinaryManager] Failed to emit client.installJob.completed:`,e)})},r.postInstall,L(r.versionCommand)),o.jobId}makeCompletionCallback(){return async({clientId:e,version:t,installPath:n,makeActive:r,reason:i})=>{let a=Date.now();await E(this.bus,{clientId:e,configDir:this.resolveManagedConfigDir(e),phase:`managed-install`,binaryVersion:t});let o=await this.bus.request(P.recordInstalledVersion,{versionRecord:{id:crypto.randomUUID(),clientId:e,version:t,installPath:n,installedAt:a,createdAt:a},makeActive:r,updatedAt:a});if(r&&o.previousActiveVersion!==o.activeVersion)try{await this.bus.emit(S.version.changed,{clientId:e,previousActiveVersion:o.previousActiveVersion,activeVersion:o.activeVersion,reason:i})}catch(e){console.warn(`[ClientBinaryManager] Failed to emit client.version.changed:`,e)}}}resolveManagedConfigDir(e){return n.join(this.resolvedConfigBasePath,e,`config`)}};function R(e,t){return`${e}${t}`}function z(e,t){return`${e}${t}`}var Ke=class{records=new Map;bySupervisorSessionId=new Map;byPidClientId=new Map;byAdapterSessionClientId=new Map;adapterOwnedSessions=new Set;set(e){let t=this.records.get(e.clientRuntimeId);t&&this.removeIndexEntries(t),this.records.set(e.clientRuntimeId,e),this.addIndexEntries(e)}setFromStorage(e,t,n){this.records.set(e.clientRuntimeId,e),e.supervisorSessionId!==void 0&&this.bySupervisorSessionId.set(e.supervisorSessionId,e.clientRuntimeId),t-e.updatedAt<=n&&(e.pid!==void 0&&this.byPidClientId.set(R(e.pid,e.clientId),e.clientRuntimeId),e.adapterSessionId!==void 0&&this.byAdapterSessionClientId.set(z(e.adapterSessionId,e.clientId),e.clientRuntimeId))}delete(e){let t=this.records.get(e);t&&(this.removeIndexEntries(t),t.adapterSessionId!==void 0&&this.adapterOwnedSessions.delete(z(t.adapterSessionId,t.clientId)),this.records.delete(e))}get(e){return this.records.get(e)}findByEvidence(e,t,n,r){if(e!==void 0){let t=this.bySupervisorSessionId.get(e);if(t!==void 0)return this.records.get(t)}if(t!==void 0){let e=this.byPidClientId.get(R(t,r));if(e!==void 0)return this.records.get(e)}if(n!==void 0){let e=this.byAdapterSessionClientId.get(z(n,r));if(e!==void 0)return this.records.get(e)}}values(){return this.records.values()}clear(){this.records.clear(),this.bySupervisorSessionId.clear(),this.byPidClientId.clear(),this.byAdapterSessionClientId.clear(),this.adapterOwnedSessions.clear()}markAdapterOwned(e,t){this.adapterOwnedSessions.add(z(e,t))}hasAdapterSession(e,t){return this.adapterOwnedSessions.has(z(e,t))}get size(){return this.records.size}addIndexEntries(e){e.supervisorSessionId!==void 0&&this.bySupervisorSessionId.set(e.supervisorSessionId,e.clientRuntimeId),e.pid!==void 0&&this.byPidClientId.set(R(e.pid,e.clientId),e.clientRuntimeId),e.adapterSessionId!==void 0&&this.byAdapterSessionClientId.set(z(e.adapterSessionId,e.clientId),e.clientRuntimeId)}removeIndexEntries(e){e.supervisorSessionId!==void 0&&this.bySupervisorSessionId.delete(e.supervisorSessionId),e.pid!==void 0&&this.byPidClientId.delete(R(e.pid,e.clientId)),e.adapterSessionId!==void 0&&this.byAdapterSessionClientId.delete(z(e.adapterSessionId,e.clientId))}};const B=[`observed`,`started`],V=e.object({clientRuntimeId:e.string(),clientId:e.string(),status:e.enum(B),supervisorSessionId:e.string().optional(),pid:e.number().int().positive().optional(),parentPid:e.number().int().positive().optional(),adapterSessionId:e.string().optional(),sessionId:e.string().optional(),cwd:e.string().optional(),argv:e.array(e.string()).optional(),metadata:e.record(e.string(),e.unknown()).optional(),observedAt:e.number().int().nonnegative(),createdAt:e.number().int().nonnegative(),updatedAt:e.number().int().nonnegative()}),H=i(`client-runtime:storage`,{upsert:{request:V,response:e.object({success:e.boolean()})},loadAll:{request:e.object({}),response:e.object({records:e.array(V)})}}),U=H.subjects;function qe(e){return e.supervisorSessionId!==void 0||e.adapterSessionId!==void 0}function W(e){return{...e,argv:e.argv===void 0?void 0:[...e.argv],metadata:e.metadata===void 0?void 0:structuredClone(e.metadata)}}function Je(e){return Math.max(Date.now(),e+1)}function Ye(e,t){let n=!1;return t.supervisorSessionId!==void 0&&e.supervisorSessionId!==t.supervisorSessionId&&(e.supervisorSessionId=t.supervisorSessionId,n=!0),t.pid!==void 0&&e.pid!==t.pid&&(e.pid=t.pid,n=!0),t.parentPid!==void 0&&e.parentPid!==t.parentPid&&(e.parentPid=t.parentPid,n=!0),t.adapterSessionId!==void 0&&e.adapterSessionId!==t.adapterSessionId&&(e.adapterSessionId=t.adapterSessionId,n=!0),t.sessionId!==void 0&&e.sessionId!==t.sessionId&&(e.sessionId=t.sessionId,n=!0),t.cwd!==void 0&&e.cwd!==t.cwd&&(e.cwd=t.cwd,n=!0),t.argv!==void 0&&JSON.stringify(e.argv)!==JSON.stringify(t.argv)&&(e.argv=[...t.argv],n=!0),t.metadata!==void 0&&JSON.stringify(e.metadata)!==JSON.stringify(t.metadata)&&(e.metadata=structuredClone(t.metadata),n=!0),n}var Xe=class{runtimeMap=new Ke;bus;constructor(e){this.bus=e}async loadFromStorage(){if(!this.bus)return;let e=await this.bus.requestOptional(U.loadAll,{});if(!e.handled)return;let t=Date.now();for(let n of e.data.records)this.runtimeMap.setFromStorage(W(n),t,864e5)}async upsertRuntime(e){let t=this.runtimeMap.findByEvidence(e.supervisorSessionId,e.pid,e.adapterSessionId,e.clientId);if(t){let n=t.status===`observed`,r=n&&qe(e),i=Ye(t,e),a=n&&e.observedAt>t.observedAt;return r&&(t.status=`started`),(i||r||a)&&(t.updatedAt=Je(t.updatedAt),a&&(t.observedAt=e.observedAt),this.runtimeMap.set(t),await this.persistRecord(t)),{clientRuntimeId:t.clientRuntimeId,created:!1,promoted:r,record:W(t)}}let n=Date.now(),i=r(),a=qe(e)?`started`:`observed`,o={clientRuntimeId:i,clientId:e.clientId,status:a,supervisorSessionId:e.supervisorSessionId,pid:e.pid,parentPid:e.parentPid,adapterSessionId:e.adapterSessionId,sessionId:e.sessionId,cwd:e.cwd,argv:e.argv?[...e.argv]:void 0,metadata:e.metadata?structuredClone(e.metadata):void 0,observedAt:e.observedAt,createdAt:n,updatedAt:n};return this.runtimeMap.set(o),await this.persistRecord(o),{clientRuntimeId:i,created:!0,promoted:!1,record:W(o)}}getRuntime(e){let t=this.runtimeMap.get(e);return t?W(t):void 0}markAdapterOwned(e,t){this.runtimeMap.markAdapterOwned(e,t)}hasAdapterSession(e,t){return this.runtimeMap.hasAdapterSession(e,t)}clear(){this.runtimeMap.clear()}get size(){return this.runtimeMap.size}async persistRecord(e){this.bus&&await this.bus.requestOptional(U.upsert,W(e))}};const G=e.object({eventName:e.string(),receivedAt:e.number().int().finite().nonnegative().describe(`Unix epoch timestamp in milliseconds`),payload:e.record(e.string(),e.unknown()),metadata:e.record(e.string(),e.unknown()).optional()}),Ze=/^[a-z0-9-]+$/;function K(e,t=`canonicalizeClientId`){let n=e.trim().toLowerCase(),r=n.startsWith(`client:`)?n.slice(7):n;if(r.length===0)throw Error(`[${t}] clientId must be a non-empty string`);if(!Ze.test(r))throw Error(`[${t}] clientId must contain only lowercase letters, numbers, and hyphens after an optional client: prefix`);return r}function Qe(e){return{subject:`hook.received`,$meta:{namespace:`client:${K(e,`createRawClientHookReceivedSubject`)}`,isRequest:!1,local:!1,channel:!1}}}const $e=5e3,et=e.object({exitCode:e.number().int().min(0).max(255).default(0),stdout:e.string().default(``),stderr:e.string().default(``)});function tt(e){return{subject:`hook.handle`,$meta:{namespace:`client:${K(e,`createRawClientHookHandleSubject`)}`,isRequest:!0,local:!1,channel:!1}}}function nt(e){if(typeof e!=`string`)return;let t=e.trim();return t.length>0?t:void 0}function rt(e,t){return nt(e[t])}function it(e){return{clientId:e.clientId,source:`adapter-derived`,observedAt:Date.now(),...e.sessionId!==void 0&&{sessionId:e.sessionId},...e.adapterSessionId!==void 0&&{adapterSessionId:e.adapterSessionId}}}function at(e){try{e().catch(ot)}catch(e){ot(e)}}function ot(e){(process.env.DEBUG||process.env.MAKAIO_DEBUG)&&console.debug(`[emitBestEffort] observed-semantics emission failed`,e)}function st(e,t){return{subject:t,$meta:{namespace:`client:${K(e,`createClientWiringSubjectDef`)}`,isRequest:!0,local:!1,channel:!1}}}function ct(e){return st(e,`wiring.list`)}const lt=e.string().min(1).refine(n.isAbsolute,{message:`projectDir must be an absolute path`}),ut=e.object({entries:e.array(C)}),dt=e.object({applied:e.number().int().nonnegative(),skipped:e.number().int().nonnegative()}),ft=e.object({removed:e.number().int().nonnegative()}),pt=e.object({clientId:e.string().trim().min(1),entries:e.array(C)});function mt(e){if(e!==void 0&&!n.isAbsolute(e))throw Error(`projectDir must be an absolute path, got: ${e}`)}var ht=class extends l{accountRegistry;runtimeRegistry;latestSnapshots=new Map;activeIdentities=new Map;constructor(e=a,t=new ge,n=new Xe(e)){super(e),this.accountRegistry=t,this.runtimeRegistry=n}async onInit(){await this.runtimeRegistry.loadFromStorage(),this.registerHandler(S.account.observe,e=>this.handleAccountObserve(e)),this.registerHandler(S.usage.ingest,e=>this.handleUsageIngest(e)),this.registerHandler(S.scan,async e=>{let t=await this.scanClients(e.payload.targets);e.setResult({results:t})}),this.registerHandler(S.runtime.observe,e=>this.handleRuntimeObserve(e)),this.registerHandler(S.runtime.isAdapterManaged,e=>{let{adapterSessionId:t,clientId:n}=e.payload;e.setResult({managed:this.runtimeRegistry.hasAdapterSession(t,n)})}),this.registerHandler(S.wiring.list,async e=>{let t=await this.listWirings(e.payload);e.setResult({results:t})}),this.registerHandler(S.account.activate,e=>{this.activeIdentities.set(e.payload.clientId,{clientAccountId:e.payload.clientAccountId,identifiers:e.payload.identifiers,displayLabel:e.payload.displayLabel}),e.setResult({accepted:!0})}),this.registerHandler(S.account.getActive,e=>{let t=this.activeIdentities.get(e.payload.clientId);e.setResult({identity:t??null})})}onDestroy(){this.latestSnapshots.clear(),this.activeIdentities.clear(),this.accountRegistry.clear(),this.runtimeRegistry.clear()}getLatestSnapshot(e){return this.latestSnapshots.get(e)}async handleAccountObserve(e){let t=this.accountRegistry.upsertAccount({clientId:e.payload.clientId,identifiers:e.payload.identifiers,displayLabel:e.payload.displayLabel}),n=this.latestSnapshots.get(t.clientAccountId),r=vt(this.consolidateMergedSnapshots(t.clientAccountId,t.mergedAccountIds)??n,t.displayLabel);r&&this.latestSnapshots.set(t.clientAccountId,r),r&&(t.mergedAccountIds.length>0||r!==n)&&await this.bus.emit(S.usage.snapshot,r),e.setResult({clientAccountId:t.clientAccountId,displayLabel:t.displayLabel})}async handleUsageIngest(e){let t=this.accountRegistry.upsertAccount({clientId:e.payload.clientId,identifiers:e.payload.account.identifiers,displayLabel:e.payload.account.displayLabel});this.consolidateMergedSnapshots(t.clientAccountId,t.mergedAccountIds);let n=gt(t.clientAccountId,e.payload,t.displayLabel),r=vt(_t(this.latestSnapshots.get(t.clientAccountId),n),t.displayLabel);this.latestSnapshots.set(t.clientAccountId,r),await this.bus.emit(S.usage.snapshot,r),e.setResult({clientAccountId:t.clientAccountId,snapshot:r})}async handleRuntimeObserve(e){let{payload:t}=e;if(t.supervisorSessionId===void 0&&t.pid===void 0&&t.adapterSessionId===void 0)throw Error(`client.runtime.observe: at least one hard-evidence field is required (supervisorSessionId, pid, or adapterSessionId)`);let{record:n,...r}=await this.runtimeRegistry.upsertRuntime(t);t.source.layer===`adapter`&&t.adapterSessionId!==void 0&&this.runtimeRegistry.markAdapterOwned(t.adapterSessionId,t.clientId),(r.created||r.promoted)&&await this.bus.emit(S.runtime.started,{clientRuntimeId:n.clientRuntimeId,clientId:n.clientId,status:n.status,source:t.source,observedAt:t.observedAt,supervisorSessionId:n.supervisorSessionId,pid:n.pid,parentPid:n.parentPid,adapterSessionId:n.adapterSessionId,sessionId:n.sessionId,cwd:n.cwd,argv:n.argv,metadata:n.metadata}),e.setResult({clientRuntimeId:r.clientRuntimeId,created:r.created,promoted:r.promoted})}async scanClients(e){let t=e??await this.listScannableStoredClients();if(t.length===0)return[];let n=Array.from(new Set(t.map(e=>e.binaryName))),{results:r}=await this.bus.request(le.scan,{binaries:n}),i=new Map(r.map(e=>[e.binary,e]));return t.map(e=>{let t=i.get(e.binaryName),n=t?.found??!1,r=t?.version;return{clientId:e.clientId,found:n,version:r,warningMessage:bt(n,r,e.supportedVersions)}})}async listScannableStoredClients(){let{clients:e}=await this.bus.request(ue.list,{});return e.filter(yt).map(e=>({clientId:e.id,binaryName:e.binary.name,supportedVersions:e.binary.supportedVersions}))}async listWirings(e){mt(e.projectDir);let{clients:t}=await this.bus.request(ue.list,{}),n=e.clientId===void 0?void 0:K(e.clientId,`listWirings`),r=t.filter(e=>e.enabled).filter(e=>n===void 0||e.id===n),i=await Promise.allSettled(r.map(async t=>{let n=ct(t.id),r=await this.bus.requestOptional(n,{projectDir:e.projectDir,makaioCommand:e.makaioCommand});return r.handled?{clientId:t.id,entries:r.data.entries}:null}));for(let e=0;e<i.length;e++){let t=i[e];if(t.status===`rejected`){let n=t.reason instanceof Error?t.reason.message:String(t.reason);console.warn(`[ClientRuntimeService] wiring.list for ${r[e].id} failed: ${n}`)}}return i.filter(e=>e.status===`fulfilled`).map(e=>e.value).filter(e=>e!==null)}consolidateMergedSnapshots(e,t){let n=this.latestSnapshots.get(e),r=!1;for(let i of t){if(i===e)continue;let t=this.latestSnapshots.get(i);t&&(n===void 0||t.observedAt>n.observedAt)&&(n={...t,clientAccountId:e},r=!0),this.latestSnapshots.delete(i)}return n&&this.latestSnapshots.set(e,n),r?n:void 0}};function gt(e,t,n){return{clientAccountId:e,clientId:t.clientId,observedAt:t.observedAt,source:t.source,displayLabel:n,usage:{windows:t.usage.windows.map(e=>({...e}))},metadata:t.metadata?{...t.metadata}:void 0}}function _t(e,t){return e&&e.observedAt>t.observedAt?e:t}function vt(e,t){return!e||t===void 0||e.displayLabel===t?e:{...e,displayLabel:t}}function yt(e){return e.enabled&&e.binary!==void 0}function bt(e,t,n){if(e&&t!==void 0&&t!==`unknown`&&n!==void 0&&!c(t,n))return`Unsupported version: requires ${n}`}var xt=class extends l{constructor(e=a){super(e)}onInit(){this.registerHandler(S.config.prime,async e=>{e.setResult(await E(this.bus,e.payload))})}};const q=ae,J=e.string().trim().min(1),St=i(`client-profile:storage`,{get:{request:e.object({clientId:J,name:ie}),response:e.object({record:q.nullable()})},getById:{request:e.object({id:J}),response:e.object({record:q.nullable()})},list:{request:e.object({clientId:J}),response:e.object({records:e.array(q)})},set:{request:q,response:e.object({success:e.boolean()})},delete:{request:e.object({clientId:J,name:ie}),response:e.object({success:e.boolean()})},clearDefault:{request:e.object({clientId:J}),response:e.object({success:e.boolean()})},setDefault:{request:e.object({clientId:J,name:ie}),response:e.object({record:q.nullable()})}}),Y=St.subjects;function Ct(e,t,r){let i=n.resolve(e),a=n.resolve(t),o=n.relative(i,a);if(o!==``&&!o.startsWith(`..`)&&!n.isAbsolute(o))return a;throw Error(`${r} refused to access path outside client profile root`)}var wt=class extends l{clientsBasePath;constructor(e,t){super(e),this.clientsBasePath=t}async onInit(){this.registerCreateHandler(),this.registerListHandler(),this.registerGetHandler(),this.registerUpdateHandler(),this.registerDeleteHandler(),this.registerSetDefaultHandler()}registerCreateHandler(){this.registerHandler(S.profile.create,async e=>{let i=K(e.payload.clientId,`profile.create`),{name:a,description:o}=e.payload;if((await this.bus.request(Y.get,{clientId:i,name:a})).record!==null)throw Error(`Profile '${a}' already exists for client '${i}'`);let s=n.join(this.clientsBasePath,i,`profiles`),c=Ct(s,n.join(s,a),`profile.create`);await t.mkdir(c,{recursive:!0});try{await E(this.bus,{clientId:i,configDir:c,phase:`profile-create`});let t=Date.now(),n={id:r(),clientId:i,name:a,description:o??null,configDir:c,isDefault:!1,createdAt:t,updatedAt:t};await this.bus.request(Y.set,n),e.setResult({profile:n})}catch(e){throw await t.rm(c,{recursive:!0,force:!0}),e}})}registerListHandler(){this.registerHandler(S.profile.list,async e=>{let t=K(e.payload.clientId,`profile.list`),n=await this.bus.request(Y.list,{clientId:t});e.setResult({profiles:n.records})})}registerGetHandler(){this.registerHandler(S.profile.get,async e=>{let t=K(e.payload.clientId,`profile.get`),n=await this.bus.request(Y.get,{clientId:t,name:e.payload.name});e.setResult({profile:n.record})})}registerUpdateHandler(){this.registerHandler(S.profile.update,async e=>{let t=K(e.payload.clientId,`profile.update`),{name:n,description:r}=e.payload,i=await this.bus.request(Y.get,{clientId:t,name:n});if(i.record===null)throw Error(`Profile '${n}' not found for client '${t}'`);let a={...i.record,description:r===void 0?i.record.description:r,updatedAt:Date.now()};await this.bus.request(Y.set,a),e.setResult({profile:a})})}registerDeleteHandler(){this.registerHandler(S.profile.delete,async e=>{let r=K(e.payload.clientId,`profile.delete`),{name:i}=e.payload,a=await this.bus.request(Y.get,{clientId:r,name:i});a.record!==null&&(Ct(n.join(this.clientsBasePath,r,`profiles`),a.record.configDir,`profile.delete`),await t.rm(a.record.configDir,{recursive:!0,force:!0}));let o=await this.bus.request(Y.delete,{clientId:r,name:i});e.setResult({success:o.success})})}registerSetDefaultHandler(){this.registerHandler(S.profile.setDefault,async e=>{let t=K(e.payload.clientId,`profile.setDefault`),{name:n}=e.payload,r=await this.bus.request(Y.setDefault,{clientId:t,name:n});if(r.record===null)throw Error(`Profile '${n}' not found for client '${t}'`);e.setResult({profile:r.record})})}};function Tt(e){return{subject:`sessionConfig.setup`,$meta:{namespace:`client:${e}`,isRequest:!0,local:!1,channel:!1}}}function Et(e){return{subject:`sessionConfig.destroy`,$meta:{namespace:`client:${e}`,isRequest:!0,local:!1,channel:!1}}}const Dt=()=>Date.now();function Ot(){let e=w.platform();if(e===`darwin`||e===`linux`||e===`win32`)return e;throw Error(`client.sessionConfig does not support platform '${e}'`)}function kt(e,t,r){let i=ce.safeParse(t);if(!i.success)throw Error(`${r} received an unsafe session ID`);let a=n.resolve(e),o=n.resolve(a,i.data),s=n.relative(a,o);if(s===``||!s.startsWith(`..`)&&!n.isAbsolute(s))return o;throw Error(`${r} refused to access path outside client sessions root`)}var At=class extends l{clientsBasePath;getNow;constructor(e,t,n=Dt){super(e),this.clientsBasePath=t,this.getNow=n}async onInit(){this.registerHandler(S.sessionConfig.create,async e=>{let{clientId:n,sessionId:r,profileName:i,baseConfigDir:a,projectDir:o,configInheritance:s=`full`}=e.payload,c=K(n,`sessionConfig.create`),l=this.resolveClientSessionDir(c,r,`sessionConfig.create`);await t.mkdir(l,{recursive:!0});try{let t=await this.resolveBaseConfigDir(c,l,i,a),n=Tt(c),r=await this.bus.requestOptional(n,{sessionDir:l,baseConfigDir:t,projectDir:o,platform:Ot(),configInheritance:s}),u=r.handled?r.data.env??{}:{};await E(this.bus,{clientId:c,configDir:l,phase:`session-create`,projectDir:o}),e.setResult({sessionDir:l,env:u})}catch(e){throw await t.rm(l,{recursive:!0,force:!0}),e}}),this.registerHandler(S.sessionConfig.destroy,async e=>{let{clientId:t,sessionId:n}=e.payload,r=K(t,`sessionConfig.destroy`),i=this.resolveClientSessionDir(r,n,`sessionConfig.destroy`);await this.destroyClientSessionDir(r,i),e.setResult({success:!0})}),this.registerHandler(S.sessionConfig.cleanup,async e=>{let{clientId:t}=e.payload,n=t===void 0?void 0:K(t,`sessionConfig.cleanup`),r=await this.cleanupOrphanedDirs(n);e.setResult({removed:r})}),this.registerHandler(de.closed,async e=>{await this.destroySessionDirsForSessionId(e.payload.sessionId)}),await this.cleanupOrphanedDirs()}async resolveBaseConfigDir(e,t,n,r){if(r!==void 0)return r;if(n!==void 0){let t=await this.bus.request(Y.get,{clientId:e,name:n});if(t.record!==null)return t.record.configDir;throw Error(`Profile '${n}' not found for client '${e}'`)}let i=(await this.bus.request(Y.list,{clientId:e})).records.find(e=>e.isDefault);return i?i.configDir:t}async cleanupOrphanedDirs(e){let r=[],i=this.getNow(),a=e===void 0?await this.listClientIds():[e];return await Promise.all(a.map(async e=>{let a=n.join(this.clientsBasePath,e,`sessions`),o=await t.readdir(a).catch(()=>[]);await Promise.all(o.map(async n=>{try{let o=kt(a,n,`sessionConfig.cleanup`),s=await t.stat(o),c=s.birthtimeMs>0?s.birthtimeMs:s.ctimeMs;s.isDirectory()&&i-c>36e5&&!await this.isActiveSession(n)&&(await this.destroyClientSessionDir(e,o),r.push(o))}catch{}}))})),r}async destroySessionDirsForSessionId(e){if(!ce.safeParse(e).success)return;let t=await this.listClientIds();await Promise.all(t.map(async t=>{let n=this.resolveClientSessionDir(t,e,`session.closed`);await this.destroyClientSessionDir(t,n)}))}async destroyClientSessionDir(e,n){await t.stat(n).then(e=>e.isDirectory(),e=>{let t=e.code;if(t===`ENOENT`||t===`ENOTDIR`)return!1;throw e})&&(await this.bus.requestOptional(Et(e),{sessionDir:n,platform:Ot()}),await t.rm(n,{recursive:!0,force:!0}))}async isActiveSession(e){let t=await this.bus.requestOptional(de.get,{sessionId:e});return t.handled&&t.data.session?.status===`active`}resolveClientSessionDir(e,t,r){return kt(n.join(this.clientsBasePath,e,`sessions`),t,r)}async listClientIds(){return(await t.readdir(this.clientsBasePath,{withFileTypes:!0}).catch(()=>[])).filter(e=>e.isDirectory()).map(e=>e.name)}};const jt=new Set([`hook.received`,`hook.handle`]);function Mt(e,t){return a.registerNamespace(i(`client:${e}`,{"hook.received":G,"hook.handle":{request:G,response:et},...t})).subjects}function Nt(e,t){let n=Object.keys(t).filter(e=>jt.has(e));if(n.length===0)return;let r=n.join(`, `);throw Error([`[createClientNamespace] additionalSchemas for client:${e}`,`cannot override reserved shared hook subjects: ${r}`].join(` `))}function Pt(e,t){let n=e;for(let e of t.split(`.`)){if(typeof n!=`object`||!n||!(e in n))return!1;n=n[e]}return!0}function Ft(e,t,n){let r=Object.keys(n).filter(e=>!Pt(t,e));if(r.length!==0)throw Error(`[createClientNamespace] client:${e} was already registered without required subjects: ${r.join(`, `)}`)}function It(e,t){let n=K(e,`createClientNamespace`),r=t??{};Nt(n,r);let i=Mt(n,r);return Ft(n,i,r),{namespaceDomain:`client:${n}`,subjects:i}}const Lt=_(`client_runtimes`,e=>({id:e.text(`id`).primaryKey(),clientId:e.text(`client_id`).notNull(),status:e.text(`status`).notNull(),supervisorSessionId:e.text(`supervisor_session_id`),pid:e.int4(`pid`),parentPid:e.int4(`parent_pid`),adapterSessionId:e.text(`adapter_session_id`),sessionId:e.text(`session_id`),cwd:e.text(`cwd`),argv:e.jsonCol(`argv`),metadata:e.jsonCol(`metadata`),observedAt:e.epochMs(`observed_at`).notNull(),createdAt:e.epochMs(`created_at`).notNull(),updatedAt:e.epochMs(`updated_at`).notNull()}),{sqlite:e=>[u(`idx_client_runtimes_supervisor_session_id`).on(e.supervisorSessionId),u(`idx_client_runtimes_pid_client_id`).on(e.pid,e.clientId),u(`idx_client_runtimes_adapter_session_id_client_id`).on(e.adapterSessionId,e.clientId)],postgres:e=>[p(`idx_client_runtimes_supervisor_session_id`).on(e.supervisorSessionId),p(`idx_client_runtimes_pid_client_id`).on(e.pid,e.clientId),p(`idx_client_runtimes_adapter_session_id_client_id`).on(e.adapterSessionId,e.clientId)]}),Rt=Lt.sqlite,zt=Lt.postgres,Bt=g({clientRuntimes:Rt},{clientRuntimes:zt}),Vt=new Set(B);function Ht(e){if(!Vt.has(e.status))throw Error(`Unknown ClientRuntimeStatus in DB: '${e.status}'`);return{clientRuntimeId:e.id,clientId:e.clientId,status:e.status,supervisorSessionId:e.supervisorSessionId??void 0,pid:e.pid??void 0,parentPid:e.parentPid??void 0,adapterSessionId:e.adapterSessionId??void 0,sessionId:e.sessionId??void 0,cwd:e.cwd??void 0,argv:e.argv??void 0,metadata:e.metadata??void 0,observedAt:e.observedAt,createdAt:e.createdAt,updatedAt:e.updatedAt}}function Ut(e,t){let{clientRuntimes:n}=y(t,Bt),r=e.on(U.upsert,async e=>{let r=e.payload,i={clientId:r.clientId,status:r.status,supervisorSessionId:r.supervisorSessionId??null,pid:r.pid??null,parentPid:r.parentPid??null,adapterSessionId:r.adapterSessionId??null,sessionId:r.sessionId??null,cwd:r.cwd??null,argv:r.argv??null,metadata:r.metadata??null,observedAt:r.observedAt,updatedAt:r.updatedAt};await t.insert(n).values({id:r.clientRuntimeId,createdAt:r.createdAt,...i}).onConflictDoUpdate({target:n.id,set:i,setWhere:ne(re`excluded.updated_at`,n.updatedAt)}),e.setResult({success:!0})}),i=e.on(U.loadAll,async e=>{let r=await t.select().from(n);e.setResult({records:r.map(Ht)})});return()=>{r(),i()}}const Wt=_(`client_binary_versions`,e=>({id:e.text(`id`).primaryKey(),clientId:e.text(`client_id`).notNull(),version:e.text(`version`).notNull(),installPath:e.text(`install_path`).notNull(),installedAt:e.epochMs(`installed_at`).notNull(),createdAt:e.epochMs(`created_at`).notNull()}),{sqlite:e=>[d(`uq_client_binary_versions_client_version`).on(e.clientId,e.version)],postgres:e=>[m(`uq_client_binary_versions_client_version`).on(e.clientId,e.version)]}),Gt=Wt.sqlite,Kt=_(`client_binary_state`,e=>({clientId:e.text(`client_id`).primaryKey(),activeVersion:e.text(`active_version`),updatedAt:e.epochMs(`updated_at`).notNull()})),qt=Kt.sqlite,Jt=Wt.postgres,Yt=Kt.postgres,X=g({clientBinaryVersions:Gt,clientBinaryState:qt},{clientBinaryVersions:Jt,clientBinaryState:Yt});function Z(e){return{id:e.id,clientId:e.clientId,version:e.version,installPath:e.installPath,installedAt:e.installedAt,createdAt:e.createdAt}}function Q(e){return{clientId:e.clientId,activeVersion:e.activeVersion??null,updatedAt:e.updatedAt}}function Xt(e){return{id:e.id,clientId:e.clientId,version:e.version,installPath:e.installPath,installedAt:e.installedAt,createdAt:e.createdAt}}async function Zt(e,t,n){await e.insert(n).values(Xt(t)).onConflictDoNothing({target:[n.clientId,n.version]})}function Qt(e,t,n){return{clientId:e,activeVersion:t,updatedAt:n}}async function $t(e,t,n,r,i){await e.insert(i).values(Qt(t,n,r)).onConflictDoUpdate({target:i.clientId,set:{activeVersion:n,updatedAt:r}})}async function en(e,t){let{clientBinaryVersions:n}=y(e,X);await Zt(e,t,n)}async function tn(e,t,n,r){let{clientBinaryVersions:i,clientBinaryState:a}=y(e,X);return v(e,async e=>{let[o]=await e.select().from(a).where(x(a.clientId,t.clientId)).limit(1),s=o?.activeVersion??null;return await Zt(e,t,i),n?(await $t(e,t.clientId,t.version,r,a),{previousActiveVersion:s,activeVersion:t.version}):{previousActiveVersion:s,activeVersion:s}})}async function nn(e,t){let{clientBinaryVersions:n,clientBinaryState:r}=y(e,X);return v(e,async e=>{let[i]=await e.select().from(r).where(x(r.clientId,t)).limit(1),a=await e.select().from(n).where(x(n.clientId,t));return{state:i?Q(i):null,versions:a.map(Z)}})}async function rn(e){let{clientBinaryVersions:t,clientBinaryState:n}=y(e,X);return v(e,async e=>{let r=await e.select().from(n),i=await e.select().from(t);return{states:r.map(Q),versions:i.map(Z)}})}async function an(e,t){let{clientBinaryState:n}=y(e,X),r={clientId:t.clientId,activeVersion:t.activeVersion??null,updatedAt:t.updatedAt};await e.insert(n).values(r).onConflictDoUpdate({target:n.clientId,set:r})}async function on(e,t,n,r){let{clientBinaryState:i}=y(e,X);return v(e,async e=>{let[a]=await e.select().from(i).where(x(i.clientId,t)).limit(1),o=a?.activeVersion??null;return await $t(e,t,n,r,i),{previousActiveVersion:o,activeVersion:n}})}async function sn(e,t,n,r){let{clientBinaryVersions:i,clientBinaryState:a}=y(e,X);return v(e,async e=>{let[o]=await e.select().from(a).where(x(a.clientId,t)).limit(1),s=o?.activeVersion??null;if(!ee(await e.delete(i).where(b(x(i.clientId,t),x(i.version,n)))))return{removedVersion:null,previousActiveVersion:s,activeVersion:s};await e.update(a).set({activeVersion:null,updatedAt:r}).where(b(x(a.clientId,t),x(a.activeVersion,n)));let[c]=await e.select().from(a).where(x(a.clientId,t)).limit(1);return{removedVersion:n,previousActiveVersion:s,activeVersion:c?.activeVersion??null}})}function cn(e,t){let{clientBinaryVersions:n,clientBinaryState:r}=y(t,X),i=[e.on(P.insertVersion,async e=>{await en(t,e.payload),e.setResult({success:!0})}),e.on(P.recordInstalledVersion,async e=>{let{versionRecord:n,makeActive:r,updatedAt:i}=e.payload,a=await tn(t,n,r,i);e.setResult(a)}),e.on(P.listVersions,async e=>{let r=await t.select().from(n).where(x(n.clientId,e.payload.clientId));e.setResult({versions:r.map(Z)})}),e.on(P.getSnapshot,async e=>{let{state:n,versions:r}=await nn(t,e.payload.clientId);e.setResult({state:n,versions:r})}),e.on(P.loadAllVersions,async e=>{let r=await t.select().from(n);e.setResult({versions:r.map(Z)})}),e.on(P.upsertState,async e=>{await an(t,e.payload),e.setResult({success:!0})}),e.on(P.setActiveVersion,async e=>{let{clientId:n,activeVersion:r,updatedAt:i}=e.payload,a=await on(t,n,r,i);e.setResult(a)}),e.on(P.getState,async e=>{let[n]=await t.select().from(r).where(x(r.clientId,e.payload.clientId)).limit(1);e.setResult({state:n?Q(n):null})}),e.on(P.loadAllState,async e=>{let n=await t.select().from(r);e.setResult({states:n.map(Q)})}),e.on(P.loadSnapshot,async e=>{let{states:n,versions:r}=await rn(t);e.setResult({states:n,versions:r})}),e.on(P.removeVersionAndClearActive,async e=>{let{clientId:n,version:r,updatedAt:i}=e.payload,a=await sn(t,n,r,i);e.setResult(a)})];return()=>{for(let e of i)e()}}const ln=_(`client_profiles`,e=>({id:e.text(`id`).primaryKey(),clientId:e.text(`client_id`).notNull(),name:e.text(`name`).notNull(),description:e.text(`description`),configDir:e.text(`config_dir`).notNull(),isDefault:e.bool(`is_default`).notNull().default(!1),createdAt:e.epochMs(`created_at`).notNull(),updatedAt:e.epochMs(`updated_at`).notNull()}),{sqlite:e=>[f(`uq_client_profiles_client_name`).on(e.clientId,e.name),f(`uq_client_profiles_default`).on(e.clientId).where(re`${e.isDefault} = 1`)],postgres:e=>[h(`uq_client_profiles_client_name`).on(e.clientId,e.name),h(`uq_client_profiles_default`).on(e.clientId).where(re`${e.isDefault} = true`)]}),un=ln.sqlite,dn=ln.postgres,fn=g({clientProfiles:un},{clientProfiles:dn});function $(e){return{id:e.id,clientId:e.clientId,name:e.name,description:e.description??null,configDir:e.configDir,isDefault:e.isDefault,createdAt:e.createdAt,updatedAt:e.updatedAt}}async function pn(e,t,n){let{clientProfiles:r}=y(e,fn),i=Date.now();return v(e,async e=>{let[a]=await e.select().from(r).where(b(x(r.clientId,t),x(r.name,n))).limit(1);if(a===void 0)return null;await e.update(r).set({isDefault:!1,updatedAt:i}).where(b(x(r.clientId,t),x(r.isDefault,!0))),await e.update(r).set({isDefault:!0,updatedAt:i}).where(b(x(r.clientId,t),x(r.name,n)));let[o]=await e.select().from(r).where(b(x(r.clientId,t),x(r.name,n))).limit(1);return o===void 0?null:$(o)})}function mn(e,t){let{clientProfiles:n}=y(t,fn),r=[e.on(Y.get,async e=>{let{clientId:r,name:i}=e.payload,[a]=await t.select().from(n).where(b(x(n.clientId,r),x(n.name,i))).limit(1);e.setResult({record:a?$(a):null})}),e.on(Y.getById,async e=>{let[r]=await t.select().from(n).where(x(n.id,e.payload.id)).limit(1);e.setResult({record:r?$(r):null})}),e.on(Y.list,async e=>{let r=await t.select().from(n).where(x(n.clientId,e.payload.clientId));e.setResult({records:r.map($)})}),e.on(Y.set,async e=>{let r=e.payload,i={id:r.id,clientId:r.clientId,name:r.name,description:r.description??null,configDir:r.configDir,isDefault:r.isDefault,createdAt:r.createdAt,updatedAt:r.updatedAt};await t.insert(n).values(i).onConflictDoUpdate({target:n.id,set:{name:r.name,description:r.description??null,configDir:r.configDir,isDefault:r.isDefault,updatedAt:r.updatedAt}}),e.setResult({success:!0})}),e.on(Y.delete,async e=>{let{clientId:r,name:i}=e.payload,a=await t.delete(n).where(b(x(n.clientId,r),x(n.name,i)));e.setResult({success:ee(a)})}),e.on(Y.clearDefault,async e=>{await t.update(n).set({isDefault:!1,updatedAt:Date.now()}).where(b(x(n.clientId,e.payload.clientId),x(n.isDefault,!0))),e.setResult({success:!0})}),e.on(Y.setDefault,async e=>{let{clientId:n,name:r}=e.payload,i=await pn(t,n,r);e.setResult({record:i})})];return()=>{for(let e of r)e()}}var hn=class{runtimeService;binaryManager;configPrimeService;profileService;sessionConfigService;constructor(e,t,n,r,i){this.runtimeService=e,this.binaryManager=t,this.configPrimeService=n,this.profileService=r,this.sessionConfigService=i}async init(){let e=(await Promise.allSettled([this.runtimeService.init(),this.binaryManager.init(),this.configPrimeService.init(),this.profileService.init(),this.sessionConfigService.init()])).filter(e=>e.status===`rejected`);if(e.length>0){for(let t=1;t<e.length;t++)console.warn(`[ClientsCoreService] Multiple init failures, secondary:`,e[t].reason);throw e[0].reason}}async destroy(){let e=(await Promise.allSettled([this.runtimeService.destroy(),this.binaryManager.destroy(),this.configPrimeService.destroy(),this.profileService.destroy(),this.sessionConfigService.destroy()])).filter(e=>e.status===`rejected`);for(let t of e)console.warn(`[ClientsCoreService] destroy failure:`,t.reason)}};const gn=o(`makaio.clients-core`);function _n(e){let t=[],n=()=>{for(let e of[...t].reverse())e()};try{for(let n of e)t.push(n())}catch(e){throw n(),e}return n}function vn(e={}){let{definitions:t=[],strategyDependencies:r,postInstallHandlers:i}=e,a=[...t];return{name:`makaio.clients-core`,displayName:`Clients Core`,version:`0.1.0`,critical:!0,namespaces:[N,H,St],storage:{registerHandlers:te((e,t)=>_n([()=>Ut(e,t),()=>cn(e,t),()=>mn(e,t)]))},create:e=>{let t=new F(a),o=n.join(e.makaioHome,`clients`),s=new Ge(e.bus,{basePath:n.join(e.makaioHome,`binaries`),configBasePath:o,postInstallHandlers:i},t,r),c=new wt(e.bus,o),l=new At(e.bus,o);return new hn(new ht(e.bus),s,new xt(e.bus),c,l)}}}async function yn(e){let t=await a.requestOptional(S.resolveBinary,{clientId:e});return t.handled?t.data:void 0}function bn(e,t,n){return[...n??[],e,...t].map(Cn).join(` `)}function xn(e,t,n,r,i){return bn(e,[...i??[],...t.split(` `),n],r)}function Sn(e){return e.runtimeCapabilities.hookEvents.filter(e=>e.frameworkSubject!==void 0).map(e=>({eventName:e.name,mode:e.mode}))}function Cn(e){return/^[A-Za-z0-9_@%+=:,./-]+$/.test(e)?e:`'${e.replaceAll(`'`,`'\\''`)}'`}export{lt as AbsolutePathSchema,he as BinaryNotFoundError,B as CLIENT_RUNTIME_STATUSES,ge as ClientAccountRegistry,Ve as ClientBinaryJobRunner,Ge as ClientBinaryManager,j as ClientBinaryStateRecordSchema,N as ClientBinaryStorageNamespace,P as ClientBinaryStorageSubjects,A as ClientBinaryVersionRecordSchema,Te as ClientBinaryVersionResolver,xt as ClientConfigPrimeService,F as ClientDefinitionRegistry,et as ClientHookHandleResponseSchema,q as ClientProfileRecordSchema,wt as ClientProfileService,St as ClientProfileStorageNamespace,Y as ClientProfileStorageSubjects,Xe as ClientRuntimeRegistry,ht as ClientRuntimeService,H as ClientRuntimeStorageNamespace,U as ClientRuntimeStorageSubjects,At as ClientSessionConfigService,oe as ClientSubjects,pt as ClientWiringAggregatedResultSchema,dt as ClientWiringApplyResponseSchema,C as ClientWiringEntrySchema,ut as ClientWiringListResponseSchema,ft as ClientWiringRemoveResponseSchema,hn as ClientsCoreService,gn as ClientsCoreToken,$e as DEFAULT_HOOK_HANDLE_TIMEOUT_MS,G as RawClientHookPayloadSchema,V as RuntimeRecordSchema,mt as assertAbsoluteProjectDir,fe as atomicModifyFile,bn as buildClientCommand,it as buildClientSessionBase,xn as buildHookCommand,K as canonicalizeClientId,Lt as clientRuntimesDual,It as createClientNamespace,ct as createClientWiringListSubjectDef,st as createClientWiringSubjectDef,vn as createClientsCorePackage,tt as createRawClientHookHandleSubject,Qe as createRawClientHookReceivedSubject,Sn as deriveSessionEventDescriptors,at as emitBestEffort,O as isPathWithinBase,rt as pickNonEmptyString,nt as pickNonEmptyStringValue,cn as registerDrizzleClientBinaryStorage,mn as registerDrizzleProfileStorage,Ut as registerDrizzleRuntimeStorage,_n as registerStorageHandlersWithRollback,k as resolveAndValidateBasePath,yn as resolveClientBinary};
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { C as AdapterNamespace, S as AdapterSchemas, _ as StartAgentRequest, a as AgentSelection, b as AdapterRuntimeOptions, c as AgentSelectionKindMap, d as SessionDiscoveredSchema, f as SessionUsage, g as RehydrateAgentSchema, h as RehydrateAgentResponse, i as AdapterSelectionSchema, l as AgentSelectionSchema, m as RehydrateAgentRequest, n as ProviderContextSchema, o as AgentSelectionBase, p as SessionUsageSchema, r as AdapterSelection, s as AgentSelectionBaseSchema, t as ProviderContext, u as SessionDiscovered, v as StartAgentResponse, w as AdapterSubjects, x as AdapterRuntimeOptionsSchema, y as StartAgentSchema } from "../../index-
|
|
2
|
-
import { a as ROOT_SESSION_LINEAGE_KIND, c as SUBAGENT_SESSION_LINEAGE_KIND, d as SessionLineageKindSchema, f as SessionLineageSchema, i as ForkSessionLineageSchema, l as SessionLineage, n as CompressSessionLineageSchema, o as RootSessionLineageSchema, p as SubagentSessionLineageSchema, r as FORK_SESSION_LINEAGE_KIND, s as SESSION_LINEAGE_KINDS, t as COMPRESS_SESSION_LINEAGE_KIND, u as SessionLineageKind } from "../../session-lineage-
|
|
1
|
+
import { C as AdapterNamespace, S as AdapterSchemas, _ as StartAgentRequest, a as AgentSelection, b as AdapterRuntimeOptions, c as AgentSelectionKindMap, d as SessionDiscoveredSchema, f as SessionUsage, g as RehydrateAgentSchema, h as RehydrateAgentResponse, i as AdapterSelectionSchema, l as AgentSelectionSchema, m as RehydrateAgentRequest, n as ProviderContextSchema, o as AgentSelectionBase, p as SessionUsageSchema, r as AdapterSelection, s as AgentSelectionBaseSchema, t as ProviderContext, u as SessionDiscovered, v as StartAgentResponse, w as AdapterSubjects, x as AdapterRuntimeOptionsSchema, y as StartAgentSchema } from "../../index-C_xQM96Y.mjs";
|
|
2
|
+
import { a as ROOT_SESSION_LINEAGE_KIND, c as SUBAGENT_SESSION_LINEAGE_KIND, d as SessionLineageKindSchema, f as SessionLineageSchema, i as ForkSessionLineageSchema, l as SessionLineage, n as CompressSessionLineageSchema, o as RootSessionLineageSchema, p as SubagentSessionLineageSchema, r as FORK_SESSION_LINEAGE_KIND, s as SESSION_LINEAGE_KINDS, t as COMPRESS_SESSION_LINEAGE_KIND, u as SessionLineageKind } from "../../session-lineage-C1M7-O3C.mjs";
|
|
3
3
|
export { AdapterNamespace, AdapterRuntimeOptions, AdapterRuntimeOptionsSchema, AdapterSchemas, AdapterSelection, AdapterSelectionSchema, AdapterSubjects, AgentSelection, AgentSelectionBase, AgentSelectionBaseSchema, AgentSelectionKindMap, AgentSelectionSchema, COMPRESS_SESSION_LINEAGE_KIND, CompressSessionLineageSchema, FORK_SESSION_LINEAGE_KIND, ForkSessionLineageSchema, ProviderContext, ProviderContextSchema, ROOT_SESSION_LINEAGE_KIND, RehydrateAgentRequest, RehydrateAgentResponse, RehydrateAgentSchema, RootSessionLineageSchema, SESSION_LINEAGE_KINDS, SUBAGENT_SESSION_LINEAGE_KIND, SessionDiscovered, SessionDiscoveredSchema, SessionLineage, SessionLineageKind, SessionLineageKindSchema, SessionLineageSchema, SessionUsage, SessionUsageSchema, StartAgentRequest, StartAgentResponse, StartAgentSchema, SubagentSessionLineageSchema };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{b as e,d as t,h as n,ht as r,t as i}from"../../schemas-CkOigLAT.mjs";import{a,i as o,r as s}from"../../compression-C5JAWdgZ.mjs";import{t as c}from"../../provider-context-CqMgPOWF.mjs";import{COMPRESS_SESSION_LINEAGE_KIND as l,CompressSessionLineageSchema as u,FORK_SESSION_LINEAGE_KIND as d,ForkSessionLineageSchema as f,ROOT_SESSION_LINEAGE_KIND as p,RootSessionLineageSchema as m,SESSION_LINEAGE_KINDS as h,SUBAGENT_SESSION_LINEAGE_KIND as g,SessionLineageKindSchema as _,SessionLineageSchema as v,SubagentSessionLineageSchema as y}from"./schemas/session-lineage.mjs";import{n as b,r as x,t as S}from"../../adapter-Lx6K7yQS.mjs";export{S as AdapterNamespace,r as AdapterRuntimeOptionsSchema,x as AdapterSchemas,s as AdapterSelectionSchema,b as AdapterSubjects,o as AgentSelectionBaseSchema,a as AgentSelectionSchema,l as COMPRESS_SESSION_LINEAGE_KIND,u as CompressSessionLineageSchema,d as FORK_SESSION_LINEAGE_KIND,f as ForkSessionLineageSchema,c as ProviderContextSchema,p as ROOT_SESSION_LINEAGE_KIND,n as RehydrateAgentSchema,m as RootSessionLineageSchema,h as SESSION_LINEAGE_KINDS,g as SUBAGENT_SESSION_LINEAGE_KIND,i as SessionDiscoveredSchema,_ as SessionLineageKindSchema,v as SessionLineageSchema,t as SessionUsageSchema,e as StartAgentSchema,y as SubagentSessionLineageSchema};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { a as ROOT_SESSION_LINEAGE_KIND, c as SUBAGENT_SESSION_LINEAGE_KIND, d as SessionLineageKindSchema, f as SessionLineageSchema, i as ForkSessionLineageSchema, l as SessionLineage, n as CompressSessionLineageSchema, o as RootSessionLineageSchema, p as SubagentSessionLineageSchema, r as FORK_SESSION_LINEAGE_KIND, s as SESSION_LINEAGE_KINDS, t as COMPRESS_SESSION_LINEAGE_KIND, u as SessionLineageKind } from "../../../session-lineage-
|
|
1
|
+
import { a as ROOT_SESSION_LINEAGE_KIND, c as SUBAGENT_SESSION_LINEAGE_KIND, d as SessionLineageKindSchema, f as SessionLineageSchema, i as ForkSessionLineageSchema, l as SessionLineage, n as CompressSessionLineageSchema, o as RootSessionLineageSchema, p as SubagentSessionLineageSchema, r as FORK_SESSION_LINEAGE_KIND, s as SESSION_LINEAGE_KINDS, t as COMPRESS_SESSION_LINEAGE_KIND, u as SessionLineageKind } from "../../../session-lineage-C1M7-O3C.mjs";
|
|
2
2
|
export { COMPRESS_SESSION_LINEAGE_KIND, CompressSessionLineageSchema, FORK_SESSION_LINEAGE_KIND, ForkSessionLineageSchema, ROOT_SESSION_LINEAGE_KIND, RootSessionLineageSchema, SESSION_LINEAGE_KINDS, SUBAGENT_SESSION_LINEAGE_KIND, SessionLineage, SessionLineageKind, SessionLineageKindSchema, SessionLineageSchema, SubagentSessionLineageSchema };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{z as e}from"zod";const t=[`root`,`fork`,`subagent`,`compress`],n=`root`,r=`fork`,i=`subagent`,a=`compress`,o=e.enum(t),s=e.object({kind:e.literal(n),parentAdapterSessionId:e.null(),forkPointMessageId:e.null()}),c=e.object({kind:e.literal(r),parentAdapterSessionId:e.string(),forkPointMessageId:e.string()}),l=e.object({kind:e.literal(i),parentAdapterSessionId:e.string(),forkPointMessageId:e.null()}),u=e.object({kind:e.literal(a),parentAdapterSessionId:e.string(),forkPointMessageId:e.null()}),d=e.discriminatedUnion(`kind`,[s,c,l,u]);export{a as COMPRESS_SESSION_LINEAGE_KIND,u as CompressSessionLineageSchema,r as FORK_SESSION_LINEAGE_KIND,c as ForkSessionLineageSchema,n as ROOT_SESSION_LINEAGE_KIND,s as RootSessionLineageSchema,t as SESSION_LINEAGE_KINDS,i as SUBAGENT_SESSION_LINEAGE_KIND,o as SessionLineageKindSchema,d as SessionLineageSchema,l as SubagentSessionLineageSchema};
|
|
1
|
+
import{z as e}from"zod";const t=[`root`,`fork`,`subagent`,`compress`],n=`root`,r=`fork`,i=`subagent`,a=`compress`,o=e.enum(t),s=e.object({kind:e.literal(n),parentAdapterSessionId:e.null(),forkPointMessageId:e.null()}),c=e.object({kind:e.literal(r),parentAdapterSessionId:e.string(),forkPointMessageId:e.string().nullable()}),l=e.object({kind:e.literal(i),parentAdapterSessionId:e.string(),forkPointMessageId:e.null()}),u=e.object({kind:e.literal(a),parentAdapterSessionId:e.string(),forkPointMessageId:e.null()}),d=e.discriminatedUnion(`kind`,[s,c,l,u]);export{a as COMPRESS_SESSION_LINEAGE_KIND,u as CompressSessionLineageSchema,r as FORK_SESSION_LINEAGE_KIND,c as ForkSessionLineageSchema,n as ROOT_SESSION_LINEAGE_KIND,s as RootSessionLineageSchema,t as SESSION_LINEAGE_KINDS,i as SUBAGENT_SESSION_LINEAGE_KIND,o as SessionLineageKindSchema,d as SessionLineageSchema,l as SubagentSessionLineageSchema};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { $ as BeforeArtifactHookContext, A as ArtifactContextTree, At as ArtifactRelationQueryTargetSchema, B as ArtifactDataOf, Bt as ConfidenceBasis, C as ArtifactRevisedPayload, Ct as ArtifactQueryRequestSchema, D as hydrateArtifactContextTree, Dt as ArtifactRefSchema, E as ArtifactSubjects, Et as ArtifactRef, F as ArtifactContextUnresolvedReason, Ft as ArtifactRepresentationsSchema, G as ArtifactDraftPatch, Gt as ConfidenceMetadataSchema, H as ArtifactOf, Ht as ConfidenceLevel, I as ArtifactContextUnresolvedReasonSchema, It as ArtifactRevision, J as ArtifactLifecycleHookEvent, Jt as LocalRef, K as ArtifactHookFilter, Kt as EvidenceRef, L as ResolvedArtifactContextWire, Lt as ArtifactRevisionSchema, M as UnresolvedArtifactContextNode, Mt as ArtifactRelationTarget, N as ArtifactContextRefEntry, Nt as ArtifactRelationTargetSchema, O as ArtifactContextNode, Ot as ArtifactRelation, P as ArtifactContextRefEntrySchema, Pt as ArtifactRepresentations, Q as ArtifactReactionHookRegistration, R as ResolvedArtifactContextWireSchema, Rt as ArtifactScope, S as ArtifactReviseResponse, St as ArtifactQueryRequest, T as ArtifactStatusChangedPayload, Tt as ArtifactQueryScopeSchema, U as defineArtifactKind, Ut as ConfidenceLevelSchema, V as ArtifactKindDefinition, Vt as ConfidenceBasisSchema, W as ArtifactDraft, Wt as ConfidenceMetadata, X as ArtifactLifecycleSemanticEvent, Xt as RelationTypeRegistration, Y as ArtifactLifecycleHookRegistration, Yt as LocalRefSchema, Z as ArtifactReactionHookContext, Zt as RelationTypeRegistrationSchema, _ as ArtifactResolveContextRequest, _t as ArtifactConflictPolicySchema, a as ArtifactKindListRequest, at as ArtifactContextRelationSelectorSchema, b as ArtifactResolveResponse, bt as ArtifactObservation, c as ArtifactKindRegisterResponse, ct as ArtifactContextSelector, d as ArtifactQueryResponse, dt as ArtifactActorSchema, et as BeforeArtifactHookRegistration, f as ArtifactRelationAddedPayload, ft as ArtifactCompareRequest, g as ArtifactRelationTypeRegisterResponse, gt as ArtifactConflictPolicy, h as ArtifactRelationTypeRegisterRequest, ht as ArtifactCompareResponseSchema, i as ArtifactKindChangedPayload, it as ArtifactContextRelationSelector, j as ResolvedArtifactContextNode, jt as ArtifactRelationSchema, k as ArtifactContextRootNode, kt as ArtifactRelationQueryTarget, l as ArtifactNamespace, lt as ArtifactContextSelectorSchema, m as ArtifactRelationTypeListResponse, mt as ArtifactCompareResponse, n as ArtifactCreateResponse, nt as ARTIFACT_CONTEXT_RENDER_HINTS, o as ArtifactKindListResponse, ot as ArtifactContextRenderHint, p as ArtifactRelationTypeListRequest, pt as ArtifactCompareRequestSchema, q as ArtifactLifecycleHookDefinition, qt as EvidenceRefSchema, r as ArtifactCreatedPayload, rt as ArtifactContextKnownRenderHint, s as ArtifactKindRegisterRequest, st as ArtifactContextRenderHintSchema, t as ArtifactCreateRequest, tt as defineArtifactLifecycleHooks, u as ArtifactObservationAddedPayload, ut as ArtifactActor, v as ArtifactResolveContextResponse, vt as ArtifactKindRegistration, w as ArtifactSchemas, wt as ArtifactQueryScope, x as ArtifactReviseRequest, xt as ArtifactObservationSchema, y as ArtifactResolveRequest, yt as ArtifactKindRegistrationSchema, z as AnyArtifactKindDefinition, zt as ArtifactScopeSchema } from "../../index-
|
|
1
|
+
import { $ as BeforeArtifactHookContext, A as ArtifactContextTree, At as ArtifactRelationQueryTargetSchema, B as ArtifactDataOf, Bt as ConfidenceBasis, C as ArtifactRevisedPayload, Ct as ArtifactQueryRequestSchema, D as hydrateArtifactContextTree, Dt as ArtifactRefSchema, E as ArtifactSubjects, Et as ArtifactRef, F as ArtifactContextUnresolvedReason, Ft as ArtifactRepresentationsSchema, G as ArtifactDraftPatch, Gt as ConfidenceMetadataSchema, H as ArtifactOf, Ht as ConfidenceLevel, I as ArtifactContextUnresolvedReasonSchema, It as ArtifactRevision, J as ArtifactLifecycleHookEvent, Jt as LocalRef, K as ArtifactHookFilter, Kt as EvidenceRef, L as ResolvedArtifactContextWire, Lt as ArtifactRevisionSchema, M as UnresolvedArtifactContextNode, Mt as ArtifactRelationTarget, N as ArtifactContextRefEntry, Nt as ArtifactRelationTargetSchema, O as ArtifactContextNode, Ot as ArtifactRelation, P as ArtifactContextRefEntrySchema, Pt as ArtifactRepresentations, Q as ArtifactReactionHookRegistration, R as ResolvedArtifactContextWireSchema, Rt as ArtifactScope, S as ArtifactReviseResponse, St as ArtifactQueryRequest, T as ArtifactStatusChangedPayload, Tt as ArtifactQueryScopeSchema, U as defineArtifactKind, Ut as ConfidenceLevelSchema, V as ArtifactKindDefinition, Vt as ConfidenceBasisSchema, W as ArtifactDraft, Wt as ConfidenceMetadata, X as ArtifactLifecycleSemanticEvent, Xt as RelationTypeRegistration, Y as ArtifactLifecycleHookRegistration, Yt as LocalRefSchema, Z as ArtifactReactionHookContext, Zt as RelationTypeRegistrationSchema, _ as ArtifactResolveContextRequest, _t as ArtifactConflictPolicySchema, a as ArtifactKindListRequest, at as ArtifactContextRelationSelectorSchema, b as ArtifactResolveResponse, bt as ArtifactObservation, c as ArtifactKindRegisterResponse, ct as ArtifactContextSelector, d as ArtifactQueryResponse, dt as ArtifactActorSchema, et as BeforeArtifactHookRegistration, f as ArtifactRelationAddedPayload, ft as ArtifactCompareRequest, g as ArtifactRelationTypeRegisterResponse, gt as ArtifactConflictPolicy, h as ArtifactRelationTypeRegisterRequest, ht as ArtifactCompareResponseSchema, i as ArtifactKindChangedPayload, it as ArtifactContextRelationSelector, j as ResolvedArtifactContextNode, jt as ArtifactRelationSchema, k as ArtifactContextRootNode, kt as ArtifactRelationQueryTarget, l as ArtifactNamespace, lt as ArtifactContextSelectorSchema, m as ArtifactRelationTypeListResponse, mt as ArtifactCompareResponse, n as ArtifactCreateResponse, nt as ARTIFACT_CONTEXT_RENDER_HINTS, o as ArtifactKindListResponse, ot as ArtifactContextRenderHint, p as ArtifactRelationTypeListRequest, pt as ArtifactCompareRequestSchema, q as ArtifactLifecycleHookDefinition, qt as EvidenceRefSchema, r as ArtifactCreatedPayload, rt as ArtifactContextKnownRenderHint, s as ArtifactKindRegisterRequest, st as ArtifactContextRenderHintSchema, t as ArtifactCreateRequest, tt as defineArtifactLifecycleHooks, u as ArtifactObservationAddedPayload, ut as ArtifactActor, v as ArtifactResolveContextResponse, vt as ArtifactKindRegistration, w as ArtifactSchemas, wt as ArtifactQueryScope, x as ArtifactReviseRequest, xt as ArtifactObservationSchema, y as ArtifactResolveRequest, yt as ArtifactKindRegistrationSchema, z as AnyArtifactKindDefinition, zt as ArtifactScopeSchema } from "../../index-BX1MxwFr.mjs";
|
|
2
2
|
export { ARTIFACT_CONTEXT_RENDER_HINTS, AnyArtifactKindDefinition, ArtifactActor, ArtifactActorSchema, ArtifactCompareRequest, ArtifactCompareRequestSchema, ArtifactCompareResponse, ArtifactCompareResponseSchema, ArtifactConflictPolicy, ArtifactConflictPolicySchema, ArtifactContextKnownRenderHint, ArtifactContextNode, ArtifactContextRefEntry, ArtifactContextRefEntrySchema, ArtifactContextRelationSelector, ArtifactContextRelationSelectorSchema, ArtifactContextRenderHint, ArtifactContextRenderHintSchema, ArtifactContextRootNode, ArtifactContextSelector, ArtifactContextSelectorSchema, ArtifactContextTree, ArtifactContextUnresolvedReason, ArtifactContextUnresolvedReasonSchema, ArtifactCreateRequest, ArtifactCreateResponse, ArtifactCreatedPayload, ArtifactDataOf, ArtifactDraft, ArtifactDraftPatch, ArtifactHookFilter, ArtifactKindChangedPayload, ArtifactKindDefinition, ArtifactKindListRequest, ArtifactKindListResponse, ArtifactKindRegisterRequest, ArtifactKindRegisterResponse, ArtifactKindRegistration, ArtifactKindRegistrationSchema, ArtifactLifecycleHookDefinition, ArtifactLifecycleHookEvent, ArtifactLifecycleHookRegistration, ArtifactLifecycleSemanticEvent, ArtifactNamespace, ArtifactObservation, ArtifactObservationAddedPayload, ArtifactObservationSchema, ArtifactOf, ArtifactQueryRequest, ArtifactQueryRequestSchema, ArtifactQueryResponse, ArtifactQueryScope, ArtifactQueryScopeSchema, ArtifactReactionHookContext, ArtifactReactionHookRegistration, ArtifactRef, ArtifactRefSchema, ArtifactRelation, ArtifactRelationAddedPayload, ArtifactRelationQueryTarget, ArtifactRelationQueryTargetSchema, ArtifactRelationSchema, ArtifactRelationTarget, ArtifactRelationTargetSchema, ArtifactRelationTypeListRequest, ArtifactRelationTypeListResponse, ArtifactRelationTypeRegisterRequest, ArtifactRelationTypeRegisterResponse, ArtifactRepresentations, ArtifactRepresentationsSchema, ArtifactResolveContextRequest, ArtifactResolveContextResponse, ArtifactResolveRequest, ArtifactResolveResponse, ArtifactReviseRequest, ArtifactReviseResponse, ArtifactRevisedPayload, ArtifactRevision, ArtifactRevisionSchema, ArtifactSchemas, ArtifactScope, ArtifactScopeSchema, ArtifactStatusChangedPayload, ArtifactSubjects, BeforeArtifactHookContext, BeforeArtifactHookRegistration, ConfidenceBasis, ConfidenceBasisSchema, ConfidenceLevel, ConfidenceLevelSchema, ConfidenceMetadata, ConfidenceMetadataSchema, EvidenceRef, EvidenceRefSchema, LocalRef, LocalRefSchema, RelationTypeRegistration, RelationTypeRegistrationSchema, ResolvedArtifactContextNode, ResolvedArtifactContextWire, ResolvedArtifactContextWireSchema, UnresolvedArtifactContextNode, defineArtifactKind, defineArtifactLifecycleHooks, hydrateArtifactContextTree };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { C as QualifiedModelRef, D as VirtualModelRef, E as ResolvableCanonicalModelSchema, O as VirtualModelRefSchema, S as ParsedCanonicalModelSchema, T as ResolvableCanonicalModel, _ as CanonicalModelParseErrorCodeSchema, a as CanonicalModelSchemas, b as CanonicalModelParseResultSchema, c as SEGMENT_RE, d as parseCanonicalModel, f as BareModelRef, g as CanonicalModelParseErrorCode, h as CanonicalModelParseError, i as CanonicalModelResolvedSelectionSchema, l as VIRTUAL_NAME_RE, m as CANONICAL_MODEL_PARSE_ERROR_CODES, n as CanonicalModelSubjects, o as CanonicalModelSelection, p as BareModelRefSchema, r as CanonicalModelResolvedSelection, s as CanonicalModelSelectionSchema, t as CanonicalModelNamespace, u as isCanonicalModelParseError, v as CanonicalModelParseErrorSchema, w as QualifiedModelRefSchema, x as ParsedCanonicalModel, y as CanonicalModelParseResult } from "../../index-
|
|
1
|
+
import { C as QualifiedModelRef, D as VirtualModelRef, E as ResolvableCanonicalModelSchema, O as VirtualModelRefSchema, S as ParsedCanonicalModelSchema, T as ResolvableCanonicalModel, _ as CanonicalModelParseErrorCodeSchema, a as CanonicalModelSchemas, b as CanonicalModelParseResultSchema, c as SEGMENT_RE, d as parseCanonicalModel, f as BareModelRef, g as CanonicalModelParseErrorCode, h as CanonicalModelParseError, i as CanonicalModelResolvedSelectionSchema, l as VIRTUAL_NAME_RE, m as CANONICAL_MODEL_PARSE_ERROR_CODES, n as CanonicalModelSubjects, o as CanonicalModelSelection, p as BareModelRefSchema, r as CanonicalModelResolvedSelection, s as CanonicalModelSelectionSchema, t as CanonicalModelNamespace, u as isCanonicalModelParseError, v as CanonicalModelParseErrorSchema, w as QualifiedModelRefSchema, x as ParsedCanonicalModel, y as CanonicalModelParseResult } from "../../index-DMz-2ACU.mjs";
|
|
2
2
|
export { BareModelRef, BareModelRefSchema, CANONICAL_MODEL_PARSE_ERROR_CODES, CanonicalModelNamespace, CanonicalModelParseError, CanonicalModelParseErrorCode, CanonicalModelParseErrorCodeSchema, CanonicalModelParseErrorSchema, CanonicalModelParseResult, CanonicalModelParseResultSchema, CanonicalModelResolvedSelection, CanonicalModelResolvedSelectionSchema, CanonicalModelSchemas, CanonicalModelSelection, CanonicalModelSelectionSchema, CanonicalModelSubjects, ParsedCanonicalModel, ParsedCanonicalModelSchema, QualifiedModelRef, QualifiedModelRefSchema, ResolvableCanonicalModel, ResolvableCanonicalModelSchema, SEGMENT_RE, VIRTUAL_NAME_RE, VirtualModelRef, VirtualModelRefSchema, isCanonicalModelParseError, parseCanonicalModel };
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { C as PostInstallDescriptorSchema, D as VersionCommandSchema, E as VersionCommand, S as PostInstallDescriptor, T as SignedBinaryBucketInstallDescriptorSchema, _ as LogSourceDefinitionSchema, a as ClientDefinitionSchema, b as NpmInstallDescriptor, c as ClientRuntimeCapabilities, d as ClientToolCapabilityAnnotationSchema, f as ClientToolDefinition, g as LogSourceDefinition, h as ConfigIsolationSchema, i as ClientDefinitionInput, l as ClientRuntimeCapabilitiesSchema, m as ConfigIsolation, n as ClientBinaryCompatibilitySchema, o as ClientHookEventDeclaration, p as ClientToolDefinitionSchema, r as ClientDefinition, s as ClientHookEventDeclarationSchema, t as ClientBinaryCompatibility, u as ClientToolCapabilityAnnotation, v as ManagedInstallDescriptor, w as SignedBinaryBucketInstallDescriptor, x as NpmInstallDescriptorSchema, y as ManagedInstallDescriptorSchema } from "../../definition-CuJvtYeG.mjs";
|
|
2
|
-
import { $ as
|
|
3
|
-
export { ClientAccountIdentifier, ClientAccountIdentifierSchema, ClientAccountObserveRequest, ClientAccountObserveResponse, ClientAccountObserveSchema, ClientBinaryCompatibility, ClientBinaryCompatibilitySchema, ClientBinaryListEntry, ClientBinaryListEntrySchema, ClientConfigPrimePhase, ClientConfigPrimePhaseSchema, ClientConfigPrimeRequest, ClientConfigPrimeResponse, ClientConfigPrimeSchema, ClientDefinition, ClientDefinitionInput, ClientDefinitionSchema, ClientExecutionContext, ClientExecutionContextSchema, ClientHookEventDeclaration, ClientHookEventDeclarationSchema, ClientIdentifierStrength, ClientIdentifierStrengthSchema, ClientIdentityObservation, ClientIdentityObservationSchema, ClientInstallCompleted, ClientInstallCompletedSchema, ClientInstallProgress, ClientInstallProgressSchema, ClientInstallRequest, ClientInstallResponse, ClientInstallSchema, ClientListRequest, ClientListResponse, ClientListSchema, ClientMetadataSchema, ClientNamespace, ClientProfile, ClientProfileNameSchema, ClientProfileSchema, ClientProfileSchemas, ClientResolveBinaryRequest, ClientResolveBinaryResponse, ClientResolveBinarySchema, ClientRuntimeCapabilities, ClientRuntimeCapabilitiesSchema, ClientRuntimeEvidenceBase, ClientRuntimeEvidenceBaseSchema, ClientRuntimeObserveRequest, ClientRuntimeObserveResponse, ClientRuntimeObserveSchema, ClientRuntimeSource, ClientRuntimeSourceLayer, ClientRuntimeSourceLayerSchema, ClientRuntimeSourceSchema, ClientRuntimeStarted, ClientRuntimeStartedSchema, ClientScanResult, ClientScanResultSchema, ClientScanTarget, ClientScanTargetSchema, ClientSchemas, ClientSessionAccountObserveRequest, ClientSessionAccountObserveResponse, ClientSessionAccountObserveSchema, ClientSessionConfigSchemas, ClientSessionLocator, ClientSessionLocatorSchema, ClientSessionObservedBase, ClientSessionObservedBaseSchema, ClientSessionStarted, ClientSessionStartedSchema, ClientSessionToolPost, ClientSessionToolPostSchema, ClientSessionToolPre, ClientSessionToolPreSchema, ClientSessionTurnCompleted, ClientSessionTurnCompletedSchema, ClientSessionTurnStarted, ClientSessionTurnStartedSchema, ClientSessionUserPromptSubmitted, ClientSessionUserPromptSubmittedSchema, ClientSetActiveRequest, ClientSetActiveResponse, ClientSetActiveSchema, ClientSubjects, ClientToolCapabilityAnnotation, ClientToolCapabilityAnnotationSchema, ClientToolDefinition, ClientToolDefinitionSchema, ClientUninstallRequest, ClientUninstallResponse, ClientUninstallSchema, ClientUpdateRequest, ClientUpdateResponse, ClientUpdateSchema, ClientUsageIngestRequest, ClientUsageIngestResponse, ClientUsageIngestSchema, ClientUsageSnapshot, ClientUsageSnapshotSchema, ClientUsageWindow, ClientUsageWindowSchema, ClientUsageWindows, ClientUsageWindowsSchema, ClientVersionChanged, ClientVersionChangedSchema, ClientWiringEntry, ClientWiringEntrySchema, ConfigIsolation, ConfigIsolationSchema, InstallError, InstallErrorSchema, InstallStage, InstallStageSchema, InstalledVersionEntry, InstalledVersionEntrySchema, LogSourceDefinition, LogSourceDefinitionSchema, ManagedInstallDescriptor, ManagedInstallDescriptorSchema, ManagedInstallStrategy, ManagedInstallStrategySchema, NpmInstallDescriptor, NpmInstallDescriptorSchema, PostInstallDescriptor, PostInstallDescriptorSchema, ProfileCreateRequest, ProfileCreateResponse, ProfileDeleteRequest, ProfileDeleteResponse, ProfileGetRequest, ProfileGetResponse, ProfileListRequest, ProfileListResponse, ProfileSetDefaultRequest, ProfileSetDefaultResponse, ProfileUpdateRequest, ProfileUpdateResponse, SessionConfigCleanupRequest, SessionConfigCleanupResponse, SessionConfigCreateRequest, SessionConfigCreateResponse, SessionConfigDestroyRequest, SessionConfigDestroyResponse, SessionConfigEnvSchema, SessionConfigIdSchema, SessionConfigInheritance, SessionConfigInheritanceSchema, SessionConfigSetupRequest, SessionConfigSetupRequestSchema, SessionConfigSetupResponse, SessionConfigSetupResponseSchema, SessionConfigTeardownRequest, SessionConfigTeardownRequestSchema, SessionConfigTeardownResponse, SessionConfigTeardownResponseSchema, SignedBinaryBucketInstallDescriptor, SignedBinaryBucketInstallDescriptorSchema, VersionCommand, VersionCommandSchema, createClientDefinition };
|
|
2
|
+
import { $ as ClientSessionToolPre, $t as ManagedInstallStrategySchema, A as SessionConfigIdSchema, An as ClientExecutionContextSchema, At as ClientInstallResponse, B as SessionConfigTeardownResponseSchema, Bt as ClientUninstallSchema, C as SessionConfigCleanupRequest, Cn as ClientUsageSnapshotSchema, Ct as ClientBinaryListEntry, D as SessionConfigDestroyRequest, Dn as ClientUsageWindowsSchema, Dt as ClientInstallProgress, E as SessionConfigCreateResponse, En as ClientUsageWindows, Et as ClientInstallCompletedSchema, F as SessionConfigSetupResponse, Ft as ClientSetActiveRequest, G as ClientSessionObservedBase, Gt as ClientVersionChangedSchema, H as ClientNamespace, Ht as ClientUpdateResponse, I as SessionConfigSetupResponseSchema, It as ClientSetActiveResponse, J as ClientSessionStartModeSchema, Jt as InstallStage, K as ClientSessionObservedBaseSchema, Kt as InstallError, L as SessionConfigTeardownRequest, Lt as ClientSetActiveSchema, M as SessionConfigInheritanceSchema, Mn as ClientResolveBinaryResponse, Mt as ClientListRequest, N as SessionConfigSetupRequest, Nn as ClientResolveBinarySchema, Nt as ClientListResponse, O as SessionConfigDestroyResponse, On as ClientSchemas, Ot as ClientInstallProgressSchema, P as SessionConfigSetupRequestSchema, Pt as ClientListSchema, Q as ClientSessionToolPostSchema, Qt as ManagedInstallStrategy, R as SessionConfigTeardownRequestSchema, Rt as ClientUninstallRequest, S as ProfileUpdateResponse, Sn as ClientUsageSnapshot, St as ClientRuntimeStartedSchema, T as SessionConfigCreateRequest, Tn as ClientUsageWindowSchema, Tt as ClientInstallCompleted, U as ClientSubjects, Ut as ClientUpdateSchema, V as createClientDefinition, Vt as ClientUpdateRequest, W as CLIENT_SESSION_START_MODES, Wt as ClientVersionChanged, X as ClientSessionStartedSchema, Xt as InstalledVersionEntry, Y as ClientSessionStarted, Yt as InstallStageSchema, Z as ClientSessionToolPost, Zt as InstalledVersionEntrySchema, _ as ProfileListRequest, _n as ClientSessionLocator, _t as ClientRuntimeSource, a as ClientConfigPrimeSchema, an as ClientIdentifierStrength, at as ClientSessionUserPromptSubmitted, b as ProfileSetDefaultResponse, bn as ClientUsageIngestResponse, bt as ClientRuntimeSourceSchema, c as ClientProfileSchema, cn as ClientIdentityObservationSchema, ct as ClientWiringEntrySchema, d as ProfileCreateRequest, dn as ClientScanResultSchema, dt as ClientRuntimeIsAdapterManagedRequest, en as ClientAccountIdentifier, et as ClientSessionToolPreSchema, f as ProfileCreateResponse, fn as ClientScanTarget, ft as ClientRuntimeIsAdapterManagedResponse, g as ProfileGetResponse, gn as ClientSessionAccountObserveSchema, gt as ClientRuntimeObserveSchema, h as ProfileGetRequest, hn as ClientSessionAccountObserveResponse, ht as ClientRuntimeObserveResponse, i as ClientConfigPrimeResponse, in as ClientAccountObserveSchema, it as ClientSessionTurnStartedSchema, j as SessionConfigInheritance, jn as ClientResolveBinaryRequest, jt as ClientInstallSchema, k as SessionConfigEnvSchema, kn as ClientExecutionContext, kt as ClientInstallRequest, l as ClientProfileSchemas, ln as ClientMetadataSchema, lt as ClientRuntimeEvidenceBase, m as ProfileDeleteResponse, mn as ClientSessionAccountObserveRequest, mt as ClientRuntimeObserveRequest, n as ClientConfigPrimePhaseSchema, nn as ClientAccountObserveRequest, nt as ClientSessionTurnCompletedSchema, o as ClientProfile, on as ClientIdentifierStrengthSchema, ot as ClientSessionUserPromptSubmittedSchema, p as ProfileDeleteRequest, pn as ClientScanTargetSchema, pt as ClientRuntimeIsAdapterManagedSchema, q as ClientSessionStartMode, qt as InstallErrorSchema, r as ClientConfigPrimeRequest, rn as ClientAccountObserveResponse, rt as ClientSessionTurnStarted, s as ClientProfileNameSchema, sn as ClientIdentityObservation, st as ClientWiringEntry, t as ClientConfigPrimePhase, tn as ClientAccountIdentifierSchema, tt as ClientSessionTurnCompleted, u as ClientSessionConfigSchemas, un as ClientScanResult, ut as ClientRuntimeEvidenceBaseSchema, v as ProfileListResponse, vn as ClientSessionLocatorSchema, vt as ClientRuntimeSourceLayer, w as SessionConfigCleanupResponse, wn as ClientUsageWindow, wt as ClientBinaryListEntrySchema, x as ProfileUpdateRequest, xn as ClientUsageIngestSchema, xt as ClientRuntimeStarted, y as ProfileSetDefaultRequest, yn as ClientUsageIngestRequest, yt as ClientRuntimeSourceLayerSchema, z as SessionConfigTeardownResponse, zt as ClientUninstallResponse } from "../../index-CwFSL4xI.mjs";
|
|
3
|
+
export { CLIENT_SESSION_START_MODES, ClientAccountIdentifier, ClientAccountIdentifierSchema, ClientAccountObserveRequest, ClientAccountObserveResponse, ClientAccountObserveSchema, ClientBinaryCompatibility, ClientBinaryCompatibilitySchema, ClientBinaryListEntry, ClientBinaryListEntrySchema, ClientConfigPrimePhase, ClientConfigPrimePhaseSchema, ClientConfigPrimeRequest, ClientConfigPrimeResponse, ClientConfigPrimeSchema, ClientDefinition, ClientDefinitionInput, ClientDefinitionSchema, ClientExecutionContext, ClientExecutionContextSchema, ClientHookEventDeclaration, ClientHookEventDeclarationSchema, ClientIdentifierStrength, ClientIdentifierStrengthSchema, ClientIdentityObservation, ClientIdentityObservationSchema, ClientInstallCompleted, ClientInstallCompletedSchema, ClientInstallProgress, ClientInstallProgressSchema, ClientInstallRequest, ClientInstallResponse, ClientInstallSchema, ClientListRequest, ClientListResponse, ClientListSchema, ClientMetadataSchema, ClientNamespace, ClientProfile, ClientProfileNameSchema, ClientProfileSchema, ClientProfileSchemas, ClientResolveBinaryRequest, ClientResolveBinaryResponse, ClientResolveBinarySchema, ClientRuntimeCapabilities, ClientRuntimeCapabilitiesSchema, ClientRuntimeEvidenceBase, ClientRuntimeEvidenceBaseSchema, ClientRuntimeIsAdapterManagedRequest, ClientRuntimeIsAdapterManagedResponse, ClientRuntimeIsAdapterManagedSchema, ClientRuntimeObserveRequest, ClientRuntimeObserveResponse, ClientRuntimeObserveSchema, ClientRuntimeSource, ClientRuntimeSourceLayer, ClientRuntimeSourceLayerSchema, ClientRuntimeSourceSchema, ClientRuntimeStarted, ClientRuntimeStartedSchema, ClientScanResult, ClientScanResultSchema, ClientScanTarget, ClientScanTargetSchema, ClientSchemas, ClientSessionAccountObserveRequest, ClientSessionAccountObserveResponse, ClientSessionAccountObserveSchema, ClientSessionConfigSchemas, ClientSessionLocator, ClientSessionLocatorSchema, ClientSessionObservedBase, ClientSessionObservedBaseSchema, ClientSessionStartMode, ClientSessionStartModeSchema, ClientSessionStarted, ClientSessionStartedSchema, ClientSessionToolPost, ClientSessionToolPostSchema, ClientSessionToolPre, ClientSessionToolPreSchema, ClientSessionTurnCompleted, ClientSessionTurnCompletedSchema, ClientSessionTurnStarted, ClientSessionTurnStartedSchema, ClientSessionUserPromptSubmitted, ClientSessionUserPromptSubmittedSchema, ClientSetActiveRequest, ClientSetActiveResponse, ClientSetActiveSchema, ClientSubjects, ClientToolCapabilityAnnotation, ClientToolCapabilityAnnotationSchema, ClientToolDefinition, ClientToolDefinitionSchema, ClientUninstallRequest, ClientUninstallResponse, ClientUninstallSchema, ClientUpdateRequest, ClientUpdateResponse, ClientUpdateSchema, ClientUsageIngestRequest, ClientUsageIngestResponse, ClientUsageIngestSchema, ClientUsageSnapshot, ClientUsageSnapshotSchema, ClientUsageWindow, ClientUsageWindowSchema, ClientUsageWindows, ClientUsageWindowsSchema, ClientVersionChanged, ClientVersionChangedSchema, ClientWiringEntry, ClientWiringEntrySchema, ConfigIsolation, ConfigIsolationSchema, InstallError, InstallErrorSchema, InstallStage, InstallStageSchema, InstalledVersionEntry, InstalledVersionEntrySchema, LogSourceDefinition, LogSourceDefinitionSchema, ManagedInstallDescriptor, ManagedInstallDescriptorSchema, ManagedInstallStrategy, ManagedInstallStrategySchema, NpmInstallDescriptor, NpmInstallDescriptorSchema, PostInstallDescriptor, PostInstallDescriptorSchema, ProfileCreateRequest, ProfileCreateResponse, ProfileDeleteRequest, ProfileDeleteResponse, ProfileGetRequest, ProfileGetResponse, ProfileListRequest, ProfileListResponse, ProfileSetDefaultRequest, ProfileSetDefaultResponse, ProfileUpdateRequest, ProfileUpdateResponse, SessionConfigCleanupRequest, SessionConfigCleanupResponse, SessionConfigCreateRequest, SessionConfigCreateResponse, SessionConfigDestroyRequest, SessionConfigDestroyResponse, SessionConfigEnvSchema, SessionConfigIdSchema, SessionConfigInheritance, SessionConfigInheritanceSchema, SessionConfigSetupRequest, SessionConfigSetupRequestSchema, SessionConfigSetupResponse, SessionConfigSetupResponseSchema, SessionConfigTeardownRequest, SessionConfigTeardownRequestSchema, SessionConfigTeardownResponse, SessionConfigTeardownResponseSchema, SignedBinaryBucketInstallDescriptor, SignedBinaryBucketInstallDescriptorSchema, VersionCommand, VersionCommandSchema, createClientDefinition };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as e,c as t,d as n,f as r,i,l as a,n as o,o as s,p as c,r as l,s as u,t as d,u as f}from"../../profile-BMBXUqqh.mjs";import{a as p,c as m,d as h,f as g,i as _,l as v,n as y,o as b,p as x,r as S,s as C,t as w,u as T}from"../../account-identity-C7Kx_ieU.mjs";import{A as E,B as D,C as O,D as k,E as A,F as j,G as M,H as N,I as P,
|
|
1
|
+
import{a as e,c as t,d as n,f as r,i,l as a,n as o,o as s,p as c,r as l,s as u,t as d,u as f}from"../../profile-BMBXUqqh.mjs";import{a as p,c as m,d as h,f as g,i as _,l as v,n as y,o as b,p as x,r as S,s as C,t as w,u as T}from"../../account-identity-C7Kx_ieU.mjs";import{A as E,B as D,C as O,D as k,E as A,F as j,G as M,H as N,I as P,J as F,K as I,L,M as R,N as z,O as B,P as V,R as H,S as U,T as W,U as G,V as K,W as q,_ as J,a as Y,b as X,c as Z,d as Q,f as $,g as ee,h as te,i as ne,j as re,k as ie,l as ae,m as oe,n as se,o as ce,p as le,q as ue,r as de,s as fe,t as pe,u as me,v as he,w as ge,x as _e,y as ve,z as ye}from"../../client-l1Rq5p6X.mjs";export{Y as CLIENT_SESSION_START_MODES,w as ClientAccountIdentifierSchema,y as ClientAccountObserveSchema,P as ClientBinaryCompatibilitySchema,_e as ClientBinaryListEntrySchema,d as ClientConfigPrimePhaseSchema,o as ClientConfigPrimeSchema,L as ClientDefinitionSchema,V as ClientExecutionContextSchema,H as ClientHookEventDeclarationSchema,S as ClientIdentifierStrengthSchema,_ as ClientIdentityObservationSchema,U as ClientInstallCompletedSchema,O as ClientInstallProgressSchema,ge as ClientInstallSchema,W as ClientListSchema,p as ClientMetadataSchema,se as ClientNamespace,l as ClientProfileNameSchema,i as ClientProfileSchema,e as ClientProfileSchemas,j as ClientResolveBinarySchema,ye as ClientRuntimeCapabilitiesSchema,te as ClientRuntimeEvidenceBaseSchema,ee as ClientRuntimeIsAdapterManagedSchema,J as ClientRuntimeObserveSchema,he as ClientRuntimeSourceLayerSchema,ve as ClientRuntimeSourceSchema,X as ClientRuntimeStartedSchema,b as ClientScanResultSchema,C as ClientScanTargetSchema,ne as ClientSchemas,m as ClientSessionAccountObserveSchema,s as ClientSessionConfigSchemas,v as ClientSessionLocatorSchema,ce as ClientSessionObservedBaseSchema,fe as ClientSessionStartModeSchema,Z as ClientSessionStartedSchema,ae as ClientSessionToolPostSchema,me as ClientSessionToolPreSchema,Q as ClientSessionTurnCompletedSchema,$ as ClientSessionTurnStartedSchema,le as ClientSessionUserPromptSubmittedSchema,A as ClientSetActiveSchema,de as ClientSubjects,D as ClientToolCapabilityAnnotationSchema,K as ClientToolDefinitionSchema,k as ClientUninstallSchema,B as ClientUpdateSchema,T as ClientUsageIngestSchema,h as ClientUsageSnapshotSchema,g as ClientUsageWindowSchema,x as ClientUsageWindowsSchema,ie as ClientVersionChangedSchema,oe as ClientWiringEntrySchema,N as ConfigIsolationSchema,E as InstallErrorSchema,re as InstallStageSchema,R as InstalledVersionEntrySchema,G as LogSourceDefinitionSchema,q as ManagedInstallDescriptorSchema,z as ManagedInstallStrategySchema,M as NpmInstallDescriptorSchema,I as PostInstallDescriptorSchema,u as SessionConfigEnvSchema,t as SessionConfigIdSchema,a as SessionConfigInheritanceSchema,f as SessionConfigSetupRequestSchema,n as SessionConfigSetupResponseSchema,r as SessionConfigTeardownRequestSchema,c as SessionConfigTeardownResponseSchema,ue as SignedBinaryBucketInstallDescriptorSchema,F as VersionCommandSchema,pe as createClientDefinition};
|
|
@@ -156,9 +156,9 @@ declare const ProviderConfigSchema: z.ZodObject<{
|
|
|
156
156
|
"show-all": "show-all";
|
|
157
157
|
}>>;
|
|
158
158
|
modelVisibility: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodEnum<{
|
|
159
|
-
disabled: "disabled";
|
|
160
|
-
enabled: "enabled";
|
|
161
159
|
visible: "visible";
|
|
160
|
+
enabled: "enabled";
|
|
161
|
+
disabled: "disabled";
|
|
162
162
|
}>>>;
|
|
163
163
|
isDefault: z.ZodDefault<z.ZodBoolean>;
|
|
164
164
|
enabled: z.ZodDefault<z.ZodBoolean>;
|
|
@@ -248,9 +248,9 @@ declare const BaseAdapterConfigSchema: z.ZodObject<{
|
|
|
248
248
|
"show-all": "show-all";
|
|
249
249
|
}>>;
|
|
250
250
|
modelVisibility: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodEnum<{
|
|
251
|
-
disabled: "disabled";
|
|
252
|
-
enabled: "enabled";
|
|
253
251
|
visible: "visible";
|
|
252
|
+
enabled: "enabled";
|
|
253
|
+
disabled: "disabled";
|
|
254
254
|
}>>>;
|
|
255
255
|
isDefault: z.ZodDefault<z.ZodBoolean>;
|
|
256
256
|
enabled: z.ZodDefault<z.ZodBoolean>;
|
|
@@ -284,9 +284,9 @@ declare const ProviderConfigFileSchema: z.ZodObject<{
|
|
|
284
284
|
"show-all": "show-all";
|
|
285
285
|
}>>;
|
|
286
286
|
modelVisibility: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodEnum<{
|
|
287
|
-
disabled: "disabled";
|
|
288
|
-
enabled: "enabled";
|
|
289
287
|
visible: "visible";
|
|
288
|
+
enabled: "enabled";
|
|
289
|
+
disabled: "disabled";
|
|
290
290
|
}>>>;
|
|
291
291
|
isDefault: z.ZodOptional<z.ZodBoolean>;
|
|
292
292
|
enabled: z.ZodOptional<z.ZodBoolean>;
|
|
@@ -396,9 +396,9 @@ declare const AdaptersFileProviderSchema: z.ZodObject<{
|
|
|
396
396
|
"show-all": "show-all";
|
|
397
397
|
}>>;
|
|
398
398
|
modelVisibility: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodEnum<{
|
|
399
|
-
disabled: "disabled";
|
|
400
|
-
enabled: "enabled";
|
|
401
399
|
visible: "visible";
|
|
400
|
+
enabled: "enabled";
|
|
401
|
+
disabled: "disabled";
|
|
402
402
|
}>>>;
|
|
403
403
|
}, z.core.$strip>;
|
|
404
404
|
/**
|
|
@@ -417,9 +417,9 @@ declare const AdaptersFileAdapterSchema: z.ZodObject<{
|
|
|
417
417
|
"show-all": "show-all";
|
|
418
418
|
}>>;
|
|
419
419
|
modelVisibility: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodEnum<{
|
|
420
|
-
disabled: "disabled";
|
|
421
|
-
enabled: "enabled";
|
|
422
420
|
visible: "visible";
|
|
421
|
+
enabled: "enabled";
|
|
422
|
+
disabled: "disabled";
|
|
423
423
|
}>>>;
|
|
424
424
|
}, z.core.$strip>>;
|
|
425
425
|
}, z.core.$strip>;
|
|
@@ -441,9 +441,9 @@ declare const AdaptersFileSchema: z.ZodObject<{
|
|
|
441
441
|
"show-all": "show-all";
|
|
442
442
|
}>>;
|
|
443
443
|
modelVisibility: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodEnum<{
|
|
444
|
-
disabled: "disabled";
|
|
445
|
-
enabled: "enabled";
|
|
446
444
|
visible: "visible";
|
|
445
|
+
enabled: "enabled";
|
|
446
|
+
disabled: "disabled";
|
|
447
447
|
}>>>;
|
|
448
448
|
}, z.core.$strip>>;
|
|
449
449
|
}, z.core.$strip>>;
|