@kelceyp/caw-server 1.0.122 → 1.0.124

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/main.js CHANGED
@@ -758,7 +758,7 @@ globstar while`,$,w,K,G,T),this.matchOne($.slice(w),K.slice(G),q))return this.de
758
758
  )
759
759
  ORDER BY fts2.rank ASC LIMIT 1)`.as("bestVersionId")]).groupBy("doc.id").orderBy("score","asc").orderBy("doc.object_id","asc").limit(E).offset(x).execute(),a1=[];for(let y1 of x1)if(y1.bestVersionId!==null){let h1=await L.selectFrom("entity_content_fts").select([W6`snippet(entity_content_fts, 1, ${c}, ${i}, '...', 32)`.as("snippet")]).where(W6`entity_content_fts.rowid = ${W6.lit(y1.bestVersionId)}`).where("entity_content_fts","match",g).executeTakeFirst();a1.push({entityId:y1.entityId,name:y1.name,path:y1.path,docPk:y1.docPk,score:y1.score,snippet:h1?.snippet||"",matchType:"content",type:y1.type,subtype:y1.subtype||null})}else{let h1="";try{let z8=await L.selectFrom("obj_ref_fields").select("target_entity_id").where("entity_id","=",y1.docPk).where("field_definition_id","in",$8).orderBy(W6`CASE WHEN field_definition_id IN (${W6.join(G8)}) THEN 0 ELSE 1 END`,"asc").limit(1).executeTakeFirst();if(z8){let E8=await L.selectFrom("entity_content").select("content_text").where("entity_id","=",z8.target_entity_id).executeTakeFirst();h1=ji8(E8?.content_text)}}catch(z8){h1=""}a1.push({entityId:y1.entityId,name:y1.name,path:y1.path,docPk:y1.docPk,score:y1.score,snippet:h1,matchType:"name",type:y1.type,subtype:y1.subtype||null})}let K8=[];for(let y1 of a1)K8.push({entityId:y1.entityId,name:y1.name,path:y1.path,score:y1.score,snippet:y1.snippet,matchType:y1.matchType,type:y1.type,subtype:y1.subtype});return{results:K8,total:N1,debug:{strategy:"fts-first"}}}}},KA1={create:Ni8};var{parseId:k4,buildId:GX,validateStoreCode:ki8}=w$,{validateFolderName:qA1,isRootFolder:XL4}=R9,X2=_A1.default("caw:stores:db"),$z=3600000,Di8=({id:$,code:K,name:q,pk:Y,entityCache:z,createdAt:J,updatedAt:W})=>{let Z=cv1.create({entityCache:z,storePk:Y,storeCode:K}),O=pv1.create({storePk:Y,storeCode:K,entityCache:z}),H=Qv1.create({storePk:Y,storeCode:K,entityCache:z,pathOps:Z,fieldOps:O}),X=nv1.create({storePk:Y,storeCode:K,entityCache:z,fieldOps:O}),w=KA1.create({storePk:Y,storeCode:K,pathOps:Z,fieldOps:O}),G=null,T=async(F)=>{if(G===null)G=await y8.readEntityTypeId(F,{},"v",null);return G},{entityFns:P,mutationFns:v}=fq.create({id:$,name:q,createdAt:J,updatedAt:W}),V=()=>new Set([K]),j=()=>"local",D=()=>K,f=()=>Y,C=()=>({id:$,code:K,name:P.getName(),createdAt:P.getCreatedAt(),updatedAt:P.getUpdatedAt(),type:"local"}),h=(F)=>{ki8(F,K)},L=(F,i1,m)=>H.readEntity(F,i1,m),k=async(F,i1,{storeCode:m,parentId:p,name:b,subtype:Q})=>{if(m!==void 0)h(m);if(b!==null&&b!==void 0)qA1(b);let{row:l,id:a}=await Z.insertFolderRow(F,p,b,Q||null),_1=l.id;z.setIdByPk(_1,a);let O1=l.path,{entity:V1,mutationApi:v1}=p7.createFromRow(l,a,p,O1);return{entity:V1,mutationApi:v1,pk:_1}},g=async(F,i1,{id:m})=>{let p=k4(m);if(!p)return null;if(p.typeCode!=="f"&&p.typeCode!=="s")return null;if(p.typeCode==="s")X2("readFolder called with story ID %s — consider using readStory instead",m);let b=await F.selectFrom("entities").innerJoin("entity_types","entity_types.id","entities.entity_type_id").selectAll("entities").select("entity_types.subtype").where("entities.store_id","=",Y).where("entities.seq","=",p.seq).where("entities.type_code","=",p.typeCode).where("entities.deleted_at","is",null).executeTakeFirst();if(!b)return null;let{id:Q,parent_object_id:l}=b;z.setIdByPk(Q,m);let a=b.path,_1=await O.loadFieldsForEntity(F,Q),{entity:O1,mutationApi:V1}=p.typeCode==="s"?$Y.createFromRow(b,m,l,a):p7.createFromRow(b,m,l,a);for(let v1 of _1)V1.setField(v1.getDefinition().getName(),v1);return{entity:O1,mutationApi:V1,pk:Q}},S=async(F,i1,{id:m,name:p,parentId:b})=>{let Q=k4(m);U.factory(!Q,I.validation,`Invalid folder ID: ${m}`,"INVALID_ID");let l=["f","s","j"].includes(Q.typeCode)?[Q.typeCode]:null;U.factory(!l,I.validation,`Invalid type for folder update: ${m}`,"INVALID_TYPE");let a=await F.selectFrom("entities").innerJoin("entity_types","entity_types.id","entities.entity_type_id").selectAll("entities").select("entity_types.subtype").where("entities.store_id","=",Y).where("entities.seq","=",Q.seq).where("entities.type_code","in",l).where("entities.deleted_at","is",null).executeTakeFirst();U.factory(!a,I.notFound,`Folder not found: ${m}`,"FOLDER_NOT_FOUND");let{id:_1,subtype:O1}=a,V1={name:a.name,parentId:a.parent_object_id,path:null};if(z.setIdByPk(_1,m),V1.path=a.path,p!==void 0)qA1(p);let v1={},o1=a.parent_folder_id;if(p!==void 0)v1.name=p;if(b!==void 0){let l6=await Z.getParentPk(F,b);v1.parent_folder_id=l6,v1.parent_object_id=b,o1=l6}let q8=p!==void 0?p:a.name,j8=await Z.getParentStoredPath(F,o1),R8=j8!=null?`${j8}/${q8}`:q8;v1.path=R8,v1.updated_at=p8();let l8=await F.updateTable("entities").set(v1).where("id","=",_1).returningAll().executeTakeFirstOrThrow();if(V1.path!==R8)await Z.cascadePathUpdate(F,V1.path,R8,Y);let m8=R8,i8=await O.loadFieldsForEntity(F,_1),{entity:U8,mutationApi:M6}=p7.createFromRow({...l8,subtype:O1},m,l8.parent_object_id,m8);for(let l6 of i8)M6.setField(l6.getDefinition().getName(),l6);return{entity:U8,mutationApi:M6,pk:_1,oldValues:V1}},E=async(F,i1,{id:m})=>{let p=k4(m);U.factory(!p,I.validation,`Invalid folder ID: ${m}`,"INVALID_ID");let b=await F.selectFrom("entities").selectAll().where("store_id","=",Y).where("seq","=",p.seq).where("type_code","=","f").where("deleted_at","is",null).executeTakeFirst();U.factory(!b,I.notFound,`Folder not found: ${m}`,"FOLDER_NOT_FOUND");let Q=b.id;z.setIdByPk(Q,m);let l=b.path,a=await T(F),_1=await WA(F,Q,Y,z,a,p8);return{id:m,deleted:!0,descendantCount:_1.descendantCount,path:l,descendantIds:_1.descendantIds,deletedPks:_1.deletedPks}},x=async(F,i1,m,p,b=null)=>{let Q=await Z.getParentPk(F,m),l=F.selectFrom("entities").select("object_id").where("store_id","=",Y).where("parent_folder_id",Q===null?"is":"=",Q).where("name","=",p).where("deleted_at","is",null);if(b)l=l.where("object_id","!=",b);return!!await l.executeTakeFirst()},c=async(F,i1,m,p)=>{let b=await Z.getParentPk(F,m),Q=await F.selectFrom("entities").innerJoin("entity_types","entity_types.id","entities.entity_type_id").selectAll("entities").select("entity_types.subtype").where("entities.store_id","=",Y).where("entities.parent_folder_id",b===null?"is":"=",b).where("entities.name","=",p).where("entities.deleted_at","is",null).executeTakeFirst();if(!Q)return null;let{id:l,object_id:a}=Q;z.setIdByPk(l,a);let _1=Q.path,O1=await O.loadFieldsForEntity(F,l),{entity:V1,mutationApi:v1}=p7.createFromRow(Q,a,m,_1);for(let o1 of O1)v1.setField(o1.getDefinition().getName(),o1);return{entity:V1,mutationApi:v1,pk:l}},i=async(F,i1,{folderId:m,type:p})=>{let b;if(m){if(b=await Z.getParentPk(F,m),b===null)return[]}else if(p){let v1=await w1(F,i1,p);if(!v1)return[];b=v1.pk}else b=null;let Q=F.selectFrom("entities").selectAll("entities").where("entities.store_id","=",Y).where("entities.parent_folder_id",b===null?"is":"=",b).where("entities.deleted_at","is",null);if(p)Q=Q.where("entities.type_code","=","f").innerJoin("entity_types","entity_types.id","entities.entity_type_id").select("entity_types.subtype");let l=await Q.execute(),a=[],_1=new Map;for(let v1 of l)a.push(v1.id),_1.set(v1.id,v1);let O1=await O.batchLoadFieldsForEntities(F,a,_1),V1=[];for(let v1 of l){let{id:o1,object_id:q8}=v1;z.setIdByPk(o1,q8);let j8=v1.path,{entity:R8,mutationApi:l8}=p7.createFromRow(v1,q8,v1.parent_object_id,j8),m8=O1.get(o1)||[];for(let i8 of m8)l8.setField(i8.getDefinition().getName(),i8);V1.push({entity:R8,mutationApi:l8,pk:o1})}return V1},t=async(F,i1,{path:m,type:p})=>{U.factory(!p,I.validation,"type parameter is required for getFolderByPath","MISSING_TYPE");let b=(m??"").trim(),l={d:"Documents",t:"Templates",s:"Stories"}[p];U.factory(!l,I.validation,`Invalid type: ${p}`,"INVALID_TYPE");let a;if(b.startsWith(`${l}/`))a=b;else if(b===l)a=l;else a=b?`${l}/${b}`:l;let _1=await F.selectFrom("entities").innerJoin("entity_types","entity_types.id","entities.entity_type_id").selectAll("entities").select("entity_types.subtype").where("entities.store_id","=",Y).where("entities.path","=",a).where("entities.deleted_at","is",null).executeTakeFirst();if(!_1)return null;let{id:O1,object_id:V1}=_1;z.setIdByPk(O1,V1);let v1=await O.loadFieldsForEntity(F,O1),{entity:o1,mutationApi:q8}=_1.type_code==="s"?$Y.createFromRow(_1,V1,_1.parent_object_id,_1.path):p7.createFromRow(_1,V1,_1.parent_object_id,_1.path);for(let j8 of v1)q8.setField(j8.getDefinition().getName(),j8);return{entity:o1,mutationApi:q8,pk:O1}},w1=async(F,i1,m,p)=>{if(p!==void 0)h(p);let Q={d:"root_d",t:"root_t",s:"root_s"}[m];if(!Q)throw I.validation(`Invalid type for root folder: ${m}`,"INVALID_TYPE");let l=await y8.readEntityTypeId(F,i1,"f",Q),a=await F.selectFrom("entities").innerJoin("entity_types","entity_types.id","entities.entity_type_id").selectAll("entities").select("entity_types.subtype").where("entities.store_id","=",Y).where("entities.entity_type_id","=",l).where("entities.deleted_at","is",null).executeTakeFirst();if(!a)return null;let{id:_1,object_id:O1}=a;z.setIdByPk(_1,O1);let V1=a.path,v1=await O.loadFieldsForEntity(F,_1),{entity:o1,mutationApi:q8}=p7.createFromRow(a,O1,a.parent_object_id,V1);for(let j8 of v1)q8.setField(j8.getDefinition().getName(),j8);return{entity:o1,mutationApi:q8,pk:_1}},Z1=async(F,i1,{storeCode:m,ownerEntityId:p,ownerEntityTypePk:b,name:Q,label:l,description:a,primitiveType:_1,required:O1,multiplicity:V1,isSystem:v1=!1,editable:o1=!0,allowed:q8})=>{if(m!==void 0)h(m);let j8=["string","object_ref","int","text","date","float"];U.factory(!j8.includes(_1),I.validation,`Invalid primitiveType: ${_1}. Must be one of: ${j8.join(", ")}`,"INVALID_PRIMITIVE_TYPE"),U.factory(V1!=="single"&&V1!=="multi",I.validation,`Invalid multiplicity: ${V1}`,"INVALID_MULTIPLICITY"),U.factory(p&&b,I.validation,"Cannot set both ownerEntityId and ownerEntityTypePk","INVALID_FIELD_DEFINITION_SCOPE");let R8=p8(),l8=await y8.readEntityTypeId(F,i1,"n",null),m8=await N6.nextSeq(F,"store",Y,"n"),i8=GX(K,"n",m8),U8=p?await Z.getParentPk(F,p):null,M6=null;if(q8&&(q8.type==="function"||q8.values&&q8.values.length>0))M6=JSON.stringify({allowed:q8});let l6=await F.insertInto("field_definitions").values({store_id:Y,object_id:i8,entity_type_id:l8,type_code:"n",seq:m8,owner_entity_id:U8,name:Q,label:l,description:a,primitive_type:_1,required:O1?1:0,multiplicity:V1,config:M6,is_system:v1?1:0,editable:o1?1:0,created_at:R8,updated_at:R8}).returningAll().executeTakeFirstOrThrow(),y4=l6.id;if(z.setIdByPk(y4,i8),b)await F.insertInto("class_field_defs").values({store_id:Y,class_type_id:b,field_definition_id:y4,required:O1?1:0,sort_order:null}).execute();return O.fieldDefinitionFromRow(l6)},E1=async(F,i1,{id:m})=>{let p=k4(m);if(!p)return null;let b=await F.selectFrom("field_definitions").selectAll().where("store_id","=",Y).where("seq","=",p.seq).where("type_code","=","n").executeTakeFirst();if(!b)return null;if(b.owner_entity_id){let Q=await F.selectFrom("entities").select("object_id").where("id","=",b.owner_entity_id).executeTakeFirst();if(Q)z.setIdByPk(b.owner_entity_id,Q.object_id)}return z.setIdByPk(b.id,m),O.fieldDefinitionFromRow(b)},T1=async(F,i1,{id:m,config:p})=>{let b=k4(m);if(!b)throw I.notFound(`Field definition not found: ${m}`,"FIELD_DEFINITION_NOT_FOUND");let Q=p8(),l=await F.updateTable("field_definitions").set({config:p,updated_at:Q}).where("store_id","=",Y).where("seq","=",b.seq).where("type_code","=","n").returningAll().executeTakeFirst();if(!l)throw I.notFound(`Field definition not found: ${m}`,"FIELD_DEFINITION_NOT_FOUND");return z.setIdByPk(l.id,m),O.fieldDefinitionFromRow(l)},H1=async(F,i1,m,p)=>{let b;if(p===null)b=await F.selectFrom("field_definitions as fd").leftJoin("class_field_defs as cfd","cfd.field_definition_id","fd.id").selectAll("fd").where("fd.store_id","=",Y).where("fd.name","=",m).where("fd.owner_entity_id","is",null).where("cfd.id","is",null).executeTakeFirst();else b=await F.selectFrom("field_definitions").selectAll().where("store_id","=",Y).where("name","=",m).where("owner_entity_id","=",p).executeTakeFirst();if(!b)return null;if(b.owner_entity_id){let Q=await F.selectFrom("entities").select("object_id").where("id","=",b.owner_entity_id).executeTakeFirst();if(Q)z.setIdByPk(b.owner_entity_id,Q.object_id)}return z.setIdByPk(b.id,b.object_id),O.fieldDefinitionFromRow(b)},Q1=async(F,i1,{fieldDefinitionId:m,fieldName:p,ownerEntityPk:b,entityTypePk:Q})=>{if(m){let V1=await E1(F,i1,{id:m});if(V1)return V1}if(p&&b){let V1=await H1(F,i1,p,b);if(V1)return V1}if(p&&Q){let V1=await y8.getInheritanceChain(F,Q);for(let v1 of V1){let o1=await F.selectFrom("field_definitions as fd").innerJoin("class_field_defs as cfd","cfd.field_definition_id","fd.id").select(["fd.id","fd.store_id","fd.object_id","fd.entity_type_id","fd.type_code","fd.seq","fd.owner_entity_id","fd.name","fd.label","fd.description","fd.primitive_type","fd.required","fd.multiplicity","fd.config","fd.is_system","fd.editable","fd.ordinal","fd.created_at","fd.updated_at","cfd.required as class_required"]).where("fd.store_id","=",Y).where("fd.name","=",p).where("fd.owner_entity_id","is",null).where("cfd.class_type_id","=",v1).executeTakeFirst();if(o1)return z.setIdByPk(o1.id,o1.object_id),o1.required=o1.class_required,O.fieldDefinitionFromRow(o1)}}if(p){let V1=await H1(F,i1,p,null);if(V1)return V1}let l="unknown";if(Q){let V1=await F.selectFrom("entity_types").select(["code","subtype"]).where("id","=",Q).executeTakeFirst();if(V1)l=V1.subtype||V1.code}let a=[];if(Q){let V1=await y8.getInheritanceChain(F,Q);for(let v1 of V1){let o1=await F.selectFrom("field_definitions as fd").innerJoin("class_field_defs as cfd","cfd.field_definition_id","fd.id").select("fd.name").where("fd.store_id","=",Y).where("fd.owner_entity_id","is",null).where("cfd.class_type_id","=",v1).execute();for(let q8 of o1)if(!a.includes(q8.name))a.push(q8.name)}}let _1=await F.selectFrom("field_definitions as fd").leftJoin("class_field_defs as cfd","cfd.field_definition_id","fd.id").select("fd.name").where("fd.store_id","=",Y).where("fd.owner_entity_id","is",null).where("cfd.id","is",null).execute();for(let V1 of _1)if(!a.includes(V1.name))a.push(V1.name);let O1=a.length>0?a.join(", "):"none";throw I.validation(`Field '${p}' is not defined for entity type '${l}'. Available fields: ${O1}`,"UNDEFINED_FIELD")},L1=async(F,i1,{ownerEntityPk:m,includeSystem:p=!0})=>{let b;if(m===null)b=[];else{let l=F.selectFrom("field_definitions").selectAll().where("store_id","=",Y).where("owner_entity_id","=",m);if(!p)l=l.where("is_system","=",0);b=await l.execute()}let Q=[];for(let l of b){if(l.owner_entity_id){let a=await F.selectFrom("entities").select("object_id").where("id","=",l.owner_entity_id).executeTakeFirst();if(a)z.setIdByPk(l.owner_entity_id,a.object_id)}z.setIdByPk(l.id,l.object_id),Q.push(O.fieldDefinitionFromRow(l))}return Q},w8=async(F,i1,{code:m,subtype:p})=>{X2("resolveEntityTypePk called: code=%s, subtype=%s (store=%s)",m,p,K);try{let b=await y8.readEntityTypeId(F,i1,m,p);return X2("resolveEntityTypePk succeeded: code=%s, subtype=%s -> pk=%d",m,p,b),b}catch(b){if(b.constructor?.name==="NoResultError")throw X2("resolveEntityTypePk failed: code=%s, subtype=%s (store=%s)",m,p,K),I.notFound("Entity type not found","ENTITY_TYPE_NOT_FOUND");throw b}},$8=async(F,i1,{code:m,subtype:p,name:b,parentTypePk:Q=null})=>{X2("createEntityType called: code=%s, subtype=%s, name=%s, parentTypePk=%s",m,p,b,Q);let l=await y8.createEntityType(F,i1,{code:m,subtype:p,name:b,parentTypePk:Q});return X2("createEntityType succeeded: id=%d, code=%s, subtype=%s, parent_type_id=%s",l.id,m,p,l.parent_type_id),l},G8=async(F,i1,{code:m,subtype:p})=>{X2("getFieldDefinitionsForEntityType called: code=%s, subtype=%s (store=%s)",m,p,K);let b;try{b=await y8.readEntityTypeId(F,i1,m,p),X2("getFieldDefinitionsForEntityType resolved pk: code=%s, subtype=%s -> pk=%d",m,p,b)}catch(_1){if(_1.constructor?.name==="NoResultError")throw X2("getFieldDefinitionsForEntityType failed: code=%s, subtype=%s (store=%s)",m,p,K),I.notFound("Entity type not found","ENTITY_TYPE_NOT_FOUND");throw _1}let Q=await y8.getInheritanceChain(F,b);X2("getFieldDefinitionsForEntityType inheritance chain: %j",Q);let l=new Map;if(Q.length>0){let _1=await F.selectFrom("entity_types").select(["id","code","subtype"]).where("id","in",Q).execute();for(let O1 of _1)l.set(O1.id,{code:O1.code,subtype:O1.subtype})}let a=new Map;for(let _1 of Q){let O1=await F.selectFrom("field_definitions as fd").innerJoin("class_field_defs as cfd","cfd.field_definition_id","fd.id").select(["fd.id","fd.store_id","fd.object_id","fd.entity_type_id","fd.type_code","fd.seq","fd.owner_entity_id","fd.name","fd.label","fd.description","fd.primitive_type","fd.required","fd.multiplicity","fd.config","fd.is_system","fd.editable","fd.ordinal","fd.created_at","fd.updated_at","cfd.required as class_required","cfd.sort_order","cfd.rows as class_rows","cfd.colspan as class_colspan","cfd.description as class_description"]).where("fd.store_id","=",Y).where("cfd.class_type_id","=",_1).orderBy("cfd.sort_order","asc").execute(),V1=l.get(_1);for(let v1 of O1)if(!a.has(v1.name)){z.setIdByPk(v1.id,v1.object_id),v1.required=v1.class_required;let o1=O.fieldDefinitionFromRow(v1);a.set(v1.name,{...o1,sourcePk:_1,sourceCode:V1?.code,sourceSubtype:V1?.subtype,inherited:_1!==b,sortOrder:v1.sort_order,rows:v1.class_rows,colspan:v1.class_colspan,classDescription:v1.class_description})}}return Array.from(a.values())},W8=async(F,i1,{id:m})=>{let p=k4(m);U.factory(!p,I.validation,`Invalid definition ID: ${m}`,"INVALID_ID");let b=await F.selectFrom("field_definitions").selectAll().where("store_id","=",Y).where("seq","=",p.seq).where("type_code","=","n").executeTakeFirst();U.factory(!b,I.notFound,`Field definition not found: ${m}`,"DEFINITION_NOT_FOUND"),U.factory(b.is_system===1,I.validation,`Cannot delete system field definition: ${m}`,"SYSTEM_DEFINITION");let Q=b.id;if(await F.deleteFrom("field_definitions").where("id","=",Q).execute(),b.owner_entity_id){let a=await F.selectFrom("entities").select("object_id").where("id","=",b.owner_entity_id).executeTakeFirst();if(a)z.setIdByPk(b.owner_entity_id,a.object_id)}let{entity:l}=O.fieldDefinitionFromRow(b);return l},m1=async(F,i1,{fieldDefinitionId:m,entityTypePk:p,required:b=!1,sortOrder:Q=null,rows:l=null,colspan:a=null,description:_1=null})=>{X2("addClassAssociation called: fieldDefId=%s, entityTypePk=%d (store=%s)",m,p,K);let O1=k4(m);U.factory(!O1,I.validation,`Invalid definition ID: ${m}`,"INVALID_ID");let V1=await F.selectFrom("field_definitions").select("id").where("store_id","=",Y).where("seq","=",O1.seq).where("type_code","=","n").executeTakeFirst();U.factory(!V1,I.notFound,`Field definition not found: ${m}`,"DEFINITION_NOT_FOUND");let v1=V1.id,o1=Q;if(o1===null)o1=((await F.selectFrom("class_field_defs").select(F.fn.max("sort_order").as("max_sort")).where("store_id","=",Y).where("class_type_id","=",p).executeTakeFirst())?.max_sort??0)+10;try{await F.insertInto("class_field_defs").values({store_id:Y,class_type_id:p,field_definition_id:v1,required:b?1:0,sort_order:o1,rows:l,colspan:a,description:_1}).execute()}catch(q8){if(q8.message?.includes("UNIQUE constraint failed"))throw I.conflict("Class association already exists","DUPLICATE_CLASS_ASSOCIATION");throw q8}return X2("addClassAssociation succeeded: fieldDefId=%s, entityTypePk=%d",m,p),{fieldDefinitionId:m,entityTypePk:p}},e1=async(F,i1,{entityId:m,fieldDefinitionId:p,fieldName:b,value:Q,values:l})=>{let a=k4(m);U.factory(!a,I.validation,`Invalid entity ID: ${m}`,"INVALID_ID");let _1=await F.selectFrom("entities").select(["id","entity_type_id"]).where("store_id","=",Y).where("seq","=",a.seq).where("type_code","=",a.typeCode).where("deleted_at","is",null).executeTakeFirst();U.factory(!_1,I.notFound,`Entity not found: ${m}`,"ENTITY_NOT_FOUND");let O1=_1.id,{entity:V1,pk:v1}=await Q1(F,i1,{fieldDefinitionId:p,fieldName:b,ownerEntityPk:O1,entityTypePk:_1.entity_type_id}),o1=V1.getMultiplicity(),q8;if(o1==="single")if(l&&Array.isArray(l))U.factory(l.length>1||l.length===0,I.validation,`Field '${V1.getName()}' is single-valued but received ${l.length} values`,"MULTIPLICITY_VIOLATION"),q8=[l[0]];else U.factory(Q===void 0,I.validation,"Single-valued field requires value parameter","VALUE_REQUIRED"),q8=[Q];else if(l&&Array.isArray(l))q8=l;else if(Q!==void 0)q8=[Q];else U.factory(!0,I.validation,"Multi-valued field requires either value or values parameter","VALUE_OR_VALUES_REQUIRED");let j8=V1.getPrimitiveType();await O.deleteTypedField(F,O1,v1,j8);for(let i8=0;i8<q8.length;i8++){let U8=q8[i8];await O.insertTypedField(F,O1,v1,j8,U8,i8)}let R8=q8.map((i8)=>{if(j8==="int")return typeof i8==="string"?parseInt(i8,10):i8;else if(j8==="float")return typeof i8==="string"?parseFloat(i8):i8;return i8}),l8=x3.create({definition:V1,values:R8}),m8;if(a.typeCode==="f")m8=await g(F,i1,{id:m});else if(a.typeCode==="s")m8=await b1(F,i1,{id:m});else if(a.typeCode==="j")m8=await z1(F,i1,{id:m});else if(a.typeCode==="e")m8=await M8(F,i1,{id:m});else m8=await N1(F,i1,{id:m});return U.factory(!m8,I.notFound,`Entity not found after field update: ${m}`,"ENTITY_NOT_FOUND"),{...m8,field:l8,fieldName:V1.getName()}},J1=async(F,i1,{entityId:m,fieldDefinitionId:p,fieldName:b})=>{let Q=k4(m);U.factory(!Q,I.validation,`Invalid entity ID: ${m}`,"INVALID_ID");let l=await F.selectFrom("entities").select(["id","entity_type_id"]).where("store_id","=",Y).where("seq","=",Q.seq).where("type_code","=",Q.typeCode).where("deleted_at","is",null).executeTakeFirst();U.factory(!l,I.notFound,`Entity not found: ${m}`,"ENTITY_NOT_FOUND");let a=l.id,{entity:_1,pk:O1}=await Q1(F,i1,{fieldDefinitionId:p,fieldName:b,ownerEntityPk:a,entityTypePk:l.entity_type_id}),V1=_1.getPrimitiveType();await O.deleteTypedField(F,a,O1,V1);let v1;if(Q.typeCode==="f")v1=await g(F,i1,{id:m});else if(Q.typeCode==="s")v1=await b1(F,i1,{id:m});else if(Q.typeCode==="j")v1=await z1(F,i1,{id:m});else if(Q.typeCode==="e")v1=await M8(F,i1,{id:m});else v1=await N1(F,i1,{id:m});return U.factory(!v1,I.notFound,`Entity not found after field delete: ${m}`,"ENTITY_NOT_FOUND"),{...v1,fieldName:_1.getName()}},q1=async(F,i1,{entityId:m,fieldDefinitionId:p,fieldName:b})=>{let Q=k4(m);if(!Q)return null;let l=await F.selectFrom("entities").select(["id","entity_type_id"]).where("store_id","=",Y).where("seq","=",Q.seq).where("type_code","=",Q.typeCode).where("deleted_at","is",null).executeTakeFirst();if(!l)return null;let a=l.id,_1;try{_1=await Q1(F,i1,{fieldDefinitionId:p,fieldName:b,ownerEntityPk:a,entityTypePk:l.entity_type_id})}catch{return null}let{entity:O1,pk:V1}=_1,v1=O1.getPrimitiveType(),q8=(await O.loadTypedFieldValues(F,a)).get(V1);if(!q8||q8.values.length===0)return null;let j8=q8.values,R8=O1.getMultiplicity()==="single";return x3.create({definition:O1,values:j8,isSingleValued:R8})},A1=(F,i1,m)=>X.createVersionEntity(F,i1,m),n=(F,i1)=>X.readVersionEntity(F,i1),j1=async(F,i1,{type:m,storeCode:p,parentId:b,name:Q,initialContent:l,subtype:a})=>{let _1=b6.getEntityFactory(m);if(p!==void 0)h(p);await O.initSystemFieldDefCache(F);let O1=p8(),V1=await y8.readEntityTypeId(F,i1,m,a??null),v1=a?await y8.readEntityTypeId(F,i1,m,null):V1,o1=await N6.nextSeq(F,"store",Y,m),q8=GX(K,m,o1),j8=await Z.getParentPk(F,b),R8=await Z.getParentStoredPath(F,j8),l8=R8!=null?`${R8}/${Q}`:Q,m8=await F.insertInto("entities").values({store_id:Y,object_id:q8,entity_type_id:V1,type_code:m,seq:o1,parent_folder_id:j8,parent_object_id:b,name:Q,path:l8,created_at:O1,updated_at:O1}).returningAll().executeTakeFirstOrThrow(),i8=m8.id;z.setIdByPk(i8,q8);let U8=l!==null&&l!==void 0,M6=null;if(U8){let h4=await A1(F,i1,{documentPk:i8,documentObjectId:q8,documentEntityTypeId:V1,documentName:Q,content:l,versionNumber:1,publishedAt:null});M6=h4.objectId;let Y2=O.getSystemFieldDef("draft_version",v1);if(!Y2)throw Error(`System field definition "draft_version" not found for base type ${m}`);await F.insertInto("obj_ref_fields").values({entity_id:i8,field_definition_id:Y2.pk,target_entity_id:h4.pk,ordinal:0}).execute(),X2("Created document %s with draft version %s",q8,M6)}let l6=await O.loadFieldsForEntity(F,i8),y4={...m8,subtype:a??null},{entity:_2,mutationApi:O4}=_1(y4,q8,b,l8,null,U8,U8?l:null,null);for(let h4 of l6)O4.setField(h4.getDefinition().getName(),h4);return{entity:_2,mutationApi:O4,pk:i8}},N1=async(F,i1,{id:m})=>{let p=k4(m);if(!p)return null;let{typeCode:b,seq:Q}=p,l=b6.getEntityFactory(b);await O.initSystemFieldDefCache(F);let a=await F.selectFrom("entities as e").innerJoin("entity_types as et","et.id","e.entity_type_id").select(["e.id as entity_id","e.object_id","e.parent_folder_id","e.parent_object_id","e.entity_type_id","e.name","e.path","e.created_at","e.updated_at","e.deleted_at","et.subtype"]).where("e.store_id","=",Y).where("e.type_code","=",b).where("e.seq","=",Q).where("e.deleted_at","is",null).executeTakeFirst();if(!a)return null;let{entity_id:_1,entity_type_id:O1}=a;z.setIdByPk(_1,m);let V1=O1;if(a.subtype)V1=await y8.readEntityTypeId(F,i1,b,null);let v1=O.getSystemFieldDef("draft_version",V1),o1=O.getSystemFieldDef("latest_published_version",V1),q8=null,j8=null;if(v1)q8=(await F.selectFrom("obj_ref_fields").select("target_entity_id").where("entity_id","=",_1).where("field_definition_id","=",v1.pk).executeTakeFirst())?.target_entity_id??null;if(o1)j8=(await F.selectFrom("obj_ref_fields").select("target_entity_id").where("entity_id","=",_1).where("field_definition_id","=",o1.pk).executeTakeFirst())?.target_entity_id??null;let R8=null,l8=null,m8=null,i8=!1;if(j8){let G4=await n(F,j8);if(G4)R8=G4.versionNumber,l8=G4.content}if(q8){let G4=await n(F,q8);if(G4)i8=!0,m8=G4.content}let U8=null,M6=null,l6=null,y4=O.getSystemFieldDef("edit_session_id",V1),_2=O.getSystemFieldDef("edit_started_at",V1),O4=O.getSystemFieldDef("edit_last_activity_at",V1);if(y4)U8=(await F.selectFrom("string_fields").select("value").where("entity_id","=",_1).where("field_definition_id","=",y4.pk).executeTakeFirst())?.value??null;if(_2)M6=(await F.selectFrom("date_fields").select("value").where("entity_id","=",_1).where("field_definition_id","=",_2.pk).executeTakeFirst())?.value??null;if(O4)l6=(await F.selectFrom("date_fields").select("value").where("entity_id","=",_1).where("field_definition_id","=",O4.pk).executeTakeFirst())?.value??null;let h4=a.path,Y2=await O.loadFieldsForEntity(F,_1),{entity:e4,mutationApi:U2}=l(a,a.object_id,a.parent_object_id,h4,R8,i8,m8,l8);for(let G4 of Y2)U2.setField(G4.getDefinition().getName(),G4);if(U8)U2.setEditState({sessionId:U8,startedAt:M6,lastActivityAt:l6});return{entity:e4,mutationApi:U2,pk:_1}},x1=async(F,i1,{id:m,name:p,parentId:b})=>{let Q=k4(m);U.factory(!Q,I.validation,`Invalid content ID: ${m}`,"INVALID_ID");let{typeCode:l,seq:a}=Q,_1=b6.getContentTypeLabel(l),O1=b6.getEntityFactory(l),V1=await F.selectFrom("entities").selectAll().where("store_id","=",Y).where("seq","=",a).where("type_code","=",l).where("deleted_at","is",null).executeTakeFirst();U.factory(!V1,I.notFound,`${_1} not found: ${m}`,"NOT_FOUND");let v1=V1.id,o1={name:V1.name,parentId:V1.parent_object_id,path:V1.path};z.setIdByPk(v1,m);let j8={updated_at:p8()},R8=V1.parent_folder_id;if(p!==void 0)j8.name=p;if(b!==void 0){let U8=await Z.getParentPk(F,b);j8.parent_folder_id=U8,j8.parent_object_id=b,R8=U8}let l8=p!==void 0?p:V1.name,m8=await Z.getParentStoredPath(F,R8);if(j8.path=m8!=null?`${m8}/${l8}`:l8,await F.updateTable("entities").set(j8).where("id","=",v1).execute(),p!==void 0&&p!==o1.name){await O.initSystemFieldDefCache(F);let U8=await y8.readEntityTypeId(F,i1,"d",null),M6=await y8.readEntityTypeId(F,i1,"t",null),l6=O.getSystemFieldDef("latest_published_version",U8),y4=O.getSystemFieldDef("latest_published_version",M6),_2=O.getSystemFieldDef("draft_version",U8),O4=O.getSystemFieldDef("draft_version",M6),h4=[l6?.pk,y4?.pk,_2?.pk,O4?.pk].filter((Y2)=>Y2!=null);if(h4.length>0){let Y2=await F.selectFrom("obj_ref_fields as orf").select("orf.target_entity_id as version_pk").where("orf.entity_id","=",v1).where("orf.field_definition_id","in",h4).execute();X2("Updating FTS name for %d current versions of renamed document %s",Y2.length,m);for(let{version_pk:e4}of Y2)await W6`UPDATE entity_content_fts
760
760
  SET name = ${p}
761
- WHERE rowid = ${e4}`.execute(F)}}let i8=await N1(F,i1,{id:m});return U.factory(!i8,I.notFound,`${_1} not found after update: ${m}`,"NOT_FOUND"),{...i8,oldValues:o1}},a1=async(F,i1,{id:m,subtype:p})=>{let b=k4(m);U.factory(!b,I.validation,`Invalid content ID: ${m}`,"INVALID_ID");let{typeCode:Q,seq:l}=b,a=b6.getContentTypeLabel(Q),_1=b6.getEntityFactory(Q),O1=await F.selectFrom("entities").selectAll().where("store_id","=",Y).where("seq","=",l).where("type_code","=",Q).where("deleted_at","is",null).executeTakeFirst();U.factory(!O1,I.notFound,`${a} not found: ${m}`,"NOT_FOUND");let V1=O1.id,v1=await y8.readEntityTypeId(F,i1,Q,p??null),o1=p8();await F.updateTable("entities").set({entity_type_id:v1,updated_at:o1}).where("id","=",V1).execute(),z.setIdByPk(V1,m);let q8=await N1(F,i1,{id:m});return U.factory(!q8,I.notFound,`${a} not found after type update: ${m}`,"NOT_FOUND"),q8},K8=async(F,i1,{entityId:m,entityTypePk:p})=>{let b=k4(m);U.factory(!b,I.validation,`Invalid entity ID: ${m}`,"INVALID_ID");let{typeCode:Q,seq:l}=b,a=await F.selectFrom("entities").select("id").where("store_id","=",Y).where("seq","=",l).where("type_code","=",Q).where("deleted_at","is",null).executeTakeFirst();U.factory(!a,I.notFound,`Entity not found: ${m}`,"NOT_FOUND");let _1=a.id,O1=await F.selectFrom("field_definitions as fd").innerJoin("class_field_defs as cfd","cfd.field_definition_id","fd.id").select(["fd.id","fd.primitive_type"]).where("cfd.class_type_id","=",p).execute(),V1=0;for(let v1 of O1)await O.deleteTypedField(F,_1,v1.id,v1.primitive_type),V1++;return{deletedCount:V1}},y1=async(F,i1,{id:m})=>{let p=k4(m);U.factory(!p,I.validation,`Invalid content ID: ${m}`,"INVALID_ID");let{typeCode:b,seq:Q}=p,l=b6.getContentTypeLabel(b),a=await F.selectFrom("entities").selectAll().where("store_id","=",Y).where("seq","=",Q).where("type_code","=",b).where("deleted_at","is",null).executeTakeFirst();U.factory(!a,I.notFound,`${l} not found: ${m}`,"NOT_FOUND");let _1=a.id;z.setIdByPk(_1,m);let O1=a.path;await O.initSystemFieldDefCache(F);let V1=await y8.readEntityTypeId(F,i1,"v",null),v1=O.getSystemFieldDef("document",V1);if(v1){let q8=await F.selectFrom("obj_ref_fields as orf").innerJoin("entities as ve","ve.id","orf.entity_id").select("orf.entity_id as version_pk").where("orf.field_definition_id","=",v1.pk).where("orf.target_entity_id","=",_1).where("ve.deleted_at","is",null).execute();X2("Cascade soft-deleting %d version entities for document %s",q8.length,m);let j8=await y8.readEntityTypeId(F,i1,b,null),R8=O.getSystemFieldDef("draft_version",j8),l8=O.getSystemFieldDef("latest_published_version",j8),m8=[R8?.pk,l8?.pk].filter(Boolean);if(m8.length>0)await F.deleteFrom("obj_ref_fields").where("entity_id","=",_1).where("field_definition_id","in",m8).execute();let i8=q8.map((U8)=>U8.version_pk);if(i8.length>0){let U8=p8();await F.updateTable("entities").set({deleted_at:U8}).where("id","in",i8).execute()}}let o1=p8();return await F.updateTable("entities").set({deleted_at:o1}).where("id","=",_1).execute(),{id:m,deleted:!0,path:O1}},h1=async(F,i1,{type:m,limit:p=50,offset:b=0}={})=>{let l=F.selectFrom("entities as e").leftJoin("entities as parent","parent.id","e.parent_folder_id").select(["e.id as pk","e.object_id","e.type_code","e.name","e.path","e.deleted_at","e.parent_folder_id","parent.object_id as parent_object_id"]).where("e.store_id","=",Y).where("e.deleted_at","is not",null).where("e.type_code","!=","v").orderBy("e.deleted_at","desc").limit(p).offset(b);if(m)l=l.where("e.type_code","=",m);let a=await l.execute(),_1=[];for(let O1 of a){let V1=O1.deleted_at,v1=new Date(V1),q8=Math.floor((new Date-v1)/86400000),j8=Math.max(0,30-q8),R8=O1.path;_1.push({id:O1.object_id,name:O1.name,type:O1.type_code,deletedAt:V1,daysUntilPurge:j8,parentId:O1.parent_object_id,originalPath:R8})}return _1},z8=async(F,i1,m,p)=>{await O.initSystemFieldDefCache(F);let b=await y8.readEntityTypeId(F,i1,"v",null),Q=O.getSystemFieldDef("document",b);if(!Q)return;let l=await F.selectFrom("obj_ref_fields as orf").innerJoin("entities as ve","ve.id","orf.entity_id").select(["orf.entity_id as version_pk","ve.deleted_at"]).where("orf.field_definition_id","=",Q.pk).where("orf.target_entity_id","=",m).execute();if(l.length===0)return;let a=l.map((U8)=>U8.version_pk),_1=l.filter((U8)=>U8.deleted_at).map((U8)=>U8.version_pk);if(_1.length>0)await F.updateTable("entities").set({deleted_at:null}).where("id","in",_1).execute();let O1=O.getSystemFieldDef("version_number",b),V1=await F.selectFrom("int_fields").select(["entity_id","value"]).where("entity_id","in",a).where("field_definition_id","=",O1.pk).execute(),v1=new Map(V1.map((U8)=>[U8.entity_id,U8.value])),o1=O.getSystemFieldDef("published_at",b),q8=await F.selectFrom("date_fields").select(["entity_id","value"]).where("entity_id","in",a).where("field_definition_id","=",o1.pk).execute(),j8=new Map(q8.map((U8)=>[U8.entity_id,U8.value])),R8=a.map((U8)=>({version_pk:U8,version_number:v1.get(U8)??0,published_at:j8.get(U8)??null})),l8=R8.filter((U8)=>U8.published_at).sort((U8,M6)=>M6.version_number-U8.version_number),m8=R8.find((U8)=>!U8.published_at),i8=await y8.readEntityTypeId(F,i1,p,null);if(l8.length>0){let U8=O.getSystemFieldDef("latest_published_version",i8);if(U8)await F.insertInto("obj_ref_fields").values({entity_id:m,field_definition_id:U8.pk,target_entity_id:l8[0].version_pk,ordinal:0}).onConflict((M6)=>M6.columns(["entity_id","field_definition_id","ordinal"]).doUpdateSet({target_entity_id:l8[0].version_pk})).execute()}if(m8){let U8=O.getSystemFieldDef("draft_version",i8);if(U8)await F.insertInto("obj_ref_fields").values({entity_id:m,field_definition_id:U8.pk,target_entity_id:m8.version_pk,ordinal:0}).onConflict((M6)=>M6.columns(["entity_id","field_definition_id","ordinal"]).doUpdateSet({target_entity_id:m8.version_pk})).execute()}},E8=async(F,i1,{id:m})=>{let p=await F.selectFrom("entities as e").leftJoin("entities as parent","parent.id","e.parent_folder_id").select(["e.id","e.type_code","e.name","e.parent_folder_id","e.deleted_at","e.entity_type_id","e.path","parent.object_id as parent_object_id"]).where("e.object_id","=",m).where("e.store_id","=",Y).executeTakeFirst();if(U.factory(!p,I.notFound,`Entity not found: ${m}`,"NOT_FOUND"),U.factory(!p.deleted_at,I.validation,`Entity is not deleted: ${m}`,"INVALID_STATE"),p.parent_folder_id){let v1=await F.selectFrom("entities").select(["id","deleted_at"]).where("id","=",p.parent_folder_id).executeTakeFirst();U.factory(!v1||v1.deleted_at,I.conflict,"Cannot restore: parent folder is also deleted","PARENT_DELETED")}let b=p.name,Q="",l=0;while(!0){let v1=l===0?b:b+Q;if(!await F.selectFrom("entities").select("id").where("store_id","=",Y).where("parent_folder_id",p.parent_folder_id===null?"is":"=",p.parent_folder_id).where("name","=",v1).where("deleted_at","is",null).executeTakeFirst()){b=v1;break}l++,Q=l===1?"-restored":`-restored-${l}`}let a=await Z.getParentStoredPath(F,p.parent_folder_id),_1=!["a","r"].includes(p.type_code)?a!=null?`${a}/${b}`:b:null,O1=_1!==null?{deleted_at:null,name:b,path:_1}:{deleted_at:null,name:b};if(await F.updateTable("entities").set(O1).where("id","=",p.id).execute(),["d","t"].includes(p.type_code))await z8(F,i1,p.id,p.type_code);let V1=[];if(["f","s"].includes(p.type_code))V1=(await r1(F,i1,p.id,p.path,_1)).descendantIds;return{id:m,name:b,restored:!0,renamed:b!==p.name,parentFolderId:p.parent_object_id??null,type:p.type_code,descendantIds:V1}},r1=async(F,i1,m,p,b)=>{let Q=await $F(F,m,Y,{includeDeleted:!0}),l=[m,...Q],a=await F.selectFrom("entities").select(["id","name","parent_folder_id","type_code"]).where("id","in",l).execute();for(let v1 of a)if(await F.selectFrom("entities").select("id").where("store_id","=",Y).where("parent_folder_id",v1.parent_folder_id===null?"is":"=",v1.parent_folder_id).where("name","=",v1.name).where("deleted_at","is",null).where("id","!=",v1.id).executeTakeFirst()){let q8=1,j8;while(!0){let U8=q8===1?"-restored":`-restored-${q8}`;if(j8=v1.name+U8,!await F.selectFrom("entities").select("id").where("store_id","=",Y).where("parent_folder_id",v1.parent_folder_id===null?"is":"=",v1.parent_folder_id).where("name","=",j8).where("deleted_at","is",null).executeTakeFirst())break;q8++}let R8=v1.parent_folder_id?await F.selectFrom("entities").select("path").where("id","=",v1.parent_folder_id).executeTakeFirst():null,l8=R8?R8.path:null,m8=!["a","r"].includes(v1.type_code)?l8!=null?`${l8}/${j8}`:j8:null,i8=m8!==null?{name:j8,path:m8}:{name:j8};await F.updateTable("entities").set(i8).where("id","=",v1.id).execute()}let _1=new Map;for(let v1 of a){let o1=v1.parent_folder_id??"null";if(!_1.has(o1))_1.set(o1,[]);_1.get(o1).push(v1)}for(let[v1,o1]of _1){let q8=new Map;for(let R8 of o1){let m8=(await F.selectFrom("entities").select("name").where("id","=",R8.id).executeTakeFirst())?.name??R8.name;q8.set(m8,(q8.get(m8)||0)+1)}let j8=new Map;for(let R8 of o1){let m8=(await F.selectFrom("entities").select("name").where("id","=",R8.id).executeTakeFirst())?.name??R8.name;if(q8.get(m8)>1){let i8=j8.get(m8)||0;if(i8>0){let U8=i8+1,M6;while(!0){let h4=U8===1?"-restored":`-restored-${U8}`;if(M6=m8+h4,!await F.selectFrom("entities").select("id").where("store_id","=",Y).where("parent_folder_id",R8.parent_folder_id===null?"is":"=",R8.parent_folder_id).where("name","=",M6).executeTakeFirst())break;U8++}let l6=R8.parent_folder_id?await F.selectFrom("entities").select("path").where("id","=",R8.parent_folder_id).executeTakeFirst():null,y4=l6?l6.path:null,_2=!["a","r"].includes(R8.type_code)?y4!=null?`${y4}/${M6}`:M6:null,O4=_2!==null?{name:M6,path:_2}:{name:M6};await F.updateTable("entities").set(O4).where("id","=",R8.id).execute()}j8.set(m8,i8+1)}}}if(await F.updateTable("entities").set({deleted_at:null}).where("id","in",l).execute(),p&&b&&p!==b)await Z.cascadePathUpdate(F,p,b,Y);let O1=await F.selectFrom("entities").select(["id","type_code"]).where("id","in",l).where("type_code","in",["d","t"]).execute();for(let v1 of O1)await z8(F,i1,v1.id,v1.type_code);let V1=[];if(Q.length>0)V1=(await F.selectFrom("entities").select("object_id").where("id","in",Q).execute()).map((o1)=>o1.object_id);return{restoredCount:l.length,descendantIds:V1}},X8=async(F,i1,{id:m,content:p,sessionId:b})=>{let Q=k4(m);U.factory(!Q,I.validation,`Invalid content ID: ${m}`,"INVALID_ID"),U.factory(!b,I.validation,"sessionId is required","MISSING_SESSION_ID");let{typeCode:l,seq:a}=Q,_1=b6.getContentTypeLabel(l);await O.initSystemFieldDefCache(F);let O1=p8(),V1=new Date(Date.now()-$z).toISOString(),v1=await F.selectFrom("entities as e").innerJoin("entity_types as et","et.id","e.entity_type_id").select(["e.id","e.name","e.entity_type_id","et.subtype"]).where("e.store_id","=",Y).where("e.type_code","=",l).where("e.seq","=",a).where("e.deleted_at","is",null).executeTakeFirst();U.factory(!v1,I.notFound,`${_1} not found: ${m}`,"NOT_FOUND");let{id:o1,name:q8,entity_type_id:j8}=v1,R8=j8;if(v1.subtype)R8=await y8.readEntityTypeId(F,i1,l,null);let l8=O.getSystemFieldDef("edit_session_id",R8),m8=O.getSystemFieldDef("edit_last_activity_at",R8);if(l8&&m8){let O4=await F.selectFrom("string_fields").select("value").where("entity_id","=",o1).where("field_definition_id","=",l8.pk).executeTakeFirst();if(O4&&O4.value!==b){let h4=await F.selectFrom("date_fields").select("value").where("entity_id","=",o1).where("field_definition_id","=",m8.pk).executeTakeFirst();if(h4&&h4.value>=V1)U.factory(!0,I.conflict,"Document is locked by another session","EDIT_CONFLICT")}}let i8=O.getSystemFieldDef("draft_version",R8);if(!i8)throw Error(`System field definition "draft_version" not found for base type ${l}`);let M6=(await F.selectFrom("obj_ref_fields").select("target_entity_id").where("entity_id","=",o1).where("field_definition_id","=",i8.pk).executeTakeFirst())?.target_entity_id??null;if(M6){await W6`DELETE FROM entity_content_fts WHERE rowid = ${M6}`.execute(F),await F.updateTable("entity_content").set({content_text:p,updated_at:O1}).where("entity_id","=",M6).execute(),await W6`INSERT INTO entity_content_fts(rowid, name, content_text) VALUES (${M6}, ${q8}, ${p})`.execute(F);let O4=await y8.readEntityTypeId(F,i1,"v",null),h4=O.getSystemFieldDef("content_hash",O4);if(!h4)throw Error('System field definition "content_hash" not found for version type');let Y2=fi8("sha256").update(p||"","utf8").digest("hex");await F.updateTable("string_fields").set({value:Y2}).where("entity_id","=",M6).where("field_definition_id","=",h4.pk).execute();try{let e4=ZA(p);X2("Extracted content references for draft update: attachments=%d, includes=%d, hyperlinks=%d",e4.attachments.length,e4.includes.length,e4.hyperlinks.length);let U2=O.getSystemFieldDef("attachments",O4),G4=O.getSystemFieldDef("includes",O4),C2=O.getSystemFieldDef("hyperlinks",O4),N4=[];if(U2)N4.push(U2.pk);if(G4)N4.push(G4.pk);if(C2)N4.push(C2.pk);if(N4.length>0)await F.deleteFrom("obj_ref_fields").where("entity_id","=",M6).where("field_definition_id","in",N4).execute();let S3=async(F$,C7,e5)=>{if(!F$){X2('System field definition "%s" not found for version type - skipping',e5);return}let E7=0;for(let L7 of C7){let p$=await F.selectFrom("entities").select("id").where("object_id","=",L7).where("deleted_at","is",null).executeTakeFirst();if(!p$){X2("Target entity not found for %s reference: %s - skipping",e5,L7);continue}await F.insertInto("obj_ref_fields").values({entity_id:M6,field_definition_id:F$.pk,target_entity_id:p$.id,ordinal:E7}).execute(),E7++}if(E7>0)X2("Populated %d %s references for draft version pk=%d",E7,e5,M6)};await S3(U2,e4.attachments,"attachments"),await S3(G4,e4.includes,"includes"),await S3(C2,e4.hyperlinks,"hyperlinks")}catch(e4){X2("Content reference extraction failed for draft version pk=%d: %s - continuing with draft save",M6,e4.message)}X2("Updated draft version content for %s (version pk=%d)",m,M6)}else{let O4=await y8.readEntityTypeId(F,i1,"v",null),h4=O.getSystemFieldDef("version_number",O4),Y2=O.getSystemFieldDef("published_at",O4),e4=O.getSystemFieldDef("document",O4),U2=0;if(e4&&h4&&Y2)U2=(await F.selectFrom("obj_ref_fields as orf").innerJoin("int_fields as if",(S3)=>S3.onRef("if.entity_id","=","orf.entity_id").on("if.field_definition_id","=",h4.pk)).innerJoin("date_fields as df",(S3)=>S3.onRef("df.entity_id","=","orf.entity_id").on("df.field_definition_id","=",Y2.pk)).select(F.fn.max("if.value").as("max_version")).where("orf.field_definition_id","=",e4.pk).where("orf.target_entity_id","=",o1).executeTakeFirst())?.max_version??0;let G4=U2+1,C2=await A1(F,i1,{documentPk:o1,documentObjectId:m,documentEntityTypeId:j8,documentName:q8,content:p,versionNumber:G4,publishedAt:null});await F.insertInto("obj_ref_fields").values({entity_id:o1,field_definition_id:i8.pk,target_entity_id:C2.pk,ordinal:0}).execute(),X2("Created new draft version %s (pk=%d) for %s, version_number=%d",C2.objectId,C2.pk,m,G4)}let y4=!await Q6(F,i1,{id:m,sessionId:b}),_2=await N1(F,i1,{id:m});return U.factory(!_2,I.notFound,`${_1} not found after draft save: ${m}`,"NOT_FOUND"),{..._2,lockLost:y4}},o8=async(F,i1,{id:m,sessionId:p})=>{let b=k4(m);U.factory(!b,I.validation,`Invalid content ID: ${m}`,"INVALID_ID");let{typeCode:Q,seq:l}=b,a=b6.getContentTypeLabel(Q);await O.initSystemFieldDefCache(F);let _1=p8(),O1=new Date(Date.now()-$z).toISOString(),V1=await F.selectFrom("entities as e").innerJoin("entity_types as et","et.id","e.entity_type_id").select(["e.id","e.entity_type_id","et.subtype"]).where("e.store_id","=",Y).where("e.type_code","=",Q).where("e.seq","=",l).where("e.deleted_at","is",null).executeTakeFirst();U.factory(!V1,I.notFound,`${a} not found: ${m}`,"NOT_FOUND");let{id:v1,entity_type_id:q8}=V1;if(V1.subtype)q8=await y8.readEntityTypeId(F,i1,Q,null);let j8=O.getSystemFieldDef("draft_version",q8),R8=O.getSystemFieldDef("latest_published_version",q8);if(!j8)throw Error(`System field definition "draft_version" not found for base type ${Q}`);let l8=await F.selectFrom("obj_ref_fields").select("target_entity_id").where("entity_id","=",v1).where("field_definition_id","=",j8.pk).executeTakeFirst();U.factory(!l8,I.notFound,`No draft found for ${a}: ${m}`,"DRAFT_NOT_FOUND");let m8=l8.target_entity_id,i8=O.getSystemFieldDef("edit_session_id",q8),U8=O.getSystemFieldDef("edit_last_activity_at",q8),M6=O.getSystemFieldDef("edit_started_at",q8);if(p&&i8&&U8){let N4=await F.selectFrom("string_fields").select("value").where("entity_id","=",v1).where("field_definition_id","=",i8.pk).executeTakeFirst();if(N4&&N4.value!==p){let S3=await F.selectFrom("date_fields").select("value").where("entity_id","=",v1).where("field_definition_id","=",U8.pk).executeTakeFirst();if(S3&&S3.value>=O1)U.factory(!0,I.conflict,"Document is locked by another session","EDIT_CONFLICT")}}let l6=await y8.readEntityTypeId(F,i1,"v",null),y4=O.getSystemFieldDef("version_number",l6),_2=O.getSystemFieldDef("published_at",l6),O4=O.getSystemFieldDef("document",l6);if(!y4||!_2||!O4)throw Error("Required version field definitions not found");let Y2=(await F.selectFrom("int_fields").select("value").where("entity_id","=",m8).where("field_definition_id","=",y4.pk).executeTakeFirst())?.value??1,G4=((await F.selectFrom("obj_ref_fields as orf").innerJoin("int_fields as if",(N4)=>N4.onRef("if.entity_id","=","orf.entity_id").on("if.field_definition_id","=",y4.pk)).innerJoin("date_fields as df",(N4)=>N4.onRef("df.entity_id","=","orf.entity_id").on("df.field_definition_id","=",_2.pk)).select(F.fn.max("if.value").as("max_version")).where("orf.field_definition_id","=",O4.pk).where("orf.target_entity_id","=",v1).executeTakeFirst())?.max_version??0)+1;if(Y2!==G4)await F.updateTable("int_fields").set({value:G4}).where("entity_id","=",m8).where("field_definition_id","=",y4.pk).execute();if(await F.insertInto("date_fields").values({entity_id:m8,field_definition_id:_2.pk,value:_1,ordinal:0}).execute(),R8){let N4=await F.selectFrom("obj_ref_fields").select("target_entity_id").where("entity_id","=",v1).where("field_definition_id","=",R8.pk).executeTakeFirst();if(N4)await F.updateTable("obj_ref_fields").set({target_entity_id:m8}).where("entity_id","=",v1).where("field_definition_id","=",R8.pk).execute();else await F.insertInto("obj_ref_fields").values({entity_id:v1,field_definition_id:R8.pk,target_entity_id:m8,ordinal:0}).execute();if(N4){let S3=N4.target_entity_id;await W6`DELETE FROM entity_content_fts WHERE rowid = ${S3}`.execute(F),X2("Deleted stale FTS entry for previous published version (pk=%d) of %s",S3,m)}else X2("First-time publish for %s, no previous FTS entry to clean up",m)}if(await F.deleteFrom("obj_ref_fields").where("entity_id","=",v1).where("field_definition_id","=",j8.pk).execute(),i8)await F.deleteFrom("string_fields").where("entity_id","=",v1).where("field_definition_id","=",i8.pk).execute();if(M6)await F.deleteFrom("date_fields").where("entity_id","=",v1).where("field_definition_id","=",M6.pk).execute();if(U8)await F.deleteFrom("date_fields").where("entity_id","=",v1).where("field_definition_id","=",U8.pk).execute();X2("Published version %d for %s (version pk=%d)",G4,m,m8);let C2=await N1(F,i1,{id:m});return U.factory(!C2,I.notFound,`${a} not found after publish: ${m}`,"NOT_FOUND"),C2},$6=async(F,i1,{id:m})=>{let p=k4(m);U.factory(!p,I.validation,`Invalid content ID: ${m}`,"INVALID_ID");let{typeCode:b,seq:Q}=p,l=b6.getContentTypeLabel(b);await O.initSystemFieldDefCache(F);let a=await F.selectFrom("entities as e").innerJoin("entity_types as et","et.id","e.entity_type_id").select(["e.id","e.entity_type_id","et.subtype"]).where("e.store_id","=",Y).where("e.type_code","=",b).where("e.seq","=",Q).where("e.deleted_at","is",null).executeTakeFirst();U.factory(!a,I.notFound,`${l} not found: ${m}`,"NOT_FOUND");let{id:_1,entity_type_id:O1}=a;if(a.subtype)O1=await y8.readEntityTypeId(F,i1,b,null);let V1=O.getSystemFieldDef("draft_version",O1);if(!V1)throw Error(`System field definition "draft_version" not found for base type ${b}`);let v1=await F.selectFrom("obj_ref_fields").select("target_entity_id").where("entity_id","=",_1).where("field_definition_id","=",V1.pk).executeTakeFirst();if(v1){let q8=v1.target_entity_id;await F.deleteFrom("obj_ref_fields").where("entity_id","=",_1).where("field_definition_id","=",V1.pk).execute(),await W6`DELETE FROM entity_content_fts WHERE rowid = ${q8}`.execute(F),await F.deleteFrom("entities").where("id","=",q8).execute(),X2("Discarded draft version (pk=%d) for %s",q8,m)}let o1=await N1(F,i1,{id:m});return U.factory(!o1,I.notFound,`${l} not found after discard: ${m}`,"NOT_FOUND"),o1},v6=async(F,i1,{id:m})=>{let p=k4(m);if(!p)return null;let{typeCode:b,seq:Q}=p;await O.initSystemFieldDefCache(F);let l=await F.selectFrom("entities as e").innerJoin("entity_types as et","et.id","e.entity_type_id").select(["e.id","e.object_id","e.entity_type_id","et.subtype"]).where("e.store_id","=",Y).where("e.type_code","=",b).where("e.seq","=",Q).where("e.deleted_at","is",null).executeTakeFirst();if(!l)return null;let{id:a,entity_type_id:_1}=l;if(l.subtype)_1=await y8.readEntityTypeId(F,i1,b,null);let O1=O.getSystemFieldDef("draft_version",_1);if(!O1)return null;let V1=await F.selectFrom("obj_ref_fields").select("target_entity_id").where("entity_id","=",a).where("field_definition_id","=",O1.pk).executeTakeFirst();if(!V1)return null;let v1=V1.target_entity_id,o1=await F.selectFrom("entity_content").select(["content_text","updated_at"]).where("entity_id","=",v1).executeTakeFirst();if(!o1)return null;return{entityId:l.object_id,content:o1.content_text,updatedAt:o1.updated_at}},H6=async(F,i1,{id:m,versionNumber:p})=>{let b=k4(m);if(!b)return null;let{typeCode:Q,seq:l}=b;await O.initSystemFieldDefCache(F);let a=await F.selectFrom("entities").select(["id","object_id"]).where("store_id","=",Y).where("type_code","=",Q).where("seq","=",l).where("deleted_at","is",null).executeTakeFirst();if(!a)return null;let _1=a.id,O1=await y8.readEntityTypeId(F,i1,"v",null),V1=O.getSystemFieldDef("document",O1),v1=O.getSystemFieldDef("version_number",O1),o1=O.getSystemFieldDef("published_at",O1);if(!V1||!v1)return null;let q8=F.selectFrom("obj_ref_fields as orf").innerJoin("int_fields as if",(m8)=>m8.onRef("if.entity_id","=","orf.entity_id").on("if.field_definition_id","=",v1.pk)).innerJoin("entities as ve","ve.id","orf.entity_id").select(["orf.entity_id as version_pk","ve.updated_at","ve.object_id as version_object_id"]).where("orf.field_definition_id","=",V1.pk).where("orf.target_entity_id","=",_1).where("if.value","=",p).where("ve.deleted_at","is",null),j8;if(o1)j8=await q8.innerJoin("date_fields as df",(m8)=>m8.onRef("df.entity_id","=","orf.entity_id").on("df.field_definition_id","=",o1.pk)).select("df.value as published_at").executeTakeFirst();else j8=await q8.executeTakeFirst();if(!j8)return null;let R8=j8.version_pk,l8=await F.selectFrom("entity_content").select("content_text").where("entity_id","=",R8).executeTakeFirst();return{entityId:a.object_id,versionEntityId:j8.version_object_id,versionNumber:p,content:l8?.content_text??null,publishedAt:j8.published_at??null}},x6=async(F,i1,{id:m})=>{let p=k4(m);if(!p)return[];let{typeCode:b,seq:Q}=p;await O.initSystemFieldDefCache(F);let l=await F.selectFrom("entities").select("id").where("store_id","=",Y).where("type_code","=",b).where("seq","=",Q).where("deleted_at","is",null).executeTakeFirst();if(!l)return[];let a=l.id,_1=await y8.readEntityTypeId(F,i1,"v",null),O1=O.getSystemFieldDef("document",_1),V1=O.getSystemFieldDef("version_number",_1),v1=O.getSystemFieldDef("published_at",_1);if(!O1||!V1||!v1)return[];return(await F.selectFrom("obj_ref_fields as orf").innerJoin("int_fields as if",(q8)=>q8.onRef("if.entity_id","=","orf.entity_id").on("if.field_definition_id","=",V1.pk)).innerJoin("date_fields as df",(q8)=>q8.onRef("df.entity_id","=","orf.entity_id").on("df.field_definition_id","=",v1.pk)).innerJoin("entities as ve","ve.id","orf.entity_id").select(["if.value as version_number","df.value as published_at","ve.object_id as version_object_id"]).where("orf.field_definition_id","=",O1.pk).where("orf.target_entity_id","=",a).where("ve.deleted_at","is",null).orderBy("if.value","desc").execute()).map((q8)=>({versionNumber:q8.version_number,publishedAt:q8.published_at,versionEntityId:q8.version_object_id}))},q6=async(F,i1,m,p,b)=>{let Q=await Z.getParentPk(F,m),l=await F.selectFrom("entities as e").select(["e.id","e.object_id"]).where("e.store_id","=",Y).where("e.type_code","=",b).where("e.parent_folder_id",Q===null?"is":"=",Q).where("e.name","=",p).where("e.deleted_at","is",null).executeTakeFirst();if(!l)return null;return N1(F,i1,{id:l.object_id})},Y6=async(F,i1,{parentId:m,type:p})=>{let b=await Z.getParentPk(F,m),Q=await F.selectFrom("entities as e").select("e.object_id").where("e.store_id","=",Y).where("e.type_code","=",p).where("e.parent_folder_id",b===null?"is":"=",b).where("e.deleted_at","is",null).execute(),l=[];for(let a of Q){let _1=await N1(F,i1,{id:a.object_id});if(_1)l.push(_1)}return l},n4=async(F,i1,{id:m,sessionId:p})=>{let b=k4(m);U.factory(!b,I.validation,`Invalid ID: ${m}`,"INVALID_ID"),await O.initSystemFieldDefCache(F);let Q=p8(),l=new Date(Date.now()-$z).toISOString(),a=await F.selectFrom("entities as e").innerJoin("entity_types as et","et.id","e.entity_type_id").select(["e.id","e.entity_type_id","et.subtype"]).where("e.store_id","=",Y).where("e.type_code","=",b.typeCode).where("e.seq","=",b.seq).where("e.deleted_at","is",null).executeTakeFirst();U.factory(!a,I.notFound,`Entity not found: ${m}`,"ENTITY_NOT_FOUND");let{id:_1,entity_type_id:O1}=a;if(a.subtype)O1=await y8.readEntityTypeId(F,i1,b.typeCode,null);let V1=O.getSystemFieldDef("edit_session_id",O1),v1=O.getSystemFieldDef("edit_started_at",O1),o1=O.getSystemFieldDef("edit_last_activity_at",O1);if(!V1||!v1||!o1)throw Error("Edit state field definitions not found");let q8=await F.selectFrom("string_fields").select("value").where("entity_id","=",_1).where("field_definition_id","=",V1.pk).executeTakeFirst(),j8=await F.selectFrom("date_fields").select("value").where("entity_id","=",_1).where("field_definition_id","=",v1.pk).executeTakeFirst(),R8=await F.selectFrom("date_fields").select("value").where("entity_id","=",_1).where("field_definition_id","=",o1.pk).executeTakeFirst(),l8=q8?.value??null,m8=j8?.value??null,i8=R8?.value??null;if(l8)if(l8===p)return await F.updateTable("date_fields").set({value:Q}).where("entity_id","=",_1).where("field_definition_id","=",v1.pk).execute(),await F.updateTable("date_fields").set({value:Q}).where("entity_id","=",_1).where("field_definition_id","=",o1.pk).execute(),{success:!0};else if(i8&&i8<l)return await F.updateTable("string_fields").set({value:p}).where("entity_id","=",_1).where("field_definition_id","=",V1.pk).execute(),await F.updateTable("date_fields").set({value:Q}).where("entity_id","=",_1).where("field_definition_id","=",v1.pk).execute(),await F.updateTable("date_fields").set({value:Q}).where("entity_id","=",_1).where("field_definition_id","=",o1.pk).execute(),{success:!0};else return{success:!1,meta:{lockedBy:l8,lockedSince:m8,timeoutSeconds:$z/1000}};else return await F.insertInto("string_fields").values({entity_id:_1,field_definition_id:V1.pk,value:p,ordinal:0}).execute(),await F.insertInto("date_fields").values({entity_id:_1,field_definition_id:v1.pk,value:Q,ordinal:0}).execute(),await F.insertInto("date_fields").values({entity_id:_1,field_definition_id:o1.pk,value:Q,ordinal:0}).execute(),{success:!0}},Q6=async(F,i1,{id:m,sessionId:p})=>{let b=k4(m);if(!b)return!1;await O.initSystemFieldDefCache(F);let Q=p8(),l=await F.selectFrom("entities as e").innerJoin("entity_types as et","et.id","e.entity_type_id").select(["e.id","e.entity_type_id","et.subtype"]).where("e.store_id","=",Y).where("e.type_code","=",b.typeCode).where("e.seq","=",b.seq).executeTakeFirst();if(!l)return!1;let{id:a,entity_type_id:_1}=l;if(l.subtype)_1=await y8.readEntityTypeId(F,i1,b.typeCode,null);let O1=O.getSystemFieldDef("edit_session_id",_1),V1=O.getSystemFieldDef("edit_started_at",_1),v1=O.getSystemFieldDef("edit_last_activity_at",_1);if(!O1||!v1)return!1;let o1=await F.selectFrom("string_fields").select("value").where("entity_id","=",a).where("field_definition_id","=",O1.pk).executeTakeFirst();if(!o1||o1.value!==p)return!1;return((await F.updateTable("date_fields").set({value:Q}).where("entity_id","=",a).where("field_definition_id","=",v1.pk).execute())[0]?.numUpdatedRows||0)>0},S4=async(F,i1,{id:m})=>{let p=k4(m);U.factory(!p,I.validation,`Invalid ID: ${m}`,"INVALID_ID"),await O.initSystemFieldDefCache(F);let b=await F.selectFrom("entities as e").innerJoin("entity_types as et","et.id","e.entity_type_id").select(["e.id","e.entity_type_id","et.subtype"]).where("e.store_id","=",Y).where("e.type_code","=",p.typeCode).where("e.seq","=",p.seq).executeTakeFirst();U.factory(!b,I.notFound,`Entity not found: ${m}`,"ENTITY_NOT_FOUND");let{id:Q,entity_type_id:l}=b;if(b.subtype)l=await y8.readEntityTypeId(F,i1,p.typeCode,null);let a=O.getSystemFieldDef("edit_session_id",l),_1=O.getSystemFieldDef("edit_started_at",l),O1=O.getSystemFieldDef("edit_last_activity_at",l);if(a)await F.deleteFrom("string_fields").where("entity_id","=",Q).where("field_definition_id","=",a.pk).execute();if(_1)await F.deleteFrom("date_fields").where("entity_id","=",Q).where("field_definition_id","=",_1.pk).execute();if(O1)await F.deleteFrom("date_fields").where("entity_id","=",Q).where("field_definition_id","=",O1.pk).execute()},e6=async(F,i1,{id:m})=>{let p=k4(m);if(!p)return null;await O.initSystemFieldDefCache(F);let b=await F.selectFrom("entities as e").innerJoin("entity_types as et","et.id","e.entity_type_id").select(["e.id","e.entity_type_id","et.subtype"]).where("e.store_id","=",Y).where("e.type_code","=",p.typeCode).where("e.seq","=",p.seq).executeTakeFirst();if(!b)return null;let{id:Q,entity_type_id:l}=b;if(b.subtype)l=await y8.readEntityTypeId(F,i1,p.typeCode,null);let a=O.getSystemFieldDef("edit_session_id",l),_1=O.getSystemFieldDef("edit_started_at",l),O1=O.getSystemFieldDef("edit_last_activity_at",l);if(!a)return null;let V1=await F.selectFrom("string_fields").select("value").where("entity_id","=",Q).where("field_definition_id","=",a.pk).executeTakeFirst();if(!V1)return null;let v1=null,o1=null;if(_1)v1=(await F.selectFrom("date_fields").select("value").where("entity_id","=",Q).where("field_definition_id","=",_1.pk).executeTakeFirst())?.value??null;if(O1)o1=(await F.selectFrom("date_fields").select("value").where("entity_id","=",Q).where("field_definition_id","=",O1.pk).executeTakeFirst())?.value??null;return{sessionId:V1.value,startedAt:v1,lastActivityAt:o1}},n1=async(F,i1,{storeCode:m})=>{if(m!==void 0)h(m);let p=await y8.readEntityTypeId(F,i1,"f","root_s"),b=await F.selectFrom("entities").innerJoin("entity_types","entity_types.id","entities.entity_type_id").selectAll("entities").select("entity_types.subtype").where("entities.store_id","=",Y).where("entities.entity_type_id","=",p).where("entities.deleted_at","is",null).executeTakeFirst();if(!b)return null;let{id:Q,object_id:l}=b;z.setIdByPk(Q,l);let a=b.path,_1=await O.loadFieldsForEntity(F,Q),{entity:O1,mutationApi:V1}=p7.createFromRow(b,l,b.parent_object_id,a);for(let v1 of _1)V1.setField(v1.getDefinition().getName(),v1);return{entity:O1,mutationApi:V1,pk:Q}},d1=async(F,i1,{storeCode:m})=>{if(m!==void 0)h(m);let p=await y8.readEntityTypeId(F,i1,"s",null),b=await F.selectFrom("entities").selectAll("entities").where("entities.store_id","=",Y).where("entities.entity_type_id","=",p).where("entities.deleted_at","is",null).execute(),Q=[],l=new Map;for(let O1 of b)Q.push(O1.id),l.set(O1.id,O1);let a=await O.batchLoadFieldsForEntities(F,Q,l),_1=[];for(let O1 of b){let{id:V1,object_id:v1}=O1;z.setIdByPk(V1,v1);let o1=O1.path,{entity:q8,mutationApi:j8}=$Y.createFromRow(O1,v1,O1.parent_object_id,o1),R8=a.get(V1)||[];for(let l8 of R8)j8.setField(l8.getDefinition().getName(),l8);_1.push({entity:q8,mutationApi:j8,pk:V1})}return _1},b1=async(F,i1,{id:m,storeCode:p})=>{if(p!==void 0)h(p);let b=k4(m);if(!b)return null;if(b.typeCode!=="s")return null;let Q=await F.selectFrom("entities").selectAll("entities").where("entities.store_id","=",Y).where("entities.seq","=",b.seq).where("entities.type_code","=","s").where("entities.deleted_at","is",null).executeTakeFirst();if(!Q)return null;let l=Q.id;z.setIdByPk(l,m);let a=Q.path,_1=await O.loadFieldsForEntity(F,l),{entity:O1,mutationApi:V1}=$Y.createFromRow(Q,m,Q.parent_object_id,a);for(let v1 of _1)V1.setField(v1.getDefinition().getName(),v1);return{entity:O1,mutationApi:V1,pk:l}},T8=async(F,i1,{storeCode:m,parentId:p,name:b})=>{if(m!==void 0)h(m);U.factory(!b,I.validation,"Story name is required","MISSING_NAME");let Q=p8(),l=await y8.readEntityTypeId(F,i1,"s",null),a=await N6.nextSeq(F,"store",Y,"s"),_1=await Z.getParentPk(F,p),O1=GX(K,"s",a),V1=await Z.getParentStoredPath(F,_1),v1=V1!=null?`${V1}/${b}`:b,o1=await F.insertInto("entities").values({store_id:Y,object_id:O1,entity_type_id:l,type_code:"s",seq:a,parent_folder_id:_1,parent_object_id:p,name:b,path:v1,created_at:Q,updated_at:Q}).returningAll().executeTakeFirstOrThrow(),q8=o1.id;z.setIdByPk(q8,O1);let{entity:j8,mutationApi:R8}=$Y.createFromRow(o1,O1,p,v1);return{entity:j8,mutationApi:R8,pk:q8}},U1=async(F,i1,{id:m,name:p})=>{let b=k4(m);U.factory(!b,I.validation,`Invalid story ID: ${m}`,"INVALID_ID"),U.factory(b.typeCode!=="s",I.validation,`Not a story ID: ${m}`,"INVALID_TYPE");let Q=await F.selectFrom("entities").selectAll().where("store_id","=",Y).where("seq","=",b.seq).where("type_code","=","s").where("deleted_at","is",null).executeTakeFirst();U.factory(!Q,I.notFound,`Story not found: ${m}`,"STORY_NOT_FOUND");let l=Q.id;z.setIdByPk(l,m);let{name:a,path:_1}=Q,O1=await Z.getParentStoredPath(F,Q.parent_folder_id),V1=O1!=null?`${O1}/${p}`:p,v1=await F.updateTable("entities").set({name:p,path:V1,updated_at:p8()}).where("id","=",l).returningAll().executeTakeFirstOrThrow();if(_1!==V1)await Z.cascadePathUpdate(F,_1,V1,Y);let o1=await O.loadFieldsForEntity(F,l),{entity:q8,mutationApi:j8}=$Y.createFromRow(v1,m,v1.parent_object_id,V1);for(let R8 of o1)j8.setField(R8.getDefinition().getName(),R8);return{entity:q8,mutationApi:j8,pk:l,oldValues:{name:a,path:_1}}},A8=async(F,i1,{id:m,storeCode:p})=>{if(p!==void 0)h(p);let b=k4(m);U.factory(!b,I.validation,`Invalid story ID: ${m}`,"INVALID_ID"),U.factory(b.typeCode!=="s",I.validation,`Not a story ID: ${m}`,"INVALID_TYPE");let Q=await F.selectFrom("entities").selectAll().where("store_id","=",Y).where("seq","=",b.seq).where("type_code","=","s").where("deleted_at","is",null).executeTakeFirst();U.factory(!Q,I.notFound,`Story not found: ${m}`,"STORY_NOT_FOUND");let l=Q.id;z.setIdByPk(l,m);let a=Q.path,_1=await T(F),O1=await WA(F,l,Y,z,_1,p8);return{id:m,deleted:!0,descendantCount:O1.descendantCount,path:a,descendantIds:O1.descendantIds,deletedPks:O1.deletedPks}},M8=async(F,i1,{id:m,storeCode:p})=>{if(p!==void 0)h(p);let b=k4(m);if(!b)return null;if(b.typeCode!=="e")return null;let Q=await F.selectFrom("entities").innerJoin("entity_types","entity_types.id","entities.entity_type_id").selectAll("entities").select("entity_types.subtype").where("entities.store_id","=",Y).where("entities.seq","=",b.seq).where("entities.type_code","=","e").where("entities.deleted_at","is",null).executeTakeFirst();if(!Q)return null;let l=Q.id;z.setIdByPk(l,m);let a=Q.path,_1=await O.loadFieldsForEntity(F,l),{entity:O1,mutationApi:V1}=iD.createFromRow(Q,m,Q.parent_object_id,a);for(let v1 of _1)V1.setField(v1.getDefinition().getName(),v1);return{entity:O1,mutationApi:V1,pk:l}},B8=async(F,i1,{parentId:m,storeCode:p,subtype:b})=>{if(p!==void 0)h(p);let Q=await Z.getParentPk(F,m),l=F.selectFrom("entities").innerJoin("entity_types","entity_types.id","entities.entity_type_id").selectAll("entities").select("entity_types.subtype").where("entities.store_id","=",Y).where("entities.type_code","=","e").where("entities.parent_folder_id",Q===null?"is":"=",Q).where("entities.deleted_at","is",null);if(b!==void 0){let o1=await y8.readEntityTypeId(F,i1,"e",b);l=l.where("entities.entity_type_id","=",o1)}let a=await l.execute(),_1=[],O1=new Map;for(let o1 of a)_1.push(o1.id),O1.set(o1.id,o1);let V1=await O.batchLoadFieldsForEntities(F,_1,O1),v1=[];for(let o1 of a){let{id:q8,object_id:j8}=o1;z.setIdByPk(q8,j8);let R8=o1.path,{entity:l8,mutationApi:m8}=iD.createFromRow(o1,j8,o1.parent_object_id,R8),i8=V1.get(q8)||[];for(let U8 of i8)m8.setField(U8.getDefinition().getName(),U8);v1.push({entity:l8,mutationApi:m8,pk:q8})}return v1},g1=async(F,i1,m,p)=>{let b=await Z.getParentPk(F,m),Q=await F.selectFrom("entities as e").select(["e.id","e.object_id"]).where("e.store_id","=",Y).where("e.type_code","=","e").where("e.parent_folder_id",b===null?"is":"=",b).where("e.name","=",p).where("e.deleted_at","is",null).executeTakeFirst();if(!Q)return null;return M8(F,i1,{id:Q.object_id})},M1=async(F,i1,{storeCode:m,parentId:p,name:b,subtype:Q,fields:l})=>{if(m!==void 0)h(m);U.factory(!b,I.validation,"Setting name is required","MISSING_NAME");let a=p8(),_1=await y8.readEntityTypeId(F,i1,"e",Q||null),O1=await N6.nextSeq(F,"store",Y,"e"),V1=await Z.getParentPk(F,p),v1=GX(K,"e",O1),o1=await Z.getParentStoredPath(F,V1),q8=o1!=null?`${o1}/${b}`:b,j8=await F.insertInto("entities").values({store_id:Y,object_id:v1,entity_type_id:_1,type_code:"e",seq:O1,parent_folder_id:V1,parent_object_id:p,name:b,path:q8,created_at:a,updated_at:a}).returningAll().executeTakeFirstOrThrow(),R8=j8.id;z.setIdByPk(R8,v1);let l8={...j8,subtype:Q||null},{entity:m8,mutationApi:i8}=iD.createFromRow(l8,v1,p,q8);return{entity:m8,mutationApi:i8,pk:R8}},t1=async(F,i1,{id:m,name:p,parentId:b})=>{let Q=k4(m);U.factory(!Q,I.validation,`Invalid setting ID: ${m}`,"INVALID_ID"),U.factory(Q.typeCode!=="e",I.validation,`Not a setting ID: ${m}`,"INVALID_TYPE");let l=await F.selectFrom("entities").selectAll().where("store_id","=",Y).where("seq","=",Q.seq).where("type_code","=","e").where("deleted_at","is",null).executeTakeFirst();U.factory(!l,I.notFound,`Setting not found: ${m}`,"SETTING_NOT_FOUND");let a=l.id,_1={name:l.name,parentId:l.parent_object_id,path:l.path};z.setIdByPk(a,m);let V1={updated_at:p8()},v1=l.parent_folder_id;if(p!==void 0)V1.name=p;if(b!==void 0){let R8=await Z.getParentPk(F,b);V1.parent_folder_id=R8,V1.parent_object_id=b,v1=R8}let o1=p!==void 0?p:l.name,q8=await Z.getParentStoredPath(F,v1);V1.path=q8!=null?`${q8}/${o1}`:o1,await F.updateTable("entities").set(V1).where("id","=",a).execute();let j8=await M8(F,i1,{id:m});return U.factory(!j8,I.notFound,`Setting not found after update: ${m}`,"SETTING_NOT_FOUND"),{...j8,oldValues:_1}},_8=async(F,i1,{id:m,storeCode:p})=>{if(p!==void 0)h(p);let b=k4(m);U.factory(!b,I.validation,`Invalid setting ID: ${m}`,"INVALID_ID"),U.factory(b.typeCode!=="e",I.validation,`Not a setting ID: ${m}`,"INVALID_TYPE");let Q=await F.selectFrom("entities").selectAll().where("store_id","=",Y).where("seq","=",b.seq).where("type_code","=","e").where("deleted_at","is",null).executeTakeFirst();U.factory(!Q,I.notFound,`Setting not found: ${m}`,"SETTING_NOT_FOUND");let l=Q.id;z.setIdByPk(l,m);let a=Q.path,_1=await T(F),O1=await WA(F,l,Y,z,_1,p8);return{id:m,deleted:!0,descendantCount:O1.descendantCount,path:a,descendantIds:O1.descendantIds,deletedPks:O1.deletedPks}},O8=async(F,i1,{storeCode:m})=>{if(m!==void 0)h(m);let p=await y8.readEntityTypeId(F,i1,"f","root_j"),b=await F.selectFrom("entities").innerJoin("entity_types","entity_types.id","entities.entity_type_id").selectAll("entities").select("entity_types.subtype").where("entities.store_id","=",Y).where("entities.entity_type_id","=",p).where("entities.deleted_at","is",null).executeTakeFirst();if(!b)return null;let{id:Q,object_id:l}=b;z.setIdByPk(Q,l);let a=b.path,_1=await O.loadFieldsForEntity(F,Q),{entity:O1,mutationApi:V1}=p7.createFromRow(b,l,b.parent_object_id,a);for(let v1 of _1)V1.setField(v1.getDefinition().getName(),v1);return{entity:O1,mutationApi:V1,pk:Q}},X1=async(F,i1,{storeCode:m})=>{if(m!==void 0)h(m);let p=await y8.readEntityTypeId(F,i1,"f","root_settings"),b=await F.selectFrom("entities").innerJoin("entity_types","entity_types.id","entities.entity_type_id").selectAll("entities").select("entity_types.subtype").where("entities.store_id","=",Y).where("entities.entity_type_id","=",p).where("entities.deleted_at","is",null).executeTakeFirst();if(!b)return null;let{id:Q,object_id:l}=b;z.setIdByPk(Q,l);let a=b.path,_1=await O.loadFieldsForEntity(F,Q),{entity:O1,mutationApi:V1}=p7.createFromRow(b,l,b.parent_object_id,a);for(let v1 of _1)V1.setField(v1.getDefinition().getName(),v1);return{entity:O1,mutationApi:V1,pk:Q}},G1=async(F,i1,{storeCode:m})=>{if(m!==void 0)h(m);let p=await y8.readEntityTypeId(F,i1,"j",null),b=await F.selectFrom("entities").selectAll("entities").where("entities.store_id","=",Y).where("entities.entity_type_id","=",p).where("entities.deleted_at","is",null).execute(),Q=[],l=new Map;for(let O1 of b)Q.push(O1.id),l.set(O1.id,O1);let a=await O.batchLoadFieldsForEntities(F,Q,l),_1=[];for(let O1 of b){let{id:V1,object_id:v1}=O1;z.setIdByPk(V1,v1);let o1=O1.path,{entity:q8,mutationApi:j8}=OX.createFromRow(O1,v1,O1.parent_object_id,o1),R8=a.get(V1)||[];for(let l8 of R8)j8.setField(l8.getDefinition().getName(),l8);_1.push({entity:q8,mutationApi:j8,pk:V1})}return _1},z1=async(F,i1,{id:m,storeCode:p})=>{if(p!==void 0)h(p);let b=k4(m);if(!b)return null;if(b.typeCode!=="j")return null;let Q=await F.selectFrom("entities").selectAll("entities").where("entities.store_id","=",Y).where("entities.seq","=",b.seq).where("entities.type_code","=","j").where("entities.deleted_at","is",null).executeTakeFirst();if(!Q)return null;let l=Q.id;z.setIdByPk(l,m);let a=Q.path,_1=await O.loadFieldsForEntity(F,l),{entity:O1,mutationApi:V1}=OX.createFromRow(Q,m,Q.parent_object_id,a);for(let v1 of _1)V1.setField(v1.getDefinition().getName(),v1);return{entity:O1,mutationApi:V1,pk:l}},e9=Object.freeze({...P,getCodes:V,getType:j,getCode:D,getPk:f,toJSON:C,readEntity:L,createFolder:k,readFolder:g,updateFolder:S,deleteFolder:E,isDuplicateNameInParent:x,findFolderByName:c,listFolderContents:i,getFolderByPath:t,readRootFolderForType:w1,createContent:j1,readContent:N1,updateContent:x1,updateEntityType:a1,deleteTypeScopedFieldValues:K8,deleteContent:y1,listDeletedItems:h1,restoreEntity:E8,restoreWithDescendants:r1,saveDraft:X8,readDraft:v6,publishContent:o8,discardDraft:$6,readVersion:H6,getVersions:x6,findContentByName:q6,listContent:Y6,createFieldDefinition:Z1,readFieldDefinition:E1,updateFieldDefinitionConfig:T1,findFieldDefinitionByName:H1,resolveFieldDefinition:Q1,getFieldDefinitionsForOwner:L1,getFieldDefinitionsForEntityType:G8,resolveEntityTypePk:w8,deleteFieldDefinition:W8,addClassAssociation:m1,createEntityType:$8,setFieldValue:e1,deleteFieldValue:J1,getFieldValue:q1,setEditState:n4,clearEditState:S4,getEditState:e6,readStoryRootFolder:n1,listStories:d1,readStory:b1,createStory:T8,renameStory:U1,deleteStory:A8,readJobRootFolder:O8,listJobs:G1,readJob:z1,createJob:async(F,i1,{storeCode:m,parentId:p,name:b})=>{if(m!==void 0)h(m);U.factory(!b,I.validation,"Job name is required","MISSING_NAME");let Q=p8(),l=await y8.readEntityTypeId(F,i1,"j",null),a=await N6.nextSeq(F,"store",Y,"j"),_1=await Z.getParentPk(F,p),O1=GX(K,"j",a),V1=await Z.getParentStoredPath(F,_1),v1=V1!=null?`${V1}/${b}`:b,o1=await F.insertInto("entities").values({store_id:Y,object_id:O1,entity_type_id:l,type_code:"j",seq:a,parent_folder_id:_1,parent_object_id:p,name:b,path:v1,created_at:Q,updated_at:Q}).returningAll().executeTakeFirstOrThrow(),q8=o1.id;z.setIdByPk(q8,O1);let{entity:j8,mutationApi:R8}=OX.createFromRow(o1,O1,p,v1);return{entity:j8,mutationApi:R8,pk:q8}},deleteJob:async(F,i1,{id:m,storeCode:p})=>{if(p!==void 0)h(p);let b=k4(m);U.factory(!b,I.validation,`Invalid job ID: ${m}`,"INVALID_ID"),U.factory(b.typeCode!=="j",I.validation,`Not a job ID: ${m}`,"INVALID_TYPE");let Q=await F.selectFrom("entities").selectAll().where("store_id","=",Y).where("seq","=",b.seq).where("type_code","=","j").where("deleted_at","is",null).executeTakeFirst();U.factory(!Q,I.notFound,`Job not found: ${m}`,"JOB_NOT_FOUND");let l=Q.id;z.setIdByPk(l,m);let a=Q.path,_1=await T(F),O1=await WA(F,l,Y,z,_1,p8);return{id:m,deleted:!0,descendantCount:O1.descendantCount,path:a,descendantIds:O1.descendantIds,deletedPks:O1.deletedPks}},readSettingsRootFolder:X1,readSetting:M8,listSettings:B8,findSettingByName:g1,createSetting:M1,updateSettingPath:t1,deleteSetting:_8,createAsset:async(F,i1,{storeCode:m,hash:p,mimeType:b,sizeBytes:Q,originalFilename:l,widthPx:a,heightPx:_1,displayWidth:O1,displayHeight:V1})=>{if(m!==void 0)h(m);let v1=p8(),o1=await y8.readEntityTypeId(F,i1,"a",null),q8=await N6.nextSeq(F,"store",Y,"a"),j8=GX(K,"a",q8),R8=await F.insertInto("entities").values({store_id:Y,object_id:j8,entity_type_id:o1,type_code:"a",seq:q8,parent_folder_id:null,parent_object_id:null,name:l,created_at:v1,updated_at:v1}).returningAll().executeTakeFirstOrThrow(),l8=R8.id;z.setIdByPk(l8,j8);let m8=[{name:"hash",value:p,primitiveType:"string"},{name:"mimeType",value:b,primitiveType:"string"},{name:"sizeBytes",value:Q,primitiveType:"int"},{name:"originalFilename",value:l,primitiveType:"string"},{name:"widthPx",value:a,primitiveType:"int"},{name:"heightPx",value:_1,primitiveType:"int"},{name:"displayWidth",value:O1,primitiveType:"int"},{name:"displayHeight",value:V1,primitiveType:"int"}];for(let{name:l6,value:y4,primitiveType:_2}of m8){if(y4===null||y4===void 0)continue;let O4=await Q1(F,i1,{fieldName:l6,entityTypePk:o1});if(O4)await O.insertTypedField(F,l8,O4.pk,_2,y4)}let{entity:i8,mutationApi:U8}=HX.create({id:j8,name:R8.name,createdAt:R8.created_at,updatedAt:R8.updated_at}),M6=await O.loadFieldsForEntity(F,l8);for(let l6 of M6)U8.setField(l6.getDefinition().getName(),l6);return{entity:i8,mutationApi:U8,pk:l8}},readAsset:async(F,i1,{id:m,storeCode:p})=>{if(p!==void 0)h(p);let b=k4(m);if(!b)return null;if(b.typeCode!=="a")return null;let Q=await F.selectFrom("entities").selectAll().where("entities.store_id","=",Y).where("entities.seq","=",b.seq).where("entities.type_code","=","a").where("entities.deleted_at","is",null).executeTakeFirst();if(!Q)return null;let l=Q.id;z.setIdByPk(l,m);let{entity:a,mutationApi:_1}=HX.create({id:m,name:Q.name,createdAt:Q.created_at,updatedAt:Q.updated_at}),O1=await O.loadFieldsForEntity(F,l);for(let V1 of O1)_1.setField(V1.getDefinition().getName(),V1);return{entity:a,mutationApi:_1,pk:l}},listAssets:async(F,i1,{storeCode:m})=>{if(m!==void 0)h(m);let p=await F.selectFrom("entities").selectAll().where("entities.store_id","=",Y).where("entities.type_code","=","a").where("entities.deleted_at","is",null).execute(),b=[],Q=new Map;for(let _1 of p)b.push(_1.id),Q.set(_1.id,_1);let l=await O.batchLoadFieldsForEntities(F,b,Q),a=[];for(let _1 of p){let{id:O1,object_id:V1}=_1;z.setIdByPk(O1,V1);let{entity:v1,mutationApi:o1}=HX.create({id:V1,name:_1.name,createdAt:_1.created_at,updatedAt:_1.updated_at}),q8=l.get(O1)||[];for(let j8 of q8)o1.setField(j8.getDefinition().getName(),j8);a.push({entity:v1,mutationApi:o1,pk:O1})}return a},deleteAsset:async(F,i1,{id:m,storeCode:p})=>{if(p!==void 0)h(p);let b=k4(m);U.factory(!b,I.validation,`Invalid asset ID: ${m}`,"INVALID_ID"),U.factory(b.typeCode!=="a",I.validation,`Not an asset ID: ${m}`,"INVALID_TYPE");let Q=await F.selectFrom("entities").selectAll().where("entities.store_id","=",Y).where("entities.seq","=",b.seq).where("entities.type_code","=","a").where("entities.deleted_at","is",null).executeTakeFirst();U.factory(!Q,I.notFound,`Asset not found: ${m}`,"ASSET_NOT_FOUND");let a=(await O.loadFieldsForEntity(F,Q.id)).find((V1)=>V1.getDefinition().getName()==="hash"),_1=a?a.getValue():null,O1=p8();return await F.updateTable("entities").set({deleted_at:O1}).where("id","=",Q.id).execute(),z.setIdByPk(Q.id,m),{id:m,deleted:!0,hash:_1}},findEntitiesByFieldValue:async(F,i1,{typeCode:m,subtype:p,fieldName:b,fieldValue:Q})=>{let l=F.selectFrom("entities").innerJoin("entity_types","entity_types.id","entities.entity_type_id").innerJoin("string_fields","string_fields.entity_id","entities.id").innerJoin("field_definitions","field_definitions.id","string_fields.field_definition_id").select(["entities.id","entities.object_id","entities.name","entities.path","entities.type_code","entity_types.subtype"]).where("entities.store_id","=",Y).where("entities.type_code","=",m).where("entities.deleted_at","is",null).where("field_definitions.store_id","=",Y).where("field_definitions.name","=",b).where("field_definitions.owner_entity_id","is",null).where("string_fields.value","=",Q);if(p!==void 0&&p!==null)l=l.where("entity_types.subtype","=",p);l=l.orderBy(W6`entities.name COLLATE NOCASE`);let a=await l.execute(),_1=[];for(let O1 of a)_1.push({id:O1.id,object_id:O1.object_id,name:O1.name,path:O1.path,type_code:O1.type_code,subtype:O1.subtype});return _1},findEntitiesByObjectRefFieldValue:async(F,i1,{typeCode:m,subtype:p,fieldName:b,targetEntityId:Q})=>{let l=k4(Q);U.factory(!l,I.validation,`Invalid target entity ID: ${Q}`,"INVALID_ID");let a=await F.selectFrom("entities").select("id").where("store_id","=",Y).where("seq","=",l.seq).where("type_code","=",l.typeCode).where("deleted_at","is",null).executeTakeFirst();if(!a)return[];let _1=a.id,O1=F.selectFrom("entities").innerJoin("entity_types","entity_types.id","entities.entity_type_id").innerJoin("obj_ref_fields","obj_ref_fields.entity_id","entities.id").innerJoin("field_definitions","field_definitions.id","obj_ref_fields.field_definition_id").select(["entities.id","entities.object_id","entities.name","entities.path","entities.type_code","entity_types.subtype"]).where("entities.store_id","=",Y).where("entities.type_code","=",m).where("entities.deleted_at","is",null).where("field_definitions.store_id","=",Y).where("field_definitions.name","=",b).where("field_definitions.owner_entity_id","is",null).where("obj_ref_fields.target_entity_id","=",_1);if(p!==void 0&&p!==null)O1=O1.where("entity_types.subtype","=",p);let V1=await O1.execute(),v1=[];for(let o1 of V1)v1.push({id:o1.id,object_id:o1.object_id,name:o1.name,path:o1.path,type_code:o1.type_code,subtype:o1.subtype});return v1},searchTextFields:(F,i1,m)=>w.searchTextFields(F,i1,m),searchContent:(F,i1,m)=>w.searchContent(F,i1,m),backfillVersionContentRefs:async(F,i1,m)=>{await O.initSystemFieldDefCache(F);let p=await y8.readEntityTypeId(F,i1,"v",null),Q=(await F.selectFrom("entity_content").select("content_text").where("entity_id","=",m).executeTakeFirst())?.content_text||"",l=ZA(Q);X2("backfillVersionContentRefs: extracted attachments=%d, includes=%d, hyperlinks=%d for version pk=%d",l.attachments.length,l.includes.length,l.hyperlinks.length,m);let a=O.getSystemFieldDef("attachments",p),_1=O.getSystemFieldDef("includes",p),O1=O.getSystemFieldDef("hyperlinks",p),V1=[];if(a)V1.push(a.pk);if(_1)V1.push(_1.pk);if(O1)V1.push(O1.pk);if(V1.length>0)await F.deleteFrom("obj_ref_fields").where("entity_id","=",m).where("field_definition_id","in",V1).execute();let v1={attachments:0,includes:0,hyperlinks:0},o1=async(q8,j8,R8)=>{if(!q8)return X2('backfillVersionContentRefs: System field definition "%s" not found for version type - skipping',R8),0;let l8=0;for(let m8 of j8){let i8=await F.selectFrom("entities").select("id").where("object_id","=",m8).where("deleted_at","is",null).executeTakeFirst();if(!i8){X2("backfillVersionContentRefs: Target entity not found for %s reference: %s - skipping",R8,m8);continue}await F.insertInto("obj_ref_fields").values({entity_id:m,field_definition_id:q8.pk,target_entity_id:i8.id,ordinal:l8}).execute(),l8++}return l8};return v1.attachments=await o1(a,l.attachments,"attachments"),v1.includes=await o1(_1,l.includes,"includes"),v1.hyperlinks=await o1(O1,l.hyperlinks,"hyperlinks"),X2("backfillVersionContentRefs: populated attachments=%d, includes=%d, hyperlinks=%d for version pk=%d",v1.attachments,v1.includes,v1.hyperlinks,m),v1}}),v9=Object.freeze({...v});return{store:e9,mutationApi:v9}},YA1=Object.freeze({create:Di8});var Ri8=({inner:$,entityCache:K,fieldDefinitionCache:q,entityFactory:Y})=>{let z=new Map,J=new Map,W=new Map,Z=new Map,O=new Map,H=(X1)=>{if(!X1||X1.length<2)return;let G1=X1[1],z1=$.getCode();switch(G1){case"s":z.delete(z1);break;case"j":J.delete(z1);break;case"a":W.delete(z1);break;case"d":case"t":O.clear();break;case"f":Z.clear();break}},X=async(X1,G1,z1,S1,P1,B1=null)=>{let p1=z1.length>=2?z1[1]:null,s1,P8,V8;if(p1==="d"||p1==="t"){let Q8=await $.readContent(X1,G1,{id:z1});if(!Q8)return null;s1=Q8.entity,P8=Q8.mutationApi,V8=Q8.pk}else{let Q8=await $.readEntity(X1,G1,{id:z1});if(!Q8)return null;let D6=Y.createEntity(Q8);if(s1=D6.entity,P8=D6.mutationApi,V8=Q8.pk,Q8.fields&&Array.isArray(Q8.fields))for(let y6 of Q8.fields)P8.setField(y6.getDefinition().getName(),y6)}let v8=m6.create(s1,P8,V8);if(S1(`cache-set:${z1}`,()=>{K.set(z1,v8)},()=>K.remove(z1)),B1!==null)return{entity:s1,oldValues:B1};return s1},w=(X1,G1)=>`${X1||"root"}:${G1||"all"}:${$.getCode()}`,G=(X1,G1)=>`${X1||"root"}:${G1||"all"}:${$.getCode()}`,T=(X1,G1)=>{let z1=`${X1||"root"}:`;for(let[S1,P1]of Z.entries())if(S1.startsWith(z1)){if(S1.split(":")[1]==="all")continue;P1.push(G1)}},P=(X1,G1,z1)=>{let S1=`${X1||"root"}:`;for(let[P1,B1]of O.entries())if(P1.startsWith(S1)){let p1=P1.split(":")[1];if(p1===G1||p1==="all")B1.push(z1)}},v=(X1,G1,z1)=>{let S1=`${G1||"root"}:`;for(let[P1,B1]of X1.entries())if(P1.startsWith(S1)){let p1=B1.findIndex((s1)=>s1.getObjectId()===z1);if(p1!==-1)B1.splice(p1,1)}},V=async(X1,G1,z1,S1)=>{let P1=await $.createFolder(X1,G1,z1),{entity:B1}=P1,p1=B1.getObjectId(),s1=S1;return await X(X1,G1,p1,(V8,v8,Q8)=>{s1(V8,()=>{v8(),T(z1.parentId,K.get(p1).getEntity())},Q8)},"created")},j=async(X1,G1,{id:z1})=>{if(!z1||z1.length<3||z1[1]!=="f"&&z1[1]!=="s")return null;let S1=K.get(z1);if(S1)return S1.getEntity();let P1=await $.readFolder(X1,G1,{id:z1});if(!P1)return null;let{entity:B1,mutationApi:p1,pk:s1}=P1;K.set(z1,m6.create(B1,p1,s1));for(let P8 of Z.values()){let V8=P8.findIndex((v8)=>v8.getObjectId()===z1);if(V8!==-1){P8[V8]=B1;break}}return B1},D=async(X1,G1,z1,S1)=>{let{id:P1}=z1,B1=K.get(P1);if(P1&&P1.length>1&&P1[1]==="j")K.remove(P1);let s1=await $.updateFolder(X1,G1,z1),P8=z1.name!==void 0&&z1.name!==s1.oldValues.name||z1.parentId!==void 0&&z1.parentId!==s1.oldValues.parentId;return S1(`cache-update:${P1}`,()=>{if(B1){let v8=B1.getMutationApi();if(z1.name!==void 0)v8.setName(z1.name);if(z1.parentId!==void 0)v8.setParentId(z1.parentId);v8.setUpdatedAt(s1.entity.getUpdatedAt()),v8.setPath(s1.entity.getPath())}else{let{entity:v8,mutationApi:Q8,pk:D6}=s1,y6=m6.create(v8,Q8,D6);K.set(P1,y6)}if(P8){let Q8=s1.oldValues.path+"/";for(let[D6,y6]of K.entries())if(y6.getEntity().getPath().startsWith(Q8))K.remove(D6)}Z.clear()},()=>{K.remove(P1),Z.clear()}),{entity:B1?B1.getEntity():s1.entity,oldValues:s1.oldValues}},f=async(X1,G1,{id:z1},S1)=>{let P1=K.get(z1),B1=P1?P1.getEntity().getPath():null,p1=P1?P1.getEntity().getParentId():null,s1=await $.deleteFolder(X1,G1,{id:z1});return S1(`cache-evict:${z1}`,()=>{K.remove(z1);for(let P8 of s1.descendantIds||[]){K.remove(P8);let V8=P8.length>=2?P8[1]:null;if(V8==="s"){let v8=z.get($.getCode());if(v8){let Q8=v8.findIndex((D6)=>D6.getObjectId()===P8);if(Q8!==-1)v8.splice(Q8,1)}}else if(V8==="j"){let v8=J.get($.getCode());if(v8){let Q8=v8.findIndex((D6)=>D6.getObjectId()===P8);if(Q8!==-1)v8.splice(Q8,1)}}else if(V8==="a"){let v8=W.get($.getCode());if(v8){let Q8=v8.findIndex((D6)=>D6.getObjectId()===P8);if(Q8!==-1)v8.splice(Q8,1)}}}v(Z,p1,z1)}),{...s1,path:B1}},C=async(X1,G1,z1)=>{let S1=w(z1.folderId,z1.type),P1=Z.get(S1);if(P1)return P1;let B1=await $.listFolderContents(X1,G1,z1);for(let s1 of B1)K.set(s1.entity.getObjectId(),m6.create(s1.entity,s1.mutationApi,s1.pk));let p1=B1.map((s1)=>s1.entity);return Z.set(S1,p1),p1},h=async(X1,G1,z1)=>{let S1=await $.getFolderByPath(X1,G1,z1);if(!S1)return null;let{entity:P1,mutationApi:B1,pk:p1}=S1,s1=P1.getObjectId();return K.set(s1,m6.create(P1,B1,p1)),P1},L=async(X1,G1,z1,S1)=>{let P1=await $.findFolderByName(X1,G1,z1,S1);if(!P1)return null;let{entity:B1,mutationApi:p1,pk:s1}=P1;return K.set(B1.getObjectId(),m6.create(B1,p1,s1)),B1},k=async(X1,G1,z1)=>{let S1=await $.readRootFolderForType(X1,G1,z1);if(!S1)return null;let{entity:P1,mutationApi:B1,pk:p1}=S1;return K.set(P1.getObjectId(),m6.create(P1,B1,p1)),P1},g=async(X1,G1,z1,S1,P1)=>{return $.isDuplicateNameInParent(X1,G1,z1,S1,P1)},S=async(X1,G1,z1,S1)=>{let P1=await $.createContent(X1,G1,z1),{entity:B1}=P1,p1=B1.getObjectId(),s1=p1[1],P8=S1;return await X(X1,G1,p1,(v8,Q8,D6)=>{P8(v8,()=>{Q8(),P(z1.parentId,s1,K.get(p1).getEntity())},D6)},"created")},E=async(X1,G1,{id:z1})=>{if(!z1||z1.length<3||z1[1]!=="d"&&z1[1]!=="t")return null;let S1=K.get(z1);if(S1)return S1.getEntity();let P1=await $.readContent(X1,G1,{id:z1});if(!P1)return null;let{entity:B1,mutationApi:p1,pk:s1}=P1;K.set(z1,m6.create(B1,p1,s1));for(let P8 of O.values()){let V8=P8.findIndex((v8)=>v8.getObjectId()===z1);if(V8!==-1){P8[V8]=B1;break}}return B1},x=async(X1,G1,z1,S1)=>{let{id:P1}=z1,B1=K.get(P1),p1=await $.updateContent(X1,G1,z1);return S1(`cache-update:${P1}`,()=>{if(B1){let P8=B1.getEntity(),V8=B1.getMutationApi();if(z1.name!==void 0){V8.setName(z1.name);let D6=P8.getField("name");if(D6){let y6=x3.create({definition:D6.getDefinition(),values:[z1.name]});V8.setField("name",y6)}}if(z1.parentId!==void 0){V8.setParentId(z1.parentId);let D6=P8.getField("parent");if(D6){let y6=x3.create({definition:D6.getDefinition(),values:[z1.parentId]});V8.setField("parent",y6)}}let v8=p1.entity.getUpdatedAt();V8.setUpdatedAt(v8),V8.setPath(p1.entity.getPath());let Q8=P8.getField("updated_at");if(Q8){let D6=x3.create({definition:Q8.getDefinition(),values:[v8]});V8.setField("updated_at",D6)}}else{let{entity:P8,mutationApi:V8,pk:v8}=p1,Q8=m6.create(P8,V8,v8);K.set(P1,Q8)}Z.clear(),O.clear()},()=>{K.remove(P1),O.clear()}),{entity:B1?B1.getEntity():p1.entity,oldValues:p1.oldValues}},c=async(X1,G1,z1,S1)=>{let{id:P1}=z1,B1=K.get(P1),p1=B1?B1.getEntity().getParentId():null,s1=await $.updateEntityType(X1,G1,z1);K.remove(P1);let P8=`${p1||"root"}:`;for(let V8 of O.keys())if(V8.startsWith(P8))O.delete(V8);return s1.entity},i=async(X1,G1,z1)=>{return $.deleteTypeScopedFieldValues(X1,G1,z1)},t=async(X1,G1,{id:z1},S1)=>{let P1=K.get(z1),B1=P1?P1.getEntity().getPath():null,p1=P1?P1.getEntity().getParentId():null,s1=await $.deleteContent(X1,G1,{id:z1});return S1(`cache-evict:${z1}`,()=>{K.remove(z1),v(O,p1,z1)}),{...s1,path:B1}},w1=async(X1,G1,z1,S1)=>{let{id:P1}=z1,B1=K.get(P1),p1=await $.saveDraft(X1,G1,z1);S1(`cache-update:${P1}`,()=>{if(B1){let P8=B1.getMutationApi();P8.setDraftContent(p1.entity.getDraftContent()),P8.setHasDraft(p1.entity.hasDraftContent()),P8.setUpdatedAt(p1.entity.getUpdatedAt())}else{let{entity:P8,mutationApi:V8,pk:v8}=p1;K.set(P1,m6.create(P8,V8,v8))}},()=>{K.remove(P1),O.clear()});let s1=B1?B1.getEntity():p1.entity;if(p1.lockLost!==void 0)return{entity:s1,lockLost:p1.lockLost};return s1},Z1=async(X1,G1,z1,S1)=>{let{id:P1}=z1,B1=K.get(P1),p1=await $.publishContent(X1,G1,z1);if(B1){let s1=B1.getEntity(),P8=B1.getMutationApi();return P8.setPublishedVersionNumber(p1.entity.getPublishedVersionNumber()),P8.setPublishedContent(p1.entity.getPublishedContent()),P8.setDraftContent(null),P8.setHasDraft(!1),P8.setUpdatedAt(p1.entity.getUpdatedAt()),P8.setEditState(null),s1}else return S1(`cache-set:${P1}`,()=>{let{entity:s1,mutationApi:P8,pk:V8}=p1;K.set(P1,m6.create(s1,P8,V8))},()=>{K.remove(P1),O.clear()}),p1.entity},E1=async(X1,G1,z1,S1)=>{let{id:P1}=z1,B1=K.get(P1),p1=await $.discardDraft(X1,G1,z1);return S1(`cache-update:${P1}`,()=>{if(B1){let s1=B1.getMutationApi();s1.setDraftContent(null),s1.setHasDraft(!1),s1.setUpdatedAt(p1.entity.getUpdatedAt())}else{let{entity:s1,mutationApi:P8,pk:V8}=p1;K.set(P1,m6.create(s1,P8,V8))}},()=>{K.remove(P1),O.clear()}),B1?B1.getEntity():p1.entity},T1=async(X1,G1,z1)=>{return $.readDraft(X1,G1,z1)},H1=async(X1,G1,z1)=>{return $.readVersion(X1,G1,z1)},Q1=async(X1,G1,z1)=>{return $.getVersions(X1,G1,z1)},L1=async(X1,G1,z1,S1,P1)=>{let B1=await $.findContentByName(X1,G1,z1,S1,P1);if(!B1)return null;let{entity:p1,mutationApi:s1,pk:P8}=B1,V8=p1.getObjectId(),v8=K.get(V8);if(v8){let Q8=v8.getEntity(),D6=v8.getMutationApi(),y6=p1.getFields();if(y6)for(let[e9,v9]of Object.entries(y6))D6.setField(e9,v9);return Q8}return K.set(V8,m6.create(p1,s1,P8)),p1},w8=async(X1,G1,z1)=>{let S1=G(z1.parentId,z1.type),P1=O.get(S1);if(P1)return P1;let B1=await $.listContent(X1,G1,z1);for(let s1 of B1)K.set(s1.entity.getObjectId(),m6.create(s1.entity,s1.mutationApi,s1.pk));let p1=B1.map((s1)=>s1.entity);return O.set(S1,p1),p1},$8=async(X1,G1,z1,S1)=>{let{id:P1,sessionId:B1}=z1,p1=K.get(P1),s1=await $.setEditState(X1,G1,z1);if(s1.success)S1(`cache-update:${P1}`,()=>{if(p1){let P8=new Date().toISOString();p1.getMutationApi().setEditState({sessionId:B1,startedAt:P8,lastActivityAt:P8})}},()=>{K.remove(P1),O.clear()});return s1},G8=async(X1,G1,z1)=>{return $.getEditState(X1,G1,z1)},W8=async(X1,G1,z1,S1)=>{let{id:P1}=z1,B1=K.get(P1);await $.clearEditState(X1,G1,z1),S1(`cache-update:${P1}`,()=>{if(B1)B1.getMutationApi().setEditState(null)},()=>{K.remove(P1),O.clear()})},m1=async(X1,G1,z1,S1)=>{let P1=await $.createFieldDefinition(X1,G1,z1),{entity:B1,mutationApi:p1,pk:s1}=P1;return S1(`cache-set:${B1.getObjectId()}`,()=>{q.set(B1.getObjectId(),m6.create(B1,p1,s1))},()=>q.remove(B1.getObjectId())),B1},e1=async(X1,G1,{id:z1})=>{let S1=q.get(z1);if(S1)return S1.getEntity();let P1=await $.readFieldDefinition(X1,G1,{id:z1});if(!P1)return null;let{entity:B1,mutationApi:p1,pk:s1}=P1;return q.set(z1,m6.create(B1,p1,s1)),B1},J1=async(X1,G1,z1,S1)=>{let P1=await $.findFieldDefinitionByName(X1,G1,z1,S1);if(!P1)return null;let{entity:B1,mutationApi:p1,pk:s1}=P1;return q.set(B1.getObjectId(),m6.create(B1,p1,s1)),B1},q1=async(X1,G1,z1)=>{let S1=await $.getFieldDefinitionsForOwner(X1,G1,z1);for(let P1 of S1)q.set(P1.entity.getObjectId(),m6.create(P1.entity,P1.mutationApi,P1.pk));return S1.map((P1)=>P1.entity)},A1=async(X1,G1,z1)=>{let S1=await $.getFieldDefinitionsForEntityType(X1,G1,z1);for(let P1 of S1)q.set(P1.entity.getObjectId(),m6.create(P1.entity,P1.mutationApi,P1.pk));return S1.map((P1)=>({entity:P1.entity,sourcePk:P1.sourcePk,sourceCode:P1.sourceCode,sourceSubtype:P1.sourceSubtype,inherited:P1.inherited,sortOrder:P1.sortOrder,rows:P1.rows,colspan:P1.colspan,classDescription:P1.classDescription}))},n=async(X1,G1,z1)=>{return $.resolveEntityTypePk(X1,G1,z1)},j1=async(X1,G1,z1)=>{let S1=await $.resolveFieldDefinition(X1,G1,z1),{entity:P1,mutationApi:B1,pk:p1}=S1;return q.set(P1.getObjectId(),m6.create(P1,B1,p1)),P1},N1=async(X1,G1,{id:z1},S1)=>{let P1=await $.deleteFieldDefinition(X1,G1,{id:z1});return S1(`cache-evict:${z1}`,()=>{q.remove(z1)}),P1},x1=async(X1,G1,{id:z1,config:S1})=>{let P1=await $.updateFieldDefinitionConfig(X1,G1,{id:z1,config:S1}),{entity:B1,mutationApi:p1,pk:s1}=P1;return q.set(z1,m6.create(B1,p1,s1)),B1},a1=async(X1,G1,z1,S1)=>{let{entityId:P1}=z1,B1=await $.setFieldValue(X1,G1,z1);return S1(`cache-update:${P1}`,()=>{let p1=K.get(P1);if(p1){let s1=B1.field;if(!s1){console.warn(`setFieldValue post-commit: result.field is undefined for ${P1}.${B1.fieldName}`);return}p1.getMutationApi().setField(B1.fieldName,s1)}},()=>{K.remove(P1),H(P1)}),B1.entity},K8=async(X1,G1,z1)=>{return $.getFieldValue(X1,G1,z1)},y1=async(X1,G1,z1,S1)=>{let{entityId:P1}=z1,B1=await $.deleteFieldValue(X1,G1,z1);S1(`cache-update:${P1}`,()=>{let p1=K.get(P1);if(p1)p1.getMutationApi().removeField(B1.fieldName)},()=>{K.remove(P1),H(P1)})},h1=async(X1,G1,z1,S1)=>{let P1=await $.createStory(X1,G1,z1),{entity:B1}=P1,p1=B1.getObjectId();if(K.get(p1))return S1(`cache-list-push:story:${p1}`,()=>{let V8=$.getCode(),v8=z.get(V8);if(v8)v8.push(K.get(p1).getEntity())},()=>z.delete($.getCode())),B1;let s1=S1;return await X(X1,G1,p1,(V8,v8,Q8)=>{s1(V8,()=>{v8();let D6=$.getCode(),y6=z.get(D6);if(y6)y6.push(K.get(p1).getEntity())},Q8)},"created")},z8=async(X1,G1,{id:z1})=>{if(!z1||z1.length<3||z1[1]!=="s")return null;let S1=K.get(z1);if(S1)return S1.getEntity();let P1=await $.readStory(X1,G1,{id:z1});if(!P1)return null;let{entity:B1,mutationApi:p1,pk:s1}=P1;K.set(z1,m6.create(B1,p1,s1));let P8=z.get($.getCode());if(P8){let V8=P8.findIndex((v8)=>v8.getObjectId()===z1);if(V8!==-1)P8[V8]=B1}return B1},E8=async(X1,G1,z1)=>{let S1=$.getCode(),P1=z.get(S1);if(P1)return P1;let B1=await $.listStories(X1,G1,z1);for(let s1 of B1){let{entity:P8,mutationApi:V8,pk:v8}=s1;K.set(P8.getObjectId(),m6.create(P8,V8,v8))}let p1=B1.map((s1)=>s1.entity);return z.set(S1,p1),p1},r1=async(X1,G1,z1,S1)=>{let{id:P1}=z1,B1=await $.renameStory(X1,G1,z1),{entity:p1,mutationApi:s1,pk:P8,oldValues:V8}=B1;return S1(`cache-update:${P1}`,()=>{let v8=K.get(P1);if(v8){let Q8=v8.getMutationApi();Q8.setName(p1.getName()),Q8.setPath(p1.getPath())}else{let Q8=m6.create(p1,s1,P8);K.set(P1,Q8)}if(V8&&V8.path){let Q8=V8.path+"/";for(let[D6,y6]of K.entries())if(y6.getEntity().getPath().startsWith(Q8))K.remove(D6)}},()=>{K.remove(P1),z.delete($.getCode())}),{entity:p1,oldValues:V8}},X8=async(X1,G1,z1,S1)=>{let{id:P1}=z1,B1=K.get(P1),p1=B1?B1.getEntity().getParentId():null,s1=await $.deleteStory(X1,G1,z1);return S1(`cache-evict:${P1}`,()=>{K.remove(P1);let P8=$.getCode(),V8=z.get(P8);if(V8){let v8=V8.findIndex((Q8)=>Q8.getObjectId()===P1);if(v8!==-1)V8.splice(v8,1)}v(Z,p1,P1);for(let v8 of s1.descendantIds)K.remove(v8)}),s1},o8=async(X1,G1,z1)=>{let S1=await $.readStoryRootFolder(X1,G1,z1);if(!S1)return null;let{entity:P1,mutationApi:B1,pk:p1}=S1;return K.set(P1.getObjectId(),m6.create(P1,B1,p1)),P1},$6=async(X1,G1,z1,S1)=>{let P1=await $.createJob(X1,G1,z1),{entity:B1}=P1,p1=B1.getObjectId();if(K.get(p1))return S1(`cache-list-push:job:${p1}`,()=>{let V8=$.getCode(),v8=J.get(V8);if(v8)v8.push(K.get(p1).getEntity())},()=>J.delete($.getCode())),B1;let s1=S1;return await X(X1,G1,p1,(V8,v8,Q8)=>{s1(V8,()=>{v8();let D6=$.getCode(),y6=J.get(D6);if(y6)y6.push(K.get(p1).getEntity())},Q8)},"created")},v6=async(X1,G1,{id:z1})=>{if(!z1||z1.length<3||z1[1]!=="j")return null;let S1=K.get(z1);if(S1)return S1.getEntity();let P1=await $.readJob(X1,G1,{id:z1});if(!P1)return null;let{entity:B1,mutationApi:p1,pk:s1}=P1;K.set(z1,m6.create(B1,p1,s1));let P8=J.get($.getCode());if(P8){let V8=P8.findIndex((v8)=>v8.getObjectId()===z1);if(V8!==-1)P8[V8]=B1}return B1},H6=async(X1,G1,z1)=>{let S1=$.getCode(),P1=J.get(S1);if(P1)return P1;let B1=await $.listJobs(X1,G1,z1);for(let s1 of B1){let{entity:P8,mutationApi:V8,pk:v8}=s1;K.set(P8.getObjectId(),m6.create(P8,V8,v8))}let p1=B1.map((s1)=>s1.entity);return J.set(S1,p1),p1},x6=async(X1,G1,z1,S1)=>{let{id:P1}=z1,B1=K.get(P1),p1=B1?B1.getEntity().getParentId():null,s1=await $.deleteJob(X1,G1,z1);return S1(`cache-evict:${P1}`,()=>{K.remove(P1);let P8=$.getCode(),V8=J.get(P8);if(V8){let v8=V8.findIndex((Q8)=>Q8.getObjectId()===P1);if(v8!==-1)V8.splice(v8,1)}v(Z,p1,P1);for(let v8 of s1.descendantIds)K.remove(v8)}),s1},q6=async(X1,G1,z1)=>{let S1=await $.readJobRootFolder(X1,G1,z1);if(!S1)return null;let{entity:P1,mutationApi:B1,pk:p1}=S1;return K.set(P1.getObjectId(),m6.create(P1,B1,p1)),P1},Y6=async(X1,G1,z1)=>{let S1=await $.readSettingsRootFolder(X1,G1,z1);if(!S1)return null;let{entity:P1,mutationApi:B1,pk:p1}=S1;return K.set(P1.getObjectId(),m6.create(P1,B1,p1)),P1},n4=async(X1,G1,z1,S1)=>{let P1=await $.createAsset(X1,G1,z1),{entity:B1}=P1,p1=B1.getObjectId(),s1=S1;return await X(X1,G1,p1,(V8,v8,Q8)=>{s1(V8,()=>{v8();let D6=$.getCode(),y6=W.get(D6);if(y6)y6.push(K.get(p1).getEntity())},Q8)},"created")},Q6=async(X1,G1,{id:z1})=>{if(!z1||z1.length<3||z1[1]!=="a")return null;let S1=K.get(z1);if(S1)return S1.getEntity();let P1=await $.readAsset(X1,G1,{id:z1});if(!P1)return null;let{entity:B1,mutationApi:p1,pk:s1}=P1;K.set(z1,m6.create(B1,p1,s1));let P8=W.get($.getCode());if(P8){let V8=P8.findIndex((v8)=>v8.getObjectId()===z1);if(V8!==-1)P8[V8]=B1}return B1},S4=async(X1,G1,z1)=>{let S1=$.getCode(),P1=W.get(S1);if(P1)return P1;let B1=await $.listAssets(X1,G1,z1);for(let s1 of B1){let{entity:P8,mutationApi:V8,pk:v8}=s1;K.set(P8.getObjectId(),m6.create(P8,V8,v8))}let p1=B1.map((s1)=>s1.entity);return W.set(S1,p1),p1},e6=async(X1,G1,z1,S1)=>{let{id:P1}=z1,B1=await $.deleteAsset(X1,G1,z1);return S1(`cache-evict:${P1}`,()=>{K.remove(P1);let p1=$.getCode(),s1=W.get(p1);if(s1){let P8=s1.findIndex((V8)=>V8.getObjectId()===P1);if(P8!==-1)s1.splice(P8,1)}}),B1},n1=async(X1,G1,{id:z1})=>{let S1=z1.length>=3?z1[1]:null;if(S1==="d"||S1==="t"){if(!await E(X1,G1,{id:z1}))return null;let v8=K.get(z1);return v8?{entity:v8.getEntity(),mutationApi:v8.getMutationApi(),pk:v8.getPk()}:null}let P1=K.get(z1);if(P1)return{entity:P1.getEntity(),mutationApi:P1.getMutationApi(),pk:P1.getPk()};let B1=await $.readEntity(X1,G1,{id:z1});if(!B1)return null;let{entity:p1,mutationApi:s1}=Y.createEntity(B1);if(B1.fields&&Array.isArray(B1.fields))for(let V8 of B1.fields)s1.setField(V8.getDefinition().getName(),V8);let P8=m6.create(p1,s1,B1.pk);return K.set(z1,P8),{entity:p1,mutationApi:s1,pk:B1.pk}},d1=async(X1,G1,z1)=>{return $.findEntitiesByFieldValue(X1,G1,z1)},b1=async(X1,G1,z1)=>{return $.findEntitiesByObjectRefFieldValue(X1,G1,z1)},T8=async(X1,G1,z1)=>{return $.searchTextFields(X1,G1,z1)},U1=async(X1,G1,z1)=>{return $.searchContent(X1,G1,z1)},A8=(X1)=>{K.remove(X1),Z.clear()},M8=(X1)=>{K.remove(X1),O.clear()},B8=(X1)=>{K.remove(X1),z.delete($.getCode())},g1=(X1)=>{K.remove(X1),J.delete($.getCode())},M1=()=>{z.clear(),J.clear(),W.clear(),Z.clear(),O.clear()},t1=(X1)=>{for(let G1 of X1)K.remove(G1)},_8=async(X1,G1,{id:z1},S1)=>{let P1=await $.restoreEntity(X1,G1,{id:z1},S1);await X(X1,G1,z1,S1,"restored");for(let p1 of P1.descendantIds)await X(X1,G1,p1,S1,"restored");let B1=[z1,...P1.descendantIds];return S1(`cache-list-push:restore:${z1}`,()=>{for(let p1 of B1){let s1=K.get(p1);if(!s1)continue;let P8=s1.getEntity(),V8=p1[1];if(V8==="s"){let v8=z.get($.getCode());if(v8)v8.push(P8)}else if(V8==="j"){let v8=J.get($.getCode());if(v8)v8.push(P8)}else if(V8==="a"){let v8=W.get($.getCode());if(v8)v8.push(P8)}else if(V8==="f")T(P8.getParentId(),P8);else if(V8==="d"||V8==="t")P(P8.getParentId(),V8,P8)}},()=>{z.clear(),J.clear(),W.clear(),Z.clear(),O.clear()}),P1};return Object.freeze({getObjectId:$.getObjectId,getName:$.getName,getCreatedAt:$.getCreatedAt,getUpdatedAt:$.getUpdatedAt,getCodes:$.getCodes,getType:$.getType,getCode:$.getCode,getPk:$.getPk,toJSON:$.toJSON,createFolder:V,readFolder:j,updateFolder:D,deleteFolder:f,listFolderContents:C,getFolderByPath:h,findFolderByName:L,readRootFolderForType:k,isDuplicateNameInParent:g,createContent:S,readContent:E,updateContent:x,updateEntityType:c,deleteTypeScopedFieldValues:i,deleteContent:t,saveDraft:w1,readDraft:T1,publishContent:Z1,discardDraft:E1,readVersion:H1,getVersions:Q1,findContentByName:L1,listContent:w8,setEditState:$8,getEditState:G8,clearEditState:W8,createFieldDefinition:m1,readFieldDefinition:e1,findFieldDefinitionByName:J1,getFieldDefinitionsForOwner:q1,getFieldDefinitionsForEntityType:A1,resolveEntityTypePk:n,resolveFieldDefinition:j1,deleteFieldDefinition:N1,updateFieldDefinitionConfig:x1,addClassAssociation:$.addClassAssociation,createEntityType:$.createEntityType,setFieldValue:a1,getFieldValue:K8,deleteFieldValue:y1,createStory:h1,renameStory:r1,readStory:z8,listStories:E8,deleteStory:X8,readStoryRootFolder:o8,createJob:$6,readJob:v6,listJobs:H6,deleteJob:x6,readJobRootFolder:q6,readSettingsRootFolder:Y6,readSetting:$.readSetting,listSettings:$.listSettings,findSettingByName:$.findSettingByName,createSetting:$.createSetting,updateSettingPath:$.updateSettingPath,deleteSetting:$.deleteSetting,createAsset:n4,readAsset:Q6,listAssets:S4,deleteAsset:e6,readEntity:n1,findEntitiesByFieldValue:d1,findEntitiesByObjectRefFieldValue:b1,searchTextFields:T8,searchContent:U1,evictFolder:A8,evictContent:M8,evictStory:B8,evictJob:g1,evictEntitiesById:t1,clearListCaches:M1,backfillVersionContentRefs:$.backfillVersionContentRefs,listDeletedItems:$.listDeletedItems,restoreEntity:_8,_test_finalizeEntityWrite:X,_test_getEntityCache:()=>K,_test_getStoryListCache:()=>z,_test_getJobListCache:()=>J,_test_getAssetListCache:()=>W,_test_getFolderContentsCache:()=>Z,_test_getContentListCache:()=>O,_test_pushToFolderContentsCache:T,_test_pushToContentListCache:P,_test_spliceFromCache:v})},zA1=Object.freeze({create:Ri8});var Ci8=($)=>{let K=new Map;return $.forEach((J)=>K.set(J,new Set)),Object.freeze({subscribe:(J,W)=>{return K.get(J)?.add(W),()=>K.get(J)?.delete(W)},subscribeAll:(J)=>{let W=[];for(let[Z,O]of K){let H=`on${Z.charAt(0).toUpperCase()}${Z.slice(1)}`;if(J[H])O.add(J[H]),W.push(()=>O.delete(J[H]))}return()=>W.forEach((Z)=>Z())},notify:(J,W,Z)=>{let O=[];return K.get(J)?.forEach((H)=>{if(H===Z)return;try{H(W)}catch(X){O.push(X)}}),O.length>0?O:null}})},Kz=Object.freeze({create:Ci8});var Ei8=({inner:$,storeCode:K})=>{let q=null,Y=Kz.create([c8.FOLDER_CREATED,c8.FOLDER_RENAMED,c8.FOLDER_MOVED,c8.FOLDER_DELETED,c8.FOLDER_RESTORED,c8.DOCUMENT_CREATED,c8.DOCUMENT_RENAMED,c8.DOCUMENT_MOVED,c8.DOCUMENT_DELETED,c8.DOCUMENT_RESTORED,c8.DOCUMENT_PUBLISHED,c8.DRAFT_SAVED,c8.DRAFT_DISCARDED,c8.TEMPLATE_CREATED,c8.TEMPLATE_RENAMED,c8.TEMPLATE_MOVED,c8.TEMPLATE_DELETED,c8.TEMPLATE_PUBLISHED,c8.TEMPLATE_DRAFT_SAVED,c8.TEMPLATE_DRAFT_DISCARDED,c8.EDIT_STATE_ACQUIRED,c8.EDIT_STATE_REFRESHED,c8.EDIT_STATE_CLEARED,c8.STORY_CREATED,c8.STORY_RENAMED,c8.STORY_DELETED,c8.JOB_CREATED,c8.JOB_DELETED,c8.FIELD_ADDED,c8.FIELD_VALUE_CHANGED,c8.FIELD_REMOVED,c8.FIELD_DEFINITION_CREATED,c8.FIELD_DEFINITION_DELETED,c8.ASSET_CREATED,c8.ASSET_DELETED,c8.ENTITY_TYPE_CREATED,c8.ENTITY_TYPE_UPDATED]),z=async(n1,d1,b1)=>{let T8=await $.readFolder(n1,d1,{id:b1});if(!T8)return null;let U1=T8.getSubtype?.();if(U1==="root_d")return"d";if(U1==="root_t")return"t";let A8=T8.getPath();if(!A8)return null;if(A8==="Documents"||A8.startsWith("Documents/"))return"d";if(A8==="Templates"||A8.startsWith("Templates/"))return"t";return null},J=async(n1,d1,b1,T8)=>{let{parentId:U1,subtype:A8}=b1,M8=await $.createFolder(n1,d1,b1,T8),B8=null;if(A8==="root_d")B8="d";else if(A8==="root_t")B8="t";else if(U1){let g1=await $.readFolder(n1,d1,{id:U1});if(g1){let M1=g1.getPath();if(M1==="Documents"||M1?.startsWith("Documents/"))B8="d";else if(M1==="Templates"||M1?.startsWith("Templates/"))B8="t"}}return T8(`event:folderCreated:${M8.getObjectId()}`,()=>{Y.notify(c8.FOLDER_CREATED,{id:M8.getObjectId(),storeCode:K,name:M8.getName(),path:M8.getPath(),parentFolderId:U1,contentType:B8})}),M8},W=async(n1,d1,b1)=>{return $.readFolder(n1,d1,b1)},Z=async(n1,d1,b1,T8)=>{let{id:U1,name:A8,parentId:M8}=b1,B8=await $.updateFolder(n1,d1,b1,T8),g1=B8.entity,M1=B8.oldValues.name,t1=B8.oldValues.parentId,_8=await z(n1,d1,U1);if(A8!==void 0&&A8!==M1)T8(`event:folderRenamed:${U1}`,()=>{Y.notify(c8.FOLDER_RENAMED,{id:U1,storeCode:K,parentFolderId:g1.getParentId(),contentType:_8,oldName:M1,newName:A8,path:g1.getPath()})});if(M8!==void 0&&M8!==t1)T8(`event:folderMoved:${U1}`,()=>{Y.notify(c8.FOLDER_MOVED,{id:U1,storeCode:K,contentType:_8,oldParentFolderId:t1,parentFolderId:M8,path:g1.getPath()})});return g1},O=async(n1,d1,b1,T8)=>{let{id:U1}=b1,M8=(await $.readFolder(n1,d1,{id:U1}))?.getParentId(),B8=await z(n1,d1,U1),g1=await $.deleteFolder(n1,d1,b1,T8);return T8(`event:folderDeleted:${U1}`,()=>{Y.notify(c8.FOLDER_DELETED,{id:U1,storeCode:K,parentFolderId:M8,contentType:B8,path:g1.path,descendantCount:g1.descendantIds?.length||0})}),g1},H=async(n1,d1,b1)=>{return $.listFolderContents(n1,d1,b1)},X=async(n1,d1,b1)=>{return $.getFolderByPath(n1,d1,b1)},w=async(n1,d1,b1,T8)=>{return $.findFolderByName(n1,d1,b1,T8)},G=async(n1,d1,b1)=>{return $.readRootFolderForType(n1,d1,b1)},T=async(n1,d1,b1,T8,U1)=>{return $.isDuplicateNameInParent(n1,d1,b1,T8,U1)},P=async(n1,d1,b1,T8)=>{let{type:U1,parentId:A8}=b1,M8=await $.createContent(n1,d1,b1,T8),B8=U1==="t"?c8.TEMPLATE_CREATED:c8.DOCUMENT_CREATED;return T8(`event:contentCreated:${M8.getObjectId()}`,()=>{Y.notify(B8,{storeCode:K,id:M8.getObjectId(),type:U1,parentFolderId:A8,name:M8.getName(),path:M8.getPath()})}),M8},v=async(n1,d1,b1)=>{return $.readContent(n1,d1,b1)},V=async(n1,d1,b1,T8)=>{let{id:U1,name:A8,parentId:M8}=b1,B8=b6.getTypeFromId(U1),{entity:g1,oldValues:M1}=await $.updateContent(n1,d1,b1,T8),t1=M1?.name,_8=M1?.parentId,O8=B8==="t"?c8.TEMPLATE_RENAMED:c8.DOCUMENT_RENAMED,X1=B8==="t"?c8.TEMPLATE_MOVED:c8.DOCUMENT_MOVED;if(A8!==void 0&&A8!==t1)T8(`event:contentRenamed:${U1}`,()=>{Y.notify(O8,{storeCode:K,id:U1,type:B8,parentFolderId:g1.getParentId(),oldName:t1,newName:A8,path:g1.getPath()})});if(M8!==void 0&&M8!==_8)T8(`event:contentMoved:${U1}`,()=>{Y.notify(X1,{storeCode:K,id:U1,type:B8,oldParentFolderId:_8,parentFolderId:M8,path:g1.getPath()})});return g1},j=async(n1,d1,b1,T8)=>{return $.updateEntityType(n1,d1,b1,T8)},D=async(n1,d1,b1)=>{return $.deleteTypeScopedFieldValues(n1,d1,b1)},f=async(n1,d1,b1,T8)=>{let{id:U1}=b1,A8=b6.getTypeFromId(U1),B8=(await $.readContent(n1,d1,{id:U1}))?.getParentId(),g1=await $.deleteContent(n1,d1,b1,T8),M1=A8==="t"?c8.TEMPLATE_DELETED:c8.DOCUMENT_DELETED;return T8(`event:contentDeleted:${U1}`,()=>{Y.notify(M1,{storeCode:K,id:U1,type:A8,parentFolderId:B8,path:g1.path})}),g1},C=async(n1,d1,b1,T8)=>{let{id:U1}=b1,A8=await $.restoreEntity(n1,d1,b1,T8),{type:M8,parentFolderId:B8}=A8;if(["d","t"].includes(M8))T8(`event:contentRestored:${U1}`,()=>{Y.notify(c8.DOCUMENT_RESTORED,{id:U1,storeCode:K,type:M8,parentFolderId:B8})});else if(["f","s"].includes(M8)){let g1=await z(n1,d1,U1);T8(`event:folderRestored:${U1}`,()=>{Y.notify(c8.FOLDER_RESTORED,{id:U1,storeCode:K,type:M8,parentFolderId:B8,contentType:g1})})}return A8},h=async(n1,d1,b1,T8)=>{let{id:U1}=b1,A8=b6.getTypeFromId(U1),B8=(await $.readContent(n1,d1,{id:U1}))?.getParentId(),g1=await $.saveDraft(n1,d1,b1,T8),M1=A8==="t"?c8.TEMPLATE_DRAFT_SAVED:c8.DRAFT_SAVED;return T8(`event:draftSaved:${U1}`,()=>{let t1=g1.lockLost!==void 0?g1.entity:g1;Y.notify(M1,{storeCode:K,id:U1,type:A8,parentFolderId:B8,updatedAt:t1?t1.getUpdatedAt():null,lockLost:g1.lockLost})}),g1},L=async(n1,d1,b1)=>{return $.readDraft(n1,d1,b1)},k=async(n1,d1,b1,T8)=>{let{id:U1}=b1,A8=b6.getTypeFromId(U1),M8=await $.publishContent(n1,d1,b1,T8),B8=A8==="t"?c8.TEMPLATE_PUBLISHED:c8.DOCUMENT_PUBLISHED;return T8(`event:contentPublished:${U1}`,()=>{Y.notify(B8,{storeCode:K,id:U1,type:A8,parentFolderId:M8.getParentId(),versionNumber:M8.getPublishedVersionNumber()})}),{entityId:U1,versionNumber:M8.getPublishedVersionNumber(),content:M8.getPublishedContent(),publishedAt:M8.getUpdatedAt()}},g=async(n1,d1,b1,T8)=>{let{id:U1}=b1,A8=b6.getTypeFromId(U1),M8=await $.discardDraft(n1,d1,b1,T8),B8=A8==="t"?c8.TEMPLATE_DRAFT_DISCARDED:c8.DRAFT_DISCARDED;return T8(`event:draftDiscarded:${U1}`,()=>{Y.notify(B8,{storeCode:K,id:U1})}),M8},S=async(n1,d1,b1)=>{return $.readVersion(n1,d1,b1)},E=async(n1,d1,b1)=>{return $.getVersions(n1,d1,b1)},x=async(n1,d1,b1,T8,U1)=>{return $.findContentByName(n1,d1,b1,T8,U1)},c=async(n1,d1,b1)=>{return $.listContent(n1,d1,b1)},i=async(n1,d1,b1,T8)=>{let U1=await $.setEditState(n1,d1,b1,T8);if(U1.success){let A8=b6.getTypeFromId(b1.id);T8(`event:editStateAcquired:${b1.id}`,()=>{Y.notify(c8.EDIT_STATE_ACQUIRED,{id:b1.id,type:A8,storeCode:K,sessionId:b1.sessionId})})}return U1},t=async(n1,d1,b1)=>{return $.getEditState(n1,d1,b1)},w1=async(n1,d1,b1,T8)=>{await $.clearEditState(n1,d1,b1,T8);let U1=b6.getTypeFromId(b1.id);T8(`event:editStateCleared:${b1.id}`,()=>{Y.notify(c8.EDIT_STATE_CLEARED,{id:b1.id,type:U1,storeCode:K})})},Z1=async(n1,d1,b1,T8)=>{let U1=await $.createFieldDefinition(n1,d1,b1,T8);return T8(`event:fieldDefinitionCreated:${U1.getObjectId()}`,()=>{Y.notify(c8.FIELD_DEFINITION_CREATED,{id:U1.getObjectId(),storeCode:K,name:U1.getName(),ownerEntityId:U1.getOwnerEntityId(),primitiveType:U1.getPrimitiveType()})}),U1},E1=async(n1,d1,b1)=>{return $.readFieldDefinition(n1,d1,b1)},T1=async(n1,d1,b1,T8)=>{return $.findFieldDefinitionByName(n1,d1,b1,T8)},H1=async(n1,d1,b1)=>{return $.getFieldDefinitionsForOwner(n1,d1,b1)},Q1=async(n1,d1,b1)=>{return $.getFieldDefinitionsForEntityType(n1,d1,b1)},L1=async(n1,d1,b1)=>{return $.resolveEntityTypePk(n1,d1,b1)},w8=async(n1,d1,b1)=>{return $.resolveFieldDefinition(n1,d1,b1)},$8=async(n1,d1,b1,T8)=>{let U1=await $.deleteFieldDefinition(n1,d1,b1,T8);return T8(`event:fieldDefinitionDeleted:${U1.getObjectId()}`,()=>{Y.notify(c8.FIELD_DEFINITION_DELETED,{id:U1.getObjectId(),storeCode:K,name:U1.getName()})}),U1},G8=async(n1,d1,b1,T8)=>{let U1=await $.createEntityType(n1,d1,b1,T8);return T8(`event:entityTypeCreated:${U1.id}`,()=>{Y.notify(c8.ENTITY_TYPE_CREATED,{id:U1.id,code:U1.code,subtype:U1.subtype,name:U1.name,storeCode:K})}),U1},W8=async(n1,d1,b1,T8)=>{return $.setFieldValue(n1,d1,b1,T8)},m1=async(n1,d1,b1,T8)=>{let{entityId:U1,fieldName:A8}=b1,{typeCode:M8}=b6.parseId(U1),B8=await $.setFieldValue(n1,d1,b1,T8);return T8(`event:fieldAdded:${U1}`,()=>{Y.notify(c8.FIELD_ADDED,{entityType:M8,entityId:U1,fieldName:A8,value:b1.value??b1.values,storeCode:K})}),B8},e1=async(n1,d1,b1,T8)=>{let{entityId:U1,fieldName:A8,_oldValue:M8}=b1,{typeCode:B8}=b6.parseId(U1),g1=await $.setFieldValue(n1,d1,b1,T8);if(q){let M1=g1.getSubtype?.()??null;await q.notify(n1,d1,{entityId:U1,entityType:B8,entitySubtype:M1,fieldName:A8,oldValue:M8,newValue:b1.value??b1.values},T8)}return T8(`event:fieldValueChanged:${U1}`,()=>{Y.notify(c8.FIELD_VALUE_CHANGED,{entityType:B8,entityId:U1,fieldName:A8,oldValue:M8,newValue:b1.value??b1.values,storeCode:K})}),g1},J1=async(n1,d1,b1)=>{return $.getFieldValue(n1,d1,b1)},q1=async(n1,d1,b1,T8)=>{return $.deleteFieldValue(n1,d1,b1,T8)},A1=async(n1,d1,b1,T8)=>{let{entityId:U1,fieldName:A8}=b1,{typeCode:M8}=b6.parseId(U1),B8=await $.deleteFieldValue(n1,d1,b1,T8);return T8(`event:fieldRemoved:${U1}`,()=>{Y.notify(c8.FIELD_REMOVED,{entityType:M8,entityId:U1,fieldName:A8,storeCode:K})}),B8},n=async(n1,d1,b1,T8)=>{let{parentId:U1,state:A8="prep"}=b1,M8=await $.createStory(n1,d1,b1,T8);return T8(`event:storyCreated:${M8.getObjectId()}`,()=>{Y.notify(c8.STORY_CREATED,{id:M8.getObjectId(),storeCode:K,name:M8.getName(),path:M8.getPath(),parentFolderId:U1,state:A8})}),M8},j1=async(n1,d1,b1)=>{return $.readStory(n1,d1,b1)},N1=async(n1,d1,b1)=>{return $.listStories(n1,d1,b1)},x1=async(n1,d1,b1,T8)=>{let{id:U1}=b1,{entity:A8,oldValues:M8}=await $.renameStory(n1,d1,b1,T8);return T8(`event:storyRenamed:${U1}`,()=>{Y.notify(c8.STORY_RENAMED,{id:U1,storeCode:K,name:A8.getName(),path:A8.getPath()})}),{entity:A8,oldValues:M8}},a1=async(n1,d1,b1,T8)=>{let{id:U1}=b1,M8=(await $.readStory(n1,d1,{id:U1}))?.getParentId()??null,B8=await $.deleteStory(n1,d1,b1,T8);return T8(`event:storyDeleted:${U1}`,()=>{Y.notify(c8.STORY_DELETED,{id:U1,storeCode:K,path:B8.path,parentFolderId:M8,descendantCount:B8.descendantCount})}),B8},K8=async(n1,d1,b1)=>{return $.readStoryRootFolder(n1,d1,b1)},y1=async(n1,d1,b1)=>{return $.findEntitiesByFieldValue(n1,d1,b1)},h1=async(n1,d1,b1)=>{return $.findEntitiesByObjectRefFieldValue(n1,d1,b1)},z8=async(n1,d1,b1)=>{return $.searchTextFields(n1,d1,b1)},E8=async(n1,d1,b1)=>{return $.searchContent(n1,d1,b1)},r1=async(n1,d1,b1,T8)=>{let{parentId:U1,status:A8="pending"}=b1,M8=await $.createJob(n1,d1,b1,T8);return T8(`event:jobCreated:${M8.getObjectId()}`,()=>{Y.notify(c8.JOB_CREATED,{id:M8.getObjectId(),storeCode:K,name:M8.getName(),path:M8.getPath(),parentFolderId:U1,status:A8})}),M8},X8=async(n1,d1,b1)=>{return $.readJob(n1,d1,b1)},o8=async(n1,d1,b1)=>{return $.listJobs(n1,d1,b1)},$6=async(n1,d1,b1,T8)=>{let{id:U1}=b1,M8=(await $.readJob(n1,d1,{id:U1}))?.getParentId()??null,B8=await $.deleteJob(n1,d1,b1,T8);return T8(`event:jobDeleted:${U1}`,()=>{Y.notify(c8.JOB_DELETED,{id:U1,storeCode:K,path:B8.path,parentFolderId:M8,descendantCount:B8.descendantCount})}),B8},v6=async(n1,d1,b1)=>{return $.readJobRootFolder(n1,d1,b1)},H6=async(n1,d1,b1)=>{return $.readSettingsRootFolder(n1,d1,b1)},x6=async(n1,d1,b1,T8)=>{let U1=await $.createAsset(n1,d1,b1,T8);return T8(`event:assetCreated:${U1.getObjectId()}`,()=>{Y.notify(c8.ASSET_CREATED,{id:U1.getObjectId(),storeCode:K,hash:U1.getHash(),mimeType:U1.getMimeType(),originalFilename:U1.getOriginalFilename()})}),U1},q6=async(n1,d1,b1)=>{return $.readAsset(n1,d1,b1)},Y6=async(n1,d1,b1)=>{return $.listAssets(n1,d1,b1)},n4=async(n1,d1,b1,T8)=>{let{id:U1}=b1,A8=await $.deleteAsset(n1,d1,b1,T8);return T8(`event:assetDeleted:${U1}`,()=>{Y.notify(c8.ASSET_DELETED,{id:U1,storeCode:K,hash:A8.hash})}),A8},Q6=async(n1,d1,b1)=>{return $.readEntity(n1,d1,b1)},S4=(n1)=>{q=n1};return Object.freeze({getObjectId:$.getObjectId,getName:$.getName,getCreatedAt:$.getCreatedAt,getUpdatedAt:$.getUpdatedAt,getCodes:$.getCodes,getType:$.getType,getCode:$.getCode,getPk:$.getPk,toJSON:$.toJSON,createFolder:J,readFolder:W,updateFolder:Z,deleteFolder:O,listFolderContents:H,getFolderByPath:X,findFolderByName:w,readRootFolderForType:G,isDuplicateNameInParent:T,createContent:P,readContent:v,updateContent:V,updateEntityType:j,deleteTypeScopedFieldValues:D,deleteContent:f,saveDraft:h,readDraft:L,publishContent:k,discardDraft:g,readVersion:S,getVersions:E,findContentByName:x,listContent:c,setEditState:i,getEditState:t,clearEditState:w1,createFieldDefinition:Z1,readFieldDefinition:E1,findFieldDefinitionByName:T1,getFieldDefinitionsForOwner:H1,getFieldDefinitionsForEntityType:Q1,resolveEntityTypePk:L1,resolveFieldDefinition:w8,deleteFieldDefinition:$8,updateFieldDefinitionConfig:$.updateFieldDefinitionConfig,addClassAssociation:$.addClassAssociation,createEntityType:G8,setFieldValue:W8,addFieldToEntity:m1,updateFieldValue:e1,getFieldValue:J1,deleteFieldValue:q1,removeFieldFromEntity:A1,createStory:n,renameStory:x1,readStory:j1,listStories:N1,deleteStory:a1,readStoryRootFolder:K8,createJob:r1,readJob:X8,listJobs:o8,deleteJob:$6,readJobRootFolder:v6,readSettingsRootFolder:H6,readSetting:$.readSetting,listSettings:$.listSettings,findSettingByName:$.findSettingByName,createSetting:$.createSetting,updateSettingPath:$.updateSettingPath,deleteSetting:$.deleteSetting,findEntitiesByFieldValue:y1,findEntitiesByObjectRefFieldValue:h1,searchTextFields:z8,searchContent:E8,createAsset:x6,readAsset:q6,listAssets:Y6,deleteAsset:n4,readEntity:Q6,evictFolder:$.evictFolder,evictContent:$.evictContent,evictStory:$.evictStory,evictJob:$.evictJob,evictEntitiesById:$.evictEntitiesById,clearListCaches:$.clearListCaches,backfillVersionContentRefs:$.backfillVersionContentRefs,listDeletedItems:$.listDeletedItems,restoreEntity:C,subscribe:Y.subscribe,subscribeAll:Y.subscribeAll,setFieldHooks:S4})},JA1=Object.freeze({create:Ei8});h6();var JF={};J0(JF,{applyPojo_v:()=>ui8,applyPojo_t:()=>Si8,applyPojo_s:()=>Ii8,applyPojo_j:()=>xi8,applyPojo_f:()=>hi8,applyPojo_d:()=>Li8,applyPojo_a:()=>gi8});var Li8=($,K,q)=>{if(q.name!==void 0)K.setName(q.name);if(q.updatedAt!==void 0)K.setUpdatedAt(q.updatedAt);if(q.parentId!==void 0)K.setParentId(q.parentId);if(q.path!==void 0)K.setPath(q.path);if(q.publishedVersionNumber!==void 0)K.setPublishedVersionNumber(q.publishedVersionNumber);if(q.hasDraft!==void 0)K.setHasDraft(q.hasDraft);if(q.draftContent!==void 0)K.setDraftContent(q.draftContent);if(q.publishedContent!==void 0)K.setPublishedContent(q.publishedContent);if(q.editState!==void 0)K.setEditState(q.editState);if(q.fields){for(let[Y,z]of Object.entries(q.fields)){let J=x3.create({definition:z.definition,values:z.values});K.setField(Y,J)}for(let Y of Object.keys($.getFields())){if(t0.has(Y))continue;if(!(Y in q.fields))K.removeField(Y)}}},Si8=($,K,q)=>{if(q.name!==void 0)K.setName(q.name);if(q.updatedAt!==void 0)K.setUpdatedAt(q.updatedAt);if(q.parentId!==void 0)K.setParentId(q.parentId);if(q.path!==void 0)K.setPath(q.path);if(q.publishedVersionNumber!==void 0)K.setPublishedVersionNumber(q.publishedVersionNumber);if(q.hasDraft!==void 0)K.setHasDraft(q.hasDraft);if(q.draftContent!==void 0)K.setDraftContent(q.draftContent);if(q.publishedContent!==void 0)K.setPublishedContent(q.publishedContent);if(q.editState!==void 0)K.setEditState(q.editState);if(q.fields){for(let[Y,z]of Object.entries(q.fields)){let J=x3.create({definition:z.definition,values:z.values});K.setField(Y,J)}for(let Y of Object.keys($.getFields())){if(t0.has(Y))continue;if(!(Y in q.fields))K.removeField(Y)}}},hi8=($,K,q)=>{if(q.name!==void 0)K.setName(q.name);if(q.updatedAt!==void 0)K.setUpdatedAt(q.updatedAt);if(q.parentId!==void 0)K.setParentId(q.parentId);if(q.path!==void 0)K.setPath(q.path);if(q.fields){for(let[Y,z]of Object.entries(q.fields)){let J=x3.create({definition:z.definition,values:z.values});K.setField(Y,J)}for(let Y of Object.keys($.getFields())){if(t0.has(Y))continue;if(!(Y in q.fields))K.removeField(Y)}}},Ii8=($,K,q)=>{if(q.name!==void 0)K.setName(q.name);if(q.updatedAt!==void 0)K.setUpdatedAt(q.updatedAt);if(q.parentId!==void 0)K.setParentId(q.parentId);if(q.path!==void 0)K.setPath(q.path);if(q.fields){for(let[Y,z]of Object.entries(q.fields)){let J=x3.create({definition:z.definition,values:z.values});K.setField(Y,J)}for(let Y of Object.keys($.getFields())){if(t0.has(Y))continue;if(!(Y in q.fields))K.removeField(Y)}}},xi8=($,K,q)=>{if(q.name!==void 0)K.setName(q.name);if(q.updatedAt!==void 0)K.setUpdatedAt(q.updatedAt);if(q.parentId!==void 0)K.setParentId(q.parentId);if(q.path!==void 0)K.setPath(q.path);if(q.fields){for(let[Y,z]of Object.entries(q.fields)){let J=x3.create({definition:z.definition,values:z.values});K.setField(Y,J)}for(let Y of Object.keys($.getFields())){if(t0.has(Y))continue;if(!(Y in q.fields))K.removeField(Y)}}},gi8=($,K,q)=>{if(q.name!==void 0)K.setName(q.name);if(q.updatedAt!==void 0)K.setUpdatedAt(q.updatedAt);if(q.fields){for(let[Y,z]of Object.entries(q.fields)){let J=x3.create({definition:z.definition,values:z.values});K.setField(Y,J)}for(let Y of Object.keys($.getFields())){if(t0.has(Y))continue;if(!(Y in q.fields))K.removeField(Y)}}},ui8=($,K,q)=>{if(q.name!==void 0)K.setName(q.name);if(q.updatedAt!==void 0)K.setUpdatedAt(q.updatedAt);if(q.fields){for(let[Y,z]of Object.entries(q.fields)){let J=x3.create({definition:z.definition,values:z.values});K.setField(Y,J)}for(let Y of Object.keys($.getFields())){if(t0.has(Y))continue;if(!(Y in q.fields))K.removeField(Y)}}};var yi8=Object.freeze({d:dD,t:aD,f:p7,s:$Y,j:OX,a:HX,v:oD}),bi8=($)=>{let{entity:K}=Dq.create({id:`virtual:${$.name}`,name:$.name,label:$.label,description:$.description,primitiveType:$.primitiveType,required:!1,multiplicity:"single",isSystem:!0,isVirtual:!0,editable:$.editable});return K},mi8=Object.freeze(Object.fromEntries(G$.filter(($)=>!$.searchOnly).map(($)=>[$.name,bi8($)]))),Bi8=($)=>{let K={id:$.object_id??$.id,name:$.name,createdAt:$.created_at??$.createdAt,updatedAt:$.updated_at??$.updatedAt};if($.parent_folder_id!==void 0)K.parentId=$.parent_folder_id;else if($.parentId!==void 0)K.parentId=$.parentId;if($.path!==void 0)K.path=$.path;if($.published_version_number!==void 0)K.publishedVersionNumber=$.published_version_number;else if($.publishedVersionNumber!==void 0)K.publishedVersionNumber=$.publishedVersionNumber;if($.has_draft!==void 0)K.hasDraft=$.has_draft===1||$.has_draft===!0;else if($.hasDraft!==void 0)K.hasDraft=$.hasDraft;if($.draft_content!==void 0)K.draftContent=$.draft_content;else if($.draftContent!==void 0)K.draftContent=$.draftContent;if($.published_content!==void 0)K.publishedContent=$.published_content;else if($.publishedContent!==void 0)K.publishedContent=$.publishedContent;if($.subtype!==void 0)K.subtype=$.subtype;if($.edit_state!==void 0)K.editState=$.edit_state;else if($.editState!==void 0)K.editState=$.editState;return K},Ui8=($)=>{let K=new Map;for(let q of G$){let Y=$[q.columnName];if(Y===void 0){if(q.name==="parent"&&$.parentId!==void 0)Y=$.parentId;else if(q.name==="created_at"&&$.createdAt!==void 0)Y=$.createdAt;else if(q.name==="updated_at"&&$.updatedAt!==void 0)Y=$.updatedAt}if(Y!==void 0&&Y!==null){let z=mi8[q.name],J=x3.create({definition:z,values:[String(Y)]});K.set(q.name,J)}}return K},ci8=()=>{return Object.freeze({createEntity:(K)=>{let q=K.typeCode??K.type_code??K.type,Y=yi8[q];if(!Y)throw I.validation(`No factory for typeCode: ${q}`,"UNKNOWN_TYPE_CODE");let z=Bi8(K),{entity:J,mutationApi:W}=Y.create(z),Z=Ui8(K);for(let[X,w]of Z)W.setField(X,w);let O=JF[`applyPojo_${q}`],H=Object.freeze({...W,applyPojo:(X)=>O(J,W,X)});return{entity:J,mutationApi:H}}})},WA1=Object.freeze({create:ci8});var Fi8=($)=>{let{id:K,code:q,name:Y,pk:z,createdAt:J,updatedAt:W}=$,Z=tc.create(),O=tc.create(),{store:H,mutationApi:X}=YA1.create({id:K,code:q,name:Y,pk:z,createdAt:J,updatedAt:W,entityCache:Z}),w=WA1.create(),G=zA1.create({inner:H,entityCache:Z,fieldDefinitionCache:O,entityFactory:w});return{store:JA1.create({inner:G,storeCode:q}),mutationApi:X}},ZA1=Object.freeze({create:Fi8});h6();var pi8=({id:$,name:K,createdAt:q,updatedAt:Y,children:z=[]})=>{let J=[...z],W=new Map,{entityFns:Z,mutationFns:O}=fq.create({id:$,name:K,createdAt:q,updatedAt:Y}),H=()=>{W.clear();for(let m of J){let p=m.getCodes();for(let b of p)W.set(b,m)}};H();let X=()=>"demux",w=()=>J.map((m)=>m.getObjectId()),G=()=>[...J],T=()=>{return new Set(W.keys())},P=()=>({id:$,name:K,createdAt:q,updatedAt:Y,type:"demux",childIds:w()}),v=(m)=>{J.push(m),H()},V=(m)=>{return W.get(m)??null},j=async(m,p,{store:b,storeCode:Q,parentId:l,name:a,subtype:_1},O1)=>{let V1=b??Q;U.factory(!V1,I.validation,"store parameter is required","MISSING_STORE_CODE");let v1=V(V1);return U.factory(!v1,I.notFound,`No child store with code: ${V1}`,"STORE_NOT_FOUND"),v1.createFolder(m,p,{storeCode:V1,parentId:l,name:a,subtype:_1},O1)},D=async(m,p,{id:b})=>{let Q=b?.[0],l=V(Q);if(!l)return null;return l.readFolder(m,p,{id:b})},F=Object.freeze({...Z,getType:X,getCodes:T,getChildIds:w,getChildren:G,toJSON:P,createFolder:j,readFolder:D,updateFolder:async(m,p,{id:b,name:Q,parentId:l},a)=>{let _1=b?.[0],O1=V(_1);return U.factory(!O1,I.notFound,`No child store with code: ${_1}`,"STORE_NOT_FOUND"),O1.updateFolder(m,p,{id:b,name:Q,parentId:l},a)},deleteFolder:async(m,p,{id:b},Q)=>{let l=b?.[0],a=V(l);return U.factory(!a,I.notFound,`No child store with code: ${l}`,"STORE_NOT_FOUND"),a.deleteFolder(m,p,{id:b},Q)},evictFolder:(m)=>{let p=m?.[0],b=V(p);if(b)b.evictFolder(m)},evictContent:(m)=>{let p=m?.[0],b=V(p);if(b)b.evictContent(m)},evictStory:(m)=>{let p=m?.[0],b=V(p);if(b)b.evictStory(m)},evictJob:(m)=>{let p=m?.[0],b=V(p);if(b)b.evictJob(m)},clearListCaches:()=>{for(let m of J)m.clearListCaches()},evictEntitiesById:(m)=>{for(let p of J)p.evictEntitiesById(m)},getFolder:async(m,p,{id:b})=>{return D(m,p,{id:b})},listFolderContents:async(m,p,{folderId:b,store:Q,storeCode:l,type:a})=>{let _1;if(b!==null&&b!==void 0)_1=b[0];else{let v1=Q??l;U.factory(!v1,I.validation,"store required when folderId is null","STORE_CODE_REQUIRED"),_1=v1}let O1=V(_1);U.factory(!O1,I.notFound,`No child store with code: ${_1}`,"STORE_NOT_FOUND");let V1={...p,storeCode:_1};return O1.listFolderContents(m,V1,{folderId:b,type:a})},getFolderByPath:async(m,p,{path:b,type:Q,store:l,storeCode:a})=>{let _1=l??a;U.factory(!_1,I.validation,"store required for getFolderByPath","STORE_CODE_REQUIRED");let O1=V(_1);if(!O1)return null;let V1={...p,storeCode:_1};return O1.getFolderByPath(m,V1,{path:b,type:Q})},isDuplicateNameInParent:async(m,p,b,Q,l=null)=>{let a;if(b)a=b[0];else{let O1=J[0];if(!O1)U.factory(!0,I.notFound,"No child stores available","STORE_NOT_FOUND");a=[...O1.getCodes()][0]}let _1=V(a);return U.factory(!_1,I.notFound,`No child store with code: ${a}`,"STORE_NOT_FOUND"),_1.isDuplicateNameInParent(m,p,b,Q,l)},findFolderByName:async(m,p,b,Q)=>{let l=b[0],a=V(l);if(!a)return null;return a.findFolderByName(m,p,b,Q)},readRootFolderForType:async(m,p,b,Q)=>{let l=V(Q);return U.factory(!l,I.notFound,`No child store with code: ${Q}`,"STORE_NOT_FOUND"),l.readRootFolderForType(m,p,b,Q)},createFieldDefinition:async(m,p,{storeCode:b,ownerEntityId:Q,ownerEntityTypePk:l,name:a,label:_1,description:O1,primitiveType:V1,required:v1,multiplicity:o1,isSystem:q8,allowed:j8},R8)=>{let l8=V(b);return U.factory(!l8,I.notFound,`No child store with code: ${b}`,"STORE_NOT_FOUND"),l8.createFieldDefinition(m,p,{storeCode:b,ownerEntityId:Q,ownerEntityTypePk:l,name:a,label:_1,description:O1,primitiveType:V1,required:v1,multiplicity:o1,isSystem:q8,allowed:j8},R8)},readFieldDefinition:async(m,p,{id:b})=>{let Q=b?.[0],l=V(Q);if(!l)return null;return l.readFieldDefinition(m,p,{id:b})},getFieldDefinitionsForOwner:async(m,p,{storeCode:b,ownerEntityPk:Q,includeSystem:l})=>{let a=V(b);return U.factory(!a,I.notFound,`No child store with code: ${b}`,"STORE_NOT_FOUND"),a.getFieldDefinitionsForOwner(m,p,{ownerEntityPk:Q,includeSystem:l})},getFieldDefinitionsForEntityType:async(m,p,{storeCode:b,code:Q,subtype:l})=>{let a=V(b);return U.factory(!a,I.notFound,`No child store with code: ${b}`,"STORE_NOT_FOUND"),a.getFieldDefinitionsForEntityType(m,p,{code:Q,subtype:l})},resolveEntityTypePk:async(m,p,{storeCode:b,code:Q,subtype:l})=>{let a=V(b);return U.factory(!a,I.notFound,`No child store with code: ${b}`,"STORE_NOT_FOUND"),a.resolveEntityTypePk(m,p,{code:Q,subtype:l})},resolveFieldDefinition:async(m,p,{storeCode:b,fieldDefinitionId:Q,fieldName:l,ownerEntityPk:a,entityTypePk:_1})=>{let O1=V(b);return U.factory(!O1,I.notFound,`No child store with code: ${b}`,"STORE_NOT_FOUND"),O1.resolveFieldDefinition(m,p,{fieldDefinitionId:Q,fieldName:l,ownerEntityPk:a,entityTypePk:_1})},deleteFieldDefinition:async(m,p,{id:b},Q)=>{let l=b?.[0],a=V(l);return U.factory(!a,I.notFound,`No child store with code: ${l}`,"STORE_NOT_FOUND"),a.deleteFieldDefinition(m,p,{id:b},Q)},updateFieldDefinitionConfig:async(m,p,{id:b,config:Q})=>{let l=b?.[0],a=V(l);return U.factory(!a,I.notFound,`No child store with code: ${l}`,"STORE_NOT_FOUND"),a.updateFieldDefinitionConfig(m,p,{id:b,config:Q})},addClassAssociation:async(m,p,{fieldDefinitionId:b,entityTypePk:Q,required:l,sortOrder:a,rows:_1,colspan:O1,description:V1})=>{let v1=b?.[0],o1=V(v1);return U.factory(!o1,I.notFound,`No child store with code: ${v1}`,"STORE_NOT_FOUND"),o1.addClassAssociation(m,p,{fieldDefinitionId:b,entityTypePk:Q,required:l,sortOrder:a,rows:_1,colspan:O1,description:V1})},createEntityType:async(m,p,{code:b,subtype:Q,name:l,parentTypePk:a},_1)=>{let O1=J[0];return U.factory(!O1,I.notFound,"No child stores available","NO_CHILD_STORES"),O1.createEntityType(m,p,{code:b,subtype:Q,name:l,parentTypePk:a},_1)},setFieldValue:async(m,p,{entityId:b,fieldDefinitionId:Q,fieldName:l,value:a,values:_1},O1)=>{let V1=b?.[0],v1=V(V1);return U.factory(!v1,I.notFound,`No child store with code: ${V1}`,"STORE_NOT_FOUND"),v1.setFieldValue(m,p,{entityId:b,fieldDefinitionId:Q,fieldName:l,value:a,values:_1},O1)},deleteFieldValue:async(m,p,{entityId:b,fieldDefinitionId:Q,fieldName:l},a)=>{let _1=b?.[0],O1=V(_1);return U.factory(!O1,I.notFound,`No child store with code: ${_1}`,"STORE_NOT_FOUND"),O1.deleteFieldValue(m,p,{entityId:b,fieldDefinitionId:Q,fieldName:l},a)},getFieldValue:async(m,p,{entityId:b,fieldDefinitionId:Q,fieldName:l})=>{let a=b?.[0],_1=V(a);if(!_1)return null;return _1.getFieldValue(m,p,{entityId:b,fieldDefinitionId:Q,fieldName:l})},addFieldToEntity:async(m,p,b,Q)=>{let l=b.entityId?.[0],a=V(l);return U.factory(!a,I.notFound,`No child store with code: ${l}`,"STORE_NOT_FOUND"),a.addFieldToEntity(m,p,b,Q)},updateFieldValue:async(m,p,b,Q)=>{let l=b.entityId?.[0],a=V(l);return U.factory(!a,I.notFound,`No child store with code: ${l}`,"STORE_NOT_FOUND"),a.updateFieldValue(m,p,b,Q)},removeFieldFromEntity:async(m,p,b,Q)=>{let l=b.entityId?.[0],a=V(l);return U.factory(!a,I.notFound,`No child store with code: ${l}`,"STORE_NOT_FOUND"),a.removeFieldFromEntity(m,p,b,Q)},createContent:async(m,p,{storeCode:b,type:Q,...l},a)=>{let _1=V(b);return U.factory(!_1,I.notFound,`No child store with code: ${b}`,"STORE_NOT_FOUND"),_1.createContent(m,p,{type:Q,storeCode:b,...l},a)},readContent:async(m,p,{id:b})=>{let Q=b?.[0],l=V(Q);if(!l)return null;return l.readContent(m,p,{id:b})},updateContent:async(m,p,{id:b,...Q},l)=>{let a=b?.[0],_1=V(a);return U.factory(!_1,I.notFound,`No child store with code: ${a}`,"STORE_NOT_FOUND"),_1.updateContent(m,p,{id:b,...Q},l)},updateEntityType:async(m,p,{id:b,subtype:Q},l)=>{let a=b?.[0],_1=V(a);return U.factory(!_1,I.notFound,`No child store with code: ${a}`,"STORE_NOT_FOUND"),_1.updateEntityType(m,p,{id:b,subtype:Q},l)},deleteTypeScopedFieldValues:async(m,p,{entityId:b,entityTypePk:Q})=>{let l=b?.[0],a=V(l);return U.factory(!a,I.notFound,`No child store with code: ${l}`,"STORE_NOT_FOUND"),a.deleteTypeScopedFieldValues(m,p,{entityId:b,entityTypePk:Q})},deleteContent:async(m,p,{id:b},Q)=>{let l=b?.[0],a=V(l);return U.factory(!a,I.notFound,`No child store with code: ${l}`,"STORE_NOT_FOUND"),a.deleteContent(m,p,{id:b},Q)},saveDraft:async(m,p,{id:b,content:Q,sessionId:l},a)=>{let _1=b?.[0],O1=V(_1);return U.factory(!O1,I.notFound,`No child store with code: ${_1}`,"STORE_NOT_FOUND"),O1.saveDraft(m,p,{id:b,content:Q,sessionId:l},a)},readDraft:async(m,p,{id:b})=>{let Q=b?.[0],l=V(Q);if(!l)return null;return l.readDraft(m,p,{id:b})},publishContent:async(m,p,{id:b,sessionId:Q},l)=>{let a=b?.[0],_1=V(a);return U.factory(!_1,I.notFound,`No child store with code: ${a}`,"STORE_NOT_FOUND"),_1.publishContent(m,p,{id:b,sessionId:Q},l)},discardDraft:async(m,p,{id:b},Q)=>{let l=b?.[0],a=V(l);return U.factory(!a,I.notFound,`No child store with code: ${l}`,"STORE_NOT_FOUND"),a.discardDraft(m,p,{id:b},Q)},findContentByName:async(m,p,b,Q,l)=>{let a=b?.[0],_1=V(a);if(!_1)return null;return _1.findContentByName(m,p,b,Q,l)},listContent:async(m,p,{parentId:b,storeCode:Q,type:l})=>{let a,_1;if(b)a=b[0],_1=b;else{U.factory(!Q,I.validation,"storeCode required when parentId is null","MISSING_STORE_CODE"),a=Q;let V1=V(a);U.factory(!V1,I.notFound,`No child store with code: ${a}`,"STORE_NOT_FOUND");try{_1=(await V1.readRootFolderForType(m,p,l||"d",a)).getObjectId()}catch(v1){_1=null}}let O1=V(a);return U.factory(!O1,I.notFound,`No child store with code: ${a}`,"STORE_NOT_FOUND"),O1.listContent(m,p,{parentId:_1,type:l})},setEditState:async(m,p,{id:b,sessionId:Q},l)=>{let a=b?.[0],_1=V(a);return U.factory(!_1,I.notFound,`No child store with code: ${a}`,"STORE_NOT_FOUND"),_1.setEditState(m,p,{id:b,sessionId:Q},l)},clearEditState:async(m,p,{id:b},Q)=>{let l=b?.[0],a=V(l);return U.factory(!a,I.notFound,`No child store with code: ${l}`,"STORE_NOT_FOUND"),a.clearEditState(m,p,{id:b},Q)},getEditState:async(m,p,{id:b})=>{let Q=b?.[0],l=V(Q);if(!l)return null;return l.getEditState(m,p,{id:b})},readVersion:async(m,p,{id:b,versionNumber:Q})=>{let l=b?.[0],a=V(l);if(!a)return null;return a.readVersion(m,p,{id:b,versionNumber:Q})},getVersions:async(m,p,{id:b})=>{let Q=b?.[0],l=V(Q);if(!l)return[];return l.getVersions(m,p,{id:b})},createStory:async(m,p,{storeCode:b,...Q},l)=>{let a=V(b);return U.factory(!a,I.notFound,`No child store with code: ${b}`,"STORE_NOT_FOUND"),a.createStory(m,p,{storeCode:b,...Q},l)},renameStory:async(m,p,{id:b,name:Q},l)=>{let a=b?.[0],_1=V(a);return U.factory(!_1,I.notFound,`No child store with code: ${a}`,"STORE_NOT_FOUND"),_1.renameStory(m,p,{id:b,name:Q},l)},readStory:async(m,p,{id:b})=>{let Q=b?.[0],l=V(Q);if(!l)return null;return l.readStory(m,p,{id:b})},listStories:async(m,p,{storeCode:b})=>{let Q=V(b);return U.factory(!Q,I.notFound,`No child store with code: ${b}`,"STORE_NOT_FOUND"),Q.listStories(m,p,{storeCode:b})},deleteStory:async(m,p,{id:b},Q)=>{let l=b?.[0],a=V(l);return U.factory(!a,I.notFound,`No child store with code: ${l}`,"STORE_NOT_FOUND"),a.deleteStory(m,p,{id:b},Q)},readStoryRootFolder:async(m,p,{storeCode:b})=>{let Q=V(b);return U.factory(!Q,I.notFound,`No child store with code: ${b}`,"STORE_NOT_FOUND"),Q.readStoryRootFolder(m,p,{storeCode:b})},createJob:async(m,p,{storeCode:b,...Q},l)=>{let a=V(b);return U.factory(!a,I.notFound,`No child store with code: ${b}`,"STORE_NOT_FOUND"),a.createJob(m,p,{storeCode:b,...Q},l)},readJob:async(m,p,{id:b})=>{let Q=b?.[0],l=V(Q);if(!l)return null;return l.readJob(m,p,{id:b})},listJobs:async(m,p,{storeCode:b})=>{let Q=V(b);return U.factory(!Q,I.notFound,`No child store with code: ${b}`,"STORE_NOT_FOUND"),Q.listJobs(m,p,{storeCode:b})},deleteJob:async(m,p,{id:b},Q)=>{let l=b?.[0],a=V(l);return U.factory(!a,I.notFound,`No child store with code: ${l}`,"STORE_NOT_FOUND"),a.deleteJob(m,p,{id:b},Q)},readJobRootFolder:async(m,p,{storeCode:b})=>{let Q=V(b);return U.factory(!Q,I.notFound,`No child store with code: ${b}`,"STORE_NOT_FOUND"),Q.readJobRootFolder(m,p,{storeCode:b})},readSettingsRootFolder:async(m,p,{storeCode:b})=>{let Q=V(b);return U.factory(!Q,I.notFound,`No child store with code: ${b}`,"STORE_NOT_FOUND"),Q.readSettingsRootFolder(m,p,{storeCode:b})},readSetting:async(m,p,{id:b,storeCode:Q})=>{let l=Q??b.charAt(0),a=V(l);return U.factory(!a,I.notFound,`No child store with code: ${l}`,"STORE_NOT_FOUND"),a.readSetting(m,p,{id:b,storeCode:l})},listSettings:async(m,p,{parentId:b,storeCode:Q,subtype:l})=>{let a=Q??b?.charAt(0),_1=V(a);return U.factory(!_1,I.notFound,`No child store with code: ${a}`,"STORE_NOT_FOUND"),_1.listSettings(m,p,{parentId:b,storeCode:a,subtype:l})},findSettingByName:async(m,p,b,Q)=>{let l=b?.charAt(0),a=V(l);return U.factory(!a,I.notFound,`No child store with code: ${l}`,"STORE_NOT_FOUND"),a.findSettingByName(m,p,b,Q)},createSetting:async(m,p,{storeCode:b,...Q},l)=>{let a=V(b);return U.factory(!a,I.notFound,`No child store with code: ${b}`,"STORE_NOT_FOUND"),a.createSetting(m,p,{storeCode:b,...Q},l)},updateSettingPath:async(m,p,{id:b,...Q})=>{let l=b?.charAt(0),a=V(l);return U.factory(!a,I.notFound,`No child store with code: ${l}`,"STORE_NOT_FOUND"),a.updateSettingPath(m,p,{id:b,...Q})},deleteSetting:async(m,p,{id:b,storeCode:Q})=>{let l=Q??b?.charAt(0),a=V(l);return U.factory(!a,I.notFound,`No child store with code: ${l}`,"STORE_NOT_FOUND"),a.deleteSetting(m,p,{id:b,storeCode:l})},findEntitiesByFieldValue:async(m,p,{storeCode:b,typeCode:Q,subtype:l,fieldName:a,fieldValue:_1})=>{let O1=V(b);return U.factory(!O1,I.notFound,`No child store with code: ${b}`,"STORE_NOT_FOUND"),O1.findEntitiesByFieldValue(m,p,{typeCode:Q,subtype:l,fieldName:a,fieldValue:_1})},findEntitiesByObjectRefFieldValue:async(m,p,{storeCode:b,typeCode:Q,subtype:l,fieldName:a,targetEntityId:_1})=>{let O1=V(b);return U.factory(!O1,I.notFound,`No child store with code: ${b}`,"STORE_NOT_FOUND"),O1.findEntitiesByObjectRefFieldValue(m,p,{typeCode:Q,subtype:l,fieldName:a,targetEntityId:_1})},searchTextFields:async(m,p,{query:b,fieldName:Q,storeCode:l})=>{let a=V(l);return U.factory(!a,I.notFound,`No child store with code: ${l}`,"STORE_NOT_FOUND"),a.searchTextFields(m,p,{query:b,fieldName:Q})},searchContent:async(m,p,{storeCode:b,...Q})=>{let l=V(b);return U.factory(!l,I.notFound,`No child store with code: ${b}`,"STORE_NOT_FOUND"),l.searchContent(m,p,Q)},createAsset:async(m,p,{storeCode:b,...Q},l)=>{let a=V(b);return U.factory(!a,I.notFound,`No child store with code: ${b}`,"STORE_NOT_FOUND"),a.createAsset(m,p,{storeCode:b,...Q},l)},readAsset:async(m,p,{id:b})=>{let Q=b?.[0],l=V(Q);if(!l)return null;return l.readAsset(m,p,{id:b})},listAssets:async(m,p,{storeCode:b})=>{let Q=V(b);return U.factory(!Q,I.notFound,`No child store with code: ${b}`,"STORE_NOT_FOUND"),Q.listAssets(m,p,{storeCode:b})},deleteAsset:async(m,p,{id:b},Q)=>{let l=b?.[0],a=V(l);return U.factory(!a,I.notFound,`No child store with code: ${l}`,"STORE_NOT_FOUND"),a.deleteAsset(m,p,{id:b},Q)},readEntity:async(m,p,{id:b})=>{let Q=b?.[0],l=V(Q);if(!l)return null;return l.readEntity(m,p,{id:b})},subscribe:(m,p)=>{let b=J.map((Q)=>Q.subscribe(m,p));return()=>b.forEach((Q)=>Q())},subscribeAll:(m)=>{let p=J.map((b)=>b.subscribeAll(m));return()=>p.forEach((b)=>b())},setFieldHooks:(m)=>{for(let p of J)if(p.setFieldHooks)p.setFieldHooks(m)},backfillVersionContentRefs:async(m,p,b)=>{let Q=await m.selectFrom("entities").innerJoin("string_fields","string_fields.entity_id","entities.store_id").innerJoin("field_definitions","field_definitions.id","string_fields.field_definition_id").select("string_fields.value as storeCode").where("entities.id","=",b).where("field_definitions.name","=","code").executeTakeFirst();if(!Q)throw I.notFound(`Version entity not found: pk=${b}`,"VERSION_NOT_FOUND");let l=V(Q.storeCode);if(!l)throw I.notFound(`No child store for version's store code: ${Q.storeCode}`,"STORE_NOT_FOUND");return l.backfillVersionContentRefs(m,p,b)},listDeletedItems:async(m,p,{storeCode:b,...Q}={})=>{let l=V(b);return U.factory(!l,I.notFound,`No child store with code: ${b}`,"STORE_NOT_FOUND"),l.listDeletedItems(m,p,Q)},restoreEntity:async(m,p,{id:b},Q)=>{let l=b?.[0],a=V(l);return U.factory(!a,I.notFound,`No child store with code: ${l}`,"STORE_NOT_FOUND"),a.restoreEntity(m,p,{id:b},Q)}}),i1=Object.freeze({...O,addChild:v});return{store:F,mutationApi:i1}},OA1=Object.freeze({create:pi8});AK();h6();var HA=($)=>{if(!$||$.length<2||$[0]!=="S")return null;let K=parseInt($.slice(1),10);return isNaN(K)?null:K},ZF=($)=>$.object_id,Qi8=async($,K)=>{let q=await $.selectFrom("field_definitions").select("id").where("name","=","code").where("store_id","is",null).where("is_system","=",1).executeTakeFirst();if(!q)return null;return(await $.selectFrom("string_fields").select("value").where("entity_id","=",K).where("field_definition_id","=",q.id).executeTakeFirst())?.value??null},li8=async($,K,q)=>{let Y=await $.selectFrom("field_definitions").select("id").where("name","=","code").where("store_id","is",null).where("is_system","=",1).executeTakeFirstOrThrow();await $.insertInto("string_fields").values({entity_id:K,field_definition_id:Y.id,value:q,ordinal:0}).execute()},WF=($,K)=>{let q=ZF($),Y=$.id,{store:z,mutationApi:J}=ZA1.create({id:q,code:K,name:$.name,createdAt:$.created_at,updatedAt:$.updated_at,pk:Y});return{store:z,mutationApi:J,id:q,pk:Y}},HA1=($,K)=>{let q=ZF($),Y=$.id,{store:z,mutationApi:J}=OA1.create({id:q,name:$.name,createdAt:$.created_at,updatedAt:$.updated_at,children:K});return{store:z,mutationApi:J,id:q,pk:Y}},ii8=async($,K,q,Y)=>{let z=await y8.readEntityTypeId($,K,"n",null),J=await y8.readEntityTypeId($,K,"j",null),W=p8();for(let Z=0;Z<mJ.length;Z++){let O=mJ[Z],H=await N6.nextSeq($,"store",q,"n"),X=`${Y}n${H}`,w=await $.insertInto("field_definitions").values({store_id:q,object_id:X,entity_type_id:z,type_code:"n",seq:H,owner_entity_id:null,name:O.name,label:O.label,description:O.description,primitive_type:O.primitiveType||"string",required:0,multiplicity:"single",config:null,is_system:1,editable:0,ordinal:null,created_at:W,updated_at:W}).returning("id").executeTakeFirstOrThrow();await $.insertInto("class_field_defs").values({store_id:q,class_type_id:J,field_definition_id:w.id,required:0,sort_order:Z+1}).execute()}},ni8=async($,K,q,Y)=>{let z=await y8.readEntityTypeId($,K,"n",null),J=await y8.readEntityTypeId($,K,"a",null),W=p8();for(let Z=0;Z<xH.length;Z++){let O=xH[Z],H=await N6.nextSeq($,"store",q,"n"),X=`${Y}n${H}`,w=await $.insertInto("field_definitions").values({store_id:q,object_id:X,entity_type_id:z,type_code:"n",seq:H,owner_entity_id:null,name:O.name,label:O.label,description:O.description,primitive_type:O.primitiveType||"string",required:0,multiplicity:"single",config:null,is_system:1,editable:0,ordinal:null,created_at:W,updated_at:W}).returning("id").executeTakeFirstOrThrow();await $.insertInto("class_field_defs").values({store_id:q,class_type_id:J,field_definition_id:w.id,required:O.required?1:0,sort_order:Z+1}).execute()}},di8=async($,K,q,Y)=>{let z=await y8.readEntityTypeId($,K,"n",null),J=await y8.readEntityTypeId($,K,"d",null),W=await y8.readEntityTypeId($,K,"t",null),Z=p8(),O=[{name:"draft_version",label:"Draft Version",description:"Points to current draft version entity",sortOrder:1},{name:"latest_published_version",label:"Latest Published Version",description:"Points to most recent published version entity",sortOrder:2}];for(let H of[J,W])for(let X of O){let w=await N6.nextSeq($,"store",q,"n"),G=`${Y}n${w}`,T=await $.insertInto("field_definitions").values({store_id:q,object_id:G,entity_type_id:z,type_code:"n",seq:w,owner_entity_id:null,name:X.name,label:X.label,description:X.description,primitive_type:"object_ref",required:0,multiplicity:"single",config:null,is_system:1,editable:0,ordinal:null,created_at:Z,updated_at:Z}).returning("id").executeTakeFirstOrThrow();await $.insertInto("class_field_defs").values({store_id:q,class_type_id:H,field_definition_id:T.id,required:0,sort_order:X.sortOrder}).execute()}},ai8=async($,K,q,Y)=>{let z=await y8.readEntityTypeId($,K,"n",null),J=await y8.readEntityTypeId($,K,"d",null),W=await y8.readEntityTypeId($,K,"t",null),Z=p8(),O=[{name:"edit_session_id",label:"Edit Session ID",description:"UUID of the editing session",primitiveType:"string",sortOrder:3},{name:"edit_started_at",label:"Edit Started At",description:"When edit lock was acquired",primitiveType:"date",sortOrder:4},{name:"edit_last_activity_at",label:"Edit Last Activity At",description:"Last activity during edit session",primitiveType:"date",sortOrder:5}];for(let H of[J,W])for(let X of O){let w=await N6.nextSeq($,"store",q,"n"),G=`${Y}n${w}`,T=await $.insertInto("field_definitions").values({store_id:q,object_id:G,entity_type_id:z,type_code:"n",seq:w,owner_entity_id:null,name:X.name,label:X.label,description:X.description,primitive_type:X.primitiveType,required:0,multiplicity:"single",config:null,is_system:1,editable:0,ordinal:null,created_at:Z,updated_at:Z}).returning("id").executeTakeFirstOrThrow();await $.insertInto("class_field_defs").values({store_id:q,class_type_id:H,field_definition_id:T.id,required:0,sort_order:X.sortOrder}).execute()}},oi8=async($,K,q,Y)=>{let z=await y8.readEntityTypeId($,K,"n",null),J=await y8.readEntityTypeId($,K,"d",null),W=await y8.readEntityTypeId($,K,"t",null),Z=p8();for(let O of[J,W]){let H=await N6.nextSeq($,"store",q,"n"),X=`${Y}n${H}`,w=await $.insertInto("field_definitions").values({store_id:q,object_id:X,entity_type_id:z,type_code:"n",seq:H,owner_entity_id:null,name:"size",label:"Size",description:"Content size in bytes",primitive_type:"int",required:0,multiplicity:"single",config:null,is_system:1,editable:0,ordinal:null,created_at:Z,updated_at:Z}).returning("id").executeTakeFirstOrThrow();await $.insertInto("class_field_defs").values({store_id:q,class_type_id:O,field_definition_id:w.id,required:0,sort_order:6}).execute()}},ri8=async($,K,q,Y)=>{let z=await y8.readEntityTypeId($,K,"n",null),J=await y8.readEntityTypeId($,K,"v",null),W=p8(),Z=[{name:"attachments",label:"Attachments",description:"Referenced asset entities",sortOrder:5,colSpan:2},{name:"includes",label:"Includes",description:"Included documents and templates",sortOrder:6,colSpan:2},{name:"hyperlinks",label:"Hyperlinks",description:"Linked entities in content",sortOrder:7,colSpan:2}];for(let O of Z){let H=await N6.nextSeq($,"store",q,"n"),X=`${Y}n${H}`,w=await $.insertInto("field_definitions").values({store_id:q,object_id:X,entity_type_id:z,type_code:"n",seq:H,owner_entity_id:null,name:O.name,label:O.label,description:O.description,primitive_type:"object_ref",required:0,multiplicity:"multi",config:null,is_system:1,editable:0,ordinal:null,created_at:W,updated_at:W}).returning("id").executeTakeFirstOrThrow();await $.insertInto("class_field_defs").values({store_id:q,class_type_id:J,field_definition_id:w.id,required:0,sort_order:O.sortOrder,colspan:O.colSpan??null}).execute()}},si8=async($,K,q,Y)=>{let z=await y8.readEntityTypeId($,K,"n",null),J=await y8.readEntityTypeId($,K,"v",null),W=p8(),Z=[{name:"document",label:"Document",description:"Parent document or template entity",primitiveType:"object_ref",required:1,sortOrder:1},{name:"version_number",label:"Version Number",description:"Version number (1, 2, 3...)",primitiveType:"int",required:1,sortOrder:2},{name:"published_at",label:"Published At",description:"When this version was published",primitiveType:"date",required:0,sortOrder:3},{name:"content_hash",label:"Content Hash",description:"SHA-256 hex fingerprint of content for change detection",primitiveType:"string",required:0,sortOrder:4,colSpan:2}];for(let O of Z){let H=await N6.nextSeq($,"store",q,"n"),X=`${Y}n${H}`,w=await $.insertInto("field_definitions").values({store_id:q,object_id:X,entity_type_id:z,type_code:"n",seq:H,owner_entity_id:null,name:O.name,label:O.label,description:O.description,primitive_type:O.primitiveType,required:0,multiplicity:"single",config:null,is_system:1,editable:0,ordinal:null,created_at:W,updated_at:W}).returning("id").executeTakeFirstOrThrow();await $.insertInto("class_field_defs").values({store_id:q,class_type_id:J,field_definition_id:w.id,required:O.required,sort_order:O.sortOrder,colspan:O.colSpan??null}).execute()}},ti8=()=>{let $=new Map,K=new Map,q=new Set,Y=async(G,T,P,v)=>{if(q.has(v))return;let V=await G.selectFrom("field_definitions").select("name").where("store_id","=",T).where("is_system","=",1).where("owner_entity_id","is",null).execute(),j=new Set(V.map((f)=>f.name)),D=mJ.filter((f)=>!j.has(f.name)).map((f)=>f.name);if(D.length>0)throw I.validation(`Store ${P} is missing job field definitions: ${D.join(", ")}. Database may be corrupted.`,"MISSING_FIELD_DEFINITIONS");q.add(v)},z=async(G,T,{code:P,name:v},V)=>{let j=p8(),D=await N6.nextSeq(G,"global",null,"r"),f=`S${D}`,C=await y8.readEntityTypeId(G,T,"r","local"),h=await G.insertInto("entities").values({store_id:null,object_id:f,entity_type_id:C,type_code:"r",seq:D,parent_folder_id:null,parent_object_id:null,name:v,created_at:j,updated_at:j}).returningAll().executeTakeFirstOrThrow(),L=h.id;await li8(G,L,P);let{store:k,mutationApi:g,id:S}=WF(h,P);return await ii8(G,T,L,P),await ni8(G,T,L,P),await di8(G,T,L,P),await ai8(G,T,L,P),await oi8(G,T,L,P),await ri8(G,T,L,P),await si8(G,T,L,P),V(`cache-set:${S}`,()=>{$.set(S,m6.create(k,g,L)),K.set(L,S)}),k},J=async(G,T,{name:P},v)=>{let V=p8(),j=await N6.nextSeq(G,"global",null,"r"),D=`S${j}`,f=await y8.readEntityTypeId(G,T,"r","demux"),C=await G.insertInto("entities").values({store_id:null,object_id:D,entity_type_id:f,type_code:"r",seq:j,parent_folder_id:null,parent_object_id:null,name:P,created_at:V,updated_at:V}).returningAll().executeTakeFirstOrThrow(),{store:h,mutationApi:L,id:k,pk:g}=HA1(C,[]);return v(`cache-set:${k}`,()=>{$.set(k,m6.create(h,L,g)),K.set(g,k)}),h},W=async(G,T,P)=>{let v=$.get(P);if(v)return v.getEntity();if(HA(P)===null)return null;let j=await G.selectFrom("entities").innerJoin("entity_types","entity_types.id","entities.entity_type_id").select(["entities.id","entities.object_id","entities.name","entities.created_at","entities.updated_at","entity_types.subtype"]).where("entities.type_code","=","r").where("entities.object_id","=",P).where("entities.deleted_at","is",null).executeTakeFirst();if(!j)return null;let D,f,C,h;if(j.subtype==="local"){let L=await Qi8(G,j.id),k=WF(j,L);D=k.store,f=k.mutationApi,C=k.id,h=k.pk,await Y(G,h,L,C)}else{let L=await G.selectFrom("store_children").innerJoin("entities","entities.id","store_children.child_store_id").select(["entities.object_id"]).where("store_children.parent_store_id","=",j.id).execute(),k=[];for(let S of L){let E=await W(G,T,S.object_id);if(E)k.push(E)}let g=HA1(j,k);D=g.store,f=g.mutationApi,C=g.id,h=g.pk}return $.set(C,m6.create(D,f,h)),K.set(h,C),D};return Object.freeze({createLocalStore:z,createDemuxStore:J,readStore:W,readSharedStore:async(G,T)=>{let P=await G.selectFrom("entities").innerJoin("string_fields","string_fields.entity_id","entities.id").innerJoin("field_definitions","field_definitions.id","string_fields.field_definition_id").select(["entities.id","entities.object_id","entities.name","entities.created_at","entities.updated_at"]).where("entities.type_code","=","r").where("entities.store_id","is",null).where("field_definitions.name","=","code").where("string_fields.value","=","B").where("entities.deleted_at","is",null).executeTakeFirstOrThrow(),v=ZF(P),V=$.get(v);if(V)return V.getEntity();let{store:j,mutationApi:D,pk:f}=WF(P,"B");return $.set(v,m6.create(j,D,f)),K.set(f,v),j},readRootStoreForProject:async(G,T,P)=>{U.factory(!P||P.length<2||P[0]!=="P",I.validation,`Invalid project ID: ${P}`,"INVALID_PROJECT_ID");let v=await G.selectFrom("entities").select("id").where("type_code","=","p").where("object_id","=",P).where("deleted_at","is",null).executeTakeFirst();U.factory(!v,I.notFound,`Project not found: ${P}`,"PROJECT_NOT_FOUND");let V=await G.selectFrom("project_stores").innerJoin("entities","entities.id","project_stores.store_id").select(["entities.object_id"]).where("project_stores.project_id","=",v.id).where("project_stores.is_root","=",1).executeTakeFirst();return U.factory(!V,I.notFound,`Root store not found for project: ${P}`,"ROOT_STORE_NOT_FOUND"),await W(G,T,V.object_id)},addChildToDemux:async(G,T,{demuxId:P,childId:v},V)=>{let j=$.get(P),D=$.get(v),f,C;if(j)f=j.getPk();else{U.factory(HA(P)===null,I.validation,`Invalid demux store ID: ${P}`,"INVALID_ID");let h=await G.selectFrom("entities").select("id").where("type_code","=","r").where("object_id","=",P).where("deleted_at","is",null).executeTakeFirst();U.factory(!h,I.notFound,`Demux store not found: ${P}`,"STORE_NOT_FOUND"),f=h.id}if(D)C=D.getPk();else{U.factory(HA(v)===null,I.validation,`Invalid child store ID: ${v}`,"INVALID_ID");let h=await G.selectFrom("entities").select("id").where("type_code","=","r").where("object_id","=",v).where("deleted_at","is",null).executeTakeFirst();U.factory(!h,I.notFound,`Child store not found: ${v}`,"STORE_NOT_FOUND"),C=h.id}await G.insertInto("store_children").values({parent_store_id:f,child_store_id:C}).execute(),V(`cache-update:${P}`,()=>{let h=$.get(P),L=$.get(v);if(h&&L)h.getMutationApi().addChild(L.getEntity())})},addStoresToProject:async(G,T,{projectId:P,rootStoreId:v,storeIds:V})=>{U.factory(!P||P.length<2||P[0]!=="P",I.validation,`Invalid project ID: ${P}`,"INVALID_PROJECT_ID");let j=await G.selectFrom("entities").select("id").where("type_code","=","p").where("object_id","=",P).where("deleted_at","is",null).executeTakeFirst();U.factory(!j,I.notFound,`Project not found: ${P}`,"PROJECT_NOT_FOUND");let D=j.id,f=$.get(v),C;if(f)C=f.getPk();else{U.factory(HA(v)===null,I.validation,`Invalid root store ID: ${v}`,"INVALID_ID");let h=await G.selectFrom("entities").select("id").where("type_code","=","r").where("object_id","=",v).where("deleted_at","is",null).executeTakeFirst();U.factory(!h,I.notFound,`Root store not found: ${v}`,"STORE_NOT_FOUND"),C=h.id}for(let h of V){let L=$.get(h),k;if(L)k=L.getPk();else{U.factory(HA(h)===null,I.validation,`Invalid store ID: ${h}`,"INVALID_ID");let g=await G.selectFrom("entities").select("id").where("type_code","=","r").where("object_id","=",h).where("deleted_at","is",null).executeTakeFirst();U.factory(!g,I.notFound,`Store not found: ${h}`,"STORE_NOT_FOUND"),k=g.id}await G.insertInto("project_stores").values({project_id:D,store_id:k,is_root:k===C?1:0}).execute()}},evictStore:(G)=>{let T=$.get(G);if(T)K.delete(T.getPk());$.delete(G)}})},XA1=Object.freeze({create:ti8});h6();h6();var ei8=($)=>{let K=$.split("/").filter((z)=>z.trim()),q=K[K.length-1];return{parentPath:K.slice(0,-1).join("/")||null,name:q,segments:K}},$n8=($)=>{return $[0]},r8=Object.freeze({parsePath:ei8,extractStoreCode:$n8});h6();var Kn8=["Documents/",/^Stories\/[^/]+\//],qn8=["Templates/"],_n8=["Documents/","Templates/",/^Stories\/[^/]+\//],Yn8=($)=>{U.factory(!$||$.length===0,I.validation,"Path cannot be empty","EMPTY_PATH"),U.factory($.startsWith("/"),I.validation,"No leading slash allowed","INVALID_PATH"),U.factory($.endsWith("/"),I.validation,"No trailing slash allowed","INVALID_PATH"),U.factory($.includes("//"),I.validation,"No consecutive slashes allowed","INVALID_PATH")},zn8=($)=>{U.factory(!$||$.trim().length===0,I.validation,"Name cannot be empty","INVALID_NAME"),U.factory($.includes("/"),I.validation,"Name cannot contain /","INVALID_NAME"),U.factory($!==$.trim(),I.validation,"Name cannot have leading/trailing whitespace","INVALID_NAME")},Jn8=async($,K,q,Y,z)=>{let J=q;while(J){let W=J.getSubtype();if(W==="root_d"&&Y.includes("d"))return;if(W==="root_t"&&Y.includes("t"))return;if(W==="root_s"&&Y.includes("s"))return;if(W==="root_settings"&&Y.includes("settings"))return;if(W==="tasks"&&Y.includes("tasks"))return;let Z=J.getParentId();if(!Z)break;J=await z.readFolder($,K,{id:Z})}throw I.validation(`Cannot create entity in this location. Allowed roots: ${Y.join(", ")}`,"INVALID_ROOT")},Wn8=async($,K,q,Y)=>{let z=q;while(z){if(z.getSubtype()==="tasks")return!0;let J=z.getParentId();if(!J)break;z=await Y.readFolder($,K,{id:J})}return!1},Zn8=($,K)=>{for(let q of K){if(typeof q==="string"&&$.startsWith(q))return{valid:!0,prefix:q};if(q instanceof RegExp&&q.test($))return{valid:!0,prefix:$.match(q)[0]}}return{valid:!1}},On8=async($,K,q,Y)=>{let z=new Set,J=q;while(J){if(z.has(J))throw I.validation(`Cycle detected in parent chain for entity ${q}`,"CYCLE_DETECTED");z.add(J);let W=b6.parseId(J);if(!W)throw I.notFound(`Invalid entity ID format: ${J}`,"NOT_FOUND");let{typeCode:Z}=W,O,H=null;if(Z==="f"){if(O=await Y.readFolder($,K,{id:J}),!O)throw I.notFound(`Folder not found: ${J}`,"NOT_FOUND");if(H=O.getSubtype(),H==="root_d"||H==="root_t"||H==="root_s"||H==="tasks")return{id:J,type:Z,subtype:H};J=O.getParentId()}else if(Z==="s"){if(O=await Y.readStory($,K,{id:J}),!O)throw I.notFound(`Story not found: ${J}`,"NOT_FOUND");return{id:J,type:Z,subtype:null}}else if(Z==="d"||Z==="t"){if(O=await Y.readContent($,K,{id:J}),!O)throw I.notFound(`Content not found: ${J}`,"NOT_FOUND");J=O.getParentId()}else throw I.validation(`Unsupported entity type code: ${Z}`,"INVALID_TYPE")}throw I.validation(`No root found for entity ${q}`,"NO_ROOT_FOUND")},w2=Object.freeze({DOCUMENT_PREFIXES:Kn8,TEMPLATE_PREFIXES:qn8,FOLDER_PREFIXES:_n8,validatePathFormat:Yn8,validateName:zn8,validateRootInAllowedTree:Jn8,isInsideTasksFolder:Wn8,detectFullPathPrefix:Zn8,getRootForEntity:On8});var Hn8=({store:$})=>{let K=async(G,T,P,v,V,j,D,f=!0,C=null)=>{let h=P.split("/").filter((E)=>E.trim());U.factory(h.length===0,I.validation,"Path cannot be empty or contain only slashes","EMPTY_PATH");let L=h.slice(0,-1).join("/");if(L){let E=await $.getFolderByPath(G,T,{path:L,type:v,storeCode:V});if(E){let x=R9.validateFolderName(h[h.length-1]);return{parentObjectId:E.getObjectId(),name:x}}}let k=j??v,g;if(C)g=await $.readFolder(G,T,{id:C}),U.factory(!g,I.notFound,`Starting folder not found: ${C}`,"FOLDER_NOT_FOUND");else g=await $.readRootFolderForType(G,T,k,V);for(let E=0;E<h.length-1;E++){let x=R9.validateFolderName(h[E]),c=await $.findFolderByName(G,T,g.getObjectId(),x);if(c)g=c;else{if(!f)throw I.notFound(`Folder not found: "${x}"`,"FOLDER_NOT_FOUND");g=await $.createFolder(G,T,{storeCode:V,parentId:g.getObjectId(),name:x},D)}}let S=R9.validateFolderName(h[h.length-1]);return{parentObjectId:g.getObjectId(),name:S}},q=async(G,T,P,v)=>{let{path:V,store:j}=P,D=["d","t","s"],f=w2.FOLDER_PREFIXES;w2.validatePathFormat(V);let C=w2.detectFullPathPrefix(V,f);U.factory(!C.valid,I.validation,`Path must start with one of: ${f.map((t)=>typeof t==="string"?t:t.toString()).join(", ")}`,"INVALID_PATH_PREFIX");let h=V.slice(C.prefix.length);U.factory(!h||h.length===0,I.validation,"Path cannot end at tree prefix - provide a path after the prefix","EMPTY_PATH");let L,k,g=null;if(C.prefix==="Documents/")L="d",k="d";else if(C.prefix==="Templates/")L="t",k="t";else if(C.prefix.startsWith("Stories/")){L="s",k="d";let t=C.prefix.slice(8,-1),Z1=(await $.listStories(G,T,{storeCode:j})).find((E1)=>E1.getName()===t);if(!Z1)throw I.notFound(`Story not found: ${t}`,"STORY_NOT_FOUND");g=Z1.getObjectId()}let{parentPath:S,name:E}=r8.parsePath(h),x;if(S){let t=await K(G,T,S,k,j,L,v,!0,g),w1=await $.findFolderByName(G,T,t.parentObjectId,t.name);if(w1)x=w1.getObjectId();else x=(await $.createFolder(G,T,{storeCode:j,parentId:t.parentObjectId,name:t.name},v)).getObjectId()}else if(g)x=g;else x=(await $.readRootFolderForType(G,T,L,j)).getObjectId();if(L==="s"){let t=await $.readFolder(G,T,{id:x});U.factory(!t,I.notFound,"Parent folder not found","FOLDER_NOT_FOUND"),await w2.validateRootInAllowedTree(G,T,t,D,$)}let c=R9.validateFolderName(E),i=await $.isDuplicateNameInParent(G,T,x,c);return U.factory(i,I.conflict,`Folder "${c}" already exists in parent`,"DUPLICATE_NAME"),await $.createFolder(G,T,{storeCode:j,parentId:x,name:c},v)},Y=async(G,T,P,v)=>{let{root:V,path:j}=P,D=["d","t","s"],f=r8.extractStoreCode(V);w2.validatePathFormat(j);let C=await $.readFolder(G,T,{id:V});U.factory(!C,I.notFound,`Root folder not found: ${V}`,"FOLDER_NOT_FOUND"),await w2.validateRootInAllowedTree(G,T,C,D,$);let{parentPath:h,name:L}=r8.parsePath(j),k;if(h){let E=h.split("/").filter((c)=>c.trim()),x=C;for(let c of E){let i=R9.validateFolderName(c),t=await $.findFolderByName(G,T,x.getObjectId(),i);if(t)x=t;else x=await $.createFolder(G,T,{storeCode:f,parentId:x.getObjectId(),name:i},v)}k=x.getObjectId()}else k=V;let g=R9.validateFolderName(L),S=await $.isDuplicateNameInParent(G,T,k,g);return U.factory(S,I.conflict,`Folder "${g}" already exists in parent`,"DUPLICATE_NAME"),await $.createFolder(G,T,{storeCode:f,parentId:k,name:g},v)},z=async(G,T,P,v)=>{let{parentId:V,name:j}=P,D=["d","t","s"],f=r8.extractStoreCode(V);w2.validateName(j);let C=await $.readFolder(G,T,{id:V});U.factory(!C,I.notFound,`Parent folder not found: ${V}`,"FOLDER_NOT_FOUND"),await w2.validateRootInAllowedTree(G,T,C,D,$);let h=R9.validateFolderName(j),L=await $.isDuplicateNameInParent(G,T,V,h);return U.factory(L,I.conflict,`Folder "${h}" already exists in parent`,"DUPLICATE_NAME"),await $.createFolder(G,T,{storeCode:f,parentId:V,name:h},v)},J=async(G,T,P,v)=>{let{mode:V,path:j,root:D,parentId:f,name:C,store:h,type:L}=P;if(U.factory(P.subtype==="tasks",I.validation,"Tasks folders are system-managed and cannot be created manually","RESERVED_SUBTYPE"),V==="fullPath")return U.factory(!h,I.validation,"store is required for fullPath mode","MISSING_STORE_CODE"),await q(G,T,{path:j,store:h},v);if(V==="rootRelative")return U.factory(!D,I.validation,"root is required for rootRelative mode","MISSING_ROOT"),await Y(G,T,{root:D,path:j},v);if(V==="parentName")return U.factory(!f,I.validation,"parentId is required for parentName mode","MISSING_PARENT_ID"),U.factory(!C,I.validation,"name is required for parentName mode","MISSING_NAME"),await z(G,T,{parentId:f,name:C},v);if(L!==void 0){U.factory(!j||j==="/",I.validation,"Path cannot be empty","EMPTY_PATH"),U.factory(L!=="d"&&L!=="t",I.validation,'Type must be "d" or "t"',"INVALID_TYPE"),U.factory(!h,I.validation,"store is required","MISSING_STORE_CODE");let{parentObjectId:k,name:g}=await K(G,T,j,L,h,void 0,v),S=await $.isDuplicateNameInParent(G,T,k,g);return U.factory(S,I.conflict,`Folder "${g}" already exists in parent`,"DUPLICATE_NAME"),await $.createFolder(G,T,{storeCode:h,parentId:k,name:g},v)}throw I.validation("Invalid creation parameters. Use one of: fullPath (path+store), rootRelative (root+path), or parentName (parentId+name)","INVALID_PARAMS")},W=async(G,T,{id:P})=>{return await $.readFolder(G,T,{id:P})};return Object.freeze({resolvePath:K,createFolder:J,readFolder:W,renameFolder:async(G,T,{id:P,name:v},V)=>{let j=await W(G,T,{id:P});U.factory(!j,I.notFound,`Folder not found: ${P}`,"FOLDER_NOT_FOUND"),U.factory(R9.isRootFolder(j),I.validation,"Cannot rename root folder","CANNOT_RENAME_ROOT");let D=R9.validateFolderName(v),f=await $.isDuplicateNameInParent(G,T,j.getParentId(),D,P);return U.factory(f,I.conflict,`Folder "${D}" already exists in parent`,"DUPLICATE_NAME"),await $.updateFolder(G,T,{id:P,name:D},V)},moveFolder:async(G,T,{id:P,parentId:v},V)=>{let j=await W(G,T,{id:P});U.factory(!j,I.notFound,`Folder not found: ${P}`,"FOLDER_NOT_FOUND"),U.factory(R9.isRootFolder(j),I.validation,"Cannot move root folder","CANNOT_MOVE_ROOT");let D=await W(G,T,{id:v});U.factory(!D,I.notFound,`Parent folder not found: ${v}`,"PARENT_NOT_FOUND"),U.factory(!P||P.length<1,I.validation,"Invalid folder ID format","INVALID_ID_FORMAT"),U.factory(!v||v.length<1,I.validation,"Invalid parent ID format","INVALID_PARENT_ID_FORMAT");let f=P[0],C=v[0];U.factory(f!==C,I.validation,"Cannot move folders between stores","CROSS_STORE_MOVE"),U.factory(P===v,I.validation,"Cannot move folder into itself","SELF_MOVE");let h=v;while(h!==null){U.factory(h===P,I.validation,"Cannot move folder into its own descendant","CYCLE_DETECTED");let k=await $.readFolder(G,T,{id:h});if(!k)break;h=k.getParentId()}let L=await $.isDuplicateNameInParent(G,T,v,j.getName(),P);return U.factory(L,I.conflict,`Folder "${j.getName()}" already exists in target parent`,"DUPLICATE_NAME"),await $.updateFolder(G,T,{id:P,parentId:v},V)},deleteFolder:async(G,T,{id:P},v)=>{let V=await W(G,T,{id:P});return U.factory(!V,I.notFound,`Folder not found: ${P}`,"FOLDER_NOT_FOUND"),U.factory(R9.isRootFolder(V),I.validation,"Cannot delete root folder","CANNOT_DELETE_ROOT"),await $.deleteFolder(G,T,{id:P},v)},getFolderByPath:async(G,T,{path:P,type:v,storeCode:V})=>{return await $.getFolderByPath(G,T,{path:P,type:v,storeCode:V})},listFolderContents:async(G,T,{folderId:P,type:v,storeCode:V})=>{return await $.listFolderContents(G,T,{folderId:P,type:v,storeCode:V})}})},OF=Object.freeze({create:Hn8});h6();AK();var wA1=Object.freeze(["string","object_ref","int","text","date","float"]),Xn8=Object.freeze(new Set(["draft_version","latest_published_version","edit_session_id","edit_started_at","edit_last_activity_at"])),wn8=($,K)=>{let q=$.entity.getName();if($.isVirtual){if(q==="parent")return{sectionKey:"pathable",sectionLabel:"Pathable",sectionOrder:1};return{sectionKey:"base",sectionLabel:"Base Entity",sectionOrder:0}}if($.sourceCode===null)return{sectionKey:"base",sectionLabel:"Base Entity",sectionOrder:0};if(Xn8.has(q))return{sectionKey:"versioned",sectionLabel:"Versioned",sectionOrder:2};if($.sourceSubtype!==null){let J=`${$.sourceCode}/${$.sourceSubtype}`;return{sectionKey:"subtype",sectionLabel:K.get(J),sectionOrder:4}}let Y=`${$.sourceCode}/`;return{sectionKey:"type",sectionLabel:K.get(Y),sectionOrder:3}},Gn8=($,K)=>{switch($){case"int":{if(typeof K==="number"){if(!Number.isInteger(K))return{valid:!1,error:`Value must be an integer, got float: ${K}`};return{valid:!0}}if(typeof K==="string"){let q=Number(K);if(isNaN(q)||!Number.isInteger(q))return{valid:!1,error:`Value must be an integer, got: ${K}`};return{valid:!0}}return{valid:!1,error:`Value must be an integer, got: ${typeof K}`}}case"float":{if(typeof K==="number"){if(!isFinite(K))return{valid:!1,error:`Value must be a finite number, got: ${K}`};return{valid:!0}}if(typeof K==="string"){let q=Number(K);if(isNaN(q)||!isFinite(q))return{valid:!1,error:`Value must be numeric, got: ${K}`};return{valid:!0}}return{valid:!1,error:`Value must be numeric, got: ${typeof K}`}}case"date":{if(typeof K!=="string")return{valid:!1,error:`Date value must be a string, got: ${typeof K}`};if(!OA.test(K))return{valid:!1,error:`Value must be valid ISO 8601 date format, got: ${K}`};let q=new Date(K);if(isNaN(q.getTime()))return{valid:!1,error:`Value is not a valid date: ${K}`};return{valid:!0}}case"string":case"text":case"object_ref":if(typeof K!=="string")return{valid:!1,error:`Value must be a string, got: ${typeof K}`};return{valid:!0};default:return{valid:!1,error:`Unknown primitive type: ${$}`}}},Tn8=({store:$})=>{let K=null,q=null,Y=({entityMutationService:k,allowedValueRegistry:g})=>{if(K=k,g!==void 0)q=g},z=async(k,g,{entityId:S,fieldName:E,value:x},c)=>{let i=(t)=>{let w1=t.entity||t,Z1={fieldName:E,virtualFieldUpdated:!0,get id(){return w1.getObjectId?.()||w1.id},get name(){return w1.getName?.()||w1.name},get parentId(){return w1.getParentId?.()||w1.parentId},get path(){return w1.getPath?.()||w1.path},get createdAt(){return w1.getCreatedAt?.()||w1.createdAt},get updatedAt(){return w1.getUpdatedAt?.()||w1.updatedAt}};return Z1.toJSON=()=>({...w1.toJSON?.()||w1,fieldName:E,virtualFieldUpdated:!0}),Z1};switch(E){case"name":{let t=await K.renameEntity(k,g,{id:S,newName:x},c);return i(t)}case"parent":{let t=await K.moveEntity(k,g,{id:S,newParentId:x},c);return i(t)}default:throw I.validation(`Unknown virtual field: ${E}`,"UNKNOWN_VIRTUAL_FIELD")}},J=async(k,g,{store:S,ownerEntityId:E,ownerEntityTypeCode:x,ownerEntityTypeSubtype:c,name:i,label:t,description:w1,primitiveType:Z1,required:E1,multiplicity:T1,isSystem:H1=!1,allowed:Q1},L1)=>{U.factory(!S,I.validation,"store is required","MISSING_STORE_CODE"),U.factory(E&&x,I.validation,"Cannot specify both ownerEntityId and ownerEntityTypeCode","INVALID_FIELD_DEFINITION_SCOPE"),U.factory(!wA1.includes(Z1),I.validation,`Invalid primitiveType: ${Z1}. Must be one of: ${wA1.join(", ")}`,"INVALID_PRIMITIVE_TYPE"),U.factory(T1!=="single"&&T1!=="multi",I.validation,`Invalid multiplicity: ${T1}. Must be 'single' or 'multi'`,"INVALID_MULTIPLICITY");let w8=/^[a-zA-Z0-9_]+$/;if(U.factory(!i||!w8.test(i),I.validation,`Invalid name: ${i}. Must contain only alphanumeric characters and underscores`,"INVALID_NAME"),U.factory(zA(i),I.validation,`Field name '${i}' is reserved for virtual fields`,"RESERVED_FIELD_NAME"),Q1!==void 0&&Q1!==null)if(Q1.type==="enum")U.factory(!Array.isArray(Q1.values)||Q1.values.length===0,I.validation,"allowed.values must be a non-empty array","INVALID_ALLOWED_VALUES");else if(Q1.type==="function"){if(U.factory(!Q1.name||typeof Q1.name!=="string",I.validation,"allowed.name is required for type: function","MISSING_ALLOWED_NAME"),U.factory(!q||!q.has(Q1.name),I.validation,`Unknown resolver function: ${Q1.name}`,"UNKNOWN_RESOLVER"),Q1.dependsOn!==void 0)U.factory(!Array.isArray(Q1.dependsOn),I.validation,"allowed.dependsOn must be an array","INVALID_DEPENDS_ON"),U.factory(Q1.dependsOn.some((G8)=>typeof G8!=="string"),I.validation,"allowed.dependsOn entries must be strings","INVALID_DEPENDS_ON")}else throw I.validation(`Invalid allowed type: ${Q1.type}. Must be 'enum' or 'function'`,"INVALID_ALLOWED_TYPE");let $8=null;if(x)$8=await $.resolveEntityTypePk(k,g,{storeCode:S,code:x,subtype:c});return await $.createFieldDefinition(k,g,{storeCode:S,ownerEntityId:E,ownerEntityTypePk:$8,name:i,label:t,description:w1,primitiveType:Z1,required:E1,multiplicity:T1,isSystem:H1,allowed:Q1},L1)},W=async(k,g,{id:S})=>{return U.factory(!S||S.length<3,I.validation,"Invalid field definition ID","INVALID_ID"),await $.readFieldDefinition(k,g,{id:S})},Z=async(k,g,{store:S,ownerEntityId:E,includeSystem:x=!0})=>{U.factory(!S,I.validation,"store is required","MISSING_STORE_CODE");let c=null;if(E)c=null;return await $.getFieldDefinitionsForOwner(k,g,{storeCode:S,ownerEntityPk:c,includeSystem:x})},O=(k)=>{let{entity:g}=Dq.create({id:`virtual:${k.name}`,name:k.name,label:k.label,description:k.description,primitiveType:k.primitiveType,required:!1,multiplicity:"single",isSystem:!0,isVirtual:!0,editable:k.editable});return g},H=async(k,g,{store:S,code:E,subtype:x})=>{U.factory(!S,I.validation,"store is required","MISSING_STORE_CODE"),U.factory(!E,I.validation,"code is required","MISSING_CODE"),U.factory(x===void 0,I.validation,"subtype is required","MISSING_SUBTYPE");let c=await $.getFieldDefinitionsForEntityType(k,g,{storeCode:S,code:E,subtype:x}),i=await $.getFieldDefinitionsForOwner(k,g,{storeCode:S,ownerEntityPk:null,includeSystem:!0}),t=new Map;for(let H1 of c)t.set(H1.entity.getName(),{entity:H1.entity,sourcePk:H1.sourcePk,sourceCode:H1.sourceCode,sourceSubtype:H1.sourceSubtype,inherited:H1.inherited,sortOrder:H1.sortOrder,rows:H1.rows,colspan:H1.colspan,classDescription:H1.classDescription});for(let H1 of i)if(!t.has(H1.getName()))t.set(H1.getName(),{entity:H1,sourcePk:null,sourceCode:null,sourceSubtype:null,inherited:!1});let w1=G$.filter((H1)=>!H1.searchOnly).map((H1)=>({entity:O(H1),sourcePk:null,sourceCode:null,sourceSubtype:null,inherited:!1,isVirtual:!0,sortOrder:H1.sortOrder,rows:null,colspan:H1.colSpan,classDescription:null})),Z1=new Set;for(let H1 of c)if(H1.sourceCode!=null)Z1.add(H1.sourceCode);let E1=new Map;for(let H1 of Z1){let Q1=await y8.listSubtypes(k,g,H1);for(let L1 of Q1){let w8=L1.subtype!==null?`${L1.code}/${L1.subtype}`:`${L1.code}/`;E1.set(w8,L1.name)}}return[...w1,...Array.from(t.values())].map((H1)=>{let Q1=wn8(H1,E1);return{...H1,...Q1}})},X=async(k,g,{id:S},E)=>{let x=await W(k,g,{id:S});return U.factory(!x,I.notFound,`Field definition not found: ${S}`,"DEFINITION_NOT_FOUND"),U.factory(x.getIsSystem(),I.validation,`Cannot delete system field definition: ${S}`,"SYSTEM_DEFINITION"),await $.deleteFieldDefinition(k,g,{id:S},E)},w=async(k,g,{id:S,allowed:E})=>{let x=await W(k,g,{id:S});if(U.factory(!x,I.notFound,`Field definition not found: ${S}`,"DEFINITION_NOT_FOUND"),E!==void 0&&E!==null)if(E.type==="enum")U.factory(!Array.isArray(E.values)||E.values.length===0,I.validation,"allowed.values must be a non-empty array","INVALID_ALLOWED_VALUES");else if(E.type==="function"){if(U.factory(!E.name||typeof E.name!=="string",I.validation,"allowed.name is required for type: function","MISSING_ALLOWED_NAME"),U.factory(!q||!q.has(E.name),I.validation,`Unknown resolver function: ${E.name}`,"UNKNOWN_RESOLVER"),E.dependsOn!==void 0)U.factory(!Array.isArray(E.dependsOn),I.validation,"allowed.dependsOn must be an array","INVALID_DEPENDS_ON"),U.factory(E.dependsOn.some((i)=>typeof i!=="string"),I.validation,"allowed.dependsOn entries must be strings","INVALID_DEPENDS_ON")}else throw I.validation(`Invalid allowed type: ${E.type}. Must be 'enum' or 'function'`,"INVALID_ALLOWED_TYPE");let c=null;if(E)c=JSON.stringify({allowed:E});return await $.updateFieldDefinitionConfig(k,g,{id:S,config:c})},G=async(k,g,{store:S,fieldDefinitionId:E,entityTypeCode:x,entityTypeSubtype:c,required:i=!1,sortOrder:t=null,rows:w1=null,colspan:Z1=null,description:E1=null},T1)=>{U.factory(!S,I.validation,"store is required","MISSING_STORE_CODE"),U.factory(!E,I.validation,"fieldDefinitionId is required","MISSING_FIELD_DEFINITION_ID"),U.factory(!x,I.validation,"entityTypeCode is required","MISSING_ENTITY_TYPE_CODE");let H1=await $.resolveEntityTypePk(k,g,{storeCode:S,code:x,subtype:c});return await $.addClassAssociation(k,g,{fieldDefinitionId:E,entityTypePk:H1,required:i,sortOrder:t,rows:w1,colspan:Z1,description:E1})},T=async(k,g,{entityId:S,parentId:E,values:x})=>{U.factory(x.includes(S),I.validation,`Self-reference not allowed: ${S} cannot depend on itself`,"SELF_REFERENCE");for(let c of x){let i=await $.readContent(k,g,{id:c});U.factory(!i,I.validation,`Referenced entity does not exist: ${c}`,"INVALID_REFERENCE");let{typeCode:t}=b6.parseId(c);U.factory(t!=="d",I.validation,`Referenced entity is not a document: ${c}`,"INVALID_REFERENCE_TYPE"),U.factory(i.getSubtype()!=="task",I.validation,`Referenced entity is not a task: ${c}`,"INVALID_REFERENCE_SUBTYPE"),U.factory(i.getParentId()!==E,I.validation,`Referenced task is in a different folder: ${c}`,"INVALID_REFERENCE_SCOPE")}for(let c of x){let i=new Set,t=async(Z1,E1)=>{if(Z1===S)return E1;if(i.has(Z1))return null;i.add(Z1);let T1=await $.getFieldValue(k,g,{entityId:Z1,fieldName:"dependsOn"});if(!T1)return null;let H1=T1.getValues();for(let Q1 of H1){let L1=await t(Q1,[...E1,Q1]);if(L1)return L1}return null},w1=await t(c,[S,c]);if(w1)throw I.validation(`Circular dependency detected: ${w1.join(" -> ")}`,"CIRCULAR_DEPENDENCY")}},P=async(k,g,{entityId:S,fieldName:E})=>{let{typeCode:x}=b6.parseId(S),c=S[0],i=null;if($.resolveEntityTypePk)if(x==="d"||x==="t"){let w1=(await $.readContent(k,g,{id:S}))?.getSubtype?.()||null;i=await $.resolveEntityTypePk(k,g,{storeCode:c,code:x,subtype:w1})}else if(x==="e"){let w1=(await $.readSetting(k,g,{id:S}))?.entity?.getSubtype?.()||null;i=await $.resolveEntityTypePk(k,g,{storeCode:c,code:x,subtype:w1})}else i=await $.resolveEntityTypePk(k,g,{storeCode:c,code:x,subtype:null});return await $.resolveFieldDefinition(k,g,{storeCode:c,fieldName:E,ownerEntityPk:null,entityTypePk:i})},v=async(k,g,{entityId:S,fieldDefinitionId:E,fieldName:x,value:c,values:i,bypassEditableCheck:t,dependencies:w1},Z1)=>{if(U.factory(!S,I.validation,"entityId is required","MISSING_ENTITY_ID"),U.factory(!E&&!x,I.validation,"Either fieldDefinitionId or fieldName must be provided","MISSING_FIELD_IDENTIFIER"),U.factory(c!==void 0&&i!==void 0,I.validation,"Cannot provide both value and values","AMBIGUOUS_VALUE"),U.factory(c===void 0&&i===void 0,I.validation,"Either value or values must be provided","MISSING_VALUE"),x&&zA(x)){let q1=rD(x);return U.factory(!q1.editable,I.validation,`Virtual field '${x}' is read-only`,"VIRTUAL_FIELD_READ_ONLY"),await z(k,g,{entityId:S,fieldName:x,value:c??i?.[0]},Z1)}let{typeCode:E1}=b6.parseId(S),T1=S[0],H1=null,Q1=async()=>{if(H1!==null)return H1;if((E1==="d"||E1==="t")&&$.readContent){let q1=await $.readContent(k,g,{id:S});H1={parentId:q1?.getParentId?.()||null,subtype:q1?.getSubtype?.()||null}}else H1={parentId:null,subtype:null};return H1},L1=null,w8=await $.getFieldValue(k,g,{entityId:S,fieldDefinitionId:E,fieldName:x});if(w8)L1=w8.getDefinition();else if(E)L1=await $.readFieldDefinition(k,g,{id:E});else if(x&&$.resolveFieldDefinition){let q1=null;if($.resolveEntityTypePk)if(E1==="d"||E1==="t"){let n=(await $.readContent(k,g,{id:S}))?.getSubtype?.()||null;q1=await $.resolveEntityTypePk(k,g,{storeCode:T1,code:E1,subtype:n})}else if(E1==="e"){let n=(await $.readSetting(k,g,{id:S}))?.entity?.getSubtype?.()||null;q1=await $.resolveEntityTypePk(k,g,{storeCode:T1,code:E1,subtype:n})}else q1=await $.resolveEntityTypePk(k,g,{storeCode:T1,code:E1,subtype:null});L1=await $.resolveFieldDefinition(k,g,{storeCode:T1,fieldName:x,ownerEntityPk:null,entityTypePk:q1})}if(L1&&!L1.getEditable()&&!t)throw I.validation(`Field '${L1.getName()}' is not editable (system-managed field)`,"FIELD_NOT_EDITABLE");if(L1){let q1=L1.getAllowed();if(q1&&q1.type==="enum"&&q1.values&&q1.values.length>0){let n=i?[...i]:c!==void 0?[c]:[];if(n.length>0){let j1=n.filter((N1)=>!q1.values.includes(N1));if(j1.length>0)throw I.validation(`Invalid value(s): ${j1.join(", ")}. Allowed: ${q1.values.join(", ")}`,"VALUE_NOT_ALLOWED")}}let A1=L1.getPrimitiveType();if(["int","float","date"].includes(A1)){let n=i?[...i]:c!==void 0?[c]:[];for(let j1 of n){let N1=Gn8(A1,j1);if(!N1.valid)throw I.validation(N1.error,"INVALID_TYPED_VALUE")}}if(q){let n=L1.getAllowed();if(n&&n.type==="function"){let j1=i?[...i]:c!==void 0?[c]:[];if(j1.length>0){let N1=n.dependsOn||[],x1={};if(w1)x1={...w1};else for(let z8 of N1){let E8=await $.getFieldValue(k,g,{entityId:S,fieldName:z8});x1[z8]=E8?.getValue()||null}let{parentId:a1,subtype:K8}=await Q1(),y1={db:k,fieldDefinitionId:L1.getObjectId(),entityId:S,parentId:a1,typeCode:E1,subtype:K8,storeCode:T1,projectId:g.projectId||null,dependencyValues:x1,enqueuePostCommitHook:Z1},{values:h1}=await q.resolve(n.name,y1);if(h1!==null){let z8=j1.filter((E8)=>!h1.includes(E8));if(z8.length>0){let E8=z8.map((r1)=>`"${r1}"`).join(", ");throw I.validation(`Invalid value(s): ${E8}. Allowed: ${h1.join(", ")}`,"VALUE_NOT_ALLOWED")}}}}}}let $8=i;if(E1==="d"){let q1=await $.readContent(k,g,{id:S});if(q1&&q1.getSubtype()==="task"){let A1=L1;if(!A1&&x){let j1=(await $.getFieldDefinitionsForEntityType(k,g,{storeCode:T1,code:"d",subtype:"task"})).find((N1)=>N1.entity.getName()===x);A1=j1?j1.entity:null}if(A1&&A1.getPrimitiveType()==="object_ref"){let n=i?[...i]:c!==void 0?[c]:[];if(n.length>0){if(n=[...new Set(n)],await T(k,g,{entityId:S,parentId:q1.getParentId(),values:n}),i)$8=n}}}}let G8={entityId:S,fieldDefinitionId:E,fieldName:x,value:c,values:$8},W8=!w8,m1=w8?.getValue(),e1;if(W8)e1=await $.addFieldToEntity(k,g,G8,Z1);else e1=await $.updateFieldValue(k,g,{...G8,_oldValue:m1},Z1);let J1=[];if(q&&$.getFieldDefinitionsForEntityType){let q1=L1?.getName()||x;if(q1){let A1=c!==void 0?c:$8?.[0]??null,{subtype:n}=await Q1();await L(k,g,{entityId:S,writtenFieldName:q1,newValue:A1,storeCode:T1,entityType:E1,entitySubtype:n},Z1,J1,0)}}return{entity:e1,clearedDependents:J1}},V=async(k,g,{entityId:S,fieldDefinitionId:E,fieldName:x},c)=>{return U.factory(!S,I.validation,"entityId is required","MISSING_ENTITY_ID"),U.factory(!E&&!x,I.validation,"Either fieldDefinitionId or fieldName must be provided","MISSING_FIELD_IDENTIFIER"),await $.removeFieldFromEntity(k,g,{entityId:S,fieldDefinitionId:E,fieldName:x},c)},j=async(k,g,{store:S,code:E,subtype:x,fields:c})=>{let t=(await H(k,g,{store:S,code:E,subtype:x})).filter((E1)=>E1.entity.getRequired());if(t.length===0)return;let w1=c&&typeof c==="object"?Object.keys(c):[],Z1=t.filter((E1)=>!w1.includes(E1.entity.getName())).map((E1)=>E1.entity.getName());if(Z1.length>0)throw I.validation(`Missing required fields: ${Z1.join(", ")}`,"MISSING_REQUIRED_FIELDS")},D=async(k,g,{entityId:S,fieldDefinitionId:E,fieldName:x,value:c,values:i},t)=>{if(U.factory(!S,I.validation,"entityId is required","MISSING_ENTITY_ID"),U.factory(!E&&!x,I.validation,"Either fieldDefinitionId or fieldName must be provided","MISSING_FIELD_IDENTIFIER"),await $.getFieldValue(k,g,{entityId:S,fieldDefinitionId:E,fieldName:x})){let Z1=x||E;throw I.validation(`Field '${Z1}' already exists on entity '${S}'`,"FIELD_ALREADY_EXISTS")}return await v(k,g,{entityId:S,fieldDefinitionId:E,fieldName:x,value:c,values:i},t)},f=async(k,g,{entityId:S,fieldDefinitionId:E,fieldName:x,value:c,values:i},t)=>{if(U.factory(!S,I.validation,"entityId is required","MISSING_ENTITY_ID"),U.factory(!E&&!x,I.validation,"Either fieldDefinitionId or fieldName must be provided","MISSING_FIELD_IDENTIFIER"),!await $.getFieldValue(k,g,{entityId:S,fieldDefinitionId:E,fieldName:x})){let Z1=x||E;throw I.validation(`Field '${Z1}' not found on entity '${S}'`,"FIELD_NOT_FOUND")}return await v(k,g,{entityId:S,fieldDefinitionId:E,fieldName:x,value:c,values:i},t)},C=async(k,g,{entityId:S,fieldDefinitionId:E,fieldName:x},c)=>{return await V(k,g,{entityId:S,fieldDefinitionId:E,fieldName:x},c)},h=async(k,g,{entityId:S,typeCode:E,subtype:x,parentId:c,storeCode:i,fieldName:t,dependencyValues:w1={}},Z1)=>{U.factory(!i,I.validation,"storeCode is required","MISSING_STORE_CODE"),U.factory(!t,I.validation,"fieldName is required","MISSING_FIELD_NAME");let E1;if(S)E1=await P(k,g,{entityId:S,fieldName:t});else{U.factory(!E,I.validation,"typeCode is required when entityId is not provided","MISSING_TYPE_CODE");let H1=await $.resolveEntityTypePk(k,g,{storeCode:i,code:E,subtype:x||null});E1=await $.resolveFieldDefinition(k,g,{storeCode:i,fieldName:t,ownerEntityPk:null,entityTypePk:H1})}if(!E1)throw I.notFound(`Field definition not found for field '${t}'`,"FIELD_NOT_FOUND");let T1=E1.getAllowed();if(!T1)return{values:null};if(T1.type==="enum")return{values:T1.values};if(T1.type==="function"){let H1={db:k,fieldDefinitionId:E1.getObjectId(),entityId:S||null,parentId:c||null,typeCode:E||null,subtype:x||null,storeCode:i,dependencyValues:w1,enqueuePostCommitHook:Z1||null};return await q.resolve(T1.name,H1)}throw I.validation(`Unknown allowed type: ${T1.type}`,"INVALID_ALLOWED_TYPE")},L=async(k,g,{entityId:S,writtenFieldName:E,newValue:x,storeCode:c,entityType:i,entitySubtype:t},w1,Z1,E1)=>{if(E1>=5){console.warn(`[FieldService] Dependent field invalidation depth limit (5) reached for entity ${S}, field '${E}'. Halting to prevent circular dependency loop.`);return}let T1;try{T1=await $.getFieldDefinitionsForEntityType(k,g,{storeCode:c,code:i,subtype:t||null})}catch{return}let H1=T1.filter((Q1)=>{let L1=Q1.entity.getAllowed?.();if(!L1||L1.type!=="function")return!1;return(L1.dependsOn||[]).includes(E)});for(let Q1 of H1){let L1=Q1.entity,w8=L1.getName(),G8=(await $.getFieldValue(k,g,{entityId:S,fieldName:w8}))?.getValue()??null;if(G8===null||G8===void 0)continue;let W8=L1.getAllowed(),m1={db:k,fieldDefinitionId:L1.getObjectId(),entityId:S,parentId:null,typeCode:i,subtype:t||null,storeCode:c,projectId:g.projectId||null,dependencyValues:{[E]:x},enqueuePostCommitHook:w1},e1;try{e1=await q.resolve(W8.name,m1)}catch{continue}let{values:J1}=e1;if(J1!==null&&!J1.includes(G8))await $.removeFieldFromEntity(k,g,{entityId:S,fieldName:w8},w1),Z1.push(w8),await L(k,g,{entityId:S,writtenFieldName:w8,newValue:null,storeCode:c,entityType:i,entitySubtype:t},w1,Z1,E1+1)}};return Object.freeze({createFieldDefinition:J,readFieldDefinition:W,updateFieldDefinitionConfig:w,getFieldDefinitionsForOwner:Z,getFieldDefinitionsForType:H,deleteFieldDefinition:X,addClassAssociation:G,resolveFieldDefinitionForEntity:P,setFieldValue:v,deleteFieldValue:V,addFieldToEntity:D,updateFieldValue:f,removeFieldFromEntity:C,validateRequiredFields:j,resolveAllowedValues:h,setServiceDependencies:Y})};var HF=Object.freeze({create:Tn8});h6();function VK(){}VK.prototype={diff:function(K,q){var Y,z=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},J=z.callback;if(typeof z==="function")J=z,z={};var W=this;function Z(C){if(C=W.postProcess(C,z),J)return setTimeout(function(){J(C)},0),!0;else return C}K=this.castInput(K,z),q=this.castInput(q,z),K=this.removeEmpty(this.tokenize(K,z)),q=this.removeEmpty(this.tokenize(q,z));var O=q.length,H=K.length,X=1,w=O+H;if(z.maxEditLength!=null)w=Math.min(w,z.maxEditLength);var G=(Y=z.timeout)!==null&&Y!==void 0?Y:1/0,T=Date.now()+G,P=[{oldPos:-1,lastComponent:void 0}],v=this.extractCommon(P[0],q,K,0,z);if(P[0].oldPos+1>=H&&v+1>=O)return Z(GA1(W,P[0].lastComponent,q,K,W.useLongestToken));var V=-1/0,j=1/0;function D(){for(var C=Math.max(V,-X);C<=Math.min(j,X);C+=2){var h=void 0,L=P[C-1],k=P[C+1];if(L)P[C-1]=void 0;var g=!1;if(k){var S=k.oldPos-C;g=k&&0<=S&&S<O}var E=L&&L.oldPos+1<H;if(!g&&!E){P[C]=void 0;continue}if(!E||g&&L.oldPos<k.oldPos)h=W.addToPath(k,!0,!1,0,z);else h=W.addToPath(L,!1,!0,1,z);if(v=W.extractCommon(h,q,K,C,z),h.oldPos+1>=H&&v+1>=O)return Z(GA1(W,h.lastComponent,q,K,W.useLongestToken));else{if(P[C]=h,h.oldPos+1>=H)j=Math.min(j,C-1);if(v+1>=O)V=Math.max(V,C+1)}}X++}if(J)(function C(){setTimeout(function(){if(X>w||Date.now()>T)return J();if(!D())C()},0)})();else while(X<=w&&Date.now()<=T){var f=D();if(f)return f}},addToPath:function(K,q,Y,z,J){var W=K.lastComponent;if(W&&!J.oneChangePerToken&&W.added===q&&W.removed===Y)return{oldPos:K.oldPos+z,lastComponent:{count:W.count+1,added:q,removed:Y,previousComponent:W.previousComponent}};else return{oldPos:K.oldPos+z,lastComponent:{count:1,added:q,removed:Y,previousComponent:W}}},extractCommon:function(K,q,Y,z,J){var W=q.length,Z=Y.length,O=K.oldPos,H=O-z,X=0;while(H+1<W&&O+1<Z&&this.equals(Y[O+1],q[H+1],J))if(H++,O++,X++,J.oneChangePerToken)K.lastComponent={count:1,previousComponent:K.lastComponent,added:!1,removed:!1};if(X&&!J.oneChangePerToken)K.lastComponent={count:X,previousComponent:K.lastComponent,added:!1,removed:!1};return K.oldPos=O,H},equals:function(K,q,Y){if(Y.comparator)return Y.comparator(K,q);else return K===q||Y.ignoreCase&&K.toLowerCase()===q.toLowerCase()},removeEmpty:function(K){var q=[];for(var Y=0;Y<K.length;Y++)if(K[Y])q.push(K[Y]);return q},castInput:function(K){return K},tokenize:function(K){return Array.from(K)},join:function(K){return K.join("")},postProcess:function(K){return K}};function GA1($,K,q,Y,z){var J=[],W;while(K)J.push(K),W=K.previousComponent,delete K.previousComponent,K=W;J.reverse();var Z=0,O=J.length,H=0,X=0;for(;Z<O;Z++){var w=J[Z];if(!w.removed){if(!w.added&&z){var G=q.slice(H,H+w.count);G=G.map(function(T,P){var v=Y[X+P];return v.length>T.length?v:T}),w.value=$.join(G)}else w.value=$.join(q.slice(H,H+w.count));if(H+=w.count,!w.added)X+=w.count}else w.value=$.join(Y.slice(X,X+w.count)),X+=w.count}return J}var NS4=new VK;function TA1($,K){var q;for(q=0;q<$.length&&q<K.length;q++)if($[q]!=K[q])return $.slice(0,q);return $.slice(0,q)}function PA1($,K){var q;if(!$||!K||$[$.length-1]!=K[K.length-1])return"";for(q=0;q<$.length&&q<K.length;q++)if($[$.length-(q+1)]!=K[K.length-(q+1)])return $.slice(-q);return $.slice(-q)}function wF($,K,q){if($.slice(0,K.length)!=K)throw Error("string ".concat(JSON.stringify($)," doesn't start with prefix ").concat(JSON.stringify(K),"; this is a bug"));return q+$.slice(K.length)}function GF($,K,q){if(!K)return $+q;if($.slice(-K.length)!=K)throw Error("string ".concat(JSON.stringify($)," doesn't end with suffix ").concat(JSON.stringify(K),"; this is a bug"));return $.slice(0,-K.length)+q}function XA($,K){return wF($,K,"")}function qR($,K){return GF($,K,"")}function vA1($,K){return K.slice(0,Pn8($,K))}function Pn8($,K){var q=0;if($.length>K.length)q=$.length-K.length;var Y=K.length;if($.length<K.length)Y=$.length;var z=Array(Y),J=0;z[0]=0;for(var W=1;W<Y;W++){if(K[W]==K[J])z[W]=z[J];else z[W]=J;while(J>0&&K[W]!=K[J])J=z[J];if(K[W]==K[J])J++}J=0;for(var Z=q;Z<$.length;Z++){while(J>0&&$[Z]!=K[J])J=z[J];if($[Z]==K[J])J++}return J}var _R="a-zA-Z0-9_\\u{C0}-\\u{FF}\\u{D8}-\\u{F6}\\u{F8}-\\u{2C6}\\u{2C8}-\\u{2D7}\\u{2DE}-\\u{2FF}\\u{1E00}-\\u{1EFF}",vn8=new RegExp("[".concat(_R,"]+|\\s+|[^").concat(_R,"]"),"ug"),zR=new VK;zR.equals=function($,K,q){if(q.ignoreCase)$=$.toLowerCase(),K=K.toLowerCase();return $.trim()===K.trim()};zR.tokenize=function($){var K=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},q;if(K.intlSegmenter){if(K.intlSegmenter.resolvedOptions().granularity!="word")throw Error('The segmenter passed must have a granularity of "word"');q=Array.from(K.intlSegmenter.segment($),function(J){return J.segment})}else q=$.match(vn8)||[];var Y=[],z=null;return q.forEach(function(J){if(/\s/.test(J))if(z==null)Y.push(J);else Y.push(Y.pop()+J);else if(/\s/.test(z))if(Y[Y.length-1]==z)Y.push(Y.pop()+J);else Y.push(z+J);else Y.push(J);z=J}),Y};zR.join=function($){return $.map(function(K,q){if(q==0)return K;else return K.replace(/^\s+/,"")}).join("")};zR.postProcess=function($,K){if(!$||K.oneChangePerToken)return $;var q=null,Y=null,z=null;if($.forEach(function(J){if(J.added)Y=J;else if(J.removed)z=J;else{if(Y||z)AA1(q,z,Y,J);q=J,Y=null,z=null}}),Y||z)AA1(q,z,Y,null);return $};function AA1($,K,q,Y){if(K&&q){var z=K.value.match(/^\s*/)[0],J=K.value.match(/\s*$/)[0],W=q.value.match(/^\s*/)[0],Z=q.value.match(/\s*$/)[0];if($){var O=TA1(z,W);$.value=GF($.value,W,O),K.value=XA(K.value,O),q.value=XA(q.value,O)}if(Y){var H=PA1(J,Z);Y.value=wF(Y.value,Z,H),K.value=qR(K.value,H),q.value=qR(q.value,H)}}else if(q){if($)q.value=q.value.replace(/^\s*/,"");if(Y)Y.value=Y.value.replace(/^\s*/,"")}else if($&&Y){var X=Y.value.match(/^\s*/)[0],w=K.value.match(/^\s*/)[0],G=K.value.match(/\s*$/)[0],T=TA1(X,w);K.value=XA(K.value,T);var P=PA1(XA(X,T),G);K.value=qR(K.value,P),Y.value=wF(Y.value,X,P),$.value=GF($.value,X,X.slice(0,X.length-P.length))}else if(Y){var v=Y.value.match(/^\s*/)[0],V=K.value.match(/\s*$/)[0],j=vA1(V,v);K.value=qR(K.value,j)}else if($){var D=$.value.match(/\s*$/)[0],f=K.value.match(/^\s*/)[0],C=vA1(D,f);K.value=XA(K.value,C)}}var An8=new VK;An8.tokenize=function($){var K=new RegExp("(\\r?\\n)|[".concat(_R,"]+|[^\\S\\n\\r]+|[^").concat(_R,"]"),"ug");return $.match(K)||[]};var JR=new VK;JR.tokenize=function($,K){if(K.stripTrailingCr)$=$.replace(/\r\n/g,`
761
+ WHERE rowid = ${e4}`.execute(F)}}let i8=await N1(F,i1,{id:m});return U.factory(!i8,I.notFound,`${_1} not found after update: ${m}`,"NOT_FOUND"),{...i8,oldValues:o1}},a1=async(F,i1,{id:m,subtype:p})=>{let b=k4(m);U.factory(!b,I.validation,`Invalid content ID: ${m}`,"INVALID_ID");let{typeCode:Q,seq:l}=b,a=b6.getContentTypeLabel(Q),_1=b6.getEntityFactory(Q),O1=await F.selectFrom("entities").selectAll().where("store_id","=",Y).where("seq","=",l).where("type_code","=",Q).where("deleted_at","is",null).executeTakeFirst();U.factory(!O1,I.notFound,`${a} not found: ${m}`,"NOT_FOUND");let V1=O1.id,v1=await y8.readEntityTypeId(F,i1,Q,p??null),o1=p8();await F.updateTable("entities").set({entity_type_id:v1,updated_at:o1}).where("id","=",V1).execute(),z.setIdByPk(V1,m);let q8=await N1(F,i1,{id:m});return U.factory(!q8,I.notFound,`${a} not found after type update: ${m}`,"NOT_FOUND"),q8},K8=async(F,i1,{entityId:m,entityTypePk:p})=>{let b=k4(m);U.factory(!b,I.validation,`Invalid entity ID: ${m}`,"INVALID_ID");let{typeCode:Q,seq:l}=b,a=await F.selectFrom("entities").select("id").where("store_id","=",Y).where("seq","=",l).where("type_code","=",Q).where("deleted_at","is",null).executeTakeFirst();U.factory(!a,I.notFound,`Entity not found: ${m}`,"NOT_FOUND");let _1=a.id,O1=await F.selectFrom("field_definitions as fd").innerJoin("class_field_defs as cfd","cfd.field_definition_id","fd.id").select(["fd.id","fd.primitive_type"]).where("cfd.class_type_id","=",p).execute(),V1=0;for(let v1 of O1)await O.deleteTypedField(F,_1,v1.id,v1.primitive_type),V1++;return{deletedCount:V1}},y1=async(F,i1,{id:m})=>{let p=k4(m);U.factory(!p,I.validation,`Invalid content ID: ${m}`,"INVALID_ID");let{typeCode:b,seq:Q}=p,l=b6.getContentTypeLabel(b),a=await F.selectFrom("entities").selectAll().where("store_id","=",Y).where("seq","=",Q).where("type_code","=",b).where("deleted_at","is",null).executeTakeFirst();U.factory(!a,I.notFound,`${l} not found: ${m}`,"NOT_FOUND");let _1=a.id;z.setIdByPk(_1,m);let O1=a.path;await O.initSystemFieldDefCache(F);let V1=await y8.readEntityTypeId(F,i1,"v",null),v1=O.getSystemFieldDef("document",V1);if(v1){let q8=await F.selectFrom("obj_ref_fields as orf").innerJoin("entities as ve","ve.id","orf.entity_id").select("orf.entity_id as version_pk").where("orf.field_definition_id","=",v1.pk).where("orf.target_entity_id","=",_1).where("ve.deleted_at","is",null).execute();X2("Cascade soft-deleting %d version entities for document %s",q8.length,m);let j8=await y8.readEntityTypeId(F,i1,b,null),R8=O.getSystemFieldDef("draft_version",j8),l8=O.getSystemFieldDef("latest_published_version",j8),m8=[R8?.pk,l8?.pk].filter(Boolean);if(m8.length>0)await F.deleteFrom("obj_ref_fields").where("entity_id","=",_1).where("field_definition_id","in",m8).execute();let i8=q8.map((U8)=>U8.version_pk);if(i8.length>0){let U8=p8();await F.updateTable("entities").set({deleted_at:U8}).where("id","in",i8).execute()}}let o1=p8();return await F.updateTable("entities").set({deleted_at:o1}).where("id","=",_1).execute(),{id:m,deleted:!0,path:O1}},h1=async(F,i1,{type:m,limit:p=50,offset:b=0}={})=>{let l=F.selectFrom("entities as e").leftJoin("entities as parent","parent.id","e.parent_folder_id").select(["e.id as pk","e.object_id","e.type_code","e.name","e.path","e.deleted_at","e.parent_folder_id","parent.object_id as parent_object_id"]).where("e.store_id","=",Y).where("e.deleted_at","is not",null).where("e.type_code","!=","v").orderBy("e.deleted_at","desc").limit(p).offset(b);if(m)l=l.where("e.type_code","=",m);let a=await l.execute(),_1=[];for(let O1 of a){let V1=O1.deleted_at,v1=new Date(V1),q8=Math.floor((new Date-v1)/86400000),j8=Math.max(0,30-q8),R8=O1.path;_1.push({id:O1.object_id,name:O1.name,type:O1.type_code,deletedAt:V1,daysUntilPurge:j8,parentId:O1.parent_object_id,originalPath:R8})}return _1},z8=async(F,i1,m,p)=>{await O.initSystemFieldDefCache(F);let b=await y8.readEntityTypeId(F,i1,"v",null),Q=O.getSystemFieldDef("document",b);if(!Q)return;let l=await F.selectFrom("obj_ref_fields as orf").innerJoin("entities as ve","ve.id","orf.entity_id").select(["orf.entity_id as version_pk","ve.deleted_at"]).where("orf.field_definition_id","=",Q.pk).where("orf.target_entity_id","=",m).execute();if(l.length===0)return;let a=l.map((U8)=>U8.version_pk),_1=l.filter((U8)=>U8.deleted_at).map((U8)=>U8.version_pk);if(_1.length>0)await F.updateTable("entities").set({deleted_at:null}).where("id","in",_1).execute();let O1=O.getSystemFieldDef("version_number",b),V1=await F.selectFrom("int_fields").select(["entity_id","value"]).where("entity_id","in",a).where("field_definition_id","=",O1.pk).execute(),v1=new Map(V1.map((U8)=>[U8.entity_id,U8.value])),o1=O.getSystemFieldDef("published_at",b),q8=await F.selectFrom("date_fields").select(["entity_id","value"]).where("entity_id","in",a).where("field_definition_id","=",o1.pk).execute(),j8=new Map(q8.map((U8)=>[U8.entity_id,U8.value])),R8=a.map((U8)=>({version_pk:U8,version_number:v1.get(U8)??0,published_at:j8.get(U8)??null})),l8=R8.filter((U8)=>U8.published_at).sort((U8,M6)=>M6.version_number-U8.version_number),m8=R8.find((U8)=>!U8.published_at),i8=await y8.readEntityTypeId(F,i1,p,null);if(l8.length>0){let U8=O.getSystemFieldDef("latest_published_version",i8);if(U8)await F.insertInto("obj_ref_fields").values({entity_id:m,field_definition_id:U8.pk,target_entity_id:l8[0].version_pk,ordinal:0}).onConflict((M6)=>M6.columns(["entity_id","field_definition_id","ordinal"]).doUpdateSet({target_entity_id:l8[0].version_pk})).execute()}if(m8){let U8=O.getSystemFieldDef("draft_version",i8);if(U8)await F.insertInto("obj_ref_fields").values({entity_id:m,field_definition_id:U8.pk,target_entity_id:m8.version_pk,ordinal:0}).onConflict((M6)=>M6.columns(["entity_id","field_definition_id","ordinal"]).doUpdateSet({target_entity_id:m8.version_pk})).execute()}},E8=async(F,i1,{id:m})=>{let p=await F.selectFrom("entities as e").leftJoin("entities as parent","parent.id","e.parent_folder_id").select(["e.id","e.type_code","e.name","e.parent_folder_id","e.deleted_at","e.entity_type_id","e.path","parent.object_id as parent_object_id"]).where("e.object_id","=",m).where("e.store_id","=",Y).executeTakeFirst();if(U.factory(!p,I.notFound,`Entity not found: ${m}`,"NOT_FOUND"),U.factory(!p.deleted_at,I.validation,`Entity is not deleted: ${m}`,"INVALID_STATE"),p.parent_folder_id){let v1=await F.selectFrom("entities").select(["id","deleted_at"]).where("id","=",p.parent_folder_id).executeTakeFirst();U.factory(!v1||v1.deleted_at,I.conflict,"Cannot restore: parent folder is also deleted","PARENT_DELETED")}let b=p.name,Q="",l=0;while(!0){let v1=l===0?b:b+Q;if(!await F.selectFrom("entities").select("id").where("store_id","=",Y).where("parent_folder_id",p.parent_folder_id===null?"is":"=",p.parent_folder_id).where("name","=",v1).where("deleted_at","is",null).executeTakeFirst()){b=v1;break}l++,Q=l===1?"-restored":`-restored-${l}`}let a=await Z.getParentStoredPath(F,p.parent_folder_id),_1=!["a","r"].includes(p.type_code)?a!=null?`${a}/${b}`:b:null,O1=_1!==null?{deleted_at:null,name:b,path:_1}:{deleted_at:null,name:b};if(await F.updateTable("entities").set(O1).where("id","=",p.id).execute(),["d","t"].includes(p.type_code))await z8(F,i1,p.id,p.type_code);let V1=[];if(["f","s"].includes(p.type_code))V1=(await r1(F,i1,p.id,p.path,_1)).descendantIds;return{id:m,name:b,restored:!0,renamed:b!==p.name,parentFolderId:p.parent_object_id??null,type:p.type_code,descendantIds:V1}},r1=async(F,i1,m,p,b)=>{let Q=await $F(F,m,Y,{includeDeleted:!0}),l=[m,...Q],a=await F.selectFrom("entities").select(["id","name","parent_folder_id","type_code"]).where("id","in",l).execute();for(let v1 of a)if(await F.selectFrom("entities").select("id").where("store_id","=",Y).where("parent_folder_id",v1.parent_folder_id===null?"is":"=",v1.parent_folder_id).where("name","=",v1.name).where("deleted_at","is",null).where("id","!=",v1.id).executeTakeFirst()){let q8=1,j8;while(!0){let U8=q8===1?"-restored":`-restored-${q8}`;if(j8=v1.name+U8,!await F.selectFrom("entities").select("id").where("store_id","=",Y).where("parent_folder_id",v1.parent_folder_id===null?"is":"=",v1.parent_folder_id).where("name","=",j8).where("deleted_at","is",null).executeTakeFirst())break;q8++}let R8=v1.parent_folder_id?await F.selectFrom("entities").select("path").where("id","=",v1.parent_folder_id).executeTakeFirst():null,l8=R8?R8.path:null,m8=!["a","r"].includes(v1.type_code)?l8!=null?`${l8}/${j8}`:j8:null,i8=m8!==null?{name:j8,path:m8}:{name:j8};await F.updateTable("entities").set(i8).where("id","=",v1.id).execute()}let _1=new Map;for(let v1 of a){let o1=v1.parent_folder_id??"null";if(!_1.has(o1))_1.set(o1,[]);_1.get(o1).push(v1)}for(let[v1,o1]of _1){let q8=new Map;for(let R8 of o1){let m8=(await F.selectFrom("entities").select("name").where("id","=",R8.id).executeTakeFirst())?.name??R8.name;q8.set(m8,(q8.get(m8)||0)+1)}let j8=new Map;for(let R8 of o1){let m8=(await F.selectFrom("entities").select("name").where("id","=",R8.id).executeTakeFirst())?.name??R8.name;if(q8.get(m8)>1){let i8=j8.get(m8)||0;if(i8>0){let U8=i8+1,M6;while(!0){let h4=U8===1?"-restored":`-restored-${U8}`;if(M6=m8+h4,!await F.selectFrom("entities").select("id").where("store_id","=",Y).where("parent_folder_id",R8.parent_folder_id===null?"is":"=",R8.parent_folder_id).where("name","=",M6).executeTakeFirst())break;U8++}let l6=R8.parent_folder_id?await F.selectFrom("entities").select("path").where("id","=",R8.parent_folder_id).executeTakeFirst():null,y4=l6?l6.path:null,_2=!["a","r"].includes(R8.type_code)?y4!=null?`${y4}/${M6}`:M6:null,O4=_2!==null?{name:M6,path:_2}:{name:M6};await F.updateTable("entities").set(O4).where("id","=",R8.id).execute()}j8.set(m8,i8+1)}}}if(await F.updateTable("entities").set({deleted_at:null}).where("id","in",l).execute(),p&&b&&p!==b)await Z.cascadePathUpdate(F,p,b,Y);let O1=await F.selectFrom("entities").select(["id","type_code"]).where("id","in",l).where("type_code","in",["d","t"]).execute();for(let v1 of O1)await z8(F,i1,v1.id,v1.type_code);let V1=[];if(Q.length>0)V1=(await F.selectFrom("entities").select("object_id").where("id","in",Q).execute()).map((o1)=>o1.object_id);return{restoredCount:l.length,descendantIds:V1}},X8=async(F,i1,{id:m,content:p,sessionId:b})=>{let Q=k4(m);U.factory(!Q,I.validation,`Invalid content ID: ${m}`,"INVALID_ID"),U.factory(!b,I.validation,"sessionId is required","MISSING_SESSION_ID");let{typeCode:l,seq:a}=Q,_1=b6.getContentTypeLabel(l);await O.initSystemFieldDefCache(F);let O1=p8(),V1=new Date(Date.now()-$z).toISOString(),v1=await F.selectFrom("entities as e").innerJoin("entity_types as et","et.id","e.entity_type_id").select(["e.id","e.name","e.entity_type_id","et.subtype"]).where("e.store_id","=",Y).where("e.type_code","=",l).where("e.seq","=",a).where("e.deleted_at","is",null).executeTakeFirst();U.factory(!v1,I.notFound,`${_1} not found: ${m}`,"NOT_FOUND");let{id:o1,name:q8,entity_type_id:j8}=v1,R8=j8;if(v1.subtype)R8=await y8.readEntityTypeId(F,i1,l,null);let l8=O.getSystemFieldDef("edit_session_id",R8),m8=O.getSystemFieldDef("edit_last_activity_at",R8);if(l8&&m8){let O4=await F.selectFrom("string_fields").select("value").where("entity_id","=",o1).where("field_definition_id","=",l8.pk).executeTakeFirst();if(O4&&O4.value!==b){let h4=await F.selectFrom("date_fields").select("value").where("entity_id","=",o1).where("field_definition_id","=",m8.pk).executeTakeFirst();if(h4&&h4.value>=V1)U.factory(!0,I.conflict,"Document is locked by another session","EDIT_CONFLICT")}}let i8=O.getSystemFieldDef("draft_version",R8);if(!i8)throw Error(`System field definition "draft_version" not found for base type ${l}`);let M6=(await F.selectFrom("obj_ref_fields").select("target_entity_id").where("entity_id","=",o1).where("field_definition_id","=",i8.pk).executeTakeFirst())?.target_entity_id??null;if(M6){await W6`DELETE FROM entity_content_fts WHERE rowid = ${M6}`.execute(F),await F.updateTable("entity_content").set({content_text:p,updated_at:O1}).where("entity_id","=",M6).execute(),await W6`INSERT INTO entity_content_fts(rowid, name, content_text) VALUES (${M6}, ${q8}, ${p})`.execute(F);let O4=await y8.readEntityTypeId(F,i1,"v",null),h4=O.getSystemFieldDef("content_hash",O4);if(!h4)throw Error('System field definition "content_hash" not found for version type');let Y2=fi8("sha256").update(p||"","utf8").digest("hex");await F.updateTable("string_fields").set({value:Y2}).where("entity_id","=",M6).where("field_definition_id","=",h4.pk).execute();try{let e4=ZA(p);X2("Extracted content references for draft update: attachments=%d, includes=%d, hyperlinks=%d",e4.attachments.length,e4.includes.length,e4.hyperlinks.length);let U2=O.getSystemFieldDef("attachments",O4),G4=O.getSystemFieldDef("includes",O4),C2=O.getSystemFieldDef("hyperlinks",O4),N4=[];if(U2)N4.push(U2.pk);if(G4)N4.push(G4.pk);if(C2)N4.push(C2.pk);if(N4.length>0)await F.deleteFrom("obj_ref_fields").where("entity_id","=",M6).where("field_definition_id","in",N4).execute();let S3=async(F$,C7,e5)=>{if(!F$){X2('System field definition "%s" not found for version type - skipping',e5);return}let E7=0;for(let L7 of C7){let p$=await F.selectFrom("entities").select("id").where("object_id","=",L7).where("deleted_at","is",null).executeTakeFirst();if(!p$){X2("Target entity not found for %s reference: %s - skipping",e5,L7);continue}await F.insertInto("obj_ref_fields").values({entity_id:M6,field_definition_id:F$.pk,target_entity_id:p$.id,ordinal:E7}).execute(),E7++}if(E7>0)X2("Populated %d %s references for draft version pk=%d",E7,e5,M6)};await S3(U2,e4.attachments,"attachments"),await S3(G4,e4.includes,"includes"),await S3(C2,e4.hyperlinks,"hyperlinks")}catch(e4){X2("Content reference extraction failed for draft version pk=%d: %s - continuing with draft save",M6,e4.message)}X2("Updated draft version content for %s (version pk=%d)",m,M6)}else{let O4=await y8.readEntityTypeId(F,i1,"v",null),h4=O.getSystemFieldDef("version_number",O4),Y2=O.getSystemFieldDef("published_at",O4),e4=O.getSystemFieldDef("document",O4),U2=0;if(e4&&h4&&Y2)U2=(await F.selectFrom("obj_ref_fields as orf").innerJoin("int_fields as if",(S3)=>S3.onRef("if.entity_id","=","orf.entity_id").on("if.field_definition_id","=",h4.pk)).innerJoin("date_fields as df",(S3)=>S3.onRef("df.entity_id","=","orf.entity_id").on("df.field_definition_id","=",Y2.pk)).select(F.fn.max("if.value").as("max_version")).where("orf.field_definition_id","=",e4.pk).where("orf.target_entity_id","=",o1).executeTakeFirst())?.max_version??0;let G4=U2+1,C2=await A1(F,i1,{documentPk:o1,documentObjectId:m,documentEntityTypeId:j8,documentName:q8,content:p,versionNumber:G4,publishedAt:null});await F.insertInto("obj_ref_fields").values({entity_id:o1,field_definition_id:i8.pk,target_entity_id:C2.pk,ordinal:0}).execute(),X2("Created new draft version %s (pk=%d) for %s, version_number=%d",C2.objectId,C2.pk,m,G4)}let y4=!await Q6(F,i1,{id:m,sessionId:b}),_2=await N1(F,i1,{id:m});return U.factory(!_2,I.notFound,`${_1} not found after draft save: ${m}`,"NOT_FOUND"),{..._2,lockLost:y4}},o8=async(F,i1,{id:m,sessionId:p})=>{let b=k4(m);U.factory(!b,I.validation,`Invalid content ID: ${m}`,"INVALID_ID");let{typeCode:Q,seq:l}=b,a=b6.getContentTypeLabel(Q);await O.initSystemFieldDefCache(F);let _1=p8(),O1=new Date(Date.now()-$z).toISOString(),V1=await F.selectFrom("entities as e").innerJoin("entity_types as et","et.id","e.entity_type_id").select(["e.id","e.entity_type_id","et.subtype"]).where("e.store_id","=",Y).where("e.type_code","=",Q).where("e.seq","=",l).where("e.deleted_at","is",null).executeTakeFirst();U.factory(!V1,I.notFound,`${a} not found: ${m}`,"NOT_FOUND");let{id:v1,entity_type_id:q8}=V1;if(V1.subtype)q8=await y8.readEntityTypeId(F,i1,Q,null);let j8=O.getSystemFieldDef("draft_version",q8),R8=O.getSystemFieldDef("latest_published_version",q8);if(!j8)throw Error(`System field definition "draft_version" not found for base type ${Q}`);let l8=await F.selectFrom("obj_ref_fields").select("target_entity_id").where("entity_id","=",v1).where("field_definition_id","=",j8.pk).executeTakeFirst();U.factory(!l8,I.notFound,`No draft found for ${a}: ${m}`,"DRAFT_NOT_FOUND");let m8=l8.target_entity_id,i8=O.getSystemFieldDef("edit_session_id",q8),U8=O.getSystemFieldDef("edit_last_activity_at",q8),M6=O.getSystemFieldDef("edit_started_at",q8);if(p&&i8&&U8){let N4=await F.selectFrom("string_fields").select("value").where("entity_id","=",v1).where("field_definition_id","=",i8.pk).executeTakeFirst();if(N4&&N4.value!==p){let S3=await F.selectFrom("date_fields").select("value").where("entity_id","=",v1).where("field_definition_id","=",U8.pk).executeTakeFirst();if(S3&&S3.value>=O1)U.factory(!0,I.conflict,"Document is locked by another session","EDIT_CONFLICT")}}let l6=await y8.readEntityTypeId(F,i1,"v",null),y4=O.getSystemFieldDef("version_number",l6),_2=O.getSystemFieldDef("published_at",l6),O4=O.getSystemFieldDef("document",l6);if(!y4||!_2||!O4)throw Error("Required version field definitions not found");let Y2=(await F.selectFrom("int_fields").select("value").where("entity_id","=",m8).where("field_definition_id","=",y4.pk).executeTakeFirst())?.value??1,G4=((await F.selectFrom("obj_ref_fields as orf").innerJoin("int_fields as if",(N4)=>N4.onRef("if.entity_id","=","orf.entity_id").on("if.field_definition_id","=",y4.pk)).innerJoin("date_fields as df",(N4)=>N4.onRef("df.entity_id","=","orf.entity_id").on("df.field_definition_id","=",_2.pk)).select(F.fn.max("if.value").as("max_version")).where("orf.field_definition_id","=",O4.pk).where("orf.target_entity_id","=",v1).executeTakeFirst())?.max_version??0)+1;if(Y2!==G4)await F.updateTable("int_fields").set({value:G4}).where("entity_id","=",m8).where("field_definition_id","=",y4.pk).execute();if(await F.insertInto("date_fields").values({entity_id:m8,field_definition_id:_2.pk,value:_1,ordinal:0}).execute(),R8){let N4=await F.selectFrom("obj_ref_fields").select("target_entity_id").where("entity_id","=",v1).where("field_definition_id","=",R8.pk).executeTakeFirst();if(N4)await F.updateTable("obj_ref_fields").set({target_entity_id:m8}).where("entity_id","=",v1).where("field_definition_id","=",R8.pk).execute();else await F.insertInto("obj_ref_fields").values({entity_id:v1,field_definition_id:R8.pk,target_entity_id:m8,ordinal:0}).execute();if(N4){let S3=N4.target_entity_id;await W6`DELETE FROM entity_content_fts WHERE rowid = ${S3}`.execute(F),X2("Deleted stale FTS entry for previous published version (pk=%d) of %s",S3,m)}else X2("First-time publish for %s, no previous FTS entry to clean up",m)}if(await F.deleteFrom("obj_ref_fields").where("entity_id","=",v1).where("field_definition_id","=",j8.pk).execute(),i8)await F.deleteFrom("string_fields").where("entity_id","=",v1).where("field_definition_id","=",i8.pk).execute();if(M6)await F.deleteFrom("date_fields").where("entity_id","=",v1).where("field_definition_id","=",M6.pk).execute();if(U8)await F.deleteFrom("date_fields").where("entity_id","=",v1).where("field_definition_id","=",U8.pk).execute();X2("Published version %d for %s (version pk=%d)",G4,m,m8);let C2=await N1(F,i1,{id:m});return U.factory(!C2,I.notFound,`${a} not found after publish: ${m}`,"NOT_FOUND"),C2},$6=async(F,i1,{id:m})=>{let p=k4(m);U.factory(!p,I.validation,`Invalid content ID: ${m}`,"INVALID_ID");let{typeCode:b,seq:Q}=p,l=b6.getContentTypeLabel(b);await O.initSystemFieldDefCache(F);let a=await F.selectFrom("entities as e").innerJoin("entity_types as et","et.id","e.entity_type_id").select(["e.id","e.entity_type_id","et.subtype"]).where("e.store_id","=",Y).where("e.type_code","=",b).where("e.seq","=",Q).where("e.deleted_at","is",null).executeTakeFirst();U.factory(!a,I.notFound,`${l} not found: ${m}`,"NOT_FOUND");let{id:_1,entity_type_id:O1}=a;if(a.subtype)O1=await y8.readEntityTypeId(F,i1,b,null);let V1=O.getSystemFieldDef("draft_version",O1);if(!V1)throw Error(`System field definition "draft_version" not found for base type ${b}`);let v1=await F.selectFrom("obj_ref_fields").select("target_entity_id").where("entity_id","=",_1).where("field_definition_id","=",V1.pk).executeTakeFirst();if(v1){let q8=v1.target_entity_id;await F.deleteFrom("obj_ref_fields").where("entity_id","=",_1).where("field_definition_id","=",V1.pk).execute(),await W6`DELETE FROM entity_content_fts WHERE rowid = ${q8}`.execute(F),await F.deleteFrom("entities").where("id","=",q8).execute(),X2("Discarded draft version (pk=%d) for %s",q8,m)}let o1=await N1(F,i1,{id:m});return U.factory(!o1,I.notFound,`${l} not found after discard: ${m}`,"NOT_FOUND"),o1},v6=async(F,i1,{id:m})=>{let p=k4(m);if(!p)return null;let{typeCode:b,seq:Q}=p;await O.initSystemFieldDefCache(F);let l=await F.selectFrom("entities as e").innerJoin("entity_types as et","et.id","e.entity_type_id").select(["e.id","e.object_id","e.entity_type_id","et.subtype"]).where("e.store_id","=",Y).where("e.type_code","=",b).where("e.seq","=",Q).where("e.deleted_at","is",null).executeTakeFirst();if(!l)return null;let{id:a,entity_type_id:_1}=l;if(l.subtype)_1=await y8.readEntityTypeId(F,i1,b,null);let O1=O.getSystemFieldDef("draft_version",_1);if(!O1)return null;let V1=await F.selectFrom("obj_ref_fields").select("target_entity_id").where("entity_id","=",a).where("field_definition_id","=",O1.pk).executeTakeFirst();if(!V1)return null;let v1=V1.target_entity_id,o1=await F.selectFrom("entity_content").select(["content_text","updated_at"]).where("entity_id","=",v1).executeTakeFirst();if(!o1)return null;return{entityId:l.object_id,content:o1.content_text,updatedAt:o1.updated_at}},H6=async(F,i1,{id:m,versionNumber:p})=>{let b=k4(m);if(!b)return null;let{typeCode:Q,seq:l}=b;await O.initSystemFieldDefCache(F);let a=await F.selectFrom("entities").select(["id","object_id"]).where("store_id","=",Y).where("type_code","=",Q).where("seq","=",l).where("deleted_at","is",null).executeTakeFirst();if(!a)return null;let _1=a.id,O1=await y8.readEntityTypeId(F,i1,"v",null),V1=O.getSystemFieldDef("document",O1),v1=O.getSystemFieldDef("version_number",O1),o1=O.getSystemFieldDef("published_at",O1);if(!V1||!v1)return null;let q8=F.selectFrom("obj_ref_fields as orf").innerJoin("int_fields as if",(m8)=>m8.onRef("if.entity_id","=","orf.entity_id").on("if.field_definition_id","=",v1.pk)).innerJoin("entities as ve","ve.id","orf.entity_id").select(["orf.entity_id as version_pk","ve.updated_at","ve.object_id as version_object_id"]).where("orf.field_definition_id","=",V1.pk).where("orf.target_entity_id","=",_1).where("if.value","=",p).where("ve.deleted_at","is",null),j8;if(o1)j8=await q8.innerJoin("date_fields as df",(m8)=>m8.onRef("df.entity_id","=","orf.entity_id").on("df.field_definition_id","=",o1.pk)).select("df.value as published_at").executeTakeFirst();else j8=await q8.executeTakeFirst();if(!j8)return null;let R8=j8.version_pk,l8=await F.selectFrom("entity_content").select("content_text").where("entity_id","=",R8).executeTakeFirst();return{entityId:a.object_id,versionEntityId:j8.version_object_id,versionNumber:p,content:l8?.content_text??null,publishedAt:j8.published_at??null}},x6=async(F,i1,{id:m})=>{let p=k4(m);if(!p)return[];let{typeCode:b,seq:Q}=p;await O.initSystemFieldDefCache(F);let l=await F.selectFrom("entities").select("id").where("store_id","=",Y).where("type_code","=",b).where("seq","=",Q).where("deleted_at","is",null).executeTakeFirst();if(!l)return[];let a=l.id,_1=await y8.readEntityTypeId(F,i1,"v",null),O1=O.getSystemFieldDef("document",_1),V1=O.getSystemFieldDef("version_number",_1),v1=O.getSystemFieldDef("published_at",_1);if(!O1||!V1||!v1)return[];return(await F.selectFrom("obj_ref_fields as orf").innerJoin("int_fields as if",(q8)=>q8.onRef("if.entity_id","=","orf.entity_id").on("if.field_definition_id","=",V1.pk)).innerJoin("date_fields as df",(q8)=>q8.onRef("df.entity_id","=","orf.entity_id").on("df.field_definition_id","=",v1.pk)).innerJoin("entities as ve","ve.id","orf.entity_id").select(["if.value as version_number","df.value as published_at","ve.object_id as version_object_id"]).where("orf.field_definition_id","=",O1.pk).where("orf.target_entity_id","=",a).where("ve.deleted_at","is",null).orderBy("if.value","desc").execute()).map((q8)=>({versionNumber:q8.version_number,publishedAt:q8.published_at,versionEntityId:q8.version_object_id}))},q6=async(F,i1,m,p,b)=>{let Q=await Z.getParentPk(F,m),l=await F.selectFrom("entities as e").select(["e.id","e.object_id"]).where("e.store_id","=",Y).where("e.type_code","=",b).where("e.parent_folder_id",Q===null?"is":"=",Q).where("e.name","=",p).where("e.deleted_at","is",null).executeTakeFirst();if(!l)return null;return N1(F,i1,{id:l.object_id})},Y6=async(F,i1,{parentId:m,type:p})=>{let b=await Z.getParentPk(F,m),Q=await F.selectFrom("entities as e").select("e.object_id").where("e.store_id","=",Y).where("e.type_code","=",p).where("e.parent_folder_id",b===null?"is":"=",b).where("e.deleted_at","is",null).execute(),l=[];for(let a of Q){let _1=await N1(F,i1,{id:a.object_id});if(_1)l.push(_1)}return l},n4=async(F,i1,{id:m,sessionId:p})=>{let b=k4(m);U.factory(!b,I.validation,`Invalid ID: ${m}`,"INVALID_ID"),await O.initSystemFieldDefCache(F);let Q=p8(),l=new Date(Date.now()-$z).toISOString(),a=await F.selectFrom("entities as e").innerJoin("entity_types as et","et.id","e.entity_type_id").select(["e.id","e.entity_type_id","et.subtype"]).where("e.store_id","=",Y).where("e.type_code","=",b.typeCode).where("e.seq","=",b.seq).where("e.deleted_at","is",null).executeTakeFirst();U.factory(!a,I.notFound,`Entity not found: ${m}`,"ENTITY_NOT_FOUND");let{id:_1,entity_type_id:O1}=a;if(a.subtype)O1=await y8.readEntityTypeId(F,i1,b.typeCode,null);let V1=O.getSystemFieldDef("edit_session_id",O1),v1=O.getSystemFieldDef("edit_started_at",O1),o1=O.getSystemFieldDef("edit_last_activity_at",O1);if(!V1||!v1||!o1)throw Error("Edit state field definitions not found");let q8=await F.selectFrom("string_fields").select("value").where("entity_id","=",_1).where("field_definition_id","=",V1.pk).executeTakeFirst(),j8=await F.selectFrom("date_fields").select("value").where("entity_id","=",_1).where("field_definition_id","=",v1.pk).executeTakeFirst(),R8=await F.selectFrom("date_fields").select("value").where("entity_id","=",_1).where("field_definition_id","=",o1.pk).executeTakeFirst(),l8=q8?.value??null,m8=j8?.value??null,i8=R8?.value??null;if(l8)if(l8===p)return await F.updateTable("date_fields").set({value:Q}).where("entity_id","=",_1).where("field_definition_id","=",v1.pk).execute(),await F.updateTable("date_fields").set({value:Q}).where("entity_id","=",_1).where("field_definition_id","=",o1.pk).execute(),{success:!0};else if(i8&&i8<l)return await F.updateTable("string_fields").set({value:p}).where("entity_id","=",_1).where("field_definition_id","=",V1.pk).execute(),await F.updateTable("date_fields").set({value:Q}).where("entity_id","=",_1).where("field_definition_id","=",v1.pk).execute(),await F.updateTable("date_fields").set({value:Q}).where("entity_id","=",_1).where("field_definition_id","=",o1.pk).execute(),{success:!0};else return{success:!1,meta:{lockedBy:l8,lockedSince:m8,timeoutSeconds:$z/1000}};else return await F.insertInto("string_fields").values({entity_id:_1,field_definition_id:V1.pk,value:p,ordinal:0}).execute(),await F.insertInto("date_fields").values({entity_id:_1,field_definition_id:v1.pk,value:Q,ordinal:0}).execute(),await F.insertInto("date_fields").values({entity_id:_1,field_definition_id:o1.pk,value:Q,ordinal:0}).execute(),{success:!0}},Q6=async(F,i1,{id:m,sessionId:p})=>{let b=k4(m);if(!b)return!1;await O.initSystemFieldDefCache(F);let Q=p8(),l=await F.selectFrom("entities as e").innerJoin("entity_types as et","et.id","e.entity_type_id").select(["e.id","e.entity_type_id","et.subtype"]).where("e.store_id","=",Y).where("e.type_code","=",b.typeCode).where("e.seq","=",b.seq).executeTakeFirst();if(!l)return!1;let{id:a,entity_type_id:_1}=l;if(l.subtype)_1=await y8.readEntityTypeId(F,i1,b.typeCode,null);let O1=O.getSystemFieldDef("edit_session_id",_1),V1=O.getSystemFieldDef("edit_started_at",_1),v1=O.getSystemFieldDef("edit_last_activity_at",_1);if(!O1||!v1)return!1;let o1=await F.selectFrom("string_fields").select("value").where("entity_id","=",a).where("field_definition_id","=",O1.pk).executeTakeFirst();if(!o1||o1.value!==p)return!1;return((await F.updateTable("date_fields").set({value:Q}).where("entity_id","=",a).where("field_definition_id","=",v1.pk).execute())[0]?.numUpdatedRows||0)>0},S4=async(F,i1,{id:m})=>{let p=k4(m);U.factory(!p,I.validation,`Invalid ID: ${m}`,"INVALID_ID"),await O.initSystemFieldDefCache(F);let b=await F.selectFrom("entities as e").innerJoin("entity_types as et","et.id","e.entity_type_id").select(["e.id","e.entity_type_id","et.subtype"]).where("e.store_id","=",Y).where("e.type_code","=",p.typeCode).where("e.seq","=",p.seq).executeTakeFirst();U.factory(!b,I.notFound,`Entity not found: ${m}`,"ENTITY_NOT_FOUND");let{id:Q,entity_type_id:l}=b;if(b.subtype)l=await y8.readEntityTypeId(F,i1,p.typeCode,null);let a=O.getSystemFieldDef("edit_session_id",l),_1=O.getSystemFieldDef("edit_started_at",l),O1=O.getSystemFieldDef("edit_last_activity_at",l);if(a)await F.deleteFrom("string_fields").where("entity_id","=",Q).where("field_definition_id","=",a.pk).execute();if(_1)await F.deleteFrom("date_fields").where("entity_id","=",Q).where("field_definition_id","=",_1.pk).execute();if(O1)await F.deleteFrom("date_fields").where("entity_id","=",Q).where("field_definition_id","=",O1.pk).execute()},e6=async(F,i1,{id:m})=>{let p=k4(m);if(!p)return null;await O.initSystemFieldDefCache(F);let b=await F.selectFrom("entities as e").innerJoin("entity_types as et","et.id","e.entity_type_id").select(["e.id","e.entity_type_id","et.subtype"]).where("e.store_id","=",Y).where("e.type_code","=",p.typeCode).where("e.seq","=",p.seq).executeTakeFirst();if(!b)return null;let{id:Q,entity_type_id:l}=b;if(b.subtype)l=await y8.readEntityTypeId(F,i1,p.typeCode,null);let a=O.getSystemFieldDef("edit_session_id",l),_1=O.getSystemFieldDef("edit_started_at",l),O1=O.getSystemFieldDef("edit_last_activity_at",l);if(!a)return null;let V1=await F.selectFrom("string_fields").select("value").where("entity_id","=",Q).where("field_definition_id","=",a.pk).executeTakeFirst();if(!V1)return null;let v1=null,o1=null;if(_1)v1=(await F.selectFrom("date_fields").select("value").where("entity_id","=",Q).where("field_definition_id","=",_1.pk).executeTakeFirst())?.value??null;if(O1)o1=(await F.selectFrom("date_fields").select("value").where("entity_id","=",Q).where("field_definition_id","=",O1.pk).executeTakeFirst())?.value??null;return{sessionId:V1.value,startedAt:v1,lastActivityAt:o1}},n1=async(F,i1,{storeCode:m})=>{if(m!==void 0)h(m);let p=await y8.readEntityTypeId(F,i1,"f","root_s"),b=await F.selectFrom("entities").innerJoin("entity_types","entity_types.id","entities.entity_type_id").selectAll("entities").select("entity_types.subtype").where("entities.store_id","=",Y).where("entities.entity_type_id","=",p).where("entities.deleted_at","is",null).executeTakeFirst();if(!b)return null;let{id:Q,object_id:l}=b;z.setIdByPk(Q,l);let a=b.path,_1=await O.loadFieldsForEntity(F,Q),{entity:O1,mutationApi:V1}=p7.createFromRow(b,l,b.parent_object_id,a);for(let v1 of _1)V1.setField(v1.getDefinition().getName(),v1);return{entity:O1,mutationApi:V1,pk:Q}},d1=async(F,i1,{storeCode:m})=>{if(m!==void 0)h(m);let p=await y8.readEntityTypeId(F,i1,"s",null),b=await F.selectFrom("entities").selectAll("entities").where("entities.store_id","=",Y).where("entities.entity_type_id","=",p).where("entities.deleted_at","is",null).execute(),Q=[],l=new Map;for(let O1 of b)Q.push(O1.id),l.set(O1.id,O1);let a=await O.batchLoadFieldsForEntities(F,Q,l),_1=[];for(let O1 of b){let{id:V1,object_id:v1}=O1;z.setIdByPk(V1,v1);let o1=O1.path,{entity:q8,mutationApi:j8}=$Y.createFromRow(O1,v1,O1.parent_object_id,o1),R8=a.get(V1)||[];for(let l8 of R8)j8.setField(l8.getDefinition().getName(),l8);_1.push({entity:q8,mutationApi:j8,pk:V1})}return _1},b1=async(F,i1,{id:m,storeCode:p})=>{if(p!==void 0)h(p);let b=k4(m);if(!b)return null;if(b.typeCode!=="s")return null;let Q=await F.selectFrom("entities").selectAll("entities").where("entities.store_id","=",Y).where("entities.seq","=",b.seq).where("entities.type_code","=","s").where("entities.deleted_at","is",null).executeTakeFirst();if(!Q)return null;let l=Q.id;z.setIdByPk(l,m);let a=Q.path,_1=await O.loadFieldsForEntity(F,l),{entity:O1,mutationApi:V1}=$Y.createFromRow(Q,m,Q.parent_object_id,a);for(let v1 of _1)V1.setField(v1.getDefinition().getName(),v1);return{entity:O1,mutationApi:V1,pk:l}},T8=async(F,i1,{storeCode:m,parentId:p,name:b})=>{if(m!==void 0)h(m);U.factory(!b,I.validation,"Story name is required","MISSING_NAME");let Q=p8(),l=await y8.readEntityTypeId(F,i1,"s",null),a=await N6.nextSeq(F,"store",Y,"s"),_1=await Z.getParentPk(F,p),O1=GX(K,"s",a),V1=await Z.getParentStoredPath(F,_1),v1=V1!=null?`${V1}/${b}`:b,o1=await F.insertInto("entities").values({store_id:Y,object_id:O1,entity_type_id:l,type_code:"s",seq:a,parent_folder_id:_1,parent_object_id:p,name:b,path:v1,created_at:Q,updated_at:Q}).returningAll().executeTakeFirstOrThrow(),q8=o1.id;z.setIdByPk(q8,O1);let{entity:j8,mutationApi:R8}=$Y.createFromRow(o1,O1,p,v1);return{entity:j8,mutationApi:R8,pk:q8}},U1=async(F,i1,{id:m,name:p})=>{let b=k4(m);U.factory(!b,I.validation,`Invalid story ID: ${m}`,"INVALID_ID"),U.factory(b.typeCode!=="s",I.validation,`Not a story ID: ${m}`,"INVALID_TYPE");let Q=await F.selectFrom("entities").selectAll().where("store_id","=",Y).where("seq","=",b.seq).where("type_code","=","s").where("deleted_at","is",null).executeTakeFirst();U.factory(!Q,I.notFound,`Story not found: ${m}`,"STORY_NOT_FOUND");let l=Q.id;z.setIdByPk(l,m);let{name:a,path:_1}=Q,O1=await Z.getParentStoredPath(F,Q.parent_folder_id),V1=O1!=null?`${O1}/${p}`:p,v1=await F.updateTable("entities").set({name:p,path:V1,updated_at:p8()}).where("id","=",l).returningAll().executeTakeFirstOrThrow();if(_1!==V1)await Z.cascadePathUpdate(F,_1,V1,Y);let o1=await O.loadFieldsForEntity(F,l),{entity:q8,mutationApi:j8}=$Y.createFromRow(v1,m,v1.parent_object_id,V1);for(let R8 of o1)j8.setField(R8.getDefinition().getName(),R8);return{entity:q8,mutationApi:j8,pk:l,oldValues:{name:a,path:_1}}},A8=async(F,i1,{id:m,storeCode:p})=>{if(p!==void 0)h(p);let b=k4(m);U.factory(!b,I.validation,`Invalid story ID: ${m}`,"INVALID_ID"),U.factory(b.typeCode!=="s",I.validation,`Not a story ID: ${m}`,"INVALID_TYPE");let Q=await F.selectFrom("entities").selectAll().where("store_id","=",Y).where("seq","=",b.seq).where("type_code","=","s").where("deleted_at","is",null).executeTakeFirst();U.factory(!Q,I.notFound,`Story not found: ${m}`,"STORY_NOT_FOUND");let l=Q.id;z.setIdByPk(l,m);let a=Q.path,_1=await T(F),O1=await WA(F,l,Y,z,_1,p8);return{id:m,deleted:!0,descendantCount:O1.descendantCount,path:a,descendantIds:O1.descendantIds,deletedPks:O1.deletedPks}},M8=async(F,i1,{id:m,storeCode:p})=>{if(p!==void 0)h(p);let b=k4(m);if(!b)return null;if(b.typeCode!=="e")return null;let Q=await F.selectFrom("entities").innerJoin("entity_types","entity_types.id","entities.entity_type_id").selectAll("entities").select("entity_types.subtype").where("entities.store_id","=",Y).where("entities.seq","=",b.seq).where("entities.type_code","=","e").where("entities.deleted_at","is",null).executeTakeFirst();if(!Q)return null;let l=Q.id;z.setIdByPk(l,m);let a=Q.path,_1=await O.loadFieldsForEntity(F,l),{entity:O1,mutationApi:V1}=iD.createFromRow(Q,m,Q.parent_object_id,a);for(let v1 of _1)V1.setField(v1.getDefinition().getName(),v1);return{entity:O1,mutationApi:V1,pk:l}},B8=async(F,i1,{parentId:m,storeCode:p,subtype:b})=>{if(p!==void 0)h(p);let Q=await Z.getParentPk(F,m),l=F.selectFrom("entities").innerJoin("entity_types","entity_types.id","entities.entity_type_id").selectAll("entities").select("entity_types.subtype").where("entities.store_id","=",Y).where("entities.type_code","=","e").where("entities.parent_folder_id",Q===null?"is":"=",Q).where("entities.deleted_at","is",null);if(b!==void 0){let o1=await y8.readEntityTypeId(F,i1,"e",b);l=l.where("entities.entity_type_id","=",o1)}let a=await l.execute(),_1=[],O1=new Map;for(let o1 of a)_1.push(o1.id),O1.set(o1.id,o1);let V1=await O.batchLoadFieldsForEntities(F,_1,O1),v1=[];for(let o1 of a){let{id:q8,object_id:j8}=o1;z.setIdByPk(q8,j8);let R8=o1.path,{entity:l8,mutationApi:m8}=iD.createFromRow(o1,j8,o1.parent_object_id,R8),i8=V1.get(q8)||[];for(let U8 of i8)m8.setField(U8.getDefinition().getName(),U8);v1.push({entity:l8,mutationApi:m8,pk:q8})}return v1},g1=async(F,i1,m,p)=>{let b=await Z.getParentPk(F,m),Q=await F.selectFrom("entities as e").select(["e.id","e.object_id"]).where("e.store_id","=",Y).where("e.type_code","=","e").where("e.parent_folder_id",b===null?"is":"=",b).where("e.name","=",p).where("e.deleted_at","is",null).executeTakeFirst();if(!Q)return null;return M8(F,i1,{id:Q.object_id})},M1=async(F,i1,{storeCode:m,parentId:p,name:b,subtype:Q,fields:l})=>{if(m!==void 0)h(m);U.factory(!b,I.validation,"Setting name is required","MISSING_NAME");let a=p8(),_1=await y8.readEntityTypeId(F,i1,"e",Q||null),O1=await N6.nextSeq(F,"store",Y,"e"),V1=await Z.getParentPk(F,p),v1=GX(K,"e",O1),o1=await Z.getParentStoredPath(F,V1),q8=o1!=null?`${o1}/${b}`:b,j8=await F.insertInto("entities").values({store_id:Y,object_id:v1,entity_type_id:_1,type_code:"e",seq:O1,parent_folder_id:V1,parent_object_id:p,name:b,path:q8,created_at:a,updated_at:a}).returningAll().executeTakeFirstOrThrow(),R8=j8.id;z.setIdByPk(R8,v1);let l8={...j8,subtype:Q||null},{entity:m8,mutationApi:i8}=iD.createFromRow(l8,v1,p,q8);return{entity:m8,mutationApi:i8,pk:R8}},t1=async(F,i1,{id:m,name:p,parentId:b})=>{let Q=k4(m);U.factory(!Q,I.validation,`Invalid setting ID: ${m}`,"INVALID_ID"),U.factory(Q.typeCode!=="e",I.validation,`Not a setting ID: ${m}`,"INVALID_TYPE");let l=await F.selectFrom("entities").selectAll().where("store_id","=",Y).where("seq","=",Q.seq).where("type_code","=","e").where("deleted_at","is",null).executeTakeFirst();U.factory(!l,I.notFound,`Setting not found: ${m}`,"SETTING_NOT_FOUND");let a=l.id,_1={name:l.name,parentId:l.parent_object_id,path:l.path};z.setIdByPk(a,m);let V1={updated_at:p8()},v1=l.parent_folder_id;if(p!==void 0)V1.name=p;if(b!==void 0){let R8=await Z.getParentPk(F,b);V1.parent_folder_id=R8,V1.parent_object_id=b,v1=R8}let o1=p!==void 0?p:l.name,q8=await Z.getParentStoredPath(F,v1);V1.path=q8!=null?`${q8}/${o1}`:o1,await F.updateTable("entities").set(V1).where("id","=",a).execute();let j8=await M8(F,i1,{id:m});return U.factory(!j8,I.notFound,`Setting not found after update: ${m}`,"SETTING_NOT_FOUND"),{...j8,oldValues:_1}},_8=async(F,i1,{id:m,storeCode:p})=>{if(p!==void 0)h(p);let b=k4(m);U.factory(!b,I.validation,`Invalid setting ID: ${m}`,"INVALID_ID"),U.factory(b.typeCode!=="e",I.validation,`Not a setting ID: ${m}`,"INVALID_TYPE");let Q=await F.selectFrom("entities").selectAll().where("store_id","=",Y).where("seq","=",b.seq).where("type_code","=","e").where("deleted_at","is",null).executeTakeFirst();U.factory(!Q,I.notFound,`Setting not found: ${m}`,"SETTING_NOT_FOUND");let l=Q.id;z.setIdByPk(l,m);let a=Q.path,_1=await T(F),O1=await WA(F,l,Y,z,_1,p8);return{id:m,deleted:!0,descendantCount:O1.descendantCount,path:a,descendantIds:O1.descendantIds,deletedPks:O1.deletedPks}},O8=async(F,i1,{storeCode:m})=>{if(m!==void 0)h(m);let p=await y8.readEntityTypeId(F,i1,"f","root_j"),b=await F.selectFrom("entities").innerJoin("entity_types","entity_types.id","entities.entity_type_id").selectAll("entities").select("entity_types.subtype").where("entities.store_id","=",Y).where("entities.entity_type_id","=",p).where("entities.deleted_at","is",null).executeTakeFirst();if(!b)return null;let{id:Q,object_id:l}=b;z.setIdByPk(Q,l);let a=b.path,_1=await O.loadFieldsForEntity(F,Q),{entity:O1,mutationApi:V1}=p7.createFromRow(b,l,b.parent_object_id,a);for(let v1 of _1)V1.setField(v1.getDefinition().getName(),v1);return{entity:O1,mutationApi:V1,pk:Q}},X1=async(F,i1,{storeCode:m})=>{if(m!==void 0)h(m);let p=await y8.readEntityTypeId(F,i1,"f","root_settings"),b=await F.selectFrom("entities").innerJoin("entity_types","entity_types.id","entities.entity_type_id").selectAll("entities").select("entity_types.subtype").where("entities.store_id","=",Y).where("entities.entity_type_id","=",p).where("entities.deleted_at","is",null).executeTakeFirst();if(!b)return null;let{id:Q,object_id:l}=b;z.setIdByPk(Q,l);let a=b.path,_1=await O.loadFieldsForEntity(F,Q),{entity:O1,mutationApi:V1}=p7.createFromRow(b,l,b.parent_object_id,a);for(let v1 of _1)V1.setField(v1.getDefinition().getName(),v1);return{entity:O1,mutationApi:V1,pk:Q}},G1=async(F,i1,{storeCode:m})=>{if(m!==void 0)h(m);let p=await y8.readEntityTypeId(F,i1,"j",null),b=await F.selectFrom("entities").selectAll("entities").where("entities.store_id","=",Y).where("entities.entity_type_id","=",p).where("entities.deleted_at","is",null).execute(),Q=[],l=new Map;for(let O1 of b)Q.push(O1.id),l.set(O1.id,O1);let a=await O.batchLoadFieldsForEntities(F,Q,l),_1=[];for(let O1 of b){let{id:V1,object_id:v1}=O1;z.setIdByPk(V1,v1);let o1=O1.path,{entity:q8,mutationApi:j8}=OX.createFromRow(O1,v1,O1.parent_object_id,o1),R8=a.get(V1)||[];for(let l8 of R8)j8.setField(l8.getDefinition().getName(),l8);_1.push({entity:q8,mutationApi:j8,pk:V1})}return _1},z1=async(F,i1,{id:m,storeCode:p})=>{if(p!==void 0)h(p);let b=k4(m);if(!b)return null;if(b.typeCode!=="j")return null;let Q=await F.selectFrom("entities").selectAll("entities").where("entities.store_id","=",Y).where("entities.seq","=",b.seq).where("entities.type_code","=","j").where("entities.deleted_at","is",null).executeTakeFirst();if(!Q)return null;let l=Q.id;z.setIdByPk(l,m);let a=Q.path,_1=await O.loadFieldsForEntity(F,l),{entity:O1,mutationApi:V1}=OX.createFromRow(Q,m,Q.parent_object_id,a);for(let v1 of _1)V1.setField(v1.getDefinition().getName(),v1);return{entity:O1,mutationApi:V1,pk:l}},e9=Object.freeze({...P,getCodes:V,getType:j,getCode:D,getPk:f,toJSON:C,readEntity:L,createFolder:k,readFolder:g,updateFolder:S,deleteFolder:E,isDuplicateNameInParent:x,findFolderByName:c,listFolderContents:i,getFolderByPath:t,readRootFolderForType:w1,createContent:j1,readContent:N1,updateContent:x1,updateEntityType:a1,deleteTypeScopedFieldValues:K8,deleteContent:y1,listDeletedItems:h1,restoreEntity:E8,restoreWithDescendants:r1,saveDraft:X8,readDraft:v6,publishContent:o8,discardDraft:$6,readVersion:H6,getVersions:x6,findContentByName:q6,listContent:Y6,createFieldDefinition:Z1,readFieldDefinition:E1,updateFieldDefinitionConfig:T1,findFieldDefinitionByName:H1,resolveFieldDefinition:Q1,getFieldDefinitionsForOwner:L1,getFieldDefinitionsForEntityType:G8,resolveEntityTypePk:w8,deleteFieldDefinition:W8,addClassAssociation:m1,createEntityType:$8,setFieldValue:e1,deleteFieldValue:J1,getFieldValue:q1,setEditState:n4,clearEditState:S4,getEditState:e6,readStoryRootFolder:n1,listStories:d1,readStory:b1,createStory:T8,renameStory:U1,deleteStory:A8,readJobRootFolder:O8,listJobs:G1,readJob:z1,createJob:async(F,i1,{storeCode:m,parentId:p,name:b})=>{if(m!==void 0)h(m);U.factory(!b,I.validation,"Job name is required","MISSING_NAME");let Q=p8(),l=await y8.readEntityTypeId(F,i1,"j",null),a=await N6.nextSeq(F,"store",Y,"j"),_1=await Z.getParentPk(F,p),O1=GX(K,"j",a),V1=await Z.getParentStoredPath(F,_1),v1=V1!=null?`${V1}/${b}`:b,o1=await F.insertInto("entities").values({store_id:Y,object_id:O1,entity_type_id:l,type_code:"j",seq:a,parent_folder_id:_1,parent_object_id:p,name:b,path:v1,created_at:Q,updated_at:Q}).returningAll().executeTakeFirstOrThrow(),q8=o1.id;z.setIdByPk(q8,O1);let{entity:j8,mutationApi:R8}=OX.createFromRow(o1,O1,p,v1);return{entity:j8,mutationApi:R8,pk:q8}},deleteJob:async(F,i1,{id:m,storeCode:p})=>{if(p!==void 0)h(p);let b=k4(m);U.factory(!b,I.validation,`Invalid job ID: ${m}`,"INVALID_ID"),U.factory(b.typeCode!=="j",I.validation,`Not a job ID: ${m}`,"INVALID_TYPE");let Q=await F.selectFrom("entities").selectAll().where("store_id","=",Y).where("seq","=",b.seq).where("type_code","=","j").where("deleted_at","is",null).executeTakeFirst();U.factory(!Q,I.notFound,`Job not found: ${m}`,"JOB_NOT_FOUND");let l=Q.id;z.setIdByPk(l,m);let a=Q.path,_1=await T(F),O1=await WA(F,l,Y,z,_1,p8);return{id:m,deleted:!0,descendantCount:O1.descendantCount,path:a,descendantIds:O1.descendantIds,deletedPks:O1.deletedPks}},readSettingsRootFolder:X1,readSetting:M8,listSettings:B8,findSettingByName:g1,createSetting:M1,updateSettingPath:t1,deleteSetting:_8,createAsset:async(F,i1,{storeCode:m,hash:p,mimeType:b,sizeBytes:Q,originalFilename:l,widthPx:a,heightPx:_1,displayWidth:O1,displayHeight:V1})=>{if(m!==void 0)h(m);let v1=p8(),o1=await y8.readEntityTypeId(F,i1,"a",null),q8=await N6.nextSeq(F,"store",Y,"a"),j8=GX(K,"a",q8),R8=await F.insertInto("entities").values({store_id:Y,object_id:j8,entity_type_id:o1,type_code:"a",seq:q8,parent_folder_id:null,parent_object_id:null,name:l,created_at:v1,updated_at:v1}).returningAll().executeTakeFirstOrThrow(),l8=R8.id;z.setIdByPk(l8,j8);let m8=[{name:"hash",value:p,primitiveType:"string"},{name:"mimeType",value:b,primitiveType:"string"},{name:"sizeBytes",value:Q,primitiveType:"int"},{name:"originalFilename",value:l,primitiveType:"string"},{name:"widthPx",value:a,primitiveType:"int"},{name:"heightPx",value:_1,primitiveType:"int"},{name:"displayWidth",value:O1,primitiveType:"int"},{name:"displayHeight",value:V1,primitiveType:"int"}];for(let{name:l6,value:y4,primitiveType:_2}of m8){if(y4===null||y4===void 0)continue;let O4=await Q1(F,i1,{fieldName:l6,entityTypePk:o1});if(O4)await O.insertTypedField(F,l8,O4.pk,_2,y4)}let{entity:i8,mutationApi:U8}=HX.create({id:j8,name:R8.name,createdAt:R8.created_at,updatedAt:R8.updated_at}),M6=await O.loadFieldsForEntity(F,l8);for(let l6 of M6)U8.setField(l6.getDefinition().getName(),l6);return{entity:i8,mutationApi:U8,pk:l8}},readAsset:async(F,i1,{id:m,storeCode:p})=>{if(p!==void 0)h(p);let b=k4(m);if(!b)return null;if(b.typeCode!=="a")return null;let Q=await F.selectFrom("entities").selectAll().where("entities.store_id","=",Y).where("entities.seq","=",b.seq).where("entities.type_code","=","a").where("entities.deleted_at","is",null).executeTakeFirst();if(!Q)return null;let l=Q.id;z.setIdByPk(l,m);let{entity:a,mutationApi:_1}=HX.create({id:m,name:Q.name,createdAt:Q.created_at,updatedAt:Q.updated_at}),O1=await O.loadFieldsForEntity(F,l);for(let V1 of O1)_1.setField(V1.getDefinition().getName(),V1);return{entity:a,mutationApi:_1,pk:l}},listAssets:async(F,i1,{storeCode:m})=>{if(m!==void 0)h(m);let p=await F.selectFrom("entities").selectAll().where("entities.store_id","=",Y).where("entities.type_code","=","a").where("entities.deleted_at","is",null).execute(),b=[],Q=new Map;for(let _1 of p)b.push(_1.id),Q.set(_1.id,_1);let l=await O.batchLoadFieldsForEntities(F,b,Q),a=[];for(let _1 of p){let{id:O1,object_id:V1}=_1;z.setIdByPk(O1,V1);let{entity:v1,mutationApi:o1}=HX.create({id:V1,name:_1.name,createdAt:_1.created_at,updatedAt:_1.updated_at}),q8=l.get(O1)||[];for(let j8 of q8)o1.setField(j8.getDefinition().getName(),j8);a.push({entity:v1,mutationApi:o1,pk:O1})}return a},deleteAsset:async(F,i1,{id:m,storeCode:p})=>{if(p!==void 0)h(p);let b=k4(m);U.factory(!b,I.validation,`Invalid asset ID: ${m}`,"INVALID_ID"),U.factory(b.typeCode!=="a",I.validation,`Not an asset ID: ${m}`,"INVALID_TYPE");let Q=await F.selectFrom("entities").selectAll().where("entities.store_id","=",Y).where("entities.seq","=",b.seq).where("entities.type_code","=","a").where("entities.deleted_at","is",null).executeTakeFirst();U.factory(!Q,I.notFound,`Asset not found: ${m}`,"ASSET_NOT_FOUND");let a=(await O.loadFieldsForEntity(F,Q.id)).find((V1)=>V1.getDefinition().getName()==="hash"),_1=a?a.getValue():null,O1=p8();return await F.updateTable("entities").set({deleted_at:O1}).where("id","=",Q.id).execute(),z.setIdByPk(Q.id,m),{id:m,deleted:!0,hash:_1}},findEntitiesByFieldValue:async(F,i1,{typeCode:m,subtype:p,fieldName:b,fieldValue:Q})=>{let l=F.selectFrom("entities").innerJoin("entity_types","entity_types.id","entities.entity_type_id").innerJoin("string_fields","string_fields.entity_id","entities.id").innerJoin("field_definitions","field_definitions.id","string_fields.field_definition_id").select(["entities.id","entities.object_id","entities.name","entities.path","entities.type_code","entity_types.subtype"]).where("entities.store_id","=",Y).where("entities.type_code","=",m).where("entities.deleted_at","is",null).where("field_definitions.store_id","=",Y).where("field_definitions.name","=",b).where("field_definitions.owner_entity_id","is",null).where("string_fields.value","=",Q);if(p!==void 0&&p!==null)l=l.where("entity_types.subtype","=",p);l=l.orderBy(W6`entities.name COLLATE NOCASE`);let a=await l.execute(),_1=[];for(let O1 of a)_1.push({id:O1.id,object_id:O1.object_id,name:O1.name,path:O1.path,type_code:O1.type_code,subtype:O1.subtype});return _1},findEntitiesByObjectRefFieldValue:async(F,i1,{typeCode:m,subtype:p,fieldName:b,targetEntityId:Q})=>{let l=k4(Q);U.factory(!l,I.validation,`Invalid target entity ID: ${Q}`,"INVALID_ID");let a=await F.selectFrom("entities").select("id").where("store_id","=",Y).where("seq","=",l.seq).where("type_code","=",l.typeCode).where("deleted_at","is",null).executeTakeFirst();if(!a)return[];let _1=a.id,O1=F.selectFrom("entities").innerJoin("entity_types","entity_types.id","entities.entity_type_id").innerJoin("obj_ref_fields","obj_ref_fields.entity_id","entities.id").innerJoin("field_definitions","field_definitions.id","obj_ref_fields.field_definition_id").select(["entities.id","entities.object_id","entities.name","entities.path","entities.type_code","entity_types.subtype"]).where("entities.store_id","=",Y).where("entities.type_code","=",m).where("entities.deleted_at","is",null).where("field_definitions.store_id","=",Y).where("field_definitions.name","=",b).where("field_definitions.owner_entity_id","is",null).where("obj_ref_fields.target_entity_id","=",_1);if(p!==void 0&&p!==null)O1=O1.where("entity_types.subtype","=",p);let V1=await O1.execute(),v1=[];for(let o1 of V1)v1.push({id:o1.id,object_id:o1.object_id,name:o1.name,path:o1.path,type_code:o1.type_code,subtype:o1.subtype});return v1},searchTextFields:(F,i1,m)=>w.searchTextFields(F,i1,m),searchContent:(F,i1,m)=>w.searchContent(F,i1,m),backfillVersionContentRefs:async(F,i1,m)=>{await O.initSystemFieldDefCache(F);let p=await y8.readEntityTypeId(F,i1,"v",null),Q=(await F.selectFrom("entity_content").select("content_text").where("entity_id","=",m).executeTakeFirst())?.content_text||"",l=ZA(Q);X2("backfillVersionContentRefs: extracted attachments=%d, includes=%d, hyperlinks=%d for version pk=%d",l.attachments.length,l.includes.length,l.hyperlinks.length,m);let a=O.getSystemFieldDef("attachments",p),_1=O.getSystemFieldDef("includes",p),O1=O.getSystemFieldDef("hyperlinks",p),V1=[];if(a)V1.push(a.pk);if(_1)V1.push(_1.pk);if(O1)V1.push(O1.pk);if(V1.length>0)await F.deleteFrom("obj_ref_fields").where("entity_id","=",m).where("field_definition_id","in",V1).execute();let v1={attachments:0,includes:0,hyperlinks:0},o1=async(q8,j8,R8)=>{if(!q8)return X2('backfillVersionContentRefs: System field definition "%s" not found for version type - skipping',R8),0;let l8=0;for(let m8 of j8){let i8=await F.selectFrom("entities").select("id").where("object_id","=",m8).where("deleted_at","is",null).executeTakeFirst();if(!i8){X2("backfillVersionContentRefs: Target entity not found for %s reference: %s - skipping",R8,m8);continue}await F.insertInto("obj_ref_fields").values({entity_id:m,field_definition_id:q8.pk,target_entity_id:i8.id,ordinal:l8}).execute(),l8++}return l8};return v1.attachments=await o1(a,l.attachments,"attachments"),v1.includes=await o1(_1,l.includes,"includes"),v1.hyperlinks=await o1(O1,l.hyperlinks,"hyperlinks"),X2("backfillVersionContentRefs: populated attachments=%d, includes=%d, hyperlinks=%d for version pk=%d",v1.attachments,v1.includes,v1.hyperlinks,m),v1}}),v9=Object.freeze({...v});return{store:e9,mutationApi:v9}},YA1=Object.freeze({create:Di8});var Ri8=({inner:$,entityCache:K,fieldDefinitionCache:q,entityFactory:Y})=>{let z=new Map,J=new Map,W=new Map,Z=new Map,O=new Map,H=(X1)=>{if(!X1||X1.length<2)return;let G1=X1[1],z1=$.getCode();switch(G1){case"s":z.delete(z1);break;case"j":J.delete(z1);break;case"a":W.delete(z1);break;case"d":case"t":O.clear();break;case"f":Z.clear();break}},X=async(X1,G1,z1,S1,P1,B1=null)=>{let p1=z1.length>=2?z1[1]:null,s1,P8,V8;if(p1==="d"||p1==="t"){let Q8=await $.readContent(X1,G1,{id:z1});if(!Q8)return null;s1=Q8.entity,P8=Q8.mutationApi,V8=Q8.pk}else{let Q8=await $.readEntity(X1,G1,{id:z1});if(!Q8)return null;let D6=Y.createEntity(Q8);if(s1=D6.entity,P8=D6.mutationApi,V8=Q8.pk,Q8.fields&&Array.isArray(Q8.fields))for(let y6 of Q8.fields)P8.setField(y6.getDefinition().getName(),y6)}let v8=m6.create(s1,P8,V8);if(S1(`cache-set:${z1}`,()=>{K.set(z1,v8)},()=>K.remove(z1)),B1!==null)return{entity:s1,oldValues:B1};return s1},w=(X1,G1)=>`${X1||"root"}:${G1||"all"}:${$.getCode()}`,G=(X1,G1)=>`${X1||"root"}:${G1||"all"}:${$.getCode()}`,T=(X1,G1)=>{let z1=`${X1||"root"}:`;for(let[S1,P1]of Z.entries())if(S1.startsWith(z1)){if(S1.split(":")[1]==="all")continue;P1.push(G1)}},P=(X1,G1,z1)=>{let S1=`${X1||"root"}:`;for(let[P1,B1]of O.entries())if(P1.startsWith(S1)){let p1=P1.split(":")[1];if(p1===G1||p1==="all")B1.push(z1)}},v=(X1,G1,z1)=>{let S1=`${G1||"root"}:`;for(let[P1,B1]of X1.entries())if(P1.startsWith(S1)){let p1=B1.findIndex((s1)=>s1.getObjectId()===z1);if(p1!==-1)B1.splice(p1,1)}},V=async(X1,G1,z1,S1)=>{let P1=await $.createFolder(X1,G1,z1),{entity:B1}=P1,p1=B1.getObjectId(),s1=S1;return await X(X1,G1,p1,(V8,v8,Q8)=>{s1(V8,()=>{v8(),T(z1.parentId,K.get(p1).getEntity())},Q8)},"created")},j=async(X1,G1,{id:z1})=>{if(!z1||z1.length<3||z1[1]!=="f"&&z1[1]!=="s")return null;let S1=K.get(z1);if(S1)return S1.getEntity();let P1=await $.readFolder(X1,G1,{id:z1});if(!P1)return null;let{entity:B1,mutationApi:p1,pk:s1}=P1;K.set(z1,m6.create(B1,p1,s1));for(let P8 of Z.values()){let V8=P8.findIndex((v8)=>v8.getObjectId()===z1);if(V8!==-1){P8[V8]=B1;break}}return B1},D=async(X1,G1,z1,S1)=>{let{id:P1}=z1,B1=K.get(P1);if(P1&&P1.length>1&&P1[1]==="j")K.remove(P1);let s1=await $.updateFolder(X1,G1,z1),P8=z1.name!==void 0&&z1.name!==s1.oldValues.name||z1.parentId!==void 0&&z1.parentId!==s1.oldValues.parentId;return S1(`cache-update:${P1}`,()=>{if(B1){let v8=B1.getMutationApi();if(z1.name!==void 0)v8.setName(z1.name);if(z1.parentId!==void 0)v8.setParentId(z1.parentId);v8.setUpdatedAt(s1.entity.getUpdatedAt()),v8.setPath(s1.entity.getPath())}else{let{entity:v8,mutationApi:Q8,pk:D6}=s1,y6=m6.create(v8,Q8,D6);K.set(P1,y6)}if(P8){let Q8=s1.oldValues.path+"/";for(let[D6,y6]of K.entries())if(y6.getEntity().getPath().startsWith(Q8))K.remove(D6)}Z.clear()},()=>{K.remove(P1),Z.clear()}),{entity:B1?B1.getEntity():s1.entity,oldValues:s1.oldValues}},f=async(X1,G1,{id:z1},S1)=>{let P1=K.get(z1),B1=P1?P1.getEntity().getPath():null,p1=P1?P1.getEntity().getParentId():null,s1=await $.deleteFolder(X1,G1,{id:z1});return S1(`cache-evict:${z1}`,()=>{K.remove(z1);for(let P8 of s1.descendantIds||[]){K.remove(P8);let V8=P8.length>=2?P8[1]:null;if(V8==="s"){let v8=z.get($.getCode());if(v8){let Q8=v8.findIndex((D6)=>D6.getObjectId()===P8);if(Q8!==-1)v8.splice(Q8,1)}}else if(V8==="j"){let v8=J.get($.getCode());if(v8){let Q8=v8.findIndex((D6)=>D6.getObjectId()===P8);if(Q8!==-1)v8.splice(Q8,1)}}else if(V8==="a"){let v8=W.get($.getCode());if(v8){let Q8=v8.findIndex((D6)=>D6.getObjectId()===P8);if(Q8!==-1)v8.splice(Q8,1)}}}v(Z,p1,z1),v(Z,null,z1)}),{...s1,path:B1}},C=async(X1,G1,z1)=>{let S1=w(z1.folderId,z1.type),P1=Z.get(S1);if(P1)return P1;let B1=await $.listFolderContents(X1,G1,z1);for(let s1 of B1)K.set(s1.entity.getObjectId(),m6.create(s1.entity,s1.mutationApi,s1.pk));let p1=B1.map((s1)=>s1.entity);return Z.set(S1,p1),p1},h=async(X1,G1,z1)=>{let S1=await $.getFolderByPath(X1,G1,z1);if(!S1)return null;let{entity:P1,mutationApi:B1,pk:p1}=S1,s1=P1.getObjectId();return K.set(s1,m6.create(P1,B1,p1)),P1},L=async(X1,G1,z1,S1)=>{let P1=await $.findFolderByName(X1,G1,z1,S1);if(!P1)return null;let{entity:B1,mutationApi:p1,pk:s1}=P1;return K.set(B1.getObjectId(),m6.create(B1,p1,s1)),B1},k=async(X1,G1,z1)=>{let S1=await $.readRootFolderForType(X1,G1,z1);if(!S1)return null;let{entity:P1,mutationApi:B1,pk:p1}=S1;return K.set(P1.getObjectId(),m6.create(P1,B1,p1)),P1},g=async(X1,G1,z1,S1,P1)=>{return $.isDuplicateNameInParent(X1,G1,z1,S1,P1)},S=async(X1,G1,z1,S1)=>{let P1=await $.createContent(X1,G1,z1),{entity:B1}=P1,p1=B1.getObjectId(),s1=p1[1],P8=S1;return await X(X1,G1,p1,(v8,Q8,D6)=>{P8(v8,()=>{Q8(),P(z1.parentId,s1,K.get(p1).getEntity())},D6)},"created")},E=async(X1,G1,{id:z1})=>{if(!z1||z1.length<3||z1[1]!=="d"&&z1[1]!=="t")return null;let S1=K.get(z1);if(S1)return S1.getEntity();let P1=await $.readContent(X1,G1,{id:z1});if(!P1)return null;let{entity:B1,mutationApi:p1,pk:s1}=P1;K.set(z1,m6.create(B1,p1,s1));for(let P8 of O.values()){let V8=P8.findIndex((v8)=>v8.getObjectId()===z1);if(V8!==-1){P8[V8]=B1;break}}return B1},x=async(X1,G1,z1,S1)=>{let{id:P1}=z1,B1=K.get(P1),p1=await $.updateContent(X1,G1,z1);return S1(`cache-update:${P1}`,()=>{if(B1){let P8=B1.getEntity(),V8=B1.getMutationApi();if(z1.name!==void 0){V8.setName(z1.name);let D6=P8.getField("name");if(D6){let y6=x3.create({definition:D6.getDefinition(),values:[z1.name]});V8.setField("name",y6)}}if(z1.parentId!==void 0){V8.setParentId(z1.parentId);let D6=P8.getField("parent");if(D6){let y6=x3.create({definition:D6.getDefinition(),values:[z1.parentId]});V8.setField("parent",y6)}}let v8=p1.entity.getUpdatedAt();V8.setUpdatedAt(v8),V8.setPath(p1.entity.getPath());let Q8=P8.getField("updated_at");if(Q8){let D6=x3.create({definition:Q8.getDefinition(),values:[v8]});V8.setField("updated_at",D6)}}else{let{entity:P8,mutationApi:V8,pk:v8}=p1,Q8=m6.create(P8,V8,v8);K.set(P1,Q8)}Z.clear(),O.clear()},()=>{K.remove(P1),O.clear()}),{entity:B1?B1.getEntity():p1.entity,oldValues:p1.oldValues}},c=async(X1,G1,z1,S1)=>{let{id:P1}=z1,B1=K.get(P1),p1=B1?B1.getEntity().getParentId():null,s1=await $.updateEntityType(X1,G1,z1);K.remove(P1);let P8=`${p1||"root"}:`;for(let V8 of O.keys())if(V8.startsWith(P8))O.delete(V8);return s1.entity},i=async(X1,G1,z1)=>{return $.deleteTypeScopedFieldValues(X1,G1,z1)},t=async(X1,G1,{id:z1},S1)=>{let P1=K.get(z1),B1=P1?P1.getEntity().getPath():null,p1=P1?P1.getEntity().getParentId():null,s1=await $.deleteContent(X1,G1,{id:z1});return S1(`cache-evict:${z1}`,()=>{K.remove(z1),v(O,p1,z1)}),{...s1,path:B1}},w1=async(X1,G1,z1,S1)=>{let{id:P1}=z1,B1=K.get(P1),p1=await $.saveDraft(X1,G1,z1);S1(`cache-update:${P1}`,()=>{if(B1){let P8=B1.getMutationApi();P8.setDraftContent(p1.entity.getDraftContent()),P8.setHasDraft(p1.entity.hasDraftContent()),P8.setUpdatedAt(p1.entity.getUpdatedAt())}else{let{entity:P8,mutationApi:V8,pk:v8}=p1;K.set(P1,m6.create(P8,V8,v8))}},()=>{K.remove(P1),O.clear()});let s1=B1?B1.getEntity():p1.entity;if(p1.lockLost!==void 0)return{entity:s1,lockLost:p1.lockLost};return s1},Z1=async(X1,G1,z1,S1)=>{let{id:P1}=z1,B1=K.get(P1),p1=await $.publishContent(X1,G1,z1);if(B1){let s1=B1.getEntity(),P8=B1.getMutationApi();return P8.setPublishedVersionNumber(p1.entity.getPublishedVersionNumber()),P8.setPublishedContent(p1.entity.getPublishedContent()),P8.setDraftContent(null),P8.setHasDraft(!1),P8.setUpdatedAt(p1.entity.getUpdatedAt()),P8.setEditState(null),s1}else return S1(`cache-set:${P1}`,()=>{let{entity:s1,mutationApi:P8,pk:V8}=p1;K.set(P1,m6.create(s1,P8,V8))},()=>{K.remove(P1),O.clear()}),p1.entity},E1=async(X1,G1,z1,S1)=>{let{id:P1}=z1,B1=K.get(P1),p1=await $.discardDraft(X1,G1,z1);return S1(`cache-update:${P1}`,()=>{if(B1){let s1=B1.getMutationApi();s1.setDraftContent(null),s1.setHasDraft(!1),s1.setUpdatedAt(p1.entity.getUpdatedAt())}else{let{entity:s1,mutationApi:P8,pk:V8}=p1;K.set(P1,m6.create(s1,P8,V8))}},()=>{K.remove(P1),O.clear()}),B1?B1.getEntity():p1.entity},T1=async(X1,G1,z1)=>{return $.readDraft(X1,G1,z1)},H1=async(X1,G1,z1)=>{return $.readVersion(X1,G1,z1)},Q1=async(X1,G1,z1)=>{return $.getVersions(X1,G1,z1)},L1=async(X1,G1,z1,S1,P1)=>{let B1=await $.findContentByName(X1,G1,z1,S1,P1);if(!B1)return null;let{entity:p1,mutationApi:s1,pk:P8}=B1,V8=p1.getObjectId(),v8=K.get(V8);if(v8){let Q8=v8.getEntity(),D6=v8.getMutationApi(),y6=p1.getFields();if(y6)for(let[e9,v9]of Object.entries(y6))D6.setField(e9,v9);return Q8}return K.set(V8,m6.create(p1,s1,P8)),p1},w8=async(X1,G1,z1)=>{let S1=G(z1.parentId,z1.type),P1=O.get(S1);if(P1)return P1;let B1=await $.listContent(X1,G1,z1);for(let s1 of B1)K.set(s1.entity.getObjectId(),m6.create(s1.entity,s1.mutationApi,s1.pk));let p1=B1.map((s1)=>s1.entity);return O.set(S1,p1),p1},$8=async(X1,G1,z1,S1)=>{let{id:P1,sessionId:B1}=z1,p1=K.get(P1),s1=await $.setEditState(X1,G1,z1);if(s1.success)S1(`cache-update:${P1}`,()=>{if(p1){let P8=new Date().toISOString();p1.getMutationApi().setEditState({sessionId:B1,startedAt:P8,lastActivityAt:P8})}},()=>{K.remove(P1),O.clear()});return s1},G8=async(X1,G1,z1)=>{return $.getEditState(X1,G1,z1)},W8=async(X1,G1,z1,S1)=>{let{id:P1}=z1,B1=K.get(P1);await $.clearEditState(X1,G1,z1),S1(`cache-update:${P1}`,()=>{if(B1)B1.getMutationApi().setEditState(null)},()=>{K.remove(P1),O.clear()})},m1=async(X1,G1,z1,S1)=>{let P1=await $.createFieldDefinition(X1,G1,z1),{entity:B1,mutationApi:p1,pk:s1}=P1;return S1(`cache-set:${B1.getObjectId()}`,()=>{q.set(B1.getObjectId(),m6.create(B1,p1,s1))},()=>q.remove(B1.getObjectId())),B1},e1=async(X1,G1,{id:z1})=>{let S1=q.get(z1);if(S1)return S1.getEntity();let P1=await $.readFieldDefinition(X1,G1,{id:z1});if(!P1)return null;let{entity:B1,mutationApi:p1,pk:s1}=P1;return q.set(z1,m6.create(B1,p1,s1)),B1},J1=async(X1,G1,z1,S1)=>{let P1=await $.findFieldDefinitionByName(X1,G1,z1,S1);if(!P1)return null;let{entity:B1,mutationApi:p1,pk:s1}=P1;return q.set(B1.getObjectId(),m6.create(B1,p1,s1)),B1},q1=async(X1,G1,z1)=>{let S1=await $.getFieldDefinitionsForOwner(X1,G1,z1);for(let P1 of S1)q.set(P1.entity.getObjectId(),m6.create(P1.entity,P1.mutationApi,P1.pk));return S1.map((P1)=>P1.entity)},A1=async(X1,G1,z1)=>{let S1=await $.getFieldDefinitionsForEntityType(X1,G1,z1);for(let P1 of S1)q.set(P1.entity.getObjectId(),m6.create(P1.entity,P1.mutationApi,P1.pk));return S1.map((P1)=>({entity:P1.entity,sourcePk:P1.sourcePk,sourceCode:P1.sourceCode,sourceSubtype:P1.sourceSubtype,inherited:P1.inherited,sortOrder:P1.sortOrder,rows:P1.rows,colspan:P1.colspan,classDescription:P1.classDescription}))},n=async(X1,G1,z1)=>{return $.resolveEntityTypePk(X1,G1,z1)},j1=async(X1,G1,z1)=>{let S1=await $.resolveFieldDefinition(X1,G1,z1),{entity:P1,mutationApi:B1,pk:p1}=S1;return q.set(P1.getObjectId(),m6.create(P1,B1,p1)),P1},N1=async(X1,G1,{id:z1},S1)=>{let P1=await $.deleteFieldDefinition(X1,G1,{id:z1});return S1(`cache-evict:${z1}`,()=>{q.remove(z1)}),P1},x1=async(X1,G1,{id:z1,config:S1})=>{let P1=await $.updateFieldDefinitionConfig(X1,G1,{id:z1,config:S1}),{entity:B1,mutationApi:p1,pk:s1}=P1;return q.set(z1,m6.create(B1,p1,s1)),B1},a1=async(X1,G1,z1,S1)=>{let{entityId:P1}=z1,B1=await $.setFieldValue(X1,G1,z1);return S1(`cache-update:${P1}`,()=>{let p1=K.get(P1);if(p1){let s1=B1.field;if(!s1){console.warn(`setFieldValue post-commit: result.field is undefined for ${P1}.${B1.fieldName}`);return}p1.getMutationApi().setField(B1.fieldName,s1)}},()=>{K.remove(P1),H(P1)}),B1.entity},K8=async(X1,G1,z1)=>{return $.getFieldValue(X1,G1,z1)},y1=async(X1,G1,z1,S1)=>{let{entityId:P1}=z1,B1=await $.deleteFieldValue(X1,G1,z1);S1(`cache-update:${P1}`,()=>{let p1=K.get(P1);if(p1)p1.getMutationApi().removeField(B1.fieldName)},()=>{K.remove(P1),H(P1)})},h1=async(X1,G1,z1,S1)=>{let P1=await $.createStory(X1,G1,z1),{entity:B1}=P1,p1=B1.getObjectId();if(K.get(p1))return S1(`cache-list-push:story:${p1}`,()=>{let V8=$.getCode(),v8=z.get(V8);if(v8)v8.push(K.get(p1).getEntity())},()=>z.delete($.getCode())),B1;let s1=S1;return await X(X1,G1,p1,(V8,v8,Q8)=>{s1(V8,()=>{v8();let D6=$.getCode(),y6=z.get(D6);if(y6)y6.push(K.get(p1).getEntity())},Q8)},"created")},z8=async(X1,G1,{id:z1})=>{if(!z1||z1.length<3||z1[1]!=="s")return null;let S1=K.get(z1);if(S1)return S1.getEntity();let P1=await $.readStory(X1,G1,{id:z1});if(!P1)return null;let{entity:B1,mutationApi:p1,pk:s1}=P1;K.set(z1,m6.create(B1,p1,s1));let P8=z.get($.getCode());if(P8){let V8=P8.findIndex((v8)=>v8.getObjectId()===z1);if(V8!==-1)P8[V8]=B1}return B1},E8=async(X1,G1,z1)=>{let S1=$.getCode(),P1=z.get(S1);if(P1)return P1;let B1=await $.listStories(X1,G1,z1);for(let s1 of B1){let{entity:P8,mutationApi:V8,pk:v8}=s1;K.set(P8.getObjectId(),m6.create(P8,V8,v8))}let p1=B1.map((s1)=>s1.entity);return z.set(S1,p1),p1},r1=async(X1,G1,z1,S1)=>{let{id:P1}=z1,B1=await $.renameStory(X1,G1,z1),{entity:p1,mutationApi:s1,pk:P8,oldValues:V8}=B1;return S1(`cache-update:${P1}`,()=>{let v8=K.get(P1);if(v8){let Q8=v8.getMutationApi();Q8.setName(p1.getName()),Q8.setPath(p1.getPath())}else{let Q8=m6.create(p1,s1,P8);K.set(P1,Q8)}if(V8&&V8.path){let Q8=V8.path+"/";for(let[D6,y6]of K.entries())if(y6.getEntity().getPath().startsWith(Q8))K.remove(D6)}},()=>{K.remove(P1),z.delete($.getCode())}),{entity:p1,oldValues:V8}},X8=async(X1,G1,z1,S1)=>{let{id:P1}=z1,B1=K.get(P1),p1=B1?B1.getEntity().getParentId():null,s1=await $.deleteStory(X1,G1,z1);return S1(`cache-evict:${P1}`,()=>{K.remove(P1);let P8=$.getCode(),V8=z.get(P8);if(V8){let v8=V8.findIndex((Q8)=>Q8.getObjectId()===P1);if(v8!==-1)V8.splice(v8,1)}v(Z,p1,P1);for(let v8 of s1.descendantIds)K.remove(v8)}),s1},o8=async(X1,G1,z1)=>{let S1=await $.readStoryRootFolder(X1,G1,z1);if(!S1)return null;let{entity:P1,mutationApi:B1,pk:p1}=S1;return K.set(P1.getObjectId(),m6.create(P1,B1,p1)),P1},$6=async(X1,G1,z1,S1)=>{let P1=await $.createJob(X1,G1,z1),{entity:B1}=P1,p1=B1.getObjectId();if(K.get(p1))return S1(`cache-list-push:job:${p1}`,()=>{let V8=$.getCode(),v8=J.get(V8);if(v8)v8.push(K.get(p1).getEntity())},()=>J.delete($.getCode())),B1;let s1=S1;return await X(X1,G1,p1,(V8,v8,Q8)=>{s1(V8,()=>{v8();let D6=$.getCode(),y6=J.get(D6);if(y6)y6.push(K.get(p1).getEntity())},Q8)},"created")},v6=async(X1,G1,{id:z1})=>{if(!z1||z1.length<3||z1[1]!=="j")return null;let S1=K.get(z1);if(S1)return S1.getEntity();let P1=await $.readJob(X1,G1,{id:z1});if(!P1)return null;let{entity:B1,mutationApi:p1,pk:s1}=P1;K.set(z1,m6.create(B1,p1,s1));let P8=J.get($.getCode());if(P8){let V8=P8.findIndex((v8)=>v8.getObjectId()===z1);if(V8!==-1)P8[V8]=B1}return B1},H6=async(X1,G1,z1)=>{let S1=$.getCode(),P1=J.get(S1);if(P1)return P1;let B1=await $.listJobs(X1,G1,z1);for(let s1 of B1){let{entity:P8,mutationApi:V8,pk:v8}=s1;K.set(P8.getObjectId(),m6.create(P8,V8,v8))}let p1=B1.map((s1)=>s1.entity);return J.set(S1,p1),p1},x6=async(X1,G1,z1,S1)=>{let{id:P1}=z1,B1=K.get(P1),p1=B1?B1.getEntity().getParentId():null,s1=await $.deleteJob(X1,G1,z1);return S1(`cache-evict:${P1}`,()=>{K.remove(P1);let P8=$.getCode(),V8=J.get(P8);if(V8){let v8=V8.findIndex((Q8)=>Q8.getObjectId()===P1);if(v8!==-1)V8.splice(v8,1)}v(Z,p1,P1);for(let v8 of s1.descendantIds)K.remove(v8)}),s1},q6=async(X1,G1,z1)=>{let S1=await $.readJobRootFolder(X1,G1,z1);if(!S1)return null;let{entity:P1,mutationApi:B1,pk:p1}=S1;return K.set(P1.getObjectId(),m6.create(P1,B1,p1)),P1},Y6=async(X1,G1,z1)=>{let S1=await $.readSettingsRootFolder(X1,G1,z1);if(!S1)return null;let{entity:P1,mutationApi:B1,pk:p1}=S1;return K.set(P1.getObjectId(),m6.create(P1,B1,p1)),P1},n4=async(X1,G1,z1,S1)=>{let P1=await $.createAsset(X1,G1,z1),{entity:B1}=P1,p1=B1.getObjectId(),s1=S1;return await X(X1,G1,p1,(V8,v8,Q8)=>{s1(V8,()=>{v8();let D6=$.getCode(),y6=W.get(D6);if(y6)y6.push(K.get(p1).getEntity())},Q8)},"created")},Q6=async(X1,G1,{id:z1})=>{if(!z1||z1.length<3||z1[1]!=="a")return null;let S1=K.get(z1);if(S1)return S1.getEntity();let P1=await $.readAsset(X1,G1,{id:z1});if(!P1)return null;let{entity:B1,mutationApi:p1,pk:s1}=P1;K.set(z1,m6.create(B1,p1,s1));let P8=W.get($.getCode());if(P8){let V8=P8.findIndex((v8)=>v8.getObjectId()===z1);if(V8!==-1)P8[V8]=B1}return B1},S4=async(X1,G1,z1)=>{let S1=$.getCode(),P1=W.get(S1);if(P1)return P1;let B1=await $.listAssets(X1,G1,z1);for(let s1 of B1){let{entity:P8,mutationApi:V8,pk:v8}=s1;K.set(P8.getObjectId(),m6.create(P8,V8,v8))}let p1=B1.map((s1)=>s1.entity);return W.set(S1,p1),p1},e6=async(X1,G1,z1,S1)=>{let{id:P1}=z1,B1=await $.deleteAsset(X1,G1,z1);return S1(`cache-evict:${P1}`,()=>{K.remove(P1);let p1=$.getCode(),s1=W.get(p1);if(s1){let P8=s1.findIndex((V8)=>V8.getObjectId()===P1);if(P8!==-1)s1.splice(P8,1)}}),B1},n1=async(X1,G1,{id:z1})=>{let S1=z1.length>=3?z1[1]:null;if(S1==="d"||S1==="t"){if(!await E(X1,G1,{id:z1}))return null;let v8=K.get(z1);return v8?{entity:v8.getEntity(),mutationApi:v8.getMutationApi(),pk:v8.getPk()}:null}let P1=K.get(z1);if(P1)return{entity:P1.getEntity(),mutationApi:P1.getMutationApi(),pk:P1.getPk()};let B1=await $.readEntity(X1,G1,{id:z1});if(!B1)return null;let{entity:p1,mutationApi:s1}=Y.createEntity(B1);if(B1.fields&&Array.isArray(B1.fields))for(let V8 of B1.fields)s1.setField(V8.getDefinition().getName(),V8);let P8=m6.create(p1,s1,B1.pk);return K.set(z1,P8),{entity:p1,mutationApi:s1,pk:B1.pk}},d1=async(X1,G1,z1)=>{return $.findEntitiesByFieldValue(X1,G1,z1)},b1=async(X1,G1,z1)=>{return $.findEntitiesByObjectRefFieldValue(X1,G1,z1)},T8=async(X1,G1,z1)=>{return $.searchTextFields(X1,G1,z1)},U1=async(X1,G1,z1)=>{return $.searchContent(X1,G1,z1)},A8=(X1)=>{K.remove(X1),Z.clear()},M8=(X1)=>{K.remove(X1),O.clear()},B8=(X1)=>{K.remove(X1),z.delete($.getCode())},g1=(X1)=>{K.remove(X1),J.delete($.getCode())},M1=()=>{z.clear(),J.clear(),W.clear(),Z.clear(),O.clear()},t1=(X1)=>{for(let G1 of X1)K.remove(G1)},_8=async(X1,G1,{id:z1},S1)=>{let P1=await $.restoreEntity(X1,G1,{id:z1},S1);await X(X1,G1,z1,S1,"restored");for(let p1 of P1.descendantIds)await X(X1,G1,p1,S1,"restored");let B1=[z1,...P1.descendantIds];return S1(`cache-list-push:restore:${z1}`,()=>{for(let p1 of B1){let s1=K.get(p1);if(!s1)continue;let P8=s1.getEntity(),V8=p1[1];if(V8==="s"){let v8=z.get($.getCode());if(v8)v8.push(P8)}else if(V8==="j"){let v8=J.get($.getCode());if(v8)v8.push(P8)}else if(V8==="a"){let v8=W.get($.getCode());if(v8)v8.push(P8)}else if(V8==="f")T(P8.getParentId(),P8);else if(V8==="d"||V8==="t")P(P8.getParentId(),V8,P8)}},()=>{z.clear(),J.clear(),W.clear(),Z.clear(),O.clear()}),P1};return Object.freeze({getObjectId:$.getObjectId,getName:$.getName,getCreatedAt:$.getCreatedAt,getUpdatedAt:$.getUpdatedAt,getCodes:$.getCodes,getType:$.getType,getCode:$.getCode,getPk:$.getPk,toJSON:$.toJSON,createFolder:V,readFolder:j,updateFolder:D,deleteFolder:f,listFolderContents:C,getFolderByPath:h,findFolderByName:L,readRootFolderForType:k,isDuplicateNameInParent:g,createContent:S,readContent:E,updateContent:x,updateEntityType:c,deleteTypeScopedFieldValues:i,deleteContent:t,saveDraft:w1,readDraft:T1,publishContent:Z1,discardDraft:E1,readVersion:H1,getVersions:Q1,findContentByName:L1,listContent:w8,setEditState:$8,getEditState:G8,clearEditState:W8,createFieldDefinition:m1,readFieldDefinition:e1,findFieldDefinitionByName:J1,getFieldDefinitionsForOwner:q1,getFieldDefinitionsForEntityType:A1,resolveEntityTypePk:n,resolveFieldDefinition:j1,deleteFieldDefinition:N1,updateFieldDefinitionConfig:x1,addClassAssociation:$.addClassAssociation,createEntityType:$.createEntityType,setFieldValue:a1,getFieldValue:K8,deleteFieldValue:y1,createStory:h1,renameStory:r1,readStory:z8,listStories:E8,deleteStory:X8,readStoryRootFolder:o8,createJob:$6,readJob:v6,listJobs:H6,deleteJob:x6,readJobRootFolder:q6,readSettingsRootFolder:Y6,readSetting:$.readSetting,listSettings:$.listSettings,findSettingByName:$.findSettingByName,createSetting:$.createSetting,updateSettingPath:$.updateSettingPath,deleteSetting:$.deleteSetting,createAsset:n4,readAsset:Q6,listAssets:S4,deleteAsset:e6,readEntity:n1,findEntitiesByFieldValue:d1,findEntitiesByObjectRefFieldValue:b1,searchTextFields:T8,searchContent:U1,evictFolder:A8,evictContent:M8,evictStory:B8,evictJob:g1,evictEntitiesById:t1,clearListCaches:M1,backfillVersionContentRefs:$.backfillVersionContentRefs,listDeletedItems:$.listDeletedItems,restoreEntity:_8,_test_finalizeEntityWrite:X,_test_getEntityCache:()=>K,_test_getStoryListCache:()=>z,_test_getJobListCache:()=>J,_test_getAssetListCache:()=>W,_test_getFolderContentsCache:()=>Z,_test_getContentListCache:()=>O,_test_pushToFolderContentsCache:T,_test_pushToContentListCache:P,_test_spliceFromCache:v})},zA1=Object.freeze({create:Ri8});var Ci8=($)=>{let K=new Map;return $.forEach((J)=>K.set(J,new Set)),Object.freeze({subscribe:(J,W)=>{return K.get(J)?.add(W),()=>K.get(J)?.delete(W)},subscribeAll:(J)=>{let W=[];for(let[Z,O]of K){let H=`on${Z.charAt(0).toUpperCase()}${Z.slice(1)}`;if(J[H])O.add(J[H]),W.push(()=>O.delete(J[H]))}return()=>W.forEach((Z)=>Z())},notify:(J,W,Z)=>{let O=[];return K.get(J)?.forEach((H)=>{if(H===Z)return;try{H(W)}catch(X){O.push(X)}}),O.length>0?O:null}})},Kz=Object.freeze({create:Ci8});var Ei8=({inner:$,storeCode:K})=>{let q=null,Y=Kz.create([c8.FOLDER_CREATED,c8.FOLDER_RENAMED,c8.FOLDER_MOVED,c8.FOLDER_DELETED,c8.FOLDER_RESTORED,c8.DOCUMENT_CREATED,c8.DOCUMENT_RENAMED,c8.DOCUMENT_MOVED,c8.DOCUMENT_DELETED,c8.DOCUMENT_RESTORED,c8.DOCUMENT_PUBLISHED,c8.DRAFT_SAVED,c8.DRAFT_DISCARDED,c8.TEMPLATE_CREATED,c8.TEMPLATE_RENAMED,c8.TEMPLATE_MOVED,c8.TEMPLATE_DELETED,c8.TEMPLATE_PUBLISHED,c8.TEMPLATE_DRAFT_SAVED,c8.TEMPLATE_DRAFT_DISCARDED,c8.EDIT_STATE_ACQUIRED,c8.EDIT_STATE_REFRESHED,c8.EDIT_STATE_CLEARED,c8.STORY_CREATED,c8.STORY_RENAMED,c8.STORY_DELETED,c8.JOB_CREATED,c8.JOB_DELETED,c8.FIELD_ADDED,c8.FIELD_VALUE_CHANGED,c8.FIELD_REMOVED,c8.FIELD_DEFINITION_CREATED,c8.FIELD_DEFINITION_DELETED,c8.ASSET_CREATED,c8.ASSET_DELETED,c8.ENTITY_TYPE_CREATED,c8.ENTITY_TYPE_UPDATED]),z=async(n1,d1,b1)=>{let T8=await $.readFolder(n1,d1,{id:b1});if(!T8)return null;let U1=T8.getSubtype?.();if(U1==="root_d")return"d";if(U1==="root_t")return"t";let A8=T8.getPath();if(!A8)return null;if(A8==="Documents"||A8.startsWith("Documents/"))return"d";if(A8==="Templates"||A8.startsWith("Templates/"))return"t";return null},J=async(n1,d1,b1,T8)=>{let{parentId:U1,subtype:A8}=b1,M8=await $.createFolder(n1,d1,b1,T8),B8=null;if(A8==="root_d")B8="d";else if(A8==="root_t")B8="t";else if(U1){let g1=await $.readFolder(n1,d1,{id:U1});if(g1){let M1=g1.getPath();if(M1==="Documents"||M1?.startsWith("Documents/"))B8="d";else if(M1==="Templates"||M1?.startsWith("Templates/"))B8="t"}}return T8(`event:folderCreated:${M8.getObjectId()}`,()=>{Y.notify(c8.FOLDER_CREATED,{id:M8.getObjectId(),storeCode:K,name:M8.getName(),path:M8.getPath(),parentFolderId:U1,contentType:B8})}),M8},W=async(n1,d1,b1)=>{return $.readFolder(n1,d1,b1)},Z=async(n1,d1,b1,T8)=>{let{id:U1,name:A8,parentId:M8}=b1,B8=await $.updateFolder(n1,d1,b1,T8),g1=B8.entity,M1=B8.oldValues.name,t1=B8.oldValues.parentId,_8=await z(n1,d1,U1);if(A8!==void 0&&A8!==M1)T8(`event:folderRenamed:${U1}`,()=>{Y.notify(c8.FOLDER_RENAMED,{id:U1,storeCode:K,parentFolderId:g1.getParentId(),contentType:_8,oldName:M1,newName:A8,path:g1.getPath()})});if(M8!==void 0&&M8!==t1)T8(`event:folderMoved:${U1}`,()=>{Y.notify(c8.FOLDER_MOVED,{id:U1,storeCode:K,contentType:_8,oldParentFolderId:t1,parentFolderId:M8,path:g1.getPath()})});return g1},O=async(n1,d1,b1,T8)=>{let{id:U1}=b1,M8=(await $.readFolder(n1,d1,{id:U1}))?.getParentId(),B8=await z(n1,d1,U1),g1=await $.deleteFolder(n1,d1,b1,T8);return T8(`event:folderDeleted:${U1}`,()=>{Y.notify(c8.FOLDER_DELETED,{id:U1,storeCode:K,parentFolderId:M8,contentType:B8,path:g1.path,descendantCount:g1.descendantIds?.length||0})}),g1},H=async(n1,d1,b1)=>{return $.listFolderContents(n1,d1,b1)},X=async(n1,d1,b1)=>{return $.getFolderByPath(n1,d1,b1)},w=async(n1,d1,b1,T8)=>{return $.findFolderByName(n1,d1,b1,T8)},G=async(n1,d1,b1)=>{return $.readRootFolderForType(n1,d1,b1)},T=async(n1,d1,b1,T8,U1)=>{return $.isDuplicateNameInParent(n1,d1,b1,T8,U1)},P=async(n1,d1,b1,T8)=>{let{type:U1,parentId:A8}=b1,M8=await $.createContent(n1,d1,b1,T8),B8=U1==="t"?c8.TEMPLATE_CREATED:c8.DOCUMENT_CREATED;return T8(`event:contentCreated:${M8.getObjectId()}`,()=>{Y.notify(B8,{storeCode:K,id:M8.getObjectId(),type:U1,parentFolderId:A8,name:M8.getName(),path:M8.getPath()})}),M8},v=async(n1,d1,b1)=>{return $.readContent(n1,d1,b1)},V=async(n1,d1,b1,T8)=>{let{id:U1,name:A8,parentId:M8}=b1,B8=b6.getTypeFromId(U1),{entity:g1,oldValues:M1}=await $.updateContent(n1,d1,b1,T8),t1=M1?.name,_8=M1?.parentId,O8=B8==="t"?c8.TEMPLATE_RENAMED:c8.DOCUMENT_RENAMED,X1=B8==="t"?c8.TEMPLATE_MOVED:c8.DOCUMENT_MOVED;if(A8!==void 0&&A8!==t1)T8(`event:contentRenamed:${U1}`,()=>{Y.notify(O8,{storeCode:K,id:U1,type:B8,parentFolderId:g1.getParentId(),oldName:t1,newName:A8,path:g1.getPath()})});if(M8!==void 0&&M8!==_8)T8(`event:contentMoved:${U1}`,()=>{Y.notify(X1,{storeCode:K,id:U1,type:B8,oldParentFolderId:_8,parentFolderId:M8,path:g1.getPath()})});return g1},j=async(n1,d1,b1,T8)=>{return $.updateEntityType(n1,d1,b1,T8)},D=async(n1,d1,b1)=>{return $.deleteTypeScopedFieldValues(n1,d1,b1)},f=async(n1,d1,b1,T8)=>{let{id:U1}=b1,A8=b6.getTypeFromId(U1),B8=(await $.readContent(n1,d1,{id:U1}))?.getParentId(),g1=await $.deleteContent(n1,d1,b1,T8),M1=A8==="t"?c8.TEMPLATE_DELETED:c8.DOCUMENT_DELETED;return T8(`event:contentDeleted:${U1}`,()=>{Y.notify(M1,{storeCode:K,id:U1,type:A8,parentFolderId:B8,path:g1.path})}),g1},C=async(n1,d1,b1,T8)=>{let{id:U1}=b1,A8=await $.restoreEntity(n1,d1,b1,T8),{type:M8,parentFolderId:B8}=A8;if(["d","t"].includes(M8))T8(`event:contentRestored:${U1}`,()=>{Y.notify(c8.DOCUMENT_RESTORED,{id:U1,storeCode:K,type:M8,parentFolderId:B8})});else if(["f","s"].includes(M8)){let g1=await z(n1,d1,U1);T8(`event:folderRestored:${U1}`,()=>{Y.notify(c8.FOLDER_RESTORED,{id:U1,storeCode:K,type:M8,parentFolderId:B8,contentType:g1})})}return A8},h=async(n1,d1,b1,T8)=>{let{id:U1}=b1,A8=b6.getTypeFromId(U1),B8=(await $.readContent(n1,d1,{id:U1}))?.getParentId(),g1=await $.saveDraft(n1,d1,b1,T8),M1=A8==="t"?c8.TEMPLATE_DRAFT_SAVED:c8.DRAFT_SAVED;return T8(`event:draftSaved:${U1}`,()=>{let t1=g1.lockLost!==void 0?g1.entity:g1;Y.notify(M1,{storeCode:K,id:U1,type:A8,parentFolderId:B8,updatedAt:t1?t1.getUpdatedAt():null,lockLost:g1.lockLost})}),g1},L=async(n1,d1,b1)=>{return $.readDraft(n1,d1,b1)},k=async(n1,d1,b1,T8)=>{let{id:U1}=b1,A8=b6.getTypeFromId(U1),M8=await $.publishContent(n1,d1,b1,T8),B8=A8==="t"?c8.TEMPLATE_PUBLISHED:c8.DOCUMENT_PUBLISHED;return T8(`event:contentPublished:${U1}`,()=>{Y.notify(B8,{storeCode:K,id:U1,type:A8,parentFolderId:M8.getParentId(),versionNumber:M8.getPublishedVersionNumber()})}),{entityId:U1,versionNumber:M8.getPublishedVersionNumber(),content:M8.getPublishedContent(),publishedAt:M8.getUpdatedAt()}},g=async(n1,d1,b1,T8)=>{let{id:U1}=b1,A8=b6.getTypeFromId(U1),M8=await $.discardDraft(n1,d1,b1,T8),B8=A8==="t"?c8.TEMPLATE_DRAFT_DISCARDED:c8.DRAFT_DISCARDED;return T8(`event:draftDiscarded:${U1}`,()=>{Y.notify(B8,{storeCode:K,id:U1})}),M8},S=async(n1,d1,b1)=>{return $.readVersion(n1,d1,b1)},E=async(n1,d1,b1)=>{return $.getVersions(n1,d1,b1)},x=async(n1,d1,b1,T8,U1)=>{return $.findContentByName(n1,d1,b1,T8,U1)},c=async(n1,d1,b1)=>{return $.listContent(n1,d1,b1)},i=async(n1,d1,b1,T8)=>{let U1=await $.setEditState(n1,d1,b1,T8);if(U1.success){let A8=b6.getTypeFromId(b1.id);T8(`event:editStateAcquired:${b1.id}`,()=>{Y.notify(c8.EDIT_STATE_ACQUIRED,{id:b1.id,type:A8,storeCode:K,sessionId:b1.sessionId})})}return U1},t=async(n1,d1,b1)=>{return $.getEditState(n1,d1,b1)},w1=async(n1,d1,b1,T8)=>{await $.clearEditState(n1,d1,b1,T8);let U1=b6.getTypeFromId(b1.id);T8(`event:editStateCleared:${b1.id}`,()=>{Y.notify(c8.EDIT_STATE_CLEARED,{id:b1.id,type:U1,storeCode:K})})},Z1=async(n1,d1,b1,T8)=>{let U1=await $.createFieldDefinition(n1,d1,b1,T8);return T8(`event:fieldDefinitionCreated:${U1.getObjectId()}`,()=>{Y.notify(c8.FIELD_DEFINITION_CREATED,{id:U1.getObjectId(),storeCode:K,name:U1.getName(),ownerEntityId:U1.getOwnerEntityId(),primitiveType:U1.getPrimitiveType()})}),U1},E1=async(n1,d1,b1)=>{return $.readFieldDefinition(n1,d1,b1)},T1=async(n1,d1,b1,T8)=>{return $.findFieldDefinitionByName(n1,d1,b1,T8)},H1=async(n1,d1,b1)=>{return $.getFieldDefinitionsForOwner(n1,d1,b1)},Q1=async(n1,d1,b1)=>{return $.getFieldDefinitionsForEntityType(n1,d1,b1)},L1=async(n1,d1,b1)=>{return $.resolveEntityTypePk(n1,d1,b1)},w8=async(n1,d1,b1)=>{return $.resolveFieldDefinition(n1,d1,b1)},$8=async(n1,d1,b1,T8)=>{let U1=await $.deleteFieldDefinition(n1,d1,b1,T8);return T8(`event:fieldDefinitionDeleted:${U1.getObjectId()}`,()=>{Y.notify(c8.FIELD_DEFINITION_DELETED,{id:U1.getObjectId(),storeCode:K,name:U1.getName()})}),U1},G8=async(n1,d1,b1,T8)=>{let U1=await $.createEntityType(n1,d1,b1,T8);return T8(`event:entityTypeCreated:${U1.id}`,()=>{Y.notify(c8.ENTITY_TYPE_CREATED,{id:U1.id,code:U1.code,subtype:U1.subtype,name:U1.name,storeCode:K})}),U1},W8=async(n1,d1,b1,T8)=>{return $.setFieldValue(n1,d1,b1,T8)},m1=async(n1,d1,b1,T8)=>{let{entityId:U1,fieldName:A8}=b1,{typeCode:M8}=b6.parseId(U1),B8=await $.setFieldValue(n1,d1,b1,T8);return T8(`event:fieldAdded:${U1}`,()=>{Y.notify(c8.FIELD_ADDED,{entityType:M8,entityId:U1,fieldName:A8,value:b1.value??b1.values,storeCode:K})}),B8},e1=async(n1,d1,b1,T8)=>{let{entityId:U1,fieldName:A8,_oldValue:M8}=b1,{typeCode:B8}=b6.parseId(U1),g1=await $.setFieldValue(n1,d1,b1,T8);if(q){let M1=g1.getSubtype?.()??null;await q.notify(n1,d1,{entityId:U1,entityType:B8,entitySubtype:M1,fieldName:A8,oldValue:M8,newValue:b1.value??b1.values},T8)}return T8(`event:fieldValueChanged:${U1}`,()=>{Y.notify(c8.FIELD_VALUE_CHANGED,{entityType:B8,entityId:U1,fieldName:A8,oldValue:M8,newValue:b1.value??b1.values,storeCode:K})}),g1},J1=async(n1,d1,b1)=>{return $.getFieldValue(n1,d1,b1)},q1=async(n1,d1,b1,T8)=>{return $.deleteFieldValue(n1,d1,b1,T8)},A1=async(n1,d1,b1,T8)=>{let{entityId:U1,fieldName:A8}=b1,{typeCode:M8}=b6.parseId(U1),B8=await $.deleteFieldValue(n1,d1,b1,T8);return T8(`event:fieldRemoved:${U1}`,()=>{Y.notify(c8.FIELD_REMOVED,{entityType:M8,entityId:U1,fieldName:A8,storeCode:K})}),B8},n=async(n1,d1,b1,T8)=>{let{parentId:U1,state:A8="prep"}=b1,M8=await $.createStory(n1,d1,b1,T8);return T8(`event:storyCreated:${M8.getObjectId()}`,()=>{Y.notify(c8.STORY_CREATED,{id:M8.getObjectId(),storeCode:K,name:M8.getName(),path:M8.getPath(),parentFolderId:U1,state:A8})}),M8},j1=async(n1,d1,b1)=>{return $.readStory(n1,d1,b1)},N1=async(n1,d1,b1)=>{return $.listStories(n1,d1,b1)},x1=async(n1,d1,b1,T8)=>{let{id:U1}=b1,{entity:A8,oldValues:M8}=await $.renameStory(n1,d1,b1,T8);return T8(`event:storyRenamed:${U1}`,()=>{Y.notify(c8.STORY_RENAMED,{id:U1,storeCode:K,name:A8.getName(),path:A8.getPath()})}),{entity:A8,oldValues:M8}},a1=async(n1,d1,b1,T8)=>{let{id:U1}=b1,M8=(await $.readStory(n1,d1,{id:U1}))?.getParentId()??null,B8=await $.deleteStory(n1,d1,b1,T8);return T8(`event:storyDeleted:${U1}`,()=>{Y.notify(c8.STORY_DELETED,{id:U1,storeCode:K,path:B8.path,parentFolderId:M8,descendantCount:B8.descendantCount})}),B8},K8=async(n1,d1,b1)=>{return $.readStoryRootFolder(n1,d1,b1)},y1=async(n1,d1,b1)=>{return $.findEntitiesByFieldValue(n1,d1,b1)},h1=async(n1,d1,b1)=>{return $.findEntitiesByObjectRefFieldValue(n1,d1,b1)},z8=async(n1,d1,b1)=>{return $.searchTextFields(n1,d1,b1)},E8=async(n1,d1,b1)=>{return $.searchContent(n1,d1,b1)},r1=async(n1,d1,b1,T8)=>{let{parentId:U1,status:A8="pending"}=b1,M8=await $.createJob(n1,d1,b1,T8);return T8(`event:jobCreated:${M8.getObjectId()}`,()=>{Y.notify(c8.JOB_CREATED,{id:M8.getObjectId(),storeCode:K,name:M8.getName(),path:M8.getPath(),parentFolderId:U1,status:A8})}),M8},X8=async(n1,d1,b1)=>{return $.readJob(n1,d1,b1)},o8=async(n1,d1,b1)=>{return $.listJobs(n1,d1,b1)},$6=async(n1,d1,b1,T8)=>{let{id:U1}=b1,M8=(await $.readJob(n1,d1,{id:U1}))?.getParentId()??null,B8=await $.deleteJob(n1,d1,b1,T8);return T8(`event:jobDeleted:${U1}`,()=>{Y.notify(c8.JOB_DELETED,{id:U1,storeCode:K,path:B8.path,parentFolderId:M8,descendantCount:B8.descendantCount})}),B8},v6=async(n1,d1,b1)=>{return $.readJobRootFolder(n1,d1,b1)},H6=async(n1,d1,b1)=>{return $.readSettingsRootFolder(n1,d1,b1)},x6=async(n1,d1,b1,T8)=>{let U1=await $.createAsset(n1,d1,b1,T8);return T8(`event:assetCreated:${U1.getObjectId()}`,()=>{Y.notify(c8.ASSET_CREATED,{id:U1.getObjectId(),storeCode:K,hash:U1.getHash(),mimeType:U1.getMimeType(),originalFilename:U1.getOriginalFilename()})}),U1},q6=async(n1,d1,b1)=>{return $.readAsset(n1,d1,b1)},Y6=async(n1,d1,b1)=>{return $.listAssets(n1,d1,b1)},n4=async(n1,d1,b1,T8)=>{let{id:U1}=b1,A8=await $.deleteAsset(n1,d1,b1,T8);return T8(`event:assetDeleted:${U1}`,()=>{Y.notify(c8.ASSET_DELETED,{id:U1,storeCode:K,hash:A8.hash})}),A8},Q6=async(n1,d1,b1)=>{return $.readEntity(n1,d1,b1)},S4=(n1)=>{q=n1};return Object.freeze({getObjectId:$.getObjectId,getName:$.getName,getCreatedAt:$.getCreatedAt,getUpdatedAt:$.getUpdatedAt,getCodes:$.getCodes,getType:$.getType,getCode:$.getCode,getPk:$.getPk,toJSON:$.toJSON,createFolder:J,readFolder:W,updateFolder:Z,deleteFolder:O,listFolderContents:H,getFolderByPath:X,findFolderByName:w,readRootFolderForType:G,isDuplicateNameInParent:T,createContent:P,readContent:v,updateContent:V,updateEntityType:j,deleteTypeScopedFieldValues:D,deleteContent:f,saveDraft:h,readDraft:L,publishContent:k,discardDraft:g,readVersion:S,getVersions:E,findContentByName:x,listContent:c,setEditState:i,getEditState:t,clearEditState:w1,createFieldDefinition:Z1,readFieldDefinition:E1,findFieldDefinitionByName:T1,getFieldDefinitionsForOwner:H1,getFieldDefinitionsForEntityType:Q1,resolveEntityTypePk:L1,resolveFieldDefinition:w8,deleteFieldDefinition:$8,updateFieldDefinitionConfig:$.updateFieldDefinitionConfig,addClassAssociation:$.addClassAssociation,createEntityType:G8,setFieldValue:W8,addFieldToEntity:m1,updateFieldValue:e1,getFieldValue:J1,deleteFieldValue:q1,removeFieldFromEntity:A1,createStory:n,renameStory:x1,readStory:j1,listStories:N1,deleteStory:a1,readStoryRootFolder:K8,createJob:r1,readJob:X8,listJobs:o8,deleteJob:$6,readJobRootFolder:v6,readSettingsRootFolder:H6,readSetting:$.readSetting,listSettings:$.listSettings,findSettingByName:$.findSettingByName,createSetting:$.createSetting,updateSettingPath:$.updateSettingPath,deleteSetting:$.deleteSetting,findEntitiesByFieldValue:y1,findEntitiesByObjectRefFieldValue:h1,searchTextFields:z8,searchContent:E8,createAsset:x6,readAsset:q6,listAssets:Y6,deleteAsset:n4,readEntity:Q6,evictFolder:$.evictFolder,evictContent:$.evictContent,evictStory:$.evictStory,evictJob:$.evictJob,evictEntitiesById:$.evictEntitiesById,clearListCaches:$.clearListCaches,backfillVersionContentRefs:$.backfillVersionContentRefs,listDeletedItems:$.listDeletedItems,restoreEntity:C,subscribe:Y.subscribe,subscribeAll:Y.subscribeAll,setFieldHooks:S4})},JA1=Object.freeze({create:Ei8});h6();var JF={};J0(JF,{applyPojo_v:()=>ui8,applyPojo_t:()=>Si8,applyPojo_s:()=>Ii8,applyPojo_j:()=>xi8,applyPojo_f:()=>hi8,applyPojo_d:()=>Li8,applyPojo_a:()=>gi8});var Li8=($,K,q)=>{if(q.name!==void 0)K.setName(q.name);if(q.updatedAt!==void 0)K.setUpdatedAt(q.updatedAt);if(q.parentId!==void 0)K.setParentId(q.parentId);if(q.path!==void 0)K.setPath(q.path);if(q.publishedVersionNumber!==void 0)K.setPublishedVersionNumber(q.publishedVersionNumber);if(q.hasDraft!==void 0)K.setHasDraft(q.hasDraft);if(q.draftContent!==void 0)K.setDraftContent(q.draftContent);if(q.publishedContent!==void 0)K.setPublishedContent(q.publishedContent);if(q.editState!==void 0)K.setEditState(q.editState);if(q.fields){for(let[Y,z]of Object.entries(q.fields)){let J=x3.create({definition:z.definition,values:z.values});K.setField(Y,J)}for(let Y of Object.keys($.getFields())){if(t0.has(Y))continue;if(!(Y in q.fields))K.removeField(Y)}}},Si8=($,K,q)=>{if(q.name!==void 0)K.setName(q.name);if(q.updatedAt!==void 0)K.setUpdatedAt(q.updatedAt);if(q.parentId!==void 0)K.setParentId(q.parentId);if(q.path!==void 0)K.setPath(q.path);if(q.publishedVersionNumber!==void 0)K.setPublishedVersionNumber(q.publishedVersionNumber);if(q.hasDraft!==void 0)K.setHasDraft(q.hasDraft);if(q.draftContent!==void 0)K.setDraftContent(q.draftContent);if(q.publishedContent!==void 0)K.setPublishedContent(q.publishedContent);if(q.editState!==void 0)K.setEditState(q.editState);if(q.fields){for(let[Y,z]of Object.entries(q.fields)){let J=x3.create({definition:z.definition,values:z.values});K.setField(Y,J)}for(let Y of Object.keys($.getFields())){if(t0.has(Y))continue;if(!(Y in q.fields))K.removeField(Y)}}},hi8=($,K,q)=>{if(q.name!==void 0)K.setName(q.name);if(q.updatedAt!==void 0)K.setUpdatedAt(q.updatedAt);if(q.parentId!==void 0)K.setParentId(q.parentId);if(q.path!==void 0)K.setPath(q.path);if(q.fields){for(let[Y,z]of Object.entries(q.fields)){let J=x3.create({definition:z.definition,values:z.values});K.setField(Y,J)}for(let Y of Object.keys($.getFields())){if(t0.has(Y))continue;if(!(Y in q.fields))K.removeField(Y)}}},Ii8=($,K,q)=>{if(q.name!==void 0)K.setName(q.name);if(q.updatedAt!==void 0)K.setUpdatedAt(q.updatedAt);if(q.parentId!==void 0)K.setParentId(q.parentId);if(q.path!==void 0)K.setPath(q.path);if(q.fields){for(let[Y,z]of Object.entries(q.fields)){let J=x3.create({definition:z.definition,values:z.values});K.setField(Y,J)}for(let Y of Object.keys($.getFields())){if(t0.has(Y))continue;if(!(Y in q.fields))K.removeField(Y)}}},xi8=($,K,q)=>{if(q.name!==void 0)K.setName(q.name);if(q.updatedAt!==void 0)K.setUpdatedAt(q.updatedAt);if(q.parentId!==void 0)K.setParentId(q.parentId);if(q.path!==void 0)K.setPath(q.path);if(q.fields){for(let[Y,z]of Object.entries(q.fields)){let J=x3.create({definition:z.definition,values:z.values});K.setField(Y,J)}for(let Y of Object.keys($.getFields())){if(t0.has(Y))continue;if(!(Y in q.fields))K.removeField(Y)}}},gi8=($,K,q)=>{if(q.name!==void 0)K.setName(q.name);if(q.updatedAt!==void 0)K.setUpdatedAt(q.updatedAt);if(q.fields){for(let[Y,z]of Object.entries(q.fields)){let J=x3.create({definition:z.definition,values:z.values});K.setField(Y,J)}for(let Y of Object.keys($.getFields())){if(t0.has(Y))continue;if(!(Y in q.fields))K.removeField(Y)}}},ui8=($,K,q)=>{if(q.name!==void 0)K.setName(q.name);if(q.updatedAt!==void 0)K.setUpdatedAt(q.updatedAt);if(q.fields){for(let[Y,z]of Object.entries(q.fields)){let J=x3.create({definition:z.definition,values:z.values});K.setField(Y,J)}for(let Y of Object.keys($.getFields())){if(t0.has(Y))continue;if(!(Y in q.fields))K.removeField(Y)}}};var yi8=Object.freeze({d:dD,t:aD,f:p7,s:$Y,j:OX,a:HX,v:oD}),bi8=($)=>{let{entity:K}=Dq.create({id:`virtual:${$.name}`,name:$.name,label:$.label,description:$.description,primitiveType:$.primitiveType,required:!1,multiplicity:"single",isSystem:!0,isVirtual:!0,editable:$.editable});return K},mi8=Object.freeze(Object.fromEntries(G$.filter(($)=>!$.searchOnly).map(($)=>[$.name,bi8($)]))),Bi8=($)=>{let K={id:$.object_id??$.id,name:$.name,createdAt:$.created_at??$.createdAt,updatedAt:$.updated_at??$.updatedAt};if($.parent_folder_id!==void 0)K.parentId=$.parent_folder_id;else if($.parentId!==void 0)K.parentId=$.parentId;if($.path!==void 0)K.path=$.path;if($.published_version_number!==void 0)K.publishedVersionNumber=$.published_version_number;else if($.publishedVersionNumber!==void 0)K.publishedVersionNumber=$.publishedVersionNumber;if($.has_draft!==void 0)K.hasDraft=$.has_draft===1||$.has_draft===!0;else if($.hasDraft!==void 0)K.hasDraft=$.hasDraft;if($.draft_content!==void 0)K.draftContent=$.draft_content;else if($.draftContent!==void 0)K.draftContent=$.draftContent;if($.published_content!==void 0)K.publishedContent=$.published_content;else if($.publishedContent!==void 0)K.publishedContent=$.publishedContent;if($.subtype!==void 0)K.subtype=$.subtype;if($.edit_state!==void 0)K.editState=$.edit_state;else if($.editState!==void 0)K.editState=$.editState;return K},Ui8=($)=>{let K=new Map;for(let q of G$){let Y=$[q.columnName];if(Y===void 0){if(q.name==="parent"&&$.parentId!==void 0)Y=$.parentId;else if(q.name==="created_at"&&$.createdAt!==void 0)Y=$.createdAt;else if(q.name==="updated_at"&&$.updatedAt!==void 0)Y=$.updatedAt}if(Y!==void 0&&Y!==null){let z=mi8[q.name],J=x3.create({definition:z,values:[String(Y)]});K.set(q.name,J)}}return K},ci8=()=>{return Object.freeze({createEntity:(K)=>{let q=K.typeCode??K.type_code??K.type,Y=yi8[q];if(!Y)throw I.validation(`No factory for typeCode: ${q}`,"UNKNOWN_TYPE_CODE");let z=Bi8(K),{entity:J,mutationApi:W}=Y.create(z),Z=Ui8(K);for(let[X,w]of Z)W.setField(X,w);let O=JF[`applyPojo_${q}`],H=Object.freeze({...W,applyPojo:(X)=>O(J,W,X)});return{entity:J,mutationApi:H}}})},WA1=Object.freeze({create:ci8});var Fi8=($)=>{let{id:K,code:q,name:Y,pk:z,createdAt:J,updatedAt:W}=$,Z=tc.create(),O=tc.create(),{store:H,mutationApi:X}=YA1.create({id:K,code:q,name:Y,pk:z,createdAt:J,updatedAt:W,entityCache:Z}),w=WA1.create(),G=zA1.create({inner:H,entityCache:Z,fieldDefinitionCache:O,entityFactory:w});return{store:JA1.create({inner:G,storeCode:q}),mutationApi:X}},ZA1=Object.freeze({create:Fi8});h6();var pi8=({id:$,name:K,createdAt:q,updatedAt:Y,children:z=[]})=>{let J=[...z],W=new Map,{entityFns:Z,mutationFns:O}=fq.create({id:$,name:K,createdAt:q,updatedAt:Y}),H=()=>{W.clear();for(let m of J){let p=m.getCodes();for(let b of p)W.set(b,m)}};H();let X=()=>"demux",w=()=>J.map((m)=>m.getObjectId()),G=()=>[...J],T=()=>{return new Set(W.keys())},P=()=>({id:$,name:K,createdAt:q,updatedAt:Y,type:"demux",childIds:w()}),v=(m)=>{J.push(m),H()},V=(m)=>{return W.get(m)??null},j=async(m,p,{store:b,storeCode:Q,parentId:l,name:a,subtype:_1},O1)=>{let V1=b??Q;U.factory(!V1,I.validation,"store parameter is required","MISSING_STORE_CODE");let v1=V(V1);return U.factory(!v1,I.notFound,`No child store with code: ${V1}`,"STORE_NOT_FOUND"),v1.createFolder(m,p,{storeCode:V1,parentId:l,name:a,subtype:_1},O1)},D=async(m,p,{id:b})=>{let Q=b?.[0],l=V(Q);if(!l)return null;return l.readFolder(m,p,{id:b})},F=Object.freeze({...Z,getType:X,getCodes:T,getChildIds:w,getChildren:G,toJSON:P,createFolder:j,readFolder:D,updateFolder:async(m,p,{id:b,name:Q,parentId:l},a)=>{let _1=b?.[0],O1=V(_1);return U.factory(!O1,I.notFound,`No child store with code: ${_1}`,"STORE_NOT_FOUND"),O1.updateFolder(m,p,{id:b,name:Q,parentId:l},a)},deleteFolder:async(m,p,{id:b},Q)=>{let l=b?.[0],a=V(l);return U.factory(!a,I.notFound,`No child store with code: ${l}`,"STORE_NOT_FOUND"),a.deleteFolder(m,p,{id:b},Q)},evictFolder:(m)=>{let p=m?.[0],b=V(p);if(b)b.evictFolder(m)},evictContent:(m)=>{let p=m?.[0],b=V(p);if(b)b.evictContent(m)},evictStory:(m)=>{let p=m?.[0],b=V(p);if(b)b.evictStory(m)},evictJob:(m)=>{let p=m?.[0],b=V(p);if(b)b.evictJob(m)},clearListCaches:()=>{for(let m of J)m.clearListCaches()},evictEntitiesById:(m)=>{for(let p of J)p.evictEntitiesById(m)},getFolder:async(m,p,{id:b})=>{return D(m,p,{id:b})},listFolderContents:async(m,p,{folderId:b,store:Q,storeCode:l,type:a})=>{let _1;if(b!==null&&b!==void 0)_1=b[0];else{let v1=Q??l;U.factory(!v1,I.validation,"store required when folderId is null","STORE_CODE_REQUIRED"),_1=v1}let O1=V(_1);U.factory(!O1,I.notFound,`No child store with code: ${_1}`,"STORE_NOT_FOUND");let V1={...p,storeCode:_1};return O1.listFolderContents(m,V1,{folderId:b,type:a})},getFolderByPath:async(m,p,{path:b,type:Q,store:l,storeCode:a})=>{let _1=l??a;U.factory(!_1,I.validation,"store required for getFolderByPath","STORE_CODE_REQUIRED");let O1=V(_1);if(!O1)return null;let V1={...p,storeCode:_1};return O1.getFolderByPath(m,V1,{path:b,type:Q})},isDuplicateNameInParent:async(m,p,b,Q,l=null)=>{let a;if(b)a=b[0];else{let O1=J[0];if(!O1)U.factory(!0,I.notFound,"No child stores available","STORE_NOT_FOUND");a=[...O1.getCodes()][0]}let _1=V(a);return U.factory(!_1,I.notFound,`No child store with code: ${a}`,"STORE_NOT_FOUND"),_1.isDuplicateNameInParent(m,p,b,Q,l)},findFolderByName:async(m,p,b,Q)=>{let l=b[0],a=V(l);if(!a)return null;return a.findFolderByName(m,p,b,Q)},readRootFolderForType:async(m,p,b,Q)=>{let l=V(Q);return U.factory(!l,I.notFound,`No child store with code: ${Q}`,"STORE_NOT_FOUND"),l.readRootFolderForType(m,p,b,Q)},createFieldDefinition:async(m,p,{storeCode:b,ownerEntityId:Q,ownerEntityTypePk:l,name:a,label:_1,description:O1,primitiveType:V1,required:v1,multiplicity:o1,isSystem:q8,allowed:j8},R8)=>{let l8=V(b);return U.factory(!l8,I.notFound,`No child store with code: ${b}`,"STORE_NOT_FOUND"),l8.createFieldDefinition(m,p,{storeCode:b,ownerEntityId:Q,ownerEntityTypePk:l,name:a,label:_1,description:O1,primitiveType:V1,required:v1,multiplicity:o1,isSystem:q8,allowed:j8},R8)},readFieldDefinition:async(m,p,{id:b})=>{let Q=b?.[0],l=V(Q);if(!l)return null;return l.readFieldDefinition(m,p,{id:b})},getFieldDefinitionsForOwner:async(m,p,{storeCode:b,ownerEntityPk:Q,includeSystem:l})=>{let a=V(b);return U.factory(!a,I.notFound,`No child store with code: ${b}`,"STORE_NOT_FOUND"),a.getFieldDefinitionsForOwner(m,p,{ownerEntityPk:Q,includeSystem:l})},getFieldDefinitionsForEntityType:async(m,p,{storeCode:b,code:Q,subtype:l})=>{let a=V(b);return U.factory(!a,I.notFound,`No child store with code: ${b}`,"STORE_NOT_FOUND"),a.getFieldDefinitionsForEntityType(m,p,{code:Q,subtype:l})},resolveEntityTypePk:async(m,p,{storeCode:b,code:Q,subtype:l})=>{let a=V(b);return U.factory(!a,I.notFound,`No child store with code: ${b}`,"STORE_NOT_FOUND"),a.resolveEntityTypePk(m,p,{code:Q,subtype:l})},resolveFieldDefinition:async(m,p,{storeCode:b,fieldDefinitionId:Q,fieldName:l,ownerEntityPk:a,entityTypePk:_1})=>{let O1=V(b);return U.factory(!O1,I.notFound,`No child store with code: ${b}`,"STORE_NOT_FOUND"),O1.resolveFieldDefinition(m,p,{fieldDefinitionId:Q,fieldName:l,ownerEntityPk:a,entityTypePk:_1})},deleteFieldDefinition:async(m,p,{id:b},Q)=>{let l=b?.[0],a=V(l);return U.factory(!a,I.notFound,`No child store with code: ${l}`,"STORE_NOT_FOUND"),a.deleteFieldDefinition(m,p,{id:b},Q)},updateFieldDefinitionConfig:async(m,p,{id:b,config:Q})=>{let l=b?.[0],a=V(l);return U.factory(!a,I.notFound,`No child store with code: ${l}`,"STORE_NOT_FOUND"),a.updateFieldDefinitionConfig(m,p,{id:b,config:Q})},addClassAssociation:async(m,p,{fieldDefinitionId:b,entityTypePk:Q,required:l,sortOrder:a,rows:_1,colspan:O1,description:V1})=>{let v1=b?.[0],o1=V(v1);return U.factory(!o1,I.notFound,`No child store with code: ${v1}`,"STORE_NOT_FOUND"),o1.addClassAssociation(m,p,{fieldDefinitionId:b,entityTypePk:Q,required:l,sortOrder:a,rows:_1,colspan:O1,description:V1})},createEntityType:async(m,p,{code:b,subtype:Q,name:l,parentTypePk:a},_1)=>{let O1=J[0];return U.factory(!O1,I.notFound,"No child stores available","NO_CHILD_STORES"),O1.createEntityType(m,p,{code:b,subtype:Q,name:l,parentTypePk:a},_1)},setFieldValue:async(m,p,{entityId:b,fieldDefinitionId:Q,fieldName:l,value:a,values:_1},O1)=>{let V1=b?.[0],v1=V(V1);return U.factory(!v1,I.notFound,`No child store with code: ${V1}`,"STORE_NOT_FOUND"),v1.setFieldValue(m,p,{entityId:b,fieldDefinitionId:Q,fieldName:l,value:a,values:_1},O1)},deleteFieldValue:async(m,p,{entityId:b,fieldDefinitionId:Q,fieldName:l},a)=>{let _1=b?.[0],O1=V(_1);return U.factory(!O1,I.notFound,`No child store with code: ${_1}`,"STORE_NOT_FOUND"),O1.deleteFieldValue(m,p,{entityId:b,fieldDefinitionId:Q,fieldName:l},a)},getFieldValue:async(m,p,{entityId:b,fieldDefinitionId:Q,fieldName:l})=>{let a=b?.[0],_1=V(a);if(!_1)return null;return _1.getFieldValue(m,p,{entityId:b,fieldDefinitionId:Q,fieldName:l})},addFieldToEntity:async(m,p,b,Q)=>{let l=b.entityId?.[0],a=V(l);return U.factory(!a,I.notFound,`No child store with code: ${l}`,"STORE_NOT_FOUND"),a.addFieldToEntity(m,p,b,Q)},updateFieldValue:async(m,p,b,Q)=>{let l=b.entityId?.[0],a=V(l);return U.factory(!a,I.notFound,`No child store with code: ${l}`,"STORE_NOT_FOUND"),a.updateFieldValue(m,p,b,Q)},removeFieldFromEntity:async(m,p,b,Q)=>{let l=b.entityId?.[0],a=V(l);return U.factory(!a,I.notFound,`No child store with code: ${l}`,"STORE_NOT_FOUND"),a.removeFieldFromEntity(m,p,b,Q)},createContent:async(m,p,{storeCode:b,type:Q,...l},a)=>{let _1=V(b);return U.factory(!_1,I.notFound,`No child store with code: ${b}`,"STORE_NOT_FOUND"),_1.createContent(m,p,{type:Q,storeCode:b,...l},a)},readContent:async(m,p,{id:b})=>{let Q=b?.[0],l=V(Q);if(!l)return null;return l.readContent(m,p,{id:b})},updateContent:async(m,p,{id:b,...Q},l)=>{let a=b?.[0],_1=V(a);return U.factory(!_1,I.notFound,`No child store with code: ${a}`,"STORE_NOT_FOUND"),_1.updateContent(m,p,{id:b,...Q},l)},updateEntityType:async(m,p,{id:b,subtype:Q},l)=>{let a=b?.[0],_1=V(a);return U.factory(!_1,I.notFound,`No child store with code: ${a}`,"STORE_NOT_FOUND"),_1.updateEntityType(m,p,{id:b,subtype:Q},l)},deleteTypeScopedFieldValues:async(m,p,{entityId:b,entityTypePk:Q})=>{let l=b?.[0],a=V(l);return U.factory(!a,I.notFound,`No child store with code: ${l}`,"STORE_NOT_FOUND"),a.deleteTypeScopedFieldValues(m,p,{entityId:b,entityTypePk:Q})},deleteContent:async(m,p,{id:b},Q)=>{let l=b?.[0],a=V(l);return U.factory(!a,I.notFound,`No child store with code: ${l}`,"STORE_NOT_FOUND"),a.deleteContent(m,p,{id:b},Q)},saveDraft:async(m,p,{id:b,content:Q,sessionId:l},a)=>{let _1=b?.[0],O1=V(_1);return U.factory(!O1,I.notFound,`No child store with code: ${_1}`,"STORE_NOT_FOUND"),O1.saveDraft(m,p,{id:b,content:Q,sessionId:l},a)},readDraft:async(m,p,{id:b})=>{let Q=b?.[0],l=V(Q);if(!l)return null;return l.readDraft(m,p,{id:b})},publishContent:async(m,p,{id:b,sessionId:Q},l)=>{let a=b?.[0],_1=V(a);return U.factory(!_1,I.notFound,`No child store with code: ${a}`,"STORE_NOT_FOUND"),_1.publishContent(m,p,{id:b,sessionId:Q},l)},discardDraft:async(m,p,{id:b},Q)=>{let l=b?.[0],a=V(l);return U.factory(!a,I.notFound,`No child store with code: ${l}`,"STORE_NOT_FOUND"),a.discardDraft(m,p,{id:b},Q)},findContentByName:async(m,p,b,Q,l)=>{let a=b?.[0],_1=V(a);if(!_1)return null;return _1.findContentByName(m,p,b,Q,l)},listContent:async(m,p,{parentId:b,storeCode:Q,type:l})=>{let a,_1;if(b)a=b[0],_1=b;else{U.factory(!Q,I.validation,"storeCode required when parentId is null","MISSING_STORE_CODE"),a=Q;let V1=V(a);U.factory(!V1,I.notFound,`No child store with code: ${a}`,"STORE_NOT_FOUND");try{_1=(await V1.readRootFolderForType(m,p,l||"d",a)).getObjectId()}catch(v1){_1=null}}let O1=V(a);return U.factory(!O1,I.notFound,`No child store with code: ${a}`,"STORE_NOT_FOUND"),O1.listContent(m,p,{parentId:_1,type:l})},setEditState:async(m,p,{id:b,sessionId:Q},l)=>{let a=b?.[0],_1=V(a);return U.factory(!_1,I.notFound,`No child store with code: ${a}`,"STORE_NOT_FOUND"),_1.setEditState(m,p,{id:b,sessionId:Q},l)},clearEditState:async(m,p,{id:b},Q)=>{let l=b?.[0],a=V(l);return U.factory(!a,I.notFound,`No child store with code: ${l}`,"STORE_NOT_FOUND"),a.clearEditState(m,p,{id:b},Q)},getEditState:async(m,p,{id:b})=>{let Q=b?.[0],l=V(Q);if(!l)return null;return l.getEditState(m,p,{id:b})},readVersion:async(m,p,{id:b,versionNumber:Q})=>{let l=b?.[0],a=V(l);if(!a)return null;return a.readVersion(m,p,{id:b,versionNumber:Q})},getVersions:async(m,p,{id:b})=>{let Q=b?.[0],l=V(Q);if(!l)return[];return l.getVersions(m,p,{id:b})},createStory:async(m,p,{storeCode:b,...Q},l)=>{let a=V(b);return U.factory(!a,I.notFound,`No child store with code: ${b}`,"STORE_NOT_FOUND"),a.createStory(m,p,{storeCode:b,...Q},l)},renameStory:async(m,p,{id:b,name:Q},l)=>{let a=b?.[0],_1=V(a);return U.factory(!_1,I.notFound,`No child store with code: ${a}`,"STORE_NOT_FOUND"),_1.renameStory(m,p,{id:b,name:Q},l)},readStory:async(m,p,{id:b})=>{let Q=b?.[0],l=V(Q);if(!l)return null;return l.readStory(m,p,{id:b})},listStories:async(m,p,{storeCode:b})=>{let Q=V(b);return U.factory(!Q,I.notFound,`No child store with code: ${b}`,"STORE_NOT_FOUND"),Q.listStories(m,p,{storeCode:b})},deleteStory:async(m,p,{id:b},Q)=>{let l=b?.[0],a=V(l);return U.factory(!a,I.notFound,`No child store with code: ${l}`,"STORE_NOT_FOUND"),a.deleteStory(m,p,{id:b},Q)},readStoryRootFolder:async(m,p,{storeCode:b})=>{let Q=V(b);return U.factory(!Q,I.notFound,`No child store with code: ${b}`,"STORE_NOT_FOUND"),Q.readStoryRootFolder(m,p,{storeCode:b})},createJob:async(m,p,{storeCode:b,...Q},l)=>{let a=V(b);return U.factory(!a,I.notFound,`No child store with code: ${b}`,"STORE_NOT_FOUND"),a.createJob(m,p,{storeCode:b,...Q},l)},readJob:async(m,p,{id:b})=>{let Q=b?.[0],l=V(Q);if(!l)return null;return l.readJob(m,p,{id:b})},listJobs:async(m,p,{storeCode:b})=>{let Q=V(b);return U.factory(!Q,I.notFound,`No child store with code: ${b}`,"STORE_NOT_FOUND"),Q.listJobs(m,p,{storeCode:b})},deleteJob:async(m,p,{id:b},Q)=>{let l=b?.[0],a=V(l);return U.factory(!a,I.notFound,`No child store with code: ${l}`,"STORE_NOT_FOUND"),a.deleteJob(m,p,{id:b},Q)},readJobRootFolder:async(m,p,{storeCode:b})=>{let Q=V(b);return U.factory(!Q,I.notFound,`No child store with code: ${b}`,"STORE_NOT_FOUND"),Q.readJobRootFolder(m,p,{storeCode:b})},readSettingsRootFolder:async(m,p,{storeCode:b})=>{let Q=V(b);return U.factory(!Q,I.notFound,`No child store with code: ${b}`,"STORE_NOT_FOUND"),Q.readSettingsRootFolder(m,p,{storeCode:b})},readSetting:async(m,p,{id:b,storeCode:Q})=>{let l=Q??b.charAt(0),a=V(l);return U.factory(!a,I.notFound,`No child store with code: ${l}`,"STORE_NOT_FOUND"),a.readSetting(m,p,{id:b,storeCode:l})},listSettings:async(m,p,{parentId:b,storeCode:Q,subtype:l})=>{let a=Q??b?.charAt(0),_1=V(a);return U.factory(!_1,I.notFound,`No child store with code: ${a}`,"STORE_NOT_FOUND"),_1.listSettings(m,p,{parentId:b,storeCode:a,subtype:l})},findSettingByName:async(m,p,b,Q)=>{let l=b?.charAt(0),a=V(l);return U.factory(!a,I.notFound,`No child store with code: ${l}`,"STORE_NOT_FOUND"),a.findSettingByName(m,p,b,Q)},createSetting:async(m,p,{storeCode:b,...Q},l)=>{let a=V(b);return U.factory(!a,I.notFound,`No child store with code: ${b}`,"STORE_NOT_FOUND"),a.createSetting(m,p,{storeCode:b,...Q},l)},updateSettingPath:async(m,p,{id:b,...Q})=>{let l=b?.charAt(0),a=V(l);return U.factory(!a,I.notFound,`No child store with code: ${l}`,"STORE_NOT_FOUND"),a.updateSettingPath(m,p,{id:b,...Q})},deleteSetting:async(m,p,{id:b,storeCode:Q})=>{let l=Q??b?.charAt(0),a=V(l);return U.factory(!a,I.notFound,`No child store with code: ${l}`,"STORE_NOT_FOUND"),a.deleteSetting(m,p,{id:b,storeCode:l})},findEntitiesByFieldValue:async(m,p,{storeCode:b,typeCode:Q,subtype:l,fieldName:a,fieldValue:_1})=>{let O1=V(b);return U.factory(!O1,I.notFound,`No child store with code: ${b}`,"STORE_NOT_FOUND"),O1.findEntitiesByFieldValue(m,p,{typeCode:Q,subtype:l,fieldName:a,fieldValue:_1})},findEntitiesByObjectRefFieldValue:async(m,p,{storeCode:b,typeCode:Q,subtype:l,fieldName:a,targetEntityId:_1})=>{let O1=V(b);return U.factory(!O1,I.notFound,`No child store with code: ${b}`,"STORE_NOT_FOUND"),O1.findEntitiesByObjectRefFieldValue(m,p,{typeCode:Q,subtype:l,fieldName:a,targetEntityId:_1})},searchTextFields:async(m,p,{query:b,fieldName:Q,storeCode:l})=>{let a=V(l);return U.factory(!a,I.notFound,`No child store with code: ${l}`,"STORE_NOT_FOUND"),a.searchTextFields(m,p,{query:b,fieldName:Q})},searchContent:async(m,p,{storeCode:b,...Q})=>{let l=V(b);return U.factory(!l,I.notFound,`No child store with code: ${b}`,"STORE_NOT_FOUND"),l.searchContent(m,p,Q)},createAsset:async(m,p,{storeCode:b,...Q},l)=>{let a=V(b);return U.factory(!a,I.notFound,`No child store with code: ${b}`,"STORE_NOT_FOUND"),a.createAsset(m,p,{storeCode:b,...Q},l)},readAsset:async(m,p,{id:b})=>{let Q=b?.[0],l=V(Q);if(!l)return null;return l.readAsset(m,p,{id:b})},listAssets:async(m,p,{storeCode:b})=>{let Q=V(b);return U.factory(!Q,I.notFound,`No child store with code: ${b}`,"STORE_NOT_FOUND"),Q.listAssets(m,p,{storeCode:b})},deleteAsset:async(m,p,{id:b},Q)=>{let l=b?.[0],a=V(l);return U.factory(!a,I.notFound,`No child store with code: ${l}`,"STORE_NOT_FOUND"),a.deleteAsset(m,p,{id:b},Q)},readEntity:async(m,p,{id:b})=>{let Q=b?.[0],l=V(Q);if(!l)return null;return l.readEntity(m,p,{id:b})},subscribe:(m,p)=>{let b=J.map((Q)=>Q.subscribe(m,p));return()=>b.forEach((Q)=>Q())},subscribeAll:(m)=>{let p=J.map((b)=>b.subscribeAll(m));return()=>p.forEach((b)=>b())},setFieldHooks:(m)=>{for(let p of J)if(p.setFieldHooks)p.setFieldHooks(m)},backfillVersionContentRefs:async(m,p,b)=>{let Q=await m.selectFrom("entities").innerJoin("string_fields","string_fields.entity_id","entities.store_id").innerJoin("field_definitions","field_definitions.id","string_fields.field_definition_id").select("string_fields.value as storeCode").where("entities.id","=",b).where("field_definitions.name","=","code").executeTakeFirst();if(!Q)throw I.notFound(`Version entity not found: pk=${b}`,"VERSION_NOT_FOUND");let l=V(Q.storeCode);if(!l)throw I.notFound(`No child store for version's store code: ${Q.storeCode}`,"STORE_NOT_FOUND");return l.backfillVersionContentRefs(m,p,b)},listDeletedItems:async(m,p,{storeCode:b,...Q}={})=>{let l=V(b);return U.factory(!l,I.notFound,`No child store with code: ${b}`,"STORE_NOT_FOUND"),l.listDeletedItems(m,p,Q)},restoreEntity:async(m,p,{id:b},Q)=>{let l=b?.[0],a=V(l);return U.factory(!a,I.notFound,`No child store with code: ${l}`,"STORE_NOT_FOUND"),a.restoreEntity(m,p,{id:b},Q)}}),i1=Object.freeze({...O,addChild:v});return{store:F,mutationApi:i1}},OA1=Object.freeze({create:pi8});AK();h6();var HA=($)=>{if(!$||$.length<2||$[0]!=="S")return null;let K=parseInt($.slice(1),10);return isNaN(K)?null:K},ZF=($)=>$.object_id,Qi8=async($,K)=>{let q=await $.selectFrom("field_definitions").select("id").where("name","=","code").where("store_id","is",null).where("is_system","=",1).executeTakeFirst();if(!q)return null;return(await $.selectFrom("string_fields").select("value").where("entity_id","=",K).where("field_definition_id","=",q.id).executeTakeFirst())?.value??null},li8=async($,K,q)=>{let Y=await $.selectFrom("field_definitions").select("id").where("name","=","code").where("store_id","is",null).where("is_system","=",1).executeTakeFirstOrThrow();await $.insertInto("string_fields").values({entity_id:K,field_definition_id:Y.id,value:q,ordinal:0}).execute()},WF=($,K)=>{let q=ZF($),Y=$.id,{store:z,mutationApi:J}=ZA1.create({id:q,code:K,name:$.name,createdAt:$.created_at,updatedAt:$.updated_at,pk:Y});return{store:z,mutationApi:J,id:q,pk:Y}},HA1=($,K)=>{let q=ZF($),Y=$.id,{store:z,mutationApi:J}=OA1.create({id:q,name:$.name,createdAt:$.created_at,updatedAt:$.updated_at,children:K});return{store:z,mutationApi:J,id:q,pk:Y}},ii8=async($,K,q,Y)=>{let z=await y8.readEntityTypeId($,K,"n",null),J=await y8.readEntityTypeId($,K,"j",null),W=p8();for(let Z=0;Z<mJ.length;Z++){let O=mJ[Z],H=await N6.nextSeq($,"store",q,"n"),X=`${Y}n${H}`,w=await $.insertInto("field_definitions").values({store_id:q,object_id:X,entity_type_id:z,type_code:"n",seq:H,owner_entity_id:null,name:O.name,label:O.label,description:O.description,primitive_type:O.primitiveType||"string",required:0,multiplicity:"single",config:null,is_system:1,editable:0,ordinal:null,created_at:W,updated_at:W}).returning("id").executeTakeFirstOrThrow();await $.insertInto("class_field_defs").values({store_id:q,class_type_id:J,field_definition_id:w.id,required:0,sort_order:Z+1}).execute()}},ni8=async($,K,q,Y)=>{let z=await y8.readEntityTypeId($,K,"n",null),J=await y8.readEntityTypeId($,K,"a",null),W=p8();for(let Z=0;Z<xH.length;Z++){let O=xH[Z],H=await N6.nextSeq($,"store",q,"n"),X=`${Y}n${H}`,w=await $.insertInto("field_definitions").values({store_id:q,object_id:X,entity_type_id:z,type_code:"n",seq:H,owner_entity_id:null,name:O.name,label:O.label,description:O.description,primitive_type:O.primitiveType||"string",required:0,multiplicity:"single",config:null,is_system:1,editable:0,ordinal:null,created_at:W,updated_at:W}).returning("id").executeTakeFirstOrThrow();await $.insertInto("class_field_defs").values({store_id:q,class_type_id:J,field_definition_id:w.id,required:O.required?1:0,sort_order:Z+1}).execute()}},di8=async($,K,q,Y)=>{let z=await y8.readEntityTypeId($,K,"n",null),J=await y8.readEntityTypeId($,K,"d",null),W=await y8.readEntityTypeId($,K,"t",null),Z=p8(),O=[{name:"draft_version",label:"Draft Version",description:"Points to current draft version entity",sortOrder:1},{name:"latest_published_version",label:"Latest Published Version",description:"Points to most recent published version entity",sortOrder:2}];for(let H of[J,W])for(let X of O){let w=await N6.nextSeq($,"store",q,"n"),G=`${Y}n${w}`,T=await $.insertInto("field_definitions").values({store_id:q,object_id:G,entity_type_id:z,type_code:"n",seq:w,owner_entity_id:null,name:X.name,label:X.label,description:X.description,primitive_type:"object_ref",required:0,multiplicity:"single",config:null,is_system:1,editable:0,ordinal:null,created_at:Z,updated_at:Z}).returning("id").executeTakeFirstOrThrow();await $.insertInto("class_field_defs").values({store_id:q,class_type_id:H,field_definition_id:T.id,required:0,sort_order:X.sortOrder}).execute()}},ai8=async($,K,q,Y)=>{let z=await y8.readEntityTypeId($,K,"n",null),J=await y8.readEntityTypeId($,K,"d",null),W=await y8.readEntityTypeId($,K,"t",null),Z=p8(),O=[{name:"edit_session_id",label:"Edit Session ID",description:"UUID of the editing session",primitiveType:"string",sortOrder:3},{name:"edit_started_at",label:"Edit Started At",description:"When edit lock was acquired",primitiveType:"date",sortOrder:4},{name:"edit_last_activity_at",label:"Edit Last Activity At",description:"Last activity during edit session",primitiveType:"date",sortOrder:5}];for(let H of[J,W])for(let X of O){let w=await N6.nextSeq($,"store",q,"n"),G=`${Y}n${w}`,T=await $.insertInto("field_definitions").values({store_id:q,object_id:G,entity_type_id:z,type_code:"n",seq:w,owner_entity_id:null,name:X.name,label:X.label,description:X.description,primitive_type:X.primitiveType,required:0,multiplicity:"single",config:null,is_system:1,editable:0,ordinal:null,created_at:Z,updated_at:Z}).returning("id").executeTakeFirstOrThrow();await $.insertInto("class_field_defs").values({store_id:q,class_type_id:H,field_definition_id:T.id,required:0,sort_order:X.sortOrder}).execute()}},oi8=async($,K,q,Y)=>{let z=await y8.readEntityTypeId($,K,"n",null),J=await y8.readEntityTypeId($,K,"d",null),W=await y8.readEntityTypeId($,K,"t",null),Z=p8();for(let O of[J,W]){let H=await N6.nextSeq($,"store",q,"n"),X=`${Y}n${H}`,w=await $.insertInto("field_definitions").values({store_id:q,object_id:X,entity_type_id:z,type_code:"n",seq:H,owner_entity_id:null,name:"size",label:"Size",description:"Content size in bytes",primitive_type:"int",required:0,multiplicity:"single",config:null,is_system:1,editable:0,ordinal:null,created_at:Z,updated_at:Z}).returning("id").executeTakeFirstOrThrow();await $.insertInto("class_field_defs").values({store_id:q,class_type_id:O,field_definition_id:w.id,required:0,sort_order:6}).execute()}},ri8=async($,K,q,Y)=>{let z=await y8.readEntityTypeId($,K,"n",null),J=await y8.readEntityTypeId($,K,"v",null),W=p8(),Z=[{name:"attachments",label:"Attachments",description:"Referenced asset entities",sortOrder:5,colSpan:2},{name:"includes",label:"Includes",description:"Included documents and templates",sortOrder:6,colSpan:2},{name:"hyperlinks",label:"Hyperlinks",description:"Linked entities in content",sortOrder:7,colSpan:2}];for(let O of Z){let H=await N6.nextSeq($,"store",q,"n"),X=`${Y}n${H}`,w=await $.insertInto("field_definitions").values({store_id:q,object_id:X,entity_type_id:z,type_code:"n",seq:H,owner_entity_id:null,name:O.name,label:O.label,description:O.description,primitive_type:"object_ref",required:0,multiplicity:"multi",config:null,is_system:1,editable:0,ordinal:null,created_at:W,updated_at:W}).returning("id").executeTakeFirstOrThrow();await $.insertInto("class_field_defs").values({store_id:q,class_type_id:J,field_definition_id:w.id,required:0,sort_order:O.sortOrder,colspan:O.colSpan??null}).execute()}},si8=async($,K,q,Y)=>{let z=await y8.readEntityTypeId($,K,"n",null),J=await y8.readEntityTypeId($,K,"v",null),W=p8(),Z=[{name:"document",label:"Document",description:"Parent document or template entity",primitiveType:"object_ref",required:1,sortOrder:1},{name:"version_number",label:"Version Number",description:"Version number (1, 2, 3...)",primitiveType:"int",required:1,sortOrder:2},{name:"published_at",label:"Published At",description:"When this version was published",primitiveType:"date",required:0,sortOrder:3},{name:"content_hash",label:"Content Hash",description:"SHA-256 hex fingerprint of content for change detection",primitiveType:"string",required:0,sortOrder:4,colSpan:2}];for(let O of Z){let H=await N6.nextSeq($,"store",q,"n"),X=`${Y}n${H}`,w=await $.insertInto("field_definitions").values({store_id:q,object_id:X,entity_type_id:z,type_code:"n",seq:H,owner_entity_id:null,name:O.name,label:O.label,description:O.description,primitive_type:O.primitiveType,required:0,multiplicity:"single",config:null,is_system:1,editable:0,ordinal:null,created_at:W,updated_at:W}).returning("id").executeTakeFirstOrThrow();await $.insertInto("class_field_defs").values({store_id:q,class_type_id:J,field_definition_id:w.id,required:O.required,sort_order:O.sortOrder,colspan:O.colSpan??null}).execute()}},ti8=()=>{let $=new Map,K=new Map,q=new Set,Y=async(G,T,P,v)=>{if(q.has(v))return;let V=await G.selectFrom("field_definitions").select("name").where("store_id","=",T).where("is_system","=",1).where("owner_entity_id","is",null).execute(),j=new Set(V.map((f)=>f.name)),D=mJ.filter((f)=>!j.has(f.name)).map((f)=>f.name);if(D.length>0)throw I.validation(`Store ${P} is missing job field definitions: ${D.join(", ")}. Database may be corrupted.`,"MISSING_FIELD_DEFINITIONS");q.add(v)},z=async(G,T,{code:P,name:v},V)=>{let j=p8(),D=await N6.nextSeq(G,"global",null,"r"),f=`S${D}`,C=await y8.readEntityTypeId(G,T,"r","local"),h=await G.insertInto("entities").values({store_id:null,object_id:f,entity_type_id:C,type_code:"r",seq:D,parent_folder_id:null,parent_object_id:null,name:v,created_at:j,updated_at:j}).returningAll().executeTakeFirstOrThrow(),L=h.id;await li8(G,L,P);let{store:k,mutationApi:g,id:S}=WF(h,P);return await ii8(G,T,L,P),await ni8(G,T,L,P),await di8(G,T,L,P),await ai8(G,T,L,P),await oi8(G,T,L,P),await ri8(G,T,L,P),await si8(G,T,L,P),V(`cache-set:${S}`,()=>{$.set(S,m6.create(k,g,L)),K.set(L,S)}),k},J=async(G,T,{name:P},v)=>{let V=p8(),j=await N6.nextSeq(G,"global",null,"r"),D=`S${j}`,f=await y8.readEntityTypeId(G,T,"r","demux"),C=await G.insertInto("entities").values({store_id:null,object_id:D,entity_type_id:f,type_code:"r",seq:j,parent_folder_id:null,parent_object_id:null,name:P,created_at:V,updated_at:V}).returningAll().executeTakeFirstOrThrow(),{store:h,mutationApi:L,id:k,pk:g}=HA1(C,[]);return v(`cache-set:${k}`,()=>{$.set(k,m6.create(h,L,g)),K.set(g,k)}),h},W=async(G,T,P)=>{let v=$.get(P);if(v)return v.getEntity();if(HA(P)===null)return null;let j=await G.selectFrom("entities").innerJoin("entity_types","entity_types.id","entities.entity_type_id").select(["entities.id","entities.object_id","entities.name","entities.created_at","entities.updated_at","entity_types.subtype"]).where("entities.type_code","=","r").where("entities.object_id","=",P).where("entities.deleted_at","is",null).executeTakeFirst();if(!j)return null;let D,f,C,h;if(j.subtype==="local"){let L=await Qi8(G,j.id),k=WF(j,L);D=k.store,f=k.mutationApi,C=k.id,h=k.pk,await Y(G,h,L,C)}else{let L=await G.selectFrom("store_children").innerJoin("entities","entities.id","store_children.child_store_id").select(["entities.object_id"]).where("store_children.parent_store_id","=",j.id).execute(),k=[];for(let S of L){let E=await W(G,T,S.object_id);if(E)k.push(E)}let g=HA1(j,k);D=g.store,f=g.mutationApi,C=g.id,h=g.pk}return $.set(C,m6.create(D,f,h)),K.set(h,C),D};return Object.freeze({createLocalStore:z,createDemuxStore:J,readStore:W,readSharedStore:async(G,T)=>{let P=await G.selectFrom("entities").innerJoin("string_fields","string_fields.entity_id","entities.id").innerJoin("field_definitions","field_definitions.id","string_fields.field_definition_id").select(["entities.id","entities.object_id","entities.name","entities.created_at","entities.updated_at"]).where("entities.type_code","=","r").where("entities.store_id","is",null).where("field_definitions.name","=","code").where("string_fields.value","=","B").where("entities.deleted_at","is",null).executeTakeFirstOrThrow(),v=ZF(P),V=$.get(v);if(V)return V.getEntity();let{store:j,mutationApi:D,pk:f}=WF(P,"B");return $.set(v,m6.create(j,D,f)),K.set(f,v),j},readRootStoreForProject:async(G,T,P)=>{U.factory(!P||P.length<2||P[0]!=="P",I.validation,`Invalid project ID: ${P}`,"INVALID_PROJECT_ID");let v=await G.selectFrom("entities").select("id").where("type_code","=","p").where("object_id","=",P).where("deleted_at","is",null).executeTakeFirst();U.factory(!v,I.notFound,`Project not found: ${P}`,"PROJECT_NOT_FOUND");let V=await G.selectFrom("project_stores").innerJoin("entities","entities.id","project_stores.store_id").select(["entities.object_id"]).where("project_stores.project_id","=",v.id).where("project_stores.is_root","=",1).executeTakeFirst();return U.factory(!V,I.notFound,`Root store not found for project: ${P}`,"ROOT_STORE_NOT_FOUND"),await W(G,T,V.object_id)},addChildToDemux:async(G,T,{demuxId:P,childId:v},V)=>{let j=$.get(P),D=$.get(v),f,C;if(j)f=j.getPk();else{U.factory(HA(P)===null,I.validation,`Invalid demux store ID: ${P}`,"INVALID_ID");let h=await G.selectFrom("entities").select("id").where("type_code","=","r").where("object_id","=",P).where("deleted_at","is",null).executeTakeFirst();U.factory(!h,I.notFound,`Demux store not found: ${P}`,"STORE_NOT_FOUND"),f=h.id}if(D)C=D.getPk();else{U.factory(HA(v)===null,I.validation,`Invalid child store ID: ${v}`,"INVALID_ID");let h=await G.selectFrom("entities").select("id").where("type_code","=","r").where("object_id","=",v).where("deleted_at","is",null).executeTakeFirst();U.factory(!h,I.notFound,`Child store not found: ${v}`,"STORE_NOT_FOUND"),C=h.id}await G.insertInto("store_children").values({parent_store_id:f,child_store_id:C}).execute(),V(`cache-update:${P}`,()=>{let h=$.get(P),L=$.get(v);if(h&&L)h.getMutationApi().addChild(L.getEntity())})},addStoresToProject:async(G,T,{projectId:P,rootStoreId:v,storeIds:V})=>{U.factory(!P||P.length<2||P[0]!=="P",I.validation,`Invalid project ID: ${P}`,"INVALID_PROJECT_ID");let j=await G.selectFrom("entities").select("id").where("type_code","=","p").where("object_id","=",P).where("deleted_at","is",null).executeTakeFirst();U.factory(!j,I.notFound,`Project not found: ${P}`,"PROJECT_NOT_FOUND");let D=j.id,f=$.get(v),C;if(f)C=f.getPk();else{U.factory(HA(v)===null,I.validation,`Invalid root store ID: ${v}`,"INVALID_ID");let h=await G.selectFrom("entities").select("id").where("type_code","=","r").where("object_id","=",v).where("deleted_at","is",null).executeTakeFirst();U.factory(!h,I.notFound,`Root store not found: ${v}`,"STORE_NOT_FOUND"),C=h.id}for(let h of V){let L=$.get(h),k;if(L)k=L.getPk();else{U.factory(HA(h)===null,I.validation,`Invalid store ID: ${h}`,"INVALID_ID");let g=await G.selectFrom("entities").select("id").where("type_code","=","r").where("object_id","=",h).where("deleted_at","is",null).executeTakeFirst();U.factory(!g,I.notFound,`Store not found: ${h}`,"STORE_NOT_FOUND"),k=g.id}await G.insertInto("project_stores").values({project_id:D,store_id:k,is_root:k===C?1:0}).execute()}},evictStore:(G)=>{let T=$.get(G);if(T)K.delete(T.getPk());$.delete(G)}})},XA1=Object.freeze({create:ti8});h6();h6();var ei8=($)=>{let K=$.split("/").filter((z)=>z.trim()),q=K[K.length-1];return{parentPath:K.slice(0,-1).join("/")||null,name:q,segments:K}},$n8=($)=>{return $[0]},r8=Object.freeze({parsePath:ei8,extractStoreCode:$n8});h6();var Kn8=["Documents/",/^Stories\/[^/]+\//],qn8=["Templates/"],_n8=["Documents/","Templates/",/^Stories\/[^/]+\//],Yn8=($)=>{U.factory(!$||$.length===0,I.validation,"Path cannot be empty","EMPTY_PATH"),U.factory($.startsWith("/"),I.validation,"No leading slash allowed","INVALID_PATH"),U.factory($.endsWith("/"),I.validation,"No trailing slash allowed","INVALID_PATH"),U.factory($.includes("//"),I.validation,"No consecutive slashes allowed","INVALID_PATH")},zn8=($)=>{U.factory(!$||$.trim().length===0,I.validation,"Name cannot be empty","INVALID_NAME"),U.factory($.includes("/"),I.validation,"Name cannot contain /","INVALID_NAME"),U.factory($!==$.trim(),I.validation,"Name cannot have leading/trailing whitespace","INVALID_NAME")},Jn8=async($,K,q,Y,z)=>{let J=q;while(J){let W=J.getSubtype();if(W==="root_d"&&Y.includes("d"))return;if(W==="root_t"&&Y.includes("t"))return;if(W==="root_s"&&Y.includes("s"))return;if(W==="root_settings"&&Y.includes("settings"))return;if(W==="tasks"&&Y.includes("tasks"))return;let Z=J.getParentId();if(!Z)break;J=await z.readFolder($,K,{id:Z})}throw I.validation(`Cannot create entity in this location. Allowed roots: ${Y.join(", ")}`,"INVALID_ROOT")},Wn8=async($,K,q,Y)=>{let z=q;while(z){if(z.getSubtype()==="tasks")return!0;let J=z.getParentId();if(!J)break;z=await Y.readFolder($,K,{id:J})}return!1},Zn8=($,K)=>{for(let q of K){if(typeof q==="string"&&$.startsWith(q))return{valid:!0,prefix:q};if(q instanceof RegExp&&q.test($))return{valid:!0,prefix:$.match(q)[0]}}return{valid:!1}},On8=async($,K,q,Y)=>{let z=new Set,J=q;while(J){if(z.has(J))throw I.validation(`Cycle detected in parent chain for entity ${q}`,"CYCLE_DETECTED");z.add(J);let W=b6.parseId(J);if(!W)throw I.notFound(`Invalid entity ID format: ${J}`,"NOT_FOUND");let{typeCode:Z}=W,O,H=null;if(Z==="f"){if(O=await Y.readFolder($,K,{id:J}),!O)throw I.notFound(`Folder not found: ${J}`,"NOT_FOUND");if(H=O.getSubtype(),H==="root_d"||H==="root_t"||H==="root_s"||H==="tasks")return{id:J,type:Z,subtype:H};J=O.getParentId()}else if(Z==="s"){if(O=await Y.readStory($,K,{id:J}),!O)throw I.notFound(`Story not found: ${J}`,"NOT_FOUND");return{id:J,type:Z,subtype:null}}else if(Z==="d"||Z==="t"){if(O=await Y.readContent($,K,{id:J}),!O)throw I.notFound(`Content not found: ${J}`,"NOT_FOUND");J=O.getParentId()}else throw I.validation(`Unsupported entity type code: ${Z}`,"INVALID_TYPE")}throw I.validation(`No root found for entity ${q}`,"NO_ROOT_FOUND")},w2=Object.freeze({DOCUMENT_PREFIXES:Kn8,TEMPLATE_PREFIXES:qn8,FOLDER_PREFIXES:_n8,validatePathFormat:Yn8,validateName:zn8,validateRootInAllowedTree:Jn8,isInsideTasksFolder:Wn8,detectFullPathPrefix:Zn8,getRootForEntity:On8});var Hn8=({store:$})=>{let K=async(G,T,P,v,V,j,D,f=!0,C=null)=>{let h=P.split("/").filter((E)=>E.trim());U.factory(h.length===0,I.validation,"Path cannot be empty or contain only slashes","EMPTY_PATH");let L=h.slice(0,-1).join("/");if(L){let E=await $.getFolderByPath(G,T,{path:L,type:v,storeCode:V});if(E){let x=R9.validateFolderName(h[h.length-1]);return{parentObjectId:E.getObjectId(),name:x}}}let k=j??v,g;if(C)g=await $.readFolder(G,T,{id:C}),U.factory(!g,I.notFound,`Starting folder not found: ${C}`,"FOLDER_NOT_FOUND");else g=await $.readRootFolderForType(G,T,k,V);for(let E=0;E<h.length-1;E++){let x=R9.validateFolderName(h[E]),c=await $.findFolderByName(G,T,g.getObjectId(),x);if(c)g=c;else{if(!f)throw I.notFound(`Folder not found: "${x}"`,"FOLDER_NOT_FOUND");g=await $.createFolder(G,T,{storeCode:V,parentId:g.getObjectId(),name:x},D)}}let S=R9.validateFolderName(h[h.length-1]);return{parentObjectId:g.getObjectId(),name:S}},q=async(G,T,P,v)=>{let{path:V,store:j}=P,D=["d","t","s"],f=w2.FOLDER_PREFIXES;w2.validatePathFormat(V);let C=w2.detectFullPathPrefix(V,f);U.factory(!C.valid,I.validation,`Path must start with one of: ${f.map((t)=>typeof t==="string"?t:t.toString()).join(", ")}`,"INVALID_PATH_PREFIX");let h=V.slice(C.prefix.length);U.factory(!h||h.length===0,I.validation,"Path cannot end at tree prefix - provide a path after the prefix","EMPTY_PATH");let L,k,g=null;if(C.prefix==="Documents/")L="d",k="d";else if(C.prefix==="Templates/")L="t",k="t";else if(C.prefix.startsWith("Stories/")){L="s",k="d";let t=C.prefix.slice(8,-1),Z1=(await $.listStories(G,T,{storeCode:j})).find((E1)=>E1.getName()===t);if(!Z1)throw I.notFound(`Story not found: ${t}`,"STORY_NOT_FOUND");g=Z1.getObjectId()}let{parentPath:S,name:E}=r8.parsePath(h),x;if(S){let t=await K(G,T,S,k,j,L,v,!0,g),w1=await $.findFolderByName(G,T,t.parentObjectId,t.name);if(w1)x=w1.getObjectId();else x=(await $.createFolder(G,T,{storeCode:j,parentId:t.parentObjectId,name:t.name},v)).getObjectId()}else if(g)x=g;else x=(await $.readRootFolderForType(G,T,L,j)).getObjectId();if(L==="s"){let t=await $.readFolder(G,T,{id:x});U.factory(!t,I.notFound,"Parent folder not found","FOLDER_NOT_FOUND"),await w2.validateRootInAllowedTree(G,T,t,D,$)}let c=R9.validateFolderName(E),i=await $.isDuplicateNameInParent(G,T,x,c);return U.factory(i,I.conflict,`Folder "${c}" already exists in parent`,"DUPLICATE_NAME"),await $.createFolder(G,T,{storeCode:j,parentId:x,name:c},v)},Y=async(G,T,P,v)=>{let{root:V,path:j}=P,D=["d","t","s"],f=r8.extractStoreCode(V);w2.validatePathFormat(j);let C=await $.readFolder(G,T,{id:V});U.factory(!C,I.notFound,`Root folder not found: ${V}`,"FOLDER_NOT_FOUND"),await w2.validateRootInAllowedTree(G,T,C,D,$);let{parentPath:h,name:L}=r8.parsePath(j),k;if(h){let E=h.split("/").filter((c)=>c.trim()),x=C;for(let c of E){let i=R9.validateFolderName(c),t=await $.findFolderByName(G,T,x.getObjectId(),i);if(t)x=t;else x=await $.createFolder(G,T,{storeCode:f,parentId:x.getObjectId(),name:i},v)}k=x.getObjectId()}else k=V;let g=R9.validateFolderName(L),S=await $.isDuplicateNameInParent(G,T,k,g);return U.factory(S,I.conflict,`Folder "${g}" already exists in parent`,"DUPLICATE_NAME"),await $.createFolder(G,T,{storeCode:f,parentId:k,name:g},v)},z=async(G,T,P,v)=>{let{parentId:V,name:j}=P,D=["d","t","s"],f=r8.extractStoreCode(V);w2.validateName(j);let C=await $.readFolder(G,T,{id:V});U.factory(!C,I.notFound,`Parent folder not found: ${V}`,"FOLDER_NOT_FOUND"),await w2.validateRootInAllowedTree(G,T,C,D,$);let h=R9.validateFolderName(j),L=await $.isDuplicateNameInParent(G,T,V,h);return U.factory(L,I.conflict,`Folder "${h}" already exists in parent`,"DUPLICATE_NAME"),await $.createFolder(G,T,{storeCode:f,parentId:V,name:h},v)},J=async(G,T,P,v)=>{let{mode:V,path:j,root:D,parentId:f,name:C,store:h,type:L}=P;if(U.factory(P.subtype==="tasks",I.validation,"Tasks folders are system-managed and cannot be created manually","RESERVED_SUBTYPE"),V==="fullPath")return U.factory(!h,I.validation,"store is required for fullPath mode","MISSING_STORE_CODE"),await q(G,T,{path:j,store:h},v);if(V==="rootRelative")return U.factory(!D,I.validation,"root is required for rootRelative mode","MISSING_ROOT"),await Y(G,T,{root:D,path:j},v);if(V==="parentName")return U.factory(!f,I.validation,"parentId is required for parentName mode","MISSING_PARENT_ID"),U.factory(!C,I.validation,"name is required for parentName mode","MISSING_NAME"),await z(G,T,{parentId:f,name:C},v);if(L!==void 0){U.factory(!j||j==="/",I.validation,"Path cannot be empty","EMPTY_PATH"),U.factory(L!=="d"&&L!=="t",I.validation,'Type must be "d" or "t"',"INVALID_TYPE"),U.factory(!h,I.validation,"store is required","MISSING_STORE_CODE");let{parentObjectId:k,name:g}=await K(G,T,j,L,h,void 0,v),S=await $.isDuplicateNameInParent(G,T,k,g);return U.factory(S,I.conflict,`Folder "${g}" already exists in parent`,"DUPLICATE_NAME"),await $.createFolder(G,T,{storeCode:h,parentId:k,name:g},v)}throw I.validation("Invalid creation parameters. Use one of: fullPath (path+store), rootRelative (root+path), or parentName (parentId+name)","INVALID_PARAMS")},W=async(G,T,{id:P})=>{return await $.readFolder(G,T,{id:P})};return Object.freeze({resolvePath:K,createFolder:J,readFolder:W,renameFolder:async(G,T,{id:P,name:v},V)=>{let j=await W(G,T,{id:P});U.factory(!j,I.notFound,`Folder not found: ${P}`,"FOLDER_NOT_FOUND"),U.factory(R9.isRootFolder(j),I.validation,"Cannot rename root folder","CANNOT_RENAME_ROOT");let D=R9.validateFolderName(v),f=await $.isDuplicateNameInParent(G,T,j.getParentId(),D,P);return U.factory(f,I.conflict,`Folder "${D}" already exists in parent`,"DUPLICATE_NAME"),await $.updateFolder(G,T,{id:P,name:D},V)},moveFolder:async(G,T,{id:P,parentId:v},V)=>{let j=await W(G,T,{id:P});U.factory(!j,I.notFound,`Folder not found: ${P}`,"FOLDER_NOT_FOUND"),U.factory(R9.isRootFolder(j),I.validation,"Cannot move root folder","CANNOT_MOVE_ROOT");let D=await W(G,T,{id:v});U.factory(!D,I.notFound,`Parent folder not found: ${v}`,"PARENT_NOT_FOUND"),U.factory(!P||P.length<1,I.validation,"Invalid folder ID format","INVALID_ID_FORMAT"),U.factory(!v||v.length<1,I.validation,"Invalid parent ID format","INVALID_PARENT_ID_FORMAT");let f=P[0],C=v[0];U.factory(f!==C,I.validation,"Cannot move folders between stores","CROSS_STORE_MOVE"),U.factory(P===v,I.validation,"Cannot move folder into itself","SELF_MOVE");let h=v;while(h!==null){U.factory(h===P,I.validation,"Cannot move folder into its own descendant","CYCLE_DETECTED");let k=await $.readFolder(G,T,{id:h});if(!k)break;h=k.getParentId()}let L=await $.isDuplicateNameInParent(G,T,v,j.getName(),P);return U.factory(L,I.conflict,`Folder "${j.getName()}" already exists in target parent`,"DUPLICATE_NAME"),await $.updateFolder(G,T,{id:P,parentId:v},V)},deleteFolder:async(G,T,{id:P},v)=>{let V=await W(G,T,{id:P});return U.factory(!V,I.notFound,`Folder not found: ${P}`,"FOLDER_NOT_FOUND"),U.factory(R9.isRootFolder(V),I.validation,"Cannot delete root folder","CANNOT_DELETE_ROOT"),await $.deleteFolder(G,T,{id:P},v)},getFolderByPath:async(G,T,{path:P,type:v,storeCode:V})=>{return await $.getFolderByPath(G,T,{path:P,type:v,storeCode:V})},listFolderContents:async(G,T,{folderId:P,type:v,storeCode:V})=>{return await $.listFolderContents(G,T,{folderId:P,type:v,storeCode:V})}})},OF=Object.freeze({create:Hn8});h6();AK();var wA1=Object.freeze(["string","object_ref","int","text","date","float"]),Xn8=Object.freeze(new Set(["draft_version","latest_published_version","edit_session_id","edit_started_at","edit_last_activity_at"])),wn8=($,K)=>{let q=$.entity.getName();if($.isVirtual){if(q==="parent")return{sectionKey:"pathable",sectionLabel:"Pathable",sectionOrder:1};return{sectionKey:"base",sectionLabel:"Base Entity",sectionOrder:0}}if($.sourceCode===null)return{sectionKey:"base",sectionLabel:"Base Entity",sectionOrder:0};if(Xn8.has(q))return{sectionKey:"versioned",sectionLabel:"Versioned",sectionOrder:2};if($.sourceSubtype!==null){let J=`${$.sourceCode}/${$.sourceSubtype}`;return{sectionKey:"subtype",sectionLabel:K.get(J),sectionOrder:4}}let Y=`${$.sourceCode}/`;return{sectionKey:"type",sectionLabel:K.get(Y),sectionOrder:3}},Gn8=($,K)=>{switch($){case"int":{if(typeof K==="number"){if(!Number.isInteger(K))return{valid:!1,error:`Value must be an integer, got float: ${K}`};return{valid:!0}}if(typeof K==="string"){let q=Number(K);if(isNaN(q)||!Number.isInteger(q))return{valid:!1,error:`Value must be an integer, got: ${K}`};return{valid:!0}}return{valid:!1,error:`Value must be an integer, got: ${typeof K}`}}case"float":{if(typeof K==="number"){if(!isFinite(K))return{valid:!1,error:`Value must be a finite number, got: ${K}`};return{valid:!0}}if(typeof K==="string"){let q=Number(K);if(isNaN(q)||!isFinite(q))return{valid:!1,error:`Value must be numeric, got: ${K}`};return{valid:!0}}return{valid:!1,error:`Value must be numeric, got: ${typeof K}`}}case"date":{if(typeof K!=="string")return{valid:!1,error:`Date value must be a string, got: ${typeof K}`};if(!OA.test(K))return{valid:!1,error:`Value must be valid ISO 8601 date format, got: ${K}`};let q=new Date(K);if(isNaN(q.getTime()))return{valid:!1,error:`Value is not a valid date: ${K}`};return{valid:!0}}case"string":case"text":case"object_ref":if(typeof K!=="string")return{valid:!1,error:`Value must be a string, got: ${typeof K}`};return{valid:!0};default:return{valid:!1,error:`Unknown primitive type: ${$}`}}},Tn8=({store:$})=>{let K=null,q=null,Y=({entityMutationService:k,allowedValueRegistry:g})=>{if(K=k,g!==void 0)q=g},z=async(k,g,{entityId:S,fieldName:E,value:x},c)=>{let i=(t)=>{let w1=t.entity||t,Z1={fieldName:E,virtualFieldUpdated:!0,get id(){return w1.getObjectId?.()||w1.id},get name(){return w1.getName?.()||w1.name},get parentId(){return w1.getParentId?.()||w1.parentId},get path(){return w1.getPath?.()||w1.path},get createdAt(){return w1.getCreatedAt?.()||w1.createdAt},get updatedAt(){return w1.getUpdatedAt?.()||w1.updatedAt}};return Z1.toJSON=()=>({...w1.toJSON?.()||w1,fieldName:E,virtualFieldUpdated:!0}),Z1};switch(E){case"name":{let t=await K.renameEntity(k,g,{id:S,newName:x},c);return i(t)}case"parent":{let t=await K.moveEntity(k,g,{id:S,newParentId:x},c);return i(t)}default:throw I.validation(`Unknown virtual field: ${E}`,"UNKNOWN_VIRTUAL_FIELD")}},J=async(k,g,{store:S,ownerEntityId:E,ownerEntityTypeCode:x,ownerEntityTypeSubtype:c,name:i,label:t,description:w1,primitiveType:Z1,required:E1,multiplicity:T1,isSystem:H1=!1,allowed:Q1},L1)=>{U.factory(!S,I.validation,"store is required","MISSING_STORE_CODE"),U.factory(E&&x,I.validation,"Cannot specify both ownerEntityId and ownerEntityTypeCode","INVALID_FIELD_DEFINITION_SCOPE"),U.factory(!wA1.includes(Z1),I.validation,`Invalid primitiveType: ${Z1}. Must be one of: ${wA1.join(", ")}`,"INVALID_PRIMITIVE_TYPE"),U.factory(T1!=="single"&&T1!=="multi",I.validation,`Invalid multiplicity: ${T1}. Must be 'single' or 'multi'`,"INVALID_MULTIPLICITY");let w8=/^[a-zA-Z0-9_]+$/;if(U.factory(!i||!w8.test(i),I.validation,`Invalid name: ${i}. Must contain only alphanumeric characters and underscores`,"INVALID_NAME"),U.factory(zA(i),I.validation,`Field name '${i}' is reserved for virtual fields`,"RESERVED_FIELD_NAME"),Q1!==void 0&&Q1!==null)if(Q1.type==="enum")U.factory(!Array.isArray(Q1.values)||Q1.values.length===0,I.validation,"allowed.values must be a non-empty array","INVALID_ALLOWED_VALUES");else if(Q1.type==="function"){if(U.factory(!Q1.name||typeof Q1.name!=="string",I.validation,"allowed.name is required for type: function","MISSING_ALLOWED_NAME"),U.factory(!q||!q.has(Q1.name),I.validation,`Unknown resolver function: ${Q1.name}`,"UNKNOWN_RESOLVER"),Q1.dependsOn!==void 0)U.factory(!Array.isArray(Q1.dependsOn),I.validation,"allowed.dependsOn must be an array","INVALID_DEPENDS_ON"),U.factory(Q1.dependsOn.some((G8)=>typeof G8!=="string"),I.validation,"allowed.dependsOn entries must be strings","INVALID_DEPENDS_ON")}else throw I.validation(`Invalid allowed type: ${Q1.type}. Must be 'enum' or 'function'`,"INVALID_ALLOWED_TYPE");let $8=null;if(x)$8=await $.resolveEntityTypePk(k,g,{storeCode:S,code:x,subtype:c});return await $.createFieldDefinition(k,g,{storeCode:S,ownerEntityId:E,ownerEntityTypePk:$8,name:i,label:t,description:w1,primitiveType:Z1,required:E1,multiplicity:T1,isSystem:H1,allowed:Q1},L1)},W=async(k,g,{id:S})=>{return U.factory(!S||S.length<3,I.validation,"Invalid field definition ID","INVALID_ID"),await $.readFieldDefinition(k,g,{id:S})},Z=async(k,g,{store:S,ownerEntityId:E,includeSystem:x=!0})=>{U.factory(!S,I.validation,"store is required","MISSING_STORE_CODE");let c=null;if(E)c=null;return await $.getFieldDefinitionsForOwner(k,g,{storeCode:S,ownerEntityPk:c,includeSystem:x})},O=(k)=>{let{entity:g}=Dq.create({id:`virtual:${k.name}`,name:k.name,label:k.label,description:k.description,primitiveType:k.primitiveType,required:!1,multiplicity:"single",isSystem:!0,isVirtual:!0,editable:k.editable});return g},H=async(k,g,{store:S,code:E,subtype:x})=>{U.factory(!S,I.validation,"store is required","MISSING_STORE_CODE"),U.factory(!E,I.validation,"code is required","MISSING_CODE"),U.factory(x===void 0,I.validation,"subtype is required","MISSING_SUBTYPE");let c=await $.getFieldDefinitionsForEntityType(k,g,{storeCode:S,code:E,subtype:x}),i=await $.getFieldDefinitionsForOwner(k,g,{storeCode:S,ownerEntityPk:null,includeSystem:!0}),t=new Map;for(let H1 of c)t.set(H1.entity.getName(),{entity:H1.entity,sourcePk:H1.sourcePk,sourceCode:H1.sourceCode,sourceSubtype:H1.sourceSubtype,inherited:H1.inherited,sortOrder:H1.sortOrder,rows:H1.rows,colspan:H1.colspan,classDescription:H1.classDescription});for(let H1 of i)if(!t.has(H1.getName()))t.set(H1.getName(),{entity:H1,sourcePk:null,sourceCode:null,sourceSubtype:null,inherited:!1});let w1=G$.filter((H1)=>!H1.searchOnly).map((H1)=>({entity:O(H1),sourcePk:null,sourceCode:null,sourceSubtype:null,inherited:!1,isVirtual:!0,sortOrder:H1.sortOrder,rows:null,colspan:H1.colSpan,classDescription:null})),Z1=new Set;for(let H1 of c)if(H1.sourceCode!=null)Z1.add(H1.sourceCode);let E1=new Map;for(let H1 of Z1){let Q1=await y8.listSubtypes(k,g,H1);for(let L1 of Q1){let w8=L1.subtype!==null?`${L1.code}/${L1.subtype}`:`${L1.code}/`;E1.set(w8,L1.name)}}return[...w1,...Array.from(t.values())].map((H1)=>{let Q1=wn8(H1,E1);return{...H1,...Q1}})},X=async(k,g,{id:S},E)=>{let x=await W(k,g,{id:S});return U.factory(!x,I.notFound,`Field definition not found: ${S}`,"DEFINITION_NOT_FOUND"),U.factory(x.getIsSystem(),I.validation,`Cannot delete system field definition: ${S}`,"SYSTEM_DEFINITION"),await $.deleteFieldDefinition(k,g,{id:S},E)},w=async(k,g,{id:S,allowed:E})=>{let x=await W(k,g,{id:S});if(U.factory(!x,I.notFound,`Field definition not found: ${S}`,"DEFINITION_NOT_FOUND"),E!==void 0&&E!==null)if(E.type==="enum")U.factory(!Array.isArray(E.values)||E.values.length===0,I.validation,"allowed.values must be a non-empty array","INVALID_ALLOWED_VALUES");else if(E.type==="function"){if(U.factory(!E.name||typeof E.name!=="string",I.validation,"allowed.name is required for type: function","MISSING_ALLOWED_NAME"),U.factory(!q||!q.has(E.name),I.validation,`Unknown resolver function: ${E.name}`,"UNKNOWN_RESOLVER"),E.dependsOn!==void 0)U.factory(!Array.isArray(E.dependsOn),I.validation,"allowed.dependsOn must be an array","INVALID_DEPENDS_ON"),U.factory(E.dependsOn.some((i)=>typeof i!=="string"),I.validation,"allowed.dependsOn entries must be strings","INVALID_DEPENDS_ON")}else throw I.validation(`Invalid allowed type: ${E.type}. Must be 'enum' or 'function'`,"INVALID_ALLOWED_TYPE");let c=null;if(E)c=JSON.stringify({allowed:E});return await $.updateFieldDefinitionConfig(k,g,{id:S,config:c})},G=async(k,g,{store:S,fieldDefinitionId:E,entityTypeCode:x,entityTypeSubtype:c,required:i=!1,sortOrder:t=null,rows:w1=null,colspan:Z1=null,description:E1=null},T1)=>{U.factory(!S,I.validation,"store is required","MISSING_STORE_CODE"),U.factory(!E,I.validation,"fieldDefinitionId is required","MISSING_FIELD_DEFINITION_ID"),U.factory(!x,I.validation,"entityTypeCode is required","MISSING_ENTITY_TYPE_CODE");let H1=await $.resolveEntityTypePk(k,g,{storeCode:S,code:x,subtype:c});return await $.addClassAssociation(k,g,{fieldDefinitionId:E,entityTypePk:H1,required:i,sortOrder:t,rows:w1,colspan:Z1,description:E1})},T=async(k,g,{entityId:S,parentId:E,values:x})=>{U.factory(x.includes(S),I.validation,`Self-reference not allowed: ${S} cannot depend on itself`,"SELF_REFERENCE");for(let c of x){let i=await $.readContent(k,g,{id:c});U.factory(!i,I.validation,`Referenced entity does not exist: ${c}`,"INVALID_REFERENCE");let{typeCode:t}=b6.parseId(c);U.factory(t!=="d",I.validation,`Referenced entity is not a document: ${c}`,"INVALID_REFERENCE_TYPE"),U.factory(i.getSubtype()!=="task",I.validation,`Referenced entity is not a task: ${c}`,"INVALID_REFERENCE_SUBTYPE"),U.factory(i.getParentId()!==E,I.validation,`Referenced task is in a different folder: ${c}`,"INVALID_REFERENCE_SCOPE")}for(let c of x){let i=new Set,t=async(Z1,E1)=>{if(Z1===S)return E1;if(i.has(Z1))return null;i.add(Z1);let T1=await $.getFieldValue(k,g,{entityId:Z1,fieldName:"dependsOn"});if(!T1)return null;let H1=T1.getValues();for(let Q1 of H1){let L1=await t(Q1,[...E1,Q1]);if(L1)return L1}return null},w1=await t(c,[S,c]);if(w1)throw I.validation(`Circular dependency detected: ${w1.join(" -> ")}`,"CIRCULAR_DEPENDENCY")}},P=async(k,g,{entityId:S,fieldName:E})=>{let{typeCode:x}=b6.parseId(S),c=S[0],i=null;if($.resolveEntityTypePk)if(x==="d"||x==="t"){let w1=(await $.readContent(k,g,{id:S}))?.getSubtype?.()||null;i=await $.resolveEntityTypePk(k,g,{storeCode:c,code:x,subtype:w1})}else if(x==="e"){let w1=(await $.readSetting(k,g,{id:S}))?.entity?.getSubtype?.()||null;i=await $.resolveEntityTypePk(k,g,{storeCode:c,code:x,subtype:w1})}else i=await $.resolveEntityTypePk(k,g,{storeCode:c,code:x,subtype:null});return await $.resolveFieldDefinition(k,g,{storeCode:c,fieldName:E,ownerEntityPk:null,entityTypePk:i})},v=async(k,g,{entityId:S,fieldDefinitionId:E,fieldName:x,value:c,values:i,bypassEditableCheck:t,dependencies:w1},Z1)=>{if(U.factory(!S,I.validation,"entityId is required","MISSING_ENTITY_ID"),U.factory(!E&&!x,I.validation,"Either fieldDefinitionId or fieldName must be provided","MISSING_FIELD_IDENTIFIER"),U.factory(c!==void 0&&i!==void 0,I.validation,"Cannot provide both value and values","AMBIGUOUS_VALUE"),U.factory(c===void 0&&i===void 0,I.validation,"Either value or values must be provided","MISSING_VALUE"),x&&zA(x)){let q1=rD(x);return U.factory(!q1.editable,I.validation,`Virtual field '${x}' is read-only`,"VIRTUAL_FIELD_READ_ONLY"),await z(k,g,{entityId:S,fieldName:x,value:c??i?.[0]},Z1)}let{typeCode:E1}=b6.parseId(S),T1=S[0],H1=null,Q1=async()=>{if(H1!==null)return H1;if((E1==="d"||E1==="t")&&$.readContent){let q1=await $.readContent(k,g,{id:S});H1={parentId:q1?.getParentId?.()||null,subtype:q1?.getSubtype?.()||null}}else H1={parentId:null,subtype:null};return H1},L1=null,w8=await $.getFieldValue(k,g,{entityId:S,fieldDefinitionId:E,fieldName:x});if(w8)L1=w8.getDefinition();else if(E)L1=await $.readFieldDefinition(k,g,{id:E});else if(x&&$.resolveFieldDefinition){let q1=null;if($.resolveEntityTypePk)if(E1==="d"||E1==="t"){let n=(await $.readContent(k,g,{id:S}))?.getSubtype?.()||null;q1=await $.resolveEntityTypePk(k,g,{storeCode:T1,code:E1,subtype:n})}else if(E1==="e"){let n=(await $.readSetting(k,g,{id:S}))?.entity?.getSubtype?.()||null;q1=await $.resolveEntityTypePk(k,g,{storeCode:T1,code:E1,subtype:n})}else q1=await $.resolveEntityTypePk(k,g,{storeCode:T1,code:E1,subtype:null});L1=await $.resolveFieldDefinition(k,g,{storeCode:T1,fieldName:x,ownerEntityPk:null,entityTypePk:q1})}if(L1&&!L1.getEditable()&&!t)throw I.validation(`Field '${L1.getName()}' is not editable (system-managed field)`,"FIELD_NOT_EDITABLE");if(L1){let q1=L1.getAllowed();if(q1&&q1.type==="enum"&&q1.values&&q1.values.length>0){let n=i?[...i]:c!==void 0?[c]:[];if(n.length>0){let j1=n.filter((N1)=>!q1.values.includes(N1));if(j1.length>0)throw I.validation(`Invalid value(s): ${j1.join(", ")}. Allowed: ${q1.values.join(", ")}`,"VALUE_NOT_ALLOWED")}}let A1=L1.getPrimitiveType();if(["int","float","date"].includes(A1)){let n=i?[...i]:c!==void 0?[c]:[];for(let j1 of n){let N1=Gn8(A1,j1);if(!N1.valid)throw I.validation(N1.error,"INVALID_TYPED_VALUE")}}if(q){let n=L1.getAllowed();if(n&&n.type==="function"){let j1=i?[...i]:c!==void 0?[c]:[];if(j1.length>0){let N1=n.dependsOn||[],x1={};if(w1)x1={...w1};else for(let z8 of N1){let E8=await $.getFieldValue(k,g,{entityId:S,fieldName:z8});x1[z8]=E8?.getValue()||null}let{parentId:a1,subtype:K8}=await Q1(),y1={db:k,fieldDefinitionId:L1.getObjectId(),entityId:S,parentId:a1,typeCode:E1,subtype:K8,storeCode:T1,projectId:g.projectId||null,dependencyValues:x1,enqueuePostCommitHook:Z1},{values:h1}=await q.resolve(n.name,y1);if(h1!==null){let z8=j1.filter((E8)=>!h1.includes(E8));if(z8.length>0){let E8=z8.map((r1)=>`"${r1}"`).join(", ");throw I.validation(`Invalid value(s): ${E8}. Allowed: ${h1.join(", ")}`,"VALUE_NOT_ALLOWED")}}}}}}let $8=i;if(E1==="d"){let q1=await $.readContent(k,g,{id:S});if(q1&&q1.getSubtype()==="task"){let A1=L1;if(!A1&&x){let j1=(await $.getFieldDefinitionsForEntityType(k,g,{storeCode:T1,code:"d",subtype:"task"})).find((N1)=>N1.entity.getName()===x);A1=j1?j1.entity:null}if(A1&&A1.getPrimitiveType()==="object_ref"){let n=i?[...i]:c!==void 0?[c]:[];if(n.length>0){if(n=[...new Set(n)],await T(k,g,{entityId:S,parentId:q1.getParentId(),values:n}),i)$8=n}}}}let G8={entityId:S,fieldDefinitionId:E,fieldName:x,value:c,values:$8},W8=!w8,m1=w8?.getValue(),e1;if(W8)e1=await $.addFieldToEntity(k,g,G8,Z1);else e1=await $.updateFieldValue(k,g,{...G8,_oldValue:m1},Z1);let J1=[];if(q&&$.getFieldDefinitionsForEntityType){let q1=L1?.getName()||x;if(q1){let A1=c!==void 0?c:$8?.[0]??null,{subtype:n}=await Q1();await L(k,g,{entityId:S,writtenFieldName:q1,newValue:A1,storeCode:T1,entityType:E1,entitySubtype:n},Z1,J1,0)}}return{entity:e1,clearedDependents:J1}},V=async(k,g,{entityId:S,fieldDefinitionId:E,fieldName:x},c)=>{return U.factory(!S,I.validation,"entityId is required","MISSING_ENTITY_ID"),U.factory(!E&&!x,I.validation,"Either fieldDefinitionId or fieldName must be provided","MISSING_FIELD_IDENTIFIER"),await $.removeFieldFromEntity(k,g,{entityId:S,fieldDefinitionId:E,fieldName:x},c)},j=async(k,g,{store:S,code:E,subtype:x,fields:c})=>{let t=(await H(k,g,{store:S,code:E,subtype:x})).filter((E1)=>E1.entity.getRequired());if(t.length===0)return;let w1=c&&typeof c==="object"?Object.keys(c):[],Z1=t.filter((E1)=>!w1.includes(E1.entity.getName())).map((E1)=>E1.entity.getName());if(Z1.length>0)throw I.validation(`Missing required fields: ${Z1.join(", ")}`,"MISSING_REQUIRED_FIELDS")},D=async(k,g,{entityId:S,fieldDefinitionId:E,fieldName:x,value:c,values:i},t)=>{if(U.factory(!S,I.validation,"entityId is required","MISSING_ENTITY_ID"),U.factory(!E&&!x,I.validation,"Either fieldDefinitionId or fieldName must be provided","MISSING_FIELD_IDENTIFIER"),await $.getFieldValue(k,g,{entityId:S,fieldDefinitionId:E,fieldName:x})){let Z1=x||E;throw I.validation(`Field '${Z1}' already exists on entity '${S}'`,"FIELD_ALREADY_EXISTS")}return await v(k,g,{entityId:S,fieldDefinitionId:E,fieldName:x,value:c,values:i},t)},f=async(k,g,{entityId:S,fieldDefinitionId:E,fieldName:x,value:c,values:i},t)=>{if(U.factory(!S,I.validation,"entityId is required","MISSING_ENTITY_ID"),U.factory(!E&&!x,I.validation,"Either fieldDefinitionId or fieldName must be provided","MISSING_FIELD_IDENTIFIER"),!await $.getFieldValue(k,g,{entityId:S,fieldDefinitionId:E,fieldName:x})){let Z1=x||E;throw I.validation(`Field '${Z1}' not found on entity '${S}'`,"FIELD_NOT_FOUND")}return await v(k,g,{entityId:S,fieldDefinitionId:E,fieldName:x,value:c,values:i},t)},C=async(k,g,{entityId:S,fieldDefinitionId:E,fieldName:x},c)=>{return await V(k,g,{entityId:S,fieldDefinitionId:E,fieldName:x},c)},h=async(k,g,{entityId:S,typeCode:E,subtype:x,parentId:c,storeCode:i,fieldName:t,dependencyValues:w1={}},Z1)=>{U.factory(!i,I.validation,"storeCode is required","MISSING_STORE_CODE"),U.factory(!t,I.validation,"fieldName is required","MISSING_FIELD_NAME");let E1;if(S)E1=await P(k,g,{entityId:S,fieldName:t});else{U.factory(!E,I.validation,"typeCode is required when entityId is not provided","MISSING_TYPE_CODE");let H1=await $.resolveEntityTypePk(k,g,{storeCode:i,code:E,subtype:x||null});E1=await $.resolveFieldDefinition(k,g,{storeCode:i,fieldName:t,ownerEntityPk:null,entityTypePk:H1})}if(!E1)throw I.notFound(`Field definition not found for field '${t}'`,"FIELD_NOT_FOUND");let T1=E1.getAllowed();if(!T1)return{values:null};if(T1.type==="enum")return{values:T1.values};if(T1.type==="function"){let H1={db:k,fieldDefinitionId:E1.getObjectId(),entityId:S||null,parentId:c||null,typeCode:E||null,subtype:x||null,storeCode:i,dependencyValues:w1,enqueuePostCommitHook:Z1||null};return await q.resolve(T1.name,H1)}throw I.validation(`Unknown allowed type: ${T1.type}`,"INVALID_ALLOWED_TYPE")},L=async(k,g,{entityId:S,writtenFieldName:E,newValue:x,storeCode:c,entityType:i,entitySubtype:t},w1,Z1,E1)=>{if(E1>=5){console.warn(`[FieldService] Dependent field invalidation depth limit (5) reached for entity ${S}, field '${E}'. Halting to prevent circular dependency loop.`);return}let T1;try{T1=await $.getFieldDefinitionsForEntityType(k,g,{storeCode:c,code:i,subtype:t||null})}catch{return}let H1=T1.filter((Q1)=>{let L1=Q1.entity.getAllowed?.();if(!L1||L1.type!=="function")return!1;return(L1.dependsOn||[]).includes(E)});for(let Q1 of H1){let L1=Q1.entity,w8=L1.getName(),G8=(await $.getFieldValue(k,g,{entityId:S,fieldName:w8}))?.getValue()??null;if(G8===null||G8===void 0)continue;let W8=L1.getAllowed(),m1={db:k,fieldDefinitionId:L1.getObjectId(),entityId:S,parentId:null,typeCode:i,subtype:t||null,storeCode:c,projectId:g.projectId||null,dependencyValues:{[E]:x},enqueuePostCommitHook:w1},e1;try{e1=await q.resolve(W8.name,m1)}catch{continue}let{values:J1}=e1;if(J1!==null&&!J1.includes(G8))await $.removeFieldFromEntity(k,g,{entityId:S,fieldName:w8},w1),Z1.push(w8),await L(k,g,{entityId:S,writtenFieldName:w8,newValue:null,storeCode:c,entityType:i,entitySubtype:t},w1,Z1,E1+1)}};return Object.freeze({createFieldDefinition:J,readFieldDefinition:W,updateFieldDefinitionConfig:w,getFieldDefinitionsForOwner:Z,getFieldDefinitionsForType:H,deleteFieldDefinition:X,addClassAssociation:G,resolveFieldDefinitionForEntity:P,setFieldValue:v,deleteFieldValue:V,addFieldToEntity:D,updateFieldValue:f,removeFieldFromEntity:C,validateRequiredFields:j,resolveAllowedValues:h,setServiceDependencies:Y})};var HF=Object.freeze({create:Tn8});h6();function VK(){}VK.prototype={diff:function(K,q){var Y,z=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},J=z.callback;if(typeof z==="function")J=z,z={};var W=this;function Z(C){if(C=W.postProcess(C,z),J)return setTimeout(function(){J(C)},0),!0;else return C}K=this.castInput(K,z),q=this.castInput(q,z),K=this.removeEmpty(this.tokenize(K,z)),q=this.removeEmpty(this.tokenize(q,z));var O=q.length,H=K.length,X=1,w=O+H;if(z.maxEditLength!=null)w=Math.min(w,z.maxEditLength);var G=(Y=z.timeout)!==null&&Y!==void 0?Y:1/0,T=Date.now()+G,P=[{oldPos:-1,lastComponent:void 0}],v=this.extractCommon(P[0],q,K,0,z);if(P[0].oldPos+1>=H&&v+1>=O)return Z(GA1(W,P[0].lastComponent,q,K,W.useLongestToken));var V=-1/0,j=1/0;function D(){for(var C=Math.max(V,-X);C<=Math.min(j,X);C+=2){var h=void 0,L=P[C-1],k=P[C+1];if(L)P[C-1]=void 0;var g=!1;if(k){var S=k.oldPos-C;g=k&&0<=S&&S<O}var E=L&&L.oldPos+1<H;if(!g&&!E){P[C]=void 0;continue}if(!E||g&&L.oldPos<k.oldPos)h=W.addToPath(k,!0,!1,0,z);else h=W.addToPath(L,!1,!0,1,z);if(v=W.extractCommon(h,q,K,C,z),h.oldPos+1>=H&&v+1>=O)return Z(GA1(W,h.lastComponent,q,K,W.useLongestToken));else{if(P[C]=h,h.oldPos+1>=H)j=Math.min(j,C-1);if(v+1>=O)V=Math.max(V,C+1)}}X++}if(J)(function C(){setTimeout(function(){if(X>w||Date.now()>T)return J();if(!D())C()},0)})();else while(X<=w&&Date.now()<=T){var f=D();if(f)return f}},addToPath:function(K,q,Y,z,J){var W=K.lastComponent;if(W&&!J.oneChangePerToken&&W.added===q&&W.removed===Y)return{oldPos:K.oldPos+z,lastComponent:{count:W.count+1,added:q,removed:Y,previousComponent:W.previousComponent}};else return{oldPos:K.oldPos+z,lastComponent:{count:1,added:q,removed:Y,previousComponent:W}}},extractCommon:function(K,q,Y,z,J){var W=q.length,Z=Y.length,O=K.oldPos,H=O-z,X=0;while(H+1<W&&O+1<Z&&this.equals(Y[O+1],q[H+1],J))if(H++,O++,X++,J.oneChangePerToken)K.lastComponent={count:1,previousComponent:K.lastComponent,added:!1,removed:!1};if(X&&!J.oneChangePerToken)K.lastComponent={count:X,previousComponent:K.lastComponent,added:!1,removed:!1};return K.oldPos=O,H},equals:function(K,q,Y){if(Y.comparator)return Y.comparator(K,q);else return K===q||Y.ignoreCase&&K.toLowerCase()===q.toLowerCase()},removeEmpty:function(K){var q=[];for(var Y=0;Y<K.length;Y++)if(K[Y])q.push(K[Y]);return q},castInput:function(K){return K},tokenize:function(K){return Array.from(K)},join:function(K){return K.join("")},postProcess:function(K){return K}};function GA1($,K,q,Y,z){var J=[],W;while(K)J.push(K),W=K.previousComponent,delete K.previousComponent,K=W;J.reverse();var Z=0,O=J.length,H=0,X=0;for(;Z<O;Z++){var w=J[Z];if(!w.removed){if(!w.added&&z){var G=q.slice(H,H+w.count);G=G.map(function(T,P){var v=Y[X+P];return v.length>T.length?v:T}),w.value=$.join(G)}else w.value=$.join(q.slice(H,H+w.count));if(H+=w.count,!w.added)X+=w.count}else w.value=$.join(Y.slice(X,X+w.count)),X+=w.count}return J}var NS4=new VK;function TA1($,K){var q;for(q=0;q<$.length&&q<K.length;q++)if($[q]!=K[q])return $.slice(0,q);return $.slice(0,q)}function PA1($,K){var q;if(!$||!K||$[$.length-1]!=K[K.length-1])return"";for(q=0;q<$.length&&q<K.length;q++)if($[$.length-(q+1)]!=K[K.length-(q+1)])return $.slice(-q);return $.slice(-q)}function wF($,K,q){if($.slice(0,K.length)!=K)throw Error("string ".concat(JSON.stringify($)," doesn't start with prefix ").concat(JSON.stringify(K),"; this is a bug"));return q+$.slice(K.length)}function GF($,K,q){if(!K)return $+q;if($.slice(-K.length)!=K)throw Error("string ".concat(JSON.stringify($)," doesn't end with suffix ").concat(JSON.stringify(K),"; this is a bug"));return $.slice(0,-K.length)+q}function XA($,K){return wF($,K,"")}function qR($,K){return GF($,K,"")}function vA1($,K){return K.slice(0,Pn8($,K))}function Pn8($,K){var q=0;if($.length>K.length)q=$.length-K.length;var Y=K.length;if($.length<K.length)Y=$.length;var z=Array(Y),J=0;z[0]=0;for(var W=1;W<Y;W++){if(K[W]==K[J])z[W]=z[J];else z[W]=J;while(J>0&&K[W]!=K[J])J=z[J];if(K[W]==K[J])J++}J=0;for(var Z=q;Z<$.length;Z++){while(J>0&&$[Z]!=K[J])J=z[J];if($[Z]==K[J])J++}return J}var _R="a-zA-Z0-9_\\u{C0}-\\u{FF}\\u{D8}-\\u{F6}\\u{F8}-\\u{2C6}\\u{2C8}-\\u{2D7}\\u{2DE}-\\u{2FF}\\u{1E00}-\\u{1EFF}",vn8=new RegExp("[".concat(_R,"]+|\\s+|[^").concat(_R,"]"),"ug"),zR=new VK;zR.equals=function($,K,q){if(q.ignoreCase)$=$.toLowerCase(),K=K.toLowerCase();return $.trim()===K.trim()};zR.tokenize=function($){var K=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},q;if(K.intlSegmenter){if(K.intlSegmenter.resolvedOptions().granularity!="word")throw Error('The segmenter passed must have a granularity of "word"');q=Array.from(K.intlSegmenter.segment($),function(J){return J.segment})}else q=$.match(vn8)||[];var Y=[],z=null;return q.forEach(function(J){if(/\s/.test(J))if(z==null)Y.push(J);else Y.push(Y.pop()+J);else if(/\s/.test(z))if(Y[Y.length-1]==z)Y.push(Y.pop()+J);else Y.push(z+J);else Y.push(J);z=J}),Y};zR.join=function($){return $.map(function(K,q){if(q==0)return K;else return K.replace(/^\s+/,"")}).join("")};zR.postProcess=function($,K){if(!$||K.oneChangePerToken)return $;var q=null,Y=null,z=null;if($.forEach(function(J){if(J.added)Y=J;else if(J.removed)z=J;else{if(Y||z)AA1(q,z,Y,J);q=J,Y=null,z=null}}),Y||z)AA1(q,z,Y,null);return $};function AA1($,K,q,Y){if(K&&q){var z=K.value.match(/^\s*/)[0],J=K.value.match(/\s*$/)[0],W=q.value.match(/^\s*/)[0],Z=q.value.match(/\s*$/)[0];if($){var O=TA1(z,W);$.value=GF($.value,W,O),K.value=XA(K.value,O),q.value=XA(q.value,O)}if(Y){var H=PA1(J,Z);Y.value=wF(Y.value,Z,H),K.value=qR(K.value,H),q.value=qR(q.value,H)}}else if(q){if($)q.value=q.value.replace(/^\s*/,"");if(Y)Y.value=Y.value.replace(/^\s*/,"")}else if($&&Y){var X=Y.value.match(/^\s*/)[0],w=K.value.match(/^\s*/)[0],G=K.value.match(/\s*$/)[0],T=TA1(X,w);K.value=XA(K.value,T);var P=PA1(XA(X,T),G);K.value=qR(K.value,P),Y.value=wF(Y.value,X,P),$.value=GF($.value,X,X.slice(0,X.length-P.length))}else if(Y){var v=Y.value.match(/^\s*/)[0],V=K.value.match(/\s*$/)[0],j=vA1(V,v);K.value=qR(K.value,j)}else if($){var D=$.value.match(/\s*$/)[0],f=K.value.match(/^\s*/)[0],C=vA1(D,f);K.value=XA(K.value,C)}}var An8=new VK;An8.tokenize=function($){var K=new RegExp("(\\r?\\n)|[".concat(_R,"]+|[^\\S\\n\\r]+|[^").concat(_R,"]"),"ug");return $.match(K)||[]};var JR=new VK;JR.tokenize=function($,K){if(K.stripTrailingCr)$=$.replace(/\r\n/g,`
762
762
  `);var q=[],Y=$.split(/(\n|\r\n)/);if(!Y[Y.length-1])Y.pop();for(var z=0;z<Y.length;z++){var J=Y[z];if(z%2&&!K.newlineIsToken)q[q.length-1]+=J;else q.push(J)}return q};JR.equals=function($,K,q){if(q.ignoreWhitespace){if(!q.newlineIsToken||!$.includes(`
763
763
  `))$=$.trim();if(!q.newlineIsToken||!K.includes(`
764
764
  `))K=K.trim()}else if(q.ignoreNewlineAtEof&&!q.newlineIsToken){if($.endsWith(`
@@ -1068,4 +1068,4 @@ Populated:
1068
1068
  Errors:
1069
1069
  `;for(let T of X.slice(0,10))G+=` - Version PK ${T.versionPk}: ${T.error}
1070
1070
  `;if(X.length>10)G+=` ... and ${X.length-10} more errors
1071
- `}return{content:[{type:"text",text:G}]}}catch(W){return u1(W)}},oG8={name:"backfill_content_refs",title:"Backfill Content Refs",description:"Backfill content reference fields (attachments, includes, hyperlinks) on existing version entities. If confirm=false, returns preview. If confirm=true, performs backfill.",schema:Q$4,execute:l$4};var rG8=[oG8];S8();var i$4=N.object({type:N.string().optional().describe('Filter by entity type code: "d" (document), "t" (template), "f" (folder), "s" (story)'),limit:N.coerce.number().optional().describe("Maximum number of items to return (default: 50)"),offset:N.coerce.number().optional().describe("Pagination offset (default: 0)"),store:N.string().optional().describe('Store code (default: "A")')}),n$4=async({core:$,projectId:K},{type:q,limit:Y,offset:z,store:J})=>{try{let W=await $.listDeletedItems(K,{type:q,limit:Y??50,offset:z??0,store:J??"A"});return{content:[{type:"text",text:JSON.stringify(W,null,2)}]}}catch(W){return u1(W)}},sG8={name:"list_deleted_items",title:"List Deleted Items",description:"List soft-deleted items (documents, templates, folders, stories) that can be restored. Items are retained for 30 days before permanent purge. Returns items with id, name, type, deletedAt, daysUntilPurge, parentId, and originalPath.",schema:i$4,execute:n$4};S8();var d$4=N.object({id:N.string().describe('Document ID (e.g., "Ad1") or Template ID (e.g., "At1")')}),a$4=async({core:$,projectId:K},{id:q})=>{try{let Y=await $.restoreDocument(K,{id:q});return{content:[{type:"text",text:JSON.stringify(Y,null,2)}]}}catch(Y){let{code:z,message:J}=Y;if(z==="NOT_FOUND")J=`Document not found: ${q}`;else if(z==="INVALID_STATE")J=`Document is not deleted: ${q}`;else if(z==="PARENT_DELETED")J="Cannot restore: parent folder is also deleted. Restore the parent folder first.";return u1({code:Y.code,message:J})}},tG8={name:"restore_document",title:"Restore Document",description:'Restore a soft-deleted document. If a name collision exists at the original location, the document will be renamed with a "-restored" suffix. Returns the restored document info including whether it was renamed.',schema:d$4,execute:a$4};S8();var o$4=N.object({id:N.string().describe('Folder ID (e.g., "Af1") or Story ID (e.g., "As1")')}),r$4=async({core:$,projectId:K},{id:q})=>{try{let Y=await $.restoreFolder(K,{id:q});return{content:[{type:"text",text:JSON.stringify(Y,null,2)}]}}catch(Y){let{code:z,message:J}=Y;if(z==="NOT_FOUND")J=`Folder not found: ${q}`;else if(z==="INVALID_STATE")J=`Folder is not deleted: ${q}`;else if(z==="PARENT_DELETED")J="Cannot restore: parent folder is also deleted. Restore the parent folder first.";return u1({code:Y.code,message:J})}},eG8={name:"restore_folder",title:"Restore Folder",description:'Restore a soft-deleted folder and all its descendants (subfolders and documents). If name collisions exist, items will be renamed with "-restored" suffixes. Returns the restore result with cascade information.',schema:o$4,execute:r$4};var $T8=[sG8,tG8,eG8];var s$4=KT8.default("caw:mcp"),t$4=({core:$,projectId:K})=>{let q=new _61({name:"caw-server",version:"1.0.122"},{capabilities:{tools:{}}}),Y=[...Qw8,...dw8,...qG8,...vG8,...NG8,...hG8,...bG8,...BG8,...iG8,...aG8,...rG8,...$T8];for(let z of Y)q.registerTool(z.name,{title:z.title,description:z.description,inputSchema:z.schema},async(J,W)=>{try{let Z=W?.sessionId||W?.requestInfo?.headers?.["mcp-session-id"];return await z.execute({core:$,projectId:K,sessionId:Z,extra:W},J)}catch(Z){if(Z.isDomainError)s$4("Tool %s domain error: %o",z.name,Z);else console.error(`Tool ${z.name} failed:`,Z);return u1(Z)}});return q},qT8=Object.freeze({createMcpServer:t$4});var $K4=z61.default("caw:mcp"),c$=z61.default("caw:mcp:session"),KK4=({core:$})=>{let K=new Map;return Object.freeze({handleRequest:async(W,Z,{projectId:O})=>{let H=W.headers["mcp-session-id"];if(H){let P=K.get(H);if(!P)return c$("Session not found: %s",H),Z.status(404).json({jsonrpc:"2.0",error:{code:-32001,message:"Session not found. Server may have been restarted. If so, ask user to reconnect"},id:null});if(P.projectId!==O)return c$("Session %s belongs to project %s, not %s",H,P.projectId,O),Z.status(404).json({jsonrpc:"2.0",error:{code:-32001,message:"Session not found. Server may have been restarted. If so, ask user to reconnect"},id:null});c$("Routing request to existing session: %s",H),P.lastActivity=Date.now();try{return await P.transport.handleRequest(W,Z,W.body)}catch(v){console.error("MCP transport request failed:",v)}}c$("Creating new MCP session for project: %s",O);let X=null,w=new Q11({sessionIdGenerator:()=>{return X=e$4(),c$("Generated session ID: %s",X),X},onsessioninitialized:(P)=>{c$("Session initialized: %s",P),Z.setHeader("Mcp-Session-Id",P),T.sessionId=P,K.set(P,T),c$("Session stored: %s",P)}});c$("Creating new server for session");let G=qT8.createMcpServer({core:$,projectId:O});try{await G.connect(w)}catch(P){return console.error("MCP server connect failed:",P),w.close?.(),G.close?.(),Z.status(500).json({jsonrpc:"2.0",error:{code:-32603,message:"Internal server error"},id:null})}let T={sessionId:null,transport:w,server:G,projectId:O,createdAt:Date.now(),lastActivity:Date.now()};Z.on("finish",()=>{if(Z.statusCode!==200&&X&&K.has(X))c$("Request failed (status %d), cleaning up session: %s",Z.statusCode,X),K.delete(X),w.close?.(),G.close?.()});try{await w.handleRequest(W,Z,W.body)}catch(P){console.error("MCP transport request failed:",P)}},getSession:(W)=>{return K.get(W)},closeSession:(W)=>{let Z=K.get(W);if(!Z){c$("Cannot close session - not found: %s",W);return}c$("Closing session: %s",W),Z.transport.close?.(),Z.server.close?.(),K.delete(W)},cleanupIdle:(W)=>{let Z=Date.now(),O=0;for(let[H,X]of K.entries())if(Z-X.lastActivity>W)c$("Cleaning up idle session: %s (idle for %dms)",H,Z-X.lastActivity),X.transport.close?.(),X.server.close?.(),K.delete(H),O++;if(O>0)$K4("Cleaned up %d idle sessions",O)}})},_T8=Object.freeze({create:KK4});var qK4=86400000,_K4=300000,YK4=({mcpSessionManager:$})=>{let{jobFns:K,controlFns:q}=__.create({name:"cleanup-idle-mcp-sessions",interval:_K4,execute:async()=>{$.cleanupIdle(qK4)}});return{job:Object.freeze(K),control:q}},YT8=Object.freeze({create:YK4});var bg=pT8.default("caw:server"),cK4=async({port:$,envDir:K,databaseFilepath:q,assetsDir:Y,lazilyCreateDb:z,enableRest:J,enableSse:W,enableStatic:Z,enableCrons:O,enableMcp:H=!0,enableCli:X=!0,staticPath:w,kyselyFactory:G})=>{let T=await T_8.create({envDir:K,databaseFilepath:q,assetsDir:Y,lazilyCreateDb:z,kyselyFactory:G}),P=N61.default();if(P.use(N61.default.json()),P.get("/health",(f,C)=>{C.json({status:"ok"})}),P.get("/api/info",(f,C)=>{C.json({version:"1.0.122",hookFailureCount:uB1()})}),J)P.use("/api",vz8),V_8.create(P,{core:T}),N_8.create(P,{core:T}),f_8.create(P,{core:T}),D_8.create(P,{core:T}),C_8.create(P,{core:T}),L_8.create(P,{core:T}),h_8.create(P,{core:T}),x_8.create(P,{core:T}),_z8.create(P,{core:T}),zz8.create(P,{core:T}),Wz8.create(P,{core:T}),Oz8.create(P,{core:T}),Xz8.create(P,{core:T});if(W)Gz8.create(P,{core:T}),Pz8.create(P,{core:T});if(Z&&w)v_8.create(P,{staticPath:w});if(H){bg("Initializing MCP subsystem...");let f=_T8.create({core:T});T.registerCronJob(YT8,{mcpSessionManager:f}),Vz8.create(P,{core:T,mcpSessionManager:f}),bg("MCP subsystem initialized")}if(X){bg("Initializing CLI Adapter subsystem...");let f=(await Promise.resolve().then(() => (LT8(),ET8))).default,C=(await Promise.resolve().then(() => (xT8(),IT8))).default,h=(await Promise.resolve().then(() => (BT8(),mT8))).default,L=(await Promise.resolve().then(() => (FT8(),cT8))).default,k=h.create({mcpClientFactory:f.create(),aliasGenerator:C.create(),core:T});await k.init(),T.subscribeServerEvents({onProjectCreated:(g)=>k.addProject({objectId:g.id,name:g.name,path:g.path})}),L.create(P,{cliSessionManager:k}),bg("CLI Adapter subsystem initialized")}if(O)T.startAllCrons();let v=null,V=new Set;return Object.freeze({app:P,core:T,start:async()=>{return new Promise((f)=>{v=P.listen($,()=>{let C=v.address().port;f(C)}),v.on("connection",(C)=>{V.add(C),C.on("close",()=>{V.delete(C)})})})},stop:async()=>{if(T.stopAllCrons(),v){for(let f of V)f.destroy();return V.clear(),new Promise((f)=>{v.close(()=>{f()})})}}})},QT8=Object.freeze({create:cK4});var pK4=3131,QK4=mg.join(mg.dirname(FK4(import.meta.url)),"public_html"),lK4=!0,iK4=!0,nK4=!0,dK4=!0,aK4=!1,oK4=!0,rK4=!0,sK4=!0,JJ=($,K)=>$!==void 0?$==="true":K,tK4=()=>{let $=process.env.CAW_ENV_DIR;if(!$)console.error("ERROR: CAW_ENV_DIR environment variable is required"),console.error("Set it to the path of your environment folder, e.g.:"),console.error(' export CAW_ENV_DIR="$HOME/.caw/dev"'),process.exit(1);return{envDir:$,databaseFilepath:mg.join($,"caw.db"),assetsDir:mg.join($,"assets")}},eK4=async($)=>{let K=await QT8.create($),q=await K.start();console.log(`Server listening on port ${q}`),process.on("SIGINT",()=>K.stop("SIGINT")),process.on("SIGTERM",()=>K.stop("SIGTERM"))},$q4=()=>{let{envDir:$,databaseFilepath:K,assetsDir:q}=tK4(),Y=process.env.CAW_PORT?Number(process.env.CAW_PORT):pK4,z=process.env.STATIC_PATH||QK4,J=JJ(process.env.LAZY_CREATE_DB,lK4),W=JJ(process.env.ENABLE_REST,iK4),Z=JJ(process.env.ENABLE_MCP,nK4),O=JJ(process.env.ENABLE_CLI,dK4),H=JJ(process.env.ENABLE_WEBLLM_WSS,aK4),X=JJ(process.env.ENABLE_SSE,oK4),w=JJ(process.env.ENABLE_STATIC,rK4),G=JJ(process.env.ENABLE_CRONS,sK4);return Object.freeze({port:Y,staticPath:z,envDir:$,databaseFilepath:K,assetsDir:q,lazilyCreateDb:J,enableRest:W,enableMcp:Z,enableCli:O,enableWebllmWss:H,enableSse:X,enableStatic:w,enableCrons:G})};await eK4($q4()).catch(($)=>{console.error("ERROR: Failed to start server:",$),process.exit(1)});
1071
+ `}return{content:[{type:"text",text:G}]}}catch(W){return u1(W)}},oG8={name:"backfill_content_refs",title:"Backfill Content Refs",description:"Backfill content reference fields (attachments, includes, hyperlinks) on existing version entities. If confirm=false, returns preview. If confirm=true, performs backfill.",schema:Q$4,execute:l$4};var rG8=[oG8];S8();var i$4=N.object({type:N.string().optional().describe('Filter by entity type code: "d" (document), "t" (template), "f" (folder), "s" (story)'),limit:N.coerce.number().optional().describe("Maximum number of items to return (default: 50)"),offset:N.coerce.number().optional().describe("Pagination offset (default: 0)"),store:N.string().optional().describe('Store code (default: "A")')}),n$4=async({core:$,projectId:K},{type:q,limit:Y,offset:z,store:J})=>{try{let W=await $.listDeletedItems(K,{type:q,limit:Y??50,offset:z??0,store:J??"A"});return{content:[{type:"text",text:JSON.stringify(W,null,2)}]}}catch(W){return u1(W)}},sG8={name:"list_deleted_items",title:"List Deleted Items",description:"List soft-deleted items (documents, templates, folders, stories) that can be restored. Items are retained for 30 days before permanent purge. Returns items with id, name, type, deletedAt, daysUntilPurge, parentId, and originalPath.",schema:i$4,execute:n$4};S8();var d$4=N.object({id:N.string().describe('Document ID (e.g., "Ad1") or Template ID (e.g., "At1")')}),a$4=async({core:$,projectId:K},{id:q})=>{try{let Y=await $.restoreDocument(K,{id:q});return{content:[{type:"text",text:JSON.stringify(Y,null,2)}]}}catch(Y){let{code:z,message:J}=Y;if(z==="NOT_FOUND")J=`Document not found: ${q}`;else if(z==="INVALID_STATE")J=`Document is not deleted: ${q}`;else if(z==="PARENT_DELETED")J="Cannot restore: parent folder is also deleted. Restore the parent folder first.";return u1({code:Y.code,message:J})}},tG8={name:"restore_document",title:"Restore Document",description:'Restore a soft-deleted document. If a name collision exists at the original location, the document will be renamed with a "-restored" suffix. Returns the restored document info including whether it was renamed.',schema:d$4,execute:a$4};S8();var o$4=N.object({id:N.string().describe('Folder ID (e.g., "Af1") or Story ID (e.g., "As1")')}),r$4=async({core:$,projectId:K},{id:q})=>{try{let Y=await $.restoreFolder(K,{id:q});return{content:[{type:"text",text:JSON.stringify(Y,null,2)}]}}catch(Y){let{code:z,message:J}=Y;if(z==="NOT_FOUND")J=`Folder not found: ${q}`;else if(z==="INVALID_STATE")J=`Folder is not deleted: ${q}`;else if(z==="PARENT_DELETED")J="Cannot restore: parent folder is also deleted. Restore the parent folder first.";return u1({code:Y.code,message:J})}},eG8={name:"restore_folder",title:"Restore Folder",description:'Restore a soft-deleted folder and all its descendants (subfolders and documents). If name collisions exist, items will be renamed with "-restored" suffixes. Returns the restore result with cascade information.',schema:o$4,execute:r$4};var $T8=[sG8,tG8,eG8];var s$4=KT8.default("caw:mcp"),t$4=({core:$,projectId:K})=>{let q=new _61({name:"caw-server",version:"1.0.124"},{capabilities:{tools:{}}}),Y=[...Qw8,...dw8,...qG8,...vG8,...NG8,...hG8,...bG8,...BG8,...iG8,...aG8,...rG8,...$T8];for(let z of Y)q.registerTool(z.name,{title:z.title,description:z.description,inputSchema:z.schema},async(J,W)=>{try{let Z=W?.sessionId||W?.requestInfo?.headers?.["mcp-session-id"];return await z.execute({core:$,projectId:K,sessionId:Z,extra:W},J)}catch(Z){if(Z.isDomainError)s$4("Tool %s domain error: %o",z.name,Z);else console.error(`Tool ${z.name} failed:`,Z);return u1(Z)}});return q},qT8=Object.freeze({createMcpServer:t$4});var $K4=z61.default("caw:mcp"),c$=z61.default("caw:mcp:session"),KK4=({core:$})=>{let K=new Map;return Object.freeze({handleRequest:async(W,Z,{projectId:O})=>{let H=W.headers["mcp-session-id"];if(H){let P=K.get(H);if(!P)return c$("Session not found: %s",H),Z.status(404).json({jsonrpc:"2.0",error:{code:-32001,message:"Session not found. Server may have been restarted. If so, ask user to reconnect"},id:null});if(P.projectId!==O)return c$("Session %s belongs to project %s, not %s",H,P.projectId,O),Z.status(404).json({jsonrpc:"2.0",error:{code:-32001,message:"Session not found. Server may have been restarted. If so, ask user to reconnect"},id:null});c$("Routing request to existing session: %s",H),P.lastActivity=Date.now();try{return await P.transport.handleRequest(W,Z,W.body)}catch(v){console.error("MCP transport request failed:",v)}}c$("Creating new MCP session for project: %s",O);let X=null,w=new Q11({sessionIdGenerator:()=>{return X=e$4(),c$("Generated session ID: %s",X),X},onsessioninitialized:(P)=>{c$("Session initialized: %s",P),Z.setHeader("Mcp-Session-Id",P),T.sessionId=P,K.set(P,T),c$("Session stored: %s",P)}});c$("Creating new server for session");let G=qT8.createMcpServer({core:$,projectId:O});try{await G.connect(w)}catch(P){return console.error("MCP server connect failed:",P),w.close?.(),G.close?.(),Z.status(500).json({jsonrpc:"2.0",error:{code:-32603,message:"Internal server error"},id:null})}let T={sessionId:null,transport:w,server:G,projectId:O,createdAt:Date.now(),lastActivity:Date.now()};Z.on("finish",()=>{if(Z.statusCode!==200&&X&&K.has(X))c$("Request failed (status %d), cleaning up session: %s",Z.statusCode,X),K.delete(X),w.close?.(),G.close?.()});try{await w.handleRequest(W,Z,W.body)}catch(P){console.error("MCP transport request failed:",P)}},getSession:(W)=>{return K.get(W)},closeSession:(W)=>{let Z=K.get(W);if(!Z){c$("Cannot close session - not found: %s",W);return}c$("Closing session: %s",W),Z.transport.close?.(),Z.server.close?.(),K.delete(W)},cleanupIdle:(W)=>{let Z=Date.now(),O=0;for(let[H,X]of K.entries())if(Z-X.lastActivity>W)c$("Cleaning up idle session: %s (idle for %dms)",H,Z-X.lastActivity),X.transport.close?.(),X.server.close?.(),K.delete(H),O++;if(O>0)$K4("Cleaned up %d idle sessions",O)}})},_T8=Object.freeze({create:KK4});var qK4=86400000,_K4=300000,YK4=({mcpSessionManager:$})=>{let{jobFns:K,controlFns:q}=__.create({name:"cleanup-idle-mcp-sessions",interval:_K4,execute:async()=>{$.cleanupIdle(qK4)}});return{job:Object.freeze(K),control:q}},YT8=Object.freeze({create:YK4});var bg=pT8.default("caw:server"),cK4=async({port:$,envDir:K,databaseFilepath:q,assetsDir:Y,lazilyCreateDb:z,enableRest:J,enableSse:W,enableStatic:Z,enableCrons:O,enableMcp:H=!0,enableCli:X=!0,staticPath:w,kyselyFactory:G})=>{let T=await T_8.create({envDir:K,databaseFilepath:q,assetsDir:Y,lazilyCreateDb:z,kyselyFactory:G}),P=N61.default();if(P.use(N61.default.json()),P.get("/health",(f,C)=>{C.json({status:"ok"})}),P.get("/api/info",(f,C)=>{C.json({version:"1.0.124",hookFailureCount:uB1()})}),J)P.use("/api",vz8),V_8.create(P,{core:T}),N_8.create(P,{core:T}),f_8.create(P,{core:T}),D_8.create(P,{core:T}),C_8.create(P,{core:T}),L_8.create(P,{core:T}),h_8.create(P,{core:T}),x_8.create(P,{core:T}),_z8.create(P,{core:T}),zz8.create(P,{core:T}),Wz8.create(P,{core:T}),Oz8.create(P,{core:T}),Xz8.create(P,{core:T});if(W)Gz8.create(P,{core:T}),Pz8.create(P,{core:T});if(Z&&w)v_8.create(P,{staticPath:w});if(H){bg("Initializing MCP subsystem...");let f=_T8.create({core:T});T.registerCronJob(YT8,{mcpSessionManager:f}),Vz8.create(P,{core:T,mcpSessionManager:f}),bg("MCP subsystem initialized")}if(X){bg("Initializing CLI Adapter subsystem...");let f=(await Promise.resolve().then(() => (LT8(),ET8))).default,C=(await Promise.resolve().then(() => (xT8(),IT8))).default,h=(await Promise.resolve().then(() => (BT8(),mT8))).default,L=(await Promise.resolve().then(() => (FT8(),cT8))).default,k=h.create({mcpClientFactory:f.create(),aliasGenerator:C.create(),core:T});await k.init(),T.subscribeServerEvents({onProjectCreated:(g)=>k.addProject({objectId:g.id,name:g.name,path:g.path})}),L.create(P,{cliSessionManager:k}),bg("CLI Adapter subsystem initialized")}if(O)T.startAllCrons();let v=null,V=new Set;return Object.freeze({app:P,core:T,start:async()=>{return new Promise((f)=>{v=P.listen($,()=>{let C=v.address().port;f(C)}),v.on("connection",(C)=>{V.add(C),C.on("close",()=>{V.delete(C)})})})},stop:async()=>{if(T.stopAllCrons(),v){for(let f of V)f.destroy();return V.clear(),new Promise((f)=>{v.close(()=>{f()})})}}})},QT8=Object.freeze({create:cK4});var pK4=3131,QK4=mg.join(mg.dirname(FK4(import.meta.url)),"public_html"),lK4=!0,iK4=!0,nK4=!0,dK4=!0,aK4=!1,oK4=!0,rK4=!0,sK4=!0,JJ=($,K)=>$!==void 0?$==="true":K,tK4=()=>{let $=process.env.CAW_ENV_DIR;if(!$)console.error("ERROR: CAW_ENV_DIR environment variable is required"),console.error("Set it to the path of your environment folder, e.g.:"),console.error(' export CAW_ENV_DIR="$HOME/.caw/dev"'),process.exit(1);return{envDir:$,databaseFilepath:mg.join($,"caw.db"),assetsDir:mg.join($,"assets")}},eK4=async($)=>{let K=await QT8.create($),q=await K.start();console.log(`Server listening on port ${q}`),process.on("SIGINT",()=>K.stop("SIGINT")),process.on("SIGTERM",()=>K.stop("SIGTERM"))},$q4=()=>{let{envDir:$,databaseFilepath:K,assetsDir:q}=tK4(),Y=process.env.CAW_PORT?Number(process.env.CAW_PORT):pK4,z=process.env.STATIC_PATH||QK4,J=JJ(process.env.LAZY_CREATE_DB,lK4),W=JJ(process.env.ENABLE_REST,iK4),Z=JJ(process.env.ENABLE_MCP,nK4),O=JJ(process.env.ENABLE_CLI,dK4),H=JJ(process.env.ENABLE_WEBLLM_WSS,aK4),X=JJ(process.env.ENABLE_SSE,oK4),w=JJ(process.env.ENABLE_STATIC,rK4),G=JJ(process.env.ENABLE_CRONS,sK4);return Object.freeze({port:Y,staticPath:z,envDir:$,databaseFilepath:K,assetsDir:q,lazilyCreateDb:J,enableRest:W,enableMcp:Z,enableCli:O,enableWebllmWss:H,enableSse:X,enableStatic:w,enableCrons:G})};await eK4($q4()).catch(($)=>{console.error("ERROR: Failed to start server:",$),process.exit(1)});