@kelceyp/caw-server 0.0.24 → 0.0.25
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 +1 -1
- package/dist/public_html/main.js +2 -2
- package/package.json +1 -1
package/dist/main.js
CHANGED
|
@@ -458,7 +458,7 @@ globstar while`,$,w,K,X,T),this.matchOne($.slice(w),K.slice(X),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 p46=()=>new Date().toISOString(),K4=p46;var c46=[{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},B46=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=K4(),J=await B46($,"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((X)=>({next_value:X("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:J,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 w=Y==="d"?"document":"template";return O.id},U46=async($)=>{for(let K of c46)await $.insertInto("entity_types").values(K).execute()},l46=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((P)=>({next_value:P("next_value","+",1)})).where("scope_type","=","global").where("scope_id","is",null).where("type_code","=","s").execute();let q=`S${K.next_value}`,Y=K4(),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 U46($),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 l46($)};var S0=K1(ie(),1),F46=($,K)=>{if($)throw new Error(K)},Qe=($,K)=>{if(S0.default.null($)||S0.default.undefined($))throw new Error(`${K} is required`)},i46=($,K)=>{if(Qe($,K),S0.default.empty($))throw new Error(`${K} cannot be empty`)},Q46=($,K,...q)=>{if($)throw K(...q)},d46={condition:F46,nullish:Qe,empty:i46,factory:Q46},Y8=d46;var xW6=typeof Bun!=="undefined",bW6=async($)=>{if(xW6){let{Database:K}=await import("bun:sqlite"),{BunSqliteDialect:q}=await Promise.resolve().then(() => K1(NP8(),1)),Y=new K($);return Y.exec("PRAGMA journal_mode = WAL"),Y.exec("PRAGMA foreign_keys = ON"),new r9({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 r9({dialect:new vS({database:q})})}},gW6=($,K)=>{if(!EW6($)){if(!K)throw new Error(`Database file not found: ${$}`);LW6(IW6($),{recursive:!0})}},yW6=async($,K)=>{if(!await pe($)){if(!K)throw new Error("Database schema not found");await ce($)}},uW6=async($,K)=>{if(!await Ue($)){if(!K)throw new Error("Database seed data not found");await le($)}},mW6=($)=>{let{kyselyFactory:K=bW6}=$??{};return Object.freeze({getDb:async(Y,z)=>{if(Y8.nullish(Y,"databaseFilepath"),Y!==":memory:")gW6(Y,z);let P=await K(Y);return await yW6(P,z),await uW6(P,z),P}})},hP8={create:mW6};var pW6=($)=>{let{id:K,name:q,createdAt:Y,updatedAt:z}=$,Z=Object.freeze({getObjectId:()=>K,getName:()=>q,getCreatedAt:()=>Y,getUpdatedAt:()=>z}),X=Object.freeze({setName:(T)=>{q=T},setUpdatedAt:(T)=>{z=T}});return{entityFns:Z,mutationFns:X}},K5=Object.freeze({create:pW6});var cW6=($)=>{let{id:K,name:q,path:Y,createdAt:z,updatedAt:P}=$,{entityFns:J,mutationFns:W}=K5.create({id:K,name:q,createdAt:z,updatedAt:P}),H=()=>Y,O=Object.freeze({...J,getPath:H,toJSON:()=>({objectId:J.getObjectId(),name:J.getName(),path:H(),createdAt:J.getCreatedAt(),updatedAt:J.getUpdatedAt()})}),X=Object.freeze({...W,setPath:(T)=>{Y=T}});return{entity:O,mutationApi:X}},CP8=Object.freeze({create:cW6});var BW6=($,K,q)=>{return Object.freeze({getEntity:()=>$,getMutationApi:()=>K,getPk:()=>q})},l6=Object.freeze({create:BW6});var UW6=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 P=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((J)=>({next_value:J("next_value","+",1)})).where("scope_type","=",K).where("scope_id",q===null?"is":"=",q).where("type_code","=",Y).execute(),P.next_value},q5=Object.freeze({nextSeq:UW6});var lW6=($)=>$.object_id,RP8=($)=>{if(!$||$.length<2||$[0]!=="P")return null;let K=parseInt($.slice(1),10);return isNaN(K)?null:K},Tf=($)=>{let K=lW6($),q=$.id,{entity:Y,mutationApi:z}=CP8.create({id:K,name:$.name,path:$.path,createdAt:$.created_at,updatedAt:$.updated_at});return{entity:Y,mutationApi:z,id:K,pk:q}},FW6=()=>{let $=new Map;return Object.freeze({createProject:async(J,W,{name:H,path:Z},O)=>{let w=K4(),X=await q5.nextSeq(J,"global",null,"p"),T=`P${X}`,G=await J.insertInto("projects").values({id:X,object_id:T,name:H,path:Z,created_at:w,updated_at:w}).returningAll().executeTakeFirstOrThrow(),{entity:v,mutationApi:f,id:A,pk:C}=Tf(G);return O(()=>{$.set(A,l6.create(v,f,C))}),v},readProject:async(J,W,H)=>{let Z=$.get(H);if(Z)return Z.getEntity();let O=RP8(H);if(O===null)return null;let w=await J.selectFrom("projects").selectAll().where("id","=",O).executeTakeFirst();if(!w)return null;let{entity:X,mutationApi:T,id:G,pk:v}=Tf(w);return $.set(G,l6.create(X,T,v)),X},readProjectByObjectId:async(J,W,H)=>{let Z=$.get(H);if(Z)return Z.getEntity();let O=RP8(H);if(O===null)return null;let w=await J.selectFrom("projects").selectAll().where("id","=",O).executeTakeFirst();if(!w)return null;let{entity:X,mutationApi:T,id:G,pk:v}=Tf(w);return $.set(G,l6.create(X,T,v)),X},readProjectByPath:async(J,W,H)=>{let Z=await J.selectFrom("projects").selectAll().where("path","=",H).executeTakeFirst();if(!Z)return null;let{entity:O,mutationApi:w,id:X,pk:T}=Tf(Z),G=$.get(X);if(G)return G.getEntity();return $.set(X,l6.create(O,w,T)),O},evictProject:(J)=>{$.delete(J)}})},DP8=Object.freeze({create:FW6});var iW6=()=>{let $=new Map,K=new Map;return Object.freeze({get:(w)=>$.get(w),getByPk:(w)=>{let X=K.get(w);return X?$.get(X):void 0},has:(w)=>$.has(w),set:(w,X)=>{$.set(w,X),K.set(X.getPk(),w)},remove:(w)=>{let X=$.get(w);if(X)K.delete(X.getPk());$.delete(w)},getIdByPk:(w)=>K.get(w),setIdByPk:(w,X)=>K.set(w,X),clear:()=>{$.clear(),K.clear()},entries:()=>$.entries()})},jf=Object.freeze({create:iW6});var yP8=K1(X$(),1);var QW6=async($,K,q,Y=null)=>{return(await $.selectFrom("entity_types").select("id").where("code","=",q).where((P)=>Y?P("subtype","=",Y):P("subtype","is",null)).executeTakeFirstOrThrow()).id},uz=Object.freeze({readEntityTypeId:QW6});var dW6=($)=>{let{id:K,name:q,parentId:Y,path:z,createdAt:P,updatedAt:J,publishedVersionNumber:W,hasDraft:H,draftContent:Z,publishedContent:O}=$,{entityFns:w,mutationFns:X}=K5.create({id:K,name:q,createdAt:P,updatedAt:J}),T=new Map,G=W??null,v=H??!1,f=Z??null,A=O??null,C=null,h8=Object.freeze({...w,getParentId:()=>Y,getPath:()=>z,getField:(K8)=>{return T.get(K8)},getFields:()=>{let K8={};for(let[P8,H8]of T.entries())K8[P8]=H8;return K8},getPublishedVersionNumber:()=>G,hasDraftContent:()=>v,getDraftContent:()=>f,getPublishedContent:()=>A,getEditState:()=>C,hasPublished:()=>G>0,isBeingEdited:()=>C!==null,getVersionCount:()=>G??0,getIsFolder:()=>!1}),s=Object.freeze({...X,setParentId:(K8)=>{Y=K8},setPath:(K8)=>{z=K8},setField:(K8,P8)=>{T.set(K8,P8)},removeField:(K8)=>{T.delete(K8)},setPublishedVersionNumber:(K8)=>{G=K8},setHasDraft:(K8)=>{v=K8},setDraftContent:(K8)=>{f=K8},setPublishedContent:(K8)=>{A=K8},setEditState:(K8)=>{C=K8}});return{entityFns:h8,mutationFns:s}},YW=Object.freeze({create:dW6});var SP8=($)=>{let{entityFns:K,mutationFns:q}=YW.create($),Y=()=>K.getParentId()===null,z=()=>!0,J=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:J,mutationApi:W}},nW6=($,K,q,Y)=>{return SP8({id:K,parentId:q,name:$.name,path:Y,createdAt:$.created_at,updatedAt:$.updated_at})},mz=Object.freeze({create:SP8,createFromRow:nW6});var oW6=($)=>{let{id:K,name:q,ownerEntityId:Y,label:z,description:P,primitiveType:J,required:W,multiplicity:H,isSystem:Z,createdAt:O,updatedAt:w}=$,{entityFns:X,mutationFns:T}=K5.create({id:K,name:q,createdAt:O,updatedAt:w}),G=()=>Y,v=()=>z,f=()=>P,A=()=>J,C=()=>W,V=()=>H,M=()=>Z,I=Object.freeze({...X,getOwnerEntityId:G,getLabel:v,getDescription:f,getPrimitiveType:A,getRequired:C,getMultiplicity:V,getIsSystem:M,toJSON:()=>({id:X.getObjectId(),ownerEntityId:G(),name:X.getName(),label:v(),description:f(),primitiveType:A(),required:C(),multiplicity:V(),isSystem:M(),createdAt:X.getCreatedAt(),updatedAt:X.getUpdatedAt()})}),D=Object.freeze({...T});return{entity:I,mutationApi:D}},Wx=Object.freeze({create:oW6});var aW6=({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]},P=()=>{return[...Y]},J=()=>{return q},W=()=>{return q.getMultiplicity()==="multi"};return Object.freeze({getValue:z,getValues:P,getDefinition:J,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]}})},Hx=Object.freeze({create:aW6});R4();R4();var $H6=($)=>{let K=$.trim();Y8.factory(!K,t.validation,"Folder name cannot be empty","EMPTY_NAME"),Y8.factory(K.length>255,t.validation,"Folder name cannot exceed 255 characters","NAME_TOO_LONG");let q=/[/\\:*?"<>|]/;return Y8.factory(q.test(K),t.validation,'Folder name contains invalid characters: /\\:*?"<>|',"INVALID_CHARS"),K},KH6=($)=>{return $.getParentId()===null},HK=Object.freeze({validateFolderName:$H6,isRootFolder:KH6});R4();var qH6=($)=>{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}},YH6=($,K,q)=>`${$}${K}${q}`,zH6=($,K)=>{Y8.factory($!==K,t.validation,`Store code mismatch: expected ${K}, got ${$}`,"STORE_CODE_MISMATCH")},zW=Object.freeze({parseId:qH6,buildId:YH6,validateStoreCode:zH6});var EP8=($)=>{let{entityFns:K,mutationFns:q}=YW.create($),Y=()=>"d",P=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()})}),J=Object.freeze({...q});return{entity:P,mutationApi:J}},PH6=($,K,q,Y,z,P,J=null,W=null)=>{return EP8({id:K,parentId:q,name:$.name,path:Y,publishedVersionNumber:z,hasDraft:P,draftContent:J,publishedContent:W,createdAt:$.created_at,updatedAt:$.updated_at})},LP8=Object.freeze({create:EP8,createFromRow:PH6});var IP8=($)=>{let{entityFns:K,mutationFns:q}=YW.create($),Y=()=>"t",P=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()})}),J=Object.freeze({...q});return{entity:P,mutationApi:J}},JH6=($,K,q,Y,z,P,J=null,W=null)=>{return IP8({id:K,parentId:q,name:$.name,path:Y,publishedVersionNumber:z,hasDraft:P,draftContent:J,publishedContent:W,createdAt:$.created_at,updatedAt:$.updated_at})},xP8=Object.freeze({create:IP8,createFromRow:JH6});R4();var bP8=($)=>{let K=zW.parseId($);if(!K)throw t.notFound(`Invalid entity ID format: ${$}`,"NOT_FOUND");let{storeCode:q,typeCode:Y,seq:z}=K;return{entityId:`${Y}${z}`,storeCode:q,typeCode:Y,seq:z}},WH6=($)=>{let{typeCode:K}=bP8($);return K},HH6={d:LP8.createFromRow,t:xP8.createFromRow},ZH6=($)=>{let K=HH6[$];if(!K)throw new Error(`Unknown content type: ${$}`);return K},OH6=($)=>{return{d:"document",t:"template"}[$]||"content"},m1=Object.freeze({resolveEntityId:bP8,getTypeFromId:WH6,getEntityFactory:ZH6,getContentTypeLabel:OH6,buildId:zW.buildId,parseId:zW.parseId});var{parseId:O4,buildId:Zx,validateStoreCode:wH6}=zW,{validateFolderName:gP8,isRootFolder:gg1}=HK,yg1=yP8.default("caw:stores:db"),PW=3600000,XH6=({id:$,code:K,name:q,pk:Y,folderCache:z,createdAt:P,updatedAt:J})=>{let W=new Map,{entityFns:H,mutationFns:Z}=K5.create({id:$,name:q,createdAt:P,updatedAt:J}),O=()=>new Set([K]),w=()=>"local",X=()=>K,T=()=>Y,G=()=>({id:$,code:K,name:H.getName(),createdAt:H.getCreatedAt(),updatedAt:H.getUpdatedAt(),type:"local"}),v=(E)=>{wH6(E,K)},f=async(E,u)=>{if(!u)return null;if(z){let d=z.get(u);if(d)return d.getPk()}if(!O4(u))Y8.factory(!0,t.validation,`Invalid parent folder ID: ${u}`,"INVALID_ID");let Q=await E.selectFrom("entities").select("id").where("store_id","=",Y).where("object_id","=",u).where("deleted_at","is",null).executeTakeFirst();return Q?Q.id:null},A=async(E,u)=>{let y=await E.selectFrom("entities").select(["name","parent_folder_id","parent_object_id","object_id"]).where("id","=",u).where("deleted_at","is",null).executeTakeFirst();Y8.factory(!y,t.notFound,`Entity not found for PK ${u}`,"ENTITY_NOT_FOUND");let Q=y.object_id,d=z?z.get(Q):null;if(d){let w8=d.getEntity();if(w8.getName()===y.name&&w8.getParentId()===y.parent_object_id)return w8.getPath()}if(y.name===null)return"";if(!y.parent_object_id)return y.name;let $8=z?z.get(y.parent_object_id):null;if($8){let k8=$8.getEntity().getPath();return k8?`${k8}/${y.name}`:y.name}let W8=[y.name],z8=y.parent_folder_id;while(z8!==null){let w8=W.get(z8),k8=w8&&z?z.get(w8):null;if(k8){let h6=k8.getEntity().getPath();if(h6){let o8=h6.split("/").filter((d6)=>d6);W8.unshift(...o8)}break}let m8=await E.selectFrom("entities").select(["name","parent_folder_id"]).where("id","=",z8).where("deleted_at","is",null).executeTakeFirst();if(Y8.factory(!m8,t.notFound,`Folder not found for PK ${z8}`,"FOLDER_NOT_FOUND"),m8.name!==null)W8.unshift(m8.name);z8=m8.parent_folder_id}return W8.join("/")},C=async(E,u)=>{let y=[],Q=[u];while(Q.length>0){let d=Q.shift(),$8=await E.selectFrom("entities").select(["id","type_code"]).where("store_id","=",Y).where("parent_folder_id","=",d).where("deleted_at","is",null).execute();for(let W8 of $8)if(y.push(W8.id),W8.type_code==="f")Q.push(W8.id)}return y},V=async(E,u,y,Q)=>{let d=K4(),$8=await uz.readEntityTypeId(E,{},"f",Q),W8=await q5.nextSeq(E,"store",Y,"f"),z8=await f(E,u),w8=Zx(K,"f",W8),k8=await E.insertInto("entities").values({store_id:Y,object_id:w8,entity_type_id:$8,type_code:"f",seq:W8,parent_folder_id:z8,parent_object_id:u,name:y,created_at:d,updated_at:d}).returningAll().executeTakeFirstOrThrow();return await E.insertInto("folders").values({entity_id:k8.id}).execute(),{row:k8,id:w8}},M=(E)=>{let u=null;if(E.owner_entity_id!==null)u=W.get(E.owner_entity_id)??null;let{entity:y,mutationApi:Q}=Wx.create({id:E.object_id,name:E.name,ownerEntityId:u,label:E.label,description:E.description,primitiveType:E.primitive_type,required:E.required===1,multiplicity:E.multiplicity,isSystem:E.is_system===1,createdAt:E.created_at,updatedAt:E.updated_at});return{entity:y,mutationApi:Q,pk:E.id}},R=async(E,u)=>{let y=await E.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(),Q=new Map;for(let $8 of y){let W8=$8.def_id;if(!Q.has(W8))Q.set(W8,{definition:{id:$8.def_object_id,name:$8.def_name,label:$8.def_label,description:$8.def_description,primitiveType:$8.def_primitive_type,required:$8.def_required===1,multiplicity:$8.def_multiplicity,isSystem:$8.def_is_system===1,ownerEntityId:$8.def_owner_entity_id?W.get($8.def_owner_entity_id):null,createdAt:$8.def_created_at,updatedAt:$8.def_updated_at},values:[]});Q.get(W8).values.push($8.value)}let d=[];for(let{definition:$8,values:W8}of Q.values()){let{entity:z8}=Wx.create($8),w8=Hx.create({definition:z8,values:W8});d.push(w8)}return d},I=async(E,u)=>{let y=await E.selectFrom("field_definitions").selectAll().where("store_id","=",Y).where("seq","=",1).where("type_code","=","n").executeTakeFirst();if(!y)return null;if(y.owner_entity_id){let d=await E.selectFrom("entities").select("object_id").where("id","=",y.owner_entity_id).executeTakeFirst();if(d)W.set(y.owner_entity_id,d.object_id)}let Q=`${K}n1`;return W.set(y.id,Q),M(y)},D=async(E,u,{storeCode:y,parentId:Q,name:d,subtype:$8})=>{if(y!==void 0)v(y);if(d!==null&&d!==void 0)gP8(d);let{row:W8,id:z8}=await V(E,Q,d,$8||null),w8=W8.id;W.set(w8,z8);let k8=await A(E,w8),{entity:m8,mutationApi:Q8}=mz.createFromRow(W8,z8,Q,k8);return{entity:m8,mutationApi:Q8,pk:w8}},m=async(E,u,{id:y})=>{let Q=O4(y);if(!Q)return null;let d=await E.selectFrom("entities").innerJoin("folders","folders.entity_id","entities.id").selectAll("entities").where("entities.store_id","=",Y).where("entities.seq","=",Q.seq).where("entities.type_code","=","f").where("entities.deleted_at","is",null).executeTakeFirst();if(!d)return null;let{id:$8,parent_object_id:W8}=d;W.set($8,y);let z8=await A(E,$8),w8=await R(E,$8),{entity:k8,mutationApi:m8}=mz.createFromRow(d,y,W8,z8);for(let Q8 of w8)m8.setField(Q8.getDefinition().getName(),Q8);return{entity:k8,mutationApi:m8,pk:$8}},b=async(E,u,{id:y,name:Q,parentId:d})=>{let $8=O4(y);Y8.factory(!$8,t.validation,`Invalid folder ID: ${y}`,"INVALID_ID");let W8=await E.selectFrom("entities").selectAll().where("store_id","=",Y).where("seq","=",$8.seq).where("type_code","=","f").where("deleted_at","is",null).executeTakeFirst();Y8.factory(!W8,t.notFound,`Folder not found: ${y}`,"FOLDER_NOT_FOUND");let z8=W8.id,w8={name:W8.name,parentId:W8.parent_object_id,path:null};if(W.set(z8,y),w8.path=await A(E,z8),Q!==void 0)gP8(Q);let k8={};if(Q!==void 0)k8.name=Q;if(d!==void 0){let n6=await f(E,d);k8.parent_folder_id=n6,k8.parent_object_id=d}k8.updated_at=K4();let m8=await E.updateTable("entities").set(k8).where("id","=",z8).returningAll().executeTakeFirstOrThrow(),Q8=await A(E,z8),h6=await R(E,z8),{entity:o8,mutationApi:d6}=mz.createFromRow(m8,y,m8.parent_object_id,Q8);for(let n6 of h6)d6.setField(n6.getDefinition().getName(),n6);return{entity:o8,mutationApi:d6,pk:z8,oldValues:w8}},h=async(E,u,{id:y})=>{let Q=O4(y);Y8.factory(!Q,t.validation,`Invalid folder ID: ${y}`,"INVALID_ID");let d=await E.selectFrom("entities").selectAll().where("store_id","=",Y).where("seq","=",Q.seq).where("type_code","=","f").where("deleted_at","is",null).executeTakeFirst();Y8.factory(!d,t.notFound,`Folder not found: ${y}`,"FOLDER_NOT_FOUND");let $8=d.id;W.set($8,y);let W8=await A(E,$8),z8=await C(E,$8),w8=K4();await E.updateTable("entities").set({deleted_at:w8}).where("id","in",[$8,...z8]).execute();let k8=[];for(let m8 of z8){let Q8=await E.selectFrom("entities").select("object_id").where("id","=",m8).executeTakeFirst();if(Q8)k8.push(Q8.object_id)}return{id:y,deleted:!0,descendantCount:z8.length,path:W8,descendantIds:k8,deletedPks:[$8,...z8]}},L=async(E,u,y,Q,d=null)=>{let $8=await f(E,y),W8=E.selectFrom("entities").select("object_id").where("store_id","=",Y).where("parent_folder_id",$8===null?"is":"=",$8).where("name","=",Q).where("deleted_at","is",null);if(d)W8=W8.where("object_id","!=",d);return!!await W8.executeTakeFirst()},B=async(E,u,y,Q)=>{let d=await f(E,y),$8=await E.selectFrom("entities").innerJoin("folders","folders.entity_id","entities.id").selectAll("entities").where("entities.store_id","=",Y).where("entities.parent_folder_id",d===null?"is":"=",d).where("entities.name","=",Q).where("entities.deleted_at","is",null).executeTakeFirst();if(!$8)return null;let{id:W8,object_id:z8}=$8;W.set(W8,z8);let w8=await A(E,W8),k8=await R(E,W8),{entity:m8,mutationApi:Q8}=mz.createFromRow($8,z8,y,w8);for(let h6 of k8)Q8.setField(h6.getDefinition().getName(),h6);return{entity:m8,mutationApi:Q8,pk:W8}},i=async(E,u,{folderId:y,type:Q})=>{let d;if(y){if(d=await f(E,y),d===null)return[]}else if(Q){let w8=await N8(E,u,Q);if(!w8)return[];d=w8.pk}else d=null;let $8=E.selectFrom("entities").selectAll().where("store_id","=",Y).where("parent_folder_id",d===null?"is":"=",d).where("deleted_at","is",null);if(Q)$8=$8.where("type_code","=","f").innerJoin("folders","folders.entity_id","entities.id");let W8=await $8.execute(),z8=[];for(let w8 of W8){let{id:k8,object_id:m8}=w8;W.set(k8,m8);let Q8=await A(E,k8),h6=await R(E,k8),{entity:o8,mutationApi:d6}=mz.createFromRow(w8,m8,w8.parent_object_id,Q8);for(let n6 of h6)d6.setField(n6.getDefinition().getName(),n6);z8.push({entity:o8,mutationApi:d6,pk:k8})}return z8},X8=async(E,u,{path:y,type:Q})=>{let d=(y??"").trim(),$8=await E.selectFrom("entities").selectAll().where("store_id","=",Y).where("type_code","=","f").where("deleted_at","is",null).execute();for(let W8 of $8){let z8=await m(E,u,{id:W8.object_id});if(z8&&z8.entity.getPath()===d)return z8}return null},N8=async(E,u,y,Q)=>{if(Q!==void 0)v(Q);let d=y==="d"?"root_d":"root_t",$8=await uz.readEntityTypeId(E,u,"f",d),W8=await E.selectFrom("entities").innerJoin("folders","folders.entity_id","entities.id").selectAll("entities").where("entities.store_id","=",Y).where("entities.entity_type_id","=",$8).where("entities.deleted_at","is",null).executeTakeFirst();if(!W8)return null;let{id:z8,object_id:w8}=W8;W.set(z8,w8);let k8=await A(E,z8),m8=await R(E,z8),{entity:Q8,mutationApi:h6}=mz.createFromRow(W8,w8,W8.parent_object_id,k8);for(let o8 of m8)h6.setField(o8.getDefinition().getName(),o8);return{entity:Q8,mutationApi:h6,pk:z8}},h8=async(E,u,{storeCode:y,ownerEntityId:Q,name:d,label:$8,description:W8,primitiveType:z8,required:w8,multiplicity:k8,isSystem:m8=!1})=>{if(y!==void 0)v(y);Y8.factory(z8!=="string"&&z8!=="object_ref",t.validation,`Invalid primitiveType: ${z8}`,"INVALID_PRIMITIVE_TYPE"),Y8.factory(k8!=="single"&&k8!=="multi",t.validation,`Invalid multiplicity: ${k8}`,"INVALID_MULTIPLICITY");let Q8=K4(),h6=await uz.readEntityTypeId(E,u,"n",null),o8=await q5.nextSeq(E,"store",Y,"n"),d6=Zx(K,"n",o8),n6=Q?await f(E,Q):null,L$=await E.insertInto("field_definitions").values({store_id:Y,object_id:d6,entity_type_id:h6,type_code:"n",seq:o8,owner_entity_id:n6,name:d,label:$8,description:W8,primitive_type:z8,required:w8?1:0,multiplicity:k8,is_system:m8?1:0,created_at:Q8,updated_at:Q8}).returningAll().executeTakeFirstOrThrow(),u3=L$.id;return W.set(u3,d6),M(L$)},c8=async(E,u,{id:y})=>{let Q=O4(y);if(!Q)return null;let d=await E.selectFrom("field_definitions").selectAll().where("store_id","=",Y).where("seq","=",Q.seq).where("type_code","=","n").executeTakeFirst();if(!d)return null;if(d.owner_entity_id){let $8=await E.selectFrom("entities").select("object_id").where("id","=",d.owner_entity_id).executeTakeFirst();if($8)W.set(d.owner_entity_id,$8.object_id)}return W.set(d.id,y),M(d)},E8=async(E,u,y,Q)=>{let d=await E.selectFrom("field_definitions").selectAll().where("store_id","=",Y).where("name","=",y).where("owner_entity_id",Q===null?"is":"=",Q).executeTakeFirst();if(!d)return null;if(d.owner_entity_id){let $8=await E.selectFrom("entities").select("object_id").where("id","=",d.owner_entity_id).executeTakeFirst();if($8)W.set(d.owner_entity_id,$8.object_id)}return W.set(d.id,d.object_id),M(d)},g8=async(E,u,{fieldDefinitionId:y,fieldName:Q,ownerEntityPk:d})=>{if(y){let W8=await c8(E,u,{id:y});if(W8)return W8}if(Q&&d){let W8=await E8(E,u,Q,d);if(W8)return W8}if(Q){let W8=await E8(E,u,Q,null);if(W8)return W8}let $8=await I(E);return Y8.factory(!$8,t.notFound,"No field definition found and no default available","NO_FIELD_DEFINITION"),$8},t8=async(E,u,{ownerEntityPk:y,includeSystem:Q=!0})=>{let d=E.selectFrom("field_definitions").selectAll().where("store_id","=",Y).where("owner_entity_id",y===null?"is":"=",y);if(!Q)d=d.where("is_system","=",0);let $8=await d.execute(),W8=[];for(let z8 of $8){if(z8.owner_entity_id){let w8=await E.selectFrom("entities").select("object_id").where("id","=",z8.owner_entity_id).executeTakeFirst();if(w8)W.set(z8.owner_entity_id,w8.object_id)}W.set(z8.id,z8.object_id),W8.push(M(z8))}return W8},v4=async(E,u,{id:y})=>{let Q=O4(y);Y8.factory(!Q,t.validation,`Invalid definition ID: ${y}`,"INVALID_ID");let d=await E.selectFrom("field_definitions").selectAll().where("store_id","=",Y).where("seq","=",Q.seq).where("type_code","=","n").executeTakeFirst();Y8.factory(!d,t.notFound,`Field definition not found: ${y}`,"DEFINITION_NOT_FOUND"),Y8.factory(d.is_system===1,t.validation,`Cannot delete system field definition: ${y}`,"SYSTEM_DEFINITION");let $8=d.id;if(await E.deleteFrom("field_definitions").where("id","=",$8).execute(),d.owner_entity_id){let z8=await E.selectFrom("entities").select("object_id").where("id","=",d.owner_entity_id).executeTakeFirst();if(z8)W.set(d.owner_entity_id,z8.object_id)}let{entity:W8}=M(d);return W8},g3=async(E,u,{entityId:y,fieldDefinitionId:Q,fieldName:d,value:$8,values:W8})=>{let z8=O4(y);Y8.factory(!z8,t.validation,`Invalid entity ID: ${y}`,"INVALID_ID");let w8=await E.selectFrom("entities").select("id").where("store_id","=",Y).where("seq","=",z8.seq).where("type_code","=",z8.typeCode).where("deleted_at","is",null).executeTakeFirst();Y8.factory(!w8,t.notFound,`Entity not found: ${y}`,"ENTITY_NOT_FOUND");let k8=w8.id,{entity:m8,pk:Q8}=await g8(E,u,{fieldDefinitionId:Q,fieldName:d,ownerEntityPk:k8}),h6=m8.getMultiplicity(),o8;if(h6==="single")if(W8&&Array.isArray(W8))Y8.factory(W8.length>1||W8.length===0,t.validation,`Field '${m8.getName()}' is single-valued but received ${W8.length} values`,"MULTIPLICITY_VIOLATION"),o8=[W8[0]];else Y8.factory($8===void 0,t.validation,"Single-valued field requires value parameter","VALUE_REQUIRED"),o8=[$8];else if(W8&&Array.isArray(W8))o8=W8;else if($8!==void 0)o8=[$8];else Y8.factory(!0,t.validation,"Multi-valued field requires either value or values parameter","VALUE_OR_VALUES_REQUIRED");await E.deleteFrom("field_values").where("entity_id","=",k8).where("field_definition_id","=",Q8).execute();let d6=K4();for(let xY of o8)await E.insertInto("field_values").values({entity_id:k8,field_definition_id:Q8,value:xY,updated_at:d6}).execute();let n6=o8,L$=Hx.create({definition:m8,values:n6}),u3;if(z8.typeCode==="f")u3=await m(E,u,{id:y});else u3=await a(E,u,{id:y});return Y8.factory(!u3,t.notFound,`Entity not found after field update: ${y}`,"ENTITY_NOT_FOUND"),{...u3,field:L$,fieldName:m8.getName()}},v8=async(E,u,{entityId:y,fieldDefinitionId:Q,fieldName:d})=>{let $8=O4(y);Y8.factory(!$8,t.validation,`Invalid entity ID: ${y}`,"INVALID_ID");let W8=await E.selectFrom("entities").select("id").where("store_id","=",Y).where("seq","=",$8.seq).where("type_code","=",$8.typeCode).where("deleted_at","is",null).executeTakeFirst();Y8.factory(!W8,t.notFound,`Entity not found: ${y}`,"ENTITY_NOT_FOUND");let z8=W8.id,{entity:w8,pk:k8}=await g8(E,u,{fieldDefinitionId:Q,fieldName:d,ownerEntityPk:z8});await E.deleteFrom("field_values").where("entity_id","=",z8).where("field_definition_id","=",k8).execute();let m8;if($8.typeCode==="f")m8=await m(E,u,{id:y});else m8=await a(E,u,{id:y});return Y8.factory(!m8,t.notFound,`Entity not found after field delete: ${y}`,"ENTITY_NOT_FOUND"),{...m8,fieldName:w8.getName()}},r=async(E,u,{type:y,storeCode:Q,parentId:d,name:$8,initialContent:W8})=>{let z8=m1.getEntityFactory(y);if(Q!==void 0)v(Q);let w8=K4(),k8=await uz.readEntityTypeId(E,u,y,null),m8=await q5.nextSeq(E,"store",Y,y),Q8=Zx(K,y,m8),h6=await f(E,d),o8=await E.insertInto("entities").values({store_id:Y,object_id:Q8,entity_type_id:k8,type_code:y,seq:m8,parent_folder_id:h6,parent_object_id:d,name:$8,created_at:w8,updated_at:w8}).returningAll().executeTakeFirstOrThrow();await E.insertInto("documents").values({entity_id:o8.id,published_version_id:null}).execute();let d6=W8!==null&&W8!==void 0;if(d6)await E.insertInto("document_drafts").values({entity_id:o8.id,content:W8,updated_at:w8}).execute();let n6=o8.id;W.set(n6,Q8);let L$=await A(E,n6),{entity:u3,mutationApi:xY}=z8(o8,Q8,d,L$,null,d6,d6?W8:null,null);return{entity:u3,mutationApi:xY,pk:n6}},a=async(E,u,{id:y})=>{let Q=O4(y);if(!Q)return null;let{typeCode:d,seq:$8}=Q,W8=m1.getEntityFactory(d),z8=await E.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",U$.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","=",$8).where("e.deleted_at","is",null).executeTakeFirst();if(!z8)return null;let w8=z8.entity_id;W.set(w8,y);let k8=await A(E,w8),m8=await R(E,w8),{entity:Q8,mutationApi:h6}=W8(z8,z8.object_id,z8.parent_object_id,k8,z8.published_version_number,z8.has_draft===1,z8.draft_content??null,z8.published_content??null);for(let o8 of m8)h6.setField(o8.getDefinition().getName(),o8);if(z8.edit_client_id)h6.setEditState({clientId:z8.edit_client_id,startedAt:z8.edit_started_at,lastActivityAt:z8.edit_activity});return{entity:Q8,mutationApi:h6,pk:w8}},s=async(E,u,{id:y,name:Q,parentId:d})=>{let $8=O4(y);Y8.factory(!$8,t.validation,`Invalid content ID: ${y}`,"INVALID_ID");let{typeCode:W8,seq:z8}=$8,w8=m1.getContentTypeLabel(W8),k8=m1.getEntityFactory(W8),m8=await E.selectFrom("entities").selectAll().where("store_id","=",Y).where("seq","=",z8).where("type_code","=",W8).where("deleted_at","is",null).executeTakeFirst();Y8.factory(!m8,t.notFound,`${w8} not found: ${y}`,"NOT_FOUND");let Q8=m8.id,h6={name:m8.name,parentId:m8.parent_object_id,path:null};W.set(Q8,y),h6.path=await A(E,Q8);let d6={updated_at:K4()};if(Q!==void 0)d6.name=Q;if(d!==void 0){let i5=await f(E,d);d6.parent_folder_id=i5,d6.parent_object_id=d}let n6=await E.updateTable("entities").set(d6).where("id","=",Q8).returningAll().executeTakeFirstOrThrow(),L$=await E.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",U$.raw("CASE WHEN dd.entity_id IS NOT NULL THEN 1 ELSE 0 END").as("has_draft")]).where("d.entity_id","=",Q8).executeTakeFirst(),u3=await A(E,Q8),xY=await R(E,Q8),{entity:kP,mutationApi:hv}=k8(n6,y,n6.parent_object_id,u3,L$.published_version_number,L$.has_draft===1,L$.draft_content??null,L$.published_content??null);for(let i5 of xY)hv.setField(i5.getDefinition().getName(),i5);return{entity:kP,mutationApi:hv,pk:Q8,oldValues:h6}},K8=async(E,u,{id:y})=>{let Q=O4(y);Y8.factory(!Q,t.validation,`Invalid content ID: ${y}`,"INVALID_ID");let{typeCode:d,seq:$8}=Q,W8=m1.getContentTypeLabel(d),z8=await E.selectFrom("entities").selectAll().where("store_id","=",Y).where("seq","=",$8).where("type_code","=",d).where("deleted_at","is",null).executeTakeFirst();Y8.factory(!z8,t.notFound,`${W8} not found: ${y}`,"NOT_FOUND");let w8=z8.id;W.set(w8,y);let k8=await A(E,w8),m8=K4();return await E.updateTable("entities").set({deleted_at:m8}).where("id","=",w8).execute(),{id:y,deleted:!0,path:k8}},P8=async(E,u,{id:y,content:Q,clientId:d})=>{let $8=O4(y);Y8.factory(!$8,t.validation,`Invalid content ID: ${y}`,"INVALID_ID"),Y8.factory(!d,t.validation,"clientId is required","MISSING_CLIENT_ID");let{typeCode:W8,seq:z8}=$8,w8=m1.getContentTypeLabel(W8),k8=K4(),m8=await E.selectFrom("entities").select("id").where("store_id","=",Y).where("type_code","=",W8).where("seq","=",z8).where("deleted_at","is",null).executeTakeFirst();Y8.factory(!m8,t.notFound,`${w8} not found: ${y}`,"NOT_FOUND");let Q8=m8.id;await E.insertInto("document_drafts").values({entity_id:Q8,content:Q,updated_at:k8}).onConflict((n6)=>n6.column("entity_id").doUpdateSet({content:Q,updated_at:k8})).execute();let o8=!await tK(E,u,{id:y,clientId:d}),d6=await a(E,u,{id:y});return Y8.factory(!d6,t.notFound,`${w8} not found after draft save: ${y}`,"NOT_FOUND"),{...d6,lockLost:o8}},H8=async(E,u,{id:y})=>{let Q=O4(y);Y8.factory(!Q,t.validation,`Invalid content ID: ${y}`,"INVALID_ID");let{typeCode:d,seq:$8}=Q,W8=m1.getContentTypeLabel(d),z8=K4(),w8=await E.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","=",$8).where("e.deleted_at","is",null).executeTakeFirst();Y8.factory(!w8,t.notFound,`No draft found for ${W8}: ${y}`,"DRAFT_NOT_FOUND");let k8=w8.entity_id,Q8=((await E.selectFrom("document_versions").select(E.fn.max("version_number").as("max_version")).where("entity_id","=",k8).executeTakeFirst())?.max_version||0)+1,h6=await E.insertInto("document_versions").values({entity_id:k8,version_number:Q8,content:w8.content,published_at:z8}).returningAll().executeTakeFirstOrThrow();await E.updateTable("documents").set({published_version_id:h6.id}).where("entity_id","=",k8).execute(),await E.deleteFrom("document_drafts").where("entity_id","=",k8).execute(),await E.deleteFrom("document_edit_state").where("entity_id","=",k8).execute();let o8=await a(E,u,{id:y});return Y8.factory(!o8,t.notFound,`${W8} not found after publish: ${y}`,"NOT_FOUND"),o8},O8=async(E,u,{id:y})=>{let Q=O4(y);Y8.factory(!Q,t.validation,`Invalid content ID: ${y}`,"INVALID_ID");let{typeCode:d,seq:$8}=Q,W8=m1.getContentTypeLabel(d),z8=await E.selectFrom("entities").select("id").where("store_id","=",Y).where("type_code","=",d).where("seq","=",$8).where("deleted_at","is",null).executeTakeFirst();Y8.factory(!z8,t.notFound,`${W8} not found: ${y}`,"NOT_FOUND"),await E.deleteFrom("document_drafts").where("entity_id","=",z8.id).execute();let w8=await a(E,u,{id:y});return Y8.factory(!w8,t.notFound,`${W8} not found after discard: ${y}`,"NOT_FOUND"),w8},A8=async(E,u,{id:y})=>{let Q=O4(y);if(!Q)return null;let{typeCode:d,seq:$8}=Q,W8=await E.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","=",$8).where("e.deleted_at","is",null).executeTakeFirst();if(!W8)return null;return{entityId:W8.object_id,content:W8.content,updatedAt:W8.updated_at}},A6=async(E,u,{id:y,versionNumber:Q})=>{let d=O4(y);if(!d)return null;let{typeCode:$8,seq:W8}=d,z8=await E.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","=",$8).where("e.seq","=",W8).where("e.deleted_at","is",null).where("dv.version_number","=",Q).executeTakeFirst();if(!z8)return null;return{entityId:z8.object_id,versionNumber:z8.version_number,content:z8.content,publishedAt:z8.published_at}},E6=async(E,u,{id:y})=>{let Q=O4(y);if(!Q)return[];let{typeCode:d,seq:$8}=Q;return(await E.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","=",$8).where("e.deleted_at","is",null).orderBy("dv.version_number","desc").execute()).map((z8)=>({versionNumber:z8.version_number,publishedAt:z8.published_at}))},$1=async(E,u,y,Q,d)=>{let $8=m1.getEntityFactory(d),W8=await f(E,y),z8=await E.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",U$.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",W8===null?"is":"=",W8).where("e.name","=",Q).where("e.deleted_at","is",null).executeTakeFirst();if(!z8)return null;let w8=z8.entity_id;W.set(w8,z8.object_id);let k8=await A(E,w8),m8=await R(E,w8),{entity:Q8,mutationApi:h6}=$8(z8,z8.object_id,z8.parent_object_id,k8,z8.published_version_number,z8.has_draft===1,z8.draft_content??null,z8.published_content??null);for(let o8 of m8)h6.setField(o8.getDefinition().getName(),o8);return{entity:Q8,mutationApi:h6,pk:w8}},y3=async(E,u,{parentId:y,type:Q})=>{let d=m1.getEntityFactory(Q),$8=await f(E,y),W8=await E.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",U$.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","=",Q).where("e.parent_folder_id",$8===null?"is":"=",$8).where("e.deleted_at","is",null).execute(),z8=[];for(let w8 of W8){let k8=w8.entity_id;W.set(k8,w8.object_id);let m8=await A(E,k8),Q8=await R(E,k8),{entity:h6,mutationApi:o8}=d(w8,w8.object_id,w8.parent_object_id,m8,w8.published_version_number,w8.has_draft===1,w8.draft_content??null,w8.published_content??null);for(let d6 of Q8)o8.setField(d6.getDefinition().getName(),d6);if(w8.edit_client_id)o8.setEditState({clientId:w8.edit_client_id,startedAt:w8.edit_started_at,lastActivityAt:w8.edit_activity});z8.push({entity:h6,mutationApi:o8,pk:k8})}return z8},g7=async(E,u,{id:y,clientId:Q})=>{let d=O4(y);Y8.factory(!d,t.validation,`Invalid ID: ${y}`,"INVALID_ID");let $8=K4(),W8=new Date(Date.now()-PW).toISOString(),z8=await E.selectFrom("entities").select("id").where("store_id","=",Y).where("type_code","=",d.typeCode).where("seq","=",d.seq).where("deleted_at","is",null).executeTakeFirst();Y8.factory(!z8,t.notFound,`Entity not found: ${y}`,"ENTITY_NOT_FOUND");let w8=z8.id,k8=await E.selectFrom("document_edit_state").selectAll().where("entity_id","=",w8).executeTakeFirst();if(k8)if(k8.client_id===Q)return await E.updateTable("document_edit_state").set({started_at:$8,last_activity_at:$8}).where("entity_id","=",w8).execute(),{success:!0};else if(k8.last_activity_at<W8)return await E.updateTable("document_edit_state").set({client_id:Q,started_at:$8,last_activity_at:$8}).where("entity_id","=",w8).execute(),{success:!0};else return{success:!1,meta:{lockedBy:k8.client_id,lockedSince:k8.started_at,timeoutSeconds:PW/1000}};else return await E.insertInto("document_edit_state").values({entity_id:w8,client_id:Q,started_at:$8,last_activity_at:$8}).execute(),{success:!0}},tK=async(E,u,{id:y,clientId:Q})=>{let d=O4(y);if(!d)return!1;let $8=await E.selectFrom("entities").select("id").where("store_id","=",Y).where("type_code","=",d.typeCode).where("seq","=",d.seq).executeTakeFirst();if(!$8)return!1;return((await E.updateTable("document_edit_state").set({last_activity_at:K4()}).where("entity_id","=",$8.id).where("client_id","=",Q).execute())[0]?.numUpdatedRows||0)>0},c=Object.freeze({...H,getCodes:O,getType:w,getCode:X,getPk:T,toJSON:G,createFolder:D,readFolder:m,updateFolder:b,deleteFolder:h,isDuplicateNameInParent:L,findFolderByName:B,listFolderContents:i,getFolderByPath:X8,readRootFolderForType:N8,createContent:r,readContent:a,updateContent:s,deleteContent:K8,saveDraft:P8,readDraft:A8,publishContent:H8,discardDraft:O8,readVersion:A6,getVersions:E6,findContentByName:$1,listContent:y3,createFieldDefinition:h8,readFieldDefinition:c8,readDefaultFieldDefinition:I,findFieldDefinitionByName:E8,resolveFieldDefinition:g8,getFieldDefinitionsForOwner:t8,deleteFieldDefinition:v4,setFieldValue:g3,deleteFieldValue:v8,setEditState:g7,clearEditState:async(E,u,{id:y})=>{let Q=O4(y);Y8.factory(!Q,t.validation,`Invalid ID: ${y}`,"INVALID_ID");let d=await E.selectFrom("entities").select("id").where("store_id","=",Y).where("type_code","=",Q.typeCode).where("seq","=",Q.seq).executeTakeFirst();Y8.factory(!d,t.notFound,`Entity not found: ${y}`,"ENTITY_NOT_FOUND"),await E.deleteFrom("document_edit_state").where("entity_id","=",d.id).execute()},getEditState:async(E,u,{id:y})=>{let Q=O4(y);if(!Q)return null;let d=await E.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","=",Q.typeCode).where("e.seq","=",Q.seq).executeTakeFirst();if(!d)return null;return{clientId:d.client_id,startedAt:d.started_at,lastActivityAt:d.last_activity_at}}}),o=Object.freeze({...Z});return{store:c,mutationApi:o}},uP8=Object.freeze({create:XH6});var TH6=({inner:$,folderCache:K,contentCache:q,fieldDefinitionCache:Y})=>{let z=async(r,a,s,K8)=>{let P8=await $.createFolder(r,a,s),{entity:H8,mutationApi:O8,pk:A8}=P8;return K8(()=>{K.set(H8.getObjectId(),l6.create(H8,O8,A8))}),H8},P=async(r,a,{id:s})=>{let K8=K.get(s);if(K8)return K8.getEntity();let P8=await $.readFolder(r,a,{id:s});if(!P8)return null;let{entity:H8,mutationApi:O8,pk:A8}=P8;return K.set(s,l6.create(H8,O8,A8)),H8},J=async(r,a,s,K8)=>{let{id:P8}=s,H8=K.get(P8),O8=await $.updateFolder(r,a,s),A8=s.name!==void 0&&s.name!==O8.oldValues.name||s.parentId!==void 0&&s.parentId!==O8.oldValues.parentId;return K8(()=>{if(H8){let E6=H8.getMutationApi();if(s.name!==void 0)E6.setName(s.name);if(s.parentId!==void 0)E6.setParentId(s.parentId);E6.setUpdatedAt(O8.entity.getUpdatedAt()),E6.setPath(O8.entity.getPath())}else{let{entity:E6,mutationApi:$1,pk:y3}=O8;K.set(P8,l6.create(E6,$1,y3))}if(A8){let $1=O8.oldValues.path+"/";for(let[y3,g7]of K.entries())if(g7.getEntity().getPath().startsWith($1))K.remove(y3)}}),{entity:H8?H8.getEntity():O8.entity,oldValues:O8.oldValues}},W=async(r,a,{id:s},K8)=>{let P8=K.get(s),H8=P8?P8.getEntity().getPath():null,O8=await $.deleteFolder(r,a,{id:s});return K8(()=>{K.remove(s);for(let A8 of O8.descendantIds||[])K.remove(A8)}),{...O8,path:H8}},H=async(r,a,s)=>{let K8=await $.listFolderContents(r,a,s);for(let P8 of K8)K.set(P8.entity.getObjectId(),l6.create(P8.entity,P8.mutationApi,P8.pk));return K8.map((P8)=>P8.entity)},Z=async(r,a,s)=>{let K8=await $.getFolderByPath(r,a,s);if(!K8)return null;let{entity:P8,mutationApi:H8,pk:O8}=K8;return K.set(P8.getObjectId(),l6.create(P8,H8,O8)),P8},O=async(r,a,s,K8)=>{let P8=await $.findFolderByName(r,a,s,K8);if(!P8)return null;let{entity:H8,mutationApi:O8,pk:A8}=P8;return K.set(H8.getObjectId(),l6.create(H8,O8,A8)),H8},w=async(r,a,s)=>{let K8=await $.readRootFolderForType(r,a,s);if(!K8)return null;let{entity:P8,mutationApi:H8,pk:O8}=K8;return K.set(P8.getObjectId(),l6.create(P8,H8,O8)),P8},X=async(r,a,s,K8,P8)=>{return $.isDuplicateNameInParent(r,a,s,K8,P8)},T=async(r,a,s,K8)=>{let P8=await $.createContent(r,a,s),{entity:H8,mutationApi:O8,pk:A8}=P8;return K8(()=>{q.set(H8.getObjectId(),l6.create(H8,O8,A8))}),H8},G=async(r,a,{id:s})=>{let K8=q.get(s);if(K8)return K8.getEntity();let P8=await $.readContent(r,a,{id:s});if(!P8)return null;let{entity:H8,mutationApi:O8,pk:A8}=P8;return q.set(s,l6.create(H8,O8,A8)),H8},v=async(r,a,s,K8)=>{let{id:P8}=s,H8=q.get(P8),O8=await $.updateContent(r,a,s);return K8(()=>{if(H8){let A8=H8.getMutationApi();if(s.name!==void 0)A8.setName(s.name);if(s.parentId!==void 0)A8.setParentId(s.parentId);A8.setUpdatedAt(O8.entity.getUpdatedAt()),A8.setPath(O8.entity.getPath())}else{let{entity:A8,mutationApi:A6,pk:E6}=O8;q.set(P8,l6.create(A8,A6,E6))}}),H8?H8.getEntity():O8.entity},f=async(r,a,{id:s},K8)=>{let P8=q.get(s),H8=P8?P8.getEntity().getPath():null,O8=await $.deleteContent(r,a,{id:s});return K8(()=>{q.remove(s)}),{...O8,path:H8}},A=async(r,a,s,K8)=>{let{id:P8}=s,H8=q.get(P8),O8=await $.saveDraft(r,a,s);K8(()=>{if(H8){let A6=H8.getMutationApi();A6.setDraftContent(O8.entity.getDraftContent()),A6.setHasDraft(O8.entity.hasDraftContent()),A6.setUpdatedAt(O8.entity.getUpdatedAt())}else{let{entity:A6,mutationApi:E6,pk:$1}=O8;q.set(P8,l6.create(A6,E6,$1))}});let A8=H8?H8.getEntity():O8.entity;if(O8.lockLost!==void 0)return{entity:A8,lockLost:O8.lockLost};return A8},C=async(r,a,s,K8)=>{let{id:P8}=s,H8=q.get(P8),O8=await $.publishContent(r,a,s);if(H8){let A8=H8.getMutationApi();return A8.setPublishedVersionNumber(O8.entity.getPublishedVersionNumber()),A8.setPublishedContent(O8.entity.getPublishedContent()),A8.setDraftContent(null),A8.setHasDraft(!1),A8.setUpdatedAt(O8.entity.getUpdatedAt()),H8.getEntity()}else return K8(()=>{let{entity:A8,mutationApi:A6,pk:E6}=O8;q.set(P8,l6.create(A8,A6,E6))}),O8.entity},V=async(r,a,s,K8)=>{let{id:P8}=s,H8=q.get(P8),O8=await $.discardDraft(r,a,s);return K8(()=>{if(H8){let A8=H8.getMutationApi();A8.setDraftContent(null),A8.setHasDraft(!1),A8.setUpdatedAt(O8.entity.getUpdatedAt())}else{let{entity:A8,mutationApi:A6,pk:E6}=O8;q.set(P8,l6.create(A8,A6,E6))}}),H8?H8.getEntity():O8.entity},M=async(r,a,s)=>{return $.readDraft(r,a,s)},R=async(r,a,s)=>{return $.readVersion(r,a,s)},I=async(r,a,s)=>{return $.getVersions(r,a,s)},D=async(r,a,s,K8,P8)=>{let H8=await $.findContentByName(r,a,s,K8,P8);if(!H8)return null;let{entity:O8,mutationApi:A8,pk:A6}=H8;return q.set(O8.getObjectId(),l6.create(O8,A8,A6)),O8},m=async(r,a,s)=>{let K8=await $.listContent(r,a,s);for(let P8 of K8)q.set(P8.entity.getObjectId(),l6.create(P8.entity,P8.mutationApi,P8.pk));return K8.map((P8)=>P8.entity)},b=async(r,a,s,K8)=>{let{id:P8}=s,H8=await $.setEditState(r,a,s);return K8(()=>{q.remove(P8)}),H8},h=async(r,a,s)=>{return $.getEditState(r,a,s)},L=async(r,a,s,K8)=>{let{id:P8}=s;await $.clearEditState(r,a,s),K8(()=>{q.remove(P8)})},B=async(r,a,s,K8)=>{let P8=await $.createFieldDefinition(r,a,s),{entity:H8,mutationApi:O8,pk:A8}=P8;return K8(()=>{Y.set(H8.getObjectId(),l6.create(H8,O8,A8))}),H8},i=async(r,a,{id:s})=>{let K8=Y.get(s);if(K8)return K8.getEntity();let P8=await $.readFieldDefinition(r,a,{id:s});if(!P8)return null;let{entity:H8,mutationApi:O8,pk:A8}=P8;return Y.set(s,l6.create(H8,O8,A8)),H8},X8=async(r,a,s,K8)=>{let P8=await $.findFieldDefinitionByName(r,a,s,K8);if(!P8)return null;let{entity:H8,mutationApi:O8,pk:A8}=P8;return Y.set(H8.getObjectId(),l6.create(H8,O8,A8)),H8},N8=async(r,a,s)=>{let K8=await $.getFieldDefinitionsForOwner(r,a,s);for(let P8 of K8)Y.set(P8.entity.getObjectId(),l6.create(P8.entity,P8.mutationApi,P8.pk));return K8.map((P8)=>P8.entity)},h8=async(r,a)=>{let s=`${$.getCode()}n1`,K8=Y.get(s);if(K8)return K8.getEntity();let P8=await $.readDefaultFieldDefinition(r,a),{entity:H8,mutationApi:O8,pk:A8}=P8;return Y.set(H8.getObjectId(),l6.create(H8,O8,A8)),H8},c8=async(r,a,s)=>{let K8=await $.resolveFieldDefinition(r,a,s),{entity:P8,mutationApi:H8,pk:O8}=K8;return Y.set(P8.getObjectId(),l6.create(P8,H8,O8)),P8},E8=async(r,a,{id:s},K8)=>{let P8=await $.deleteFieldDefinition(r,a,{id:s});return K8(()=>{Y.remove(s)}),P8},g8=async(r,a,s,K8)=>{let{entityId:P8}=s,H8=await $.setFieldValue(r,a,s);return K8(()=>{let O8=K.get(P8)||q.get(P8);if(O8){let A8=O8.getMutationApi(),A6=H8.entity.getField(H8.fieldName);A8.setField(H8.fieldName,A6)}}),H8.entity},t8=async(r,a,s)=>{return $.getFieldValue(r,a,s)},v4=async(r,a,s,K8)=>{let{entityId:P8}=s,H8=await $.deleteFieldValue(r,a,s);K8(()=>{let O8=K.get(P8)||q.get(P8);if(O8)O8.getMutationApi().removeField(H8.fieldName)})},g3=(r)=>{K.remove(r)};return Object.freeze({getObjectId:$.getObjectId,getName:$.getName,getCreatedAt:$.getCreatedAt,getUpdatedAt:$.getUpdatedAt,getCodes:$.getCodes,getType:$.getType,getCode:$.getCode,getPk:$.getPk,toJSON:$.toJSON,createFolder:z,readFolder:P,updateFolder:J,deleteFolder:W,listFolderContents:H,getFolderByPath:Z,findFolderByName:O,readRootFolderForType:w,isDuplicateNameInParent:X,createContent:T,readContent:G,updateContent:v,deleteContent:f,saveDraft:A,readDraft:M,publishContent:C,discardDraft:V,readVersion:R,getVersions:I,findContentByName:D,listContent:m,setEditState:b,getEditState:h,clearEditState:L,createFieldDefinition:B,readFieldDefinition:i,findFieldDefinitionByName:X8,getFieldDefinitionsForOwner:N8,readDefaultFieldDefinition:h8,resolveFieldDefinition:c8,deleteFieldDefinition:E8,setFieldValue:g8,getFieldValue:t8,deleteFieldValue:v4,evictFolder:g3})},mP8=Object.freeze({create:TH6});var jH6=($)=>{let K=new Map;return $.forEach((P)=>K.set(P,new Set)),Object.freeze({subscribe:(P,J)=>{return K.get(P)?.add(J),()=>K.get(P)?.delete(J)},subscribeAll:(P)=>{let J=[];for(let[W,H]of K){let Z=`on${W.charAt(0).toUpperCase()}${W.slice(1)}`;if(P[Z])H.add(P[Z]),J.push(()=>H.delete(P[Z]))}return()=>J.forEach((W)=>W())},notify:(P,J)=>{K.get(P)?.forEach((W)=>{try{W(J)}catch(H){console.error(`Error in ${P} handler:`,H)}})}})},pP8=Object.freeze({create:jH6});var T6=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 vH6=({inner:$,storeCode:K})=>{let q=pP8.create([T6.FOLDER_CREATED,T6.FOLDER_RENAMED,T6.FOLDER_MOVED,T6.FOLDER_DELETED,T6.DOCUMENT_CREATED,T6.DOCUMENT_RENAMED,T6.DOCUMENT_MOVED,T6.DOCUMENT_DELETED,T6.DOCUMENT_PUBLISHED,T6.DRAFT_SAVED,T6.DRAFT_DISCARDED,T6.TEMPLATE_CREATED,T6.TEMPLATE_RENAMED,T6.TEMPLATE_MOVED,T6.TEMPLATE_DELETED,T6.TEMPLATE_PUBLISHED,T6.TEMPLATE_DRAFT_SAVED,T6.TEMPLATE_DRAFT_DISCARDED]),Y=async(v8,r,a)=>{let s=await $.readFolder(v8,r,{id:a});if(!s)return null;let K8=await v8.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","=",a).executeTakeFirst();if(K8?.entity_type_code==="f"&&K8?.entity_type_subtype==="root_d")return"d";if(K8?.entity_type_code==="f"&&K8?.entity_type_subtype==="root_t")return"t";let P8=await $.readRootFolderForType(v8,r,"d"),H8=await $.readRootFolderForType(v8,r,"t"),O8=s;while(O8&&O8.getParentId()!==null){let A8=await $.readFolder(v8,r,{id:O8.getParentId()});if(!A8)break;O8=A8}if(O8&&O8.getObjectId()===P8?.getObjectId())return"d";else if(O8&&O8.getObjectId()===H8?.getObjectId())return"t";return null},z=async(v8,r,a,s)=>{let{parentId:K8,subtype:P8}=a,H8=await $.createFolder(v8,r,a,s),O8=null;if(P8==="root_d")O8="d";else if(P8==="root_t")O8="t";else{let A8=await $.readRootFolderForType(v8,r,"d"),A6=await $.readRootFolderForType(v8,r,"t");if(K8===A8?.getObjectId())O8="d";else if(K8===A6?.getObjectId())O8="t";else if(K8){let E6=await $.readFolder(v8,r,{id:K8});if(E6){let $1=E6;while($1&&$1.getParentId()!==null){let y3=await $.readFolder(v8,r,{id:$1.getParentId()});if(!y3)break;$1=y3}if($1&&$1.getObjectId()===A8?.getObjectId())O8="d";else if($1&&$1.getObjectId()===A6?.getObjectId())O8="t"}}}return s(()=>{q.notify(T6.FOLDER_CREATED,{id:H8.getObjectId(),storeCode:K,name:H8.getName(),path:H8.getPath(),parentFolderId:K8,contentType:O8})}),H8},P=async(v8,r,a)=>{return $.readFolder(v8,r,a)},J=async(v8,r,a,s)=>{let{id:K8,name:P8,parentId:H8}=a,O8=await $.updateFolder(v8,r,a,s),A8=O8.entity,A6=O8.oldValues.name,E6=O8.oldValues.parentId,$1=await Y(v8,r,K8);if(P8!==void 0&&P8!==A6)s(()=>{q.notify(T6.FOLDER_RENAMED,{id:K8,storeCode:K,parentFolderId:A8.getParentId(),contentType:$1,oldName:A6,newName:P8,path:A8.getPath()})});if(H8!==void 0&&H8!==E6)s(()=>{q.notify(T6.FOLDER_MOVED,{id:K8,storeCode:K,contentType:$1,oldParentFolderId:E6,parentFolderId:H8,path:A8.getPath()})});return A8},W=async(v8,r,a,s)=>{let{id:K8}=a,H8=(await $.readFolder(v8,r,{id:K8}))?.getParentId(),O8=await Y(v8,r,K8),A8=await $.deleteFolder(v8,r,a,s);return s(()=>{q.notify(T6.FOLDER_DELETED,{id:K8,storeCode:K,parentFolderId:H8,contentType:O8,path:A8.path,descendantCount:A8.descendantIds?.length||0})}),A8},H=async(v8,r,a)=>{return $.listFolderContents(v8,r,a)},Z=async(v8,r,a)=>{return $.getFolderByPath(v8,r,a)},O=async(v8,r,a,s)=>{return $.findFolderByName(v8,r,a,s)},w=async(v8,r,a)=>{return $.readRootFolderForType(v8,r,a)},X=async(v8,r,a,s,K8)=>{return $.isDuplicateNameInParent(v8,r,a,s,K8)},T=async(v8,r,a,s)=>{let{type:K8,parentId:P8}=a,H8=await $.createContent(v8,r,a,s),O8=K8==="t"?T6.TEMPLATE_CREATED:T6.DOCUMENT_CREATED;return s(()=>{q.notify(O8,{storeCode:K,id:H8.getObjectId(),type:K8,parentFolderId:P8,name:H8.getName(),path:H8.getPath()})}),H8},G=async(v8,r,a)=>{return $.readContent(v8,r,a)},v=async(v8,r,a,s)=>{let{id:K8,name:P8,parentId:H8}=a,O8=m1.getTypeFromId(K8),A8=await $.readContent(v8,r,{id:K8}),A6=A8?.getName(),E6=A8?.getParentId(),$1=await $.updateContent(v8,r,a,s),y3=O8==="t"?T6.TEMPLATE_RENAMED:T6.DOCUMENT_RENAMED,g7=O8==="t"?T6.TEMPLATE_MOVED:T6.DOCUMENT_MOVED;if(P8!==void 0&&P8!==A6)s(()=>{q.notify(y3,{storeCode:K,id:K8,type:O8,parentFolderId:$1.getParentId(),oldName:A6,newName:P8,path:$1.getPath()})});if(H8!==void 0&&H8!==E6)s(()=>{q.notify(g7,{storeCode:K,id:K8,type:O8,oldParentFolderId:E6,parentFolderId:H8,path:$1.getPath()})});return $1},f=async(v8,r,a,s)=>{let{id:K8}=a,P8=m1.getTypeFromId(K8),O8=(await $.readContent(v8,r,{id:K8}))?.getParentId(),A8=await $.deleteContent(v8,r,a,s),A6=P8==="t"?T6.TEMPLATE_DELETED:T6.DOCUMENT_DELETED;return s(()=>{q.notify(A6,{storeCode:K,id:K8,type:P8,parentFolderId:O8,path:A8.path})}),A8},A=async(v8,r,a,s)=>{let{id:K8}=a,P8=m1.getTypeFromId(K8),O8=(await $.readContent(v8,r,{id:K8}))?.getParentId(),A8=await $.saveDraft(v8,r,a,s),A6=P8==="t"?T6.TEMPLATE_DRAFT_SAVED:T6.DRAFT_SAVED;return s(()=>{let E6=A8.lockLost!==void 0?A8.entity:A8;q.notify(A6,{storeCode:K,id:K8,type:P8,parentFolderId:O8,updatedAt:E6?E6.getUpdatedAt():null,lockLost:A8.lockLost})}),A8},C=async(v8,r,a)=>{return $.readDraft(v8,r,a)},V=async(v8,r,a,s)=>{let{id:K8}=a,P8=m1.getTypeFromId(K8),H8=await $.publishContent(v8,r,a,s),O8=P8==="t"?T6.TEMPLATE_PUBLISHED:T6.DOCUMENT_PUBLISHED;return s(()=>{q.notify(O8,{storeCode:K,id:K8,type:P8,parentFolderId:H8.getParentId(),versionNumber:H8.getPublishedVersionNumber()})}),{entityId:K8,versionNumber:H8.getPublishedVersionNumber(),content:H8.getPublishedContent(),publishedAt:H8.getUpdatedAt()}},M=async(v8,r,a,s)=>{let{id:K8}=a,P8=m1.getTypeFromId(K8),H8=await $.discardDraft(v8,r,a,s),O8=P8==="t"?T6.TEMPLATE_DRAFT_DISCARDED:T6.DRAFT_DISCARDED;return s(()=>{q.notify(O8,{storeCode:K,id:K8})}),H8},R=async(v8,r,a)=>{return $.readVersion(v8,r,a)},I=async(v8,r,a)=>{return $.getVersions(v8,r,a)},D=async(v8,r,a,s,K8)=>{return $.findContentByName(v8,r,a,s,K8)},m=async(v8,r,a)=>{return $.listContent(v8,r,a)},b=async(v8,r,a,s)=>{return $.setEditState(v8,r,a,s)},h=async(v8,r,a)=>{return $.getEditState(v8,r,a)},L=async(v8,r,a,s)=>{return $.clearEditState(v8,r,a,s)},B=async(v8,r,a,s)=>{return $.createFieldDefinition(v8,r,a,s)},i=async(v8,r,a)=>{return $.readFieldDefinition(v8,r,a)},X8=async(v8,r,a,s)=>{return $.findFieldDefinitionByName(v8,r,a,s)},N8=async(v8,r,a)=>{return $.getFieldDefinitionsForOwner(v8,r,a)},h8=async(v8,r)=>{return $.readDefaultFieldDefinition(v8,r)},c8=async(v8,r,a)=>{return $.resolveFieldDefinition(v8,r,a)},E8=async(v8,r,a,s)=>{return $.deleteFieldDefinition(v8,r,a,s)},g8=async(v8,r,a,s)=>{return $.setFieldValue(v8,r,a,s)},t8=async(v8,r,a)=>{return $.getFieldValue(v8,r,a)},v4=async(v8,r,a,s)=>{return $.deleteFieldValue(v8,r,a,s)};return Object.freeze({getObjectId:$.getObjectId,getName:$.getName,getCreatedAt:$.getCreatedAt,getUpdatedAt:$.getUpdatedAt,getCodes:$.getCodes,getType:$.getType,getCode:$.getCode,getPk:$.getPk,toJSON:$.toJSON,createFolder:z,readFolder:P,updateFolder:J,deleteFolder:W,listFolderContents:H,getFolderByPath:Z,findFolderByName:O,readRootFolderForType:w,isDuplicateNameInParent:X,createContent:T,readContent:G,updateContent:v,deleteContent:f,saveDraft:A,readDraft:C,publishContent:V,discardDraft:M,readVersion:R,getVersions:I,findContentByName:D,listContent:m,setEditState:b,getEditState:h,clearEditState:L,createFieldDefinition:B,readFieldDefinition:i,findFieldDefinitionByName:X8,getFieldDefinitionsForOwner:N8,readDefaultFieldDefinition:h8,resolveFieldDefinition:c8,deleteFieldDefinition:E8,setFieldValue:g8,getFieldValue:t8,deleteFieldValue:v4,evictFolder:$.evictFolder,subscribe:q.subscribe,subscribeAll:q.subscribeAll})},cP8=Object.freeze({create:vH6});var GH6=($)=>{let{id:K,code:q,name:Y,pk:z,createdAt:P,updatedAt:J}=$,W=jf.create(),H=jf.create(),Z=jf.create(),{store:O,mutationApi:w}=uP8.create({id:K,code:q,name:Y,pk:z,createdAt:P,updatedAt:J,folderCache:W}),X=mP8.create({inner:O,folderCache:W,contentCache:H,fieldDefinitionCache:Z});return{store:cP8.create({inner:X,storeCode:q}),mutationApi:w}},BP8=Object.freeze({create:GH6});R4();var _H6=({id:$,name:K,createdAt:q,updatedAt:Y,children:z=[]})=>{let P=[...z],J=new Map,{entityFns:W,mutationFns:H}=K5.create({id:$,name:K,createdAt:q,updatedAt:Y}),Z=()=>{J.clear();for(let V8 of P){let R8=V8.getCodes();for(let c of R8)J.set(c,V8)}};Z();let O=()=>"demux",w=()=>P.map((V8)=>V8.getObjectId()),X=()=>[...P],T=()=>{return new Set(J.keys())},G=()=>({id:$,name:K,createdAt:q,updatedAt:Y,type:"demux",childIds:w()}),v=(V8)=>{P.push(V8),Z()},f=(V8)=>{return J.get(V8)??null},A=async(V8,R8,{store:c,storeCode:o,parentId:E,name:u,subtype:y},Q)=>{let d=c??o;Y8.factory(!d,t.validation,"store parameter is required","MISSING_STORE_CODE");let $8=f(d);return Y8.factory(!$8,t.notFound,`No child store with code: ${d}`,"STORE_NOT_FOUND"),$8.createFolder(V8,R8,{storeCode:d,parentId:E,name:u,subtype:y},Q)},C=async(V8,R8,{id:c})=>{let o=c?.[0],E=f(o);if(!E)return null;return E.readFolder(V8,R8,{id:c})},g7=Object.freeze({...W,getType:O,getCodes:T,getChildIds:w,getChildren:X,toJSON:G,createFolder:A,readFolder:C,updateFolder:async(V8,R8,{id:c,name:o,parentId:E},u)=>{let y=c?.[0],Q=f(y);return Y8.factory(!Q,t.notFound,`No child store with code: ${y}`,"STORE_NOT_FOUND"),Q.updateFolder(V8,R8,{id:c,name:o,parentId:E},u)},deleteFolder:async(V8,R8,{id:c},o)=>{let E=c?.[0],u=f(E);return Y8.factory(!u,t.notFound,`No child store with code: ${E}`,"STORE_NOT_FOUND"),u.deleteFolder(V8,R8,{id:c},o)},evictFolder:(V8)=>{let R8=V8?.[0],c=f(R8);if(c)c.evictFolder(V8)},getFolder:async(V8,R8,{id:c})=>{return C(V8,R8,{id:c})},listFolderContents:async(V8,R8,{folderId:c,store:o,storeCode:E,type:u})=>{let y;if(c!==null&&c!==void 0)y=c[0];else{let $8=o??E;Y8.factory(!$8,t.validation,"store required when folderId is null","STORE_CODE_REQUIRED"),y=$8}let Q=f(y);Y8.factory(!Q,t.notFound,`No child store with code: ${y}`,"STORE_NOT_FOUND");let d={...R8,storeCode:y};return Q.listFolderContents(V8,d,{folderId:c,type:u})},getFolderByPath:async(V8,R8,{path:c,type:o,store:E,storeCode:u})=>{let y=E??u;Y8.factory(!y,t.validation,"store required for getFolderByPath","STORE_CODE_REQUIRED");let Q=f(y);if(!Q)return null;let d={...R8,storeCode:y};return Q.getFolderByPath(V8,d,{path:c,type:o})},isDuplicateNameInParent:async(V8,R8,c,o,E=null)=>{let u;if(c)u=c[0];else{let Q=P[0];if(!Q)Y8.factory(!0,t.notFound,"No child stores available","STORE_NOT_FOUND");u=[...Q.getCodes()][0]}let y=f(u);return Y8.factory(!y,t.notFound,`No child store with code: ${u}`,"STORE_NOT_FOUND"),y.isDuplicateNameInParent(V8,R8,c,o,E)},findFolderByName:async(V8,R8,c,o)=>{let E=c[0],u=f(E);if(!u)return null;return u.findFolderByName(V8,R8,c,o)},readRootFolderForType:async(V8,R8,c,o)=>{let E=f(o);return Y8.factory(!E,t.notFound,`No child store with code: ${o}`,"STORE_NOT_FOUND"),E.readRootFolderForType(V8,R8,c,o)},createFieldDefinition:async(V8,R8,{storeCode:c,ownerEntityId:o,name:E,label:u,description:y,primitiveType:Q,required:d,multiplicity:$8,isSystem:W8},z8)=>{let w8=f(c);return Y8.factory(!w8,t.notFound,`No child store with code: ${c}`,"STORE_NOT_FOUND"),w8.createFieldDefinition(V8,R8,{storeCode:c,ownerEntityId:o,name:E,label:u,description:y,primitiveType:Q,required:d,multiplicity:$8,isSystem:W8},z8)},readFieldDefinition:async(V8,R8,{id:c})=>{let o=c?.[0],E=f(o);if(!E)return null;return E.readFieldDefinition(V8,R8,{id:c})},readDefaultFieldDefinition:async(V8,R8,c)=>{let o=f(c);return Y8.factory(!o,t.notFound,`No child store with code: ${c}`,"STORE_NOT_FOUND"),o.readDefaultFieldDefinition(V8,R8)},getFieldDefinitionsForOwner:async(V8,R8,{storeCode:c,ownerEntityPk:o,includeSystem:E})=>{let u=f(c);return Y8.factory(!u,t.notFound,`No child store with code: ${c}`,"STORE_NOT_FOUND"),u.getFieldDefinitionsForOwner(V8,R8,{ownerEntityPk:o,includeSystem:E})},deleteFieldDefinition:async(V8,R8,{id:c},o)=>{let E=c?.[0],u=f(E);return Y8.factory(!u,t.notFound,`No child store with code: ${E}`,"STORE_NOT_FOUND"),u.deleteFieldDefinition(V8,R8,{id:c},o)},setFieldValue:async(V8,R8,{entityId:c,fieldDefinitionId:o,fieldName:E,value:u,values:y},Q)=>{let d=c?.[0],$8=f(d);return Y8.factory(!$8,t.notFound,`No child store with code: ${d}`,"STORE_NOT_FOUND"),$8.setFieldValue(V8,R8,{entityId:c,fieldDefinitionId:o,fieldName:E,value:u,values:y},Q)},deleteFieldValue:async(V8,R8,{entityId:c,fieldDefinitionId:o,fieldName:E},u)=>{let y=c?.[0],Q=f(y);return Y8.factory(!Q,t.notFound,`No child store with code: ${y}`,"STORE_NOT_FOUND"),Q.deleteFieldValue(V8,R8,{entityId:c,fieldDefinitionId:o,fieldName:E},u)},createContent:async(V8,R8,{storeCode:c,type:o,...E},u)=>{let y=f(c);return Y8.factory(!y,t.notFound,`No child store with code: ${c}`,"STORE_NOT_FOUND"),y.createContent(V8,R8,{type:o,storeCode:c,...E},u)},readContent:async(V8,R8,{id:c})=>{let o=c?.[0],E=f(o);if(!E)return null;return E.readContent(V8,R8,{id:c})},updateContent:async(V8,R8,{id:c,...o},E)=>{let u=c?.[0],y=f(u);return Y8.factory(!y,t.notFound,`No child store with code: ${u}`,"STORE_NOT_FOUND"),y.updateContent(V8,R8,{id:c,...o},E)},deleteContent:async(V8,R8,{id:c},o)=>{let E=c?.[0],u=f(E);return Y8.factory(!u,t.notFound,`No child store with code: ${E}`,"STORE_NOT_FOUND"),u.deleteContent(V8,R8,{id:c},o)},saveDraft:async(V8,R8,{id:c,content:o,clientId:E},u)=>{let y=c?.[0],Q=f(y);return Y8.factory(!Q,t.notFound,`No child store with code: ${y}`,"STORE_NOT_FOUND"),Q.saveDraft(V8,R8,{id:c,content:o,clientId:E},u)},readDraft:async(V8,R8,{id:c})=>{let o=c?.[0],E=f(o);if(!E)return null;return E.readDraft(V8,R8,{id:c})},publishContent:async(V8,R8,{id:c},o)=>{let E=c?.[0],u=f(E);return Y8.factory(!u,t.notFound,`No child store with code: ${E}`,"STORE_NOT_FOUND"),u.publishContent(V8,R8,{id:c},o)},discardDraft:async(V8,R8,{id:c},o)=>{let E=c?.[0],u=f(E);return Y8.factory(!u,t.notFound,`No child store with code: ${E}`,"STORE_NOT_FOUND"),u.discardDraft(V8,R8,{id:c},o)},findContentByName:async(V8,R8,c,o,E)=>{let u=c?.[0],y=f(u);if(!y)return null;return y.findContentByName(V8,R8,c,o,E)},listContent:async(V8,R8,{parentId:c,storeCode:o,type:E})=>{let u,y;if(c)u=c[0],y=c;else{Y8.factory(!o,t.validation,"storeCode required when parentId is null","MISSING_STORE_CODE"),u=o;let d=f(u);Y8.factory(!d,t.notFound,`No child store with code: ${u}`,"STORE_NOT_FOUND");try{y=(await d.readRootFolderForType(V8,R8,E||"d",u)).getObjectId()}catch($8){y=null}}let Q=f(u);return Y8.factory(!Q,t.notFound,`No child store with code: ${u}`,"STORE_NOT_FOUND"),Q.listContent(V8,R8,{parentId:y,type:E})},setEditState:async(V8,R8,{id:c,clientId:o},E)=>{let u=c?.[0],y=f(u);return Y8.factory(!y,t.notFound,`No child store with code: ${u}`,"STORE_NOT_FOUND"),y.setEditState(V8,R8,{id:c,clientId:o},E)},clearEditState:async(V8,R8,{id:c},o)=>{let E=c?.[0],u=f(E);return Y8.factory(!u,t.notFound,`No child store with code: ${E}`,"STORE_NOT_FOUND"),u.clearEditState(V8,R8,{id:c},o)},getEditState:async(V8,R8,{id:c})=>{let o=c?.[0],E=f(o);if(!E)return null;return E.getEditState(V8,R8,{id:c})},readVersion:async(V8,R8,{id:c,versionNumber:o})=>{let E=c?.[0],u=f(E);if(!u)return null;return u.readVersion(V8,R8,{id:c,versionNumber:o})},getVersions:async(V8,R8,{id:c})=>{let o=c?.[0],E=f(o);if(!E)return[];return E.getVersions(V8,R8,{id:c})},subscribe:(V8,R8)=>{let c=P.map((o)=>o.subscribe(V8,R8));return()=>c.forEach((o)=>o())},subscribeAll:(V8)=>{let R8=P.map((c)=>c.subscribeAll(V8));return()=>R8.forEach((c)=>c())}}),tK=Object.freeze({...H,addChild:v});return{store:g7,mutationApi:tK}},UP8=Object.freeze({create:_H6});R4();var fX=($)=>{if(!$||$.length<2||$[0]!=="S")return null;let K=parseInt($.slice(1),10);return isNaN(K)?null:K},wx=($)=>$.object_id,Ox=($)=>{let K=wx($),q=$.id,{store:Y,mutationApi:z}=BP8.create({id:K,code:$.code,name:$.name,createdAt:$.created_at,updatedAt:$.updated_at,pk:q});return{store:Y,mutationApi:z,id:K,pk:q}},lP8=($,K)=>{let q=wx($),Y=$.id,{store:z,mutationApi:P}=UP8.create({id:q,name:$.name,createdAt:$.created_at,updatedAt:$.updated_at,children:K});return{store:z,mutationApi:P,id:q,pk:Y}},fH6=async($,K,q,Y,z)=>{let P=await uz.readEntityTypeId($,K,"n",null),J=await q5.nextSeq($,"store",q,"n"),W=`${Y}n${J}`,H=K4();await $.insertInto("field_definitions").values({store_id:q,object_id:W,entity_type_id:P,type_code:"n",seq:J,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()},AH6=()=>{let $=new Map,K=new Map,q=async(O,w,{code:X,name:T},G)=>{let v=K4(),f=await q5.nextSeq(O,"global",null,"s"),A=`S${f}`,C=await O.insertInto("stores").values({id:f,object_id:A,type:"local",code:X,name:T,created_at:v,updated_at:v}).returningAll().executeTakeFirstOrThrow(),{store:V,mutationApi:M,id:R,pk:I}=Ox(C);return await fH6(O,w,I,X,G),G(()=>{$.set(R,l6.create(V,M,I)),K.set(I,R)}),V},Y=async(O,w,{name:X},T)=>{let G=K4(),v=await q5.nextSeq(O,"global",null,"s"),f=`S${v}`,A=await O.insertInto("stores").values({id:v,object_id:f,type:"demux",code:null,name:X,created_at:G,updated_at:G}).returningAll().executeTakeFirstOrThrow(),{store:C,mutationApi:V,id:M,pk:R}=lP8(A,[]);return T(()=>{$.set(M,l6.create(C,V,R)),K.set(R,M)}),C},z=async(O,w,X)=>{let T=$.get(X);if(T)return T.getEntity();let G=fX(X);if(G===null)return null;let v=await O.selectFrom("stores").selectAll().where("id","=",G).executeTakeFirst();if(!v)return null;let f,A,C,V;if(v.type==="local"){let M=Ox(v);f=M.store,A=M.mutationApi,C=M.id,V=M.pk}else{let M=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(),R=[];for(let D of M){let m=await z(O,w,D.object_id);if(m)R.push(m)}let I=lP8(v,R);f=I.store,A=I.mutationApi,C=I.id,V=I.pk}return $.set(C,l6.create(f,A,V)),K.set(V,C),f};return Object.freeze({createLocalStore:q,createDemuxStore:Y,readStore:z,readSharedStore:async(O,w)=>{let X=await O.selectFrom("stores").selectAll().where("code","=","B").executeTakeFirstOrThrow(),T=wx(X),G=$.get(T);if(G)return G.getEntity();let{store:v,mutationApi:f,pk:A}=Ox(X);return $.set(T,l6.create(v,f,A)),K.set(A,T),v},readRootStoreForProject:async(O,w,X)=>{let T=X&&X.length>=2&&X[0]==="P"?parseInt(X.slice(1),10):null;Y8.factory(T===null||isNaN(T),t.validation,`Invalid project ID: ${X}`,"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 Y8.factory(!G,t.notFound,`Root store not found for project: ${X}`,"ROOT_STORE_NOT_FOUND"),await z(O,w,G.object_id)},addChildToDemux:async(O,w,{demuxId:X,childId:T},G)=>{let v=$.get(X),f=$.get(T),A,C;if(v)A=v.getPk();else{let V=fX(X);Y8.factory(V===null,t.validation,`Invalid demux store ID: ${X}`,"INVALID_ID");let M=await O.selectFrom("stores").select("id").where("id","=",V).executeTakeFirst();Y8.factory(!M,t.notFound,`Demux store not found: ${X}`,"STORE_NOT_FOUND"),A=M.id}if(f)C=f.getPk();else{let V=fX(T);Y8.factory(V===null,t.validation,`Invalid child store ID: ${T}`,"INVALID_ID");let M=await O.selectFrom("stores").select("id").where("id","=",V).executeTakeFirst();Y8.factory(!M,t.notFound,`Child store not found: ${T}`,"STORE_NOT_FOUND"),C=M.id}await O.insertInto("store_children").values({parent_store_id:A,child_store_id:C}).execute(),G(()=>{let V=$.get(X),M=$.get(T);if(V&&M)V.getMutationApi().addChild(M.getEntity())})},addStoresToProject:async(O,w,{projectId:X,rootStoreId:T,storeIds:G})=>{let v=X&&X.length>=2&&X[0]==="P"?parseInt(X.slice(1),10):null;Y8.factory(v===null||isNaN(v),t.validation,`Invalid project ID: ${X}`,"INVALID_PROJECT_ID");let f=await O.selectFrom("projects").select("id").where("id","=",v).executeTakeFirst();Y8.factory(!f,t.notFound,`Project not found: ${X}`,"PROJECT_NOT_FOUND");let A=f.id,C=$.get(T),V;if(C)V=C.getPk();else{let M=fX(T);Y8.factory(M===null,t.validation,`Invalid root store ID: ${T}`,"INVALID_ID");let R=await O.selectFrom("stores").select("id").where("id","=",M).executeTakeFirst();Y8.factory(!R,t.notFound,`Root store not found: ${T}`,"STORE_NOT_FOUND"),V=R.id}for(let M of G){let R=$.get(M),I;if(R)I=R.getPk();else{let D=fX(M);Y8.factory(D===null,t.validation,`Invalid store ID: ${M}`,"INVALID_ID");let m=await O.selectFrom("stores").select("id").where("id","=",D).executeTakeFirst();Y8.factory(!m,t.notFound,`Store not found: ${M}`,"STORE_NOT_FOUND"),I=m.id}await O.insertInto("project_stores").values({project_id:A,store_id:I,is_root:I===V?1:0}).execute()}},evictStore:(O)=>{let w=$.get(O);if(w)K.delete(w.getPk());$.delete(O)}})},FP8=Object.freeze({create:AH6});R4();R4();var VH6=({store:$})=>{let K=async(Z,O,w,X,T,G)=>{let v=w.split("/").filter((C)=>C.trim());Y8.factory(v.length===0,t.validation,"Path cannot be empty or contain only slashes","EMPTY_PATH");let f=await $.readRootFolderForType(Z,O,X,T);for(let C=0;C<v.length-1;C++){let V=HK.validateFolderName(v[C]),M=await $.findFolderByName(Z,O,f.getObjectId(),V);if(M)f=M;else f=await $.createFolder(Z,O,{storeCode:T,parentId:f.getObjectId(),name:V},G)}let A=HK.validateFolderName(v[v.length-1]);return{parentObjectId:f.getObjectId(),name:A}},q=async(Z,O,{store:w,path:X,type:T},G)=>{Y8.factory(!X||X==="/",t.validation,"Path cannot be empty","EMPTY_PATH"),Y8.factory(T!=="d"&&T!=="t",t.validation,'Type must be "d" or "t"',"INVALID_TYPE"),Y8.factory(!w,t.validation,"store is required","MISSING_STORE_CODE");let{parentObjectId:v,name:f}=await K(Z,O,X,T,w,G),A=await $.isDuplicateNameInParent(Z,O,v,f);return Y8.factory(A,t.conflict,`Folder "${f}" already exists in parent`,"DUPLICATE_NAME"),await $.createFolder(Z,O,{storeCode:w,parentId:v,name:f},G)},Y=async(Z,O,{id:w})=>{return await $.readFolder(Z,O,{id:w})};return Object.freeze({resolvePath:K,createFolder:q,readFolder:Y,renameFolder:async(Z,O,{id:w,name:X},T)=>{let G=await Y(Z,O,{id:w});Y8.factory(!G,t.notFound,`Folder not found: ${w}`,"FOLDER_NOT_FOUND"),Y8.factory(HK.isRootFolder(G),t.validation,"Cannot rename root folder","CANNOT_RENAME_ROOT");let v=HK.validateFolderName(X),f=await $.isDuplicateNameInParent(Z,O,G.getParentId(),v,w);return Y8.factory(f,t.conflict,`Folder "${v}" already exists in parent`,"DUPLICATE_NAME"),await $.updateFolder(Z,O,{id:w,name:v},T)},moveFolder:async(Z,O,{id:w,parentId:X},T)=>{let G=await Y(Z,O,{id:w});Y8.factory(!G,t.notFound,`Folder not found: ${w}`,"FOLDER_NOT_FOUND"),Y8.factory(HK.isRootFolder(G),t.validation,"Cannot move root folder","CANNOT_MOVE_ROOT");let v=await Y(Z,O,{id:X});Y8.factory(!v,t.notFound,`Parent folder not found: ${X}`,"PARENT_NOT_FOUND"),Y8.factory(!w||w.length<1,t.validation,"Invalid folder ID format","INVALID_ID_FORMAT"),Y8.factory(!X||X.length<1,t.validation,"Invalid parent ID format","INVALID_PARENT_ID_FORMAT");let f=w[0],A=X[0];Y8.factory(f!==A,t.validation,"Cannot move folders between stores","CROSS_STORE_MOVE"),Y8.factory(w===X,t.validation,"Cannot move folder into itself","SELF_MOVE");let C=X;while(C!==null){Y8.factory(C===w,t.validation,"Cannot move folder into its own descendant","CYCLE_DETECTED");let M=await $.readFolder(Z,O,{id:C});if(!M)break;C=M.getParentId()}let V=await $.isDuplicateNameInParent(Z,O,X,G.getName(),w);return Y8.factory(V,t.conflict,`Folder "${G.getName()}" already exists in target parent`,"DUPLICATE_NAME"),await $.updateFolder(Z,O,{id:w,parentId:X},T)},deleteFolder:async(Z,O,{id:w},X)=>{let T=await Y(Z,O,{id:w});return Y8.factory(!T,t.notFound,`Folder not found: ${w}`,"FOLDER_NOT_FOUND"),Y8.factory(HK.isRootFolder(T),t.validation,"Cannot delete root folder","CANNOT_DELETE_ROOT"),await $.deleteFolder(Z,O,{id:w},X)},getFolderByPath:async(Z,O,{path:w,type:X,storeCode:T})=>{return await $.getFolderByPath(Z,O,{path:w,type:X,storeCode:T})},listFolderContents:async(Z,O,{folderId:w,type:X,storeCode:T})=>{return await $.listFolderContents(Z,O,{folderId:w,type:X,storeCode:T})}})},iP8=Object.freeze({create:VH6});R4();var kH6=({store:$})=>{let K=async(W,H,{store:Z,ownerEntityId:O,name:w,label:X,description:T,primitiveType:G,required:v,multiplicity:f,isSystem:A=!1},C)=>{Y8.factory(!Z,t.validation,"store is required","MISSING_STORE_CODE"),Y8.factory(G!=="string"&&G!=="object_ref",t.validation,`Invalid primitiveType: ${G}. Must be 'string' or 'object_ref'`,"INVALID_PRIMITIVE_TYPE"),Y8.factory(f!=="single"&&f!=="multi",t.validation,`Invalid multiplicity: ${f}. Must be 'single' or 'multi'`,"INVALID_MULTIPLICITY");let V=/^[a-zA-Z0-9_]+$/;return Y8.factory(!w||!V.test(w),t.validation,`Invalid name: ${w}. Must contain only alphanumeric characters and underscores`,"INVALID_NAME"),await $.createFieldDefinition(W,H,{storeCode:Z,ownerEntityId:O,name:w,label:X,description:T,primitiveType:G,required:v,multiplicity:f,isSystem:A},C)},q=async(W,H,{id:Z})=>{return Y8.factory(!Z||Z.length<3,t.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:w=!0})=>{Y8.factory(!Z,t.validation,"store is required","MISSING_STORE_CODE");let X=null;if(O)X=null;return await $.getFieldDefinitionsForOwner(W,H,{storeCode:Z,ownerEntityPk:X,includeSystem:w})},deleteFieldDefinition:async(W,H,{id:Z},O)=>{let w=await q(W,H,{id:Z});return Y8.factory(!w,t.notFound,`Field definition not found: ${Z}`,"DEFINITION_NOT_FOUND"),Y8.factory(w.getIsSystem(),t.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:w,value:X,values:T},G)=>{return Y8.factory(!Z,t.validation,"entityId is required","MISSING_ENTITY_ID"),Y8.factory(!O&&!w,t.validation,"Either fieldDefinitionId or fieldName must be provided","MISSING_FIELD_IDENTIFIER"),Y8.factory(X!==void 0&&T!==void 0,t.validation,"Cannot provide both value and values","AMBIGUOUS_VALUE"),Y8.factory(X===void 0&&T===void 0,t.validation,"Either value or values must be provided","MISSING_VALUE"),await $.setFieldValue(W,H,{entityId:Z,fieldDefinitionId:O,fieldName:w,value:X,values:T},G)},deleteFieldValue:async(W,H,{entityId:Z,fieldDefinitionId:O,fieldName:w},X)=>{return Y8.factory(!Z,t.validation,"entityId is required","MISSING_ENTITY_ID"),Y8.factory(!O&&!w,t.validation,"Either fieldDefinitionId or fieldName must be provided","MISSING_FIELD_IDENTIFIER"),await $.deleteFieldValue(W,H,{entityId:Z,fieldDefinitionId:O,fieldName:w},X)}})},QP8=Object.freeze({create:kH6});R4();var MH6=($)=>{let K=$.split("/").filter((z)=>z.trim()),q=K[K.length-1];return{parentPath:K.slice(0,-1).join("/")||null,name:q,segments:K}},NH6=($)=>{return $[0]},AX=Object.freeze({parsePath:MH6,extractStoreCode:NH6});var hH6=({store:$,folderService:K,documentHooks:q})=>{let Y=(M)=>{return M==="t"?"Template":"Document"},z=async(M,R,I,D,m,b)=>{if(I){let h=await K.resolvePath(M,R,I,D,m,b),L=await $.findFolderByName(M,R,h.parentObjectId,h.name);if(L)return L.getObjectId();else return(await $.createFolder(M,R,{storeCode:m,parentId:h.parentObjectId,name:h.name},b)).getObjectId()}else return(await $.readRootFolderForType(M,R,D,m)).getObjectId()},P=async(M,R,{store:I,path:D,type:m,content:b},h)=>{Y8.factory(m!=="d"&&m!=="t",t.validation,'type must be "d" or "t"',"INVALID_TYPE"),Y8.factory(!D||D==="/",t.validation,"Path cannot be empty","EMPTY_PATH"),Y8.factory(!I,t.validation,"store is required","MISSING_STORE_CODE");let{parentPath:L,name:B}=AX.parsePath(D),i=await z(M,R,L,m,I,h),X8=Y(m),N8=await $.findContentByName(M,R,i,B,m);return Y8.factory(N8,t.conflict,`${X8} "${B}" already exists in folder`,"DUPLICATE_NAME"),await $.createContent(M,R,{storeCode:I,type:m,parentId:i,name:B,initialContent:b},h)},J=async(M,R,{id:I})=>{let{typeCode:D}=m1.resolveEntityId(I),m=Y(D),b=await $.readContent(M,R,{id:I});return Y8.factory(!b,t.notFound,`${m} not found: ${I}`,"NOT_FOUND"),b};return Object.freeze({createDocument:P,readDocument:J,readDocumentByPath:async(M,R,{path:I,type:D,storeCode:m})=>{Y8.factory(D!=="d"&&D!=="t",t.validation,'type must be "d" or "t"',"INVALID_TYPE");let{parentPath:b,name:h}=AX.parsePath(I),L;if(b){let B=await $.getFolderByPath(M,R,{path:b,type:D,storeCode:m});if(!B)return null;L=B.getObjectId()}else L=(await $.readRootFolderForType(M,R,D,m)).getObjectId();return await $.findContentByName(M,R,L,h,D)},updateDocumentPath:async(M,R,{id:I,path:D,type:m},b)=>{Y8.factory(m!=="d"&&m!=="t",t.validation,'type must be "d" or "t"',"INVALID_TYPE"),Y8.factory(!D||D==="/",t.validation,"Path cannot be empty","EMPTY_PATH");let h=await J(M,R,{id:I}),{parentPath:L,name:B}=AX.parsePath(D),i=AX.extractStoreCode(I),X8=await z(M,R,L,m,i,b),N8=B!==h.getName(),h8=X8!==h.getParentId();if(!N8&&!h8)return h;if(N8||h8){let c8=Y(m),E8=await $.findContentByName(M,R,X8,B,m);Y8.factory(E8&&E8.getObjectId()!==I,t.conflict,`${c8} "${B}" already exists in target folder`,"DUPLICATE_NAME")}return await $.updateContent(M,R,{id:I,name:N8?B:void 0,parentId:h8?X8:void 0},b)},deleteDocument:async(M,R,{id:I},D)=>{return await J(M,R,{id:I}),await $.deleteContent(M,R,{id:I},D)},saveDraft:async(M,R,{id:I,content:D,clientId:m},b)=>{return await J(M,R,{id:I}),await $.saveDraft(M,R,{id:I,content:D,clientId:m},b)},readDraft:async(M,R,{id:I})=>{let{typeCode:D}=m1.resolveEntityId(I);await J(M,R,{id:I});let m=Y(D),b=await $.readDraft(M,R,{id:I});return Y8.factory(!b,t.notFound,`No draft found for ${m}: ${I}`,"DRAFT_NOT_FOUND"),b},publishDocument:async(M,R,{id:I},D)=>{await J(M,R,{id:I});let{typeCode:m}=m1.resolveEntityId(I),b=await $.publishContent(M,R,{id:I},D),h=q.getHook("prePublish",m);if(h){let L=await J(M,R,{id:I});await h(M,R,L)}return b},discardDraft:async(M,R,{id:I},D)=>{return await J(M,R,{id:I}),await $.discardDraft(M,R,{id:I},D)},readVersion:async(M,R,{id:I,versionNumber:D})=>{let{typeCode:m}=m1.resolveEntityId(I);await J(M,R,{id:I});let b=Y(m),h=await $.readVersion(M,R,{id:I,versionNumber:D});return Y8.factory(!h,t.notFound,`Version ${D} not found for ${b}: ${I}`,"VERSION_NOT_FOUND"),h},getVersions:async(M,R,{id:I})=>{return await J(M,R,{id:I}),await $.getVersions(M,R,{id:I})},setEditState:async(M,R,{id:I,clientId:D},m)=>{return await J(M,R,{id:I}),await $.setEditState(M,R,{id:I,clientId:D},m)},clearEditState:async(M,R,{id:I},D)=>{return await J(M,R,{id:I}),await $.clearEditState(M,R,{id:I},D)},getEditState:async(M,R,{id:I})=>{return await J(M,R,{id:I}),await $.getEditState(M,R,{id:I})},listDocuments:async(M,R,{parentId:I,storeCode:D,type:m="d"})=>{return await $.listContent(M,R,{parentId:I,storeCode:D,type:m})}})},dP8=Object.freeze({create:hH6});var GO8=K1(OH8(),1),_O8=K1(kb(),1),fO8=($)=>{if(!$)return{parameters:{},target:null,targetPath:null,body:""};let K=GO8.default($),q=K.data?.parameters||{},Y=K.data?.target||null,z=K.data?.targetPath||null,P=K.content;return{parameters:q,target:Y,targetPath:z,body:P}},O_6=($)=>{if(!$)return new Set;let K=new Set,q=new Set(["if","unless","each","with","lookup","log"]);try{let Y=_O8.default.parse($),z=(P,J=null,W=null)=>{if(!P)return;if(P.type==="PathExpression"){if(P.data)return;let H=P.parts.join(".");if(!H||H.startsWith("@"))return;if(J?.type==="BlockStatement"&&W==="path"||J?.type==="MustacheStatement"&&W==="path"&&J.params?.length>0){if(q.has(H))return;return}K.add(H)}if(P.program)z(P.program,P,"program");if(P.inverse)z(P.inverse,P,"inverse");if(P.body)P.body.forEach((H)=>z(H,P,"body"));if(P.params)P.params.forEach((H)=>z(H,P,"params"));if(P.hash?.pairs)P.hash.pairs.forEach((H)=>z(H.value,P,"hash"));if(P.path)z(P.path,P,"path")};z(Y)}catch(Y){throw new Error(`Invalid Handlebars template: ${Y.message}`)}return K},w_6=($)=>{if(!$)return{parameters:{},target:null,targetPath:null};let{parameters:K,target:q,targetPath:Y}=fO8($);return{parameters:K,target:q,targetPath:Y}},M$=Object.freeze({parseFrontMatter:fO8,extractVariables:O_6,getParameters:w_6});R4();var X_6=async($,K,q,Y)=>{try{let z=typeof q.getPublishedContent==="function"?q.getPublishedContent():q.publishedContent,{parameters:P}=M$.parseFrontMatter(z||"");if(!P||Object.keys(P).length===0)return;let J=typeof q.getObjectId==="function"?q.getObjectId():q.id,W=J[0];for(let[H,Z]of Object.entries(P)){let O=Z.type||"string",w=Z.required||!1,X=Z.description||null,T=Z.label||H,G="single";if(O!=="string"&&O!=="object_ref"){console.warn(`Invalid parameter type "${O}" for parameter "${H}" in template ${J}. Defaulting to "string".`);continue}try{await Y.createFieldDefinition($,K,{store:W,ownerEntityId:J,name:H,label:T,description:X,primitiveType:O,required:w,multiplicity:"single",isSystem:!1},()=>{})}catch(v){if(v.code==="DUPLICATE_FIELD_DEFINITION"||v.message?.includes("unique"))console.warn(`Field definition "${H}" already exists for template ${J}. Skipping.`);else console.error(`Failed to create field definition for parameter "${H}" in template ${J}:`,v)}}}catch(z){console.error(`Template publish hook failed for ${q.id}:`,z)}},T_6=({fieldService:$})=>{let K={prePublish:{d:null,t:(Y,z,P)=>X_6(Y,z,P,$)},postPublish:{},preDelete:{},postCreate:{}};return Object.freeze({getHook:(Y,z)=>{return K[Y]?.[z]||null}})},AO8=Object.freeze({create:T_6});R4();var Mb=K1(kb(),1),j_6=($={})=>{return Object.freeze({renderTemplate:(Y,z={})=>{if(!Y)throw t.validation("Template content cannot be empty","EMPTY_TEMPLATE");let{body:P}=M$.parseFrontMatter(Y),J;try{J=Mb.default.compile(P,{noEscape:!0})(z)}catch(W){throw t.validation(`Failed to render template: ${W.message}`,"RENDER_ERROR")}return J},extractTemplateParameters:(Y)=>{if(!Y)return{parameters:{},detectedVariables:[],target:null,targetPath:null};let{parameters:z,target:P,targetPath:J,body:W}=M$.parseFrontMatter(Y),H=M$.extractVariables(W),Z=Array.from(H);return{parameters:z,detectedVariables:Z,target:P,targetPath:J}}})},VO8=Object.freeze({create:j_6});import pX from"node:fs";import kO8 from"node:os";import cf from"node:path";var v_6=({projectStore:$,storeStore:K})=>{return Object.freeze({createProject:async(P,J,{name:W,path:H},Z)=>{if(await $.readProjectByPath(P,J,H)){let v=new Error("Project with this path already exists");throw v.code="DUPLICATE_PATH",v}let w=await $.createProject(P,J,{name:W,path:H},Z),X=await K.createLocalStore(P,J,{code:"A",name:"Project"},Z);await X.createFolder(P,J,{parentId:null,name:null,subtype:"root_d"},Z),await X.createFolder(P,J,{parentId:null,name:null,subtype:"root_t"},Z);let T=await K.readSharedStore(P,J),G=await K.createDemuxStore(P,J,{name:W},Z);return await K.addChildToDemux(P,J,{demuxId:G.getObjectId(),childId:X.getObjectId()},Z),await K.addChildToDemux(P,J,{demuxId:G.getObjectId(),childId:T.getObjectId()},Z),await K.addStoresToProject(P,J,{projectId:w.getObjectId(),rootStoreId:G.getObjectId(),storeIds:[G.getObjectId(),X.getObjectId(),T.getObjectId()]}),w},validateProjectPath:(P)=>{if(!P||typeof P!=="string"){let X=new Error("Path is required and must be a non-empty string");throw X.code="VALIDATION_ERROR",X}let J;if(P==="~")J=kO8.homedir();else if(P.startsWith("~/"))J=cf.join(kO8.homedir(),P.slice(2));else J=P;let W=pX.existsSync(J),H=!1,Z=!1,O=!1;if(W)try{if(H=pX.statSync(J).isDirectory(),H){let T=cf.join(J,".git");try{Z=pX.statSync(T).isDirectory()}catch{Z=!1}let G=cf.join(J,".claude");try{O=pX.statSync(G).isDirectory()}catch{O=!1}}}catch(X){H=!1}let w=cf.basename(J);return{path:J,exists:W,isDirectory:H,hasGit:Z,hasClaude:O,suggestedName:w}},listProjects:async(P)=>{let J=await P.selectFrom("projects").selectAll().where("name","!=","__system__").orderBy("created_at","desc").execute();return await Promise.all(J.map(async(H)=>{let O=(await P.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((w)=>({id:w.code==="B"?"store:B":`store:${w.code}:${H.object_id}`,code:w.code,name:w.name}));return{objectId:H.object_id,name:H.name,path:H.path,createdAt:H.created_at,updatedAt:H.updated_at,children:O}}))}})},Bf=Object.freeze({create:v_6});var G_6=()=>{let $=[];return{enqueuePostCommitHook:(K)=>{$.push(K)},flush:()=>{for(let K of $)try{K()}catch(q){console.error("Post-commit hook failed:",q)}}}},__6=({db:$,folderService:K,fieldService:q,documentService:Y,templateService:z,projectService:P,clipboardService:J})=>{let W=async(h)=>{let L=G_6(),B;return await $.transaction().execute(async(i)=>{B=await h(i,L.enqueuePostCommitHook)}),L.flush(),B};return Object.freeze({createFolder:async(h,{store:L,path:B,type:i})=>{return W(async(X8,N8)=>{return await K.createFolder(X8,h,{store:L,path:B,type:i},N8)})},renameFolder:async(h,{id:L,name:B})=>{return W(async(i,X8)=>{return await K.renameFolder(i,h,{id:L,name:B},X8)})},moveFolder:async(h,{id:L,parentId:B})=>{return W(async(i,X8)=>{return await K.moveFolder(i,h,{id:L,parentId:B},X8)})},deleteFolder:async(h,{id:L})=>{return W(async(B,i)=>{return await K.deleteFolder(B,h,{id:L},i)})},createProject:async(h,{name:L,path:B})=>{return W(async(i,X8)=>{return await P.createProject(i,h,{name:L,path:B},X8)})},createFieldDefinition:async(h,{store:L,ownerEntityId:B,name:i,label:X8,description:N8,primitiveType:h8,required:c8,multiplicity:E8,isSystem:g8})=>{return W(async(t8,v4)=>{return await q.createFieldDefinition(t8,h,{store:L,ownerEntityId:B,name:i,label:X8,description:N8,primitiveType:h8,required:c8,multiplicity:E8,isSystem:g8},v4)})},setFieldValue:async(h,{entityId:L,fieldDefinitionId:B,fieldName:i,value:X8,values:N8})=>{return W(async(h8,c8)=>{return await q.setFieldValue(h8,h,{entityId:L,fieldDefinitionId:B,fieldName:i,value:X8,values:N8},c8)})},deleteFieldValue:async(h,{entityId:L,fieldDefinitionId:B,fieldName:i})=>{return W(async(X8,N8)=>{return await q.deleteFieldValue(X8,h,{entityId:L,fieldDefinitionId:B,fieldName:i},N8)})},deleteFieldDefinition:async(h,{id:L})=>{return W(async(B,i)=>{return await q.deleteFieldDefinition(B,h,{id:L},i)})},createDocument:async(h,{store:L,path:B,type:i,content:X8})=>{return W(async(N8,h8)=>{return await Y.createDocument(N8,h,{store:L,path:B,type:i,content:X8},h8)})},updateDocumentPath:async(h,{id:L,path:B,type:i})=>{return W(async(X8,N8)=>{return await Y.updateDocumentPath(X8,h,{id:L,path:B,type:i},N8)})},deleteDocument:async(h,{id:L})=>{return W(async(B,i)=>{return await Y.deleteDocument(B,h,{id:L},i)})},saveDraft:async(h,{id:L,content:B,clientId:i})=>{return W(async(X8,N8)=>{return await Y.saveDraft(X8,h,{id:L,content:B,clientId:i},N8)})},publishDocument:async(h,{id:L})=>{return W(async(B,i)=>{return await Y.publishDocument(B,h,{id:L},i)})},discardDraft:async(h,{id:L})=>{return W(async(B,i)=>{return await Y.discardDraft(B,h,{id:L},i)})},setEditState:async(h,{id:L,clientId:B})=>{return W(async(i,X8)=>{return await Y.setEditState(i,h,{id:L,clientId:B},X8)})},clearEditState:async(h,{id:L})=>{return W(async(B,i)=>{return await Y.clearEditState(B,h,{id:L},i)})},renderTemplate:async(h,{id:L,params:B,target:i,targetOptions:X8})=>{let N8=await Y.readDocument($,h,{id:L});if(!N8.getPublishedContent())throw(await Promise.resolve().then(() => (R4(),_X))).default.validation("Template has no published content","NO_PUBLISHED_CONTENT");let{target:h8,targetPath:c8}=z.extractTemplateParameters(N8.getPublishedContent()),E8=i||h8||"stdout",g8=X8||{},t8=g8.path||c8,v4=z.renderTemplate(N8.getPublishedContent(),B||{});switch(E8){case"stdout":return{output:v4,target:"stdout"};case"clipboard":return J.write(v4),{output:v4,target:"clipboard",message:"Copied to clipboard"};case"document":return W(async(r,a)=>{if(!t8)throw(await Promise.resolve().then(() => (R4(),_X))).default.validation("targetOptions.path is required for document target","MISSING_TARGET_PATH");let s=await Y.createDocument(r,h,{store:"A",path:t8,type:"d",content:v4},a);if(g8.publish)await Y.publishDocument(r,h,{id:s.getObjectId()},a);return{output:v4,target:"document",documentId:s.getObjectId(),documentPath:t8,published:!!g8.publish}});case"file":throw(await Promise.resolve().then(() => (R4(),_X))).default.validation("file target not yet implemented","NOT_IMPLEMENTED");default:throw(await Promise.resolve().then(() => (R4(),_X))).default.validation(`Unknown target: ${E8}`,"INVALID_TARGET")}}})},Nb=Object.freeze({create:__6});var IE8=K1(SE8(),1),xE8=K1(X$(),1);R4();import q$ from"fs/promises";import Y$ from"path";import{createWriteStream as yr6}from"fs";import ur6 from"crypto";var uK=xE8.default("caw:export"),EE8=".caw-exports",LE8=".tmp",mr6=1,pr6=({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"),A=String(T.getHours()).padStart(2,"0"),C=String(T.getMinutes()).padStart(2,"0"),V=String(T.getSeconds()).padStart(2,"0");return`${G}-${v}-${f}-${A}${C}${V}`},P=async(T)=>{let G=Y$.join(T,EE8),v=Y$.join(G,LE8);try{return await q$.mkdir(G,{recursive:!0}),await q$.mkdir(v,{recursive:!0}),G}catch(f){if(f.code==="EACCES")throw t.validation("Permission denied creating export directory","EXPORT_ERROR");if(f.code==="ENOSPC")throw t.validation("Insufficient disk space","EXPORT_ERROR");throw uK("Error creating export directory: [%s] %s",f.code||"UNKNOWN",f.message),t.validation(`Failed to create export directory: ${f.message} (${f.code||"UNKNOWN"})`,"EXPORT_ERROR")}},J=async(T,G,v,f)=>{let A=[],C=async(V,M)=>{let R=await K.listFolderContents(T,G,{folderId:V,type:v,storeCode:f});for(let I of R)if(I.getParentId()!==null)A.push({entity:I,depth:M,contentType:v}),await C(I.getObjectId(),M+1)};return await C(null,0),A},W=async(T,G,v)=>{let f=[],A=[],C=async(V)=>{let M=await q.listDocuments(T,G,{parentId:V,storeCode:v});for(let I of M){let D=I.getPublishedVersionNumber();if(D!==null){let m=await q.readVersion(T,G,{id:I.getObjectId(),versionNumber:D});f.push({entity:I,version:m})}else A.push(I)}let R=await K.listFolderContents(T,G,{folderId:V,type:"d",storeCode:v});for(let I of R)await C(I.getObjectId())};return await C(null),{published:f,draftOnly:A}},H=async(T,G,v)=>{let f=[],A=[],C=async(V)=>{let M=await q.listDocuments(T,G,{parentId:V,storeCode:v,type:"t"});for(let I of M){let D=I.getPublishedVersionNumber();if(D!==null){let m=await q.readVersion(T,G,{id:I.getObjectId(),versionNumber:D});f.push({entity:I,version:m})}else A.push(I)}let R=await K.listFolderContents(T,G,{folderId:V,type:"t",storeCode:v});for(let I of R)await C(I.getObjectId())};return await C(null),{published:f,draftOnly:A}},Z=async(T)=>{try{await q$.rm(T,{recursive:!0,force:!0})}catch(G){uK("Warning: Failed to cleanup temp directory: %s",G.message)}};return Object.freeze({listExports:async(T,G,{projectPath:v})=>{let f=Y$.join(v,EE8);try{let A=await q$.readdir(f),C=[];for(let V of A)if(V.endsWith(".zip")){let M=Y$.join(f,V),R=await q$.stat(M);C.push({filename:V,timestamp:R.mtime.toISOString(),size:R.size})}return uK("Found %d export files",C.length),C}catch(A){if(A.code==="ENOENT")return[];throw A}},exportPreview:async(T,G,{storeCode:v})=>{let f=await J(T,G,"d",v),A=await J(T,G,"t",v),{published:C,draftOnly:V}=await W(T,G,v),{published:M,draftOnly:R}=await H(T,G,v),I={folders:[...f,...A].map((h)=>({id:h.entity.getObjectId(),path:h.entity.getPath(),name:h.entity.getName()})),documents:C.map((h)=>({id:h.entity.getObjectId(),path:h.entity.getPath(),name:h.entity.getName()})),templates:M.map((h)=>({id:h.entity.getObjectId(),path:h.entity.getPath(),name:h.entity.getName()}))},D={documents:V.map((h)=>({id:h.getObjectId(),path:h.getPath(),name:h.getName()})),templates:R.map((h)=>({id:h.getObjectId(),path:h.getPath(),name:h.getName()}))},m=I.folders.length+I.documents.length+I.templates.length,b=D.documents.length+D.templates.length;return uK("Preview: %d published, %d draft-only",m,b),{toExport:I,draftOnly:D}},exportDocuments:async(T,G,{storeCode:v,projectPath:f})=>{uK("Starting export for store %s",v);let A=await P(f),C=ur6.randomUUID(),V=Y$.join(A,LE8,C);await q$.mkdir(V,{recursive:!0});try{let M=await J(T,G,"d",v),R=await J(T,G,"t",v),I=[...M,...R],{published:D,draftOnly:m}=await W(T,G,v),{published:b,draftOnly:h}=await H(T,G,v);uK("Found %d folders, %d documents, %d templates",I.length,D.length,b.length);let L=[...I.map((E8)=>({id:E8.entity.getObjectId(),type:"folder",path:E8.entity.getPath(),contentType:E8.contentType})),...D.map((E8)=>({id:E8.entity.getObjectId(),type:"document",path:E8.entity.getPath()})),...b.map((E8)=>({id:E8.entity.getObjectId(),type:"template",path:E8.entity.getPath()}))],B={version:mr6,exportedAt:new Date().toISOString(),entities:L};await q$.writeFile(Y$.join(V,"manifest.json"),JSON.stringify(B,null,2),"utf-8");for(let E8 of I){let g8=E8.contentType==="d"?"documents":"templates",t8=Y$.join(V,g8,E8.entity.getPath());await q$.mkdir(t8,{recursive:!0})}await q$.mkdir(Y$.join(V,"documents"),{recursive:!0}),await q$.mkdir(Y$.join(V,"templates"),{recursive:!0});for(let E8 of D){let g8=Y$.join(V,"documents",E8.entity.getPath()),t8=E8.version.content;await q$.mkdir(Y$.dirname(g8),{recursive:!0}),await q$.writeFile(g8,t8,"utf-8")}for(let E8 of b){let g8=Y$.join(V,"templates",E8.entity.getPath()),t8=E8.version.content;await q$.mkdir(Y$.dirname(g8),{recursive:!0}),await q$.writeFile(g8,t8,"utf-8")}for(let E8 of L)if(E8.type!=="folder"){let g8=E8.type==="document"?"documents":"templates",t8=Y$.join(V,g8,E8.path);try{await q$.access(t8)}catch(v4){throw t.validation(`Manifest entry missing file: ${E8.path}`,"EXPORT_VALIDATION_FAILED")}}let i=`caw-export-${z()}.zip`,X8=Y$.join(A,i),N8=yr6(X8),h8=IE8.default("zip",{zlib:{level:9}});h8.on("error",async(E8)=>{throw await Z(V),uK("Zip creation error: %s",E8.message),t.validation(`Export failed: ${E8.message}`,"EXPORT_ERROR")}),h8.pipe(N8),h8.directory(V,!1),await h8.finalize(),await new Promise((E8,g8)=>{N8.on("close",E8),N8.on("error",g8),setTimeout(()=>{g8(new Error("Zip creation timeout"))},60000)}),uK("Created zip: %s (%d bytes)",i,h8.pointer()),await Z(V);let c8=L.length;return uK("Export complete: %s (%d entities)",i,c8),{success:!0,filename:i,path:X8,counts:{folders:I.length,documents:D.length,templates:b.length},draftOnlySkipped:{documents:m.length,templates:h.length}}}catch(M){throw await Z(V),M}}})},bE8=Object.freeze({create:pr6});var jL8=K1(XL8(),1),vL8=K1(X$(),1);R4();import s2 from"fs/promises";import jY from"path";import ws6 from"crypto";var V1=vL8.default("caw:import"),HB=".caw-exports",TL8=".tmp",Xs6=1,Ts6=/\b([A-Z][dtfn]\d+)\b/g,js6=({store:$,folderService:K,documentService:q,templateService:Y})=>{let z=(Z,O)=>{if(!Z)return Z;return Z.replace(Ts6,(w,X)=>{return O[X]??w})},P=async(Z)=>{try{await s2.rm(Z,{recursive:!0,force:!0})}catch(O){V1("Warning: Failed to cleanup temp directory: %s",O.message)}},J=async(Z,O,{storeCode:w})=>{let X=await K.listFolderContents(Z,O,{folderId:null,type:"d",storeCode:w}),T=await K.listFolderContents(Z,O,{folderId:null,type:"t",storeCode:w}),G=await q.listDocuments(Z,O,{parentId:null,storeCode:w,type:"d"}),v=await q.listDocuments(Z,O,{parentId:null,storeCode:w,type:"t"}),f=X.length===0&&T.length===0&&G.length===0&&v.length===0;return V1("Store %s empty check: %s",w,f),f},W=async(Z,O,{manifest:w,tempPath:X,storeCode:T})=>{return V1("Starting transaction..."),await Z.transaction().execute(async(G)=>{let v={},f=(m)=>{},A=w.entities.filter((m)=>m.type==="folder");V1("Phase 1: Creating %d folders",A.length);for(let m of A){let b=m.contentType||"d",h=await K.createFolder(G,O,{store:T,path:m.path,type:b},f);v[m.id]=h.getObjectId()}V1("Phase 1 complete - created %d folders",A.length);let C=w.entities.filter((m)=>m.type==="document"),V=[];V1("Phase 2: Reading %d documents",C.length);for(let m of C){let b=jY.join(X,"documents",m.path),h=await s2.readFile(b,"utf-8");V.push({oldId:m.id,path:m.path,content:h})}V1("Phase 2 complete - read %d documents",V.length),V1("Phase 3: Creating %d document entities",V.length);let M=[];for(let m of V){let b=await q.createDocument(G,O,{store:T,path:m.path,type:"d"},f);v[m.oldId]=b.getObjectId(),M.push({document:b,originalContent:m.content})}V1("Phase 3 complete - created %d document entities",M.length);let R=w.entities.filter((m)=>m.type==="template"),I=[];V1("Phase 4: Reading %d templates",R.length);for(let m of R){let b=jY.join(X,"templates",m.path),h=await s2.readFile(b,"utf-8");I.push({oldId:m.id,path:m.path,content:h})}V1("Phase 4 complete - read %d templates",I.length),V1("Phase 5: Creating %d template entities",I.length);let D=[];for(let m of I){let b=await q.createDocument(G,O,{store:T,path:m.path,type:"t"},f);v[m.oldId]=b.getObjectId(),D.push({template:b,originalContent:m.content})}V1("Phase 5 complete - created %d template entities",D.length),V1("Phase 6: Remapping and saving content for %d documents",M.length);for(let{document:m,originalContent:b}of M){let h=z(b,v);await q.saveDraft(G,O,{id:m.getObjectId(),content:h,clientId:"import-service"},f),await q.publishDocument(G,O,{id:m.getObjectId()},f)}V1("Phase 6 complete - saved and published %d documents",M.length),V1("Phase 7: Remapping and saving content for %d templates",D.length);for(let{template:m,originalContent:b}of D){let h=z(b,v);await q.saveDraft(G,O,{id:m.getObjectId(),content:h,clientId:"import-service"},f),await q.publishDocument(G,O,{id:m.getObjectId()},f)}return V1("Phase 7 complete - saved and published %d templates",D.length),V1("Transaction committed successfully"),{success:!0,counts:{folders:A.length,documents:M.length,templates:D.length},remapped:v}})};return Object.freeze({isStoreEmpty:J,importDocuments:async(Z,O,{filename:w,storeCode:X,projectPath:T})=>{V1("Starting import from %s to store %s",w,X);let G=jY.join(T,HB,w);try{await s2.access(G),V1("Zip file found: %s",G)}catch(V){throw t.notFound(`Export file not found: ${w}`,"EXPORT_NOT_FOUND")}V1("Validating zip and manifest...");let v=await J(Z,O,{storeCode:X});if(!v)throw t.conflict("Store not empty - import requires empty store","STORE_NOT_EMPTY");V1("Store empty check: %s",v);let f=ws6.randomUUID(),A=jY.join(T,HB,TL8,f),C=jY.join(T,HB,TL8);await s2.mkdir(C,{recursive:!0});try{new jL8.default(G).extractAllTo(A,!0),V1("Extracted zip to: %s",A)}catch(V){throw t.validation("Corrupted or invalid zip file","IMPORT_VALIDATION_FAILED")}try{let V=jY.join(A,"manifest.json"),M;try{let D=await s2.readFile(V,"utf-8");M=JSON.parse(D)}catch(D){throw t.validation(`Failed to read manifest: ${D.message}`,"MANIFEST_READ_FAILED")}if(M.version!==Xs6)throw t.validation(`Unsupported manifest version: ${M.version}`,"UNSUPPORTED_VERSION");if(!M.entities||!Array.isArray(M.entities))throw t.validation("Invalid manifest structure","MANIFEST_READ_FAILED");V1("Manifest valid: version=%d, entities=%d",M.version,M.entities.length);for(let D of M.entities)if(D.type!=="folder"){let m=D.type==="document"?jY.join(A,"documents",D.path):jY.join(A,"templates",D.path);try{await s2.access(m)}catch(b){throw t.validation(`Missing file for manifest entry: ${D.path}`,"IMPORT_VALIDATION_FAILED")}}V1("All content files validated");let R=await W(Z,O,{manifest:M,tempPath:A,storeCode:X}),I=R.counts.folders+R.counts.documents+R.counts.templates;return V1("Import complete: %d entities imported",I),R}finally{await P(A)}}})},GL8=Object.freeze({create:js6});var vs6=($)=>{let{name:K,interval:q,execute:Y}=$,z=null,P=!1,J=null,W=null,H=0,Z=null,A=Object.freeze({getName:()=>K,getInterval:()=>q,getIsRunning:()=>P,getLastRun:()=>J,getLastError:()=>W,getRunCount:()=>H,getNextRun:()=>Z}),C=async()=>{try{await Y(),J=new Date().toISOString(),W=null,H++}catch(D){console.error(`[CronJob] ${K} failed:`,D),W={message:D.message,timestamp:new Date().toISOString()}}if(P)Z=new Date(Date.now()+q).toISOString()},V=()=>{if(z!==null)return;z=setInterval(C,q),P=!0,Z=new Date(Date.now()+q).toISOString()},M=()=>{if(z===null)return;clearInterval(z),z=null,P=!1,Z=null},I=Object.freeze({start:V,stop:M,restart:()=>{M(),V()}});return{jobFns:A,controlFns:I}},OM=Object.freeze({create:vs6});var _L8=K1(X$(),1),Gs6=_L8.default("caw:cron:cleanup-edit-states"),fL8=async($)=>{let K=new Date(Date.now()-PW).toISOString();try{let q=await $.deleteFrom("document_edit_state").where("last_activity_at","<",K).execute(),Y=Number(q[0]?.numDeletedRows??0);if(Y>0)Gs6("Cleaned up %d expired edit locks (older than %d minutes)",Y,PW/60000);return{expired:Y}}catch(q){throw console.error("[Cleanup] Failed to cleanup expired edit locks:",q),q}};var _s6=({db:$})=>{let{jobFns:K,controlFns:q}=OM.create({name:"cleanup-stale-edit-states",interval:900000,execute:async()=>{await fL8($)}});return{job:Object.freeze(K),control:q}},AL8=Object.freeze({create:_s6});var fs6=({db:$})=>{let K=new Map,q=(Z,O)=>{let{job:w,control:X}=Z.create(O);K.set(w.getName(),{job:w,control:X})},Y=(Z)=>{let O=K.get(Z);if(!O)throw new Error(`Job not found: ${Z}`);let w=O.job.getIsRunning();return O.control.start(),{name:Z,status:w?"already-running":"started",isRunning:O.job.getIsRunning()}},z=(Z)=>{let O=K.get(Z);if(!O)throw new Error(`Job not found: ${Z}`);let w=O.job.getIsRunning();return O.control.stop(),{name:Z,status:w?"stopped":"already-stopped",isRunning:O.job.getIsRunning()}},P=(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()}},J=()=>{let Z=[];for(let[O,{job:w}]of K.entries())Z.push({name:w.getName(),interval:w.getInterval(),isRunning:w.getIsRunning(),lastRun:w.getLastRun(),lastError:w.getLastError(),runCount:w.getRunCount(),nextRun:w.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(AL8,{db:$}),Object.freeze({register:q,start:Y,stop:z,restart:P,list:J,startAll:W,stopAll:H})},VL8=Object.freeze({create:fs6});import Ku8 from"node:process";import NL8 from"node:process";import Ns6 from"node:os";import hs6 from"node:fs";import ks6 from"node:fs";import kL8 from"node:fs";var ZB;function As6(){try{return kL8.statSync("/.dockerenv"),!0}catch{return!1}}function Vs6(){try{return kL8.readFileSync("/proc/self/cgroup","utf8").includes("docker")}catch{return!1}}function OB(){if(ZB===void 0)ZB=As6()||Vs6();return ZB}var wB,Ms6=()=>{try{return ks6.statSync("/run/.containerenv"),!0}catch{return!1}};function wM(){if(wB===void 0)wB=Ms6()||OB();return wB}var ML8=()=>{if(NL8.platform!=="linux")return!1;if(Ns6.release().toLowerCase().includes("microsoft")){if(wM())return!1;return!0}try{return hs6.readFileSync("/proc/version","utf8").toLowerCase().includes("microsoft")?!wM():!1}catch{return!1}},hL8=NL8.env.__IS_WSL_TEST__?ML8:ML8();import XB from"node:process";function TB(){if(XB.platform!=="linux")return!1;if(XB.env.WAYLAND_DISPLAY)return!0;if(XB.env.XDG_SESSION_TYPE==="wayland")return!0;return!1}function T4($){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 Cs6}from"node:url";var nH=($,K)=>{let q=vB(Rs6($));if(typeof q!=="string")throw new TypeError(`${K} must be a string or a file URL: ${q}.`);return q},Rs6=($)=>jB($)?$.toString():$,jB=($)=>typeof $!=="string"&&$&&Object.getPrototypeOf($)===String.prototype,vB=($)=>$ instanceof URL?Cs6($):$;var XM=($,K=[],q={})=>{let Y=nH($,"First argument"),[z,P]=T4(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 J=z.map(String),W=J.find((H)=>H.includes("\x00"));if(W!==void 0)throw new TypeError(`Arguments cannot contain null bytes ("\\0"): ${W}`);if(!T4(P))throw new TypeError(`Last argument must be an options object: ${P}`);return[Y,J,P]};import{ChildProcess as bs6}from"node:child_process";import{StringDecoder as Ds6}from"node:string_decoder";var{toString:CL8}=Object.prototype,RL8=($)=>CL8.call($)==="[object ArrayBuffer]",m4=($)=>CL8.call($)==="[object Uint8Array]",mK=($)=>new Uint8Array($.buffer,$.byteOffset,$.byteLength),Ss6=new TextEncoder,DL8=($)=>Ss6.encode($),Es6=new TextDecoder,TM=($)=>Es6.decode($),SL8=($,K)=>{return Ls6($,K).join("")},Ls6=($,K)=>{if(K==="utf8"&&$.every((P)=>typeof P==="string"))return $;let q=new Ds6(K),Y=$.map((P)=>typeof P==="string"?DL8(P):P).map((P)=>q.write(P)),z=q.end();return z===""?Y:[...Y,z]},Vj=($)=>{if($.length===1&&m4($[0]))return $[0];return GB(Is6($))},Is6=($)=>$.map((K)=>typeof K==="string"?DL8(K):K),GB=($)=>{let K=new Uint8Array(xs6($)),q=0;for(let Y of $)K.set(Y,q),q+=Y.length;return K},xs6=($)=>{let K=0;for(let q of $)K+=q.length;return K};var xL8=($)=>Array.isArray($)&&Array.isArray($.raw),bL8=($,K)=>{let q=[];for(let[P,J]of $.entries())q=gs6({templates:$,expressions:K,tokens:q,index:P,template:J});if(q.length===0)throw new TypeError("Template script must not be empty");let[Y,...z]=q;return[Y,z,{}]},gs6=({templates:$,expressions:K,tokens:q,index:Y,template:z})=>{if(z===void 0)throw new TypeError(`Invalid backslash sequence: ${$.raw[Y]}`);let{nextTokens:P,leadingWhitespaces:J,trailingWhitespaces:W}=ys6(z,$.raw[Y]),H=LL8(q,P,J);if(Y===K.length)return H;let Z=K[Y],O=Array.isArray(Z)?Z.map((w)=>IL8(w)):[IL8(Z)];return LL8(H,O,W)},ys6=($,K)=>{if(K.length===0)return{nextTokens:[],leadingWhitespaces:!1,trailingWhitespaces:!1};let q=[],Y=0,z=EL8.has(K[0]);for(let J=0,W=0;J<$.length;J+=1,W+=1){let H=K[W];if(EL8.has(H)){if(Y!==J)q.push($.slice(Y,J));Y=J+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 p46=()=>new Date().toISOString(),K4=p46;var c46=[{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},B46=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=K4(),J=await B46($,"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((X)=>({next_value:X("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:J,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 w=Y==="d"?"document":"template";return O.id},U46=async($)=>{for(let K of c46)await $.insertInto("entity_types").values(K).execute()},l46=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((P)=>({next_value:P("next_value","+",1)})).where("scope_type","=","global").where("scope_id","is",null).where("type_code","=","s").execute();let q=`S${K.next_value}`,Y=K4(),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 U46($),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 l46($)};var S0=K1(ie(),1),F46=($,K)=>{if($)throw new Error(K)},Qe=($,K)=>{if(S0.default.null($)||S0.default.undefined($))throw new Error(`${K} is required`)},i46=($,K)=>{if(Qe($,K),S0.default.empty($))throw new Error(`${K} cannot be empty`)},Q46=($,K,...q)=>{if($)throw K(...q)},d46={condition:F46,nullish:Qe,empty:i46,factory:Q46},Y8=d46;var xW6=typeof Bun!=="undefined",bW6=async($)=>{if(xW6){let{Database:K}=await import("bun:sqlite"),{BunSqliteDialect:q}=await Promise.resolve().then(() => K1(NP8(),1)),Y=new K($);return Y.exec("PRAGMA journal_mode = WAL"),Y.exec("PRAGMA foreign_keys = ON"),new r9({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 r9({dialect:new vS({database:q})})}},gW6=($,K)=>{if(!EW6($)){if(!K)throw new Error(`Database file not found: ${$}`);LW6(IW6($),{recursive:!0})}},yW6=async($,K)=>{if(!await pe($)){if(!K)throw new Error("Database schema not found");await ce($)}},uW6=async($,K)=>{if(!await Ue($)){if(!K)throw new Error("Database seed data not found");await le($)}},mW6=($)=>{let{kyselyFactory:K=bW6}=$??{};return Object.freeze({getDb:async(Y,z)=>{if(Y8.nullish(Y,"databaseFilepath"),Y!==":memory:")gW6(Y,z);let P=await K(Y);return await yW6(P,z),await uW6(P,z),P}})},hP8={create:mW6};var pW6=($)=>{let{id:K,name:q,createdAt:Y,updatedAt:z}=$,Z=Object.freeze({getObjectId:()=>K,getName:()=>q,getCreatedAt:()=>Y,getUpdatedAt:()=>z}),X=Object.freeze({setName:(T)=>{q=T},setUpdatedAt:(T)=>{z=T}});return{entityFns:Z,mutationFns:X}},K5=Object.freeze({create:pW6});var cW6=($)=>{let{id:K,name:q,path:Y,createdAt:z,updatedAt:P}=$,{entityFns:J,mutationFns:W}=K5.create({id:K,name:q,createdAt:z,updatedAt:P}),H=()=>Y,O=Object.freeze({...J,getPath:H,toJSON:()=>({objectId:J.getObjectId(),name:J.getName(),path:H(),createdAt:J.getCreatedAt(),updatedAt:J.getUpdatedAt()})}),X=Object.freeze({...W,setPath:(T)=>{Y=T}});return{entity:O,mutationApi:X}},CP8=Object.freeze({create:cW6});var BW6=($,K,q)=>{return Object.freeze({getEntity:()=>$,getMutationApi:()=>K,getPk:()=>q})},l6=Object.freeze({create:BW6});var UW6=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 P=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((J)=>({next_value:J("next_value","+",1)})).where("scope_type","=",K).where("scope_id",q===null?"is":"=",q).where("type_code","=",Y).execute(),P.next_value},q5=Object.freeze({nextSeq:UW6});var lW6=($)=>$.object_id,RP8=($)=>{if(!$||$.length<2||$[0]!=="P")return null;let K=parseInt($.slice(1),10);return isNaN(K)?null:K},Tf=($)=>{let K=lW6($),q=$.id,{entity:Y,mutationApi:z}=CP8.create({id:K,name:$.name,path:$.path,createdAt:$.created_at,updatedAt:$.updated_at});return{entity:Y,mutationApi:z,id:K,pk:q}},FW6=()=>{let $=new Map;return Object.freeze({createProject:async(J,W,{name:H,path:Z},O)=>{let w=K4(),X=await q5.nextSeq(J,"global",null,"p"),T=`P${X}`,G=await J.insertInto("projects").values({id:X,object_id:T,name:H,path:Z,created_at:w,updated_at:w}).returningAll().executeTakeFirstOrThrow(),{entity:v,mutationApi:f,id:A,pk:C}=Tf(G);return O(()=>{$.set(A,l6.create(v,f,C))}),v},readProject:async(J,W,H)=>{let Z=$.get(H);if(Z)return Z.getEntity();let O=RP8(H);if(O===null)return null;let w=await J.selectFrom("projects").selectAll().where("id","=",O).executeTakeFirst();if(!w)return null;let{entity:X,mutationApi:T,id:G,pk:v}=Tf(w);return $.set(G,l6.create(X,T,v)),X},readProjectByObjectId:async(J,W,H)=>{let Z=$.get(H);if(Z)return Z.getEntity();let O=RP8(H);if(O===null)return null;let w=await J.selectFrom("projects").selectAll().where("id","=",O).executeTakeFirst();if(!w)return null;let{entity:X,mutationApi:T,id:G,pk:v}=Tf(w);return $.set(G,l6.create(X,T,v)),X},readProjectByPath:async(J,W,H)=>{let Z=await J.selectFrom("projects").selectAll().where("path","=",H).executeTakeFirst();if(!Z)return null;let{entity:O,mutationApi:w,id:X,pk:T}=Tf(Z),G=$.get(X);if(G)return G.getEntity();return $.set(X,l6.create(O,w,T)),O},evictProject:(J)=>{$.delete(J)}})},DP8=Object.freeze({create:FW6});var iW6=()=>{let $=new Map,K=new Map;return Object.freeze({get:(w)=>$.get(w),getByPk:(w)=>{let X=K.get(w);return X?$.get(X):void 0},has:(w)=>$.has(w),set:(w,X)=>{$.set(w,X),K.set(X.getPk(),w)},remove:(w)=>{let X=$.get(w);if(X)K.delete(X.getPk());$.delete(w)},getIdByPk:(w)=>K.get(w),setIdByPk:(w,X)=>K.set(w,X),clear:()=>{$.clear(),K.clear()},entries:()=>$.entries()})},jf=Object.freeze({create:iW6});var yP8=K1(X$(),1);var QW6=async($,K,q,Y=null)=>{return(await $.selectFrom("entity_types").select("id").where("code","=",q).where((P)=>Y?P("subtype","=",Y):P("subtype","is",null)).executeTakeFirstOrThrow()).id},uz=Object.freeze({readEntityTypeId:QW6});var dW6=($)=>{let{id:K,name:q,parentId:Y,path:z,createdAt:P,updatedAt:J,publishedVersionNumber:W,hasDraft:H,draftContent:Z,publishedContent:O}=$,{entityFns:w,mutationFns:X}=K5.create({id:K,name:q,createdAt:P,updatedAt:J}),T=new Map,G=W??null,v=H??!1,f=Z??null,A=O??null,C=null,h8=Object.freeze({...w,getParentId:()=>Y,getPath:()=>z,getField:(K8)=>{return T.get(K8)},getFields:()=>{let K8={};for(let[P8,H8]of T.entries())K8[P8]=H8;return K8},getPublishedVersionNumber:()=>G,hasDraftContent:()=>v,getDraftContent:()=>f,getPublishedContent:()=>A,getEditState:()=>C,hasPublished:()=>G>0,isBeingEdited:()=>C!==null,getVersionCount:()=>G??0,getIsFolder:()=>!1}),s=Object.freeze({...X,setParentId:(K8)=>{Y=K8},setPath:(K8)=>{z=K8},setField:(K8,P8)=>{T.set(K8,P8)},removeField:(K8)=>{T.delete(K8)},setPublishedVersionNumber:(K8)=>{G=K8},setHasDraft:(K8)=>{v=K8},setDraftContent:(K8)=>{f=K8},setPublishedContent:(K8)=>{A=K8},setEditState:(K8)=>{C=K8}});return{entityFns:h8,mutationFns:s}},YW=Object.freeze({create:dW6});var SP8=($)=>{let{entityFns:K,mutationFns:q}=YW.create($),Y=()=>K.getParentId()===null,z=()=>!0,J=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:J,mutationApi:W}},nW6=($,K,q,Y)=>{return SP8({id:K,parentId:q,name:$.name,path:Y,createdAt:$.created_at,updatedAt:$.updated_at})},mz=Object.freeze({create:SP8,createFromRow:nW6});var oW6=($)=>{let{id:K,name:q,ownerEntityId:Y,label:z,description:P,primitiveType:J,required:W,multiplicity:H,isSystem:Z,createdAt:O,updatedAt:w}=$,{entityFns:X,mutationFns:T}=K5.create({id:K,name:q,createdAt:O,updatedAt:w}),G=()=>Y,v=()=>z,f=()=>P,A=()=>J,C=()=>W,V=()=>H,M=()=>Z,I=Object.freeze({...X,getOwnerEntityId:G,getLabel:v,getDescription:f,getPrimitiveType:A,getRequired:C,getMultiplicity:V,getIsSystem:M,toJSON:()=>({id:X.getObjectId(),ownerEntityId:G(),name:X.getName(),label:v(),description:f(),primitiveType:A(),required:C(),multiplicity:V(),isSystem:M(),createdAt:X.getCreatedAt(),updatedAt:X.getUpdatedAt()})}),D=Object.freeze({...T});return{entity:I,mutationApi:D}},Wx=Object.freeze({create:oW6});var aW6=({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]},P=()=>{return[...Y]},J=()=>{return q},W=()=>{return q.getMultiplicity()==="multi"};return Object.freeze({getValue:z,getValues:P,getDefinition:J,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]}})},Hx=Object.freeze({create:aW6});R4();R4();var $H6=($)=>{let K=$.trim();Y8.factory(!K,t.validation,"Folder name cannot be empty","EMPTY_NAME"),Y8.factory(K.length>255,t.validation,"Folder name cannot exceed 255 characters","NAME_TOO_LONG");let q=/[/\\:*?"<>|]/;return Y8.factory(q.test(K),t.validation,'Folder name contains invalid characters: /\\:*?"<>|',"INVALID_CHARS"),K},KH6=($)=>{return $.getParentId()===null},HK=Object.freeze({validateFolderName:$H6,isRootFolder:KH6});R4();var qH6=($)=>{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}},YH6=($,K,q)=>`${$}${K}${q}`,zH6=($,K)=>{Y8.factory($!==K,t.validation,`Store code mismatch: expected ${K}, got ${$}`,"STORE_CODE_MISMATCH")},zW=Object.freeze({parseId:qH6,buildId:YH6,validateStoreCode:zH6});var EP8=($)=>{let{entityFns:K,mutationFns:q}=YW.create($),Y=()=>"d",P=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()})}),J=Object.freeze({...q});return{entity:P,mutationApi:J}},PH6=($,K,q,Y,z,P,J=null,W=null)=>{return EP8({id:K,parentId:q,name:$.name,path:Y,publishedVersionNumber:z,hasDraft:P,draftContent:J,publishedContent:W,createdAt:$.created_at,updatedAt:$.updated_at})},LP8=Object.freeze({create:EP8,createFromRow:PH6});var IP8=($)=>{let{entityFns:K,mutationFns:q}=YW.create($),Y=()=>"t",P=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()})}),J=Object.freeze({...q});return{entity:P,mutationApi:J}},JH6=($,K,q,Y,z,P,J=null,W=null)=>{return IP8({id:K,parentId:q,name:$.name,path:Y,publishedVersionNumber:z,hasDraft:P,draftContent:J,publishedContent:W,createdAt:$.created_at,updatedAt:$.updated_at})},xP8=Object.freeze({create:IP8,createFromRow:JH6});R4();var bP8=($)=>{let K=zW.parseId($);if(!K)throw t.notFound(`Invalid entity ID format: ${$}`,"NOT_FOUND");let{storeCode:q,typeCode:Y,seq:z}=K;return{entityId:`${Y}${z}`,storeCode:q,typeCode:Y,seq:z}},WH6=($)=>{let{typeCode:K}=bP8($);return K},HH6={d:LP8.createFromRow,t:xP8.createFromRow},ZH6=($)=>{let K=HH6[$];if(!K)throw new Error(`Unknown content type: ${$}`);return K},OH6=($)=>{return{d:"document",t:"template"}[$]||"content"},m1=Object.freeze({resolveEntityId:bP8,getTypeFromId:WH6,getEntityFactory:ZH6,getContentTypeLabel:OH6,buildId:zW.buildId,parseId:zW.parseId});var{parseId:O4,buildId:Zx,validateStoreCode:wH6}=zW,{validateFolderName:gP8,isRootFolder:gg1}=HK,yg1=yP8.default("caw:stores:db"),PW=3600000,XH6=({id:$,code:K,name:q,pk:Y,folderCache:z,createdAt:P,updatedAt:J})=>{let W=new Map,{entityFns:H,mutationFns:Z}=K5.create({id:$,name:q,createdAt:P,updatedAt:J}),O=()=>new Set([K]),w=()=>"local",X=()=>K,T=()=>Y,G=()=>({id:$,code:K,name:H.getName(),createdAt:H.getCreatedAt(),updatedAt:H.getUpdatedAt(),type:"local"}),v=(E)=>{wH6(E,K)},f=async(E,u)=>{if(!u)return null;if(z){let d=z.get(u);if(d)return d.getPk()}if(!O4(u))Y8.factory(!0,t.validation,`Invalid parent folder ID: ${u}`,"INVALID_ID");let Q=await E.selectFrom("entities").select("id").where("store_id","=",Y).where("object_id","=",u).where("deleted_at","is",null).executeTakeFirst();return Q?Q.id:null},A=async(E,u)=>{let y=await E.selectFrom("entities").select(["name","parent_folder_id","parent_object_id","object_id"]).where("id","=",u).where("deleted_at","is",null).executeTakeFirst();Y8.factory(!y,t.notFound,`Entity not found for PK ${u}`,"ENTITY_NOT_FOUND");let Q=y.object_id,d=z?z.get(Q):null;if(d){let w8=d.getEntity();if(w8.getName()===y.name&&w8.getParentId()===y.parent_object_id)return w8.getPath()}if(y.name===null)return"";if(!y.parent_object_id)return y.name;let $8=z?z.get(y.parent_object_id):null;if($8){let k8=$8.getEntity().getPath();return k8?`${k8}/${y.name}`:y.name}let W8=[y.name],z8=y.parent_folder_id;while(z8!==null){let w8=W.get(z8),k8=w8&&z?z.get(w8):null;if(k8){let h6=k8.getEntity().getPath();if(h6){let o8=h6.split("/").filter((d6)=>d6);W8.unshift(...o8)}break}let m8=await E.selectFrom("entities").select(["name","parent_folder_id"]).where("id","=",z8).where("deleted_at","is",null).executeTakeFirst();if(Y8.factory(!m8,t.notFound,`Folder not found for PK ${z8}`,"FOLDER_NOT_FOUND"),m8.name!==null)W8.unshift(m8.name);z8=m8.parent_folder_id}return W8.join("/")},C=async(E,u)=>{let y=[],Q=[u];while(Q.length>0){let d=Q.shift(),$8=await E.selectFrom("entities").select(["id","type_code"]).where("store_id","=",Y).where("parent_folder_id","=",d).where("deleted_at","is",null).execute();for(let W8 of $8)if(y.push(W8.id),W8.type_code==="f")Q.push(W8.id)}return y},V=async(E,u,y,Q)=>{let d=K4(),$8=await uz.readEntityTypeId(E,{},"f",Q),W8=await q5.nextSeq(E,"store",Y,"f"),z8=await f(E,u),w8=Zx(K,"f",W8),k8=await E.insertInto("entities").values({store_id:Y,object_id:w8,entity_type_id:$8,type_code:"f",seq:W8,parent_folder_id:z8,parent_object_id:u,name:y,created_at:d,updated_at:d}).returningAll().executeTakeFirstOrThrow();return await E.insertInto("folders").values({entity_id:k8.id}).execute(),{row:k8,id:w8}},M=(E)=>{let u=null;if(E.owner_entity_id!==null)u=W.get(E.owner_entity_id)??null;let{entity:y,mutationApi:Q}=Wx.create({id:E.object_id,name:E.name,ownerEntityId:u,label:E.label,description:E.description,primitiveType:E.primitive_type,required:E.required===1,multiplicity:E.multiplicity,isSystem:E.is_system===1,createdAt:E.created_at,updatedAt:E.updated_at});return{entity:y,mutationApi:Q,pk:E.id}},R=async(E,u)=>{let y=await E.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(),Q=new Map;for(let $8 of y){let W8=$8.def_id;if(!Q.has(W8))Q.set(W8,{definition:{id:$8.def_object_id,name:$8.def_name,label:$8.def_label,description:$8.def_description,primitiveType:$8.def_primitive_type,required:$8.def_required===1,multiplicity:$8.def_multiplicity,isSystem:$8.def_is_system===1,ownerEntityId:$8.def_owner_entity_id?W.get($8.def_owner_entity_id):null,createdAt:$8.def_created_at,updatedAt:$8.def_updated_at},values:[]});Q.get(W8).values.push($8.value)}let d=[];for(let{definition:$8,values:W8}of Q.values()){let{entity:z8}=Wx.create($8),w8=Hx.create({definition:z8,values:W8});d.push(w8)}return d},I=async(E,u)=>{let y=await E.selectFrom("field_definitions").selectAll().where("store_id","=",Y).where("seq","=",1).where("type_code","=","n").executeTakeFirst();if(!y)return null;if(y.owner_entity_id){let d=await E.selectFrom("entities").select("object_id").where("id","=",y.owner_entity_id).executeTakeFirst();if(d)W.set(y.owner_entity_id,d.object_id)}let Q=`${K}n1`;return W.set(y.id,Q),M(y)},D=async(E,u,{storeCode:y,parentId:Q,name:d,subtype:$8})=>{if(y!==void 0)v(y);if(d!==null&&d!==void 0)gP8(d);let{row:W8,id:z8}=await V(E,Q,d,$8||null),w8=W8.id;W.set(w8,z8);let k8=await A(E,w8),{entity:m8,mutationApi:Q8}=mz.createFromRow(W8,z8,Q,k8);return{entity:m8,mutationApi:Q8,pk:w8}},m=async(E,u,{id:y})=>{let Q=O4(y);if(!Q)return null;let d=await E.selectFrom("entities").innerJoin("folders","folders.entity_id","entities.id").selectAll("entities").where("entities.store_id","=",Y).where("entities.seq","=",Q.seq).where("entities.type_code","=","f").where("entities.deleted_at","is",null).executeTakeFirst();if(!d)return null;let{id:$8,parent_object_id:W8}=d;W.set($8,y);let z8=await A(E,$8),w8=await R(E,$8),{entity:k8,mutationApi:m8}=mz.createFromRow(d,y,W8,z8);for(let Q8 of w8)m8.setField(Q8.getDefinition().getName(),Q8);return{entity:k8,mutationApi:m8,pk:$8}},b=async(E,u,{id:y,name:Q,parentId:d})=>{let $8=O4(y);Y8.factory(!$8,t.validation,`Invalid folder ID: ${y}`,"INVALID_ID");let W8=await E.selectFrom("entities").selectAll().where("store_id","=",Y).where("seq","=",$8.seq).where("type_code","=","f").where("deleted_at","is",null).executeTakeFirst();Y8.factory(!W8,t.notFound,`Folder not found: ${y}`,"FOLDER_NOT_FOUND");let z8=W8.id,w8={name:W8.name,parentId:W8.parent_object_id,path:null};if(W.set(z8,y),w8.path=await A(E,z8),Q!==void 0)gP8(Q);let k8={};if(Q!==void 0)k8.name=Q;if(d!==void 0){let n6=await f(E,d);k8.parent_folder_id=n6,k8.parent_object_id=d}k8.updated_at=K4();let m8=await E.updateTable("entities").set(k8).where("id","=",z8).returningAll().executeTakeFirstOrThrow(),Q8=await A(E,z8),h6=await R(E,z8),{entity:o8,mutationApi:d6}=mz.createFromRow(m8,y,m8.parent_object_id,Q8);for(let n6 of h6)d6.setField(n6.getDefinition().getName(),n6);return{entity:o8,mutationApi:d6,pk:z8,oldValues:w8}},h=async(E,u,{id:y})=>{let Q=O4(y);Y8.factory(!Q,t.validation,`Invalid folder ID: ${y}`,"INVALID_ID");let d=await E.selectFrom("entities").selectAll().where("store_id","=",Y).where("seq","=",Q.seq).where("type_code","=","f").where("deleted_at","is",null).executeTakeFirst();Y8.factory(!d,t.notFound,`Folder not found: ${y}`,"FOLDER_NOT_FOUND");let $8=d.id;W.set($8,y);let W8=await A(E,$8),z8=await C(E,$8),w8=K4();await E.updateTable("entities").set({deleted_at:w8}).where("id","in",[$8,...z8]).execute();let k8=[];for(let m8 of z8){let Q8=await E.selectFrom("entities").select("object_id").where("id","=",m8).executeTakeFirst();if(Q8)k8.push(Q8.object_id)}return{id:y,deleted:!0,descendantCount:z8.length,path:W8,descendantIds:k8,deletedPks:[$8,...z8]}},L=async(E,u,y,Q,d=null)=>{let $8=await f(E,y),W8=E.selectFrom("entities").select("object_id").where("store_id","=",Y).where("parent_folder_id",$8===null?"is":"=",$8).where("name","=",Q).where("deleted_at","is",null);if(d)W8=W8.where("object_id","!=",d);return!!await W8.executeTakeFirst()},B=async(E,u,y,Q)=>{let d=await f(E,y),$8=await E.selectFrom("entities").innerJoin("folders","folders.entity_id","entities.id").selectAll("entities").where("entities.store_id","=",Y).where("entities.parent_folder_id",d===null?"is":"=",d).where("entities.name","=",Q).where("entities.deleted_at","is",null).executeTakeFirst();if(!$8)return null;let{id:W8,object_id:z8}=$8;W.set(W8,z8);let w8=await A(E,W8),k8=await R(E,W8),{entity:m8,mutationApi:Q8}=mz.createFromRow($8,z8,y,w8);for(let h6 of k8)Q8.setField(h6.getDefinition().getName(),h6);return{entity:m8,mutationApi:Q8,pk:W8}},i=async(E,u,{folderId:y,type:Q})=>{let d;if(y){if(d=await f(E,y),d===null)return[]}else if(Q){let w8=await N8(E,u,Q);if(!w8)return[];d=w8.pk}else d=null;let $8=E.selectFrom("entities").selectAll().where("store_id","=",Y).where("parent_folder_id",d===null?"is":"=",d).where("deleted_at","is",null);if(Q)$8=$8.where("type_code","=","f").innerJoin("folders","folders.entity_id","entities.id");let W8=await $8.execute(),z8=[];for(let w8 of W8){let{id:k8,object_id:m8}=w8;W.set(k8,m8);let Q8=await A(E,k8),h6=await R(E,k8),{entity:o8,mutationApi:d6}=mz.createFromRow(w8,m8,w8.parent_object_id,Q8);for(let n6 of h6)d6.setField(n6.getDefinition().getName(),n6);z8.push({entity:o8,mutationApi:d6,pk:k8})}return z8},X8=async(E,u,{path:y,type:Q})=>{let d=(y??"").trim(),$8=await E.selectFrom("entities").selectAll().where("store_id","=",Y).where("type_code","=","f").where("deleted_at","is",null).execute();for(let W8 of $8){let z8=await m(E,u,{id:W8.object_id});if(z8&&z8.entity.getPath()===d)return z8}return null},N8=async(E,u,y,Q)=>{if(Q!==void 0)v(Q);let d=y==="d"?"root_d":"root_t",$8=await uz.readEntityTypeId(E,u,"f",d),W8=await E.selectFrom("entities").innerJoin("folders","folders.entity_id","entities.id").selectAll("entities").where("entities.store_id","=",Y).where("entities.entity_type_id","=",$8).where("entities.deleted_at","is",null).executeTakeFirst();if(!W8)return null;let{id:z8,object_id:w8}=W8;W.set(z8,w8);let k8=await A(E,z8),m8=await R(E,z8),{entity:Q8,mutationApi:h6}=mz.createFromRow(W8,w8,W8.parent_object_id,k8);for(let o8 of m8)h6.setField(o8.getDefinition().getName(),o8);return{entity:Q8,mutationApi:h6,pk:z8}},h8=async(E,u,{storeCode:y,ownerEntityId:Q,name:d,label:$8,description:W8,primitiveType:z8,required:w8,multiplicity:k8,isSystem:m8=!1})=>{if(y!==void 0)v(y);Y8.factory(z8!=="string"&&z8!=="object_ref",t.validation,`Invalid primitiveType: ${z8}`,"INVALID_PRIMITIVE_TYPE"),Y8.factory(k8!=="single"&&k8!=="multi",t.validation,`Invalid multiplicity: ${k8}`,"INVALID_MULTIPLICITY");let Q8=K4(),h6=await uz.readEntityTypeId(E,u,"n",null),o8=await q5.nextSeq(E,"store",Y,"n"),d6=Zx(K,"n",o8),n6=Q?await f(E,Q):null,L$=await E.insertInto("field_definitions").values({store_id:Y,object_id:d6,entity_type_id:h6,type_code:"n",seq:o8,owner_entity_id:n6,name:d,label:$8,description:W8,primitive_type:z8,required:w8?1:0,multiplicity:k8,is_system:m8?1:0,created_at:Q8,updated_at:Q8}).returningAll().executeTakeFirstOrThrow(),u3=L$.id;return W.set(u3,d6),M(L$)},c8=async(E,u,{id:y})=>{let Q=O4(y);if(!Q)return null;let d=await E.selectFrom("field_definitions").selectAll().where("store_id","=",Y).where("seq","=",Q.seq).where("type_code","=","n").executeTakeFirst();if(!d)return null;if(d.owner_entity_id){let $8=await E.selectFrom("entities").select("object_id").where("id","=",d.owner_entity_id).executeTakeFirst();if($8)W.set(d.owner_entity_id,$8.object_id)}return W.set(d.id,y),M(d)},E8=async(E,u,y,Q)=>{let d=await E.selectFrom("field_definitions").selectAll().where("store_id","=",Y).where("name","=",y).where("owner_entity_id",Q===null?"is":"=",Q).executeTakeFirst();if(!d)return null;if(d.owner_entity_id){let $8=await E.selectFrom("entities").select("object_id").where("id","=",d.owner_entity_id).executeTakeFirst();if($8)W.set(d.owner_entity_id,$8.object_id)}return W.set(d.id,d.object_id),M(d)},g8=async(E,u,{fieldDefinitionId:y,fieldName:Q,ownerEntityPk:d})=>{if(y){let W8=await c8(E,u,{id:y});if(W8)return W8}if(Q&&d){let W8=await E8(E,u,Q,d);if(W8)return W8}if(Q){let W8=await E8(E,u,Q,null);if(W8)return W8}let $8=await I(E);return Y8.factory(!$8,t.notFound,"No field definition found and no default available","NO_FIELD_DEFINITION"),$8},t8=async(E,u,{ownerEntityPk:y,includeSystem:Q=!0})=>{let d=E.selectFrom("field_definitions").selectAll().where("store_id","=",Y).where("owner_entity_id",y===null?"is":"=",y);if(!Q)d=d.where("is_system","=",0);let $8=await d.execute(),W8=[];for(let z8 of $8){if(z8.owner_entity_id){let w8=await E.selectFrom("entities").select("object_id").where("id","=",z8.owner_entity_id).executeTakeFirst();if(w8)W.set(z8.owner_entity_id,w8.object_id)}W.set(z8.id,z8.object_id),W8.push(M(z8))}return W8},v4=async(E,u,{id:y})=>{let Q=O4(y);Y8.factory(!Q,t.validation,`Invalid definition ID: ${y}`,"INVALID_ID");let d=await E.selectFrom("field_definitions").selectAll().where("store_id","=",Y).where("seq","=",Q.seq).where("type_code","=","n").executeTakeFirst();Y8.factory(!d,t.notFound,`Field definition not found: ${y}`,"DEFINITION_NOT_FOUND"),Y8.factory(d.is_system===1,t.validation,`Cannot delete system field definition: ${y}`,"SYSTEM_DEFINITION");let $8=d.id;if(await E.deleteFrom("field_definitions").where("id","=",$8).execute(),d.owner_entity_id){let z8=await E.selectFrom("entities").select("object_id").where("id","=",d.owner_entity_id).executeTakeFirst();if(z8)W.set(d.owner_entity_id,z8.object_id)}let{entity:W8}=M(d);return W8},g3=async(E,u,{entityId:y,fieldDefinitionId:Q,fieldName:d,value:$8,values:W8})=>{let z8=O4(y);Y8.factory(!z8,t.validation,`Invalid entity ID: ${y}`,"INVALID_ID");let w8=await E.selectFrom("entities").select("id").where("store_id","=",Y).where("seq","=",z8.seq).where("type_code","=",z8.typeCode).where("deleted_at","is",null).executeTakeFirst();Y8.factory(!w8,t.notFound,`Entity not found: ${y}`,"ENTITY_NOT_FOUND");let k8=w8.id,{entity:m8,pk:Q8}=await g8(E,u,{fieldDefinitionId:Q,fieldName:d,ownerEntityPk:k8}),h6=m8.getMultiplicity(),o8;if(h6==="single")if(W8&&Array.isArray(W8))Y8.factory(W8.length>1||W8.length===0,t.validation,`Field '${m8.getName()}' is single-valued but received ${W8.length} values`,"MULTIPLICITY_VIOLATION"),o8=[W8[0]];else Y8.factory($8===void 0,t.validation,"Single-valued field requires value parameter","VALUE_REQUIRED"),o8=[$8];else if(W8&&Array.isArray(W8))o8=W8;else if($8!==void 0)o8=[$8];else Y8.factory(!0,t.validation,"Multi-valued field requires either value or values parameter","VALUE_OR_VALUES_REQUIRED");await E.deleteFrom("field_values").where("entity_id","=",k8).where("field_definition_id","=",Q8).execute();let d6=K4();for(let xY of o8)await E.insertInto("field_values").values({entity_id:k8,field_definition_id:Q8,value:xY,updated_at:d6}).execute();let n6=o8,L$=Hx.create({definition:m8,values:n6}),u3;if(z8.typeCode==="f")u3=await m(E,u,{id:y});else u3=await a(E,u,{id:y});return Y8.factory(!u3,t.notFound,`Entity not found after field update: ${y}`,"ENTITY_NOT_FOUND"),{...u3,field:L$,fieldName:m8.getName()}},v8=async(E,u,{entityId:y,fieldDefinitionId:Q,fieldName:d})=>{let $8=O4(y);Y8.factory(!$8,t.validation,`Invalid entity ID: ${y}`,"INVALID_ID");let W8=await E.selectFrom("entities").select("id").where("store_id","=",Y).where("seq","=",$8.seq).where("type_code","=",$8.typeCode).where("deleted_at","is",null).executeTakeFirst();Y8.factory(!W8,t.notFound,`Entity not found: ${y}`,"ENTITY_NOT_FOUND");let z8=W8.id,{entity:w8,pk:k8}=await g8(E,u,{fieldDefinitionId:Q,fieldName:d,ownerEntityPk:z8});await E.deleteFrom("field_values").where("entity_id","=",z8).where("field_definition_id","=",k8).execute();let m8;if($8.typeCode==="f")m8=await m(E,u,{id:y});else m8=await a(E,u,{id:y});return Y8.factory(!m8,t.notFound,`Entity not found after field delete: ${y}`,"ENTITY_NOT_FOUND"),{...m8,fieldName:w8.getName()}},r=async(E,u,{type:y,storeCode:Q,parentId:d,name:$8,initialContent:W8})=>{let z8=m1.getEntityFactory(y);if(Q!==void 0)v(Q);let w8=K4(),k8=await uz.readEntityTypeId(E,u,y,null),m8=await q5.nextSeq(E,"store",Y,y),Q8=Zx(K,y,m8),h6=await f(E,d),o8=await E.insertInto("entities").values({store_id:Y,object_id:Q8,entity_type_id:k8,type_code:y,seq:m8,parent_folder_id:h6,parent_object_id:d,name:$8,created_at:w8,updated_at:w8}).returningAll().executeTakeFirstOrThrow();await E.insertInto("documents").values({entity_id:o8.id,published_version_id:null}).execute();let d6=W8!==null&&W8!==void 0;if(d6)await E.insertInto("document_drafts").values({entity_id:o8.id,content:W8,updated_at:w8}).execute();let n6=o8.id;W.set(n6,Q8);let L$=await A(E,n6),{entity:u3,mutationApi:xY}=z8(o8,Q8,d,L$,null,d6,d6?W8:null,null);return{entity:u3,mutationApi:xY,pk:n6}},a=async(E,u,{id:y})=>{let Q=O4(y);if(!Q)return null;let{typeCode:d,seq:$8}=Q,W8=m1.getEntityFactory(d),z8=await E.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",U$.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","=",$8).where("e.deleted_at","is",null).executeTakeFirst();if(!z8)return null;let w8=z8.entity_id;W.set(w8,y);let k8=await A(E,w8),m8=await R(E,w8),{entity:Q8,mutationApi:h6}=W8(z8,z8.object_id,z8.parent_object_id,k8,z8.published_version_number,z8.has_draft===1,z8.draft_content??null,z8.published_content??null);for(let o8 of m8)h6.setField(o8.getDefinition().getName(),o8);if(z8.edit_client_id)h6.setEditState({clientId:z8.edit_client_id,startedAt:z8.edit_started_at,lastActivityAt:z8.edit_activity});return{entity:Q8,mutationApi:h6,pk:w8}},s=async(E,u,{id:y,name:Q,parentId:d})=>{let $8=O4(y);Y8.factory(!$8,t.validation,`Invalid content ID: ${y}`,"INVALID_ID");let{typeCode:W8,seq:z8}=$8,w8=m1.getContentTypeLabel(W8),k8=m1.getEntityFactory(W8),m8=await E.selectFrom("entities").selectAll().where("store_id","=",Y).where("seq","=",z8).where("type_code","=",W8).where("deleted_at","is",null).executeTakeFirst();Y8.factory(!m8,t.notFound,`${w8} not found: ${y}`,"NOT_FOUND");let Q8=m8.id,h6={name:m8.name,parentId:m8.parent_object_id,path:null};W.set(Q8,y),h6.path=await A(E,Q8);let d6={updated_at:K4()};if(Q!==void 0)d6.name=Q;if(d!==void 0){let i5=await f(E,d);d6.parent_folder_id=i5,d6.parent_object_id=d}let n6=await E.updateTable("entities").set(d6).where("id","=",Q8).returningAll().executeTakeFirstOrThrow(),L$=await E.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",U$.raw("CASE WHEN dd.entity_id IS NOT NULL THEN 1 ELSE 0 END").as("has_draft")]).where("d.entity_id","=",Q8).executeTakeFirst(),u3=await A(E,Q8),xY=await R(E,Q8),{entity:kP,mutationApi:hv}=k8(n6,y,n6.parent_object_id,u3,L$.published_version_number,L$.has_draft===1,L$.draft_content??null,L$.published_content??null);for(let i5 of xY)hv.setField(i5.getDefinition().getName(),i5);return{entity:kP,mutationApi:hv,pk:Q8,oldValues:h6}},K8=async(E,u,{id:y})=>{let Q=O4(y);Y8.factory(!Q,t.validation,`Invalid content ID: ${y}`,"INVALID_ID");let{typeCode:d,seq:$8}=Q,W8=m1.getContentTypeLabel(d),z8=await E.selectFrom("entities").selectAll().where("store_id","=",Y).where("seq","=",$8).where("type_code","=",d).where("deleted_at","is",null).executeTakeFirst();Y8.factory(!z8,t.notFound,`${W8} not found: ${y}`,"NOT_FOUND");let w8=z8.id;W.set(w8,y);let k8=await A(E,w8),m8=K4();return await E.updateTable("entities").set({deleted_at:m8}).where("id","=",w8).execute(),{id:y,deleted:!0,path:k8}},P8=async(E,u,{id:y,content:Q,clientId:d})=>{let $8=O4(y);Y8.factory(!$8,t.validation,`Invalid content ID: ${y}`,"INVALID_ID"),Y8.factory(!d,t.validation,"clientId is required","MISSING_CLIENT_ID");let{typeCode:W8,seq:z8}=$8,w8=m1.getContentTypeLabel(W8),k8=K4(),m8=await E.selectFrom("entities").select("id").where("store_id","=",Y).where("type_code","=",W8).where("seq","=",z8).where("deleted_at","is",null).executeTakeFirst();Y8.factory(!m8,t.notFound,`${w8} not found: ${y}`,"NOT_FOUND");let Q8=m8.id;await E.insertInto("document_drafts").values({entity_id:Q8,content:Q,updated_at:k8}).onConflict((n6)=>n6.column("entity_id").doUpdateSet({content:Q,updated_at:k8})).execute();let o8=!await tK(E,u,{id:y,clientId:d}),d6=await a(E,u,{id:y});return Y8.factory(!d6,t.notFound,`${w8} not found after draft save: ${y}`,"NOT_FOUND"),{...d6,lockLost:o8}},H8=async(E,u,{id:y})=>{let Q=O4(y);Y8.factory(!Q,t.validation,`Invalid content ID: ${y}`,"INVALID_ID");let{typeCode:d,seq:$8}=Q,W8=m1.getContentTypeLabel(d),z8=K4(),w8=await E.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","=",$8).where("e.deleted_at","is",null).executeTakeFirst();Y8.factory(!w8,t.notFound,`No draft found for ${W8}: ${y}`,"DRAFT_NOT_FOUND");let k8=w8.entity_id,Q8=((await E.selectFrom("document_versions").select(E.fn.max("version_number").as("max_version")).where("entity_id","=",k8).executeTakeFirst())?.max_version||0)+1,h6=await E.insertInto("document_versions").values({entity_id:k8,version_number:Q8,content:w8.content,published_at:z8}).returningAll().executeTakeFirstOrThrow();await E.updateTable("documents").set({published_version_id:h6.id}).where("entity_id","=",k8).execute(),await E.deleteFrom("document_drafts").where("entity_id","=",k8).execute(),await E.deleteFrom("document_edit_state").where("entity_id","=",k8).execute();let o8=await a(E,u,{id:y});return Y8.factory(!o8,t.notFound,`${W8} not found after publish: ${y}`,"NOT_FOUND"),o8},O8=async(E,u,{id:y})=>{let Q=O4(y);Y8.factory(!Q,t.validation,`Invalid content ID: ${y}`,"INVALID_ID");let{typeCode:d,seq:$8}=Q,W8=m1.getContentTypeLabel(d),z8=await E.selectFrom("entities").select("id").where("store_id","=",Y).where("type_code","=",d).where("seq","=",$8).where("deleted_at","is",null).executeTakeFirst();Y8.factory(!z8,t.notFound,`${W8} not found: ${y}`,"NOT_FOUND"),await E.deleteFrom("document_drafts").where("entity_id","=",z8.id).execute();let w8=await a(E,u,{id:y});return Y8.factory(!w8,t.notFound,`${W8} not found after discard: ${y}`,"NOT_FOUND"),w8},A8=async(E,u,{id:y})=>{let Q=O4(y);if(!Q)return null;let{typeCode:d,seq:$8}=Q,W8=await E.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","=",$8).where("e.deleted_at","is",null).executeTakeFirst();if(!W8)return null;return{entityId:W8.object_id,content:W8.content,updatedAt:W8.updated_at}},A6=async(E,u,{id:y,versionNumber:Q})=>{let d=O4(y);if(!d)return null;let{typeCode:$8,seq:W8}=d,z8=await E.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","=",$8).where("e.seq","=",W8).where("e.deleted_at","is",null).where("dv.version_number","=",Q).executeTakeFirst();if(!z8)return null;return{entityId:z8.object_id,versionNumber:z8.version_number,content:z8.content,publishedAt:z8.published_at}},E6=async(E,u,{id:y})=>{let Q=O4(y);if(!Q)return[];let{typeCode:d,seq:$8}=Q;return(await E.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","=",$8).where("e.deleted_at","is",null).orderBy("dv.version_number","desc").execute()).map((z8)=>({versionNumber:z8.version_number,publishedAt:z8.published_at}))},$1=async(E,u,y,Q,d)=>{let $8=m1.getEntityFactory(d),W8=await f(E,y),z8=await E.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",U$.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",W8===null?"is":"=",W8).where("e.name","=",Q).where("e.deleted_at","is",null).executeTakeFirst();if(!z8)return null;let w8=z8.entity_id;W.set(w8,z8.object_id);let k8=await A(E,w8),m8=await R(E,w8),{entity:Q8,mutationApi:h6}=$8(z8,z8.object_id,z8.parent_object_id,k8,z8.published_version_number,z8.has_draft===1,z8.draft_content??null,z8.published_content??null);for(let o8 of m8)h6.setField(o8.getDefinition().getName(),o8);return{entity:Q8,mutationApi:h6,pk:w8}},y3=async(E,u,{parentId:y,type:Q})=>{let d=m1.getEntityFactory(Q),$8=await f(E,y),W8=await E.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",U$.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","=",Q).where("e.parent_folder_id",$8===null?"is":"=",$8).where("e.deleted_at","is",null).execute(),z8=[];for(let w8 of W8){let k8=w8.entity_id;W.set(k8,w8.object_id);let m8=await A(E,k8),Q8=await R(E,k8),{entity:h6,mutationApi:o8}=d(w8,w8.object_id,w8.parent_object_id,m8,w8.published_version_number,w8.has_draft===1,w8.draft_content??null,w8.published_content??null);for(let d6 of Q8)o8.setField(d6.getDefinition().getName(),d6);if(w8.edit_client_id)o8.setEditState({clientId:w8.edit_client_id,startedAt:w8.edit_started_at,lastActivityAt:w8.edit_activity});z8.push({entity:h6,mutationApi:o8,pk:k8})}return z8},g7=async(E,u,{id:y,clientId:Q})=>{let d=O4(y);Y8.factory(!d,t.validation,`Invalid ID: ${y}`,"INVALID_ID");let $8=K4(),W8=new Date(Date.now()-PW).toISOString(),z8=await E.selectFrom("entities").select("id").where("store_id","=",Y).where("type_code","=",d.typeCode).where("seq","=",d.seq).where("deleted_at","is",null).executeTakeFirst();Y8.factory(!z8,t.notFound,`Entity not found: ${y}`,"ENTITY_NOT_FOUND");let w8=z8.id,k8=await E.selectFrom("document_edit_state").selectAll().where("entity_id","=",w8).executeTakeFirst();if(k8)if(k8.client_id===Q)return await E.updateTable("document_edit_state").set({started_at:$8,last_activity_at:$8}).where("entity_id","=",w8).execute(),{success:!0};else if(k8.last_activity_at<W8)return await E.updateTable("document_edit_state").set({client_id:Q,started_at:$8,last_activity_at:$8}).where("entity_id","=",w8).execute(),{success:!0};else return{success:!1,meta:{lockedBy:k8.client_id,lockedSince:k8.started_at,timeoutSeconds:PW/1000}};else return await E.insertInto("document_edit_state").values({entity_id:w8,client_id:Q,started_at:$8,last_activity_at:$8}).execute(),{success:!0}},tK=async(E,u,{id:y,clientId:Q})=>{let d=O4(y);if(!d)return!1;let $8=await E.selectFrom("entities").select("id").where("store_id","=",Y).where("type_code","=",d.typeCode).where("seq","=",d.seq).executeTakeFirst();if(!$8)return!1;return((await E.updateTable("document_edit_state").set({last_activity_at:K4()}).where("entity_id","=",$8.id).where("client_id","=",Q).execute())[0]?.numUpdatedRows||0)>0},c=Object.freeze({...H,getCodes:O,getType:w,getCode:X,getPk:T,toJSON:G,createFolder:D,readFolder:m,updateFolder:b,deleteFolder:h,isDuplicateNameInParent:L,findFolderByName:B,listFolderContents:i,getFolderByPath:X8,readRootFolderForType:N8,createContent:r,readContent:a,updateContent:s,deleteContent:K8,saveDraft:P8,readDraft:A8,publishContent:H8,discardDraft:O8,readVersion:A6,getVersions:E6,findContentByName:$1,listContent:y3,createFieldDefinition:h8,readFieldDefinition:c8,readDefaultFieldDefinition:I,findFieldDefinitionByName:E8,resolveFieldDefinition:g8,getFieldDefinitionsForOwner:t8,deleteFieldDefinition:v4,setFieldValue:g3,deleteFieldValue:v8,setEditState:g7,clearEditState:async(E,u,{id:y})=>{let Q=O4(y);Y8.factory(!Q,t.validation,`Invalid ID: ${y}`,"INVALID_ID");let d=await E.selectFrom("entities").select("id").where("store_id","=",Y).where("type_code","=",Q.typeCode).where("seq","=",Q.seq).executeTakeFirst();Y8.factory(!d,t.notFound,`Entity not found: ${y}`,"ENTITY_NOT_FOUND"),await E.deleteFrom("document_edit_state").where("entity_id","=",d.id).execute()},getEditState:async(E,u,{id:y})=>{let Q=O4(y);if(!Q)return null;let d=await E.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","=",Q.typeCode).where("e.seq","=",Q.seq).executeTakeFirst();if(!d)return null;return{clientId:d.client_id,startedAt:d.started_at,lastActivityAt:d.last_activity_at}}}),o=Object.freeze({...Z});return{store:c,mutationApi:o}},uP8=Object.freeze({create:XH6});var TH6=({inner:$,folderCache:K,contentCache:q,fieldDefinitionCache:Y})=>{let z=async(r,a,s,K8)=>{let P8=await $.createFolder(r,a,s),{entity:H8,mutationApi:O8,pk:A8}=P8;return K8(()=>{K.set(H8.getObjectId(),l6.create(H8,O8,A8))}),H8},P=async(r,a,{id:s})=>{let K8=K.get(s);if(K8)return K8.getEntity();let P8=await $.readFolder(r,a,{id:s});if(!P8)return null;let{entity:H8,mutationApi:O8,pk:A8}=P8;return K.set(s,l6.create(H8,O8,A8)),H8},J=async(r,a,s,K8)=>{let{id:P8}=s,H8=K.get(P8),O8=await $.updateFolder(r,a,s),A8=s.name!==void 0&&s.name!==O8.oldValues.name||s.parentId!==void 0&&s.parentId!==O8.oldValues.parentId;return K8(()=>{if(H8){let E6=H8.getMutationApi();if(s.name!==void 0)E6.setName(s.name);if(s.parentId!==void 0)E6.setParentId(s.parentId);E6.setUpdatedAt(O8.entity.getUpdatedAt()),E6.setPath(O8.entity.getPath())}else{let{entity:E6,mutationApi:$1,pk:y3}=O8;K.set(P8,l6.create(E6,$1,y3))}if(A8){let $1=O8.oldValues.path+"/";for(let[y3,g7]of K.entries())if(g7.getEntity().getPath().startsWith($1))K.remove(y3)}}),{entity:H8?H8.getEntity():O8.entity,oldValues:O8.oldValues}},W=async(r,a,{id:s},K8)=>{let P8=K.get(s),H8=P8?P8.getEntity().getPath():null,O8=await $.deleteFolder(r,a,{id:s});return K8(()=>{K.remove(s);for(let A8 of O8.descendantIds||[])K.remove(A8)}),{...O8,path:H8}},H=async(r,a,s)=>{let K8=await $.listFolderContents(r,a,s);for(let P8 of K8)K.set(P8.entity.getObjectId(),l6.create(P8.entity,P8.mutationApi,P8.pk));return K8.map((P8)=>P8.entity)},Z=async(r,a,s)=>{let K8=await $.getFolderByPath(r,a,s);if(!K8)return null;let{entity:P8,mutationApi:H8,pk:O8}=K8;return K.set(P8.getObjectId(),l6.create(P8,H8,O8)),P8},O=async(r,a,s,K8)=>{let P8=await $.findFolderByName(r,a,s,K8);if(!P8)return null;let{entity:H8,mutationApi:O8,pk:A8}=P8;return K.set(H8.getObjectId(),l6.create(H8,O8,A8)),H8},w=async(r,a,s)=>{let K8=await $.readRootFolderForType(r,a,s);if(!K8)return null;let{entity:P8,mutationApi:H8,pk:O8}=K8;return K.set(P8.getObjectId(),l6.create(P8,H8,O8)),P8},X=async(r,a,s,K8,P8)=>{return $.isDuplicateNameInParent(r,a,s,K8,P8)},T=async(r,a,s,K8)=>{let P8=await $.createContent(r,a,s),{entity:H8,mutationApi:O8,pk:A8}=P8;return K8(()=>{q.set(H8.getObjectId(),l6.create(H8,O8,A8))}),H8},G=async(r,a,{id:s})=>{let K8=q.get(s);if(K8)return K8.getEntity();let P8=await $.readContent(r,a,{id:s});if(!P8)return null;let{entity:H8,mutationApi:O8,pk:A8}=P8;return q.set(s,l6.create(H8,O8,A8)),H8},v=async(r,a,s,K8)=>{let{id:P8}=s,H8=q.get(P8),O8=await $.updateContent(r,a,s);return K8(()=>{if(H8){let A8=H8.getMutationApi();if(s.name!==void 0)A8.setName(s.name);if(s.parentId!==void 0)A8.setParentId(s.parentId);A8.setUpdatedAt(O8.entity.getUpdatedAt()),A8.setPath(O8.entity.getPath())}else{let{entity:A8,mutationApi:A6,pk:E6}=O8;q.set(P8,l6.create(A8,A6,E6))}}),H8?H8.getEntity():O8.entity},f=async(r,a,{id:s},K8)=>{let P8=q.get(s),H8=P8?P8.getEntity().getPath():null,O8=await $.deleteContent(r,a,{id:s});return K8(()=>{q.remove(s)}),{...O8,path:H8}},A=async(r,a,s,K8)=>{let{id:P8}=s,H8=q.get(P8),O8=await $.saveDraft(r,a,s);K8(()=>{if(H8){let A6=H8.getMutationApi();A6.setDraftContent(O8.entity.getDraftContent()),A6.setHasDraft(O8.entity.hasDraftContent()),A6.setUpdatedAt(O8.entity.getUpdatedAt())}else{let{entity:A6,mutationApi:E6,pk:$1}=O8;q.set(P8,l6.create(A6,E6,$1))}});let A8=H8?H8.getEntity():O8.entity;if(O8.lockLost!==void 0)return{entity:A8,lockLost:O8.lockLost};return A8},C=async(r,a,s,K8)=>{let{id:P8}=s,H8=q.get(P8),O8=await $.publishContent(r,a,s);if(H8){let A8=H8.getMutationApi();return A8.setPublishedVersionNumber(O8.entity.getPublishedVersionNumber()),A8.setPublishedContent(O8.entity.getPublishedContent()),A8.setDraftContent(null),A8.setHasDraft(!1),A8.setUpdatedAt(O8.entity.getUpdatedAt()),H8.getEntity()}else return K8(()=>{let{entity:A8,mutationApi:A6,pk:E6}=O8;q.set(P8,l6.create(A8,A6,E6))}),O8.entity},V=async(r,a,s,K8)=>{let{id:P8}=s,H8=q.get(P8),O8=await $.discardDraft(r,a,s);return K8(()=>{if(H8){let A8=H8.getMutationApi();A8.setDraftContent(null),A8.setHasDraft(!1),A8.setUpdatedAt(O8.entity.getUpdatedAt())}else{let{entity:A8,mutationApi:A6,pk:E6}=O8;q.set(P8,l6.create(A8,A6,E6))}}),H8?H8.getEntity():O8.entity},M=async(r,a,s)=>{return $.readDraft(r,a,s)},R=async(r,a,s)=>{return $.readVersion(r,a,s)},I=async(r,a,s)=>{return $.getVersions(r,a,s)},D=async(r,a,s,K8,P8)=>{let H8=await $.findContentByName(r,a,s,K8,P8);if(!H8)return null;let{entity:O8,mutationApi:A8,pk:A6}=H8;return q.set(O8.getObjectId(),l6.create(O8,A8,A6)),O8},m=async(r,a,s)=>{let K8=await $.listContent(r,a,s);for(let P8 of K8)q.set(P8.entity.getObjectId(),l6.create(P8.entity,P8.mutationApi,P8.pk));return K8.map((P8)=>P8.entity)},b=async(r,a,s,K8)=>{let{id:P8}=s,H8=await $.setEditState(r,a,s);return K8(()=>{q.remove(P8)}),H8},h=async(r,a,s)=>{return $.getEditState(r,a,s)},L=async(r,a,s,K8)=>{let{id:P8}=s;await $.clearEditState(r,a,s),K8(()=>{q.remove(P8)})},B=async(r,a,s,K8)=>{let P8=await $.createFieldDefinition(r,a,s),{entity:H8,mutationApi:O8,pk:A8}=P8;return K8(()=>{Y.set(H8.getObjectId(),l6.create(H8,O8,A8))}),H8},i=async(r,a,{id:s})=>{let K8=Y.get(s);if(K8)return K8.getEntity();let P8=await $.readFieldDefinition(r,a,{id:s});if(!P8)return null;let{entity:H8,mutationApi:O8,pk:A8}=P8;return Y.set(s,l6.create(H8,O8,A8)),H8},X8=async(r,a,s,K8)=>{let P8=await $.findFieldDefinitionByName(r,a,s,K8);if(!P8)return null;let{entity:H8,mutationApi:O8,pk:A8}=P8;return Y.set(H8.getObjectId(),l6.create(H8,O8,A8)),H8},N8=async(r,a,s)=>{let K8=await $.getFieldDefinitionsForOwner(r,a,s);for(let P8 of K8)Y.set(P8.entity.getObjectId(),l6.create(P8.entity,P8.mutationApi,P8.pk));return K8.map((P8)=>P8.entity)},h8=async(r,a)=>{let s=`${$.getCode()}n1`,K8=Y.get(s);if(K8)return K8.getEntity();let P8=await $.readDefaultFieldDefinition(r,a),{entity:H8,mutationApi:O8,pk:A8}=P8;return Y.set(H8.getObjectId(),l6.create(H8,O8,A8)),H8},c8=async(r,a,s)=>{let K8=await $.resolveFieldDefinition(r,a,s),{entity:P8,mutationApi:H8,pk:O8}=K8;return Y.set(P8.getObjectId(),l6.create(P8,H8,O8)),P8},E8=async(r,a,{id:s},K8)=>{let P8=await $.deleteFieldDefinition(r,a,{id:s});return K8(()=>{Y.remove(s)}),P8},g8=async(r,a,s,K8)=>{let{entityId:P8}=s,H8=await $.setFieldValue(r,a,s);return K8(()=>{let O8=K.get(P8)||q.get(P8);if(O8){let A8=O8.getMutationApi(),A6=H8.entity.getField(H8.fieldName);A8.setField(H8.fieldName,A6)}}),H8.entity},t8=async(r,a,s)=>{return $.getFieldValue(r,a,s)},v4=async(r,a,s,K8)=>{let{entityId:P8}=s,H8=await $.deleteFieldValue(r,a,s);K8(()=>{let O8=K.get(P8)||q.get(P8);if(O8)O8.getMutationApi().removeField(H8.fieldName)})},g3=(r)=>{K.remove(r)};return Object.freeze({getObjectId:$.getObjectId,getName:$.getName,getCreatedAt:$.getCreatedAt,getUpdatedAt:$.getUpdatedAt,getCodes:$.getCodes,getType:$.getType,getCode:$.getCode,getPk:$.getPk,toJSON:$.toJSON,createFolder:z,readFolder:P,updateFolder:J,deleteFolder:W,listFolderContents:H,getFolderByPath:Z,findFolderByName:O,readRootFolderForType:w,isDuplicateNameInParent:X,createContent:T,readContent:G,updateContent:v,deleteContent:f,saveDraft:A,readDraft:M,publishContent:C,discardDraft:V,readVersion:R,getVersions:I,findContentByName:D,listContent:m,setEditState:b,getEditState:h,clearEditState:L,createFieldDefinition:B,readFieldDefinition:i,findFieldDefinitionByName:X8,getFieldDefinitionsForOwner:N8,readDefaultFieldDefinition:h8,resolveFieldDefinition:c8,deleteFieldDefinition:E8,setFieldValue:g8,getFieldValue:t8,deleteFieldValue:v4,evictFolder:g3})},mP8=Object.freeze({create:TH6});var jH6=($)=>{let K=new Map;return $.forEach((P)=>K.set(P,new Set)),Object.freeze({subscribe:(P,J)=>{return K.get(P)?.add(J),()=>K.get(P)?.delete(J)},subscribeAll:(P)=>{let J=[];for(let[W,H]of K){let Z=`on${W.charAt(0).toUpperCase()}${W.slice(1)}`;if(P[Z])H.add(P[Z]),J.push(()=>H.delete(P[Z]))}return()=>J.forEach((W)=>W())},notify:(P,J)=>{K.get(P)?.forEach((W)=>{try{W(J)}catch(H){console.error(`Error in ${P} handler:`,H)}})}})},pP8=Object.freeze({create:jH6});var T6=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 vH6=({inner:$,storeCode:K})=>{let q=pP8.create([T6.FOLDER_CREATED,T6.FOLDER_RENAMED,T6.FOLDER_MOVED,T6.FOLDER_DELETED,T6.DOCUMENT_CREATED,T6.DOCUMENT_RENAMED,T6.DOCUMENT_MOVED,T6.DOCUMENT_DELETED,T6.DOCUMENT_PUBLISHED,T6.DRAFT_SAVED,T6.DRAFT_DISCARDED,T6.TEMPLATE_CREATED,T6.TEMPLATE_RENAMED,T6.TEMPLATE_MOVED,T6.TEMPLATE_DELETED,T6.TEMPLATE_PUBLISHED,T6.TEMPLATE_DRAFT_SAVED,T6.TEMPLATE_DRAFT_DISCARDED]),Y=async(v8,r,a)=>{let s=await $.readFolder(v8,r,{id:a});if(!s)return null;let K8=await v8.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","=",a).executeTakeFirst();if(K8?.entity_type_code==="f"&&K8?.entity_type_subtype==="root_d")return"d";if(K8?.entity_type_code==="f"&&K8?.entity_type_subtype==="root_t")return"t";let P8=await $.readRootFolderForType(v8,r,"d"),H8=await $.readRootFolderForType(v8,r,"t"),O8=s;while(O8&&O8.getParentId()!==null){let A8=await $.readFolder(v8,r,{id:O8.getParentId()});if(!A8)break;O8=A8}if(O8&&O8.getObjectId()===P8?.getObjectId())return"d";else if(O8&&O8.getObjectId()===H8?.getObjectId())return"t";return null},z=async(v8,r,a,s)=>{let{parentId:K8,subtype:P8}=a,H8=await $.createFolder(v8,r,a,s),O8=null;if(P8==="root_d")O8="d";else if(P8==="root_t")O8="t";else{let A8=await $.readRootFolderForType(v8,r,"d"),A6=await $.readRootFolderForType(v8,r,"t");if(K8===A8?.getObjectId())O8="d";else if(K8===A6?.getObjectId())O8="t";else if(K8){let E6=await $.readFolder(v8,r,{id:K8});if(E6){let $1=E6;while($1&&$1.getParentId()!==null){let y3=await $.readFolder(v8,r,{id:$1.getParentId()});if(!y3)break;$1=y3}if($1&&$1.getObjectId()===A8?.getObjectId())O8="d";else if($1&&$1.getObjectId()===A6?.getObjectId())O8="t"}}}return s(()=>{q.notify(T6.FOLDER_CREATED,{id:H8.getObjectId(),storeCode:K,name:H8.getName(),path:H8.getPath(),parentFolderId:K8,contentType:O8})}),H8},P=async(v8,r,a)=>{return $.readFolder(v8,r,a)},J=async(v8,r,a,s)=>{let{id:K8,name:P8,parentId:H8}=a,O8=await $.updateFolder(v8,r,a,s),A8=O8.entity,A6=O8.oldValues.name,E6=O8.oldValues.parentId,$1=await Y(v8,r,K8);if(P8!==void 0&&P8!==A6)s(()=>{q.notify(T6.FOLDER_RENAMED,{id:K8,storeCode:K,parentFolderId:A8.getParentId(),contentType:$1,oldName:A6,newName:P8,path:A8.getPath()})});if(H8!==void 0&&H8!==E6)s(()=>{q.notify(T6.FOLDER_MOVED,{id:K8,storeCode:K,contentType:$1,oldParentFolderId:E6,parentFolderId:H8,path:A8.getPath()})});return A8},W=async(v8,r,a,s)=>{let{id:K8}=a,H8=(await $.readFolder(v8,r,{id:K8}))?.getParentId(),O8=await Y(v8,r,K8),A8=await $.deleteFolder(v8,r,a,s);return s(()=>{q.notify(T6.FOLDER_DELETED,{id:K8,storeCode:K,parentFolderId:H8,contentType:O8,path:A8.path,descendantCount:A8.descendantIds?.length||0})}),A8},H=async(v8,r,a)=>{return $.listFolderContents(v8,r,a)},Z=async(v8,r,a)=>{return $.getFolderByPath(v8,r,a)},O=async(v8,r,a,s)=>{return $.findFolderByName(v8,r,a,s)},w=async(v8,r,a)=>{return $.readRootFolderForType(v8,r,a)},X=async(v8,r,a,s,K8)=>{return $.isDuplicateNameInParent(v8,r,a,s,K8)},T=async(v8,r,a,s)=>{let{type:K8,parentId:P8}=a,H8=await $.createContent(v8,r,a,s),O8=K8==="t"?T6.TEMPLATE_CREATED:T6.DOCUMENT_CREATED;return s(()=>{q.notify(O8,{storeCode:K,id:H8.getObjectId(),type:K8,parentFolderId:P8,name:H8.getName(),path:H8.getPath()})}),H8},G=async(v8,r,a)=>{return $.readContent(v8,r,a)},v=async(v8,r,a,s)=>{let{id:K8,name:P8,parentId:H8}=a,O8=m1.getTypeFromId(K8),A8=await $.readContent(v8,r,{id:K8}),A6=A8?.getName(),E6=A8?.getParentId(),$1=await $.updateContent(v8,r,a,s),y3=O8==="t"?T6.TEMPLATE_RENAMED:T6.DOCUMENT_RENAMED,g7=O8==="t"?T6.TEMPLATE_MOVED:T6.DOCUMENT_MOVED;if(P8!==void 0&&P8!==A6)s(()=>{q.notify(y3,{storeCode:K,id:K8,type:O8,parentFolderId:$1.getParentId(),oldName:A6,newName:P8,path:$1.getPath()})});if(H8!==void 0&&H8!==E6)s(()=>{q.notify(g7,{storeCode:K,id:K8,type:O8,oldParentFolderId:E6,parentFolderId:H8,path:$1.getPath()})});return $1},f=async(v8,r,a,s)=>{let{id:K8}=a,P8=m1.getTypeFromId(K8),O8=(await $.readContent(v8,r,{id:K8}))?.getParentId(),A8=await $.deleteContent(v8,r,a,s),A6=P8==="t"?T6.TEMPLATE_DELETED:T6.DOCUMENT_DELETED;return s(()=>{q.notify(A6,{storeCode:K,id:K8,type:P8,parentFolderId:O8,path:A8.path})}),A8},A=async(v8,r,a,s)=>{let{id:K8}=a,P8=m1.getTypeFromId(K8),O8=(await $.readContent(v8,r,{id:K8}))?.getParentId(),A8=await $.saveDraft(v8,r,a,s),A6=P8==="t"?T6.TEMPLATE_DRAFT_SAVED:T6.DRAFT_SAVED;return s(()=>{let E6=A8.lockLost!==void 0?A8.entity:A8;q.notify(A6,{storeCode:K,id:K8,type:P8,parentFolderId:O8,updatedAt:E6?E6.getUpdatedAt():null,lockLost:A8.lockLost})}),A8},C=async(v8,r,a)=>{return $.readDraft(v8,r,a)},V=async(v8,r,a,s)=>{let{id:K8}=a,P8=m1.getTypeFromId(K8),H8=await $.publishContent(v8,r,a,s),O8=P8==="t"?T6.TEMPLATE_PUBLISHED:T6.DOCUMENT_PUBLISHED;return s(()=>{q.notify(O8,{storeCode:K,id:K8,type:P8,parentFolderId:H8.getParentId(),versionNumber:H8.getPublishedVersionNumber()})}),{entityId:K8,versionNumber:H8.getPublishedVersionNumber(),content:H8.getPublishedContent(),publishedAt:H8.getUpdatedAt()}},M=async(v8,r,a,s)=>{let{id:K8}=a,P8=m1.getTypeFromId(K8),H8=await $.discardDraft(v8,r,a,s),O8=P8==="t"?T6.TEMPLATE_DRAFT_DISCARDED:T6.DRAFT_DISCARDED;return s(()=>{q.notify(O8,{storeCode:K,id:K8})}),H8},R=async(v8,r,a)=>{return $.readVersion(v8,r,a)},I=async(v8,r,a)=>{return $.getVersions(v8,r,a)},D=async(v8,r,a,s,K8)=>{return $.findContentByName(v8,r,a,s,K8)},m=async(v8,r,a)=>{return $.listContent(v8,r,a)},b=async(v8,r,a,s)=>{return $.setEditState(v8,r,a,s)},h=async(v8,r,a)=>{return $.getEditState(v8,r,a)},L=async(v8,r,a,s)=>{return $.clearEditState(v8,r,a,s)},B=async(v8,r,a,s)=>{return $.createFieldDefinition(v8,r,a,s)},i=async(v8,r,a)=>{return $.readFieldDefinition(v8,r,a)},X8=async(v8,r,a,s)=>{return $.findFieldDefinitionByName(v8,r,a,s)},N8=async(v8,r,a)=>{return $.getFieldDefinitionsForOwner(v8,r,a)},h8=async(v8,r)=>{return $.readDefaultFieldDefinition(v8,r)},c8=async(v8,r,a)=>{return $.resolveFieldDefinition(v8,r,a)},E8=async(v8,r,a,s)=>{return $.deleteFieldDefinition(v8,r,a,s)},g8=async(v8,r,a,s)=>{return $.setFieldValue(v8,r,a,s)},t8=async(v8,r,a)=>{return $.getFieldValue(v8,r,a)},v4=async(v8,r,a,s)=>{return $.deleteFieldValue(v8,r,a,s)};return Object.freeze({getObjectId:$.getObjectId,getName:$.getName,getCreatedAt:$.getCreatedAt,getUpdatedAt:$.getUpdatedAt,getCodes:$.getCodes,getType:$.getType,getCode:$.getCode,getPk:$.getPk,toJSON:$.toJSON,createFolder:z,readFolder:P,updateFolder:J,deleteFolder:W,listFolderContents:H,getFolderByPath:Z,findFolderByName:O,readRootFolderForType:w,isDuplicateNameInParent:X,createContent:T,readContent:G,updateContent:v,deleteContent:f,saveDraft:A,readDraft:C,publishContent:V,discardDraft:M,readVersion:R,getVersions:I,findContentByName:D,listContent:m,setEditState:b,getEditState:h,clearEditState:L,createFieldDefinition:B,readFieldDefinition:i,findFieldDefinitionByName:X8,getFieldDefinitionsForOwner:N8,readDefaultFieldDefinition:h8,resolveFieldDefinition:c8,deleteFieldDefinition:E8,setFieldValue:g8,getFieldValue:t8,deleteFieldValue:v4,evictFolder:$.evictFolder,subscribe:q.subscribe,subscribeAll:q.subscribeAll})},cP8=Object.freeze({create:vH6});var GH6=($)=>{let{id:K,code:q,name:Y,pk:z,createdAt:P,updatedAt:J}=$,W=jf.create(),H=jf.create(),Z=jf.create(),{store:O,mutationApi:w}=uP8.create({id:K,code:q,name:Y,pk:z,createdAt:P,updatedAt:J,folderCache:W}),X=mP8.create({inner:O,folderCache:W,contentCache:H,fieldDefinitionCache:Z});return{store:cP8.create({inner:X,storeCode:q}),mutationApi:w}},BP8=Object.freeze({create:GH6});R4();var _H6=({id:$,name:K,createdAt:q,updatedAt:Y,children:z=[]})=>{let P=[...z],J=new Map,{entityFns:W,mutationFns:H}=K5.create({id:$,name:K,createdAt:q,updatedAt:Y}),Z=()=>{J.clear();for(let V8 of P){let R8=V8.getCodes();for(let c of R8)J.set(c,V8)}};Z();let O=()=>"demux",w=()=>P.map((V8)=>V8.getObjectId()),X=()=>[...P],T=()=>{return new Set(J.keys())},G=()=>({id:$,name:K,createdAt:q,updatedAt:Y,type:"demux",childIds:w()}),v=(V8)=>{P.push(V8),Z()},f=(V8)=>{return J.get(V8)??null},A=async(V8,R8,{store:c,storeCode:o,parentId:E,name:u,subtype:y},Q)=>{let d=c??o;Y8.factory(!d,t.validation,"store parameter is required","MISSING_STORE_CODE");let $8=f(d);return Y8.factory(!$8,t.notFound,`No child store with code: ${d}`,"STORE_NOT_FOUND"),$8.createFolder(V8,R8,{storeCode:d,parentId:E,name:u,subtype:y},Q)},C=async(V8,R8,{id:c})=>{let o=c?.[0],E=f(o);if(!E)return null;return E.readFolder(V8,R8,{id:c})},g7=Object.freeze({...W,getType:O,getCodes:T,getChildIds:w,getChildren:X,toJSON:G,createFolder:A,readFolder:C,updateFolder:async(V8,R8,{id:c,name:o,parentId:E},u)=>{let y=c?.[0],Q=f(y);return Y8.factory(!Q,t.notFound,`No child store with code: ${y}`,"STORE_NOT_FOUND"),Q.updateFolder(V8,R8,{id:c,name:o,parentId:E},u)},deleteFolder:async(V8,R8,{id:c},o)=>{let E=c?.[0],u=f(E);return Y8.factory(!u,t.notFound,`No child store with code: ${E}`,"STORE_NOT_FOUND"),u.deleteFolder(V8,R8,{id:c},o)},evictFolder:(V8)=>{let R8=V8?.[0],c=f(R8);if(c)c.evictFolder(V8)},getFolder:async(V8,R8,{id:c})=>{return C(V8,R8,{id:c})},listFolderContents:async(V8,R8,{folderId:c,store:o,storeCode:E,type:u})=>{let y;if(c!==null&&c!==void 0)y=c[0];else{let $8=o??E;Y8.factory(!$8,t.validation,"store required when folderId is null","STORE_CODE_REQUIRED"),y=$8}let Q=f(y);Y8.factory(!Q,t.notFound,`No child store with code: ${y}`,"STORE_NOT_FOUND");let d={...R8,storeCode:y};return Q.listFolderContents(V8,d,{folderId:c,type:u})},getFolderByPath:async(V8,R8,{path:c,type:o,store:E,storeCode:u})=>{let y=E??u;Y8.factory(!y,t.validation,"store required for getFolderByPath","STORE_CODE_REQUIRED");let Q=f(y);if(!Q)return null;let d={...R8,storeCode:y};return Q.getFolderByPath(V8,d,{path:c,type:o})},isDuplicateNameInParent:async(V8,R8,c,o,E=null)=>{let u;if(c)u=c[0];else{let Q=P[0];if(!Q)Y8.factory(!0,t.notFound,"No child stores available","STORE_NOT_FOUND");u=[...Q.getCodes()][0]}let y=f(u);return Y8.factory(!y,t.notFound,`No child store with code: ${u}`,"STORE_NOT_FOUND"),y.isDuplicateNameInParent(V8,R8,c,o,E)},findFolderByName:async(V8,R8,c,o)=>{let E=c[0],u=f(E);if(!u)return null;return u.findFolderByName(V8,R8,c,o)},readRootFolderForType:async(V8,R8,c,o)=>{let E=f(o);return Y8.factory(!E,t.notFound,`No child store with code: ${o}`,"STORE_NOT_FOUND"),E.readRootFolderForType(V8,R8,c,o)},createFieldDefinition:async(V8,R8,{storeCode:c,ownerEntityId:o,name:E,label:u,description:y,primitiveType:Q,required:d,multiplicity:$8,isSystem:W8},z8)=>{let w8=f(c);return Y8.factory(!w8,t.notFound,`No child store with code: ${c}`,"STORE_NOT_FOUND"),w8.createFieldDefinition(V8,R8,{storeCode:c,ownerEntityId:o,name:E,label:u,description:y,primitiveType:Q,required:d,multiplicity:$8,isSystem:W8},z8)},readFieldDefinition:async(V8,R8,{id:c})=>{let o=c?.[0],E=f(o);if(!E)return null;return E.readFieldDefinition(V8,R8,{id:c})},readDefaultFieldDefinition:async(V8,R8,c)=>{let o=f(c);return Y8.factory(!o,t.notFound,`No child store with code: ${c}`,"STORE_NOT_FOUND"),o.readDefaultFieldDefinition(V8,R8)},getFieldDefinitionsForOwner:async(V8,R8,{storeCode:c,ownerEntityPk:o,includeSystem:E})=>{let u=f(c);return Y8.factory(!u,t.notFound,`No child store with code: ${c}`,"STORE_NOT_FOUND"),u.getFieldDefinitionsForOwner(V8,R8,{ownerEntityPk:o,includeSystem:E})},deleteFieldDefinition:async(V8,R8,{id:c},o)=>{let E=c?.[0],u=f(E);return Y8.factory(!u,t.notFound,`No child store with code: ${E}`,"STORE_NOT_FOUND"),u.deleteFieldDefinition(V8,R8,{id:c},o)},setFieldValue:async(V8,R8,{entityId:c,fieldDefinitionId:o,fieldName:E,value:u,values:y},Q)=>{let d=c?.[0],$8=f(d);return Y8.factory(!$8,t.notFound,`No child store with code: ${d}`,"STORE_NOT_FOUND"),$8.setFieldValue(V8,R8,{entityId:c,fieldDefinitionId:o,fieldName:E,value:u,values:y},Q)},deleteFieldValue:async(V8,R8,{entityId:c,fieldDefinitionId:o,fieldName:E},u)=>{let y=c?.[0],Q=f(y);return Y8.factory(!Q,t.notFound,`No child store with code: ${y}`,"STORE_NOT_FOUND"),Q.deleteFieldValue(V8,R8,{entityId:c,fieldDefinitionId:o,fieldName:E},u)},createContent:async(V8,R8,{storeCode:c,type:o,...E},u)=>{let y=f(c);return Y8.factory(!y,t.notFound,`No child store with code: ${c}`,"STORE_NOT_FOUND"),y.createContent(V8,R8,{type:o,storeCode:c,...E},u)},readContent:async(V8,R8,{id:c})=>{let o=c?.[0],E=f(o);if(!E)return null;return E.readContent(V8,R8,{id:c})},updateContent:async(V8,R8,{id:c,...o},E)=>{let u=c?.[0],y=f(u);return Y8.factory(!y,t.notFound,`No child store with code: ${u}`,"STORE_NOT_FOUND"),y.updateContent(V8,R8,{id:c,...o},E)},deleteContent:async(V8,R8,{id:c},o)=>{let E=c?.[0],u=f(E);return Y8.factory(!u,t.notFound,`No child store with code: ${E}`,"STORE_NOT_FOUND"),u.deleteContent(V8,R8,{id:c},o)},saveDraft:async(V8,R8,{id:c,content:o,clientId:E},u)=>{let y=c?.[0],Q=f(y);return Y8.factory(!Q,t.notFound,`No child store with code: ${y}`,"STORE_NOT_FOUND"),Q.saveDraft(V8,R8,{id:c,content:o,clientId:E},u)},readDraft:async(V8,R8,{id:c})=>{let o=c?.[0],E=f(o);if(!E)return null;return E.readDraft(V8,R8,{id:c})},publishContent:async(V8,R8,{id:c},o)=>{let E=c?.[0],u=f(E);return Y8.factory(!u,t.notFound,`No child store with code: ${E}`,"STORE_NOT_FOUND"),u.publishContent(V8,R8,{id:c},o)},discardDraft:async(V8,R8,{id:c},o)=>{let E=c?.[0],u=f(E);return Y8.factory(!u,t.notFound,`No child store with code: ${E}`,"STORE_NOT_FOUND"),u.discardDraft(V8,R8,{id:c},o)},findContentByName:async(V8,R8,c,o,E)=>{let u=c?.[0],y=f(u);if(!y)return null;return y.findContentByName(V8,R8,c,o,E)},listContent:async(V8,R8,{parentId:c,storeCode:o,type:E})=>{let u,y;if(c)u=c[0],y=c;else{Y8.factory(!o,t.validation,"storeCode required when parentId is null","MISSING_STORE_CODE"),u=o;let d=f(u);Y8.factory(!d,t.notFound,`No child store with code: ${u}`,"STORE_NOT_FOUND");try{y=(await d.readRootFolderForType(V8,R8,E||"d",u)).getObjectId()}catch($8){y=null}}let Q=f(u);return Y8.factory(!Q,t.notFound,`No child store with code: ${u}`,"STORE_NOT_FOUND"),Q.listContent(V8,R8,{parentId:y,type:E})},setEditState:async(V8,R8,{id:c,clientId:o},E)=>{let u=c?.[0],y=f(u);return Y8.factory(!y,t.notFound,`No child store with code: ${u}`,"STORE_NOT_FOUND"),y.setEditState(V8,R8,{id:c,clientId:o},E)},clearEditState:async(V8,R8,{id:c},o)=>{let E=c?.[0],u=f(E);return Y8.factory(!u,t.notFound,`No child store with code: ${E}`,"STORE_NOT_FOUND"),u.clearEditState(V8,R8,{id:c},o)},getEditState:async(V8,R8,{id:c})=>{let o=c?.[0],E=f(o);if(!E)return null;return E.getEditState(V8,R8,{id:c})},readVersion:async(V8,R8,{id:c,versionNumber:o})=>{let E=c?.[0],u=f(E);if(!u)return null;return u.readVersion(V8,R8,{id:c,versionNumber:o})},getVersions:async(V8,R8,{id:c})=>{let o=c?.[0],E=f(o);if(!E)return[];return E.getVersions(V8,R8,{id:c})},subscribe:(V8,R8)=>{let c=P.map((o)=>o.subscribe(V8,R8));return()=>c.forEach((o)=>o())},subscribeAll:(V8)=>{let R8=P.map((c)=>c.subscribeAll(V8));return()=>R8.forEach((c)=>c())}}),tK=Object.freeze({...H,addChild:v});return{store:g7,mutationApi:tK}},UP8=Object.freeze({create:_H6});R4();var fX=($)=>{if(!$||$.length<2||$[0]!=="S")return null;let K=parseInt($.slice(1),10);return isNaN(K)?null:K},wx=($)=>$.object_id,Ox=($)=>{let K=wx($),q=$.id,{store:Y,mutationApi:z}=BP8.create({id:K,code:$.code,name:$.name,createdAt:$.created_at,updatedAt:$.updated_at,pk:q});return{store:Y,mutationApi:z,id:K,pk:q}},lP8=($,K)=>{let q=wx($),Y=$.id,{store:z,mutationApi:P}=UP8.create({id:q,name:$.name,createdAt:$.created_at,updatedAt:$.updated_at,children:K});return{store:z,mutationApi:P,id:q,pk:Y}},fH6=async($,K,q,Y,z)=>{let P=await uz.readEntityTypeId($,K,"n",null),J=await q5.nextSeq($,"store",q,"n"),W=`${Y}n${J}`,H=K4();await $.insertInto("field_definitions").values({store_id:q,object_id:W,entity_type_id:P,type_code:"n",seq:J,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()},AH6=()=>{let $=new Map,K=new Map,q=async(O,w,{code:X,name:T},G)=>{let v=K4(),f=await q5.nextSeq(O,"global",null,"s"),A=`S${f}`,C=await O.insertInto("stores").values({id:f,object_id:A,type:"local",code:X,name:T,created_at:v,updated_at:v}).returningAll().executeTakeFirstOrThrow(),{store:V,mutationApi:M,id:R,pk:I}=Ox(C);return await fH6(O,w,I,X,G),G(()=>{$.set(R,l6.create(V,M,I)),K.set(I,R)}),V},Y=async(O,w,{name:X},T)=>{let G=K4(),v=await q5.nextSeq(O,"global",null,"s"),f=`S${v}`,A=await O.insertInto("stores").values({id:v,object_id:f,type:"demux",code:null,name:X,created_at:G,updated_at:G}).returningAll().executeTakeFirstOrThrow(),{store:C,mutationApi:V,id:M,pk:R}=lP8(A,[]);return T(()=>{$.set(M,l6.create(C,V,R)),K.set(R,M)}),C},z=async(O,w,X)=>{let T=$.get(X);if(T)return T.getEntity();let G=fX(X);if(G===null)return null;let v=await O.selectFrom("stores").selectAll().where("id","=",G).executeTakeFirst();if(!v)return null;let f,A,C,V;if(v.type==="local"){let M=Ox(v);f=M.store,A=M.mutationApi,C=M.id,V=M.pk}else{let M=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(),R=[];for(let D of M){let m=await z(O,w,D.object_id);if(m)R.push(m)}let I=lP8(v,R);f=I.store,A=I.mutationApi,C=I.id,V=I.pk}return $.set(C,l6.create(f,A,V)),K.set(V,C),f};return Object.freeze({createLocalStore:q,createDemuxStore:Y,readStore:z,readSharedStore:async(O,w)=>{let X=await O.selectFrom("stores").selectAll().where("code","=","B").executeTakeFirstOrThrow(),T=wx(X),G=$.get(T);if(G)return G.getEntity();let{store:v,mutationApi:f,pk:A}=Ox(X);return $.set(T,l6.create(v,f,A)),K.set(A,T),v},readRootStoreForProject:async(O,w,X)=>{let T=X&&X.length>=2&&X[0]==="P"?parseInt(X.slice(1),10):null;Y8.factory(T===null||isNaN(T),t.validation,`Invalid project ID: ${X}`,"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 Y8.factory(!G,t.notFound,`Root store not found for project: ${X}`,"ROOT_STORE_NOT_FOUND"),await z(O,w,G.object_id)},addChildToDemux:async(O,w,{demuxId:X,childId:T},G)=>{let v=$.get(X),f=$.get(T),A,C;if(v)A=v.getPk();else{let V=fX(X);Y8.factory(V===null,t.validation,`Invalid demux store ID: ${X}`,"INVALID_ID");let M=await O.selectFrom("stores").select("id").where("id","=",V).executeTakeFirst();Y8.factory(!M,t.notFound,`Demux store not found: ${X}`,"STORE_NOT_FOUND"),A=M.id}if(f)C=f.getPk();else{let V=fX(T);Y8.factory(V===null,t.validation,`Invalid child store ID: ${T}`,"INVALID_ID");let M=await O.selectFrom("stores").select("id").where("id","=",V).executeTakeFirst();Y8.factory(!M,t.notFound,`Child store not found: ${T}`,"STORE_NOT_FOUND"),C=M.id}await O.insertInto("store_children").values({parent_store_id:A,child_store_id:C}).execute(),G(()=>{let V=$.get(X),M=$.get(T);if(V&&M)V.getMutationApi().addChild(M.getEntity())})},addStoresToProject:async(O,w,{projectId:X,rootStoreId:T,storeIds:G})=>{let v=X&&X.length>=2&&X[0]==="P"?parseInt(X.slice(1),10):null;Y8.factory(v===null||isNaN(v),t.validation,`Invalid project ID: ${X}`,"INVALID_PROJECT_ID");let f=await O.selectFrom("projects").select("id").where("id","=",v).executeTakeFirst();Y8.factory(!f,t.notFound,`Project not found: ${X}`,"PROJECT_NOT_FOUND");let A=f.id,C=$.get(T),V;if(C)V=C.getPk();else{let M=fX(T);Y8.factory(M===null,t.validation,`Invalid root store ID: ${T}`,"INVALID_ID");let R=await O.selectFrom("stores").select("id").where("id","=",M).executeTakeFirst();Y8.factory(!R,t.notFound,`Root store not found: ${T}`,"STORE_NOT_FOUND"),V=R.id}for(let M of G){let R=$.get(M),I;if(R)I=R.getPk();else{let D=fX(M);Y8.factory(D===null,t.validation,`Invalid store ID: ${M}`,"INVALID_ID");let m=await O.selectFrom("stores").select("id").where("id","=",D).executeTakeFirst();Y8.factory(!m,t.notFound,`Store not found: ${M}`,"STORE_NOT_FOUND"),I=m.id}await O.insertInto("project_stores").values({project_id:A,store_id:I,is_root:I===V?1:0}).execute()}},evictStore:(O)=>{let w=$.get(O);if(w)K.delete(w.getPk());$.delete(O)}})},FP8=Object.freeze({create:AH6});R4();R4();var VH6=({store:$})=>{let K=async(Z,O,w,X,T,G)=>{let v=w.split("/").filter((C)=>C.trim());Y8.factory(v.length===0,t.validation,"Path cannot be empty or contain only slashes","EMPTY_PATH");let f=await $.readRootFolderForType(Z,O,X,T);for(let C=0;C<v.length-1;C++){let V=HK.validateFolderName(v[C]),M=await $.findFolderByName(Z,O,f.getObjectId(),V);if(M)f=M;else f=await $.createFolder(Z,O,{storeCode:T,parentId:f.getObjectId(),name:V},G)}let A=HK.validateFolderName(v[v.length-1]);return{parentObjectId:f.getObjectId(),name:A}},q=async(Z,O,{store:w,path:X,type:T},G)=>{Y8.factory(!X||X==="/",t.validation,"Path cannot be empty","EMPTY_PATH"),Y8.factory(T!=="d"&&T!=="t",t.validation,'Type must be "d" or "t"',"INVALID_TYPE"),Y8.factory(!w,t.validation,"store is required","MISSING_STORE_CODE");let{parentObjectId:v,name:f}=await K(Z,O,X,T,w,G),A=await $.isDuplicateNameInParent(Z,O,v,f);return Y8.factory(A,t.conflict,`Folder "${f}" already exists in parent`,"DUPLICATE_NAME"),await $.createFolder(Z,O,{storeCode:w,parentId:v,name:f},G)},Y=async(Z,O,{id:w})=>{return await $.readFolder(Z,O,{id:w})};return Object.freeze({resolvePath:K,createFolder:q,readFolder:Y,renameFolder:async(Z,O,{id:w,name:X},T)=>{let G=await Y(Z,O,{id:w});Y8.factory(!G,t.notFound,`Folder not found: ${w}`,"FOLDER_NOT_FOUND"),Y8.factory(HK.isRootFolder(G),t.validation,"Cannot rename root folder","CANNOT_RENAME_ROOT");let v=HK.validateFolderName(X),f=await $.isDuplicateNameInParent(Z,O,G.getParentId(),v,w);return Y8.factory(f,t.conflict,`Folder "${v}" already exists in parent`,"DUPLICATE_NAME"),await $.updateFolder(Z,O,{id:w,name:v},T)},moveFolder:async(Z,O,{id:w,parentId:X},T)=>{let G=await Y(Z,O,{id:w});Y8.factory(!G,t.notFound,`Folder not found: ${w}`,"FOLDER_NOT_FOUND"),Y8.factory(HK.isRootFolder(G),t.validation,"Cannot move root folder","CANNOT_MOVE_ROOT");let v=await Y(Z,O,{id:X});Y8.factory(!v,t.notFound,`Parent folder not found: ${X}`,"PARENT_NOT_FOUND"),Y8.factory(!w||w.length<1,t.validation,"Invalid folder ID format","INVALID_ID_FORMAT"),Y8.factory(!X||X.length<1,t.validation,"Invalid parent ID format","INVALID_PARENT_ID_FORMAT");let f=w[0],A=X[0];Y8.factory(f!==A,t.validation,"Cannot move folders between stores","CROSS_STORE_MOVE"),Y8.factory(w===X,t.validation,"Cannot move folder into itself","SELF_MOVE");let C=X;while(C!==null){Y8.factory(C===w,t.validation,"Cannot move folder into its own descendant","CYCLE_DETECTED");let M=await $.readFolder(Z,O,{id:C});if(!M)break;C=M.getParentId()}let V=await $.isDuplicateNameInParent(Z,O,X,G.getName(),w);return Y8.factory(V,t.conflict,`Folder "${G.getName()}" already exists in target parent`,"DUPLICATE_NAME"),await $.updateFolder(Z,O,{id:w,parentId:X},T)},deleteFolder:async(Z,O,{id:w},X)=>{let T=await Y(Z,O,{id:w});return Y8.factory(!T,t.notFound,`Folder not found: ${w}`,"FOLDER_NOT_FOUND"),Y8.factory(HK.isRootFolder(T),t.validation,"Cannot delete root folder","CANNOT_DELETE_ROOT"),await $.deleteFolder(Z,O,{id:w},X)},getFolderByPath:async(Z,O,{path:w,type:X,storeCode:T})=>{return await $.getFolderByPath(Z,O,{path:w,type:X,storeCode:T})},listFolderContents:async(Z,O,{folderId:w,type:X,storeCode:T})=>{return await $.listFolderContents(Z,O,{folderId:w,type:X,storeCode:T})}})},iP8=Object.freeze({create:VH6});R4();var kH6=({store:$})=>{let K=async(W,H,{store:Z,ownerEntityId:O,name:w,label:X,description:T,primitiveType:G,required:v,multiplicity:f,isSystem:A=!1},C)=>{Y8.factory(!Z,t.validation,"store is required","MISSING_STORE_CODE"),Y8.factory(G!=="string"&&G!=="object_ref",t.validation,`Invalid primitiveType: ${G}. Must be 'string' or 'object_ref'`,"INVALID_PRIMITIVE_TYPE"),Y8.factory(f!=="single"&&f!=="multi",t.validation,`Invalid multiplicity: ${f}. Must be 'single' or 'multi'`,"INVALID_MULTIPLICITY");let V=/^[a-zA-Z0-9_]+$/;return Y8.factory(!w||!V.test(w),t.validation,`Invalid name: ${w}. Must contain only alphanumeric characters and underscores`,"INVALID_NAME"),await $.createFieldDefinition(W,H,{storeCode:Z,ownerEntityId:O,name:w,label:X,description:T,primitiveType:G,required:v,multiplicity:f,isSystem:A},C)},q=async(W,H,{id:Z})=>{return Y8.factory(!Z||Z.length<3,t.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:w=!0})=>{Y8.factory(!Z,t.validation,"store is required","MISSING_STORE_CODE");let X=null;if(O)X=null;return await $.getFieldDefinitionsForOwner(W,H,{storeCode:Z,ownerEntityPk:X,includeSystem:w})},deleteFieldDefinition:async(W,H,{id:Z},O)=>{let w=await q(W,H,{id:Z});return Y8.factory(!w,t.notFound,`Field definition not found: ${Z}`,"DEFINITION_NOT_FOUND"),Y8.factory(w.getIsSystem(),t.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:w,value:X,values:T},G)=>{return Y8.factory(!Z,t.validation,"entityId is required","MISSING_ENTITY_ID"),Y8.factory(!O&&!w,t.validation,"Either fieldDefinitionId or fieldName must be provided","MISSING_FIELD_IDENTIFIER"),Y8.factory(X!==void 0&&T!==void 0,t.validation,"Cannot provide both value and values","AMBIGUOUS_VALUE"),Y8.factory(X===void 0&&T===void 0,t.validation,"Either value or values must be provided","MISSING_VALUE"),await $.setFieldValue(W,H,{entityId:Z,fieldDefinitionId:O,fieldName:w,value:X,values:T},G)},deleteFieldValue:async(W,H,{entityId:Z,fieldDefinitionId:O,fieldName:w},X)=>{return Y8.factory(!Z,t.validation,"entityId is required","MISSING_ENTITY_ID"),Y8.factory(!O&&!w,t.validation,"Either fieldDefinitionId or fieldName must be provided","MISSING_FIELD_IDENTIFIER"),await $.deleteFieldValue(W,H,{entityId:Z,fieldDefinitionId:O,fieldName:w},X)}})},QP8=Object.freeze({create:kH6});R4();var MH6=($)=>{let K=$.split("/").filter((z)=>z.trim()),q=K[K.length-1];return{parentPath:K.slice(0,-1).join("/")||null,name:q,segments:K}},NH6=($)=>{return $[0]},AX=Object.freeze({parsePath:MH6,extractStoreCode:NH6});var hH6=({store:$,folderService:K,documentHooks:q})=>{let Y=(M)=>{return M==="t"?"Template":"Document"},z=async(M,R,I,D,m,b)=>{if(I){let h=await K.resolvePath(M,R,I,D,m,b),L=await $.findFolderByName(M,R,h.parentObjectId,h.name);if(L)return L.getObjectId();else return(await $.createFolder(M,R,{storeCode:m,parentId:h.parentObjectId,name:h.name},b)).getObjectId()}else return(await $.readRootFolderForType(M,R,D,m)).getObjectId()},P=async(M,R,{store:I,path:D,type:m,content:b},h)=>{Y8.factory(m!=="d"&&m!=="t",t.validation,'type must be "d" or "t"',"INVALID_TYPE"),Y8.factory(!D||D==="/",t.validation,"Path cannot be empty","EMPTY_PATH"),Y8.factory(!I,t.validation,"store is required","MISSING_STORE_CODE");let{parentPath:L,name:B}=AX.parsePath(D),i=await z(M,R,L,m,I,h),X8=Y(m),N8=await $.findContentByName(M,R,i,B,m);return Y8.factory(N8,t.conflict,`${X8} "${B}" already exists in folder`,"DUPLICATE_NAME"),await $.createContent(M,R,{storeCode:I,type:m,parentId:i,name:B,initialContent:b},h)},J=async(M,R,{id:I})=>{let{typeCode:D}=m1.resolveEntityId(I),m=Y(D),b=await $.readContent(M,R,{id:I});return Y8.factory(!b,t.notFound,`${m} not found: ${I}`,"NOT_FOUND"),b};return Object.freeze({createDocument:P,readDocument:J,readDocumentByPath:async(M,R,{path:I,type:D,storeCode:m})=>{Y8.factory(D!=="d"&&D!=="t",t.validation,'type must be "d" or "t"',"INVALID_TYPE");let{parentPath:b,name:h}=AX.parsePath(I),L;if(b){let B=await $.getFolderByPath(M,R,{path:b,type:D,storeCode:m});if(!B)return null;L=B.getObjectId()}else L=(await $.readRootFolderForType(M,R,D,m)).getObjectId();return await $.findContentByName(M,R,L,h,D)},updateDocumentPath:async(M,R,{id:I,path:D,type:m},b)=>{Y8.factory(m!=="d"&&m!=="t",t.validation,'type must be "d" or "t"',"INVALID_TYPE"),Y8.factory(!D||D==="/",t.validation,"Path cannot be empty","EMPTY_PATH");let h=await J(M,R,{id:I}),{parentPath:L,name:B}=AX.parsePath(D),i=AX.extractStoreCode(I),X8=await z(M,R,L,m,i,b),N8=B!==h.getName(),h8=X8!==h.getParentId();if(!N8&&!h8)return h;if(N8||h8){let c8=Y(m),E8=await $.findContentByName(M,R,X8,B,m);Y8.factory(E8&&E8.getObjectId()!==I,t.conflict,`${c8} "${B}" already exists in target folder`,"DUPLICATE_NAME")}return await $.updateContent(M,R,{id:I,name:N8?B:void 0,parentId:h8?X8:void 0},b)},deleteDocument:async(M,R,{id:I},D)=>{return await J(M,R,{id:I}),await $.deleteContent(M,R,{id:I},D)},saveDraft:async(M,R,{id:I,content:D,clientId:m},b)=>{return await J(M,R,{id:I}),await $.saveDraft(M,R,{id:I,content:D,clientId:m},b)},readDraft:async(M,R,{id:I})=>{let{typeCode:D}=m1.resolveEntityId(I);await J(M,R,{id:I});let m=Y(D),b=await $.readDraft(M,R,{id:I});return Y8.factory(!b,t.notFound,`No draft found for ${m}: ${I}`,"DRAFT_NOT_FOUND"),b},publishDocument:async(M,R,{id:I},D)=>{await J(M,R,{id:I});let{typeCode:m}=m1.resolveEntityId(I),b=await $.publishContent(M,R,{id:I},D),h=q.getHook("prePublish",m);if(h){let L=await J(M,R,{id:I});await h(M,R,L)}return b},discardDraft:async(M,R,{id:I},D)=>{return await J(M,R,{id:I}),await $.discardDraft(M,R,{id:I},D)},readVersion:async(M,R,{id:I,versionNumber:D})=>{let{typeCode:m}=m1.resolveEntityId(I);await J(M,R,{id:I});let b=Y(m),h=await $.readVersion(M,R,{id:I,versionNumber:D});return Y8.factory(!h,t.notFound,`Version ${D} not found for ${b}: ${I}`,"VERSION_NOT_FOUND"),h},getVersions:async(M,R,{id:I})=>{return await J(M,R,{id:I}),await $.getVersions(M,R,{id:I})},setEditState:async(M,R,{id:I,clientId:D},m)=>{return await J(M,R,{id:I}),await $.setEditState(M,R,{id:I,clientId:D},m)},clearEditState:async(M,R,{id:I},D)=>{return await J(M,R,{id:I}),await $.clearEditState(M,R,{id:I},D)},getEditState:async(M,R,{id:I})=>{return await J(M,R,{id:I}),await $.getEditState(M,R,{id:I})},listDocuments:async(M,R,{parentId:I,storeCode:D,type:m="d"})=>{return await $.listContent(M,R,{parentId:I,storeCode:D,type:m})}})},dP8=Object.freeze({create:hH6});var GO8=K1(OH8(),1),_O8=K1(kb(),1),fO8=($)=>{if(!$)return{parameters:{},target:null,targetPath:null,body:""};let K=GO8.default($),q=K.data?.parameters||{},Y=K.data?.target||null,z=K.data?.targetPath||null,P=K.content;return{parameters:q,target:Y,targetPath:z,body:P}},O_6=($)=>{if(!$)return new Set;let K=new Set,q=new Set(["if","unless","each","with","lookup","log"]);try{let Y=_O8.default.parse($),z=(P,J=null,W=null)=>{if(!P)return;if(P.type==="PathExpression"){if(P.data)return;let H=P.parts.join(".");if(!H||H.startsWith("@"))return;if(J?.type==="BlockStatement"&&W==="path"||J?.type==="MustacheStatement"&&W==="path"&&J.params?.length>0){if(q.has(H))return;return}K.add(H)}if(P.program)z(P.program,P,"program");if(P.inverse)z(P.inverse,P,"inverse");if(P.body)P.body.forEach((H)=>z(H,P,"body"));if(P.params)P.params.forEach((H)=>z(H,P,"params"));if(P.hash?.pairs)P.hash.pairs.forEach((H)=>z(H.value,P,"hash"));if(P.path)z(P.path,P,"path")};z(Y)}catch(Y){throw new Error(`Invalid Handlebars template: ${Y.message}`)}return K},w_6=($)=>{if(!$)return{parameters:{},target:null,targetPath:null};let{parameters:K,target:q,targetPath:Y}=fO8($);return{parameters:K,target:q,targetPath:Y}},M$=Object.freeze({parseFrontMatter:fO8,extractVariables:O_6,getParameters:w_6});R4();var X_6=async($,K,q,Y)=>{try{let z=typeof q.getPublishedContent==="function"?q.getPublishedContent():q.publishedContent,{parameters:P}=M$.parseFrontMatter(z||"");if(!P||Object.keys(P).length===0)return;let J=typeof q.getObjectId==="function"?q.getObjectId():q.id,W=J[0];for(let[H,Z]of Object.entries(P)){let O=Z.type||"string",w=Z.required||!1,X=Z.description||null,T=Z.label||H,G="single";if(O!=="string"&&O!=="object_ref"){console.warn(`Invalid parameter type "${O}" for parameter "${H}" in template ${J}. Defaulting to "string".`);continue}try{await Y.createFieldDefinition($,K,{store:W,ownerEntityId:J,name:H,label:T,description:X,primitiveType:O,required:w,multiplicity:"single",isSystem:!1},()=>{})}catch(v){if(v.code==="DUPLICATE_FIELD_DEFINITION"||v.message?.includes("unique"))console.warn(`Field definition "${H}" already exists for template ${J}. Skipping.`);else console.error(`Failed to create field definition for parameter "${H}" in template ${J}:`,v)}}}catch(z){let P=typeof q.getObjectId==="function"?q.getObjectId():q.id;console.error(`Template publish hook failed for ${P}:`,z)}},T_6=({fieldService:$})=>{let K={prePublish:{d:null,t:(Y,z,P)=>X_6(Y,z,P,$)},postPublish:{},preDelete:{},postCreate:{}};return Object.freeze({getHook:(Y,z)=>{return K[Y]?.[z]||null}})},AO8=Object.freeze({create:T_6});R4();var Mb=K1(kb(),1),j_6=($={})=>{return Object.freeze({renderTemplate:(Y,z={})=>{if(!Y)throw t.validation("Template content cannot be empty","EMPTY_TEMPLATE");let{body:P}=M$.parseFrontMatter(Y),J;try{J=Mb.default.compile(P,{noEscape:!0})(z)}catch(W){throw t.validation(`Failed to render template: ${W.message}`,"RENDER_ERROR")}return J},extractTemplateParameters:(Y)=>{if(!Y)return{parameters:{},detectedVariables:[],target:null,targetPath:null};let{parameters:z,target:P,targetPath:J,body:W}=M$.parseFrontMatter(Y),H=M$.extractVariables(W),Z=Array.from(H);return{parameters:z,detectedVariables:Z,target:P,targetPath:J}}})},VO8=Object.freeze({create:j_6});import pX from"node:fs";import kO8 from"node:os";import cf from"node:path";var v_6=({projectStore:$,storeStore:K})=>{return Object.freeze({createProject:async(P,J,{name:W,path:H},Z)=>{if(await $.readProjectByPath(P,J,H)){let v=new Error("Project with this path already exists");throw v.code="DUPLICATE_PATH",v}let w=await $.createProject(P,J,{name:W,path:H},Z),X=await K.createLocalStore(P,J,{code:"A",name:"Project"},Z);await X.createFolder(P,J,{parentId:null,name:null,subtype:"root_d"},Z),await X.createFolder(P,J,{parentId:null,name:null,subtype:"root_t"},Z);let T=await K.readSharedStore(P,J),G=await K.createDemuxStore(P,J,{name:W},Z);return await K.addChildToDemux(P,J,{demuxId:G.getObjectId(),childId:X.getObjectId()},Z),await K.addChildToDemux(P,J,{demuxId:G.getObjectId(),childId:T.getObjectId()},Z),await K.addStoresToProject(P,J,{projectId:w.getObjectId(),rootStoreId:G.getObjectId(),storeIds:[G.getObjectId(),X.getObjectId(),T.getObjectId()]}),w},validateProjectPath:(P)=>{if(!P||typeof P!=="string"){let X=new Error("Path is required and must be a non-empty string");throw X.code="VALIDATION_ERROR",X}let J;if(P==="~")J=kO8.homedir();else if(P.startsWith("~/"))J=cf.join(kO8.homedir(),P.slice(2));else J=P;let W=pX.existsSync(J),H=!1,Z=!1,O=!1;if(W)try{if(H=pX.statSync(J).isDirectory(),H){let T=cf.join(J,".git");try{Z=pX.statSync(T).isDirectory()}catch{Z=!1}let G=cf.join(J,".claude");try{O=pX.statSync(G).isDirectory()}catch{O=!1}}}catch(X){H=!1}let w=cf.basename(J);return{path:J,exists:W,isDirectory:H,hasGit:Z,hasClaude:O,suggestedName:w}},listProjects:async(P)=>{let J=await P.selectFrom("projects").selectAll().where("name","!=","__system__").orderBy("created_at","desc").execute();return await Promise.all(J.map(async(H)=>{let O=(await P.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((w)=>({id:w.code==="B"?"store:B":`store:${w.code}:${H.object_id}`,code:w.code,name:w.name}));return{objectId:H.object_id,name:H.name,path:H.path,createdAt:H.created_at,updatedAt:H.updated_at,children:O}}))}})},Bf=Object.freeze({create:v_6});var G_6=()=>{let $=[];return{enqueuePostCommitHook:(K)=>{$.push(K)},flush:()=>{for(let K of $)try{K()}catch(q){console.error("Post-commit hook failed:",q)}}}},__6=({db:$,folderService:K,fieldService:q,documentService:Y,templateService:z,projectService:P,clipboardService:J})=>{let W=async(h)=>{let L=G_6(),B;return await $.transaction().execute(async(i)=>{B=await h(i,L.enqueuePostCommitHook)}),L.flush(),B};return Object.freeze({createFolder:async(h,{store:L,path:B,type:i})=>{return W(async(X8,N8)=>{return await K.createFolder(X8,h,{store:L,path:B,type:i},N8)})},renameFolder:async(h,{id:L,name:B})=>{return W(async(i,X8)=>{return await K.renameFolder(i,h,{id:L,name:B},X8)})},moveFolder:async(h,{id:L,parentId:B})=>{return W(async(i,X8)=>{return await K.moveFolder(i,h,{id:L,parentId:B},X8)})},deleteFolder:async(h,{id:L})=>{return W(async(B,i)=>{return await K.deleteFolder(B,h,{id:L},i)})},createProject:async(h,{name:L,path:B})=>{return W(async(i,X8)=>{return await P.createProject(i,h,{name:L,path:B},X8)})},createFieldDefinition:async(h,{store:L,ownerEntityId:B,name:i,label:X8,description:N8,primitiveType:h8,required:c8,multiplicity:E8,isSystem:g8})=>{return W(async(t8,v4)=>{return await q.createFieldDefinition(t8,h,{store:L,ownerEntityId:B,name:i,label:X8,description:N8,primitiveType:h8,required:c8,multiplicity:E8,isSystem:g8},v4)})},setFieldValue:async(h,{entityId:L,fieldDefinitionId:B,fieldName:i,value:X8,values:N8})=>{return W(async(h8,c8)=>{return await q.setFieldValue(h8,h,{entityId:L,fieldDefinitionId:B,fieldName:i,value:X8,values:N8},c8)})},deleteFieldValue:async(h,{entityId:L,fieldDefinitionId:B,fieldName:i})=>{return W(async(X8,N8)=>{return await q.deleteFieldValue(X8,h,{entityId:L,fieldDefinitionId:B,fieldName:i},N8)})},deleteFieldDefinition:async(h,{id:L})=>{return W(async(B,i)=>{return await q.deleteFieldDefinition(B,h,{id:L},i)})},createDocument:async(h,{store:L,path:B,type:i,content:X8})=>{return W(async(N8,h8)=>{return await Y.createDocument(N8,h,{store:L,path:B,type:i,content:X8},h8)})},updateDocumentPath:async(h,{id:L,path:B,type:i})=>{return W(async(X8,N8)=>{return await Y.updateDocumentPath(X8,h,{id:L,path:B,type:i},N8)})},deleteDocument:async(h,{id:L})=>{return W(async(B,i)=>{return await Y.deleteDocument(B,h,{id:L},i)})},saveDraft:async(h,{id:L,content:B,clientId:i})=>{return W(async(X8,N8)=>{return await Y.saveDraft(X8,h,{id:L,content:B,clientId:i},N8)})},publishDocument:async(h,{id:L})=>{return W(async(B,i)=>{return await Y.publishDocument(B,h,{id:L},i)})},discardDraft:async(h,{id:L})=>{return W(async(B,i)=>{return await Y.discardDraft(B,h,{id:L},i)})},setEditState:async(h,{id:L,clientId:B})=>{return W(async(i,X8)=>{return await Y.setEditState(i,h,{id:L,clientId:B},X8)})},clearEditState:async(h,{id:L})=>{return W(async(B,i)=>{return await Y.clearEditState(B,h,{id:L},i)})},renderTemplate:async(h,{id:L,params:B,target:i,targetOptions:X8})=>{let N8=await Y.readDocument($,h,{id:L});if(!N8.getPublishedContent())throw(await Promise.resolve().then(() => (R4(),_X))).default.validation("Template has no published content","NO_PUBLISHED_CONTENT");let{target:h8,targetPath:c8}=z.extractTemplateParameters(N8.getPublishedContent()),E8=i||h8||"stdout",g8=X8||{},t8=g8.path||c8,v4=z.renderTemplate(N8.getPublishedContent(),B||{});switch(E8){case"stdout":return{output:v4,target:"stdout"};case"clipboard":return await J.copyToClipboard(v4),{output:v4,target:"clipboard",message:"Copied to clipboard"};case"document":return W(async(r,a)=>{if(!t8)throw(await Promise.resolve().then(() => (R4(),_X))).default.validation("targetOptions.path is required for document target","MISSING_TARGET_PATH");let s=await Y.createDocument(r,h,{store:"A",path:t8,type:"d",content:v4},a);if(g8.publish)await Y.publishDocument(r,h,{id:s.getObjectId()},a);return{output:v4,target:"document",documentId:s.getObjectId(),documentPath:t8,published:!!g8.publish}});case"file":throw(await Promise.resolve().then(() => (R4(),_X))).default.validation("file target not yet implemented","NOT_IMPLEMENTED");default:throw(await Promise.resolve().then(() => (R4(),_X))).default.validation(`Unknown target: ${E8}`,"INVALID_TARGET")}}})},Nb=Object.freeze({create:__6});var IE8=K1(SE8(),1),xE8=K1(X$(),1);R4();import q$ from"fs/promises";import Y$ from"path";import{createWriteStream as yr6}from"fs";import ur6 from"crypto";var uK=xE8.default("caw:export"),EE8=".caw-exports",LE8=".tmp",mr6=1,pr6=({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"),A=String(T.getHours()).padStart(2,"0"),C=String(T.getMinutes()).padStart(2,"0"),V=String(T.getSeconds()).padStart(2,"0");return`${G}-${v}-${f}-${A}${C}${V}`},P=async(T)=>{let G=Y$.join(T,EE8),v=Y$.join(G,LE8);try{return await q$.mkdir(G,{recursive:!0}),await q$.mkdir(v,{recursive:!0}),G}catch(f){if(f.code==="EACCES")throw t.validation("Permission denied creating export directory","EXPORT_ERROR");if(f.code==="ENOSPC")throw t.validation("Insufficient disk space","EXPORT_ERROR");throw uK("Error creating export directory: [%s] %s",f.code||"UNKNOWN",f.message),t.validation(`Failed to create export directory: ${f.message} (${f.code||"UNKNOWN"})`,"EXPORT_ERROR")}},J=async(T,G,v,f)=>{let A=[],C=async(V,M)=>{let R=await K.listFolderContents(T,G,{folderId:V,type:v,storeCode:f});for(let I of R)if(I.getParentId()!==null)A.push({entity:I,depth:M,contentType:v}),await C(I.getObjectId(),M+1)};return await C(null,0),A},W=async(T,G,v)=>{let f=[],A=[],C=async(V)=>{let M=await q.listDocuments(T,G,{parentId:V,storeCode:v});for(let I of M){let D=I.getPublishedVersionNumber();if(D!==null){let m=await q.readVersion(T,G,{id:I.getObjectId(),versionNumber:D});f.push({entity:I,version:m})}else A.push(I)}let R=await K.listFolderContents(T,G,{folderId:V,type:"d",storeCode:v});for(let I of R)await C(I.getObjectId())};return await C(null),{published:f,draftOnly:A}},H=async(T,G,v)=>{let f=[],A=[],C=async(V)=>{let M=await q.listDocuments(T,G,{parentId:V,storeCode:v,type:"t"});for(let I of M){let D=I.getPublishedVersionNumber();if(D!==null){let m=await q.readVersion(T,G,{id:I.getObjectId(),versionNumber:D});f.push({entity:I,version:m})}else A.push(I)}let R=await K.listFolderContents(T,G,{folderId:V,type:"t",storeCode:v});for(let I of R)await C(I.getObjectId())};return await C(null),{published:f,draftOnly:A}},Z=async(T)=>{try{await q$.rm(T,{recursive:!0,force:!0})}catch(G){uK("Warning: Failed to cleanup temp directory: %s",G.message)}};return Object.freeze({listExports:async(T,G,{projectPath:v})=>{let f=Y$.join(v,EE8);try{let A=await q$.readdir(f),C=[];for(let V of A)if(V.endsWith(".zip")){let M=Y$.join(f,V),R=await q$.stat(M);C.push({filename:V,timestamp:R.mtime.toISOString(),size:R.size})}return uK("Found %d export files",C.length),C}catch(A){if(A.code==="ENOENT")return[];throw A}},exportPreview:async(T,G,{storeCode:v})=>{let f=await J(T,G,"d",v),A=await J(T,G,"t",v),{published:C,draftOnly:V}=await W(T,G,v),{published:M,draftOnly:R}=await H(T,G,v),I={folders:[...f,...A].map((h)=>({id:h.entity.getObjectId(),path:h.entity.getPath(),name:h.entity.getName()})),documents:C.map((h)=>({id:h.entity.getObjectId(),path:h.entity.getPath(),name:h.entity.getName()})),templates:M.map((h)=>({id:h.entity.getObjectId(),path:h.entity.getPath(),name:h.entity.getName()}))},D={documents:V.map((h)=>({id:h.getObjectId(),path:h.getPath(),name:h.getName()})),templates:R.map((h)=>({id:h.getObjectId(),path:h.getPath(),name:h.getName()}))},m=I.folders.length+I.documents.length+I.templates.length,b=D.documents.length+D.templates.length;return uK("Preview: %d published, %d draft-only",m,b),{toExport:I,draftOnly:D}},exportDocuments:async(T,G,{storeCode:v,projectPath:f})=>{uK("Starting export for store %s",v);let A=await P(f),C=ur6.randomUUID(),V=Y$.join(A,LE8,C);await q$.mkdir(V,{recursive:!0});try{let M=await J(T,G,"d",v),R=await J(T,G,"t",v),I=[...M,...R],{published:D,draftOnly:m}=await W(T,G,v),{published:b,draftOnly:h}=await H(T,G,v);uK("Found %d folders, %d documents, %d templates",I.length,D.length,b.length);let L=[...I.map((E8)=>({id:E8.entity.getObjectId(),type:"folder",path:E8.entity.getPath(),contentType:E8.contentType})),...D.map((E8)=>({id:E8.entity.getObjectId(),type:"document",path:E8.entity.getPath()})),...b.map((E8)=>({id:E8.entity.getObjectId(),type:"template",path:E8.entity.getPath()}))],B={version:mr6,exportedAt:new Date().toISOString(),entities:L};await q$.writeFile(Y$.join(V,"manifest.json"),JSON.stringify(B,null,2),"utf-8");for(let E8 of I){let g8=E8.contentType==="d"?"documents":"templates",t8=Y$.join(V,g8,E8.entity.getPath());await q$.mkdir(t8,{recursive:!0})}await q$.mkdir(Y$.join(V,"documents"),{recursive:!0}),await q$.mkdir(Y$.join(V,"templates"),{recursive:!0});for(let E8 of D){let g8=Y$.join(V,"documents",E8.entity.getPath()),t8=E8.version.content;await q$.mkdir(Y$.dirname(g8),{recursive:!0}),await q$.writeFile(g8,t8,"utf-8")}for(let E8 of b){let g8=Y$.join(V,"templates",E8.entity.getPath()),t8=E8.version.content;await q$.mkdir(Y$.dirname(g8),{recursive:!0}),await q$.writeFile(g8,t8,"utf-8")}for(let E8 of L)if(E8.type!=="folder"){let g8=E8.type==="document"?"documents":"templates",t8=Y$.join(V,g8,E8.path);try{await q$.access(t8)}catch(v4){throw t.validation(`Manifest entry missing file: ${E8.path}`,"EXPORT_VALIDATION_FAILED")}}let i=`caw-export-${z()}.zip`,X8=Y$.join(A,i),N8=yr6(X8),h8=IE8.default("zip",{zlib:{level:9}});h8.on("error",async(E8)=>{throw await Z(V),uK("Zip creation error: %s",E8.message),t.validation(`Export failed: ${E8.message}`,"EXPORT_ERROR")}),h8.pipe(N8),h8.directory(V,!1),await h8.finalize(),await new Promise((E8,g8)=>{N8.on("close",E8),N8.on("error",g8),setTimeout(()=>{g8(new Error("Zip creation timeout"))},60000)}),uK("Created zip: %s (%d bytes)",i,h8.pointer()),await Z(V);let c8=L.length;return uK("Export complete: %s (%d entities)",i,c8),{success:!0,filename:i,path:X8,counts:{folders:I.length,documents:D.length,templates:b.length},draftOnlySkipped:{documents:m.length,templates:h.length}}}catch(M){throw await Z(V),M}}})},bE8=Object.freeze({create:pr6});var jL8=K1(XL8(),1),vL8=K1(X$(),1);R4();import s2 from"fs/promises";import jY from"path";import ws6 from"crypto";var V1=vL8.default("caw:import"),HB=".caw-exports",TL8=".tmp",Xs6=1,Ts6=/\b([A-Z][dtfn]\d+)\b/g,js6=({store:$,folderService:K,documentService:q,templateService:Y})=>{let z=(Z,O)=>{if(!Z)return Z;return Z.replace(Ts6,(w,X)=>{return O[X]??w})},P=async(Z)=>{try{await s2.rm(Z,{recursive:!0,force:!0})}catch(O){V1("Warning: Failed to cleanup temp directory: %s",O.message)}},J=async(Z,O,{storeCode:w})=>{let X=await K.listFolderContents(Z,O,{folderId:null,type:"d",storeCode:w}),T=await K.listFolderContents(Z,O,{folderId:null,type:"t",storeCode:w}),G=await q.listDocuments(Z,O,{parentId:null,storeCode:w,type:"d"}),v=await q.listDocuments(Z,O,{parentId:null,storeCode:w,type:"t"}),f=X.length===0&&T.length===0&&G.length===0&&v.length===0;return V1("Store %s empty check: %s",w,f),f},W=async(Z,O,{manifest:w,tempPath:X,storeCode:T})=>{return V1("Starting transaction..."),await Z.transaction().execute(async(G)=>{let v={},f=(m)=>{},A=w.entities.filter((m)=>m.type==="folder");V1("Phase 1: Creating %d folders",A.length);for(let m of A){let b=m.contentType||"d",h=await K.createFolder(G,O,{store:T,path:m.path,type:b},f);v[m.id]=h.getObjectId()}V1("Phase 1 complete - created %d folders",A.length);let C=w.entities.filter((m)=>m.type==="document"),V=[];V1("Phase 2: Reading %d documents",C.length);for(let m of C){let b=jY.join(X,"documents",m.path),h=await s2.readFile(b,"utf-8");V.push({oldId:m.id,path:m.path,content:h})}V1("Phase 2 complete - read %d documents",V.length),V1("Phase 3: Creating %d document entities",V.length);let M=[];for(let m of V){let b=await q.createDocument(G,O,{store:T,path:m.path,type:"d"},f);v[m.oldId]=b.getObjectId(),M.push({document:b,originalContent:m.content})}V1("Phase 3 complete - created %d document entities",M.length);let R=w.entities.filter((m)=>m.type==="template"),I=[];V1("Phase 4: Reading %d templates",R.length);for(let m of R){let b=jY.join(X,"templates",m.path),h=await s2.readFile(b,"utf-8");I.push({oldId:m.id,path:m.path,content:h})}V1("Phase 4 complete - read %d templates",I.length),V1("Phase 5: Creating %d template entities",I.length);let D=[];for(let m of I){let b=await q.createDocument(G,O,{store:T,path:m.path,type:"t"},f);v[m.oldId]=b.getObjectId(),D.push({template:b,originalContent:m.content})}V1("Phase 5 complete - created %d template entities",D.length),V1("Phase 6: Remapping and saving content for %d documents",M.length);for(let{document:m,originalContent:b}of M){let h=z(b,v);await q.saveDraft(G,O,{id:m.getObjectId(),content:h,clientId:"import-service"},f),await q.publishDocument(G,O,{id:m.getObjectId()},f)}V1("Phase 6 complete - saved and published %d documents",M.length),V1("Phase 7: Remapping and saving content for %d templates",D.length);for(let{template:m,originalContent:b}of D){let h=z(b,v);await q.saveDraft(G,O,{id:m.getObjectId(),content:h,clientId:"import-service"},f),await q.publishDocument(G,O,{id:m.getObjectId()},f)}return V1("Phase 7 complete - saved and published %d templates",D.length),V1("Transaction committed successfully"),{success:!0,counts:{folders:A.length,documents:M.length,templates:D.length},remapped:v}})};return Object.freeze({isStoreEmpty:J,importDocuments:async(Z,O,{filename:w,storeCode:X,projectPath:T})=>{V1("Starting import from %s to store %s",w,X);let G=jY.join(T,HB,w);try{await s2.access(G),V1("Zip file found: %s",G)}catch(V){throw t.notFound(`Export file not found: ${w}`,"EXPORT_NOT_FOUND")}V1("Validating zip and manifest...");let v=await J(Z,O,{storeCode:X});if(!v)throw t.conflict("Store not empty - import requires empty store","STORE_NOT_EMPTY");V1("Store empty check: %s",v);let f=ws6.randomUUID(),A=jY.join(T,HB,TL8,f),C=jY.join(T,HB,TL8);await s2.mkdir(C,{recursive:!0});try{new jL8.default(G).extractAllTo(A,!0),V1("Extracted zip to: %s",A)}catch(V){throw t.validation("Corrupted or invalid zip file","IMPORT_VALIDATION_FAILED")}try{let V=jY.join(A,"manifest.json"),M;try{let D=await s2.readFile(V,"utf-8");M=JSON.parse(D)}catch(D){throw t.validation(`Failed to read manifest: ${D.message}`,"MANIFEST_READ_FAILED")}if(M.version!==Xs6)throw t.validation(`Unsupported manifest version: ${M.version}`,"UNSUPPORTED_VERSION");if(!M.entities||!Array.isArray(M.entities))throw t.validation("Invalid manifest structure","MANIFEST_READ_FAILED");V1("Manifest valid: version=%d, entities=%d",M.version,M.entities.length);for(let D of M.entities)if(D.type!=="folder"){let m=D.type==="document"?jY.join(A,"documents",D.path):jY.join(A,"templates",D.path);try{await s2.access(m)}catch(b){throw t.validation(`Missing file for manifest entry: ${D.path}`,"IMPORT_VALIDATION_FAILED")}}V1("All content files validated");let R=await W(Z,O,{manifest:M,tempPath:A,storeCode:X}),I=R.counts.folders+R.counts.documents+R.counts.templates;return V1("Import complete: %d entities imported",I),R}finally{await P(A)}}})},GL8=Object.freeze({create:js6});var vs6=($)=>{let{name:K,interval:q,execute:Y}=$,z=null,P=!1,J=null,W=null,H=0,Z=null,A=Object.freeze({getName:()=>K,getInterval:()=>q,getIsRunning:()=>P,getLastRun:()=>J,getLastError:()=>W,getRunCount:()=>H,getNextRun:()=>Z}),C=async()=>{try{await Y(),J=new Date().toISOString(),W=null,H++}catch(D){console.error(`[CronJob] ${K} failed:`,D),W={message:D.message,timestamp:new Date().toISOString()}}if(P)Z=new Date(Date.now()+q).toISOString()},V=()=>{if(z!==null)return;z=setInterval(C,q),P=!0,Z=new Date(Date.now()+q).toISOString()},M=()=>{if(z===null)return;clearInterval(z),z=null,P=!1,Z=null},I=Object.freeze({start:V,stop:M,restart:()=>{M(),V()}});return{jobFns:A,controlFns:I}},OM=Object.freeze({create:vs6});var _L8=K1(X$(),1),Gs6=_L8.default("caw:cron:cleanup-edit-states"),fL8=async($)=>{let K=new Date(Date.now()-PW).toISOString();try{let q=await $.deleteFrom("document_edit_state").where("last_activity_at","<",K).execute(),Y=Number(q[0]?.numDeletedRows??0);if(Y>0)Gs6("Cleaned up %d expired edit locks (older than %d minutes)",Y,PW/60000);return{expired:Y}}catch(q){throw console.error("[Cleanup] Failed to cleanup expired edit locks:",q),q}};var _s6=({db:$})=>{let{jobFns:K,controlFns:q}=OM.create({name:"cleanup-stale-edit-states",interval:900000,execute:async()=>{await fL8($)}});return{job:Object.freeze(K),control:q}},AL8=Object.freeze({create:_s6});var fs6=({db:$})=>{let K=new Map,q=(Z,O)=>{let{job:w,control:X}=Z.create(O);K.set(w.getName(),{job:w,control:X})},Y=(Z)=>{let O=K.get(Z);if(!O)throw new Error(`Job not found: ${Z}`);let w=O.job.getIsRunning();return O.control.start(),{name:Z,status:w?"already-running":"started",isRunning:O.job.getIsRunning()}},z=(Z)=>{let O=K.get(Z);if(!O)throw new Error(`Job not found: ${Z}`);let w=O.job.getIsRunning();return O.control.stop(),{name:Z,status:w?"stopped":"already-stopped",isRunning:O.job.getIsRunning()}},P=(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()}},J=()=>{let Z=[];for(let[O,{job:w}]of K.entries())Z.push({name:w.getName(),interval:w.getInterval(),isRunning:w.getIsRunning(),lastRun:w.getLastRun(),lastError:w.getLastError(),runCount:w.getRunCount(),nextRun:w.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(AL8,{db:$}),Object.freeze({register:q,start:Y,stop:z,restart:P,list:J,startAll:W,stopAll:H})},VL8=Object.freeze({create:fs6});import Ku8 from"node:process";import NL8 from"node:process";import Ns6 from"node:os";import hs6 from"node:fs";import ks6 from"node:fs";import kL8 from"node:fs";var ZB;function As6(){try{return kL8.statSync("/.dockerenv"),!0}catch{return!1}}function Vs6(){try{return kL8.readFileSync("/proc/self/cgroup","utf8").includes("docker")}catch{return!1}}function OB(){if(ZB===void 0)ZB=As6()||Vs6();return ZB}var wB,Ms6=()=>{try{return ks6.statSync("/run/.containerenv"),!0}catch{return!1}};function wM(){if(wB===void 0)wB=Ms6()||OB();return wB}var ML8=()=>{if(NL8.platform!=="linux")return!1;if(Ns6.release().toLowerCase().includes("microsoft")){if(wM())return!1;return!0}try{return hs6.readFileSync("/proc/version","utf8").toLowerCase().includes("microsoft")?!wM():!1}catch{return!1}},hL8=NL8.env.__IS_WSL_TEST__?ML8:ML8();import XB from"node:process";function TB(){if(XB.platform!=="linux")return!1;if(XB.env.WAYLAND_DISPLAY)return!0;if(XB.env.XDG_SESSION_TYPE==="wayland")return!0;return!1}function T4($){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 Cs6}from"node:url";var nH=($,K)=>{let q=vB(Rs6($));if(typeof q!=="string")throw new TypeError(`${K} must be a string or a file URL: ${q}.`);return q},Rs6=($)=>jB($)?$.toString():$,jB=($)=>typeof $!=="string"&&$&&Object.getPrototypeOf($)===String.prototype,vB=($)=>$ instanceof URL?Cs6($):$;var XM=($,K=[],q={})=>{let Y=nH($,"First argument"),[z,P]=T4(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 J=z.map(String),W=J.find((H)=>H.includes("\x00"));if(W!==void 0)throw new TypeError(`Arguments cannot contain null bytes ("\\0"): ${W}`);if(!T4(P))throw new TypeError(`Last argument must be an options object: ${P}`);return[Y,J,P]};import{ChildProcess as bs6}from"node:child_process";import{StringDecoder as Ds6}from"node:string_decoder";var{toString:CL8}=Object.prototype,RL8=($)=>CL8.call($)==="[object ArrayBuffer]",m4=($)=>CL8.call($)==="[object Uint8Array]",mK=($)=>new Uint8Array($.buffer,$.byteOffset,$.byteLength),Ss6=new TextEncoder,DL8=($)=>Ss6.encode($),Es6=new TextDecoder,TM=($)=>Es6.decode($),SL8=($,K)=>{return Ls6($,K).join("")},Ls6=($,K)=>{if(K==="utf8"&&$.every((P)=>typeof P==="string"))return $;let q=new Ds6(K),Y=$.map((P)=>typeof P==="string"?DL8(P):P).map((P)=>q.write(P)),z=q.end();return z===""?Y:[...Y,z]},Vj=($)=>{if($.length===1&&m4($[0]))return $[0];return GB(Is6($))},Is6=($)=>$.map((K)=>typeof K==="string"?DL8(K):K),GB=($)=>{let K=new Uint8Array(xs6($)),q=0;for(let Y of $)K.set(Y,q),q+=Y.length;return K},xs6=($)=>{let K=0;for(let q of $)K+=q.length;return K};var xL8=($)=>Array.isArray($)&&Array.isArray($.raw),bL8=($,K)=>{let q=[];for(let[P,J]of $.entries())q=gs6({templates:$,expressions:K,tokens:q,index:P,template:J});if(q.length===0)throw new TypeError("Template script must not be empty");let[Y,...z]=q;return[Y,z,{}]},gs6=({templates:$,expressions:K,tokens:q,index:Y,template:z})=>{if(z===void 0)throw new TypeError(`Invalid backslash sequence: ${$.raw[Y]}`);let{nextTokens:P,leadingWhitespaces:J,trailingWhitespaces:W}=ys6(z,$.raw[Y]),H=LL8(q,P,J);if(Y===K.length)return H;let Z=K[Y],O=Array.isArray(Z)?Z.map((w)=>IL8(w)):[IL8(Z)];return LL8(H,O,W)},ys6=($,K)=>{if(K.length===0)return{nextTokens:[],leadingWhitespaces:!1,trailingWhitespaces:!1};let q=[],Y=0,z=EL8.has(K[0]);for(let J=0,W=0;J<$.length;J+=1,W+=1){let H=K[W];if(EL8.has(H)){if(Y!==J)q.push($.slice(Y,J));Y=J+1}else if(H==="\\"){let Z=K[W+1];if(Z===`
|
|
462
462
|
`)J-=1,W+=1;else if(Z==="u"&&K[W+2]==="{")W=K.indexOf("}",W+3);else W+=us6[Z]??1}}let P=Y===$.length;if(!P)q.push($.slice(Y));return{nextTokens:q,leadingWhitespaces:z,trailingWhitespaces:P}},EL8=new Set([" ","\t","\r",`
|
|
463
463
|
`]),us6={x:3,u:5},LL8=($,K,q)=>q||$.length===0||K.length===0?[...$,...K]:[...$.slice(0,-1),`${$.at(-1)}${K[0]}`,...K.slice(1)],IL8=($)=>{let K=typeof $;if(K==="string")return $;if(K==="number")return String($);if(T4($)&&(("stdout"in $)||("isMaxBuffer"in $)))return ms6($);if($ instanceof bs6||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`)},ms6=({stdout:$})=>{if(typeof $==="string")return $;if(m4($))return TM($);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 Q11}from"node:child_process";import{debuglog as ps6}from"node:util";import _B from"node:process";var f9=($)=>jM.includes($),jM=[_B.stdin,_B.stdout,_B.stderr],D7=["stdin","stdout","stderr"],vM=($)=>D7[$]??`stdio[${$}]`;var yL8=($)=>{let K={...$};for(let q of VB)K[q]=fB($,q);return K},fB=($,K)=>{let q=Array.from({length:cs6($)+1}),Y=Bs6($[K],q,K);return Qs6(Y,K)},cs6=({stdio:$})=>Array.isArray($)?Math.max($.length,D7.length):D7.length,Bs6=($,K,q)=>T4($)?Us6($,K,q):K.fill($),Us6=($,K,q)=>{for(let Y of Object.keys($).sort(ls6))for(let z of Fs6(Y,q,K))K[z]=$[Y];return K},ls6=($,K)=>gL8($)<gL8(K)?1:-1,gL8=($)=>{if($==="stdout"||$==="stderr")return 0;return $==="all"?2:1},Fs6=($,K,q)=>{if($==="ipc")return[q.length-1];let Y=AB($);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.
|