@kelceyp/caw-server 0.0.19 → 0.0.21

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/main.js CHANGED
@@ -458,7 +458,7 @@ globstar while`,$,X,K,w,T),this.matchOne($.slice(X),K.slice(w),q))return this.de
458
458
  CREATE UNIQUE INDEX entities_name_unique
459
459
  ON entities(store_id, parent_folder_id, name)
460
460
  WHERE deleted_at IS NULL AND name IS NOT NULL
461
- `.execute($),await $.schema.createIndex("entities_store_id_idx").on("entities").columns(["store_id"]).execute(),await $.schema.createIndex("entities_parent_folder_id_idx").on("entities").columns(["parent_folder_id"]).execute(),await $.schema.createTable("folders").addColumn("entity_id","integer",(K)=>K.primaryKey().references("entities.id").onDelete("cascade")).execute(),await $.schema.createTable("documents").addColumn("entity_id","integer",(K)=>K.primaryKey().references("entities.id").onDelete("cascade")).addColumn("published_version_id","integer",(K)=>K.references("document_versions.id")).execute(),await $.schema.createTable("document_drafts").addColumn("entity_id","integer",(K)=>K.primaryKey().references("entities.id").onDelete("cascade")).addColumn("content","text").addColumn("updated_at","text",(K)=>K.notNull()).execute(),await $.schema.createTable("document_versions").addColumn("id","integer",(K)=>K.primaryKey().autoIncrement()).addColumn("entity_id","integer",(K)=>K.notNull().references("entities.id").onDelete("cascade")).addColumn("version_number","integer",(K)=>K.notNull()).addColumn("content","text").addColumn("published_at","text",(K)=>K.notNull()).execute(),await $.schema.createIndex("document_versions_entity_version_unique").on("document_versions").columns(["entity_id","version_number"]).unique().execute(),await $.schema.createIndex("document_versions_entity_id_idx").on("document_versions").columns(["entity_id"]).execute(),await $.schema.createTable("document_edit_state").addColumn("entity_id","integer",(K)=>K.primaryKey().references("entities.id").onDelete("cascade")).addColumn("client_id","text",(K)=>K.notNull()).addColumn("started_at","text",(K)=>K.notNull()).addColumn("last_activity_at","text",(K)=>K.notNull()).execute(),await $.schema.createTable("field_definitions").addColumn("id","integer",(K)=>K.primaryKey().autoIncrement()).addColumn("store_id","integer",(K)=>K.notNull().references("stores.id").onDelete("cascade")).addColumn("object_id","text",(K)=>K.notNull()).addColumn("entity_type_id","integer",(K)=>K.notNull().references("entity_types.id")).addColumn("type_code","text",(K)=>K.notNull()).addColumn("seq","integer",(K)=>K.notNull()).addColumn("owner_entity_id","integer",(K)=>K.references("entities.id").onDelete("cascade")).addColumn("name","text",(K)=>K.notNull()).addColumn("label","text").addColumn("description","text").addColumn("primitive_type","text",(K)=>K.notNull()).addColumn("required","integer",(K)=>K.notNull().defaultTo(0)).addColumn("multiplicity","text",(K)=>K.notNull().defaultTo("single")).addColumn("config","text").addColumn("is_system","integer",(K)=>K.notNull().defaultTo(0)).addColumn("ordinal","integer").addColumn("created_at","text",(K)=>K.notNull()).addColumn("updated_at","text",(K)=>K.notNull()).execute(),await $.schema.createIndex("idx_field_def_object_id_unique").on("field_definitions").columns(["store_id","object_id"]).unique().execute(),await $.schema.createIndex("idx_field_def_store_type_seq").on("field_definitions").columns(["store_id","type_code","seq"]).unique().execute(),await $.schema.createIndex("idx_field_def_owner").on("field_definitions").columns(["owner_entity_id"]).execute(),await $.schema.createIndex("idx_field_def_owner_name").on("field_definitions").columns(["owner_entity_id","name"]).execute(),await $.schema.createTable("field_values").addColumn("id","integer",(K)=>K.primaryKey().autoIncrement()).addColumn("entity_id","integer",(K)=>K.notNull().references("entities.id").onDelete("cascade")).addColumn("field_definition_id","integer",(K)=>K.notNull().references("field_definitions.id").onDelete("cascade")).addColumn("value","text").addColumn("ordinal","integer").addColumn("updated_at","text",(K)=>K.notNull()).execute(),await $.schema.createIndex("idx_field_values_entity").on("field_values").columns(["entity_id"]).execute(),await $.schema.createIndex("idx_field_values_entity_def").on("field_values").columns(["entity_id","field_definition_id"]).execute()};var n46=()=>new Date().toISOString(),M1=n46;var o46=[{code:"f",name:"Folder",subtype:null},{code:"f",name:"Document Root Folder",subtype:"root_d"},{code:"f",name:"Template Root Folder",subtype:"root_t"},{code:"d",name:"Document",subtype:null},{code:"t",name:"Template",subtype:null},{code:"n",name:"field_definition",subtype:null}],Ue=async($)=>{return(await $.selectFrom("entity_types").select("id").limit(1).execute()).length>0},a46=async($,K,q=null)=>{return(await $.selectFrom("entity_types").select("id").where("code","=",K).where((z)=>q?z("subtype","=",q):z("subtype","is",null)).executeTakeFirstOrThrow()).id},Be=async($,K,q,Y)=>{let z=M1(),P=await a46($,"f",Y==="d"?"root_d":"root_t");if(!await $.selectFrom("sequences").select("next_value").where("scope_type","=","store").where("scope_id","=",K).where("type_code","=","f").executeTakeFirst())await $.insertInto("sequences").values({scope_type:"store",scope_id:K,type_code:"f",next_value:1}).execute();let H=await $.selectFrom("sequences").select("next_value").where("scope_type","=","store").where("scope_id","=",K).where("type_code","=","f").executeTakeFirst();await $.updateTable("sequences").set((w)=>({next_value:w("next_value","+",1)})).where("scope_type","=","store").where("scope_id","=",K).where("type_code","=","f").execute();let Z=`${q}f${H.next_value}`,O=await $.insertInto("entities").values({store_id:K,object_id:Z,entity_type_id:P,type_code:"f",seq:H.next_value,parent_folder_id:null,parent_object_id:null,name:null,created_at:z,updated_at:z}).returning("id").executeTakeFirstOrThrow();await $.insertInto("folders").values({entity_id:O.id}).execute();let X=Y==="d"?"document":"template";return O.id},r46=async($)=>{for(let K of o46)await $.insertInto("entity_types").values(K).execute()},s46=async($)=>{let K=await $.selectFrom("sequences").select("next_value").where("scope_type","=","global").where("scope_id","is",null).where("type_code","=","s").executeTakeFirstOrThrow();await $.updateTable("sequences").set((J)=>({next_value:J("next_value","+",1)})).where("scope_type","=","global").where("scope_id","is",null).where("type_code","=","s").execute();let q=`S${K.next_value}`,Y=M1(),z=await $.insertInto("stores").values({id:K.next_value,object_id:q,type:"local",code:"B",name:"Shared",created_at:Y,updated_at:Y}).returning("id").executeTakeFirstOrThrow();await Be($,z.id,"B","d"),await Be($,z.id,"B","t")},le=async($)=>{await r46($),await $.insertInto("sequences").values([{scope_type:"global",scope_id:null,type_code:"s",next_value:1},{scope_type:"global",scope_id:null,type_code:"p",next_value:1}]).execute(),await s46($)};var x0=H1(ie(),1),t46=($,K)=>{if($)throw new Error(K)},Qe=($,K)=>{if(x0.default.null($)||x0.default.undefined($))throw new Error(`${K} is required`)},e46=($,K)=>{if(Qe($,K),x0.default.empty($))throw new Error(`${K} cannot be empty`)},$36=($,K,...q)=>{if($)throw K(...q)},K36={condition:t46,nullish:Qe,empty:e46,factory:$36},r=K36;var UW6=typeof Bun!=="undefined",lW6=async($)=>{if(UW6){let{Database:K}=await import("bun:sqlite"),{BunSqliteDialect:q}=await Promise.resolve().then(() => H1(NJ8(),1)),Y=new K($);return Y.exec("PRAGMA journal_mode = WAL"),Y.exec("PRAGMA foreign_keys = ON"),new W5({dialect:new q({database:Y})})}else{let q=new(await import("better-sqlite3")).default($);return q.pragma("journal_mode = WAL"),q.pragma("foreign_keys = ON"),new W5({dialect:new kS({database:q})})}},FW6=($,K)=>{if(!pW6($)){if(!K)throw new Error(`Database file not found: ${$}`);cW6(BW6($),{recursive:!0})}},iW6=async($,K)=>{if(!await pe($)){if(!K)throw new Error("Database schema not found");await ce($)}},QW6=async($,K)=>{if(!await Ue($)){if(!K)throw new Error("Database seed data not found");await le($)}},dW6=($)=>{let{kyselyFactory:K=lW6}=$??{};return Object.freeze({getDb:async(Y,z)=>{if(r.nullish(Y,"databaseFilepath"),Y!==":memory:")FW6(Y,z);let J=await K(Y);return await iW6(J,z),await QW6(J,z),J}})},hJ8={create:dW6};var nW6=($)=>{let{id:K,name:q,createdAt:Y,updatedAt:z}=$,Z=Object.freeze({getObjectId:()=>K,getName:()=>q,getCreatedAt:()=>Y,getUpdatedAt:()=>z}),w=Object.freeze({setName:(T)=>{q=T},setUpdatedAt:(T)=>{z=T}});return{entityFns:Z,mutationFns:w}},w5=Object.freeze({create:nW6});var oW6=($)=>{let{id:K,name:q,path:Y,createdAt:z,updatedAt:J}=$,{entityFns:P,mutationFns:W}=w5.create({id:K,name:q,createdAt:z,updatedAt:J}),H=()=>Y,O=Object.freeze({...P,getPath:H,toJSON:()=>({objectId:P.getObjectId(),name:P.getName(),path:H(),createdAt:P.getCreatedAt(),updatedAt:P.getUpdatedAt()})}),w=Object.freeze({...W,setPath:(T)=>{Y=T}});return{entity:O,mutationApi:w}},CJ8=Object.freeze({create:oW6});var aW6=($,K,q)=>{return Object.freeze({getEntity:()=>$,getMutationApi:()=>K,getPk:()=>q})},T6=Object.freeze({create:aW6});var rW6=async($,K,q,Y)=>{if(!await $.selectFrom("sequences").select("next_value").where("scope_type","=",K).where("scope_id",q===null?"is":"=",q).where("type_code","=",Y).executeTakeFirst())await $.insertInto("sequences").values({scope_type:K,scope_id:q,type_code:Y,next_value:1}).execute();let J=await $.selectFrom("sequences").select("next_value").where("scope_type","=",K).where("scope_id",q===null?"is":"=",q).where("type_code","=",Y).executeTakeFirstOrThrow();return await $.updateTable("sequences").set((P)=>({next_value:P("next_value","+",1)})).where("scope_type","=",K).where("scope_id",q===null?"is":"=",q).where("type_code","=",Y).execute(),J.next_value},v9=Object.freeze({nextSeq:rW6});var sW6=($)=>$.object_id,RJ8=($)=>{if(!$||$.length<2||$[0]!=="P")return null;let K=parseInt($.slice(1),10);return isNaN(K)?null:K},_f=($)=>{let K=sW6($),q=$.id,{entity:Y,mutationApi:z}=CJ8.create({id:K,name:$.name,path:$.path,createdAt:$.created_at,updatedAt:$.updated_at});return{entity:Y,mutationApi:z,id:K,pk:q}},tW6=()=>{let $=new Map;return Object.freeze({createProject:async(P,W,{name:H,path:Z},O)=>{let X=M1(),w=await v9.nextSeq(P,"global",null,"p"),T=`P${w}`,G=await P.insertInto("projects").values({id:w,object_id:T,name:H,path:Z,created_at:X,updated_at:X}).returningAll().executeTakeFirstOrThrow(),{entity:v,mutationApi:f,id:V,pk:h}=_f(G);return O(()=>{$.set(V,T6.create(v,f,h))}),v},readProject:async(P,W,H)=>{let Z=$.get(H);if(Z)return Z.getEntity();let O=RJ8(H);if(O===null)return null;let X=await P.selectFrom("projects").selectAll().where("id","=",O).executeTakeFirst();if(!X)return null;let{entity:w,mutationApi:T,id:G,pk:v}=_f(X);return $.set(G,T6.create(w,T,v)),w},readProjectByObjectId:async(P,W,H)=>{let Z=$.get(H);if(Z)return Z.getEntity();let O=RJ8(H);if(O===null)return null;let X=await P.selectFrom("projects").selectAll().where("id","=",O).executeTakeFirst();if(!X)return null;let{entity:w,mutationApi:T,id:G,pk:v}=_f(X);return $.set(G,T6.create(w,T,v)),w},readProjectByPath:async(P,W,H)=>{let Z=await P.selectFrom("projects").selectAll().where("path","=",H).executeTakeFirst();if(!Z)return null;let{entity:O,mutationApi:X,id:w,pk:T}=_f(Z),G=$.get(w);if(G)return G.getEntity();return $.set(w,T6.create(O,X,T)),O},evictProject:(P)=>{$.delete(P)}})},DJ8=Object.freeze({create:tW6});var eW6=()=>{let $=new Map,K=new Map;return Object.freeze({get:(X)=>$.get(X),getByPk:(X)=>{let w=K.get(X);return w?$.get(w):void 0},has:(X)=>$.has(X),set:(X,w)=>{$.set(X,w),K.set(w.getPk(),X)},remove:(X)=>{let w=$.get(X);if(w)K.delete(w.getPk());$.delete(X)},getIdByPk:(X)=>K.get(X),setIdByPk:(X,w)=>K.set(X,w),clear:()=>{$.clear(),K.clear()},entries:()=>$.entries()})},Nw=Object.freeze({create:eW6});var bJ8=H1(C$(),1);var $H6=async($,K,q,Y=null)=>{return(await $.selectFrom("entity_types").select("id").where("code","=",q).where((J)=>Y?J("subtype","=",Y):J("subtype","is",null)).executeTakeFirstOrThrow()).id},$Y=Object.freeze({readEntityTypeId:$H6});var KH6=($)=>{let{id:K,name:q,parentId:Y,path:z,createdAt:J,updatedAt:P,publishedVersionNumber:W,hasDraft:H,draftContent:Z,publishedContent:O}=$,{entityFns:X,mutationFns:w}=w5.create({id:K,name:q,createdAt:J,updatedAt:P}),T=new Map,G=W??null,v=H??!1,f=Z??null,V=O??null,h=null,E8=Object.freeze({...X,getParentId:()=>Y,getPath:()=>z,getField:(S6)=>{return T.get(S6)},getFields:()=>{let S6={};for(let[R3,V8]of T.entries())S6[R3]=V8;return S6},getPublishedVersionNumber:()=>G,hasDraftContent:()=>v,getDraftContent:()=>f,getPublishedContent:()=>V,getEditState:()=>h,hasPublished:()=>G>0,isBeingEdited:()=>h!==null,getVersionCount:()=>G??0,getIsFolder:()=>!1}),l$=Object.freeze({...w,setParentId:(S6)=>{Y=S6},setPath:(S6)=>{z=S6},setField:(S6,R3)=>{T.set(S6,R3)},removeField:(S6)=>{T.delete(S6)},setPublishedVersionNumber:(S6)=>{G=S6},setHasDraft:(S6)=>{v=S6},setDraftContent:(S6)=>{f=S6},setPublishedContent:(S6)=>{V=S6},setEditState:(S6)=>{h=S6}});return{entityFns:E8,mutationFns:l$}},XW=Object.freeze({create:KH6});var SJ8=($)=>{let{entityFns:K,mutationFns:q}=XW.create($),Y=()=>K.getParentId()===null,z=()=>!0,P=Object.freeze({...K,isRoot:Y,getIsFolder:z,toJSON:()=>({id:K.getObjectId(),parentId:K.getParentId(),name:K.getName(),path:K.getPath(),createdAt:K.getCreatedAt(),updatedAt:K.getUpdatedAt(),isFolder:z(),isRoot:Y()})}),W=Object.freeze({...q});return{entity:P,mutationApi:W}},qH6=($,K,q,Y)=>{return SJ8({id:K,parentId:q,name:$.name,path:Y,createdAt:$.created_at,updatedAt:$.updated_at})},Qz=Object.freeze({create:SJ8,createFromRow:qH6});var EJ8=($)=>{let{entityFns:K,mutationFns:q}=XW.create($),Y=()=>"d",J=Object.freeze({...K,getTypeCode:Y,toJSON:()=>({id:K.getObjectId(),parentId:K.getParentId(),name:K.getName(),path:K.getPath(),publishedVersionNumber:K.getPublishedVersionNumber(),hasDraft:K.hasDraftContent(),draftContent:K.getDraftContent(),publishedContent:K.getPublishedContent(),editState:K.getEditState(),createdAt:K.getCreatedAt(),updatedAt:K.getUpdatedAt(),versionCount:K.getVersionCount(),isFolder:K.getIsFolder(),type:Y(),hasPublished:K.hasPublished(),isBeingEdited:K.isBeingEdited()})}),P=Object.freeze({...q});return{entity:J,mutationApi:P}},YH6=($,K,q,Y,z,J,P=null,W=null)=>{return EJ8({id:K,parentId:q,name:$.name,path:Y,publishedVersionNumber:z,hasDraft:J,draftContent:P,publishedContent:W,createdAt:$.created_at,updatedAt:$.updated_at})},wW=Object.freeze({create:EJ8,createFromRow:YH6});var LJ8=($)=>{let{entityFns:K,mutationFns:q}=XW.create($),Y=()=>"t",J=Object.freeze({...K,getTypeCode:Y,toJSON:()=>({id:K.getObjectId(),parentId:K.getParentId(),name:K.getName(),path:K.getPath(),publishedVersionNumber:K.getPublishedVersionNumber(),hasDraft:K.hasDraftContent(),draftContent:K.getDraftContent(),publishedContent:K.getPublishedContent(),editState:K.getEditState(),createdAt:K.getCreatedAt(),updatedAt:K.getUpdatedAt(),versionCount:K.getVersionCount(),isFolder:K.getIsFolder(),type:Y(),hasPublished:K.hasPublished(),isBeingEdited:K.isBeingEdited()})}),P=Object.freeze({...q});return{entity:J,mutationApi:P}},zH6=($,K,q,Y,z,J,P=null,W=null)=>{return LJ8({id:K,parentId:q,name:$.name,path:Y,publishedVersionNumber:z,hasDraft:J,draftContent:P,publishedContent:W,createdAt:$.created_at,updatedAt:$.updated_at})},TW=Object.freeze({create:LJ8,createFromRow:zH6});var JH6=($)=>{let{id:K,name:q,ownerEntityId:Y,label:z,description:J,primitiveType:P,required:W,multiplicity:H,isSystem:Z,createdAt:O,updatedAt:X}=$,{entityFns:w,mutationFns:T}=w5.create({id:K,name:q,createdAt:O,updatedAt:X}),G=()=>Y,v=()=>z,f=()=>J,V=()=>P,h=()=>W,A=()=>H,N=()=>Z,I=Object.freeze({...w,getOwnerEntityId:G,getLabel:v,getDescription:f,getPrimitiveType:V,getRequired:h,getMultiplicity:A,getIsSystem:N,toJSON:()=>({id:w.getObjectId(),ownerEntityId:G(),name:w.getName(),label:v(),description:f(),primitiveType:V(),required:h(),multiplicity:A(),isSystem:N(),createdAt:w.getCreatedAt(),updatedAt:w.getUpdatedAt()})}),D=Object.freeze({...T});return{entity:I,mutationApi:D}},Tx=Object.freeze({create:JH6});var PH6=({definition:$,values:K=[]})=>{let q=$,Y=[...K];if(q.getMultiplicity()==="single"&&Y.length>1)throw new Error(`Field "${q.getName()}" is single-valued but received ${Y.length} values`);let z=(T=0)=>{return Y[T]},J=()=>{return[...Y]},P=()=>{return q},W=()=>{return q.getMultiplicity()==="multi"};return Object.freeze({getValue:z,getValues:J,getDefinition:P,isMultiValued:W,isRequired:()=>{return q.getRequired()},getType:()=>{return q.getPrimitiveType()},getLabel:()=>{return q.getLabel()||q.getName()},getName:()=>{return q.getName()},toJSON:()=>{if(W())return Y;else return Y[0]}})},jx=Object.freeze({create:PH6});var hw=($,K)=>{let q=new Error($);return q.code=K,q.isDomainError=!0,q},WH6=($,K="NOT_FOUND")=>hw($,K),HH6=($,K="CONFLICT")=>hw($,K),ZH6=($,K="VALIDATION_ERROR")=>hw($,K),OH6=($,K="UNAUTHORIZED")=>hw($,K),n=Object.freeze({create:hw,notFound:WH6,conflict:HH6,validation:ZH6,unauthorized:OH6});var XH6=($)=>{let K=$.trim();r.factory(!K,n.validation,"Folder name cannot be empty","EMPTY_NAME"),r.factory(K.length>255,n.validation,"Folder name cannot exceed 255 characters","NAME_TOO_LONG");let q=/[/\\:*?"<>|]/;return r.factory(q.test(K),n.validation,'Folder name contains invalid characters: /\\:*?"<>|',"INVALID_CHARS"),K},wH6=($)=>{return $.getParentId()===null},fK=Object.freeze({validateFolderName:XH6,isRootFolder:wH6});var TH6=($)=>{if(!$||$.length<3)return null;let K=$[0],q=$[1],Y=parseInt($.slice(2),10);if(isNaN(Y))return null;return{storeCode:K,typeCode:q,seq:Y}},jH6=($,K,q)=>`${$}${K}${q}`,vH6=($,K)=>{r.factory($!==K,n.validation,`Store code mismatch: expected ${K}, got ${$}`,"STORE_CODE_MISMATCH")},IJ8=Object.freeze({parseId:TH6,buildId:jH6,validateStoreCode:vH6});var{parseId:P1,buildId:ff,validateStoreCode:GH6}=IJ8,{validateFolderName:xJ8,isRootFolder:Zy1}=fK,Oy1=bJ8.default("caw:stores:db"),jW=3600000,_H6=({id:$,code:K,name:q,pk:Y,folderCache:z,createdAt:J,updatedAt:P})=>{let W=new Map,{entityFns:H,mutationFns:Z}=w5.create({id:$,name:q,createdAt:J,updatedAt:P}),O=()=>new Set([K]),X=()=>"local",w=()=>K,T=()=>Y,G=()=>({id:$,code:K,name:H.getName(),createdAt:H.getCreatedAt(),updatedAt:H.getUpdatedAt(),type:"local"}),v=(C)=>{GH6(C,K)},f=async(C,u)=>{if(!u)return null;if(z){let m=z.get(u);if(m)return m.getPk()}if(!P1(u))r.factory(!0,n.validation,`Invalid parent folder ID: ${u}`,"INVALID_ID");let b=await C.selectFrom("entities").select("id").where("store_id","=",Y).where("object_id","=",u).where("deleted_at","is",null).executeTakeFirst();return b?b.id:null},V=async(C,u)=>{let E=await C.selectFrom("entities").select(["name","parent_folder_id","parent_object_id","object_id"]).where("id","=",u).where("deleted_at","is",null).executeTakeFirst();r.factory(!E,n.notFound,`Entity not found for PK ${u}`,"ENTITY_NOT_FOUND");let b=E.object_id,m=z?z.get(b):null;if(m){let f8=m.getEntity();if(f8.getName()===E.name&&f8.getParentId()===E.parent_object_id)return f8.getPath()}if(E.name===null)return"";if(!E.parent_object_id)return E.name;let c=z?z.get(E.parent_object_id):null;if(c){let M8=c.getEntity().getPath();return M8?`${M8}/${E.name}`:E.name}let o=[E.name],P8=E.parent_folder_id;while(P8!==null){let f8=W.get(P8),M8=f8&&z?z.get(f8):null;if(M8){let $6=M8.getEntity().getPath();if($6){let E6=$6.split("/").filter((r1)=>r1);o.unshift(...E6)}break}let N8=await C.selectFrom("entities").select(["name","parent_folder_id"]).where("id","=",P8).where("deleted_at","is",null).executeTakeFirst();if(r.factory(!N8,n.notFound,`Folder not found for PK ${P8}`,"FOLDER_NOT_FOUND"),N8.name!==null)o.unshift(N8.name);P8=N8.parent_folder_id}return o.join("/")},h=async(C,u)=>{let E=[],b=[u];while(b.length>0){let m=b.shift(),c=await C.selectFrom("entities").select(["id","type_code"]).where("store_id","=",Y).where("parent_folder_id","=",m).where("deleted_at","is",null).execute();for(let o of c)if(E.push(o.id),o.type_code==="f")b.push(o.id)}return E},A=async(C,u,E,b)=>{let m=M1(),c=await $Y.readEntityTypeId(C,{},"f",b),o=await v9.nextSeq(C,"store",Y,"f"),P8=await f(C,u),f8=ff(K,"f",o),M8=await C.insertInto("entities").values({store_id:Y,object_id:f8,entity_type_id:c,type_code:"f",seq:o,parent_folder_id:P8,parent_object_id:u,name:E,created_at:m,updated_at:m}).returningAll().executeTakeFirstOrThrow();return await C.insertInto("folders").values({entity_id:M8.id}).execute(),{row:M8,id:f8}},N=(C)=>{let u=null;if(C.owner_entity_id!==null)u=W.get(C.owner_entity_id)??null;let{entity:E,mutationApi:b}=Tx.create({id:C.object_id,name:C.name,ownerEntityId:u,label:C.label,description:C.description,primitiveType:C.primitive_type,required:C.required===1,multiplicity:C.multiplicity,isSystem:C.is_system===1,createdAt:C.created_at,updatedAt:C.updated_at});return{entity:E,mutationApi:b,pk:C.id}},S=async(C,u)=>{let E=await C.selectFrom("field_values as fv").innerJoin("field_definitions as fd","fd.id","fv.field_definition_id").select(["fv.id as value_id","fv.value","fd.id as def_id","fd.object_id as def_object_id","fd.name as def_name","fd.label as def_label","fd.description as def_description","fd.primitive_type as def_primitive_type","fd.required as def_required","fd.multiplicity as def_multiplicity","fd.is_system as def_is_system","fd.owner_entity_id as def_owner_entity_id","fd.created_at as def_created_at","fd.updated_at as def_updated_at"]).where("fv.entity_id","=",u).execute(),b=new Map;for(let c of E){let o=c.def_id;if(!b.has(o))b.set(o,{definition:{id:c.def_object_id,name:c.def_name,label:c.def_label,description:c.def_description,primitiveType:c.def_primitive_type,required:c.def_required===1,multiplicity:c.def_multiplicity,isSystem:c.def_is_system===1,ownerEntityId:c.def_owner_entity_id?W.get(c.def_owner_entity_id):null,createdAt:c.def_created_at,updatedAt:c.def_updated_at},values:[]});b.get(o).values.push(c.value)}let m=[];for(let{definition:c,values:o}of b.values()){let{entity:P8}=Tx.create(c),f8=jx.create({definition:P8,values:o});m.push(f8)}return m},I=async(C,u)=>{let E=await C.selectFrom("field_definitions").selectAll().where("store_id","=",Y).where("seq","=",1).where("type_code","=","n").executeTakeFirst();if(!E)return null;if(E.owner_entity_id){let m=await C.selectFrom("entities").select("object_id").where("id","=",E.owner_entity_id).executeTakeFirst();if(m)W.set(E.owner_entity_id,m.object_id)}let b=`${K}n1`;return W.set(E.id,b),N(E)},D=async(C,u,{storeCode:E,parentId:b,name:m,subtype:c})=>{if(E!==void 0)v(E);if(m!==null&&m!==void 0)xJ8(m);let{row:o,id:P8}=await A(C,b,m,c||null),f8=o.id;W.set(f8,P8);let M8=await V(C,f8),{entity:N8,mutationApi:y8}=Qz.createFromRow(o,P8,b,M8);return{entity:N8,mutationApi:y8,pk:f8}},B=async(C,u,{id:E})=>{let b=P1(E);if(!b)return null;let m=await C.selectFrom("entities").innerJoin("folders","folders.entity_id","entities.id").selectAll("entities").where("entities.store_id","=",Y).where("entities.seq","=",b.seq).where("entities.type_code","=","f").where("entities.deleted_at","is",null).executeTakeFirst();if(!m)return null;let{id:c,parent_object_id:o}=m;W.set(c,E);let P8=await V(C,c),f8=await S(C,c),{entity:M8,mutationApi:N8}=Qz.createFromRow(m,E,o,P8);for(let y8 of f8)N8.setField(y8.getDefinition().getName(),y8);return{entity:M8,mutationApi:N8,pk:c}},g=async(C,u,{id:E,name:b,parentId:m})=>{let c=P1(E);r.factory(!c,n.validation,`Invalid folder ID: ${E}`,"INVALID_ID");let o=await C.selectFrom("entities").selectAll().where("store_id","=",Y).where("seq","=",c.seq).where("type_code","=","f").where("deleted_at","is",null).executeTakeFirst();r.factory(!o,n.notFound,`Folder not found: ${E}`,"FOLDER_NOT_FOUND");let P8=o.id,f8={name:o.name,parentId:o.parent_object_id,path:null};if(W.set(P8,E),f8.path=await V(C,P8),b!==void 0)xJ8(b);let M8={};if(b!==void 0)M8.name=b;if(m!==void 0){let W4=await f(C,m);M8.parent_folder_id=W4,M8.parent_object_id=m}M8.updated_at=M1();let N8=await C.updateTable("entities").set(M8).where("id","=",P8).returningAll().executeTakeFirstOrThrow(),y8=await V(C,P8),$6=await S(C,P8),{entity:E6,mutationApi:r1}=Qz.createFromRow(N8,E,N8.parent_object_id,y8);for(let W4 of $6)r1.setField(W4.getDefinition().getName(),W4);return{entity:E6,mutationApi:r1,pk:P8,oldValues:f8}},R=async(C,u,{id:E})=>{let b=P1(E);r.factory(!b,n.validation,`Invalid folder ID: ${E}`,"INVALID_ID");let m=await C.selectFrom("entities").selectAll().where("store_id","=",Y).where("seq","=",b.seq).where("type_code","=","f").where("deleted_at","is",null).executeTakeFirst();r.factory(!m,n.notFound,`Folder not found: ${E}`,"FOLDER_NOT_FOUND");let c=m.id;W.set(c,E);let o=await V(C,c),P8=await h(C,c),f8=M1();await C.updateTable("entities").set({deleted_at:f8}).where("id","in",[c,...P8]).execute();let M8=[];for(let N8 of P8){let y8=await C.selectFrom("entities").select("object_id").where("id","=",N8).executeTakeFirst();if(y8)M8.push(y8.object_id)}return{id:E,deleted:!0,descendantCount:P8.length,path:o,descendantIds:M8,deletedPks:[c,...P8]}},y=async(C,u,E,b,m=null)=>{let c=await f(C,E),o=C.selectFrom("entities").select("object_id").where("store_id","=",Y).where("parent_folder_id",c===null?"is":"=",c).where("name","=",b).where("deleted_at","is",null);if(m)o=o.where("object_id","!=",m);return!!await o.executeTakeFirst()},t=async(C,u,E,b)=>{let m=await f(C,E),c=await C.selectFrom("entities").innerJoin("folders","folders.entity_id","entities.id").selectAll("entities").where("entities.store_id","=",Y).where("entities.parent_folder_id",m===null?"is":"=",m).where("entities.name","=",b).where("entities.deleted_at","is",null).executeTakeFirst();if(!c)return null;let{id:o,object_id:P8}=c;W.set(o,P8);let f8=await V(C,o),M8=await S(C,o),{entity:N8,mutationApi:y8}=Qz.createFromRow(c,P8,E,f8);for(let $6 of M8)y8.setField($6.getDefinition().getName(),$6);return{entity:N8,mutationApi:y8,pk:o}},K8=async(C,u,{folderId:E,type:b})=>{let m;if(E){if(m=await f(C,E),m===null)return[]}else if(b){let f8=await I8(C,u,b);if(!f8)return[];m=f8.pk}else m=null;let c=C.selectFrom("entities").selectAll().where("store_id","=",Y).where("parent_folder_id",m===null?"is":"=",m).where("deleted_at","is",null);if(b)c=c.where("type_code","=","f").innerJoin("folders","folders.entity_id","entities.id");let o=await c.execute(),P8=[];for(let f8 of o){let{id:M8,object_id:N8}=f8;W.set(M8,N8);let y8=await V(C,M8),$6=await S(C,M8),{entity:E6,mutationApi:r1}=Qz.createFromRow(f8,N8,f8.parent_object_id,y8);for(let W4 of $6)r1.setField(W4.getDefinition().getName(),W4);P8.push({entity:E6,mutationApi:r1,pk:M8})}return P8},R8=async(C,u,{path:E,type:b})=>{let m=(E??"").trim(),c=await C.selectFrom("entities").selectAll().where("store_id","=",Y).where("type_code","=","f").where("deleted_at","is",null).execute();for(let o of c){let P8=await B(C,u,{id:o.object_id});if(P8&&P8.entity.getPath()===m)return P8}return null},I8=async(C,u,E,b)=>{if(b!==void 0)v(b);let m=E==="d"?"root_d":"root_t",c=await $Y.readEntityTypeId(C,u,"f",m),o=await C.selectFrom("entities").innerJoin("folders","folders.entity_id","entities.id").selectAll("entities").where("entities.store_id","=",Y).where("entities.entity_type_id","=",c).where("entities.deleted_at","is",null).executeTakeFirst();if(!o)return null;let{id:P8,object_id:f8}=o;W.set(P8,f8);let M8=await V(C,P8),N8=await S(C,P8),{entity:y8,mutationApi:$6}=Qz.createFromRow(o,f8,o.parent_object_id,M8);for(let E6 of N8)$6.setField(E6.getDefinition().getName(),E6);return{entity:y8,mutationApi:$6,pk:P8}},E8=async(C,u,{storeCode:E,ownerEntityId:b,name:m,label:c,description:o,primitiveType:P8,required:f8,multiplicity:M8,isSystem:N8=!1})=>{if(E!==void 0)v(E);r.factory(P8!=="string"&&P8!=="object_ref",n.validation,`Invalid primitiveType: ${P8}`,"INVALID_PRIMITIVE_TYPE"),r.factory(M8!=="single"&&M8!=="multi",n.validation,`Invalid multiplicity: ${M8}`,"INVALID_MULTIPLICITY");let y8=M1(),$6=await $Y.readEntityTypeId(C,u,"n",null),E6=await v9.nextSeq(C,"store",Y,"n"),r1=ff(K,"n",E6),W4=b?await f(C,b):null,S3=await C.insertInto("field_definitions").values({store_id:Y,object_id:r1,entity_type_id:$6,type_code:"n",seq:E6,owner_entity_id:W4,name:m,label:c,description:o,primitive_type:P8,required:f8?1:0,multiplicity:M8,is_system:N8?1:0,created_at:y8,updated_at:y8}).returningAll().executeTakeFirstOrThrow(),H4=S3.id;return W.set(H4,r1),N(S3)},t8=async(C,u,{id:E})=>{let b=P1(E);if(!b)return null;let m=await C.selectFrom("field_definitions").selectAll().where("store_id","=",Y).where("seq","=",b.seq).where("type_code","=","n").executeTakeFirst();if(!m)return null;if(m.owner_entity_id){let c=await C.selectFrom("entities").select("object_id").where("id","=",m.owner_entity_id).executeTakeFirst();if(c)W.set(m.owner_entity_id,c.object_id)}return W.set(m.id,E),N(m)},g8=async(C,u,E,b)=>{let m=await C.selectFrom("field_definitions").selectAll().where("store_id","=",Y).where("name","=",E).where("owner_entity_id",b===null?"is":"=",b).executeTakeFirst();if(!m)return null;if(m.owner_entity_id){let c=await C.selectFrom("entities").select("object_id").where("id","=",m.owner_entity_id).executeTakeFirst();if(c)W.set(m.owner_entity_id,c.object_id)}return W.set(m.id,m.object_id),N(m)},m8=async(C,u,{fieldDefinitionId:E,fieldName:b,ownerEntityPk:m})=>{if(E){let o=await t8(C,u,{id:E});if(o)return o}if(b&&m){let o=await g8(C,u,b,m);if(o)return o}if(b){let o=await g8(C,u,b,null);if(o)return o}let c=await I(C);return r.factory(!c,n.notFound,"No field definition found and no default available","NO_FIELD_DEFINITION"),c},V6=async(C,u,{ownerEntityPk:E,includeSystem:b=!0})=>{let m=C.selectFrom("field_definitions").selectAll().where("store_id","=",Y).where("owner_entity_id",E===null?"is":"=",E);if(!b)m=m.where("is_system","=",0);let c=await m.execute(),o=[];for(let P8 of c){if(P8.owner_entity_id){let f8=await C.selectFrom("entities").select("object_id").where("id","=",P8.owner_entity_id).executeTakeFirst();if(f8)W.set(P8.owner_entity_id,f8.object_id)}W.set(P8.id,P8.object_id),o.push(N(P8))}return o},C3=async(C,u,{id:E})=>{let b=P1(E);r.factory(!b,n.validation,`Invalid definition ID: ${E}`,"INVALID_ID");let m=await C.selectFrom("field_definitions").selectAll().where("store_id","=",Y).where("seq","=",b.seq).where("type_code","=","n").executeTakeFirst();r.factory(!m,n.notFound,`Field definition not found: ${E}`,"DEFINITION_NOT_FOUND"),r.factory(m.is_system===1,n.validation,`Cannot delete system field definition: ${E}`,"SYSTEM_DEFINITION");let c=m.id;if(await C.deleteFrom("field_definitions").where("id","=",c).execute(),m.owner_entity_id){let P8=await C.selectFrom("entities").select("object_id").where("id","=",m.owner_entity_id).executeTakeFirst();if(P8)W.set(m.owner_entity_id,P8.object_id)}let{entity:o}=N(m);return o},P3=async(C,u,{entityId:E,fieldDefinitionId:b,fieldName:m,value:c,values:o})=>{let P8=P1(E);r.factory(!P8,n.validation,`Invalid entity ID: ${E}`,"INVALID_ID");let f8=await C.selectFrom("entities").select("id").where("store_id","=",Y).where("seq","=",P8.seq).where("type_code","=",P8.typeCode).where("deleted_at","is",null).executeTakeFirst();r.factory(!f8,n.notFound,`Entity not found: ${E}`,"ENTITY_NOT_FOUND");let M8=f8.id,{entity:N8,pk:y8}=await m8(C,u,{fieldDefinitionId:b,fieldName:m,ownerEntityPk:M8}),$6=N8.getMultiplicity(),E6;if($6==="single")if(o&&Array.isArray(o))r.factory(o.length>1||o.length===0,n.validation,`Field '${N8.getName()}' is single-valued but received ${o.length} values`,"MULTIPLICITY_VIOLATION"),E6=[o[0]];else r.factory(c===void 0,n.validation,"Single-valued field requires value parameter","VALUE_REQUIRED"),E6=[c];else if(o&&Array.isArray(o))E6=o;else if(c!==void 0)E6=[c];else r.factory(!0,n.validation,"Multi-valued field requires either value or values parameter","VALUE_OR_VALUES_REQUIRED");await C.deleteFrom("field_values").where("entity_id","=",M8).where("field_definition_id","=",y8).execute();let r1=M1();for(let qC of E6)await C.insertInto("field_values").values({entity_id:M8,field_definition_id:y8,value:qC,updated_at:r1}).execute();let W4=E6,S3=jx.create({definition:N8,values:W4}),H4;if(P8.typeCode==="f")H4=await B(C,u,{id:E});else if(P8.typeCode==="d")H4=await $1(C,u,{id:E});else if(P8.typeCode==="t")H4=await d4(C,u,{id:E});return r.factory(!H4,n.notFound,`Entity not found after field update: ${E}`,"ENTITY_NOT_FOUND"),{...H4,field:S3,fieldName:N8.getName()}},E4=async(C,u,{entityId:E,fieldDefinitionId:b,fieldName:m})=>{let c=P1(E);r.factory(!c,n.validation,`Invalid entity ID: ${E}`,"INVALID_ID");let o=await C.selectFrom("entities").select("id").where("store_id","=",Y).where("seq","=",c.seq).where("type_code","=",c.typeCode).where("deleted_at","is",null).executeTakeFirst();r.factory(!o,n.notFound,`Entity not found: ${E}`,"ENTITY_NOT_FOUND");let P8=o.id,{entity:f8,pk:M8}=await m8(C,u,{fieldDefinitionId:b,fieldName:m,ownerEntityPk:P8});await C.deleteFrom("field_values").where("entity_id","=",P8).where("field_definition_id","=",M8).execute();let N8;if(c.typeCode==="f")N8=await B(C,u,{id:E});else if(c.typeCode==="d")N8=await $1(C,u,{id:E});else if(c.typeCode==="t")N8=await d4(C,u,{id:E});return r.factory(!N8,n.notFound,`Entity not found after field delete: ${E}`,"ENTITY_NOT_FOUND"),{...N8,fieldName:f8.getName()}},a3=async(C,u,{storeCode:E,parentId:b,name:m,initialContent:c})=>{if(E!==void 0)v(E);let o=M1(),P8=await $Y.readEntityTypeId(C,u,"d",null),f8=await v9.nextSeq(C,"store",Y,"d"),M8=ff(K,"d",f8),N8=await f(C,b),y8=await C.insertInto("entities").values({store_id:Y,object_id:M8,entity_type_id:P8,type_code:"d",seq:f8,parent_folder_id:N8,parent_object_id:b,name:m,created_at:o,updated_at:o}).returningAll().executeTakeFirstOrThrow();await C.insertInto("documents").values({entity_id:y8.id,published_version_id:null}).execute();let $6=c!==null&&c!==void 0;if($6)await C.insertInto("document_drafts").values({entity_id:y8.id,content:c,updated_at:o}).execute();let E6=y8.id;W.set(E6,M8);let r1=await V(C,E6),{entity:W4,mutationApi:S3}=wW.createFromRow(y8,M8,b,r1,null,$6,$6?c:null,null);return{entity:W4,mutationApi:S3,pk:E6}},$1=async(C,u,{id:E})=>{let b=P1(E);if(!b)return null;let m=await C.selectFrom("entities as e").innerJoin("documents as d","d.entity_id","e.id").leftJoin("document_versions as dv","dv.id","d.published_version_id").leftJoin("document_drafts as dd","dd.entity_id","e.id").leftJoin("document_edit_state as es","es.entity_id","e.id").select(["e.id as entity_id","e.object_id","e.parent_folder_id","e.parent_object_id","e.name","e.created_at","e.updated_at","e.deleted_at","dv.version_number as published_version_number","dv.content as published_content","dd.content as draft_content",Z3.raw("CASE WHEN dd.entity_id IS NOT NULL THEN 1 ELSE 0 END").as("has_draft"),"es.client_id as edit_client_id","es.started_at as edit_started_at","es.last_activity_at as edit_activity"]).where("e.store_id","=",Y).where("e.type_code","=","d").where("e.seq","=",b.seq).where("e.deleted_at","is",null).executeTakeFirst();if(!m)return null;let c=m.entity_id;W.set(c,E);let o=await V(C,c),P8=await S(C,c),{entity:f8,mutationApi:M8}=wW.createFromRow(m,m.object_id,m.parent_object_id,o,m.published_version_number,m.has_draft===1,m.draft_content??null,m.published_content??null);for(let N8 of P8)M8.setField(N8.getDefinition().getName(),N8);if(m.edit_client_id)M8.setEditState({clientId:m.edit_client_id,startedAt:m.edit_started_at,lastActivityAt:m.edit_activity});return{entity:f8,mutationApi:M8,pk:c}},l$=async(C,u,{id:E,name:b,parentId:m})=>{let c=P1(E);r.factory(!c,n.validation,`Invalid document ID: ${E}`,"INVALID_ID");let o=await C.selectFrom("entities").selectAll().where("store_id","=",Y).where("seq","=",c.seq).where("type_code","=","d").where("deleted_at","is",null).executeTakeFirst();r.factory(!o,n.notFound,`Document not found: ${E}`,"DOCUMENT_NOT_FOUND");let P8=o.id,f8={name:o.name,parentId:o.parent_object_id,path:null};W.set(P8,E),f8.path=await V(C,P8);let N8={updated_at:M1()};if(b!==void 0)N8.name=b;if(m!==void 0){let H4=await f(C,m);N8.parent_folder_id=H4,N8.parent_object_id=m}let y8=await C.updateTable("entities").set(N8).where("id","=",P8).returningAll().executeTakeFirstOrThrow(),$6=await C.selectFrom("documents as d").leftJoin("document_versions as dv","dv.id","d.published_version_id").leftJoin("document_drafts as dd","dd.entity_id","d.entity_id").select(["dv.version_number as published_version_number","dv.content as published_content","dd.content as draft_content",Z3.raw("CASE WHEN dd.entity_id IS NOT NULL THEN 1 ELSE 0 END").as("has_draft")]).where("d.entity_id","=",P8).executeTakeFirst(),E6=await V(C,P8),r1=await S(C,P8),{entity:W4,mutationApi:S3}=wW.createFromRow(y8,E,y8.parent_object_id,E6,$6.published_version_number,$6.has_draft===1,$6.draft_content??null,$6.published_content??null);for(let H4 of r1)S3.setField(H4.getDefinition().getName(),H4);return{entity:W4,mutationApi:S3,pk:P8,oldValues:f8}},S6=async(C,u,{id:E})=>{let b=P1(E);r.factory(!b,n.validation,`Invalid document ID: ${E}`,"INVALID_ID");let m=await C.selectFrom("entities").selectAll().where("store_id","=",Y).where("seq","=",b.seq).where("type_code","=","d").where("deleted_at","is",null).executeTakeFirst();r.factory(!m,n.notFound,`Document not found: ${E}`,"DOCUMENT_NOT_FOUND");let c=m.id;W.set(c,E);let o=await V(C,c),P8=M1();return await C.updateTable("entities").set({deleted_at:P8}).where("id","=",c).execute(),{id:E,deleted:!0,path:o}},R3=async(C,u,{id:E,content:b,clientId:m})=>{let c=P1(E);r.factory(!c,n.validation,`Invalid document ID: ${E}`,"INVALID_ID"),r.factory(!m,n.validation,"clientId is required","MISSING_CLIENT_ID");let o=M1(),P8=await C.selectFrom("entities").select("id").where("store_id","=",Y).where("type_code","=","d").where("seq","=",c.seq).where("deleted_at","is",null).executeTakeFirst();r.factory(!P8,n.notFound,`Document not found: ${E}`,"NOT_FOUND");let f8=P8.id;await C.insertInto("document_drafts").values({entity_id:f8,content:b,updated_at:o}).onConflict(($6)=>$6.column("entity_id").doUpdateSet({content:b,updated_at:o})).execute();let N8=!await P6(C,u,{id:E,clientId:m}),y8=await $1(C,u,{id:E});return r.factory(!y8,n.notFound,`Document not found after draft save: ${E}`,"DOCUMENT_NOT_FOUND"),{...y8,lockLost:N8}},V8=async(C,u,{id:E})=>{let b=P1(E);r.factory(!b,n.validation,`Invalid document ID: ${E}`,"INVALID_ID");let m=M1(),c=await C.selectFrom("entities as e").innerJoin("document_drafts as dd","dd.entity_id","e.id").select(["e.id as entity_id","dd.content"]).where("e.store_id","=",Y).where("e.type_code","=","d").where("e.seq","=",b.seq).where("e.deleted_at","is",null).executeTakeFirst();r.factory(!c,n.notFound,`No draft found for document: ${E}`,"DRAFT_NOT_FOUND");let o=c.entity_id,f8=((await C.selectFrom("document_versions").select(C.fn.max("version_number").as("max_version")).where("entity_id","=",o).executeTakeFirst())?.max_version||0)+1,M8=await C.insertInto("document_versions").values({entity_id:o,version_number:f8,content:c.content,published_at:m}).returningAll().executeTakeFirstOrThrow();await C.updateTable("documents").set({published_version_id:M8.id}).where("entity_id","=",o).execute(),await C.deleteFrom("document_drafts").where("entity_id","=",o).execute(),await C.deleteFrom("document_edit_state").where("entity_id","=",o).execute();let N8=await $1(C,u,{id:E});return r.factory(!N8,n.notFound,`Document not found after publish: ${E}`,"DOCUMENT_NOT_FOUND"),N8},A8=async(C,u,{id:E})=>{let b=P1(E);r.factory(!b,n.validation,`Invalid document ID: ${E}`,"INVALID_ID");let m=await C.selectFrom("entities").select("id").where("store_id","=",Y).where("type_code","=","d").where("seq","=",b.seq).where("deleted_at","is",null).executeTakeFirst();r.factory(!m,n.notFound,`Document not found: ${E}`,"NOT_FOUND"),await C.deleteFrom("document_drafts").where("entity_id","=",m.id).execute();let c=await $1(C,u,{id:E});return r.factory(!c,n.notFound,`Document not found after discard: ${E}`,"DOCUMENT_NOT_FOUND"),c},x8=async(C,u,{id:E})=>{let b=P1(E);if(!b)return null;let m=await C.selectFrom("entities as e").innerJoin("document_drafts as dd","dd.entity_id","e.id").select(["e.object_id","dd.content","dd.updated_at"]).where("e.store_id","=",Y).where("e.type_code","=","d").where("e.seq","=",b.seq).where("e.deleted_at","is",null).executeTakeFirst();if(!m)return null;return{entityId:m.object_id,content:m.content,updatedAt:m.updated_at}},u8=async(C,u,{id:E,versionNumber:b})=>{let m=P1(E);if(!m)return null;let c=await C.selectFrom("entities as e").innerJoin("document_versions as dv","dv.entity_id","e.id").select(["e.object_id","dv.version_number","dv.content","dv.published_at"]).where("e.store_id","=",Y).where("e.type_code","=","d").where("e.seq","=",m.seq).where("e.deleted_at","is",null).where("dv.version_number","=",b).executeTakeFirst();if(!c)return null;return{entityId:c.object_id,versionNumber:c.version_number,content:c.content,publishedAt:c.published_at}},J6=async(C,u,{id:E})=>{let b=P1(E);if(!b)return[];return(await C.selectFrom("entities as e").innerJoin("document_versions as dv","dv.entity_id","e.id").select(["dv.version_number","dv.published_at"]).where("e.store_id","=",Y).where("e.type_code","=","d").where("e.seq","=",b.seq).where("e.deleted_at","is",null).orderBy("dv.version_number","desc").execute()).map((c)=>({versionNumber:c.version_number,publishedAt:c.published_at}))},n6=async(C,u,E,b)=>{let m=await f(C,E),c=await C.selectFrom("entities as e").innerJoin("documents as d","d.entity_id","e.id").leftJoin("document_versions as dv","dv.id","d.published_version_id").leftJoin("document_drafts as dd","dd.entity_id","e.id").select(["e.id as entity_id","e.object_id","e.parent_folder_id","e.parent_object_id","e.name","e.created_at","e.updated_at","dv.version_number as published_version_number","dv.content as published_content","dd.content as draft_content",Z3.raw("CASE WHEN dd.entity_id IS NOT NULL THEN 1 ELSE 0 END").as("has_draft")]).where("e.store_id","=",Y).where("e.type_code","=","d").where("e.parent_folder_id",m===null?"is":"=",m).where("e.name","=",b).where("e.deleted_at","is",null).executeTakeFirst();if(!c)return null;let o=c.entity_id;W.set(o,c.object_id);let P8=await V(C,o),f8=await S(C,o),{entity:M8,mutationApi:N8}=wW.createFromRow(c,c.object_id,c.parent_object_id,P8,c.published_version_number,c.has_draft===1,c.draft_content??null,c.published_content??null);for(let y8 of f8)N8.setField(y8.getDefinition().getName(),y8);return{entity:M8,mutationApi:N8,pk:o}},N4=async(C,u,{parentId:E})=>{let b=await f(C,E),m=await C.selectFrom("entities as e").innerJoin("documents as d","d.entity_id","e.id").leftJoin("document_versions as dv","dv.id","d.published_version_id").leftJoin("document_drafts as dd","dd.entity_id","e.id").leftJoin("document_edit_state as es","es.entity_id","e.id").select(["e.id as entity_id","e.object_id","e.parent_folder_id","e.parent_object_id","e.name","e.created_at","e.updated_at","dv.version_number as published_version_number","dv.content as published_content","dd.content as draft_content",Z3.raw("CASE WHEN dd.entity_id IS NOT NULL THEN 1 ELSE 0 END").as("has_draft"),"es.client_id as edit_client_id","es.started_at as edit_started_at","es.last_activity_at as edit_activity"]).where("e.store_id","=",Y).where("e.type_code","=","d").where("e.parent_folder_id",b===null?"is":"=",b).where("e.deleted_at","is",null).execute(),c=[];for(let o of m){let P8=o.entity_id;W.set(P8,o.object_id);let f8=await V(C,P8),M8=await S(C,P8),{entity:N8,mutationApi:y8}=wW.createFromRow(o,o.object_id,o.parent_object_id,f8,o.published_version_number,o.has_draft===1,o.draft_content??null,o.published_content??null);for(let $6 of M8)y8.setField($6.getDefinition().getName(),$6);if(o.edit_client_id)y8.setEditState({clientId:o.edit_client_id,startedAt:o.edit_started_at,lastActivityAt:o.edit_activity});c.push({entity:N8,mutationApi:y8,pk:P8})}return c},D3=async(C,u,{storeCode:E,parentId:b,name:m,initialContent:c})=>{if(E!==void 0)v(E);let o=M1(),P8=await $Y.readEntityTypeId(C,u,"t",null),f8=await v9.nextSeq(C,"store",Y,"t"),M8=ff(K,"t",f8),N8=await f(C,b),y8=await C.insertInto("entities").values({store_id:Y,object_id:M8,entity_type_id:P8,type_code:"t",seq:f8,parent_folder_id:N8,parent_object_id:b,name:m,created_at:o,updated_at:o}).returningAll().executeTakeFirstOrThrow();await C.insertInto("documents").values({entity_id:y8.id,published_version_id:null}).execute();let $6=c!==null&&c!==void 0;if($6)await C.insertInto("document_drafts").values({entity_id:y8.id,content:c,updated_at:o}).execute();let E6=y8.id;W.set(E6,M8);let r1=await V(C,E6),{entity:W4,mutationApi:S3}=TW.createFromRow(y8,M8,b,r1,null,$6,$6?c:null,null);return{entity:W4,mutationApi:S3,pk:E6}},d4=async(C,u,{id:E})=>{let b=P1(E);if(!b)return null;let m=await C.selectFrom("entities as e").innerJoin("documents as d","d.entity_id","e.id").leftJoin("document_versions as dv","dv.id","d.published_version_id").leftJoin("document_drafts as dd","dd.entity_id","e.id").leftJoin("document_edit_state as es","es.entity_id","e.id").select(["e.id as entity_id","e.object_id","e.parent_folder_id","e.parent_object_id","e.name","e.created_at","e.updated_at","e.deleted_at","dv.version_number as published_version_number","dv.content as published_content","dd.content as draft_content",Z3.raw("CASE WHEN dd.entity_id IS NOT NULL THEN 1 ELSE 0 END").as("has_draft"),"es.client_id as edit_client_id","es.started_at as edit_started_at","es.last_activity_at as edit_activity"]).where("e.store_id","=",Y).where("e.type_code","=","t").where("e.seq","=",b.seq).where("e.deleted_at","is",null).executeTakeFirst();if(!m)return null;let c=m.entity_id;W.set(c,E);let o=await V(C,c),P8=await S(C,c),{entity:f8,mutationApi:M8}=TW.createFromRow(m,m.object_id,m.parent_object_id,o,m.published_version_number,m.has_draft===1,m.draft_content??null,m.published_content??null);for(let N8 of P8)M8.setField(N8.getDefinition().getName(),N8);if(m.edit_client_id)M8.setEditState({clientId:m.edit_client_id,startedAt:m.edit_started_at,lastActivityAt:m.edit_activity});return{entity:f8,mutationApi:M8,pk:c}},Z8=async(C,u,{id:E,name:b,parentId:m})=>{let c=P1(E);r.factory(!c,n.validation,`Invalid template ID: ${E}`,"INVALID_ID");let o=await C.selectFrom("entities").selectAll().where("store_id","=",Y).where("seq","=",c.seq).where("type_code","=","t").where("deleted_at","is",null).executeTakeFirst();r.factory(!o,n.notFound,`Template not found: ${E}`,"TEMPLATE_NOT_FOUND");let P8=o.id,f8={name:o.name,parentId:o.parent_object_id,path:null};W.set(P8,E),f8.path=await V(C,P8);let N8={updated_at:M1()};if(b!==void 0)N8.name=b;if(m!==void 0){let H4=await f(C,m);N8.parent_folder_id=H4,N8.parent_object_id=m}let y8=await C.updateTable("entities").set(N8).where("id","=",P8).returningAll().executeTakeFirstOrThrow(),$6=await C.selectFrom("documents as d").leftJoin("document_versions as dv","dv.id","d.published_version_id").leftJoin("document_drafts as dd","dd.entity_id","d.entity_id").select(["dv.version_number as published_version_number","dv.content as published_content","dd.content as draft_content",Z3.raw("CASE WHEN dd.entity_id IS NOT NULL THEN 1 ELSE 0 END").as("has_draft")]).where("d.entity_id","=",P8).executeTakeFirst(),E6=await V(C,P8),r1=await S(C,P8),{entity:W4,mutationApi:S3}=TW.createFromRow(y8,E,y8.parent_object_id,E6,$6.published_version_number,$6.has_draft===1,$6.draft_content??null,$6.published_content??null);for(let H4 of r1)S3.setField(H4.getDefinition().getName(),H4);return{entity:W4,mutationApi:S3,pk:P8,oldValues:f8}},X8=async(C,u,{id:E})=>{let b=P1(E);r.factory(!b,n.validation,`Invalid template ID: ${E}`,"INVALID_ID");let m=await C.selectFrom("entities").selectAll().where("store_id","=",Y).where("seq","=",b.seq).where("type_code","=","t").where("deleted_at","is",null).executeTakeFirst();r.factory(!m,n.notFound,`Template not found: ${E}`,"TEMPLATE_NOT_FOUND");let c=m.id;W.set(c,E);let o=await V(C,c),P8=M1();return await C.updateTable("entities").set({deleted_at:P8}).where("id","=",c).execute(),{id:E,deleted:!0,path:o}},U=async(C,u,{id:E,content:b,clientId:m})=>{let c=P1(E);r.factory(!c,n.validation,`Invalid template ID: ${E}`,"INVALID_ID"),r.factory(!m,n.validation,"clientId is required","MISSING_CLIENT_ID");let o=M1(),P8=await C.selectFrom("entities").select("id").where("store_id","=",Y).where("type_code","=","t").where("seq","=",c.seq).where("deleted_at","is",null).executeTakeFirst();r.factory(!P8,n.notFound,`Template not found: ${E}`,"NOT_FOUND");let f8=P8.id;await C.insertInto("document_drafts").values({entity_id:f8,content:b,updated_at:o}).onConflict(($6)=>$6.column("entity_id").doUpdateSet({content:b,updated_at:o})).execute();let N8=!await P6(C,u,{id:E,clientId:m}),y8=await d4(C,u,{id:E});return r.factory(!y8,n.notFound,`Template not found after draft save: ${E}`,"TEMPLATE_NOT_FOUND"),{...y8,lockLost:N8}},a=async(C,u,{id:E})=>{let b=P1(E);r.factory(!b,n.validation,`Invalid template ID: ${E}`,"INVALID_ID");let m=M1(),c=await C.selectFrom("entities as e").innerJoin("document_drafts as dd","dd.entity_id","e.id").select(["e.id as entity_id","dd.content"]).where("e.store_id","=",Y).where("e.type_code","=","t").where("e.seq","=",b.seq).where("e.deleted_at","is",null).executeTakeFirst();r.factory(!c,n.notFound,`No draft found for template: ${E}`,"DRAFT_NOT_FOUND");let o=c.entity_id,f8=((await C.selectFrom("document_versions").select(C.fn.max("version_number").as("max_version")).where("entity_id","=",o).executeTakeFirst())?.max_version||0)+1,M8=await C.insertInto("document_versions").values({entity_id:o,version_number:f8,content:c.content,published_at:m}).returningAll().executeTakeFirstOrThrow();await C.updateTable("documents").set({published_version_id:M8.id}).where("entity_id","=",o).execute(),await C.deleteFrom("document_drafts").where("entity_id","=",o).execute(),await C.deleteFrom("document_edit_state").where("entity_id","=",o).execute();let N8=await d4(C,u,{id:E});return r.factory(!N8,n.notFound,`Template not found after publish: ${E}`,"TEMPLATE_NOT_FOUND"),N8},i=async(C,u,{id:E})=>{let b=P1(E);r.factory(!b,n.validation,`Invalid template ID: ${E}`,"INVALID_ID");let m=await C.selectFrom("entities").select("id").where("store_id","=",Y).where("type_code","=","t").where("seq","=",b.seq).where("deleted_at","is",null).executeTakeFirst();r.factory(!m,n.notFound,`Template not found: ${E}`,"NOT_FOUND"),await C.deleteFrom("document_drafts").where("entity_id","=",m.id).execute();let c=await d4(C,u,{id:E});return r.factory(!c,n.notFound,`Template not found after discard: ${E}`,"TEMPLATE_NOT_FOUND"),c},W8=async(C,u,{id:E})=>{let b=P1(E);if(!b)return null;let m=await C.selectFrom("entities as e").innerJoin("document_drafts as dd","dd.entity_id","e.id").select(["e.object_id","dd.content","dd.updated_at"]).where("e.store_id","=",Y).where("e.type_code","=","t").where("e.seq","=",b.seq).where("e.deleted_at","is",null).executeTakeFirst();if(!m)return null;return{entityId:m.object_id,content:m.content,updatedAt:m.updated_at}},e=async(C,u,{id:E,versionNumber:b})=>{let m=P1(E);if(!m)return null;let c=await C.selectFrom("entities as e").innerJoin("document_versions as dv","dv.entity_id","e.id").select(["e.object_id","dv.version_number","dv.content","dv.published_at"]).where("e.store_id","=",Y).where("e.type_code","=","t").where("e.seq","=",m.seq).where("e.deleted_at","is",null).where("dv.version_number","=",b).executeTakeFirst();if(!c)return null;return{entityId:c.object_id,versionNumber:c.version_number,content:c.content,publishedAt:c.published_at}},$8=async(C,u,{id:E})=>{let b=P1(E);if(!b)return[];return(await C.selectFrom("entities as e").innerJoin("document_versions as dv","dv.entity_id","e.id").select(["dv.version_number","dv.published_at"]).where("e.store_id","=",Y).where("e.type_code","=","t").where("e.seq","=",b.seq).where("e.deleted_at","is",null).orderBy("dv.version_number","desc").execute()).map((c)=>({versionNumber:c.version_number,publishedAt:c.published_at}))},J8=async(C,u,E,b)=>{let m=await f(C,E),c=await C.selectFrom("entities as e").innerJoin("documents as d","d.entity_id","e.id").leftJoin("document_versions as dv","dv.id","d.published_version_id").leftJoin("document_drafts as dd","dd.entity_id","e.id").select(["e.id as entity_id","e.object_id","e.parent_folder_id","e.parent_object_id","e.name","e.created_at","e.updated_at","dv.version_number as published_version_number","dv.content as published_content","dd.content as draft_content",Z3.raw("CASE WHEN dd.entity_id IS NOT NULL THEN 1 ELSE 0 END").as("has_draft")]).where("e.store_id","=",Y).where("e.type_code","=","t").where("e.parent_folder_id",m===null?"is":"=",m).where("e.name","=",b).where("e.deleted_at","is",null).executeTakeFirst();if(!c)return null;let o=c.entity_id;W.set(o,c.object_id);let P8=await V(C,o),f8=await S(C,o),{entity:M8,mutationApi:N8}=TW.createFromRow(c,c.object_id,c.parent_object_id,P8,c.published_version_number,c.has_draft===1,c.draft_content??null,c.published_content??null);for(let y8 of f8)N8.setField(y8.getDefinition().getName(),y8);return{entity:M8,mutationApi:N8,pk:o}},G8=async(C,u,{parentId:E})=>{let b=await f(C,E),m=await C.selectFrom("entities as e").innerJoin("documents as d","d.entity_id","e.id").leftJoin("document_versions as dv","dv.id","d.published_version_id").leftJoin("document_drafts as dd","dd.entity_id","e.id").leftJoin("document_edit_state as es","es.entity_id","e.id").select(["e.id as entity_id","e.object_id","e.parent_folder_id","e.parent_object_id","e.name","e.created_at","e.updated_at","dv.version_number as published_version_number","dv.content as published_content","dd.content as draft_content",Z3.raw("CASE WHEN dd.entity_id IS NOT NULL THEN 1 ELSE 0 END").as("has_draft"),"es.client_id as edit_client_id","es.started_at as edit_started_at","es.last_activity_at as edit_activity"]).where("e.store_id","=",Y).where("e.type_code","=","t").where("e.parent_folder_id",b===null?"is":"=",b).where("e.deleted_at","is",null).execute(),c=[];for(let o of m){let P8=o.entity_id;W.set(P8,o.object_id);let f8=await V(C,P8),M8=await S(C,P8),{entity:N8,mutationApi:y8}=TW.createFromRow(o,o.object_id,o.parent_object_id,f8,o.published_version_number,o.has_draft===1,o.draft_content??null,o.published_content??null);for(let $6 of M8)y8.setField($6.getDefinition().getName(),$6);if(o.edit_client_id)y8.setEditState({clientId:o.edit_client_id,startedAt:o.edit_started_at,lastActivityAt:o.edit_activity});c.push({entity:N8,mutationApi:y8,pk:P8})}return c},s8=async(C,u,{id:E,clientId:b})=>{let m=P1(E);r.factory(!m,n.validation,`Invalid ID: ${E}`,"INVALID_ID");let c=M1(),o=new Date(Date.now()-jW).toISOString(),P8=await C.selectFrom("entities").select("id").where("store_id","=",Y).where("type_code","=",m.typeCode).where("seq","=",m.seq).where("deleted_at","is",null).executeTakeFirst();r.factory(!P8,n.notFound,`Entity not found: ${E}`,"ENTITY_NOT_FOUND");let f8=P8.id,M8=await C.selectFrom("document_edit_state").selectAll().where("entity_id","=",f8).executeTakeFirst();if(M8)if(M8.client_id===b)return await C.updateTable("document_edit_state").set({started_at:c,last_activity_at:c}).where("entity_id","=",f8).execute(),{success:!0};else if(M8.last_activity_at<o)return await C.updateTable("document_edit_state").set({client_id:b,started_at:c,last_activity_at:c}).where("entity_id","=",f8).execute(),{success:!0};else return{success:!1,meta:{lockedBy:M8.client_id,lockedSince:M8.started_at,timeoutSeconds:jW/1000}};else return await C.insertInto("document_edit_state").values({entity_id:f8,client_id:b,started_at:c,last_activity_at:c}).execute(),{success:!0}},P6=async(C,u,{id:E,clientId:b})=>{let m=P1(E);if(!m)return!1;let c=await C.selectFrom("entities").select("id").where("store_id","=",Y).where("type_code","=",m.typeCode).where("seq","=",m.seq).executeTakeFirst();if(!c)return!1;return((await C.updateTable("document_edit_state").set({last_activity_at:M1()}).where("entity_id","=",c.id).where("client_id","=",b).execute())[0]?.numUpdatedRows||0)>0},q8=Object.freeze({...H,getCodes:O,getType:X,getCode:w,getPk:T,toJSON:G,createFolder:D,readFolder:B,updateFolder:g,deleteFolder:R,isDuplicateNameInParent:y,findFolderByName:t,listFolderContents:K8,getFolderByPath:R8,readRootFolderForType:I8,createDocument:a3,readDocument:$1,updateDocument:l$,deleteDocument:S6,saveDraft:R3,readDraft:x8,publishDocument:V8,discardDraft:A8,readVersion:u8,getVersions:J6,findDocumentByName:n6,listDocuments:N4,createTemplate:D3,readTemplate:d4,updateTemplate:Z8,deleteTemplate:X8,saveTemplateDraft:U,readTemplateDraft:W8,publishTemplate:a,discardTemplateDraft:i,readTemplateVersion:e,getTemplateVersions:$8,findTemplateByName:J8,listTemplates:G8,createFieldDefinition:E8,readFieldDefinition:t8,readDefaultFieldDefinition:I,findFieldDefinitionByName:g8,resolveFieldDefinition:m8,getFieldDefinitionsForOwner:V6,deleteFieldDefinition:C3,setFieldValue:P3,deleteFieldValue:E4,setEditState:s8,clearEditState:async(C,u,{id:E})=>{let b=P1(E);r.factory(!b,n.validation,`Invalid ID: ${E}`,"INVALID_ID");let m=await C.selectFrom("entities").select("id").where("store_id","=",Y).where("type_code","=",b.typeCode).where("seq","=",b.seq).executeTakeFirst();r.factory(!m,n.notFound,`Entity not found: ${E}`,"ENTITY_NOT_FOUND"),await C.deleteFrom("document_edit_state").where("entity_id","=",m.id).execute()},getEditState:async(C,u,{id:E})=>{let b=P1(E);if(!b)return null;let m=await C.selectFrom("entities as e").innerJoin("document_edit_state as es","es.entity_id","e.id").select(["es.client_id","es.started_at","es.last_activity_at"]).where("e.store_id","=",Y).where("e.type_code","=",b.typeCode).where("e.seq","=",b.seq).executeTakeFirst();if(!m)return null;return{clientId:m.client_id,startedAt:m.started_at,lastActivityAt:m.last_activity_at}}}),j8=Object.freeze({...Z});return{store:q8,mutationApi:j8}},gJ8=Object.freeze({create:_H6});var fH6=({inner:$,folderCache:K,documentCache:q,templateCache:Y,fieldDefinitionCache:z})=>{let J=async(U,a,i,W8)=>{let e=await $.createFolder(U,a,i),{entity:$8,mutationApi:J8,pk:G8}=e;return W8(()=>{K.set($8.getObjectId(),T6.create($8,J8,G8))}),$8},P=async(U,a,{id:i})=>{let W8=K.get(i);if(W8)return W8.getEntity();let e=await $.readFolder(U,a,{id:i});if(!e)return null;let{entity:$8,mutationApi:J8,pk:G8}=e;return K.set(i,T6.create($8,J8,G8)),$8},W=async(U,a,i,W8)=>{let{id:e}=i,$8=K.get(e),J8=await $.updateFolder(U,a,i),G8=i.name!==void 0&&i.name!==J8.oldValues.name||i.parentId!==void 0&&i.parentId!==J8.oldValues.parentId;return W8(()=>{if($8){let P6=$8.getMutationApi();if(i.name!==void 0)P6.setName(i.name);if(i.parentId!==void 0)P6.setParentId(i.parentId);P6.setUpdatedAt(J8.entity.getUpdatedAt()),P6.setPath(J8.entity.getPath())}else{let{entity:P6,mutationApi:O8,pk:T8}=J8;K.set(e,T6.create(P6,O8,T8))}if(G8){let O8=J8.oldValues.path+"/";for(let[T8,q8]of K.entries())if(q8.getEntity().getPath().startsWith(O8))K.remove(T8)}}),{entity:$8?$8.getEntity():J8.entity,oldValues:J8.oldValues}},H=async(U,a,{id:i},W8)=>{let e=K.get(i),$8=e?e.getEntity().getPath():null,J8=await $.deleteFolder(U,a,{id:i});return W8(()=>{K.remove(i);for(let G8 of J8.descendantIds||[])K.remove(G8)}),{...J8,path:$8}},Z=async(U,a,i)=>{let W8=await $.listFolderContents(U,a,i);for(let e of W8)K.set(e.entity.getObjectId(),T6.create(e.entity,e.mutationApi,e.pk));return W8.map((e)=>e.entity)},O=async(U,a,i)=>{let W8=await $.getFolderByPath(U,a,i);if(!W8)return null;let{entity:e,mutationApi:$8,pk:J8}=W8;return K.set(e.getObjectId(),T6.create(e,$8,J8)),e},X=async(U,a,i,W8)=>{let e=await $.findFolderByName(U,a,i,W8);if(!e)return null;let{entity:$8,mutationApi:J8,pk:G8}=e;return K.set($8.getObjectId(),T6.create($8,J8,G8)),$8},w=async(U,a,i)=>{let W8=await $.readRootFolderForType(U,a,i);if(!W8)return null;let{entity:e,mutationApi:$8,pk:J8}=W8;return K.set(e.getObjectId(),T6.create(e,$8,J8)),e},T=async(U,a,i,W8,e)=>{return $.isDuplicateNameInParent(U,a,i,W8,e)},G=async(U,a,i,W8)=>{let e=await $.createDocument(U,a,i),{entity:$8,mutationApi:J8,pk:G8}=e;return W8(()=>{q.set($8.getObjectId(),T6.create($8,J8,G8))}),$8},v=async(U,a,{id:i})=>{let W8=q.get(i);if(W8)return W8.getEntity();let e=await $.readDocument(U,a,{id:i});if(!e)return null;let{entity:$8,mutationApi:J8,pk:G8}=e;return q.set(i,T6.create($8,J8,G8)),$8},f=async(U,a,i,W8)=>{let{id:e}=i,$8=q.get(e),J8=await $.updateDocument(U,a,i);return W8(()=>{if($8){let G8=$8.getMutationApi();if(i.name!==void 0)G8.setName(i.name);if(i.parentId!==void 0)G8.setParentId(i.parentId);G8.setUpdatedAt(J8.entity.getUpdatedAt()),G8.setPath(J8.entity.getPath())}else{let{entity:G8,mutationApi:s8,pk:P6}=J8;q.set(e,T6.create(G8,s8,P6))}}),$8?$8.getEntity():J8.entity},V=async(U,a,{id:i},W8)=>{let e=q.get(i),$8=e?e.getEntity().getPath():null,J8=await $.deleteDocument(U,a,{id:i});return W8(()=>{q.remove(i)}),{...J8,path:$8}},h=async(U,a,i,W8)=>{let{id:e}=i,$8=q.get(e),J8=await $.saveDraft(U,a,i);W8(()=>{if($8){let s8=$8.getMutationApi();s8.setDraftContent(J8.entity.getDraftContent()),s8.setHasDraft(J8.entity.hasDraftContent()),s8.setUpdatedAt(J8.entity.getUpdatedAt())}else{let{entity:s8,mutationApi:P6,pk:O8}=J8;q.set(e,T6.create(s8,P6,O8))}});let G8=$8?$8.getEntity():J8.entity;if(J8.lockLost!==void 0)return{entity:G8,lockLost:J8.lockLost};return G8},A=async(U,a,i,W8)=>{let{id:e}=i,$8=q.get(e),J8=await $.publishDocument(U,a,i);if($8){let G8=$8.getMutationApi();return G8.setPublishedVersionNumber(J8.entity.getPublishedVersionNumber()),G8.setPublishedContent(J8.entity.getPublishedContent()),G8.setDraftContent(null),G8.setHasDraft(!1),G8.setUpdatedAt(J8.entity.getUpdatedAt()),$8.getEntity()}else return W8(()=>{let{entity:G8,mutationApi:s8,pk:P6}=J8;q.set(e,T6.create(G8,s8,P6))}),J8.entity},N=async(U,a,i,W8)=>{let{id:e}=i,$8=q.get(e),J8=await $.discardDraft(U,a,i);return W8(()=>{if($8){let G8=$8.getMutationApi();G8.setDraftContent(null),G8.setHasDraft(!1),G8.setUpdatedAt(J8.entity.getUpdatedAt())}else{let{entity:G8,mutationApi:s8,pk:P6}=J8;q.set(e,T6.create(G8,s8,P6))}}),$8?$8.getEntity():J8.entity},S=async(U,a,i)=>{return $.readDraft(U,a,i)},I=async(U,a,i)=>{return $.readVersion(U,a,i)},D=async(U,a,i)=>{return $.getVersions(U,a,i)},B=async(U,a,i,W8)=>{let e=await $.findDocumentByName(U,a,i,W8);if(!e)return null;let{entity:$8,mutationApi:J8,pk:G8}=e;return q.set($8.getObjectId(),T6.create($8,J8,G8)),$8},g=async(U,a,i)=>{let W8=await $.listDocuments(U,a,i);for(let e of W8)q.set(e.entity.getObjectId(),T6.create(e.entity,e.mutationApi,e.pk));return W8.map((e)=>e.entity)},R=async(U,a,i,W8)=>{let{id:e}=i,$8=await $.setEditState(U,a,i);return W8(()=>{let J8=e.charAt(1);if(J8==="d")q.remove(e);else if(J8==="t")Y.remove(e)}),$8},y=async(U,a,i)=>{return $.getEditState(U,a,i)},t=async(U,a,i,W8)=>{let{id:e}=i;await $.clearEditState(U,a,i),W8(()=>{let $8=e.charAt(1);if($8==="d")q.remove(e);else if($8==="t")Y.remove(e)})},K8=async(U,a,i,W8)=>{let e=await $.createTemplate(U,a,i),{entity:$8,mutationApi:J8,pk:G8}=e;return W8(()=>{Y.set($8.getObjectId(),T6.create($8,J8,G8))}),$8},R8=async(U,a,{id:i})=>{let W8=Y.get(i);if(W8)return W8.getEntity();let e=await $.readTemplate(U,a,{id:i});if(!e)return null;let{entity:$8,mutationApi:J8,pk:G8}=e;return Y.set(i,T6.create($8,J8,G8)),$8},I8=async(U,a,i,W8)=>{let{id:e}=i,$8=Y.get(e),J8=await $.updateTemplate(U,a,i);return W8(()=>{if($8){let G8=$8.getMutationApi();if(i.name!==void 0)G8.setName(i.name);if(i.parentId!==void 0)G8.setParentId(i.parentId);G8.setUpdatedAt(J8.entity.getUpdatedAt()),G8.setPath(J8.entity.getPath())}else{let{entity:G8,mutationApi:s8,pk:P6}=J8;Y.set(e,T6.create(G8,s8,P6))}}),$8?$8.getEntity():J8.entity},E8=async(U,a,{id:i},W8)=>{let e=Y.get(i),$8=e?e.getEntity().getPath():null,J8=await $.deleteTemplate(U,a,{id:i});return W8(()=>{Y.remove(i)}),{...J8,path:$8}},t8=async(U,a,i,W8)=>{let{id:e}=i,$8=Y.get(e),J8=await $.saveTemplateDraft(U,a,i);W8(()=>{if($8){let s8=$8.getMutationApi();s8.setDraftContent(J8.entity.getDraftContent()),s8.setHasDraft(J8.entity.hasDraftContent()),s8.setUpdatedAt(J8.entity.getUpdatedAt())}else{let{entity:s8,mutationApi:P6,pk:O8}=J8;Y.set(e,T6.create(s8,P6,O8))}});let G8=$8?$8.getEntity():J8.entity;if(J8.lockLost!==void 0)return{entity:G8,lockLost:J8.lockLost};return G8},g8=async(U,a,i,W8)=>{let{id:e}=i,$8=Y.get(e),J8=await $.publishTemplate(U,a,i);if($8){let G8=$8.getMutationApi();return G8.setPublishedVersionNumber(J8.entity.getPublishedVersionNumber()),G8.setPublishedContent(J8.entity.getPublishedContent()),G8.setDraftContent(null),G8.setHasDraft(!1),G8.setUpdatedAt(J8.entity.getUpdatedAt()),$8.getEntity()}else return W8(()=>{let{entity:G8,mutationApi:s8,pk:P6}=J8;Y.set(e,T6.create(G8,s8,P6))}),J8.entity},m8=async(U,a,i,W8)=>{let{id:e}=i,$8=Y.get(e),J8=await $.discardTemplateDraft(U,a,i);return W8(()=>{if($8){let G8=$8.getMutationApi();G8.setDraftContent(null),G8.setHasDraft(!1),G8.setUpdatedAt(J8.entity.getUpdatedAt())}else{let{entity:G8,mutationApi:s8,pk:P6}=J8;Y.set(e,T6.create(G8,s8,P6))}}),$8?$8.getEntity():J8.entity},V6=async(U,a,i)=>{return $.readTemplateDraft(U,a,i)},C3=async(U,a,i)=>{return $.readTemplateVersion(U,a,i)},P3=async(U,a,i)=>{return $.getTemplateVersions(U,a,i)},E4=async(U,a,i,W8)=>{let e=await $.findTemplateByName(U,a,i,W8);if(!e)return null;let{entity:$8,mutationApi:J8,pk:G8}=e;return Y.set($8.getObjectId(),T6.create($8,J8,G8)),$8},a3=async(U,a,i)=>{let W8=await $.listTemplates(U,a,i);for(let e of W8)Y.set(e.entity.getObjectId(),T6.create(e.entity,e.mutationApi,e.pk));return W8.map((e)=>e.entity)},$1=async(U,a,i)=>{return $.setTemplateEditState(U,a,i)},l$=async(U,a,i)=>{return $.getTemplateEditState(U,a,i)},S6=async(U,a,i,W8)=>{return $.clearTemplateEditState(U,a,i,W8)},R3=async(U,a,i,W8)=>{let e=await $.createFieldDefinition(U,a,i),{entity:$8,mutationApi:J8,pk:G8}=e;return W8(()=>{z.set($8.getObjectId(),T6.create($8,J8,G8))}),$8},V8=async(U,a,{id:i})=>{let W8=z.get(i);if(W8)return W8.getEntity();let e=await $.readFieldDefinition(U,a,{id:i});if(!e)return null;let{entity:$8,mutationApi:J8,pk:G8}=e;return z.set(i,T6.create($8,J8,G8)),$8},A8=async(U,a,i,W8)=>{let e=await $.findFieldDefinitionByName(U,a,i,W8);if(!e)return null;let{entity:$8,mutationApi:J8,pk:G8}=e;return z.set($8.getObjectId(),T6.create($8,J8,G8)),$8},x8=async(U,a,i)=>{let W8=await $.getFieldDefinitionsForOwner(U,a,i);for(let e of W8)z.set(e.entity.getObjectId(),T6.create(e.entity,e.mutationApi,e.pk));return W8.map((e)=>e.entity)},u8=async(U,a)=>{let i=`${$.getCode()}n1`,W8=z.get(i);if(W8)return W8.getEntity();let e=await $.readDefaultFieldDefinition(U,a),{entity:$8,mutationApi:J8,pk:G8}=e;return z.set($8.getObjectId(),T6.create($8,J8,G8)),$8},J6=async(U,a,i)=>{let W8=await $.resolveFieldDefinition(U,a,i),{entity:e,mutationApi:$8,pk:J8}=W8;return z.set(e.getObjectId(),T6.create(e,$8,J8)),e},n6=async(U,a,{id:i},W8)=>{let e=await $.deleteFieldDefinition(U,a,{id:i});return W8(()=>{z.remove(i)}),e},N4=async(U,a,i,W8)=>{let{entityId:e}=i,$8=await $.setFieldValue(U,a,i);return W8(()=>{let J8=K.get(e)||q.get(e)||Y.get(e);if(J8){let G8=J8.getMutationApi(),s8=$8.entity.getField($8.fieldName);G8.setField($8.fieldName,s8)}}),$8.entity},D3=async(U,a,i)=>{return $.getFieldValue(U,a,i)},d4=async(U,a,i,W8)=>{let{entityId:e}=i,$8=await $.deleteFieldValue(U,a,i);W8(()=>{let J8=K.get(e)||q.get(e)||Y.get(e);if(J8)J8.getMutationApi().removeField($8.fieldName)})},Z8=(U)=>{K.remove(U)};return Object.freeze({getObjectId:$.getObjectId,getName:$.getName,getCreatedAt:$.getCreatedAt,getUpdatedAt:$.getUpdatedAt,getCodes:$.getCodes,getType:$.getType,getCode:$.getCode,getPk:$.getPk,toJSON:$.toJSON,createFolder:J,readFolder:P,updateFolder:W,deleteFolder:H,listFolderContents:Z,getFolderByPath:O,findFolderByName:X,readRootFolderForType:w,isDuplicateNameInParent:T,createDocument:G,readDocument:v,updateDocument:f,deleteDocument:V,saveDraft:h,readDraft:S,publishDocument:A,discardDraft:N,readVersion:I,getVersions:D,findDocumentByName:B,listDocuments:g,setEditState:R,getEditState:y,clearEditState:t,createTemplate:K8,readTemplate:R8,updateTemplate:I8,deleteTemplate:E8,saveTemplateDraft:t8,readTemplateDraft:V6,publishTemplate:g8,discardTemplateDraft:m8,readTemplateVersion:C3,getTemplateVersions:P3,findTemplateByName:E4,listTemplates:a3,setTemplateEditState:$1,getTemplateEditState:l$,clearTemplateEditState:S6,createFieldDefinition:R3,readFieldDefinition:V8,findFieldDefinitionByName:A8,getFieldDefinitionsForOwner:x8,readDefaultFieldDefinition:u8,resolveFieldDefinition:J6,deleteFieldDefinition:n6,setFieldValue:N4,getFieldValue:D3,deleteFieldValue:d4,evictFolder:Z8})},yJ8=Object.freeze({create:fH6});var VH6=($)=>{let K=new Map;return $.forEach((J)=>K.set(J,new Set)),Object.freeze({subscribe:(J,P)=>{return K.get(J)?.add(P),()=>K.get(J)?.delete(P)},subscribeAll:(J)=>{let P=[];for(let[W,H]of K){let Z=`on${W.charAt(0).toUpperCase()}${W.slice(1)}`;if(J[Z])H.add(J[Z]),P.push(()=>H.delete(J[Z]))}return()=>P.forEach((W)=>W())},notify:(J,P)=>{K.get(J)?.forEach((W)=>{try{W(P)}catch(H){console.error(`Error in ${J} handler:`,H)}})}})},uJ8=Object.freeze({create:VH6});var M6=Object.freeze({FOLDER_CREATED:"folderCreated",FOLDER_RENAMED:"folderRenamed",FOLDER_MOVED:"folderMoved",FOLDER_DELETED:"folderDeleted",DOCUMENT_CREATED:"documentCreated",DOCUMENT_RENAMED:"documentRenamed",DOCUMENT_MOVED:"documentMoved",DOCUMENT_DELETED:"documentDeleted",DOCUMENT_PUBLISHED:"documentPublished",DRAFT_SAVED:"draftSaved",DRAFT_DISCARDED:"draftDiscarded",TEMPLATE_CREATED:"templateCreated",TEMPLATE_RENAMED:"templateRenamed",TEMPLATE_MOVED:"templateMoved",TEMPLATE_DELETED:"templateDeleted",TEMPLATE_PUBLISHED:"templatePublished",TEMPLATE_DRAFT_SAVED:"templateDraftSaved",TEMPLATE_DRAFT_DISCARDED:"templateDraftDiscarded",EDIT_STATE_ACQUIRED:"editStateAcquired",EDIT_STATE_REFRESHED:"editStateRefreshed",EDIT_STATE_CLEARED:"editStateCleared"});var AH6=({inner:$,storeCode:K})=>{let q=uJ8.create([M6.FOLDER_CREATED,M6.FOLDER_RENAMED,M6.FOLDER_MOVED,M6.FOLDER_DELETED,M6.DOCUMENT_CREATED,M6.DOCUMENT_RENAMED,M6.DOCUMENT_MOVED,M6.DOCUMENT_DELETED,M6.DOCUMENT_PUBLISHED,M6.DRAFT_SAVED,M6.DRAFT_DISCARDED,M6.TEMPLATE_CREATED,M6.TEMPLATE_RENAMED,M6.TEMPLATE_MOVED,M6.TEMPLATE_DELETED,M6.TEMPLATE_PUBLISHED,M6.TEMPLATE_DRAFT_SAVED,M6.TEMPLATE_DRAFT_DISCARDED]),Y=async(Z8,X8,U)=>{let a=await $.readFolder(Z8,X8,{id:U});if(!a)return null;let i=await Z8.selectFrom("entities").innerJoin("entity_types","entities.entity_type_id","entity_types.id").select(["entity_types.code as entity_type_code","entity_types.subtype as entity_type_subtype"]).where("entities.object_id","=",U).executeTakeFirst();if(i?.entity_type_code==="f"&&i?.entity_type_subtype==="root_d")return"d";if(i?.entity_type_code==="f"&&i?.entity_type_subtype==="root_t")return"t";let W8=await $.readRootFolderForType(Z8,X8,"d"),e=await $.readRootFolderForType(Z8,X8,"t"),$8=a;while($8&&$8.getParentId()!==null){let J8=await $.readFolder(Z8,X8,{id:$8.getParentId()});if(!J8)break;$8=J8}if($8&&$8.getObjectId()===W8?.getObjectId())return"d";else if($8&&$8.getObjectId()===e?.getObjectId())return"t";return null},z=async(Z8,X8,U,a)=>{let{parentId:i,name:W8,subtype:e}=U,$8=await $.createFolder(Z8,X8,U,a),J8=null;if(e==="root_d")J8="d";else if(e==="root_t")J8="t";else{let G8=await $.readRootFolderForType(Z8,X8,"d"),s8=await $.readRootFolderForType(Z8,X8,"t");if(i===G8?.getObjectId())J8="d";else if(i===s8?.getObjectId())J8="t";else if(i){let P6=await $.readFolder(Z8,X8,{id:i});if(P6){let O8=P6;while(O8&&O8.getParentId()!==null){let T8=await $.readFolder(Z8,X8,{id:O8.getParentId()});if(!T8)break;O8=T8}if(O8&&O8.getObjectId()===G8?.getObjectId())J8="d";else if(O8&&O8.getObjectId()===s8?.getObjectId())J8="t"}}}return a(()=>{q.notify(M6.FOLDER_CREATED,{id:$8.getObjectId(),storeCode:K,name:$8.getName(),path:$8.getPath(),parentFolderId:i,contentType:J8})}),$8},J=async(Z8,X8,U)=>{return $.readFolder(Z8,X8,U)},P=async(Z8,X8,U,a)=>{let{id:i,name:W8,parentId:e}=U,$8=await $.updateFolder(Z8,X8,U,a),J8=$8.entity,G8=$8.oldValues.name,s8=$8.oldValues.parentId,P6=await Y(Z8,X8,i);if(W8!==void 0&&W8!==G8)a(()=>{q.notify(M6.FOLDER_RENAMED,{id:i,storeCode:K,parentFolderId:J8.getParentId(),contentType:P6,oldName:G8,newName:W8,path:J8.getPath()})});if(e!==void 0&&e!==s8)a(()=>{q.notify(M6.FOLDER_MOVED,{id:i,storeCode:K,contentType:P6,oldParentFolderId:s8,parentFolderId:e,path:J8.getPath()})});return J8},W=async(Z8,X8,U,a)=>{let{id:i}=U,e=(await $.readFolder(Z8,X8,{id:i}))?.getParentId(),$8=await Y(Z8,X8,i),J8=await $.deleteFolder(Z8,X8,U,a);return a(()=>{q.notify(M6.FOLDER_DELETED,{id:i,storeCode:K,parentFolderId:e,contentType:$8,path:J8.path,descendantCount:J8.descendantIds?.length||0})}),J8},H=async(Z8,X8,U)=>{return $.listFolderContents(Z8,X8,U)},Z=async(Z8,X8,U)=>{return $.getFolderByPath(Z8,X8,U)},O=async(Z8,X8,U,a)=>{return $.findFolderByName(Z8,X8,U,a)},X=async(Z8,X8,U)=>{return $.readRootFolderForType(Z8,X8,U)},w=async(Z8,X8,U,a,i)=>{return $.isDuplicateNameInParent(Z8,X8,U,a,i)},T=async(Z8,X8,U,a)=>{let{parentId:i,name:W8}=U,e=await $.createDocument(Z8,X8,U,a);return a(()=>{q.notify(M6.DOCUMENT_CREATED,{storeCode:K,id:e.getObjectId(),type:"d",parentFolderId:i,name:e.getName(),path:e.getPath()})}),e},G=async(Z8,X8,U)=>{return $.readDocument(Z8,X8,U)},v=async(Z8,X8,U,a)=>{let{id:i,name:W8,parentId:e}=U,$8=await $.readDocument(Z8,X8,{id:i}),J8=$8?.getName(),G8=$8?.getParentId(),s8=await $.updateDocument(Z8,X8,U,a);if(W8!==void 0&&W8!==J8)a(()=>{q.notify(M6.DOCUMENT_RENAMED,{storeCode:K,id:i,type:"d",parentFolderId:s8.getParentId(),oldName:J8,newName:W8,path:s8.getPath()})});if(e!==void 0&&e!==G8)a(()=>{q.notify(M6.DOCUMENT_MOVED,{storeCode:K,id:i,type:"d",oldParentFolderId:G8,parentFolderId:e,path:s8.getPath()})});return s8},f=async(Z8,X8,U,a)=>{let{id:i}=U,e=(await $.readDocument(Z8,X8,{id:i}))?.getParentId(),$8=await $.deleteDocument(Z8,X8,U,a);return a(()=>{q.notify(M6.DOCUMENT_DELETED,{storeCode:K,id:i,type:"d",parentFolderId:e,path:$8.path})}),$8},V=async(Z8,X8,U,a)=>{let{id:i}=U,e=(await $.readDocument(Z8,X8,{id:i}))?.getParentId(),$8=await $.saveDraft(Z8,X8,U,a);return a(()=>{let J8=$8.lockLost!==void 0?$8.entity:$8;q.notify(M6.DRAFT_SAVED,{storeCode:K,id:i,type:"d",parentFolderId:e,updatedAt:J8?J8.getUpdatedAt():null,lockLost:$8.lockLost})}),$8},h=async(Z8,X8,U,a)=>{let{id:i}=U,W8=await $.publishDocument(Z8,X8,U,a);return a(()=>{q.notify(M6.DOCUMENT_PUBLISHED,{storeCode:K,id:i,type:"d",parentFolderId:W8.getParentId(),versionNumber:W8.getPublishedVersionNumber()})}),{entityId:i,versionNumber:W8.getPublishedVersionNumber(),content:W8.getPublishedContent(),publishedAt:W8.getUpdatedAt()}},A=async(Z8,X8,U,a)=>{let{id:i}=U,W8=await $.discardDraft(Z8,X8,U,a);return a(()=>{q.notify(M6.DRAFT_DISCARDED,{storeCode:K,id:i})}),W8},N=async(Z8,X8,U)=>{return $.readDraft(Z8,X8,U)},S=async(Z8,X8,U)=>{return $.readVersion(Z8,X8,U)},I=async(Z8,X8,U)=>{return $.getVersions(Z8,X8,U)},D=async(Z8,X8,U,a)=>{return $.findDocumentByName(Z8,X8,U,a)},B=async(Z8,X8,U)=>{return $.listDocuments(Z8,X8,U)},g=async(Z8,X8,U,a)=>{return $.setEditState(Z8,X8,U,a)},R=async(Z8,X8,U)=>{return $.getEditState(Z8,X8,U)},y=async(Z8,X8,U,a)=>{return $.clearEditState(Z8,X8,U,a)},t=async(Z8,X8,U,a)=>{let{parentId:i,name:W8}=U,e=await $.createTemplate(Z8,X8,U,a);return a(()=>{q.notify(M6.TEMPLATE_CREATED,{storeCode:K,id:e.getObjectId(),type:"t",parentFolderId:i,name:e.getName(),path:e.getPath()})}),e},K8=async(Z8,X8,U)=>{return $.readTemplate(Z8,X8,U)},R8=async(Z8,X8,U,a)=>{let{id:i,name:W8,parentId:e}=U,$8=await $.readTemplate(Z8,X8,{id:i}),J8=$8?.getName(),G8=$8?.getParentId(),s8=await $.updateTemplate(Z8,X8,U,a);if(W8!==void 0&&W8!==J8)a(()=>{q.notify(M6.TEMPLATE_RENAMED,{storeCode:K,id:i,type:"t",parentFolderId:s8.getParentId(),oldName:J8,newName:W8,path:s8.getPath()})});if(e!==void 0&&e!==G8)a(()=>{q.notify(M6.TEMPLATE_MOVED,{storeCode:K,id:i,type:"t",oldParentFolderId:G8,parentFolderId:e,path:s8.getPath()})});return s8},I8=async(Z8,X8,U,a)=>{let{id:i}=U,e=(await $.readTemplate(Z8,X8,{id:i}))?.getParentId(),$8=await $.deleteTemplate(Z8,X8,U,a);return a(()=>{q.notify(M6.TEMPLATE_DELETED,{storeCode:K,id:i,type:"t",parentFolderId:e,path:$8.path})}),$8},E8=async(Z8,X8,U,a)=>{let{id:i}=U,e=(await $.readTemplate(Z8,X8,{id:i}))?.getParentId(),$8=await $.saveTemplateDraft(Z8,X8,U,a);return a(()=>{let J8=$8.lockLost!==void 0?$8.entity:$8;q.notify(M6.TEMPLATE_DRAFT_SAVED,{storeCode:K,id:i,type:"t",parentFolderId:e,updatedAt:J8?J8.getUpdatedAt():null,lockLost:$8.lockLost})}),$8},t8=async(Z8,X8,U,a)=>{let{id:i}=U,W8=await $.publishTemplate(Z8,X8,U,a);return a(()=>{q.notify(M6.TEMPLATE_PUBLISHED,{storeCode:K,id:i,type:"t",parentFolderId:W8.getParentId(),versionNumber:W8.getPublishedVersionNumber()})}),{entityId:i,versionNumber:W8.getPublishedVersionNumber(),content:W8.getPublishedContent(),publishedAt:W8.getUpdatedAt()}},g8=async(Z8,X8,U,a)=>{let{id:i}=U,W8=await $.discardTemplateDraft(Z8,X8,U,a);return a(()=>{q.notify(M6.TEMPLATE_DRAFT_DISCARDED,{storeCode:K,id:i})}),W8},m8=async(Z8,X8,U)=>{return $.readTemplateDraft(Z8,X8,U)},V6=async(Z8,X8,U)=>{return $.readTemplateVersion(Z8,X8,U)},C3=async(Z8,X8,U)=>{return $.getTemplateVersions(Z8,X8,U)},P3=async(Z8,X8,U,a)=>{return $.findTemplateByName(Z8,X8,U,a)},E4=async(Z8,X8,U)=>{return $.listTemplates(Z8,X8,U)},a3=async(Z8,X8,U)=>{return $.setTemplateEditState(Z8,X8,U)},$1=async(Z8,X8,U)=>{return $.getTemplateEditState(Z8,X8,U)},l$=async(Z8,X8,U,a)=>{return $.clearTemplateEditState(Z8,X8,U,a)},S6=async(Z8,X8,U,a)=>{return $.createFieldDefinition(Z8,X8,U,a)},R3=async(Z8,X8,U)=>{return $.readFieldDefinition(Z8,X8,U)},V8=async(Z8,X8,U,a)=>{return $.findFieldDefinitionByName(Z8,X8,U,a)},A8=async(Z8,X8,U)=>{return $.getFieldDefinitionsForOwner(Z8,X8,U)},x8=async(Z8,X8)=>{return $.readDefaultFieldDefinition(Z8,X8)},u8=async(Z8,X8,U)=>{return $.resolveFieldDefinition(Z8,X8,U)},J6=async(Z8,X8,U,a)=>{return $.deleteFieldDefinition(Z8,X8,U,a)},n6=async(Z8,X8,U,a)=>{return $.setFieldValue(Z8,X8,U,a)},N4=async(Z8,X8,U)=>{return $.getFieldValue(Z8,X8,U)},D3=async(Z8,X8,U,a)=>{return $.deleteFieldValue(Z8,X8,U,a)};return Object.freeze({getObjectId:$.getObjectId,getName:$.getName,getCreatedAt:$.getCreatedAt,getUpdatedAt:$.getUpdatedAt,getCodes:$.getCodes,getType:$.getType,getCode:$.getCode,getPk:$.getPk,toJSON:$.toJSON,createFolder:z,readFolder:J,updateFolder:P,deleteFolder:W,listFolderContents:H,getFolderByPath:Z,findFolderByName:O,readRootFolderForType:X,isDuplicateNameInParent:w,createDocument:T,readDocument:G,updateDocument:v,deleteDocument:f,saveDraft:V,readDraft:N,publishDocument:h,discardDraft:A,readVersion:S,getVersions:I,findDocumentByName:D,listDocuments:B,setEditState:g,getEditState:R,clearEditState:y,createTemplate:t,readTemplate:K8,updateTemplate:R8,deleteTemplate:I8,saveTemplateDraft:E8,readTemplateDraft:m8,publishTemplate:t8,discardTemplateDraft:g8,readTemplateVersion:V6,getTemplateVersions:C3,findTemplateByName:P3,listTemplates:E4,setTemplateEditState:a3,getTemplateEditState:$1,clearTemplateEditState:l$,createFieldDefinition:S6,readFieldDefinition:R3,findFieldDefinitionByName:V8,getFieldDefinitionsForOwner:A8,readDefaultFieldDefinition:x8,resolveFieldDefinition:u8,deleteFieldDefinition:J6,setFieldValue:n6,getFieldValue:N4,deleteFieldValue:D3,evictFolder:$.evictFolder,subscribe:q.subscribe,subscribeAll:q.subscribeAll})},mJ8=Object.freeze({create:AH6});var kH6=($)=>{let{id:K,code:q,name:Y,pk:z,createdAt:J,updatedAt:P}=$,W=Nw.create(),H=Nw.create(),Z=Nw.create(),O=Nw.create(),{store:X,mutationApi:w}=gJ8.create({id:K,code:q,name:Y,pk:z,createdAt:J,updatedAt:P,folderCache:W}),T=yJ8.create({inner:X,folderCache:W,documentCache:H,templateCache:Z,fieldDefinitionCache:O});return{store:mJ8.create({inner:T,storeCode:q}),mutationApi:w}},pJ8=Object.freeze({create:kH6});var MH6=({id:$,name:K,createdAt:q,updatedAt:Y,children:z=[]})=>{let J=[...z],P=new Map,{entityFns:W,mutationFns:H}=w5.create({id:$,name:K,createdAt:q,updatedAt:Y}),Z=()=>{P.clear();for(let O8 of J){let T8=O8.getCodes();for(let q8 of T8)P.set(q8,O8)}};Z();let O=()=>"demux",X=()=>J.map((O8)=>O8.getObjectId()),w=()=>[...J],T=()=>{return new Set(P.keys())},G=()=>({id:$,name:K,createdAt:q,updatedAt:Y,type:"demux",childIds:X()}),v=(O8)=>{J.push(O8),Z()},f=(O8)=>{return P.get(O8)??null},V=async(O8,T8,{store:q8,storeCode:j8,parentId:C,name:u,subtype:E},b)=>{let m=q8??j8;r.factory(!m,n.validation,"store parameter is required","MISSING_STORE_CODE");let c=f(m);return r.factory(!c,n.notFound,`No child store with code: ${m}`,"STORE_NOT_FOUND"),c.createFolder(O8,T8,{storeCode:m,parentId:C,name:u,subtype:E},b)},h=async(O8,T8,{id:q8})=>{let j8=q8?.[0],C=f(j8);if(!C)return null;return C.readFolder(O8,T8,{id:q8})},s8=Object.freeze({...W,getType:O,getCodes:T,getChildIds:X,getChildren:w,toJSON:G,createFolder:V,readFolder:h,updateFolder:async(O8,T8,{id:q8,name:j8,parentId:C},u)=>{let E=q8?.[0],b=f(E);return r.factory(!b,n.notFound,`No child store with code: ${E}`,"STORE_NOT_FOUND"),b.updateFolder(O8,T8,{id:q8,name:j8,parentId:C},u)},deleteFolder:async(O8,T8,{id:q8},j8)=>{let C=q8?.[0],u=f(C);return r.factory(!u,n.notFound,`No child store with code: ${C}`,"STORE_NOT_FOUND"),u.deleteFolder(O8,T8,{id:q8},j8)},evictFolder:(O8)=>{let T8=O8?.[0],q8=f(T8);if(q8)q8.evictFolder(O8)},getFolder:async(O8,T8,{id:q8})=>{return h(O8,T8,{id:q8})},listFolderContents:async(O8,T8,{folderId:q8,store:j8,storeCode:C,type:u})=>{let E;if(q8!==null&&q8!==void 0)E=q8[0];else{let c=j8??C;r.factory(!c,n.validation,"store required when folderId is null","STORE_CODE_REQUIRED"),E=c}let b=f(E);r.factory(!b,n.notFound,`No child store with code: ${E}`,"STORE_NOT_FOUND");let m={...T8,storeCode:E};return b.listFolderContents(O8,m,{folderId:q8,type:u})},getFolderByPath:async(O8,T8,{path:q8,type:j8,store:C,storeCode:u})=>{let E=C??u;r.factory(!E,n.validation,"store required for getFolderByPath","STORE_CODE_REQUIRED");let b=f(E);if(!b)return null;let m={...T8,storeCode:E};return b.getFolderByPath(O8,m,{path:q8,type:j8})},isDuplicateNameInParent:async(O8,T8,q8,j8,C=null)=>{let u;if(q8)u=q8[0];else{let b=J[0];if(!b)r.factory(!0,n.notFound,"No child stores available","STORE_NOT_FOUND");u=[...b.getCodes()][0]}let E=f(u);return r.factory(!E,n.notFound,`No child store with code: ${u}`,"STORE_NOT_FOUND"),E.isDuplicateNameInParent(O8,T8,q8,j8,C)},findFolderByName:async(O8,T8,q8,j8)=>{let C=q8[0],u=f(C);if(!u)return null;return u.findFolderByName(O8,T8,q8,j8)},readRootFolderForType:async(O8,T8,q8,j8)=>{let C=f(j8);return r.factory(!C,n.notFound,`No child store with code: ${j8}`,"STORE_NOT_FOUND"),C.readRootFolderForType(O8,T8,q8,j8)},createFieldDefinition:async(O8,T8,{storeCode:q8,ownerEntityId:j8,name:C,label:u,description:E,primitiveType:b,required:m,multiplicity:c,isSystem:o},P8)=>{let f8=f(q8);return r.factory(!f8,n.notFound,`No child store with code: ${q8}`,"STORE_NOT_FOUND"),f8.createFieldDefinition(O8,T8,{storeCode:q8,ownerEntityId:j8,name:C,label:u,description:E,primitiveType:b,required:m,multiplicity:c,isSystem:o},P8)},readFieldDefinition:async(O8,T8,{id:q8})=>{let j8=q8?.[0],C=f(j8);if(!C)return null;return C.readFieldDefinition(O8,T8,{id:q8})},readDefaultFieldDefinition:async(O8,T8,q8)=>{let j8=f(q8);return r.factory(!j8,n.notFound,`No child store with code: ${q8}`,"STORE_NOT_FOUND"),j8.readDefaultFieldDefinition(O8,T8)},getFieldDefinitionsForOwner:async(O8,T8,{storeCode:q8,ownerEntityPk:j8,includeSystem:C})=>{let u=f(q8);return r.factory(!u,n.notFound,`No child store with code: ${q8}`,"STORE_NOT_FOUND"),u.getFieldDefinitionsForOwner(O8,T8,{ownerEntityPk:j8,includeSystem:C})},deleteFieldDefinition:async(O8,T8,{id:q8},j8)=>{let C=q8?.[0],u=f(C);return r.factory(!u,n.notFound,`No child store with code: ${C}`,"STORE_NOT_FOUND"),u.deleteFieldDefinition(O8,T8,{id:q8},j8)},setFieldValue:async(O8,T8,{entityId:q8,fieldDefinitionId:j8,fieldName:C,value:u,values:E},b)=>{let m=q8?.[0],c=f(m);return r.factory(!c,n.notFound,`No child store with code: ${m}`,"STORE_NOT_FOUND"),c.setFieldValue(O8,T8,{entityId:q8,fieldDefinitionId:j8,fieldName:C,value:u,values:E},b)},deleteFieldValue:async(O8,T8,{entityId:q8,fieldDefinitionId:j8,fieldName:C},u)=>{let E=q8?.[0],b=f(E);return r.factory(!b,n.notFound,`No child store with code: ${E}`,"STORE_NOT_FOUND"),b.deleteFieldValue(O8,T8,{entityId:q8,fieldDefinitionId:j8,fieldName:C},u)},createDocument:async(O8,T8,{storeCode:q8,...j8},C)=>{let u=f(q8);return r.factory(!u,n.notFound,`No child store with code: ${q8}`,"STORE_NOT_FOUND"),u.createDocument(O8,T8,{storeCode:q8,...j8},C)},readDocument:async(O8,T8,{id:q8})=>{let j8=q8?.[0],C=f(j8);if(!C)return null;return C.readDocument(O8,T8,{id:q8})},updateDocument:async(O8,T8,{id:q8,...j8},C)=>{let u=q8?.[0],E=f(u);return r.factory(!E,n.notFound,`No child store with code: ${u}`,"STORE_NOT_FOUND"),E.updateDocument(O8,T8,{id:q8,...j8},C)},deleteDocument:async(O8,T8,{id:q8},j8)=>{let C=q8?.[0],u=f(C);return r.factory(!u,n.notFound,`No child store with code: ${C}`,"STORE_NOT_FOUND"),u.deleteDocument(O8,T8,{id:q8},j8)},saveDraft:async(O8,T8,{id:q8,content:j8,clientId:C},u)=>{let E=q8?.[0],b=f(E);return r.factory(!b,n.notFound,`No child store with code: ${E}`,"STORE_NOT_FOUND"),b.saveDraft(O8,T8,{id:q8,content:j8,clientId:C},u)},readDraft:async(O8,T8,{id:q8})=>{let j8=q8?.[0],C=f(j8);if(!C)return null;return C.readDraft(O8,T8,{id:q8})},publishDocument:async(O8,T8,{id:q8},j8)=>{let C=q8?.[0],u=f(C);return r.factory(!u,n.notFound,`No child store with code: ${C}`,"STORE_NOT_FOUND"),u.publishDocument(O8,T8,{id:q8},j8)},discardDraft:async(O8,T8,{id:q8},j8)=>{let C=q8?.[0],u=f(C);return r.factory(!u,n.notFound,`No child store with code: ${C}`,"STORE_NOT_FOUND"),u.discardDraft(O8,T8,{id:q8},j8)},setEditState:async(O8,T8,{id:q8,clientId:j8},C)=>{let u=q8?.[0],E=f(u);return r.factory(!E,n.notFound,`No child store with code: ${u}`,"STORE_NOT_FOUND"),E.setEditState(O8,T8,{id:q8,clientId:j8},C)},clearEditState:async(O8,T8,{id:q8},j8)=>{let C=q8?.[0],u=f(C);return r.factory(!u,n.notFound,`No child store with code: ${C}`,"STORE_NOT_FOUND"),u.clearEditState(O8,T8,{id:q8},j8)},getEditState:async(O8,T8,{id:q8})=>{let j8=q8?.[0],C=f(j8);if(!C)return null;return C.getEditState(O8,T8,{id:q8})},readVersion:async(O8,T8,{id:q8,versionNumber:j8})=>{let C=q8?.[0],u=f(C);if(!u)return null;return u.readVersion(O8,T8,{id:q8,versionNumber:j8})},getVersions:async(O8,T8,{id:q8})=>{let j8=q8?.[0],C=f(j8);if(!C)return[];return C.getVersions(O8,T8,{id:q8})},findDocumentByName:async(O8,T8,q8,j8)=>{let C=q8?.[0],u=f(C);if(!u)return null;return u.findDocumentByName(O8,T8,q8,j8)},listDocuments:async(O8,T8,{parentId:q8,storeCode:j8})=>{let C,u;if(q8)C=q8[0],u=q8;else{r.factory(!j8,n.validation,"storeCode required when parentId is null","MISSING_STORE_CODE"),C=j8;let b=f(C);r.factory(!b,n.notFound,`No child store with code: ${C}`,"STORE_NOT_FOUND");try{u=(await b.readRootFolderForType(O8,T8,"d",C)).getObjectId()}catch(m){u=null}}let E=f(C);return r.factory(!E,n.notFound,`No child store with code: ${C}`,"STORE_NOT_FOUND"),E.listDocuments(O8,T8,{parentId:u})},createTemplate:async(O8,T8,{storeCode:q8,...j8},C)=>{let u=f(q8);return r.factory(!u,n.notFound,`No child store with code: ${q8}`,"STORE_NOT_FOUND"),u.createTemplate(O8,T8,{storeCode:q8,...j8},C)},readTemplate:async(O8,T8,{id:q8})=>{let j8=q8?.[0],C=f(j8);if(!C)return null;return C.readTemplate(O8,T8,{id:q8})},updateTemplate:async(O8,T8,{id:q8,...j8},C)=>{let u=q8?.[0],E=f(u);return r.factory(!E,n.notFound,`No child store with code: ${u}`,"STORE_NOT_FOUND"),E.updateTemplate(O8,T8,{id:q8,...j8},C)},deleteTemplate:async(O8,T8,{id:q8},j8)=>{let C=q8?.[0],u=f(C);return r.factory(!u,n.notFound,`No child store with code: ${C}`,"STORE_NOT_FOUND"),u.deleteTemplate(O8,T8,{id:q8},j8)},saveTemplateDraft:async(O8,T8,{id:q8,content:j8,clientId:C},u)=>{let E=q8?.[0],b=f(E);return r.factory(!b,n.notFound,`No child store with code: ${E}`,"STORE_NOT_FOUND"),b.saveTemplateDraft(O8,T8,{id:q8,content:j8,clientId:C},u)},readTemplateDraft:async(O8,T8,{id:q8})=>{let j8=q8?.[0],C=f(j8);if(!C)return null;return C.readTemplateDraft(O8,T8,{id:q8})},publishTemplate:async(O8,T8,{id:q8},j8)=>{let C=q8?.[0],u=f(C);return r.factory(!u,n.notFound,`No child store with code: ${C}`,"STORE_NOT_FOUND"),u.publishTemplate(O8,T8,{id:q8},j8)},discardTemplateDraft:async(O8,T8,{id:q8},j8)=>{let C=q8?.[0],u=f(C);return r.factory(!u,n.notFound,`No child store with code: ${C}`,"STORE_NOT_FOUND"),u.discardTemplateDraft(O8,T8,{id:q8},j8)},readTemplateVersion:async(O8,T8,{id:q8,versionNumber:j8})=>{let C=q8?.[0],u=f(C);if(!u)return null;return u.readTemplateVersion(O8,T8,{id:q8,versionNumber:j8})},getTemplateVersions:async(O8,T8,{id:q8})=>{let j8=q8?.[0],C=f(j8);if(!C)return[];return C.getTemplateVersions(O8,T8,{id:q8})},findTemplateByName:async(O8,T8,q8,j8)=>{let C=q8?.[0],u=f(C);if(!u)return null;return u.findTemplateByName(O8,T8,q8,j8)},listTemplates:async(O8,T8,{parentId:q8,storeCode:j8})=>{let C,u;if(q8)C=q8[0],u=q8;else{r.factory(!j8,n.validation,"storeCode required when parentId is null","MISSING_STORE_CODE"),C=j8;let b=f(C);r.factory(!b,n.notFound,`No child store with code: ${C}`,"STORE_NOT_FOUND");try{u=(await b.readRootFolderForType(O8,T8,"t",C)).getObjectId()}catch(m){u=null}}let E=f(C);return r.factory(!E,n.notFound,`No child store with code: ${C}`,"STORE_NOT_FOUND"),E.listTemplates(O8,T8,{parentId:u})},subscribe:(O8,T8)=>{let q8=J.map((j8)=>j8.subscribe(O8,T8));return()=>q8.forEach((j8)=>j8())},subscribeAll:(O8)=>{let T8=J.map((q8)=>q8.subscribeAll(O8));return()=>T8.forEach((q8)=>q8())}}),P6=Object.freeze({...H,addChild:v});return{store:s8,mutationApi:P6}},cJ8=Object.freeze({create:MH6});var Cw=($)=>{if(!$||$.length<2||$[0]!=="S")return null;let K=parseInt($.slice(1),10);return isNaN(K)?null:K},Gx=($)=>$.object_id,vx=($)=>{let K=Gx($),q=$.id,{store:Y,mutationApi:z}=pJ8.create({id:K,code:$.code,name:$.name,createdAt:$.created_at,updatedAt:$.updated_at,pk:q});return{store:Y,mutationApi:z,id:K,pk:q}},BJ8=($,K)=>{let q=Gx($),Y=$.id,{store:z,mutationApi:J}=cJ8.create({id:q,name:$.name,createdAt:$.created_at,updatedAt:$.updated_at,children:K});return{store:z,mutationApi:J,id:q,pk:Y}},NH6=async($,K,q,Y,z)=>{let J=await $Y.readEntityTypeId($,K,"n",null),P=await v9.nextSeq($,"store",q,"n"),W=`${Y}n${P}`,H=M1();await $.insertInto("field_definitions").values({store_id:q,object_id:W,entity_type_id:J,type_code:"n",seq:P,owner_entity_id:null,name:"default",label:"Default Field",description:"Auto-created for ad-hoc fields without explicit definitions",primitive_type:"string",required:0,multiplicity:"single",config:null,is_system:1,ordinal:null,created_at:H,updated_at:H}).execute()},hH6=()=>{let $=new Map,K=new Map,q=async(O,X,{code:w,name:T},G)=>{let v=M1(),f=await v9.nextSeq(O,"global",null,"s"),V=`S${f}`,h=await O.insertInto("stores").values({id:f,object_id:V,type:"local",code:w,name:T,created_at:v,updated_at:v}).returningAll().executeTakeFirstOrThrow(),{store:A,mutationApi:N,id:S,pk:I}=vx(h);return await NH6(O,X,I,w,G),G(()=>{$.set(S,T6.create(A,N,I)),K.set(I,S)}),A},Y=async(O,X,{name:w},T)=>{let G=M1(),v=await v9.nextSeq(O,"global",null,"s"),f=`S${v}`,V=await O.insertInto("stores").values({id:v,object_id:f,type:"demux",code:null,name:w,created_at:G,updated_at:G}).returningAll().executeTakeFirstOrThrow(),{store:h,mutationApi:A,id:N,pk:S}=BJ8(V,[]);return T(()=>{$.set(N,T6.create(h,A,S)),K.set(S,N)}),h},z=async(O,X,w)=>{let T=$.get(w);if(T)return T.getEntity();let G=Cw(w);if(G===null)return null;let v=await O.selectFrom("stores").selectAll().where("id","=",G).executeTakeFirst();if(!v)return null;let f,V,h,A;if(v.type==="local"){let N=vx(v);f=N.store,V=N.mutationApi,h=N.id,A=N.pk}else{let N=await O.selectFrom("store_children").innerJoin("stores","stores.id","store_children.child_store_id").select(["stores.object_id"]).where("store_children.parent_store_id","=",v.id).execute(),S=[];for(let D of N){let B=await z(O,X,D.object_id);if(B)S.push(B)}let I=BJ8(v,S);f=I.store,V=I.mutationApi,h=I.id,A=I.pk}return $.set(h,T6.create(f,V,A)),K.set(A,h),f};return Object.freeze({createLocalStore:q,createDemuxStore:Y,readStore:z,readSharedStore:async(O,X)=>{let w=await O.selectFrom("stores").selectAll().where("code","=","B").executeTakeFirstOrThrow(),T=Gx(w),G=$.get(T);if(G)return G.getEntity();let{store:v,mutationApi:f,pk:V}=vx(w);return $.set(T,T6.create(v,f,V)),K.set(V,T),v},readRootStoreForProject:async(O,X,w)=>{let T=w&&w.length>=2&&w[0]==="P"?parseInt(w.slice(1),10):null;r.factory(T===null||isNaN(T),n.validation,`Invalid project ID: ${w}`,"INVALID_PROJECT_ID");let G=await O.selectFrom("project_stores").innerJoin("stores","stores.id","project_stores.store_id").select(["stores.object_id"]).where("project_stores.project_id","=",T).where("project_stores.is_root","=",1).executeTakeFirst();return r.factory(!G,n.notFound,`Root store not found for project: ${w}`,"ROOT_STORE_NOT_FOUND"),await z(O,X,G.object_id)},addChildToDemux:async(O,X,{demuxId:w,childId:T},G)=>{let v=$.get(w),f=$.get(T),V,h;if(v)V=v.getPk();else{let A=Cw(w);r.factory(A===null,n.validation,`Invalid demux store ID: ${w}`,"INVALID_ID");let N=await O.selectFrom("stores").select("id").where("id","=",A).executeTakeFirst();r.factory(!N,n.notFound,`Demux store not found: ${w}`,"STORE_NOT_FOUND"),V=N.id}if(f)h=f.getPk();else{let A=Cw(T);r.factory(A===null,n.validation,`Invalid child store ID: ${T}`,"INVALID_ID");let N=await O.selectFrom("stores").select("id").where("id","=",A).executeTakeFirst();r.factory(!N,n.notFound,`Child store not found: ${T}`,"STORE_NOT_FOUND"),h=N.id}await O.insertInto("store_children").values({parent_store_id:V,child_store_id:h}).execute(),G(()=>{let A=$.get(w),N=$.get(T);if(A&&N)A.getMutationApi().addChild(N.getEntity())})},addStoresToProject:async(O,X,{projectId:w,rootStoreId:T,storeIds:G})=>{let v=w&&w.length>=2&&w[0]==="P"?parseInt(w.slice(1),10):null;r.factory(v===null||isNaN(v),n.validation,`Invalid project ID: ${w}`,"INVALID_PROJECT_ID");let f=await O.selectFrom("projects").select("id").where("id","=",v).executeTakeFirst();r.factory(!f,n.notFound,`Project not found: ${w}`,"PROJECT_NOT_FOUND");let V=f.id,h=$.get(T),A;if(h)A=h.getPk();else{let N=Cw(T);r.factory(N===null,n.validation,`Invalid root store ID: ${T}`,"INVALID_ID");let S=await O.selectFrom("stores").select("id").where("id","=",N).executeTakeFirst();r.factory(!S,n.notFound,`Root store not found: ${T}`,"STORE_NOT_FOUND"),A=S.id}for(let N of G){let S=$.get(N),I;if(S)I=S.getPk();else{let D=Cw(N);r.factory(D===null,n.validation,`Invalid store ID: ${N}`,"INVALID_ID");let B=await O.selectFrom("stores").select("id").where("id","=",D).executeTakeFirst();r.factory(!B,n.notFound,`Store not found: ${N}`,"STORE_NOT_FOUND"),I=B.id}await O.insertInto("project_stores").values({project_id:V,store_id:I,is_root:I===A?1:0}).execute()}},evictStore:(O)=>{let X=$.get(O);if(X)K.delete(X.getPk());$.delete(O)}})},UJ8=Object.freeze({create:hH6});var CH6=({store:$})=>{let K=async(Z,O,X,w,T,G)=>{let v=X.split("/").filter((h)=>h.trim());r.factory(v.length===0,n.validation,"Path cannot be empty or contain only slashes","EMPTY_PATH");let f=await $.readRootFolderForType(Z,O,w,T);for(let h=0;h<v.length-1;h++){let A=fK.validateFolderName(v[h]),N=await $.findFolderByName(Z,O,f.getObjectId(),A);if(N)f=N;else f=await $.createFolder(Z,O,{storeCode:T,parentId:f.getObjectId(),name:A},G)}let V=fK.validateFolderName(v[v.length-1]);return{parentObjectId:f.getObjectId(),name:V}},q=async(Z,O,{store:X,path:w,type:T},G)=>{r.factory(!w||w==="/",n.validation,"Path cannot be empty","EMPTY_PATH"),r.factory(T!=="d"&&T!=="t",n.validation,'Type must be "d" or "t"',"INVALID_TYPE"),r.factory(!X,n.validation,"store is required","MISSING_STORE_CODE");let{parentObjectId:v,name:f}=await K(Z,O,w,T,X,G),V=await $.isDuplicateNameInParent(Z,O,v,f);return r.factory(V,n.conflict,`Folder "${f}" already exists in parent`,"DUPLICATE_NAME"),await $.createFolder(Z,O,{storeCode:X,parentId:v,name:f},G)},Y=async(Z,O,{id:X})=>{return await $.readFolder(Z,O,{id:X})};return Object.freeze({resolvePath:K,createFolder:q,readFolder:Y,renameFolder:async(Z,O,{id:X,name:w},T)=>{let G=await Y(Z,O,{id:X});r.factory(!G,n.notFound,`Folder not found: ${X}`,"FOLDER_NOT_FOUND"),r.factory(fK.isRootFolder(G),n.validation,"Cannot rename root folder","CANNOT_RENAME_ROOT");let v=fK.validateFolderName(w),f=await $.isDuplicateNameInParent(Z,O,G.getParentId(),v,X);return r.factory(f,n.conflict,`Folder "${v}" already exists in parent`,"DUPLICATE_NAME"),await $.updateFolder(Z,O,{id:X,name:v},T)},moveFolder:async(Z,O,{id:X,parentId:w},T)=>{let G=await Y(Z,O,{id:X});r.factory(!G,n.notFound,`Folder not found: ${X}`,"FOLDER_NOT_FOUND"),r.factory(fK.isRootFolder(G),n.validation,"Cannot move root folder","CANNOT_MOVE_ROOT");let v=await Y(Z,O,{id:w});r.factory(!v,n.notFound,`Parent folder not found: ${w}`,"PARENT_NOT_FOUND"),r.factory(!X||X.length<1,n.validation,"Invalid folder ID format","INVALID_ID_FORMAT"),r.factory(!w||w.length<1,n.validation,"Invalid parent ID format","INVALID_PARENT_ID_FORMAT");let f=X[0],V=w[0];r.factory(f!==V,n.validation,"Cannot move folders between stores","CROSS_STORE_MOVE"),r.factory(X===w,n.validation,"Cannot move folder into itself","SELF_MOVE");let h=w;while(h!==null){r.factory(h===X,n.validation,"Cannot move folder into its own descendant","CYCLE_DETECTED");let N=await $.readFolder(Z,O,{id:h});if(!N)break;h=N.getParentId()}let A=await $.isDuplicateNameInParent(Z,O,w,G.getName(),X);return r.factory(A,n.conflict,`Folder "${G.getName()}" already exists in target parent`,"DUPLICATE_NAME"),await $.updateFolder(Z,O,{id:X,parentId:w},T)},deleteFolder:async(Z,O,{id:X},w)=>{let T=await Y(Z,O,{id:X});return r.factory(!T,n.notFound,`Folder not found: ${X}`,"FOLDER_NOT_FOUND"),r.factory(fK.isRootFolder(T),n.validation,"Cannot delete root folder","CANNOT_DELETE_ROOT"),await $.deleteFolder(Z,O,{id:X},w)},getFolderByPath:async(Z,O,{path:X,type:w,storeCode:T})=>{return await $.getFolderByPath(Z,O,{path:X,type:w,storeCode:T})},listFolderContents:async(Z,O,{folderId:X,type:w,storeCode:T})=>{return await $.listFolderContents(Z,O,{folderId:X,type:w,storeCode:T})}})},lJ8=Object.freeze({create:CH6});var RH6=({store:$})=>{let K=async(W,H,{store:Z,ownerEntityId:O,name:X,label:w,description:T,primitiveType:G,required:v,multiplicity:f,isSystem:V=!1},h)=>{r.factory(!Z,n.validation,"store is required","MISSING_STORE_CODE"),r.factory(G!=="string"&&G!=="object_ref",n.validation,`Invalid primitiveType: ${G}. Must be 'string' or 'object_ref'`,"INVALID_PRIMITIVE_TYPE"),r.factory(f!=="single"&&f!=="multi",n.validation,`Invalid multiplicity: ${f}. Must be 'single' or 'multi'`,"INVALID_MULTIPLICITY");let A=/^[a-zA-Z0-9_]+$/;return r.factory(!X||!A.test(X),n.validation,`Invalid name: ${X}. Must contain only alphanumeric characters and underscores`,"INVALID_NAME"),await $.createFieldDefinition(W,H,{storeCode:Z,ownerEntityId:O,name:X,label:w,description:T,primitiveType:G,required:v,multiplicity:f,isSystem:V},h)},q=async(W,H,{id:Z})=>{return r.factory(!Z||Z.length<3,n.validation,"Invalid field definition ID","INVALID_ID"),await $.readFieldDefinition(W,H,{id:Z})};return Object.freeze({createFieldDefinition:K,readFieldDefinition:q,getFieldDefinitionsForOwner:async(W,H,{store:Z,ownerEntityId:O,includeSystem:X=!0})=>{r.factory(!Z,n.validation,"store is required","MISSING_STORE_CODE");let w=null;if(O)w=null;return await $.getFieldDefinitionsForOwner(W,H,{storeCode:Z,ownerEntityPk:w,includeSystem:X})},deleteFieldDefinition:async(W,H,{id:Z},O)=>{let X=await q(W,H,{id:Z});return r.factory(!X,n.notFound,`Field definition not found: ${Z}`,"DEFINITION_NOT_FOUND"),r.factory(X.getIsSystem(),n.validation,`Cannot delete system field definition: ${Z}`,"SYSTEM_DEFINITION"),await $.deleteFieldDefinition(W,H,{id:Z},O)},setFieldValue:async(W,H,{entityId:Z,fieldDefinitionId:O,fieldName:X,value:w,values:T},G)=>{return r.factory(!Z,n.validation,"entityId is required","MISSING_ENTITY_ID"),r.factory(!O&&!X,n.validation,"Either fieldDefinitionId or fieldName must be provided","MISSING_FIELD_IDENTIFIER"),r.factory(w!==void 0&&T!==void 0,n.validation,"Cannot provide both value and values","AMBIGUOUS_VALUE"),r.factory(w===void 0&&T===void 0,n.validation,"Either value or values must be provided","MISSING_VALUE"),await $.setFieldValue(W,H,{entityId:Z,fieldDefinitionId:O,fieldName:X,value:w,values:T},G)},deleteFieldValue:async(W,H,{entityId:Z,fieldDefinitionId:O,fieldName:X},w)=>{return r.factory(!Z,n.validation,"entityId is required","MISSING_ENTITY_ID"),r.factory(!O&&!X,n.validation,"Either fieldDefinitionId or fieldName must be provided","MISSING_FIELD_IDENTIFIER"),await $.deleteFieldValue(W,H,{entityId:Z,fieldDefinitionId:O,fieldName:X},w)}})},FJ8=Object.freeze({create:RH6});var DH6=({store:$,folderService:K,entityName:q})=>{let Y=async(V,h,{store:A,path:N,type:S,content:I},D)=>{r.factory(!N||N==="/",n.validation,"Path cannot be empty","EMPTY_PATH"),r.factory(!A,n.validation,"store is required","MISSING_STORE_CODE");let B=N.split("/").filter((K8)=>K8.trim()),g=B[B.length-1],R=B.slice(0,-1).join("/")||null,y;if(R){let K8=await K.resolvePath(V,h,R,S,A,D),R8=await $.findFolderByName(V,h,K8.parentObjectId,K8.name);if(R8)y=R8.getObjectId();else y=(await $.createFolder(V,h,{storeCode:A,parentId:K8.parentObjectId,name:K8.name},D)).getObjectId()}else y=(await $.readRootFolderForType(V,h,S,A)).getObjectId();let t=await $.findDocumentByName(V,h,y,g);return r.factory(t,n.conflict,`${q} "${g}" already exists in folder`,"DUPLICATE_NAME"),await $.createDocument(V,h,{storeCode:A,parentId:y,name:g,initialContent:I},D)},z=async(V,h,{id:A})=>{let N=await $.readDocument(V,h,{id:A});return r.factory(!N,n.notFound,`${q} not found: ${A}`,"NOT_FOUND"),N};return Object.freeze({create:Y,read:z,readByPath:async(V,h,{path:A,type:N,storeCode:S})=>{let I=A.split("/").filter((R)=>R.trim()),D=I[I.length-1],B=I.slice(0,-1).join("/")||null,g;if(B){let R=await $.getFolderByPath(V,h,{path:B,type:N,storeCode:S});if(!R)return null;g=R.getObjectId()}else g=(await $.readRootFolderForType(V,h,N,S)).getObjectId();return await $.findDocumentByName(V,h,g,D)},updatePath:async(V,h,{id:A,path:N,type:S},I)=>{r.factory(!N||N==="/",n.validation,"Path cannot be empty","EMPTY_PATH");let D=await z(V,h,{id:A}),B=N.split("/").filter((I8)=>I8.trim()),g=B[B.length-1],R=B.slice(0,-1).join("/")||null,y=A[0],t;if(R){let I8=await K.resolvePath(V,h,R,S,y,I),E8=await $.findFolderByName(V,h,I8.parentObjectId,I8.name);if(E8)t=E8.getObjectId();else t=(await $.createFolder(V,h,{storeCode:y,parentId:I8.parentObjectId,name:I8.name},I)).getObjectId()}else t=(await $.readRootFolderForType(V,h,S,y)).getObjectId();let K8=g!==D.getName(),R8=t!==D.getParentId();if(!K8&&!R8)return D;if(K8||R8){let I8=await $.findDocumentByName(V,h,t,g);r.factory(I8&&I8.getObjectId()!==A,n.conflict,`${q} "${g}" already exists in target folder`,"DUPLICATE_NAME")}return await $.updateDocument(V,h,{id:A,name:K8?g:void 0,parentId:R8?t:void 0},I)},del:async(V,h,{id:A},N)=>{return await z(V,h,{id:A}),await $.deleteDocument(V,h,{id:A},N)},saveDraft:async(V,h,{id:A,content:N,clientId:S},I)=>{return await z(V,h,{id:A}),await $.saveDraft(V,h,{id:A,content:N,clientId:S},I)},readDraft:async(V,h,{id:A})=>{await z(V,h,{id:A});let N=await $.readDraft(V,h,{id:A});return r.factory(!N,n.notFound,`No draft found for ${q}: ${A}`,"DRAFT_NOT_FOUND"),N},publish:async(V,h,{id:A},N)=>{return await z(V,h,{id:A}),await $.publishDocument(V,h,{id:A},N)},discardDraft:async(V,h,{id:A},N)=>{return await z(V,h,{id:A}),await $.discardDraft(V,h,{id:A},N)},readVersion:async(V,h,{id:A,versionNumber:N})=>{await z(V,h,{id:A});let S=await $.readVersion(V,h,{id:A,versionNumber:N});return r.factory(!S,n.notFound,`Version ${N} not found for ${q}: ${A}`,"VERSION_NOT_FOUND"),S},getVersions:async(V,h,{id:A})=>{return await z(V,h,{id:A}),await $.getVersions(V,h,{id:A})},setEditState:async(V,h,{id:A,clientId:N},S)=>{return await z(V,h,{id:A}),await $.setEditState(V,h,{id:A,clientId:N},S)},clearEditState:async(V,h,{id:A},N)=>{return await z(V,h,{id:A}),await $.clearEditState(V,h,{id:A},N)},getEditState:async(V,h,{id:A})=>{return await z(V,h,{id:A}),await $.getEditState(V,h,{id:A})}})},Vf=Object.freeze({create:DH6});var SH6=({store:$,folderService:K})=>{let q=Vf.create({store:$,folderService:K,entityName:"Document"}),Y="d";return Object.freeze({createDocument:async(A,N,{store:S,path:I,type:D,content:B},g)=>{return r.factory(D!=="d",n.validation,'type must be "d" for documents',"INVALID_TYPE"),await q.create(A,N,{store:S,path:I,type:D,content:B},g)},readDocument:async(A,N,{id:S})=>{return await q.read(A,N,{id:S})},readDocumentByPath:async(A,N,{path:S,type:I,storeCode:D})=>{return r.factory(I!=="d",n.validation,'type must be "d" for documents',"INVALID_TYPE"),await q.readByPath(A,N,{path:S,type:I,storeCode:D})},updateDocumentPath:async(A,N,{id:S,path:I,type:D},B)=>{return r.factory(D!=="d",n.validation,'type must be "d" for documents',"INVALID_TYPE"),await q.updatePath(A,N,{id:S,path:I,type:D},B)},deleteDocument:async(A,N,{id:S},I)=>{return await q.del(A,N,{id:S},I)},saveDraft:async(A,N,{id:S,content:I,clientId:D},B)=>{return await q.saveDraft(A,N,{id:S,content:I,clientId:D},B)},readDraft:async(A,N,{id:S})=>{return await q.readDraft(A,N,{id:S})},publishDocument:async(A,N,{id:S},I)=>{return await q.publish(A,N,{id:S},I)},discardDraft:async(A,N,{id:S},I)=>{return await q.discardDraft(A,N,{id:S},I)},readVersion:async(A,N,{id:S,versionNumber:I})=>{return await q.readVersion(A,N,{id:S,versionNumber:I})},getVersions:async(A,N,{id:S})=>{return await q.getVersions(A,N,{id:S})},setEditState:async(A,N,{id:S,clientId:I},D)=>{return await q.setEditState(A,N,{id:S,clientId:I},D)},clearEditState:async(A,N,{id:S},I)=>{return await q.clearEditState(A,N,{id:S},I)},getEditState:async(A,N,{id:S})=>{return await q.getEditState(A,N,{id:S})},listDocuments:async(A,N,{parentId:S,storeCode:I})=>{return await $.listDocuments(A,N,{parentId:S,storeCode:I})}})},iJ8=Object.freeze({create:SH6});var jO8=H1(HH8(),1),vO8=H1(Rb(),1),GO8=($)=>{if(!$)return{parameters:{},target:null,targetPath:null,body:""};let K=jO8.default($),q=K.data?.parameters||{},Y=K.data?.target||null,z=K.data?.targetPath||null,J=K.content;return{parameters:q,target:Y,targetPath:z,body:J}},j_6=($)=>{if(!$)return new Set;let K=new Set;try{let q=vO8.default.parse($),Y=(z)=>{if(!z)return;if(z.type==="PathExpression"){if(!z.data&&z.parts.length>0){let J=z.parts.join(".");if(!J.startsWith("@"))K.add(J)}}if(z.program)Y(z.program);if(z.inverse)Y(z.inverse);if(z.body)z.body.forEach(Y);if(z.params)z.params.forEach(Y);if(z.hash?.pairs)z.hash.pairs.forEach((J)=>Y(J.value));if(z.path)Y(z.path)};Y(q)}catch(q){throw new Error(`Invalid Handlebars template: ${q.message}`)}return K},v_6=($)=>{if(!$)return{parameters:{},target:null,targetPath:null};let{parameters:K,target:q,targetPath:Y}=GO8($);return{parameters:K,target:q,targetPath:Y}},v5=Object.freeze({parseFrontMatter:GO8,extractVariables:j_6,getParameters:v_6});var Db=H1(Rb(),1);import G_6 from"crypto";var __6=({store:$,folderService:K})=>{let Y=((I)=>{return Object.freeze({findDocumentByName:(...D)=>I.findTemplateByName(...D),createDocument:(...D)=>I.createTemplate(...D),readDocument:(...D)=>I.readTemplate(...D),updateDocument:(...D)=>I.updateTemplate(...D),deleteDocument:(...D)=>I.deleteTemplate(...D),saveDraft:(...D)=>I.saveTemplateDraft(...D),readDraft:(...D)=>I.readTemplateDraft(...D),publishDocument:(...D)=>I.publishTemplate(...D),discardDraft:(...D)=>I.discardTemplateDraft(...D),readVersion:(...D)=>I.readTemplateVersion(...D),getVersions:(...D)=>I.getTemplateVersions(...D),findFolderByName:(...D)=>I.findFolderByName(...D),createFolder:(...D)=>I.createFolder(...D),readRootFolderForType:(...D)=>I.readRootFolderForType(...D),getFolderByPath:(...D)=>I.getFolderByPath(...D),setEditState:(...D)=>I.setEditState(...D),clearEditState:(...D)=>I.clearEditState(...D),getEditState:(...D)=>I.getEditState(...D)})})($),z=Vf.create({store:Y,folderService:K,entityName:"Template"}),J="t",P=async(I,D,{store:B,path:g,type:R,content:y},t)=>{return r.factory(R!=="t",n.validation,'type must be "t" for templates',"INVALID_TYPE"),await z.create(I,D,{store:B,path:g,type:R,content:y},t)},W=async(I,D,{id:B})=>{return await z.read(I,D,{id:B})};return Object.freeze({createTemplate:P,readTemplate:W,readTemplateByPath:async(I,D,{path:B,type:g,storeCode:R})=>{return r.factory(g!=="t",n.validation,'type must be "t" for templates',"INVALID_TYPE"),await z.readByPath(I,D,{path:B,type:g,storeCode:R})},updateTemplatePath:async(I,D,{id:B,path:g,type:R},y)=>{return r.factory(R!=="t",n.validation,'type must be "t" for templates',"INVALID_TYPE"),await z.updatePath(I,D,{id:B,path:g,type:R},y)},deleteTemplate:async(I,D,{id:B},g)=>{return await z.del(I,D,{id:B},g)},saveDraft:async(I,D,{id:B,content:g,clientId:R},y)=>{return await z.saveDraft(I,D,{id:B,content:g,clientId:R},y)},readDraft:async(I,D,{id:B})=>{return await z.readDraft(I,D,{id:B})},publishTemplate:async(I,D,{id:B},g)=>{return await z.publish(I,D,{id:B},g)},discardDraft:async(I,D,{id:B},g)=>{return await z.discardDraft(I,D,{id:B},g)},readVersion:async(I,D,{id:B,versionNumber:g})=>{return await z.readVersion(I,D,{id:B,versionNumber:g})},getVersions:async(I,D,{id:B})=>{return await z.getVersions(I,D,{id:B})},setEditState:async(I,D,{id:B,clientId:g},R)=>{return await z.setEditState(I,D,{id:B,clientId:g},R)},clearEditState:async(I,D,{id:B},g)=>{return await z.clearEditState(I,D,{id:B},g)},getEditState:async(I,D,{id:B})=>{return await z.getEditState(I,D,{id:B})},renderTemplate:async(I,D,{id:B,params:g={},target:R="stdout",targetOptions:y={}},t,K8,R8)=>{let I8=await W(I,D,{id:B});r.factory(!I8,n.notFound,"Template not found","NOT_FOUND");let E8=I8.getPublishedContent();r.factory(!E8,n.validation,"Template has no published content","NO_PUBLISHED_CONTENT");let{body:t8}=v5.parseFrontMatter(E8),g8;try{g8=Db.default.compile(t8)(g)}catch(m8){throw n.validation(`Failed to render template: ${m8.message}`,"RENDER_ERROR")}switch(R){case"stdout":return{success:!0,target:"stdout",content:g8};case"clipboard":return await K8.copyToClipboard(g8),{success:!0,target:"clipboard",content:g8,message:"Content copied to clipboard"};case"document":{let{path:m8,publish:V6,storeCode:C3="A"}=y;r.factory(!m8,n.validation,"targetOptions.path is required for document target","MISSING_PATH");let P3=G_6.randomUUID(),E4=await R8.readDocumentByPath(I,D,{path:m8,type:"d",storeCode:C3}),a3=!1;if(!E4)E4=await R8.createDocument(I,D,{store:C3,path:m8,type:"d",content:g8},t),a3=!0;else await R8.saveDraft(I,D,{id:E4.getObjectId(),content:g8,clientId:P3},t);let $1=!1;if(V6)await R8.publishDocument(I,D,{id:E4.getObjectId()},t),$1=!0;return{success:!0,target:"document",documentId:E4.getObjectId(),created:a3,published:$1,path:m8}}case"file":throw n.validation("File target not yet implemented","NOT_IMPLEMENTED");default:throw n.validation(`Unknown target: ${R}`,"INVALID_TARGET")}},listTemplates:async(I,D,{parentId:B,storeCode:g})=>{return await $.listTemplates(I,D,{parentId:B,storeCode:g})}})},_O8=Object.freeze({create:__6});import iw from"node:fs";import fO8 from"node:os";import Qf from"node:path";var f_6=({projectStore:$,storeStore:K})=>{return Object.freeze({createProject:async(J,P,{name:W,path:H},Z)=>{if(await $.readProjectByPath(J,P,H)){let v=new Error("Project with this path already exists");throw v.code="DUPLICATE_PATH",v}let X=await $.createProject(J,P,{name:W,path:H},Z),w=await K.createLocalStore(J,P,{code:"A",name:"Project"},Z);await w.createFolder(J,P,{parentId:null,name:null,subtype:"root_d"},Z),await w.createFolder(J,P,{parentId:null,name:null,subtype:"root_t"},Z);let T=await K.readSharedStore(J,P),G=await K.createDemuxStore(J,P,{name:W},Z);return await K.addChildToDemux(J,P,{demuxId:G.getObjectId(),childId:w.getObjectId()},Z),await K.addChildToDemux(J,P,{demuxId:G.getObjectId(),childId:T.getObjectId()},Z),await K.addStoresToProject(J,P,{projectId:X.getObjectId(),rootStoreId:G.getObjectId(),storeIds:[G.getObjectId(),w.getObjectId(),T.getObjectId()]}),X},validateProjectPath:(J)=>{if(!J||typeof J!=="string"){let w=new Error("Path is required and must be a non-empty string");throw w.code="VALIDATION_ERROR",w}let P;if(J==="~")P=fO8.homedir();else if(J.startsWith("~/"))P=Qf.join(fO8.homedir(),J.slice(2));else P=J;let W=iw.existsSync(P),H=!1,Z=!1,O=!1;if(W)try{if(H=iw.statSync(P).isDirectory(),H){let T=Qf.join(P,".git");try{Z=iw.statSync(T).isDirectory()}catch{Z=!1}let G=Qf.join(P,".claude");try{O=iw.statSync(G).isDirectory()}catch{O=!1}}}catch(w){H=!1}let X=Qf.basename(P);return{path:P,exists:W,isDirectory:H,hasGit:Z,hasClaude:O,suggestedName:X}},listProjects:async(J)=>{let P=await J.selectFrom("projects").selectAll().where("name","!=","__system__").orderBy("created_at","desc").execute();return await Promise.all(P.map(async(H)=>{let O=(await J.selectFrom("project_stores").innerJoin("stores","stores.id","project_stores.store_id").select(["stores.object_id","stores.code","stores.name","stores.type"]).where("project_stores.project_id","=",H.id).where("stores.type","=","local").execute()).map((X)=>({id:X.code==="B"?"store:B":`store:${X.code}:${H.object_id}`,code:X.code,name:X.name}));return{objectId:H.object_id,name:H.name,path:H.path,createdAt:H.created_at,updatedAt:H.updated_at,children:O}}))}})},df=Object.freeze({create:f_6});var V_6=()=>{let $=[];return{enqueuePostCommitHook:(K)=>{$.push(K)},flush:()=>{for(let K of $)try{K()}catch(q){console.error("Post-commit hook failed:",q)}}}},A_6=({db:$,folderService:K,fieldService:q,documentService:Y,templateService:z,projectService:J})=>{let P=async(V8)=>{let A8=V_6(),x8;return await $.transaction().execute(async(u8)=>{x8=await V8(u8,A8)}),A8.flush(),x8};return Object.freeze({createFolder:async(V8,{store:A8,path:x8,type:u8})=>{return P(async(J6,n6)=>{return await K.createFolder(J6,V8,{store:A8,path:x8,type:u8},n6.enqueuePostCommitHook)})},renameFolder:async(V8,{id:A8,name:x8})=>{return P(async(u8,J6)=>{return await K.renameFolder(u8,V8,{id:A8,name:x8},J6.enqueuePostCommitHook)})},moveFolder:async(V8,{id:A8,parentId:x8})=>{return P(async(u8,J6)=>{return await K.moveFolder(u8,V8,{id:A8,parentId:x8},J6.enqueuePostCommitHook)})},deleteFolder:async(V8,{id:A8})=>{return P(async(x8,u8)=>{return await K.deleteFolder(x8,V8,{id:A8},u8.enqueuePostCommitHook)})},createProject:async(V8,{name:A8,path:x8})=>{return P(async(u8,J6)=>{return await J.createProject(u8,V8,{name:A8,path:x8},J6.enqueuePostCommitHook)})},createFieldDefinition:async(V8,{store:A8,ownerEntityId:x8,name:u8,label:J6,description:n6,primitiveType:N4,required:D3,multiplicity:d4,isSystem:Z8})=>{return P(async(X8,U)=>{return await q.createFieldDefinition(X8,V8,{store:A8,ownerEntityId:x8,name:u8,label:J6,description:n6,primitiveType:N4,required:D3,multiplicity:d4,isSystem:Z8},U.enqueuePostCommitHook)})},readFieldDefinition:async(V8,{id:A8})=>{return await q.readFieldDefinition($,V8,{id:A8})},getFieldDefinitionsForOwner:async(V8,{store:A8,ownerEntityId:x8,includeSystem:u8})=>{return await q.getFieldDefinitionsForOwner($,V8,{store:A8,ownerEntityId:x8,includeSystem:u8})},setFieldValue:async(V8,{entityId:A8,fieldDefinitionId:x8,fieldName:u8,value:J6,values:n6})=>{return P(async(N4,D3)=>{return await q.setFieldValue(N4,V8,{entityId:A8,fieldDefinitionId:x8,fieldName:u8,value:J6,values:n6},D3.enqueuePostCommitHook)})},deleteFieldValue:async(V8,{entityId:A8,fieldDefinitionId:x8,fieldName:u8})=>{return P(async(J6,n6)=>{return await q.deleteFieldValue(J6,V8,{entityId:A8,fieldDefinitionId:x8,fieldName:u8},n6.enqueuePostCommitHook)})},deleteFieldDefinition:async(V8,{id:A8})=>{return P(async(x8,u8)=>{return await q.deleteFieldDefinition(x8,V8,{id:A8},u8.enqueuePostCommitHook)})},createDocument:async(V8,{store:A8,path:x8,type:u8,content:J6})=>{return P(async(n6,N4)=>{return await Y.createDocument(n6,V8,{store:A8,path:x8,type:u8,content:J6},N4.enqueuePostCommitHook)})},readDocument:async(V8,{id:A8})=>{return await Y.readDocument($,V8,{id:A8})},updateDocumentPath:async(V8,{id:A8,path:x8,type:u8})=>{return P(async(J6,n6)=>{return await Y.updateDocumentPath(J6,V8,{id:A8,path:x8,type:u8},n6.enqueuePostCommitHook)})},deleteDocument:async(V8,{id:A8})=>{return P(async(x8,u8)=>{return await Y.deleteDocument(x8,V8,{id:A8},u8.enqueuePostCommitHook)})},saveDraft:async(V8,{id:A8,content:x8,clientId:u8})=>{return P(async(J6,n6)=>{return await Y.saveDraft(J6,V8,{id:A8,content:x8,clientId:u8},n6.enqueuePostCommitHook)})},readDraft:async(V8,{id:A8})=>{return await Y.readDraft($,V8,{id:A8})},publishDocument:async(V8,{id:A8})=>{return P(async(x8,u8)=>{return await Y.publishDocument(x8,V8,{id:A8},u8.enqueuePostCommitHook)})},discardDraft:async(V8,{id:A8})=>{return P(async(x8,u8)=>{return await Y.discardDraft(x8,V8,{id:A8},u8.enqueuePostCommitHook)})},readVersion:async(V8,{id:A8,versionNumber:x8})=>{return await Y.readVersion($,V8,{id:A8,versionNumber:x8})},getVersions:async(V8,{id:A8})=>{return await Y.getVersions($,V8,{id:A8})},setEditState:async(V8,{id:A8,clientId:x8})=>{return P(async(u8,J6)=>{return await Y.setEditState(u8,V8,{id:A8,clientId:x8},J6.enqueuePostCommitHook)})},clearEditState:async(V8,{id:A8})=>{return P(async(x8,u8)=>{return await Y.clearEditState(x8,V8,{id:A8},u8.enqueuePostCommitHook)})},getEditState:async(V8,{id:A8})=>{return await Y.getEditState($,V8,{id:A8})},createTemplate:async(V8,{store:A8,path:x8,type:u8,content:J6})=>{return P(async(n6,N4)=>{return await z.createTemplate(n6,V8,{store:A8,path:x8,type:u8,content:J6},N4.enqueuePostCommitHook)})},readTemplate:async(V8,{id:A8})=>{return await z.readTemplate($,V8,{id:A8})},updateTemplatePath:async(V8,{id:A8,path:x8,type:u8})=>{return P(async(J6,n6)=>{return await z.updateTemplatePath(J6,V8,{id:A8,path:x8,type:u8},n6.enqueuePostCommitHook)})},deleteTemplate:async(V8,{id:A8})=>{return P(async(x8,u8)=>{return await z.deleteTemplate(x8,V8,{id:A8},u8.enqueuePostCommitHook)})},saveTemplateDraft:async(V8,{id:A8,content:x8,clientId:u8})=>{return P(async(J6,n6)=>{return await z.saveDraft(J6,V8,{id:A8,content:x8,clientId:u8},n6.enqueuePostCommitHook)})},publishTemplate:async(V8,{id:A8})=>{return P(async(x8,u8)=>{return await z.publishTemplate(x8,V8,{id:A8},u8.enqueuePostCommitHook)})},discardTemplateDraft:async(V8,{id:A8})=>{return P(async(x8,u8)=>{return await z.discardDraft(x8,V8,{id:A8},u8.enqueuePostCommitHook)})},readTemplateDraft:async(V8,{id:A8})=>{return await z.readDraft($,V8,{id:A8})},readTemplateVersion:async(V8,{id:A8,versionNumber:x8})=>{return await z.readVersion($,V8,{id:A8,versionNumber:x8})},getTemplateVersions:async(V8,{id:A8})=>{return await z.getVersions($,V8,{id:A8})},setTemplateEditState:async(V8,{id:A8,clientId:x8})=>{return P(async(u8,J6)=>{return await z.setEditState(u8,V8,{id:A8,clientId:x8},J6.enqueuePostCommitHook)})},clearTemplateEditState:async(V8,{id:A8})=>{return P(async(x8,u8)=>{return await z.clearEditState(x8,V8,{id:A8},u8.enqueuePostCommitHook)})},getTemplateEditState:async(V8,{id:A8})=>{return await z.getEditState($,V8,{id:A8})},renderTemplate:async(V8,{id:A8,params:x8,target:u8,targetOptions:J6},n6,N4)=>{return P(async(D3,d4)=>{return await z.renderTemplate(D3,V8,{id:A8,params:x8,target:u8,targetOptions:J6},d4.enqueuePostCommitHook,n6,N4)})}})},Sb=Object.freeze({create:A_6});var SE8=H1(CE8(),1),EE8=H1(C$(),1);import v$ from"fs/promises";import G$ from"path";import{createWriteStream as pr6}from"fs";import cr6 from"crypto";var dK=EE8.default("caw:export"),RE8=".caw-exports",DE8=".tmp",Br6=1,Ur6=({store:$,folderService:K,documentService:q,templateService:Y})=>{let z=()=>{let T=new Date,G=T.getFullYear(),v=String(T.getMonth()+1).padStart(2,"0"),f=String(T.getDate()).padStart(2,"0"),V=String(T.getHours()).padStart(2,"0"),h=String(T.getMinutes()).padStart(2,"0"),A=String(T.getSeconds()).padStart(2,"0");return`${G}-${v}-${f}-${V}${h}${A}`},J=async(T)=>{let G=G$.join(T,RE8),v=G$.join(G,DE8);try{return await v$.mkdir(G,{recursive:!0}),await v$.mkdir(v,{recursive:!0}),G}catch(f){if(f.code==="EACCES")throw n.validation("Permission denied creating export directory","EXPORT_ERROR");if(f.code==="ENOSPC")throw n.validation("Insufficient disk space","EXPORT_ERROR");throw dK("Error creating export directory: [%s] %s",f.code||"UNKNOWN",f.message),n.validation(`Failed to create export directory: ${f.message} (${f.code||"UNKNOWN"})`,"EXPORT_ERROR")}},P=async(T,G,v,f)=>{let V=[],h=async(A,N)=>{let S=await K.listFolderContents(T,G,{folderId:A,type:v,storeCode:f});for(let I of S)if(I.getParentId()!==null)V.push({entity:I,depth:N,contentType:v}),await h(I.getObjectId(),N+1)};return await h(null,0),V},W=async(T,G,v)=>{let f=[],V=[],h=async(A)=>{let N=await q.listDocuments(T,G,{parentId:A,storeCode:v});for(let I of N){let D=I.getPublishedVersionNumber();if(D!==null){let B=await q.readVersion(T,G,{id:I.getObjectId(),versionNumber:D});f.push({entity:I,version:B})}else V.push(I)}let S=await K.listFolderContents(T,G,{folderId:A,type:"d",storeCode:v});for(let I of S)await h(I.getObjectId())};return await h(null),{published:f,draftOnly:V}},H=async(T,G,v)=>{let f=[],V=[],h=async(A)=>{let N=await Y.listTemplates(T,G,{parentId:A,storeCode:v});for(let I of N){let D=I.getPublishedVersionNumber();if(D!==null){let B=await Y.readVersion(T,G,{id:I.getObjectId(),versionNumber:D});f.push({entity:I,version:B})}else V.push(I)}let S=await K.listFolderContents(T,G,{folderId:A,type:"t",storeCode:v});for(let I of S)await h(I.getObjectId())};return await h(null),{published:f,draftOnly:V}},Z=async(T)=>{try{await v$.rm(T,{recursive:!0,force:!0})}catch(G){dK("Warning: Failed to cleanup temp directory: %s",G.message)}};return Object.freeze({listExports:async(T,G,{projectPath:v})=>{let f=G$.join(v,RE8);try{let V=await v$.readdir(f),h=[];for(let A of V)if(A.endsWith(".zip")){let N=G$.join(f,A),S=await v$.stat(N);h.push({filename:A,timestamp:S.mtime.toISOString(),size:S.size})}return dK("Found %d export files",h.length),h}catch(V){if(V.code==="ENOENT")return[];throw V}},exportPreview:async(T,G,{storeCode:v})=>{let f=await P(T,G,"d",v),V=await P(T,G,"t",v),{published:h,draftOnly:A}=await W(T,G,v),{published:N,draftOnly:S}=await H(T,G,v),I={folders:[...f,...V].map((R)=>({id:R.entity.getObjectId(),path:R.entity.getPath(),name:R.entity.getName()})),documents:h.map((R)=>({id:R.entity.getObjectId(),path:R.entity.getPath(),name:R.entity.getName()})),templates:N.map((R)=>({id:R.entity.getObjectId(),path:R.entity.getPath(),name:R.entity.getName()}))},D={documents:A.map((R)=>({id:R.getObjectId(),path:R.getPath(),name:R.getName()})),templates:S.map((R)=>({id:R.getObjectId(),path:R.getPath(),name:R.getName()}))},B=I.folders.length+I.documents.length+I.templates.length,g=D.documents.length+D.templates.length;return dK("Preview: %d published, %d draft-only",B,g),{toExport:I,draftOnly:D}},exportDocuments:async(T,G,{storeCode:v,projectPath:f})=>{dK("Starting export for store %s",v);let V=await J(f),h=cr6.randomUUID(),A=G$.join(V,DE8,h);await v$.mkdir(A,{recursive:!0});try{let N=await P(T,G,"d",v),S=await P(T,G,"t",v),I=[...N,...S],{published:D,draftOnly:B}=await W(T,G,v),{published:g,draftOnly:R}=await H(T,G,v);dK("Found %d folders, %d documents, %d templates",I.length,D.length,g.length);let y=[...I.map((g8)=>({id:g8.entity.getObjectId(),type:"folder",path:g8.entity.getPath(),contentType:g8.contentType})),...D.map((g8)=>({id:g8.entity.getObjectId(),type:"document",path:g8.entity.getPath()})),...g.map((g8)=>({id:g8.entity.getObjectId(),type:"template",path:g8.entity.getPath()}))],t={version:Br6,exportedAt:new Date().toISOString(),entities:y};await v$.writeFile(G$.join(A,"manifest.json"),JSON.stringify(t,null,2),"utf-8");for(let g8 of I){let m8=g8.contentType==="d"?"documents":"templates",V6=G$.join(A,m8,g8.entity.getPath());await v$.mkdir(V6,{recursive:!0})}await v$.mkdir(G$.join(A,"documents"),{recursive:!0}),await v$.mkdir(G$.join(A,"templates"),{recursive:!0});for(let g8 of D){let m8=G$.join(A,"documents",g8.entity.getPath()),V6=g8.version.content;await v$.mkdir(G$.dirname(m8),{recursive:!0}),await v$.writeFile(m8,V6,"utf-8")}for(let g8 of g){let m8=G$.join(A,"templates",g8.entity.getPath()),V6=g8.version.content;await v$.mkdir(G$.dirname(m8),{recursive:!0}),await v$.writeFile(m8,V6,"utf-8")}for(let g8 of y)if(g8.type!=="folder"){let m8=g8.type==="document"?"documents":"templates",V6=G$.join(A,m8,g8.path);try{await v$.access(V6)}catch(C3){throw n.validation(`Manifest entry missing file: ${g8.path}`,"EXPORT_VALIDATION_FAILED")}}let K8=`caw-export-${z()}.zip`,R8=G$.join(V,K8),I8=pr6(R8),E8=SE8.default("zip",{zlib:{level:9}});E8.on("error",async(g8)=>{throw await Z(A),dK("Zip creation error: %s",g8.message),n.validation(`Export failed: ${g8.message}`,"EXPORT_ERROR")}),E8.pipe(I8),E8.directory(A,!1),await E8.finalize(),await new Promise((g8,m8)=>{I8.on("close",g8),I8.on("error",m8),setTimeout(()=>{m8(new Error("Zip creation timeout"))},60000)}),dK("Created zip: %s (%d bytes)",K8,E8.pointer()),await Z(A);let t8=y.length;return dK("Export complete: %s (%d entities)",K8,t8),{success:!0,filename:K8,path:R8,counts:{folders:I.length,documents:D.length,templates:g.length},draftOnlySkipped:{documents:B.length,templates:R.length}}}catch(N){throw await Z(A),N}}})},LE8=Object.freeze({create:Ur6});var XL8=H1(ZL8(),1),wL8=H1(C$(),1);import JJ from"fs/promises";import hY from"path";import js6 from"crypto";var S1=wL8.default("caw:import"),TB=".caw-exports",OL8=".tmp",vs6=1,Gs6=/\b([A-Z][dtfn]\d+)\b/g,_s6=({store:$,folderService:K,documentService:q,templateService:Y})=>{let z=(Z,O)=>{if(!Z)return Z;return Z.replace(Gs6,(X,w)=>{return O[w]??X})},J=async(Z)=>{try{await JJ.rm(Z,{recursive:!0,force:!0})}catch(O){S1("Warning: Failed to cleanup temp directory: %s",O.message)}},P=async(Z,O,{storeCode:X})=>{let w=await K.listFolderContents(Z,O,{folderId:null,type:"d",storeCode:X}),T=await K.listFolderContents(Z,O,{folderId:null,type:"t",storeCode:X}),G=await q.listDocuments(Z,O,{parentId:null,storeCode:X}),v=await Y.listTemplates(Z,O,{parentId:null,storeCode:X}),f=w.length===0&&T.length===0&&G.length===0&&v.length===0;return S1("Store %s empty check: %s",X,f),f},W=async(Z,O,{manifest:X,tempPath:w,storeCode:T})=>{return S1("Starting transaction..."),await Z.transaction().execute(async(G)=>{let v={},f=(B)=>{},V=X.entities.filter((B)=>B.type==="folder");S1("Phase 1: Creating %d folders",V.length);for(let B of V){let g=B.contentType||"d",R=await K.createFolder(G,O,{store:T,path:B.path,type:g},f);v[B.id]=R.getObjectId()}S1("Phase 1 complete - created %d folders",V.length);let h=X.entities.filter((B)=>B.type==="document"),A=[];S1("Phase 2: Reading %d documents",h.length);for(let B of h){let g=hY.join(w,"documents",B.path),R=await JJ.readFile(g,"utf-8");A.push({oldId:B.id,path:B.path,content:R})}S1("Phase 2 complete - read %d documents",A.length),S1("Phase 3: Creating %d document entities",A.length);let N=[];for(let B of A){let g=await q.createDocument(G,O,{store:T,path:B.path,type:"d"},f);v[B.oldId]=g.getObjectId(),N.push({document:g,originalContent:B.content})}S1("Phase 3 complete - created %d document entities",N.length);let S=X.entities.filter((B)=>B.type==="template"),I=[];S1("Phase 4: Reading %d templates",S.length);for(let B of S){let g=hY.join(w,"templates",B.path),R=await JJ.readFile(g,"utf-8");I.push({oldId:B.id,path:B.path,content:R})}S1("Phase 4 complete - read %d templates",I.length),S1("Phase 5: Creating %d template entities",I.length);let D=[];for(let B of I){let g=await Y.createTemplate(G,O,{store:T,path:B.path,type:"t"},f);v[B.oldId]=g.getObjectId(),D.push({template:g,originalContent:B.content})}S1("Phase 5 complete - created %d template entities",D.length),S1("Phase 6: Remapping and saving content for %d documents",N.length);for(let{document:B,originalContent:g}of N){let R=z(g,v);await q.saveDraft(G,O,{id:B.getObjectId(),content:R,clientId:"import-service"},f),await q.publishDocument(G,O,{id:B.getObjectId()},f)}S1("Phase 6 complete - saved and published %d documents",N.length),S1("Phase 7: Remapping and saving content for %d templates",D.length);for(let{template:B,originalContent:g}of D){let R=z(g,v);await Y.saveDraft(G,O,{id:B.getObjectId(),content:R,clientId:"import-service"},f),await Y.publishTemplate(G,O,{id:B.getObjectId()},f)}return S1("Phase 7 complete - saved and published %d templates",D.length),S1("Transaction committed successfully"),{success:!0,counts:{folders:V.length,documents:N.length,templates:D.length},remapped:v}})};return Object.freeze({isStoreEmpty:P,importDocuments:async(Z,O,{filename:X,storeCode:w,projectPath:T})=>{S1("Starting import from %s to store %s",X,w);let G=hY.join(T,TB,X);try{await JJ.access(G),S1("Zip file found: %s",G)}catch(A){throw n.notFound(`Export file not found: ${X}`,"EXPORT_NOT_FOUND")}S1("Validating zip and manifest...");let v=await P(Z,O,{storeCode:w});if(!v)throw n.conflict("Store not empty - import requires empty store","STORE_NOT_EMPTY");S1("Store empty check: %s",v);let f=js6.randomUUID(),V=hY.join(T,TB,OL8,f),h=hY.join(T,TB,OL8);await JJ.mkdir(h,{recursive:!0});try{new XL8.default(G).extractAllTo(V,!0),S1("Extracted zip to: %s",V)}catch(A){throw n.validation("Corrupted or invalid zip file","IMPORT_VALIDATION_FAILED")}try{let A=hY.join(V,"manifest.json"),N;try{let D=await JJ.readFile(A,"utf-8");N=JSON.parse(D)}catch(D){throw n.validation(`Failed to read manifest: ${D.message}`,"MANIFEST_READ_FAILED")}if(N.version!==vs6)throw n.validation(`Unsupported manifest version: ${N.version}`,"UNSUPPORTED_VERSION");if(!N.entities||!Array.isArray(N.entities))throw n.validation("Invalid manifest structure","MANIFEST_READ_FAILED");S1("Manifest valid: version=%d, entities=%d",N.version,N.entities.length);for(let D of N.entities)if(D.type!=="folder"){let B=D.type==="document"?hY.join(V,"documents",D.path):hY.join(V,"templates",D.path);try{await JJ.access(B)}catch(g){throw n.validation(`Missing file for manifest entry: ${D.path}`,"IMPORT_VALIDATION_FAILED")}}S1("All content files validated");let S=await W(Z,O,{manifest:N,tempPath:V,storeCode:w}),I=S.counts.folders+S.counts.documents+S.counts.templates;return S1("Import complete: %d entities imported",I),S}finally{await J(V)}}})},TL8=Object.freeze({create:_s6});var fs6=($)=>{let{name:K,interval:q,execute:Y}=$,z=null,J=!1,P=null,W=null,H=0,Z=null,V=Object.freeze({getName:()=>K,getInterval:()=>q,getIsRunning:()=>J,getLastRun:()=>P,getLastError:()=>W,getRunCount:()=>H,getNextRun:()=>Z}),h=async()=>{try{await Y(),P=new Date().toISOString(),W=null,H++}catch(D){console.error(`[CronJob] ${K} failed:`,D),W={message:D.message,timestamp:new Date().toISOString()}}if(J)Z=new Date(Date.now()+q).toISOString()},A=()=>{if(z!==null)return;z=setInterval(h,q),J=!0,Z=new Date(Date.now()+q).toISOString()},N=()=>{if(z===null)return;clearInterval(z),z=null,J=!1,Z=null},I=Object.freeze({start:A,stop:N,restart:()=>{N(),A()}});return{jobFns:V,controlFns:I}},vM=Object.freeze({create:fs6});var jL8=H1(C$(),1),Vs6=jL8.default("caw:cron:cleanup-edit-states"),vL8=async($)=>{let K=new Date(Date.now()-jW).toISOString();try{let q=await $.deleteFrom("document_edit_state").where("last_activity_at","<",K).execute(),Y=Number(q[0]?.numDeletedRows??0);if(Y>0)Vs6("Cleaned up %d expired edit locks (older than %d minutes)",Y,jW/60000);return{expired:Y}}catch(q){throw console.error("[Cleanup] Failed to cleanup expired edit locks:",q),q}};var As6=({db:$})=>{let{jobFns:K,controlFns:q}=vM.create({name:"cleanup-stale-edit-states",interval:900000,execute:async()=>{await vL8($)}});return{job:Object.freeze(K),control:q}},GL8=Object.freeze({create:As6});var ks6=({db:$})=>{let K=new Map,q=(Z,O)=>{let{job:X,control:w}=Z.create(O);K.set(X.getName(),{job:X,control:w})},Y=(Z)=>{let O=K.get(Z);if(!O)throw new Error(`Job not found: ${Z}`);let X=O.job.getIsRunning();return O.control.start(),{name:Z,status:X?"already-running":"started",isRunning:O.job.getIsRunning()}},z=(Z)=>{let O=K.get(Z);if(!O)throw new Error(`Job not found: ${Z}`);let X=O.job.getIsRunning();return O.control.stop(),{name:Z,status:X?"stopped":"already-stopped",isRunning:O.job.getIsRunning()}},J=(Z)=>{let O=K.get(Z);if(!O)throw new Error(`Job not found: ${Z}`);return O.control.restart(),{name:Z,status:"restarted",isRunning:O.job.getIsRunning()}},P=()=>{let Z=[];for(let[O,{job:X}]of K.entries())Z.push({name:X.getName(),interval:X.getInterval(),isRunning:X.getIsRunning(),lastRun:X.getLastRun(),lastError:X.getLastError(),runCount:X.getRunCount(),nextRun:X.getNextRun()});return Z},W=()=>{for(let[Z,{control:O}]of K.entries())O.start()},H=()=>{for(let[Z,{control:O}]of K.entries())O.stop()};return q(GL8,{db:$}),Object.freeze({register:q,start:Y,stop:z,restart:J,list:P,startAll:W,stopAll:H})},_L8=Object.freeze({create:ks6});import ty8 from"node:process";import AL8 from"node:process";import Rs6 from"node:os";import Ds6 from"node:fs";import hs6 from"node:fs";import fL8 from"node:fs";var jB;function Ms6(){try{return fL8.statSync("/.dockerenv"),!0}catch{return!1}}function Ns6(){try{return fL8.readFileSync("/proc/self/cgroup","utf8").includes("docker")}catch{return!1}}function vB(){if(jB===void 0)jB=Ms6()||Ns6();return jB}var GB,Cs6=()=>{try{return hs6.statSync("/run/.containerenv"),!0}catch{return!1}};function GM(){if(GB===void 0)GB=Cs6()||vB();return GB}var VL8=()=>{if(AL8.platform!=="linux")return!1;if(Rs6.release().toLowerCase().includes("microsoft")){if(GM())return!1;return!0}try{return Ds6.readFileSync("/proc/version","utf8").toLowerCase().includes("microsoft")?!GM():!1}catch{return!1}},kL8=AL8.env.__IS_WSL_TEST__?VL8:VL8();import _B from"node:process";function fB(){if(_B.platform!=="linux")return!1;if(_B.env.WAYLAND_DISPLAY)return!0;if(_B.env.XDG_SESSION_TYPE==="wayland")return!0;return!1}function k4($){if(typeof $!=="object"||$===null)return!1;let K=Object.getPrototypeOf($);return(K===null||K===Object.prototype||Object.getPrototypeOf(K)===null)&&!(Symbol.toStringTag in $)&&!(Symbol.iterator in $)}import{fileURLToPath as Ss6}from"node:url";var qZ=($,K)=>{let q=AB(Es6($));if(typeof q!=="string")throw new TypeError(`${K} must be a string or a file URL: ${q}.`);return q},Es6=($)=>VB($)?$.toString():$,VB=($)=>typeof $!=="string"&&$&&Object.getPrototypeOf($)===String.prototype,AB=($)=>$ instanceof URL?Ss6($):$;var _M=($,K=[],q={})=>{let Y=qZ($,"First argument"),[z,J]=k4(K)?[[],K]:[K,q];if(!Array.isArray(z))throw new TypeError(`Second argument must be either an array of arguments or an options object: ${z}`);if(z.some((H)=>typeof H==="object"&&H!==null))throw new TypeError(`Second argument must be an array of strings: ${z}`);let P=z.map(String),W=P.find((H)=>H.includes("\x00"));if(W!==void 0)throw new TypeError(`Arguments cannot contain null bytes ("\\0"): ${W}`);if(!k4(J))throw new TypeError(`Last argument must be an options object: ${J}`);return[Y,P,J]};import{ChildProcess as us6}from"node:child_process";import{StringDecoder as Ls6}from"node:string_decoder";var{toString:ML8}=Object.prototype,NL8=($)=>ML8.call($)==="[object ArrayBuffer]",Q4=($)=>ML8.call($)==="[object Uint8Array]",nK=($)=>new Uint8Array($.buffer,$.byteOffset,$.byteLength),Is6=new TextEncoder,hL8=($)=>Is6.encode($),xs6=new TextDecoder,fM=($)=>xs6.decode($),CL8=($,K)=>{return bs6($,K).join("")},bs6=($,K)=>{if(K==="utf8"&&$.every((J)=>typeof J==="string"))return $;let q=new Ls6(K),Y=$.map((J)=>typeof J==="string"?hL8(J):J).map((J)=>q.write(J)),z=q.end();return z===""?Y:[...Y,z]},Rj=($)=>{if($.length===1&&Q4($[0]))return $[0];return kB(gs6($))},gs6=($)=>$.map((K)=>typeof K==="string"?hL8(K):K),kB=($)=>{let K=new Uint8Array(ys6($)),q=0;for(let Y of $)K.set(Y,q),q+=Y.length;return K},ys6=($)=>{let K=0;for(let q of $)K+=q.length;return K};var EL8=($)=>Array.isArray($)&&Array.isArray($.raw),LL8=($,K)=>{let q=[];for(let[J,P]of $.entries())q=ms6({templates:$,expressions:K,tokens:q,index:J,template:P});if(q.length===0)throw new TypeError("Template script must not be empty");let[Y,...z]=q;return[Y,z,{}]},ms6=({templates:$,expressions:K,tokens:q,index:Y,template:z})=>{if(z===void 0)throw new TypeError(`Invalid backslash sequence: ${$.raw[Y]}`);let{nextTokens:J,leadingWhitespaces:P,trailingWhitespaces:W}=ps6(z,$.raw[Y]),H=DL8(q,J,P);if(Y===K.length)return H;let Z=K[Y],O=Array.isArray(Z)?Z.map((X)=>SL8(X)):[SL8(Z)];return DL8(H,O,W)},ps6=($,K)=>{if(K.length===0)return{nextTokens:[],leadingWhitespaces:!1,trailingWhitespaces:!1};let q=[],Y=0,z=RL8.has(K[0]);for(let P=0,W=0;P<$.length;P+=1,W+=1){let H=K[W];if(RL8.has(H)){if(Y!==P)q.push($.slice(Y,P));Y=P+1}else if(H==="\\"){let Z=K[W+1];if(Z===`
461
+ `.execute($),await $.schema.createIndex("entities_store_id_idx").on("entities").columns(["store_id"]).execute(),await $.schema.createIndex("entities_parent_folder_id_idx").on("entities").columns(["parent_folder_id"]).execute(),await $.schema.createTable("folders").addColumn("entity_id","integer",(K)=>K.primaryKey().references("entities.id").onDelete("cascade")).execute(),await $.schema.createTable("documents").addColumn("entity_id","integer",(K)=>K.primaryKey().references("entities.id").onDelete("cascade")).addColumn("published_version_id","integer",(K)=>K.references("document_versions.id")).execute(),await $.schema.createTable("document_drafts").addColumn("entity_id","integer",(K)=>K.primaryKey().references("entities.id").onDelete("cascade")).addColumn("content","text").addColumn("updated_at","text",(K)=>K.notNull()).execute(),await $.schema.createTable("document_versions").addColumn("id","integer",(K)=>K.primaryKey().autoIncrement()).addColumn("entity_id","integer",(K)=>K.notNull().references("entities.id").onDelete("cascade")).addColumn("version_number","integer",(K)=>K.notNull()).addColumn("content","text").addColumn("published_at","text",(K)=>K.notNull()).execute(),await $.schema.createIndex("document_versions_entity_version_unique").on("document_versions").columns(["entity_id","version_number"]).unique().execute(),await $.schema.createIndex("document_versions_entity_id_idx").on("document_versions").columns(["entity_id"]).execute(),await $.schema.createTable("document_edit_state").addColumn("entity_id","integer",(K)=>K.primaryKey().references("entities.id").onDelete("cascade")).addColumn("client_id","text",(K)=>K.notNull()).addColumn("started_at","text",(K)=>K.notNull()).addColumn("last_activity_at","text",(K)=>K.notNull()).execute(),await $.schema.createTable("field_definitions").addColumn("id","integer",(K)=>K.primaryKey().autoIncrement()).addColumn("store_id","integer",(K)=>K.notNull().references("stores.id").onDelete("cascade")).addColumn("object_id","text",(K)=>K.notNull()).addColumn("entity_type_id","integer",(K)=>K.notNull().references("entity_types.id")).addColumn("type_code","text",(K)=>K.notNull()).addColumn("seq","integer",(K)=>K.notNull()).addColumn("owner_entity_id","integer",(K)=>K.references("entities.id").onDelete("cascade")).addColumn("name","text",(K)=>K.notNull()).addColumn("label","text").addColumn("description","text").addColumn("primitive_type","text",(K)=>K.notNull()).addColumn("required","integer",(K)=>K.notNull().defaultTo(0)).addColumn("multiplicity","text",(K)=>K.notNull().defaultTo("single")).addColumn("config","text").addColumn("is_system","integer",(K)=>K.notNull().defaultTo(0)).addColumn("ordinal","integer").addColumn("created_at","text",(K)=>K.notNull()).addColumn("updated_at","text",(K)=>K.notNull()).execute(),await $.schema.createIndex("idx_field_def_object_id_unique").on("field_definitions").columns(["store_id","object_id"]).unique().execute(),await $.schema.createIndex("idx_field_def_store_type_seq").on("field_definitions").columns(["store_id","type_code","seq"]).unique().execute(),await $.schema.createIndex("idx_field_def_owner").on("field_definitions").columns(["owner_entity_id"]).execute(),await $.schema.createIndex("idx_field_def_owner_name").on("field_definitions").columns(["owner_entity_id","name"]).execute(),await $.schema.createTable("field_values").addColumn("id","integer",(K)=>K.primaryKey().autoIncrement()).addColumn("entity_id","integer",(K)=>K.notNull().references("entities.id").onDelete("cascade")).addColumn("field_definition_id","integer",(K)=>K.notNull().references("field_definitions.id").onDelete("cascade")).addColumn("value","text").addColumn("ordinal","integer").addColumn("updated_at","text",(K)=>K.notNull()).execute(),await $.schema.createIndex("idx_field_values_entity").on("field_values").columns(["entity_id"]).execute(),await $.schema.createIndex("idx_field_values_entity_def").on("field_values").columns(["entity_id","field_definition_id"]).execute()};var n46=()=>new Date().toISOString(),M1=n46;var o46=[{code:"f",name:"Folder",subtype:null},{code:"f",name:"Document Root Folder",subtype:"root_d"},{code:"f",name:"Template Root Folder",subtype:"root_t"},{code:"d",name:"Document",subtype:null},{code:"t",name:"Template",subtype:null},{code:"n",name:"field_definition",subtype:null}],Ue=async($)=>{return(await $.selectFrom("entity_types").select("id").limit(1).execute()).length>0},a46=async($,K,q=null)=>{return(await $.selectFrom("entity_types").select("id").where("code","=",K).where((z)=>q?z("subtype","=",q):z("subtype","is",null)).executeTakeFirstOrThrow()).id},Be=async($,K,q,Y)=>{let z=M1(),P=await a46($,"f",Y==="d"?"root_d":"root_t");if(!await $.selectFrom("sequences").select("next_value").where("scope_type","=","store").where("scope_id","=",K).where("type_code","=","f").executeTakeFirst())await $.insertInto("sequences").values({scope_type:"store",scope_id:K,type_code:"f",next_value:1}).execute();let H=await $.selectFrom("sequences").select("next_value").where("scope_type","=","store").where("scope_id","=",K).where("type_code","=","f").executeTakeFirst();await $.updateTable("sequences").set((w)=>({next_value:w("next_value","+",1)})).where("scope_type","=","store").where("scope_id","=",K).where("type_code","=","f").execute();let Z=`${q}f${H.next_value}`,O=await $.insertInto("entities").values({store_id:K,object_id:Z,entity_type_id:P,type_code:"f",seq:H.next_value,parent_folder_id:null,parent_object_id:null,name:null,created_at:z,updated_at:z}).returning("id").executeTakeFirstOrThrow();await $.insertInto("folders").values({entity_id:O.id}).execute();let X=Y==="d"?"document":"template";return O.id},r46=async($)=>{for(let K of o46)await $.insertInto("entity_types").values(K).execute()},s46=async($)=>{let K=await $.selectFrom("sequences").select("next_value").where("scope_type","=","global").where("scope_id","is",null).where("type_code","=","s").executeTakeFirstOrThrow();await $.updateTable("sequences").set((J)=>({next_value:J("next_value","+",1)})).where("scope_type","=","global").where("scope_id","is",null).where("type_code","=","s").execute();let q=`S${K.next_value}`,Y=M1(),z=await $.insertInto("stores").values({id:K.next_value,object_id:q,type:"local",code:"B",name:"Shared",created_at:Y,updated_at:Y}).returning("id").executeTakeFirstOrThrow();await Be($,z.id,"B","d"),await Be($,z.id,"B","t")},le=async($)=>{await r46($),await $.insertInto("sequences").values([{scope_type:"global",scope_id:null,type_code:"s",next_value:1},{scope_type:"global",scope_id:null,type_code:"p",next_value:1}]).execute(),await s46($)};var x0=H1(ie(),1),t46=($,K)=>{if($)throw new Error(K)},Qe=($,K)=>{if(x0.default.null($)||x0.default.undefined($))throw new Error(`${K} is required`)},e46=($,K)=>{if(Qe($,K),x0.default.empty($))throw new Error(`${K} cannot be empty`)},$36=($,K,...q)=>{if($)throw K(...q)},K36={condition:t46,nullish:Qe,empty:e46,factory:$36},r=K36;var UW6=typeof Bun!=="undefined",lW6=async($)=>{if(UW6){let{Database:K}=await import("bun:sqlite"),{BunSqliteDialect:q}=await Promise.resolve().then(() => H1(NJ8(),1)),Y=new K($);return Y.exec("PRAGMA journal_mode = WAL"),Y.exec("PRAGMA foreign_keys = ON"),new W5({dialect:new q({database:Y})})}else{let q=new(await import("better-sqlite3")).default($);return q.pragma("journal_mode = WAL"),q.pragma("foreign_keys = ON"),new W5({dialect:new kS({database:q})})}},FW6=($,K)=>{if(!pW6($)){if(!K)throw new Error(`Database file not found: ${$}`);cW6(BW6($),{recursive:!0})}},iW6=async($,K)=>{if(!await pe($)){if(!K)throw new Error("Database schema not found");await ce($)}},QW6=async($,K)=>{if(!await Ue($)){if(!K)throw new Error("Database seed data not found");await le($)}},dW6=($)=>{let{kyselyFactory:K=lW6}=$??{};return Object.freeze({getDb:async(Y,z)=>{if(r.nullish(Y,"databaseFilepath"),Y!==":memory:")FW6(Y,z);let J=await K(Y);return await iW6(J,z),await QW6(J,z),J}})},hJ8={create:dW6};var nW6=($)=>{let{id:K,name:q,createdAt:Y,updatedAt:z}=$,Z=Object.freeze({getObjectId:()=>K,getName:()=>q,getCreatedAt:()=>Y,getUpdatedAt:()=>z}),w=Object.freeze({setName:(T)=>{q=T},setUpdatedAt:(T)=>{z=T}});return{entityFns:Z,mutationFns:w}},w5=Object.freeze({create:nW6});var oW6=($)=>{let{id:K,name:q,path:Y,createdAt:z,updatedAt:J}=$,{entityFns:P,mutationFns:W}=w5.create({id:K,name:q,createdAt:z,updatedAt:J}),H=()=>Y,O=Object.freeze({...P,getPath:H,toJSON:()=>({objectId:P.getObjectId(),name:P.getName(),path:H(),createdAt:P.getCreatedAt(),updatedAt:P.getUpdatedAt()})}),w=Object.freeze({...W,setPath:(T)=>{Y=T}});return{entity:O,mutationApi:w}},CJ8=Object.freeze({create:oW6});var aW6=($,K,q)=>{return Object.freeze({getEntity:()=>$,getMutationApi:()=>K,getPk:()=>q})},T6=Object.freeze({create:aW6});var rW6=async($,K,q,Y)=>{if(!await $.selectFrom("sequences").select("next_value").where("scope_type","=",K).where("scope_id",q===null?"is":"=",q).where("type_code","=",Y).executeTakeFirst())await $.insertInto("sequences").values({scope_type:K,scope_id:q,type_code:Y,next_value:1}).execute();let J=await $.selectFrom("sequences").select("next_value").where("scope_type","=",K).where("scope_id",q===null?"is":"=",q).where("type_code","=",Y).executeTakeFirstOrThrow();return await $.updateTable("sequences").set((P)=>({next_value:P("next_value","+",1)})).where("scope_type","=",K).where("scope_id",q===null?"is":"=",q).where("type_code","=",Y).execute(),J.next_value},v9=Object.freeze({nextSeq:rW6});var sW6=($)=>$.object_id,RJ8=($)=>{if(!$||$.length<2||$[0]!=="P")return null;let K=parseInt($.slice(1),10);return isNaN(K)?null:K},_f=($)=>{let K=sW6($),q=$.id,{entity:Y,mutationApi:z}=CJ8.create({id:K,name:$.name,path:$.path,createdAt:$.created_at,updatedAt:$.updated_at});return{entity:Y,mutationApi:z,id:K,pk:q}},tW6=()=>{let $=new Map;return Object.freeze({createProject:async(P,W,{name:H,path:Z},O)=>{let X=M1(),w=await v9.nextSeq(P,"global",null,"p"),T=`P${w}`,G=await P.insertInto("projects").values({id:w,object_id:T,name:H,path:Z,created_at:X,updated_at:X}).returningAll().executeTakeFirstOrThrow(),{entity:v,mutationApi:f,id:V,pk:h}=_f(G);return O(()=>{$.set(V,T6.create(v,f,h))}),v},readProject:async(P,W,H)=>{let Z=$.get(H);if(Z)return Z.getEntity();let O=RJ8(H);if(O===null)return null;let X=await P.selectFrom("projects").selectAll().where("id","=",O).executeTakeFirst();if(!X)return null;let{entity:w,mutationApi:T,id:G,pk:v}=_f(X);return $.set(G,T6.create(w,T,v)),w},readProjectByObjectId:async(P,W,H)=>{let Z=$.get(H);if(Z)return Z.getEntity();let O=RJ8(H);if(O===null)return null;let X=await P.selectFrom("projects").selectAll().where("id","=",O).executeTakeFirst();if(!X)return null;let{entity:w,mutationApi:T,id:G,pk:v}=_f(X);return $.set(G,T6.create(w,T,v)),w},readProjectByPath:async(P,W,H)=>{let Z=await P.selectFrom("projects").selectAll().where("path","=",H).executeTakeFirst();if(!Z)return null;let{entity:O,mutationApi:X,id:w,pk:T}=_f(Z),G=$.get(w);if(G)return G.getEntity();return $.set(w,T6.create(O,X,T)),O},evictProject:(P)=>{$.delete(P)}})},DJ8=Object.freeze({create:tW6});var eW6=()=>{let $=new Map,K=new Map;return Object.freeze({get:(X)=>$.get(X),getByPk:(X)=>{let w=K.get(X);return w?$.get(w):void 0},has:(X)=>$.has(X),set:(X,w)=>{$.set(X,w),K.set(w.getPk(),X)},remove:(X)=>{let w=$.get(X);if(w)K.delete(w.getPk());$.delete(X)},getIdByPk:(X)=>K.get(X),setIdByPk:(X,w)=>K.set(X,w),clear:()=>{$.clear(),K.clear()},entries:()=>$.entries()})},Nw=Object.freeze({create:eW6});var bJ8=H1(C$(),1);var $H6=async($,K,q,Y=null)=>{return(await $.selectFrom("entity_types").select("id").where("code","=",q).where((J)=>Y?J("subtype","=",Y):J("subtype","is",null)).executeTakeFirstOrThrow()).id},$Y=Object.freeze({readEntityTypeId:$H6});var KH6=($)=>{let{id:K,name:q,parentId:Y,path:z,createdAt:J,updatedAt:P,publishedVersionNumber:W,hasDraft:H,draftContent:Z,publishedContent:O}=$,{entityFns:X,mutationFns:w}=w5.create({id:K,name:q,createdAt:J,updatedAt:P}),T=new Map,G=W??null,v=H??!1,f=Z??null,V=O??null,h=null,E8=Object.freeze({...X,getParentId:()=>Y,getPath:()=>z,getField:(S6)=>{return T.get(S6)},getFields:()=>{let S6={};for(let[R3,V8]of T.entries())S6[R3]=V8;return S6},getPublishedVersionNumber:()=>G,hasDraftContent:()=>v,getDraftContent:()=>f,getPublishedContent:()=>V,getEditState:()=>h,hasPublished:()=>G>0,isBeingEdited:()=>h!==null,getVersionCount:()=>G??0,getIsFolder:()=>!1}),l$=Object.freeze({...w,setParentId:(S6)=>{Y=S6},setPath:(S6)=>{z=S6},setField:(S6,R3)=>{T.set(S6,R3)},removeField:(S6)=>{T.delete(S6)},setPublishedVersionNumber:(S6)=>{G=S6},setHasDraft:(S6)=>{v=S6},setDraftContent:(S6)=>{f=S6},setPublishedContent:(S6)=>{V=S6},setEditState:(S6)=>{h=S6}});return{entityFns:E8,mutationFns:l$}},XW=Object.freeze({create:KH6});var SJ8=($)=>{let{entityFns:K,mutationFns:q}=XW.create($),Y=()=>K.getParentId()===null,z=()=>!0,P=Object.freeze({...K,isRoot:Y,getIsFolder:z,toJSON:()=>({id:K.getObjectId(),parentId:K.getParentId(),name:K.getName(),path:K.getPath(),createdAt:K.getCreatedAt(),updatedAt:K.getUpdatedAt(),isFolder:z(),isRoot:Y()})}),W=Object.freeze({...q});return{entity:P,mutationApi:W}},qH6=($,K,q,Y)=>{return SJ8({id:K,parentId:q,name:$.name,path:Y,createdAt:$.created_at,updatedAt:$.updated_at})},Qz=Object.freeze({create:SJ8,createFromRow:qH6});var EJ8=($)=>{let{entityFns:K,mutationFns:q}=XW.create($),Y=()=>"d",J=Object.freeze({...K,getTypeCode:Y,toJSON:()=>({id:K.getObjectId(),parentId:K.getParentId(),name:K.getName(),path:K.getPath(),publishedVersionNumber:K.getPublishedVersionNumber(),hasDraft:K.hasDraftContent(),draftContent:K.getDraftContent(),publishedContent:K.getPublishedContent(),editState:K.getEditState(),createdAt:K.getCreatedAt(),updatedAt:K.getUpdatedAt(),versionCount:K.getVersionCount(),isFolder:K.getIsFolder(),type:Y(),hasPublished:K.hasPublished(),isBeingEdited:K.isBeingEdited()})}),P=Object.freeze({...q});return{entity:J,mutationApi:P}},YH6=($,K,q,Y,z,J,P=null,W=null)=>{return EJ8({id:K,parentId:q,name:$.name,path:Y,publishedVersionNumber:z,hasDraft:J,draftContent:P,publishedContent:W,createdAt:$.created_at,updatedAt:$.updated_at})},wW=Object.freeze({create:EJ8,createFromRow:YH6});var LJ8=($)=>{let{entityFns:K,mutationFns:q}=XW.create($),Y=()=>"t",J=Object.freeze({...K,getTypeCode:Y,toJSON:()=>({id:K.getObjectId(),parentId:K.getParentId(),name:K.getName(),path:K.getPath(),publishedVersionNumber:K.getPublishedVersionNumber(),hasDraft:K.hasDraftContent(),draftContent:K.getDraftContent(),publishedContent:K.getPublishedContent(),editState:K.getEditState(),createdAt:K.getCreatedAt(),updatedAt:K.getUpdatedAt(),versionCount:K.getVersionCount(),isFolder:K.getIsFolder(),type:Y(),hasPublished:K.hasPublished(),isBeingEdited:K.isBeingEdited()})}),P=Object.freeze({...q});return{entity:J,mutationApi:P}},zH6=($,K,q,Y,z,J,P=null,W=null)=>{return LJ8({id:K,parentId:q,name:$.name,path:Y,publishedVersionNumber:z,hasDraft:J,draftContent:P,publishedContent:W,createdAt:$.created_at,updatedAt:$.updated_at})},TW=Object.freeze({create:LJ8,createFromRow:zH6});var JH6=($)=>{let{id:K,name:q,ownerEntityId:Y,label:z,description:J,primitiveType:P,required:W,multiplicity:H,isSystem:Z,createdAt:O,updatedAt:X}=$,{entityFns:w,mutationFns:T}=w5.create({id:K,name:q,createdAt:O,updatedAt:X}),G=()=>Y,v=()=>z,f=()=>J,V=()=>P,h=()=>W,A=()=>H,N=()=>Z,I=Object.freeze({...w,getOwnerEntityId:G,getLabel:v,getDescription:f,getPrimitiveType:V,getRequired:h,getMultiplicity:A,getIsSystem:N,toJSON:()=>({id:w.getObjectId(),ownerEntityId:G(),name:w.getName(),label:v(),description:f(),primitiveType:V(),required:h(),multiplicity:A(),isSystem:N(),createdAt:w.getCreatedAt(),updatedAt:w.getUpdatedAt()})}),D=Object.freeze({...T});return{entity:I,mutationApi:D}},Tx=Object.freeze({create:JH6});var PH6=({definition:$,values:K=[]})=>{let q=$,Y=[...K];if(q.getMultiplicity()==="single"&&Y.length>1)throw new Error(`Field "${q.getName()}" is single-valued but received ${Y.length} values`);let z=(T=0)=>{return Y[T]},J=()=>{return[...Y]},P=()=>{return q},W=()=>{return q.getMultiplicity()==="multi"};return Object.freeze({getValue:z,getValues:J,getDefinition:P,isMultiValued:W,isRequired:()=>{return q.getRequired()},getType:()=>{return q.getPrimitiveType()},getLabel:()=>{return q.getLabel()||q.getName()},getName:()=>{return q.getName()},toJSON:()=>{if(W())return Y;else return Y[0]}})},jx=Object.freeze({create:PH6});var hw=($,K)=>{let q=new Error($);return q.code=K,q.isDomainError=!0,q},WH6=($,K="NOT_FOUND")=>hw($,K),HH6=($,K="CONFLICT")=>hw($,K),ZH6=($,K="VALIDATION_ERROR")=>hw($,K),OH6=($,K="UNAUTHORIZED")=>hw($,K),n=Object.freeze({create:hw,notFound:WH6,conflict:HH6,validation:ZH6,unauthorized:OH6});var XH6=($)=>{let K=$.trim();r.factory(!K,n.validation,"Folder name cannot be empty","EMPTY_NAME"),r.factory(K.length>255,n.validation,"Folder name cannot exceed 255 characters","NAME_TOO_LONG");let q=/[/\\:*?"<>|]/;return r.factory(q.test(K),n.validation,'Folder name contains invalid characters: /\\:*?"<>|',"INVALID_CHARS"),K},wH6=($)=>{return $.getParentId()===null},fK=Object.freeze({validateFolderName:XH6,isRootFolder:wH6});var TH6=($)=>{if(!$||$.length<3)return null;let K=$[0],q=$[1],Y=parseInt($.slice(2),10);if(isNaN(Y))return null;return{storeCode:K,typeCode:q,seq:Y}},jH6=($,K,q)=>`${$}${K}${q}`,vH6=($,K)=>{r.factory($!==K,n.validation,`Store code mismatch: expected ${K}, got ${$}`,"STORE_CODE_MISMATCH")},IJ8=Object.freeze({parseId:TH6,buildId:jH6,validateStoreCode:vH6});var{parseId:P1,buildId:ff,validateStoreCode:GH6}=IJ8,{validateFolderName:xJ8,isRootFolder:Zy1}=fK,Oy1=bJ8.default("caw:stores:db"),jW=3600000,_H6=({id:$,code:K,name:q,pk:Y,folderCache:z,createdAt:J,updatedAt:P})=>{let W=new Map,{entityFns:H,mutationFns:Z}=w5.create({id:$,name:q,createdAt:J,updatedAt:P}),O=()=>new Set([K]),X=()=>"local",w=()=>K,T=()=>Y,G=()=>({id:$,code:K,name:H.getName(),createdAt:H.getCreatedAt(),updatedAt:H.getUpdatedAt(),type:"local"}),v=(C)=>{GH6(C,K)},f=async(C,u)=>{if(!u)return null;if(z){let m=z.get(u);if(m)return m.getPk()}if(!P1(u))r.factory(!0,n.validation,`Invalid parent folder ID: ${u}`,"INVALID_ID");let b=await C.selectFrom("entities").select("id").where("store_id","=",Y).where("object_id","=",u).where("deleted_at","is",null).executeTakeFirst();return b?b.id:null},V=async(C,u)=>{let E=await C.selectFrom("entities").select(["name","parent_folder_id","parent_object_id","object_id"]).where("id","=",u).where("deleted_at","is",null).executeTakeFirst();r.factory(!E,n.notFound,`Entity not found for PK ${u}`,"ENTITY_NOT_FOUND");let b=E.object_id,m=z?z.get(b):null;if(m){let f8=m.getEntity();if(f8.getName()===E.name&&f8.getParentId()===E.parent_object_id)return f8.getPath()}if(E.name===null)return"";if(!E.parent_object_id)return E.name;let c=z?z.get(E.parent_object_id):null;if(c){let M8=c.getEntity().getPath();return M8?`${M8}/${E.name}`:E.name}let o=[E.name],P8=E.parent_folder_id;while(P8!==null){let f8=W.get(P8),M8=f8&&z?z.get(f8):null;if(M8){let $6=M8.getEntity().getPath();if($6){let E6=$6.split("/").filter((r1)=>r1);o.unshift(...E6)}break}let N8=await C.selectFrom("entities").select(["name","parent_folder_id"]).where("id","=",P8).where("deleted_at","is",null).executeTakeFirst();if(r.factory(!N8,n.notFound,`Folder not found for PK ${P8}`,"FOLDER_NOT_FOUND"),N8.name!==null)o.unshift(N8.name);P8=N8.parent_folder_id}return o.join("/")},h=async(C,u)=>{let E=[],b=[u];while(b.length>0){let m=b.shift(),c=await C.selectFrom("entities").select(["id","type_code"]).where("store_id","=",Y).where("parent_folder_id","=",m).where("deleted_at","is",null).execute();for(let o of c)if(E.push(o.id),o.type_code==="f")b.push(o.id)}return E},A=async(C,u,E,b)=>{let m=M1(),c=await $Y.readEntityTypeId(C,{},"f",b),o=await v9.nextSeq(C,"store",Y,"f"),P8=await f(C,u),f8=ff(K,"f",o),M8=await C.insertInto("entities").values({store_id:Y,object_id:f8,entity_type_id:c,type_code:"f",seq:o,parent_folder_id:P8,parent_object_id:u,name:E,created_at:m,updated_at:m}).returningAll().executeTakeFirstOrThrow();return await C.insertInto("folders").values({entity_id:M8.id}).execute(),{row:M8,id:f8}},N=(C)=>{let u=null;if(C.owner_entity_id!==null)u=W.get(C.owner_entity_id)??null;let{entity:E,mutationApi:b}=Tx.create({id:C.object_id,name:C.name,ownerEntityId:u,label:C.label,description:C.description,primitiveType:C.primitive_type,required:C.required===1,multiplicity:C.multiplicity,isSystem:C.is_system===1,createdAt:C.created_at,updatedAt:C.updated_at});return{entity:E,mutationApi:b,pk:C.id}},S=async(C,u)=>{let E=await C.selectFrom("field_values as fv").innerJoin("field_definitions as fd","fd.id","fv.field_definition_id").select(["fv.id as value_id","fv.value","fd.id as def_id","fd.object_id as def_object_id","fd.name as def_name","fd.label as def_label","fd.description as def_description","fd.primitive_type as def_primitive_type","fd.required as def_required","fd.multiplicity as def_multiplicity","fd.is_system as def_is_system","fd.owner_entity_id as def_owner_entity_id","fd.created_at as def_created_at","fd.updated_at as def_updated_at"]).where("fv.entity_id","=",u).execute(),b=new Map;for(let c of E){let o=c.def_id;if(!b.has(o))b.set(o,{definition:{id:c.def_object_id,name:c.def_name,label:c.def_label,description:c.def_description,primitiveType:c.def_primitive_type,required:c.def_required===1,multiplicity:c.def_multiplicity,isSystem:c.def_is_system===1,ownerEntityId:c.def_owner_entity_id?W.get(c.def_owner_entity_id):null,createdAt:c.def_created_at,updatedAt:c.def_updated_at},values:[]});b.get(o).values.push(c.value)}let m=[];for(let{definition:c,values:o}of b.values()){let{entity:P8}=Tx.create(c),f8=jx.create({definition:P8,values:o});m.push(f8)}return m},I=async(C,u)=>{let E=await C.selectFrom("field_definitions").selectAll().where("store_id","=",Y).where("seq","=",1).where("type_code","=","n").executeTakeFirst();if(!E)return null;if(E.owner_entity_id){let m=await C.selectFrom("entities").select("object_id").where("id","=",E.owner_entity_id).executeTakeFirst();if(m)W.set(E.owner_entity_id,m.object_id)}let b=`${K}n1`;return W.set(E.id,b),N(E)},D=async(C,u,{storeCode:E,parentId:b,name:m,subtype:c})=>{if(E!==void 0)v(E);if(m!==null&&m!==void 0)xJ8(m);let{row:o,id:P8}=await A(C,b,m,c||null),f8=o.id;W.set(f8,P8);let M8=await V(C,f8),{entity:N8,mutationApi:y8}=Qz.createFromRow(o,P8,b,M8);return{entity:N8,mutationApi:y8,pk:f8}},B=async(C,u,{id:E})=>{let b=P1(E);if(!b)return null;let m=await C.selectFrom("entities").innerJoin("folders","folders.entity_id","entities.id").selectAll("entities").where("entities.store_id","=",Y).where("entities.seq","=",b.seq).where("entities.type_code","=","f").where("entities.deleted_at","is",null).executeTakeFirst();if(!m)return null;let{id:c,parent_object_id:o}=m;W.set(c,E);let P8=await V(C,c),f8=await S(C,c),{entity:M8,mutationApi:N8}=Qz.createFromRow(m,E,o,P8);for(let y8 of f8)N8.setField(y8.getDefinition().getName(),y8);return{entity:M8,mutationApi:N8,pk:c}},g=async(C,u,{id:E,name:b,parentId:m})=>{let c=P1(E);r.factory(!c,n.validation,`Invalid folder ID: ${E}`,"INVALID_ID");let o=await C.selectFrom("entities").selectAll().where("store_id","=",Y).where("seq","=",c.seq).where("type_code","=","f").where("deleted_at","is",null).executeTakeFirst();r.factory(!o,n.notFound,`Folder not found: ${E}`,"FOLDER_NOT_FOUND");let P8=o.id,f8={name:o.name,parentId:o.parent_object_id,path:null};if(W.set(P8,E),f8.path=await V(C,P8),b!==void 0)xJ8(b);let M8={};if(b!==void 0)M8.name=b;if(m!==void 0){let W4=await f(C,m);M8.parent_folder_id=W4,M8.parent_object_id=m}M8.updated_at=M1();let N8=await C.updateTable("entities").set(M8).where("id","=",P8).returningAll().executeTakeFirstOrThrow(),y8=await V(C,P8),$6=await S(C,P8),{entity:E6,mutationApi:r1}=Qz.createFromRow(N8,E,N8.parent_object_id,y8);for(let W4 of $6)r1.setField(W4.getDefinition().getName(),W4);return{entity:E6,mutationApi:r1,pk:P8,oldValues:f8}},R=async(C,u,{id:E})=>{let b=P1(E);r.factory(!b,n.validation,`Invalid folder ID: ${E}`,"INVALID_ID");let m=await C.selectFrom("entities").selectAll().where("store_id","=",Y).where("seq","=",b.seq).where("type_code","=","f").where("deleted_at","is",null).executeTakeFirst();r.factory(!m,n.notFound,`Folder not found: ${E}`,"FOLDER_NOT_FOUND");let c=m.id;W.set(c,E);let o=await V(C,c),P8=await h(C,c),f8=M1();await C.updateTable("entities").set({deleted_at:f8}).where("id","in",[c,...P8]).execute();let M8=[];for(let N8 of P8){let y8=await C.selectFrom("entities").select("object_id").where("id","=",N8).executeTakeFirst();if(y8)M8.push(y8.object_id)}return{id:E,deleted:!0,descendantCount:P8.length,path:o,descendantIds:M8,deletedPks:[c,...P8]}},y=async(C,u,E,b,m=null)=>{let c=await f(C,E),o=C.selectFrom("entities").select("object_id").where("store_id","=",Y).where("parent_folder_id",c===null?"is":"=",c).where("name","=",b).where("deleted_at","is",null);if(m)o=o.where("object_id","!=",m);return!!await o.executeTakeFirst()},t=async(C,u,E,b)=>{let m=await f(C,E),c=await C.selectFrom("entities").innerJoin("folders","folders.entity_id","entities.id").selectAll("entities").where("entities.store_id","=",Y).where("entities.parent_folder_id",m===null?"is":"=",m).where("entities.name","=",b).where("entities.deleted_at","is",null).executeTakeFirst();if(!c)return null;let{id:o,object_id:P8}=c;W.set(o,P8);let f8=await V(C,o),M8=await S(C,o),{entity:N8,mutationApi:y8}=Qz.createFromRow(c,P8,E,f8);for(let $6 of M8)y8.setField($6.getDefinition().getName(),$6);return{entity:N8,mutationApi:y8,pk:o}},K8=async(C,u,{folderId:E,type:b})=>{let m;if(E){if(m=await f(C,E),m===null)return[]}else if(b){let f8=await I8(C,u,b);if(!f8)return[];m=f8.pk}else m=null;let c=C.selectFrom("entities").selectAll().where("store_id","=",Y).where("parent_folder_id",m===null?"is":"=",m).where("deleted_at","is",null);if(b)c=c.where("type_code","=","f").innerJoin("folders","folders.entity_id","entities.id");let o=await c.execute(),P8=[];for(let f8 of o){let{id:M8,object_id:N8}=f8;W.set(M8,N8);let y8=await V(C,M8),$6=await S(C,M8),{entity:E6,mutationApi:r1}=Qz.createFromRow(f8,N8,f8.parent_object_id,y8);for(let W4 of $6)r1.setField(W4.getDefinition().getName(),W4);P8.push({entity:E6,mutationApi:r1,pk:M8})}return P8},R8=async(C,u,{path:E,type:b})=>{let m=(E??"").trim(),c=await C.selectFrom("entities").selectAll().where("store_id","=",Y).where("type_code","=","f").where("deleted_at","is",null).execute();for(let o of c){let P8=await B(C,u,{id:o.object_id});if(P8&&P8.entity.getPath()===m)return P8}return null},I8=async(C,u,E,b)=>{if(b!==void 0)v(b);let m=E==="d"?"root_d":"root_t",c=await $Y.readEntityTypeId(C,u,"f",m),o=await C.selectFrom("entities").innerJoin("folders","folders.entity_id","entities.id").selectAll("entities").where("entities.store_id","=",Y).where("entities.entity_type_id","=",c).where("entities.deleted_at","is",null).executeTakeFirst();if(!o)return null;let{id:P8,object_id:f8}=o;W.set(P8,f8);let M8=await V(C,P8),N8=await S(C,P8),{entity:y8,mutationApi:$6}=Qz.createFromRow(o,f8,o.parent_object_id,M8);for(let E6 of N8)$6.setField(E6.getDefinition().getName(),E6);return{entity:y8,mutationApi:$6,pk:P8}},E8=async(C,u,{storeCode:E,ownerEntityId:b,name:m,label:c,description:o,primitiveType:P8,required:f8,multiplicity:M8,isSystem:N8=!1})=>{if(E!==void 0)v(E);r.factory(P8!=="string"&&P8!=="object_ref",n.validation,`Invalid primitiveType: ${P8}`,"INVALID_PRIMITIVE_TYPE"),r.factory(M8!=="single"&&M8!=="multi",n.validation,`Invalid multiplicity: ${M8}`,"INVALID_MULTIPLICITY");let y8=M1(),$6=await $Y.readEntityTypeId(C,u,"n",null),E6=await v9.nextSeq(C,"store",Y,"n"),r1=ff(K,"n",E6),W4=b?await f(C,b):null,S3=await C.insertInto("field_definitions").values({store_id:Y,object_id:r1,entity_type_id:$6,type_code:"n",seq:E6,owner_entity_id:W4,name:m,label:c,description:o,primitive_type:P8,required:f8?1:0,multiplicity:M8,is_system:N8?1:0,created_at:y8,updated_at:y8}).returningAll().executeTakeFirstOrThrow(),H4=S3.id;return W.set(H4,r1),N(S3)},t8=async(C,u,{id:E})=>{let b=P1(E);if(!b)return null;let m=await C.selectFrom("field_definitions").selectAll().where("store_id","=",Y).where("seq","=",b.seq).where("type_code","=","n").executeTakeFirst();if(!m)return null;if(m.owner_entity_id){let c=await C.selectFrom("entities").select("object_id").where("id","=",m.owner_entity_id).executeTakeFirst();if(c)W.set(m.owner_entity_id,c.object_id)}return W.set(m.id,E),N(m)},g8=async(C,u,E,b)=>{let m=await C.selectFrom("field_definitions").selectAll().where("store_id","=",Y).where("name","=",E).where("owner_entity_id",b===null?"is":"=",b).executeTakeFirst();if(!m)return null;if(m.owner_entity_id){let c=await C.selectFrom("entities").select("object_id").where("id","=",m.owner_entity_id).executeTakeFirst();if(c)W.set(m.owner_entity_id,c.object_id)}return W.set(m.id,m.object_id),N(m)},m8=async(C,u,{fieldDefinitionId:E,fieldName:b,ownerEntityPk:m})=>{if(E){let o=await t8(C,u,{id:E});if(o)return o}if(b&&m){let o=await g8(C,u,b,m);if(o)return o}if(b){let o=await g8(C,u,b,null);if(o)return o}let c=await I(C);return r.factory(!c,n.notFound,"No field definition found and no default available","NO_FIELD_DEFINITION"),c},V6=async(C,u,{ownerEntityPk:E,includeSystem:b=!0})=>{let m=C.selectFrom("field_definitions").selectAll().where("store_id","=",Y).where("owner_entity_id",E===null?"is":"=",E);if(!b)m=m.where("is_system","=",0);let c=await m.execute(),o=[];for(let P8 of c){if(P8.owner_entity_id){let f8=await C.selectFrom("entities").select("object_id").where("id","=",P8.owner_entity_id).executeTakeFirst();if(f8)W.set(P8.owner_entity_id,f8.object_id)}W.set(P8.id,P8.object_id),o.push(N(P8))}return o},C3=async(C,u,{id:E})=>{let b=P1(E);r.factory(!b,n.validation,`Invalid definition ID: ${E}`,"INVALID_ID");let m=await C.selectFrom("field_definitions").selectAll().where("store_id","=",Y).where("seq","=",b.seq).where("type_code","=","n").executeTakeFirst();r.factory(!m,n.notFound,`Field definition not found: ${E}`,"DEFINITION_NOT_FOUND"),r.factory(m.is_system===1,n.validation,`Cannot delete system field definition: ${E}`,"SYSTEM_DEFINITION");let c=m.id;if(await C.deleteFrom("field_definitions").where("id","=",c).execute(),m.owner_entity_id){let P8=await C.selectFrom("entities").select("object_id").where("id","=",m.owner_entity_id).executeTakeFirst();if(P8)W.set(m.owner_entity_id,P8.object_id)}let{entity:o}=N(m);return o},P3=async(C,u,{entityId:E,fieldDefinitionId:b,fieldName:m,value:c,values:o})=>{let P8=P1(E);r.factory(!P8,n.validation,`Invalid entity ID: ${E}`,"INVALID_ID");let f8=await C.selectFrom("entities").select("id").where("store_id","=",Y).where("seq","=",P8.seq).where("type_code","=",P8.typeCode).where("deleted_at","is",null).executeTakeFirst();r.factory(!f8,n.notFound,`Entity not found: ${E}`,"ENTITY_NOT_FOUND");let M8=f8.id,{entity:N8,pk:y8}=await m8(C,u,{fieldDefinitionId:b,fieldName:m,ownerEntityPk:M8}),$6=N8.getMultiplicity(),E6;if($6==="single")if(o&&Array.isArray(o))r.factory(o.length>1||o.length===0,n.validation,`Field '${N8.getName()}' is single-valued but received ${o.length} values`,"MULTIPLICITY_VIOLATION"),E6=[o[0]];else r.factory(c===void 0,n.validation,"Single-valued field requires value parameter","VALUE_REQUIRED"),E6=[c];else if(o&&Array.isArray(o))E6=o;else if(c!==void 0)E6=[c];else r.factory(!0,n.validation,"Multi-valued field requires either value or values parameter","VALUE_OR_VALUES_REQUIRED");await C.deleteFrom("field_values").where("entity_id","=",M8).where("field_definition_id","=",y8).execute();let r1=M1();for(let qC of E6)await C.insertInto("field_values").values({entity_id:M8,field_definition_id:y8,value:qC,updated_at:r1}).execute();let W4=E6,S3=jx.create({definition:N8,values:W4}),H4;if(P8.typeCode==="f")H4=await B(C,u,{id:E});else if(P8.typeCode==="d")H4=await $1(C,u,{id:E});else if(P8.typeCode==="t")H4=await d4(C,u,{id:E});return r.factory(!H4,n.notFound,`Entity not found after field update: ${E}`,"ENTITY_NOT_FOUND"),{...H4,field:S3,fieldName:N8.getName()}},E4=async(C,u,{entityId:E,fieldDefinitionId:b,fieldName:m})=>{let c=P1(E);r.factory(!c,n.validation,`Invalid entity ID: ${E}`,"INVALID_ID");let o=await C.selectFrom("entities").select("id").where("store_id","=",Y).where("seq","=",c.seq).where("type_code","=",c.typeCode).where("deleted_at","is",null).executeTakeFirst();r.factory(!o,n.notFound,`Entity not found: ${E}`,"ENTITY_NOT_FOUND");let P8=o.id,{entity:f8,pk:M8}=await m8(C,u,{fieldDefinitionId:b,fieldName:m,ownerEntityPk:P8});await C.deleteFrom("field_values").where("entity_id","=",P8).where("field_definition_id","=",M8).execute();let N8;if(c.typeCode==="f")N8=await B(C,u,{id:E});else if(c.typeCode==="d")N8=await $1(C,u,{id:E});else if(c.typeCode==="t")N8=await d4(C,u,{id:E});return r.factory(!N8,n.notFound,`Entity not found after field delete: ${E}`,"ENTITY_NOT_FOUND"),{...N8,fieldName:f8.getName()}},a3=async(C,u,{storeCode:E,parentId:b,name:m,initialContent:c})=>{if(E!==void 0)v(E);let o=M1(),P8=await $Y.readEntityTypeId(C,u,"d",null),f8=await v9.nextSeq(C,"store",Y,"d"),M8=ff(K,"d",f8),N8=await f(C,b),y8=await C.insertInto("entities").values({store_id:Y,object_id:M8,entity_type_id:P8,type_code:"d",seq:f8,parent_folder_id:N8,parent_object_id:b,name:m,created_at:o,updated_at:o}).returningAll().executeTakeFirstOrThrow();await C.insertInto("documents").values({entity_id:y8.id,published_version_id:null}).execute();let $6=c!==null&&c!==void 0;if($6)await C.insertInto("document_drafts").values({entity_id:y8.id,content:c,updated_at:o}).execute();let E6=y8.id;W.set(E6,M8);let r1=await V(C,E6),{entity:W4,mutationApi:S3}=wW.createFromRow(y8,M8,b,r1,null,$6,$6?c:null,null);return{entity:W4,mutationApi:S3,pk:E6}},$1=async(C,u,{id:E})=>{let b=P1(E);if(!b)return null;let m=await C.selectFrom("entities as e").innerJoin("documents as d","d.entity_id","e.id").leftJoin("document_versions as dv","dv.id","d.published_version_id").leftJoin("document_drafts as dd","dd.entity_id","e.id").leftJoin("document_edit_state as es","es.entity_id","e.id").select(["e.id as entity_id","e.object_id","e.parent_folder_id","e.parent_object_id","e.name","e.created_at","e.updated_at","e.deleted_at","dv.version_number as published_version_number","dv.content as published_content","dd.content as draft_content",Z3.raw("CASE WHEN dd.entity_id IS NOT NULL THEN 1 ELSE 0 END").as("has_draft"),"es.client_id as edit_client_id","es.started_at as edit_started_at","es.last_activity_at as edit_activity"]).where("e.store_id","=",Y).where("e.type_code","=","d").where("e.seq","=",b.seq).where("e.deleted_at","is",null).executeTakeFirst();if(!m)return null;let c=m.entity_id;W.set(c,E);let o=await V(C,c),P8=await S(C,c),{entity:f8,mutationApi:M8}=wW.createFromRow(m,m.object_id,m.parent_object_id,o,m.published_version_number,m.has_draft===1,m.draft_content??null,m.published_content??null);for(let N8 of P8)M8.setField(N8.getDefinition().getName(),N8);if(m.edit_client_id)M8.setEditState({clientId:m.edit_client_id,startedAt:m.edit_started_at,lastActivityAt:m.edit_activity});return{entity:f8,mutationApi:M8,pk:c}},l$=async(C,u,{id:E,name:b,parentId:m})=>{let c=P1(E);r.factory(!c,n.validation,`Invalid document ID: ${E}`,"INVALID_ID");let o=await C.selectFrom("entities").selectAll().where("store_id","=",Y).where("seq","=",c.seq).where("type_code","=","d").where("deleted_at","is",null).executeTakeFirst();r.factory(!o,n.notFound,`Document not found: ${E}`,"DOCUMENT_NOT_FOUND");let P8=o.id,f8={name:o.name,parentId:o.parent_object_id,path:null};W.set(P8,E),f8.path=await V(C,P8);let N8={updated_at:M1()};if(b!==void 0)N8.name=b;if(m!==void 0){let H4=await f(C,m);N8.parent_folder_id=H4,N8.parent_object_id=m}let y8=await C.updateTable("entities").set(N8).where("id","=",P8).returningAll().executeTakeFirstOrThrow(),$6=await C.selectFrom("documents as d").leftJoin("document_versions as dv","dv.id","d.published_version_id").leftJoin("document_drafts as dd","dd.entity_id","d.entity_id").select(["dv.version_number as published_version_number","dv.content as published_content","dd.content as draft_content",Z3.raw("CASE WHEN dd.entity_id IS NOT NULL THEN 1 ELSE 0 END").as("has_draft")]).where("d.entity_id","=",P8).executeTakeFirst(),E6=await V(C,P8),r1=await S(C,P8),{entity:W4,mutationApi:S3}=wW.createFromRow(y8,E,y8.parent_object_id,E6,$6.published_version_number,$6.has_draft===1,$6.draft_content??null,$6.published_content??null);for(let H4 of r1)S3.setField(H4.getDefinition().getName(),H4);return{entity:W4,mutationApi:S3,pk:P8,oldValues:f8}},S6=async(C,u,{id:E})=>{let b=P1(E);r.factory(!b,n.validation,`Invalid document ID: ${E}`,"INVALID_ID");let m=await C.selectFrom("entities").selectAll().where("store_id","=",Y).where("seq","=",b.seq).where("type_code","=","d").where("deleted_at","is",null).executeTakeFirst();r.factory(!m,n.notFound,`Document not found: ${E}`,"DOCUMENT_NOT_FOUND");let c=m.id;W.set(c,E);let o=await V(C,c),P8=M1();return await C.updateTable("entities").set({deleted_at:P8}).where("id","=",c).execute(),{id:E,deleted:!0,path:o}},R3=async(C,u,{id:E,content:b,clientId:m})=>{let c=P1(E);r.factory(!c,n.validation,`Invalid document ID: ${E}`,"INVALID_ID"),r.factory(!m,n.validation,"clientId is required","MISSING_CLIENT_ID");let o=M1(),P8=await C.selectFrom("entities").select("id").where("store_id","=",Y).where("type_code","=","d").where("seq","=",c.seq).where("deleted_at","is",null).executeTakeFirst();r.factory(!P8,n.notFound,`Document not found: ${E}`,"NOT_FOUND");let f8=P8.id;await C.insertInto("document_drafts").values({entity_id:f8,content:b,updated_at:o}).onConflict(($6)=>$6.column("entity_id").doUpdateSet({content:b,updated_at:o})).execute();let N8=!await P6(C,u,{id:E,clientId:m}),y8=await $1(C,u,{id:E});return r.factory(!y8,n.notFound,`Document not found after draft save: ${E}`,"DOCUMENT_NOT_FOUND"),{...y8,lockLost:N8}},V8=async(C,u,{id:E})=>{let b=P1(E);r.factory(!b,n.validation,`Invalid document ID: ${E}`,"INVALID_ID");let m=M1(),c=await C.selectFrom("entities as e").innerJoin("document_drafts as dd","dd.entity_id","e.id").select(["e.id as entity_id","dd.content"]).where("e.store_id","=",Y).where("e.type_code","=","d").where("e.seq","=",b.seq).where("e.deleted_at","is",null).executeTakeFirst();r.factory(!c,n.notFound,`No draft found for document: ${E}`,"DRAFT_NOT_FOUND");let o=c.entity_id,f8=((await C.selectFrom("document_versions").select(C.fn.max("version_number").as("max_version")).where("entity_id","=",o).executeTakeFirst())?.max_version||0)+1,M8=await C.insertInto("document_versions").values({entity_id:o,version_number:f8,content:c.content,published_at:m}).returningAll().executeTakeFirstOrThrow();await C.updateTable("documents").set({published_version_id:M8.id}).where("entity_id","=",o).execute(),await C.deleteFrom("document_drafts").where("entity_id","=",o).execute(),await C.deleteFrom("document_edit_state").where("entity_id","=",o).execute();let N8=await $1(C,u,{id:E});return r.factory(!N8,n.notFound,`Document not found after publish: ${E}`,"DOCUMENT_NOT_FOUND"),N8},A8=async(C,u,{id:E})=>{let b=P1(E);r.factory(!b,n.validation,`Invalid document ID: ${E}`,"INVALID_ID");let m=await C.selectFrom("entities").select("id").where("store_id","=",Y).where("type_code","=","d").where("seq","=",b.seq).where("deleted_at","is",null).executeTakeFirst();r.factory(!m,n.notFound,`Document not found: ${E}`,"NOT_FOUND"),await C.deleteFrom("document_drafts").where("entity_id","=",m.id).execute();let c=await $1(C,u,{id:E});return r.factory(!c,n.notFound,`Document not found after discard: ${E}`,"DOCUMENT_NOT_FOUND"),c},x8=async(C,u,{id:E})=>{let b=P1(E);if(!b)return null;let m=await C.selectFrom("entities as e").innerJoin("document_drafts as dd","dd.entity_id","e.id").select(["e.object_id","dd.content","dd.updated_at"]).where("e.store_id","=",Y).where("e.type_code","=","d").where("e.seq","=",b.seq).where("e.deleted_at","is",null).executeTakeFirst();if(!m)return null;return{entityId:m.object_id,content:m.content,updatedAt:m.updated_at}},u8=async(C,u,{id:E,versionNumber:b})=>{let m=P1(E);if(!m)return null;let c=await C.selectFrom("entities as e").innerJoin("document_versions as dv","dv.entity_id","e.id").select(["e.object_id","dv.version_number","dv.content","dv.published_at"]).where("e.store_id","=",Y).where("e.type_code","=","d").where("e.seq","=",m.seq).where("e.deleted_at","is",null).where("dv.version_number","=",b).executeTakeFirst();if(!c)return null;return{entityId:c.object_id,versionNumber:c.version_number,content:c.content,publishedAt:c.published_at}},J6=async(C,u,{id:E})=>{let b=P1(E);if(!b)return[];return(await C.selectFrom("entities as e").innerJoin("document_versions as dv","dv.entity_id","e.id").select(["dv.version_number","dv.published_at"]).where("e.store_id","=",Y).where("e.type_code","=","d").where("e.seq","=",b.seq).where("e.deleted_at","is",null).orderBy("dv.version_number","desc").execute()).map((c)=>({versionNumber:c.version_number,publishedAt:c.published_at}))},n6=async(C,u,E,b)=>{let m=await f(C,E),c=await C.selectFrom("entities as e").innerJoin("documents as d","d.entity_id","e.id").leftJoin("document_versions as dv","dv.id","d.published_version_id").leftJoin("document_drafts as dd","dd.entity_id","e.id").select(["e.id as entity_id","e.object_id","e.parent_folder_id","e.parent_object_id","e.name","e.created_at","e.updated_at","dv.version_number as published_version_number","dv.content as published_content","dd.content as draft_content",Z3.raw("CASE WHEN dd.entity_id IS NOT NULL THEN 1 ELSE 0 END").as("has_draft")]).where("e.store_id","=",Y).where("e.type_code","=","d").where("e.parent_folder_id",m===null?"is":"=",m).where("e.name","=",b).where("e.deleted_at","is",null).executeTakeFirst();if(!c)return null;let o=c.entity_id;W.set(o,c.object_id);let P8=await V(C,o),f8=await S(C,o),{entity:M8,mutationApi:N8}=wW.createFromRow(c,c.object_id,c.parent_object_id,P8,c.published_version_number,c.has_draft===1,c.draft_content??null,c.published_content??null);for(let y8 of f8)N8.setField(y8.getDefinition().getName(),y8);return{entity:M8,mutationApi:N8,pk:o}},N4=async(C,u,{parentId:E})=>{let b=await f(C,E),m=await C.selectFrom("entities as e").innerJoin("documents as d","d.entity_id","e.id").leftJoin("document_versions as dv","dv.id","d.published_version_id").leftJoin("document_drafts as dd","dd.entity_id","e.id").leftJoin("document_edit_state as es","es.entity_id","e.id").select(["e.id as entity_id","e.object_id","e.parent_folder_id","e.parent_object_id","e.name","e.created_at","e.updated_at","dv.version_number as published_version_number","dv.content as published_content","dd.content as draft_content",Z3.raw("CASE WHEN dd.entity_id IS NOT NULL THEN 1 ELSE 0 END").as("has_draft"),"es.client_id as edit_client_id","es.started_at as edit_started_at","es.last_activity_at as edit_activity"]).where("e.store_id","=",Y).where("e.type_code","=","d").where("e.parent_folder_id",b===null?"is":"=",b).where("e.deleted_at","is",null).execute(),c=[];for(let o of m){let P8=o.entity_id;W.set(P8,o.object_id);let f8=await V(C,P8),M8=await S(C,P8),{entity:N8,mutationApi:y8}=wW.createFromRow(o,o.object_id,o.parent_object_id,f8,o.published_version_number,o.has_draft===1,o.draft_content??null,o.published_content??null);for(let $6 of M8)y8.setField($6.getDefinition().getName(),$6);if(o.edit_client_id)y8.setEditState({clientId:o.edit_client_id,startedAt:o.edit_started_at,lastActivityAt:o.edit_activity});c.push({entity:N8,mutationApi:y8,pk:P8})}return c},D3=async(C,u,{storeCode:E,parentId:b,name:m,initialContent:c})=>{if(E!==void 0)v(E);let o=M1(),P8=await $Y.readEntityTypeId(C,u,"t",null),f8=await v9.nextSeq(C,"store",Y,"t"),M8=ff(K,"t",f8),N8=await f(C,b),y8=await C.insertInto("entities").values({store_id:Y,object_id:M8,entity_type_id:P8,type_code:"t",seq:f8,parent_folder_id:N8,parent_object_id:b,name:m,created_at:o,updated_at:o}).returningAll().executeTakeFirstOrThrow();await C.insertInto("documents").values({entity_id:y8.id,published_version_id:null}).execute();let $6=c!==null&&c!==void 0;if($6)await C.insertInto("document_drafts").values({entity_id:y8.id,content:c,updated_at:o}).execute();let E6=y8.id;W.set(E6,M8);let r1=await V(C,E6),{entity:W4,mutationApi:S3}=TW.createFromRow(y8,M8,b,r1,null,$6,$6?c:null,null);return{entity:W4,mutationApi:S3,pk:E6}},d4=async(C,u,{id:E})=>{let b=P1(E);if(!b)return null;let m=await C.selectFrom("entities as e").innerJoin("documents as d","d.entity_id","e.id").leftJoin("document_versions as dv","dv.id","d.published_version_id").leftJoin("document_drafts as dd","dd.entity_id","e.id").leftJoin("document_edit_state as es","es.entity_id","e.id").select(["e.id as entity_id","e.object_id","e.parent_folder_id","e.parent_object_id","e.name","e.created_at","e.updated_at","e.deleted_at","dv.version_number as published_version_number","dv.content as published_content","dd.content as draft_content",Z3.raw("CASE WHEN dd.entity_id IS NOT NULL THEN 1 ELSE 0 END").as("has_draft"),"es.client_id as edit_client_id","es.started_at as edit_started_at","es.last_activity_at as edit_activity"]).where("e.store_id","=",Y).where("e.type_code","=","t").where("e.seq","=",b.seq).where("e.deleted_at","is",null).executeTakeFirst();if(!m)return null;let c=m.entity_id;W.set(c,E);let o=await V(C,c),P8=await S(C,c),{entity:f8,mutationApi:M8}=TW.createFromRow(m,m.object_id,m.parent_object_id,o,m.published_version_number,m.has_draft===1,m.draft_content??null,m.published_content??null);for(let N8 of P8)M8.setField(N8.getDefinition().getName(),N8);if(m.edit_client_id)M8.setEditState({clientId:m.edit_client_id,startedAt:m.edit_started_at,lastActivityAt:m.edit_activity});return{entity:f8,mutationApi:M8,pk:c}},Z8=async(C,u,{id:E,name:b,parentId:m})=>{let c=P1(E);r.factory(!c,n.validation,`Invalid template ID: ${E}`,"INVALID_ID");let o=await C.selectFrom("entities").selectAll().where("store_id","=",Y).where("seq","=",c.seq).where("type_code","=","t").where("deleted_at","is",null).executeTakeFirst();r.factory(!o,n.notFound,`Template not found: ${E}`,"TEMPLATE_NOT_FOUND");let P8=o.id,f8={name:o.name,parentId:o.parent_object_id,path:null};W.set(P8,E),f8.path=await V(C,P8);let N8={updated_at:M1()};if(b!==void 0)N8.name=b;if(m!==void 0){let H4=await f(C,m);N8.parent_folder_id=H4,N8.parent_object_id=m}let y8=await C.updateTable("entities").set(N8).where("id","=",P8).returningAll().executeTakeFirstOrThrow(),$6=await C.selectFrom("documents as d").leftJoin("document_versions as dv","dv.id","d.published_version_id").leftJoin("document_drafts as dd","dd.entity_id","d.entity_id").select(["dv.version_number as published_version_number","dv.content as published_content","dd.content as draft_content",Z3.raw("CASE WHEN dd.entity_id IS NOT NULL THEN 1 ELSE 0 END").as("has_draft")]).where("d.entity_id","=",P8).executeTakeFirst(),E6=await V(C,P8),r1=await S(C,P8),{entity:W4,mutationApi:S3}=TW.createFromRow(y8,E,y8.parent_object_id,E6,$6.published_version_number,$6.has_draft===1,$6.draft_content??null,$6.published_content??null);for(let H4 of r1)S3.setField(H4.getDefinition().getName(),H4);return{entity:W4,mutationApi:S3,pk:P8,oldValues:f8}},X8=async(C,u,{id:E})=>{let b=P1(E);r.factory(!b,n.validation,`Invalid template ID: ${E}`,"INVALID_ID");let m=await C.selectFrom("entities").selectAll().where("store_id","=",Y).where("seq","=",b.seq).where("type_code","=","t").where("deleted_at","is",null).executeTakeFirst();r.factory(!m,n.notFound,`Template not found: ${E}`,"TEMPLATE_NOT_FOUND");let c=m.id;W.set(c,E);let o=await V(C,c),P8=M1();return await C.updateTable("entities").set({deleted_at:P8}).where("id","=",c).execute(),{id:E,deleted:!0,path:o}},U=async(C,u,{id:E,content:b,clientId:m})=>{let c=P1(E);r.factory(!c,n.validation,`Invalid template ID: ${E}`,"INVALID_ID"),r.factory(!m,n.validation,"clientId is required","MISSING_CLIENT_ID");let o=M1(),P8=await C.selectFrom("entities").select("id").where("store_id","=",Y).where("type_code","=","t").where("seq","=",c.seq).where("deleted_at","is",null).executeTakeFirst();r.factory(!P8,n.notFound,`Template not found: ${E}`,"NOT_FOUND");let f8=P8.id;await C.insertInto("document_drafts").values({entity_id:f8,content:b,updated_at:o}).onConflict(($6)=>$6.column("entity_id").doUpdateSet({content:b,updated_at:o})).execute();let N8=!await P6(C,u,{id:E,clientId:m}),y8=await d4(C,u,{id:E});return r.factory(!y8,n.notFound,`Template not found after draft save: ${E}`,"TEMPLATE_NOT_FOUND"),{...y8,lockLost:N8}},a=async(C,u,{id:E})=>{let b=P1(E);r.factory(!b,n.validation,`Invalid template ID: ${E}`,"INVALID_ID");let m=M1(),c=await C.selectFrom("entities as e").innerJoin("document_drafts as dd","dd.entity_id","e.id").select(["e.id as entity_id","dd.content"]).where("e.store_id","=",Y).where("e.type_code","=","t").where("e.seq","=",b.seq).where("e.deleted_at","is",null).executeTakeFirst();r.factory(!c,n.notFound,`No draft found for template: ${E}`,"DRAFT_NOT_FOUND");let o=c.entity_id,f8=((await C.selectFrom("document_versions").select(C.fn.max("version_number").as("max_version")).where("entity_id","=",o).executeTakeFirst())?.max_version||0)+1,M8=await C.insertInto("document_versions").values({entity_id:o,version_number:f8,content:c.content,published_at:m}).returningAll().executeTakeFirstOrThrow();await C.updateTable("documents").set({published_version_id:M8.id}).where("entity_id","=",o).execute(),await C.deleteFrom("document_drafts").where("entity_id","=",o).execute(),await C.deleteFrom("document_edit_state").where("entity_id","=",o).execute();let N8=await d4(C,u,{id:E});return r.factory(!N8,n.notFound,`Template not found after publish: ${E}`,"TEMPLATE_NOT_FOUND"),N8},i=async(C,u,{id:E})=>{let b=P1(E);r.factory(!b,n.validation,`Invalid template ID: ${E}`,"INVALID_ID");let m=await C.selectFrom("entities").select("id").where("store_id","=",Y).where("type_code","=","t").where("seq","=",b.seq).where("deleted_at","is",null).executeTakeFirst();r.factory(!m,n.notFound,`Template not found: ${E}`,"NOT_FOUND"),await C.deleteFrom("document_drafts").where("entity_id","=",m.id).execute();let c=await d4(C,u,{id:E});return r.factory(!c,n.notFound,`Template not found after discard: ${E}`,"TEMPLATE_NOT_FOUND"),c},W8=async(C,u,{id:E})=>{let b=P1(E);if(!b)return null;let m=await C.selectFrom("entities as e").innerJoin("document_drafts as dd","dd.entity_id","e.id").select(["e.object_id","dd.content","dd.updated_at"]).where("e.store_id","=",Y).where("e.type_code","=","t").where("e.seq","=",b.seq).where("e.deleted_at","is",null).executeTakeFirst();if(!m)return null;return{entityId:m.object_id,content:m.content,updatedAt:m.updated_at}},e=async(C,u,{id:E,versionNumber:b})=>{let m=P1(E);if(!m)return null;let c=await C.selectFrom("entities as e").innerJoin("document_versions as dv","dv.entity_id","e.id").select(["e.object_id","dv.version_number","dv.content","dv.published_at"]).where("e.store_id","=",Y).where("e.type_code","=","t").where("e.seq","=",m.seq).where("e.deleted_at","is",null).where("dv.version_number","=",b).executeTakeFirst();if(!c)return null;return{entityId:c.object_id,versionNumber:c.version_number,content:c.content,publishedAt:c.published_at}},$8=async(C,u,{id:E})=>{let b=P1(E);if(!b)return[];return(await C.selectFrom("entities as e").innerJoin("document_versions as dv","dv.entity_id","e.id").select(["dv.version_number","dv.published_at"]).where("e.store_id","=",Y).where("e.type_code","=","t").where("e.seq","=",b.seq).where("e.deleted_at","is",null).orderBy("dv.version_number","desc").execute()).map((c)=>({versionNumber:c.version_number,publishedAt:c.published_at}))},J8=async(C,u,E,b)=>{let m=await f(C,E),c=await C.selectFrom("entities as e").innerJoin("documents as d","d.entity_id","e.id").leftJoin("document_versions as dv","dv.id","d.published_version_id").leftJoin("document_drafts as dd","dd.entity_id","e.id").select(["e.id as entity_id","e.object_id","e.parent_folder_id","e.parent_object_id","e.name","e.created_at","e.updated_at","dv.version_number as published_version_number","dv.content as published_content","dd.content as draft_content",Z3.raw("CASE WHEN dd.entity_id IS NOT NULL THEN 1 ELSE 0 END").as("has_draft")]).where("e.store_id","=",Y).where("e.type_code","=","t").where("e.parent_folder_id",m===null?"is":"=",m).where("e.name","=",b).where("e.deleted_at","is",null).executeTakeFirst();if(!c)return null;let o=c.entity_id;W.set(o,c.object_id);let P8=await V(C,o),f8=await S(C,o),{entity:M8,mutationApi:N8}=TW.createFromRow(c,c.object_id,c.parent_object_id,P8,c.published_version_number,c.has_draft===1,c.draft_content??null,c.published_content??null);for(let y8 of f8)N8.setField(y8.getDefinition().getName(),y8);return{entity:M8,mutationApi:N8,pk:o}},G8=async(C,u,{parentId:E})=>{let b=await f(C,E),m=await C.selectFrom("entities as e").innerJoin("documents as d","d.entity_id","e.id").leftJoin("document_versions as dv","dv.id","d.published_version_id").leftJoin("document_drafts as dd","dd.entity_id","e.id").leftJoin("document_edit_state as es","es.entity_id","e.id").select(["e.id as entity_id","e.object_id","e.parent_folder_id","e.parent_object_id","e.name","e.created_at","e.updated_at","dv.version_number as published_version_number","dv.content as published_content","dd.content as draft_content",Z3.raw("CASE WHEN dd.entity_id IS NOT NULL THEN 1 ELSE 0 END").as("has_draft"),"es.client_id as edit_client_id","es.started_at as edit_started_at","es.last_activity_at as edit_activity"]).where("e.store_id","=",Y).where("e.type_code","=","t").where("e.parent_folder_id",b===null?"is":"=",b).where("e.deleted_at","is",null).execute(),c=[];for(let o of m){let P8=o.entity_id;W.set(P8,o.object_id);let f8=await V(C,P8),M8=await S(C,P8),{entity:N8,mutationApi:y8}=TW.createFromRow(o,o.object_id,o.parent_object_id,f8,o.published_version_number,o.has_draft===1,o.draft_content??null,o.published_content??null);for(let $6 of M8)y8.setField($6.getDefinition().getName(),$6);if(o.edit_client_id)y8.setEditState({clientId:o.edit_client_id,startedAt:o.edit_started_at,lastActivityAt:o.edit_activity});c.push({entity:N8,mutationApi:y8,pk:P8})}return c},s8=async(C,u,{id:E,clientId:b})=>{let m=P1(E);r.factory(!m,n.validation,`Invalid ID: ${E}`,"INVALID_ID");let c=M1(),o=new Date(Date.now()-jW).toISOString(),P8=await C.selectFrom("entities").select("id").where("store_id","=",Y).where("type_code","=",m.typeCode).where("seq","=",m.seq).where("deleted_at","is",null).executeTakeFirst();r.factory(!P8,n.notFound,`Entity not found: ${E}`,"ENTITY_NOT_FOUND");let f8=P8.id,M8=await C.selectFrom("document_edit_state").selectAll().where("entity_id","=",f8).executeTakeFirst();if(M8)if(M8.client_id===b)return await C.updateTable("document_edit_state").set({started_at:c,last_activity_at:c}).where("entity_id","=",f8).execute(),{success:!0};else if(M8.last_activity_at<o)return await C.updateTable("document_edit_state").set({client_id:b,started_at:c,last_activity_at:c}).where("entity_id","=",f8).execute(),{success:!0};else return{success:!1,meta:{lockedBy:M8.client_id,lockedSince:M8.started_at,timeoutSeconds:jW/1000}};else return await C.insertInto("document_edit_state").values({entity_id:f8,client_id:b,started_at:c,last_activity_at:c}).execute(),{success:!0}},P6=async(C,u,{id:E,clientId:b})=>{let m=P1(E);if(!m)return!1;let c=await C.selectFrom("entities").select("id").where("store_id","=",Y).where("type_code","=",m.typeCode).where("seq","=",m.seq).executeTakeFirst();if(!c)return!1;return((await C.updateTable("document_edit_state").set({last_activity_at:M1()}).where("entity_id","=",c.id).where("client_id","=",b).execute())[0]?.numUpdatedRows||0)>0},q8=Object.freeze({...H,getCodes:O,getType:X,getCode:w,getPk:T,toJSON:G,createFolder:D,readFolder:B,updateFolder:g,deleteFolder:R,isDuplicateNameInParent:y,findFolderByName:t,listFolderContents:K8,getFolderByPath:R8,readRootFolderForType:I8,createDocument:a3,readDocument:$1,updateDocument:l$,deleteDocument:S6,saveDraft:R3,readDraft:x8,publishDocument:V8,discardDraft:A8,readVersion:u8,getVersions:J6,findDocumentByName:n6,listDocuments:N4,createTemplate:D3,readTemplate:d4,updateTemplate:Z8,deleteTemplate:X8,saveTemplateDraft:U,readTemplateDraft:W8,publishTemplate:a,discardTemplateDraft:i,readTemplateVersion:e,getTemplateVersions:$8,findTemplateByName:J8,listTemplates:G8,createFieldDefinition:E8,readFieldDefinition:t8,readDefaultFieldDefinition:I,findFieldDefinitionByName:g8,resolveFieldDefinition:m8,getFieldDefinitionsForOwner:V6,deleteFieldDefinition:C3,setFieldValue:P3,deleteFieldValue:E4,setEditState:s8,clearEditState:async(C,u,{id:E})=>{let b=P1(E);r.factory(!b,n.validation,`Invalid ID: ${E}`,"INVALID_ID");let m=await C.selectFrom("entities").select("id").where("store_id","=",Y).where("type_code","=",b.typeCode).where("seq","=",b.seq).executeTakeFirst();r.factory(!m,n.notFound,`Entity not found: ${E}`,"ENTITY_NOT_FOUND"),await C.deleteFrom("document_edit_state").where("entity_id","=",m.id).execute()},getEditState:async(C,u,{id:E})=>{let b=P1(E);if(!b)return null;let m=await C.selectFrom("entities as e").innerJoin("document_edit_state as es","es.entity_id","e.id").select(["es.client_id","es.started_at","es.last_activity_at"]).where("e.store_id","=",Y).where("e.type_code","=",b.typeCode).where("e.seq","=",b.seq).executeTakeFirst();if(!m)return null;return{clientId:m.client_id,startedAt:m.started_at,lastActivityAt:m.last_activity_at}}}),j8=Object.freeze({...Z});return{store:q8,mutationApi:j8}},gJ8=Object.freeze({create:_H6});var fH6=({inner:$,folderCache:K,documentCache:q,templateCache:Y,fieldDefinitionCache:z})=>{let J=async(U,a,i,W8)=>{let e=await $.createFolder(U,a,i),{entity:$8,mutationApi:J8,pk:G8}=e;return W8(()=>{K.set($8.getObjectId(),T6.create($8,J8,G8))}),$8},P=async(U,a,{id:i})=>{let W8=K.get(i);if(W8)return W8.getEntity();let e=await $.readFolder(U,a,{id:i});if(!e)return null;let{entity:$8,mutationApi:J8,pk:G8}=e;return K.set(i,T6.create($8,J8,G8)),$8},W=async(U,a,i,W8)=>{let{id:e}=i,$8=K.get(e),J8=await $.updateFolder(U,a,i),G8=i.name!==void 0&&i.name!==J8.oldValues.name||i.parentId!==void 0&&i.parentId!==J8.oldValues.parentId;return W8(()=>{if($8){let P6=$8.getMutationApi();if(i.name!==void 0)P6.setName(i.name);if(i.parentId!==void 0)P6.setParentId(i.parentId);P6.setUpdatedAt(J8.entity.getUpdatedAt()),P6.setPath(J8.entity.getPath())}else{let{entity:P6,mutationApi:O8,pk:T8}=J8;K.set(e,T6.create(P6,O8,T8))}if(G8){let O8=J8.oldValues.path+"/";for(let[T8,q8]of K.entries())if(q8.getEntity().getPath().startsWith(O8))K.remove(T8)}}),{entity:$8?$8.getEntity():J8.entity,oldValues:J8.oldValues}},H=async(U,a,{id:i},W8)=>{let e=K.get(i),$8=e?e.getEntity().getPath():null,J8=await $.deleteFolder(U,a,{id:i});return W8(()=>{K.remove(i);for(let G8 of J8.descendantIds||[])K.remove(G8)}),{...J8,path:$8}},Z=async(U,a,i)=>{let W8=await $.listFolderContents(U,a,i);for(let e of W8)K.set(e.entity.getObjectId(),T6.create(e.entity,e.mutationApi,e.pk));return W8.map((e)=>e.entity)},O=async(U,a,i)=>{let W8=await $.getFolderByPath(U,a,i);if(!W8)return null;let{entity:e,mutationApi:$8,pk:J8}=W8;return K.set(e.getObjectId(),T6.create(e,$8,J8)),e},X=async(U,a,i,W8)=>{let e=await $.findFolderByName(U,a,i,W8);if(!e)return null;let{entity:$8,mutationApi:J8,pk:G8}=e;return K.set($8.getObjectId(),T6.create($8,J8,G8)),$8},w=async(U,a,i)=>{let W8=await $.readRootFolderForType(U,a,i);if(!W8)return null;let{entity:e,mutationApi:$8,pk:J8}=W8;return K.set(e.getObjectId(),T6.create(e,$8,J8)),e},T=async(U,a,i,W8,e)=>{return $.isDuplicateNameInParent(U,a,i,W8,e)},G=async(U,a,i,W8)=>{let e=await $.createDocument(U,a,i),{entity:$8,mutationApi:J8,pk:G8}=e;return W8(()=>{q.set($8.getObjectId(),T6.create($8,J8,G8))}),$8},v=async(U,a,{id:i})=>{let W8=q.get(i);if(W8)return W8.getEntity();let e=await $.readDocument(U,a,{id:i});if(!e)return null;let{entity:$8,mutationApi:J8,pk:G8}=e;return q.set(i,T6.create($8,J8,G8)),$8},f=async(U,a,i,W8)=>{let{id:e}=i,$8=q.get(e),J8=await $.updateDocument(U,a,i);return W8(()=>{if($8){let G8=$8.getMutationApi();if(i.name!==void 0)G8.setName(i.name);if(i.parentId!==void 0)G8.setParentId(i.parentId);G8.setUpdatedAt(J8.entity.getUpdatedAt()),G8.setPath(J8.entity.getPath())}else{let{entity:G8,mutationApi:s8,pk:P6}=J8;q.set(e,T6.create(G8,s8,P6))}}),$8?$8.getEntity():J8.entity},V=async(U,a,{id:i},W8)=>{let e=q.get(i),$8=e?e.getEntity().getPath():null,J8=await $.deleteDocument(U,a,{id:i});return W8(()=>{q.remove(i)}),{...J8,path:$8}},h=async(U,a,i,W8)=>{let{id:e}=i,$8=q.get(e),J8=await $.saveDraft(U,a,i);W8(()=>{if($8){let s8=$8.getMutationApi();s8.setDraftContent(J8.entity.getDraftContent()),s8.setHasDraft(J8.entity.hasDraftContent()),s8.setUpdatedAt(J8.entity.getUpdatedAt())}else{let{entity:s8,mutationApi:P6,pk:O8}=J8;q.set(e,T6.create(s8,P6,O8))}});let G8=$8?$8.getEntity():J8.entity;if(J8.lockLost!==void 0)return{entity:G8,lockLost:J8.lockLost};return G8},A=async(U,a,i,W8)=>{let{id:e}=i,$8=q.get(e),J8=await $.publishDocument(U,a,i);if($8){let G8=$8.getMutationApi();return G8.setPublishedVersionNumber(J8.entity.getPublishedVersionNumber()),G8.setPublishedContent(J8.entity.getPublishedContent()),G8.setDraftContent(null),G8.setHasDraft(!1),G8.setUpdatedAt(J8.entity.getUpdatedAt()),$8.getEntity()}else return W8(()=>{let{entity:G8,mutationApi:s8,pk:P6}=J8;q.set(e,T6.create(G8,s8,P6))}),J8.entity},N=async(U,a,i,W8)=>{let{id:e}=i,$8=q.get(e),J8=await $.discardDraft(U,a,i);return W8(()=>{if($8){let G8=$8.getMutationApi();G8.setDraftContent(null),G8.setHasDraft(!1),G8.setUpdatedAt(J8.entity.getUpdatedAt())}else{let{entity:G8,mutationApi:s8,pk:P6}=J8;q.set(e,T6.create(G8,s8,P6))}}),$8?$8.getEntity():J8.entity},S=async(U,a,i)=>{return $.readDraft(U,a,i)},I=async(U,a,i)=>{return $.readVersion(U,a,i)},D=async(U,a,i)=>{return $.getVersions(U,a,i)},B=async(U,a,i,W8)=>{let e=await $.findDocumentByName(U,a,i,W8);if(!e)return null;let{entity:$8,mutationApi:J8,pk:G8}=e;return q.set($8.getObjectId(),T6.create($8,J8,G8)),$8},g=async(U,a,i)=>{let W8=await $.listDocuments(U,a,i);for(let e of W8)q.set(e.entity.getObjectId(),T6.create(e.entity,e.mutationApi,e.pk));return W8.map((e)=>e.entity)},R=async(U,a,i,W8)=>{let{id:e}=i,$8=await $.setEditState(U,a,i);return W8(()=>{let J8=e.charAt(1);if(J8==="d")q.remove(e);else if(J8==="t")Y.remove(e)}),$8},y=async(U,a,i)=>{return $.getEditState(U,a,i)},t=async(U,a,i,W8)=>{let{id:e}=i;await $.clearEditState(U,a,i),W8(()=>{let $8=e.charAt(1);if($8==="d")q.remove(e);else if($8==="t")Y.remove(e)})},K8=async(U,a,i,W8)=>{let e=await $.createTemplate(U,a,i),{entity:$8,mutationApi:J8,pk:G8}=e;return W8(()=>{Y.set($8.getObjectId(),T6.create($8,J8,G8))}),$8},R8=async(U,a,{id:i})=>{let W8=Y.get(i);if(W8)return W8.getEntity();let e=await $.readTemplate(U,a,{id:i});if(!e)return null;let{entity:$8,mutationApi:J8,pk:G8}=e;return Y.set(i,T6.create($8,J8,G8)),$8},I8=async(U,a,i,W8)=>{let{id:e}=i,$8=Y.get(e),J8=await $.updateTemplate(U,a,i);return W8(()=>{if($8){let G8=$8.getMutationApi();if(i.name!==void 0)G8.setName(i.name);if(i.parentId!==void 0)G8.setParentId(i.parentId);G8.setUpdatedAt(J8.entity.getUpdatedAt()),G8.setPath(J8.entity.getPath())}else{let{entity:G8,mutationApi:s8,pk:P6}=J8;Y.set(e,T6.create(G8,s8,P6))}}),$8?$8.getEntity():J8.entity},E8=async(U,a,{id:i},W8)=>{let e=Y.get(i),$8=e?e.getEntity().getPath():null,J8=await $.deleteTemplate(U,a,{id:i});return W8(()=>{Y.remove(i)}),{...J8,path:$8}},t8=async(U,a,i,W8)=>{let{id:e}=i,$8=Y.get(e),J8=await $.saveTemplateDraft(U,a,i);W8(()=>{if($8){let s8=$8.getMutationApi();s8.setDraftContent(J8.entity.getDraftContent()),s8.setHasDraft(J8.entity.hasDraftContent()),s8.setUpdatedAt(J8.entity.getUpdatedAt())}else{let{entity:s8,mutationApi:P6,pk:O8}=J8;Y.set(e,T6.create(s8,P6,O8))}});let G8=$8?$8.getEntity():J8.entity;if(J8.lockLost!==void 0)return{entity:G8,lockLost:J8.lockLost};return G8},g8=async(U,a,i,W8)=>{let{id:e}=i,$8=Y.get(e),J8=await $.publishTemplate(U,a,i);if($8){let G8=$8.getMutationApi();return G8.setPublishedVersionNumber(J8.entity.getPublishedVersionNumber()),G8.setPublishedContent(J8.entity.getPublishedContent()),G8.setDraftContent(null),G8.setHasDraft(!1),G8.setUpdatedAt(J8.entity.getUpdatedAt()),$8.getEntity()}else return W8(()=>{let{entity:G8,mutationApi:s8,pk:P6}=J8;Y.set(e,T6.create(G8,s8,P6))}),J8.entity},m8=async(U,a,i,W8)=>{let{id:e}=i,$8=Y.get(e),J8=await $.discardTemplateDraft(U,a,i);return W8(()=>{if($8){let G8=$8.getMutationApi();G8.setDraftContent(null),G8.setHasDraft(!1),G8.setUpdatedAt(J8.entity.getUpdatedAt())}else{let{entity:G8,mutationApi:s8,pk:P6}=J8;Y.set(e,T6.create(G8,s8,P6))}}),$8?$8.getEntity():J8.entity},V6=async(U,a,i)=>{return $.readTemplateDraft(U,a,i)},C3=async(U,a,i)=>{return $.readTemplateVersion(U,a,i)},P3=async(U,a,i)=>{return $.getTemplateVersions(U,a,i)},E4=async(U,a,i,W8)=>{let e=await $.findTemplateByName(U,a,i,W8);if(!e)return null;let{entity:$8,mutationApi:J8,pk:G8}=e;return Y.set($8.getObjectId(),T6.create($8,J8,G8)),$8},a3=async(U,a,i)=>{let W8=await $.listTemplates(U,a,i);for(let e of W8)Y.set(e.entity.getObjectId(),T6.create(e.entity,e.mutationApi,e.pk));return W8.map((e)=>e.entity)},$1=async(U,a,i)=>{return $.setTemplateEditState(U,a,i)},l$=async(U,a,i)=>{return $.getTemplateEditState(U,a,i)},S6=async(U,a,i,W8)=>{return $.clearTemplateEditState(U,a,i,W8)},R3=async(U,a,i,W8)=>{let e=await $.createFieldDefinition(U,a,i),{entity:$8,mutationApi:J8,pk:G8}=e;return W8(()=>{z.set($8.getObjectId(),T6.create($8,J8,G8))}),$8},V8=async(U,a,{id:i})=>{let W8=z.get(i);if(W8)return W8.getEntity();let e=await $.readFieldDefinition(U,a,{id:i});if(!e)return null;let{entity:$8,mutationApi:J8,pk:G8}=e;return z.set(i,T6.create($8,J8,G8)),$8},A8=async(U,a,i,W8)=>{let e=await $.findFieldDefinitionByName(U,a,i,W8);if(!e)return null;let{entity:$8,mutationApi:J8,pk:G8}=e;return z.set($8.getObjectId(),T6.create($8,J8,G8)),$8},x8=async(U,a,i)=>{let W8=await $.getFieldDefinitionsForOwner(U,a,i);for(let e of W8)z.set(e.entity.getObjectId(),T6.create(e.entity,e.mutationApi,e.pk));return W8.map((e)=>e.entity)},u8=async(U,a)=>{let i=`${$.getCode()}n1`,W8=z.get(i);if(W8)return W8.getEntity();let e=await $.readDefaultFieldDefinition(U,a),{entity:$8,mutationApi:J8,pk:G8}=e;return z.set($8.getObjectId(),T6.create($8,J8,G8)),$8},J6=async(U,a,i)=>{let W8=await $.resolveFieldDefinition(U,a,i),{entity:e,mutationApi:$8,pk:J8}=W8;return z.set(e.getObjectId(),T6.create(e,$8,J8)),e},n6=async(U,a,{id:i},W8)=>{let e=await $.deleteFieldDefinition(U,a,{id:i});return W8(()=>{z.remove(i)}),e},N4=async(U,a,i,W8)=>{let{entityId:e}=i,$8=await $.setFieldValue(U,a,i);return W8(()=>{let J8=K.get(e)||q.get(e)||Y.get(e);if(J8){let G8=J8.getMutationApi(),s8=$8.entity.getField($8.fieldName);G8.setField($8.fieldName,s8)}}),$8.entity},D3=async(U,a,i)=>{return $.getFieldValue(U,a,i)},d4=async(U,a,i,W8)=>{let{entityId:e}=i,$8=await $.deleteFieldValue(U,a,i);W8(()=>{let J8=K.get(e)||q.get(e)||Y.get(e);if(J8)J8.getMutationApi().removeField($8.fieldName)})},Z8=(U)=>{K.remove(U)};return Object.freeze({getObjectId:$.getObjectId,getName:$.getName,getCreatedAt:$.getCreatedAt,getUpdatedAt:$.getUpdatedAt,getCodes:$.getCodes,getType:$.getType,getCode:$.getCode,getPk:$.getPk,toJSON:$.toJSON,createFolder:J,readFolder:P,updateFolder:W,deleteFolder:H,listFolderContents:Z,getFolderByPath:O,findFolderByName:X,readRootFolderForType:w,isDuplicateNameInParent:T,createDocument:G,readDocument:v,updateDocument:f,deleteDocument:V,saveDraft:h,readDraft:S,publishDocument:A,discardDraft:N,readVersion:I,getVersions:D,findDocumentByName:B,listDocuments:g,setEditState:R,getEditState:y,clearEditState:t,createTemplate:K8,readTemplate:R8,updateTemplate:I8,deleteTemplate:E8,saveTemplateDraft:t8,readTemplateDraft:V6,publishTemplate:g8,discardTemplateDraft:m8,readTemplateVersion:C3,getTemplateVersions:P3,findTemplateByName:E4,listTemplates:a3,setTemplateEditState:$1,getTemplateEditState:l$,clearTemplateEditState:S6,createFieldDefinition:R3,readFieldDefinition:V8,findFieldDefinitionByName:A8,getFieldDefinitionsForOwner:x8,readDefaultFieldDefinition:u8,resolveFieldDefinition:J6,deleteFieldDefinition:n6,setFieldValue:N4,getFieldValue:D3,deleteFieldValue:d4,evictFolder:Z8})},yJ8=Object.freeze({create:fH6});var VH6=($)=>{let K=new Map;return $.forEach((J)=>K.set(J,new Set)),Object.freeze({subscribe:(J,P)=>{return K.get(J)?.add(P),()=>K.get(J)?.delete(P)},subscribeAll:(J)=>{let P=[];for(let[W,H]of K){let Z=`on${W.charAt(0).toUpperCase()}${W.slice(1)}`;if(J[Z])H.add(J[Z]),P.push(()=>H.delete(J[Z]))}return()=>P.forEach((W)=>W())},notify:(J,P)=>{K.get(J)?.forEach((W)=>{try{W(P)}catch(H){console.error(`Error in ${J} handler:`,H)}})}})},uJ8=Object.freeze({create:VH6});var M6=Object.freeze({FOLDER_CREATED:"folderCreated",FOLDER_RENAMED:"folderRenamed",FOLDER_MOVED:"folderMoved",FOLDER_DELETED:"folderDeleted",DOCUMENT_CREATED:"documentCreated",DOCUMENT_RENAMED:"documentRenamed",DOCUMENT_MOVED:"documentMoved",DOCUMENT_DELETED:"documentDeleted",DOCUMENT_PUBLISHED:"documentPublished",DRAFT_SAVED:"draftSaved",DRAFT_DISCARDED:"draftDiscarded",TEMPLATE_CREATED:"templateCreated",TEMPLATE_RENAMED:"templateRenamed",TEMPLATE_MOVED:"templateMoved",TEMPLATE_DELETED:"templateDeleted",TEMPLATE_PUBLISHED:"templatePublished",TEMPLATE_DRAFT_SAVED:"templateDraftSaved",TEMPLATE_DRAFT_DISCARDED:"templateDraftDiscarded",EDIT_STATE_ACQUIRED:"editStateAcquired",EDIT_STATE_REFRESHED:"editStateRefreshed",EDIT_STATE_CLEARED:"editStateCleared"});var AH6=({inner:$,storeCode:K})=>{let q=uJ8.create([M6.FOLDER_CREATED,M6.FOLDER_RENAMED,M6.FOLDER_MOVED,M6.FOLDER_DELETED,M6.DOCUMENT_CREATED,M6.DOCUMENT_RENAMED,M6.DOCUMENT_MOVED,M6.DOCUMENT_DELETED,M6.DOCUMENT_PUBLISHED,M6.DRAFT_SAVED,M6.DRAFT_DISCARDED,M6.TEMPLATE_CREATED,M6.TEMPLATE_RENAMED,M6.TEMPLATE_MOVED,M6.TEMPLATE_DELETED,M6.TEMPLATE_PUBLISHED,M6.TEMPLATE_DRAFT_SAVED,M6.TEMPLATE_DRAFT_DISCARDED]),Y=async(Z8,X8,U)=>{let a=await $.readFolder(Z8,X8,{id:U});if(!a)return null;let i=await Z8.selectFrom("entities").innerJoin("entity_types","entities.entity_type_id","entity_types.id").select(["entity_types.code as entity_type_code","entity_types.subtype as entity_type_subtype"]).where("entities.object_id","=",U).executeTakeFirst();if(i?.entity_type_code==="f"&&i?.entity_type_subtype==="root_d")return"d";if(i?.entity_type_code==="f"&&i?.entity_type_subtype==="root_t")return"t";let W8=await $.readRootFolderForType(Z8,X8,"d"),e=await $.readRootFolderForType(Z8,X8,"t"),$8=a;while($8&&$8.getParentId()!==null){let J8=await $.readFolder(Z8,X8,{id:$8.getParentId()});if(!J8)break;$8=J8}if($8&&$8.getObjectId()===W8?.getObjectId())return"d";else if($8&&$8.getObjectId()===e?.getObjectId())return"t";return null},z=async(Z8,X8,U,a)=>{let{parentId:i,name:W8,subtype:e}=U,$8=await $.createFolder(Z8,X8,U,a),J8=null;if(e==="root_d")J8="d";else if(e==="root_t")J8="t";else{let G8=await $.readRootFolderForType(Z8,X8,"d"),s8=await $.readRootFolderForType(Z8,X8,"t");if(i===G8?.getObjectId())J8="d";else if(i===s8?.getObjectId())J8="t";else if(i){let P6=await $.readFolder(Z8,X8,{id:i});if(P6){let O8=P6;while(O8&&O8.getParentId()!==null){let T8=await $.readFolder(Z8,X8,{id:O8.getParentId()});if(!T8)break;O8=T8}if(O8&&O8.getObjectId()===G8?.getObjectId())J8="d";else if(O8&&O8.getObjectId()===s8?.getObjectId())J8="t"}}}return a(()=>{q.notify(M6.FOLDER_CREATED,{id:$8.getObjectId(),storeCode:K,name:$8.getName(),path:$8.getPath(),parentFolderId:i,contentType:J8})}),$8},J=async(Z8,X8,U)=>{return $.readFolder(Z8,X8,U)},P=async(Z8,X8,U,a)=>{let{id:i,name:W8,parentId:e}=U,$8=await $.updateFolder(Z8,X8,U,a),J8=$8.entity,G8=$8.oldValues.name,s8=$8.oldValues.parentId,P6=await Y(Z8,X8,i);if(W8!==void 0&&W8!==G8)a(()=>{q.notify(M6.FOLDER_RENAMED,{id:i,storeCode:K,parentFolderId:J8.getParentId(),contentType:P6,oldName:G8,newName:W8,path:J8.getPath()})});if(e!==void 0&&e!==s8)a(()=>{q.notify(M6.FOLDER_MOVED,{id:i,storeCode:K,contentType:P6,oldParentFolderId:s8,parentFolderId:e,path:J8.getPath()})});return J8},W=async(Z8,X8,U,a)=>{let{id:i}=U,e=(await $.readFolder(Z8,X8,{id:i}))?.getParentId(),$8=await Y(Z8,X8,i),J8=await $.deleteFolder(Z8,X8,U,a);return a(()=>{q.notify(M6.FOLDER_DELETED,{id:i,storeCode:K,parentFolderId:e,contentType:$8,path:J8.path,descendantCount:J8.descendantIds?.length||0})}),J8},H=async(Z8,X8,U)=>{return $.listFolderContents(Z8,X8,U)},Z=async(Z8,X8,U)=>{return $.getFolderByPath(Z8,X8,U)},O=async(Z8,X8,U,a)=>{return $.findFolderByName(Z8,X8,U,a)},X=async(Z8,X8,U)=>{return $.readRootFolderForType(Z8,X8,U)},w=async(Z8,X8,U,a,i)=>{return $.isDuplicateNameInParent(Z8,X8,U,a,i)},T=async(Z8,X8,U,a)=>{let{parentId:i,name:W8}=U,e=await $.createDocument(Z8,X8,U,a);return a(()=>{q.notify(M6.DOCUMENT_CREATED,{storeCode:K,id:e.getObjectId(),type:"d",parentFolderId:i,name:e.getName(),path:e.getPath()})}),e},G=async(Z8,X8,U)=>{return $.readDocument(Z8,X8,U)},v=async(Z8,X8,U,a)=>{let{id:i,name:W8,parentId:e}=U,$8=await $.readDocument(Z8,X8,{id:i}),J8=$8?.getName(),G8=$8?.getParentId(),s8=await $.updateDocument(Z8,X8,U,a);if(W8!==void 0&&W8!==J8)a(()=>{q.notify(M6.DOCUMENT_RENAMED,{storeCode:K,id:i,type:"d",parentFolderId:s8.getParentId(),oldName:J8,newName:W8,path:s8.getPath()})});if(e!==void 0&&e!==G8)a(()=>{q.notify(M6.DOCUMENT_MOVED,{storeCode:K,id:i,type:"d",oldParentFolderId:G8,parentFolderId:e,path:s8.getPath()})});return s8},f=async(Z8,X8,U,a)=>{let{id:i}=U,e=(await $.readDocument(Z8,X8,{id:i}))?.getParentId(),$8=await $.deleteDocument(Z8,X8,U,a);return a(()=>{q.notify(M6.DOCUMENT_DELETED,{storeCode:K,id:i,type:"d",parentFolderId:e,path:$8.path})}),$8},V=async(Z8,X8,U,a)=>{let{id:i}=U,e=(await $.readDocument(Z8,X8,{id:i}))?.getParentId(),$8=await $.saveDraft(Z8,X8,U,a);return a(()=>{let J8=$8.lockLost!==void 0?$8.entity:$8;q.notify(M6.DRAFT_SAVED,{storeCode:K,id:i,type:"d",parentFolderId:e,updatedAt:J8?J8.getUpdatedAt():null,lockLost:$8.lockLost})}),$8},h=async(Z8,X8,U,a)=>{let{id:i}=U,W8=await $.publishDocument(Z8,X8,U,a);return a(()=>{q.notify(M6.DOCUMENT_PUBLISHED,{storeCode:K,id:i,type:"d",parentFolderId:W8.getParentId(),versionNumber:W8.getPublishedVersionNumber()})}),{entityId:i,versionNumber:W8.getPublishedVersionNumber(),content:W8.getPublishedContent(),publishedAt:W8.getUpdatedAt()}},A=async(Z8,X8,U,a)=>{let{id:i}=U,W8=await $.discardDraft(Z8,X8,U,a);return a(()=>{q.notify(M6.DRAFT_DISCARDED,{storeCode:K,id:i})}),W8},N=async(Z8,X8,U)=>{return $.readDraft(Z8,X8,U)},S=async(Z8,X8,U)=>{return $.readVersion(Z8,X8,U)},I=async(Z8,X8,U)=>{return $.getVersions(Z8,X8,U)},D=async(Z8,X8,U,a)=>{return $.findDocumentByName(Z8,X8,U,a)},B=async(Z8,X8,U)=>{return $.listDocuments(Z8,X8,U)},g=async(Z8,X8,U,a)=>{return $.setEditState(Z8,X8,U,a)},R=async(Z8,X8,U)=>{return $.getEditState(Z8,X8,U)},y=async(Z8,X8,U,a)=>{return $.clearEditState(Z8,X8,U,a)},t=async(Z8,X8,U,a)=>{let{parentId:i,name:W8}=U,e=await $.createTemplate(Z8,X8,U,a);return a(()=>{q.notify(M6.TEMPLATE_CREATED,{storeCode:K,id:e.getObjectId(),type:"t",parentFolderId:i,name:e.getName(),path:e.getPath()})}),e},K8=async(Z8,X8,U)=>{return $.readTemplate(Z8,X8,U)},R8=async(Z8,X8,U,a)=>{let{id:i,name:W8,parentId:e}=U,$8=await $.readTemplate(Z8,X8,{id:i}),J8=$8?.getName(),G8=$8?.getParentId(),s8=await $.updateTemplate(Z8,X8,U,a);if(W8!==void 0&&W8!==J8)a(()=>{q.notify(M6.TEMPLATE_RENAMED,{storeCode:K,id:i,type:"t",parentFolderId:s8.getParentId(),oldName:J8,newName:W8,path:s8.getPath()})});if(e!==void 0&&e!==G8)a(()=>{q.notify(M6.TEMPLATE_MOVED,{storeCode:K,id:i,type:"t",oldParentFolderId:G8,parentFolderId:e,path:s8.getPath()})});return s8},I8=async(Z8,X8,U,a)=>{let{id:i}=U,e=(await $.readTemplate(Z8,X8,{id:i}))?.getParentId(),$8=await $.deleteTemplate(Z8,X8,U,a);return a(()=>{q.notify(M6.TEMPLATE_DELETED,{storeCode:K,id:i,type:"t",parentFolderId:e,path:$8.path})}),$8},E8=async(Z8,X8,U,a)=>{let{id:i}=U,e=(await $.readTemplate(Z8,X8,{id:i}))?.getParentId(),$8=await $.saveTemplateDraft(Z8,X8,U,a);return a(()=>{let J8=$8.lockLost!==void 0?$8.entity:$8;q.notify(M6.TEMPLATE_DRAFT_SAVED,{storeCode:K,id:i,type:"t",parentFolderId:e,updatedAt:J8?J8.getUpdatedAt():null,lockLost:$8.lockLost})}),$8},t8=async(Z8,X8,U,a)=>{let{id:i}=U,W8=await $.publishTemplate(Z8,X8,U,a);return a(()=>{q.notify(M6.TEMPLATE_PUBLISHED,{storeCode:K,id:i,type:"t",parentFolderId:W8.getParentId(),versionNumber:W8.getPublishedVersionNumber()})}),{entityId:i,versionNumber:W8.getPublishedVersionNumber(),content:W8.getPublishedContent(),publishedAt:W8.getUpdatedAt()}},g8=async(Z8,X8,U,a)=>{let{id:i}=U,W8=await $.discardTemplateDraft(Z8,X8,U,a);return a(()=>{q.notify(M6.TEMPLATE_DRAFT_DISCARDED,{storeCode:K,id:i})}),W8},m8=async(Z8,X8,U)=>{return $.readTemplateDraft(Z8,X8,U)},V6=async(Z8,X8,U)=>{return $.readTemplateVersion(Z8,X8,U)},C3=async(Z8,X8,U)=>{return $.getTemplateVersions(Z8,X8,U)},P3=async(Z8,X8,U,a)=>{return $.findTemplateByName(Z8,X8,U,a)},E4=async(Z8,X8,U)=>{return $.listTemplates(Z8,X8,U)},a3=async(Z8,X8,U)=>{return $.setTemplateEditState(Z8,X8,U)},$1=async(Z8,X8,U)=>{return $.getTemplateEditState(Z8,X8,U)},l$=async(Z8,X8,U,a)=>{return $.clearTemplateEditState(Z8,X8,U,a)},S6=async(Z8,X8,U,a)=>{return $.createFieldDefinition(Z8,X8,U,a)},R3=async(Z8,X8,U)=>{return $.readFieldDefinition(Z8,X8,U)},V8=async(Z8,X8,U,a)=>{return $.findFieldDefinitionByName(Z8,X8,U,a)},A8=async(Z8,X8,U)=>{return $.getFieldDefinitionsForOwner(Z8,X8,U)},x8=async(Z8,X8)=>{return $.readDefaultFieldDefinition(Z8,X8)},u8=async(Z8,X8,U)=>{return $.resolveFieldDefinition(Z8,X8,U)},J6=async(Z8,X8,U,a)=>{return $.deleteFieldDefinition(Z8,X8,U,a)},n6=async(Z8,X8,U,a)=>{return $.setFieldValue(Z8,X8,U,a)},N4=async(Z8,X8,U)=>{return $.getFieldValue(Z8,X8,U)},D3=async(Z8,X8,U,a)=>{return $.deleteFieldValue(Z8,X8,U,a)};return Object.freeze({getObjectId:$.getObjectId,getName:$.getName,getCreatedAt:$.getCreatedAt,getUpdatedAt:$.getUpdatedAt,getCodes:$.getCodes,getType:$.getType,getCode:$.getCode,getPk:$.getPk,toJSON:$.toJSON,createFolder:z,readFolder:J,updateFolder:P,deleteFolder:W,listFolderContents:H,getFolderByPath:Z,findFolderByName:O,readRootFolderForType:X,isDuplicateNameInParent:w,createDocument:T,readDocument:G,updateDocument:v,deleteDocument:f,saveDraft:V,readDraft:N,publishDocument:h,discardDraft:A,readVersion:S,getVersions:I,findDocumentByName:D,listDocuments:B,setEditState:g,getEditState:R,clearEditState:y,createTemplate:t,readTemplate:K8,updateTemplate:R8,deleteTemplate:I8,saveTemplateDraft:E8,readTemplateDraft:m8,publishTemplate:t8,discardTemplateDraft:g8,readTemplateVersion:V6,getTemplateVersions:C3,findTemplateByName:P3,listTemplates:E4,setTemplateEditState:a3,getTemplateEditState:$1,clearTemplateEditState:l$,createFieldDefinition:S6,readFieldDefinition:R3,findFieldDefinitionByName:V8,getFieldDefinitionsForOwner:A8,readDefaultFieldDefinition:x8,resolveFieldDefinition:u8,deleteFieldDefinition:J6,setFieldValue:n6,getFieldValue:N4,deleteFieldValue:D3,evictFolder:$.evictFolder,subscribe:q.subscribe,subscribeAll:q.subscribeAll})},mJ8=Object.freeze({create:AH6});var kH6=($)=>{let{id:K,code:q,name:Y,pk:z,createdAt:J,updatedAt:P}=$,W=Nw.create(),H=Nw.create(),Z=Nw.create(),O=Nw.create(),{store:X,mutationApi:w}=gJ8.create({id:K,code:q,name:Y,pk:z,createdAt:J,updatedAt:P,folderCache:W}),T=yJ8.create({inner:X,folderCache:W,documentCache:H,templateCache:Z,fieldDefinitionCache:O});return{store:mJ8.create({inner:T,storeCode:q}),mutationApi:w}},pJ8=Object.freeze({create:kH6});var MH6=({id:$,name:K,createdAt:q,updatedAt:Y,children:z=[]})=>{let J=[...z],P=new Map,{entityFns:W,mutationFns:H}=w5.create({id:$,name:K,createdAt:q,updatedAt:Y}),Z=()=>{P.clear();for(let O8 of J){let T8=O8.getCodes();for(let q8 of T8)P.set(q8,O8)}};Z();let O=()=>"demux",X=()=>J.map((O8)=>O8.getObjectId()),w=()=>[...J],T=()=>{return new Set(P.keys())},G=()=>({id:$,name:K,createdAt:q,updatedAt:Y,type:"demux",childIds:X()}),v=(O8)=>{J.push(O8),Z()},f=(O8)=>{return P.get(O8)??null},V=async(O8,T8,{store:q8,storeCode:j8,parentId:C,name:u,subtype:E},b)=>{let m=q8??j8;r.factory(!m,n.validation,"store parameter is required","MISSING_STORE_CODE");let c=f(m);return r.factory(!c,n.notFound,`No child store with code: ${m}`,"STORE_NOT_FOUND"),c.createFolder(O8,T8,{storeCode:m,parentId:C,name:u,subtype:E},b)},h=async(O8,T8,{id:q8})=>{let j8=q8?.[0],C=f(j8);if(!C)return null;return C.readFolder(O8,T8,{id:q8})},s8=Object.freeze({...W,getType:O,getCodes:T,getChildIds:X,getChildren:w,toJSON:G,createFolder:V,readFolder:h,updateFolder:async(O8,T8,{id:q8,name:j8,parentId:C},u)=>{let E=q8?.[0],b=f(E);return r.factory(!b,n.notFound,`No child store with code: ${E}`,"STORE_NOT_FOUND"),b.updateFolder(O8,T8,{id:q8,name:j8,parentId:C},u)},deleteFolder:async(O8,T8,{id:q8},j8)=>{let C=q8?.[0],u=f(C);return r.factory(!u,n.notFound,`No child store with code: ${C}`,"STORE_NOT_FOUND"),u.deleteFolder(O8,T8,{id:q8},j8)},evictFolder:(O8)=>{let T8=O8?.[0],q8=f(T8);if(q8)q8.evictFolder(O8)},getFolder:async(O8,T8,{id:q8})=>{return h(O8,T8,{id:q8})},listFolderContents:async(O8,T8,{folderId:q8,store:j8,storeCode:C,type:u})=>{let E;if(q8!==null&&q8!==void 0)E=q8[0];else{let c=j8??C;r.factory(!c,n.validation,"store required when folderId is null","STORE_CODE_REQUIRED"),E=c}let b=f(E);r.factory(!b,n.notFound,`No child store with code: ${E}`,"STORE_NOT_FOUND");let m={...T8,storeCode:E};return b.listFolderContents(O8,m,{folderId:q8,type:u})},getFolderByPath:async(O8,T8,{path:q8,type:j8,store:C,storeCode:u})=>{let E=C??u;r.factory(!E,n.validation,"store required for getFolderByPath","STORE_CODE_REQUIRED");let b=f(E);if(!b)return null;let m={...T8,storeCode:E};return b.getFolderByPath(O8,m,{path:q8,type:j8})},isDuplicateNameInParent:async(O8,T8,q8,j8,C=null)=>{let u;if(q8)u=q8[0];else{let b=J[0];if(!b)r.factory(!0,n.notFound,"No child stores available","STORE_NOT_FOUND");u=[...b.getCodes()][0]}let E=f(u);return r.factory(!E,n.notFound,`No child store with code: ${u}`,"STORE_NOT_FOUND"),E.isDuplicateNameInParent(O8,T8,q8,j8,C)},findFolderByName:async(O8,T8,q8,j8)=>{let C=q8[0],u=f(C);if(!u)return null;return u.findFolderByName(O8,T8,q8,j8)},readRootFolderForType:async(O8,T8,q8,j8)=>{let C=f(j8);return r.factory(!C,n.notFound,`No child store with code: ${j8}`,"STORE_NOT_FOUND"),C.readRootFolderForType(O8,T8,q8,j8)},createFieldDefinition:async(O8,T8,{storeCode:q8,ownerEntityId:j8,name:C,label:u,description:E,primitiveType:b,required:m,multiplicity:c,isSystem:o},P8)=>{let f8=f(q8);return r.factory(!f8,n.notFound,`No child store with code: ${q8}`,"STORE_NOT_FOUND"),f8.createFieldDefinition(O8,T8,{storeCode:q8,ownerEntityId:j8,name:C,label:u,description:E,primitiveType:b,required:m,multiplicity:c,isSystem:o},P8)},readFieldDefinition:async(O8,T8,{id:q8})=>{let j8=q8?.[0],C=f(j8);if(!C)return null;return C.readFieldDefinition(O8,T8,{id:q8})},readDefaultFieldDefinition:async(O8,T8,q8)=>{let j8=f(q8);return r.factory(!j8,n.notFound,`No child store with code: ${q8}`,"STORE_NOT_FOUND"),j8.readDefaultFieldDefinition(O8,T8)},getFieldDefinitionsForOwner:async(O8,T8,{storeCode:q8,ownerEntityPk:j8,includeSystem:C})=>{let u=f(q8);return r.factory(!u,n.notFound,`No child store with code: ${q8}`,"STORE_NOT_FOUND"),u.getFieldDefinitionsForOwner(O8,T8,{ownerEntityPk:j8,includeSystem:C})},deleteFieldDefinition:async(O8,T8,{id:q8},j8)=>{let C=q8?.[0],u=f(C);return r.factory(!u,n.notFound,`No child store with code: ${C}`,"STORE_NOT_FOUND"),u.deleteFieldDefinition(O8,T8,{id:q8},j8)},setFieldValue:async(O8,T8,{entityId:q8,fieldDefinitionId:j8,fieldName:C,value:u,values:E},b)=>{let m=q8?.[0],c=f(m);return r.factory(!c,n.notFound,`No child store with code: ${m}`,"STORE_NOT_FOUND"),c.setFieldValue(O8,T8,{entityId:q8,fieldDefinitionId:j8,fieldName:C,value:u,values:E},b)},deleteFieldValue:async(O8,T8,{entityId:q8,fieldDefinitionId:j8,fieldName:C},u)=>{let E=q8?.[0],b=f(E);return r.factory(!b,n.notFound,`No child store with code: ${E}`,"STORE_NOT_FOUND"),b.deleteFieldValue(O8,T8,{entityId:q8,fieldDefinitionId:j8,fieldName:C},u)},createDocument:async(O8,T8,{storeCode:q8,...j8},C)=>{let u=f(q8);return r.factory(!u,n.notFound,`No child store with code: ${q8}`,"STORE_NOT_FOUND"),u.createDocument(O8,T8,{storeCode:q8,...j8},C)},readDocument:async(O8,T8,{id:q8})=>{let j8=q8?.[0],C=f(j8);if(!C)return null;return C.readDocument(O8,T8,{id:q8})},updateDocument:async(O8,T8,{id:q8,...j8},C)=>{let u=q8?.[0],E=f(u);return r.factory(!E,n.notFound,`No child store with code: ${u}`,"STORE_NOT_FOUND"),E.updateDocument(O8,T8,{id:q8,...j8},C)},deleteDocument:async(O8,T8,{id:q8},j8)=>{let C=q8?.[0],u=f(C);return r.factory(!u,n.notFound,`No child store with code: ${C}`,"STORE_NOT_FOUND"),u.deleteDocument(O8,T8,{id:q8},j8)},saveDraft:async(O8,T8,{id:q8,content:j8,clientId:C},u)=>{let E=q8?.[0],b=f(E);return r.factory(!b,n.notFound,`No child store with code: ${E}`,"STORE_NOT_FOUND"),b.saveDraft(O8,T8,{id:q8,content:j8,clientId:C},u)},readDraft:async(O8,T8,{id:q8})=>{let j8=q8?.[0],C=f(j8);if(!C)return null;return C.readDraft(O8,T8,{id:q8})},publishDocument:async(O8,T8,{id:q8},j8)=>{let C=q8?.[0],u=f(C);return r.factory(!u,n.notFound,`No child store with code: ${C}`,"STORE_NOT_FOUND"),u.publishDocument(O8,T8,{id:q8},j8)},discardDraft:async(O8,T8,{id:q8},j8)=>{let C=q8?.[0],u=f(C);return r.factory(!u,n.notFound,`No child store with code: ${C}`,"STORE_NOT_FOUND"),u.discardDraft(O8,T8,{id:q8},j8)},setEditState:async(O8,T8,{id:q8,clientId:j8},C)=>{let u=q8?.[0],E=f(u);return r.factory(!E,n.notFound,`No child store with code: ${u}`,"STORE_NOT_FOUND"),E.setEditState(O8,T8,{id:q8,clientId:j8},C)},clearEditState:async(O8,T8,{id:q8},j8)=>{let C=q8?.[0],u=f(C);return r.factory(!u,n.notFound,`No child store with code: ${C}`,"STORE_NOT_FOUND"),u.clearEditState(O8,T8,{id:q8},j8)},getEditState:async(O8,T8,{id:q8})=>{let j8=q8?.[0],C=f(j8);if(!C)return null;return C.getEditState(O8,T8,{id:q8})},readVersion:async(O8,T8,{id:q8,versionNumber:j8})=>{let C=q8?.[0],u=f(C);if(!u)return null;return u.readVersion(O8,T8,{id:q8,versionNumber:j8})},getVersions:async(O8,T8,{id:q8})=>{let j8=q8?.[0],C=f(j8);if(!C)return[];return C.getVersions(O8,T8,{id:q8})},findDocumentByName:async(O8,T8,q8,j8)=>{let C=q8?.[0],u=f(C);if(!u)return null;return u.findDocumentByName(O8,T8,q8,j8)},listDocuments:async(O8,T8,{parentId:q8,storeCode:j8})=>{let C,u;if(q8)C=q8[0],u=q8;else{r.factory(!j8,n.validation,"storeCode required when parentId is null","MISSING_STORE_CODE"),C=j8;let b=f(C);r.factory(!b,n.notFound,`No child store with code: ${C}`,"STORE_NOT_FOUND");try{u=(await b.readRootFolderForType(O8,T8,"d",C)).getObjectId()}catch(m){u=null}}let E=f(C);return r.factory(!E,n.notFound,`No child store with code: ${C}`,"STORE_NOT_FOUND"),E.listDocuments(O8,T8,{parentId:u})},createTemplate:async(O8,T8,{storeCode:q8,...j8},C)=>{let u=f(q8);return r.factory(!u,n.notFound,`No child store with code: ${q8}`,"STORE_NOT_FOUND"),u.createTemplate(O8,T8,{storeCode:q8,...j8},C)},readTemplate:async(O8,T8,{id:q8})=>{let j8=q8?.[0],C=f(j8);if(!C)return null;return C.readTemplate(O8,T8,{id:q8})},updateTemplate:async(O8,T8,{id:q8,...j8},C)=>{let u=q8?.[0],E=f(u);return r.factory(!E,n.notFound,`No child store with code: ${u}`,"STORE_NOT_FOUND"),E.updateTemplate(O8,T8,{id:q8,...j8},C)},deleteTemplate:async(O8,T8,{id:q8},j8)=>{let C=q8?.[0],u=f(C);return r.factory(!u,n.notFound,`No child store with code: ${C}`,"STORE_NOT_FOUND"),u.deleteTemplate(O8,T8,{id:q8},j8)},saveTemplateDraft:async(O8,T8,{id:q8,content:j8,clientId:C},u)=>{let E=q8?.[0],b=f(E);return r.factory(!b,n.notFound,`No child store with code: ${E}`,"STORE_NOT_FOUND"),b.saveTemplateDraft(O8,T8,{id:q8,content:j8,clientId:C},u)},readTemplateDraft:async(O8,T8,{id:q8})=>{let j8=q8?.[0],C=f(j8);if(!C)return null;return C.readTemplateDraft(O8,T8,{id:q8})},publishTemplate:async(O8,T8,{id:q8},j8)=>{let C=q8?.[0],u=f(C);return r.factory(!u,n.notFound,`No child store with code: ${C}`,"STORE_NOT_FOUND"),u.publishTemplate(O8,T8,{id:q8},j8)},discardTemplateDraft:async(O8,T8,{id:q8},j8)=>{let C=q8?.[0],u=f(C);return r.factory(!u,n.notFound,`No child store with code: ${C}`,"STORE_NOT_FOUND"),u.discardTemplateDraft(O8,T8,{id:q8},j8)},readTemplateVersion:async(O8,T8,{id:q8,versionNumber:j8})=>{let C=q8?.[0],u=f(C);if(!u)return null;return u.readTemplateVersion(O8,T8,{id:q8,versionNumber:j8})},getTemplateVersions:async(O8,T8,{id:q8})=>{let j8=q8?.[0],C=f(j8);if(!C)return[];return C.getTemplateVersions(O8,T8,{id:q8})},findTemplateByName:async(O8,T8,q8,j8)=>{let C=q8?.[0],u=f(C);if(!u)return null;return u.findTemplateByName(O8,T8,q8,j8)},listTemplates:async(O8,T8,{parentId:q8,storeCode:j8})=>{let C,u;if(q8)C=q8[0],u=q8;else{r.factory(!j8,n.validation,"storeCode required when parentId is null","MISSING_STORE_CODE"),C=j8;let b=f(C);r.factory(!b,n.notFound,`No child store with code: ${C}`,"STORE_NOT_FOUND");try{u=(await b.readRootFolderForType(O8,T8,"t",C)).getObjectId()}catch(m){u=null}}let E=f(C);return r.factory(!E,n.notFound,`No child store with code: ${C}`,"STORE_NOT_FOUND"),E.listTemplates(O8,T8,{parentId:u})},subscribe:(O8,T8)=>{let q8=J.map((j8)=>j8.subscribe(O8,T8));return()=>q8.forEach((j8)=>j8())},subscribeAll:(O8)=>{let T8=J.map((q8)=>q8.subscribeAll(O8));return()=>T8.forEach((q8)=>q8())}}),P6=Object.freeze({...H,addChild:v});return{store:s8,mutationApi:P6}},cJ8=Object.freeze({create:MH6});var Cw=($)=>{if(!$||$.length<2||$[0]!=="S")return null;let K=parseInt($.slice(1),10);return isNaN(K)?null:K},Gx=($)=>$.object_id,vx=($)=>{let K=Gx($),q=$.id,{store:Y,mutationApi:z}=pJ8.create({id:K,code:$.code,name:$.name,createdAt:$.created_at,updatedAt:$.updated_at,pk:q});return{store:Y,mutationApi:z,id:K,pk:q}},BJ8=($,K)=>{let q=Gx($),Y=$.id,{store:z,mutationApi:J}=cJ8.create({id:q,name:$.name,createdAt:$.created_at,updatedAt:$.updated_at,children:K});return{store:z,mutationApi:J,id:q,pk:Y}},NH6=async($,K,q,Y,z)=>{let J=await $Y.readEntityTypeId($,K,"n",null),P=await v9.nextSeq($,"store",q,"n"),W=`${Y}n${P}`,H=M1();await $.insertInto("field_definitions").values({store_id:q,object_id:W,entity_type_id:J,type_code:"n",seq:P,owner_entity_id:null,name:"default",label:"Default Field",description:"Auto-created for ad-hoc fields without explicit definitions",primitive_type:"string",required:0,multiplicity:"single",config:null,is_system:1,ordinal:null,created_at:H,updated_at:H}).execute()},hH6=()=>{let $=new Map,K=new Map,q=async(O,X,{code:w,name:T},G)=>{let v=M1(),f=await v9.nextSeq(O,"global",null,"s"),V=`S${f}`,h=await O.insertInto("stores").values({id:f,object_id:V,type:"local",code:w,name:T,created_at:v,updated_at:v}).returningAll().executeTakeFirstOrThrow(),{store:A,mutationApi:N,id:S,pk:I}=vx(h);return await NH6(O,X,I,w,G),G(()=>{$.set(S,T6.create(A,N,I)),K.set(I,S)}),A},Y=async(O,X,{name:w},T)=>{let G=M1(),v=await v9.nextSeq(O,"global",null,"s"),f=`S${v}`,V=await O.insertInto("stores").values({id:v,object_id:f,type:"demux",code:null,name:w,created_at:G,updated_at:G}).returningAll().executeTakeFirstOrThrow(),{store:h,mutationApi:A,id:N,pk:S}=BJ8(V,[]);return T(()=>{$.set(N,T6.create(h,A,S)),K.set(S,N)}),h},z=async(O,X,w)=>{let T=$.get(w);if(T)return T.getEntity();let G=Cw(w);if(G===null)return null;let v=await O.selectFrom("stores").selectAll().where("id","=",G).executeTakeFirst();if(!v)return null;let f,V,h,A;if(v.type==="local"){let N=vx(v);f=N.store,V=N.mutationApi,h=N.id,A=N.pk}else{let N=await O.selectFrom("store_children").innerJoin("stores","stores.id","store_children.child_store_id").select(["stores.object_id"]).where("store_children.parent_store_id","=",v.id).execute(),S=[];for(let D of N){let B=await z(O,X,D.object_id);if(B)S.push(B)}let I=BJ8(v,S);f=I.store,V=I.mutationApi,h=I.id,A=I.pk}return $.set(h,T6.create(f,V,A)),K.set(A,h),f};return Object.freeze({createLocalStore:q,createDemuxStore:Y,readStore:z,readSharedStore:async(O,X)=>{let w=await O.selectFrom("stores").selectAll().where("code","=","B").executeTakeFirstOrThrow(),T=Gx(w),G=$.get(T);if(G)return G.getEntity();let{store:v,mutationApi:f,pk:V}=vx(w);return $.set(T,T6.create(v,f,V)),K.set(V,T),v},readRootStoreForProject:async(O,X,w)=>{let T=w&&w.length>=2&&w[0]==="P"?parseInt(w.slice(1),10):null;r.factory(T===null||isNaN(T),n.validation,`Invalid project ID: ${w}`,"INVALID_PROJECT_ID");let G=await O.selectFrom("project_stores").innerJoin("stores","stores.id","project_stores.store_id").select(["stores.object_id"]).where("project_stores.project_id","=",T).where("project_stores.is_root","=",1).executeTakeFirst();return r.factory(!G,n.notFound,`Root store not found for project: ${w}`,"ROOT_STORE_NOT_FOUND"),await z(O,X,G.object_id)},addChildToDemux:async(O,X,{demuxId:w,childId:T},G)=>{let v=$.get(w),f=$.get(T),V,h;if(v)V=v.getPk();else{let A=Cw(w);r.factory(A===null,n.validation,`Invalid demux store ID: ${w}`,"INVALID_ID");let N=await O.selectFrom("stores").select("id").where("id","=",A).executeTakeFirst();r.factory(!N,n.notFound,`Demux store not found: ${w}`,"STORE_NOT_FOUND"),V=N.id}if(f)h=f.getPk();else{let A=Cw(T);r.factory(A===null,n.validation,`Invalid child store ID: ${T}`,"INVALID_ID");let N=await O.selectFrom("stores").select("id").where("id","=",A).executeTakeFirst();r.factory(!N,n.notFound,`Child store not found: ${T}`,"STORE_NOT_FOUND"),h=N.id}await O.insertInto("store_children").values({parent_store_id:V,child_store_id:h}).execute(),G(()=>{let A=$.get(w),N=$.get(T);if(A&&N)A.getMutationApi().addChild(N.getEntity())})},addStoresToProject:async(O,X,{projectId:w,rootStoreId:T,storeIds:G})=>{let v=w&&w.length>=2&&w[0]==="P"?parseInt(w.slice(1),10):null;r.factory(v===null||isNaN(v),n.validation,`Invalid project ID: ${w}`,"INVALID_PROJECT_ID");let f=await O.selectFrom("projects").select("id").where("id","=",v).executeTakeFirst();r.factory(!f,n.notFound,`Project not found: ${w}`,"PROJECT_NOT_FOUND");let V=f.id,h=$.get(T),A;if(h)A=h.getPk();else{let N=Cw(T);r.factory(N===null,n.validation,`Invalid root store ID: ${T}`,"INVALID_ID");let S=await O.selectFrom("stores").select("id").where("id","=",N).executeTakeFirst();r.factory(!S,n.notFound,`Root store not found: ${T}`,"STORE_NOT_FOUND"),A=S.id}for(let N of G){let S=$.get(N),I;if(S)I=S.getPk();else{let D=Cw(N);r.factory(D===null,n.validation,`Invalid store ID: ${N}`,"INVALID_ID");let B=await O.selectFrom("stores").select("id").where("id","=",D).executeTakeFirst();r.factory(!B,n.notFound,`Store not found: ${N}`,"STORE_NOT_FOUND"),I=B.id}await O.insertInto("project_stores").values({project_id:V,store_id:I,is_root:I===A?1:0}).execute()}},evictStore:(O)=>{let X=$.get(O);if(X)K.delete(X.getPk());$.delete(O)}})},UJ8=Object.freeze({create:hH6});var CH6=({store:$})=>{let K=async(Z,O,X,w,T,G)=>{let v=X.split("/").filter((h)=>h.trim());r.factory(v.length===0,n.validation,"Path cannot be empty or contain only slashes","EMPTY_PATH");let f=await $.readRootFolderForType(Z,O,w,T);for(let h=0;h<v.length-1;h++){let A=fK.validateFolderName(v[h]),N=await $.findFolderByName(Z,O,f.getObjectId(),A);if(N)f=N;else f=await $.createFolder(Z,O,{storeCode:T,parentId:f.getObjectId(),name:A},G)}let V=fK.validateFolderName(v[v.length-1]);return{parentObjectId:f.getObjectId(),name:V}},q=async(Z,O,{store:X,path:w,type:T},G)=>{r.factory(!w||w==="/",n.validation,"Path cannot be empty","EMPTY_PATH"),r.factory(T!=="d"&&T!=="t",n.validation,'Type must be "d" or "t"',"INVALID_TYPE"),r.factory(!X,n.validation,"store is required","MISSING_STORE_CODE");let{parentObjectId:v,name:f}=await K(Z,O,w,T,X,G),V=await $.isDuplicateNameInParent(Z,O,v,f);return r.factory(V,n.conflict,`Folder "${f}" already exists in parent`,"DUPLICATE_NAME"),await $.createFolder(Z,O,{storeCode:X,parentId:v,name:f},G)},Y=async(Z,O,{id:X})=>{return await $.readFolder(Z,O,{id:X})};return Object.freeze({resolvePath:K,createFolder:q,readFolder:Y,renameFolder:async(Z,O,{id:X,name:w},T)=>{let G=await Y(Z,O,{id:X});r.factory(!G,n.notFound,`Folder not found: ${X}`,"FOLDER_NOT_FOUND"),r.factory(fK.isRootFolder(G),n.validation,"Cannot rename root folder","CANNOT_RENAME_ROOT");let v=fK.validateFolderName(w),f=await $.isDuplicateNameInParent(Z,O,G.getParentId(),v,X);return r.factory(f,n.conflict,`Folder "${v}" already exists in parent`,"DUPLICATE_NAME"),await $.updateFolder(Z,O,{id:X,name:v},T)},moveFolder:async(Z,O,{id:X,parentId:w},T)=>{let G=await Y(Z,O,{id:X});r.factory(!G,n.notFound,`Folder not found: ${X}`,"FOLDER_NOT_FOUND"),r.factory(fK.isRootFolder(G),n.validation,"Cannot move root folder","CANNOT_MOVE_ROOT");let v=await Y(Z,O,{id:w});r.factory(!v,n.notFound,`Parent folder not found: ${w}`,"PARENT_NOT_FOUND"),r.factory(!X||X.length<1,n.validation,"Invalid folder ID format","INVALID_ID_FORMAT"),r.factory(!w||w.length<1,n.validation,"Invalid parent ID format","INVALID_PARENT_ID_FORMAT");let f=X[0],V=w[0];r.factory(f!==V,n.validation,"Cannot move folders between stores","CROSS_STORE_MOVE"),r.factory(X===w,n.validation,"Cannot move folder into itself","SELF_MOVE");let h=w;while(h!==null){r.factory(h===X,n.validation,"Cannot move folder into its own descendant","CYCLE_DETECTED");let N=await $.readFolder(Z,O,{id:h});if(!N)break;h=N.getParentId()}let A=await $.isDuplicateNameInParent(Z,O,w,G.getName(),X);return r.factory(A,n.conflict,`Folder "${G.getName()}" already exists in target parent`,"DUPLICATE_NAME"),await $.updateFolder(Z,O,{id:X,parentId:w},T)},deleteFolder:async(Z,O,{id:X},w)=>{let T=await Y(Z,O,{id:X});return r.factory(!T,n.notFound,`Folder not found: ${X}`,"FOLDER_NOT_FOUND"),r.factory(fK.isRootFolder(T),n.validation,"Cannot delete root folder","CANNOT_DELETE_ROOT"),await $.deleteFolder(Z,O,{id:X},w)},getFolderByPath:async(Z,O,{path:X,type:w,storeCode:T})=>{return await $.getFolderByPath(Z,O,{path:X,type:w,storeCode:T})},listFolderContents:async(Z,O,{folderId:X,type:w,storeCode:T})=>{return await $.listFolderContents(Z,O,{folderId:X,type:w,storeCode:T})}})},lJ8=Object.freeze({create:CH6});var RH6=({store:$})=>{let K=async(W,H,{store:Z,ownerEntityId:O,name:X,label:w,description:T,primitiveType:G,required:v,multiplicity:f,isSystem:V=!1},h)=>{r.factory(!Z,n.validation,"store is required","MISSING_STORE_CODE"),r.factory(G!=="string"&&G!=="object_ref",n.validation,`Invalid primitiveType: ${G}. Must be 'string' or 'object_ref'`,"INVALID_PRIMITIVE_TYPE"),r.factory(f!=="single"&&f!=="multi",n.validation,`Invalid multiplicity: ${f}. Must be 'single' or 'multi'`,"INVALID_MULTIPLICITY");let A=/^[a-zA-Z0-9_]+$/;return r.factory(!X||!A.test(X),n.validation,`Invalid name: ${X}. Must contain only alphanumeric characters and underscores`,"INVALID_NAME"),await $.createFieldDefinition(W,H,{storeCode:Z,ownerEntityId:O,name:X,label:w,description:T,primitiveType:G,required:v,multiplicity:f,isSystem:V},h)},q=async(W,H,{id:Z})=>{return r.factory(!Z||Z.length<3,n.validation,"Invalid field definition ID","INVALID_ID"),await $.readFieldDefinition(W,H,{id:Z})};return Object.freeze({createFieldDefinition:K,readFieldDefinition:q,getFieldDefinitionsForOwner:async(W,H,{store:Z,ownerEntityId:O,includeSystem:X=!0})=>{r.factory(!Z,n.validation,"store is required","MISSING_STORE_CODE");let w=null;if(O)w=null;return await $.getFieldDefinitionsForOwner(W,H,{storeCode:Z,ownerEntityPk:w,includeSystem:X})},deleteFieldDefinition:async(W,H,{id:Z},O)=>{let X=await q(W,H,{id:Z});return r.factory(!X,n.notFound,`Field definition not found: ${Z}`,"DEFINITION_NOT_FOUND"),r.factory(X.getIsSystem(),n.validation,`Cannot delete system field definition: ${Z}`,"SYSTEM_DEFINITION"),await $.deleteFieldDefinition(W,H,{id:Z},O)},setFieldValue:async(W,H,{entityId:Z,fieldDefinitionId:O,fieldName:X,value:w,values:T},G)=>{return r.factory(!Z,n.validation,"entityId is required","MISSING_ENTITY_ID"),r.factory(!O&&!X,n.validation,"Either fieldDefinitionId or fieldName must be provided","MISSING_FIELD_IDENTIFIER"),r.factory(w!==void 0&&T!==void 0,n.validation,"Cannot provide both value and values","AMBIGUOUS_VALUE"),r.factory(w===void 0&&T===void 0,n.validation,"Either value or values must be provided","MISSING_VALUE"),await $.setFieldValue(W,H,{entityId:Z,fieldDefinitionId:O,fieldName:X,value:w,values:T},G)},deleteFieldValue:async(W,H,{entityId:Z,fieldDefinitionId:O,fieldName:X},w)=>{return r.factory(!Z,n.validation,"entityId is required","MISSING_ENTITY_ID"),r.factory(!O&&!X,n.validation,"Either fieldDefinitionId or fieldName must be provided","MISSING_FIELD_IDENTIFIER"),await $.deleteFieldValue(W,H,{entityId:Z,fieldDefinitionId:O,fieldName:X},w)}})},FJ8=Object.freeze({create:RH6});var DH6=({store:$,folderService:K,entityName:q})=>{let Y=async(V,h,{store:A,path:N,type:S,content:I},D)=>{r.factory(!N||N==="/",n.validation,"Path cannot be empty","EMPTY_PATH"),r.factory(!A,n.validation,"store is required","MISSING_STORE_CODE");let B=N.split("/").filter((K8)=>K8.trim()),g=B[B.length-1],R=B.slice(0,-1).join("/")||null,y;if(R){let K8=await K.resolvePath(V,h,R,S,A,D),R8=await $.findFolderByName(V,h,K8.parentObjectId,K8.name);if(R8)y=R8.getObjectId();else y=(await $.createFolder(V,h,{storeCode:A,parentId:K8.parentObjectId,name:K8.name},D)).getObjectId()}else y=(await $.readRootFolderForType(V,h,S,A)).getObjectId();let t=await $.findDocumentByName(V,h,y,g);return r.factory(t,n.conflict,`${q} "${g}" already exists in folder`,"DUPLICATE_NAME"),await $.createDocument(V,h,{storeCode:A,parentId:y,name:g,initialContent:I},D)},z=async(V,h,{id:A})=>{let N=await $.readDocument(V,h,{id:A});return r.factory(!N,n.notFound,`${q} not found: ${A}`,"NOT_FOUND"),N};return Object.freeze({create:Y,read:z,readByPath:async(V,h,{path:A,type:N,storeCode:S})=>{let I=A.split("/").filter((R)=>R.trim()),D=I[I.length-1],B=I.slice(0,-1).join("/")||null,g;if(B){let R=await $.getFolderByPath(V,h,{path:B,type:N,storeCode:S});if(!R)return null;g=R.getObjectId()}else g=(await $.readRootFolderForType(V,h,N,S)).getObjectId();return await $.findDocumentByName(V,h,g,D)},updatePath:async(V,h,{id:A,path:N,type:S},I)=>{r.factory(!N||N==="/",n.validation,"Path cannot be empty","EMPTY_PATH");let D=await z(V,h,{id:A}),B=N.split("/").filter((I8)=>I8.trim()),g=B[B.length-1],R=B.slice(0,-1).join("/")||null,y=A[0],t;if(R){let I8=await K.resolvePath(V,h,R,S,y,I),E8=await $.findFolderByName(V,h,I8.parentObjectId,I8.name);if(E8)t=E8.getObjectId();else t=(await $.createFolder(V,h,{storeCode:y,parentId:I8.parentObjectId,name:I8.name},I)).getObjectId()}else t=(await $.readRootFolderForType(V,h,S,y)).getObjectId();let K8=g!==D.getName(),R8=t!==D.getParentId();if(!K8&&!R8)return D;if(K8||R8){let I8=await $.findDocumentByName(V,h,t,g);r.factory(I8&&I8.getObjectId()!==A,n.conflict,`${q} "${g}" already exists in target folder`,"DUPLICATE_NAME")}return await $.updateDocument(V,h,{id:A,name:K8?g:void 0,parentId:R8?t:void 0},I)},del:async(V,h,{id:A},N)=>{return await z(V,h,{id:A}),await $.deleteDocument(V,h,{id:A},N)},saveDraft:async(V,h,{id:A,content:N,clientId:S},I)=>{return await z(V,h,{id:A}),await $.saveDraft(V,h,{id:A,content:N,clientId:S},I)},readDraft:async(V,h,{id:A})=>{await z(V,h,{id:A});let N=await $.readDraft(V,h,{id:A});return r.factory(!N,n.notFound,`No draft found for ${q}: ${A}`,"DRAFT_NOT_FOUND"),N},publish:async(V,h,{id:A},N)=>{return await z(V,h,{id:A}),await $.publishDocument(V,h,{id:A},N)},discardDraft:async(V,h,{id:A},N)=>{return await z(V,h,{id:A}),await $.discardDraft(V,h,{id:A},N)},readVersion:async(V,h,{id:A,versionNumber:N})=>{await z(V,h,{id:A});let S=await $.readVersion(V,h,{id:A,versionNumber:N});return r.factory(!S,n.notFound,`Version ${N} not found for ${q}: ${A}`,"VERSION_NOT_FOUND"),S},getVersions:async(V,h,{id:A})=>{return await z(V,h,{id:A}),await $.getVersions(V,h,{id:A})},setEditState:async(V,h,{id:A,clientId:N},S)=>{return await z(V,h,{id:A}),await $.setEditState(V,h,{id:A,clientId:N},S)},clearEditState:async(V,h,{id:A},N)=>{return await z(V,h,{id:A}),await $.clearEditState(V,h,{id:A},N)},getEditState:async(V,h,{id:A})=>{return await z(V,h,{id:A}),await $.getEditState(V,h,{id:A})}})},Vf=Object.freeze({create:DH6});var SH6=({store:$,folderService:K})=>{let q=Vf.create({store:$,folderService:K,entityName:"Document"}),Y="d";return Object.freeze({createDocument:async(A,N,{store:S,path:I,type:D,content:B},g)=>{return r.factory(D!=="d",n.validation,'type must be "d" for documents',"INVALID_TYPE"),await q.create(A,N,{store:S,path:I,type:D,content:B},g)},readDocument:async(A,N,{id:S})=>{return await q.read(A,N,{id:S})},readDocumentByPath:async(A,N,{path:S,type:I,storeCode:D})=>{return r.factory(I!=="d",n.validation,'type must be "d" for documents',"INVALID_TYPE"),await q.readByPath(A,N,{path:S,type:I,storeCode:D})},updateDocumentPath:async(A,N,{id:S,path:I,type:D},B)=>{return r.factory(D!=="d",n.validation,'type must be "d" for documents',"INVALID_TYPE"),await q.updatePath(A,N,{id:S,path:I,type:D},B)},deleteDocument:async(A,N,{id:S},I)=>{return await q.del(A,N,{id:S},I)},saveDraft:async(A,N,{id:S,content:I,clientId:D},B)=>{return await q.saveDraft(A,N,{id:S,content:I,clientId:D},B)},readDraft:async(A,N,{id:S})=>{return await q.readDraft(A,N,{id:S})},publishDocument:async(A,N,{id:S},I)=>{return await q.publish(A,N,{id:S},I)},discardDraft:async(A,N,{id:S},I)=>{return await q.discardDraft(A,N,{id:S},I)},readVersion:async(A,N,{id:S,versionNumber:I})=>{return await q.readVersion(A,N,{id:S,versionNumber:I})},getVersions:async(A,N,{id:S})=>{return await q.getVersions(A,N,{id:S})},setEditState:async(A,N,{id:S,clientId:I},D)=>{return await q.setEditState(A,N,{id:S,clientId:I},D)},clearEditState:async(A,N,{id:S},I)=>{return await q.clearEditState(A,N,{id:S},I)},getEditState:async(A,N,{id:S})=>{return await q.getEditState(A,N,{id:S})},listDocuments:async(A,N,{parentId:S,storeCode:I})=>{return await $.listDocuments(A,N,{parentId:S,storeCode:I})}})},iJ8=Object.freeze({create:SH6});var jO8=H1(HH8(),1),vO8=H1(Rb(),1),GO8=($)=>{if(!$)return{parameters:{},target:null,targetPath:null,body:""};let K=jO8.default($),q=K.data?.parameters||{},Y=K.data?.target||null,z=K.data?.targetPath||null,J=K.content;return{parameters:q,target:Y,targetPath:z,body:J}},j_6=($)=>{if(!$)return new Set;let K=new Set;try{let q=vO8.default.parse($),Y=(z)=>{if(!z)return;if(z.type==="PathExpression"){if(!z.data&&z.parts.length>0){let J=z.parts.join(".");if(!J.startsWith("@"))K.add(J)}}if(z.program)Y(z.program);if(z.inverse)Y(z.inverse);if(z.body)z.body.forEach(Y);if(z.params)z.params.forEach(Y);if(z.hash?.pairs)z.hash.pairs.forEach((J)=>Y(J.value));if(z.path)Y(z.path)};Y(q)}catch(q){throw new Error(`Invalid Handlebars template: ${q.message}`)}return K},v_6=($)=>{if(!$)return{parameters:{},target:null,targetPath:null};let{parameters:K,target:q,targetPath:Y}=GO8($);return{parameters:K,target:q,targetPath:Y}},v5=Object.freeze({parseFrontMatter:GO8,extractVariables:j_6,getParameters:v_6});var Db=H1(Rb(),1);import G_6 from"crypto";var __6=({store:$,folderService:K})=>{let Y=((I)=>{return Object.freeze({findDocumentByName:(...D)=>I.findTemplateByName(...D),createDocument:(...D)=>I.createTemplate(...D),readDocument:(...D)=>I.readTemplate(...D),updateDocument:(...D)=>I.updateTemplate(...D),deleteDocument:(...D)=>I.deleteTemplate(...D),saveDraft:(...D)=>I.saveTemplateDraft(...D),readDraft:(...D)=>I.readTemplateDraft(...D),publishDocument:(...D)=>I.publishTemplate(...D),discardDraft:(...D)=>I.discardTemplateDraft(...D),readVersion:(...D)=>I.readTemplateVersion(...D),getVersions:(...D)=>I.getTemplateVersions(...D),findFolderByName:(...D)=>I.findFolderByName(...D),createFolder:(...D)=>I.createFolder(...D),readRootFolderForType:(...D)=>I.readRootFolderForType(...D),getFolderByPath:(...D)=>I.getFolderByPath(...D),setEditState:(...D)=>I.setEditState(...D),clearEditState:(...D)=>I.clearEditState(...D),getEditState:(...D)=>I.getEditState(...D)})})($),z=Vf.create({store:Y,folderService:K,entityName:"Template"}),J="t",P=async(I,D,{store:B,path:g,type:R,content:y},t)=>{return r.factory(R!=="t",n.validation,'type must be "t" for templates',"INVALID_TYPE"),await z.create(I,D,{store:B,path:g,type:R,content:y},t)},W=async(I,D,{id:B})=>{return await z.read(I,D,{id:B})};return Object.freeze({createTemplate:P,readTemplate:W,readTemplateByPath:async(I,D,{path:B,type:g,storeCode:R})=>{return r.factory(g!=="t",n.validation,'type must be "t" for templates',"INVALID_TYPE"),await z.readByPath(I,D,{path:B,type:g,storeCode:R})},updateTemplatePath:async(I,D,{id:B,path:g,type:R},y)=>{return r.factory(R!=="t",n.validation,'type must be "t" for templates',"INVALID_TYPE"),await z.updatePath(I,D,{id:B,path:g,type:R},y)},deleteTemplate:async(I,D,{id:B},g)=>{return await z.del(I,D,{id:B},g)},saveDraft:async(I,D,{id:B,content:g,clientId:R},y)=>{return await z.saveDraft(I,D,{id:B,content:g,clientId:R},y)},readDraft:async(I,D,{id:B})=>{return await z.readDraft(I,D,{id:B})},publishTemplate:async(I,D,{id:B},g)=>{return await z.publish(I,D,{id:B},g)},discardDraft:async(I,D,{id:B},g)=>{return await z.discardDraft(I,D,{id:B},g)},readVersion:async(I,D,{id:B,versionNumber:g})=>{return await z.readVersion(I,D,{id:B,versionNumber:g})},getVersions:async(I,D,{id:B})=>{return await z.getVersions(I,D,{id:B})},setEditState:async(I,D,{id:B,clientId:g},R)=>{return await z.setEditState(I,D,{id:B,clientId:g},R)},clearEditState:async(I,D,{id:B},g)=>{return await z.clearEditState(I,D,{id:B},g)},getEditState:async(I,D,{id:B})=>{return await z.getEditState(I,D,{id:B})},renderTemplate:async(I,D,{id:B,params:g={},target:R="stdout",targetOptions:y={}},t,K8,R8)=>{let I8=await W(I,D,{id:B});r.factory(!I8,n.notFound,"Template not found","NOT_FOUND");let E8=I8.getPublishedContent();r.factory(!E8,n.validation,"Template has no published content","NO_PUBLISHED_CONTENT");let{body:t8}=v5.parseFrontMatter(E8),g8;try{g8=Db.default.compile(t8,{noEscape:!0})(g)}catch(m8){throw n.validation(`Failed to render template: ${m8.message}`,"RENDER_ERROR")}switch(R){case"stdout":return{success:!0,target:"stdout",content:g8};case"clipboard":return await K8.copyToClipboard(g8),{success:!0,target:"clipboard",content:g8,message:"Content copied to clipboard"};case"document":{let{path:m8,publish:V6,storeCode:C3="A"}=y;r.factory(!m8,n.validation,"targetOptions.path is required for document target","MISSING_PATH");let P3=G_6.randomUUID(),E4=await R8.readDocumentByPath(I,D,{path:m8,type:"d",storeCode:C3}),a3=!1;if(!E4)E4=await R8.createDocument(I,D,{store:C3,path:m8,type:"d",content:g8},t),a3=!0;else await R8.saveDraft(I,D,{id:E4.getObjectId(),content:g8,clientId:P3},t);let $1=!1;if(V6)await R8.publishDocument(I,D,{id:E4.getObjectId()},t),$1=!0;return{success:!0,target:"document",documentId:E4.getObjectId(),created:a3,published:$1,path:m8}}case"file":throw n.validation("File target not yet implemented","NOT_IMPLEMENTED");default:throw n.validation(`Unknown target: ${R}`,"INVALID_TARGET")}},listTemplates:async(I,D,{parentId:B,storeCode:g})=>{return await $.listTemplates(I,D,{parentId:B,storeCode:g})}})},_O8=Object.freeze({create:__6});import iw from"node:fs";import fO8 from"node:os";import Qf from"node:path";var f_6=({projectStore:$,storeStore:K})=>{return Object.freeze({createProject:async(J,P,{name:W,path:H},Z)=>{if(await $.readProjectByPath(J,P,H)){let v=new Error("Project with this path already exists");throw v.code="DUPLICATE_PATH",v}let X=await $.createProject(J,P,{name:W,path:H},Z),w=await K.createLocalStore(J,P,{code:"A",name:"Project"},Z);await w.createFolder(J,P,{parentId:null,name:null,subtype:"root_d"},Z),await w.createFolder(J,P,{parentId:null,name:null,subtype:"root_t"},Z);let T=await K.readSharedStore(J,P),G=await K.createDemuxStore(J,P,{name:W},Z);return await K.addChildToDemux(J,P,{demuxId:G.getObjectId(),childId:w.getObjectId()},Z),await K.addChildToDemux(J,P,{demuxId:G.getObjectId(),childId:T.getObjectId()},Z),await K.addStoresToProject(J,P,{projectId:X.getObjectId(),rootStoreId:G.getObjectId(),storeIds:[G.getObjectId(),w.getObjectId(),T.getObjectId()]}),X},validateProjectPath:(J)=>{if(!J||typeof J!=="string"){let w=new Error("Path is required and must be a non-empty string");throw w.code="VALIDATION_ERROR",w}let P;if(J==="~")P=fO8.homedir();else if(J.startsWith("~/"))P=Qf.join(fO8.homedir(),J.slice(2));else P=J;let W=iw.existsSync(P),H=!1,Z=!1,O=!1;if(W)try{if(H=iw.statSync(P).isDirectory(),H){let T=Qf.join(P,".git");try{Z=iw.statSync(T).isDirectory()}catch{Z=!1}let G=Qf.join(P,".claude");try{O=iw.statSync(G).isDirectory()}catch{O=!1}}}catch(w){H=!1}let X=Qf.basename(P);return{path:P,exists:W,isDirectory:H,hasGit:Z,hasClaude:O,suggestedName:X}},listProjects:async(J)=>{let P=await J.selectFrom("projects").selectAll().where("name","!=","__system__").orderBy("created_at","desc").execute();return await Promise.all(P.map(async(H)=>{let O=(await J.selectFrom("project_stores").innerJoin("stores","stores.id","project_stores.store_id").select(["stores.object_id","stores.code","stores.name","stores.type"]).where("project_stores.project_id","=",H.id).where("stores.type","=","local").execute()).map((X)=>({id:X.code==="B"?"store:B":`store:${X.code}:${H.object_id}`,code:X.code,name:X.name}));return{objectId:H.object_id,name:H.name,path:H.path,createdAt:H.created_at,updatedAt:H.updated_at,children:O}}))}})},df=Object.freeze({create:f_6});var V_6=()=>{let $=[];return{enqueuePostCommitHook:(K)=>{$.push(K)},flush:()=>{for(let K of $)try{K()}catch(q){console.error("Post-commit hook failed:",q)}}}},A_6=({db:$,folderService:K,fieldService:q,documentService:Y,templateService:z,projectService:J})=>{let P=async(V8)=>{let A8=V_6(),x8;return await $.transaction().execute(async(u8)=>{x8=await V8(u8,A8)}),A8.flush(),x8};return Object.freeze({createFolder:async(V8,{store:A8,path:x8,type:u8})=>{return P(async(J6,n6)=>{return await K.createFolder(J6,V8,{store:A8,path:x8,type:u8},n6.enqueuePostCommitHook)})},renameFolder:async(V8,{id:A8,name:x8})=>{return P(async(u8,J6)=>{return await K.renameFolder(u8,V8,{id:A8,name:x8},J6.enqueuePostCommitHook)})},moveFolder:async(V8,{id:A8,parentId:x8})=>{return P(async(u8,J6)=>{return await K.moveFolder(u8,V8,{id:A8,parentId:x8},J6.enqueuePostCommitHook)})},deleteFolder:async(V8,{id:A8})=>{return P(async(x8,u8)=>{return await K.deleteFolder(x8,V8,{id:A8},u8.enqueuePostCommitHook)})},createProject:async(V8,{name:A8,path:x8})=>{return P(async(u8,J6)=>{return await J.createProject(u8,V8,{name:A8,path:x8},J6.enqueuePostCommitHook)})},createFieldDefinition:async(V8,{store:A8,ownerEntityId:x8,name:u8,label:J6,description:n6,primitiveType:N4,required:D3,multiplicity:d4,isSystem:Z8})=>{return P(async(X8,U)=>{return await q.createFieldDefinition(X8,V8,{store:A8,ownerEntityId:x8,name:u8,label:J6,description:n6,primitiveType:N4,required:D3,multiplicity:d4,isSystem:Z8},U.enqueuePostCommitHook)})},readFieldDefinition:async(V8,{id:A8})=>{return await q.readFieldDefinition($,V8,{id:A8})},getFieldDefinitionsForOwner:async(V8,{store:A8,ownerEntityId:x8,includeSystem:u8})=>{return await q.getFieldDefinitionsForOwner($,V8,{store:A8,ownerEntityId:x8,includeSystem:u8})},setFieldValue:async(V8,{entityId:A8,fieldDefinitionId:x8,fieldName:u8,value:J6,values:n6})=>{return P(async(N4,D3)=>{return await q.setFieldValue(N4,V8,{entityId:A8,fieldDefinitionId:x8,fieldName:u8,value:J6,values:n6},D3.enqueuePostCommitHook)})},deleteFieldValue:async(V8,{entityId:A8,fieldDefinitionId:x8,fieldName:u8})=>{return P(async(J6,n6)=>{return await q.deleteFieldValue(J6,V8,{entityId:A8,fieldDefinitionId:x8,fieldName:u8},n6.enqueuePostCommitHook)})},deleteFieldDefinition:async(V8,{id:A8})=>{return P(async(x8,u8)=>{return await q.deleteFieldDefinition(x8,V8,{id:A8},u8.enqueuePostCommitHook)})},createDocument:async(V8,{store:A8,path:x8,type:u8,content:J6})=>{return P(async(n6,N4)=>{return await Y.createDocument(n6,V8,{store:A8,path:x8,type:u8,content:J6},N4.enqueuePostCommitHook)})},readDocument:async(V8,{id:A8})=>{return await Y.readDocument($,V8,{id:A8})},updateDocumentPath:async(V8,{id:A8,path:x8,type:u8})=>{return P(async(J6,n6)=>{return await Y.updateDocumentPath(J6,V8,{id:A8,path:x8,type:u8},n6.enqueuePostCommitHook)})},deleteDocument:async(V8,{id:A8})=>{return P(async(x8,u8)=>{return await Y.deleteDocument(x8,V8,{id:A8},u8.enqueuePostCommitHook)})},saveDraft:async(V8,{id:A8,content:x8,clientId:u8})=>{return P(async(J6,n6)=>{return await Y.saveDraft(J6,V8,{id:A8,content:x8,clientId:u8},n6.enqueuePostCommitHook)})},readDraft:async(V8,{id:A8})=>{return await Y.readDraft($,V8,{id:A8})},publishDocument:async(V8,{id:A8})=>{return P(async(x8,u8)=>{return await Y.publishDocument(x8,V8,{id:A8},u8.enqueuePostCommitHook)})},discardDraft:async(V8,{id:A8})=>{return P(async(x8,u8)=>{return await Y.discardDraft(x8,V8,{id:A8},u8.enqueuePostCommitHook)})},readVersion:async(V8,{id:A8,versionNumber:x8})=>{return await Y.readVersion($,V8,{id:A8,versionNumber:x8})},getVersions:async(V8,{id:A8})=>{return await Y.getVersions($,V8,{id:A8})},setEditState:async(V8,{id:A8,clientId:x8})=>{return P(async(u8,J6)=>{return await Y.setEditState(u8,V8,{id:A8,clientId:x8},J6.enqueuePostCommitHook)})},clearEditState:async(V8,{id:A8})=>{return P(async(x8,u8)=>{return await Y.clearEditState(x8,V8,{id:A8},u8.enqueuePostCommitHook)})},getEditState:async(V8,{id:A8})=>{return await Y.getEditState($,V8,{id:A8})},createTemplate:async(V8,{store:A8,path:x8,type:u8,content:J6})=>{return P(async(n6,N4)=>{return await z.createTemplate(n6,V8,{store:A8,path:x8,type:u8,content:J6},N4.enqueuePostCommitHook)})},readTemplate:async(V8,{id:A8})=>{return await z.readTemplate($,V8,{id:A8})},updateTemplatePath:async(V8,{id:A8,path:x8,type:u8})=>{return P(async(J6,n6)=>{return await z.updateTemplatePath(J6,V8,{id:A8,path:x8,type:u8},n6.enqueuePostCommitHook)})},deleteTemplate:async(V8,{id:A8})=>{return P(async(x8,u8)=>{return await z.deleteTemplate(x8,V8,{id:A8},u8.enqueuePostCommitHook)})},saveTemplateDraft:async(V8,{id:A8,content:x8,clientId:u8})=>{return P(async(J6,n6)=>{return await z.saveDraft(J6,V8,{id:A8,content:x8,clientId:u8},n6.enqueuePostCommitHook)})},publishTemplate:async(V8,{id:A8})=>{return P(async(x8,u8)=>{return await z.publishTemplate(x8,V8,{id:A8},u8.enqueuePostCommitHook)})},discardTemplateDraft:async(V8,{id:A8})=>{return P(async(x8,u8)=>{return await z.discardDraft(x8,V8,{id:A8},u8.enqueuePostCommitHook)})},readTemplateDraft:async(V8,{id:A8})=>{return await z.readDraft($,V8,{id:A8})},readTemplateVersion:async(V8,{id:A8,versionNumber:x8})=>{return await z.readVersion($,V8,{id:A8,versionNumber:x8})},getTemplateVersions:async(V8,{id:A8})=>{return await z.getVersions($,V8,{id:A8})},setTemplateEditState:async(V8,{id:A8,clientId:x8})=>{return P(async(u8,J6)=>{return await z.setEditState(u8,V8,{id:A8,clientId:x8},J6.enqueuePostCommitHook)})},clearTemplateEditState:async(V8,{id:A8})=>{return P(async(x8,u8)=>{return await z.clearEditState(x8,V8,{id:A8},u8.enqueuePostCommitHook)})},getTemplateEditState:async(V8,{id:A8})=>{return await z.getEditState($,V8,{id:A8})},renderTemplate:async(V8,{id:A8,params:x8,target:u8,targetOptions:J6},n6,N4)=>{return P(async(D3,d4)=>{return await z.renderTemplate(D3,V8,{id:A8,params:x8,target:u8,targetOptions:J6},d4.enqueuePostCommitHook,n6,N4)})}})},Sb=Object.freeze({create:A_6});var SE8=H1(CE8(),1),EE8=H1(C$(),1);import v$ from"fs/promises";import G$ from"path";import{createWriteStream as pr6}from"fs";import cr6 from"crypto";var dK=EE8.default("caw:export"),RE8=".caw-exports",DE8=".tmp",Br6=1,Ur6=({store:$,folderService:K,documentService:q,templateService:Y})=>{let z=()=>{let T=new Date,G=T.getFullYear(),v=String(T.getMonth()+1).padStart(2,"0"),f=String(T.getDate()).padStart(2,"0"),V=String(T.getHours()).padStart(2,"0"),h=String(T.getMinutes()).padStart(2,"0"),A=String(T.getSeconds()).padStart(2,"0");return`${G}-${v}-${f}-${V}${h}${A}`},J=async(T)=>{let G=G$.join(T,RE8),v=G$.join(G,DE8);try{return await v$.mkdir(G,{recursive:!0}),await v$.mkdir(v,{recursive:!0}),G}catch(f){if(f.code==="EACCES")throw n.validation("Permission denied creating export directory","EXPORT_ERROR");if(f.code==="ENOSPC")throw n.validation("Insufficient disk space","EXPORT_ERROR");throw dK("Error creating export directory: [%s] %s",f.code||"UNKNOWN",f.message),n.validation(`Failed to create export directory: ${f.message} (${f.code||"UNKNOWN"})`,"EXPORT_ERROR")}},P=async(T,G,v,f)=>{let V=[],h=async(A,N)=>{let S=await K.listFolderContents(T,G,{folderId:A,type:v,storeCode:f});for(let I of S)if(I.getParentId()!==null)V.push({entity:I,depth:N,contentType:v}),await h(I.getObjectId(),N+1)};return await h(null,0),V},W=async(T,G,v)=>{let f=[],V=[],h=async(A)=>{let N=await q.listDocuments(T,G,{parentId:A,storeCode:v});for(let I of N){let D=I.getPublishedVersionNumber();if(D!==null){let B=await q.readVersion(T,G,{id:I.getObjectId(),versionNumber:D});f.push({entity:I,version:B})}else V.push(I)}let S=await K.listFolderContents(T,G,{folderId:A,type:"d",storeCode:v});for(let I of S)await h(I.getObjectId())};return await h(null),{published:f,draftOnly:V}},H=async(T,G,v)=>{let f=[],V=[],h=async(A)=>{let N=await Y.listTemplates(T,G,{parentId:A,storeCode:v});for(let I of N){let D=I.getPublishedVersionNumber();if(D!==null){let B=await Y.readVersion(T,G,{id:I.getObjectId(),versionNumber:D});f.push({entity:I,version:B})}else V.push(I)}let S=await K.listFolderContents(T,G,{folderId:A,type:"t",storeCode:v});for(let I of S)await h(I.getObjectId())};return await h(null),{published:f,draftOnly:V}},Z=async(T)=>{try{await v$.rm(T,{recursive:!0,force:!0})}catch(G){dK("Warning: Failed to cleanup temp directory: %s",G.message)}};return Object.freeze({listExports:async(T,G,{projectPath:v})=>{let f=G$.join(v,RE8);try{let V=await v$.readdir(f),h=[];for(let A of V)if(A.endsWith(".zip")){let N=G$.join(f,A),S=await v$.stat(N);h.push({filename:A,timestamp:S.mtime.toISOString(),size:S.size})}return dK("Found %d export files",h.length),h}catch(V){if(V.code==="ENOENT")return[];throw V}},exportPreview:async(T,G,{storeCode:v})=>{let f=await P(T,G,"d",v),V=await P(T,G,"t",v),{published:h,draftOnly:A}=await W(T,G,v),{published:N,draftOnly:S}=await H(T,G,v),I={folders:[...f,...V].map((R)=>({id:R.entity.getObjectId(),path:R.entity.getPath(),name:R.entity.getName()})),documents:h.map((R)=>({id:R.entity.getObjectId(),path:R.entity.getPath(),name:R.entity.getName()})),templates:N.map((R)=>({id:R.entity.getObjectId(),path:R.entity.getPath(),name:R.entity.getName()}))},D={documents:A.map((R)=>({id:R.getObjectId(),path:R.getPath(),name:R.getName()})),templates:S.map((R)=>({id:R.getObjectId(),path:R.getPath(),name:R.getName()}))},B=I.folders.length+I.documents.length+I.templates.length,g=D.documents.length+D.templates.length;return dK("Preview: %d published, %d draft-only",B,g),{toExport:I,draftOnly:D}},exportDocuments:async(T,G,{storeCode:v,projectPath:f})=>{dK("Starting export for store %s",v);let V=await J(f),h=cr6.randomUUID(),A=G$.join(V,DE8,h);await v$.mkdir(A,{recursive:!0});try{let N=await P(T,G,"d",v),S=await P(T,G,"t",v),I=[...N,...S],{published:D,draftOnly:B}=await W(T,G,v),{published:g,draftOnly:R}=await H(T,G,v);dK("Found %d folders, %d documents, %d templates",I.length,D.length,g.length);let y=[...I.map((g8)=>({id:g8.entity.getObjectId(),type:"folder",path:g8.entity.getPath(),contentType:g8.contentType})),...D.map((g8)=>({id:g8.entity.getObjectId(),type:"document",path:g8.entity.getPath()})),...g.map((g8)=>({id:g8.entity.getObjectId(),type:"template",path:g8.entity.getPath()}))],t={version:Br6,exportedAt:new Date().toISOString(),entities:y};await v$.writeFile(G$.join(A,"manifest.json"),JSON.stringify(t,null,2),"utf-8");for(let g8 of I){let m8=g8.contentType==="d"?"documents":"templates",V6=G$.join(A,m8,g8.entity.getPath());await v$.mkdir(V6,{recursive:!0})}await v$.mkdir(G$.join(A,"documents"),{recursive:!0}),await v$.mkdir(G$.join(A,"templates"),{recursive:!0});for(let g8 of D){let m8=G$.join(A,"documents",g8.entity.getPath()),V6=g8.version.content;await v$.mkdir(G$.dirname(m8),{recursive:!0}),await v$.writeFile(m8,V6,"utf-8")}for(let g8 of g){let m8=G$.join(A,"templates",g8.entity.getPath()),V6=g8.version.content;await v$.mkdir(G$.dirname(m8),{recursive:!0}),await v$.writeFile(m8,V6,"utf-8")}for(let g8 of y)if(g8.type!=="folder"){let m8=g8.type==="document"?"documents":"templates",V6=G$.join(A,m8,g8.path);try{await v$.access(V6)}catch(C3){throw n.validation(`Manifest entry missing file: ${g8.path}`,"EXPORT_VALIDATION_FAILED")}}let K8=`caw-export-${z()}.zip`,R8=G$.join(V,K8),I8=pr6(R8),E8=SE8.default("zip",{zlib:{level:9}});E8.on("error",async(g8)=>{throw await Z(A),dK("Zip creation error: %s",g8.message),n.validation(`Export failed: ${g8.message}`,"EXPORT_ERROR")}),E8.pipe(I8),E8.directory(A,!1),await E8.finalize(),await new Promise((g8,m8)=>{I8.on("close",g8),I8.on("error",m8),setTimeout(()=>{m8(new Error("Zip creation timeout"))},60000)}),dK("Created zip: %s (%d bytes)",K8,E8.pointer()),await Z(A);let t8=y.length;return dK("Export complete: %s (%d entities)",K8,t8),{success:!0,filename:K8,path:R8,counts:{folders:I.length,documents:D.length,templates:g.length},draftOnlySkipped:{documents:B.length,templates:R.length}}}catch(N){throw await Z(A),N}}})},LE8=Object.freeze({create:Ur6});var XL8=H1(ZL8(),1),wL8=H1(C$(),1);import JJ from"fs/promises";import hY from"path";import js6 from"crypto";var S1=wL8.default("caw:import"),TB=".caw-exports",OL8=".tmp",vs6=1,Gs6=/\b([A-Z][dtfn]\d+)\b/g,_s6=({store:$,folderService:K,documentService:q,templateService:Y})=>{let z=(Z,O)=>{if(!Z)return Z;return Z.replace(Gs6,(X,w)=>{return O[w]??X})},J=async(Z)=>{try{await JJ.rm(Z,{recursive:!0,force:!0})}catch(O){S1("Warning: Failed to cleanup temp directory: %s",O.message)}},P=async(Z,O,{storeCode:X})=>{let w=await K.listFolderContents(Z,O,{folderId:null,type:"d",storeCode:X}),T=await K.listFolderContents(Z,O,{folderId:null,type:"t",storeCode:X}),G=await q.listDocuments(Z,O,{parentId:null,storeCode:X}),v=await Y.listTemplates(Z,O,{parentId:null,storeCode:X}),f=w.length===0&&T.length===0&&G.length===0&&v.length===0;return S1("Store %s empty check: %s",X,f),f},W=async(Z,O,{manifest:X,tempPath:w,storeCode:T})=>{return S1("Starting transaction..."),await Z.transaction().execute(async(G)=>{let v={},f=(B)=>{},V=X.entities.filter((B)=>B.type==="folder");S1("Phase 1: Creating %d folders",V.length);for(let B of V){let g=B.contentType||"d",R=await K.createFolder(G,O,{store:T,path:B.path,type:g},f);v[B.id]=R.getObjectId()}S1("Phase 1 complete - created %d folders",V.length);let h=X.entities.filter((B)=>B.type==="document"),A=[];S1("Phase 2: Reading %d documents",h.length);for(let B of h){let g=hY.join(w,"documents",B.path),R=await JJ.readFile(g,"utf-8");A.push({oldId:B.id,path:B.path,content:R})}S1("Phase 2 complete - read %d documents",A.length),S1("Phase 3: Creating %d document entities",A.length);let N=[];for(let B of A){let g=await q.createDocument(G,O,{store:T,path:B.path,type:"d"},f);v[B.oldId]=g.getObjectId(),N.push({document:g,originalContent:B.content})}S1("Phase 3 complete - created %d document entities",N.length);let S=X.entities.filter((B)=>B.type==="template"),I=[];S1("Phase 4: Reading %d templates",S.length);for(let B of S){let g=hY.join(w,"templates",B.path),R=await JJ.readFile(g,"utf-8");I.push({oldId:B.id,path:B.path,content:R})}S1("Phase 4 complete - read %d templates",I.length),S1("Phase 5: Creating %d template entities",I.length);let D=[];for(let B of I){let g=await Y.createTemplate(G,O,{store:T,path:B.path,type:"t"},f);v[B.oldId]=g.getObjectId(),D.push({template:g,originalContent:B.content})}S1("Phase 5 complete - created %d template entities",D.length),S1("Phase 6: Remapping and saving content for %d documents",N.length);for(let{document:B,originalContent:g}of N){let R=z(g,v);await q.saveDraft(G,O,{id:B.getObjectId(),content:R,clientId:"import-service"},f),await q.publishDocument(G,O,{id:B.getObjectId()},f)}S1("Phase 6 complete - saved and published %d documents",N.length),S1("Phase 7: Remapping and saving content for %d templates",D.length);for(let{template:B,originalContent:g}of D){let R=z(g,v);await Y.saveDraft(G,O,{id:B.getObjectId(),content:R,clientId:"import-service"},f),await Y.publishTemplate(G,O,{id:B.getObjectId()},f)}return S1("Phase 7 complete - saved and published %d templates",D.length),S1("Transaction committed successfully"),{success:!0,counts:{folders:V.length,documents:N.length,templates:D.length},remapped:v}})};return Object.freeze({isStoreEmpty:P,importDocuments:async(Z,O,{filename:X,storeCode:w,projectPath:T})=>{S1("Starting import from %s to store %s",X,w);let G=hY.join(T,TB,X);try{await JJ.access(G),S1("Zip file found: %s",G)}catch(A){throw n.notFound(`Export file not found: ${X}`,"EXPORT_NOT_FOUND")}S1("Validating zip and manifest...");let v=await P(Z,O,{storeCode:w});if(!v)throw n.conflict("Store not empty - import requires empty store","STORE_NOT_EMPTY");S1("Store empty check: %s",v);let f=js6.randomUUID(),V=hY.join(T,TB,OL8,f),h=hY.join(T,TB,OL8);await JJ.mkdir(h,{recursive:!0});try{new XL8.default(G).extractAllTo(V,!0),S1("Extracted zip to: %s",V)}catch(A){throw n.validation("Corrupted or invalid zip file","IMPORT_VALIDATION_FAILED")}try{let A=hY.join(V,"manifest.json"),N;try{let D=await JJ.readFile(A,"utf-8");N=JSON.parse(D)}catch(D){throw n.validation(`Failed to read manifest: ${D.message}`,"MANIFEST_READ_FAILED")}if(N.version!==vs6)throw n.validation(`Unsupported manifest version: ${N.version}`,"UNSUPPORTED_VERSION");if(!N.entities||!Array.isArray(N.entities))throw n.validation("Invalid manifest structure","MANIFEST_READ_FAILED");S1("Manifest valid: version=%d, entities=%d",N.version,N.entities.length);for(let D of N.entities)if(D.type!=="folder"){let B=D.type==="document"?hY.join(V,"documents",D.path):hY.join(V,"templates",D.path);try{await JJ.access(B)}catch(g){throw n.validation(`Missing file for manifest entry: ${D.path}`,"IMPORT_VALIDATION_FAILED")}}S1("All content files validated");let S=await W(Z,O,{manifest:N,tempPath:V,storeCode:w}),I=S.counts.folders+S.counts.documents+S.counts.templates;return S1("Import complete: %d entities imported",I),S}finally{await J(V)}}})},TL8=Object.freeze({create:_s6});var fs6=($)=>{let{name:K,interval:q,execute:Y}=$,z=null,J=!1,P=null,W=null,H=0,Z=null,V=Object.freeze({getName:()=>K,getInterval:()=>q,getIsRunning:()=>J,getLastRun:()=>P,getLastError:()=>W,getRunCount:()=>H,getNextRun:()=>Z}),h=async()=>{try{await Y(),P=new Date().toISOString(),W=null,H++}catch(D){console.error(`[CronJob] ${K} failed:`,D),W={message:D.message,timestamp:new Date().toISOString()}}if(J)Z=new Date(Date.now()+q).toISOString()},A=()=>{if(z!==null)return;z=setInterval(h,q),J=!0,Z=new Date(Date.now()+q).toISOString()},N=()=>{if(z===null)return;clearInterval(z),z=null,J=!1,Z=null},I=Object.freeze({start:A,stop:N,restart:()=>{N(),A()}});return{jobFns:V,controlFns:I}},vM=Object.freeze({create:fs6});var jL8=H1(C$(),1),Vs6=jL8.default("caw:cron:cleanup-edit-states"),vL8=async($)=>{let K=new Date(Date.now()-jW).toISOString();try{let q=await $.deleteFrom("document_edit_state").where("last_activity_at","<",K).execute(),Y=Number(q[0]?.numDeletedRows??0);if(Y>0)Vs6("Cleaned up %d expired edit locks (older than %d minutes)",Y,jW/60000);return{expired:Y}}catch(q){throw console.error("[Cleanup] Failed to cleanup expired edit locks:",q),q}};var As6=({db:$})=>{let{jobFns:K,controlFns:q}=vM.create({name:"cleanup-stale-edit-states",interval:900000,execute:async()=>{await vL8($)}});return{job:Object.freeze(K),control:q}},GL8=Object.freeze({create:As6});var ks6=({db:$})=>{let K=new Map,q=(Z,O)=>{let{job:X,control:w}=Z.create(O);K.set(X.getName(),{job:X,control:w})},Y=(Z)=>{let O=K.get(Z);if(!O)throw new Error(`Job not found: ${Z}`);let X=O.job.getIsRunning();return O.control.start(),{name:Z,status:X?"already-running":"started",isRunning:O.job.getIsRunning()}},z=(Z)=>{let O=K.get(Z);if(!O)throw new Error(`Job not found: ${Z}`);let X=O.job.getIsRunning();return O.control.stop(),{name:Z,status:X?"stopped":"already-stopped",isRunning:O.job.getIsRunning()}},J=(Z)=>{let O=K.get(Z);if(!O)throw new Error(`Job not found: ${Z}`);return O.control.restart(),{name:Z,status:"restarted",isRunning:O.job.getIsRunning()}},P=()=>{let Z=[];for(let[O,{job:X}]of K.entries())Z.push({name:X.getName(),interval:X.getInterval(),isRunning:X.getIsRunning(),lastRun:X.getLastRun(),lastError:X.getLastError(),runCount:X.getRunCount(),nextRun:X.getNextRun()});return Z},W=()=>{for(let[Z,{control:O}]of K.entries())O.start()},H=()=>{for(let[Z,{control:O}]of K.entries())O.stop()};return q(GL8,{db:$}),Object.freeze({register:q,start:Y,stop:z,restart:J,list:P,startAll:W,stopAll:H})},_L8=Object.freeze({create:ks6});import ty8 from"node:process";import AL8 from"node:process";import Rs6 from"node:os";import Ds6 from"node:fs";import hs6 from"node:fs";import fL8 from"node:fs";var jB;function Ms6(){try{return fL8.statSync("/.dockerenv"),!0}catch{return!1}}function Ns6(){try{return fL8.readFileSync("/proc/self/cgroup","utf8").includes("docker")}catch{return!1}}function vB(){if(jB===void 0)jB=Ms6()||Ns6();return jB}var GB,Cs6=()=>{try{return hs6.statSync("/run/.containerenv"),!0}catch{return!1}};function GM(){if(GB===void 0)GB=Cs6()||vB();return GB}var VL8=()=>{if(AL8.platform!=="linux")return!1;if(Rs6.release().toLowerCase().includes("microsoft")){if(GM())return!1;return!0}try{return Ds6.readFileSync("/proc/version","utf8").toLowerCase().includes("microsoft")?!GM():!1}catch{return!1}},kL8=AL8.env.__IS_WSL_TEST__?VL8:VL8();import _B from"node:process";function fB(){if(_B.platform!=="linux")return!1;if(_B.env.WAYLAND_DISPLAY)return!0;if(_B.env.XDG_SESSION_TYPE==="wayland")return!0;return!1}function k4($){if(typeof $!=="object"||$===null)return!1;let K=Object.getPrototypeOf($);return(K===null||K===Object.prototype||Object.getPrototypeOf(K)===null)&&!(Symbol.toStringTag in $)&&!(Symbol.iterator in $)}import{fileURLToPath as Ss6}from"node:url";var qZ=($,K)=>{let q=AB(Es6($));if(typeof q!=="string")throw new TypeError(`${K} must be a string or a file URL: ${q}.`);return q},Es6=($)=>VB($)?$.toString():$,VB=($)=>typeof $!=="string"&&$&&Object.getPrototypeOf($)===String.prototype,AB=($)=>$ instanceof URL?Ss6($):$;var _M=($,K=[],q={})=>{let Y=qZ($,"First argument"),[z,J]=k4(K)?[[],K]:[K,q];if(!Array.isArray(z))throw new TypeError(`Second argument must be either an array of arguments or an options object: ${z}`);if(z.some((H)=>typeof H==="object"&&H!==null))throw new TypeError(`Second argument must be an array of strings: ${z}`);let P=z.map(String),W=P.find((H)=>H.includes("\x00"));if(W!==void 0)throw new TypeError(`Arguments cannot contain null bytes ("\\0"): ${W}`);if(!k4(J))throw new TypeError(`Last argument must be an options object: ${J}`);return[Y,P,J]};import{ChildProcess as us6}from"node:child_process";import{StringDecoder as Ls6}from"node:string_decoder";var{toString:ML8}=Object.prototype,NL8=($)=>ML8.call($)==="[object ArrayBuffer]",Q4=($)=>ML8.call($)==="[object Uint8Array]",nK=($)=>new Uint8Array($.buffer,$.byteOffset,$.byteLength),Is6=new TextEncoder,hL8=($)=>Is6.encode($),xs6=new TextDecoder,fM=($)=>xs6.decode($),CL8=($,K)=>{return bs6($,K).join("")},bs6=($,K)=>{if(K==="utf8"&&$.every((J)=>typeof J==="string"))return $;let q=new Ls6(K),Y=$.map((J)=>typeof J==="string"?hL8(J):J).map((J)=>q.write(J)),z=q.end();return z===""?Y:[...Y,z]},Rj=($)=>{if($.length===1&&Q4($[0]))return $[0];return kB(gs6($))},gs6=($)=>$.map((K)=>typeof K==="string"?hL8(K):K),kB=($)=>{let K=new Uint8Array(ys6($)),q=0;for(let Y of $)K.set(Y,q),q+=Y.length;return K},ys6=($)=>{let K=0;for(let q of $)K+=q.length;return K};var EL8=($)=>Array.isArray($)&&Array.isArray($.raw),LL8=($,K)=>{let q=[];for(let[J,P]of $.entries())q=ms6({templates:$,expressions:K,tokens:q,index:J,template:P});if(q.length===0)throw new TypeError("Template script must not be empty");let[Y,...z]=q;return[Y,z,{}]},ms6=({templates:$,expressions:K,tokens:q,index:Y,template:z})=>{if(z===void 0)throw new TypeError(`Invalid backslash sequence: ${$.raw[Y]}`);let{nextTokens:J,leadingWhitespaces:P,trailingWhitespaces:W}=ps6(z,$.raw[Y]),H=DL8(q,J,P);if(Y===K.length)return H;let Z=K[Y],O=Array.isArray(Z)?Z.map((X)=>SL8(X)):[SL8(Z)];return DL8(H,O,W)},ps6=($,K)=>{if(K.length===0)return{nextTokens:[],leadingWhitespaces:!1,trailingWhitespaces:!1};let q=[],Y=0,z=RL8.has(K[0]);for(let P=0,W=0;P<$.length;P+=1,W+=1){let H=K[W];if(RL8.has(H)){if(Y!==P)q.push($.slice(Y,P));Y=P+1}else if(H==="\\"){let Z=K[W+1];if(Z===`
462
462
  `)P-=1,W+=1;else if(Z==="u"&&K[W+2]==="{")W=K.indexOf("}",W+3);else W+=cs6[Z]??1}}let J=Y===$.length;if(!J)q.push($.slice(Y));return{nextTokens:q,leadingWhitespaces:z,trailingWhitespaces:J}},RL8=new Set([" ","\t","\r",`
463
463
  `]),cs6={x:3,u:5},DL8=($,K,q)=>q||$.length===0||K.length===0?[...$,...K]:[...$.slice(0,-1),`${$.at(-1)}${K[0]}`,...K.slice(1)],SL8=($)=>{let K=typeof $;if(K==="string")return $;if(K==="number")return String($);if(k4($)&&(("stdout"in $)||("isMaxBuffer"in $)))return Bs6($);if($ instanceof us6||Object.prototype.toString.call($)==="[object Promise]")throw new TypeError("Unexpected subprocess in template expression. Please use ${await subprocess} instead of ${subprocess}.");throw new TypeError(`Unexpected "${K}" in template expression`)},Bs6=({stdout:$})=>{if(typeof $==="string")return $;if(Q4($))return fM($);if($===void 0)throw new TypeError(`Missing result.stdout in template expression. This is probably due to the previous subprocess' "stdout" option.`);throw new TypeError(`Unexpected "${typeof $}" stdout in template expression`)};import{spawnSync as o11}from"node:child_process";import{debuglog as Us6}from"node:util";import MB from"node:process";var E9=($)=>VM.includes($),VM=[MB.stdin,MB.stdout,MB.stderr],p7=["stdin","stdout","stderr"],AM=($)=>p7[$]??`stdio[${$}]`;var xL8=($)=>{let K={...$};for(let q of CB)K[q]=NB($,q);return K},NB=($,K)=>{let q=Array.from({length:ls6($)+1}),Y=Fs6($[K],q,K);return os6(Y,K)},ls6=({stdio:$})=>Array.isArray($)?Math.max($.length,p7.length):p7.length,Fs6=($,K,q)=>k4($)?is6($,K,q):K.fill($),is6=($,K,q)=>{for(let Y of Object.keys($).sort(Qs6))for(let z of ds6(Y,q,K))K[z]=$[Y];return K},Qs6=($,K)=>IL8($)<IL8(K)?1:-1,IL8=($)=>{if($==="stdout"||$==="stderr")return 0;return $==="all"?2:1},ds6=($,K,q)=>{if($==="ipc")return[q.length-1];let Y=hB($);if(Y===void 0||Y===0)throw new TypeError(`"${K}.${$}" is invalid.
464
464
  It must be "${K}.stdout", "${K}.stderr", "${K}.all", "${K}.ipc", or "${K}.fd3", "${K}.fd4" (and so on).`);if(Y>=q.length)throw new TypeError(`"${K}.${$}" is invalid: that file descriptor does not exist.